@therealtinhtute/baroiplayer 1.0.8 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1004) hide show
  1. package/LICENSE +2 -2
  2. package/README.md +15 -15
  3. package/dist/context/media.js +2 -0
  4. package/dist/context/media.js.map +1 -0
  5. package/dist/context/media.mjs +15 -0
  6. package/dist/context/media.mjs.map +1 -0
  7. package/dist/context/store.js +2 -0
  8. package/dist/context/store.js.map +1 -0
  9. package/dist/context/store.mjs +5 -0
  10. package/dist/context/store.mjs.map +1 -0
  11. package/dist/context-BYwDoSRX.js +1172 -0
  12. package/dist/context-BYwDoSRX.js.map +1 -0
  13. package/dist/context-eNS62_ac.cjs +23 -0
  14. package/dist/context-eNS62_ac.cjs.map +1 -0
  15. package/dist/core-events-B1iM2F46.cjs +2 -0
  16. package/dist/core-events-B1iM2F46.cjs.map +1 -0
  17. package/dist/core-events-DunPHKRE.js +484 -0
  18. package/dist/core-events-DunPHKRE.js.map +1 -0
  19. package/dist/core-plugins-By-4-kGs.cjs +2 -0
  20. package/dist/core-plugins-By-4-kGs.cjs.map +1 -0
  21. package/dist/core-plugins-DSBWcTuX.js +821 -0
  22. package/dist/core-plugins-DSBWcTuX.js.map +1 -0
  23. package/dist/core.js +37 -0
  24. package/dist/core.js.map +1 -0
  25. package/dist/core.mjs +1233 -0
  26. package/dist/core.mjs.map +1 -0
  27. package/dist/enhanced-components-B_l3cist.js +1142 -0
  28. package/dist/enhanced-components-B_l3cist.js.map +1 -0
  29. package/dist/enhanced-components-BspFs9OO.cjs +2 -0
  30. package/dist/enhanced-components-BspFs9OO.cjs.map +1 -0
  31. package/dist/hooks-BXwI8QG6.cjs +4 -0
  32. package/dist/hooks-BXwI8QG6.cjs.map +1 -0
  33. package/dist/hooks-Bpi-jDiO.js +1816 -0
  34. package/dist/hooks-Bpi-jDiO.js.map +1 -0
  35. package/dist/index.css +1 -102
  36. package/dist/index.js +112 -21
  37. package/dist/index.js.map +1 -0
  38. package/dist/index.mjs +6273 -16
  39. package/dist/index.mjs.map +1 -0
  40. package/dist/minimal-components-C4z900Ro.js +1926 -0
  41. package/dist/minimal-components-C4z900Ro.js.map +1 -0
  42. package/dist/minimal-components-v4qBp6jv.cjs +2 -0
  43. package/dist/minimal-components-v4qBp6jv.cjs.map +1 -0
  44. package/dist/minimal-components.css +1 -589
  45. package/dist/mona-loading.gif +0 -0
  46. package/dist/performance-monitor-C5k6FDXw.js +301 -0
  47. package/dist/performance-monitor-C5k6FDXw.js.map +1 -0
  48. package/dist/performance-monitor-lJmuUjQQ.cjs +2 -0
  49. package/dist/performance-monitor-lJmuUjQQ.cjs.map +1 -0
  50. package/dist/utils-CFOue_9K.cjs +9 -0
  51. package/dist/utils-CFOue_9K.cjs.map +1 -0
  52. package/dist/utils-Dzpl2ArK.js +2844 -0
  53. package/dist/utils-Dzpl2ArK.js.map +1 -0
  54. package/dist/utils.js +2 -0
  55. package/dist/utils.js.map +1 -0
  56. package/dist/utils.mjs +11 -0
  57. package/dist/utils.mjs.map +1 -0
  58. package/package.json +11 -40
  59. package/src/adapters/videojs-adapter.tsx +441 -441
  60. package/src/components/AnimateLoading.tsx +85 -93
  61. package/src/components/LoadingState.tsx +199 -208
  62. package/src/components/__tests__/media-player-accessibility.test.tsx +510 -0
  63. package/src/components/__tests__/media-player-react19.test.tsx +457 -0
  64. package/src/components/accessibility/keyboard-help-overlay.tsx +201 -207
  65. package/src/components/basic/index.ts +28 -28
  66. package/src/components/enhanced/advanced-features.tsx +49 -54
  67. package/src/components/enhanced/debug-panel.tsx +148 -122
  68. package/src/components/enhanced/enhanced-controls.tsx +117 -120
  69. package/src/components/enhanced/enhanced-media-player.tsx +281 -224
  70. package/src/components/enhanced/error-handling.tsx +50 -57
  71. package/src/components/enhanced/index.ts +27 -27
  72. package/src/components/enhanced/media-player-enhanced.tsx +117 -83
  73. package/src/components/examples/basic-video-player.tsx +35 -40
  74. package/src/components/examples/enhanced-controls-example.tsx +16 -30
  75. package/src/components/examples/enhanced-media-player-example.tsx +196 -187
  76. package/src/components/examples/loading-states-demo.tsx +113 -113
  77. package/src/components/examples/react-19-demo.tsx +88 -116
  78. package/src/components/examples/volume-orientation-demo.tsx +77 -85
  79. package/src/components/icon-demo.tsx +189 -202
  80. package/src/components/icons/svg-icons/ArrowLeftIcon.tsx +13 -13
  81. package/src/components/icons/svg-icons/ArrowRightIcon.tsx +13 -13
  82. package/src/components/icons/svg-icons/AudioIcon.tsx +16 -16
  83. package/src/components/icons/svg-icons/BackwardIcon.tsx +7 -7
  84. package/src/components/icons/svg-icons/CameraIcon.tsx +13 -13
  85. package/src/components/icons/svg-icons/CheckIcon.tsx +13 -13
  86. package/src/components/icons/svg-icons/EnablePiPIcon.tsx +13 -13
  87. package/src/components/icons/svg-icons/ForwardIcon.tsx +7 -7
  88. package/src/components/icons/svg-icons/FullscreenEnterIcon.tsx +18 -18
  89. package/src/components/icons/svg-icons/FullscreenExitIcon.tsx +18 -18
  90. package/src/components/icons/svg-icons/LoadingIcon.tsx +27 -27
  91. package/src/components/icons/svg-icons/PauseIcon.tsx +18 -18
  92. package/src/components/icons/svg-icons/PlayIcon.tsx +16 -16
  93. package/src/components/icons/svg-icons/PlaybackSpeedIcon.tsx +18 -18
  94. package/src/components/icons/svg-icons/QualityIcon.tsx +16 -16
  95. package/src/components/icons/svg-icons/SettingsIcon.tsx +7 -7
  96. package/src/components/icons/svg-icons/SliderIcon.tsx +16 -16
  97. package/src/components/icons/svg-icons/SubtitleIcon.tsx +16 -16
  98. package/src/components/icons/svg-icons/SubtitleOffIcon.tsx +20 -20
  99. package/src/components/icons/svg-icons/UnPiPIcon.tsx +13 -13
  100. package/src/components/icons/svg-icons/VolumeMutedIcon.tsx +11 -11
  101. package/src/components/icons/svg-icons/VolumeOneIcon.tsx +17 -17
  102. package/src/components/icons/svg-icons/VolumeThreeIcon.tsx +11 -11
  103. package/src/components/icons/svg-icons/VolumeTwoIcon.tsx +11 -11
  104. package/src/components/legacy.tsx +14 -20
  105. package/src/components/media-metadata-display.tsx +78 -79
  106. package/src/components/media-player-controls.tsx +37 -40
  107. package/src/components/media-player-error.tsx +2 -2
  108. package/src/components/media-player-fullscreen.tsx +2 -2
  109. package/src/components/media-player-hls.tsx +89 -89
  110. package/src/components/media-player-play.tsx +2 -2
  111. package/src/components/media-player-root.tsx +20 -22
  112. package/src/components/media-player-seek.tsx +1 -1
  113. package/src/components/media-player-tooltip.tsx +1 -1
  114. package/src/components/media-player-video.tsx +21 -6
  115. package/src/components/media-player-volume.tsx +3 -3
  116. package/src/components/media-player.tsx +209 -174
  117. package/src/components/media-suspense.tsx +71 -89
  118. package/src/components/player-settings-form.tsx +143 -148
  119. package/src/components/react-player-wrapper.tsx +23 -23
  120. package/src/components/simple-video-player.tsx +53 -51
  121. package/src/components/ui/blur-poster.tsx +93 -0
  122. package/src/components/ui/empty-state.tsx +91 -0
  123. package/src/components/ui/enhanced-seek-bar.tsx +77 -58
  124. package/src/components/ui/error-state.tsx +124 -0
  125. package/src/components/ui/fullscreen-button.tsx +71 -50
  126. package/src/components/ui/loading-skeleton.tsx +107 -0
  127. package/src/components/ui/media-resource-preloader.tsx +262 -197
  128. package/src/components/ui/offline-message.tsx +98 -0
  129. package/src/components/ui/play-button.tsx +79 -87
  130. package/src/components/ui/seek-bar.tsx +170 -140
  131. package/src/components/ui/time-display.tsx +33 -12
  132. package/src/components/ui/volume-control.tsx +91 -44
  133. package/src/components/unified/base-media-player.tsx +61 -55
  134. package/src/components/unified/media-player.tsx +3 -3
  135. package/src/components/variants/minimal/AccessibleMinimalPlayer.tsx +528 -502
  136. package/src/components/variants/minimal/EnhancedMinimalMediaPlayer.tsx +110 -89
  137. package/src/components/variants/minimal/MinimalControls.tsx +100 -118
  138. package/src/components/variants/minimal/MinimalLoading.tsx +19 -23
  139. package/src/components/variants/minimal/MinimalMediaPlayer.tsx +283 -280
  140. package/src/components/variants/minimal/MinimalOverlay.tsx +43 -49
  141. package/src/components/variants/minimal/MinimalPlayButton.tsx +44 -53
  142. package/src/components/variants/minimal/MinimalSeekBar.tsx +130 -140
  143. package/src/components/variants/minimal/MinimalVolumeControl.tsx +59 -64
  144. package/src/components/variants/minimal/SimpleMinimalPlayer.tsx +29 -32
  145. package/src/components/variants/minimal/components/CenterPlayButton.tsx +1 -1
  146. package/src/components/variants/minimal/components/ControlBar.tsx +7 -11
  147. package/src/components/variants/minimal/components/EnhancedSettingsMenu.tsx +381 -330
  148. package/src/components/variants/minimal/components/PlaybackControls.tsx +6 -11
  149. package/src/components/variants/minimal/components/RightControls.tsx +8 -17
  150. package/src/components/variants/minimal/components/SeekBar.tsx +16 -20
  151. package/src/components/variants/minimal/components/SettingsDropdown.tsx +12 -14
  152. package/src/components/variants/minimal/components/SubtitleDisplay.tsx +1 -1
  153. package/src/components/variants/minimal/components/TimeDisplay.tsx +2 -5
  154. package/src/components/variants/minimal/components/VideoElement.tsx +3 -10
  155. package/src/components/variants/minimal/components/VolumeControl.tsx +42 -39
  156. package/src/components/video-player.tsx +10 -10
  157. package/src/context/__tests__/media-store.test.ts +509 -0
  158. package/src/context/error-handling.ts +106 -102
  159. package/src/context/media-context.tsx +56 -10
  160. package/src/context/media-provider.tsx +16 -17
  161. package/src/context/media-store.ts +68 -60
  162. package/src/context/persistence.ts +74 -65
  163. package/src/core/events/event-system.ts +422 -416
  164. package/src/core/events/hooks.ts +275 -252
  165. package/src/core/events/index.ts +14 -14
  166. package/src/core/events/middleware.ts +269 -252
  167. package/src/core/index.ts +8 -8
  168. package/src/core/optimization/bundle-optimizer.tsx +76 -72
  169. package/src/core/performance/cicd.ts +91 -89
  170. package/src/core/performance/index.ts +22 -22
  171. package/src/core/performance/media-loading-optimizer.ts +518 -512
  172. package/src/core/performance/performance-budgets.ts +414 -409
  173. package/src/core/performance/performance-monitor.tsx +451 -439
  174. package/src/core/performance/performance-testing.ts +439 -437
  175. package/src/core/plugins/__tests__/registry.test.ts +595 -0
  176. package/src/core/plugins/base-plugin.ts +197 -196
  177. package/src/core/plugins/enhanced-plugin-system.ts +157 -139
  178. package/src/core/plugins/examples/analytics-plugin.ts +229 -230
  179. package/src/core/plugins/index.ts +26 -26
  180. package/src/core/plugins/registry.ts +544 -325
  181. package/src/core/plugins/types.ts +115 -105
  182. package/src/core/plugins/utils.ts +292 -291
  183. package/src/core/progressive-loading.tsx +297 -288
  184. package/src/core/providers/enhanced-hls-provider.ts +98 -99
  185. package/src/core/providers/lazy-provider.tsx +14 -0
  186. package/src/core/providers/service-provider.tsx +104 -108
  187. package/src/core/utils.tsx +22 -26
  188. package/src/features/media-session/media-session-manager.ts +391 -409
  189. package/src/features/picture-in-picture/pip-manager.ts +364 -365
  190. package/src/features/playlist/playlist-manager.ts +605 -585
  191. package/src/features/subtitles/subtitle-manager.ts +424 -430
  192. package/src/features/subtitles/subtitle-parser.ts +277 -273
  193. package/src/features/thumbnails/thumbnail-generator.ts +511 -502
  194. package/src/hooks/__tests__/currentTime-fix.test.ts +149 -0
  195. package/src/hooks/__tests__/use-media-player.test.ts +712 -0
  196. package/src/hooks/__tests__/use-media-state.test.tsx +316 -0
  197. package/src/hooks/accessibility/index.ts +20 -20
  198. package/src/hooks/accessibility/use-accessibility-preferences.ts +177 -175
  199. package/src/hooks/accessibility/use-focus-management.ts +170 -163
  200. package/src/hooks/accessibility/use-keyboard-shortcuts.ts +132 -124
  201. package/src/hooks/accessibility/use-screen-reader.ts +191 -161
  202. package/src/hooks/core/index.ts +30 -30
  203. package/src/hooks/legacy.ts +3 -9
  204. package/src/hooks/use-buffer-health.ts +218 -0
  205. package/src/hooks/use-enhanced-media-player.ts +171 -81
  206. package/src/hooks/use-focus-trap.tsx +162 -0
  207. package/src/hooks/use-intelligent-preloading.ts +256 -232
  208. package/src/hooks/use-keyboard-controls.ts +80 -80
  209. package/src/hooks/use-keyboard-shortcuts.ts +255 -0
  210. package/src/hooks/use-media-actions.ts +81 -72
  211. package/src/hooks/use-media-metadata.ts +75 -73
  212. package/src/hooks/use-media-optimistic.ts +145 -151
  213. package/src/hooks/use-media-player.ts +193 -160
  214. package/src/hooks/use-media-state.ts +63 -59
  215. package/src/hooks/use-memory-optimization.ts +121 -119
  216. package/src/hooks/use-network-status.ts +124 -0
  217. package/src/hooks/use-optimistic-controls.ts +91 -88
  218. package/src/hooks/use-optimized-media.ts +76 -56
  219. package/src/hooks/use-smart-preload.ts +229 -0
  220. package/src/hooks/use-touch-gestures.ts +427 -383
  221. package/src/hooks/useEnhancedSubtitles.ts +245 -245
  222. package/src/hooks/useKeyboardShortcuts.ts +84 -52
  223. package/src/hooks/useMediaControls.ts +22 -22
  224. package/src/hooks/useScreenshot.ts +51 -47
  225. package/src/hooks/useSubtitles.ts +53 -53
  226. package/src/hooks/useVideoPlayer.ts +107 -61
  227. package/src/icons/components/FullscreenIcon.tsx +34 -35
  228. package/src/icons/components/SettingsIcon.tsx +35 -36
  229. package/src/icons/components/animated/LoadingIcon.tsx +25 -41
  230. package/src/icons/components/animated/PlayPauseIcon.tsx +38 -46
  231. package/src/icons/components/media/PauseIcon.tsx +36 -37
  232. package/src/icons/components/media/PlayIcon.tsx +35 -36
  233. package/src/icons/components/volume/VolumeIcon.tsx +36 -37
  234. package/src/icons/components/volume/VolumeOffIcon.tsx +36 -37
  235. package/src/icons/index.ts +38 -38
  236. package/src/icons/provider.tsx +40 -46
  237. package/src/icons/types.ts +51 -31
  238. package/src/index-enhanced.ts +10 -10
  239. package/src/index-legacy.ts +4 -7
  240. package/src/index.css +80 -80
  241. package/src/index.ts +8 -23
  242. package/src/lib/__tests__/async-utils.test.ts +291 -0
  243. package/src/lib/async-utils.ts +194 -0
  244. package/src/lib/deprecation.ts +4 -4
  245. package/src/lib/index.ts +3 -2
  246. package/src/lib/utils.ts +3 -3
  247. package/src/styles/globals.css +3 -3
  248. package/src/styles/minimal-player.css +606 -574
  249. package/src/styles/pixel-art.css +23 -28
  250. package/src/styles/videojs.css +43 -43
  251. package/src/test/accessibility-utils.ts +208 -0
  252. package/src/test/browser-simulation.ts +235 -0
  253. package/src/test/media-mocks.ts +169 -0
  254. package/src/test/performance-utils.ts +192 -0
  255. package/src/test/setup.ts +256 -41
  256. package/src/types/events.ts +30 -30
  257. package/src/types/formats.ts +56 -72
  258. package/src/types/index.ts +16 -38
  259. package/src/types/videojs-plugins.d.ts +6 -6
  260. package/dist/index.d.ts +0 -1425
  261. package/dist/package.json +0 -62
  262. package/dist/src/adapters/videojs-adapter.d.ts +0 -38
  263. package/dist/src/adapters/videojs-adapter.tsx +0 -470
  264. package/dist/src/components/AnimateLoading.d.ts +0 -9
  265. package/dist/src/components/AnimateLoading.tsx +0 -115
  266. package/dist/src/components/LoadingState.d.ts +0 -33
  267. package/dist/src/components/LoadingState.tsx +0 -248
  268. package/dist/src/components/accessibility/keyboard-help-overlay.d.ts +0 -17
  269. package/dist/src/components/accessibility/keyboard-help-overlay.tsx +0 -213
  270. package/dist/src/components/audio-player.d.ts +0 -3
  271. package/dist/src/components/audio-player.tsx +0 -85
  272. package/dist/src/components/basic/index.d.ts +0 -26
  273. package/dist/src/components/basic/index.ts +0 -37
  274. package/dist/src/components/enhanced/advanced-features.d.ts +0 -45
  275. package/dist/src/components/enhanced/advanced-features.tsx +0 -316
  276. package/dist/src/components/enhanced/debug-panel.d.ts +0 -70
  277. package/dist/src/components/enhanced/debug-panel.tsx +0 -422
  278. package/dist/src/components/enhanced/enhanced-controls.d.ts +0 -50
  279. package/dist/src/components/enhanced/enhanced-controls.tsx +0 -600
  280. package/dist/src/components/enhanced/enhanced-media-player.d.ts +0 -26
  281. package/dist/src/components/enhanced/enhanced-media-player.tsx +0 -509
  282. package/dist/src/components/enhanced/error-handling.d.ts +0 -36
  283. package/dist/src/components/enhanced/error-handling.tsx +0 -345
  284. package/dist/src/components/enhanced/index.d.ts +0 -7
  285. package/dist/src/components/enhanced/index.ts +0 -39
  286. package/dist/src/components/enhanced/media-player-enhanced.d.ts +0 -21
  287. package/dist/src/components/enhanced/media-player-enhanced.tsx +0 -349
  288. package/dist/src/components/examples/basic-video-player.d.ts +0 -10
  289. package/dist/src/components/examples/basic-video-player.tsx +0 -55
  290. package/dist/src/components/examples/custom-controls-example.d.ts +0 -10
  291. package/dist/src/components/examples/custom-controls-example.tsx +0 -63
  292. package/dist/src/components/examples/enhanced-controls-example.d.ts +0 -9
  293. package/dist/src/components/examples/enhanced-controls-example.tsx +0 -114
  294. package/dist/src/components/examples/enhanced-media-player-example.d.ts +0 -9
  295. package/dist/src/components/examples/enhanced-media-player-example.tsx +0 -293
  296. package/dist/src/components/examples/loading-states-demo.d.ts +0 -2
  297. package/dist/src/components/examples/loading-states-demo.tsx +0 -142
  298. package/dist/src/components/examples/react-19-demo.d.ts +0 -10
  299. package/dist/src/components/examples/react-19-demo.tsx +0 -381
  300. package/dist/src/components/examples/volume-orientation-demo.d.ts +0 -2
  301. package/dist/src/components/examples/volume-orientation-demo.tsx +0 -114
  302. package/dist/src/components/icon-demo.d.ts +0 -2
  303. package/dist/src/components/icon-demo.tsx +0 -209
  304. package/dist/src/components/icons/index.d.ts +0 -36
  305. package/dist/src/components/icons/index.tsx +0 -166
  306. package/dist/src/components/icons/svg-icons/ArrowLeftIcon.d.ts +0 -4
  307. package/dist/src/components/icons/svg-icons/ArrowLeftIcon.tsx +0 -18
  308. package/dist/src/components/icons/svg-icons/ArrowRightIcon.d.ts +0 -4
  309. package/dist/src/components/icons/svg-icons/ArrowRightIcon.tsx +0 -18
  310. package/dist/src/components/icons/svg-icons/AudioIcon.d.ts +0 -4
  311. package/dist/src/components/icons/svg-icons/AudioIcon.tsx +0 -22
  312. package/dist/src/components/icons/svg-icons/BackwardIcon.d.ts +0 -4
  313. package/dist/src/components/icons/svg-icons/BackwardIcon.tsx +0 -12
  314. package/dist/src/components/icons/svg-icons/CameraIcon.d.ts +0 -4
  315. package/dist/src/components/icons/svg-icons/CameraIcon.tsx +0 -19
  316. package/dist/src/components/icons/svg-icons/CheckIcon.d.ts +0 -4
  317. package/dist/src/components/icons/svg-icons/CheckIcon.tsx +0 -19
  318. package/dist/src/components/icons/svg-icons/EnablePiPIcon.d.ts +0 -4
  319. package/dist/src/components/icons/svg-icons/EnablePiPIcon.tsx +0 -17
  320. package/dist/src/components/icons/svg-icons/ForwardIcon.d.ts +0 -4
  321. package/dist/src/components/icons/svg-icons/ForwardIcon.tsx +0 -12
  322. package/dist/src/components/icons/svg-icons/FullscreenEnterIcon.d.ts +0 -4
  323. package/dist/src/components/icons/svg-icons/FullscreenEnterIcon.tsx +0 -23
  324. package/dist/src/components/icons/svg-icons/FullscreenExitIcon.d.ts +0 -4
  325. package/dist/src/components/icons/svg-icons/FullscreenExitIcon.tsx +0 -23
  326. package/dist/src/components/icons/svg-icons/LoadingIcon.d.ts +0 -4
  327. package/dist/src/components/icons/svg-icons/LoadingIcon.tsx +0 -32
  328. package/dist/src/components/icons/svg-icons/PauseIcon.d.ts +0 -4
  329. package/dist/src/components/icons/svg-icons/PauseIcon.tsx +0 -23
  330. package/dist/src/components/icons/svg-icons/PlayIcon.d.ts +0 -4
  331. package/dist/src/components/icons/svg-icons/PlayIcon.tsx +0 -21
  332. package/dist/src/components/icons/svg-icons/PlaybackSpeedIcon.d.ts +0 -4
  333. package/dist/src/components/icons/svg-icons/PlaybackSpeedIcon.tsx +0 -23
  334. package/dist/src/components/icons/svg-icons/QualityIcon.d.ts +0 -4
  335. package/dist/src/components/icons/svg-icons/QualityIcon.tsx +0 -21
  336. package/dist/src/components/icons/svg-icons/SettingsIcon.d.ts +0 -4
  337. package/dist/src/components/icons/svg-icons/SettingsIcon.tsx +0 -12
  338. package/dist/src/components/icons/svg-icons/SliderIcon.d.ts +0 -4
  339. package/dist/src/components/icons/svg-icons/SliderIcon.tsx +0 -21
  340. package/dist/src/components/icons/svg-icons/SubtitleIcon.d.ts +0 -4
  341. package/dist/src/components/icons/svg-icons/SubtitleIcon.tsx +0 -21
  342. package/dist/src/components/icons/svg-icons/SubtitleOffIcon.d.ts +0 -4
  343. package/dist/src/components/icons/svg-icons/SubtitleOffIcon.tsx +0 -25
  344. package/dist/src/components/icons/svg-icons/UnPiPIcon.d.ts +0 -4
  345. package/dist/src/components/icons/svg-icons/UnPiPIcon.tsx +0 -17
  346. package/dist/src/components/icons/svg-icons/VolumeMutedIcon.d.ts +0 -4
  347. package/dist/src/components/icons/svg-icons/VolumeMutedIcon.tsx +0 -16
  348. package/dist/src/components/icons/svg-icons/VolumeOneIcon.d.ts +0 -4
  349. package/dist/src/components/icons/svg-icons/VolumeOneIcon.tsx +0 -22
  350. package/dist/src/components/icons/svg-icons/VolumeThreeIcon.d.ts +0 -4
  351. package/dist/src/components/icons/svg-icons/VolumeThreeIcon.tsx +0 -16
  352. package/dist/src/components/icons/svg-icons/VolumeTwoIcon.d.ts +0 -4
  353. package/dist/src/components/icons/svg-icons/VolumeTwoIcon.tsx +0 -16
  354. package/dist/src/components/legacy.d.ts +0 -13
  355. package/dist/src/components/legacy.tsx +0 -93
  356. package/dist/src/components/media-metadata-display.d.ts +0 -11
  357. package/dist/src/components/media-metadata-display.tsx +0 -100
  358. package/dist/src/components/media-player-audio.d.ts +0 -9
  359. package/dist/src/components/media-player-audio.tsx +0 -39
  360. package/dist/src/components/media-player-controls.d.ts +0 -23
  361. package/dist/src/components/media-player-controls.tsx +0 -226
  362. package/dist/src/components/media-player-error.d.ts +0 -16
  363. package/dist/src/components/media-player-error.tsx +0 -163
  364. package/dist/src/components/media-player-fullscreen.d.ts +0 -12
  365. package/dist/src/components/media-player-fullscreen.tsx +0 -109
  366. package/dist/src/components/media-player-hls.d.ts +0 -23
  367. package/dist/src/components/media-player-hls.tsx +0 -111
  368. package/dist/src/components/media-player-loading.d.ts +0 -12
  369. package/dist/src/components/media-player-loading.tsx +0 -76
  370. package/dist/src/components/media-player-play.d.ts +0 -11
  371. package/dist/src/components/media-player-play.tsx +0 -75
  372. package/dist/src/components/media-player-root.d.ts +0 -28
  373. package/dist/src/components/media-player-root.tsx +0 -340
  374. package/dist/src/components/media-player-seek.d.ts +0 -15
  375. package/dist/src/components/media-player-seek.tsx +0 -168
  376. package/dist/src/components/media-player-time.d.ts +0 -12
  377. package/dist/src/components/media-player-time.tsx +0 -99
  378. package/dist/src/components/media-player-tooltip.d.ts +0 -13
  379. package/dist/src/components/media-player-tooltip.tsx +0 -58
  380. package/dist/src/components/media-player-video.d.ts +0 -9
  381. package/dist/src/components/media-player-video.tsx +0 -39
  382. package/dist/src/components/media-player-volume.d.ts +0 -13
  383. package/dist/src/components/media-player-volume.tsx +0 -155
  384. package/dist/src/components/media-player.d.ts +0 -3
  385. package/dist/src/components/media-player.tsx +0 -257
  386. package/dist/src/components/media-suspense.d.ts +0 -78
  387. package/dist/src/components/media-suspense.tsx +0 -362
  388. package/dist/src/components/player-settings-form.d.ts +0 -8
  389. package/dist/src/components/player-settings-form.tsx +0 -163
  390. package/dist/src/components/react-player-wrapper.d.ts +0 -64
  391. package/dist/src/components/react-player-wrapper.tsx +0 -651
  392. package/dist/src/components/simple-video-player.d.ts +0 -9
  393. package/dist/src/components/simple-video-player.tsx +0 -60
  394. package/dist/src/components/ui/button.tsx +0 -49
  395. package/dist/src/components/ui/dropdown-menu.tsx +0 -137
  396. package/dist/src/components/ui/enhanced-seek-bar.d.ts +0 -3
  397. package/dist/src/components/ui/enhanced-seek-bar.tsx +0 -235
  398. package/dist/src/components/ui/fullscreen-button.d.ts +0 -3
  399. package/dist/src/components/ui/fullscreen-button.tsx +0 -60
  400. package/dist/src/components/ui/icons.tsx +0 -174
  401. package/dist/src/components/ui/media-resource-preloader.d.ts +0 -21
  402. package/dist/src/components/ui/media-resource-preloader.tsx +0 -393
  403. package/dist/src/components/ui/play-button.d.ts +0 -3
  404. package/dist/src/components/ui/play-button.tsx +0 -107
  405. package/dist/src/components/ui/seek-bar.d.ts +0 -3
  406. package/dist/src/components/ui/seek-bar.tsx +0 -161
  407. package/dist/src/components/ui/slider.tsx +0 -55
  408. package/dist/src/components/ui/time-display.d.ts +0 -3
  409. package/dist/src/components/ui/time-display.tsx +0 -40
  410. package/dist/src/components/ui/tooltip.tsx +0 -131
  411. package/dist/src/components/ui/volume-control.d.ts +0 -3
  412. package/dist/src/components/ui/volume-control.tsx +0 -143
  413. package/dist/src/components/unified/base-media-player.d.ts +0 -18
  414. package/dist/src/components/unified/base-media-player.tsx +0 -246
  415. package/dist/src/components/unified/media-player.d.ts +0 -37
  416. package/dist/src/components/unified/media-player.tsx +0 -75
  417. package/dist/src/components/variants/minimal/AccessibleMinimalPlayer.d.ts +0 -42
  418. package/dist/src/components/variants/minimal/AccessibleMinimalPlayer.tsx +0 -561
  419. package/dist/src/components/variants/minimal/EnhancedMinimalMediaPlayer.d.ts +0 -44
  420. package/dist/src/components/variants/minimal/EnhancedMinimalMediaPlayer.tsx +0 -552
  421. package/dist/src/components/variants/minimal/MinimalControls.d.ts +0 -19
  422. package/dist/src/components/variants/minimal/MinimalControls.tsx +0 -142
  423. package/dist/src/components/variants/minimal/MinimalLoading.d.ts +0 -10
  424. package/dist/src/components/variants/minimal/MinimalLoading.tsx +0 -32
  425. package/dist/src/components/variants/minimal/MinimalMediaPlayer.d.ts +0 -38
  426. package/dist/src/components/variants/minimal/MinimalMediaPlayer.tsx +0 -315
  427. package/dist/src/components/variants/minimal/MinimalOverlay.d.ts +0 -11
  428. package/dist/src/components/variants/minimal/MinimalOverlay.tsx +0 -64
  429. package/dist/src/components/variants/minimal/MinimalPlayButton.d.ts +0 -9
  430. package/dist/src/components/variants/minimal/MinimalPlayButton.tsx +0 -65
  431. package/dist/src/components/variants/minimal/MinimalSeekBar.d.ts +0 -7
  432. package/dist/src/components/variants/minimal/MinimalSeekBar.tsx +0 -150
  433. package/dist/src/components/variants/minimal/MinimalVolumeControl.d.ts +0 -7
  434. package/dist/src/components/variants/minimal/MinimalVolumeControl.tsx +0 -80
  435. package/dist/src/components/variants/minimal/SimpleMinimalPlayer.d.ts +0 -22
  436. package/dist/src/components/variants/minimal/SimpleMinimalPlayer.tsx +0 -209
  437. package/dist/src/components/variants/minimal/components/CenterPlayButton.d.ts +0 -7
  438. package/dist/src/components/variants/minimal/components/CenterPlayButton.tsx +0 -22
  439. package/dist/src/components/variants/minimal/components/ControlBar.d.ts +0 -43
  440. package/dist/src/components/variants/minimal/components/ControlBar.tsx +0 -146
  441. package/dist/src/components/variants/minimal/components/EnhancedSettingsMenu.d.ts +0 -24
  442. package/dist/src/components/variants/minimal/components/EnhancedSettingsMenu.tsx +0 -361
  443. package/dist/src/components/variants/minimal/components/PlaybackControls.d.ts +0 -9
  444. package/dist/src/components/variants/minimal/components/PlaybackControls.tsx +0 -51
  445. package/dist/src/components/variants/minimal/components/RightControls.d.ts +0 -25
  446. package/dist/src/components/variants/minimal/components/RightControls.tsx +0 -173
  447. package/dist/src/components/variants/minimal/components/SeekBar.d.ts +0 -11
  448. package/dist/src/components/variants/minimal/components/SeekBar.tsx +0 -131
  449. package/dist/src/components/variants/minimal/components/SettingsDropdown.d.ts +0 -9
  450. package/dist/src/components/variants/minimal/components/SettingsDropdown.tsx +0 -70
  451. package/dist/src/components/variants/minimal/components/SubtitleDisplay.d.ts +0 -7
  452. package/dist/src/components/variants/minimal/components/SubtitleDisplay.tsx +0 -21
  453. package/dist/src/components/variants/minimal/components/TimeDisplay.d.ts +0 -7
  454. package/dist/src/components/variants/minimal/components/TimeDisplay.tsx +0 -18
  455. package/dist/src/components/variants/minimal/components/VideoElement.d.ts +0 -13
  456. package/dist/src/components/variants/minimal/components/VideoElement.tsx +0 -40
  457. package/dist/src/components/variants/minimal/components/VolumeControl.d.ts +0 -13
  458. package/dist/src/components/variants/minimal/components/VolumeControl.tsx +0 -217
  459. package/dist/src/components/variants/minimal/index.d.ts +0 -17
  460. package/dist/src/components/variants/minimal/index.ts +0 -23
  461. package/dist/src/components/video-player.d.ts +0 -3
  462. package/dist/src/components/video-player.tsx +0 -100
  463. package/dist/src/context/error-handling.d.ts +0 -72
  464. package/dist/src/context/error-handling.ts +0 -394
  465. package/dist/src/context/media-context.d.ts +0 -104
  466. package/dist/src/context/media-context.tsx +0 -208
  467. package/dist/src/context/media-provider.d.ts +0 -26
  468. package/dist/src/context/media-provider.tsx +0 -265
  469. package/dist/src/context/media-store.d.ts +0 -33
  470. package/dist/src/context/media-store.ts +0 -379
  471. package/dist/src/context/persistence.d.ts +0 -83
  472. package/dist/src/context/persistence.ts +0 -453
  473. package/dist/src/core/events/event-system.d.ts +0 -170
  474. package/dist/src/core/events/event-system.ts +0 -442
  475. package/dist/src/core/events/hooks.d.ts +0 -33
  476. package/dist/src/core/events/hooks.ts +0 -302
  477. package/dist/src/core/events/index.d.ts +0 -6
  478. package/dist/src/core/events/index.ts +0 -22
  479. package/dist/src/core/events/middleware.d.ts +0 -39
  480. package/dist/src/core/events/middleware.ts +0 -269
  481. package/dist/src/core/index.d.ts +0 -8
  482. package/dist/src/core/index.ts +0 -22
  483. package/dist/src/core/optimization/bundle-optimizer.d.ts +0 -44
  484. package/dist/src/core/optimization/bundle-optimizer.tsx +0 -308
  485. package/dist/src/core/performance/cicd.d.ts +0 -8
  486. package/dist/src/core/performance/cicd.ts +0 -96
  487. package/dist/src/core/performance/index.d.ts +0 -10
  488. package/dist/src/core/performance/index.ts +0 -38
  489. package/dist/src/core/performance/media-loading-optimizer.d.ts +0 -105
  490. package/dist/src/core/performance/media-loading-optimizer.ts +0 -538
  491. package/dist/src/core/performance/performance-budgets.d.ts +0 -68
  492. package/dist/src/core/performance/performance-budgets.ts +0 -432
  493. package/dist/src/core/performance/performance-monitor.d.ts +0 -95
  494. package/dist/src/core/performance/performance-monitor.tsx +0 -476
  495. package/dist/src/core/performance/performance-testing.d.ts +0 -69
  496. package/dist/src/core/performance/performance-testing.ts +0 -459
  497. package/dist/src/core/plugins/base-plugin.d.ts +0 -52
  498. package/dist/src/core/plugins/base-plugin.ts +0 -224
  499. package/dist/src/core/plugins/enhanced-plugin-system.d.ts +0 -160
  500. package/dist/src/core/plugins/enhanced-plugin-system.ts +0 -417
  501. package/dist/src/core/plugins/examples/analytics-plugin.d.ts +0 -30
  502. package/dist/src/core/plugins/examples/analytics-plugin.ts +0 -242
  503. package/dist/src/core/plugins/index.d.ts +0 -8
  504. package/dist/src/core/plugins/index.ts +0 -39
  505. package/dist/src/core/plugins/registry.d.ts +0 -31
  506. package/dist/src/core/plugins/registry.ts +0 -327
  507. package/dist/src/core/plugins/types.d.ts +0 -101
  508. package/dist/src/core/plugins/types.ts +0 -159
  509. package/dist/src/core/plugins/utils.d.ts +0 -38
  510. package/dist/src/core/plugins/utils.ts +0 -316
  511. package/dist/src/core/progressive-loading.d.ts +0 -88
  512. package/dist/src/core/progressive-loading.tsx +0 -322
  513. package/dist/src/core/providers/enhanced-hls-provider.d.ts +0 -50
  514. package/dist/src/core/providers/enhanced-hls-provider.ts +0 -308
  515. package/dist/src/core/providers/service-provider.d.ts +0 -49
  516. package/dist/src/core/providers/service-provider.tsx +0 -168
  517. package/dist/src/core/utils.d.ts +0 -25
  518. package/dist/src/core/utils.tsx +0 -38
  519. package/dist/src/features/media-session/media-session-manager.d.ts +0 -132
  520. package/dist/src/features/media-session/media-session-manager.ts +0 -429
  521. package/dist/src/features/picture-in-picture/pip-manager.d.ts +0 -94
  522. package/dist/src/features/picture-in-picture/pip-manager.ts +0 -429
  523. package/dist/src/features/playlist/playlist-manager.d.ts +0 -208
  524. package/dist/src/features/playlist/playlist-manager.ts +0 -606
  525. package/dist/src/features/subtitles/subtitle-manager.d.ts +0 -136
  526. package/dist/src/features/subtitles/subtitle-manager.ts +0 -441
  527. package/dist/src/features/subtitles/subtitle-parser.d.ts +0 -60
  528. package/dist/src/features/subtitles/subtitle-parser.ts +0 -280
  529. package/dist/src/features/thumbnails/thumbnail-generator.d.ts +0 -136
  530. package/dist/src/features/thumbnails/thumbnail-generator.ts +0 -519
  531. package/dist/src/hooks/accessibility/index.d.ts +0 -5
  532. package/dist/src/hooks/accessibility/index.ts +0 -27
  533. package/dist/src/hooks/accessibility/use-accessibility-preferences.d.ts +0 -14
  534. package/dist/src/hooks/accessibility/use-accessibility-preferences.ts +0 -188
  535. package/dist/src/hooks/accessibility/use-focus-management.d.ts +0 -31
  536. package/dist/src/hooks/accessibility/use-focus-management.ts +0 -176
  537. package/dist/src/hooks/accessibility/use-keyboard-shortcuts.d.ts +0 -38
  538. package/dist/src/hooks/accessibility/use-keyboard-shortcuts.ts +0 -144
  539. package/dist/src/hooks/accessibility/use-screen-reader.d.ts +0 -22
  540. package/dist/src/hooks/accessibility/use-screen-reader.ts +0 -182
  541. package/dist/src/hooks/core/index.d.ts +0 -18
  542. package/dist/src/hooks/core/index.ts +0 -47
  543. package/dist/src/hooks/legacy.d.ts +0 -18
  544. package/dist/src/hooks/legacy.ts +0 -27
  545. package/dist/src/hooks/use-enhanced-media-player.d.ts +0 -88
  546. package/dist/src/hooks/use-enhanced-media-player.ts +0 -485
  547. package/dist/src/hooks/use-intelligent-preloading.d.ts +0 -66
  548. package/dist/src/hooks/use-intelligent-preloading.ts +0 -363
  549. package/dist/src/hooks/use-keyboard-controls.d.ts +0 -13
  550. package/dist/src/hooks/use-keyboard-controls.ts +0 -115
  551. package/dist/src/hooks/use-media-actions.d.ts +0 -62
  552. package/dist/src/hooks/use-media-actions.ts +0 -175
  553. package/dist/src/hooks/use-media-metadata.d.ts +0 -11
  554. package/dist/src/hooks/use-media-metadata.ts +0 -89
  555. package/dist/src/hooks/use-media-optimistic.d.ts +0 -36
  556. package/dist/src/hooks/use-media-optimistic.ts +0 -270
  557. package/dist/src/hooks/use-media-player.d.ts +0 -31
  558. package/dist/src/hooks/use-media-player.ts +0 -310
  559. package/dist/src/hooks/use-media-state.d.ts +0 -17
  560. package/dist/src/hooks/use-media-state.ts +0 -190
  561. package/dist/src/hooks/use-memory-optimization.d.ts +0 -40
  562. package/dist/src/hooks/use-memory-optimization.ts +0 -358
  563. package/dist/src/hooks/use-mobile.ts +0 -125
  564. package/dist/src/hooks/use-optimistic-controls.d.ts +0 -22
  565. package/dist/src/hooks/use-optimistic-controls.ts +0 -92
  566. package/dist/src/hooks/use-optimized-media.d.ts +0 -46
  567. package/dist/src/hooks/use-optimized-media.ts +0 -263
  568. package/dist/src/hooks/use-touch-gestures.d.ts +0 -47
  569. package/dist/src/hooks/use-touch-gestures.ts +0 -417
  570. package/dist/src/hooks/useEnhancedSubtitles.d.ts +0 -39
  571. package/dist/src/hooks/useEnhancedSubtitles.ts +0 -258
  572. package/dist/src/hooks/useKeyboardShortcuts.d.ts +0 -10
  573. package/dist/src/hooks/useKeyboardShortcuts.ts +0 -74
  574. package/dist/src/hooks/useMediaControls.d.ts +0 -9
  575. package/dist/src/hooks/useMediaControls.ts +0 -52
  576. package/dist/src/hooks/useScreenshot.d.ts +0 -4
  577. package/dist/src/hooks/useScreenshot.ts +0 -57
  578. package/dist/src/hooks/useSubtitles.d.ts +0 -8
  579. package/dist/src/hooks/useSubtitles.ts +0 -91
  580. package/dist/src/hooks/useVideoPlayer.d.ts +0 -32
  581. package/dist/src/hooks/useVideoPlayer.ts +0 -232
  582. package/dist/src/icons/components/FullscreenIcon.d.ts +0 -3
  583. package/dist/src/icons/components/FullscreenIcon.tsx +0 -37
  584. package/dist/src/icons/components/SettingsIcon.d.ts +0 -3
  585. package/dist/src/icons/components/SettingsIcon.tsx +0 -38
  586. package/dist/src/icons/components/animated/LoadingIcon.d.ts +0 -3
  587. package/dist/src/icons/components/animated/LoadingIcon.tsx +0 -43
  588. package/dist/src/icons/components/animated/PlayPauseIcon.d.ts +0 -7
  589. package/dist/src/icons/components/animated/PlayPauseIcon.tsx +0 -50
  590. package/dist/src/icons/components/media/PauseIcon.d.ts +0 -3
  591. package/dist/src/icons/components/media/PauseIcon.tsx +0 -39
  592. package/dist/src/icons/components/media/PlayIcon.d.ts +0 -3
  593. package/dist/src/icons/components/media/PlayIcon.tsx +0 -38
  594. package/dist/src/icons/components/volume/VolumeIcon.d.ts +0 -3
  595. package/dist/src/icons/components/volume/VolumeIcon.tsx +0 -39
  596. package/dist/src/icons/components/volume/VolumeOffIcon.d.ts +0 -3
  597. package/dist/src/icons/components/volume/VolumeOffIcon.tsx +0 -39
  598. package/dist/src/icons/index.d.ts +0 -28
  599. package/dist/src/icons/index.ts +0 -56
  600. package/dist/src/icons/provider.d.ts +0 -13
  601. package/dist/src/icons/provider.tsx +0 -64
  602. package/dist/src/icons/types.d.ts +0 -18
  603. package/dist/src/icons/types.ts +0 -40
  604. package/dist/src/index-enhanced.d.ts +0 -13
  605. package/dist/src/index-enhanced.ts +0 -35
  606. package/dist/src/index-legacy.d.ts +0 -81
  607. package/dist/src/index-legacy.ts +0 -327
  608. package/dist/src/index.css +0 -102
  609. package/dist/src/index.d.ts +0 -38
  610. package/dist/src/index.minimal.d.ts +0 -2
  611. package/dist/src/index.minimal.ts +0 -4
  612. package/dist/src/index.ts +0 -216
  613. package/dist/src/lib/deprecation.d.ts +0 -7
  614. package/dist/src/lib/deprecation.ts +0 -51
  615. package/dist/src/lib/format-time.d.ts +0 -9
  616. package/dist/src/lib/format-time.ts +0 -37
  617. package/dist/src/lib/index.d.ts +0 -3
  618. package/dist/src/lib/index.ts +0 -3
  619. package/dist/src/lib/utils.d.ts +0 -3
  620. package/dist/src/lib/utils.ts +0 -6
  621. package/dist/src/styles/globals.css +0 -462
  622. package/dist/src/styles/minimal-player.css +0 -589
  623. package/dist/src/styles/pixel-art.css +0 -46
  624. package/dist/src/styles/videojs.css +0 -100
  625. package/dist/src/test/setup.d.ts +0 -2
  626. package/dist/src/test/setup.ts +0 -79
  627. package/dist/src/types/events.d.ts +0 -41
  628. package/dist/src/types/events.ts +0 -47
  629. package/dist/src/types/formats.d.ts +0 -45
  630. package/dist/src/types/formats.ts +0 -95
  631. package/dist/src/types/index.d.ts +0 -128
  632. package/dist/src/types/index.ts +0 -225
  633. package/dist/src/types/videojs-plugins.d.ts +0 -14
  634. package/dist/styles/globals.css +0 -462
  635. package/dist/styles/minimal-player.css +0 -589
  636. package/dist/styles/pixel-art.css +0 -46
  637. package/dist/styles/videojs.css +0 -100
  638. package/src/adapters/videojs-adapter.d.ts +0 -38
  639. package/src/adapters/videojs-adapter.d.ts.map +0 -1
  640. package/src/components/AnimateLoading.d.ts +0 -9
  641. package/src/components/AnimateLoading.d.ts.map +0 -1
  642. package/src/components/LoadingState.d.ts +0 -33
  643. package/src/components/LoadingState.d.ts.map +0 -1
  644. package/src/components/accessibility/keyboard-help-overlay.d.ts +0 -17
  645. package/src/components/accessibility/keyboard-help-overlay.d.ts.map +0 -1
  646. package/src/components/audio-player.d.ts +0 -3
  647. package/src/components/audio-player.d.ts.map +0 -1
  648. package/src/components/basic/index.d.ts +0 -26
  649. package/src/components/basic/index.d.ts.map +0 -1
  650. package/src/components/enhanced/advanced-features.d.ts +0 -45
  651. package/src/components/enhanced/advanced-features.d.ts.map +0 -1
  652. package/src/components/enhanced/debug-panel.d.ts +0 -70
  653. package/src/components/enhanced/debug-panel.d.ts.map +0 -1
  654. package/src/components/enhanced/enhanced-controls.d.ts +0 -50
  655. package/src/components/enhanced/enhanced-controls.d.ts.map +0 -1
  656. package/src/components/enhanced/enhanced-media-player.d.ts +0 -26
  657. package/src/components/enhanced/enhanced-media-player.d.ts.map +0 -1
  658. package/src/components/enhanced/error-handling.d.ts +0 -36
  659. package/src/components/enhanced/error-handling.d.ts.map +0 -1
  660. package/src/components/enhanced/index.d.ts +0 -7
  661. package/src/components/enhanced/index.d.ts.map +0 -1
  662. package/src/components/enhanced/media-player-enhanced.d.ts +0 -21
  663. package/src/components/enhanced/media-player-enhanced.d.ts.map +0 -1
  664. package/src/components/examples/basic-video-player.d.ts +0 -10
  665. package/src/components/examples/basic-video-player.d.ts.map +0 -1
  666. package/src/components/examples/custom-controls-example.d.ts +0 -10
  667. package/src/components/examples/custom-controls-example.d.ts.map +0 -1
  668. package/src/components/examples/enhanced-controls-example.d.ts +0 -9
  669. package/src/components/examples/enhanced-controls-example.d.ts.map +0 -1
  670. package/src/components/examples/enhanced-media-player-example.d.ts +0 -9
  671. package/src/components/examples/enhanced-media-player-example.d.ts.map +0 -1
  672. package/src/components/examples/loading-states-demo.d.ts +0 -2
  673. package/src/components/examples/loading-states-demo.d.ts.map +0 -1
  674. package/src/components/examples/react-19-demo.d.ts +0 -10
  675. package/src/components/examples/react-19-demo.d.ts.map +0 -1
  676. package/src/components/examples/volume-orientation-demo.d.ts +0 -2
  677. package/src/components/examples/volume-orientation-demo.d.ts.map +0 -1
  678. package/src/components/icon-demo.d.ts +0 -2
  679. package/src/components/icon-demo.d.ts.map +0 -1
  680. package/src/components/icons/index.d.ts +0 -36
  681. package/src/components/icons/index.d.ts.map +0 -1
  682. package/src/components/icons/svg-icons/ArrowLeftIcon.d.ts +0 -4
  683. package/src/components/icons/svg-icons/ArrowLeftIcon.d.ts.map +0 -1
  684. package/src/components/icons/svg-icons/ArrowRightIcon.d.ts +0 -4
  685. package/src/components/icons/svg-icons/ArrowRightIcon.d.ts.map +0 -1
  686. package/src/components/icons/svg-icons/AudioIcon.d.ts +0 -4
  687. package/src/components/icons/svg-icons/AudioIcon.d.ts.map +0 -1
  688. package/src/components/icons/svg-icons/BackwardIcon.d.ts +0 -4
  689. package/src/components/icons/svg-icons/BackwardIcon.d.ts.map +0 -1
  690. package/src/components/icons/svg-icons/CameraIcon.d.ts +0 -4
  691. package/src/components/icons/svg-icons/CameraIcon.d.ts.map +0 -1
  692. package/src/components/icons/svg-icons/CheckIcon.d.ts +0 -4
  693. package/src/components/icons/svg-icons/CheckIcon.d.ts.map +0 -1
  694. package/src/components/icons/svg-icons/EnablePiPIcon.d.ts +0 -4
  695. package/src/components/icons/svg-icons/EnablePiPIcon.d.ts.map +0 -1
  696. package/src/components/icons/svg-icons/ForwardIcon.d.ts +0 -4
  697. package/src/components/icons/svg-icons/ForwardIcon.d.ts.map +0 -1
  698. package/src/components/icons/svg-icons/FullscreenEnterIcon.d.ts +0 -4
  699. package/src/components/icons/svg-icons/FullscreenEnterIcon.d.ts.map +0 -1
  700. package/src/components/icons/svg-icons/FullscreenExitIcon.d.ts +0 -4
  701. package/src/components/icons/svg-icons/FullscreenExitIcon.d.ts.map +0 -1
  702. package/src/components/icons/svg-icons/LoadingIcon.d.ts +0 -4
  703. package/src/components/icons/svg-icons/LoadingIcon.d.ts.map +0 -1
  704. package/src/components/icons/svg-icons/PauseIcon.d.ts +0 -4
  705. package/src/components/icons/svg-icons/PauseIcon.d.ts.map +0 -1
  706. package/src/components/icons/svg-icons/PlayIcon.d.ts +0 -4
  707. package/src/components/icons/svg-icons/PlayIcon.d.ts.map +0 -1
  708. package/src/components/icons/svg-icons/PlaybackSpeedIcon.d.ts +0 -4
  709. package/src/components/icons/svg-icons/PlaybackSpeedIcon.d.ts.map +0 -1
  710. package/src/components/icons/svg-icons/QualityIcon.d.ts +0 -4
  711. package/src/components/icons/svg-icons/QualityIcon.d.ts.map +0 -1
  712. package/src/components/icons/svg-icons/SettingsIcon.d.ts +0 -4
  713. package/src/components/icons/svg-icons/SettingsIcon.d.ts.map +0 -1
  714. package/src/components/icons/svg-icons/SliderIcon.d.ts +0 -4
  715. package/src/components/icons/svg-icons/SliderIcon.d.ts.map +0 -1
  716. package/src/components/icons/svg-icons/SubtitleIcon.d.ts +0 -4
  717. package/src/components/icons/svg-icons/SubtitleIcon.d.ts.map +0 -1
  718. package/src/components/icons/svg-icons/SubtitleOffIcon.d.ts +0 -4
  719. package/src/components/icons/svg-icons/SubtitleOffIcon.d.ts.map +0 -1
  720. package/src/components/icons/svg-icons/UnPiPIcon.d.ts +0 -4
  721. package/src/components/icons/svg-icons/UnPiPIcon.d.ts.map +0 -1
  722. package/src/components/icons/svg-icons/VolumeMutedIcon.d.ts +0 -4
  723. package/src/components/icons/svg-icons/VolumeMutedIcon.d.ts.map +0 -1
  724. package/src/components/icons/svg-icons/VolumeOneIcon.d.ts +0 -4
  725. package/src/components/icons/svg-icons/VolumeOneIcon.d.ts.map +0 -1
  726. package/src/components/icons/svg-icons/VolumeThreeIcon.d.ts +0 -4
  727. package/src/components/icons/svg-icons/VolumeThreeIcon.d.ts.map +0 -1
  728. package/src/components/icons/svg-icons/VolumeTwoIcon.d.ts +0 -4
  729. package/src/components/icons/svg-icons/VolumeTwoIcon.d.ts.map +0 -1
  730. package/src/components/legacy.d.ts +0 -13
  731. package/src/components/legacy.d.ts.map +0 -1
  732. package/src/components/media-metadata-display.d.ts +0 -11
  733. package/src/components/media-metadata-display.d.ts.map +0 -1
  734. package/src/components/media-player-audio.d.ts +0 -9
  735. package/src/components/media-player-audio.d.ts.map +0 -1
  736. package/src/components/media-player-controls.d.ts +0 -23
  737. package/src/components/media-player-controls.d.ts.map +0 -1
  738. package/src/components/media-player-error.d.ts +0 -16
  739. package/src/components/media-player-error.d.ts.map +0 -1
  740. package/src/components/media-player-fullscreen.d.ts +0 -12
  741. package/src/components/media-player-fullscreen.d.ts.map +0 -1
  742. package/src/components/media-player-hls.d.ts +0 -23
  743. package/src/components/media-player-hls.d.ts.map +0 -1
  744. package/src/components/media-player-loading.d.ts +0 -12
  745. package/src/components/media-player-loading.d.ts.map +0 -1
  746. package/src/components/media-player-play.d.ts +0 -11
  747. package/src/components/media-player-play.d.ts.map +0 -1
  748. package/src/components/media-player-root.d.ts +0 -28
  749. package/src/components/media-player-root.d.ts.map +0 -1
  750. package/src/components/media-player-seek.d.ts +0 -15
  751. package/src/components/media-player-seek.d.ts.map +0 -1
  752. package/src/components/media-player-time.d.ts +0 -12
  753. package/src/components/media-player-time.d.ts.map +0 -1
  754. package/src/components/media-player-tooltip.d.ts +0 -13
  755. package/src/components/media-player-tooltip.d.ts.map +0 -1
  756. package/src/components/media-player-video.d.ts +0 -9
  757. package/src/components/media-player-video.d.ts.map +0 -1
  758. package/src/components/media-player-volume.d.ts +0 -13
  759. package/src/components/media-player-volume.d.ts.map +0 -1
  760. package/src/components/media-player.d.ts +0 -3
  761. package/src/components/media-player.d.ts.map +0 -1
  762. package/src/components/media-suspense.d.ts +0 -78
  763. package/src/components/media-suspense.d.ts.map +0 -1
  764. package/src/components/player-settings-form.d.ts +0 -8
  765. package/src/components/player-settings-form.d.ts.map +0 -1
  766. package/src/components/react-player-wrapper.d.ts +0 -64
  767. package/src/components/react-player-wrapper.d.ts.map +0 -1
  768. package/src/components/simple-video-player.d.ts +0 -9
  769. package/src/components/simple-video-player.d.ts.map +0 -1
  770. package/src/components/ui/button.tsx +0 -49
  771. package/src/components/ui/dropdown-menu.tsx +0 -137
  772. package/src/components/ui/enhanced-seek-bar.d.ts +0 -3
  773. package/src/components/ui/enhanced-seek-bar.d.ts.map +0 -1
  774. package/src/components/ui/fullscreen-button.d.ts +0 -3
  775. package/src/components/ui/fullscreen-button.d.ts.map +0 -1
  776. package/src/components/ui/icons.tsx +0 -174
  777. package/src/components/ui/media-resource-preloader.d.ts +0 -21
  778. package/src/components/ui/media-resource-preloader.d.ts.map +0 -1
  779. package/src/components/ui/play-button.d.ts +0 -3
  780. package/src/components/ui/play-button.d.ts.map +0 -1
  781. package/src/components/ui/seek-bar.d.ts +0 -3
  782. package/src/components/ui/seek-bar.d.ts.map +0 -1
  783. package/src/components/ui/slider.tsx +0 -55
  784. package/src/components/ui/time-display.d.ts +0 -3
  785. package/src/components/ui/time-display.d.ts.map +0 -1
  786. package/src/components/ui/tooltip.tsx +0 -131
  787. package/src/components/ui/volume-control.d.ts +0 -3
  788. package/src/components/ui/volume-control.d.ts.map +0 -1
  789. package/src/components/unified/base-media-player.d.ts +0 -18
  790. package/src/components/unified/base-media-player.d.ts.map +0 -1
  791. package/src/components/unified/media-player.d.ts +0 -37
  792. package/src/components/unified/media-player.d.ts.map +0 -1
  793. package/src/components/variants/minimal/AccessibleMinimalPlayer.d.ts +0 -42
  794. package/src/components/variants/minimal/AccessibleMinimalPlayer.d.ts.map +0 -1
  795. package/src/components/variants/minimal/EnhancedMinimalMediaPlayer.d.ts +0 -44
  796. package/src/components/variants/minimal/EnhancedMinimalMediaPlayer.d.ts.map +0 -1
  797. package/src/components/variants/minimal/MinimalControls.d.ts +0 -19
  798. package/src/components/variants/minimal/MinimalControls.d.ts.map +0 -1
  799. package/src/components/variants/minimal/MinimalLoading.d.ts +0 -10
  800. package/src/components/variants/minimal/MinimalLoading.d.ts.map +0 -1
  801. package/src/components/variants/minimal/MinimalMediaPlayer.d.ts +0 -38
  802. package/src/components/variants/minimal/MinimalMediaPlayer.d.ts.map +0 -1
  803. package/src/components/variants/minimal/MinimalOverlay.d.ts +0 -11
  804. package/src/components/variants/minimal/MinimalOverlay.d.ts.map +0 -1
  805. package/src/components/variants/minimal/MinimalPlayButton.d.ts +0 -9
  806. package/src/components/variants/minimal/MinimalPlayButton.d.ts.map +0 -1
  807. package/src/components/variants/minimal/MinimalSeekBar.d.ts +0 -7
  808. package/src/components/variants/minimal/MinimalSeekBar.d.ts.map +0 -1
  809. package/src/components/variants/minimal/MinimalVolumeControl.d.ts +0 -7
  810. package/src/components/variants/minimal/MinimalVolumeControl.d.ts.map +0 -1
  811. package/src/components/variants/minimal/SimpleMinimalPlayer.d.ts +0 -22
  812. package/src/components/variants/minimal/SimpleMinimalPlayer.d.ts.map +0 -1
  813. package/src/components/variants/minimal/components/CenterPlayButton.d.ts +0 -7
  814. package/src/components/variants/minimal/components/CenterPlayButton.d.ts.map +0 -1
  815. package/src/components/variants/minimal/components/ControlBar.d.ts +0 -43
  816. package/src/components/variants/minimal/components/ControlBar.d.ts.map +0 -1
  817. package/src/components/variants/minimal/components/EnhancedSettingsMenu.d.ts +0 -24
  818. package/src/components/variants/minimal/components/EnhancedSettingsMenu.d.ts.map +0 -1
  819. package/src/components/variants/minimal/components/PlaybackControls.d.ts +0 -9
  820. package/src/components/variants/minimal/components/PlaybackControls.d.ts.map +0 -1
  821. package/src/components/variants/minimal/components/RightControls.d.ts +0 -25
  822. package/src/components/variants/minimal/components/RightControls.d.ts.map +0 -1
  823. package/src/components/variants/minimal/components/SeekBar.d.ts +0 -11
  824. package/src/components/variants/minimal/components/SeekBar.d.ts.map +0 -1
  825. package/src/components/variants/minimal/components/SettingsDropdown.d.ts +0 -9
  826. package/src/components/variants/minimal/components/SettingsDropdown.d.ts.map +0 -1
  827. package/src/components/variants/minimal/components/SubtitleDisplay.d.ts +0 -7
  828. package/src/components/variants/minimal/components/SubtitleDisplay.d.ts.map +0 -1
  829. package/src/components/variants/minimal/components/TimeDisplay.d.ts +0 -7
  830. package/src/components/variants/minimal/components/TimeDisplay.d.ts.map +0 -1
  831. package/src/components/variants/minimal/components/VideoElement.d.ts +0 -13
  832. package/src/components/variants/minimal/components/VideoElement.d.ts.map +0 -1
  833. package/src/components/variants/minimal/components/VolumeControl.d.ts +0 -13
  834. package/src/components/variants/minimal/components/VolumeControl.d.ts.map +0 -1
  835. package/src/components/variants/minimal/index.d.ts +0 -17
  836. package/src/components/variants/minimal/index.d.ts.map +0 -1
  837. package/src/components/video-player.d.ts +0 -3
  838. package/src/components/video-player.d.ts.map +0 -1
  839. package/src/context/error-handling.d.ts +0 -72
  840. package/src/context/error-handling.d.ts.map +0 -1
  841. package/src/context/media-context.d.ts +0 -104
  842. package/src/context/media-context.d.ts.map +0 -1
  843. package/src/context/media-provider.d.ts +0 -26
  844. package/src/context/media-provider.d.ts.map +0 -1
  845. package/src/context/media-store.d.ts +0 -33
  846. package/src/context/media-store.d.ts.map +0 -1
  847. package/src/context/persistence.d.ts +0 -83
  848. package/src/context/persistence.d.ts.map +0 -1
  849. package/src/core/events/event-system.d.ts +0 -170
  850. package/src/core/events/event-system.d.ts.map +0 -1
  851. package/src/core/events/hooks.d.ts +0 -33
  852. package/src/core/events/hooks.d.ts.map +0 -1
  853. package/src/core/events/index.d.ts +0 -6
  854. package/src/core/events/index.d.ts.map +0 -1
  855. package/src/core/events/middleware.d.ts +0 -39
  856. package/src/core/events/middleware.d.ts.map +0 -1
  857. package/src/core/index.d.ts +0 -8
  858. package/src/core/index.d.ts.map +0 -1
  859. package/src/core/optimization/bundle-optimizer.d.ts +0 -44
  860. package/src/core/optimization/bundle-optimizer.d.ts.map +0 -1
  861. package/src/core/performance/cicd.d.ts +0 -8
  862. package/src/core/performance/cicd.d.ts.map +0 -1
  863. package/src/core/performance/index.d.ts +0 -10
  864. package/src/core/performance/index.d.ts.map +0 -1
  865. package/src/core/performance/media-loading-optimizer.d.ts +0 -105
  866. package/src/core/performance/media-loading-optimizer.d.ts.map +0 -1
  867. package/src/core/performance/performance-budgets.d.ts +0 -68
  868. package/src/core/performance/performance-budgets.d.ts.map +0 -1
  869. package/src/core/performance/performance-monitor.d.ts +0 -95
  870. package/src/core/performance/performance-monitor.d.ts.map +0 -1
  871. package/src/core/performance/performance-testing.d.ts +0 -69
  872. package/src/core/performance/performance-testing.d.ts.map +0 -1
  873. package/src/core/plugins/base-plugin.d.ts +0 -52
  874. package/src/core/plugins/base-plugin.d.ts.map +0 -1
  875. package/src/core/plugins/enhanced-plugin-system.d.ts +0 -160
  876. package/src/core/plugins/enhanced-plugin-system.d.ts.map +0 -1
  877. package/src/core/plugins/examples/analytics-plugin.d.ts +0 -30
  878. package/src/core/plugins/examples/analytics-plugin.d.ts.map +0 -1
  879. package/src/core/plugins/index.d.ts +0 -8
  880. package/src/core/plugins/index.d.ts.map +0 -1
  881. package/src/core/plugins/registry.d.ts +0 -31
  882. package/src/core/plugins/registry.d.ts.map +0 -1
  883. package/src/core/plugins/types.d.ts +0 -101
  884. package/src/core/plugins/types.d.ts.map +0 -1
  885. package/src/core/plugins/utils.d.ts +0 -38
  886. package/src/core/plugins/utils.d.ts.map +0 -1
  887. package/src/core/progressive-loading.d.ts +0 -88
  888. package/src/core/progressive-loading.d.ts.map +0 -1
  889. package/src/core/providers/enhanced-hls-provider.d.ts +0 -50
  890. package/src/core/providers/enhanced-hls-provider.d.ts.map +0 -1
  891. package/src/core/providers/service-provider.d.ts +0 -49
  892. package/src/core/providers/service-provider.d.ts.map +0 -1
  893. package/src/core/utils.d.ts +0 -25
  894. package/src/core/utils.d.ts.map +0 -1
  895. package/src/features/media-session/media-session-manager.d.ts +0 -132
  896. package/src/features/media-session/media-session-manager.d.ts.map +0 -1
  897. package/src/features/picture-in-picture/pip-manager.d.ts +0 -94
  898. package/src/features/picture-in-picture/pip-manager.d.ts.map +0 -1
  899. package/src/features/playlist/playlist-manager.d.ts +0 -208
  900. package/src/features/playlist/playlist-manager.d.ts.map +0 -1
  901. package/src/features/subtitles/subtitle-manager.d.ts +0 -136
  902. package/src/features/subtitles/subtitle-manager.d.ts.map +0 -1
  903. package/src/features/subtitles/subtitle-parser.d.ts +0 -60
  904. package/src/features/subtitles/subtitle-parser.d.ts.map +0 -1
  905. package/src/features/thumbnails/thumbnail-generator.d.ts +0 -136
  906. package/src/features/thumbnails/thumbnail-generator.d.ts.map +0 -1
  907. package/src/hooks/accessibility/index.d.ts +0 -5
  908. package/src/hooks/accessibility/index.d.ts.map +0 -1
  909. package/src/hooks/accessibility/use-accessibility-preferences.d.ts +0 -14
  910. package/src/hooks/accessibility/use-accessibility-preferences.d.ts.map +0 -1
  911. package/src/hooks/accessibility/use-focus-management.d.ts +0 -31
  912. package/src/hooks/accessibility/use-focus-management.d.ts.map +0 -1
  913. package/src/hooks/accessibility/use-keyboard-shortcuts.d.ts +0 -38
  914. package/src/hooks/accessibility/use-keyboard-shortcuts.d.ts.map +0 -1
  915. package/src/hooks/accessibility/use-screen-reader.d.ts +0 -22
  916. package/src/hooks/accessibility/use-screen-reader.d.ts.map +0 -1
  917. package/src/hooks/core/index.d.ts +0 -18
  918. package/src/hooks/core/index.d.ts.map +0 -1
  919. package/src/hooks/legacy.d.ts +0 -18
  920. package/src/hooks/legacy.d.ts.map +0 -1
  921. package/src/hooks/use-enhanced-media-player.d.ts +0 -88
  922. package/src/hooks/use-enhanced-media-player.d.ts.map +0 -1
  923. package/src/hooks/use-intelligent-preloading.d.ts +0 -66
  924. package/src/hooks/use-intelligent-preloading.d.ts.map +0 -1
  925. package/src/hooks/use-keyboard-controls.d.ts +0 -13
  926. package/src/hooks/use-keyboard-controls.d.ts.map +0 -1
  927. package/src/hooks/use-media-actions.d.ts +0 -62
  928. package/src/hooks/use-media-actions.d.ts.map +0 -1
  929. package/src/hooks/use-media-metadata.d.ts +0 -11
  930. package/src/hooks/use-media-metadata.d.ts.map +0 -1
  931. package/src/hooks/use-media-optimistic.d.ts +0 -36
  932. package/src/hooks/use-media-optimistic.d.ts.map +0 -1
  933. package/src/hooks/use-media-player.d.ts +0 -31
  934. package/src/hooks/use-media-player.d.ts.map +0 -1
  935. package/src/hooks/use-media-state.d.ts +0 -17
  936. package/src/hooks/use-media-state.d.ts.map +0 -1
  937. package/src/hooks/use-memory-optimization.d.ts +0 -40
  938. package/src/hooks/use-memory-optimization.d.ts.map +0 -1
  939. package/src/hooks/use-mobile.ts +0 -125
  940. package/src/hooks/use-optimistic-controls.d.ts +0 -22
  941. package/src/hooks/use-optimistic-controls.d.ts.map +0 -1
  942. package/src/hooks/use-optimized-media.d.ts +0 -46
  943. package/src/hooks/use-optimized-media.d.ts.map +0 -1
  944. package/src/hooks/use-touch-gestures.d.ts +0 -47
  945. package/src/hooks/use-touch-gestures.d.ts.map +0 -1
  946. package/src/hooks/useEnhancedSubtitles.d.ts +0 -39
  947. package/src/hooks/useEnhancedSubtitles.d.ts.map +0 -1
  948. package/src/hooks/useKeyboardShortcuts.d.ts +0 -10
  949. package/src/hooks/useKeyboardShortcuts.d.ts.map +0 -1
  950. package/src/hooks/useMediaControls.d.ts +0 -9
  951. package/src/hooks/useMediaControls.d.ts.map +0 -1
  952. package/src/hooks/useScreenshot.d.ts +0 -4
  953. package/src/hooks/useScreenshot.d.ts.map +0 -1
  954. package/src/hooks/useSubtitles.d.ts +0 -8
  955. package/src/hooks/useSubtitles.d.ts.map +0 -1
  956. package/src/hooks/useVideoPlayer.d.ts +0 -32
  957. package/src/hooks/useVideoPlayer.d.ts.map +0 -1
  958. package/src/icons/components/FullscreenIcon.d.ts +0 -3
  959. package/src/icons/components/FullscreenIcon.d.ts.map +0 -1
  960. package/src/icons/components/SettingsIcon.d.ts +0 -3
  961. package/src/icons/components/SettingsIcon.d.ts.map +0 -1
  962. package/src/icons/components/animated/LoadingIcon.d.ts +0 -3
  963. package/src/icons/components/animated/LoadingIcon.d.ts.map +0 -1
  964. package/src/icons/components/animated/PlayPauseIcon.d.ts +0 -7
  965. package/src/icons/components/animated/PlayPauseIcon.d.ts.map +0 -1
  966. package/src/icons/components/media/PauseIcon.d.ts +0 -3
  967. package/src/icons/components/media/PauseIcon.d.ts.map +0 -1
  968. package/src/icons/components/media/PlayIcon.d.ts +0 -3
  969. package/src/icons/components/media/PlayIcon.d.ts.map +0 -1
  970. package/src/icons/components/volume/VolumeIcon.d.ts +0 -3
  971. package/src/icons/components/volume/VolumeIcon.d.ts.map +0 -1
  972. package/src/icons/components/volume/VolumeOffIcon.d.ts +0 -3
  973. package/src/icons/components/volume/VolumeOffIcon.d.ts.map +0 -1
  974. package/src/icons/index.d.ts +0 -28
  975. package/src/icons/index.d.ts.map +0 -1
  976. package/src/icons/provider.d.ts +0 -13
  977. package/src/icons/provider.d.ts.map +0 -1
  978. package/src/icons/types.d.ts +0 -18
  979. package/src/icons/types.d.ts.map +0 -1
  980. package/src/index-enhanced.d.ts +0 -13
  981. package/src/index-enhanced.d.ts.map +0 -1
  982. package/src/index-legacy.d.ts +0 -81
  983. package/src/index-legacy.d.ts.map +0 -1
  984. package/src/index.d.ts +0 -38
  985. package/src/index.d.ts.map +0 -1
  986. package/src/index.minimal.d.ts +0 -2
  987. package/src/index.minimal.d.ts.map +0 -1
  988. package/src/index.minimal.ts +0 -4
  989. package/src/lib/deprecation.d.ts +0 -7
  990. package/src/lib/deprecation.d.ts.map +0 -1
  991. package/src/lib/format-time.d.ts +0 -9
  992. package/src/lib/format-time.d.ts.map +0 -1
  993. package/src/lib/index.d.ts +0 -3
  994. package/src/lib/index.d.ts.map +0 -1
  995. package/src/lib/utils.d.ts +0 -3
  996. package/src/lib/utils.d.ts.map +0 -1
  997. package/src/test/setup.d.ts +0 -2
  998. package/src/test/setup.d.ts.map +0 -1
  999. package/src/types/events.d.ts +0 -41
  1000. package/src/types/events.d.ts.map +0 -1
  1001. package/src/types/formats.d.ts +0 -45
  1002. package/src/types/formats.d.ts.map +0 -1
  1003. package/src/types/index.d.ts +0 -128
  1004. package/src/types/index.d.ts.map +0 -1
