@therealtinhtute/baroiplayer 1.0.6 → 1.0.8

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 (597) hide show
  1. package/dist/index.d.ts +1 -1
  2. package/dist/index.js +1 -7
  3. package/dist/index.mjs +1 -2
  4. package/dist/package.json +1 -1
  5. package/package.json +1 -1
  6. package/dist/context/media.js +0 -2
  7. package/dist/context/media.js.map +0 -1
  8. package/dist/context/media.mjs +0 -15
  9. package/dist/context/media.mjs.map +0 -1
  10. package/dist/context/store.js +0 -2
  11. package/dist/context/store.js.map +0 -1
  12. package/dist/context/store.mjs +0 -5
  13. package/dist/context/store.mjs.map +0 -1
  14. package/dist/context-Af84FynT.js +0 -1179
  15. package/dist/context-Af84FynT.js.map +0 -1
  16. package/dist/context-CwZnPdz0.cjs +0 -23
  17. package/dist/context-CwZnPdz0.cjs.map +0 -1
  18. package/dist/core-events-B5W_j8yU.js +0 -480
  19. package/dist/core-events-B5W_j8yU.js.map +0 -1
  20. package/dist/core-events-CN0-Vhhq.cjs +0 -2
  21. package/dist/core-events-CN0-Vhhq.cjs.map +0 -1
  22. package/dist/core-plugins-Bq9KLany.js +0 -696
  23. package/dist/core-plugins-Bq9KLany.js.map +0 -1
  24. package/dist/core-plugins-CPDSHMiQ.cjs +0 -2
  25. package/dist/core-plugins-CPDSHMiQ.cjs.map +0 -1
  26. package/dist/core.js +0 -37
  27. package/dist/core.js.map +0 -1
  28. package/dist/core.mjs +0 -1217
  29. package/dist/core.mjs.map +0 -1
  30. package/dist/enhanced-components-CXnYiOt6.cjs +0 -2
  31. package/dist/enhanced-components-CXnYiOt6.cjs.map +0 -1
  32. package/dist/enhanced-components-Da0TSvKe.js +0 -1073
  33. package/dist/enhanced-components-Da0TSvKe.js.map +0 -1
  34. package/dist/hooks-BCMilGRf.cjs +0 -4
  35. package/dist/hooks-BCMilGRf.cjs.map +0 -1
  36. package/dist/hooks-BPtHV1ZT.js +0 -2042
  37. package/dist/hooks-BPtHV1ZT.js.map +0 -1
  38. package/dist/index.js.map +0 -1
  39. package/dist/index.mjs.map +0 -1
  40. package/dist/minimal-components-BHJMuaL7.cjs +0 -2
  41. package/dist/minimal-components-BHJMuaL7.cjs.map +0 -1
  42. package/dist/minimal-components-BmqRefl1.js +0 -2002
  43. package/dist/minimal-components-BmqRefl1.js.map +0 -1
  44. package/dist/mona-loading.gif +0 -0
  45. package/dist/performance-monitor--rzKTlbj.js +0 -302
  46. package/dist/performance-monitor--rzKTlbj.js.map +0 -1
  47. package/dist/performance-monitor-cjIvZE2D.cjs +0 -2
  48. package/dist/performance-monitor-cjIvZE2D.cjs.map +0 -1
  49. package/dist/src/adapters/videojs-adapter.d.ts.map +0 -1
  50. package/dist/src/adapters/videojs-adapter.js +0 -350
  51. package/dist/src/assets/mona-loading.gif +0 -0
  52. package/dist/src/components/AnimateLoading.d.ts.map +0 -1
  53. package/dist/src/components/AnimateLoading.js +0 -41
  54. package/dist/src/components/LoadingState.d.ts.map +0 -1
  55. package/dist/src/components/LoadingState.js +0 -111
  56. package/dist/src/components/accessibility/keyboard-help-overlay.d.ts.map +0 -1
  57. package/dist/src/components/accessibility/keyboard-help-overlay.js +0 -90
  58. package/dist/src/components/audio-player.d.ts.map +0 -1
  59. package/dist/src/components/audio-player.js +0 -31
  60. package/dist/src/components/basic/index.d.ts.map +0 -1
  61. package/dist/src/components/basic/index.js +0 -29
  62. package/dist/src/components/enhanced/advanced-features.d.ts.map +0 -1
  63. package/dist/src/components/enhanced/advanced-features.js +0 -64
  64. package/dist/src/components/enhanced/debug-panel.d.ts.map +0 -1
  65. package/dist/src/components/enhanced/debug-panel.js +0 -94
  66. package/dist/src/components/enhanced/enhanced-controls.d.ts.map +0 -1
  67. package/dist/src/components/enhanced/enhanced-controls.js +0 -233
  68. package/dist/src/components/enhanced/enhanced-media-player.d.ts.map +0 -1
  69. package/dist/src/components/enhanced/enhanced-media-player.js +0 -316
  70. package/dist/src/components/enhanced/error-handling.d.ts.map +0 -1
  71. package/dist/src/components/enhanced/error-handling.js +0 -153
  72. package/dist/src/components/enhanced/index.d.ts.map +0 -1
  73. package/dist/src/components/enhanced/index.js +0 -10
  74. package/dist/src/components/enhanced/media-player-enhanced.d.ts.map +0 -1
  75. package/dist/src/components/enhanced/media-player-enhanced.js +0 -250
  76. package/dist/src/components/examples/basic-video-player.d.ts.map +0 -1
  77. package/dist/src/components/examples/basic-video-player.js +0 -16
  78. package/dist/src/components/examples/custom-controls-example.d.ts.map +0 -1
  79. package/dist/src/components/examples/custom-controls-example.js +0 -12
  80. package/dist/src/components/examples/enhanced-controls-example.d.ts.map +0 -1
  81. package/dist/src/components/examples/enhanced-controls-example.js +0 -18
  82. package/dist/src/components/examples/enhanced-media-player-example.d.ts.map +0 -1
  83. package/dist/src/components/examples/enhanced-media-player-example.js +0 -13
  84. package/dist/src/components/examples/loading-states-demo.d.ts.map +0 -1
  85. package/dist/src/components/examples/loading-states-demo.js +0 -41
  86. package/dist/src/components/examples/react-19-demo.d.ts.map +0 -1
  87. package/dist/src/components/examples/react-19-demo.js +0 -104
  88. package/dist/src/components/examples/volume-orientation-demo.d.ts.map +0 -1
  89. package/dist/src/components/examples/volume-orientation-demo.js +0 -31
  90. package/dist/src/components/icon-demo.d.ts.map +0 -1
  91. package/dist/src/components/icon-demo.js +0 -16
  92. package/dist/src/components/icons/index.d.ts.map +0 -1
  93. package/dist/src/components/icons/index.js +0 -59
  94. package/dist/src/components/icons/svg-icons/ArrowLeftIcon.d.ts.map +0 -1
  95. package/dist/src/components/icons/svg-icons/ArrowLeftIcon.js +0 -3
  96. package/dist/src/components/icons/svg-icons/ArrowRightIcon.d.ts.map +0 -1
  97. package/dist/src/components/icons/svg-icons/ArrowRightIcon.js +0 -3
  98. package/dist/src/components/icons/svg-icons/AudioIcon.d.ts.map +0 -1
  99. package/dist/src/components/icons/svg-icons/AudioIcon.js +0 -4
  100. package/dist/src/components/icons/svg-icons/BackwardIcon.d.ts.map +0 -1
  101. package/dist/src/components/icons/svg-icons/BackwardIcon.js +0 -3
  102. package/dist/src/components/icons/svg-icons/CameraIcon.d.ts.map +0 -1
  103. package/dist/src/components/icons/svg-icons/CameraIcon.js +0 -4
  104. package/dist/src/components/icons/svg-icons/CheckIcon.d.ts.map +0 -1
  105. package/dist/src/components/icons/svg-icons/CheckIcon.js +0 -4
  106. package/dist/src/components/icons/svg-icons/EnablePiPIcon.d.ts.map +0 -1
  107. package/dist/src/components/icons/svg-icons/EnablePiPIcon.js +0 -5
  108. package/dist/src/components/icons/svg-icons/ForwardIcon.d.ts.map +0 -1
  109. package/dist/src/components/icons/svg-icons/ForwardIcon.js +0 -3
  110. package/dist/src/components/icons/svg-icons/FullscreenEnterIcon.d.ts.map +0 -1
  111. package/dist/src/components/icons/svg-icons/FullscreenEnterIcon.js +0 -3
  112. package/dist/src/components/icons/svg-icons/FullscreenExitIcon.d.ts.map +0 -1
  113. package/dist/src/components/icons/svg-icons/FullscreenExitIcon.js +0 -3
  114. package/dist/src/components/icons/svg-icons/LoadingIcon.d.ts.map +0 -1
  115. package/dist/src/components/icons/svg-icons/LoadingIcon.js +0 -3
  116. package/dist/src/components/icons/svg-icons/PauseIcon.d.ts.map +0 -1
  117. package/dist/src/components/icons/svg-icons/PauseIcon.js +0 -3
  118. package/dist/src/components/icons/svg-icons/PlayIcon.d.ts.map +0 -1
  119. package/dist/src/components/icons/svg-icons/PlayIcon.js +0 -3
  120. package/dist/src/components/icons/svg-icons/PlaybackSpeedIcon.d.ts.map +0 -1
  121. package/dist/src/components/icons/svg-icons/PlaybackSpeedIcon.js +0 -3
  122. package/dist/src/components/icons/svg-icons/QualityIcon.d.ts.map +0 -1
  123. package/dist/src/components/icons/svg-icons/QualityIcon.js +0 -3
  124. package/dist/src/components/icons/svg-icons/SettingsIcon.d.ts.map +0 -1
  125. package/dist/src/components/icons/svg-icons/SettingsIcon.js +0 -3
  126. package/dist/src/components/icons/svg-icons/SliderIcon.d.ts.map +0 -1
  127. package/dist/src/components/icons/svg-icons/SliderIcon.js +0 -3
  128. package/dist/src/components/icons/svg-icons/SubtitleIcon.d.ts.map +0 -1
  129. package/dist/src/components/icons/svg-icons/SubtitleIcon.js +0 -3
  130. package/dist/src/components/icons/svg-icons/SubtitleOffIcon.d.ts.map +0 -1
  131. package/dist/src/components/icons/svg-icons/SubtitleOffIcon.js +0 -3
  132. package/dist/src/components/icons/svg-icons/UnPiPIcon.d.ts.map +0 -1
  133. package/dist/src/components/icons/svg-icons/UnPiPIcon.js +0 -5
  134. package/dist/src/components/icons/svg-icons/VolumeMutedIcon.d.ts.map +0 -1
  135. package/dist/src/components/icons/svg-icons/VolumeMutedIcon.js +0 -3
  136. package/dist/src/components/icons/svg-icons/VolumeOneIcon.d.ts.map +0 -1
  137. package/dist/src/components/icons/svg-icons/VolumeOneIcon.js +0 -3
  138. package/dist/src/components/icons/svg-icons/VolumeThreeIcon.d.ts.map +0 -1
  139. package/dist/src/components/icons/svg-icons/VolumeThreeIcon.js +0 -3
  140. package/dist/src/components/icons/svg-icons/VolumeTwoIcon.d.ts.map +0 -1
  141. package/dist/src/components/icons/svg-icons/VolumeTwoIcon.js +0 -3
  142. package/dist/src/components/legacy.d.ts.map +0 -1
  143. package/dist/src/components/legacy.js +0 -52
  144. package/dist/src/components/media-metadata-display.d.ts.map +0 -1
  145. package/dist/src/components/media-metadata-display.js +0 -20
  146. package/dist/src/components/media-player-audio.d.ts.map +0 -1
  147. package/dist/src/components/media-player-audio.js +0 -18
  148. package/dist/src/components/media-player-controls.d.ts.map +0 -1
  149. package/dist/src/components/media-player-controls.js +0 -150
  150. package/dist/src/components/media-player-error.d.ts.map +0 -1
  151. package/dist/src/components/media-player-error.js +0 -85
  152. package/dist/src/components/media-player-fullscreen.d.ts.map +0 -1
  153. package/dist/src/components/media-player-fullscreen.js +0 -68
  154. package/dist/src/components/media-player-hls.d.ts.map +0 -1
  155. package/dist/src/components/media-player-hls.js +0 -20
  156. package/dist/src/components/media-player-loading.d.ts.map +0 -1
  157. package/dist/src/components/media-player-loading.js +0 -53
  158. package/dist/src/components/media-player-play.d.ts.map +0 -1
  159. package/dist/src/components/media-player-play.js +0 -44
  160. package/dist/src/components/media-player-root.d.ts.map +0 -1
  161. package/dist/src/components/media-player-root.js +0 -243
  162. package/dist/src/components/media-player-seek.d.ts.map +0 -1
  163. package/dist/src/components/media-player-seek.js +0 -92
  164. package/dist/src/components/media-player-time.d.ts.map +0 -1
  165. package/dist/src/components/media-player-time.js +0 -57
  166. package/dist/src/components/media-player-tooltip.d.ts.map +0 -1
  167. package/dist/src/components/media-player-tooltip.js +0 -14
  168. package/dist/src/components/media-player-video.d.ts.map +0 -1
  169. package/dist/src/components/media-player-video.js +0 -18
  170. package/dist/src/components/media-player-volume.d.ts.map +0 -1
  171. package/dist/src/components/media-player-volume.js +0 -88
  172. package/dist/src/components/media-player.d.ts.map +0 -1
  173. package/dist/src/components/media-player.js +0 -67
  174. package/dist/src/components/media-suspense.d.ts.map +0 -1
  175. package/dist/src/components/media-suspense.js +0 -173
  176. package/dist/src/components/player-settings-form.d.ts.map +0 -1
  177. package/dist/src/components/player-settings-form.js +0 -46
  178. package/dist/src/components/react-player-wrapper.d.ts.map +0 -1
  179. package/dist/src/components/react-player-wrapper.js +0 -163
  180. package/dist/src/components/simple-video-player.d.ts.map +0 -1
  181. package/dist/src/components/simple-video-player.js +0 -41
  182. package/dist/src/components/ui/enhanced-seek-bar.d.ts.map +0 -1
  183. package/dist/src/components/ui/enhanced-seek-bar.js +0 -112
  184. package/dist/src/components/ui/fullscreen-button.d.ts.map +0 -1
  185. package/dist/src/components/ui/fullscreen-button.js +0 -21
  186. package/dist/src/components/ui/media-resource-preloader.d.ts.map +0 -1
  187. package/dist/src/components/ui/media-resource-preloader.js +0 -295
  188. package/dist/src/components/ui/play-button.d.ts.map +0 -1
  189. package/dist/src/components/ui/play-button.js +0 -26
  190. package/dist/src/components/ui/seek-bar.d.ts.map +0 -1
  191. package/dist/src/components/ui/seek-bar.js +0 -54
  192. package/dist/src/components/ui/time-display.d.ts.map +0 -1
  193. package/dist/src/components/ui/time-display.js +0 -18
  194. package/dist/src/components/ui/volume-control.d.ts.map +0 -1
  195. package/dist/src/components/ui/volume-control.js +0 -71
  196. package/dist/src/components/unified/base-media-player.d.ts.map +0 -1
  197. package/dist/src/components/unified/base-media-player.js +0 -104
  198. package/dist/src/components/unified/media-player.d.ts.map +0 -1
  199. package/dist/src/components/unified/media-player.js +0 -41
  200. package/dist/src/components/variants/minimal/AccessibleMinimalPlayer.d.ts.map +0 -1
  201. package/dist/src/components/variants/minimal/AccessibleMinimalPlayer.js +0 -322
  202. package/dist/src/components/variants/minimal/EnhancedMinimalMediaPlayer.d.ts.map +0 -1
  203. package/dist/src/components/variants/minimal/EnhancedMinimalMediaPlayer.js +0 -280
  204. package/dist/src/components/variants/minimal/MinimalControls.d.ts.map +0 -1
  205. package/dist/src/components/variants/minimal/MinimalControls.js +0 -19
  206. package/dist/src/components/variants/minimal/MinimalLoading.d.ts.map +0 -1
  207. package/dist/src/components/variants/minimal/MinimalLoading.js +0 -6
  208. package/dist/src/components/variants/minimal/MinimalMediaPlayer.d.ts.map +0 -1
  209. package/dist/src/components/variants/minimal/MinimalMediaPlayer.js +0 -135
  210. package/dist/src/components/variants/minimal/MinimalOverlay.d.ts.map +0 -1
  211. package/dist/src/components/variants/minimal/MinimalOverlay.js +0 -15
  212. package/dist/src/components/variants/minimal/MinimalPlayButton.d.ts.map +0 -1
  213. package/dist/src/components/variants/minimal/MinimalPlayButton.js +0 -29
  214. package/dist/src/components/variants/minimal/MinimalSeekBar.d.ts.map +0 -1
  215. package/dist/src/components/variants/minimal/MinimalSeekBar.js +0 -73
  216. package/dist/src/components/variants/minimal/MinimalVolumeControl.d.ts.map +0 -1
  217. package/dist/src/components/variants/minimal/MinimalVolumeControl.js +0 -29
  218. package/dist/src/components/variants/minimal/SimpleMinimalPlayer.d.ts.map +0 -1
  219. package/dist/src/components/variants/minimal/SimpleMinimalPlayer.js +0 -51
  220. package/dist/src/components/variants/minimal/components/CenterPlayButton.d.ts.map +0 -1
  221. package/dist/src/components/variants/minimal/components/CenterPlayButton.js +0 -8
  222. package/dist/src/components/variants/minimal/components/ControlBar.d.ts.map +0 -1
  223. package/dist/src/components/variants/minimal/components/ControlBar.js +0 -10
  224. package/dist/src/components/variants/minimal/components/EnhancedSettingsMenu.d.ts.map +0 -1
  225. package/dist/src/components/variants/minimal/components/EnhancedSettingsMenu.js +0 -68
  226. package/dist/src/components/variants/minimal/components/PlaybackControls.d.ts.map +0 -1
  227. package/dist/src/components/variants/minimal/components/PlaybackControls.js +0 -9
  228. package/dist/src/components/variants/minimal/components/RightControls.d.ts.map +0 -1
  229. package/dist/src/components/variants/minimal/components/RightControls.js +0 -40
  230. package/dist/src/components/variants/minimal/components/SeekBar.d.ts.map +0 -1
  231. package/dist/src/components/variants/minimal/components/SeekBar.js +0 -43
  232. package/dist/src/components/variants/minimal/components/SettingsDropdown.d.ts.map +0 -1
  233. package/dist/src/components/variants/minimal/components/SettingsDropdown.js +0 -18
  234. package/dist/src/components/variants/minimal/components/SubtitleDisplay.d.ts.map +0 -1
  235. package/dist/src/components/variants/minimal/components/SubtitleDisplay.js +0 -6
  236. package/dist/src/components/variants/minimal/components/TimeDisplay.d.ts.map +0 -1
  237. package/dist/src/components/variants/minimal/components/TimeDisplay.js +0 -5
  238. package/dist/src/components/variants/minimal/components/VideoElement.d.ts.map +0 -1
  239. package/dist/src/components/variants/minimal/components/VideoElement.js +0 -4
  240. package/dist/src/components/variants/minimal/components/VolumeControl.d.ts.map +0 -1
  241. package/dist/src/components/variants/minimal/components/VolumeControl.js +0 -99
  242. package/dist/src/components/variants/minimal/index.d.ts.map +0 -1
  243. package/dist/src/components/variants/minimal/index.js +0 -8
  244. package/dist/src/components/video-player.d.ts.map +0 -1
  245. package/dist/src/components/video-player.js +0 -38
  246. package/dist/src/context/error-handling.d.ts.map +0 -1
  247. package/dist/src/context/error-handling.js +0 -300
  248. package/dist/src/context/media-context.d.ts.map +0 -1
  249. package/dist/src/context/media-context.js +0 -121
  250. package/dist/src/context/media-provider.d.ts.map +0 -1
  251. package/dist/src/context/media-provider.js +0 -164
  252. package/dist/src/context/media-store.d.ts.map +0 -1
  253. package/dist/src/context/media-store.js +0 -273
  254. package/dist/src/context/persistence.d.ts.map +0 -1
  255. package/dist/src/context/persistence.js +0 -356
  256. package/dist/src/core/events/event-system.d.ts.map +0 -1
  257. package/dist/src/core/events/event-system.js +0 -288
  258. package/dist/src/core/events/hooks.d.ts.map +0 -1
  259. package/dist/src/core/events/hooks.js +0 -198
  260. package/dist/src/core/events/index.d.ts.map +0 -1
  261. package/dist/src/core/events/index.js +0 -7
  262. package/dist/src/core/events/middleware.d.ts.map +0 -1
  263. package/dist/src/core/events/middleware.js +0 -219
  264. package/dist/src/core/index.d.ts.map +0 -1
  265. package/dist/src/core/index.js +0 -15
  266. package/dist/src/core/optimization/bundle-optimizer.d.ts.map +0 -1
  267. package/dist/src/core/optimization/bundle-optimizer.js +0 -217
  268. package/dist/src/core/performance/cicd.d.ts.map +0 -1
  269. package/dist/src/core/performance/cicd.js +0 -83
  270. package/dist/src/core/performance/index.d.ts.map +0 -1
  271. package/dist/src/core/performance/index.js +0 -14
  272. package/dist/src/core/performance/media-loading-optimizer.d.ts.map +0 -1
  273. package/dist/src/core/performance/media-loading-optimizer.js +0 -404
  274. package/dist/src/core/performance/performance-budgets.d.ts.map +0 -1
  275. package/dist/src/core/performance/performance-budgets.js +0 -326
  276. package/dist/src/core/performance/performance-monitor.d.ts.map +0 -1
  277. package/dist/src/core/performance/performance-monitor.js +0 -297
  278. package/dist/src/core/performance/performance-testing.d.ts.map +0 -1
  279. package/dist/src/core/performance/performance-testing.js +0 -314
  280. package/dist/src/core/plugins/base-plugin.d.ts.map +0 -1
  281. package/dist/src/core/plugins/base-plugin.js +0 -151
  282. package/dist/src/core/plugins/enhanced-plugin-system.d.ts.map +0 -1
  283. package/dist/src/core/plugins/enhanced-plugin-system.js +0 -305
  284. package/dist/src/core/plugins/examples/analytics-plugin.d.ts.map +0 -1
  285. package/dist/src/core/plugins/examples/analytics-plugin.js +0 -191
  286. package/dist/src/core/plugins/index.d.ts.map +0 -1
  287. package/dist/src/core/plugins/index.js +0 -9
  288. package/dist/src/core/plugins/registry.d.ts.map +0 -1
  289. package/dist/src/core/plugins/registry.js +0 -261
  290. package/dist/src/core/plugins/types.d.ts.map +0 -1
  291. package/dist/src/core/plugins/types.js +0 -31
  292. package/dist/src/core/plugins/utils.d.ts.map +0 -1
  293. package/dist/src/core/plugins/utils.js +0 -274
  294. package/dist/src/core/progressive-loading.d.ts.map +0 -1
  295. package/dist/src/core/progressive-loading.js +0 -239
  296. package/dist/src/core/providers/enhanced-hls-provider.d.ts.map +0 -1
  297. package/dist/src/core/providers/enhanced-hls-provider.js +0 -273
  298. package/dist/src/core/providers/service-provider.d.ts.map +0 -1
  299. package/dist/src/core/providers/service-provider.js +0 -105
  300. package/dist/src/core/utils.d.ts.map +0 -1
  301. package/dist/src/core/utils.js +0 -21
  302. package/dist/src/features/media-session/media-session-manager.d.ts.map +0 -1
  303. package/dist/src/features/media-session/media-session-manager.js +0 -331
  304. package/dist/src/features/picture-in-picture/pip-manager.d.ts.map +0 -1
  305. package/dist/src/features/picture-in-picture/pip-manager.js +0 -353
  306. package/dist/src/features/playlist/playlist-manager.d.ts.map +0 -1
  307. package/dist/src/features/playlist/playlist-manager.js +0 -475
  308. package/dist/src/features/subtitles/subtitle-manager.d.ts.map +0 -1
  309. package/dist/src/features/subtitles/subtitle-manager.js +0 -335
  310. package/dist/src/features/subtitles/subtitle-parser.d.ts.map +0 -1
  311. package/dist/src/features/subtitles/subtitle-parser.js +0 -217
  312. package/dist/src/features/thumbnails/thumbnail-generator.d.ts.map +0 -1
  313. package/dist/src/features/thumbnails/thumbnail-generator.js +0 -388
  314. package/dist/src/hooks/accessibility/index.d.ts.map +0 -1
  315. package/dist/src/hooks/accessibility/index.js +0 -4
  316. package/dist/src/hooks/accessibility/use-accessibility-preferences.d.ts.map +0 -1
  317. package/dist/src/hooks/accessibility/use-accessibility-preferences.js +0 -156
  318. package/dist/src/hooks/accessibility/use-focus-management.d.ts.map +0 -1
  319. package/dist/src/hooks/accessibility/use-focus-management.js +0 -142
  320. package/dist/src/hooks/accessibility/use-keyboard-shortcuts.d.ts.map +0 -1
  321. package/dist/src/hooks/accessibility/use-keyboard-shortcuts.js +0 -101
  322. package/dist/src/hooks/accessibility/use-screen-reader.d.ts.map +0 -1
  323. package/dist/src/hooks/accessibility/use-screen-reader.js +0 -148
  324. package/dist/src/hooks/core/index.d.ts.map +0 -1
  325. package/dist/src/hooks/core/index.js +0 -19
  326. package/dist/src/hooks/legacy.d.ts.map +0 -1
  327. package/dist/src/hooks/legacy.js +0 -17
  328. package/dist/src/hooks/use-enhanced-media-player.d.ts.map +0 -1
  329. package/dist/src/hooks/use-enhanced-media-player.js +0 -395
  330. package/dist/src/hooks/use-intelligent-preloading.d.ts.map +0 -1
  331. package/dist/src/hooks/use-intelligent-preloading.js +0 -258
  332. package/dist/src/hooks/use-keyboard-controls.d.ts.map +0 -1
  333. package/dist/src/hooks/use-keyboard-controls.js +0 -83
  334. package/dist/src/hooks/use-media-actions.d.ts.map +0 -1
  335. package/dist/src/hooks/use-media-actions.js +0 -121
  336. package/dist/src/hooks/use-media-metadata.d.ts.map +0 -1
  337. package/dist/src/hooks/use-media-metadata.js +0 -74
  338. package/dist/src/hooks/use-media-optimistic.d.ts.map +0 -1
  339. package/dist/src/hooks/use-media-optimistic.js +0 -205
  340. package/dist/src/hooks/use-media-player.d.ts.map +0 -1
  341. package/dist/src/hooks/use-media-player.js +0 -251
  342. package/dist/src/hooks/use-media-state.d.ts.map +0 -1
  343. package/dist/src/hooks/use-media-state.js +0 -162
  344. package/dist/src/hooks/use-memory-optimization.d.ts.map +0 -1
  345. package/dist/src/hooks/use-memory-optimization.js +0 -288
  346. package/dist/src/hooks/use-optimistic-controls.d.ts.map +0 -1
  347. package/dist/src/hooks/use-optimistic-controls.js +0 -60
  348. package/dist/src/hooks/use-optimized-media.d.ts.map +0 -1
  349. package/dist/src/hooks/use-optimized-media.js +0 -211
  350. package/dist/src/hooks/use-touch-gestures.d.ts.map +0 -1
  351. package/dist/src/hooks/use-touch-gestures.js +0 -289
  352. package/dist/src/hooks/useEnhancedSubtitles.d.ts.map +0 -1
  353. package/dist/src/hooks/useEnhancedSubtitles.js +0 -205
  354. package/dist/src/hooks/useKeyboardShortcuts.d.ts.map +0 -1
  355. package/dist/src/hooks/useKeyboardShortcuts.js +0 -59
  356. package/dist/src/hooks/useMediaControls.d.ts.map +0 -1
  357. package/dist/src/hooks/useMediaControls.js +0 -44
  358. package/dist/src/hooks/useScreenshot.d.ts.map +0 -1
  359. package/dist/src/hooks/useScreenshot.js +0 -56
  360. package/dist/src/hooks/useSubtitles.d.ts.map +0 -1
  361. package/dist/src/hooks/useSubtitles.js +0 -73
  362. package/dist/src/hooks/useVideoPlayer.d.ts.map +0 -1
  363. package/dist/src/hooks/useVideoPlayer.js +0 -184
  364. package/dist/src/icons/components/FullscreenIcon.d.ts.map +0 -1
  365. package/dist/src/icons/components/FullscreenIcon.js +0 -11
  366. package/dist/src/icons/components/SettingsIcon.d.ts.map +0 -1
  367. package/dist/src/icons/components/SettingsIcon.js +0 -11
  368. package/dist/src/icons/components/animated/LoadingIcon.d.ts.map +0 -1
  369. package/dist/src/icons/components/animated/LoadingIcon.js +0 -11
  370. package/dist/src/icons/components/animated/PlayPauseIcon.d.ts.map +0 -1
  371. package/dist/src/icons/components/animated/PlayPauseIcon.js +0 -9
  372. package/dist/src/icons/components/media/PauseIcon.d.ts.map +0 -1
  373. package/dist/src/icons/components/media/PauseIcon.js +0 -12
  374. package/dist/src/icons/components/media/PlayIcon.d.ts.map +0 -1
  375. package/dist/src/icons/components/media/PlayIcon.js +0 -12
  376. package/dist/src/icons/components/volume/VolumeIcon.d.ts.map +0 -1
  377. package/dist/src/icons/components/volume/VolumeIcon.js +0 -11
  378. package/dist/src/icons/components/volume/VolumeOffIcon.d.ts.map +0 -1
  379. package/dist/src/icons/components/volume/VolumeOffIcon.js +0 -11
  380. package/dist/src/icons/index.d.ts.map +0 -1
  381. package/dist/src/icons/index.js +0 -45
  382. package/dist/src/icons/provider.d.ts.map +0 -1
  383. package/dist/src/icons/provider.js +0 -37
  384. package/dist/src/icons/types.d.ts.map +0 -1
  385. package/dist/src/icons/types.js +0 -1
  386. package/dist/src/index-enhanced.d.ts.map +0 -1
  387. package/dist/src/index-enhanced.js +0 -16
  388. package/dist/src/index-legacy.d.ts.map +0 -1
  389. package/dist/src/index-legacy.js +0 -97
  390. package/dist/src/index.d.ts.map +0 -1
  391. package/dist/src/index.js +0 -90
  392. package/dist/src/index.minimal.d.ts.map +0 -1
  393. package/dist/src/index.minimal.js +0 -3
  394. package/dist/src/lib/deprecation.d.ts.map +0 -1
  395. package/dist/src/lib/deprecation.js +0 -31
  396. package/dist/src/lib/format-time.d.ts.map +0 -1
  397. package/dist/src/lib/format-time.js +0 -32
  398. package/dist/src/lib/index.d.ts.map +0 -1
  399. package/dist/src/lib/index.js +0 -3
  400. package/dist/src/lib/utils.d.ts.map +0 -1
  401. package/dist/src/lib/utils.js +0 -5
  402. package/dist/src/test/setup.d.ts.map +0 -1
  403. package/dist/src/test/setup.js +0 -65
  404. package/dist/src/types/events.d.ts.map +0 -1
  405. package/dist/src/types/events.js +0 -2
  406. package/dist/src/types/formats.d.ts.map +0 -1
  407. package/dist/src/types/formats.js +0 -63
  408. package/dist/src/types/index.d.ts.map +0 -1
  409. package/dist/src/types/index.js +0 -4
  410. package/dist/utils-Db13763z.cjs +0 -9
  411. package/dist/utils-Db13763z.cjs.map +0 -1
  412. package/dist/utils-nTO4AnHo.js +0 -2809
  413. package/dist/utils-nTO4AnHo.js.map +0 -1
  414. package/dist/utils.js +0 -2
  415. package/dist/utils.js.map +0 -1
  416. package/dist/utils.mjs +0 -7
  417. package/dist/utils.mjs.map +0 -1
  418. package/src/adapters/videojs-adapter.js +0 -350
  419. package/src/components/AnimateLoading.js +0 -41
  420. package/src/components/LoadingState.js +0 -111
  421. package/src/components/accessibility/keyboard-help-overlay.js +0 -90
  422. package/src/components/audio-player.js +0 -31
  423. package/src/components/basic/index.js +0 -29
  424. package/src/components/enhanced/advanced-features.js +0 -64
  425. package/src/components/enhanced/debug-panel.js +0 -94
  426. package/src/components/enhanced/enhanced-controls.js +0 -233
  427. package/src/components/enhanced/enhanced-media-player.js +0 -316
  428. package/src/components/enhanced/error-handling.js +0 -153
  429. package/src/components/enhanced/index.js +0 -10
  430. package/src/components/enhanced/media-player-enhanced.js +0 -250
  431. package/src/components/examples/basic-video-player.js +0 -16
  432. package/src/components/examples/custom-controls-example.js +0 -12
  433. package/src/components/examples/enhanced-controls-example.js +0 -18
  434. package/src/components/examples/enhanced-media-player-example.js +0 -13
  435. package/src/components/examples/loading-states-demo.js +0 -41
  436. package/src/components/examples/react-19-demo.js +0 -104
  437. package/src/components/examples/volume-orientation-demo.js +0 -31
  438. package/src/components/icon-demo.js +0 -16
  439. package/src/components/icons/index.js +0 -59
  440. package/src/components/icons/svg-icons/ArrowLeftIcon.js +0 -3
  441. package/src/components/icons/svg-icons/ArrowRightIcon.js +0 -3
  442. package/src/components/icons/svg-icons/AudioIcon.js +0 -4
  443. package/src/components/icons/svg-icons/BackwardIcon.js +0 -3
  444. package/src/components/icons/svg-icons/CameraIcon.js +0 -4
  445. package/src/components/icons/svg-icons/CheckIcon.js +0 -4
  446. package/src/components/icons/svg-icons/EnablePiPIcon.js +0 -5
  447. package/src/components/icons/svg-icons/ForwardIcon.js +0 -3
  448. package/src/components/icons/svg-icons/FullscreenEnterIcon.js +0 -3
  449. package/src/components/icons/svg-icons/FullscreenExitIcon.js +0 -3
  450. package/src/components/icons/svg-icons/LoadingIcon.js +0 -3
  451. package/src/components/icons/svg-icons/PauseIcon.js +0 -3
  452. package/src/components/icons/svg-icons/PlayIcon.js +0 -3
  453. package/src/components/icons/svg-icons/PlaybackSpeedIcon.js +0 -3
  454. package/src/components/icons/svg-icons/QualityIcon.js +0 -3
  455. package/src/components/icons/svg-icons/SettingsIcon.js +0 -3
  456. package/src/components/icons/svg-icons/SliderIcon.js +0 -3
  457. package/src/components/icons/svg-icons/SubtitleIcon.js +0 -3
  458. package/src/components/icons/svg-icons/SubtitleOffIcon.js +0 -3
  459. package/src/components/icons/svg-icons/UnPiPIcon.js +0 -5
  460. package/src/components/icons/svg-icons/VolumeMutedIcon.js +0 -3
  461. package/src/components/icons/svg-icons/VolumeOneIcon.js +0 -3
  462. package/src/components/icons/svg-icons/VolumeThreeIcon.js +0 -3
  463. package/src/components/icons/svg-icons/VolumeTwoIcon.js +0 -3
  464. package/src/components/legacy.js +0 -52
  465. package/src/components/media-metadata-display.js +0 -20
  466. package/src/components/media-player-audio.js +0 -18
  467. package/src/components/media-player-controls.js +0 -150
  468. package/src/components/media-player-error.js +0 -85
  469. package/src/components/media-player-fullscreen.js +0 -68
  470. package/src/components/media-player-hls.js +0 -20
  471. package/src/components/media-player-loading.js +0 -53
  472. package/src/components/media-player-play.js +0 -44
  473. package/src/components/media-player-root.js +0 -243
  474. package/src/components/media-player-seek.js +0 -92
  475. package/src/components/media-player-time.js +0 -57
  476. package/src/components/media-player-tooltip.js +0 -14
  477. package/src/components/media-player-video.js +0 -18
  478. package/src/components/media-player-volume.js +0 -88
  479. package/src/components/media-player.js +0 -67
  480. package/src/components/media-suspense.js +0 -173
  481. package/src/components/player-settings-form.js +0 -46
  482. package/src/components/react-player-wrapper.js +0 -163
  483. package/src/components/simple-video-player.js +0 -41
  484. package/src/components/ui/enhanced-seek-bar.js +0 -112
  485. package/src/components/ui/fullscreen-button.js +0 -21
  486. package/src/components/ui/media-resource-preloader.js +0 -295
  487. package/src/components/ui/play-button.js +0 -26
  488. package/src/components/ui/seek-bar.js +0 -54
  489. package/src/components/ui/time-display.js +0 -18
  490. package/src/components/ui/volume-control.js +0 -71
  491. package/src/components/unified/base-media-player.js +0 -104
  492. package/src/components/unified/media-player.js +0 -41
  493. package/src/components/variants/minimal/AccessibleMinimalPlayer.js +0 -322
  494. package/src/components/variants/minimal/EnhancedMinimalMediaPlayer.js +0 -280
  495. package/src/components/variants/minimal/MinimalControls.js +0 -19
  496. package/src/components/variants/minimal/MinimalLoading.js +0 -6
  497. package/src/components/variants/minimal/MinimalMediaPlayer.js +0 -135
  498. package/src/components/variants/minimal/MinimalOverlay.js +0 -15
  499. package/src/components/variants/minimal/MinimalPlayButton.js +0 -29
  500. package/src/components/variants/minimal/MinimalSeekBar.js +0 -73
  501. package/src/components/variants/minimal/MinimalVolumeControl.js +0 -29
  502. package/src/components/variants/minimal/SimpleMinimalPlayer.js +0 -51
  503. package/src/components/variants/minimal/components/CenterPlayButton.js +0 -8
  504. package/src/components/variants/minimal/components/ControlBar.js +0 -10
  505. package/src/components/variants/minimal/components/EnhancedSettingsMenu.js +0 -68
  506. package/src/components/variants/minimal/components/PlaybackControls.js +0 -9
  507. package/src/components/variants/minimal/components/RightControls.js +0 -40
  508. package/src/components/variants/minimal/components/SeekBar.js +0 -43
  509. package/src/components/variants/minimal/components/SettingsDropdown.js +0 -18
  510. package/src/components/variants/minimal/components/SubtitleDisplay.js +0 -6
  511. package/src/components/variants/minimal/components/TimeDisplay.js +0 -5
  512. package/src/components/variants/minimal/components/VideoElement.js +0 -4
  513. package/src/components/variants/minimal/components/VolumeControl.js +0 -99
  514. package/src/components/variants/minimal/index.js +0 -8
  515. package/src/components/video-player.js +0 -38
  516. package/src/context/error-handling.js +0 -300
  517. package/src/context/media-context.js +0 -121
  518. package/src/context/media-provider.js +0 -164
  519. package/src/context/media-store.js +0 -273
  520. package/src/context/persistence.js +0 -356
  521. package/src/core/events/event-system.js +0 -288
  522. package/src/core/events/hooks.js +0 -198
  523. package/src/core/events/index.js +0 -7
  524. package/src/core/events/middleware.js +0 -219
  525. package/src/core/index.js +0 -15
  526. package/src/core/optimization/bundle-optimizer.js +0 -217
  527. package/src/core/performance/cicd.js +0 -83
  528. package/src/core/performance/index.js +0 -14
  529. package/src/core/performance/media-loading-optimizer.js +0 -404
  530. package/src/core/performance/performance-budgets.js +0 -326
  531. package/src/core/performance/performance-monitor.js +0 -297
  532. package/src/core/performance/performance-testing.js +0 -314
  533. package/src/core/plugins/base-plugin.js +0 -151
  534. package/src/core/plugins/enhanced-plugin-system.js +0 -305
  535. package/src/core/plugins/examples/analytics-plugin.js +0 -191
  536. package/src/core/plugins/index.js +0 -9
  537. package/src/core/plugins/registry.js +0 -261
  538. package/src/core/plugins/types.js +0 -31
  539. package/src/core/plugins/utils.js +0 -274
  540. package/src/core/progressive-loading.js +0 -239
  541. package/src/core/providers/enhanced-hls-provider.js +0 -273
  542. package/src/core/providers/service-provider.js +0 -105
  543. package/src/core/utils.js +0 -21
  544. package/src/features/media-session/media-session-manager.js +0 -331
  545. package/src/features/picture-in-picture/pip-manager.js +0 -353
  546. package/src/features/playlist/playlist-manager.js +0 -475
  547. package/src/features/subtitles/subtitle-manager.js +0 -335
  548. package/src/features/subtitles/subtitle-parser.js +0 -217
  549. package/src/features/thumbnails/thumbnail-generator.js +0 -388
  550. package/src/hooks/accessibility/index.js +0 -4
  551. package/src/hooks/accessibility/use-accessibility-preferences.js +0 -156
  552. package/src/hooks/accessibility/use-focus-management.js +0 -142
  553. package/src/hooks/accessibility/use-keyboard-shortcuts.js +0 -101
  554. package/src/hooks/accessibility/use-screen-reader.js +0 -148
  555. package/src/hooks/core/index.js +0 -19
  556. package/src/hooks/legacy.js +0 -17
  557. package/src/hooks/use-enhanced-media-player.js +0 -395
  558. package/src/hooks/use-intelligent-preloading.js +0 -258
  559. package/src/hooks/use-keyboard-controls.js +0 -83
  560. package/src/hooks/use-media-actions.js +0 -121
  561. package/src/hooks/use-media-metadata.js +0 -74
  562. package/src/hooks/use-media-optimistic.js +0 -205
  563. package/src/hooks/use-media-player.js +0 -251
  564. package/src/hooks/use-media-state.js +0 -162
  565. package/src/hooks/use-memory-optimization.js +0 -288
  566. package/src/hooks/use-optimistic-controls.js +0 -60
  567. package/src/hooks/use-optimized-media.js +0 -211
  568. package/src/hooks/use-touch-gestures.js +0 -289
  569. package/src/hooks/useEnhancedSubtitles.js +0 -205
  570. package/src/hooks/useKeyboardShortcuts.js +0 -59
  571. package/src/hooks/useMediaControls.js +0 -44
  572. package/src/hooks/useScreenshot.js +0 -56
  573. package/src/hooks/useSubtitles.js +0 -73
  574. package/src/hooks/useVideoPlayer.js +0 -184
  575. package/src/icons/components/FullscreenIcon.js +0 -11
  576. package/src/icons/components/SettingsIcon.js +0 -11
  577. package/src/icons/components/animated/LoadingIcon.js +0 -11
  578. package/src/icons/components/animated/PlayPauseIcon.js +0 -9
  579. package/src/icons/components/media/PauseIcon.js +0 -12
  580. package/src/icons/components/media/PlayIcon.js +0 -12
  581. package/src/icons/components/volume/VolumeIcon.js +0 -11
  582. package/src/icons/components/volume/VolumeOffIcon.js +0 -11
  583. package/src/icons/index.js +0 -45
  584. package/src/icons/provider.js +0 -37
  585. package/src/icons/types.js +0 -1
  586. package/src/index-enhanced.js +0 -16
  587. package/src/index-legacy.js +0 -97
  588. package/src/index.js +0 -90
  589. package/src/index.minimal.js +0 -3
  590. package/src/lib/deprecation.js +0 -31
  591. package/src/lib/format-time.js +0 -32
  592. package/src/lib/index.js +0 -3
  593. package/src/lib/utils.js +0 -5
  594. package/src/test/setup.js +0 -65
  595. package/src/types/events.js +0 -2
  596. package/src/types/formats.js +0 -63
  597. 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
- };