@therealtinhtute/baroiplayer 1.0.8 → 1.2.0

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