@videojs/html 10.0.0-alpha.9 → 10.0.0-beta.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/cdn/audio-minimal.dev.d.ts +1 -0
- package/cdn/audio-minimal.dev.js +112 -0
- package/cdn/audio-minimal.dev.js.map +1 -0
- package/cdn/audio-minimal.js +2 -0
- package/cdn/audio-minimal.js.map +1 -0
- package/cdn/audio.dev.d.ts +1 -0
- package/cdn/audio.dev.js +103 -0
- package/cdn/audio.dev.js.map +1 -0
- package/cdn/audio.js +2 -0
- package/cdn/audio.js.map +1 -0
- package/cdn/background.dev.d.ts +1 -0
- package/cdn/background.dev.js +159 -0
- package/cdn/background.dev.js.map +1 -0
- package/cdn/background.js +2 -0
- package/cdn/background.js.map +1 -0
- package/cdn/context-C_e06fGU.js +13 -0
- package/cdn/context-C_e06fGU.js.map +1 -0
- package/cdn/context-DTY0nOpS.js +98 -0
- package/cdn/context-DTY0nOpS.js.map +1 -0
- package/cdn/create-player-BTIU8EwT.js +7 -0
- package/cdn/create-player-BTIU8EwT.js.map +1 -0
- package/cdn/create-player-Cwxvswyv.js +3218 -0
- package/cdn/create-player-Cwxvswyv.js.map +1 -0
- package/cdn/default-GgKND7a8.js +2 -0
- package/cdn/default-GgKND7a8.js.map +1 -0
- package/cdn/default-cLso8BHO.js +28 -0
- package/cdn/default-cLso8BHO.js.map +1 -0
- package/cdn/listen-BXAYCbZA.js +9 -0
- package/cdn/listen-BXAYCbZA.js.map +1 -0
- package/cdn/listen-DX5vU4s4.js +2 -0
- package/cdn/listen-DX5vU4s4.js.map +1 -0
- package/cdn/media/dash-video.dev.d.ts +1 -0
- package/cdn/media/dash-video.dev.js +39165 -0
- package/cdn/media/dash-video.dev.js.map +1 -0
- package/cdn/media/dash-video.js +21 -0
- package/cdn/media/dash-video.js.map +1 -0
- package/cdn/media/hls-video.dev.d.ts +1 -0
- package/cdn/media/hls-video.dev.js +28357 -0
- package/cdn/media/hls-video.dev.js.map +1 -0
- package/cdn/media/hls-video.js +41 -0
- package/cdn/media/hls-video.js.map +1 -0
- package/cdn/media/simple-hls-video.dev.d.ts +1 -0
- package/cdn/media/simple-hls-video.dev.js +3465 -0
- package/cdn/media/simple-hls-video.dev.js.map +1 -0
- package/cdn/media/simple-hls-video.js +2 -0
- package/cdn/media/simple-hls-video.js.map +1 -0
- package/cdn/media-attach-mixin-ChyNp2eK.js +44 -0
- package/cdn/media-attach-mixin-ChyNp2eK.js.map +1 -0
- package/cdn/media-attach-mixin-tFNcHnvo.js +2 -0
- package/cdn/media-attach-mixin-tFNcHnvo.js.map +1 -0
- package/cdn/minimal-BJfleQcQ.js +2 -0
- package/cdn/minimal-BJfleQcQ.js.map +1 -0
- package/cdn/minimal-DBMdC_0I.js +28 -0
- package/cdn/minimal-DBMdC_0I.js.map +1 -0
- package/cdn/player-BHhLXO-R.js +2 -0
- package/cdn/player-BHhLXO-R.js.map +1 -0
- package/cdn/player-DEfj0RU6.js +15 -0
- package/cdn/player-DEfj0RU6.js.map +1 -0
- package/cdn/poster-Dd0F1rRd.js +195 -0
- package/cdn/poster-Dd0F1rRd.js.map +1 -0
- package/cdn/poster-DwQ3RAch.js +2 -0
- package/cdn/poster-DwQ3RAch.js.map +1 -0
- package/cdn/predicate-BG-dj_kF.js +26 -0
- package/cdn/predicate-BG-dj_kF.js.map +1 -0
- package/cdn/predicate-Y9jDHLpX.js +2 -0
- package/cdn/predicate-Y9jDHLpX.js.map +1 -0
- package/cdn/proxy-2oO2ph3m.js +47 -0
- package/cdn/proxy-2oO2ph3m.js.map +1 -0
- package/cdn/proxy-6KS6wy69.js +2 -0
- package/cdn/proxy-6KS6wy69.js.map +1 -0
- package/cdn/proxy-XzDf9gyk.js +66 -0
- package/cdn/proxy-XzDf9gyk.js.map +1 -0
- package/cdn/proxy-dR7IDk37.js +349 -0
- package/cdn/proxy-dR7IDk37.js.map +1 -0
- package/cdn/safe-define-B8lHgj_K.js +9 -0
- package/cdn/safe-define-B8lHgj_K.js.map +1 -0
- package/cdn/safe-define-GrHW3P9e.js +2 -0
- package/cdn/safe-define-GrHW3P9e.js.map +1 -0
- package/cdn/video-minimal.dev.d.ts +1 -0
- package/cdn/video-minimal.dev.js +155 -0
- package/cdn/video-minimal.dev.js.map +1 -0
- package/cdn/video-minimal.js +2 -0
- package/cdn/video-minimal.js.map +1 -0
- package/cdn/video.dev.d.ts +1 -0
- package/cdn/video.dev.js +170 -0
- package/cdn/video.dev.js.map +1 -0
- package/cdn/video.js +2 -0
- package/cdn/video.js.map +1 -0
- package/cdn/volume-slider-DgJ0rAfC.js +2459 -0
- package/cdn/volume-slider-DgJ0rAfC.js.map +1 -0
- package/cdn/volume-slider-Pd0AMTCH.js +8 -0
- package/cdn/volume-slider-Pd0AMTCH.js.map +1 -0
- package/dist/default/_virtual/inline-css_src/define/audio/minimal-skin.js +6 -0
- package/dist/default/_virtual/inline-css_src/define/audio/minimal-skin.js.map +1 -0
- package/dist/default/_virtual/inline-css_src/define/audio/skin.js +6 -0
- package/dist/default/_virtual/inline-css_src/define/audio/skin.js.map +1 -0
- package/dist/default/_virtual/inline-css_src/define/background/skin.js +6 -0
- package/dist/default/_virtual/inline-css_src/define/background/skin.js.map +1 -0
- package/dist/default/_virtual/inline-css_src/define/base.js +6 -0
- package/dist/default/_virtual/inline-css_src/define/base.js.map +1 -0
- package/dist/default/_virtual/inline-css_src/define/shared.js +6 -0
- package/dist/default/_virtual/inline-css_src/define/shared.js.map +1 -0
- package/dist/default/_virtual/inline-css_src/define/video/minimal-skin.js +6 -0
- package/dist/default/_virtual/inline-css_src/define/video/minimal-skin.js.map +1 -0
- package/dist/default/_virtual/inline-css_src/define/video/skin.js +6 -0
- package/dist/default/_virtual/inline-css_src/define/video/skin.js.map +1 -0
- package/dist/default/define/audio/minimal-skin.css +710 -5
- package/dist/default/define/audio/minimal-skin.js +20 -9
- package/dist/default/define/audio/minimal-skin.js.map +1 -1
- package/dist/default/define/audio/minimal-skin.tailwind.js +44 -0
- package/dist/default/define/audio/minimal-skin.tailwind.js.map +1 -0
- package/dist/default/define/audio/skin.css +736 -6
- package/dist/default/define/audio/skin.js +20 -9
- package/dist/default/define/audio/skin.js.map +1 -1
- package/dist/default/define/audio/skin.tailwind.js +42 -0
- package/dist/default/define/audio/skin.tailwind.js.map +1 -0
- package/dist/default/define/background/skin.css +1 -1
- package/dist/default/define/background/skin.js +11 -5
- package/dist/default/define/background/skin.js.map +1 -1
- package/dist/default/define/base.css +23 -0
- package/dist/default/define/media/dash-video.js +14 -0
- package/dist/default/define/media/dash-video.js.map +1 -0
- package/dist/default/define/media/simple-hls-video.js +13 -0
- package/dist/default/define/media/simple-hls-video.js.map +1 -0
- package/dist/default/define/shared.css +13 -0
- package/dist/default/define/skin-mixin.js +36 -19
- package/dist/default/define/skin-mixin.js.map +1 -1
- package/dist/default/define/video/minimal-skin.css +701 -397
- package/dist/default/define/video/minimal-skin.js +9 -98
- package/dist/default/define/video/minimal-skin.js.map +1 -1
- package/dist/default/define/video/minimal-skin.tailwind.js +17 -99
- package/dist/default/define/video/minimal-skin.tailwind.js.map +1 -1
- package/dist/default/define/video/skin.css +744 -427
- package/dist/default/define/video/skin.js +10 -92
- package/dist/default/define/video/skin.js.map +1 -1
- package/dist/default/define/video/skin.tailwind.js +15 -92
- package/dist/default/define/video/skin.tailwind.js.map +1 -1
- package/dist/default/icons/dist/render/default/index.js +14 -13
- package/dist/default/icons/dist/render/default/index.js.map +1 -1
- package/dist/default/icons/dist/render/minimal/index.js +14 -13
- package/dist/default/icons/dist/render/minimal/index.js.map +1 -1
- package/dist/default/index.js +3 -2
- package/dist/default/media/background-video/index.js +6 -19
- package/dist/default/media/background-video/index.js.map +1 -1
- package/dist/default/media/container-element.js +5 -2
- package/dist/default/media/container-element.js.map +1 -1
- package/dist/default/media/dash-video/index.js +26 -0
- package/dist/default/media/dash-video/index.js.map +1 -0
- package/dist/default/media/hls-video/index.js +2 -1
- package/dist/default/media/hls-video/index.js.map +1 -1
- package/dist/default/media/simple-hls-video/index.js +23 -0
- package/dist/default/media/simple-hls-video/index.js.map +1 -0
- package/dist/default/player/context.js +6 -2
- package/dist/default/player/context.js.map +1 -1
- package/dist/default/player/create-player.js +11 -3
- package/dist/default/player/create-player.js.map +1 -1
- package/dist/default/presets/audio.js +3 -1
- package/dist/default/skins/dist/default/default/tailwind/audio.tailwind.js +42 -0
- package/dist/default/skins/dist/default/default/tailwind/audio.tailwind.js.map +1 -0
- package/dist/default/skins/dist/default/default/tailwind/components/buffering.js +9 -0
- package/dist/default/skins/dist/default/default/tailwind/components/buffering.js.map +1 -0
- package/dist/default/skins/dist/default/default/tailwind/components/button.js +13 -0
- package/dist/default/skins/dist/default/default/tailwind/components/button.js.map +1 -0
- package/dist/default/skins/dist/default/default/tailwind/components/controls.js +8 -0
- package/dist/default/skins/dist/default/default/tailwind/components/controls.js.map +1 -0
- package/dist/default/skins/dist/default/default/tailwind/components/error.js +15 -0
- package/dist/default/skins/dist/default/default/tailwind/components/error.js.map +1 -0
- package/dist/default/skins/dist/default/default/tailwind/components/icon.js +10 -0
- package/dist/default/skins/dist/default/default/tailwind/components/icon.js.map +1 -0
- package/dist/default/skins/dist/default/default/tailwind/components/overlay.js +8 -0
- package/dist/default/skins/dist/default/default/tailwind/components/overlay.js.map +1 -0
- package/dist/default/skins/dist/default/default/tailwind/components/playback-rate.js +6 -0
- package/dist/default/skins/dist/default/default/tailwind/components/playback-rate.js.map +1 -0
- package/dist/default/skins/dist/default/default/tailwind/components/popup.js +13 -0
- package/dist/default/skins/dist/default/default/tailwind/components/popup.js.map +1 -0
- package/dist/default/skins/dist/default/default/tailwind/components/poster.js +16 -0
- package/dist/default/skins/dist/default/default/tailwind/components/poster.js.map +1 -0
- package/dist/default/skins/dist/default/default/tailwind/components/preview.js +13 -0
- package/dist/default/skins/dist/default/default/tailwind/components/preview.js.map +1 -0
- package/dist/default/skins/dist/default/default/tailwind/components/root.js +8 -0
- package/dist/default/skins/dist/default/default/tailwind/components/root.js.map +1 -0
- package/dist/default/skins/dist/default/default/tailwind/components/seek.js +11 -0
- package/dist/default/skins/dist/default/default/tailwind/components/seek.js.map +1 -0
- package/dist/default/skins/dist/default/default/tailwind/components/slider.js +21 -0
- package/dist/default/skins/dist/default/default/tailwind/components/slider.js.map +1 -0
- package/dist/default/skins/dist/default/default/tailwind/components/surface.js +8 -0
- package/dist/default/skins/dist/default/default/tailwind/components/surface.js.map +1 -0
- package/dist/default/skins/dist/default/default/tailwind/components/time.js +10 -0
- package/dist/default/skins/dist/default/default/tailwind/components/time.js.map +1 -0
- package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js +66 -0
- package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -0
- package/dist/default/skins/dist/default/minimal/tailwind/audio.tailwind.js +31 -0
- package/dist/default/skins/dist/default/minimal/tailwind/audio.tailwind.js.map +1 -0
- package/dist/default/skins/dist/default/minimal/tailwind/components/buffering.js +6 -0
- package/dist/default/skins/dist/default/minimal/tailwind/components/buffering.js.map +1 -0
- package/dist/default/skins/dist/default/minimal/tailwind/components/button-group.js +8 -0
- package/dist/default/skins/dist/default/minimal/tailwind/components/button-group.js.map +1 -0
- package/dist/default/skins/dist/default/minimal/tailwind/components/button.js +13 -0
- package/dist/default/skins/dist/default/minimal/tailwind/components/button.js.map +1 -0
- package/dist/default/skins/dist/default/minimal/tailwind/components/controls.js +8 -0
- package/dist/default/skins/dist/default/minimal/tailwind/components/controls.js.map +1 -0
- package/dist/default/skins/dist/default/minimal/tailwind/components/error.js +15 -0
- package/dist/default/skins/dist/default/minimal/tailwind/components/error.js.map +1 -0
- package/dist/default/skins/dist/default/minimal/tailwind/components/icon.js +10 -0
- package/dist/default/skins/dist/default/minimal/tailwind/components/icon.js.map +1 -0
- package/dist/default/skins/dist/default/minimal/tailwind/components/overlay.js +8 -0
- package/dist/default/skins/dist/default/minimal/tailwind/components/overlay.js.map +1 -0
- package/dist/default/skins/dist/default/minimal/tailwind/components/playback-rate.js +6 -0
- package/dist/default/skins/dist/default/minimal/tailwind/components/playback-rate.js.map +1 -0
- package/dist/default/skins/dist/default/minimal/tailwind/components/popup.js +13 -0
- package/dist/default/skins/dist/default/minimal/tailwind/components/popup.js.map +1 -0
- package/dist/default/skins/dist/default/minimal/tailwind/components/poster.js +16 -0
- package/dist/default/skins/dist/default/minimal/tailwind/components/poster.js.map +1 -0
- package/dist/default/skins/dist/default/minimal/tailwind/components/preview.js +14 -0
- package/dist/default/skins/dist/default/minimal/tailwind/components/preview.js.map +1 -0
- package/dist/default/skins/dist/default/minimal/tailwind/components/root.js +8 -0
- package/dist/default/skins/dist/default/minimal/tailwind/components/root.js.map +1 -0
- package/dist/default/skins/dist/default/minimal/tailwind/components/seek.js +11 -0
- package/dist/default/skins/dist/default/minimal/tailwind/components/seek.js.map +1 -0
- package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js +20 -0
- package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -0
- package/dist/default/skins/dist/default/minimal/tailwind/components/time.js +14 -0
- package/dist/default/skins/dist/default/minimal/tailwind/components/time.js.map +1 -0
- package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js +61 -0
- package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -0
- package/dist/default/skins/dist/default/shared/tailwind/icon-state.js +34 -0
- package/dist/default/skins/dist/default/shared/tailwind/icon-state.js.map +1 -0
- package/dist/default/skins/dist/default/shared/tailwind/tooltip-state.js +28 -0
- package/dist/default/skins/dist/default/shared/tailwind/tooltip-state.js.map +1 -0
- package/dist/default/store/container-mixin.js +16 -46
- package/dist/default/store/container-mixin.js.map +1 -1
- package/dist/default/store/media-attach-mixin.js +45 -0
- package/dist/default/store/media-attach-mixin.js.map +1 -0
- package/dist/default/store/provider-mixin.js +99 -9
- package/dist/default/store/provider-mixin.js.map +1 -1
- package/dist/default/ui/popover/popover-element.js +57 -4
- package/dist/default/ui/popover/popover-element.js.map +1 -1
- package/dist/default/ui/slider/slider-element.js +3 -3
- package/dist/default/ui/slider/slider-element.js.map +1 -1
- package/dist/default/ui/time-slider/time-slider-element.js +4 -4
- package/dist/default/ui/time-slider/time-slider-element.js.map +1 -1
- package/dist/default/ui/tooltip/tooltip-element.js +56 -4
- package/dist/default/ui/tooltip/tooltip-element.js.map +1 -1
- package/dist/default/ui/tooltip/tooltip-group-element.js +4 -1
- package/dist/default/ui/tooltip/tooltip-group-element.js.map +1 -1
- package/dist/default/ui/volume-slider/volume-slider-element.js +6 -6
- package/dist/default/ui/volume-slider/volume-slider-element.js.map +1 -1
- package/dist/dev/_virtual/inline-css_src/define/audio/minimal-skin.js +6 -0
- package/dist/dev/_virtual/inline-css_src/define/audio/minimal-skin.js.map +1 -0
- package/dist/dev/_virtual/inline-css_src/define/audio/skin.js +6 -0
- package/dist/dev/_virtual/inline-css_src/define/audio/skin.js.map +1 -0
- package/dist/dev/_virtual/inline-css_src/define/background/skin.js +6 -0
- package/dist/dev/_virtual/inline-css_src/define/background/skin.js.map +1 -0
- package/dist/dev/_virtual/inline-css_src/define/base.js +6 -0
- package/dist/dev/_virtual/inline-css_src/define/base.js.map +1 -0
- package/dist/dev/_virtual/inline-css_src/define/shared.js +6 -0
- package/dist/dev/_virtual/inline-css_src/define/shared.js.map +1 -0
- package/dist/dev/_virtual/inline-css_src/define/video/minimal-skin.js +6 -0
- package/dist/dev/_virtual/inline-css_src/define/video/minimal-skin.js.map +1 -0
- package/dist/dev/_virtual/inline-css_src/define/video/skin.js +6 -0
- package/dist/dev/_virtual/inline-css_src/define/video/skin.js.map +1 -0
- package/dist/dev/define/audio/minimal-skin.css +710 -5
- package/dist/dev/define/audio/minimal-skin.d.ts +6 -2
- package/dist/dev/define/audio/minimal-skin.d.ts.map +1 -1
- package/dist/dev/define/audio/minimal-skin.js +102 -9
- package/dist/dev/define/audio/minimal-skin.js.map +1 -1
- package/dist/dev/define/audio/minimal-skin.tailwind.d.ts +20 -0
- package/dist/dev/define/audio/minimal-skin.tailwind.d.ts.map +1 -0
- package/dist/dev/define/audio/minimal-skin.tailwind.js +128 -0
- package/dist/dev/define/audio/minimal-skin.tailwind.js.map +1 -0
- package/dist/dev/define/audio/player.d.ts +0 -1
- package/dist/dev/define/audio/player.d.ts.map +1 -1
- package/dist/dev/define/audio/skin.css +736 -6
- package/dist/dev/define/audio/skin.d.ts +6 -2
- package/dist/dev/define/audio/skin.d.ts.map +1 -1
- package/dist/dev/define/audio/skin.js +93 -9
- package/dist/dev/define/audio/skin.js.map +1 -1
- package/dist/dev/define/audio/skin.tailwind.d.ts +20 -0
- package/dist/dev/define/audio/skin.tailwind.d.ts.map +1 -0
- package/dist/dev/define/audio/skin.tailwind.js +117 -0
- package/dist/dev/define/audio/skin.tailwind.js.map +1 -0
- package/dist/dev/define/background/player.d.ts +0 -1
- package/dist/dev/define/background/player.d.ts.map +1 -1
- package/dist/dev/define/background/skin.css +1 -1
- package/dist/dev/define/background/skin.d.ts.map +1 -1
- package/dist/dev/define/background/skin.js +13 -1
- package/dist/dev/define/background/skin.js.map +1 -1
- package/dist/dev/define/base.css +23 -0
- package/dist/dev/define/media/dash-video.d.ts +14 -0
- package/dist/dev/define/media/dash-video.d.ts.map +1 -0
- package/dist/dev/define/media/dash-video.js +14 -0
- package/dist/dev/define/media/dash-video.js.map +1 -0
- package/dist/dev/define/media/simple-hls-video.d.ts +14 -0
- package/dist/dev/define/media/simple-hls-video.d.ts.map +1 -0
- package/dist/dev/define/media/simple-hls-video.js +13 -0
- package/dist/dev/define/media/simple-hls-video.js.map +1 -0
- package/dist/dev/define/shared.css +13 -0
- package/dist/dev/define/skin-mixin.d.ts +12 -4
- package/dist/dev/define/skin-mixin.d.ts.map +1 -1
- package/dist/dev/define/skin-mixin.js +36 -19
- package/dist/dev/define/skin-mixin.js.map +1 -1
- package/dist/dev/define/video/minimal-skin.css +701 -397
- package/dist/dev/define/video/minimal-skin.d.ts +5 -14
- package/dist/dev/define/video/minimal-skin.d.ts.map +1 -1
- package/dist/dev/define/video/minimal-skin.js +119 -83
- package/dist/dev/define/video/minimal-skin.js.map +1 -1
- package/dist/dev/define/video/minimal-skin.tailwind.d.ts +4 -14
- package/dist/dev/define/video/minimal-skin.tailwind.d.ts.map +1 -1
- package/dist/dev/define/video/minimal-skin.tailwind.js +136 -83
- package/dist/dev/define/video/minimal-skin.tailwind.js.map +1 -1
- package/dist/dev/define/video/player.d.ts +0 -1
- package/dist/dev/define/video/player.d.ts.map +1 -1
- package/dist/dev/define/video/skin.css +744 -427
- package/dist/dev/define/video/skin.d.ts +5 -14
- package/dist/dev/define/video/skin.d.ts.map +1 -1
- package/dist/dev/define/video/skin.js +115 -79
- package/dist/dev/define/video/skin.js.map +1 -1
- package/dist/dev/define/video/skin.tailwind.d.ts +4 -14
- package/dist/dev/define/video/skin.tailwind.d.ts.map +1 -1
- package/dist/dev/define/video/skin.tailwind.js +125 -76
- package/dist/dev/define/video/skin.tailwind.js.map +1 -1
- package/dist/dev/icons/dist/render/default/index.js +14 -13
- package/dist/dev/icons/dist/render/default/index.js.map +1 -1
- package/dist/dev/icons/dist/render/minimal/index.js +14 -13
- package/dist/dev/icons/dist/render/minimal/index.js.map +1 -1
- package/dist/dev/index.d.ts +6 -5
- package/dist/dev/index.js +3 -2
- package/dist/dev/media/background-video/index.d.ts +8 -1
- package/dist/dev/media/background-video/index.d.ts.map +1 -1
- package/dist/dev/media/background-video/index.js +5 -1
- package/dist/dev/media/background-video/index.js.map +1 -1
- package/dist/dev/media/container-element.d.ts +0 -1
- package/dist/dev/media/container-element.d.ts.map +1 -1
- package/dist/dev/media/container-element.js +5 -2
- package/dist/dev/media/container-element.js.map +1 -1
- package/dist/dev/media/dash-video/index.d.ts +13 -0
- package/dist/dev/media/dash-video/index.d.ts.map +1 -0
- package/dist/dev/media/dash-video/index.js +26 -0
- package/dist/dev/media/dash-video/index.js.map +1 -0
- package/dist/dev/media/hls-video/index.d.ts +2 -1
- package/dist/dev/media/hls-video/index.d.ts.map +1 -1
- package/dist/dev/media/hls-video/index.js +2 -1
- package/dist/dev/media/hls-video/index.js.map +1 -1
- package/dist/dev/media/simple-hls-video/index.d.ts +12 -0
- package/dist/dev/media/simple-hls-video/index.d.ts.map +1 -0
- package/dist/dev/media/simple-hls-video/index.js +23 -0
- package/dist/dev/media/simple-hls-video/index.js.map +1 -0
- package/dist/dev/player/context.d.ts +16 -2
- package/dist/dev/player/context.d.ts.map +1 -1
- package/dist/dev/player/context.js +6 -2
- package/dist/dev/player/context.js.map +1 -1
- package/dist/dev/player/create-player.d.ts +2 -2
- package/dist/dev/player/create-player.js +11 -3
- package/dist/dev/player/create-player.js.map +1 -1
- package/dist/dev/presets/audio.d.ts +3 -1
- package/dist/dev/presets/audio.js +3 -1
- package/dist/dev/skins/dist/default/default/tailwind/audio.tailwind.js +42 -0
- package/dist/dev/skins/dist/default/default/tailwind/audio.tailwind.js.map +1 -0
- package/dist/dev/skins/dist/default/default/tailwind/components/buffering.js +9 -0
- package/dist/dev/skins/dist/default/default/tailwind/components/buffering.js.map +1 -0
- package/dist/dev/skins/dist/default/default/tailwind/components/button.js +13 -0
- package/dist/dev/skins/dist/default/default/tailwind/components/button.js.map +1 -0
- package/dist/dev/skins/dist/default/default/tailwind/components/controls.js +8 -0
- package/dist/dev/skins/dist/default/default/tailwind/components/controls.js.map +1 -0
- package/dist/dev/skins/dist/default/default/tailwind/components/error.js +15 -0
- package/dist/dev/skins/dist/default/default/tailwind/components/error.js.map +1 -0
- package/dist/dev/skins/dist/default/default/tailwind/components/icon.js +10 -0
- package/dist/dev/skins/dist/default/default/tailwind/components/icon.js.map +1 -0
- package/dist/dev/skins/dist/default/default/tailwind/components/overlay.js +8 -0
- package/dist/dev/skins/dist/default/default/tailwind/components/overlay.js.map +1 -0
- package/dist/dev/skins/dist/default/default/tailwind/components/playback-rate.js +6 -0
- package/dist/dev/skins/dist/default/default/tailwind/components/playback-rate.js.map +1 -0
- package/dist/dev/skins/dist/default/default/tailwind/components/popup.js +13 -0
- package/dist/dev/skins/dist/default/default/tailwind/components/popup.js.map +1 -0
- package/dist/dev/skins/dist/default/default/tailwind/components/poster.js +16 -0
- package/dist/dev/skins/dist/default/default/tailwind/components/poster.js.map +1 -0
- package/dist/dev/skins/dist/default/default/tailwind/components/preview.js +13 -0
- package/dist/dev/skins/dist/default/default/tailwind/components/preview.js.map +1 -0
- package/dist/dev/skins/dist/default/default/tailwind/components/root.js +8 -0
- package/dist/dev/skins/dist/default/default/tailwind/components/root.js.map +1 -0
- package/dist/dev/skins/dist/default/default/tailwind/components/seek.js +11 -0
- package/dist/dev/skins/dist/default/default/tailwind/components/seek.js.map +1 -0
- package/dist/dev/skins/dist/default/default/tailwind/components/slider.js +21 -0
- package/dist/dev/skins/dist/default/default/tailwind/components/slider.js.map +1 -0
- package/dist/dev/skins/dist/default/default/tailwind/components/surface.js +8 -0
- package/dist/dev/skins/dist/default/default/tailwind/components/surface.js.map +1 -0
- package/dist/dev/skins/dist/default/default/tailwind/components/time.js +10 -0
- package/dist/dev/skins/dist/default/default/tailwind/components/time.js.map +1 -0
- package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js +66 -0
- package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -0
- package/dist/dev/skins/dist/default/minimal/tailwind/audio.tailwind.js +31 -0
- package/dist/dev/skins/dist/default/minimal/tailwind/audio.tailwind.js.map +1 -0
- package/dist/dev/skins/dist/default/minimal/tailwind/components/buffering.js +6 -0
- package/dist/dev/skins/dist/default/minimal/tailwind/components/buffering.js.map +1 -0
- package/dist/dev/skins/dist/default/minimal/tailwind/components/button-group.js +8 -0
- package/dist/dev/skins/dist/default/minimal/tailwind/components/button-group.js.map +1 -0
- package/dist/dev/skins/dist/default/minimal/tailwind/components/button.js +13 -0
- package/dist/dev/skins/dist/default/minimal/tailwind/components/button.js.map +1 -0
- package/dist/dev/skins/dist/default/minimal/tailwind/components/controls.js +8 -0
- package/dist/dev/skins/dist/default/minimal/tailwind/components/controls.js.map +1 -0
- package/dist/dev/skins/dist/default/minimal/tailwind/components/error.js +15 -0
- package/dist/dev/skins/dist/default/minimal/tailwind/components/error.js.map +1 -0
- package/dist/dev/skins/dist/default/minimal/tailwind/components/icon.js +10 -0
- package/dist/dev/skins/dist/default/minimal/tailwind/components/icon.js.map +1 -0
- package/dist/dev/skins/dist/default/minimal/tailwind/components/overlay.js +8 -0
- package/dist/dev/skins/dist/default/minimal/tailwind/components/overlay.js.map +1 -0
- package/dist/dev/skins/dist/default/minimal/tailwind/components/playback-rate.js +6 -0
- package/dist/dev/skins/dist/default/minimal/tailwind/components/playback-rate.js.map +1 -0
- package/dist/dev/skins/dist/default/minimal/tailwind/components/popup.js +13 -0
- package/dist/dev/skins/dist/default/minimal/tailwind/components/popup.js.map +1 -0
- package/dist/dev/skins/dist/default/minimal/tailwind/components/poster.js +16 -0
- package/dist/dev/skins/dist/default/minimal/tailwind/components/poster.js.map +1 -0
- package/dist/dev/skins/dist/default/minimal/tailwind/components/preview.js +14 -0
- package/dist/dev/skins/dist/default/minimal/tailwind/components/preview.js.map +1 -0
- package/dist/dev/skins/dist/default/minimal/tailwind/components/root.js +8 -0
- package/dist/dev/skins/dist/default/minimal/tailwind/components/root.js.map +1 -0
- package/dist/dev/skins/dist/default/minimal/tailwind/components/seek.js +11 -0
- package/dist/dev/skins/dist/default/minimal/tailwind/components/seek.js.map +1 -0
- package/dist/dev/skins/dist/default/minimal/tailwind/components/slider.js +20 -0
- package/dist/dev/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -0
- package/dist/dev/skins/dist/default/minimal/tailwind/components/time.js +14 -0
- package/dist/dev/skins/dist/default/minimal/tailwind/components/time.js.map +1 -0
- package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js +61 -0
- package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -0
- package/dist/dev/skins/dist/default/shared/tailwind/icon-state.js +34 -0
- package/dist/dev/skins/dist/default/shared/tailwind/icon-state.js.map +1 -0
- package/dist/dev/skins/dist/default/shared/tailwind/tooltip-state.js +28 -0
- package/dist/dev/skins/dist/default/shared/tailwind/tooltip-state.js.map +1 -0
- package/dist/dev/store/container-mixin.d.ts +10 -5
- package/dist/dev/store/container-mixin.d.ts.map +1 -1
- package/dist/dev/store/container-mixin.js +16 -46
- package/dist/dev/store/container-mixin.js.map +1 -1
- package/dist/dev/store/media-attach-mixin.d.ts +19 -0
- package/dist/dev/store/media-attach-mixin.d.ts.map +1 -0
- package/dist/dev/store/media-attach-mixin.js +45 -0
- package/dist/dev/store/media-attach-mixin.js.map +1 -0
- package/dist/dev/store/provider-mixin.d.ts +19 -6
- package/dist/dev/store/provider-mixin.d.ts.map +1 -1
- package/dist/dev/store/provider-mixin.js +99 -9
- package/dist/dev/store/provider-mixin.js.map +1 -1
- package/dist/dev/ui/popover/popover-element.d.ts.map +1 -1
- package/dist/dev/ui/popover/popover-element.js +57 -4
- package/dist/dev/ui/popover/popover-element.js.map +1 -1
- package/dist/dev/ui/slider/slider-element.d.ts.map +1 -1
- package/dist/dev/ui/slider/slider-element.js +3 -3
- package/dist/dev/ui/slider/slider-element.js.map +1 -1
- package/dist/dev/ui/time-slider/time-slider-element.d.ts.map +1 -1
- package/dist/dev/ui/time-slider/time-slider-element.js +4 -4
- package/dist/dev/ui/time-slider/time-slider-element.js.map +1 -1
- package/dist/dev/ui/tooltip/tooltip-element.d.ts.map +1 -1
- package/dist/dev/ui/tooltip/tooltip-element.js +56 -4
- package/dist/dev/ui/tooltip/tooltip-element.js.map +1 -1
- package/dist/dev/ui/tooltip/tooltip-group-element.js +4 -1
- package/dist/dev/ui/tooltip/tooltip-group-element.js.map +1 -1
- package/dist/dev/ui/volume-slider/volume-slider-element.d.ts.map +1 -1
- package/dist/dev/ui/volume-slider/volume-slider-element.js +6 -6
- package/dist/dev/ui/volume-slider/volume-slider-element.js.map +1 -1
- package/package.json +24 -10
- package/dist/default/skins/dist/default/video/default.tailwind.js +0 -90
- package/dist/default/skins/dist/default/video/default.tailwind.js.map +0 -1
- package/dist/default/skins/dist/default/video/minimal.tailwind.js +0 -86
- package/dist/default/skins/dist/default/video/minimal.tailwind.js.map +0 -1
- package/dist/dev/skins/dist/default/video/default.tailwind.js +0 -90
- package/dist/dev/skins/dist/default/video/default.tailwind.js.map +0 -1
- package/dist/dev/skins/dist/default/video/minimal.tailwind.js +0 -86
- package/dist/dev/skins/dist/default/video/minimal.tailwind.js.map +0 -1
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
//#region ../skins/dist/default/shared/tailwind/tooltip-state.js
|
|
2
|
+
const tooltipState = {
|
|
3
|
+
play: {
|
|
4
|
+
wrapper: "contents group/play-tip",
|
|
5
|
+
replay: "hidden group-has-data-ended/play-tip:block",
|
|
6
|
+
play: "hidden group-[:has([data-paused]):not(:has([data-ended]))]/play-tip:block",
|
|
7
|
+
pause: "hidden group-[:not(:has([data-paused])):not(:has([data-ended]))]/play-tip:block"
|
|
8
|
+
},
|
|
9
|
+
fullscreen: {
|
|
10
|
+
wrapper: "contents group/fullscreen-tip",
|
|
11
|
+
enter: "hidden group-[:not(:has([data-fullscreen]))]/fullscreen-tip:block",
|
|
12
|
+
exit: "hidden group-has-data-fullscreen/fullscreen-tip:block"
|
|
13
|
+
},
|
|
14
|
+
captions: {
|
|
15
|
+
wrapper: "contents group/captions-tip",
|
|
16
|
+
enable: "hidden group-[:not(:has([data-active]))]/captions-tip:block",
|
|
17
|
+
disable: "hidden group-has-data-active/captions-tip:block"
|
|
18
|
+
},
|
|
19
|
+
pip: {
|
|
20
|
+
wrapper: "contents group/pip-tip",
|
|
21
|
+
enter: "hidden group-[:not(:has([data-pip]))]/pip-tip:block",
|
|
22
|
+
exit: "hidden group-has-data-pip/pip-tip:block"
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
//#endregion
|
|
27
|
+
export { tooltipState };
|
|
28
|
+
//# sourceMappingURL=tooltip-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tooltip-state.js","names":[],"sources":["../../../../../../../../skins/dist/default/shared/tailwind/tooltip-state.js"],"sourcesContent":["//#region src/shared/tailwind/tooltip-state.ts\nconst tooltipState = {\n\tplay: {\n\t\twrapper: \"contents group/play-tip\",\n\t\treplay: \"hidden group-has-data-ended/play-tip:block\",\n\t\tplay: \"hidden group-[:has([data-paused]):not(:has([data-ended]))]/play-tip:block\",\n\t\tpause: \"hidden group-[:not(:has([data-paused])):not(:has([data-ended]))]/play-tip:block\"\n\t},\n\tfullscreen: {\n\t\twrapper: \"contents group/fullscreen-tip\",\n\t\tenter: \"hidden group-[:not(:has([data-fullscreen]))]/fullscreen-tip:block\",\n\t\texit: \"hidden group-has-data-fullscreen/fullscreen-tip:block\"\n\t},\n\tcaptions: {\n\t\twrapper: \"contents group/captions-tip\",\n\t\tenable: \"hidden group-[:not(:has([data-active]))]/captions-tip:block\",\n\t\tdisable: \"hidden group-has-data-active/captions-tip:block\"\n\t},\n\tpip: {\n\t\twrapper: \"contents group/pip-tip\",\n\t\tenter: \"hidden group-[:not(:has([data-pip]))]/pip-tip:block\",\n\t\texit: \"hidden group-has-data-pip/pip-tip:block\"\n\t}\n};\n\n//#endregion\nexport { tooltipState };\n//# sourceMappingURL=tooltip-state.js.map"],"mappings":";AACA,MAAM,eAAe;CACpB,MAAM;EACL,SAAS;EACT,QAAQ;EACR,MAAM;EACN,OAAO;EACP;CACD,YAAY;EACX,SAAS;EACT,OAAO;EACP,MAAM;EACN;CACD,UAAU;EACT,SAAS;EACT,QAAQ;EACR,SAAS;EACT;CACD,KAAK;EACJ,SAAS;EACT,OAAO;EACP,MAAM;EACN;CACD"}
|
|
@@ -1,16 +1,21 @@
|
|
|
1
|
+
import { ContainerContext, PlayerContext } from "../player/context.js";
|
|
1
2
|
import { MediaElementConstructor } from "../ui/media-element.js";
|
|
2
|
-
import { PlayerContext } from "../player/context.js";
|
|
3
3
|
import { PlayerConsumerConstructor } from "./types.js";
|
|
4
4
|
import { PlayerStore } from "@videojs/core/dom";
|
|
5
5
|
|
|
6
6
|
//#region src/store/container-mixin.d.ts
|
|
7
|
+
interface ContainerMixinConfig<Store extends PlayerStore> {
|
|
8
|
+
playerContext: PlayerContext<Store>;
|
|
9
|
+
containerContext: ContainerContext;
|
|
10
|
+
}
|
|
7
11
|
type ContainerMixin<Store extends PlayerStore> = <Class extends MediaElementConstructor>(BaseClass: Class) => Class & PlayerConsumerConstructor<Store>;
|
|
8
12
|
/**
|
|
9
|
-
* Create a mixin that consumes player context and
|
|
13
|
+
* Create a mixin that consumes player context and registers itself as the
|
|
14
|
+
* container element with the provider via `containerContext`.
|
|
10
15
|
*
|
|
11
|
-
* @param
|
|
16
|
+
* @param config - Container configuration with player and container contexts.
|
|
12
17
|
*/
|
|
13
|
-
declare function createContainerMixin<Store extends PlayerStore>(
|
|
18
|
+
declare function createContainerMixin<Store extends PlayerStore>(config: ContainerMixinConfig<Store>): ContainerMixin<Store>;
|
|
14
19
|
//#endregion
|
|
15
|
-
export { ContainerMixin, createContainerMixin };
|
|
20
|
+
export { ContainerMixin, ContainerMixinConfig, createContainerMixin };
|
|
16
21
|
//# sourceMappingURL=container-mixin.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container-mixin.d.ts","names":[],"sources":["../../../src/store/container-mixin.ts"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"container-mixin.d.ts","names":[],"sources":["../../../src/store/container-mixin.ts"],"mappings":";;;;;;UAMiB,oBAAA,eAAmC,WAAA;EAClD,aAAA,EAAe,aAAA,CAAc,KAAA;EAC7B,gBAAA,EAAkB,gBAAA;AAAA;AAAA,KAGR,cAAA,eAA6B,WAAA,mBAA8B,uBAAA,EACrE,SAAA,EAAW,KAAA,KACR,KAAA,GAAQ,yBAAA,CAA0B,KAAA;;;;;;;iBAQvB,oBAAA,eAAmC,WAAA,CAAA,CACjD,MAAA,EAAQ,oBAAA,CAAqB,KAAA,IAC5B,cAAA,CAAe,KAAA"}
|
|
@@ -1,25 +1,31 @@
|
|
|
1
1
|
import { ContextConsumer } from "@videojs/element/context";
|
|
2
|
-
import { noop } from "@videojs/utils/function";
|
|
3
2
|
|
|
4
3
|
//#region src/store/container-mixin.ts
|
|
5
4
|
/**
|
|
6
|
-
* Create a mixin that consumes player context and
|
|
5
|
+
* Create a mixin that consumes player context and registers itself as the
|
|
6
|
+
* container element with the provider via `containerContext`.
|
|
7
7
|
*
|
|
8
|
-
* @param
|
|
8
|
+
* @param config - Container configuration with player and container contexts.
|
|
9
9
|
*/
|
|
10
|
-
function createContainerMixin(
|
|
10
|
+
function createContainerMixin(config) {
|
|
11
11
|
return (BaseClass) => {
|
|
12
12
|
class PlayerContainerElement extends BaseClass {
|
|
13
|
-
#detach = noop;
|
|
14
|
-
#observer = null;
|
|
15
13
|
#contextStore = null;
|
|
14
|
+
#setContainer = null;
|
|
16
15
|
constructor(...args) {
|
|
17
16
|
super(...args);
|
|
18
17
|
new ContextConsumer(this, {
|
|
19
|
-
context,
|
|
18
|
+
context: config.playerContext,
|
|
20
19
|
callback: (value) => {
|
|
21
20
|
this.#contextStore = value ?? null;
|
|
22
|
-
|
|
21
|
+
},
|
|
22
|
+
subscribe: true
|
|
23
|
+
});
|
|
24
|
+
new ContextConsumer(this, {
|
|
25
|
+
context: config.containerContext,
|
|
26
|
+
callback: (value) => {
|
|
27
|
+
this.#setContainer = value?.setContainer ?? null;
|
|
28
|
+
if (this.isConnected) this.#setContainer?.(this);
|
|
23
29
|
},
|
|
24
30
|
subscribe: true
|
|
25
31
|
});
|
|
@@ -29,52 +35,16 @@ function createContainerMixin(context) {
|
|
|
29
35
|
}
|
|
30
36
|
connectedCallback() {
|
|
31
37
|
super.connectedCallback();
|
|
32
|
-
this.#
|
|
33
|
-
if (records.some(hasMediaNode)) this.#attachMedia();
|
|
34
|
-
});
|
|
35
|
-
this.#observer.observe(this, {
|
|
36
|
-
childList: true,
|
|
37
|
-
subtree: true
|
|
38
|
-
});
|
|
39
|
-
this.#attachMedia();
|
|
38
|
+
this.#setContainer?.(this);
|
|
40
39
|
}
|
|
41
40
|
disconnectedCallback() {
|
|
42
41
|
super.disconnectedCallback();
|
|
43
|
-
this.#
|
|
44
|
-
this.#observer = null;
|
|
45
|
-
this.#detach();
|
|
46
|
-
}
|
|
47
|
-
#attachMedia() {
|
|
48
|
-
const store = this.#contextStore ?? this.store;
|
|
49
|
-
if (!store) return;
|
|
50
|
-
const media = this.querySelector("video, audio");
|
|
51
|
-
if (!media) {
|
|
52
|
-
this.#detach();
|
|
53
|
-
this.#detach = noop;
|
|
54
|
-
return;
|
|
55
|
-
}
|
|
56
|
-
const target = {
|
|
57
|
-
media,
|
|
58
|
-
container: this
|
|
59
|
-
};
|
|
60
|
-
const hasMediaChanged = store.target?.media !== target.media, hasContainerChanged = store.target?.container !== target.container;
|
|
61
|
-
if (hasMediaChanged || hasContainerChanged) {
|
|
62
|
-
this.#detach();
|
|
63
|
-
this.#detach = store.attach(target);
|
|
64
|
-
}
|
|
42
|
+
this.#setContainer?.(null);
|
|
65
43
|
}
|
|
66
44
|
}
|
|
67
45
|
return PlayerContainerElement;
|
|
68
46
|
};
|
|
69
47
|
}
|
|
70
|
-
function isMediaNode(node) {
|
|
71
|
-
return node instanceof HTMLMediaElement;
|
|
72
|
-
}
|
|
73
|
-
function hasMediaNode(record) {
|
|
74
|
-
for (const node of record.addedNodes) if (isMediaNode(node)) return true;
|
|
75
|
-
for (const node of record.removedNodes) if (isMediaNode(node)) return true;
|
|
76
|
-
return false;
|
|
77
|
-
}
|
|
78
48
|
|
|
79
49
|
//#endregion
|
|
80
50
|
export { createContainerMixin };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container-mixin.js","names":["#contextStore","#
|
|
1
|
+
{"version":3,"file":"container-mixin.js","names":["#contextStore","#setContainer"],"sources":["../../../src/store/container-mixin.ts"],"sourcesContent":["import type { MediaContainer, PlayerStore } from '@videojs/core/dom';\nimport { ContextConsumer } from '@videojs/element/context';\nimport type { MediaElementConstructor } from '@/ui/media-element';\nimport type { ContainerContext, PlayerContext } from '../player/context';\nimport type { PlayerConsumer, PlayerConsumerConstructor } from './types';\n\nexport interface ContainerMixinConfig<Store extends PlayerStore> {\n playerContext: PlayerContext<Store>;\n containerContext: ContainerContext;\n}\n\nexport type ContainerMixin<Store extends PlayerStore> = <Class extends MediaElementConstructor>(\n BaseClass: Class\n) => Class & PlayerConsumerConstructor<Store>;\n\n/**\n * Create a mixin that consumes player context and registers itself as the\n * container element with the provider via `containerContext`.\n *\n * @param config - Container configuration with player and container contexts.\n */\nexport function createContainerMixin<Store extends PlayerStore>(\n config: ContainerMixinConfig<Store>\n): ContainerMixin<Store> {\n return <Class extends MediaElementConstructor>(BaseClass: Class) => {\n class PlayerContainerElement extends BaseClass implements PlayerConsumer<Store>, MediaContainer {\n #contextStore: Store | null = null;\n #setContainer: ((container: MediaContainer | null) => void) | null = null;\n\n constructor(...args: any[]) {\n super(...args);\n\n new ContextConsumer(this, {\n context: config.playerContext,\n callback: (value) => {\n this.#contextStore = value ?? null;\n },\n subscribe: true,\n });\n\n new ContextConsumer(this, {\n context: config.containerContext,\n callback: (value) => {\n this.#setContainer = value?.setContainer ?? null;\n if (this.isConnected) this.#setContainer?.(this);\n },\n subscribe: true,\n });\n }\n\n get store(): Store | null {\n return this.#contextStore;\n }\n\n override connectedCallback() {\n super.connectedCallback();\n this.#setContainer?.(this);\n }\n\n override disconnectedCallback() {\n super.disconnectedCallback();\n this.#setContainer?.(null);\n }\n }\n\n return PlayerContainerElement;\n };\n}\n"],"mappings":";;;;;;;;;AAqBA,SAAgB,qBACd,QACuB;AACvB,SAA+C,cAAqB;EAClE,MAAM,+BAA+B,UAA2D;GAC9F,gBAA8B;GAC9B,gBAAqE;GAErE,YAAY,GAAG,MAAa;AAC1B,UAAM,GAAG,KAAK;AAEd,QAAI,gBAAgB,MAAM;KACxB,SAAS,OAAO;KAChB,WAAW,UAAU;AACnB,YAAKA,eAAgB,SAAS;;KAEhC,WAAW;KACZ,CAAC;AAEF,QAAI,gBAAgB,MAAM;KACxB,SAAS,OAAO;KAChB,WAAW,UAAU;AACnB,YAAKC,eAAgB,OAAO,gBAAgB;AAC5C,UAAI,KAAK,YAAa,OAAKA,eAAgB,KAAK;;KAElD,WAAW;KACZ,CAAC;;GAGJ,IAAI,QAAsB;AACxB,WAAO,MAAKD;;GAGd,AAAS,oBAAoB;AAC3B,UAAM,mBAAmB;AACzB,UAAKC,eAAgB,KAAK;;GAG5B,AAAS,uBAAuB;AAC9B,UAAM,sBAAsB;AAC5B,UAAKA,eAAgB,KAAK;;;AAI9B,SAAO"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { MediaContext } from "../player/context.js";
|
|
2
|
+
import { AnyConstructor } from "@videojs/utils/types";
|
|
3
|
+
|
|
4
|
+
//#region src/store/media-attach-mixin.d.ts
|
|
5
|
+
type MediaAttachMixin = <Class extends AnyConstructor<HTMLElement>>(BaseClass: Class) => Class;
|
|
6
|
+
/**
|
|
7
|
+
* Create a mixin that consumes `mediaContext` and registers the
|
|
8
|
+
* element as the media with the provider.
|
|
9
|
+
*
|
|
10
|
+
* Uses the raw context-request protocol so it works with any
|
|
11
|
+
* `HTMLElement` subclass — no `ReactiveControllerHost` required.
|
|
12
|
+
*
|
|
13
|
+
* @param context - The media context to consume.
|
|
14
|
+
*/
|
|
15
|
+
declare function createMediaAttachMixin(context: MediaContext): MediaAttachMixin;
|
|
16
|
+
declare const MediaAttachMixin: MediaAttachMixin;
|
|
17
|
+
//#endregion
|
|
18
|
+
export { MediaAttachMixin, createMediaAttachMixin };
|
|
19
|
+
//# sourceMappingURL=media-attach-mixin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media-attach-mixin.d.ts","names":[],"sources":["../../../src/store/media-attach-mixin.ts"],"mappings":";;;;KAMY,gBAAA,kBAAkC,cAAA,CAAe,WAAA,GAAc,SAAA,EAAW,KAAA,KAAU,KAAA;;AAAhG;;;;;;;;iBAWgB,sBAAA,CAAuB,OAAA,EAAS,YAAA,GAAe,gBAAA;AAAA,cA0ClD,gBAAA,EAAgB,gBAAA"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { mediaContext } from "../player/context.js";
|
|
2
|
+
import { ContextEvent } from "@videojs/element/context";
|
|
3
|
+
|
|
4
|
+
//#region src/store/media-attach-mixin.ts
|
|
5
|
+
/**
|
|
6
|
+
* Create a mixin that consumes `mediaContext` and registers the
|
|
7
|
+
* element as the media with the provider.
|
|
8
|
+
*
|
|
9
|
+
* Uses the raw context-request protocol so it works with any
|
|
10
|
+
* `HTMLElement` subclass — no `ReactiveControllerHost` required.
|
|
11
|
+
*
|
|
12
|
+
* @param context - The media context to consume.
|
|
13
|
+
*/
|
|
14
|
+
function createMediaAttachMixin(context) {
|
|
15
|
+
return (BaseClass) => {
|
|
16
|
+
class MediaAttachElement extends BaseClass {
|
|
17
|
+
#setMedia = null;
|
|
18
|
+
#unsubscribe = null;
|
|
19
|
+
getMediaTarget() {
|
|
20
|
+
return this;
|
|
21
|
+
}
|
|
22
|
+
connectedCallback() {
|
|
23
|
+
super.connectedCallback?.();
|
|
24
|
+
this.dispatchEvent(new ContextEvent(context, this, (value, unsubscribe) => {
|
|
25
|
+
if (unsubscribe) this.#unsubscribe = unsubscribe;
|
|
26
|
+
this.#setMedia = value?.setMedia ?? null;
|
|
27
|
+
if (this.isConnected) this.#setMedia?.(this.getMediaTarget());
|
|
28
|
+
}, true));
|
|
29
|
+
}
|
|
30
|
+
disconnectedCallback() {
|
|
31
|
+
super.disconnectedCallback?.();
|
|
32
|
+
this.#setMedia?.(null);
|
|
33
|
+
this.#unsubscribe?.();
|
|
34
|
+
this.#unsubscribe = null;
|
|
35
|
+
this.#setMedia = null;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return MediaAttachElement;
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
const MediaAttachMixin = createMediaAttachMixin(mediaContext);
|
|
42
|
+
|
|
43
|
+
//#endregion
|
|
44
|
+
export { MediaAttachMixin, createMediaAttachMixin };
|
|
45
|
+
//# sourceMappingURL=media-attach-mixin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media-attach-mixin.js","names":["#unsubscribe","#setMedia"],"sources":["../../../src/store/media-attach-mixin.ts"],"sourcesContent":["import type { Media } from '@videojs/core/dom';\nimport { ContextEvent } from '@videojs/element/context';\nimport type { CustomElement } from '@videojs/utils/dom';\nimport type { AnyConstructor, Constructor } from '@videojs/utils/types';\nimport { type MediaContext, mediaContext } from '../player/context';\n\nexport type MediaAttachMixin = <Class extends AnyConstructor<HTMLElement>>(BaseClass: Class) => Class;\n\n/**\n * Create a mixin that consumes `mediaContext` and registers the\n * element as the media with the provider.\n *\n * Uses the raw context-request protocol so it works with any\n * `HTMLElement` subclass — no `ReactiveControllerHost` required.\n *\n * @param context - The media context to consume.\n */\nexport function createMediaAttachMixin(context: MediaContext): MediaAttachMixin {\n return <Class extends AnyConstructor<HTMLElement>>(BaseClass: Class) => {\n class MediaAttachElement extends (BaseClass as unknown as Constructor<CustomElement>) {\n #setMedia: ((media: Media | null) => void) | null = null;\n #unsubscribe: (() => void) | null = null;\n\n getMediaTarget(): Media | null {\n return this as unknown as Media;\n }\n\n override connectedCallback() {\n super.connectedCallback?.();\n\n this.dispatchEvent(\n new ContextEvent(\n context,\n this,\n (value, unsubscribe) => {\n if (unsubscribe) this.#unsubscribe = unsubscribe;\n this.#setMedia = value?.setMedia ?? null;\n if (this.isConnected) {\n this.#setMedia?.(this.getMediaTarget());\n }\n },\n true\n )\n );\n }\n\n override disconnectedCallback() {\n super.disconnectedCallback?.();\n this.#setMedia?.(null);\n this.#unsubscribe?.();\n this.#unsubscribe = null;\n this.#setMedia = null;\n }\n }\n\n return MediaAttachElement as unknown as Class;\n };\n}\n\nexport const MediaAttachMixin = createMediaAttachMixin(mediaContext);\n"],"mappings":";;;;;;;;;;;;;AAiBA,SAAgB,uBAAuB,SAAyC;AAC9E,SAAmD,cAAqB;EACtE,MAAM,2BAA4B,UAAoD;GACpF,YAAoD;GACpD,eAAoC;GAEpC,iBAA+B;AAC7B,WAAO;;GAGT,AAAS,oBAAoB;AAC3B,UAAM,qBAAqB;AAE3B,SAAK,cACH,IAAI,aACF,SACA,OACC,OAAO,gBAAgB;AACtB,SAAI,YAAa,OAAKA,cAAe;AACrC,WAAKC,WAAY,OAAO,YAAY;AACpC,SAAI,KAAK,YACP,OAAKA,WAAY,KAAK,gBAAgB,CAAC;OAG3C,KACD,CACF;;GAGH,AAAS,uBAAuB;AAC9B,UAAM,wBAAwB;AAC9B,UAAKA,WAAY,KAAK;AACtB,UAAKD,eAAgB;AACrB,UAAKA,cAAe;AACpB,UAAKC,WAAY;;;AAIrB,SAAO;;;AAIX,MAAa,mBAAmB,uBAAuB,aAAa"}
|
|
@@ -1,17 +1,30 @@
|
|
|
1
|
+
import { ContainerContext, MediaContext, PlayerContext } from "../player/context.js";
|
|
1
2
|
import { MediaElementConstructor } from "../ui/media-element.js";
|
|
2
|
-
import { PlayerContext } from "../player/context.js";
|
|
3
3
|
import { PlayerProviderConstructor } from "./types.js";
|
|
4
4
|
import { PlayerStore } from "@videojs/core/dom";
|
|
5
5
|
|
|
6
6
|
//#region src/store/provider-mixin.d.ts
|
|
7
|
+
interface ProviderMixinConfig<Store extends PlayerStore> {
|
|
8
|
+
playerContext: PlayerContext<Store>;
|
|
9
|
+
mediaContext: MediaContext;
|
|
10
|
+
containerContext: ContainerContext;
|
|
11
|
+
factory: () => Store;
|
|
12
|
+
}
|
|
7
13
|
type ProviderMixin<Store extends PlayerStore> = <Class extends MediaElementConstructor>(BaseClass: Class) => Class & PlayerProviderConstructor<Store>;
|
|
8
14
|
/**
|
|
9
|
-
* Create a mixin that provides player context to descendant elements
|
|
15
|
+
* Create a mixin that provides player context to descendant elements and
|
|
16
|
+
* owns the `store.attach()` lifecycle.
|
|
10
17
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
18
|
+
* Media and container elements register themselves via media/container
|
|
19
|
+
* contexts that carry both the current value and a setter. When a media
|
|
20
|
+
* element is available, the provider calls `store.attach({ media, container })`.
|
|
21
|
+
*
|
|
22
|
+
* As a fallback for plain `<video>`/`<audio>` that can't consume context,
|
|
23
|
+
* the provider queries its subtree after a microtask.
|
|
24
|
+
*
|
|
25
|
+
* @param config - Provider configuration with contexts and store factory.
|
|
13
26
|
*/
|
|
14
|
-
declare function createProviderMixin<Store extends PlayerStore>(
|
|
27
|
+
declare function createProviderMixin<Store extends PlayerStore>(config: ProviderMixinConfig<Store>): ProviderMixin<Store>;
|
|
15
28
|
//#endregion
|
|
16
|
-
export { ProviderMixin, createProviderMixin };
|
|
29
|
+
export { ProviderMixin, ProviderMixinConfig, createProviderMixin };
|
|
17
30
|
//# sourceMappingURL=provider-mixin.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-mixin.d.ts","names":[],"sources":["../../../src/store/provider-mixin.ts"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"provider-mixin.d.ts","names":[],"sources":["../../../src/store/provider-mixin.ts"],"mappings":";;;;;;UAOiB,mBAAA,eAAkC,WAAA;EACjD,aAAA,EAAe,aAAA,CAAc,KAAA;EAC7B,YAAA,EAAc,YAAA;EACd,gBAAA,EAAkB,gBAAA;EAClB,OAAA,QAAe,KAAA;AAAA;AAAA,KAGL,aAAA,eAA4B,WAAA,mBAA8B,uBAAA,EACpE,SAAA,EAAW,KAAA,KACR,KAAA,GAAQ,yBAAA,CAA0B,KAAA;;;;;;;;;;;;;;iBAevB,mBAAA,eAAkC,WAAA,CAAA,CAChD,MAAA,EAAQ,mBAAA,CAAoB,KAAA,IAC3B,aAAA,CAAc,KAAA"}
|
|
@@ -3,32 +3,122 @@ import { isNull } from "@videojs/utils/predicate";
|
|
|
3
3
|
|
|
4
4
|
//#region src/store/provider-mixin.ts
|
|
5
5
|
/**
|
|
6
|
-
* Create a mixin that provides player context to descendant elements
|
|
6
|
+
* Create a mixin that provides player context to descendant elements and
|
|
7
|
+
* owns the `store.attach()` lifecycle.
|
|
7
8
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
9
|
+
* Media and container elements register themselves via media/container
|
|
10
|
+
* contexts that carry both the current value and a setter. When a media
|
|
11
|
+
* element is available, the provider calls `store.attach({ media, container })`.
|
|
12
|
+
*
|
|
13
|
+
* As a fallback for plain `<video>`/`<audio>` that can't consume context,
|
|
14
|
+
* the provider queries its subtree after a microtask.
|
|
15
|
+
*
|
|
16
|
+
* @param config - Provider configuration with contexts and store factory.
|
|
10
17
|
*/
|
|
11
|
-
function createProviderMixin(
|
|
18
|
+
function createProviderMixin(config) {
|
|
12
19
|
return (BaseClass) => {
|
|
13
20
|
class PlayerProviderElement extends BaseClass {
|
|
14
|
-
#store = factory();
|
|
15
|
-
#
|
|
16
|
-
|
|
21
|
+
#store = config.factory();
|
|
22
|
+
#detach = null;
|
|
23
|
+
#media = null;
|
|
24
|
+
#container = null;
|
|
25
|
+
#fallbackQueued = false;
|
|
26
|
+
#setMedia = (media) => {
|
|
27
|
+
if (this.#media === media) return;
|
|
28
|
+
this.#media = media;
|
|
29
|
+
this.#mediaProvider.setValue({
|
|
30
|
+
media,
|
|
31
|
+
setMedia: this.#setMedia
|
|
32
|
+
});
|
|
33
|
+
this.#tryAttach();
|
|
34
|
+
};
|
|
35
|
+
#setContainer = (container) => {
|
|
36
|
+
if (this.#container === container) return;
|
|
37
|
+
this.#container = container;
|
|
38
|
+
this.#containerProvider.setValue({
|
|
39
|
+
container,
|
|
40
|
+
setContainer: this.#setContainer
|
|
41
|
+
});
|
|
42
|
+
this.#tryAttach();
|
|
43
|
+
};
|
|
44
|
+
#playerProvider = new ContextProvider(this, {
|
|
45
|
+
context: config.playerContext,
|
|
17
46
|
initialValue: this.store
|
|
18
47
|
});
|
|
48
|
+
#mediaProvider = new ContextProvider(this, {
|
|
49
|
+
context: config.mediaContext,
|
|
50
|
+
initialValue: {
|
|
51
|
+
media: this.#media,
|
|
52
|
+
setMedia: this.#setMedia
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
#containerProvider = new ContextProvider(this, {
|
|
56
|
+
context: config.containerContext,
|
|
57
|
+
initialValue: {
|
|
58
|
+
container: this.#container,
|
|
59
|
+
setContainer: this.#setContainer
|
|
60
|
+
}
|
|
61
|
+
});
|
|
19
62
|
get store() {
|
|
20
|
-
if (isNull(this.#store)) this.#store = factory();
|
|
63
|
+
if (isNull(this.#store)) this.#store = config.factory();
|
|
21
64
|
return this.#store;
|
|
22
65
|
}
|
|
23
66
|
connectedCallback() {
|
|
24
67
|
super.connectedCallback();
|
|
25
|
-
this.#
|
|
68
|
+
this.#playerProvider.setValue(this.store);
|
|
69
|
+
this.#mediaProvider.setValue({
|
|
70
|
+
media: this.#media,
|
|
71
|
+
setMedia: this.#setMedia
|
|
72
|
+
});
|
|
73
|
+
this.#containerProvider.setValue({
|
|
74
|
+
container: this.#container,
|
|
75
|
+
setContainer: this.#setContainer
|
|
76
|
+
});
|
|
77
|
+
this.#tryAttach();
|
|
78
|
+
this.#queueFallbackDiscovery();
|
|
79
|
+
}
|
|
80
|
+
disconnectedCallback() {
|
|
81
|
+
super.disconnectedCallback();
|
|
82
|
+
this.#detachStore();
|
|
26
83
|
}
|
|
27
84
|
destroyCallback() {
|
|
85
|
+
this.#detachStore();
|
|
28
86
|
this.#store?.destroy();
|
|
29
87
|
this.#store = null;
|
|
30
88
|
super.destroyCallback();
|
|
31
89
|
}
|
|
90
|
+
#tryAttach() {
|
|
91
|
+
const store = this.#store;
|
|
92
|
+
if (!store) return;
|
|
93
|
+
if (!this.#media) {
|
|
94
|
+
this.#detachStore();
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
const target = {
|
|
98
|
+
media: this.#media,
|
|
99
|
+
container: this.#container
|
|
100
|
+
};
|
|
101
|
+
const hasMediaChanged = store.target?.media !== target.media;
|
|
102
|
+
const hasContainerChanged = store.target?.container !== target.container;
|
|
103
|
+
if (hasMediaChanged || hasContainerChanged) {
|
|
104
|
+
this.#detachStore();
|
|
105
|
+
this.#detach = store.attach(target);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
#detachStore() {
|
|
109
|
+
this.#detach?.();
|
|
110
|
+
this.#detach = null;
|
|
111
|
+
}
|
|
112
|
+
#queueFallbackDiscovery() {
|
|
113
|
+
if (this.#media || this.#fallbackQueued) return;
|
|
114
|
+
this.#fallbackQueued = true;
|
|
115
|
+
queueMicrotask(() => {
|
|
116
|
+
this.#fallbackQueued = false;
|
|
117
|
+
if (this.#media) return;
|
|
118
|
+
const media = this.querySelector("video, audio");
|
|
119
|
+
if (media) this.#setMedia(media);
|
|
120
|
+
});
|
|
121
|
+
}
|
|
32
122
|
}
|
|
33
123
|
return PlayerProviderElement;
|
|
34
124
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-mixin.js","names":["#store","#
|
|
1
|
+
{"version":3,"file":"provider-mixin.js","names":["#media","#mediaProvider","#setMedia","#tryAttach","#container","#containerProvider","#setContainer","#store","#playerProvider","#queueFallbackDiscovery","#detachStore","#detach","#fallbackQueued"],"sources":["../../../src/store/provider-mixin.ts"],"sourcesContent":["import type { Media, MediaContainer, PlayerStore, PlayerTarget } from '@videojs/core/dom';\nimport { ContextProvider } from '@videojs/element/context';\nimport { isNull } from '@videojs/utils/predicate';\nimport type { MediaElementConstructor } from '@/ui/media-element';\nimport type { ContainerContext, MediaContext, PlayerContext } from '../player/context';\nimport type { PlayerProvider, PlayerProviderConstructor } from './types';\n\nexport interface ProviderMixinConfig<Store extends PlayerStore> {\n playerContext: PlayerContext<Store>;\n mediaContext: MediaContext;\n containerContext: ContainerContext;\n factory: () => Store;\n}\n\nexport type ProviderMixin<Store extends PlayerStore> = <Class extends MediaElementConstructor>(\n BaseClass: Class\n) => Class & PlayerProviderConstructor<Store>;\n\n/**\n * Create a mixin that provides player context to descendant elements and\n * owns the `store.attach()` lifecycle.\n *\n * Media and container elements register themselves via media/container\n * contexts that carry both the current value and a setter. When a media\n * element is available, the provider calls `store.attach({ media, container })`.\n *\n * As a fallback for plain `<video>`/`<audio>` that can't consume context,\n * the provider queries its subtree after a microtask.\n *\n * @param config - Provider configuration with contexts and store factory.\n */\nexport function createProviderMixin<Store extends PlayerStore>(\n config: ProviderMixinConfig<Store>\n): ProviderMixin<Store> {\n return <Class extends MediaElementConstructor>(BaseClass: Class) => {\n class PlayerProviderElement extends BaseClass implements PlayerProvider<Store> {\n #store: Store | null = config.factory();\n #detach: (() => void) | null = null;\n #media: Media | null = null;\n #container: MediaContainer | null = null;\n #fallbackQueued = false;\n\n #setMedia = (media: Media | null): void => {\n if (this.#media === media) return;\n this.#media = media;\n this.#mediaProvider.setValue({ media, setMedia: this.#setMedia });\n this.#tryAttach();\n };\n\n #setContainer = (container: MediaContainer | null): void => {\n if (this.#container === container) return;\n this.#container = container;\n this.#containerProvider.setValue({ container, setContainer: this.#setContainer });\n this.#tryAttach();\n };\n\n #playerProvider = new ContextProvider(this, {\n context: config.playerContext,\n initialValue: this.store,\n });\n\n #mediaProvider = new ContextProvider(this, {\n context: config.mediaContext,\n initialValue: { media: this.#media, setMedia: this.#setMedia },\n });\n\n #containerProvider = new ContextProvider(this, {\n context: config.containerContext,\n initialValue: { container: this.#container, setContainer: this.#setContainer },\n });\n\n get store(): Store {\n if (isNull(this.#store)) {\n this.#store = config.factory();\n }\n\n return this.#store;\n }\n\n override connectedCallback() {\n super.connectedCallback();\n this.#playerProvider.setValue(this.store);\n this.#mediaProvider.setValue({ media: this.#media, setMedia: this.#setMedia });\n this.#containerProvider.setValue({ container: this.#container, setContainer: this.#setContainer });\n this.#tryAttach();\n this.#queueFallbackDiscovery();\n }\n\n override disconnectedCallback() {\n super.disconnectedCallback();\n this.#detachStore();\n }\n\n override destroyCallback() {\n this.#detachStore();\n this.#store?.destroy();\n this.#store = null;\n super.destroyCallback();\n }\n\n #tryAttach(): void {\n const store = this.#store;\n if (!store) return;\n\n if (!this.#media) {\n this.#detachStore();\n return;\n }\n\n const target: PlayerTarget = {\n media: this.#media,\n container: this.#container,\n };\n\n const hasMediaChanged = store.target?.media !== target.media;\n const hasContainerChanged = store.target?.container !== target.container;\n\n if (hasMediaChanged || hasContainerChanged) {\n this.#detachStore();\n this.#detach = store.attach(target);\n }\n }\n\n #detachStore(): void {\n this.#detach?.();\n this.#detach = null;\n }\n\n #queueFallbackDiscovery(): void {\n if (this.#media || this.#fallbackQueued) return;\n this.#fallbackQueued = true;\n\n queueMicrotask(() => {\n this.#fallbackQueued = false;\n\n // Context already registered media — skip fallback.\n if (this.#media) return;\n\n const media = this.querySelector<HTMLMediaElement>('video, audio');\n if (media) {\n this.#setMedia(media);\n }\n });\n }\n }\n\n return PlayerProviderElement;\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AA+BA,SAAgB,oBACd,QACsB;AACtB,SAA+C,cAAqB;EAClE,MAAM,8BAA8B,UAA2C;GAC7E,SAAuB,OAAO,SAAS;GACvC,UAA+B;GAC/B,SAAuB;GACvB,aAAoC;GACpC,kBAAkB;GAElB,aAAa,UAA8B;AACzC,QAAI,MAAKA,UAAW,MAAO;AAC3B,UAAKA,QAAS;AACd,UAAKC,cAAe,SAAS;KAAE;KAAO,UAAU,MAAKC;KAAW,CAAC;AACjE,UAAKC,WAAY;;GAGnB,iBAAiB,cAA2C;AAC1D,QAAI,MAAKC,cAAe,UAAW;AACnC,UAAKA,YAAa;AAClB,UAAKC,kBAAmB,SAAS;KAAE;KAAW,cAAc,MAAKC;KAAe,CAAC;AACjF,UAAKH,WAAY;;GAGnB,kBAAkB,IAAI,gBAAgB,MAAM;IAC1C,SAAS,OAAO;IAChB,cAAc,KAAK;IACpB,CAAC;GAEF,iBAAiB,IAAI,gBAAgB,MAAM;IACzC,SAAS,OAAO;IAChB,cAAc;KAAE,OAAO,MAAKH;KAAQ,UAAU,MAAKE;KAAW;IAC/D,CAAC;GAEF,qBAAqB,IAAI,gBAAgB,MAAM;IAC7C,SAAS,OAAO;IAChB,cAAc;KAAE,WAAW,MAAKE;KAAY,cAAc,MAAKE;KAAe;IAC/E,CAAC;GAEF,IAAI,QAAe;AACjB,QAAI,OAAO,MAAKC,MAAO,CACrB,OAAKA,QAAS,OAAO,SAAS;AAGhC,WAAO,MAAKA;;GAGd,AAAS,oBAAoB;AAC3B,UAAM,mBAAmB;AACzB,UAAKC,eAAgB,SAAS,KAAK,MAAM;AACzC,UAAKP,cAAe,SAAS;KAAE,OAAO,MAAKD;KAAQ,UAAU,MAAKE;KAAW,CAAC;AAC9E,UAAKG,kBAAmB,SAAS;KAAE,WAAW,MAAKD;KAAY,cAAc,MAAKE;KAAe,CAAC;AAClG,UAAKH,WAAY;AACjB,UAAKM,wBAAyB;;GAGhC,AAAS,uBAAuB;AAC9B,UAAM,sBAAsB;AAC5B,UAAKC,aAAc;;GAGrB,AAAS,kBAAkB;AACzB,UAAKA,aAAc;AACnB,UAAKH,OAAQ,SAAS;AACtB,UAAKA,QAAS;AACd,UAAM,iBAAiB;;GAGzB,aAAmB;IACjB,MAAM,QAAQ,MAAKA;AACnB,QAAI,CAAC,MAAO;AAEZ,QAAI,CAAC,MAAKP,OAAQ;AAChB,WAAKU,aAAc;AACnB;;IAGF,MAAM,SAAuB;KAC3B,OAAO,MAAKV;KACZ,WAAW,MAAKI;KACjB;IAED,MAAM,kBAAkB,MAAM,QAAQ,UAAU,OAAO;IACvD,MAAM,sBAAsB,MAAM,QAAQ,cAAc,OAAO;AAE/D,QAAI,mBAAmB,qBAAqB;AAC1C,WAAKM,aAAc;AACnB,WAAKC,SAAU,MAAM,OAAO,OAAO;;;GAIvC,eAAqB;AACnB,UAAKA,UAAW;AAChB,UAAKA,SAAU;;GAGjB,0BAAgC;AAC9B,QAAI,MAAKX,SAAU,MAAKY,eAAiB;AACzC,UAAKA,iBAAkB;AAEvB,yBAAqB;AACnB,WAAKA,iBAAkB;AAGvB,SAAI,MAAKZ,MAAQ;KAEjB,MAAM,QAAQ,KAAK,cAAgC,eAAe;AAClE,SAAI,MACF,OAAKE,SAAU,MAAM;MAEvB;;;AAIN,SAAO"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"popover-element.d.ts","names":[],"sources":["../../../../src/ui/popover/popover-element.ts"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"popover-element.d.ts","names":[],"sources":["../../../../src/ui/popover/popover-element.ts"],"mappings":";;;;;;cAmBa,cAAA,SAAuB,YAAA;EAAA;kBAClB,OAAA;EAAA,OAEA,UAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAahB,IAAA;EACA,WAAA;EACA,IAAA,iBAAI,WAAA;EACJ,KAAA,EADI,cAAA,CACC,YAAA;EACL,KAAA,EAAO,YAAA;EACP,aAAA;EACA,mBAAA;EACA,WAAA;EACA,KAAA;EACA,UAAA;EAeS,iBAAA,CAAA;EAAA,UAmCU,YAAA,CAAa,OAAA,EAAS,cAAA;EAUhC,oBAAA,CAAA;EAOA,eAAA,CAAA;EAAA,UAOU,UAAA,CAAW,OAAA,EAAS,cAAA;EAAA,UAiBpB,MAAA,CAAO,QAAA,EAAU,cAAA;AAAA"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { MediaElement } from "../media-element.js";
|
|
2
|
-
import { applyElementProps, applyStateDataAttrs, createPopover, createTransition, getAnchorNameStyle, getAnchorPositionStyle, resolveOffsets } from "@videojs/core/dom";
|
|
2
|
+
import { applyElementProps, applyStateDataAttrs, createPopover, createTransition, getAnchorNameStyle, getAnchorPositionStyle, getPopupPositionRect, resolveOffsets } from "@videojs/core/dom";
|
|
3
3
|
import { SnapshotController } from "@videojs/store/html";
|
|
4
4
|
import { PopoverCore, PopoverDataAttrs } from "@videojs/core";
|
|
5
|
-
import { applyStyles, supportsAnchorPositioning } from "@videojs/utils/dom";
|
|
5
|
+
import { applyStyles, supportsAnchorPositioning, tryHidePopover, tryShowPopover } from "@videojs/utils/dom";
|
|
6
6
|
|
|
7
7
|
//#region src/ui/popover/popover-element.ts
|
|
8
8
|
var PopoverElement = class extends MediaElement {
|
|
@@ -57,6 +57,10 @@ var PopoverElement = class extends MediaElement {
|
|
|
57
57
|
#disconnect = null;
|
|
58
58
|
#triggerAbort = null;
|
|
59
59
|
#currentTrigger = null;
|
|
60
|
+
#positionAbort = null;
|
|
61
|
+
#positionFrame = 0;
|
|
62
|
+
#resizeObserver = null;
|
|
63
|
+
#positionTrigger = null;
|
|
60
64
|
connectedCallback() {
|
|
61
65
|
super.connectedCallback();
|
|
62
66
|
if (this.destroyed) return;
|
|
@@ -87,10 +91,12 @@ var PopoverElement = class extends MediaElement {
|
|
|
87
91
|
}
|
|
88
92
|
disconnectedCallback() {
|
|
89
93
|
super.disconnectedCallback();
|
|
94
|
+
this.#cleanupPositioning();
|
|
90
95
|
this.#disconnect?.abort();
|
|
91
96
|
this.#disconnect = null;
|
|
92
97
|
}
|
|
93
98
|
destroyCallback() {
|
|
99
|
+
this.#cleanupPositioning();
|
|
94
100
|
this.#cleanupTrigger();
|
|
95
101
|
this.#popover?.destroy();
|
|
96
102
|
super.destroyCallback();
|
|
@@ -114,11 +120,16 @@ var PopoverElement = class extends MediaElement {
|
|
|
114
120
|
const state = this.#core.getState();
|
|
115
121
|
applyElementProps(this, this.#core.getPopupAttrs(state));
|
|
116
122
|
applyStateDataAttrs(this, state, PopoverDataAttrs);
|
|
123
|
+
if (state.open) tryShowPopover(this);
|
|
124
|
+
else tryHidePopover(this);
|
|
117
125
|
if (this.#currentTrigger) {
|
|
118
126
|
applyElementProps(this.#currentTrigger, this.#core.getTriggerAttrs(state, this.id));
|
|
119
127
|
applyStyles(this.#currentTrigger, getAnchorNameStyle(this.id));
|
|
120
128
|
}
|
|
121
|
-
if (!state.open)
|
|
129
|
+
if (!state.open) {
|
|
130
|
+
this.#cleanupPositioning();
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
122
133
|
const posOpts = {
|
|
123
134
|
side: state.side,
|
|
124
135
|
align: state.align
|
|
@@ -126,11 +137,12 @@ var PopoverElement = class extends MediaElement {
|
|
|
126
137
|
if (supportsAnchorPositioning()) applyStyles(this, getAnchorPositionStyle(this.id, posOpts));
|
|
127
138
|
else {
|
|
128
139
|
const triggerRect = this.#currentTrigger?.getBoundingClientRect();
|
|
129
|
-
const selfRect = this
|
|
140
|
+
const selfRect = getPopupPositionRect(this);
|
|
130
141
|
const boundaryRect = document.documentElement.getBoundingClientRect();
|
|
131
142
|
const offsets = resolveOffsets(this);
|
|
132
143
|
applyStyles(this, getAnchorPositionStyle(this.id, posOpts, triggerRect, selfRect, boundaryRect, offsets));
|
|
133
144
|
}
|
|
145
|
+
this.#syncPositioning();
|
|
134
146
|
}
|
|
135
147
|
#findTrigger() {
|
|
136
148
|
if (!this.id) return null;
|
|
@@ -138,6 +150,7 @@ var PopoverElement = class extends MediaElement {
|
|
|
138
150
|
}
|
|
139
151
|
#syncTrigger(triggerEl) {
|
|
140
152
|
if (triggerEl === this.#currentTrigger) return;
|
|
153
|
+
this.#cleanupPositioning();
|
|
141
154
|
this.#cleanupTrigger();
|
|
142
155
|
this.#currentTrigger = triggerEl;
|
|
143
156
|
this.#popover?.setTriggerElement(triggerEl);
|
|
@@ -159,6 +172,46 @@ var PopoverElement = class extends MediaElement {
|
|
|
159
172
|
this.#triggerAbort = null;
|
|
160
173
|
this.#currentTrigger = null;
|
|
161
174
|
}
|
|
175
|
+
#syncPositioning() {
|
|
176
|
+
if (supportsAnchorPositioning()) return;
|
|
177
|
+
const triggerEl = this.#currentTrigger;
|
|
178
|
+
if (!triggerEl) return;
|
|
179
|
+
if (this.#positionAbort && this.#positionTrigger === triggerEl) return;
|
|
180
|
+
this.#cleanupPositioning();
|
|
181
|
+
this.#positionAbort = new AbortController();
|
|
182
|
+
this.#positionTrigger = triggerEl;
|
|
183
|
+
const { signal } = this.#positionAbort;
|
|
184
|
+
const reposition = () => {
|
|
185
|
+
cancelAnimationFrame(this.#positionFrame);
|
|
186
|
+
this.#positionFrame = requestAnimationFrame(() => {
|
|
187
|
+
if (signal.aborted) return;
|
|
188
|
+
this.requestUpdate();
|
|
189
|
+
});
|
|
190
|
+
};
|
|
191
|
+
window.addEventListener("scroll", reposition, {
|
|
192
|
+
capture: true,
|
|
193
|
+
passive: true,
|
|
194
|
+
signal
|
|
195
|
+
});
|
|
196
|
+
window.addEventListener("resize", reposition, { signal });
|
|
197
|
+
if (typeof ResizeObserver === "function") {
|
|
198
|
+
this.#resizeObserver = new ResizeObserver(() => {
|
|
199
|
+
reposition();
|
|
200
|
+
});
|
|
201
|
+
this.#resizeObserver.observe(triggerEl);
|
|
202
|
+
this.#resizeObserver.observe(this);
|
|
203
|
+
}
|
|
204
|
+
reposition();
|
|
205
|
+
}
|
|
206
|
+
#cleanupPositioning() {
|
|
207
|
+
this.#positionAbort?.abort();
|
|
208
|
+
this.#positionAbort = null;
|
|
209
|
+
this.#positionTrigger = null;
|
|
210
|
+
cancelAnimationFrame(this.#positionFrame);
|
|
211
|
+
this.#positionFrame = 0;
|
|
212
|
+
this.#resizeObserver?.disconnect();
|
|
213
|
+
this.#resizeObserver = null;
|
|
214
|
+
}
|
|
162
215
|
};
|
|
163
216
|
|
|
164
217
|
//#endregion
|