@@ -1,518 +1,544 @@
1
1
  "use client"
2
2
 
3
3
  import React, { useCallback, useEffect, useRef, useState } from "react"
4
+ import {
5
+ createMediaKeyboardShortcuts,
6
+ useAccessibilityStyles,
7
+ useFocusVisible,
8
+ useKeyboardShortcuts,
9
+ useMediaPlayerFocus,
10
+ useMediaScreenReader
11
+ } from "../../../hooks/accessibility"
12
+ import { cn } from "../../../lib/utils"
13
+ import { KeyboardHelpOverlay } from "../../accessibility/keyboard-help-overlay"
14
+ import type { IconSet } from "../../icons"
15
+ import { defaultMinimalIcons } from "../../icons"
4
16
  import { MediaPlayerRoot } from "../../media-player-root"
5
17
  import { MediaPlayerVideo } from "../../media-player-video"
6
18
  import { MinimalControls } from "./MinimalControls"
7
- import { MinimalOverlay } from "./MinimalOverlay"
8
19
  import { MinimalLoading } from "./MinimalLoading"
9
- import { cn } from "../../../lib/utils"
10
- import type { IconSet } from "../../icons"
11
- import { defaultMinimalIcons } from "../../icons"
12
- import {
13
- useKeyboardShortcuts,
14
- createMediaKeyboardShortcuts,
15
- useMediaPlayerFocus,
16
- useMediaScreenReader,
17
- useAccessibilityStyles,
18
- useFocusVisible
19
- } from '../../../hooks/accessibility'
20
- import { KeyboardHelpOverlay } from '../../accessibility/keyboard-help-overlay'
20
+ import { MinimalOverlay } from "./MinimalOverlay"
21
+
22
+ /**
23
+ * Safely sets currentTime on a video element, ensuring the value is finite
24
+ */
25
+ function safeSetCurrentTime(video: HTMLVideoElement, time: number): boolean {
26
+ if (!Number.isFinite(time)) {
27
+ console.warn(`Attempted to set non-finite currentTime: ${time}`)
28
+ return false
29
+ }
30
+
31
+ if (time < 0) {
32
+ console.warn(`Attempted to set negative currentTime: ${time}`)
33
+ return false
34
+ }
35
+
36
+ try {
37
+ video.currentTime = time
38
+ return true
39
+ } catch (error) {
40
+ console.error(`Failed to set currentTime to ${time}:`, error)
41
+ return false
42
+ }
43
+ }
21
44
 
