@therealtinhtute/baroiplayer 1.0.8 → 1.1.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 (1003) 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-CROGvQUy.js +686 -0
  20. package/dist/core-plugins-CROGvQUy.js.map +1 -0
  21. package/dist/core-plugins-DtsHBOtF.cjs +2 -0
  22. package/dist/core-plugins-DtsHBOtF.cjs.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-DUw2KrmQ.js +1142 -0
  28. package/dist/enhanced-components-DUw2KrmQ.js.map +1 -0
  29. package/dist/enhanced-components-DXBCHU0v.cjs +2 -0
  30. package/dist/enhanced-components-DXBCHU0v.cjs.map +1 -0
  31. package/dist/hooks-BW-JjVgP.cjs +4 -0
  32. package/dist/hooks-BW-JjVgP.cjs.map +1 -0
  33. package/dist/hooks-CyX6De5M.js +1693 -0
  34. package/dist/hooks-CyX6De5M.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 +6275 -16
  39. package/dist/index.mjs.map +1 -0
  40. package/dist/minimal-components-Bdcpxav5.cjs +2 -0
  41. package/dist/minimal-components-Bdcpxav5.cjs.map +1 -0
  42. package/dist/minimal-components-DlRK7Qu_.js +1927 -0
  43. package/dist/minimal-components-DlRK7Qu_.js.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 +199 -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 +228 -214
  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 +8 -14
  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 +28 -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 +75 -56
  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 +265 -198
  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 +45 -51
  134. package/src/components/unified/media-player.tsx +3 -3
  135. package/src/components/variants/minimal/AccessibleMinimalPlayer.tsx +508 -502
  136. package/src/components/variants/minimal/EnhancedMinimalMediaPlayer.tsx +108 -87
  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 +65 -60
  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 +136 -136
  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 +315 -323
  181. package/src/core/plugins/types.ts +97 -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 +118 -90
  185. package/src/core/providers/lazy-provider.tsx +51 -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 +406 -402
  189. package/src/features/picture-in-picture/pip-manager.ts +364 -365
  190. package/src/features/playlist/playlist-manager.ts +597 -585
  191. package/src/features/subtitles/subtitle-manager.ts +424 -430
  192. package/src/features/subtitles/subtitle-parser.ts +274 -273
  193. package/src/features/thumbnails/thumbnail-generator.ts +504 -502
  194. package/src/hooks/__tests__/use-media-player.test.ts +712 -0
  195. package/src/hooks/__tests__/use-media-state.test.tsx +316 -0
  196. package/src/hooks/accessibility/index.ts +20 -20
  197. package/src/hooks/accessibility/use-accessibility-preferences.ts +177 -175
  198. package/src/hooks/accessibility/use-focus-management.ts +170 -163
  199. package/src/hooks/accessibility/use-keyboard-shortcuts.ts +132 -124
  200. package/src/hooks/accessibility/use-screen-reader.ts +191 -161
  201. package/src/hooks/core/index.ts +30 -30
  202. package/src/hooks/legacy.ts +3 -9
  203. package/src/hooks/use-buffer-health.ts +218 -0
  204. package/src/hooks/use-enhanced-media-player.ts +74 -82
  205. package/src/hooks/use-focus-trap.tsx +162 -0
  206. package/src/hooks/use-intelligent-preloading.ts +236 -232
  207. package/src/hooks/use-keyboard-controls.ts +80 -80
  208. package/src/hooks/use-keyboard-shortcuts.ts +255 -0
  209. package/src/hooks/use-media-actions.ts +81 -72
  210. package/src/hooks/use-media-metadata.ts +75 -73
  211. package/src/hooks/use-media-optimistic.ts +145 -151
  212. package/src/hooks/use-media-player.ts +109 -107
  213. package/src/hooks/use-media-state.ts +63 -59
  214. package/src/hooks/use-memory-optimization.ts +119 -117
  215. package/src/hooks/use-network-status.ts +124 -0
  216. package/src/hooks/use-optimistic-controls.ts +91 -88
  217. package/src/hooks/use-optimized-media.ts +76 -56
  218. package/src/hooks/use-smart-preload.ts +230 -0
  219. package/src/hooks/use-touch-gestures.ts +427 -383
  220. package/src/hooks/useEnhancedSubtitles.ts +245 -245
  221. package/src/hooks/useKeyboardShortcuts.ts +52 -52
  222. package/src/hooks/useMediaControls.ts +22 -22
  223. package/src/hooks/useScreenshot.ts +51 -47
  224. package/src/hooks/useSubtitles.ts +53 -53
  225. package/src/hooks/useVideoPlayer.ts +61 -61
  226. package/src/icons/components/FullscreenIcon.tsx +34 -35
  227. package/src/icons/components/SettingsIcon.tsx +35 -36
  228. package/src/icons/components/animated/LoadingIcon.tsx +25 -41
  229. package/src/icons/components/animated/PlayPauseIcon.tsx +38 -46
  230. package/src/icons/components/media/PauseIcon.tsx +36 -37
  231. package/src/icons/components/media/PlayIcon.tsx +35 -36
  232. package/src/icons/components/volume/VolumeIcon.tsx +36 -37
  233. package/src/icons/components/volume/VolumeOffIcon.tsx +36 -37
  234. package/src/icons/index.ts +38 -38
  235. package/src/icons/provider.tsx +40 -46
  236. package/src/icons/types.ts +51 -31
  237. package/src/index-enhanced.ts +10 -10
  238. package/src/index-legacy.ts +3 -4
  239. package/src/index.css +80 -80
  240. package/src/index.ts +8 -23
  241. package/src/lib/__tests__/async-utils.test.ts +291 -0
  242. package/src/lib/async-utils.ts +194 -0
  243. package/src/lib/deprecation.ts +4 -4
  244. package/src/lib/index.ts +3 -2
  245. package/src/lib/utils.ts +3 -3
  246. package/src/styles/globals.css +3 -3
  247. package/src/styles/minimal-player.css +606 -574
  248. package/src/styles/pixel-art.css +23 -28
  249. package/src/styles/videojs.css +43 -43
  250. package/src/test/accessibility-utils.ts +208 -0
  251. package/src/test/browser-simulation.ts +235 -0
  252. package/src/test/media-mocks.ts +156 -0
  253. package/src/test/performance-utils.ts +192 -0
  254. package/src/test/setup.ts +241 -44
  255. package/src/types/events.ts +30 -30
  256. package/src/types/formats.ts +56 -72
  257. package/src/types/index.ts +5 -40
  258. package/src/types/videojs-plugins.d.ts +6 -6
  259. package/dist/index.d.ts +0 -1425
  260. package/dist/package.json +0 -62
  261. package/dist/src/adapters/videojs-adapter.d.ts +0 -38
  262. package/dist/src/adapters/videojs-adapter.tsx +0 -470
  263. package/dist/src/components/AnimateLoading.d.ts +0 -9
  264. package/dist/src/components/AnimateLoading.tsx +0 -115
  265. package/dist/src/components/LoadingState.d.ts +0 -33
  266. package/dist/src/components/LoadingState.tsx +0 -248
  267. package/dist/src/components/accessibility/keyboard-help-overlay.d.ts +0 -17
  268. package/dist/src/components/accessibility/keyboard-help-overlay.tsx +0 -213
  269. package/dist/src/components/audio-player.d.ts +0 -3
  270. package/dist/src/components/audio-player.tsx +0 -85
  271. package/dist/src/components/basic/index.d.ts +0 -26
  272. package/dist/src/components/basic/index.ts +0 -37
  273. package/dist/src/components/enhanced/advanced-features.d.ts +0 -45
  274. package/dist/src/components/enhanced/advanced-features.tsx +0 -316
  275. package/dist/src/components/enhanced/debug-panel.d.ts +0 -70
  276. package/dist/src/components/enhanced/debug-panel.tsx +0 -422
  277. package/dist/src/components/enhanced/enhanced-controls.d.ts +0 -50
  278. package/dist/src/components/enhanced/enhanced-controls.tsx +0 -600
  279. package/dist/src/components/enhanced/enhanced-media-player.d.ts +0 -26
  280. package/dist/src/components/enhanced/enhanced-media-player.tsx +0 -509
  281. package/dist/src/components/enhanced/error-handling.d.ts +0 -36
  282. package/dist/src/components/enhanced/error-handling.tsx +0 -345
  283. package/dist/src/components/enhanced/index.d.ts +0 -7
  284. package/dist/src/components/enhanced/index.ts +0 -39
  285. package/dist/src/components/enhanced/media-player-enhanced.d.ts +0 -21
  286. package/dist/src/components/enhanced/media-player-enhanced.tsx +0 -349
  287. package/dist/src/components/examples/basic-video-player.d.ts +0 -10
  288. package/dist/src/components/examples/basic-video-player.tsx +0 -55
  289. package/dist/src/components/examples/custom-controls-example.d.ts +0 -10
  290. package/dist/src/components/examples/custom-controls-example.tsx +0 -63
  291. package/dist/src/components/examples/enhanced-controls-example.d.ts +0 -9
  292. package/dist/src/components/examples/enhanced-controls-example.tsx +0 -114
  293. package/dist/src/components/examples/enhanced-media-player-example.d.ts +0 -9
  294. package/dist/src/components/examples/enhanced-media-player-example.tsx +0 -293
  295. package/dist/src/components/examples/loading-states-demo.d.ts +0 -2
  296. package/dist/src/components/examples/loading-states-demo.tsx +0 -142
  297. package/dist/src/components/examples/react-19-demo.d.ts +0 -10
  298. package/dist/src/components/examples/react-19-demo.tsx +0 -381
  299. package/dist/src/components/examples/volume-orientation-demo.d.ts +0 -2
  300. package/dist/src/components/examples/volume-orientation-demo.tsx +0 -114
  301. package/dist/src/components/icon-demo.d.ts +0 -2
  302. package/dist/src/components/icon-demo.tsx +0 -209
  303. package/dist/src/components/icons/index.d.ts +0 -36
  304. package/dist/src/components/icons/index.tsx +0 -166
  305. package/dist/src/components/icons/svg-icons/ArrowLeftIcon.d.ts +0 -4
  306. package/dist/src/components/icons/svg-icons/ArrowLeftIcon.tsx +0 -18
  307. package/dist/src/components/icons/svg-icons/ArrowRightIcon.d.ts +0 -4
  308. package/dist/src/components/icons/svg-icons/ArrowRightIcon.tsx +0 -18
  309. package/dist/src/components/icons/svg-icons/AudioIcon.d.ts +0 -4
  310. package/dist/src/components/icons/svg-icons/AudioIcon.tsx +0 -22
  311. package/dist/src/components/icons/svg-icons/BackwardIcon.d.ts +0 -4
  312. package/dist/src/components/icons/svg-icons/BackwardIcon.tsx +0 -12
  313. package/dist/src/components/icons/svg-icons/CameraIcon.d.ts +0 -4
  314. package/dist/src/components/icons/svg-icons/CameraIcon.tsx +0 -19
  315. package/dist/src/components/icons/svg-icons/CheckIcon.d.ts +0 -4
  316. package/dist/src/components/icons/svg-icons/CheckIcon.tsx +0 -19
  317. package/dist/src/components/icons/svg-icons/EnablePiPIcon.d.ts +0 -4
  318. package/dist/src/components/icons/svg-icons/EnablePiPIcon.tsx +0 -17
  319. package/dist/src/components/icons/svg-icons/ForwardIcon.d.ts +0 -4
  320. package/dist/src/components/icons/svg-icons/ForwardIcon.tsx +0 -12
  321. package/dist/src/components/icons/svg-icons/FullscreenEnterIcon.d.ts +0 -4
  322. package/dist/src/components/icons/svg-icons/FullscreenEnterIcon.tsx +0 -23
  323. package/dist/src/components/icons/svg-icons/FullscreenExitIcon.d.ts +0 -4
  324. package/dist/src/components/icons/svg-icons/FullscreenExitIcon.tsx +0 -23
  325. package/dist/src/components/icons/svg-icons/LoadingIcon.d.ts +0 -4
  326. package/dist/src/components/icons/svg-icons/LoadingIcon.tsx +0 -32
  327. package/dist/src/components/icons/svg-icons/PauseIcon.d.ts +0 -4
  328. package/dist/src/components/icons/svg-icons/PauseIcon.tsx +0 -23
  329. package/dist/src/components/icons/svg-icons/PlayIcon.d.ts +0 -4
  330. package/dist/src/components/icons/svg-icons/PlayIcon.tsx +0 -21
  331. package/dist/src/components/icons/svg-icons/PlaybackSpeedIcon.d.ts +0 -4
  332. package/dist/src/components/icons/svg-icons/PlaybackSpeedIcon.tsx +0 -23
  333. package/dist/src/components/icons/svg-icons/QualityIcon.d.ts +0 -4
  334. package/dist/src/components/icons/svg-icons/QualityIcon.tsx +0 -21
  335. package/dist/src/components/icons/svg-icons/SettingsIcon.d.ts +0 -4
  336. package/dist/src/components/icons/svg-icons/SettingsIcon.tsx +0 -12
  337. package/dist/src/components/icons/svg-icons/SliderIcon.d.ts +0 -4
  338. package/dist/src/components/icons/svg-icons/SliderIcon.tsx +0 -21
  339. package/dist/src/components/icons/svg-icons/SubtitleIcon.d.ts +0 -4
  340. package/dist/src/components/icons/svg-icons/SubtitleIcon.tsx +0 -21
  341. package/dist/src/components/icons/svg-icons/SubtitleOffIcon.d.ts +0 -4
  342. package/dist/src/components/icons/svg-icons/SubtitleOffIcon.tsx +0 -25
  343. package/dist/src/components/icons/svg-icons/UnPiPIcon.d.ts +0 -4
  344. package/dist/src/components/icons/svg-icons/UnPiPIcon.tsx +0 -17
  345. package/dist/src/components/icons/svg-icons/VolumeMutedIcon.d.ts +0 -4
  346. package/dist/src/components/icons/svg-icons/VolumeMutedIcon.tsx +0 -16
  347. package/dist/src/components/icons/svg-icons/VolumeOneIcon.d.ts +0 -4
  348. package/dist/src/components/icons/svg-icons/VolumeOneIcon.tsx +0 -22
  349. package/dist/src/components/icons/svg-icons/VolumeThreeIcon.d.ts +0 -4
  350. package/dist/src/components/icons/svg-icons/VolumeThreeIcon.tsx +0 -16
  351. package/dist/src/components/icons/svg-icons/VolumeTwoIcon.d.ts +0 -4
  352. package/dist/src/components/icons/svg-icons/VolumeTwoIcon.tsx +0 -16
  353. package/dist/src/components/legacy.d.ts +0 -13
  354. package/dist/src/components/legacy.tsx +0 -93
  355. package/dist/src/components/media-metadata-display.d.ts +0 -11
  356. package/dist/src/components/media-metadata-display.tsx +0 -100
  357. package/dist/src/components/media-player-audio.d.ts +0 -9
  358. package/dist/src/components/media-player-audio.tsx +0 -39
  359. package/dist/src/components/media-player-controls.d.ts +0 -23
  360. package/dist/src/components/media-player-controls.tsx +0 -226
  361. package/dist/src/components/media-player-error.d.ts +0 -16
  362. package/dist/src/components/media-player-error.tsx +0 -163
  363. package/dist/src/components/media-player-fullscreen.d.ts +0 -12
  364. package/dist/src/components/media-player-fullscreen.tsx +0 -109
  365. package/dist/src/components/media-player-hls.d.ts +0 -23
  366. package/dist/src/components/media-player-hls.tsx +0 -111
  367. package/dist/src/components/media-player-loading.d.ts +0 -12
  368. package/dist/src/components/media-player-loading.tsx +0 -76
  369. package/dist/src/components/media-player-play.d.ts +0 -11
  370. package/dist/src/components/media-player-play.tsx +0 -75
  371. package/dist/src/components/media-player-root.d.ts +0 -28
  372. package/dist/src/components/media-player-root.tsx +0 -340
  373. package/dist/src/components/media-player-seek.d.ts +0 -15
  374. package/dist/src/components/media-player-seek.tsx +0 -168
  375. package/dist/src/components/media-player-time.d.ts +0 -12
  376. package/dist/src/components/media-player-time.tsx +0 -99
  377. package/dist/src/components/media-player-tooltip.d.ts +0 -13
  378. package/dist/src/components/media-player-tooltip.tsx +0 -58
  379. package/dist/src/components/media-player-video.d.ts +0 -9
  380. package/dist/src/components/media-player-video.tsx +0 -39
  381. package/dist/src/components/media-player-volume.d.ts +0 -13
  382. package/dist/src/components/media-player-volume.tsx +0 -155
  383. package/dist/src/components/media-player.d.ts +0 -3
  384. package/dist/src/components/media-player.tsx +0 -257
  385. package/dist/src/components/media-suspense.d.ts +0 -78
  386. package/dist/src/components/media-suspense.tsx +0 -362
  387. package/dist/src/components/player-settings-form.d.ts +0 -8
  388. package/dist/src/components/player-settings-form.tsx +0 -163
  389. package/dist/src/components/react-player-wrapper.d.ts +0 -64
  390. package/dist/src/components/react-player-wrapper.tsx +0 -651
  391. package/dist/src/components/simple-video-player.d.ts +0 -9
  392. package/dist/src/components/simple-video-player.tsx +0 -60
  393. package/dist/src/components/ui/button.tsx +0 -49
  394. package/dist/src/components/ui/dropdown-menu.tsx +0 -137
  395. package/dist/src/components/ui/enhanced-seek-bar.d.ts +0 -3
  396. package/dist/src/components/ui/enhanced-seek-bar.tsx +0 -235
  397. package/dist/src/components/ui/fullscreen-button.d.ts +0 -3
  398. package/dist/src/components/ui/fullscreen-button.tsx +0 -60
  399. package/dist/src/components/ui/icons.tsx +0 -174
  400. package/dist/src/components/ui/media-resource-preloader.d.ts +0 -21
  401. package/dist/src/components/ui/media-resource-preloader.tsx +0 -393
  402. package/dist/src/components/ui/play-button.d.ts +0 -3
  403. package/dist/src/components/ui/play-button.tsx +0 -107
  404. package/dist/src/components/ui/seek-bar.d.ts +0 -3
  405. package/dist/src/components/ui/seek-bar.tsx +0 -161
  406. package/dist/src/components/ui/slider.tsx +0 -55
  407. package/dist/src/components/ui/time-display.d.ts +0 -3
  408. package/dist/src/components/ui/time-display.tsx +0 -40
  409. package/dist/src/components/ui/tooltip.tsx +0 -131
  410. package/dist/src/components/ui/volume-control.d.ts +0 -3
  411. package/dist/src/components/ui/volume-control.tsx +0 -143
  412. package/dist/src/components/unified/base-media-player.d.ts +0 -18
  413. package/dist/src/components/unified/base-media-player.tsx +0 -246
  414. package/dist/src/components/unified/media-player.d.ts +0 -37
  415. package/dist/src/components/unified/media-player.tsx +0 -75
  416. package/dist/src/components/variants/minimal/AccessibleMinimalPlayer.d.ts +0 -42
  417. package/dist/src/components/variants/minimal/AccessibleMinimalPlayer.tsx +0 -561
  418. package/dist/src/components/variants/minimal/EnhancedMinimalMediaPlayer.d.ts +0 -44
  419. package/dist/src/components/variants/minimal/EnhancedMinimalMediaPlayer.tsx +0 -552
  420. package/dist/src/components/variants/minimal/MinimalControls.d.ts +0 -19
  421. package/dist/src/components/variants/minimal/MinimalControls.tsx +0 -142
  422. package/dist/src/components/variants/minimal/MinimalLoading.d.ts +0 -10
  423. package/dist/src/components/variants/minimal/MinimalLoading.tsx +0 -32
  424. package/dist/src/components/variants/minimal/MinimalMediaPlayer.d.ts +0 -38
  425. package/dist/src/components/variants/minimal/MinimalMediaPlayer.tsx +0 -315
  426. package/dist/src/components/variants/minimal/MinimalOverlay.d.ts +0 -11
  427. package/dist/src/components/variants/minimal/MinimalOverlay.tsx +0 -64
  428. package/dist/src/components/variants/minimal/MinimalPlayButton.d.ts +0 -9
  429. package/dist/src/components/variants/minimal/MinimalPlayButton.tsx +0 -65
  430. package/dist/src/components/variants/minimal/MinimalSeekBar.d.ts +0 -7
  431. package/dist/src/components/variants/minimal/MinimalSeekBar.tsx +0 -150
  432. package/dist/src/components/variants/minimal/MinimalVolumeControl.d.ts +0 -7
  433. package/dist/src/components/variants/minimal/MinimalVolumeControl.tsx +0 -80
  434. package/dist/src/components/variants/minimal/SimpleMinimalPlayer.d.ts +0 -22
  435. package/dist/src/components/variants/minimal/SimpleMinimalPlayer.tsx +0 -209
  436. package/dist/src/components/variants/minimal/components/CenterPlayButton.d.ts +0 -7
  437. package/dist/src/components/variants/minimal/components/CenterPlayButton.tsx +0 -22
  438. package/dist/src/components/variants/minimal/components/ControlBar.d.ts +0 -43
  439. package/dist/src/components/variants/minimal/components/ControlBar.tsx +0 -146
  440. package/dist/src/components/variants/minimal/components/EnhancedSettingsMenu.d.ts +0 -24
  441. package/dist/src/components/variants/minimal/components/EnhancedSettingsMenu.tsx +0 -361
  442. package/dist/src/components/variants/minimal/components/PlaybackControls.d.ts +0 -9
  443. package/dist/src/components/variants/minimal/components/PlaybackControls.tsx +0 -51
  444. package/dist/src/components/variants/minimal/components/RightControls.d.ts +0 -25
  445. package/dist/src/components/variants/minimal/components/RightControls.tsx +0 -173
  446. package/dist/src/components/variants/minimal/components/SeekBar.d.ts +0 -11
  447. package/dist/src/components/variants/minimal/components/SeekBar.tsx +0 -131
  448. package/dist/src/components/variants/minimal/components/SettingsDropdown.d.ts +0 -9
  449. package/dist/src/components/variants/minimal/components/SettingsDropdown.tsx +0 -70
  450. package/dist/src/components/variants/minimal/components/SubtitleDisplay.d.ts +0 -7
  451. package/dist/src/components/variants/minimal/components/SubtitleDisplay.tsx +0 -21
  452. package/dist/src/components/variants/minimal/components/TimeDisplay.d.ts +0 -7
  453. package/dist/src/components/variants/minimal/components/TimeDisplay.tsx +0 -18
  454. package/dist/src/components/variants/minimal/components/VideoElement.d.ts +0 -13
  455. package/dist/src/components/variants/minimal/components/VideoElement.tsx +0 -40
  456. package/dist/src/components/variants/minimal/components/VolumeControl.d.ts +0 -13
  457. package/dist/src/components/variants/minimal/components/VolumeControl.tsx +0 -217
  458. package/dist/src/components/variants/minimal/index.d.ts +0 -17
  459. package/dist/src/components/variants/minimal/index.ts +0 -23
  460. package/dist/src/components/video-player.d.ts +0 -3
  461. package/dist/src/components/video-player.tsx +0 -100
  462. package/dist/src/context/error-handling.d.ts +0 -72
  463. package/dist/src/context/error-handling.ts +0 -394
  464. package/dist/src/context/media-context.d.ts +0 -104
  465. package/dist/src/context/media-context.tsx +0 -208
  466. package/dist/src/context/media-provider.d.ts +0 -26
  467. package/dist/src/context/media-provider.tsx +0 -265
  468. package/dist/src/context/media-store.d.ts +0 -33
  469. package/dist/src/context/media-store.ts +0 -379
  470. package/dist/src/context/persistence.d.ts +0 -83
  471. package/dist/src/context/persistence.ts +0 -453
  472. package/dist/src/core/events/event-system.d.ts +0 -170
  473. package/dist/src/core/events/event-system.ts +0 -442
  474. package/dist/src/core/events/hooks.d.ts +0 -33
  475. package/dist/src/core/events/hooks.ts +0 -302
  476. package/dist/src/core/events/index.d.ts +0 -6
  477. package/dist/src/core/events/index.ts +0 -22
  478. package/dist/src/core/events/middleware.d.ts +0 -39
  479. package/dist/src/core/events/middleware.ts +0 -269
  480. package/dist/src/core/index.d.ts +0 -8
  481. package/dist/src/core/index.ts +0 -22
  482. package/dist/src/core/optimization/bundle-optimizer.d.ts +0 -44
  483. package/dist/src/core/optimization/bundle-optimizer.tsx +0 -308
  484. package/dist/src/core/performance/cicd.d.ts +0 -8
  485. package/dist/src/core/performance/cicd.ts +0 -96
  486. package/dist/src/core/performance/index.d.ts +0 -10
  487. package/dist/src/core/performance/index.ts +0 -38
  488. package/dist/src/core/performance/media-loading-optimizer.d.ts +0 -105
  489. package/dist/src/core/performance/media-loading-optimizer.ts +0 -538
  490. package/dist/src/core/performance/performance-budgets.d.ts +0 -68
  491. package/dist/src/core/performance/performance-budgets.ts +0 -432
  492. package/dist/src/core/performance/performance-monitor.d.ts +0 -95
  493. package/dist/src/core/performance/performance-monitor.tsx +0 -476
  494. package/dist/src/core/performance/performance-testing.d.ts +0 -69
  495. package/dist/src/core/performance/performance-testing.ts +0 -459
  496. package/dist/src/core/plugins/base-plugin.d.ts +0 -52
  497. package/dist/src/core/plugins/base-plugin.ts +0 -224
  498. package/dist/src/core/plugins/enhanced-plugin-system.d.ts +0 -160
  499. package/dist/src/core/plugins/enhanced-plugin-system.ts +0 -417
  500. package/dist/src/core/plugins/examples/analytics-plugin.d.ts +0 -30
  501. package/dist/src/core/plugins/examples/analytics-plugin.ts +0 -242
  502. package/dist/src/core/plugins/index.d.ts +0 -8
  503. package/dist/src/core/plugins/index.ts +0 -39
  504. package/dist/src/core/plugins/registry.d.ts +0 -31
  505. package/dist/src/core/plugins/registry.ts +0 -327
  506. package/dist/src/core/plugins/types.d.ts +0 -101
  507. package/dist/src/core/plugins/types.ts +0 -159
  508. package/dist/src/core/plugins/utils.d.ts +0 -38
  509. package/dist/src/core/plugins/utils.ts +0 -316
  510. package/dist/src/core/progressive-loading.d.ts +0 -88
  511. package/dist/src/core/progressive-loading.tsx +0 -322
  512. package/dist/src/core/providers/enhanced-hls-provider.d.ts +0 -50
  513. package/dist/src/core/providers/enhanced-hls-provider.ts +0 -308
  514. package/dist/src/core/providers/service-provider.d.ts +0 -49
  515. package/dist/src/core/providers/service-provider.tsx +0 -168
  516. package/dist/src/core/utils.d.ts +0 -25
  517. package/dist/src/core/utils.tsx +0 -38
  518. package/dist/src/features/media-session/media-session-manager.d.ts +0 -132
  519. package/dist/src/features/media-session/media-session-manager.ts +0 -429
  520. package/dist/src/features/picture-in-picture/pip-manager.d.ts +0 -94
  521. package/dist/src/features/picture-in-picture/pip-manager.ts +0 -429
  522. package/dist/src/features/playlist/playlist-manager.d.ts +0 -208
  523. package/dist/src/features/playlist/playlist-manager.ts +0 -606
  524. package/dist/src/features/subtitles/subtitle-manager.d.ts +0 -136
  525. package/dist/src/features/subtitles/subtitle-manager.ts +0 -441
  526. package/dist/src/features/subtitles/subtitle-parser.d.ts +0 -60
  527. package/dist/src/features/subtitles/subtitle-parser.ts +0 -280
  528. package/dist/src/features/thumbnails/thumbnail-generator.d.ts +0 -136
  529. package/dist/src/features/thumbnails/thumbnail-generator.ts +0 -519
  530. package/dist/src/hooks/accessibility/index.d.ts +0 -5
  531. package/dist/src/hooks/accessibility/index.ts +0 -27
  532. package/dist/src/hooks/accessibility/use-accessibility-preferences.d.ts +0 -14
  533. package/dist/src/hooks/accessibility/use-accessibility-preferences.ts +0 -188
  534. package/dist/src/hooks/accessibility/use-focus-management.d.ts +0 -31
  535. package/dist/src/hooks/accessibility/use-focus-management.ts +0 -176
  536. package/dist/src/hooks/accessibility/use-keyboard-shortcuts.d.ts +0 -38
  537. package/dist/src/hooks/accessibility/use-keyboard-shortcuts.ts +0 -144
  538. package/dist/src/hooks/accessibility/use-screen-reader.d.ts +0 -22
  539. package/dist/src/hooks/accessibility/use-screen-reader.ts +0 -182
  540. package/dist/src/hooks/core/index.d.ts +0 -18
  541. package/dist/src/hooks/core/index.ts +0 -47
  542. package/dist/src/hooks/legacy.d.ts +0 -18
  543. package/dist/src/hooks/legacy.ts +0 -27
  544. package/dist/src/hooks/use-enhanced-media-player.d.ts +0 -88
  545. package/dist/src/hooks/use-enhanced-media-player.ts +0 -485
  546. package/dist/src/hooks/use-intelligent-preloading.d.ts +0 -66
  547. package/dist/src/hooks/use-intelligent-preloading.ts +0 -363
  548. package/dist/src/hooks/use-keyboard-controls.d.ts +0 -13
  549. package/dist/src/hooks/use-keyboard-controls.ts +0 -115
  550. package/dist/src/hooks/use-media-actions.d.ts +0 -62
  551. package/dist/src/hooks/use-media-actions.ts +0 -175
  552. package/dist/src/hooks/use-media-metadata.d.ts +0 -11
  553. package/dist/src/hooks/use-media-metadata.ts +0 -89
  554. package/dist/src/hooks/use-media-optimistic.d.ts +0 -36
  555. package/dist/src/hooks/use-media-optimistic.ts +0 -270
  556. package/dist/src/hooks/use-media-player.d.ts +0 -31
  557. package/dist/src/hooks/use-media-player.ts +0 -310
  558. package/dist/src/hooks/use-media-state.d.ts +0 -17
  559. package/dist/src/hooks/use-media-state.ts +0 -190
  560. package/dist/src/hooks/use-memory-optimization.d.ts +0 -40
  561. package/dist/src/hooks/use-memory-optimization.ts +0 -358
  562. package/dist/src/hooks/use-mobile.ts +0 -125
  563. package/dist/src/hooks/use-optimistic-controls.d.ts +0 -22
  564. package/dist/src/hooks/use-optimistic-controls.ts +0 -92
  565. package/dist/src/hooks/use-optimized-media.d.ts +0 -46
  566. package/dist/src/hooks/use-optimized-media.ts +0 -263
  567. package/dist/src/hooks/use-touch-gestures.d.ts +0 -47
  568. package/dist/src/hooks/use-touch-gestures.ts +0 -417
  569. package/dist/src/hooks/useEnhancedSubtitles.d.ts +0 -39
  570. package/dist/src/hooks/useEnhancedSubtitles.ts +0 -258
  571. package/dist/src/hooks/useKeyboardShortcuts.d.ts +0 -10
  572. package/dist/src/hooks/useKeyboardShortcuts.ts +0 -74
  573. package/dist/src/hooks/useMediaControls.d.ts +0 -9
  574. package/dist/src/hooks/useMediaControls.ts +0 -52
  575. package/dist/src/hooks/useScreenshot.d.ts +0 -4
  576. package/dist/src/hooks/useScreenshot.ts +0 -57
  577. package/dist/src/hooks/useSubtitles.d.ts +0 -8
  578. package/dist/src/hooks/useSubtitles.ts +0 -91
  579. package/dist/src/hooks/useVideoPlayer.d.ts +0 -32
  580. package/dist/src/hooks/useVideoPlayer.ts +0 -232
  581. package/dist/src/icons/components/FullscreenIcon.d.ts +0 -3
  582. package/dist/src/icons/components/FullscreenIcon.tsx +0 -37
  583. package/dist/src/icons/components/SettingsIcon.d.ts +0 -3
  584. package/dist/src/icons/components/SettingsIcon.tsx +0 -38
  585. package/dist/src/icons/components/animated/LoadingIcon.d.ts +0 -3
  586. package/dist/src/icons/components/animated/LoadingIcon.tsx +0 -43
  587. package/dist/src/icons/components/animated/PlayPauseIcon.d.ts +0 -7
  588. package/dist/src/icons/components/animated/PlayPauseIcon.tsx +0 -50
  589. package/dist/src/icons/components/media/PauseIcon.d.ts +0 -3
  590. package/dist/src/icons/components/media/PauseIcon.tsx +0 -39
  591. package/dist/src/icons/components/media/PlayIcon.d.ts +0 -3
  592. package/dist/src/icons/components/media/PlayIcon.tsx +0 -38
  593. package/dist/src/icons/components/volume/VolumeIcon.d.ts +0 -3
  594. package/dist/src/icons/components/volume/VolumeIcon.tsx +0 -39
  595. package/dist/src/icons/components/volume/VolumeOffIcon.d.ts +0 -3
  596. package/dist/src/icons/components/volume/VolumeOffIcon.tsx +0 -39
  597. package/dist/src/icons/index.d.ts +0 -28
  598. package/dist/src/icons/index.ts +0 -56
  599. package/dist/src/icons/provider.d.ts +0 -13
  600. package/dist/src/icons/provider.tsx +0 -64
  601. package/dist/src/icons/types.d.ts +0 -18
  602. package/dist/src/icons/types.ts +0 -40
  603. package/dist/src/index-enhanced.d.ts +0 -13
  604. package/dist/src/index-enhanced.ts +0 -35
  605. package/dist/src/index-legacy.d.ts +0 -81
  606. package/dist/src/index-legacy.ts +0 -327
  607. package/dist/src/index.css +0 -102
  608. package/dist/src/index.d.ts +0 -38
  609. package/dist/src/index.minimal.d.ts +0 -2
  610. package/dist/src/index.minimal.ts +0 -4
  611. package/dist/src/index.ts +0 -216
  612. package/dist/src/lib/deprecation.d.ts +0 -7
  613. package/dist/src/lib/deprecation.ts +0 -51
  614. package/dist/src/lib/format-time.d.ts +0 -9
  615. package/dist/src/lib/format-time.ts +0 -37
  616. package/dist/src/lib/index.d.ts +0 -3
  617. package/dist/src/lib/index.ts +0 -3
  618. package/dist/src/lib/utils.d.ts +0 -3
  619. package/dist/src/lib/utils.ts +0 -6
  620. package/dist/src/styles/globals.css +0 -462
  621. package/dist/src/styles/minimal-player.css +0 -589
  622. package/dist/src/styles/pixel-art.css +0 -46
  623. package/dist/src/styles/videojs.css +0 -100
  624. package/dist/src/test/setup.d.ts +0 -2
  625. package/dist/src/test/setup.ts +0 -79
  626. package/dist/src/types/events.d.ts +0 -41
  627. package/dist/src/types/events.ts +0 -47
  628. package/dist/src/types/formats.d.ts +0 -45
  629. package/dist/src/types/formats.ts +0 -95
  630. package/dist/src/types/index.d.ts +0 -128
  631. package/dist/src/types/index.ts +0 -225
  632. package/dist/src/types/videojs-plugins.d.ts +0 -14
  633. package/dist/styles/globals.css +0 -462
  634. package/dist/styles/minimal-player.css +0 -589
  635. package/dist/styles/pixel-art.css +0 -46
  636. package/dist/styles/videojs.css +0 -100
  637. package/src/adapters/videojs-adapter.d.ts +0 -38
  638. package/src/adapters/videojs-adapter.d.ts.map +0 -1
  639. package/src/components/AnimateLoading.d.ts +0 -9
  640. package/src/components/AnimateLoading.d.ts.map +0 -1
  641. package/src/components/LoadingState.d.ts +0 -33
  642. package/src/components/LoadingState.d.ts.map +0 -1
  643. package/src/components/accessibility/keyboard-help-overlay.d.ts +0 -17
  644. package/src/components/accessibility/keyboard-help-overlay.d.ts.map +0 -1
  645. package/src/components/audio-player.d.ts +0 -3
  646. package/src/components/audio-player.d.ts.map +0 -1
  647. package/src/components/basic/index.d.ts +0 -26
  648. package/src/components/basic/index.d.ts.map +0 -1
  649. package/src/components/enhanced/advanced-features.d.ts +0 -45
  650. package/src/components/enhanced/advanced-features.d.ts.map +0 -1
  651. package/src/components/enhanced/debug-panel.d.ts +0 -70
  652. package/src/components/enhanced/debug-panel.d.ts.map +0 -1
  653. package/src/components/enhanced/enhanced-controls.d.ts +0 -50
  654. package/src/components/enhanced/enhanced-controls.d.ts.map +0 -1
  655. package/src/components/enhanced/enhanced-media-player.d.ts +0 -26
  656. package/src/components/enhanced/enhanced-media-player.d.ts.map +0 -1
  657. package/src/components/enhanced/error-handling.d.ts +0 -36
  658. package/src/components/enhanced/error-handling.d.ts.map +0 -1
  659. package/src/components/enhanced/index.d.ts +0 -7
  660. package/src/components/enhanced/index.d.ts.map +0 -1
  661. package/src/components/enhanced/media-player-enhanced.d.ts +0 -21
  662. package/src/components/enhanced/media-player-enhanced.d.ts.map +0 -1
  663. package/src/components/examples/basic-video-player.d.ts +0 -10
  664. package/src/components/examples/basic-video-player.d.ts.map +0 -1
  665. package/src/components/examples/custom-controls-example.d.ts +0 -10
  666. package/src/components/examples/custom-controls-example.d.ts.map +0 -1
  667. package/src/components/examples/enhanced-controls-example.d.ts +0 -9
  668. package/src/components/examples/enhanced-controls-example.d.ts.map +0 -1
  669. package/src/components/examples/enhanced-media-player-example.d.ts +0 -9
  670. package/src/components/examples/enhanced-media-player-example.d.ts.map +0 -1
  671. package/src/components/examples/loading-states-demo.d.ts +0 -2
  672. package/src/components/examples/loading-states-demo.d.ts.map +0 -1
  673. package/src/components/examples/react-19-demo.d.ts +0 -10
  674. package/src/components/examples/react-19-demo.d.ts.map +0 -1
  675. package/src/components/examples/volume-orientation-demo.d.ts +0 -2
  676. package/src/components/examples/volume-orientation-demo.d.ts.map +0 -1
  677. package/src/components/icon-demo.d.ts +0 -2
  678. package/src/components/icon-demo.d.ts.map +0 -1
  679. package/src/components/icons/index.d.ts +0 -36
  680. package/src/components/icons/index.d.ts.map +0 -1
  681. package/src/components/icons/svg-icons/ArrowLeftIcon.d.ts +0 -4
  682. package/src/components/icons/svg-icons/ArrowLeftIcon.d.ts.map +0 -1
  683. package/src/components/icons/svg-icons/ArrowRightIcon.d.ts +0 -4
  684. package/src/components/icons/svg-icons/ArrowRightIcon.d.ts.map +0 -1
  685. package/src/components/icons/svg-icons/AudioIcon.d.ts +0 -4
  686. package/src/components/icons/svg-icons/AudioIcon.d.ts.map +0 -1
  687. package/src/components/icons/svg-icons/BackwardIcon.d.ts +0 -4
  688. package/src/components/icons/svg-icons/BackwardIcon.d.ts.map +0 -1
  689. package/src/components/icons/svg-icons/CameraIcon.d.ts +0 -4
  690. package/src/components/icons/svg-icons/CameraIcon.d.ts.map +0 -1
  691. package/src/components/icons/svg-icons/CheckIcon.d.ts +0 -4
  692. package/src/components/icons/svg-icons/CheckIcon.d.ts.map +0 -1
  693. package/src/components/icons/svg-icons/EnablePiPIcon.d.ts +0 -4
  694. package/src/components/icons/svg-icons/EnablePiPIcon.d.ts.map +0 -1
  695. package/src/components/icons/svg-icons/ForwardIcon.d.ts +0 -4
  696. package/src/components/icons/svg-icons/ForwardIcon.d.ts.map +0 -1
  697. package/src/components/icons/svg-icons/FullscreenEnterIcon.d.ts +0 -4
  698. package/src/components/icons/svg-icons/FullscreenEnterIcon.d.ts.map +0 -1
  699. package/src/components/icons/svg-icons/FullscreenExitIcon.d.ts +0 -4
  700. package/src/components/icons/svg-icons/FullscreenExitIcon.d.ts.map +0 -1
  701. package/src/components/icons/svg-icons/LoadingIcon.d.ts +0 -4
  702. package/src/components/icons/svg-icons/LoadingIcon.d.ts.map +0 -1
  703. package/src/components/icons/svg-icons/PauseIcon.d.ts +0 -4
  704. package/src/components/icons/svg-icons/PauseIcon.d.ts.map +0 -1
  705. package/src/components/icons/svg-icons/PlayIcon.d.ts +0 -4
  706. package/src/components/icons/svg-icons/PlayIcon.d.ts.map +0 -1
  707. package/src/components/icons/svg-icons/PlaybackSpeedIcon.d.ts +0 -4
  708. package/src/components/icons/svg-icons/PlaybackSpeedIcon.d.ts.map +0 -1
  709. package/src/components/icons/svg-icons/QualityIcon.d.ts +0 -4
  710. package/src/components/icons/svg-icons/QualityIcon.d.ts.map +0 -1
  711. package/src/components/icons/svg-icons/SettingsIcon.d.ts +0 -4
  712. package/src/components/icons/svg-icons/SettingsIcon.d.ts.map +0 -1
  713. package/src/components/icons/svg-icons/SliderIcon.d.ts +0 -4
  714. package/src/components/icons/svg-icons/SliderIcon.d.ts.map +0 -1
  715. package/src/components/icons/svg-icons/SubtitleIcon.d.ts +0 -4
  716. package/src/components/icons/svg-icons/SubtitleIcon.d.ts.map +0 -1
  717. package/src/components/icons/svg-icons/SubtitleOffIcon.d.ts +0 -4
  718. package/src/components/icons/svg-icons/SubtitleOffIcon.d.ts.map +0 -1
  719. package/src/components/icons/svg-icons/UnPiPIcon.d.ts +0 -4
  720. package/src/components/icons/svg-icons/UnPiPIcon.d.ts.map +0 -1
  721. package/src/components/icons/svg-icons/VolumeMutedIcon.d.ts +0 -4
  722. package/src/components/icons/svg-icons/VolumeMutedIcon.d.ts.map +0 -1
  723. package/src/components/icons/svg-icons/VolumeOneIcon.d.ts +0 -4
  724. package/src/components/icons/svg-icons/VolumeOneIcon.d.ts.map +0 -1
  725. package/src/components/icons/svg-icons/VolumeThreeIcon.d.ts +0 -4
  726. package/src/components/icons/svg-icons/VolumeThreeIcon.d.ts.map +0 -1
  727. package/src/components/icons/svg-icons/VolumeTwoIcon.d.ts +0 -4
  728. package/src/components/icons/svg-icons/VolumeTwoIcon.d.ts.map +0 -1
  729. package/src/components/legacy.d.ts +0 -13
  730. package/src/components/legacy.d.ts.map +0 -1
  731. package/src/components/media-metadata-display.d.ts +0 -11
  732. package/src/components/media-metadata-display.d.ts.map +0 -1
  733. package/src/components/media-player-audio.d.ts +0 -9
  734. package/src/components/media-player-audio.d.ts.map +0 -1
  735. package/src/components/media-player-controls.d.ts +0 -23
  736. package/src/components/media-player-controls.d.ts.map +0 -1
  737. package/src/components/media-player-error.d.ts +0 -16
  738. package/src/components/media-player-error.d.ts.map +0 -1
  739. package/src/components/media-player-fullscreen.d.ts +0 -12
  740. package/src/components/media-player-fullscreen.d.ts.map +0 -1
  741. package/src/components/media-player-hls.d.ts +0 -23
  742. package/src/components/media-player-hls.d.ts.map +0 -1
  743. package/src/components/media-player-loading.d.ts +0 -12
  744. package/src/components/media-player-loading.d.ts.map +0 -1
  745. package/src/components/media-player-play.d.ts +0 -11
  746. package/src/components/media-player-play.d.ts.map +0 -1
  747. package/src/components/media-player-root.d.ts +0 -28
  748. package/src/components/media-player-root.d.ts.map +0 -1
  749. package/src/components/media-player-seek.d.ts +0 -15
  750. package/src/components/media-player-seek.d.ts.map +0 -1
  751. package/src/components/media-player-time.d.ts +0 -12
  752. package/src/components/media-player-time.d.ts.map +0 -1
  753. package/src/components/media-player-tooltip.d.ts +0 -13
  754. package/src/components/media-player-tooltip.d.ts.map +0 -1
  755. package/src/components/media-player-video.d.ts +0 -9
  756. package/src/components/media-player-video.d.ts.map +0 -1
  757. package/src/components/media-player-volume.d.ts +0 -13
  758. package/src/components/media-player-volume.d.ts.map +0 -1
  759. package/src/components/media-player.d.ts +0 -3
  760. package/src/components/media-player.d.ts.map +0 -1
  761. package/src/components/media-suspense.d.ts +0 -78
  762. package/src/components/media-suspense.d.ts.map +0 -1
  763. package/src/components/player-settings-form.d.ts +0 -8
  764. package/src/components/player-settings-form.d.ts.map +0 -1
  765. package/src/components/react-player-wrapper.d.ts +0 -64
  766. package/src/components/react-player-wrapper.d.ts.map +0 -1
  767. package/src/components/simple-video-player.d.ts +0 -9
  768. package/src/components/simple-video-player.d.ts.map +0 -1
  769. package/src/components/ui/button.tsx +0 -49
  770. package/src/components/ui/dropdown-menu.tsx +0 -137
  771. package/src/components/ui/enhanced-seek-bar.d.ts +0 -3
  772. package/src/components/ui/enhanced-seek-bar.d.ts.map +0 -1
  773. package/src/components/ui/fullscreen-button.d.ts +0 -3
  774. package/src/components/ui/fullscreen-button.d.ts.map +0 -1
  775. package/src/components/ui/icons.tsx +0 -174
  776. package/src/components/ui/media-resource-preloader.d.ts +0 -21
  777. package/src/components/ui/media-resource-preloader.d.ts.map +0 -1
  778. package/src/components/ui/play-button.d.ts +0 -3
  779. package/src/components/ui/play-button.d.ts.map +0 -1
  780. package/src/components/ui/seek-bar.d.ts +0 -3
  781. package/src/components/ui/seek-bar.d.ts.map +0 -1
  782. package/src/components/ui/slider.tsx +0 -55
  783. package/src/components/ui/time-display.d.ts +0 -3
  784. package/src/components/ui/time-display.d.ts.map +0 -1
  785. package/src/components/ui/tooltip.tsx +0 -131
  786. package/src/components/ui/volume-control.d.ts +0 -3
  787. package/src/components/ui/volume-control.d.ts.map +0 -1
  788. package/src/components/unified/base-media-player.d.ts +0 -18
  789. package/src/components/unified/base-media-player.d.ts.map +0 -1
  790. package/src/components/unified/media-player.d.ts +0 -37
  791. package/src/components/unified/media-player.d.ts.map +0 -1
  792. package/src/components/variants/minimal/AccessibleMinimalPlayer.d.ts +0 -42
  793. package/src/components/variants/minimal/AccessibleMinimalPlayer.d.ts.map +0 -1
  794. package/src/components/variants/minimal/EnhancedMinimalMediaPlayer.d.ts +0 -44
  795. package/src/components/variants/minimal/EnhancedMinimalMediaPlayer.d.ts.map +0 -1
  796. package/src/components/variants/minimal/MinimalControls.d.ts +0 -19
  797. package/src/components/variants/minimal/MinimalControls.d.ts.map +0 -1
  798. package/src/components/variants/minimal/MinimalLoading.d.ts +0 -10
  799. package/src/components/variants/minimal/MinimalLoading.d.ts.map +0 -1
  800. package/src/components/variants/minimal/MinimalMediaPlayer.d.ts +0 -38
  801. package/src/components/variants/minimal/MinimalMediaPlayer.d.ts.map +0 -1
  802. package/src/components/variants/minimal/MinimalOverlay.d.ts +0 -11
  803. package/src/components/variants/minimal/MinimalOverlay.d.ts.map +0 -1
  804. package/src/components/variants/minimal/MinimalPlayButton.d.ts +0 -9
  805. package/src/components/variants/minimal/MinimalPlayButton.d.ts.map +0 -1
  806. package/src/components/variants/minimal/MinimalSeekBar.d.ts +0 -7
  807. package/src/components/variants/minimal/MinimalSeekBar.d.ts.map +0 -1
  808. package/src/components/variants/minimal/MinimalVolumeControl.d.ts +0 -7
  809. package/src/components/variants/minimal/MinimalVolumeControl.d.ts.map +0 -1
  810. package/src/components/variants/minimal/SimpleMinimalPlayer.d.ts +0 -22
  811. package/src/components/variants/minimal/SimpleMinimalPlayer.d.ts.map +0 -1
  812. package/src/components/variants/minimal/components/CenterPlayButton.d.ts +0 -7
  813. package/src/components/variants/minimal/components/CenterPlayButton.d.ts.map +0 -1
  814. package/src/components/variants/minimal/components/ControlBar.d.ts +0 -43
  815. package/src/components/variants/minimal/components/ControlBar.d.ts.map +0 -1
  816. package/src/components/variants/minimal/components/EnhancedSettingsMenu.d.ts +0 -24
  817. package/src/components/variants/minimal/components/EnhancedSettingsMenu.d.ts.map +0 -1
  818. package/src/components/variants/minimal/components/PlaybackControls.d.ts +0 -9
  819. package/src/components/variants/minimal/components/PlaybackControls.d.ts.map +0 -1
  820. package/src/components/variants/minimal/components/RightControls.d.ts +0 -25
  821. package/src/components/variants/minimal/components/RightControls.d.ts.map +0 -1
  822. package/src/components/variants/minimal/components/SeekBar.d.ts +0 -11
  823. package/src/components/variants/minimal/components/SeekBar.d.ts.map +0 -1
  824. package/src/components/variants/minimal/components/SettingsDropdown.d.ts +0 -9
  825. package/src/components/variants/minimal/components/SettingsDropdown.d.ts.map +0 -1
  826. package/src/components/variants/minimal/components/SubtitleDisplay.d.ts +0 -7
  827. package/src/components/variants/minimal/components/SubtitleDisplay.d.ts.map +0 -1
  828. package/src/components/variants/minimal/components/TimeDisplay.d.ts +0 -7
  829. package/src/components/variants/minimal/components/TimeDisplay.d.ts.map +0 -1
  830. package/src/components/variants/minimal/components/VideoElement.d.ts +0 -13
  831. package/src/components/variants/minimal/components/VideoElement.d.ts.map +0 -1
  832. package/src/components/variants/minimal/components/VolumeControl.d.ts +0 -13
  833. package/src/components/variants/minimal/components/VolumeControl.d.ts.map +0 -1
  834. package/src/components/variants/minimal/index.d.ts +0 -17
  835. package/src/components/variants/minimal/index.d.ts.map +0 -1
  836. package/src/components/video-player.d.ts +0 -3
  837. package/src/components/video-player.d.ts.map +0 -1
  838. package/src/context/error-handling.d.ts +0 -72
  839. package/src/context/error-handling.d.ts.map +0 -1
  840. package/src/context/media-context.d.ts +0 -104
  841. package/src/context/media-context.d.ts.map +0 -1
  842. package/src/context/media-provider.d.ts +0 -26
  843. package/src/context/media-provider.d.ts.map +0 -1
  844. package/src/context/media-store.d.ts +0 -33
  845. package/src/context/media-store.d.ts.map +0 -1
  846. package/src/context/persistence.d.ts +0 -83
  847. package/src/context/persistence.d.ts.map +0 -1
  848. package/src/core/events/event-system.d.ts +0 -170
  849. package/src/core/events/event-system.d.ts.map +0 -1
  850. package/src/core/events/hooks.d.ts +0 -33
  851. package/src/core/events/hooks.d.ts.map +0 -1
  852. package/src/core/events/index.d.ts +0 -6
  853. package/src/core/events/index.d.ts.map +0 -1
  854. package/src/core/events/middleware.d.ts +0 -39
  855. package/src/core/events/middleware.d.ts.map +0 -1
  856. package/src/core/index.d.ts +0 -8
  857. package/src/core/index.d.ts.map +0 -1
  858. package/src/core/optimization/bundle-optimizer.d.ts +0 -44
  859. package/src/core/optimization/bundle-optimizer.d.ts.map +0 -1
  860. package/src/core/performance/cicd.d.ts +0 -8
  861. package/src/core/performance/cicd.d.ts.map +0 -1
  862. package/src/core/performance/index.d.ts +0 -10
  863. package/src/core/performance/index.d.ts.map +0 -1
  864. package/src/core/performance/media-loading-optimizer.d.ts +0 -105
  865. package/src/core/performance/media-loading-optimizer.d.ts.map +0 -1
  866. package/src/core/performance/performance-budgets.d.ts +0 -68
  867. package/src/core/performance/performance-budgets.d.ts.map +0 -1
  868. package/src/core/performance/performance-monitor.d.ts +0 -95
  869. package/src/core/performance/performance-monitor.d.ts.map +0 -1
  870. package/src/core/performance/performance-testing.d.ts +0 -69
  871. package/src/core/performance/performance-testing.d.ts.map +0 -1
  872. package/src/core/plugins/base-plugin.d.ts +0 -52
  873. package/src/core/plugins/base-plugin.d.ts.map +0 -1
  874. package/src/core/plugins/enhanced-plugin-system.d.ts +0 -160
  875. package/src/core/plugins/enhanced-plugin-system.d.ts.map +0 -1
  876. package/src/core/plugins/examples/analytics-plugin.d.ts +0 -30
  877. package/src/core/plugins/examples/analytics-plugin.d.ts.map +0 -1
  878. package/src/core/plugins/index.d.ts +0 -8
  879. package/src/core/plugins/index.d.ts.map +0 -1
  880. package/src/core/plugins/registry.d.ts +0 -31
  881. package/src/core/plugins/registry.d.ts.map +0 -1
  882. package/src/core/plugins/types.d.ts +0 -101
  883. package/src/core/plugins/types.d.ts.map +0 -1
  884. package/src/core/plugins/utils.d.ts +0 -38
  885. package/src/core/plugins/utils.d.ts.map +0 -1
  886. package/src/core/progressive-loading.d.ts +0 -88
  887. package/src/core/progressive-loading.d.ts.map +0 -1
  888. package/src/core/providers/enhanced-hls-provider.d.ts +0 -50
  889. package/src/core/providers/enhanced-hls-provider.d.ts.map +0 -1
  890. package/src/core/providers/service-provider.d.ts +0 -49
  891. package/src/core/providers/service-provider.d.ts.map +0 -1
  892. package/src/core/utils.d.ts +0 -25
  893. package/src/core/utils.d.ts.map +0 -1
  894. package/src/features/media-session/media-session-manager.d.ts +0 -132
  895. package/src/features/media-session/media-session-manager.d.ts.map +0 -1
  896. package/src/features/picture-in-picture/pip-manager.d.ts +0 -94
  897. package/src/features/picture-in-picture/pip-manager.d.ts.map +0 -1
  898. package/src/features/playlist/playlist-manager.d.ts +0 -208
  899. package/src/features/playlist/playlist-manager.d.ts.map +0 -1
  900. package/src/features/subtitles/subtitle-manager.d.ts +0 -136
  901. package/src/features/subtitles/subtitle-manager.d.ts.map +0 -1
  902. package/src/features/subtitles/subtitle-parser.d.ts +0 -60
  903. package/src/features/subtitles/subtitle-parser.d.ts.map +0 -1
  904. package/src/features/thumbnails/thumbnail-generator.d.ts +0 -136
  905. package/src/features/thumbnails/thumbnail-generator.d.ts.map +0 -1
  906. package/src/hooks/accessibility/index.d.ts +0 -5
  907. package/src/hooks/accessibility/index.d.ts.map +0 -1
  908. package/src/hooks/accessibility/use-accessibility-preferences.d.ts +0 -14
  909. package/src/hooks/accessibility/use-accessibility-preferences.d.ts.map +0 -1
  910. package/src/hooks/accessibility/use-focus-management.d.ts +0 -31
  911. package/src/hooks/accessibility/use-focus-management.d.ts.map +0 -1
  912. package/src/hooks/accessibility/use-keyboard-shortcuts.d.ts +0 -38
  913. package/src/hooks/accessibility/use-keyboard-shortcuts.d.ts.map +0 -1
  914. package/src/hooks/accessibility/use-screen-reader.d.ts +0 -22
  915. package/src/hooks/accessibility/use-screen-reader.d.ts.map +0 -1
  916. package/src/hooks/core/index.d.ts +0 -18
  917. package/src/hooks/core/index.d.ts.map +0 -1
  918. package/src/hooks/legacy.d.ts +0 -18
  919. package/src/hooks/legacy.d.ts.map +0 -1
  920. package/src/hooks/use-enhanced-media-player.d.ts +0 -88
  921. package/src/hooks/use-enhanced-media-player.d.ts.map +0 -1
  922. package/src/hooks/use-intelligent-preloading.d.ts +0 -66
  923. package/src/hooks/use-intelligent-preloading.d.ts.map +0 -1
  924. package/src/hooks/use-keyboard-controls.d.ts +0 -13
  925. package/src/hooks/use-keyboard-controls.d.ts.map +0 -1
  926. package/src/hooks/use-media-actions.d.ts +0 -62
  927. package/src/hooks/use-media-actions.d.ts.map +0 -1
  928. package/src/hooks/use-media-metadata.d.ts +0 -11
  929. package/src/hooks/use-media-metadata.d.ts.map +0 -1
  930. package/src/hooks/use-media-optimistic.d.ts +0 -36
  931. package/src/hooks/use-media-optimistic.d.ts.map +0 -1
  932. package/src/hooks/use-media-player.d.ts +0 -31
  933. package/src/hooks/use-media-player.d.ts.map +0 -1
  934. package/src/hooks/use-media-state.d.ts +0 -17
  935. package/src/hooks/use-media-state.d.ts.map +0 -1
  936. package/src/hooks/use-memory-optimization.d.ts +0 -40
  937. package/src/hooks/use-memory-optimization.d.ts.map +0 -1
  938. package/src/hooks/use-mobile.ts +0 -125
  939. package/src/hooks/use-optimistic-controls.d.ts +0 -22
  940. package/src/hooks/use-optimistic-controls.d.ts.map +0 -1
  941. package/src/hooks/use-optimized-media.d.ts +0 -46
  942. package/src/hooks/use-optimized-media.d.ts.map +0 -1
  943. package/src/hooks/use-touch-gestures.d.ts +0 -47
  944. package/src/hooks/use-touch-gestures.d.ts.map +0 -1
  945. package/src/hooks/useEnhancedSubtitles.d.ts +0 -39
  946. package/src/hooks/useEnhancedSubtitles.d.ts.map +0 -1
  947. package/src/hooks/useKeyboardShortcuts.d.ts +0 -10
  948. package/src/hooks/useKeyboardShortcuts.d.ts.map +0 -1
  949. package/src/hooks/useMediaControls.d.ts +0 -9
  950. package/src/hooks/useMediaControls.d.ts.map +0 -1
  951. package/src/hooks/useScreenshot.d.ts +0 -4
  952. package/src/hooks/useScreenshot.d.ts.map +0 -1
  953. package/src/hooks/useSubtitles.d.ts +0 -8
  954. package/src/hooks/useSubtitles.d.ts.map +0 -1
  955. package/src/hooks/useVideoPlayer.d.ts +0 -32
  956. package/src/hooks/useVideoPlayer.d.ts.map +0 -1
  957. package/src/icons/components/FullscreenIcon.d.ts +0 -3
  958. package/src/icons/components/FullscreenIcon.d.ts.map +0 -1
  959. package/src/icons/components/SettingsIcon.d.ts +0 -3
  960. package/src/icons/components/SettingsIcon.d.ts.map +0 -1
  961. package/src/icons/components/animated/LoadingIcon.d.ts +0 -3
  962. package/src/icons/components/animated/LoadingIcon.d.ts.map +0 -1
  963. package/src/icons/components/animated/PlayPauseIcon.d.ts +0 -7
  964. package/src/icons/components/animated/PlayPauseIcon.d.ts.map +0 -1
  965. package/src/icons/components/media/PauseIcon.d.ts +0 -3
  966. package/src/icons/components/media/PauseIcon.d.ts.map +0 -1
  967. package/src/icons/components/media/PlayIcon.d.ts +0 -3
  968. package/src/icons/components/media/PlayIcon.d.ts.map +0 -1
  969. package/src/icons/components/volume/VolumeIcon.d.ts +0 -3
  970. package/src/icons/components/volume/VolumeIcon.d.ts.map +0 -1
  971. package/src/icons/components/volume/VolumeOffIcon.d.ts +0 -3
  972. package/src/icons/components/volume/VolumeOffIcon.d.ts.map +0 -1
  973. package/src/icons/index.d.ts +0 -28
  974. package/src/icons/index.d.ts.map +0 -1
  975. package/src/icons/provider.d.ts +0 -13
  976. package/src/icons/provider.d.ts.map +0 -1
  977. package/src/icons/types.d.ts +0 -18
  978. package/src/icons/types.d.ts.map +0 -1
  979. package/src/index-enhanced.d.ts +0 -13
  980. package/src/index-enhanced.d.ts.map +0 -1
  981. package/src/index-legacy.d.ts +0 -81
  982. package/src/index-legacy.d.ts.map +0 -1
  983. package/src/index.d.ts +0 -38
  984. package/src/index.d.ts.map +0 -1
  985. package/src/index.minimal.d.ts +0 -2
  986. package/src/index.minimal.d.ts.map +0 -1
  987. package/src/index.minimal.ts +0 -4
  988. package/src/lib/deprecation.d.ts +0 -7
  989. package/src/lib/deprecation.d.ts.map +0 -1
  990. package/src/lib/format-time.d.ts +0 -9
  991. package/src/lib/format-time.d.ts.map +0 -1
  992. package/src/lib/index.d.ts +0 -3
  993. package/src/lib/index.d.ts.map +0 -1
  994. package/src/lib/utils.d.ts +0 -3
  995. package/src/lib/utils.d.ts.map +0 -1
  996. package/src/test/setup.d.ts +0 -2
  997. package/src/test/setup.d.ts.map +0 -1
  998. package/src/types/events.d.ts +0 -41
  999. package/src/types/events.d.ts.map +0 -1
  1000. package/src/types/formats.d.ts +0 -45
  1001. package/src/types/formats.d.ts.map +0 -1
  1002. package/src/types/index.d.ts +0 -128
  1003. package/src/types/index.d.ts.map +0 -1
