@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,135 +0,0 @@
1
- "use client";
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { useEffect, useRef, useState } from "react";
4
- import { MediaPlayerRoot } from "../../media-player-root";
5
- import { MediaPlayerVideo } from "../../media-player-video";
6
- import { MinimalControls } from "./MinimalControls";
7
- import { MinimalOverlay } from "./MinimalOverlay";
8
- import { MinimalLoading } from "./MinimalLoading";
9
- import { cn } from "../../../lib/utils";
10
- import { defaultMinimalIcons } from "../../icons";
11
- export function MinimalMediaPlayer({ src, poster, autoPlay = false, muted = false, loop = false, autoHideControls = true, hideDelay = 2500, theme = "dark", customIcons, showCenterPlayButton = true, showLoadingSpinner = true, className, onPlay, onPause, onEnded, onTimeUpdate, onVolumeChange, onSeek, onError, watermark, qualities, showQualitySelector = false, showSpeedControl = false, thumbnails, }) {
12
- const [controlsVisible, setControlsVisible] = useState(true);
13
- const [isPlaying, setIsPlaying] = useState(false);
14
- const [isLoading, setIsLoading] = useState(false);
15
- const [error, setError] = useState(null);
16
- const hideTimeoutRef = useRef(null);
17
- const containerRef = useRef(null);
18
- const [isHovered, setIsHovered] = useState(false);
19
- const [userInteracting, setUserInteracting] = useState(false);
20
- // Merge default icons with custom icons
21
- const icons = { ...defaultMinimalIcons, ...customIcons };
22
- // Auto-hide controls logic
23
- const resetHideTimer = () => {
24
- if (!autoHideControls)
25
- return;
26
- if (hideTimeoutRef.current) {
27
- clearTimeout(hideTimeoutRef.current);
28
- }
29
- setControlsVisible(true);
30
- if (!userInteracting && isPlaying) {
31
- hideTimeoutRef.current = setTimeout(() => {
32
- setControlsVisible(false);
33
- }, hideDelay);
34
- }
35
- };
36
- // Handle mouse movement
37
- const handleMouseMove = () => {
38
- resetHideTimer();
39
- };
40
- // Handle mouse enter/leave
41
- const handleMouseEnter = () => {
42
- setIsHovered(true);
43
- setControlsVisible(true);
44
- if (hideTimeoutRef.current) {
45
- clearTimeout(hideTimeoutRef.current);
46
- }
47
- };
48
- const handleMouseLeave = () => {
49
- setIsHovered(false);
50
- if (isPlaying && autoHideControls && !userInteracting) {
51
- hideTimeoutRef.current = setTimeout(() => {
52
- setControlsVisible(false);
53
- }, 500);
54
- }
55
- };
56
- // Handle user interaction
57
- const handleUserInteractionStart = () => {
58
- setUserInteracting(true);
59
- setControlsVisible(true);
60
- if (hideTimeoutRef.current) {
61
- clearTimeout(hideTimeoutRef.current);
62
- }
63
- };
64
- const handleUserInteractionEnd = () => {
65
- setUserInteracting(false);
66
- resetHideTimer();
67
- };
68
- // Handle play state changes
69
- const handlePlayStateChange = (playing) => {
70
- setIsPlaying(playing);
71
- if (playing) {
72
- onPlay?.();
73
- resetHideTimer();
74
- }
75
- else {
76
- onPause?.();
77
- setControlsVisible(true);
78
- if (hideTimeoutRef.current) {
79
- clearTimeout(hideTimeoutRef.current);
80
- }
81
- }
82
- };
83
- // Handle loading state
84
- const handleLoadStart = () => {
85
- setIsLoading(true);
86
- setError(null);
87
- };
88
- const handleLoadedData = () => {
89
- setIsLoading(false);
90
- };
91
- // Handle errors
92
- const handleError = (e) => {
93
- setIsLoading(false);
94
- setError(e.message || "An error occurred");
95
- onError?.(e);
96
- };
97
- // Cleanup on unmount
98
- useEffect(() => {
99
- return () => {
100
- if (hideTimeoutRef.current) {
101
- clearTimeout(hideTimeoutRef.current);
102
- }
103
- };
104
- }, []);
105
- // Determine video source
106
- const videoSrc = qualities && qualities.length > 0
107
- ? qualities.find(q => q.default)?.src || qualities[0]?.src || (typeof src === 'string' ? src : src[0])
108
- : (typeof src === 'string' ? src : src[0]);
109
- return (_jsx("div", { ref: containerRef, className: cn("minimal-player theme-minimal relative overflow-hidden rounded-lg bg-black", `theme-minimal-${theme}`, className), "data-theme": theme, onMouseMove: handleMouseMove, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, children: _jsxs(MediaPlayerRoot, { className: "relative h-full w-full", autoHide: false, enableGestures: true, enableMobileOptimizations: true, children: [_jsx(MediaPlayerVideo, { src: videoSrc, poster: poster, autoPlay: autoPlay, muted: muted, loop: loop, playsInline: true, crossOrigin: "anonymous", onPlay: () => handlePlayStateChange(true), onPause: () => handlePlayStateChange(false), onEnded: onEnded, onTimeUpdate: (e) => {
110
- const video = e.currentTarget;
111
- onTimeUpdate?.(video.currentTime);
112
- }, onVolumeChange: (e) => {
113
- const video = e.currentTarget;
114
- onVolumeChange?.(video.volume);
115
- }, onLoadStart: handleLoadStart, onLoadedData: handleLoadedData, onError: (e) => handleError(new Error("Failed to load video")) }), showLoadingSpinner && isLoading && (_jsx(MinimalLoading, { icon: icons.spinner })), error && (_jsx("div", { className: "absolute inset-0 z-50 flex items-center justify-center bg-black/80", children: _jsxs("div", { className: "text-center", children: [_jsx("div", { className: "mb-4 text-red-500", children: _jsx("svg", { className: "mx-auto h-12 w-12", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" }) }) }), _jsx("p", { className: "mb-2 text-lg text-white", children: "Playback Error" }), _jsx("p", { className: "text-gray-400 text-sm", children: error })] }) })), watermark && (_jsx("div", { className: cn("pointer-events-none absolute z-20", {
116
- "top-4 left-4": watermark.position === "top-left",
117
- "top-4 right-4": watermark.position === "top-right",
118
- "bottom-16 left-4": watermark.position === "bottom-left",
119
- "right-4 bottom-16": watermark.position === "bottom-right",
120
- }), style: { opacity: watermark.opacity || 0.7 }, children: _jsx("img", { src: watermark.src, alt: "", className: cn("object-contain", {
121
- "h-8": watermark.size === "small",
122
- "h-12": watermark.size === "medium" || !watermark.size,
123
- "h-16": watermark.size === "large",
124
- }) }) })), showCenterPlayButton && !isPlaying && !isLoading && (_jsx(MinimalOverlay, { visible: true, showCenterButton: true, isPlaying: isPlaying, icons: icons, onPlayPause: () => {
125
- const video = containerRef.current?.querySelector("video");
126
- if (video) {
127
- if (isPlaying) {
128
- video.pause();
129
- }
130
- else {
131
- video.play();
132
- }
133
- }
134
- } })), _jsx(MinimalControls, { visible: controlsVisible || !isPlaying || isHovered, icons: icons, isPlaying: isPlaying, showQualitySelector: showQualitySelector, showSpeedControl: showSpeedControl, qualities: qualities, thumbnails: thumbnails, onUserInteractionStart: handleUserInteractionStart, onUserInteractionEnd: handleUserInteractionEnd, onSeek: onSeek })] }) }));
135
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"MinimalOverlay.d.ts","sourceRoot":"","sources":["MinimalOverlay.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAE1C,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAA;IAChB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,KAAK,EAAE,OAAO,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,IAAI,CAAA;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,cAAc,CAAC,EAC7B,OAAO,EACP,gBAAwB,EACxB,SAAiB,EACjB,KAAK,EACL,WAAW,EACX,SAAS,GACV,EAAE,mBAAmB,kDAyCrB"}
@@ -1,15 +0,0 @@
1
- "use client";
2
- import { jsx as _jsx } from "react/jsx-runtime";
3
- import { cn } from "../../../lib/utils";
4
- export function MinimalOverlay({ visible, showCenterButton = false, isPlaying = false, icons, onPlayPause, className, }) {
5
- if (!visible || !showCenterButton)
6
- return null;
7
- const PlayIcon = icons.play;
8
- const PauseIcon = icons.pause;
9
- if (!PlayIcon || !PauseIcon)
10
- return null;
11
- return (_jsx("div", { className: cn("absolute inset-0 z-30 flex items-center justify-center", "bg-black/20 transition-opacity duration-200", className), onClick: onPlayPause, children: _jsx("button", { className: cn("minimal-center-play", "h-20 w-20 rounded-full", "flex items-center justify-center", "text-white", "transition-all duration-200", "hover:scale-110", "active:scale-95"), onClick: (e) => {
12
- e.stopPropagation();
13
- onPlayPause?.();
14
- }, "aria-label": isPlaying ? "Pause" : "Play", children: isPlaying ? (_jsx(PauseIcon, { size: 48 })) : (_jsx(PlayIcon, { size: 48, className: "ml-1" })) }) }));
15
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"MinimalPlayButton.d.ts","sourceRoot":"","sources":["MinimalPlayButton.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAE1C,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,OAAO,CAAA;IAClB,KAAK,EAAE,OAAO,CAAA;IACd,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;IAChC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,iBAAiB,CAAC,EAChC,SAAS,EACT,KAAK,EACL,IAAW,EACX,SAAS,GACV,EAAE,sBAAsB,kDA6CxB"}
@@ -1,29 +0,0 @@
1
- "use client";
2
- import { jsx as _jsx } from "react/jsx-runtime";
3
- import { useMediaDispatch, MediaActionTypes } from "../../../context/media-context";
4
- import { cn } from "../../../lib/utils";
5
- export function MinimalPlayButton({ isPlaying, icons, size = "md", className, }) {
6
- const dispatch = useMediaDispatch();
7
- const handleClick = () => {
8
- dispatch({
9
- type: isPlaying ? MediaActionTypes.PAUSE : MediaActionTypes.PLAY
10
- });
11
- };
12
- const sizeClasses = {
13
- sm: "h-10 w-10",
14
- md: "h-12 w-12 minimal-btn",
15
- lg: "h-16 w-16 minimal-btn-lg",
16
- xl: "h-20 w-20 minimal-btn-lg",
17
- };
18
- const iconSizes = {
19
- sm: 27,
20
- md: 30,
21
- lg: 36,
22
- xl: 42,
23
- };
24
- const PlayIcon = icons.play;
25
- const PauseIcon = icons.pause;
26
- if (!PlayIcon || !PauseIcon)
27
- return null;
28
- return (_jsx("button", { className: cn("minimal-btn", sizeClasses[size], className), onClick: handleClick, "aria-label": isPlaying ? "Pause" : "Play", children: isPlaying ? (_jsx(PauseIcon, { size: iconSizes[size] })) : (_jsx(PlayIcon, { size: iconSizes[size] })) }));
29
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"MinimalSeekBar.d.ts","sourceRoot":"","sources":["MinimalSeekBar.tsx"],"names":[],"mappings":"AAOA,MAAM,WAAW,mBAAmB;IAClC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,cAAc,CAAC,EAC7B,UAAU,EACV,MAAM,EACN,SAAS,GACV,EAAE,mBAAmB,2CAoIrB"}
@@ -1,73 +0,0 @@
1
- "use client";
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import React, { useRef, useState } from "react";
4
- import { useMediaSelector, useMediaDispatch, MediaActionTypes } from "../../../context/media-context";
5
- import { formatTime } from "../../../lib/format-time";
6
- import { cn } from "../../../lib/utils";
7
- export function MinimalSeekBar({ thumbnails, onSeek, className, }) {
8
- const dispatch = useMediaDispatch();
9
- const currentTime = useMediaSelector((state) => state.currentTime);
10
- const duration = useMediaSelector((state) => state.duration);
11
- const buffered = useMediaSelector((state) => state.buffered);
12
- const [isDragging, setIsDragging] = useState(false);
13
- const [hoverTime, setHoverTime] = useState(0);
14
- const [hoverPosition, setHoverPosition] = useState(0);
15
- const seekBarRef = useRef(null);
16
- const progress = duration > 0 ? (currentTime / duration) * 100 : 0;
17
- const bufferedProgress = buffered && buffered.length > 0 && duration > 0
18
- ? (buffered.end(buffered.length - 1) / duration) * 100
19
- : 0;
20
- const handleSeek = (clientX) => {
21
- if (!seekBarRef.current || duration === 0)
22
- return;
23
- const rect = seekBarRef.current.getBoundingClientRect();
24
- const position = Math.max(0, Math.min(1, (clientX - rect.left) / rect.width));
25
- const newTime = position * duration;
26
- dispatch({
27
- type: MediaActionTypes.SEEK,
28
- detail: newTime
29
- });
30
- onSeek?.(newTime);
31
- };
32
- const handleMouseDown = (e) => {
33
- e.preventDefault();
34
- setIsDragging(true);
35
- handleSeek(e.clientX);
36
- };
37
- const handleMouseMove = (e) => {
38
- if (!seekBarRef.current || duration === 0)
39
- return;
40
- const rect = seekBarRef.current.getBoundingClientRect();
41
- const position = Math.max(0, Math.min(1, (e.clientX - rect.left) / rect.width));
42
- const time = position * duration;
43
- setHoverTime(time);
44
- setHoverPosition((e.clientX - rect.left));
45
- if (isDragging) {
46
- handleSeek(e.clientX);
47
- }
48
- };
49
- const handleMouseUp = () => {
50
- setIsDragging(false);
51
- };
52
- const handleMouseLeave = () => {
53
- setIsDragging(false);
54
- setHoverTime(0);
55
- };
56
- React.useEffect(() => {
57
- if (isDragging) {
58
- const handleGlobalMouseMove = (e) => {
59
- handleSeek(e.clientX);
60
- };
61
- const handleGlobalMouseUp = () => {
62
- setIsDragging(false);
63
- };
64
- document.addEventListener("mousemove", handleGlobalMouseMove);
65
- document.addEventListener("mouseup", handleGlobalMouseUp);
66
- return () => {
67
- document.removeEventListener("mousemove", handleGlobalMouseMove);
68
- document.removeEventListener("mouseup", handleGlobalMouseUp);
69
- };
70
- }
71
- }, [isDragging]);
72
- return (_jsxs("div", { className: cn("group relative", className), children: [hoverTime > 0 && (_jsxs("div", { className: "pointer-events-none absolute bottom-full z-50 mb-2", style: { left: `${hoverPosition}px`, transform: "translateX(-50%)" }, children: [thumbnails && (_jsx("div", { className: "mb-1 rounded bg-black/90 p-1", children: _jsx("div", { className: "h-18 w-32 rounded bg-gray-800" }) })), _jsx("div", { className: "whitespace-nowrap rounded bg-black/90 px-2 py-1 text-white text-xs", children: formatTime(hoverTime) })] })), _jsxs("div", { ref: seekBarRef, className: "minimal-seekbar", onMouseDown: handleMouseDown, onMouseMove: handleMouseMove, onMouseUp: handleMouseUp, onMouseLeave: handleMouseLeave, children: [_jsx("div", { className: "minimal-seekbar-buffered", style: { width: `${bufferedProgress}%` } }), _jsx("div", { className: "minimal-seekbar-progress", style: { width: `${progress}%` } }), _jsx("div", { className: cn("minimal-seekbar-thumb", isDragging && "active"), style: { left: `${progress}%` } })] })] }));
73
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"MinimalVolumeControl.d.ts","sourceRoot":"","sources":["MinimalVolumeControl.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAE1C,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,OAAO,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,oBAAoB,CAAC,EACnC,KAAK,EACL,SAAS,GACV,EAAE,yBAAyB,kDAgE3B"}
@@ -1,29 +0,0 @@
1
- "use client";
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { useState } from "react";
4
- import { useMediaSelector, useMediaDispatch, MediaActionTypes } from "../../../context/media-context";
5
- import { cn } from "../../../lib/utils";
6
- export function MinimalVolumeControl({ icons, className, }) {
7
- const dispatch = useMediaDispatch();
8
- const volume = useMediaSelector((state) => state.volume);
9
- const isMuted = useMediaSelector((state) => state.isMuted);
10
- const [isExpanded, setIsExpanded] = useState(false);
11
- const handleVolumeChange = (e) => {
12
- const newVolume = parseFloat(e.target.value);
13
- dispatch({
14
- type: MediaActionTypes.SET_VOLUME,
15
- detail: newVolume
16
- });
17
- };
18
- const handleMuteToggle = () => {
19
- dispatch({
20
- type: MediaActionTypes.TOGGLE_MUTE
21
- });
22
- };
23
- const VolumeIcon = isMuted || volume === 0 ? icons.volumeMuted : icons.volume;
24
- if (!VolumeIcon)
25
- return null;
26
- return (_jsxs("div", { className: cn("minimal-volume-group flex items-center gap-2", className), onMouseEnter: () => setIsExpanded(true), onMouseLeave: () => setIsExpanded(false), children: [_jsx("button", { className: "minimal-btn inline-flex h-8 w-8 items-center justify-center rounded-full border border-white/20 bg-white/10 text-white transition-all duration-150 hover:border-white/30 hover:bg-white/20", onClick: handleMuteToggle, "aria-label": isMuted ? "Unmute" : "Mute", children: _jsx(VolumeIcon, { size: 18 }) }), _jsx("div", { className: cn("overflow-hidden transition-all duration-250", isExpanded ? "w-20 opacity-100" : "w-0 opacity-0"), children: _jsx("input", { type: "range", min: "0", max: "1", step: "0.01", value: isMuted ? 0 : volume, onChange: handleVolumeChange, className: "minimal-volume-slider h-1 w-full cursor-pointer appearance-none rounded-full bg-white/20", style: {
27
- background: `linear-gradient(to right, rgb(59 130 246) 0%, rgb(59 130 246) ${(isMuted ? 0 : volume) * 100}%, rgba(255,255,255,0.2) ${(isMuted ? 0 : volume) * 100}%, rgba(255,255,255,0.2) 100%)`
28
- } }) })] }));
29
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"SimpleMinimalPlayer.d.ts","sourceRoot":"","sources":["SimpleMinimalPlayer.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAE3D,MAAM,WAAW,wBAAwB;IACxC,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE,KAAK,CAAC;QACtB,EAAE,EAAE,MAAM,CAAA;QACV,KAAK,EAAE,MAAM,CAAA;QACb,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,GAAG,CAAC,EAAE,MAAM,CAAA;KACZ,CAAC,CAAA;IACF,WAAW,CAAC,EAAE,WAAW,GAAG,iBAAiB,CAAA;IAC7C,iBAAiB,CAAC,EAAE,YAAY,GAAG,UAAU,CAAA;IAC7C,gBAAgB,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,CAAA;KAAE,CAAC,CAAA;IACxF,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAA;CACzC;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,2CA8KlE"}
@@ -1,51 +0,0 @@
1
- "use client";
2
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { useState, useEffect, useRef } from "react";
4
- import { cn } from "../../../lib/utils";
5
- import { useVideoPlayer } from "../../../hooks/useVideoPlayer";
6
- import { useEnhancedSubtitles } from "../../../hooks/useEnhancedSubtitles";
7
- import { useMediaControls } from "../../../hooks/useMediaControls";
8
- import { useKeyboardShortcuts } from "../../../hooks/useKeyboardShortcuts";
9
- import { useScreenshot } from "../../../hooks/useScreenshot";
10
- import { VideoElement } from "./components/VideoElement";
11
- import { SubtitleDisplay } from "./components/SubtitleDisplay";
12
- import { CenterPlayButton } from "./components/CenterPlayButton";
13
- import { ControlBar } from "./components/ControlBar";
14
- import { CustomLoading, LoadingPresets } from "../../LoadingState";
15
- export function SimpleMinimalPlayer(props) {
16
- const { src, poster, className, subtitleSrc, subtitleTracks, crossOrigin, volumeOrientation = "horizontal", loadingComponent: LoadingComponent = undefined, showLoadingState = true, loadingProps = {} } = props;
17
- const containerRef = useRef(null);
18
- const [showSettings, setShowSettings] = useState(false);
19
- const [playbackRate, setPlaybackRate] = useState(1);
20
- const { videoRef, state: videoState, controls: videoControls } = useVideoPlayer(containerRef);
21
- const { subtitlesEnabled, currentSubtitle, toggleSubtitles, getCurrentSubtitle, setCurrentSubtitle, selectSubtitleTrack, availableTracks, currentTrackId, loadError, hasSubtitles } = useEnhancedSubtitles({
22
- subtitleSrc,
23
- subtitleTracks,
24
- onLoadError: (error) => console.error("Subtitle load error:", error)
25
- });
26
- const { takeScreenshot } = useScreenshot(videoRef);
27
- const { controlsVisible, showVolumeSlider, setShowVolumeSlider, handleMouseMove, handleMouseEnter, handleMouseLeave } = useMediaControls(videoState.isPlaying, showSettings);
28
- // Update subtitle display based on current time
29
- useEffect(() => {
30
- if (subtitlesEnabled) {
31
- const subtitle = getCurrentSubtitle(videoState.currentTime);
32
- setCurrentSubtitle(subtitle);
33
- }
34
- }, [videoState.currentTime, subtitlesEnabled, getCurrentSubtitle, setCurrentSubtitle]);
35
- // Change playback rate
36
- const changePlaybackRate = (rate) => {
37
- if (!videoRef.current)
38
- return;
39
- videoRef.current.playbackRate = rate;
40
- setPlaybackRate(rate);
41
- setShowSettings(false);
42
- };
43
- // Keyboard shortcuts
44
- useKeyboardShortcuts({
45
- videoControls,
46
- toggleSubtitles,
47
- takeScreenshot,
48
- duration: videoState.duration
49
- });
50
- return (_jsxs("div", { ref: containerRef, className: cn("minimal-player relative rounded-lg bg-black", className), style: { overflow: "hidden" }, onMouseMove: handleMouseMove, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, children: [_jsx(VideoElement, { videoRef: videoRef, src: src, poster: poster, subtitleSrc: subtitleSrc, subtitlesEnabled: subtitlesEnabled, crossOrigin: crossOrigin, onTogglePlay: videoControls.togglePlay }), _jsx(SubtitleDisplay, { subtitlesEnabled: subtitlesEnabled, subtitleText: currentSubtitle }), !videoState.isLoading && (_jsx(CenterPlayButton, { isPlaying: videoState.isPlaying, onTogglePlay: videoControls.togglePlay })), _jsx(ControlBar, { controlsVisible: controlsVisible, currentTime: videoState.currentTime, duration: videoState.duration, isPlaying: videoState.isPlaying, volume: videoState.volume, isMuted: videoState.isMuted, showVolumeSlider: showVolumeSlider, isFullscreen: videoState.isFullscreen, showSettings: showSettings, playbackRate: playbackRate, subtitleSrc: subtitleSrc, subtitlesEnabled: subtitlesEnabled, subtitleTracks: availableTracks, currentTrackId: currentTrackId, hasSubtitles: hasSubtitles, subtitleLoadError: loadError, volumeOrientation: volumeOrientation, bufferedRanges: videoState.bufferedRanges, isSeeking: videoState.isSeeking, onSeek: videoControls.seekTo, onTogglePlay: videoControls.togglePlay, onSeekBackward: videoControls.seekBackward, onSeekForward: videoControls.seekForward, onToggleMute: videoControls.toggleMute, onVolumeChange: videoControls.setVolume, onShowVolumeSlider: setShowVolumeSlider, onToggleSubtitles: toggleSubtitles, onSelectSubtitleTrack: selectSubtitleTrack, onTakeScreenshot: takeScreenshot, onToggleFullscreen: videoControls.toggleFullscreen, onToggleSettings: () => setShowSettings(!showSettings), onChangePlaybackRate: changePlaybackRate }), showLoadingState && (_jsxs(_Fragment, { children: [videoState.isLoading && !videoState.isSeeking && !videoState.isBuffering && (LoadingComponent ? (_jsx(CustomLoading, { context: "initial", children: _jsx(LoadingComponent, { context: "initial" }) })) : (_jsx(LoadingPresets.Initial, { ...loadingProps }))), videoState.isSeeking && (LoadingComponent ? (_jsx(CustomLoading, { context: "seeking", children: _jsx(LoadingComponent, { context: "seeking" }) })) : (_jsx(LoadingPresets.Seeking, { ...loadingProps }))), videoState.isBuffering && !videoState.isSeeking && (LoadingComponent ? (_jsx(CustomLoading, { context: "buffering", children: _jsx(LoadingComponent, { context: "buffering" }) })) : (_jsx(LoadingPresets.Buffering, { ...loadingProps })))] }))] }));
51
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"CenterPlayButton.d.ts","sourceRoot":"","sources":["CenterPlayButton.tsx"],"names":[],"mappings":"AAGA,UAAU,qBAAqB;IAC9B,SAAS,EAAE,OAAO,CAAA;IAClB,YAAY,EAAE,MAAM,IAAI,CAAA;CACxB;AAED,eAAO,MAAM,gBAAgB,GAA6B,6BAGvD,qBAAqB,mDAUvB,CAAA"}
@@ -1,8 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { defaultMinimalIcons } from "../../../icons";
3
- export const CenterPlayButton = function CenterPlayButton({ isPlaying, onTogglePlay }) {
4
- if (isPlaying)
5
- return null;
6
- const PlayIcon = defaultMinimalIcons.play;
7
- return (_jsx("div", { className: "minimal-center-play cursor-pointer", onClick: onTogglePlay, children: PlayIcon && _jsx(PlayIcon, { size: 60 }) }));
8
- };
@@ -1 +0,0 @@
1
- {"version":3,"file":"ControlBar.d.ts","sourceRoot":"","sources":["ControlBar.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAA;AAErE,UAAU,eAAe;IACxB,eAAe,EAAE,OAAO,CAAA;IACxB,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,OAAO,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,OAAO,CAAA;IAChB,gBAAgB,EAAE,OAAO,CAAA;IACzB,YAAY,EAAE,OAAO,CAAA;IACrB,YAAY,EAAE,OAAO,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,gBAAgB,EAAE,OAAO,CAAA;IACzB,cAAc,CAAC,EAAE,KAAK,CAAC;QACtB,EAAE,EAAE,MAAM,CAAA;QACV,KAAK,EAAE,MAAM,CAAA;QACb,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,GAAG,CAAC,EAAE,MAAM,CAAA;KACZ,CAAC,CAAA;IACF,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,iBAAiB,CAAC,EAAE,KAAK,GAAG,IAAI,CAAA;IAChC,iBAAiB,CAAC,EAAE,YAAY,GAAG,UAAU,CAAA;IAC7C,cAAc,CAAC,EAAE,aAAa,EAAE,CAAA;IAChC,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9B,YAAY,EAAE,MAAM,IAAI,CAAA;IACxB,cAAc,EAAE,MAAM,IAAI,CAAA;IAC1B,aAAa,EAAE,MAAM,IAAI,CAAA;IACzB,YAAY,EAAE,MAAM,IAAI,CAAA;IACxB,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACxC,kBAAkB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IAC3C,iBAAiB,EAAE,MAAM,IAAI,CAAA;IAC7B,qBAAqB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;IACxD,gBAAgB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;IAC5C,kBAAkB,EAAE,MAAM,IAAI,CAAA;IAC9B,gBAAgB,EAAE,MAAM,IAAI,CAAA;IAC5B,oBAAoB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAC5C;AAED,eAAO,MAAM,UAAU,GAAuB,ifAiC3C,eAAe,4CA+DjB,CAAA"}
@@ -1,10 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { cn } from "../../../../lib/utils";
3
- import { SeekBar } from "./SeekBar";
4
- import { PlaybackControls } from "./PlaybackControls";
5
- import { VolumeControl } from "./VolumeControl";
6
- import { TimeDisplay } from "./TimeDisplay";
7
- import { RightControls } from "./RightControls";
8
- export const ControlBar = function ControlBar({ controlsVisible, currentTime, duration, isPlaying, volume, isMuted, showVolumeSlider, isFullscreen, showSettings, playbackRate, subtitleSrc, subtitlesEnabled, subtitleTracks, currentTrackId, hasSubtitles, subtitleLoadError, volumeOrientation = "horizontal", bufferedRanges, isSeeking, onSeek, onTogglePlay, onSeekBackward, onSeekForward, onToggleMute, onVolumeChange, onShowVolumeSlider, onToggleSubtitles, onSelectSubtitleTrack, onTakeScreenshot, onToggleFullscreen, onToggleSettings, onChangePlaybackRate }) {
9
- return (_jsxs("div", { className: cn("minimal-control-bar", "absolute right-0 bottom-0 left-0 z-40", "px-6 py-3 transition-all duration-200", controlsVisible ? "minimal-controls-visible" : "minimal-controls-hidden"), children: [_jsx(SeekBar, { currentTime: currentTime, duration: duration, bufferedRanges: bufferedRanges, isSeeking: isSeeking, onSeek: onSeek }), _jsxs("div", { className: "flex items-center justify-between", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(PlaybackControls, { isPlaying: isPlaying, onTogglePlay: onTogglePlay, onSeekBackward: onSeekBackward, onSeekForward: onSeekForward }), _jsx(VolumeControl, { volume: volume, isMuted: isMuted, showVolumeSlider: showVolumeSlider, onToggleMute: onToggleMute, onVolumeChange: onVolumeChange, onShowVolumeSlider: onShowVolumeSlider, orientation: volumeOrientation }), _jsx(TimeDisplay, { currentTime: currentTime, duration: duration })] }), _jsx(RightControls, { subtitleSrc: subtitleSrc, subtitlesEnabled: subtitlesEnabled, subtitleTracks: subtitleTracks, currentTrackId: currentTrackId, hasSubtitles: hasSubtitles, subtitleLoadError: subtitleLoadError, isFullscreen: isFullscreen, showSettings: showSettings, playbackRate: playbackRate, onToggleSubtitles: onToggleSubtitles, onSelectSubtitleTrack: onSelectSubtitleTrack, onTakeScreenshot: onTakeScreenshot, onToggleFullscreen: onToggleFullscreen, onToggleSettings: onToggleSettings, onChangePlaybackRate: onChangePlaybackRate })] })] }));
10
- };
@@ -1 +0,0 @@
1
- {"version":3,"file":"EnhancedSettingsMenu.d.ts","sourceRoot":"","sources":["EnhancedSettingsMenu.tsx"],"names":[],"mappings":"AAIA,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED,UAAU,yBAAyB;IACjC,YAAY,EAAE,OAAO,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,gBAAgB,EAAE,OAAO,CAAA;IACzB,cAAc,EAAE,aAAa,EAAE,CAAA;IAC/B,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,gBAAgB,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAA;IAC9C,YAAY,EAAE,OAAO,CAAA;IACrB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,gBAAgB,EAAE,MAAM,IAAI,CAAA;IAC5B,oBAAoB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5C,iBAAiB,EAAE,MAAM,IAAI,CAAA;IAC7B,qBAAqB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;IACxD,wBAAwB,EAAE,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,KAAK,IAAI,CAAA;CACvE;AAID,eAAO,MAAM,oBAAoB,GAAiC,uPAc/D,yBAAyB,4CA6T3B,CAAA"}
@@ -1,68 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { useState, useCallback, useEffect } from "react";
3
- import { cn } from "../../../../lib/utils";
4
- import { defaultMinimalIcons } from "../../../icons";
5
- export const EnhancedSettingsMenu = function EnhancedSettingsMenu({ showSettings, playbackRate, subtitlesEnabled, subtitleTracks, currentSubtitleTrack, subtitleFontSize = "medium", hasSubtitles, subtitleLoadError, onToggleSettings, onChangePlaybackRate, onToggleSubtitles, onSelectSubtitleTrack, onChangeSubtitleFontSize }) {
6
- const [currentView, setCurrentView] = useState("main");
7
- const playbackRates = [0.5, 0.75, 1, 1.25, 1.5, 2];
8
- const fontSizes = [
9
- { value: "small", label: "Small", size: "12px" },
10
- { value: "medium", label: "Medium", size: "16px" },
11
- { value: "large", label: "Large", size: "20px" }
12
- ];
13
- // Reset to main menu when settings close
14
- useEffect(() => {
15
- if (!showSettings) {
16
- setCurrentView("main");
17
- }
18
- }, [showSettings]);
19
- const handleSettingsClick = useCallback((e) => {
20
- e.stopPropagation();
21
- onToggleSettings();
22
- }, [onToggleSettings]);
23
- const handleDropdownClick = useCallback((e) => {
24
- e.stopPropagation();
25
- }, []);
26
- const handleBackClick = useCallback(() => {
27
- setCurrentView("main");
28
- }, []);
29
- const handleSelectSpeed = useCallback((rate) => {
30
- onChangePlaybackRate(rate);
31
- setCurrentView("main");
32
- }, [onChangePlaybackRate]);
33
- const handleSelectFontSize = useCallback((size) => {
34
- onChangeSubtitleFontSize(size);
35
- setCurrentView("main");
36
- }, [onChangeSubtitleFontSize]);
37
- const handleSelectSubtitle = useCallback((trackId) => {
38
- if (trackId === null) {
39
- // Turn off subtitles
40
- if (subtitlesEnabled) {
41
- onToggleSubtitles();
42
- }
43
- }
44
- else {
45
- // Select track and enable if needed
46
- if (!subtitlesEnabled) {
47
- onToggleSubtitles();
48
- }
49
- onSelectSubtitleTrack?.(trackId);
50
- }
51
- setCurrentView("main");
52
- }, [subtitlesEnabled, onToggleSubtitles, onSelectSubtitleTrack]);
53
- const renderMainMenu = () => (_jsxs(_Fragment, { children: [_jsx("div", { className: "border-gray-700 border-b px-3 py-2 font-semibold text-gray-400 text-xs uppercase tracking-wider", children: "Settings" }), _jsxs("div", { className: "py-1", children: [_jsxs("button", { className: cn("flex w-full items-center justify-between px-3 py-2 text-left text-sm transition-colors hover:bg-gray-800", !hasSubtitles && "cursor-not-allowed opacity-50"), onClick: () => hasSubtitles && setCurrentView("subtitles"), disabled: !hasSubtitles, children: [_jsxs("div", { className: "flex items-center gap-2", children: [defaultMinimalIcons.subtitle && _jsx(defaultMinimalIcons.subtitle, { size: 16 }), _jsx("span", { children: "Subtitles" })] }), _jsxs("div", { className: "flex items-center gap-1 text-gray-400 text-xs", children: [!hasSubtitles ? (_jsx("span", { className: "text-gray-500", children: "Unavailable" })) : subtitleLoadError ? (_jsx("span", { className: "text-red-400", children: "Error" })) : subtitlesEnabled ? (_jsx("span", { className: "text-cyan-400", children: "On" })) : (_jsx("span", { children: "Off" })), hasSubtitles && (_jsx("svg", { className: "h-4 w-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9 5l7 7-7 7" }) }))] })] }), hasSubtitles && (_jsxs("button", { className: "flex w-full items-center justify-between px-3 py-2 text-left text-sm transition-colors hover:bg-gray-800", onClick: () => setCurrentView("fontSize"), children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("svg", { className: "h-4 w-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4 7h16M4 7v10m0-10l4 10m8-10l4 10m-4-10v10" }) }), _jsx("span", { children: "Font Size" })] }), _jsxs("div", { className: "flex items-center gap-1 text-gray-400 text-xs", children: [_jsx("span", { className: "capitalize", children: subtitleFontSize }), _jsx("svg", { className: "h-4 w-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9 5l7 7-7 7" }) })] })] })), _jsxs("button", { className: "flex w-full items-center justify-between px-3 py-2 text-left text-sm transition-colors hover:bg-gray-800", onClick: () => setCurrentView("speed"), children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("svg", { className: "h-4 w-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M13 10V3L4 14h7v7l9-11h-7z" }) }), _jsx("span", { children: "Playback Speed" })] }), _jsxs("div", { className: "flex items-center gap-1 text-gray-400 text-xs", children: [_jsx("span", { children: playbackRate === 1 ? "Normal" : `${playbackRate}x` }), _jsx("svg", { className: "h-4 w-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9 5l7 7-7 7" }) })] })] })] })] }));
54
- const renderSubtitlesMenu = () => (_jsxs(_Fragment, { children: [_jsxs("div", { className: "flex items-center justify-between border-gray-700 border-b px-3 py-2", children: [_jsx("button", { onClick: handleBackClick, className: "text-gray-400 transition-colors hover:text-white", children: _jsx("svg", { className: "h-4 w-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 19l-7-7 7-7" }) }) }), _jsx("span", { className: "font-semibold text-gray-300 text-sm", children: "Subtitles" }), _jsx("div", { className: "w-4" })] }), _jsxs("div", { className: "py-1", children: [_jsxs("button", { className: cn("flex w-full items-center justify-between px-3 py-2 text-left text-sm transition-colors hover:bg-gray-800", !subtitlesEnabled && "bg-cyan-700/20 text-cyan-400"), onClick: () => handleSelectSubtitle(null), children: [_jsx("span", { children: "Off" }), !subtitlesEnabled && (_jsx("svg", { className: "h-4 w-4 text-cyan-400", fill: "currentColor", viewBox: "0 0 20 20", children: _jsx("path", { fillRule: "evenodd", d: "M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" }) }))] }), subtitleTracks.length > 0 ? (subtitleTracks.map((track) => (_jsxs("button", { className: cn("flex w-full items-center justify-between px-3 py-2 text-left text-sm transition-colors hover:bg-gray-800", subtitlesEnabled && currentSubtitleTrack === track.id && "bg-cyan-700/20 text-cyan-400"), onClick: () => handleSelectSubtitle(track.id), children: [_jsx("span", { children: track.label }), subtitlesEnabled && currentSubtitleTrack === track.id && (_jsx("svg", { className: "h-4 w-4 text-cyan-400", fill: "currentColor", viewBox: "0 0 20 20", children: _jsx("path", { fillRule: "evenodd", d: "M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" }) }))] }, track.id)))) : (_jsxs("button", { className: cn("flex w-full items-center justify-between px-3 py-2 text-left text-sm transition-colors hover:bg-gray-800", subtitlesEnabled && "bg-cyan-700/20 text-cyan-400"), onClick: () => {
55
- if (!subtitlesEnabled) {
56
- onToggleSubtitles();
57
- }
58
- setCurrentView("main");
59
- }, children: [_jsx("span", { children: "Default" }), subtitlesEnabled && (_jsx("svg", { className: "h-4 w-4 text-cyan-400", fill: "currentColor", viewBox: "0 0 20 20", children: _jsx("path", { fillRule: "evenodd", d: "M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" }) }))] }))] })] }));
60
- const renderFontSizeMenu = () => (_jsxs(_Fragment, { children: [_jsxs("div", { className: "flex items-center justify-between border-gray-700 border-b px-3 py-2", children: [_jsx("button", { onClick: handleBackClick, className: "text-gray-400 transition-colors hover:text-white", children: _jsx("svg", { className: "h-4 w-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 19l-7-7 7-7" }) }) }), _jsx("span", { className: "font-semibold text-gray-300 text-sm", children: "Font Size" }), _jsx("div", { className: "w-4" })] }), _jsx("div", { className: "py-1", children: fontSizes.map((size) => (_jsxs("button", { className: cn("flex w-full items-center justify-between px-3 py-2 text-left text-sm transition-colors hover:bg-gray-800", subtitleFontSize === size.value && "bg-cyan-700/20 text-cyan-400"), onClick: () => handleSelectFontSize(size.value), children: [_jsxs("div", { className: "flex items-center gap-3", children: [_jsx("span", { className: "text-gray-400", style: { fontSize: size.size }, children: "Aa" }), _jsx("span", { children: size.label })] }), subtitleFontSize === size.value && (_jsx("svg", { className: "h-4 w-4 text-cyan-400", fill: "currentColor", viewBox: "0 0 20 20", children: _jsx("path", { fillRule: "evenodd", d: "M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" }) }))] }, size.value))) })] }));
61
- const renderSpeedMenu = () => (_jsxs(_Fragment, { children: [_jsxs("div", { className: "flex items-center justify-between border-gray-700 border-b px-3 py-2", children: [_jsx("button", { onClick: handleBackClick, className: "text-gray-400 transition-colors hover:text-white", children: _jsx("svg", { className: "h-4 w-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 19l-7-7 7-7" }) }) }), _jsx("span", { className: "font-semibold text-gray-300 text-sm", children: "Playback Speed" }), _jsx("div", { className: "w-4" })] }), _jsx("div", { className: "py-1", children: playbackRates.map((rate) => (_jsxs("button", { className: cn("flex w-full items-center justify-between px-3 py-2 text-left text-sm transition-colors hover:bg-gray-800", playbackRate === rate && "bg-cyan-700/20 text-cyan-400"), onClick: () => handleSelectSpeed(rate), children: [_jsx("span", { children: rate === 1 ? "Normal" : `${rate}x` }), playbackRate === rate && (_jsx("svg", { className: "h-4 w-4 text-cyan-400", fill: "currentColor", viewBox: "0 0 20 20", children: _jsx("path", { fillRule: "evenodd", d: "M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" }) }))] }, rate))) })] }));
62
- return (_jsxs("div", { className: "relative", style: { zIndex: showSettings ? 60 : "auto" }, children: [_jsx("button", { className: cn("minimal-btn h-9 w-9", showSettings && "text-cyan-500"), onClick: handleSettingsClick, "aria-label": "Settings", title: "Settings", children: defaultMinimalIcons.settings && _jsx(defaultMinimalIcons.settings, { size: 18 }) }), showSettings && (_jsxs("div", { className: "absolute right-0 mb-2 min-w-[240px] overflow-hidden rounded-lg border border-gray-700 bg-gray-900 shadow-xl", style: {
63
- bottom: "100%",
64
- zIndex: 1000,
65
- maxHeight: "400px",
66
- overflowY: "auto"
67
- }, onClick: handleDropdownClick, children: [currentView === "main" && renderMainMenu(), currentView === "subtitles" && renderSubtitlesMenu(), currentView === "fontSize" && renderFontSizeMenu(), currentView === "speed" && renderSpeedMenu()] }))] }));
68
- };
@@ -1 +0,0 @@
1
- {"version":3,"file":"PlaybackControls.d.ts","sourceRoot":"","sources":["PlaybackControls.tsx"],"names":[],"mappings":"AAGA,UAAU,qBAAqB;IAC9B,SAAS,EAAE,OAAO,CAAA;IAClB,YAAY,EAAE,MAAM,IAAI,CAAA;IACxB,cAAc,EAAE,MAAM,IAAI,CAAA;IAC1B,aAAa,EAAE,MAAM,IAAI,CAAA;CACzB;AAED,eAAO,MAAM,gBAAgB,GAA6B,4DAKvD,qBAAqB,4CAmCvB,CAAA"}
@@ -1,9 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { defaultMinimalIcons, MinimalBackward10Icon, MinimalForward10Icon } from "../../../icons";
3
- export const PlaybackControls = function PlaybackControls({ isPlaying, onTogglePlay, onSeekBackward, onSeekForward }) {
4
- const PlayIcon = defaultMinimalIcons.play;
5
- const PauseIcon = defaultMinimalIcons.pause;
6
- return (_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("button", { className: "minimal-btn size-15", onClick: onTogglePlay, "aria-label": isPlaying ? "Pause" : "Play", children: isPlaying
7
- ? PauseIcon && _jsx(PauseIcon, { size: 32 })
8
- : PlayIcon && _jsx(PlayIcon, { size: 32 }) }), _jsx("button", { className: "minimal-btn h-9 w-9", onClick: onSeekBackward, "aria-label": "Backward 10 seconds", title: "Backward 10s (J)", children: _jsx(MinimalBackward10Icon, { size: 18 }) }), _jsx("button", { className: "minimal-btn h-9 w-9", onClick: onSeekForward, "aria-label": "Forward 10 seconds", title: "Forward 10s (L)", children: _jsx(MinimalForward10Icon, { size: 18 }) })] }));
9
- };
@@ -1 +0,0 @@
1
- {"version":3,"file":"RightControls.d.ts","sourceRoot":"","sources":["RightControls.tsx"],"names":[],"mappings":"AASA,UAAU,kBAAkB;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,gBAAgB,EAAE,OAAO,CAAA;IACzB,cAAc,CAAC,EAAE,KAAK,CAAC;QACtB,EAAE,EAAE,MAAM,CAAA;QACV,KAAK,EAAE,MAAM,CAAA;QACb,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,GAAG,CAAC,EAAE,MAAM,CAAA;KACZ,CAAC,CAAA;IACF,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,iBAAiB,CAAC,EAAE,KAAK,GAAG,IAAI,CAAA;IAChC,YAAY,EAAE,OAAO,CAAA;IACrB,YAAY,EAAE,OAAO,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,iBAAiB,EAAE,MAAM,IAAI,CAAA;IAC7B,qBAAqB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;IACxD,gBAAgB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;IAC5C,kBAAkB,EAAE,MAAM,IAAI,CAAA;IAC9B,gBAAgB,EAAE,MAAM,IAAI,CAAA;IAC5B,oBAAoB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAC5C;AAED,eAAO,MAAM,aAAa,GAA0B,sQAgBjD,kBAAkB,4CA4HpB,CAAA"}
@@ -1,40 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useState, useRef, useEffect } from "react";
3
- import { cn } from "../../../../lib/utils";
4
- import { MinimalSubtitleIcon, MinimalScreenshotIcon, defaultMinimalIcons } from "../../../icons";
5
- import { SettingsDropdown } from "./SettingsDropdown";
6
- export const RightControls = function RightControls({ subtitleSrc, subtitlesEnabled, subtitleTracks, currentTrackId, hasSubtitles, subtitleLoadError, isFullscreen, showSettings, playbackRate, onToggleSubtitles, onSelectSubtitleTrack, onTakeScreenshot, onToggleFullscreen, onToggleSettings, onChangePlaybackRate }) {
7
- const [showSubtitleMenu, setShowSubtitleMenu] = useState(false);
8
- const subtitleMenuRef = useRef(null);
9
- const FullscreenIcon = defaultMinimalIcons.fullscreen;
10
- const ExitFullscreenIcon = defaultMinimalIcons.exitFullscreen;
11
- // Close subtitle menu when clicking outside
12
- useEffect(() => {
13
- const handleClickOutside = (event) => {
14
- if (subtitleMenuRef.current && !subtitleMenuRef.current.contains(event.target)) {
15
- setShowSubtitleMenu(false);
16
- }
17
- };
18
- if (showSubtitleMenu) {
19
- document.addEventListener("mousedown", handleClickOutside);
20
- return () => document.removeEventListener("mousedown", handleClickOutside);
21
- }
22
- }, [showSubtitleMenu]);
23
- const handleSubtitleClick = () => {
24
- if (subtitleTracks && subtitleTracks.length > 0) {
25
- setShowSubtitleMenu(!showSubtitleMenu);
26
- }
27
- else {
28
- onToggleSubtitles();
29
- }
30
- };
31
- return (_jsxs("div", { className: "flex items-center gap-2", children: [hasSubtitles && (_jsxs("div", { className: "relative", ref: subtitleMenuRef, children: [_jsx("button", { className: cn("minimal-btn h-9 w-9", subtitlesEnabled && "text-cyan-500", subtitleLoadError && "text-red-500"), onClick: handleSubtitleClick, "aria-label": "Subtitles", title: subtitleLoadError ? "Subtitle Error" : "Subtitles (C)", children: _jsx(MinimalSubtitleIcon, { size: 18 }) }), showSubtitleMenu && subtitleTracks && subtitleTracks.length > 0 && (_jsxs("div", { className: "absolute right-0 bottom-full mb-2 w-48 rounded-md bg-gray-900/95 py-2 shadow-lg backdrop-blur-sm", children: [_jsx("div", { className: "px-3 py-1 font-semibold text-gray-400 text-xs", children: "Subtitles" }), _jsx("button", { className: cn("flex w-full items-center px-3 py-1.5 text-gray-300 text-sm hover:bg-gray-800", !subtitlesEnabled && "bg-gray-800 text-cyan-500"), onClick: () => {
32
- onSelectSubtitleTrack?.(null);
33
- setShowSubtitleMenu(false);
34
- }, children: "Off" }), subtitleTracks.map((track) => (_jsxs("button", { className: cn("flex w-full items-center px-3 py-1.5 text-gray-300 text-sm hover:bg-gray-800", currentTrackId === track.id && "bg-gray-800 text-cyan-500"), onClick: () => {
35
- onSelectSubtitleTrack?.(track.id);
36
- setShowSubtitleMenu(false);
37
- }, children: [_jsx("span", { children: track.label }), track.language && (_jsxs("span", { className: "ml-2 text-gray-500 text-xs", children: ["(", track.language, ")"] }))] }, track.id))), subtitleLoadError && (_jsx("div", { className: "mt-2 border-gray-800 border-t px-3 py-2", children: _jsx("p", { className: "text-red-400 text-xs", children: "Failed to load subtitles" }) }))] }))] })), _jsx("button", { className: "minimal-btn h-9 w-9", onClick: (e) => onTakeScreenshot(e.ctrlKey || e.metaKey), "aria-label": "Take Screenshot", title: "Screenshot (S) - Ctrl+Click to copy", children: _jsx(MinimalScreenshotIcon, { size: 18 }) }), _jsx(SettingsDropdown, { showSettings: showSettings, playbackRate: playbackRate, onToggleSettings: onToggleSettings, onChangePlaybackRate: onChangePlaybackRate }), _jsx("button", { className: "minimal-btn h-9 w-9", onClick: onToggleFullscreen, "aria-label": isFullscreen ? "Exit Fullscreen" : "Enter Fullscreen", title: "Fullscreen (F)", children: isFullscreen
38
- ? ExitFullscreenIcon && _jsx(ExitFullscreenIcon, { size: 18 })
39
- : FullscreenIcon && _jsx(FullscreenIcon, { size: 18 }) })] }));
40
- };
@@ -1 +0,0 @@
1
- {"version":3,"file":"SeekBar.d.ts","sourceRoot":"","sources":["SeekBar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAA;AAErE,UAAU,YAAY;IACrB,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc,CAAC,EAAE,aAAa,EAAE,CAAA;IAChC,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAC9B;AAED,eAAO,MAAM,OAAO,GAAoB,8DAMrC,YAAY,4CAgHd,CAAA"}
@@ -1,43 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useState, useRef } from "react";
3
- import { cn } from "../../../../lib/utils";
4
- export const SeekBar = function SeekBar({ currentTime, duration, bufferedRanges = [], isSeeking = false, onSeek }) {
5
- const [isHovering, setIsHovering] = useState(false);
6
- const [hoverPosition, setHoverPosition] = useState(0);
7
- const [showRipple, setShowRipple] = useState(false);
8
- const [ripplePosition, setRipplePosition] = useState({ x: 0, y: 0 });
9
- const seekBarRef = useRef(null);
10
- const progress = duration > 0 ? (currentTime / duration) * 100 : 0;
11
- const handleClick = (e) => {
12
- if (duration === 0)
13
- return;
14
- const rect = e.currentTarget.getBoundingClientRect();
15
- const position = (e.clientX - rect.left) / rect.width;
16
- const newTime = Math.max(0, Math.min(duration, position * duration));
17
- // Add ripple effect
18
- setRipplePosition({ x: e.clientX - rect.left, y: e.clientY - rect.top });
19
- setShowRipple(true);
20
- setTimeout(() => setShowRipple(false), 600);
21
- onSeek(newTime);
22
- };
23
- const handleMouseMove = (e) => {
24
- if (!seekBarRef.current)
25
- return;
26
- const rect = seekBarRef.current.getBoundingClientRect();
27
- const position = ((e.clientX - rect.left) / rect.width) * 100;
28
- setHoverPosition(Math.max(0, Math.min(100, position)));
29
- };
30
- const handleMouseEnter = () => setIsHovering(true);
31
- const handleMouseLeave = () => setIsHovering(false);
32
- return (_jsxs("div", { className: "relative mb-3", children: [_jsxs("div", { ref: seekBarRef, className: cn("minimal-seekbar group relative cursor-pointer", isSeeking && "minimal-seekbar-seeking"), onClick: handleClick, onMouseMove: handleMouseMove, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, children: [bufferedRanges.map((range, index) => {
33
- const startPercent = duration > 0 ? (range.start / duration) * 100 : 0;
34
- const widthPercent = duration > 0 ? ((range.end - range.start) / duration) * 100 : 0;
35
- return (_jsx("div", { className: "minimal-seekbar-buffered", style: {
36
- left: `${startPercent}%`,
37
- width: `${widthPercent}%`
38
- } }, index));
39
- }), _jsx("div", { className: cn("minimal-seekbar-progress", isSeeking && "minimal-seekbar-progress-seeking"), style: { width: `${progress}%` } }), isHovering && !isSeeking && (_jsx("div", { className: "minimal-seekbar-hover-indicator", style: { left: `${hoverPosition}%` } })), _jsx("div", { className: cn("minimal-seekbar-thumb", (isHovering || isSeeking) && "opacity-100", isSeeking && "minimal-seekbar-thumb-seeking"), style: { left: `${progress}%` } }), showRipple && (_jsx("div", { className: "minimal-seekbar-ripple", style: {
40
- left: ripplePosition.x,
41
- top: ripplePosition.y
42
- } }))] }), isSeeking && (_jsx("div", { className: "-top-6 -translate-x-1/2 absolute left-1/2 transform", children: _jsx("div", { className: "rounded bg-black/80 px-2 py-1 text-white text-xs backdrop-blur-sm", children: "Seeking..." }) }))] }));
43
- };
@@ -1 +0,0 @@
1
- {"version":3,"file":"SettingsDropdown.d.ts","sourceRoot":"","sources":["SettingsDropdown.tsx"],"names":[],"mappings":"AAIA,UAAU,qBAAqB;IAC9B,YAAY,EAAE,OAAO,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,gBAAgB,EAAE,MAAM,IAAI,CAAA;IAC5B,oBAAoB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAC5C;AAED,eAAO,MAAM,gBAAgB,GAA6B,wEAKvD,qBAAqB,4CAqDvB,CAAA"}