@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,538 +1,544 @@
1
- import React from 'react';
1
+ import React from "react"
2
2
 
3
3
  // Network monitoring and adaptive loading
4
4
  export interface NetworkInfo {
5
- effectiveType: '2g' | '3g' | '4g' | '5g' | 'unknown';
6
- downlink: number; // Mbps
7
- rtt: number; // Round trip time in ms
8
- saveData: boolean;
9
- isOnline: boolean;
5
+ effectiveType: "2g" | "3g" | "4g" | "5g" | "unknown"
6
+ downlink: number // Mbps
7
+ rtt: number // Round trip time in ms
8
+ saveData: boolean
9
+ isOnline: boolean
10
10
  }
11
11
 
12
12
  export interface MediaLoadingConfig {
13
- preloadStrategy: 'none' | 'metadata' | 'auto';
14
- adaptiveBitrate: boolean;
15
- maxPreloadSize: number; // bytes
16
- networkThresholds: {
17
- '2g': { maxBitrate: number; preload: boolean };
18
- '3g': { maxBitrate: number; preload: boolean };
19
- '4g': { maxBitrate: number; preload: boolean };
20
- '5g': { maxBitrate: number; preload: boolean };
21
- };
22
- bufferSize: number; // seconds
23
- enableServiceWorker: boolean;
13
+ preloadStrategy: "none" | "metadata" | "auto"
14
+ adaptiveBitrate: boolean
15
+ maxPreloadSize: number // bytes
16
+ networkThresholds: {
17
+ "2g": { maxBitrate: number; preload: boolean }
18
+ "3g": { maxBitrate: number; preload: boolean }
19
+ "4g": { maxBitrate: number; preload: boolean }
20
+ "5g": { maxBitrate: number; preload: boolean }
21
+ }
22
+ bufferSize: number // seconds
23
+ enableServiceWorker: boolean
24
24
  }
25
25
 
26
26
  export const defaultMediaLoadingConfig: MediaLoadingConfig = {
27
- preloadStrategy: 'metadata',
28
- adaptiveBitrate: true,
29
- maxPreloadSize: 2 * 1024 * 1024, // 2MB
30
- networkThresholds: {
31
- '2g': { maxBitrate: 128, preload: false }, // 128 kbps
32
- '3g': { maxBitrate: 500, preload: false }, // 500 kbps
33
- '4g': { maxBitrate: 2000, preload: true }, // 2 Mbps
34
- '5g': { maxBitrate: 10000, preload: true } // 10 Mbps
35
- },
36
- bufferSize: 10, // 10 seconds
37
- enableServiceWorker: true
38
- };
27
+ preloadStrategy: "metadata",
28
+ adaptiveBitrate: true,
29
+ maxPreloadSize: 2 * 1024 * 1024, // 2MB
30
+ networkThresholds: {
31
+ "2g": { maxBitrate: 128, preload: false }, // 128 kbps
32
+ "3g": { maxBitrate: 500, preload: false }, // 500 kbps
33
+ "4g": { maxBitrate: 2000, preload: true }, // 2 Mbps
34
+ "5g": { maxBitrate: 10000, preload: true } // 10 Mbps
35
+ },
36
+ bufferSize: 10, // 10 seconds
37
+ enableServiceWorker: true
38
+ }
39
39
 
40
40
  // Media loading performance tracker
41
41
  export interface MediaLoadingMetrics {
42
- loadStartTime: number;
43
- firstByteTime?: number;
44
- loadCompleteTime?: number;
45
- totalLoadTime?: number;
46
- bytesLoaded: number;
47
- loadSpeed: number; // bytes per second
48
- networkType: string;
49
- quality: string;
50
- bufferHealth: number; // 0-1 scale
51
- stallsCount: number;
52
- stallsDuration: number;
42
+ loadStartTime: number
43
+ firstByteTime?: number
44
+ loadCompleteTime?: number
45
+ totalLoadTime?: number
46
+ bytesLoaded: number
47
+ loadSpeed: number // bytes per second
48
+ networkType: string
49
+ quality: string
50
+ bufferHealth: number // 0-1 scale
51
+ stallsCount: number
52
+ stallsDuration: number
53
53
  }
54
54
 
55
55
  // Network monitoring utility
