`art.play()` is an async wrapper around the native `video.play()` promise, which
rejects when a pending play request is interrupted (`pause()`, `load()`, a new
`src`, or the element being removed) and when autoplay is blocked.
Every internal caller fires it from an event handler and cannot await it, so the
rejection escapes as a global `unhandledrejection`. Error trackers report it as
an uncaught crash even though the player recovers on its own — for example
destroying the player right after mount, which is routine when the video sits in
a modal the user can close quickly.
Add a `silencePromise` util (the same approach video.js uses) and apply it to the
non-awaited internal call sites: mask, play control, mini player, loop restart,
autoPlayback jump, hotkey and click toggles.
`switchMix` is fixed too, for a second symptom: `await art.play()` inside the
async `video:canplay` handler both leaked the rejection and left the `switchUrl`
promise pending forever, since the throw never reached the enclosing executor's
`reject`. It now settles.
The public API is unchanged: `art.play()` and `art.toggle()` still return the
original promise, so applications that call them keep their own rejection to
handle. Only the internal, non-awaited copy is silenced.
- Created a new documentation file for the danmuku plugin with code examples.
- Added a comprehensive guide for language settings (i18n) including default languages, importing languages, adding new languages, and modifying existing languages.
- Included code snippets for initializing the Artplayer with different language settings.
feat: implement safe area insets for improved video rotation handling
feat: add console log for safe area insets in autoOrientation plugin
feat: enhance mobile meta tags for better web app support
- Updated Artplayer class to specify environment as 'development' | 'production'.
- Refined template query method to return specific element types.
- Improved event proxy method to handle multiple event names.
- Enhanced storage get method to support both key retrieval and full record retrieval.
- Modified i18n interface to include language initialization and partial language records.
- Adjusted notice interface to provide a getter for show state and a setter for messages.
- Updated layers, controls, and contextmenu to allow undefined elements.
- Enhanced subtitle interface with initialization method.
- Refined hotkey methods to use KeyboardEvent instead of Event.
- Updated setting methods to return updated settings instead of arrays.
- Improved plugin method to return a promise.
- Added new events for video handling and refined existing event parameters.
- Enhanced option interface for proxy and plugins to support promises.
- Updated player interface to include reset method.
- Refined setting props to allow optional values.
- Enhanced template interface with additional control elements.
- Improved utils methods for querying and manipulating DOM elements.
fix: update type definitions for notice and subtitle properties, and refine event types
fix: remove unnecessary console warnings in event listener error handling
fix: refactor event listener management to use Set for better performance and error handling
- 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.
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.
* 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