@therealtinhtute/baroiplayer 1.0.8 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1003) hide show
  1. package/LICENSE +2 -2
  2. package/README.md +15 -15
  3. package/dist/context/media.js +2 -0
  4. package/dist/context/media.js.map +1 -0
  5. package/dist/context/media.mjs +15 -0
  6. package/dist/context/media.mjs.map +1 -0
  7. package/dist/context/store.js +2 -0
  8. package/dist/context/store.js.map +1 -0
  9. package/dist/context/store.mjs +5 -0
  10. package/dist/context/store.mjs.map +1 -0
  11. package/dist/context-BYwDoSRX.js +1172 -0
  12. package/dist/context-BYwDoSRX.js.map +1 -0
  13. package/dist/context-eNS62_ac.cjs +23 -0
  14. package/dist/context-eNS62_ac.cjs.map +1 -0
  15. package/dist/core-events-B1iM2F46.cjs +2 -0
  16. package/dist/core-events-B1iM2F46.cjs.map +1 -0
  17. package/dist/core-events-DunPHKRE.js +484 -0
  18. package/dist/core-events-DunPHKRE.js.map +1 -0
  19. package/dist/core-plugins-CROGvQUy.js +686 -0
  20. package/dist/core-plugins-CROGvQUy.js.map +1 -0
  21. package/dist/core-plugins-DtsHBOtF.cjs +2 -0
  22. package/dist/core-plugins-DtsHBOtF.cjs.map +1 -0
  23. package/dist/core.js +37 -0
  24. package/dist/core.js.map +1 -0
  25. package/dist/core.mjs +1233 -0
  26. package/dist/core.mjs.map +1 -0
  27. package/dist/enhanced-components-DUw2KrmQ.js +1142 -0
  28. package/dist/enhanced-components-DUw2KrmQ.js.map +1 -0
  29. package/dist/enhanced-components-DXBCHU0v.cjs +2 -0
  30. package/dist/enhanced-components-DXBCHU0v.cjs.map +1 -0
  31. package/dist/hooks-BW-JjVgP.cjs +4 -0
  32. package/dist/hooks-BW-JjVgP.cjs.map +1 -0
  33. package/dist/hooks-CyX6De5M.js +1693 -0
  34. package/dist/hooks-CyX6De5M.js.map +1 -0
  35. package/dist/index.css +1 -102
  36. package/dist/index.js +112 -21
  37. package/dist/index.js.map +1 -0
  38. package/dist/index.mjs +6275 -16
  39. package/dist/index.mjs.map +1 -0
  40. package/dist/minimal-components-Bdcpxav5.cjs +2 -0
  41. package/dist/minimal-components-Bdcpxav5.cjs.map +1 -0
  42. package/dist/minimal-components-DlRK7Qu_.js +1927 -0
  43. package/dist/minimal-components-DlRK7Qu_.js.map +1 -0
  44. package/dist/minimal-components.css +1 -589
  45. package/dist/mona-loading.gif +0 -0
  46. package/dist/performance-monitor-C5k6FDXw.js +301 -0
  47. package/dist/performance-monitor-C5k6FDXw.js.map +1 -0
  48. package/dist/performance-monitor-lJmuUjQQ.cjs +2 -0
  49. package/dist/performance-monitor-lJmuUjQQ.cjs.map +1 -0
  50. package/dist/utils-CFOue_9K.cjs +9 -0
  51. package/dist/utils-CFOue_9K.cjs.map +1 -0
  52. package/dist/utils-Dzpl2ArK.js +2844 -0
  53. package/dist/utils-Dzpl2ArK.js.map +1 -0
  54. package/dist/utils.js +2 -0
  55. package/dist/utils.js.map +1 -0
  56. package/dist/utils.mjs +11 -0
  57. package/dist/utils.mjs.map +1 -0
  58. package/package.json +11 -40
  59. package/src/adapters/videojs-adapter.tsx +441 -441
  60. package/src/components/AnimateLoading.tsx +85 -93
  61. package/src/components/LoadingState.tsx +199 -208
  62. package/src/components/__tests__/media-player-accessibility.test.tsx +510 -0
  63. package/src/components/__tests__/media-player-react19.test.tsx +457 -0
  64. package/src/components/accessibility/keyboard-help-overlay.tsx +199 -207
  65. package/src/components/basic/index.ts +28 -28
  66. package/src/components/enhanced/advanced-features.tsx +49 -54
  67. package/src/components/enhanced/debug-panel.tsx +148 -122
  68. package/src/components/enhanced/enhanced-controls.tsx +117 -120
  69. package/src/components/enhanced/enhanced-media-player.tsx +228 -214
  70. package/src/components/enhanced/error-handling.tsx +50 -57
  71. package/src/components/enhanced/index.ts +27 -27
  72. package/src/components/enhanced/media-player-enhanced.tsx +117 -83
  73. package/src/components/examples/basic-video-player.tsx +35 -40
  74. package/src/components/examples/enhanced-controls-example.tsx +16 -30
  75. package/src/components/examples/enhanced-media-player-example.tsx +196 -187
  76. package/src/components/examples/loading-states-demo.tsx +113 -113
  77. package/src/components/examples/react-19-demo.tsx +88 -116
  78. package/src/components/examples/volume-orientation-demo.tsx +77 -85
  79. package/src/components/icon-demo.tsx +189 -202
  80. package/src/components/icons/svg-icons/ArrowLeftIcon.tsx +13 -13
  81. package/src/components/icons/svg-icons/ArrowRightIcon.tsx +13 -13
  82. package/src/components/icons/svg-icons/AudioIcon.tsx +16 -16
  83. package/src/components/icons/svg-icons/BackwardIcon.tsx +7 -7
  84. package/src/components/icons/svg-icons/CameraIcon.tsx +13 -13
  85. package/src/components/icons/svg-icons/CheckIcon.tsx +13 -13
  86. package/src/components/icons/svg-icons/EnablePiPIcon.tsx +13 -13
  87. package/src/components/icons/svg-icons/ForwardIcon.tsx +7 -7
  88. package/src/components/icons/svg-icons/FullscreenEnterIcon.tsx +18 -18
  89. package/src/components/icons/svg-icons/FullscreenExitIcon.tsx +18 -18
  90. package/src/components/icons/svg-icons/LoadingIcon.tsx +27 -27
  91. package/src/components/icons/svg-icons/PauseIcon.tsx +18 -18
  92. package/src/components/icons/svg-icons/PlayIcon.tsx +16 -16
  93. package/src/components/icons/svg-icons/PlaybackSpeedIcon.tsx +18 -18
  94. package/src/components/icons/svg-icons/QualityIcon.tsx +16 -16
  95. package/src/components/icons/svg-icons/SettingsIcon.tsx +7 -7
  96. package/src/components/icons/svg-icons/SliderIcon.tsx +16 -16
  97. package/src/components/icons/svg-icons/SubtitleIcon.tsx +16 -16
  98. package/src/components/icons/svg-icons/SubtitleOffIcon.tsx +20 -20
  99. package/src/components/icons/svg-icons/UnPiPIcon.tsx +13 -13
  100. package/src/components/icons/svg-icons/VolumeMutedIcon.tsx +11 -11
  101. package/src/components/icons/svg-icons/VolumeOneIcon.tsx +17 -17
  102. package/src/components/icons/svg-icons/VolumeThreeIcon.tsx +11 -11
  103. package/src/components/icons/svg-icons/VolumeTwoIcon.tsx +11 -11
  104. package/src/components/legacy.tsx +8 -14
  105. package/src/components/media-metadata-display.tsx +78 -79
  106. package/src/components/media-player-controls.tsx +37 -40
  107. package/src/components/media-player-error.tsx +2 -2
  108. package/src/components/media-player-fullscreen.tsx +2 -2
  109. package/src/components/media-player-hls.tsx +89 -89
  110. package/src/components/media-player-play.tsx +2 -2
  111. package/src/components/media-player-root.tsx +20 -22
  112. package/src/components/media-player-seek.tsx +1 -1
  113. package/src/components/media-player-tooltip.tsx +1 -1
  114. package/src/components/media-player-video.tsx +28 -6
  115. package/src/components/media-player-volume.tsx +3 -3
  116. package/src/components/media-player.tsx +209 -174
  117. package/src/components/media-suspense.tsx +71 -89
  118. package/src/components/player-settings-form.tsx +143 -148
  119. package/src/components/react-player-wrapper.tsx +23 -23
  120. package/src/components/simple-video-player.tsx +53 -51
  121. package/src/components/ui/blur-poster.tsx +93 -0
  122. package/src/components/ui/empty-state.tsx +91 -0
  123. package/src/components/ui/enhanced-seek-bar.tsx +75 -56
  124. package/src/components/ui/error-state.tsx +124 -0
  125. package/src/components/ui/fullscreen-button.tsx +71 -50
  126. package/src/components/ui/loading-skeleton.tsx +107 -0
  127. package/src/components/ui/media-resource-preloader.tsx +265 -198
  128. package/src/components/ui/offline-message.tsx +98 -0
  129. package/src/components/ui/play-button.tsx +79 -87
  130. package/src/components/ui/seek-bar.tsx +170 -140
  131. package/src/components/ui/time-display.tsx +33 -12
  132. package/src/components/ui/volume-control.tsx +91 -44
  133. package/src/components/unified/base-media-player.tsx +45 -51
  134. package/src/components/unified/media-player.tsx +3 -3
  135. package/src/components/variants/minimal/AccessibleMinimalPlayer.tsx +508 -502
  136. package/src/components/variants/minimal/EnhancedMinimalMediaPlayer.tsx +108 -87
  137. package/src/components/variants/minimal/MinimalControls.tsx +100 -118
  138. package/src/components/variants/minimal/MinimalLoading.tsx +19 -23
  139. package/src/components/variants/minimal/MinimalMediaPlayer.tsx +283 -280
  140. package/src/components/variants/minimal/MinimalOverlay.tsx +43 -49
  141. package/src/components/variants/minimal/MinimalPlayButton.tsx +44 -53
  142. package/src/components/variants/minimal/MinimalSeekBar.tsx +130 -140
  143. package/src/components/variants/minimal/MinimalVolumeControl.tsx +59 -64
  144. package/src/components/variants/minimal/SimpleMinimalPlayer.tsx +29 -32
  145. package/src/components/variants/minimal/components/CenterPlayButton.tsx +1 -1
  146. package/src/components/variants/minimal/components/ControlBar.tsx +7 -11
  147. package/src/components/variants/minimal/components/EnhancedSettingsMenu.tsx +381 -330
  148. package/src/components/variants/minimal/components/PlaybackControls.tsx +6 -11
  149. package/src/components/variants/minimal/components/RightControls.tsx +8 -17
  150. package/src/components/variants/minimal/components/SeekBar.tsx +16 -20
  151. package/src/components/variants/minimal/components/SettingsDropdown.tsx +12 -14
  152. package/src/components/variants/minimal/components/SubtitleDisplay.tsx +1 -1
  153. package/src/components/variants/minimal/components/TimeDisplay.tsx +2 -5
  154. package/src/components/variants/minimal/components/VideoElement.tsx +3 -10
  155. package/src/components/variants/minimal/components/VolumeControl.tsx +42 -39
  156. package/src/components/video-player.tsx +10 -10
  157. package/src/context/__tests__/media-store.test.ts +509 -0
  158. package/src/context/error-handling.ts +106 -102
  159. package/src/context/media-context.tsx +56 -10
  160. package/src/context/media-provider.tsx +16 -17
  161. package/src/context/media-store.ts +68 -60
  162. package/src/context/persistence.ts +74 -65
  163. package/src/core/events/event-system.ts +422 -416
  164. package/src/core/events/hooks.ts +275 -252
  165. package/src/core/events/index.ts +14 -14
  166. package/src/core/events/middleware.ts +269 -252
  167. package/src/core/index.ts +8 -8
  168. package/src/core/optimization/bundle-optimizer.tsx +65 -60
  169. package/src/core/performance/cicd.ts +91 -89
  170. package/src/core/performance/index.ts +22 -22
  171. package/src/core/performance/media-loading-optimizer.ts +518 -512
  172. package/src/core/performance/performance-budgets.ts +414 -409
  173. package/src/core/performance/performance-monitor.tsx +451 -439
  174. package/src/core/performance/performance-testing.ts +439 -437
  175. package/src/core/plugins/__tests__/registry.test.ts +595 -0
  176. package/src/core/plugins/base-plugin.ts +197 -196
  177. package/src/core/plugins/enhanced-plugin-system.ts +136 -136
  178. package/src/core/plugins/examples/analytics-plugin.ts +229 -230
  179. package/src/core/plugins/index.ts +26 -26
  180. package/src/core/plugins/registry.ts +315 -323
  181. package/src/core/plugins/types.ts +97 -105
  182. package/src/core/plugins/utils.ts +292 -291
  183. package/src/core/progressive-loading.tsx +297 -288
  184. package/src/core/providers/enhanced-hls-provider.ts +118 -90
  185. package/src/core/providers/lazy-provider.tsx +51 -0
  186. package/src/core/providers/service-provider.tsx +104 -108
  187. package/src/core/utils.tsx +22 -26
  188. package/src/features/media-session/media-session-manager.ts +406 -402
  189. package/src/features/picture-in-picture/pip-manager.ts +364 -365
  190. package/src/features/playlist/playlist-manager.ts +597 -585
  191. package/src/features/subtitles/subtitle-manager.ts +424 -430
  192. package/src/features/subtitles/subtitle-parser.ts +274 -273
  193. package/src/features/thumbnails/thumbnail-generator.ts +504 -502
  194. package/src/hooks/__tests__/use-media-player.test.ts +712 -0
  195. package/src/hooks/__tests__/use-media-state.test.tsx +316 -0
  196. package/src/hooks/accessibility/index.ts +20 -20
  197. package/src/hooks/accessibility/use-accessibility-preferences.ts +177 -175
  198. package/src/hooks/accessibility/use-focus-management.ts +170 -163
  199. package/src/hooks/accessibility/use-keyboard-shortcuts.ts +132 -124
  200. package/src/hooks/accessibility/use-screen-reader.ts +191 -161
  201. package/src/hooks/core/index.ts +30 -30
  202. package/src/hooks/legacy.ts +3 -9
  203. package/src/hooks/use-buffer-health.ts +218 -0
  204. package/src/hooks/use-enhanced-media-player.ts +74 -82
  205. package/src/hooks/use-focus-trap.tsx +162 -0
  206. package/src/hooks/use-intelligent-preloading.ts +236 -232
  207. package/src/hooks/use-keyboard-controls.ts +80 -80
  208. package/src/hooks/use-keyboard-shortcuts.ts +255 -0
  209. package/src/hooks/use-media-actions.ts +81 -72
  210. package/src/hooks/use-media-metadata.ts +75 -73
  211. package/src/hooks/use-media-optimistic.ts +145 -151
  212. package/src/hooks/use-media-player.ts +109 -107
  213. package/src/hooks/use-media-state.ts +63 -59
  214. package/src/hooks/use-memory-optimization.ts +119 -117
  215. package/src/hooks/use-network-status.ts +124 -0
  216. package/src/hooks/use-optimistic-controls.ts +91 -88
  217. package/src/hooks/use-optimized-media.ts +76 -56
  218. package/src/hooks/use-smart-preload.ts +230 -0
  219. package/src/hooks/use-touch-gestures.ts +427 -383
  220. package/src/hooks/useEnhancedSubtitles.ts +245 -245
  221. package/src/hooks/useKeyboardShortcuts.ts +52 -52
  222. package/src/hooks/useMediaControls.ts +22 -22
  223. package/src/hooks/useScreenshot.ts +51 -47
  224. package/src/hooks/useSubtitles.ts +53 -53
  225. package/src/hooks/useVideoPlayer.ts +61 -61
  226. package/src/icons/components/FullscreenIcon.tsx +34 -35
  227. package/src/icons/components/SettingsIcon.tsx +35 -36
  228. package/src/icons/components/animated/LoadingIcon.tsx +25 -41
  229. package/src/icons/components/animated/PlayPauseIcon.tsx +38 -46
  230. package/src/icons/components/media/PauseIcon.tsx +36 -37
  231. package/src/icons/components/media/PlayIcon.tsx +35 -36
  232. package/src/icons/components/volume/VolumeIcon.tsx +36 -37
  233. package/src/icons/components/volume/VolumeOffIcon.tsx +36 -37
  234. package/src/icons/index.ts +38 -38
  235. package/src/icons/provider.tsx +40 -46
  236. package/src/icons/types.ts +51 -31
  237. package/src/index-enhanced.ts +10 -10
  238. package/src/index-legacy.ts +3 -4
  239. package/src/index.css +80 -80
  240. package/src/index.ts +8 -23
  241. package/src/lib/__tests__/async-utils.test.ts +291 -0
  242. package/src/lib/async-utils.ts +194 -0
  243. package/src/lib/deprecation.ts +4 -4
  244. package/src/lib/index.ts +3 -2
  245. package/src/lib/utils.ts +3 -3
  246. package/src/styles/globals.css +3 -3
  247. package/src/styles/minimal-player.css +606 -574
  248. package/src/styles/pixel-art.css +23 -28
  249. package/src/styles/videojs.css +43 -43
  250. package/src/test/accessibility-utils.ts +208 -0
  251. package/src/test/browser-simulation.ts +235 -0
  252. package/src/test/media-mocks.ts +156 -0
  253. package/src/test/performance-utils.ts +192 -0
  254. package/src/test/setup.ts +241 -44
  255. package/src/types/events.ts +30 -30
  256. package/src/types/formats.ts +56 -72
  257. package/src/types/index.ts +5 -40
  258. package/src/types/videojs-plugins.d.ts +6 -6
  259. package/dist/index.d.ts +0 -1425
  260. package/dist/package.json +0 -62
  261. package/dist/src/adapters/videojs-adapter.d.ts +0 -38
  262. package/dist/src/adapters/videojs-adapter.tsx +0 -470
  263. package/dist/src/components/AnimateLoading.d.ts +0 -9
  264. package/dist/src/components/AnimateLoading.tsx +0 -115
  265. package/dist/src/components/LoadingState.d.ts +0 -33
  266. package/dist/src/components/LoadingState.tsx +0 -248
  267. package/dist/src/components/accessibility/keyboard-help-overlay.d.ts +0 -17
  268. package/dist/src/components/accessibility/keyboard-help-overlay.tsx +0 -213
  269. package/dist/src/components/audio-player.d.ts +0 -3
  270. package/dist/src/components/audio-player.tsx +0 -85
  271. package/dist/src/components/basic/index.d.ts +0 -26
  272. package/dist/src/components/basic/index.ts +0 -37
  273. package/dist/src/components/enhanced/advanced-features.d.ts +0 -45
  274. package/dist/src/components/enhanced/advanced-features.tsx +0 -316
  275. package/dist/src/components/enhanced/debug-panel.d.ts +0 -70
  276. package/dist/src/components/enhanced/debug-panel.tsx +0 -422
  277. package/dist/src/components/enhanced/enhanced-controls.d.ts +0 -50
  278. package/dist/src/components/enhanced/enhanced-controls.tsx +0 -600
  279. package/dist/src/components/enhanced/enhanced-media-player.d.ts +0 -26
  280. package/dist/src/components/enhanced/enhanced-media-player.tsx +0 -509
  281. package/dist/src/components/enhanced/error-handling.d.ts +0 -36
  282. package/dist/src/components/enhanced/error-handling.tsx +0 -345
  283. package/dist/src/components/enhanced/index.d.ts +0 -7
  284. package/dist/src/components/enhanced/index.ts +0 -39
  285. package/dist/src/components/enhanced/media-player-enhanced.d.ts +0 -21
  286. package/dist/src/components/enhanced/media-player-enhanced.tsx +0 -349
  287. package/dist/src/components/examples/basic-video-player.d.ts +0 -10
  288. package/dist/src/components/examples/basic-video-player.tsx +0 -55
  289. package/dist/src/components/examples/custom-controls-example.d.ts +0 -10
  290. package/dist/src/components/examples/custom-controls-example.tsx +0 -63
  291. package/dist/src/components/examples/enhanced-controls-example.d.ts +0 -9
  292. package/dist/src/components/examples/enhanced-controls-example.tsx +0 -114
  293. package/dist/src/components/examples/enhanced-media-player-example.d.ts +0 -9
  294. package/dist/src/components/examples/enhanced-media-player-example.tsx +0 -293
  295. package/dist/src/components/examples/loading-states-demo.d.ts +0 -2
  296. package/dist/src/components/examples/loading-states-demo.tsx +0 -142
  297. package/dist/src/components/examples/react-19-demo.d.ts +0 -10
  298. package/dist/src/components/examples/react-19-demo.tsx +0 -381
  299. package/dist/src/components/examples/volume-orientation-demo.d.ts +0 -2
  300. package/dist/src/components/examples/volume-orientation-demo.tsx +0 -114
  301. package/dist/src/components/icon-demo.d.ts +0 -2
  302. package/dist/src/components/icon-demo.tsx +0 -209
  303. package/dist/src/components/icons/index.d.ts +0 -36
  304. package/dist/src/components/icons/index.tsx +0 -166
  305. package/dist/src/components/icons/svg-icons/ArrowLeftIcon.d.ts +0 -4
  306. package/dist/src/components/icons/svg-icons/ArrowLeftIcon.tsx +0 -18
  307. package/dist/src/components/icons/svg-icons/ArrowRightIcon.d.ts +0 -4
  308. package/dist/src/components/icons/svg-icons/ArrowRightIcon.tsx +0 -18
  309. package/dist/src/components/icons/svg-icons/AudioIcon.d.ts +0 -4
  310. package/dist/src/components/icons/svg-icons/AudioIcon.tsx +0 -22
  311. package/dist/src/components/icons/svg-icons/BackwardIcon.d.ts +0 -4
  312. package/dist/src/components/icons/svg-icons/BackwardIcon.tsx +0 -12
  313. package/dist/src/components/icons/svg-icons/CameraIcon.d.ts +0 -4
  314. package/dist/src/components/icons/svg-icons/CameraIcon.tsx +0 -19
  315. package/dist/src/components/icons/svg-icons/CheckIcon.d.ts +0 -4
  316. package/dist/src/components/icons/svg-icons/CheckIcon.tsx +0 -19
  317. package/dist/src/components/icons/svg-icons/EnablePiPIcon.d.ts +0 -4
  318. package/dist/src/components/icons/svg-icons/EnablePiPIcon.tsx +0 -17
  319. package/dist/src/components/icons/svg-icons/ForwardIcon.d.ts +0 -4
  320. package/dist/src/components/icons/svg-icons/ForwardIcon.tsx +0 -12
  321. package/dist/src/components/icons/svg-icons/FullscreenEnterIcon.d.ts +0 -4
  322. package/dist/src/components/icons/svg-icons/FullscreenEnterIcon.tsx +0 -23
  323. package/dist/src/components/icons/svg-icons/FullscreenExitIcon.d.ts +0 -4
  324. package/dist/src/components/icons/svg-icons/FullscreenExitIcon.tsx +0 -23
  325. package/dist/src/components/icons/svg-icons/LoadingIcon.d.ts +0 -4
  326. package/dist/src/components/icons/svg-icons/LoadingIcon.tsx +0 -32
  327. package/dist/src/components/icons/svg-icons/PauseIcon.d.ts +0 -4
  328. package/dist/src/components/icons/svg-icons/PauseIcon.tsx +0 -23
  329. package/dist/src/components/icons/svg-icons/PlayIcon.d.ts +0 -4
  330. package/dist/src/components/icons/svg-icons/PlayIcon.tsx +0 -21
  331. package/dist/src/components/icons/svg-icons/PlaybackSpeedIcon.d.ts +0 -4
  332. package/dist/src/components/icons/svg-icons/PlaybackSpeedIcon.tsx +0 -23
  333. package/dist/src/components/icons/svg-icons/QualityIcon.d.ts +0 -4
  334. package/dist/src/components/icons/svg-icons/QualityIcon.tsx +0 -21
  335. package/dist/src/components/icons/svg-icons/SettingsIcon.d.ts +0 -4
  336. package/dist/src/components/icons/svg-icons/SettingsIcon.tsx +0 -12
  337. package/dist/src/components/icons/svg-icons/SliderIcon.d.ts +0 -4
  338. package/dist/src/components/icons/svg-icons/SliderIcon.tsx +0 -21
  339. package/dist/src/components/icons/svg-icons/SubtitleIcon.d.ts +0 -4
  340. package/dist/src/components/icons/svg-icons/SubtitleIcon.tsx +0 -21
  341. package/dist/src/components/icons/svg-icons/SubtitleOffIcon.d.ts +0 -4
  342. package/dist/src/components/icons/svg-icons/SubtitleOffIcon.tsx +0 -25
  343. package/dist/src/components/icons/svg-icons/UnPiPIcon.d.ts +0 -4
  344. package/dist/src/components/icons/svg-icons/UnPiPIcon.tsx +0 -17
  345. package/dist/src/components/icons/svg-icons/VolumeMutedIcon.d.ts +0 -4
  346. package/dist/src/components/icons/svg-icons/VolumeMutedIcon.tsx +0 -16
  347. package/dist/src/components/icons/svg-icons/VolumeOneIcon.d.ts +0 -4
  348. package/dist/src/components/icons/svg-icons/VolumeOneIcon.tsx +0 -22
  349. package/dist/src/components/icons/svg-icons/VolumeThreeIcon.d.ts +0 -4
  350. package/dist/src/components/icons/svg-icons/VolumeThreeIcon.tsx +0 -16
  351. package/dist/src/components/icons/svg-icons/VolumeTwoIcon.d.ts +0 -4
  352. package/dist/src/components/icons/svg-icons/VolumeTwoIcon.tsx +0 -16
  353. package/dist/src/components/legacy.d.ts +0 -13
  354. package/dist/src/components/legacy.tsx +0 -93
  355. package/dist/src/components/media-metadata-display.d.ts +0 -11
  356. package/dist/src/components/media-metadata-display.tsx +0 -100
  357. package/dist/src/components/media-player-audio.d.ts +0 -9
  358. package/dist/src/components/media-player-audio.tsx +0 -39
  359. package/dist/src/components/media-player-controls.d.ts +0 -23
  360. package/dist/src/components/media-player-controls.tsx +0 -226
  361. package/dist/src/components/media-player-error.d.ts +0 -16
  362. package/dist/src/components/media-player-error.tsx +0 -163
  363. package/dist/src/components/media-player-fullscreen.d.ts +0 -12
  364. package/dist/src/components/media-player-fullscreen.tsx +0 -109
  365. package/dist/src/components/media-player-hls.d.ts +0 -23
  366. package/dist/src/components/media-player-hls.tsx +0 -111
  367. package/dist/src/components/media-player-loading.d.ts +0 -12
  368. package/dist/src/components/media-player-loading.tsx +0 -76
  369. package/dist/src/components/media-player-play.d.ts +0 -11
  370. package/dist/src/components/media-player-play.tsx +0 -75
  371. package/dist/src/components/media-player-root.d.ts +0 -28
  372. package/dist/src/components/media-player-root.tsx +0 -340
  373. package/dist/src/components/media-player-seek.d.ts +0 -15
  374. package/dist/src/components/media-player-seek.tsx +0 -168
  375. package/dist/src/components/media-player-time.d.ts +0 -12
  376. package/dist/src/components/media-player-time.tsx +0 -99
  377. package/dist/src/components/media-player-tooltip.d.ts +0 -13
  378. package/dist/src/components/media-player-tooltip.tsx +0 -58
  379. package/dist/src/components/media-player-video.d.ts +0 -9
  380. package/dist/src/components/media-player-video.tsx +0 -39
  381. package/dist/src/components/media-player-volume.d.ts +0 -13
  382. package/dist/src/components/media-player-volume.tsx +0 -155
  383. package/dist/src/components/media-player.d.ts +0 -3
  384. package/dist/src/components/media-player.tsx +0 -257
  385. package/dist/src/components/media-suspense.d.ts +0 -78
  386. package/dist/src/components/media-suspense.tsx +0 -362
  387. package/dist/src/components/player-settings-form.d.ts +0 -8
  388. package/dist/src/components/player-settings-form.tsx +0 -163
  389. package/dist/src/components/react-player-wrapper.d.ts +0 -64
  390. package/dist/src/components/react-player-wrapper.tsx +0 -651
  391. package/dist/src/components/simple-video-player.d.ts +0 -9
  392. package/dist/src/components/simple-video-player.tsx +0 -60
  393. package/dist/src/components/ui/button.tsx +0 -49
  394. package/dist/src/components/ui/dropdown-menu.tsx +0 -137
  395. package/dist/src/components/ui/enhanced-seek-bar.d.ts +0 -3
  396. package/dist/src/components/ui/enhanced-seek-bar.tsx +0 -235
  397. package/dist/src/components/ui/fullscreen-button.d.ts +0 -3
  398. package/dist/src/components/ui/fullscreen-button.tsx +0 -60
  399. package/dist/src/components/ui/icons.tsx +0 -174
  400. package/dist/src/components/ui/media-resource-preloader.d.ts +0 -21
  401. package/dist/src/components/ui/media-resource-preloader.tsx +0 -393
  402. package/dist/src/components/ui/play-button.d.ts +0 -3
  403. package/dist/src/components/ui/play-button.tsx +0 -107
  404. package/dist/src/components/ui/seek-bar.d.ts +0 -3
  405. package/dist/src/components/ui/seek-bar.tsx +0 -161
  406. package/dist/src/components/ui/slider.tsx +0 -55
  407. package/dist/src/components/ui/time-display.d.ts +0 -3
  408. package/dist/src/components/ui/time-display.tsx +0 -40
  409. package/dist/src/components/ui/tooltip.tsx +0 -131
  410. package/dist/src/components/ui/volume-control.d.ts +0 -3
  411. package/dist/src/components/ui/volume-control.tsx +0 -143
  412. package/dist/src/components/unified/base-media-player.d.ts +0 -18
  413. package/dist/src/components/unified/base-media-player.tsx +0 -246
  414. package/dist/src/components/unified/media-player.d.ts +0 -37
  415. package/dist/src/components/unified/media-player.tsx +0 -75
  416. package/dist/src/components/variants/minimal/AccessibleMinimalPlayer.d.ts +0 -42
  417. package/dist/src/components/variants/minimal/AccessibleMinimalPlayer.tsx +0 -561
  418. package/dist/src/components/variants/minimal/EnhancedMinimalMediaPlayer.d.ts +0 -44
  419. package/dist/src/components/variants/minimal/EnhancedMinimalMediaPlayer.tsx +0 -552
  420. package/dist/src/components/variants/minimal/MinimalControls.d.ts +0 -19
  421. package/dist/src/components/variants/minimal/MinimalControls.tsx +0 -142
  422. package/dist/src/components/variants/minimal/MinimalLoading.d.ts +0 -10
  423. package/dist/src/components/variants/minimal/MinimalLoading.tsx +0 -32
  424. package/dist/src/components/variants/minimal/MinimalMediaPlayer.d.ts +0 -38
  425. package/dist/src/components/variants/minimal/MinimalMediaPlayer.tsx +0 -315
  426. package/dist/src/components/variants/minimal/MinimalOverlay.d.ts +0 -11
  427. package/dist/src/components/variants/minimal/MinimalOverlay.tsx +0 -64
  428. package/dist/src/components/variants/minimal/MinimalPlayButton.d.ts +0 -9
  429. package/dist/src/components/variants/minimal/MinimalPlayButton.tsx +0 -65
  430. package/dist/src/components/variants/minimal/MinimalSeekBar.d.ts +0 -7
  431. package/dist/src/components/variants/minimal/MinimalSeekBar.tsx +0 -150
  432. package/dist/src/components/variants/minimal/MinimalVolumeControl.d.ts +0 -7
  433. package/dist/src/components/variants/minimal/MinimalVolumeControl.tsx +0 -80
  434. package/dist/src/components/variants/minimal/SimpleMinimalPlayer.d.ts +0 -22
  435. package/dist/src/components/variants/minimal/SimpleMinimalPlayer.tsx +0 -209
  436. package/dist/src/components/variants/minimal/components/CenterPlayButton.d.ts +0 -7
  437. package/dist/src/components/variants/minimal/components/CenterPlayButton.tsx +0 -22
  438. package/dist/src/components/variants/minimal/components/ControlBar.d.ts +0 -43
  439. package/dist/src/components/variants/minimal/components/ControlBar.tsx +0 -146
  440. package/dist/src/components/variants/minimal/components/EnhancedSettingsMenu.d.ts +0 -24
  441. package/dist/src/components/variants/minimal/components/EnhancedSettingsMenu.tsx +0 -361
  442. package/dist/src/components/variants/minimal/components/PlaybackControls.d.ts +0 -9
  443. package/dist/src/components/variants/minimal/components/PlaybackControls.tsx +0 -51
  444. package/dist/src/components/variants/minimal/components/RightControls.d.ts +0 -25
  445. package/dist/src/components/variants/minimal/components/RightControls.tsx +0 -173
  446. package/dist/src/components/variants/minimal/components/SeekBar.d.ts +0 -11
  447. package/dist/src/components/variants/minimal/components/SeekBar.tsx +0 -131
  448. package/dist/src/components/variants/minimal/components/SettingsDropdown.d.ts +0 -9
  449. package/dist/src/components/variants/minimal/components/SettingsDropdown.tsx +0 -70
  450. package/dist/src/components/variants/minimal/components/SubtitleDisplay.d.ts +0 -7
  451. package/dist/src/components/variants/minimal/components/SubtitleDisplay.tsx +0 -21
  452. package/dist/src/components/variants/minimal/components/TimeDisplay.d.ts +0 -7
  453. package/dist/src/components/variants/minimal/components/TimeDisplay.tsx +0 -18
  454. package/dist/src/components/variants/minimal/components/VideoElement.d.ts +0 -13
  455. package/dist/src/components/variants/minimal/components/VideoElement.tsx +0 -40
  456. package/dist/src/components/variants/minimal/components/VolumeControl.d.ts +0 -13
  457. package/dist/src/components/variants/minimal/components/VolumeControl.tsx +0 -217
  458. package/dist/src/components/variants/minimal/index.d.ts +0 -17
  459. package/dist/src/components/variants/minimal/index.ts +0 -23
  460. package/dist/src/components/video-player.d.ts +0 -3
  461. package/dist/src/components/video-player.tsx +0 -100
  462. package/dist/src/context/error-handling.d.ts +0 -72
  463. package/dist/src/context/error-handling.ts +0 -394
  464. package/dist/src/context/media-context.d.ts +0 -104
  465. package/dist/src/context/media-context.tsx +0 -208
  466. package/dist/src/context/media-provider.d.ts +0 -26
  467. package/dist/src/context/media-provider.tsx +0 -265
  468. package/dist/src/context/media-store.d.ts +0 -33
  469. package/dist/src/context/media-store.ts +0 -379
  470. package/dist/src/context/persistence.d.ts +0 -83
  471. package/dist/src/context/persistence.ts +0 -453
  472. package/dist/src/core/events/event-system.d.ts +0 -170
  473. package/dist/src/core/events/event-system.ts +0 -442
  474. package/dist/src/core/events/hooks.d.ts +0 -33
  475. package/dist/src/core/events/hooks.ts +0 -302
  476. package/dist/src/core/events/index.d.ts +0 -6
  477. package/dist/src/core/events/index.ts +0 -22
  478. package/dist/src/core/events/middleware.d.ts +0 -39
  479. package/dist/src/core/events/middleware.ts +0 -269
  480. package/dist/src/core/index.d.ts +0 -8
  481. package/dist/src/core/index.ts +0 -22
  482. package/dist/src/core/optimization/bundle-optimizer.d.ts +0 -44
  483. package/dist/src/core/optimization/bundle-optimizer.tsx +0 -308
  484. package/dist/src/core/performance/cicd.d.ts +0 -8
  485. package/dist/src/core/performance/cicd.ts +0 -96
  486. package/dist/src/core/performance/index.d.ts +0 -10
  487. package/dist/src/core/performance/index.ts +0 -38
  488. package/dist/src/core/performance/media-loading-optimizer.d.ts +0 -105
  489. package/dist/src/core/performance/media-loading-optimizer.ts +0 -538
  490. package/dist/src/core/performance/performance-budgets.d.ts +0 -68
  491. package/dist/src/core/performance/performance-budgets.ts +0 -432
  492. package/dist/src/core/performance/performance-monitor.d.ts +0 -95
  493. package/dist/src/core/performance/performance-monitor.tsx +0 -476
  494. package/dist/src/core/performance/performance-testing.d.ts +0 -69
  495. package/dist/src/core/performance/performance-testing.ts +0 -459
  496. package/dist/src/core/plugins/base-plugin.d.ts +0 -52
  497. package/dist/src/core/plugins/base-plugin.ts +0 -224
  498. package/dist/src/core/plugins/enhanced-plugin-system.d.ts +0 -160
  499. package/dist/src/core/plugins/enhanced-plugin-system.ts +0 -417
  500. package/dist/src/core/plugins/examples/analytics-plugin.d.ts +0 -30
  501. package/dist/src/core/plugins/examples/analytics-plugin.ts +0 -242
  502. package/dist/src/core/plugins/index.d.ts +0 -8
  503. package/dist/src/core/plugins/index.ts +0 -39
  504. package/dist/src/core/plugins/registry.d.ts +0 -31
  505. package/dist/src/core/plugins/registry.ts +0 -327
  506. package/dist/src/core/plugins/types.d.ts +0 -101
  507. package/dist/src/core/plugins/types.ts +0 -159
  508. package/dist/src/core/plugins/utils.d.ts +0 -38
  509. package/dist/src/core/plugins/utils.ts +0 -316
  510. package/dist/src/core/progressive-loading.d.ts +0 -88
  511. package/dist/src/core/progressive-loading.tsx +0 -322
  512. package/dist/src/core/providers/enhanced-hls-provider.d.ts +0 -50
  513. package/dist/src/core/providers/enhanced-hls-provider.ts +0 -308
  514. package/dist/src/core/providers/service-provider.d.ts +0 -49
  515. package/dist/src/core/providers/service-provider.tsx +0 -168
  516. package/dist/src/core/utils.d.ts +0 -25
  517. package/dist/src/core/utils.tsx +0 -38
  518. package/dist/src/features/media-session/media-session-manager.d.ts +0 -132
  519. package/dist/src/features/media-session/media-session-manager.ts +0 -429
  520. package/dist/src/features/picture-in-picture/pip-manager.d.ts +0 -94
  521. package/dist/src/features/picture-in-picture/pip-manager.ts +0 -429
  522. package/dist/src/features/playlist/playlist-manager.d.ts +0 -208
  523. package/dist/src/features/playlist/playlist-manager.ts +0 -606
  524. package/dist/src/features/subtitles/subtitle-manager.d.ts +0 -136
  525. package/dist/src/features/subtitles/subtitle-manager.ts +0 -441
  526. package/dist/src/features/subtitles/subtitle-parser.d.ts +0 -60
  527. package/dist/src/features/subtitles/subtitle-parser.ts +0 -280
  528. package/dist/src/features/thumbnails/thumbnail-generator.d.ts +0 -136
  529. package/dist/src/features/thumbnails/thumbnail-generator.ts +0 -519
  530. package/dist/src/hooks/accessibility/index.d.ts +0 -5
  531. package/dist/src/hooks/accessibility/index.ts +0 -27
  532. package/dist/src/hooks/accessibility/use-accessibility-preferences.d.ts +0 -14
  533. package/dist/src/hooks/accessibility/use-accessibility-preferences.ts +0 -188
  534. package/dist/src/hooks/accessibility/use-focus-management.d.ts +0 -31
  535. package/dist/src/hooks/accessibility/use-focus-management.ts +0 -176
  536. package/dist/src/hooks/accessibility/use-keyboard-shortcuts.d.ts +0 -38
  537. package/dist/src/hooks/accessibility/use-keyboard-shortcuts.ts +0 -144
  538. package/dist/src/hooks/accessibility/use-screen-reader.d.ts +0 -22
  539. package/dist/src/hooks/accessibility/use-screen-reader.ts +0 -182
  540. package/dist/src/hooks/core/index.d.ts +0 -18
  541. package/dist/src/hooks/core/index.ts +0 -47
  542. package/dist/src/hooks/legacy.d.ts +0 -18
  543. package/dist/src/hooks/legacy.ts +0 -27
  544. package/dist/src/hooks/use-enhanced-media-player.d.ts +0 -88
  545. package/dist/src/hooks/use-enhanced-media-player.ts +0 -485
  546. package/dist/src/hooks/use-intelligent-preloading.d.ts +0 -66
  547. package/dist/src/hooks/use-intelligent-preloading.ts +0 -363
  548. package/dist/src/hooks/use-keyboard-controls.d.ts +0 -13
  549. package/dist/src/hooks/use-keyboard-controls.ts +0 -115
  550. package/dist/src/hooks/use-media-actions.d.ts +0 -62
  551. package/dist/src/hooks/use-media-actions.ts +0 -175
  552. package/dist/src/hooks/use-media-metadata.d.ts +0 -11
  553. package/dist/src/hooks/use-media-metadata.ts +0 -89
  554. package/dist/src/hooks/use-media-optimistic.d.ts +0 -36
  555. package/dist/src/hooks/use-media-optimistic.ts +0 -270
  556. package/dist/src/hooks/use-media-player.d.ts +0 -31
  557. package/dist/src/hooks/use-media-player.ts +0 -310
  558. package/dist/src/hooks/use-media-state.d.ts +0 -17
  559. package/dist/src/hooks/use-media-state.ts +0 -190
  560. package/dist/src/hooks/use-memory-optimization.d.ts +0 -40
  561. package/dist/src/hooks/use-memory-optimization.ts +0 -358
  562. package/dist/src/hooks/use-mobile.ts +0 -125
  563. package/dist/src/hooks/use-optimistic-controls.d.ts +0 -22
  564. package/dist/src/hooks/use-optimistic-controls.ts +0 -92
  565. package/dist/src/hooks/use-optimized-media.d.ts +0 -46
  566. package/dist/src/hooks/use-optimized-media.ts +0 -263
  567. package/dist/src/hooks/use-touch-gestures.d.ts +0 -47
  568. package/dist/src/hooks/use-touch-gestures.ts +0 -417
  569. package/dist/src/hooks/useEnhancedSubtitles.d.ts +0 -39
  570. package/dist/src/hooks/useEnhancedSubtitles.ts +0 -258
  571. package/dist/src/hooks/useKeyboardShortcuts.d.ts +0 -10
  572. package/dist/src/hooks/useKeyboardShortcuts.ts +0 -74
  573. package/dist/src/hooks/useMediaControls.d.ts +0 -9
  574. package/dist/src/hooks/useMediaControls.ts +0 -52
  575. package/dist/src/hooks/useScreenshot.d.ts +0 -4
  576. package/dist/src/hooks/useScreenshot.ts +0 -57
  577. package/dist/src/hooks/useSubtitles.d.ts +0 -8
  578. package/dist/src/hooks/useSubtitles.ts +0 -91
  579. package/dist/src/hooks/useVideoPlayer.d.ts +0 -32
  580. package/dist/src/hooks/useVideoPlayer.ts +0 -232
  581. package/dist/src/icons/components/FullscreenIcon.d.ts +0 -3
  582. package/dist/src/icons/components/FullscreenIcon.tsx +0 -37
  583. package/dist/src/icons/components/SettingsIcon.d.ts +0 -3
  584. package/dist/src/icons/components/SettingsIcon.tsx +0 -38
  585. package/dist/src/icons/components/animated/LoadingIcon.d.ts +0 -3
  586. package/dist/src/icons/components/animated/LoadingIcon.tsx +0 -43
  587. package/dist/src/icons/components/animated/PlayPauseIcon.d.ts +0 -7
  588. package/dist/src/icons/components/animated/PlayPauseIcon.tsx +0 -50
  589. package/dist/src/icons/components/media/PauseIcon.d.ts +0 -3
  590. package/dist/src/icons/components/media/PauseIcon.tsx +0 -39
  591. package/dist/src/icons/components/media/PlayIcon.d.ts +0 -3
  592. package/dist/src/icons/components/media/PlayIcon.tsx +0 -38
  593. package/dist/src/icons/components/volume/VolumeIcon.d.ts +0 -3
  594. package/dist/src/icons/components/volume/VolumeIcon.tsx +0 -39
  595. package/dist/src/icons/components/volume/VolumeOffIcon.d.ts +0 -3
  596. package/dist/src/icons/components/volume/VolumeOffIcon.tsx +0 -39
  597. package/dist/src/icons/index.d.ts +0 -28
  598. package/dist/src/icons/index.ts +0 -56
  599. package/dist/src/icons/provider.d.ts +0 -13
  600. package/dist/src/icons/provider.tsx +0 -64
  601. package/dist/src/icons/types.d.ts +0 -18
  602. package/dist/src/icons/types.ts +0 -40
  603. package/dist/src/index-enhanced.d.ts +0 -13
  604. package/dist/src/index-enhanced.ts +0 -35
  605. package/dist/src/index-legacy.d.ts +0 -81
  606. package/dist/src/index-legacy.ts +0 -327
  607. package/dist/src/index.css +0 -102
  608. package/dist/src/index.d.ts +0 -38
  609. package/dist/src/index.minimal.d.ts +0 -2
  610. package/dist/src/index.minimal.ts +0 -4
  611. package/dist/src/index.ts +0 -216
  612. package/dist/src/lib/deprecation.d.ts +0 -7
  613. package/dist/src/lib/deprecation.ts +0 -51
  614. package/dist/src/lib/format-time.d.ts +0 -9
  615. package/dist/src/lib/format-time.ts +0 -37
  616. package/dist/src/lib/index.d.ts +0 -3
  617. package/dist/src/lib/index.ts +0 -3
  618. package/dist/src/lib/utils.d.ts +0 -3
  619. package/dist/src/lib/utils.ts +0 -6
  620. package/dist/src/styles/globals.css +0 -462
  621. package/dist/src/styles/minimal-player.css +0 -589
  622. package/dist/src/styles/pixel-art.css +0 -46
  623. package/dist/src/styles/videojs.css +0 -100
  624. package/dist/src/test/setup.d.ts +0 -2
  625. package/dist/src/test/setup.ts +0 -79
  626. package/dist/src/types/events.d.ts +0 -41
  627. package/dist/src/types/events.ts +0 -47
  628. package/dist/src/types/formats.d.ts +0 -45
  629. package/dist/src/types/formats.ts +0 -95
  630. package/dist/src/types/index.d.ts +0 -128
  631. package/dist/src/types/index.ts +0 -225
  632. package/dist/src/types/videojs-plugins.d.ts +0 -14
  633. package/dist/styles/globals.css +0 -462
  634. package/dist/styles/minimal-player.css +0 -589
  635. package/dist/styles/pixel-art.css +0 -46
  636. package/dist/styles/videojs.css +0 -100
  637. package/src/adapters/videojs-adapter.d.ts +0 -38
  638. package/src/adapters/videojs-adapter.d.ts.map +0 -1
  639. package/src/components/AnimateLoading.d.ts +0 -9
  640. package/src/components/AnimateLoading.d.ts.map +0 -1
  641. package/src/components/LoadingState.d.ts +0 -33
  642. package/src/components/LoadingState.d.ts.map +0 -1
  643. package/src/components/accessibility/keyboard-help-overlay.d.ts +0 -17
  644. package/src/components/accessibility/keyboard-help-overlay.d.ts.map +0 -1
  645. package/src/components/audio-player.d.ts +0 -3
  646. package/src/components/audio-player.d.ts.map +0 -1
  647. package/src/components/basic/index.d.ts +0 -26
  648. package/src/components/basic/index.d.ts.map +0 -1
  649. package/src/components/enhanced/advanced-features.d.ts +0 -45
  650. package/src/components/enhanced/advanced-features.d.ts.map +0 -1
  651. package/src/components/enhanced/debug-panel.d.ts +0 -70
  652. package/src/components/enhanced/debug-panel.d.ts.map +0 -1
  653. package/src/components/enhanced/enhanced-controls.d.ts +0 -50
  654. package/src/components/enhanced/enhanced-controls.d.ts.map +0 -1
  655. package/src/components/enhanced/enhanced-media-player.d.ts +0 -26
  656. package/src/components/enhanced/enhanced-media-player.d.ts.map +0 -1
  657. package/src/components/enhanced/error-handling.d.ts +0 -36
  658. package/src/components/enhanced/error-handling.d.ts.map +0 -1
  659. package/src/components/enhanced/index.d.ts +0 -7
  660. package/src/components/enhanced/index.d.ts.map +0 -1
  661. package/src/components/enhanced/media-player-enhanced.d.ts +0 -21
  662. package/src/components/enhanced/media-player-enhanced.d.ts.map +0 -1
  663. package/src/components/examples/basic-video-player.d.ts +0 -10
  664. package/src/components/examples/basic-video-player.d.ts.map +0 -1
  665. package/src/components/examples/custom-controls-example.d.ts +0 -10
  666. package/src/components/examples/custom-controls-example.d.ts.map +0 -1
  667. package/src/components/examples/enhanced-controls-example.d.ts +0 -9
  668. package/src/components/examples/enhanced-controls-example.d.ts.map +0 -1
  669. package/src/components/examples/enhanced-media-player-example.d.ts +0 -9
  670. package/src/components/examples/enhanced-media-player-example.d.ts.map +0 -1
  671. package/src/components/examples/loading-states-demo.d.ts +0 -2
  672. package/src/components/examples/loading-states-demo.d.ts.map +0 -1
  673. package/src/components/examples/react-19-demo.d.ts +0 -10
  674. package/src/components/examples/react-19-demo.d.ts.map +0 -1
  675. package/src/components/examples/volume-orientation-demo.d.ts +0 -2
  676. package/src/components/examples/volume-orientation-demo.d.ts.map +0 -1
  677. package/src/components/icon-demo.d.ts +0 -2
  678. package/src/components/icon-demo.d.ts.map +0 -1
  679. package/src/components/icons/index.d.ts +0 -36
  680. package/src/components/icons/index.d.ts.map +0 -1
  681. package/src/components/icons/svg-icons/ArrowLeftIcon.d.ts +0 -4
  682. package/src/components/icons/svg-icons/ArrowLeftIcon.d.ts.map +0 -1
  683. package/src/components/icons/svg-icons/ArrowRightIcon.d.ts +0 -4
  684. package/src/components/icons/svg-icons/ArrowRightIcon.d.ts.map +0 -1
  685. package/src/components/icons/svg-icons/AudioIcon.d.ts +0 -4
  686. package/src/components/icons/svg-icons/AudioIcon.d.ts.map +0 -1
  687. package/src/components/icons/svg-icons/BackwardIcon.d.ts +0 -4
  688. package/src/components/icons/svg-icons/BackwardIcon.d.ts.map +0 -1
  689. package/src/components/icons/svg-icons/CameraIcon.d.ts +0 -4
  690. package/src/components/icons/svg-icons/CameraIcon.d.ts.map +0 -1
  691. package/src/components/icons/svg-icons/CheckIcon.d.ts +0 -4
  692. package/src/components/icons/svg-icons/CheckIcon.d.ts.map +0 -1
  693. package/src/components/icons/svg-icons/EnablePiPIcon.d.ts +0 -4
  694. package/src/components/icons/svg-icons/EnablePiPIcon.d.ts.map +0 -1
  695. package/src/components/icons/svg-icons/ForwardIcon.d.ts +0 -4
  696. package/src/components/icons/svg-icons/ForwardIcon.d.ts.map +0 -1
  697. package/src/components/icons/svg-icons/FullscreenEnterIcon.d.ts +0 -4
  698. package/src/components/icons/svg-icons/FullscreenEnterIcon.d.ts.map +0 -1
  699. package/src/components/icons/svg-icons/FullscreenExitIcon.d.ts +0 -4
  700. package/src/components/icons/svg-icons/FullscreenExitIcon.d.ts.map +0 -1
  701. package/src/components/icons/svg-icons/LoadingIcon.d.ts +0 -4
  702. package/src/components/icons/svg-icons/LoadingIcon.d.ts.map +0 -1
  703. package/src/components/icons/svg-icons/PauseIcon.d.ts +0 -4
  704. package/src/components/icons/svg-icons/PauseIcon.d.ts.map +0 -1
  705. package/src/components/icons/svg-icons/PlayIcon.d.ts +0 -4
  706. package/src/components/icons/svg-icons/PlayIcon.d.ts.map +0 -1
  707. package/src/components/icons/svg-icons/PlaybackSpeedIcon.d.ts +0 -4
  708. package/src/components/icons/svg-icons/PlaybackSpeedIcon.d.ts.map +0 -1
  709. package/src/components/icons/svg-icons/QualityIcon.d.ts +0 -4
  710. package/src/components/icons/svg-icons/QualityIcon.d.ts.map +0 -1
  711. package/src/components/icons/svg-icons/SettingsIcon.d.ts +0 -4
  712. package/src/components/icons/svg-icons/SettingsIcon.d.ts.map +0 -1
  713. package/src/components/icons/svg-icons/SliderIcon.d.ts +0 -4
  714. package/src/components/icons/svg-icons/SliderIcon.d.ts.map +0 -1
  715. package/src/components/icons/svg-icons/SubtitleIcon.d.ts +0 -4
  716. package/src/components/icons/svg-icons/SubtitleIcon.d.ts.map +0 -1
  717. package/src/components/icons/svg-icons/SubtitleOffIcon.d.ts +0 -4
  718. package/src/components/icons/svg-icons/SubtitleOffIcon.d.ts.map +0 -1
  719. package/src/components/icons/svg-icons/UnPiPIcon.d.ts +0 -4
  720. package/src/components/icons/svg-icons/UnPiPIcon.d.ts.map +0 -1
  721. package/src/components/icons/svg-icons/VolumeMutedIcon.d.ts +0 -4
  722. package/src/components/icons/svg-icons/VolumeMutedIcon.d.ts.map +0 -1
  723. package/src/components/icons/svg-icons/VolumeOneIcon.d.ts +0 -4
  724. package/src/components/icons/svg-icons/VolumeOneIcon.d.ts.map +0 -1
  725. package/src/components/icons/svg-icons/VolumeThreeIcon.d.ts +0 -4
  726. package/src/components/icons/svg-icons/VolumeThreeIcon.d.ts.map +0 -1
  727. package/src/components/icons/svg-icons/VolumeTwoIcon.d.ts +0 -4
  728. package/src/components/icons/svg-icons/VolumeTwoIcon.d.ts.map +0 -1
  729. package/src/components/legacy.d.ts +0 -13
  730. package/src/components/legacy.d.ts.map +0 -1
  731. package/src/components/media-metadata-display.d.ts +0 -11
  732. package/src/components/media-metadata-display.d.ts.map +0 -1
  733. package/src/components/media-player-audio.d.ts +0 -9
  734. package/src/components/media-player-audio.d.ts.map +0 -1
  735. package/src/components/media-player-controls.d.ts +0 -23
  736. package/src/components/media-player-controls.d.ts.map +0 -1
  737. package/src/components/media-player-error.d.ts +0 -16
  738. package/src/components/media-player-error.d.ts.map +0 -1
  739. package/src/components/media-player-fullscreen.d.ts +0 -12
  740. package/src/components/media-player-fullscreen.d.ts.map +0 -1
  741. package/src/components/media-player-hls.d.ts +0 -23
  742. package/src/components/media-player-hls.d.ts.map +0 -1
  743. package/src/components/media-player-loading.d.ts +0 -12
  744. package/src/components/media-player-loading.d.ts.map +0 -1
  745. package/src/components/media-player-play.d.ts +0 -11
  746. package/src/components/media-player-play.d.ts.map +0 -1
  747. package/src/components/media-player-root.d.ts +0 -28
  748. package/src/components/media-player-root.d.ts.map +0 -1
  749. package/src/components/media-player-seek.d.ts +0 -15
  750. package/src/components/media-player-seek.d.ts.map +0 -1
  751. package/src/components/media-player-time.d.ts +0 -12
  752. package/src/components/media-player-time.d.ts.map +0 -1
  753. package/src/components/media-player-tooltip.d.ts +0 -13
  754. package/src/components/media-player-tooltip.d.ts.map +0 -1
  755. package/src/components/media-player-video.d.ts +0 -9
  756. package/src/components/media-player-video.d.ts.map +0 -1
  757. package/src/components/media-player-volume.d.ts +0 -13
  758. package/src/components/media-player-volume.d.ts.map +0 -1
  759. package/src/components/media-player.d.ts +0 -3
  760. package/src/components/media-player.d.ts.map +0 -1
  761. package/src/components/media-suspense.d.ts +0 -78
  762. package/src/components/media-suspense.d.ts.map +0 -1
  763. package/src/components/player-settings-form.d.ts +0 -8
  764. package/src/components/player-settings-form.d.ts.map +0 -1
  765. package/src/components/react-player-wrapper.d.ts +0 -64
  766. package/src/components/react-player-wrapper.d.ts.map +0 -1
  767. package/src/components/simple-video-player.d.ts +0 -9
  768. package/src/components/simple-video-player.d.ts.map +0 -1
  769. package/src/components/ui/button.tsx +0 -49
  770. package/src/components/ui/dropdown-menu.tsx +0 -137
  771. package/src/components/ui/enhanced-seek-bar.d.ts +0 -3
  772. package/src/components/ui/enhanced-seek-bar.d.ts.map +0 -1
  773. package/src/components/ui/fullscreen-button.d.ts +0 -3
  774. package/src/components/ui/fullscreen-button.d.ts.map +0 -1
  775. package/src/components/ui/icons.tsx +0 -174
  776. package/src/components/ui/media-resource-preloader.d.ts +0 -21
  777. package/src/components/ui/media-resource-preloader.d.ts.map +0 -1
  778. package/src/components/ui/play-button.d.ts +0 -3
  779. package/src/components/ui/play-button.d.ts.map +0 -1
  780. package/src/components/ui/seek-bar.d.ts +0 -3
  781. package/src/components/ui/seek-bar.d.ts.map +0 -1
  782. package/src/components/ui/slider.tsx +0 -55
  783. package/src/components/ui/time-display.d.ts +0 -3
  784. package/src/components/ui/time-display.d.ts.map +0 -1
  785. package/src/components/ui/tooltip.tsx +0 -131
  786. package/src/components/ui/volume-control.d.ts +0 -3
  787. package/src/components/ui/volume-control.d.ts.map +0 -1
  788. package/src/components/unified/base-media-player.d.ts +0 -18
  789. package/src/components/unified/base-media-player.d.ts.map +0 -1
  790. package/src/components/unified/media-player.d.ts +0 -37
  791. package/src/components/unified/media-player.d.ts.map +0 -1
  792. package/src/components/variants/minimal/AccessibleMinimalPlayer.d.ts +0 -42
  793. package/src/components/variants/minimal/AccessibleMinimalPlayer.d.ts.map +0 -1
  794. package/src/components/variants/minimal/EnhancedMinimalMediaPlayer.d.ts +0 -44
  795. package/src/components/variants/minimal/EnhancedMinimalMediaPlayer.d.ts.map +0 -1
  796. package/src/components/variants/minimal/MinimalControls.d.ts +0 -19
  797. package/src/components/variants/minimal/MinimalControls.d.ts.map +0 -1
  798. package/src/components/variants/minimal/MinimalLoading.d.ts +0 -10
  799. package/src/components/variants/minimal/MinimalLoading.d.ts.map +0 -1
  800. package/src/components/variants/minimal/MinimalMediaPlayer.d.ts +0 -38
  801. package/src/components/variants/minimal/MinimalMediaPlayer.d.ts.map +0 -1
  802. package/src/components/variants/minimal/MinimalOverlay.d.ts +0 -11
  803. package/src/components/variants/minimal/MinimalOverlay.d.ts.map +0 -1
  804. package/src/components/variants/minimal/MinimalPlayButton.d.ts +0 -9
  805. package/src/components/variants/minimal/MinimalPlayButton.d.ts.map +0 -1
  806. package/src/components/variants/minimal/MinimalSeekBar.d.ts +0 -7
  807. package/src/components/variants/minimal/MinimalSeekBar.d.ts.map +0 -1
  808. package/src/components/variants/minimal/MinimalVolumeControl.d.ts +0 -7
  809. package/src/components/variants/minimal/MinimalVolumeControl.d.ts.map +0 -1
  810. package/src/components/variants/minimal/SimpleMinimalPlayer.d.ts +0 -22
  811. package/src/components/variants/minimal/SimpleMinimalPlayer.d.ts.map +0 -1
  812. package/src/components/variants/minimal/components/CenterPlayButton.d.ts +0 -7
  813. package/src/components/variants/minimal/components/CenterPlayButton.d.ts.map +0 -1
  814. package/src/components/variants/minimal/components/ControlBar.d.ts +0 -43
  815. package/src/components/variants/minimal/components/ControlBar.d.ts.map +0 -1
  816. package/src/components/variants/minimal/components/EnhancedSettingsMenu.d.ts +0 -24
  817. package/src/components/variants/minimal/components/EnhancedSettingsMenu.d.ts.map +0 -1
  818. package/src/components/variants/minimal/components/PlaybackControls.d.ts +0 -9
  819. package/src/components/variants/minimal/components/PlaybackControls.d.ts.map +0 -1
  820. package/src/components/variants/minimal/components/RightControls.d.ts +0 -25
  821. package/src/components/variants/minimal/components/RightControls.d.ts.map +0 -1
  822. package/src/components/variants/minimal/components/SeekBar.d.ts +0 -11
  823. package/src/components/variants/minimal/components/SeekBar.d.ts.map +0 -1
  824. package/src/components/variants/minimal/components/SettingsDropdown.d.ts +0 -9
  825. package/src/components/variants/minimal/components/SettingsDropdown.d.ts.map +0 -1
  826. package/src/components/variants/minimal/components/SubtitleDisplay.d.ts +0 -7
  827. package/src/components/variants/minimal/components/SubtitleDisplay.d.ts.map +0 -1
  828. package/src/components/variants/minimal/components/TimeDisplay.d.ts +0 -7
  829. package/src/components/variants/minimal/components/TimeDisplay.d.ts.map +0 -1
  830. package/src/components/variants/minimal/components/VideoElement.d.ts +0 -13
  831. package/src/components/variants/minimal/components/VideoElement.d.ts.map +0 -1
  832. package/src/components/variants/minimal/components/VolumeControl.d.ts +0 -13
  833. package/src/components/variants/minimal/components/VolumeControl.d.ts.map +0 -1
  834. package/src/components/variants/minimal/index.d.ts +0 -17
  835. package/src/components/variants/minimal/index.d.ts.map +0 -1
  836. package/src/components/video-player.d.ts +0 -3
  837. package/src/components/video-player.d.ts.map +0 -1
  838. package/src/context/error-handling.d.ts +0 -72
  839. package/src/context/error-handling.d.ts.map +0 -1
  840. package/src/context/media-context.d.ts +0 -104
  841. package/src/context/media-context.d.ts.map +0 -1
  842. package/src/context/media-provider.d.ts +0 -26
  843. package/src/context/media-provider.d.ts.map +0 -1
  844. package/src/context/media-store.d.ts +0 -33
  845. package/src/context/media-store.d.ts.map +0 -1
  846. package/src/context/persistence.d.ts +0 -83
  847. package/src/context/persistence.d.ts.map +0 -1
  848. package/src/core/events/event-system.d.ts +0 -170
  849. package/src/core/events/event-system.d.ts.map +0 -1
  850. package/src/core/events/hooks.d.ts +0 -33
  851. package/src/core/events/hooks.d.ts.map +0 -1
  852. package/src/core/events/index.d.ts +0 -6
  853. package/src/core/events/index.d.ts.map +0 -1
  854. package/src/core/events/middleware.d.ts +0 -39
  855. package/src/core/events/middleware.d.ts.map +0 -1
  856. package/src/core/index.d.ts +0 -8
  857. package/src/core/index.d.ts.map +0 -1
  858. package/src/core/optimization/bundle-optimizer.d.ts +0 -44
  859. package/src/core/optimization/bundle-optimizer.d.ts.map +0 -1
  860. package/src/core/performance/cicd.d.ts +0 -8
  861. package/src/core/performance/cicd.d.ts.map +0 -1
  862. package/src/core/performance/index.d.ts +0 -10
  863. package/src/core/performance/index.d.ts.map +0 -1
  864. package/src/core/performance/media-loading-optimizer.d.ts +0 -105
  865. package/src/core/performance/media-loading-optimizer.d.ts.map +0 -1
  866. package/src/core/performance/performance-budgets.d.ts +0 -68
  867. package/src/core/performance/performance-budgets.d.ts.map +0 -1
  868. package/src/core/performance/performance-monitor.d.ts +0 -95
  869. package/src/core/performance/performance-monitor.d.ts.map +0 -1
  870. package/src/core/performance/performance-testing.d.ts +0 -69
  871. package/src/core/performance/performance-testing.d.ts.map +0 -1
  872. package/src/core/plugins/base-plugin.d.ts +0 -52
  873. package/src/core/plugins/base-plugin.d.ts.map +0 -1
  874. package/src/core/plugins/enhanced-plugin-system.d.ts +0 -160
  875. package/src/core/plugins/enhanced-plugin-system.d.ts.map +0 -1
  876. package/src/core/plugins/examples/analytics-plugin.d.ts +0 -30
  877. package/src/core/plugins/examples/analytics-plugin.d.ts.map +0 -1
  878. package/src/core/plugins/index.d.ts +0 -8
  879. package/src/core/plugins/index.d.ts.map +0 -1
  880. package/src/core/plugins/registry.d.ts +0 -31
  881. package/src/core/plugins/registry.d.ts.map +0 -1
  882. package/src/core/plugins/types.d.ts +0 -101
  883. package/src/core/plugins/types.d.ts.map +0 -1
  884. package/src/core/plugins/utils.d.ts +0 -38
  885. package/src/core/plugins/utils.d.ts.map +0 -1
  886. package/src/core/progressive-loading.d.ts +0 -88
  887. package/src/core/progressive-loading.d.ts.map +0 -1
  888. package/src/core/providers/enhanced-hls-provider.d.ts +0 -50
  889. package/src/core/providers/enhanced-hls-provider.d.ts.map +0 -1
  890. package/src/core/providers/service-provider.d.ts +0 -49
  891. package/src/core/providers/service-provider.d.ts.map +0 -1
  892. package/src/core/utils.d.ts +0 -25
  893. package/src/core/utils.d.ts.map +0 -1
  894. package/src/features/media-session/media-session-manager.d.ts +0 -132
  895. package/src/features/media-session/media-session-manager.d.ts.map +0 -1
  896. package/src/features/picture-in-picture/pip-manager.d.ts +0 -94
  897. package/src/features/picture-in-picture/pip-manager.d.ts.map +0 -1
  898. package/src/features/playlist/playlist-manager.d.ts +0 -208
  899. package/src/features/playlist/playlist-manager.d.ts.map +0 -1
  900. package/src/features/subtitles/subtitle-manager.d.ts +0 -136
  901. package/src/features/subtitles/subtitle-manager.d.ts.map +0 -1
  902. package/src/features/subtitles/subtitle-parser.d.ts +0 -60
  903. package/src/features/subtitles/subtitle-parser.d.ts.map +0 -1
  904. package/src/features/thumbnails/thumbnail-generator.d.ts +0 -136
  905. package/src/features/thumbnails/thumbnail-generator.d.ts.map +0 -1
  906. package/src/hooks/accessibility/index.d.ts +0 -5
  907. package/src/hooks/accessibility/index.d.ts.map +0 -1
  908. package/src/hooks/accessibility/use-accessibility-preferences.d.ts +0 -14
  909. package/src/hooks/accessibility/use-accessibility-preferences.d.ts.map +0 -1
  910. package/src/hooks/accessibility/use-focus-management.d.ts +0 -31
  911. package/src/hooks/accessibility/use-focus-management.d.ts.map +0 -1
  912. package/src/hooks/accessibility/use-keyboard-shortcuts.d.ts +0 -38
  913. package/src/hooks/accessibility/use-keyboard-shortcuts.d.ts.map +0 -1
  914. package/src/hooks/accessibility/use-screen-reader.d.ts +0 -22
  915. package/src/hooks/accessibility/use-screen-reader.d.ts.map +0 -1
  916. package/src/hooks/core/index.d.ts +0 -18
  917. package/src/hooks/core/index.d.ts.map +0 -1
  918. package/src/hooks/legacy.d.ts +0 -18
  919. package/src/hooks/legacy.d.ts.map +0 -1
  920. package/src/hooks/use-enhanced-media-player.d.ts +0 -88
  921. package/src/hooks/use-enhanced-media-player.d.ts.map +0 -1
  922. package/src/hooks/use-intelligent-preloading.d.ts +0 -66
  923. package/src/hooks/use-intelligent-preloading.d.ts.map +0 -1
  924. package/src/hooks/use-keyboard-controls.d.ts +0 -13
  925. package/src/hooks/use-keyboard-controls.d.ts.map +0 -1
  926. package/src/hooks/use-media-actions.d.ts +0 -62
  927. package/src/hooks/use-media-actions.d.ts.map +0 -1
  928. package/src/hooks/use-media-metadata.d.ts +0 -11
  929. package/src/hooks/use-media-metadata.d.ts.map +0 -1
  930. package/src/hooks/use-media-optimistic.d.ts +0 -36
  931. package/src/hooks/use-media-optimistic.d.ts.map +0 -1
  932. package/src/hooks/use-media-player.d.ts +0 -31
  933. package/src/hooks/use-media-player.d.ts.map +0 -1
  934. package/src/hooks/use-media-state.d.ts +0 -17
  935. package/src/hooks/use-media-state.d.ts.map +0 -1
  936. package/src/hooks/use-memory-optimization.d.ts +0 -40
  937. package/src/hooks/use-memory-optimization.d.ts.map +0 -1
  938. package/src/hooks/use-mobile.ts +0 -125
  939. package/src/hooks/use-optimistic-controls.d.ts +0 -22
  940. package/src/hooks/use-optimistic-controls.d.ts.map +0 -1
  941. package/src/hooks/use-optimized-media.d.ts +0 -46
  942. package/src/hooks/use-optimized-media.d.ts.map +0 -1
  943. package/src/hooks/use-touch-gestures.d.ts +0 -47
  944. package/src/hooks/use-touch-gestures.d.ts.map +0 -1
  945. package/src/hooks/useEnhancedSubtitles.d.ts +0 -39
  946. package/src/hooks/useEnhancedSubtitles.d.ts.map +0 -1
  947. package/src/hooks/useKeyboardShortcuts.d.ts +0 -10
  948. package/src/hooks/useKeyboardShortcuts.d.ts.map +0 -1
  949. package/src/hooks/useMediaControls.d.ts +0 -9
  950. package/src/hooks/useMediaControls.d.ts.map +0 -1
  951. package/src/hooks/useScreenshot.d.ts +0 -4
  952. package/src/hooks/useScreenshot.d.ts.map +0 -1
  953. package/src/hooks/useSubtitles.d.ts +0 -8
  954. package/src/hooks/useSubtitles.d.ts.map +0 -1
  955. package/src/hooks/useVideoPlayer.d.ts +0 -32
  956. package/src/hooks/useVideoPlayer.d.ts.map +0 -1
  957. package/src/icons/components/FullscreenIcon.d.ts +0 -3
  958. package/src/icons/components/FullscreenIcon.d.ts.map +0 -1
  959. package/src/icons/components/SettingsIcon.d.ts +0 -3
  960. package/src/icons/components/SettingsIcon.d.ts.map +0 -1
  961. package/src/icons/components/animated/LoadingIcon.d.ts +0 -3
  962. package/src/icons/components/animated/LoadingIcon.d.ts.map +0 -1
  963. package/src/icons/components/animated/PlayPauseIcon.d.ts +0 -7
  964. package/src/icons/components/animated/PlayPauseIcon.d.ts.map +0 -1
  965. package/src/icons/components/media/PauseIcon.d.ts +0 -3
  966. package/src/icons/components/media/PauseIcon.d.ts.map +0 -1
  967. package/src/icons/components/media/PlayIcon.d.ts +0 -3
  968. package/src/icons/components/media/PlayIcon.d.ts.map +0 -1
  969. package/src/icons/components/volume/VolumeIcon.d.ts +0 -3
  970. package/src/icons/components/volume/VolumeIcon.d.ts.map +0 -1
  971. package/src/icons/components/volume/VolumeOffIcon.d.ts +0 -3
  972. package/src/icons/components/volume/VolumeOffIcon.d.ts.map +0 -1
  973. package/src/icons/index.d.ts +0 -28
  974. package/src/icons/index.d.ts.map +0 -1
  975. package/src/icons/provider.d.ts +0 -13
  976. package/src/icons/provider.d.ts.map +0 -1
  977. package/src/icons/types.d.ts +0 -18
  978. package/src/icons/types.d.ts.map +0 -1
  979. package/src/index-enhanced.d.ts +0 -13
  980. package/src/index-enhanced.d.ts.map +0 -1
  981. package/src/index-legacy.d.ts +0 -81
  982. package/src/index-legacy.d.ts.map +0 -1
  983. package/src/index.d.ts +0 -38
  984. package/src/index.d.ts.map +0 -1
  985. package/src/index.minimal.d.ts +0 -2
  986. package/src/index.minimal.d.ts.map +0 -1
  987. package/src/index.minimal.ts +0 -4
  988. package/src/lib/deprecation.d.ts +0 -7
  989. package/src/lib/deprecation.d.ts.map +0 -1
  990. package/src/lib/format-time.d.ts +0 -9
  991. package/src/lib/format-time.d.ts.map +0 -1
  992. package/src/lib/index.d.ts +0 -3
  993. package/src/lib/index.d.ts.map +0 -1
  994. package/src/lib/utils.d.ts +0 -3
  995. package/src/lib/utils.d.ts.map +0 -1
  996. package/src/test/setup.d.ts +0 -2
  997. package/src/test/setup.d.ts.map +0 -1
  998. package/src/types/events.d.ts +0 -41
  999. package/src/types/events.d.ts.map +0 -1
  1000. package/src/types/formats.d.ts +0 -45
  1001. package/src/types/formats.d.ts.map +0 -1
  1002. package/src/types/index.d.ts +0 -128
  1003. package/src/types/index.d.ts.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.mjs","sources":["../src/core/performance/performance-testing.ts","../src/core/performance/performance-budgets.ts","../src/core/performance/media-loading-optimizer.ts","../src/core/providers/service-provider.tsx","../src/core/utils.tsx","../src/core/progressive-loading.tsx","../src/core/index.ts"],"sourcesContent":["import { PerformanceRegressionDetector, performanceMonitor } from \"./performance-monitor\"\nimport type { PerformanceMetrics } from \"./performance-monitor\"\n\n// Performance test configuration\nexport interface PerformanceTestConfig {\n\tname: string\n\titerations: number\n\twarmupIterations: number\n\ttimeout: number\n\texpectedThreshold: {\n\t\trenderTime: number\n\t\tmemoryUsage: number\n\t}\n}\n\n// Performance test result\nexport interface PerformanceTestResult {\n\ttestName: string\n\tpassed: boolean\n\tmetrics: {\n\t\taverageRenderTime: number\n\t\tminRenderTime: number\n\t\tmaxRenderTime: number\n\t\tmemoryUsage: number\n\t\titerations: number\n\t}\n\tthreshold: PerformanceTestConfig[\"expectedThreshold\"]\n\terror?: string\n}\n\n// Performance benchmark suite\nexport class PerformanceBenchmark {\n\tprivate results: PerformanceTestResult[] = []\n\tprivate regressionDetector = new PerformanceRegressionDetector()\n\n\tasync runTest(\n\t\tconfig: PerformanceTestConfig,\n\t\ttestFunction: () => any | Promise<any>\n\t): Promise<PerformanceTestResult> {\n\t\tconst renderTimes: number[] = []\n\t\tlet memoryBefore = 0\n\t\tlet memoryAfter = 0\n\t\tlet error: string | undefined\n\n\t\ttry {\n\t\t\t// Warmup iterations\n\t\t\tfor (let i = 0; i < config.warmupIterations; i++) {\n\t\t\t\tawait testFunction()\n\t\t\t}\n\n\t\t\t// Force garbage collection if available\n\t\t\tif (global.gc) {\n\t\t\t\tglobal.gc()\n\t\t\t}\n\n\t\t\tmemoryBefore = this.getMemoryUsage()\n\n\t\t\t// Main test iterations\n\t\t\tfor (let i = 0; i < config.iterations; i++) {\n\t\t\t\tconst startTime = performance.now()\n\t\t\t\tawait testFunction()\n\t\t\t\tconst endTime = performance.now()\n\t\t\t\trenderTimes.push(endTime - startTime)\n\t\t\t}\n\n\t\t\tmemoryAfter = this.getMemoryUsage()\n\t\t} catch (err) {\n\t\t\terror = err instanceof Error ? err.message : String(err)\n\t\t}\n\n\t\tconst averageRenderTime = renderTimes.reduce((sum, time) => sum + time, 0) / renderTimes.length\n\t\tconst minRenderTime = Math.min(...renderTimes)\n\t\tconst maxRenderTime = Math.max(...renderTimes)\n\t\tconst memoryUsage = memoryAfter - memoryBefore\n\n\t\tconst passed =\n\t\t\t!error &&\n\t\t\taverageRenderTime <= config.expectedThreshold.renderTime &&\n\t\t\tmemoryUsage <= config.expectedThreshold.memoryUsage\n\n\t\tconst result: PerformanceTestResult = {\n\t\t\ttestName: config.name,\n\t\t\tpassed,\n\t\t\tmetrics: {\n\t\t\t\taverageRenderTime,\n\t\t\t\tminRenderTime: isFinite(minRenderTime) ? minRenderTime : 0,\n\t\t\t\tmaxRenderTime: isFinite(maxRenderTime) ? maxRenderTime : 0,\n\t\t\t\tmemoryUsage,\n\t\t\t\titerations: config.iterations\n\t\t\t},\n\t\t\tthreshold: config.expectedThreshold,\n\t\t\terror\n\t\t}\n\n\t\tthis.results.push(result)\n\t\treturn result\n\t}\n\n\tprivate getMemoryUsage(): number {\n\t\tif (\"memory\" in performance) {\n\t\t\treturn (performance as any).memory.usedJSHeapSize || 0\n\t\t}\n\t\treturn 0\n\t}\n\n\t// Component rendering performance test\n\tasync testComponentRender(\n\t\tcomponentName: string,\n\t\trenderFunction: () => any,\n\t\texpectedRenderTime = 16 // 60fps target\n\t): Promise<PerformanceTestResult> {\n\t\tconst config: PerformanceTestConfig = {\n\t\t\tname: `${componentName} Render Performance`,\n\t\t\titerations: 100,\n\t\t\twarmupIterations: 10,\n\t\t\ttimeout: 5000,\n\t\t\texpectedThreshold: {\n\t\t\t\trenderTime: expectedRenderTime,\n\t\t\t\tmemoryUsage: 1024 * 1024 // 1MB\n\t\t\t}\n\t\t}\n\n\t\treturn this.runTest(config, renderFunction)\n\t}\n\n\t// Bundle loading performance test\n\tasync testBundleLoading(\n\t\tbundlePath: string,\n\t\texpectedLoadTime = 1000 // 1 second\n\t): Promise<PerformanceTestResult> {\n\t\tconst config: PerformanceTestConfig = {\n\t\t\tname: `Bundle Loading: ${bundlePath}`,\n\t\t\titerations: 5,\n\t\t\twarmupIterations: 1,\n\t\t\ttimeout: 10000,\n\t\t\texpectedThreshold: {\n\t\t\t\trenderTime: expectedLoadTime,\n\t\t\t\tmemoryUsage: 5 * 1024 * 1024 // 5MB\n\t\t\t}\n\t\t}\n\n\t\treturn this.runTest(config, async () => {\n\t\t\t// Simulate bundle loading\n\t\t\tconst startTime = performance.now()\n\t\t\ttry {\n\t\t\t\t// Use fetch instead of dynamic import to avoid bundler issues\n\t\t\t\tconst response = await fetch(bundlePath)\n\t\t\t\tif (!response.ok) {\n\t\t\t\t\tthrow new Error(`Failed to load bundle: ${response.status}`)\n\t\t\t\t}\n\t\t\t\tawait response.blob() // Consume the response\n\t\t\t} catch (error) {\n\t\t\t\tconsole.warn(`Bundle loading test failed for ${bundlePath}:`, error)\n\t\t\t\t// Return a mock time for testing purposes\n\t\t\t}\n\t\t\tconst endTime = performance.now()\n\t\t\treturn endTime - startTime\n\t\t})\n\t}\n\n\t// Memory leak detection test\n\tasync testMemoryLeaks(\n\t\ttestFunction: () => any,\n\t\titerations = 1000\n\t): Promise<PerformanceTestResult> {\n\t\tconst config: PerformanceTestConfig = {\n\t\t\tname: \"Memory Leak Detection\",\n\t\t\titerations,\n\t\t\twarmupIterations: 100,\n\t\t\ttimeout: 30000,\n\t\t\texpectedThreshold: {\n\t\t\t\trenderTime: Infinity, // Not testing render time\n\t\t\t\tmemoryUsage: 10 * 1024 * 1024 // 10MB max increase\n\t\t\t}\n\t\t}\n\n\t\tconst memoryBefore = this.getMemoryUsage()\n\n\t\tconst result = await this.runTest(config, testFunction)\n\n\t\tconst memoryAfter = this.getMemoryUsage()\n\t\tconst memoryIncrease = memoryAfter - memoryBefore\n\n\t\t// Check for memory leaks (memory should not increase significantly)\n\t\tconst hasMemoryLeak = memoryIncrease > config.expectedThreshold.memoryUsage\n\n\t\treturn {\n\t\t\t...result,\n\t\t\tpassed: result.passed && !hasMemoryLeak,\n\t\t\terror: hasMemoryLeak\n\t\t\t\t? `Potential memory leak detected: ${Math.round(memoryIncrease / 1024 / 1024)}MB increase`\n\t\t\t\t: result.error\n\t\t}\n\t}\n\n\t// Interaction delay test\n\tasync testInteractionDelay(\n\t\tinteractionFunction: () => any,\n\t\texpectedDelay = 100 // 100ms\n\t): Promise<PerformanceTestResult> {\n\t\tconst config: PerformanceTestConfig = {\n\t\t\tname: \"Interaction Delay\",\n\t\t\titerations: 50,\n\t\t\twarmupIterations: 5,\n\t\t\ttimeout: 5000,\n\t\t\texpectedThreshold: {\n\t\t\t\trenderTime: expectedDelay,\n\t\t\t\tmemoryUsage: 1024 * 1024 // 1MB\n\t\t\t}\n\t\t}\n\n\t\treturn this.runTest(config, interactionFunction)\n\t}\n\n\t// Regression testing\n\tasync runRegressionTests(\n\t\tcurrentMetrics: PerformanceMetrics,\n\t\tbaselineMetrics?: PerformanceMetrics\n\t): Promise<{\n\t\tpassed: boolean\n\t\tregressions: ReturnType<PerformanceRegressionDetector[\"detectRegression\"]>\n\t}> {\n\t\tif (baselineMetrics) {\n\t\t\tthis.regressionDetector.setBaseline(baselineMetrics)\n\t\t}\n\n\t\tconst regressions = this.regressionDetector.detectRegression(currentMetrics)\n\t\tconst passed = regressions.length === 0\n\n\t\treturn { passed, regressions }\n\t}\n\n\t// Get all test results\n\tgetResults(): PerformanceTestResult[] {\n\t\treturn [...this.results]\n\t}\n\n\t// Get test summary\n\tgetSummary(): {\n\t\ttotalTests: number\n\t\tpassedTests: number\n\t\tfailedTests: number\n\t\tpassRate: number\n\t} {\n\t\tconst totalTests = this.results.length\n\t\tconst passedTests = this.results.filter((result) => result.passed).length\n\t\tconst failedTests = totalTests - passedTests\n\t\tconst passRate = totalTests > 0 ? (passedTests / totalTests) * 100 : 0\n\n\t\treturn { totalTests, passedTests, failedTests, passRate }\n\t}\n\n\t// Clear test results\n\tclearResults(): void {\n\t\tthis.results = []\n\t}\n\n\t// Generate performance report\n\tgenerateReport(): string {\n\t\tconst summary = this.getSummary()\n\t\tlet report = `Performance Test Report\\n`\n\t\treport += `========================\\n\\n`\n\t\treport += `Total Tests: ${summary.totalTests}\\n`\n\t\treport += `Passed: ${summary.passedTests}\\n`\n\t\treport += `Failed: ${summary.failedTests}\\n`\n\t\treport += `Pass Rate: ${summary.passRate.toFixed(1)}%\\n\\n`\n\n\t\tif (this.results.length > 0) {\n\t\t\treport += `Detailed Results:\\n`\n\t\t\treport += `-----------------\\n\\n`\n\n\t\t\tthis.results.forEach((result, index) => {\n\t\t\t\treport += `${index + 1}. ${result.testName}\\n`\n\t\t\t\treport += ` Status: ${result.passed ? \"PASS\" : \"FAIL\"}\\n`\n\t\t\t\treport += ` Average Render Time: ${result.metrics.averageRenderTime.toFixed(2)}ms\\n`\n\t\t\t\treport += ` Min/Max Render Time: ${result.metrics.minRenderTime.toFixed(2)}ms / ${result.metrics.maxRenderTime.toFixed(2)}ms\\n`\n\t\t\t\treport += ` Memory Usage: ${Math.round(result.metrics.memoryUsage / 1024)} KB\\n`\n\t\t\t\treport += ` Iterations: ${result.metrics.iterations}\\n`\n\n\t\t\t\tif (result.error) {\n\t\t\t\t\treport += ` Error: ${result.error}\\n`\n\t\t\t\t}\n\n\t\t\t\treport += `\\n`\n\t\t\t})\n\t\t}\n\n\t\treturn report\n\t}\n}\n\n// Global performance benchmark instance\nexport const performanceBenchmark = new PerformanceBenchmark()\n\n// Utility functions for common performance tests\nexport const performanceTestUtils = {\n\t// Test component rendering performance\n\tasync testComponent(\n\t\tComponent: any,\n\t\tprops: any = {},\n\t\texpectedRenderTime = 16\n\t): Promise<PerformanceTestResult> {\n\t\treturn performanceBenchmark.testComponentRender(\n\t\t\tComponent.displayName || Component.name || \"Component\",\n\t\t\t() => {\n\t\t\t\t// This would need React Testing Library in a real test environment\n\t\t\t\t// For now, we'll simulate component rendering\n\t\t\t\treturn { type: Component, props } // Mock element\n\t\t\t},\n\t\t\texpectedRenderTime\n\t\t)\n\t},\n\n\t// Test hook performance\n\tasync testHook(\n\t\thookFunction: () => any,\n\t\thookName: string,\n\t\texpectedExecutionTime = 1\n\t): Promise<PerformanceTestResult> {\n\t\tconst config: PerformanceTestConfig = {\n\t\t\tname: `Hook Performance: ${hookName}`,\n\t\t\titerations: 1000,\n\t\t\twarmupIterations: 100,\n\t\t\ttimeout: 5000,\n\t\t\texpectedThreshold: {\n\t\t\t\trenderTime: expectedExecutionTime,\n\t\t\t\tmemoryUsage: 1024 * 1024 // 1MB\n\t\t\t}\n\t\t}\n\n\t\treturn performanceBenchmark.runTest(config, hookFunction)\n\t},\n\n\t// Test async operation performance\n\tasync testAsyncOperation(\n\t\toperation: () => Promise<any>,\n\t\toperationName: string,\n\t\texpectedTime = 1000\n\t): Promise<PerformanceTestResult> {\n\t\tconst config: PerformanceTestConfig = {\n\t\t\tname: `Async Operation: ${operationName}`,\n\t\t\titerations: 10,\n\t\t\twarmupIterations: 2,\n\t\t\ttimeout: 30000,\n\t\t\texpectedThreshold: {\n\t\t\t\trenderTime: expectedTime,\n\t\t\t\tmemoryUsage: 2 * 1024 * 1024 // 2MB\n\t\t\t}\n\t\t}\n\n\t\treturn performanceBenchmark.runTest(config, operation)\n\t},\n\n\t// Test bundle size impact\n\tasync measureBundleImpact(\n\t\tbeforeFunction: () => void,\n\t\tafterFunction: () => void,\n\t\tfeatureName: string\n\t): Promise<{\n\t\tbundleIncrease: number\n\t\tmemoryIncrease: number\n\t\trenderTimeImpact: number\n\t}> {\n\t\tconst beforeMemory = (performance as any).memory?.usedJSHeapSize || 0\n\t\tconst beforeTime = performance.now()\n\n\t\tbeforeFunction()\n\n\t\tconst midMemory = (performance as any).memory?.usedJSHeapSize || 0\n\t\tconst midTime = performance.now()\n\n\t\tafterFunction()\n\n\t\tconst afterMemory = (performance as any).memory?.usedJSHeapSize || 0\n\t\tconst afterTime = performance.now()\n\n\t\treturn {\n\t\t\tbundleIncrease: afterMemory - beforeMemory,\n\t\t\tmemoryIncrease: midMemory - beforeMemory,\n\t\t\trenderTimeImpact: afterTime - midTime - (midTime - beforeTime)\n\t\t}\n\t}\n}\n\n// Performance testing framework\nexport class PerformanceTestFramework {\n\tprivate benchmark = new PerformanceBenchmark()\n\tprivate suites: Map<string, PerformanceTestConfig[]> = new Map()\n\n\t// Register a test suite\n\tregisterSuite(suiteName: string, tests: PerformanceTestConfig[]) {\n\t\tthis.suites.set(suiteName, tests)\n\t}\n\n\t// Run all tests in a suite\n\tasync runSuite(\n\t\tsuiteName: string,\n\t\ttestImplementations: Map<string, () => any>\n\t): Promise<PerformanceTestResult[]> {\n\t\tconst tests = this.suites.get(suiteName)\n\t\tif (!tests) {\n\t\t\tthrow new Error(`Test suite '${suiteName}' not found`)\n\t\t}\n\n\t\tconst results: PerformanceTestResult[] = []\n\n\t\tfor (const test of tests) {\n\t\t\tconst implementation = testImplementations.get(test.name)\n\t\t\tif (!implementation) {\n\t\t\t\tconsole.warn(`No implementation found for test '${test.name}'`)\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tconst result = await this.benchmark.runTest(test, implementation)\n\t\t\tresults.push(result)\n\t\t}\n\n\t\treturn results\n\t}\n\n\t// Run all registered test suites\n\tasync runAllSuites(\n\t\timplementations: Map<string, Map<string, () => any>>\n\t): Promise<Map<string, PerformanceTestResult[]>> {\n\t\tconst allResults = new Map<string, PerformanceTestResult[]>()\n\n\t\tfor (const [suiteName] of this.suites) {\n\t\t\tconst suiteImplementations = implementations.get(suiteName)\n\t\t\tif (!suiteImplementations) {\n\t\t\t\tconsole.warn(`No implementations found for suite '${suiteName}'`)\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tconst results = await this.runSuite(suiteName, suiteImplementations)\n\t\t\tallResults.set(suiteName, results)\n\t\t}\n\n\t\treturn allResults\n\t}\n\n\t// Generate comprehensive report\n\tgenerateComprehensiveReport(): string {\n\t\tconst summary = this.benchmark.getSummary()\n\t\tlet report = this.benchmark.generateReport()\n\n\t\t// Add suite breakdown if available\n\t\tif (this.suites.size > 0) {\n\t\t\treport += `\\nTest Suites:\\n`\n\t\t\treport += `============\\n\\n`\n\n\t\t\tfor (const [suiteName, tests] of this.suites) {\n\t\t\t\treport += `Suite: ${suiteName}\\n`\n\t\t\t\treport += `Tests: ${tests.length}\\n\\n`\n\t\t\t}\n\t\t}\n\n\t\treturn report\n\t}\n}\n\nexport const performanceTestFramework = new PerformanceTestFramework()\n","// Performance budget configuration\nexport interface PerformanceBudget {\n\tname: string\n\tcategory: \"bundle\" | \"runtime\" | \"network\" | \"memory\"\n\tlimit: number\n\tunit: \"bytes\" | \"ms\" | \"score\" | \"percent\"\n\tseverity: \"error\" | \"warning\" | \"info\"\n\tdescription: string\n}\n\n// Performance budget violation\nexport interface BudgetViolation {\n\tbudget: PerformanceBudget\n\tactualValue: number\n\toverageAmount: number\n\toveragePercentage: number\n\ttimestamp: number\n}\n\n// Alert configuration\nexport interface AlertConfig {\n\tenabled: boolean\n\tchannels: AlertChannel[]\n\tthreshold: number // Number of violations before alerting\n\tcooldown: number // Minimum time between alerts (ms)\n}\n\nexport interface AlertChannel {\n\ttype: \"console\" | \"webhook\" | \"email\" | \"slack\"\n\tconfig: {\n\t\turl?: string\n\t\temail?: string\n\t\ttoken?: string\n\t\tchannel?: string\n\t}\n}\n\n// Default performance budgets for media player\nexport const defaultPerformanceBudgets: PerformanceBudget[] = [\n\t// Bundle size budgets\n\t{\n\t\tname: \"Main Bundle Size (ESM)\",\n\t\tcategory: \"bundle\",\n\t\tlimit: 250 * 1024, // 250KB\n\t\tunit: \"bytes\",\n\t\tseverity: \"error\",\n\t\tdescription: \"Main bundle should stay under 250KB for fast initial loading\"\n\t},\n\t{\n\t\tname: \"Main Bundle Size (CJS)\",\n\t\tcategory: \"bundle\",\n\t\tlimit: 200 * 1024, // 200KB\n\t\tunit: \"bytes\",\n\t\tseverity: \"error\",\n\t\tdescription: \"CJS bundle should be smaller due to better compression\"\n\t},\n\t{\n\t\tname: \"Core Module Size\",\n\t\tcategory: \"bundle\",\n\t\tlimit: 15 * 1024, // 15KB\n\t\tunit: \"bytes\",\n\t\tseverity: \"warning\",\n\t\tdescription: \"Core architecture should remain lightweight\"\n\t},\n\t{\n\t\tname: \"Enhanced Components Size\",\n\t\tcategory: \"bundle\",\n\t\tlimit: 40 * 1024, // 40KB\n\t\tunit: \"bytes\",\n\t\tseverity: \"warning\",\n\t\tdescription: \"Enhanced components bundle size\"\n\t},\n\n\t// Runtime performance budgets\n\t{\n\t\tname: \"Component Render Time\",\n\t\tcategory: \"runtime\",\n\t\tlimit: 16, // 16ms for 60fps\n\t\tunit: \"ms\",\n\t\tseverity: \"error\",\n\t\tdescription: \"Component rendering should complete within one frame\"\n\t},\n\t{\n\t\tname: \"First Input Delay\",\n\t\tcategory: \"runtime\",\n\t\tlimit: 100, // 100ms\n\t\tunit: \"ms\",\n\t\tseverity: \"error\",\n\t\tdescription: \"First Input Delay should be under 100ms for good UX\"\n\t},\n\t{\n\t\tname: \"Largest Contentful Paint\",\n\t\tcategory: \"runtime\",\n\t\tlimit: 2500, // 2.5s\n\t\tunit: \"ms\",\n\t\tseverity: \"warning\",\n\t\tdescription: \"LCP should be under 2.5s for good Core Web Vitals score\"\n\t},\n\t{\n\t\tname: \"Cumulative Layout Shift\",\n\t\tcategory: \"runtime\",\n\t\tlimit: 0.1,\n\t\tunit: \"score\",\n\t\tseverity: \"warning\",\n\t\tdescription: \"CLS should be under 0.1 for good visual stability\"\n\t},\n\n\t// Memory budgets\n\t{\n\t\tname: \"Memory Usage\",\n\t\tcategory: \"memory\",\n\t\tlimit: 50 * 1024 * 1024, // 50MB\n\t\tunit: \"bytes\",\n\t\tseverity: \"warning\",\n\t\tdescription: \"Memory usage should stay under 50MB for good performance\"\n\t},\n\t{\n\t\tname: \"Memory Increase Per Operation\",\n\t\tcategory: \"memory\",\n\t\tlimit: 1024 * 1024, // 1MB\n\t\tunit: \"bytes\",\n\t\tseverity: \"error\",\n\t\tdescription: \"Each operation should not increase memory by more than 1MB\"\n\t},\n\n\t// Network budgets (for media loading)\n\t{\n\t\tname: \"Media Load Time\",\n\t\tcategory: \"network\",\n\t\tlimit: 3000, // 3s\n\t\tunit: \"ms\",\n\t\tseverity: \"warning\",\n\t\tdescription: \"Media should start loading within 3 seconds\"\n\t}\n]\n\n// Performance budget monitor\nexport class PerformanceBudgetMonitor {\n\tprivate budgets: Map<string, PerformanceBudget> = new Map()\n\tprivate violations: BudgetViolation[] = []\n\tprivate alertConfig: AlertConfig\n\tprivate lastAlertTime = 0\n\n\tconstructor(\n\t\tbudgets: PerformanceBudget[] = defaultPerformanceBudgets,\n\t\talertConfig: AlertConfig = {\n\t\t\tenabled: true,\n\t\t\tchannels: [{ type: \"console\", config: {} }],\n\t\t\tthreshold: 1,\n\t\t\tcooldown: 5 * 60 * 1000 // 5 minutes\n\t\t}\n\t) {\n\t\tbudgets.forEach((budget) => {\n\t\t\tthis.budgets.set(budget.name, budget)\n\t\t})\n\t\tthis.alertConfig = alertConfig\n\t}\n\n\t// Check a single metric against budgets\n\tcheckMetric(\n\t\tmetricName: string,\n\t\tvalue: number,\n\t\tcategory: PerformanceBudget[\"category\"] = \"runtime\"\n\t): BudgetViolation[] {\n\t\tconst violations: BudgetViolation[] = []\n\n\t\tfor (const [name, budget] of this.budgets) {\n\t\t\tif (\n\t\t\t\tbudget.category === category &&\n\t\t\t\t(name.includes(metricName) || metricName.includes(name.split(\" \")[0]?.toLowerCase() || \"\"))\n\t\t\t) {\n\t\t\t\tif (value > budget.limit) {\n\t\t\t\t\tconst violation: BudgetViolation = {\n\t\t\t\t\t\tbudget,\n\t\t\t\t\t\tactualValue: value,\n\t\t\t\t\t\toverageAmount: value - budget.limit,\n\t\t\t\t\t\toveragePercentage: ((value - budget.limit) / budget.limit) * 100,\n\t\t\t\t\t\ttimestamp: Date.now()\n\t\t\t\t\t}\n\n\t\t\t\t\tviolations.push(violation)\n\t\t\t\t\tthis.violations.push(violation)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (violations.length > 0) {\n\t\t\tthis.handleViolations(violations)\n\t\t}\n\n\t\treturn violations\n\t}\n\n\t// Check bundle sizes\n\tasync checkBundleSizes(distPath: string): Promise<BudgetViolation[]> {\n\t\tconst violations: BudgetViolation[] = []\n\n\t\t// Only check bundle sizes in Node.js environment\n\t\tif (typeof window !== \"undefined\" || typeof process === \"undefined\") {\n\t\t\tconsole.warn(\"Bundle size checking is only available in Node.js environment\")\n\t\t\treturn violations\n\t\t}\n\n\t\t// Bundle size checking is disabled in browser environments\n\t\tconsole.warn(\n\t\t\t\"Bundle size checking disabled - use Node.js cicdIntegration from @therealtinhtute/baroiplayer/core/performance/cicd for CI/CD environments\"\n\t\t)\n\n\t\treturn violations\n\t}\n\n\t// Check runtime performance\n\tcheckRuntimeMetrics(metrics: {\n\t\trenderTime?: number\n\t\tfid?: number\n\t\tlcp?: number\n\t\tcls?: number\n\t\tmemoryUsage?: number\n\t\tmediaLoadTime?: number\n\t}): BudgetViolation[] {\n\t\tconst allViolations: BudgetViolation[] = []\n\n\t\tif (metrics.renderTime !== undefined) {\n\t\t\tallViolations.push(\n\t\t\t\t...this.checkMetric(\"Component Render Time\", metrics.renderTime, \"runtime\")\n\t\t\t)\n\t\t}\n\n\t\tif (metrics.fid !== undefined) {\n\t\t\tallViolations.push(...this.checkMetric(\"First Input Delay\", metrics.fid, \"runtime\"))\n\t\t}\n\n\t\tif (metrics.lcp !== undefined) {\n\t\t\tallViolations.push(...this.checkMetric(\"Largest Contentful Paint\", metrics.lcp, \"runtime\"))\n\t\t}\n\n\t\tif (metrics.cls !== undefined) {\n\t\t\tallViolations.push(...this.checkMetric(\"Cumulative Layout Shift\", metrics.cls, \"runtime\"))\n\t\t}\n\n\t\tif (metrics.memoryUsage !== undefined) {\n\t\t\tallViolations.push(...this.checkMetric(\"Memory Usage\", metrics.memoryUsage, \"memory\"))\n\t\t}\n\n\t\tif (metrics.mediaLoadTime !== undefined) {\n\t\t\tallViolations.push(...this.checkMetric(\"Media Load Time\", metrics.mediaLoadTime, \"network\"))\n\t\t}\n\n\t\treturn allViolations\n\t}\n\n\t// Handle budget violations\n\tprivate async handleViolations(violations: BudgetViolation[]) {\n\t\tif (!this.alertConfig.enabled) return\n\n\t\tconst now = Date.now()\n\t\tconst errorViolations = violations.filter((v) => v.budget.severity === \"error\")\n\n\t\t// Check if we should send an alert based on threshold and cooldown\n\t\tif (\n\t\t\terrorViolations.length >= this.alertConfig.threshold &&\n\t\t\tnow - this.lastAlertTime >= this.alertConfig.cooldown\n\t\t) {\n\t\t\tawait this.sendAlerts(violations)\n\t\t\tthis.lastAlertTime = now\n\t\t}\n\t}\n\n\t// Send alerts through configured channels\n\tprivate async sendAlerts(violations: BudgetViolation[]) {\n\t\tconst message = this.formatAlertMessage(violations)\n\n\t\tfor (const channel of this.alertConfig.channels) {\n\t\t\ttry {\n\t\t\t\tawait this.sendAlert(channel, message)\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(`Failed to send alert via ${channel.type}:`, error)\n\t\t\t}\n\t\t}\n\t}\n\n\t// Format alert message\n\tprivate formatAlertMessage(violations: BudgetViolation[]): string {\n\t\tlet message = `🚨 Performance Budget Violations Detected!\\n\\n`\n\n\t\tviolations.forEach((violation) => {\n\t\t\tconst { budget, actualValue, overageAmount, overagePercentage } = violation\n\t\t\tconst unit = this.getUnitDisplay(budget.unit)\n\n\t\t\tmessage += `❌ ${budget.name}\\n`\n\t\t\tmessage += ` Limit: ${this.formatValue(budget.limit, budget.unit)}\\n`\n\t\t\tmessage += ` Actual: ${this.formatValue(actualValue, budget.unit)}\\n`\n\t\t\tmessage += ` Overage: ${this.formatValue(overageAmount, budget.unit)} (+${overagePercentage.toFixed(1)}%)\\n`\n\t\t\tmessage += ` Severity: ${budget.severity.toUpperCase()}\\n\\n`\n\t\t})\n\n\t\tmessage += `Time: ${new Date().toISOString()}\\n`\n\t\tmessage += `Total Violations: ${violations.length}`\n\n\t\treturn message\n\t}\n\n\t// Send alert to specific channel\n\tprivate async sendAlert(channel: AlertChannel, message: string) {\n\t\tswitch (channel.type) {\n\t\t\tcase \"console\":\n\t\t\t\tconsole.error(message)\n\t\t\t\tbreak\n\n\t\t\tcase \"webhook\":\n\t\t\t\tif (channel.config.url) {\n\t\t\t\t\tconst response = await fetch(channel.config.url, {\n\t\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\t\theaders: { \"Content-Type\": \"application/json\" },\n\t\t\t\t\t\tbody: JSON.stringify({ text: message, timestamp: Date.now() })\n\t\t\t\t\t})\n\t\t\t\t\tif (!response.ok) {\n\t\t\t\t\t\tthrow new Error(`Webhook failed: ${response.status}`)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\n\t\t\tcase \"slack\":\n\t\t\t\tif (channel.config.url) {\n\t\t\t\t\tconst response = await fetch(channel.config.url, {\n\t\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\t\theaders: { \"Content-Type\": \"application/json\" },\n\t\t\t\t\t\tbody: JSON.stringify({\n\t\t\t\t\t\t\ttext: message,\n\t\t\t\t\t\t\tchannel: channel.config.channel,\n\t\t\t\t\t\t\tusername: \"BaroiPlayer Performance Monitor\"\n\t\t\t\t\t\t})\n\t\t\t\t\t})\n\t\t\t\t\tif (!response.ok) {\n\t\t\t\t\t\tthrow new Error(`Slack webhook failed: ${response.status}`)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn(`Unsupported alert channel: ${channel.type}`)\n\t\t}\n\t}\n\n\t// Helper methods\n\tprivate formatValue(value: number, unit: PerformanceBudget[\"unit\"]): string {\n\t\tswitch (unit) {\n\t\t\tcase \"bytes\":\n\t\t\t\treturn this.formatBytes(value)\n\t\t\tcase \"ms\":\n\t\t\t\treturn `${value.toFixed(2)}ms`\n\t\t\tcase \"score\":\n\t\t\t\treturn value.toFixed(3)\n\t\t\tcase \"percent\":\n\t\t\t\treturn `${value.toFixed(1)}%`\n\t\t\tdefault:\n\t\t\t\treturn value.toString()\n\t\t}\n\t}\n\n\tprivate formatBytes(bytes: number): string {\n\t\tif (bytes >= 1024 * 1024) {\n\t\t\treturn `${(bytes / 1024 / 1024).toFixed(2)}MB`\n\t\t}\n\t\tif (bytes >= 1024) {\n\t\t\treturn `${(bytes / 1024).toFixed(2)}KB`\n\t\t}\n\t\treturn `${bytes}B`\n\t}\n\n\tprivate getUnitDisplay(unit: PerformanceBudget[\"unit\"]): string {\n\t\tconst displays = {\n\t\t\tbytes: \"bytes\",\n\t\t\tms: \"milliseconds\",\n\t\t\tscore: \"score\",\n\t\t\tpercent: \"percent\"\n\t\t}\n\t\treturn displays[unit] || unit\n\t}\n\n\t// Management methods\n\taddBudget(budget: PerformanceBudget) {\n\t\tthis.budgets.set(budget.name, budget)\n\t}\n\n\tremoveBudget(name: string) {\n\t\tthis.budgets.delete(name)\n\t}\n\n\tupdateBudget(name: string, updates: Partial<PerformanceBudget>) {\n\t\tconst existing = this.budgets.get(name)\n\t\tif (existing) {\n\t\t\tthis.budgets.set(name, { ...existing, ...updates })\n\t\t}\n\t}\n\n\tgetBudgets(): PerformanceBudget[] {\n\t\treturn Array.from(this.budgets.values())\n\t}\n\n\tgetViolations(since?: number): BudgetViolation[] {\n\t\tif (since) {\n\t\t\treturn this.violations.filter((v) => v.timestamp >= since)\n\t\t}\n\t\treturn [...this.violations]\n\t}\n\n\tclearViolations() {\n\t\tthis.violations = []\n\t}\n\n\tgetViolationSummary(): {\n\t\ttotal: number\n\t\tbyCategory: Record<string, number>\n\t\tbySeverity: Record<string, number>\n\t} {\n\t\tconst byCategory: Record<string, number> = {}\n\t\tconst bySeverity: Record<string, number> = {}\n\n\t\tthis.violations.forEach((violation) => {\n\t\t\tconst category = violation.budget.category\n\t\t\tconst severity = violation.budget.severity\n\n\t\t\tbyCategory[category] = (byCategory[category] || 0) + 1\n\t\t\tbySeverity[severity] = (bySeverity[severity] || 0) + 1\n\t\t})\n\n\t\treturn {\n\t\t\ttotal: this.violations.length,\n\t\t\tbyCategory,\n\t\t\tbySeverity\n\t\t}\n\t}\n}\n\n// Global performance budget monitor\nexport const performanceBudgetMonitor = new PerformanceBudgetMonitor()\n","import React from \"react\"\n\n// Network monitoring and adaptive loading\nexport interface NetworkInfo {\n\teffectiveType: \"2g\" | \"3g\" | \"4g\" | \"5g\" | \"unknown\"\n\tdownlink: number // Mbps\n\trtt: number // Round trip time in ms\n\tsaveData: boolean\n\tisOnline: boolean\n}\n\nexport interface MediaLoadingConfig {\n\tpreloadStrategy: \"none\" | \"metadata\" | \"auto\"\n\tadaptiveBitrate: boolean\n\tmaxPreloadSize: number // bytes\n\tnetworkThresholds: {\n\t\t\"2g\": { maxBitrate: number; preload: boolean }\n\t\t\"3g\": { maxBitrate: number; preload: boolean }\n\t\t\"4g\": { maxBitrate: number; preload: boolean }\n\t\t\"5g\": { maxBitrate: number; preload: boolean }\n\t}\n\tbufferSize: number // seconds\n\tenableServiceWorker: boolean\n}\n\nexport const defaultMediaLoadingConfig: MediaLoadingConfig = {\n\tpreloadStrategy: \"metadata\",\n\tadaptiveBitrate: true,\n\tmaxPreloadSize: 2 * 1024 * 1024, // 2MB\n\tnetworkThresholds: {\n\t\t\"2g\": { maxBitrate: 128, preload: false }, // 128 kbps\n\t\t\"3g\": { maxBitrate: 500, preload: false }, // 500 kbps\n\t\t\"4g\": { maxBitrate: 2000, preload: true }, // 2 Mbps\n\t\t\"5g\": { maxBitrate: 10000, preload: true } // 10 Mbps\n\t},\n\tbufferSize: 10, // 10 seconds\n\tenableServiceWorker: true\n}\n\n// Media loading performance tracker\nexport interface MediaLoadingMetrics {\n\tloadStartTime: number\n\tfirstByteTime?: number\n\tloadCompleteTime?: number\n\ttotalLoadTime?: number\n\tbytesLoaded: number\n\tloadSpeed: number // bytes per second\n\tnetworkType: string\n\tquality: string\n\tbufferHealth: number // 0-1 scale\n\tstallsCount: number\n\tstallsDuration: number\n}\n\n// Network monitoring utility\nexport class NetworkMonitor {\n\tprivate connection: any\n\tprivate listeners: Set<(info: NetworkInfo) => void> = new Set()\n\tprivate currentInfo: NetworkInfo\n\n\tconstructor() {\n\t\tif (typeof window === \"undefined\" || typeof navigator === \"undefined\") {\n\t\t\t// Server-side rendering fallback\n\t\t\tthis.connection = null\n\t\t\tthis.currentInfo = {\n\t\t\t\teffectiveType: \"unknown\",\n\t\t\t\tdownlink: 0,\n\t\t\t\trtt: 0,\n\t\t\t\tsaveData: false,\n\t\t\t\tisOnline: true\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tthis.connection =\n\t\t\t(navigator as any).connection ||\n\t\t\t(navigator as any).mozConnection ||\n\t\t\t(navigator as any).webkitConnection\n\n\t\tthis.currentInfo = this.getNetworkInfo()\n\t\tthis.initializeListeners()\n\t}\n\n\tprivate getNetworkInfo(): NetworkInfo {\n\t\tif (typeof navigator === \"undefined\") {\n\t\t\t// Server-side rendering fallback\n\t\t\treturn {\n\t\t\t\teffectiveType: \"unknown\",\n\t\t\t\tdownlink: 0,\n\t\t\t\trtt: 0,\n\t\t\t\tsaveData: false,\n\t\t\t\tisOnline: true\n\t\t\t}\n\t\t}\n\n\t\tconst isOnline = navigator.onLine\n\n\t\tif (this.connection) {\n\t\t\treturn {\n\t\t\t\teffectiveType: this.connection.effectiveType || \"unknown\",\n\t\t\t\tdownlink: this.connection.downlink || 0,\n\t\t\t\trtt: this.connection.rtt || 0,\n\t\t\t\tsaveData: this.connection.saveData || false,\n\t\t\t\tisOnline\n\t\t\t}\n\t\t}\n\n\t\t// Fallback for browsers without Network Information API\n\t\treturn {\n\t\t\teffectiveType: \"unknown\",\n\t\t\tdownlink: 0,\n\t\t\trtt: 0,\n\t\t\tsaveData: false,\n\t\t\tisOnline\n\t\t}\n\t}\n\n\tprivate initializeListeners() {\n\t\tif (typeof window === \"undefined\") {\n\t\t\t// Server-side rendering - skip event listeners\n\t\t\treturn\n\t\t}\n\n\t\tif (this.connection) {\n\t\t\tthis.connection.addEventListener(\"change\", this.handleNetworkChange.bind(this))\n\t\t}\n\n\t\twindow.addEventListener(\"online\", this.handleNetworkChange.bind(this))\n\t\twindow.addEventListener(\"offline\", this.handleNetworkChange.bind(this))\n\t}\n\n\tprivate handleNetworkChange() {\n\t\tconst newInfo = this.getNetworkInfo()\n\t\tthis.currentInfo = newInfo\n\t\tthis.listeners.forEach((listener) => listener(newInfo))\n\t}\n\n\tgetCurrentNetworkInfo(): NetworkInfo {\n\t\treturn { ...this.currentInfo }\n\t}\n\n\tsubscribe(listener: (info: NetworkInfo) => void): () => void {\n\t\tthis.listeners.add(listener)\n\t\treturn () => this.listeners.delete(listener)\n\t}\n\n\t// Estimate available bandwidth with fallback detection\n\tasync estimateBandwidth(): Promise<number> {\n\t\tif (this.connection && this.connection.downlink) {\n\t\t\treturn this.connection.downlink * 1000 // Convert to kbps\n\t\t}\n\n\t\t// Fallback: simple bandwidth test\n\t\ttry {\n\t\t\tconst startTime = performance.now()\n\t\t\tconst testUrl = \"/api/bandwidth-test?size=100kb\" // Would need to be implemented\n\t\t\tconst response = await fetch(testUrl)\n\t\t\tconst blob = await response.blob()\n\t\t\tconst endTime = performance.now()\n\n\t\t\tconst timeInSeconds = (endTime - startTime) / 1000\n\t\t\tconst bytesLoaded = blob.size\n\t\t\tconst bitsPerSecond = (bytesLoaded * 8) / timeInSeconds\n\n\t\t\treturn bitsPerSecond / 1000 // Return in kbps\n\t\t} catch (error) {\n\t\t\tconsole.warn(\"Bandwidth estimation failed:\", error)\n\t\t\treturn 1000 // Default to 1Mbps\n\t\t}\n\t}\n}\n\n// Media loading optimizer\nexport class MediaLoadingOptimizer {\n\tprivate config: MediaLoadingConfig\n\tprivate networkMonitor: NetworkMonitor\n\tprivate loadingMetrics: Map<string, MediaLoadingMetrics> = new Map()\n\tprivate preloadCache: Map<string, Promise<Blob>> = new Map()\n\n\tconstructor(config: Partial<MediaLoadingConfig> = {}) {\n\t\tthis.config = { ...defaultMediaLoadingConfig, ...config }\n\t\tthis.networkMonitor = new NetworkMonitor()\n\t\tthis.initializeNetworkMonitoring()\n\t}\n\n\tprivate initializeNetworkMonitoring() {\n\t\tthis.networkMonitor.subscribe((networkInfo) => {\n\t\t\tthis.handleNetworkChange(networkInfo)\n\t\t})\n\t}\n\n\tprivate handleNetworkChange(networkInfo: NetworkInfo) {\n\t\tconsole.log(\"Network changed:\", networkInfo)\n\n\t\t// Adjust quality based on network conditions\n\t\tif (this.config.adaptiveBitrate) {\n\t\t\tthis.adjustQualityForNetwork(networkInfo)\n\t\t}\n\n\t\t// Clear preload cache if on slow network\n\t\tif (networkInfo.effectiveType === \"2g\" || networkInfo.saveData) {\n\t\t\tthis.clearPreloadCache()\n\t\t}\n\t}\n\n\t// Optimize media loading based on network conditions\n\tasync optimizeMediaLoading(\n\t\tmediaUrl: string,\n\t\telement: HTMLMediaElement,\n\t\toptions: {\n\t\t\tquality?: string\n\t\t\tpreload?: boolean\n\t\t\tpriority?: \"high\" | \"normal\" | \"low\"\n\t\t} = {}\n\t): Promise<MediaLoadingMetrics> {\n\t\tconst startTime = performance.now()\n\t\tconst networkInfo = this.networkMonitor.getCurrentNetworkInfo()\n\n\t\tconst metrics: MediaLoadingMetrics = {\n\t\t\tloadStartTime: startTime,\n\t\t\tbytesLoaded: 0,\n\t\t\tloadSpeed: 0,\n\t\t\tnetworkType: networkInfo.effectiveType,\n\t\t\tquality: options.quality || \"auto\",\n\t\t\tbufferHealth: 0,\n\t\t\tstallsCount: 0,\n\t\t\tstallsDuration: 0\n\t\t}\n\n\t\tthis.loadingMetrics.set(mediaUrl, metrics)\n\n\t\ttry {\n\t\t\t// Choose optimal loading strategy\n\t\t\tconst loadingStrategy = this.chooseLoadingStrategy(networkInfo, options)\n\n\t\t\t// Apply preload strategy\n\t\t\tif (loadingStrategy.shouldPreload) {\n\t\t\t\tawait this.preloadMedia(mediaUrl, loadingStrategy.preloadAmount)\n\t\t\t}\n\n\t\t\t// Set appropriate preload attribute\n\t\t\telement.preload = loadingStrategy.preloadAttribute\n\n\t\t\t// Monitor loading progress\n\t\t\tthis.monitorLoadingProgress(element, metrics)\n\n\t\t\t// Apply quality adjustments\n\t\t\tif (this.config.adaptiveBitrate && loadingStrategy.suggestedQuality) {\n\t\t\t\tthis.applyQualitySettings(element, loadingStrategy.suggestedQuality)\n\t\t\t}\n\n\t\t\treturn metrics\n\t\t} catch (error) {\n\t\t\tconsole.error(\"Media loading optimization failed:\", error)\n\t\t\treturn metrics\n\t\t}\n\t}\n\n\tprivate chooseLoadingStrategy(\n\t\tnetworkInfo: NetworkInfo,\n\t\toptions: { preload?: boolean; priority?: string; quality?: string }\n\t) {\n\t\tconst effectiveType = networkInfo.effectiveType === \"unknown\" ? \"4g\" : networkInfo.effectiveType\n\t\tconst threshold =\n\t\t\tthis.config.networkThresholds[effectiveType] || this.config.networkThresholds[\"4g\"]\n\n\t\treturn {\n\t\t\tshouldPreload: options.preload !== false && threshold.preload && !networkInfo.saveData,\n\t\t\tpreloadAmount: networkInfo.saveData ? 0 : this.config.maxPreloadSize,\n\t\t\tpreloadAttribute: this.getPreloadAttribute(networkInfo),\n\t\t\tsuggestedQuality: this.getSuggestedQuality(networkInfo, threshold.maxBitrate),\n\t\t\tbufferTarget: this.getBufferTarget(networkInfo)\n\t\t}\n\t}\n\n\tprivate getPreloadAttribute(networkInfo: NetworkInfo): \"none\" | \"metadata\" | \"auto\" {\n\t\tif (networkInfo.saveData || networkInfo.effectiveType === \"2g\") {\n\t\t\treturn \"none\"\n\t\t}\n\n\t\tif (networkInfo.effectiveType === \"3g\") {\n\t\t\treturn \"metadata\"\n\t\t}\n\n\t\treturn this.config.preloadStrategy\n\t}\n\n\tprivate getSuggestedQuality(networkInfo: NetworkInfo, maxBitrate: number): string {\n\t\tconst availableBandwidth = networkInfo.downlink * 1000 // Convert to kbps\n\n\t\tif (availableBandwidth >= maxBitrate * 2) return \"high\"\n\t\tif (availableBandwidth >= maxBitrate) return \"medium\"\n\t\treturn \"low\"\n\t}\n\n\tprivate getBufferTarget(networkInfo: NetworkInfo): number {\n\t\tswitch (networkInfo.effectiveType) {\n\t\t\tcase \"2g\":\n\t\t\t\treturn 2 // 2 seconds\n\t\t\tcase \"3g\":\n\t\t\t\treturn 5 // 5 seconds\n\t\t\tcase \"4g\":\n\t\t\t\treturn this.config.bufferSize\n\t\t\tcase \"5g\":\n\t\t\t\treturn this.config.bufferSize * 1.5\n\t\t\tdefault:\n\t\t\t\treturn this.config.bufferSize\n\t\t}\n\t}\n\n\t// Preload media content\n\tasync preloadMedia(url: string, maxSize: number): Promise<void> {\n\t\tif (this.preloadCache.has(url)) {\n\t\t\treturn // Already preloading or preloaded\n\t\t}\n\n\t\tconst preloadPromise = this.fetchWithProgress(url, maxSize)\n\t\tthis.preloadCache.set(url, preloadPromise)\n\n\t\ttry {\n\t\t\tawait preloadPromise\n\t\t} catch (error) {\n\t\t\tconsole.warn(`Preload failed for ${url}:`, error)\n\t\t\tthis.preloadCache.delete(url)\n\t\t}\n\t}\n\n\tprivate async fetchWithProgress(url: string, maxSize: number): Promise<Blob> {\n\t\tconst response = await fetch(url, {\n\t\t\theaders: {\n\t\t\t\tRange: `bytes=0-${maxSize - 1}` // Limit preload size\n\t\t\t}\n\t\t})\n\n\t\tif (!response.ok) {\n\t\t\tthrow new Error(`Failed to preload: ${response.status}`)\n\t\t}\n\n\t\tconst reader = response.body?.getReader()\n\t\tif (!reader) {\n\t\t\tthrow new Error(\"Response body not readable\")\n\t\t}\n\n\t\tconst chunks: Uint8Array[] = []\n\t\tlet bytesRead = 0\n\n\t\ttry {\n\t\t\twhile (bytesRead < maxSize) {\n\t\t\t\tconst { done, value } = await reader.read()\n\t\t\t\tif (done) break\n\n\t\t\t\tchunks.push(value)\n\t\t\t\tbytesRead += value.length\n\t\t\t}\n\t\t} finally {\n\t\t\treader.releaseLock()\n\t\t}\n\n\t\treturn new Blob(chunks)\n\t}\n\n\t// Monitor loading progress and update metrics\n\tprivate monitorLoadingProgress(element: HTMLMediaElement, metrics: MediaLoadingMetrics) {\n\t\tlet stallStartTime: number | null = null\n\n\t\tconst updateMetrics = () => {\n\t\t\tif (element.buffered.length > 0) {\n\t\t\t\tconst bufferedEnd = element.buffered.end(element.buffered.length - 1)\n\t\t\t\tconst currentTime = element.currentTime\n\t\t\t\tmetrics.bufferHealth = Math.min((bufferedEnd - currentTime) / this.config.bufferSize, 1)\n\t\t\t}\n\t\t}\n\n\t\t// Track first byte\n\t\tconst onLoadStart = () => {\n\t\t\tmetrics.firstByteTime = performance.now()\n\t\t}\n\n\t\t// Track load completion\n\t\tconst onCanPlay = () => {\n\t\t\tmetrics.loadCompleteTime = performance.now()\n\t\t\tmetrics.totalLoadTime = metrics.loadCompleteTime - metrics.loadStartTime\n\n\t\t\t// Calculate load speed\n\t\t\tif (metrics.totalLoadTime && metrics.bytesLoaded > 0) {\n\t\t\t\tmetrics.loadSpeed = metrics.bytesLoaded / (metrics.totalLoadTime / 1000)\n\t\t\t}\n\t\t}\n\n\t\t// Track stalls\n\t\tconst onWaiting = () => {\n\t\t\tif (stallStartTime === null) {\n\t\t\t\tstallStartTime = performance.now()\n\t\t\t\tmetrics.stallsCount++\n\t\t\t}\n\t\t}\n\n\t\tconst onPlaying = () => {\n\t\t\tif (stallStartTime !== null) {\n\t\t\t\tmetrics.stallsDuration += performance.now() - stallStartTime\n\t\t\t\tstallStartTime = null\n\t\t\t}\n\t\t\tupdateMetrics()\n\t\t}\n\n\t\t// Track progress\n\t\tconst onProgress = () => {\n\t\t\tif (element.buffered.length > 0) {\n\t\t\t\tconst bufferedBytes = element.buffered.end(0) * 1000 // Rough estimate\n\t\t\t\tmetrics.bytesLoaded = bufferedBytes\n\t\t\t}\n\t\t\tupdateMetrics()\n\t\t}\n\n\t\t// Add event listeners\n\t\telement.addEventListener(\"loadstart\", onLoadStart)\n\t\telement.addEventListener(\"canplay\", onCanPlay)\n\t\telement.addEventListener(\"waiting\", onWaiting)\n\t\telement.addEventListener(\"playing\", onPlaying)\n\t\telement.addEventListener(\"progress\", onProgress)\n\n\t\t// Cleanup function\n\t\tconst cleanup = () => {\n\t\t\telement.removeEventListener(\"loadstart\", onLoadStart)\n\t\t\telement.removeEventListener(\"canplay\", onCanPlay)\n\t\t\telement.removeEventListener(\"waiting\", onWaiting)\n\t\t\telement.removeEventListener(\"playing\", onPlaying)\n\t\t\telement.removeEventListener(\"progress\", onProgress)\n\t\t}\n\n\t\t// Auto-cleanup after 5 minutes\n\t\tsetTimeout(cleanup, 5 * 60 * 1000)\n\t}\n\n\t// Apply quality settings (would integrate with HLS.js or similar)\n\tprivate applyQualitySettings(element: HTMLMediaElement, quality: string) {\n\t\t// This would integrate with your video streaming library\n\t\tconsole.log(`Applying quality setting: ${quality} to`, element)\n\n\t\t// Example integration with HLS.js:\n\t\t// if (element.hls) {\n\t\t// element.hls.currentLevel = this.getQualityLevel(quality);\n\t\t// }\n\t}\n\n\tprivate adjustQualityForNetwork(networkInfo: NetworkInfo) {\n\t\t// Auto-adjust quality for all active media elements\n\t\tconsole.log(\"Adjusting quality for network conditions:\", networkInfo.effectiveType)\n\t}\n\n\t// Clear preload cache to save memory\n\tclearPreloadCache() {\n\t\tthis.preloadCache.clear()\n\t}\n\n\t// Get loading metrics for a specific media URL\n\tgetLoadingMetrics(url: string): MediaLoadingMetrics | undefined {\n\t\treturn this.loadingMetrics.get(url)\n\t}\n\n\t// Get all loading metrics\n\tgetAllMetrics(): MediaLoadingMetrics[] {\n\t\treturn Array.from(this.loadingMetrics.values())\n\t}\n\n\t// Calculate average loading performance\n\tgetAverageLoadingTime(): number {\n\t\tconst metrics = this.getAllMetrics()\n\t\tconst completedLoads = metrics.filter((m) => m.totalLoadTime !== undefined)\n\n\t\tif (completedLoads.length === 0) return 0\n\n\t\tconst total = completedLoads.reduce((sum, m) => sum + (m.totalLoadTime || 0), 0)\n\t\treturn total / completedLoads.length\n\t}\n\n\t// Get network-specific performance stats\n\tgetNetworkPerformanceStats(): {\n\t\tnetworkType: string\n\t\tavgLoadTime: number\n\t\tavgStalls: number\n\t\tavgBufferHealth: number\n\t}[] {\n\t\tconst statsByNetwork = new Map<string, MediaLoadingMetrics[]>()\n\n\t\tthis.getAllMetrics().forEach((metrics) => {\n\t\t\tconst network = metrics.networkType\n\t\t\tif (!statsByNetwork.has(network)) {\n\t\t\t\tstatsByNetwork.set(network, [])\n\t\t\t}\n\t\t\tstatsByNetwork.get(network)!.push(metrics)\n\t\t})\n\n\t\treturn Array.from(statsByNetwork.entries()).map(([networkType, metrics]) => ({\n\t\t\tnetworkType,\n\t\t\tavgLoadTime: metrics.reduce((sum, m) => sum + (m.totalLoadTime || 0), 0) / metrics.length,\n\t\t\tavgStalls: metrics.reduce((sum, m) => sum + m.stallsCount, 0) / metrics.length,\n\t\t\tavgBufferHealth: metrics.reduce((sum, m) => sum + m.bufferHealth, 0) / metrics.length\n\t\t}))\n\t}\n}\n\n// Global media loading optimizer instance\nexport const mediaLoadingOptimizer = new MediaLoadingOptimizer()\n\n// React hook for media loading optimization\nexport function useMediaLoadingOptimizer(config?: Partial<MediaLoadingConfig>) {\n\tconst [optimizer] = React.useState(() =>\n\t\tconfig ? new MediaLoadingOptimizer(config) : mediaLoadingOptimizer\n\t)\n\n\tconst [networkInfo, setNetworkInfo] = React.useState<NetworkInfo | null>(null)\n\tconst [loadingMetrics, setLoadingMetrics] = React.useState<MediaLoadingMetrics[]>([])\n\n\tReact.useEffect(() => {\n\t\tconst unsubscribe = optimizer[\"networkMonitor\"].subscribe(setNetworkInfo)\n\t\tsetNetworkInfo(optimizer[\"networkMonitor\"].getCurrentNetworkInfo())\n\n\t\t// Update metrics periodically\n\t\tconst interval = setInterval(() => {\n\t\t\tsetLoadingMetrics(optimizer.getAllMetrics())\n\t\t}, 1000)\n\n\t\treturn () => {\n\t\t\tunsubscribe()\n\t\t\tclearInterval(interval)\n\t\t}\n\t}, [optimizer])\n\n\tconst optimizeLoading = React.useCallback(\n\t\t(mediaUrl: string, element: HTMLMediaElement, options?: any) => {\n\t\t\treturn optimizer.optimizeMediaLoading(mediaUrl, element, options)\n\t\t},\n\t\t[optimizer]\n\t)\n\n\treturn {\n\t\tnetworkInfo,\n\t\tloadingMetrics,\n\t\toptimizeLoading,\n\t\taverageLoadTime: optimizer.getAverageLoadingTime(),\n\t\tnetworkStats: optimizer.getNetworkPerformanceStats()\n\t}\n}\n","import React, { createContext, useContext, useMemo } from \"react\"\nimport { EventBus } from \"../events\"\nimport { ConsolePluginLogger, PluginRegistry } from \"../plugins\"\n\n// Service interfaces\nexport interface MediaService {\n\tloadMedia(src: string): Promise<void>\n\tplay(): Promise<void>\n\tpause(): Promise<void>\n\tseek(time: number): Promise<void>\n\tsetVolume(volume: number): Promise<void>\n}\n\nexport interface StorageService {\n\tget<T>(key: string): T | null\n\tset<T>(key: string, value: T): void\n\tremove(key: string): void\n\tclear(): void\n}\n\nexport interface AnalyticsService {\n\ttrack(event: string, data?: any): void\n\tidentify(userId: string, traits?: any): void\n\tpage(name: string, properties?: any): void\n}\n\nexport interface LoggerService {\n\tinfo(message: string, data?: any): void\n\twarn(message: string, data?: any): void\n\terror(message: string, data?: any): void\n\tdebug(message: string, data?: any): void\n}\n\n// Service implementations\nclass LocalStorageService implements StorageService {\n\tget<T>(key: string): T | null {\n\t\ttry {\n\t\t\tconst item = localStorage.getItem(`baroi-player-${key}`)\n\t\t\treturn item ? (JSON.parse(item) as T) : null\n\t\t} catch {\n\t\t\treturn null\n\t\t}\n\t}\n\n\tset<T>(key: string, value: T): void {\n\t\ttry {\n\t\t\tlocalStorage.setItem(`baroi-player-${key}`, JSON.stringify(value))\n\t\t} catch (error) {\n\t\t\tconsole.warn(\"Failed to store data:\", error)\n\t\t}\n\t}\n\n\tremove(key: string): void {\n\t\ttry {\n\t\t\tlocalStorage.removeItem(`baroi-player-${key}`)\n\t\t} catch (error) {\n\t\t\tconsole.warn(\"Failed to remove data:\", error)\n\t\t}\n\t}\n\n\tclear(): void {\n\t\ttry {\n\t\t\tObject.keys(localStorage).forEach((key) => {\n\t\t\t\tif (key.startsWith(\"baroi-player-\")) {\n\t\t\t\t\tlocalStorage.removeItem(key)\n\t\t\t\t}\n\t\t\t})\n\t\t} catch (error) {\n\t\t\tconsole.warn(\"Failed to clear data:\", error)\n\t\t}\n\t}\n}\n\nclass NoOpAnalyticsService implements AnalyticsService {\n\ttrack(event: string, data?: any): void {\n\t\tconsole.log(\"Analytics:\", event, data)\n\t}\n\n\tidentify(userId: string, traits?: any): void {\n\t\tconsole.log(\"Analytics identify:\", userId, traits)\n\t}\n\n\tpage(name: string, properties?: any): void {\n\t\tconsole.log(\"Analytics page:\", name, properties)\n\t}\n}\n\n// Service container\nexport interface ServiceContainer {\n\teventBus: EventBus\n\tpluginRegistry: PluginRegistry\n\tstorage: StorageService\n\tanalytics: AnalyticsService\n\tlogger: LoggerService\n}\n\n// Service provider context\nconst ServiceContext = createContext<ServiceContainer | null>(null)\n\n// Service provider props\nexport interface ServiceProviderProps {\n\tchildren: React.ReactNode\n\tservices?: Partial<ServiceContainer>\n}\n\n// Service provider component\nexport function ServiceProvider({ children, services = {} }: ServiceProviderProps) {\n\tconst container = useMemo<ServiceContainer>(() => {\n\t\tconst logger = services.logger || new ConsolePluginLogger(\"[BaroiPlayer]\")\n\t\tconst eventBus = services.eventBus || new EventBus()\n\t\tconst pluginRegistry = services.pluginRegistry || new PluginRegistry(logger)\n\t\tconst storage = services.storage || new LocalStorageService()\n\t\tconst analytics = services.analytics || new NoOpAnalyticsService()\n\n\t\treturn {\n\t\t\teventBus,\n\t\t\tpluginRegistry,\n\t\t\tstorage,\n\t\t\tanalytics,\n\t\t\tlogger\n\t\t}\n\t}, [services])\n\n\treturn <ServiceContext.Provider value={container}>{children}</ServiceContext.Provider>\n}\n\n// Service hooks\nexport function useServices(): ServiceContainer {\n\tconst context = useContext(ServiceContext)\n\tif (!context) {\n\t\tthrow new Error(\"useServices must be used within ServiceProvider\")\n\t}\n\treturn context\n}\n\nexport function useServiceEventBus(): EventBus {\n\treturn useServices().eventBus\n}\n\nexport function usePluginRegistry(): PluginRegistry {\n\treturn useServices().pluginRegistry\n}\n\nexport function useStorage(): StorageService {\n\treturn useServices().storage\n}\n\nexport function useAnalytics(): AnalyticsService {\n\treturn useServices().analytics\n}\n\nexport function useLogger(): LoggerService {\n\treturn useServices().logger\n}\n\n// Service decorators for dependency injection\nexport function withServices<P extends object>(\n\tComponent: React.ComponentType<P & { services: ServiceContainer }>\n): React.ComponentType<P> {\n\treturn function WithServicesComponent(props: P) {\n\t\tconst services = useServices()\n\t\treturn <Component {...props} services={services} />\n\t}\n}\n","import React from \"react\"\nimport { EventBus } from \"./events\"\nimport { PluginRegistry } from \"./plugins\"\nimport { type ServiceContainer, ServiceProvider } from \"./providers/service-provider\"\n\n// Architecture configuration\nexport interface ArchitectureConfig {\n\tplugins?: string[]\n\tservices?: Partial<ServiceContainer>\n\teventMiddleware?: any[]\n\tdebug?: boolean\n}\n\n// Create architecture wrapper component\nexport function createArchitecture(config: ArchitectureConfig = {}) {\n\treturn function ArchitectureProvider({ children }: { children: React.ReactNode }) {\n\t\treturn <ServiceProvider services={config.services}>{children}</ServiceProvider>\n\t}\n}\n\n// Architecture health check\nexport async function healthCheck(services: ServiceContainer) {\n\tconst results = {\n\t\teventBus: {\n\t\t\thealthy: true,\n\t\t\tlistenerCount: services.eventBus.getListenerCount(),\n\t\t\teventTypes: services.eventBus.getEventTypes().length\n\t\t},\n\t\tplugins: await services.pluginRegistry.healthCheck(),\n\t\ttimestamp: Date.now()\n\t}\n\n\treturn results\n}\n","import React, { lazy, Suspense } from \"react\"\n\n// Feature flags for progressive loading\nexport const FEATURES = {\n\tSUBTITLES: \"subtitles\",\n\tPLAYLISTS: \"playlists\",\n\tADVANCED_CONTROLS: \"advanced_controls\",\n\tANALYTICS: \"analytics\",\n\tPICTURE_IN_PICTURE: \"picture_in_picture\",\n\tQUALITY_SELECTOR: \"quality_selector\",\n\tPLAYBACK_SPEED: \"playback_speed\",\n\tCHAPTERS: \"chapters\",\n\tTHUMBNAILS: \"thumbnails\",\n\tKEYBOARD_SHORTCUTS: \"keyboard_shortcuts\"\n} as const\n\nexport type FeatureType = (typeof FEATURES)[keyof typeof FEATURES]\n\n// Progressive loading configuration\nexport interface ProgressiveLoadingConfig {\n\tenabledFeatures: FeatureType[]\n\tloadingStrategy: \"lazy\" | \"preload\" | \"immediate\"\n\tfallbackTimeout: number\n\tretryAttempts: number\n}\n\nexport const defaultProgressiveConfig: ProgressiveLoadingConfig = {\n\tenabledFeatures: [FEATURES.SUBTITLES, FEATURES.ADVANCED_CONTROLS, FEATURES.KEYBOARD_SHORTCUTS],\n\tloadingStrategy: \"lazy\",\n\tfallbackTimeout: 5000,\n\tretryAttempts: 3\n}\n\n// Dynamic imports with error handling and retry logic\nexport const lazyComponents = {\n\t// Subtitle system\n\tSubtitleSelector: lazy(() =>\n\t\timport(\"../components/enhanced/advanced-features\").then((module) => ({\n\t\t\tdefault: module.SubtitleSelector\n\t\t}))\n\t),\n\n\t// Playlist functionality\n\tPlaylistManager: lazy(\n\t\t() =>\n\t\t\timport(\"../components/enhanced/advanced-features\").then((module) => ({\n\t\t\t\tdefault: module.SubtitleSelector\n\t\t\t})) // Use existing component as placeholder\n\t),\n\n\t// Advanced controls\n\tQualitySelector: lazy(() =>\n\t\timport(\"../components/enhanced/advanced-features\").then((module) => ({\n\t\t\tdefault: module.QualitySelector\n\t\t}))\n\t),\n\n\tPlaybackSpeedSelector: lazy(() =>\n\t\timport(\"../components/enhanced/advanced-features\").then((module) => ({\n\t\t\tdefault: module.PlaybackSpeedSelector\n\t\t}))\n\t),\n\n\tChaptersPanel: lazy(() =>\n\t\timport(\"../components/enhanced/advanced-features\").then((module) => ({\n\t\t\tdefault: module.ChaptersPanel\n\t\t}))\n\t),\n\n\tPictureInPictureButton: lazy(() =>\n\t\timport(\"../components/enhanced/advanced-features\").then((module) => ({\n\t\t\tdefault: module.PictureInPictureButton\n\t\t}))\n\t),\n\n\t// Analytics\n\tAnalyticsTracker: lazy(\n\t\t() =>\n\t\t\timport(\"../components/enhanced/advanced-features\").then((module) => ({\n\t\t\t\tdefault: module.SubtitleSelector\n\t\t\t})) // Use existing component as placeholder\n\t)\n}\n\n// Feature detection utilities\nexport class FeatureDetector {\n\tprivate static cache = new Map<FeatureType, boolean>()\n\n\tstatic async isSupported(feature: FeatureType): Promise<boolean> {\n\t\tif (this.cache.has(feature)) {\n\t\t\treturn this.cache.get(feature)!\n\t\t}\n\n\t\tconst supported = await this.checkFeatureSupport(feature)\n\t\tthis.cache.set(feature, supported)\n\t\treturn supported\n\t}\n\n\tprivate static async checkFeatureSupport(feature: FeatureType): Promise<boolean> {\n\t\tif (typeof window === \"undefined\" || typeof document === \"undefined\") {\n\t\t\t// Server-side rendering - assume basic support\n\t\t\treturn true\n\t\t}\n\n\t\tswitch (feature) {\n\t\t\tcase FEATURES.SUBTITLES:\n\t\t\t\treturn \"TextTrack\" in window\n\n\t\t\tcase FEATURES.PICTURE_IN_PICTURE:\n\t\t\t\treturn \"pictureInPictureEnabled\" in document\n\n\t\t\tcase FEATURES.ADVANCED_CONTROLS:\n\t\t\t\treturn true // Always supported\n\n\t\t\tcase FEATURES.PLAYLISTS:\n\t\t\t\treturn \"MediaSession\" in window\n\n\t\t\tcase FEATURES.ANALYTICS:\n\t\t\t\treturn \"IntersectionObserver\" in window\n\n\t\t\tcase FEATURES.QUALITY_SELECTOR:\n\t\t\t\treturn \"MediaSource\" in window\n\n\t\t\tcase FEATURES.PLAYBACK_SPEED:\n\t\t\t\treturn true // HTML5 video supports this\n\n\t\t\tcase FEATURES.CHAPTERS:\n\t\t\t\treturn \"TextTrack\" in window\n\n\t\t\tcase FEATURES.THUMBNAILS:\n\t\t\t\treturn \"OffscreenCanvas\" in window || \"canvas\" in document.createElement(\"canvas\")\n\n\t\t\tcase FEATURES.KEYBOARD_SHORTCUTS:\n\t\t\t\treturn \"KeyboardEvent\" in window\n\n\t\t\tdefault:\n\t\t\t\treturn false\n\t\t}\n\t}\n}\n\n// Progressive loading manager\nexport class ProgressiveLoader {\n\tprivate config: ProgressiveLoadingConfig\n\tprivate loadedFeatures = new Set<FeatureType>()\n\tprivate loadingPromises = new Map<FeatureType, Promise<any>>()\n\n\tconstructor(config: Partial<ProgressiveLoadingConfig> = {}) {\n\t\tthis.config = { ...defaultProgressiveConfig, ...config }\n\t}\n\n\tasync loadFeature<T = any>(feature: FeatureType): Promise<T | null> {\n\t\t// Check if feature is enabled\n\t\tif (!this.config.enabledFeatures.includes(feature)) {\n\t\t\treturn null\n\t\t}\n\n\t\t// Check if already loaded\n\t\tif (this.loadedFeatures.has(feature)) {\n\t\t\treturn this.getLoadedFeature(feature)\n\t\t}\n\n\t\t// Check if currently loading\n\t\tif (this.loadingPromises.has(feature)) {\n\t\t\treturn this.loadingPromises.get(feature)\n\t\t}\n\n\t\t// Check browser support\n\t\tconst isSupported = await FeatureDetector.isSupported(feature)\n\t\tif (!isSupported) {\n\t\t\tconsole.warn(`Feature ${feature} is not supported in this browser`)\n\t\t\treturn null\n\t\t}\n\n\t\t// Start loading with retry logic\n\t\tconst loadingPromise = this.loadWithRetry(feature)\n\t\tthis.loadingPromises.set(feature, loadingPromise)\n\n\t\ttry {\n\t\t\tconst result = await loadingPromise\n\t\t\tthis.loadedFeatures.add(feature)\n\t\t\treturn result as T\n\t\t} catch (error) {\n\t\t\tconsole.error(`Failed to load feature ${feature}:`, error)\n\t\t\tthis.loadingPromises.delete(feature)\n\t\t\treturn null\n\t\t}\n\t}\n\n\tprivate async loadWithRetry<T>(feature: FeatureType, attempt = 1): Promise<T> {\n\t\ttry {\n\t\t\tconst result = await this.loadFeatureModule(feature)\n\t\t\treturn result as T\n\t\t} catch (error) {\n\t\t\tif (attempt < this.config.retryAttempts) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t`Loading feature ${feature} failed, retrying (${attempt}/${this.config.retryAttempts})`\n\t\t\t\t)\n\t\t\t\tawait new Promise((resolve) => setTimeout(resolve, 1000 * attempt))\n\t\t\t\treturn this.loadWithRetry(feature, attempt + 1)\n\t\t\t}\n\t\t\tthrow error\n\t\t}\n\t}\n\n\tprivate async loadFeatureModule(feature: FeatureType) {\n\t\tswitch (feature) {\n\t\t\tcase FEATURES.SUBTITLES:\n\t\t\t\treturn import(\"../hooks/useEnhancedSubtitles\")\n\n\t\t\tcase FEATURES.PLAYLISTS:\n\t\t\t\treturn import(\"../components/enhanced/advanced-features\") // Use existing features\n\n\t\t\tcase FEATURES.ADVANCED_CONTROLS:\n\t\t\t\treturn import(\"../components/enhanced/advanced-features\")\n\n\t\t\tcase FEATURES.ANALYTICS:\n\t\t\t\treturn import(\"../components/enhanced/advanced-features\") // Use existing features\n\n\t\t\tcase FEATURES.PICTURE_IN_PICTURE:\n\t\t\t\treturn import(\"../components/enhanced/advanced-features\") // Use existing features\n\n\t\t\tcase FEATURES.QUALITY_SELECTOR:\n\t\t\t\treturn import(\"../components/enhanced/advanced-features\") // Use existing features\n\n\t\t\tcase FEATURES.PLAYBACK_SPEED:\n\t\t\t\treturn import(\"../components/enhanced/advanced-features\") // Use existing features\n\n\t\t\tcase FEATURES.CHAPTERS:\n\t\t\t\treturn import(\"../components/enhanced/advanced-features\") // Use existing features\n\n\t\t\tcase FEATURES.THUMBNAILS:\n\t\t\t\treturn import(\"../components/enhanced/advanced-features\") // Use existing features\n\n\t\t\tcase FEATURES.KEYBOARD_SHORTCUTS:\n\t\t\t\treturn import(\"../hooks/use-keyboard-controls\")\n\n\t\t\tdefault:\n\t\t\t\tthrow new Error(`Unknown feature: ${feature}`)\n\t\t}\n\t}\n\n\tprivate getLoadedFeature(feature: FeatureType) {\n\t\t// Return cached feature instance\n\t\treturn this.loadingPromises.get(feature)\n\t}\n\n\t// Preload features for faster access\n\tasync preloadFeatures(features: FeatureType[] = this.config.enabledFeatures) {\n\t\tconst preloadPromises = features.map((feature) => this.loadFeature(feature))\n\t\tawait Promise.allSettled(preloadPromises)\n\t}\n\n\t// Get loading state\n\tgetLoadingState() {\n\t\treturn {\n\t\t\tloaded: Array.from(this.loadedFeatures),\n\t\t\tloading: Array.from(this.loadingPromises.keys()),\n\t\t\tenabled: this.config.enabledFeatures\n\t\t}\n\t}\n}\n\n// Global progressive loader instance\nexport const progressiveLoader = new ProgressiveLoader()\n\n// React hook for progressive loading\nexport function useProgressiveFeature<T = any>(\n\tfeature: FeatureType\n): {\n\tfeature: T | null\n\tloading: boolean\n\terror: Error | null\n\tload: () => Promise<void>\n} {\n\tconst [featureModule, setFeatureModule] = React.useState<T | null>(null)\n\tconst [loading, setLoading] = React.useState(false)\n\tconst [error, setError] = React.useState<Error | null>(null)\n\n\tconst load = React.useCallback(async () => {\n\t\tif (loading || featureModule) return\n\n\t\tsetLoading(true)\n\t\tsetError(null)\n\n\t\ttry {\n\t\t\tconst module = await progressiveLoader.loadFeature<T>(feature)\n\t\t\tsetFeatureModule(module)\n\t\t} catch (err) {\n\t\t\tsetError(err as Error)\n\t\t} finally {\n\t\t\tsetLoading(false)\n\t\t}\n\t}, [feature, loading, featureModule])\n\n\t// Auto-load if strategy is immediate\n\tReact.useEffect(() => {\n\t\tif (progressiveLoader[\"config\"].loadingStrategy === \"immediate\") {\n\t\t\tload()\n\t\t}\n\t}, [load])\n\n\treturn {\n\t\tfeature: featureModule,\n\t\tloading,\n\t\terror,\n\t\tload\n\t}\n}\n\n// HOC for progressive feature loading\nexport function withProgressiveFeature<P extends object>(\n\tWrappedComponent: React.ComponentType<P>,\n\tfeature: FeatureType,\n\tfallback?: React.ComponentType<P>\n) {\n\treturn function ProgressiveFeatureWrapper(props: P) {\n\t\tconst { feature: featureModule, loading, error } = useProgressiveFeature(feature)\n\n\t\tif (loading) {\n\t\t\treturn <div className=\"h-8 animate-pulse rounded bg-gray-200\" />\n\t\t}\n\n\t\tif (error || !featureModule) {\n\t\t\tconst Fallback = fallback\n\t\t\treturn Fallback ? <Fallback {...props} /> : null\n\t\t}\n\n\t\treturn <WrappedComponent {...props} />\n\t}\n}\n","// Core architecture exports\n\n// Plugin system\nexport * from \"./plugins\"\n\n// Event system\nexport * from \"./events\"\n\n// Service providers\nexport * from \"./providers/service-provider\"\n\n// Version\nexport const CORE_ARCHITECTURE_VERSION = \"1.0.0\"\n\n// Architecture utilities\nexport { createArchitecture } from \"./utils\"\n\n// Progressive loading system\nexport * from \"./progressive-loading\"\n\n// Performance monitoring and testing\nexport * from \"./performance\"\n"],"names":["PerformanceBenchmark","__publicField","PerformanceRegressionDetector","config","testFunction","renderTimes","memoryBefore","memoryAfter","error","i","startTime","endTime","err","averageRenderTime","sum","time","minRenderTime","maxRenderTime","memoryUsage","passed","result","componentName","renderFunction","expectedRenderTime","bundlePath","expectedLoadTime","response","iterations","memoryIncrease","hasMemoryLeak","interactionFunction","expectedDelay","currentMetrics","baselineMetrics","regressions","totalTests","passedTests","failedTests","passRate","summary","report","index","performanceBenchmark","performanceTestUtils","Component","props","hookFunction","hookName","expectedExecutionTime","operation","operationName","expectedTime","beforeFunction","afterFunction","featureName","beforeMemory","beforeTime","midMemory","midTime","afterMemory","afterTime","PerformanceTestFramework","suiteName","tests","testImplementations","results","test","implementation","implementations","allResults","suiteImplementations","performanceTestFramework","defaultPerformanceBudgets","PerformanceBudgetMonitor","budgets","alertConfig","budget","metricName","value","category","violations","name","violation","distPath","metrics","allViolations","now","v","message","channel","actualValue","overageAmount","overagePercentage","unit","bytes","updates","existing","since","byCategory","bySeverity","severity","performanceBudgetMonitor","defaultMediaLoadingConfig","NetworkMonitor","isOnline","newInfo","listener","blob","timeInSeconds","MediaLoadingOptimizer","networkInfo","mediaUrl","element","options","loadingStrategy","effectiveType","threshold","maxBitrate","availableBandwidth","url","maxSize","preloadPromise","reader","chunks","bytesRead","done","stallStartTime","updateMetrics","bufferedEnd","currentTime","onLoadStart","onCanPlay","onWaiting","onPlaying","onProgress","bufferedBytes","quality","completedLoads","m","statsByNetwork","network","networkType","mediaLoadingOptimizer","useMediaLoadingOptimizer","optimizer","React","setNetworkInfo","loadingMetrics","setLoadingMetrics","unsubscribe","interval","optimizeLoading","LocalStorageService","key","item","NoOpAnalyticsService","event","data","userId","traits","properties","ServiceContext","createContext","ServiceProvider","children","services","container","useMemo","logger","ConsolePluginLogger","eventBus","EventBus","pluginRegistry","PluginRegistry","storage","analytics","useServices","context","useContext","useServiceEventBus","usePluginRegistry","useStorage","useAnalytics","useLogger","withServices","jsx","createArchitecture","FEATURES","defaultProgressiveConfig","lazyComponents","lazy","n","module","FeatureDetector","feature","supported","ProgressiveLoader","loadingPromise","attempt","resolve","features","preloadPromises","progressiveLoader","useProgressiveFeature","featureModule","setFeatureModule","loading","setLoading","setError","load","withProgressiveFeature","WrappedComponent","fallback","Fallback","CORE_ARCHITECTURE_VERSION"],"mappings":"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"}