56
56
  export class NetworkMonitor {
57
- private connection: any;
58
- private listeners: Set<(info: NetworkInfo) => void> = new Set();
59
- private currentInfo: NetworkInfo;
60
-
61
- constructor() {
62
- if (typeof window === 'undefined' || typeof navigator === 'undefined') {
63
- // Server-side rendering fallback
64
- this.connection = null;
65
- this.currentInfo = {
66
- effectiveType: 'unknown',
67
- downlink: 0,
68
- rtt: 0,
69
- saveData: false,
70
- isOnline: true
71
- };
72
- return;
73
- }
74
-
75
- this.connection = (navigator as any).connection ||
76
- (navigator as any).mozConnection ||
77
- (navigator as any).webkitConnection;
78
-
79
- this.currentInfo = this.getNetworkInfo();
80
- this.initializeListeners();
81
- }
82
-
83
- private getNetworkInfo(): NetworkInfo {
84
- if (typeof navigator === 'undefined') {
85
- // Server-side rendering fallback
86
- return {
87
- effectiveType: 'unknown',
88
- downlink: 0,
89
- rtt: 0,
90
- saveData: false,
91
- isOnline: true
92
- };
93
- }
94
-
95
- const isOnline = navigator.onLine;
96
-
97
- if (this.connection) {
98
- return {
99
- effectiveType: this.connection.effectiveType || 'unknown',
100
- downlink: this.connection.downlink || 0,
101
- rtt: this.connection.rtt || 0,
102
- saveData: this.connection.saveData || false,
103
- isOnline
104
- };
105
- }
106
-
107
- // Fallback for browsers without Network Information API
108
- return {
109
- effectiveType: 'unknown',
110
- downlink: 0,
111
- rtt: 0,
112
- saveData: false,
113
- isOnline
114
- };
115
- }
116
-
117
- private initializeListeners() {
118
- if (typeof window === 'undefined') {
119
- // Server-side rendering - skip event listeners
120
- return;
121
- }
122
-
123
- if (this.connection) {
124
- this.connection.addEventListener('change', this.handleNetworkChange.bind(this));
125
- }
126
-
127
- window.addEventListener('online', this.handleNetworkChange.bind(this));
128
- window.addEventListener('offline', this.handleNetworkChange.bind(this));
129
- }
130
-
131
- private handleNetworkChange() {
132
- const newInfo = this.getNetworkInfo();
133
- this.currentInfo = newInfo;
134
- this.listeners.forEach(listener => listener(newInfo));
135
- }
136
-
137
- getCurrentNetworkInfo(): NetworkInfo {
138
- return { ...this.currentInfo };
139
- }
140
-
141
- subscribe(listener: (info: NetworkInfo) => void): () => void {
142
- this.listeners.add(listener);
143
- return () => this.listeners.delete(listener);
144
- }
145
-
146
- // Estimate available bandwidth with fallback detection
147
- async estimateBandwidth(): Promise<number> {
148
- if (this.connection && this.connection.downlink) {
149
- return this.connection.downlink * 1000; // Convert to kbps
150
- }
151
-
152
- // Fallback: simple bandwidth test
153
- try {
154
- const startTime = performance.now();
155
- const testUrl = '/api/bandwidth-test?size=100kb'; // Would need to be implemented
156
- const response = await fetch(testUrl);
157
- const blob = await response.blob();
158
- const endTime = performance.now();
159
-
160
- const timeInSeconds = (endTime - startTime) / 1000;
161
- const bytesLoaded = blob.size;
162
- const bitsPerSecond = (bytesLoaded * 8) / timeInSeconds;
163
-
164
- return bitsPerSecond / 1000; // Return in kbps
165
- } catch (error) {
166
- console.warn('Bandwidth estimation failed:', error);
167
- return 1000; // Default to 1Mbps
168
- }
169
- }
57
+ private connection: any
58
+ private listeners: Set<(info: NetworkInfo) => void> = new Set()
59
+ private currentInfo: NetworkInfo
60
+
61
+ constructor() {
62
+ if (typeof window === "undefined" || typeof navigator === "undefined") {
63
+ // Server-side rendering fallback
64
+ this.connection = null
65
+ this.currentInfo = {
66
+ effectiveType: "unknown",
67
+ downlink: 0,
68
+ rtt: 0,
69
+ saveData: false,
70
+ isOnline: true
71
+ }
72
+ return
73
+ }
74
+
75
+ this.connection =
76
+ (navigator as any).connection ||
77
+ (navigator as any).mozConnection ||
78
+ (navigator as any).webkitConnection
79
+
80
+ this.currentInfo = this.getNetworkInfo()
81
+ this.initializeListeners()
82
+ }
83
+
84
+ private getNetworkInfo(): NetworkInfo {
85
+ if (typeof navigator === "undefined") {
86
+ // Server-side rendering fallback
87
+ return {
88
+ effectiveType: "unknown",
89
+ downlink: 0,
90
+ rtt: 0,
91
+ saveData: false,
92
+ isOnline: true
93
+ }
94
+ }
95
+
96
+ const isOnline = navigator.onLine
97
+
98
+ if (this.connection) {
99
+ return {
100
+ effectiveType: this.connection.effectiveType || "unknown",
101
+ downlink: this.connection.downlink || 0,
102
+ rtt: this.connection.rtt || 0,
103
+ saveData: this.connection.saveData || false,
104
+ isOnline
105
+ }
106
+ }
107
+
108
+ // Fallback for browsers without Network Information API
109
+ return {
110
+ effectiveType: "unknown",
111
+ downlink: 0,
112
+ rtt: 0,
113
+ saveData: false,
114
+ isOnline
115
+ }
116
+ }
117
+
118
+ private initializeListeners() {
119
+ if (typeof window === "undefined") {
120
+ // Server-side rendering - skip event listeners
121
+ return
122
+ }
123
+
124
+ if (this.connection) {
125
+ this.connection.addEventListener("change", this.handleNetworkChange.bind(this))
126
+ }
127
+
128
+ window.addEventListener("online", this.handleNetworkChange.bind(this))
129
+ window.addEventListener("offline", this.handleNetworkChange.bind(this))
130
+ }
131
+
132
+ private handleNetworkChange() {
133
+ const newInfo = this.getNetworkInfo()
134
+ this.currentInfo = newInfo
135
+ this.listeners.forEach((listener) => listener(newInfo))
136
+ }
137
+
138
+ getCurrentNetworkInfo(): NetworkInfo {
139
+ return { ...this.currentInfo }
140
+ }
141
+
142
+ subscribe(listener: (info: NetworkInfo) => void): () => void {
143
+ this.listeners.add(listener)
144
+ return () => this.listeners.delete(listener)
145
+ }
146
+
147
+ // Estimate available bandwidth with fallback detection
148
+ async estimateBandwidth(): Promise<number> {
149
+ if (this.connection && this.connection.downlink) {
150
+ return this.connection.downlink * 1000 // Convert to kbps
151
+ }
152
+
153
+ // Fallback: simple bandwidth test
154
+ try {
155
+ const startTime = performance.now()
156
+ const testUrl = "/api/bandwidth-test?size=100kb" // Would need to be implemented
157
+ const response = await fetch(testUrl)
158
+ const blob = await response.blob()
159
+ const endTime = performance.now()
160
+
161
+ const timeInSeconds = (endTime - startTime) / 1000
162
+ const bytesLoaded = blob.size
163
+ const bitsPerSecond = (bytesLoaded * 8) / timeInSeconds
164
+
165
+ return bitsPerSecond / 1000 // Return in kbps
166
+ } catch (error) {
167
+ console.warn("Bandwidth estimation failed:", error)
168
+ return 1000 // Default to 1Mbps
169
+ }
170
+ }
170
171
  }
