@therealtinhtute/baroiplayer 1.0.6 → 1.0.7

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 (595) hide show
  1. package/dist/index.d.ts +1 -1
  2. package/dist/package.json +1 -1
  3. package/package.json +1 -1
  4. package/dist/context/media.js +0 -2
  5. package/dist/context/media.js.map +0 -1
  6. package/dist/context/media.mjs +0 -15
  7. package/dist/context/media.mjs.map +0 -1
  8. package/dist/context/store.js +0 -2
  9. package/dist/context/store.js.map +0 -1
  10. package/dist/context/store.mjs +0 -5
  11. package/dist/context/store.mjs.map +0 -1
  12. package/dist/context-Af84FynT.js +0 -1179
  13. package/dist/context-Af84FynT.js.map +0 -1
  14. package/dist/context-CwZnPdz0.cjs +0 -23
  15. package/dist/context-CwZnPdz0.cjs.map +0 -1
  16. package/dist/core-events-B5W_j8yU.js +0 -480
  17. package/dist/core-events-B5W_j8yU.js.map +0 -1
  18. package/dist/core-events-CN0-Vhhq.cjs +0 -2
  19. package/dist/core-events-CN0-Vhhq.cjs.map +0 -1
  20. package/dist/core-plugins-Bq9KLany.js +0 -696
  21. package/dist/core-plugins-Bq9KLany.js.map +0 -1
  22. package/dist/core-plugins-CPDSHMiQ.cjs +0 -2
  23. package/dist/core-plugins-CPDSHMiQ.cjs.map +0 -1
  24. package/dist/core.js +0 -37
  25. package/dist/core.js.map +0 -1
  26. package/dist/core.mjs +0 -1217
  27. package/dist/core.mjs.map +0 -1
  28. package/dist/enhanced-components-CXnYiOt6.cjs +0 -2
  29. package/dist/enhanced-components-CXnYiOt6.cjs.map +0 -1
  30. package/dist/enhanced-components-Da0TSvKe.js +0 -1073
  31. package/dist/enhanced-components-Da0TSvKe.js.map +0 -1
  32. package/dist/hooks-BCMilGRf.cjs +0 -4
  33. package/dist/hooks-BCMilGRf.cjs.map +0 -1
  34. package/dist/hooks-BPtHV1ZT.js +0 -2042
  35. package/dist/hooks-BPtHV1ZT.js.map +0 -1
  36. package/dist/index.js.map +0 -1
  37. package/dist/index.mjs.map +0 -1
  38. package/dist/minimal-components-BHJMuaL7.cjs +0 -2
  39. package/dist/minimal-components-BHJMuaL7.cjs.map +0 -1
  40. package/dist/minimal-components-BmqRefl1.js +0 -2002
  41. package/dist/minimal-components-BmqRefl1.js.map +0 -1
  42. package/dist/mona-loading.gif +0 -0
  43. package/dist/performance-monitor--rzKTlbj.js +0 -302
  44. package/dist/performance-monitor--rzKTlbj.js.map +0 -1
  45. package/dist/performance-monitor-cjIvZE2D.cjs +0 -2
  46. package/dist/performance-monitor-cjIvZE2D.cjs.map +0 -1
  47. package/dist/src/adapters/videojs-adapter.d.ts.map +0 -1
  48. package/dist/src/adapters/videojs-adapter.js +0 -350
  49. package/dist/src/assets/mona-loading.gif +0 -0
  50. package/dist/src/components/AnimateLoading.d.ts.map +0 -1
  51. package/dist/src/components/AnimateLoading.js +0 -41
  52. package/dist/src/components/LoadingState.d.ts.map +0 -1
  53. package/dist/src/components/LoadingState.js +0 -111
  54. package/dist/src/components/accessibility/keyboard-help-overlay.d.ts.map +0 -1
  55. package/dist/src/components/accessibility/keyboard-help-overlay.js +0 -90
  56. package/dist/src/components/audio-player.d.ts.map +0 -1
  57. package/dist/src/components/audio-player.js +0 -31
  58. package/dist/src/components/basic/index.d.ts.map +0 -1
  59. package/dist/src/components/basic/index.js +0 -29
  60. package/dist/src/components/enhanced/advanced-features.d.ts.map +0 -1
  61. package/dist/src/components/enhanced/advanced-features.js +0 -64
  62. package/dist/src/components/enhanced/debug-panel.d.ts.map +0 -1
  63. package/dist/src/components/enhanced/debug-panel.js +0 -94
  64. package/dist/src/components/enhanced/enhanced-controls.d.ts.map +0 -1
  65. package/dist/src/components/enhanced/enhanced-controls.js +0 -233
  66. package/dist/src/components/enhanced/enhanced-media-player.d.ts.map +0 -1
  67. package/dist/src/components/enhanced/enhanced-media-player.js +0 -316
  68. package/dist/src/components/enhanced/error-handling.d.ts.map +0 -1
  69. package/dist/src/components/enhanced/error-handling.js +0 -153
  70. package/dist/src/components/enhanced/index.d.ts.map +0 -1
  71. package/dist/src/components/enhanced/index.js +0 -10
  72. package/dist/src/components/enhanced/media-player-enhanced.d.ts.map +0 -1
  73. package/dist/src/components/enhanced/media-player-enhanced.js +0 -250
  74. package/dist/src/components/examples/basic-video-player.d.ts.map +0 -1
  75. package/dist/src/components/examples/basic-video-player.js +0 -16
  76. package/dist/src/components/examples/custom-controls-example.d.ts.map +0 -1
  77. package/dist/src/components/examples/custom-controls-example.js +0 -12
  78. package/dist/src/components/examples/enhanced-controls-example.d.ts.map +0 -1
  79. package/dist/src/components/examples/enhanced-controls-example.js +0 -18
  80. package/dist/src/components/examples/enhanced-media-player-example.d.ts.map +0 -1
  81. package/dist/src/components/examples/enhanced-media-player-example.js +0 -13
  82. package/dist/src/components/examples/loading-states-demo.d.ts.map +0 -1
  83. package/dist/src/components/examples/loading-states-demo.js +0 -41
  84. package/dist/src/components/examples/react-19-demo.d.ts.map +0 -1
  85. package/dist/src/components/examples/react-19-demo.js +0 -104
  86. package/dist/src/components/examples/volume-orientation-demo.d.ts.map +0 -1
  87. package/dist/src/components/examples/volume-orientation-demo.js +0 -31
  88. package/dist/src/components/icon-demo.d.ts.map +0 -1
  89. package/dist/src/components/icon-demo.js +0 -16
  90. package/dist/src/components/icons/index.d.ts.map +0 -1
  91. package/dist/src/components/icons/index.js +0 -59
  92. package/dist/src/components/icons/svg-icons/ArrowLeftIcon.d.ts.map +0 -1
  93. package/dist/src/components/icons/svg-icons/ArrowLeftIcon.js +0 -3
  94. package/dist/src/components/icons/svg-icons/ArrowRightIcon.d.ts.map +0 -1
  95. package/dist/src/components/icons/svg-icons/ArrowRightIcon.js +0 -3
  96. package/dist/src/components/icons/svg-icons/AudioIcon.d.ts.map +0 -1
  97. package/dist/src/components/icons/svg-icons/AudioIcon.js +0 -4
  98. package/dist/src/components/icons/svg-icons/BackwardIcon.d.ts.map +0 -1
  99. package/dist/src/components/icons/svg-icons/BackwardIcon.js +0 -3
  100. package/dist/src/components/icons/svg-icons/CameraIcon.d.ts.map +0 -1
  101. package/dist/src/components/icons/svg-icons/CameraIcon.js +0 -4
  102. package/dist/src/components/icons/svg-icons/CheckIcon.d.ts.map +0 -1
  103. package/dist/src/components/icons/svg-icons/CheckIcon.js +0 -4
  104. package/dist/src/components/icons/svg-icons/EnablePiPIcon.d.ts.map +0 -1
  105. package/dist/src/components/icons/svg-icons/EnablePiPIcon.js +0 -5
  106. package/dist/src/components/icons/svg-icons/ForwardIcon.d.ts.map +0 -1
  107. package/dist/src/components/icons/svg-icons/ForwardIcon.js +0 -3
  108. package/dist/src/components/icons/svg-icons/FullscreenEnterIcon.d.ts.map +0 -1
  109. package/dist/src/components/icons/svg-icons/FullscreenEnterIcon.js +0 -3
  110. package/dist/src/components/icons/svg-icons/FullscreenExitIcon.d.ts.map +0 -1
  111. package/dist/src/components/icons/svg-icons/FullscreenExitIcon.js +0 -3
  112. package/dist/src/components/icons/svg-icons/LoadingIcon.d.ts.map +0 -1
  113. package/dist/src/components/icons/svg-icons/LoadingIcon.js +0 -3
  114. package/dist/src/components/icons/svg-icons/PauseIcon.d.ts.map +0 -1
  115. package/dist/src/components/icons/svg-icons/PauseIcon.js +0 -3
  116. package/dist/src/components/icons/svg-icons/PlayIcon.d.ts.map +0 -1
  117. package/dist/src/components/icons/svg-icons/PlayIcon.js +0 -3
  118. package/dist/src/components/icons/svg-icons/PlaybackSpeedIcon.d.ts.map +0 -1
  119. package/dist/src/components/icons/svg-icons/PlaybackSpeedIcon.js +0 -3
  120. package/dist/src/components/icons/svg-icons/QualityIcon.d.ts.map +0 -1
  121. package/dist/src/components/icons/svg-icons/QualityIcon.js +0 -3
  122. package/dist/src/components/icons/svg-icons/SettingsIcon.d.ts.map +0 -1
  123. package/dist/src/components/icons/svg-icons/SettingsIcon.js +0 -3
  124. package/dist/src/components/icons/svg-icons/SliderIcon.d.ts.map +0 -1
  125. package/dist/src/components/icons/svg-icons/SliderIcon.js +0 -3
  126. package/dist/src/components/icons/svg-icons/SubtitleIcon.d.ts.map +0 -1
  127. package/dist/src/components/icons/svg-icons/SubtitleIcon.js +0 -3
  128. package/dist/src/components/icons/svg-icons/SubtitleOffIcon.d.ts.map +0 -1
  129. package/dist/src/components/icons/svg-icons/SubtitleOffIcon.js +0 -3
  130. package/dist/src/components/icons/svg-icons/UnPiPIcon.d.ts.map +0 -1
  131. package/dist/src/components/icons/svg-icons/UnPiPIcon.js +0 -5
  132. package/dist/src/components/icons/svg-icons/VolumeMutedIcon.d.ts.map +0 -1
  133. package/dist/src/components/icons/svg-icons/VolumeMutedIcon.js +0 -3
  134. package/dist/src/components/icons/svg-icons/VolumeOneIcon.d.ts.map +0 -1
  135. package/dist/src/components/icons/svg-icons/VolumeOneIcon.js +0 -3
  136. package/dist/src/components/icons/svg-icons/VolumeThreeIcon.d.ts.map +0 -1
  137. package/dist/src/components/icons/svg-icons/VolumeThreeIcon.js +0 -3
  138. package/dist/src/components/icons/svg-icons/VolumeTwoIcon.d.ts.map +0 -1
  139. package/dist/src/components/icons/svg-icons/VolumeTwoIcon.js +0 -3
  140. package/dist/src/components/legacy.d.ts.map +0 -1
  141. package/dist/src/components/legacy.js +0 -52
  142. package/dist/src/components/media-metadata-display.d.ts.map +0 -1
  143. package/dist/src/components/media-metadata-display.js +0 -20
  144. package/dist/src/components/media-player-audio.d.ts.map +0 -1
  145. package/dist/src/components/media-player-audio.js +0 -18
  146. package/dist/src/components/media-player-controls.d.ts.map +0 -1
  147. package/dist/src/components/media-player-controls.js +0 -150
  148. package/dist/src/components/media-player-error.d.ts.map +0 -1
  149. package/dist/src/components/media-player-error.js +0 -85
  150. package/dist/src/components/media-player-fullscreen.d.ts.map +0 -1
  151. package/dist/src/components/media-player-fullscreen.js +0 -68
  152. package/dist/src/components/media-player-hls.d.ts.map +0 -1
  153. package/dist/src/components/media-player-hls.js +0 -20
  154. package/dist/src/components/media-player-loading.d.ts.map +0 -1
  155. package/dist/src/components/media-player-loading.js +0 -53
  156. package/dist/src/components/media-player-play.d.ts.map +0 -1
  157. package/dist/src/components/media-player-play.js +0 -44
  158. package/dist/src/components/media-player-root.d.ts.map +0 -1
  159. package/dist/src/components/media-player-root.js +0 -243
  160. package/dist/src/components/media-player-seek.d.ts.map +0 -1
  161. package/dist/src/components/media-player-seek.js +0 -92
  162. package/dist/src/components/media-player-time.d.ts.map +0 -1
  163. package/dist/src/components/media-player-time.js +0 -57
  164. package/dist/src/components/media-player-tooltip.d.ts.map +0 -1
  165. package/dist/src/components/media-player-tooltip.js +0 -14
  166. package/dist/src/components/media-player-video.d.ts.map +0 -1
  167. package/dist/src/components/media-player-video.js +0 -18
  168. package/dist/src/components/media-player-volume.d.ts.map +0 -1
  169. package/dist/src/components/media-player-volume.js +0 -88
  170. package/dist/src/components/media-player.d.ts.map +0 -1
  171. package/dist/src/components/media-player.js +0 -67
  172. package/dist/src/components/media-suspense.d.ts.map +0 -1
  173. package/dist/src/components/media-suspense.js +0 -173
  174. package/dist/src/components/player-settings-form.d.ts.map +0 -1
  175. package/dist/src/components/player-settings-form.js +0 -46
  176. package/dist/src/components/react-player-wrapper.d.ts.map +0 -1
  177. package/dist/src/components/react-player-wrapper.js +0 -163
  178. package/dist/src/components/simple-video-player.d.ts.map +0 -1
  179. package/dist/src/components/simple-video-player.js +0 -41
  180. package/dist/src/components/ui/enhanced-seek-bar.d.ts.map +0 -1
  181. package/dist/src/components/ui/enhanced-seek-bar.js +0 -112
  182. package/dist/src/components/ui/fullscreen-button.d.ts.map +0 -1
  183. package/dist/src/components/ui/fullscreen-button.js +0 -21
  184. package/dist/src/components/ui/media-resource-preloader.d.ts.map +0 -1
  185. package/dist/src/components/ui/media-resource-preloader.js +0 -295
  186. package/dist/src/components/ui/play-button.d.ts.map +0 -1
  187. package/dist/src/components/ui/play-button.js +0 -26
  188. package/dist/src/components/ui/seek-bar.d.ts.map +0 -1
  189. package/dist/src/components/ui/seek-bar.js +0 -54
  190. package/dist/src/components/ui/time-display.d.ts.map +0 -1
  191. package/dist/src/components/ui/time-display.js +0 -18
  192. package/dist/src/components/ui/volume-control.d.ts.map +0 -1
  193. package/dist/src/components/ui/volume-control.js +0 -71
  194. package/dist/src/components/unified/base-media-player.d.ts.map +0 -1
  195. package/dist/src/components/unified/base-media-player.js +0 -104
  196. package/dist/src/components/unified/media-player.d.ts.map +0 -1
  197. package/dist/src/components/unified/media-player.js +0 -41
  198. package/dist/src/components/variants/minimal/AccessibleMinimalPlayer.d.ts.map +0 -1
  199. package/dist/src/components/variants/minimal/AccessibleMinimalPlayer.js +0 -322
  200. package/dist/src/components/variants/minimal/EnhancedMinimalMediaPlayer.d.ts.map +0 -1
  201. package/dist/src/components/variants/minimal/EnhancedMinimalMediaPlayer.js +0 -280
  202. package/dist/src/components/variants/minimal/MinimalControls.d.ts.map +0 -1
  203. package/dist/src/components/variants/minimal/MinimalControls.js +0 -19
  204. package/dist/src/components/variants/minimal/MinimalLoading.d.ts.map +0 -1
  205. package/dist/src/components/variants/minimal/MinimalLoading.js +0 -6
  206. package/dist/src/components/variants/minimal/MinimalMediaPlayer.d.ts.map +0 -1
  207. package/dist/src/components/variants/minimal/MinimalMediaPlayer.js +0 -135
  208. package/dist/src/components/variants/minimal/MinimalOverlay.d.ts.map +0 -1
  209. package/dist/src/components/variants/minimal/MinimalOverlay.js +0 -15
  210. package/dist/src/components/variants/minimal/MinimalPlayButton.d.ts.map +0 -1
  211. package/dist/src/components/variants/minimal/MinimalPlayButton.js +0 -29
  212. package/dist/src/components/variants/minimal/MinimalSeekBar.d.ts.map +0 -1
  213. package/dist/src/components/variants/minimal/MinimalSeekBar.js +0 -73
  214. package/dist/src/components/variants/minimal/MinimalVolumeControl.d.ts.map +0 -1
  215. package/dist/src/components/variants/minimal/MinimalVolumeControl.js +0 -29
  216. package/dist/src/components/variants/minimal/SimpleMinimalPlayer.d.ts.map +0 -1
  217. package/dist/src/components/variants/minimal/SimpleMinimalPlayer.js +0 -51
  218. package/dist/src/components/variants/minimal/components/CenterPlayButton.d.ts.map +0 -1
  219. package/dist/src/components/variants/minimal/components/CenterPlayButton.js +0 -8
  220. package/dist/src/components/variants/minimal/components/ControlBar.d.ts.map +0 -1
  221. package/dist/src/components/variants/minimal/components/ControlBar.js +0 -10
  222. package/dist/src/components/variants/minimal/components/EnhancedSettingsMenu.d.ts.map +0 -1
  223. package/dist/src/components/variants/minimal/components/EnhancedSettingsMenu.js +0 -68
  224. package/dist/src/components/variants/minimal/components/PlaybackControls.d.ts.map +0 -1
  225. package/dist/src/components/variants/minimal/components/PlaybackControls.js +0 -9
  226. package/dist/src/components/variants/minimal/components/RightControls.d.ts.map +0 -1
  227. package/dist/src/components/variants/minimal/components/RightControls.js +0 -40
  228. package/dist/src/components/variants/minimal/components/SeekBar.d.ts.map +0 -1
  229. package/dist/src/components/variants/minimal/components/SeekBar.js +0 -43
  230. package/dist/src/components/variants/minimal/components/SettingsDropdown.d.ts.map +0 -1
  231. package/dist/src/components/variants/minimal/components/SettingsDropdown.js +0 -18
  232. package/dist/src/components/variants/minimal/components/SubtitleDisplay.d.ts.map +0 -1
  233. package/dist/src/components/variants/minimal/components/SubtitleDisplay.js +0 -6
  234. package/dist/src/components/variants/minimal/components/TimeDisplay.d.ts.map +0 -1
  235. package/dist/src/components/variants/minimal/components/TimeDisplay.js +0 -5
  236. package/dist/src/components/variants/minimal/components/VideoElement.d.ts.map +0 -1
  237. package/dist/src/components/variants/minimal/components/VideoElement.js +0 -4
  238. package/dist/src/components/variants/minimal/components/VolumeControl.d.ts.map +0 -1
  239. package/dist/src/components/variants/minimal/components/VolumeControl.js +0 -99
  240. package/dist/src/components/variants/minimal/index.d.ts.map +0 -1
  241. package/dist/src/components/variants/minimal/index.js +0 -8
  242. package/dist/src/components/video-player.d.ts.map +0 -1
  243. package/dist/src/components/video-player.js +0 -38
  244. package/dist/src/context/error-handling.d.ts.map +0 -1
  245. package/dist/src/context/error-handling.js +0 -300
  246. package/dist/src/context/media-context.d.ts.map +0 -1
  247. package/dist/src/context/media-context.js +0 -121
  248. package/dist/src/context/media-provider.d.ts.map +0 -1
  249. package/dist/src/context/media-provider.js +0 -164
  250. package/dist/src/context/media-store.d.ts.map +0 -1
  251. package/dist/src/context/media-store.js +0 -273
  252. package/dist/src/context/persistence.d.ts.map +0 -1
  253. package/dist/src/context/persistence.js +0 -356
  254. package/dist/src/core/events/event-system.d.ts.map +0 -1
  255. package/dist/src/core/events/event-system.js +0 -288
  256. package/dist/src/core/events/hooks.d.ts.map +0 -1
  257. package/dist/src/core/events/hooks.js +0 -198
  258. package/dist/src/core/events/index.d.ts.map +0 -1
  259. package/dist/src/core/events/index.js +0 -7
  260. package/dist/src/core/events/middleware.d.ts.map +0 -1
  261. package/dist/src/core/events/middleware.js +0 -219
  262. package/dist/src/core/index.d.ts.map +0 -1
  263. package/dist/src/core/index.js +0 -15
  264. package/dist/src/core/optimization/bundle-optimizer.d.ts.map +0 -1
  265. package/dist/src/core/optimization/bundle-optimizer.js +0 -217
  266. package/dist/src/core/performance/cicd.d.ts.map +0 -1
  267. package/dist/src/core/performance/cicd.js +0 -83
  268. package/dist/src/core/performance/index.d.ts.map +0 -1
  269. package/dist/src/core/performance/index.js +0 -14
  270. package/dist/src/core/performance/media-loading-optimizer.d.ts.map +0 -1
  271. package/dist/src/core/performance/media-loading-optimizer.js +0 -404
  272. package/dist/src/core/performance/performance-budgets.d.ts.map +0 -1
  273. package/dist/src/core/performance/performance-budgets.js +0 -326
  274. package/dist/src/core/performance/performance-monitor.d.ts.map +0 -1
  275. package/dist/src/core/performance/performance-monitor.js +0 -297
  276. package/dist/src/core/performance/performance-testing.d.ts.map +0 -1
  277. package/dist/src/core/performance/performance-testing.js +0 -314
  278. package/dist/src/core/plugins/base-plugin.d.ts.map +0 -1
  279. package/dist/src/core/plugins/base-plugin.js +0 -151
  280. package/dist/src/core/plugins/enhanced-plugin-system.d.ts.map +0 -1
  281. package/dist/src/core/plugins/enhanced-plugin-system.js +0 -305
  282. package/dist/src/core/plugins/examples/analytics-plugin.d.ts.map +0 -1
  283. package/dist/src/core/plugins/examples/analytics-plugin.js +0 -191
  284. package/dist/src/core/plugins/index.d.ts.map +0 -1
  285. package/dist/src/core/plugins/index.js +0 -9
  286. package/dist/src/core/plugins/registry.d.ts.map +0 -1
  287. package/dist/src/core/plugins/registry.js +0 -261
  288. package/dist/src/core/plugins/types.d.ts.map +0 -1
  289. package/dist/src/core/plugins/types.js +0 -31
  290. package/dist/src/core/plugins/utils.d.ts.map +0 -1
  291. package/dist/src/core/plugins/utils.js +0 -274
  292. package/dist/src/core/progressive-loading.d.ts.map +0 -1
  293. package/dist/src/core/progressive-loading.js +0 -239
  294. package/dist/src/core/providers/enhanced-hls-provider.d.ts.map +0 -1
  295. package/dist/src/core/providers/enhanced-hls-provider.js +0 -273
  296. package/dist/src/core/providers/service-provider.d.ts.map +0 -1
  297. package/dist/src/core/providers/service-provider.js +0 -105
  298. package/dist/src/core/utils.d.ts.map +0 -1
  299. package/dist/src/core/utils.js +0 -21
  300. package/dist/src/features/media-session/media-session-manager.d.ts.map +0 -1
  301. package/dist/src/features/media-session/media-session-manager.js +0 -331
  302. package/dist/src/features/picture-in-picture/pip-manager.d.ts.map +0 -1
  303. package/dist/src/features/picture-in-picture/pip-manager.js +0 -353
  304. package/dist/src/features/playlist/playlist-manager.d.ts.map +0 -1
  305. package/dist/src/features/playlist/playlist-manager.js +0 -475
  306. package/dist/src/features/subtitles/subtitle-manager.d.ts.map +0 -1
  307. package/dist/src/features/subtitles/subtitle-manager.js +0 -335
  308. package/dist/src/features/subtitles/subtitle-parser.d.ts.map +0 -1
  309. package/dist/src/features/subtitles/subtitle-parser.js +0 -217
  310. package/dist/src/features/thumbnails/thumbnail-generator.d.ts.map +0 -1
  311. package/dist/src/features/thumbnails/thumbnail-generator.js +0 -388
  312. package/dist/src/hooks/accessibility/index.d.ts.map +0 -1
  313. package/dist/src/hooks/accessibility/index.js +0 -4
  314. package/dist/src/hooks/accessibility/use-accessibility-preferences.d.ts.map +0 -1
  315. package/dist/src/hooks/accessibility/use-accessibility-preferences.js +0 -156
  316. package/dist/src/hooks/accessibility/use-focus-management.d.ts.map +0 -1
  317. package/dist/src/hooks/accessibility/use-focus-management.js +0 -142
  318. package/dist/src/hooks/accessibility/use-keyboard-shortcuts.d.ts.map +0 -1
  319. package/dist/src/hooks/accessibility/use-keyboard-shortcuts.js +0 -101
  320. package/dist/src/hooks/accessibility/use-screen-reader.d.ts.map +0 -1
  321. package/dist/src/hooks/accessibility/use-screen-reader.js +0 -148
  322. package/dist/src/hooks/core/index.d.ts.map +0 -1
  323. package/dist/src/hooks/core/index.js +0 -19
  324. package/dist/src/hooks/legacy.d.ts.map +0 -1
  325. package/dist/src/hooks/legacy.js +0 -17
  326. package/dist/src/hooks/use-enhanced-media-player.d.ts.map +0 -1
  327. package/dist/src/hooks/use-enhanced-media-player.js +0 -395
  328. package/dist/src/hooks/use-intelligent-preloading.d.ts.map +0 -1
  329. package/dist/src/hooks/use-intelligent-preloading.js +0 -258
  330. package/dist/src/hooks/use-keyboard-controls.d.ts.map +0 -1
  331. package/dist/src/hooks/use-keyboard-controls.js +0 -83
  332. package/dist/src/hooks/use-media-actions.d.ts.map +0 -1
  333. package/dist/src/hooks/use-media-actions.js +0 -121
  334. package/dist/src/hooks/use-media-metadata.d.ts.map +0 -1
  335. package/dist/src/hooks/use-media-metadata.js +0 -74
  336. package/dist/src/hooks/use-media-optimistic.d.ts.map +0 -1
  337. package/dist/src/hooks/use-media-optimistic.js +0 -205
  338. package/dist/src/hooks/use-media-player.d.ts.map +0 -1
  339. package/dist/src/hooks/use-media-player.js +0 -251
  340. package/dist/src/hooks/use-media-state.d.ts.map +0 -1
  341. package/dist/src/hooks/use-media-state.js +0 -162
  342. package/dist/src/hooks/use-memory-optimization.d.ts.map +0 -1
  343. package/dist/src/hooks/use-memory-optimization.js +0 -288
  344. package/dist/src/hooks/use-optimistic-controls.d.ts.map +0 -1
  345. package/dist/src/hooks/use-optimistic-controls.js +0 -60
  346. package/dist/src/hooks/use-optimized-media.d.ts.map +0 -1
  347. package/dist/src/hooks/use-optimized-media.js +0 -211
  348. package/dist/src/hooks/use-touch-gestures.d.ts.map +0 -1
  349. package/dist/src/hooks/use-touch-gestures.js +0 -289
  350. package/dist/src/hooks/useEnhancedSubtitles.d.ts.map +0 -1
  351. package/dist/src/hooks/useEnhancedSubtitles.js +0 -205
  352. package/dist/src/hooks/useKeyboardShortcuts.d.ts.map +0 -1
  353. package/dist/src/hooks/useKeyboardShortcuts.js +0 -59
  354. package/dist/src/hooks/useMediaControls.d.ts.map +0 -1
  355. package/dist/src/hooks/useMediaControls.js +0 -44
  356. package/dist/src/hooks/useScreenshot.d.ts.map +0 -1
  357. package/dist/src/hooks/useScreenshot.js +0 -56
  358. package/dist/src/hooks/useSubtitles.d.ts.map +0 -1
  359. package/dist/src/hooks/useSubtitles.js +0 -73
  360. package/dist/src/hooks/useVideoPlayer.d.ts.map +0 -1
  361. package/dist/src/hooks/useVideoPlayer.js +0 -184
  362. package/dist/src/icons/components/FullscreenIcon.d.ts.map +0 -1
  363. package/dist/src/icons/components/FullscreenIcon.js +0 -11
  364. package/dist/src/icons/components/SettingsIcon.d.ts.map +0 -1
  365. package/dist/src/icons/components/SettingsIcon.js +0 -11
  366. package/dist/src/icons/components/animated/LoadingIcon.d.ts.map +0 -1
  367. package/dist/src/icons/components/animated/LoadingIcon.js +0 -11
  368. package/dist/src/icons/components/animated/PlayPauseIcon.d.ts.map +0 -1
  369. package/dist/src/icons/components/animated/PlayPauseIcon.js +0 -9
  370. package/dist/src/icons/components/media/PauseIcon.d.ts.map +0 -1
  371. package/dist/src/icons/components/media/PauseIcon.js +0 -12
  372. package/dist/src/icons/components/media/PlayIcon.d.ts.map +0 -1
  373. package/dist/src/icons/components/media/PlayIcon.js +0 -12
  374. package/dist/src/icons/components/volume/VolumeIcon.d.ts.map +0 -1
  375. package/dist/src/icons/components/volume/VolumeIcon.js +0 -11
  376. package/dist/src/icons/components/volume/VolumeOffIcon.d.ts.map +0 -1
  377. package/dist/src/icons/components/volume/VolumeOffIcon.js +0 -11
  378. package/dist/src/icons/index.d.ts.map +0 -1
  379. package/dist/src/icons/index.js +0 -45
  380. package/dist/src/icons/provider.d.ts.map +0 -1
  381. package/dist/src/icons/provider.js +0 -37
  382. package/dist/src/icons/types.d.ts.map +0 -1
  383. package/dist/src/icons/types.js +0 -1
  384. package/dist/src/index-enhanced.d.ts.map +0 -1
  385. package/dist/src/index-enhanced.js +0 -16
  386. package/dist/src/index-legacy.d.ts.map +0 -1
  387. package/dist/src/index-legacy.js +0 -97
  388. package/dist/src/index.d.ts.map +0 -1
  389. package/dist/src/index.js +0 -90
  390. package/dist/src/index.minimal.d.ts.map +0 -1
  391. package/dist/src/index.minimal.js +0 -3
  392. package/dist/src/lib/deprecation.d.ts.map +0 -1
  393. package/dist/src/lib/deprecation.js +0 -31
  394. package/dist/src/lib/format-time.d.ts.map +0 -1
  395. package/dist/src/lib/format-time.js +0 -32
  396. package/dist/src/lib/index.d.ts.map +0 -1
  397. package/dist/src/lib/index.js +0 -3
  398. package/dist/src/lib/utils.d.ts.map +0 -1
  399. package/dist/src/lib/utils.js +0 -5
  400. package/dist/src/test/setup.d.ts.map +0 -1
  401. package/dist/src/test/setup.js +0 -65
  402. package/dist/src/types/events.d.ts.map +0 -1
  403. package/dist/src/types/events.js +0 -2
  404. package/dist/src/types/formats.d.ts.map +0 -1
  405. package/dist/src/types/formats.js +0 -63
  406. package/dist/src/types/index.d.ts.map +0 -1
  407. package/dist/src/types/index.js +0 -4
  408. package/dist/utils-Db13763z.cjs +0 -9
  409. package/dist/utils-Db13763z.cjs.map +0 -1
  410. package/dist/utils-nTO4AnHo.js +0 -2809
  411. package/dist/utils-nTO4AnHo.js.map +0 -1
  412. package/dist/utils.js +0 -2
  413. package/dist/utils.js.map +0 -1
  414. package/dist/utils.mjs +0 -7
  415. package/dist/utils.mjs.map +0 -1
  416. package/src/adapters/videojs-adapter.js +0 -350
  417. package/src/components/AnimateLoading.js +0 -41
  418. package/src/components/LoadingState.js +0 -111
  419. package/src/components/accessibility/keyboard-help-overlay.js +0 -90
  420. package/src/components/audio-player.js +0 -31
  421. package/src/components/basic/index.js +0 -29
  422. package/src/components/enhanced/advanced-features.js +0 -64
  423. package/src/components/enhanced/debug-panel.js +0 -94
  424. package/src/components/enhanced/enhanced-controls.js +0 -233
  425. package/src/components/enhanced/enhanced-media-player.js +0 -316
  426. package/src/components/enhanced/error-handling.js +0 -153
  427. package/src/components/enhanced/index.js +0 -10
  428. package/src/components/enhanced/media-player-enhanced.js +0 -250
  429. package/src/components/examples/basic-video-player.js +0 -16
  430. package/src/components/examples/custom-controls-example.js +0 -12
  431. package/src/components/examples/enhanced-controls-example.js +0 -18
  432. package/src/components/examples/enhanced-media-player-example.js +0 -13
  433. package/src/components/examples/loading-states-demo.js +0 -41
  434. package/src/components/examples/react-19-demo.js +0 -104
  435. package/src/components/examples/volume-orientation-demo.js +0 -31
  436. package/src/components/icon-demo.js +0 -16
  437. package/src/components/icons/index.js +0 -59
  438. package/src/components/icons/svg-icons/ArrowLeftIcon.js +0 -3
  439. package/src/components/icons/svg-icons/ArrowRightIcon.js +0 -3
  440. package/src/components/icons/svg-icons/AudioIcon.js +0 -4
  441. package/src/components/icons/svg-icons/BackwardIcon.js +0 -3
  442. package/src/components/icons/svg-icons/CameraIcon.js +0 -4
  443. package/src/components/icons/svg-icons/CheckIcon.js +0 -4
  444. package/src/components/icons/svg-icons/EnablePiPIcon.js +0 -5
  445. package/src/components/icons/svg-icons/ForwardIcon.js +0 -3
  446. package/src/components/icons/svg-icons/FullscreenEnterIcon.js +0 -3
  447. package/src/components/icons/svg-icons/FullscreenExitIcon.js +0 -3
  448. package/src/components/icons/svg-icons/LoadingIcon.js +0 -3
  449. package/src/components/icons/svg-icons/PauseIcon.js +0 -3
  450. package/src/components/icons/svg-icons/PlayIcon.js +0 -3
  451. package/src/components/icons/svg-icons/PlaybackSpeedIcon.js +0 -3
  452. package/src/components/icons/svg-icons/QualityIcon.js +0 -3
  453. package/src/components/icons/svg-icons/SettingsIcon.js +0 -3
  454. package/src/components/icons/svg-icons/SliderIcon.js +0 -3
  455. package/src/components/icons/svg-icons/SubtitleIcon.js +0 -3
  456. package/src/components/icons/svg-icons/SubtitleOffIcon.js +0 -3
  457. package/src/components/icons/svg-icons/UnPiPIcon.js +0 -5
  458. package/src/components/icons/svg-icons/VolumeMutedIcon.js +0 -3
  459. package/src/components/icons/svg-icons/VolumeOneIcon.js +0 -3
  460. package/src/components/icons/svg-icons/VolumeThreeIcon.js +0 -3
  461. package/src/components/icons/svg-icons/VolumeTwoIcon.js +0 -3
  462. package/src/components/legacy.js +0 -52
  463. package/src/components/media-metadata-display.js +0 -20
  464. package/src/components/media-player-audio.js +0 -18
  465. package/src/components/media-player-controls.js +0 -150
  466. package/src/components/media-player-error.js +0 -85
  467. package/src/components/media-player-fullscreen.js +0 -68
  468. package/src/components/media-player-hls.js +0 -20
  469. package/src/components/media-player-loading.js +0 -53
  470. package/src/components/media-player-play.js +0 -44
  471. package/src/components/media-player-root.js +0 -243
  472. package/src/components/media-player-seek.js +0 -92
  473. package/src/components/media-player-time.js +0 -57
  474. package/src/components/media-player-tooltip.js +0 -14
  475. package/src/components/media-player-video.js +0 -18
  476. package/src/components/media-player-volume.js +0 -88
  477. package/src/components/media-player.js +0 -67
  478. package/src/components/media-suspense.js +0 -173
  479. package/src/components/player-settings-form.js +0 -46
  480. package/src/components/react-player-wrapper.js +0 -163
  481. package/src/components/simple-video-player.js +0 -41
  482. package/src/components/ui/enhanced-seek-bar.js +0 -112
  483. package/src/components/ui/fullscreen-button.js +0 -21
  484. package/src/components/ui/media-resource-preloader.js +0 -295
  485. package/src/components/ui/play-button.js +0 -26
  486. package/src/components/ui/seek-bar.js +0 -54
  487. package/src/components/ui/time-display.js +0 -18
  488. package/src/components/ui/volume-control.js +0 -71
  489. package/src/components/unified/base-media-player.js +0 -104
  490. package/src/components/unified/media-player.js +0 -41
  491. package/src/components/variants/minimal/AccessibleMinimalPlayer.js +0 -322
  492. package/src/components/variants/minimal/EnhancedMinimalMediaPlayer.js +0 -280
  493. package/src/components/variants/minimal/MinimalControls.js +0 -19
  494. package/src/components/variants/minimal/MinimalLoading.js +0 -6
  495. package/src/components/variants/minimal/MinimalMediaPlayer.js +0 -135
  496. package/src/components/variants/minimal/MinimalOverlay.js +0 -15
  497. package/src/components/variants/minimal/MinimalPlayButton.js +0 -29
  498. package/src/components/variants/minimal/MinimalSeekBar.js +0 -73
  499. package/src/components/variants/minimal/MinimalVolumeControl.js +0 -29
  500. package/src/components/variants/minimal/SimpleMinimalPlayer.js +0 -51
  501. package/src/components/variants/minimal/components/CenterPlayButton.js +0 -8
  502. package/src/components/variants/minimal/components/ControlBar.js +0 -10
  503. package/src/components/variants/minimal/components/EnhancedSettingsMenu.js +0 -68
  504. package/src/components/variants/minimal/components/PlaybackControls.js +0 -9
  505. package/src/components/variants/minimal/components/RightControls.js +0 -40
  506. package/src/components/variants/minimal/components/SeekBar.js +0 -43
  507. package/src/components/variants/minimal/components/SettingsDropdown.js +0 -18
  508. package/src/components/variants/minimal/components/SubtitleDisplay.js +0 -6
  509. package/src/components/variants/minimal/components/TimeDisplay.js +0 -5
  510. package/src/components/variants/minimal/components/VideoElement.js +0 -4
  511. package/src/components/variants/minimal/components/VolumeControl.js +0 -99
  512. package/src/components/variants/minimal/index.js +0 -8
  513. package/src/components/video-player.js +0 -38
  514. package/src/context/error-handling.js +0 -300
  515. package/src/context/media-context.js +0 -121
  516. package/src/context/media-provider.js +0 -164
  517. package/src/context/media-store.js +0 -273
  518. package/src/context/persistence.js +0 -356
  519. package/src/core/events/event-system.js +0 -288
  520. package/src/core/events/hooks.js +0 -198
  521. package/src/core/events/index.js +0 -7
  522. package/src/core/events/middleware.js +0 -219
  523. package/src/core/index.js +0 -15
  524. package/src/core/optimization/bundle-optimizer.js +0 -217
  525. package/src/core/performance/cicd.js +0 -83
  526. package/src/core/performance/index.js +0 -14
  527. package/src/core/performance/media-loading-optimizer.js +0 -404
  528. package/src/core/performance/performance-budgets.js +0 -326
  529. package/src/core/performance/performance-monitor.js +0 -297
  530. package/src/core/performance/performance-testing.js +0 -314
  531. package/src/core/plugins/base-plugin.js +0 -151
  532. package/src/core/plugins/enhanced-plugin-system.js +0 -305
  533. package/src/core/plugins/examples/analytics-plugin.js +0 -191
  534. package/src/core/plugins/index.js +0 -9
  535. package/src/core/plugins/registry.js +0 -261
  536. package/src/core/plugins/types.js +0 -31
  537. package/src/core/plugins/utils.js +0 -274
  538. package/src/core/progressive-loading.js +0 -239
  539. package/src/core/providers/enhanced-hls-provider.js +0 -273
  540. package/src/core/providers/service-provider.js +0 -105
  541. package/src/core/utils.js +0 -21
  542. package/src/features/media-session/media-session-manager.js +0 -331
  543. package/src/features/picture-in-picture/pip-manager.js +0 -353
  544. package/src/features/playlist/playlist-manager.js +0 -475
  545. package/src/features/subtitles/subtitle-manager.js +0 -335
  546. package/src/features/subtitles/subtitle-parser.js +0 -217
  547. package/src/features/thumbnails/thumbnail-generator.js +0 -388
  548. package/src/hooks/accessibility/index.js +0 -4
  549. package/src/hooks/accessibility/use-accessibility-preferences.js +0 -156
  550. package/src/hooks/accessibility/use-focus-management.js +0 -142
  551. package/src/hooks/accessibility/use-keyboard-shortcuts.js +0 -101
  552. package/src/hooks/accessibility/use-screen-reader.js +0 -148
  553. package/src/hooks/core/index.js +0 -19
  554. package/src/hooks/legacy.js +0 -17
  555. package/src/hooks/use-enhanced-media-player.js +0 -395
  556. package/src/hooks/use-intelligent-preloading.js +0 -258
  557. package/src/hooks/use-keyboard-controls.js +0 -83
  558. package/src/hooks/use-media-actions.js +0 -121
  559. package/src/hooks/use-media-metadata.js +0 -74
  560. package/src/hooks/use-media-optimistic.js +0 -205
  561. package/src/hooks/use-media-player.js +0 -251
  562. package/src/hooks/use-media-state.js +0 -162
  563. package/src/hooks/use-memory-optimization.js +0 -288
  564. package/src/hooks/use-optimistic-controls.js +0 -60
  565. package/src/hooks/use-optimized-media.js +0 -211
  566. package/src/hooks/use-touch-gestures.js +0 -289
  567. package/src/hooks/useEnhancedSubtitles.js +0 -205
  568. package/src/hooks/useKeyboardShortcuts.js +0 -59
  569. package/src/hooks/useMediaControls.js +0 -44
  570. package/src/hooks/useScreenshot.js +0 -56
  571. package/src/hooks/useSubtitles.js +0 -73
  572. package/src/hooks/useVideoPlayer.js +0 -184
  573. package/src/icons/components/FullscreenIcon.js +0 -11
  574. package/src/icons/components/SettingsIcon.js +0 -11
  575. package/src/icons/components/animated/LoadingIcon.js +0 -11
  576. package/src/icons/components/animated/PlayPauseIcon.js +0 -9
  577. package/src/icons/components/media/PauseIcon.js +0 -12
  578. package/src/icons/components/media/PlayIcon.js +0 -12
  579. package/src/icons/components/volume/VolumeIcon.js +0 -11
  580. package/src/icons/components/volume/VolumeOffIcon.js +0 -11
  581. package/src/icons/index.js +0 -45
  582. package/src/icons/provider.js +0 -37
  583. package/src/icons/types.js +0 -1
  584. package/src/index-enhanced.js +0 -16
  585. package/src/index-legacy.js +0 -97
  586. package/src/index.js +0 -90
  587. package/src/index.minimal.js +0 -3
  588. package/src/lib/deprecation.js +0 -31
  589. package/src/lib/format-time.js +0 -32
  590. package/src/lib/index.js +0 -3
  591. package/src/lib/utils.js +0 -5
  592. package/src/test/setup.js +0 -65
  593. package/src/types/events.js +0 -2
  594. package/src/types/formats.js +0 -63
  595. package/src/types/index.js +0 -4
