@videojs/html 10.0.0-beta.22 → 10.0.0-beta.24
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.
- package/README.md +6 -0
- package/cdn/{abort-C9UiBdVU.js → abort-0nUH9HXc.js} +1 -1
- package/cdn/{abort-C9UiBdVU.js.map → abort-0nUH9HXc.js.map} +1 -1
- package/cdn/{abort-DsTff8mS.js → abort-DQxwCs92.js} +1 -1
- package/cdn/{abort-DsTff8mS.js.map → abort-DQxwCs92.js.map} +1 -1
- package/cdn/audio-minimal-ui.dev.js +2 -4
- package/cdn/audio-minimal-ui.js +1 -1
- package/cdn/audio-minimal.dev.js +22 -20
- package/cdn/audio-minimal.dev.js.map +1 -1
- package/cdn/audio-minimal.js +1 -1
- package/cdn/audio-minimal.js.map +1 -1
- package/cdn/audio-ui.dev.js +2 -4
- package/cdn/audio-ui.js +1 -1
- package/cdn/audio.dev.js +22 -19
- package/cdn/audio.dev.js.map +1 -1
- package/cdn/audio.js +1 -1
- package/cdn/audio.js.map +1 -1
- package/cdn/background.dev.js +4 -4
- package/cdn/background.dev.js.map +1 -1
- package/cdn/background.js +1 -1
- package/cdn/background.js.map +1 -1
- package/cdn/base-CaXY3kMA.js +66 -0
- package/cdn/base-CaXY3kMA.js.map +1 -0
- package/cdn/base-JIGv_MlJ.js +2 -0
- package/cdn/base-JIGv_MlJ.js.map +1 -0
- package/cdn/compounds-CJ9NGNJr.js +8 -0
- package/cdn/compounds-CJ9NGNJr.js.map +1 -0
- package/cdn/{compounds-DD3MYkSc.js → compounds-DxdDY3jr.js} +2872 -537
- package/cdn/compounds-DxdDY3jr.js.map +1 -0
- package/cdn/create-player-B2W5yr5I.js +7 -0
- package/cdn/create-player-B2W5yr5I.js.map +1 -0
- package/cdn/{create-player-BKLw7l1a.js → create-player-_WED6HtK.js} +288 -183
- package/cdn/create-player-_WED6HtK.js.map +1 -0
- package/cdn/default-BtA2xVd7.js +33 -0
- package/cdn/default-BtA2xVd7.js.map +1 -0
- package/cdn/default-Ci15Ic2n.js +2 -0
- package/cdn/default-Ci15Ic2n.js.map +1 -0
- package/cdn/default-Ciudg7Lh.js +32 -0
- package/cdn/default-Ciudg7Lh.js.map +1 -0
- package/cdn/default-CmbctS5n.js +2 -0
- package/cdn/default-CmbctS5n.js.map +1 -0
- package/cdn/hls-CoCXCB8b.js +41 -0
- package/cdn/hls-CoCXCB8b.js.map +1 -0
- package/cdn/{hls-CcSAx_3I.js → hls-DjqAxSvY.js} +236 -21
- package/cdn/hls-DjqAxSvY.js.map +1 -0
- package/cdn/{hotkey-element-BONs_FyJ.js → hotkey-element-89VAnCrc.js} +47 -52
- package/cdn/hotkey-element-89VAnCrc.js.map +1 -0
- package/cdn/hotkey-element-CmUxzW-C.js +2 -0
- package/cdn/hotkey-element-CmUxzW-C.js.map +1 -0
- package/cdn/live-button-element-BMneBAzX.js +208 -0
- package/cdn/live-button-element-BMneBAzX.js.map +1 -0
- package/cdn/live-button-element-CPEl1qK3.js +2 -0
- package/cdn/live-button-element-CPEl1qK3.js.map +1 -0
- package/cdn/live-video-minimal.dev.d.ts +1 -0
- package/cdn/live-video-minimal.dev.js +193 -0
- package/cdn/live-video-minimal.dev.js.map +1 -0
- package/cdn/live-video-minimal.js +2 -0
- package/cdn/live-video-minimal.js.map +1 -0
- package/cdn/live-video.dev.d.ts +1 -0
- package/cdn/live-video.dev.js +194 -0
- package/cdn/live-video.dev.js.map +1 -0
- package/cdn/live-video.js +2 -0
- package/cdn/live-video.js.map +1 -0
- package/cdn/media/dash-video.dev.js +8 -7
- package/cdn/media/dash-video.dev.js.map +1 -1
- package/cdn/media/dash-video.js +6 -6
- package/cdn/media/dash-video.js.map +1 -1
- package/cdn/media/hls-video.dev.js +4 -4
- package/cdn/media/hls-video.js +1 -1
- package/cdn/media/hls-video.js.map +1 -1
- package/cdn/media/mux-audio.dev.js +8 -6
- package/cdn/media/mux-audio.dev.js.map +1 -1
- package/cdn/media/mux-audio.js +1 -1
- package/cdn/media/mux-audio.js.map +1 -1
- package/cdn/media/mux-video.dev.js +8 -6
- package/cdn/media/mux-video.dev.js.map +1 -1
- package/cdn/media/mux-video.js +1 -1
- package/cdn/media/mux-video.js.map +1 -1
- package/cdn/media/native-hls-video.dev.js +4 -4
- package/cdn/media/native-hls-video.js +1 -1
- package/cdn/media/native-hls-video.js.map +1 -1
- package/cdn/media/simple-hls-video.dev.js +3604 -2632
- package/cdn/media/simple-hls-video.dev.js.map +1 -1
- package/cdn/media/simple-hls-video.js +7 -7
- package/cdn/media/simple-hls-video.js.map +1 -1
- package/cdn/media-attach-mixin-0gzahJxP.js +2 -0
- package/cdn/{media-attach-mixin-C2wz0Qbd.js.map → media-attach-mixin-0gzahJxP.js.map} +1 -1
- package/cdn/{media-attach-mixin-CYoNe7Sh.js → media-attach-mixin-C1KQy-y8.js} +2 -2
- package/cdn/{media-attach-mixin-CYoNe7Sh.js.map → media-attach-mixin-C1KQy-y8.js.map} +1 -1
- package/cdn/minimal-BGKTRgLy.js +2 -0
- package/cdn/minimal-BGKTRgLy.js.map +1 -0
- package/cdn/minimal-BY8ZmNCh.js +33 -0
- package/cdn/minimal-BY8ZmNCh.js.map +1 -0
- package/cdn/minimal-D-o7FGL2.js +2 -0
- package/cdn/minimal-D-o7FGL2.js.map +1 -0
- package/cdn/minimal-b3s_qClU.js +32 -0
- package/cdn/minimal-b3s_qClU.js.map +1 -0
- package/cdn/minimal-ui-B0PWg1gR.js +2 -0
- package/cdn/minimal-ui-B0PWg1gR.js.map +1 -0
- package/cdn/minimal-ui-B6AtFmJO.js +2 -0
- package/cdn/minimal-ui-B6AtFmJO.js.map +1 -0
- package/cdn/minimal-ui-BjQUqQ_m.js +26 -0
- package/cdn/minimal-ui-BjQUqQ_m.js.map +1 -0
- package/cdn/minimal-ui-C2NRTvWx.js +38 -0
- package/cdn/minimal-ui-C2NRTvWx.js.map +1 -0
- package/cdn/{mux-BgWl50KW.js → mux-CJn4lTbv.js} +10 -10
- package/cdn/mux-CJn4lTbv.js.map +1 -0
- package/cdn/{mux-BhHIeG3e.js → mux-wKbnuUQu.js} +55 -20
- package/cdn/mux-wKbnuUQu.js.map +1 -0
- package/cdn/native-hls-1-isweaY.js +2 -0
- package/cdn/native-hls-1-isweaY.js.map +1 -0
- package/cdn/native-hls-D4f2-E9D.js +371 -0
- package/cdn/native-hls-D4f2-E9D.js.map +1 -0
- package/cdn/playback-rate-button-element-Ck7CCs0t.js +2 -0
- package/cdn/playback-rate-button-element-Ck7CCs0t.js.map +1 -0
- package/cdn/playback-rate-button-element-DN78puhg.js +79 -0
- package/cdn/playback-rate-button-element-DN78puhg.js.map +1 -0
- package/cdn/player-9_6BPhTP.js +16 -0
- package/cdn/player-9_6BPhTP.js.map +1 -0
- package/cdn/player-C6DIXZpP.js +16 -0
- package/cdn/player-C6DIXZpP.js.map +1 -0
- package/cdn/{player-BVGWmIbQ.js → player-ClV0UtoS.js} +3 -3
- package/cdn/{player-BVGWmIbQ.js.map → player-ClV0UtoS.js.map} +1 -1
- package/cdn/player-D7lHFQo6.js +2 -0
- package/cdn/player-D7lHFQo6.js.map +1 -0
- package/cdn/player-DzqwkiTI.js +2 -0
- package/cdn/{player-ChdQN3H5.js.map → player-DzqwkiTI.js.map} +1 -1
- package/cdn/player-_4EjFnET.js +2 -0
- package/cdn/player-_4EjFnET.js.map +1 -0
- package/cdn/poster-element-DmfmTRCV.js +2 -0
- package/cdn/poster-element-DmfmTRCV.js.map +1 -0
- package/cdn/{player-DX5Ka0vt.js → poster-element-IdY3MYJj.js} +18 -25
- package/cdn/poster-element-IdY3MYJj.js.map +1 -0
- package/cdn/{context-0rI_P6jf.js → predicate-Dqd8wbW6.js} +26 -2
- package/cdn/predicate-Dqd8wbW6.js.map +1 -0
- package/cdn/{context-CEFisYD0.js → predicate-Dxl3IuYh.js} +2 -2
- package/cdn/predicate-Dxl3IuYh.js.map +1 -0
- package/cdn/seek-button-element-BkC8xrVR.js +394 -0
- package/cdn/seek-button-element-BkC8xrVR.js.map +1 -0
- package/cdn/seek-button-element-C0uAXebE.js +2 -0
- package/cdn/seek-button-element-C0uAXebE.js.map +1 -0
- package/cdn/{shallow-equal-xh6Wj-hj.js → shallow-equal-D-fthE54.js} +1 -1
- package/cdn/{shallow-equal-xh6Wj-hj.js.map → shallow-equal-D-fthE54.js.map} +1 -1
- package/cdn/{shallow-equal-Daj3-_LC.js → shallow-equal-DSpD9PMp.js} +1 -1
- package/cdn/{shallow-equal-Daj3-_LC.js.map → shallow-equal-DSpD9PMp.js.map} +1 -1
- package/cdn/skin-element-D0TDGWJH.js +2 -0
- package/cdn/skin-element-D0TDGWJH.js.map +1 -0
- package/cdn/skin-element-mgqcAutZ.js +55 -0
- package/cdn/skin-element-mgqcAutZ.js.map +1 -0
- package/cdn/types-B_4Es-UH.js +20 -0
- package/cdn/types-B_4Es-UH.js.map +1 -0
- package/cdn/types-DRezN4yy.js +2 -0
- package/cdn/types-DRezN4yy.js.map +1 -0
- package/cdn/ui-BH0azXYN.js +2 -0
- package/cdn/ui-BH0azXYN.js.map +1 -0
- package/cdn/ui-B_E6hb1k.js +33 -0
- package/cdn/ui-B_E6hb1k.js.map +1 -0
- package/cdn/ui-ByhUcpaY.js +2 -0
- package/cdn/ui-ByhUcpaY.js.map +1 -0
- package/cdn/ui-DG0AlJbU.js +42 -0
- package/cdn/ui-DG0AlJbU.js.map +1 -0
- package/cdn/{video-host-BtD61mpF.js → video-host-BU9t26fe.js} +29 -16
- package/cdn/{video-host-BtD61mpF.js.map → video-host-BU9t26fe.js.map} +1 -1
- package/cdn/{video-host-LeB1FKfO.js → video-host-CvYvXa8l.js} +10 -10
- package/cdn/{video-host-LeB1FKfO.js.map → video-host-CvYvXa8l.js.map} +1 -1
- package/cdn/video-minimal-ui.dev.js +2 -4
- package/cdn/video-minimal-ui.js +1 -1
- package/cdn/video-minimal.dev.js +83 -20
- package/cdn/video-minimal.dev.js.map +1 -1
- package/cdn/video-minimal.js +1 -1
- package/cdn/video-minimal.js.map +1 -1
- package/cdn/video-ui.dev.js +2 -4
- package/cdn/video-ui.js +1 -1
- package/cdn/video.dev.js +56 -17
- package/cdn/video.dev.js.map +1 -1
- package/cdn/video.js +1 -1
- package/cdn/video.js.map +1 -1
- package/dist/default/_virtual/inline-css_src/define/audio/minimal-skin.js +1 -1
- package/dist/default/_virtual/inline-css_src/define/audio/minimal-skin.js.map +1 -1
- package/dist/default/_virtual/inline-css_src/define/audio/skin.js +1 -1
- package/dist/default/_virtual/inline-css_src/define/audio/skin.js.map +1 -1
- package/dist/default/_virtual/inline-css_src/define/background/skin.js +1 -1
- package/dist/default/_virtual/inline-css_src/define/background/skin.js.map +1 -1
- package/dist/default/_virtual/inline-css_src/define/global.js +6 -0
- package/dist/default/_virtual/inline-css_src/define/global.js.map +1 -0
- package/dist/default/_virtual/inline-css_src/define/live-audio/minimal-skin.js +6 -0
- package/dist/default/_virtual/inline-css_src/define/live-audio/minimal-skin.js.map +1 -0
- package/dist/default/_virtual/inline-css_src/define/live-audio/skin.js +6 -0
- package/dist/default/_virtual/inline-css_src/define/live-audio/skin.js.map +1 -0
- package/dist/default/_virtual/inline-css_src/define/live-video/minimal-skin.js +6 -0
- package/dist/default/_virtual/inline-css_src/define/live-video/minimal-skin.js.map +1 -0
- package/dist/default/_virtual/inline-css_src/define/live-video/skin.js +6 -0
- package/dist/default/_virtual/inline-css_src/define/live-video/skin.js.map +1 -0
- package/dist/default/_virtual/inline-css_src/define/video/minimal-skin.js +1 -1
- package/dist/default/_virtual/inline-css_src/define/video/minimal-skin.js.map +1 -1
- package/dist/default/_virtual/inline-css_src/define/video/skin.js +1 -1
- package/dist/default/_virtual/inline-css_src/define/video/skin.js.map +1 -1
- package/dist/default/define/audio/minimal-skin.css +227 -108
- package/dist/default/define/audio/minimal-skin.js +1 -1
- package/dist/default/define/audio/minimal-skin.js.map +1 -1
- package/dist/default/define/audio/minimal-skin.tailwind.js +3 -2
- package/dist/default/define/audio/minimal-skin.tailwind.js.map +1 -1
- package/dist/default/define/audio/minimal-ui.js +8 -3
- package/dist/default/define/audio/minimal-ui.js.map +1 -1
- package/dist/default/define/audio/skin.css +253 -108
- package/dist/default/define/audio/skin.js +1 -1
- package/dist/default/define/audio/skin.js.map +1 -1
- package/dist/default/define/audio/skin.tailwind.js +2 -1
- package/dist/default/define/audio/skin.tailwind.js.map +1 -1
- package/dist/default/define/audio/ui.js +10 -1
- package/dist/default/define/audio/ui.js.map +1 -1
- package/dist/default/define/background/skin.css +4 -2
- package/dist/default/define/background/skin.js +1 -1
- package/dist/{dev/define/base.css → default/define/global.css} +12 -8
- package/dist/default/define/live-audio/minimal-skin.css +897 -0
- package/dist/default/define/live-audio/minimal-skin.js +26 -0
- package/dist/default/define/live-audio/minimal-skin.js.map +1 -0
- package/dist/default/define/live-audio/minimal-skin.tailwind.js +29 -0
- package/dist/default/define/live-audio/minimal-skin.tailwind.js.map +1 -0
- package/dist/default/define/live-audio/minimal-ui.js +26 -0
- package/dist/default/define/live-audio/minimal-ui.js.map +1 -0
- package/dist/default/define/live-audio/player.js +18 -0
- package/dist/default/define/live-audio/player.js.map +1 -0
- package/dist/default/define/live-audio/skin.css +939 -0
- package/dist/default/define/live-audio/skin.js +26 -0
- package/dist/default/define/live-audio/skin.js.map +1 -0
- package/dist/default/define/live-audio/skin.tailwind.js +28 -0
- package/dist/default/define/live-audio/skin.tailwind.js.map +1 -0
- package/dist/default/define/live-audio/ui.js +30 -0
- package/dist/default/define/live-audio/ui.js.map +1 -0
- package/dist/default/define/live-video/minimal-skin.css +1593 -0
- package/dist/default/define/live-video/minimal-skin.js +26 -0
- package/dist/default/define/live-video/minimal-skin.js.map +1 -0
- package/dist/default/define/live-video/minimal-skin.tailwind.js +31 -0
- package/dist/default/define/live-video/minimal-skin.tailwind.js.map +1 -0
- package/dist/default/define/live-video/minimal-ui.js +44 -0
- package/dist/default/define/live-video/minimal-ui.js.map +1 -0
- package/dist/default/define/live-video/player.js +18 -0
- package/dist/default/define/live-video/player.js.map +1 -0
- package/dist/default/define/live-video/skin.css +1595 -0
- package/dist/default/define/live-video/skin.js +26 -0
- package/dist/default/define/live-video/skin.js.map +1 -0
- package/dist/default/define/live-video/skin.tailwind.js +29 -0
- package/dist/default/define/live-video/skin.tailwind.js.map +1 -0
- package/dist/default/define/live-video/ui.js +44 -0
- package/dist/default/define/live-video/ui.js.map +1 -0
- package/dist/default/define/shared.css +4 -0
- package/dist/default/define/skin-element.js +3 -3
- package/dist/default/define/skin-element.js.map +1 -1
- package/dist/default/define/tailwind.css +66 -0
- package/dist/default/define/ui/compounds.js +43 -1
- package/dist/default/define/ui/compounds.js.map +1 -1
- package/dist/default/define/ui/menu.js +6 -0
- package/dist/default/define/ui/menu.js.map +1 -0
- package/dist/default/define/ui/playback-rate-menu.js +13 -0
- package/dist/default/define/ui/playback-rate-menu.js.map +1 -0
- package/dist/default/define/ui/seek-indicator-value.js +7 -0
- package/dist/default/define/ui/seek-indicator-value.js.map +1 -0
- package/dist/default/define/ui/seek-indicator.js +9 -0
- package/dist/default/define/ui/seek-indicator.js.map +1 -0
- package/dist/default/define/ui/status-announcer.js +7 -0
- package/dist/default/define/ui/status-announcer.js.map +1 -0
- package/dist/default/define/ui/status-indicator-value.js +7 -0
- package/dist/default/define/ui/status-indicator-value.js.map +1 -0
- package/dist/default/define/ui/status-indicator.js +9 -0
- package/dist/default/define/ui/status-indicator.js.map +1 -0
- package/dist/default/define/ui/volume-indicator-fill.js +7 -0
- package/dist/default/define/ui/volume-indicator-fill.js.map +1 -0
- package/dist/default/define/ui/volume-indicator-value.js +7 -0
- package/dist/default/define/ui/volume-indicator-value.js.map +1 -0
- package/dist/default/define/ui/volume-indicator.js +11 -0
- package/dist/default/define/ui/volume-indicator.js.map +1 -0
- package/dist/default/define/video/minimal-skin.css +571 -147
- package/dist/default/define/video/minimal-skin.js +1 -1
- package/dist/default/define/video/minimal-skin.js.map +1 -1
- package/dist/default/define/video/minimal-skin.tailwind.js +4 -2
- package/dist/default/define/video/minimal-skin.tailwind.js.map +1 -1
- package/dist/default/define/video/minimal-ui.js +13 -3
- package/dist/default/define/video/minimal-ui.js.map +1 -1
- package/dist/default/define/video/skin.css +581 -145
- package/dist/default/define/video/skin.js +1 -1
- package/dist/default/define/video/skin.js.map +1 -1
- package/dist/default/define/video/skin.tailwind.js +3 -2
- package/dist/default/define/video/skin.tailwind.js.map +1 -1
- package/dist/default/define/video/ui.js +11 -1
- package/dist/default/define/video/ui.js.map +1 -1
- package/dist/default/icons/default/index.js +19 -0
- package/dist/default/icons/dist/element/base.js +66 -0
- package/dist/default/icons/dist/element/base.js.map +1 -0
- package/dist/default/icons/dist/element/default/icons.js +25 -0
- package/dist/default/icons/dist/element/default/icons.js.map +1 -0
- package/dist/default/icons/dist/element/default/index.js +10 -0
- package/dist/default/icons/dist/element/default/index.js.map +1 -0
- package/dist/default/icons/dist/element/index.js +11 -0
- package/dist/default/icons/dist/element/index.js.map +1 -0
- package/dist/default/icons/dist/element/minimal/icons.js +25 -0
- package/dist/default/icons/dist/element/minimal/icons.js.map +1 -0
- package/dist/default/icons/dist/element/minimal/index.js +10 -0
- package/dist/default/icons/dist/element/minimal/index.js.map +1 -0
- package/dist/default/icons/dist/html/default/captions-off.js +6 -0
- package/dist/default/icons/dist/html/default/captions-off.js.map +1 -0
- package/dist/default/icons/dist/html/default/captions-on.js +6 -0
- package/dist/default/icons/dist/html/default/captions-on.js.map +1 -0
- package/dist/default/icons/dist/html/default/cast-enter.js +6 -0
- package/dist/default/icons/dist/html/default/cast-enter.js.map +1 -0
- package/dist/default/icons/dist/html/default/cast-exit.js +6 -0
- package/dist/default/icons/dist/html/default/cast-exit.js.map +1 -0
- package/dist/default/icons/dist/html/default/check.js +6 -0
- package/dist/default/icons/dist/html/default/check.js.map +1 -0
- package/dist/default/icons/dist/html/default/chevron.js +6 -0
- package/dist/default/icons/dist/html/default/chevron.js.map +1 -0
- package/dist/default/icons/dist/html/default/fullscreen-enter.js +6 -0
- package/dist/default/icons/dist/html/default/fullscreen-enter.js.map +1 -0
- package/dist/default/icons/dist/html/default/fullscreen-exit.js +6 -0
- package/dist/default/icons/dist/html/default/fullscreen-exit.js.map +1 -0
- package/dist/default/icons/dist/html/default/pause.js +6 -0
- package/dist/default/icons/dist/html/default/pause.js.map +1 -0
- package/dist/default/icons/dist/html/default/pip-enter.js +6 -0
- package/dist/default/icons/dist/html/default/pip-enter.js.map +1 -0
- package/dist/default/icons/dist/html/default/pip-exit.js +6 -0
- package/dist/default/icons/dist/html/default/pip-exit.js.map +1 -0
- package/dist/default/icons/dist/html/default/play.js +6 -0
- package/dist/default/icons/dist/html/default/play.js.map +1 -0
- package/dist/default/icons/dist/html/default/restart.js +6 -0
- package/dist/default/icons/dist/html/default/restart.js.map +1 -0
- package/dist/default/icons/dist/html/default/seek.js +6 -0
- package/dist/default/icons/dist/html/default/seek.js.map +1 -0
- package/dist/default/icons/dist/html/default/spinner.js +6 -0
- package/dist/default/icons/dist/html/default/spinner.js.map +1 -0
- package/dist/default/icons/dist/html/default/volume-high.js +6 -0
- package/dist/default/icons/dist/html/default/volume-high.js.map +1 -0
- package/dist/default/icons/dist/html/default/volume-low.js +6 -0
- package/dist/default/icons/dist/html/default/volume-low.js.map +1 -0
- package/dist/default/icons/dist/html/default/volume-off.js +6 -0
- package/dist/default/icons/dist/html/default/volume-off.js.map +1 -0
- package/dist/default/icons/dist/html/minimal/captions-off.js +6 -0
- package/dist/default/icons/dist/html/minimal/captions-off.js.map +1 -0
- package/dist/default/icons/dist/html/minimal/captions-on.js +6 -0
- package/dist/default/icons/dist/html/minimal/captions-on.js.map +1 -0
- package/dist/default/icons/dist/html/minimal/cast-enter.js +6 -0
- package/dist/default/icons/dist/html/minimal/cast-enter.js.map +1 -0
- package/dist/default/icons/dist/html/minimal/cast-exit.js +6 -0
- package/dist/default/icons/dist/html/minimal/cast-exit.js.map +1 -0
- package/dist/default/icons/dist/html/minimal/check.js +6 -0
- package/dist/default/icons/dist/html/minimal/check.js.map +1 -0
- package/dist/default/icons/dist/html/minimal/chevron.js +6 -0
- package/dist/default/icons/dist/html/minimal/chevron.js.map +1 -0
- package/dist/default/icons/dist/html/minimal/fullscreen-enter.js +6 -0
- package/dist/default/icons/dist/html/minimal/fullscreen-enter.js.map +1 -0
- package/dist/default/icons/dist/html/minimal/fullscreen-exit.js +6 -0
- package/dist/default/icons/dist/html/minimal/fullscreen-exit.js.map +1 -0
- package/dist/default/icons/dist/html/minimal/pause.js +6 -0
- package/dist/default/icons/dist/html/minimal/pause.js.map +1 -0
- package/dist/default/icons/dist/html/minimal/pip-enter.js +6 -0
- package/dist/default/icons/dist/html/minimal/pip-enter.js.map +1 -0
- package/dist/default/icons/dist/html/minimal/pip-exit.js +6 -0
- package/dist/default/icons/dist/html/minimal/pip-exit.js.map +1 -0
- package/dist/default/icons/dist/html/minimal/play.js +6 -0
- package/dist/default/icons/dist/html/minimal/play.js.map +1 -0
- package/dist/default/icons/dist/html/minimal/restart.js +6 -0
- package/dist/default/icons/dist/html/minimal/restart.js.map +1 -0
- package/dist/default/icons/dist/html/minimal/seek.js +6 -0
- package/dist/default/icons/dist/html/minimal/seek.js.map +1 -0
- package/dist/default/icons/dist/html/minimal/spinner.js +6 -0
- package/dist/default/icons/dist/html/minimal/spinner.js.map +1 -0
- package/dist/default/icons/dist/html/minimal/volume-high.js +6 -0
- package/dist/default/icons/dist/html/minimal/volume-high.js.map +1 -0
- package/dist/default/icons/dist/html/minimal/volume-low.js +6 -0
- package/dist/default/icons/dist/html/minimal/volume-low.js.map +1 -0
- package/dist/default/icons/dist/html/minimal/volume-off.js +6 -0
- package/dist/default/icons/dist/html/minimal/volume-off.js.map +1 -0
- package/dist/default/icons/dist/render/default/index.js +17 -15
- package/dist/default/icons/dist/render/default/index.js.map +1 -1
- package/dist/default/icons/dist/render/minimal/index.js +17 -15
- package/dist/default/icons/dist/render/minimal/index.js.map +1 -1
- package/dist/default/icons/element/default/index.js +1 -0
- package/dist/default/icons/element/index.js +1 -0
- package/dist/default/icons/element/minimal/index.js +1 -0
- package/dist/default/icons/index.js +19 -0
- package/dist/default/icons/minimal/index.js +19 -0
- package/dist/default/index.js +26 -1
- package/dist/default/media/mux-audio/index.js +4 -1
- package/dist/default/media/mux-audio/index.js.map +1 -1
- package/dist/default/media/mux-video/index.js +4 -1
- package/dist/default/media/mux-video/index.js.map +1 -1
- package/dist/default/player/context.js.map +1 -1
- package/dist/default/presets/live-audio.js +7 -0
- package/dist/default/presets/live-video.js +7 -0
- package/dist/default/skins/dist/default/default/tailwind/audio.tailwind.js +3 -2
- package/dist/default/skins/dist/default/default/tailwind/audio.tailwind.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/buffering.js +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/buffering.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/button.js +3 -2
- package/dist/default/skins/dist/default/default/tailwind/components/button.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/controls.js +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/controls.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/icon.js +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/icon.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/input-feedback.js +40 -0
- package/dist/default/skins/dist/default/default/tailwind/components/input-feedback.js.map +1 -0
- package/dist/default/skins/dist/default/default/tailwind/components/menu.js +12 -0
- package/dist/default/skins/dist/default/default/tailwind/components/menu.js.map +1 -0
- package/dist/default/skins/dist/default/default/tailwind/components/playback-rate.js +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/playback-rate.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/preview.js +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/preview.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/reset.js +7 -0
- package/dist/default/skins/dist/default/default/tailwind/components/reset.js.map +1 -0
- package/dist/default/skins/dist/default/default/tailwind/components/root.js +2 -1
- package/dist/default/skins/dist/default/default/tailwind/components/root.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/slider.js +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/slider.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js +13 -4
- package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/audio.tailwind.js +4 -2
- package/dist/default/skins/dist/default/minimal/tailwind/audio.tailwind.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/buffering.js +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/buffering.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/button.js +3 -2
- package/dist/default/skins/dist/default/minimal/tailwind/components/button.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/controls.js +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/controls.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/icon.js +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/icon.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/input-feedback.js +41 -0
- package/dist/default/skins/dist/default/minimal/tailwind/components/input-feedback.js.map +1 -0
- package/dist/default/skins/dist/default/minimal/tailwind/components/menu.js +12 -0
- package/dist/default/skins/dist/default/minimal/tailwind/components/menu.js.map +1 -0
- package/dist/default/skins/dist/default/minimal/tailwind/components/playback-rate.js +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/playback-rate.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/preview.js +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/preview.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/reset.js +7 -0
- package/dist/default/skins/dist/default/minimal/tailwind/components/reset.js.map +1 -0
- package/dist/default/skins/dist/default/minimal/tailwind/components/root.js +2 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/root.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js +6 -4
- package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
- package/dist/default/store/provider-mixin.js +8 -3
- package/dist/default/store/provider-mixin.js.map +1 -1
- package/dist/default/ui/alert-dialog/alert-dialog-close-element.js +7 -5
- package/dist/default/ui/alert-dialog/alert-dialog-close-element.js.map +1 -1
- package/dist/default/ui/alert-dialog/alert-dialog-element.js +12 -6
- package/dist/default/ui/alert-dialog/alert-dialog-element.js.map +1 -1
- package/dist/default/ui/buffering-indicator/buffering-indicator-element.js +6 -3
- package/dist/default/ui/buffering-indicator/buffering-indicator-element.js.map +1 -1
- package/dist/default/ui/cast-button/cast-button-element.js +2 -2
- package/dist/default/ui/cast-button/cast-button-element.js.map +1 -1
- package/dist/default/ui/controls/controls-element.js +13 -1
- package/dist/default/ui/controls/controls-element.js.map +1 -1
- package/dist/default/ui/error-dialog/error-dialog-element.js +4 -1
- package/dist/default/ui/error-dialog/error-dialog-element.js.map +1 -1
- package/dist/default/ui/gesture/gesture-element.js +12 -8
- package/dist/default/ui/gesture/gesture-element.js.map +1 -1
- package/dist/default/ui/hotkey/hotkey-element.js +11 -7
- package/dist/default/ui/hotkey/hotkey-element.js.map +1 -1
- package/dist/default/ui/input-indicators/input-indicator-element.js +110 -0
- package/dist/default/ui/input-indicators/input-indicator-element.js.map +1 -0
- package/dist/default/ui/input-indicators/live-indicator.js +32 -0
- package/dist/default/ui/input-indicators/live-indicator.js.map +1 -0
- package/dist/default/ui/live-button/live-button-element.js +97 -0
- package/dist/default/ui/live-button/live-button-element.js.map +1 -0
- package/dist/default/ui/media-button-element.js +4 -2
- package/dist/default/ui/media-button-element.js.map +1 -1
- package/dist/default/ui/menu/context.js +10 -0
- package/dist/default/ui/menu/context.js.map +1 -0
- package/dist/default/ui/menu/menu-back-element.js +57 -0
- package/dist/default/ui/menu/menu-back-element.js.map +1 -0
- package/dist/default/ui/menu/menu-checkbox-item-element.js +78 -0
- package/dist/default/ui/menu/menu-checkbox-item-element.js.map +1 -0
- package/dist/default/ui/menu/menu-element.js +285 -0
- package/dist/default/ui/menu/menu-element.js.map +1 -0
- package/dist/default/ui/menu/menu-group-element.js +35 -0
- package/dist/default/ui/menu/menu-group-element.js.map +1 -0
- package/dist/default/ui/menu/menu-item-element.js +96 -0
- package/dist/default/ui/menu/menu-item-element.js.map +1 -0
- package/dist/default/ui/menu/menu-item-indicator-element.js +34 -0
- package/dist/default/ui/menu/menu-item-indicator-element.js.map +1 -0
- package/dist/default/ui/menu/menu-label-element.js +20 -0
- package/dist/default/ui/menu/menu-label-element.js.map +1 -0
- package/dist/default/ui/menu/menu-radio-group-element.js +51 -0
- package/dist/default/ui/menu/menu-radio-group-element.js.map +1 -0
- package/dist/default/ui/menu/menu-radio-item-element.js +84 -0
- package/dist/default/ui/menu/menu-radio-item-element.js.map +1 -0
- package/dist/default/ui/menu/menu-separator-element.js +24 -0
- package/dist/default/ui/menu/menu-separator-element.js.map +1 -0
- package/dist/default/ui/menu/menu-view-element.js +16 -0
- package/dist/default/ui/menu/menu-view-element.js.map +1 -0
- package/dist/default/ui/playback-rate-menu/playback-rate-menu-element.js +47 -0
- package/dist/default/ui/playback-rate-menu/playback-rate-menu-element.js.map +1 -0
- package/dist/default/ui/playback-rate-menu/playback-rate-menu-trigger-element.js +85 -0
- package/dist/default/ui/playback-rate-menu/playback-rate-menu-trigger-element.js.map +1 -0
- package/dist/default/ui/playback-rate-menu/playback-rate-options-element.js +113 -0
- package/dist/default/ui/playback-rate-menu/playback-rate-options-element.js.map +1 -0
- package/dist/default/ui/popover/popover-element.js +44 -16
- package/dist/default/ui/popover/popover-element.js.map +1 -1
- package/dist/default/ui/position-controller.js +11 -6
- package/dist/default/ui/position-controller.js.map +1 -1
- package/dist/default/ui/seek-indicator/seek-indicator-element.js +44 -0
- package/dist/default/ui/seek-indicator/seek-indicator-element.js.map +1 -0
- package/dist/default/ui/seek-indicator/seek-indicator-value-element.js +11 -0
- package/dist/default/ui/seek-indicator/seek-indicator-value-element.js.map +1 -0
- package/dist/default/ui/slider/slider-element.js +8 -4
- package/dist/default/ui/slider/slider-element.js.map +1 -1
- package/dist/default/ui/slider/slider-preview-element.js +9 -6
- package/dist/default/ui/slider/slider-preview-element.js.map +1 -1
- package/dist/default/ui/slider/slider-value-element.js +5 -4
- package/dist/default/ui/slider/slider-value-element.js.map +1 -1
- package/dist/default/ui/status-announcer/status-announcer-element.js +70 -0
- package/dist/default/ui/status-announcer/status-announcer-element.js.map +1 -0
- package/dist/default/ui/status-indicator/status-indicator-element.js +53 -0
- package/dist/default/ui/status-indicator/status-indicator-element.js.map +1 -0
- package/dist/default/ui/status-indicator/status-indicator-value-element.js +11 -0
- package/dist/default/ui/status-indicator/status-indicator-value-element.js.map +1 -0
- package/dist/default/ui/thumbnail/thumbnail-element.js +10 -5
- package/dist/default/ui/thumbnail/thumbnail-element.js.map +1 -1
- package/dist/default/ui/time/time-element.js +8 -4
- package/dist/default/ui/time/time-element.js.map +1 -1
- package/dist/default/ui/time-slider/time-slider-element.js +12 -6
- package/dist/default/ui/time-slider/time-slider-element.js.map +1 -1
- package/dist/default/ui/tooltip/tooltip-element.js +43 -16
- package/dist/default/ui/tooltip/tooltip-element.js.map +1 -1
- package/dist/default/ui/tooltip/tooltip-group-element.js +7 -5
- package/dist/default/ui/tooltip/tooltip-group-element.js.map +1 -1
- package/dist/default/ui/volume-indicator/volume-indicator-element.js +46 -0
- package/dist/default/ui/volume-indicator/volume-indicator-element.js.map +1 -0
- package/dist/default/ui/volume-indicator/volume-indicator-fill-element.js +11 -0
- package/dist/default/ui/volume-indicator/volume-indicator-fill-element.js.map +1 -0
- package/dist/default/ui/volume-indicator/volume-indicator-value-element.js +11 -0
- package/dist/default/ui/volume-indicator/volume-indicator-value-element.js.map +1 -0
- package/dist/default/ui/volume-slider/volume-slider-element.js +10 -5
- package/dist/default/ui/volume-slider/volume-slider-element.js.map +1 -1
- package/dist/dev/_virtual/_rolldown/runtime.js +27 -0
- package/dist/dev/_virtual/inline-css_src/define/audio/minimal-skin.js +1 -1
- package/dist/dev/_virtual/inline-css_src/define/audio/minimal-skin.js.map +1 -1
- package/dist/dev/_virtual/inline-css_src/define/audio/skin.js +1 -1
- package/dist/dev/_virtual/inline-css_src/define/audio/skin.js.map +1 -1
- package/dist/dev/_virtual/inline-css_src/define/background/skin.js +1 -1
- package/dist/dev/_virtual/inline-css_src/define/background/skin.js.map +1 -1
- package/dist/dev/_virtual/inline-css_src/define/global.js +6 -0
- package/dist/dev/_virtual/inline-css_src/define/global.js.map +1 -0
- package/dist/dev/_virtual/inline-css_src/define/live-audio/minimal-skin.js +6 -0
- package/dist/dev/_virtual/inline-css_src/define/live-audio/minimal-skin.js.map +1 -0
- package/dist/dev/_virtual/inline-css_src/define/live-audio/skin.js +6 -0
- package/dist/dev/_virtual/inline-css_src/define/live-audio/skin.js.map +1 -0
- package/dist/dev/_virtual/inline-css_src/define/live-video/minimal-skin.js +6 -0
- package/dist/dev/_virtual/inline-css_src/define/live-video/minimal-skin.js.map +1 -0
- package/dist/dev/_virtual/inline-css_src/define/live-video/skin.js +6 -0
- package/dist/dev/_virtual/inline-css_src/define/live-video/skin.js.map +1 -0
- package/dist/dev/_virtual/inline-css_src/define/shared.js +1 -1
- package/dist/dev/_virtual/inline-css_src/define/shared.js.map +1 -1
- package/dist/dev/_virtual/inline-css_src/define/video/minimal-skin.js +1 -1
- package/dist/dev/_virtual/inline-css_src/define/video/minimal-skin.js.map +1 -1
- package/dist/dev/_virtual/inline-css_src/define/video/skin.js +1 -1
- package/dist/dev/_virtual/inline-css_src/define/video/skin.js.map +1 -1
- package/dist/dev/define/audio/minimal-skin.css +227 -108
- package/dist/dev/define/audio/minimal-skin.d.ts +2 -2
- package/dist/dev/define/audio/minimal-skin.d.ts.map +1 -1
- package/dist/dev/define/audio/minimal-skin.js +18 -14
- package/dist/dev/define/audio/minimal-skin.js.map +1 -1
- package/dist/dev/define/audio/minimal-skin.tailwind.d.ts.map +1 -1
- package/dist/dev/define/audio/minimal-skin.tailwind.js +29 -23
- package/dist/dev/define/audio/minimal-skin.tailwind.js.map +1 -1
- package/dist/dev/define/audio/minimal-ui.js +8 -3
- package/dist/dev/define/audio/minimal-ui.js.map +1 -1
- package/dist/dev/define/audio/player.d.ts +2 -2
- package/dist/dev/define/audio/skin.css +253 -108
- package/dist/dev/define/audio/skin.d.ts +2 -2
- package/dist/dev/define/audio/skin.d.ts.map +1 -1
- package/dist/dev/define/audio/skin.js +18 -13
- package/dist/dev/define/audio/skin.js.map +1 -1
- package/dist/dev/define/audio/skin.tailwind.d.ts.map +1 -1
- package/dist/dev/define/audio/skin.tailwind.js +27 -21
- package/dist/dev/define/audio/skin.tailwind.js.map +1 -1
- package/dist/dev/define/audio/ui.js +10 -1
- package/dist/dev/define/audio/ui.js.map +1 -1
- package/dist/dev/define/background/player.d.ts +2 -2
- package/dist/dev/define/background/skin.css +4 -2
- package/dist/dev/define/background/skin.d.ts.map +1 -1
- package/dist/dev/define/background/skin.js +1 -1
- package/dist/{default/define/base.css → dev/define/global.css} +12 -8
- package/dist/dev/define/live-audio/minimal-skin.css +897 -0
- package/dist/dev/define/live-audio/minimal-skin.d.ts +17 -0
- package/dist/dev/define/live-audio/minimal-skin.d.ts.map +1 -0
- package/dist/dev/define/live-audio/minimal-skin.js +78 -0
- package/dist/dev/define/live-audio/minimal-skin.js.map +1 -0
- package/dist/dev/define/live-audio/minimal-skin.tailwind.d.ts +14 -0
- package/dist/dev/define/live-audio/minimal-skin.tailwind.d.ts.map +1 -0
- package/dist/dev/define/live-audio/minimal-skin.tailwind.js +81 -0
- package/dist/dev/define/live-audio/minimal-skin.tailwind.js.map +1 -0
- package/dist/dev/define/live-audio/minimal-ui.d.ts +1 -0
- package/dist/dev/define/live-audio/minimal-ui.js +26 -0
- package/dist/dev/define/live-audio/minimal-ui.js.map +1 -0
- package/dist/dev/define/live-audio/player.d.ts +17 -0
- package/dist/dev/define/live-audio/player.d.ts.map +1 -0
- package/dist/dev/define/live-audio/player.js +18 -0
- package/dist/dev/define/live-audio/player.js.map +1 -0
- package/dist/dev/define/live-audio/skin.css +939 -0
- package/dist/dev/define/live-audio/skin.d.ts +17 -0
- package/dist/dev/define/live-audio/skin.d.ts.map +1 -0
- package/dist/dev/define/live-audio/skin.js +85 -0
- package/dist/dev/define/live-audio/skin.js.map +1 -0
- package/dist/dev/define/live-audio/skin.tailwind.d.ts +14 -0
- package/dist/dev/define/live-audio/skin.tailwind.d.ts.map +1 -0
- package/dist/dev/define/live-audio/skin.tailwind.js +80 -0
- package/dist/dev/define/live-audio/skin.tailwind.js.map +1 -0
- package/dist/dev/define/live-audio/ui.d.ts +1 -0
- package/dist/dev/define/live-audio/ui.js +30 -0
- package/dist/dev/define/live-audio/ui.js.map +1 -0
- package/dist/dev/define/live-video/minimal-skin.css +1593 -0
- package/dist/dev/define/live-video/minimal-skin.d.ts +17 -0
- package/dist/dev/define/live-video/minimal-skin.d.ts.map +1 -0
- package/dist/dev/define/live-video/minimal-skin.js +160 -0
- package/dist/dev/define/live-video/minimal-skin.js.map +1 -0
- package/dist/dev/define/live-video/minimal-skin.tailwind.d.ts +14 -0
- package/dist/dev/define/live-video/minimal-skin.tailwind.d.ts.map +1 -0
- package/dist/dev/define/live-video/minimal-skin.tailwind.js +161 -0
- package/dist/dev/define/live-video/minimal-skin.tailwind.js.map +1 -0
- package/dist/dev/define/live-video/minimal-ui.d.ts +1 -0
- package/dist/dev/define/live-video/minimal-ui.js +44 -0
- package/dist/dev/define/live-video/minimal-ui.js.map +1 -0
- package/dist/dev/define/live-video/player.d.ts +17 -0
- package/dist/dev/define/live-video/player.d.ts.map +1 -0
- package/dist/dev/define/live-video/player.js +18 -0
- package/dist/dev/define/live-video/player.js.map +1 -0
- package/dist/dev/define/live-video/skin.css +1595 -0
- package/dist/dev/define/live-video/skin.d.ts +17 -0
- package/dist/dev/define/live-video/skin.d.ts.map +1 -0
- package/dist/dev/define/live-video/skin.js +161 -0
- package/dist/dev/define/live-video/skin.js.map +1 -0
- package/dist/dev/define/live-video/skin.tailwind.d.ts +14 -0
- package/dist/dev/define/live-video/skin.tailwind.d.ts.map +1 -0
- package/dist/dev/define/live-video/skin.tailwind.js +160 -0
- package/dist/dev/define/live-video/skin.tailwind.js.map +1 -0
- package/dist/dev/define/live-video/ui.d.ts +1 -0
- package/dist/dev/define/live-video/ui.js +44 -0
- package/dist/dev/define/live-video/ui.js.map +1 -0
- package/dist/dev/define/shared.css +4 -0
- package/dist/dev/define/skin-element.d.ts +1 -1
- package/dist/dev/define/skin-element.d.ts.map +1 -1
- package/dist/dev/define/skin-element.js +3 -3
- package/dist/dev/define/skin-element.js.map +1 -1
- package/dist/dev/define/tailwind.css +66 -0
- package/dist/dev/define/ui/compounds.d.ts +3 -1
- package/dist/dev/define/ui/compounds.d.ts.map +1 -1
- package/dist/dev/define/ui/compounds.js +43 -1
- package/dist/dev/define/ui/compounds.js.map +1 -1
- package/dist/dev/define/ui/menu.d.ts +25 -0
- package/dist/dev/define/ui/menu.d.ts.map +1 -0
- package/dist/dev/define/ui/menu.js +6 -0
- package/dist/dev/define/ui/menu.js.map +1 -0
- package/dist/dev/define/ui/playback-rate-menu.d.ts +13 -0
- package/dist/dev/define/ui/playback-rate-menu.d.ts.map +1 -0
- package/dist/dev/define/ui/playback-rate-menu.js +13 -0
- package/dist/dev/define/ui/playback-rate-menu.js.map +1 -0
- package/dist/dev/define/ui/seek-indicator-value.d.ts +9 -0
- package/dist/dev/define/ui/seek-indicator-value.d.ts.map +1 -0
- package/dist/dev/define/ui/seek-indicator-value.js +7 -0
- package/dist/dev/define/ui/seek-indicator-value.js.map +1 -0
- package/dist/dev/define/ui/seek-indicator.d.ts +11 -0
- package/dist/dev/define/ui/seek-indicator.d.ts.map +1 -0
- package/dist/dev/define/ui/seek-indicator.js +9 -0
- package/dist/dev/define/ui/seek-indicator.js.map +1 -0
- package/dist/dev/define/ui/status-announcer.d.ts +9 -0
- package/dist/dev/define/ui/status-announcer.d.ts.map +1 -0
- package/dist/dev/define/ui/status-announcer.js +7 -0
- package/dist/dev/define/ui/status-announcer.js.map +1 -0
- package/dist/dev/define/ui/status-indicator-value.d.ts +9 -0
- package/dist/dev/define/ui/status-indicator-value.d.ts.map +1 -0
- package/dist/dev/define/ui/status-indicator-value.js +7 -0
- package/dist/dev/define/ui/status-indicator-value.js.map +1 -0
- package/dist/dev/define/ui/status-indicator.d.ts +11 -0
- package/dist/dev/define/ui/status-indicator.d.ts.map +1 -0
- package/dist/dev/define/ui/status-indicator.js +9 -0
- package/dist/dev/define/ui/status-indicator.js.map +1 -0
- package/dist/dev/define/ui/volume-indicator-fill.d.ts +9 -0
- package/dist/dev/define/ui/volume-indicator-fill.d.ts.map +1 -0
- package/dist/dev/define/ui/volume-indicator-fill.js +7 -0
- package/dist/dev/define/ui/volume-indicator-fill.js.map +1 -0
- package/dist/dev/define/ui/volume-indicator-value.d.ts +9 -0
- package/dist/dev/define/ui/volume-indicator-value.d.ts.map +1 -0
- package/dist/dev/define/ui/volume-indicator-value.js +7 -0
- package/dist/dev/define/ui/volume-indicator-value.js.map +1 -0
- package/dist/dev/define/ui/volume-indicator.d.ts +13 -0
- package/dist/dev/define/ui/volume-indicator.d.ts.map +1 -0
- package/dist/dev/define/ui/volume-indicator.js +11 -0
- package/dist/dev/define/ui/volume-indicator.js.map +1 -0
- package/dist/dev/define/video/minimal-skin.css +571 -147
- package/dist/dev/define/video/minimal-skin.d.ts +2 -2
- package/dist/dev/define/video/minimal-skin.d.ts.map +1 -1
- package/dist/dev/define/video/minimal-skin.js +79 -14
- package/dist/dev/define/video/minimal-skin.js.map +1 -1
- package/dist/dev/define/video/minimal-skin.tailwind.d.ts.map +1 -1
- package/dist/dev/define/video/minimal-skin.tailwind.js +93 -21
- package/dist/dev/define/video/minimal-skin.tailwind.js.map +1 -1
- package/dist/dev/define/video/minimal-ui.js +13 -3
- package/dist/dev/define/video/minimal-ui.js.map +1 -1
- package/dist/dev/define/video/player.d.ts +2 -2
- package/dist/dev/define/video/skin.css +581 -145
- package/dist/dev/define/video/skin.d.ts +2 -2
- package/dist/dev/define/video/skin.d.ts.map +1 -1
- package/dist/dev/define/video/skin.js +52 -11
- package/dist/dev/define/video/skin.js.map +1 -1
- package/dist/dev/define/video/skin.tailwind.d.ts.map +1 -1
- package/dist/dev/define/video/skin.tailwind.js +89 -19
- package/dist/dev/define/video/skin.tailwind.js.map +1 -1
- package/dist/dev/define/video/ui.js +11 -1
- package/dist/dev/define/video/ui.js.map +1 -1
- package/dist/dev/icons/default/index.d.ts +2 -0
- package/dist/dev/icons/default/index.js +19 -0
- package/dist/dev/icons/element/default/index.d.ts +1 -0
- package/dist/dev/icons/element/default/index.js +1 -0
- package/dist/dev/icons/element/index.d.ts +1 -0
- package/dist/dev/icons/element/index.js +1 -0
- package/dist/dev/icons/element/minimal/index.d.ts +1 -0
- package/dist/dev/icons/element/minimal/index.js +1 -0
- package/dist/dev/icons/index.d.ts +2 -0
- package/dist/dev/icons/index.js +19 -0
- package/dist/dev/icons/minimal/index.d.ts +2 -0
- package/dist/dev/icons/minimal/index.js +19 -0
- package/dist/dev/index.d.ts +36 -3
- package/dist/dev/index.d.ts.map +1 -0
- package/dist/dev/index.js +26 -1
- package/dist/dev/media/background-video/index.d.ts.map +1 -1
- package/dist/dev/media/container-element.d.ts +2 -2
- package/dist/dev/media/dash-video/index.d.ts +2 -2
- package/dist/dev/media/hls-video/index.d.ts +2 -2
- package/dist/dev/media/mux-audio/index.d.ts +2 -2
- package/dist/dev/media/mux-audio/index.js +4 -1
- package/dist/dev/media/mux-audio/index.js.map +1 -1
- package/dist/dev/media/mux-video/index.d.ts +2 -2
- package/dist/dev/media/mux-video/index.js +4 -1
- package/dist/dev/media/mux-video/index.js.map +1 -1
- package/dist/dev/media/native-hls-video/index.d.ts +2 -2
- package/dist/dev/media/simple-hls-video/index.d.ts +2 -2
- package/dist/dev/node_modules/.pnpm/@lit_context@1.1.6/node_modules/@lit/context/development/index.d.ts +2 -0
- package/dist/dev/node_modules/.pnpm/@lit_context@1.1.6/node_modules/@lit/context/development/lib/context-request-event.d.ts +61 -0
- package/dist/dev/node_modules/.pnpm/@lit_context@1.1.6/node_modules/@lit/context/development/lib/context-request-event.d.ts.map +1 -0
- package/dist/dev/node_modules/.pnpm/@lit_context@1.1.6/node_modules/@lit/context/development/lib/controllers/context-consumer.d.ts +1 -0
- package/dist/dev/node_modules/.pnpm/@lit_context@1.1.6/node_modules/@lit/context/development/lib/controllers/context-provider.d.ts +22 -0
- package/dist/dev/node_modules/.pnpm/@lit_context@1.1.6/node_modules/@lit/context/development/lib/controllers/context-provider.d.ts.map +1 -0
- package/dist/dev/node_modules/.pnpm/@lit_context@1.1.6/node_modules/@lit/context/development/lib/create-context.d.ts +19 -0
- package/dist/dev/node_modules/.pnpm/@lit_context@1.1.6/node_modules/@lit/context/development/lib/create-context.d.ts.map +1 -0
- package/dist/dev/node_modules/.pnpm/@lit_context@1.1.6/node_modules/@lit/context/development/lib/decorators/consume.d.ts +1 -0
- package/dist/dev/node_modules/.pnpm/@lit_context@1.1.6/node_modules/@lit/context/development/lib/decorators/provide.d.ts +1 -0
- package/dist/dev/node_modules/.pnpm/@lit_context@1.1.6/node_modules/@lit/context/development/lib/value-notifier.d.ts +1 -0
- package/dist/dev/node_modules/.pnpm/@lit_reactive-element@2.1.2/node_modules/@lit/reactive-element/development/reactive-element.d.ts +116 -0
- package/dist/dev/node_modules/.pnpm/@lit_reactive-element@2.1.2/node_modules/@lit/reactive-element/development/reactive-element.d.ts.map +1 -0
- package/dist/dev/packages/icons/dist/element/base.js +66 -0
- package/dist/dev/packages/icons/dist/element/base.js.map +1 -0
- package/dist/dev/packages/icons/dist/element/default/icons.js +25 -0
- package/dist/dev/packages/icons/dist/element/default/icons.js.map +1 -0
- package/dist/dev/packages/icons/dist/element/default/index.d.ts +1 -0
- package/dist/dev/packages/icons/dist/element/default/index.js +10 -0
- package/dist/dev/packages/icons/dist/element/default/index.js.map +1 -0
- package/dist/dev/packages/icons/dist/element/index.d.ts +1 -0
- package/dist/dev/packages/icons/dist/element/index.js +11 -0
- package/dist/dev/packages/icons/dist/element/index.js.map +1 -0
- package/dist/dev/packages/icons/dist/element/minimal/icons.js +25 -0
- package/dist/dev/packages/icons/dist/element/minimal/icons.js.map +1 -0
- package/dist/dev/packages/icons/dist/element/minimal/index.d.ts +1 -0
- package/dist/dev/packages/icons/dist/element/minimal/index.js +10 -0
- package/dist/dev/packages/icons/dist/element/minimal/index.js.map +1 -0
- package/dist/dev/packages/icons/dist/html/default/captions-off.js +6 -0
- package/dist/dev/packages/icons/dist/html/default/captions-off.js.map +1 -0
- package/dist/dev/packages/icons/dist/html/default/captions-on.js +6 -0
- package/dist/dev/packages/icons/dist/html/default/captions-on.js.map +1 -0
- package/dist/dev/packages/icons/dist/html/default/cast-enter.js +6 -0
- package/dist/dev/packages/icons/dist/html/default/cast-enter.js.map +1 -0
- package/dist/dev/packages/icons/dist/html/default/cast-exit.js +6 -0
- package/dist/dev/packages/icons/dist/html/default/cast-exit.js.map +1 -0
- package/dist/dev/packages/icons/dist/html/default/check.js +6 -0
- package/dist/dev/packages/icons/dist/html/default/check.js.map +1 -0
- package/dist/dev/packages/icons/dist/html/default/chevron.js +6 -0
- package/dist/dev/packages/icons/dist/html/default/chevron.js.map +1 -0
- package/dist/dev/packages/icons/dist/html/default/fullscreen-enter.js +6 -0
- package/dist/dev/packages/icons/dist/html/default/fullscreen-enter.js.map +1 -0
- package/dist/dev/packages/icons/dist/html/default/fullscreen-exit.js +6 -0
- package/dist/dev/packages/icons/dist/html/default/fullscreen-exit.js.map +1 -0
- package/dist/dev/packages/icons/dist/html/default/index.d.ts +23 -0
- package/dist/dev/packages/icons/dist/html/default/index.d.ts.map +1 -0
- package/dist/dev/packages/icons/dist/html/default/pause.js +6 -0
- package/dist/dev/packages/icons/dist/html/default/pause.js.map +1 -0
- package/dist/dev/packages/icons/dist/html/default/pip-enter.js +6 -0
- package/dist/dev/packages/icons/dist/html/default/pip-enter.js.map +1 -0
- package/dist/dev/packages/icons/dist/html/default/pip-exit.js +6 -0
- package/dist/dev/packages/icons/dist/html/default/pip-exit.js.map +1 -0
- package/dist/dev/packages/icons/dist/html/default/play.js +6 -0
- package/dist/dev/packages/icons/dist/html/default/play.js.map +1 -0
- package/dist/dev/packages/icons/dist/html/default/restart.js +6 -0
- package/dist/dev/packages/icons/dist/html/default/restart.js.map +1 -0
- package/dist/dev/packages/icons/dist/html/default/seek.js +6 -0
- package/dist/dev/packages/icons/dist/html/default/seek.js.map +1 -0
- package/dist/dev/packages/icons/dist/html/default/spinner.js +6 -0
- package/dist/dev/packages/icons/dist/html/default/spinner.js.map +1 -0
- package/dist/dev/packages/icons/dist/html/default/volume-high.js +6 -0
- package/dist/dev/packages/icons/dist/html/default/volume-high.js.map +1 -0
- package/dist/dev/packages/icons/dist/html/default/volume-low.js +6 -0
- package/dist/dev/packages/icons/dist/html/default/volume-low.js.map +1 -0
- package/dist/dev/packages/icons/dist/html/default/volume-off.js +6 -0
- package/dist/dev/packages/icons/dist/html/default/volume-off.js.map +1 -0
- package/dist/dev/packages/icons/dist/html/minimal/captions-off.js +6 -0
- package/dist/dev/packages/icons/dist/html/minimal/captions-off.js.map +1 -0
- package/dist/dev/packages/icons/dist/html/minimal/captions-on.js +6 -0
- package/dist/dev/packages/icons/dist/html/minimal/captions-on.js.map +1 -0
- package/dist/dev/packages/icons/dist/html/minimal/cast-enter.js +6 -0
- package/dist/dev/packages/icons/dist/html/minimal/cast-enter.js.map +1 -0
- package/dist/dev/packages/icons/dist/html/minimal/cast-exit.js +6 -0
- package/dist/dev/packages/icons/dist/html/minimal/cast-exit.js.map +1 -0
- package/dist/dev/packages/icons/dist/html/minimal/check.js +6 -0
- package/dist/dev/packages/icons/dist/html/minimal/check.js.map +1 -0
- package/dist/dev/packages/icons/dist/html/minimal/chevron.js +6 -0
- package/dist/dev/packages/icons/dist/html/minimal/chevron.js.map +1 -0
- package/dist/dev/packages/icons/dist/html/minimal/fullscreen-enter.js +6 -0
- package/dist/dev/packages/icons/dist/html/minimal/fullscreen-enter.js.map +1 -0
- package/dist/dev/packages/icons/dist/html/minimal/fullscreen-exit.js +6 -0
- package/dist/dev/packages/icons/dist/html/minimal/fullscreen-exit.js.map +1 -0
- package/dist/dev/packages/icons/dist/html/minimal/index.d.ts +23 -0
- package/dist/dev/packages/icons/dist/html/minimal/index.d.ts.map +1 -0
- package/dist/dev/packages/icons/dist/html/minimal/pause.js +6 -0
- package/dist/dev/packages/icons/dist/html/minimal/pause.js.map +1 -0
- package/dist/dev/packages/icons/dist/html/minimal/pip-enter.js +6 -0
- package/dist/dev/packages/icons/dist/html/minimal/pip-enter.js.map +1 -0
- package/dist/dev/packages/icons/dist/html/minimal/pip-exit.js +6 -0
- package/dist/dev/packages/icons/dist/html/minimal/pip-exit.js.map +1 -0
- package/dist/dev/packages/icons/dist/html/minimal/play.js +6 -0
- package/dist/dev/packages/icons/dist/html/minimal/play.js.map +1 -0
- package/dist/dev/packages/icons/dist/html/minimal/restart.js +6 -0
- package/dist/dev/packages/icons/dist/html/minimal/restart.js.map +1 -0
- package/dist/dev/packages/icons/dist/html/minimal/seek.js +6 -0
- package/dist/dev/packages/icons/dist/html/minimal/seek.js.map +1 -0
- package/dist/dev/packages/icons/dist/html/minimal/spinner.js +6 -0
- package/dist/dev/packages/icons/dist/html/minimal/spinner.js.map +1 -0
- package/dist/dev/packages/icons/dist/html/minimal/volume-high.js +6 -0
- package/dist/dev/packages/icons/dist/html/minimal/volume-high.js.map +1 -0
- package/dist/dev/packages/icons/dist/html/minimal/volume-low.js +6 -0
- package/dist/dev/packages/icons/dist/html/minimal/volume-low.js.map +1 -0
- package/dist/dev/packages/icons/dist/html/minimal/volume-off.js +6 -0
- package/dist/dev/packages/icons/dist/html/minimal/volume-off.js.map +1 -0
- package/dist/dev/packages/icons/dist/render/default/index.js +32 -0
- package/dist/dev/packages/icons/dist/render/default/index.js.map +1 -0
- package/dist/dev/packages/icons/dist/render/minimal/index.js +32 -0
- package/dist/dev/packages/icons/dist/render/minimal/index.js.map +1 -0
- package/dist/dev/{skins → packages/skins}/dist/default/default/tailwind/audio.tailwind.js +3 -2
- package/dist/dev/packages/skins/dist/default/default/tailwind/audio.tailwind.js.map +1 -0
- package/dist/dev/{skins → packages/skins}/dist/default/default/tailwind/components/buffering.js +1 -1
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/buffering.js.map +1 -0
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/button-group.js.map +1 -0
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/button.js +13 -0
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/button.js.map +1 -0
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/controls.js +7 -0
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/controls.js.map +1 -0
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/error.js.map +1 -0
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/icon.js +9 -0
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/icon.js.map +1 -0
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/input-feedback.js +40 -0
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/input-feedback.js.map +1 -0
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/menu.js +12 -0
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/menu.js.map +1 -0
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/overlay.js.map +1 -0
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/playback-rate.js +6 -0
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/playback-rate.js.map +1 -0
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/popup.js.map +1 -0
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/poster.js.map +1 -0
- package/dist/dev/{skins → packages/skins}/dist/default/default/tailwind/components/preview.js +1 -1
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/preview.js.map +1 -0
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/reset.js +7 -0
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/reset.js.map +1 -0
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/root.js +8 -0
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/root.js.map +1 -0
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/seek.js.map +1 -0
- package/dist/dev/{skins → packages/skins}/dist/default/default/tailwind/components/slider.js +1 -1
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/slider.js.map +1 -0
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/surface.js.map +1 -0
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/time.js.map +1 -0
- package/dist/dev/{skins → packages/skins}/dist/default/default/tailwind/video.tailwind.js +13 -4
- package/dist/dev/packages/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -0
- package/dist/dev/{skins → packages/skins}/dist/default/minimal/tailwind/audio.tailwind.js +4 -2
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/audio.tailwind.js.map +1 -0
- package/dist/dev/{skins → packages/skins}/dist/default/minimal/tailwind/components/buffering.js +1 -1
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/buffering.js.map +1 -0
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/button-group.js.map +1 -0
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/button.js +13 -0
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/button.js.map +1 -0
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/controls.js +7 -0
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/controls.js.map +1 -0
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/error.js.map +1 -0
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/icon.js +9 -0
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/icon.js.map +1 -0
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/input-feedback.js +41 -0
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/input-feedback.js.map +1 -0
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/menu.js +12 -0
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/menu.js.map +1 -0
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/overlay.js.map +1 -0
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/playback-rate.js +6 -0
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/playback-rate.js.map +1 -0
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/popup.js.map +1 -0
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/poster.js.map +1 -0
- package/dist/dev/{skins → packages/skins}/dist/default/minimal/tailwind/components/preview.js +1 -1
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/preview.js.map +1 -0
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/reset.js +7 -0
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/reset.js.map +1 -0
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/root.js +8 -0
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/root.js.map +1 -0
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/seek.js.map +1 -0
- package/dist/dev/{skins → packages/skins}/dist/default/minimal/tailwind/components/slider.js +1 -1
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -0
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/time.js.map +1 -0
- package/dist/dev/{skins → packages/skins}/dist/default/minimal/tailwind/video.tailwind.js +6 -4
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -0
- package/dist/dev/packages/skins/dist/default/shared/tailwind/icon-state.js.map +1 -0
- package/dist/dev/player/context.d.ts +3 -2
- package/dist/dev/player/context.d.ts.map +1 -1
- package/dist/dev/player/context.js.map +1 -1
- package/dist/dev/player/player-controller.d.ts +1 -1
- package/dist/dev/player/player-controller.d.ts.map +1 -1
- package/dist/dev/presets/live-audio.d.ts +7 -0
- package/dist/dev/presets/live-audio.js +7 -0
- package/dist/dev/presets/live-video.d.ts +7 -0
- package/dist/dev/presets/live-video.js +7 -0
- package/dist/dev/store/container-mixin.d.ts +1 -1
- package/dist/dev/store/provider-mixin.d.ts +1 -1
- package/dist/dev/store/provider-mixin.d.ts.map +1 -1
- package/dist/dev/store/provider-mixin.js +8 -3
- package/dist/dev/store/provider-mixin.js.map +1 -1
- package/dist/dev/ui/alert-dialog/alert-dialog-close-element.d.ts.map +1 -1
- package/dist/dev/ui/alert-dialog/alert-dialog-close-element.js +7 -5
- package/dist/dev/ui/alert-dialog/alert-dialog-close-element.js.map +1 -1
- package/dist/dev/ui/alert-dialog/alert-dialog-description-element.d.ts +2 -2
- package/dist/dev/ui/alert-dialog/alert-dialog-element.d.ts.map +1 -1
- package/dist/dev/ui/alert-dialog/alert-dialog-element.js +12 -6
- package/dist/dev/ui/alert-dialog/alert-dialog-element.js.map +1 -1
- package/dist/dev/ui/alert-dialog/alert-dialog-title-element.d.ts +2 -2
- package/dist/dev/ui/buffering-indicator/buffering-indicator-element.d.ts.map +1 -1
- package/dist/dev/ui/buffering-indicator/buffering-indicator-element.js +6 -3
- package/dist/dev/ui/buffering-indicator/buffering-indicator-element.js.map +1 -1
- package/dist/dev/ui/captions-button/captions-button-element.d.ts +4 -4
- package/dist/dev/ui/captions-button/captions-button-element.d.ts.map +1 -1
- package/dist/dev/ui/cast-button/cast-button-element.d.ts +6 -6
- package/dist/dev/ui/cast-button/cast-button-element.d.ts.map +1 -1
- package/dist/dev/ui/cast-button/cast-button-element.js +2 -2
- package/dist/dev/ui/cast-button/cast-button-element.js.map +1 -1
- package/dist/dev/ui/controls/controls-element.d.ts.map +1 -1
- package/dist/dev/ui/controls/controls-element.js +13 -1
- package/dist/dev/ui/controls/controls-element.js.map +1 -1
- package/dist/dev/ui/error-dialog/error-dialog-element.d.ts.map +1 -1
- package/dist/dev/ui/error-dialog/error-dialog-element.js +4 -1
- package/dist/dev/ui/error-dialog/error-dialog-element.js.map +1 -1
- package/dist/dev/ui/fullscreen-button/fullscreen-button-element.d.ts +4 -4
- package/dist/dev/ui/fullscreen-button/fullscreen-button-element.d.ts.map +1 -1
- package/dist/dev/ui/gesture/gesture-element.js +12 -8
- package/dist/dev/ui/gesture/gesture-element.js.map +1 -1
- package/dist/dev/ui/hotkey/aria-key-shortcuts-controller.d.ts.map +1 -1
- package/dist/dev/ui/hotkey/hotkey-element.js +11 -7
- package/dist/dev/ui/hotkey/hotkey-element.js.map +1 -1
- package/dist/dev/ui/input-indicators/input-indicator-element.d.ts +37 -0
- package/dist/dev/ui/input-indicators/input-indicator-element.d.ts.map +1 -0
- package/dist/dev/ui/input-indicators/input-indicator-element.js +110 -0
- package/dist/dev/ui/input-indicators/input-indicator-element.js.map +1 -0
- package/dist/dev/ui/input-indicators/live-indicator.d.ts +18 -0
- package/dist/dev/ui/input-indicators/live-indicator.d.ts.map +1 -0
- package/dist/dev/ui/input-indicators/live-indicator.js +32 -0
- package/dist/dev/ui/input-indicators/live-indicator.js.map +1 -0
- package/dist/dev/ui/live-button/live-button-element.d.ts +38 -0
- package/dist/dev/ui/live-button/live-button-element.d.ts.map +1 -0
- package/dist/dev/ui/live-button/live-button-element.js +98 -0
- package/dist/dev/ui/live-button/live-button-element.js.map +1 -0
- package/dist/dev/ui/media-button-element.d.ts +1 -1
- package/dist/dev/ui/media-button-element.js +4 -2
- package/dist/dev/ui/media-button-element.js.map +1 -1
- package/dist/dev/ui/media-element.d.ts +2 -2
- package/dist/dev/ui/menu/context.d.ts +25 -0
- package/dist/dev/ui/menu/context.d.ts.map +1 -0
- package/dist/dev/ui/menu/context.js +10 -0
- package/dist/dev/ui/menu/context.js.map +1 -0
- package/dist/dev/ui/menu/menu-back-element.d.ts +20 -0
- package/dist/dev/ui/menu/menu-back-element.d.ts.map +1 -0
- package/dist/dev/ui/menu/menu-back-element.js +57 -0
- package/dist/dev/ui/menu/menu-back-element.js.map +1 -0
- package/dist/dev/ui/menu/menu-checkbox-item-element.d.ts +24 -0
- package/dist/dev/ui/menu/menu-checkbox-item-element.d.ts.map +1 -0
- package/dist/dev/ui/menu/menu-checkbox-item-element.js +78 -0
- package/dist/dev/ui/menu/menu-checkbox-item-element.js.map +1 -0
- package/dist/dev/ui/menu/menu-element.d.ts +52 -0
- package/dist/dev/ui/menu/menu-element.d.ts.map +1 -0
- package/dist/dev/ui/menu/menu-element.js +285 -0
- package/dist/dev/ui/menu/menu-element.js.map +1 -0
- package/dist/dev/ui/menu/menu-group-element.d.ts +18 -0
- package/dist/dev/ui/menu/menu-group-element.d.ts.map +1 -0
- package/dist/dev/ui/menu/menu-group-element.js +35 -0
- package/dist/dev/ui/menu/menu-group-element.js.map +1 -0
- package/dist/dev/ui/menu/menu-item-element.d.ts +25 -0
- package/dist/dev/ui/menu/menu-item-element.d.ts.map +1 -0
- package/dist/dev/ui/menu/menu-item-element.js +96 -0
- package/dist/dev/ui/menu/menu-item-element.js.map +1 -0
- package/dist/dev/ui/menu/menu-item-indicator-element.d.ts +22 -0
- package/dist/dev/ui/menu/menu-item-indicator-element.d.ts.map +1 -0
- package/dist/dev/ui/menu/menu-item-indicator-element.js +34 -0
- package/dist/dev/ui/menu/menu-item-indicator-element.js.map +1 -0
- package/dist/dev/ui/menu/menu-label-element.d.ts +15 -0
- package/dist/dev/ui/menu/menu-label-element.d.ts.map +1 -0
- package/dist/dev/ui/menu/menu-label-element.js +20 -0
- package/dist/dev/ui/menu/menu-label-element.js.map +1 -0
- package/dist/dev/ui/menu/menu-radio-group-element.d.ts +22 -0
- package/dist/dev/ui/menu/menu-radio-group-element.d.ts.map +1 -0
- package/dist/dev/ui/menu/menu-radio-group-element.js +51 -0
- package/dist/dev/ui/menu/menu-radio-group-element.js.map +1 -0
- package/dist/dev/ui/menu/menu-radio-item-element.d.ts +24 -0
- package/dist/dev/ui/menu/menu-radio-item-element.d.ts.map +1 -0
- package/dist/dev/ui/menu/menu-radio-item-element.js +84 -0
- package/dist/dev/ui/menu/menu-radio-item-element.js.map +1 -0
- package/dist/dev/ui/menu/menu-separator-element.d.ts +12 -0
- package/dist/dev/ui/menu/menu-separator-element.d.ts.map +1 -0
- package/dist/dev/ui/menu/menu-separator-element.js +24 -0
- package/dist/dev/ui/menu/menu-separator-element.js.map +1 -0
- package/dist/dev/ui/menu/menu-view-element.d.ts +11 -0
- package/dist/dev/ui/menu/menu-view-element.d.ts.map +1 -0
- package/dist/dev/ui/menu/menu-view-element.js +16 -0
- package/dist/dev/ui/menu/menu-view-element.js.map +1 -0
- package/dist/dev/ui/mute-button/mute-button-element.d.ts +4 -4
- package/dist/dev/ui/mute-button/mute-button-element.d.ts.map +1 -1
- package/dist/dev/ui/pip-button/pip-button-element.d.ts +4 -4
- package/dist/dev/ui/pip-button/pip-button-element.d.ts.map +1 -1
- package/dist/dev/ui/play-button/play-button-element.d.ts +5 -5
- package/dist/dev/ui/play-button/play-button-element.d.ts.map +1 -1
- package/dist/dev/ui/playback-rate-button/playback-rate-button-element.d.ts +3 -3
- package/dist/dev/ui/playback-rate-button/playback-rate-button-element.d.ts.map +1 -1
- package/dist/dev/ui/playback-rate-menu/playback-rate-menu-element.d.ts +53 -0
- package/dist/dev/ui/playback-rate-menu/playback-rate-menu-element.d.ts.map +1 -0
- package/dist/dev/ui/playback-rate-menu/playback-rate-menu-element.js +48 -0
- package/dist/dev/ui/playback-rate-menu/playback-rate-menu-element.js.map +1 -0
- package/dist/dev/ui/playback-rate-menu/playback-rate-menu-trigger-element.d.ts +35 -0
- package/dist/dev/ui/playback-rate-menu/playback-rate-menu-trigger-element.d.ts.map +1 -0
- package/dist/dev/ui/playback-rate-menu/playback-rate-menu-trigger-element.js +86 -0
- package/dist/dev/ui/playback-rate-menu/playback-rate-menu-trigger-element.js.map +1 -0
- package/dist/dev/ui/playback-rate-menu/playback-rate-options-element.d.ts +31 -0
- package/dist/dev/ui/playback-rate-menu/playback-rate-options-element.d.ts.map +1 -0
- package/dist/dev/ui/playback-rate-menu/playback-rate-options-element.js +114 -0
- package/dist/dev/ui/playback-rate-menu/playback-rate-options-element.js.map +1 -0
- package/dist/dev/ui/popover/popover-element.d.ts +9 -3
- package/dist/dev/ui/popover/popover-element.d.ts.map +1 -1
- package/dist/dev/ui/popover/popover-element.js +44 -16
- package/dist/dev/ui/popover/popover-element.js.map +1 -1
- package/dist/dev/ui/position-controller.js +11 -6
- package/dist/dev/ui/position-controller.js.map +1 -1
- package/dist/dev/ui/poster/poster-element.d.ts +4 -4
- package/dist/dev/ui/poster/poster-element.d.ts.map +1 -1
- package/dist/dev/ui/seek-button/seek-button-element.d.ts +4 -4
- package/dist/dev/ui/seek-button/seek-button-element.d.ts.map +1 -1
- package/dist/dev/ui/seek-indicator/seek-indicator-element.d.ts +25 -0
- package/dist/dev/ui/seek-indicator/seek-indicator-element.d.ts.map +1 -0
- package/dist/dev/ui/seek-indicator/seek-indicator-element.js +44 -0
- package/dist/dev/ui/seek-indicator/seek-indicator-element.js.map +1 -0
- package/dist/dev/ui/seek-indicator/seek-indicator-value-element.d.ts +9 -0
- package/dist/dev/ui/seek-indicator/seek-indicator-value-element.d.ts.map +1 -0
- package/dist/dev/ui/seek-indicator/seek-indicator-value-element.js +11 -0
- package/dist/dev/ui/seek-indicator/seek-indicator-value-element.js.map +1 -0
- package/dist/dev/ui/slider/slider-element.d.ts +2 -2
- package/dist/dev/ui/slider/slider-element.d.ts.map +1 -1
- package/dist/dev/ui/slider/slider-element.js +8 -4
- package/dist/dev/ui/slider/slider-element.js.map +1 -1
- package/dist/dev/ui/slider/slider-preview-element.d.ts.map +1 -1
- package/dist/dev/ui/slider/slider-preview-element.js +9 -6
- package/dist/dev/ui/slider/slider-preview-element.js.map +1 -1
- package/dist/dev/ui/slider/slider-value-element.d.ts.map +1 -1
- package/dist/dev/ui/slider/slider-value-element.js +5 -4
- package/dist/dev/ui/slider/slider-value-element.js.map +1 -1
- package/dist/dev/ui/status-announcer/status-announcer-element.d.ts +23 -0
- package/dist/dev/ui/status-announcer/status-announcer-element.d.ts.map +1 -0
- package/dist/dev/ui/status-announcer/status-announcer-element.js +70 -0
- package/dist/dev/ui/status-announcer/status-announcer-element.js.map +1 -0
- package/dist/dev/ui/status-indicator/status-indicator-element.d.ts +29 -0
- package/dist/dev/ui/status-indicator/status-indicator-element.d.ts.map +1 -0
- package/dist/dev/ui/status-indicator/status-indicator-element.js +53 -0
- package/dist/dev/ui/status-indicator/status-indicator-element.js.map +1 -0
- package/dist/dev/ui/status-indicator/status-indicator-value-element.d.ts +9 -0
- package/dist/dev/ui/status-indicator/status-indicator-value-element.d.ts.map +1 -0
- package/dist/dev/ui/status-indicator/status-indicator-value-element.js +11 -0
- package/dist/dev/ui/status-indicator/status-indicator-value-element.js.map +1 -0
- package/dist/dev/ui/thumbnail/thumbnail-element.d.ts.map +1 -1
- package/dist/dev/ui/thumbnail/thumbnail-element.js +10 -5
- package/dist/dev/ui/thumbnail/thumbnail-element.js.map +1 -1
- package/dist/dev/ui/time/time-element.d.ts +2 -2
- package/dist/dev/ui/time/time-element.d.ts.map +1 -1
- package/dist/dev/ui/time/time-element.js +8 -4
- package/dist/dev/ui/time/time-element.js.map +1 -1
- package/dist/dev/ui/time-slider/time-slider-element.d.ts +2 -2
- package/dist/dev/ui/time-slider/time-slider-element.d.ts.map +1 -1
- package/dist/dev/ui/time-slider/time-slider-element.js +12 -6
- package/dist/dev/ui/time-slider/time-slider-element.js.map +1 -1
- package/dist/dev/ui/tooltip/tooltip-element.d.ts +9 -3
- package/dist/dev/ui/tooltip/tooltip-element.d.ts.map +1 -1
- package/dist/dev/ui/tooltip/tooltip-element.js +43 -16
- package/dist/dev/ui/tooltip/tooltip-element.js.map +1 -1
- package/dist/dev/ui/tooltip/tooltip-group-element.d.ts.map +1 -1
- package/dist/dev/ui/tooltip/tooltip-group-element.js +7 -5
- package/dist/dev/ui/tooltip/tooltip-group-element.js.map +1 -1
- package/dist/dev/ui/volume-indicator/volume-indicator-element.d.ts +25 -0
- package/dist/dev/ui/volume-indicator/volume-indicator-element.d.ts.map +1 -0
- package/dist/dev/ui/volume-indicator/volume-indicator-element.js +46 -0
- package/dist/dev/ui/volume-indicator/volume-indicator-element.js.map +1 -0
- package/dist/dev/ui/volume-indicator/volume-indicator-fill-element.d.ts +9 -0
- package/dist/dev/ui/volume-indicator/volume-indicator-fill-element.d.ts.map +1 -0
- package/dist/dev/ui/volume-indicator/volume-indicator-fill-element.js +11 -0
- package/dist/dev/ui/volume-indicator/volume-indicator-fill-element.js.map +1 -0
- package/dist/dev/ui/volume-indicator/volume-indicator-value-element.d.ts +9 -0
- package/dist/dev/ui/volume-indicator/volume-indicator-value-element.d.ts.map +1 -0
- package/dist/dev/ui/volume-indicator/volume-indicator-value-element.js +11 -0
- package/dist/dev/ui/volume-indicator/volume-indicator-value-element.js.map +1 -0
- package/dist/dev/ui/volume-slider/volume-slider-element.d.ts +2 -2
- package/dist/dev/ui/volume-slider/volume-slider-element.d.ts.map +1 -1
- package/dist/dev/ui/volume-slider/volume-slider-element.js +10 -5
- package/dist/dev/ui/volume-slider/volume-slider-element.js.map +1 -1
- package/docs/README.md +7 -0
- package/docs/concepts/accessibility.md +60 -0
- package/docs/concepts/browser-support.md +37 -0
- package/docs/concepts/features.md +129 -0
- package/docs/concepts/overview.md +118 -0
- package/docs/concepts/presets.md +207 -0
- package/docs/concepts/skins.md +2006 -0
- package/docs/concepts/ui-components.md +59 -0
- package/docs/concepts/v10-roadmap.md +75 -0
- package/docs/concepts/why-videojs.md +113 -0
- package/docs/how-to/build-with-ai.md +39 -0
- package/docs/how-to/build-your-own-component.md +217 -0
- package/docs/how-to/customize-skins.md +5711 -0
- package/docs/how-to/installation.md +172 -0
- package/docs/llms.txt +88 -0
- package/docs/reference/buffering-indicator.md +152 -0
- package/docs/reference/captions-button.md +216 -0
- package/docs/reference/container-mixin.md +69 -0
- package/docs/reference/controls.md +248 -0
- package/docs/reference/create-selector.md +59 -0
- package/docs/reference/feature-buffer.md +52 -0
- package/docs/reference/feature-controls.md +70 -0
- package/docs/reference/feature-error.md +60 -0
- package/docs/reference/feature-fullscreen.md +90 -0
- package/docs/reference/feature-live.md +60 -0
- package/docs/reference/feature-pip.md +90 -0
- package/docs/reference/feature-playback-rate.md +70 -0
- package/docs/reference/feature-playback.md +110 -0
- package/docs/reference/feature-remote-playback.md +70 -0
- package/docs/reference/feature-source.md +70 -0
- package/docs/reference/feature-stream-type.md +46 -0
- package/docs/reference/feature-text-tracks.md +100 -0
- package/docs/reference/feature-time.md +80 -0
- package/docs/reference/feature-volume.md +90 -0
- package/docs/reference/fullscreen-button.md +229 -0
- package/docs/reference/html-create-player.md +449 -0
- package/docs/reference/media-attach-mixin.md +83 -0
- package/docs/reference/mute-button.md +301 -0
- package/docs/reference/pip-button.md +229 -0
- package/docs/reference/play-button.md +251 -0
- package/docs/reference/playback-rate-button.md +170 -0
- package/docs/reference/player-container.md +126 -0
- package/docs/reference/player-context.md +50 -0
- package/docs/reference/player-controller.md +276 -0
- package/docs/reference/player-provider.md +114 -0
- package/docs/reference/popover.md +460 -0
- package/docs/reference/poster.md +158 -0
- package/docs/reference/provider-mixin.md +71 -0
- package/docs/reference/seek-button.md +223 -0
- package/docs/reference/slider.md +862 -0
- package/docs/reference/snapshot-controller.md +208 -0
- package/docs/reference/store-controller.md +180 -0
- package/docs/reference/thumbnail.md +364 -0
- package/docs/reference/time-slider.md +794 -0
- package/docs/reference/time.md +488 -0
- package/docs/reference/tooltip.md +547 -0
- package/docs/reference/volume-slider.md +783 -0
- package/package.json +46 -12
- package/cdn/compounds-CCgS3IGo.js +0 -8
- package/cdn/compounds-CCgS3IGo.js.map +0 -1
- package/cdn/compounds-DD3MYkSc.js.map +0 -1
- package/cdn/context-0rI_P6jf.js.map +0 -1
- package/cdn/context-CEFisYD0.js.map +0 -1
- package/cdn/create-player-B-PGzhq2.js +0 -7
- package/cdn/create-player-B-PGzhq2.js.map +0 -1
- package/cdn/create-player-BKLw7l1a.js.map +0 -1
- package/cdn/default-Djy9PEXm.js +0 -2
- package/cdn/default-Djy9PEXm.js.map +0 -1
- package/cdn/default-YzaLyoYg.js +0 -30
- package/cdn/default-YzaLyoYg.js.map +0 -1
- package/cdn/hls-CcSAx_3I.js.map +0 -1
- package/cdn/hls-Dl2v35sW.js +0 -41
- package/cdn/hls-Dl2v35sW.js.map +0 -1
- package/cdn/hotkey-element-BONs_FyJ.js.map +0 -1
- package/cdn/hotkey-element-DWWkfH3A.js +0 -2
- package/cdn/hotkey-element-DWWkfH3A.js.map +0 -1
- package/cdn/media-attach-mixin-C2wz0Qbd.js +0 -2
- package/cdn/minimal-AX_y2YBU.js +0 -30
- package/cdn/minimal-AX_y2YBU.js.map +0 -1
- package/cdn/minimal-Bc74CFqg.js +0 -2
- package/cdn/minimal-Bc74CFqg.js.map +0 -1
- package/cdn/minimal-ui-CE1sVxKB.js +0 -22
- package/cdn/minimal-ui-CE1sVxKB.js.map +0 -1
- package/cdn/minimal-ui-hC8-_9_F.js +0 -2
- package/cdn/minimal-ui-hC8-_9_F.js.map +0 -1
- package/cdn/minimal-ui-lnw8AjaS.js +0 -2
- package/cdn/minimal-ui-lnw8AjaS.js.map +0 -1
- package/cdn/minimal-ui-yKur3jyD.js +0 -29
- package/cdn/minimal-ui-yKur3jyD.js.map +0 -1
- package/cdn/mux-BgWl50KW.js.map +0 -1
- package/cdn/mux-BhHIeG3e.js.map +0 -1
- package/cdn/native-hls-lhip4tV9.js +0 -123
- package/cdn/native-hls-lhip4tV9.js.map +0 -1
- package/cdn/native-hls-odPBXxK7.js +0 -2
- package/cdn/native-hls-odPBXxK7.js.map +0 -1
- package/cdn/player-B7jISTmQ.js +0 -2
- package/cdn/player-B7jISTmQ.js.map +0 -1
- package/cdn/player-ChdQN3H5.js +0 -2
- package/cdn/player-DX5Ka0vt.js.map +0 -1
- package/cdn/skin-element-D3iVinGP.js +0 -55
- package/cdn/skin-element-D3iVinGP.js.map +0 -1
- package/cdn/skin-element-DM82PPxz.js +0 -2
- package/cdn/skin-element-DM82PPxz.js.map +0 -1
- package/cdn/ui-BGvi0TNr.js +0 -2
- package/cdn/ui-BGvi0TNr.js.map +0 -1
- package/cdn/ui-BN57BxYZ.js +0 -2
- package/cdn/ui-BN57BxYZ.js.map +0 -1
- package/cdn/ui-CKR6dVbQ.js +0 -25
- package/cdn/ui-CKR6dVbQ.js.map +0 -1
- package/cdn/ui-CZ4yl3t3.js +0 -32
- package/cdn/ui-CZ4yl3t3.js.map +0 -1
- package/dist/default/_virtual/inline-css_src/define/base.js +0 -6
- package/dist/default/_virtual/inline-css_src/define/base.js.map +0 -1
- package/dist/dev/_virtual/inline-css_src/define/base.js +0 -6
- package/dist/dev/_virtual/inline-css_src/define/base.js.map +0 -1
- package/dist/dev/icons/dist/render/default/index.js +0 -30
- package/dist/dev/icons/dist/render/default/index.js.map +0 -1
- package/dist/dev/icons/dist/render/minimal/index.js +0 -30
- package/dist/dev/icons/dist/render/minimal/index.js.map +0 -1
- package/dist/dev/skins/dist/default/default/tailwind/audio.tailwind.js.map +0 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/buffering.js.map +0 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/button-group.js.map +0 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/button.js +0 -12
- package/dist/dev/skins/dist/default/default/tailwind/components/button.js.map +0 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/controls.js +0 -7
- package/dist/dev/skins/dist/default/default/tailwind/components/controls.js.map +0 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/error.js.map +0 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/icon.js +0 -9
- package/dist/dev/skins/dist/default/default/tailwind/components/icon.js.map +0 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/overlay.js.map +0 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/playback-rate.js +0 -6
- package/dist/dev/skins/dist/default/default/tailwind/components/playback-rate.js.map +0 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/popup.js.map +0 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/poster.js.map +0 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/preview.js.map +0 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/root.js +0 -7
- package/dist/dev/skins/dist/default/default/tailwind/components/root.js.map +0 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/seek.js.map +0 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/slider.js.map +0 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/surface.js.map +0 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/time.js.map +0 -1
- package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js.map +0 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/audio.tailwind.js.map +0 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/buffering.js.map +0 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/button-group.js.map +0 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/button.js +0 -12
- package/dist/dev/skins/dist/default/minimal/tailwind/components/button.js.map +0 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/controls.js +0 -7
- package/dist/dev/skins/dist/default/minimal/tailwind/components/controls.js.map +0 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/error.js.map +0 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/icon.js +0 -9
- package/dist/dev/skins/dist/default/minimal/tailwind/components/icon.js.map +0 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/overlay.js.map +0 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/playback-rate.js +0 -6
- package/dist/dev/skins/dist/default/minimal/tailwind/components/playback-rate.js.map +0 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/popup.js.map +0 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/poster.js.map +0 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/preview.js.map +0 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/root.js +0 -7
- package/dist/dev/skins/dist/default/minimal/tailwind/components/root.js.map +0 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/seek.js.map +0 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/slider.js.map +0 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/time.js.map +0 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js.map +0 -1
- package/dist/dev/skins/dist/default/shared/tailwind/icon-state.js.map +0 -1
- /package/dist/dev/{skins → packages/skins}/dist/default/default/tailwind/components/button-group.js +0 -0
- /package/dist/dev/{skins → packages/skins}/dist/default/default/tailwind/components/error.js +0 -0
- /package/dist/dev/{skins → packages/skins}/dist/default/default/tailwind/components/overlay.js +0 -0
- /package/dist/dev/{skins → packages/skins}/dist/default/default/tailwind/components/popup.js +0 -0
- /package/dist/dev/{skins → packages/skins}/dist/default/default/tailwind/components/poster.js +0 -0
- /package/dist/dev/{skins → packages/skins}/dist/default/default/tailwind/components/seek.js +0 -0
- /package/dist/dev/{skins → packages/skins}/dist/default/default/tailwind/components/surface.js +0 -0
- /package/dist/dev/{skins → packages/skins}/dist/default/default/tailwind/components/time.js +0 -0
- /package/dist/dev/{skins → packages/skins}/dist/default/minimal/tailwind/components/button-group.js +0 -0
- /package/dist/dev/{skins → packages/skins}/dist/default/minimal/tailwind/components/error.js +0 -0
- /package/dist/dev/{skins → packages/skins}/dist/default/minimal/tailwind/components/overlay.js +0 -0
- /package/dist/dev/{skins → packages/skins}/dist/default/minimal/tailwind/components/popup.js +0 -0
- /package/dist/dev/{skins → packages/skins}/dist/default/minimal/tailwind/components/poster.js +0 -0
- /package/dist/dev/{skins → packages/skins}/dist/default/minimal/tailwind/components/seek.js +0 -0
- /package/dist/dev/{skins → packages/skins}/dist/default/minimal/tailwind/components/time.js +0 -0
- /package/dist/dev/{skins → packages/skins}/dist/default/shared/tailwind/icon-state.js +0 -0
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { C as isMediaSeekCapable, D as noop, E as createState, F as isEditableTarget, I as isInteractiveActivation, M as ContextProvider, N as ContextConsumer, O as throwNoTargetError, S as isMediaBufferCapable, T as definePlayerFeature, _ as fullscreenFeature, b as getGestureCoordinator, c as volumeFeature, d as sourceFeature, f as remotePlaybackFeature, g as liveFeature, h as pipFeature, j as MediaElement, k as AbortControllerRegistry, l as timeFeature, m as playbackFeature, n as PlayerController, p as playbackRateFeature, r as SnapshotController, u as textTrackFeature, v as errorFeature, w as isMediaStreamTypeCapable, x as bufferFeature, y as controlsFeature } from "./create-player-_WED6HtK.js";
|
|
2
2
|
import { t as listen } from "./listen-CJT7C4kM.js";
|
|
3
3
|
import { n as kebabCase, t as pick } from "./pick-D-wCJ3iA.js";
|
|
4
|
-
import {
|
|
4
|
+
import { a as isString, f as safeDefine, l as playerContext, n as isNull, o as isUndefined, r as isNumber, s as containerContext, t as isFunction, u as createContext } from "./predicate-Dqd8wbW6.js";
|
|
5
|
+
import { t as MediaStreamTypes } from "./types-B_4Es-UH.js";
|
|
5
6
|
|
|
6
7
|
//#region ../utils/dist/dom/direction.js
|
|
7
8
|
/** Check whether an element's text direction is right-to-left. */
|
|
@@ -74,12 +75,23 @@ function resolveCSSLength(el, value) {
|
|
|
74
75
|
|
|
75
76
|
//#endregion
|
|
76
77
|
//#region ../core/dist/dev/core/ui/transition.js
|
|
78
|
+
/** Shared data attributes for open/close transition state. Spread into component data-attrs objects. */
|
|
79
|
+
const TransitionDataAttrs = {
|
|
80
|
+
transitionStarting: "data-starting-style",
|
|
81
|
+
transitionEnding: "data-ending-style"
|
|
82
|
+
};
|
|
77
83
|
function getTransitionFlags(status) {
|
|
78
84
|
return {
|
|
79
85
|
transitionStarting: status === "starting",
|
|
80
86
|
transitionEnding: status === "ending"
|
|
81
87
|
};
|
|
82
88
|
}
|
|
89
|
+
function getTransitionStyleAttrs({ transitionStarting, transitionEnding }) {
|
|
90
|
+
return {
|
|
91
|
+
[TransitionDataAttrs.transitionStarting]: transitionStarting ? "" : void 0,
|
|
92
|
+
[TransitionDataAttrs.transitionEnding]: transitionEnding ? "" : void 0
|
|
93
|
+
};
|
|
94
|
+
}
|
|
83
95
|
|
|
84
96
|
//#endregion
|
|
85
97
|
//#region ../core/dist/dev/core/ui/alert-dialog/alert-dialog-core.js
|
|
@@ -126,8 +138,7 @@ var AlertDialogCore = class {
|
|
|
126
138
|
//#region ../core/dist/dev/core/ui/alert-dialog/alert-dialog-data-attrs.js
|
|
127
139
|
const AlertDialogDataAttrs = {
|
|
128
140
|
open: "data-open",
|
|
129
|
-
|
|
130
|
-
transitionEnding: "data-ending-style"
|
|
141
|
+
...TransitionDataAttrs
|
|
131
142
|
};
|
|
132
143
|
|
|
133
144
|
//#endregion
|
|
@@ -264,152 +275,757 @@ var ErrorDialogCore = class extends AlertDialogCore {
|
|
|
264
275
|
};
|
|
265
276
|
|
|
266
277
|
//#endregion
|
|
267
|
-
//#region ../core/dist/dev/core/ui/
|
|
268
|
-
var
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
278
|
+
//#region ../core/dist/dev/core/ui/input-feedback/indicator-lifecycle.js
|
|
279
|
+
var IndicatorCloseController = class {
|
|
280
|
+
#timer = null;
|
|
281
|
+
#close;
|
|
282
|
+
#getDelay;
|
|
283
|
+
constructor(close, getDelay) {
|
|
284
|
+
this.#close = close;
|
|
285
|
+
this.#getDelay = getDelay;
|
|
286
|
+
}
|
|
287
|
+
arm() {
|
|
288
|
+
this.clear();
|
|
289
|
+
this.#timer = setTimeout(() => {
|
|
290
|
+
this.#timer = null;
|
|
291
|
+
this.#close();
|
|
292
|
+
}, this.#getDelay());
|
|
293
|
+
}
|
|
294
|
+
clear() {
|
|
295
|
+
if (this.#timer === null) return;
|
|
296
|
+
clearTimeout(this.#timer);
|
|
297
|
+
this.#timer = null;
|
|
298
|
+
}
|
|
299
|
+
close() {
|
|
300
|
+
this.clear();
|
|
301
|
+
this.#close();
|
|
282
302
|
}
|
|
283
|
-
|
|
284
|
-
this
|
|
303
|
+
destroy() {
|
|
304
|
+
this.clear();
|
|
285
305
|
}
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
return state.muted ? "Unmute" : "Mute";
|
|
306
|
+
};
|
|
307
|
+
var IndicatorVisibilityCoordinator = class {
|
|
308
|
+
#handles = /* @__PURE__ */ new Set();
|
|
309
|
+
register(handle) {
|
|
310
|
+
this.#handles.add(handle);
|
|
311
|
+
return () => this.#handles.delete(handle);
|
|
293
312
|
}
|
|
294
|
-
|
|
313
|
+
show(handle) {
|
|
314
|
+
for (const nextHandle of this.#handles) if (nextHandle !== handle) nextHandle.close();
|
|
315
|
+
}
|
|
316
|
+
};
|
|
317
|
+
function getIndicatorCloseDelay(props) {
|
|
318
|
+
return props.closeDelay ?? 800;
|
|
319
|
+
}
|
|
320
|
+
function isIndicatorPresent(current, transition) {
|
|
321
|
+
return current.open || transition.active;
|
|
322
|
+
}
|
|
323
|
+
function getRenderedIndicatorState(current, snapshot, transition) {
|
|
324
|
+
const payload = current.open ? current : snapshot;
|
|
325
|
+
return {
|
|
326
|
+
...payload,
|
|
327
|
+
open: current.open && transition.active,
|
|
328
|
+
generation: current.open ? current.generation : payload.generation,
|
|
329
|
+
...getTransitionFlags(transition.status)
|
|
330
|
+
};
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
//#endregion
|
|
334
|
+
//#region ../utils/dist/number/number.js
|
|
335
|
+
/** Clamp a value between min and max (inclusive). */
|
|
336
|
+
function clamp(value, min, max) {
|
|
337
|
+
return Math.max(min, Math.min(max, value));
|
|
338
|
+
}
|
|
339
|
+
/** Snap a value to the nearest step, offset from min. */
|
|
340
|
+
function roundToStep(value, step, min) {
|
|
341
|
+
const nearest = Math.round((value - min) / step) * step + min;
|
|
342
|
+
const dot = `${step}`.indexOf(".");
|
|
343
|
+
return dot === -1 ? nearest : Number(nearest.toFixed(`${step}`.length - dot - 1));
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
//#endregion
|
|
347
|
+
//#region ../utils/dist/time/format.js
|
|
348
|
+
const UNIT_LABELS = [
|
|
349
|
+
{
|
|
350
|
+
singular: "hour",
|
|
351
|
+
plural: "hours"
|
|
352
|
+
},
|
|
353
|
+
{
|
|
354
|
+
singular: "minute",
|
|
355
|
+
plural: "minutes"
|
|
356
|
+
},
|
|
357
|
+
{
|
|
358
|
+
singular: "second",
|
|
359
|
+
plural: "seconds"
|
|
360
|
+
}
|
|
361
|
+
];
|
|
362
|
+
function isValidTime(value) {
|
|
363
|
+
return isNumber(value) && Number.isFinite(value);
|
|
364
|
+
}
|
|
365
|
+
function toTimeUnitPhrase(value, unitIndex) {
|
|
366
|
+
return `${value} ${value === 1 ? UNIT_LABELS[unitIndex]?.singular : UNIT_LABELS[unitIndex]?.plural}`;
|
|
367
|
+
}
|
|
368
|
+
/**
|
|
369
|
+
* Format seconds to digital display string.
|
|
370
|
+
*
|
|
371
|
+
* @param seconds - Time in seconds (can be negative)
|
|
372
|
+
* @param guide - Guide time (typically duration) to determine display format
|
|
373
|
+
* @returns Formatted string like "1:30" or "1:05:30"
|
|
374
|
+
*
|
|
375
|
+
* @example
|
|
376
|
+
* formatTime(90) // "1:30"
|
|
377
|
+
* formatTime(3661) // "1:01:01"
|
|
378
|
+
* formatTime(35, 3600) // "0:00:35" (guided by 1-hour duration)
|
|
379
|
+
* formatTime(35, 600) // "00:35" (guided by 10-minute duration)
|
|
380
|
+
*/
|
|
381
|
+
function formatTime(seconds, guide) {
|
|
382
|
+
if (!isValidTime(seconds)) return "0:00";
|
|
383
|
+
const negative = seconds < 0;
|
|
384
|
+
const positiveSeconds = Math.abs(seconds);
|
|
385
|
+
const h = Math.floor(positiveSeconds / 3600);
|
|
386
|
+
const m = Math.floor(positiveSeconds / 60 % 60);
|
|
387
|
+
const s = Math.floor(positiveSeconds % 60);
|
|
388
|
+
const guideAbs = guide ? Math.abs(guide) : 0;
|
|
389
|
+
const gh = Math.floor(guideAbs / 3600);
|
|
390
|
+
const gm = Math.floor(guideAbs / 60 % 60);
|
|
391
|
+
const showHours = h > 0 || gh > 0;
|
|
392
|
+
const padMinutes = showHours || gm >= 10;
|
|
393
|
+
const hoursStr = showHours ? `${h}:` : "";
|
|
394
|
+
const minutesStr = `${padMinutes && m < 10 ? "0" : ""}${m}:`;
|
|
395
|
+
const secondsStr = s < 10 ? `0${s}` : `${s}`;
|
|
396
|
+
return `${negative ? "-" : ""}${hoursStr}${minutesStr}${secondsStr}`;
|
|
397
|
+
}
|
|
398
|
+
/**
|
|
399
|
+
* Format seconds to human-readable phrase for screen readers.
|
|
400
|
+
*
|
|
401
|
+
* @param seconds - Time in seconds (negative indicates remaining)
|
|
402
|
+
* @returns Human-readable phrase like "1 minute, 30 seconds"
|
|
403
|
+
*
|
|
404
|
+
* @example
|
|
405
|
+
* formatTimeAsPhrase(90) // "1 minute, 30 seconds"
|
|
406
|
+
* formatTimeAsPhrase(3661) // "1 hour, 1 minute, 1 second"
|
|
407
|
+
* formatTimeAsPhrase(-270) // "4 minutes, 30 seconds remaining"
|
|
408
|
+
*/
|
|
409
|
+
function formatTimeAsPhrase(seconds) {
|
|
410
|
+
if (!isValidTime(seconds)) return "";
|
|
411
|
+
const negative = seconds < 0;
|
|
412
|
+
const positiveSeconds = Math.abs(seconds);
|
|
413
|
+
const h = Math.floor(positiveSeconds / 3600);
|
|
414
|
+
const m = Math.floor(positiveSeconds / 60 % 60);
|
|
415
|
+
const s = Math.floor(positiveSeconds % 60);
|
|
416
|
+
if (positiveSeconds === 0) return `${toTimeUnitPhrase(0, 2)}${negative ? " remaining" : ""}`;
|
|
417
|
+
return `${[
|
|
418
|
+
h,
|
|
419
|
+
m,
|
|
420
|
+
s
|
|
421
|
+
].map((value, index) => value > 0 ? toTimeUnitPhrase(value, index) : null).filter(Boolean).join(", ")}${negative ? " remaining" : ""}`;
|
|
422
|
+
}
|
|
423
|
+
/**
|
|
424
|
+
* Convert seconds to ISO 8601 duration for datetime attribute.
|
|
425
|
+
*
|
|
426
|
+
* @param seconds - Time in seconds
|
|
427
|
+
* @returns ISO 8601 duration string like "PT1M30S"
|
|
428
|
+
*
|
|
429
|
+
* @example
|
|
430
|
+
* secondsToIsoDuration(90) // "PT1M30S"
|
|
431
|
+
* secondsToIsoDuration(3661) // "PT1H1M1S"
|
|
432
|
+
*/
|
|
433
|
+
function secondsToIsoDuration(seconds) {
|
|
434
|
+
if (!isValidTime(seconds)) return "PT0S";
|
|
435
|
+
const positiveSeconds = Math.abs(seconds);
|
|
436
|
+
const h = Math.floor(positiveSeconds / 3600);
|
|
437
|
+
const m = Math.floor(positiveSeconds / 60 % 60);
|
|
438
|
+
const s = Math.floor(positiveSeconds % 60);
|
|
439
|
+
let duration = "PT";
|
|
440
|
+
if (h > 0) duration += `${h}H`;
|
|
441
|
+
if (m > 0) duration += `${m}M`;
|
|
442
|
+
if (s > 0 || duration === "PT") duration += `${s}S`;
|
|
443
|
+
return duration;
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
//#endregion
|
|
447
|
+
//#region ../core/dist/dev/core/ui/input-feedback/status.js
|
|
448
|
+
const DEFAULT_INPUT_INDICATOR_LABELS = {
|
|
449
|
+
muted: "Muted",
|
|
450
|
+
volume: "Volume",
|
|
451
|
+
captionsOn: "Captions on",
|
|
452
|
+
captionsOff: "Captions off",
|
|
453
|
+
paused: "Paused",
|
|
454
|
+
playing: "Playing",
|
|
455
|
+
fullscreen: "Fullscreen",
|
|
456
|
+
exitFullscreen: "Exit fullscreen",
|
|
457
|
+
pictureInPicture: "Picture in picture",
|
|
458
|
+
exitPictureInPicture: "Exit picture in picture"
|
|
459
|
+
};
|
|
460
|
+
function isVolumeIndicatorAction(action) {
|
|
461
|
+
return action === "toggleMuted" || action === "volumeStep";
|
|
462
|
+
}
|
|
463
|
+
function isSeekIndicatorAction(action) {
|
|
464
|
+
return action === "seekStep" || action === "seekToPercent";
|
|
465
|
+
}
|
|
466
|
+
function deriveStatus(event, snapshot, labels = DEFAULT_INPUT_INDICATOR_LABELS) {
|
|
467
|
+
switch (event.action) {
|
|
468
|
+
case "togglePaused": {
|
|
469
|
+
const paused = snapshot.paused !== void 0 ? !snapshot.paused : true;
|
|
470
|
+
return {
|
|
471
|
+
status: paused ? "pause" : "play",
|
|
472
|
+
label: paused ? labels.paused : labels.playing,
|
|
473
|
+
value: null,
|
|
474
|
+
volumeLevel: null
|
|
475
|
+
};
|
|
476
|
+
}
|
|
477
|
+
case "toggleMuted":
|
|
478
|
+
case "volumeStep": return deriveVolumeStatus(event, snapshot, labels);
|
|
479
|
+
case "toggleSubtitles": {
|
|
480
|
+
const showing = snapshot.subtitlesShowing !== void 0 ? !snapshot.subtitlesShowing : true;
|
|
481
|
+
return {
|
|
482
|
+
status: showing ? "captions-on" : "captions-off",
|
|
483
|
+
label: showing ? labels.captionsOn : labels.captionsOff,
|
|
484
|
+
value: null,
|
|
485
|
+
volumeLevel: null
|
|
486
|
+
};
|
|
487
|
+
}
|
|
488
|
+
case "toggleFullscreen": {
|
|
489
|
+
const fullscreen = snapshot.fullscreen !== void 0 ? !snapshot.fullscreen : true;
|
|
490
|
+
return {
|
|
491
|
+
status: fullscreen ? "fullscreen" : "exit-fullscreen",
|
|
492
|
+
label: fullscreen ? labels.fullscreen : labels.exitFullscreen,
|
|
493
|
+
value: null,
|
|
494
|
+
volumeLevel: null
|
|
495
|
+
};
|
|
496
|
+
}
|
|
497
|
+
case "togglePictureInPicture": {
|
|
498
|
+
const pip = snapshot.pip !== void 0 ? !snapshot.pip : true;
|
|
499
|
+
return {
|
|
500
|
+
status: pip ? "pip" : "exit-pip",
|
|
501
|
+
label: pip ? labels.pictureInPicture : labels.exitPictureInPicture,
|
|
502
|
+
value: null,
|
|
503
|
+
volumeLevel: null
|
|
504
|
+
};
|
|
505
|
+
}
|
|
506
|
+
default: return null;
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
function deriveAnnouncerLabel(event, snapshot, labels = DEFAULT_INPUT_INDICATOR_LABELS) {
|
|
510
|
+
const details = deriveStatus(event, snapshot, labels);
|
|
511
|
+
if (!details) return null;
|
|
512
|
+
if (isVolumeIndicatorAction(event.action)) return details.status === "volume-off" ? labels.muted : `${labels.volume} ${details.value}`;
|
|
513
|
+
return details.label;
|
|
514
|
+
}
|
|
515
|
+
function getVolumeLevel$1(volume) {
|
|
516
|
+
if (volume <= 0) return "off";
|
|
517
|
+
return volume <= .5 ? "low" : "high";
|
|
518
|
+
}
|
|
519
|
+
function formatVolumeValue(volume) {
|
|
520
|
+
return `${Math.round(clamp(volume, 0, 1) * 100)}%`;
|
|
521
|
+
}
|
|
522
|
+
function formatCurrentTime(snapshot) {
|
|
523
|
+
return formatTime(snapshot.currentTime ?? 0, snapshot.duration);
|
|
524
|
+
}
|
|
525
|
+
function getStatusIndicatorDisplayValue(state) {
|
|
526
|
+
return state.value ?? state.label ?? "";
|
|
527
|
+
}
|
|
528
|
+
function getVolumeIndicatorDisplayValue(state) {
|
|
529
|
+
return state.value ?? "";
|
|
530
|
+
}
|
|
531
|
+
function getSeekIndicatorDisplayValue(state) {
|
|
532
|
+
return state.value ?? state.currentTime;
|
|
533
|
+
}
|
|
534
|
+
function getSeekToPercent(event) {
|
|
535
|
+
if (event.value !== void 0) return clamp(event.value, 0, 100);
|
|
536
|
+
if (!event.key || event.key < "0" || event.key > "9") return null;
|
|
537
|
+
return Number(event.key) * 10;
|
|
538
|
+
}
|
|
539
|
+
function getSeekDirection(event, snapshot) {
|
|
540
|
+
if (event.action === "seekStep" && event.value !== void 0) {
|
|
541
|
+
if (event.value > 0) return "forward";
|
|
542
|
+
if (event.value < 0) return "backward";
|
|
543
|
+
}
|
|
544
|
+
if (event.action === "seekToPercent") {
|
|
545
|
+
const percent = getSeekToPercent(event);
|
|
546
|
+
if (percent === null || snapshot.duration === void 0 || snapshot.duration <= 0) return null;
|
|
547
|
+
const targetTime = percent / 100 * snapshot.duration;
|
|
548
|
+
const currentTime = snapshot.currentTime ?? 0;
|
|
549
|
+
if (targetTime > currentTime) return "forward";
|
|
550
|
+
if (targetTime < currentTime) return "backward";
|
|
551
|
+
}
|
|
552
|
+
return null;
|
|
553
|
+
}
|
|
554
|
+
function isInputActionIncluded(action, actions) {
|
|
555
|
+
if (!action) return false;
|
|
556
|
+
return !actions || actions.includes(action);
|
|
557
|
+
}
|
|
558
|
+
function predictVolumeActionOutcome(event, snapshot) {
|
|
559
|
+
const muted = snapshot.muted === true;
|
|
560
|
+
const snapshotVolume = snapshot.volume ?? 0;
|
|
561
|
+
if (event.action === "toggleMuted") return {
|
|
562
|
+
snapshotVolume,
|
|
563
|
+
nextMuted: !muted,
|
|
564
|
+
nextVolume: snapshotVolume
|
|
565
|
+
};
|
|
566
|
+
if (event.action === "volumeStep") {
|
|
567
|
+
const nextVolume = clamp(snapshotVolume + (event.value ?? 0), 0, 1);
|
|
295
568
|
return {
|
|
296
|
-
|
|
297
|
-
|
|
569
|
+
snapshotVolume,
|
|
570
|
+
nextMuted: muted && nextVolume <= 0,
|
|
571
|
+
nextVolume
|
|
298
572
|
};
|
|
299
573
|
}
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
574
|
+
return {
|
|
575
|
+
snapshotVolume,
|
|
576
|
+
nextMuted: muted,
|
|
577
|
+
nextVolume: snapshotVolume
|
|
578
|
+
};
|
|
579
|
+
}
|
|
580
|
+
function volumePredictionToStatusDetails(prediction, labels) {
|
|
581
|
+
const level = prediction.nextMuted ? "off" : getVolumeLevel$1(prediction.nextVolume);
|
|
582
|
+
const value = prediction.nextMuted ? "0%" : formatVolumeValue(prediction.nextVolume);
|
|
583
|
+
return {
|
|
584
|
+
status: level === "off" ? "volume-off" : level === "low" ? "volume-low" : "volume-high",
|
|
585
|
+
label: level === "off" ? labels.muted : labels.volume,
|
|
586
|
+
value,
|
|
587
|
+
volumeLevel: level
|
|
588
|
+
};
|
|
589
|
+
}
|
|
590
|
+
/** Labels/value/level for volume actions — single source shared with `VolumeIndicatorCore`. */
|
|
591
|
+
function deriveVolumeStatus(event, snapshot, labels = DEFAULT_INPUT_INDICATOR_LABELS, cachedPrediction) {
|
|
592
|
+
return volumePredictionToStatusDetails(cachedPrediction ?? predictVolumeActionOutcome(event, snapshot), labels);
|
|
593
|
+
}
|
|
594
|
+
|
|
595
|
+
//#endregion
|
|
596
|
+
//#region ../core/dist/dev/core/ui/input-feedback/seek-indicator-core.js
|
|
597
|
+
const INITIAL_STATE$2 = {
|
|
598
|
+
open: false,
|
|
599
|
+
generation: 0,
|
|
600
|
+
direction: null,
|
|
601
|
+
count: 0,
|
|
602
|
+
seekTotal: 0,
|
|
603
|
+
value: null,
|
|
604
|
+
currentTime: "0:00",
|
|
605
|
+
transitionStarting: false,
|
|
606
|
+
transitionEnding: false
|
|
607
|
+
};
|
|
608
|
+
var SeekIndicatorCore = class {
|
|
609
|
+
state = createState({ ...INITIAL_STATE$2 });
|
|
610
|
+
#props = {};
|
|
611
|
+
#originTime = null;
|
|
612
|
+
#close = new IndicatorCloseController(() => {
|
|
613
|
+
this.#originTime = null;
|
|
305
614
|
this.state.patch({
|
|
306
|
-
|
|
307
|
-
|
|
615
|
+
open: false,
|
|
616
|
+
direction: null,
|
|
617
|
+
count: 0,
|
|
618
|
+
seekTotal: 0,
|
|
619
|
+
value: null
|
|
308
620
|
});
|
|
309
|
-
|
|
310
|
-
|
|
621
|
+
}, () => getIndicatorCloseDelay(this.#props));
|
|
622
|
+
setProps(props) {
|
|
623
|
+
this.#props = props;
|
|
311
624
|
}
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
625
|
+
destroy() {
|
|
626
|
+
this.#close.destroy();
|
|
627
|
+
}
|
|
628
|
+
close() {
|
|
629
|
+
this.#close.close();
|
|
630
|
+
}
|
|
631
|
+
processEvent(event, snapshot) {
|
|
632
|
+
if (!isSeekIndicatorAction(event.action)) return false;
|
|
633
|
+
const current = this.state.current;
|
|
634
|
+
const direction = getSeekDirection(event, snapshot);
|
|
635
|
+
const rapidRepeat = current.open && event.action === "seekStep" && current.direction === direction;
|
|
636
|
+
if (!rapidRepeat) this.#originTime = snapshot.currentTime ?? null;
|
|
637
|
+
const value = this.#getEffectiveSeekValue(event, snapshot, rapidRepeat);
|
|
638
|
+
const seekTotal = rapidRepeat ? current.seekTotal + Math.abs(value) : Math.abs(value);
|
|
639
|
+
this.state.patch({
|
|
640
|
+
open: true,
|
|
641
|
+
generation: current.generation + 1,
|
|
642
|
+
direction,
|
|
643
|
+
count: rapidRepeat ? current.count + 1 : 1,
|
|
644
|
+
seekTotal,
|
|
645
|
+
value: event.action === "seekStep" && seekTotal > 0 ? `${seekTotal}s` : null,
|
|
646
|
+
currentTime: formatCurrentTime(snapshot)
|
|
647
|
+
});
|
|
648
|
+
this.#close.arm();
|
|
649
|
+
return true;
|
|
650
|
+
}
|
|
651
|
+
#getEffectiveSeekValue(event, snapshot, rapidRepeat) {
|
|
652
|
+
if (event.action !== "seekStep" || event.value === void 0) return 0;
|
|
653
|
+
if (!rapidRepeat || this.#originTime === null) return event.value;
|
|
654
|
+
const originTime = this.#originTime;
|
|
655
|
+
const duration = snapshot.duration ?? Infinity;
|
|
656
|
+
const currentTotal = this.state.current.seekTotal;
|
|
657
|
+
const step = Math.abs(event.value);
|
|
658
|
+
return (event.value < 0 ? Math.max(0, originTime - currentTotal) : Math.max(0, duration - originTime - currentTotal)) >= step ? event.value : 0;
|
|
315
659
|
}
|
|
316
660
|
};
|
|
317
|
-
function getVolumeLevel(media) {
|
|
318
|
-
if (media.muted || media.volume === 0) return "off";
|
|
319
|
-
if (media.volume < .5) return "low";
|
|
320
|
-
if (media.volume < .75) return "medium";
|
|
321
|
-
return "high";
|
|
322
|
-
}
|
|
323
661
|
|
|
324
662
|
//#endregion
|
|
325
|
-
//#region ../core/dist/dev/core/ui/
|
|
326
|
-
const
|
|
327
|
-
|
|
328
|
-
|
|
663
|
+
//#region ../core/dist/dev/core/ui/input-feedback/seek-indicator-data-attrs.js
|
|
664
|
+
const SeekIndicatorDataAttrs = {
|
|
665
|
+
open: "data-open",
|
|
666
|
+
direction: "data-direction",
|
|
667
|
+
transitionStarting: "data-starting-style",
|
|
668
|
+
transitionEnding: "data-ending-style"
|
|
329
669
|
};
|
|
330
670
|
|
|
331
671
|
//#endregion
|
|
332
|
-
//#region ../core/dist/dev/core/ui/
|
|
333
|
-
var
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
};
|
|
338
|
-
state = createState({
|
|
339
|
-
paused: true,
|
|
340
|
-
ended: false,
|
|
341
|
-
started: false,
|
|
342
|
-
label: ""
|
|
343
|
-
});
|
|
344
|
-
#props = { ...PlayButtonCore.defaultProps };
|
|
345
|
-
#media = null;
|
|
346
|
-
constructor(props) {
|
|
347
|
-
if (props) this.setProps(props);
|
|
348
|
-
}
|
|
672
|
+
//#region ../core/dist/dev/core/ui/input-feedback/status-announcer-core.js
|
|
673
|
+
var StatusAnnouncerCore = class {
|
|
674
|
+
state = createState({ label: null });
|
|
675
|
+
#props = {};
|
|
676
|
+
#close = new IndicatorCloseController(() => this.state.patch({ label: null }), () => getIndicatorCloseDelay(this.#props));
|
|
349
677
|
setProps(props) {
|
|
350
|
-
this.#props =
|
|
678
|
+
this.#props = props;
|
|
351
679
|
}
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
if (isFunction(label)) {
|
|
355
|
-
const customLabel = label(state);
|
|
356
|
-
if (customLabel) return customLabel;
|
|
357
|
-
} else if (label) return label;
|
|
358
|
-
if (state.ended) return "Replay";
|
|
359
|
-
return state.paused ? "Play" : "Pause";
|
|
680
|
+
destroy() {
|
|
681
|
+
this.#close.destroy();
|
|
360
682
|
}
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
};
|
|
683
|
+
processEvent(event, snapshot) {
|
|
684
|
+
const label = deriveAnnouncerLabel(event, snapshot, {
|
|
685
|
+
...DEFAULT_INPUT_INDICATOR_LABELS,
|
|
686
|
+
...this.#props.labels
|
|
687
|
+
});
|
|
688
|
+
if (!label) return false;
|
|
689
|
+
this.state.patch({ label });
|
|
690
|
+
this.#close.arm();
|
|
691
|
+
return true;
|
|
366
692
|
}
|
|
367
|
-
|
|
693
|
+
};
|
|
694
|
+
|
|
695
|
+
//#endregion
|
|
696
|
+
//#region ../core/dist/dev/core/ui/input-feedback/status-indicator-core.js
|
|
697
|
+
const INITIAL_STATE$1 = {
|
|
698
|
+
open: false,
|
|
699
|
+
generation: 0,
|
|
700
|
+
status: null,
|
|
701
|
+
label: null,
|
|
702
|
+
value: null,
|
|
703
|
+
transitionStarting: false,
|
|
704
|
+
transitionEnding: false
|
|
705
|
+
};
|
|
706
|
+
var StatusIndicatorCore = class {
|
|
707
|
+
state = createState({ ...INITIAL_STATE$1 });
|
|
708
|
+
#props = {};
|
|
709
|
+
#close = new IndicatorCloseController(() => this.state.patch({
|
|
710
|
+
open: false,
|
|
711
|
+
status: null,
|
|
712
|
+
label: null,
|
|
713
|
+
value: null
|
|
714
|
+
}), () => getIndicatorCloseDelay(this.#props));
|
|
715
|
+
setProps(props) {
|
|
716
|
+
this.#props = props;
|
|
717
|
+
}
|
|
718
|
+
destroy() {
|
|
719
|
+
this.#close.destroy();
|
|
720
|
+
}
|
|
721
|
+
close() {
|
|
722
|
+
this.#close.close();
|
|
723
|
+
}
|
|
724
|
+
processEvent(event, snapshot) {
|
|
725
|
+
if (!isInputActionIncluded(event.action, this.#props.actions)) return false;
|
|
726
|
+
const details = deriveStatus(event, snapshot, {
|
|
727
|
+
...DEFAULT_INPUT_INDICATOR_LABELS,
|
|
728
|
+
...this.#props.labels
|
|
729
|
+
});
|
|
730
|
+
if (!details) return false;
|
|
731
|
+
this.state.patch({
|
|
732
|
+
open: true,
|
|
733
|
+
generation: this.state.current.generation + 1,
|
|
734
|
+
status: details.status,
|
|
735
|
+
label: details.label,
|
|
736
|
+
value: details.value
|
|
737
|
+
});
|
|
738
|
+
this.#close.arm();
|
|
739
|
+
return true;
|
|
740
|
+
}
|
|
741
|
+
};
|
|
742
|
+
|
|
743
|
+
//#endregion
|
|
744
|
+
//#region ../core/dist/dev/core/ui/input-feedback/status-indicator-data-attrs.js
|
|
745
|
+
const StatusIndicatorDataAttrs = {
|
|
746
|
+
open: "data-open",
|
|
747
|
+
status: "data-status",
|
|
748
|
+
transitionStarting: "data-starting-style",
|
|
749
|
+
transitionEnding: "data-ending-style"
|
|
750
|
+
};
|
|
751
|
+
|
|
752
|
+
//#endregion
|
|
753
|
+
//#region ../core/dist/dev/core/ui/input-feedback/volume-indicator-core.js
|
|
754
|
+
const BOUNDARY_CLEAR_DELAY = 300;
|
|
755
|
+
const INITIAL_STATE = {
|
|
756
|
+
open: false,
|
|
757
|
+
generation: 0,
|
|
758
|
+
level: null,
|
|
759
|
+
value: null,
|
|
760
|
+
fill: null,
|
|
761
|
+
min: false,
|
|
762
|
+
max: false,
|
|
763
|
+
transitionStarting: false,
|
|
764
|
+
transitionEnding: false
|
|
765
|
+
};
|
|
766
|
+
var VolumeIndicatorCore = class {
|
|
767
|
+
state = createState({ ...INITIAL_STATE });
|
|
768
|
+
#props = {};
|
|
769
|
+
#boundaryTimer = null;
|
|
770
|
+
#boundaryRestartTimer = null;
|
|
771
|
+
#close = new IndicatorCloseController(() => this.state.patch({
|
|
772
|
+
open: false,
|
|
773
|
+
level: null,
|
|
774
|
+
value: null,
|
|
775
|
+
fill: null,
|
|
776
|
+
min: false,
|
|
777
|
+
max: false
|
|
778
|
+
}), () => getIndicatorCloseDelay(this.#props));
|
|
779
|
+
setProps(props) {
|
|
780
|
+
this.#props = props;
|
|
781
|
+
}
|
|
782
|
+
destroy() {
|
|
783
|
+
this.#close.destroy();
|
|
784
|
+
this.#clearBoundaryTimers();
|
|
785
|
+
}
|
|
786
|
+
close() {
|
|
787
|
+
this.#clearBoundaryTimers();
|
|
788
|
+
this.#close.close();
|
|
789
|
+
}
|
|
790
|
+
processEvent(event, snapshot) {
|
|
791
|
+
if (!isVolumeIndicatorAction(event.action)) return false;
|
|
792
|
+
const current = this.state.current;
|
|
793
|
+
const prediction = predictVolumeActionOutcome(event, snapshot);
|
|
794
|
+
const details = deriveVolumeStatus(event, snapshot, DEFAULT_INPUT_INDICATOR_LABELS, prediction);
|
|
795
|
+
const boundary = getVolumeBoundary(event, prediction.snapshotVolume, prediction.nextVolume);
|
|
796
|
+
const repeatedBoundary = boundary !== null && current[boundary] === true;
|
|
797
|
+
if (!boundary) this.#clearBoundaryTimers();
|
|
798
|
+
this.state.patch({
|
|
799
|
+
open: true,
|
|
800
|
+
generation: current.generation + 1,
|
|
801
|
+
level: details.volumeLevel,
|
|
802
|
+
value: details.value,
|
|
803
|
+
fill: details.value,
|
|
804
|
+
min: boundary === "min" && !repeatedBoundary,
|
|
805
|
+
max: boundary === "max" && !repeatedBoundary
|
|
806
|
+
});
|
|
807
|
+
if (boundary) if (repeatedBoundary) this.#restartBoundary(boundary);
|
|
808
|
+
else this.#scheduleBoundaryClear();
|
|
809
|
+
this.#close.arm();
|
|
810
|
+
return true;
|
|
811
|
+
}
|
|
812
|
+
#scheduleBoundaryClear() {
|
|
813
|
+
this.#clearBoundaryTimer();
|
|
814
|
+
this.#boundaryTimer = setTimeout(() => {
|
|
815
|
+
this.#boundaryTimer = null;
|
|
816
|
+
this.state.patch({
|
|
817
|
+
min: false,
|
|
818
|
+
max: false
|
|
819
|
+
});
|
|
820
|
+
}, BOUNDARY_CLEAR_DELAY);
|
|
821
|
+
}
|
|
822
|
+
#restartBoundary(boundary) {
|
|
823
|
+
this.#clearBoundaryTimers();
|
|
824
|
+
this.state.patch({
|
|
825
|
+
min: false,
|
|
826
|
+
max: false
|
|
827
|
+
});
|
|
828
|
+
this.#boundaryRestartTimer = setTimeout(() => {
|
|
829
|
+
this.#boundaryRestartTimer = null;
|
|
830
|
+
this.state.patch({ [boundary]: true });
|
|
831
|
+
this.#scheduleBoundaryClear();
|
|
832
|
+
}, 0);
|
|
833
|
+
}
|
|
834
|
+
#clearBoundaryTimer() {
|
|
835
|
+
if (this.#boundaryTimer === null) return;
|
|
836
|
+
clearTimeout(this.#boundaryTimer);
|
|
837
|
+
this.#boundaryTimer = null;
|
|
838
|
+
}
|
|
839
|
+
#clearBoundaryRestartTimer() {
|
|
840
|
+
if (this.#boundaryRestartTimer === null) return;
|
|
841
|
+
clearTimeout(this.#boundaryRestartTimer);
|
|
842
|
+
this.#boundaryRestartTimer = null;
|
|
843
|
+
}
|
|
844
|
+
#clearBoundaryTimers() {
|
|
845
|
+
this.#clearBoundaryTimer();
|
|
846
|
+
this.#clearBoundaryRestartTimer();
|
|
847
|
+
}
|
|
848
|
+
};
|
|
849
|
+
function getVolumeBoundary(event, currentVolume, nextVolume) {
|
|
850
|
+
if (event.action !== "volumeStep" || event.value === void 0 || event.value === 0) return null;
|
|
851
|
+
if (nextVolume !== currentVolume) return null;
|
|
852
|
+
return event.value < 0 ? "min" : "max";
|
|
853
|
+
}
|
|
854
|
+
|
|
855
|
+
//#endregion
|
|
856
|
+
//#region ../core/dist/dev/core/ui/input-feedback/volume-indicator-css-vars.js
|
|
857
|
+
const VolumeIndicatorCSSVars = { fill: "--media-volume-fill" };
|
|
858
|
+
|
|
859
|
+
//#endregion
|
|
860
|
+
//#region ../core/dist/dev/core/ui/input-feedback/volume-indicator-data-attrs.js
|
|
861
|
+
const VolumeIndicatorDataAttrs = {
|
|
862
|
+
open: "data-open",
|
|
863
|
+
level: "data-level",
|
|
864
|
+
min: "data-min",
|
|
865
|
+
max: "data-max",
|
|
866
|
+
transitionStarting: "data-starting-style",
|
|
867
|
+
transitionEnding: "data-ending-style"
|
|
868
|
+
};
|
|
869
|
+
|
|
870
|
+
//#endregion
|
|
871
|
+
//#region ../core/dist/dev/core/ui/menu/menu-core.js
|
|
872
|
+
/** Base menu logic: ARIA attributes and open/close state computation. */
|
|
873
|
+
var MenuCore = class MenuCore {
|
|
874
|
+
static defaultProps = {
|
|
875
|
+
side: "bottom",
|
|
876
|
+
align: "start",
|
|
877
|
+
open: false,
|
|
878
|
+
defaultOpen: false,
|
|
879
|
+
closeOnEscape: true,
|
|
880
|
+
closeOnOutsideClick: true,
|
|
881
|
+
isSubmenu: false
|
|
882
|
+
};
|
|
883
|
+
#props = { ...MenuCore.defaultProps };
|
|
884
|
+
#input = null;
|
|
885
|
+
get props() {
|
|
886
|
+
return this.#props;
|
|
887
|
+
}
|
|
888
|
+
constructor(props) {
|
|
889
|
+
if (props) this.setProps(props);
|
|
890
|
+
}
|
|
891
|
+
setProps(props) {
|
|
892
|
+
this.#props = defaults(props, MenuCore.defaultProps);
|
|
893
|
+
}
|
|
894
|
+
setInput(input) {
|
|
895
|
+
this.#input = input;
|
|
896
|
+
}
|
|
897
|
+
getState() {
|
|
898
|
+
const input = this.#input;
|
|
899
|
+
const isSubmenu = this.#props.isSubmenu;
|
|
900
|
+
return {
|
|
901
|
+
open: input.active,
|
|
902
|
+
status: input.status,
|
|
903
|
+
side: isSubmenu ? void 0 : this.#props.side,
|
|
904
|
+
align: isSubmenu ? void 0 : this.#props.align,
|
|
905
|
+
isSubmenu,
|
|
906
|
+
...getTransitionFlags(input.status)
|
|
907
|
+
};
|
|
908
|
+
}
|
|
909
|
+
getTriggerAttrs(state, contentId) {
|
|
910
|
+
return {
|
|
911
|
+
"aria-haspopup": "menu",
|
|
912
|
+
"aria-expanded": state.open ? "true" : "false",
|
|
913
|
+
"aria-controls": contentId
|
|
914
|
+
};
|
|
915
|
+
}
|
|
916
|
+
getContentAttrs(state) {
|
|
917
|
+
return {
|
|
918
|
+
role: "menu",
|
|
919
|
+
tabIndex: -1,
|
|
920
|
+
...!state.isSubmenu && { popover: "manual" }
|
|
921
|
+
};
|
|
922
|
+
}
|
|
923
|
+
};
|
|
924
|
+
|
|
925
|
+
//#endregion
|
|
926
|
+
//#region ../core/dist/dev/core/ui/menu/menu-data-attrs.js
|
|
927
|
+
/** Data attributes set on the menu Content element and inherited by all children. */
|
|
928
|
+
const MenuDataAttrs = {
|
|
929
|
+
open: "data-open",
|
|
930
|
+
side: "data-side",
|
|
931
|
+
align: "data-align",
|
|
932
|
+
isSubmenu: "data-submenu",
|
|
933
|
+
...TransitionDataAttrs
|
|
934
|
+
};
|
|
935
|
+
|
|
936
|
+
//#endregion
|
|
937
|
+
//#region ../core/dist/dev/core/ui/menu/menu-item-data-attrs.js
|
|
938
|
+
/** Data attributes set on all navigable menu item elements. */
|
|
939
|
+
const MenuItemDataAttrs = {
|
|
940
|
+
item: "data-item",
|
|
941
|
+
highlighted: "data-highlighted"
|
|
942
|
+
};
|
|
943
|
+
|
|
944
|
+
//#endregion
|
|
945
|
+
//#region ../core/dist/dev/core/ui/mute-button/mute-button-core.js
|
|
946
|
+
var MuteButtonCore = class MuteButtonCore {
|
|
947
|
+
static defaultProps = {
|
|
948
|
+
label: "",
|
|
949
|
+
disabled: false
|
|
950
|
+
};
|
|
951
|
+
state = createState({
|
|
952
|
+
muted: false,
|
|
953
|
+
volumeLevel: "off",
|
|
954
|
+
label: ""
|
|
955
|
+
});
|
|
956
|
+
#props = { ...MuteButtonCore.defaultProps };
|
|
957
|
+
#media = null;
|
|
958
|
+
constructor(props) {
|
|
959
|
+
if (props) this.setProps(props);
|
|
960
|
+
}
|
|
961
|
+
setProps(props) {
|
|
962
|
+
this.#props = defaults(props, MuteButtonCore.defaultProps);
|
|
963
|
+
}
|
|
964
|
+
getLabel(state) {
|
|
965
|
+
const { label } = this.#props;
|
|
966
|
+
if (isFunction(label)) {
|
|
967
|
+
const customLabel = label(state);
|
|
968
|
+
if (customLabel) return customLabel;
|
|
969
|
+
} else if (label) return label;
|
|
970
|
+
return state.muted ? "Unmute" : "Mute";
|
|
971
|
+
}
|
|
972
|
+
getAttrs(state) {
|
|
973
|
+
return {
|
|
974
|
+
"aria-label": this.getLabel(state),
|
|
975
|
+
"aria-disabled": this.#props.disabled ? "true" : void 0
|
|
976
|
+
};
|
|
977
|
+
}
|
|
978
|
+
setMedia(media) {
|
|
368
979
|
this.#media = media;
|
|
369
980
|
}
|
|
370
981
|
getState() {
|
|
371
982
|
const media = this.#media;
|
|
372
983
|
this.state.patch({
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
started: media.started
|
|
984
|
+
muted: media.muted || media.volume === 0,
|
|
985
|
+
volumeLevel: getVolumeLevel(media)
|
|
376
986
|
});
|
|
377
987
|
this.state.patch({ label: this.getLabel(this.state.current) });
|
|
378
988
|
return this.state.current;
|
|
379
989
|
}
|
|
380
|
-
|
|
990
|
+
toggle(media) {
|
|
381
991
|
if (this.#props.disabled) return;
|
|
382
|
-
|
|
383
|
-
media.pause();
|
|
992
|
+
media.toggleMuted();
|
|
384
993
|
}
|
|
385
994
|
};
|
|
995
|
+
function getVolumeLevel(media) {
|
|
996
|
+
if (media.muted || media.volume === 0) return "off";
|
|
997
|
+
if (media.volume < .5) return "low";
|
|
998
|
+
if (media.volume < .75) return "medium";
|
|
999
|
+
return "high";
|
|
1000
|
+
}
|
|
386
1001
|
|
|
387
1002
|
//#endregion
|
|
388
|
-
//#region ../core/dist/dev/core/ui/
|
|
389
|
-
const
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
started: "data-started"
|
|
1003
|
+
//#region ../core/dist/dev/core/ui/mute-button/mute-button-data-attrs.js
|
|
1004
|
+
const MuteButtonDataAttrs = {
|
|
1005
|
+
muted: "data-muted",
|
|
1006
|
+
volumeLevel: "data-volume-level"
|
|
393
1007
|
};
|
|
394
1008
|
|
|
395
1009
|
//#endregion
|
|
396
|
-
//#region ../core/dist/dev/core/ui/
|
|
397
|
-
var
|
|
1010
|
+
//#region ../core/dist/dev/core/ui/play-button/play-button-core.js
|
|
1011
|
+
var PlayButtonCore = class PlayButtonCore {
|
|
398
1012
|
static defaultProps = {
|
|
399
1013
|
label: "",
|
|
400
1014
|
disabled: false
|
|
401
1015
|
};
|
|
402
1016
|
state = createState({
|
|
403
|
-
|
|
1017
|
+
paused: true,
|
|
1018
|
+
ended: false,
|
|
1019
|
+
started: false,
|
|
404
1020
|
label: ""
|
|
405
1021
|
});
|
|
406
|
-
#props = { ...
|
|
1022
|
+
#props = { ...PlayButtonCore.defaultProps };
|
|
407
1023
|
#media = null;
|
|
408
1024
|
constructor(props) {
|
|
409
1025
|
if (props) this.setProps(props);
|
|
410
1026
|
}
|
|
411
1027
|
setProps(props) {
|
|
412
|
-
this.#props = defaults(props,
|
|
1028
|
+
this.#props = defaults(props, PlayButtonCore.defaultProps);
|
|
413
1029
|
}
|
|
414
1030
|
getLabel(state) {
|
|
415
1031
|
const { label } = this.#props;
|
|
@@ -417,7 +1033,8 @@ var PlaybackRateButtonCore = class PlaybackRateButtonCore {
|
|
|
417
1033
|
const customLabel = label(state);
|
|
418
1034
|
if (customLabel) return customLabel;
|
|
419
1035
|
} else if (label) return label;
|
|
420
|
-
|
|
1036
|
+
if (state.ended) return "Replay";
|
|
1037
|
+
return state.paused ? "Play" : "Pause";
|
|
421
1038
|
}
|
|
422
1039
|
getAttrs(state) {
|
|
423
1040
|
return {
|
|
@@ -430,23 +1047,28 @@ var PlaybackRateButtonCore = class PlaybackRateButtonCore {
|
|
|
430
1047
|
}
|
|
431
1048
|
getState() {
|
|
432
1049
|
const media = this.#media;
|
|
433
|
-
this.state.patch({
|
|
1050
|
+
this.state.patch({
|
|
1051
|
+
paused: media.paused,
|
|
1052
|
+
ended: media.ended,
|
|
1053
|
+
started: media.started
|
|
1054
|
+
});
|
|
434
1055
|
this.state.patch({ label: this.getLabel(this.state.current) });
|
|
435
1056
|
return this.state.current;
|
|
436
1057
|
}
|
|
437
|
-
|
|
1058
|
+
async toggle(media) {
|
|
438
1059
|
if (this.#props.disabled) return;
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
const idx = playbackRates.indexOf(playbackRate);
|
|
442
|
-
const next = idx === -1 ? playbackRates.find((r) => r > playbackRate) ?? playbackRates[0] : playbackRates[(idx + 1) % playbackRates.length];
|
|
443
|
-
media.setPlaybackRate(next);
|
|
1060
|
+
if (media.paused || media.ended) return media.play();
|
|
1061
|
+
media.pause();
|
|
444
1062
|
}
|
|
445
1063
|
};
|
|
446
1064
|
|
|
447
1065
|
//#endregion
|
|
448
|
-
//#region ../core/dist/dev/core/ui/
|
|
449
|
-
const
|
|
1066
|
+
//#region ../core/dist/dev/core/ui/play-button/play-button-data-attrs.js
|
|
1067
|
+
const PlayButtonDataAttrs = {
|
|
1068
|
+
paused: "data-paused",
|
|
1069
|
+
ended: "data-ended",
|
|
1070
|
+
started: "data-started"
|
|
1071
|
+
};
|
|
450
1072
|
|
|
451
1073
|
//#endregion
|
|
452
1074
|
//#region ../core/dist/dev/core/ui/popover/popover-core.js
|
|
@@ -506,6 +1128,7 @@ var PopoverCore = class PopoverCore {
|
|
|
506
1128
|
const PopoverCSSVars = {
|
|
507
1129
|
sideOffset: "--media-popover-side-offset",
|
|
508
1130
|
alignOffset: "--media-popover-align-offset",
|
|
1131
|
+
boundaryOffset: "--media-popover-boundary-offset",
|
|
509
1132
|
anchorWidth: "--media-popover-anchor-width",
|
|
510
1133
|
anchorHeight: "--media-popover-anchor-height",
|
|
511
1134
|
availableWidth: "--media-popover-available-width",
|
|
@@ -518,84 +1141,19 @@ const PopoverDataAttrs = {
|
|
|
518
1141
|
open: "data-open",
|
|
519
1142
|
side: "data-side",
|
|
520
1143
|
align: "data-align",
|
|
521
|
-
|
|
522
|
-
transitionEnding: "data-ending-style"
|
|
523
|
-
};
|
|
524
|
-
|
|
525
|
-
//#endregion
|
|
526
|
-
//#region ../core/dist/dev/core/ui/seek-button/seek-button-core.js
|
|
527
|
-
var SeekButtonCore = class SeekButtonCore {
|
|
528
|
-
static defaultProps = {
|
|
529
|
-
seconds: 30,
|
|
530
|
-
label: "",
|
|
531
|
-
disabled: false
|
|
532
|
-
};
|
|
533
|
-
state = createState({
|
|
534
|
-
seeking: false,
|
|
535
|
-
direction: "forward",
|
|
536
|
-
label: ""
|
|
537
|
-
});
|
|
538
|
-
#props = { ...SeekButtonCore.defaultProps };
|
|
539
|
-
#media = null;
|
|
540
|
-
constructor(props) {
|
|
541
|
-
if (props) this.setProps(props);
|
|
542
|
-
}
|
|
543
|
-
setProps(props) {
|
|
544
|
-
this.#props = defaults(props, SeekButtonCore.defaultProps);
|
|
545
|
-
}
|
|
546
|
-
getLabel(state) {
|
|
547
|
-
const { label } = this.#props;
|
|
548
|
-
if (isFunction(label)) {
|
|
549
|
-
const customLabel = label(state);
|
|
550
|
-
if (customLabel) return customLabel;
|
|
551
|
-
} else if (label) return label;
|
|
552
|
-
const abs = Math.abs(this.#props.seconds);
|
|
553
|
-
return state.direction === "backward" ? `Seek backward ${abs} seconds` : `Seek forward ${abs} seconds`;
|
|
554
|
-
}
|
|
555
|
-
getAttrs(state) {
|
|
556
|
-
return {
|
|
557
|
-
"aria-label": this.getLabel(state),
|
|
558
|
-
"aria-disabled": this.#props.disabled ? "true" : void 0
|
|
559
|
-
};
|
|
560
|
-
}
|
|
561
|
-
setMedia(media) {
|
|
562
|
-
this.#media = media;
|
|
563
|
-
}
|
|
564
|
-
getState() {
|
|
565
|
-
const media = this.#media;
|
|
566
|
-
const direction = this.#props.seconds < 0 ? "backward" : "forward";
|
|
567
|
-
this.state.patch({
|
|
568
|
-
seeking: media.seeking,
|
|
569
|
-
direction
|
|
570
|
-
});
|
|
571
|
-
this.state.patch({ label: this.getLabel(this.state.current) });
|
|
572
|
-
return this.state.current;
|
|
573
|
-
}
|
|
574
|
-
async seek(media) {
|
|
575
|
-
if (this.#props.disabled) return;
|
|
576
|
-
await media.seek(media.currentTime + this.#props.seconds);
|
|
577
|
-
}
|
|
578
|
-
};
|
|
579
|
-
|
|
580
|
-
//#endregion
|
|
581
|
-
//#region ../core/dist/dev/core/ui/seek-button/seek-button-data-attrs.js
|
|
582
|
-
const SeekButtonDataAttrs = {
|
|
583
|
-
seeking: "data-seeking",
|
|
584
|
-
direction: "data-direction"
|
|
1144
|
+
...TransitionDataAttrs
|
|
585
1145
|
};
|
|
586
1146
|
|
|
587
1147
|
//#endregion
|
|
588
|
-
//#region ../
|
|
589
|
-
/**
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
}
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
return dot === -1 ? nearest : Number(nearest.toFixed(`${step}`.length - dot - 1));
|
|
598
|
-
}
|
|
1148
|
+
//#region ../core/dist/dev/core/ui/popover/popup-host-attr.js
|
|
1149
|
+
/**
|
|
1150
|
+
* Hosted floating UI surfaces (popover, menu, tooltip, and future overlays) that support
|
|
1151
|
+
* parent-driven lifecycle may set {@link POPUP_HOST_ATTR}. Ancestors can discover them with
|
|
1152
|
+
* {@link POPUP_HOST_SELECTOR} and call methods such as `close('imperative-action')` when
|
|
1153
|
+
* the element implements that contract.
|
|
1154
|
+
*/
|
|
1155
|
+
const POPUP_HOST_ATTR = "data-popup";
|
|
1156
|
+
const POPUP_HOST_SELECTOR = `[${POPUP_HOST_ATTR}]`;
|
|
599
1157
|
|
|
600
1158
|
//#endregion
|
|
601
1159
|
//#region ../core/dist/dev/core/ui/slider/slider-core.js
|
|
@@ -876,106 +1434,6 @@ function mapCuesToThumbnails(cues, baseURL) {
|
|
|
876
1434
|
return images;
|
|
877
1435
|
}
|
|
878
1436
|
|
|
879
|
-
//#endregion
|
|
880
|
-
//#region ../utils/dist/time/format.js
|
|
881
|
-
const UNIT_LABELS = [
|
|
882
|
-
{
|
|
883
|
-
singular: "hour",
|
|
884
|
-
plural: "hours"
|
|
885
|
-
},
|
|
886
|
-
{
|
|
887
|
-
singular: "minute",
|
|
888
|
-
plural: "minutes"
|
|
889
|
-
},
|
|
890
|
-
{
|
|
891
|
-
singular: "second",
|
|
892
|
-
plural: "seconds"
|
|
893
|
-
}
|
|
894
|
-
];
|
|
895
|
-
function isValidTime(value) {
|
|
896
|
-
return isNumber(value) && Number.isFinite(value);
|
|
897
|
-
}
|
|
898
|
-
function toTimeUnitPhrase(value, unitIndex) {
|
|
899
|
-
return `${value} ${value === 1 ? UNIT_LABELS[unitIndex]?.singular : UNIT_LABELS[unitIndex]?.plural}`;
|
|
900
|
-
}
|
|
901
|
-
/**
|
|
902
|
-
* Format seconds to digital display string.
|
|
903
|
-
*
|
|
904
|
-
* @param seconds - Time in seconds (can be negative)
|
|
905
|
-
* @param guide - Guide time (typically duration) to determine display format
|
|
906
|
-
* @returns Formatted string like "1:30" or "1:05:30"
|
|
907
|
-
*
|
|
908
|
-
* @example
|
|
909
|
-
* formatTime(90) // "1:30"
|
|
910
|
-
* formatTime(3661) // "1:01:01"
|
|
911
|
-
* formatTime(35, 3600) // "0:00:35" (guided by 1-hour duration)
|
|
912
|
-
* formatTime(35, 600) // "00:35" (guided by 10-minute duration)
|
|
913
|
-
*/
|
|
914
|
-
function formatTime(seconds, guide) {
|
|
915
|
-
if (!isValidTime(seconds)) return "0:00";
|
|
916
|
-
const negative = seconds < 0;
|
|
917
|
-
const positiveSeconds = Math.abs(seconds);
|
|
918
|
-
const h = Math.floor(positiveSeconds / 3600);
|
|
919
|
-
const m = Math.floor(positiveSeconds / 60 % 60);
|
|
920
|
-
const s = Math.floor(positiveSeconds % 60);
|
|
921
|
-
const guideAbs = guide ? Math.abs(guide) : 0;
|
|
922
|
-
const gh = Math.floor(guideAbs / 3600);
|
|
923
|
-
const gm = Math.floor(guideAbs / 60 % 60);
|
|
924
|
-
const showHours = h > 0 || gh > 0;
|
|
925
|
-
const padMinutes = showHours || gm >= 10;
|
|
926
|
-
const hoursStr = showHours ? `${h}:` : "";
|
|
927
|
-
const minutesStr = `${padMinutes && m < 10 ? "0" : ""}${m}:`;
|
|
928
|
-
const secondsStr = s < 10 ? `0${s}` : `${s}`;
|
|
929
|
-
return `${negative ? "-" : ""}${hoursStr}${minutesStr}${secondsStr}`;
|
|
930
|
-
}
|
|
931
|
-
/**
|
|
932
|
-
* Format seconds to human-readable phrase for screen readers.
|
|
933
|
-
*
|
|
934
|
-
* @param seconds - Time in seconds (negative indicates remaining)
|
|
935
|
-
* @returns Human-readable phrase like "1 minute, 30 seconds"
|
|
936
|
-
*
|
|
937
|
-
* @example
|
|
938
|
-
* formatTimeAsPhrase(90) // "1 minute, 30 seconds"
|
|
939
|
-
* formatTimeAsPhrase(3661) // "1 hour, 1 minute, 1 second"
|
|
940
|
-
* formatTimeAsPhrase(-270) // "4 minutes, 30 seconds remaining"
|
|
941
|
-
*/
|
|
942
|
-
function formatTimeAsPhrase(seconds) {
|
|
943
|
-
if (!isValidTime(seconds)) return "";
|
|
944
|
-
const negative = seconds < 0;
|
|
945
|
-
const positiveSeconds = Math.abs(seconds);
|
|
946
|
-
const h = Math.floor(positiveSeconds / 3600);
|
|
947
|
-
const m = Math.floor(positiveSeconds / 60 % 60);
|
|
948
|
-
const s = Math.floor(positiveSeconds % 60);
|
|
949
|
-
if (positiveSeconds === 0) return `${toTimeUnitPhrase(0, 2)}${negative ? " remaining" : ""}`;
|
|
950
|
-
return `${[
|
|
951
|
-
h,
|
|
952
|
-
m,
|
|
953
|
-
s
|
|
954
|
-
].map((value, index) => value > 0 ? toTimeUnitPhrase(value, index) : null).filter(Boolean).join(", ")}${negative ? " remaining" : ""}`;
|
|
955
|
-
}
|
|
956
|
-
/**
|
|
957
|
-
* Convert seconds to ISO 8601 duration for datetime attribute.
|
|
958
|
-
*
|
|
959
|
-
* @param seconds - Time in seconds
|
|
960
|
-
* @returns ISO 8601 duration string like "PT1M30S"
|
|
961
|
-
*
|
|
962
|
-
* @example
|
|
963
|
-
* secondsToIsoDuration(90) // "PT1M30S"
|
|
964
|
-
* secondsToIsoDuration(3661) // "PT1H1M1S"
|
|
965
|
-
*/
|
|
966
|
-
function secondsToIsoDuration(seconds) {
|
|
967
|
-
if (!isValidTime(seconds)) return "PT0S";
|
|
968
|
-
const positiveSeconds = Math.abs(seconds);
|
|
969
|
-
const h = Math.floor(positiveSeconds / 3600);
|
|
970
|
-
const m = Math.floor(positiveSeconds / 60 % 60);
|
|
971
|
-
const s = Math.floor(positiveSeconds % 60);
|
|
972
|
-
let duration = "PT";
|
|
973
|
-
if (h > 0) duration += `${h}H`;
|
|
974
|
-
if (m > 0) duration += `${m}M`;
|
|
975
|
-
if (s > 0 || duration === "PT") duration += `${s}S`;
|
|
976
|
-
return duration;
|
|
977
|
-
}
|
|
978
|
-
|
|
979
1437
|
//#endregion
|
|
980
1438
|
//#region ../core/dist/dev/core/ui/time/time-core.js
|
|
981
1439
|
const DEFAULT_LABELS = {
|
|
@@ -1170,6 +1628,7 @@ var TooltipCore = class TooltipCore {
|
|
|
1170
1628
|
const TooltipCSSVars = {
|
|
1171
1629
|
sideOffset: "--media-tooltip-side-offset",
|
|
1172
1630
|
alignOffset: "--media-tooltip-align-offset",
|
|
1631
|
+
boundaryOffset: "--media-tooltip-boundary-offset",
|
|
1173
1632
|
anchorWidth: "--media-tooltip-anchor-width",
|
|
1174
1633
|
anchorHeight: "--media-tooltip-anchor-height",
|
|
1175
1634
|
availableWidth: "--media-tooltip-available-width",
|
|
@@ -1182,8 +1641,7 @@ const TooltipDataAttrs = {
|
|
|
1182
1641
|
open: "data-open",
|
|
1183
1642
|
side: "data-side",
|
|
1184
1643
|
align: "data-align",
|
|
1185
|
-
|
|
1186
|
-
transitionEnding: "data-ending-style"
|
|
1644
|
+
...TransitionDataAttrs
|
|
1187
1645
|
};
|
|
1188
1646
|
|
|
1189
1647
|
//#endregion
|
|
@@ -1284,26 +1742,59 @@ const VolumeSliderDataAttrs = {
|
|
|
1284
1742
|
availability: "data-availability"
|
|
1285
1743
|
};
|
|
1286
1744
|
|
|
1745
|
+
//#endregion
|
|
1746
|
+
//#region ../core/dist/dev/dom/store/features/stream-type.js
|
|
1747
|
+
const streamTypeFeature = definePlayerFeature({
|
|
1748
|
+
name: "streamType",
|
|
1749
|
+
state: () => ({ streamType: MediaStreamTypes.UNKNOWN }),
|
|
1750
|
+
attach({ target, signal, set }) {
|
|
1751
|
+
const { media } = target;
|
|
1752
|
+
if (isMediaStreamTypeCapable(media)) {
|
|
1753
|
+
const sync = () => set({ streamType: media.streamType });
|
|
1754
|
+
sync();
|
|
1755
|
+
listen(media, "streamtypechange", sync, { signal });
|
|
1756
|
+
return;
|
|
1757
|
+
}
|
|
1758
|
+
if (!isMediaSeekCapable(media)) return;
|
|
1759
|
+
const detect = () => {
|
|
1760
|
+
const { duration } = media;
|
|
1761
|
+
if (duration === Number.POSITIVE_INFINITY) return MediaStreamTypes.LIVE;
|
|
1762
|
+
if (Number.isFinite(duration) && duration > 0) return MediaStreamTypes.ON_DEMAND;
|
|
1763
|
+
return MediaStreamTypes.UNKNOWN;
|
|
1764
|
+
};
|
|
1765
|
+
const sync = () => set({ streamType: detect() });
|
|
1766
|
+
sync();
|
|
1767
|
+
listen(media, "durationchange", sync, { signal });
|
|
1768
|
+
listen(media, "loadedmetadata", sync, { signal });
|
|
1769
|
+
listen(media, "emptied", sync, { signal });
|
|
1770
|
+
if (isMediaBufferCapable(media)) listen(media, "progress", sync, { signal });
|
|
1771
|
+
}
|
|
1772
|
+
});
|
|
1773
|
+
|
|
1287
1774
|
//#endregion
|
|
1288
1775
|
//#region ../core/dist/dev/dom/store/selectors.js
|
|
1289
1776
|
/** Select the buffer state (buffered ranges, percent buffered). */
|
|
1290
1777
|
const selectBuffer = createSelector(bufferFeature);
|
|
1291
|
-
/** Select the cast state (cast connection state, availability). */
|
|
1292
|
-
const selectCast = createSelector(castFeature);
|
|
1293
1778
|
/** Select the controls state (controls visible, user-active). */
|
|
1294
1779
|
const selectControls = createSelector(controlsFeature);
|
|
1295
1780
|
/** Select the error state (error, dismissed, dismissError). */
|
|
1296
1781
|
const selectError = createSelector(errorFeature);
|
|
1297
1782
|
/** Select the fullscreen state (fullscreen active, availability). */
|
|
1298
1783
|
const selectFullscreen = createSelector(fullscreenFeature);
|
|
1784
|
+
/** Select the live state (`liveEdgeStart`, `targetLiveWindow`). */
|
|
1785
|
+
const selectLive = createSelector(liveFeature);
|
|
1299
1786
|
/** Select the PiP state (picture-in-picture active, availability). */
|
|
1300
1787
|
const selectPiP = createSelector(pipFeature);
|
|
1301
1788
|
/** Select the playback state (paused, ended, play, pause, toggle). */
|
|
1302
1789
|
const selectPlayback = createSelector(playbackFeature);
|
|
1303
1790
|
/** Select the playback rate state (playbackRate, playbackRates, setPlaybackRate). */
|
|
1304
1791
|
const selectPlaybackRate = createSelector(playbackRateFeature);
|
|
1792
|
+
/** Select the remote playback state (remote playback connection state, availability). */
|
|
1793
|
+
const selectRemotePlayback = createSelector(remotePlaybackFeature);
|
|
1305
1794
|
/** Select the source state (src, type). */
|
|
1306
1795
|
const selectSource = createSelector(sourceFeature);
|
|
1796
|
+
/** Select the stream type state (`'on-demand' | 'live' | 'unknown'`). */
|
|
1797
|
+
const selectStreamType = createSelector(streamTypeFeature);
|
|
1307
1798
|
/** Select the text track state (chapters cues, thumbnail cues). */
|
|
1308
1799
|
const selectTextTrack = createSelector(textTrackFeature);
|
|
1309
1800
|
/** Select the time state (currentTime, duration, seek). */
|
|
@@ -1356,10 +1847,15 @@ var HotkeyCoordinator = class {
|
|
|
1356
1847
|
#docDisconnect = null;
|
|
1357
1848
|
/** Action name → bound keys. Controls query this to set `aria-keyshortcuts`. */
|
|
1358
1849
|
#ariaRegistry = /* @__PURE__ */ new Map();
|
|
1850
|
+
#subscribers = /* @__PURE__ */ new Set();
|
|
1359
1851
|
#destroyed = false;
|
|
1360
1852
|
constructor(target) {
|
|
1361
1853
|
this.#target = target;
|
|
1362
1854
|
}
|
|
1855
|
+
subscribe(callback) {
|
|
1856
|
+
this.#subscribers.add(callback);
|
|
1857
|
+
return () => this.#subscribers.delete(callback);
|
|
1858
|
+
}
|
|
1363
1859
|
add(options) {
|
|
1364
1860
|
const parsed = parseHotkeyPattern(options.keys);
|
|
1365
1861
|
const binding = {
|
|
@@ -1429,6 +1925,7 @@ var HotkeyCoordinator = class {
|
|
|
1429
1925
|
#handleEvent = (event) => {
|
|
1430
1926
|
if (event.key === "Unidentified") return;
|
|
1431
1927
|
if (isInteractiveActivation(event)) return;
|
|
1928
|
+
if (event.defaultPrevented) return;
|
|
1432
1929
|
const editable = isEditableTarget(event);
|
|
1433
1930
|
for (const binding of this.#bindings) {
|
|
1434
1931
|
const { options, parsed } = binding;
|
|
@@ -1438,6 +1935,19 @@ var HotkeyCoordinator = class {
|
|
|
1438
1935
|
for (const p of parsed) {
|
|
1439
1936
|
if (!matchesHotkeyEvent(p, event)) continue;
|
|
1440
1937
|
if (editable && p.modifiers.size === 0) continue;
|
|
1938
|
+
if (this.#subscribers.size > 0) {
|
|
1939
|
+
const activateEvent = {
|
|
1940
|
+
source: "hotkey",
|
|
1941
|
+
action: options.action,
|
|
1942
|
+
value: options.value,
|
|
1943
|
+
event
|
|
1944
|
+
};
|
|
1945
|
+
for (const cb of this.#subscribers) try {
|
|
1946
|
+
cb(activateEvent);
|
|
1947
|
+
} catch (error) {
|
|
1948
|
+
console.warn("[vjs-hotkey] subscribe callback threw:", error);
|
|
1949
|
+
}
|
|
1950
|
+
}
|
|
1441
1951
|
event.preventDefault();
|
|
1442
1952
|
options.onActivate(event, p.originalKey);
|
|
1443
1953
|
return;
|
|
@@ -1530,7 +2040,8 @@ const coordinators = /* @__PURE__ */ new WeakMap();
|
|
|
1530
2040
|
function findHotkeyCoordinator(target) {
|
|
1531
2041
|
return coordinators.get(target);
|
|
1532
2042
|
}
|
|
1533
|
-
|
|
2043
|
+
/** Look up or create the hotkey coordinator for a target element. */
|
|
2044
|
+
function getHotkeyCoordinator(target) {
|
|
1534
2045
|
let coordinator = coordinators.get(target);
|
|
1535
2046
|
if (!coordinator) {
|
|
1536
2047
|
coordinator = new HotkeyCoordinator(target);
|
|
@@ -1555,7 +2066,7 @@ function getCoordinator(target) {
|
|
|
1555
2066
|
* @returns A cleanup function that removes the binding.
|
|
1556
2067
|
*/
|
|
1557
2068
|
function createHotkey(target, options) {
|
|
1558
|
-
return
|
|
2069
|
+
return getHotkeyCoordinator(target).add(options);
|
|
1559
2070
|
}
|
|
1560
2071
|
|
|
1561
2072
|
//#endregion
|
|
@@ -1591,6 +2102,7 @@ function createDismissLayer(options) {
|
|
|
1591
2102
|
}
|
|
1592
2103
|
function handleKeydown(event) {
|
|
1593
2104
|
if (event.key !== "Escape") return;
|
|
2105
|
+
if (event.defaultPrevented) return;
|
|
1594
2106
|
if (!state.current.active) return;
|
|
1595
2107
|
if (!(options.closeOnEscape?.() ?? true)) return;
|
|
1596
2108
|
options.onEscapeDismiss(event);
|
|
@@ -1731,6 +2243,50 @@ function createButton(options) {
|
|
|
1731
2243
|
};
|
|
1732
2244
|
}
|
|
1733
2245
|
|
|
2246
|
+
//#endregion
|
|
2247
|
+
//#region ../core/dist/dev/dom/ui/input-action.js
|
|
2248
|
+
function toInputActionEvent(event) {
|
|
2249
|
+
return {
|
|
2250
|
+
action: event.action,
|
|
2251
|
+
value: event.value,
|
|
2252
|
+
source: event.source,
|
|
2253
|
+
key: "key" in event.event ? event.event.key : void 0
|
|
2254
|
+
};
|
|
2255
|
+
}
|
|
2256
|
+
function getMediaSnapshot(store) {
|
|
2257
|
+
if (!store) return {};
|
|
2258
|
+
const state = store.state;
|
|
2259
|
+
const time = selectTime(state);
|
|
2260
|
+
return {
|
|
2261
|
+
paused: selectPlayback(state)?.paused,
|
|
2262
|
+
volume: selectVolume(state)?.volume,
|
|
2263
|
+
muted: selectVolume(state)?.muted,
|
|
2264
|
+
fullscreen: selectFullscreen(state)?.fullscreen,
|
|
2265
|
+
subtitlesShowing: selectTextTrack(state)?.subtitlesShowing,
|
|
2266
|
+
pip: selectPiP(state)?.pip,
|
|
2267
|
+
currentTime: time?.currentTime,
|
|
2268
|
+
duration: time?.duration
|
|
2269
|
+
};
|
|
2270
|
+
}
|
|
2271
|
+
function subscribeToInputActions(container, callback) {
|
|
2272
|
+
const handleEvent = (event) => callback(toInputActionEvent(event));
|
|
2273
|
+
const gestureUnsubscribe = getGestureCoordinator(container).subscribe(handleEvent);
|
|
2274
|
+
const hotkeyUnsubscribe = getHotkeyCoordinator(container).subscribe(handleEvent);
|
|
2275
|
+
return () => {
|
|
2276
|
+
gestureUnsubscribe();
|
|
2277
|
+
hotkeyUnsubscribe();
|
|
2278
|
+
};
|
|
2279
|
+
}
|
|
2280
|
+
const indicatorVisibilityCoordinators = /* @__PURE__ */ new WeakMap();
|
|
2281
|
+
function getIndicatorVisibilityCoordinator(container) {
|
|
2282
|
+
let coordinator = indicatorVisibilityCoordinators.get(container);
|
|
2283
|
+
if (!coordinator) {
|
|
2284
|
+
coordinator = new IndicatorVisibilityCoordinator();
|
|
2285
|
+
indicatorVisibilityCoordinators.set(container, coordinator);
|
|
2286
|
+
}
|
|
2287
|
+
return coordinator;
|
|
2288
|
+
}
|
|
2289
|
+
|
|
1734
2290
|
//#endregion
|
|
1735
2291
|
//#region ../core/dist/dev/dom/ui/popover/popover.js
|
|
1736
2292
|
function createPopover(options) {
|
|
@@ -1754,6 +2310,9 @@ function createPopover(options) {
|
|
|
1754
2310
|
}
|
|
1755
2311
|
});
|
|
1756
2312
|
const state = layer.input;
|
|
2313
|
+
const groupMember = { close(reason) {
|
|
2314
|
+
applyClose(reason);
|
|
2315
|
+
} };
|
|
1757
2316
|
function clearHoverTimeout() {
|
|
1758
2317
|
if (hoverTimeout !== null) {
|
|
1759
2318
|
clearTimeout(hoverTimeout);
|
|
@@ -1789,6 +2348,7 @@ function createPopover(options) {
|
|
|
1789
2348
|
function applyOpen(reason, event) {
|
|
1790
2349
|
const opening = layer.open();
|
|
1791
2350
|
if (!opening) return;
|
|
2351
|
+
options.group?.()?.open(groupMember);
|
|
1792
2352
|
onOpenChange(true, event ? {
|
|
1793
2353
|
reason,
|
|
1794
2354
|
event
|
|
@@ -1801,6 +2361,7 @@ function createPopover(options) {
|
|
|
1801
2361
|
function applyClose(reason, event) {
|
|
1802
2362
|
const closing = layer.close(popupEl);
|
|
1803
2363
|
if (!closing) return;
|
|
2364
|
+
options.group?.()?.close(groupMember);
|
|
1804
2365
|
onOpenChange(false, event ? {
|
|
1805
2366
|
reason,
|
|
1806
2367
|
event
|
|
@@ -1824,6 +2385,7 @@ function createPopover(options) {
|
|
|
1824
2385
|
applyClose("outside-click", event);
|
|
1825
2386
|
}
|
|
1826
2387
|
layer.signal.addEventListener("abort", () => {
|
|
2388
|
+
options.group?.()?.close(groupMember);
|
|
1827
2389
|
clearHoverTimeout();
|
|
1828
2390
|
capturedPointers.clear();
|
|
1829
2391
|
triggerEl = null;
|
|
@@ -1913,14 +2475,621 @@ function createPopover(options) {
|
|
|
1913
2475
|
};
|
|
1914
2476
|
}
|
|
1915
2477
|
|
|
2478
|
+
//#endregion
|
|
2479
|
+
//#region ../core/dist/dev/dom/ui/menu/create-menu.js
|
|
2480
|
+
function isMenuNavigationKey(event) {
|
|
2481
|
+
const { key } = event;
|
|
2482
|
+
return key === "ArrowDown" || key === "ArrowUp" || key === "ArrowLeft" || key === "ArrowRight" || key === "Home" || key === "End" || key === "Enter" || key === " " || key === "Escape" || key.length === 1 && !event.ctrlKey && !event.altKey && !event.metaKey;
|
|
2483
|
+
}
|
|
2484
|
+
function getRootPositionOptions(side, align) {
|
|
2485
|
+
if (!side || !align) return null;
|
|
2486
|
+
return {
|
|
2487
|
+
side,
|
|
2488
|
+
align
|
|
2489
|
+
};
|
|
2490
|
+
}
|
|
2491
|
+
function completeMenuItemSelection(menu, parentMenu = null) {
|
|
2492
|
+
if (parentMenu) parentMenu.pop();
|
|
2493
|
+
else menu.close();
|
|
2494
|
+
}
|
|
2495
|
+
function createMenu(options) {
|
|
2496
|
+
const items = [];
|
|
2497
|
+
let highlightedItem = null;
|
|
2498
|
+
let triggerElement = null;
|
|
2499
|
+
let contentElement = null;
|
|
2500
|
+
let typeaheadBuffer = "";
|
|
2501
|
+
let typeaheadTimer = null;
|
|
2502
|
+
let openRafId = 0;
|
|
2503
|
+
let lastCloseReason = null;
|
|
2504
|
+
const navigationState = createState({
|
|
2505
|
+
stack: [],
|
|
2506
|
+
direction: "forward"
|
|
2507
|
+
});
|
|
2508
|
+
function push(menuId, triggerId) {
|
|
2509
|
+
const stack = navigationState.current.stack;
|
|
2510
|
+
if (stack[stack.length - 1]?.menuId === menuId) return;
|
|
2511
|
+
navigationState.patch({
|
|
2512
|
+
stack: [...stack, {
|
|
2513
|
+
menuId,
|
|
2514
|
+
triggerId
|
|
2515
|
+
}],
|
|
2516
|
+
direction: "forward"
|
|
2517
|
+
});
|
|
2518
|
+
}
|
|
2519
|
+
function pop() {
|
|
2520
|
+
const stack = navigationState.current.stack;
|
|
2521
|
+
if (stack.length === 0) return;
|
|
2522
|
+
navigationState.patch({
|
|
2523
|
+
stack: stack.slice(0, -1),
|
|
2524
|
+
direction: "back"
|
|
2525
|
+
});
|
|
2526
|
+
}
|
|
2527
|
+
function highlight(element, highlightOptions) {
|
|
2528
|
+
if (highlightedItem === element) return;
|
|
2529
|
+
if (highlightedItem) {
|
|
2530
|
+
highlightedItem.tabIndex = -1;
|
|
2531
|
+
highlightedItem.removeAttribute(MenuItemDataAttrs.highlighted);
|
|
2532
|
+
}
|
|
2533
|
+
highlightedItem = element;
|
|
2534
|
+
if (element) {
|
|
2535
|
+
element.tabIndex = 0;
|
|
2536
|
+
element.setAttribute(MenuItemDataAttrs.highlighted, "");
|
|
2537
|
+
if (highlightOptions?.focus !== false) if (highlightOptions?.preventScroll) element.focus({ preventScroll: true });
|
|
2538
|
+
else element.focus();
|
|
2539
|
+
}
|
|
2540
|
+
options.onHighlightChange?.(element);
|
|
2541
|
+
}
|
|
2542
|
+
function clearHighlight() {
|
|
2543
|
+
if (highlightedItem) {
|
|
2544
|
+
highlightedItem.tabIndex = -1;
|
|
2545
|
+
highlightedItem.removeAttribute(MenuItemDataAttrs.highlighted);
|
|
2546
|
+
highlightedItem = null;
|
|
2547
|
+
options.onHighlightChange?.(null);
|
|
2548
|
+
}
|
|
2549
|
+
}
|
|
2550
|
+
function highlightFirstItem(options) {
|
|
2551
|
+
highlight(items[0] ?? null, options);
|
|
2552
|
+
}
|
|
2553
|
+
function getInitialHighlightItem() {
|
|
2554
|
+
return items.find((item) => item.matches("[aria-checked=\"true\"], [aria-selected=\"true\"]")) ?? items[0] ?? null;
|
|
2555
|
+
}
|
|
2556
|
+
function clearTypeahead() {
|
|
2557
|
+
if (typeaheadTimer !== null) {
|
|
2558
|
+
clearTimeout(typeaheadTimer);
|
|
2559
|
+
typeaheadTimer = null;
|
|
2560
|
+
}
|
|
2561
|
+
typeaheadBuffer = "";
|
|
2562
|
+
}
|
|
2563
|
+
function scheduleInitialHighlight() {
|
|
2564
|
+
cancelAnimationFrame(openRafId);
|
|
2565
|
+
openRafId = requestAnimationFrame(() => {
|
|
2566
|
+
openRafId = 0;
|
|
2567
|
+
if (!popover.input.current.active || popover.input.current.status === "ending" || highlightedItem) return;
|
|
2568
|
+
highlight(getInitialHighlightItem());
|
|
2569
|
+
});
|
|
2570
|
+
}
|
|
2571
|
+
function handleTypeahead(char) {
|
|
2572
|
+
typeaheadBuffer = typeaheadBuffer.length === 1 && typeaheadBuffer.toLowerCase() === char.toLowerCase() ? char : typeaheadBuffer + char;
|
|
2573
|
+
if (typeaheadTimer !== null) clearTimeout(typeaheadTimer);
|
|
2574
|
+
typeaheadTimer = setTimeout(clearTypeahead, 500);
|
|
2575
|
+
const searchStart = (highlightedItem ? items.indexOf(highlightedItem) : -1) + 1;
|
|
2576
|
+
const candidates = [...items.slice(searchStart), ...items.slice(0, searchStart)];
|
|
2577
|
+
const needle = typeaheadBuffer.toLowerCase();
|
|
2578
|
+
const match = candidates.find((candidate) => {
|
|
2579
|
+
return (candidate.textContent?.trim().toLowerCase() ?? "").startsWith(needle);
|
|
2580
|
+
});
|
|
2581
|
+
if (match) highlight(match);
|
|
2582
|
+
}
|
|
2583
|
+
const popover = createPopover({
|
|
2584
|
+
transition: options.transition,
|
|
2585
|
+
onOpenChange(open, details) {
|
|
2586
|
+
lastCloseReason = open ? null : details.reason;
|
|
2587
|
+
options.onOpenChange(open, details);
|
|
2588
|
+
if (open) scheduleInitialHighlight();
|
|
2589
|
+
else {
|
|
2590
|
+
clearHighlight();
|
|
2591
|
+
clearTypeahead();
|
|
2592
|
+
navigationState.patch({
|
|
2593
|
+
stack: [],
|
|
2594
|
+
direction: "forward"
|
|
2595
|
+
});
|
|
2596
|
+
}
|
|
2597
|
+
},
|
|
2598
|
+
onOpenChangeComplete(open) {
|
|
2599
|
+
options.onOpenChangeComplete?.(open);
|
|
2600
|
+
if (!open && lastCloseReason !== "imperative-action" && lastCloseReason !== "group-open") triggerElement?.focus();
|
|
2601
|
+
},
|
|
2602
|
+
closeOnEscape: options.closeOnEscape,
|
|
2603
|
+
closeOnOutsideClick: options.closeOnOutsideClick,
|
|
2604
|
+
...options.group ? { group: options.group } : {}
|
|
2605
|
+
});
|
|
2606
|
+
const contentProps = {
|
|
2607
|
+
onFocusOut: popover.popupProps.onFocusOut,
|
|
2608
|
+
onKeyDown(event) {
|
|
2609
|
+
const { key } = event;
|
|
2610
|
+
if (key !== "Escape" && isMenuNavigationKey(event) && !event.defaultPrevented) event.preventDefault();
|
|
2611
|
+
if (items.length === 0) return;
|
|
2612
|
+
switch (key) {
|
|
2613
|
+
case "ArrowDown":
|
|
2614
|
+
event.preventDefault();
|
|
2615
|
+
highlight(items[((highlightedItem ? items.indexOf(highlightedItem) : -1) + 1) % items.length] ?? null);
|
|
2616
|
+
break;
|
|
2617
|
+
case "ArrowUp": {
|
|
2618
|
+
event.preventDefault();
|
|
2619
|
+
const currentIndex = highlightedItem ? items.indexOf(highlightedItem) : 0;
|
|
2620
|
+
highlight(items[(currentIndex <= 0 ? items.length : currentIndex) - 1] ?? null);
|
|
2621
|
+
break;
|
|
2622
|
+
}
|
|
2623
|
+
case "Home":
|
|
2624
|
+
event.preventDefault();
|
|
2625
|
+
highlight(items[0] ?? null);
|
|
2626
|
+
break;
|
|
2627
|
+
case "End":
|
|
2628
|
+
event.preventDefault();
|
|
2629
|
+
highlight(items[items.length - 1] ?? null);
|
|
2630
|
+
break;
|
|
2631
|
+
case "Enter":
|
|
2632
|
+
case " ":
|
|
2633
|
+
event.preventDefault();
|
|
2634
|
+
highlightedItem?.click();
|
|
2635
|
+
break;
|
|
2636
|
+
default: if (key.length === 1 && !event.ctrlKey && !event.altKey && !event.metaKey) handleTypeahead(key);
|
|
2637
|
+
}
|
|
2638
|
+
}
|
|
2639
|
+
};
|
|
2640
|
+
function handleTriggerKeyDown(event) {
|
|
2641
|
+
const input = popover.input.current;
|
|
2642
|
+
if (!input.active || input.status === "ending") return;
|
|
2643
|
+
if (event.key === "Escape") return;
|
|
2644
|
+
if (!isMenuNavigationKey(event)) return;
|
|
2645
|
+
contentProps.onKeyDown(event);
|
|
2646
|
+
event.stopPropagation();
|
|
2647
|
+
}
|
|
2648
|
+
function setTriggerElement(element) {
|
|
2649
|
+
triggerElement = element;
|
|
2650
|
+
popover.setTriggerElement(element);
|
|
2651
|
+
}
|
|
2652
|
+
function setContentElement(element) {
|
|
2653
|
+
contentElement = element;
|
|
2654
|
+
popover.setPopupElement(element);
|
|
2655
|
+
}
|
|
2656
|
+
function compareItems(a, b) {
|
|
2657
|
+
if (a === b) return 0;
|
|
2658
|
+
const position = a.compareDocumentPosition(b);
|
|
2659
|
+
if (position & Node.DOCUMENT_POSITION_FOLLOWING) return -1;
|
|
2660
|
+
if (position & Node.DOCUMENT_POSITION_PRECEDING) return 1;
|
|
2661
|
+
return 0;
|
|
2662
|
+
}
|
|
2663
|
+
function registerItem(element) {
|
|
2664
|
+
element.tabIndex = -1;
|
|
2665
|
+
element.setAttribute(MenuItemDataAttrs.item, "");
|
|
2666
|
+
items.push(element);
|
|
2667
|
+
items.sort(compareItems);
|
|
2668
|
+
if (popover.input.current.active && popover.input.current.status !== "ending" && !highlightedItem) scheduleInitialHighlight();
|
|
2669
|
+
return () => {
|
|
2670
|
+
const index = items.indexOf(element);
|
|
2671
|
+
if (index !== -1) items.splice(index, 1);
|
|
2672
|
+
if (highlightedItem === element) clearHighlight();
|
|
2673
|
+
};
|
|
2674
|
+
}
|
|
2675
|
+
function destroy() {
|
|
2676
|
+
cancelAnimationFrame(openRafId);
|
|
2677
|
+
openRafId = 0;
|
|
2678
|
+
clearTypeahead();
|
|
2679
|
+
popover.destroy();
|
|
2680
|
+
}
|
|
2681
|
+
return {
|
|
2682
|
+
input: popover.input,
|
|
2683
|
+
navigationInput: navigationState,
|
|
2684
|
+
triggerProps: {
|
|
2685
|
+
onClick: popover.triggerProps.onClick,
|
|
2686
|
+
onKeyDown: handleTriggerKeyDown
|
|
2687
|
+
},
|
|
2688
|
+
contentProps,
|
|
2689
|
+
get triggerElement() {
|
|
2690
|
+
return triggerElement;
|
|
2691
|
+
},
|
|
2692
|
+
get contentElement() {
|
|
2693
|
+
return contentElement;
|
|
2694
|
+
},
|
|
2695
|
+
setTriggerElement,
|
|
2696
|
+
setContentElement,
|
|
2697
|
+
registerItem,
|
|
2698
|
+
highlight,
|
|
2699
|
+
highlightFirstItem,
|
|
2700
|
+
push,
|
|
2701
|
+
pop,
|
|
2702
|
+
open: popover.open,
|
|
2703
|
+
close: popover.close,
|
|
2704
|
+
destroy
|
|
2705
|
+
};
|
|
2706
|
+
}
|
|
2707
|
+
|
|
2708
|
+
//#endregion
|
|
2709
|
+
//#region ../core/dist/dev/dom/utils/layout.js
|
|
2710
|
+
function forceLayout(element) {
|
|
2711
|
+
element?.getBoundingClientRect();
|
|
2712
|
+
}
|
|
2713
|
+
function createDOMRect(left, top, width, height) {
|
|
2714
|
+
const right = left + width;
|
|
2715
|
+
const bottom = top + height;
|
|
2716
|
+
return {
|
|
2717
|
+
x: left,
|
|
2718
|
+
y: top,
|
|
2719
|
+
width,
|
|
2720
|
+
height,
|
|
2721
|
+
top,
|
|
2722
|
+
right,
|
|
2723
|
+
bottom,
|
|
2724
|
+
left,
|
|
2725
|
+
toJSON() {
|
|
2726
|
+
return {
|
|
2727
|
+
x: left,
|
|
2728
|
+
y: top,
|
|
2729
|
+
width,
|
|
2730
|
+
height,
|
|
2731
|
+
top,
|
|
2732
|
+
right,
|
|
2733
|
+
bottom,
|
|
2734
|
+
left
|
|
2735
|
+
};
|
|
2736
|
+
}
|
|
2737
|
+
};
|
|
2738
|
+
}
|
|
2739
|
+
function intersectDOMRects(firstRect, secondRect) {
|
|
2740
|
+
const left = Math.max(firstRect.left, secondRect.left);
|
|
2741
|
+
const top = Math.max(firstRect.top, secondRect.top);
|
|
2742
|
+
const right = Math.min(firstRect.right, secondRect.right);
|
|
2743
|
+
const bottom = Math.min(firstRect.bottom, secondRect.bottom);
|
|
2744
|
+
return createDOMRect(left, top, Math.max(0, right - left), Math.max(0, bottom - top));
|
|
2745
|
+
}
|
|
2746
|
+
function getPositioningBoundaryRect(boundaryElement) {
|
|
2747
|
+
const viewportRect = document.documentElement.getBoundingClientRect();
|
|
2748
|
+
return boundaryElement ? intersectDOMRects(viewportRect, boundaryElement.getBoundingClientRect()) : viewportRect;
|
|
2749
|
+
}
|
|
2750
|
+
function resolvePositioningBoundary(boundary, options = {}) {
|
|
2751
|
+
if (!boundary) return null;
|
|
2752
|
+
if (!isString(boundary)) return boundary;
|
|
2753
|
+
if (boundary === "viewport") return null;
|
|
2754
|
+
if (boundary === "container") return options.container ?? null;
|
|
2755
|
+
try {
|
|
2756
|
+
return (options.root ?? document).querySelector(boundary);
|
|
2757
|
+
} catch {
|
|
2758
|
+
return null;
|
|
2759
|
+
}
|
|
2760
|
+
}
|
|
2761
|
+
|
|
2762
|
+
//#endregion
|
|
2763
|
+
//#region ../core/dist/dev/dom/ui/menu/create-menu-view-transition.js
|
|
2764
|
+
const DEFAULT_MENU_VIEW_TRANSITION_STATE = {
|
|
2765
|
+
phase: "hidden",
|
|
2766
|
+
direction: "forward",
|
|
2767
|
+
triggerId: null
|
|
2768
|
+
};
|
|
2769
|
+
async function waitForElementAnimations(element) {
|
|
2770
|
+
const animations = element.getAnimations?.() ?? [];
|
|
2771
|
+
if (!animations.length) return;
|
|
2772
|
+
await Promise.all(animations.map((animation) => animation.finished)).catch(() => {});
|
|
2773
|
+
}
|
|
2774
|
+
function focusFirstMenuViewItem(element) {
|
|
2775
|
+
element.querySelector("[data-item]")?.focus({ preventScroll: true });
|
|
2776
|
+
}
|
|
2777
|
+
function getMenuViewState(phase) {
|
|
2778
|
+
return phase === "entering" || phase === "active" ? "active" : "inactive";
|
|
2779
|
+
}
|
|
2780
|
+
function getMenuViewTransitionAttrs(state) {
|
|
2781
|
+
return {
|
|
2782
|
+
"data-menu-view": "",
|
|
2783
|
+
"data-menu-view-state": getMenuViewState(state.phase),
|
|
2784
|
+
"data-direction": state.direction,
|
|
2785
|
+
...getTransitionStyleAttrs({
|
|
2786
|
+
transitionStarting: state.phase === "entering",
|
|
2787
|
+
transitionEnding: state.phase === "exiting"
|
|
2788
|
+
}),
|
|
2789
|
+
"data-open": state.phase !== "hidden" ? "" : void 0,
|
|
2790
|
+
hidden: state.phase === "hidden"
|
|
2791
|
+
};
|
|
2792
|
+
}
|
|
2793
|
+
function createMenuViewTransition(options = {}) {
|
|
2794
|
+
const input = createState(DEFAULT_MENU_VIEW_TRANSITION_STATE);
|
|
2795
|
+
const waitForAnimations = options.waitForAnimations ?? waitForElementAnimations;
|
|
2796
|
+
const focusFirstItem = options.focusFirstItem ?? focusFirstMenuViewItem;
|
|
2797
|
+
let element = null;
|
|
2798
|
+
let transitionId = 0;
|
|
2799
|
+
let raf1 = 0;
|
|
2800
|
+
let raf2 = 0;
|
|
2801
|
+
let focusRaf = 0;
|
|
2802
|
+
let scheduledTransitionId = 0;
|
|
2803
|
+
let scheduledPhase = null;
|
|
2804
|
+
function cancelFrames() {
|
|
2805
|
+
cancelAnimationFrame(raf1);
|
|
2806
|
+
cancelAnimationFrame(raf2);
|
|
2807
|
+
cancelAnimationFrame(focusRaf);
|
|
2808
|
+
raf1 = 0;
|
|
2809
|
+
raf2 = 0;
|
|
2810
|
+
focusRaf = 0;
|
|
2811
|
+
scheduledTransitionId = 0;
|
|
2812
|
+
scheduledPhase = null;
|
|
2813
|
+
}
|
|
2814
|
+
function scheduleCurrentPhase() {
|
|
2815
|
+
const { phase } = input.current;
|
|
2816
|
+
if (!element || phase !== "entering" && phase !== "exiting") return;
|
|
2817
|
+
if (scheduledTransitionId === transitionId && scheduledPhase === phase) return;
|
|
2818
|
+
scheduledTransitionId = transitionId;
|
|
2819
|
+
scheduledPhase = phase;
|
|
2820
|
+
if (phase === "entering") scheduleEnterComplete(transitionId, element);
|
|
2821
|
+
else scheduleExitComplete(transitionId, element);
|
|
2822
|
+
}
|
|
2823
|
+
function scheduleEnterComplete(currentTransitionId, currentElement) {
|
|
2824
|
+
forceLayout(currentElement);
|
|
2825
|
+
raf1 = requestAnimationFrame(() => {
|
|
2826
|
+
if (currentTransitionId !== transitionId) return;
|
|
2827
|
+
raf2 = requestAnimationFrame(() => {
|
|
2828
|
+
if (currentTransitionId !== transitionId) return;
|
|
2829
|
+
forceLayout(currentElement);
|
|
2830
|
+
input.patch({ phase: "active" });
|
|
2831
|
+
focusRaf = requestAnimationFrame(() => {
|
|
2832
|
+
if (currentTransitionId !== transitionId) return;
|
|
2833
|
+
focusFirstItem(currentElement);
|
|
2834
|
+
});
|
|
2835
|
+
});
|
|
2836
|
+
});
|
|
2837
|
+
}
|
|
2838
|
+
function scheduleExitComplete(currentTransitionId, currentElement) {
|
|
2839
|
+
forceLayout(currentElement);
|
|
2840
|
+
raf1 = requestAnimationFrame(async () => {
|
|
2841
|
+
await waitForAnimations(currentElement);
|
|
2842
|
+
if (currentTransitionId !== transitionId) return;
|
|
2843
|
+
const { direction, triggerId } = input.current;
|
|
2844
|
+
input.patch({
|
|
2845
|
+
phase: "hidden",
|
|
2846
|
+
triggerId: null
|
|
2847
|
+
});
|
|
2848
|
+
if (direction === "back") options.restoreFocus?.(triggerId);
|
|
2849
|
+
});
|
|
2850
|
+
}
|
|
2851
|
+
function startEnter(direction, triggerId) {
|
|
2852
|
+
transitionId++;
|
|
2853
|
+
cancelFrames();
|
|
2854
|
+
input.patch({
|
|
2855
|
+
phase: "entering",
|
|
2856
|
+
direction,
|
|
2857
|
+
triggerId
|
|
2858
|
+
});
|
|
2859
|
+
scheduleCurrentPhase();
|
|
2860
|
+
}
|
|
2861
|
+
function startExit(direction) {
|
|
2862
|
+
transitionId++;
|
|
2863
|
+
cancelFrames();
|
|
2864
|
+
input.patch({
|
|
2865
|
+
phase: "exiting",
|
|
2866
|
+
direction
|
|
2867
|
+
});
|
|
2868
|
+
scheduleCurrentPhase();
|
|
2869
|
+
}
|
|
2870
|
+
function setElement(nextElement) {
|
|
2871
|
+
if (element === nextElement) return;
|
|
2872
|
+
element = nextElement;
|
|
2873
|
+
scheduleCurrentPhase();
|
|
2874
|
+
}
|
|
2875
|
+
function sync({ active, direction, triggerId = null }) {
|
|
2876
|
+
const { phase } = input.current;
|
|
2877
|
+
if (active && (phase === "hidden" || phase === "exiting")) startEnter(direction, triggerId);
|
|
2878
|
+
else if (!active && (phase === "active" || phase === "entering")) startExit(direction);
|
|
2879
|
+
}
|
|
2880
|
+
function destroy() {
|
|
2881
|
+
transitionId++;
|
|
2882
|
+
cancelFrames();
|
|
2883
|
+
element = null;
|
|
2884
|
+
input.patch(DEFAULT_MENU_VIEW_TRANSITION_STATE);
|
|
2885
|
+
}
|
|
2886
|
+
return {
|
|
2887
|
+
input,
|
|
2888
|
+
setElement,
|
|
2889
|
+
sync,
|
|
2890
|
+
destroy
|
|
2891
|
+
};
|
|
2892
|
+
}
|
|
2893
|
+
|
|
2894
|
+
//#endregion
|
|
2895
|
+
//#region ../core/dist/dev/dom/ui/menu/menu-viewport-transition.js
|
|
2896
|
+
const DEFAULT_MENU_VIEWPORT_MIN_WIDTH = 160;
|
|
2897
|
+
const MENU_VIEW_ATTR = "data-menu-view";
|
|
2898
|
+
const MENU_VIEW_STATE_ATTR = "data-menu-view-state";
|
|
2899
|
+
const MENU_VIEW_ACTIVE_STATE = "active";
|
|
2900
|
+
const MENU_VIEW_INACTIVE_STATE = "inactive";
|
|
2901
|
+
const MENU_ROOT_VIEW_ATTR = "data-menu-root-view";
|
|
2902
|
+
const MENU_VIEWPORT_ATTR = "data-menu-viewport";
|
|
2903
|
+
const MENU_WIDTH_VAR = "--media-menu-width";
|
|
2904
|
+
const MENU_HEIGHT_VAR = "--media-menu-height";
|
|
2905
|
+
const MENU_VIEW_MEASURE_STYLE_PROPERTIES = [
|
|
2906
|
+
"position",
|
|
2907
|
+
"top",
|
|
2908
|
+
"right",
|
|
2909
|
+
"bottom",
|
|
2910
|
+
"left",
|
|
2911
|
+
"width",
|
|
2912
|
+
"height",
|
|
2913
|
+
"min-width",
|
|
2914
|
+
"max-width"
|
|
2915
|
+
];
|
|
2916
|
+
const viewportTransitionStates = /* @__PURE__ */ new WeakMap();
|
|
2917
|
+
function getMenuViewportAttrs() {
|
|
2918
|
+
return { "data-menu-viewport": "" };
|
|
2919
|
+
}
|
|
2920
|
+
function getMenuRootViewAttrs() {
|
|
2921
|
+
return {
|
|
2922
|
+
"data-menu-root-view": "",
|
|
2923
|
+
"data-menu-view": ""
|
|
2924
|
+
};
|
|
2925
|
+
}
|
|
2926
|
+
function getViewportTransitionState(content) {
|
|
2927
|
+
let state = viewportTransitionStates.get(content);
|
|
2928
|
+
if (!state) {
|
|
2929
|
+
state = {
|
|
2930
|
+
pending: null,
|
|
2931
|
+
phaseKeys: /* @__PURE__ */ new WeakMap()
|
|
2932
|
+
};
|
|
2933
|
+
viewportTransitionStates.set(content, state);
|
|
2934
|
+
}
|
|
2935
|
+
return state;
|
|
2936
|
+
}
|
|
2937
|
+
function getMenuViewportElement(content) {
|
|
2938
|
+
if (!content) return null;
|
|
2939
|
+
return content.querySelector(`:scope > [${MENU_VIEWPORT_ATTR}]`) ?? content;
|
|
2940
|
+
}
|
|
2941
|
+
function getViewportElement(content, view) {
|
|
2942
|
+
const viewport = getMenuViewportElement(content);
|
|
2943
|
+
if (viewport && viewport !== content) return viewport;
|
|
2944
|
+
if (view?.parentElement && content.contains(view.parentElement)) return view.parentElement;
|
|
2945
|
+
return content;
|
|
2946
|
+
}
|
|
2947
|
+
function getRootViewElement(viewport) {
|
|
2948
|
+
return viewport.querySelector(`:scope > [${MENU_ROOT_VIEW_ATTR}]`);
|
|
2949
|
+
}
|
|
2950
|
+
function getActiveMenuViewElement(viewport) {
|
|
2951
|
+
return Array.from(viewport.children).find((child) => child instanceof HTMLElement && child.hasAttribute(MENU_VIEW_ATTR) && !child.hasAttribute(MENU_ROOT_VIEW_ATTR) && !child.hidden && !child.hasAttribute(TransitionDataAttrs.transitionEnding)) ?? null;
|
|
2952
|
+
}
|
|
2953
|
+
function resolveMinWidth(options) {
|
|
2954
|
+
return options?.minWidth ?? DEFAULT_MENU_VIEWPORT_MIN_WIDTH;
|
|
2955
|
+
}
|
|
2956
|
+
function snapshotInlineStyle(element) {
|
|
2957
|
+
return MENU_VIEW_MEASURE_STYLE_PROPERTIES.map((property) => ({
|
|
2958
|
+
property,
|
|
2959
|
+
value: element.style.getPropertyValue(property),
|
|
2960
|
+
priority: element.style.getPropertyPriority(property)
|
|
2961
|
+
}));
|
|
2962
|
+
}
|
|
2963
|
+
function restoreInlineStyle(element, snapshot) {
|
|
2964
|
+
for (const { property, value, priority } of snapshot) if (value) element.style.setProperty(property, value, priority);
|
|
2965
|
+
else element.style.removeProperty(property);
|
|
2966
|
+
}
|
|
2967
|
+
function measureMenuView(view, minWidth) {
|
|
2968
|
+
const snapshot = snapshotInlineStyle(view);
|
|
2969
|
+
try {
|
|
2970
|
+
view.style.setProperty("position", "absolute");
|
|
2971
|
+
view.style.setProperty("top", "0px");
|
|
2972
|
+
view.style.setProperty("right", "auto");
|
|
2973
|
+
view.style.setProperty("bottom", "auto");
|
|
2974
|
+
view.style.setProperty("left", "0px");
|
|
2975
|
+
view.style.setProperty("width", "max-content");
|
|
2976
|
+
view.style.setProperty("height", "auto");
|
|
2977
|
+
view.style.setProperty("min-width", `${minWidth}px`);
|
|
2978
|
+
view.style.setProperty("max-width", "none");
|
|
2979
|
+
forceLayout(view);
|
|
2980
|
+
const rect = view.getBoundingClientRect();
|
|
2981
|
+
return {
|
|
2982
|
+
width: Math.ceil(Math.max(minWidth, rect.width, view.scrollWidth)),
|
|
2983
|
+
height: Math.ceil(Math.max(rect.height, view.scrollHeight))
|
|
2984
|
+
};
|
|
2985
|
+
} finally {
|
|
2986
|
+
restoreInlineStyle(view, snapshot);
|
|
2987
|
+
forceLayout(view);
|
|
2988
|
+
}
|
|
2989
|
+
}
|
|
2990
|
+
function setViewportSize(content, size) {
|
|
2991
|
+
content.style.setProperty(MENU_WIDTH_VAR, `${size.width}px`);
|
|
2992
|
+
content.style.setProperty(MENU_HEIGHT_VAR, `${size.height}px`);
|
|
2993
|
+
}
|
|
2994
|
+
function setMenuViewState(view, state) {
|
|
2995
|
+
view.setAttribute(MENU_VIEW_STATE_ATTR, state);
|
|
2996
|
+
if (state === MENU_VIEW_ACTIVE_STATE) view.setAttribute("data-open", "");
|
|
2997
|
+
else view.removeAttribute("data-open");
|
|
2998
|
+
}
|
|
2999
|
+
function prepareEnteringMenuView(content, rootView, entering, state, options) {
|
|
3000
|
+
const minWidth = resolveMinWidth(options);
|
|
3001
|
+
const fromSize = measureMenuView(rootView, minWidth);
|
|
3002
|
+
state.pending = {
|
|
3003
|
+
entering,
|
|
3004
|
+
fromSize,
|
|
3005
|
+
toSize: measureMenuView(entering, minWidth)
|
|
3006
|
+
};
|
|
3007
|
+
setMenuViewState(rootView, MENU_VIEW_ACTIVE_STATE);
|
|
3008
|
+
setViewportSize(content, fromSize);
|
|
3009
|
+
forceLayout(content);
|
|
3010
|
+
}
|
|
3011
|
+
function startEnteringMenuView(content, rootView, entering, state, options) {
|
|
3012
|
+
const minWidth = resolveMinWidth(options);
|
|
3013
|
+
const current = state.pending?.entering === entering ? state.pending : {
|
|
3014
|
+
entering,
|
|
3015
|
+
fromSize: measureMenuView(rootView, minWidth),
|
|
3016
|
+
toSize: measureMenuView(entering, minWidth)
|
|
3017
|
+
};
|
|
3018
|
+
state.pending = null;
|
|
3019
|
+
setViewportSize(content, current.fromSize);
|
|
3020
|
+
forceLayout(rootView);
|
|
3021
|
+
setMenuViewState(rootView, MENU_VIEW_INACTIVE_STATE);
|
|
3022
|
+
forceLayout(rootView);
|
|
3023
|
+
setViewportSize(content, current.toSize);
|
|
3024
|
+
}
|
|
3025
|
+
function startExitingMenuView(content, rootView, exiting, transitionState, options) {
|
|
3026
|
+
transitionState.pending = null;
|
|
3027
|
+
const minWidth = resolveMinWidth(options);
|
|
3028
|
+
const fromSize = measureMenuView(exiting, minWidth);
|
|
3029
|
+
const toSize = measureMenuView(rootView, minWidth);
|
|
3030
|
+
setViewportSize(content, fromSize);
|
|
3031
|
+
setMenuViewState(rootView, MENU_VIEW_INACTIVE_STATE);
|
|
3032
|
+
forceLayout(rootView);
|
|
3033
|
+
setMenuViewState(rootView, MENU_VIEW_ACTIVE_STATE);
|
|
3034
|
+
forceLayout(rootView);
|
|
3035
|
+
setViewportSize(content, toSize);
|
|
3036
|
+
}
|
|
3037
|
+
function syncMenuViewRoot(content, hasActiveChildView, options) {
|
|
3038
|
+
if (!content || hasActiveChildView) return;
|
|
3039
|
+
const viewport = getViewportElement(content);
|
|
3040
|
+
const rootView = getRootViewElement(viewport);
|
|
3041
|
+
if (!rootView || getActiveMenuViewElement(viewport)) return;
|
|
3042
|
+
const size = measureMenuView(rootView, resolveMinWidth(options));
|
|
3043
|
+
setMenuViewState(rootView, MENU_VIEW_ACTIVE_STATE);
|
|
3044
|
+
setViewportSize(content, size);
|
|
3045
|
+
}
|
|
3046
|
+
function syncMenuViewTransition(content, view, viewState, options) {
|
|
3047
|
+
if (!content || !view) return;
|
|
3048
|
+
const viewport = getViewportElement(content, view);
|
|
3049
|
+
const rootView = getRootViewElement(viewport);
|
|
3050
|
+
if (!rootView) return;
|
|
3051
|
+
const state = getViewportTransitionState(content);
|
|
3052
|
+
const phaseKey = `${viewState.phase}:${viewState.direction}`;
|
|
3053
|
+
if (state.phaseKeys.get(view) === phaseKey) return;
|
|
3054
|
+
state.phaseKeys.set(view, phaseKey);
|
|
3055
|
+
if (viewState.phase === "hidden") {
|
|
3056
|
+
state.phaseKeys.delete(view);
|
|
3057
|
+
syncMenuViewRoot(content, getActiveMenuViewElement(viewport) !== null, options);
|
|
3058
|
+
return;
|
|
3059
|
+
}
|
|
3060
|
+
if (viewState.phase === "entering") {
|
|
3061
|
+
prepareEnteringMenuView(content, rootView, view, state, options);
|
|
3062
|
+
return;
|
|
3063
|
+
}
|
|
3064
|
+
if (viewState.phase === "active") {
|
|
3065
|
+
startEnteringMenuView(content, rootView, view, state, options);
|
|
3066
|
+
return;
|
|
3067
|
+
}
|
|
3068
|
+
startExitingMenuView(content, rootView, view, state, options);
|
|
3069
|
+
}
|
|
3070
|
+
|
|
1916
3071
|
//#endregion
|
|
1917
3072
|
//#region ../core/dist/dev/dom/ui/popover/popover-positioning.js
|
|
3073
|
+
const ZERO_OFFSETS = {
|
|
3074
|
+
sideOffset: 0,
|
|
3075
|
+
alignOffset: 0,
|
|
3076
|
+
boundaryOffset: 0
|
|
3077
|
+
};
|
|
1918
3078
|
const OPPOSITE_SIDE = {
|
|
1919
3079
|
top: "bottom",
|
|
1920
3080
|
bottom: "top",
|
|
1921
3081
|
left: "right",
|
|
1922
3082
|
right: "left"
|
|
1923
3083
|
};
|
|
3084
|
+
function formatPixels(value) {
|
|
3085
|
+
return `${clamp(value, 0, Infinity)}px`;
|
|
3086
|
+
}
|
|
3087
|
+
function getCrossAxisAvailable(start, end, size, boundaryStart, boundaryEnd, align, alignOffset) {
|
|
3088
|
+
if (align === "start") return boundaryEnd - (start + alignOffset);
|
|
3089
|
+
if (align === "end") return end + alignOffset - boundaryStart;
|
|
3090
|
+
const center = start + size / 2 + alignOffset;
|
|
3091
|
+
return Math.min(center - boundaryStart, boundaryEnd - center) * 2;
|
|
3092
|
+
}
|
|
1924
3093
|
/**
|
|
1925
3094
|
* Get positioning styles for the popup element.
|
|
1926
3095
|
*
|
|
@@ -1937,17 +3106,20 @@ const OPPOSITE_SIDE = {
|
|
|
1937
3106
|
* `applyStyles()` from `@videojs/utils/dom`.
|
|
1938
3107
|
*/
|
|
1939
3108
|
function getAnchorPositionStyle(anchorName, opts, triggerRect, popupRect, boundaryRect, offsets, cssVars = PopoverCSSVars) {
|
|
1940
|
-
if (supportsAnchorPositioning()) return
|
|
1941
|
-
|
|
1942
|
-
...
|
|
1943
|
-
sideOffset: 0,
|
|
1944
|
-
alignOffset: 0
|
|
1945
|
-
}),
|
|
1946
|
-
...boundaryRect ? getPositioningCSSVars(triggerRect, boundaryRect, opts.side, cssVars) : {},
|
|
1947
|
-
position: "fixed",
|
|
1948
|
-
inset: "auto",
|
|
1949
|
-
margin: "0"
|
|
3109
|
+
if (supportsAnchorPositioning()) return {
|
|
3110
|
+
...getAnchorPositionCSS(anchorName, opts, cssVars),
|
|
3111
|
+
...triggerRect && boundaryRect ? getPositioningCSSVars(triggerRect, boundaryRect, opts, offsets, cssVars) : {}
|
|
1950
3112
|
};
|
|
3113
|
+
if (triggerRect && popupRect) {
|
|
3114
|
+
const resolved = offsets ?? ZERO_OFFSETS;
|
|
3115
|
+
return {
|
|
3116
|
+
...getManualPositionStyle(triggerRect, popupRect, opts, resolved),
|
|
3117
|
+
...boundaryRect ? getPositioningCSSVars(triggerRect, boundaryRect, opts, resolved, cssVars) : {},
|
|
3118
|
+
position: "fixed",
|
|
3119
|
+
inset: "auto",
|
|
3120
|
+
margin: "0"
|
|
3121
|
+
};
|
|
3122
|
+
}
|
|
1951
3123
|
return {};
|
|
1952
3124
|
}
|
|
1953
3125
|
/** Generate style to set on the trigger for CSS Anchor Positioning. */
|
|
@@ -1995,16 +3167,24 @@ function getAnchorPositionCSS(anchorName, opts, cssVars = PopoverCSSVars) {
|
|
|
1995
3167
|
* Accepts a `cssVars` map so the same logic works for both popover
|
|
1996
3168
|
* (`--media-popover-*`) and tooltip (`--media-tooltip-*`) namespaces.
|
|
1997
3169
|
*/
|
|
1998
|
-
function getPositioningCSSVars(triggerRect, boundaryRect,
|
|
3170
|
+
function getPositioningCSSVars(triggerRect, boundaryRect, opts, offsets = ZERO_OFFSETS, cssVars = PopoverCSSVars) {
|
|
1999
3171
|
const vars = {};
|
|
3172
|
+
const { side, align } = opts;
|
|
3173
|
+
const boundaryOffset = offsets.boundaryOffset ?? 0;
|
|
3174
|
+
const boundaryStartX = boundaryRect.left + boundaryOffset;
|
|
3175
|
+
const boundaryEndX = boundaryRect.right - boundaryOffset;
|
|
3176
|
+
const boundaryStartY = boundaryRect.top + boundaryOffset;
|
|
3177
|
+
const boundaryEndY = boundaryRect.bottom - boundaryOffset;
|
|
2000
3178
|
vars[cssVars.anchorWidth] = `${triggerRect.width}px`;
|
|
2001
3179
|
vars[cssVars.anchorHeight] = `${triggerRect.height}px`;
|
|
2002
3180
|
if (side === "top" || side === "bottom") {
|
|
2003
|
-
|
|
2004
|
-
vars[cssVars.
|
|
3181
|
+
const sideSpace = side === "top" ? triggerRect.top - boundaryStartY : boundaryEndY - triggerRect.bottom;
|
|
3182
|
+
vars[cssVars.availableHeight] = formatPixels(sideSpace - offsets.sideOffset);
|
|
3183
|
+
vars[cssVars.availableWidth] = formatPixels(getCrossAxisAvailable(triggerRect.left, triggerRect.right, triggerRect.width, boundaryStartX, boundaryEndX, align, offsets.alignOffset));
|
|
2005
3184
|
} else {
|
|
2006
|
-
|
|
2007
|
-
vars[cssVars.
|
|
3185
|
+
const sideSpace = side === "left" ? triggerRect.left - boundaryStartX : boundaryEndX - triggerRect.right;
|
|
3186
|
+
vars[cssVars.availableWidth] = formatPixels(sideSpace - offsets.sideOffset);
|
|
3187
|
+
vars[cssVars.availableHeight] = formatPixels(getCrossAxisAvailable(triggerRect.top, triggerRect.bottom, triggerRect.height, boundaryStartY, boundaryEndY, align, offsets.alignOffset));
|
|
2008
3188
|
}
|
|
2009
3189
|
return vars;
|
|
2010
3190
|
}
|
|
@@ -2042,14 +3222,15 @@ function getManualPositionStyle(triggerRect, popupRect, opts, offsets = {
|
|
|
2042
3222
|
};
|
|
2043
3223
|
}
|
|
2044
3224
|
/**
|
|
2045
|
-
* Read
|
|
3225
|
+
* Read positioning offset CSS custom properties from the
|
|
2046
3226
|
* popup element's computed style, returning numeric pixel values.
|
|
2047
3227
|
*/
|
|
2048
3228
|
function resolveOffsets(el, cssVars = PopoverCSSVars) {
|
|
2049
3229
|
const computed = getComputedStyle(el);
|
|
2050
3230
|
return {
|
|
2051
3231
|
sideOffset: resolveCSSLength(el, computed.getPropertyValue(cssVars.sideOffset)),
|
|
2052
|
-
alignOffset: resolveCSSLength(el, computed.getPropertyValue(cssVars.alignOffset))
|
|
3232
|
+
alignOffset: resolveCSSLength(el, computed.getPropertyValue(cssVars.alignOffset)),
|
|
3233
|
+
boundaryOffset: resolveCSSLength(el, computed.getPropertyValue(cssVars.boundaryOffset))
|
|
2053
3234
|
};
|
|
2054
3235
|
}
|
|
2055
3236
|
/**
|
|
@@ -2063,17 +3244,7 @@ function getPopupPositionRect(el) {
|
|
|
2063
3244
|
const rect = el.getBoundingClientRect();
|
|
2064
3245
|
const width = el.offsetWidth || rect.width;
|
|
2065
3246
|
const height = el.offsetHeight || rect.height;
|
|
2066
|
-
|
|
2067
|
-
...rect,
|
|
2068
|
-
width,
|
|
2069
|
-
height,
|
|
2070
|
-
right: rect.left + width,
|
|
2071
|
-
bottom: rect.top + height
|
|
2072
|
-
};
|
|
2073
|
-
return {
|
|
2074
|
-
...adjustedRect,
|
|
2075
|
-
toJSON: () => adjustedRect
|
|
2076
|
-
};
|
|
3247
|
+
return createDOMRect(rect.left, rect.top, width, height);
|
|
2077
3248
|
}
|
|
2078
3249
|
|
|
2079
3250
|
//#endregion
|
|
@@ -2445,7 +3616,8 @@ const REASON_MAP = {
|
|
|
2445
3616
|
hover: "hover",
|
|
2446
3617
|
focus: "focus",
|
|
2447
3618
|
escape: "escape",
|
|
2448
|
-
blur: "blur"
|
|
3619
|
+
blur: "blur",
|
|
3620
|
+
"imperative-action": "imperative-action"
|
|
2449
3621
|
};
|
|
2450
3622
|
function createTooltip(options) {
|
|
2451
3623
|
const popoverOpts = {
|
|
@@ -2513,7 +3685,7 @@ function createTooltip(options) {
|
|
|
2513
3685
|
return popover.triggerElement;
|
|
2514
3686
|
},
|
|
2515
3687
|
open: () => popover.open("hover"),
|
|
2516
|
-
close: () => popover.close(
|
|
3688
|
+
close: (reason = "hover") => popover.close(reason)
|
|
2517
3689
|
};
|
|
2518
3690
|
}
|
|
2519
3691
|
|
|
@@ -2642,6 +3814,15 @@ function applyElementProps(element, props, options) {
|
|
|
2642
3814
|
else element.setAttribute(key, String(value));
|
|
2643
3815
|
}
|
|
2644
3816
|
|
|
3817
|
+
//#endregion
|
|
3818
|
+
//#region ../core/dist/dev/dom/utils/event.js
|
|
3819
|
+
function isEventWithinElement(event, element) {
|
|
3820
|
+
if (!element) return false;
|
|
3821
|
+
if (isFunction(event.composedPath)) return event.composedPath().includes(element);
|
|
3822
|
+
const target = event.target;
|
|
3823
|
+
return target instanceof Node && element.contains(target);
|
|
3824
|
+
}
|
|
3825
|
+
|
|
2645
3826
|
//#endregion
|
|
2646
3827
|
//#region ../core/dist/dev/dom/utils/log.js
|
|
2647
3828
|
const warned = /* @__PURE__ */ new Set();
|
|
@@ -2713,6 +3894,8 @@ var MediaButtonElement = class extends MediaElement {
|
|
|
2713
3894
|
this.disabled = false;
|
|
2714
3895
|
this.label = "";
|
|
2715
3896
|
this.hotkeyAction = void 0;
|
|
3897
|
+
this.#disconnect = null;
|
|
3898
|
+
this.#hotkeyRegistry = null;
|
|
2716
3899
|
}
|
|
2717
3900
|
static {
|
|
2718
3901
|
this.properties = {
|
|
@@ -2723,8 +3906,8 @@ var MediaButtonElement = class extends MediaElement {
|
|
|
2723
3906
|
get $state() {
|
|
2724
3907
|
return this.core.state;
|
|
2725
3908
|
}
|
|
2726
|
-
#disconnect
|
|
2727
|
-
#hotkeyRegistry
|
|
3909
|
+
#disconnect;
|
|
3910
|
+
#hotkeyRegistry;
|
|
2728
3911
|
connectedCallback() {
|
|
2729
3912
|
super.connectedCallback();
|
|
2730
3913
|
if (this.destroyed) return;
|
|
@@ -2800,23 +3983,6 @@ var PlayButtonElement = class extends MediaButtonElement {
|
|
|
2800
3983
|
}
|
|
2801
3984
|
};
|
|
2802
3985
|
|
|
2803
|
-
//#endregion
|
|
2804
|
-
//#region src/ui/playback-rate-button/playback-rate-button-element.ts
|
|
2805
|
-
var PlaybackRateButtonElement = class extends MediaButtonElement {
|
|
2806
|
-
constructor(..._args) {
|
|
2807
|
-
super(..._args);
|
|
2808
|
-
this.core = new PlaybackRateButtonCore();
|
|
2809
|
-
this.stateAttrMap = PlaybackRateButtonDataAttrs;
|
|
2810
|
-
this.mediaState = new PlayerController(this, playerContext, selectPlaybackRate);
|
|
2811
|
-
}
|
|
2812
|
-
static {
|
|
2813
|
-
this.tagName = "media-playback-rate-button";
|
|
2814
|
-
}
|
|
2815
|
-
activate(state) {
|
|
2816
|
-
this.core.cycle(state);
|
|
2817
|
-
}
|
|
2818
|
-
};
|
|
2819
|
-
|
|
2820
3986
|
//#endregion
|
|
2821
3987
|
//#region src/ui/position-controller.ts
|
|
2822
3988
|
/**
|
|
@@ -2824,7 +3990,8 @@ var PlaybackRateButtonElement = class extends MediaButtonElement {
|
|
|
2824
3990
|
* popup elements (tooltips, popovers). Tracks scroll, resize, and
|
|
2825
3991
|
* ResizeObserver events to keep the popup aligned with its trigger.
|
|
2826
3992
|
*
|
|
2827
|
-
*
|
|
3993
|
+
* Native CSS Anchor Positioning still uses this controller for dynamic
|
|
3994
|
+
* sizing variables such as available width/height.
|
|
2828
3995
|
*/
|
|
2829
3996
|
var PositionController = class {
|
|
2830
3997
|
#host;
|
|
@@ -2832,6 +3999,7 @@ var PositionController = class {
|
|
|
2832
3999
|
#frame = 0;
|
|
2833
4000
|
#resizeObserver = null;
|
|
2834
4001
|
#trigger = null;
|
|
4002
|
+
#boundary = null;
|
|
2835
4003
|
constructor(host) {
|
|
2836
4004
|
this.#host = host;
|
|
2837
4005
|
host.addController(this);
|
|
@@ -2842,15 +4010,16 @@ var PositionController = class {
|
|
|
2842
4010
|
return this.#host.getRootNode().querySelector(`[commandfor="${this.#host.id}"]`);
|
|
2843
4011
|
}
|
|
2844
4012
|
/** Start or update position tracking for the given trigger. */
|
|
2845
|
-
sync(trigger) {
|
|
2846
|
-
if (supportsAnchorPositioning()) return;
|
|
4013
|
+
sync(trigger, boundary = null) {
|
|
2847
4014
|
if (!trigger) return;
|
|
2848
|
-
if (this.#abort && this.#trigger === trigger) return;
|
|
4015
|
+
if (this.#abort && this.#trigger === trigger && this.#boundary === boundary) return;
|
|
2849
4016
|
this.cleanup();
|
|
2850
4017
|
this.#abort = new AbortController();
|
|
2851
4018
|
this.#trigger = trigger;
|
|
4019
|
+
this.#boundary = boundary;
|
|
2852
4020
|
const { signal } = this.#abort;
|
|
2853
|
-
const reposition = () => {
|
|
4021
|
+
const reposition = (event) => {
|
|
4022
|
+
if (event && isEventWithinElement(event, this.#host)) return;
|
|
2854
4023
|
cancelAnimationFrame(this.#frame);
|
|
2855
4024
|
this.#frame = requestAnimationFrame(() => {
|
|
2856
4025
|
if (signal.aborted) return;
|
|
@@ -2869,6 +4038,7 @@ var PositionController = class {
|
|
|
2869
4038
|
});
|
|
2870
4039
|
this.#resizeObserver.observe(trigger);
|
|
2871
4040
|
this.#resizeObserver.observe(this.#host);
|
|
4041
|
+
if (boundary) this.#resizeObserver.observe(boundary);
|
|
2872
4042
|
}
|
|
2873
4043
|
reposition();
|
|
2874
4044
|
}
|
|
@@ -2877,6 +4047,7 @@ var PositionController = class {
|
|
|
2877
4047
|
this.#abort?.abort();
|
|
2878
4048
|
this.#abort = null;
|
|
2879
4049
|
this.#trigger = null;
|
|
4050
|
+
this.#boundary = null;
|
|
2880
4051
|
cancelAnimationFrame(this.#frame);
|
|
2881
4052
|
this.#frame = 0;
|
|
2882
4053
|
this.#resizeObserver?.disconnect();
|
|
@@ -2890,6 +4061,440 @@ var PositionController = class {
|
|
|
2890
4061
|
}
|
|
2891
4062
|
};
|
|
2892
4063
|
|
|
4064
|
+
//#endregion
|
|
4065
|
+
//#region src/ui/menu/context.ts
|
|
4066
|
+
const MENU_CONTEXT_KEY = Symbol("@videojs/menu");
|
|
4067
|
+
const MENU_RADIO_GROUP_CONTEXT_KEY = Symbol("@videojs/menu-radio-group");
|
|
4068
|
+
const menuContext = createContext(MENU_CONTEXT_KEY);
|
|
4069
|
+
const menuRadioGroupContext = createContext(MENU_RADIO_GROUP_CONTEXT_KEY);
|
|
4070
|
+
|
|
4071
|
+
//#endregion
|
|
4072
|
+
//#region src/ui/menu/menu-element.ts
|
|
4073
|
+
var MenuElement = class extends MediaElement {
|
|
4074
|
+
constructor(..._args) {
|
|
4075
|
+
super(..._args);
|
|
4076
|
+
this.open = MenuCore.defaultProps.open;
|
|
4077
|
+
this.defaultOpen = MenuCore.defaultProps.defaultOpen;
|
|
4078
|
+
this.side = MenuCore.defaultProps.side;
|
|
4079
|
+
this.align = MenuCore.defaultProps.align;
|
|
4080
|
+
this.closeOnEscape = MenuCore.defaultProps.closeOnEscape;
|
|
4081
|
+
this.closeOnOutsideClick = MenuCore.defaultProps.closeOnOutsideClick;
|
|
4082
|
+
this.boundary = "container";
|
|
4083
|
+
this.#core = new MenuCore();
|
|
4084
|
+
this.#provider = new ContextProvider(this, { context: menuContext });
|
|
4085
|
+
this.#position = new PositionController(this);
|
|
4086
|
+
this.#containerCtx = new ContextConsumer(this, {
|
|
4087
|
+
context: containerContext,
|
|
4088
|
+
subscribe: true
|
|
4089
|
+
});
|
|
4090
|
+
this.#parentCtx = new ContextConsumer(this, {
|
|
4091
|
+
context: menuContext,
|
|
4092
|
+
subscribe: true
|
|
4093
|
+
});
|
|
4094
|
+
this.#menuViewTransition = createMenuViewTransition({
|
|
4095
|
+
focusFirstItem: () => {
|
|
4096
|
+
this.#menu?.highlightFirstItem({ preventScroll: true });
|
|
4097
|
+
},
|
|
4098
|
+
restoreFocus: (triggerId) => {
|
|
4099
|
+
const triggerElement = triggerId ? document.getElementById(triggerId) : null;
|
|
4100
|
+
const fallbackTrigger = this.parentElement?.querySelector(`[data-has-submenu][commandfor="${this.id}"]`);
|
|
4101
|
+
(triggerElement ?? fallbackTrigger)?.focus({ preventScroll: true });
|
|
4102
|
+
}
|
|
4103
|
+
});
|
|
4104
|
+
this.#menu = null;
|
|
4105
|
+
this.#snapshot = null;
|
|
4106
|
+
this.#navSnapshot = null;
|
|
4107
|
+
this.#menuViewSnapshot = null;
|
|
4108
|
+
this.#navState = {
|
|
4109
|
+
stack: [],
|
|
4110
|
+
direction: "forward"
|
|
4111
|
+
};
|
|
4112
|
+
this.#disconnect = null;
|
|
4113
|
+
this.#triggerAbort = null;
|
|
4114
|
+
this.#currentTrigger = null;
|
|
4115
|
+
this.#handleContentKeyDown = (event) => {
|
|
4116
|
+
const isNavigationKey = isMenuNavigationKey(event);
|
|
4117
|
+
const defaultPreventedBeforeMenu = event.defaultPrevented;
|
|
4118
|
+
this.#menu?.contentProps.onKeyDown(event);
|
|
4119
|
+
const parentCtx = this.#parentCtx.value ?? null;
|
|
4120
|
+
if (!parentCtx) {
|
|
4121
|
+
if (event.key === "Escape") return;
|
|
4122
|
+
if (isNavigationKey) event.stopPropagation();
|
|
4123
|
+
return;
|
|
4124
|
+
}
|
|
4125
|
+
const stack = parentCtx.menu.navigationInput.current.stack;
|
|
4126
|
+
const ownsActiveSubmenu = stack[stack.length - 1]?.menuId === this.id;
|
|
4127
|
+
const isBackNavigationKey = event.key === "ArrowLeft" || event.key === "Escape";
|
|
4128
|
+
if (isBackNavigationKey && ownsActiveSubmenu && !defaultPreventedBeforeMenu) {
|
|
4129
|
+
event.preventDefault();
|
|
4130
|
+
parentCtx.menu.pop();
|
|
4131
|
+
}
|
|
4132
|
+
if (isNavigationKey && (!isBackNavigationKey || ownsActiveSubmenu)) event.stopPropagation();
|
|
4133
|
+
};
|
|
4134
|
+
this.#handleContentFocusOut = (event) => {
|
|
4135
|
+
this.#menu?.contentProps.onFocusOut(event);
|
|
4136
|
+
};
|
|
4137
|
+
}
|
|
4138
|
+
static {
|
|
4139
|
+
this.tagName = "media-menu";
|
|
4140
|
+
}
|
|
4141
|
+
static {
|
|
4142
|
+
this.properties = {
|
|
4143
|
+
open: { type: Boolean },
|
|
4144
|
+
defaultOpen: {
|
|
4145
|
+
type: Boolean,
|
|
4146
|
+
attribute: "default-open"
|
|
4147
|
+
},
|
|
4148
|
+
side: { type: String },
|
|
4149
|
+
align: { type: String },
|
|
4150
|
+
closeOnEscape: {
|
|
4151
|
+
type: Boolean,
|
|
4152
|
+
attribute: "close-on-escape"
|
|
4153
|
+
},
|
|
4154
|
+
closeOnOutsideClick: {
|
|
4155
|
+
type: Boolean,
|
|
4156
|
+
attribute: "close-on-outside-click"
|
|
4157
|
+
},
|
|
4158
|
+
boundary: { type: String }
|
|
4159
|
+
};
|
|
4160
|
+
}
|
|
4161
|
+
#core;
|
|
4162
|
+
#provider;
|
|
4163
|
+
#position;
|
|
4164
|
+
#containerCtx;
|
|
4165
|
+
#parentCtx;
|
|
4166
|
+
#menuViewTransition;
|
|
4167
|
+
#menu;
|
|
4168
|
+
#snapshot;
|
|
4169
|
+
#navSnapshot;
|
|
4170
|
+
#menuViewSnapshot;
|
|
4171
|
+
#navState;
|
|
4172
|
+
#disconnect;
|
|
4173
|
+
#triggerAbort;
|
|
4174
|
+
#currentTrigger;
|
|
4175
|
+
connectedCallback() {
|
|
4176
|
+
super.connectedCallback();
|
|
4177
|
+
if (this.destroyed) return;
|
|
4178
|
+
this.setAttribute(POPUP_HOST_ATTR, "");
|
|
4179
|
+
this.#disconnect = new AbortController();
|
|
4180
|
+
this.#menu = createMenu({
|
|
4181
|
+
transition: createTransition(),
|
|
4182
|
+
onOpenChange: (nextOpen, details) => {
|
|
4183
|
+
this.open = nextOpen;
|
|
4184
|
+
this.dispatchEvent(new CustomEvent("open-change", { detail: {
|
|
4185
|
+
open: nextOpen,
|
|
4186
|
+
...details
|
|
4187
|
+
} }));
|
|
4188
|
+
},
|
|
4189
|
+
closeOnEscape: () => this.closeOnEscape,
|
|
4190
|
+
closeOnOutsideClick: () => this.closeOnOutsideClick,
|
|
4191
|
+
group: () => this.#parentCtx.value ? void 0 : this.#containerCtx.value?.popupGroup
|
|
4192
|
+
});
|
|
4193
|
+
this.#menu.setContentElement(this);
|
|
4194
|
+
applyElementProps(this, {
|
|
4195
|
+
onKeyDown: this.#handleContentKeyDown,
|
|
4196
|
+
onFocusOut: this.#handleContentFocusOut
|
|
4197
|
+
}, { signal: this.#disconnect.signal });
|
|
4198
|
+
if (this.#snapshot) this.#snapshot.track(this.#menu.input);
|
|
4199
|
+
else this.#snapshot = new SnapshotController(this, this.#menu.input);
|
|
4200
|
+
if (this.#navSnapshot) this.#navSnapshot.track(this.#menu.navigationInput);
|
|
4201
|
+
else this.#navSnapshot = new SnapshotController(this, this.#menu.navigationInput);
|
|
4202
|
+
if (this.#menuViewSnapshot) this.#menuViewSnapshot.track(this.#menuViewTransition.input);
|
|
4203
|
+
else this.#menuViewSnapshot = new SnapshotController(this, this.#menuViewTransition.input);
|
|
4204
|
+
}
|
|
4205
|
+
firstUpdated(changed) {
|
|
4206
|
+
super.firstUpdated(changed);
|
|
4207
|
+
if (this.defaultOpen && !this.open) this.#menu?.open();
|
|
4208
|
+
}
|
|
4209
|
+
disconnectedCallback() {
|
|
4210
|
+
super.disconnectedCallback();
|
|
4211
|
+
this.#cleanupTrigger();
|
|
4212
|
+
this.#menu?.destroy();
|
|
4213
|
+
this.#menu = null;
|
|
4214
|
+
this.#disconnect?.abort();
|
|
4215
|
+
this.#disconnect = null;
|
|
4216
|
+
this.#menuViewTransition.destroy();
|
|
4217
|
+
}
|
|
4218
|
+
close(reason = "imperative-action") {
|
|
4219
|
+
this.#menu?.close(reason);
|
|
4220
|
+
}
|
|
4221
|
+
willUpdate(changed) {
|
|
4222
|
+
super.willUpdate(changed);
|
|
4223
|
+
const isSubmenu = (this.#parentCtx.value ?? null) !== null;
|
|
4224
|
+
this.#core.setProps({
|
|
4225
|
+
open: this.open,
|
|
4226
|
+
defaultOpen: this.defaultOpen,
|
|
4227
|
+
side: this.side,
|
|
4228
|
+
align: this.align,
|
|
4229
|
+
closeOnEscape: this.closeOnEscape,
|
|
4230
|
+
closeOnOutsideClick: this.closeOnOutsideClick,
|
|
4231
|
+
isSubmenu
|
|
4232
|
+
});
|
|
4233
|
+
if (this.#menu && changed.has("open") && !isSubmenu) {
|
|
4234
|
+
const { active: interactionOpen } = this.#menu.input.current;
|
|
4235
|
+
if (this.open !== interactionOpen) if (this.open) this.#menu.open();
|
|
4236
|
+
else this.#menu.close();
|
|
4237
|
+
}
|
|
4238
|
+
}
|
|
4239
|
+
update(_changed) {
|
|
4240
|
+
super.update(_changed);
|
|
4241
|
+
if (!this.#menu) return;
|
|
4242
|
+
const parentCtx = this.#parentCtx.value ?? null;
|
|
4243
|
+
const isSubmenu = parentCtx !== null;
|
|
4244
|
+
this.#navState = this.#menu.navigationInput.current;
|
|
4245
|
+
const input = this.#menu.input.current;
|
|
4246
|
+
this.#core.setInput(input);
|
|
4247
|
+
const state = this.#core.getState();
|
|
4248
|
+
if (isSubmenu && parentCtx) this.#updateAsSubmenu(parentCtx);
|
|
4249
|
+
else this.#updateAsRoot(state);
|
|
4250
|
+
const parentMenu = parentCtx?.menu ?? null;
|
|
4251
|
+
this.#provider.setValue({
|
|
4252
|
+
menu: this.#menu,
|
|
4253
|
+
state,
|
|
4254
|
+
stateAttrMap: MenuDataAttrs,
|
|
4255
|
+
navigation: this.#navState,
|
|
4256
|
+
parentMenu
|
|
4257
|
+
});
|
|
4258
|
+
}
|
|
4259
|
+
#updateAsRoot(state) {
|
|
4260
|
+
if (!this.#menu) return;
|
|
4261
|
+
const triggerElement = this.#position.findTrigger();
|
|
4262
|
+
this.#syncTrigger(triggerElement);
|
|
4263
|
+
applyElementProps(this, {
|
|
4264
|
+
...this.#core.getContentAttrs(state),
|
|
4265
|
+
...getMenuViewportAttrs()
|
|
4266
|
+
});
|
|
4267
|
+
applyStateDataAttrs(this, state, MenuDataAttrs);
|
|
4268
|
+
if (state.open) tryShowPopover(this);
|
|
4269
|
+
else tryHidePopover(this);
|
|
4270
|
+
if (this.#currentTrigger) {
|
|
4271
|
+
applyElementProps(this.#currentTrigger, this.#core.getTriggerAttrs(state, this.id));
|
|
4272
|
+
applyStyles(this.#currentTrigger, getAnchorNameStyle(this.id));
|
|
4273
|
+
}
|
|
4274
|
+
if (!state.open) {
|
|
4275
|
+
this.#position.cleanup();
|
|
4276
|
+
return;
|
|
4277
|
+
}
|
|
4278
|
+
syncMenuViewRoot(this, this.#navState.stack.length > 0);
|
|
4279
|
+
const positionOptions = getRootPositionOptions(state.side, state.align);
|
|
4280
|
+
if (!positionOptions) return;
|
|
4281
|
+
const boundaryElement = this.#getBoundaryElement();
|
|
4282
|
+
const triggerRect = this.#currentTrigger?.getBoundingClientRect();
|
|
4283
|
+
const boundaryRect = getPositioningBoundaryRect(boundaryElement);
|
|
4284
|
+
const offsets = resolveOffsets(this);
|
|
4285
|
+
if (supportsAnchorPositioning()) applyStyles(this, getAnchorPositionStyle(this.id, positionOptions, triggerRect, void 0, boundaryRect, offsets));
|
|
4286
|
+
else {
|
|
4287
|
+
const selfRect = getPopupPositionRect(this);
|
|
4288
|
+
applyStyles(this, getAnchorPositionStyle(this.id, positionOptions, triggerRect, selfRect, boundaryRect, offsets));
|
|
4289
|
+
}
|
|
4290
|
+
this.#position.sync(this.#currentTrigger, boundaryElement);
|
|
4291
|
+
}
|
|
4292
|
+
#updateAsSubmenu(parentCtx) {
|
|
4293
|
+
const parentNavigation = parentCtx.navigation;
|
|
4294
|
+
const topEntry = parentNavigation.stack[parentNavigation.stack.length - 1];
|
|
4295
|
+
const isActive = (topEntry?.menuId ?? null) === this.id;
|
|
4296
|
+
this.#menuViewTransition.setElement(this);
|
|
4297
|
+
this.#menuViewTransition.sync({
|
|
4298
|
+
active: isActive,
|
|
4299
|
+
direction: parentNavigation.direction,
|
|
4300
|
+
triggerId: topEntry?.triggerId ?? null
|
|
4301
|
+
});
|
|
4302
|
+
const transitionState = this.#menuViewTransition.input.current;
|
|
4303
|
+
applyElementProps(this, {
|
|
4304
|
+
...getMenuViewTransitionAttrs(transitionState),
|
|
4305
|
+
role: "menu",
|
|
4306
|
+
tabIndex: -1,
|
|
4307
|
+
"data-submenu": ""
|
|
4308
|
+
});
|
|
4309
|
+
syncMenuViewTransition(parentCtx.menu.contentElement, this, transitionState);
|
|
4310
|
+
}
|
|
4311
|
+
#handleContentKeyDown;
|
|
4312
|
+
#handleContentFocusOut;
|
|
4313
|
+
#syncTrigger(triggerElement) {
|
|
4314
|
+
if (triggerElement === this.#currentTrigger) return;
|
|
4315
|
+
this.#position.cleanup();
|
|
4316
|
+
this.#cleanupTrigger();
|
|
4317
|
+
this.#currentTrigger = triggerElement;
|
|
4318
|
+
this.#menu?.setTriggerElement(triggerElement);
|
|
4319
|
+
if (triggerElement && this.#menu) {
|
|
4320
|
+
this.#triggerAbort = new AbortController();
|
|
4321
|
+
applyElementProps(triggerElement, this.#menu.triggerProps, { signal: this.#triggerAbort.signal });
|
|
4322
|
+
}
|
|
4323
|
+
}
|
|
4324
|
+
#cleanupTrigger() {
|
|
4325
|
+
if (this.#currentTrigger) {
|
|
4326
|
+
applyElementProps(this.#currentTrigger, {
|
|
4327
|
+
"aria-expanded": void 0,
|
|
4328
|
+
"aria-haspopup": void 0,
|
|
4329
|
+
"aria-controls": void 0
|
|
4330
|
+
});
|
|
4331
|
+
this.#currentTrigger.style.removeProperty("anchor-name");
|
|
4332
|
+
}
|
|
4333
|
+
this.#triggerAbort?.abort();
|
|
4334
|
+
this.#triggerAbort = null;
|
|
4335
|
+
this.#currentTrigger = null;
|
|
4336
|
+
}
|
|
4337
|
+
#getBoundaryElement() {
|
|
4338
|
+
return resolvePositioningBoundary(this.boundary, {
|
|
4339
|
+
container: this.#containerCtx.value?.container ?? null,
|
|
4340
|
+
root: this.getRootNode()
|
|
4341
|
+
});
|
|
4342
|
+
}
|
|
4343
|
+
};
|
|
4344
|
+
|
|
4345
|
+
//#endregion
|
|
4346
|
+
//#region src/ui/menu/menu-item-indicator-element.ts
|
|
4347
|
+
var MenuItemIndicatorElement = class extends MediaElement {
|
|
4348
|
+
constructor(..._args) {
|
|
4349
|
+
super(..._args);
|
|
4350
|
+
this.checked = false;
|
|
4351
|
+
this.forceMount = false;
|
|
4352
|
+
}
|
|
4353
|
+
static {
|
|
4354
|
+
this.tagName = "media-menu-item-indicator";
|
|
4355
|
+
}
|
|
4356
|
+
static {
|
|
4357
|
+
this.properties = {
|
|
4358
|
+
checked: { type: Boolean },
|
|
4359
|
+
forceMount: {
|
|
4360
|
+
type: Boolean,
|
|
4361
|
+
attribute: "force-mount"
|
|
4362
|
+
}
|
|
4363
|
+
};
|
|
4364
|
+
}
|
|
4365
|
+
update(_changed) {
|
|
4366
|
+
super.update(_changed);
|
|
4367
|
+
const hidden = !this.checked && !this.forceMount;
|
|
4368
|
+
applyElementProps(this, {
|
|
4369
|
+
"aria-hidden": "true",
|
|
4370
|
+
hidden
|
|
4371
|
+
});
|
|
4372
|
+
}
|
|
4373
|
+
};
|
|
4374
|
+
|
|
4375
|
+
//#endregion
|
|
4376
|
+
//#region src/ui/menu/menu-radio-group-element.ts
|
|
4377
|
+
var MenuRadioGroupElement = class extends MediaElement {
|
|
4378
|
+
constructor(..._args) {
|
|
4379
|
+
super(..._args);
|
|
4380
|
+
this.value = "";
|
|
4381
|
+
this.label = void 0;
|
|
4382
|
+
this.#menuCtx = new ContextConsumer(this, {
|
|
4383
|
+
context: menuContext,
|
|
4384
|
+
subscribe: true
|
|
4385
|
+
});
|
|
4386
|
+
this.#provider = new ContextProvider(this, { context: menuRadioGroupContext });
|
|
4387
|
+
}
|
|
4388
|
+
static {
|
|
4389
|
+
this.tagName = "media-menu-radio-group";
|
|
4390
|
+
}
|
|
4391
|
+
static {
|
|
4392
|
+
this.properties = {
|
|
4393
|
+
value: { type: String },
|
|
4394
|
+
label: { type: String }
|
|
4395
|
+
};
|
|
4396
|
+
}
|
|
4397
|
+
#menuCtx;
|
|
4398
|
+
#provider;
|
|
4399
|
+
update(_changed) {
|
|
4400
|
+
super.update(_changed);
|
|
4401
|
+
applyElementProps(this, {
|
|
4402
|
+
role: "group",
|
|
4403
|
+
"aria-label": this.label
|
|
4404
|
+
});
|
|
4405
|
+
const ctx = this.#menuCtx.value;
|
|
4406
|
+
if (ctx) applyStateDataAttrs(this, ctx.state, ctx.stateAttrMap);
|
|
4407
|
+
this.#provider.setValue({
|
|
4408
|
+
value: this.value,
|
|
4409
|
+
onValueChange: (next) => {
|
|
4410
|
+
this.value = next;
|
|
4411
|
+
this.dispatchEvent(new CustomEvent("value-change", {
|
|
4412
|
+
detail: { value: next },
|
|
4413
|
+
bubbles: true
|
|
4414
|
+
}));
|
|
4415
|
+
}
|
|
4416
|
+
});
|
|
4417
|
+
}
|
|
4418
|
+
};
|
|
4419
|
+
|
|
4420
|
+
//#endregion
|
|
4421
|
+
//#region src/ui/menu/menu-radio-item-element.ts
|
|
4422
|
+
var MenuRadioItemElement = class extends MediaElement {
|
|
4423
|
+
constructor(..._args) {
|
|
4424
|
+
super(..._args);
|
|
4425
|
+
this.value = "";
|
|
4426
|
+
this.disabled = false;
|
|
4427
|
+
this.#menuCtx = new ContextConsumer(this, {
|
|
4428
|
+
context: menuContext,
|
|
4429
|
+
subscribe: true
|
|
4430
|
+
});
|
|
4431
|
+
this.#groupCtx = new ContextConsumer(this, {
|
|
4432
|
+
context: menuRadioGroupContext,
|
|
4433
|
+
subscribe: true
|
|
4434
|
+
});
|
|
4435
|
+
this.#disconnect = null;
|
|
4436
|
+
this.#registered = false;
|
|
4437
|
+
this.#cleanupRegistration = null;
|
|
4438
|
+
}
|
|
4439
|
+
static {
|
|
4440
|
+
this.tagName = "media-menu-radio-item";
|
|
4441
|
+
}
|
|
4442
|
+
static {
|
|
4443
|
+
this.properties = {
|
|
4444
|
+
value: { type: String },
|
|
4445
|
+
disabled: { type: Boolean }
|
|
4446
|
+
};
|
|
4447
|
+
}
|
|
4448
|
+
#menuCtx;
|
|
4449
|
+
#groupCtx;
|
|
4450
|
+
#disconnect;
|
|
4451
|
+
#registered;
|
|
4452
|
+
#cleanupRegistration;
|
|
4453
|
+
connectedCallback() {
|
|
4454
|
+
super.connectedCallback();
|
|
4455
|
+
this.#disconnect = new AbortController();
|
|
4456
|
+
this.#registered = false;
|
|
4457
|
+
}
|
|
4458
|
+
disconnectedCallback() {
|
|
4459
|
+
super.disconnectedCallback();
|
|
4460
|
+
this.#cleanupRegistration?.();
|
|
4461
|
+
this.#cleanupRegistration = null;
|
|
4462
|
+
this.#disconnect?.abort();
|
|
4463
|
+
this.#disconnect = null;
|
|
4464
|
+
this.#registered = false;
|
|
4465
|
+
}
|
|
4466
|
+
update(_changed) {
|
|
4467
|
+
super.update(_changed);
|
|
4468
|
+
const menuCtx = this.#menuCtx.value;
|
|
4469
|
+
const groupCtx = this.#groupCtx.value;
|
|
4470
|
+
if (!menuCtx || !groupCtx || !this.#disconnect) return;
|
|
4471
|
+
if (!this.#registered) {
|
|
4472
|
+
this.#registered = true;
|
|
4473
|
+
this.#cleanupRegistration = menuCtx.menu.registerItem(this);
|
|
4474
|
+
applyElementProps(this, {
|
|
4475
|
+
onClick: () => {
|
|
4476
|
+
const currentMenuCtx = this.#menuCtx.value;
|
|
4477
|
+
const currentGroupCtx = this.#groupCtx.value;
|
|
4478
|
+
if (!currentMenuCtx || !currentGroupCtx || this.disabled) return;
|
|
4479
|
+
currentGroupCtx.onValueChange(this.value);
|
|
4480
|
+
completeMenuItemSelection(currentMenuCtx.menu, currentMenuCtx.parentMenu);
|
|
4481
|
+
},
|
|
4482
|
+
onPointerenter: () => {
|
|
4483
|
+
const currentMenuCtx = this.#menuCtx.value;
|
|
4484
|
+
if (!this.disabled) currentMenuCtx?.menu.highlight(this, { focus: false });
|
|
4485
|
+
}
|
|
4486
|
+
}, { signal: this.#disconnect.signal });
|
|
4487
|
+
}
|
|
4488
|
+
const checked = groupCtx.value === this.value;
|
|
4489
|
+
applyElementProps(this, {
|
|
4490
|
+
role: "menuitemradio",
|
|
4491
|
+
"aria-checked": String(checked),
|
|
4492
|
+
"aria-disabled": this.disabled ? "true" : void 0
|
|
4493
|
+
});
|
|
4494
|
+
applyStateDataAttrs(this, menuCtx.state, menuCtx.stateAttrMap);
|
|
4495
|
+
}
|
|
4496
|
+
};
|
|
4497
|
+
|
|
2893
4498
|
//#endregion
|
|
2894
4499
|
//#region src/ui/popover/popover-element.ts
|
|
2895
4500
|
var PopoverElement = class extends MediaElement {
|
|
@@ -2905,6 +4510,18 @@ var PopoverElement = class extends MediaElement {
|
|
|
2905
4510
|
this.openOnHover = PopoverCore.defaultProps.openOnHover;
|
|
2906
4511
|
this.delay = PopoverCore.defaultProps.delay;
|
|
2907
4512
|
this.closeDelay = PopoverCore.defaultProps.closeDelay;
|
|
4513
|
+
this.boundary = "container";
|
|
4514
|
+
this.#core = new PopoverCore();
|
|
4515
|
+
this.#containerCtx = new ContextConsumer(this, {
|
|
4516
|
+
context: containerContext,
|
|
4517
|
+
subscribe: true
|
|
4518
|
+
});
|
|
4519
|
+
this.#position = new PositionController(this);
|
|
4520
|
+
this.#popover = null;
|
|
4521
|
+
this.#snapshot = null;
|
|
4522
|
+
this.#disconnect = null;
|
|
4523
|
+
this.#triggerAbort = null;
|
|
4524
|
+
this.#currentTrigger = null;
|
|
2908
4525
|
}
|
|
2909
4526
|
static {
|
|
2910
4527
|
this.tagName = "media-popover";
|
|
@@ -2935,19 +4552,22 @@ var PopoverElement = class extends MediaElement {
|
|
|
2935
4552
|
closeDelay: {
|
|
2936
4553
|
type: Number,
|
|
2937
4554
|
attribute: "close-delay"
|
|
2938
|
-
}
|
|
4555
|
+
},
|
|
4556
|
+
boundary: { type: String }
|
|
2939
4557
|
};
|
|
2940
4558
|
}
|
|
2941
|
-
#core
|
|
2942
|
-
#
|
|
2943
|
-
#
|
|
2944
|
-
#
|
|
2945
|
-
#
|
|
2946
|
-
#
|
|
2947
|
-
#
|
|
4559
|
+
#core;
|
|
4560
|
+
#containerCtx;
|
|
4561
|
+
#position;
|
|
4562
|
+
#popover;
|
|
4563
|
+
#snapshot;
|
|
4564
|
+
#disconnect;
|
|
4565
|
+
#triggerAbort;
|
|
4566
|
+
#currentTrigger;
|
|
2948
4567
|
connectedCallback() {
|
|
2949
4568
|
super.connectedCallback();
|
|
2950
4569
|
if (this.destroyed) return;
|
|
4570
|
+
this.setAttribute(POPUP_HOST_ATTR, "");
|
|
2951
4571
|
this.#disconnect = new AbortController();
|
|
2952
4572
|
this.#popover = createPopover({
|
|
2953
4573
|
transition: createTransition(),
|
|
@@ -2962,7 +4582,8 @@ var PopoverElement = class extends MediaElement {
|
|
|
2962
4582
|
closeOnOutsideClick: () => this.closeOnOutsideClick,
|
|
2963
4583
|
openOnHover: () => this.openOnHover,
|
|
2964
4584
|
delay: () => this.delay,
|
|
2965
|
-
closeDelay: () => this.closeDelay
|
|
4585
|
+
closeDelay: () => this.closeDelay,
|
|
4586
|
+
group: () => this.#containerCtx.value?.popupGroup
|
|
2966
4587
|
});
|
|
2967
4588
|
this.#popover.setPopupElement(this);
|
|
2968
4589
|
applyElementProps(this, this.#popover.popupProps, { signal: this.#disconnect.signal });
|
|
@@ -2983,6 +4604,9 @@ var PopoverElement = class extends MediaElement {
|
|
|
2983
4604
|
this.#popover?.destroy();
|
|
2984
4605
|
super.destroyCallback();
|
|
2985
4606
|
}
|
|
4607
|
+
close(reason = "imperative-action") {
|
|
4608
|
+
this.#popover?.close(reason);
|
|
4609
|
+
}
|
|
2986
4610
|
willUpdate(changed) {
|
|
2987
4611
|
super.willUpdate(changed);
|
|
2988
4612
|
this.#core.setProps(this);
|
|
@@ -3016,15 +4640,16 @@ var PopoverElement = class extends MediaElement {
|
|
|
3016
4640
|
side: state.side,
|
|
3017
4641
|
align: state.align
|
|
3018
4642
|
};
|
|
3019
|
-
|
|
4643
|
+
const boundaryElement = this.#getBoundaryElement();
|
|
4644
|
+
const triggerRect = this.#currentTrigger?.getBoundingClientRect();
|
|
4645
|
+
const boundaryRect = getPositioningBoundaryRect(boundaryElement);
|
|
4646
|
+
const offsets = resolveOffsets(this);
|
|
4647
|
+
if (supportsAnchorPositioning()) applyStyles(this, getAnchorPositionStyle(this.id, posOpts, triggerRect, void 0, boundaryRect, offsets));
|
|
3020
4648
|
else {
|
|
3021
|
-
const triggerRect = this.#currentTrigger?.getBoundingClientRect();
|
|
3022
4649
|
const selfRect = getPopupPositionRect(this);
|
|
3023
|
-
const boundaryRect = document.documentElement.getBoundingClientRect();
|
|
3024
|
-
const offsets = resolveOffsets(this);
|
|
3025
4650
|
applyStyles(this, getAnchorPositionStyle(this.id, posOpts, triggerRect, selfRect, boundaryRect, offsets));
|
|
3026
4651
|
}
|
|
3027
|
-
this.#position.sync(this.#currentTrigger);
|
|
4652
|
+
this.#position.sync(this.#currentTrigger, boundaryElement);
|
|
3028
4653
|
}
|
|
3029
4654
|
#syncTrigger(triggerEl) {
|
|
3030
4655
|
if (triggerEl === this.#currentTrigger) return;
|
|
@@ -3050,29 +4675,11 @@ var PopoverElement = class extends MediaElement {
|
|
|
3050
4675
|
this.#triggerAbort = null;
|
|
3051
4676
|
this.#currentTrigger = null;
|
|
3052
4677
|
}
|
|
3053
|
-
|
|
3054
|
-
|
|
3055
|
-
|
|
3056
|
-
|
|
3057
|
-
|
|
3058
|
-
constructor(..._args) {
|
|
3059
|
-
super(..._args);
|
|
3060
|
-
this.seconds = SeekButtonCore.defaultProps.seconds;
|
|
3061
|
-
this.core = new SeekButtonCore();
|
|
3062
|
-
this.stateAttrMap = SeekButtonDataAttrs;
|
|
3063
|
-
this.mediaState = new PlayerController(this, playerContext, selectTime);
|
|
3064
|
-
}
|
|
3065
|
-
static {
|
|
3066
|
-
this.tagName = "media-seek-button";
|
|
3067
|
-
}
|
|
3068
|
-
static {
|
|
3069
|
-
this.properties = {
|
|
3070
|
-
...MediaButtonElement.properties,
|
|
3071
|
-
seconds: { type: Number }
|
|
3072
|
-
};
|
|
3073
|
-
}
|
|
3074
|
-
activate(state) {
|
|
3075
|
-
this.core.seek(state);
|
|
4678
|
+
#getBoundaryElement() {
|
|
4679
|
+
return resolvePositioningBoundary(this.boundary, {
|
|
4680
|
+
container: this.#containerCtx.value?.container ?? null,
|
|
4681
|
+
root: this.getRootNode()
|
|
4682
|
+
});
|
|
3076
4683
|
}
|
|
3077
4684
|
};
|
|
3078
4685
|
|
|
@@ -3097,6 +4704,19 @@ var TooltipElement = class extends MediaElement {
|
|
|
3097
4704
|
this.closeDelay = TooltipCore.defaultProps.closeDelay;
|
|
3098
4705
|
this.disableHoverablePopup = TooltipCore.defaultProps.disableHoverablePopup;
|
|
3099
4706
|
this.disabled = TooltipCore.defaultProps.disabled;
|
|
4707
|
+
this.boundary = "container";
|
|
4708
|
+
this.#core = new TooltipCore();
|
|
4709
|
+
this.#groupConsumer = new ContextConsumer(this, { context: tooltipGroupContext });
|
|
4710
|
+
this.#containerCtx = new ContextConsumer(this, {
|
|
4711
|
+
context: containerContext,
|
|
4712
|
+
subscribe: true
|
|
4713
|
+
});
|
|
4714
|
+
this.#position = new PositionController(this);
|
|
4715
|
+
this.#tooltip = null;
|
|
4716
|
+
this.#snapshot = null;
|
|
4717
|
+
this.#disconnect = null;
|
|
4718
|
+
this.#triggerAbort = null;
|
|
4719
|
+
this.#currentTrigger = null;
|
|
3100
4720
|
}
|
|
3101
4721
|
static {
|
|
3102
4722
|
this.tagName = "media-tooltip";
|
|
@@ -3119,20 +4739,23 @@ var TooltipElement = class extends MediaElement {
|
|
|
3119
4739
|
type: Boolean,
|
|
3120
4740
|
attribute: "disable-hoverable-popup"
|
|
3121
4741
|
},
|
|
3122
|
-
disabled: { type: Boolean }
|
|
4742
|
+
disabled: { type: Boolean },
|
|
4743
|
+
boundary: { type: String }
|
|
3123
4744
|
};
|
|
3124
4745
|
}
|
|
3125
|
-
#core
|
|
3126
|
-
#groupConsumer
|
|
3127
|
-
#
|
|
3128
|
-
#
|
|
3129
|
-
#
|
|
3130
|
-
#
|
|
3131
|
-
#
|
|
3132
|
-
#
|
|
4746
|
+
#core;
|
|
4747
|
+
#groupConsumer;
|
|
4748
|
+
#containerCtx;
|
|
4749
|
+
#position;
|
|
4750
|
+
#tooltip;
|
|
4751
|
+
#snapshot;
|
|
4752
|
+
#disconnect;
|
|
4753
|
+
#triggerAbort;
|
|
4754
|
+
#currentTrigger;
|
|
3133
4755
|
connectedCallback() {
|
|
3134
4756
|
super.connectedCallback();
|
|
3135
4757
|
if (this.destroyed) return;
|
|
4758
|
+
this.setAttribute(POPUP_HOST_ATTR, "");
|
|
3136
4759
|
this.#disconnect = new AbortController();
|
|
3137
4760
|
this.#tooltip = createTooltip({
|
|
3138
4761
|
transition: createTransition(),
|
|
@@ -3166,6 +4789,9 @@ var TooltipElement = class extends MediaElement {
|
|
|
3166
4789
|
this.#disconnect?.abort();
|
|
3167
4790
|
this.#disconnect = null;
|
|
3168
4791
|
}
|
|
4792
|
+
close(reason = "imperative-action") {
|
|
4793
|
+
this.#tooltip?.close(reason);
|
|
4794
|
+
}
|
|
3169
4795
|
willUpdate(changed) {
|
|
3170
4796
|
super.willUpdate(changed);
|
|
3171
4797
|
this.#core.setProps(this);
|
|
@@ -3196,15 +4822,16 @@ var TooltipElement = class extends MediaElement {
|
|
|
3196
4822
|
side: state.side,
|
|
3197
4823
|
align: state.align
|
|
3198
4824
|
};
|
|
3199
|
-
|
|
4825
|
+
const boundaryElement = this.#getBoundaryElement();
|
|
4826
|
+
const triggerRect = this.#currentTrigger?.getBoundingClientRect();
|
|
4827
|
+
const boundaryRect = getPositioningBoundaryRect(boundaryElement);
|
|
4828
|
+
const offsets = resolveOffsets(this, TooltipCSSVars);
|
|
4829
|
+
if (supportsAnchorPositioning()) applyStyles(this, getAnchorPositionStyle(this.id, posOpts, triggerRect, void 0, boundaryRect, offsets, TooltipCSSVars));
|
|
3200
4830
|
else {
|
|
3201
|
-
const triggerRect = this.#currentTrigger?.getBoundingClientRect();
|
|
3202
4831
|
const selfRect = getPopupPositionRect(this);
|
|
3203
|
-
const boundaryRect = document.documentElement.getBoundingClientRect();
|
|
3204
|
-
const offsets = resolveOffsets(this, TooltipCSSVars);
|
|
3205
4832
|
applyStyles(this, getAnchorPositionStyle(this.id, posOpts, triggerRect, selfRect, boundaryRect, offsets, TooltipCSSVars));
|
|
3206
4833
|
}
|
|
3207
|
-
this.#position.sync(this.#currentTrigger);
|
|
4834
|
+
this.#position.sync(this.#currentTrigger, boundaryElement);
|
|
3208
4835
|
}
|
|
3209
4836
|
#syncTrigger(triggerEl) {
|
|
3210
4837
|
if (triggerEl === this.#currentTrigger) return;
|
|
@@ -3230,6 +4857,12 @@ var TooltipElement = class extends MediaElement {
|
|
|
3230
4857
|
this.#triggerAbort = null;
|
|
3231
4858
|
this.#currentTrigger = null;
|
|
3232
4859
|
}
|
|
4860
|
+
#getBoundaryElement() {
|
|
4861
|
+
return resolvePositioningBoundary(this.boundary, {
|
|
4862
|
+
container: this.#containerCtx.value?.container ?? null,
|
|
4863
|
+
root: this.getRootNode()
|
|
4864
|
+
});
|
|
4865
|
+
}
|
|
3233
4866
|
};
|
|
3234
4867
|
|
|
3235
4868
|
//#endregion
|
|
@@ -3240,6 +4873,11 @@ var TooltipGroupElement = class extends MediaElement {
|
|
|
3240
4873
|
this.delay = TooltipGroupCore.defaultProps.delay;
|
|
3241
4874
|
this.closeDelay = TooltipGroupCore.defaultProps.closeDelay;
|
|
3242
4875
|
this.timeout = TooltipGroupCore.defaultProps.timeout;
|
|
4876
|
+
this.#core = new TooltipGroupCore();
|
|
4877
|
+
this.#provider = new ContextProvider(this, {
|
|
4878
|
+
context: tooltipGroupContext,
|
|
4879
|
+
initialValue: this.#core
|
|
4880
|
+
});
|
|
3243
4881
|
}
|
|
3244
4882
|
static {
|
|
3245
4883
|
this.tagName = "media-tooltip-group";
|
|
@@ -3254,11 +4892,8 @@ var TooltipGroupElement = class extends MediaElement {
|
|
|
3254
4892
|
timeout: { type: Number }
|
|
3255
4893
|
};
|
|
3256
4894
|
}
|
|
3257
|
-
#core
|
|
3258
|
-
#provider
|
|
3259
|
-
context: tooltipGroupContext,
|
|
3260
|
-
initialValue: this.#core
|
|
3261
|
-
});
|
|
4895
|
+
#core;
|
|
4896
|
+
#provider;
|
|
3262
4897
|
update(_changed) {
|
|
3263
4898
|
super.update(_changed);
|
|
3264
4899
|
this.#core.setProps(this);
|
|
@@ -3277,6 +4912,11 @@ var AlertDialogCloseElement = class extends MediaElement {
|
|
|
3277
4912
|
constructor(..._args) {
|
|
3278
4913
|
super(..._args);
|
|
3279
4914
|
this.disabled = false;
|
|
4915
|
+
this.#ctx = new ContextConsumer(this, {
|
|
4916
|
+
context: alertDialogContext,
|
|
4917
|
+
subscribe: true
|
|
4918
|
+
});
|
|
4919
|
+
this.#disconnect = null;
|
|
3280
4920
|
}
|
|
3281
4921
|
static {
|
|
3282
4922
|
this.tagName = "media-alert-dialog-close";
|
|
@@ -3284,11 +4924,8 @@ var AlertDialogCloseElement = class extends MediaElement {
|
|
|
3284
4924
|
static {
|
|
3285
4925
|
this.properties = { disabled: { type: Boolean } };
|
|
3286
4926
|
}
|
|
3287
|
-
#ctx
|
|
3288
|
-
|
|
3289
|
-
subscribe: true
|
|
3290
|
-
});
|
|
3291
|
-
#disconnect = null;
|
|
4927
|
+
#ctx;
|
|
4928
|
+
#disconnect;
|
|
3292
4929
|
connectedCallback() {
|
|
3293
4930
|
super.connectedCallback();
|
|
3294
4931
|
this.#disconnect = new AbortController();
|
|
@@ -3354,140 +4991,618 @@ var AlertDialogDescriptionElement = class extends ContextPartElement {
|
|
|
3354
4991
|
};
|
|
3355
4992
|
|
|
3356
4993
|
//#endregion
|
|
3357
|
-
//#region src/ui/alert-dialog/alert-dialog-title-element.ts
|
|
3358
|
-
var AlertDialogTitleElement = class extends ContextPartElement {
|
|
4994
|
+
//#region src/ui/alert-dialog/alert-dialog-title-element.ts
|
|
4995
|
+
var AlertDialogTitleElement = class extends ContextPartElement {
|
|
4996
|
+
constructor(..._args) {
|
|
4997
|
+
super(..._args);
|
|
4998
|
+
this.consumer = new ContextConsumer(this, {
|
|
4999
|
+
context: alertDialogContext,
|
|
5000
|
+
subscribe: true
|
|
5001
|
+
});
|
|
5002
|
+
}
|
|
5003
|
+
static {
|
|
5004
|
+
this.tagName = "media-alert-dialog-title";
|
|
5005
|
+
}
|
|
5006
|
+
update(changed) {
|
|
5007
|
+
super.update(changed);
|
|
5008
|
+
const titleId = this.consumer.value?.state.titleId;
|
|
5009
|
+
if (titleId) this.id = titleId;
|
|
5010
|
+
}
|
|
5011
|
+
};
|
|
5012
|
+
|
|
5013
|
+
//#endregion
|
|
5014
|
+
//#region src/ui/controls/context.ts
|
|
5015
|
+
const CONTROLS_CONTEXT_KEY = Symbol("@videojs/controls");
|
|
5016
|
+
const controlsContext = createContext(CONTROLS_CONTEXT_KEY);
|
|
5017
|
+
|
|
5018
|
+
//#endregion
|
|
5019
|
+
//#region src/ui/controls/controls-element.ts
|
|
5020
|
+
var ControlsElement = class extends MediaElement {
|
|
5021
|
+
static {
|
|
5022
|
+
this.tagName = "media-controls";
|
|
5023
|
+
}
|
|
5024
|
+
#core = new ControlsCore();
|
|
5025
|
+
#mediaState = new PlayerController(this, playerContext, selectControls);
|
|
5026
|
+
#provider = new ContextProvider(this, { context: controlsContext });
|
|
5027
|
+
#visible = true;
|
|
5028
|
+
connectedCallback() {
|
|
5029
|
+
super.connectedCallback();
|
|
5030
|
+
if (!this.#mediaState.value && this.#mediaState.displayName) logMissingFeature(this.localName, this.#mediaState.displayName);
|
|
5031
|
+
}
|
|
5032
|
+
update(_changed) {
|
|
5033
|
+
super.update(_changed);
|
|
5034
|
+
const media = this.#mediaState.value;
|
|
5035
|
+
if (!media) return;
|
|
5036
|
+
this.#core.setMedia(media);
|
|
5037
|
+
const state = this.#core.getState();
|
|
5038
|
+
applyStateDataAttrs(this, state, ControlsDataAttrs);
|
|
5039
|
+
this.#provider.setValue({
|
|
5040
|
+
state,
|
|
5041
|
+
stateAttrMap: ControlsDataAttrs
|
|
5042
|
+
});
|
|
5043
|
+
const wasVisible = this.#visible;
|
|
5044
|
+
this.#visible = state.visible;
|
|
5045
|
+
if (wasVisible && !state.visible) this.#closeOwnedOverlays();
|
|
5046
|
+
}
|
|
5047
|
+
#closeOwnedOverlays() {
|
|
5048
|
+
for (const element of this.querySelectorAll(POPUP_HOST_SELECTOR)) {
|
|
5049
|
+
const host = element;
|
|
5050
|
+
if (!isFunction(host.close)) continue;
|
|
5051
|
+
host.close("imperative-action");
|
|
5052
|
+
}
|
|
5053
|
+
}
|
|
5054
|
+
};
|
|
5055
|
+
|
|
5056
|
+
//#endregion
|
|
5057
|
+
//#region src/ui/controls/controls-group-element.ts
|
|
5058
|
+
var ControlsGroupElement = class extends ContextPartElement {
|
|
5059
|
+
constructor(..._args) {
|
|
5060
|
+
super(..._args);
|
|
5061
|
+
this.consumer = new ContextConsumer(this, {
|
|
5062
|
+
context: controlsContext,
|
|
5063
|
+
subscribe: true
|
|
5064
|
+
});
|
|
5065
|
+
}
|
|
5066
|
+
static {
|
|
5067
|
+
this.tagName = "media-controls-group";
|
|
5068
|
+
}
|
|
5069
|
+
connectedCallback() {
|
|
5070
|
+
super.connectedCallback();
|
|
5071
|
+
if (this.hasAttribute("aria-label") || this.hasAttribute("aria-labelledby")) this.setAttribute("role", "group");
|
|
5072
|
+
}
|
|
5073
|
+
};
|
|
5074
|
+
|
|
5075
|
+
//#endregion
|
|
5076
|
+
//#region src/ui/error-dialog/error-dialog-element.ts
|
|
5077
|
+
const FALLBACK_MESSAGE = "An error occurred. Please try again.";
|
|
5078
|
+
let idCounter = 0;
|
|
5079
|
+
var ErrorDialogElement = class extends MediaElement {
|
|
5080
|
+
static {
|
|
5081
|
+
this.tagName = "media-error-dialog";
|
|
5082
|
+
}
|
|
5083
|
+
#core = new ErrorDialogCore();
|
|
5084
|
+
#provider = new ContextProvider(this, { context: alertDialogContext });
|
|
5085
|
+
#titleId = `vjs-error-dialog-title-${idCounter++}`;
|
|
5086
|
+
#descriptionId = `vjs-error-dialog-desc-${idCounter++}`;
|
|
5087
|
+
#errorState = new PlayerController(this, playerContext, selectError);
|
|
5088
|
+
#dialog = null;
|
|
5089
|
+
#snapshot = null;
|
|
5090
|
+
#lastErrorMessage = null;
|
|
5091
|
+
constructor() {
|
|
5092
|
+
super();
|
|
5093
|
+
this.#core.setTitleId(this.#titleId);
|
|
5094
|
+
this.#core.setDescriptionId(this.#descriptionId);
|
|
5095
|
+
}
|
|
5096
|
+
connectedCallback() {
|
|
5097
|
+
super.connectedCallback();
|
|
5098
|
+
if (this.destroyed) return;
|
|
5099
|
+
this.#dialog = createAlertDialog({
|
|
5100
|
+
transition: createTransition(),
|
|
5101
|
+
onOpenChange: (nextOpen) => {
|
|
5102
|
+
if (!nextOpen) this.#errorState.value?.dismissError();
|
|
5103
|
+
}
|
|
5104
|
+
});
|
|
5105
|
+
this.#dialog.setElement(this);
|
|
5106
|
+
if (this.#snapshot) this.#snapshot.track(this.#dialog.input);
|
|
5107
|
+
else this.#snapshot = new SnapshotController(this, this.#dialog.input);
|
|
5108
|
+
}
|
|
5109
|
+
disconnectedCallback() {
|
|
5110
|
+
super.disconnectedCallback();
|
|
5111
|
+
this.#dialog?.destroy();
|
|
5112
|
+
this.#dialog = null;
|
|
5113
|
+
}
|
|
5114
|
+
willUpdate(_changed) {
|
|
5115
|
+
super.willUpdate(_changed);
|
|
5116
|
+
if (!this.#dialog) return;
|
|
5117
|
+
const errorState = this.#errorState.value;
|
|
5118
|
+
const hasError = Boolean(errorState?.error);
|
|
5119
|
+
const { active: isOpen } = this.#dialog.input.current;
|
|
5120
|
+
if (errorState?.error) {
|
|
5121
|
+
const message = errorState.error.message?.trim();
|
|
5122
|
+
this.#lastErrorMessage = message || null;
|
|
5123
|
+
}
|
|
5124
|
+
const desc = this.querySelector("media-alert-dialog-description");
|
|
5125
|
+
if (desc) desc.textContent = this.#lastErrorMessage ?? FALLBACK_MESSAGE;
|
|
5126
|
+
if (hasError && !isOpen) this.#dialog.open();
|
|
5127
|
+
else if (!hasError && isOpen) this.#dialog.close();
|
|
5128
|
+
}
|
|
5129
|
+
update(_changed) {
|
|
5130
|
+
super.update(_changed);
|
|
5131
|
+
if (!this.#dialog) return;
|
|
5132
|
+
const input = this.#dialog.input.current;
|
|
5133
|
+
this.#core.setInput(input);
|
|
5134
|
+
const state = this.#core.getState();
|
|
5135
|
+
applyElementProps(this, this.#core.getAttrs(state));
|
|
5136
|
+
applyStateDataAttrs(this, state, AlertDialogDataAttrs);
|
|
5137
|
+
this.#provider.setValue({
|
|
5138
|
+
state,
|
|
5139
|
+
stateAttrMap: AlertDialogDataAttrs,
|
|
5140
|
+
close: () => this.#dialog?.close()
|
|
5141
|
+
});
|
|
5142
|
+
}
|
|
5143
|
+
};
|
|
5144
|
+
|
|
5145
|
+
//#endregion
|
|
5146
|
+
//#region src/ui/menu/menu-back-element.ts
|
|
5147
|
+
var MenuBackElement = class extends MediaElement {
|
|
5148
|
+
constructor(..._args) {
|
|
5149
|
+
super(..._args);
|
|
5150
|
+
this.label = "Back";
|
|
5151
|
+
this.#ctx = new ContextConsumer(this, {
|
|
5152
|
+
context: menuContext,
|
|
5153
|
+
subscribe: true
|
|
5154
|
+
});
|
|
5155
|
+
this.#disconnect = null;
|
|
5156
|
+
this.#bound = false;
|
|
5157
|
+
}
|
|
5158
|
+
static {
|
|
5159
|
+
this.tagName = "media-menu-back";
|
|
5160
|
+
}
|
|
5161
|
+
static {
|
|
5162
|
+
this.properties = { label: { type: String } };
|
|
5163
|
+
}
|
|
5164
|
+
#ctx;
|
|
5165
|
+
#disconnect;
|
|
5166
|
+
#bound;
|
|
5167
|
+
connectedCallback() {
|
|
5168
|
+
super.connectedCallback();
|
|
5169
|
+
this.#disconnect = new AbortController();
|
|
5170
|
+
this.#bound = false;
|
|
5171
|
+
}
|
|
5172
|
+
disconnectedCallback() {
|
|
5173
|
+
super.disconnectedCallback();
|
|
5174
|
+
this.#disconnect?.abort();
|
|
5175
|
+
this.#disconnect = null;
|
|
5176
|
+
this.#bound = false;
|
|
5177
|
+
}
|
|
5178
|
+
update(_changed) {
|
|
5179
|
+
super.update(_changed);
|
|
5180
|
+
const ctx = this.#ctx.value;
|
|
5181
|
+
if (!ctx || !this.#disconnect) return;
|
|
5182
|
+
if (!this.#bound) {
|
|
5183
|
+
this.#bound = true;
|
|
5184
|
+
applyElementProps(this, { onClick: () => {
|
|
5185
|
+
ctx.parentMenu?.pop();
|
|
5186
|
+
} }, { signal: this.#disconnect.signal });
|
|
5187
|
+
}
|
|
5188
|
+
applyElementProps(this, {
|
|
5189
|
+
role: "button",
|
|
5190
|
+
"aria-label": this.label
|
|
5191
|
+
});
|
|
5192
|
+
if (ctx) applyStateDataAttrs(this, ctx.state, ctx.stateAttrMap);
|
|
5193
|
+
}
|
|
5194
|
+
};
|
|
5195
|
+
|
|
5196
|
+
//#endregion
|
|
5197
|
+
//#region src/ui/menu/menu-checkbox-item-element.ts
|
|
5198
|
+
var MenuCheckboxItemElement = class extends MediaElement {
|
|
5199
|
+
constructor(..._args) {
|
|
5200
|
+
super(..._args);
|
|
5201
|
+
this.checked = false;
|
|
5202
|
+
this.disabled = false;
|
|
5203
|
+
this.#ctx = new ContextConsumer(this, {
|
|
5204
|
+
context: menuContext,
|
|
5205
|
+
subscribe: true
|
|
5206
|
+
});
|
|
5207
|
+
this.#disconnect = null;
|
|
5208
|
+
this.#registered = false;
|
|
5209
|
+
this.#cleanupRegistration = null;
|
|
5210
|
+
}
|
|
5211
|
+
static {
|
|
5212
|
+
this.tagName = "media-menu-checkbox-item";
|
|
5213
|
+
}
|
|
5214
|
+
static {
|
|
5215
|
+
this.properties = {
|
|
5216
|
+
checked: { type: Boolean },
|
|
5217
|
+
disabled: { type: Boolean }
|
|
5218
|
+
};
|
|
5219
|
+
}
|
|
5220
|
+
#ctx;
|
|
5221
|
+
#disconnect;
|
|
5222
|
+
#registered;
|
|
5223
|
+
#cleanupRegistration;
|
|
5224
|
+
connectedCallback() {
|
|
5225
|
+
super.connectedCallback();
|
|
5226
|
+
this.#disconnect = new AbortController();
|
|
5227
|
+
this.#registered = false;
|
|
5228
|
+
}
|
|
5229
|
+
disconnectedCallback() {
|
|
5230
|
+
super.disconnectedCallback();
|
|
5231
|
+
this.#cleanupRegistration?.();
|
|
5232
|
+
this.#cleanupRegistration = null;
|
|
5233
|
+
this.#disconnect?.abort();
|
|
5234
|
+
this.#disconnect = null;
|
|
5235
|
+
this.#registered = false;
|
|
5236
|
+
}
|
|
5237
|
+
update(_changed) {
|
|
5238
|
+
super.update(_changed);
|
|
5239
|
+
const ctx = this.#ctx.value;
|
|
5240
|
+
if (!ctx || !this.#disconnect) return;
|
|
5241
|
+
if (!this.#registered) {
|
|
5242
|
+
this.#registered = true;
|
|
5243
|
+
this.#cleanupRegistration = ctx.menu.registerItem(this);
|
|
5244
|
+
applyElementProps(this, {
|
|
5245
|
+
onClick: () => {
|
|
5246
|
+
if (!this.#ctx.value || this.disabled) return;
|
|
5247
|
+
this.checked = !this.checked;
|
|
5248
|
+
this.dispatchEvent(new CustomEvent("checked-change", {
|
|
5249
|
+
detail: { checked: this.checked },
|
|
5250
|
+
bubbles: true
|
|
5251
|
+
}));
|
|
5252
|
+
},
|
|
5253
|
+
onPointerenter: () => {
|
|
5254
|
+
const currentCtx = this.#ctx.value;
|
|
5255
|
+
if (!this.disabled) currentCtx?.menu.highlight(this, { focus: false });
|
|
5256
|
+
}
|
|
5257
|
+
}, { signal: this.#disconnect.signal });
|
|
5258
|
+
}
|
|
5259
|
+
applyElementProps(this, {
|
|
5260
|
+
role: "menuitemcheckbox",
|
|
5261
|
+
"aria-checked": String(this.checked),
|
|
5262
|
+
"aria-disabled": this.disabled ? "true" : void 0
|
|
5263
|
+
});
|
|
5264
|
+
applyStateDataAttrs(this, ctx.state, ctx.stateAttrMap);
|
|
5265
|
+
}
|
|
5266
|
+
};
|
|
5267
|
+
|
|
5268
|
+
//#endregion
|
|
5269
|
+
//#region src/ui/menu/menu-group-element.ts
|
|
5270
|
+
var MenuGroupElement = class extends MediaElement {
|
|
5271
|
+
constructor(..._args) {
|
|
5272
|
+
super(..._args);
|
|
5273
|
+
this.label = void 0;
|
|
5274
|
+
this.#ctx = new ContextConsumer(this, {
|
|
5275
|
+
context: menuContext,
|
|
5276
|
+
subscribe: true
|
|
5277
|
+
});
|
|
5278
|
+
}
|
|
5279
|
+
static {
|
|
5280
|
+
this.tagName = "media-menu-group";
|
|
5281
|
+
}
|
|
5282
|
+
static {
|
|
5283
|
+
this.properties = { label: { type: String } };
|
|
5284
|
+
}
|
|
5285
|
+
#ctx;
|
|
5286
|
+
update(_changed) {
|
|
5287
|
+
super.update(_changed);
|
|
5288
|
+
applyElementProps(this, {
|
|
5289
|
+
role: "group",
|
|
5290
|
+
"aria-label": this.label
|
|
5291
|
+
});
|
|
5292
|
+
const ctx = this.#ctx.value;
|
|
5293
|
+
if (ctx) applyStateDataAttrs(this, ctx.state, ctx.stateAttrMap);
|
|
5294
|
+
}
|
|
5295
|
+
};
|
|
5296
|
+
|
|
5297
|
+
//#endregion
|
|
5298
|
+
//#region src/ui/menu/menu-item-element.ts
|
|
5299
|
+
var MenuItemElement = class extends MediaElement {
|
|
5300
|
+
constructor(..._args) {
|
|
5301
|
+
super(..._args);
|
|
5302
|
+
this.disabled = false;
|
|
5303
|
+
this.commandfor = void 0;
|
|
5304
|
+
this.#ctx = new ContextConsumer(this, {
|
|
5305
|
+
context: menuContext,
|
|
5306
|
+
subscribe: true
|
|
5307
|
+
});
|
|
5308
|
+
this.#disconnect = null;
|
|
5309
|
+
this.#registered = false;
|
|
5310
|
+
this.#cleanupRegistration = null;
|
|
5311
|
+
}
|
|
5312
|
+
static {
|
|
5313
|
+
this.tagName = "media-menu-item";
|
|
5314
|
+
}
|
|
5315
|
+
static {
|
|
5316
|
+
this.properties = {
|
|
5317
|
+
disabled: { type: Boolean },
|
|
5318
|
+
commandfor: { type: String }
|
|
5319
|
+
};
|
|
5320
|
+
}
|
|
5321
|
+
#ctx;
|
|
5322
|
+
#disconnect;
|
|
5323
|
+
#registered;
|
|
5324
|
+
#cleanupRegistration;
|
|
5325
|
+
connectedCallback() {
|
|
5326
|
+
super.connectedCallback();
|
|
5327
|
+
this.#disconnect = new AbortController();
|
|
5328
|
+
this.#registered = false;
|
|
5329
|
+
}
|
|
5330
|
+
disconnectedCallback() {
|
|
5331
|
+
super.disconnectedCallback();
|
|
5332
|
+
this.#cleanupRegistration?.();
|
|
5333
|
+
this.#cleanupRegistration = null;
|
|
5334
|
+
this.#disconnect?.abort();
|
|
5335
|
+
this.#disconnect = null;
|
|
5336
|
+
this.#registered = false;
|
|
5337
|
+
}
|
|
5338
|
+
update(_changed) {
|
|
5339
|
+
super.update(_changed);
|
|
5340
|
+
const ctx = this.#ctx.value;
|
|
5341
|
+
if (!ctx || !this.#disconnect) return;
|
|
5342
|
+
if (!this.#registered) {
|
|
5343
|
+
this.#registered = true;
|
|
5344
|
+
this.#cleanupRegistration = ctx.menu.registerItem(this);
|
|
5345
|
+
applyElementProps(this, {
|
|
5346
|
+
onClick: (event) => {
|
|
5347
|
+
const currentCtx = this.#ctx.value;
|
|
5348
|
+
if (!currentCtx || this.disabled) return;
|
|
5349
|
+
const target = this.commandfor;
|
|
5350
|
+
if (target) currentCtx.menu.push(target, this.id);
|
|
5351
|
+
else {
|
|
5352
|
+
this.dispatchEvent(new CustomEvent("select", { bubbles: true }));
|
|
5353
|
+
completeMenuItemSelection(currentCtx.menu, currentCtx.parentMenu);
|
|
5354
|
+
}
|
|
5355
|
+
event.preventDefault();
|
|
5356
|
+
},
|
|
5357
|
+
onKeyDown: (event) => {
|
|
5358
|
+
const currentCtx = this.#ctx.value;
|
|
5359
|
+
if (!currentCtx || this.disabled || event.key !== "ArrowRight") return;
|
|
5360
|
+
const target = this.commandfor;
|
|
5361
|
+
if (!target) return;
|
|
5362
|
+
currentCtx.menu.push(target, this.id);
|
|
5363
|
+
event.preventDefault();
|
|
5364
|
+
},
|
|
5365
|
+
onPointerenter: () => {
|
|
5366
|
+
const currentCtx = this.#ctx.value;
|
|
5367
|
+
if (!this.disabled) currentCtx?.menu.highlight(this, { focus: false });
|
|
5368
|
+
}
|
|
5369
|
+
}, { signal: this.#disconnect.signal });
|
|
5370
|
+
}
|
|
5371
|
+
const hasSubmenu = Boolean(this.commandfor);
|
|
5372
|
+
const activeSubMenuId = ctx.navigation.stack[ctx.navigation.stack.length - 1]?.menuId ?? null;
|
|
5373
|
+
const isExpanded = hasSubmenu ? activeSubMenuId === this.commandfor : void 0;
|
|
5374
|
+
applyElementProps(this, {
|
|
5375
|
+
role: "menuitem",
|
|
5376
|
+
"aria-disabled": this.disabled ? "true" : void 0,
|
|
5377
|
+
...hasSubmenu && {
|
|
5378
|
+
"aria-haspopup": "menu",
|
|
5379
|
+
"aria-expanded": isExpanded ? "true" : "false",
|
|
5380
|
+
"data-has-submenu": ""
|
|
5381
|
+
}
|
|
5382
|
+
});
|
|
5383
|
+
applyStateDataAttrs(this, ctx.state, ctx.stateAttrMap);
|
|
5384
|
+
}
|
|
5385
|
+
};
|
|
5386
|
+
|
|
5387
|
+
//#endregion
|
|
5388
|
+
//#region src/ui/menu/menu-label-element.ts
|
|
5389
|
+
var MenuLabelElement = class extends ContextPartElement {
|
|
3359
5390
|
constructor(..._args) {
|
|
3360
5391
|
super(..._args);
|
|
3361
5392
|
this.consumer = new ContextConsumer(this, {
|
|
3362
|
-
context:
|
|
5393
|
+
context: menuContext,
|
|
3363
5394
|
subscribe: true
|
|
3364
5395
|
});
|
|
3365
5396
|
}
|
|
3366
5397
|
static {
|
|
3367
|
-
this.tagName = "media-
|
|
3368
|
-
}
|
|
3369
|
-
update(changed) {
|
|
3370
|
-
super.update(changed);
|
|
3371
|
-
const titleId = this.consumer.value?.state.titleId;
|
|
3372
|
-
if (titleId) this.id = titleId;
|
|
5398
|
+
this.tagName = "media-menu-label";
|
|
3373
5399
|
}
|
|
3374
5400
|
};
|
|
3375
5401
|
|
|
3376
5402
|
//#endregion
|
|
3377
|
-
//#region src/ui/
|
|
3378
|
-
|
|
3379
|
-
const controlsContext = createContext(CONTROLS_CONTEXT_KEY);
|
|
3380
|
-
|
|
3381
|
-
//#endregion
|
|
3382
|
-
//#region src/ui/controls/controls-element.ts
|
|
3383
|
-
var ControlsElement = class extends MediaElement {
|
|
5403
|
+
//#region src/ui/menu/menu-separator-element.ts
|
|
5404
|
+
var MenuSeparatorElement = class extends MediaElement {
|
|
3384
5405
|
static {
|
|
3385
|
-
this.tagName = "media-
|
|
3386
|
-
}
|
|
3387
|
-
#core = new ControlsCore();
|
|
3388
|
-
#mediaState = new PlayerController(this, playerContext, selectControls);
|
|
3389
|
-
#provider = new ContextProvider(this, { context: controlsContext });
|
|
3390
|
-
connectedCallback() {
|
|
3391
|
-
super.connectedCallback();
|
|
3392
|
-
if (!this.#mediaState.value && this.#mediaState.displayName) logMissingFeature(this.localName, this.#mediaState.displayName);
|
|
5406
|
+
this.tagName = "media-menu-separator";
|
|
3393
5407
|
}
|
|
5408
|
+
#ctx = new ContextConsumer(this, {
|
|
5409
|
+
context: menuContext,
|
|
5410
|
+
subscribe: true
|
|
5411
|
+
});
|
|
3394
5412
|
update(_changed) {
|
|
3395
5413
|
super.update(_changed);
|
|
3396
|
-
|
|
3397
|
-
|
|
3398
|
-
this
|
|
3399
|
-
const state = this.#core.getState();
|
|
3400
|
-
applyStateDataAttrs(this, state, ControlsDataAttrs);
|
|
3401
|
-
this.#provider.setValue({
|
|
3402
|
-
state,
|
|
3403
|
-
stateAttrMap: ControlsDataAttrs
|
|
3404
|
-
});
|
|
5414
|
+
applyElementProps(this, { role: "separator" });
|
|
5415
|
+
const ctx = this.#ctx.value;
|
|
5416
|
+
if (ctx) applyStateDataAttrs(this, ctx.state, ctx.stateAttrMap);
|
|
3405
5417
|
}
|
|
3406
5418
|
};
|
|
3407
5419
|
|
|
3408
5420
|
//#endregion
|
|
3409
|
-
//#region src/ui/
|
|
3410
|
-
var
|
|
5421
|
+
//#region src/ui/menu/menu-view-element.ts
|
|
5422
|
+
var MenuViewElement = class extends MediaElement {
|
|
5423
|
+
static {
|
|
5424
|
+
this.tagName = "media-menu-view";
|
|
5425
|
+
}
|
|
5426
|
+
update(changed) {
|
|
5427
|
+
super.update(changed);
|
|
5428
|
+
applyElementProps(this, getMenuRootViewAttrs());
|
|
5429
|
+
}
|
|
5430
|
+
};
|
|
5431
|
+
|
|
5432
|
+
//#endregion
|
|
5433
|
+
//#region src/ui/input-indicators/input-indicator-element.ts
|
|
5434
|
+
var InputIndicatorElement = class extends MediaElement {
|
|
3411
5435
|
constructor(..._args) {
|
|
3412
5436
|
super(..._args);
|
|
3413
|
-
this.
|
|
3414
|
-
|
|
5437
|
+
this.player = new PlayerController(this, playerContext);
|
|
5438
|
+
this.container = new ContextConsumer(this, {
|
|
5439
|
+
context: containerContext,
|
|
5440
|
+
callback: () => this.#reconnect(),
|
|
3415
5441
|
subscribe: true
|
|
3416
5442
|
});
|
|
3417
|
-
|
|
3418
|
-
|
|
3419
|
-
this
|
|
5443
|
+
this.#disconnect = null;
|
|
5444
|
+
this.#inputActionUnsubscribe = null;
|
|
5445
|
+
this.#visibilityUnsubscribe = null;
|
|
5446
|
+
this.#visibilityHandle = null;
|
|
5447
|
+
this.#lastGeneration = 0;
|
|
5448
|
+
this.#snapshot = null;
|
|
5449
|
+
}
|
|
5450
|
+
#disconnect;
|
|
5451
|
+
#inputActionUnsubscribe;
|
|
5452
|
+
#visibilityUnsubscribe;
|
|
5453
|
+
#visibilityHandle;
|
|
5454
|
+
#lastGeneration;
|
|
5455
|
+
#snapshot;
|
|
5456
|
+
#getVisibilityHandle() {
|
|
5457
|
+
return this.#visibilityHandle ??= { close: () => this.core.close() };
|
|
5458
|
+
}
|
|
5459
|
+
#payloadSnapshot() {
|
|
5460
|
+
return this.#snapshot ?? this.core.state.current;
|
|
3420
5461
|
}
|
|
3421
5462
|
connectedCallback() {
|
|
3422
5463
|
super.connectedCallback();
|
|
3423
|
-
if (this.
|
|
5464
|
+
if (this.destroyed) return;
|
|
5465
|
+
this.#snapshot = this.core.state.current;
|
|
5466
|
+
this.#disconnect = new AbortController();
|
|
5467
|
+
this.core.state.subscribe(() => this.requestUpdate(), { signal: this.#disconnect.signal });
|
|
5468
|
+
this.transition.state.subscribe(() => this.requestUpdate(), { signal: this.#disconnect.signal });
|
|
5469
|
+
this.hidden = true;
|
|
5470
|
+
this.#reconnect();
|
|
5471
|
+
}
|
|
5472
|
+
disconnectedCallback() {
|
|
5473
|
+
super.disconnectedCallback();
|
|
5474
|
+
this.#inputActionUnsubscribe?.();
|
|
5475
|
+
this.#visibilityUnsubscribe?.();
|
|
5476
|
+
this.#inputActionUnsubscribe = null;
|
|
5477
|
+
this.#visibilityUnsubscribe = null;
|
|
5478
|
+
this.#disconnect?.abort();
|
|
5479
|
+
this.#disconnect = null;
|
|
5480
|
+
}
|
|
5481
|
+
destroyCallback() {
|
|
5482
|
+
this.#inputActionUnsubscribe?.();
|
|
5483
|
+
this.#visibilityUnsubscribe?.();
|
|
5484
|
+
this.core.destroy();
|
|
5485
|
+
this.transition.destroy();
|
|
5486
|
+
this.liveIndicator.remove();
|
|
5487
|
+
super.destroyCallback();
|
|
5488
|
+
}
|
|
5489
|
+
willUpdate(changed) {
|
|
5490
|
+
super.willUpdate(changed);
|
|
5491
|
+
this.syncCoreProps();
|
|
5492
|
+
}
|
|
5493
|
+
update(changed) {
|
|
5494
|
+
super.update(changed);
|
|
5495
|
+
this.#syncTransition();
|
|
5496
|
+
const currentState = this.core.state.current;
|
|
5497
|
+
const transitionState = this.transition.state.current;
|
|
5498
|
+
if (!isIndicatorPresent(currentState, transitionState)) {
|
|
5499
|
+
this.liveIndicator.remove();
|
|
5500
|
+
return;
|
|
5501
|
+
}
|
|
5502
|
+
const state = getRenderedIndicatorState(currentState, this.#payloadSnapshot(), transitionState);
|
|
5503
|
+
this.liveIndicator.render(state);
|
|
5504
|
+
}
|
|
5505
|
+
#syncTransition() {
|
|
5506
|
+
const currentState = this.core.state.current;
|
|
5507
|
+
if (currentState.open) {
|
|
5508
|
+
this.#snapshot = currentState;
|
|
5509
|
+
if (this.#lastGeneration !== currentState.generation) {
|
|
5510
|
+
this.#lastGeneration = currentState.generation;
|
|
5511
|
+
this.transition.open();
|
|
5512
|
+
}
|
|
5513
|
+
return;
|
|
5514
|
+
}
|
|
5515
|
+
const { active, status } = this.transition.state.current;
|
|
5516
|
+
if (active && status !== "ending") this.transition.close(this.liveIndicator.element);
|
|
5517
|
+
}
|
|
5518
|
+
#reconnect() {
|
|
5519
|
+
this.#inputActionUnsubscribe?.();
|
|
5520
|
+
this.#visibilityUnsubscribe?.();
|
|
5521
|
+
this.#inputActionUnsubscribe = null;
|
|
5522
|
+
this.#visibilityUnsubscribe = null;
|
|
5523
|
+
const container = this.container.value?.container;
|
|
5524
|
+
if (!container) return;
|
|
5525
|
+
const visibility = getIndicatorVisibilityCoordinator(container);
|
|
5526
|
+
const visibilityHandle = this.#getVisibilityHandle();
|
|
5527
|
+
this.#visibilityUnsubscribe = visibility.register(visibilityHandle);
|
|
5528
|
+
this.#inputActionUnsubscribe = subscribeToInputActions(container, (event) => {
|
|
5529
|
+
if (this.core.processEvent(event, getMediaSnapshot(this.player.value))) visibility.show(visibilityHandle);
|
|
5530
|
+
});
|
|
3424
5531
|
}
|
|
3425
5532
|
};
|
|
3426
5533
|
|
|
3427
5534
|
//#endregion
|
|
3428
|
-
//#region src/ui/
|
|
3429
|
-
|
|
3430
|
-
|
|
3431
|
-
|
|
5535
|
+
//#region src/ui/input-indicators/live-indicator.ts
|
|
5536
|
+
var LiveIndicator = class {
|
|
5537
|
+
#host;
|
|
5538
|
+
#dataAttrs;
|
|
5539
|
+
#render;
|
|
5540
|
+
constructor(options) {
|
|
5541
|
+
this.#host = options.host;
|
|
5542
|
+
this.#dataAttrs = options.dataAttrs;
|
|
5543
|
+
this.#render = options.render;
|
|
5544
|
+
}
|
|
5545
|
+
get element() {
|
|
5546
|
+
return this.#host;
|
|
5547
|
+
}
|
|
5548
|
+
render(state) {
|
|
5549
|
+
this.#host.hidden = false;
|
|
5550
|
+
applyStateDataAttrs(this.#host, state, this.#dataAttrs);
|
|
5551
|
+
this.#render(this.#host, state);
|
|
5552
|
+
return this.#host;
|
|
5553
|
+
}
|
|
5554
|
+
remove() {
|
|
5555
|
+
this.#host.hidden = true;
|
|
5556
|
+
for (const key in this.#dataAttrs) {
|
|
5557
|
+
const name = this.#dataAttrs[key];
|
|
5558
|
+
if (name) this.#host.removeAttribute(name);
|
|
5559
|
+
}
|
|
5560
|
+
}
|
|
5561
|
+
};
|
|
5562
|
+
|
|
5563
|
+
//#endregion
|
|
5564
|
+
//#region src/ui/seek-indicator/seek-indicator-element.ts
|
|
5565
|
+
var SeekIndicatorElement = class extends InputIndicatorElement {
|
|
3432
5566
|
static {
|
|
3433
|
-
this.tagName = "media-
|
|
5567
|
+
this.tagName = "media-seek-indicator";
|
|
3434
5568
|
}
|
|
3435
|
-
|
|
3436
|
-
|
|
3437
|
-
|
|
3438
|
-
|
|
3439
|
-
|
|
3440
|
-
|
|
3441
|
-
#
|
|
3442
|
-
#
|
|
3443
|
-
|
|
3444
|
-
|
|
3445
|
-
|
|
3446
|
-
|
|
5569
|
+
static {
|
|
5570
|
+
this.properties = { closeDelay: {
|
|
5571
|
+
type: Number,
|
|
5572
|
+
attribute: "close-delay"
|
|
5573
|
+
} };
|
|
5574
|
+
}
|
|
5575
|
+
#core = new SeekIndicatorCore();
|
|
5576
|
+
#transition = createTransition();
|
|
5577
|
+
#liveIndicator = new LiveIndicator({
|
|
5578
|
+
host: this,
|
|
5579
|
+
dataAttrs: SeekIndicatorDataAttrs,
|
|
5580
|
+
render: renderSeekIndicator
|
|
5581
|
+
});
|
|
5582
|
+
get core() {
|
|
5583
|
+
return this.#core;
|
|
3447
5584
|
}
|
|
3448
|
-
|
|
3449
|
-
|
|
3450
|
-
if (this.destroyed) return;
|
|
3451
|
-
this.#dialog = createAlertDialog({
|
|
3452
|
-
transition: createTransition(),
|
|
3453
|
-
onOpenChange: (nextOpen) => {
|
|
3454
|
-
if (!nextOpen) this.#errorState.value?.dismissError();
|
|
3455
|
-
}
|
|
3456
|
-
});
|
|
3457
|
-
this.#dialog.setElement(this);
|
|
3458
|
-
if (this.#snapshot) this.#snapshot.track(this.#dialog.input);
|
|
3459
|
-
else this.#snapshot = new SnapshotController(this, this.#dialog.input);
|
|
5585
|
+
get transition() {
|
|
5586
|
+
return this.#transition;
|
|
3460
5587
|
}
|
|
3461
|
-
|
|
3462
|
-
|
|
3463
|
-
this.#dialog?.destroy();
|
|
3464
|
-
this.#dialog = null;
|
|
5588
|
+
get liveIndicator() {
|
|
5589
|
+
return this.#liveIndicator;
|
|
3465
5590
|
}
|
|
3466
|
-
|
|
3467
|
-
|
|
3468
|
-
if (!this.#dialog) return;
|
|
3469
|
-
const errorState = this.#errorState.value;
|
|
3470
|
-
const hasError = Boolean(errorState?.error);
|
|
3471
|
-
const { active: isOpen } = this.#dialog.input.current;
|
|
3472
|
-
if (errorState?.error) this.#lastErrorMessage = errorState.error.message?.trim() || null;
|
|
3473
|
-
const desc = this.querySelector("media-alert-dialog-description");
|
|
3474
|
-
if (desc) desc.textContent = this.#lastErrorMessage ?? FALLBACK_MESSAGE;
|
|
3475
|
-
if (hasError && !isOpen) this.#dialog.open();
|
|
3476
|
-
else if (!hasError && isOpen) this.#dialog.close();
|
|
5591
|
+
syncCoreProps() {
|
|
5592
|
+
this.#core.setProps({ closeDelay: this.closeDelay });
|
|
3477
5593
|
}
|
|
3478
|
-
|
|
3479
|
-
|
|
3480
|
-
|
|
3481
|
-
|
|
3482
|
-
|
|
3483
|
-
|
|
3484
|
-
|
|
3485
|
-
|
|
3486
|
-
|
|
3487
|
-
|
|
3488
|
-
|
|
3489
|
-
|
|
3490
|
-
});
|
|
5594
|
+
};
|
|
5595
|
+
function renderSeekIndicator(element, state) {
|
|
5596
|
+
const value = element.querySelector("media-seek-indicator-value");
|
|
5597
|
+
if (!value) return;
|
|
5598
|
+
value.textContent = getSeekIndicatorDisplayValue(state);
|
|
5599
|
+
}
|
|
5600
|
+
|
|
5601
|
+
//#endregion
|
|
5602
|
+
//#region src/ui/seek-indicator/seek-indicator-value-element.ts
|
|
5603
|
+
var SeekIndicatorValueElement = class extends MediaElement {
|
|
5604
|
+
static {
|
|
5605
|
+
this.tagName = "media-seek-indicator-value";
|
|
3491
5606
|
}
|
|
3492
5607
|
};
|
|
3493
5608
|
|
|
@@ -3532,6 +5647,12 @@ var SliderPreviewElement = class extends MediaElement {
|
|
|
3532
5647
|
constructor(..._args) {
|
|
3533
5648
|
super(..._args);
|
|
3534
5649
|
this.overflow = "clamp";
|
|
5650
|
+
this.#ctx = new ContextConsumer(this, {
|
|
5651
|
+
context: sliderContext,
|
|
5652
|
+
subscribe: true
|
|
5653
|
+
});
|
|
5654
|
+
this.#resizeObserver = null;
|
|
5655
|
+
this.#width = 0;
|
|
3535
5656
|
}
|
|
3536
5657
|
static {
|
|
3537
5658
|
this.tagName = "media-slider-preview";
|
|
@@ -3539,12 +5660,9 @@ var SliderPreviewElement = class extends MediaElement {
|
|
|
3539
5660
|
static {
|
|
3540
5661
|
this.properties = { overflow: { type: String } };
|
|
3541
5662
|
}
|
|
3542
|
-
#ctx
|
|
3543
|
-
|
|
3544
|
-
|
|
3545
|
-
});
|
|
3546
|
-
#resizeObserver = null;
|
|
3547
|
-
#width = 0;
|
|
5663
|
+
#ctx;
|
|
5664
|
+
#resizeObserver;
|
|
5665
|
+
#width;
|
|
3548
5666
|
connectedCallback() {
|
|
3549
5667
|
super.connectedCallback();
|
|
3550
5668
|
this.#resizeObserver = new ResizeObserver(([entry]) => {
|
|
@@ -3633,16 +5751,21 @@ var ThumbnailElement = class extends MediaElement {
|
|
|
3633
5751
|
}
|
|
3634
5752
|
};
|
|
3635
5753
|
}
|
|
3636
|
-
#core
|
|
3637
|
-
#img
|
|
3638
|
-
#textTracks
|
|
3639
|
-
#thumbnails
|
|
5754
|
+
#core;
|
|
5755
|
+
#img;
|
|
5756
|
+
#textTracks;
|
|
5757
|
+
#thumbnails;
|
|
3640
5758
|
#externalThumbnails;
|
|
3641
5759
|
#lastTextTrack;
|
|
3642
|
-
#api
|
|
5760
|
+
#api;
|
|
3643
5761
|
constructor() {
|
|
3644
5762
|
super();
|
|
3645
5763
|
this.time = 0;
|
|
5764
|
+
this.#core = new ThumbnailCore();
|
|
5765
|
+
this.#img = document.createElement("img");
|
|
5766
|
+
this.#textTracks = new PlayerController(this, playerContext, selectTextTrack);
|
|
5767
|
+
this.#thumbnails = [];
|
|
5768
|
+
this.#api = null;
|
|
3646
5769
|
const shadow = this.attachShadow({ mode: "open" });
|
|
3647
5770
|
const style = document.createElement("style");
|
|
3648
5771
|
style.textContent = SHADOW_CSS;
|
|
@@ -3774,6 +5897,10 @@ var SliderValueElement = class extends MediaElement {
|
|
|
3774
5897
|
constructor(..._args) {
|
|
3775
5898
|
super(..._args);
|
|
3776
5899
|
this.type = "current";
|
|
5900
|
+
this.#ctx = new ContextConsumer(this, {
|
|
5901
|
+
context: sliderContext,
|
|
5902
|
+
subscribe: true
|
|
5903
|
+
});
|
|
3777
5904
|
}
|
|
3778
5905
|
static {
|
|
3779
5906
|
this.tagName = "media-slider-value";
|
|
@@ -3781,10 +5908,7 @@ var SliderValueElement = class extends MediaElement {
|
|
|
3781
5908
|
static {
|
|
3782
5909
|
this.properties = { type: { type: String } };
|
|
3783
5910
|
}
|
|
3784
|
-
#ctx
|
|
3785
|
-
context: sliderContext,
|
|
3786
|
-
subscribe: true
|
|
3787
|
-
});
|
|
5911
|
+
#ctx;
|
|
3788
5912
|
connectedCallback() {
|
|
3789
5913
|
super.connectedCallback();
|
|
3790
5914
|
this.setAttribute("aria-live", "off");
|
|
@@ -3799,6 +5923,123 @@ var SliderValueElement = class extends MediaElement {
|
|
|
3799
5923
|
}
|
|
3800
5924
|
};
|
|
3801
5925
|
|
|
5926
|
+
//#endregion
|
|
5927
|
+
//#region src/ui/status-announcer/status-announcer-element.ts
|
|
5928
|
+
var StatusAnnouncerElement = class extends MediaElement {
|
|
5929
|
+
static {
|
|
5930
|
+
this.tagName = "media-status-announcer";
|
|
5931
|
+
}
|
|
5932
|
+
static {
|
|
5933
|
+
this.properties = { closeDelay: {
|
|
5934
|
+
type: Number,
|
|
5935
|
+
attribute: "close-delay"
|
|
5936
|
+
} };
|
|
5937
|
+
}
|
|
5938
|
+
#core = new StatusAnnouncerCore();
|
|
5939
|
+
#player = new PlayerController(this, playerContext);
|
|
5940
|
+
#container = new ContextConsumer(this, {
|
|
5941
|
+
context: containerContext,
|
|
5942
|
+
callback: () => this.#reconnect(),
|
|
5943
|
+
subscribe: true
|
|
5944
|
+
});
|
|
5945
|
+
#disconnect = null;
|
|
5946
|
+
#inputActionUnsubscribe = null;
|
|
5947
|
+
connectedCallback() {
|
|
5948
|
+
super.connectedCallback();
|
|
5949
|
+
if (this.destroyed) return;
|
|
5950
|
+
this.setAttribute("role", "status");
|
|
5951
|
+
this.#disconnect = new AbortController();
|
|
5952
|
+
this.#core.state.subscribe(() => this.requestUpdate(), { signal: this.#disconnect.signal });
|
|
5953
|
+
this.#reconnect();
|
|
5954
|
+
}
|
|
5955
|
+
disconnectedCallback() {
|
|
5956
|
+
super.disconnectedCallback();
|
|
5957
|
+
this.#inputActionUnsubscribe?.();
|
|
5958
|
+
this.#inputActionUnsubscribe = null;
|
|
5959
|
+
this.#disconnect?.abort();
|
|
5960
|
+
this.#disconnect = null;
|
|
5961
|
+
}
|
|
5962
|
+
destroyCallback() {
|
|
5963
|
+
this.#inputActionUnsubscribe?.();
|
|
5964
|
+
this.#core.destroy();
|
|
5965
|
+
super.destroyCallback();
|
|
5966
|
+
}
|
|
5967
|
+
willUpdate(changed) {
|
|
5968
|
+
super.willUpdate(changed);
|
|
5969
|
+
this.#core.setProps({ closeDelay: this.closeDelay });
|
|
5970
|
+
}
|
|
5971
|
+
update(changed) {
|
|
5972
|
+
super.update(changed);
|
|
5973
|
+
const label = this.#core.state.current.label;
|
|
5974
|
+
if (label) this.setAttribute("aria-label", label);
|
|
5975
|
+
else this.removeAttribute("aria-label");
|
|
5976
|
+
}
|
|
5977
|
+
#reconnect() {
|
|
5978
|
+
this.#inputActionUnsubscribe?.();
|
|
5979
|
+
this.#inputActionUnsubscribe = null;
|
|
5980
|
+
const container = this.#container.value?.container;
|
|
5981
|
+
if (!container) return;
|
|
5982
|
+
this.#inputActionUnsubscribe = subscribeToInputActions(container, (event) => {
|
|
5983
|
+
this.#core.processEvent(event, getMediaSnapshot(this.#player.value));
|
|
5984
|
+
});
|
|
5985
|
+
}
|
|
5986
|
+
};
|
|
5987
|
+
|
|
5988
|
+
//#endregion
|
|
5989
|
+
//#region src/ui/status-indicator/status-indicator-element.ts
|
|
5990
|
+
var StatusIndicatorElement = class extends InputIndicatorElement {
|
|
5991
|
+
static {
|
|
5992
|
+
this.tagName = "media-status-indicator";
|
|
5993
|
+
}
|
|
5994
|
+
static {
|
|
5995
|
+
this.properties = {
|
|
5996
|
+
actions: { type: String },
|
|
5997
|
+
closeDelay: {
|
|
5998
|
+
type: Number,
|
|
5999
|
+
attribute: "close-delay"
|
|
6000
|
+
}
|
|
6001
|
+
};
|
|
6002
|
+
}
|
|
6003
|
+
#core = new StatusIndicatorCore();
|
|
6004
|
+
#transition = createTransition();
|
|
6005
|
+
#liveIndicator = new LiveIndicator({
|
|
6006
|
+
host: this,
|
|
6007
|
+
dataAttrs: StatusIndicatorDataAttrs,
|
|
6008
|
+
render: renderStatusIndicator
|
|
6009
|
+
});
|
|
6010
|
+
get core() {
|
|
6011
|
+
return this.#core;
|
|
6012
|
+
}
|
|
6013
|
+
get transition() {
|
|
6014
|
+
return this.#transition;
|
|
6015
|
+
}
|
|
6016
|
+
get liveIndicator() {
|
|
6017
|
+
return this.#liveIndicator;
|
|
6018
|
+
}
|
|
6019
|
+
syncCoreProps() {
|
|
6020
|
+
this.#core.setProps({
|
|
6021
|
+
actions: parseActions(this.actions),
|
|
6022
|
+
closeDelay: this.closeDelay
|
|
6023
|
+
});
|
|
6024
|
+
}
|
|
6025
|
+
};
|
|
6026
|
+
function parseActions(actions) {
|
|
6027
|
+
return actions?.split(/[\s,]+/).filter(Boolean);
|
|
6028
|
+
}
|
|
6029
|
+
function renderStatusIndicator(element, state) {
|
|
6030
|
+
const value = element.querySelector("media-status-indicator-value");
|
|
6031
|
+
if (!value) return;
|
|
6032
|
+
value.textContent = getStatusIndicatorDisplayValue(state);
|
|
6033
|
+
}
|
|
6034
|
+
|
|
6035
|
+
//#endregion
|
|
6036
|
+
//#region src/ui/status-indicator/status-indicator-value-element.ts
|
|
6037
|
+
var StatusIndicatorValueElement = class extends MediaElement {
|
|
6038
|
+
static {
|
|
6039
|
+
this.tagName = "media-status-indicator-value";
|
|
6040
|
+
}
|
|
6041
|
+
};
|
|
6042
|
+
|
|
3802
6043
|
//#endregion
|
|
3803
6044
|
//#region src/ui/time/time-element.ts
|
|
3804
6045
|
var TimeElement = class extends MediaElement {
|
|
@@ -3807,6 +6048,10 @@ var TimeElement = class extends MediaElement {
|
|
|
3807
6048
|
this.type = TimeCore.defaultProps.type;
|
|
3808
6049
|
this.negativeSign = TimeCore.defaultProps.negativeSign;
|
|
3809
6050
|
this.label = TimeCore.defaultProps.label;
|
|
6051
|
+
this.#core = new TimeCore();
|
|
6052
|
+
this.#state = new PlayerController(this, playerContext, selectTime);
|
|
6053
|
+
this.#signSpan = document.createElement("span");
|
|
6054
|
+
this.#textNode = document.createTextNode("");
|
|
3810
6055
|
}
|
|
3811
6056
|
static {
|
|
3812
6057
|
this.tagName = "media-time";
|
|
@@ -3821,10 +6066,10 @@ var TimeElement = class extends MediaElement {
|
|
|
3821
6066
|
label: { type: String }
|
|
3822
6067
|
};
|
|
3823
6068
|
}
|
|
3824
|
-
#core
|
|
3825
|
-
#state
|
|
3826
|
-
#signSpan
|
|
3827
|
-
#textNode
|
|
6069
|
+
#core;
|
|
6070
|
+
#state;
|
|
6071
|
+
#signSpan;
|
|
6072
|
+
#textNode;
|
|
3828
6073
|
connectedCallback() {
|
|
3829
6074
|
super.connectedCallback();
|
|
3830
6075
|
if (!this.#signSpan.parentNode) {
|
|
@@ -3886,6 +6131,12 @@ var TimeSliderElement = class extends MediaElement {
|
|
|
3886
6131
|
this.orientation = TimeSliderCore.defaultProps.orientation;
|
|
3887
6132
|
this.disabled = TimeSliderCore.defaultProps.disabled;
|
|
3888
6133
|
this.thumbAlignment = TimeSliderCore.defaultProps.thumbAlignment;
|
|
6134
|
+
this.#core = new TimeSliderCore();
|
|
6135
|
+
this.#provider = new ContextProvider(this, { context: sliderContext });
|
|
6136
|
+
this.#timeState = new PlayerController(this, playerContext, selectTime);
|
|
6137
|
+
this.#bufferState = new PlayerController(this, playerContext, selectBuffer);
|
|
6138
|
+
this.#slider = null;
|
|
6139
|
+
this.#disconnect = null;
|
|
3889
6140
|
}
|
|
3890
6141
|
static {
|
|
3891
6142
|
this.tagName = "media-time-slider";
|
|
@@ -3910,12 +6161,12 @@ var TimeSliderElement = class extends MediaElement {
|
|
|
3910
6161
|
}
|
|
3911
6162
|
};
|
|
3912
6163
|
}
|
|
3913
|
-
#core
|
|
3914
|
-
#provider
|
|
3915
|
-
#timeState
|
|
3916
|
-
#bufferState
|
|
3917
|
-
#slider
|
|
3918
|
-
#disconnect
|
|
6164
|
+
#core;
|
|
6165
|
+
#provider;
|
|
6166
|
+
#timeState;
|
|
6167
|
+
#bufferState;
|
|
6168
|
+
#slider;
|
|
6169
|
+
#disconnect;
|
|
3919
6170
|
connectedCallback() {
|
|
3920
6171
|
super.connectedCallback();
|
|
3921
6172
|
if (this.destroyed) return;
|
|
@@ -3996,6 +6247,62 @@ var TimeSliderElement = class extends MediaElement {
|
|
|
3996
6247
|
}
|
|
3997
6248
|
};
|
|
3998
6249
|
|
|
6250
|
+
//#endregion
|
|
6251
|
+
//#region src/ui/volume-indicator/volume-indicator-element.ts
|
|
6252
|
+
var VolumeIndicatorElement = class extends InputIndicatorElement {
|
|
6253
|
+
static {
|
|
6254
|
+
this.tagName = "media-volume-indicator";
|
|
6255
|
+
}
|
|
6256
|
+
static {
|
|
6257
|
+
this.properties = { closeDelay: {
|
|
6258
|
+
type: Number,
|
|
6259
|
+
attribute: "close-delay"
|
|
6260
|
+
} };
|
|
6261
|
+
}
|
|
6262
|
+
#core = new VolumeIndicatorCore();
|
|
6263
|
+
#transition = createTransition();
|
|
6264
|
+
#liveIndicator = new LiveIndicator({
|
|
6265
|
+
host: this,
|
|
6266
|
+
dataAttrs: VolumeIndicatorDataAttrs,
|
|
6267
|
+
render: renderVolumeIndicator
|
|
6268
|
+
});
|
|
6269
|
+
get core() {
|
|
6270
|
+
return this.#core;
|
|
6271
|
+
}
|
|
6272
|
+
get transition() {
|
|
6273
|
+
return this.#transition;
|
|
6274
|
+
}
|
|
6275
|
+
get liveIndicator() {
|
|
6276
|
+
return this.#liveIndicator;
|
|
6277
|
+
}
|
|
6278
|
+
syncCoreProps() {
|
|
6279
|
+
this.#core.setProps({ closeDelay: this.closeDelay });
|
|
6280
|
+
}
|
|
6281
|
+
};
|
|
6282
|
+
function renderVolumeIndicator(element, state) {
|
|
6283
|
+
const fill = element.querySelector("media-volume-indicator-fill");
|
|
6284
|
+
const value = element.querySelector("media-volume-indicator-value");
|
|
6285
|
+
if (state.fill) fill?.style.setProperty(VolumeIndicatorCSSVars.fill, state.fill);
|
|
6286
|
+
else fill?.style.removeProperty(VolumeIndicatorCSSVars.fill);
|
|
6287
|
+
if (value) value.textContent = getVolumeIndicatorDisplayValue(state);
|
|
6288
|
+
}
|
|
6289
|
+
|
|
6290
|
+
//#endregion
|
|
6291
|
+
//#region src/ui/volume-indicator/volume-indicator-fill-element.ts
|
|
6292
|
+
var VolumeIndicatorFillElement = class extends MediaElement {
|
|
6293
|
+
static {
|
|
6294
|
+
this.tagName = "media-volume-indicator-fill";
|
|
6295
|
+
}
|
|
6296
|
+
};
|
|
6297
|
+
|
|
6298
|
+
//#endregion
|
|
6299
|
+
//#region src/ui/volume-indicator/volume-indicator-value-element.ts
|
|
6300
|
+
var VolumeIndicatorValueElement = class extends MediaElement {
|
|
6301
|
+
static {
|
|
6302
|
+
this.tagName = "media-volume-indicator-value";
|
|
6303
|
+
}
|
|
6304
|
+
};
|
|
6305
|
+
|
|
3999
6306
|
//#endregion
|
|
4000
6307
|
//#region src/ui/volume-slider/volume-slider-element.ts
|
|
4001
6308
|
var VolumeSliderElement = class extends MediaElement {
|
|
@@ -4008,6 +6315,11 @@ var VolumeSliderElement = class extends MediaElement {
|
|
|
4008
6315
|
this.orientation = VolumeSliderCore.defaultProps.orientation;
|
|
4009
6316
|
this.disabled = VolumeSliderCore.defaultProps.disabled;
|
|
4010
6317
|
this.thumbAlignment = VolumeSliderCore.defaultProps.thumbAlignment;
|
|
6318
|
+
this.#core = new VolumeSliderCore();
|
|
6319
|
+
this.#provider = new ContextProvider(this, { context: sliderContext });
|
|
6320
|
+
this.#volumeState = new PlayerController(this, playerContext, selectVolume);
|
|
6321
|
+
this.#slider = null;
|
|
6322
|
+
this.#disconnect = null;
|
|
4011
6323
|
}
|
|
4012
6324
|
static {
|
|
4013
6325
|
this.tagName = "media-volume-slider";
|
|
@@ -4032,11 +6344,11 @@ var VolumeSliderElement = class extends MediaElement {
|
|
|
4032
6344
|
}
|
|
4033
6345
|
};
|
|
4034
6346
|
}
|
|
4035
|
-
#core
|
|
4036
|
-
#provider
|
|
4037
|
-
#volumeState
|
|
4038
|
-
#slider
|
|
4039
|
-
#disconnect
|
|
6347
|
+
#core;
|
|
6348
|
+
#provider;
|
|
6349
|
+
#volumeState;
|
|
6350
|
+
#slider;
|
|
6351
|
+
#disconnect;
|
|
4040
6352
|
connectedCallback() {
|
|
4041
6353
|
super.connectedCallback();
|
|
4042
6354
|
if (this.destroyed) return;
|
|
@@ -4118,6 +6430,19 @@ var VolumeSliderElement = class extends MediaElement {
|
|
|
4118
6430
|
|
|
4119
6431
|
//#endregion
|
|
4120
6432
|
//#region src/define/ui/compounds.ts
|
|
6433
|
+
function defineMenu() {
|
|
6434
|
+
safeDefine(MenuElement);
|
|
6435
|
+
safeDefine(MenuBackElement);
|
|
6436
|
+
safeDefine(MenuItemElement);
|
|
6437
|
+
safeDefine(MenuLabelElement);
|
|
6438
|
+
safeDefine(MenuSeparatorElement);
|
|
6439
|
+
safeDefine(MenuGroupElement);
|
|
6440
|
+
safeDefine(MenuRadioGroupElement);
|
|
6441
|
+
safeDefine(MenuRadioItemElement);
|
|
6442
|
+
safeDefine(MenuCheckboxItemElement);
|
|
6443
|
+
safeDefine(MenuItemIndicatorElement);
|
|
6444
|
+
safeDefine(MenuViewElement);
|
|
6445
|
+
}
|
|
4121
6446
|
function defineControls() {
|
|
4122
6447
|
safeDefine(ControlsElement);
|
|
4123
6448
|
safeDefine(ControlsGroupElement);
|
|
@@ -4128,6 +6453,16 @@ function defineErrorDialog() {
|
|
|
4128
6453
|
safeDefine(AlertDialogDescriptionElement);
|
|
4129
6454
|
safeDefine(AlertDialogTitleElement);
|
|
4130
6455
|
}
|
|
6456
|
+
function defineInputIndicators() {
|
|
6457
|
+
safeDefine(StatusAnnouncerElement);
|
|
6458
|
+
safeDefine(StatusIndicatorElement);
|
|
6459
|
+
safeDefine(StatusIndicatorValueElement);
|
|
6460
|
+
safeDefine(VolumeIndicatorElement);
|
|
6461
|
+
safeDefine(VolumeIndicatorFillElement);
|
|
6462
|
+
safeDefine(VolumeIndicatorValueElement);
|
|
6463
|
+
safeDefine(SeekIndicatorElement);
|
|
6464
|
+
safeDefine(SeekIndicatorValueElement);
|
|
6465
|
+
}
|
|
4131
6466
|
/** Shared slider sub-elements used by all slider types. */
|
|
4132
6467
|
function defineSliderParts() {
|
|
4133
6468
|
safeDefine(SliderFillElement);
|
|
@@ -4153,5 +6488,5 @@ function defineVolumeSlider() {
|
|
|
4153
6488
|
}
|
|
4154
6489
|
|
|
4155
6490
|
//#endregion
|
|
4156
|
-
export {
|
|
4157
|
-
//# sourceMappingURL=compounds-
|
|
6491
|
+
export { selectTextTrack as A, selectBuffer as C, selectPlayback as D, selectPiP as E, selectVolume as M, defaults as N, selectPlaybackRate as O, createHotkey as S, selectLive as T, MediaButtonElement as _, defineTime as a, applyElementProps as b, TooltipGroupElement as c, MenuRadioItemElement as d, MenuRadioGroupElement as f, MuteButtonElement as g, PlayButtonElement as h, defineMenu as i, selectTime as j, selectRemotePlayback as k, TooltipElement as l, MenuElement as m, defineErrorDialog as n, defineTimeSlider as o, MenuItemIndicatorElement as p, defineInputIndicators as r, defineVolumeSlider as s, defineControls as t, PopoverElement as u, applyStateDataAttrs as v, selectFullscreen as w, createButton as x, logMissingFeature as y };
|
|
6492
|
+
//# sourceMappingURL=compounds-DxdDY3jr.js.map
|