@videojs/html 10.0.0-beta.17 → 10.0.0-beta.21
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-DGNIECLn.js → abort-C9UiBdVU.js} +1 -1
- package/cdn/{abort-DGNIECLn.js.map → abort-C9UiBdVU.js.map} +1 -1
- package/cdn/{abort-BL-SGV3o.js → abort-DsTff8mS.js} +1 -1
- package/cdn/{abort-BL-SGV3o.js.map → abort-DsTff8mS.js.map} +1 -1
- package/cdn/audio-minimal-ui.dev.js +4 -4
- package/cdn/audio-minimal-ui.js +1 -1
- package/cdn/audio-minimal.dev.js +7 -7
- package/cdn/audio-minimal.js +1 -1
- package/cdn/audio-ui.dev.js +4 -4
- package/cdn/audio-ui.js +1 -1
- package/cdn/audio.dev.js +6 -6
- package/cdn/audio.js +1 -1
- package/cdn/background.dev.js +4 -12
- package/cdn/background.dev.js.map +1 -1
- package/cdn/background.js +1 -1
- package/cdn/background.js.map +1 -1
- package/cdn/{compounds-VFPcCeRV.js → compounds-CM_NP-ej.js} +7 -35
- package/cdn/compounds-CM_NP-ej.js.map +1 -0
- package/cdn/compounds-Vvz-YfXP.js +8 -0
- package/cdn/{compounds-Df_1JbZD.js.map → compounds-Vvz-YfXP.js.map} +1 -1
- package/cdn/{context-CvJ83xGk.js → context-0rI_P6jf.js} +1 -1
- package/cdn/{context-CvJ83xGk.js.map → context-0rI_P6jf.js.map} +1 -1
- package/cdn/{context-C-IpVHEt.js → context-CEFisYD0.js} +1 -1
- package/cdn/{context-C-IpVHEt.js.map → context-CEFisYD0.js.map} +1 -1
- package/cdn/{create-player-CyG77t-m.js → create-player-Bi6WUwDZ.js} +140 -99
- package/cdn/create-player-Bi6WUwDZ.js.map +1 -0
- package/cdn/create-player-CKuX8YI5.js +7 -0
- package/cdn/create-player-CKuX8YI5.js.map +1 -0
- package/cdn/{hls-BrzPpueW.js → hls-BotloEPN.js} +25 -22
- package/cdn/hls-BotloEPN.js.map +1 -0
- package/cdn/hls-CBpGTZXU.js +41 -0
- package/cdn/hls-CBpGTZXU.js.map +1 -0
- package/cdn/{hotkey-element-Dlta37Be.js → hotkey-element-317kwVH5.js} +5 -5
- package/cdn/{hotkey-element-Dlta37Be.js.map → hotkey-element-317kwVH5.js.map} +1 -1
- package/cdn/{hotkey-element-DR3ZAqKa.js → hotkey-element-DRGCbVj9.js} +2 -2
- package/cdn/{hotkey-element-DR3ZAqKa.js.map → hotkey-element-DRGCbVj9.js.map} +1 -1
- package/cdn/{listen-w-Aun0yN.js → listen-CJT7C4kM.js} +1 -1
- package/cdn/{listen-w-Aun0yN.js.map → listen-CJT7C4kM.js.map} +1 -1
- package/cdn/{listen-D7fcau5d.js → listen-DFX-0NbX.js} +1 -1
- package/cdn/{listen-D7fcau5d.js.map → listen-DFX-0NbX.js.map} +1 -1
- package/cdn/media/dash-video.dev.js +16 -22
- package/cdn/media/dash-video.dev.js.map +1 -1
- package/cdn/media/dash-video.js +3 -3
- package/cdn/media/dash-video.js.map +1 -1
- package/cdn/media/hls-video.dev.js +12 -12
- package/cdn/media/hls-video.dev.js.map +1 -1
- package/cdn/media/hls-video.js +1 -1
- package/cdn/media/hls-video.js.map +1 -1
- package/cdn/media/mux-audio.dev.js +13 -13
- 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 +13 -13
- 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 +5 -14
- package/cdn/media/native-hls-video.dev.js.map +1 -1
- 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 +83 -85
- package/cdn/media/simple-hls-video.dev.js.map +1 -1
- package/cdn/media/simple-hls-video.js +7 -7
- package/cdn/media/simple-hls-video.js.map +1 -1
- package/cdn/media-attach-mixin-C2wz0Qbd.js +2 -0
- package/cdn/media-attach-mixin-C2wz0Qbd.js.map +1 -0
- package/cdn/{media-attach-mixin-CMH1ziXP.js → media-attach-mixin-CYoNe7Sh.js} +26 -3
- package/cdn/media-attach-mixin-CYoNe7Sh.js.map +1 -0
- package/cdn/{minimal-D9Dw-L2P.js → minimal-BnDnlwbj.js} +1 -1
- package/cdn/{minimal-D9Dw-L2P.js.map → minimal-BnDnlwbj.js.map} +1 -1
- package/cdn/{minimal-Dc5nNl_-.js → minimal-CqBxBoLe.js} +1 -1
- package/cdn/{minimal-Dc5nNl_-.js.map → minimal-CqBxBoLe.js.map} +1 -1
- package/cdn/minimal-ui-C_G24FML.js +2 -0
- package/cdn/{minimal-ui-B3BBK5nX.js.map → minimal-ui-C_G24FML.js.map} +1 -1
- package/cdn/minimal-ui-CroDYUGf.js +2 -0
- package/cdn/{minimal-ui-DOePmQfq.js.map → minimal-ui-CroDYUGf.js.map} +1 -1
- package/cdn/{minimal-ui-Cnaig4X6.js → minimal-ui-DhxN21v5.js} +5 -5
- package/cdn/{minimal-ui-Cnaig4X6.js.map → minimal-ui-DhxN21v5.js.map} +1 -1
- package/cdn/{minimal-ui-CPRSYky_.js → minimal-ui-cy2oEbFm.js} +5 -5
- package/cdn/{minimal-ui-CPRSYky_.js.map → minimal-ui-cy2oEbFm.js.map} +1 -1
- package/cdn/{mux-DGgCyz_A.js → mux-B5K6kOzg.js} +115 -145
- package/cdn/mux-B5K6kOzg.js.map +1 -0
- package/cdn/mux-DJhfbcCw.js +25 -0
- package/cdn/mux-DJhfbcCw.js.map +1 -0
- package/cdn/{native-hls-BuCYu7Rd.js → native-hls-CU2F7L5C.js} +20 -22
- package/cdn/native-hls-CU2F7L5C.js.map +1 -0
- package/cdn/native-hls-DKcYYWRt.js +2 -0
- package/cdn/native-hls-DKcYYWRt.js.map +1 -0
- package/cdn/pick-CERGq1No.js +2 -0
- package/cdn/pick-CERGq1No.js.map +1 -0
- package/cdn/pick-D-wCJ3iA.js +23 -0
- package/cdn/pick-D-wCJ3iA.js.map +1 -0
- package/cdn/player-BK35-ndY.js +2 -0
- package/cdn/{player-Cu5_r0Gk.js.map → player-BK35-ndY.js.map} +1 -1
- package/cdn/{player-eEH-XjnF.js → player-C7ajkBi4.js} +2 -2
- package/cdn/{player-eEH-XjnF.js.map → player-C7ajkBi4.js.map} +1 -1
- package/cdn/{player-DIOgBqQf.js → player-CatrGW7l.js} +4 -4
- package/cdn/{player-DIOgBqQf.js.map → player-CatrGW7l.js.map} +1 -1
- package/cdn/{player-DxBoqZVw.js → player-xstFHOgW.js} +3 -3
- package/cdn/{player-DxBoqZVw.js.map → player-xstFHOgW.js.map} +1 -1
- package/cdn/{shadow-styles-62Yo__Ni.js → shadow-styles-BYZ6q3Q4.js} +1 -1
- package/cdn/{shadow-styles-62Yo__Ni.js.map → shadow-styles-BYZ6q3Q4.js.map} +1 -1
- package/cdn/{shadow-styles-I-_QR-PM.js → shadow-styles-DKXFMmyD.js} +1 -1
- package/cdn/{shadow-styles-I-_QR-PM.js.map → shadow-styles-DKXFMmyD.js.map} +1 -1
- package/cdn/{shallow-equal-Ca0qjpLJ.js → shallow-equal-Daj3-_LC.js} +1 -1
- package/cdn/{shallow-equal-Ca0qjpLJ.js.map → shallow-equal-Daj3-_LC.js.map} +1 -1
- package/cdn/{shallow-equal-1KBb-lrM.js → shallow-equal-xh6Wj-hj.js} +1 -1
- package/cdn/{shallow-equal-1KBb-lrM.js.map → shallow-equal-xh6Wj-hj.js.map} +1 -1
- package/cdn/{skin-element-u6pdmSSs.js → skin-element-BGP23sop.js} +2 -2
- package/cdn/{skin-element-u6pdmSSs.js.map → skin-element-BGP23sop.js.map} +1 -1
- package/cdn/{skin-element-BTPr5DoY.js → skin-element-CDUkmCtS.js} +3 -3
- package/cdn/{skin-element-BTPr5DoY.js.map → skin-element-CDUkmCtS.js.map} +1 -1
- package/cdn/{ui-34pkHFdT.js → ui-AFHQtrqa.js} +6 -6
- package/cdn/{ui-34pkHFdT.js.map → ui-AFHQtrqa.js.map} +1 -1
- package/cdn/ui-B7vt9mp-.js +2 -0
- package/cdn/{ui-DWoV_Da1.js.map → ui-B7vt9mp-.js.map} +1 -1
- package/cdn/{ui-X5WOdCCw.js → ui-Em9rF9Ah.js} +6 -6
- package/cdn/{ui-X5WOdCCw.js.map → ui-Em9rF9Ah.js.map} +1 -1
- package/cdn/ui-QHwo6iyo.js +2 -0
- package/cdn/{ui-DXtTKomo.js.map → ui-QHwo6iyo.js.map} +1 -1
- package/cdn/video-host-CPRJVRi3.js +47 -0
- package/cdn/video-host-CPRJVRi3.js.map +1 -0
- package/cdn/video-host-ycP7ckxU.js +410 -0
- package/cdn/video-host-ycP7ckxU.js.map +1 -0
- package/cdn/video-minimal-ui.dev.js +4 -4
- package/cdn/video-minimal-ui.js +1 -1
- package/cdn/video-minimal.dev.js +7 -7
- package/cdn/video-minimal.js +1 -1
- package/cdn/video-ui.dev.js +4 -4
- package/cdn/video-ui.js +1 -1
- package/cdn/video.dev.js +6 -6
- package/cdn/video.js +1 -1
- package/dist/default/index.js +1 -2
- package/dist/default/media/dash-video/index.js +3 -12
- package/dist/default/media/dash-video/index.js.map +1 -1
- package/dist/default/media/hls-video/index.js +10 -10
- package/dist/default/media/hls-video/index.js.map +1 -1
- package/dist/default/media/mux-audio/index.js +10 -10
- package/dist/default/media/mux-audio/index.js.map +1 -1
- package/dist/default/media/mux-video/index.js +10 -10
- package/dist/default/media/mux-video/index.js.map +1 -1
- package/dist/default/media/native-hls-video/index.js +3 -12
- package/dist/default/media/native-hls-video/index.js.map +1 -1
- package/dist/default/media/simple-hls-video/index.js +3 -9
- package/dist/default/media/simple-hls-video/index.js.map +1 -1
- package/dist/default/ui/alert-dialog/alert-dialog-element.js +1 -1
- package/dist/default/ui/buffering-indicator/buffering-indicator-element.js +1 -1
- package/dist/default/ui/captions-button/captions-button-element.js +1 -1
- package/dist/default/ui/controls/controls-element.js +1 -1
- package/dist/default/ui/error-dialog/error-dialog-element.js +1 -1
- package/dist/default/ui/fullscreen-button/fullscreen-button-element.js +1 -1
- package/dist/default/ui/mute-button/mute-button-element.js +1 -1
- package/dist/default/ui/pip-button/pip-button-element.js +1 -1
- package/dist/default/ui/play-button/play-button-element.js +1 -1
- package/dist/default/ui/playback-rate-button/playback-rate-button-element.js +1 -1
- package/dist/default/ui/popover/popover-element.js +1 -1
- package/dist/default/ui/poster/poster-element.js +1 -1
- package/dist/default/ui/seek-button/seek-button-element.js +1 -1
- package/dist/default/ui/slider/slider-element.js +1 -1
- package/dist/default/ui/thumbnail/thumbnail-element.js +1 -1
- package/dist/default/ui/time/time-element.js +1 -1
- package/dist/default/ui/time-slider/time-slider-element.js +1 -1
- package/dist/default/ui/tooltip/tooltip-element.js +1 -1
- package/dist/default/ui/tooltip/tooltip-group-element.js +1 -1
- package/dist/default/ui/volume-slider/volume-slider-element.js +1 -1
- package/dist/dev/index.d.ts +1 -2
- package/dist/dev/index.js +1 -2
- package/dist/dev/media/dash-video/index.d.ts +12 -6
- package/dist/dev/media/dash-video/index.d.ts.map +1 -1
- package/dist/dev/media/dash-video/index.js +3 -12
- package/dist/dev/media/dash-video/index.js.map +1 -1
- package/dist/dev/media/hls-video/index.d.ts +12 -4
- package/dist/dev/media/hls-video/index.d.ts.map +1 -1
- package/dist/dev/media/hls-video/index.js +10 -10
- package/dist/dev/media/hls-video/index.js.map +1 -1
- package/dist/dev/media/mux-audio/index.d.ts +12 -4
- package/dist/dev/media/mux-audio/index.d.ts.map +1 -1
- package/dist/dev/media/mux-audio/index.js +10 -10
- package/dist/dev/media/mux-audio/index.js.map +1 -1
- package/dist/dev/media/mux-video/index.d.ts +12 -4
- package/dist/dev/media/mux-video/index.d.ts.map +1 -1
- package/dist/dev/media/mux-video/index.js +10 -10
- package/dist/dev/media/mux-video/index.js.map +1 -1
- package/dist/dev/media/native-hls-video/index.d.ts +12 -6
- package/dist/dev/media/native-hls-video/index.d.ts.map +1 -1
- package/dist/dev/media/native-hls-video/index.js +3 -12
- package/dist/dev/media/native-hls-video/index.js.map +1 -1
- package/dist/dev/media/simple-hls-video/index.d.ts +12 -5
- package/dist/dev/media/simple-hls-video/index.d.ts.map +1 -1
- package/dist/dev/media/simple-hls-video/index.js +3 -9
- package/dist/dev/media/simple-hls-video/index.js.map +1 -1
- package/dist/dev/ui/alert-dialog/alert-dialog-description-element.d.ts +1 -1
- package/dist/dev/ui/alert-dialog/alert-dialog-element.js +1 -1
- package/dist/dev/ui/alert-dialog/alert-dialog-title-element.d.ts +1 -1
- package/dist/dev/ui/buffering-indicator/buffering-indicator-element.js +1 -1
- package/dist/dev/ui/captions-button/captions-button-element.d.ts +1 -1
- package/dist/dev/ui/captions-button/captions-button-element.js +1 -1
- package/dist/dev/ui/context-part-element.d.ts +1 -1
- package/dist/dev/ui/controls/controls-element.js +1 -1
- package/dist/dev/ui/controls/controls-group-element.d.ts +1 -1
- package/dist/dev/ui/error-dialog/error-dialog-element.js +1 -1
- package/dist/dev/ui/fullscreen-button/fullscreen-button-element.d.ts +1 -1
- package/dist/dev/ui/fullscreen-button/fullscreen-button-element.js +1 -1
- package/dist/dev/ui/media-button-element.d.ts +1 -1
- package/dist/dev/ui/media-ui-element.d.ts +1 -1
- package/dist/dev/ui/mute-button/mute-button-element.d.ts +1 -1
- package/dist/dev/ui/mute-button/mute-button-element.js +1 -1
- package/dist/dev/ui/pip-button/pip-button-element.d.ts +1 -1
- package/dist/dev/ui/pip-button/pip-button-element.js +1 -1
- package/dist/dev/ui/play-button/play-button-element.d.ts +1 -1
- package/dist/dev/ui/play-button/play-button-element.js +1 -1
- package/dist/dev/ui/playback-rate-button/playback-rate-button-element.d.ts +1 -1
- package/dist/dev/ui/playback-rate-button/playback-rate-button-element.js +1 -1
- package/dist/dev/ui/popover/popover-element.d.ts +1 -1
- package/dist/dev/ui/popover/popover-element.js +1 -1
- package/dist/dev/ui/poster/poster-element.d.ts +1 -1
- package/dist/dev/ui/poster/poster-element.js +1 -1
- package/dist/dev/ui/seek-button/seek-button-element.d.ts +1 -1
- package/dist/dev/ui/seek-button/seek-button-element.js +1 -1
- package/dist/dev/ui/slider/context.d.ts +1 -1
- package/dist/dev/ui/slider/slider-buffer-element.d.ts +1 -1
- package/dist/dev/ui/slider/slider-element.d.ts +1 -1
- package/dist/dev/ui/slider/slider-element.js +1 -1
- package/dist/dev/ui/slider/slider-fill-element.d.ts +1 -1
- package/dist/dev/ui/slider/slider-track-element.d.ts +1 -1
- package/dist/dev/ui/thumbnail/thumbnail-element.d.ts +1 -1
- package/dist/dev/ui/thumbnail/thumbnail-element.js +1 -1
- package/dist/dev/ui/time/time-element.d.ts +1 -1
- package/dist/dev/ui/time/time-element.js +1 -1
- package/dist/dev/ui/time-slider/time-slider-element.d.ts +1 -1
- package/dist/dev/ui/time-slider/time-slider-element.js +1 -1
- package/dist/dev/ui/tooltip/tooltip-element.d.ts +1 -1
- package/dist/dev/ui/tooltip/tooltip-element.js +1 -1
- package/dist/dev/ui/tooltip/tooltip-group-element.js +1 -1
- package/dist/dev/ui/volume-slider/volume-slider-element.d.ts +1 -1
- package/dist/dev/ui/volume-slider/volume-slider-element.js +1 -1
- package/package.json +8 -8
- package/cdn/compounds-Df_1JbZD.js +0 -8
- package/cdn/compounds-VFPcCeRV.js.map +0 -1
- package/cdn/create-player-CyG77t-m.js.map +0 -1
- package/cdn/create-player-Gom2ZZe3.js +0 -7
- package/cdn/create-player-Gom2ZZe3.js.map +0 -1
- package/cdn/hls-BAbdl84H.js +0 -41
- package/cdn/hls-BAbdl84H.js.map +0 -1
- package/cdn/hls-BrzPpueW.js.map +0 -1
- package/cdn/media-attach-mixin-CMH1ziXP.js.map +0 -1
- package/cdn/media-attach-mixin-DUzmXEJ3.js +0 -2
- package/cdn/media-attach-mixin-DUzmXEJ3.js.map +0 -1
- package/cdn/media-props-mixin-hheRmkup.js +0 -432
- package/cdn/media-props-mixin-hheRmkup.js.map +0 -1
- package/cdn/media-props-mixin-yRWj8yXF.js +0 -47
- package/cdn/media-props-mixin-yRWj8yXF.js.map +0 -1
- package/cdn/minimal-ui-B3BBK5nX.js +0 -2
- package/cdn/minimal-ui-DOePmQfq.js +0 -2
- package/cdn/mux-DGgCyz_A.js.map +0 -1
- package/cdn/mux-fYfPUpq3.js +0 -25
- package/cdn/mux-fYfPUpq3.js.map +0 -1
- package/cdn/native-hls-BuCYu7Rd.js.map +0 -1
- package/cdn/native-hls-DnqJ-0zL.js +0 -2
- package/cdn/native-hls-DnqJ-0zL.js.map +0 -1
- package/cdn/player-Cu5_r0Gk.js +0 -2
- package/cdn/ui-DWoV_Da1.js +0 -2
- package/cdn/ui-DXtTKomo.js +0 -2
- package/dist/default/utils/media-props-mixin.js +0 -44
- package/dist/default/utils/media-props-mixin.js.map +0 -1
- package/dist/dev/utils/media-props-mixin.js +0 -44
- package/dist/dev/utils/media-props-mixin.js.map +0 -1
|
@@ -104,4 +104,4 @@ const containerContext = createContext(CONTAINER_CONTEXT_KEY);
|
|
|
104
104
|
|
|
105
105
|
//#endregion
|
|
106
106
|
export { ContextRequestEvent as a, createContext as i, mediaContext as n, safeDefine as o, playerContext as r, containerContext as t };
|
|
107
|
-
//# sourceMappingURL=context-
|
|
107
|
+
//# sourceMappingURL=context-0rI_P6jf.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-
|
|
1
|
+
{"version":3,"file":"context-0rI_P6jf.js","names":[],"sources":["../src/define/safe-define.ts","../../../node_modules/.pnpm/@lit+context@1.1.6/node_modules/@lit/context/development/lib/context-request-event.js","../../../node_modules/.pnpm/@lit+context@1.1.6/node_modules/@lit/context/development/lib/create-context.js","../src/player/context.ts"],"sourcesContent":["type DefinableElement = CustomElementConstructor & { tagName: string };\n\n/** Define a custom element only if not already registered. */\nexport function safeDefine(element: DefinableElement): void {\n const registry = globalThis.customElements;\n if (!registry || registry.get(element.tagName)) return;\n\n registry.define(element.tagName, element);\n}\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n/**\n * An event fired by a context requester to signal it desires a specified context with the given key.\n *\n * A provider should inspect the `context` property of the event to determine if it has a value that can\n * satisfy the request, calling the `callback` with the requested value if so.\n *\n * If the requested context event contains a truthy `subscribe` value, then a provider can call the callback\n * multiple times if the value is changed, if this is the case the provider should pass an `unsubscribe`\n * method to the callback which consumers can invoke to indicate they no longer wish to receive these updates.\n *\n * If no `subscribe` value is present in the event, then the provider can assume that this is a 'one time'\n * request for the context and can therefore not track the consumer.\n */\nexport class ContextRequestEvent extends Event {\n /**\n *\n * @param context the context key to request\n * @param contextTarget the original context target of the requester\n * @param callback the callback that should be invoked when the context with the specified key is available\n * @param subscribe when, true indicates we want to subscribe to future updates\n */\n constructor(context, contextTarget, callback, subscribe) {\n super('context-request', { bubbles: true, composed: true });\n this.context = context;\n this.contextTarget = contextTarget;\n this.callback = callback;\n this.subscribe = subscribe ?? false;\n }\n}\n//# sourceMappingURL=context-request-event.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n/**\n * Creates a typed Context.\n *\n * Contexts are compared with strict equality.\n *\n * If you want two separate `createContext()` calls to referer to the same\n * context, then use a key that will by equal under strict equality like a\n * string for `Symbol.for()`:\n *\n * ```ts\n * // true\n * createContext('my-context') === createContext('my-context')\n * // true\n * createContext(Symbol.for('my-context')) === createContext(Symbol.for('my-context'))\n * ```\n *\n * If you want a context to be unique so that it's guaranteed to not collide\n * with other contexts, use a key that's unique under strict equality, like\n * a `Symbol()` or object.:\n *\n * ```\n * // false\n * createContext({}) === createContext({})\n * // false\n * createContext(Symbol('my-context')) === createContext(Symbol('my-context'))\n * ```\n *\n * @param key a context key value\n * @template ValueType the type of value that can be provided by this context.\n * @returns the context key value cast to `Context<K, ValueType>`\n */\nexport function createContext(key) {\n return key;\n}\n//# sourceMappingURL=create-context.js.map","import type { AnyPlayerStore, Media, MediaContainer, PlayerStore } from '@videojs/core/dom';\nimport type { ReactiveControllerHost } from '@videojs/element';\nimport { type Context, type ContextConsumer, createContext } from '@videojs/element/context';\n\n// ----------------------------------------\n// Player Context\n// ----------------------------------------\n\nexport const PLAYER_CONTEXT_KEY = Symbol.for('@videojs/player');\n\nexport type PlayerContextValue<Store extends PlayerStore = AnyPlayerStore> = Store;\n\nexport type PlayerContext<Store extends PlayerStore = AnyPlayerStore> = Context<\n typeof PLAYER_CONTEXT_KEY,\n PlayerContextValue<Store>\n>;\n\n/**\n * The default player context instance for consuming the player store in controllers.\n *\n * @public\n */\nexport const playerContext = createContext<PlayerContextValue, typeof PLAYER_CONTEXT_KEY>(PLAYER_CONTEXT_KEY);\n\n// ----------------------------------------\n// Media Context\n// ----------------------------------------\n\nexport const MEDIA_CONTEXT_KEY = Symbol.for('@videojs/media');\n\nexport interface MediaContextValue {\n media: Media | null;\n setMedia: (media: Media | null) => void;\n}\n\nexport type MediaContext = Context<typeof MEDIA_CONTEXT_KEY, MediaContextValue>;\n\nexport const mediaContext = createContext<MediaContextValue, typeof MEDIA_CONTEXT_KEY>(MEDIA_CONTEXT_KEY);\n\n// ----------------------------------------\n// Container Context\n// ----------------------------------------\n\nexport const CONTAINER_CONTEXT_KEY = Symbol.for('@videojs/container');\n\nexport interface ContainerContextValue {\n container: MediaContainer | null;\n setContainer: (container: MediaContainer | null) => void;\n}\n\nexport type ContainerContext = Context<typeof CONTAINER_CONTEXT_KEY, ContainerContextValue>;\n\nexport type ContainerContextConsumer = ContextConsumer<ContainerContext, ReactiveControllerHost & HTMLElement>;\n\nexport const containerContext = createContext<ContainerContextValue, typeof CONTAINER_CONTEXT_KEY>(\n CONTAINER_CONTEXT_KEY\n);\n"],"x_google_ignoreList":[1,2],"mappings":";;AAGA,SAAgB,WAAW,SAAiC;CAC1D,MAAM,WAAW,WAAW;AAC5B,KAAI,CAAC,YAAY,SAAS,IAAI,QAAQ,QAAQ,CAAE;AAEhD,UAAS,OAAO,QAAQ,SAAS,QAAQ;;;;;;;;;;;;;;;;;;;;;;;ACW3C,IAAa,sBAAb,cAAyC,MAAM;;;;;;;;CAQ3C,YAAY,SAAS,eAAe,UAAU,WAAW;AACrD,QAAM,mBAAmB;GAAE,SAAS;GAAM,UAAU;GAAM,CAAC;AAC3D,OAAK,UAAU;AACf,OAAK,gBAAgB;AACrB,OAAK,WAAW;AAChB,OAAK,YAAY,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACKtC,SAAgB,cAAc,KAAK;AAC/B,QAAO;;;;;AC7BX,MAAa,qBAAqB,OAAO,IAAI,kBAAkB;;;;;;AAc/D,MAAa,gBAAgB,cAA6D,mBAAmB;AAM7G,MAAa,oBAAoB,OAAO,IAAI,iBAAiB;AAS7D,MAAa,eAAe,cAA2D,kBAAkB;AAMzG,MAAa,wBAAwB,OAAO,IAAI,qBAAqB;AAWrE,MAAa,mBAAmB,cAC9B,sBACD"}
|
|
@@ -11,4 +11,4 @@ var t=class extends Event{constructor(e,t,n,r){super(`context-request`,{bubbles:
|
|
|
11
11
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
12
12
|
*/
|
|
13
13
|
function n(e){return e}const r=n(Symbol.for(`@videojs/player`)),i=n(Symbol.for(`@videojs/media`)),a=n(Symbol.for(`@videojs/container`));export{t as a,n as i,i as n,e as o,r,a as t};
|
|
14
|
-
//# sourceMappingURL=context-
|
|
14
|
+
//# sourceMappingURL=context-CEFisYD0.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-
|
|
1
|
+
{"version":3,"file":"context-CEFisYD0.js","names":["createContext"],"sources":["../src/define/safe-define.ts","../../../node_modules/.pnpm/@lit+context@1.1.6/node_modules/@lit/context/lib/context-request-event.js","../../../node_modules/.pnpm/@lit+context@1.1.6/node_modules/@lit/context/lib/create-context.js","../src/player/context.ts"],"sourcesContent":["type DefinableElement = CustomElementConstructor & { tagName: string };\n\n/** Define a custom element only if not already registered. */\nexport function safeDefine(element: DefinableElement): void {\n const registry = globalThis.customElements;\n if (!registry || registry.get(element.tagName)) return;\n\n registry.define(element.tagName, element);\n}\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nclass s extends Event{constructor(s,t,e,o){super(\"context-request\",{bubbles:!0,composed:!0}),this.context=s,this.contextTarget=t,this.callback=e,this.subscribe=o??!1}}export{s as ContextRequestEvent};\n//# sourceMappingURL=context-request-event.js.map\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nfunction n(n){return n}export{n as createContext};\n//# sourceMappingURL=create-context.js.map\n","import type { AnyPlayerStore, Media, MediaContainer, PlayerStore } from '@videojs/core/dom';\nimport type { ReactiveControllerHost } from '@videojs/element';\nimport { type Context, type ContextConsumer, createContext } from '@videojs/element/context';\n\n// ----------------------------------------\n// Player Context\n// ----------------------------------------\n\nexport const PLAYER_CONTEXT_KEY = Symbol.for('@videojs/player');\n\nexport type PlayerContextValue<Store extends PlayerStore = AnyPlayerStore> = Store;\n\nexport type PlayerContext<Store extends PlayerStore = AnyPlayerStore> = Context<\n typeof PLAYER_CONTEXT_KEY,\n PlayerContextValue<Store>\n>;\n\n/**\n * The default player context instance for consuming the player store in controllers.\n *\n * @public\n */\nexport const playerContext = createContext<PlayerContextValue, typeof PLAYER_CONTEXT_KEY>(PLAYER_CONTEXT_KEY);\n\n// ----------------------------------------\n// Media Context\n// ----------------------------------------\n\nexport const MEDIA_CONTEXT_KEY = Symbol.for('@videojs/media');\n\nexport interface MediaContextValue {\n media: Media | null;\n setMedia: (media: Media | null) => void;\n}\n\nexport type MediaContext = Context<typeof MEDIA_CONTEXT_KEY, MediaContextValue>;\n\nexport const mediaContext = createContext<MediaContextValue, typeof MEDIA_CONTEXT_KEY>(MEDIA_CONTEXT_KEY);\n\n// ----------------------------------------\n// Container Context\n// ----------------------------------------\n\nexport const CONTAINER_CONTEXT_KEY = Symbol.for('@videojs/container');\n\nexport interface ContainerContextValue {\n container: MediaContainer | null;\n setContainer: (container: MediaContainer | null) => void;\n}\n\nexport type ContainerContext = Context<typeof CONTAINER_CONTEXT_KEY, ContainerContextValue>;\n\nexport type ContainerContextConsumer = ContextConsumer<ContainerContext, ReactiveControllerHost & HTMLElement>;\n\nexport const containerContext = createContext<ContainerContextValue, typeof CONTAINER_CONTEXT_KEY>(\n CONTAINER_CONTEXT_KEY\n);\n"],"x_google_ignoreList":[1,2],"mappings":"AAGA,SAAgB,EAAW,EAAiC,CAC1D,IAAM,EAAW,WAAW,eACxB,CAAC,GAAY,EAAS,IAAI,EAAQ,QAAQ,EAE9C,EAAS,OAAO,EAAQ,QAAS,EAAQ;;;;;;ACF3C,IAAM,EAAN,cAAgB,KAAK,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,CAAC,MAAM,kBAAkB,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK,QAAQ,EAAE,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,KAAK,UAAU,GAAG,CAAC;;;;;;ACApK,SAAS,EAAE,EAAE,CAAC,OAAO,ECiBrB,MAAa,EAAgBA,EAdK,OAAO,IAAI,kBAAkB,CAc8C,CAehG,EAAeA,EATK,OAAO,IAAI,iBAAiB,CAS4C,CAiB5F,EAAmBA,EAXK,OAAO,IAAI,qBAAqB,CAapE"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { t as listen } from "./listen-
|
|
2
|
-
import { a as ContextRequestEvent, n as mediaContext, r as playerContext, t as containerContext } from "./context-
|
|
3
|
-
import { t as anyAbortSignal } from "./abort-
|
|
4
|
-
import { t as shallowEqual } from "./shallow-equal-
|
|
1
|
+
import { t as listen } from "./listen-CJT7C4kM.js";
|
|
2
|
+
import { a as ContextRequestEvent, n as mediaContext, r as playerContext, t as containerContext } from "./context-0rI_P6jf.js";
|
|
3
|
+
import { t as anyAbortSignal } from "./abort-DsTff8mS.js";
|
|
4
|
+
import { t as shallowEqual } from "./shallow-equal-Daj3-_LC.js";
|
|
5
5
|
|
|
6
6
|
//#region ../utils/dist/dom/event.js
|
|
7
7
|
/** Resolve the deepest event target, preferring composedPath for shadow DOM. */
|
|
@@ -30,49 +30,64 @@ function onEvent(target, type, options) {
|
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
//#endregion
|
|
33
|
-
//#region ../utils/dist/dom/
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
"
|
|
37
|
-
"
|
|
38
|
-
"
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
33
|
+
//#region ../utils/dist/dom/interactive.js
|
|
34
|
+
const INTERACTIVE_SELECTOR = "button,input,select,textarea,a[href],[role=\"slider\"],[role=\"button\"]";
|
|
35
|
+
const EDITABLE_SELECTOR = [
|
|
36
|
+
"textarea",
|
|
37
|
+
"select",
|
|
38
|
+
"input:not([type])",
|
|
39
|
+
...[
|
|
40
|
+
"text",
|
|
41
|
+
"search",
|
|
42
|
+
"url",
|
|
43
|
+
"tel",
|
|
44
|
+
"email",
|
|
45
|
+
"password",
|
|
46
|
+
"number"
|
|
47
|
+
].map((type) => `input[type="${type}"]`),
|
|
48
|
+
"[contenteditable]:not([contenteditable=\"false\"])"
|
|
49
|
+
].join(",");
|
|
43
50
|
function isEditableElement(el) {
|
|
44
|
-
|
|
45
|
-
if (el instanceof HTMLSelectElement) return true;
|
|
46
|
-
if (el instanceof HTMLInputElement) return EDITABLE_INPUT_TYPES.has(el.type.toLowerCase());
|
|
47
|
-
if (!(el instanceof HTMLElement)) return false;
|
|
48
|
-
const editable = el.getAttribute("contenteditable");
|
|
49
|
-
return editable !== null && editable !== "false";
|
|
51
|
+
return el.matches(EDITABLE_SELECTOR);
|
|
50
52
|
}
|
|
51
53
|
/** Whether the keyboard event target is an editable element (input, textarea, etc). */
|
|
52
54
|
function isEditableTarget(event) {
|
|
53
55
|
const target = resolveEventTarget(event);
|
|
54
56
|
return target instanceof Element && isEditableElement(target);
|
|
55
57
|
}
|
|
56
|
-
const INTERACTIVE_SELECTOR = "button, input, select, textarea, [role=\"button\"], [role=\"slider\"]";
|
|
57
58
|
/** Whether the event originated from an interactive control (button, slider, etc). */
|
|
58
59
|
function isInteractiveTarget(event) {
|
|
59
60
|
const target = resolveEventTarget(event);
|
|
60
61
|
if (!(target instanceof Element)) return false;
|
|
61
62
|
return target.closest(INTERACTIVE_SELECTOR) !== null;
|
|
62
63
|
}
|
|
64
|
+
const ACTIVATION_KEYS = new Set([" ", "Enter"]);
|
|
65
|
+
/**
|
|
66
|
+
* Selector for elements that use Space/Enter as a native activation key.
|
|
67
|
+
* Narrower than `INTERACTIVE_SELECTOR` — excludes editable elements like
|
|
68
|
+
* `input`, `textarea`, `select` where Space/Enter is text input, not activation.
|
|
69
|
+
*/
|
|
70
|
+
const ACTIVATABLE_SELECTOR = "button,a[href],[role=\"slider\"],[role=\"button\"]";
|
|
71
|
+
/** Whether the event is an activation key on an activatable element (button, link, slider). */
|
|
72
|
+
function isInteractiveActivation(event) {
|
|
73
|
+
if (!ACTIVATION_KEYS.has(event.key)) return false;
|
|
74
|
+
const target = resolveEventTarget(event);
|
|
75
|
+
return target instanceof Element && target.matches(ACTIVATABLE_SELECTOR);
|
|
76
|
+
}
|
|
63
77
|
|
|
64
78
|
//#endregion
|
|
65
79
|
//#region ../utils/dist/dom/text-track.js
|
|
66
80
|
/** Find the `<track>` element that owns the given `TextTrack`. */
|
|
67
81
|
function findTrackElement(media, track) {
|
|
68
|
-
|
|
82
|
+
if (!(media instanceof HTMLElement)) return null;
|
|
83
|
+
for (const el of media.querySelectorAll("track")) if (el.track === track) return el;
|
|
69
84
|
return null;
|
|
70
85
|
}
|
|
71
86
|
function getTextTrackList(media, filterPred) {
|
|
72
|
-
if (!media
|
|
73
|
-
return Array.from(media.textTracks).filter(filterPred).sort(
|
|
87
|
+
if (!media.textTracks) return [];
|
|
88
|
+
return Array.from(media.textTracks).filter(filterPred).sort(sortByKind);
|
|
74
89
|
}
|
|
75
|
-
function
|
|
90
|
+
function sortByKind(a, b) {
|
|
76
91
|
return a.kind > b.kind ? 1 : a.kind < b.kind ? -1 : 0;
|
|
77
92
|
}
|
|
78
93
|
|
|
@@ -1017,6 +1032,39 @@ function isStore(value) {
|
|
|
1017
1032
|
//#region ../core/dist/dev/dom/feature.js
|
|
1018
1033
|
const definePlayerFeature = defineSlice();
|
|
1019
1034
|
|
|
1035
|
+
//#endregion
|
|
1036
|
+
//#region ../core/dist/dev/dom/media/predicate.js
|
|
1037
|
+
function hasMetadata(media) {
|
|
1038
|
+
return media.readyState >= 1;
|
|
1039
|
+
}
|
|
1040
|
+
function isMediaPauseCapable(value) {
|
|
1041
|
+
return isObject(value) && "paused" in value && "ended" in value && isFunction(value.pause);
|
|
1042
|
+
}
|
|
1043
|
+
function isMediaSeekCapable(value) {
|
|
1044
|
+
return isObject(value) && "currentTime" in value && "duration" in value && "seeking" in value;
|
|
1045
|
+
}
|
|
1046
|
+
function isMediaSourceCapable(value) {
|
|
1047
|
+
return isObject(value) && "src" in value && "currentSrc" in value && "readyState" in value && isFunction(value.load);
|
|
1048
|
+
}
|
|
1049
|
+
function isMediaVolumeCapable(value) {
|
|
1050
|
+
return isObject(value) && "volume" in value && "muted" in value;
|
|
1051
|
+
}
|
|
1052
|
+
function isMediaPlaybackRateCapable(value) {
|
|
1053
|
+
return isObject(value) && "playbackRate" in value;
|
|
1054
|
+
}
|
|
1055
|
+
function isMediaBufferCapable(value) {
|
|
1056
|
+
return isObject(value) && "buffered" in value && "seekable" in value;
|
|
1057
|
+
}
|
|
1058
|
+
function isMediaErrorCapable(value) {
|
|
1059
|
+
return isObject(value) && "error" in value;
|
|
1060
|
+
}
|
|
1061
|
+
function isMediaTextTrackCapable(value) {
|
|
1062
|
+
return isObject(value) && "textTracks" in value;
|
|
1063
|
+
}
|
|
1064
|
+
function isQuerySelectorAllCapable(value) {
|
|
1065
|
+
return isObject(value) && "querySelectorAll" in value && isFunction(value.querySelectorAll);
|
|
1066
|
+
}
|
|
1067
|
+
|
|
1020
1068
|
//#endregion
|
|
1021
1069
|
//#region ../core/dist/dev/dom/store/features/buffer.js
|
|
1022
1070
|
const bufferFeature = definePlayerFeature({
|
|
@@ -1027,6 +1075,7 @@ const bufferFeature = definePlayerFeature({
|
|
|
1027
1075
|
}),
|
|
1028
1076
|
attach({ target, signal, set }) {
|
|
1029
1077
|
const { media } = target;
|
|
1078
|
+
if (!isMediaBufferCapable(media)) return;
|
|
1030
1079
|
const sync = () => set({
|
|
1031
1080
|
buffered: serializeTimeRanges(media.buffered),
|
|
1032
1081
|
seekable: serializeTimeRanges(media.seekable)
|
|
@@ -1104,10 +1153,12 @@ var GestureCoordinator = class {
|
|
|
1104
1153
|
this.#disconnect = new AbortController();
|
|
1105
1154
|
const { signal } = this.#disconnect;
|
|
1106
1155
|
let pointerDownTime = 0;
|
|
1107
|
-
listen(this.#target, "pointerdown", () => {
|
|
1156
|
+
listen(this.#target, "pointerdown", (event) => {
|
|
1157
|
+
if (event.button !== 0) return;
|
|
1108
1158
|
pointerDownTime = Date.now();
|
|
1109
1159
|
}, { signal });
|
|
1110
1160
|
listen(this.#target, "pointerup", (event) => {
|
|
1161
|
+
if (event.button !== 0) return;
|
|
1111
1162
|
if (Date.now() - pointerDownTime > TAP_THRESHOLD$1) return;
|
|
1112
1163
|
if (isInteractiveTarget(event)) return;
|
|
1113
1164
|
const pointerType = event.pointerType;
|
|
@@ -1186,13 +1237,13 @@ const controlsFeature = definePlayerFeature({
|
|
|
1186
1237
|
}),
|
|
1187
1238
|
attach({ target, signal, get, set }) {
|
|
1188
1239
|
const { media, container } = target;
|
|
1189
|
-
if (isNull(container)) {
|
|
1190
|
-
console.warn("[vjs] controlsFeature requires a container element for activity tracking.");
|
|
1240
|
+
if (!isMediaPauseCapable(media) || isNull(container)) {
|
|
1241
|
+
if (isNull(container)) console.warn("[vjs] controlsFeature requires a container element for activity tracking.");
|
|
1191
1242
|
return;
|
|
1192
1243
|
}
|
|
1193
|
-
|
|
1244
|
+
const computeVisible = (userActive) => {
|
|
1194
1245
|
return userActive || media.paused;
|
|
1195
|
-
}
|
|
1246
|
+
};
|
|
1196
1247
|
let idleTimer;
|
|
1197
1248
|
function clearIdle() {
|
|
1198
1249
|
clearTimeout(idleTimer);
|
|
@@ -1233,11 +1284,11 @@ const controlsFeature = definePlayerFeature({
|
|
|
1233
1284
|
else setActive();
|
|
1234
1285
|
} else setActive();
|
|
1235
1286
|
}
|
|
1236
|
-
|
|
1287
|
+
const onPlaybackChange = () => {
|
|
1237
1288
|
const { userActive } = get();
|
|
1238
1289
|
set({ controlsVisible: computeVisible(userActive) });
|
|
1239
1290
|
if (!media.paused && userActive) scheduleIdle();
|
|
1240
|
-
}
|
|
1291
|
+
};
|
|
1241
1292
|
listen(container, "pointermove", setActive, { signal });
|
|
1242
1293
|
listen(container, "pointerdown", onPointerDown, { signal });
|
|
1243
1294
|
listen(container, "pointerup", onPointerUp, { signal });
|
|
@@ -1264,6 +1315,7 @@ const errorFeature = definePlayerFeature({
|
|
|
1264
1315
|
}),
|
|
1265
1316
|
attach({ target, signal, set }) {
|
|
1266
1317
|
const { media } = target;
|
|
1318
|
+
if (!isMediaErrorCapable(media)) return;
|
|
1267
1319
|
const syncError = () => set({ error: media.error });
|
|
1268
1320
|
listen(media, "error", syncError, { signal });
|
|
1269
1321
|
listen(media, "emptied", () => set({ error: null }), { signal });
|
|
@@ -1272,58 +1324,49 @@ const errorFeature = definePlayerFeature({
|
|
|
1272
1324
|
|
|
1273
1325
|
//#endregion
|
|
1274
1326
|
//#region ../core/dist/dev/dom/presentation/fullscreen.js
|
|
1275
|
-
/** Check if the Fullscreen API is supported on this platform. */
|
|
1276
1327
|
function isFullscreenEnabled() {
|
|
1277
1328
|
const doc = document;
|
|
1278
1329
|
if (doc.fullscreenEnabled || doc.webkitFullscreenEnabled) return true;
|
|
1279
1330
|
return isFunction(document.createElement("video").webkitEnterFullscreen);
|
|
1280
1331
|
}
|
|
1281
|
-
/** Get the current fullscreen element from the document. */
|
|
1282
1332
|
function getFullscreenElement() {
|
|
1283
1333
|
const doc = document;
|
|
1284
1334
|
return doc.fullscreenElement ?? doc.webkitFullscreenElement ?? null;
|
|
1285
1335
|
}
|
|
1286
|
-
/**
|
|
1287
|
-
* Check if a specific element (or its media) is currently in fullscreen.
|
|
1288
|
-
*
|
|
1289
|
-
* Uses `:fullscreen` pseudo-class which works across Shadow DOM boundaries.
|
|
1290
|
-
*/
|
|
1291
1336
|
function isFullscreenElement(container, media) {
|
|
1292
|
-
|
|
1293
|
-
|
|
1337
|
+
if (media instanceof HTMLMediaElement) {
|
|
1338
|
+
const video = media;
|
|
1339
|
+
if (video.webkitDisplayingFullscreen && video.webkitPresentationMode === "fullscreen") return true;
|
|
1340
|
+
}
|
|
1294
1341
|
const target = container ?? media;
|
|
1295
1342
|
if (getFullscreenElement() === target) return true;
|
|
1296
|
-
try {
|
|
1343
|
+
if (target instanceof Element) try {
|
|
1297
1344
|
return target.matches(":fullscreen");
|
|
1298
1345
|
} catch {
|
|
1299
1346
|
return false;
|
|
1300
1347
|
}
|
|
1348
|
+
return false;
|
|
1301
1349
|
}
|
|
1302
|
-
/**
|
|
1303
|
-
* Request fullscreen mode.
|
|
1304
|
-
*
|
|
1305
|
-
* Tries container first (to show custom UI), falls back to media element
|
|
1306
|
-
* for platforms that only support video fullscreen (iOS Safari).
|
|
1307
|
-
*/
|
|
1308
1350
|
async function requestFullscreen(container, media) {
|
|
1309
1351
|
const doc = document;
|
|
1310
|
-
const video = media;
|
|
1311
1352
|
if (container && (doc.fullscreenEnabled || doc.webkitFullscreenEnabled)) {
|
|
1312
1353
|
const el = container;
|
|
1313
1354
|
if (isFunction(el.requestFullscreen)) return el.requestFullscreen();
|
|
1314
1355
|
if (isFunction(el.webkitRequestFullscreen)) return el.webkitRequestFullscreen();
|
|
1315
1356
|
}
|
|
1316
|
-
if (
|
|
1317
|
-
video
|
|
1318
|
-
|
|
1357
|
+
if (media instanceof HTMLMediaElement) {
|
|
1358
|
+
const video = media;
|
|
1359
|
+
if (isFunction(video.webkitEnterFullscreen)) {
|
|
1360
|
+
video.webkitEnterFullscreen();
|
|
1361
|
+
return;
|
|
1362
|
+
}
|
|
1363
|
+
if (isFunction(media.requestFullscreen)) return media.requestFullscreen();
|
|
1319
1364
|
}
|
|
1320
|
-
if (isFunction(media.requestFullscreen)) return media.requestFullscreen();
|
|
1321
1365
|
throw new DOMException("Fullscreen not supported", "NotSupportedError");
|
|
1322
1366
|
}
|
|
1323
|
-
/** Exit fullscreen mode. */
|
|
1324
1367
|
async function exitFullscreen(media) {
|
|
1325
1368
|
const doc = document;
|
|
1326
|
-
if (media) {
|
|
1369
|
+
if (media instanceof HTMLMediaElement) {
|
|
1327
1370
|
const video = media;
|
|
1328
1371
|
if (isFunction(video.webkitExitFullscreen) && video.webkitDisplayingFullscreen) {
|
|
1329
1372
|
video.webkitExitFullscreen();
|
|
@@ -1340,11 +1383,6 @@ function resolveMediaTarget(media) {
|
|
|
1340
1383
|
const target = media.target;
|
|
1341
1384
|
return target instanceof HTMLMediaElement ? target : media;
|
|
1342
1385
|
}
|
|
1343
|
-
/**
|
|
1344
|
-
* Check if Picture-in-Picture is supported on this platform.
|
|
1345
|
-
*
|
|
1346
|
-
* Note: Safari PWAs don't support PiP even though the API exists.
|
|
1347
|
-
*/
|
|
1348
1386
|
function isPictureInPictureEnabled() {
|
|
1349
1387
|
if (document.pictureInPictureEnabled) {
|
|
1350
1388
|
const isSafari = /.*Version\/.*Safari\/.*/.test(navigator.userAgent);
|
|
@@ -1353,22 +1391,16 @@ function isPictureInPictureEnabled() {
|
|
|
1353
1391
|
}
|
|
1354
1392
|
return isFunction(document.createElement("video").webkitSetPresentationMode);
|
|
1355
1393
|
}
|
|
1356
|
-
/**
|
|
1357
|
-
* Check if Picture-in-Picture is currently active for a media element.
|
|
1358
|
-
*/
|
|
1359
1394
|
function isPictureInPictureElement(media) {
|
|
1360
1395
|
const target = resolveMediaTarget(media);
|
|
1361
1396
|
if (document.pictureInPictureElement === target) return true;
|
|
1362
|
-
return target.webkitPresentationMode === "picture-in-picture";
|
|
1397
|
+
if (target instanceof HTMLVideoElement) return target.webkitPresentationMode === "picture-in-picture";
|
|
1398
|
+
return false;
|
|
1363
1399
|
}
|
|
1364
|
-
/**
|
|
1365
|
-
* Request Picture-in-Picture mode.
|
|
1366
|
-
*
|
|
1367
|
-
* Uses standard API where available, falls back to iOS Safari's
|
|
1368
|
-
* WebKit presentation mode.
|
|
1369
|
-
*/
|
|
1370
1400
|
async function requestPictureInPicture(media) {
|
|
1371
|
-
const
|
|
1401
|
+
const target = resolveMediaTarget(media);
|
|
1402
|
+
if (!(target instanceof HTMLVideoElement)) throw new DOMException("Picture-in-Picture not supported", "NotSupportedError");
|
|
1403
|
+
const video = target;
|
|
1372
1404
|
if (isFunction(video.webkitSetPresentationMode)) {
|
|
1373
1405
|
video.webkitSetPresentationMode("picture-in-picture");
|
|
1374
1406
|
return;
|
|
@@ -1379,18 +1411,15 @@ async function requestPictureInPicture(media) {
|
|
|
1379
1411
|
}
|
|
1380
1412
|
throw new DOMException("Picture-in-Picture not supported", "NotSupportedError");
|
|
1381
1413
|
}
|
|
1382
|
-
/**
|
|
1383
|
-
* Exit Picture-in-Picture mode.
|
|
1384
|
-
*
|
|
1385
|
-
* Uses standard API where available, falls back to iOS Safari's
|
|
1386
|
-
* WebKit presentation mode.
|
|
1387
|
-
*/
|
|
1388
1414
|
async function exitPictureInPicture(media) {
|
|
1389
1415
|
if (media) {
|
|
1390
|
-
const
|
|
1391
|
-
if (
|
|
1392
|
-
video
|
|
1393
|
-
|
|
1416
|
+
const target = resolveMediaTarget(media);
|
|
1417
|
+
if (target instanceof HTMLVideoElement) {
|
|
1418
|
+
const video = target;
|
|
1419
|
+
if (isFunction(video.webkitSetPresentationMode) && video.webkitPresentationMode === "picture-in-picture") {
|
|
1420
|
+
video.webkitSetPresentationMode("inline");
|
|
1421
|
+
return;
|
|
1422
|
+
}
|
|
1394
1423
|
}
|
|
1395
1424
|
}
|
|
1396
1425
|
if (isFunction(document.exitPictureInPicture)) return document.exitPictureInPicture();
|
|
@@ -1477,10 +1506,12 @@ const playbackFeature = definePlayerFeature({
|
|
|
1477
1506
|
return target().media.play();
|
|
1478
1507
|
},
|
|
1479
1508
|
pause() {
|
|
1480
|
-
target()
|
|
1509
|
+
const { media } = target();
|
|
1510
|
+
if (isMediaPauseCapable(media)) media.pause();
|
|
1481
1511
|
},
|
|
1482
1512
|
togglePaused() {
|
|
1483
1513
|
const media = target().media;
|
|
1514
|
+
if (!isMediaPauseCapable(media)) return false;
|
|
1484
1515
|
if (media.paused) {
|
|
1485
1516
|
media.play();
|
|
1486
1517
|
return true;
|
|
@@ -1491,6 +1522,7 @@ const playbackFeature = definePlayerFeature({
|
|
|
1491
1522
|
}),
|
|
1492
1523
|
attach({ target, signal, set }) {
|
|
1493
1524
|
const { media } = target;
|
|
1525
|
+
if (!isMediaPauseCapable(media) || !isMediaSeekCapable(media) || !isMediaSourceCapable(media)) return;
|
|
1494
1526
|
const sync = () => set({
|
|
1495
1527
|
paused: media.paused,
|
|
1496
1528
|
ended: media.ended,
|
|
@@ -1526,11 +1558,13 @@ const playbackRateFeature = definePlayerFeature({
|
|
|
1526
1558
|
playbackRates: DEFAULT_RATES,
|
|
1527
1559
|
playbackRate: 1,
|
|
1528
1560
|
setPlaybackRate(rate) {
|
|
1529
|
-
|
|
1561
|
+
const { media } = target();
|
|
1562
|
+
if (isMediaPlaybackRateCapable(media)) media.playbackRate = rate;
|
|
1530
1563
|
}
|
|
1531
1564
|
}),
|
|
1532
1565
|
attach({ target, signal, set }) {
|
|
1533
1566
|
const { media } = target;
|
|
1567
|
+
if (!isMediaPlaybackRateCapable(media)) return;
|
|
1534
1568
|
const sync = () => set({ playbackRate: media.playbackRate });
|
|
1535
1569
|
sync();
|
|
1536
1570
|
listen(media, "ratechange", sync, { signal });
|
|
@@ -1547,6 +1581,7 @@ const sourceFeature = definePlayerFeature({
|
|
|
1547
1581
|
loadSource(src) {
|
|
1548
1582
|
signals.clear();
|
|
1549
1583
|
const { media } = target();
|
|
1584
|
+
if (!isMediaSourceCapable(media)) return src;
|
|
1550
1585
|
media.src = src;
|
|
1551
1586
|
media.load();
|
|
1552
1587
|
return src;
|
|
@@ -1554,6 +1589,7 @@ const sourceFeature = definePlayerFeature({
|
|
|
1554
1589
|
}),
|
|
1555
1590
|
attach({ target, signal, set }) {
|
|
1556
1591
|
const { media } = target;
|
|
1592
|
+
if (!isMediaSourceCapable(media)) return;
|
|
1557
1593
|
const sync = () => set({
|
|
1558
1594
|
source: media.currentSrc || media.src || null,
|
|
1559
1595
|
canPlay: media.readyState >= HTMLMediaElement.HAVE_ENOUGH_DATA
|
|
@@ -1577,7 +1613,9 @@ const textTrackFeature = definePlayerFeature({
|
|
|
1577
1613
|
textTrackList: [],
|
|
1578
1614
|
subtitlesShowing: false,
|
|
1579
1615
|
toggleSubtitles(forceShow) {
|
|
1580
|
-
const
|
|
1616
|
+
const { media } = target();
|
|
1617
|
+
if (!isMediaTextTrackCapable(media)) return false;
|
|
1618
|
+
const subtitlesTracks = getTextTrackList(media, (track) => track.kind === "subtitles" || track.kind === "captions");
|
|
1581
1619
|
if (!subtitlesTracks.length) return false;
|
|
1582
1620
|
const showing = subtitlesTracks.some((track) => track.mode === "showing");
|
|
1583
1621
|
const nextShowing = forceShow ?? !showing;
|
|
@@ -1587,8 +1625,9 @@ const textTrackFeature = definePlayerFeature({
|
|
|
1587
1625
|
}),
|
|
1588
1626
|
attach({ target, signal, set }) {
|
|
1589
1627
|
const { media } = target;
|
|
1628
|
+
if (!isMediaTextTrackCapable(media)) return;
|
|
1590
1629
|
let trackCleanup = null;
|
|
1591
|
-
|
|
1630
|
+
const sync = () => {
|
|
1592
1631
|
trackCleanup?.abort();
|
|
1593
1632
|
trackCleanup = new AbortController();
|
|
1594
1633
|
let chaptersTrack = null;
|
|
@@ -1611,8 +1650,8 @@ const textTrackFeature = definePlayerFeature({
|
|
|
1611
1650
|
const thumbnailCues = thumbnailTrack?.cues ? Array.from(thumbnailTrack.cues) : [];
|
|
1612
1651
|
let thumbnailTrackSrc = null;
|
|
1613
1652
|
if (thumbnailTrack) thumbnailTrackSrc = findTrackElement(media, thumbnailTrack)?.src ?? null;
|
|
1614
|
-
const tracks = media.querySelectorAll
|
|
1615
|
-
const shadowTracks = media.shadowRoot?.querySelectorAll
|
|
1653
|
+
const tracks = isQuerySelectorAllCapable(media) && media.querySelectorAll("track") || [];
|
|
1654
|
+
const shadowTracks = media instanceof HTMLElement && media.shadowRoot?.querySelectorAll("track") || [];
|
|
1616
1655
|
for (const trackEl of [...tracks, ...shadowTracks]) if (!trackEl.track?.cues?.length) listen(trackEl, "load", sync, { signal: trackCleanup.signal });
|
|
1617
1656
|
set({
|
|
1618
1657
|
chaptersCues,
|
|
@@ -1621,22 +1660,19 @@ const textTrackFeature = definePlayerFeature({
|
|
|
1621
1660
|
textTrackList,
|
|
1622
1661
|
subtitlesShowing
|
|
1623
1662
|
});
|
|
1624
|
-
}
|
|
1663
|
+
};
|
|
1625
1664
|
sync();
|
|
1626
|
-
|
|
1627
|
-
|
|
1628
|
-
|
|
1665
|
+
const textTracks = media.textTracks;
|
|
1666
|
+
if (textTracks instanceof EventTarget) {
|
|
1667
|
+
listen(textTracks, "addtrack", sync, { signal });
|
|
1668
|
+
listen(textTracks, "removetrack", sync, { signal });
|
|
1669
|
+
listen(textTracks, "change", sync, { signal });
|
|
1670
|
+
}
|
|
1629
1671
|
listen(media, "loadstart", sync, { signal });
|
|
1630
1672
|
signal.addEventListener("abort", () => trackCleanup?.abort(), { once: true });
|
|
1631
1673
|
}
|
|
1632
1674
|
});
|
|
1633
1675
|
|
|
1634
|
-
//#endregion
|
|
1635
|
-
//#region ../core/dist/dev/dom/media/predicate.js
|
|
1636
|
-
function hasMetadata(media) {
|
|
1637
|
-
return media.readyState >= HTMLMediaElement.HAVE_METADATA;
|
|
1638
|
-
}
|
|
1639
|
-
|
|
1640
1676
|
//#endregion
|
|
1641
1677
|
//#region ../core/dist/dev/dom/store/signal-keys.js
|
|
1642
1678
|
const signalKeys = { seek: Symbol.for("@videojs/seek") };
|
|
@@ -1651,6 +1687,7 @@ const timeFeature = definePlayerFeature({
|
|
|
1651
1687
|
seeking: false,
|
|
1652
1688
|
async seek(time) {
|
|
1653
1689
|
const { media } = target(), signal = signals.supersede(signalKeys.seek);
|
|
1690
|
+
if (!isMediaSeekCapable(media) || !isMediaSourceCapable(media)) return 0;
|
|
1654
1691
|
if (!hasMetadata(media)) {
|
|
1655
1692
|
if (!await onEvent(media, "loadedmetadata", { signal }).catch(() => false)) return media.currentTime;
|
|
1656
1693
|
}
|
|
@@ -1666,6 +1703,7 @@ const timeFeature = definePlayerFeature({
|
|
|
1666
1703
|
}),
|
|
1667
1704
|
attach({ target, signal, set, get }) {
|
|
1668
1705
|
const { media } = target;
|
|
1706
|
+
if (!isMediaSeekCapable(media)) return;
|
|
1669
1707
|
const sync = () => set({
|
|
1670
1708
|
currentTime: media.currentTime,
|
|
1671
1709
|
duration: Number.isFinite(media.duration) ? media.duration : 0,
|
|
@@ -1697,6 +1735,7 @@ const volumeFeature = definePlayerFeature({
|
|
|
1697
1735
|
volumeAvailability: "unavailable",
|
|
1698
1736
|
setVolume(volume) {
|
|
1699
1737
|
const { media } = target();
|
|
1738
|
+
if (!isMediaVolumeCapable(media)) return 0;
|
|
1700
1739
|
const clamped = Math.max(0, Math.min(1, volume));
|
|
1701
1740
|
if (clamped > 0 && media.muted) media.muted = false;
|
|
1702
1741
|
media.volume = clamped;
|
|
@@ -1704,6 +1743,7 @@ const volumeFeature = definePlayerFeature({
|
|
|
1704
1743
|
},
|
|
1705
1744
|
toggleMuted() {
|
|
1706
1745
|
const { media } = target();
|
|
1746
|
+
if (!isMediaVolumeCapable(media)) return false;
|
|
1707
1747
|
if (media.muted || media.volume === 0) {
|
|
1708
1748
|
media.muted = false;
|
|
1709
1749
|
if (media.volume === 0) media.volume = UNMUTE_VOLUME;
|
|
@@ -1713,6 +1753,7 @@ const volumeFeature = definePlayerFeature({
|
|
|
1713
1753
|
}),
|
|
1714
1754
|
attach({ target, signal, set }) {
|
|
1715
1755
|
const { media } = target;
|
|
1756
|
+
if (!isMediaVolumeCapable(media)) return;
|
|
1716
1757
|
set({ volumeAvailability: canSetVolume() });
|
|
1717
1758
|
const sync = () => set({
|
|
1718
1759
|
volume: media.volume,
|
|
@@ -2137,5 +2178,5 @@ function createPlayer(config) {
|
|
|
2137
2178
|
}
|
|
2138
2179
|
|
|
2139
2180
|
//#endregion
|
|
2140
|
-
export { ContextConsumer as A, isFunction as C, MediaContainerElement as D, isUndefined as E, isEditableTarget as M,
|
|
2141
|
-
//# sourceMappingURL=create-player-
|
|
2181
|
+
export { ContextConsumer as A, isFunction as C, MediaContainerElement as D, isUndefined as E, isEditableTarget as M, isInteractiveActivation as N, MediaElement as O, AbortControllerRegistry as S, isNumber as T, getGestureCoordinator as _, backgroundFeatures as a, noop as b, timeFeature as c, playbackRateFeature as d, playbackFeature as f, controlsFeature as g, errorFeature as h, audioFeatures as i, ReactiveElement as j, ContextProvider as k, textTrackFeature as l, fullscreenFeature as m, PlayerController as n, videoFeatures as o, pipFeature as p, SnapshotController as r, volumeFeature as s, createPlayer as t, sourceFeature as u, bufferFeature as v, isNull as w, throwNoTargetError as x, createState as y };
|
|
2182
|
+
//# sourceMappingURL=create-player-Bi6WUwDZ.js.map
|