- Created a new documentation file for the danmuku plugin with code examples.
- Added comprehensive language settings documentation, including default languages, importing languages, adding new languages, and modifying existing languages.
- Updated the i18n setup guide with code snippets for better clarity and usability.
- Created a new documentation file for the danmuku plugin with code examples.
- Added comprehensive i18n setup instructions, including default language settings, language imports, and examples for adding and modifying languages.
- Updated the structure and content of the i18n documentation to enhance clarity and usability.
- Implemented a new danmuku plugin in the React template for displaying bullet comments.
- Added internationalization (i18n) support with French and Indonesian languages.
- Updated the App component to include the new Player component with options for video playback.
- Enhanced the Player component to initialize Artplayer with plugins and language settings.
- Created separate files for App and Player components to improve code organization.
- Added example usage of language settings and plugins in the Player component.
- Created a new documentation file for the danmuku plugin with code examples.
- Added comprehensive i18n (internationalization) setup instructions, including default language settings, language imports, and examples for adding and modifying languages.
- Updated the structure of the i18n documentation for better clarity and usability.
- Deleted Indonesian (id.mjs), Polish (pl.js, pl.mjs), Russian (ru.js, ru.mjs), Turkish (tr.js, tr.mjs), Vietnamese (vi.js, vi.mjs), and Traditional Chinese (zh-tw.js, zh-tw.mjs) language files from the i18n directory.
- Updated package version in package.json from 5.3.0-beta.0 to 5.3.0-beta.1.
- Cleaned up screenfull.js by removing unnecessary code related to native API checks.
- Introduced a new static property REMOVE_SRC_WHEN_DESTROY in Artplayer to control whether the video source should be removed when the player is destroyed.
- Updated the destroy method in Artplayer to conditionally remove the video source based on the new property.
- Removed the line that sets the video source to an empty string in the Template class's destroy method, as this is now handled in Artplayer.
- Updated TypeScript definitions to include the new REMOVE_SRC_WHEN_DESTROY property.
- Created a new documentation file for the danmuku plugin with code examples.
- Added a comprehensive guide for language settings, including default languages, importing languages, adding new languages, and modifying existing languages.
- Updated the i18n documentation to reflect changes in language handling and provide code snippets for implementation.
- Created a new documentation file for the danmuku plugin with code examples.
- Added comprehensive i18n setup instructions, including default language settings, language imports, and examples for adding and modifying languages.
- Updated the structure of the i18n documentation for clarity and usability.
- Added sleep utility to introduce a delay before emitting resize events after opening and closing the document Picture-in-Picture.
- Updated the close function to be asynchronous for better handling of the sleep delay.
- Emit 'resize' event after adding the document Picture-in-Picture class to the player.
- Emit 'resize' event after removing the document Picture-in-Picture class from the player.
- Created a new documentation file for the danmuku plugin with interactive code examples.
- Added comprehensive language settings documentation, including default languages, import instructions, and examples for adding and modifying languages.
- Updated the i18n documentation to reflect changes in language handling and provide clearer examples for users.
- React: Removed unnecessary dependencies from useEffect in Artplayer component.
- Vue: Simplified instance emission in Artplayer component by removing nextTick.
- Build script: Added cpy to copy built i18n files to a new directory and set context to browser for Parcel.
- Implemented a build script to compile i18n files and copy them to the docs directory.
- Added compiled i18n files for Arabic, Czech, Spanish, Persian, French, Indonesian, Polish, Russian, Turkish, Vietnamese, and Traditional Chinese.
- Created an HTML file to demonstrate the usage of Artplayer with i18n support, including language options and a sample video.
- Created a new documentation file for the danmuku plugin with code examples for usage.
- Added comprehensive language settings documentation, including default languages, importing languages, adding new languages, and modifying existing languages.
- Updated the i18n setup guide to reflect changes in language handling and provide code snippets for implementation.
- Created a new documentation file for the danmuku plugin with interactive code execution.
- Added comprehensive i18n setup instructions, including default language settings, language imports, and examples for adding and modifying languages.
- Introduced a test file to verify the integration of the danmuku plugin.
- Created a new documentation file for the danmuku plugin with code examples.
- Added comprehensive language settings documentation, including default languages, importing languages, adding new languages, and modifying existing languages.
- Updated the i18n setup guide to reflect changes in language handling and provide code snippets for implementation.
- Created a new documentation file for the danmuku plugin with code examples.
- Added comprehensive language settings documentation, including default languages, import methods, and how to add or modify languages.
- Updated the i18n setup guide to reflect changes in language handling and provide code snippets for implementation.
- Changed event handling from `art.proxy` to `art.on` for visibility change and pointer events in the ads and danmuku plugins to improve consistency and maintainability.
- Bumped version of the danmuku plugin from 5.1.8 to 5.1.9.
- Added pointer events to the global event initialization in the core to ensure proper event handling across the application.
- Added a check in the Artplayer constructor to throw an error if instantiated outside a browser environment.
- Updated the isBrowser utility to ensure both window and document are defined.
- Removed unused user agent checks for WeChat, IE, and Android from compatibility utilities.
- Updated TypeScript definitions to reflect the removal of unused properties.
- Added a basic test case for Artplayer initialization in SSR context.
- Created a new documentation file for the danmuku plugin with code examples.
- Added comprehensive language settings documentation, including default languages, importing languages, adding new languages, and modifying existing languages.
- Updated the structure of the i18n documentation to improve clarity and usability.
- Introduced a new globalInit function to manage document and window events.
- Replaced direct event proxies with a unified bindGlobalEvents method.
- Updated event handling in various modules to utilize the new global event system.
- Removed the deprecated documentInit module.
- Bumped version to 5.2.6 in package.json.
- Renamed variable `dpipOK` to `isSupported` for clarity in checking Document Picture-in-Picture support.
- Updated the `open` function to use the new `isSupported` variable.
- Removed redundant checks in the `close` function related to Document Picture-in-Picture support.
- Added `isSupported` and `isActive` properties to the plugin's result interface in TypeScript definitions.
- Cleaned up the code for better readability and maintainability.
- Implemented the core functionality of the Document Picture-in-Picture plugin.
- Created main plugin file `artplayer-plugin-document-pip.js` with support for opening and closing the PIP window.
- Added legacy support in `artplayer-plugin-document-pip.legacy.js`.
- Defined plugin options in `package.json` and included necessary metadata.
- Developed the main logic in `src/index.js`, including style copying and event handling.
- Created TypeScript definitions in `types/artplayer-plugin-document-pip.d.ts` for better type safety.
- Introduced `artplayer-plugin-pip` to enable Picture-in-Picture functionality.
- Updated `artplayer.d.ts` to export new types related to the plugin.
- Added example usage of the plugin in `pip.js`.
- Created TypeScript definitions for the plugin in `artplayer-plugin-pip.d.ts`.
- Implemented the plugin logic in `index.js` with necessary styles and event handling.
- Updated documentation to include the new plugin and its usage.
- Added README and package.json for the new plugin.
- Refactored rotation logic for web fullscreen to use a dedicated function.
- Added checks to prevent race conditions when applying rotation.
- Improved handling of native fullscreen orientation locking.
- Simplified class management for orientation states.
- Updated state retrieval to use constants for class names.
- Updated arrow-left.svg, arrow-right.svg, check.svg, and loading.svg to remove fill attributes from path elements for better flexibility in styling.
- Modified aspect-ratio.svg and config.svg to maintain consistency in SVG structure by removing unnecessary fill attributes.
- Ensured playback-rate.svg retains its structure while removing fill attributes for improved styling options.
chore: update lerna configuration formatting
chore: bump version in package.json to 6.0.0
fix: modify build scripts for improved readability and consistency
feat: enhance translation scripts with better error handling and progress tracking
chore: improve plugin creation script for better user experience
style: format svgo configuration for consistency
- Created a new documentation file for the danmuku plugin with code examples.
- Added comprehensive language settings documentation, including default languages, importing languages, adding new languages, and modifying existing languages.
- Updated the i18n setup examples to reflect the latest changes in language handling.
- Introduced a new dataset attribute `data-id` to DOM elements for unique identification of danmuku items.
- Updated validation to include an optional `id` field for danmuku objects.
- Changed the property `$id` to `$index` for better clarity on its purpose as an index rather than a unique identifier.
- Ensured the `data-id` attribute is set for visibility control during hover interactions.
Refactor utility functions for improved readability and consistency
- Updated compatibility.js to use consistent line endings and formatting.
- Refactored component.js for better readability and structure, including consistent use of arrow functions and binding.
- Simplified dom.js functions with consistent formatting and improved readability.
- Enhanced emitter.js with consistent formatting and arrow function usage.
- Streamlined error.js for improved readability and consistency.
- Refactored file.js to use consistent formatting and improved readability.
- Improved format.js functions for better readability and consistency.
- Updated index.js to maintain consistent export formatting.
- Refactored property.js for improved readability and consistency.
- Enhanced subtitle.js with consistent formatting and improved readability.
- Refactored time.js for better readability and consistent formatting.
fix: update lint script to target only source files for consistency
Revert "fix: restore export statements for various plugins and update type definitions for better clarity"
This reverts commit b5e969d81ec765cd8a34b06e6ef4f232ef25087f.
fix: restore export statements for various plugins and update type definitions for better clarity
Refactor type definitions to use interfaces instead of type aliases for better extensibility and clarity across i18n, icons, option, player, quality, setting, subtitle, template, and utils modules.
- Replaced direct usage of event.composedPath() with a new utility function getComposedPath in Control component.
- Updated includeFromEvent function to utilize getComposedPath for better compatibility.
- Implemented getComposedPath function to ensure consistent event path retrieval across different browsers.
- Created a new documentation file for the danmuku plugin, detailing its usage and providing code examples.
- Added a comprehensive guide for language settings (i18n), including instructions for importing languages, setting default languages, and modifying language options.
- Included code snippets for initializing the Artplayer with different languages and examples for adding new languages.
- Simplified version display in context menu and template by directly importing version from package.json.
- Removed static version and environment methods from Artplayer class, replacing them with dynamic imports.
- Eliminated placeholder injection logic from build and dev scripts, streamlining the build process.
- Cleaned up build and dev scripts for better readability and maintainability.
- Updated the context menu version function to dynamically append the application version to the link and include a ref parameter in the URL.
- Removed the build version log from the initialization logs in the Artplayer class.
- Cleaned up the version and environment getters to return unquoted strings.
- Modified the config method to accept an initialization flag, allowing for configuration during the initial setup without triggering unnecessary updates.
- Updated the call to config in the constructor to pass the new initialization flag.
- Implemented an event listener for 'video:volumechange' to adjust the gain node's value based on the current volume of the artplayer instance.
- This enhancement ensures that the audio processing reflects the user's volume adjustments in real-time.
- Implemented pcmToWav function to convert PCM audio data to WAV format.
- Updated onAudioChunk callback to receive both PCM and WAV buffers.
- Modified TypeScript definitions to reflect changes in onAudioChunk parameter and append method.
- Renamed `hideTimeout` to `autoHideTimeout` for clarity.
- Updated the default options destructuring for better readability.
- Removed unnecessary comments and cleaned up the audio processing logic.
- Ensured that the audio buffer is processed correctly before sending to the `onAudioChunk` callback.
Refactor artplayerPluginAsr: Enhance audio capture and processing
- Introduced gainNode for audio output management.
- Added mediaStream and mediaStreamSource for fallback audio capture.
- Refactored startCapture and stopCapture functions for better clarity and error handling.
- Improved audio source setup with a dedicated function for capturing audio from video.
- Ensured proper disconnection of audio nodes and cleanup of resources on destroy.
feat: enhance ASR plugin with improved subtitle handling and styling
fix: rename autoClearTimer to hideTimer for consistency in ASR plugin
Update asr.js
feat: refactor ASR plugin to improve audio chunk handling and WebSocket management
Update asr.js
fix: rename autoClearTimeout to cleanupTimeout for consistency
Update asr.js
feat: refactor ASR handling and improve WebSocket management
Update index.js
feat: add append and clear functions to enhance audio chunk handling
Update asr.js
Update asr.js
feat: release version 2.0.0 of artplayer-plugin-asr
- Implemented core functionality for audio recording using AudioWorklet.
- Added support for configurable audio capture interval and sample rate.
- Introduced WAV encoding for recorded audio chunks.
- Created a new plugin structure with proper TypeScript definitions.
- Added legacy support for older environments.
- Updated package.json with necessary metadata and export configurations.
- Included comprehensive inline documentation for better maintainability.
- Moved the 'video:progress' event listener to be consistent with the RAF and timeupdate events.
- Ensured 'setBar' for 'loaded' is emitted during both RAF and video:progress events.
- Cleaned up the structure for better readability and maintainability.
The code changes in this commit update the video element in Artplayer to support custom canvas or video. This enhancement allows for more flexibility in handling video playback and rendering. Additionally, new options such as volume, autoplay, autoSize, screenshot, setting, loop, flip, playbackRate, aspectRatio, fullscreen, fullscreenWeb, miniProgressBar, and autoPlayback are added to provide more control over the video player. These changes improve the functionality and usability of Artplayer.
refactor: Update animation frame handling in artplayer-proxy-webav
The code changes replace the use of `requestAnimationFrame` with `setInterval` in the `start` function of `artplayer-proxy-webav`. This change improves the performance and stability of the animation frame handling, ensuring a smoother playback experience.
The code changes update the loadedTime getter in Artplayer to handle different scenarios. The getter now checks for the presence of the loadedTime property in the video element and returns it if available, otherwise it falls back to the previous logic of retrieving the buffered end time. This update improves the reliability and compatibility of Artplayer's loadedTime functionality.
The code changes update the loadedTime and playing getters in Artplayer to handle different scenarios. The loadedTime getter now checks for the presence of the loadedTime property in the video element and returns it if available, otherwise it falls back to the previous logic of retrieving the buffered end time. Similarly, the playing getter now checks for the presence of the playing property in the video element and returns it if available, otherwise it falls back to the previous logic of determining if the video is playing based on its current time, paused state, ended state, and ready state. These updates improve the reliability and compatibility of Artplayer's loadedTime and playing functionality.
The code changes update the heading for the library section in both the README and docs files. The heading is changed from "Library" to "Libraries" to provide a more accurate description of the content. This refactor improves the clarity and consistency of the documentation.
The code changes introduce new proxy options (`artplayer-proxy-webav` and `artplayer-proxy-libmedia`) in Artplayer, allowing for the use of third-party video and canvas proxies. This enhancement provides more flexibility in handling video playback and rendering, improving the overall performance and compatibility of Artplayer.
This commit updates the `libmedia.js`, `option.d.ts`, `index.js`, `template.js`, and `scheme/index.js` files in the Artplayer repository. The changes introduce a new `video` property in the `Option` type, allowing for the use of a custom video element in Artplayer. The `video` property can be set to `null`, an `HTMLCanvasElement`, or an `HTMLVideoElement`. This enhancement provides flexibility in rendering video content and improves compatibility with different platforms and use cases.
The build timestamp in Artplayer has been updated to "2024-08-15 23:17:21". This commit ensures that the build timestamp accurately reflects the latest changes made to the codebase.
This commit refactors the `thumbnails` implementation in Artplayer to improve code readability and maintainability. The code changes remove unnecessary variables and simplify the logic for displaying thumbnails. This refactor enhances the overall performance and user experience of the Artplayer plugin.
The code changes introduce a new `art.thumbnails` property that allows for dynamic setting of thumbnails in Artplayer. This feature enhances the user experience by providing a visual preview of the video content.
* chore: Bump artplayer-plugin-danmuku version to 5.1.0
* chore: Update danmuku plugin with new mount option
* chore: Update danmuku plugin with new mount option
* chore: Update danmuku plugin with new mount option
* chore: Update danmuku plugin with new mount option
* chore: Update danmuku plugin with new mount option
* chore: Update danmuku plugin with new mount option
* chore: Refactor getDanmuTop function to handle additional cases
* chore: Refactor getDanmuTop function to handle additional cases
* chore: Update danmuku plugin with new mount option
* chore: Update danmuku plugin with new mount option
* chore: Refactor danmuku plugin to always create a new Setting instance
* Refactor danmuku plugin to always create a new Setting instance
* Refactor danmuku plugin to always create a new Setting instance
* Update danmuku.js
* Update danmuku.js
* Refactor danmuku plugin to include a new Setting instance
* Refactor danmuku plugin to include a new Setting instance
* Refactor danmuku plugin styles for better alignment and spacing
* Refactor danmuku plugin styles for better alignment and spacing
* Refactor danmuku plugin styles for better alignment and spacing
* Refactor danmuku plugin styles for better alignment and spacing
* Refactor danmuku plugin styles for better alignment and spacing
* chore: Update package.json files
* Refactor danmuku plugin to remove unnecessary whitespace in the setting template
* chore: Remove ESLint configuration files and update npm dependencies
* chore: Update ESLint configuration to disable console warnings and fix unused variable warnings
* chore: Update ESLint configuration to fix quotes rule
* Update package.json
* Update package.json
* Update setting.js
* chore: Compress CSS code in build script
* chore: Update build script to compress JavaScript code
* chore: Update build script to compress JavaScript code
* chore: Refactor setting.js to improve code organization and remove unused variables
* chore: Add isHover flag to Control component for better control hiding behavior
* chore: Update Control component to use $bottom instead of $controls for better control hiding behavior
* Update package.json
* Update package.json
* Update package.json
* chore: Update lerna.json to use independent versioning and yarn as npm client
* refactor: Update Danmuku class to support configurable modes and visibility
* refactor: Update Danmuku styles for better visibility and configurability
* feat: Update font weight in Danmuku styles for better readability
* refactor: Update Danmuku class to support configurable modes and visibility
* refactor: Add opacity, area, font, and speed sliders to Danmuku settings
* refactor: Initialize sliders for opacity, area, font, and speed in Danmuku settings
* feat: Add slider UI for opacity, area, and speed in Danmuku settings
* feat: Update slider styles in Danmuku settings for better visibility and configurability
* refactor: Improve Danmuku settings UI for better visibility and configurability
* refactor: Improve Danmuku settings UI for better visibility and configurability
* refactor: Update slider styles in Danmuku settings for better visibility and configurability
* refactor: Update margin slider initialization in Danmuku settings
* refactor: Update slider styles and initialization in Danmuku settings
* refactor: Update Danmuku class to support configurable visibility
* refactor: Update Danmuku class to support configurable visibility
* refactor: Update Danmuku class to support configurable visibility
* refactor: Update Danmuku class to support configurable visibility
* refactor: Update Danmuku settings UI for better visibility and configurability
* refactor: Update Danmuku settings UI for better visibility and configurability
* refactor: Update Danmuku settings UI for better visibility and configurability
* refactor: Update Danmuku settings UI for better visibility and configurability
* refactor: Improve Danmuku settings UI for better visibility and configurability
* add lock
* refactor: Add lock and unlock methods to Danmuku settings
* refactor: Update Danmuku settings UI for better visibility and configurability
* refactor: Update Danmuku settings UI for better visibility and configurability
* refactor: Update Danmuku settings UI for better visibility and configurability
* refactor: Update Danmuku settings UI for better visibility and configurability
* Update artplayer-plugin-danmuku.d.ts
* refactor: Update Danmuku settings UI for better visibility and configurability
* refactor: Update Danmuku settings UI for better visibility and configurability
* refactor: Update Danmuku settings UI for better visibility and configurability
* refactor: Update Danmuku settings UI for better visibility and configurability
* refactor: Update Danmuku settings event listeners
* refactor: Update Danmuku settings UI for better visibility and configurability
* refactor: Update Danmuku settings UI for better visibility and configurability
* refactor: Update Danmuku settings UI for better visibility and configurability
* refactor: Update Danmuku settings UI for better visibility and configurability
Update progress bar height in Artplayer
Add dynamic layer, controller, menu, and setting item management
Update Changelog_CN
Update utils.js
Update package.json
Update built-in management in Artplayer
Update i18n documentation
Add support for new languages
Update language import and modification
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
## [5.3.0] - 2025-09-06
- Rename `.esm.js` to `.mjs`
- Remove the default `fill` color value of `svg`
- Optimize the `autoOrientation` logic
- Add `Artplayer.REMOVE_SRC_WHEN_DESTROY`
- Add `artplayer-plugin-document-pip` plugin
- Add `art.events.bindGlobalEvents` method for rebinding global methods
- Optimize `artplayer.d.ts`, now you can directly import `Option`
```ts
importtype{Option}from'artplayer'
constoption: Option={
container:'.artplayer-app',
url:'./assets/sample/video.mp4',
}
```
- Simplify `i18n` import
```ts
importfrfrom'artplayer/i18n/fr'
importidfrom'artplayer/i18n/id'
constoption={
container:'.artplayer-app',
url:'./assets/sample/video.mp4',
i18n:{id,fr},
lang:'fr',
}
```
## [5.2.5] - 2025-08-01
- Add `ESM` version for all packages, such as `artplayer/dist/artplayer.esm.js`
- Recognize `globalThis.CUSTOM_USER_AGENT` global variable for customizing `navigator.userAgent`
- Fix missing `mount` parameter when initializing `artplayer-plugin-danmuku`
## [5.2.3] - 2025-04-20
- Add Vietnamese `vi`
- Clear the `video.src` property on destroy
- Add `onClick` option for `Setting`
- Fix style loading failure of danmuku and chapter plugins when the page has no head tag
- Add `gesture` option to enable or disable gesture events on mobile `video` element
## [5.2.2] - 2025-01-19
- Fix thumbnail crossover issue
- Fix style loading failure when the page has no head tag
- Add slider support in subtitle plugin settings panel for mobile dragging
- Fix positioning error of settings panel when rotating screen
- Fix classname switching error when fullscreen state changes
## [5.2.1] - 2024-10-26
- Refactor `Setting` component, fix state loss issue
- For `Setting` of type `range`, callback now returns an array of numbers instead of a single number
- Remove `isStringOrNumber` utility function
- Fix inconsistent state issue in `artplayer-plugin-hls-control`
[Checkout the demo](https://artplayer.org/) from Github Pages
## Document
[Checkout the Document](https://artplayer.org/document) from Github Pages
[ArtPlayer.js](https://artplayer.org) is an easy-to-use and feature-rich HTML5 video player, and most of the player's functional controls support customization, which makes it easy to connect with your business logic. In addition, it directly supports `.vtt`, `.ass` and `.srt` subtitle formats. Integration with other dependencies such as `flv.js`, `hls.js`, `dash.js`, etc. is also very simple. The code is highly decoupled, the structure and logic are clear, and it is easy to track errors and add new features.
!function(e,t){"object"==typeofexports&&"undefined"!=typeofmodule?module.exports=t():"function"==typeofdefine&&define.amd?define(t):(e=e||self).artplayerPluginGif=t()}(this,(function(){"use strict";vare=function(e,t,r){returntine?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e};"undefined"!=typeofglobalThis?globalThis:"undefined"!=typeofwindow?window:"undefined"!=typeofglobal?global:"undefined"!=typeofself&&self;functiont(e,t){returne(t={exports:{}},t.exports),t.exports}varr=t((function(e,t){!function(t,r,i,n){varo,a,s={URL:t.URL||t.webkitURL||t.mozURL||t.msURL,getUserMedia:(a=i.getUserMedia||i.webkitGetUserMedia||i.mozGetUserMedia||i.msGetUserMedia,a?a.bind(i):a),requestAnimFrame:t.requestAnimationFrame||t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||t.oRequestAnimationFrame||t.msRequestAnimationFrame,requestTimeout:function(e,t){if(e=e||s.noop,t=t||0,!s.requestAnimFrame)returnsetTimeout(e,t);varr=(newDate).getTime(),i=newObject,n=s.requestAnimFrame;returni.value=n((functiono(){(newDate).getTime()-r>=t?e.call():i.value=n(o)})),i},Blob:t.Blob||t.BlobBuilder||t.WebKitBlobBuilder||t.MozBlobBuilder||t.MSBlobBuilder,btoa:(o=t.btoa||function(e){for(vart="",r=0,i=e.length,n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",o=void0,a=void0,s=void0,c=void0,d=void0,l=void0,u=void0;r<i;)c=(o=e.charCodeAt(r++))>>2,d=(3&o)<<4|(a=e.charCodeAt(r++))>>4,l=(15&a)<<2|(s=e.charCodeAt(r++))>>6,u=63&s,isNaN(a)?l=u=64:isNaN(s)&&(u=64),t=t+n.charAt(c)+n.charAt(d)+n.charAt(l)+n.charAt(u);returnt},o?o.bind(t):s.noop),isObject:function(e){returne&&"[object Object]"===Object.prototype.toString.call(e)},isEmptyObject:function(e){returns.isObject(e)&&!Object.keys(e).length},isArray:function(e){returne&&Array.isArray(e)},isFunction:function(e){returne&&"function"==typeofe},isElement:function(e){returne&&1===e.nodeType},isString:function(e){return"string"==typeofe||"[object String]"===Object.prototype.toString.call(e)},isSupported:{canvas:function(){vare=r.createElement("canvas");returne&&e.getContext&&e.getContext("2d")},webworkers:function(){returnt.Worker},blob:function(){returns.Blob},Uint8Array:function(){returnt.Uint8Array},Uint32Array:function(){returnt.Uint32Array},videoCodecs:function(){vare=r.createElement("video"),t={mp4:!1,h264:!1,ogv:!1,ogg:!1,webm:!1};try{e&&e.canPlayType&&(t.mp4=""!==e.canPlayType('video/mp4; codecs="mp4v.20.8"'),t.h264=""!==(e.canPlayType('video/mp4; codecs="avc1.42E01E"')||e.canPlayType('video/mp4; codecs="avc1.42E01E, mp4a.40.2"')),t.ogv=""!==e.canPlayType('video/ogg; codecs="theora"'),t.ogg=""!==e.canPlayType('video/ogg; codecs="theora"'),t.webm=-1!==e.canPlayType('video/webm; codecs="vp8, vorbis"'))}catch(e){}returnt}()},noop:function(){},each:function(e,t){varr=void0,i=void0;if(s.isArray(e))for(r=-1,i=e.length;++r<i&&!1!==t(r,e[r]););elseif(s.isObject(e))for(rine)if(e.hasOwnProperty(r)&&!1===t(r,e[r]))break},mergeOptions:function(e,t){if(s.isObject(e)&&s.isObject(t)&&Object.keys){varr={};returns.each(e,(function(t,i){r[t]=e[t]})),s.each(t,(function(i,n){varo=t[i];s.isObject(o)&&e[i]?r[i]=s.mergeOptions(e[i],o):r[i]=o})),r}},setCSSAttr:function(e,t,r){s.isElement(e)&&(s.isString(t)&&s.isString(r)?e.style[t]=r:s.isObject(t)&&s.each(t,(function(t,r){e.style[t]=r})))},removeElement:function(e){s.isElement(e)&&e.parentNode&&e.parentNode.removeChild(e)},createWebWorker:function(e){if(!s.isString(e))return{};try{vart=news.Blob([e],{type:"text/javascript"}),r=s.URL.createObjectURL(t);return{objectUrl:r,worker:newWorker(r)}}catch(e){return""+e}},getExtension:function(e){returne.substr(e.lastIndexOf(".")+1,e.length)},getFontSize:function(){vare=arguments.length>0&&arguments[0]!==n?arguments[0]:{};if(!r.body||!1===e.resizeFont)returne.fontSize;vart=e.text,i=e.gifWidth,o=parseInt(e.fontSize,10),a=parseInt(e.minFontSize,10),s=r.createElement("div"),c=r.createElement("span");for(s.setAttribute("width",i),s.appendChild(c),c.innerHTML=t,c.style.fontSize=o+"px",c.style.textIndent="-9999px",c.style.visibility="hidden",r.body.appendChild(c);c.offsetWidth>i&&o>=a;)c.style.fontSize=--o+"px";returnr.body.removeChild(c),o+"px"},webWorkerError:!1},c=Object.freeze({default:s}),d={validate:function(e){e=s.isObject(e)?e:{};vart={};returns.each(d.validators,(function(r,i){varn=i.errorCode;if(!e[n]&&!i.condition)return(t=i).error=!0,!1})),deletet.condition,t},isValid:function(e){vart=!0!==d.validate(e).error;returnt},validators:[{condition:s.isFunction(s.getUserMedia),errorCode:"getUserMedia",errorMsg:"The getUserMedia API is not supported in your browser"},{condition:s.isSupported.canvas(),errorCode:"canvas",errorMsg:"Canvas elements are not supported in your browser"},{condition:s.isSupported.webworkers(),errorCode:"webworkers",errorMsg:"The Web Workers API is not supported in your browser"},{condition:s.isFunction(s.URL),errorCode:"window.URL",errorMsg:"Thewindow.URLAPIisnotsupporteLine truncated
!function(e,t){"object"==typeofexports&&"undefined"!=typeofmodule?module.exports=t():"function"==typeofdefine&&define.amd?define(t):(e=e||self).ArtplayerReact=t()}(this,(function(){"use strict";vare=function(e,t){if(null==e)return{};varn,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);returno};vart=function(t,n){if(null==t)return{};varr,o,i=e(t,n);if(Object.getOwnPropertySymbols){vara=Object.getOwnPropertySymbols(t);for(o=0;o<a.length;o++)r=a[o],n.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(i[r]=t[r])}returni};varn=function(e,t,n){returntine?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e};"undefined"!=typeofglobalThis?globalThis:"undefined"!=typeofwindow?window:"undefined"!=typeofglobal?global:"undefined"!=typeofself&&self;functionr(e,t){returne(t={exports:{}},t.exports),t.exports}varo=r((function(e){functiont(e){return(t="function"==typeofSymbol&&"symbol"==typeofSymbol.iterator?function(e){returntypeofe}:function(e){returne&&"function"==typeofSymbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeofe})(e)}functionn(r){return"function"==typeofSymbol&&"symbol"===t(Symbol.iterator)?e.exports=n=function(e){returnt(e)}:e.exports=n=function(e){returne&&"function"==typeofSymbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":t(e)},n(r)}e.exports=n}));vari=function(e,t){if(!(einstanceoft))thrownewTypeError("Cannot call a class as a function")};functiona(e,t){for(varn=0;n<t.length;n++){varr=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"inr&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}varc=function(e,t,n){returnt&&a(e.prototype,t),n&&a(e,n),e};varu=function(e){if(void0===e)thrownewReferenceError("this hasn't been initialised - super() hasn't been called");returne};vars=function(e,t){return!t||"object"!==o(t)&&"function"!=typeoft?u(e):t},l=r((function(e){functiont(n){returne.exports=t=Object.setPrototypeOf?Object.getPrototypeOf:function(e){returne.__proto__||Object.getPrototypeOf(e)},t(n)}e.exports=t})),f=r((function(e){functiont(n,r){returne.exports=t=Object.setPrototypeOf||function(e,t){returne.__proto__=t,e},t(n,r)}e.exports=t}));varp=function(e,t){if("function"!=typeoft&&null!==t)thrownewTypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&f(e,t)},d=Object.getOwnPropertySymbols,h=Object.prototype.hasOwnProperty,y=Object.prototype.propertyIsEnumerable;functionv(e){if(null==e)thrownewTypeError("Object.assign cannot be called with null or undefined");returnObject(e)}varm=function(){try{if(!Object.assign)return!1;vare=newString("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(vart={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){returnt[e]})).join(""))return!1;varr={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(varn,r,o=v(e),i=1;i<arguments.length;i++){for(varainn=Object(arguments[i]))h.call(n,a)&&(o[a]=n[a]);if(d){r=d(n);for(varc=0;c<r.length;c++)y.call(n,r[c])&&(o[r[c]]=n[r[c]])}}returno},g="function"==typeofSymbol&&Symbol.for,b=g?Symbol.for("react.element"):60103,w=g?Symbol.for("react.portal"):60106,O=g?Symbol.for("react.fragment"):60107,k=g?Symbol.for("react.strict_mode"):60108,x=g?Symbol.for("react.profiler"):60114,j=g?Symbol.for("react.provider"):60109,P=g?Symbol.for("react.context"):60110,S=g?Symbol.for("react.forward_ref"):60112,E=g?Symbol.for("react.suspense"):60113,R=g?Symbol.for("react.suspense_list"):60120,C=g?Symbol.for("react.memo"):60115,$=g?Symbol.for("react.lazy"):60116,D="function"==typeofSymbol&&Symbol.iterator;functionT(e){for(vart=e.message,n="https://reactjs.org/docs/error-decoder.html?invariant="+t,r=1;r<arguments.length;r++)n+="&args[]="+encodeURIComponent(arguments[r]);returne.message="Minified React error #"+t+"; visit "+n+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings. ",e}var_={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},A={};functionL(e,t,n){this.props=e,this.context=t,this.refs=A,this.updater=n||_}functionM(){}functionq(e,t,n){this.props=e,this.context=t,this.refs=A,this.updater=n||_}L.prototype.isReactComponent={},L.prototype.setState=function(e,t){if("object"!=typeofe&&"function"!=typeofe&&null!=e)throwT(Error(85));this.updater.enqueueSetState(this,e,t,"setState")},L.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},M.prototype=L.prototype;varz=q.prototype=newM;z.constructor=q,m(z,L.prototype),z.isPureReactComponent=!0;varI={current:null},V={suLine truncated
!function(t,e){"object"==typeofexports&&"undefined"!=typeofmodule?module.exports=e():"function"==typeofdefine&&define.amd?define(e):(t=t||self).ArtplayerToolGithub=e()}(this,(function(){"use strict";"undefined"!=typeofglobalThis?globalThis:"undefined"!=typeofwindow?window:"undefined"!=typeofglobal?global:"undefined"!=typeofself&&self;returnfunction(t,e){returnt(e={exports:{}},e.exports),e.exports}((function(t,e){t.exports=function(){vart,e=function(t,e,r){returneint?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t},r=function(t){for(varr=1;r<arguments.length;r++){varn=null!=arguments[r]?arguments[r]:{},o=Object.keys(n);"function"==typeofObject.getOwnPropertySymbols&&(o=o.concat(Object.getOwnPropertySymbols(n).filter((function(t){returnObject.getOwnPropertyDescriptor(n,t).enumerable})))),o.forEach((function(r){e(t,r,n[r])}))}returnt},n=(function(t){vare=function(t){vare,r=Object.prototype,n=r.hasOwnProperty,o="function"==typeofSymbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",c=o.toStringTag||"@@toStringTag";functionu(t,e,r,n){varo=e&&e.prototypeinstanceofd?e:d,i=Object.create(o.prototype),a=newj(n||[]);returni._invoke=function(t,e,r){varn=f;returnfunction(o,i){if(n===l)thrownewError("Generator is already running");if(n===p){if("throw"===o)throwi;returnS()}for(r.method=o,r.arg=i;;){vara=r.delegate;if(a){varc=O(a,r);if(c){if(c===y)continue;returnc}}if("next"===r.method)r.sent=r._sent=r.arg;elseif("throw"===r.method){if(n===f)thrown=p,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n=l;varu=s(t,e,r);if("normal"===u.type){if(n=r.done?p:h,u.arg===y)continue;return{value:u.arg,done:r.done}}"throw"===u.type&&(n=p,r.method="throw",r.arg=u.arg)}}}(t,r,a),i}functions(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}t.wrap=u;varf="suspendedStart",h="suspendedYield",l="executing",p="completed",y={};functiond(){}functiong(){}functionv(){}varm={};m[i]=function(){returnthis};varw=Object.getPrototypeOf,b=w&&w(w(P([])));b&&b!==r&&n.call(b,i)&&(m=b);varx=v.prototype=d.prototype=Object.create(m);functionk(t){["next","throw","return"].forEach((function(e){t[e]=function(t){returnthis._invoke(e,t)}}))}functionL(t){vare;this._invoke=function(r,o){functioni(){returnnewPromise((function(e,i){!functione(r,o,i,a){varc=s(t[r],t,o);if("throw"!==c.type){varu=c.arg,f=u.value;returnf&&"object"==typeoff&&n.call(f,"__await")?Promise.resolve(f.__await).then((function(t){e("next",t,i,a)}),(function(t){e("throw",t,i,a)})):Promise.resolve(f).then((function(t){u.value=t,i(u)}),(function(t){returne("throw",t,i,a)}))}a(c.arg)}(r,o,e,i)}))}returne=e?e.then(i,i):i()}}functionO(t,r){varn=t.iterator[r.method];if(n===e){if(r.delegate=null,"throw"===r.method){if(t.iterator.return&&(r.method="return",r.arg=e,O(t,r),"throw"===r.method))returny;r.method="throw",r.arg=newTypeError("The iterator does not provide a 'throw' method")}returny}varo=s(n,t.iterator,r.arg);if("throw"===o.type)returnr.method="throw",r.arg=o.arg,r.delegate=null,y;vari=o.arg;returni?i.done?(r[t.resultName]=i.value,r.next=t.nextLoc,"return"!==r.method&&(r.method="next",r.arg=e),r.delegate=null,y):i:(r.method="throw",r.arg=newTypeError("iterator result is not an object"),r.delegate=null,y)}function_(t){vare={tryLoc:t[0]};1int&&(e.catchLoc=t[1]),2int&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}functionE(t){vare=t.completion||{};e.type="normal",deletee.arg,t.completion=e}functionj(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(_,this),this.reset(!0)}functionP(t){if(t){varr=t[i];if(r)returnr.call(t);if("function"==typeoft.next)returnt;if(!isNaN(t.length)){varo=-1,a=functionr(){for(;++o<t.length;)if(n.call(t,o))returnr.value=t[o],r.done=!1,r;returnr.value=e,r.done=!0,r};returna.next=a}}return{next:S}}functionS(){return{value:e,done:!0}}returng.prototype=x.constructor=v,v.constructor=g,v[c]=g.displayName="GeneratorFunction",t.isGeneratorFunction=function(t){vare="function"==typeoft&&t.constructor;return!!e&&(e===g||"GeneratorFunction"===(e.displayName||e.name))},t.mark=function(t){returnObject.setPrototypeOf?Object.setPrototypeOf(t,v):(t.__proto__=v,cint||(t[c]="GeneratorFunction")),t.prototype=Object.create(x),t},t.awrap=function(t){return{__await:t}},k(L.prototype),L.prototype[a]=function(){returnthis},t.AsyncIterator=L,t.async=function(e,r,n,o){vari=newL(u(e,r,n,o));returnt.isGeneratorFunction(r)?i:i.next().then((function(t){returnt.done?t.value:i.next()}))},k(x),x[c]="Generator",x[i]=function(){returnthis},x.toString=function(){return"[object Generator]"},t.keys=function(t){vare=[];for(varrint)e.push(r);returne.reverse(),functionr(){for(;e.length;){varn=e.pop();if(nint)returnr.value=n,r.done=!1,r}returnr.done=!0,r}},t.values=P,j.prototype={constructor:j,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sentLine truncated
!function(t,e){"object"==typeofexports&&"undefined"!=typeofmodule?module.exports=e():"function"==typeofdefine&&define.amd?define(e):(t=t||self).ArtplayerToolThumbnail=e()}(this,(function(){"use strict";vart=function(t,e){if(!(tinstanceofe))thrownewTypeError("Cannot call a class as a function")};functione(t,e){for(varn=0;n<e.length;n++){varo=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"ino&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}varn=function(t,n,o){returnn&&e(t.prototype,n),o&&e(t,o),t};functiono(t,e){returnt(e={exports:{}},e.exports),e.exports}vari=o((function(t){functione(t){return(e="function"==typeofSymbol&&"symbol"==typeofSymbol.iterator?function(t){returntypeoft}:function(t){returnt&&"function"==typeofSymbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeoft})(t)}functionn(o){return"function"==typeofSymbol&&"symbol"===e(Symbol.iterator)?t.exports=n=function(t){returne(t)}:t.exports=n=function(t){returnt&&"function"==typeofSymbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":e(t)},n(o)}t.exports=n}));varr=function(t){if(void0===t)thrownewReferenceError("this hasn't been initialised - super() hasn't been called");returnt};vara=function(t,e){return!e||"object"!==i(e)&&"function"!=typeofe?r(t):e},s=o((function(t){functione(n){returnt.exports=e=Object.setPrototypeOf?Object.getPrototypeOf:function(t){returnt.__proto__||Object.getPrototypeOf(t)},e(n)}t.exports=e})),u=o((function(t){functione(n,o){returnt.exports=e=Object.setPrototypeOf||function(t,e){returnt.__proto__=e,t},e(n,o)}t.exports=e}));varl=function(t,e){if("function"!=typeofe&&null!==e)thrownewTypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&u(t,e)};functionc(){}c.prototype={on:function(t,e,n){varo=this.e||(this.e={});return(o[t]||(o[t]=[])).push({fn:e,ctx:n}),this},once:function(t,e,n){varo=this;functioni(){o.off(t,i),e.apply(n,arguments)}returni._=e,this.on(t,i,n)},emit:function(t){for(vare=[].slice.call(arguments,1),n=((this.e||(this.e={}))[t]||[]).slice(),o=0,i=n.length;o<i;o++)n[o].fn.apply(n[o].ctx,e);returnthis},off:function(t,e){varn=this.e||(this.e={}),o=n[t],i=[];if(o&&e)for(varr=0,a=o.length;r<a;r++)o[r].fn!==e&&o[r].fn._!==e&&i.push(o[r]);returni.length?n[t]=i:deleten[t],this}};varh=c,f=c;functionp(t){returnnewPromise((function(e){returnsetTimeout(e,t)}))}functiond(t,e,n){returnMath.max(Math.min(t,Math.max(e,n)),Math.min(e,n))}returnh.TinyEmitter=f,function(e){functiono(){vare,n=arguments.length>0&&void0!==arguments[0]?arguments[0]:{};returnt(this,o),(e=a(this,s(o).call(this))).processing=!1,e.option={},e.setup(Object.assign({},o.DEFAULTS,n)),e.video=o.creatVideo(),e.inputChange=e.inputChange.bind(r(e)),e.ondrop=e.ondrop.bind(r(e)),e.option.fileInput.addEventListener("change",e.inputChange),e.option.fileInput.addEventListener("dragover",o.ondragover),e.option.fileInput.addEventListener("drop",o.ondrop),e}returnl(o,e),n(o,[{key:"ondrop",value:function(t){t.preventDefault();vare=t.dataTransfer.files[0];this.loadVideo(e)}},{key:"setup",value:function(){vart=this,e=arguments.length>0&&void0!==arguments[0]?arguments[0]:{};this.option=Object.assign({},this.option,e);varn=this.option,o=n.fileInput,i=n.delay,r=n.number,a=n.width,s=n.height,u=n.column;if(this.errorHandle(oinstanceofElement,"The 'fileInput' is not a Element"),"INPUT"!==o.tagName||"file"!==o.type){o.style.position="relative";varl=document.createElement("input");l.type="file",l.style.position="absolute",l.style.width="100%",l.style.height="100%",l.style.left="0",l.style.top="0",l.style.right="0",l.style.bottom="0",l.style.opacity="0",o.appendChild(l),this.option.fileInput=l}return["delay","number","width","height","column"].forEach((function(e){t.errorHandle("number"==typeoft.option[e],"The '".concat(e,"' is not a number"))})),this.option.delay=d(i,10,1e3),this.option.number=d(r,10,1e3),this.option.width=d(a,10,1e3),this.option.height=d(s,10,1e3),this.option.column=d(u,1,1e3),this}},{key:"inputChange",value:function(){vart=this.option.fileInput.files[0];this.loadVideo(t)}},{key:"loadVideo",value:function(t){vare=this,n=this.option.delay;if(t){varo=this.video.canPlayType(t.type);this.errorHandle("maybe"===o||"probably"===o,"Playback of this file format is not supported: ".concat(t.type));vari=URL.createObjectURL(t);this.videoUrl=i,this.file=t,this.emit("file",this.file),this.video.src=i,p(n).then((function(){e.emit("video",e.video)})).catch((function(t){throwe.emit("error",t.message),t}))}}},{key:"start",value:function(){vart=this,e=this.option,n=e.width,o=e.height,i=e.number,r=e.delay;this.density=i/this.video.duration,this.errorHandle(this.file&&this.video,"Please select the video file first"),this.errorHandle(!this.processing,"There is currently a task in progress, please wait a moment..."),this.errorHandle(this.density<=1,"ThepreviewdenLine truncated
!function(t,e){"object"==typeofexports&&"undefined"!=typeofmodule?module.exports=e():"function"==typeofdefine&&define.amd?define(e):(t=t||self).ArtplayerVue=e()}(this,(function(){"use strict";vart=function(t,e,n){returneint?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t};vare=function(t,e){if(!(tinstanceofe))thrownewTypeError("Cannot call a class as a function")};functionn(t,e){for(varn=0;n<e.length;n++){varr=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"inr&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}varr=function(t,e,r){returne&&n(t.prototype,e),r&&n(t,r),t};"undefined"!=typeofglobalThis?globalThis:"undefined"!=typeofwindow?window:"undefined"!=typeofglobal?global:"undefined"!=typeofself&&self;functioni(t,e){returnt(e={exports:{}},e.exports),e.exports}varo=i((function(t){functione(t){return(e="function"==typeofSymbol&&"symbol"==typeofSymbol.iterator?function(t){returntypeoft}:function(t){returnt&&"function"==typeofSymbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeoft})(t)}functionn(r){return"function"==typeofSymbol&&"symbol"===e(Symbol.iterator)?t.exports=n=function(t){returne(t)}:t.exports=n=function(t){returnt&&"function"==typeofSymbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":e(t)},n(r)}t.exports=n}));vara=function(t){if(void0===t)thrownewReferenceError("this hasn't been initialised - super() hasn't been called");returnt};varc=function(t,e){return!e||"object"!==o(e)&&"function"!=typeofe?a(t):e},s=i((function(t){functione(n){returnt.exports=e=Object.setPrototypeOf?Object.getPrototypeOf:function(t){returnt.__proto__||Object.getPrototypeOf(t)},e(n)}t.exports=e})),u=i((function(t){functione(n,r){returnt.exports=e=Object.setPrototypeOf||function(t,e){returnt.__proto__=e,t},e(n,r)}t.exports=e}));varl=function(t,e){if("function"!=typeofe&&null!==e)thrownewTypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&u(t,e)},f=i((function(t,e){t.exports=function(){functiont(e){return(t="function"==typeofSymbol&&"symbol"==typeofSymbol.iterator?function(t){returntypeoft}:function(t){returnt&&"function"==typeofSymbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeoft})(e)}vare=Object.prototype.toString,n=function(n){if(void0===n)return"undefined";if(null===n)return"null";vari=t(n);if("boolean"===i)return"boolean";if("string"===i)return"string";if("number"===i)return"number";if("symbol"===i)return"symbol";if("function"===i)returnfunction(t){return"GeneratorFunction"===r(t)}(n)?"generatorfunction":"function";if(function(t){returnArray.isArray?Array.isArray(t):tinstanceofArray}(n))return"array";if(function(t){return!(!t.constructor||"function"!=typeoft.constructor.isBuffer)&&t.constructor.isBuffer(t)}(n))return"buffer";if(function(t){try{if("number"==typeoft.length&&"function"==typeoft.callee)return!0}catch(t){if(-1!==t.message.indexOf("callee"))return!0}return!1}(n))return"arguments";if(function(t){returntinstanceofDate||"function"==typeoft.toDateString&&"function"==typeoft.getDate&&"function"==typeoft.setDate}(n))return"date";if(function(t){returntinstanceofError||"string"==typeoft.message&&t.constructor&&"number"==typeoft.constructor.stackTraceLimit}(n))return"error";if(function(t){returntinstanceofRegExp||"string"==typeoft.flags&&"boolean"==typeoft.ignoreCase&&"boolean"==typeoft.multiline&&"boolean"==typeoft.global}(n))return"regexp";switch(r(n)){case"Symbol":return"symbol";case"Promise":return"promise";case"WeakMap":return"weakmap";case"WeakSet":return"weakset";case"Map":return"map";case"Set":return"set";case"Int8Array":return"int8array";case"Uint8Array":return"uint8array";case"Uint8ClampedArray":return"uint8clampedarray";case"Int16Array":return"int16array";case"Uint16Array":return"uint16array";case"Int32Array":return"int32array";case"Uint32Array":return"uint32array";case"Float32Array":return"float32array";case"Float64Array":return"float64array"}if(function(t){return"function"==typeoft.throw&&"function"==typeoft.return&&"function"==typeoft.next}(n))return"generator";switch(i=e.call(n)){case"[object Object]":return"object";case"[object Map Iterator]":return"mapiterator";case"[object Set Iterator]":return"setiterator";case"[object String Iterator]":return"stringiterator";case"[object Array Iterator]":return"arrayiterator"}returni.slice(8,-1).toLowerCase().replace(/\s/g,"")};functionr(t){returnt.constructor?t.constructor.name:null}functioni(t,e){varr=2<arguments.length&&void0!==arguments[2]?arguments[2]:["option"];returno(t,e,r),a(t,e,r),function(t,e,r){varc=n(e),s=n(t);if("object"===c){if("object"!==s)thrownewError("[Type Error]: '".concat(r.join("."),"' require 'object' type, but got '").concat(s,"'"));Object.keys(e).forEach((function(n){varc=t[n],s=e[n],u=r.slice();u.push(n),o(c,s,u),a(c,s,u),i(c,s,u)}))}if("aLine truncated
!function(t,e){"object"==typeofexports&&"undefined"!=typeofmodule?module.exports=e():"function"==typeofdefine&&define.amd?define(e):(t=t||self).Artplayer=e()}(this,(function(){"use strict";vart=function(t,e){if(!(tinstanceofe))thrownewTypeError("Cannot call a class as a function")};functione(t,e){for(varn=0;n<e.length;n++){varr=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"inr&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}varn=function(t,n,r){returnn&&e(t.prototype,n),r&&e(t,r),t};"undefined"!=typeofglobalThis?globalThis:"undefined"!=typeofwindow?window:"undefined"!=typeofglobal?global:"undefined"!=typeofself&&self;functionr(t,e){returnt(e={exports:{}},e.exports),e.exports}vari=r((function(t){functione(t){return(e="function"==typeofSymbol&&"symbol"==typeofSymbol.iterator?function(t){returntypeoft}:function(t){returnt&&"function"==typeofSymbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeoft})(t)}functionn(r){return"function"==typeofSymbol&&"symbol"===e(Symbol.iterator)?t.exports=n=function(t){returne(t)}:t.exports=n=function(t){returnt&&"function"==typeofSymbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":e(t)},n(r)}t.exports=n}));varo=function(t){if(void0===t)thrownewReferenceError("this hasn't been initialised - super() hasn't been called");returnt};vara=function(t,e){return!e||"object"!==i(e)&&"function"!=typeofe?o(t):e},c=r((function(t){functione(n){returnt.exports=e=Object.setPrototypeOf?Object.getPrototypeOf:function(t){returnt.__proto__||Object.getPrototypeOf(t)},e(n)}t.exports=e})),s=r((function(t){functione(n,r){returnt.exports=e=Object.setPrototypeOf||function(t,e){returnt.__proto__=e,t},e(n,r)}t.exports=e}));varu=function(t,e){if("function"!=typeofe&&null!==e)thrownewTypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&s(t,e)},l=r((function(t,e){t.exports=function(){functiont(e){return(t="function"==typeofSymbol&&"symbol"==typeofSymbol.iterator?function(t){returntypeoft}:function(t){returnt&&"function"==typeofSymbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeoft})(e)}vare=Object.prototype.toString,n=function(n){if(void0===n)return"undefined";if(null===n)return"null";vari=t(n);if("boolean"===i)return"boolean";if("string"===i)return"string";if("number"===i)return"number";if("symbol"===i)return"symbol";if("function"===i)returnfunction(t){return"GeneratorFunction"===r(t)}(n)?"generatorfunction":"function";if(function(t){returnArray.isArray?Array.isArray(t):tinstanceofArray}(n))return"array";if(function(t){return!(!t.constructor||"function"!=typeoft.constructor.isBuffer)&&t.constructor.isBuffer(t)}(n))return"buffer";if(function(t){try{if("number"==typeoft.length&&"function"==typeoft.callee)return!0}catch(t){if(-1!==t.message.indexOf("callee"))return!0}return!1}(n))return"arguments";if(function(t){returntinstanceofDate||"function"==typeoft.toDateString&&"function"==typeoft.getDate&&"function"==typeoft.setDate}(n))return"date";if(function(t){returntinstanceofError||"string"==typeoft.message&&t.constructor&&"number"==typeoft.constructor.stackTraceLimit}(n))return"error";if(function(t){returntinstanceofRegExp||"string"==typeoft.flags&&"boolean"==typeoft.ignoreCase&&"boolean"==typeoft.multiline&&"boolean"==typeoft.global}(n))return"regexp";switch(r(n)){case"Symbol":return"symbol";case"Promise":return"promise";case"WeakMap":return"weakmap";case"WeakSet":return"weakset";case"Map":return"map";case"Set":return"set";case"Int8Array":return"int8array";case"Uint8Array":return"uint8array";case"Uint8ClampedArray":return"uint8clampedarray";case"Int16Array":return"int16array";case"Uint16Array":return"uint16array";case"Int32Array":return"int32array";case"Uint32Array":return"uint32array";case"Float32Array":return"float32array";case"Float64Array":return"float64array"}if(function(t){return"function"==typeoft.throw&&"function"==typeoft.return&&"function"==typeoft.next}(n))return"generator";switch(i=e.call(n)){case"[object Object]":return"object";case"[object Map Iterator]":return"mapiterator";case"[object Set Iterator]":return"setiterator";case"[object String Iterator]":return"stringiterator";case"[object Array Iterator]":return"arrayiterator"}returni.slice(8,-1).toLowerCase().replace(/\s/g,"")};functionr(t){returnt.constructor?t.constructor.name:null}functioni(t,e){varr=2<arguments.length&&void0!==arguments[2]?arguments[2]:["option"];returno(t,e,r),a(t,e,r),function(t,e,r){varc=n(e),s=n(t);if("object"===c){if("object"!==s)thrownewError("[Type Error]: '".concat(r.join("."),"' require 'object' type, but got '").concat(s,"'"));Object.keys(e).forEach((function(n){varc=t[n],s=e[n],u=r.slice();u.push(n),o(c,s,u),a(c,s,u),i(c,s,u)}))}if("array"===c){if("array"!==s)thrownewError("[Type Error]: '".concat(r.join("."),"' require 'array' type, but got '").concat(s,"'"Line truncated
functionca(a){a=["object"==typeofglobalThis&&globalThis,a,"object"==typeofwindow&&window,"object"==typeofself&&self,"object"==typeofglobal&&global];for(varb=0;b<a.length;++b){varc=a[b];if(c&&c.Math==Math)returnc}throwError("Cannot find global object");}vary=ca(this);functionz(a,b){if(b)a:{varc=y;a=a.split(".");for(vard=0;d<a.length-1;d++){vare=a[d];if(!(einc))breaka;c=c[e]}a=a[a.length-1];d=c[a];b=b(d);b!=d&&null!=b&&ba(c,a,{configurable:!0,writable:!0,value:b})}}
z("Symbol",function(a){functionb(g){if(thisinstanceofb)thrownewTypeError("Symbol is not a constructor");returnnewc(d+(g||"")+"_"+e++,g)}functionc(g,f){this.h=g;ba(this,"description",{configurable:!0,writable:!0,value:f})}if(a)returna;c.prototype.toString=function(){returnthis.h};vard="jscomp_symbol_"+(1E9*Math.random()>>>0)+"_",e=0;returnb});
varha="function"==typeofObject.create?Object.create:function(a){functionb(){}b.prototype=a;returnnewb},ia;if("function"==typeofObject.setPrototypeOf)ia=Object.setPrototypeOf;else{varja;a:{varka={a:!0},la={};try{la.__proto__=ka;ja=la.a;breaka}catch(a){}ja=!1}ia=ja?function(a,b){a.__proto__=b;if(a.__proto__!==b)thrownewTypeError(a+" is not extensible");returna}:null}varma=ia;
functionna(a,b){a.prototype=ha(b.prototype);a.prototype.constructor=a;if(ma)ma(a,b);elsefor(varcinb)if("prototype"!=c)if(Object.defineProperties){vard=Object.getOwnPropertyDescriptor(b,c);d&&Object.defineProperty(a,c,d)}elsea[c]=b[c];a.za=b.prototype}functionoa(){this.m=!1;this.j=null;this.i=void0;this.h=1;this.v=this.s=0;this.l=null}functionpa(a){if(a.m)thrownewTypeError("Generator is already running");a.m=!0}oa.prototype.u=function(a){this.i=a};
functionta(a,b,c,d){try{vare=b.call(a.h.j,c);if(!(einstanceofObject))thrownewTypeError("Iterator result "+e+" is not an object");if(!e.done)returna.h.m=!1,e;varg=e.value}catch(f){returna.h.j=null,qa(a.h,f),ua(a)}a.h.j=null;d.call(a.h,g);returnua(a)}functionua(a){for(;a.h.h;)try{varb=a.i(a.h);if(b)returna.h.m=!1,{value:b.value,done:!1}}catch(c){a.h.i=void0,qa(a.h,c)}a.h.m=!1;if(a.h.l){b=a.h.l;a.h.l=null;if(b.na)throwb.ma;return{value:b.return,done:!0}}return{value:void0,done:!0}}
z("String.prototype.includes",function(a){returna?a:function(b,c){if(null==this)thrownewTypeError("The 'this' value for String.prototype.includes must not be null or undefined");if(binstanceofRegExp)thrownewTypeError("First argument to String.prototype.includes must not be a regular expression");return-1!==this.indexOf(b,c||0)}});varya=this||self;
functionWa(a){if(!a)returnXa||(Xa=newVa(0,0));if(!/^-?\d+$/.test(a))returnnull;if(16>a.length)Sa(Number(a));elseif(Ua)a=BigInt(a),G=Number(a&BigInt(4294967295))>>>0,H=Number(a>>BigInt(32)&BigInt(4294967295));else{varb=+("-"===a[0]);H=G=0;for(varc=a.length,d=b,e=(c-b)%6+b;e<=c;d=e,e+=6)d=Number(a.slice(d,e)),H*=1E6,G=1E6*G+d,4294967296<=G&&(H+=G/4294967296|0,G%=4294967296);b&&(b=A(Ta(G,H)),a=b.next().value,b=b.next().value,G=a,H=b)}returnnewVa(G,H)}varXa;functionYa(a,b){returnError("Invalid wire type: "+a+" (at position "+b+")")}functionZa(){returnError("Failed to read varint, encoding is invalid.")}function$a(a,b){returnError("Tried to read past the end of the data "+b+" > "+a)};functionK(){throwError("Invalid UTF8");}functionab(a,b){b=String.fromCharCode.apply(null,b);returnnull==a?b:a+b}varbb=void0,cb,db="undefined"!==typeofTextDecoder,eb,fb="undefined"!==typeofTextEncoder;vargb;functionhb(a){if(a!==Qa)throwError("illegal external caller");}functionib(a,b){hb(b);this.V=a;if(null!=a&&0===a.length)throwError("ByteString should be constructed with non-empty values");}functionjb(){returngb||(gb=newib(null,Qa))}functionkb(a){hb(Qa);varb=a.V;b=null==b||Ia&&null!=b&&binstanceofUint8Array?b:"string"===typeofb?Na(b):null;returnnull==b?b:a.V=b};functionlb(a){if("string"===typeofa)return{buffer:Na(a),C:!1};if(Array.isArray(a))return{buffer:newUint8Array(a),C:!1};if(a.constructor===Uint8Array)return{buffer:a,C:!1};if(a.constructor===ArrayBuffer)return{buffer:newUint8Array(a),C:!1};if(a.constructor===ib)return{buffer:kb(a)||Pa(),C:!0};if(ainstanceofUint8Array)return{buffer:newUint8Array(a.buffer,a.byteOffset,a.byteLength),C:!1};throwError("Type not convertible to a Uint8Array, expected a Uint8Array, an ArrayBuffer, a base64 encoded string, a ByteString or an Array of numbers");
functionob(a){varb=a.i,c=a.h,d=b[c++],e=d&127;if(d&128&&(d=b[c++],e|=(d&127)<<7,d&128&&(d=b[c++],e|=(d&127)<<14,d&128&&(d=b[c++],e|=(d&127)<<21,d&128&&(d=b[c++],e|=d<<28,d&128&&b[c++]&128&&b[c++]&128&&b[c++]&128&&b[c++]&128&&b[c++]&128)))))throwZa();L(a,c);returne}functionpb(a,b){if(0>b)throwError("Tried to read a negative byte length: "+b);varc=a.h,d=c+b;if(d>a.j)throw$a(b,a.j-c);a.h=d;returnc}varqb=[];functionrb(){this.h=[]}rb.prototype.length=function(){returnthis.h.length};rb.prototype.end=function(){vara=this.h;this.h=[];returna};functionsb(a,b,c){for(;0<c||127<b;)a.h.push(b&127|128),b=(b>>>7|c<<25)>>>0,c>>>=7;a.h.push(b)}functionM(a,b){for(;127<b;)a.h.push(b&127|128),b>>>=7;a.h.push(b)};functiontb(a,b){if(qb.length){varc=qb.pop();nb(c,a,b);a=c}elsea=newmb(a,b);this.h=a;this.j=this.h.h;this.i=this.l=-1;this.setOptions(b)}tb.prototype.setOptions=function(a){a=void0===a?{}:a;this.ca=void0===a.ca?!1:a.ca};tb.prototype.reset=function(){this.h.reset();this.j=this.h.h;this.i=this.l=-1};
functionub(a){varb=a.h;if(b.h==b.j)return!1;a.j=a.h.h;varc=ob(a.h)>>>0;b=c>>>3;c&=7;if(!(0<=c&&5>=c))throwYa(c,a.j);if(1>b)throwError("Invalid field number: "+b+" (at position "+a.j+")");a.l=b;a.i=c;return!0}
functionAb(a){P(a,1);returna}functionBb(a,b){R(b,(a|0)&-51)}functionCb(a,b){R(b,(a|18)&-41)};varDb={};functionEb(a){returnnull!==a&&"object"===typeofa&&!Array.isArray(a)&&a.constructor===Object}varFb,Gb=[];R(Gb,23);Fb=Object.freeze(Gb);functionHb(a){if(Q(a.o)&2)throwError("Cannot mutate an immutable Message");}functionIb(a){varb=a.length;(b=b?a[b-1]:void0)&&Eb(b)?b.g=1:(b={},a.push((b.g=1,b)))};functionJb(a){varb=a.i+a.G;returna.B||(a.B=a.o[b]={})}functionS(a,b){return-1===b?null:b>=a.i?a.B?a.B[b]:void0:a.o[b+a.G]}functionU(a,b,c,d){Hb(a);Kb(a,b,c,d)}functionKb(a,b,c,d){a.j&&(a.j=void0);b>=a.i||d?Jb(a)[b]=c:(a.o[b+a.G]=c,(a=a.B)&&bina&&deletea[b])}functionLb(a,b,c,d){vare=S(a,b);Array.isArray(e)||(e=Fb);varg=Q(e);g&1||Ab(e);if(d)g&2||P(e,2),c&1||Object.freeze(e);else{d=!(c&2);varf=g&2;c&1||!f?d&&g&16&&!f&&zb(e,16):(e=Ab(Array.prototype.slice.call(e)),Kb(a,b,e))}returne}
functionV(a,b,c){if(null!=c&&"number"!==typeofc)throwError("Value of float/double field must be a number|null|undefined, found "+typeofc+": "+c);U(a,b,c)}functionQb(a,b,c,d,e){Hb(a);varg=Nb(a,c,b,!1,!1);c=null!=d?d:newc;a=Lb(a,b,2,!1);void0!=e?(g.splice(e,0,c),a.splice(e,0,c.o)):(g.push(c),a.push(c.o));c.C()&&zb(a,8);returnc}functionRb(a,b){returnnull==a?b:a}functionW(a,b,c){c=void0===c?0:c;returnRb(Mb(a,b),c)};varSb;functionTb(a){switch(typeofa){case"number":returnisFinite(a)?a:String(a);case"object":if(a)if(Array.isArray(a)){if(0!==(Q(a)&128))returna=Array.prototype.slice.call(a),Ib(a),a}else{if(Ia&&null!=a&&ainstanceofUint8Array)returnKa(a);if(ainstanceofib){varb=a.V;returnnull==b?"":"string"===typeofb?b:a.V=Ka(b)}}}returna};functionUb(a,b,c,d){if(null!=a){if(Array.isArray(a))a=Vb(a,b,c,void0!==d);elseif(Eb(a)){vare={},g;for(gina)e[g]=Ub(a[g],b,c,d);a=e}elsea=b(a,d);returna}}functionVb(a,b,c,d){vare=Q(a);d=d?!!(e&16):void0;a=Array.prototype.slice.call(a);for(varg=0;g<a.length;g++)a[g]=Ub(a[g],b,c,d);c(e,a);returna}functionWb(a){returna.ja===Db?a.toJSON():Tb(a)}functionXb(a,b){a&128&&Ib(b)};functionYb(a,b,c){c=void0===c?Cb:c;if(null!=a){if(Ia&&ainstanceofUint8Array)returna.length?newib(newUint8Array(a),Qa):jb();if(Array.isArray(a)){vard=Q(a);if(d&2)returna;if(b&&!(d&32)&&(d&16||0===d))returnR(a,d|2),a;a=Vb(a,Yb,d&4?Cb:c,!0);b=Q(a);b&4&&b&2&&Object.freeze(a);returna}returna.ja===Db?Zb(a):a}}
void0;this.o=a;a:{g=this.o.length;d=g-1;if(g&&(g=this.o[d],Eb(g))){this.B=g;this.i=d-this.G;breaka}void0!==b&&-1<b?(this.i=Math.max(b,d+1-this.G),this.B=void0):this.i=Number.MAX_VALUE}if(!e&&this.B&&"g"inthis.B)throwError('Unexpected "g" flag in sparse object of message that is not a group type.');if(c){b=k&&!f&&!0;e=this.i;varn;for(k=0;k<c.length;k++)f=c[k],f<e?(f+=this.G,(d=a[f])?ac(d,b):a[f]=Fb):(n||(n=Jb(this)),(d=n[f])?ac(d,b):n[f]=Fb)}}
functionoc(a,b,c,d,e,g){b.P=a[0];varf=1;if(a.length>f&&"number"!==typeofa[f]){varh=a[f++];c(b,h)}for(;f<a.length;){c=a[f++];for(vark=f+1;k<a.length&&"number"!==typeofa[k];)k++;h=a[f++];k-=f;switch(k){case0:d(b,c,h);break;case1:(k=lc(a,f))?(f++,e(b,c,h,k)):d(b,c,h,a[f++]);break;case2:k=f++;k=lc(a,k);e(b,c,h,k,a[f++]);break;case3:g(b,c,h,a[f++],a[f++],a[f++]);break;case4:g(b,c,h,a[f++],a[f++],a[f++],a[f++]);break;default:throwError("unexpected number of binary field arguments: "+k);}}returnb}
d=void0===d?!1:d;if(fb){if(d&&/(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])/.test(b))throwError("Found an unpaired surrogate");b=(eb||(eb=newTextEncoder)).encode(b)}else{for(vare=0,g=newUint8Array(3*b.length),f=0;f<b.length;f++){varh=b.charCodeAt(f);if(128>h)g[e++]=h;else{if(2048>h)g[e++]=h>>6|192;else{if(55296<=h&&57343>=h){if(56319>=h&&f<b.length){vark=b.charCodeAt(++f);if(56320<=k&&57343>=k){h=1024*(h-55296)+k-56320+65536;g[e++]=h>>18|240;g[e++]=h>>12&63|128;
g[e++]=h>>6&63|128;g[e++]=h&63|128;continue}elsef--}if(d)throwError("Found an unpaired surrogate");h=65533}g[e++]=h>>12|224;g[e++]=h>>6&63|128}g[e++]=h&63|128}}b=e===g.length?g:g.subarray(0,e)}M(a.h,8*c+2);M(a.h,b.length);N(a,a.h.end());N(a,b)}}),Ec=Ac(function(a,b,c,d,e){if(2!==a.i)return!1;b=Qb(b,c,d);c=a.h.j;d=ob(a.h)>>>0;varg=a.h.h+d,f=g-c;0>=f&&(a.h.j=g,e(b,a,void0,void0,void0),f=g-a.h.h);if(f)throwError("Message parsing ended unexpectedly. Expected to read "+(d+" bytes, instead read "+
(d-f)+" bytes, either the data ended unexpectedly or the message misreported its own length"));a.h.h=g;a.h.j=c;return!0},function(a,b,c,d,e){b=Ob(b,d,c);if(null!=b)for(d=0;d<b.length;d++){varg=a;M(g.h,8*c+2);varf=g.h.end();N(g,f);f.push(g.i);g=f;e(b[d],a);f=a;varh=g.pop();for(h=f.i+f.h.length()-h;127<h;)g.push(h&127|128),h>>>=7,f.i++;g.push(h);f.i++}});functionFc(a){returnfunction(b,c){a:{if(wb.length){vard=wb.pop();d.setOptions(c);nb(d.h,b,c);b=d}elseb=newtb(b,c);try{vare=hc(a);varg=ic(newe.P,b,e);breaka}finally{e=b.h,e.i=null,e.m=!1,e.l=0,e.j=0,e.h=0,e.S=!1,b.l=-1,b.i=-1,100>wb.length&&wb.push(b)}g=void0}returng}}functionGc(a){returnfunction(){varb=newxb;rc(this,b,qc(a));N(b,b.h.end());for(varc=newUint8Array(b.i),d=b.j,e=d.length,g=0,f=0;f<e;f++){varh=d[f];c.set(h,g);g+=h.length}b.j=[c];returnc}};functionZ(a){X.call(this,a)}na(Z,X);varHc=[Z,1,Cc,2,Y,3,Dc,4,Dc];Z.prototype.l=Gc(Hc);functionIc(a){X.call(this,a,-1,Jc)}na(Ic,X);Ic.prototype.addClassification=function(a,b){Qb(this,1,Z,a,b);returnthis};varJc=[1],Kc=Fc([Ic,1,Ec,Hc]);functionLc(a){X.call(this,a)}na(Lc,X);varMc=[Lc,1,Y,2,Y,3,Y,4,Y,5,Y];Lc.prototype.l=Gc(Mc);functionNc(a){X.call(this,a,-1,Oc)}na(Nc,X);varOc=[1],Pc=Fc([Nc,1,Ec,Mc]);functionQc(a){X.call(this,a)}na(Qc,X);varRc=[Qc,1,Y,2,Y,3,Y,4,Y,5,Y,6,Bc],Sc=Fc(Rc);Qc.prototype.l=Gc(Rc);functionTc(a,b,c){c=a.createShader(0===c?a.VERTEX_SHADER:a.FRAGMENT_SHADER);a.shaderSource(c,b);a.compileShader(c);if(!a.getShaderParameter(c,a.COMPILE_STATUS))throwError("Could not compile WebGL shader.\n\n"+a.getShaderInfoLog(c));returnc};functionUc(a){returnOb(a,Z,1).map(function(b){varc=S(b,1);return{index:null==c?0:c,qa:W(b,2),label:null!=S(b,3)?Rb(S(b,3),""):void0,displayName:null!=S(b,4)?Rb(S(b,4),""):void0}})};functionVc(a){return{x:W(a,1),y:W(a,2),z:W(a,3),visibility:null!=Mb(a,4)?W(a,4):void0}};functionWc(a,b){this.i=a;this.h=b;this.m=0}
functioned(a){this.h=a;this.listeners={};this.l={};this.L={};this.s={};this.v={};this.M=this.u=this.ga=!0;this.I=Promise.resolve();this.fa="";this.D={};this.locateFile=a&&a.locateFile||ad;if("object"===typeofwindow)varb=window.location.pathname.toString().substring(0,window.location.pathname.toString().lastIndexOf("/"))+"/";elseif("undefined"!==typeoflocation)b=location.pathname.toString().substring(0,location.pathname.toString().lastIndexOf("/"))+"/";elsethrowError("solutions can only be loaded on a web page or in a web worker");
gd(a,a.h.graph.url),0):(n.h=0,n=void0);returnn})}(),D(p,Promise.all([l,k,m]),7);if("function"!==typeofimportScripts)throwError("solutions can only be loaded on a web page or in a web worker");d=b.filter(function(n){returnvoid0===n.simd||n.simd&&c||!n.simd&&!c}).map(function(n){returna.locateFile(n.url,a.ha)});importScripts.apply(null,ea(d));e=a;returnD(p,createMediapipeSolutionsWasm(Module),6);case6:e.i=p.i;a.m=newOffscreenCanvas(1,1);a.i.canvas=a.m;g=a.i.GL.createContext(a.m,{antialias:!1,
alpha:!1,va:"undefined"!==typeofWebGL2RenderingContext?2:1});a.i.GL.makeContextCurrent(g);p.h=4;break;case7:a.m=document.createElement("canvas");r=a.m.getContext("webgl2",{});if(!r&&(r=a.m.getContext("webgl",{}),!r))returnalert("Failed to create WebGL canvas context when passing video frame."),p.return();a.K=r;a.i.canvas=a.m;a.i.createContext(a.m,!0,!0,{});case4:a.j=newa.i.SolutionWasm,a.ga=!1,p.h=0}})}
varModule=typeofcreateMediapipeSolutionsWasm!="undefined"?createMediapipeSolutionsWasm:{};varreadyPromiseResolve,readyPromiseReject;Module["ready"]=newPromise(function(resolve,reject){readyPromiseResolve=resolve;readyPromiseReject=reject});["_main","_fflush","___getTypeName","__embind_initialize_bindings","onRuntimeInitialized"].forEach(prop=>{if(!Object.getOwnPropertyDescriptor(Module["ready"],prop)){Object.defineProperty(Module["ready"],prop,{get:()=>abort("You are getting "+prop+" on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js"),set:()=>abort("You are setting "+prop+" on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")})}});varmoduleOverrides=Object.assign({},Module);vararguments_=[];varthisProgram="./this.program";varquit_=(status,toThrow)=>{throwtoThrow};varENVIRONMENT_IS_WEB=typeofwindow=="object";varENVIRONMENT_IS_WORKER=typeofimportScripts=="function";varENVIRONMENT_IS_NODE=typeofprocess=="object"&&typeofprocess.versions=="object"&&typeofprocess.versions.node=="string";varENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;if(Module["ENVIRONMENT"]){thrownewError("Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -sENVIRONMENT=web or -sENVIRONMENT=node)")}varscriptDirectory="";functionlocateFile(path){if(Module["locateFile"]){returnModule["locateFile"](path,scriptDirectory)}returnscriptDirectory+path}varread_,readAsync,readBinary,setWindowTitle;functionlogExceptionOnExit(e){if(einstanceofExitStatus)return;lettoLog=e;if(e&&typeofe=="object"&&e.stack){toLog=[e,e.stack]}err("exiting due to exception: "+toLog)}if(ENVIRONMENT_IS_NODE){if(typeofprocess=="undefined"||!process.release||process.release.name!=="node")thrownewError("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");varfs=require("fs");varnodePath=require("path");if(ENVIRONMENT_IS_WORKER){scriptDirectory=nodePath.dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=(filename,binary)=>{filename=isFileURI(filename)?newURL(filename):nodePath.normalize(filename);returnfs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{varret=read_(filename,true);if(!ret.buffer){ret=newUint8Array(ret)}assert(ret.buffer);returnret};readAsync=(filename,onload,onerror)=>{filename=isFileURI(filename)?newURL(filename):nodePath.normalize(filename);fs.readFile(filename,function(err,data){if(err)onerror(err);elseonload(data.buffer)})};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);process["on"]("uncaughtException",function(ex){if(!(exinstanceofExitStatus)){throwex}});process["on"]("unhandledRejection",function(reason){throwreason});quit_=(status,toThrow)=>{if(keepRuntimeAlive()){process["exitCode"]=status;throwtoThrow}logExceptionOnExit(toThrow);process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}elseif(ENVIRONMENT_IS_SHELL){if(typeofprocess=="object"&&typeofrequire==="function"||typeofwindow=="object"||typeofimportScripts=="function")thrownewError("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");if(typeofread!="undefined"){read_=functionshell_read(f){returnread(f)}}readBinary=functionreadBinary(f){letdata;if(typeofreadbuffer=="function"){returnnewUint8Array(readbuffer(f))}data=read(f,"binary");assert(typeofdata=="object");returndata};readAsync=functionreadAsync(f,onload,onerror){setTimeout(()=>onload(readBinary(f)),0)};if(typeofscriptArgs!="undefined"){arguments_=scriptArgs}elseif(typeofarguments!="undefined"){arguments_=arguments}if(typeofquit=="function"){quit_=(status,toThrow)=>{logExceptionOnExit(toThrow);quit(status)}}if(typeofprint!="undefined"){if(typeofconsole=="undefined")console={};console.log=print;console.warn=console.error=typeofprintErr!="undefined"?printErr:print}}elseif(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}elseif(typeofdocument!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}if(!(typeofwindow=="object"||typeofimportScripts=="function"))thrownewError("notcompiledforthisenvironment(didyoubuildtoHTMLandtrytorunitnotontheweb,orsetENVIRONMENTtosomething-likenode-anLine truncated
varModule=typeofcreateMediapipeSolutionsWasm!="undefined"?createMediapipeSolutionsWasm:{};varreadyPromiseResolve,readyPromiseReject;Module["ready"]=newPromise(function(resolve,reject){readyPromiseResolve=resolve;readyPromiseReject=reject});["_main","_fflush","___getTypeName","__embind_initialize_bindings","onRuntimeInitialized"].forEach(prop=>{if(!Object.getOwnPropertyDescriptor(Module["ready"],prop)){Object.defineProperty(Module["ready"],prop,{get:()=>abort("You are getting "+prop+" on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js"),set:()=>abort("You are setting "+prop+" on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")})}});varmoduleOverrides=Object.assign({},Module);vararguments_=[];varthisProgram="./this.program";varquit_=(status,toThrow)=>{throwtoThrow};varENVIRONMENT_IS_WEB=typeofwindow=="object";varENVIRONMENT_IS_WORKER=typeofimportScripts=="function";varENVIRONMENT_IS_NODE=typeofprocess=="object"&&typeofprocess.versions=="object"&&typeofprocess.versions.node=="string";varENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;if(Module["ENVIRONMENT"]){thrownewError("Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -sENVIRONMENT=web or -sENVIRONMENT=node)")}varscriptDirectory="";functionlocateFile(path){if(Module["locateFile"]){returnModule["locateFile"](path,scriptDirectory)}returnscriptDirectory+path}varread_,readAsync,readBinary,setWindowTitle;functionlogExceptionOnExit(e){if(einstanceofExitStatus)return;lettoLog=e;if(e&&typeofe=="object"&&e.stack){toLog=[e,e.stack]}err("exiting due to exception: "+toLog)}if(ENVIRONMENT_IS_NODE){if(typeofprocess=="undefined"||!process.release||process.release.name!=="node")thrownewError("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");varfs=require("fs");varnodePath=require("path");if(ENVIRONMENT_IS_WORKER){scriptDirectory=nodePath.dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=(filename,binary)=>{filename=isFileURI(filename)?newURL(filename):nodePath.normalize(filename);returnfs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{varret=read_(filename,true);if(!ret.buffer){ret=newUint8Array(ret)}assert(ret.buffer);returnret};readAsync=(filename,onload,onerror)=>{filename=isFileURI(filename)?newURL(filename):nodePath.normalize(filename);fs.readFile(filename,function(err,data){if(err)onerror(err);elseonload(data.buffer)})};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);process["on"]("uncaughtException",function(ex){if(!(exinstanceofExitStatus)){throwex}});process["on"]("unhandledRejection",function(reason){throwreason});quit_=(status,toThrow)=>{if(keepRuntimeAlive()){process["exitCode"]=status;throwtoThrow}logExceptionOnExit(toThrow);process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}elseif(ENVIRONMENT_IS_SHELL){if(typeofprocess=="object"&&typeofrequire==="function"||typeofwindow=="object"||typeofimportScripts=="function")thrownewError("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");if(typeofread!="undefined"){read_=functionshell_read(f){returnread(f)}}readBinary=functionreadBinary(f){letdata;if(typeofreadbuffer=="function"){returnnewUint8Array(readbuffer(f))}data=read(f,"binary");assert(typeofdata=="object");returndata};readAsync=functionreadAsync(f,onload,onerror){setTimeout(()=>onload(readBinary(f)),0)};if(typeofscriptArgs!="undefined"){arguments_=scriptArgs}elseif(typeofarguments!="undefined"){arguments_=arguments}if(typeofquit=="function"){quit_=(status,toThrow)=>{logExceptionOnExit(toThrow);quit(status)}}if(typeofprint!="undefined"){if(typeofconsole=="undefined")console={};console.log=print;console.warn=console.error=typeofprintErr!="undefined"?printErr:print}}elseif(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}elseif(typeofdocument!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}if(!(typeofwindow=="object"||typeofimportScripts=="function"))thrownewError("notcompiledforthisenvironment(didyoubuildtoHTMLandtrytorunitnotontheweb,orsetENVIRONMENTtosomething-likenode-anLine truncated
Loaded 100 of 1170 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.