171
172
 
172
173
  // Media loading optimizer
173
174
  export class MediaLoadingOptimizer {
174
- private config: MediaLoadingConfig;
175
- private networkMonitor: NetworkMonitor;
176
- private loadingMetrics: Map<string, MediaLoadingMetrics> = new Map();
177
- private preloadCache: Map<string, Promise<Blob>> = new Map();
178
-
179
- constructor(config: Partial<MediaLoadingConfig> = {}) {
180
- this.config = { ...defaultMediaLoadingConfig, ...config };
181
- this.networkMonitor = new NetworkMonitor();
182
- this.initializeNetworkMonitoring();
183
- }
184
-
185
- private initializeNetworkMonitoring() {
186
- this.networkMonitor.subscribe((networkInfo) => {
187
- this.handleNetworkChange(networkInfo);
188
- });
189
- }
190
-
191
- private handleNetworkChange(networkInfo: NetworkInfo) {
192
- console.log('Network changed:', networkInfo);
193
-
194
- // Adjust quality based on network conditions
195
- if (this.config.adaptiveBitrate) {
196
- this.adjustQualityForNetwork(networkInfo);
197
- }
198
-
199
- // Clear preload cache if on slow network
200
- if (networkInfo.effectiveType === '2g' || networkInfo.saveData) {
201
- this.clearPreloadCache();
202
- }
203
- }
204
-
205
- // Optimize media loading based on network conditions
206
- async optimizeMediaLoading(
207
- mediaUrl: string,
208
- element: HTMLMediaElement,
209
- options: {
210
- quality?: string;
211
- preload?: boolean;
212
- priority?: 'high' | 'normal' | 'low';
213
- } = {}
214
- ): Promise<MediaLoadingMetrics> {
215
- const startTime = performance.now();
216
- const networkInfo = this.networkMonitor.getCurrentNetworkInfo();
217
-
218
- const metrics: MediaLoadingMetrics = {
219
- loadStartTime: startTime,
220
- bytesLoaded: 0,
221
- loadSpeed: 0,
222
- networkType: networkInfo.effectiveType,
223
- quality: options.quality || 'auto',
224
- bufferHealth: 0,
225
- stallsCount: 0,
226
- stallsDuration: 0
227
- };
228
-
229
- this.loadingMetrics.set(mediaUrl, metrics);
230
-
231
- try {
232
- // Choose optimal loading strategy
233
- const loadingStrategy = this.chooseLoadingStrategy(networkInfo, options);
234
-
235
- // Apply preload strategy
236
- if (loadingStrategy.shouldPreload) {
237
- await this.preloadMedia(mediaUrl, loadingStrategy.preloadAmount);
238
- }
239
-
240
- // Set appropriate preload attribute
241
- element.preload = loadingStrategy.preloadAttribute;
242
-
243
- // Monitor loading progress
244
- this.monitorLoadingProgress(element, metrics);
245
-
246
- // Apply quality adjustments
247
- if (this.config.adaptiveBitrate && loadingStrategy.suggestedQuality) {
248
- this.applyQualitySettings(element, loadingStrategy.suggestedQuality);
249
- }
250
-
251
- return metrics;
252
- } catch (error) {
253
- console.error('Media loading optimization failed:', error);
254
- return metrics;
255
- }
256
- }
257
-
258
- private chooseLoadingStrategy(
259
- networkInfo: NetworkInfo,
260
- options: { preload?: boolean; priority?: string; quality?: string }
261
- ) {
262
- const effectiveType = networkInfo.effectiveType === 'unknown' ? '4g' : networkInfo.effectiveType;
263
- const threshold = this.config.networkThresholds[effectiveType] ||
264
- this.config.networkThresholds['4g'];
265
-
266
- return {
267
- shouldPreload: options.preload !== false && threshold.preload && !networkInfo.saveData,
268
- preloadAmount: networkInfo.saveData ? 0 : this.config.maxPreloadSize,
269
- preloadAttribute: this.getPreloadAttribute(networkInfo),
270
- suggestedQuality: this.getSuggestedQuality(networkInfo, threshold.maxBitrate),
271
- bufferTarget: this.getBufferTarget(networkInfo)
272
- };
273
- }
274
-
275
- private getPreloadAttribute(networkInfo: NetworkInfo): 'none' | 'metadata' | 'auto' {
276
- if (networkInfo.saveData || networkInfo.effectiveType === '2g') {
277
- return 'none';
278
- }
279
-
280
- if (networkInfo.effectiveType === '3g') {
281
- return 'metadata';
282
- }
283
-
284
- return this.config.preloadStrategy;
285
- }
286
-
287
- private getSuggestedQuality(networkInfo: NetworkInfo, maxBitrate: number): string {
288
- const availableBandwidth = networkInfo.downlink * 1000; // Convert to kbps
289
-
290
- if (availableBandwidth >= maxBitrate * 2) return 'high';
291
- if (availableBandwidth >= maxBitrate) return 'medium';
292
- return 'low';
293
- }
294
-
295
- private getBufferTarget(networkInfo: NetworkInfo): number {
296
- switch (networkInfo.effectiveType) {
297
- case '2g': return 2; // 2 seconds
298
- case '3g': return 5; // 5 seconds
299
- case '4g': return this.config.bufferSize;
300
- case '5g': return this.config.bufferSize * 1.5;
301
- default: return this.config.bufferSize;
302
- }
303
- }
304
-
305
- // Preload media content
306
- async preloadMedia(url: string, maxSize: number): Promise<void> {
307
- if (this.preloadCache.has(url)) {
308
- return; // Already preloading or preloaded
309
- }
310
-
311
- const preloadPromise = this.fetchWithProgress(url, maxSize);
312
- this.preloadCache.set(url, preloadPromise);
313
-
314
- try {
315
- await preloadPromise;
316
- } catch (error) {
317
- console.warn(`Preload failed for ${url}:`, error);
318
- this.preloadCache.delete(url);
319
- }
320
- }
321
-
322
- private async fetchWithProgress(url: string, maxSize: number): Promise<Blob> {
323
- const response = await fetch(url, {
324
- headers: {
325
- 'Range': `bytes=0-${maxSize - 1}` // Limit preload size
326
- }
327
- });
328
-
329
- if (!response.ok) {
330
- throw new Error(`Failed to preload: ${response.status}`);
331
- }
332
-
333
- const reader = response.body?.getReader();
334
- if (!reader) {
335
- throw new Error('Response body not readable');
336
- }
337
-
338
- const chunks: Uint8Array[] = [];
339
- let bytesRead = 0;
340
-
341
- try {
342
- while (bytesRead < maxSize) {
343
- const { done, value } = await reader.read();
344
- if (done) break;
345
-
346
- chunks.push(value);
347
- bytesRead += value.length;
348
- }
349
- } finally {
350
- reader.releaseLock();
351
- }
352
-
353
- return new Blob(chunks);
354
- }
355
-
356
- // Monitor loading progress and update metrics
357
- private monitorLoadingProgress(element: HTMLMediaElement, metrics: MediaLoadingMetrics) {
358
- let stallStartTime: number | null = null;
359
-
360
- const updateMetrics = () => {
361
- if (element.buffered.length > 0) {
362
- const bufferedEnd = element.buffered.end(element.buffered.length - 1);
363
- const currentTime = element.currentTime;
364
- metrics.bufferHealth = Math.min((bufferedEnd - currentTime) / this.config.bufferSize, 1);
365
- }
366
- };
367
-
368
- // Track first byte
369
- const onLoadStart = () => {
370
- metrics.firstByteTime = performance.now();
371
- };
372
-
373
- // Track load completion
374
- const onCanPlay = () => {
375
- metrics.loadCompleteTime = performance.now();
376
- metrics.totalLoadTime = metrics.loadCompleteTime - metrics.loadStartTime;
377
-
378
- // Calculate load speed
379
- if (metrics.totalLoadTime && metrics.bytesLoaded > 0) {
380
- metrics.loadSpeed = metrics.bytesLoaded / (metrics.totalLoadTime / 1000);
381
- }
382
- };
383
-
384
- // Track stalls
385
- const onWaiting = () => {
386
- if (stallStartTime === null) {
387
- stallStartTime = performance.now();
388
- metrics.stallsCount++;
389
- }
390
- };
391
-
392
- const onPlaying = () => {
393
- if (stallStartTime !== null) {
394
- metrics.stallsDuration += performance.now() - stallStartTime;
395
- stallStartTime = null;
396
- }
397
- updateMetrics();
398
- };
399
-
400
- // Track progress
401
- const onProgress = () => {
402
- if (element.buffered.length > 0) {
403
- const bufferedBytes = element.buffered.end(0) * 1000; // Rough estimate
404
- metrics.bytesLoaded = bufferedBytes;
405
- }
406
- updateMetrics();
407
- };
408
-
409
- // Add event listeners
410
- element.addEventListener('loadstart', onLoadStart);
411
- element.addEventListener('canplay', onCanPlay);
412
- element.addEventListener('waiting', onWaiting);
413
- element.addEventListener('playing', onPlaying);
414
- element.addEventListener('progress', onProgress);
415
-
416
- // Cleanup function
417
- const cleanup = () => {
418
- element.removeEventListener('loadstart', onLoadStart);
419
- element.removeEventListener('canplay', onCanPlay);
420
- element.removeEventListener('waiting', onWaiting);
421
- element.removeEventListener('playing', onPlaying);
422
- element.removeEventListener('progress', onProgress);
423
- };
424
-
425
- // Auto-cleanup after 5 minutes
426
- setTimeout(cleanup, 5 * 60 * 1000);
427
- }
428
-
429
- // Apply quality settings (would integrate with HLS.js or similar)
430
- private applyQualitySettings(element: HTMLMediaElement, quality: string) {
431
- // This would integrate with your video streaming library
432
- console.log(`Applying quality setting: ${quality} to`, element);
433
-
434
- // Example integration with HLS.js:
435
- // if (element.hls) {
436
- // element.hls.currentLevel = this.getQualityLevel(quality);
437
- // }
438
- }
439
-
440
- private adjustQualityForNetwork(networkInfo: NetworkInfo) {
441
- // Auto-adjust quality for all active media elements
442
- console.log('Adjusting quality for network conditions:', networkInfo.effectiveType);
443
- }
444
-
445
- // Clear preload cache to save memory
446
- clearPreloadCache() {
447
- this.preloadCache.clear();
448
- }
449
-
450
- // Get loading metrics for a specific media URL
451
- getLoadingMetrics(url: string): MediaLoadingMetrics | undefined {
452
- return this.loadingMetrics.get(url);
453
- }
454
-
455
- // Get all loading metrics
456
- getAllMetrics(): MediaLoadingMetrics[] {
457
- return Array.from(this.loadingMetrics.values());
458
- }
459
-
460
- // Calculate average loading performance
461
- getAverageLoadingTime(): number {
462
- const metrics = this.getAllMetrics();
463
- const completedLoads = metrics.filter(m => m.totalLoadTime !== undefined);
464
-
465
- if (completedLoads.length === 0) return 0;
466
-
467
- const total = completedLoads.reduce((sum, m) => sum + (m.totalLoadTime || 0), 0);
468
- return total / completedLoads.length;
469
- }
470
-
471
- // Get network-specific performance stats
472
- getNetworkPerformanceStats(): {
473
- networkType: string;
474
- avgLoadTime: number;
475
- avgStalls: number;
476
- avgBufferHealth: number;
477
- }[] {
478
- const statsByNetwork = new Map<string, MediaLoadingMetrics[]>();
479
-
480
- this.getAllMetrics().forEach(metrics => {
481
- const network = metrics.networkType;
482
- if (!statsByNetwork.has(network)) {
483
- statsByNetwork.set(network, []);
484
- }
485
- statsByNetwork.get(network)!.push(metrics);
486
- });
487
-
488
- return Array.from(statsByNetwork.entries()).map(([networkType, metrics]) => ({
489
- networkType,
490
- avgLoadTime: metrics.reduce((sum, m) => sum + (m.totalLoadTime || 0), 0) / metrics.length,
491
- avgStalls: metrics.reduce((sum, m) => sum + m.stallsCount, 0) / metrics.length,
492
- avgBufferHealth: metrics.reduce((sum, m) => sum + m.bufferHealth, 0) / metrics.length
493
- }));
494
- }
175
+ private config: MediaLoadingConfig
176
+ private networkMonitor: NetworkMonitor
177
+ private loadingMetrics: Map<string, MediaLoadingMetrics> = new Map()
178
+ private preloadCache: Map<string, Promise<Blob>> = new Map()
179
+
180
+ constructor(config: Partial<MediaLoadingConfig> = {}) {
181
+ this.config = { ...defaultMediaLoadingConfig, ...config }
182
+ this.networkMonitor = new NetworkMonitor()
183
+ this.initializeNetworkMonitoring()
184
+ }
185
+
186
+ private initializeNetworkMonitoring() {
187
+ this.networkMonitor.subscribe((networkInfo) => {
188
+ this.handleNetworkChange(networkInfo)
189
+ })
190
+ }
191
+
192
+ private handleNetworkChange(networkInfo: NetworkInfo) {
193
+ console.log("Network changed:", networkInfo)
194
+
195
+ // Adjust quality based on network conditions
196
+ if (this.config.adaptiveBitrate) {
197
+ this.adjustQualityForNetwork(networkInfo)
198
+ }
199
+
200
+ // Clear preload cache if on slow network
201
+ if (networkInfo.effectiveType === "2g" || networkInfo.saveData) {
202
+ this.clearPreloadCache()
203
+ }
204
+ }
205
+
206
+ // Optimize media loading based on network conditions
207
+ async optimizeMediaLoading(
208
+ mediaUrl: string,
209
+ element: HTMLMediaElement,
210
+ options: {
211
+ quality?: string
212
+ preload?: boolean
213
+ priority?: "high" | "normal" | "low"
214
+ } = {}
215
+ ): Promise<MediaLoadingMetrics> {
216
+ const startTime = performance.now()
217
+ const networkInfo = this.networkMonitor.getCurrentNetworkInfo()
218
+
219
+ const metrics: MediaLoadingMetrics = {
220
+ loadStartTime: startTime,
221
+ bytesLoaded: 0,
222
+ loadSpeed: 0,
223
+ networkType: networkInfo.effectiveType,
224
+ quality: options.quality || "auto",
225
+ bufferHealth: 0,
226
+ stallsCount: 0,
227
+ stallsDuration: 0
228
+ }
229
+
230
+ this.loadingMetrics.set(mediaUrl, metrics)
231
+
232
+ try {
233
+ // Choose optimal loading strategy
234
+ const loadingStrategy = this.chooseLoadingStrategy(networkInfo, options)
235
+
236
+ // Apply preload strategy
237
+ if (loadingStrategy.shouldPreload) {
238
+ await this.preloadMedia(mediaUrl, loadingStrategy.preloadAmount)
239
+ }
240
+
241
+ // Set appropriate preload attribute
242
+ element.preload = loadingStrategy.preloadAttribute
243
+
244
+ // Monitor loading progress
245
+ this.monitorLoadingProgress(element, metrics)
246
+
247
+ // Apply quality adjustments
248
+ if (this.config.adaptiveBitrate && loadingStrategy.suggestedQuality) {
249
+ this.applyQualitySettings(element, loadingStrategy.suggestedQuality)
250
+ }
251
+
252
+ return metrics
253
+ } catch (error) {
254
+ console.error("Media loading optimization failed:", error)
255
+ return metrics
256
+ }
257
+ }
258
+
259
+ private chooseLoadingStrategy(
260
+ networkInfo: NetworkInfo,
261
+ options: { preload?: boolean; priority?: string; quality?: string }
262
+ ) {
263
+ const effectiveType = networkInfo.effectiveType === "unknown" ? "4g" : networkInfo.effectiveType
264
+ const threshold =
265
+ this.config.networkThresholds[effectiveType] || this.config.networkThresholds["4g"]
266
+
267
+ return {
268
+ shouldPreload: options.preload !== false && threshold.preload && !networkInfo.saveData,
269
+ preloadAmount: networkInfo.saveData ? 0 : this.config.maxPreloadSize,
270
+ preloadAttribute: this.getPreloadAttribute(networkInfo),
271
+ suggestedQuality: this.getSuggestedQuality(networkInfo, threshold.maxBitrate),
272
+ bufferTarget: this.getBufferTarget(networkInfo)
273
+ }
274
+ }
275
+
276
+ private getPreloadAttribute(networkInfo: NetworkInfo): "none" | "metadata" | "auto" {
277
+ if (networkInfo.saveData || networkInfo.effectiveType === "2g") {
278
+ return "none"
279
+ }
280
+
281
+ if (networkInfo.effectiveType === "3g") {
282
+ return "metadata"
283
+ }
284
+
285
+ return this.config.preloadStrategy
286
+ }
287
+
288
+ private getSuggestedQuality(networkInfo: NetworkInfo, maxBitrate: number): string {
289
+ const availableBandwidth = networkInfo.downlink * 1000 // Convert to kbps
290
+
291
+ if (availableBandwidth >= maxBitrate * 2) return "high"
292
+ if (availableBandwidth >= maxBitrate) return "medium"
293
+ return "low"
294
+ }
295
+
296
+ private getBufferTarget(networkInfo: NetworkInfo): number {
297
+ switch (networkInfo.effectiveType) {
298
+ case "2g":
299
+ return 2 // 2 seconds
300
+ case "3g":
301
+ return 5 // 5 seconds
302
+ case "4g":
303
+ return this.config.bufferSize
304
+ case "5g":
305
+ return this.config.bufferSize * 1.5
306
+ default:
307
+ return this.config.bufferSize
308
+ }
309
+ }
310
+
311
+ // Preload media content
312
+ async preloadMedia(url: string, maxSize: number): Promise<void> {
313
+ if (this.preloadCache.has(url)) {
314
+ return // Already preloading or preloaded
315
+ }
316
+
317
+ const preloadPromise = this.fetchWithProgress(url, maxSize)
318
+ this.preloadCache.set(url, preloadPromise)
319
+
320
+ try {
321
+ await preloadPromise
322
+ } catch (error) {
323
+ console.warn(`Preload failed for ${url}:`, error)
324
+ this.preloadCache.delete(url)
325
+ }
326
+ }
327
+
328
+ private async fetchWithProgress(url: string, maxSize: number): Promise<Blob> {
329
+ const response = await fetch(url, {
330
+ headers: {
331
+ Range: `bytes=0-${maxSize - 1}` // Limit preload size
332
+ }
333
+ })
334
+
335
+ if (!response.ok) {
336
+ throw new Error(`Failed to preload: ${response.status}`)
337
+ }
338
+
339
+ const reader = response.body?.getReader()
340
+ if (!reader) {
341
+ throw new Error("Response body not readable")
342
+ }
343
+
344
+ const chunks: Uint8Array[] = []
345
+ let bytesRead = 0
346
+
347
+ try {
348
+ while (bytesRead < maxSize) {
349
+ const { done, value } = await reader.read()
350
+ if (done) break
351
+
352
+ chunks.push(value)
353
+ bytesRead += value.length
354
+ }
355
+ } finally {
356
+ reader.releaseLock()
357
+ }
358
+
359
+ return new Blob(chunks)
360
+ }
361
+
362
+ // Monitor loading progress and update metrics
363
+ private monitorLoadingProgress(element: HTMLMediaElement, metrics: MediaLoadingMetrics) {
364
+ let stallStartTime: number | null = null
365
+
366
+ const updateMetrics = () => {
367
+ if (element.buffered.length > 0) {
368
+ const bufferedEnd = element.buffered.end(element.buffered.length - 1)
369
+ const currentTime = element.currentTime
370
+ metrics.bufferHealth = Math.min((bufferedEnd - currentTime) / this.config.bufferSize, 1)
371
+ }
372
+ }
373
+
374
+ // Track first byte
375
+ const onLoadStart = () => {
376
+ metrics.firstByteTime = performance.now()
377
+ }
378
+
379
+ // Track load completion
380
+ const onCanPlay = () => {
381
+ metrics.loadCompleteTime = performance.now()
382
+ metrics.totalLoadTime = metrics.loadCompleteTime - metrics.loadStartTime
383
+
384
+ // Calculate load speed
385
+ if (metrics.totalLoadTime && metrics.bytesLoaded > 0) {
386
+ metrics.loadSpeed = metrics.bytesLoaded / (metrics.totalLoadTime / 1000)
387
+ }
388
+ }
389
+
390
+ // Track stalls
391
+ const onWaiting = () => {
392
+ if (stallStartTime === null) {
393
+ stallStartTime = performance.now()
394
+ metrics.stallsCount++
395
+ }
396
+ }
397
+
398
+ const onPlaying = () => {
399
+ if (stallStartTime !== null) {
400
+ metrics.stallsDuration += performance.now() - stallStartTime
401
+ stallStartTime = null
402
+ }
403
+ updateMetrics()
404
+ }
405
+
406
+ // Track progress
407
+ const onProgress = () => {
408
+ if (element.buffered.length > 0) {
409
+ const bufferedBytes = element.buffered.end(0) * 1000 // Rough estimate
410
+ metrics.bytesLoaded = bufferedBytes
411
+ }
412
+ updateMetrics()
413
+ }
414
+
415
+ // Add event listeners
416
+ element.addEventListener("loadstart", onLoadStart)
417
+ element.addEventListener("canplay", onCanPlay)
418
+ element.addEventListener("waiting", onWaiting)
419
+ element.addEventListener("playing", onPlaying)
420
+ element.addEventListener("progress", onProgress)
421
+
422
+ // Cleanup function
423
+ const cleanup = () => {
424
+ element.removeEventListener("loadstart", onLoadStart)
425
+ element.removeEventListener("canplay", onCanPlay)
426
+ element.removeEventListener("waiting", onWaiting)
427
+ element.removeEventListener("playing", onPlaying)
428
+ element.removeEventListener("progress", onProgress)
429
+ }
430
+
431
+ // Auto-cleanup after 5 minutes
432
+ setTimeout(cleanup, 5 * 60 * 1000)
433
+ }
434
+
435
+ // Apply quality settings (would integrate with HLS.js or similar)
436
+ private applyQualitySettings(element: HTMLMediaElement, quality: string) {
437
+ // This would integrate with your video streaming library
438
+ console.log(`Applying quality setting: ${quality} to`, element)
439
+
440
+ // Example integration with HLS.js:
441
+ // if (element.hls) {
442
+ // element.hls.currentLevel = this.getQualityLevel(quality);
443
+ // }
444
+ }
445
+
446
+ private adjustQualityForNetwork(networkInfo: NetworkInfo) {
447
+ // Auto-adjust quality for all active media elements
448
+ console.log("Adjusting quality for network conditions:", networkInfo.effectiveType)
449
+ }
450
+
451
+ // Clear preload cache to save memory
452
+ clearPreloadCache() {
453
+ this.preloadCache.clear()
454
+ }
455
+
456
+ // Get loading metrics for a specific media URL
457
+ getLoadingMetrics(url: string): MediaLoadingMetrics | undefined {
458
+ return this.loadingMetrics.get(url)
459
+ }
460
+
461
+ // Get all loading metrics
462
+ getAllMetrics(): MediaLoadingMetrics[] {
463
+ return Array.from(this.loadingMetrics.values())
464
+ }
465
+
466
+ // Calculate average loading performance
467
+ getAverageLoadingTime(): number {
468
+ const metrics = this.getAllMetrics()
469
+ const completedLoads = metrics.filter((m) => m.totalLoadTime !== undefined)
470
+
471
+ if (completedLoads.length === 0) return 0
472
+
473
+ const total = completedLoads.reduce((sum, m) => sum + (m.totalLoadTime || 0), 0)
474
+ return total / completedLoads.length
475
+ }
476
+
477
+ // Get network-specific performance stats
478
+ getNetworkPerformanceStats(): {
479
+ networkType: string
480
+ avgLoadTime: number
481
+ avgStalls: number
482
+ avgBufferHealth: number
483
+ }[] {
484
+ const statsByNetwork = new Map<string, MediaLoadingMetrics[]>()
485
+
486
+ this.getAllMetrics().forEach((metrics) => {
487
+ const network = metrics.networkType
488
+ if (!statsByNetwork.has(network)) {
489
+ statsByNetwork.set(network, [])
490
+ }
491
+ statsByNetwork.get(network)!.push(metrics)
492
+ })
493
+
494
+ return Array.from(statsByNetwork.entries()).map(([networkType, metrics]) => ({
495
+ networkType,
496
+ avgLoadTime: metrics.reduce((sum, m) => sum + (m.totalLoadTime || 0), 0) / metrics.length,
497
+ avgStalls: metrics.reduce((sum, m) => sum + m.stallsCount, 0) / metrics.length,
498
+ avgBufferHealth: metrics.reduce((sum, m) => sum + m.bufferHealth, 0) / metrics.length
499
+ }))
500
+ }
495
501
  }