@@ -1,295 +0,0 @@
1
- /**
2
- * Media Resource Preloader using React 19's resource preloading APIs
3
- * Implements intelligent preloading strategies based on user behavior and network conditions
4
- */
5
- import { useEffect, useRef, useMemo } from 'react';
6
- import { prefetchDNS, preconnect, preload, preinit } from 'react-dom';
7
- export const MediaResourcePreloader = ({ sources, enableIntelligentPreloading = true, adaptToNetworkConditions = true, priority = 'auto', strategy = 'adaptive', }) => {
8
- const networkInfoRef = useRef(null);
9
- const userBehaviorRef = useRef(null);
10
- const preloadingHistoryRef = useRef(new Map());
11
- // Analyze sources and determine preloading configuration
12
- const preloadingConfig = useMemo(() => {
13
- const config = {
14
- dnsPrefetch: [],
15
- preconnect: [],
16
- preload: [],
17
- preinit: [],
18
- };
19
- sources.forEach((source) => {
20
- const url = new URL(source.src);
21
- const domain = url.origin;
22
- // DNS prefetch for CDN domains
23
- if (isCDNDomain(domain)) {
24
- config.dnsPrefetch.push(domain);
25
- }
26
- // Preconnect to media domains
27
- if (shouldPreconnect(source.type, strategy)) {
28
- config.preconnect.push(domain);
29
- }
30
- // Preload media files based on strategy
31
- if (shouldPreload(source, priority, strategy)) {
32
- config.preload.push({
33
- url: source.src,
34
- type: getPreloadType(source.type),
35
- });
36
- }
37
- // Preinit critical resources
38
- if (shouldPreinit(source, strategy)) {
39
- config.preinit.push({
40
- url: source.src,
41
- type: 'script',
42
- });
43
- }
44
- });
45
- return config;
46
- }, [sources, priority, strategy]);
47
- // Initialize network monitoring
48
- useEffect(() => {
49
- if (adaptToNetworkConditions && 'connection' in navigator) {
50
- networkInfoRef.current = navigator.connection;
51
- const handleNetworkChange = () => {
52
- adjustPreloadingStrategy();
53
- };
54
- networkInfoRef.current.addEventListener('change', handleNetworkChange);
55
- return () => {
56
- networkInfoRef.current?.removeEventListener('change', handleNetworkChange);
57
- };
58
- }
59
- }, [adaptToNetworkConditions]);
60
- // Initialize user behavior tracking
61
- useEffect(() => {
62
- if (enableIntelligentPreloading) {
63
- userBehaviorRef.current = new UserBehaviorTracker();
64
- userBehaviorRef.current.startTracking();
65
- return () => {
66
- userBehaviorRef.current?.stopTracking();
67
- };
68
- }
69
- }, [enableIntelligentPreloading]);
70
- // Apply DNS prefetching
71
- useEffect(() => {
72
- preloadingConfig.dnsPrefetch.forEach((domain) => {
73
- prefetchDNS(domain);
74
- });
75
- }, [preloadingConfig.dnsPrefetch]);
76
- // Apply preconnections
77
- useEffect(() => {
78
- preloadingConfig.preconnect.forEach((origin) => {
79
- preconnect(origin, { crossOrigin: 'anonymous' });
80
- });
81
- }, [preloadingConfig.preconnect]);
82
- // Apply preloading
83
- useEffect(() => {
84
- preloadingConfig.preload.forEach(({ url, type }) => {
85
- const crossOrigin = shouldUseCrossOrigin(url) ? 'anonymous' : undefined;
86
- preload(url, {
87
- as: type,
88
- crossOrigin,
89
- integrity: getAssetIntegrity(url),
90
- priority,
91
- });
92
- });
93
- }, [preloadingConfig.preload, priority]);
94
- // Apply preinit for critical resources
95
- useEffect(() => {
96
- preloadingConfig.preinit.forEach(({ url, type }) => {
97
- const crossOrigin = shouldUseCrossOrigin(url) ? 'anonymous' : undefined;
98
- preinit(url, {
99
- as: type,
100
- crossOrigin,
101
- });
102
- });
103
- }, [preloadingConfig.preinit]);
104
- // Intelligent preloading based on user behavior
105
- useEffect(() => {
106
- if (!enableIntelligentPreloading || !userBehaviorRef.current)
107
- return;
108
- const handleUserBehavior = (behavior) => {
109
- if (behavior.isLikelyToInteract) {
110
- preloadLikelyContent(behavior.predictedSources);
111
- }
112
- };
113
- userBehaviorRef.current.onBehaviorChange(handleUserBehavior);
114
- }, [enableIntelligentPreloading]);
115
- // Helper functions
116
- function isCDNDomain(domain) {
117
- const cdnDomains = [
118
- 'cdn.jsdelivr.net',
119
- 'cdnjs.cloudflare.com',
120
- 'unpkg.com',
121
- 'cloudflare.com',
122
- 'fastly.net',
123
- 'akamaized.net',
124
- ];
125
- return cdnDomains.some((cdn) => domain.includes(cdn));
126
- }
127
- function shouldPreconnect(mediaType, strategy) {
128
- if (strategy === 'aggressive')
129
- return true;
130
- if (strategy === 'conservative')
131
- return ['hls', 'm3u8'].includes(mediaType);
132
- return ['hls', 'm3u8', 'mp4'].includes(mediaType);
133
- }
134
- function shouldPreload(source, priority, strategy) {
135
- // Check if already preloaded recently
136
- const lastPreload = preloadingHistoryRef.current.get(source.src);
137
- if (lastPreload && Date.now() - lastPreload < 300000)
138
- return false; // 5 minutes
139
- // Strategy-based decision
140
- if (strategy === 'conservative') {
141
- return priority === 'high' && source.type === 'hls';
142
- }
143
- if (strategy === 'aggressive') {
144
- return true;
145
- }
146
- // Adaptive strategy
147
- return shouldAdaptivePreload(source, priority);
148
- }
149
- function shouldAdaptivePreload(source, priority) {
150
- // Consider network conditions
151
- if (networkInfoRef.current) {
152
- const { effectiveType, saveData } = networkInfoRef.current;
153
- if (saveData)
154
- return false;
155
- if (effectiveType === 'slow-2g' || effectiveType === '2g') {
156
- return priority === 'high' && source.type === 'hls';
157
- }
158
- if (effectiveType === '3g') {
159
- return ['hls', 'm3u8'].includes(source.type);
160
- }
161
- }
162
- // Consider user behavior
163
- if (userBehaviorRef.current) {
164
- const behavior = userBehaviorRef.current.getCurrentBehavior();
165
- if (behavior.engagementScore > 0.7) {
166
- return true;
167
- }
168
- }
169
- return priority !== 'low';
170
- }
171
- function shouldPreinit(source, strategy) {
172
- return strategy === 'aggressive' && source.type === 'hls';
173
- }
174
- function getPreloadType(mediaType) {
175
- switch (mediaType) {
176
- case 'hls':
177
- case 'm3u8':
178
- return 'fetch';
179
- case 'mp4':
180
- case 'webm':
181
- return 'video';
182
- case 'mp3':
183
- case 'wav':
184
- return 'audio';
185
- default:
186
- return 'fetch';
187
- }
188
- }
189
- function shouldUseCrossOrigin(url) {
190
- return !url.includes(window.location.origin);
191
- }
192
- function getAssetIntegrity(url) {
193
- // Return integrity hash if available for the asset
194
- // This would typically come from a build process or asset manifest
195
- return undefined;
196
- }
197
- function adjustPreloadingStrategy() {
198
- // Adjust preloading based on network conditions
199
- if (!networkInfoRef.current)
200
- return;
201
- const { effectiveType, downlink } = networkInfoRef.current;
202
- // This would update the preloading configuration
203
- // Implementation depends on specific requirements
204
- }
205
- function preloadLikelyContent(sources) {
206
- sources.forEach((url) => {
207
- // Mark as preloaded
208
- preloadingHistoryRef.current.set(url, Date.now());
209
- // Preload the content
210
- preload(url, {
211
- as: 'fetch',
212
- crossOrigin: 'anonymous',
213
- priority: 'high',
214
- });
215
- });
216
- }
217
- // This component doesn't render anything visible
218
- return null;
219
- };
220
- /**
221
- * User behavior tracker for intelligent preloading
222
- */
223
- class UserBehaviorTracker {
224
- behaviorData = {
225
- isLikelyToInteract: false,
226
- engagementScore: 0,
227
- predictedSources: [],
228
- interactionHistory: [],
229
- };
230
- listeners = [];
231
- mouseMoveTimer = null;
232
- startTracking() {
233
- // Track mouse movements as interaction indicators
234
- document.addEventListener('mousemove', this.handleMouseMove);
235
- document.addEventListener('scroll', this.handleScroll);
236
- document.addEventListener('keydown', this.handleKeydown);
237
- // Track focus events
238
- document.addEventListener('focusin', this.handleFocus);
239
- document.addEventListener('visibilitychange', this.handleVisibilityChange);
240
- }
241
- stopTracking() {
242
- document.removeEventListener('mousemove', this.handleMouseMove);
243
- document.removeEventListener('scroll', this.handleScroll);
244
- document.removeEventListener('keydown', this.handleKeydown);
245
- document.removeEventListener('focusin', this.handleFocus);
246
- document.removeEventListener('visibilitychange', this.handleVisibilityChange);
247
- if (this.mouseMoveTimer) {
248
- clearTimeout(this.mouseMoveTimer);
249
- }
250
- }
251
- onBehaviorChange(listener) {
252
- this.listeners.push(listener);
253
- }
254
- getCurrentBehavior() {
255
- return this.behaviorData;
256
- }
257
- handleMouseMove = () => {
258
- if (this.mouseMoveTimer)
259
- return;
260
- this.mouseMoveTimer = window.setTimeout(() => {
261
- this.updateEngagementScore(0.1);
262
- this.mouseMoveTimer = null;
263
- }, 100);
264
- };
265
- handleScroll = () => {
266
- this.updateEngagementScore(0.2);
267
- };
268
- handleKeydown = () => {
269
- this.updateEngagementScore(0.3);
270
- this.behaviorData.isLikelyToInteract = true;
271
- };
272
- handleFocus = () => {
273
- this.updateEngagementScore(0.4);
274
- this.behaviorData.isLikelyToInteract = true;
275
- };
276
- handleVisibilityChange = () => {
277
- if (!document.hidden) {
278
- this.updateEngagementScore(0.5);
279
- this.behaviorData.isLikelyToInteract = true;
280
- }
281
- };
282
- updateEngagementScore(increment) {
283
- this.behaviorData.engagementScore = Math.min(1, this.behaviorData.engagementScore + increment);
284
- // Decay engagement score over time
285
- setTimeout(() => {
286
- this.behaviorData.engagementScore = Math.max(0, this.behaviorData.engagementScore - increment * 0.5);
287
- this.notifyListeners();
288
- }, 30000); // 30 seconds decay
289
- this.notifyListeners();
290
- }
291
- notifyListeners() {
292
- this.listeners.forEach((listener) => listener(this.behaviorData));
293
- }
294
- }
295
- export default MediaResourcePreloader;
@@ -1 +0,0 @@
1
- {"version":3,"file":"play-button.d.ts","sourceRoot":"","sources":["play-button.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AASxD,eAAO,MAAM,UAAU,+GA0FtB,CAAA"}
@@ -1,26 +0,0 @@
1
- "use client";
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { Pause, Play } from "lucide-react";
4
- import { forwardRef } from "react";
5
- import { cn } from "../../lib/utils";
6
- const sizeVariants = {
7
- sm: { button: "size-8", icon: 16 },
8
- md: { button: "size-10", icon: 20 },
9
- lg: { button: "size-12", icon: 24 },
10
- xl: { button: "size-16", icon: 32 }
11
- };
12
- export const PlayButton = forwardRef(({ isPlaying, onToggle, disabled = false, size = "lg", className }, ref) => {
13
- const sizeConfig = sizeVariants[size] || sizeVariants.lg;
14
- return (_jsxs("button", { ref: ref, type: "button", onClick: onToggle, disabled: disabled, "data-state": isPlaying ? "playing" : "paused", className: cn(
15
- // Base styles with new design system
16
- "group relative inline-flex items-center justify-center", "glass-strong media-control rounded-full contain-layout", "focus-ring touch-manipulation", sizeConfig.button,
17
- // Color transitions with OKLCH
18
- "text-[color:var(--media-text)] transition-all duration-300", "bg-[color:var(--media-control-bg)] backdrop-blur-sm", "border border-[color:var(--media-border)]/30",
19
- // Interactive states
20
- "hover:bg-[color:var(--media-control-hover)]", "hover:border-[color:var(--media-border)]/50", "hover:shadow-[color:var(--media-bg)]/20 hover:shadow-lg", "hover:-translate-y-0.5 hover:scale-105", "active:bg-[color:var(--media-control-active)]", "active:translate-y-0 active:scale-100",
21
- // Focus state
22
- "focus-visible:ring-2 focus-visible:ring-[color:var(--media-focus)]", "focus-visible:ring-offset-2 focus-visible:ring-offset-[color:var(--media-bg)]",
23
- // Disabled state
24
- "disabled:cursor-not-allowed disabled:opacity-50", "disabled:hover:translate-y-0 disabled:hover:scale-100", "disabled:hover:bg-[color:var(--media-control-bg)]", className), "aria-label": isPlaying ? "Pause media" : "Play media", "aria-pressed": isPlaying, children: [_jsx("div", { className: cn("absolute inset-0 rounded-full opacity-0 transition-opacity duration-300", "bg-gradient-to-br from-[color:var(--color-media-play)] to-[color:var(--color-media-pause)]", "blur-sm group-hover:opacity-20", isPlaying && "opacity-10") }), isPlaying ? (_jsx(Pause, { size: sizeConfig.icon, className: cn("relative z-10 fill-current transition-all duration-200", "text-[color:var(--color-media-pause)]", "group-hover:scale-110 group-active:scale-95", "drop-shadow-sm") })) : (_jsx(Play, { size: sizeConfig.icon, className: cn("relative z-10 fill-current transition-all duration-200", "ml-0.5 text-[color:var(--color-media-play)]", "group-hover:scale-110 group-active:scale-95", "drop-shadow-sm") })), _jsx("div", { className: cn("absolute inset-0 rounded-full opacity-0", "scale-75 bg-[color:var(--media-text)]/10", "group-active:scale-100 group-active:opacity-100", "transition-all duration-150 ease-out") })] }));
25
- });
26
- PlayButton.displayName = "PlayButton";
@@ -1 +0,0 @@
1
- {"version":3,"file":"seek-bar.d.ts","sourceRoot":"","sources":["seek-bar.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAErD,eAAO,MAAM,OAAO,yGAqJnB,CAAA"}
@@ -1,54 +0,0 @@
1
- "use client";
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import * as Slider from "@radix-ui/react-slider";
4
- import * as Tooltip from "@radix-ui/react-tooltip";
5
- import { forwardRef, useState, useMemo, useTransition, useDeferredValue, useRef } from "react";
6
- import { formatTime } from "../../lib/format-time";
7
- import { cn } from "../../lib/utils";
8
- export const SeekBar = forwardRef(({ currentTime, duration, buffered, onSeek, size = "sm", className }, ref) => {
9
- // React 19 concurrent features
10
- const [isPending, startTransition] = useTransition();
11
- const [isDragging, setIsDragging] = useState(false);
12
- const [previewTime, setPreviewTime] = useState(0);
13
- const [isHovering, setIsHovering] = useState(false);
14
- // Defer non-critical updates for better performance
15
- const deferredHovering = useDeferredValue(isHovering);
16
- const deferredPreviewTime = useDeferredValue(previewTime);
17
- // Memoize expensive calculations
18
- const progress = useMemo(() => duration > 0 ? (currentTime / duration) * 100 : 0, [currentTime, duration]);
19
- // Calculate buffered ranges with memoization
20
- const bufferedRanges = useMemo(() => {
21
- const ranges = [];
22
- if (buffered && duration > 0) {
23
- for (let i = 0; i < buffered.length; i++) {
24
- const start = (buffered.start(i) / duration) * 100;
25
- const end = (buffered.end(i) / duration) * 100;
26
- ranges.push({ start, end });
27
- }
28
- }
29
- return ranges;
30
- }, [buffered, duration]);
31
- // Throttled seek handler with React 19 transitions
32
- const seekTimeoutRef = useRef();
33
- const lastSeekTime = useRef(0);
34
- const handleValueChange = ([value]) => {
35
- const time = ((value ?? 0) / 100) * duration;
36
- setPreviewTime(time);
37
- if (isDragging) {
38
- onSeek(time);
39
- }
40
- };
41
- const handleValueCommit = ([value]) => {
42
- const time = ((value ?? 0) / 100) * duration;
43
- onSeek(time);
44
- setIsDragging(false);
45
- };
46
- const handlePointerDown = () => {
47
- setIsDragging(true);
48
- };
49
- return (_jsx("div", { ref: ref, className: cn("media-container relative w-full text-[color:var(--media-text)]", "touch-manipulation contain-layout", className), onMouseEnter: () => setIsHovering(true), onMouseLeave: () => setIsHovering(false), children: _jsx(Tooltip.Provider, { children: _jsxs(Tooltip.Root, { children: [_jsx(Tooltip.Trigger, { asChild: true, children: _jsx("div", { className: "relative animate-enter", children: _jsxs(Slider.Root, { className: cn("group relative flex w-full touch-none select-none items-center", "media-md:h-4 media-sm:h-3 media-xs:h-2", "focus-ring cursor-pointer"), value: [progress], max: 100, step: 0.1, onValueChange: handleValueChange, onValueCommit: handleValueCommit, onPointerDown: handlePointerDown, "aria-label": "Seek to position", children: [_jsxs(Slider.Track, { className: cn("relative grow overflow-hidden rounded-full", "bg-[color:var(--media-control-bg)]/40 backdrop-blur-sm", "border border-[color:var(--media-border)]/20", "shadow-inner transition-all duration-300 ease-out", "h-1 group-focus-within:h-1.5 group-hover:h-1.5", "group-hover:bg-[color:var(--media-control-bg)]/60", "group-hover:border-[color:var(--media-border)]/40"), children: [bufferedRanges.map((range, index) => (_jsx("div", { className: cn("absolute h-full rounded-full transition-all duration-500", "bg-[color:var(--color-media-buffered)] shadow-inner", "opacity-60 group-hover:opacity-80"), style: {
50
- left: `${range.start}%`,
51
- width: `${range.end - range.start}%`
52
- } }, index))), _jsx(Slider.Range, { className: cn("absolute h-full rounded-full transition-all duration-300", "bg-gradient-to-r from-[color:var(--color-media-progress)] to-[color:var(--color-brand-accent)]", "shadow-[color:var(--color-brand-primary)]/20 shadow-lg", "group-hover:shadow-xl") })] }), _jsx(Slider.Thumb, { className: cn("block size-4 rounded-full border-white/20 bg-white", "shadow-lg hover:shadow-xl", "opacity-0 group-hover:opacity-100", "hover:scale-110 hover:bg-white/95 active:scale-95", "focus:opacity-100 focus:outline-none focus:ring-2 focus:ring-white/50", "focus:ring-offset-2 focus:ring-offset-black/20", "transition-all duration-300 ease-out", isDragging && "opacity-100"), "aria-label": "Seek" })] }) }) }), isDragging && (_jsx(Tooltip.Portal, { children: _jsxs(Tooltip.Content, { className: cn("rounded bg-black/80 px-2 py-1 text-sm text-white", "fade-in-0 zoom-in-95 animate-in"), sideOffset: 10, children: [formatTime(previewTime), _jsx(Tooltip.Arrow, { className: "fill-black/80" })] }) }))] }) }) }));
53
- });
54
- SeekBar.displayName = "SeekBar";
@@ -1 +0,0 @@
1
- {"version":3,"file":"time-display.d.ts","sourceRoot":"","sources":["time-display.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAEzD,eAAO,MAAM,WAAW,6GA8BvB,CAAA"}
@@ -1,18 +0,0 @@
1
- "use client";
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { forwardRef } from "react";
4
- import { formatTime } from "../../lib/format-time";
5
- import { cn } from "../../lib/utils";
6
- export const TimeDisplay = forwardRef(({ currentTime, duration, showRemaining = false, size = "sm", className }, ref) => {
7
- const current = formatTime(currentTime);
8
- const total = formatTime(duration);
9
- const remaining = formatTime(duration - currentTime);
10
- const sizeClasses = {
11
- sm: "text-xs",
12
- md: "text-sm",
13
- lg: "text-base",
14
- xl: "text-lg"
15
- };
16
- return (_jsxs("div", { ref: ref, className: cn("flex items-center font-mono text-white text-xs", "rounded-lg backdrop-blur-sm", "px-3 py-1.5", sizeClasses[size], "select-none", className), children: [_jsx("span", { className: "tabular-nums", children: current }), _jsx("span", { className: "mx-1 text-white", children: "/" }), _jsx("span", { className: "tabular-nums", children: showRemaining ? `-${remaining}` : total })] }));
17
- });
18
- TimeDisplay.displayName = "TimeDisplay";
@@ -1 +0,0 @@
1
- {"version":3,"file":"volume-control.d.ts","sourceRoot":"","sources":["volume-control.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AA0B3D,eAAO,MAAM,aAAa,+GA2GzB,CAAA"}
@@ -1,71 +0,0 @@
1
- "use client";
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import * as Slider from "@radix-ui/react-slider";
4
- import * as Tooltip from "@radix-ui/react-tooltip";
5
- import { Volume1, Volume2, VolumeX } from "lucide-react";
6
- import { forwardRef } from "react";
7
- import { cn } from "../../lib/utils";
8
- const sizeConfig = {
9
- md: {
10
- button: "size-10",
11
- icon: 18,
12
- slider: "h-6",
13
- thumb: "size-3",
14
- track: "h-1"
15
- },
16
- lg: {
17
- button: "size-12",
18
- icon: 22,
19
- slider: "h-7",
20
- thumb: "size-4",
21
- track: "h-1.5"
22
- },
23
- xl: {
24
- button: "size-14",
25
- icon: 26,
26
- slider: "h-8",
27
- thumb: "size-5",
28
- track: "h-2"
29
- }
30
- };
31
- export const VolumeControl = forwardRef(({ volume, isMuted, onVolumeChange, onToggleMute, size = "lg", className }, ref) => {
32
- const getVolumeIcon = () => {
33
- if (isMuted || volume === 0) {
34
- return VolumeX;
35
- }
36
- else if (volume < 0.5) {
37
- return Volume1;
38
- }
39
- else {
40
- return Volume2;
41
- }
42
- };
43
- const VolumeIcon = getVolumeIcon();
44
- const buttonSizes = {
45
- md: "h-11 w-11",
46
- lg: "h-12 w-12",
47
- xl: "h-14 w-14"
48
- };
49
- const iconSizes = {
50
- md: "h-5 w-5",
51
- lg: "h-6 w-6",
52
- xl: "h-7 w-7"
53
- };
54
- const sliderHeight = {
55
- md: "h-6",
56
- lg: "h-7",
57
- xl: "h-8"
58
- };
59
- const thumbSize = {
60
- md: "h-4 w-4",
61
- lg: "h-4 w-4",
62
- xl: "h-5 w-5"
63
- };
64
- const trackHeight = {
65
- md: "h-1.5",
66
- lg: "h-2",
67
- xl: "h-2.5"
68
- };
69
- return (_jsxs("div", { ref: ref, className: cn("flex items-center space-x-3 text-white", className), children: [_jsx(Tooltip.Provider, { children: _jsxs(Tooltip.Root, { children: [_jsx(Tooltip.Trigger, { asChild: true, children: _jsx("button", { type: "button", onClick: onToggleMute, className: cn("inline-flex items-center justify-center rounded-lg bg-transparent p-0 text-white transition-all hover:text-cyan-700 active:scale-95", "focus:outline-none focus:ring-2 focus:ring-white/50 focus:ring-offset-2 focus:ring-offset-black/20", buttonSizes[size]), "aria-label": isMuted ? "Unmute" : "Mute", children: _jsx(VolumeIcon, { className: cn(iconSizes[size]) }) }) }), _jsx(Tooltip.Portal, { children: _jsxs(Tooltip.Content, { className: cn("rounded bg-black/80 px-2 py-1 text-sm text-white", "fade-in-0 zoom-in-95 animate-in"), sideOffset: 5, children: [isMuted ? "Unmute" : "Mute", _jsx(Tooltip.Arrow, { className: "fill-black/80" })] }) })] }) }), _jsx("div", { className: "w-32", children: _jsxs(Slider.Root, { className: cn("group relative flex w-full touch-none select-none items-center", sliderHeight[size]), value: [isMuted ? 0 : volume], max: 1, step: 0.01, onValueChange: ([value]) => onVolumeChange(value ?? 0), "aria-label": "Volume", children: [_jsx(Slider.Track, { className: cn("relative grow rounded-full bg-white/20 shadow-inner transition-all duration-300 group-hover:bg-white/30", "border border-white/10", trackHeight[size]), children: _jsx(Slider.Range, { className: "absolute h-full rounded-full bg-white shadow-sm" }) }), _jsx(Slider.Thumb, { className: cn("block rounded-full border-2 border-white/20 bg-white shadow-lg", "transition-all duration-300 ease-out hover:scale-110 hover:bg-white/95 active:scale-95", "focus:outline-none focus:ring-2 focus:ring-white/50 focus:ring-offset-2 focus:ring-offset-black/20", thumbSize[size]), "aria-label": "Volume" })] }) }), _jsx("span", { className: "w-10 text-right text-sm text-white", children: Math.round((isMuted ? 0 : volume) * 100) })] }));
70
- });
71
- VolumeControl.displayName = "VolumeControl";
@@ -1 +0,0 @@
1
- {"version":3,"file":"base-media-player.d.ts","sourceRoot":"","sources":["base-media-player.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAEnD,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAAC,gBAAgB,EAAE,QAAQ,GAAG,aAAa,GAAG,OAAO,GAAG,QAAQ,CAAC;IAElH,SAAS,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,CAAA;IAGtC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAGxB,2BAA2B,CAAC,EAAE,OAAO,CAAA;IACrC,iBAAiB,CAAC,EAAE,UAAU,GAAG,cAAc,GAAG,YAAY,CAAA;IAC9D,eAAe,CAAC,EAAE,aAAa,GAAG,OAAO,GAAG,MAAM,CAAA;IAClD,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAC7B;AAED,eAAO,MAAM,eAAe,iHAmN3B,CAAA"}
@@ -1,104 +0,0 @@
1
- /**
2
- * Base Media Player - Core unified functionality for video and audio
3
- * This consolidates the logic from MediaPlayer, VideoPlayer, and AudioPlayer
4
- */
5
- "use client";
6
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
7
- import { forwardRef, useMemo, useTransition } from "react";
8
- import { useKeyboardControls } from "../../hooks/use-keyboard-controls";
9
- import { useEnhancedMediaPlayer } from "../../hooks/use-enhanced-media-player";
10
- import { useMemoryOptimization } from "../../hooks/use-memory-optimization";
11
- import { EnhancedMediaWrapper } from "../media-suspense";
12
- import { cn } from "../../lib/utils";
13
- export const BaseMediaPlayer = forwardRef(({ src, mediaType = 'auto', className, children, keyboardControls = true, showControls = true, customControls = false, crossOrigin, enablePerformanceMonitoring = true, bufferingStrategy = "adaptive", preloadStrategy = "progressive", enableOptimizations = true,
14
- // Video-specific props
15
- poster, aspectRatio = "16/9", width = "100%", height = "auto", ...options }, ref) => {
16
- // React 19 concurrent features
17
- const [isPending] = useTransition();
18
- // Auto-detect media type if not specified
19
- const detectedMediaType = useMemo(() => {
20
- if (mediaType !== 'auto')
21
- return mediaType;
22
- // Simple detection based on file extension
23
- if (typeof src === 'string') {
24
- const videoExtensions = ['.mp4', '.webm', '.ogg', '.mov', '.avi', '.mkv'];
25
- const audioExtensions = ['.mp3', '.wav', '.ogg', '.aac', '.flac', '.m4a'];
26
- const extension = src.toLowerCase().split('.').pop();
27
- if (extension && videoExtensions.some(ext => extension.endsWith(ext))) {
28
- return 'video';
29
- }
30
- if (extension && audioExtensions.some(ext => extension.endsWith(ext))) {
31
- return 'audio';
32
- }
33
- }
34
- // Default to video for unknown types
35
- return 'video';
36
- }, [src, mediaType]);
37
- // Enhanced media player with optimizations
38
- const { state, controls, mediaRef, containerRef, performanceMetrics, isEnhanced } = useEnhancedMediaPlayer({
39
- src,
40
- crossOrigin,
41
- enablePerformanceMonitoring,
42
- bufferingStrategy,
43
- preloadStrategy,
44
- enableTimeUpdateThrottling: true,
45
- timeUpdateThrottleMs: 100,
46
- enableSeekPreview: true,
47
- ...options
48
- });
49
- // Memory optimization
50
- const { memoryStats, addEventListener } = useMemoryOptimization({
51
- maxMemoryUsage: 50, // 50MB for media player
52
- cleanupInterval: 15000, // 15 seconds
53
- enableGC: true,
54
- monitorMemory: enableOptimizations
55
- });
56
- // Keyboard controls
57
- useKeyboardControls({
58
- enabled: keyboardControls,
59
- state,
60
- controls
61
- });
62
- // Determine the media element based on type
63
- const MediaElement = useMemo(() => {
64
- const commonProps = {
65
- ref: mediaRef,
66
- src,
67
- className: cn("w-full h-full", state.isLoading && "opacity-0", !customControls && showControls && "cursor-pointer"),
68
- onPlay: controls.play,
69
- onPause: controls.pause,
70
- onVolumeChange: (e) => controls.setVolume(e.target.volume),
71
- onTimeUpdate: (e) => controls.setCurrentTime(e.target.currentTime),
72
- onSeeked: (e) => controls.setCurrentTime(e.target.currentTime),
73
- crossOrigin
74
- };
75
- if (detectedMediaType === 'audio') {
76
- return (_jsxs("audio", { ...commonProps, controls: !customControls && showControls, children: [src && _jsx("source", { src: typeof src === 'string' ? src : src.src }), "Your browser does not support the audio element."] }));
77
- }
78
- // Video (default)
79
- return (_jsxs("video", { ...commonProps, poster: poster, muted: state.isMuted, playsInline: true, controls: !customControls && showControls, children: [Array.isArray(src) ? (src.map((source, index) => (_jsx("source", { src: source.src, type: source.type }, index)))) : src ? (_jsx("source", { src: typeof src === 'string' ? src : src.src })) : null, "Your browser does not support the video element."] }));
80
- }, [detectedMediaType, src, mediaRef, state, controls, customControls, showControls, poster]);
81
- // Container styles based on media type
82
- const containerStyles = useMemo(() => {
83
- if (detectedMediaType === 'audio') {
84
- return cn("relative bg-gradient-to-br from-gray-900 to-gray-800 rounded-lg overflow-hidden", "flex items-center justify-center p-8", className);
85
- }
86
- // Video styles
87
- return cn("relative bg-black rounded-lg overflow-hidden", className);
88
- }, [detectedMediaType, className]);
89
- // Video-specific aspect ratio
90
- const aspectRatioStyles = useMemo(() => {
91
- if (detectedMediaType === 'video' && aspectRatio) {
92
- return {
93
- aspectRatio,
94
- width: typeof width === 'number' ? `${width}px` : width,
95
- height: typeof height === 'number' ? `${height}px` : height
96
- };
97
- }
98
- return {};
99
- }, [detectedMediaType, aspectRatio, width, height]);
100
- return (_jsx(EnhancedMediaWrapper, { children: _jsxs("div", { ref: containerRef, className: containerStyles, style: aspectRatioStyles, "data-media-type": detectedMediaType, "data-enhanced": isEnhanced, children: [MediaElement, state.isLoading && (_jsx("div", { className: "absolute inset-0 flex items-center justify-center bg-black/50 backdrop-blur-sm", children: _jsxs("div", { className: "text-center", children: [_jsx("div", { className: "mx-auto mb-4 h-12 w-12 animate-spin rounded-full border-4 border-white/20 border-t-white" }), _jsx("p", { className: "font-medium text-sm text-white", children: state.isBuffering ? "Buffering..." : "Loading..." })] }) })), state.error && (_jsx("div", { className: "absolute inset-0 flex items-center justify-center bg-black/50 backdrop-blur-sm", children: _jsxs("div", { className: "p-4 text-center text-white", children: [_jsx("div", { className: "mb-2 text-lg text-red-400", children: "\u26A0\uFE0F" }), _jsx("p", { className: "text-sm", children: "Failed to load media" }), _jsx("p", { className: "mt-1 text-xs opacity-75", children: state.error.message })] }) })), children && (_jsx("div", { className: "pointer-events-none absolute inset-0", children: typeof children === "function"
101
- ? children({ state, controls, mediaType: detectedMediaType })
102
- : children })), process.env.NODE_ENV === 'development' && enablePerformanceMonitoring && (_jsxs("div", { className: "absolute bottom-2 left-2 rounded bg-black/50 px-2 py-1 text-white text-xs", children: [_jsxs("div", { children: ["FPS: ", performanceMetrics.frameRate || 0] }), _jsxs("div", { children: ["Memory: ", memoryStats.usage.toFixed(1), "MB"] }), _jsxs("div", { children: ["Type: ", detectedMediaType] }), isEnhanced && _jsx("div", { children: "Enhanced \u2713" })] }))] }) }));
103
- });
104
- BaseMediaPlayer.displayName = "BaseMediaPlayer";
@@ -1 +0,0 @@
1
- {"version":3,"file":"media-player.d.ts","sourceRoot":"","sources":["media-player.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAEnD,MAAM,WAAW,uBAAwB,SAAQ,gBAAgB;IAEhE,SAAS,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,CAAA;IAGtC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CACxB;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,WAAW,oHAEtB,CAAA;AAIF;;GAEG;AACH,eAAO,MAAM,WAAW,oHAUtB,CAAA;AAIF;;GAEG;AACH,eAAO,MAAM,WAAW,oHAStB,CAAA"}
@@ -1,41 +0,0 @@
1
- /**
2
- * Unified MediaPlayer - The primary media player component
3
- * Consolidates MediaPlayer, VideoPlayer, and AudioPlayer into one component
4
- */
5
- "use client";
6
- import { jsx as _jsx } from "react/jsx-runtime";
7
- import { forwardRef } from "react";
8
- import { BaseMediaPlayer } from "./base-media-player";
9
- /**
10
- * The primary MediaPlayer component
11
- *
12
- * @example
13
- * // Video player (auto-detected)
14
- * <MediaPlayer src="/video.mp4" poster="/poster.jpg" />
15
- *
16
- * @example
17
- * // Audio player (auto-detected)
18
- * <MediaPlayer src="/audio.mp3" />
19
- *
20
- * @example
21
- * // Explicit media type
22
- * <MediaPlayer src="/media.mp4" mediaType="video" />
23
- */
24
- export const MediaPlayer = forwardRef((props, ref) => {
25
- return _jsx(BaseMediaPlayer, { ...props, ref: ref });
26
- });
27
- MediaPlayer.displayName = "MediaPlayer";
28
- /**
29
- * Video-specific component with video defaults
30
- */
31
- export const VideoPlayer = forwardRef((props, ref) => {
32
- return (_jsx(BaseMediaPlayer, { ...props, ref: ref, mediaType: "video", aspectRatio: props.aspectRatio || "16/9", showControls: props.showControls ?? true }));
33
- });
34
- VideoPlayer.displayName = "VideoPlayer";
35
- /**
36
- * Audio-specific component with audio defaults
37
- */
38
- export const AudioPlayer = forwardRef((props, ref) => {
39
- return (_jsx(BaseMediaPlayer, { ...props, ref: ref, mediaType: "audio", showControls: props.showControls ?? true }));
40
- });
41
- AudioPlayer.displayName = "AudioPlayer";
@@ -1 +0,0 @@
1
- {"version":3,"file":"AccessibleMinimalPlayer.d.ts","sourceRoot":"","sources":["AccessibleMinimalPlayer.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAY1C,MAAM,WAAW,4BAA4B;IAC3C,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACtB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,aAAa,CAAA;IACxC,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,YAAY,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5C,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACzC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;IAChC,SAAS,CAAC,EAAE;QACV,GAAG,EAAE,MAAM,CAAA;QACX,QAAQ,CAAC,EAAE,UAAU,GAAG,WAAW,GAAG,aAAa,GAAG,cAAc,CAAA;QACpE,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAA;KACpC,CAAA;IACD,SAAS,CAAC,EAAE,KAAK,CAAC;QAChB,GAAG,EAAE,MAAM,CAAA;QACX,OAAO,EAAE,MAAM,CAAA;QACf,OAAO,CAAC,EAAE,OAAO,CAAA;KAClB,CAAC,CAAA;IACF,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB,uBAAuB,CAAC,EAAE,OAAO,CAAA;IACjC,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,wBAAgB,uBAAuB,CAAC,EACtC,GAAG,EACH,MAAM,EACN,QAAgB,EAChB,KAAa,EACb,IAAY,EACZ,gBAAuB,EACvB,SAAgB,EAChB,KAAc,EACd,WAAW,EACX,oBAA2B,EAC3B,kBAAyB,EACzB,SAAS,EACT,MAAM,EACN,OAAO,EACP,OAAO,EACP,YAAY,EACZ,cAAc,EACd,MAAM,EACN,OAAO,EACP,SAAS,EACT,SAAS,EACT,mBAA2B,EAC3B,gBAAwB,EACxB,UAAU,EACV,uBAA8B,EAC9B,sBAA6B,EAC7B,SAA0B,EAC1B,eAAe,GAChB,EAAE,4BAA4B,2CAqd9B"}