@@ -1,606 +1,618 @@
1
1
  export interface PlaylistItem {
2
- id: string
3
- title: string
4
- src: string
5
- duration?: number
6
- thumbnail?: string
7
- metadata?: {
8
- artist?: string
9
- album?: string
10
- genre?: string
11
- year?: number
12
- description?: string
13
- tags?: string[]
14
- }
15
- subtitles?: SubtitleTrack[]
16
- chapters?: ChapterMarker[]
2
+ id: string
3
+ title: string
4
+ src: string
5
+ duration?: number
6
+ thumbnail?: string
7
+ metadata?: {
8
+ artist?: string
9
+ album?: string
10
+ genre?: string
11
+ year?: number
12
+ description?: string
13
+ tags?: string[]
14
+ }
15
+ subtitles?: SubtitleTrack[]
16
+ chapters?: ChapterMarker[]
17
17
  }
18
18
 
19
19
  export interface SubtitleTrack {
20
- id: string
21
- label: string
22
- language: string
23
- src: string
24
- format: 'vtt' | 'srt'
25
- default?: boolean
20
+ id: string
21
+ label: string
22
+ language: string
23
+ src: string
24
+ format: "vtt" | "srt"
25
+ default?: boolean
26
26
  }
27
27
 
28
28
  export interface ChapterMarker {
29
- id: string
30
- title: string
31
- startTime: number
32
- endTime?: number
33
- thumbnail?: string
29
+ id: string
30
+ title: string
31
+ startTime: number
32
+ endTime?: number
33
+ thumbnail?: string
34
34
  }
