@videojs/react 0.1.0-preview.9 → 10.0.0-alpha.4

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 (413) hide show
  1. package/README.md +1 -1
  2. package/dist/default/_virtual/_rolldown/runtime.js +36 -0
  3. package/dist/default/icons/dist/react/default/captions-off.js +66 -0
  4. package/dist/default/icons/dist/react/default/captions-off.js.map +1 -0
  5. package/dist/default/icons/dist/react/default/captions-on.js +19 -0
  6. package/dist/default/icons/dist/react/default/captions-on.js.map +1 -0
  7. package/dist/default/icons/dist/react/default/fullscreen-enter.js +19 -0
  8. package/dist/default/icons/dist/react/default/fullscreen-enter.js.map +1 -0
  9. package/dist/default/icons/dist/react/default/fullscreen-exit.js +19 -0
  10. package/dist/default/icons/dist/react/default/fullscreen-exit.js.map +1 -0
  11. package/dist/default/icons/dist/react/default/pause.js +30 -0
  12. package/dist/default/icons/dist/react/default/pause.js.map +1 -0
  13. package/dist/default/icons/dist/react/default/pip.js +26 -0
  14. package/dist/default/icons/dist/react/default/pip.js.map +1 -0
  15. package/dist/default/icons/dist/react/default/play.js +19 -0
  16. package/dist/default/icons/dist/react/default/play.js.map +1 -0
  17. package/dist/default/icons/dist/react/default/restart.js +22 -0
  18. package/dist/default/icons/dist/react/default/restart.js.map +1 -0
  19. package/dist/default/icons/dist/react/default/seek.js +19 -0
  20. package/dist/default/icons/dist/react/default/seek.js.map +1 -0
  21. package/dist/default/icons/dist/react/default/spinner.js +149 -0
  22. package/dist/default/icons/dist/react/default/spinner.js.map +1 -0
  23. package/dist/default/icons/dist/react/default/volume-high.js +22 -0
  24. package/dist/default/icons/dist/react/default/volume-high.js.map +1 -0
  25. package/dist/default/icons/dist/react/default/volume-low.js +19 -0
  26. package/dist/default/icons/dist/react/default/volume-low.js.map +1 -0
  27. package/dist/default/icons/dist/react/default/volume-off.js +19 -0
  28. package/dist/default/icons/dist/react/default/volume-off.js.map +1 -0
  29. package/dist/default/icons/dist/react/minimal/captions-off.js +66 -0
  30. package/dist/default/icons/dist/react/minimal/captions-off.js.map +1 -0
  31. package/dist/default/icons/dist/react/minimal/captions-on.js +19 -0
  32. package/dist/default/icons/dist/react/minimal/captions-on.js.map +1 -0
  33. package/dist/default/icons/dist/react/minimal/fullscreen-enter.js +29 -0
  34. package/dist/default/icons/dist/react/minimal/fullscreen-enter.js.map +1 -0
  35. package/dist/default/icons/dist/react/minimal/fullscreen-exit.js +29 -0
  36. package/dist/default/icons/dist/react/minimal/fullscreen-exit.js.map +1 -0
  37. package/dist/default/icons/dist/react/minimal/pause.js +30 -0
  38. package/dist/default/icons/dist/react/minimal/pause.js.map +1 -0
  39. package/dist/default/icons/dist/react/minimal/pip.js +26 -0
  40. package/dist/default/icons/dist/react/minimal/pip.js.map +1 -0
  41. package/dist/default/icons/dist/react/minimal/play.js +19 -0
  42. package/dist/default/icons/dist/react/minimal/play.js.map +1 -0
  43. package/dist/default/icons/dist/react/minimal/restart.js +22 -0
  44. package/dist/default/icons/dist/react/minimal/restart.js.map +1 -0
  45. package/dist/default/icons/dist/react/minimal/seek.js +19 -0
  46. package/dist/default/icons/dist/react/minimal/seek.js.map +1 -0
  47. package/dist/default/icons/dist/react/minimal/spinner.js +149 -0
  48. package/dist/default/icons/dist/react/minimal/spinner.js.map +1 -0
  49. package/dist/default/icons/dist/react/minimal/volume-high.js +22 -0
  50. package/dist/default/icons/dist/react/minimal/volume-high.js.map +1 -0
  51. package/dist/default/icons/dist/react/minimal/volume-low.js +19 -0
  52. package/dist/default/icons/dist/react/minimal/volume-low.js.map +1 -0
  53. package/dist/default/icons/dist/react/minimal/volume-off.js +19 -0
  54. package/dist/default/icons/dist/react/minimal/volume-off.js.map +1 -0
  55. package/dist/default/index.js +53 -0
  56. package/dist/default/index.js.map +1 -0
  57. package/dist/default/media/audio.js +22 -0
  58. package/dist/default/media/audio.js.map +1 -0
  59. package/dist/default/media/background-video/index.js +28 -0
  60. package/dist/default/media/background-video/index.js.map +1 -0
  61. package/dist/default/media/hls-video/index.js +25 -0
  62. package/dist/default/media/hls-video/index.js.map +1 -0
  63. package/dist/default/media/video.js +22 -0
  64. package/dist/default/media/video.js.map +1 -0
  65. package/dist/default/player/context.js +55 -0
  66. package/dist/default/player/context.js.map +1 -0
  67. package/dist/default/player/create-player.js +38 -0
  68. package/dist/default/player/create-player.js.map +1 -0
  69. package/dist/default/presets/audio/index.js +12 -0
  70. package/dist/default/presets/audio/index.js.map +1 -0
  71. package/dist/default/presets/audio/minimal-skin.css +3 -0
  72. package/dist/default/presets/audio/minimal-skin.js +11 -0
  73. package/dist/default/presets/audio/minimal-skin.js.map +1 -0
  74. package/dist/default/presets/audio/skin.css +3 -0
  75. package/dist/default/presets/audio/skin.js +11 -0
  76. package/dist/default/presets/audio/skin.js.map +1 -0
  77. package/dist/default/presets/background/index.js +11 -0
  78. package/dist/default/presets/background/index.js.map +1 -0
  79. package/dist/default/presets/background/skin.css +21 -0
  80. package/dist/default/presets/background/skin.js +16 -0
  81. package/dist/default/presets/background/skin.js.map +1 -0
  82. package/dist/default/presets/video/index.js +14 -0
  83. package/dist/default/presets/video/index.js.map +1 -0
  84. package/dist/default/presets/video/minimal-skin.css +637 -0
  85. package/dist/default/presets/video/minimal-skin.js +246 -0
  86. package/dist/default/presets/video/minimal-skin.js.map +1 -0
  87. package/dist/default/presets/video/minimal-skin.tailwind.js +243 -0
  88. package/dist/default/presets/video/minimal-skin.tailwind.js.map +1 -0
  89. package/dist/default/presets/video/skin.css +638 -0
  90. package/dist/default/presets/video/skin.js +235 -0
  91. package/dist/default/presets/video/skin.js.map +1 -0
  92. package/dist/default/presets/video/skin.tailwind.js +234 -0
  93. package/dist/default/presets/video/skin.tailwind.js.map +1 -0
  94. package/dist/default/ui/buffering-indicator/buffering-indicator.js +50 -0
  95. package/dist/default/ui/buffering-indicator/buffering-indicator.js.map +1 -0
  96. package/dist/default/ui/buffering-indicator/index.js +3 -0
  97. package/dist/default/ui/captions-button/captions-button.js +51 -0
  98. package/dist/default/ui/captions-button/captions-button.js.map +1 -0
  99. package/dist/default/ui/captions-button/index.js +3 -0
  100. package/dist/default/ui/controls/controls-group.js +27 -0
  101. package/dist/default/ui/controls/controls-group.js.map +1 -0
  102. package/dist/default/ui/controls/controls-root.js +31 -0
  103. package/dist/default/ui/controls/controls-root.js.map +1 -0
  104. package/dist/default/ui/controls/index.js +3 -0
  105. package/dist/default/ui/controls/index.parts.js +13 -0
  106. package/dist/default/ui/controls/index.parts.js.map +1 -0
  107. package/dist/default/ui/error-dialog/error-dialog.js +54 -0
  108. package/dist/default/ui/error-dialog/error-dialog.js.map +1 -0
  109. package/dist/default/ui/error-dialog/index.js +3 -0
  110. package/dist/default/ui/fullscreen-button/fullscreen-button.js +44 -0
  111. package/dist/default/ui/fullscreen-button/fullscreen-button.js.map +1 -0
  112. package/dist/default/ui/fullscreen-button/index.js +3 -0
  113. package/dist/default/ui/hooks/use-button.js +44 -0
  114. package/dist/default/ui/hooks/use-button.js.map +1 -0
  115. package/dist/default/ui/mute-button/index.js +3 -0
  116. package/dist/default/ui/mute-button/mute-button.js +47 -0
  117. package/dist/default/ui/mute-button/mute-button.js.map +1 -0
  118. package/dist/default/ui/pip-button/index.js +3 -0
  119. package/dist/default/ui/pip-button/pip-button.js +44 -0
  120. package/dist/default/ui/pip-button/pip-button.js.map +1 -0
  121. package/dist/default/ui/play-button/index.js +3 -0
  122. package/dist/default/ui/play-button/play-button.js +60 -0
  123. package/dist/default/ui/play-button/play-button.js.map +1 -0
  124. package/dist/default/ui/poster/index.js +3 -0
  125. package/dist/default/ui/poster/poster.js +43 -0
  126. package/dist/default/ui/poster/poster.js.map +1 -0
  127. package/dist/default/ui/seek-button/index.js +3 -0
  128. package/dist/default/ui/seek-button/seek-button.js +62 -0
  129. package/dist/default/ui/seek-button/seek-button.js.map +1 -0
  130. package/dist/default/ui/time/index.js +3 -0
  131. package/dist/default/ui/time/index.parts.js +15 -0
  132. package/dist/default/ui/time/index.parts.js.map +1 -0
  133. package/dist/default/ui/time/time-group.js +34 -0
  134. package/dist/default/ui/time/time-group.js.map +1 -0
  135. package/dist/default/ui/time/time-separator.js +34 -0
  136. package/dist/default/ui/time/time-separator.js.map +1 -0
  137. package/dist/default/ui/time/time-value.js +54 -0
  138. package/dist/default/ui/time/time-value.js.map +1 -0
  139. package/dist/default/utils/attach-media-element.js +12 -0
  140. package/dist/default/utils/attach-media-element.js.map +1 -0
  141. package/dist/default/utils/media-props.js +11 -0
  142. package/dist/default/utils/media-props.js.map +1 -0
  143. package/dist/default/utils/merge-props.js +85 -0
  144. package/dist/default/utils/merge-props.js.map +1 -0
  145. package/dist/default/utils/use-composed-refs.js +57 -0
  146. package/dist/default/utils/use-composed-refs.js.map +1 -0
  147. package/dist/default/utils/use-render.js +71 -0
  148. package/dist/default/utils/use-render.js.map +1 -0
  149. package/dist/dev/_virtual/_rolldown/runtime.js +36 -0
  150. package/dist/dev/icons/dist/react/default/captions-off.js +66 -0
  151. package/dist/dev/icons/dist/react/default/captions-off.js.map +1 -0
  152. package/dist/dev/icons/dist/react/default/captions-on.js +19 -0
  153. package/dist/dev/icons/dist/react/default/captions-on.js.map +1 -0
  154. package/dist/dev/icons/dist/react/default/fullscreen-enter.js +19 -0
  155. package/dist/dev/icons/dist/react/default/fullscreen-enter.js.map +1 -0
  156. package/dist/dev/icons/dist/react/default/fullscreen-exit.js +19 -0
  157. package/dist/dev/icons/dist/react/default/fullscreen-exit.js.map +1 -0
  158. package/dist/dev/icons/dist/react/default/pause.js +30 -0
  159. package/dist/dev/icons/dist/react/default/pause.js.map +1 -0
  160. package/dist/dev/icons/dist/react/default/pip.js +26 -0
  161. package/dist/dev/icons/dist/react/default/pip.js.map +1 -0
  162. package/dist/dev/icons/dist/react/default/play.js +19 -0
  163. package/dist/dev/icons/dist/react/default/play.js.map +1 -0
  164. package/dist/dev/icons/dist/react/default/restart.js +22 -0
  165. package/dist/dev/icons/dist/react/default/restart.js.map +1 -0
  166. package/dist/dev/icons/dist/react/default/seek.js +19 -0
  167. package/dist/dev/icons/dist/react/default/seek.js.map +1 -0
  168. package/dist/dev/icons/dist/react/default/spinner.js +149 -0
  169. package/dist/dev/icons/dist/react/default/spinner.js.map +1 -0
  170. package/dist/dev/icons/dist/react/default/volume-high.js +22 -0
  171. package/dist/dev/icons/dist/react/default/volume-high.js.map +1 -0
  172. package/dist/dev/icons/dist/react/default/volume-low.js +19 -0
  173. package/dist/dev/icons/dist/react/default/volume-low.js.map +1 -0
  174. package/dist/dev/icons/dist/react/default/volume-off.js +19 -0
  175. package/dist/dev/icons/dist/react/default/volume-off.js.map +1 -0
  176. package/dist/dev/icons/dist/react/minimal/captions-off.js +66 -0
  177. package/dist/dev/icons/dist/react/minimal/captions-off.js.map +1 -0
  178. package/dist/dev/icons/dist/react/minimal/captions-on.js +19 -0
  179. package/dist/dev/icons/dist/react/minimal/captions-on.js.map +1 -0
  180. package/dist/dev/icons/dist/react/minimal/fullscreen-enter.js +29 -0
  181. package/dist/dev/icons/dist/react/minimal/fullscreen-enter.js.map +1 -0
  182. package/dist/dev/icons/dist/react/minimal/fullscreen-exit.js +29 -0
  183. package/dist/dev/icons/dist/react/minimal/fullscreen-exit.js.map +1 -0
  184. package/dist/dev/icons/dist/react/minimal/pause.js +30 -0
  185. package/dist/dev/icons/dist/react/minimal/pause.js.map +1 -0
  186. package/dist/dev/icons/dist/react/minimal/pip.js +26 -0
  187. package/dist/dev/icons/dist/react/minimal/pip.js.map +1 -0
  188. package/dist/dev/icons/dist/react/minimal/play.js +19 -0
  189. package/dist/dev/icons/dist/react/minimal/play.js.map +1 -0
  190. package/dist/dev/icons/dist/react/minimal/restart.js +22 -0
  191. package/dist/dev/icons/dist/react/minimal/restart.js.map +1 -0
  192. package/dist/dev/icons/dist/react/minimal/seek.js +19 -0
  193. package/dist/dev/icons/dist/react/minimal/seek.js.map +1 -0
  194. package/dist/dev/icons/dist/react/minimal/spinner.js +149 -0
  195. package/dist/dev/icons/dist/react/minimal/spinner.js.map +1 -0
  196. package/dist/dev/icons/dist/react/minimal/volume-high.js +22 -0
  197. package/dist/dev/icons/dist/react/minimal/volume-high.js.map +1 -0
  198. package/dist/dev/icons/dist/react/minimal/volume-low.js +19 -0
  199. package/dist/dev/icons/dist/react/minimal/volume-low.js.map +1 -0
  200. package/dist/dev/icons/dist/react/minimal/volume-off.js +19 -0
  201. package/dist/dev/icons/dist/react/minimal/volume-off.js.map +1 -0
  202. package/dist/dev/index.d.ts +23 -0
  203. package/dist/dev/index.js +53 -0
  204. package/dist/dev/index.js.map +1 -0
  205. package/dist/dev/media/audio.d.ts +12 -0
  206. package/dist/dev/media/audio.d.ts.map +1 -0
  207. package/dist/dev/media/audio.js +22 -0
  208. package/dist/dev/media/audio.js.map +1 -0
  209. package/dist/dev/media/background-video/index.d.ts +12 -0
  210. package/dist/dev/media/background-video/index.d.ts.map +1 -0
  211. package/dist/dev/media/background-video/index.js +28 -0
  212. package/dist/dev/media/background-video/index.js.map +1 -0
  213. package/dist/dev/media/hls-video/index.d.ts +11 -0
  214. package/dist/dev/media/hls-video/index.d.ts.map +1 -0
  215. package/dist/dev/media/hls-video/index.js +25 -0
  216. package/dist/dev/media/hls-video/index.js.map +1 -0
  217. package/dist/dev/media/video.d.ts +12 -0
  218. package/dist/dev/media/video.d.ts.map +1 -0
  219. package/dist/dev/media/video.js +22 -0
  220. package/dist/dev/media/video.js.map +1 -0
  221. package/dist/dev/player/context.d.ts +40 -0
  222. package/dist/dev/player/context.d.ts.map +1 -0
  223. package/dist/dev/player/context.js +55 -0
  224. package/dist/dev/player/context.js.map +1 -0
  225. package/dist/dev/player/create-player.d.ts +47 -0
  226. package/dist/dev/player/create-player.d.ts.map +1 -0
  227. package/dist/dev/player/create-player.js +39 -0
  228. package/dist/dev/player/create-player.js.map +1 -0
  229. package/dist/dev/presets/audio/index.d.ts +12 -0
  230. package/dist/dev/presets/audio/index.d.ts.map +1 -0
  231. package/dist/dev/presets/audio/index.js +12 -0
  232. package/dist/dev/presets/audio/index.js.map +1 -0
  233. package/dist/dev/presets/audio/minimal-skin.css +3 -0
  234. package/dist/dev/presets/audio/minimal-skin.d.ts +9 -0
  235. package/dist/dev/presets/audio/minimal-skin.d.ts.map +1 -0
  236. package/dist/dev/presets/audio/minimal-skin.js +11 -0
  237. package/dist/dev/presets/audio/minimal-skin.js.map +1 -0
  238. package/dist/dev/presets/audio/skin.css +3 -0
  239. package/dist/dev/presets/audio/skin.d.ts +9 -0
  240. package/dist/dev/presets/audio/skin.d.ts.map +1 -0
  241. package/dist/dev/presets/audio/skin.js +11 -0
  242. package/dist/dev/presets/audio/skin.js.map +1 -0
  243. package/dist/dev/presets/background/index.d.ts +11 -0
  244. package/dist/dev/presets/background/index.d.ts.map +1 -0
  245. package/dist/dev/presets/background/index.js +11 -0
  246. package/dist/dev/presets/background/index.js.map +1 -0
  247. package/dist/dev/presets/background/skin.css +21 -0
  248. package/dist/dev/presets/background/skin.d.ts +9 -0
  249. package/dist/dev/presets/background/skin.d.ts.map +1 -0
  250. package/dist/dev/presets/background/skin.js +16 -0
  251. package/dist/dev/presets/background/skin.js.map +1 -0
  252. package/dist/dev/presets/types.d.ts +10 -0
  253. package/dist/dev/presets/types.d.ts.map +1 -0
  254. package/dist/dev/presets/video/index.d.ts +14 -0
  255. package/dist/dev/presets/video/index.d.ts.map +1 -0
  256. package/dist/dev/presets/video/index.js +14 -0
  257. package/dist/dev/presets/video/index.js.map +1 -0
  258. package/dist/dev/presets/video/minimal-skin.css +637 -0
  259. package/dist/dev/presets/video/minimal-skin.d.ts +9 -0
  260. package/dist/dev/presets/video/minimal-skin.d.ts.map +1 -0
  261. package/dist/dev/presets/video/minimal-skin.js +246 -0
  262. package/dist/dev/presets/video/minimal-skin.js.map +1 -0
  263. package/dist/dev/presets/video/minimal-skin.tailwind.d.ts +8 -0
  264. package/dist/dev/presets/video/minimal-skin.tailwind.d.ts.map +1 -0
  265. package/dist/dev/presets/video/minimal-skin.tailwind.js +243 -0
  266. package/dist/dev/presets/video/minimal-skin.tailwind.js.map +1 -0
  267. package/dist/dev/presets/video/skin.css +638 -0
  268. package/dist/dev/presets/video/skin.d.ts +9 -0
  269. package/dist/dev/presets/video/skin.d.ts.map +1 -0
  270. package/dist/dev/presets/video/skin.js +235 -0
  271. package/dist/dev/presets/video/skin.js.map +1 -0
  272. package/dist/dev/presets/video/skin.tailwind.d.ts +8 -0
  273. package/dist/dev/presets/video/skin.tailwind.d.ts.map +1 -0
  274. package/dist/dev/presets/video/skin.tailwind.js +234 -0
  275. package/dist/dev/presets/video/skin.tailwind.js.map +1 -0
  276. package/dist/dev/ui/buffering-indicator/buffering-indicator.d.ts +32 -0
  277. package/dist/dev/ui/buffering-indicator/buffering-indicator.d.ts.map +1 -0
  278. package/dist/dev/ui/buffering-indicator/buffering-indicator.js +53 -0
  279. package/dist/dev/ui/buffering-indicator/buffering-indicator.js.map +1 -0
  280. package/dist/dev/ui/buffering-indicator/index.d.ts +2 -0
  281. package/dist/dev/ui/buffering-indicator/index.js +3 -0
  282. package/dist/dev/ui/captions-button/captions-button.d.ts +36 -0
  283. package/dist/dev/ui/captions-button/captions-button.d.ts.map +1 -0
  284. package/dist/dev/ui/captions-button/captions-button.js +51 -0
  285. package/dist/dev/ui/captions-button/captions-button.js.map +1 -0
  286. package/dist/dev/ui/captions-button/index.d.ts +2 -0
  287. package/dist/dev/ui/captions-button/index.js +3 -0
  288. package/dist/dev/ui/controls/controls-group.d.ts +17 -0
  289. package/dist/dev/ui/controls/controls-group.d.ts.map +1 -0
  290. package/dist/dev/ui/controls/controls-group.js +27 -0
  291. package/dist/dev/ui/controls/controls-group.js.map +1 -0
  292. package/dist/dev/ui/controls/controls-root.d.ts +18 -0
  293. package/dist/dev/ui/controls/controls-root.d.ts.map +1 -0
  294. package/dist/dev/ui/controls/controls-root.js +34 -0
  295. package/dist/dev/ui/controls/controls-root.js.map +1 -0
  296. package/dist/dev/ui/controls/index.d.ts +2 -0
  297. package/dist/dev/ui/controls/index.js +3 -0
  298. package/dist/dev/ui/controls/index.parts.d.ts +10 -0
  299. package/dist/dev/ui/controls/index.parts.d.ts.map +1 -0
  300. package/dist/dev/ui/controls/index.parts.js +13 -0
  301. package/dist/dev/ui/controls/index.parts.js.map +1 -0
  302. package/dist/dev/ui/error-dialog/error-dialog.d.ts +35 -0
  303. package/dist/dev/ui/error-dialog/error-dialog.d.ts.map +1 -0
  304. package/dist/dev/ui/error-dialog/error-dialog.js +54 -0
  305. package/dist/dev/ui/error-dialog/error-dialog.js.map +1 -0
  306. package/dist/dev/ui/error-dialog/index.d.ts +2 -0
  307. package/dist/dev/ui/error-dialog/index.js +3 -0
  308. package/dist/dev/ui/fullscreen-button/fullscreen-button.d.ts +14 -0
  309. package/dist/dev/ui/fullscreen-button/fullscreen-button.d.ts.map +1 -0
  310. package/dist/dev/ui/fullscreen-button/fullscreen-button.js +47 -0
  311. package/dist/dev/ui/fullscreen-button/fullscreen-button.js.map +1 -0
  312. package/dist/dev/ui/fullscreen-button/index.d.ts +2 -0
  313. package/dist/dev/ui/fullscreen-button/index.js +3 -0
  314. package/dist/dev/ui/hooks/use-button.d.ts +40 -0
  315. package/dist/dev/ui/hooks/use-button.d.ts.map +1 -0
  316. package/dist/dev/ui/hooks/use-button.js +46 -0
  317. package/dist/dev/ui/hooks/use-button.js.map +1 -0
  318. package/dist/dev/ui/mute-button/index.d.ts +2 -0
  319. package/dist/dev/ui/mute-button/index.js +3 -0
  320. package/dist/dev/ui/mute-button/mute-button.d.ts +17 -0
  321. package/dist/dev/ui/mute-button/mute-button.d.ts.map +1 -0
  322. package/dist/dev/ui/mute-button/mute-button.js +50 -0
  323. package/dist/dev/ui/mute-button/mute-button.js.map +1 -0
  324. package/dist/dev/ui/pip-button/index.d.ts +2 -0
  325. package/dist/dev/ui/pip-button/index.js +3 -0
  326. package/dist/dev/ui/pip-button/pip-button.d.ts +14 -0
  327. package/dist/dev/ui/pip-button/pip-button.d.ts.map +1 -0
  328. package/dist/dev/ui/pip-button/pip-button.js +47 -0
  329. package/dist/dev/ui/pip-button/pip-button.js.map +1 -0
  330. package/dist/dev/ui/play-button/index.d.ts +2 -0
  331. package/dist/dev/ui/play-button/index.js +3 -0
  332. package/dist/dev/ui/play-button/play-button.d.ts +30 -0
  333. package/dist/dev/ui/play-button/play-button.d.ts.map +1 -0
  334. package/dist/dev/ui/play-button/play-button.js +63 -0
  335. package/dist/dev/ui/play-button/play-button.js.map +1 -0
  336. package/dist/dev/ui/poster/index.d.ts +2 -0
  337. package/dist/dev/ui/poster/index.js +3 -0
  338. package/dist/dev/ui/poster/poster.d.ts +28 -0
  339. package/dist/dev/ui/poster/poster.d.ts.map +1 -0
  340. package/dist/dev/ui/poster/poster.js +46 -0
  341. package/dist/dev/ui/poster/poster.js.map +1 -0
  342. package/dist/dev/ui/seek-button/index.d.ts +2 -0
  343. package/dist/dev/ui/seek-button/index.js +3 -0
  344. package/dist/dev/ui/seek-button/seek-button.d.ts +31 -0
  345. package/dist/dev/ui/seek-button/seek-button.d.ts.map +1 -0
  346. package/dist/dev/ui/seek-button/seek-button.js +65 -0
  347. package/dist/dev/ui/seek-button/seek-button.js.map +1 -0
  348. package/dist/dev/ui/time/index.d.ts +2 -0
  349. package/dist/dev/ui/time/index.js +3 -0
  350. package/dist/dev/ui/time/index.parts.d.ts +11 -0
  351. package/dist/dev/ui/time/index.parts.d.ts.map +1 -0
  352. package/dist/dev/ui/time/index.parts.js +15 -0
  353. package/dist/dev/ui/time/index.parts.js.map +1 -0
  354. package/dist/dev/ui/time/time-group.d.ts +29 -0
  355. package/dist/dev/ui/time/time-group.d.ts.map +1 -0
  356. package/dist/dev/ui/time/time-group.js +34 -0
  357. package/dist/dev/ui/time/time-group.js.map +1 -0
  358. package/dist/dev/ui/time/time-separator.d.ts +26 -0
  359. package/dist/dev/ui/time/time-separator.d.ts.map +1 -0
  360. package/dist/dev/ui/time/time-separator.js +34 -0
  361. package/dist/dev/ui/time/time-separator.js.map +1 -0
  362. package/dist/dev/ui/time/time-value.d.ts +24 -0
  363. package/dist/dev/ui/time/time-value.d.ts.map +1 -0
  364. package/dist/dev/ui/time/time-value.js +57 -0
  365. package/dist/dev/ui/time/time-value.js.map +1 -0
  366. package/dist/dev/utils/attach-media-element.js +12 -0
  367. package/dist/dev/utils/attach-media-element.js.map +1 -0
  368. package/dist/dev/utils/media-props.js +11 -0
  369. package/dist/dev/utils/media-props.js.map +1 -0
  370. package/dist/dev/utils/merge-props.d.ts +26 -0
  371. package/dist/dev/utils/merge-props.d.ts.map +1 -0
  372. package/dist/dev/utils/merge-props.js +85 -0
  373. package/dist/dev/utils/merge-props.js.map +1 -0
  374. package/dist/dev/utils/types.d.ts +27 -0
  375. package/dist/dev/utils/types.d.ts.map +1 -0
  376. package/dist/dev/utils/use-composed-refs.js +57 -0
  377. package/dist/dev/utils/use-composed-refs.js.map +1 -0
  378. package/dist/dev/utils/use-render.d.ts +45 -0
  379. package/dist/dev/utils/use-render.d.ts.map +1 -0
  380. package/dist/dev/utils/use-render.js +71 -0
  381. package/dist/dev/utils/use-render.js.map +1 -0
  382. package/package.json +50 -55
  383. package/dist/FrostedSkin-t8edr5LV.d.ts +0 -13
  384. package/dist/FrostedSkin-t8edr5LV.d.ts.map +0 -1
  385. package/dist/MinimalSkin-DzHkJgW-.d.ts +0 -13
  386. package/dist/MinimalSkin-DzHkJgW-.d.ts.map +0 -1
  387. package/dist/VolumeSlider-DBvAU2X3.js +0 -1025
  388. package/dist/VolumeSlider-DBvAU2X3.js.map +0 -1
  389. package/dist/frosted-D2OXDJRV.js +0 -156
  390. package/dist/frosted-D2OXDJRV.js.map +0 -1
  391. package/dist/icons-BqfV81R8.js +0 -316
  392. package/dist/icons-BqfV81R8.js.map +0 -1
  393. package/dist/icons.d.ts +0 -71
  394. package/dist/icons.d.ts.map +0 -1
  395. package/dist/icons.js +0 -3
  396. package/dist/index-CM70WSkA.d.ts +0 -36
  397. package/dist/index-CM70WSkA.d.ts.map +0 -1
  398. package/dist/index.d.ts +0 -331
  399. package/dist/index.d.ts.map +0 -1
  400. package/dist/index.js +0 -89
  401. package/dist/index.js.map +0 -1
  402. package/dist/minimal-CDaU4avz.js +0 -162
  403. package/dist/minimal-CDaU4avz.js.map +0 -1
  404. package/dist/skins/frosted.css +0 -4
  405. package/dist/skins/frosted.d.ts +0 -2
  406. package/dist/skins/frosted.js +0 -9
  407. package/dist/skins/minimal.css +0 -4
  408. package/dist/skins/minimal.d.ts +0 -2
  409. package/dist/skins/minimal.js +0 -9
  410. package/dist/store-hGO5HE2A.js +0 -124
  411. package/dist/store-hGO5HE2A.js.map +0 -1
  412. package/dist/store.d.ts +0 -2
  413. package/dist/store.js +0 -6
