@videojs/html 10.0.0-beta.15 → 10.0.0-beta.17

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 (377) hide show
  1. package/cdn/{abort-CzqmAxxH.js → abort-BL-SGV3o.js} +1 -1
  2. package/cdn/{abort-CzqmAxxH.js.map → abort-BL-SGV3o.js.map} +1 -1
  3. package/cdn/{abort-KaHR4JO1.js → abort-DGNIECLn.js} +1 -1
  4. package/cdn/{abort-KaHR4JO1.js.map → abort-DGNIECLn.js.map} +1 -1
  5. package/cdn/audio-minimal-ui.dev.js +4 -5
  6. package/cdn/audio-minimal-ui.js +1 -1
  7. package/cdn/audio-minimal.dev.js +7 -8
  8. package/cdn/audio-minimal.dev.js.map +1 -1
  9. package/cdn/audio-minimal.js +1 -1
  10. package/cdn/audio-minimal.js.map +1 -1
  11. package/cdn/audio-ui.dev.js +4 -5
  12. package/cdn/audio-ui.js +1 -1
  13. package/cdn/audio.dev.js +22 -7
  14. package/cdn/audio.dev.js.map +1 -1
  15. package/cdn/audio.js +1 -1
  16. package/cdn/audio.js.map +1 -1
  17. package/cdn/background.dev.js +3 -3
  18. package/cdn/background.js +1 -1
  19. package/cdn/background.js.map +1 -1
  20. package/cdn/compounds-Df_1JbZD.js +8 -0
  21. package/cdn/compounds-Df_1JbZD.js.map +1 -0
  22. package/cdn/{volume-slider-Co5X4Z1t.js → compounds-VFPcCeRV.js} +2439 -946
  23. package/cdn/compounds-VFPcCeRV.js.map +1 -0
  24. package/cdn/context-C-IpVHEt.js +14 -0
  25. package/cdn/context-C-IpVHEt.js.map +1 -0
  26. package/cdn/{context-BjrbhiSk.js → context-CvJ83xGk.js} +2 -83
  27. package/cdn/context-CvJ83xGk.js.map +1 -0
  28. package/cdn/{create-player-p9xCO0yC.js → create-player-CyG77t-m.js} +778 -1955
  29. package/cdn/create-player-CyG77t-m.js.map +1 -0
  30. package/cdn/create-player-Gom2ZZe3.js +7 -0
  31. package/cdn/create-player-Gom2ZZe3.js.map +1 -0
  32. package/cdn/{hls-26YJVjvD.js → hls-BAbdl84H.js} +3 -3
  33. package/cdn/{hls-26YJVjvD.js.map → hls-BAbdl84H.js.map} +1 -1
  34. package/cdn/{hls-BriQI4q1.js → hls-BrzPpueW.js} +9 -12
  35. package/cdn/{hls-BriQI4q1.js.map → hls-BrzPpueW.js.map} +1 -1
  36. package/cdn/hotkey-element-DR3ZAqKa.js +2 -0
  37. package/cdn/hotkey-element-DR3ZAqKa.js.map +1 -0
  38. package/cdn/hotkey-element-Dlta37Be.js +369 -0
  39. package/cdn/hotkey-element-Dlta37Be.js.map +1 -0
  40. package/cdn/media/dash-video.dev.js +3 -4
  41. package/cdn/media/dash-video.dev.js.map +1 -1
  42. package/cdn/media/dash-video.js +2 -2
  43. package/cdn/media/hls-video.dev.js +4 -5
  44. package/cdn/media/hls-video.dev.js.map +1 -1
  45. package/cdn/media/hls-video.js +1 -1
  46. package/cdn/media/hls-video.js.map +1 -1
  47. package/cdn/media/mux-audio.dev.d.ts +1 -0
  48. package/cdn/media/mux-audio.dev.js +29 -0
  49. package/cdn/media/mux-audio.dev.js.map +1 -0
  50. package/cdn/media/mux-audio.js +2 -0
  51. package/cdn/media/mux-audio.js.map +1 -0
  52. package/cdn/media/mux-video.dev.js +5 -3099
  53. package/cdn/media/mux-video.dev.js.map +1 -1
  54. package/cdn/media/mux-video.js +1 -24
  55. package/cdn/media/mux-video.js.map +1 -1
  56. package/cdn/media/native-hls-video.dev.js +4 -4
  57. package/cdn/media/native-hls-video.js +1 -1
  58. package/cdn/media/simple-hls-video.dev.js +966 -681
  59. package/cdn/media/simple-hls-video.dev.js.map +1 -1
  60. package/cdn/media/simple-hls-video.js +6 -6
  61. package/cdn/media/simple-hls-video.js.map +1 -1
  62. package/cdn/{media-attach-mixin-DfKkofgF.js → media-attach-mixin-CMH1ziXP.js} +2 -2
  63. package/cdn/{media-attach-mixin-DfKkofgF.js.map → media-attach-mixin-CMH1ziXP.js.map} +1 -1
  64. package/cdn/{media-attach-mixin-Dv2D43tb.js → media-attach-mixin-DUzmXEJ3.js} +2 -2
  65. package/cdn/{media-attach-mixin-Dv2D43tb.js.map → media-attach-mixin-DUzmXEJ3.js.map} +1 -1
  66. package/cdn/{media-props-mixin-Dc5dpCV4.js → media-props-mixin-hheRmkup.js} +92 -8
  67. package/cdn/media-props-mixin-hheRmkup.js.map +1 -0
  68. package/cdn/media-props-mixin-yRWj8yXF.js +47 -0
  69. package/cdn/media-props-mixin-yRWj8yXF.js.map +1 -0
  70. package/cdn/{minimal-BUUGNZK7.js → minimal-D9Dw-L2P.js} +1 -1
  71. package/cdn/{minimal-BUUGNZK7.js.map → minimal-D9Dw-L2P.js.map} +1 -1
  72. package/cdn/{minimal-CJGOJ6pE.js → minimal-Dc5nNl_-.js} +1 -1
  73. package/cdn/{minimal-CJGOJ6pE.js.map → minimal-Dc5nNl_-.js.map} +1 -1
  74. package/cdn/minimal-ui-B3BBK5nX.js +2 -0
  75. package/cdn/minimal-ui-B3BBK5nX.js.map +1 -0
  76. package/cdn/minimal-ui-CPRSYky_.js +28 -0
  77. package/cdn/minimal-ui-CPRSYky_.js.map +1 -0
  78. package/cdn/minimal-ui-Cnaig4X6.js +22 -0
  79. package/cdn/minimal-ui-Cnaig4X6.js.map +1 -0
  80. package/cdn/minimal-ui-DOePmQfq.js +2 -0
  81. package/cdn/minimal-ui-DOePmQfq.js.map +1 -0
  82. package/cdn/mux-DGgCyz_A.js +3102 -0
  83. package/cdn/mux-DGgCyz_A.js.map +1 -0
  84. package/cdn/mux-fYfPUpq3.js +25 -0
  85. package/cdn/mux-fYfPUpq3.js.map +1 -0
  86. package/cdn/{native-hls-D2rfyyyW.js → native-hls-BuCYu7Rd.js} +2 -3
  87. package/cdn/{native-hls-D2rfyyyW.js.map → native-hls-BuCYu7Rd.js.map} +1 -1
  88. package/cdn/native-hls-DnqJ-0zL.js +2 -0
  89. package/cdn/{native-hls-CjRvSXAJ.js.map → native-hls-DnqJ-0zL.js.map} +1 -1
  90. package/cdn/player-Cu5_r0Gk.js +2 -0
  91. package/cdn/{player-Cz9-_j7J.js.map → player-Cu5_r0Gk.js.map} +1 -1
  92. package/cdn/player-DIOgBqQf.js +382 -0
  93. package/cdn/player-DIOgBqQf.js.map +1 -0
  94. package/cdn/{player-D0bhjT8X.js → player-DxBoqZVw.js} +4 -3
  95. package/cdn/{player-D0bhjT8X.js.map → player-DxBoqZVw.js.map} +1 -1
  96. package/cdn/player-eEH-XjnF.js +2 -0
  97. package/cdn/player-eEH-XjnF.js.map +1 -0
  98. package/cdn/{shallow-equal-uPuCQhnd.js → shallow-equal-1KBb-lrM.js} +1 -1
  99. package/cdn/{shallow-equal-uPuCQhnd.js.map → shallow-equal-1KBb-lrM.js.map} +1 -1
  100. package/cdn/{shallow-equal-C8Fs4TTE.js → shallow-equal-Ca0qjpLJ.js} +1 -1
  101. package/cdn/{shallow-equal-C8Fs4TTE.js.map → shallow-equal-Ca0qjpLJ.js.map} +1 -1
  102. package/cdn/{skin-element-zakTHELS.js → skin-element-BTPr5DoY.js} +2 -2
  103. package/cdn/{skin-element-zakTHELS.js.map → skin-element-BTPr5DoY.js.map} +1 -1
  104. package/cdn/{skin-element-DB-cKAAx.js → skin-element-u6pdmSSs.js} +2 -2
  105. package/cdn/{skin-element-DB-cKAAx.js.map → skin-element-u6pdmSSs.js.map} +1 -1
  106. package/cdn/ui-34pkHFdT.js +25 -0
  107. package/cdn/ui-34pkHFdT.js.map +1 -0
  108. package/cdn/ui-DWoV_Da1.js +2 -0
  109. package/cdn/ui-DWoV_Da1.js.map +1 -0
  110. package/cdn/ui-DXtTKomo.js +2 -0
  111. package/cdn/ui-DXtTKomo.js.map +1 -0
  112. package/cdn/ui-X5WOdCCw.js +31 -0
  113. package/cdn/ui-X5WOdCCw.js.map +1 -0
  114. package/cdn/video-minimal-ui.dev.js +4 -5
  115. package/cdn/video-minimal-ui.js +1 -1
  116. package/cdn/video-minimal.dev.js +7 -8
  117. package/cdn/video-minimal.dev.js.map +1 -1
  118. package/cdn/video-minimal.js +1 -1
  119. package/cdn/video-minimal.js.map +1 -1
  120. package/cdn/video-ui.dev.js +4 -5
  121. package/cdn/video-ui.js +1 -1
  122. package/cdn/video.dev.js +32 -7
  123. package/cdn/video.dev.js.map +1 -1
  124. package/cdn/video.js +1 -1
  125. package/cdn/video.js.map +1 -1
  126. package/dist/default/_virtual/inline-css_src/define/audio/minimal-skin.js +1 -1
  127. package/dist/default/_virtual/inline-css_src/define/audio/minimal-skin.js.map +1 -1
  128. package/dist/default/_virtual/inline-css_src/define/audio/skin.js +1 -1
  129. package/dist/default/_virtual/inline-css_src/define/audio/skin.js.map +1 -1
  130. package/dist/default/_virtual/inline-css_src/define/video/minimal-skin.js +1 -1
  131. package/dist/default/_virtual/inline-css_src/define/video/minimal-skin.js.map +1 -1
  132. package/dist/default/_virtual/inline-css_src/define/video/skin.js +1 -1
  133. package/dist/default/_virtual/inline-css_src/define/video/skin.js.map +1 -1
  134. package/dist/default/define/audio/minimal-skin.css +23 -0
  135. package/dist/default/define/audio/minimal-ui.js +28 -12
  136. package/dist/default/define/audio/minimal-ui.js.map +1 -0
  137. package/dist/default/define/audio/skin.css +23 -0
  138. package/dist/default/define/audio/skin.js +1 -1
  139. package/dist/default/define/audio/skin.js.map +1 -1
  140. package/dist/default/define/audio/ui.js +32 -12
  141. package/dist/default/define/audio/ui.js.map +1 -0
  142. package/dist/default/define/background/skin.js +1 -1
  143. package/dist/default/define/media/mux-audio.js +13 -0
  144. package/dist/default/define/media/mux-audio.js.map +1 -0
  145. package/dist/default/define/skin-element.js +1 -1
  146. package/dist/default/define/ui/compounds.js +62 -0
  147. package/dist/default/define/ui/compounds.js.map +1 -0
  148. package/dist/default/define/ui/controls.js +2 -5
  149. package/dist/default/define/ui/controls.js.map +1 -1
  150. package/dist/default/define/ui/error-dialog.js +2 -9
  151. package/dist/default/define/ui/error-dialog.js.map +1 -1
  152. package/dist/default/define/ui/hotkey.js +7 -0
  153. package/dist/default/define/ui/hotkey.js.map +1 -0
  154. package/dist/default/define/ui/slider.js +2 -13
  155. package/dist/default/define/ui/slider.js.map +1 -1
  156. package/dist/default/define/ui/time-slider.js +2 -17
  157. package/dist/default/define/ui/time-slider.js.map +1 -1
  158. package/dist/default/define/ui/time.js +2 -7
  159. package/dist/default/define/ui/time.js.map +1 -1
  160. package/dist/default/define/ui/volume-slider.js +2 -13
  161. package/dist/default/define/ui/volume-slider.js.map +1 -1
  162. package/dist/default/define/video/minimal-skin.css +23 -0
  163. package/dist/default/define/video/minimal-ui.js +39 -18
  164. package/dist/default/define/video/minimal-ui.js.map +1 -0
  165. package/dist/default/define/video/skin.css +23 -0
  166. package/dist/default/define/video/skin.js +1 -1
  167. package/dist/default/define/video/skin.js.map +1 -1
  168. package/dist/default/define/video/ui.js +43 -18
  169. package/dist/default/define/video/ui.js.map +1 -0
  170. package/dist/default/index.js +6 -1
  171. package/dist/default/media/container-element.js +16 -0
  172. package/dist/default/media/container-element.js.map +1 -1
  173. package/dist/default/media/mux-audio/index.js +18 -0
  174. package/dist/default/media/mux-audio/index.js.map +1 -0
  175. package/dist/default/player/context.js.map +1 -1
  176. package/dist/default/ui/alert-dialog/alert-dialog-element.js +1 -0
  177. package/dist/default/ui/alert-dialog/alert-dialog-element.js.map +1 -1
  178. package/dist/default/ui/buffering-indicator/buffering-indicator-element.js +1 -0
  179. package/dist/default/ui/buffering-indicator/buffering-indicator-element.js.map +1 -1
  180. package/dist/default/ui/captions-button/captions-button-element.js +1 -0
  181. package/dist/default/ui/captions-button/captions-button-element.js.map +1 -1
  182. package/dist/default/ui/error-dialog/error-dialog-element.js +1 -0
  183. package/dist/default/ui/error-dialog/error-dialog-element.js.map +1 -1
  184. package/dist/default/ui/fullscreen-button/fullscreen-button-element.js +1 -0
  185. package/dist/default/ui/fullscreen-button/fullscreen-button-element.js.map +1 -1
  186. package/dist/default/ui/gesture/gesture-element.js +84 -0
  187. package/dist/default/ui/gesture/gesture-element.js.map +1 -0
  188. package/dist/default/ui/hotkey/aria-key-shortcuts-controller.js +28 -0
  189. package/dist/default/ui/hotkey/aria-key-shortcuts-controller.js.map +1 -0
  190. package/dist/default/ui/hotkey/hotkey-element.js +81 -0
  191. package/dist/default/ui/hotkey/hotkey-element.js.map +1 -0
  192. package/dist/default/ui/media-button-element.js +9 -1
  193. package/dist/default/ui/media-button-element.js.map +1 -1
  194. package/dist/default/ui/mute-button/mute-button-element.js +1 -0
  195. package/dist/default/ui/mute-button/mute-button-element.js.map +1 -1
  196. package/dist/default/ui/pip-button/pip-button-element.js +1 -0
  197. package/dist/default/ui/pip-button/pip-button-element.js.map +1 -1
  198. package/dist/default/ui/play-button/play-button-element.js +1 -0
  199. package/dist/default/ui/play-button/play-button-element.js.map +1 -1
  200. package/dist/default/ui/popover/popover-element.js +7 -55
  201. package/dist/default/ui/popover/popover-element.js.map +1 -1
  202. package/dist/default/ui/position-controller.js +76 -0
  203. package/dist/default/ui/position-controller.js.map +1 -0
  204. package/dist/default/ui/slider/slider-element.js +1 -1
  205. package/dist/default/ui/slider/slider-preview-element.js +1 -1
  206. package/dist/default/ui/time-slider/time-slider-element.js +5 -5
  207. package/dist/default/ui/time-slider/time-slider-element.js.map +1 -1
  208. package/dist/default/ui/tooltip/tooltip-element.js +8 -54
  209. package/dist/default/ui/tooltip/tooltip-element.js.map +1 -1
  210. package/dist/default/ui/volume-slider/volume-slider-element.js +1 -1
  211. package/dist/dev/_virtual/inline-css_src/define/audio/minimal-skin.js +1 -1
  212. package/dist/dev/_virtual/inline-css_src/define/audio/minimal-skin.js.map +1 -1
  213. package/dist/dev/_virtual/inline-css_src/define/audio/skin.js +1 -1
  214. package/dist/dev/_virtual/inline-css_src/define/audio/skin.js.map +1 -1
  215. package/dist/dev/_virtual/inline-css_src/define/video/minimal-skin.js +1 -1
  216. package/dist/dev/_virtual/inline-css_src/define/video/minimal-skin.js.map +1 -1
  217. package/dist/dev/_virtual/inline-css_src/define/video/skin.js +1 -1
  218. package/dist/dev/_virtual/inline-css_src/define/video/skin.js.map +1 -1
  219. package/dist/dev/define/audio/minimal-skin.css +23 -0
  220. package/dist/dev/define/audio/minimal-ui.js +28 -12
  221. package/dist/dev/define/audio/minimal-ui.js.map +1 -0
  222. package/dist/dev/define/audio/skin.css +23 -0
  223. package/dist/dev/define/audio/skin.d.ts.map +1 -1
  224. package/dist/dev/define/audio/skin.js +16 -0
  225. package/dist/dev/define/audio/skin.js.map +1 -1
  226. package/dist/dev/define/audio/ui.js +32 -12
  227. package/dist/dev/define/audio/ui.js.map +1 -0
  228. package/dist/dev/define/background/skin.js +1 -1
  229. package/dist/dev/define/media/mux-audio.d.ts +14 -0
  230. package/dist/dev/define/media/mux-audio.d.ts.map +1 -0
  231. package/dist/dev/define/media/mux-audio.js +13 -0
  232. package/dist/dev/define/media/mux-audio.js.map +1 -0
  233. package/dist/dev/define/skin-element.d.ts +1 -1
  234. package/dist/dev/define/skin-element.js +1 -1
  235. package/dist/dev/define/ui/compounds.d.ts +12 -0
  236. package/dist/dev/define/ui/compounds.d.ts.map +1 -0
  237. package/dist/dev/define/ui/compounds.js +62 -0
  238. package/dist/dev/define/ui/compounds.js.map +1 -0
  239. package/dist/dev/define/ui/controls.d.ts +2 -0
  240. package/dist/dev/define/ui/controls.d.ts.map +1 -1
  241. package/dist/dev/define/ui/controls.js +2 -5
  242. package/dist/dev/define/ui/controls.js.map +1 -1
  243. package/dist/dev/define/ui/error-dialog.d.ts +6 -0
  244. package/dist/dev/define/ui/error-dialog.d.ts.map +1 -1
  245. package/dist/dev/define/ui/error-dialog.js +2 -9
  246. package/dist/dev/define/ui/error-dialog.js.map +1 -1
  247. package/dist/dev/define/ui/hotkey.d.ts +9 -0
  248. package/dist/dev/define/ui/hotkey.d.ts.map +1 -0
  249. package/dist/dev/define/ui/hotkey.js +7 -0
  250. package/dist/dev/define/ui/hotkey.js.map +1 -0
  251. package/dist/dev/define/ui/slider.d.ts +10 -0
  252. package/dist/dev/define/ui/slider.d.ts.map +1 -1
  253. package/dist/dev/define/ui/slider.js +2 -13
  254. package/dist/dev/define/ui/slider.js.map +1 -1
  255. package/dist/dev/define/ui/time-slider.d.ts +14 -0
  256. package/dist/dev/define/ui/time-slider.d.ts.map +1 -1
  257. package/dist/dev/define/ui/time-slider.js +2 -17
  258. package/dist/dev/define/ui/time-slider.js.map +1 -1
  259. package/dist/dev/define/ui/time.d.ts +4 -0
  260. package/dist/dev/define/ui/time.d.ts.map +1 -1
  261. package/dist/dev/define/ui/time.js +2 -7
  262. package/dist/dev/define/ui/time.js.map +1 -1
  263. package/dist/dev/define/ui/volume-slider.d.ts +10 -0
  264. package/dist/dev/define/ui/volume-slider.d.ts.map +1 -1
  265. package/dist/dev/define/ui/volume-slider.js +2 -13
  266. package/dist/dev/define/ui/volume-slider.js.map +1 -1
  267. package/dist/dev/define/video/minimal-skin.css +23 -0
  268. package/dist/dev/define/video/minimal-ui.js +39 -18
  269. package/dist/dev/define/video/minimal-ui.js.map +1 -0
  270. package/dist/dev/define/video/skin.css +23 -0
  271. package/dist/dev/define/video/skin.d.ts.map +1 -1
  272. package/dist/dev/define/video/skin.js +26 -0
  273. package/dist/dev/define/video/skin.js.map +1 -1
  274. package/dist/dev/define/video/ui.js +43 -18
  275. package/dist/dev/define/video/ui.js.map +1 -0
  276. package/dist/dev/index.d.ts +7 -2
  277. package/dist/dev/index.js +6 -1
  278. package/dist/dev/media/container-element.d.ts +3 -0
  279. package/dist/dev/media/container-element.d.ts.map +1 -1
  280. package/dist/dev/media/container-element.js +16 -0
  281. package/dist/dev/media/container-element.js.map +1 -1
  282. package/dist/dev/media/mux-audio/index.d.ts +11 -0
  283. package/dist/dev/media/mux-audio/index.d.ts.map +1 -0
  284. package/dist/dev/media/mux-audio/index.js +18 -0
  285. package/dist/dev/media/mux-audio/index.js.map +1 -0
  286. package/dist/dev/player/context.d.ts +4 -2
  287. package/dist/dev/player/context.d.ts.map +1 -1
  288. package/dist/dev/player/context.js.map +1 -1
  289. package/dist/dev/ui/alert-dialog/alert-dialog-element.d.ts.map +1 -1
  290. package/dist/dev/ui/alert-dialog/alert-dialog-element.js +1 -0
  291. package/dist/dev/ui/alert-dialog/alert-dialog-element.js.map +1 -1
  292. package/dist/dev/ui/buffering-indicator/buffering-indicator-element.d.ts.map +1 -1
  293. package/dist/dev/ui/buffering-indicator/buffering-indicator-element.js +1 -0
  294. package/dist/dev/ui/buffering-indicator/buffering-indicator-element.js.map +1 -1
  295. package/dist/dev/ui/captions-button/captions-button-element.d.ts +1 -0
  296. package/dist/dev/ui/captions-button/captions-button-element.d.ts.map +1 -1
  297. package/dist/dev/ui/captions-button/captions-button-element.js +1 -0
  298. package/dist/dev/ui/captions-button/captions-button-element.js.map +1 -1
  299. package/dist/dev/ui/context-part-element.d.ts +1 -1
  300. package/dist/dev/ui/error-dialog/error-dialog-element.d.ts.map +1 -1
  301. package/dist/dev/ui/error-dialog/error-dialog-element.js +1 -0
  302. package/dist/dev/ui/error-dialog/error-dialog-element.js.map +1 -1
  303. package/dist/dev/ui/fullscreen-button/fullscreen-button-element.d.ts +1 -0
  304. package/dist/dev/ui/fullscreen-button/fullscreen-button-element.d.ts.map +1 -1
  305. package/dist/dev/ui/fullscreen-button/fullscreen-button-element.js +1 -0
  306. package/dist/dev/ui/fullscreen-button/fullscreen-button-element.js.map +1 -1
  307. package/dist/dev/ui/gesture/gesture-element.d.ts +22 -0
  308. package/dist/dev/ui/gesture/gesture-element.d.ts.map +1 -0
  309. package/dist/dev/ui/gesture/gesture-element.js +84 -0
  310. package/dist/dev/ui/gesture/gesture-element.js.map +1 -0
  311. package/dist/dev/ui/hotkey/aria-key-shortcuts-controller.d.ts +15 -0
  312. package/dist/dev/ui/hotkey/aria-key-shortcuts-controller.d.ts.map +1 -0
  313. package/dist/dev/ui/hotkey/aria-key-shortcuts-controller.js +28 -0
  314. package/dist/dev/ui/hotkey/aria-key-shortcuts-controller.js.map +1 -0
  315. package/dist/dev/ui/hotkey/hotkey-element.d.ts +21 -0
  316. package/dist/dev/ui/hotkey/hotkey-element.d.ts.map +1 -0
  317. package/dist/dev/ui/hotkey/hotkey-element.js +81 -0
  318. package/dist/dev/ui/hotkey/hotkey-element.js.map +1 -0
  319. package/dist/dev/ui/media-button-element.d.ts +2 -0
  320. package/dist/dev/ui/media-button-element.d.ts.map +1 -1
  321. package/dist/dev/ui/media-button-element.js +9 -1
  322. package/dist/dev/ui/media-button-element.js.map +1 -1
  323. package/dist/dev/ui/mute-button/mute-button-element.d.ts +1 -0
  324. package/dist/dev/ui/mute-button/mute-button-element.d.ts.map +1 -1
  325. package/dist/dev/ui/mute-button/mute-button-element.js +1 -0
  326. package/dist/dev/ui/mute-button/mute-button-element.js.map +1 -1
  327. package/dist/dev/ui/pip-button/pip-button-element.d.ts +1 -0
  328. package/dist/dev/ui/pip-button/pip-button-element.d.ts.map +1 -1
  329. package/dist/dev/ui/pip-button/pip-button-element.js +1 -0
  330. package/dist/dev/ui/pip-button/pip-button-element.js.map +1 -1
  331. package/dist/dev/ui/play-button/play-button-element.d.ts +1 -0
  332. package/dist/dev/ui/play-button/play-button-element.d.ts.map +1 -1
  333. package/dist/dev/ui/play-button/play-button-element.js +1 -0
  334. package/dist/dev/ui/play-button/play-button-element.js.map +1 -1
  335. package/dist/dev/ui/popover/popover-element.d.ts.map +1 -1
  336. package/dist/dev/ui/popover/popover-element.js +7 -55
  337. package/dist/dev/ui/popover/popover-element.js.map +1 -1
  338. package/dist/dev/ui/position-controller.js +76 -0
  339. package/dist/dev/ui/position-controller.js.map +1 -0
  340. package/dist/dev/ui/slider/slider-element.js +1 -1
  341. package/dist/dev/ui/slider/slider-preview-element.d.ts +21 -0
  342. package/dist/dev/ui/slider/slider-preview-element.d.ts.map +1 -0
  343. package/dist/dev/ui/slider/slider-preview-element.js +1 -1
  344. package/dist/dev/ui/time-slider/time-slider-element.d.ts +2 -2
  345. package/dist/dev/ui/time-slider/time-slider-element.js +5 -5
  346. package/dist/dev/ui/time-slider/time-slider-element.js.map +1 -1
  347. package/dist/dev/ui/tooltip/tooltip-element.d.ts.map +1 -1
  348. package/dist/dev/ui/tooltip/tooltip-element.js +8 -54
  349. package/dist/dev/ui/tooltip/tooltip-element.js.map +1 -1
  350. package/dist/dev/ui/volume-slider/volume-slider-element.js +1 -1
  351. package/package.json +8 -8
  352. package/cdn/context-BjrbhiSk.js.map +0 -1
  353. package/cdn/context-CdkhXQEw.js +0 -14
  354. package/cdn/context-CdkhXQEw.js.map +0 -1
  355. package/cdn/create-player-BqU8r8H4.js +0 -7
  356. package/cdn/create-player-BqU8r8H4.js.map +0 -1
  357. package/cdn/create-player-p9xCO0yC.js.map +0 -1
  358. package/cdn/delegate-B626t_Va.js +0 -2
  359. package/cdn/delegate-B626t_Va.js.map +0 -1
  360. package/cdn/delegate-BCw-LjP_.js +0 -56
  361. package/cdn/delegate-BCw-LjP_.js.map +0 -1
  362. package/cdn/media-props-mixin-Bd_N2HWy.js +0 -47
  363. package/cdn/media-props-mixin-Bd_N2HWy.js.map +0 -1
  364. package/cdn/media-props-mixin-Dc5dpCV4.js.map +0 -1
  365. package/cdn/minimal-ui-BL9eBXck.js +0 -0
  366. package/cdn/minimal-ui-a1UOKF79.js +0 -0
  367. package/cdn/native-hls-CjRvSXAJ.js +0 -2
  368. package/cdn/player-Cz9-_j7J.js +0 -2
  369. package/cdn/poster-2FPYTjyv.js +0 -2
  370. package/cdn/poster-2FPYTjyv.js.map +0 -1
  371. package/cdn/poster-gVT-J1-z.js +0 -215
  372. package/cdn/poster-gVT-J1-z.js.map +0 -1
  373. package/cdn/ui-CFIgmrlA.js +0 -0
  374. package/cdn/ui-Ccp_LyCf.js +0 -0
  375. package/cdn/volume-slider-Co5X4Z1t.js.map +0 -1
  376. package/cdn/volume-slider-D18sXnIA.js +0 -8
  377. package/cdn/volume-slider-D18sXnIA.js.map +0 -1
