@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,64 +0,0 @@
1
- "use client";
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import React from "react";
4
- import { useMediaSelector, useMediaDispatch, MediaActionTypes } from "../../context/media-context";
5
- import { cn } from "../../lib/utils";
6
- import { formatTime } from "../../lib/format-time";
7
- // Quality selector component
8
- export const QualitySelector = function QualitySelector({ qualities, currentQuality, onQualityChange, className }) {
9
- const [isOpen, setIsOpen] = React.useState(false);
10
- const currentQualityLabel = React.useMemo(() => {
11
- return qualities.find(q => q.id === currentQuality)?.label || "Auto";
12
- }, [qualities, currentQuality]);
13
- return (_jsxs("div", { className: cn("relative", className), children: [_jsxs("button", { type: "button", onClick: () => setIsOpen(!isOpen), className: "flex items-center gap-2 rounded-lg bg-black/50 px-3 py-2 text-white transition-colors hover:bg-black/70", "aria-label": "Select quality", children: [_jsx("svg", { viewBox: "0 0 24 24", fill: "currentColor", className: "h-4 w-4", children: _jsx("path", { d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z" }) }), _jsx("span", { className: "text-sm", children: currentQualityLabel }), _jsx("svg", { viewBox: "0 0 24 24", fill: "currentColor", className: cn("h-4 w-4 transition-transform", isOpen && "rotate-180"), children: _jsx("path", { d: "M7 10l5 5 5-5z" }) })] }), isOpen && (_jsx("div", { className: "absolute right-0 bottom-full mb-2 min-w-32 rounded-lg border border-white/20 bg-black/90 py-2 backdrop-blur-sm", children: qualities.map((quality) => (_jsxs("button", { onClick: () => {
14
- onQualityChange(quality.id);
15
- setIsOpen(false);
16
- }, className: cn("w-full px-4 py-2 text-left text-sm text-white transition-colors hover:bg-white/10", quality.id === currentQuality && "bg-primary/20 text-primary"), children: [quality.label, quality.bitrate && (_jsxs("span", { className: "ml-2 text-white/60 text-xs", children: ["(", Math.round(quality.bitrate / 1000), "k)"] }))] }, quality.id))) }))] }));
17
- };
18
- // Subtitle selector component
19
- export const SubtitleSelector = function SubtitleSelector({ subtitles, currentSubtitle, onSubtitleChange, className }) {
20
- const [isOpen, setIsOpen] = React.useState(false);
21
- const currentSubtitleLabel = React.useMemo(() => {
22
- if (!currentSubtitle)
23
- return "Off";
24
- return subtitles.find(s => s.id === currentSubtitle)?.label || "Off";
25
- }, [subtitles, currentSubtitle]);
26
- return (_jsxs("div", { className: cn("relative", className), children: [_jsxs("button", { type: "button", onClick: () => setIsOpen(!isOpen), className: "flex items-center gap-2 rounded-lg bg-black/50 px-3 py-2 text-white transition-colors hover:bg-black/70", "aria-label": "Select subtitles", children: [_jsx("svg", { viewBox: "0 0 24 24", fill: "currentColor", className: "h-4 w-4", children: _jsx("path", { d: "M20 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zM4 12h4v2H4v-2zm10 6H4v-2h10v2zm6 0h-4v-2h4v2zm0-4H10v-2h10v2z" }) }), _jsx("span", { className: "text-sm", children: currentSubtitleLabel }), _jsx("svg", { viewBox: "0 0 24 24", fill: "currentColor", className: cn("h-4 w-4 transition-transform", isOpen && "rotate-180"), children: _jsx("path", { d: "M7 10l5 5 5-5z" }) })] }), isOpen && (_jsxs("div", { className: "absolute right-0 bottom-full mb-2 min-w-32 rounded-lg border border-white/20 bg-black/90 py-2 backdrop-blur-sm", children: [_jsx("button", { onClick: () => {
27
- onSubtitleChange(null);
28
- setIsOpen(false);
29
- }, className: cn("w-full px-4 py-2 text-left text-sm text-white transition-colors hover:bg-white/10", !currentSubtitle && "bg-primary/20 text-primary"), children: "Off" }), subtitles.map((subtitle) => (_jsx("button", { onClick: () => {
30
- onSubtitleChange(subtitle.id);
31
- setIsOpen(false);
32
- }, className: cn("w-full px-4 py-2 text-left text-sm text-white transition-colors hover:bg-white/10", subtitle.id === currentSubtitle && "bg-primary/20 text-primary"), children: subtitle.label }, subtitle.id)))] }))] }));
33
- };
34
- // Playback speed selector
35
- export const PlaybackSpeedSelector = function PlaybackSpeedSelector({ className }) {
36
- const dispatch = useMediaDispatch();
37
- const playbackRate = useMediaSelector(state => state.playbackRate);
38
- const [isOpen, setIsOpen] = React.useState(false);
39
- const speeds = [0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2];
40
- const handleSpeedChange = React.useCallback((speed) => {
41
- dispatch({ type: MediaActionTypes.SET_PLAYBACK_RATE, detail: speed });
42
- setIsOpen(false);
43
- }, [dispatch]);
44
- return (_jsxs("div", { className: cn("relative", className), children: [_jsxs("button", { type: "button", onClick: () => setIsOpen(!isOpen), className: "flex items-center gap-2 rounded-lg bg-black/50 px-3 py-2 text-white transition-colors hover:bg-black/70", "aria-label": "Select playback speed", children: [_jsx("svg", { viewBox: "0 0 24 24", fill: "currentColor", className: "h-4 w-4", children: _jsx("path", { d: "M13,8A4,4 0 0,0 9,12A4,4 0 0,0 13,16A4,4 0 0,0 17,12A4,4 0 0,0 13,8M13,14A2,2 0 0,1 11,12A2,2 0 0,1 13,10A2,2 0 0,1 15,12A2,2 0 0,1 13,14M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4Z" }) }), _jsxs("span", { className: "text-sm", children: [playbackRate, "x"] }), _jsx("svg", { viewBox: "0 0 24 24", fill: "currentColor", className: cn("h-4 w-4 transition-transform", isOpen && "rotate-180"), children: _jsx("path", { d: "M7 10l5 5 5-5z" }) })] }), isOpen && (_jsx("div", { className: "absolute right-0 bottom-full mb-2 min-w-20 rounded-lg border border-white/20 bg-black/90 py-2 backdrop-blur-sm", children: speeds.map((speed) => (_jsxs("button", { onClick: () => handleSpeedChange(speed), className: cn("w-full px-4 py-2 text-left text-sm text-white transition-colors hover:bg-white/10", speed === playbackRate && "bg-primary/20 text-primary"), children: [speed, "x"] }, speed))) }))] }));
45
- };
46
- // Chapters component
47
- export const ChaptersPanel = function ChaptersPanel({ chapters, onChapterSelect, className }) {
48
- const currentTime = useMediaSelector(state => state.currentTime);
49
- const currentChapter = React.useMemo(() => {
50
- return chapters.find(chapter => currentTime >= chapter.startTime && currentTime < chapter.endTime);
51
- }, [chapters, currentTime]);
52
- return (_jsxs("div", { className: cn("rounded-lg border border-white/20 bg-black/90 p-4 backdrop-blur-sm", className), children: [_jsx("h3", { className: "mb-3 font-semibold text-white", children: "Chapters" }), _jsx("div", { className: "max-h-64 space-y-2 overflow-y-auto", children: chapters.map((chapter) => (_jsxs("button", { onClick: () => onChapterSelect(chapter), className: cn("flex w-full items-center gap-3 rounded-lg p-3 text-left transition-colors", "hover:bg-white/10", chapter.id === currentChapter?.id && "border border-primary/30 bg-primary/20"), children: [chapter.thumbnail && (_jsx("img", { src: chapter.thumbnail, alt: chapter.title, className: "h-9 w-16 rounded object-cover" })), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("div", { className: "truncate font-medium text-white", children: chapter.title }), _jsxs("div", { className: "text-sm text-white/60", children: [formatTime(chapter.startTime), " - ", formatTime(chapter.endTime)] })] })] }, chapter.id))) })] }));
53
- };
54
- // Picture-in-Picture button
55
- export const PictureInPictureButton = function PictureInPictureButton({ className }) {
56
- const dispatch = useMediaDispatch();
57
- const isPictureInPicture = useMediaSelector(state => state.isPictureInPicture);
58
- const handleTogglePiP = React.useCallback(() => {
59
- dispatch({
60
- type: isPictureInPicture ? MediaActionTypes.EXIT_PIP : MediaActionTypes.ENTER_PIP
61
- });
62
- }, [dispatch, isPictureInPicture]);
63
- return (_jsx("button", { type: "button", onClick: handleTogglePiP, className: cn("flex h-10 w-10 items-center justify-center rounded-full text-white", "transition-colors hover:bg-white/10", className), "aria-label": isPictureInPicture ? "Exit Picture-in-Picture" : "Enter Picture-in-Picture", children: _jsx("svg", { viewBox: "0 0 24 24", fill: "currentColor", className: "h-5 w-5", children: _jsx("path", { d: "M19 7h-8v6h8V7zm2-4H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H3V5h18v14z" }) }) }));
64
- };
@@ -1,94 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- /**
3
- * Debug Panel Component for Performance Monitoring
4
- * Development-only component for displaying performance metrics
5
- */
6
- import React, { useMemo } from 'react';
7
- import { cn } from '../../lib/utils';
8
- /**
9
- * Debug Panel Component
10
- */
11
- export const DebugPanel = ({ performanceMetrics = {}, preloadingStats = {}, playbackState = {}, hlsMetrics = {}, pluginInfo = {}, debugInfo = {}, className, position = 'top-right', defaultCollapsed = false, title = 'BaroiPlayer Debug Panel' }) => {
12
- const [isCollapsed, setIsCollapsed] = React.useState(defaultCollapsed);
13
- const [activeTab, setActiveTab] = React.useState('performance');
14
- // Position classes
15
- const positionClasses = useMemo(() => {
16
- switch (position) {
17
- case 'top-left':
18
- return 'top-4 left-4';
19
- case 'top-right':
20
- return 'top-4 right-4';
21
- case 'bottom-left':
22
- return 'bottom-4 left-4';
23
- case 'bottom-right':
24
- return 'bottom-4 right-4';
25
- default:
26
- return 'top-4 right-4';
27
- }
28
- }, [position]);
29
- // Format bytes
30
- const formatBytes = (bytes) => {
31
- if (bytes === 0)
32
- return '0 B';
33
- const k = 1024;
34
- const sizes = ['B', 'KB', 'MB', 'GB'];
35
- const i = Math.floor(Math.log(bytes) / Math.log(k));
36
- return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];
37
- };
38
- // Format time
39
- const formatTime = (seconds) => {
40
- const mins = Math.floor(seconds / 60);
41
- const secs = Math.floor(seconds % 60);
42
- return `${mins}:${secs.toString().padStart(2, '0')}`;
43
- };
44
- // Render performance metrics
45
- const renderPerformanceMetrics = () => (_jsx("div", { className: "space-y-2", children: _jsxs("div", { className: "grid grid-cols-2 gap-2 text-xs", children: [_jsxs("div", { children: [_jsx("span", { className: "text-green-400", children: "FPS:" }), _jsx("span", { className: "ml-2 font-mono", children: performanceMetrics.fps || 0 })] }), _jsxs("div", { children: [_jsx("span", { className: "text-blue-400", children: "Memory:" }), _jsxs("span", { className: "ml-2 font-mono", children: [((performanceMetrics.memoryUsage || 0) / 1024 / 1024).toFixed(1), " MB"] })] }), _jsxs("div", { children: [_jsx("span", { className: "text-yellow-400", children: "Buffer:" }), _jsxs("span", { className: "ml-2 font-mono", children: [(performanceMetrics.bufferHealth || 0).toFixed(2), "s"] })] }), _jsxs("div", { children: [_jsx("span", { className: "text-purple-400", children: "Bandwidth:" }), _jsxs("span", { className: "ml-2 font-mono", children: [formatBytes(performanceMetrics.networkBandwidth || 0), "/s"] })] }), _jsxs("div", { children: [_jsx("span", { className: "text-red-400", children: "Dropped:" }), _jsxs("span", { className: "ml-2 font-mono", children: [performanceMetrics.droppedFrames || 0, " frames"] })] }), _jsxs("div", { children: [_jsx("span", { className: "text-cyan-400", children: "Decoded:" }), _jsxs("span", { className: "ml-2 font-mono", children: [performanceMetrics.decodedFrames || 0, " frames"] })] })] }) }));
46
- // Render playback state
47
- const renderPlaybackState = () => (_jsx("div", { className: "space-y-2", children: _jsxs("div", { className: "grid grid-cols-2 gap-2 text-xs", children: [_jsxs("div", { children: [_jsx("span", { className: "text-green-400", children: "Status:" }), _jsx("span", { className: "ml-2 font-mono", children: playbackState.isPlaying ? (_jsx("span", { className: "text-green-300", children: "Playing" })) : (_jsx("span", { className: "text-red-300", children: "Paused" })) })] }), _jsxs("div", { children: [_jsx("span", { className: "text-blue-400", children: "Time:" }), _jsxs("span", { className: "ml-2 font-mono", children: [formatTime(playbackState.currentTime || 0), " / ", formatTime(playbackState.duration || 0)] })] }), _jsxs("div", { children: [_jsx("span", { className: "text-yellow-400", children: "Volume:" }), _jsxs("span", { className: "ml-2 font-mono", children: [Math.round((playbackState.volume || 0) * 100), "%"] })] }), _jsxs("div", { children: [_jsx("span", { className: "text-purple-400", children: "Quality:" }), _jsxs("span", { className: "ml-2 font-mono", children: [playbackState.quality || 0, "p"] })] }), _jsxs("div", { children: [_jsx("span", { className: "text-red-400", children: "Buffering:" }), _jsx("span", { className: "ml-2 font-mono", children: playbackState.isBuffering ? (_jsx("span", { className: "text-yellow-300", children: "Yes" })) : (_jsx("span", { className: "text-green-300", children: "No" })) })] }), playbackState.error && (_jsxs("div", { className: "col-span-2", children: [_jsx("span", { className: "text-red-400", children: "Error:" }), _jsx("span", { className: "ml-2 break-all font-mono text-red-300 text-xs", children: playbackState.error })] }))] }) }));
48
- // Render preloading stats
49
- const renderPreloadingStats = () => (_jsx("div", { className: "space-y-2", children: _jsxs("div", { className: "grid grid-cols-2 gap-2 text-xs", children: [_jsxs("div", { children: [_jsx("span", { className: "text-green-400", children: "Preloaded:" }), _jsxs("span", { className: "ml-2 font-mono", children: [preloadingStats.preloadedItems || 0, " items"] })] }), _jsxs("div", { children: [_jsx("span", { className: "text-blue-400", children: "Engagement:" }), _jsxs("span", { className: "ml-2 font-mono", children: [(preloadingStats.engagementScore || 0).toFixed(1), "%"] })] }), _jsxs("div", { children: [_jsx("span", { className: "text-yellow-400", children: "Queue:" }), _jsxs("span", { className: "ml-2 font-mono", children: [preloadingStats.queueLength || 0, " items"] })] }), _jsxs("div", { children: [_jsx("span", { className: "text-purple-400", children: "Hit Rate:" }), _jsxs("span", { className: "ml-2 font-mono", children: [(preloadingStats.hitRate || 0).toFixed(1), "%"] })] }), _jsxs("div", { className: "col-span-2", children: [_jsx("span", { className: "text-cyan-400", children: "Saved:" }), _jsx("span", { className: "ml-2 font-mono", children: formatBytes(preloadingStats.totalSaved || 0) })] })] }) }));
50
- // Render HLS metrics
51
- const renderHLSMetrics = () => (_jsx("div", { className: "space-y-2", children: _jsxs("div", { className: "grid grid-cols-2 gap-2 text-xs", children: [_jsxs("div", { children: [_jsx("span", { className: "text-green-400", children: "Level:" }), _jsxs("span", { className: "ml-2 font-mono", children: [hlsMetrics.currentLevel || 0, " / ", hlsMetrics.availableLevels || 0] })] }), _jsxs("div", { children: [_jsx("span", { className: "text-blue-400", children: "Bandwidth:" }), _jsxs("span", { className: "ml-2 font-mono", children: [formatBytes(hlsMetrics.bandwidthEstimate || 0), "/s"] })] }), _jsxs("div", { children: [_jsx("span", { className: "text-red-400", children: "Dropped:" }), _jsxs("span", { className: "ml-2 font-mono", children: [hlsMetrics.droppedFrames || 0, " frames"] })] })] }) }));
52
- // Render plugin info
53
- const renderPluginInfo = () => (_jsx("div", { className: "space-y-2", children: _jsxs("div", { className: "text-xs", children: [_jsxs("div", { children: [_jsx("span", { className: "text-green-400", children: "Total:" }), _jsxs("span", { className: "ml-2 font-mono", children: [pluginInfo.pluginCount || 0, " plugins"] })] }), _jsxs("div", { className: "mt-2", children: [_jsx("span", { className: "text-blue-400", children: "Active:" }), _jsx("div", { className: "ml-2 space-y-1 font-mono text-xs", children: pluginInfo.activePlugins?.map((plugin, index) => (_jsxs("div", { className: "text-green-300", children: ["\u2022 ", plugin] }, index))) || _jsx("div", { className: "text-gray-400", children: "None" }) })] }), pluginInfo.loadedPlugins && pluginInfo.loadedPlugins.length > pluginInfo.activePlugins?.length && (_jsxs("div", { className: "mt-2", children: [_jsx("span", { className: "text-yellow-400", children: "Loaded (inactive):" }), _jsx("div", { className: "ml-2 space-y-1 font-mono text-xs", children: pluginInfo.loadedPlugins
54
- .filter(plugin => !pluginInfo.activePlugins?.includes(plugin))
55
- .map((plugin, index) => (_jsxs("div", { className: "text-yellow-300", children: ["\u2022 ", plugin] }, index))) })] }))] }) }));
56
- // Render debug info
57
- const renderDebugInfo = () => (_jsx("div", { className: "space-y-2", children: _jsx("div", { className: "space-y-1 font-mono text-xs", children: Object.entries(debugInfo).map(([key, value]) => (_jsxs("div", { children: [_jsxs("span", { className: "text-yellow-400", children: [key, ":"] }), _jsx("span", { className: "ml-2 text-gray-300", children: typeof value === 'object' ? JSON.stringify(value, null, 2) : String(value) })] }, key))) }) }));
58
- // Render tabs
59
- const renderTabs = () => (_jsx("div", { className: "flex space-x-1 border-gray-600 border-b", children: [
60
- { id: 'performance', label: 'Performance' },
61
- { id: 'hls', label: 'HLS' },
62
- { id: 'plugins', label: 'Plugins' },
63
- { id: 'debug', label: 'Debug' }
64
- ].map(tab => (_jsx("button", { onClick: () => setActiveTab(tab.id), className: cn("px-2 py-1 font-medium text-xs transition-colors", activeTab === tab.id
65
- ? "border-blue-400 border-b text-blue-400"
66
- : 'text-gray-400 hover:text-white'), children: tab.label }, tab.id))) }));
67
- // Render active tab content
68
- const renderTabContent = () => {
69
- switch (activeTab) {
70
- case 'performance':
71
- return (_jsxs("div", { className: "space-y-3", children: [renderPerformanceMetrics(), _jsx("hr", { className: "border-gray-600" }), renderPlaybackState(), _jsx("hr", { className: "border-gray-600" }), renderPreloadingStats()] }));
72
- case 'hls':
73
- return renderHLSMetrics();
74
- case 'plugins':
75
- return renderPluginInfo();
76
- case 'debug':
77
- return renderDebugInfo();
78
- default:
79
- return renderPerformanceMetrics();
80
- }
81
- };
82
- // Only render in development
83
- if (process.env.NODE_ENV !== 'development') {
84
- return null;
85
- }
86
- return (_jsxs("div", { className: cn("fixed z-50 min-w-80 max-w-96 rounded-lg border border-gray-700 bg-black/90 p-3 font-mono text-white text-xs backdrop-blur-sm", positionClasses, className), children: [_jsxs("div", { className: "mb-3 flex items-center justify-between", children: [_jsx("h3", { className: "font-bold text-blue-400 text-sm", children: title }), _jsx("div", { className: "flex items-center space-x-2", children: _jsx("button", { onClick: () => setIsCollapsed(!isCollapsed), className: "text-gray-400 transition-colors hover:text-white", "aria-label": isCollapsed ? 'Expand' : 'Collapse', children: isCollapsed ? (_jsx("svg", { width: "12", height: "12", viewBox: "0 0 12 12", fill: "none", children: _jsx("path", { d: "M3 4.5L6 7.5L9 4.5", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) })) : (_jsx("svg", { width: "12", height: "12", viewBox: "0 0 12 12", fill: "none", children: _jsx("path", { d: "M3 7.5L6 4.5L9 7.5", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) })) }) })] }), isCollapsed ? (_jsxs("div", { className: "grid grid-cols-2 gap-2 text-xs", children: [_jsxs("div", { children: [_jsx("span", { className: "text-green-400", children: "FPS:" }), _jsx("span", { className: "ml-1 font-mono", children: performanceMetrics.fps || 0 })] }), _jsxs("div", { children: [_jsx("span", { className: "text-blue-400", children: "Memory:" }), _jsxs("span", { className: "ml-1 font-mono", children: [((performanceMetrics.memoryUsage || 0) / 1024 / 1024).toFixed(1), "MB"] })] })] })) : (_jsxs(_Fragment, { children: [renderTabs(), _jsx("div", { className: "mt-3 max-h-64 overflow-y-auto", children: renderTabContent() })] }))] }));
87
- };
88
- /**
89
- * Performance Debug Panel - simplified version focused on performance metrics
90
- */
91
- export const PerformanceDebugPanel = (props) => {
92
- return (_jsx(DebugPanel, { ...props, position: "top-right", defaultCollapsed: false, title: "Performance Monitor" }));
93
- };
94
- export default DebugPanel;
@@ -1,233 +0,0 @@
1
- "use client";
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import React from "react";
4
- import { useMediaSelector, useMediaDispatch, MediaActionTypes } from "../../context/media-context";
5
- import { cn } from "../../lib/utils";
6
- import { formatTime } from "../../lib/format-time";
7
- // Enhanced play button with better animations
8
- export const EnhancedPlayButton = function EnhancedPlayButton({ className, size = "md" }) {
9
- const dispatch = useMediaDispatch();
10
- const isPlaying = useMediaSelector(state => state.isPlaying);
11
- const isLoading = useMediaSelector(state => state.isLoading);
12
- const sizeClasses = {
13
- sm: "h-8 w-8",
14
- md: "h-10 w-10",
15
- lg: "h-12 w-12",
16
- xl: "h-16 w-16"
17
- };
18
- const iconSizes = {
19
- sm: "h-4 w-4",
20
- md: "h-5 w-5",
21
- lg: "h-6 w-6",
22
- xl: "h-8 w-8"
23
- };
24
- const handleClick = React.useCallback(() => {
25
- dispatch({
26
- type: isPlaying ? MediaActionTypes.PAUSE : MediaActionTypes.PLAY
27
- });
28
- }, [dispatch, isPlaying]);
29
- return (_jsx("button", { type: "button", onClick: handleClick, disabled: isLoading, className: cn("group relative flex items-center justify-center rounded-full bg-white/10 backdrop-blur-sm", "border border-white/20 text-white transition-all duration-200", "hover:scale-105 hover:bg-white/20 active:scale-95", "focus:outline-none focus:ring-2 focus:ring-white/50", "disabled:cursor-not-allowed disabled:opacity-50", sizeClasses[size], className), "aria-label": isPlaying ? "Pause" : "Play", children: isLoading ? (_jsx("div", { className: cn("animate-spin rounded-full border-2 border-white/30 border-t-white", iconSizes[size]) })) : (_jsx("div", { className: cn("transition-transform duration-200", iconSizes[size]), children: isPlaying ? (_jsx("svg", { viewBox: "0 0 24 24", fill: "currentColor", className: "h-full w-full", children: _jsx("path", { d: "M6 4h4v16H6V4zm8 0h4v16h-4V4z" }) })) : (_jsx("svg", { viewBox: "0 0 24 24", fill: "currentColor", className: "ml-0.5 h-full w-full", children: _jsx("path", { d: "M8 5v14l11-7z" }) })) })) }));
30
- };
31
- // Enhanced seek bar with preview and better touch support
32
- export const EnhancedSeekBar = function EnhancedSeekBar({ className }) {
33
- const dispatch = useMediaDispatch();
34
- const currentTime = useMediaSelector(state => state.currentTime);
35
- const duration = useMediaSelector(state => state.duration);
36
- const buffered = useMediaSelector(state => state.buffered);
37
- const previewTime = useMediaSelector(state => state.previewTime);
38
- const [isDragging, setIsDragging] = React.useState(false);
39
- const [hoverTime, setHoverTime] = React.useState(null);
40
- const progressRef = React.useRef(null);
41
- const progress = duration > 0 ? (currentTime / duration) * 100 : 0;
42
- const previewProgress = duration > 0 && previewTime !== null ? (previewTime / duration) * 100 : null;
43
- // Calculate buffered ranges
44
- const bufferedRanges = React.useMemo(() => {
45
- if (!buffered || duration === 0)
46
- return [];
47
- const ranges = [];
48
- for (let i = 0; i < buffered.length; i++) {
49
- ranges.push({
50
- start: (buffered.start(i) / duration) * 100,
51
- end: (buffered.end(i) / duration) * 100
52
- });
53
- }
54
- return ranges;
55
- }, [buffered, duration]);
56
- const getTimeFromPosition = React.useCallback((clientX) => {
57
- if (!progressRef.current)
58
- return 0;
59
- const rect = progressRef.current.getBoundingClientRect();
60
- const position = Math.max(0, Math.min(1, (clientX - rect.left) / rect.width));
61
- return position * duration;
62
- }, [duration]);
63
- const handleMouseMove = React.useCallback((e) => {
64
- if (!isDragging) {
65
- const time = getTimeFromPosition(e.clientX);
66
- setHoverTime(time);
67
- dispatch({ type: MediaActionTypes.PREVIEW_TIME, detail: time });
68
- }
69
- }, [isDragging, getTimeFromPosition, dispatch]);
70
- const handleMouseLeave = React.useCallback(() => {
71
- if (!isDragging) {
72
- setHoverTime(null);
73
- dispatch({ type: MediaActionTypes.CLEAR_PREVIEW });
74
- }
75
- }, [isDragging, dispatch]);
76
- const handleMouseDown = React.useCallback((e) => {
77
- setIsDragging(true);
78
- const time = getTimeFromPosition(e.clientX);
79
- dispatch({ type: MediaActionTypes.SEEK, detail: time });
80
- }, [getTimeFromPosition, dispatch]);
81
- const handleTouchStart = React.useCallback((e) => {
82
- setIsDragging(true);
83
- const time = getTimeFromPosition(e.touches[0]?.clientX || 0);
84
- dispatch({ type: MediaActionTypes.SEEK, detail: time });
85
- }, [getTimeFromPosition, dispatch]);
86
- React.useEffect(() => {
87
- const handleMouseMove = (e) => {
88
- if (isDragging) {
89
- const time = getTimeFromPosition(e.clientX);
90
- dispatch({ type: MediaActionTypes.SEEK, detail: time });
91
- }
92
- };
93
- const handleMouseUp = () => {
94
- setIsDragging(false);
95
- setHoverTime(null);
96
- dispatch({ type: MediaActionTypes.CLEAR_PREVIEW });
97
- };
98
- const handleTouchMove = (e) => {
99
- if (isDragging) {
100
- const time = getTimeFromPosition(e.touches[0]?.clientX || 0);
101
- dispatch({ type: MediaActionTypes.SEEK, detail: time });
102
- }
103
- };
104
- if (isDragging) {
105
- document.addEventListener('mousemove', handleMouseMove);
106
- document.addEventListener('mouseup', handleMouseUp);
107
- document.addEventListener('touchmove', handleTouchMove);
108
- document.addEventListener('touchend', handleMouseUp);
109
- }
110
- return () => {
111
- document.removeEventListener('mousemove', handleMouseMove);
112
- document.removeEventListener('mouseup', handleMouseUp);
113
- document.removeEventListener('touchmove', handleTouchMove);
114
- document.removeEventListener('touchend', handleMouseUp);
115
- };
116
- }, [isDragging, getTimeFromPosition, dispatch]);
117
- return (_jsxs("div", { className: cn("group relative flex items-center", className), children: [(hoverTime !== null || previewTime !== null) && (_jsx("div", { className: "pointer-events-none absolute bottom-full mb-2 rounded bg-black/80 px-2 py-1 text-white text-xs", style: {
118
- left: `${previewProgress || ((hoverTime || 0) / duration) * 100}%`,
119
- transform: 'translateX(-50%)'
120
- }, children: formatTime(hoverTime || previewTime || 0) })), _jsxs("div", { ref: progressRef, className: "relative h-2 w-full cursor-pointer rounded-full bg-white/20 transition-all duration-200 group-hover:h-3", onMouseMove: handleMouseMove, onMouseLeave: handleMouseLeave, onMouseDown: handleMouseDown, onTouchStart: handleTouchStart, children: [bufferedRanges.map((range, index) => (_jsx("div", { className: "absolute top-0 h-full rounded-full bg-white/30", style: {
121
- left: `${range.start}%`,
122
- width: `${range.end - range.start}%`
123
- } }, index))), _jsx("div", { className: "absolute top-0 h-full rounded-full bg-primary transition-all duration-100", style: { width: `${progress}%` } }), previewProgress !== null && (_jsx("div", { className: "absolute top-0 h-full w-1 rounded-full bg-white/80", style: { left: `${previewProgress}%` } })), _jsx("div", { className: "-translate-y-1/2 absolute top-1/2 h-4 w-4 rounded-full border-2 border-white bg-primary opacity-0 shadow-lg transition-all duration-200 group-hover:opacity-100", style: { left: `${progress}%`, transform: 'translateX(-50%) translateY(-50%)' } })] })] }));
124
- };
125
- // Enhanced volume control with better UX
126
- export const EnhancedVolumeControl = function EnhancedVolumeControl({ className }) {
127
- const dispatch = useMediaDispatch();
128
- const volume = useMediaSelector(state => state.volume);
129
- const isMuted = useMediaSelector(state => state.isMuted);
130
- const [showSlider, setShowSlider] = React.useState(false);
131
- const handleToggleMute = React.useCallback(() => {
132
- dispatch({ type: MediaActionTypes.TOGGLE_MUTE });
133
- }, [dispatch]);
134
- const handleVolumeChange = React.useCallback((newVolume) => {
135
- dispatch({ type: MediaActionTypes.SET_VOLUME, detail: newVolume });
136
- }, [dispatch]);
137
- const VolumeIcon = React.useMemo(() => {
138
- if (isMuted || volume === 0) {
139
- return (_jsx("svg", { viewBox: "0 0 24 24", fill: "currentColor", className: "h-5 w-5", children: _jsx("path", { d: "M16.5 12c0-1.77-1.02-3.29-2.5-4.03v2.21l2.45 2.45c.03-.2.05-.41.05-.63zm2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51C20.63 14.91 21 13.5 21 12c0-4.28-2.99-7.86-7-8.77v2.06c2.89.86 5 3.54 5 6.71zM4.27 3L3 4.27 7.73 9H3v6h4l5 5v-6.73l4.25 4.25c-.67.52-1.42.93-2.25 1.18v2.06c1.38-.31 2.63-.95 3.69-1.81L19.73 21 21 19.73l-9-9L4.27 3zM12 4L9.91 6.09 12 8.18V4z" }) }));
140
- }
141
- else if (volume < 0.5) {
142
- return (_jsx("svg", { viewBox: "0 0 24 24", fill: "currentColor", className: "h-5 w-5", children: _jsx("path", { d: "M18.5 12c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM5 9v6h4l5 5V4L9 9H5z" }) }));
143
- }
144
- else {
145
- return (_jsx("svg", { viewBox: "0 0 24 24", fill: "currentColor", className: "h-5 w-5", children: _jsx("path", { d: "M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77z" }) }));
146
- }
147
- }, [isMuted, volume]);
148
- return (_jsxs("div", { className: cn("relative flex items-center", className), onMouseEnter: () => setShowSlider(true), onMouseLeave: () => setShowSlider(false), children: [_jsx("button", { type: "button", onClick: handleToggleMute, className: "flex h-10 w-10 items-center justify-center rounded-full text-white transition-colors hover:bg-white/10", "aria-label": isMuted ? "Unmute" : "Mute", children: VolumeIcon }), _jsx("div", { className: cn("absolute left-full ml-2 flex items-center transition-all duration-200", showSlider ? "translate-x-0 opacity-100" : "-translate-x-2 pointer-events-none opacity-0"), children: _jsx("input", { type: "range", min: "0", max: "1", step: "0.01", value: isMuted ? 0 : volume, onChange: (e) => handleVolumeChange(parseFloat(e.target.value)), className: "slider h-1 w-20 cursor-pointer appearance-none rounded-lg bg-white/20" }) })] }));
149
- };
150
- // Enhanced backward skip button
151
- export const EnhancedBackwardButton = function EnhancedBackwardButton({ className, size = "md", skipTime = 10 }) {
152
- const dispatch = useMediaDispatch();
153
- const currentTime = useMediaSelector(state => state.currentTime);
154
- const sizeClasses = {
155
- sm: "h-8 w-8",
156
- md: "h-10 w-10",
157
- lg: "h-12 w-12"
158
- };
159
- const iconSizes = {
160
- sm: "h-4 w-4",
161
- md: "h-5 w-5",
162
- lg: "h-6 w-6"
163
- };
164
- const handleClick = React.useCallback(() => {
165
- const newTime = Math.max(0, currentTime - skipTime);
166
- dispatch({ type: MediaActionTypes.SEEK, detail: newTime });
167
- }, [dispatch, currentTime, skipTime]);
168
- return (_jsx("button", { type: "button", onClick: handleClick, className: cn("group relative flex items-center justify-center rounded-full bg-white/10 backdrop-blur-sm", "border border-white/20 text-white transition-all duration-200", "hover:scale-105 hover:bg-white/20 active:scale-95", "focus:outline-none focus:ring-2 focus:ring-white/50", sizeClasses[size], className), "aria-label": `Backward ${skipTime} seconds`, title: `Backward ${skipTime}s`, children: _jsxs("div", { className: cn("flex items-center transition-transform duration-200", iconSizes[size]), children: [_jsxs("svg", { viewBox: "0 0 24 24", fill: "currentColor", className: "h-full w-full", children: [_jsx("path", { d: "M7 6c.55 0 1 .45 1 1v10c0 .55-.45 1-1 1s-1-.45-1-1V7c0-.55.45-1 1-1zM15.5 7.5c0-.83-.67-1.5-1.5-1.5s-1.5.67-1.5 1.5v9c0 .83.67 1.5 1.5 1.5s1.5-.67 1.5-1.5v-9z" }), _jsx("path", { d: "M5.5 12l7-4.5v9l-7-4.5z", opacity: "0.8" })] }), skipTime && (_jsx("span", { className: "-bottom-1 absolute font-bold text-[10px]", children: skipTime }))] }) }));
169
- };
170
- // Enhanced forward skip button
171
- export const EnhancedForwardButton = function EnhancedForwardButton({ className, size = "md", skipTime = 10 }) {
172
- const dispatch = useMediaDispatch();
173
- const currentTime = useMediaSelector(state => state.currentTime);
174
- const duration = useMediaSelector(state => state.duration);
175
- const sizeClasses = {
176
- sm: "h-8 w-8",
177
- md: "h-10 w-10",
178
- lg: "h-12 w-12"
179
- };
180
- const iconSizes = {
181
- sm: "h-4 w-4",
182
- md: "h-5 w-5",
183
- lg: "h-6 w-6"
184
- };
185
- const handleClick = React.useCallback(() => {
186
- const newTime = Math.min(duration, currentTime + skipTime);
187
- dispatch({ type: MediaActionTypes.SEEK, detail: newTime });
188
- }, [dispatch, currentTime, duration, skipTime]);
189
- return (_jsx("button", { type: "button", onClick: handleClick, className: cn("group relative flex items-center justify-center rounded-full bg-white/10 backdrop-blur-sm", "border border-white/20 text-white transition-all duration-200", "hover:scale-105 hover:bg-white/20 active:scale-95", "focus:outline-none focus:ring-2 focus:ring-white/50", sizeClasses[size], className), "aria-label": `Forward ${skipTime} seconds`, title: `Forward ${skipTime}s`, children: _jsxs("div", { className: cn("flex items-center transition-transform duration-200", iconSizes[size]), children: [_jsxs("svg", { viewBox: "0 0 24 24", fill: "currentColor", className: "h-full w-full", children: [_jsx("path", { d: "M17 6c.55 0 1 .45 1 1v10c0 .55-.45 1-1 1s-1-.45-1-1V7c0-.55.45-1 1-1zM8.5 7.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5v9c0 .83-.67 1.5-1.5 1.5s-1.5-.67-1.5-1.5v-9z" }), _jsx("path", { d: "M18.5 12l-7-4.5v9l7-4.5z", opacity: "0.8" })] }), skipTime && (_jsx("span", { className: "-bottom-1 absolute font-bold text-[10px]", children: skipTime }))] }) }));
190
- };
191
- // Enhanced time display
192
- export const EnhancedTimeDisplay = function EnhancedTimeDisplay({ variant = "current", className }) {
193
- const currentTime = useMediaSelector(state => state.currentTime);
194
- const duration = useMediaSelector(state => state.duration);
195
- const displayTime = React.useMemo(() => {
196
- switch (variant) {
197
- case "current":
198
- return formatTime(currentTime);
199
- case "duration":
200
- return formatTime(duration);
201
- case "remaining":
202
- return `-${formatTime(duration - currentTime)}`;
203
- default:
204
- return formatTime(currentTime);
205
- }
206
- }, [variant, currentTime, duration]);
207
- return (_jsx("div", { className: cn("font-mono text-sm text-white tabular-nums", className), children: displayTime }));
208
- };
209
- // Performance indicator component
210
- export const PerformanceIndicator = function PerformanceIndicator({ metrics, className }) {
211
- if (!metrics || process.env.NODE_ENV !== 'development') {
212
- return null;
213
- }
214
- const getPerformanceColor = (fps) => {
215
- if (fps >= 50)
216
- return 'text-green-400';
217
- if (fps >= 30)
218
- return 'text-yellow-400';
219
- return 'text-red-400';
220
- };
221
- const getBufferColor = (health) => {
222
- if (health >= 5)
223
- return 'text-green-400';
224
- if (health >= 2)
225
- return 'text-yellow-400';
226
- return 'text-red-400';
227
- };
228
- return (_jsxs("div", { className: cn("flex items-center gap-3 font-mono text-xs", className), children: [metrics.fps !== undefined && (_jsxs("div", { className: cn("flex items-center gap-1", getPerformanceColor(metrics.fps)), children: [_jsx("div", { className: "h-2 w-2 rounded-full bg-current" }), _jsxs("span", { children: [metrics.fps, " FPS"] })] })), metrics.bufferHealth !== undefined && (_jsxs("div", { className: cn("flex items-center gap-1", getBufferColor(metrics.bufferHealth)), children: [_jsx("div", { className: "h-2 w-2 rounded-full bg-current" }), _jsxs("span", { children: [metrics.bufferHealth.toFixed(1), "s"] })] })), metrics.quality !== undefined && (_jsxs("div", { className: "flex items-center gap-1 text-blue-400", children: [_jsx("div", { className: "h-2 w-2 rounded-full bg-current" }), _jsxs("span", { children: [metrics.quality, "p"] })] }))] }));
229
- };
230
- // Enhanced control bar that combines all controls
231
- export const EnhancedControlBar = function EnhancedControlBar({ className, showSkipButtons = true, showVolumeControl = true, showTimeDisplay = true, playButtonSize = "xl", skipButtonSize = "md", skipTime = 10, showPerformanceIndicators = process.env.NODE_ENV === 'development', performanceMetrics }) {
232
- return (_jsxs("div", { className: cn("flex flex-col gap-4 bg-gradient-to-t from-black/80 to-transparent p-4", className), children: [_jsx(EnhancedSeekBar, { className: "w-full" }), _jsxs("div", { className: "flex items-center justify-between", children: [_jsxs("div", { className: "flex items-center gap-3", children: [showSkipButtons && (_jsx(EnhancedBackwardButton, { size: skipButtonSize, skipTime: skipTime, className: "shrink-0" })), _jsx(EnhancedPlayButton, { size: playButtonSize, className: "shrink-0" }), showSkipButtons && (_jsx(EnhancedForwardButton, { size: skipButtonSize, skipTime: skipTime, className: "shrink-0" })), showVolumeControl && (_jsx(EnhancedVolumeControl, { className: "shrink-0" })), showTimeDisplay && (_jsxs("div", { className: "flex items-center gap-1 font-mono text-sm", children: [_jsx(EnhancedTimeDisplay, { variant: "current" }), _jsx("span", { className: "text-white/60", children: "/" }), _jsx(EnhancedTimeDisplay, { variant: "duration" })] }))] }), _jsx("div", { className: "flex items-center gap-2", children: showPerformanceIndicators && (_jsx(PerformanceIndicator, { metrics: performanceMetrics, className: "text-white/80" })) })] })] }));
233
- };