496
502
 
497
503
  // Global media loading optimizer instance
498
- export const mediaLoadingOptimizer = new MediaLoadingOptimizer();
504
+ export const mediaLoadingOptimizer = new MediaLoadingOptimizer()
499
505
 
500
506
  // React hook for media loading optimization
501
507
  export function useMediaLoadingOptimizer(config?: Partial<MediaLoadingConfig>) {
502
- const [optimizer] = React.useState(() =>
503
- config ? new MediaLoadingOptimizer(config) : mediaLoadingOptimizer
504
- );
505
-
506
- const [networkInfo, setNetworkInfo] = React.useState<NetworkInfo | null>(null);
507
- const [loadingMetrics, setLoadingMetrics] = React.useState<MediaLoadingMetrics[]>([]);
508
-
509
- React.useEffect(() => {
510
- const unsubscribe = optimizer['networkMonitor'].subscribe(setNetworkInfo);
511
- setNetworkInfo(optimizer['networkMonitor'].getCurrentNetworkInfo());
512
-
513
- // Update metrics periodically
514
- const interval = setInterval(() => {
515
- setLoadingMetrics(optimizer.getAllMetrics());
516
- }, 1000);
517
-
518
- return () => {
519
- unsubscribe();
520
- clearInterval(interval);
521
- };
522
- }, [optimizer]);
523
-
524
- const optimizeLoading = React.useCallback(
525
- (mediaUrl: string, element: HTMLMediaElement, options?: any) => {
526
- return optimizer.optimizeMediaLoading(mediaUrl, element, options);
527
- },
528
- [optimizer]
529
- );
530
-
531
- return {
532
- networkInfo,
533
- loadingMetrics,
534
- optimizeLoading,
535
- averageLoadTime: optimizer.getAverageLoadingTime(),
536
- networkStats: optimizer.getNetworkPerformanceStats()
537
- };
538
- }
508
+ const [optimizer] = React.useState(() =>
509
+ config ? new MediaLoadingOptimizer(config) : mediaLoadingOptimizer
510
+ )
511
+
512
+ const [networkInfo, setNetworkInfo] = React.useState<NetworkInfo | null>(null)
513
+ const [loadingMetrics, setLoadingMetrics] = React.useState<MediaLoadingMetrics[]>([])
514
+
515
+ React.useEffect(() => {
516
+ const unsubscribe = optimizer["networkMonitor"].subscribe(setNetworkInfo)
517
+ setNetworkInfo(optimizer["networkMonitor"].getCurrentNetworkInfo())
518
+
519
+ // Update metrics periodically
520
+ const interval = setInterval(() => {
521
+ setLoadingMetrics(optimizer.getAllMetrics())
522
+ }, 1000)
523
+
524
+ return () => {
525
+ unsubscribe()
526
+ clearInterval(interval)
527
+ }
528
+ }, [optimizer])
529
+
530
+ const optimizeLoading = React.useCallback(
531
+ (mediaUrl: string, element: HTMLMediaElement, options?: any) => {
532
+ return optimizer.optimizeMediaLoading(mediaUrl, element, options)
533
+ },
534
+ [optimizer]
535
+ )
536
+
537
+ return {
538
+ networkInfo,
539
+ loadingMetrics,
540
+ optimizeLoading,
541
+ averageLoadTime: optimizer.getAverageLoadingTime(),
542
+ networkStats: optimizer.getNetworkPerformanceStats()
543
+ }
544
+ }