@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
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"media-attach-mixin-CMH1ziXP.js","names":["ContextEvent","#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,IAAIA,oBACF,SACA,OACC,OAAO,gBAAgB;AACtB,SAAI,YAAa,OAAKC,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,2 +0,0 @@
|
|
|
1
|
-
import{a as e,n as t}from"./context-C-IpVHEt.js";function n(t){return n=>{class r extends n{#e=null;#t=null;getMediaTarget(){return this}connectedCallback(){super.connectedCallback?.(),this.dispatchEvent(new e(t,this,(e,t)=>{t&&(this.#t=t),this.#e=e?.setMedia??null,this.isConnected&&this.#e?.(this.getMediaTarget())},!0))}disconnectedCallback(){super.disconnectedCallback?.(),this.#e?.(null),this.#t?.(),this.#t=null,this.#e=null}}return r}}const r=n(t);export{r as t};
|
|
2
|
-
//# sourceMappingURL=media-attach-mixin-DUzmXEJ3.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"media-attach-mixin-DUzmXEJ3.js","names":["ContextEvent","#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":"iDAiBA,SAAgB,EAAuB,EAAyC,CAC9E,MAAmD,IAAqB,CACtE,MAAM,UAA4B,CAAoD,CACpF,GAAoD,KACpD,GAAoC,KAEpC,gBAA+B,CAC7B,OAAO,KAGT,mBAA6B,CAC3B,MAAM,qBAAqB,CAE3B,KAAK,cACH,IAAIA,EACF,EACA,MACC,EAAO,IAAgB,CAClB,IAAa,MAAA,EAAoB,GACrC,MAAA,EAAiB,GAAO,UAAY,KAChC,KAAK,aACP,MAAA,IAAiB,KAAK,gBAAgB,CAAC,EAG3C,GACD,CACF,CAGH,sBAAgC,CAC9B,MAAM,wBAAwB,CAC9B,MAAA,IAAiB,KAAK,CACtB,MAAA,KAAqB,CACrB,MAAA,EAAoB,KACpB,MAAA,EAAiB,MAIrB,OAAO,GAIX,MAAa,EAAmB,EAAuB,EAAa"}
|
|
@@ -1,432 +0,0 @@
|
|
|
1
|
-
//#region ../core/dist/dev/core/utils/bridge-events.js
|
|
2
|
-
/** Wrap `source.dispatchEvent` so every event is also re-dispatched on `target`. */
|
|
3
|
-
function bridgeEvents(source, target) {
|
|
4
|
-
if (!source.dispatchEvent) return;
|
|
5
|
-
source.dispatchEvent = (event) => target.dispatchEvent(new event.constructor(event.type, event));
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
//#endregion
|
|
9
|
-
//#region ../core/dist/dev/core/utils/define-class-prop-hooks.js
|
|
10
|
-
function defineClassPropHooks(Class, BaseClassProto) {
|
|
11
|
-
for (const prop of Object.getOwnPropertyNames(BaseClassProto)) {
|
|
12
|
-
if (prop in Class.prototype || prop.startsWith("_")) continue;
|
|
13
|
-
const descriptor = Object.getOwnPropertyDescriptor(BaseClassProto, prop);
|
|
14
|
-
if (!descriptor) continue;
|
|
15
|
-
const config = {};
|
|
16
|
-
if (typeof descriptor.value === "function") config.value = function(...args) {
|
|
17
|
-
return this.call?.(prop, ...args);
|
|
18
|
-
};
|
|
19
|
-
else if (descriptor.get) {
|
|
20
|
-
config.get = function() {
|
|
21
|
-
return this.get?.(prop);
|
|
22
|
-
};
|
|
23
|
-
if (descriptor.set) config.set = function(val) {
|
|
24
|
-
this.set?.(prop, val);
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
Object.defineProperty(Class.prototype, prop, config);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
//#endregion
|
|
32
|
-
//#region ../core/dist/dev/core/media/delegate.js
|
|
33
|
-
/**
|
|
34
|
-
* Mixin that intercepts `get`, `set`, and `call` to delegate property access
|
|
35
|
-
* and method calls to an instance of `DelegateClass` before falling through
|
|
36
|
-
* to the base class implementation.
|
|
37
|
-
*
|
|
38
|
-
* Works with both `CustomMediaMixin` and `ProxyMixin`.
|
|
39
|
-
*/
|
|
40
|
-
function DelegateMixin(BaseClass, DelegateClass) {
|
|
41
|
-
class DelegateImpl extends BaseClass {
|
|
42
|
-
#delegate = new DelegateClass();
|
|
43
|
-
constructor(...args) {
|
|
44
|
-
super(...args);
|
|
45
|
-
if (this.#delegate instanceof EventTarget) bridgeEvents(this.#delegate, this);
|
|
46
|
-
}
|
|
47
|
-
get(prop) {
|
|
48
|
-
if (prop in this.#delegate) return this.#delegate[prop];
|
|
49
|
-
return super.get?.(prop);
|
|
50
|
-
}
|
|
51
|
-
set(prop, val) {
|
|
52
|
-
if (prop in this.#delegate) {
|
|
53
|
-
this.#delegate[prop] = val;
|
|
54
|
-
return;
|
|
55
|
-
}
|
|
56
|
-
super.set?.(prop, val);
|
|
57
|
-
}
|
|
58
|
-
call(prop, ...args) {
|
|
59
|
-
if (prop in this.#delegate) return this.#delegate[prop](...args);
|
|
60
|
-
return super.call?.(prop, ...args);
|
|
61
|
-
}
|
|
62
|
-
attach(target) {
|
|
63
|
-
this.#delegate.attach?.(target);
|
|
64
|
-
super.attach?.(target);
|
|
65
|
-
}
|
|
66
|
-
detach() {
|
|
67
|
-
this.#delegate.detach?.();
|
|
68
|
-
super.detach?.();
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
for (let proto = DelegateClass.prototype; proto && proto !== Object.prototype; proto = Object.getPrototypeOf(proto)) defineClassPropHooks(DelegateImpl, proto);
|
|
72
|
-
return DelegateImpl;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
//#endregion
|
|
76
|
-
//#region ../core/dist/dev/dom/media/custom-media-element/index.js
|
|
77
|
-
/**
|
|
78
|
-
* Custom Media Element
|
|
79
|
-
* Based on https://github.com/muxinc/custom-video-element - Mux - MIT License
|
|
80
|
-
*
|
|
81
|
-
* The goal is to create an element that works just like the video element
|
|
82
|
-
* but can be extended/sub-classed, because native elements cannot be
|
|
83
|
-
* extended today across browsers.
|
|
84
|
-
*/
|
|
85
|
-
const Events = [
|
|
86
|
-
"abort",
|
|
87
|
-
"canplay",
|
|
88
|
-
"canplaythrough",
|
|
89
|
-
"durationchange",
|
|
90
|
-
"emptied",
|
|
91
|
-
"encrypted",
|
|
92
|
-
"ended",
|
|
93
|
-
"error",
|
|
94
|
-
"loadeddata",
|
|
95
|
-
"loadedmetadata",
|
|
96
|
-
"loadstart",
|
|
97
|
-
"pause",
|
|
98
|
-
"play",
|
|
99
|
-
"playing",
|
|
100
|
-
"progress",
|
|
101
|
-
"ratechange",
|
|
102
|
-
"seeked",
|
|
103
|
-
"seeking",
|
|
104
|
-
"stalled",
|
|
105
|
-
"suspend",
|
|
106
|
-
"timeupdate",
|
|
107
|
-
"volumechange",
|
|
108
|
-
"waiting",
|
|
109
|
-
"waitingforkey",
|
|
110
|
-
"resize",
|
|
111
|
-
"enterpictureinpicture",
|
|
112
|
-
"leavepictureinpicture",
|
|
113
|
-
"webkitbeginfullscreen",
|
|
114
|
-
"webkitendfullscreen",
|
|
115
|
-
"webkitpresentationmodechanged"
|
|
116
|
-
];
|
|
117
|
-
const Attributes = [
|
|
118
|
-
"autopictureinpicture",
|
|
119
|
-
"disablepictureinpicture",
|
|
120
|
-
"disableremoteplayback",
|
|
121
|
-
"autoplay",
|
|
122
|
-
"controls",
|
|
123
|
-
"controlslist",
|
|
124
|
-
"crossorigin",
|
|
125
|
-
"loop",
|
|
126
|
-
"muted",
|
|
127
|
-
"playsinline",
|
|
128
|
-
"poster",
|
|
129
|
-
"preload",
|
|
130
|
-
"src"
|
|
131
|
-
];
|
|
132
|
-
/** CSS custom property names for video elements. */
|
|
133
|
-
const VideoCSSVars = {
|
|
134
|
-
borderRadius: "--media-video-border-radius",
|
|
135
|
-
objectFit: "--media-object-fit",
|
|
136
|
-
objectPosition: "--media-object-position",
|
|
137
|
-
captionTrackDuration: "--media-caption-track-duration",
|
|
138
|
-
captionTrackDelay: "--media-caption-track-delay",
|
|
139
|
-
captionTrackY: "--media-caption-track-y"
|
|
140
|
-
};
|
|
141
|
-
/**
|
|
142
|
-
* Helper function to generate the HTML template for audio elements.
|
|
143
|
-
*/
|
|
144
|
-
function getAudioTemplateHTML(attrs) {
|
|
145
|
-
return `
|
|
146
|
-
<style>
|
|
147
|
-
:host {
|
|
148
|
-
display: inline-flex;
|
|
149
|
-
line-height: 0;
|
|
150
|
-
flex-direction: column;
|
|
151
|
-
justify-content: end;
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
audio {
|
|
155
|
-
width: 100%;
|
|
156
|
-
}
|
|
157
|
-
</style>
|
|
158
|
-
<slot name="media">
|
|
159
|
-
<audio${serializeAttributes(attrs)}></audio>
|
|
160
|
-
</slot>
|
|
161
|
-
<slot></slot>
|
|
162
|
-
`;
|
|
163
|
-
}
|
|
164
|
-
/**
|
|
165
|
-
* Helper function to generate the HTML template for video elements.
|
|
166
|
-
*/
|
|
167
|
-
function getVideoTemplateHTML(attrs) {
|
|
168
|
-
return `
|
|
169
|
-
<style>
|
|
170
|
-
:host {
|
|
171
|
-
display: contents;
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
video {
|
|
175
|
-
display: block;
|
|
176
|
-
width: 100%;
|
|
177
|
-
height: 100%;
|
|
178
|
-
border-radius: var(${VideoCSSVars.borderRadius});
|
|
179
|
-
object-fit: var(${VideoCSSVars.objectFit}, contain);
|
|
180
|
-
object-position: var(${VideoCSSVars.objectPosition}, center);
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
video::-webkit-media-text-track-container {
|
|
184
|
-
transition: translate var(${VideoCSSVars.captionTrackDuration}, 0) ease-out;
|
|
185
|
-
transition-delay: var(${VideoCSSVars.captionTrackDelay}, 0);
|
|
186
|
-
translate: 0 var(${VideoCSSVars.captionTrackY}, 0);
|
|
187
|
-
scale: 0.98;
|
|
188
|
-
z-index: 1;
|
|
189
|
-
font-family: inherit;
|
|
190
|
-
}
|
|
191
|
-
</style>
|
|
192
|
-
<slot name="media">
|
|
193
|
-
<video${serializeAttributes(attrs)}></video>
|
|
194
|
-
</slot>
|
|
195
|
-
<slot></slot>
|
|
196
|
-
`;
|
|
197
|
-
}
|
|
198
|
-
function CustomMediaMixin(superclass, { tag, is }) {
|
|
199
|
-
const nativeElTest = globalThis.document?.createElement?.(tag, { is });
|
|
200
|
-
const nativeElProps = nativeElTest ? getNativeElProps(nativeElTest) : [];
|
|
201
|
-
return class CustomMedia extends superclass {
|
|
202
|
-
static getTemplateHTML = tag.endsWith("audio") ? getAudioTemplateHTML : getVideoTemplateHTML;
|
|
203
|
-
static shadowRootOptions = { mode: "open" };
|
|
204
|
-
static Events = Events;
|
|
205
|
-
static #isDefined = false;
|
|
206
|
-
static #propsToAttrs;
|
|
207
|
-
static get observedAttributes() {
|
|
208
|
-
CustomMedia.#define();
|
|
209
|
-
return [...nativeElTest?.constructor?.observedAttributes ?? [], ...Attributes];
|
|
210
|
-
}
|
|
211
|
-
static #define() {
|
|
212
|
-
if (CustomMedia.#isDefined) return;
|
|
213
|
-
CustomMedia.#isDefined = true;
|
|
214
|
-
CustomMedia.#propsToAttrs = new Set(CustomMedia.observedAttributes);
|
|
215
|
-
CustomMedia.#propsToAttrs.delete("muted");
|
|
216
|
-
for (const prop of nativeElProps) {
|
|
217
|
-
if (prop in CustomMedia.prototype) continue;
|
|
218
|
-
if (typeof nativeElTest[prop] === "function") CustomMedia.prototype[prop] = function(...args) {
|
|
219
|
-
this.#init();
|
|
220
|
-
return this.call(prop, ...args);
|
|
221
|
-
};
|
|
222
|
-
else {
|
|
223
|
-
const config = { get() {
|
|
224
|
-
this.#init();
|
|
225
|
-
return this.get(prop);
|
|
226
|
-
} };
|
|
227
|
-
if (prop !== prop.toUpperCase()) config.set = function(val) {
|
|
228
|
-
this.#init();
|
|
229
|
-
this.set(prop, val);
|
|
230
|
-
};
|
|
231
|
-
Object.defineProperty(CustomMedia.prototype, prop, config);
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
#isInit = false;
|
|
236
|
-
#target = null;
|
|
237
|
-
#childMap = /* @__PURE__ */ new Map();
|
|
238
|
-
#childObserver;
|
|
239
|
-
get(prop) {
|
|
240
|
-
const attr = prop.toLowerCase();
|
|
241
|
-
if (CustomMedia.#propsToAttrs.has(attr)) {
|
|
242
|
-
const val = this.getAttribute(attr);
|
|
243
|
-
return val === null ? false : val === "" ? true : val;
|
|
244
|
-
}
|
|
245
|
-
return this.target?.[prop];
|
|
246
|
-
}
|
|
247
|
-
set(prop, val) {
|
|
248
|
-
const attr = prop.toLowerCase();
|
|
249
|
-
if (CustomMedia.#propsToAttrs.has(attr)) {
|
|
250
|
-
if (val === true || val === false || val == null) this.toggleAttribute(attr, Boolean(val));
|
|
251
|
-
else this.setAttribute(attr, val);
|
|
252
|
-
return;
|
|
253
|
-
}
|
|
254
|
-
if (this.target) this.target[prop] = val;
|
|
255
|
-
}
|
|
256
|
-
call(prop, ...args) {
|
|
257
|
-
return (this.target?.[prop])?.apply(this.target, args);
|
|
258
|
-
}
|
|
259
|
-
get target() {
|
|
260
|
-
this.#init();
|
|
261
|
-
return this.#target ?? this.querySelector(":scope > [slot=media]") ?? this.querySelector(tag) ?? this.shadowRoot?.querySelector(tag) ?? null;
|
|
262
|
-
}
|
|
263
|
-
set target(val) {
|
|
264
|
-
this.#target = val;
|
|
265
|
-
}
|
|
266
|
-
get defaultMuted() {
|
|
267
|
-
this.#init();
|
|
268
|
-
return this.get("muted");
|
|
269
|
-
}
|
|
270
|
-
set defaultMuted(val) {
|
|
271
|
-
this.#init();
|
|
272
|
-
this.set("muted", val);
|
|
273
|
-
}
|
|
274
|
-
#init() {
|
|
275
|
-
if (this.#isInit) return;
|
|
276
|
-
this.#isInit = true;
|
|
277
|
-
this.init();
|
|
278
|
-
}
|
|
279
|
-
init() {
|
|
280
|
-
if (!this.shadowRoot) {
|
|
281
|
-
this.attachShadow({ mode: "open" });
|
|
282
|
-
const attrs = namedNodeMapToObject(this.attributes);
|
|
283
|
-
if (is) attrs.is = is;
|
|
284
|
-
if (tag) attrs.part = tag;
|
|
285
|
-
this.shadowRoot.innerHTML = this.constructor.getTemplateHTML(attrs);
|
|
286
|
-
}
|
|
287
|
-
this.target.muted = this.hasAttribute("muted");
|
|
288
|
-
for (const prop of nativeElProps) this.#upgradeProperty(prop);
|
|
289
|
-
this.#childObserver = new MutationObserver(this.#syncMediaChildAttribute.bind(this));
|
|
290
|
-
this.shadowRoot.addEventListener("slotchange", () => this.#syncMediaChildren());
|
|
291
|
-
this.#syncMediaChildren();
|
|
292
|
-
for (const type of this.constructor.Events) this.shadowRoot.addEventListener(type, this.#deferForwardEvent, true);
|
|
293
|
-
}
|
|
294
|
-
#deferForwardEvent = (event) => {
|
|
295
|
-
if (this.target && this.target === event.target) this.target.addEventListener(event.type, this.#forwardEvent, { once: true });
|
|
296
|
-
};
|
|
297
|
-
#forwardEvent = (event) => {
|
|
298
|
-
this.dispatchEvent(new event.constructor(event.type, event));
|
|
299
|
-
};
|
|
300
|
-
#syncMediaChildren() {
|
|
301
|
-
const removeNativeChildren = new Map(this.#childMap);
|
|
302
|
-
((this.shadowRoot?.querySelector("slot:not([name])"))?.assignedElements({ flatten: true }).filter((el) => ["track", "source"].includes(el.localName))).forEach((el) => {
|
|
303
|
-
removeNativeChildren.delete(el);
|
|
304
|
-
let clone = this.#childMap.get(el);
|
|
305
|
-
if (!clone) {
|
|
306
|
-
clone = el.cloneNode();
|
|
307
|
-
this.#childMap.set(el, clone);
|
|
308
|
-
this.#childObserver?.observe(el, { attributes: true });
|
|
309
|
-
}
|
|
310
|
-
this.target?.append(clone);
|
|
311
|
-
this.#enableDefaultTrack(clone);
|
|
312
|
-
});
|
|
313
|
-
removeNativeChildren.forEach((clone, el) => {
|
|
314
|
-
clone.remove();
|
|
315
|
-
this.#childMap.delete(el);
|
|
316
|
-
});
|
|
317
|
-
}
|
|
318
|
-
#syncMediaChildAttribute(mutations) {
|
|
319
|
-
for (const mutation of mutations) if (mutation.type === "attributes") {
|
|
320
|
-
const { target, attributeName } = mutation;
|
|
321
|
-
const clone = this.#childMap.get(target);
|
|
322
|
-
if (clone && attributeName) {
|
|
323
|
-
clone.setAttribute(attributeName, target.getAttribute(attributeName) ?? "");
|
|
324
|
-
this.#enableDefaultTrack(clone);
|
|
325
|
-
}
|
|
326
|
-
}
|
|
327
|
-
}
|
|
328
|
-
#enableDefaultTrack(trackEl) {
|
|
329
|
-
if (trackEl && trackEl.localName === "track" && trackEl.default && (trackEl.kind === "chapters" || trackEl.kind === "metadata") && trackEl.track.mode === "disabled") trackEl.track.mode = "hidden";
|
|
330
|
-
}
|
|
331
|
-
#upgradeProperty(prop) {
|
|
332
|
-
if (Object.hasOwn(this, prop)) {
|
|
333
|
-
const value = this[prop];
|
|
334
|
-
delete this[prop];
|
|
335
|
-
this[prop] = value;
|
|
336
|
-
}
|
|
337
|
-
}
|
|
338
|
-
attributeChangedCallback(attrName, oldValue, newValue) {
|
|
339
|
-
this.#init();
|
|
340
|
-
this.#forwardAttribute(attrName, oldValue, newValue);
|
|
341
|
-
}
|
|
342
|
-
#forwardAttribute(attrName, _oldValue, newValue) {
|
|
343
|
-
if (["id", "class"].includes(attrName)) return;
|
|
344
|
-
if (!CustomMedia.observedAttributes.includes(attrName) && this.constructor.observedAttributes.includes(attrName)) return;
|
|
345
|
-
if (newValue === null) this.target?.removeAttribute(attrName);
|
|
346
|
-
else if (this.target?.getAttribute(attrName) !== newValue) this.target?.setAttribute(attrName, newValue);
|
|
347
|
-
}
|
|
348
|
-
connectedCallback() {
|
|
349
|
-
this.#init();
|
|
350
|
-
}
|
|
351
|
-
};
|
|
352
|
-
}
|
|
353
|
-
/**
|
|
354
|
-
* Helper function to get all properties from a native media element's prototype.
|
|
355
|
-
*/
|
|
356
|
-
function getNativeElProps(nativeElTest) {
|
|
357
|
-
const nativeElProps = [];
|
|
358
|
-
for (let proto = Object.getPrototypeOf(nativeElTest); proto && proto !== HTMLElement.prototype; proto = Object.getPrototypeOf(proto)) {
|
|
359
|
-
const props = Object.getOwnPropertyNames(proto);
|
|
360
|
-
nativeElProps.push(...props);
|
|
361
|
-
}
|
|
362
|
-
return nativeElProps;
|
|
363
|
-
}
|
|
364
|
-
/**
|
|
365
|
-
* Helper function to serialize attributes into a string.
|
|
366
|
-
*/
|
|
367
|
-
function serializeAttributes(attrs) {
|
|
368
|
-
let html = "";
|
|
369
|
-
for (const key in attrs) {
|
|
370
|
-
if (!Attributes.includes(key)) continue;
|
|
371
|
-
const value = attrs[key];
|
|
372
|
-
if (value === "") html += ` ${key}`;
|
|
373
|
-
else html += ` ${key}="${value}"`;
|
|
374
|
-
}
|
|
375
|
-
return html;
|
|
376
|
-
}
|
|
377
|
-
/**
|
|
378
|
-
* Helper function to convert NamedNodeMap to a plain object.
|
|
379
|
-
*/
|
|
380
|
-
function namedNodeMapToObject(namedNodeMap) {
|
|
381
|
-
const obj = {};
|
|
382
|
-
for (const attr of namedNodeMap) obj[attr.name] = attr.value;
|
|
383
|
-
return obj;
|
|
384
|
-
}
|
|
385
|
-
const CustomVideoElement = CustomMediaMixin(globalThis.HTMLElement ?? class {}, { tag: "video" });
|
|
386
|
-
const CustomAudioElement = CustomMediaMixin(globalThis.HTMLElement ?? class {}, { tag: "audio" });
|
|
387
|
-
|
|
388
|
-
//#endregion
|
|
389
|
-
//#region src/utils/media-props-mixin.ts
|
|
390
|
-
function camelToKebab(str) {
|
|
391
|
-
return str.replace(/[A-Z]/g, (m) => `-${m.toLowerCase()}`);
|
|
392
|
-
}
|
|
393
|
-
function buildAttrPropMap(DelegateClass) {
|
|
394
|
-
const map = /* @__PURE__ */ new Map();
|
|
395
|
-
for (let proto = DelegateClass.prototype; proto && proto !== Object.prototype; proto = Object.getPrototypeOf(proto)) for (const key of Object.getOwnPropertyNames(proto)) {
|
|
396
|
-
if (key.startsWith("_")) continue;
|
|
397
|
-
if (Object.getOwnPropertyDescriptor(proto, key)?.set) map.set(camelToKebab(key), key);
|
|
398
|
-
}
|
|
399
|
-
return map;
|
|
400
|
-
}
|
|
401
|
-
/**
|
|
402
|
-
* Mixin that intercepts `getTemplateHTML` and `attributeChangedCallback` to
|
|
403
|
-
* handle delegate-owned properties. Delegate props are stripped from template
|
|
404
|
-
* HTML attrs and routed through the property setter in `attributeChangedCallback`
|
|
405
|
-
* instead of being forwarded to the inner native element.
|
|
406
|
-
*/
|
|
407
|
-
function MediaPropsMixin(BaseClass, DelegateClass) {
|
|
408
|
-
const attrToProp = buildAttrPropMap(DelegateClass);
|
|
409
|
-
class MediaPropsElement extends BaseClass {
|
|
410
|
-
static get observedAttributes() {
|
|
411
|
-
return [...new Set([...super.observedAttributes ?? [], ...attrToProp.keys()])];
|
|
412
|
-
}
|
|
413
|
-
static getTemplateHTML(attrs) {
|
|
414
|
-
const filtered = { ...attrs };
|
|
415
|
-
for (const attr of attrToProp.keys()) delete filtered[attr];
|
|
416
|
-
return super.getTemplateHTML(filtered);
|
|
417
|
-
}
|
|
418
|
-
attributeChangedCallback(attrName, oldValue, newValue) {
|
|
419
|
-
const prop = attrToProp.get(attrName);
|
|
420
|
-
if (prop) {
|
|
421
|
-
if (oldValue !== newValue) this[prop] = typeof this[prop] === "boolean" ? newValue !== null : newValue ?? "";
|
|
422
|
-
return;
|
|
423
|
-
}
|
|
424
|
-
super.attributeChangedCallback?.(attrName, oldValue, newValue);
|
|
425
|
-
}
|
|
426
|
-
}
|
|
427
|
-
return MediaPropsElement;
|
|
428
|
-
}
|
|
429
|
-
|
|
430
|
-
//#endregion
|
|
431
|
-
export { bridgeEvents as a, DelegateMixin as i, CustomAudioElement as n, CustomVideoElement as r, MediaPropsMixin as t };
|
|
432
|
-
//# sourceMappingURL=media-props-mixin-hheRmkup.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"media-props-mixin-hheRmkup.js","names":["#delegate","#isDefined","#propsToAttrs","#define","#init","#target","#isInit","#upgradeProperty","#childObserver","#syncMediaChildAttribute","#syncMediaChildren","#deferForwardEvent","#forwardEvent","#childMap","#enableDefaultTrack","#forwardAttribute"],"sources":["../../core/dist/dev/core/utils/bridge-events.js","../../core/dist/dev/core/utils/define-class-prop-hooks.js","../../core/dist/dev/core/media/delegate.js","../../core/dist/dev/dom/media/custom-media-element/index.js","../src/utils/media-props-mixin.ts"],"sourcesContent":["//#region src/core/utils/bridge-events.ts\n/** Wrap `source.dispatchEvent` so every event is also re-dispatched on `target`. */\nfunction bridgeEvents(source, target) {\n\tif (!source.dispatchEvent) return;\n\tsource.dispatchEvent = (event) => target.dispatchEvent(new event.constructor(event.type, event));\n}\n//#endregion\nexport { bridgeEvents };\n\n//# sourceMappingURL=bridge-events.js.map","//#region src/core/utils/define-class-prop-hooks.ts\nfunction defineClassPropHooks(Class, BaseClassProto) {\n\tfor (const prop of Object.getOwnPropertyNames(BaseClassProto)) {\n\t\tif (prop in Class.prototype || prop.startsWith(\"_\")) continue;\n\t\tconst descriptor = Object.getOwnPropertyDescriptor(BaseClassProto, prop);\n\t\tif (!descriptor) continue;\n\t\tconst config = {};\n\t\tif (typeof descriptor.value === \"function\") config.value = function(...args) {\n\t\t\treturn this.call?.(prop, ...args);\n\t\t};\n\t\telse if (descriptor.get) {\n\t\t\tconfig.get = function() {\n\t\t\t\treturn this.get?.(prop);\n\t\t\t};\n\t\t\tif (descriptor.set) config.set = function(val) {\n\t\t\t\tthis.set?.(prop, val);\n\t\t\t};\n\t\t}\n\t\tObject.defineProperty(Class.prototype, prop, config);\n\t}\n}\n//#endregion\nexport { defineClassPropHooks };\n\n//# sourceMappingURL=define-class-prop-hooks.js.map","import { bridgeEvents } from \"../utils/bridge-events.js\";\nimport { defineClassPropHooks } from \"../utils/define-class-prop-hooks.js\";\n//#region src/core/media/delegate.ts\n/**\n* Mixin that intercepts `get`, `set`, and `call` to delegate property access\n* and method calls to an instance of `DelegateClass` before falling through\n* to the base class implementation.\n*\n* Works with both `CustomMediaMixin` and `ProxyMixin`.\n*/\nfunction DelegateMixin(BaseClass, DelegateClass) {\n\tclass DelegateImpl extends BaseClass {\n\t\t#delegate = new DelegateClass();\n\t\tconstructor(...args) {\n\t\t\tsuper(...args);\n\t\t\tif (this.#delegate instanceof EventTarget) bridgeEvents(this.#delegate, this);\n\t\t}\n\t\tget(prop) {\n\t\t\tif (prop in this.#delegate) return this.#delegate[prop];\n\t\t\treturn super.get?.(prop);\n\t\t}\n\t\tset(prop, val) {\n\t\t\tif (prop in this.#delegate) {\n\t\t\t\tthis.#delegate[prop] = val;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsuper.set?.(prop, val);\n\t\t}\n\t\tcall(prop, ...args) {\n\t\t\tif (prop in this.#delegate) return this.#delegate[prop](...args);\n\t\t\treturn super.call?.(prop, ...args);\n\t\t}\n\t\tattach(target) {\n\t\t\tthis.#delegate.attach?.(target);\n\t\t\tsuper.attach?.(target);\n\t\t}\n\t\tdetach() {\n\t\t\tthis.#delegate.detach?.();\n\t\t\tsuper.detach?.();\n\t\t}\n\t}\n\tfor (let proto = DelegateClass.prototype; proto && proto !== Object.prototype; proto = Object.getPrototypeOf(proto)) defineClassPropHooks(DelegateImpl, proto);\n\treturn DelegateImpl;\n}\n//#endregion\nexport { DelegateMixin };\n\n//# sourceMappingURL=delegate.js.map","//#region src/dom/media/custom-media-element/index.ts\n/**\n* Custom Media Element\n* Based on https://github.com/muxinc/custom-video-element - Mux - MIT License\n*\n* The goal is to create an element that works just like the video element\n* but can be extended/sub-classed, because native elements cannot be\n* extended today across browsers.\n*/\nconst Events = [\n\t\"abort\",\n\t\"canplay\",\n\t\"canplaythrough\",\n\t\"durationchange\",\n\t\"emptied\",\n\t\"encrypted\",\n\t\"ended\",\n\t\"error\",\n\t\"loadeddata\",\n\t\"loadedmetadata\",\n\t\"loadstart\",\n\t\"pause\",\n\t\"play\",\n\t\"playing\",\n\t\"progress\",\n\t\"ratechange\",\n\t\"seeked\",\n\t\"seeking\",\n\t\"stalled\",\n\t\"suspend\",\n\t\"timeupdate\",\n\t\"volumechange\",\n\t\"waiting\",\n\t\"waitingforkey\",\n\t\"resize\",\n\t\"enterpictureinpicture\",\n\t\"leavepictureinpicture\",\n\t\"webkitbeginfullscreen\",\n\t\"webkitendfullscreen\",\n\t\"webkitpresentationmodechanged\"\n];\nconst Attributes = [\n\t\"autopictureinpicture\",\n\t\"disablepictureinpicture\",\n\t\"disableremoteplayback\",\n\t\"autoplay\",\n\t\"controls\",\n\t\"controlslist\",\n\t\"crossorigin\",\n\t\"loop\",\n\t\"muted\",\n\t\"playsinline\",\n\t\"poster\",\n\t\"preload\",\n\t\"src\"\n];\n/** CSS custom property names for video elements. */\nconst VideoCSSVars = {\n\tborderRadius: \"--media-video-border-radius\",\n\tobjectFit: \"--media-object-fit\",\n\tobjectPosition: \"--media-object-position\",\n\tcaptionTrackDuration: \"--media-caption-track-duration\",\n\tcaptionTrackDelay: \"--media-caption-track-delay\",\n\tcaptionTrackY: \"--media-caption-track-y\"\n};\n/** CSS custom property names for audio elements. */\nconst AudioCSSVars = {};\n/**\n* Helper function to generate the HTML template for audio elements.\n*/\nfunction getAudioTemplateHTML(attrs) {\n\treturn `\n <style>\n :host {\n display: inline-flex;\n line-height: 0;\n flex-direction: column;\n justify-content: end;\n }\n\n audio {\n width: 100%;\n }\n </style>\n <slot name=\"media\">\n <audio${serializeAttributes(attrs)}></audio>\n </slot>\n <slot></slot>\n `;\n}\n/**\n* Helper function to generate the HTML template for video elements.\n*/\nfunction getVideoTemplateHTML(attrs) {\n\treturn `\n <style>\n :host {\n display: contents;\n }\n\n video {\n display: block;\n width: 100%;\n height: 100%;\n border-radius: var(${VideoCSSVars.borderRadius});\n object-fit: var(${VideoCSSVars.objectFit}, contain);\n object-position: var(${VideoCSSVars.objectPosition}, center);\n }\n\n video::-webkit-media-text-track-container {\n transition: translate var(${VideoCSSVars.captionTrackDuration}, 0) ease-out;\n transition-delay: var(${VideoCSSVars.captionTrackDelay}, 0);\n translate: 0 var(${VideoCSSVars.captionTrackY}, 0);\n scale: 0.98;\n z-index: 1;\n font-family: inherit;\n }\n </style>\n <slot name=\"media\">\n <video${serializeAttributes(attrs)}></video>\n </slot>\n <slot></slot>\n `;\n}\nfunction CustomMediaMixin(superclass, { tag, is }) {\n\tconst nativeElTest = globalThis.document?.createElement?.(tag, { is });\n\tconst nativeElProps = nativeElTest ? getNativeElProps(nativeElTest) : [];\n\treturn class CustomMedia extends superclass {\n\t\tstatic getTemplateHTML = tag.endsWith(\"audio\") ? getAudioTemplateHTML : getVideoTemplateHTML;\n\t\tstatic shadowRootOptions = { mode: \"open\" };\n\t\tstatic Events = Events;\n\t\tstatic #isDefined = false;\n\t\tstatic #propsToAttrs;\n\t\tstatic get observedAttributes() {\n\t\t\tCustomMedia.#define();\n\t\t\treturn [...nativeElTest?.constructor?.observedAttributes ?? [], ...Attributes];\n\t\t}\n\t\tstatic #define() {\n\t\t\tif (CustomMedia.#isDefined) return;\n\t\t\tCustomMedia.#isDefined = true;\n\t\t\tCustomMedia.#propsToAttrs = new Set(CustomMedia.observedAttributes);\n\t\t\tCustomMedia.#propsToAttrs.delete(\"muted\");\n\t\t\tfor (const prop of nativeElProps) {\n\t\t\t\tif (prop in CustomMedia.prototype) continue;\n\t\t\t\tif (typeof nativeElTest[prop] === \"function\") CustomMedia.prototype[prop] = function(...args) {\n\t\t\t\t\tthis.#init();\n\t\t\t\t\treturn this.call(prop, ...args);\n\t\t\t\t};\n\t\t\t\telse {\n\t\t\t\t\tconst config = { get() {\n\t\t\t\t\t\tthis.#init();\n\t\t\t\t\t\treturn this.get(prop);\n\t\t\t\t\t} };\n\t\t\t\t\tif (prop !== prop.toUpperCase()) config.set = function(val) {\n\t\t\t\t\t\tthis.#init();\n\t\t\t\t\t\tthis.set(prop, val);\n\t\t\t\t\t};\n\t\t\t\t\tObject.defineProperty(CustomMedia.prototype, prop, config);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t#isInit = false;\n\t\t#target = null;\n\t\t#childMap = /* @__PURE__ */ new Map();\n\t\t#childObserver;\n\t\tget(prop) {\n\t\t\tconst attr = prop.toLowerCase();\n\t\t\tif (CustomMedia.#propsToAttrs.has(attr)) {\n\t\t\t\tconst val = this.getAttribute(attr);\n\t\t\t\treturn val === null ? false : val === \"\" ? true : val;\n\t\t\t}\n\t\t\treturn this.target?.[prop];\n\t\t}\n\t\tset(prop, val) {\n\t\t\tconst attr = prop.toLowerCase();\n\t\t\tif (CustomMedia.#propsToAttrs.has(attr)) {\n\t\t\t\tif (val === true || val === false || val == null) this.toggleAttribute(attr, Boolean(val));\n\t\t\t\telse this.setAttribute(attr, val);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (this.target) this.target[prop] = val;\n\t\t}\n\t\tcall(prop, ...args) {\n\t\t\treturn (this.target?.[prop])?.apply(this.target, args);\n\t\t}\n\t\tget target() {\n\t\t\tthis.#init();\n\t\t\treturn this.#target ?? this.querySelector(\":scope > [slot=media]\") ?? this.querySelector(tag) ?? this.shadowRoot?.querySelector(tag) ?? null;\n\t\t}\n\t\tset target(val) {\n\t\t\tthis.#target = val;\n\t\t}\n\t\tget defaultMuted() {\n\t\t\tthis.#init();\n\t\t\treturn this.get(\"muted\");\n\t\t}\n\t\tset defaultMuted(val) {\n\t\t\tthis.#init();\n\t\t\tthis.set(\"muted\", val);\n\t\t}\n\t\t#init() {\n\t\t\tif (this.#isInit) return;\n\t\t\tthis.#isInit = true;\n\t\t\tthis.init();\n\t\t}\n\t\tinit() {\n\t\t\tif (!this.shadowRoot) {\n\t\t\t\tthis.attachShadow({ mode: \"open\" });\n\t\t\t\tconst attrs = namedNodeMapToObject(this.attributes);\n\t\t\t\tif (is) attrs.is = is;\n\t\t\t\tif (tag) attrs.part = tag;\n\t\t\t\tthis.shadowRoot.innerHTML = this.constructor.getTemplateHTML(attrs);\n\t\t\t}\n\t\t\tthis.target.muted = this.hasAttribute(\"muted\");\n\t\t\tfor (const prop of nativeElProps) this.#upgradeProperty(prop);\n\t\t\tthis.#childObserver = new MutationObserver(this.#syncMediaChildAttribute.bind(this));\n\t\t\tthis.shadowRoot.addEventListener(\"slotchange\", () => this.#syncMediaChildren());\n\t\t\tthis.#syncMediaChildren();\n\t\t\tfor (const type of this.constructor.Events) this.shadowRoot.addEventListener(type, this.#deferForwardEvent, true);\n\t\t}\n\t\t#deferForwardEvent = (event) => {\n\t\t\tif (this.target && this.target === event.target) this.target.addEventListener(event.type, this.#forwardEvent, { once: true });\n\t\t};\n\t\t#forwardEvent = (event) => {\n\t\t\tthis.dispatchEvent(new event.constructor(event.type, event));\n\t\t};\n\t\t#syncMediaChildren() {\n\t\t\tconst removeNativeChildren = new Map(this.#childMap);\n\t\t\t((this.shadowRoot?.querySelector(\"slot:not([name])\"))?.assignedElements({ flatten: true }).filter((el) => [\"track\", \"source\"].includes(el.localName))).forEach((el) => {\n\t\t\t\tremoveNativeChildren.delete(el);\n\t\t\t\tlet clone = this.#childMap.get(el);\n\t\t\t\tif (!clone) {\n\t\t\t\t\tclone = el.cloneNode();\n\t\t\t\t\tthis.#childMap.set(el, clone);\n\t\t\t\t\tthis.#childObserver?.observe(el, { attributes: true });\n\t\t\t\t}\n\t\t\t\tthis.target?.append(clone);\n\t\t\t\tthis.#enableDefaultTrack(clone);\n\t\t\t});\n\t\t\tremoveNativeChildren.forEach((clone, el) => {\n\t\t\t\tclone.remove();\n\t\t\t\tthis.#childMap.delete(el);\n\t\t\t});\n\t\t}\n\t\t#syncMediaChildAttribute(mutations) {\n\t\t\tfor (const mutation of mutations) if (mutation.type === \"attributes\") {\n\t\t\t\tconst { target, attributeName } = mutation;\n\t\t\t\tconst clone = this.#childMap.get(target);\n\t\t\t\tif (clone && attributeName) {\n\t\t\t\t\tclone.setAttribute(attributeName, target.getAttribute(attributeName) ?? \"\");\n\t\t\t\t\tthis.#enableDefaultTrack(clone);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t#enableDefaultTrack(trackEl) {\n\t\t\tif (trackEl && trackEl.localName === \"track\" && trackEl.default && (trackEl.kind === \"chapters\" || trackEl.kind === \"metadata\") && trackEl.track.mode === \"disabled\") trackEl.track.mode = \"hidden\";\n\t\t}\n\t\t#upgradeProperty(prop) {\n\t\t\tif (Object.hasOwn(this, prop)) {\n\t\t\t\tconst value = this[prop];\n\t\t\t\tdelete this[prop];\n\t\t\t\tthis[prop] = value;\n\t\t\t}\n\t\t}\n\t\tattributeChangedCallback(attrName, oldValue, newValue) {\n\t\t\tthis.#init();\n\t\t\tthis.#forwardAttribute(attrName, oldValue, newValue);\n\t\t}\n\t\t#forwardAttribute(attrName, _oldValue, newValue) {\n\t\t\tif ([\"id\", \"class\"].includes(attrName)) return;\n\t\t\tif (!CustomMedia.observedAttributes.includes(attrName) && this.constructor.observedAttributes.includes(attrName)) return;\n\t\t\tif (newValue === null) this.target?.removeAttribute(attrName);\n\t\t\telse if (this.target?.getAttribute(attrName) !== newValue) this.target?.setAttribute(attrName, newValue);\n\t\t}\n\t\tconnectedCallback() {\n\t\t\tthis.#init();\n\t\t}\n\t};\n}\n/**\n* Helper function to get all properties from a native media element's prototype.\n*/\nfunction getNativeElProps(nativeElTest) {\n\tconst nativeElProps = [];\n\tfor (let proto = Object.getPrototypeOf(nativeElTest); proto && proto !== HTMLElement.prototype; proto = Object.getPrototypeOf(proto)) {\n\t\tconst props = Object.getOwnPropertyNames(proto);\n\t\tnativeElProps.push(...props);\n\t}\n\treturn nativeElProps;\n}\n/**\n* Helper function to serialize attributes into a string.\n*/\nfunction serializeAttributes(attrs) {\n\tlet html = \"\";\n\tfor (const key in attrs) {\n\t\tif (!Attributes.includes(key)) continue;\n\t\tconst value = attrs[key];\n\t\tif (value === \"\") html += ` ${key}`;\n\t\telse html += ` ${key}=\"${value}\"`;\n\t}\n\treturn html;\n}\n/**\n* Helper function to convert NamedNodeMap to a plain object.\n*/\nfunction namedNodeMapToObject(namedNodeMap) {\n\tconst obj = {};\n\tfor (const attr of namedNodeMap) obj[attr.name] = attr.value;\n\treturn obj;\n}\nconst CustomVideoElement = CustomMediaMixin(globalThis.HTMLElement ?? class {}, { tag: \"video\" });\nconst CustomAudioElement = CustomMediaMixin(globalThis.HTMLElement ?? class {}, { tag: \"audio\" });\n//#endregion\nexport { Attributes, AudioCSSVars, CustomAudioElement, CustomMediaMixin, CustomVideoElement, Events, VideoCSSVars };\n\n//# sourceMappingURL=index.js.map","import type { AnyConstructor } from '@videojs/utils/types';\n\ntype AnyClass = abstract new (...args: any[]) => any;\n\nfunction camelToKebab(str: string): string {\n return str.replace(/[A-Z]/g, (m) => `-${m.toLowerCase()}`);\n}\n\nfunction buildAttrPropMap(DelegateClass: AnyClass): Map<string, string> {\n const map = new Map<string, string>();\n for (let proto = DelegateClass.prototype; proto && proto !== Object.prototype; proto = Object.getPrototypeOf(proto)) {\n for (const key of Object.getOwnPropertyNames(proto)) {\n if (key.startsWith('_')) continue;\n const desc = Object.getOwnPropertyDescriptor(proto, key);\n if (desc?.set) map.set(camelToKebab(key), key);\n }\n }\n return map;\n}\n\n/**\n * Mixin that intercepts `getTemplateHTML` and `attributeChangedCallback` to\n * handle delegate-owned properties. Delegate props are stripped from template\n * HTML attrs and routed through the property setter in `attributeChangedCallback`\n * instead of being forwarded to the inner native element.\n */\nexport function MediaPropsMixin<Base extends AnyConstructor<HTMLElement>>(\n BaseClass: Base,\n DelegateClass: AnyClass\n): Base {\n const attrToProp = buildAttrPropMap(DelegateClass);\n\n class MediaPropsElement extends (BaseClass as any) {\n static get observedAttributes(): string[] {\n // biome-ignore lint/complexity/noThisInStatic: intentional use of super\n return [...new Set([...(super.observedAttributes ?? []), ...attrToProp.keys()])];\n }\n\n static getTemplateHTML(attrs: Record<string, string>): string {\n const filtered = { ...attrs };\n for (const attr of attrToProp.keys()) {\n delete filtered[attr];\n }\n // biome-ignore lint/complexity/noThisInStatic: intentional use of super\n return super.getTemplateHTML(filtered);\n }\n\n attributeChangedCallback(attrName: string, oldValue: string | null, newValue: string | null): void {\n const prop = attrToProp.get(attrName);\n if (prop) {\n if (oldValue !== newValue) {\n (this as any)[prop] = typeof (this as any)[prop] === 'boolean' ? newValue !== null : (newValue ?? '');\n }\n return;\n }\n\n super.attributeChangedCallback?.(attrName, oldValue, newValue);\n }\n }\n\n return MediaPropsElement as unknown as Base;\n}\n"],"mappings":"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"}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
function e(e,t){e.dispatchEvent&&=e=>t.dispatchEvent(new e.constructor(e.type,e))}function t(e,t){for(let n of Object.getOwnPropertyNames(t)){if(n in e.prototype||n.startsWith(`_`))continue;let r=Object.getOwnPropertyDescriptor(t,n);if(!r)continue;let i={};typeof r.value==`function`?i.value=function(...e){return this.call?.(n,...e)}:r.get&&(i.get=function(){return this.get?.(n)},r.set&&(i.set=function(e){this.set?.(n,e)})),Object.defineProperty(e.prototype,n,i)}}function n(n,r){class i extends n{#e=new r;constructor(...t){super(...t),this.#e instanceof EventTarget&&e(this.#e,this)}get(e){return e in this.#e?this.#e[e]:super.get?.(e)}set(e,t){if(e in this.#e){this.#e[e]=t;return}super.set?.(e,t)}call(e,...t){return e in this.#e?this.#e[e](...t):super.call?.(e,...t)}attach(e){this.#e.attach?.(e),super.attach?.(e)}detach(){this.#e.detach?.(),super.detach?.()}}for(let e=r.prototype;e&&e!==Object.prototype;e=Object.getPrototypeOf(e))t(i,e);return i}const r=`abort.canplay.canplaythrough.durationchange.emptied.encrypted.ended.error.loadeddata.loadedmetadata.loadstart.pause.play.playing.progress.ratechange.seeked.seeking.stalled.suspend.timeupdate.volumechange.waiting.waitingforkey.resize.enterpictureinpicture.leavepictureinpicture.webkitbeginfullscreen.webkitendfullscreen.webkitpresentationmodechanged`.split(`.`),i=[`autopictureinpicture`,`disablepictureinpicture`,`disableremoteplayback`,`autoplay`,`controls`,`controlslist`,`crossorigin`,`loop`,`muted`,`playsinline`,`poster`,`preload`,`src`],a={borderRadius:`--media-video-border-radius`,objectFit:`--media-object-fit`,objectPosition:`--media-object-position`,captionTrackDuration:`--media-caption-track-duration`,captionTrackDelay:`--media-caption-track-delay`,captionTrackY:`--media-caption-track-y`};function o(e){return`
|
|
2
|
-
<style>
|
|
3
|
-
:host {
|
|
4
|
-
display: inline-flex;
|
|
5
|
-
line-height: 0;
|
|
6
|
-
flex-direction: column;
|
|
7
|
-
justify-content: end;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
audio {
|
|
11
|
-
width: 100%;
|
|
12
|
-
}
|
|
13
|
-
</style>
|
|
14
|
-
<slot name="media">
|
|
15
|
-
<audio${u(e)}></audio>
|
|
16
|
-
</slot>
|
|
17
|
-
<slot></slot>
|
|
18
|
-
`}function s(e){return`
|
|
19
|
-
<style>
|
|
20
|
-
:host {
|
|
21
|
-
display: contents;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
video {
|
|
25
|
-
display: block;
|
|
26
|
-
width: 100%;
|
|
27
|
-
height: 100%;
|
|
28
|
-
border-radius: var(${a.borderRadius});
|
|
29
|
-
object-fit: var(${a.objectFit}, contain);
|
|
30
|
-
object-position: var(${a.objectPosition}, center);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
video::-webkit-media-text-track-container {
|
|
34
|
-
transition: translate var(${a.captionTrackDuration}, 0) ease-out;
|
|
35
|
-
transition-delay: var(${a.captionTrackDelay}, 0);
|
|
36
|
-
translate: 0 var(${a.captionTrackY}, 0);
|
|
37
|
-
scale: 0.98;
|
|
38
|
-
z-index: 1;
|
|
39
|
-
font-family: inherit;
|
|
40
|
-
}
|
|
41
|
-
</style>
|
|
42
|
-
<slot name="media">
|
|
43
|
-
<video${u(e)}></video>
|
|
44
|
-
</slot>
|
|
45
|
-
<slot></slot>
|
|
46
|
-
`}function c(e,{tag:t,is:n}){let a=globalThis.document?.createElement?.(t,{is:n}),c=a?l(a):[];return class l extends e{static getTemplateHTML=t.endsWith(`audio`)?o:s;static shadowRootOptions={mode:`open`};static Events=r;static#e=!1;static#t;static get observedAttributes(){return l.#n(),[...a?.constructor?.observedAttributes??[],...i]}static#n(){if(!l.#e){l.#e=!0,l.#t=new Set(l.observedAttributes),l.#t.delete(`muted`);for(let e of c)if(!(e in l.prototype))if(typeof a[e]==`function`)l.prototype[e]=function(...t){return this.#s(),this.call(e,...t)};else{let t={get(){return this.#s(),this.get(e)}};e!==e.toUpperCase()&&(t.set=function(t){this.#s(),this.set(e,t)}),Object.defineProperty(l.prototype,e,t)}}}#r=!1;#i=null;#a=new Map;#o;get(e){let t=e.toLowerCase();if(l.#t.has(t)){let e=this.getAttribute(t);return e===null?!1:e===``?!0:e}return this.target?.[e]}set(e,t){let n=e.toLowerCase();if(l.#t.has(n)){t===!0||t===!1||t==null?this.toggleAttribute(n,!!t):this.setAttribute(n,t);return}this.target&&(this.target[e]=t)}call(e,...t){return(this.target?.[e])?.apply(this.target,t)}get target(){return this.#s(),this.#i??this.querySelector(`:scope > [slot=media]`)??this.querySelector(t)??this.shadowRoot?.querySelector(t)??null}set target(e){this.#i=e}get defaultMuted(){return this.#s(),this.get(`muted`)}set defaultMuted(e){this.#s(),this.set(`muted`,e)}#s(){this.#r||(this.#r=!0,this.init())}init(){if(!this.shadowRoot){this.attachShadow({mode:`open`});let e=d(this.attributes);n&&(e.is=n),t&&(e.part=t),this.shadowRoot.innerHTML=this.constructor.getTemplateHTML(e)}this.target.muted=this.hasAttribute(`muted`);for(let e of c)this.#p(e);this.#o=new MutationObserver(this.#d.bind(this)),this.shadowRoot.addEventListener(`slotchange`,()=>this.#u()),this.#u();for(let e of this.constructor.Events)this.shadowRoot.addEventListener(e,this.#c,!0)}#c=e=>{this.target&&this.target===e.target&&this.target.addEventListener(e.type,this.#l,{once:!0})};#l=e=>{this.dispatchEvent(new e.constructor(e.type,e))};#u(){let e=new Map(this.#a);((this.shadowRoot?.querySelector(`slot:not([name])`))?.assignedElements({flatten:!0}).filter(e=>[`track`,`source`].includes(e.localName))).forEach(t=>{e.delete(t);let n=this.#a.get(t);n||(n=t.cloneNode(),this.#a.set(t,n),this.#o?.observe(t,{attributes:!0})),this.target?.append(n),this.#f(n)}),e.forEach((e,t)=>{e.remove(),this.#a.delete(t)})}#d(e){for(let t of e)if(t.type===`attributes`){let{target:e,attributeName:n}=t,r=this.#a.get(e);r&&n&&(r.setAttribute(n,e.getAttribute(n)??``),this.#f(r))}}#f(e){e&&e.localName===`track`&&e.default&&(e.kind===`chapters`||e.kind===`metadata`)&&e.track.mode===`disabled`&&(e.track.mode=`hidden`)}#p(e){if(Object.hasOwn(this,e)){let t=this[e];delete this[e],this[e]=t}}attributeChangedCallback(e,t,n){this.#s(),this.#m(e,t,n)}#m(e,t,n){[`id`,`class`].includes(e)||!l.observedAttributes.includes(e)&&this.constructor.observedAttributes.includes(e)||(n===null?this.target?.removeAttribute(e):this.target?.getAttribute(e)!==n&&this.target?.setAttribute(e,n))}connectedCallback(){this.#s()}}}function l(e){let t=[];for(let n=Object.getPrototypeOf(e);n&&n!==HTMLElement.prototype;n=Object.getPrototypeOf(n)){let e=Object.getOwnPropertyNames(n);t.push(...e)}return t}function u(e){let t=``;for(let n in e){if(!i.includes(n))continue;let r=e[n];r===``?t+=` ${n}`:t+=` ${n}="${r}"`}return t}function d(e){let t={};for(let n of e)t[n.name]=n.value;return t}const f=c(globalThis.HTMLElement??class{},{tag:`video`}),p=c(globalThis.HTMLElement??class{},{tag:`audio`});function m(e){return e.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)}function h(e){let t=new Map;for(let n=e.prototype;n&&n!==Object.prototype;n=Object.getPrototypeOf(n))for(let e of Object.getOwnPropertyNames(n))e.startsWith(`_`)||Object.getOwnPropertyDescriptor(n,e)?.set&&t.set(m(e),e);return t}function g(e,t){let n=h(t);class r extends e{static get observedAttributes(){return[...new Set([...super.observedAttributes??[],...n.keys()])]}static getTemplateHTML(e){let t={...e};for(let e of n.keys())delete t[e];return super.getTemplateHTML(t)}attributeChangedCallback(e,t,r){let i=n.get(e);if(i){t!==r&&(this[i]=typeof this[i]==`boolean`?r!==null:r??``);return}super.attributeChangedCallback?.(e,t,r)}}return r}export{e as a,n as i,p as n,f as r,g as t};
|
|
47
|
-
//# sourceMappingURL=media-props-mixin-yRWj8yXF.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"media-props-mixin-yRWj8yXF.js","names":["#delegate","#isDefined","#propsToAttrs","#define","#init","#target","#isInit","#upgradeProperty","#childObserver","#syncMediaChildAttribute","#syncMediaChildren","#deferForwardEvent","#forwardEvent","#childMap","#enableDefaultTrack","#forwardAttribute"],"sources":["../../core/dist/default/core/utils/bridge-events.js","../../core/dist/default/core/utils/define-class-prop-hooks.js","../../core/dist/default/core/media/delegate.js","../../core/dist/default/dom/media/custom-media-element/index.js","../src/utils/media-props-mixin.ts"],"sourcesContent":["//#region src/core/utils/bridge-events.ts\n/** Wrap `source.dispatchEvent` so every event is also re-dispatched on `target`. */\nfunction bridgeEvents(source, target) {\n\tif (!source.dispatchEvent) return;\n\tsource.dispatchEvent = (event) => target.dispatchEvent(new event.constructor(event.type, event));\n}\n//#endregion\nexport { bridgeEvents };\n\n//# sourceMappingURL=bridge-events.js.map","//#region src/core/utils/define-class-prop-hooks.ts\nfunction defineClassPropHooks(Class, BaseClassProto) {\n\tfor (const prop of Object.getOwnPropertyNames(BaseClassProto)) {\n\t\tif (prop in Class.prototype || prop.startsWith(\"_\")) continue;\n\t\tconst descriptor = Object.getOwnPropertyDescriptor(BaseClassProto, prop);\n\t\tif (!descriptor) continue;\n\t\tconst config = {};\n\t\tif (typeof descriptor.value === \"function\") config.value = function(...args) {\n\t\t\treturn this.call?.(prop, ...args);\n\t\t};\n\t\telse if (descriptor.get) {\n\t\t\tconfig.get = function() {\n\t\t\t\treturn this.get?.(prop);\n\t\t\t};\n\t\t\tif (descriptor.set) config.set = function(val) {\n\t\t\t\tthis.set?.(prop, val);\n\t\t\t};\n\t\t}\n\t\tObject.defineProperty(Class.prototype, prop, config);\n\t}\n}\n//#endregion\nexport { defineClassPropHooks };\n\n//# sourceMappingURL=define-class-prop-hooks.js.map","import { bridgeEvents } from \"../utils/bridge-events.js\";\nimport { defineClassPropHooks } from \"../utils/define-class-prop-hooks.js\";\n//#region src/core/media/delegate.ts\n/**\n* Mixin that intercepts `get`, `set`, and `call` to delegate property access\n* and method calls to an instance of `DelegateClass` before falling through\n* to the base class implementation.\n*\n* Works with both `CustomMediaMixin` and `ProxyMixin`.\n*/\nfunction DelegateMixin(BaseClass, DelegateClass) {\n\tclass DelegateImpl extends BaseClass {\n\t\t#delegate = new DelegateClass();\n\t\tconstructor(...args) {\n\t\t\tsuper(...args);\n\t\t\tif (this.#delegate instanceof EventTarget) bridgeEvents(this.#delegate, this);\n\t\t}\n\t\tget(prop) {\n\t\t\tif (prop in this.#delegate) return this.#delegate[prop];\n\t\t\treturn super.get?.(prop);\n\t\t}\n\t\tset(prop, val) {\n\t\t\tif (prop in this.#delegate) {\n\t\t\t\tthis.#delegate[prop] = val;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsuper.set?.(prop, val);\n\t\t}\n\t\tcall(prop, ...args) {\n\t\t\tif (prop in this.#delegate) return this.#delegate[prop](...args);\n\t\t\treturn super.call?.(prop, ...args);\n\t\t}\n\t\tattach(target) {\n\t\t\tthis.#delegate.attach?.(target);\n\t\t\tsuper.attach?.(target);\n\t\t}\n\t\tdetach() {\n\t\t\tthis.#delegate.detach?.();\n\t\t\tsuper.detach?.();\n\t\t}\n\t}\n\tfor (let proto = DelegateClass.prototype; proto && proto !== Object.prototype; proto = Object.getPrototypeOf(proto)) defineClassPropHooks(DelegateImpl, proto);\n\treturn DelegateImpl;\n}\n//#endregion\nexport { DelegateMixin };\n\n//# sourceMappingURL=delegate.js.map","//#region src/dom/media/custom-media-element/index.ts\n/**\n* Custom Media Element\n* Based on https://github.com/muxinc/custom-video-element - Mux - MIT License\n*\n* The goal is to create an element that works just like the video element\n* but can be extended/sub-classed, because native elements cannot be\n* extended today across browsers.\n*/\nconst Events = [\n\t\"abort\",\n\t\"canplay\",\n\t\"canplaythrough\",\n\t\"durationchange\",\n\t\"emptied\",\n\t\"encrypted\",\n\t\"ended\",\n\t\"error\",\n\t\"loadeddata\",\n\t\"loadedmetadata\",\n\t\"loadstart\",\n\t\"pause\",\n\t\"play\",\n\t\"playing\",\n\t\"progress\",\n\t\"ratechange\",\n\t\"seeked\",\n\t\"seeking\",\n\t\"stalled\",\n\t\"suspend\",\n\t\"timeupdate\",\n\t\"volumechange\",\n\t\"waiting\",\n\t\"waitingforkey\",\n\t\"resize\",\n\t\"enterpictureinpicture\",\n\t\"leavepictureinpicture\",\n\t\"webkitbeginfullscreen\",\n\t\"webkitendfullscreen\",\n\t\"webkitpresentationmodechanged\"\n];\nconst Attributes = [\n\t\"autopictureinpicture\",\n\t\"disablepictureinpicture\",\n\t\"disableremoteplayback\",\n\t\"autoplay\",\n\t\"controls\",\n\t\"controlslist\",\n\t\"crossorigin\",\n\t\"loop\",\n\t\"muted\",\n\t\"playsinline\",\n\t\"poster\",\n\t\"preload\",\n\t\"src\"\n];\n/** CSS custom property names for video elements. */\nconst VideoCSSVars = {\n\tborderRadius: \"--media-video-border-radius\",\n\tobjectFit: \"--media-object-fit\",\n\tobjectPosition: \"--media-object-position\",\n\tcaptionTrackDuration: \"--media-caption-track-duration\",\n\tcaptionTrackDelay: \"--media-caption-track-delay\",\n\tcaptionTrackY: \"--media-caption-track-y\"\n};\n/** CSS custom property names for audio elements. */\nconst AudioCSSVars = {};\n/**\n* Helper function to generate the HTML template for audio elements.\n*/\nfunction getAudioTemplateHTML(attrs) {\n\treturn `\n <style>\n :host {\n display: inline-flex;\n line-height: 0;\n flex-direction: column;\n justify-content: end;\n }\n\n audio {\n width: 100%;\n }\n </style>\n <slot name=\"media\">\n <audio${serializeAttributes(attrs)}></audio>\n </slot>\n <slot></slot>\n `;\n}\n/**\n* Helper function to generate the HTML template for video elements.\n*/\nfunction getVideoTemplateHTML(attrs) {\n\treturn `\n <style>\n :host {\n display: contents;\n }\n\n video {\n display: block;\n width: 100%;\n height: 100%;\n border-radius: var(${VideoCSSVars.borderRadius});\n object-fit: var(${VideoCSSVars.objectFit}, contain);\n object-position: var(${VideoCSSVars.objectPosition}, center);\n }\n\n video::-webkit-media-text-track-container {\n transition: translate var(${VideoCSSVars.captionTrackDuration}, 0) ease-out;\n transition-delay: var(${VideoCSSVars.captionTrackDelay}, 0);\n translate: 0 var(${VideoCSSVars.captionTrackY}, 0);\n scale: 0.98;\n z-index: 1;\n font-family: inherit;\n }\n </style>\n <slot name=\"media\">\n <video${serializeAttributes(attrs)}></video>\n </slot>\n <slot></slot>\n `;\n}\nfunction CustomMediaMixin(superclass, { tag, is }) {\n\tconst nativeElTest = globalThis.document?.createElement?.(tag, { is });\n\tconst nativeElProps = nativeElTest ? getNativeElProps(nativeElTest) : [];\n\treturn class CustomMedia extends superclass {\n\t\tstatic getTemplateHTML = tag.endsWith(\"audio\") ? getAudioTemplateHTML : getVideoTemplateHTML;\n\t\tstatic shadowRootOptions = { mode: \"open\" };\n\t\tstatic Events = Events;\n\t\tstatic #isDefined = false;\n\t\tstatic #propsToAttrs;\n\t\tstatic get observedAttributes() {\n\t\t\tCustomMedia.#define();\n\t\t\treturn [...nativeElTest?.constructor?.observedAttributes ?? [], ...Attributes];\n\t\t}\n\t\tstatic #define() {\n\t\t\tif (CustomMedia.#isDefined) return;\n\t\t\tCustomMedia.#isDefined = true;\n\t\t\tCustomMedia.#propsToAttrs = new Set(CustomMedia.observedAttributes);\n\t\t\tCustomMedia.#propsToAttrs.delete(\"muted\");\n\t\t\tfor (const prop of nativeElProps) {\n\t\t\t\tif (prop in CustomMedia.prototype) continue;\n\t\t\t\tif (typeof nativeElTest[prop] === \"function\") CustomMedia.prototype[prop] = function(...args) {\n\t\t\t\t\tthis.#init();\n\t\t\t\t\treturn this.call(prop, ...args);\n\t\t\t\t};\n\t\t\t\telse {\n\t\t\t\t\tconst config = { get() {\n\t\t\t\t\t\tthis.#init();\n\t\t\t\t\t\treturn this.get(prop);\n\t\t\t\t\t} };\n\t\t\t\t\tif (prop !== prop.toUpperCase()) config.set = function(val) {\n\t\t\t\t\t\tthis.#init();\n\t\t\t\t\t\tthis.set(prop, val);\n\t\t\t\t\t};\n\t\t\t\t\tObject.defineProperty(CustomMedia.prototype, prop, config);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t#isInit = false;\n\t\t#target = null;\n\t\t#childMap = /* @__PURE__ */ new Map();\n\t\t#childObserver;\n\t\tget(prop) {\n\t\t\tconst attr = prop.toLowerCase();\n\t\t\tif (CustomMedia.#propsToAttrs.has(attr)) {\n\t\t\t\tconst val = this.getAttribute(attr);\n\t\t\t\treturn val === null ? false : val === \"\" ? true : val;\n\t\t\t}\n\t\t\treturn this.target?.[prop];\n\t\t}\n\t\tset(prop, val) {\n\t\t\tconst attr = prop.toLowerCase();\n\t\t\tif (CustomMedia.#propsToAttrs.has(attr)) {\n\t\t\t\tif (val === true || val === false || val == null) this.toggleAttribute(attr, Boolean(val));\n\t\t\t\telse this.setAttribute(attr, val);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (this.target) this.target[prop] = val;\n\t\t}\n\t\tcall(prop, ...args) {\n\t\t\treturn (this.target?.[prop])?.apply(this.target, args);\n\t\t}\n\t\tget target() {\n\t\t\tthis.#init();\n\t\t\treturn this.#target ?? this.querySelector(\":scope > [slot=media]\") ?? this.querySelector(tag) ?? this.shadowRoot?.querySelector(tag) ?? null;\n\t\t}\n\t\tset target(val) {\n\t\t\tthis.#target = val;\n\t\t}\n\t\tget defaultMuted() {\n\t\t\tthis.#init();\n\t\t\treturn this.get(\"muted\");\n\t\t}\n\t\tset defaultMuted(val) {\n\t\t\tthis.#init();\n\t\t\tthis.set(\"muted\", val);\n\t\t}\n\t\t#init() {\n\t\t\tif (this.#isInit) return;\n\t\t\tthis.#isInit = true;\n\t\t\tthis.init();\n\t\t}\n\t\tinit() {\n\t\t\tif (!this.shadowRoot) {\n\t\t\t\tthis.attachShadow({ mode: \"open\" });\n\t\t\t\tconst attrs = namedNodeMapToObject(this.attributes);\n\t\t\t\tif (is) attrs.is = is;\n\t\t\t\tif (tag) attrs.part = tag;\n\t\t\t\tthis.shadowRoot.innerHTML = this.constructor.getTemplateHTML(attrs);\n\t\t\t}\n\t\t\tthis.target.muted = this.hasAttribute(\"muted\");\n\t\t\tfor (const prop of nativeElProps) this.#upgradeProperty(prop);\n\t\t\tthis.#childObserver = new MutationObserver(this.#syncMediaChildAttribute.bind(this));\n\t\t\tthis.shadowRoot.addEventListener(\"slotchange\", () => this.#syncMediaChildren());\n\t\t\tthis.#syncMediaChildren();\n\t\t\tfor (const type of this.constructor.Events) this.shadowRoot.addEventListener(type, this.#deferForwardEvent, true);\n\t\t}\n\t\t#deferForwardEvent = (event) => {\n\t\t\tif (this.target && this.target === event.target) this.target.addEventListener(event.type, this.#forwardEvent, { once: true });\n\t\t};\n\t\t#forwardEvent = (event) => {\n\t\t\tthis.dispatchEvent(new event.constructor(event.type, event));\n\t\t};\n\t\t#syncMediaChildren() {\n\t\t\tconst removeNativeChildren = new Map(this.#childMap);\n\t\t\t((this.shadowRoot?.querySelector(\"slot:not([name])\"))?.assignedElements({ flatten: true }).filter((el) => [\"track\", \"source\"].includes(el.localName))).forEach((el) => {\n\t\t\t\tremoveNativeChildren.delete(el);\n\t\t\t\tlet clone = this.#childMap.get(el);\n\t\t\t\tif (!clone) {\n\t\t\t\t\tclone = el.cloneNode();\n\t\t\t\t\tthis.#childMap.set(el, clone);\n\t\t\t\t\tthis.#childObserver?.observe(el, { attributes: true });\n\t\t\t\t}\n\t\t\t\tthis.target?.append(clone);\n\t\t\t\tthis.#enableDefaultTrack(clone);\n\t\t\t});\n\t\t\tremoveNativeChildren.forEach((clone, el) => {\n\t\t\t\tclone.remove();\n\t\t\t\tthis.#childMap.delete(el);\n\t\t\t});\n\t\t}\n\t\t#syncMediaChildAttribute(mutations) {\n\t\t\tfor (const mutation of mutations) if (mutation.type === \"attributes\") {\n\t\t\t\tconst { target, attributeName } = mutation;\n\t\t\t\tconst clone = this.#childMap.get(target);\n\t\t\t\tif (clone && attributeName) {\n\t\t\t\t\tclone.setAttribute(attributeName, target.getAttribute(attributeName) ?? \"\");\n\t\t\t\t\tthis.#enableDefaultTrack(clone);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t#enableDefaultTrack(trackEl) {\n\t\t\tif (trackEl && trackEl.localName === \"track\" && trackEl.default && (trackEl.kind === \"chapters\" || trackEl.kind === \"metadata\") && trackEl.track.mode === \"disabled\") trackEl.track.mode = \"hidden\";\n\t\t}\n\t\t#upgradeProperty(prop) {\n\t\t\tif (Object.hasOwn(this, prop)) {\n\t\t\t\tconst value = this[prop];\n\t\t\t\tdelete this[prop];\n\t\t\t\tthis[prop] = value;\n\t\t\t}\n\t\t}\n\t\tattributeChangedCallback(attrName, oldValue, newValue) {\n\t\t\tthis.#init();\n\t\t\tthis.#forwardAttribute(attrName, oldValue, newValue);\n\t\t}\n\t\t#forwardAttribute(attrName, _oldValue, newValue) {\n\t\t\tif ([\"id\", \"class\"].includes(attrName)) return;\n\t\t\tif (!CustomMedia.observedAttributes.includes(attrName) && this.constructor.observedAttributes.includes(attrName)) return;\n\t\t\tif (newValue === null) this.target?.removeAttribute(attrName);\n\t\t\telse if (this.target?.getAttribute(attrName) !== newValue) this.target?.setAttribute(attrName, newValue);\n\t\t}\n\t\tconnectedCallback() {\n\t\t\tthis.#init();\n\t\t}\n\t};\n}\n/**\n* Helper function to get all properties from a native media element's prototype.\n*/\nfunction getNativeElProps(nativeElTest) {\n\tconst nativeElProps = [];\n\tfor (let proto = Object.getPrototypeOf(nativeElTest); proto && proto !== HTMLElement.prototype; proto = Object.getPrototypeOf(proto)) {\n\t\tconst props = Object.getOwnPropertyNames(proto);\n\t\tnativeElProps.push(...props);\n\t}\n\treturn nativeElProps;\n}\n/**\n* Helper function to serialize attributes into a string.\n*/\nfunction serializeAttributes(attrs) {\n\tlet html = \"\";\n\tfor (const key in attrs) {\n\t\tif (!Attributes.includes(key)) continue;\n\t\tconst value = attrs[key];\n\t\tif (value === \"\") html += ` ${key}`;\n\t\telse html += ` ${key}=\"${value}\"`;\n\t}\n\treturn html;\n}\n/**\n* Helper function to convert NamedNodeMap to a plain object.\n*/\nfunction namedNodeMapToObject(namedNodeMap) {\n\tconst obj = {};\n\tfor (const attr of namedNodeMap) obj[attr.name] = attr.value;\n\treturn obj;\n}\nconst CustomVideoElement = CustomMediaMixin(globalThis.HTMLElement ?? class {}, { tag: \"video\" });\nconst CustomAudioElement = CustomMediaMixin(globalThis.HTMLElement ?? class {}, { tag: \"audio\" });\n//#endregion\nexport { Attributes, AudioCSSVars, CustomAudioElement, CustomMediaMixin, CustomVideoElement, Events, VideoCSSVars };\n\n//# sourceMappingURL=index.js.map","import type { AnyConstructor } from '@videojs/utils/types';\n\ntype AnyClass = abstract new (...args: any[]) => any;\n\nfunction camelToKebab(str: string): string {\n return str.replace(/[A-Z]/g, (m) => `-${m.toLowerCase()}`);\n}\n\nfunction buildAttrPropMap(DelegateClass: AnyClass): Map<string, string> {\n const map = new Map<string, string>();\n for (let proto = DelegateClass.prototype; proto && proto !== Object.prototype; proto = Object.getPrototypeOf(proto)) {\n for (const key of Object.getOwnPropertyNames(proto)) {\n if (key.startsWith('_')) continue;\n const desc = Object.getOwnPropertyDescriptor(proto, key);\n if (desc?.set) map.set(camelToKebab(key), key);\n }\n }\n return map;\n}\n\n/**\n * Mixin that intercepts `getTemplateHTML` and `attributeChangedCallback` to\n * handle delegate-owned properties. Delegate props are stripped from template\n * HTML attrs and routed through the property setter in `attributeChangedCallback`\n * instead of being forwarded to the inner native element.\n */\nexport function MediaPropsMixin<Base extends AnyConstructor<HTMLElement>>(\n BaseClass: Base,\n DelegateClass: AnyClass\n): Base {\n const attrToProp = buildAttrPropMap(DelegateClass);\n\n class MediaPropsElement extends (BaseClass as any) {\n static get observedAttributes(): string[] {\n // biome-ignore lint/complexity/noThisInStatic: intentional use of super\n return [...new Set([...(super.observedAttributes ?? []), ...attrToProp.keys()])];\n }\n\n static getTemplateHTML(attrs: Record<string, string>): string {\n const filtered = { ...attrs };\n for (const attr of attrToProp.keys()) {\n delete filtered[attr];\n }\n // biome-ignore lint/complexity/noThisInStatic: intentional use of super\n return super.getTemplateHTML(filtered);\n }\n\n attributeChangedCallback(attrName: string, oldValue: string | null, newValue: string | null): void {\n const prop = attrToProp.get(attrName);\n if (prop) {\n if (oldValue !== newValue) {\n (this as any)[prop] = typeof (this as any)[prop] === 'boolean' ? newValue !== null : (newValue ?? '');\n }\n return;\n }\n\n super.attributeChangedCallback?.(attrName, oldValue, newValue);\n }\n }\n\n return MediaPropsElement as unknown as Base;\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as e,c as t,d as n,f as r,i,l as a,n as o,o as s,r as c,s as l,t as u,u as d}from"./compounds-Df_1JbZD.js";import{D as f}from"./create-player-Gom2ZZe3.js";import{o as p}from"./context-C-IpVHEt.js";import{a as m,i as h,n as g,o as _,r as v,t as y}from"./player-eEH-XjnF.js";p(y),p(f),u(),o(),i(),e(),c(),p(_),p(m),p(h),p(r),p(v),p(n),p(d),p(a),p(g),p(t),p(l),p(s);
|
|
2
|
-
//# sourceMappingURL=minimal-ui-B3BBK5nX.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as e,c as t,d as n,f as r,i,l as a,n as o,o as s,r as c,s as l,u}from"./compounds-Df_1JbZD.js";import{D as d}from"./create-player-Gom2ZZe3.js";import{o as f}from"./context-C-IpVHEt.js";import{t as p}from"./player-Cu5_r0Gk.js";f(p),f(d),o(),i(),e(),c(),f(r),f(n),f(u),f(a),f(t),f(l),f(s);
|
|
2
|
-
//# sourceMappingURL=minimal-ui-DOePmQfq.js.map
|