@therealtinhtute/baroiplayer 1.0.5 → 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 (611) hide show
  1. package/dist/index.d.ts +1 -1
  2. package/dist/package.json +1 -1
  3. package/dist/src/components/media-player-error.tsx +2 -2
  4. package/dist/src/components/media-player-fullscreen.tsx +2 -2
  5. package/dist/src/components/media-player-play.tsx +2 -2
  6. package/dist/src/components/media-player-seek.tsx +1 -1
  7. package/dist/src/components/media-player-tooltip.tsx +1 -1
  8. package/dist/src/components/media-player-volume.tsx +3 -3
  9. package/dist/src/components/react-player-wrapper.tsx +5 -5
  10. package/dist/src/hooks/use-touch-gestures.ts +1 -1
  11. package/package.json +1 -1
  12. package/src/components/media-player-error.tsx +2 -2
  13. package/src/components/media-player-fullscreen.tsx +2 -2
  14. package/src/components/media-player-play.tsx +2 -2
  15. package/src/components/media-player-seek.tsx +1 -1
  16. package/src/components/media-player-tooltip.tsx +1 -1
  17. package/src/components/media-player-volume.tsx +3 -3
  18. package/src/components/react-player-wrapper.tsx +5 -5
  19. package/src/hooks/use-touch-gestures.ts +1 -1
  20. package/dist/context/media.js +0 -2
  21. package/dist/context/media.js.map +0 -1
  22. package/dist/context/media.mjs +0 -15
  23. package/dist/context/media.mjs.map +0 -1
  24. package/dist/context/store.js +0 -2
  25. package/dist/context/store.js.map +0 -1
  26. package/dist/context/store.mjs +0 -5
  27. package/dist/context/store.mjs.map +0 -1
  28. package/dist/context-Af84FynT.js +0 -1179
  29. package/dist/context-Af84FynT.js.map +0 -1
  30. package/dist/context-CwZnPdz0.cjs +0 -23
  31. package/dist/context-CwZnPdz0.cjs.map +0 -1
  32. package/dist/core-events-B5W_j8yU.js +0 -480
  33. package/dist/core-events-B5W_j8yU.js.map +0 -1
  34. package/dist/core-events-CN0-Vhhq.cjs +0 -2
  35. package/dist/core-events-CN0-Vhhq.cjs.map +0 -1
  36. package/dist/core-plugins-Bq9KLany.js +0 -696
  37. package/dist/core-plugins-Bq9KLany.js.map +0 -1
  38. package/dist/core-plugins-CPDSHMiQ.cjs +0 -2
  39. package/dist/core-plugins-CPDSHMiQ.cjs.map +0 -1
  40. package/dist/core.js +0 -37
  41. package/dist/core.js.map +0 -1
  42. package/dist/core.mjs +0 -1217
  43. package/dist/core.mjs.map +0 -1
  44. package/dist/enhanced-components-CXnYiOt6.cjs +0 -2
  45. package/dist/enhanced-components-CXnYiOt6.cjs.map +0 -1
  46. package/dist/enhanced-components-Da0TSvKe.js +0 -1073
  47. package/dist/enhanced-components-Da0TSvKe.js.map +0 -1
  48. package/dist/hooks-BCMilGRf.cjs +0 -4
  49. package/dist/hooks-BCMilGRf.cjs.map +0 -1
  50. package/dist/hooks-BPtHV1ZT.js +0 -2042
  51. package/dist/hooks-BPtHV1ZT.js.map +0 -1
  52. package/dist/index.js.map +0 -1
  53. package/dist/index.mjs.map +0 -1
  54. package/dist/minimal-components-BHJMuaL7.cjs +0 -2
  55. package/dist/minimal-components-BHJMuaL7.cjs.map +0 -1
  56. package/dist/minimal-components-BmqRefl1.js +0 -2002
  57. package/dist/minimal-components-BmqRefl1.js.map +0 -1
  58. package/dist/mona-loading.gif +0 -0
  59. package/dist/performance-monitor--rzKTlbj.js +0 -302
  60. package/dist/performance-monitor--rzKTlbj.js.map +0 -1
  61. package/dist/performance-monitor-cjIvZE2D.cjs +0 -2
  62. package/dist/performance-monitor-cjIvZE2D.cjs.map +0 -1
  63. package/dist/src/adapters/videojs-adapter.d.ts.map +0 -1
  64. package/dist/src/adapters/videojs-adapter.js +0 -350
  65. package/dist/src/assets/mona-loading.gif +0 -0
  66. package/dist/src/components/AnimateLoading.d.ts.map +0 -1
  67. package/dist/src/components/AnimateLoading.js +0 -41
  68. package/dist/src/components/LoadingState.d.ts.map +0 -1
  69. package/dist/src/components/LoadingState.js +0 -111
  70. package/dist/src/components/accessibility/keyboard-help-overlay.d.ts.map +0 -1
  71. package/dist/src/components/accessibility/keyboard-help-overlay.js +0 -90
  72. package/dist/src/components/audio-player.d.ts.map +0 -1
  73. package/dist/src/components/audio-player.js +0 -31
  74. package/dist/src/components/basic/index.d.ts.map +0 -1
  75. package/dist/src/components/basic/index.js +0 -29
  76. package/dist/src/components/enhanced/advanced-features.d.ts.map +0 -1
  77. package/dist/src/components/enhanced/advanced-features.js +0 -64
  78. package/dist/src/components/enhanced/debug-panel.d.ts.map +0 -1
  79. package/dist/src/components/enhanced/debug-panel.js +0 -94
  80. package/dist/src/components/enhanced/enhanced-controls.d.ts.map +0 -1
  81. package/dist/src/components/enhanced/enhanced-controls.js +0 -233
  82. package/dist/src/components/enhanced/enhanced-media-player.d.ts.map +0 -1
  83. package/dist/src/components/enhanced/enhanced-media-player.js +0 -316
  84. package/dist/src/components/enhanced/error-handling.d.ts.map +0 -1
  85. package/dist/src/components/enhanced/error-handling.js +0 -153
  86. package/dist/src/components/enhanced/index.d.ts.map +0 -1
  87. package/dist/src/components/enhanced/index.js +0 -10
  88. package/dist/src/components/enhanced/media-player-enhanced.d.ts.map +0 -1
  89. package/dist/src/components/enhanced/media-player-enhanced.js +0 -250
  90. package/dist/src/components/examples/basic-video-player.d.ts.map +0 -1
  91. package/dist/src/components/examples/basic-video-player.js +0 -16
  92. package/dist/src/components/examples/custom-controls-example.d.ts.map +0 -1
  93. package/dist/src/components/examples/custom-controls-example.js +0 -12
  94. package/dist/src/components/examples/enhanced-controls-example.d.ts.map +0 -1
  95. package/dist/src/components/examples/enhanced-controls-example.js +0 -18
  96. package/dist/src/components/examples/enhanced-media-player-example.d.ts.map +0 -1
  97. package/dist/src/components/examples/enhanced-media-player-example.js +0 -13
  98. package/dist/src/components/examples/loading-states-demo.d.ts.map +0 -1
  99. package/dist/src/components/examples/loading-states-demo.js +0 -41
  100. package/dist/src/components/examples/react-19-demo.d.ts.map +0 -1
  101. package/dist/src/components/examples/react-19-demo.js +0 -104
  102. package/dist/src/components/examples/volume-orientation-demo.d.ts.map +0 -1
  103. package/dist/src/components/examples/volume-orientation-demo.js +0 -31
  104. package/dist/src/components/icon-demo.d.ts.map +0 -1
  105. package/dist/src/components/icon-demo.js +0 -16
  106. package/dist/src/components/icons/index.d.ts.map +0 -1
  107. package/dist/src/components/icons/index.js +0 -59
  108. package/dist/src/components/icons/svg-icons/ArrowLeftIcon.d.ts.map +0 -1
  109. package/dist/src/components/icons/svg-icons/ArrowLeftIcon.js +0 -3
  110. package/dist/src/components/icons/svg-icons/ArrowRightIcon.d.ts.map +0 -1
  111. package/dist/src/components/icons/svg-icons/ArrowRightIcon.js +0 -3
  112. package/dist/src/components/icons/svg-icons/AudioIcon.d.ts.map +0 -1
  113. package/dist/src/components/icons/svg-icons/AudioIcon.js +0 -4
  114. package/dist/src/components/icons/svg-icons/BackwardIcon.d.ts.map +0 -1
  115. package/dist/src/components/icons/svg-icons/BackwardIcon.js +0 -3
  116. package/dist/src/components/icons/svg-icons/CameraIcon.d.ts.map +0 -1
  117. package/dist/src/components/icons/svg-icons/CameraIcon.js +0 -4
  118. package/dist/src/components/icons/svg-icons/CheckIcon.d.ts.map +0 -1
  119. package/dist/src/components/icons/svg-icons/CheckIcon.js +0 -4
  120. package/dist/src/components/icons/svg-icons/EnablePiPIcon.d.ts.map +0 -1
  121. package/dist/src/components/icons/svg-icons/EnablePiPIcon.js +0 -5
  122. package/dist/src/components/icons/svg-icons/ForwardIcon.d.ts.map +0 -1
  123. package/dist/src/components/icons/svg-icons/ForwardIcon.js +0 -3
  124. package/dist/src/components/icons/svg-icons/FullscreenEnterIcon.d.ts.map +0 -1
  125. package/dist/src/components/icons/svg-icons/FullscreenEnterIcon.js +0 -3
  126. package/dist/src/components/icons/svg-icons/FullscreenExitIcon.d.ts.map +0 -1
  127. package/dist/src/components/icons/svg-icons/FullscreenExitIcon.js +0 -3
  128. package/dist/src/components/icons/svg-icons/LoadingIcon.d.ts.map +0 -1
  129. package/dist/src/components/icons/svg-icons/LoadingIcon.js +0 -3
  130. package/dist/src/components/icons/svg-icons/PauseIcon.d.ts.map +0 -1
  131. package/dist/src/components/icons/svg-icons/PauseIcon.js +0 -3
  132. package/dist/src/components/icons/svg-icons/PlayIcon.d.ts.map +0 -1
  133. package/dist/src/components/icons/svg-icons/PlayIcon.js +0 -3
  134. package/dist/src/components/icons/svg-icons/PlaybackSpeedIcon.d.ts.map +0 -1
  135. package/dist/src/components/icons/svg-icons/PlaybackSpeedIcon.js +0 -3
  136. package/dist/src/components/icons/svg-icons/QualityIcon.d.ts.map +0 -1
  137. package/dist/src/components/icons/svg-icons/QualityIcon.js +0 -3
  138. package/dist/src/components/icons/svg-icons/SettingsIcon.d.ts.map +0 -1
  139. package/dist/src/components/icons/svg-icons/SettingsIcon.js +0 -3
  140. package/dist/src/components/icons/svg-icons/SliderIcon.d.ts.map +0 -1
  141. package/dist/src/components/icons/svg-icons/SliderIcon.js +0 -3
  142. package/dist/src/components/icons/svg-icons/SubtitleIcon.d.ts.map +0 -1
  143. package/dist/src/components/icons/svg-icons/SubtitleIcon.js +0 -3
  144. package/dist/src/components/icons/svg-icons/SubtitleOffIcon.d.ts.map +0 -1
  145. package/dist/src/components/icons/svg-icons/SubtitleOffIcon.js +0 -3
  146. package/dist/src/components/icons/svg-icons/UnPiPIcon.d.ts.map +0 -1
  147. package/dist/src/components/icons/svg-icons/UnPiPIcon.js +0 -5
  148. package/dist/src/components/icons/svg-icons/VolumeMutedIcon.d.ts.map +0 -1
  149. package/dist/src/components/icons/svg-icons/VolumeMutedIcon.js +0 -3
  150. package/dist/src/components/icons/svg-icons/VolumeOneIcon.d.ts.map +0 -1
  151. package/dist/src/components/icons/svg-icons/VolumeOneIcon.js +0 -3
  152. package/dist/src/components/icons/svg-icons/VolumeThreeIcon.d.ts.map +0 -1
  153. package/dist/src/components/icons/svg-icons/VolumeThreeIcon.js +0 -3
  154. package/dist/src/components/icons/svg-icons/VolumeTwoIcon.d.ts.map +0 -1
  155. package/dist/src/components/icons/svg-icons/VolumeTwoIcon.js +0 -3
  156. package/dist/src/components/legacy.d.ts.map +0 -1
  157. package/dist/src/components/legacy.js +0 -52
  158. package/dist/src/components/media-metadata-display.d.ts.map +0 -1
  159. package/dist/src/components/media-metadata-display.js +0 -20
  160. package/dist/src/components/media-player-audio.d.ts.map +0 -1
  161. package/dist/src/components/media-player-audio.js +0 -18
  162. package/dist/src/components/media-player-controls.d.ts.map +0 -1
  163. package/dist/src/components/media-player-controls.js +0 -150
  164. package/dist/src/components/media-player-error.d.ts.map +0 -1
  165. package/dist/src/components/media-player-error.js +0 -85
  166. package/dist/src/components/media-player-fullscreen.d.ts.map +0 -1
  167. package/dist/src/components/media-player-fullscreen.js +0 -68
  168. package/dist/src/components/media-player-hls.d.ts.map +0 -1
  169. package/dist/src/components/media-player-hls.js +0 -20
  170. package/dist/src/components/media-player-loading.d.ts.map +0 -1
  171. package/dist/src/components/media-player-loading.js +0 -53
  172. package/dist/src/components/media-player-play.d.ts.map +0 -1
  173. package/dist/src/components/media-player-play.js +0 -44
  174. package/dist/src/components/media-player-root.d.ts.map +0 -1
  175. package/dist/src/components/media-player-root.js +0 -243
  176. package/dist/src/components/media-player-seek.d.ts.map +0 -1
  177. package/dist/src/components/media-player-seek.js +0 -92
  178. package/dist/src/components/media-player-time.d.ts.map +0 -1
  179. package/dist/src/components/media-player-time.js +0 -57
  180. package/dist/src/components/media-player-tooltip.d.ts.map +0 -1
  181. package/dist/src/components/media-player-tooltip.js +0 -14
  182. package/dist/src/components/media-player-video.d.ts.map +0 -1
  183. package/dist/src/components/media-player-video.js +0 -18
  184. package/dist/src/components/media-player-volume.d.ts.map +0 -1
  185. package/dist/src/components/media-player-volume.js +0 -88
  186. package/dist/src/components/media-player.d.ts.map +0 -1
  187. package/dist/src/components/media-player.js +0 -67
  188. package/dist/src/components/media-suspense.d.ts.map +0 -1
  189. package/dist/src/components/media-suspense.js +0 -173
  190. package/dist/src/components/player-settings-form.d.ts.map +0 -1
  191. package/dist/src/components/player-settings-form.js +0 -46
  192. package/dist/src/components/react-player-wrapper.d.ts.map +0 -1
  193. package/dist/src/components/react-player-wrapper.js +0 -163
  194. package/dist/src/components/simple-video-player.d.ts.map +0 -1
  195. package/dist/src/components/simple-video-player.js +0 -41
  196. package/dist/src/components/ui/enhanced-seek-bar.d.ts.map +0 -1
  197. package/dist/src/components/ui/enhanced-seek-bar.js +0 -112
  198. package/dist/src/components/ui/fullscreen-button.d.ts.map +0 -1
  199. package/dist/src/components/ui/fullscreen-button.js +0 -21
  200. package/dist/src/components/ui/media-resource-preloader.d.ts.map +0 -1
  201. package/dist/src/components/ui/media-resource-preloader.js +0 -295
  202. package/dist/src/components/ui/play-button.d.ts.map +0 -1
  203. package/dist/src/components/ui/play-button.js +0 -26
  204. package/dist/src/components/ui/seek-bar.d.ts.map +0 -1
  205. package/dist/src/components/ui/seek-bar.js +0 -54
  206. package/dist/src/components/ui/time-display.d.ts.map +0 -1
  207. package/dist/src/components/ui/time-display.js +0 -18
  208. package/dist/src/components/ui/volume-control.d.ts.map +0 -1
  209. package/dist/src/components/ui/volume-control.js +0 -71
  210. package/dist/src/components/unified/base-media-player.d.ts.map +0 -1
  211. package/dist/src/components/unified/base-media-player.js +0 -104
  212. package/dist/src/components/unified/media-player.d.ts.map +0 -1
  213. package/dist/src/components/unified/media-player.js +0 -41
  214. package/dist/src/components/variants/minimal/AccessibleMinimalPlayer.d.ts.map +0 -1
  215. package/dist/src/components/variants/minimal/AccessibleMinimalPlayer.js +0 -322
  216. package/dist/src/components/variants/minimal/EnhancedMinimalMediaPlayer.d.ts.map +0 -1
  217. package/dist/src/components/variants/minimal/EnhancedMinimalMediaPlayer.js +0 -280
  218. package/dist/src/components/variants/minimal/MinimalControls.d.ts.map +0 -1
  219. package/dist/src/components/variants/minimal/MinimalControls.js +0 -19
  220. package/dist/src/components/variants/minimal/MinimalLoading.d.ts.map +0 -1
  221. package/dist/src/components/variants/minimal/MinimalLoading.js +0 -6
  222. package/dist/src/components/variants/minimal/MinimalMediaPlayer.d.ts.map +0 -1
  223. package/dist/src/components/variants/minimal/MinimalMediaPlayer.js +0 -135
  224. package/dist/src/components/variants/minimal/MinimalOverlay.d.ts.map +0 -1
  225. package/dist/src/components/variants/minimal/MinimalOverlay.js +0 -15
  226. package/dist/src/components/variants/minimal/MinimalPlayButton.d.ts.map +0 -1
  227. package/dist/src/components/variants/minimal/MinimalPlayButton.js +0 -29
  228. package/dist/src/components/variants/minimal/MinimalSeekBar.d.ts.map +0 -1
  229. package/dist/src/components/variants/minimal/MinimalSeekBar.js +0 -73
  230. package/dist/src/components/variants/minimal/MinimalVolumeControl.d.ts.map +0 -1
  231. package/dist/src/components/variants/minimal/MinimalVolumeControl.js +0 -29
  232. package/dist/src/components/variants/minimal/SimpleMinimalPlayer.d.ts.map +0 -1
  233. package/dist/src/components/variants/minimal/SimpleMinimalPlayer.js +0 -51
  234. package/dist/src/components/variants/minimal/components/CenterPlayButton.d.ts.map +0 -1
  235. package/dist/src/components/variants/minimal/components/CenterPlayButton.js +0 -8
  236. package/dist/src/components/variants/minimal/components/ControlBar.d.ts.map +0 -1
  237. package/dist/src/components/variants/minimal/components/ControlBar.js +0 -10
  238. package/dist/src/components/variants/minimal/components/EnhancedSettingsMenu.d.ts.map +0 -1
  239. package/dist/src/components/variants/minimal/components/EnhancedSettingsMenu.js +0 -68
  240. package/dist/src/components/variants/minimal/components/PlaybackControls.d.ts.map +0 -1
  241. package/dist/src/components/variants/minimal/components/PlaybackControls.js +0 -9
  242. package/dist/src/components/variants/minimal/components/RightControls.d.ts.map +0 -1
  243. package/dist/src/components/variants/minimal/components/RightControls.js +0 -40
  244. package/dist/src/components/variants/minimal/components/SeekBar.d.ts.map +0 -1
  245. package/dist/src/components/variants/minimal/components/SeekBar.js +0 -43
  246. package/dist/src/components/variants/minimal/components/SettingsDropdown.d.ts.map +0 -1
  247. package/dist/src/components/variants/minimal/components/SettingsDropdown.js +0 -18
  248. package/dist/src/components/variants/minimal/components/SubtitleDisplay.d.ts.map +0 -1
  249. package/dist/src/components/variants/minimal/components/SubtitleDisplay.js +0 -6
  250. package/dist/src/components/variants/minimal/components/TimeDisplay.d.ts.map +0 -1
  251. package/dist/src/components/variants/minimal/components/TimeDisplay.js +0 -5
  252. package/dist/src/components/variants/minimal/components/VideoElement.d.ts.map +0 -1
  253. package/dist/src/components/variants/minimal/components/VideoElement.js +0 -4
  254. package/dist/src/components/variants/minimal/components/VolumeControl.d.ts.map +0 -1
  255. package/dist/src/components/variants/minimal/components/VolumeControl.js +0 -99
  256. package/dist/src/components/variants/minimal/index.d.ts.map +0 -1
  257. package/dist/src/components/variants/minimal/index.js +0 -8
  258. package/dist/src/components/video-player.d.ts.map +0 -1
  259. package/dist/src/components/video-player.js +0 -38
  260. package/dist/src/context/error-handling.d.ts.map +0 -1
  261. package/dist/src/context/error-handling.js +0 -300
  262. package/dist/src/context/media-context.d.ts.map +0 -1
  263. package/dist/src/context/media-context.js +0 -121
  264. package/dist/src/context/media-provider.d.ts.map +0 -1
  265. package/dist/src/context/media-provider.js +0 -164
  266. package/dist/src/context/media-store.d.ts.map +0 -1
  267. package/dist/src/context/media-store.js +0 -273
  268. package/dist/src/context/persistence.d.ts.map +0 -1
  269. package/dist/src/context/persistence.js +0 -356
  270. package/dist/src/core/events/event-system.d.ts.map +0 -1
  271. package/dist/src/core/events/event-system.js +0 -288
  272. package/dist/src/core/events/hooks.d.ts.map +0 -1
  273. package/dist/src/core/events/hooks.js +0 -198
  274. package/dist/src/core/events/index.d.ts.map +0 -1
  275. package/dist/src/core/events/index.js +0 -7
  276. package/dist/src/core/events/middleware.d.ts.map +0 -1
  277. package/dist/src/core/events/middleware.js +0 -219
  278. package/dist/src/core/index.d.ts.map +0 -1
  279. package/dist/src/core/index.js +0 -15
  280. package/dist/src/core/optimization/bundle-optimizer.d.ts.map +0 -1
  281. package/dist/src/core/optimization/bundle-optimizer.js +0 -217
  282. package/dist/src/core/performance/cicd.d.ts.map +0 -1
  283. package/dist/src/core/performance/cicd.js +0 -83
  284. package/dist/src/core/performance/index.d.ts.map +0 -1
  285. package/dist/src/core/performance/index.js +0 -14
  286. package/dist/src/core/performance/media-loading-optimizer.d.ts.map +0 -1
  287. package/dist/src/core/performance/media-loading-optimizer.js +0 -404
  288. package/dist/src/core/performance/performance-budgets.d.ts.map +0 -1
  289. package/dist/src/core/performance/performance-budgets.js +0 -326
  290. package/dist/src/core/performance/performance-monitor.d.ts.map +0 -1
  291. package/dist/src/core/performance/performance-monitor.js +0 -297
  292. package/dist/src/core/performance/performance-testing.d.ts.map +0 -1
  293. package/dist/src/core/performance/performance-testing.js +0 -314
  294. package/dist/src/core/plugins/base-plugin.d.ts.map +0 -1
  295. package/dist/src/core/plugins/base-plugin.js +0 -151
  296. package/dist/src/core/plugins/enhanced-plugin-system.d.ts.map +0 -1
  297. package/dist/src/core/plugins/enhanced-plugin-system.js +0 -305
  298. package/dist/src/core/plugins/examples/analytics-plugin.d.ts.map +0 -1
  299. package/dist/src/core/plugins/examples/analytics-plugin.js +0 -191
  300. package/dist/src/core/plugins/index.d.ts.map +0 -1
  301. package/dist/src/core/plugins/index.js +0 -9
  302. package/dist/src/core/plugins/registry.d.ts.map +0 -1
  303. package/dist/src/core/plugins/registry.js +0 -261
  304. package/dist/src/core/plugins/types.d.ts.map +0 -1
  305. package/dist/src/core/plugins/types.js +0 -31
  306. package/dist/src/core/plugins/utils.d.ts.map +0 -1
  307. package/dist/src/core/plugins/utils.js +0 -274
  308. package/dist/src/core/progressive-loading.d.ts.map +0 -1
  309. package/dist/src/core/progressive-loading.js +0 -239
  310. package/dist/src/core/providers/enhanced-hls-provider.d.ts.map +0 -1
  311. package/dist/src/core/providers/enhanced-hls-provider.js +0 -273
  312. package/dist/src/core/providers/service-provider.d.ts.map +0 -1
  313. package/dist/src/core/providers/service-provider.js +0 -105
  314. package/dist/src/core/utils.d.ts.map +0 -1
  315. package/dist/src/core/utils.js +0 -21
  316. package/dist/src/features/media-session/media-session-manager.d.ts.map +0 -1
  317. package/dist/src/features/media-session/media-session-manager.js +0 -331
  318. package/dist/src/features/picture-in-picture/pip-manager.d.ts.map +0 -1
  319. package/dist/src/features/picture-in-picture/pip-manager.js +0 -353
  320. package/dist/src/features/playlist/playlist-manager.d.ts.map +0 -1
  321. package/dist/src/features/playlist/playlist-manager.js +0 -475
  322. package/dist/src/features/subtitles/subtitle-manager.d.ts.map +0 -1
  323. package/dist/src/features/subtitles/subtitle-manager.js +0 -335
  324. package/dist/src/features/subtitles/subtitle-parser.d.ts.map +0 -1
  325. package/dist/src/features/subtitles/subtitle-parser.js +0 -217
  326. package/dist/src/features/thumbnails/thumbnail-generator.d.ts.map +0 -1
  327. package/dist/src/features/thumbnails/thumbnail-generator.js +0 -388
  328. package/dist/src/hooks/accessibility/index.d.ts.map +0 -1
  329. package/dist/src/hooks/accessibility/index.js +0 -4
  330. package/dist/src/hooks/accessibility/use-accessibility-preferences.d.ts.map +0 -1
  331. package/dist/src/hooks/accessibility/use-accessibility-preferences.js +0 -156
  332. package/dist/src/hooks/accessibility/use-focus-management.d.ts.map +0 -1
  333. package/dist/src/hooks/accessibility/use-focus-management.js +0 -142
  334. package/dist/src/hooks/accessibility/use-keyboard-shortcuts.d.ts.map +0 -1
  335. package/dist/src/hooks/accessibility/use-keyboard-shortcuts.js +0 -101
  336. package/dist/src/hooks/accessibility/use-screen-reader.d.ts.map +0 -1
  337. package/dist/src/hooks/accessibility/use-screen-reader.js +0 -148
  338. package/dist/src/hooks/core/index.d.ts.map +0 -1
  339. package/dist/src/hooks/core/index.js +0 -19
  340. package/dist/src/hooks/legacy.d.ts.map +0 -1
  341. package/dist/src/hooks/legacy.js +0 -17
  342. package/dist/src/hooks/use-enhanced-media-player.d.ts.map +0 -1
  343. package/dist/src/hooks/use-enhanced-media-player.js +0 -395
  344. package/dist/src/hooks/use-intelligent-preloading.d.ts.map +0 -1
  345. package/dist/src/hooks/use-intelligent-preloading.js +0 -258
  346. package/dist/src/hooks/use-keyboard-controls.d.ts.map +0 -1
  347. package/dist/src/hooks/use-keyboard-controls.js +0 -83
  348. package/dist/src/hooks/use-media-actions.d.ts.map +0 -1
  349. package/dist/src/hooks/use-media-actions.js +0 -121
  350. package/dist/src/hooks/use-media-metadata.d.ts.map +0 -1
  351. package/dist/src/hooks/use-media-metadata.js +0 -74
  352. package/dist/src/hooks/use-media-optimistic.d.ts.map +0 -1
  353. package/dist/src/hooks/use-media-optimistic.js +0 -205
  354. package/dist/src/hooks/use-media-player.d.ts.map +0 -1
  355. package/dist/src/hooks/use-media-player.js +0 -251
  356. package/dist/src/hooks/use-media-state.d.ts.map +0 -1
  357. package/dist/src/hooks/use-media-state.js +0 -162
  358. package/dist/src/hooks/use-memory-optimization.d.ts.map +0 -1
  359. package/dist/src/hooks/use-memory-optimization.js +0 -288
  360. package/dist/src/hooks/use-optimistic-controls.d.ts.map +0 -1
  361. package/dist/src/hooks/use-optimistic-controls.js +0 -60
  362. package/dist/src/hooks/use-optimized-media.d.ts.map +0 -1
  363. package/dist/src/hooks/use-optimized-media.js +0 -211
  364. package/dist/src/hooks/use-touch-gestures.d.ts.map +0 -1
  365. package/dist/src/hooks/use-touch-gestures.js +0 -289
  366. package/dist/src/hooks/useEnhancedSubtitles.d.ts.map +0 -1
  367. package/dist/src/hooks/useEnhancedSubtitles.js +0 -205
  368. package/dist/src/hooks/useKeyboardShortcuts.d.ts.map +0 -1
  369. package/dist/src/hooks/useKeyboardShortcuts.js +0 -59
  370. package/dist/src/hooks/useMediaControls.d.ts.map +0 -1
  371. package/dist/src/hooks/useMediaControls.js +0 -44
  372. package/dist/src/hooks/useScreenshot.d.ts.map +0 -1
  373. package/dist/src/hooks/useScreenshot.js +0 -56
  374. package/dist/src/hooks/useSubtitles.d.ts.map +0 -1
  375. package/dist/src/hooks/useSubtitles.js +0 -73
  376. package/dist/src/hooks/useVideoPlayer.d.ts.map +0 -1
  377. package/dist/src/hooks/useVideoPlayer.js +0 -184
  378. package/dist/src/icons/components/FullscreenIcon.d.ts.map +0 -1
  379. package/dist/src/icons/components/FullscreenIcon.js +0 -11
  380. package/dist/src/icons/components/SettingsIcon.d.ts.map +0 -1
  381. package/dist/src/icons/components/SettingsIcon.js +0 -11
  382. package/dist/src/icons/components/animated/LoadingIcon.d.ts.map +0 -1
  383. package/dist/src/icons/components/animated/LoadingIcon.js +0 -11
  384. package/dist/src/icons/components/animated/PlayPauseIcon.d.ts.map +0 -1
  385. package/dist/src/icons/components/animated/PlayPauseIcon.js +0 -9
  386. package/dist/src/icons/components/media/PauseIcon.d.ts.map +0 -1
  387. package/dist/src/icons/components/media/PauseIcon.js +0 -12
  388. package/dist/src/icons/components/media/PlayIcon.d.ts.map +0 -1
  389. package/dist/src/icons/components/media/PlayIcon.js +0 -12
  390. package/dist/src/icons/components/volume/VolumeIcon.d.ts.map +0 -1
  391. package/dist/src/icons/components/volume/VolumeIcon.js +0 -11
  392. package/dist/src/icons/components/volume/VolumeOffIcon.d.ts.map +0 -1
  393. package/dist/src/icons/components/volume/VolumeOffIcon.js +0 -11
  394. package/dist/src/icons/index.d.ts.map +0 -1
  395. package/dist/src/icons/index.js +0 -45
  396. package/dist/src/icons/provider.d.ts.map +0 -1
  397. package/dist/src/icons/provider.js +0 -37
  398. package/dist/src/icons/types.d.ts.map +0 -1
  399. package/dist/src/icons/types.js +0 -1
  400. package/dist/src/index-enhanced.d.ts.map +0 -1
  401. package/dist/src/index-enhanced.js +0 -16
  402. package/dist/src/index-legacy.d.ts.map +0 -1
  403. package/dist/src/index-legacy.js +0 -97
  404. package/dist/src/index.d.ts.map +0 -1
  405. package/dist/src/index.js +0 -90
  406. package/dist/src/index.minimal.d.ts.map +0 -1
  407. package/dist/src/index.minimal.js +0 -3
  408. package/dist/src/lib/deprecation.d.ts.map +0 -1
  409. package/dist/src/lib/deprecation.js +0 -31
  410. package/dist/src/lib/format-time.d.ts.map +0 -1
  411. package/dist/src/lib/format-time.js +0 -32
  412. package/dist/src/lib/index.d.ts.map +0 -1
  413. package/dist/src/lib/index.js +0 -3
  414. package/dist/src/lib/utils.d.ts.map +0 -1
  415. package/dist/src/lib/utils.js +0 -5
  416. package/dist/src/test/setup.d.ts.map +0 -1
  417. package/dist/src/test/setup.js +0 -65
  418. package/dist/src/types/events.d.ts.map +0 -1
  419. package/dist/src/types/events.js +0 -2
  420. package/dist/src/types/formats.d.ts.map +0 -1
  421. package/dist/src/types/formats.js +0 -63
  422. package/dist/src/types/index.d.ts.map +0 -1
  423. package/dist/src/types/index.js +0 -4
  424. package/dist/utils-Db13763z.cjs +0 -9
  425. package/dist/utils-Db13763z.cjs.map +0 -1
  426. package/dist/utils-nTO4AnHo.js +0 -2809
  427. package/dist/utils-nTO4AnHo.js.map +0 -1
  428. package/dist/utils.js +0 -2
  429. package/dist/utils.js.map +0 -1
  430. package/dist/utils.mjs +0 -7
  431. package/dist/utils.mjs.map +0 -1
  432. package/src/adapters/videojs-adapter.js +0 -350
  433. package/src/components/AnimateLoading.js +0 -41
  434. package/src/components/LoadingState.js +0 -111
  435. package/src/components/accessibility/keyboard-help-overlay.js +0 -90
  436. package/src/components/audio-player.js +0 -31
  437. package/src/components/basic/index.js +0 -29
  438. package/src/components/enhanced/advanced-features.js +0 -64
  439. package/src/components/enhanced/debug-panel.js +0 -94
  440. package/src/components/enhanced/enhanced-controls.js +0 -233
  441. package/src/components/enhanced/enhanced-media-player.js +0 -316
  442. package/src/components/enhanced/error-handling.js +0 -153
  443. package/src/components/enhanced/index.js +0 -10
  444. package/src/components/enhanced/media-player-enhanced.js +0 -250
  445. package/src/components/examples/basic-video-player.js +0 -16
  446. package/src/components/examples/custom-controls-example.js +0 -12
  447. package/src/components/examples/enhanced-controls-example.js +0 -18
  448. package/src/components/examples/enhanced-media-player-example.js +0 -13
  449. package/src/components/examples/loading-states-demo.js +0 -41
  450. package/src/components/examples/react-19-demo.js +0 -104
  451. package/src/components/examples/volume-orientation-demo.js +0 -31
  452. package/src/components/icon-demo.js +0 -16
  453. package/src/components/icons/index.js +0 -59
  454. package/src/components/icons/svg-icons/ArrowLeftIcon.js +0 -3
  455. package/src/components/icons/svg-icons/ArrowRightIcon.js +0 -3
  456. package/src/components/icons/svg-icons/AudioIcon.js +0 -4
  457. package/src/components/icons/svg-icons/BackwardIcon.js +0 -3
  458. package/src/components/icons/svg-icons/CameraIcon.js +0 -4
  459. package/src/components/icons/svg-icons/CheckIcon.js +0 -4
  460. package/src/components/icons/svg-icons/EnablePiPIcon.js +0 -5
  461. package/src/components/icons/svg-icons/ForwardIcon.js +0 -3
  462. package/src/components/icons/svg-icons/FullscreenEnterIcon.js +0 -3
  463. package/src/components/icons/svg-icons/FullscreenExitIcon.js +0 -3
  464. package/src/components/icons/svg-icons/LoadingIcon.js +0 -3
  465. package/src/components/icons/svg-icons/PauseIcon.js +0 -3
  466. package/src/components/icons/svg-icons/PlayIcon.js +0 -3
  467. package/src/components/icons/svg-icons/PlaybackSpeedIcon.js +0 -3
  468. package/src/components/icons/svg-icons/QualityIcon.js +0 -3
  469. package/src/components/icons/svg-icons/SettingsIcon.js +0 -3
  470. package/src/components/icons/svg-icons/SliderIcon.js +0 -3
  471. package/src/components/icons/svg-icons/SubtitleIcon.js +0 -3
  472. package/src/components/icons/svg-icons/SubtitleOffIcon.js +0 -3
  473. package/src/components/icons/svg-icons/UnPiPIcon.js +0 -5
  474. package/src/components/icons/svg-icons/VolumeMutedIcon.js +0 -3
  475. package/src/components/icons/svg-icons/VolumeOneIcon.js +0 -3
  476. package/src/components/icons/svg-icons/VolumeThreeIcon.js +0 -3
  477. package/src/components/icons/svg-icons/VolumeTwoIcon.js +0 -3
  478. package/src/components/legacy.js +0 -52
  479. package/src/components/media-metadata-display.js +0 -20
  480. package/src/components/media-player-audio.js +0 -18
  481. package/src/components/media-player-controls.js +0 -150
  482. package/src/components/media-player-error.js +0 -85
  483. package/src/components/media-player-fullscreen.js +0 -68
  484. package/src/components/media-player-hls.js +0 -20
  485. package/src/components/media-player-loading.js +0 -53
  486. package/src/components/media-player-play.js +0 -44
  487. package/src/components/media-player-root.js +0 -243
  488. package/src/components/media-player-seek.js +0 -92
  489. package/src/components/media-player-time.js +0 -57
  490. package/src/components/media-player-tooltip.js +0 -14
  491. package/src/components/media-player-video.js +0 -18
  492. package/src/components/media-player-volume.js +0 -88
  493. package/src/components/media-player.js +0 -67
  494. package/src/components/media-suspense.js +0 -173
  495. package/src/components/player-settings-form.js +0 -46
  496. package/src/components/react-player-wrapper.js +0 -163
  497. package/src/components/simple-video-player.js +0 -41
  498. package/src/components/ui/enhanced-seek-bar.js +0 -112
  499. package/src/components/ui/fullscreen-button.js +0 -21
  500. package/src/components/ui/media-resource-preloader.js +0 -295
  501. package/src/components/ui/play-button.js +0 -26
  502. package/src/components/ui/seek-bar.js +0 -54
  503. package/src/components/ui/time-display.js +0 -18
  504. package/src/components/ui/volume-control.js +0 -71
  505. package/src/components/unified/base-media-player.js +0 -104
  506. package/src/components/unified/media-player.js +0 -41
  507. package/src/components/variants/minimal/AccessibleMinimalPlayer.js +0 -322
  508. package/src/components/variants/minimal/EnhancedMinimalMediaPlayer.js +0 -280
  509. package/src/components/variants/minimal/MinimalControls.js +0 -19
  510. package/src/components/variants/minimal/MinimalLoading.js +0 -6
  511. package/src/components/variants/minimal/MinimalMediaPlayer.js +0 -135
  512. package/src/components/variants/minimal/MinimalOverlay.js +0 -15
  513. package/src/components/variants/minimal/MinimalPlayButton.js +0 -29
  514. package/src/components/variants/minimal/MinimalSeekBar.js +0 -73
  515. package/src/components/variants/minimal/MinimalVolumeControl.js +0 -29
  516. package/src/components/variants/minimal/SimpleMinimalPlayer.js +0 -51
  517. package/src/components/variants/minimal/components/CenterPlayButton.js +0 -8
  518. package/src/components/variants/minimal/components/ControlBar.js +0 -10
  519. package/src/components/variants/minimal/components/EnhancedSettingsMenu.js +0 -68
  520. package/src/components/variants/minimal/components/PlaybackControls.js +0 -9
  521. package/src/components/variants/minimal/components/RightControls.js +0 -40
  522. package/src/components/variants/minimal/components/SeekBar.js +0 -43
  523. package/src/components/variants/minimal/components/SettingsDropdown.js +0 -18
  524. package/src/components/variants/minimal/components/SubtitleDisplay.js +0 -6
  525. package/src/components/variants/minimal/components/TimeDisplay.js +0 -5
  526. package/src/components/variants/minimal/components/VideoElement.js +0 -4
  527. package/src/components/variants/minimal/components/VolumeControl.js +0 -99
  528. package/src/components/variants/minimal/index.js +0 -8
  529. package/src/components/video-player.js +0 -38
  530. package/src/context/error-handling.js +0 -300
  531. package/src/context/media-context.js +0 -121
  532. package/src/context/media-provider.js +0 -164
  533. package/src/context/media-store.js +0 -273
  534. package/src/context/persistence.js +0 -356
  535. package/src/core/events/event-system.js +0 -288
  536. package/src/core/events/hooks.js +0 -198
  537. package/src/core/events/index.js +0 -7
  538. package/src/core/events/middleware.js +0 -219
  539. package/src/core/index.js +0 -15
  540. package/src/core/optimization/bundle-optimizer.js +0 -217
  541. package/src/core/performance/cicd.js +0 -83
  542. package/src/core/performance/index.js +0 -14
  543. package/src/core/performance/media-loading-optimizer.js +0 -404
  544. package/src/core/performance/performance-budgets.js +0 -326
  545. package/src/core/performance/performance-monitor.js +0 -297
  546. package/src/core/performance/performance-testing.js +0 -314
  547. package/src/core/plugins/base-plugin.js +0 -151
  548. package/src/core/plugins/enhanced-plugin-system.js +0 -305
  549. package/src/core/plugins/examples/analytics-plugin.js +0 -191
  550. package/src/core/plugins/index.js +0 -9
  551. package/src/core/plugins/registry.js +0 -261
  552. package/src/core/plugins/types.js +0 -31
  553. package/src/core/plugins/utils.js +0 -274
  554. package/src/core/progressive-loading.js +0 -239
  555. package/src/core/providers/enhanced-hls-provider.js +0 -273
  556. package/src/core/providers/service-provider.js +0 -105
  557. package/src/core/utils.js +0 -21
  558. package/src/features/media-session/media-session-manager.js +0 -331
  559. package/src/features/picture-in-picture/pip-manager.js +0 -353
  560. package/src/features/playlist/playlist-manager.js +0 -475
  561. package/src/features/subtitles/subtitle-manager.js +0 -335
  562. package/src/features/subtitles/subtitle-parser.js +0 -217
  563. package/src/features/thumbnails/thumbnail-generator.js +0 -388
  564. package/src/hooks/accessibility/index.js +0 -4
  565. package/src/hooks/accessibility/use-accessibility-preferences.js +0 -156
  566. package/src/hooks/accessibility/use-focus-management.js +0 -142
  567. package/src/hooks/accessibility/use-keyboard-shortcuts.js +0 -101
  568. package/src/hooks/accessibility/use-screen-reader.js +0 -148
  569. package/src/hooks/core/index.js +0 -19
  570. package/src/hooks/legacy.js +0 -17
  571. package/src/hooks/use-enhanced-media-player.js +0 -395
  572. package/src/hooks/use-intelligent-preloading.js +0 -258
  573. package/src/hooks/use-keyboard-controls.js +0 -83
  574. package/src/hooks/use-media-actions.js +0 -121
  575. package/src/hooks/use-media-metadata.js +0 -74
  576. package/src/hooks/use-media-optimistic.js +0 -205
  577. package/src/hooks/use-media-player.js +0 -251
  578. package/src/hooks/use-media-state.js +0 -162
  579. package/src/hooks/use-memory-optimization.js +0 -288
  580. package/src/hooks/use-optimistic-controls.js +0 -60
  581. package/src/hooks/use-optimized-media.js +0 -211
  582. package/src/hooks/use-touch-gestures.js +0 -289
  583. package/src/hooks/useEnhancedSubtitles.js +0 -205
  584. package/src/hooks/useKeyboardShortcuts.js +0 -59
  585. package/src/hooks/useMediaControls.js +0 -44
  586. package/src/hooks/useScreenshot.js +0 -56
  587. package/src/hooks/useSubtitles.js +0 -73
  588. package/src/hooks/useVideoPlayer.js +0 -184
  589. package/src/icons/components/FullscreenIcon.js +0 -11
  590. package/src/icons/components/SettingsIcon.js +0 -11
  591. package/src/icons/components/animated/LoadingIcon.js +0 -11
  592. package/src/icons/components/animated/PlayPauseIcon.js +0 -9
  593. package/src/icons/components/media/PauseIcon.js +0 -12
  594. package/src/icons/components/media/PlayIcon.js +0 -12
  595. package/src/icons/components/volume/VolumeIcon.js +0 -11
  596. package/src/icons/components/volume/VolumeOffIcon.js +0 -11
  597. package/src/icons/index.js +0 -45
  598. package/src/icons/provider.js +0 -37
  599. package/src/icons/types.js +0 -1
  600. package/src/index-enhanced.js +0 -16
  601. package/src/index-legacy.js +0 -97
  602. package/src/index.js +0 -90
  603. package/src/index.minimal.js +0 -3
  604. package/src/lib/deprecation.js +0 -31
  605. package/src/lib/format-time.js +0 -32
  606. package/src/lib/index.js +0 -3
  607. package/src/lib/utils.js +0 -5
  608. package/src/test/setup.js +0 -65
  609. package/src/types/events.js +0 -2
  610. package/src/types/formats.js +0 -63
  611. package/src/types/index.js +0 -4
