@videojs/html 10.0.0-beta.21 → 10.0.0-beta.23
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/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 +1 -4
- package/cdn/audio-minimal-ui.js +1 -1
- package/cdn/audio-minimal.dev.js +5 -7
- 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 +1 -4
- package/cdn/audio-ui.js +1 -1
- package/cdn/audio.dev.js +5 -7
- 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 +3 -3
- package/cdn/background.js +1 -1
- package/cdn/background.js.map +1 -1
- package/cdn/{compounds-CM_NP-ej.js → compounds-BHHGcL_P.js} +148 -63
- package/cdn/compounds-BHHGcL_P.js.map +1 -0
- package/cdn/compounds-DJyzXLOB.js +8 -0
- package/cdn/compounds-DJyzXLOB.js.map +1 -0
- package/cdn/{create-player-Bi6WUwDZ.js → create-player-B-gVAMdr.js} +183 -94
- package/cdn/create-player-B-gVAMdr.js.map +1 -0
- package/cdn/create-player-C5ui1T2i.js +7 -0
- package/cdn/create-player-C5ui1T2i.js.map +1 -0
- package/cdn/default-Djy9PEXm.js +2 -0
- package/cdn/default-Djy9PEXm.js.map +1 -0
- package/cdn/{default-XHZAb7gP.js → default-YzaLyoYg.js} +3 -1
- package/cdn/default-YzaLyoYg.js.map +1 -0
- package/cdn/hls-DEP0AzDp.js +41 -0
- package/cdn/hls-DEP0AzDp.js.map +1 -0
- package/cdn/{hls-BotloEPN.js → hls-DR-Xxpxv.js} +163 -23
- package/cdn/hls-DR-Xxpxv.js.map +1 -0
- package/cdn/hotkey-element-BvI78DTc.js +2 -0
- package/cdn/{hotkey-element-DRGCbVj9.js.map → hotkey-element-BvI78DTc.js.map} +1 -1
- package/cdn/{hotkey-element-317kwVH5.js → hotkey-element-oEdY8YLl.js} +24 -18
- package/cdn/{hotkey-element-317kwVH5.js.map → hotkey-element-oEdY8YLl.js.map} +1 -1
- package/cdn/live-video-minimal.dev.d.ts +1 -0
- package/cdn/live-video-minimal.dev.js +115 -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 +130 -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 +11 -5
- package/cdn/media/simple-hls-video.dev.js.map +1 -1
- package/cdn/media/simple-hls-video.js +6 -6
- package/cdn/media/simple-hls-video.js.map +1 -1
- package/cdn/media-attach-mixin-DuquRhAk.js +2 -0
- package/cdn/{media-attach-mixin-C2wz0Qbd.js.map → media-attach-mixin-DuquRhAk.js.map} +1 -1
- package/cdn/{media-attach-mixin-CYoNe7Sh.js → media-attach-mixin-pV8deGiO.js} +2 -2
- package/cdn/{media-attach-mixin-CYoNe7Sh.js.map → media-attach-mixin-pV8deGiO.js.map} +1 -1
- package/cdn/{minimal-BnDnlwbj.js → minimal-CciG7Fsu.js} +3 -1
- package/cdn/minimal-CciG7Fsu.js.map +1 -0
- package/cdn/minimal-DSLrhnDm.js +2 -0
- package/cdn/minimal-DSLrhnDm.js.map +1 -0
- package/cdn/{minimal-ui-cy2oEbFm.js → minimal-ui-Bx-_SggT.js} +6 -5
- package/cdn/minimal-ui-Bx-_SggT.js.map +1 -0
- package/cdn/minimal-ui-CFO4ssL8.js +2 -0
- package/cdn/{minimal-ui-CroDYUGf.js.map → minimal-ui-CFO4ssL8.js.map} +1 -1
- package/cdn/minimal-ui-D6Pvbx1R.js +2 -0
- package/cdn/minimal-ui-D6Pvbx1R.js.map +1 -0
- package/cdn/{minimal-ui-DhxN21v5.js → minimal-ui-Dl-8ZL53.js} +5 -5
- package/cdn/{minimal-ui-DhxN21v5.js.map → minimal-ui-Dl-8ZL53.js.map} +1 -1
- package/cdn/{mux-B5K6kOzg.js → mux-D5M5HL6A.js} +753 -7
- package/cdn/mux-D5M5HL6A.js.map +1 -0
- package/cdn/mux-DH3Kxyot.js +27 -0
- package/cdn/mux-DH3Kxyot.js.map +1 -0
- package/cdn/native-hls-DN_aWn2z.js +2 -0
- package/cdn/native-hls-DN_aWn2z.js.map +1 -0
- package/cdn/native-hls-ak4v9DN6.js +371 -0
- package/cdn/native-hls-ak4v9DN6.js.map +1 -0
- package/cdn/player-BKKCelEs.js +2 -0
- package/cdn/player-BKKCelEs.js.map +1 -0
- package/cdn/{player-CatrGW7l.js → player-C_6YjMl7.js} +93 -8
- package/cdn/player-C_6YjMl7.js.map +1 -0
- package/cdn/player-CtegNw3g.js +2 -0
- package/cdn/{player-BK35-ndY.js.map → player-CtegNw3g.js.map} +1 -1
- package/cdn/{player-xstFHOgW.js → player-D468sScc.js} +3 -3
- package/cdn/{player-xstFHOgW.js.map → player-D468sScc.js.map} +1 -1
- package/cdn/{context-0rI_P6jf.js → predicate-BOcV_HDG.js} +23 -2
- package/cdn/predicate-BOcV_HDG.js.map +1 -0
- package/cdn/{context-CEFisYD0.js → predicate-Cad5WV4q.js} +2 -2
- package/cdn/predicate-Cad5WV4q.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-CDUkmCtS.js → skin-element-BcbrkgGs.js} +2 -2
- package/cdn/{skin-element-CDUkmCtS.js.map → skin-element-BcbrkgGs.js.map} +1 -1
- package/cdn/{skin-element-BGP23sop.js → skin-element-DesLkJKs.js} +2 -2
- package/cdn/{skin-element-BGP23sop.js.map → skin-element-DesLkJKs.js.map} +1 -1
- 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-Em9rF9Ah.js → ui-CzxKbsyb.js} +7 -6
- package/cdn/ui-CzxKbsyb.js.map +1 -0
- package/cdn/ui-D6DV-Emw.js +2 -0
- package/cdn/{ui-QHwo6iyo.js.map → ui-D6DV-Emw.js.map} +1 -1
- package/cdn/ui-Dw-n2AMs.js +2 -0
- package/cdn/ui-Dw-n2AMs.js.map +1 -0
- package/cdn/{ui-AFHQtrqa.js → ui-S_eLj4ur.js} +6 -6
- package/cdn/{ui-AFHQtrqa.js.map → ui-S_eLj4ur.js.map} +1 -1
- package/cdn/{video-host-ycP7ckxU.js → video-host-BR_2vUZH.js} +82 -39
- package/cdn/video-host-BR_2vUZH.js.map +1 -0
- package/cdn/video-host-Bkh2OyyP.js +47 -0
- package/cdn/video-host-Bkh2OyyP.js.map +1 -0
- package/cdn/video-minimal-ui.dev.js +1 -4
- package/cdn/video-minimal-ui.js +1 -1
- package/cdn/video-minimal.dev.js +11 -7
- 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 +1 -4
- package/cdn/video-ui.js +1 -1
- package/cdn/video.dev.js +11 -7
- 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/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 +2 -1
- package/dist/default/define/audio/skin.css +2 -1
- package/dist/default/define/background/skin.js +1 -1
- package/dist/default/define/live-audio/minimal-skin.css +779 -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/skin.css +795 -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-video/minimal-skin.css +1170 -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 +30 -0
- package/dist/default/define/live-video/minimal-skin.tailwind.js.map +1 -0
- package/dist/default/define/live-video/skin.css +1160 -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/skin-element.js +1 -1
- package/dist/default/define/ui/cast-button.js +7 -0
- package/dist/default/define/ui/cast-button.js.map +1 -0
- package/dist/default/define/video/minimal-skin.css +8 -1
- 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 +1 -1
- package/dist/default/define/video/minimal-skin.tailwind.js.map +1 -1
- package/dist/default/define/video/minimal-ui.js +2 -0
- package/dist/default/define/video/minimal-ui.js.map +1 -1
- package/dist/default/define/video/skin.css +8 -1
- 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 +1 -1
- package/dist/default/define/video/skin.tailwind.js.map +1 -1
- package/dist/default/define/video/ui.js +2 -0
- package/dist/default/define/video/ui.js.map +1 -1
- package/dist/default/icons/dist/render/default/index.js +2 -0
- package/dist/default/icons/dist/render/default/index.js.map +1 -1
- package/dist/default/icons/dist/render/minimal/index.js +2 -0
- package/dist/default/icons/dist/render/minimal/index.js.map +1 -1
- package/dist/default/index.js +3 -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/presets/live-audio.js +6 -0
- package/dist/default/presets/live-video.js +6 -0
- package/dist/default/skins/dist/default/default/tailwind/components/button.js +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/button.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/button.js +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/button.js.map +1 -1
- package/dist/default/skins/dist/default/shared/tailwind/icon-state.js +5 -0
- package/dist/default/skins/dist/default/shared/tailwind/icon-state.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 +24 -0
- package/dist/default/ui/cast-button/cast-button-element.js.map +1 -0
- 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 +10 -7
- package/dist/default/ui/gesture/gesture-element.js.map +1 -1
- package/dist/default/ui/hotkey/hotkey-element.js +10 -7
- package/dist/default/ui/hotkey/hotkey-element.js.map +1 -1
- 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/popover/popover-element.js +14 -7
- package/dist/default/ui/popover/popover-element.js.map +1 -1
- 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/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 +16 -8
- 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-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/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/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 +2 -1
- 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/player.d.ts +2 -2
- package/dist/dev/define/audio/skin.css +2 -1
- 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/background/player.d.ts +2 -2
- package/dist/dev/define/background/skin.d.ts.map +1 -1
- package/dist/dev/define/background/skin.js +1 -1
- package/dist/dev/define/live-audio/minimal-skin.css +779 -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 +76 -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 +79 -0
- package/dist/dev/define/live-audio/minimal-skin.tailwind.js.map +1 -0
- package/dist/dev/define/live-audio/skin.css +795 -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 +83 -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 +78 -0
- package/dist/dev/define/live-audio/skin.tailwind.js.map +1 -0
- package/dist/dev/define/live-video/minimal-skin.css +1170 -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 +112 -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 +110 -0
- package/dist/dev/define/live-video/minimal-skin.tailwind.js.map +1 -0
- package/dist/dev/define/live-video/skin.css +1160 -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 +127 -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 +111 -0
- package/dist/dev/define/live-video/skin.tailwind.js.map +1 -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 +1 -1
- package/dist/dev/define/ui/cast-button.d.ts +9 -0
- package/dist/dev/define/ui/cast-button.d.ts.map +1 -0
- package/dist/dev/define/ui/cast-button.js +7 -0
- package/dist/dev/define/ui/cast-button.js.map +1 -0
- package/dist/dev/define/video/minimal-skin.css +8 -1
- 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 +6 -0
- 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 +5 -0
- package/dist/dev/define/video/minimal-skin.tailwind.js.map +1 -1
- package/dist/dev/define/video/minimal-ui.js +2 -0
- 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 +8 -1
- 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 +6 -0
- 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 +5 -0
- package/dist/dev/define/video/skin.tailwind.js.map +1 -1
- package/dist/dev/define/video/ui.js +2 -0
- package/dist/dev/define/video/ui.js.map +1 -1
- package/dist/dev/icons/dist/render/default/index.js +2 -0
- package/dist/dev/icons/dist/render/default/index.js.map +1 -1
- package/dist/dev/icons/dist/render/minimal/index.js +2 -0
- package/dist/dev/icons/dist/render/minimal/index.js.map +1 -1
- package/dist/dev/index.d.ts +13 -3
- package/dist/dev/index.d.ts.map +1 -0
- package/dist/dev/index.js +3 -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/player/context.d.ts +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 +6 -0
- package/dist/dev/presets/live-audio.js +6 -0
- package/dist/dev/presets/live-video.d.ts +6 -0
- package/dist/dev/presets/live-video.js +6 -0
- package/dist/dev/skins/dist/default/default/tailwind/components/button.js +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/button.js.map +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/button.js +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/button.js.map +1 -1
- package/dist/dev/skins/dist/default/shared/tailwind/icon-state.js +5 -0
- package/dist/dev/skins/dist/default/shared/tailwind/icon-state.js.map +1 -1
- package/dist/dev/store/container-mixin.d.ts +1 -1
- package/dist/dev/store/provider-mixin.d.ts +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 +19 -0
- package/dist/dev/ui/cast-button/cast-button-element.d.ts.map +1 -0
- package/dist/dev/ui/cast-button/cast-button-element.js +24 -0
- package/dist/dev/ui/cast-button/cast-button-element.js.map +1 -0
- 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 +10 -7
- 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 +10 -7
- package/dist/dev/ui/hotkey/hotkey-element.js.map +1 -1
- 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/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/popover/popover-element.d.ts +3 -3
- package/dist/dev/ui/popover/popover-element.d.ts.map +1 -1
- package/dist/dev/ui/popover/popover-element.js +14 -7
- package/dist/dev/ui/popover/popover-element.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/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/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 +3 -3
- package/dist/dev/ui/tooltip/tooltip-element.d.ts.map +1 -1
- package/dist/dev/ui/tooltip/tooltip-element.js +16 -8
- 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-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/package.json +31 -10
- package/cdn/compounds-CM_NP-ej.js.map +0 -1
- package/cdn/compounds-Vvz-YfXP.js +0 -8
- package/cdn/compounds-Vvz-YfXP.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-Bi6WUwDZ.js.map +0 -1
- package/cdn/create-player-CKuX8YI5.js +0 -7
- package/cdn/create-player-CKuX8YI5.js.map +0 -1
- package/cdn/default-C8KsZ0zK.js +0 -2
- package/cdn/default-C8KsZ0zK.js.map +0 -1
- package/cdn/default-XHZAb7gP.js.map +0 -1
- package/cdn/hls-BotloEPN.js.map +0 -1
- package/cdn/hls-CBpGTZXU.js +0 -41
- package/cdn/hls-CBpGTZXU.js.map +0 -1
- package/cdn/hotkey-element-DRGCbVj9.js +0 -2
- package/cdn/media-attach-mixin-C2wz0Qbd.js +0 -2
- package/cdn/minimal-BnDnlwbj.js.map +0 -1
- package/cdn/minimal-CqBxBoLe.js +0 -2
- package/cdn/minimal-CqBxBoLe.js.map +0 -1
- package/cdn/minimal-ui-C_G24FML.js +0 -2
- package/cdn/minimal-ui-C_G24FML.js.map +0 -1
- package/cdn/minimal-ui-CroDYUGf.js +0 -2
- package/cdn/minimal-ui-cy2oEbFm.js.map +0 -1
- package/cdn/mux-B5K6kOzg.js.map +0 -1
- package/cdn/mux-DJhfbcCw.js +0 -25
- package/cdn/mux-DJhfbcCw.js.map +0 -1
- package/cdn/native-hls-CU2F7L5C.js +0 -123
- package/cdn/native-hls-CU2F7L5C.js.map +0 -1
- package/cdn/native-hls-DKcYYWRt.js +0 -2
- package/cdn/native-hls-DKcYYWRt.js.map +0 -1
- package/cdn/player-BK35-ndY.js +0 -2
- package/cdn/player-C7ajkBi4.js +0 -2
- package/cdn/player-C7ajkBi4.js.map +0 -1
- package/cdn/player-CatrGW7l.js.map +0 -1
- package/cdn/ui-B7vt9mp-.js +0 -2
- package/cdn/ui-B7vt9mp-.js.map +0 -1
- package/cdn/ui-Em9rF9Ah.js.map +0 -1
- package/cdn/ui-QHwo6iyo.js +0 -2
- package/cdn/video-host-CPRJVRi3.js +0 -47
- package/cdn/video-host-CPRJVRi3.js.map +0 -1
- package/cdn/video-host-ycP7ckxU.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slider-value-element.d.ts","names":[],"sources":["../../../../src/ui/slider/slider-value-element.ts"],"mappings":";;;;cAOa,kBAAA,SAA2B,YAAA;EAAA;kBACtB,OAAA;EAAA,OAEA,UAAA
|
|
1
|
+
{"version":3,"file":"slider-value-element.d.ts","names":[],"sources":["../../../../src/ui/slider/slider-value-element.ts"],"mappings":";;;;cAOa,kBAAA,SAA2B,YAAA;EAAA;kBACtB,OAAA;EAAA,OAEA,UAAA;;MACN,IAAA,EAAI,iBAAA;IAAA;EAAA;EAGd,IAAA;EAOS,iBAAA,CAAA;EAAA,UAKU,MAAA,CAAO,QAAA,EAAU,cAAA;AAAA"}
|
|
@@ -7,6 +7,10 @@ var SliderValueElement = class extends MediaElement {
|
|
|
7
7
|
constructor(..._args) {
|
|
8
8
|
super(..._args);
|
|
9
9
|
this.type = "current";
|
|
10
|
+
this.#ctx = new ContextConsumer(this, {
|
|
11
|
+
context: sliderContext,
|
|
12
|
+
subscribe: true
|
|
13
|
+
});
|
|
10
14
|
}
|
|
11
15
|
static {
|
|
12
16
|
this.tagName = "media-slider-value";
|
|
@@ -14,10 +18,7 @@ var SliderValueElement = class extends MediaElement {
|
|
|
14
18
|
static {
|
|
15
19
|
this.properties = { type: { type: String } };
|
|
16
20
|
}
|
|
17
|
-
#ctx
|
|
18
|
-
context: sliderContext,
|
|
19
|
-
subscribe: true
|
|
20
|
-
});
|
|
21
|
+
#ctx;
|
|
21
22
|
connectedCallback() {
|
|
22
23
|
super.connectedCallback();
|
|
23
24
|
this.setAttribute("aria-live", "off");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slider-value-element.js","names":["#ctx"],"sources":["../../../../src/ui/slider/slider-value-element.ts"],"sourcesContent":["import { applyStateDataAttrs } from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport { ContextConsumer } from '@videojs/element/context';\n\nimport { MediaElement } from '../media-element';\nimport { sliderContext } from './context';\n\nexport class SliderValueElement extends MediaElement {\n static readonly tagName = 'media-slider-value';\n\n static override properties = {\n type: { type: String },\n } satisfies PropertyDeclarationMap<'type'>;\n\n type: 'current' | 'pointer' = 'current';\n\n readonly #ctx = new ContextConsumer(this, {\n context: sliderContext,\n subscribe: true,\n });\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.setAttribute('aria-live', 'off');\n }\n\n protected override update(_changed: PropertyValues): void {\n super.update(_changed);\n\n const ctx = this.#ctx.value;\n if (!ctx) return;\n\n const value = this.type === 'pointer' ? ctx.pointerValue : ctx.state.value;\n\n this.textContent = ctx.formatValue ? ctx.formatValue(value, this.type) : String(Math.round(value));\n\n applyStateDataAttrs(this, ctx.state, ctx.stateAttrMap);\n }\n}\n"],"mappings":";;;;;AAOA,IAAa,qBAAb,cAAwC,aAAa;;;cAOrB;;;
|
|
1
|
+
{"version":3,"file":"slider-value-element.js","names":["#ctx"],"sources":["../../../../src/ui/slider/slider-value-element.ts"],"sourcesContent":["import { applyStateDataAttrs } from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport { ContextConsumer } from '@videojs/element/context';\n\nimport { MediaElement } from '../media-element';\nimport { sliderContext } from './context';\n\nexport class SliderValueElement extends MediaElement {\n static readonly tagName = 'media-slider-value';\n\n static override properties = {\n type: { type: String },\n } satisfies PropertyDeclarationMap<'type'>;\n\n type: 'current' | 'pointer' = 'current';\n\n readonly #ctx = new ContextConsumer(this, {\n context: sliderContext,\n subscribe: true,\n });\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.setAttribute('aria-live', 'off');\n }\n\n protected override update(_changed: PropertyValues): void {\n super.update(_changed);\n\n const ctx = this.#ctx.value;\n if (!ctx) return;\n\n const value = this.type === 'pointer' ? ctx.pointerValue : ctx.state.value;\n\n this.textContent = ctx.formatValue ? ctx.formatValue(value, this.type) : String(Math.round(value));\n\n applyStateDataAttrs(this, ctx.state, ctx.stateAttrMap);\n }\n}\n"],"mappings":";;;;;AAOA,IAAa,qBAAb,cAAwC,aAAa;;;cAOrB;cAEd,IAAI,gBAAgB,MAAM;GACxC,SAAS;GACT,WAAW;GACZ,CAAC;;;iBAXwB;;;oBAEG,EAC3B,MAAM,EAAE,MAAM,QAAQ,EACvB;;CAID;CAKA,oBAAmC;AACjC,QAAM,mBAAmB;AACzB,OAAK,aAAa,aAAa,MAAM;;CAGvC,OAA0B,UAAgC;AACxD,QAAM,OAAO,SAAS;EAEtB,MAAM,MAAM,MAAA,IAAU;AACtB,MAAI,CAAC,IAAK;EAEV,MAAM,QAAQ,KAAK,SAAS,YAAY,IAAI,eAAe,IAAI,MAAM;AAErE,OAAK,cAAc,IAAI,cAAc,IAAI,YAAY,OAAO,KAAK,KAAK,GAAG,OAAO,KAAK,MAAM,MAAM,CAAC;AAElG,sBAAoB,MAAM,IAAI,OAAO,IAAI,aAAa"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thumbnail-element.d.ts","names":[],"sources":["../../../../src/ui/thumbnail/thumbnail-element.ts"],"mappings":";;;;;cAyBa,gBAAA,SAAyB,YAAA;EAAA;kBACpB,OAAA;EAAA,OAEA,UAAA
|
|
1
|
+
{"version":3,"file":"thumbnail-element.d.ts","names":[],"sources":["../../../../src/ui/thumbnail/thumbnail-element.ts"],"mappings":";;;;;cAyBa,gBAAA,SAAyB,YAAA;EAAA;kBACpB,OAAA;EAAA,OAEA,UAAA;;MACN,IAAA,EAAI,iBAAA;IAAA;;MACG,IAAA,EAAI,iBAAA;MAAU,SAAA;IAAA;;MAClB,IAAA,EAAI,iBAAA;IAAA;;MACE,IAAA,EAAI,iBAAA;MAAU,SAAA;IAAA;EAAA;EAGjC,IAAA;EACA,WAAA,EAAa,aAAA,CAAc,KAAA;EAC3B,OAAA,EAAS,aAAA,CAAc,KAAA;EACvB,aAAA,EAAe,aAAA,CAAc,KAAA;EAW7B,WAAA,CAAA;EApBc;;;;EAAA,IAwCV,UAAA,CAAA,GAAc,cAAA;EAAA,IAId,UAAA,CAAW,KAAA,EAAO,cAAA;EAKb,iBAAA,CAAA;EAWA,oBAAA,CAAA;EAIA,eAAA,CAAA;EAAA,UAKU,MAAA,CAAO,OAAA,EAAS,cAAA;AAAA"}
|
|
@@ -30,16 +30,21 @@ var ThumbnailElement = class extends MediaElement {
|
|
|
30
30
|
}
|
|
31
31
|
};
|
|
32
32
|
}
|
|
33
|
-
#core
|
|
34
|
-
#img
|
|
35
|
-
#textTracks
|
|
36
|
-
#thumbnails
|
|
33
|
+
#core;
|
|
34
|
+
#img;
|
|
35
|
+
#textTracks;
|
|
36
|
+
#thumbnails;
|
|
37
37
|
#externalThumbnails;
|
|
38
38
|
#lastTextTrack;
|
|
39
|
-
#api
|
|
39
|
+
#api;
|
|
40
40
|
constructor() {
|
|
41
41
|
super();
|
|
42
42
|
this.time = 0;
|
|
43
|
+
this.#core = new ThumbnailCore();
|
|
44
|
+
this.#img = document.createElement("img");
|
|
45
|
+
this.#textTracks = new PlayerController(this, playerContext, selectTextTrack);
|
|
46
|
+
this.#thumbnails = [];
|
|
47
|
+
this.#api = null;
|
|
43
48
|
const shadow = this.attachShadow({ mode: "open" });
|
|
44
49
|
const style = document.createElement("style");
|
|
45
50
|
style.textContent = SHADOW_CSS;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thumbnail-element.js","names":["#core","#img","#textTracks","#externalThumbnails","#api","#thumbnails","#lastTextTrack","#resetStyles","#applyResize"],"sources":["../../../../src/ui/thumbnail/thumbnail-element.ts"],"sourcesContent":["import {\n type MediaTextTrackState,\n mapCuesToThumbnails,\n ThumbnailCore,\n ThumbnailDataAttrs,\n type ThumbnailImage,\n type ThumbnailResizeResult,\n} from '@videojs/core';\nimport type { ThumbnailApi } from '@videojs/core/dom';\nimport { applyElementProps, applyStateDataAttrs, createThumbnail, selectTextTrack } from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaElement } from '../media-element';\n\nconst SHADOW_CSS = `\\\n:host {\n display: inline-block;\n overflow: hidden;\n}\nimg {\n display: block;\n}`;\n\nexport class ThumbnailElement extends MediaElement {\n static readonly tagName = 'media-thumbnail';\n\n static override properties = {\n time: { type: Number },\n crossOrigin: { type: String, attribute: 'crossorigin' },\n loading: { type: String },\n fetchPriority: { type: String, attribute: 'fetchpriority' },\n } satisfies PropertyDeclarationMap<keyof ThumbnailCore.Props>;\n\n time = 0;\n crossOrigin: ThumbnailCore.Props['crossOrigin'];\n loading: ThumbnailCore.Props['loading'];\n fetchPriority: ThumbnailCore.Props['fetchPriority'];\n\n readonly #core = new ThumbnailCore();\n readonly #img = document.createElement('img');\n readonly #textTracks = new PlayerController(this, playerContext, selectTextTrack);\n\n #thumbnails: ThumbnailImage[] = [];\n #externalThumbnails: ThumbnailImage[] | undefined;\n #lastTextTrack: MediaTextTrackState | undefined;\n #api: ThumbnailApi | null = null;\n\n constructor() {\n super();\n\n const shadow = this.attachShadow({ mode: 'open' });\n\n const style = document.createElement('style');\n style.textContent = SHADOW_CSS;\n shadow.appendChild(style);\n\n this.#img.alt = '';\n this.#img.setAttribute('part', 'img');\n this.#img.setAttribute('aria-hidden', 'true');\n this.#img.setAttribute('decoding', 'async');\n shadow.appendChild(this.#img);\n }\n\n /**\n * Set thumbnail images directly, bypassing the automatic `<track>` detection.\n * When set, this takes priority over the text track path.\n */\n get thumbnails(): ThumbnailImage[] | undefined {\n return this.#externalThumbnails;\n }\n\n set thumbnails(value: ThumbnailImage[] | undefined) {\n this.#externalThumbnails = value;\n this.requestUpdate();\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n if (this.destroyed) return;\n\n this.#api = createThumbnail({\n getContainer: () => this,\n getImg: () => this.#img,\n onStateChange: () => this.requestUpdate(),\n });\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n }\n\n override destroyCallback(): void {\n this.#api?.destroy();\n super.destroyCallback();\n }\n\n protected override update(changed: PropertyValues): void {\n super.update(changed);\n\n // Resolve thumbnails: external prop takes priority over auto <track> path.\n if (this.#externalThumbnails) {\n this.#thumbnails = this.#externalThumbnails;\n } else {\n const textTrack = this.#textTracks.value;\n\n if (textTrack !== this.#lastTextTrack) {\n this.#lastTextTrack = textTrack;\n this.#thumbnails =\n textTrack && textTrack.thumbnailCues.length > 0\n ? mapCuesToThumbnails(textTrack.thumbnailCues, textTrack.thumbnailTrackSrc ?? undefined)\n : [];\n }\n }\n\n const thumbnail = this.#core.findActiveThumbnail(this.#thumbnails, this.time);\n\n // Sync img attributes from element properties.\n applyElementProps(this.#img, {\n crossorigin: this.crossOrigin || undefined,\n loading: this.loading,\n fetchpriority: this.fetchPriority,\n });\n\n // Track src changes via the thumbnail API.\n this.#api?.updateSrc(thumbnail?.url);\n\n if (!thumbnail) {\n this.#img.removeAttribute('src');\n this.#resetStyles();\n\n const state = this.#core.getState(false, false, undefined);\n applyElementProps(this, this.#core.getAttrs(state));\n applyStateDataAttrs(this, state, ThumbnailDataAttrs);\n return;\n }\n\n // Set the img src directly (imperative DOM).\n if (this.#img.getAttribute('src') !== thumbnail.url) {\n this.#img.src = thumbnail.url;\n }\n\n const api = this.#api;\n const state = this.#core.getState(api?.loading ?? false, api?.error ?? false, thumbnail);\n applyElementProps(this, this.#core.getAttrs(state));\n applyStateDataAttrs(this, state, ThumbnailDataAttrs);\n\n if (api?.naturalWidth && api.naturalHeight) {\n const constraints = api.readConstraints();\n const result = this.#core.resize(thumbnail, api.naturalWidth, api.naturalHeight, constraints);\n\n if (result) {\n this.#applyResize(result);\n }\n }\n }\n\n #applyResize(result: ThumbnailResizeResult): void {\n this.style.width = `${result.containerWidth}px`;\n this.style.height = `${result.containerHeight}px`;\n\n const imgStyle = this.#img.style;\n imgStyle.width = `${result.imageWidth}px`;\n imgStyle.height = `${result.imageHeight}px`;\n imgStyle.maxWidth = 'none';\n imgStyle.transform =\n result.offsetX || result.offsetY ? `translate(-${result.offsetX}px, -${result.offsetY}px)` : '';\n }\n\n #resetStyles(): void {\n this.style.width = '';\n this.style.height = '';\n\n const imgStyle = this.#img.style;\n imgStyle.width = '';\n imgStyle.height = '';\n imgStyle.maxWidth = '';\n imgStyle.transform = '';\n }\n}\n"],"mappings":";;;;;;AAgBA,MAAM,aAAa;;;;;;;;AASnB,IAAa,mBAAb,cAAsC,aAAa;;iBACvB;;;oBAEG;GAC3B,MAAM,EAAE,MAAM,QAAQ;GACtB,aAAa;IAAE,MAAM;IAAQ,WAAW;IAAe;GACvD,SAAS,EAAE,MAAM,QAAQ;GACzB,eAAe;IAAE,MAAM;IAAQ,WAAW;IAAiB;GAC5D;;CAOD,
|
|
1
|
+
{"version":3,"file":"thumbnail-element.js","names":["#core","#img","#textTracks","#externalThumbnails","#api","#thumbnails","#lastTextTrack","#resetStyles","#applyResize"],"sources":["../../../../src/ui/thumbnail/thumbnail-element.ts"],"sourcesContent":["import {\n type MediaTextTrackState,\n mapCuesToThumbnails,\n ThumbnailCore,\n ThumbnailDataAttrs,\n type ThumbnailImage,\n type ThumbnailResizeResult,\n} from '@videojs/core';\nimport type { ThumbnailApi } from '@videojs/core/dom';\nimport { applyElementProps, applyStateDataAttrs, createThumbnail, selectTextTrack } from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaElement } from '../media-element';\n\nconst SHADOW_CSS = `\\\n:host {\n display: inline-block;\n overflow: hidden;\n}\nimg {\n display: block;\n}`;\n\nexport class ThumbnailElement extends MediaElement {\n static readonly tagName = 'media-thumbnail';\n\n static override properties = {\n time: { type: Number },\n crossOrigin: { type: String, attribute: 'crossorigin' },\n loading: { type: String },\n fetchPriority: { type: String, attribute: 'fetchpriority' },\n } satisfies PropertyDeclarationMap<keyof ThumbnailCore.Props>;\n\n time = 0;\n crossOrigin: ThumbnailCore.Props['crossOrigin'];\n loading: ThumbnailCore.Props['loading'];\n fetchPriority: ThumbnailCore.Props['fetchPriority'];\n\n readonly #core = new ThumbnailCore();\n readonly #img = document.createElement('img');\n readonly #textTracks = new PlayerController(this, playerContext, selectTextTrack);\n\n #thumbnails: ThumbnailImage[] = [];\n #externalThumbnails: ThumbnailImage[] | undefined;\n #lastTextTrack: MediaTextTrackState | undefined;\n #api: ThumbnailApi | null = null;\n\n constructor() {\n super();\n\n const shadow = this.attachShadow({ mode: 'open' });\n\n const style = document.createElement('style');\n style.textContent = SHADOW_CSS;\n shadow.appendChild(style);\n\n this.#img.alt = '';\n this.#img.setAttribute('part', 'img');\n this.#img.setAttribute('aria-hidden', 'true');\n this.#img.setAttribute('decoding', 'async');\n shadow.appendChild(this.#img);\n }\n\n /**\n * Set thumbnail images directly, bypassing the automatic `<track>` detection.\n * When set, this takes priority over the text track path.\n */\n get thumbnails(): ThumbnailImage[] | undefined {\n return this.#externalThumbnails;\n }\n\n set thumbnails(value: ThumbnailImage[] | undefined) {\n this.#externalThumbnails = value;\n this.requestUpdate();\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n if (this.destroyed) return;\n\n this.#api = createThumbnail({\n getContainer: () => this,\n getImg: () => this.#img,\n onStateChange: () => this.requestUpdate(),\n });\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n }\n\n override destroyCallback(): void {\n this.#api?.destroy();\n super.destroyCallback();\n }\n\n protected override update(changed: PropertyValues): void {\n super.update(changed);\n\n // Resolve thumbnails: external prop takes priority over auto <track> path.\n if (this.#externalThumbnails) {\n this.#thumbnails = this.#externalThumbnails;\n } else {\n const textTrack = this.#textTracks.value;\n\n if (textTrack !== this.#lastTextTrack) {\n this.#lastTextTrack = textTrack;\n this.#thumbnails =\n textTrack && textTrack.thumbnailCues.length > 0\n ? mapCuesToThumbnails(textTrack.thumbnailCues, textTrack.thumbnailTrackSrc ?? undefined)\n : [];\n }\n }\n\n const thumbnail = this.#core.findActiveThumbnail(this.#thumbnails, this.time);\n\n // Sync img attributes from element properties.\n applyElementProps(this.#img, {\n crossorigin: this.crossOrigin || undefined,\n loading: this.loading,\n fetchpriority: this.fetchPriority,\n });\n\n // Track src changes via the thumbnail API.\n this.#api?.updateSrc(thumbnail?.url);\n\n if (!thumbnail) {\n this.#img.removeAttribute('src');\n this.#resetStyles();\n\n const state = this.#core.getState(false, false, undefined);\n applyElementProps(this, this.#core.getAttrs(state));\n applyStateDataAttrs(this, state, ThumbnailDataAttrs);\n return;\n }\n\n // Set the img src directly (imperative DOM).\n if (this.#img.getAttribute('src') !== thumbnail.url) {\n this.#img.src = thumbnail.url;\n }\n\n const api = this.#api;\n const state = this.#core.getState(api?.loading ?? false, api?.error ?? false, thumbnail);\n applyElementProps(this, this.#core.getAttrs(state));\n applyStateDataAttrs(this, state, ThumbnailDataAttrs);\n\n if (api?.naturalWidth && api.naturalHeight) {\n const constraints = api.readConstraints();\n const result = this.#core.resize(thumbnail, api.naturalWidth, api.naturalHeight, constraints);\n\n if (result) {\n this.#applyResize(result);\n }\n }\n }\n\n #applyResize(result: ThumbnailResizeResult): void {\n this.style.width = `${result.containerWidth}px`;\n this.style.height = `${result.containerHeight}px`;\n\n const imgStyle = this.#img.style;\n imgStyle.width = `${result.imageWidth}px`;\n imgStyle.height = `${result.imageHeight}px`;\n imgStyle.maxWidth = 'none';\n imgStyle.transform =\n result.offsetX || result.offsetY ? `translate(-${result.offsetX}px, -${result.offsetY}px)` : '';\n }\n\n #resetStyles(): void {\n this.style.width = '';\n this.style.height = '';\n\n const imgStyle = this.#img.style;\n imgStyle.width = '';\n imgStyle.height = '';\n imgStyle.maxWidth = '';\n imgStyle.transform = '';\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { MediaElement } from "../media-element.js";
|
|
2
2
|
import { PropertyValues } from "@videojs/element";
|
|
3
|
-
import * as _videojs_core0 from "@videojs/core";
|
|
3
|
+
import * as _$_videojs_core0 from "@videojs/core";
|
|
4
4
|
import { TimeType } from "@videojs/core";
|
|
5
5
|
|
|
6
6
|
//#region src/ui/time/time-element.d.ts
|
|
@@ -21,7 +21,7 @@ declare class TimeElement extends MediaElement {
|
|
|
21
21
|
};
|
|
22
22
|
type: TimeType;
|
|
23
23
|
negativeSign: string;
|
|
24
|
-
label: string | ((state: _videojs_core0.TimeState) => string);
|
|
24
|
+
label: string | ((state: _$_videojs_core0.TimeState) => string);
|
|
25
25
|
connectedCallback(): void;
|
|
26
26
|
protected willUpdate(changed: PropertyValues): void;
|
|
27
27
|
protected update(changed: PropertyValues): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"time-element.d.ts","names":[],"sources":["../../../../src/ui/time/time-element.ts"],"mappings":";;;;;;cAQa,WAAA,SAAoB,YAAA;EAAA;kBACf,OAAA;EAAA,OAEA,UAAA
|
|
1
|
+
{"version":3,"file":"time-element.d.ts","names":[],"sources":["../../../../src/ui/time/time-element.ts"],"mappings":";;;;;;cAQa,WAAA,SAAoB,YAAA;EAAA;kBACf,OAAA;EAAA,OAEA,UAAA;;MACN,IAAA,EAAI,iBAAA;IAAA;;MACI,IAAA,EAAI,iBAAA;MAAU,SAAA;IAAA;;MACrB,IAAA,EAAI,iBAAA;IAAA;EAAA;EAGf,IAAA,EAAM,QAAA;EACN,YAAA;EACA,KAAA,aAAK,KAAA,EAFS,gBAAA,CAET,SAAA;EAQI,iBAAA,CAAA;EAAA,UAeU,UAAA,CAAW,OAAA,EAAS,cAAA;EAAA,UAKpB,MAAA,CAAO,OAAA,EAAS,cAAA;AAAA"}
|
|
@@ -10,6 +10,10 @@ var TimeElement = class extends MediaElement {
|
|
|
10
10
|
this.type = TimeCore.defaultProps.type;
|
|
11
11
|
this.negativeSign = TimeCore.defaultProps.negativeSign;
|
|
12
12
|
this.label = TimeCore.defaultProps.label;
|
|
13
|
+
this.#core = new TimeCore();
|
|
14
|
+
this.#state = new PlayerController(this, playerContext, selectTime);
|
|
15
|
+
this.#signSpan = document.createElement("span");
|
|
16
|
+
this.#textNode = document.createTextNode("");
|
|
13
17
|
}
|
|
14
18
|
static {
|
|
15
19
|
this.tagName = "media-time";
|
|
@@ -24,10 +28,10 @@ var TimeElement = class extends MediaElement {
|
|
|
24
28
|
label: { type: String }
|
|
25
29
|
};
|
|
26
30
|
}
|
|
27
|
-
#core
|
|
28
|
-
#state
|
|
29
|
-
#signSpan
|
|
30
|
-
#textNode
|
|
31
|
+
#core;
|
|
32
|
+
#state;
|
|
33
|
+
#signSpan;
|
|
34
|
+
#textNode;
|
|
31
35
|
connectedCallback() {
|
|
32
36
|
super.connectedCallback();
|
|
33
37
|
if (!this.#signSpan.parentNode) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"time-element.js","names":["#core","#state","#signSpan","#textNode"],"sources":["../../../../src/ui/time/time-element.ts"],"sourcesContent":["import { TimeCore, TimeDataAttrs, type TimeType } from '@videojs/core';\nimport { applyElementProps, applyStateDataAttrs, logMissingFeature, selectTime } from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaElement } from '../media-element';\n\nexport class TimeElement extends MediaElement {\n static readonly tagName = 'media-time';\n\n static override properties = {\n type: { type: String },\n negativeSign: { type: String, attribute: 'negative-sign' },\n label: { type: String },\n } satisfies PropertyDeclarationMap<keyof TimeCore.Props>;\n\n type: TimeType = TimeCore.defaultProps.type;\n negativeSign = TimeCore.defaultProps.negativeSign;\n label = TimeCore.defaultProps.label;\n\n readonly #core = new TimeCore();\n readonly #state = new PlayerController(this, playerContext, selectTime);\n\n readonly #signSpan = document.createElement('span');\n readonly #textNode = document.createTextNode('');\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n if (!this.#signSpan.parentNode) {\n this.#signSpan.setAttribute('aria-hidden', 'true');\n this.#signSpan.hidden = true;\n this.appendChild(this.#signSpan);\n this.appendChild(this.#textNode);\n }\n\n if (__DEV__ && !this.#state.value) {\n logMissingFeature(this.localName, this.#state.displayName!);\n }\n }\n\n protected override willUpdate(changed: PropertyValues): void {\n super.willUpdate(changed);\n this.#core.setProps(this);\n }\n\n protected override update(changed: PropertyValues): void {\n super.update(changed);\n\n const media = this.#state.value;\n\n if (!media) return;\n\n this.#core.setMedia(media);\n const state = this.#core.getState();\n\n this.#signSpan.hidden = !state.negative;\n this.#signSpan.textContent = state.negative ? this.negativeSign : '';\n this.#textNode.textContent = state.text;\n\n applyElementProps(this, this.#core.getAttrs(state));\n applyStateDataAttrs(this, state, TimeDataAttrs);\n }\n}\n"],"mappings":";;;;;;AAQA,IAAa,cAAb,cAAiC,aAAa;;;cAS3B,SAAS,aAAa;sBACxB,SAAS,aAAa;eAC7B,SAAS,aAAa;;;
|
|
1
|
+
{"version":3,"file":"time-element.js","names":["#core","#state","#signSpan","#textNode"],"sources":["../../../../src/ui/time/time-element.ts"],"sourcesContent":["import { TimeCore, TimeDataAttrs, type TimeType } from '@videojs/core';\nimport { applyElementProps, applyStateDataAttrs, logMissingFeature, selectTime } from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaElement } from '../media-element';\n\nexport class TimeElement extends MediaElement {\n static readonly tagName = 'media-time';\n\n static override properties = {\n type: { type: String },\n negativeSign: { type: String, attribute: 'negative-sign' },\n label: { type: String },\n } satisfies PropertyDeclarationMap<keyof TimeCore.Props>;\n\n type: TimeType = TimeCore.defaultProps.type;\n negativeSign = TimeCore.defaultProps.negativeSign;\n label = TimeCore.defaultProps.label;\n\n readonly #core = new TimeCore();\n readonly #state = new PlayerController(this, playerContext, selectTime);\n\n readonly #signSpan = document.createElement('span');\n readonly #textNode = document.createTextNode('');\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n if (!this.#signSpan.parentNode) {\n this.#signSpan.setAttribute('aria-hidden', 'true');\n this.#signSpan.hidden = true;\n this.appendChild(this.#signSpan);\n this.appendChild(this.#textNode);\n }\n\n if (__DEV__ && !this.#state.value) {\n logMissingFeature(this.localName, this.#state.displayName!);\n }\n }\n\n protected override willUpdate(changed: PropertyValues): void {\n super.willUpdate(changed);\n this.#core.setProps(this);\n }\n\n protected override update(changed: PropertyValues): void {\n super.update(changed);\n\n const media = this.#state.value;\n\n if (!media) return;\n\n this.#core.setMedia(media);\n const state = this.#core.getState();\n\n this.#signSpan.hidden = !state.negative;\n this.#signSpan.textContent = state.negative ? this.negativeSign : '';\n this.#textNode.textContent = state.text;\n\n applyElementProps(this, this.#core.getAttrs(state));\n applyStateDataAttrs(this, state, TimeDataAttrs);\n }\n}\n"],"mappings":";;;;;;AAQA,IAAa,cAAb,cAAiC,aAAa;;;cAS3B,SAAS,aAAa;sBACxB,SAAS,aAAa;eAC7B,SAAS,aAAa;eAEb,IAAI,UAAU;gBACb,IAAI,iBAAiB,MAAM,eAAe,WAAW;mBAElD,SAAS,cAAc,OAAO;mBAC9B,SAAS,eAAe,GAAG;;;iBAhBtB;;;oBAEG;GAC3B,MAAM,EAAE,MAAM,QAAQ;GACtB,cAAc;IAAE,MAAM;IAAQ,WAAW;IAAiB;GAC1D,OAAO,EAAE,MAAM,QAAQ;GACxB;;CAMD;CACA;CAEA;CACA;CAEA,oBAAmC;AACjC,QAAM,mBAAmB;AAEzB,MAAI,CAAC,MAAA,SAAe,YAAY;AAC9B,SAAA,SAAe,aAAa,eAAe,OAAO;AAClD,SAAA,SAAe,SAAS;AACxB,QAAK,YAAY,MAAA,SAAe;AAChC,QAAK,YAAY,MAAA,SAAe;;AAGlC,MAAe,CAAC,MAAA,MAAY,MAC1B,mBAAkB,KAAK,WAAW,MAAA,MAAY,YAAa;;CAI/D,WAA8B,SAA+B;AAC3D,QAAM,WAAW,QAAQ;AACzB,QAAA,KAAW,SAAS,KAAK;;CAG3B,OAA0B,SAA+B;AACvD,QAAM,OAAO,QAAQ;EAErB,MAAM,QAAQ,MAAA,MAAY;AAE1B,MAAI,CAAC,MAAO;AAEZ,QAAA,KAAW,SAAS,MAAM;EAC1B,MAAM,QAAQ,MAAA,KAAW,UAAU;AAEnC,QAAA,SAAe,SAAS,CAAC,MAAM;AAC/B,QAAA,SAAe,cAAc,MAAM,WAAW,KAAK,eAAe;AAClE,QAAA,SAAe,cAAc,MAAM;AAEnC,oBAAkB,MAAM,MAAA,KAAW,SAAS,MAAM,CAAC;AACnD,sBAAoB,MAAM,OAAO,cAAc"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { MediaElement } from "../media-element.js";
|
|
2
2
|
import { PropertyValues } from "@videojs/element";
|
|
3
|
-
import * as _videojs_core0 from "@videojs/core";
|
|
3
|
+
import * as _$_videojs_core0 from "@videojs/core";
|
|
4
4
|
|
|
5
5
|
//#region src/ui/time-slider/time-slider-element.d.ts
|
|
6
6
|
declare class TimeSliderElement extends MediaElement {
|
|
@@ -32,7 +32,7 @@ declare class TimeSliderElement extends MediaElement {
|
|
|
32
32
|
attribute: string;
|
|
33
33
|
};
|
|
34
34
|
};
|
|
35
|
-
label: string | ((state: _videojs_core0.SliderState) => string);
|
|
35
|
+
label: string | ((state: _$_videojs_core0.SliderState) => string);
|
|
36
36
|
changeThrottle: number;
|
|
37
37
|
step: number;
|
|
38
38
|
largeStep: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"time-slider-element.d.ts","names":[],"sources":["../../../../src/ui/time-slider/time-slider-element.ts"],"mappings":";;;;;cAqBa,iBAAA,SAA0B,YAAA;EAAA;kBACrB,OAAA;EAAA,OAEA,UAAA
|
|
1
|
+
{"version":3,"file":"time-slider-element.d.ts","names":[],"sources":["../../../../src/ui/time-slider/time-slider-element.ts"],"mappings":";;;;;cAqBa,iBAAA,SAA0B,YAAA;EAAA;kBACrB,OAAA;EAAA,OAEA,UAAA;;MACL,IAAA,EAAI,iBAAA;IAAA;;MACK,IAAA,EAAI,iBAAA;MAAU,SAAA;IAAA;;MACxB,IAAA,EAAI,iBAAA;IAAA;;MACC,IAAA,EAAI,iBAAA;MAAU,SAAA;IAAA;;MACZ,IAAA,EAAI,iBAAA;IAAA;;MACP,IAAA,EAAI,kBAAA;IAAA;;MACE,IAAA,EAAI,iBAAA;MAAU,SAAA;IAAA;EAAA;EAGlC,KAAA,aAAK,KAAA,EAHmB,gBAAA,CAGnB,WAAA;EACL,cAAA;EACA,IAAA;EACA,SAAA;EACA,WAAA;EACA,QAAA;EACA,cAAA;EAUS,iBAAA,CAAA;EA4CA,oBAAA,CAAA;EAMA,eAAA,CAAA;EAAA,UAKU,UAAA,CAAW,QAAA,EAAU,cAAA;EAAA,UAKrB,MAAA,CAAO,QAAA,EAAU,cAAA;AAAA"}
|
|
@@ -18,6 +18,12 @@ var TimeSliderElement = class extends MediaElement {
|
|
|
18
18
|
this.orientation = TimeSliderCore.defaultProps.orientation;
|
|
19
19
|
this.disabled = TimeSliderCore.defaultProps.disabled;
|
|
20
20
|
this.thumbAlignment = TimeSliderCore.defaultProps.thumbAlignment;
|
|
21
|
+
this.#core = new TimeSliderCore();
|
|
22
|
+
this.#provider = new ContextProvider(this, { context: sliderContext });
|
|
23
|
+
this.#timeState = new PlayerController(this, playerContext, selectTime);
|
|
24
|
+
this.#bufferState = new PlayerController(this, playerContext, selectBuffer);
|
|
25
|
+
this.#slider = null;
|
|
26
|
+
this.#disconnect = null;
|
|
21
27
|
}
|
|
22
28
|
static {
|
|
23
29
|
this.tagName = "media-time-slider";
|
|
@@ -42,12 +48,12 @@ var TimeSliderElement = class extends MediaElement {
|
|
|
42
48
|
}
|
|
43
49
|
};
|
|
44
50
|
}
|
|
45
|
-
#core
|
|
46
|
-
#provider
|
|
47
|
-
#timeState
|
|
48
|
-
#bufferState
|
|
49
|
-
#slider
|
|
50
|
-
#disconnect
|
|
51
|
+
#core;
|
|
52
|
+
#provider;
|
|
53
|
+
#timeState;
|
|
54
|
+
#bufferState;
|
|
55
|
+
#slider;
|
|
56
|
+
#disconnect;
|
|
51
57
|
connectedCallback() {
|
|
52
58
|
super.connectedCallback();
|
|
53
59
|
if (this.destroyed) return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"time-slider-element.js","names":["#core","#provider","#timeState","#bufferState","#disconnect","#slider"],"sources":["../../../../src/ui/time-slider/time-slider-element.ts"],"sourcesContent":["import { TimeSliderCore, TimeSliderDataAttrs } from '@videojs/core';\nimport {\n applyElementProps,\n applyStateDataAttrs,\n createSlider,\n getTimeSliderCSSVars,\n logMissingFeature,\n type SliderApi,\n selectBuffer,\n selectTime,\n} from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport { ContextProvider } from '@videojs/element/context';\nimport { applyStyles, isRTL } from '@videojs/utils/dom';\nimport { formatTime } from '@videojs/utils/time';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaElement } from '../media-element';\nimport { sliderContext } from '../slider/context';\n\nexport class TimeSliderElement extends MediaElement {\n static readonly tagName = 'media-time-slider';\n\n static override properties = {\n label: { type: String },\n changeThrottle: { type: Number, attribute: 'change-throttle' },\n step: { type: Number },\n largeStep: { type: Number, attribute: 'large-step' },\n orientation: { type: String },\n disabled: { type: Boolean },\n thumbAlignment: { type: String, attribute: 'thumb-alignment' },\n } satisfies PropertyDeclarationMap<Exclude<keyof TimeSliderCore.Props, 'value' | 'min' | 'max'>>;\n\n label = TimeSliderCore.defaultProps.label;\n changeThrottle = TimeSliderCore.defaultProps.changeThrottle;\n step = TimeSliderCore.defaultProps.step;\n largeStep = TimeSliderCore.defaultProps.largeStep;\n orientation = TimeSliderCore.defaultProps.orientation;\n disabled = TimeSliderCore.defaultProps.disabled;\n thumbAlignment = TimeSliderCore.defaultProps.thumbAlignment;\n\n readonly #core = new TimeSliderCore();\n readonly #provider = new ContextProvider(this, { context: sliderContext });\n readonly #timeState = new PlayerController(this, playerContext, selectTime);\n readonly #bufferState = new PlayerController(this, playerContext, selectBuffer);\n\n #slider: SliderApi | null = null;\n #disconnect: AbortController | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n if (this.destroyed) return;\n\n this.#disconnect = new AbortController();\n const signal = this.#disconnect.signal;\n\n this.#slider = createSlider({\n getElement: () => this,\n getThumbElement: () => this.querySelector<HTMLElement>('media-slider-thumb'),\n getOrientation: () => this.orientation,\n isRTL: () => isRTL(this),\n isDisabled: () => this.disabled || !this.#timeState.value,\n getPercent: () => {\n const media = this.#timeState.value;\n if (!media) return 0;\n return this.#core.percentFromValue(media.currentTime);\n },\n getStepPercent: () => this.#core.getStepPercent(),\n getLargeStepPercent: () => this.#core.getLargeStepPercent(),\n onValueCommit: (percent) => {\n const media = this.#timeState.value;\n if (media) media.seek(this.#core.rawValueFromPercent(percent));\n },\n changeThrottle: this.changeThrottle,\n onDragStart: () => {\n this.dispatchEvent(new CustomEvent('drag-start', { bubbles: true }));\n },\n onDragEnd: () => {\n this.dispatchEvent(new CustomEvent('drag-end', { bubbles: true }));\n },\n adjustPercent: (raw, thumbSize, trackSize) => this.#core.adjustPercentForAlignment(raw, thumbSize, trackSize),\n onResize: () => this.requestUpdate(),\n });\n\n applyElementProps(this, this.#slider.rootProps, { signal });\n applyStyles(this, this.#slider.rootStyle);\n this.#slider.input.subscribe(() => this.requestUpdate(), { signal });\n\n if (__DEV__ && !this.#timeState.value) {\n logMissingFeature(this.localName, this.#timeState.displayName!);\n }\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.#disconnect?.abort();\n this.#disconnect = null;\n }\n\n override destroyCallback(): void {\n this.#slider?.destroy();\n super.destroyCallback();\n }\n\n protected override willUpdate(_changed: PropertyValues): void {\n super.willUpdate(_changed);\n this.#core.setProps(this);\n }\n\n protected override update(_changed: PropertyValues): void {\n super.update(_changed);\n if (!this.#slider) return;\n\n const time = this.#timeState.value;\n const buffer = this.#bufferState.value;\n if (!time) return;\n\n this.#core.setInput(this.#slider.input.current);\n const media = { ...time, ...(buffer ?? { buffered: [], seekable: [] }) };\n this.#core.setMedia(media);\n const state = this.#core.getState();\n\n const cssVars = getTimeSliderCSSVars(this.#slider.adjustForAlignment(state));\n\n applyStyles(this, cssVars);\n\n // Domain-specific data attributes on root (includes data-seeking).\n applyStateDataAttrs(this, state, TimeSliderDataAttrs);\n\n // Provide context to child elements with base slider data attrs.\n this.#provider.setValue({\n state,\n stateAttrMap: TimeSliderDataAttrs,\n pointerValue: this.#core.valueFromPercent(state.pointerPercent),\n thumbAttrs: this.#core.getAttrs(state),\n thumbProps: this.#slider.thumbProps,\n formatValue: (value) => formatTime(value, state.duration),\n });\n }\n}\n"],"mappings":";;;;;;;;;;AAqBA,IAAa,oBAAb,cAAuC,aAAa;;;eAa1C,eAAe,aAAa;wBACnB,eAAe,aAAa;cACtC,eAAe,aAAa;mBACvB,eAAe,aAAa;qBAC1B,eAAe,aAAa;kBAC/B,eAAe,aAAa;wBACtB,eAAe,aAAa;;;
|
|
1
|
+
{"version":3,"file":"time-slider-element.js","names":["#core","#provider","#timeState","#bufferState","#disconnect","#slider"],"sources":["../../../../src/ui/time-slider/time-slider-element.ts"],"sourcesContent":["import { TimeSliderCore, TimeSliderDataAttrs } from '@videojs/core';\nimport {\n applyElementProps,\n applyStateDataAttrs,\n createSlider,\n getTimeSliderCSSVars,\n logMissingFeature,\n type SliderApi,\n selectBuffer,\n selectTime,\n} from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport { ContextProvider } from '@videojs/element/context';\nimport { applyStyles, isRTL } from '@videojs/utils/dom';\nimport { formatTime } from '@videojs/utils/time';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaElement } from '../media-element';\nimport { sliderContext } from '../slider/context';\n\nexport class TimeSliderElement extends MediaElement {\n static readonly tagName = 'media-time-slider';\n\n static override properties = {\n label: { type: String },\n changeThrottle: { type: Number, attribute: 'change-throttle' },\n step: { type: Number },\n largeStep: { type: Number, attribute: 'large-step' },\n orientation: { type: String },\n disabled: { type: Boolean },\n thumbAlignment: { type: String, attribute: 'thumb-alignment' },\n } satisfies PropertyDeclarationMap<Exclude<keyof TimeSliderCore.Props, 'value' | 'min' | 'max'>>;\n\n label = TimeSliderCore.defaultProps.label;\n changeThrottle = TimeSliderCore.defaultProps.changeThrottle;\n step = TimeSliderCore.defaultProps.step;\n largeStep = TimeSliderCore.defaultProps.largeStep;\n orientation = TimeSliderCore.defaultProps.orientation;\n disabled = TimeSliderCore.defaultProps.disabled;\n thumbAlignment = TimeSliderCore.defaultProps.thumbAlignment;\n\n readonly #core = new TimeSliderCore();\n readonly #provider = new ContextProvider(this, { context: sliderContext });\n readonly #timeState = new PlayerController(this, playerContext, selectTime);\n readonly #bufferState = new PlayerController(this, playerContext, selectBuffer);\n\n #slider: SliderApi | null = null;\n #disconnect: AbortController | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n if (this.destroyed) return;\n\n this.#disconnect = new AbortController();\n const signal = this.#disconnect.signal;\n\n this.#slider = createSlider({\n getElement: () => this,\n getThumbElement: () => this.querySelector<HTMLElement>('media-slider-thumb'),\n getOrientation: () => this.orientation,\n isRTL: () => isRTL(this),\n isDisabled: () => this.disabled || !this.#timeState.value,\n getPercent: () => {\n const media = this.#timeState.value;\n if (!media) return 0;\n return this.#core.percentFromValue(media.currentTime);\n },\n getStepPercent: () => this.#core.getStepPercent(),\n getLargeStepPercent: () => this.#core.getLargeStepPercent(),\n onValueCommit: (percent) => {\n const media = this.#timeState.value;\n if (media) media.seek(this.#core.rawValueFromPercent(percent));\n },\n changeThrottle: this.changeThrottle,\n onDragStart: () => {\n this.dispatchEvent(new CustomEvent('drag-start', { bubbles: true }));\n },\n onDragEnd: () => {\n this.dispatchEvent(new CustomEvent('drag-end', { bubbles: true }));\n },\n adjustPercent: (raw, thumbSize, trackSize) => this.#core.adjustPercentForAlignment(raw, thumbSize, trackSize),\n onResize: () => this.requestUpdate(),\n });\n\n applyElementProps(this, this.#slider.rootProps, { signal });\n applyStyles(this, this.#slider.rootStyle);\n this.#slider.input.subscribe(() => this.requestUpdate(), { signal });\n\n if (__DEV__ && !this.#timeState.value) {\n logMissingFeature(this.localName, this.#timeState.displayName!);\n }\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.#disconnect?.abort();\n this.#disconnect = null;\n }\n\n override destroyCallback(): void {\n this.#slider?.destroy();\n super.destroyCallback();\n }\n\n protected override willUpdate(_changed: PropertyValues): void {\n super.willUpdate(_changed);\n this.#core.setProps(this);\n }\n\n protected override update(_changed: PropertyValues): void {\n super.update(_changed);\n if (!this.#slider) return;\n\n const time = this.#timeState.value;\n const buffer = this.#bufferState.value;\n if (!time) return;\n\n this.#core.setInput(this.#slider.input.current);\n const media = { ...time, ...(buffer ?? { buffered: [], seekable: [] }) };\n this.#core.setMedia(media);\n const state = this.#core.getState();\n\n const cssVars = getTimeSliderCSSVars(this.#slider.adjustForAlignment(state));\n\n applyStyles(this, cssVars);\n\n // Domain-specific data attributes on root (includes data-seeking).\n applyStateDataAttrs(this, state, TimeSliderDataAttrs);\n\n // Provide context to child elements with base slider data attrs.\n this.#provider.setValue({\n state,\n stateAttrMap: TimeSliderDataAttrs,\n pointerValue: this.#core.valueFromPercent(state.pointerPercent),\n thumbAttrs: this.#core.getAttrs(state),\n thumbProps: this.#slider.thumbProps,\n formatValue: (value) => formatTime(value, state.duration),\n });\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { MediaElement } from "../media-element.js";
|
|
2
2
|
import { PropertyValues } from "@videojs/element";
|
|
3
|
-
import * as _videojs_core0 from "@videojs/core";
|
|
3
|
+
import * as _$_videojs_core0 from "@videojs/core";
|
|
4
4
|
|
|
5
5
|
//#region src/ui/tooltip/tooltip-element.d.ts
|
|
6
6
|
declare class TooltipElement extends MediaElement {
|
|
@@ -37,8 +37,8 @@ declare class TooltipElement extends MediaElement {
|
|
|
37
37
|
};
|
|
38
38
|
open: boolean;
|
|
39
39
|
defaultOpen: boolean;
|
|
40
|
-
side: _videojs_core0.PopoverSide;
|
|
41
|
-
align: _videojs_core0.PopoverAlign;
|
|
40
|
+
side: _$_videojs_core0.PopoverSide;
|
|
41
|
+
align: _$_videojs_core0.PopoverAlign;
|
|
42
42
|
delay: number;
|
|
43
43
|
closeDelay: number;
|
|
44
44
|
disableHoverablePopup: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tooltip-element.d.ts","names":[],"sources":["../../../../src/ui/tooltip/tooltip-element.ts"],"mappings":";;;;;cAgCa,cAAA,SAAuB,YAAA;EAAA;kBAClB,OAAA;EAAA,OAEA,UAAA
|
|
1
|
+
{"version":3,"file":"tooltip-element.d.ts","names":[],"sources":["../../../../src/ui/tooltip/tooltip-element.ts"],"mappings":";;;;;cAgCa,cAAA,SAAuB,YAAA;EAAA;kBAClB,OAAA;EAAA,OAEA,UAAA;;MACN,IAAA,EAAI,kBAAA;IAAA;;MACG,IAAA,EAAI,kBAAA;MAAW,SAAA;IAAA;;MACtB,IAAA,EAAI,iBAAA;IAAA;;MACH,IAAA,EAAI,iBAAA;IAAA;;MACJ,IAAA,EAAI,iBAAA;IAAA;;MACC,IAAA,EAAI,iBAAA;MAAU,SAAA;IAAA;;MACH,IAAA,EAAI,kBAAA;MAAW,SAAA;IAAA;;MAC5B,IAAA,EAAI,kBAAA;IAAA;EAAA;EAGlB,IAAA;EACA,WAAA;EACA,IAAA,EALkB,gBAAA,CAKd,WAAA;EACJ,KAAA,EADI,gBAAA,CACC,YAAA;EACL,KAAA;EACA,UAAA;EACA,qBAAA;EACA,QAAA;EAaS,iBAAA,CAAA;EAAA,UAkCU,YAAA,CAAa,OAAA,EAAS,cAAA;EAUhC,oBAAA,CAAA;EAAA,UASU,UAAA,CAAW,OAAA,EAAS,cAAA;EAAA,UAiBpB,MAAA,CAAO,QAAA,EAAU,cAAA;AAAA"}
|
|
@@ -21,6 +21,14 @@ var TooltipElement = class extends MediaElement {
|
|
|
21
21
|
this.closeDelay = TooltipCore.defaultProps.closeDelay;
|
|
22
22
|
this.disableHoverablePopup = TooltipCore.defaultProps.disableHoverablePopup;
|
|
23
23
|
this.disabled = TooltipCore.defaultProps.disabled;
|
|
24
|
+
this.#core = new TooltipCore();
|
|
25
|
+
this.#groupConsumer = new ContextConsumer(this, { context: tooltipGroupContext });
|
|
26
|
+
this.#position = new PositionController(this);
|
|
27
|
+
this.#tooltip = null;
|
|
28
|
+
this.#snapshot = null;
|
|
29
|
+
this.#disconnect = null;
|
|
30
|
+
this.#triggerAbort = null;
|
|
31
|
+
this.#currentTrigger = null;
|
|
24
32
|
}
|
|
25
33
|
static {
|
|
26
34
|
this.tagName = "media-tooltip";
|
|
@@ -46,14 +54,14 @@ var TooltipElement = class extends MediaElement {
|
|
|
46
54
|
disabled: { type: Boolean }
|
|
47
55
|
};
|
|
48
56
|
}
|
|
49
|
-
#core
|
|
50
|
-
#groupConsumer
|
|
51
|
-
#position
|
|
52
|
-
#tooltip
|
|
53
|
-
#snapshot
|
|
54
|
-
#disconnect
|
|
55
|
-
#triggerAbort
|
|
56
|
-
#currentTrigger
|
|
57
|
+
#core;
|
|
58
|
+
#groupConsumer;
|
|
59
|
+
#position;
|
|
60
|
+
#tooltip;
|
|
61
|
+
#snapshot;
|
|
62
|
+
#disconnect;
|
|
63
|
+
#triggerAbort;
|
|
64
|
+
#currentTrigger;
|
|
57
65
|
connectedCallback() {
|
|
58
66
|
super.connectedCallback();
|
|
59
67
|
if (this.destroyed) return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tooltip-element.js","names":["#core","#groupConsumer","#position","#disconnect","#tooltip","#snapshot","#cleanupTrigger","#syncTrigger","#currentTrigger","#triggerAbort","#syncContent"],"sources":["../../../../src/ui/tooltip/tooltip-element.ts"],"sourcesContent":["import { type ButtonState, TooltipCore, TooltipCSSVars, TooltipDataAttrs, type TooltipInput } from '@videojs/core';\nimport {\n applyElementProps,\n applyStateDataAttrs,\n createTooltip,\n createTransition,\n getAnchorNameStyle,\n getAnchorPositionStyle,\n getPopupPositionRect,\n resolveOffsets,\n type TooltipApi,\n type TooltipChangeDetails,\n} from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport { ContextConsumer } from '@videojs/element/context';\nimport type { State } from '@videojs/store';\nimport { SnapshotController } from '@videojs/store/html';\nimport { applyStyles, supportsAnchorPositioning, tryHidePopover, tryShowPopover } from '@videojs/utils/dom';\n\nimport { MediaElement } from '../media-element';\nimport { PositionController } from '../position-controller';\nimport { tooltipGroupContext } from './context';\n\ntype TriggerElement = HTMLElement & {\n getLabel(): string | undefined;\n $state: State<ButtonState>;\n};\n\nfunction isLabelTrigger(el: HTMLElement): el is TriggerElement {\n return '$state' in el;\n}\n\nexport class TooltipElement extends MediaElement {\n static readonly tagName = 'media-tooltip';\n\n static override properties = {\n open: { type: Boolean },\n defaultOpen: { type: Boolean, attribute: 'default-open' },\n side: { type: String },\n align: { type: String },\n delay: { type: Number },\n closeDelay: { type: Number, attribute: 'close-delay' },\n disableHoverablePopup: { type: Boolean, attribute: 'disable-hoverable-popup' },\n disabled: { type: Boolean },\n } satisfies PropertyDeclarationMap<keyof TooltipCore.Props>;\n\n open = TooltipCore.defaultProps.open;\n defaultOpen = TooltipCore.defaultProps.defaultOpen;\n side = TooltipCore.defaultProps.side;\n align = TooltipCore.defaultProps.align;\n delay = TooltipCore.defaultProps.delay;\n closeDelay = TooltipCore.defaultProps.closeDelay;\n disableHoverablePopup = TooltipCore.defaultProps.disableHoverablePopup;\n disabled = TooltipCore.defaultProps.disabled;\n\n readonly #core = new TooltipCore();\n readonly #groupConsumer = new ContextConsumer(this, { context: tooltipGroupContext });\n readonly #position = new PositionController(this);\n #tooltip: TooltipApi | null = null;\n #snapshot: SnapshotController<TooltipInput> | null = null;\n\n // Cleanup controllers\n #disconnect: AbortController | null = null;\n #triggerAbort: AbortController | null = null;\n #currentTrigger: HTMLElement | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n if (this.destroyed) return;\n\n this.#disconnect = new AbortController();\n\n this.#tooltip = createTooltip({\n transition: createTransition(),\n onOpenChange: (nextOpen: boolean, details: TooltipChangeDetails) => {\n this.open = nextOpen;\n this.dispatchEvent(new CustomEvent('open-change', { detail: { open: nextOpen, ...details } }));\n },\n delay: () => this.delay,\n closeDelay: () => this.closeDelay,\n disableHoverablePopup: () => this.disableHoverablePopup,\n disabled: () => this.disabled,\n // Lazy getter — group may arrive after connect via context.\n group: () => this.#groupConsumer.value,\n });\n\n // Register self as the popup element — the element IS the popup.\n this.#tooltip.setPopupElement(this);\n\n // Apply popup event handlers (pointerenter/leave, focusout) to self.\n applyElementProps(this, this.#tooltip.popupProps, { signal: this.#disconnect.signal });\n\n // Subscribe to interaction state for reactive updates.\n if (this.#snapshot) {\n this.#snapshot.track(this.#tooltip.input);\n } else {\n this.#snapshot = new SnapshotController(this, this.#tooltip.input);\n }\n }\n\n protected override firstUpdated(changed: PropertyValues): void {\n super.firstUpdated(changed);\n\n // Uncontrolled mode: open if `defaultOpen` is set. Controlled `open`\n // is already synced by `willUpdate` on the first render cycle.\n if (this.defaultOpen && !this.open) {\n this.#tooltip?.open();\n }\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.#cleanupTrigger();\n this.#tooltip?.destroy();\n this.#tooltip = null;\n this.#disconnect?.abort();\n this.#disconnect = null;\n }\n\n protected override willUpdate(changed: PropertyValues): void {\n super.willUpdate(changed);\n this.#core.setProps(this);\n\n // Sync controlled open state\n if (this.#tooltip && changed.has('open')) {\n const { active: interactionOpen } = this.#tooltip.input.current;\n if (this.open !== interactionOpen) {\n if (this.open) {\n this.#tooltip.open();\n } else {\n this.#tooltip.close();\n }\n }\n }\n }\n\n protected override update(_changed: PropertyValues): void {\n super.update(_changed);\n if (!this.#tooltip) return;\n\n // Discover trigger via commandfor linkage.\n const triggerEl = this.#position.findTrigger();\n this.#syncTrigger(triggerEl);\n\n // Derive state from core + input.\n const input = this.#tooltip.input.current;\n this.#core.setInput(input);\n const state = this.#core.getState();\n\n // Apply popup ARIA and data attributes to self.\n applyElementProps(this, this.#core.getPopupAttrs(state));\n applyStateDataAttrs(this, state, TooltipDataAttrs);\n\n // Show/hide via Popover API AFTER data attributes are applied so\n // `data-starting-style` is present before the first visible frame.\n if (state.open) {\n tryShowPopover(this);\n } else {\n tryHidePopover(this);\n }\n\n // Apply anchor-name to the discovered trigger for CSS positioning.\n if (this.#currentTrigger) {\n applyStyles(this.#currentTrigger, getAnchorNameStyle(this.id));\n }\n\n // Skip positioning when closed — no rects to measure.\n if (!state.open) {\n this.#position.cleanup();\n return;\n }\n\n // Apply positioning styles to self.\n const posOpts = { side: state.side, align: state.align };\n\n if (supportsAnchorPositioning()) {\n // Native CSS Anchor Positioning — no JS rect measurements needed.\n applyStyles(\n this,\n getAnchorPositionStyle(this.id, posOpts, undefined, undefined, undefined, undefined, TooltipCSSVars)\n );\n } else {\n // JS fallback: measure rects and resolve CSS var offsets.\n const triggerRect = this.#currentTrigger?.getBoundingClientRect();\n const selfRect = getPopupPositionRect(this);\n const boundaryRect = document.documentElement.getBoundingClientRect();\n const offsets = resolveOffsets(this, TooltipCSSVars);\n applyStyles(\n this,\n getAnchorPositionStyle(this.id, posOpts, triggerRect, selfRect, boundaryRect, offsets, TooltipCSSVars)\n );\n }\n\n this.#position.sync(this.#currentTrigger);\n }\n\n // --- Trigger management ---\n\n #syncTrigger(triggerEl: HTMLElement | null): void {\n if (triggerEl === this.#currentTrigger) return;\n\n this.#position.cleanup();\n this.#cleanupTrigger();\n this.#currentTrigger = triggerEl;\n this.#tooltip?.setTriggerElement(triggerEl);\n\n if (triggerEl && this.#tooltip) {\n this.#triggerAbort = new AbortController();\n applyElementProps(triggerEl, this.#tooltip.triggerProps, { signal: this.#triggerAbort.signal });\n\n if (isLabelTrigger(triggerEl)) {\n this.#syncContent(triggerEl);\n triggerEl.$state.subscribe(() => this.#syncContent(triggerEl), {\n signal: this.#triggerAbort.signal,\n });\n }\n }\n }\n\n #syncContent(triggerEl: TriggerElement): void {\n this.textContent = triggerEl.getLabel() ?? '';\n }\n\n #cleanupTrigger(): void {\n if (this.#currentTrigger) {\n this.#currentTrigger.style.removeProperty('anchor-name');\n }\n\n this.#triggerAbort?.abort();\n this.#triggerAbort = null;\n this.#currentTrigger = null;\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tooltip-element.js","names":["#core","#groupConsumer","#position","#disconnect","#tooltip","#snapshot","#cleanupTrigger","#syncTrigger","#currentTrigger","#triggerAbort","#syncContent"],"sources":["../../../../src/ui/tooltip/tooltip-element.ts"],"sourcesContent":["import { type ButtonState, TooltipCore, TooltipCSSVars, TooltipDataAttrs, type TooltipInput } from '@videojs/core';\nimport {\n applyElementProps,\n applyStateDataAttrs,\n createTooltip,\n createTransition,\n getAnchorNameStyle,\n getAnchorPositionStyle,\n getPopupPositionRect,\n resolveOffsets,\n type TooltipApi,\n type TooltipChangeDetails,\n} from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport { ContextConsumer } from '@videojs/element/context';\nimport type { State } from '@videojs/store';\nimport { SnapshotController } from '@videojs/store/html';\nimport { applyStyles, supportsAnchorPositioning, tryHidePopover, tryShowPopover } from '@videojs/utils/dom';\n\nimport { MediaElement } from '../media-element';\nimport { PositionController } from '../position-controller';\nimport { tooltipGroupContext } from './context';\n\ntype TriggerElement = HTMLElement & {\n getLabel(): string | undefined;\n $state: State<ButtonState>;\n};\n\nfunction isLabelTrigger(el: HTMLElement): el is TriggerElement {\n return '$state' in el;\n}\n\nexport class TooltipElement extends MediaElement {\n static readonly tagName = 'media-tooltip';\n\n static override properties = {\n open: { type: Boolean },\n defaultOpen: { type: Boolean, attribute: 'default-open' },\n side: { type: String },\n align: { type: String },\n delay: { type: Number },\n closeDelay: { type: Number, attribute: 'close-delay' },\n disableHoverablePopup: { type: Boolean, attribute: 'disable-hoverable-popup' },\n disabled: { type: Boolean },\n } satisfies PropertyDeclarationMap<keyof TooltipCore.Props>;\n\n open = TooltipCore.defaultProps.open;\n defaultOpen = TooltipCore.defaultProps.defaultOpen;\n side = TooltipCore.defaultProps.side;\n align = TooltipCore.defaultProps.align;\n delay = TooltipCore.defaultProps.delay;\n closeDelay = TooltipCore.defaultProps.closeDelay;\n disableHoverablePopup = TooltipCore.defaultProps.disableHoverablePopup;\n disabled = TooltipCore.defaultProps.disabled;\n\n readonly #core = new TooltipCore();\n readonly #groupConsumer = new ContextConsumer(this, { context: tooltipGroupContext });\n readonly #position = new PositionController(this);\n #tooltip: TooltipApi | null = null;\n #snapshot: SnapshotController<TooltipInput> | null = null;\n\n // Cleanup controllers\n #disconnect: AbortController | null = null;\n #triggerAbort: AbortController | null = null;\n #currentTrigger: HTMLElement | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n if (this.destroyed) return;\n\n this.#disconnect = new AbortController();\n\n this.#tooltip = createTooltip({\n transition: createTransition(),\n onOpenChange: (nextOpen: boolean, details: TooltipChangeDetails) => {\n this.open = nextOpen;\n this.dispatchEvent(new CustomEvent('open-change', { detail: { open: nextOpen, ...details } }));\n },\n delay: () => this.delay,\n closeDelay: () => this.closeDelay,\n disableHoverablePopup: () => this.disableHoverablePopup,\n disabled: () => this.disabled,\n // Lazy getter — group may arrive after connect via context.\n group: () => this.#groupConsumer.value,\n });\n\n // Register self as the popup element — the element IS the popup.\n this.#tooltip.setPopupElement(this);\n\n // Apply popup event handlers (pointerenter/leave, focusout) to self.\n applyElementProps(this, this.#tooltip.popupProps, { signal: this.#disconnect.signal });\n\n // Subscribe to interaction state for reactive updates.\n if (this.#snapshot) {\n this.#snapshot.track(this.#tooltip.input);\n } else {\n this.#snapshot = new SnapshotController(this, this.#tooltip.input);\n }\n }\n\n protected override firstUpdated(changed: PropertyValues): void {\n super.firstUpdated(changed);\n\n // Uncontrolled mode: open if `defaultOpen` is set. Controlled `open`\n // is already synced by `willUpdate` on the first render cycle.\n if (this.defaultOpen && !this.open) {\n this.#tooltip?.open();\n }\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.#cleanupTrigger();\n this.#tooltip?.destroy();\n this.#tooltip = null;\n this.#disconnect?.abort();\n this.#disconnect = null;\n }\n\n protected override willUpdate(changed: PropertyValues): void {\n super.willUpdate(changed);\n this.#core.setProps(this);\n\n // Sync controlled open state\n if (this.#tooltip && changed.has('open')) {\n const { active: interactionOpen } = this.#tooltip.input.current;\n if (this.open !== interactionOpen) {\n if (this.open) {\n this.#tooltip.open();\n } else {\n this.#tooltip.close();\n }\n }\n }\n }\n\n protected override update(_changed: PropertyValues): void {\n super.update(_changed);\n if (!this.#tooltip) return;\n\n // Discover trigger via commandfor linkage.\n const triggerEl = this.#position.findTrigger();\n this.#syncTrigger(triggerEl);\n\n // Derive state from core + input.\n const input = this.#tooltip.input.current;\n this.#core.setInput(input);\n const state = this.#core.getState();\n\n // Apply popup ARIA and data attributes to self.\n applyElementProps(this, this.#core.getPopupAttrs(state));\n applyStateDataAttrs(this, state, TooltipDataAttrs);\n\n // Show/hide via Popover API AFTER data attributes are applied so\n // `data-starting-style` is present before the first visible frame.\n if (state.open) {\n tryShowPopover(this);\n } else {\n tryHidePopover(this);\n }\n\n // Apply anchor-name to the discovered trigger for CSS positioning.\n if (this.#currentTrigger) {\n applyStyles(this.#currentTrigger, getAnchorNameStyle(this.id));\n }\n\n // Skip positioning when closed — no rects to measure.\n if (!state.open) {\n this.#position.cleanup();\n return;\n }\n\n // Apply positioning styles to self.\n const posOpts = { side: state.side, align: state.align };\n\n if (supportsAnchorPositioning()) {\n // Native CSS Anchor Positioning — no JS rect measurements needed.\n applyStyles(\n this,\n getAnchorPositionStyle(this.id, posOpts, undefined, undefined, undefined, undefined, TooltipCSSVars)\n );\n } else {\n // JS fallback: measure rects and resolve CSS var offsets.\n const triggerRect = this.#currentTrigger?.getBoundingClientRect();\n const selfRect = getPopupPositionRect(this);\n const boundaryRect = document.documentElement.getBoundingClientRect();\n const offsets = resolveOffsets(this, TooltipCSSVars);\n applyStyles(\n this,\n getAnchorPositionStyle(this.id, posOpts, triggerRect, selfRect, boundaryRect, offsets, TooltipCSSVars)\n );\n }\n\n this.#position.sync(this.#currentTrigger);\n }\n\n // --- Trigger management ---\n\n #syncTrigger(triggerEl: HTMLElement | null): void {\n if (triggerEl === this.#currentTrigger) return;\n\n this.#position.cleanup();\n this.#cleanupTrigger();\n this.#currentTrigger = triggerEl;\n this.#tooltip?.setTriggerElement(triggerEl);\n\n if (triggerEl && this.#tooltip) {\n this.#triggerAbort = new AbortController();\n applyElementProps(triggerEl, this.#tooltip.triggerProps, { signal: this.#triggerAbort.signal });\n\n if (isLabelTrigger(triggerEl)) {\n this.#syncContent(triggerEl);\n triggerEl.$state.subscribe(() => this.#syncContent(triggerEl), {\n signal: this.#triggerAbort.signal,\n });\n }\n }\n }\n\n #syncContent(triggerEl: TriggerElement): void {\n this.textContent = triggerEl.getLabel() ?? '';\n }\n\n #cleanupTrigger(): void {\n if (this.#currentTrigger) {\n this.#currentTrigger.style.removeProperty('anchor-name');\n }\n\n this.#triggerAbort?.abort();\n this.#triggerAbort = null;\n this.#currentTrigger = null;\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tooltip-group-element.d.ts","names":[],"sources":["../../../../src/ui/tooltip/tooltip-group-element.ts"],"mappings":";;;;cAOa,mBAAA,SAA4B,YAAA;EAAA;kBACvB,OAAA;EAAA,OAEA,UAAA
|
|
1
|
+
{"version":3,"file":"tooltip-group-element.d.ts","names":[],"sources":["../../../../src/ui/tooltip/tooltip-group-element.ts"],"mappings":";;;;cAOa,mBAAA,SAA4B,YAAA;EAAA;kBACvB,OAAA;EAAA,OAEA,UAAA;;MACL,IAAA,EAAI,iBAAA;IAAA;;MACC,IAAA,EAAI,iBAAA;MAAU,SAAA;IAAA;;MACjB,IAAA,EAAI,iBAAA;IAAA;EAAA;EAGjB,KAAA;EACA,UAAA;EACA,OAAA;EAAA,UAKmB,MAAA,CAAO,QAAA,EAAU,cAAA;AAAA"}
|
|
@@ -9,6 +9,11 @@ var TooltipGroupElement = class extends MediaElement {
|
|
|
9
9
|
this.delay = TooltipGroupCore.defaultProps.delay;
|
|
10
10
|
this.closeDelay = TooltipGroupCore.defaultProps.closeDelay;
|
|
11
11
|
this.timeout = TooltipGroupCore.defaultProps.timeout;
|
|
12
|
+
this.#core = new TooltipGroupCore();
|
|
13
|
+
this.#provider = new ContextProvider(this, {
|
|
14
|
+
context: tooltipGroupContext,
|
|
15
|
+
initialValue: this.#core
|
|
16
|
+
});
|
|
12
17
|
}
|
|
13
18
|
static {
|
|
14
19
|
this.tagName = "media-tooltip-group";
|
|
@@ -23,11 +28,8 @@ var TooltipGroupElement = class extends MediaElement {
|
|
|
23
28
|
timeout: { type: Number }
|
|
24
29
|
};
|
|
25
30
|
}
|
|
26
|
-
#core
|
|
27
|
-
#provider
|
|
28
|
-
context: tooltipGroupContext,
|
|
29
|
-
initialValue: this.#core
|
|
30
|
-
});
|
|
31
|
+
#core;
|
|
32
|
+
#provider;
|
|
31
33
|
update(_changed) {
|
|
32
34
|
super.update(_changed);
|
|
33
35
|
this.#core.setProps(this);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tooltip-group-element.js","names":["#core","#provider"],"sources":["../../../../src/ui/tooltip/tooltip-group-element.ts"],"sourcesContent":["import { TooltipGroupCore } from '@videojs/core';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport { ContextProvider } from '@videojs/element/context';\n\nimport { MediaElement } from '../media-element';\nimport { tooltipGroupContext } from './context';\n\nexport class TooltipGroupElement extends MediaElement {\n static readonly tagName = 'media-tooltip-group';\n\n static override properties = {\n delay: { type: Number },\n closeDelay: { type: Number, attribute: 'close-delay' },\n timeout: { type: Number },\n } satisfies PropertyDeclarationMap<keyof TooltipGroupCore.Props>;\n\n delay = TooltipGroupCore.defaultProps.delay;\n closeDelay = TooltipGroupCore.defaultProps.closeDelay;\n timeout = TooltipGroupCore.defaultProps.timeout;\n\n readonly #core = new TooltipGroupCore();\n readonly #provider = new ContextProvider(this, { context: tooltipGroupContext, initialValue: this.#core });\n\n protected override update(_changed: PropertyValues): void {\n super.update(_changed);\n this.#core.setProps(this);\n this.#provider.setValue(this.#core);\n }\n}\n"],"mappings":";;;;;AAOA,IAAa,sBAAb,cAAyC,aAAa;;;eAS5C,iBAAiB,aAAa;oBACzB,iBAAiB,aAAa;iBACjC,iBAAiB,aAAa;;;
|
|
1
|
+
{"version":3,"file":"tooltip-group-element.js","names":["#core","#provider"],"sources":["../../../../src/ui/tooltip/tooltip-group-element.ts"],"sourcesContent":["import { TooltipGroupCore } from '@videojs/core';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport { ContextProvider } from '@videojs/element/context';\n\nimport { MediaElement } from '../media-element';\nimport { tooltipGroupContext } from './context';\n\nexport class TooltipGroupElement extends MediaElement {\n static readonly tagName = 'media-tooltip-group';\n\n static override properties = {\n delay: { type: Number },\n closeDelay: { type: Number, attribute: 'close-delay' },\n timeout: { type: Number },\n } satisfies PropertyDeclarationMap<keyof TooltipGroupCore.Props>;\n\n delay = TooltipGroupCore.defaultProps.delay;\n closeDelay = TooltipGroupCore.defaultProps.closeDelay;\n timeout = TooltipGroupCore.defaultProps.timeout;\n\n readonly #core = new TooltipGroupCore();\n readonly #provider = new ContextProvider(this, { context: tooltipGroupContext, initialValue: this.#core });\n\n protected override update(_changed: PropertyValues): void {\n super.update(_changed);\n this.#core.setProps(this);\n this.#provider.setValue(this.#core);\n }\n}\n"],"mappings":";;;;;AAOA,IAAa,sBAAb,cAAyC,aAAa;;;eAS5C,iBAAiB,aAAa;oBACzB,iBAAiB,aAAa;iBACjC,iBAAiB,aAAa;eAEvB,IAAI,kBAAkB;mBAClB,IAAI,gBAAgB,MAAM;GAAE,SAAS;GAAqB,cAAc,MAAA;GAAY,CAAC;;;iBAbhF;;;oBAEG;GAC3B,OAAO,EAAE,MAAM,QAAQ;GACvB,YAAY;IAAE,MAAM;IAAQ,WAAW;IAAe;GACtD,SAAS,EAAE,MAAM,QAAQ;GAC1B;;CAMD;CACA;CAEA,OAA0B,UAAgC;AACxD,QAAM,OAAO,SAAS;AACtB,QAAA,KAAW,SAAS,KAAK;AACzB,QAAA,SAAe,SAAS,MAAA,KAAW"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { MediaElement } from "../media-element.js";
|
|
2
2
|
import { PropertyValues } from "@videojs/element";
|
|
3
|
-
import * as _videojs_core0 from "@videojs/core";
|
|
3
|
+
import * as _$_videojs_core0 from "@videojs/core";
|
|
4
4
|
|
|
5
5
|
//#region src/ui/volume-slider/volume-slider-element.d.ts
|
|
6
6
|
declare class VolumeSliderElement extends MediaElement {
|
|
@@ -32,7 +32,7 @@ declare class VolumeSliderElement extends MediaElement {
|
|
|
32
32
|
attribute: string;
|
|
33
33
|
};
|
|
34
34
|
};
|
|
35
|
-
label: string | ((state: _videojs_core0.SliderState) => string);
|
|
35
|
+
label: string | ((state: _$_videojs_core0.SliderState) => string);
|
|
36
36
|
step: number;
|
|
37
37
|
largeStep: number;
|
|
38
38
|
wheelStep: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"volume-slider-element.d.ts","names":[],"sources":["../../../../src/ui/volume-slider/volume-slider-element.ts"],"mappings":";;;;;cAoBa,mBAAA,SAA4B,YAAA;EAAA;kBACvB,OAAA;EAAA,OAEA,UAAA
|
|
1
|
+
{"version":3,"file":"volume-slider-element.d.ts","names":[],"sources":["../../../../src/ui/volume-slider/volume-slider-element.ts"],"mappings":";;;;;cAoBa,mBAAA,SAA4B,YAAA;EAAA;kBACvB,OAAA;EAAA,OAEA,UAAA;;MACL,IAAA,EAAI,iBAAA;IAAA;;MACL,IAAA,EAAI,iBAAA;IAAA;;MACC,IAAA,EAAI,iBAAA;MAAU,SAAA;IAAA;;MACd,IAAA,EAAI,iBAAA;MAAU,SAAA;IAAA;;MACZ,IAAA,EAAI,iBAAA;IAAA;;MACP,IAAA,EAAI,kBAAA;IAAA;;MACE,IAAA,EAAI,iBAAA;MAAU,SAAA;IAAA;EAAA;EAGlC,KAAA,aAAK,KAAA,EAHmB,gBAAA,CAGnB,WAAA;EACL,IAAA;EACA,SAAA;EACA,SAAA;EACA,WAAA;EACA,QAAA;EACA,cAAA;EASS,iBAAA,CAAA;EAkDA,oBAAA,CAAA;EAMA,eAAA,CAAA;EAAA,UAKU,UAAA,CAAW,QAAA,EAAU,cAAA;EAAA,UAKrB,MAAA,CAAO,QAAA,EAAU,cAAA;AAAA"}
|
|
@@ -17,6 +17,11 @@ var VolumeSliderElement = class extends MediaElement {
|
|
|
17
17
|
this.orientation = VolumeSliderCore.defaultProps.orientation;
|
|
18
18
|
this.disabled = VolumeSliderCore.defaultProps.disabled;
|
|
19
19
|
this.thumbAlignment = VolumeSliderCore.defaultProps.thumbAlignment;
|
|
20
|
+
this.#core = new VolumeSliderCore();
|
|
21
|
+
this.#provider = new ContextProvider(this, { context: sliderContext });
|
|
22
|
+
this.#volumeState = new PlayerController(this, playerContext, selectVolume);
|
|
23
|
+
this.#slider = null;
|
|
24
|
+
this.#disconnect = null;
|
|
20
25
|
}
|
|
21
26
|
static {
|
|
22
27
|
this.tagName = "media-volume-slider";
|
|
@@ -41,11 +46,11 @@ var VolumeSliderElement = class extends MediaElement {
|
|
|
41
46
|
}
|
|
42
47
|
};
|
|
43
48
|
}
|
|
44
|
-
#core
|
|
45
|
-
#provider
|
|
46
|
-
#volumeState
|
|
47
|
-
#slider
|
|
48
|
-
#disconnect
|
|
49
|
+
#core;
|
|
50
|
+
#provider;
|
|
51
|
+
#volumeState;
|
|
52
|
+
#slider;
|
|
53
|
+
#disconnect;
|
|
49
54
|
connectedCallback() {
|
|
50
55
|
super.connectedCallback();
|
|
51
56
|
if (this.destroyed) return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"volume-slider-element.js","names":["#core","#provider","#volumeState","#disconnect","#setVolume","#slider"],"sources":["../../../../src/ui/volume-slider/volume-slider-element.ts"],"sourcesContent":["import { VolumeSliderCore, VolumeSliderDataAttrs } from '@videojs/core';\nimport {\n applyElementProps,\n applyStateDataAttrs,\n createSlider,\n createWheelStep,\n getSliderCSSVars,\n logMissingFeature,\n type SliderApi,\n selectVolume,\n} from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport { ContextProvider } from '@videojs/element/context';\nimport { applyStyles, isRTL } from '@videojs/utils/dom';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaElement } from '../media-element';\nimport { sliderContext } from '../slider/context';\n\nexport class VolumeSliderElement extends MediaElement {\n static readonly tagName = 'media-volume-slider';\n\n static override properties = {\n label: { type: String },\n step: { type: Number },\n largeStep: { type: Number, attribute: 'large-step' },\n wheelStep: { type: Number, attribute: 'wheel-step' },\n orientation: { type: String },\n disabled: { type: Boolean },\n thumbAlignment: { type: String, attribute: 'thumb-alignment' },\n } satisfies PropertyDeclarationMap<Exclude<keyof VolumeSliderCore.Props, 'value' | 'min' | 'max'>>;\n\n label = VolumeSliderCore.defaultProps.label;\n step = VolumeSliderCore.defaultProps.step;\n largeStep = VolumeSliderCore.defaultProps.largeStep;\n wheelStep = VolumeSliderCore.defaultProps.wheelStep;\n orientation = VolumeSliderCore.defaultProps.orientation;\n disabled = VolumeSliderCore.defaultProps.disabled;\n thumbAlignment = VolumeSliderCore.defaultProps.thumbAlignment;\n\n readonly #core = new VolumeSliderCore();\n readonly #provider = new ContextProvider(this, { context: sliderContext });\n readonly #volumeState = new PlayerController(this, playerContext, selectVolume);\n\n #slider: SliderApi | null = null;\n #disconnect: AbortController | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n if (this.destroyed) return;\n\n this.#disconnect = new AbortController();\n const signal = this.#disconnect.signal;\n\n const isDisabled = () => this.disabled || !this.#volumeState.value;\n const getPercent = () => (this.#volumeState.value?.volume ?? 0) * 100;\n const getStepPercent = () => this.#core.getStepPercent();\n const setVolume = (percent: number) => this.#setVolume(percent);\n\n this.#slider = createSlider({\n getElement: () => this,\n getThumbElement: () => this.querySelector<HTMLElement>('media-slider-thumb'),\n getOrientation: () => this.orientation,\n isRTL: () => isRTL(this),\n isDisabled,\n getPercent,\n getStepPercent,\n getLargeStepPercent: () => this.#core.getLargeStepPercent(),\n onValueChange: setVolume,\n onValueCommit: setVolume,\n onDragStart: () => {\n this.dispatchEvent(new CustomEvent('drag-start', { bubbles: true }));\n },\n onDragEnd: () => {\n this.dispatchEvent(new CustomEvent('drag-end', { bubbles: true }));\n },\n adjustPercent: (raw, thumbSize, trackSize) => this.#core.adjustPercentForAlignment(raw, thumbSize, trackSize),\n onResize: () => this.requestUpdate(),\n });\n\n const wheelProps = createWheelStep({\n isDisabled,\n getPercent,\n getStepPercent: () => this.#core.getWheelStepPercent(),\n onValueChange: setVolume,\n });\n\n applyElementProps(this, this.#slider.rootProps, { signal });\n applyElementProps(this, wheelProps, { signal });\n applyStyles(this, this.#slider.rootStyle);\n this.#slider.input.subscribe(() => this.requestUpdate(), { signal });\n\n if (__DEV__ && !this.#volumeState.value) {\n logMissingFeature(this.localName, this.#volumeState.displayName!);\n }\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.#disconnect?.abort();\n this.#disconnect = null;\n }\n\n override destroyCallback(): void {\n this.#slider?.destroy();\n super.destroyCallback();\n }\n\n protected override willUpdate(_changed: PropertyValues): void {\n super.willUpdate(_changed);\n this.#core.setProps(this);\n }\n\n protected override update(_changed: PropertyValues): void {\n super.update(_changed);\n if (!this.#slider) return;\n\n const media = this.#volumeState.value;\n if (!media) return;\n\n this.#core.setInput(this.#slider.input.current);\n this.#core.setMedia(media);\n const state = this.#core.getState();\n\n const cssVars = getSliderCSSVars(this.#slider.adjustForAlignment(state));\n\n applyStyles(this, cssVars);\n\n // Apply data attributes to root.\n applyStateDataAttrs(this, state, VolumeSliderDataAttrs);\n\n // Provide context to child elements.\n this.#provider.setValue({\n state,\n stateAttrMap: VolumeSliderDataAttrs,\n pointerValue: this.#core.valueFromPercent(state.pointerPercent),\n thumbAttrs: this.#core.getAttrs(state),\n thumbProps: this.#slider.thumbProps,\n formatValue: (value) => `${Math.round(value)}%`,\n });\n }\n\n #setVolume(percent: number): void {\n const media = this.#volumeState.value;\n media?.setVolume(this.#core.valueFromPercent(percent) / 100);\n }\n}\n"],"mappings":";;;;;;;;;AAoBA,IAAa,sBAAb,cAAyC,aAAa;;;eAa5C,iBAAiB,aAAa;cAC/B,iBAAiB,aAAa;mBACzB,iBAAiB,aAAa;mBAC9B,iBAAiB,aAAa;qBAC5B,iBAAiB,aAAa;kBACjC,iBAAiB,aAAa;wBACxB,iBAAiB,aAAa;;;
|
|
1
|
+
{"version":3,"file":"volume-slider-element.js","names":["#core","#provider","#volumeState","#disconnect","#setVolume","#slider"],"sources":["../../../../src/ui/volume-slider/volume-slider-element.ts"],"sourcesContent":["import { VolumeSliderCore, VolumeSliderDataAttrs } from '@videojs/core';\nimport {\n applyElementProps,\n applyStateDataAttrs,\n createSlider,\n createWheelStep,\n getSliderCSSVars,\n logMissingFeature,\n type SliderApi,\n selectVolume,\n} from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport { ContextProvider } from '@videojs/element/context';\nimport { applyStyles, isRTL } from '@videojs/utils/dom';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaElement } from '../media-element';\nimport { sliderContext } from '../slider/context';\n\nexport class VolumeSliderElement extends MediaElement {\n static readonly tagName = 'media-volume-slider';\n\n static override properties = {\n label: { type: String },\n step: { type: Number },\n largeStep: { type: Number, attribute: 'large-step' },\n wheelStep: { type: Number, attribute: 'wheel-step' },\n orientation: { type: String },\n disabled: { type: Boolean },\n thumbAlignment: { type: String, attribute: 'thumb-alignment' },\n } satisfies PropertyDeclarationMap<Exclude<keyof VolumeSliderCore.Props, 'value' | 'min' | 'max'>>;\n\n label = VolumeSliderCore.defaultProps.label;\n step = VolumeSliderCore.defaultProps.step;\n largeStep = VolumeSliderCore.defaultProps.largeStep;\n wheelStep = VolumeSliderCore.defaultProps.wheelStep;\n orientation = VolumeSliderCore.defaultProps.orientation;\n disabled = VolumeSliderCore.defaultProps.disabled;\n thumbAlignment = VolumeSliderCore.defaultProps.thumbAlignment;\n\n readonly #core = new VolumeSliderCore();\n readonly #provider = new ContextProvider(this, { context: sliderContext });\n readonly #volumeState = new PlayerController(this, playerContext, selectVolume);\n\n #slider: SliderApi | null = null;\n #disconnect: AbortController | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n if (this.destroyed) return;\n\n this.#disconnect = new AbortController();\n const signal = this.#disconnect.signal;\n\n const isDisabled = () => this.disabled || !this.#volumeState.value;\n const getPercent = () => (this.#volumeState.value?.volume ?? 0) * 100;\n const getStepPercent = () => this.#core.getStepPercent();\n const setVolume = (percent: number) => this.#setVolume(percent);\n\n this.#slider = createSlider({\n getElement: () => this,\n getThumbElement: () => this.querySelector<HTMLElement>('media-slider-thumb'),\n getOrientation: () => this.orientation,\n isRTL: () => isRTL(this),\n isDisabled,\n getPercent,\n getStepPercent,\n getLargeStepPercent: () => this.#core.getLargeStepPercent(),\n onValueChange: setVolume,\n onValueCommit: setVolume,\n onDragStart: () => {\n this.dispatchEvent(new CustomEvent('drag-start', { bubbles: true }));\n },\n onDragEnd: () => {\n this.dispatchEvent(new CustomEvent('drag-end', { bubbles: true }));\n },\n adjustPercent: (raw, thumbSize, trackSize) => this.#core.adjustPercentForAlignment(raw, thumbSize, trackSize),\n onResize: () => this.requestUpdate(),\n });\n\n const wheelProps = createWheelStep({\n isDisabled,\n getPercent,\n getStepPercent: () => this.#core.getWheelStepPercent(),\n onValueChange: setVolume,\n });\n\n applyElementProps(this, this.#slider.rootProps, { signal });\n applyElementProps(this, wheelProps, { signal });\n applyStyles(this, this.#slider.rootStyle);\n this.#slider.input.subscribe(() => this.requestUpdate(), { signal });\n\n if (__DEV__ && !this.#volumeState.value) {\n logMissingFeature(this.localName, this.#volumeState.displayName!);\n }\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.#disconnect?.abort();\n this.#disconnect = null;\n }\n\n override destroyCallback(): void {\n this.#slider?.destroy();\n super.destroyCallback();\n }\n\n protected override willUpdate(_changed: PropertyValues): void {\n super.willUpdate(_changed);\n this.#core.setProps(this);\n }\n\n protected override update(_changed: PropertyValues): void {\n super.update(_changed);\n if (!this.#slider) return;\n\n const media = this.#volumeState.value;\n if (!media) return;\n\n this.#core.setInput(this.#slider.input.current);\n this.#core.setMedia(media);\n const state = this.#core.getState();\n\n const cssVars = getSliderCSSVars(this.#slider.adjustForAlignment(state));\n\n applyStyles(this, cssVars);\n\n // Apply data attributes to root.\n applyStateDataAttrs(this, state, VolumeSliderDataAttrs);\n\n // Provide context to child elements.\n this.#provider.setValue({\n state,\n stateAttrMap: VolumeSliderDataAttrs,\n pointerValue: this.#core.valueFromPercent(state.pointerPercent),\n thumbAttrs: this.#core.getAttrs(state),\n thumbProps: this.#slider.thumbProps,\n formatValue: (value) => `${Math.round(value)}%`,\n });\n }\n\n #setVolume(percent: number): void {\n const media = this.#volumeState.value;\n media?.setVolume(this.#core.valueFromPercent(percent) / 100);\n }\n}\n"],"mappings":"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"}
|