@videojs/html 0.1.0-preview.8 → 10.0.0-alpha.3

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 (338) hide show
  1. package/README.md +4 -2
  2. package/dist/default/define/audio/player.js +15 -0
  3. package/dist/default/define/audio/player.js.map +1 -0
  4. package/dist/default/define/background/player.js +15 -0
  5. package/dist/default/define/background/player.js.map +1 -0
  6. package/dist/default/define/background/skin.js +0 -0
  7. package/dist/default/define/feature/video.js +0 -0
  8. package/dist/default/define/media/background-video.js +13 -0
  9. package/dist/default/define/media/background-video.js.map +1 -0
  10. package/dist/default/define/media/hls-video.js +13 -0
  11. package/dist/default/define/media/hls-video.js.map +1 -0
  12. package/dist/default/define/ui/buffering-indicator.js +7 -0
  13. package/dist/default/define/ui/buffering-indicator.js.map +1 -0
  14. package/dist/default/define/ui/controls.js +9 -0
  15. package/dist/default/define/ui/controls.js.map +1 -0
  16. package/dist/default/define/ui/fullscreen-button.js +7 -0
  17. package/dist/default/define/ui/fullscreen-button.js.map +1 -0
  18. package/dist/default/define/ui/mute-button.js +7 -0
  19. package/dist/default/define/ui/mute-button.js.map +1 -0
  20. package/dist/default/define/ui/pip-button.js +7 -0
  21. package/dist/default/define/ui/pip-button.js.map +1 -0
  22. package/dist/default/define/ui/play-button.js +7 -0
  23. package/dist/default/define/ui/play-button.js.map +1 -0
  24. package/dist/default/define/ui/poster.js +7 -0
  25. package/dist/default/define/ui/poster.js.map +1 -0
  26. package/dist/default/define/ui/seek-button.js +7 -0
  27. package/dist/default/define/ui/seek-button.js.map +1 -0
  28. package/dist/default/define/ui/time.js +11 -0
  29. package/dist/default/define/ui/time.js.map +1 -0
  30. package/dist/default/define/video/player.js +15 -0
  31. package/dist/default/define/video/player.js.map +1 -0
  32. package/dist/default/define/video/skin.js +0 -0
  33. package/dist/default/index.js +24 -0
  34. package/dist/default/media/background-video/index.js +77 -0
  35. package/dist/default/media/background-video/index.js.map +1 -0
  36. package/dist/default/media/hls-video/index.js +21 -0
  37. package/dist/default/media/hls-video/index.js.map +1 -0
  38. package/dist/default/player/context.js +14 -0
  39. package/dist/default/player/context.js.map +1 -0
  40. package/dist/default/player/create-player.js +29 -0
  41. package/dist/default/player/create-player.js.map +1 -0
  42. package/dist/default/player/player-controller.js +63 -0
  43. package/dist/default/player/player-controller.js.map +1 -0
  44. package/dist/default/player/player-mixin.js +23 -0
  45. package/dist/default/player/player-mixin.js.map +1 -0
  46. package/dist/default/store/container-mixin.js +74 -0
  47. package/dist/default/store/container-mixin.js.map +1 -0
  48. package/dist/default/store/provider-mixin.js +39 -0
  49. package/dist/default/store/provider-mixin.js.map +1 -0
  50. package/dist/default/ui/buffering-indicator/buffering-indicator-element.js +47 -0
  51. package/dist/default/ui/buffering-indicator/buffering-indicator-element.js.map +1 -0
  52. package/dist/default/ui/controls/controls-element.js +27 -0
  53. package/dist/default/ui/controls/controls-element.js.map +1 -0
  54. package/dist/default/ui/controls/controls-group-element.js +16 -0
  55. package/dist/default/ui/controls/controls-group-element.js.map +1 -0
  56. package/dist/default/ui/fullscreen-button/fullscreen-button-element.js +56 -0
  57. package/dist/default/ui/fullscreen-button/fullscreen-button-element.js.map +1 -0
  58. package/dist/default/ui/media-element.js +8 -0
  59. package/dist/default/ui/media-element.js.map +1 -0
  60. package/dist/default/ui/mute-button/mute-button-element.js +56 -0
  61. package/dist/default/ui/mute-button/mute-button-element.js.map +1 -0
  62. package/dist/default/ui/pip-button/pip-button-element.js +56 -0
  63. package/dist/default/ui/pip-button/pip-button-element.js.map +1 -0
  64. package/dist/default/ui/play-button/play-button-element.js +56 -0
  65. package/dist/default/ui/play-button/play-button-element.js.map +1 -0
  66. package/dist/default/ui/poster/poster-element.js +27 -0
  67. package/dist/default/ui/poster/poster-element.js.map +1 -0
  68. package/dist/default/ui/seek-button/seek-button-element.js +58 -0
  69. package/dist/default/ui/seek-button/seek-button-element.js.map +1 -0
  70. package/dist/default/ui/time/time-element.js +67 -0
  71. package/dist/default/ui/time/time-element.js.map +1 -0
  72. package/dist/default/ui/time/time-group-element.js +12 -0
  73. package/dist/default/ui/time/time-group-element.js.map +1 -0
  74. package/dist/default/ui/time/time-separator-element.js +17 -0
  75. package/dist/default/ui/time/time-separator-element.js.map +1 -0
  76. package/dist/dev/define/audio/player.d.ts +17 -0
  77. package/dist/dev/define/audio/player.d.ts.map +1 -0
  78. package/dist/dev/define/audio/player.js +15 -0
  79. package/dist/dev/define/audio/player.js.map +1 -0
  80. package/dist/dev/define/audio/skin.js +0 -0
  81. package/dist/dev/define/background/player.d.ts +17 -0
  82. package/dist/dev/define/background/player.d.ts.map +1 -0
  83. package/dist/dev/define/background/player.js +15 -0
  84. package/dist/dev/define/background/player.js.map +1 -0
  85. package/dist/dev/define/background/skin.js +0 -0
  86. package/dist/dev/define/feature/video.js +0 -0
  87. package/dist/dev/define/media/background-video.d.ts +14 -0
  88. package/dist/dev/define/media/background-video.d.ts.map +1 -0
  89. package/dist/dev/define/media/background-video.js +13 -0
  90. package/dist/dev/define/media/background-video.js.map +1 -0
  91. package/dist/dev/define/media/hls-video.d.ts +14 -0
  92. package/dist/dev/define/media/hls-video.d.ts.map +1 -0
  93. package/dist/dev/define/media/hls-video.js +13 -0
  94. package/dist/dev/define/media/hls-video.js.map +1 -0
  95. package/dist/dev/define/ui/buffering-indicator.d.ts +9 -0
  96. package/dist/dev/define/ui/buffering-indicator.d.ts.map +1 -0
  97. package/dist/dev/define/ui/buffering-indicator.js +7 -0
  98. package/dist/dev/define/ui/buffering-indicator.js.map +1 -0
  99. package/dist/dev/define/ui/controls.d.ts +11 -0
  100. package/dist/dev/define/ui/controls.d.ts.map +1 -0
  101. package/dist/dev/define/ui/controls.js +9 -0
  102. package/dist/dev/define/ui/controls.js.map +1 -0
  103. package/dist/dev/define/ui/fullscreen-button.d.ts +9 -0
  104. package/dist/dev/define/ui/fullscreen-button.d.ts.map +1 -0
  105. package/dist/dev/define/ui/fullscreen-button.js +7 -0
  106. package/dist/dev/define/ui/fullscreen-button.js.map +1 -0
  107. package/dist/dev/define/ui/mute-button.d.ts +9 -0
  108. package/dist/dev/define/ui/mute-button.d.ts.map +1 -0
  109. package/dist/dev/define/ui/mute-button.js +7 -0
  110. package/dist/dev/define/ui/mute-button.js.map +1 -0
  111. package/dist/dev/define/ui/pip-button.d.ts +9 -0
  112. package/dist/dev/define/ui/pip-button.d.ts.map +1 -0
  113. package/dist/dev/define/ui/pip-button.js +7 -0
  114. package/dist/dev/define/ui/pip-button.js.map +1 -0
  115. package/dist/dev/define/ui/play-button.d.ts +9 -0
  116. package/dist/dev/define/ui/play-button.d.ts.map +1 -0
  117. package/dist/dev/define/ui/play-button.js +7 -0
  118. package/dist/dev/define/ui/play-button.js.map +1 -0
  119. package/dist/dev/define/ui/poster.d.ts +9 -0
  120. package/dist/dev/define/ui/poster.d.ts.map +1 -0
  121. package/dist/dev/define/ui/poster.js +7 -0
  122. package/dist/dev/define/ui/poster.js.map +1 -0
  123. package/dist/dev/define/ui/seek-button.d.ts +9 -0
  124. package/dist/dev/define/ui/seek-button.d.ts.map +1 -0
  125. package/dist/dev/define/ui/seek-button.js +7 -0
  126. package/dist/dev/define/ui/seek-button.js.map +1 -0
  127. package/dist/dev/define/ui/time.d.ts +13 -0
  128. package/dist/dev/define/ui/time.d.ts.map +1 -0
  129. package/dist/dev/define/ui/time.js +11 -0
  130. package/dist/dev/define/ui/time.js.map +1 -0
  131. package/dist/dev/define/video/player.d.ts +17 -0
  132. package/dist/dev/define/video/player.d.ts.map +1 -0
  133. package/dist/dev/define/video/player.js +15 -0
  134. package/dist/dev/define/video/player.js.map +1 -0
  135. package/dist/dev/define/video/skin.js +0 -0
  136. package/dist/dev/index.d.ts +23 -0
  137. package/dist/dev/index.js +24 -0
  138. package/dist/dev/media/background-video/index.d.ts +15 -0
  139. package/dist/dev/media/background-video/index.d.ts.map +1 -0
  140. package/dist/dev/media/background-video/index.js +77 -0
  141. package/dist/dev/media/background-video/index.js.map +1 -0
  142. package/dist/dev/media/hls-video/index.d.ts +11 -0
  143. package/dist/dev/media/hls-video/index.d.ts.map +1 -0
  144. package/dist/dev/media/hls-video/index.js +21 -0
  145. package/dist/dev/media/hls-video/index.js.map +1 -0
  146. package/dist/dev/player/context.d.ts +16 -0
  147. package/dist/dev/player/context.d.ts.map +1 -0
  148. package/dist/dev/player/context.js +14 -0
  149. package/dist/dev/player/context.js.map +1 -0
  150. package/dist/dev/player/create-player.d.ts +73 -0
  151. package/dist/dev/player/create-player.d.ts.map +1 -0
  152. package/dist/dev/player/create-player.js +29 -0
  153. package/dist/dev/player/create-player.js.map +1 -0
  154. package/dist/dev/player/player-controller.d.ts +56 -0
  155. package/dist/dev/player/player-controller.d.ts.map +1 -0
  156. package/dist/dev/player/player-controller.js +63 -0
  157. package/dist/dev/player/player-controller.js.map +1 -0
  158. package/dist/dev/player/player-mixin.d.ts +20 -0
  159. package/dist/dev/player/player-mixin.d.ts.map +1 -0
  160. package/dist/dev/player/player-mixin.js +23 -0
  161. package/dist/dev/player/player-mixin.js.map +1 -0
  162. package/dist/dev/store/container-mixin.d.ts +16 -0
  163. package/dist/dev/store/container-mixin.d.ts.map +1 -0
  164. package/dist/dev/store/container-mixin.js +74 -0
  165. package/dist/dev/store/container-mixin.js.map +1 -0
  166. package/dist/dev/store/provider-mixin.d.ts +17 -0
  167. package/dist/dev/store/provider-mixin.d.ts.map +1 -0
  168. package/dist/dev/store/provider-mixin.js +39 -0
  169. package/dist/dev/store/provider-mixin.js.map +1 -0
  170. package/dist/dev/store/types.d.ts +18 -0
  171. package/dist/dev/store/types.d.ts.map +1 -0
  172. package/dist/dev/ui/buffering-indicator/buffering-indicator-element.d.ts +21 -0
  173. package/dist/dev/ui/buffering-indicator/buffering-indicator-element.d.ts.map +1 -0
  174. package/dist/dev/ui/buffering-indicator/buffering-indicator-element.js +48 -0
  175. package/dist/dev/ui/buffering-indicator/buffering-indicator-element.js.map +1 -0
  176. package/dist/dev/ui/controls/controls-element.d.ts +13 -0
  177. package/dist/dev/ui/controls/controls-element.d.ts.map +1 -0
  178. package/dist/dev/ui/controls/controls-element.js +28 -0
  179. package/dist/dev/ui/controls/controls-element.js.map +1 -0
  180. package/dist/dev/ui/controls/controls-group-element.d.ts +10 -0
  181. package/dist/dev/ui/controls/controls-group-element.d.ts.map +1 -0
  182. package/dist/dev/ui/controls/controls-group-element.js +16 -0
  183. package/dist/dev/ui/controls/controls-group-element.js.map +1 -0
  184. package/dist/dev/ui/fullscreen-button/fullscreen-button-element.d.ts +26 -0
  185. package/dist/dev/ui/fullscreen-button/fullscreen-button-element.d.ts.map +1 -0
  186. package/dist/dev/ui/fullscreen-button/fullscreen-button-element.js +57 -0
  187. package/dist/dev/ui/fullscreen-button/fullscreen-button-element.js.map +1 -0
  188. package/dist/dev/ui/media-element.d.ts +9 -0
  189. package/dist/dev/ui/media-element.d.ts.map +1 -0
  190. package/dist/dev/ui/media-element.js +8 -0
  191. package/dist/dev/ui/media-element.js.map +1 -0
  192. package/dist/dev/ui/mute-button/mute-button-element.d.ts +26 -0
  193. package/dist/dev/ui/mute-button/mute-button-element.d.ts.map +1 -0
  194. package/dist/dev/ui/mute-button/mute-button-element.js +57 -0
  195. package/dist/dev/ui/mute-button/mute-button-element.js.map +1 -0
  196. package/dist/dev/ui/pip-button/pip-button-element.d.ts +26 -0
  197. package/dist/dev/ui/pip-button/pip-button-element.d.ts.map +1 -0
  198. package/dist/dev/ui/pip-button/pip-button-element.js +57 -0
  199. package/dist/dev/ui/pip-button/pip-button-element.js.map +1 -0
  200. package/dist/dev/ui/play-button/play-button-element.d.ts +26 -0
  201. package/dist/dev/ui/play-button/play-button-element.d.ts.map +1 -0
  202. package/dist/dev/ui/play-button/play-button-element.js +57 -0
  203. package/dist/dev/ui/play-button/play-button-element.js.map +1 -0
  204. package/dist/dev/ui/poster/poster-element.d.ts +13 -0
  205. package/dist/dev/ui/poster/poster-element.d.ts.map +1 -0
  206. package/dist/dev/ui/poster/poster-element.js +28 -0
  207. package/dist/dev/ui/poster/poster-element.js.map +1 -0
  208. package/dist/dev/ui/seek-button/seek-button-element.d.ts +30 -0
  209. package/dist/dev/ui/seek-button/seek-button-element.d.ts.map +1 -0
  210. package/dist/dev/ui/seek-button/seek-button-element.js +59 -0
  211. package/dist/dev/ui/seek-button/seek-button-element.js.map +1 -0
  212. package/dist/dev/ui/time/time-element.d.ts +32 -0
  213. package/dist/dev/ui/time/time-element.d.ts.map +1 -0
  214. package/dist/dev/ui/time/time-element.js +68 -0
  215. package/dist/dev/ui/time/time-element.js.map +1 -0
  216. package/dist/dev/ui/time/time-group-element.d.ts +9 -0
  217. package/dist/dev/ui/time/time-group-element.d.ts.map +1 -0
  218. package/dist/dev/ui/time/time-group-element.js +12 -0
  219. package/dist/dev/ui/time/time-group-element.js.map +1 -0
  220. package/dist/dev/ui/time/time-separator-element.d.ts +10 -0
  221. package/dist/dev/ui/time/time-separator-element.d.ts.map +1 -0
  222. package/dist/dev/ui/time/time-separator-element.js +17 -0
  223. package/dist/dev/ui/time/time-separator-element.js.map +1 -0
  224. package/package.json +62 -40
  225. package/dist/button-Bu1mGG-F.js +0 -63
  226. package/dist/button-Bu1mGG-F.js.map +0 -1
  227. package/dist/component-factory-DeAN6cjC.js +0 -47
  228. package/dist/component-factory-DeAN6cjC.js.map +0 -1
  229. package/dist/current-time-display-C3qndGf5.js +0 -47
  230. package/dist/current-time-display-C3qndGf5.js.map +0 -1
  231. package/dist/custom-element-3bDlB2XO.js +0 -10
  232. package/dist/custom-element-3bDlB2XO.js.map +0 -1
  233. package/dist/define/index.d.ts +0 -12
  234. package/dist/define/index.js +0 -27
  235. package/dist/define/media-container.d.ts +0 -1
  236. package/dist/define/media-container.js +0 -3
  237. package/dist/define/media-current-time-display.d.ts +0 -1
  238. package/dist/define/media-current-time-display.js +0 -4
  239. package/dist/define/media-duration-display.d.ts +0 -1
  240. package/dist/define/media-duration-display.js +0 -4
  241. package/dist/define/media-fullscreen-button.d.ts +0 -1
  242. package/dist/define/media-fullscreen-button.js +0 -5
  243. package/dist/define/media-mute-button.d.ts +0 -1
  244. package/dist/define/media-mute-button.js +0 -5
  245. package/dist/define/media-play-button.d.ts +0 -1
  246. package/dist/define/media-play-button.js +0 -5
  247. package/dist/define/media-popover.d.ts +0 -1
  248. package/dist/define/media-popover.js +0 -3
  249. package/dist/define/media-preview-time-display.d.ts +0 -1
  250. package/dist/define/media-preview-time-display.js +0 -4
  251. package/dist/define/media-time-slider.d.ts +0 -1
  252. package/dist/define/media-time-slider.js +0 -4
  253. package/dist/define/media-tooltip.d.ts +0 -1
  254. package/dist/define/media-tooltip.js +0 -3
  255. package/dist/define/media-volume-slider.d.ts +0 -1
  256. package/dist/define/media-volume-slider.js +0 -4
  257. package/dist/define/video-provider.d.ts +0 -1
  258. package/dist/define/video-provider.js +0 -3
  259. package/dist/duration-display-JOPp3bdU.js +0 -49
  260. package/dist/duration-display-JOPp3bdU.js.map +0 -1
  261. package/dist/fullscreen-button-C1nq8yP-.js +0 -48
  262. package/dist/fullscreen-button-C1nq8yP-.js.map +0 -1
  263. package/dist/icons-CuxuONCk.js +0 -209
  264. package/dist/icons-CuxuONCk.js.map +0 -1
  265. package/dist/icons.d.ts +0 -1
  266. package/dist/icons.js +0 -2
  267. package/dist/index.d.ts +0 -154
  268. package/dist/index.d.ts.map +0 -1
  269. package/dist/index.js +0 -17
  270. package/dist/media-container-BOL0PKuG.js +0 -80
  271. package/dist/media-container-BOL0PKuG.js.map +0 -1
  272. package/dist/media-container-DwKSOa1h.js +0 -8
  273. package/dist/media-container-DwKSOa1h.js.map +0 -1
  274. package/dist/media-current-time-display-B-4Cp845.js +0 -8
  275. package/dist/media-current-time-display-B-4Cp845.js.map +0 -1
  276. package/dist/media-duration-display-BLMr7VHo.js +0 -8
  277. package/dist/media-duration-display-BLMr7VHo.js.map +0 -1
  278. package/dist/media-fullscreen-button-BgUK3lgu.d.ts +0 -1
  279. package/dist/media-fullscreen-button-CIpcLhtU.js +0 -8
  280. package/dist/media-fullscreen-button-CIpcLhtU.js.map +0 -1
  281. package/dist/media-mute-button-CHHISH91.js +0 -8
  282. package/dist/media-mute-button-CHHISH91.js.map +0 -1
  283. package/dist/media-mute-button-NVJF2EEW.d.ts +0 -1
  284. package/dist/media-play-button-DhSK0JQk.js +0 -8
  285. package/dist/media-play-button-DhSK0JQk.js.map +0 -1
  286. package/dist/media-play-button-oq8yDlxe.d.ts +0 -1
  287. package/dist/media-popover-BtJmPv0E.d.ts +0 -1
  288. package/dist/media-popover-Cw9d_Bh3.js +0 -8
  289. package/dist/media-popover-Cw9d_Bh3.js.map +0 -1
  290. package/dist/media-preview-time-display-4YX5Rics.d.ts +0 -1
  291. package/dist/media-preview-time-display-DAiMgLPX.js +0 -8
  292. package/dist/media-preview-time-display-DAiMgLPX.js.map +0 -1
  293. package/dist/media-skin-CxnuHwhu.js +0 -36
  294. package/dist/media-skin-CxnuHwhu.js.map +0 -1
  295. package/dist/media-skin-Di3vSHvS.d.ts +0 -11
  296. package/dist/media-skin-Di3vSHvS.d.ts.map +0 -1
  297. package/dist/media-time-slider-DvMnfYXZ.d.ts +0 -1
  298. package/dist/media-time-slider-SuxR3Rep.js +0 -12
  299. package/dist/media-time-slider-SuxR3Rep.js.map +0 -1
  300. package/dist/media-tooltip-BqV17mdM.d.ts +0 -1
  301. package/dist/media-tooltip-CMRN_X4D.js +0 -8
  302. package/dist/media-tooltip-CMRN_X4D.js.map +0 -1
  303. package/dist/media-volume-slider-B-n6b3Y8.js +0 -11
  304. package/dist/media-volume-slider-B-n6b3Y8.js.map +0 -1
  305. package/dist/media-volume-slider-DP47VLVi.d.ts +0 -1
  306. package/dist/mute-button-BSDoCZs3.js +0 -50
  307. package/dist/mute-button-BSDoCZs3.js.map +0 -1
  308. package/dist/play-button-gaqIKsrv.js +0 -44
  309. package/dist/play-button-gaqIKsrv.js.map +0 -1
  310. package/dist/popover-BUCVOjnO.js +0 -167
  311. package/dist/popover-BUCVOjnO.js.map +0 -1
  312. package/dist/preview-time-display-Dax0FQ2X.js +0 -44
  313. package/dist/preview-time-display-Dax0FQ2X.js.map +0 -1
  314. package/dist/skins/frosted.d.ts +0 -23
  315. package/dist/skins/frosted.d.ts.map +0 -1
  316. package/dist/skins/frosted.js +0 -145
  317. package/dist/skins/frosted.js.map +0 -1
  318. package/dist/skins/minimal.d.ts +0 -23
  319. package/dist/skins/minimal.d.ts.map +0 -1
  320. package/dist/skins/minimal.js +0 -150
  321. package/dist/skins/minimal.js.map +0 -1
  322. package/dist/store.d.ts +0 -1
  323. package/dist/time-slider-DKamO_2Q.js +0 -202
  324. package/dist/time-slider-DKamO_2Q.js.map +0 -1
  325. package/dist/tooltip-B-glki2f.js +0 -171
  326. package/dist/tooltip-B-glki2f.js.map +0 -1
  327. package/dist/video-provider-BKDqoKFf.js +0 -17
  328. package/dist/video-provider-BKDqoKFf.js.map +0 -1
  329. package/dist/video-provider-BPPI5e47.js +0 -8
  330. package/dist/video-provider-BPPI5e47.js.map +0 -1
  331. package/dist/video-provider-nSCfwA7l.d.ts +0 -1
  332. package/dist/volume-slider-CbFzCHX4.js +0 -206
  333. package/dist/volume-slider-CbFzCHX4.js.map +0 -1
  334. /package/dist/{store.js → default/define/audio/skin.js} +0 -0
  335. /package/dist/{index-LKrIp3Oo.d.ts → dev/define/audio/skin.d.ts} +0 -0
  336. /package/dist/{media-container-ChS9lZvf.d.ts → dev/define/background/skin.d.ts} +0 -0
  337. /package/dist/{media-current-time-display-Cd0rPAuj.d.ts → dev/define/feature/video.d.ts} +0 -0
  338. /package/dist/{media-duration-display-qvm6YX-q.d.ts → dev/define/video/skin.d.ts} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"time-slider-DKamO_2Q.js","names":["getTimeSliderRootProps: PropsHook<{\n currentTime: number;\n duration: number;\n requestSeek: (time: number) => void;\n core: CoreTimeSlider | null;\n}>","CoreTimeSlider","useTimeSliderRootState: StateHook<{\n currentTime: number;\n duration: number;\n requestSeek: (time: number) => void;\n core: CoreTimeSlider | null;\n}>","getTimeSliderTrackProps: PropsHook<Record<string, never>>","getTimeSliderProgressProps: PropsHook<Record<string, never>>","getTimeSliderPointerProps: PropsHook<Record<string, never>>","getTimeSliderThumbProps: PropsHook<Record<string, never>>","TimeSliderRootElement: ConnectedComponentConstructor<{\n currentTime: number;\n duration: number;\n requestSeek: (time: number) => void;\n core: CoreTimeSlider | null;\n}>","TimeSliderTrackElement: ConnectedComponentConstructor<any>","TimeSliderProgressElement: ConnectedComponentConstructor<any>","TimeSliderPointerElement: ConnectedComponentConstructor<any>","TimeSliderThumbElement: ConnectedComponentConstructor<any>"],"sources":["../src/elements/time-slider.ts"],"sourcesContent":["import type { ConnectedComponentConstructor, PropsHook, StateHook } from '../utils/component-factory';\n\nimport { TimeSlider as CoreTimeSlider } from '@videojs/core';\nimport { timeSliderStateDefinition } from '@videojs/core/store';\n\nimport { setAttributes } from '@videojs/utils/dom';\nimport { toConnectedHTMLComponent } from '../utils/component-factory';\n\ninterface TimeSliderRootState {\n currentTime: number;\n duration: number;\n requestSeek: (time: number) => void;\n core: CoreTimeSlider | null;\n}\n\n/**\n * TimeSlider Root props hook - equivalent to React's useTimeSliderRootProps\n * Handles element attributes and properties based on state\n */\nexport const getTimeSliderRootProps: PropsHook<{\n currentTime: number;\n duration: number;\n requestSeek: (time: number) => void;\n core: CoreTimeSlider | null;\n}> = (state, element) => {\n const formatTime = (time: number) => {\n const minutes = Math.floor(time / 60);\n const seconds = Math.floor(time % 60);\n return `${minutes}:${seconds.toString().padStart(2, '0')}`;\n };\n\n const currentTimeText = formatTime(state.currentTime);\n const durationText = formatTime(state.duration);\n\n const baseProps: Record<string, any> = {\n role: 'slider',\n tabindex: element.getAttribute('tabindex') ?? '0',\n 'data-current-time': state.currentTime.toString(),\n 'data-duration': state.duration.toString(),\n 'data-orientation': (element as any).orientation || 'horizontal',\n 'aria-label': 'Seek',\n 'aria-valuemin': '0',\n 'aria-valuemax': Math.round(state.duration).toString(),\n 'aria-valuenow': Math.round(state.currentTime).toString(),\n 'aria-valuetext': `${currentTimeText} of ${durationText}`,\n 'aria-orientation': (element as any).orientation || 'horizontal',\n };\n\n return baseProps;\n};\n\nexport class TimeSliderRoot extends HTMLElement {\n static readonly observedAttributes: readonly string[] = ['commandfor', 'orientation'];\n\n _state: TimeSliderRootState | undefined;\n _core: CoreTimeSlider | null = null;\n\n get currentTime(): number {\n return this._state?.currentTime ?? 0;\n }\n\n get duration(): number {\n return this._state?.duration ?? 0;\n }\n\n get orientation(): 'horizontal' | 'vertical' {\n return (this.getAttribute('orientation') as 'horizontal' | 'vertical') || 'horizontal';\n }\n\n attributeChangedCallback(name: string, _oldValue: string | null, newValue: string | null): void {\n if (name === 'orientation' && this._state) {\n this._render(getTimeSliderRootProps(this._state, this), this._state);\n } else if (name === 'commandfor') {\n this.style.setProperty('anchor-name', `--${newValue}`);\n }\n }\n\n _update(_props: any, state: any): void {\n this._state = state;\n\n if (state && !this._core) {\n this._core = new CoreTimeSlider();\n this._core.subscribe(() => this._render(getTimeSliderRootProps(state, this), state));\n this._core.attach(this);\n state.core = this._core;\n }\n\n this._core?.setState(state);\n }\n\n _render(props: any, state: any): void {\n const coreState = state?.core?.getState();\n if (!coreState) return;\n\n this.style.setProperty('--slider-fill', `${Math.round(coreState._fillWidth)}%`);\n this.style.setProperty('--slider-pointer', `${Math.round(coreState._pointerWidth)}%`);\n\n setAttributes(this, props);\n }\n}\n\nexport class TimeSliderTrack extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback(): void {\n // Set this element as the track element in the core TimeSlider\n const rootElement = this.closest('media-time-slider') as any;\n if (rootElement?._state?.core) {\n rootElement._state.core.setState({ _trackElement: this });\n }\n }\n\n _update(props: any, _state: any): void {\n setAttributes(this, props);\n\n if (props['data-orientation'] === 'horizontal') {\n this.style.width = '100%';\n this.style.removeProperty('height');\n } else {\n this.style.height = '100%';\n this.style.removeProperty('width');\n }\n }\n}\n\nexport class TimeSliderProgress extends HTMLElement {\n constructor() {\n super();\n this.style.position = 'absolute';\n this.style.width = 'var(--slider-fill, 0%)';\n this.style.height = '100%';\n }\n\n _update(props: any, _state: any): void {\n setAttributes(this, props);\n\n if (props['data-orientation'] === 'horizontal') {\n this.style.width = 'var(--slider-fill, 0%)';\n this.style.height = '100%';\n this.style.top = '0';\n this.style.removeProperty('bottom');\n } else {\n this.style.height = 'var(--slider-fill, 0%)';\n this.style.width = '100%';\n this.style.bottom = '0';\n this.style.removeProperty('top');\n }\n }\n}\n\nexport class TimeSliderPointer extends HTMLElement {\n constructor() {\n super();\n this.style.position = 'absolute';\n this.style.width = 'var(--slider-pointer, 0%)';\n this.style.height = '100%';\n }\n\n _update(props: any, _state: any): void {\n setAttributes(this, props);\n\n if (props['data-orientation'] === 'horizontal') {\n this.style.width = 'var(--slider-pointer, 0%)';\n this.style.height = '100%';\n this.style.top = '0';\n this.style.removeProperty('bottom');\n } else {\n this.style.height = 'var(--slider-pointer, 0%)';\n this.style.width = '100%';\n this.style.bottom = '0';\n this.style.removeProperty('top');\n }\n }\n}\n\nexport class TimeSliderThumb extends HTMLElement {\n constructor() {\n super();\n this.style.position = 'absolute';\n }\n\n _update(props: any, _state: any): void {\n setAttributes(this, props);\n\n // Set appropriate positioning based on orientation\n if (props['data-orientation'] === 'horizontal') {\n this.style.left = 'var(--slider-fill, 0%)';\n this.style.top = '50%';\n this.style.translate = '-50% -50%';\n } else {\n this.style.bottom = 'var(--slider-fill, 0%)';\n this.style.left = '50%';\n this.style.translate = '-50% 50%';\n }\n }\n}\n\nexport const useTimeSliderRootState: StateHook<{\n currentTime: number;\n duration: number;\n requestSeek: (time: number) => void;\n core: CoreTimeSlider | null;\n}> = {\n keys: timeSliderStateDefinition.keys,\n transform: (rawState, mediaStore) => ({\n ...timeSliderStateDefinition.stateTransform(rawState),\n ...timeSliderStateDefinition.createRequestMethods(mediaStore.dispatch),\n core: null,\n }),\n};\n\nexport const getTimeSliderTrackProps: PropsHook<Record<string, never>> = (_state, element) => {\n const rootElement = element.closest('media-time-slider') as any;\n return {\n 'data-orientation': rootElement?.orientation || 'horizontal',\n };\n};\n\nexport const getTimeSliderProgressProps: PropsHook<Record<string, never>> = (_state, element) => {\n const rootElement = element.closest('media-time-slider') as any;\n return {\n 'data-orientation': rootElement?.orientation || 'horizontal',\n };\n};\n\nexport const getTimeSliderPointerProps: PropsHook<Record<string, never>> = (_state, element) => {\n const rootElement = element.closest('media-time-slider') as any;\n return {\n 'data-orientation': rootElement?.orientation || 'horizontal',\n };\n};\n\nexport const getTimeSliderThumbProps: PropsHook<Record<string, never>> = (_state, element) => {\n const rootElement = element.closest('media-time-slider') as any;\n return {\n 'data-orientation': rootElement?.orientation || 'horizontal',\n };\n};\n\nexport const TimeSliderRootElement: ConnectedComponentConstructor<{\n currentTime: number;\n duration: number;\n requestSeek: (time: number) => void;\n core: CoreTimeSlider | null;\n}> = toConnectedHTMLComponent(TimeSliderRoot, useTimeSliderRootState, getTimeSliderRootProps, 'TimeSliderRoot');\n\nexport const TimeSliderTrackElement: ConnectedComponentConstructor<any> = toConnectedHTMLComponent(\n TimeSliderTrack,\n { keys: [], transform: () => ({}) },\n getTimeSliderTrackProps,\n 'TimeSliderTrack',\n);\n\nexport const TimeSliderProgressElement: ConnectedComponentConstructor<any> = toConnectedHTMLComponent(\n TimeSliderProgress,\n { keys: [], transform: () => ({}) },\n getTimeSliderProgressProps,\n 'TimeSliderProgress',\n);\n\nexport const TimeSliderPointerElement: ConnectedComponentConstructor<any> = toConnectedHTMLComponent(\n TimeSliderPointer,\n { keys: [], transform: () => ({}) },\n getTimeSliderPointerProps,\n 'TimeSliderPointer',\n);\n\nexport const TimeSliderThumbElement: ConnectedComponentConstructor<any> = toConnectedHTMLComponent(\n TimeSliderThumb,\n { keys: [], transform: () => ({}) },\n getTimeSliderThumbProps,\n 'TimeSliderThumb',\n);\n\nexport const TimeSliderElement = Object.assign(\n {},\n {\n Root: TimeSliderRootElement,\n Track: TimeSliderTrackElement,\n Progress: TimeSliderProgressElement,\n Pointer: TimeSliderPointerElement,\n Thumb: TimeSliderThumbElement,\n },\n) as {\n Root: typeof TimeSliderRootElement;\n Track: typeof TimeSliderTrackElement;\n Progress: typeof TimeSliderProgressElement;\n Pointer: typeof TimeSliderPointerElement;\n Thumb: typeof TimeSliderThumbElement;\n};\n"],"mappings":"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"}