22
45
  export interface AccessibleMinimalPlayerProps {
23
- src: string | string[]
24
- poster?: string
25
- autoPlay?: boolean
26
- muted?: boolean
27
- loop?: boolean
28
- autoHideControls?: boolean
29
- hideDelay?: number
30
- theme?: "dark" | "light" | "transparent"
31
- customIcons?: IconSet
32
- showCenterPlayButton?: boolean
33
- showLoadingSpinner?: boolean
34
- className?: string
35
- onPlay?: () => void
36
- onPause?: () => void
37
- onEnded?: () => void
38
- onTimeUpdate?: (currentTime: number) => void
39
- onVolumeChange?: (volume: number) => void
40
- onSeek?: (time: number) => void
41
- onError?: (error: Error) => void
42
- watermark?: {
43
- src: string
44
- position?: "top-left" | "top-right" | "bottom-left" | "bottom-right"
45
- opacity?: number
46
- size?: "small" | "medium" | "large"
47
- }
48
- qualities?: Array<{
49
- src: string
50
- quality: string
51
- default?: boolean
52
- }>
53
- showQualitySelector?: boolean
54
- showSpeedControl?: boolean
55
- thumbnails?: string
56
- // Accessibility props
57
- enableKeyboardShortcuts?: boolean
58
- showKeyboardHelpButton?: boolean
59
- ariaLabel?: string
60
- ariaDescribedBy?: string
46
+ src: string | string[]
47
+ poster?: string
48
+ autoPlay?: boolean
49
+ muted?: boolean
50
+ loop?: boolean
51
+ autoHideControls?: boolean
52
+ hideDelay?: number
53
+ theme?: "dark" | "light" | "transparent"
54
+ customIcons?: IconSet
55
+ showCenterPlayButton?: boolean
56
+ showLoadingSpinner?: boolean
57
+ className?: string
58
+ onPlay?: () => void
59
+ onPause?: () => void
60
+ onEnded?: () => void
61
+ onTimeUpdate?: (currentTime: number) => void
62
+ onVolumeChange?: (volume: number) => void
63
+ onSeek?: (time: number) => void
64
+ onError?: (error: Error) => void
65
+ watermark?: {
66
+ src: string
67
+ position?: "top-left" | "top-right" | "bottom-left" | "bottom-right"
68
+ opacity?: number
69
+ size?: "small" | "medium" | "large"
70
+ }
71
+ qualities?: Array<{
72
+ src: string
73
+ quality: string
74
+ default?: boolean
75
+ }>
76
+ showQualitySelector?: boolean
77
+ showSpeedControl?: boolean
78
+ thumbnails?: string
79
+ // Accessibility props
80
+ enableKeyboardShortcuts?: boolean
81
+ showKeyboardHelpButton?: boolean
82
+ ariaLabel?: string
83
+ ariaDescribedBy?: string
61
84
  }