@@ -0,0 +1,2 @@
1
+ import{S as e,_ as t,b as n,g as r,h as i,v as a,x as o,y as s}from"./compounds-Df_1JbZD.js";import{A as c,C as l,E as u,O as d,_ as f,n as p}from"./create-player-Gom2ZZe3.js";import{r as m,t as h}from"./context-C-IpVHEt.js";const g={seekStep({store:e,value:t}){if(u(t))return;let n=o(e.state);n&&n.seek(n.currentTime+t)},volumeStep({store:t,value:n}){if(u(n))return;let r=e(t.state);r&&r.setVolume(r.volume+n)},speedUp({store:e}){let t=s(e.state);if(!t)return;let{playbackRates:n,playbackRate:r}=t,i=n.indexOf(r),a=i<0||i>=n.length-1?0:i+1;t.setPlaybackRate(n[a])},speedDown({store:e}){let t=s(e.state);if(!t)return;let{playbackRates:n,playbackRate:r}=t,i=n.indexOf(r),a=i<=0?n.length-1:i-1;t.setPlaybackRate(n[a])}};function _(e){return g[e]||(({store:t})=>{let n=t.state[e];l(n)&&n()})}var v=class{#e=0;#t=null;handleUp(e,t){if(e.resolve(`doubletap`).length>0){let n=Date.now();if(n-this.#e<300){this.#n(),this.#e=0,e.resolve(`doubletap`)[0]?.onActivate(t);return}this.#e=n,this.#n(),this.#t=setTimeout(()=>{this.#t=null,this.#e=0,e.resolve(`tap`)[0]?.onActivate(t)},300);return}e.resolve(`tap`)[0]?.onActivate(t)}#n(){this.#t!==null&&(clearTimeout(this.#t),this.#t=null)}reset(){this.#n(),this.#e=0}};const y=new WeakMap;function b(e){let t=y.get(e);return t||(t=new v,y.set(e,t),t)}function x(e,t,n){return f(e).add({type:`tap`,recognizer:b(e),onActivate:t,pointer:n?.pointer,region:n?.region,disabled:n?.disabled,action:n?.action})}function S(e,t,n){return f(e).add({type:`doubletap`,recognizer:b(e),onActivate:t,pointer:n?.pointer,region:n?.region,disabled:n?.disabled,action:n?.action})}function C(e){return e.startsWith(`toggle`)}const w={togglePaused({store:e}){let t=a(e.state);t&&(t.paused?t.play():t.pause())},toggleMuted({store:t}){e(t.state)?.toggleMuted()},toggleFullscreen({store:e}){let t=r(e.state);t&&(t.fullscreen?t.exitFullscreen():t.requestFullscreen())},toggleSubtitles({store:e}){n(e.state)?.toggleSubtitles()},togglePictureInPicture({store:e}){let n=t(e.state);n&&(n.pip?n.exitPictureInPicture():n.requestPictureInPicture())},seekStep({store:e,value:t}){if(u(t))return;let n=o(e.state);n&&n.seek(n.currentTime+t)},volumeStep({store:t,value:n}){if(u(n))return;let r=e(t.state);r&&r.setVolume(r.volume+n)},speedUp({store:e}){let t=s(e.state);if(!t)return;let{playbackRates:n,playbackRate:r}=t,i=n.indexOf(r),a=i<0||i>=n.length-1?0:i+1;t.setPlaybackRate(n[a])},speedDown({store:e}){let t=s(e.state);if(!t)return;let{playbackRates:n,playbackRate:r}=t,i=n.indexOf(r),a=i<=0?n.length-1:i-1;t.setPlaybackRate(n[a])},seekToPercent({store:e,value:t,key:n}){let r=o(e.state);if(!r||r.duration<=0)return;let i;if(!u(t))i=t;else if(n>=`0`&&n<=`9`)i=Number(n)*10;else return;r.seek(i/100*r.duration)}};function T(e){return w[e]}var E=class extends d{constructor(...e){super(...e),this.type=``,this.action=``,this.value=void 0,this.pointer=void 0,this.region=void 0,this.disabled=!1}static{this.tagName=`media-gesture`}static{this.properties={type:{type:String},action:{type:String},value:{type:Number},pointer:{type:String},region:{type:String},disabled:{type:Boolean}}}#e=new p(this,m);#t=new c(this,{context:h,callback:()=>this.requestUpdate(),subscribe:!0});#n=null;connectedCallback(){super.connectedCallback(),this.style.display=`none`,this.#r()}disconnectedCallback(){super.disconnectedCallback(),this.#i()}update(e){super.update(e),this.isConnected&&(this.#i(),this.#r())}#r(){let e=this.#e.value,t=this.#t.value?.container;if(!this.type||!this.action||!e||!t)return;let n=_(this.action);if(!n)return;let{value:r}=this,i=t=>{n({store:e,value:r,event:t})},a={pointer:this.pointer,region:this.region,disabled:this.disabled,action:this.action};this.type===`doubletap`?this.#n=S(t,i,a):this.#n=x(t,i,a)}#i(){this.#n?.(),this.#n=null}},D=class extends d{constructor(...e){super(...e),this.keys=``,this.action=``,this.value=void 0,this.disabled=!1,this.target=`player`}static{this.tagName=`media-hotkey`}static{this.properties={keys:{type:String},action:{type:String},value:{type:Number},disabled:{type:Boolean},target:{type:String}}}#e=new p(this,m);#t=new c(this,{context:h,callback:()=>this.requestUpdate(),subscribe:!0});#n=null;connectedCallback(){super.connectedCallback(),this.style.display=`none`,this.#r()}disconnectedCallback(){super.disconnectedCallback(),this.#i()}update(e){super.update(e),this.isConnected&&(this.#i(),this.#r())}#r(){let e=this.#e.value,t=this.#t.value?.container;if(!this.keys||!this.action||!e||!t)return;let n=T(this.action);if(!n)return;let{value:r,action:a}=this;this.#n=i(t,{keys:this.keys,action:a,target:this.target,disabled:this.disabled,repeatable:!C(a),onActivate:(t,i)=>{n({store:e,key:i,value:r})}})}#i(){this.#n?.(),this.#n=null}};export{E as n,D as t};
2
+ //# sourceMappingURL=hotkey-element-DR3ZAqKa.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hotkey-element-DR3ZAqKa.js","names":["#lastTapTime","#clearTimer","#tapTimer","#player","#container","ContextConsumer","#register","#unregister","#cleanup","#player","#container","ContextConsumer","#register","#unregister","#cleanup"],"sources":["../../core/dist/default/dom/gesture/actions.js","../../core/dist/default/dom/gesture/tap.js","../../core/dist/default/dom/gesture/create-tap-gesture.js","../../core/dist/default/dom/hotkey/actions.js","../src/ui/gesture/gesture-element.ts","../src/ui/hotkey/hotkey-element.ts"],"sourcesContent":["import { selectPlaybackRate, selectTime, selectVolume } from \"../store/selectors.js\";\nimport { isFunction, isUndefined } from \"@videojs/utils/predicate\";\n//#region src/dom/gesture/actions.ts\n/** Actions that need custom logic beyond `store.state[action]()`. */\nconst GESTURE_ACTION_OVERRIDES = {\n\tseekStep({ store, value }) {\n\t\tif (isUndefined(value)) return;\n\t\tconst time = selectTime(store.state);\n\t\tif (!time) return;\n\t\ttime.seek(time.currentTime + value);\n\t},\n\tvolumeStep({ store, value }) {\n\t\tif (isUndefined(value)) return;\n\t\tconst vol = selectVolume(store.state);\n\t\tif (!vol) return;\n\t\tvol.setVolume(vol.volume + value);\n\t},\n\tspeedUp({ store }) {\n\t\tconst rate = selectPlaybackRate(store.state);\n\t\tif (!rate) return;\n\t\tconst { playbackRates, playbackRate } = rate;\n\t\tconst idx = playbackRates.indexOf(playbackRate);\n\t\tconst next = idx < 0 || idx >= playbackRates.length - 1 ? 0 : idx + 1;\n\t\trate.setPlaybackRate(playbackRates[next]);\n\t},\n\tspeedDown({ store }) {\n\t\tconst rate = selectPlaybackRate(store.state);\n\t\tif (!rate) return;\n\t\tconst { playbackRates, playbackRate } = rate;\n\t\tconst idx = playbackRates.indexOf(playbackRate);\n\t\tconst next = idx <= 0 ? playbackRates.length - 1 : idx - 1;\n\t\trate.setPlaybackRate(playbackRates[next]);\n\t}\n};\nfunction resolveGestureAction(name) {\n\tconst override = GESTURE_ACTION_OVERRIDES[name];\n\tif (override) return override;\n\treturn ({ store }) => {\n\t\tconst method = store.state[name];\n\t\tif (isFunction(method)) method();\n\t};\n}\n//#endregion\nexport { resolveGestureAction };\n\n//# sourceMappingURL=actions.js.map","//#region src/dom/gesture/tap.ts\nconst DOUBLETAP_WINDOW = 300;\n/**\n* Recognizes tap vs doubletap from quick pointer-up events.\n*\n* Stateful recognizer — tracks tap count and doubletap timing.\n* The coordinator handles pointer-down timing (tap threshold) and\n* calls `handleUp()` only for quick taps that passed the threshold check.\n*/\nvar TapRecognizer = class {\n\t#lastTapTime = 0;\n\t#tapTimer = null;\n\thandleUp(matches, event) {\n\t\tif (matches.resolve(\"doubletap\").length > 0) {\n\t\t\tconst now = Date.now();\n\t\t\tif (now - this.#lastTapTime < DOUBLETAP_WINDOW) {\n\t\t\t\tthis.#clearTimer();\n\t\t\t\tthis.#lastTapTime = 0;\n\t\t\t\tmatches.resolve(\"doubletap\")[0]?.onActivate(event);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.#lastTapTime = now;\n\t\t\tthis.#clearTimer();\n\t\t\tthis.#tapTimer = setTimeout(() => {\n\t\t\t\tthis.#tapTimer = null;\n\t\t\t\tthis.#lastTapTime = 0;\n\t\t\t\tmatches.resolve(\"tap\")[0]?.onActivate(event);\n\t\t\t}, DOUBLETAP_WINDOW);\n\t\t\treturn;\n\t\t}\n\t\tmatches.resolve(\"tap\")[0]?.onActivate(event);\n\t}\n\t#clearTimer() {\n\t\tif (this.#tapTimer !== null) {\n\t\t\tclearTimeout(this.#tapTimer);\n\t\t\tthis.#tapTimer = null;\n\t\t}\n\t}\n\treset() {\n\t\tthis.#clearTimer();\n\t\tthis.#lastTapTime = 0;\n\t}\n};\n//#endregion\nexport { TapRecognizer };\n\n//# sourceMappingURL=tap.js.map","import { getGestureCoordinator } from \"./coordinator.js\";\nimport { TapRecognizer } from \"./tap.js\";\n//#region src/dom/gesture/create-tap-gesture.ts\nconst recognizers = /* @__PURE__ */ new WeakMap();\nfunction getRecognizer(target) {\n\tlet recognizer = recognizers.get(target);\n\tif (recognizer) return recognizer;\n\trecognizer = new TapRecognizer();\n\trecognizers.set(target, recognizer);\n\treturn recognizer;\n}\n/**\n* Register a tap gesture on a target element.\n*\n* @example\n* ```ts\n* const cleanup = createTapGesture(container, (event) => {\n* store.paused ? store.play() : store.pause();\n* }, { pointer: 'mouse' });\n* ```\n*/\nfunction createTapGesture(target, onActivate, options) {\n\treturn getGestureCoordinator(target).add({\n\t\ttype: \"tap\",\n\t\trecognizer: getRecognizer(target),\n\t\tonActivate,\n\t\tpointer: options?.pointer,\n\t\tregion: options?.region,\n\t\tdisabled: options?.disabled,\n\t\taction: options?.action\n\t});\n}\n/**\n* Register a doubletap gesture on a target element.\n*\n* @example\n* ```ts\n* const cleanup = createDoubleTapGesture(container, (event) => {\n* store.fullscreen ? store.exitFullscreen() : store.requestFullscreen();\n* }, { region: 'center' });\n* ```\n*/\nfunction createDoubleTapGesture(target, onActivate, options) {\n\treturn getGestureCoordinator(target).add({\n\t\ttype: \"doubletap\",\n\t\trecognizer: getRecognizer(target),\n\t\tonActivate,\n\t\tpointer: options?.pointer,\n\t\tregion: options?.region,\n\t\tdisabled: options?.disabled,\n\t\taction: options?.action\n\t});\n}\n//#endregion\nexport { createDoubleTapGesture, createTapGesture };\n\n//# sourceMappingURL=create-tap-gesture.js.map","import { selectFullscreen, selectPiP, selectPlayback, selectPlaybackRate, selectTextTrack, selectTime, selectVolume } from \"../store/selectors.js\";\nimport { isUndefined } from \"@videojs/utils/predicate\";\n//#region src/dom/hotkey/actions.ts\nfunction isHotkeyToggleAction(action) {\n\treturn action.startsWith(\"toggle\");\n}\nconst HOTKEY_ACTIONS = {\n\ttogglePaused({ store }) {\n\t\tconst playback = selectPlayback(store.state);\n\t\tif (!playback) return;\n\t\tplayback.paused ? playback.play() : playback.pause();\n\t},\n\ttoggleMuted({ store }) {\n\t\tselectVolume(store.state)?.toggleMuted();\n\t},\n\ttoggleFullscreen({ store }) {\n\t\tconst fs = selectFullscreen(store.state);\n\t\tif (!fs) return;\n\t\tfs.fullscreen ? fs.exitFullscreen() : fs.requestFullscreen();\n\t},\n\ttoggleSubtitles({ store }) {\n\t\tselectTextTrack(store.state)?.toggleSubtitles();\n\t},\n\ttogglePictureInPicture({ store }) {\n\t\tconst pip = selectPiP(store.state);\n\t\tif (!pip) return;\n\t\tpip.pip ? pip.exitPictureInPicture() : pip.requestPictureInPicture();\n\t},\n\tseekStep({ store, value }) {\n\t\tif (isUndefined(value)) return;\n\t\tconst time = selectTime(store.state);\n\t\tif (!time) return;\n\t\ttime.seek(time.currentTime + value);\n\t},\n\tvolumeStep({ store, value }) {\n\t\tif (isUndefined(value)) return;\n\t\tconst vol = selectVolume(store.state);\n\t\tif (!vol) return;\n\t\tvol.setVolume(vol.volume + value);\n\t},\n\tspeedUp({ store }) {\n\t\tconst rate = selectPlaybackRate(store.state);\n\t\tif (!rate) return;\n\t\tconst { playbackRates, playbackRate } = rate;\n\t\tconst idx = playbackRates.indexOf(playbackRate);\n\t\tconst next = idx < 0 || idx >= playbackRates.length - 1 ? 0 : idx + 1;\n\t\trate.setPlaybackRate(playbackRates[next]);\n\t},\n\tspeedDown({ store }) {\n\t\tconst rate = selectPlaybackRate(store.state);\n\t\tif (!rate) return;\n\t\tconst { playbackRates, playbackRate } = rate;\n\t\tconst idx = playbackRates.indexOf(playbackRate);\n\t\tconst next = idx <= 0 ? playbackRates.length - 1 : idx - 1;\n\t\trate.setPlaybackRate(playbackRates[next]);\n\t},\n\tseekToPercent({ store, value, key }) {\n\t\tconst time = selectTime(store.state);\n\t\tif (!time || time.duration <= 0) return;\n\t\tlet percent;\n\t\tif (!isUndefined(value)) percent = value;\n\t\telse if (key >= \"0\" && key <= \"9\") percent = Number(key) * 10;\n\t\telse return;\n\t\ttime.seek(percent / 100 * time.duration);\n\t}\n};\nfunction resolveHotkeyAction(name) {\n\treturn HOTKEY_ACTIONS[name];\n}\n//#endregion\nexport { isHotkeyToggleAction, resolveHotkeyAction };\n\n//# sourceMappingURL=actions.js.map","import {\n createDoubleTapGesture,\n createTapGesture,\n type GestureActionName,\n type GesturePointerType,\n type GestureRegion,\n resolveGestureAction,\n} from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport { ContextConsumer } from '@videojs/element/context';\n\nimport { containerContext, playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaElement } from '../media-element';\n\nexport class GestureElement extends MediaElement {\n static readonly tagName = 'media-gesture';\n\n static override properties: PropertyDeclarationMap = {\n type: { type: String },\n action: { type: String },\n value: { type: Number },\n pointer: { type: String },\n region: { type: String },\n disabled: { type: Boolean },\n };\n\n type: 'tap' | 'doubletap' | (string & {}) = '';\n action: GestureActionName | (string & {}) = '';\n value: number | undefined = undefined;\n pointer: GesturePointerType | undefined = undefined;\n region: GestureRegion | undefined = undefined;\n disabled = false;\n\n readonly #player = new PlayerController(this, playerContext);\n readonly #container = new ContextConsumer(this, {\n context: containerContext,\n callback: () => this.requestUpdate(),\n subscribe: true,\n });\n #cleanup: (() => void) | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.style.display = 'none';\n this.#register();\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.#unregister();\n }\n\n protected override update(changed: PropertyValues): void {\n super.update(changed);\n\n // Re-register when attributes change.\n if (this.isConnected) {\n this.#unregister();\n this.#register();\n }\n }\n\n #register(): void {\n const store = this.#player.value;\n const container = this.#container.value?.container;\n if (!this.type || !this.action || !store || !container) return;\n\n const resolver = resolveGestureAction(this.action);\n if (!resolver) return;\n\n const { value } = this;\n\n const onActivate = (event: PointerEvent) => {\n resolver({ store, value, event });\n };\n\n const options = {\n pointer: this.pointer,\n region: this.region,\n disabled: this.disabled,\n action: this.action,\n };\n\n if (this.type === 'doubletap') {\n this.#cleanup = createDoubleTapGesture(container, onActivate, options);\n } else {\n this.#cleanup = createTapGesture(container, onActivate, options);\n }\n }\n\n #unregister(): void {\n this.#cleanup?.();\n this.#cleanup = null;\n }\n}\n","import { createHotkey, type HotkeyActionName, isHotkeyToggleAction, resolveHotkeyAction } from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport { ContextConsumer } from '@videojs/element/context';\n\nimport { containerContext, playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaElement } from '../media-element';\n\nexport class HotkeyElement extends MediaElement {\n static readonly tagName = 'media-hotkey';\n\n static override properties: PropertyDeclarationMap = {\n keys: { type: String },\n action: { type: String },\n value: { type: Number },\n disabled: { type: Boolean },\n target: { type: String },\n };\n\n keys = '';\n action: HotkeyActionName | (string & {}) = '';\n value: number | undefined = undefined;\n disabled = false;\n target: 'player' | 'document' = 'player';\n\n readonly #player = new PlayerController(this, playerContext);\n readonly #container = new ContextConsumer(this, {\n context: containerContext,\n callback: () => this.requestUpdate(),\n subscribe: true,\n });\n #cleanup: (() => void) | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.style.display = 'none';\n this.#register();\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.#unregister();\n }\n\n protected override update(changed: PropertyValues): void {\n super.update(changed);\n\n // Re-register when attributes change.\n if (this.isConnected) {\n this.#unregister();\n this.#register();\n }\n }\n\n #register(): void {\n const store = this.#player.value;\n const container = this.#container.value?.container;\n if (!this.keys || !this.action || !store || !container) return;\n\n const resolver = resolveHotkeyAction(this.action);\n if (!resolver) return;\n\n const { value, action } = this;\n\n this.#cleanup = createHotkey(container, {\n keys: this.keys,\n action,\n target: this.target,\n disabled: this.disabled,\n repeatable: !isHotkeyToggleAction(action),\n onActivate: (_event, key) => {\n resolver({ store, key, value });\n },\n });\n }\n\n #unregister(): void {\n this.#cleanup?.();\n this.#cleanup = null;\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,369 @@
1
+ import { C as selectVolume, S as selectTime, _ as selectFullscreen, b as selectPlaybackRate, g as createHotkey, v as selectPiP, x as selectTextTrack, y as selectPlayback } from "./compounds-VFPcCeRV.js";
2
+ import { A as ContextConsumer, C as isFunction, E as isUndefined, O as MediaElement, _ as getGestureCoordinator, n as PlayerController } from "./create-player-CyG77t-m.js";
3
+ import { r as playerContext, t as containerContext } from "./context-CvJ83xGk.js";
4
+
5
+ //#region ../core/dist/dev/dom/gesture/actions.js
6
+ /** Actions that need custom logic beyond `store.state[action]()`. */
7
+ const GESTURE_ACTION_OVERRIDES = {
8
+ seekStep({ store, value }) {
9
+ if (isUndefined(value)) return;
10
+ const time = selectTime(store.state);
11
+ if (!time) return;
12
+ time.seek(time.currentTime + value);
13
+ },
14
+ volumeStep({ store, value }) {
15
+ if (isUndefined(value)) return;
16
+ const vol = selectVolume(store.state);
17
+ if (!vol) return;
18
+ vol.setVolume(vol.volume + value);
19
+ },
20
+ speedUp({ store }) {
21
+ const rate = selectPlaybackRate(store.state);
22
+ if (!rate) return;
23
+ const { playbackRates, playbackRate } = rate;
24
+ const idx = playbackRates.indexOf(playbackRate);
25
+ const next = idx < 0 || idx >= playbackRates.length - 1 ? 0 : idx + 1;
26
+ rate.setPlaybackRate(playbackRates[next]);
27
+ },
28
+ speedDown({ store }) {
29
+ const rate = selectPlaybackRate(store.state);
30
+ if (!rate) return;
31
+ const { playbackRates, playbackRate } = rate;
32
+ const idx = playbackRates.indexOf(playbackRate);
33
+ const next = idx <= 0 ? playbackRates.length - 1 : idx - 1;
34
+ rate.setPlaybackRate(playbackRates[next]);
35
+ }
36
+ };
37
+ function resolveGestureAction(name) {
38
+ const override = GESTURE_ACTION_OVERRIDES[name];
39
+ if (override) return override;
40
+ return ({ store }) => {
41
+ const method = store.state[name];
42
+ if (isFunction(method)) method();
43
+ else console.warn(`[vjs-gesture] Unknown action: "${name}"`);
44
+ };
45
+ }
46
+
47
+ //#endregion
48
+ //#region ../core/dist/dev/dom/gesture/tap.js
49
+ const DOUBLETAP_WINDOW = 300;
50
+ /**
51
+ * Recognizes tap vs doubletap from quick pointer-up events.
52
+ *
53
+ * Stateful recognizer — tracks tap count and doubletap timing.
54
+ * The coordinator handles pointer-down timing (tap threshold) and
55
+ * calls `handleUp()` only for quick taps that passed the threshold check.
56
+ */
57
+ var TapRecognizer = class {
58
+ #lastTapTime = 0;
59
+ #tapTimer = null;
60
+ handleUp(matches, event) {
61
+ if (matches.resolve("doubletap").length > 0) {
62
+ const now = Date.now();
63
+ if (now - this.#lastTapTime < DOUBLETAP_WINDOW) {
64
+ this.#clearTimer();
65
+ this.#lastTapTime = 0;
66
+ matches.resolve("doubletap")[0]?.onActivate(event);
67
+ return;
68
+ }
69
+ this.#lastTapTime = now;
70
+ this.#clearTimer();
71
+ this.#tapTimer = setTimeout(() => {
72
+ this.#tapTimer = null;
73
+ this.#lastTapTime = 0;
74
+ matches.resolve("tap")[0]?.onActivate(event);
75
+ }, DOUBLETAP_WINDOW);
76
+ return;
77
+ }
78
+ matches.resolve("tap")[0]?.onActivate(event);
79
+ }
80
+ #clearTimer() {
81
+ if (this.#tapTimer !== null) {
82
+ clearTimeout(this.#tapTimer);
83
+ this.#tapTimer = null;
84
+ }
85
+ }
86
+ reset() {
87
+ this.#clearTimer();
88
+ this.#lastTapTime = 0;
89
+ }
90
+ };
91
+
92
+ //#endregion
93
+ //#region ../core/dist/dev/dom/gesture/create-tap-gesture.js
94
+ const recognizers = /* @__PURE__ */ new WeakMap();
95
+ function getRecognizer(target) {
96
+ let recognizer = recognizers.get(target);
97
+ if (recognizer) return recognizer;
98
+ recognizer = new TapRecognizer();
99
+ recognizers.set(target, recognizer);
100
+ return recognizer;
101
+ }
102
+ /**
103
+ * Register a tap gesture on a target element.
104
+ *
105
+ * @example
106
+ * ```ts
107
+ * const cleanup = createTapGesture(container, (event) => {
108
+ * store.paused ? store.play() : store.pause();
109
+ * }, { pointer: 'mouse' });
110
+ * ```
111
+ */
112
+ function createTapGesture(target, onActivate, options) {
113
+ return getGestureCoordinator(target).add({
114
+ type: "tap",
115
+ recognizer: getRecognizer(target),
116
+ onActivate,
117
+ pointer: options?.pointer,
118
+ region: options?.region,
119
+ disabled: options?.disabled,
120
+ action: options?.action
121
+ });
122
+ }
123
+ /**
124
+ * Register a doubletap gesture on a target element.
125
+ *
126
+ * @example
127
+ * ```ts
128
+ * const cleanup = createDoubleTapGesture(container, (event) => {
129
+ * store.fullscreen ? store.exitFullscreen() : store.requestFullscreen();
130
+ * }, { region: 'center' });
131
+ * ```
132
+ */
133
+ function createDoubleTapGesture(target, onActivate, options) {
134
+ return getGestureCoordinator(target).add({
135
+ type: "doubletap",
136
+ recognizer: getRecognizer(target),
137
+ onActivate,
138
+ pointer: options?.pointer,
139
+ region: options?.region,
140
+ disabled: options?.disabled,
141
+ action: options?.action
142
+ });
143
+ }
144
+
145
+ //#endregion
146
+ //#region ../core/dist/dev/dom/hotkey/actions.js
147
+ function isHotkeyToggleAction(action) {
148
+ return action.startsWith("toggle");
149
+ }
150
+ const HOTKEY_ACTIONS = {
151
+ togglePaused({ store }) {
152
+ const playback = selectPlayback(store.state);
153
+ if (!playback) return;
154
+ playback.paused ? playback.play() : playback.pause();
155
+ },
156
+ toggleMuted({ store }) {
157
+ selectVolume(store.state)?.toggleMuted();
158
+ },
159
+ toggleFullscreen({ store }) {
160
+ const fs = selectFullscreen(store.state);
161
+ if (!fs) return;
162
+ fs.fullscreen ? fs.exitFullscreen() : fs.requestFullscreen();
163
+ },
164
+ toggleSubtitles({ store }) {
165
+ selectTextTrack(store.state)?.toggleSubtitles();
166
+ },
167
+ togglePictureInPicture({ store }) {
168
+ const pip = selectPiP(store.state);
169
+ if (!pip) return;
170
+ pip.pip ? pip.exitPictureInPicture() : pip.requestPictureInPicture();
171
+ },
172
+ seekStep({ store, value }) {
173
+ if (isUndefined(value)) return;
174
+ const time = selectTime(store.state);
175
+ if (!time) return;
176
+ time.seek(time.currentTime + value);
177
+ },
178
+ volumeStep({ store, value }) {
179
+ if (isUndefined(value)) return;
180
+ const vol = selectVolume(store.state);
181
+ if (!vol) return;
182
+ vol.setVolume(vol.volume + value);
183
+ },
184
+ speedUp({ store }) {
185
+ const rate = selectPlaybackRate(store.state);
186
+ if (!rate) return;
187
+ const { playbackRates, playbackRate } = rate;
188
+ const idx = playbackRates.indexOf(playbackRate);
189
+ const next = idx < 0 || idx >= playbackRates.length - 1 ? 0 : idx + 1;
190
+ rate.setPlaybackRate(playbackRates[next]);
191
+ },
192
+ speedDown({ store }) {
193
+ const rate = selectPlaybackRate(store.state);
194
+ if (!rate) return;
195
+ const { playbackRates, playbackRate } = rate;
196
+ const idx = playbackRates.indexOf(playbackRate);
197
+ const next = idx <= 0 ? playbackRates.length - 1 : idx - 1;
198
+ rate.setPlaybackRate(playbackRates[next]);
199
+ },
200
+ seekToPercent({ store, value, key }) {
201
+ const time = selectTime(store.state);
202
+ if (!time || time.duration <= 0) return;
203
+ let percent;
204
+ if (!isUndefined(value)) percent = value;
205
+ else if (key >= "0" && key <= "9") percent = Number(key) * 10;
206
+ else return;
207
+ time.seek(percent / 100 * time.duration);
208
+ }
209
+ };
210
+ function resolveHotkeyAction(name) {
211
+ const resolver = HOTKEY_ACTIONS[name];
212
+ if (!resolver) console.warn(`[vjs-hotkey] Unknown action: "${name}"`);
213
+ return resolver;
214
+ }
215
+
216
+ //#endregion
217
+ //#region src/ui/gesture/gesture-element.ts
218
+ var GestureElement = class extends MediaElement {
219
+ constructor(..._args) {
220
+ super(..._args);
221
+ this.type = "";
222
+ this.action = "";
223
+ this.value = void 0;
224
+ this.pointer = void 0;
225
+ this.region = void 0;
226
+ this.disabled = false;
227
+ }
228
+ static {
229
+ this.tagName = "media-gesture";
230
+ }
231
+ static {
232
+ this.properties = {
233
+ type: { type: String },
234
+ action: { type: String },
235
+ value: { type: Number },
236
+ pointer: { type: String },
237
+ region: { type: String },
238
+ disabled: { type: Boolean }
239
+ };
240
+ }
241
+ #player = new PlayerController(this, playerContext);
242
+ #container = new ContextConsumer(this, {
243
+ context: containerContext,
244
+ callback: () => this.requestUpdate(),
245
+ subscribe: true
246
+ });
247
+ #cleanup = null;
248
+ connectedCallback() {
249
+ super.connectedCallback();
250
+ this.style.display = "none";
251
+ this.#register();
252
+ }
253
+ disconnectedCallback() {
254
+ super.disconnectedCallback();
255
+ this.#unregister();
256
+ }
257
+ update(changed) {
258
+ super.update(changed);
259
+ if (this.isConnected) {
260
+ this.#unregister();
261
+ this.#register();
262
+ }
263
+ }
264
+ #register() {
265
+ const store = this.#player.value;
266
+ const container = this.#container.value?.container;
267
+ if (!this.type || !this.action || !store || !container) return;
268
+ const resolver = resolveGestureAction(this.action);
269
+ if (!resolver) return;
270
+ const { value } = this;
271
+ const onActivate = (event) => {
272
+ resolver({
273
+ store,
274
+ value,
275
+ event
276
+ });
277
+ };
278
+ const options = {
279
+ pointer: this.pointer,
280
+ region: this.region,
281
+ disabled: this.disabled,
282
+ action: this.action
283
+ };
284
+ if (this.type === "doubletap") this.#cleanup = createDoubleTapGesture(container, onActivate, options);
285
+ else this.#cleanup = createTapGesture(container, onActivate, options);
286
+ }
287
+ #unregister() {
288
+ this.#cleanup?.();
289
+ this.#cleanup = null;
290
+ }
291
+ };
292
+
293
+ //#endregion
294
+ //#region src/ui/hotkey/hotkey-element.ts
295
+ var HotkeyElement = class extends MediaElement {
296
+ constructor(..._args) {
297
+ super(..._args);
298
+ this.keys = "";
299
+ this.action = "";
300
+ this.value = void 0;
301
+ this.disabled = false;
302
+ this.target = "player";
303
+ }
304
+ static {
305
+ this.tagName = "media-hotkey";
306
+ }
307
+ static {
308
+ this.properties = {
309
+ keys: { type: String },
310
+ action: { type: String },
311
+ value: { type: Number },
312
+ disabled: { type: Boolean },
313
+ target: { type: String }
314
+ };
315
+ }
316
+ #player = new PlayerController(this, playerContext);
317
+ #container = new ContextConsumer(this, {
318
+ context: containerContext,
319
+ callback: () => this.requestUpdate(),
320
+ subscribe: true
321
+ });
322
+ #cleanup = null;
323
+ connectedCallback() {
324
+ super.connectedCallback();
325
+ this.style.display = "none";
326
+ this.#register();
327
+ }
328
+ disconnectedCallback() {
329
+ super.disconnectedCallback();
330
+ this.#unregister();
331
+ }
332
+ update(changed) {
333
+ super.update(changed);
334
+ if (this.isConnected) {
335
+ this.#unregister();
336
+ this.#register();
337
+ }
338
+ }
339
+ #register() {
340
+ const store = this.#player.value;
341
+ const container = this.#container.value?.container;
342
+ if (!this.keys || !this.action || !store || !container) return;
343
+ const resolver = resolveHotkeyAction(this.action);
344
+ if (!resolver) return;
345
+ const { value, action } = this;
346
+ this.#cleanup = createHotkey(container, {
347
+ keys: this.keys,
348
+ action,
349
+ target: this.target,
350
+ disabled: this.disabled,
351
+ repeatable: !isHotkeyToggleAction(action),
352
+ onActivate: (_event, key) => {
353
+ resolver({
354
+ store,
355
+ key,
356
+ value
357
+ });
358
+ }
359
+ });
360
+ }
361
+ #unregister() {
362
+ this.#cleanup?.();
363
+ this.#cleanup = null;
364
+ }
365
+ };
366
+
367
+ //#endregion
368
+ export { GestureElement as n, HotkeyElement as t };
369
+ //# sourceMappingURL=hotkey-element-Dlta37Be.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hotkey-element-Dlta37Be.js","names":["#lastTapTime","#clearTimer","#tapTimer","#player","#container","#register","#unregister","#cleanup","#player","#container","#register","#unregister","#cleanup"],"sources":["../../core/dist/dev/dom/gesture/actions.js","../../core/dist/dev/dom/gesture/tap.js","../../core/dist/dev/dom/gesture/create-tap-gesture.js","../../core/dist/dev/dom/hotkey/actions.js","../src/ui/gesture/gesture-element.ts","../src/ui/hotkey/hotkey-element.ts"],"sourcesContent":["import { selectPlaybackRate, selectTime, selectVolume } from \"../store/selectors.js\";\nimport { isFunction, isUndefined } from \"@videojs/utils/predicate\";\n//#region src/dom/gesture/actions.ts\n/** Actions that need custom logic beyond `store.state[action]()`. */\nconst GESTURE_ACTION_OVERRIDES = {\n\tseekStep({ store, value }) {\n\t\tif (isUndefined(value)) return;\n\t\tconst time = selectTime(store.state);\n\t\tif (!time) return;\n\t\ttime.seek(time.currentTime + value);\n\t},\n\tvolumeStep({ store, value }) {\n\t\tif (isUndefined(value)) return;\n\t\tconst vol = selectVolume(store.state);\n\t\tif (!vol) return;\n\t\tvol.setVolume(vol.volume + value);\n\t},\n\tspeedUp({ store }) {\n\t\tconst rate = selectPlaybackRate(store.state);\n\t\tif (!rate) return;\n\t\tconst { playbackRates, playbackRate } = rate;\n\t\tconst idx = playbackRates.indexOf(playbackRate);\n\t\tconst next = idx < 0 || idx >= playbackRates.length - 1 ? 0 : idx + 1;\n\t\trate.setPlaybackRate(playbackRates[next]);\n\t},\n\tspeedDown({ store }) {\n\t\tconst rate = selectPlaybackRate(store.state);\n\t\tif (!rate) return;\n\t\tconst { playbackRates, playbackRate } = rate;\n\t\tconst idx = playbackRates.indexOf(playbackRate);\n\t\tconst next = idx <= 0 ? playbackRates.length - 1 : idx - 1;\n\t\trate.setPlaybackRate(playbackRates[next]);\n\t}\n};\nfunction resolveGestureAction(name) {\n\tconst override = GESTURE_ACTION_OVERRIDES[name];\n\tif (override) return override;\n\treturn ({ store }) => {\n\t\tconst method = store.state[name];\n\t\tif (isFunction(method)) method();\n\t\telse console.warn(`[vjs-gesture] Unknown action: \"${name}\"`);\n\t};\n}\n//#endregion\nexport { resolveGestureAction };\n\n//# sourceMappingURL=actions.js.map","//#region src/dom/gesture/tap.ts\nconst DOUBLETAP_WINDOW = 300;\n/**\n* Recognizes tap vs doubletap from quick pointer-up events.\n*\n* Stateful recognizer — tracks tap count and doubletap timing.\n* The coordinator handles pointer-down timing (tap threshold) and\n* calls `handleUp()` only for quick taps that passed the threshold check.\n*/\nvar TapRecognizer = class {\n\t#lastTapTime = 0;\n\t#tapTimer = null;\n\thandleUp(matches, event) {\n\t\tif (matches.resolve(\"doubletap\").length > 0) {\n\t\t\tconst now = Date.now();\n\t\t\tif (now - this.#lastTapTime < DOUBLETAP_WINDOW) {\n\t\t\t\tthis.#clearTimer();\n\t\t\t\tthis.#lastTapTime = 0;\n\t\t\t\tmatches.resolve(\"doubletap\")[0]?.onActivate(event);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.#lastTapTime = now;\n\t\t\tthis.#clearTimer();\n\t\t\tthis.#tapTimer = setTimeout(() => {\n\t\t\t\tthis.#tapTimer = null;\n\t\t\t\tthis.#lastTapTime = 0;\n\t\t\t\tmatches.resolve(\"tap\")[0]?.onActivate(event);\n\t\t\t}, DOUBLETAP_WINDOW);\n\t\t\treturn;\n\t\t}\n\t\tmatches.resolve(\"tap\")[0]?.onActivate(event);\n\t}\n\t#clearTimer() {\n\t\tif (this.#tapTimer !== null) {\n\t\t\tclearTimeout(this.#tapTimer);\n\t\t\tthis.#tapTimer = null;\n\t\t}\n\t}\n\treset() {\n\t\tthis.#clearTimer();\n\t\tthis.#lastTapTime = 0;\n\t}\n};\n//#endregion\nexport { TapRecognizer };\n\n//# sourceMappingURL=tap.js.map","import { getGestureCoordinator } from \"./coordinator.js\";\nimport { TapRecognizer } from \"./tap.js\";\n//#region src/dom/gesture/create-tap-gesture.ts\nconst recognizers = /* @__PURE__ */ new WeakMap();\nfunction getRecognizer(target) {\n\tlet recognizer = recognizers.get(target);\n\tif (recognizer) return recognizer;\n\trecognizer = new TapRecognizer();\n\trecognizers.set(target, recognizer);\n\treturn recognizer;\n}\n/**\n* Register a tap gesture on a target element.\n*\n* @example\n* ```ts\n* const cleanup = createTapGesture(container, (event) => {\n* store.paused ? store.play() : store.pause();\n* }, { pointer: 'mouse' });\n* ```\n*/\nfunction createTapGesture(target, onActivate, options) {\n\treturn getGestureCoordinator(target).add({\n\t\ttype: \"tap\",\n\t\trecognizer: getRecognizer(target),\n\t\tonActivate,\n\t\tpointer: options?.pointer,\n\t\tregion: options?.region,\n\t\tdisabled: options?.disabled,\n\t\taction: options?.action\n\t});\n}\n/**\n* Register a doubletap gesture on a target element.\n*\n* @example\n* ```ts\n* const cleanup = createDoubleTapGesture(container, (event) => {\n* store.fullscreen ? store.exitFullscreen() : store.requestFullscreen();\n* }, { region: 'center' });\n* ```\n*/\nfunction createDoubleTapGesture(target, onActivate, options) {\n\treturn getGestureCoordinator(target).add({\n\t\ttype: \"doubletap\",\n\t\trecognizer: getRecognizer(target),\n\t\tonActivate,\n\t\tpointer: options?.pointer,\n\t\tregion: options?.region,\n\t\tdisabled: options?.disabled,\n\t\taction: options?.action\n\t});\n}\n//#endregion\nexport { createDoubleTapGesture, createTapGesture };\n\n//# sourceMappingURL=create-tap-gesture.js.map","import { selectFullscreen, selectPiP, selectPlayback, selectPlaybackRate, selectTextTrack, selectTime, selectVolume } from \"../store/selectors.js\";\nimport { isUndefined } from \"@videojs/utils/predicate\";\n//#region src/dom/hotkey/actions.ts\nfunction isHotkeyToggleAction(action) {\n\treturn action.startsWith(\"toggle\");\n}\nconst HOTKEY_ACTIONS = {\n\ttogglePaused({ store }) {\n\t\tconst playback = selectPlayback(store.state);\n\t\tif (!playback) return;\n\t\tplayback.paused ? playback.play() : playback.pause();\n\t},\n\ttoggleMuted({ store }) {\n\t\tselectVolume(store.state)?.toggleMuted();\n\t},\n\ttoggleFullscreen({ store }) {\n\t\tconst fs = selectFullscreen(store.state);\n\t\tif (!fs) return;\n\t\tfs.fullscreen ? fs.exitFullscreen() : fs.requestFullscreen();\n\t},\n\ttoggleSubtitles({ store }) {\n\t\tselectTextTrack(store.state)?.toggleSubtitles();\n\t},\n\ttogglePictureInPicture({ store }) {\n\t\tconst pip = selectPiP(store.state);\n\t\tif (!pip) return;\n\t\tpip.pip ? pip.exitPictureInPicture() : pip.requestPictureInPicture();\n\t},\n\tseekStep({ store, value }) {\n\t\tif (isUndefined(value)) return;\n\t\tconst time = selectTime(store.state);\n\t\tif (!time) return;\n\t\ttime.seek(time.currentTime + value);\n\t},\n\tvolumeStep({ store, value }) {\n\t\tif (isUndefined(value)) return;\n\t\tconst vol = selectVolume(store.state);\n\t\tif (!vol) return;\n\t\tvol.setVolume(vol.volume + value);\n\t},\n\tspeedUp({ store }) {\n\t\tconst rate = selectPlaybackRate(store.state);\n\t\tif (!rate) return;\n\t\tconst { playbackRates, playbackRate } = rate;\n\t\tconst idx = playbackRates.indexOf(playbackRate);\n\t\tconst next = idx < 0 || idx >= playbackRates.length - 1 ? 0 : idx + 1;\n\t\trate.setPlaybackRate(playbackRates[next]);\n\t},\n\tspeedDown({ store }) {\n\t\tconst rate = selectPlaybackRate(store.state);\n\t\tif (!rate) return;\n\t\tconst { playbackRates, playbackRate } = rate;\n\t\tconst idx = playbackRates.indexOf(playbackRate);\n\t\tconst next = idx <= 0 ? playbackRates.length - 1 : idx - 1;\n\t\trate.setPlaybackRate(playbackRates[next]);\n\t},\n\tseekToPercent({ store, value, key }) {\n\t\tconst time = selectTime(store.state);\n\t\tif (!time || time.duration <= 0) return;\n\t\tlet percent;\n\t\tif (!isUndefined(value)) percent = value;\n\t\telse if (key >= \"0\" && key <= \"9\") percent = Number(key) * 10;\n\t\telse return;\n\t\ttime.seek(percent / 100 * time.duration);\n\t}\n};\nfunction resolveHotkeyAction(name) {\n\tconst resolver = HOTKEY_ACTIONS[name];\n\tif (!resolver) console.warn(`[vjs-hotkey] Unknown action: \"${name}\"`);\n\treturn resolver;\n}\n//#endregion\nexport { isHotkeyToggleAction, resolveHotkeyAction };\n\n//# sourceMappingURL=actions.js.map","import {\n createDoubleTapGesture,\n createTapGesture,\n type GestureActionName,\n type GesturePointerType,\n type GestureRegion,\n resolveGestureAction,\n} from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport { ContextConsumer } from '@videojs/element/context';\n\nimport { containerContext, playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaElement } from '../media-element';\n\nexport class GestureElement extends MediaElement {\n static readonly tagName = 'media-gesture';\n\n static override properties: PropertyDeclarationMap = {\n type: { type: String },\n action: { type: String },\n value: { type: Number },\n pointer: { type: String },\n region: { type: String },\n disabled: { type: Boolean },\n };\n\n type: 'tap' | 'doubletap' | (string & {}) = '';\n action: GestureActionName | (string & {}) = '';\n value: number | undefined = undefined;\n pointer: GesturePointerType | undefined = undefined;\n region: GestureRegion | undefined = undefined;\n disabled = false;\n\n readonly #player = new PlayerController(this, playerContext);\n readonly #container = new ContextConsumer(this, {\n context: containerContext,\n callback: () => this.requestUpdate(),\n subscribe: true,\n });\n #cleanup: (() => void) | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.style.display = 'none';\n this.#register();\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.#unregister();\n }\n\n protected override update(changed: PropertyValues): void {\n super.update(changed);\n\n // Re-register when attributes change.\n if (this.isConnected) {\n this.#unregister();\n this.#register();\n }\n }\n\n #register(): void {\n const store = this.#player.value;\n const container = this.#container.value?.container;\n if (!this.type || !this.action || !store || !container) return;\n\n const resolver = resolveGestureAction(this.action);\n if (!resolver) return;\n\n const { value } = this;\n\n const onActivate = (event: PointerEvent) => {\n resolver({ store, value, event });\n };\n\n const options = {\n pointer: this.pointer,\n region: this.region,\n disabled: this.disabled,\n action: this.action,\n };\n\n if (this.type === 'doubletap') {\n this.#cleanup = createDoubleTapGesture(container, onActivate, options);\n } else {\n this.#cleanup = createTapGesture(container, onActivate, options);\n }\n }\n\n #unregister(): void {\n this.#cleanup?.();\n this.#cleanup = null;\n }\n}\n","import { createHotkey, type HotkeyActionName, isHotkeyToggleAction, resolveHotkeyAction } from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport { ContextConsumer } from '@videojs/element/context';\n\nimport { containerContext, playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaElement } from '../media-element';\n\nexport class HotkeyElement extends MediaElement {\n static readonly tagName = 'media-hotkey';\n\n static override properties: PropertyDeclarationMap = {\n keys: { type: String },\n action: { type: String },\n value: { type: Number },\n disabled: { type: Boolean },\n target: { type: String },\n };\n\n keys = '';\n action: HotkeyActionName | (string & {}) = '';\n value: number | undefined = undefined;\n disabled = false;\n target: 'player' | 'document' = 'player';\n\n readonly #player = new PlayerController(this, playerContext);\n readonly #container = new ContextConsumer(this, {\n context: containerContext,\n callback: () => this.requestUpdate(),\n subscribe: true,\n });\n #cleanup: (() => void) | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.style.display = 'none';\n this.#register();\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.#unregister();\n }\n\n protected override update(changed: PropertyValues): void {\n super.update(changed);\n\n // Re-register when attributes change.\n if (this.isConnected) {\n this.#unregister();\n this.#register();\n }\n }\n\n #register(): void {\n const store = this.#player.value;\n const container = this.#container.value?.container;\n if (!this.keys || !this.action || !store || !container) return;\n\n const resolver = resolveHotkeyAction(this.action);\n if (!resolver) return;\n\n const { value, action } = this;\n\n this.#cleanup = createHotkey(container, {\n keys: this.keys,\n action,\n target: this.target,\n disabled: this.disabled,\n repeatable: !isHotkeyToggleAction(action),\n onActivate: (_event, key) => {\n resolver({ store, key, value });\n },\n });\n }\n\n #unregister(): void {\n this.#cleanup?.();\n this.#cleanup = null;\n }\n}\n"],"mappings":"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"}
@@ -1,7 +1,6 @@
1
- import { s as safeDefine } from "../context-BjrbhiSk.js";
2
- import { t as DelegateMixin } from "../delegate-BCw-LjP_.js";
3
- import { t as MediaAttachMixin } from "../media-attach-mixin-DfKkofgF.js";
4
- import { n as CustomVideoElement, t as MediaPropsMixin } from "../media-props-mixin-Dc5dpCV4.js";
1
+ import { o as safeDefine } from "../context-CvJ83xGk.js";
2
+ import { i as DelegateMixin, r as CustomVideoElement, t as MediaPropsMixin } from "../media-props-mixin-hheRmkup.js";
3
+ import { t as MediaAttachMixin } from "../media-attach-mixin-CMH1ziXP.js";
5
4
 
6
5
  //#region ../../node_modules/.pnpm/dashjs@5.1.1_@svta+cml-cta@1.0.1_@svta+cml-structured-field-values@1.0.1_@svta+cml-util_e62e22cdd187b69d7eef3f6641da2ae0/node_modules/dashjs/dist/modern/esm/dash.all.min.js
7
6
  /*! For license information please see dash.all.min.js.LICENSE.txt */