Commit Graph
129 Commits
Author SHA1 Message Date
Harvey Zhao faaa3e8c2d refactor(core): [CORE-21] generate compatible public and editor declarations 2026-09-11 17:56:05 +08:00
Harvey Zhao ee895a558f refactor(core): [CORE-20] type entry and converge initialization 2026-09-11 16:07:06 +08:00
Harvey Zhao a842058136 refactor(core): CORE-17 type input events and own interaction lifetimes 2026-09-11 11:24:15 +08:00
Harvey Zhao 4eec8112fa refactor(core): CORE-04 scope initialization and make destruction reentrant-safe 2026-09-11 00:43:49 +08:00
Anıl Çalışkol 0f47e11d63 fix: silence unhandled play() rejections from internal callers
`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.
2026-08-30 16:31:40 +03:00
Harvey Zhao 4681a8bc7a feat: enhance Artplayer type definitions and improve component interfaces
- 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
2025-11-29 21:41:52 +08:00
Harvey Zack fa0961a9f9 refactor: update event handling in plugins and core
- 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.
2025-08-16 21:17:29 +08:00
Harvey Zack 8af6f7c322 feat: Refactor global event handling in ArtPlayer
- 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.
2025-08-16 20:45:19 +08:00
Harvey Zack 35ad9883af build all
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.
2025-08-03 13:17:33 +08:00
Harvey Zhao 078b595819 fix: correct typos in player modules (#969) 2025-06-13 20:31:27 +08:00
Harvey Zack 36865f1e7e feat: 新增手势配置项,支持移动端手势事件 2025-03-22 11:55:09 +08:00
Leo Wangandlion dd0fba6eb4 feat: 新增配置项gesture,是否开启手势快进快退操作。 (#919)
Co-authored-by: lion <lion>
2025-03-22 11:46:05 +08:00
Harvey Zack 36b2c80666 add restoreInit 2024-09-14 16:48:30 +08:00
Harvey Zack 5764344aaf refactor: Update thumbnail scale in Artplayer 2024-08-23 12:05:06 +08:00
Harvey Zack d99fa9447a Optimize setBar event and add lazy loading for thumbnails in artplayer-plugin-chapter 2024-06-02 22:59:42 +08:00
Harvey Zack 1210eb8a98 Fix indentation in clickInit.js 2024-03-30 11:13:13 +08:00
WeidiDeng 8038397185 record click timestamps to calculate number of clicks (#728)
* record click timestamps to calculate number of clicks

* break after each case
2024-03-30 11:07:25 +08:00
Harvey Zack 95ba1810b6 use || 2023-09-01 21:14:10 +08:00
Harvey Zack 9ba838aa52 add Artplayer.USE_RAF 2023-08-26 00:03:26 +08:00
Harvey Zack 894a9db1d7 add Artplayer.LOG_VERSION 2023-08-22 20:51:39 +08:00
Harvey Zack e3e42eb399 update docs 2023-05-13 21:57:45 +08:00
Harvey Zack 4902322808 Aspect ratio (#534)
* update

* update

* Create video2.mp4

* add art.quality

* fix art.theme
2023-05-13 21:23:05 +08:00
Harvey Zack 1beff2c7fa update resizeInit 2023-05-06 10:21:04 +08:00
Harvey Zack 550aa0e7f2 update docs 2023-05-06 09:52:01 +08:00
Harvey Zack 5959eb4669 build:all 2023-05-03 10:14:46 +08:00
Harvey Zack 7c8a3c2c7d prettier 2023-04-22 19:00:25 +08:00
Harvey Zack 8904130837 update player.d.ts 2023-04-20 12:00:51 +08:00
Harvey Zack 609ccb4c46 update stateMix 2023-04-20 11:49:43 +08:00
Harvey Zack ad8c50ddd7 update aspectRatioReset 2023-04-20 00:23:01 +08:00
Harvey Zack 61cf68f0bc update gestureInit 2023-04-19 23:27:02 +08:00
Harvey Zack fb445bf669 add DBCLICK_FULLSCREEN 2023-04-19 11:43:50 +08:00
Harvey Zack 677c99aa38 update events.d.ts 2023-04-19 02:55:29 +08:00
Harvey Zack 90915652aa update Component 2023-04-19 02:47:37 +08:00
Harvey Zack 7d6b7f2070 update setting 2023-04-18 00:51:06 +08:00
Harvey Zack 3ab2e96144 rename moveInit 2023-04-18 00:03:59 +08:00
Harvey Zack c4252b21b5 add documentInit 2023-04-17 22:04:57 +08:00
Harvey Zack fa7954de0d Artplayer vitepress (#446)
* init

* init

* update

* update

* update

* update

* update

* update

* add i18n option

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update
2023-01-11 20:45:01 +08:00
Harvey 37bfafb174 Fix mobile progress 2022-09-28 11:40:19 +08:00
Harvey 783b973fb2 Fix mobile touchstart 2022-09-28 10:51:26 +08:00
Harvey af6e936854 add art.isRotate 2022-09-26 18:28:22 +08:00
Harvey 489b81bb43 Fix mobile subtitle 2022-09-07 15:38:53 +08:00
Harvey 41c39284c5 add Artplayer.TOUCH_MOVE_RATIO 2022-07-28 17:49:24 +08:00
Harvey Zack 70fd29429e bugfix 2022-05-18 20:04:58 +08:00
Harvey Zack e528465a6e bugfix 2022-05-18 20:01:57 +08:00
Harvey f160d8eb61 remove art.once('video:loadedmetadata') 2022-05-18 11:29:05 +08:00
Harvey a989de98e5 update gestureInit.js 2022-05-16 13:18:10 +08:00
Harvey 2c5ba00521 add art.isLock 2022-05-16 13:09:08 +08:00
Harvey Zack 2b934ab988 add art.isInput 2022-05-15 07:42:28 +08:00
Harvey e4f815e24f update gestureInit 2022-04-27 18:33:33 +08:00
Harvey a891ccd7d1 remove indicatorGestureInit 2022-04-27 13:19:03 +08:00