62
85
 
63
86
  export function AccessibleMinimalPlayer({
64
- src,
65
- poster,
66
- autoPlay = false,
67
- muted = false,
68
- loop = false,
69
- autoHideControls = true,
70
- hideDelay = 2500,
71
- theme = "dark",
72
- customIcons,
73
- showCenterPlayButton = true,
74
- showLoadingSpinner = true,
75
- className,
76
- onPlay,
77
- onPause,
78
- onEnded,
79
- onTimeUpdate,
80
- onVolumeChange,
81
- onSeek,
82
- onError,
83
- watermark,
84
- qualities,
85
- showQualitySelector = false,
86
- showSpeedControl = false,
87
- thumbnails,
88
- enableKeyboardShortcuts = true,
89
- showKeyboardHelpButton = true,
90
- ariaLabel = "Media player",
91
- ariaDescribedBy,
87
+ src,
88
+ poster,
89
+ autoPlay = false,
90
+ muted = false,
91
+ loop = false,
92
+ autoHideControls = true,
93
+ hideDelay = 2500,
94
+ theme = "dark",
95
+ customIcons,
96
+ showCenterPlayButton = true,
97
+ showLoadingSpinner = true,
98
+ className,
99
+ onPlay,
100
+ onPause,
101
+ onEnded,
102
+ onTimeUpdate,
103
+ onVolumeChange,
104
+ onSeek,
105
+ onError,
106
+ watermark,
107
+ qualities,
108
+ showQualitySelector = false,
109
+ showSpeedControl = false,
110
+ thumbnails,
111
+ enableKeyboardShortcuts = true,
112
+ showKeyboardHelpButton = true,
113
+ ariaLabel = "Media player",
114
+ ariaDescribedBy
92
115
  }: AccessibleMinimalPlayerProps) {
93
- // Existing state
94
- const [controlsVisible, setControlsVisible] = useState(true)
95
- const [isPlaying, setIsPlaying] = useState(false)
96
- const [isLoading, setIsLoading] = useState(false)
97
- const [error, setError] = useState<string | null>(null)
98
- const [volume, setVolume] = useState(1)
99
- const [isMuted, setIsMuted] = useState(muted)
100
- const [currentTime, setCurrentTime] = useState(0)
101
- const [duration, setDuration] = useState(0)
102
- const [isFullscreen, setIsFullscreen] = useState(false)
103
-
104
- // Accessibility state
105
- const [showKeyboardHelp, setShowKeyboardHelp] = useState(false)
106
-
107
- // Refs
108
- const hideTimeoutRef = useRef<NodeJS.Timeout | null>(null)
109
- const containerRef = useRef<HTMLDivElement | null>(null)
110
- const videoRef = useRef<HTMLVideoElement | null>(null)
111
- const [isHovered, setIsHovered] = useState(false)
112
- const [userInteracting, setUserInteracting] = useState(false)
113
-
114
- // Accessibility hooks
115
- const { applyStyles, preferences } = useAccessibilityStyles()
116
- const focusManager = useMediaPlayerFocus()
117
- const screenReader = useMediaScreenReader()
118
- const isFocusVisible = useFocusVisible()
119
-
120
- // Merge default icons with custom icons
121
- const icons = { ...defaultMinimalIcons, ...customIcons }
122
-
123
- // Media control functions
124
- const togglePlayPause = useCallback(() => {
125
- if (!videoRef.current) return
126
-
127
- if (isPlaying) {
128
- videoRef.current.pause()
129
- } else {
130
- videoRef.current.play()
131
- }
132
- }, [isPlaying])
133
-
134
- const seekForward = useCallback((seconds = 10) => {
135
- if (!videoRef.current) return
136
-
137
- const newTime = Math.min(videoRef.current.currentTime + seconds, duration)
138
- videoRef.current.currentTime = newTime
139
- screenReader.announceTime(newTime, duration)
140
- }, [duration, screenReader])
141
-
142
- const seekBackward = useCallback((seconds = 10) => {
143
- if (!videoRef.current) return
144
-
145
- const newTime = Math.max(videoRef.current.currentTime - seconds, 0)
146
- videoRef.current.currentTime = newTime
147
- screenReader.announceTime(newTime, duration)
148
- }, [duration, screenReader])
149
-
150
- const volumeUp = useCallback(() => {
151
- if (!videoRef.current) return
152
-
153
- const newVolume = Math.min(volume + 0.1, 1)
154
- setVolume(newVolume)
155
- videoRef.current.volume = newVolume
156
- if (isMuted) {
157
- setIsMuted(false)
158
- videoRef.current.muted = false
159
- }
160
- screenReader.announceVolume(newVolume, false)
161
- }, [volume, isMuted, screenReader])
162
-
163
- const volumeDown = useCallback(() => {
164
- if (!videoRef.current) return
165
-
166
- const newVolume = Math.max(volume - 0.1, 0)
167
- setVolume(newVolume)
168
- videoRef.current.volume = newVolume
169
- if (isMuted) {
170
- setIsMuted(false)
171
- videoRef.current.muted = false
172
- }
173
- screenReader.announceVolume(newVolume, false)
174
- }, [volume, isMuted, screenReader])
175
-
176
- const toggleMute = useCallback(() => {
177
- if (!videoRef.current) return
178
-
179
- const newMuted = !isMuted
180
- setIsMuted(newMuted)
181
- videoRef.current.muted = newMuted
182
- screenReader.announceVolume(volume, newMuted)
183
- }, [isMuted, volume, screenReader])
184
-
185
- const toggleFullscreen = useCallback(async () => {
186
- if (!containerRef.current) return
187
-
188
- try {
189
- if (!isFullscreen) {
190
- if (containerRef.current.requestFullscreen) {
191
- await containerRef.current.requestFullscreen()
192
- }
193
- } else {
194
- if (document.exitFullscreen) {
195
- await document.exitFullscreen()
196
- }
197
- }
198
- } catch (error) {
199
- console.error('Fullscreen toggle failed:', error)
200
- }
201
- }, [isFullscreen])
202
-
203
- const showHelp = useCallback(() => {
204
- setShowKeyboardHelp(true)
205
- }, [])
206
-
207
- // Create keyboard shortcuts
208
- const keyboardShortcuts = createMediaKeyboardShortcuts({
209
- play: () => videoRef.current?.play(),
210
- pause: () => videoRef.current?.pause(),
211
- togglePlayPause,
212
- seekForward,
213
- seekBackward,
214
- volumeUp,
215
- volumeDown,
216
- toggleMute,
217
- toggleFullscreen,
218
- showHelp: showKeyboardHelpButton ? showHelp : undefined
219
- })
220
-
221
- // Enable keyboard shortcuts
222
- const { shortcuts } = useKeyboardShortcuts({
223
- shortcuts: enableKeyboardShortcuts ? keyboardShortcuts : [],
224
- enabled: enableKeyboardShortcuts,
225
- target: containerRef.current
226
- })
227
-
228
- // Auto-hide controls logic
229
- const resetHideTimer = useCallback(() => {
230
- if (!autoHideControls) return
231
-
232
- if (hideTimeoutRef.current) {
233
- clearTimeout(hideTimeoutRef.current)
234
- }
235
- setControlsVisible(true)
236
-
237
- if (!userInteracting && isPlaying && !preferences.prefersReducedMotion) {
238
- hideTimeoutRef.current = setTimeout(() => {
239
- setControlsVisible(false)
240
- }, hideDelay)
241
- }
242
- }, [autoHideControls, userInteracting, isPlaying, hideDelay, preferences.prefersReducedMotion])
243
-
244
- // Handle mouse movement
245
- const handleMouseMove = useCallback(() => {
246
- resetHideTimer()
247
- }, [resetHideTimer])
248
-
249
- // Handle mouse enter/leave
250
- const handleMouseEnter = useCallback(() => {
251
- setIsHovered(true)
252
- setControlsVisible(true)
253
- if (hideTimeoutRef.current) {
254
- clearTimeout(hideTimeoutRef.current)
255
- }
256
- }, [])
257
-
258
- const handleMouseLeave = useCallback(() => {
259
- setIsHovered(false)
260
- if (isPlaying && autoHideControls && !userInteracting) {
261
- hideTimeoutRef.current = setTimeout(() => {
262
- setControlsVisible(false)
263
- }, 500)
264
- }
265
- }, [isPlaying, autoHideControls, userInteracting])
266
-
267
- // Handle user interaction
268
- const handleUserInteractionStart = useCallback(() => {
269
- setUserInteracting(true)
270
- setControlsVisible(true)
271
- if (hideTimeoutRef.current) {
272
- clearTimeout(hideTimeoutRef.current)
273
- }
274
- }, [])
275
-
276
- const handleUserInteractionEnd = useCallback(() => {
277
- setUserInteracting(false)
278
- resetHideTimer()
279
- }, [resetHideTimer])
280
-
281
- // Video event handlers
282
- const handlePlayStateChange = useCallback((playing: boolean) => {
283
- setIsPlaying(playing)
284
- screenReader.announcePlaybackState(playing)
285
-
286
- if (playing) {
287
- onPlay?.()
288
- resetHideTimer()
289
- } else {
290
- onPause?.()
291
- setControlsVisible(true)
292
- if (hideTimeoutRef.current) {
293
- clearTimeout(hideTimeoutRef.current)
294
- }
295
- }
296
- }, [onPlay, onPause, resetHideTimer, screenReader])
297
-
298
- const handleTimeUpdate = useCallback((time: number) => {
299
- setCurrentTime(time)
300
- onTimeUpdate?.(time)
301
- }, [onTimeUpdate])
302
-
303
- const handleLoadedMetadata = useCallback((event: React.SyntheticEvent<HTMLVideoElement>) => {
304
- const video = event.currentTarget
305
- setDuration(video.duration)
306
- setIsLoading(false)
307
- }, [])
308
-
309
- const handleLoadStart = useCallback(() => {
310
- setIsLoading(true)
311
- setError(null)
312
- screenReader.announceLoading(true)
313
- }, [screenReader])
314
-
315
- const handleLoadedData = useCallback(() => {
316
- setIsLoading(false)
317
- screenReader.announceLoading(false)
318
- }, [screenReader])
319
-
320
- const handleError = useCallback((e: Error) => {
321
- setIsLoading(false)
322
- setError(e.message || "An error occurred")
323
- screenReader.announceError(e.message || "An error occurred")
324
- onError?.(e)
325
- }, [onError, screenReader])
326
-
327
- const handleVolumeChange = useCallback((event: React.SyntheticEvent<HTMLVideoElement>) => {
328
- const video = event.currentTarget
329
- const newVolume = video.volume
330
- const newMuted = video.muted
331
-
332
- setVolume(newVolume)
333
- setIsMuted(newMuted)
334
- onVolumeChange?.(newVolume)
335
- }, [onVolumeChange])
336
-
337
- // Fullscreen change handler
338
- useEffect(() => {
339
- const handleFullscreenChange = () => {
340
- const isCurrentlyFullscreen = !!document.fullscreenElement
341
- setIsFullscreen(isCurrentlyFullscreen)
342
- screenReader.announceFullscreen(isCurrentlyFullscreen)
343
- }
344
-
345
- document.addEventListener('fullscreenchange', handleFullscreenChange)
346
- return () => {
347
- document.removeEventListener('fullscreenchange', handleFullscreenChange)
348
- }
349
- }, [screenReader])
350
-
351
- // Cleanup on unmount
352
- useEffect(() => {
353
- return () => {
354
- if (hideTimeoutRef.current) {
355
- clearTimeout(hideTimeoutRef.current)
356
- }
357
- }
358
- }, [])
359
-
360
- // Determine video source
361
- const videoSrc = qualities && qualities.length > 0
362
- ? qualities.find(q => q.default)?.src || qualities[0]?.src || (typeof src === 'string' ? src : src[0])
363
- : (typeof src === 'string' ? src : src[0])
364
-
365
- return (
366
- <>
367
- <div
368
- ref={containerRef}
369
- className={cn(
370
- "accessible-minimal-player theme-minimal relative overflow-hidden rounded-lg bg-black",
371
- `theme-minimal-${theme}`,
372
- isFocusVisible && "focus-visible-enabled",
373
- className
374
- )}
375
- data-theme={theme}
376
- onMouseMove={handleMouseMove}
377
- onMouseEnter={handleMouseEnter}
378
- onMouseLeave={handleMouseLeave}
379
- role="application"
380
- aria-label={ariaLabel}
381
- aria-describedby={ariaDescribedBy}
382
- tabIndex={0}
383
- data-testid="media-player"
384
- >
385
- <MediaPlayerRoot
386
- className="relative h-full w-full"
387
- ref={focusManager.containerRef}
388
- >
389
- <MediaPlayerVideo
390
- ref={videoRef}
391
- src={videoSrc}
392
- poster={poster}
393
- autoPlay={autoPlay}
394
- muted={muted}
395
- loop={loop}
396
- onPlay={() => handlePlayStateChange(true)}
397
- onPause={() => handlePlayStateChange(false)}
398
- onEnded={onEnded}
399
- onTimeUpdate={(e) => handleTimeUpdate(e.currentTarget.currentTime)}
400
- onLoadStart={handleLoadStart}
401
- onLoadedData={handleLoadedData}
402
- onLoadedMetadata={handleLoadedMetadata}
403
- onError={(e) => handleError(new Error('Video loading failed'))}
404
- onVolumeChange={handleVolumeChange}
405
- className="h-full w-full object-contain"
406
- aria-hidden="true"
407
- />
408
-
409
- {watermark && (
410
- <div
411
- className={cn(
412
- "pointer-events-none absolute z-10",
413
- {
414
- "top-4 left-4": watermark.position === "top-left",
415
- "top-4 right-4": watermark.position === "top-right",
416
- "bottom-4 left-4": watermark.position === "bottom-left",
417
- "right-4 bottom-4": watermark.position === "bottom-right",
418
- }
419
- )}
420
- style={{ opacity: watermark.opacity || 0.7 }}
421
- aria-hidden="true"
422
- >
423
- <img
424
- src={watermark.src}
425
- alt=""
426
- className={cn(
427
- "h-auto",
428
- {
429
- "w-12": watermark.size === "small",
430
- "w-16": watermark.size === "medium",
431
- "w-24": watermark.size === "large",
432
- }
433
- )}
434
- />
435
- </div>
436
- )}
437
-
438
- <MinimalOverlay
439
- isVisible={showCenterPlayButton && (!isPlaying || isLoading)}
440
- icons={icons}
441
- onPlay={togglePlayPause}
442
- isLoading={isLoading}
443
- showLoadingSpinner={showLoadingSpinner}
444
- error={error}
445
- theme={theme}
446
- />
447
-
448
- <MinimalControls
449
- isVisible={controlsVisible || !autoHideControls || isHovered}
450
- isPlaying={isPlaying}
451
- volume={volume}
452
- isMuted={isMuted}
453
- currentTime={currentTime}
454
- duration={duration}
455
- isFullscreen={isFullscreen}
456
- icons={icons}
457
- theme={theme}
458
- qualities={qualities}
459
- showQualitySelector={showQualitySelector}
460
- showSpeedControl={showSpeedControl}
461
- thumbnails={thumbnails}
462
- onPlayPause={togglePlayPause}
463
- onVolumeChange={(vol) => {
464
- setVolume(vol)
465
- if (videoRef.current) {
466
- videoRef.current.volume = vol
467
- }
468
- }}
469
- onMuteToggle={toggleMute}
470
- onSeek={(time) => {
471
- if (videoRef.current) {
472
- videoRef.current.currentTime = time
473
- onSeek?.(time)
474
- }
475
- }}
476
- onFullscreenToggle={toggleFullscreen}
477
- onUserInteractionStart={handleUserInteractionStart}
478
- onUserInteractionEnd={handleUserInteractionEnd}
479
- showKeyboardHelpButton={showKeyboardHelpButton}
480
- onShowKeyboardHelp={showHelp}
481
- />
482
-
483
- {showLoadingSpinner && (
484
- <MinimalLoading
485
- isVisible={isLoading}
486
- theme={theme}
487
- />
488
- )}
489
- </MediaPlayerRoot>
490
- </div>
491
-
492
- {/* Keyboard Help Overlay */}
493
- <KeyboardHelpOverlay
494
- isOpen={showKeyboardHelp}
495
- onClose={() => setShowKeyboardHelp(false)}
496
- shortcuts={shortcuts}
497
- />
498
-
499
- {/* Screen reader only status region */}
500
- <div
501
- id={`${ariaDescribedBy || 'media-player'}-status`}
502
- className="sr-only"
503
- aria-live="polite"
504
- aria-atomic="true"
505
- >
506
- {isLoading && "Loading media"}
507
- {error && `Error: ${error}`}
508
- {!isLoading && !error && (isPlaying ? "Playing" : "Paused")}
509
- </div>
510
-
511
- <style jsx global>{`
116
+ // Existing state
117
+ const [controlsVisible, setControlsVisible] = useState(true)
118
+ const [isPlaying, setIsPlaying] = useState(false)
119
+ const [isLoading, setIsLoading] = useState(false)
120
+ const [error, setError] = useState<string | null>(null)
121
+ const [volume, setVolume] = useState(1)
122
+ const [isMuted, setIsMuted] = useState(muted)
123
+ const [currentTime, setCurrentTime] = useState(0)
124
+ const [duration, setDuration] = useState(0)
125
+ const [isFullscreen, setIsFullscreen] = useState(false)
126
+
127
+ // Accessibility state
128
+ const [showKeyboardHelp, setShowKeyboardHelp] = useState(false)
129
+
130
+ // Refs
131
+ const hideTimeoutRef = useRef<NodeJS.Timeout | null>(null)
132
+ const containerRef = useRef<HTMLDivElement | null>(null)
133
+ const videoRef = useRef<HTMLVideoElement | null>(null)
134
+ const [isHovered, setIsHovered] = useState(false)
135
+ const [userInteracting, setUserInteracting] = useState(false)
136
+
137
+ // Accessibility hooks
138
+ const { applyStyles, preferences } = useAccessibilityStyles()
139
+ const focusManager = useMediaPlayerFocus()
140
+ const screenReader = useMediaScreenReader()
141
+ const isFocusVisible = useFocusVisible()
142
+
143
+ // Merge default icons with custom icons
144
+ const icons = { ...defaultMinimalIcons, ...customIcons }
145
+
146
+ // Media control functions
147
+ const togglePlayPause = useCallback(() => {
148
+ if (!videoRef.current) return
149
+
150
+ if (isPlaying) {
151
+ videoRef.current.pause()
152
+ } else {
153
+ videoRef.current.play()
154
+ }
155
+ }, [isPlaying])
156
+
157
+ const seekForward = useCallback(
158
+ (seconds = 10) => {
159
+ if (!videoRef.current) return
160
+
161
+ const validDuration = Number.isFinite(duration) && duration > 0 ? duration : Number.isFinite(videoRef.current.duration) ? videoRef.current.duration : 0
162
+ if (validDuration === 0) {
163
+ console.warn("Cannot seek forward: duration is not available")
164
+ return
165
+ }
166
+
167
+ const currentTime = Number.isFinite(videoRef.current.currentTime) ? videoRef.current.currentTime : 0
168
+ const newTime = Math.min(currentTime + seconds, validDuration)
169
+ if (safeSetCurrentTime(videoRef.current, newTime)) {
170
+ screenReader.announceTime(newTime, validDuration)
171
+ }
172
+ },
173
+ [duration, screenReader]
174
+ )
175
+
176
+ const seekBackward = useCallback(
177
+ (seconds = 10) => {
178
+ if (!videoRef.current) return
179
+
180
+ const currentTime = Number.isFinite(videoRef.current.currentTime) ? videoRef.current.currentTime : 0
181
+ const newTime = Math.max(currentTime - seconds, 0)
182
+ if (safeSetCurrentTime(videoRef.current, newTime)) {
183
+ screenReader.announceTime(newTime, duration)
184
+ }
185
+ },
186
+ [duration, screenReader]
187
+ )
188
+
189
+ const volumeUp = useCallback(() => {
190
+ if (!videoRef.current) return
191
+
192
+ const newVolume = Math.min(volume + 0.1, 1)
193
+ setVolume(newVolume)
194
+ videoRef.current.volume = newVolume
195
+ if (isMuted) {
196
+ setIsMuted(false)
197
+ videoRef.current.muted = false
198
+ }
199
+ screenReader.announceVolume(newVolume, false)
200
+ }, [volume, isMuted, screenReader])
201
+
202
+ const volumeDown = useCallback(() => {
203
+ if (!videoRef.current) return
204
+
205
+ const newVolume = Math.max(volume - 0.1, 0)
206
+ setVolume(newVolume)
207
+ videoRef.current.volume = newVolume
208
+ if (isMuted) {
209
+ setIsMuted(false)
210
+ videoRef.current.muted = false
211
+ }
212
+ screenReader.announceVolume(newVolume, false)
213
+ }, [volume, isMuted, screenReader])
214
+
215
+ const toggleMute = useCallback(() => {
216
+ if (!videoRef.current) return
217
+
218
+ const newMuted = !isMuted
219
+ setIsMuted(newMuted)
220
+ videoRef.current.muted = newMuted
221
+ screenReader.announceVolume(volume, newMuted)
222
+ }, [isMuted, volume, screenReader])
223
+
224
+ const toggleFullscreen = useCallback(async () => {
225
+ if (!containerRef.current) return
226
+
227
+ try {
228
+ if (!isFullscreen) {
229
+ if (containerRef.current.requestFullscreen) {
230
+ await containerRef.current.requestFullscreen()
231
+ }
232
+ } else {
233
+ if (document.exitFullscreen) {
234
+ await document.exitFullscreen()
235
+ }
236
+ }
237
+ } catch (error) {
238
+ console.error("Fullscreen toggle failed:", error)
239
+ }
240
+ }, [isFullscreen])
241
+
242
+ const showHelp = useCallback(() => {
243
+ setShowKeyboardHelp(true)
244
+ }, [])
245
+
246
+ // Create keyboard shortcuts
247
+ const keyboardShortcuts = createMediaKeyboardShortcuts({
248
+ play: () => videoRef.current?.play(),
249
+ pause: () => videoRef.current?.pause(),
250
+ togglePlayPause,
251
+ seekForward,
252
+ seekBackward,
253
+ volumeUp,
254
+ volumeDown,
255
+ toggleMute,
256
+ toggleFullscreen,
257
+ showHelp: showKeyboardHelpButton ? showHelp : undefined
258
+ })
259
+
260
+ // Enable keyboard shortcuts
261
+ const { shortcuts } = useKeyboardShortcuts({
262
+ shortcuts: enableKeyboardShortcuts ? keyboardShortcuts : [],
263
+ enabled: enableKeyboardShortcuts,
264
+ target: containerRef.current
265
+ })
266
+
267
+ // Auto-hide controls logic
268
+ const resetHideTimer = useCallback(() => {
269
+ if (!autoHideControls) return
270
+
271
+ if (hideTimeoutRef.current) {
272
+ clearTimeout(hideTimeoutRef.current)
273
+ }
274
+ setControlsVisible(true)
275
+
276
+ if (!userInteracting && isPlaying && !preferences.prefersReducedMotion) {
277
+ hideTimeoutRef.current = setTimeout(() => {
278
+ setControlsVisible(false)
279
+ }, hideDelay)
280
+ }
281
+ }, [autoHideControls, userInteracting, isPlaying, hideDelay, preferences.prefersReducedMotion])
282
+
283
+ // Handle mouse movement
284
+ const handleMouseMove = useCallback(() => {
285
+ resetHideTimer()
286
+ }, [resetHideTimer])
287
+
288
+ // Handle mouse enter/leave
289
+ const handleMouseEnter = useCallback(() => {
290
+ setIsHovered(true)
291
+ setControlsVisible(true)
292
+ if (hideTimeoutRef.current) {
293
+ clearTimeout(hideTimeoutRef.current)
294
+ }
295
+ }, [])
296
+
297
+ const handleMouseLeave = useCallback(() => {
298
+ setIsHovered(false)
299
+ if (isPlaying && autoHideControls && !userInteracting) {
300
+ hideTimeoutRef.current = setTimeout(() => {
301
+ setControlsVisible(false)
302
+ }, 500)
303
+ }
304
+ }, [isPlaying, autoHideControls, userInteracting])
305
+
306
+ // Handle user interaction
307
+ const handleUserInteractionStart = useCallback(() => {
308
+ setUserInteracting(true)
309
+ setControlsVisible(true)
310
+ if (hideTimeoutRef.current) {
311
+ clearTimeout(hideTimeoutRef.current)
312
+ }
313
+ }, [])
314
+
315
+ const handleUserInteractionEnd = useCallback(() => {
316
+ setUserInteracting(false)
317
+ resetHideTimer()
318
+ }, [resetHideTimer])
319
+
320
+ // Video event handlers
321
+ const handlePlayStateChange = useCallback(
322
+ (playing: boolean) => {
323
+ setIsPlaying(playing)
324
+ screenReader.announcePlaybackState(playing)
325
+
326
+ if (playing) {
327
+ onPlay?.()
328
+ resetHideTimer()
329
+ } else {
330
+ onPause?.()
331
+ setControlsVisible(true)
332
+ if (hideTimeoutRef.current) {
333
+ clearTimeout(hideTimeoutRef.current)
334
+ }
335
+ }
336
+ },
337
+ [onPlay, onPause, resetHideTimer, screenReader]
338
+ )
339
+
340
+ const handleTimeUpdate = useCallback(
341
+ (time: number) => {
342
+ setCurrentTime(time)
343
+ onTimeUpdate?.(time)
344
+ },
345
+ [onTimeUpdate]
346
+ )
347
+
348
+ const handleLoadedMetadata = useCallback((event: React.SyntheticEvent<HTMLVideoElement>) => {
349
+ const video = event.currentTarget
350
+ setDuration(video.duration)
351
+ setIsLoading(false)
352
+ }, [])
353
+
354
+ const handleLoadStart = useCallback(() => {
355
+ setIsLoading(true)
356
+ setError(null)
357
+ screenReader.announceLoading(true)
358
+ }, [screenReader])
359
+
360
+ const handleLoadedData = useCallback(() => {
361
+ setIsLoading(false)
362
+ screenReader.announceLoading(false)
363
+ }, [screenReader])
364
+
365
+ const handleError = useCallback(
366
+ (e: Error) => {
367
+ setIsLoading(false)
368
+ setError(e.message || "An error occurred")
369
+ screenReader.announceError(e.message || "An error occurred")
370
+ onError?.(e)
371
+ },
372
+ [onError, screenReader]
373
+ )
374
+
375
+ const handleVolumeChange = useCallback(
376
+ (event: React.SyntheticEvent<HTMLVideoElement>) => {
377
+ const video = event.currentTarget
378
+ const newVolume = video.volume
379
+ const newMuted = video.muted
380
+
381
+ setVolume(newVolume)
382
+ setIsMuted(newMuted)
383
+ onVolumeChange?.(newVolume)
384
+ },
385
+ [onVolumeChange]
386
+ )
387
+
388
+ // Fullscreen change handler
389
+ useEffect(() => {
390
+ const handleFullscreenChange = () => {
391
+ const isCurrentlyFullscreen = !!document.fullscreenElement
392
+ setIsFullscreen(isCurrentlyFullscreen)
393
+ screenReader.announceFullscreen(isCurrentlyFullscreen)
394
+ }
395
+
396
+ document.addEventListener("fullscreenchange", handleFullscreenChange)
397
+ return () => {
398
+ document.removeEventListener("fullscreenchange", handleFullscreenChange)
399
+ }
400
+ }, [screenReader])
401
+
402
+ // Cleanup on unmount
403
+ useEffect(() => {
404
+ return () => {
405
+ if (hideTimeoutRef.current) {
406
+ clearTimeout(hideTimeoutRef.current)
407
+ }
408
+ }
409
+ }, [])
410
+
411
+ // Determine video source
412
+ const videoSrc =
413
+ qualities && qualities.length > 0
414
+ ? qualities.find((q) => q.default)?.src ||
415
+ qualities[0]?.src ||
416
+ (typeof src === "string" ? src : src[0])
417
+ : typeof src === "string"
418
+ ? src
419
+ : src[0]
420
+
421
+ return (
422
+ <>
423
+ <div
424
+ ref={containerRef}
425
+ className={cn(
426
+ "accessible-minimal-player theme-minimal relative overflow-hidden rounded-lg bg-black",
427
+ `theme-minimal-${theme}`,
428
+ isFocusVisible && "focus-visible-enabled",
429
+ className
430
+ )}
431
+ data-theme={theme}
432
+ onMouseMove={handleMouseMove}
433
+ onMouseEnter={handleMouseEnter}
434
+ onMouseLeave={handleMouseLeave}
435
+ role="application"
436
+ aria-label={ariaLabel}
437
+ aria-describedby={ariaDescribedBy}
438
+ tabIndex={0}
439
+ data-testid="media-player">
440
+ <MediaPlayerRoot className="relative h-full w-full">
441
+ <MediaPlayerVideo
442
+ src={videoSrc}
443
+ poster={poster}
444
+ autoPlay={autoPlay}
445
+ muted={muted}
446
+ loop={loop}
447
+ onPlay={() => handlePlayStateChange(true)}
448
+ onPause={() => handlePlayStateChange(false)}
449
+ onEnded={onEnded}
450
+ onTimeUpdate={(e) => handleTimeUpdate(e.currentTarget.currentTime)}
451
+ onLoadStart={handleLoadStart}
452
+ onLoadedData={handleLoadedData}
453
+ onLoadedMetadata={handleLoadedMetadata}
454
+ onError={(e) => handleError(new Error("Video loading failed"))}
455
+ onVolumeChange={handleVolumeChange}
456
+ className="h-full w-full object-contain"
457
+ aria-hidden="true"
458
+ />
459
+
460
+ {watermark && (
461
+ <div
462
+ className={cn("pointer-events-none absolute z-10", {
463
+ "top-4 left-4": watermark.position === "top-left",
464
+ "top-4 right-4": watermark.position === "top-right",
465
+ "bottom-4 left-4": watermark.position === "bottom-left",
466
+ "right-4 bottom-4": watermark.position === "bottom-right"
467
+ })}
468
+ style={{ opacity: watermark.opacity || 0.7 }}
469
+ aria-hidden="true">
470
+ <img
471
+ src={watermark.src}
472
+ alt=""
473
+ className={cn("h-auto", {
474
+ "w-12": watermark.size === "small",
475
+ "w-16": watermark.size === "medium",
476
+ "w-24": watermark.size === "large"
477
+ })}
478
+ />
479
+ </div>
480
+ )}
481
+
482
+ <MinimalOverlay
483
+ visible={showCenterPlayButton && (!isPlaying || isLoading)}
484
+ showCenterButton={showCenterPlayButton}
485
+ isPlaying={isPlaying}
486
+ icons={icons}
487
+ onPlayPause={togglePlayPause}
488
+ />
489
+
490
+ <MinimalControls
491
+ visible={controlsVisible || !autoHideControls || isHovered}
492
+ isPlaying={isPlaying}
493
+ icons={icons}
494
+ qualities={qualities}
495
+ showQualitySelector={showQualitySelector}
496
+ showSpeedControl={showSpeedControl}
497
+ thumbnails={thumbnails}
498
+ onUserInteractionStart={handleUserInteractionStart}
499
+ onUserInteractionEnd={handleUserInteractionEnd}
500
+ onSeek={(time) => {
501
+ if (videoRef.current) {
502
+ const validDuration = Number.isFinite(duration) && duration > 0 ? duration : Number.isFinite(videoRef.current.duration) ? videoRef.current.duration : 0
503
+ if (validDuration === 0) {
504
+ console.warn("Cannot seek: duration is not available")
505
+ return
506
+ }
507
+ const clampedTime = Math.max(0, Math.min(time, validDuration))
508
+ if (safeSetCurrentTime(videoRef.current, clampedTime)) {
509
+ onSeek?.(clampedTime)
510
+ }
511
+ }
512
+ }}
513
+ />
514
+
515
+ {showLoadingSpinner && isLoading && <MinimalLoading />}
516
+ </MediaPlayerRoot>
517
+ </div>
518
+
519
+ {/* Keyboard Help Overlay */}
520
+ <KeyboardHelpOverlay
521
+ isOpen={showKeyboardHelp}
522
+ onClose={() => setShowKeyboardHelp(false)}
523
+ shortcuts={shortcuts}
524
+ />
525
+
526
+ {/* Screen reader only status region */}
527
+ <div
528
+ id={`${ariaDescribedBy || "media-player"}-status`}
529
+ className="sr-only"
530
+ aria-live="polite"
531
+ aria-atomic="true">
532
+ {isLoading && "Loading media"}
533
+ {error && `Error: ${error}`}
534
+ {!isLoading && !error && (isPlaying ? "Playing" : "Paused")}
535
+ </div>
536
+
537
+ <style suppressHydrationWarning>{`
512
538
  .accessible-minimal-player {
513
539
  /* Accessibility-specific styles */
514
540
  --media-focus-outline: var(--media-focus-outline-width, 2px) solid #3b82f6;
515
- --media-transition: ${preferences.prefersReducedMotion ? 'none' : 'var(--media-transition-duration, 200ms)'};
541
+ --media-transition: ${preferences.prefersReducedMotion ? "none" : "var(--media-transition-duration, 200ms)"};
516
542
  }
517
543
 
518
544
  .accessible-minimal-player:focus-visible {
@@ -556,6 +582,6 @@ export function AccessibleMinimalPlayer({
556
582
  border: 0;
557
583
  }
558
584
  `}</style>
559
- </>
560
- )
561
- }
585
+ </>
586
+ )
587
+ }