@therealtinhtute/baroiplayer 1.0.8 → 1.2.0

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