35
35
 
36
36
  export interface PlaylistConfig {
37
- shuffle?: boolean
38
- repeat?: 'none' | 'one' | 'all'
39
- autoplay?: boolean
40
- crossfade?: number
41
- gapless?: boolean
37
+ shuffle?: boolean
38
+ repeat?: "none" | "one" | "all"
39
+ autoplay?: boolean
40
+ crossfade?: number
41
+ gapless?: boolean
42
42
  }
43
43
 
44
44
  export interface PlaylistEventData {
45
- playlist?: PlaylistItem[]
46
- currentItem?: PlaylistItem
47
- currentIndex?: number
48
- previousItem?: PlaylistItem
49
- nextItem?: PlaylistItem
45
+ playlist?: PlaylistItem[]
46
+ currentItem?: PlaylistItem
47
+ currentIndex?: number
48
+ previousItem?: PlaylistItem
49
+ nextItem?: PlaylistItem
50
50
  }
51
51
 
52
- export type PlaylistEvent =
53
- | 'itemAdded'
54
- | 'itemRemoved'
55
- | 'itemChanged'
56
- | 'playlistChanged'
57
- | 'currentItemChanged'
58
- | 'configChanged'
59
- | 'shuffleChanged'
60
- | 'repeatChanged'
52
+ export type PlaylistEvent =
53
+ | "itemAdded"
54
+ | "itemRemoved"
55
+ | "itemChanged"
56
+ | "playlistChanged"
57
+ | "currentItemChanged"
58
+ | "configChanged"
59
+ | "shuffleChanged"
60
+ | "repeatChanged"
61
61
 
