tmg-media-player 0.0.40 → 0.0.42
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/dist/{chunk-HCTNCCPR.js → chunk-23BYW5JE.js} +5 -5
- package/dist/chunk-23BYW5JE.js.map +1 -0
- package/dist/{chunk-TJMGAIJ2.js → chunk-3JYTCSCR.js} +42 -42
- package/dist/{chunk-VIJEMQ77.js → chunk-6WK4XXTL.js} +4 -4
- package/dist/{chunk-E5PBQLV3.js → chunk-JLUX5NZJ.js} +55 -55
- package/dist/{chunk-WA5VZIDC.js → chunk-LQSU7JDG.js} +5 -5
- package/dist/{chunk-XV33TV7K.js → chunk-O6VCD64X.js} +27 -27
- package/dist/{chunk-R4CYVZ7J.js → chunk-SGQJYALA.js} +15 -15
- package/dist/{chunk-ZRJ47BPK.js → chunk-U4STCHIM.js} +4 -4
- package/dist/{chunk-D7Y72JWH.js → chunk-U6XDI2FQ.js} +2 -2
- package/dist/{chunk-D7Y72JWH.js.map → chunk-U6XDI2FQ.js.map} +1 -1
- package/dist/{chunk-OSSQUF2N.js → chunk-WE2IT3XO.js} +103 -103
- package/dist/{chunk-URYM5WYF.js → chunk-X24LFSYJ.js} +3 -3
- package/dist/chunk-X24LFSYJ.js.map +1 -0
- package/dist/{chunk-PD72HDH4.js → chunk-XN5CVECC.js} +94 -94
- package/dist/{chunk-SFNWCR4G.js → chunk-YXUIPCGS.js} +37 -37
- package/dist/components/controls/airplay.js +1 -1
- package/dist/components/controls/backward10.js +1 -1
- package/dist/components/controls/bigNext.js +1 -1
- package/dist/components/controls/bigPlayPause.js +1 -1
- package/dist/components/controls/bigPrevious.js +1 -1
- package/dist/components/controls/brightness/index.js +1 -1
- package/dist/components/controls/captions.js +1 -1
- package/dist/components/controls/capture.js +1 -1
- package/dist/components/controls/cast.js +1 -1
- package/dist/components/controls/expandMiniplayer.js +1 -1
- package/dist/components/controls/forward10.js +1 -1
- package/dist/components/controls/fullscreen.js +1 -1
- package/dist/components/controls/fullscreenLock.js +1 -1
- package/dist/components/controls/fullscreenOrientation.js +1 -1
- package/dist/components/controls/next.js +1 -1
- package/dist/components/controls/objectFit.js +1 -1
- package/dist/components/controls/pictureInPicture.js +1 -1
- package/dist/components/controls/playPause.js +1 -1
- package/dist/components/controls/previous.js +1 -1
- package/dist/components/controls/removeMiniplayer.js +1 -1
- package/dist/components/controls/settings.js +1 -1
- package/dist/components/controls/theater.js +1 -1
- package/dist/components/controls/timeline/index.js +1 -1
- package/dist/components/controls/voice.js +1 -1
- package/dist/components/controls/volume/index.js +1 -1
- package/dist/components/holders/airplayPlaceholder.js +1 -1
- package/dist/components/holders/castPlaceholder.js +1 -1
- package/dist/components/holders/errorPlaceholder.js +1 -1
- package/dist/components/holders/pipPlaceholder.js +1 -1
- package/dist/components/icons/z-register.js +25 -25
- package/dist/components/notifiers/airplay.js +1 -1
- package/dist/components/notifiers/brightness.js +1 -1
- package/dist/components/notifiers/captions.js +1 -1
- package/dist/components/notifiers/capture.js +1 -1
- package/dist/components/notifiers/cast.js +1 -1
- package/dist/components/notifiers/fastPlay.js +1 -1
- package/dist/components/notifiers/fwdBwd.js +1 -1
- package/dist/components/notifiers/objectFit.js +1 -1
- package/dist/components/notifiers/playPause.js +1 -1
- package/dist/components/notifiers/playbackRate.js +1 -1
- package/dist/components/notifiers/prevNext.js +1 -1
- package/dist/components/notifiers/scrub.js +1 -1
- package/dist/components/notifiers/touchBrightness.js +1 -1
- package/dist/components/notifiers/touchVolume.js +1 -1
- package/dist/components/notifiers/volume.js +1 -1
- package/dist/components/notifiers/z-register.js +7 -7
- package/dist/components/screenLock.js +1 -1
- package/dist/components/z-register.js +17 -17
- package/dist/core/controller.js +1 -1
- package/dist/index.js +1 -1
- package/dist/init.js +1 -1
- package/dist/plugs/base/index.js +1 -1
- package/dist/plugs/base/slider.js +1 -1
- package/dist/plugs/main/ads/index.js +1 -1
- package/dist/plugs/main/disabled/index.js +1 -1
- package/dist/plugs/main/light/index.js +1 -1
- package/dist/plugs/main/playlist/index.js +1 -1
- package/dist/plugs/main/skeleton/index.js +1 -1
- package/dist/plugs/menus/main/actions.js +1 -1
- package/dist/plugs/menus/settings/auto.js +1 -1
- package/dist/plugs/menus/settings/frame.js +1 -1
- package/dist/plugs/menus/settings/keys.js +1 -1
- package/dist/plugs/menus/settings/modes.js +1 -1
- package/dist/plugs/menus/settings/sleepTimer.js +1 -1
- package/dist/plugs/menus/settings/toasts.js +1 -1
- package/dist/plugs/menus/settings/voice.js +1 -1
- package/dist/plugs/menus/z-register.js +14 -14
- package/dist/plugs/settings/ambience/index.js +1 -1
- package/dist/plugs/settings/auto/index.js +1 -1
- package/dist/plugs/settings/brightness/index.js +1 -1
- package/dist/plugs/settings/captions/index.js +1 -1
- package/dist/plugs/settings/controlPanel/draggable.js +1 -1
- package/dist/plugs/settings/controlPanel/index.js +1 -1
- package/dist/plugs/settings/css/index.cjs +4 -4
- package/dist/plugs/settings/css/index.cjs.map +1 -1
- package/dist/plugs/settings/css/index.js +2 -2
- package/dist/plugs/settings/errors/index.js +1 -1
- package/dist/plugs/settings/fastPlay/index.js +1 -1
- package/dist/plugs/settings/frame/index.cjs +1 -1
- package/dist/plugs/settings/frame/index.cjs.map +1 -1
- package/dist/plugs/settings/frame/index.js +2 -2
- package/dist/plugs/settings/gesture/base.js +1 -1
- package/dist/plugs/settings/gesture/index.js +1 -1
- package/dist/plugs/settings/gesture/touch.js +1 -1
- package/dist/plugs/settings/gesture/wheel.js +1 -1
- package/dist/plugs/settings/keys/index.js +1 -1
- package/dist/plugs/settings/locked/index.js +1 -1
- package/dist/plugs/settings/metadata/index.js +1 -1
- package/dist/plugs/settings/modes/airplay.js +1 -1
- package/dist/plugs/settings/modes/cast.js +1 -1
- package/dist/plugs/settings/modes/fullscreen.js +1 -1
- package/dist/plugs/settings/modes/index.js +1 -1
- package/dist/plugs/settings/modes/miniplayer.js +1 -1
- package/dist/plugs/settings/modes/pictureInPicture.js +1 -1
- package/dist/plugs/settings/modes/theater.js +1 -1
- package/dist/plugs/settings/notifiers/index.js +1 -1
- package/dist/plugs/settings/objectFit/index.js +1 -1
- package/dist/plugs/settings/overlay/index.js +1 -1
- package/dist/plugs/settings/panel/index.cjs +2 -2
- package/dist/plugs/settings/panel/index.cjs.map +1 -1
- package/dist/plugs/settings/panel/index.js +2 -2
- package/dist/plugs/settings/panel/menu/index.js +1 -1
- package/dist/plugs/settings/panel/menu/panel/main.js +1 -1
- package/dist/plugs/settings/panel/menu/panel/sub.js +1 -1
- package/dist/plugs/settings/panel/menu/widgets/base.js +1 -1
- package/dist/plugs/settings/panel/menu/widgets/button.js +1 -1
- package/dist/plugs/settings/panel/menu/widgets/color.js +1 -1
- package/dist/plugs/settings/panel/menu/widgets/dragselect.js +1 -1
- package/dist/plugs/settings/panel/menu/widgets/group.js +1 -1
- package/dist/plugs/settings/panel/menu/widgets/index.js +1 -1
- package/dist/plugs/settings/panel/menu/widgets/input.js +1 -1
- package/dist/plugs/settings/panel/menu/widgets/limits.js +1 -1
- package/dist/plugs/settings/panel/menu/widgets/range.js +1 -1
- package/dist/plugs/settings/panel/menu/widgets/select.js +1 -1
- package/dist/plugs/settings/panel/menu/widgets/toggle.js +1 -1
- package/dist/plugs/settings/persist/index.js +1 -1
- package/dist/plugs/settings/playbackRate/index.js +1 -1
- package/dist/plugs/settings/poster/index.js +1 -1
- package/dist/plugs/settings/sleepTimer/index.js +2 -2
- package/dist/plugs/settings/time/index.js +1 -1
- package/dist/plugs/settings/timeTravel/index.js +1 -1
- package/dist/plugs/settings/toasts/index.js +1 -1
- package/dist/plugs/settings/voice/index.js +1 -1
- package/dist/plugs/settings/volume/index.js +1 -1
- package/dist/plugs/z-register.cjs +7 -7
- package/dist/plugs/z-register.cjs.map +1 -1
- package/dist/plugs/z-register.js +35 -35
- package/dist/super/components/icons.js +55 -55
- package/dist/super/components/index.js +110 -110
- package/dist/super/components/notifiers.js +16 -16
- package/dist/super/consts.js +5 -5
- package/dist/super/plugs/index.cjs +7 -7
- package/dist/super/plugs/index.cjs.map +1 -1
- package/dist/super/plugs/index.js +108 -108
- package/dist/super/plugs/menus.js +31 -31
- package/dist/super/techs.js +6 -6
- package/dist/super.cjs +7 -7
- package/dist/super.cjs.map +1 -1
- package/dist/super.global.js +7 -7
- package/dist/super.global.js.map +1 -1
- package/dist/super.js +106 -106
- package/dist/techs/dash.js +1 -1
- package/dist/techs/hls.js +1 -1
- package/dist/techs/html5.js +1 -1
- package/dist/techs/ima.js +1 -1
- package/dist/techs/shaka.js +1 -1
- package/dist/techs/youtube.js +1 -1
- package/dist/techs/z-register.js +3 -3
- package/dist/tools/player.js +1 -1
- package/dist/tools/runtime/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-HCTNCCPR.js.map +0 -1
- package/dist/chunk-URYM5WYF.js.map +0 -1
- /package/dist/{chunk-TJMGAIJ2.js.map → chunk-3JYTCSCR.js.map} +0 -0
- /package/dist/{chunk-VIJEMQ77.js.map → chunk-6WK4XXTL.js.map} +0 -0
- /package/dist/{chunk-E5PBQLV3.js.map → chunk-JLUX5NZJ.js.map} +0 -0
- /package/dist/{chunk-WA5VZIDC.js.map → chunk-LQSU7JDG.js.map} +0 -0
- /package/dist/{chunk-XV33TV7K.js.map → chunk-O6VCD64X.js.map} +0 -0
- /package/dist/{chunk-R4CYVZ7J.js.map → chunk-SGQJYALA.js.map} +0 -0
- /package/dist/{chunk-ZRJ47BPK.js.map → chunk-U4STCHIM.js.map} +0 -0
- /package/dist/{chunk-OSSQUF2N.js.map → chunk-WE2IT3XO.js.map} +0 -0
- /package/dist/{chunk-PD72HDH4.js.map → chunk-XN5CVECC.js.map} +0 -0
- /package/dist/{chunk-SFNWCR4G.js.map → chunk-YXUIPCGS.js.map} +0 -0
|
@@ -37,10 +37,10 @@ var CSSPlug = class extends BasePlug {
|
|
|
37
37
|
for (const [k, v] of entries) k !== "syncWithMedia" && ((_a = this.build)[k] ?? (_a[k] = this.ctlr.build.settings.css[k]), this.set(k, v));
|
|
38
38
|
super.wire();
|
|
39
39
|
}
|
|
40
|
-
async handleLoadedMetadataStatus({ value }) {
|
|
41
|
-
if (!value) return;
|
|
42
|
-
const color = await this.ctlr.plug("settings.frame")?.getMainColor();
|
|
43
|
-
for (const k of
|
|
40
|
+
async handleLoadedMetadataStatus({ value }, keys = Object.keys(this.settings.css.syncWithMedia)) {
|
|
41
|
+
if (!value || !keys.some((k) => this.settings.css.syncWithMedia[k])) return;
|
|
42
|
+
const color = await this.ctlr.plug("settings.frame")?.getMainColor(void 0, this.media.features.frameCapture ? "" : void 0);
|
|
43
|
+
for (const k of keys) if (this.settings.css.syncWithMedia[k]) this.settings.css[k] = String(color ?? this.build[k]);
|
|
44
44
|
}
|
|
45
45
|
getCSSKey(key) {
|
|
46
46
|
return { isClass: this.classList.includes(key), id: `tmg-media-${uncamelize(key, "-")}` };
|
|
@@ -79,4 +79,4 @@ var banRgx = /\.(?:(constructor|syncWithMedia))/;
|
|
|
79
79
|
export {
|
|
80
80
|
CSSPlug
|
|
81
81
|
};
|
|
82
|
-
//# sourceMappingURL=chunk-
|
|
82
|
+
//# sourceMappingURL=chunk-23BYW5JE.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/ts/plugs/settings/css/index.ts"],"sourcesContent":["import { BasePlug } from \"../../base\";\r\nimport type { CssConfig } from \"./types\";\r\nimport { CSS_BUILD } from \"./build\";\r\nimport type { CtlrMedia } from \"@defs/contract\";\r\nimport type { REvent } from \"sia-reactor\";\r\nimport { camelize, capitalize, uncamelize } from \"@utils/str\";\r\n\r\nexport class CSSPlug extends BasePlug<CssConfig> {\r\n public static readonly plugName = \"css\";\r\n public static readonly BUILD = CSS_BUILD;\r\n public classList: string[] = [\"captionsCharacterEdgeStyle\"]; // #DEFAULT: build privilege\r\n public build: Record<string, string | number | undefined> = {};\r\n\r\n public override wire(): void {\r\n // Variables Assignment\r\n const entries = Object.entries(this.config);\r\n this.settings.css.altImgUrl = `url(${window.TMG_MEDIA_ALT_IMG_SRC})`;\r\n // Blackbox Handlers\r\n this.ctlr.config.get(\"*\", (val, { target: { key, path } }: any) => val ?? (!path.startsWith(\"settings.css.\") || banRgx.test(path) ? val : (this.build[key] ??= this.get(key))), { signal: this.signal }); // #BLACKBOX: immediacy requirement\r\n this.ctlr.config.watch(\"*\", (val, { target: { key, path } }: any) => path.startsWith(\"settings.css.\") && !banRgx.test(path) && this.set(key, val), { signal: this.signal }); // #BLACKBOX: immediacy requirement\r\n // ---- Media Watchers\r\n for (const p of [\"videoWidth\", \"videoHeight\"] as const) this.media.watch(`status.${p}`, this.syncAspectRatio, { init: p === \"videoWidth\", signal: this.signal });\r\n // ---- State --------\r\n ([\"container.width\", \"container.height\", \"object.width\", \"object.height\", \"object.top\", \"object.left\", \"poster.width\", \"poster.height\", \"poster.top\", \"poster.left\"] as const).forEach((p, _, __, camped = capitalize(camelize(p, /\\./))) => this.ctlr.state.watch(`dimensions.${p}`, (v) => (this.config[`current${camped}`] = `${v || 0}px`), { init: true, signal: this.signal }));\r\n // ---- Media Listeners\r\n this.media.on(\"status.loadedMetadata\", this.handleLoadedMetadataStatus, { init: this.ctlr.flags.wired, signal: this.signal });\r\n // ---- State ----------\r\n for (const k of [\"container\", \"pseudoContainer\"] as const) this.ctlr.state.on(`dimensions.${k}.tier`, ({ value: tier }) => (this.media[k].dataset.sizeTier = tier || \"\"), { init: true, signal: this.signal });\r\n // Post Wiring\r\n for (const [k, v] of entries) k !== \"syncWithMedia\" && ((this.build[k] ??= this.ctlr.build.settings.css[k]), this.set(k, v));\r\n super.wire();\r\n }\r\n\r\n protected async handleLoadedMetadataStatus({ value }: REvent<CtlrMedia, \"status.loadedMetadata\">, keys = Object.keys(this.settings.css.syncWithMedia)): Promise<void> {\r\n if (!value || !keys.some((k) => this.settings.css.syncWithMedia[k])) return;\r\n const color = await this.ctlr.plug(\"settings.frame\")?.getMainColor(undefined, this.media.features.frameCapture ? \"\" : undefined);\r\n for (const k of keys) if (this.settings.css.syncWithMedia[k]) this.settings.css[k] = String(color ?? this.build[k]);\r\n }\r\n\r\n public getCSSKey(key: string): { isClass: boolean; id: string } {\r\n return { isClass: this.classList.includes(key), id: `tmg-media-${uncamelize(key, \"-\")}` };\r\n }\r\n protected getCSSValue(id: string): string {\r\n return getComputedStyle(this.media.container).getPropertyValue(`--${id}`) || \"\";\r\n }\r\n protected getClassValue(id: string): string {\r\n return Array.prototype.find.call(this.media.container.classList, (c) => c.startsWith(id))?.replace(`${id}-`, \"\") || \"\";\r\n }\r\n\r\n protected setCssVariable(id: string, value: any): void {\r\n const strVal = value != null ? String(value) : \"\";\r\n for (const el of [this.media.container, this.media.pseudoContainer]) el?.style.setProperty(`--${id}`, strVal); // \"\" auto-removes\r\n }\r\n protected setClassValue(id: string, value: any): void {\r\n for (const c of this.media.container.classList) c.startsWith(id) && this.media.container.classList.remove(c);\r\n value != null && value !== \"\" && this.media.container.classList.add(`${id}-${String(value)}`); // \"\" removes\r\n }\r\n\r\n protected get(key: string): string | number | undefined {\r\n const { isClass, id } = this.getCSSKey(key);\r\n return this[isClass ? \"getClassValue\" : \"getCSSValue\"](id);\r\n }\r\n protected set(key: string, value: any): void {\r\n const { isClass, id } = this.getCSSKey(key);\r\n this[isClass ? \"setClassValue\" : \"setCssVariable\"](id, value);\r\n }\r\n\r\n public syncAspectRatio(): void {\r\n const { videoWidth: w, videoHeight: h } = this.media.status;\r\n this.settings.css.aspectRatio = w && h ? `${w} / ${h}` : \"16 / 9\";\r\n }\r\n}\r\nconst banRgx = /\\.(?:(constructor|syncWithMedia))/; // __proto__|prototype|toString|valueOf|hasOwnProperty|\r\n\r\nexport type * from \"./types\";\r\nexport * from \"./build\";\r\n\r\ndeclare module \"@defs/registries\" {\r\n interface PlugRegistryMap {\r\n \"settings.css\": typeof CSSPlug;\r\n }\r\n}\r\n\r\ndeclare module \"@defs/config\" {\r\n interface Settings {\r\n css: CssConfig;\r\n }\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;;;AAOO,IAAM,UAAN,cAAsB,SAAoB;AAAA,EAA1C;AAAA;AAGL,wBAAO,aAAsB,CAAC,4BAA4B;AAC1D;AAAA,wBAAO,SAAqD,CAAC;AAAA;AAAA,EAE7C,OAAa;AAb/B;AAeI,UAAM,UAAU,OAAO,QAAQ,KAAK,MAAM;AAC1C,SAAK,SAAS,IAAI,YAAY,OAAO,OAAO,qBAAqB;AAEjE,SAAK,KAAK,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,KAAK,EAAE,MAAQ;AAlBpE,UAAAA;AAkBuE,qBAAQ,CAAC,KAAK,WAAW,eAAe,KAAK,OAAO,KAAK,IAAI,IAAI,OAAOA,MAAA,KAAK,OAAL,SAAAA,IAAA,OAAoB,KAAK,IAAI,GAAG;AAAA,OAAK,EAAE,QAAQ,KAAK,OAAO,CAAC;AACvM,SAAK,KAAK,OAAO,MAAM,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,KAAK,EAAE,MAAW,KAAK,WAAW,eAAe,KAAK,CAAC,OAAO,KAAK,IAAI,KAAK,KAAK,IAAI,KAAK,GAAG,GAAG,EAAE,QAAQ,KAAK,OAAO,CAAC;AAE1K,eAAW,KAAK,CAAC,cAAc,aAAa,EAAY,MAAK,MAAM,MAAM,UAAU,CAAC,IAAI,KAAK,iBAAiB,EAAE,MAAM,MAAM,cAAc,QAAQ,KAAK,OAAO,CAAC;AAE/J,IAAC,CAAC,mBAAmB,oBAAoB,gBAAgB,iBAAiB,cAAc,eAAe,gBAAgB,iBAAiB,cAAc,aAAa,EAAY,QAAQ,CAAC,GAAG,GAAG,IAAI,SAAS,WAAW,SAAS,GAAG,IAAI,CAAC,MAAM,KAAK,KAAK,MAAM,MAAM,cAAc,CAAC,IAAI,CAAC,MAAO,KAAK,OAAO,UAAU,MAAM,EAAE,IAAI,GAAG,KAAK,CAAC,MAAO,EAAE,MAAM,MAAM,QAAQ,KAAK,OAAO,CAAC,CAAC;AAEpX,SAAK,MAAM,GAAG,yBAAyB,KAAK,4BAA4B,EAAE,MAAM,KAAK,KAAK,MAAM,OAAO,QAAQ,KAAK,OAAO,CAAC;AAE5H,eAAW,KAAK,CAAC,aAAa,iBAAiB,EAAY,MAAK,KAAK,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,EAAE,OAAO,KAAK,MAAO,KAAK,MAAM,CAAC,EAAE,QAAQ,WAAW,QAAQ,IAAK,EAAE,MAAM,MAAM,QAAQ,KAAK,OAAO,CAAC;AAE7M,eAAW,CAAC,GAAG,CAAC,KAAK,QAAS,OAAM,qBAAqB,UAAK,OAAL,eAAkB,KAAK,KAAK,MAAM,SAAS,IAAI,CAAC,IAAI,KAAK,IAAI,GAAG,CAAC;AAC1H,UAAM,KAAK;AAAA,EACb;AAAA,EAEA,MAAgB,2BAA2B,EAAE,MAAM,GAA+C,OAAO,OAAO,KAAK,KAAK,SAAS,IAAI,aAAa,GAAkB;AACpK,QAAI,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,cAAc,CAAC,CAAC,EAAG;AACrE,UAAM,QAAQ,MAAM,KAAK,KAAK,KAAK,gBAAgB,GAAG,aAAa,QAAW,KAAK,MAAM,SAAS,eAAe,KAAK,MAAS;AAC/H,eAAW,KAAK,KAAM,KAAI,KAAK,SAAS,IAAI,cAAc,CAAC,EAAG,MAAK,SAAS,IAAI,CAAC,IAAI,OAAO,SAAS,KAAK,MAAM,CAAC,CAAC;AAAA,EACpH;AAAA,EAEO,UAAU,KAA+C;AAC9D,WAAO,EAAE,SAAS,KAAK,UAAU,SAAS,GAAG,GAAG,IAAI,aAAa,WAAW,KAAK,GAAG,CAAC,GAAG;AAAA,EAC1F;AAAA,EACU,YAAY,IAAoB;AACxC,WAAO,iBAAiB,KAAK,MAAM,SAAS,EAAE,iBAAiB,KAAK,EAAE,EAAE,KAAK;AAAA,EAC/E;AAAA,EACU,cAAc,IAAoB;AAC1C,WAAO,MAAM,UAAU,KAAK,KAAK,KAAK,MAAM,UAAU,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,GAAG,QAAQ,GAAG,EAAE,KAAK,EAAE,KAAK;AAAA,EACtH;AAAA,EAEU,eAAe,IAAY,OAAkB;AACrD,UAAM,SAAS,SAAS,OAAO,OAAO,KAAK,IAAI;AAC/C,eAAW,MAAM,CAAC,KAAK,MAAM,WAAW,KAAK,MAAM,eAAe,EAAG,KAAI,MAAM,YAAY,KAAK,EAAE,IAAI,MAAM;AAAA,EAC9G;AAAA,EACU,cAAc,IAAY,OAAkB;AACpD,eAAW,KAAK,KAAK,MAAM,UAAU,UAAW,GAAE,WAAW,EAAE,KAAK,KAAK,MAAM,UAAU,UAAU,OAAO,CAAC;AAC3G,aAAS,QAAQ,UAAU,MAAM,KAAK,MAAM,UAAU,UAAU,IAAI,GAAG,EAAE,IAAI,OAAO,KAAK,CAAC,EAAE;AAAA,EAC9F;AAAA,EAEU,IAAI,KAA0C;AACtD,UAAM,EAAE,SAAS,GAAG,IAAI,KAAK,UAAU,GAAG;AAC1C,WAAO,KAAK,UAAU,kBAAkB,aAAa,EAAE,EAAE;AAAA,EAC3D;AAAA,EACU,IAAI,KAAa,OAAkB;AAC3C,UAAM,EAAE,SAAS,GAAG,IAAI,KAAK,UAAU,GAAG;AAC1C,SAAK,UAAU,kBAAkB,gBAAgB,EAAE,IAAI,KAAK;AAAA,EAC9D;AAAA,EAEO,kBAAwB;AAC7B,UAAM,EAAE,YAAY,GAAG,aAAa,EAAE,IAAI,KAAK,MAAM;AACrD,SAAK,SAAS,IAAI,cAAc,KAAK,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK;AAAA,EAC3D;AACF;AA/DE,cADW,SACY,YAAW;AAClC,cAFW,SAEY,SAAQ;AA+DjC,IAAM,SAAS;","names":["_a"]}
|
|
@@ -1,57 +1,39 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import {
|
|
5
|
-
SkeletonPlug
|
|
6
|
-
} from "./chunk-EO2SYXX5.js";
|
|
7
|
-
import {
|
|
8
|
-
AdsPlug
|
|
9
|
-
} from "./chunk-6CXX7WZO.js";
|
|
10
|
-
import {
|
|
11
|
-
DisabledPlug
|
|
12
|
-
} from "./chunk-EZN6F5JE.js";
|
|
13
|
-
import {
|
|
14
|
-
LightPlug
|
|
15
|
-
} from "./chunk-AKSQNAZS.js";
|
|
2
|
+
VoicePlug
|
|
3
|
+
} from "./chunk-UCO75OSK.js";
|
|
16
4
|
import {
|
|
17
5
|
VolumePlug
|
|
18
6
|
} from "./chunk-I6Q53IPI.js";
|
|
19
7
|
import {
|
|
20
|
-
|
|
21
|
-
} from "./chunk-
|
|
8
|
+
OverlayPlug
|
|
9
|
+
} from "./chunk-AUHJS22O.js";
|
|
22
10
|
import {
|
|
23
|
-
|
|
24
|
-
} from "./chunk-
|
|
11
|
+
TimePlug
|
|
12
|
+
} from "./chunk-XNQILPYL.js";
|
|
25
13
|
import {
|
|
26
|
-
|
|
27
|
-
} from "./chunk-
|
|
14
|
+
TimeTravelPlug
|
|
15
|
+
} from "./chunk-SUEKTA5D.js";
|
|
28
16
|
import {
|
|
29
17
|
PosterPlug
|
|
30
18
|
} from "./chunk-PXK56QO3.js";
|
|
31
19
|
import {
|
|
32
|
-
|
|
33
|
-
} from "./chunk-
|
|
20
|
+
SleepTimerPlug
|
|
21
|
+
} from "./chunk-PI7JPTSL.js";
|
|
34
22
|
import {
|
|
35
23
|
PersistPlug
|
|
36
24
|
} from "./chunk-JCSBCUKA.js";
|
|
25
|
+
import {
|
|
26
|
+
PanelPlug
|
|
27
|
+
} from "./chunk-X24LFSYJ.js";
|
|
37
28
|
import {
|
|
38
29
|
PlaybackRatePlug
|
|
39
30
|
} from "./chunk-JDC4FBXX.js";
|
|
40
|
-
import {
|
|
41
|
-
ObjectFitPlug
|
|
42
|
-
} from "./chunk-SG4E7P7S.js";
|
|
43
|
-
import {
|
|
44
|
-
OverlayPlug
|
|
45
|
-
} from "./chunk-AUHJS22O.js";
|
|
46
|
-
import {
|
|
47
|
-
PanelPlug
|
|
48
|
-
} from "./chunk-URYM5WYF.js";
|
|
49
31
|
import {
|
|
50
32
|
NotifiersPlug
|
|
51
33
|
} from "./chunk-KST5YWTX.js";
|
|
52
34
|
import {
|
|
53
|
-
|
|
54
|
-
} from "./chunk-
|
|
35
|
+
ObjectFitPlug
|
|
36
|
+
} from "./chunk-SG4E7P7S.js";
|
|
55
37
|
import {
|
|
56
38
|
ModesAirPlayPin
|
|
57
39
|
} from "./chunk-5QPPF5CW.js";
|
|
@@ -72,11 +54,11 @@ import {
|
|
|
72
54
|
LockedPlug
|
|
73
55
|
} from "./chunk-4JJV6NZM.js";
|
|
74
56
|
import {
|
|
75
|
-
|
|
76
|
-
} from "./chunk-
|
|
57
|
+
MetadataPlug
|
|
58
|
+
} from "./chunk-65ZJKSNP.js";
|
|
77
59
|
import {
|
|
78
60
|
FramePlug
|
|
79
|
-
} from "./chunk-
|
|
61
|
+
} from "./chunk-U6XDI2FQ.js";
|
|
80
62
|
import {
|
|
81
63
|
GesturePlug,
|
|
82
64
|
GestureTouchPin,
|
|
@@ -88,12 +70,12 @@ import {
|
|
|
88
70
|
import {
|
|
89
71
|
FastPlayPlug
|
|
90
72
|
} from "./chunk-IW4PM2ND.js";
|
|
91
|
-
import {
|
|
92
|
-
BrightnessPlug
|
|
93
|
-
} from "./chunk-X543EHRV.js";
|
|
94
73
|
import {
|
|
95
74
|
CaptionsPlug
|
|
96
75
|
} from "./chunk-SJOESZ5R.js";
|
|
76
|
+
import {
|
|
77
|
+
CSSPlug
|
|
78
|
+
} from "./chunk-23BYW5JE.js";
|
|
97
79
|
import {
|
|
98
80
|
ControlPanelDraggablePin,
|
|
99
81
|
ControlPanelPlug
|
|
@@ -101,12 +83,30 @@ import {
|
|
|
101
83
|
import {
|
|
102
84
|
ToastsPlug
|
|
103
85
|
} from "./chunk-I3RJYUX7.js";
|
|
86
|
+
import {
|
|
87
|
+
AutoPlug
|
|
88
|
+
} from "./chunk-OLPEXQJF.js";
|
|
89
|
+
import {
|
|
90
|
+
BrightnessPlug
|
|
91
|
+
} from "./chunk-X543EHRV.js";
|
|
104
92
|
import {
|
|
105
93
|
AmbiencePlug
|
|
106
94
|
} from "./chunk-3APJR7DP.js";
|
|
107
95
|
import {
|
|
108
|
-
|
|
109
|
-
} from "./chunk-
|
|
96
|
+
SkeletonPlug
|
|
97
|
+
} from "./chunk-EO2SYXX5.js";
|
|
98
|
+
import {
|
|
99
|
+
DisabledPlug
|
|
100
|
+
} from "./chunk-EZN6F5JE.js";
|
|
101
|
+
import {
|
|
102
|
+
LightPlug
|
|
103
|
+
} from "./chunk-AKSQNAZS.js";
|
|
104
|
+
import {
|
|
105
|
+
PlaylistPlug
|
|
106
|
+
} from "./chunk-3VN6SCE4.js";
|
|
107
|
+
import {
|
|
108
|
+
AdsPlug
|
|
109
|
+
} from "./chunk-6CXX7WZO.js";
|
|
110
110
|
import {
|
|
111
111
|
PinRegistry,
|
|
112
112
|
PlugRegistry
|
|
@@ -162,4 +162,4 @@ for (const Pin of [
|
|
|
162
162
|
GestureTouchPin
|
|
163
163
|
])
|
|
164
164
|
PinRegistry.register(Pin);
|
|
165
|
-
//# sourceMappingURL=chunk-
|
|
165
|
+
//# sourceMappingURL=chunk-3JYTCSCR.js.map
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ShakaTech
|
|
3
|
-
} from "./chunk-5V7L4U3B.js";
|
|
4
1
|
import {
|
|
5
2
|
VIMEO_EVENTS,
|
|
6
3
|
VimeoTech
|
|
@@ -14,6 +11,9 @@ import {
|
|
|
14
11
|
import {
|
|
15
12
|
HLSTech
|
|
16
13
|
} from "./chunk-LNING7Z4.js";
|
|
14
|
+
import {
|
|
15
|
+
ShakaTech
|
|
16
|
+
} from "./chunk-5V7L4U3B.js";
|
|
17
17
|
import {
|
|
18
18
|
IMATech
|
|
19
19
|
} from "./chunk-XOAJMIHO.js";
|
|
@@ -46,4 +46,4 @@ __export(techs_exports, {
|
|
|
46
46
|
export {
|
|
47
47
|
techs_exports
|
|
48
48
|
};
|
|
49
|
-
//# sourceMappingURL=chunk-
|
|
49
|
+
//# sourceMappingURL=chunk-6WK4XXTL.js.map
|
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
tripleTriangleRight
|
|
3
|
-
} from "./chunk-ZTOANBNR.js";
|
|
4
|
-
import {
|
|
5
|
-
unlock
|
|
6
|
-
} from "./chunk-TMTWPBFD.js";
|
|
7
|
-
import {
|
|
8
|
-
videoTrack
|
|
9
|
-
} from "./chunk-AIJWNUXU.js";
|
|
10
1
|
import {
|
|
11
2
|
volumeHigh
|
|
12
3
|
} from "./chunk-W6TNR6NH.js";
|
|
@@ -16,15 +7,6 @@ import {
|
|
|
16
7
|
import {
|
|
17
8
|
volumeMuted
|
|
18
9
|
} from "./chunk-2WOP45O7.js";
|
|
19
|
-
import {
|
|
20
|
-
returnBack
|
|
21
|
-
} from "./chunk-BHHFZM5D.js";
|
|
22
|
-
import {
|
|
23
|
-
settings
|
|
24
|
-
} from "./chunk-2J3FJY73.js";
|
|
25
|
-
import {
|
|
26
|
-
shuffle
|
|
27
|
-
} from "./chunk-OEHNS7YX.js";
|
|
28
10
|
import {
|
|
29
11
|
sort
|
|
30
12
|
} from "./chunk-QP2X53HC.js";
|
|
@@ -41,14 +23,14 @@ import {
|
|
|
41
23
|
tripleTriangleLeft
|
|
42
24
|
} from "./chunk-IIRP4XMQ.js";
|
|
43
25
|
import {
|
|
44
|
-
|
|
45
|
-
} from "./chunk-
|
|
26
|
+
tripleTriangleRight
|
|
27
|
+
} from "./chunk-ZTOANBNR.js";
|
|
46
28
|
import {
|
|
47
|
-
|
|
48
|
-
} from "./chunk-
|
|
29
|
+
unlock
|
|
30
|
+
} from "./chunk-TMTWPBFD.js";
|
|
49
31
|
import {
|
|
50
|
-
|
|
51
|
-
} from "./chunk-
|
|
32
|
+
videoTrack
|
|
33
|
+
} from "./chunk-AIJWNUXU.js";
|
|
52
34
|
import {
|
|
53
35
|
playlist
|
|
54
36
|
} from "./chunk-KLAI7YSD.js";
|
|
@@ -65,14 +47,14 @@ import {
|
|
|
65
47
|
replay
|
|
66
48
|
} from "./chunk-YHTCXXEG.js";
|
|
67
49
|
import {
|
|
68
|
-
|
|
69
|
-
} from "./chunk-
|
|
50
|
+
returnBack
|
|
51
|
+
} from "./chunk-BHHFZM5D.js";
|
|
70
52
|
import {
|
|
71
|
-
|
|
72
|
-
} from "./chunk-
|
|
53
|
+
settings
|
|
54
|
+
} from "./chunk-2J3FJY73.js";
|
|
73
55
|
import {
|
|
74
|
-
|
|
75
|
-
} from "./chunk-
|
|
56
|
+
shuffle
|
|
57
|
+
} from "./chunk-OEHNS7YX.js";
|
|
76
58
|
import {
|
|
77
59
|
next
|
|
78
60
|
} from "./chunk-MP2GRDUX.js";
|
|
@@ -89,14 +71,14 @@ import {
|
|
|
89
71
|
pause
|
|
90
72
|
} from "./chunk-OOXUZMZ7.js";
|
|
91
73
|
import {
|
|
92
|
-
|
|
93
|
-
} from "./chunk-
|
|
74
|
+
pipPlaceholder
|
|
75
|
+
} from "./chunk-7CRW7VGS.js";
|
|
94
76
|
import {
|
|
95
|
-
|
|
96
|
-
} from "./chunk-
|
|
77
|
+
play
|
|
78
|
+
} from "./chunk-K4UHBEDT.js";
|
|
97
79
|
import {
|
|
98
|
-
|
|
99
|
-
} from "./chunk-
|
|
80
|
+
playbackRate
|
|
81
|
+
} from "./chunk-C3IEUYR3.js";
|
|
100
82
|
import {
|
|
101
83
|
expandMiniplayer
|
|
102
84
|
} from "./chunk-DN4TFOZV.js";
|
|
@@ -113,14 +95,14 @@ import {
|
|
|
113
95
|
goBack
|
|
114
96
|
} from "./chunk-4XUR7NSC.js";
|
|
115
97
|
import {
|
|
116
|
-
|
|
117
|
-
} from "./chunk-
|
|
98
|
+
lock
|
|
99
|
+
} from "./chunk-T4LAQEBY.js";
|
|
118
100
|
import {
|
|
119
|
-
|
|
120
|
-
} from "./chunk-
|
|
101
|
+
loop
|
|
102
|
+
} from "./chunk-OSDM6ZVT.js";
|
|
121
103
|
import {
|
|
122
|
-
|
|
123
|
-
} from "./chunk-
|
|
104
|
+
mic
|
|
105
|
+
} from "./chunk-PEKXIISU.js";
|
|
124
106
|
import {
|
|
125
107
|
edit
|
|
126
108
|
} from "./chunk-NLJQAJZB.js";
|
|
@@ -137,14 +119,14 @@ import {
|
|
|
137
119
|
errorPlaceholder
|
|
138
120
|
} from "./chunk-2K7QF6AQ.js";
|
|
139
121
|
import {
|
|
140
|
-
|
|
141
|
-
} from "./chunk-
|
|
122
|
+
exitFullscreen
|
|
123
|
+
} from "./chunk-DR2VKENG.js";
|
|
142
124
|
import {
|
|
143
|
-
|
|
144
|
-
} from "./chunk-
|
|
125
|
+
exitPip
|
|
126
|
+
} from "./chunk-OCWLEK2W.js";
|
|
145
127
|
import {
|
|
146
|
-
|
|
147
|
-
} from "./chunk-
|
|
128
|
+
exitTheater
|
|
129
|
+
} from "./chunk-CRH6DM5A.js";
|
|
148
130
|
import {
|
|
149
131
|
capture
|
|
150
132
|
} from "./chunk-HA2GK6KH.js";
|
|
@@ -161,14 +143,14 @@ import {
|
|
|
161
143
|
check
|
|
162
144
|
} from "./chunk-O7XYY33O.js";
|
|
163
145
|
import {
|
|
164
|
-
|
|
165
|
-
} from "./chunk-
|
|
146
|
+
doubleTriangleLeft
|
|
147
|
+
} from "./chunk-VGWGAAZA.js";
|
|
166
148
|
import {
|
|
167
|
-
|
|
168
|
-
} from "./chunk-
|
|
149
|
+
doubleTriangleRight
|
|
150
|
+
} from "./chunk-Q5TE3ZDK.js";
|
|
169
151
|
import {
|
|
170
|
-
|
|
171
|
-
} from "./chunk-
|
|
152
|
+
dragIndicator
|
|
153
|
+
} from "./chunk-ZLZCQ3KJ.js";
|
|
172
154
|
import {
|
|
173
155
|
autoplay
|
|
174
156
|
} from "./chunk-WTHHXWQM.js";
|
|
@@ -184,12 +166,30 @@ import {
|
|
|
184
166
|
import {
|
|
185
167
|
brightnessHigh
|
|
186
168
|
} from "./chunk-YEQ7IT4H.js";
|
|
169
|
+
import {
|
|
170
|
+
brightnessLow
|
|
171
|
+
} from "./chunk-63CB7WUR.js";
|
|
172
|
+
import {
|
|
173
|
+
bwd
|
|
174
|
+
} from "./chunk-PV24XKW2.js";
|
|
175
|
+
import {
|
|
176
|
+
captions
|
|
177
|
+
} from "./chunk-CTSPKWKN.js";
|
|
187
178
|
import {
|
|
188
179
|
add
|
|
189
180
|
} from "./chunk-ID72UAJE.js";
|
|
190
181
|
import {
|
|
191
182
|
airplay
|
|
192
183
|
} from "./chunk-JP5X5JDL.js";
|
|
184
|
+
import {
|
|
185
|
+
airplayPlaceholder
|
|
186
|
+
} from "./chunk-URDNEQFP.js";
|
|
187
|
+
import {
|
|
188
|
+
ambience
|
|
189
|
+
} from "./chunk-XHXIXEGS.js";
|
|
190
|
+
import {
|
|
191
|
+
audioTrack
|
|
192
|
+
} from "./chunk-AH2VE4UI.js";
|
|
193
193
|
import {
|
|
194
194
|
IconRegistry
|
|
195
195
|
} from "./chunk-3NUEYI6F.js";
|
|
@@ -262,4 +262,4 @@ IconRegistry.registerAll({
|
|
|
262
262
|
goBack,
|
|
263
263
|
mic
|
|
264
264
|
});
|
|
265
|
-
//# sourceMappingURL=chunk-
|
|
265
|
+
//# sourceMappingURL=chunk-JLUX5NZJ.js.map
|
|
@@ -9,14 +9,14 @@ import {
|
|
|
9
9
|
CONFIG_BUILD,
|
|
10
10
|
STATE_BUILD
|
|
11
11
|
} from "./chunk-DZGMINRA.js";
|
|
12
|
-
import {
|
|
13
|
-
FN_KEY,
|
|
14
|
-
LUID_KEY
|
|
15
|
-
} from "./chunk-26QMCQE3.js";
|
|
16
12
|
import {
|
|
17
13
|
ACTIONS_DICT,
|
|
18
14
|
ACTIONS_ENTRIES
|
|
19
15
|
} from "./chunk-EEZLT2G2.js";
|
|
16
|
+
import {
|
|
17
|
+
FN_KEY,
|
|
18
|
+
LUID_KEY
|
|
19
|
+
} from "./chunk-26QMCQE3.js";
|
|
20
20
|
import {
|
|
21
21
|
__export
|
|
22
22
|
} from "./chunk-UVKRO5ER.js";
|
|
@@ -40,4 +40,4 @@ __export(consts_exports, {
|
|
|
40
40
|
export {
|
|
41
41
|
consts_exports
|
|
42
42
|
};
|
|
43
|
-
//# sourceMappingURL=chunk-
|
|
43
|
+
//# sourceMappingURL=chunk-LQSU7JDG.js.map
|
|
@@ -1,15 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
getSettingsVolumeMenu
|
|
3
|
-
} from "./chunk-H6RCMDPN.js";
|
|
4
|
-
import {
|
|
5
|
-
getSettingsPersistMenu
|
|
6
|
-
} from "./chunk-5J74VH7H.js";
|
|
7
|
-
import {
|
|
8
|
-
getSettingsPlaybackRateMenu
|
|
9
|
-
} from "./chunk-BZ6OAKW4.js";
|
|
10
|
-
import {
|
|
11
|
-
getSettingsPosterMenu
|
|
12
|
-
} from "./chunk-GGQFCJML.js";
|
|
13
1
|
import {
|
|
14
2
|
getSettingsSleepTimerMenu
|
|
15
3
|
} from "./chunk-IPV7SSWB.js";
|
|
@@ -23,14 +11,8 @@ import {
|
|
|
23
11
|
getSettingsVoiceMenu
|
|
24
12
|
} from "./chunk-WX5AO66W.js";
|
|
25
13
|
import {
|
|
26
|
-
|
|
27
|
-
} from "./chunk-
|
|
28
|
-
import {
|
|
29
|
-
getSettingsGestureMenu
|
|
30
|
-
} from "./chunk-SL3E3D2U.js";
|
|
31
|
-
import {
|
|
32
|
-
getSettingsKeysMenu
|
|
33
|
-
} from "./chunk-C5VHC67O.js";
|
|
14
|
+
getSettingsVolumeMenu
|
|
15
|
+
} from "./chunk-H6RCMDPN.js";
|
|
34
16
|
import {
|
|
35
17
|
getSettingsLockedMenu
|
|
36
18
|
} from "./chunk-BRA3Z2FX.js";
|
|
@@ -47,14 +29,14 @@ import {
|
|
|
47
29
|
getSettingspanelMenu
|
|
48
30
|
} from "./chunk-A4TTYDEZ.js";
|
|
49
31
|
import {
|
|
50
|
-
|
|
51
|
-
} from "./chunk-
|
|
32
|
+
getSettingsPersistMenu
|
|
33
|
+
} from "./chunk-5J74VH7H.js";
|
|
52
34
|
import {
|
|
53
|
-
|
|
54
|
-
} from "./chunk-
|
|
35
|
+
getSettingsPlaybackRateMenu
|
|
36
|
+
} from "./chunk-BZ6OAKW4.js";
|
|
55
37
|
import {
|
|
56
|
-
|
|
57
|
-
} from "./chunk-
|
|
38
|
+
getSettingsPosterMenu
|
|
39
|
+
} from "./chunk-GGQFCJML.js";
|
|
58
40
|
import {
|
|
59
41
|
getSettingsAutoMenu
|
|
60
42
|
} from "./chunk-2O47QTXH.js";
|
|
@@ -70,12 +52,30 @@ import {
|
|
|
70
52
|
import {
|
|
71
53
|
getSettingsFastPlayMenu
|
|
72
54
|
} from "./chunk-QUFTMXOO.js";
|
|
55
|
+
import {
|
|
56
|
+
getSettingsFrameMenu
|
|
57
|
+
} from "./chunk-K2UNUA26.js";
|
|
58
|
+
import {
|
|
59
|
+
getSettingsGestureMenu
|
|
60
|
+
} from "./chunk-SL3E3D2U.js";
|
|
61
|
+
import {
|
|
62
|
+
getSettingsKeysMenu
|
|
63
|
+
} from "./chunk-C5VHC67O.js";
|
|
73
64
|
import {
|
|
74
65
|
getActionsMenu
|
|
75
66
|
} from "./chunk-74BHTSAI.js";
|
|
76
67
|
import {
|
|
77
68
|
getSettingsToastsMenu
|
|
78
69
|
} from "./chunk-4ONCJW62.js";
|
|
70
|
+
import {
|
|
71
|
+
getMainPlaylistMenu
|
|
72
|
+
} from "./chunk-QULPSJ56.js";
|
|
73
|
+
import {
|
|
74
|
+
getSkeletonMenu
|
|
75
|
+
} from "./chunk-FYWFDWGC.js";
|
|
76
|
+
import {
|
|
77
|
+
getSettingsAmbienceMenu
|
|
78
|
+
} from "./chunk-SDKNPOLX.js";
|
|
79
79
|
import {
|
|
80
80
|
MenuRegistry
|
|
81
81
|
} from "./chunk-3NUEYI6F.js";
|
|
@@ -110,4 +110,4 @@ for (const [key, menu] of [
|
|
|
110
110
|
["settings.panel", getSettingspanelMenu]
|
|
111
111
|
])
|
|
112
112
|
MenuRegistry.register(key, menu);
|
|
113
|
-
//# sourceMappingURL=chunk-
|
|
113
|
+
//# sourceMappingURL=chunk-O6VCD64X.js.map
|
|
@@ -1,21 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
TouchBrightnessNotifier
|
|
3
|
-
} from "./chunk-P37VTJI7.js";
|
|
4
|
-
import {
|
|
5
|
-
TouchTimelineNotifier
|
|
6
|
-
} from "./chunk-CBG4KPKG.js";
|
|
7
1
|
import {
|
|
8
2
|
TouchVolumeNotifier
|
|
9
3
|
} from "./chunk-BOMP2W2F.js";
|
|
10
4
|
import {
|
|
11
5
|
VolumeNotifier
|
|
12
6
|
} from "./chunk-32LAU2UA.js";
|
|
13
|
-
import {
|
|
14
|
-
ChapterNotifier
|
|
15
|
-
} from "./chunk-DIUSXM23.js";
|
|
16
|
-
import {
|
|
17
|
-
FastPlayNotifier
|
|
18
|
-
} from "./chunk-DRZX5IMC.js";
|
|
19
7
|
import {
|
|
20
8
|
FwdBwdNotifier
|
|
21
9
|
} from "./chunk-BWD6SGR5.js";
|
|
@@ -35,8 +23,11 @@ import {
|
|
|
35
23
|
ScrubNotifier
|
|
36
24
|
} from "./chunk-GMSCCJ4E.js";
|
|
37
25
|
import {
|
|
38
|
-
|
|
39
|
-
} from "./chunk-
|
|
26
|
+
TouchBrightnessNotifier
|
|
27
|
+
} from "./chunk-P37VTJI7.js";
|
|
28
|
+
import {
|
|
29
|
+
TouchTimelineNotifier
|
|
30
|
+
} from "./chunk-CBG4KPKG.js";
|
|
40
31
|
import {
|
|
41
32
|
BrightnessNotifier
|
|
42
33
|
} from "./chunk-ZNSGNZ3S.js";
|
|
@@ -52,6 +43,15 @@ import {
|
|
|
52
43
|
import {
|
|
53
44
|
CastNotifier
|
|
54
45
|
} from "./chunk-LHSDTEGX.js";
|
|
46
|
+
import {
|
|
47
|
+
ChapterNotifier
|
|
48
|
+
} from "./chunk-DIUSXM23.js";
|
|
49
|
+
import {
|
|
50
|
+
FastPlayNotifier
|
|
51
|
+
} from "./chunk-DRZX5IMC.js";
|
|
52
|
+
import {
|
|
53
|
+
AirPlayNotifier
|
|
54
|
+
} from "./chunk-XTIGTJKL.js";
|
|
55
55
|
import {
|
|
56
56
|
ComponentRegistry
|
|
57
57
|
} from "./chunk-3NUEYI6F.js";
|
|
@@ -79,4 +79,4 @@ for (const Comp of [
|
|
|
79
79
|
AirPlayNotifier
|
|
80
80
|
])
|
|
81
81
|
ComponentRegistry.register(Comp);
|
|
82
|
-
//# sourceMappingURL=chunk-
|
|
82
|
+
//# sourceMappingURL=chunk-SGQJYALA.js.map
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ShakaTech
|
|
3
|
-
} from "./chunk-5V7L4U3B.js";
|
|
4
1
|
import {
|
|
5
2
|
VimeoTech
|
|
6
3
|
} from "./chunk-VSL5UVE3.js";
|
|
@@ -13,6 +10,9 @@ import {
|
|
|
13
10
|
import {
|
|
14
11
|
HLSTech
|
|
15
12
|
} from "./chunk-LNING7Z4.js";
|
|
13
|
+
import {
|
|
14
|
+
ShakaTech
|
|
15
|
+
} from "./chunk-5V7L4U3B.js";
|
|
16
16
|
import {
|
|
17
17
|
HTML5Tech
|
|
18
18
|
} from "./chunk-QT5XXSG7.js";
|
|
@@ -31,4 +31,4 @@ for (const Tech of [
|
|
|
31
31
|
VimeoTech
|
|
32
32
|
])
|
|
33
33
|
TechRegistry.register(Tech);
|
|
34
|
-
//# sourceMappingURL=chunk-
|
|
34
|
+
//# sourceMappingURL=chunk-U4STCHIM.js.map
|
|
@@ -99,7 +99,7 @@ var FramePlug = class extends BasePlug {
|
|
|
99
99
|
}
|
|
100
100
|
return;
|
|
101
101
|
}
|
|
102
|
-
async getMainColor(time, poster = this.media.
|
|
102
|
+
async getMainColor(time, poster = this.media.state.poster, config) {
|
|
103
103
|
return getDominantColor(poster ? poster : (await this.extract("", time ?? await this.getGoodTime(config), true, 1)).canvas);
|
|
104
104
|
}
|
|
105
105
|
moveFrame(dir = "forwards") {
|
|
@@ -115,4 +115,4 @@ __publicField(FramePlug, "BUILD", FRAME_BUILD);
|
|
|
115
115
|
export {
|
|
116
116
|
FramePlug
|
|
117
117
|
};
|
|
118
|
-
//# sourceMappingURL=chunk-
|
|
118
|
+
//# sourceMappingURL=chunk-U6XDI2FQ.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ts/plugs/settings/frame/index.ts"],"sourcesContent":["import { BasePlug } from \"../../base\";\r\nimport type { FrameConfig } from \"./types\";\r\nimport { FRAME_BUILD } from \"./build\";\r\nimport { getDominantColor, getRGBBri, getRGBSat } from \"@utils/color\";\r\nimport { createEl } from \"@utils/dom\";\r\nimport { clamp, safeNum } from \"@utils/num\";\r\nimport { parseCSSTime } from \"@utils/str\";\r\nimport { formatMediaTime } from \"@utils/time\";\r\nimport { silence } from \"sia-reactor/modules\";\r\nimport { setTimeout } from \"@utils/fn\";\r\nimport { getMediaMin, getMediaMax } from \"@utils/time\";\r\n\r\nexport class FramePlug extends BasePlug<FrameConfig> {\r\n public static readonly plugName = \"frame\";\r\n public static readonly BUILD = FRAME_BUILD;\r\n public exportCanvas: HTMLCanvasElement = createEl(\"canvas\");\r\n public exportCtx: CanvasRenderingContext2D = this.exportCanvas.getContext(\"2d\", { alpha: false })!;\r\n\r\n public override wire(): void {\r\n // Ctlr Media Watchers\r\n this.media.watch(\"tech\", this.syncFeatures, { init: true, signal: this.signal });\r\n // ---- Config --------\r\n this.ctlr.config.watch(\"settings.frame.disabled\", this.syncFeatures, { signal: this.signal });\r\n // Post Wiring\r\n this.ctlr.learn(\"capture\", { fn: () => this.capture(\"\") }, this.signal);\r\n this.ctlr.learn(\"timeStepFwd\", { fn: () => this.moveFrame(\"forwards\"), keyboard: { phase: \"keydown\" } }, this.signal);\r\n this.ctlr.learn(\"timeStepBwd\", { fn: () => this.moveFrame(\"backwards\"), keyboard: { phase: \"keydown\" } }, this.signal);\r\n super.wire();\r\n }\r\n\r\n public async extract(display: \"\" | \"monochrome\", time?: number, raw?: false, min?: number, video?: HTMLVideoElement): Promise<{ blob: Blob | null; url: string }>;\r\n public async extract(display: \"\" | \"monochrome\", time?: number, raw?: true, min?: number, video?: HTMLVideoElement): Promise<{ canvas: HTMLCanvasElement; context: CanvasRenderingContext2D }>;\r\n public async extract(display: string = \"\", time = safeNum(this.media.state.currentTime), raw = false, min = 0, video = this.media.pseudoElement as HTMLVideoElement): Promise<any> {\r\n if (!this.media.features.frameCapture) return raw ? { canvas: this.exportCanvas, context: (this.exportCtx.clearRect(0, 0, this.exportCanvas.width, this.exportCanvas.height), this.exportCtx) } : { blob: null, url: \"\" };\r\n if (video !== this.media.element) {\r\n if (this.ctlr.state.frameReadyPromise) await this.ctlr.state.frameReadyPromise; // wait for it to get set by last getter 5 lines below\r\n if (Math.abs(video.currentTime - time) > 0.01 || !video.readyState) {\r\n this.ctlr.state.frameReadyPromise ??= new Promise<null>((res, _, cb = () => (clearTimeout(t), res(null)), t?: any) => ([video.readyState ? \"timeupdate\" : \"loadeddata\", \"error\", \"abort\", \"emptied\"].forEach((ev) => video.addEventListener(ev, cb, { once: true, signal: this.signal })), (t = setTimeout(cb, 15000, this.signal)))); // me sef no small, been burned before this\r\n video.currentTime = time; // small epsilon tolerance for video time comparison - 0.01(10ms)\r\n }\r\n this.ctlr.state.frameReadyPromise = await this.ctlr.state.frameReadyPromise;\r\n }\r\n (this.exportCanvas.width = video.videoWidth || min), (this.exportCanvas.height = video.videoHeight || min);\r\n this.exportCtx.filter = `${this.settings.css.filter as string}${display === \"monochrome\" ? \" grayscale(100%)\" : \"\"}`;\r\n this.exportCtx.drawImage(video, 0, 0, this.exportCanvas.width, this.exportCanvas.height);\r\n this.exportCtx.filter = \"none\";\r\n if (raw === true) return { canvas: this.exportCanvas, context: this.exportCtx };\r\n let blob: Blob | null | false | 0 = null;\r\n try {\r\n blob = (this.exportCanvas.width || this.exportCanvas.height) && (await new Promise<Blob | null>((res) => this.exportCanvas.toBlob(res)));\r\n } catch (err) {\r\n this.ctlr.log(err, \"error\", true); // #LESS: error not worth notifying\r\n }\r\n return { blob: blob || null, url: blob ? URL.createObjectURL(blob) : \"\" };\r\n }\r\n\r\n public async capture(display: \"\" | \"monochrome\" = \"\", time = safeNum(this.media.state.currentTime)): Promise<void> {\r\n if (!this.media.features.frameCapture) return;\r\n this.ctlr.notify?.(\"capture\"); // #STALLING: necessary optimistic distraction\r\n const toast = this.ctlr.toast,\r\n tTxt = formatMediaTime({ time, format: \"human\", showMs: true }),\r\n fTxt = `video frame ${display === \"monochrome\" ? \"in b&w \" : \"\"}at ${tTxt}`,\r\n tId = toast?.loading(`Capturing ${fTxt}...`, { delay: parseCSSTime(this.settings.css.notifiersAnimationTime), image: window.TMG_MEDIA_ALT_IMG_SRC, tag: `tmg-${this.media.settings.metadata.title ?? \"Video\"}fcpa${tTxt}${display}`, signal: this.signal, ...this.config.toast }) as string,\r\n frame = await this.extract(display, time, false, 0, this.media.element as HTMLVideoElement),\r\n filename = `${this.media.settings.metadata.title ?? \"Video\"}_${display === \"monochrome\" ? `black&white_` : \"\"}at_${tTxt}.png`.replace(/[\\/:*?\"<>|\\s]+/g, \"_\"); // system filename safe\r\n const Save = () => {\r\n toast?.loading(tId, { render: `Saving ${fTxt}`, actions: false });\r\n createEl(\"a\", { href: frame.url as string, download: filename })?.click?.();\r\n toast?.success(tId, { delay: 1000, render: `Saved ${fTxt}`, actions: false });\r\n };\r\n const Share = () => {\r\n toast?.loading(tId, { render: `Sharing ${fTxt}`, actions: false });\r\n navigator.share?.({ title: this.media.settings.metadata.title ?? \"Video\", text: `Captured ${fTxt}`, files: [new File([frame.blob!], filename, { type: frame.blob!.type })] }).then(\r\n () => toast?.success(tId, { render: `Shared ${fTxt}`, actions: false }),\r\n () => toast?.error(tId, { render: `Failed sharing ${fTxt}`, autoClose: this.config.toast.autoClose, actions: { Save } })\r\n ) || toast?.warn(tId, { delay: 1000, render: `Couldn't share ${fTxt}`, autoClose: this.config.toast.autoClose, actions: { Save } });\r\n };\r\n frame?.url ? toast?.success(tId, { render: `Captured ${fTxt}`, image: frame.url, actions: { Save, Share }, onClose: () => URL.revokeObjectURL(frame.url), autoClose: this.config.toast.autoClose }) : toast?.error(tId, { render: `Failed capturing ${fTxt}` });\r\n }\r\n\r\n public async getGoodTime({ time: t = safeNum(this.media.state.currentTime), secondsLimit: s = 25, saturation: sat = 12, brightness: bri = 40 } = {}): Promise<number | undefined> {\r\n const end = clamp(getMediaMin(this.media), t + s, getMediaMax(this.media)),\r\n seq = ++this.findSeq;\r\n for (; t <= end; t += 0.333) {\r\n if (seq !== this.findSeq) return;\r\n const rgb = await getDominantColor((await this.extract(\"\", t, true, 1)).canvas, \"rgb\", true);\r\n if (rgb && getRGBBri(rgb) > bri && getRGBSat(rgb) > sat) return t; // <= FIRST legit content frame\r\n }\r\n return;\r\n }\r\n private findSeq = 0;\r\n\r\n public async getMainColor(time?: number, poster = (this.media.element as HTMLVideoElement).poster, config?: Parameters<typeof this.getGoodTime>[0]): Promise<string | null> {\r\n return getDominantColor(poster ? poster : (await this.extract(\"\", time ?? (await this.getGoodTime(config)), true, 1)).canvas);\r\n }\r\n\r\n public moveFrame(dir: \"forwards\" | \"backwards\" = \"forwards\"): void {\r\n this.media.state.paused && this.ctlr.throttle(\"frameStepping\", () => silence(() => (this.media.intent.currentTime = clamp(getMediaMin(this.media), Math.round(this.media.state.currentTime * this.config.fps) + (dir === \"backwards\" ? -1 : 1), Math.floor(getMediaMax(this.media) * this.config.fps)) / this.config.fps)), Math.round(1000 / this.config.fps));\r\n }\r\n\r\n public syncFeatures(): void {\r\n this.media.tech.polyfill(\"frameCapture\", this.ctlr.isNativeEl && this.media.type === \"video\", this.config.disabled);\r\n }\r\n} // Video only\r\n\r\nexport type * from \"./types\";\r\nexport * from \"./build\";\r\n\r\ndeclare module \"@defs/registries\" {\r\n interface PlugRegistryMap {\r\n \"settings.frame\": typeof FramePlug;\r\n }\r\n}\r\n\r\ndeclare module \"@defs/config\" {\r\n interface Settings {\r\n frame: FrameConfig;\r\n }\r\n}\r\n\r\ndeclare module \"@defs/contract\" {\r\n interface MediaFeaturesExt {\r\n frameCapture: boolean;\r\n }\r\n}\r\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/ts/plugs/settings/frame/index.ts"],"sourcesContent":["import { BasePlug } from \"../../base\";\r\nimport type { FrameConfig } from \"./types\";\r\nimport { FRAME_BUILD } from \"./build\";\r\nimport { getDominantColor, getRGBBri, getRGBSat } from \"@utils/color\";\r\nimport { createEl } from \"@utils/dom\";\r\nimport { clamp, safeNum } from \"@utils/num\";\r\nimport { parseCSSTime } from \"@utils/str\";\r\nimport { formatMediaTime } from \"@utils/time\";\r\nimport { silence } from \"sia-reactor/modules\";\r\nimport { setTimeout } from \"@utils/fn\";\r\nimport { getMediaMin, getMediaMax } from \"@utils/time\";\r\n\r\nexport class FramePlug extends BasePlug<FrameConfig> {\r\n public static readonly plugName = \"frame\";\r\n public static readonly BUILD = FRAME_BUILD;\r\n public exportCanvas: HTMLCanvasElement = createEl(\"canvas\");\r\n public exportCtx: CanvasRenderingContext2D = this.exportCanvas.getContext(\"2d\", { alpha: false })!;\r\n\r\n public override wire(): void {\r\n // Ctlr Media Watchers\r\n this.media.watch(\"tech\", this.syncFeatures, { init: true, signal: this.signal });\r\n // ---- Config --------\r\n this.ctlr.config.watch(\"settings.frame.disabled\", this.syncFeatures, { signal: this.signal });\r\n // Post Wiring\r\n this.ctlr.learn(\"capture\", { fn: () => this.capture(\"\") }, this.signal);\r\n this.ctlr.learn(\"timeStepFwd\", { fn: () => this.moveFrame(\"forwards\"), keyboard: { phase: \"keydown\" } }, this.signal);\r\n this.ctlr.learn(\"timeStepBwd\", { fn: () => this.moveFrame(\"backwards\"), keyboard: { phase: \"keydown\" } }, this.signal);\r\n super.wire();\r\n }\r\n\r\n public async extract(display: \"\" | \"monochrome\", time?: number, raw?: false, min?: number, video?: HTMLVideoElement): Promise<{ blob: Blob | null; url: string }>;\r\n public async extract(display: \"\" | \"monochrome\", time?: number, raw?: true, min?: number, video?: HTMLVideoElement): Promise<{ canvas: HTMLCanvasElement; context: CanvasRenderingContext2D }>;\r\n public async extract(display: string = \"\", time = safeNum(this.media.state.currentTime), raw = false, min = 0, video = this.media.pseudoElement as HTMLVideoElement): Promise<any> {\r\n if (!this.media.features.frameCapture) return raw ? { canvas: this.exportCanvas, context: (this.exportCtx.clearRect(0, 0, this.exportCanvas.width, this.exportCanvas.height), this.exportCtx) } : { blob: null, url: \"\" };\r\n if (video !== this.media.element) {\r\n if (this.ctlr.state.frameReadyPromise) await this.ctlr.state.frameReadyPromise; // wait for it to get set by last getter 5 lines below\r\n if (Math.abs(video.currentTime - time) > 0.01 || !video.readyState) {\r\n this.ctlr.state.frameReadyPromise ??= new Promise<null>((res, _, cb = () => (clearTimeout(t), res(null)), t?: any) => ([video.readyState ? \"timeupdate\" : \"loadeddata\", \"error\", \"abort\", \"emptied\"].forEach((ev) => video.addEventListener(ev, cb, { once: true, signal: this.signal })), (t = setTimeout(cb, 15000, this.signal)))); // me sef no small, been burned before this\r\n video.currentTime = time; // small epsilon tolerance for video time comparison - 0.01(10ms)\r\n }\r\n this.ctlr.state.frameReadyPromise = await this.ctlr.state.frameReadyPromise;\r\n }\r\n (this.exportCanvas.width = video.videoWidth || min), (this.exportCanvas.height = video.videoHeight || min);\r\n this.exportCtx.filter = `${this.settings.css.filter as string}${display === \"monochrome\" ? \" grayscale(100%)\" : \"\"}`;\r\n this.exportCtx.drawImage(video, 0, 0, this.exportCanvas.width, this.exportCanvas.height);\r\n this.exportCtx.filter = \"none\";\r\n if (raw === true) return { canvas: this.exportCanvas, context: this.exportCtx };\r\n let blob: Blob | null | false | 0 = null;\r\n try {\r\n blob = (this.exportCanvas.width || this.exportCanvas.height) && (await new Promise<Blob | null>((res) => this.exportCanvas.toBlob(res)));\r\n } catch (err) {\r\n this.ctlr.log(err, \"error\", true); // #LESS: error not worth notifying\r\n }\r\n return { blob: blob || null, url: blob ? URL.createObjectURL(blob) : \"\" };\r\n }\r\n\r\n public async capture(display: \"\" | \"monochrome\" = \"\", time = safeNum(this.media.state.currentTime)): Promise<void> {\r\n if (!this.media.features.frameCapture) return;\r\n this.ctlr.notify?.(\"capture\"); // #STALLING: necessary optimistic distraction\r\n const toast = this.ctlr.toast,\r\n tTxt = formatMediaTime({ time, format: \"human\", showMs: true }),\r\n fTxt = `video frame ${display === \"monochrome\" ? \"in b&w \" : \"\"}at ${tTxt}`,\r\n tId = toast?.loading(`Capturing ${fTxt}...`, { delay: parseCSSTime(this.settings.css.notifiersAnimationTime), image: window.TMG_MEDIA_ALT_IMG_SRC, tag: `tmg-${this.media.settings.metadata.title ?? \"Video\"}fcpa${tTxt}${display}`, signal: this.signal, ...this.config.toast }) as string,\r\n frame = await this.extract(display, time, false, 0, this.media.element as HTMLVideoElement),\r\n filename = `${this.media.settings.metadata.title ?? \"Video\"}_${display === \"monochrome\" ? `black&white_` : \"\"}at_${tTxt}.png`.replace(/[\\/:*?\"<>|\\s]+/g, \"_\"); // system filename safe\r\n const Save = () => {\r\n toast?.loading(tId, { render: `Saving ${fTxt}`, actions: false });\r\n createEl(\"a\", { href: frame.url as string, download: filename })?.click?.();\r\n toast?.success(tId, { delay: 1000, render: `Saved ${fTxt}`, actions: false });\r\n };\r\n const Share = () => {\r\n toast?.loading(tId, { render: `Sharing ${fTxt}`, actions: false });\r\n navigator.share?.({ title: this.media.settings.metadata.title ?? \"Video\", text: `Captured ${fTxt}`, files: [new File([frame.blob!], filename, { type: frame.blob!.type })] }).then(\r\n () => toast?.success(tId, { render: `Shared ${fTxt}`, actions: false }),\r\n () => toast?.error(tId, { render: `Failed sharing ${fTxt}`, autoClose: this.config.toast.autoClose, actions: { Save } })\r\n ) || toast?.warn(tId, { delay: 1000, render: `Couldn't share ${fTxt}`, autoClose: this.config.toast.autoClose, actions: { Save } });\r\n };\r\n frame?.url ? toast?.success(tId, { render: `Captured ${fTxt}`, image: frame.url, actions: { Save, Share }, onClose: () => URL.revokeObjectURL(frame.url), autoClose: this.config.toast.autoClose }) : toast?.error(tId, { render: `Failed capturing ${fTxt}` });\r\n }\r\n\r\n public async getGoodTime({ time: t = safeNum(this.media.state.currentTime), secondsLimit: s = 25, saturation: sat = 12, brightness: bri = 40 } = {}): Promise<number | undefined> {\r\n const end = clamp(getMediaMin(this.media), t + s, getMediaMax(this.media)),\r\n seq = ++this.findSeq;\r\n for (; t <= end; t += 0.333) {\r\n if (seq !== this.findSeq) return;\r\n const rgb = await getDominantColor((await this.extract(\"\", t, true, 1)).canvas, \"rgb\", true);\r\n if (rgb && getRGBBri(rgb) > bri && getRGBSat(rgb) > sat) return t; // <= FIRST legit content frame\r\n }\r\n return;\r\n }\r\n private findSeq = 0;\r\n\r\n public async getMainColor(time?: number, poster = this.media.state.poster, config?: Parameters<typeof this.getGoodTime>[0]): Promise<string | null> {\r\n return getDominantColor(poster ? poster : (await this.extract(\"\", time ?? (await this.getGoodTime(config)), true, 1)).canvas);\r\n }\r\n\r\n public moveFrame(dir: \"forwards\" | \"backwards\" = \"forwards\"): void {\r\n this.media.state.paused && this.ctlr.throttle(\"frameStepping\", () => silence(() => (this.media.intent.currentTime = clamp(getMediaMin(this.media), Math.round(this.media.state.currentTime * this.config.fps) + (dir === \"backwards\" ? -1 : 1), Math.floor(getMediaMax(this.media) * this.config.fps)) / this.config.fps)), Math.round(1000 / this.config.fps));\r\n }\r\n\r\n public syncFeatures(): void {\r\n this.media.tech.polyfill(\"frameCapture\", this.ctlr.isNativeEl && this.media.type === \"video\", this.config.disabled);\r\n }\r\n} // Video only\r\n\r\nexport type * from \"./types\";\r\nexport * from \"./build\";\r\n\r\ndeclare module \"@defs/registries\" {\r\n interface PlugRegistryMap {\r\n \"settings.frame\": typeof FramePlug;\r\n }\r\n}\r\n\r\ndeclare module \"@defs/config\" {\r\n interface Settings {\r\n frame: FrameConfig;\r\n }\r\n}\r\n\r\ndeclare module \"@defs/contract\" {\r\n interface MediaFeaturesExt {\r\n frameCapture: boolean;\r\n }\r\n}\r\n"],"mappings":"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","names":[]}
|