@@ -1,171 +0,0 @@
1
- import { getBoundingClientRectWithoutTransform, getDocumentOrShadowRoot, getInBoundsAdjustments } from "@videojs/utils/dom";
2
-
3
- //#region src/elements/tooltip.ts
4
- var TooltipElement = class extends HTMLElement {
5
- static get observedAttributes() {
6
- return [
7
- "id",
8
- "delay",
9
- "close-delay",
10
- "track-cursor-axis",
11
- "side",
12
- "side-offset",
13
- "collision-padding"
14
- ];
15
- }
16
- #open = false;
17
- #hoverTimeout = null;
18
- #pointerPosition = {
19
- x: 0,
20
- y: 0
21
- };
22
- #transitionStatus = "initial";
23
- #abortController = null;
24
- constructor() {
25
- super();
26
- new ResizeObserver(() => this.#checkCollision()).observe(this);
27
- }
28
- attributeChangedCallback(name, _oldValue, newValue) {
29
- if (name === "id") this.style.setProperty("position-anchor", `--${newValue}`);
30
- const [side, alignment] = this.side.split("-");
31
- this.style.setProperty("top", `calc(anchor(${side}) - ${this.sideOffset}px)`);
32
- if (this.trackCursorAxis) this.style.setProperty("translate", `-50% -100%`);
33
- else {
34
- this.style.setProperty("translate", `0 -100%`);
35
- this.style.setProperty("justify-self", alignment === "start" ? "anchor-start" : alignment === "end" ? "anchor-end" : "anchor-center");
36
- }
37
- }
38
- connectedCallback() {
39
- this.setAttribute("role", "tooltip");
40
- this.#abortController ??= new AbortController();
41
- const { signal } = this.#abortController;
42
- const trigger = this.#triggerElement;
43
- if (trigger) {
44
- if (globalThis.matchMedia?.("(hover: hover)")?.matches) {
45
- trigger.addEventListener("pointerenter", this, { signal });
46
- trigger.addEventListener("pointerleave", this, { signal });
47
- trigger.addEventListener("pointermove", this, { signal });
48
- }
49
- }
50
- this.#updateVisibility();
51
- }
52
- disconnectedCallback() {
53
- this.#clearHoverTimeout();
54
- this.#abortController?.abort();
55
- this.#abortController = null;
56
- this.#transitionStatus = "unmounted";
57
- this.#updateVisibility();
58
- }
59
- handleEvent(event) {
60
- switch (event.type) {
61
- case "pointerenter":
62
- this.#handlePointerEnter();
63
- break;
64
- case "pointerleave":
65
- this.#handlePointerLeave(event);
66
- break;
67
- case "pointermove":
68
- this.#handlePointerMove(event);
69
- break;
70
- default: break;
71
- }
72
- }
73
- get delay() {
74
- return Number.parseInt(this.getAttribute("delay") ?? "0", 10);
75
- }
76
- get closeDelay() {
77
- return Number.parseInt(this.getAttribute("close-delay") ?? "0", 10);
78
- }
79
- get trackCursorAxis() {
80
- const value = this.getAttribute("track-cursor-axis");
81
- return value === "x" || value === "y" || value === "both" ? value : void 0;
82
- }
83
- get side() {
84
- return this.getAttribute("side") ?? "top";
85
- }
86
- get sideOffset() {
87
- return Number.parseInt(this.getAttribute("side-offset") ?? "0", 10);
88
- }
89
- get collisionPadding() {
90
- return Number.parseInt(this.getAttribute("collision-padding") ?? "0", 10);
91
- }
92
- get #triggerElement() {
93
- return getDocumentOrShadowRoot(this)?.querySelector(`[commandfor="${this.id}"]`);
94
- }
95
- #setOpen(open) {
96
- if (this.#open === open) return;
97
- this.#open = open;
98
- if (open) {
99
- this.#transitionStatus = "initial";
100
- this.#updateVisibility();
101
- this.showPopover();
102
- requestAnimationFrame(() => {
103
- this.#transitionStatus = "open";
104
- this.#updateVisibility();
105
- this.#checkCollision();
106
- });
107
- } else {
108
- this.#transitionStatus = "close";
109
- this.#updateVisibility();
110
- const transitions = this.getAnimations().filter((anim) => anim instanceof CSSTransition);
111
- if (transitions.length > 0) Promise.all(transitions.map((t) => t.finished)).then(() => this.hidePopover()).catch(() => this.hidePopover());
112
- else this.hidePopover();
113
- }
114
- }
115
- #updateVisibility() {
116
- this.toggleAttribute("data-starting-style", this.#transitionStatus === "initial");
117
- this.toggleAttribute("data-open", this.#transitionStatus === "initial" || this.#transitionStatus === "open");
118
- this.toggleAttribute("data-ending-style", this.#transitionStatus === "close" || this.#transitionStatus === "unmounted");
119
- this.toggleAttribute("data-closed", this.#transitionStatus === "close" || this.#transitionStatus === "unmounted");
120
- const triggerElement = this.#triggerElement;
121
- if (triggerElement) triggerElement.toggleAttribute("data-popup-open", this.#open);
122
- }
123
- #updatePosition() {
124
- if (this.#open && this.trackCursorAxis) {
125
- this.style.setProperty("left", `${this.#pointerPosition.x}px`);
126
- this.#checkCollision();
127
- }
128
- }
129
- #checkCollision() {
130
- const mediaContainer = this.closest("media-container");
131
- if (!mediaContainer || !this.#open) return;
132
- const { x } = getInBoundsAdjustments(getBoundingClientRectWithoutTransform(this), getBoundingClientRectWithoutTransform(mediaContainer), this.collisionPadding);
133
- if (x !== 0) if (this.trackCursorAxis) {
134
- const currentLeft = Number.parseFloat(this.style.left || "0");
135
- this.style.setProperty("left", `${currentLeft + x}px`);
136
- } else this.style.setProperty("translate", `${x}px -100%`);
137
- else if (this.trackCursorAxis) this.style.setProperty("translate", "-50% -100%");
138
- else this.style.setProperty("translate", "0 -100%");
139
- }
140
- #clearHoverTimeout() {
141
- if (this.#hoverTimeout) {
142
- globalThis.clearTimeout(this.#hoverTimeout);
143
- this.#hoverTimeout = null;
144
- }
145
- }
146
- #handlePointerEnter() {
147
- this.#clearHoverTimeout();
148
- this.#hoverTimeout = globalThis.setTimeout(() => {
149
- this.#setOpen(true);
150
- }, this.delay);
151
- }
152
- #handlePointerLeave(_event) {
153
- this.#clearHoverTimeout();
154
- this.#hoverTimeout = globalThis.setTimeout(() => {
155
- this.#setOpen(false);
156
- }, this.closeDelay);
157
- }
158
- #handlePointerMove(event) {
159
- if (this.trackCursorAxis) {
160
- this.#pointerPosition = {
161
- x: event.clientX,
162
- y: event.clientY
163
- };
164
- if (this.#open) this.#updatePosition();
165
- }
166
- }
167
- };
168
-
169
- //#endregion
170
- export { TooltipElement as t };
171
- //# sourceMappingURL=tooltip-B-glki2f.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tooltip-B-glki2f.js","names":["#checkCollision","#abortController","#triggerElement","#updateVisibility","#clearHoverTimeout","#transitionStatus","#handlePointerEnter","#handlePointerLeave","#handlePointerMove","#open","#pointerPosition","#hoverTimeout","#setOpen","#updatePosition"],"sources":["../src/elements/tooltip.ts"],"sourcesContent":["import type { MediaContainerElement } from '@/media/media-container';\n\nimport {\n getBoundingClientRectWithoutTransform,\n getDocumentOrShadowRoot,\n getInBoundsAdjustments,\n} from '@videojs/utils/dom';\n\ntype Placement = 'top' | 'top-start' | 'top-end';\n\nexport class TooltipElement extends HTMLElement {\n static get observedAttributes(): string[] {\n return ['id', 'delay', 'close-delay', 'track-cursor-axis', 'side', 'side-offset', 'collision-padding'];\n }\n\n #open = false;\n #hoverTimeout: ReturnType<typeof setTimeout> | null = null;\n #pointerPosition = { x: 0, y: 0 };\n #transitionStatus: 'initial' | 'open' | 'close' | 'unmounted' = 'initial';\n #abortController: AbortController | null = null;\n\n constructor() {\n super();\n\n const resizeObserver = new ResizeObserver(() => this.#checkCollision());\n resizeObserver.observe(this);\n }\n\n attributeChangedCallback(name: string, _oldValue: string, newValue: string): void {\n if (name === 'id') {\n this.style.setProperty('position-anchor', `--${newValue}`);\n }\n const [side, alignment] = this.side.split('-');\n this.style.setProperty('top', `calc(anchor(${side}) - ${this.sideOffset}px)`);\n\n if (this.trackCursorAxis) {\n this.style.setProperty('translate', `-50% -100%`);\n } else {\n this.style.setProperty('translate', `0 -100%`);\n this.style.setProperty('justify-self', alignment === 'start'\n ? 'anchor-start'\n : alignment === 'end'\n ? 'anchor-end'\n : 'anchor-center');\n }\n }\n\n connectedCallback(): void {\n this.setAttribute('role', 'tooltip');\n\n this.#abortController ??= new AbortController();\n const { signal } = this.#abortController;\n\n const trigger = this.#triggerElement as HTMLElement;\n if (trigger) {\n if (globalThis.matchMedia?.('(hover: hover)')?.matches) {\n trigger.addEventListener('pointerenter', this, { signal });\n trigger.addEventListener('pointerleave', this, { signal });\n trigger.addEventListener('pointermove', this, { signal });\n }\n }\n\n this.#updateVisibility();\n }\n\n disconnectedCallback(): void {\n this.#clearHoverTimeout();\n this.#abortController?.abort();\n this.#abortController = null;\n\n this.#transitionStatus = 'unmounted';\n this.#updateVisibility();\n }\n\n handleEvent(event: Event): void {\n switch (event.type) {\n case 'pointerenter':\n this.#handlePointerEnter();\n break;\n case 'pointerleave':\n this.#handlePointerLeave(event as PointerEvent);\n break;\n case 'pointermove':\n this.#handlePointerMove(event as PointerEvent);\n break;\n default:\n break;\n }\n }\n\n get delay(): number {\n return Number.parseInt(this.getAttribute('delay') ?? '0', 10);\n }\n\n get closeDelay(): number {\n return Number.parseInt(this.getAttribute('close-delay') ?? '0', 10);\n }\n\n get trackCursorAxis(): 'x' | 'y' | 'both' | undefined {\n const value = this.getAttribute('track-cursor-axis');\n return value === 'x' || value === 'y' || value === 'both' ? value : undefined;\n }\n\n get side(): Placement {\n return (this.getAttribute('side') as Placement) ?? 'top';\n }\n\n get sideOffset(): number {\n return Number.parseInt(this.getAttribute('side-offset') ?? '0', 10);\n }\n\n get collisionPadding(): number {\n return Number.parseInt(this.getAttribute('collision-padding') ?? '0', 10);\n }\n\n get #triggerElement(): HTMLElement | null {\n return getDocumentOrShadowRoot(this)?.querySelector(`[commandfor=\"${this.id}\"]`) as HTMLElement | null;\n }\n\n #setOpen(open: boolean): void {\n if (this.#open === open) return;\n\n this.#open = open;\n\n if (open) {\n this.#transitionStatus = 'initial';\n this.#updateVisibility();\n\n this.showPopover();\n\n requestAnimationFrame(() => {\n this.#transitionStatus = 'open';\n this.#updateVisibility();\n this.#checkCollision();\n });\n } else {\n this.#transitionStatus = 'close';\n this.#updateVisibility();\n\n const transitions = this.getAnimations().filter(anim => anim instanceof CSSTransition);\n if (transitions.length > 0) {\n Promise.all(transitions.map(t => t.finished))\n .then(() => this.hidePopover())\n .catch(() => this.hidePopover());\n } else {\n this.hidePopover();\n }\n }\n }\n\n #updateVisibility(): void {\n this.toggleAttribute('data-starting-style', this.#transitionStatus === 'initial');\n this.toggleAttribute('data-open', this.#transitionStatus === 'initial' || this.#transitionStatus === 'open');\n this.toggleAttribute(\n 'data-ending-style',\n this.#transitionStatus === 'close' || this.#transitionStatus === 'unmounted',\n );\n this.toggleAttribute('data-closed', this.#transitionStatus === 'close' || this.#transitionStatus === 'unmounted');\n\n const triggerElement = this.#triggerElement as HTMLElement;\n if (triggerElement) {\n triggerElement.toggleAttribute('data-popup-open', this.#open);\n }\n }\n\n #updatePosition(): void {\n if (this.#open && this.trackCursorAxis) {\n this.style.setProperty('left', `${this.#pointerPosition.x}px`);\n this.#checkCollision();\n }\n }\n\n #checkCollision(): void {\n const mediaContainer = this.closest('media-container') as MediaContainerElement;\n if (!mediaContainer || !this.#open) return;\n\n const popupRect = getBoundingClientRectWithoutTransform(this);\n const boundsRect = getBoundingClientRectWithoutTransform(mediaContainer);\n const { x } = getInBoundsAdjustments(popupRect, boundsRect, this.collisionPadding);\n\n if (x !== 0) {\n if (this.trackCursorAxis) {\n const currentLeft = Number.parseFloat(this.style.left || '0');\n this.style.setProperty('left', `${currentLeft + x}px`);\n } else {\n this.style.setProperty('translate', `${x}px -100%`);\n }\n } else {\n if (this.trackCursorAxis) {\n this.style.setProperty('translate', '-50% -100%');\n } else {\n this.style.setProperty('translate', '0 -100%');\n }\n }\n }\n\n #clearHoverTimeout(): void {\n if (this.#hoverTimeout) {\n globalThis.clearTimeout(this.#hoverTimeout);\n this.#hoverTimeout = null;\n }\n }\n\n #handlePointerEnter(): void {\n this.#clearHoverTimeout();\n this.#hoverTimeout = globalThis.setTimeout(() => {\n this.#setOpen(true);\n }, this.delay);\n }\n\n #handlePointerLeave(_event: PointerEvent): void {\n this.#clearHoverTimeout();\n this.#hoverTimeout = globalThis.setTimeout(() => {\n this.#setOpen(false);\n }, this.closeDelay);\n }\n\n #handlePointerMove(event: PointerEvent): void {\n if (this.trackCursorAxis) {\n this.#pointerPosition = { x: event.clientX, y: event.clientY };\n\n if (this.#open) {\n this.#updatePosition();\n }\n }\n }\n}\n"],"mappings":"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"}
@@ -1,17 +0,0 @@
1
- import { createMediaStore } from "@videojs/core/store";
2
- import { ProviderMixin } from "@open-wc/context-protocol";
3
-
4
- //#region src/media/video-provider.ts
5
- const ProviderHTMLElement = ProviderMixin(HTMLElement);
6
- var VideoProviderElement = class extends ProviderHTMLElement {
7
- constructor(..._args) {
8
- super(..._args);
9
- this.contexts = { mediaStore: () => {
10
- return createMediaStore();
11
- } };
12
- }
13
- };
14
-
15
- //#endregion
16
- export { VideoProviderElement as t };
17
- //# sourceMappingURL=video-provider-BKDqoKFf.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"video-provider-BKDqoKFf.js","names":["ProviderHTMLElement: Constructor<CustomElement & HTMLElement>"],"sources":["../src/media/video-provider.ts"],"sourcesContent":["import type { Constructor, CustomElement } from '@open-wc/context-protocol';\nimport type { MediaStore } from '@videojs/core/store';\n\nimport { ProviderMixin } from '@open-wc/context-protocol';\nimport { createMediaStore } from '@videojs/core/store';\n\nconst ProviderHTMLElement: Constructor<CustomElement & HTMLElement> = ProviderMixin(HTMLElement);\n\nexport class VideoProviderElement extends ProviderHTMLElement {\n contexts = {\n mediaStore: (): MediaStore => {\n return createMediaStore();\n },\n };\n}\n"],"mappings":";;;;AAMA,MAAMA,sBAAgE,cAAc,YAAY;AAEhG,IAAa,uBAAb,cAA0C,oBAAoB;;;kBACjD,EACT,kBAA8B;AAC5B,UAAO,kBAAkB;KAE5B"}
@@ -1,8 +0,0 @@
1
- import { t as VideoProviderElement } from "./video-provider-BKDqoKFf.js";
2
- import { t as defineCustomElement } from "./custom-element-3bDlB2XO.js";
3
-
4
- //#region src/define/video-provider.ts
5
- defineCustomElement("video-provider", VideoProviderElement);
6
-
7
- //#endregion
8
- //# sourceMappingURL=video-provider-BPPI5e47.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"video-provider-BPPI5e47.js","names":[],"sources":["../src/define/video-provider.ts"],"sourcesContent":["import { VideoProviderElement } from '@/media/video-provider';\nimport { defineCustomElement } from '@/utils/custom-element';\n\ndefineCustomElement('video-provider', VideoProviderElement);\n"],"mappings":";;;;AAGA,oBAAoB,kBAAkB,qBAAqB"}
@@ -1 +0,0 @@
1
- export { };
@@ -1,206 +0,0 @@
1
- import { t as toConnectedHTMLComponent } from "./component-factory-DeAN6cjC.js";
2
- import { volumeSliderStateDefinition } from "@videojs/core/store";
3
- import { setAttributes } from "@videojs/utils/dom";
4
- import { VolumeSlider } from "@videojs/core";
5
-
6
- //#region src/elements/volume-slider.ts
7
- /**
8
- * VolumeSlider Root props hook - equivalent to React's useVolumeSliderRootProps
9
- * Handles element attributes and properties based on state
10
- */
11
- const getVolumeSliderRootProps = (state, element) => {
12
- const volumeText = `${Math.round(state.muted ? 0 : state.volume * 100)}%`;
13
- return {
14
- role: "slider",
15
- tabindex: element.getAttribute("tabindex") ?? "0",
16
- "data-muted": state.muted.toString(),
17
- "data-volume-level": state.volumeLevel,
18
- "data-orientation": element.orientation || "horizontal",
19
- "aria-label": "Volume",
20
- "aria-valuemin": "0",
21
- "aria-valuemax": "100",
22
- "aria-valuetext": volumeText,
23
- "aria-orientation": element.orientation || "horizontal"
24
- };
25
- };
26
- var VolumeSliderRoot = class extends HTMLElement {
27
- constructor(..._args) {
28
- super(..._args);
29
- this._core = null;
30
- }
31
- static {
32
- this.observedAttributes = ["orientation"];
33
- }
34
- get volume() {
35
- return this._state?.volume;
36
- }
37
- get muted() {
38
- return this._state?.muted ?? false;
39
- }
40
- get volumeLevel() {
41
- return this._state?.volumeLevel ?? "high";
42
- }
43
- get orientation() {
44
- return this.getAttribute("orientation") || "horizontal";
45
- }
46
- attributeChangedCallback(name, _oldValue, _newValue) {
47
- if (name === "orientation" && this._state) this._render(getVolumeSliderRootProps(this._state, this), this._state);
48
- }
49
- _update(_props, state) {
50
- this._state = state;
51
- if (state && !this._core) {
52
- this._core = new VolumeSlider();
53
- this._core.subscribe(() => this._render(getVolumeSliderRootProps(state, this), state));
54
- this._core.attach(this);
55
- state.core = this._core;
56
- }
57
- this._core?.setState(state);
58
- }
59
- _render(props, state) {
60
- const coreState = state?.core?.getState();
61
- if (!coreState) return;
62
- this.style.setProperty("--slider-fill", `${coreState._fillWidth.toFixed(3)}%`);
63
- this.style.setProperty("--slider-pointer", `${coreState._pointerWidth.toFixed(3)}%`);
64
- props["aria-valuenow"] = coreState._fillWidth.toString();
65
- setAttributes(this, props);
66
- }
67
- };
68
- /**
69
- * VolumeSlider Track component - Track element that captures pointer events
70
- */
71
- var VolumeSliderTrack = class extends HTMLElement {
72
- constructor() {
73
- super();
74
- }
75
- connectedCallback() {
76
- const rootElement = this.closest("media-volume-slider");
77
- if (rootElement?._state?.core) rootElement._state.core.setState({ _trackElement: this });
78
- }
79
- _update(props, _state) {
80
- setAttributes(this, props);
81
- if (props["data-orientation"] === "horizontal") {
82
- this.style.width = "100%";
83
- this.style.removeProperty("height");
84
- } else {
85
- this.style.height = "100%";
86
- this.style.removeProperty("width");
87
- }
88
- }
89
- };
90
- /**
91
- * VolumeSlider Progress component - Shows current progress
92
- */
93
- var VolumeSliderIndicator = class extends HTMLElement {
94
- constructor() {
95
- super();
96
- this.style.position = "absolute";
97
- this.style.width = "var(--slider-fill, 0%)";
98
- this.style.height = "100%";
99
- }
100
- _update(props, _state) {
101
- setAttributes(this, props);
102
- if (props["data-orientation"] === "horizontal") {
103
- this.style.width = "var(--slider-fill, 0%)";
104
- this.style.height = "100%";
105
- this.style.top = "0";
106
- this.style.removeProperty("bottom");
107
- } else {
108
- this.style.height = "var(--slider-fill, 0%)";
109
- this.style.width = "100%";
110
- this.style.bottom = "0";
111
- this.style.removeProperty("top");
112
- }
113
- }
114
- };
115
- /**
116
- * VolumeSlider Thumb component - Draggable thumb element
117
- */
118
- var VolumeSliderThumb = class extends HTMLElement {
119
- constructor() {
120
- super();
121
- this.style.position = "absolute";
122
- }
123
- _update(props, _state) {
124
- setAttributes(this, props);
125
- if (props["data-orientation"] === "horizontal") {
126
- this.style.left = "var(--slider-fill, 0%)";
127
- this.style.top = "50%";
128
- this.style.translate = "-50% -50%";
129
- } else {
130
- this.style.bottom = "var(--slider-fill, 0%)";
131
- this.style.left = "50%";
132
- this.style.translate = "-50% 50%";
133
- }
134
- }
135
- };
136
- /**
137
- * VolumeSlider Root state hook - equivalent to React's useVolumeSliderRootState
138
- * Handles media store state subscription and transformation
139
- */
140
- const useVolumeSliderRootState = {
141
- keys: volumeSliderStateDefinition.keys,
142
- transform: (rawState, mediaStore) => ({
143
- ...volumeSliderStateDefinition.stateTransform(rawState),
144
- ...volumeSliderStateDefinition.createRequestMethods(mediaStore.dispatch),
145
- core: null
146
- })
147
- };
148
- /**
149
- * VolumeSlider Track props hook
150
- */
151
- const getVolumeSliderTrackProps = (_state, element) => {
152
- const rootElement = element.closest("media-volume-slider");
153
- return { "data-orientation": rootElement?.orientation || "horizontal" };
154
- };
155
- /**
156
- * VolumeSlider Progress props hook
157
- */
158
- const getVolumeSliderProgressProps = (_state, element) => {
159
- const rootElement = element.closest("media-volume-slider");
160
- return { "data-orientation": rootElement?.orientation || "horizontal" };
161
- };
162
- /**
163
- * VolumeSlider Thumb props hook
164
- */
165
- const getVolumeSliderThumbProps = (_state, element) => {
166
- const rootElement = element.closest("media-volume-slider");
167
- return { "data-orientation": rootElement?.orientation || "horizontal" };
168
- };
169
- /**
170
- * Connected VolumeSlider Root component using hook-style architecture
171
- */
172
- const VolumeSliderRootElement = toConnectedHTMLComponent(VolumeSliderRoot, useVolumeSliderRootState, getVolumeSliderRootProps, "VolumeSliderRoot");
173
- /**
174
- * Connected VolumeSlider Track component
175
- */
176
- const VolumeSliderTrackElement = toConnectedHTMLComponent(VolumeSliderTrack, {
177
- keys: [],
178
- transform: () => ({})
179
- }, getVolumeSliderTrackProps, "VolumeSliderTrack");
180
- /**
181
- * Connected VolumeSlider Progress component
182
- */
183
- const VolumeSliderIndicatorElement = toConnectedHTMLComponent(VolumeSliderIndicator, {
184
- keys: [],
185
- transform: () => ({})
186
- }, getVolumeSliderProgressProps, "VolumeSliderProgress");
187
- /**
188
- * Connected VolumeSlider Thumb component
189
- */
190
- const VolumeSliderThumbElement = toConnectedHTMLComponent(VolumeSliderThumb, {
191
- keys: [],
192
- transform: () => ({})
193
- }, getVolumeSliderThumbProps, "VolumeSliderThumb");
194
- /**
195
- * Compound VolumeSlider component object
196
- */
197
- const VolumeSliderElement = Object.assign({}, {
198
- Root: VolumeSliderRootElement,
199
- Track: VolumeSliderTrackElement,
200
- Indicator: VolumeSliderIndicatorElement,
201
- Thumb: VolumeSliderThumbElement
202
- });
203
-
204
- //#endregion
205
- export { VolumeSliderTrackElement as a, VolumeSliderThumbElement as i, VolumeSliderIndicatorElement as n, VolumeSliderRootElement as r, VolumeSliderElement as t };
206
- //# sourceMappingURL=volume-slider-CbFzCHX4.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"volume-slider-CbFzCHX4.js","names":["getVolumeSliderRootProps: PropsHook<{\n volume: number;\n muted: boolean;\n volumeLevel: string;\n requestVolumeChange: (volume: number) => void;\n core: CoreVolumeSlider | null;\n}>","CoreVolumeSlider","useVolumeSliderRootState: StateHook<{\n volume: number;\n muted: boolean;\n volumeLevel: string;\n requestVolumeChange: (volume: number) => void;\n core: CoreVolumeSlider | null;\n}>","getVolumeSliderTrackProps: PropsHook<Record<string, never>>","getVolumeSliderProgressProps: PropsHook<Record<string, never>>","getVolumeSliderThumbProps: PropsHook<Record<string, never>>","VolumeSliderRootElement: ConnectedComponentConstructor<{\n volume: number;\n muted: boolean;\n volumeLevel: string;\n requestVolumeChange: (volume: number) => void;\n core: CoreVolumeSlider | null;\n}>","VolumeSliderTrackElement: ConnectedComponentConstructor<any>","VolumeSliderIndicatorElement: ConnectedComponentConstructor<any>","VolumeSliderThumbElement: ConnectedComponentConstructor<any>"],"sources":["../src/elements/volume-slider.ts"],"sourcesContent":["import type { ConnectedComponentConstructor, PropsHook, StateHook } from '../utils/component-factory';\n\nimport { VolumeSlider as CoreVolumeSlider } from '@videojs/core';\nimport { volumeSliderStateDefinition } from '@videojs/core/store';\n\nimport { setAttributes } from '@videojs/utils/dom';\nimport { toConnectedHTMLComponent } from '../utils/component-factory';\n\n/**\n * VolumeSlider Root props hook - equivalent to React's useVolumeSliderRootProps\n * Handles element attributes and properties based on state\n */\nexport const getVolumeSliderRootProps: PropsHook<{\n volume: number;\n muted: boolean;\n volumeLevel: string;\n requestVolumeChange: (volume: number) => void;\n core: CoreVolumeSlider | null;\n}> = (state, element) => {\n const volumeText = `${Math.round(state.muted ? 0 : state.volume * 100)}%`;\n\n const baseProps: Record<string, any> = {\n role: 'slider',\n tabindex: element.getAttribute('tabindex') ?? '0',\n 'data-muted': state.muted.toString(),\n 'data-volume-level': state.volumeLevel,\n 'data-orientation': (element as any).orientation || 'horizontal',\n 'aria-label': 'Volume',\n 'aria-valuemin': '0',\n 'aria-valuemax': '100',\n 'aria-valuetext': volumeText,\n 'aria-orientation': (element as any).orientation || 'horizontal',\n };\n\n return baseProps;\n};\n\n/**\n * VolumeSlider Root component - Main container with pointer event handling\n */\ninterface VolumeSliderRootState {\n volume: number;\n muted: boolean;\n volumeLevel: string;\n requestVolumeChange: (volume: number) => void;\n core: CoreVolumeSlider | null;\n}\n\nexport class VolumeSliderRoot extends HTMLElement {\n static readonly observedAttributes: readonly string[] = ['orientation'];\n\n _state: VolumeSliderRootState | undefined;\n _core: CoreVolumeSlider | null = null;\n\n get volume(): number | undefined {\n return this._state?.volume;\n }\n\n get muted(): boolean {\n return this._state?.muted ?? false;\n }\n\n get volumeLevel(): string {\n return this._state?.volumeLevel ?? 'high';\n }\n\n get orientation(): 'horizontal' | 'vertical' {\n return (this.getAttribute('orientation') as 'horizontal' | 'vertical') || 'horizontal';\n }\n\n attributeChangedCallback(name: string, _oldValue: string | null, _newValue: string | null): void {\n if (name === 'orientation' && this._state) {\n this._render(getVolumeSliderRootProps(this._state, this), this._state);\n }\n }\n\n _update(_props: any, state: any): void {\n this._state = state;\n\n if (state && !this._core) {\n this._core = new CoreVolumeSlider();\n this._core.subscribe(() => this._render(getVolumeSliderRootProps(state, this), state));\n this._core.attach(this);\n state.core = this._core;\n }\n\n this._core?.setState(state);\n }\n\n _render(props: any, state: any): void {\n const coreState = state?.core?.getState();\n if (!coreState) return;\n\n this.style.setProperty('--slider-fill', `${coreState._fillWidth.toFixed(3)}%`);\n this.style.setProperty('--slider-pointer', `${coreState._pointerWidth.toFixed(3)}%`);\n\n props['aria-valuenow'] = coreState._fillWidth.toString();\n\n setAttributes(this, props);\n }\n}\n\n/**\n * VolumeSlider Track component - Track element that captures pointer events\n */\nexport class VolumeSliderTrack extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback(): void {\n // Set this element as the track element in the core VolumeSlider\n const rootElement = this.closest('media-volume-slider') as any;\n if (rootElement?._state?.core) {\n rootElement._state.core.setState({ _trackElement: this });\n }\n }\n\n _update(props: any, _state: any): void {\n setAttributes(this, props);\n\n if (props['data-orientation'] === 'horizontal') {\n this.style.width = '100%';\n this.style.removeProperty('height');\n } else {\n this.style.height = '100%';\n this.style.removeProperty('width');\n }\n }\n}\n\n/**\n * VolumeSlider Progress component - Shows current progress\n */\nexport class VolumeSliderIndicator extends HTMLElement {\n constructor() {\n super();\n this.style.position = 'absolute';\n this.style.width = 'var(--slider-fill, 0%)';\n this.style.height = '100%';\n }\n\n _update(props: any, _state: any): void {\n setAttributes(this, props);\n\n if (props['data-orientation'] === 'horizontal') {\n this.style.width = 'var(--slider-fill, 0%)';\n this.style.height = '100%';\n this.style.top = '0';\n this.style.removeProperty('bottom');\n } else {\n this.style.height = 'var(--slider-fill, 0%)';\n this.style.width = '100%';\n this.style.bottom = '0';\n this.style.removeProperty('top');\n }\n }\n}\n\n/**\n * VolumeSlider Thumb component - Draggable thumb element\n */\nexport class VolumeSliderThumb extends HTMLElement {\n constructor() {\n super();\n this.style.position = 'absolute';\n }\n\n _update(props: any, _state: any): void {\n setAttributes(this, props);\n\n // Set appropriate positioning based on orientation\n if (props['data-orientation'] === 'horizontal') {\n this.style.left = 'var(--slider-fill, 0%)';\n this.style.top = '50%';\n this.style.translate = '-50% -50%';\n } else {\n this.style.bottom = 'var(--slider-fill, 0%)';\n this.style.left = '50%';\n this.style.translate = '-50% 50%';\n }\n }\n}\n\n/**\n * VolumeSlider Root state hook - equivalent to React's useVolumeSliderRootState\n * Handles media store state subscription and transformation\n */\nexport const useVolumeSliderRootState: StateHook<{\n volume: number;\n muted: boolean;\n volumeLevel: string;\n requestVolumeChange: (volume: number) => void;\n core: CoreVolumeSlider | null;\n}> = {\n keys: volumeSliderStateDefinition.keys,\n transform: (rawState, mediaStore) => ({\n ...volumeSliderStateDefinition.stateTransform(rawState),\n ...volumeSliderStateDefinition.createRequestMethods(mediaStore.dispatch),\n core: null,\n }),\n};\n\n/**\n * VolumeSlider Track props hook\n */\nexport const getVolumeSliderTrackProps: PropsHook<Record<string, never>> = (_state, element) => {\n const rootElement = element.closest('media-volume-slider') as any;\n return {\n 'data-orientation': rootElement?.orientation || 'horizontal',\n };\n};\n\n/**\n * VolumeSlider Progress props hook\n */\nexport const getVolumeSliderProgressProps: PropsHook<Record<string, never>> = (_state, element) => {\n const rootElement = element.closest('media-volume-slider') as any;\n return {\n 'data-orientation': rootElement?.orientation || 'horizontal',\n };\n};\n\n/**\n * VolumeSlider Thumb props hook\n */\nexport const getVolumeSliderThumbProps: PropsHook<Record<string, never>> = (_state, element) => {\n const rootElement = element.closest('media-volume-slider') as any;\n return {\n 'data-orientation': rootElement?.orientation || 'horizontal',\n };\n};\n\n/**\n * Connected VolumeSlider Root component using hook-style architecture\n */\nexport const VolumeSliderRootElement: ConnectedComponentConstructor<{\n volume: number;\n muted: boolean;\n volumeLevel: string;\n requestVolumeChange: (volume: number) => void;\n core: CoreVolumeSlider | null;\n}> = toConnectedHTMLComponent(VolumeSliderRoot, useVolumeSliderRootState, getVolumeSliderRootProps, 'VolumeSliderRoot');\n\n/**\n * Connected VolumeSlider Track component\n */\nexport const VolumeSliderTrackElement: ConnectedComponentConstructor<any> = toConnectedHTMLComponent(\n VolumeSliderTrack,\n { keys: [], transform: () => ({}) },\n getVolumeSliderTrackProps,\n 'VolumeSliderTrack',\n);\n\n/**\n * Connected VolumeSlider Progress component\n */\nexport const VolumeSliderIndicatorElement: ConnectedComponentConstructor<any> = toConnectedHTMLComponent(\n VolumeSliderIndicator,\n { keys: [], transform: () => ({}) },\n getVolumeSliderProgressProps,\n 'VolumeSliderProgress',\n);\n\n/**\n * Connected VolumeSlider Thumb component\n */\nexport const VolumeSliderThumbElement: ConnectedComponentConstructor<any> = toConnectedHTMLComponent(\n VolumeSliderThumb,\n { keys: [], transform: () => ({}) },\n getVolumeSliderThumbProps,\n 'VolumeSliderThumb',\n);\n\n/**\n * Compound VolumeSlider component object\n */\nexport const VolumeSliderElement = Object.assign(\n {},\n {\n Root: VolumeSliderRootElement,\n Track: VolumeSliderTrackElement,\n Indicator: VolumeSliderIndicatorElement,\n Thumb: VolumeSliderThumbElement,\n },\n) as {\n Root: typeof VolumeSliderRootElement;\n Track: typeof VolumeSliderTrackElement;\n Indicator: typeof VolumeSliderIndicatorElement;\n Thumb: typeof VolumeSliderThumbElement;\n};\n"],"mappings":"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"}
File without changes