62
62
  export class PlaylistManager {
63
- private items: PlaylistItem[] = []
64
- private currentIndex: number = -1
65
- private originalOrder: PlaylistItem[] = []
66
- private config: PlaylistConfig = {
67
- shuffle: false,
68
- repeat: 'none',
69
- autoplay: true,
70
- crossfade: 0,
71
- gapless: false
72
- }
73
- private eventListeners: Map<PlaylistEvent, Set<Function>> = new Map()
74
- private history: number[] = []
75
- private historyIndex: number = -1
76
-
77
- constructor(config?: Partial<PlaylistConfig>) {
78
- if (config) {
79
- this.updateConfig(config)
80
- }
81
- }
82
-
83
- /**
84
- * Add item(s) to playlist
85
- */
86
- add(items: PlaylistItem | PlaylistItem[], index?: number): void {
87
- const itemsToAdd = Array.isArray(items) ? items : [items]
88
-
89
- if (index !== undefined && index >= 0 && index <= this.items.length) {
90
- this.items.splice(index, 0, ...itemsToAdd)
91
- this.originalOrder.splice(index, 0, ...itemsToAdd)
92
-
93
- // Adjust current index if needed
94
- if (index <= this.currentIndex) {
95
- this.currentIndex += itemsToAdd.length
96
- }
97
- } else {
98
- this.items.push(...itemsToAdd)
99
- this.originalOrder.push(...itemsToAdd)
100
- }
101
-
102
- // If this is the first item and no current item is set
103
- if (this.currentIndex === -1 && this.items.length > 0) {
104
- this.currentIndex = 0
105
- this.addToHistory(0)
106
- }
107
-
108
- itemsToAdd.forEach(item => {
109
- this.emit('itemAdded', { currentItem: item, playlist: this.items })
110
- })
111
-
112
- this.emit('playlistChanged', { playlist: this.items })
113
- }
114
-
115
- /**
116
- * Remove item(s) from playlist
117
- */
118
- remove(indices: number | number[]): PlaylistItem[] {
119
- const indicesToRemove = Array.isArray(indices) ? indices.sort((a, b) => b - a) : [indices]
120
- const removedItems: PlaylistItem[] = []
121
-
122
- indicesToRemove.forEach(index => {
123
- if (index >= 0 && index < this.items.length) {
124
- const [removedItem] = this.items.splice(index, 1)
125
- const [originalItem] = this.originalOrder.splice(
126
- this.originalOrder.findIndex(item => item.id === removedItem.id), 1
127
- )
128
-
129
- removedItems.push(removedItem)
130
-
131
- // Adjust current index
132
- if (index < this.currentIndex) {
133
- this.currentIndex--
134
- } else if (index === this.currentIndex) {
135
- // If we removed the current item, stay at the same index
136
- // (which now points to the next item)
137
- if (this.currentIndex >= this.items.length) {
138
- this.currentIndex = this.items.length - 1
139
- }
140
- }
141
-
142
- this.emit('itemRemoved', { currentItem: removedItem, playlist: this.items })
143
- }
144
- })
145
-
146
- // Update current index bounds
147
- if (this.items.length === 0) {
148
- this.currentIndex = -1
149
- this.clearHistory()
150
- } else if (this.currentIndex >= this.items.length) {
151
- this.currentIndex = this.items.length - 1
152
- }
153
-
154
- this.emit('playlistChanged', { playlist: this.items })
155
- return removedItems
156
- }
157
-
158
- /**
159
- * Move item to new position
160
- */
161
- move(fromIndex: number, toIndex: number): boolean {
162
- if (fromIndex < 0 || fromIndex >= this.items.length ||
163
- toIndex < 0 || toIndex >= this.items.length ||
164
- fromIndex === toIndex) {
165
- return false
166
- }
167
-
168
- const [movedItem] = this.items.splice(fromIndex, 1)
169
- this.items.splice(toIndex, 0, movedItem)
170
-
171
- // Update current index
172
- if (fromIndex === this.currentIndex) {
173
- this.currentIndex = toIndex
174
- } else if (fromIndex < this.currentIndex && toIndex >= this.currentIndex) {
175
- this.currentIndex--
176
- } else if (fromIndex > this.currentIndex && toIndex <= this.currentIndex) {
177
- this.currentIndex++
178
- }
179
-
180
- this.emit('playlistChanged', { playlist: this.items })
181
- return true
182
- }
183
-
184
- /**
185
- * Clear all items
186
- */
187
- clear(): void {
188
- this.items = []
189
- this.originalOrder = []
190
- this.currentIndex = -1
191
- this.clearHistory()
192
- this.emit('playlistChanged', { playlist: this.items })
193
- }
194
-
195
- /**
196
- * Get current item
197
- */
198
- getCurrentItem(): PlaylistItem | null {
199
- return this.currentIndex >= 0 && this.currentIndex < this.items.length
200
- ? this.items[this.currentIndex]
201
- : null
202
- }
203
-
204
- /**
205
- * Get current index
206
- */
207
- getCurrentIndex(): number {
208
- return this.currentIndex
209
- }
210
-
211
- /**
212
- * Set current item by index
213
- */
214
- setCurrentIndex(index: number): boolean {
215
- if (index >= 0 && index < this.items.length) {
216
- const previousIndex = this.currentIndex
217
- this.currentIndex = index
218
- this.addToHistory(index)
219
-
220
- this.emit('currentItemChanged', {
221
- currentItem: this.items[index],
222
- currentIndex: index,
223
- previousItem: previousIndex >= 0 ? this.items[previousIndex] : undefined
224
- })
225
- return true
226
- }
227
- return false
228
- }
229
-
230
- /**
231
- * Set current item by ID
232
- */
233
- setCurrentById(id: string): boolean {
234
- const index = this.items.findIndex(item => item.id === id)
235
- return index >= 0 ? this.setCurrentIndex(index) : false
236
- }
237
-
238
- /**
239
- * Get next item
240
- */
241
- getNext(): PlaylistItem | null {
242
- const nextIndex = this.getNextIndex()
243
- return nextIndex >= 0 ? this.items[nextIndex] : null
244
- }
245
-
246
- /**
247
- * Get previous item
248
- */
249
- getPrevious(): PlaylistItem | null {
250
- const prevIndex = this.getPreviousIndex()
251
- return prevIndex >= 0 ? this.items[prevIndex] : null
252
- }
253
-
254
- /**
255
- * Move to next item
256
- */
257
- next(): boolean {
258
- const nextIndex = this.getNextIndex()
259
- return nextIndex >= 0 ? this.setCurrentIndex(nextIndex) : false
260
- }
261
-
262
- /**
263
- * Move to previous item
264
- */
265
- previous(): boolean {
266
- // Check history first for better navigation
267
- if (this.historyIndex > 0) {
268
- this.historyIndex--
269
- const historyIndex = this.history[this.historyIndex]
270
- if (historyIndex >= 0 && historyIndex < this.items.length) {
271
- this.currentIndex = historyIndex
272
- this.emit('currentItemChanged', {
273
- currentItem: this.items[this.currentIndex],
274
- currentIndex: this.currentIndex
275
- })
276
- return true
277
- }
278
- }
279
-
280
- const prevIndex = this.getPreviousIndex()
281
- return prevIndex >= 0 ? this.setCurrentIndex(prevIndex) : false
282
- }
283
-
284
- /**
285
- * Get all items
286
- */
287
- getItems(): PlaylistItem[] {
288
- return [...this.items]
289
- }
290
-
291
- /**
292
- * Get item by index
293
- */
294
- getItem(index: number): PlaylistItem | null {
295
- return index >= 0 && index < this.items.length ? this.items[index] : null
296
- }
297
-
298
- /**
299
- * Get item by ID
300
- */
301
- getItemById(id: string): PlaylistItem | null {
302
- return this.items.find(item => item.id === id) || null
303
- }
304
-
305
- /**
306
- * Find item index by ID
307
- */
308
- findIndex(id: string): number {
309
- return this.items.findIndex(item => item.id === id)
310
- }
311
-
312
- /**
313
- * Get playlist length
314
- */
315
- length(): number {
316
- return this.items.length
317
- }
318
-
319
- /**
320
- * Check if playlist is empty
321
- */
322
- isEmpty(): boolean {
323
- return this.items.length === 0
324
- }
325
-
326
- /**
327
- * Toggle shuffle mode
328
- */
329
- toggleShuffle(): boolean {
330
- this.config.shuffle = !this.config.shuffle
331
-
332
- if (this.config.shuffle) {
333
- this.shufflePlaylist()
334
- } else {
335
- this.unshufflePlaylist()
336
- }
337
-
338
- this.emit('shuffleChanged', { playlist: this.items })
339
- this.emit('configChanged', { playlist: this.items })
340
- return this.config.shuffle
341
- }
342
-
343
- /**
344
- * Set repeat mode
345
- */
346
- setRepeat(mode: 'none' | 'one' | 'all'): void {
347
- this.config.repeat = mode
348
- this.emit('repeatChanged', { playlist: this.items })
349
- this.emit('configChanged', { playlist: this.items })
350
- }
351
-
352
- /**
353
- * Update configuration
354
- */
355
- updateConfig(config: Partial<PlaylistConfig>): void {
356
- this.config = { ...this.config, ...config }
357
- this.emit('configChanged', { playlist: this.items })
358
- }
359
-
360
- /**
361
- * Get configuration
362
- */
363
- getConfig(): PlaylistConfig {
364
- return { ...this.config }
365
- }
366
-
367
- /**
368
- * Add event listener
369
- */
370
- addEventListener(event: PlaylistEvent, callback: Function): () => void {
371
- if (!this.eventListeners.has(event)) {
372
- this.eventListeners.set(event, new Set())
373
- }
374
-
375
- this.eventListeners.get(event)!.add(callback)
376
-
377
- return () => {
378
- const listeners = this.eventListeners.get(event)
379
- if (listeners) {
380
- listeners.delete(callback)
381
- }
382
- }
383
- }
384
-
385
- /**
386
- * Get next index based on current configuration
387
- */
388
- private getNextIndex(): number {
389
- if (this.items.length === 0) return -1
390
-
391
- if (this.config.repeat === 'one') {
392
- return this.currentIndex
393
- }
394
-
395
- if (this.currentIndex < this.items.length - 1) {
396
- return this.currentIndex + 1
397
- }
398
-
399
- if (this.config.repeat === 'all') {
400
- return 0
401
- }
402
-
403
- return -1
404
- }
405
-
406
- /**
407
- * Get previous index
408
- */
409
- private getPreviousIndex(): number {
410
- if (this.items.length === 0) return -1
411
-
412
- if (this.config.repeat === 'one') {
413
- return this.currentIndex
414
- }
415
-
416
- if (this.currentIndex > 0) {
417
- return this.currentIndex - 1
418
- }
419
-
420
- if (this.config.repeat === 'all') {
421
- return this.items.length - 1
422
- }
423
-
424
- return -1
425
- }
426
-
427
- /**
428
- * Shuffle playlist
429
- */
430
- private shufflePlaylist(): void {
431
- if (this.items.length <= 1) return
432
-
433
- const currentItem = this.getCurrentItem()
434
-
435
- // Fisher-Yates shuffle
436
- for (let i = this.items.length - 1; i > 0; i--) {
437
- const j = Math.floor(Math.random() * (i + 1))
438
- ;[this.items[i], this.items[j]] = [this.items[j], this.items[i]]
439
- }
440
-
441
- // Move current item to the beginning if it exists
442
- if (currentItem) {
443
- const currentItemIndex = this.items.findIndex(item => item.id === currentItem.id)
444
- if (currentItemIndex > 0) {
445
- ;[this.items[0], this.items[currentItemIndex]] = [this.items[currentItemIndex], this.items[0]]
446
- }
447
- this.currentIndex = 0
448
- }
449
- }
450
-
451
- /**
452
- * Restore original order
453
- */
454
- private unshufflePlaylist(): void {
455
- const currentItem = this.getCurrentItem()
456
- this.items = [...this.originalOrder]
457
-
458
- if (currentItem) {
459
- this.currentIndex = this.items.findIndex(item => item.id === currentItem.id)
460
- }
461
- }
462
-
463
- /**
464
- * Add to history
465
- */
466
- private addToHistory(index: number): void {
467
- // Remove any future history items
468
- this.history = this.history.slice(0, this.historyIndex + 1)
469
-
470
- // Add new index
471
- this.history.push(index)
472
- this.historyIndex = this.history.length - 1
473
-
474
- // Limit history size
475
- const maxHistory = 50
476
- if (this.history.length > maxHistory) {
477
- this.history = this.history.slice(-maxHistory)
478
- this.historyIndex = this.history.length - 1
479
- }
480
- }
481
-
482
- /**
483
- * Clear history
484
- */
485
- private clearHistory(): void {
486
- this.history = []
487
- this.historyIndex = -1
488
- }
489
-
490
- /**
491
- * Emit events
492
- */
493
- private emit(event: PlaylistEvent, data?: PlaylistEventData): void {
494
- const listeners = this.eventListeners.get(event)
495
- if (listeners) {
496
- listeners.forEach(callback => {
497
- try {
498
- callback(data)
499
- } catch (error) {
500
- console.error(`Error in playlist event listener for ${event}:`, error)
501
- }
502
- })
503
- }
504
- }
505
-
506
- /**
507
- * Export playlist as JSON
508
- */
509
- export(): string {
510
- return JSON.stringify({
511
- items: this.items,
512
- currentIndex: this.currentIndex,
513
- config: this.config
514
- }, null, 2)
515
- }
516
-
517
- /**
518
- * Import playlist from JSON
519
- */
520
- import(jsonData: string): boolean {
521
- try {
522
- const data = JSON.parse(jsonData)
523
-
524
- if (data.items && Array.isArray(data.items)) {
525
- this.clear()
526
- this.add(data.items)
527
-
528
- if (typeof data.currentIndex === 'number') {
529
- this.setCurrentIndex(data.currentIndex)
530
- }
531
-
532
- if (data.config) {
533
- this.updateConfig(data.config)
534
- }
535
-
536
- return true
537
- }
538
- } catch (error) {
539
- console.error('Failed to import playlist:', error)
540
- }
541
-
542
- return false
543
- }
544
-
545
- /**
546
- * Create a new playlist from URLs
547
- */
548
- static fromUrls(urls: string[], titleExtractor?: (url: string) => string): PlaylistManager {
549
- const playlist = new PlaylistManager()
550
- const items: PlaylistItem[] = urls.map((url, index) => ({
551
- id: `item-${Date.now()}-${index}`,
552
- title: titleExtractor ? titleExtractor(url) : `Media ${index + 1}`,
553
- src: url
554
- }))
555
-
556
- playlist.add(items)
557
- return playlist
558
- }
559
-
560
- /**
561
- * Cleanup resources
562
- */
563
- destroy(): void {
564
- this.clear()
565
- this.eventListeners.clear()
566
- this.clearHistory()
567
- }
63
+ private items: PlaylistItem[] = []
64
+ private currentIndex: number = -1
65
+ private originalOrder: PlaylistItem[] = []
66
+ private config: PlaylistConfig = {
67
+ shuffle: false,
68
+ repeat: "none",
69
+ autoplay: true,
70
+ crossfade: 0,
71
+ gapless: false
72
+ }
73
+ private eventListeners: Map<PlaylistEvent, Set<Function>> = new Map()
74
+ private history: number[] = []
75
+ private historyIndex: number = -1
76
+
77
+ constructor(config?: Partial<PlaylistConfig>) {
78
+ if (config) {
79
+ this.updateConfig(config)
80
+ }
81
+ }
82
+
83
+ /**
84
+ * Add item(s) to playlist
85
+ */
86
+ add(items: PlaylistItem | PlaylistItem[], index?: number): void {
87
+ const itemsToAdd = Array.isArray(items) ? items : [items]
88
+
89
+ if (index !== undefined && index >= 0 && index <= this.items.length) {
90
+ this.items.splice(index, 0, ...itemsToAdd)
91
+ this.originalOrder.splice(index, 0, ...itemsToAdd)
92
+
93
+ // Adjust current index if needed
94
+ if (index <= this.currentIndex) {
95
+ this.currentIndex += itemsToAdd.length
96
+ }
97
+ } else {
98
+ this.items.push(...itemsToAdd)
99
+ this.originalOrder.push(...itemsToAdd)
100
+ }
101
+
102
+ // If this is the first item and no current item is set
103
+ if (this.currentIndex === -1 && this.items.length > 0) {
104
+ this.currentIndex = 0
105
+ this.addToHistory(0)
106
+ }
107
+
108
+ itemsToAdd.forEach((item) => {
109
+ this.emit("itemAdded", { currentItem: item, playlist: this.items })
110
+ })
111
+
112
+ this.emit("playlistChanged", { playlist: this.items })
113
+ }
114
+
115
+ /**
116
+ * Remove item(s) from playlist
117
+ */
118
+ remove(indices: number | number[]): PlaylistItem[] {
119
+ const indicesToRemove = Array.isArray(indices) ? indices.sort((a, b) => b - a) : [indices]
120
+ const removedItems: PlaylistItem[] = []
121
+
122
+ indicesToRemove.forEach((index) => {
123
+ if (index >= 0 && index < this.items.length) {
124
+ const [removedItem] = this.items.splice(index, 1)
125
+ const [originalItem] = this.originalOrder.splice(
126
+ this.originalOrder.findIndex((item) => item.id === removedItem.id),
127
+ 1
128
+ )
129
+
130
+ removedItems.push(removedItem)
131
+
132
+ // Adjust current index
133
+ if (index < this.currentIndex) {
134
+ this.currentIndex--
135
+ } else if (index === this.currentIndex) {
136
+ // If we removed the current item, stay at the same index
137
+ // (which now points to the next item)
138
+ if (this.currentIndex >= this.items.length) {
139
+ this.currentIndex = this.items.length - 1
140
+ }
141
+ }
142
+
143
+ this.emit("itemRemoved", { currentItem: removedItem, playlist: this.items })
144
+ }
145
+ })
146
+
147
+ // Update current index bounds
148
+ if (this.items.length === 0) {
149
+ this.currentIndex = -1
150
+ this.clearHistory()
151
+ } else if (this.currentIndex >= this.items.length) {
152
+ this.currentIndex = this.items.length - 1
153
+ }
154
+
155
+ this.emit("playlistChanged", { playlist: this.items })
156
+ return removedItems
157
+ }
158
+
159
+ /**
160
+ * Move item to new position
161
+ */
162
+ move(fromIndex: number, toIndex: number): boolean {
163
+ if (
164
+ fromIndex < 0 ||
165
+ fromIndex >= this.items.length ||
166
+ toIndex < 0 ||
167
+ toIndex >= this.items.length ||
168
+ fromIndex === toIndex
169
+ ) {
170
+ return false
171
+ }
172
+
173
+ const [movedItem] = this.items.splice(fromIndex, 1)
174
+ this.items.splice(toIndex, 0, movedItem)
175
+
176
+ // Update current index
177
+ if (fromIndex === this.currentIndex) {
178
+ this.currentIndex = toIndex
179
+ } else if (fromIndex < this.currentIndex && toIndex >= this.currentIndex) {
180
+ this.currentIndex--
181
+ } else if (fromIndex > this.currentIndex && toIndex <= this.currentIndex) {
182
+ this.currentIndex++
183
+ }
184
+
185
+ this.emit("playlistChanged", { playlist: this.items })
186
+ return true
187
+ }
188
+
189
+ /**
190
+ * Clear all items
191
+ */
192
+ clear(): void {
193
+ this.items = []
194
+ this.originalOrder = []
195
+ this.currentIndex = -1
196
+ this.clearHistory()
197
+ this.emit("playlistChanged", { playlist: this.items })
198
+ }
199
+
200
+ /**
201
+ * Get current item
202
+ */
203
+ getCurrentItem(): PlaylistItem | null {
204
+ return this.currentIndex >= 0 && this.currentIndex < this.items.length
205
+ ? this.items[this.currentIndex]
206
+ : null
207
+ }
208
+
209
+ /**
210
+ * Get current index
211
+ */
212
+ getCurrentIndex(): number {
213
+ return this.currentIndex
214
+ }
215
+
216
+ /**
217
+ * Set current item by index
218
+ */
219
+ setCurrentIndex(index: number): boolean {
220
+ if (index >= 0 && index < this.items.length) {
221
+ const previousIndex = this.currentIndex
222
+ this.currentIndex = index
223
+ this.addToHistory(index)
224
+
225
+ this.emit("currentItemChanged", {
226
+ currentItem: this.items[index],
227
+ currentIndex: index,
228
+ previousItem: previousIndex >= 0 ? this.items[previousIndex] : undefined
229
+ })
230
+ return true
231
+ }
232
+ return false
233
+ }
234
+
235
+ /**
236
+ * Set current item by ID
237
+ */
238
+ setCurrentById(id: string): boolean {
239
+ const index = this.items.findIndex((item) => item.id === id)
240
+ return index >= 0 ? this.setCurrentIndex(index) : false
241
+ }
242
+
243
+ /**
244
+ * Get next item
245
+ */
246
+ getNext(): PlaylistItem | null {
247
+ const nextIndex = this.getNextIndex()
248
+ return nextIndex >= 0 ? this.items[nextIndex] : null
249
+ }
250
+
251
+ /**
252
+ * Get previous item
253
+ */
254
+ getPrevious(): PlaylistItem | null {
255
+ const prevIndex = this.getPreviousIndex()
256
+ return prevIndex >= 0 ? this.items[prevIndex] : null
257
+ }
258
+
259
+ /**
260
+ * Move to next item
261
+ */
262
+ next(): boolean {
263
+ const nextIndex = this.getNextIndex()
264
+ return nextIndex >= 0 ? this.setCurrentIndex(nextIndex) : false
265
+ }
266
+
267
+ /**
268
+ * Move to previous item
269
+ */
270
+ previous(): boolean {
271
+ // Check history first for better navigation
272
+ if (this.historyIndex > 0) {
273
+ this.historyIndex--
274
+ const historyIndex = this.history[this.historyIndex]
275
+ if (historyIndex >= 0 && historyIndex < this.items.length) {
276
+ this.currentIndex = historyIndex
277
+ this.emit("currentItemChanged", {
278
+ currentItem: this.items[this.currentIndex],
279
+ currentIndex: this.currentIndex
280
+ })
281
+ return true
282
+ }
283
+ }
284
+
285
+ const prevIndex = this.getPreviousIndex()
286
+ return prevIndex >= 0 ? this.setCurrentIndex(prevIndex) : false
287
+ }
288
+
289
+ /**
290
+ * Get all items
291
+ */
292
+ getItems(): PlaylistItem[] {
293
+ return [...this.items]
294
+ }
295
+
296
+ /**
297
+ * Get item by index
298
+ */
299
+ getItem(index: number): PlaylistItem | null {
300
+ return index >= 0 && index < this.items.length ? this.items[index] : null
301
+ }
302
+
303
+ /**
304
+ * Get item by ID
305
+ */
306
+ getItemById(id: string): PlaylistItem | null {
307
+ return this.items.find((item) => item.id === id) || null
308
+ }
309
+
310
+ /**
311
+ * Find item index by ID
312
+ */
313
+ findIndex(id: string): number {
314
+ return this.items.findIndex((item) => item.id === id)
315
+ }
316
+
317
+ /**
318
+ * Get playlist length
319
+ */
320
+ length(): number {
321
+ return this.items.length
322
+ }
323
+
324
+ /**
325
+ * Check if playlist is empty
326
+ */
327
+ isEmpty(): boolean {
328
+ return this.items.length === 0
329
+ }
330
+
331
+ /**
332
+ * Toggle shuffle mode
333
+ */
334
+ toggleShuffle(): boolean {
335
+ this.config.shuffle = !this.config.shuffle
336
+
337
+ if (this.config.shuffle) {
338
+ this.shufflePlaylist()
339
+ } else {
340
+ this.unshufflePlaylist()
341
+ }
342
+
343
+ this.emit("shuffleChanged", { playlist: this.items })
344
+ this.emit("configChanged", { playlist: this.items })
345
+ return this.config.shuffle
346
+ }
347
+
348
+ /**
349
+ * Set repeat mode
350
+ */
351
+ setRepeat(mode: "none" | "one" | "all"): void {
352
+ this.config.repeat = mode
353
+ this.emit("repeatChanged", { playlist: this.items })
354
+ this.emit("configChanged", { playlist: this.items })
355
+ }
356
+
357
+ /**
358
+ * Update configuration
359
+ */
360
+ updateConfig(config: Partial<PlaylistConfig>): void {
361
+ this.config = { ...this.config, ...config }
362
+ this.emit("configChanged", { playlist: this.items })
363
+ }
364
+
365
+ /**
366
+ * Get configuration
367
+ */
368
+ getConfig(): PlaylistConfig {
369
+ return { ...this.config }
370
+ }
371
+
372
+ /**
373
+ * Add event listener
374
+ */
375
+ addEventListener(event: PlaylistEvent, callback: Function): () => void {
376
+ if (!this.eventListeners.has(event)) {
377
+ this.eventListeners.set(event, new Set())
378
+ }
379
+
380
+ this.eventListeners.get(event)!.add(callback)
381
+
382
+ return () => {
383
+ const listeners = this.eventListeners.get(event)
384
+ if (listeners) {
385
+ listeners.delete(callback)
386
+ }
387
+ }
388
+ }
389
+
390
+ /**
391
+ * Get next index based on current configuration
392
+ */
393
+ private getNextIndex(): number {
394
+ if (this.items.length === 0) return -1
395
+
396
+ if (this.config.repeat === "one") {
397
+ return this.currentIndex
398
+ }
399
+
400
+ if (this.currentIndex < this.items.length - 1) {
401
+ return this.currentIndex + 1
402
+ }
403
+
404
+ if (this.config.repeat === "all") {
405
+ return 0
406
+ }
407
+
408
+ return -1
409
+ }
410
+
411
+ /**
412
+ * Get previous index
413
+ */
414
+ private getPreviousIndex(): number {
415
+ if (this.items.length === 0) return -1
416
+
417
+ if (this.config.repeat === "one") {
418
+ return this.currentIndex
419
+ }
420
+
421
+ if (this.currentIndex > 0) {
422
+ return this.currentIndex - 1
423
+ }
424
+
425
+ if (this.config.repeat === "all") {
426
+ return this.items.length - 1
427
+ }
428
+
429
+ return -1
430
+ }
431
+
432
+ /**
433
+ * Shuffle playlist
434
+ */
435
+ private shufflePlaylist(): void {
436
+ if (this.items.length <= 1) return
437
+
438
+ const currentItem = this.getCurrentItem()
439
+
440
+ // Fisher-Yates shuffle
441
+ for (let i = this.items.length - 1; i > 0; i--) {
442
+ const j = Math.floor(Math.random() * (i + 1))
443
+ ;[this.items[i], this.items[j]] = [this.items[j], this.items[i]]
444
+ }
445
+
446
+ // Move current item to the beginning if it exists
447
+ if (currentItem) {
448
+ const currentItemIndex = this.items.findIndex((item) => item.id === currentItem.id)
449
+ if (currentItemIndex > 0) {
450
+ ;[this.items[0], this.items[currentItemIndex]] = [
451
+ this.items[currentItemIndex],
452
+ this.items[0]
453
+ ]
454
+ }
455
+ this.currentIndex = 0
456
+ }
457
+ }
458
+
459
+ /**
460
+ * Restore original order
461
+ */
462
+ private unshufflePlaylist(): void {
463
+ const currentItem = this.getCurrentItem()
464
+ this.items = [...this.originalOrder]
465
+
466
+ if (currentItem) {
467
+ this.currentIndex = this.items.findIndex((item) => item.id === currentItem.id)
468
+ }
469
+ }
470
+
471
+ /**
472
+ * Add to history
473
+ */
474
+ private addToHistory(index: number): void {
475
+ // Remove any future history items
476
+ this.history = this.history.slice(0, this.historyIndex + 1)
477
+
478
+ // Add new index
479
+ this.history.push(index)
480
+ this.historyIndex = this.history.length - 1
481
+
482
+ // Limit history size
483
+ const maxHistory = 50
484
+ if (this.history.length > maxHistory) {
485
+ this.history = this.history.slice(-maxHistory)
486
+ this.historyIndex = this.history.length - 1
487
+ }
488
+ }
489
+
490
+ /**
491
+ * Clear history
492
+ */
493
+ private clearHistory(): void {
494
+ this.history = []
495
+ this.historyIndex = -1
496
+ }
497
+
498
+ /**
499
+ * Emit events
500
+ */
501
+ private emit(event: PlaylistEvent, data?: PlaylistEventData): void {
502
+ const listeners = this.eventListeners.get(event)
503
+ if (listeners) {
504
+ listeners.forEach((callback) => {
505
+ try {
506
+ callback(data)
507
+ } catch (error) {
508
+ console.error(`Error in playlist event listener for ${event}:`, error)
509
+ }
510
+ })
511
+ }
512
+ }
513
+
514
+ /**
515
+ * Export playlist as JSON
516
+ */
517
+ export(): string {
518
+ return JSON.stringify(
519
+ {
520
+ items: this.items,
521
+ currentIndex: this.currentIndex,
522
+ config: this.config
523
+ },
524
+ null,
525
+ 2
526
+ )
527
+ }
528
+
529
+ /**
530
+ * Import playlist from JSON
531
+ */
532
+ import(jsonData: string): boolean {
533
+ try {
534
+ const data = JSON.parse(jsonData)
535
+
536
+ if (data.items && Array.isArray(data.items)) {
537
+ this.clear()
538
+ this.add(data.items)
539
+
540
+ if (typeof data.currentIndex === "number") {
541
+ this.setCurrentIndex(data.currentIndex)
542
+ }
543
+
544
+ if (data.config) {
545
+ this.updateConfig(data.config)
546
+ }
547
+
548
+ return true
549
+ }
550
+ } catch (error) {
551
+ console.error("Failed to import playlist:", error)
552
+ }
553
+
554
+ return false
555
+ }
556
+
557
+ /**
558
+ * Create a new playlist from URLs
559
+ */
560
+ static fromUrls(urls: string[], titleExtractor?: (url: string) => string): PlaylistManager {
561
+ const playlist = new PlaylistManager()
562
+ const items: PlaylistItem[] = urls.map((url, index) => ({
563
+ id: `item-${Date.now()}-${index}`,
564
+ title: titleExtractor ? titleExtractor(url) : `Media ${index + 1}`,
565
+ src: url
566
+ }))
567
+
568
+ playlist.add(items)
569
+ return playlist
570
+ }
571
+
572
+ /**
573
+ * Cleanup resources
574
+ */
575
+ destroy(): void {
576
+ this.clear()
577
+ this.eventListeners.clear()
578
+ this.clearHistory()
579
+ }
568
580
  }