@@ -1,1025 +0,0 @@
1
- import { a as useMediaStore, i as useMediaSelector } from "./store-hGO5HE2A.js";
2
- import { currentTimeDisplayStateDefinition, durationDisplayStateDefinition, fullscreenButtonStateDefinition, muteButtonStateDefinition, playButtonStateDefinition, previewTimeDisplayStateDefinition, timeSliderStateDefinition, volumeSliderStateDefinition } from "@videojs/core/store";
3
- import { formatDisplayTime, shallowEqual } from "@videojs/utils";
4
- import * as React$1 from "react";
5
- import { Children, cloneElement, createContext, forwardRef, useCallback, useContext, useEffect, useId, useMemo, useRef, useState, useSyncExternalStore } from "react";
6
- import { Fragment, jsx } from "react/jsx-runtime";
7
- import { contains, getBoundingClientRectWithoutTransform, getInBoundsAdjustments, safePolygon } from "@videojs/utils/dom";
8
- import { TimeSlider, VolumeSlider } from "@videojs/core";
9
-
10
- //#region src/utils/component-factory.tsx
11
- const Context$1 = createContext(null);
12
- /**
13
- * Generic factory function to create connected components following the hooks pattern
14
- * inspired by Adobe React Spectrum and Base UI architectures.
15
- *
16
- * @param useStateHook - Hook that provides component state
17
- * @param usePropsHook - Hook that enhances props with state-derived values
18
- * @param defaultRender - Default render function for the component
19
- * @param displayName - Display name for React DevTools
20
- * @returns Connected component with customizable render prop
21
- */
22
- function toConnectedComponent(useStateHook, usePropsHook, defaultRender, displayName) {
23
- const ConnectedComponent = forwardRef(({ render = defaultRender,...props }, ref) => {
24
- const propsWithRef = ref ? {
25
- ...props,
26
- ref
27
- } : props;
28
- const connectedState = useStateHook(propsWithRef);
29
- const connectedProps = usePropsHook(propsWithRef, connectedState);
30
- return /* @__PURE__ */ jsx(Context$1.Provider, {
31
- value: connectedState,
32
- children: render(connectedProps, connectedState)
33
- });
34
- });
35
- ConnectedComponent.displayName = displayName;
36
- return ConnectedComponent;
37
- }
38
- /**
39
- * Factory function to create context-based components that don't use toConnectedComponent
40
- * These components rely on context provided by a parent component.
41
- *
42
- * @param usePropsHook - Hook that enhances props with context-derived values
43
- * @param defaultRender - Default render function for the component
44
- * @param displayName - Display name for React DevTools
45
- * @returns Context-based component with customizable render prop
46
- */
47
- function toContextComponent(usePropsHook, defaultRender, displayName) {
48
- const ContextComponent = forwardRef(({ render = defaultRender,...props }, ref) => {
49
- const context = useContext(Context$1);
50
- return render(usePropsHook(ref ? {
51
- ...props,
52
- ref
53
- } : props, context), context);
54
- });
55
- ContextComponent.displayName = displayName;
56
- return ContextComponent;
57
- }
58
- /**
59
- * Hook that manages a CoreClass instance and triggers re-renders when state changes.
60
- * Uses useSyncExternalStore for optimal performance with external state subscriptions.
61
- */
62
- function useCore(CoreClass, state) {
63
- const coreRef = useRef(null);
64
- const snapshotRef = useRef(null);
65
- if (!coreRef.current) {
66
- coreRef.current = new CoreClass();
67
- snapshotRef.current = coreRef.current.getState();
68
- }
69
- useEffect(() => {
70
- coreRef.current?.setState(state);
71
- }, [...Object.values(state)]);
72
- useSyncExternalStore(useCallback((onStoreChange) => {
73
- if (!coreRef.current) return () => {};
74
- return coreRef.current.subscribe((newState) => {
75
- snapshotRef.current = newState;
76
- onStoreChange();
77
- });
78
- }, []), useCallback(() => {
79
- return snapshotRef.current;
80
- }, []), () => null);
81
- return coreRef.current.getState();
82
- }
83
-
84
- //#endregion
85
- //#region src/components/CurrentTimeDisplay.tsx
86
- function useCurrentTimeDisplayState(_props) {
87
- /** @TODO Fix type issues with hooks (CJP) */
88
- const mediaState = useMediaSelector(currentTimeDisplayStateDefinition.stateTransform, shallowEqual);
89
- return {
90
- currentTime: mediaState.currentTime ?? 0,
91
- duration: mediaState.duration ?? 0
92
- };
93
- }
94
- function useCurrentTimeDisplayProps(props, _state) {
95
- return { ...props };
96
- }
97
- function renderCurrentTimeDisplay(props, state) {
98
- const { showRemaining,...restProps } = props;
99
- /** @TODO Should this live here or elsewhere? (CJP) */
100
- const timeLabel = showRemaining && state.duration != null && state.currentTime != null ? formatDisplayTime(-(state.duration - state.currentTime)) : formatDisplayTime(state.currentTime);
101
- return /* @__PURE__ */ jsx("span", {
102
- ...restProps,
103
- children: timeLabel
104
- });
105
- }
106
- const CurrentTimeDisplay = toConnectedComponent(useCurrentTimeDisplayState, useCurrentTimeDisplayProps, renderCurrentTimeDisplay, "CurrentTimeDisplay");
107
-
108
- //#endregion
109
- //#region src/components/DurationDisplay.tsx
110
- function useDurationDisplayState(_props) {
111
- return { duration: useMediaSelector(durationDisplayStateDefinition.stateTransform, shallowEqual).duration ?? 0 };
112
- }
113
- function useDurationDisplayProps(props) {
114
- return { ...props };
115
- }
116
- function renderDurationDisplay(props, state) {
117
- return /* @__PURE__ */ jsx("span", {
118
- ...props,
119
- children: formatDisplayTime(state.duration)
120
- });
121
- }
122
- const DurationDisplay = toConnectedComponent(useDurationDisplayState, useDurationDisplayProps, renderDurationDisplay, "DurationDisplay");
123
-
124
- //#endregion
125
- //#region src/components/FullscreenButton.tsx
126
- function useFullscreenButtonState(_props) {
127
- const mediaStore = useMediaStore();
128
- const mediaState = useMediaSelector(fullscreenButtonStateDefinition.stateTransform, shallowEqual);
129
- const methods = useMemo(() => fullscreenButtonStateDefinition.createRequestMethods(mediaStore.dispatch), [mediaStore]);
130
- return {
131
- fullscreen: mediaState.fullscreen,
132
- requestEnterFullscreen: methods.requestEnterFullscreen,
133
- requestExitFullscreen: methods.requestExitFullscreen
134
- };
135
- }
136
- function getFullscreenButtonProps(props, state) {
137
- const baseProps = {
138
- role: "button",
139
- "aria-label": state.fullscreen ? "exit fullscreen" : "enter fullscreen",
140
- "data-tooltip": state.fullscreen ? "Exit Fullscreen" : "Enter Fullscreen",
141
- ...props
142
- };
143
- if (state.fullscreen) baseProps["data-fullscreen"] = "";
144
- return baseProps;
145
- }
146
- function renderFullscreenButton(props, state) {
147
- return /* @__PURE__ */ jsx("button", {
148
- type: "button",
149
- ...props,
150
- onClick: () => {
151
- if (props.disabled) return;
152
- if (state.fullscreen) state.requestExitFullscreen();
153
- else state.requestEnterFullscreen();
154
- },
155
- children: props.children
156
- });
157
- }
158
- const FullscreenButton = toConnectedComponent(useFullscreenButtonState, getFullscreenButtonProps, renderFullscreenButton, "FullscreenButton");
159
-
160
- //#endregion
161
- //#region src/utils/use-composed-refs.ts
162
- /**
163
- * Set a given ref to a given value
164
- * This utility takes care of different types of refs: callback refs and RefObject(s)
165
- */
166
- function setRef(ref, value) {
167
- if (typeof ref === "function") return ref(value);
168
- else if (ref !== null && ref !== void 0) ref.current = value;
169
- }
170
- /**
171
- * A utility to compose multiple refs together
172
- * Accepts callback refs and RefObject(s)
173
- */
174
- function composeRefs(...refs) {
175
- return (node) => {
176
- let hasCleanup = false;
177
- const cleanups = refs.map((ref) => {
178
- const cleanup = setRef(ref, node);
179
- if (!hasCleanup && typeof cleanup == "function") hasCleanup = true;
180
- return cleanup;
181
- });
182
- if (hasCleanup) return () => {
183
- for (let i = 0; i < cleanups.length; i++) {
184
- const cleanup = cleanups[i];
185
- if (typeof cleanup == "function") cleanup();
186
- else setRef(refs[i], null);
187
- }
188
- };
189
- };
190
- }
191
- /**
192
- * A custom hook that composes multiple refs
193
- * Accepts callback refs and RefObject(s)
194
- */
195
- function useComposedRefs(...refs) {
196
- return React$1.useCallback(composeRefs(...refs), refs);
197
- }
198
-
199
- //#endregion
200
- //#region src/components/MediaContainer.tsx
201
- /**
202
- * Hook to associate a React element as the fullscreen container for the media store.
203
- * This is equivalent to Media Chrome's useMediaFullscreenRef but for VJS-10.
204
- *
205
- * The ref callback will register the element as the container state owner
206
- * in the media store, enabling fullscreen functionality.
207
- *
208
- * @example
209
- * import { useMediaContainerRef } from '@videojs/react';
210
- *
211
- * const PlayerContainer = ({ children }) => {
212
- * const containerRef = useMediaContainerRef();
213
- * return <div ref={containerRef}>{children}</div>;
214
- * };
215
- */
216
- function useMediaContainerRef() {
217
- const mediaStore = useMediaStore();
218
- return useCallback((containerElement) => {
219
- if (!mediaStore) return;
220
- mediaStore.dispatch({
221
- type: "containerstateownerchangerequest",
222
- detail: containerElement
223
- });
224
- }, [mediaStore]);
225
- }
226
- /**
227
- * MediaContainer component that automatically registers itself as the fullscreen container.
228
- * This provides a simple wrapper component for fullscreen functionality.
229
- *
230
- * @example
231
- * import { MediaContainer } from '@videojs/react';
232
- *
233
- * const MyPlayer = () => (
234
- * <MediaContainer>
235
- * <video src="video.mp4" />
236
- * <div>Controls here</div>
237
- * </MediaContainer>
238
- * );
239
- */
240
- const MediaContainer = forwardRef(({ children,...props }, ref) => {
241
- const composedRef = useComposedRefs(ref, useMediaContainerRef());
242
- const mediaStore = useMediaStore();
243
- const mediaState = useMediaSelector(playButtonStateDefinition.stateTransform, shallowEqual);
244
- const methods = useMemo(() => playButtonStateDefinition.createRequestMethods(mediaStore.dispatch), [mediaStore]);
245
- return /* @__PURE__ */ jsx("div", {
246
- ref: composedRef,
247
- onClick: useCallback((event) => {
248
- if (!["video", "audio"].includes(event.target.localName || "")) return;
249
- if (mediaState.paused) methods.requestPlay();
250
- else methods.requestPause();
251
- }, [mediaState.paused, methods]),
252
- "data-media-container": true,
253
- ...props,
254
- children
255
- });
256
- });
257
-
258
- //#endregion
259
- //#region src/components/MuteButton.tsx
260
- function useMuteButtonState(_props) {
261
- const mediaStore = useMediaStore();
262
- const mediaState = useMediaSelector(muteButtonStateDefinition.stateTransform, shallowEqual);
263
- const methods = useMemo(() => muteButtonStateDefinition.createRequestMethods(mediaStore.dispatch), [mediaStore]);
264
- return {
265
- volumeLevel: mediaState.volumeLevel,
266
- muted: mediaState.muted,
267
- requestMute: methods.requestMute,
268
- requestUnmute: methods.requestUnmute
269
- };
270
- }
271
- function getMuteButtonProps(props, state) {
272
- const baseProps = {
273
- "data-volume-level": state.volumeLevel,
274
- role: "button",
275
- "aria-label": state.muted ? "unmute" : "mute",
276
- "data-tooltip": state.muted ? "Unmute" : "Mute",
277
- ...props
278
- };
279
- if (state.muted) baseProps["data-muted"] = "";
280
- return baseProps;
281
- }
282
- function renderMuteButton(props, state) {
283
- return /* @__PURE__ */ jsx("button", {
284
- type: "button",
285
- ...props,
286
- onClick: () => {
287
- if (props.disabled) return;
288
- if (state.volumeLevel === "off") state.requestUnmute();
289
- else state.requestMute();
290
- },
291
- children: props.children
292
- });
293
- }
294
- const MuteButton = toConnectedComponent(useMuteButtonState, getMuteButtonProps, renderMuteButton, "MuteButton");
295
- var MuteButton_default = MuteButton;
296
-
297
- //#endregion
298
- //#region src/components/PlayButton.tsx
299
- function usePlayButtonState(_props) {
300
- const mediaStore = useMediaStore();
301
- const mediaState = useMediaSelector(playButtonStateDefinition.stateTransform, shallowEqual);
302
- const methods = useMemo(() => playButtonStateDefinition.createRequestMethods(mediaStore.dispatch), [mediaStore]);
303
- return {
304
- paused: mediaState.paused,
305
- requestPlay: methods.requestPlay,
306
- requestPause: methods.requestPause
307
- };
308
- }
309
- function getPlayButtonProps(props, state) {
310
- const baseProps = {
311
- role: "button",
312
- "aria-label": state.paused ? "play" : "pause",
313
- "data-tooltip": state.paused ? "Play" : "Pause",
314
- ...props
315
- };
316
- if (state.paused) baseProps["data-paused"] = "";
317
- return baseProps;
318
- }
319
- function renderPlayButton(props, state) {
320
- return /* @__PURE__ */ jsx("button", {
321
- type: "button",
322
- ...props,
323
- onClick: () => {
324
- if (props.disabled) return;
325
- if (state.paused) state.requestPlay();
326
- else state.requestPause();
327
- },
328
- children: props.children
329
- });
330
- }
331
- const PlayButton = toConnectedComponent(usePlayButtonState, getPlayButtonProps, renderPlayButton, "PlayButton");
332
- var PlayButton_default = PlayButton;
333
-
334
- //#endregion
335
- //#region src/components/Popover.tsx
336
- const PopoverContext = createContext(null);
337
- function usePopoverContext() {
338
- const context = useContext(PopoverContext);
339
- if (!context) throw new Error("Popover components must be used within PopoverRoot");
340
- return context;
341
- }
342
- function PopoverRoot({ openOnHover = false, delay = 0, closeDelay = 0, children }) {
343
- const [open, setOpen] = useState(false);
344
- const [placement, setPlacement] = useState("top");
345
- const [sideOffset, setSideOffset] = useState(5);
346
- const [transitionStatus, setTransitionStatus] = useState("initial");
347
- const popupRef = useRef(null);
348
- const triggerRef = useRef(null);
349
- const hoverTimeoutRef = useRef(null);
350
- const pointerMoveHandlerRef = useRef(null);
351
- const popupId = useId().replace(/^:([^:]+):$/, "«$1»");
352
- const clearHoverTimeout = useCallback(() => {
353
- if (hoverTimeoutRef.current) {
354
- clearTimeout(hoverTimeoutRef.current);
355
- hoverTimeoutRef.current = null;
356
- }
357
- }, []);
358
- const setOpenState = useCallback((newOpen) => {
359
- if (open === newOpen) return;
360
- setOpen(newOpen);
361
- if (newOpen) {
362
- setTransitionStatus("initial");
363
- if (popupRef.current) popupRef.current.showPopover();
364
- requestAnimationFrame(() => {
365
- setTransitionStatus("open");
366
- });
367
- } else setTransitionStatus("close");
368
- }, [open]);
369
- useEffect(() => {
370
- if (!popupRef.current || open) return;
371
- const transitions = popupRef.current.getAnimations().filter((anim) => anim instanceof CSSTransition);
372
- if (transitions.length > 0) Promise.all(transitions.map((t) => t.finished)).then(() => popupRef.current?.hidePopover()).catch(() => popupRef.current?.hidePopover());
373
- else popupRef.current.hidePopover();
374
- }, [open, transitionStatus]);
375
- const updatePositioning = useCallback((newPlacement, newSideOffset) => {
376
- setPlacement(newPlacement);
377
- setSideOffset(newSideOffset);
378
- }, []);
379
- useEffect(() => {
380
- const trigger = triggerRef.current;
381
- const popup = popupRef.current;
382
- if (!trigger || !popup) return;
383
- const abortController = new AbortController();
384
- const { signal } = abortController;
385
- const addPointerMoveListener = () => {
386
- if (!globalThis.matchMedia?.("(hover: hover)")?.matches) return;
387
- if (!pointerMoveHandlerRef.current) pointerMoveHandlerRef.current = safePolygon({ blockPointerEvents: true })({
388
- placement,
389
- elements: {
390
- domReference: trigger,
391
- floating: popup
392
- },
393
- x: 0,
394
- y: 0,
395
- onClose: () => {
396
- if (pointerMoveHandlerRef.current) document.documentElement.removeEventListener("pointermove", pointerMoveHandlerRef.current);
397
- clearHoverTimeout();
398
- hoverTimeoutRef.current = setTimeout(() => {
399
- setOpenState(false);
400
- }, closeDelay);
401
- }
402
- });
403
- document.documentElement.addEventListener("pointermove", pointerMoveHandlerRef.current, { signal });
404
- };
405
- const handlePointerEnter = (event) => {
406
- if (!openOnHover) return;
407
- clearHoverTimeout();
408
- if (event.currentTarget === popup) addPointerMoveListener();
409
- if (open) return;
410
- hoverTimeoutRef.current = setTimeout(() => {
411
- setOpenState(true);
412
- }, delay);
413
- };
414
- const handlePointerLeave = () => {
415
- if (!openOnHover) return;
416
- addPointerMoveListener();
417
- };
418
- if (globalThis.matchMedia?.("(hover: hover)")?.matches) {
419
- trigger.addEventListener("pointerenter", handlePointerEnter, { signal });
420
- trigger.addEventListener("pointerleave", handlePointerLeave, { signal });
421
- popup.addEventListener("pointerenter", handlePointerEnter, { signal });
422
- }
423
- const handleFocusIn = () => {
424
- setOpenState(true);
425
- };
426
- const handleFocusOut = (event) => {
427
- const relatedTarget = event.relatedTarget;
428
- if (relatedTarget && popup && contains(popup, relatedTarget)) return;
429
- setOpenState(false);
430
- };
431
- trigger.addEventListener("focusin", handleFocusIn, { signal });
432
- trigger.addEventListener("focusout", handleFocusOut, { signal });
433
- popup.addEventListener("focusout", handleFocusOut, { signal });
434
- return () => {
435
- abortController.abort();
436
- clearHoverTimeout();
437
- if (pointerMoveHandlerRef.current) document.documentElement.removeEventListener("pointermove", pointerMoveHandlerRef.current);
438
- pointerMoveHandlerRef.current = null;
439
- };
440
- }, [
441
- openOnHover,
442
- delay,
443
- closeDelay,
444
- open,
445
- placement,
446
- setOpenState,
447
- clearHoverTimeout
448
- ]);
449
- useEffect(() => {
450
- if (!popupRef.current || !triggerRef.current) return;
451
- const popup = popupRef.current;
452
- const [side, alignment] = placement.split("-");
453
- popup.style.setProperty("top", `calc(anchor(${side}) - ${sideOffset}px)`);
454
- popup.style.setProperty("translate", `0 -100%`);
455
- popup.style.setProperty("justify-self", alignment === "start" ? "anchor-start" : alignment === "end" ? "anchor-end" : "anchor-center");
456
- }, [placement, sideOffset]);
457
- const value = useMemo(() => ({
458
- open,
459
- setOpen: setOpenState,
460
- popupRef,
461
- triggerRef,
462
- updatePositioning,
463
- transitionStatus,
464
- placement,
465
- sideOffset,
466
- popupId
467
- }), [
468
- open,
469
- setOpenState,
470
- updatePositioning,
471
- transitionStatus,
472
- placement,
473
- sideOffset,
474
- popupId
475
- ]);
476
- return /* @__PURE__ */ jsx(PopoverContext.Provider, {
477
- value,
478
- children
479
- });
480
- }
481
- function PopoverTrigger({ children }) {
482
- const { triggerRef, open, popupId } = usePopoverContext();
483
- const child = Children.only(children);
484
- const existingStyle = child.props?.style || {};
485
- return cloneElement(child, {
486
- ref: triggerRef,
487
- "data-popup-open": open ? "" : void 0,
488
- commandfor: popupId ?? void 0,
489
- style: {
490
- ...existingStyle,
491
- ...popupId ? { anchorName: `--${popupId}` } : {}
492
- }
493
- });
494
- }
495
- function PopoverPositioner({ side = "top", sideOffset = 5, children }) {
496
- const { updatePositioning } = usePopoverContext();
497
- useEffect(() => {
498
- updatePositioning(side, sideOffset);
499
- }, [
500
- side,
501
- sideOffset,
502
- updatePositioning
503
- ]);
504
- return /* @__PURE__ */ jsx(Fragment, { children });
505
- }
506
- function PopoverPopup({ className, style, children }) {
507
- const { popupRef, triggerRef, transitionStatus, placement, popupId } = usePopoverContext();
508
- const triggerElement = triggerRef.current;
509
- const dataAttributes = useMemo(() => {
510
- if (!triggerElement?.attributes) return {};
511
- return Object.fromEntries(Array.from(triggerElement.attributes).filter((attr) => attr.name.startsWith("data-")).map((attr) => [attr.name, attr.value]));
512
- }, [triggerElement]);
513
- return /* @__PURE__ */ jsx("div", {
514
- ref: popupRef,
515
- id: popupId ?? void 0,
516
- className,
517
- popover: "manual",
518
- style: {
519
- ...popupId ? { positionAnchor: `--${popupId}` } : {},
520
- ...style
521
- },
522
- ...dataAttributes,
523
- "data-side": placement,
524
- "data-starting-style": transitionStatus === "initial" ? "" : void 0,
525
- "data-open": transitionStatus === "initial" || transitionStatus === "open" ? "" : void 0,
526
- "data-ending-style": transitionStatus === "close" || transitionStatus === "unmounted" ? "" : void 0,
527
- "data-closed": transitionStatus === "close" || transitionStatus === "unmounted" ? "" : void 0,
528
- children
529
- });
530
- }
531
- const Popover = {
532
- Root: PopoverRoot,
533
- Trigger: PopoverTrigger,
534
- Positioner: PopoverPositioner,
535
- Popup: PopoverPopup
536
- };
537
- var Popover_default = Popover;
538
-
539
- //#endregion
540
- //#region src/components/PreviewTimeDisplay.tsx
541
- function usePreviewTimeDisplayState(_props) {
542
- return { previewTime: useMediaSelector(previewTimeDisplayStateDefinition.stateTransform, shallowEqual).previewTime ?? 0 };
543
- }
544
- function getPreviewTimeDisplayProps(props, _state) {
545
- return { ...props };
546
- }
547
- function renderPreviewTimeDisplay(props, state) {
548
- const { showRemaining,...restProps } = props;
549
- /** @TODO Should this live here or elsewhere? (CJP) */
550
- const timeLabel = formatDisplayTime(state.previewTime);
551
- return /* @__PURE__ */ jsx("span", {
552
- ...restProps,
553
- children: timeLabel
554
- });
555
- }
556
- const PreviewTimeDisplay = toConnectedComponent(usePreviewTimeDisplayState, getPreviewTimeDisplayProps, renderPreviewTimeDisplay, "PreviewTimeDisplay");
557
- var PreviewTimeDisplay_default = PreviewTimeDisplay;
558
-
559
- //#endregion
560
- //#region src/components/TimeSlider.tsx
561
- function useTimeSliderRootState(props) {
562
- const { orientation = "horizontal" } = props;
563
- const mediaStore = useMediaStore();
564
- const mediaState = useMediaSelector(timeSliderStateDefinition.stateTransform, shallowEqual);
565
- const mediaMethods = useMemo(() => timeSliderStateDefinition.createRequestMethods(mediaStore.dispatch), [mediaStore]);
566
- return {
567
- ...useCore(TimeSlider, {
568
- ...mediaState,
569
- ...mediaMethods
570
- }),
571
- orientation
572
- };
573
- }
574
- function useTimeSliderRootProps(props, state) {
575
- const { children, className, id, style, orientation = "horizontal", ref } = props;
576
- return {
577
- ref: useComposedRefs(ref, state._setRootElement),
578
- id,
579
- role: "slider",
580
- tabIndex: 0,
581
- "aria-label": "Seek",
582
- "aria-valuemin": 0,
583
- "aria-valuemax": Math.round(state.duration),
584
- "aria-valuenow": Math.round(state.currentTime),
585
- "aria-valuetext": `${state._currentTimeText} of ${state._durationText}`,
586
- "aria-orientation": orientation,
587
- "data-orientation": orientation,
588
- "data-current-time": state.currentTime,
589
- "data-duration": state.duration,
590
- className,
591
- style: {
592
- ...style,
593
- "--slider-fill": `${state._fillWidth.toFixed(3)}%`,
594
- "--slider-pointer": `${(state._pointerWidth * 100).toFixed(3)}%`
595
- },
596
- children
597
- };
598
- }
599
- function renderTimeSliderRoot(props) {
600
- return /* @__PURE__ */ jsx("div", { ...props });
601
- }
602
- const TimeSliderRoot = toConnectedComponent(useTimeSliderRootState, useTimeSliderRootProps, renderTimeSliderRoot, "TimeSlider.Root");
603
- function useTimeSliderTrackProps(props, context) {
604
- return {
605
- ref: context._setTrackElement,
606
- "data-orientation": context.orientation,
607
- ...props,
608
- style: {
609
- ...props.style,
610
- [context.orientation === "horizontal" ? "width" : "height"]: "100%"
611
- }
612
- };
613
- }
614
- function renderTimeSliderTrack(props) {
615
- return /* @__PURE__ */ jsx("div", { ...props });
616
- }
617
- const TimeSliderTrack = toContextComponent(useTimeSliderTrackProps, renderTimeSliderTrack, "TimeSlider.Track");
618
- function getTimeSliderThumbProps(props, context) {
619
- return {
620
- "data-orientation": context.orientation,
621
- ...props,
622
- style: {
623
- ...props.style,
624
- [context.orientation === "horizontal" ? "insetInlineStart" : "insetBlockEnd"]: "var(--slider-fill)",
625
- [context.orientation === "horizontal" ? "top" : "left"]: "50%",
626
- translate: context.orientation === "horizontal" ? "-50% -50%" : "-50% 50%",
627
- position: "absolute"
628
- }
629
- };
630
- }
631
- function renderTimeSliderThumb(props) {
632
- return /* @__PURE__ */ jsx("div", { ...props });
633
- }
634
- const TimeSliderThumb = toContextComponent(getTimeSliderThumbProps, renderTimeSliderThumb, "TimeSlider.Thumb");
635
- function getTimeSliderPointerProps(props, context) {
636
- return {
637
- "data-orientation": context.orientation,
638
- ...props,
639
- style: {
640
- ...props.style,
641
- [context.orientation === "horizontal" ? "width" : "height"]: "var(--slider-pointer, 0%)",
642
- [context.orientation === "horizontal" ? "height" : "width"]: "100%",
643
- position: "absolute"
644
- }
645
- };
646
- }
647
- function renderTimeSliderPointer(props) {
648
- return /* @__PURE__ */ jsx("div", { ...props });
649
- }
650
- const TimeSliderPointer = toContextComponent(getTimeSliderPointerProps, renderTimeSliderPointer, "TimeSlider.Pointer");
651
- function getTimeSliderProgressProps(props, context) {
652
- return {
653
- "data-orientation": context.orientation,
654
- ...props,
655
- style: {
656
- ...props.style,
657
- [context.orientation === "horizontal" ? "width" : "height"]: "var(--slider-fill, 0%)",
658
- [context.orientation === "horizontal" ? "height" : "width"]: "100%",
659
- [context.orientation === "horizontal" ? "top" : "bottom"]: "0",
660
- position: "absolute"
661
- }
662
- };
663
- }
664
- function renderTimeSliderProgress(props) {
665
- return /* @__PURE__ */ jsx("div", { ...props });
666
- }
667
- const TimeSliderProgress = toContextComponent(getTimeSliderProgressProps, renderTimeSliderProgress, "TimeSlider.Progress");
668
- const TimeSlider$1 = Object.assign({}, {
669
- Root: TimeSliderRoot,
670
- Track: TimeSliderTrack,
671
- Thumb: TimeSliderThumb,
672
- Pointer: TimeSliderPointer,
673
- Progress: TimeSliderProgress
674
- });
675
-
676
- //#endregion
677
- //#region src/components/Tooltip.tsx
678
- const TooltipContext = createContext(null);
679
- function useTooltipContext() {
680
- const context = useContext(TooltipContext);
681
- if (!context) throw new Error("Tooltip components must be used within TooltipRoot");
682
- return context;
683
- }
684
- function TooltipRoot({ delay = 0, closeDelay = 0, trackCursorAxis, children }) {
685
- const [open, setOpen] = useState(false);
686
- const [placement, setPlacement] = useState("top");
687
- const [sideOffset, setSideOffset] = useState(0);
688
- const [collisionPadding, setCollisionPadding] = useState(0);
689
- const [transitionStatus, setTransitionStatus] = useState("initial");
690
- const popupRef = useRef(null);
691
- const triggerRef = useRef(null);
692
- const hoverTimeoutRef = useRef(null);
693
- const pointerPositionRef = useRef({
694
- x: 0,
695
- y: 0
696
- });
697
- const popupId = useId().replace(/^:([^:]+):$/, "«$1»");
698
- const updatePositioning = useCallback(({ side, sideOffset: sideOffset$1, collisionPadding: collisionPadding$1 }) => {
699
- setPlacement(side);
700
- setSideOffset(sideOffset$1);
701
- setCollisionPadding(collisionPadding$1);
702
- }, []);
703
- const clearHoverTimeout = useCallback(() => {
704
- if (hoverTimeoutRef.current) {
705
- clearTimeout(hoverTimeoutRef.current);
706
- hoverTimeoutRef.current = null;
707
- }
708
- }, []);
709
- const checkCollision = useCallback(() => {
710
- if (!popupRef.current || !triggerRef.current || !open) return;
711
- const mediaContainer = popupRef.current.closest("[data-media-container]");
712
- if (!mediaContainer) return;
713
- const { x } = getInBoundsAdjustments(getBoundingClientRectWithoutTransform(popupRef.current), getBoundingClientRectWithoutTransform(mediaContainer), collisionPadding);
714
- if (x !== 0) if (trackCursorAxis) {
715
- const currentLeft = Number.parseFloat(popupRef.current.style.left || "0");
716
- popupRef.current.style.setProperty("left", `${currentLeft + x}px`);
717
- } else popupRef.current.style.setProperty("translate", `${x}px -100%`);
718
- else if (trackCursorAxis) popupRef.current.style.setProperty("translate", "-50% -100%");
719
- else popupRef.current.style.setProperty("translate", "0 -100%");
720
- }, [
721
- open,
722
- collisionPadding,
723
- trackCursorAxis
724
- ]);
725
- const updatePosition = useCallback(() => {
726
- if (open && trackCursorAxis && popupRef.current) {
727
- popupRef.current.style.setProperty("left", `${pointerPositionRef.current.x}px`);
728
- checkCollision();
729
- }
730
- }, [
731
- open,
732
- trackCursorAxis,
733
- checkCollision
734
- ]);
735
- const setOpenState = useCallback((newOpen) => {
736
- if (open === newOpen) return;
737
- setOpen(newOpen);
738
- if (newOpen) {
739
- setTransitionStatus("initial");
740
- if (popupRef.current) popupRef.current.showPopover();
741
- requestAnimationFrame(() => {
742
- setTransitionStatus("open");
743
- checkCollision();
744
- });
745
- } else setTransitionStatus("close");
746
- }, [open, checkCollision]);
747
- useEffect(() => {
748
- if (!popupRef.current || open) return;
749
- const transitions = popupRef.current.getAnimations().filter((anim) => anim instanceof CSSTransition);
750
- if (transitions.length > 0) Promise.all(transitions.map((t) => t.finished)).then(() => popupRef.current?.hidePopover()).catch(() => popupRef.current?.hidePopover());
751
- else popupRef.current.hidePopover();
752
- }, [open, transitionStatus]);
753
- useEffect(() => {
754
- const trigger = triggerRef.current;
755
- const popup = popupRef.current;
756
- if (!trigger || !popup) return;
757
- const abortController = new AbortController();
758
- const { signal } = abortController;
759
- const handlePointerEnter = () => {
760
- clearHoverTimeout();
761
- hoverTimeoutRef.current = setTimeout(() => {
762
- setOpenState(true);
763
- }, delay);
764
- };
765
- const handlePointerLeave = () => {
766
- clearHoverTimeout();
767
- hoverTimeoutRef.current = setTimeout(() => {
768
- setOpenState(false);
769
- }, closeDelay);
770
- };
771
- const handlePointerMove = (event) => {
772
- if (trackCursorAxis) {
773
- pointerPositionRef.current = {
774
- x: event.clientX,
775
- y: event.clientY
776
- };
777
- if (open) updatePosition();
778
- }
779
- };
780
- const handleFocusIn = () => {
781
- setOpenState(true);
782
- };
783
- const handleFocusOut = (event) => {
784
- const relatedTarget = event.relatedTarget;
785
- if (relatedTarget && popup && contains(popup, relatedTarget)) return;
786
- setOpenState(false);
787
- };
788
- if (globalThis.matchMedia?.("(hover: hover)")?.matches) {
789
- trigger.addEventListener("pointerenter", handlePointerEnter, { signal });
790
- trigger.addEventListener("pointerleave", handlePointerLeave, { signal });
791
- if (trackCursorAxis) trigger.addEventListener("pointermove", handlePointerMove, { signal });
792
- }
793
- trigger.addEventListener("focusin", handleFocusIn, { signal });
794
- trigger.addEventListener("focusout", handleFocusOut, { signal });
795
- return () => {
796
- abortController.abort();
797
- clearHoverTimeout();
798
- };
799
- }, [
800
- delay,
801
- closeDelay,
802
- trackCursorAxis,
803
- open,
804
- setOpenState,
805
- clearHoverTimeout,
806
- updatePosition
807
- ]);
808
- useEffect(() => {
809
- if (!popupRef.current || !triggerRef.current) return;
810
- const popup = popupRef.current;
811
- const [side, alignment] = placement.split("-");
812
- popup.style.setProperty("top", `calc(anchor(${side}) - ${sideOffset}px)`);
813
- if (trackCursorAxis) popup.style.setProperty("translate", `-50% -100%`);
814
- else {
815
- popup.style.setProperty("translate", `0 -100%`);
816
- popup.style.setProperty("justify-self", alignment === "start" ? "anchor-start" : alignment === "end" ? "anchor-end" : "anchor-center");
817
- }
818
- }, [
819
- placement,
820
- sideOffset,
821
- trackCursorAxis
822
- ]);
823
- useEffect(() => {
824
- if (!popupRef.current) return;
825
- const resizeObserver = new ResizeObserver(checkCollision);
826
- resizeObserver.observe(popupRef.current);
827
- return () => {
828
- resizeObserver.disconnect();
829
- };
830
- }, [checkCollision]);
831
- const value = useMemo(() => ({
832
- popupRef,
833
- triggerRef,
834
- open,
835
- transitionStatus,
836
- updatePositioning,
837
- trackCursorAxis,
838
- placement,
839
- sideOffset,
840
- collisionPadding,
841
- popupId
842
- }), [
843
- open,
844
- transitionStatus,
845
- updatePositioning,
846
- trackCursorAxis,
847
- placement,
848
- sideOffset,
849
- collisionPadding,
850
- popupId
851
- ]);
852
- return /* @__PURE__ */ jsx(TooltipContext.Provider, {
853
- value,
854
- children
855
- });
856
- }
857
- function TooltipTrigger({ children }) {
858
- const { triggerRef, open, popupId } = useTooltipContext();
859
- const child = Children.only(children);
860
- const existingStyle = child.props?.style || {};
861
- return cloneElement(child, {
862
- ref: triggerRef,
863
- "data-popup-open": open ? "" : void 0,
864
- commandfor: popupId ?? void 0,
865
- style: {
866
- ...existingStyle,
867
- ...popupId ? { anchorName: `--${popupId}` } : {}
868
- }
869
- });
870
- }
871
- function TooltipPositioner({ side = "top", sideOffset = 0, collisionPadding = 0, children }) {
872
- const { updatePositioning } = useTooltipContext();
873
- useEffect(() => {
874
- updatePositioning({
875
- side,
876
- sideOffset,
877
- collisionPadding
878
- });
879
- }, [
880
- side,
881
- sideOffset,
882
- collisionPadding,
883
- updatePositioning
884
- ]);
885
- return /* @__PURE__ */ jsx(Fragment, { children });
886
- }
887
- function TooltipPopup({ className = "", style, children }) {
888
- const { popupRef, triggerRef, transitionStatus, placement, popupId } = useTooltipContext();
889
- const triggerElement = triggerRef.current;
890
- const dataAttributes = useMemo(() => {
891
- if (!triggerElement?.attributes) return {};
892
- return Object.fromEntries(Array.from(triggerElement.attributes).filter((attr) => attr.name.startsWith("data-")).map((attr) => [attr.name, attr.value]));
893
- }, [triggerElement]);
894
- return /* @__PURE__ */ jsx("div", {
895
- ref: popupRef,
896
- id: popupId ?? void 0,
897
- className,
898
- role: "tooltip",
899
- popover: "manual",
900
- style: {
901
- ...popupId ? { positionAnchor: `--${popupId}` } : {},
902
- ...style
903
- },
904
- ...dataAttributes,
905
- "data-side": placement,
906
- "data-starting-style": transitionStatus === "initial" ? "" : void 0,
907
- "data-open": transitionStatus === "initial" || transitionStatus === "open" ? "" : void 0,
908
- "data-ending-style": transitionStatus === "close" || transitionStatus === "unmounted" ? "" : void 0,
909
- "data-closed": transitionStatus === "close" || transitionStatus === "unmounted" ? "" : void 0,
910
- children
911
- });
912
- }
913
- const Tooltip = {
914
- Root: TooltipRoot,
915
- Trigger: TooltipTrigger,
916
- Positioner: TooltipPositioner,
917
- Popup: TooltipPopup
918
- };
919
- var Tooltip_default = Tooltip;
920
-
921
- //#endregion
922
- //#region src/components/VolumeSlider.tsx
923
- function useVolumeSliderRootState(props) {
924
- const { orientation = "horizontal" } = props;
925
- const mediaStore = useMediaStore();
926
- const mediaState = useMediaSelector(volumeSliderStateDefinition.stateTransform, shallowEqual);
927
- const mediaMethods = useMemo(() => volumeSliderStateDefinition.createRequestMethods(mediaStore.dispatch), [mediaStore]);
928
- return {
929
- ...useCore(VolumeSlider, {
930
- ...mediaState,
931
- ...mediaMethods
932
- }),
933
- orientation
934
- };
935
- }
936
- function useVolumeSliderRootProps(props, state) {
937
- const { children, className, id, style, orientation = "horizontal", ref } = props;
938
- return {
939
- ref: useComposedRefs(ref, state._setRootElement),
940
- id,
941
- role: "slider",
942
- tabIndex: 0,
943
- "aria-label": "Volume",
944
- "aria-valuemin": 0,
945
- "aria-valuemax": 100,
946
- "aria-valuenow": Math.round(state.volume * 100),
947
- "aria-valuetext": state._volumeText,
948
- "aria-orientation": orientation,
949
- "data-orientation": orientation,
950
- "data-muted": state.muted,
951
- "data-volume-level": state.volumeLevel,
952
- "data-volume": state.volume,
953
- className,
954
- style: {
955
- ...style,
956
- "--slider-fill": `${state._fillWidth.toFixed(3)}%`,
957
- "--slider-pointer": `${(state._pointerWidth * 100).toFixed(3)}%`
958
- },
959
- children
960
- };
961
- }
962
- function renderVolumeSliderRoot(props) {
963
- return /* @__PURE__ */ jsx("div", { ...props });
964
- }
965
- const VolumeSliderRoot = toConnectedComponent(useVolumeSliderRootState, useVolumeSliderRootProps, renderVolumeSliderRoot, "VolumeSlider.Root");
966
- function useVolumeSliderTrackProps(props, context) {
967
- return {
968
- ref: context._setTrackElement,
969
- "data-orientation": context.orientation,
970
- ...props,
971
- style: {
972
- ...props.style,
973
- [context.orientation === "horizontal" ? "width" : "height"]: "100%"
974
- }
975
- };
976
- }
977
- function renderVolumeSliderTrack(props) {
978
- return /* @__PURE__ */ jsx("div", { ...props });
979
- }
980
- const VolumeSliderTrack = toContextComponent(useVolumeSliderTrackProps, renderVolumeSliderTrack, "VolumeSlider.Track");
981
- function getVolumeSliderThumbProps(props, context) {
982
- return {
983
- "data-orientation": context.orientation,
984
- ...props,
985
- style: {
986
- ...props.style,
987
- [context.orientation === "horizontal" ? "insetInlineStart" : "insetBlockEnd"]: "var(--slider-fill)",
988
- [context.orientation === "horizontal" ? "top" : "left"]: "50%",
989
- translate: context.orientation === "horizontal" ? "-50% -50%" : "-50% 50%",
990
- position: "absolute"
991
- }
992
- };
993
- }
994
- function renderVolumeSliderThumb(props) {
995
- return /* @__PURE__ */ jsx("div", { ...props });
996
- }
997
- const VolumeSliderThumb = toContextComponent(getVolumeSliderThumbProps, renderVolumeSliderThumb, "VolumeSlider.Thumb");
998
- function getVolumeSliderProgressProps(props, context) {
999
- return {
1000
- "data-orientation": context.orientation,
1001
- ...props,
1002
- style: {
1003
- ...props.style,
1004
- [context.orientation === "horizontal" ? "width" : "height"]: "var(--slider-fill, 0%)",
1005
- [context.orientation === "horizontal" ? "height" : "width"]: "100%",
1006
- [context.orientation === "horizontal" ? "top" : "bottom"]: "0",
1007
- position: "absolute"
1008
- }
1009
- };
1010
- }
1011
- function renderVolumeSliderProgress(props) {
1012
- return /* @__PURE__ */ jsx("div", { ...props });
1013
- }
1014
- const VolumeSliderProgress = toContextComponent(getVolumeSliderProgressProps, renderVolumeSliderProgress, "VolumeSlider.Progress");
1015
- const VolumeSlider$1 = Object.assign({}, {
1016
- Root: VolumeSliderRoot,
1017
- Track: VolumeSliderTrack,
1018
- Thumb: VolumeSliderThumb,
1019
- Progress: VolumeSliderProgress
1020
- });
1021
- var VolumeSlider_default = VolumeSlider$1;
1022
-
1023
- //#endregion
1024
- export { DurationDisplay as _, TimeSlider$1 as a, Popover as c, PlayButton_default as d, MuteButton as f, FullscreenButton as g, useMediaContainerRef as h, Tooltip_default as i, Popover_default as l, MediaContainer as m, VolumeSlider_default as n, PreviewTimeDisplay as o, MuteButton_default as p, Tooltip as r, PreviewTimeDisplay_default as s, VolumeSlider$1 as t, PlayButton as u, CurrentTimeDisplay as v };
1025
- //# sourceMappingURL=VolumeSlider-DBvAU2X3.js.map