@@ -1,112 +0,0 @@
1
- "use client";
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import * as Slider from "@radix-ui/react-slider";
4
- import * as Tooltip from "@radix-ui/react-tooltip";
5
- import { forwardRef, useCallback, useState, useMemo, useTransition, useDeferredValue, useRef } from "react";
6
- import { formatTime } from "../../lib/format-time";
7
- import { cn } from "../../lib/utils";
8
- export const EnhancedSeekBar = forwardRef(({ currentTime, duration, buffered, onSeek, size = "sm", className }, ref) => {
9
- // React 19 concurrent features
10
- const [isPending, startTransition] = useTransition();
11
- const [isDragging, setIsDragging] = useState(false);
12
- const [previewTime, setPreviewTime] = useState(0);
13
- const [isHovering, setIsHovering] = useState(false);
14
- // Defer non-critical updates for better performance
15
- const deferredHovering = useDeferredValue(isHovering);
16
- const deferredPreviewTime = useDeferredValue(previewTime);
17
- // Throttling refs
18
- const seekTimeoutRef = useRef();
19
- const lastSeekTime = useRef(0);
20
- const rafId = useRef();
21
- // Memoize expensive calculations
22
- const progress = useMemo(() => duration > 0 ? (currentTime / duration) * 100 : 0, [currentTime, duration]);
23
- // Calculate buffered ranges with memoization
24
- const bufferedRanges = useMemo(() => {
25
- const ranges = [];
26
- if (buffered && duration > 0) {
27
- for (let i = 0; i < buffered.length; i++) {
28
- const start = (buffered.start(i) / duration) * 100;
29
- const end = (buffered.end(i) / duration) * 100;
30
- ranges.push({ start, end });
31
- }
32
- }
33
- return ranges;
34
- }, [buffered, duration]);
35
- // Optimized value change handler with throttling and RAF
36
- const handleValueChange = useCallback(([value]) => {
37
- const time = ((value ?? 0) / 100) * duration;
38
- setPreviewTime(time);
39
- // Cancel any pending RAF
40
- if (rafId.current) {
41
- cancelAnimationFrame(rafId.current);
42
- }
43
- if (isDragging) {
44
- // Clear previous timeout
45
- if (seekTimeoutRef.current) {
46
- clearTimeout(seekTimeoutRef.current);
47
- }
48
- // Use RAF for smooth updates during dragging
49
- rafId.current = requestAnimationFrame(() => {
50
- const now = performance.now();
51
- const timeDiff = now - lastSeekTime.current;
52
- const timeJump = Math.abs(time - currentTime);
53
- // Only seek if enough time has passed or if this is a large jump
54
- if (timeDiff > 16 || timeJump > 0.5) { // 60fps = 16ms per frame
55
- startTransition(() => {
56
- onSeek(time);
57
- });
58
- lastSeekTime.current = now;
59
- }
60
- else {
61
- // Defer the seek
62
- seekTimeoutRef.current = setTimeout(() => {
63
- startTransition(() => {
64
- onSeek(time);
65
- });
66
- lastSeekTime.current = performance.now();
67
- }, 16);
68
- }
69
- });
70
- }
71
- }, [duration, isDragging, onSeek, currentTime, startTransition]);
72
- const handleValueCommit = useCallback(([value]) => {
73
- const time = ((value ?? 0) / 100) * duration;
74
- // Cancel any pending RAF
75
- if (rafId.current) {
76
- cancelAnimationFrame(rafId.current);
77
- }
78
- // Clear any pending seeks
79
- if (seekTimeoutRef.current) {
80
- clearTimeout(seekTimeoutRef.current);
81
- }
82
- startTransition(() => {
83
- onSeek(time);
84
- });
85
- setIsDragging(false);
86
- }, [duration, onSeek, startTransition]);
87
- const handlePointerDown = useCallback(() => {
88
- setIsDragging(true);
89
- lastSeekTime.current = performance.now();
90
- }, []);
91
- // Cleanup on unmount
92
- useMemo(() => {
93
- return () => {
94
- if (rafId.current) {
95
- cancelAnimationFrame(rafId.current);
96
- }
97
- if (seekTimeoutRef.current) {
98
- clearTimeout(seekTimeoutRef.current);
99
- }
100
- };
101
- }, []);
102
- // Memoize tooltip content to prevent re-renders
103
- const tooltipContent = useMemo(() => {
104
- return (_jsx("div", { className: cn("rounded bg-black/80 px-2 py-1 text-sm text-white", "fade-in-0 zoom-in-95 animate-in"), children: formatTime(deferredPreviewTime) }));
105
- }, [deferredPreviewTime]);
106
- return (_jsx("div", { ref: ref, className: cn("media-container relative w-full text-[color:var(--media-text)]", "touch-manipulation contain-layout", className), onMouseEnter: () => setIsHovering(true), onMouseLeave: () => setIsHovering(false), children: _jsx(Tooltip.Provider, { children: _jsxs(Tooltip.Root, { children: [_jsx(Tooltip.Trigger, { asChild: true, children: _jsx("div", { className: "relative animate-enter", children: _jsxs(Slider.Root, { className: cn("group relative flex w-full touch-none select-none items-center", "media-md:h-4 media-sm:h-3 media-xs:h-2", "focus-ring cursor-pointer", isPending && "opacity-75"), value: [progress], max: 100, step: 0.1, onValueChange: handleValueChange, onValueCommit: handleValueCommit, onPointerDown: handlePointerDown, "aria-label": "Seek to position", children: [_jsxs(Slider.Track, { className: cn("relative grow overflow-hidden rounded-full", "bg-[color:var(--media-control-bg)]/40 backdrop-blur-sm", "border border-[color:var(--media-border)]/20", "shadow-inner transition-all duration-300 ease-out", "h-1 group-focus-within:h-1.5 group-hover:h-1.5", "group-hover:bg-[color:var(--media-control-bg)]/60", "group-hover:border-[color:var(--media-border)]/40"), children: [bufferedRanges.map((range, index) => (_jsx("div", { className: cn("absolute h-full rounded-full transition-all duration-500", "bg-[color:var(--color-media-buffered)] shadow-inner", "opacity-60 group-hover:opacity-80"), style: {
107
- left: `${range.start}%`,
108
- width: `${range.end - range.start}%`,
109
- willChange: 'width, left'
110
- } }, `${range.start}-${range.end}-${index}`))), _jsx(Slider.Range, { className: cn("absolute h-full rounded-full transition-all duration-300", "bg-gradient-to-r from-[color:var(--color-media-progress)] to-[color:var(--color-brand-accent)]", "shadow-[color:var(--color-brand-primary)]/20 shadow-lg", "group-hover:shadow-xl", isDragging && "transition-none") })] }), _jsx(Slider.Thumb, { className: cn("block size-4 rounded-full border-white/20 bg-white", "shadow-lg hover:shadow-xl", "opacity-0 group-hover:opacity-100", "hover:scale-110 hover:bg-white/95 active:scale-95", "focus:opacity-100 focus:outline-none focus:ring-2 focus:ring-white/50", "focus:ring-offset-2 focus:ring-offset-black/20", "transition-all duration-300 ease-out", isDragging && "scale-110 opacity-100", isPending && "animate-pulse"), "aria-label": "Seek" })] }) }) }), (isDragging || deferredHovering) && (_jsx(Tooltip.Portal, { children: _jsxs(Tooltip.Content, { sideOffset: 10, className: "data-[state=delayed-open]:data-[side=bottom]:animate-slideUpAndFade data-[state=delayed-open]:data-[side=left]:animate-slideRightAndFade data-[state=delayed-open]:data-[side=right]:animate-slideLeftAndFade data-[state=delayed-open]:data-[side=top]:animate-slideDownAndFade", children: [tooltipContent, _jsx(Tooltip.Arrow, { className: "fill-black/80" })] }) }))] }) }) }));
111
- });
112
- EnhancedSeekBar.displayName = "EnhancedSeekBar";
@@ -1,21 +0,0 @@
1
- "use client";
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import * as Tooltip from "@radix-ui/react-tooltip";
4
- import { Maximize, Minimize } from "lucide-react";
5
- import { forwardRef } from "react";
6
- import { cn } from "../../lib/utils";
7
- export const FullscreenButton = forwardRef(({ isFullscreen, onToggle, disabled = false, size = "lg", className }, ref) => {
8
- const Icon = isFullscreen ? Minimize : Maximize;
9
- const buttonSizes = {
10
- md: "h-11 w-11",
11
- lg: "h-12 w-12",
12
- xl: "h-14 w-14"
13
- };
14
- const iconSizes = {
15
- md: "h-5 w-5",
16
- lg: "h-6 w-6",
17
- xl: "h-7 w-7"
18
- };
19
- return (_jsx(Tooltip.Provider, { children: _jsxs(Tooltip.Root, { children: [_jsx(Tooltip.Trigger, { asChild: true, children: _jsx("button", { ref: ref, type: "button", onClick: onToggle, disabled: disabled, className: cn("inline-flex items-center justify-center rounded-lg bg-transparent p-0 text-white transition-all hover:text-cyan-700 active:scale-95", "focus:outline-none focus:ring-2 focus:ring-white/50 focus:ring-offset-2 focus:ring-offset-black/20", "disabled:cursor-not-allowed disabled:opacity-50", buttonSizes[size], className), "aria-label": isFullscreen ? "Exit fullscreen" : "Enter fullscreen", children: _jsx(Icon, { className: cn(iconSizes[size]) }) }) }), _jsx(Tooltip.Portal, { children: _jsxs(Tooltip.Content, { className: cn("rounded bg-black/80 px-2 py-1 text-sm text-white", "fade-in-0 zoom-in-95 animate-in"), sideOffset: 5, children: [isFullscreen ? "Exit fullscreen" : "Enter fullscreen", _jsx(Tooltip.Arrow, { className: "fill-black/80" })] }) })] }) }));
20
- });
21
- FullscreenButton.displayName = "FullscreenButton";
@@ -1,295 +0,0 @@
1
- /**
2
- * Media Resource Preloader using React 19's resource preloading APIs
3
- * Implements intelligent preloading strategies based on user behavior and network conditions
4
- */
5
- import { useEffect, useRef, useMemo } from 'react';
6
- import { prefetchDNS, preconnect, preload, preinit } from 'react-dom';
7
- export const MediaResourcePreloader = ({ sources, enableIntelligentPreloading = true, adaptToNetworkConditions = true, priority = 'auto', strategy = 'adaptive', }) => {
8
- const networkInfoRef = useRef(null);
9
- const userBehaviorRef = useRef(null);
10
- const preloadingHistoryRef = useRef(new Map());
11
- // Analyze sources and determine preloading configuration
12
- const preloadingConfig = useMemo(() => {
13
- const config = {
14
- dnsPrefetch: [],
15
- preconnect: [],
16
- preload: [],
17
- preinit: [],
18
- };
19
- sources.forEach((source) => {
20
- const url = new URL(source.src);
21
- const domain = url.origin;
22
- // DNS prefetch for CDN domains
23
- if (isCDNDomain(domain)) {
24
- config.dnsPrefetch.push(domain);
25
- }
26
- // Preconnect to media domains
27
- if (shouldPreconnect(source.type, strategy)) {
28
- config.preconnect.push(domain);
29
- }
30
- // Preload media files based on strategy
31
- if (shouldPreload(source, priority, strategy)) {
32
- config.preload.push({
33
- url: source.src,
34
- type: getPreloadType(source.type),
35
- });
36
- }
37
- // Preinit critical resources
38
- if (shouldPreinit(source, strategy)) {
39
- config.preinit.push({
40
- url: source.src,
41
- type: 'script',
42
- });
43
- }
44
- });
45
- return config;
46
- }, [sources, priority, strategy]);
47
- // Initialize network monitoring
48
- useEffect(() => {
49
- if (adaptToNetworkConditions && 'connection' in navigator) {
50
- networkInfoRef.current = navigator.connection;
51
- const handleNetworkChange = () => {
52
- adjustPreloadingStrategy();
53
- };
54
- networkInfoRef.current.addEventListener('change', handleNetworkChange);
55
- return () => {
56
- networkInfoRef.current?.removeEventListener('change', handleNetworkChange);
57
- };
58
- }
59
- }, [adaptToNetworkConditions]);
60
- // Initialize user behavior tracking
61
- useEffect(() => {
62
- if (enableIntelligentPreloading) {
63
- userBehaviorRef.current = new UserBehaviorTracker();
64
- userBehaviorRef.current.startTracking();
65
- return () => {
66
- userBehaviorRef.current?.stopTracking();
67
- };
68
- }
69
- }, [enableIntelligentPreloading]);
70
- // Apply DNS prefetching
71
- useEffect(() => {
72
- preloadingConfig.dnsPrefetch.forEach((domain) => {
73
- prefetchDNS(domain);
74
- });
75
- }, [preloadingConfig.dnsPrefetch]);
76
- // Apply preconnections
77
- useEffect(() => {
78
- preloadingConfig.preconnect.forEach((origin) => {
79
- preconnect(origin, { crossOrigin: 'anonymous' });
80
- });
81
- }, [preloadingConfig.preconnect]);
82
- // Apply preloading
83
- useEffect(() => {
84
- preloadingConfig.preload.forEach(({ url, type }) => {
85
- const crossOrigin = shouldUseCrossOrigin(url) ? 'anonymous' : undefined;
86
- preload(url, {
87
- as: type,
88
- crossOrigin,
89
- integrity: getAssetIntegrity(url),
90
- priority,
91
- });
92
- });
93
- }, [preloadingConfig.preload, priority]);
94
- // Apply preinit for critical resources
95
- useEffect(() => {
96
- preloadingConfig.preinit.forEach(({ url, type }) => {
97
- const crossOrigin = shouldUseCrossOrigin(url) ? 'anonymous' : undefined;
98
- preinit(url, {
99
- as: type,
100
- crossOrigin,
101
- });
102
- });
103
- }, [preloadingConfig.preinit]);
104
- // Intelligent preloading based on user behavior
105
- useEffect(() => {
106
- if (!enableIntelligentPreloading || !userBehaviorRef.current)
107
- return;
108
- const handleUserBehavior = (behavior) => {
109
- if (behavior.isLikelyToInteract) {
110
- preloadLikelyContent(behavior.predictedSources);
111
- }
112
- };
113
- userBehaviorRef.current.onBehaviorChange(handleUserBehavior);
114
- }, [enableIntelligentPreloading]);
115
- // Helper functions
116
- function isCDNDomain(domain) {
117
- const cdnDomains = [
118
- 'cdn.jsdelivr.net',
119
- 'cdnjs.cloudflare.com',
120
- 'unpkg.com',
121
- 'cloudflare.com',
122
- 'fastly.net',
123
- 'akamaized.net',
124
- ];
125
- return cdnDomains.some((cdn) => domain.includes(cdn));
126
- }
127
- function shouldPreconnect(mediaType, strategy) {
128
- if (strategy === 'aggressive')
129
- return true;
130
- if (strategy === 'conservative')
131
- return ['hls', 'm3u8'].includes(mediaType);
132
- return ['hls', 'm3u8', 'mp4'].includes(mediaType);
133
- }
134
- function shouldPreload(source, priority, strategy) {
135
- // Check if already preloaded recently
136
- const lastPreload = preloadingHistoryRef.current.get(source.src);
137
- if (lastPreload && Date.now() - lastPreload < 300000)
138
- return false; // 5 minutes
139
- // Strategy-based decision
140
- if (strategy === 'conservative') {
141
- return priority === 'high' && source.type === 'hls';
142
- }
143
- if (strategy === 'aggressive') {
144
- return true;
145
- }
146
- // Adaptive strategy
147
- return shouldAdaptivePreload(source, priority);
148
- }
149
- function shouldAdaptivePreload(source, priority) {
150
- // Consider network conditions
151
- if (networkInfoRef.current) {
152
- const { effectiveType, saveData } = networkInfoRef.current;
153
- if (saveData)
154
- return false;
155
- if (effectiveType === 'slow-2g' || effectiveType === '2g') {
156
- return priority === 'high' && source.type === 'hls';
157
- }
158
- if (effectiveType === '3g') {
159
- return ['hls', 'm3u8'].includes(source.type);
160
- }
161
- }
162
- // Consider user behavior
163
- if (userBehaviorRef.current) {
164
- const behavior = userBehaviorRef.current.getCurrentBehavior();
165
- if (behavior.engagementScore > 0.7) {
166
- return true;
167
- }
168
- }
169
- return priority !== 'low';
170
- }
171
- function shouldPreinit(source, strategy) {
172
- return strategy === 'aggressive' && source.type === 'hls';
173
- }
174
- function getPreloadType(mediaType) {
175
- switch (mediaType) {
176
- case 'hls':
177
- case 'm3u8':
178
- return 'fetch';
179
- case 'mp4':
180
- case 'webm':
181
- return 'video';
182
- case 'mp3':
183
- case 'wav':
184
- return 'audio';
185
- default:
186
- return 'fetch';
187
- }
188
- }
189
- function shouldUseCrossOrigin(url) {
190
- return !url.includes(window.location.origin);
191
- }
192
- function getAssetIntegrity(url) {
193
- // Return integrity hash if available for the asset
194
- // This would typically come from a build process or asset manifest
195
- return undefined;
196
- }
197
- function adjustPreloadingStrategy() {
198
- // Adjust preloading based on network conditions
199
- if (!networkInfoRef.current)
200
- return;
201
- const { effectiveType, downlink } = networkInfoRef.current;
202
- // This would update the preloading configuration
203
- // Implementation depends on specific requirements
204
- }
205
- function preloadLikelyContent(sources) {
206
- sources.forEach((url) => {
207
- // Mark as preloaded
208
- preloadingHistoryRef.current.set(url, Date.now());
209
- // Preload the content
210
- preload(url, {
211
- as: 'fetch',
212
- crossOrigin: 'anonymous',
213
- priority: 'high',
214
- });
215
- });
216
- }
217
- // This component doesn't render anything visible
218
- return null;
219
- };
220
- /**
221
- * User behavior tracker for intelligent preloading
222
- */
223
- class UserBehaviorTracker {
224
- behaviorData = {
225
- isLikelyToInteract: false,
226
- engagementScore: 0,
227
- predictedSources: [],
228
- interactionHistory: [],
229
- };
230
- listeners = [];
231
- mouseMoveTimer = null;
232
- startTracking() {
233
- // Track mouse movements as interaction indicators
234
- document.addEventListener('mousemove', this.handleMouseMove);
235
- document.addEventListener('scroll', this.handleScroll);
236
- document.addEventListener('keydown', this.handleKeydown);
237
- // Track focus events
238
- document.addEventListener('focusin', this.handleFocus);
239
- document.addEventListener('visibilitychange', this.handleVisibilityChange);
240
- }
241
- stopTracking() {
242
- document.removeEventListener('mousemove', this.handleMouseMove);
243
- document.removeEventListener('scroll', this.handleScroll);
244
- document.removeEventListener('keydown', this.handleKeydown);
245
- document.removeEventListener('focusin', this.handleFocus);
246
- document.removeEventListener('visibilitychange', this.handleVisibilityChange);
247
- if (this.mouseMoveTimer) {
248
- clearTimeout(this.mouseMoveTimer);
249
- }
250
- }
251
- onBehaviorChange(listener) {
252
- this.listeners.push(listener);
253
- }
254
- getCurrentBehavior() {
255
- return this.behaviorData;
256
- }
257
- handleMouseMove = () => {
258
- if (this.mouseMoveTimer)
259
- return;
260
- this.mouseMoveTimer = window.setTimeout(() => {
261
- this.updateEngagementScore(0.1);
262
- this.mouseMoveTimer = null;
263
- }, 100);
264
- };
265
- handleScroll = () => {
266
- this.updateEngagementScore(0.2);
267
- };
268
- handleKeydown = () => {
269
- this.updateEngagementScore(0.3);
270
- this.behaviorData.isLikelyToInteract = true;
271
- };
272
- handleFocus = () => {
273
- this.updateEngagementScore(0.4);
274
- this.behaviorData.isLikelyToInteract = true;
275
- };
276
- handleVisibilityChange = () => {
277
- if (!document.hidden) {
278
- this.updateEngagementScore(0.5);
279
- this.behaviorData.isLikelyToInteract = true;
280
- }
281
- };
282
- updateEngagementScore(increment) {
283
- this.behaviorData.engagementScore = Math.min(1, this.behaviorData.engagementScore + increment);
284
- // Decay engagement score over time
285
- setTimeout(() => {
286
- this.behaviorData.engagementScore = Math.max(0, this.behaviorData.engagementScore - increment * 0.5);
287
- this.notifyListeners();
288
- }, 30000); // 30 seconds decay
289
- this.notifyListeners();
290
- }
291
- notifyListeners() {
292
- this.listeners.forEach((listener) => listener(this.behaviorData));
293
- }
294
- }
295
- export default MediaResourcePreloader;
@@ -1,26 +0,0 @@
1
- "use client";
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { Pause, Play } from "lucide-react";
4
- import { forwardRef } from "react";
5
- import { cn } from "../../lib/utils";
6
- const sizeVariants = {
7
- sm: { button: "size-8", icon: 16 },
8
- md: { button: "size-10", icon: 20 },
9
- lg: { button: "size-12", icon: 24 },
10
- xl: { button: "size-16", icon: 32 }
11
- };
12
- export const PlayButton = forwardRef(({ isPlaying, onToggle, disabled = false, size = "lg", className }, ref) => {
13
- const sizeConfig = sizeVariants[size] || sizeVariants.lg;
14
- return (_jsxs("button", { ref: ref, type: "button", onClick: onToggle, disabled: disabled, "data-state": isPlaying ? "playing" : "paused", className: cn(
15
- // Base styles with new design system
16
- "group relative inline-flex items-center justify-center", "glass-strong media-control rounded-full contain-layout", "focus-ring touch-manipulation", sizeConfig.button,
17
- // Color transitions with OKLCH
18
- "text-[color:var(--media-text)] transition-all duration-300", "bg-[color:var(--media-control-bg)] backdrop-blur-sm", "border border-[color:var(--media-border)]/30",
19
- // Interactive states
20
- "hover:bg-[color:var(--media-control-hover)]", "hover:border-[color:var(--media-border)]/50", "hover:shadow-[color:var(--media-bg)]/20 hover:shadow-lg", "hover:-translate-y-0.5 hover:scale-105", "active:bg-[color:var(--media-control-active)]", "active:translate-y-0 active:scale-100",
21
- // Focus state
22
- "focus-visible:ring-2 focus-visible:ring-[color:var(--media-focus)]", "focus-visible:ring-offset-2 focus-visible:ring-offset-[color:var(--media-bg)]",
23
- // Disabled state
24
- "disabled:cursor-not-allowed disabled:opacity-50", "disabled:hover:translate-y-0 disabled:hover:scale-100", "disabled:hover:bg-[color:var(--media-control-bg)]", className), "aria-label": isPlaying ? "Pause media" : "Play media", "aria-pressed": isPlaying, children: [_jsx("div", { className: cn("absolute inset-0 rounded-full opacity-0 transition-opacity duration-300", "bg-gradient-to-br from-[color:var(--color-media-play)] to-[color:var(--color-media-pause)]", "blur-sm group-hover:opacity-20", isPlaying && "opacity-10") }), isPlaying ? (_jsx(Pause, { size: sizeConfig.icon, className: cn("relative z-10 fill-current transition-all duration-200", "text-[color:var(--color-media-pause)]", "group-hover:scale-110 group-active:scale-95", "drop-shadow-sm") })) : (_jsx(Play, { size: sizeConfig.icon, className: cn("relative z-10 fill-current transition-all duration-200", "ml-0.5 text-[color:var(--color-media-play)]", "group-hover:scale-110 group-active:scale-95", "drop-shadow-sm") })), _jsx("div", { className: cn("absolute inset-0 rounded-full opacity-0", "scale-75 bg-[color:var(--media-text)]/10", "group-active:scale-100 group-active:opacity-100", "transition-all duration-150 ease-out") })] }));
25
- });
26
- PlayButton.displayName = "PlayButton";
@@ -1,54 +0,0 @@
1
- "use client";
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import * as Slider from "@radix-ui/react-slider";
4
- import * as Tooltip from "@radix-ui/react-tooltip";
5
- import { forwardRef, useState, useMemo, useTransition, useDeferredValue, useRef } from "react";
6
- import { formatTime } from "../../lib/format-time";
7
- import { cn } from "../../lib/utils";
8
- export const SeekBar = forwardRef(({ currentTime, duration, buffered, onSeek, size = "sm", className }, ref) => {
9
- // React 19 concurrent features
10
- const [isPending, startTransition] = useTransition();
11
- const [isDragging, setIsDragging] = useState(false);
12
- const [previewTime, setPreviewTime] = useState(0);
13
- const [isHovering, setIsHovering] = useState(false);
14
- // Defer non-critical updates for better performance
15
- const deferredHovering = useDeferredValue(isHovering);
16
- const deferredPreviewTime = useDeferredValue(previewTime);
17
- // Memoize expensive calculations
18
- const progress = useMemo(() => duration > 0 ? (currentTime / duration) * 100 : 0, [currentTime, duration]);
19
- // Calculate buffered ranges with memoization
20
- const bufferedRanges = useMemo(() => {
21
- const ranges = [];
22
- if (buffered && duration > 0) {
23
- for (let i = 0; i < buffered.length; i++) {
24
- const start = (buffered.start(i) / duration) * 100;
25
- const end = (buffered.end(i) / duration) * 100;
26
- ranges.push({ start, end });
27
- }
28
- }
29
- return ranges;
30
- }, [buffered, duration]);
31
- // Throttled seek handler with React 19 transitions
32
- const seekTimeoutRef = useRef();
33
- const lastSeekTime = useRef(0);
34
- const handleValueChange = ([value]) => {
35
- const time = ((value ?? 0) / 100) * duration;
36
- setPreviewTime(time);
37
- if (isDragging) {
38
- onSeek(time);
39
- }
40
- };
41
- const handleValueCommit = ([value]) => {
42
- const time = ((value ?? 0) / 100) * duration;
43
- onSeek(time);
44
- setIsDragging(false);
45
- };
46
- const handlePointerDown = () => {
47
- setIsDragging(true);
48
- };
49
- return (_jsx("div", { ref: ref, className: cn("media-container relative w-full text-[color:var(--media-text)]", "touch-manipulation contain-layout", className), onMouseEnter: () => setIsHovering(true), onMouseLeave: () => setIsHovering(false), children: _jsx(Tooltip.Provider, { children: _jsxs(Tooltip.Root, { children: [_jsx(Tooltip.Trigger, { asChild: true, children: _jsx("div", { className: "relative animate-enter", children: _jsxs(Slider.Root, { className: cn("group relative flex w-full touch-none select-none items-center", "media-md:h-4 media-sm:h-3 media-xs:h-2", "focus-ring cursor-pointer"), value: [progress], max: 100, step: 0.1, onValueChange: handleValueChange, onValueCommit: handleValueCommit, onPointerDown: handlePointerDown, "aria-label": "Seek to position", children: [_jsxs(Slider.Track, { className: cn("relative grow overflow-hidden rounded-full", "bg-[color:var(--media-control-bg)]/40 backdrop-blur-sm", "border border-[color:var(--media-border)]/20", "shadow-inner transition-all duration-300 ease-out", "h-1 group-focus-within:h-1.5 group-hover:h-1.5", "group-hover:bg-[color:var(--media-control-bg)]/60", "group-hover:border-[color:var(--media-border)]/40"), children: [bufferedRanges.map((range, index) => (_jsx("div", { className: cn("absolute h-full rounded-full transition-all duration-500", "bg-[color:var(--color-media-buffered)] shadow-inner", "opacity-60 group-hover:opacity-80"), style: {
50
- left: `${range.start}%`,
51
- width: `${range.end - range.start}%`
52
- } }, index))), _jsx(Slider.Range, { className: cn("absolute h-full rounded-full transition-all duration-300", "bg-gradient-to-r from-[color:var(--color-media-progress)] to-[color:var(--color-brand-accent)]", "shadow-[color:var(--color-brand-primary)]/20 shadow-lg", "group-hover:shadow-xl") })] }), _jsx(Slider.Thumb, { className: cn("block size-4 rounded-full border-white/20 bg-white", "shadow-lg hover:shadow-xl", "opacity-0 group-hover:opacity-100", "hover:scale-110 hover:bg-white/95 active:scale-95", "focus:opacity-100 focus:outline-none focus:ring-2 focus:ring-white/50", "focus:ring-offset-2 focus:ring-offset-black/20", "transition-all duration-300 ease-out", isDragging && "opacity-100"), "aria-label": "Seek" })] }) }) }), isDragging && (_jsx(Tooltip.Portal, { children: _jsxs(Tooltip.Content, { className: cn("rounded bg-black/80 px-2 py-1 text-sm text-white", "fade-in-0 zoom-in-95 animate-in"), sideOffset: 10, children: [formatTime(previewTime), _jsx(Tooltip.Arrow, { className: "fill-black/80" })] }) }))] }) }) }));
53
- });
54
- SeekBar.displayName = "SeekBar";
@@ -1,18 +0,0 @@
1
- "use client";
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { forwardRef } from "react";
4
- import { formatTime } from "../../lib/format-time";
5
- import { cn } from "../../lib/utils";
6
- export const TimeDisplay = forwardRef(({ currentTime, duration, showRemaining = false, size = "sm", className }, ref) => {
7
- const current = formatTime(currentTime);
8
- const total = formatTime(duration);
9
- const remaining = formatTime(duration - currentTime);
10
- const sizeClasses = {
11
- sm: "text-xs",
12
- md: "text-sm",
13
- lg: "text-base",
14
- xl: "text-lg"
15
- };
16
- return (_jsxs("div", { ref: ref, className: cn("flex items-center font-mono text-white text-xs", "rounded-lg backdrop-blur-sm", "px-3 py-1.5", sizeClasses[size], "select-none", className), children: [_jsx("span", { className: "tabular-nums", children: current }), _jsx("span", { className: "mx-1 text-white", children: "/" }), _jsx("span", { className: "tabular-nums", children: showRemaining ? `-${remaining}` : total })] }));
17
- });
18
- TimeDisplay.displayName = "TimeDisplay";
@@ -1,71 +0,0 @@
1
- "use client";
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import * as Slider from "@radix-ui/react-slider";
4
- import * as Tooltip from "@radix-ui/react-tooltip";
5
- import { Volume1, Volume2, VolumeX } from "lucide-react";
6
- import { forwardRef } from "react";
7
- import { cn } from "../../lib/utils";
8
- const sizeConfig = {
9
- md: {
10
- button: "size-10",
11
- icon: 18,
12
- slider: "h-6",
13
- thumb: "size-3",
14
- track: "h-1"
15
- },
16
- lg: {
17
- button: "size-12",
18
- icon: 22,
19
- slider: "h-7",
20
- thumb: "size-4",
21
- track: "h-1.5"
22
- },
23
- xl: {
24
- button: "size-14",
25
- icon: 26,
26
- slider: "h-8",
27
- thumb: "size-5",
28
- track: "h-2"
29
- }
30
- };
31
- export const VolumeControl = forwardRef(({ volume, isMuted, onVolumeChange, onToggleMute, size = "lg", className }, ref) => {
32
- const getVolumeIcon = () => {
33
- if (isMuted || volume === 0) {
34
- return VolumeX;
35
- }
36
- else if (volume < 0.5) {
37
- return Volume1;
38
- }
39
- else {
40
- return Volume2;
41
- }
42
- };
43
- const VolumeIcon = getVolumeIcon();
44
- const buttonSizes = {
45
- md: "h-11 w-11",
46
- lg: "h-12 w-12",
47
- xl: "h-14 w-14"
48
- };
49
- const iconSizes = {
50
- md: "h-5 w-5",
51
- lg: "h-6 w-6",
52
- xl: "h-7 w-7"
53
- };
54
- const sliderHeight = {
55
- md: "h-6",
56
- lg: "h-7",
57
- xl: "h-8"
58
- };
59
- const thumbSize = {
60
- md: "h-4 w-4",
61
- lg: "h-4 w-4",
62
- xl: "h-5 w-5"
63
- };
64
- const trackHeight = {
65
- md: "h-1.5",
66
- lg: "h-2",
67
- xl: "h-2.5"
68
- };
69
- return (_jsxs("div", { ref: ref, className: cn("flex items-center space-x-3 text-white", className), children: [_jsx(Tooltip.Provider, { children: _jsxs(Tooltip.Root, { children: [_jsx(Tooltip.Trigger, { asChild: true, children: _jsx("button", { type: "button", onClick: onToggleMute, className: cn("inline-flex items-center justify-center rounded-lg bg-transparent p-0 text-white transition-all hover:text-cyan-700 active:scale-95", "focus:outline-none focus:ring-2 focus:ring-white/50 focus:ring-offset-2 focus:ring-offset-black/20", buttonSizes[size]), "aria-label": isMuted ? "Unmute" : "Mute", children: _jsx(VolumeIcon, { className: cn(iconSizes[size]) }) }) }), _jsx(Tooltip.Portal, { children: _jsxs(Tooltip.Content, { className: cn("rounded bg-black/80 px-2 py-1 text-sm text-white", "fade-in-0 zoom-in-95 animate-in"), sideOffset: 5, children: [isMuted ? "Unmute" : "Mute", _jsx(Tooltip.Arrow, { className: "fill-black/80" })] }) })] }) }), _jsx("div", { className: "w-32", children: _jsxs(Slider.Root, { className: cn("group relative flex w-full touch-none select-none items-center", sliderHeight[size]), value: [isMuted ? 0 : volume], max: 1, step: 0.01, onValueChange: ([value]) => onVolumeChange(value ?? 0), "aria-label": "Volume", children: [_jsx(Slider.Track, { className: cn("relative grow rounded-full bg-white/20 shadow-inner transition-all duration-300 group-hover:bg-white/30", "border border-white/10", trackHeight[size]), children: _jsx(Slider.Range, { className: "absolute h-full rounded-full bg-white shadow-sm" }) }), _jsx(Slider.Thumb, { className: cn("block rounded-full border-2 border-white/20 bg-white shadow-lg", "transition-all duration-300 ease-out hover:scale-110 hover:bg-white/95 active:scale-95", "focus:outline-none focus:ring-2 focus:ring-white/50 focus:ring-offset-2 focus:ring-offset-black/20", thumbSize[size]), "aria-label": "Volume" })] }) }), _jsx("span", { className: "w-10 text-right text-sm text-white", children: Math.round((isMuted ? 0 : volume) * 100) })] }));
70
- });
71
- VolumeControl.displayName = "VolumeControl";