569
581
 
570
582
  // Utility functions for playlist management
571
583
  export const playlistUtils = {
572
- /**
573
- * Extract title from URL
574
- */
575
- extractTitleFromUrl(url: string): string {
576
- try {
577
- const urlObj = new URL(url)
578
- const pathname = urlObj.pathname
579
- const filename = pathname.split('/').pop() || 'Media'
580
-
581
- // Remove file extension
582
- return filename.split('.')[0] || 'Media'
583
- } catch {
584
- return 'Media'
585
- }
586
- },
587
-
588
- /**
589
- * Generate unique ID
590
- */
591
- generateId(): string {
592
- return `playlist-item-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`
593
- },
594
-
595
- /**
596
- * Validate playlist item
597
- */
598
- validateItem(item: any): item is PlaylistItem {
599
- return (
600
- typeof item === 'object' &&
601
- typeof item.id === 'string' &&
602
- typeof item.title === 'string' &&
603
- typeof item.src === 'string'
604
- )
605
- }
606
- }
584
+ /**
585
+ * Extract title from URL
586
+ */
587
+ extractTitleFromUrl(url: string): string {
588
+ try {
589
+ const urlObj = new URL(url)
590
+ const pathname = urlObj.pathname
591
+ const filename = pathname.split("/").pop() || "Media"
592
+
593
+ // Remove file extension
594
+ return filename.split(".")[0] || "Media"
595
+ } catch {
596
+ return "Media"
597
+ }
598
+ },
599
+
600
+ /**
601
+ * Generate unique ID
602
+ */
603
+ generateId(): string {
604
+ return `playlist-item-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`
605
+ },
606
+
607
+ /**
608
+ * Validate playlist item
609
+ */
610
+ validateItem(item: any): item is PlaylistItem {
611
+ return (
612
+ typeof item === "object" &&
613
+ typeof item.id === "string" &&
614
+ typeof item.title === "string" &&
615
+ typeof item.src === "string"
616
+ )
617
+ }
618
+ }