Files
pole-book/server/node_modules/@mux/mux-video/dist/index.mjs.map

8 lines
143 KiB
Plaintext

{
"version": 3,
"sources": ["../src/polyfills/index.ts", "../src/index.ts", "../src/env.ts", "../../../node_modules/custom-media-element/custom-media-element.js", "../../../node_modules/castable-video/castable-utils.js", "../../../node_modules/castable-video/castable-remote-playback.js", "../../../node_modules/castable-video/castable-mixin.js", "../../../node_modules/media-tracks/dist/track-event.js", "../../../node_modules/media-tracks/dist/utils.js", "../../../node_modules/media-tracks/dist/video-track-list.js", "../../../node_modules/media-tracks/dist/rendition-event.js", "../../../node_modules/media-tracks/dist/video-rendition-list.js", "../../../node_modules/media-tracks/dist/video-rendition.js", "../../../node_modules/media-tracks/dist/video-track.js", "../../../node_modules/media-tracks/dist/audio-rendition-list.js", "../../../node_modules/media-tracks/dist/audio-rendition.js", "../../../node_modules/media-tracks/dist/audio-track-list.js", "../../../node_modules/media-tracks/dist/audio-track.js", "../../../node_modules/media-tracks/dist/mixin.js"],
"sourcesContent": ["/* eslint @typescript-eslint/no-empty-function: \"off\", @typescript-eslint/no-unused-vars: \"off\" */\n\nclass EventTarget {\n addEventListener() {}\n removeEventListener() {}\n dispatchEvent(_event: Event) {\n return true;\n }\n}\n\n// @github/template-parts requires DocumentFragment to be available on globalThis for SSR\nif (typeof DocumentFragment === 'undefined') {\n class DocumentFragment extends EventTarget {}\n // @ts-ignore\n globalThis.DocumentFragment = DocumentFragment;\n}\n\nclass HTMLElement extends EventTarget {}\nclass HTMLVideoElement extends EventTarget {}\n\nconst customElements: CustomElementRegistry = {\n get(_name: string) {\n return undefined;\n },\n define(_name, _constructor, _options) {},\n getName(_constructor) {\n return null;\n },\n upgrade(_root) {},\n whenDefined(_name) {\n return Promise.resolve(HTMLElement as unknown as CustomElementConstructor);\n },\n};\n\nclass CustomEvent {\n #detail;\n get detail() {\n return this.#detail;\n }\n constructor(typeArg: string, eventInitDict: CustomEventInit = {}) {\n // super(typeArg, eventInitDict);\n this.#detail = eventInitDict?.detail;\n }\n initCustomEvent() {}\n}\n\nfunction createElement(_tagName: string, _options?: ElementCreationOptions): HTMLElement {\n return new HTMLElement();\n}\n\nconst globalThisShim = {\n document: {\n createElement,\n },\n DocumentFragment,\n customElements,\n CustomEvent,\n EventTarget,\n HTMLElement,\n HTMLVideoElement,\n};\n\n// const isServer = typeof window === 'undefined' || typeof globalThis.customElements === 'undefined';\n// const GlobalThis = isServer ? globalThisShim : globalThis;\n// const Document = isServer ? globalThisShim.document : globalThis.document;\n//\n// export { GlobalThis as globalThis, Document as document };\nconst isServer = typeof window === 'undefined' || typeof globalThis.customElements === 'undefined';\ntype GlobalThis = typeof globalThis;\nconst internalGlobalThis: GlobalThis = (isServer ? globalThisShim : globalThis) as GlobalThis;\nconst internalDocument: Document = (isServer ? globalThisShim.document : globalThis.document) as Document;\n\nexport { internalGlobalThis as globalThis, internalDocument as document };\n", "import { globalThis } from './polyfills';\nimport {\n initialize,\n teardown,\n generatePlayerInitTime,\n MuxMediaProps,\n StreamTypes,\n PlaybackTypes,\n toMuxVideoURL,\n Metadata,\n MediaError,\n getError,\n CmcdTypes,\n CmcdTypeValues,\n addCuePoints,\n getCuePoints,\n getActiveCuePoint,\n addChapters,\n getActiveChapter,\n getStartDate,\n getCurrentPdt,\n getStreamType,\n getTargetLiveWindow,\n getLiveEdgeStart,\n getSeekable,\n getEnded,\n getChapters,\n toPlaybackIdFromSrc,\n toPlaybackIdParts,\n // isMuxVideoSrc,\n} from '@mux/playback-core';\nimport type {\n PlaybackCore,\n PlaybackEngine,\n Autoplay,\n ExtensionMimeTypeMap,\n ValueOf,\n MaxResolutionValue,\n MinResolutionValue,\n RenditionOrderValue,\n Chapter,\n CuePoint,\n Tokens,\n} from '@mux/playback-core';\nimport { getPlayerVersion } from './env';\n// this must be imported after playback-core for the polyfill to be included\nimport { CustomVideoElement, Events as VideoEvents } from 'custom-media-element';\nimport { CastableMediaMixin } from 'castable-video/castable-mixin.js';\nimport { MediaTracksMixin } from 'media-tracks';\nimport type { HlsConfig } from 'hls.js';\n\n// Must mutate so the added events are available in custom-media-element.\nVideoEvents.push('castchange', 'entercast', 'leavecast');\n\nexport const Attributes = {\n BEACON_COLLECTION_DOMAIN: 'beacon-collection-domain',\n CUSTOM_DOMAIN: 'custom-domain',\n DEBUG: 'debug',\n DISABLE_TRACKING: 'disable-tracking',\n DISABLE_COOKIES: 'disable-cookies',\n DRM_TOKEN: 'drm-token',\n PLAYBACK_TOKEN: 'playback-token',\n ENV_KEY: 'env-key',\n MAX_RESOLUTION: 'max-resolution',\n MIN_RESOLUTION: 'min-resolution',\n RENDITION_ORDER: 'rendition-order',\n PROGRAM_START_TIME: 'program-start-time',\n PROGRAM_END_TIME: 'program-end-time',\n ASSET_START_TIME: 'asset-start-time',\n ASSET_END_TIME: 'asset-end-time',\n METADATA_URL: 'metadata-url',\n PLAYBACK_ID: 'playback-id',\n PLAYER_SOFTWARE_NAME: 'player-software-name',\n PLAYER_SOFTWARE_VERSION: 'player-software-version',\n PREFER_CMCD: 'prefer-cmcd',\n PREFER_PLAYBACK: 'prefer-playback',\n START_TIME: 'start-time',\n STREAM_TYPE: 'stream-type',\n TARGET_LIVE_WINDOW: 'target-live-window',\n LIVE_EDGE_OFFSET: 'live-edge-offset',\n TYPE: 'type',\n} as const;\n\nconst AttributeNameValues = Object.values(Attributes);\n\nconst playerSoftwareVersion = getPlayerVersion();\nconst playerSoftwareName = 'mux-video';\n\nclass MuxVideoBaseElement extends CustomVideoElement implements Partial<MuxMediaProps> {\n static get observedAttributes() {\n return [...AttributeNameValues, ...(CustomVideoElement.observedAttributes ?? [])];\n }\n\n #core?: PlaybackCore;\n #loadRequested?: Promise<void> | null;\n #playerInitTime: number;\n #metadata: Readonly<Metadata> = {};\n #tokens: Tokens = {};\n #_hlsConfig?: Partial<HlsConfig>;\n #playerSoftwareVersion?: string;\n #playerSoftwareName?: string;\n #errorTranslator?: (errorEvent: any) => any;\n\n constructor() {\n super();\n this.#playerInitTime = generatePlayerInitTime();\n }\n\n get preferCmcd() {\n return (this.getAttribute(Attributes.PREFER_CMCD) as ValueOf<CmcdTypes>) ?? undefined;\n }\n\n set preferCmcd(value: ValueOf<CmcdTypes> | undefined) {\n if (value === this.preferCmcd) return;\n if (!value) {\n this.removeAttribute(Attributes.PREFER_CMCD);\n } else if (CmcdTypeValues.includes(value)) {\n this.setAttribute(Attributes.PREFER_CMCD, value);\n } else {\n console.warn(`Invalid value for preferCmcd. Must be one of ${CmcdTypeValues.join()}`);\n }\n }\n\n get playerInitTime() {\n return this.#playerInitTime;\n }\n\n get playerSoftwareName() {\n return this.#playerSoftwareName ?? playerSoftwareName;\n }\n\n set playerSoftwareName(value: string | undefined) {\n this.#playerSoftwareName = value;\n }\n\n get playerSoftwareVersion() {\n return this.#playerSoftwareVersion ?? playerSoftwareVersion;\n }\n\n set playerSoftwareVersion(value: string | undefined) {\n this.#playerSoftwareVersion = value;\n }\n\n // Keeping this named \"_hls\" since it's exposed for unadvertised \"advanced usage\" via getter that assumes specifically hls.js (CJP)\n get _hls(): PlaybackEngine | undefined {\n return this.#core?.engine;\n }\n\n get mux(): Readonly<HTMLVideoElement['mux']> | undefined {\n return this.nativeEl?.mux;\n }\n\n get error() {\n return getError(this.nativeEl) ?? null;\n }\n\n get errorTranslator(): ((errorEvent: any) => any) | undefined {\n return this.#errorTranslator;\n }\n\n set errorTranslator(value: ((errorEvent: any) => any) | undefined) {\n this.#errorTranslator = value;\n }\n\n get src() {\n // Use the attribute value as the source of truth.\n // No need to store it in two places.\n // This avoids needing a to read the attribute initially and update the src.\n return this.getAttribute('src') as string;\n }\n\n set src(val: string) {\n // If being set by attributeChangedCallback,\n // dont' cause an infinite loop\n if (val === this.src) return;\n\n if (val == null) {\n this.removeAttribute('src');\n } else {\n this.setAttribute('src', val);\n }\n }\n\n get type(): ValueOf<ExtensionMimeTypeMap> | undefined {\n return (this.getAttribute(Attributes.TYPE) as ValueOf<ExtensionMimeTypeMap>) ?? undefined;\n }\n\n set type(val: ValueOf<ExtensionMimeTypeMap> | undefined) {\n // dont' cause an infinite loop\n if (val === this.type) return;\n\n if (val) {\n this.setAttribute(Attributes.TYPE, val);\n } else {\n this.removeAttribute(Attributes.TYPE);\n }\n }\n\n /** @ts-ignore */\n get autoplay(): Autoplay {\n const attr = this.getAttribute('autoplay');\n\n if (attr === null) {\n return false;\n } else if (attr === '') {\n return true;\n } else {\n return attr as Autoplay;\n }\n }\n\n /** @ts-ignore */\n set autoplay(val: Autoplay) {\n const currentVal = this.autoplay;\n if (val === currentVal) {\n return;\n }\n\n if (val) {\n this.setAttribute('autoplay', typeof val === 'string' ? val : '');\n } else {\n this.removeAttribute('autoplay');\n }\n }\n\n get preload() {\n const val = this.getAttribute('preload') as HTMLMediaElement['preload'];\n if (val === '') return 'auto';\n if (['none', 'metadata', 'auto'].includes(val)) return val;\n return super.preload;\n }\n\n set preload(val) {\n // don't cause an infinite loop\n // check the attribute because an empty string maps to the `auto` prop\n if (val == this.getAttribute('preload')) return;\n\n if (['', 'none', 'metadata', 'auto'].includes(val)) {\n this.setAttribute('preload', val);\n } else {\n this.removeAttribute('preload');\n }\n }\n\n get debug() {\n return this.getAttribute(Attributes.DEBUG) != null;\n }\n\n set debug(val) {\n // dont' cause an infinite loop\n if (val === this.debug) return;\n\n if (val) {\n this.setAttribute(Attributes.DEBUG, '');\n } else {\n this.removeAttribute(Attributes.DEBUG);\n }\n }\n\n get disableTracking() {\n return this.hasAttribute(Attributes.DISABLE_TRACKING);\n }\n\n set disableTracking(val) {\n // dont' cause an infinite loop\n if (val === this.disableTracking) return;\n\n this.toggleAttribute(Attributes.DISABLE_TRACKING, !!val);\n }\n\n get disableCookies() {\n return this.hasAttribute(Attributes.DISABLE_COOKIES);\n }\n\n set disableCookies(val) {\n // dont' cause an infinite loop\n if (val === this.disableCookies) return;\n\n if (val) {\n this.setAttribute(Attributes.DISABLE_COOKIES, '');\n } else {\n this.removeAttribute(Attributes.DISABLE_COOKIES);\n }\n }\n\n get startTime(): number | undefined {\n const val = this.getAttribute(Attributes.START_TIME);\n if (val == null) return undefined;\n const num = +val;\n return !Number.isNaN(num) ? num : undefined;\n }\n\n set startTime(val: number | undefined) {\n // dont' cause an infinite loop\n if (val === this.startTime) return;\n\n if (val == null) {\n this.removeAttribute(Attributes.START_TIME);\n } else {\n this.setAttribute(Attributes.START_TIME, `${val}`);\n }\n }\n\n // NOTE: playbackId may contain additional query params (e.g. token= for playback token) (CJP)\n get playbackId(): string | undefined {\n if (this.hasAttribute(Attributes.PLAYBACK_ID)) {\n return this.getAttribute(Attributes.PLAYBACK_ID) as string;\n }\n\n return toPlaybackIdFromSrc(this.src) ?? undefined;\n }\n\n set playbackId(val: string | undefined) {\n // dont' cause an infinite loop\n if (val === this.playbackId) return;\n\n if (val) {\n this.setAttribute(Attributes.PLAYBACK_ID, val);\n } else {\n this.removeAttribute(Attributes.PLAYBACK_ID);\n }\n }\n\n get maxResolution() {\n return (this.getAttribute(Attributes.MAX_RESOLUTION) as MaxResolutionValue) ?? undefined;\n }\n\n set maxResolution(val: MaxResolutionValue | undefined) {\n if (val === this.maxResolution) return;\n\n if (val) {\n this.setAttribute(Attributes.MAX_RESOLUTION, val);\n } else {\n this.removeAttribute(Attributes.MAX_RESOLUTION);\n }\n }\n\n get minResolution() {\n return (this.getAttribute(Attributes.MIN_RESOLUTION) as MinResolutionValue) ?? undefined;\n }\n\n set minResolution(val: MinResolutionValue | undefined) {\n if (val === this.minResolution) return;\n\n if (val) {\n this.setAttribute(Attributes.MIN_RESOLUTION, val);\n } else {\n this.removeAttribute(Attributes.MIN_RESOLUTION);\n }\n }\n\n get renditionOrder() {\n return (this.getAttribute(Attributes.RENDITION_ORDER) as RenditionOrderValue) ?? undefined;\n }\n\n set renditionOrder(val: RenditionOrderValue | undefined) {\n if (val === this.renditionOrder) return;\n\n if (val) {\n this.setAttribute(Attributes.RENDITION_ORDER, val);\n } else {\n this.removeAttribute(Attributes.RENDITION_ORDER);\n }\n }\n\n get programStartTime() {\n const val = this.getAttribute(Attributes.PROGRAM_START_TIME);\n if (val == null) return undefined;\n const num = +val;\n return !Number.isNaN(num) ? num : undefined;\n }\n\n set programStartTime(val: number | undefined) {\n if (val == undefined) {\n this.removeAttribute(Attributes.PROGRAM_START_TIME);\n } else {\n this.setAttribute(Attributes.PROGRAM_START_TIME, `${val}`);\n }\n }\n\n get programEndTime() {\n const val = this.getAttribute(Attributes.PROGRAM_END_TIME);\n if (val == null) return undefined;\n const num = +val;\n return !Number.isNaN(num) ? num : undefined;\n }\n\n set programEndTime(val: number | undefined) {\n if (val == undefined) {\n this.removeAttribute(Attributes.PROGRAM_END_TIME);\n } else {\n this.setAttribute(Attributes.PROGRAM_END_TIME, `${val}`);\n }\n }\n\n get assetStartTime() {\n const val = this.getAttribute(Attributes.ASSET_START_TIME);\n if (val == null) return undefined;\n const num = +val;\n return !Number.isNaN(num) ? num : undefined;\n }\n\n set assetStartTime(val: number | undefined) {\n if (val == undefined) {\n this.removeAttribute(Attributes.ASSET_START_TIME);\n } else {\n this.setAttribute(Attributes.ASSET_START_TIME, `${val}`);\n }\n }\n\n get assetEndTime() {\n const val = this.getAttribute(Attributes.ASSET_END_TIME);\n if (val == null) return undefined;\n const num = +val;\n return !Number.isNaN(num) ? num : undefined;\n }\n\n set assetEndTime(val: number | undefined) {\n if (val == undefined) {\n this.removeAttribute(Attributes.ASSET_END_TIME);\n } else {\n this.setAttribute(Attributes.ASSET_END_TIME, `${val}`);\n }\n }\n\n get customDomain() {\n return this.getAttribute(Attributes.CUSTOM_DOMAIN) ?? undefined;\n }\n\n set customDomain(val: string | undefined) {\n // dont' cause an infinite loop\n if (val === this.customDomain) return;\n\n if (val) {\n this.setAttribute(Attributes.CUSTOM_DOMAIN, val);\n } else {\n this.removeAttribute(Attributes.CUSTOM_DOMAIN);\n }\n }\n\n get drmToken() {\n return this.getAttribute(Attributes.DRM_TOKEN) ?? undefined;\n }\n\n set drmToken(val: string | undefined) {\n // dont' cause an infinite loop\n if (val === this.drmToken) return;\n\n if (val) {\n this.setAttribute(Attributes.DRM_TOKEN, val);\n } else {\n this.removeAttribute(Attributes.DRM_TOKEN);\n }\n }\n\n /**\n * Get the playback token for signing the src URL.\n */\n get playbackToken() {\n if (this.hasAttribute(Attributes.PLAYBACK_TOKEN)) {\n return this.getAttribute(Attributes.PLAYBACK_TOKEN) ?? undefined;\n }\n if (this.hasAttribute(Attributes.PLAYBACK_ID)) {\n const [, queryParts] = toPlaybackIdParts(this.playbackId ?? '');\n return new URLSearchParams(queryParts).get('token') ?? undefined;\n }\n if (this.src) {\n return new URLSearchParams(this.src).get('token') ?? undefined;\n }\n return undefined;\n }\n\n /**\n * Set the playback token for signing the src URL.\n */\n set playbackToken(val: string | undefined) {\n if (val === this.playbackToken) return;\n\n if (val) {\n this.setAttribute(Attributes.PLAYBACK_TOKEN, val);\n } else {\n this.removeAttribute(Attributes.PLAYBACK_TOKEN);\n }\n }\n\n get tokens() {\n const playback = this.getAttribute(Attributes.PLAYBACK_TOKEN);\n const drm = this.getAttribute(Attributes.DRM_TOKEN);\n return {\n ...this.#tokens,\n ...(playback != null ? { playback } : {}),\n ...(drm != null ? { drm } : {}),\n };\n }\n\n set tokens(val) {\n this.#tokens = val ?? {};\n }\n\n get ended() {\n // This ensures that edge case media that doesn't properly end will\n // still announce itself as \"ended\".\n return getEnded(this.nativeEl, this._hls);\n }\n\n get envKey(): string | undefined {\n return this.getAttribute(Attributes.ENV_KEY) ?? undefined;\n }\n\n set envKey(val: string | undefined) {\n // dont' cause an infinite loop\n if (val === this.envKey) return;\n\n if (val) {\n this.setAttribute(Attributes.ENV_KEY, val);\n } else {\n this.removeAttribute(Attributes.ENV_KEY);\n }\n }\n\n get beaconCollectionDomain(): string | undefined {\n return this.getAttribute(Attributes.BEACON_COLLECTION_DOMAIN) ?? undefined;\n }\n\n set beaconCollectionDomain(val: string | undefined) {\n // don't cause an infinite loop\n if (val === this.beaconCollectionDomain) return;\n\n if (val) {\n this.setAttribute(Attributes.BEACON_COLLECTION_DOMAIN, val);\n } else {\n this.removeAttribute(Attributes.BEACON_COLLECTION_DOMAIN);\n }\n }\n\n get streamType(): ValueOf<StreamTypes> | undefined {\n // Allow overriding inferred `streamType`\n return (this.getAttribute(Attributes.STREAM_TYPE) as ValueOf<StreamTypes>) ?? getStreamType(this.nativeEl);\n }\n\n set streamType(val: ValueOf<StreamTypes> | undefined) {\n // don't cause an infinite loop and avoid change event dispatching\n if (val === this.streamType) return;\n\n if (val) {\n this.setAttribute(Attributes.STREAM_TYPE, val);\n } else {\n this.removeAttribute(Attributes.STREAM_TYPE);\n }\n }\n\n get targetLiveWindow() {\n // Allow overriding inferred `targetLiveWindow`\n if (this.hasAttribute(Attributes.TARGET_LIVE_WINDOW)) {\n return +(this.getAttribute(Attributes.TARGET_LIVE_WINDOW) as string) as number;\n }\n return getTargetLiveWindow(this.nativeEl);\n }\n\n set targetLiveWindow(val: number | undefined) {\n // don't cause an infinite loop and avoid change event dispatching\n if (val == this.targetLiveWindow) return;\n\n if (val == null) {\n this.removeAttribute(Attributes.TARGET_LIVE_WINDOW);\n } else {\n this.setAttribute(Attributes.TARGET_LIVE_WINDOW, `${+val}`);\n }\n }\n\n get liveEdgeStart() {\n if (this.hasAttribute(Attributes.LIVE_EDGE_OFFSET)) {\n const { liveEdgeOffset } = this;\n const seekableEnd = this.nativeEl.seekable.end(0) ?? 0;\n const seekableStart = this.nativeEl.seekable.start(0) ?? 0;\n return Math.max(seekableStart, seekableEnd - (liveEdgeOffset as number));\n }\n return getLiveEdgeStart(this.nativeEl);\n }\n\n get liveEdgeOffset() {\n if (!this.hasAttribute(Attributes.LIVE_EDGE_OFFSET)) return undefined;\n return +(this.getAttribute(Attributes.LIVE_EDGE_OFFSET) as string) as number;\n }\n\n set liveEdgeOffset(val: number | undefined) {\n // don't cause an infinite loop and avoid change event dispatching\n if (val == this.targetLiveWindow) return;\n\n if (val == null) {\n this.removeAttribute(Attributes.LIVE_EDGE_OFFSET);\n } else {\n this.setAttribute(Attributes.LIVE_EDGE_OFFSET, `${+val}`);\n }\n }\n\n get seekable() {\n return getSeekable(this.nativeEl);\n }\n\n async addCuePoints<T = any>(cuePoints: CuePoint<T>[]) {\n return addCuePoints(this.nativeEl, cuePoints);\n }\n\n get activeCuePoint() {\n return getActiveCuePoint(this.nativeEl);\n }\n\n get cuePoints() {\n return getCuePoints(this.nativeEl);\n }\n\n async addChapters(chapters: Chapter[]) {\n return addChapters(this.nativeEl, chapters);\n }\n\n get activeChapter() {\n return getActiveChapter(this.nativeEl);\n }\n\n get chapters() {\n return getChapters(this.nativeEl);\n }\n\n getStartDate() {\n return getStartDate(this.nativeEl, this._hls);\n }\n\n get currentPdt() {\n return getCurrentPdt(this.nativeEl, this._hls);\n }\n\n get preferPlayback(): ValueOf<PlaybackTypes> | undefined {\n const val = this.getAttribute(Attributes.PREFER_PLAYBACK);\n if (val === PlaybackTypes.MSE || val === PlaybackTypes.NATIVE) return val;\n return undefined;\n }\n\n set preferPlayback(val: ValueOf<PlaybackTypes> | undefined) {\n if (val === this.preferPlayback) return;\n\n if (val === PlaybackTypes.MSE || val === PlaybackTypes.NATIVE) {\n this.setAttribute(Attributes.PREFER_PLAYBACK, val);\n } else {\n this.removeAttribute(Attributes.PREFER_PLAYBACK);\n }\n }\n\n get metadata() {\n const inferredMetadataAttrs: { [key: string]: string } = this.getAttributeNames()\n .filter((attrName) => {\n return attrName.startsWith('metadata-') && !([Attributes.METADATA_URL] as string[]).includes(attrName);\n })\n .reduce(\n (currAttrs, attrName) => {\n const value = this.getAttribute(attrName);\n if (value != null) {\n currAttrs[attrName.replace(/^metadata-/, '').replace(/-/g, '_') as string] = value;\n }\n return currAttrs;\n },\n {} as { [key: string]: string }\n );\n\n return {\n ...inferredMetadataAttrs,\n ...this.#metadata,\n };\n }\n\n set metadata(val: Readonly<Metadata> | undefined) {\n this.#metadata = val ?? {};\n if (!!this.mux) {\n this.mux.emit('hb', this.#metadata);\n }\n }\n\n get _hlsConfig() {\n return this.#_hlsConfig;\n }\n\n set _hlsConfig(val: Readonly<Partial<HlsConfig>> | undefined) {\n this.#_hlsConfig = val;\n }\n\n async #requestLoad() {\n if (this.#loadRequested) return;\n await (this.#loadRequested = Promise.resolve());\n this.#loadRequested = null;\n this.load();\n }\n\n load() {\n this.#core = initialize(this as Partial<MuxMediaProps>, this.nativeEl, this.#core);\n }\n\n unload() {\n teardown(this.nativeEl, this.#core);\n this.#core = undefined;\n }\n\n attributeChangedCallback(attrName: string, oldValue: string | null, newValue: string | null) {\n // Only forward the attributes to the native media element that are not handled.\n const isNativeAttr = CustomVideoElement.observedAttributes.includes(attrName);\n if (isNativeAttr && !['src', 'autoplay', 'preload'].includes(attrName)) {\n super.attributeChangedCallback(attrName, oldValue, newValue);\n }\n\n switch (attrName) {\n case Attributes.PLAYER_SOFTWARE_NAME:\n this.playerSoftwareName = newValue ?? undefined;\n break;\n case Attributes.PLAYER_SOFTWARE_VERSION:\n this.playerSoftwareVersion = newValue ?? undefined;\n break;\n case 'src': {\n const hadSrc = !!oldValue;\n const hasSrc = !!newValue;\n if (!hadSrc && hasSrc) {\n this.#requestLoad();\n } else if (hadSrc && !hasSrc) {\n this.unload();\n } else if (hadSrc && hasSrc) {\n this.unload();\n this.#requestLoad();\n }\n break;\n }\n case 'autoplay':\n if (newValue === oldValue) {\n break;\n }\n /** In case newValue is an empty string or null, use this.autoplay which translates to booleans (WL) */\n this.#core?.setAutoplay(this.autoplay);\n break;\n case 'preload':\n if (newValue === oldValue) {\n break;\n }\n this.#core?.setPreload(newValue as HTMLMediaElement['preload']);\n break;\n case Attributes.PLAYBACK_ID:\n this.src = toMuxVideoURL(this) as string;\n break;\n case Attributes.DEBUG: {\n const debug = this.debug;\n if (!!this.mux) {\n /** @TODO Link to docs for a more detailed discussion (CJP) */\n console.info(\n 'Cannot toggle debug mode of mux data after initialization. Make sure you set all metadata to override before setting the src.'\n );\n }\n if (!!this._hls) {\n this._hls.config.debug = debug;\n }\n break;\n }\n case Attributes.METADATA_URL:\n if (newValue) {\n fetch(newValue)\n .then((resp) => resp.json())\n .then((json) => (this.metadata = json))\n .catch(() => console.error(`Unable to load or parse metadata JSON from metadata-url ${newValue}!`));\n }\n break;\n case Attributes.STREAM_TYPE:\n // If the newValue is unset\n if (newValue == null || newValue !== oldValue) {\n this.dispatchEvent(new CustomEvent('streamtypechange', { composed: true, bubbles: true }));\n }\n break;\n case Attributes.TARGET_LIVE_WINDOW:\n if (newValue == null || newValue !== oldValue) {\n this.dispatchEvent(\n new CustomEvent('targetlivewindowchange', { composed: true, bubbles: true, detail: this.targetLiveWindow })\n );\n }\n break;\n default:\n break;\n }\n }\n\n connectedCallback(): void {\n super.connectedCallback?.();\n if (this.nativeEl && this.src && !this.#core) {\n this.#requestLoad();\n }\n }\n\n disconnectedCallback(): void {\n this.unload();\n }\n}\n\n// castable-video should be mixed in last so that it can override load().\nclass MuxVideoElement extends CastableMediaMixin(MediaTracksMixin(MuxVideoBaseElement)) {\n // NOTE: CastableMediaMixin needs to be a subclass of whatever implements the load() method\n // (i.e. MuxVideoBaseElement), but we're overriding castCustomData to provide mux-specific\n // values by default, so it needs to be defined here (i.e. in the composed subclass of\n // CastableMediaMixin). (CJP)\n #castCustomData: Record<string, any> | undefined;\n\n get muxCastCustomData() {\n return {\n mux: {\n // Mux Video values\n playbackId: this.playbackId,\n minResolution: this.minResolution,\n maxResolution: this.maxResolution,\n renditionOrder: this.renditionOrder,\n customDomain: this.customDomain,\n /** @TODO Add this.tokens to MuxVideoElement (CJP) */\n tokens: {\n drm: this.drmToken,\n },\n // Mux Data values\n envKey: this.envKey,\n metadata: this.metadata,\n disableCookies: this.disableCookies,\n disableTracking: this.disableTracking,\n beaconCollectionDomain: this.beaconCollectionDomain,\n // Playback values\n startTime: this.startTime,\n // Other values\n preferCmcd: this.preferCmcd,\n },\n } as const;\n }\n\n get castCustomData() {\n return this.#castCustomData ?? this.muxCastCustomData;\n }\n\n set castCustomData(val: Record<string, any> | undefined) {\n this.#castCustomData = val;\n }\n}\n\ntype MuxVideoElementType = typeof MuxVideoElement;\ndeclare global {\n var MuxVideoElement: MuxVideoElementType; // eslint-disable-line\n}\n\nif (!globalThis.customElements.get('mux-video')) {\n globalThis.customElements.define('mux-video', MuxVideoElement);\n globalThis.MuxVideoElement = MuxVideoElement;\n}\n\nexport { PlaybackEngine, PlaybackEngine as Hls, ExtensionMimeTypeMap as MimeTypes, MediaError, VideoEvents };\n\nexport default MuxVideoElement;\n", "export const isMaybeBrowser = () => typeof window != 'undefined';\n// @ts-ignore\nexport const isMaybeServer = () => typeof global != 'undefined';\n\nconst getEnvPlayerVersion = () => {\n try {\n // @ts-ignore\n return PLAYER_VERSION as string;\n } catch {}\n return 'UNKNOWN';\n};\n\nconst player_version: string = getEnvPlayerVersion();\n\nexport const getPlayerVersion = () => player_version;\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 */\n\n// The onevent like props are weirdly set on the HTMLElement prototype with other\n// generic events making it impossible to pick these specific to HTMLMediaElement.\nexport const Events = [\n 'abort',\n 'canplay',\n 'canplaythrough',\n 'durationchange',\n 'emptied',\n 'encrypted',\n 'ended',\n 'error',\n 'loadeddata',\n 'loadedmetadata',\n 'loadstart',\n 'pause',\n 'play',\n 'playing',\n 'progress',\n 'ratechange',\n 'seeked',\n 'seeking',\n 'stalled',\n 'suspend',\n 'timeupdate',\n 'volumechange',\n 'waiting',\n 'waitingforkey',\n 'resize',\n 'enterpictureinpicture',\n 'leavepictureinpicture',\n 'webkitbeginfullscreen',\n 'webkitendfullscreen',\n 'webkitpresentationmodechanged',\n];\n\nfunction getAudioTemplateHTML(attrs) {\n return /*html*/`\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// If the `media` slot is used leave the styling up to the user.\n// It's a more consistent behavior pre and post custom element upgrade.\n\nfunction getVideoTemplateHTML(attrs) {\n return /*html*/`\n <style>\n :host {\n display: inline-block;\n line-height: 0;\n }\n\n video {\n max-width: 100%;\n max-height: 100%;\n min-width: 100%;\n min-height: 100%;\n object-fit: var(--media-object-fit, contain);\n object-position: var(--media-object-position, 50% 50%);\n }\n\n video::-webkit-media-text-track-container {\n transform: var(--media-webkit-text-track-transform);\n transition: var(--media-webkit-text-track-transition);\n }\n </style>\n <slot name=\"media\">\n <video${serializeAttributes(attrs)}></video>\n </slot>\n <slot></slot>\n `;\n}\n\n/**\n * @see https://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/\n */\nexport const CustomMediaMixin = (superclass, { tag, is }) => {\n\n // `is` makes it possible to extend a custom built-in. e.g. castable-video\n const nativeElTest = globalThis.document?.createElement?.(tag, { is });\n const nativeElProps = nativeElTest ? getNativeElProps(nativeElTest) : [];\n\n return class CustomMedia extends superclass {\n static getTemplateHTML = tag.endsWith('audio') ? getAudioTemplateHTML : getVideoTemplateHTML;\n static shadowRootOptions = { mode: 'open' };\n static Events = Events;\n static #isDefined;\n\n static get observedAttributes() {\n CustomMedia.#define();\n\n // Include any attributes from the custom built-in.\n const natAttrs = nativeElTest?.constructor?.observedAttributes ?? [];\n\n return [\n ...natAttrs,\n 'autopictureinpicture',\n 'disablepictureinpicture',\n 'disableremoteplayback',\n 'autoplay',\n 'controls',\n 'controlslist',\n 'crossorigin',\n 'loop',\n 'muted',\n 'playsinline',\n 'poster',\n 'preload',\n 'src',\n ];\n }\n\n static #define() {\n if (this.#isDefined) return;\n this.#isDefined = true;\n\n const propsToAttrs = new Set(this.observedAttributes);\n // defaultMuted maps to the muted attribute, handled manually below.\n propsToAttrs.delete('muted');\n\n // Passthrough native el functions from the custom el to the native el\n for (let prop of nativeElProps) {\n if (prop in this.prototype) continue;\n\n const type = typeof nativeElTest[prop];\n if (type == 'function') {\n // Function\n this.prototype[prop] = function (...args) {\n this.#init();\n\n const fn = () => {\n if (this.call) return this.call(prop, ...args);\n return this.nativeEl[prop].apply(this.nativeEl, args);\n };\n\n return fn();\n };\n } else {\n // Some properties like src, preload, defaultMuted are handled manually.\n\n // Getter\n let config = {\n get() {\n this.#init();\n\n let attr = prop.toLowerCase();\n if (propsToAttrs.has(attr)) {\n const val = this.getAttribute(attr);\n return val === null ? false : val === '' ? true : val;\n }\n\n return this.get?.(prop) ?? this.nativeEl?.[prop];\n },\n };\n\n if (prop !== prop.toUpperCase()) {\n // Setter (not a CONSTANT)\n config.set = function (val) {\n this.#init();\n\n let attr = prop.toLowerCase();\n if (propsToAttrs.has(attr)) {\n if (val === true || val === false || val == null) {\n this.toggleAttribute(attr, Boolean(val));\n } else {\n this.setAttribute(attr, val);\n }\n return;\n }\n\n if (this.set) {\n this.set(prop, val);\n return;\n }\n\n this.nativeEl[prop] = val;\n };\n }\n\n Object.defineProperty(this.prototype, prop, config);\n }\n }\n }\n\n #isInit;\n #nativeEl;\n #childMap = new Map();\n\n constructor() {\n super();\n\n // If the custom element is defined before the custom element's HTML is parsed\n // no attributes will be available in the constructor (construction process).\n // Wait until initializing in the attributeChangedCallback or\n // connectedCallback or accessing any properties.\n }\n\n get nativeEl() {\n this.#init();\n return this.#nativeEl\n ?? this.shadowRoot.querySelector(tag)\n ?? this.querySelector(':scope > [slot=media]')\n ?? this.querySelector(tag);\n }\n\n set nativeEl(val) {\n this.#nativeEl = val;\n }\n\n get defaultMuted() {\n return this.hasAttribute('muted');\n }\n\n set defaultMuted(val) {\n this.toggleAttribute('muted', Boolean(val));\n }\n\n get src() {\n return this.getAttribute('src');\n }\n\n set src(val) {\n this.setAttribute('src', `${val}`);\n }\n\n get preload() {\n return this.getAttribute('preload') ?? this.nativeEl?.preload;\n }\n\n set preload(val) {\n this.setAttribute('preload', `${val}`);\n }\n\n #init() {\n if (this.#isInit) return;\n this.#isInit = true;\n this.init();\n }\n\n init() {\n if (!this.shadowRoot) {\n this.attachShadow({ mode: 'open' });\n\n const attrs = namedNodeMapToObject(this.attributes);\n if (is) attrs.is = is;\n if (tag) attrs.part = tag;\n this.shadowRoot.innerHTML = this.constructor.getTemplateHTML(attrs);\n }\n\n // Neither Chrome or Firefox support setting the muted attribute\n // after using document.createElement.\n // Get around this by setting the muted property manually.\n this.nativeEl.muted = this.hasAttribute('muted');\n\n for (let prop of nativeElProps) {\n this.#upgradeProperty(prop);\n }\n\n this.shadowRoot.addEventListener('slotchange', this);\n this.#syncMediaChildren();\n\n for (let type of this.constructor.Events) {\n this.shadowRoot.addEventListener?.(type, this, true);\n }\n }\n\n handleEvent(event) {\n\n if (event.type === 'slotchange') {\n this.#syncMediaChildren();\n return;\n }\n\n if (event.target === this.nativeEl) {\n // The video events are dispatched on the CustomMediaElement instance.\n // This makes it possible to add event listeners before the element is upgraded.\n this.dispatchEvent(new CustomEvent(event.type, { detail: event.detail }));\n }\n }\n\n /**\n * Keep some native child elements like track and source in sync.\n * An unnamed <slot> will be filled with all of the custom element's\n * top-level child nodes that do not have the slot attribute.\n */\n #syncMediaChildren() {\n const removeNativeChildren = new Map(this.#childMap);\n\n this.shadowRoot.querySelector('slot:not([name])')\n .assignedElements({ flatten: true })\n .filter((el) => ['track', 'source'].includes(el.localName))\n .forEach((el) => {\n // If the source or track is still in the assigned elements keep it.\n removeNativeChildren.delete(el);\n // Re-use clones if possible.\n let clone = this.#childMap.get(el);\n if (!clone) {\n clone = el.cloneNode();\n this.#childMap.set(el, clone);\n }\n this.nativeEl.append?.(clone);\n\n // https://html.spec.whatwg.org/multipage/media.html#sourcing-out-of-band-text-tracks\n // If there are any text tracks in the media element's list of text\n // tracks whose text track kind is chapters or metadata that\n // correspond to track elements with a default attribute set whose\n // text track mode is set to disabled, then set the text track\n // mode of all such tracks to hidden.\n if (\n clone.localName === 'track' &&\n clone.default &&\n (clone.kind === 'chapters' || clone.kind === 'metadata') &&\n clone.track.mode === 'disabled'\n ) {\n clone.track.mode = 'hidden';\n }\n });\n\n removeNativeChildren.forEach((el) => el.remove());\n }\n\n #upgradeProperty(prop) {\n // Sets properties that are set before the custom element is upgraded.\n // https://web.dev/custom-elements-best-practices/#make-properties-lazy\n if (Object.prototype.hasOwnProperty.call(this, prop)) {\n const value = this[prop];\n // Delete the set property from this instance.\n delete this[prop];\n // Set the value again via the (prototype) setter on this class.\n this[prop] = value;\n }\n }\n\n attributeChangedCallback(attrName, oldValue, newValue) {\n // Initialize right after construction when the attributes become available.\n this.#init();\n this.#forwardAttribute(attrName, oldValue, newValue);\n }\n\n #forwardAttribute(attrName, oldValue, newValue) {\n // Ignore a few that don't need to be passed.\n if (['id', 'class'].includes(attrName)) {\n return;\n }\n\n // Ignore setting custom attributes from the child class.\n // They should not have any effect on the native element, it adds noise in the DOM.\n if (!CustomMedia.observedAttributes.includes(attrName)\n && this.constructor.observedAttributes.includes(attrName)\n ) {\n return;\n }\n\n if (newValue === null) {\n this.nativeEl.removeAttribute?.(attrName);\n } else {\n if (this.nativeEl.getAttribute?.(attrName) != newValue) {\n this.nativeEl.setAttribute?.(attrName, newValue);\n }\n }\n }\n\n connectedCallback() {\n this.#init();\n }\n };\n};\n\nfunction getNativeElProps(nativeElTest) {\n // Map all native element properties to the custom element\n // so that they're applied to the native element.\n // Skipping HTMLElement because of things like \"attachShadow\"\n // causing issues. Most of those props still need to apply to\n // the custom element.\n let nativeElProps = [];\n\n // Walk the prototype chain up to HTMLElement.\n // This will grab all super class props in between.\n // i.e. VideoElement and MediaElement\n for (\n let proto = Object.getPrototypeOf(nativeElTest);\n proto && proto !== HTMLElement.prototype;\n proto = Object.getPrototypeOf(proto)\n ) {\n nativeElProps.push(...Object.getOwnPropertyNames(proto));\n }\n\n return nativeElProps;\n}\n\nfunction serializeAttributes(attrs) {\n let html = '';\n for (const key in attrs) {\n const value = attrs[key];\n if (value === '') html += ` ${key}`;\n else html += ` ${key}=\"${value}\"`;\n }\n return html;\n}\n\nfunction namedNodeMapToObject(namedNodeMap) {\n let obj = {};\n for (let attr of namedNodeMap) {\n obj[attr.name] = attr.value;\n }\n return obj;\n}\n\nexport const CustomVideoElement = CustomMediaMixin(globalThis.HTMLElement ?? class {}, { tag: 'video' });\n\nexport const CustomAudioElement = CustomMediaMixin(globalThis.HTMLElement ?? class {}, { tag: 'audio' });\n", "/* global WeakRef */\n\nexport const privateProps = new WeakMap();\n\nexport class InvalidStateError extends Error {}\nexport class NotSupportedError extends Error {}\nexport class NotFoundError extends Error {}\n\n// Fallback to a plain Set if WeakRef is not available.\nexport const IterableWeakSet = globalThis.WeakRef ?\n class extends Set {\n add(el) {\n super.add(new WeakRef(el));\n }\n forEach(fn) {\n super.forEach((ref) => {\n const value = ref.deref();\n if (value) fn(value);\n });\n }\n } : Set;\n\nexport function onCastApiAvailable(callback) {\n if (!globalThis.chrome?.cast?.isAvailable) {\n globalThis.__onGCastApiAvailable = () => {\n // The globalThis.__onGCastApiAvailable callback alone is not reliable for\n // the added cast.framework. It's loaded in a separate JS file.\n // https://www.gstatic.com/eureka/clank/101/cast_sender.js\n // https://www.gstatic.com/cast/sdk/libs/sender/1.0/cast_framework.js\n customElements\n .whenDefined('google-cast-button')\n .then(callback);\n };\n } else if (!globalThis.cast?.framework) {\n customElements\n .whenDefined('google-cast-button')\n .then(callback);\n } else {\n callback();\n }\n}\n\nexport function requiresCastFramework() {\n // todo: exclude for Android>=56 which supports the Remote Playback API natively.\n return globalThis.chrome;\n}\n\nexport function loadCastFramework() {\n const sdkUrl = 'https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1';\n if (globalThis.chrome?.cast || document.querySelector(`script[src=\"${sdkUrl}\"]`)) return;\n\n const script = document.createElement('script');\n script.src = sdkUrl;\n document.head.append(script);\n}\n\nexport function castContext() {\n return globalThis.cast?.framework?.CastContext.getInstance();\n}\n\nexport function currentSession() {\n return castContext()?.getCurrentSession();\n}\n\nexport function currentMedia() {\n return currentSession()?.getSessionObj().media[0];\n}\n\nexport function editTracksInfo(request) {\n return new Promise((resolve, reject) => {\n currentMedia().editTracksInfo(request, resolve, reject);\n });\n}\n\nexport function getMediaStatus(request) {\n return new Promise((resolve, reject) => {\n currentMedia().getStatus(request, resolve, reject);\n });\n}\n\nexport function setCastOptions(options) {\n return castContext().setOptions({\n ...getDefaultCastOptions(),\n ...options,\n });\n}\n\nexport function getDefaultCastOptions() {\n return {\n // Set the receiver application ID to your own (created in the\n // Google Cast Developer Console), or optionally\n // use the chrome.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID\n receiverApplicationId: 'CC1AD845',\n\n // Auto join policy can be one of the following three:\n // ORIGIN_SCOPED - Auto connect from same appId and page origin\n // TAB_AND_ORIGIN_SCOPED - Auto connect from same appId, page origin, and tab\n // PAGE_SCOPED - No auto connect\n autoJoinPolicy: 'origin_scoped',\n\n // The following flag enables Cast Connect(requires Chrome 87 or higher)\n // https://developers.googleblog.com/2020/08/introducing-cast-connect-android-tv.html\n androidReceiverCompatible: false,\n\n language: 'en-US',\n resumeSavedSession: true,\n };\n}\n", "/* global chrome, cast */\nimport {\n privateProps,\n IterableWeakSet,\n InvalidStateError,\n NotSupportedError,\n onCastApiAvailable,\n castContext,\n currentSession,\n currentMedia,\n editTracksInfo,\n getMediaStatus,\n setCastOptions\n} from './castable-utils.js';\n\nconst remoteInstances = new IterableWeakSet();\nconst castElementRef = new WeakSet();\n\nlet cf;\n\nonCastApiAvailable(() => {\n if (!globalThis.chrome?.cast?.isAvailable) {\n // Useful to see in verbose logs if this shows undefined or false.\n console.debug('chrome.cast.isAvailable', globalThis.chrome?.cast?.isAvailable);\n return;\n }\n\n if (!cf) {\n cf = cast.framework;\n\n castContext().addEventListener(cf.CastContextEventType.CAST_STATE_CHANGED, (e) => {\n remoteInstances.forEach((r) => privateProps.get(r).onCastStateChanged?.(e));\n });\n\n castContext().addEventListener(cf.CastContextEventType.SESSION_STATE_CHANGED, (e) => {\n remoteInstances.forEach((r) => privateProps.get(r).onSessionStateChanged?.(e));\n });\n\n remoteInstances.forEach((r) => privateProps.get(r).init?.());\n }\n});\n\n\nlet remotePlaybackCallbackIdCount = 0;\n\n/**\n * Remote Playback shim for the Google cast SDK.\n * https://w3c.github.io/remote-playback/\n */\nexport class RemotePlayback extends EventTarget {\n #media;\n #isInit;\n #remotePlayer;\n #remoteListeners;\n #state = 'disconnected';\n #available = false;\n #callbacks = new Set();\n #callbackIds = new WeakMap();\n\n constructor(media) {\n super();\n\n this.#media = media;\n\n remoteInstances.add(this);\n privateProps.set(this, {\n init: () => this.#init(),\n onCastStateChanged: () => this.#onCastStateChanged(),\n onSessionStateChanged: () => this.#onSessionStateChanged(),\n getCastPlayer: () => this.#castPlayer,\n });\n\n this.#init();\n }\n\n get #castPlayer() {\n if (castElementRef.has(this.#media)) return this.#remotePlayer;\n return undefined;\n }\n\n /**\n * https://developer.mozilla.org/en-US/docs/Web/API/RemotePlayback/state\n * @return {'disconnected'|'connecting'|'connected'}\n */\n get state() {\n return this.#state;\n }\n\n async watchAvailability(callback) {\n if (this.#media.disableRemotePlayback) {\n throw new InvalidStateError('disableRemotePlayback attribute is present.');\n }\n\n this.#callbackIds.set(callback, ++remotePlaybackCallbackIdCount);\n this.#callbacks.add(callback);\n\n return remotePlaybackCallbackIdCount;\n }\n\n async cancelWatchAvailability(callback) {\n if (this.#media.disableRemotePlayback) {\n throw new InvalidStateError('disableRemotePlayback attribute is present.');\n }\n\n if (callback) {\n this.#callbacks.delete(callback);\n } else {\n this.#callbacks.clear();\n }\n }\n\n async prompt() {\n if (this.#media.disableRemotePlayback) {\n throw new InvalidStateError('disableRemotePlayback attribute is present.');\n }\n\n if (!globalThis.chrome?.cast?.isAvailable) {\n throw new NotSupportedError('The RemotePlayback API is disabled on this platform.');\n }\n\n const willDisconnect = castElementRef.has(this.#media);\n castElementRef.add(this.#media);\n\n setCastOptions(this.#media.castOptions);\n\n Object.entries(this.#remoteListeners).forEach(([event, listener]) => {\n this.#remotePlayer.controller.addEventListener(event, listener);\n });\n\n try {\n // Open browser cast menu.\n await castContext().requestSession();\n } catch (err) {\n // Don't throw an error if disconnecting or cancelling.\n if (err === 'cancel') {\n // If there will be no disconnect, reset some state here.\n if (!willDisconnect) {\n castElementRef.delete(this.#media);\n }\n return;\n }\n\n throw new Error(err);\n }\n\n privateProps.get(this.#media)?.loadOnPrompt?.();\n }\n\n #disconnect() {\n if (!castElementRef.has(this.#media)) return;\n\n Object.entries(this.#remoteListeners).forEach(([event, listener]) => {\n this.#remotePlayer.controller.removeEventListener(event, listener);\n });\n\n castElementRef.delete(this.#media);\n\n // isMuted is not in savedPlayerState. should we sync this back to local?\n this.#media.muted = this.#remotePlayer.isMuted;\n this.#media.currentTime = this.#remotePlayer.savedPlayerState.currentTime;\n if (this.#remotePlayer.savedPlayerState.isPaused === false) {\n this.#media.play();\n }\n }\n\n #onCastStateChanged() {\n // Cast state: NO_DEVICES_AVAILABLE, NOT_CONNECTED, CONNECTING, CONNECTED\n // https://developers.google.com/cast/docs/reference/web_sender/cast.framework#.CastState\n const castState = castContext().getCastState();\n\n if (castElementRef.has(this.#media)) {\n if (castState === 'CONNECTING') {\n this.#state = 'connecting';\n this.dispatchEvent(new Event('connecting'));\n }\n }\n\n if (!this.#available && castState?.includes('CONNECT')) {\n this.#available = true;\n for (let callback of this.#callbacks) callback(true);\n }\n else if (this.#available && (!castState || castState === 'NO_DEVICES_AVAILABLE')) {\n this.#available = false;\n for (let callback of this.#callbacks) callback(false);\n }\n }\n\n async #onSessionStateChanged() {\n // Session states: NO_SESSION, SESSION_STARTING, SESSION_STARTED, SESSION_START_FAILED,\n // SESSION_ENDING, SESSION_ENDED, SESSION_RESUMED\n // https://developers.google.com/cast/docs/reference/web_sender/cast.framework#.SessionState\n\n const { SESSION_RESUMED } = cf.SessionState;\n if (castContext().getSessionState() === SESSION_RESUMED) {\n /**\n * Figure out if this was the video that started the resumed session.\n * @TODO make this more specific than just checking against the video src!! (WL)\n *\n * If this video element can get the same unique id on each browser refresh\n * it would be possible to pass this unique id w/ `LoadRequest.customData`\n * and verify against currentMedia().customData below.\n */\n if (this.#media.castSrc === currentMedia()?.media.contentId) {\n castElementRef.add(this.#media);\n\n Object.entries(this.#remoteListeners).forEach(([event, listener]) => {\n this.#remotePlayer.controller.addEventListener(event, listener);\n });\n\n /**\n * There is cast framework resume session bug when you refresh the page a few\n * times the this.#remotePlayer.currentTime will not be in sync with the receiver :(\n * The below status request syncs it back up.\n */\n try {\n await getMediaStatus(new chrome.cast.media.GetStatusRequest());\n } catch (error) {\n console.error(error);\n }\n\n // Dispatch the play, playing events manually to sync remote playing state.\n this.#remoteListeners[cf.RemotePlayerEventType.IS_PAUSED_CHANGED]();\n this.#remoteListeners[cf.RemotePlayerEventType.PLAYER_STATE_CHANGED]();\n }\n }\n }\n\n #init() {\n if (!cf || this.#isInit) return;\n this.#isInit = true;\n\n setCastOptions(this.#media.castOptions);\n\n /**\n * @TODO add listeners for addtrack, removetrack (WL)\n * This only has an impact on <track> with a `src` because these have to be\n * loaded manually in the load() method. This will require a new load() call\n * for each added/removed track w/ src.\n */\n this.#media.textTracks.addEventListener('change', () => this.#updateRemoteTextTrack());\n\n this.#onCastStateChanged();\n\n this.#remotePlayer = new cf.RemotePlayer();\n new cf.RemotePlayerController(this.#remotePlayer);\n\n this.#remoteListeners = {\n [cf.RemotePlayerEventType.IS_CONNECTED_CHANGED]: ({ value }) => {\n if (value === true) {\n this.#state = 'connected';\n this.dispatchEvent(new Event('connect'));\n } else {\n this.#disconnect();\n this.#state = 'disconnected';\n this.dispatchEvent(new Event('disconnect'));\n }\n },\n [cf.RemotePlayerEventType.DURATION_CHANGED]: () => {\n this.#media.dispatchEvent(new Event('durationchange'));\n },\n [cf.RemotePlayerEventType.VOLUME_LEVEL_CHANGED]: () => {\n this.#media.dispatchEvent(new Event('volumechange'));\n },\n [cf.RemotePlayerEventType.IS_MUTED_CHANGED]: () => {\n this.#media.dispatchEvent(new Event('volumechange'));\n },\n [cf.RemotePlayerEventType.CURRENT_TIME_CHANGED]: () => {\n if (!this.#castPlayer?.isMediaLoaded) return;\n this.#media.dispatchEvent(new Event('timeupdate'));\n },\n [cf.RemotePlayerEventType.VIDEO_INFO_CHANGED]: () => {\n this.#media.dispatchEvent(new Event('resize'));\n },\n [cf.RemotePlayerEventType.IS_PAUSED_CHANGED]: () => {\n this.#media.dispatchEvent(new Event(this.paused ? 'pause' : 'play'));\n },\n [cf.RemotePlayerEventType.PLAYER_STATE_CHANGED]: () => {\n // Player states: IDLE, PLAYING, PAUSED, BUFFERING\n // https://developers.google.com/cast/docs/reference/web_sender/chrome.cast.media#.PlayerState\n\n // pause event is handled above.\n if (this.#castPlayer?.playerState === chrome.cast.media.PlayerState.PAUSED) {\n return;\n }\n\n this.#media.dispatchEvent(\n new Event(\n {\n [chrome.cast.media.PlayerState.PLAYING]: 'playing',\n [chrome.cast.media.PlayerState.BUFFERING]: 'waiting',\n [chrome.cast.media.PlayerState.IDLE]: 'emptied',\n }[this.#castPlayer?.playerState]\n )\n );\n },\n [cf.RemotePlayerEventType.IS_MEDIA_LOADED_CHANGED]: async () => {\n if (!this.#castPlayer?.isMediaLoaded) return;\n\n // mediaInfo is not immediately available due to a bug? wait one tick\n await Promise.resolve();\n this.#onRemoteMediaLoaded();\n },\n };\n }\n\n #onRemoteMediaLoaded() {\n this.#updateRemoteTextTrack();\n }\n\n async #updateRemoteTextTrack() {\n if (!this.#castPlayer) return;\n\n // Get the tracks w/ trackId's that have been loaded; manually or via a playlist like a M3U8 or MPD.\n const remoteTracks = this.#remotePlayer.mediaInfo?.tracks ?? [];\n const remoteSubtitles = remoteTracks.filter(\n ({ type }) => type === chrome.cast.media.TrackType.TEXT\n );\n\n const localSubtitles = [...this.#media.textTracks].filter(\n ({ kind }) => kind === 'subtitles' || kind === 'captions'\n );\n\n // Create a new array from the local subs w/ the trackId's from the remote subs.\n const subtitles = remoteSubtitles\n .map(({ language, name, trackId }) => {\n // Find the corresponding local text track and assign the trackId.\n const { mode } =\n localSubtitles.find(\n (local) => local.language === language && local.label === name\n ) ?? {};\n if (mode) return { mode, trackId };\n return false;\n })\n .filter(Boolean);\n\n const hiddenSubtitles = subtitles.filter(\n ({ mode }) => mode !== 'showing'\n );\n const hiddenTrackIds = hiddenSubtitles.map(({ trackId }) => trackId);\n const showingSubtitle = subtitles.find(({ mode }) => mode === 'showing');\n\n // Note this could also include audio or video tracks, diff against local state.\n const activeTrackIds =\n currentSession()?.getSessionObj().media[0]\n ?.activeTrackIds ?? [];\n let requestTrackIds = activeTrackIds;\n\n if (activeTrackIds.length) {\n // Filter out all local hidden subtitle trackId's.\n requestTrackIds = requestTrackIds.filter(\n (id) => !hiddenTrackIds.includes(id)\n );\n }\n\n if (showingSubtitle?.trackId) {\n requestTrackIds = [...requestTrackIds, showingSubtitle.trackId];\n }\n\n // Remove duplicate ids.\n requestTrackIds = [...new Set(requestTrackIds)];\n\n const arrayEquals = (a, b) =>\n a.length === b.length && a.every((a) => b.includes(a));\n if (!arrayEquals(activeTrackIds, requestTrackIds)) {\n try {\n const request = new chrome.cast.media.EditTracksInfoRequest(\n requestTrackIds\n );\n await editTracksInfo(request);\n } catch (error) {\n console.error(error);\n }\n }\n }\n}\n", "/* global chrome */\nimport { RemotePlayback } from './castable-remote-playback.js';\nimport {\n privateProps,\n requiresCastFramework,\n loadCastFramework,\n currentSession,\n getDefaultCastOptions\n} from './castable-utils.js';\n\n/**\n * CastableMediaMixin\n *\n * This mixin function provides a way to compose multiple classes.\n * @see https://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/\n *\n * @param {HTMLMediaElement} superclass - HTMLMediaElement or an extended class of it.\n * @return {CastableMedia}\n */\nexport const CastableMediaMixin = (superclass) =>\n class CastableMedia extends superclass {\n\n static observedAttributes = [\n ...(superclass.observedAttributes ?? []),\n 'cast-src',\n 'cast-content-type',\n 'cast-stream-type',\n 'cast-receiver',\n ];\n\n #localState = { paused: false };\n #castOptions = getDefaultCastOptions();\n #castCustomData;\n #remote;\n\n get remote() {\n if (this.#remote) return this.#remote;\n\n if (requiresCastFramework()) {\n loadCastFramework();\n\n privateProps.set(this, {\n loadOnPrompt: () => this.#loadOnPrompt()\n });\n\n return (this.#remote = new RemotePlayback(this));\n }\n\n return super.remote;\n }\n\n get #castPlayer() {\n return privateProps.get(this.remote)?.getCastPlayer?.();\n }\n\n attributeChangedCallback(attrName, oldValue, newValue) {\n super.attributeChangedCallback(attrName, oldValue, newValue);\n\n if (attrName === 'cast-receiver' && newValue) {\n this.#castOptions.receiverApplicationId = newValue;\n return;\n }\n\n if (!this.#castPlayer) return;\n\n switch (attrName) {\n case 'cast-stream-type':\n case 'cast-src':\n this.load();\n break;\n }\n }\n\n async #loadOnPrompt() {\n // Pause locally when the session is created.\n this.#localState.paused = super.paused;\n super.pause();\n\n // Sync over the muted state but not volume, 100% is different on TV's :P\n this.muted = super.muted;\n\n try {\n await this.load();\n } catch (err) {\n console.error(err);\n }\n }\n\n async load() {\n if (!this.#castPlayer) return super.load();\n\n const mediaInfo = new chrome.cast.media.MediaInfo(this.castSrc, this.castContentType);\n mediaInfo.customData = this.castCustomData;\n\n // Manually add text tracks with a `src` attribute.\n // M3U8's load text tracks in the receiver, handle these in the media loaded event.\n const subtitles = [...this.querySelectorAll('track')].filter(\n ({ kind, src }) => src && (kind === 'subtitles' || kind === 'captions')\n );\n\n const activeTrackIds = [];\n let textTrackIdCount = 0;\n\n if (subtitles.length) {\n mediaInfo.tracks = subtitles.map((trackEl) => {\n const trackId = ++textTrackIdCount;\n // only activate 1 subtitle text track.\n if (activeTrackIds.length === 0 && trackEl.track.mode === 'showing') {\n activeTrackIds.push(trackId);\n }\n\n const track = new chrome.cast.media.Track(\n trackId,\n chrome.cast.media.TrackType.TEXT\n );\n track.trackContentId = trackEl.src;\n track.trackContentType = 'text/vtt';\n track.subtype =\n trackEl.kind === 'captions'\n ? chrome.cast.media.TextTrackType.CAPTIONS\n : chrome.cast.media.TextTrackType.SUBTITLES;\n track.name = trackEl.label;\n track.language = trackEl.srclang;\n return track;\n });\n }\n\n if (this.castStreamType === 'live') {\n mediaInfo.streamType = chrome.cast.media.StreamType.LIVE;\n } else {\n mediaInfo.streamType = chrome.cast.media.StreamType.BUFFERED;\n }\n\n mediaInfo.metadata = new chrome.cast.media.GenericMediaMetadata();\n mediaInfo.metadata.title = this.title;\n mediaInfo.metadata.images = [{ url: this.poster }];\n\n const request = new chrome.cast.media.LoadRequest(mediaInfo);\n request.currentTime = super.currentTime ?? 0;\n request.autoplay = !this.#localState.paused;\n request.activeTrackIds = activeTrackIds;\n\n await currentSession()?.loadMedia(request);\n\n this.dispatchEvent(new Event('volumechange'));\n }\n\n play() {\n if (this.#castPlayer) {\n if (this.#castPlayer.isPaused) {\n this.#castPlayer.controller?.playOrPause();\n }\n return;\n }\n return super.play();\n }\n\n pause() {\n if (this.#castPlayer) {\n if (!this.#castPlayer.isPaused) {\n this.#castPlayer.controller?.playOrPause();\n }\n return;\n }\n super.pause();\n }\n\n /**\n * @see https://developers.google.com/cast/docs/reference/web_sender/cast.framework.CastOptions\n * @readonly\n *\n * @typedef {Object} CastOptions\n * @property {string} [receiverApplicationId='CC1AD845'] - The app id of the cast receiver.\n * @property {string} [autoJoinPolicy='origin_scoped'] - The auto join policy.\n * @property {string} [language='en-US'] - The language to use for the cast receiver.\n * @property {boolean} [androidReceiverCompatible=false] - Whether to use the Cast Connect.\n * @property {boolean} [resumeSavedSession=true] - Whether to resume the last session.\n *\n * @return {CastOptions}\n */\n get castOptions() {\n return this.#castOptions;\n }\n\n get castReceiver() {\n return this.getAttribute('cast-receiver') ?? undefined;\n }\n\n set castReceiver(val) {\n if (this.castReceiver == val) return;\n this.setAttribute('cast-receiver', `${val}`);\n }\n\n // Allow the cast source url to be different than <video src>, could be a blob.\n get castSrc() {\n // Try the first <source src> for usage with even more native markup.\n return (\n this.getAttribute('cast-src') ??\n this.querySelector('source')?.src ??\n this.currentSrc\n );\n }\n\n set castSrc(val) {\n if (this.castSrc == val) return;\n this.setAttribute('cast-src', `${val}`);\n }\n\n get castContentType() {\n return this.getAttribute('cast-content-type') ?? undefined;\n }\n\n set castContentType(val) {\n this.setAttribute('cast-content-type', `${val}`);\n }\n\n get castStreamType() {\n // NOTE: Per https://github.com/video-dev/media-ui-extensions/issues/3 `streamType` may yield `\"unknown\"`\n return this.getAttribute('cast-stream-type') ?? this.streamType ?? undefined;\n }\n\n set castStreamType(val) {\n this.setAttribute('cast-stream-type', `${val}`);\n }\n\n get castCustomData() {\n return this.#castCustomData;\n }\n\n set castCustomData(val) {\n const valType = typeof val;\n if (!['object', 'undefined'].includes(valType)) {\n console.error(`castCustomData must be nullish or an object but value was of type ${valType}`);\n return;\n }\n\n this.#castCustomData = val;\n }\n\n get readyState() {\n if (this.#castPlayer) {\n switch (this.#castPlayer.playerState) {\n case chrome.cast.media.PlayerState.IDLE:\n return 0;\n case chrome.cast.media.PlayerState.BUFFERING:\n return 2;\n default:\n return 3;\n }\n }\n return super.readyState;\n }\n\n get paused() {\n if (this.#castPlayer) return this.#castPlayer.isPaused;\n return super.paused;\n }\n\n get muted() {\n if (this.#castPlayer) return this.#castPlayer?.isMuted;\n return super.muted;\n }\n\n set muted(val) {\n if (this.#castPlayer) {\n if (\n (val && !this.#castPlayer.isMuted) ||\n (!val && this.#castPlayer.isMuted)\n ) {\n this.#castPlayer.controller?.muteOrUnmute();\n }\n return;\n }\n super.muted = val;\n }\n\n get volume() {\n if (this.#castPlayer) return this.#castPlayer?.volumeLevel ?? 1;\n return super.volume;\n }\n\n set volume(val) {\n if (this.#castPlayer) {\n this.#castPlayer.volumeLevel = +val;\n this.#castPlayer.controller?.setVolumeLevel();\n return;\n }\n super.volume = val;\n }\n\n get duration() {\n // castPlayer duration returns `0` when no media is loaded.\n if (this.#castPlayer && this.#castPlayer?.isMediaLoaded) {\n return this.#castPlayer?.duration ?? NaN;\n }\n return super.duration;\n }\n\n get currentTime() {\n if (this.#castPlayer && this.#castPlayer?.isMediaLoaded) {\n return this.#castPlayer?.currentTime ?? 0;\n }\n return super.currentTime;\n }\n\n set currentTime(val) {\n if (this.#castPlayer) {\n this.#castPlayer.currentTime = val;\n this.#castPlayer.controller?.seek();\n return;\n }\n super.currentTime = val;\n }\n };\n\nexport const CastableVideoMixin = CastableMediaMixin;\n", "class TrackEvent extends Event {\n track;\n constructor(type, init) {\n super(type);\n this.track = init.track;\n }\n}\nexport {\n TrackEvent\n};\n", "const privateProps = /* @__PURE__ */ new WeakMap();\nfunction getPrivate(instance) {\n return privateProps.get(instance) ?? setPrivate(instance, {});\n}\nfunction setPrivate(instance, props) {\n let saved = privateProps.get(instance);\n if (!saved) privateProps.set(instance, saved = {});\n return Object.assign(saved, props);\n}\nexport {\n getPrivate,\n setPrivate\n};\n", "import { TrackEvent } from \"./track-event.js\";\nimport { getPrivate } from \"./utils.js\";\nfunction addVideoTrack(media, track) {\n const trackList = media.videoTracks;\n getPrivate(track).media = media;\n if (!getPrivate(track).renditionSet) {\n getPrivate(track).renditionSet = /* @__PURE__ */ new Set();\n }\n const trackSet = getPrivate(trackList).trackSet;\n trackSet.add(track);\n const index = trackSet.size - 1;\n if (!(index in VideoTrackList.prototype)) {\n Object.defineProperty(VideoTrackList.prototype, index, {\n get() {\n return [...getPrivate(this).trackSet][index];\n }\n });\n }\n queueMicrotask(() => {\n trackList.dispatchEvent(new TrackEvent(\"addtrack\", { track }));\n });\n}\nfunction removeVideoTrack(track) {\n const trackList = getPrivate(track).media?.videoTracks;\n if (!trackList) return;\n const trackSet = getPrivate(trackList).trackSet;\n trackSet.delete(track);\n queueMicrotask(() => {\n trackList.dispatchEvent(new TrackEvent(\"removetrack\", { track }));\n });\n}\nfunction selectedChanged(selected) {\n const trackList = getPrivate(selected).media.videoTracks ?? [];\n let hasUnselected = false;\n for (const track of trackList) {\n if (track === selected) continue;\n track.selected = false;\n hasUnselected = true;\n }\n if (hasUnselected) {\n if (getPrivate(trackList).changeRequested) return;\n getPrivate(trackList).changeRequested = true;\n queueMicrotask(() => {\n delete getPrivate(trackList).changeRequested;\n trackList.dispatchEvent(new Event(\"change\"));\n });\n }\n}\nclass VideoTrackList extends EventTarget {\n #addTrackCallback;\n #removeTrackCallback;\n #changeCallback;\n constructor() {\n super();\n getPrivate(this).trackSet = /* @__PURE__ */ new Set();\n }\n get #tracks() {\n return getPrivate(this).trackSet;\n }\n [Symbol.iterator]() {\n return this.#tracks.values();\n }\n get length() {\n return this.#tracks.size;\n }\n getTrackById(id) {\n return [...this.#tracks].find((track) => track.id === id) ?? null;\n }\n get selectedIndex() {\n return [...this.#tracks].findIndex((track) => track.selected);\n }\n get onaddtrack() {\n return this.#addTrackCallback;\n }\n set onaddtrack(callback) {\n if (this.#addTrackCallback) {\n this.removeEventListener(\"addtrack\", this.#addTrackCallback);\n this.#addTrackCallback = void 0;\n }\n if (typeof callback == \"function\") {\n this.#addTrackCallback = callback;\n this.addEventListener(\"addtrack\", callback);\n }\n }\n get onremovetrack() {\n return this.#removeTrackCallback;\n }\n set onremovetrack(callback) {\n if (this.#removeTrackCallback) {\n this.removeEventListener(\"removetrack\", this.#removeTrackCallback);\n this.#removeTrackCallback = void 0;\n }\n if (typeof callback == \"function\") {\n this.#removeTrackCallback = callback;\n this.addEventListener(\"removetrack\", callback);\n }\n }\n get onchange() {\n return this.#changeCallback;\n }\n set onchange(callback) {\n if (this.#changeCallback) {\n this.removeEventListener(\"change\", this.#changeCallback);\n this.#changeCallback = void 0;\n }\n if (typeof callback == \"function\") {\n this.#changeCallback = callback;\n this.addEventListener(\"change\", callback);\n }\n }\n}\nexport {\n VideoTrackList,\n addVideoTrack,\n removeVideoTrack,\n selectedChanged\n};\n", "class RenditionEvent extends Event {\n rendition;\n constructor(type, init) {\n super(type);\n this.rendition = init.rendition;\n }\n}\nexport {\n RenditionEvent\n};\n", "import { RenditionEvent } from \"./rendition-event.js\";\nimport { getPrivate } from \"./utils.js\";\nfunction addRendition(track, rendition) {\n const renditionList = getPrivate(track).media.videoRenditions;\n getPrivate(rendition).media = getPrivate(track).media;\n getPrivate(rendition).track = track;\n const renditionSet = getPrivate(track).renditionSet;\n renditionSet.add(rendition);\n const index = renditionSet.size - 1;\n if (!(index in VideoRenditionList.prototype)) {\n Object.defineProperty(VideoRenditionList.prototype, index, {\n get() {\n return getCurrentRenditions(this)[index];\n }\n });\n }\n queueMicrotask(() => {\n if (!track.selected) return;\n renditionList.dispatchEvent(new RenditionEvent(\"addrendition\", { rendition }));\n });\n}\nfunction removeRendition(rendition) {\n const renditionList = getPrivate(rendition).media.videoRenditions;\n const track = getPrivate(rendition).track;\n const renditionSet = getPrivate(track).renditionSet;\n renditionSet.delete(rendition);\n queueMicrotask(() => {\n const track2 = getPrivate(rendition).track;\n if (!track2.selected) return;\n renditionList.dispatchEvent(new RenditionEvent(\"removerendition\", { rendition }));\n });\n}\nfunction selectedChanged(rendition) {\n const renditionList = getPrivate(rendition).media.videoRenditions;\n if (!renditionList || getPrivate(renditionList).changeRequested) return;\n getPrivate(renditionList).changeRequested = true;\n queueMicrotask(() => {\n delete getPrivate(renditionList).changeRequested;\n const track = getPrivate(rendition).track;\n if (!track.selected) return;\n renditionList.dispatchEvent(new Event(\"change\"));\n });\n}\nfunction getCurrentRenditions(renditionList) {\n const media = getPrivate(renditionList).media;\n return [...media.videoTracks].filter((track) => track.selected).flatMap((track) => [...getPrivate(track).renditionSet]);\n}\nclass VideoRenditionList extends EventTarget {\n #addRenditionCallback;\n #removeRenditionCallback;\n #changeCallback;\n [Symbol.iterator]() {\n return getCurrentRenditions(this).values();\n }\n get length() {\n return getCurrentRenditions(this).length;\n }\n getRenditionById(id) {\n return getCurrentRenditions(this).find((rendition) => `${rendition.id}` === `${id}`) ?? null;\n }\n get selectedIndex() {\n return getCurrentRenditions(this).findIndex((rendition) => rendition.selected);\n }\n set selectedIndex(index) {\n for (const [i, rendition] of getCurrentRenditions(this).entries()) {\n rendition.selected = i === index;\n }\n }\n get onaddrendition() {\n return this.#addRenditionCallback;\n }\n set onaddrendition(callback) {\n if (this.#addRenditionCallback) {\n this.removeEventListener(\"addrendition\", this.#addRenditionCallback);\n this.#addRenditionCallback = void 0;\n }\n if (typeof callback == \"function\") {\n this.#addRenditionCallback = callback;\n this.addEventListener(\"addrendition\", callback);\n }\n }\n get onremoverendition() {\n return this.#removeRenditionCallback;\n }\n set onremoverendition(callback) {\n if (this.#removeRenditionCallback) {\n this.removeEventListener(\"removerendition\", this.#removeRenditionCallback);\n this.#removeRenditionCallback = void 0;\n }\n if (typeof callback == \"function\") {\n this.#removeRenditionCallback = callback;\n this.addEventListener(\"removerendition\", callback);\n }\n }\n get onchange() {\n return this.#changeCallback;\n }\n set onchange(callback) {\n if (this.#changeCallback) {\n this.removeEventListener(\"change\", this.#changeCallback);\n this.#changeCallback = void 0;\n }\n if (typeof callback == \"function\") {\n this.#changeCallback = callback;\n this.addEventListener(\"change\", callback);\n }\n }\n}\nexport {\n VideoRenditionList,\n addRendition,\n removeRendition,\n selectedChanged\n};\n", "import { selectedChanged } from \"./video-rendition-list.js\";\nclass VideoRendition {\n src;\n id;\n width;\n height;\n bitrate;\n frameRate;\n codec;\n #selected = false;\n get selected() {\n return this.#selected;\n }\n set selected(val) {\n if (this.#selected === val) return;\n this.#selected = val;\n selectedChanged(this);\n }\n}\nexport {\n VideoRendition\n};\n", "import { selectedChanged } from \"./video-track-list.js\";\nimport { VideoRendition } from \"./video-rendition.js\";\nimport { addRendition, removeRendition } from \"./video-rendition-list.js\";\nconst VideoTrackKind = {\n alternative: \"alternative\",\n captions: \"captions\",\n main: \"main\",\n sign: \"sign\",\n subtitles: \"subtitles\",\n commentary: \"commentary\"\n};\nclass VideoTrack {\n id;\n kind;\n label = \"\";\n language = \"\";\n sourceBuffer;\n #selected = false;\n addRendition(src, width, height, codec, bitrate, frameRate) {\n const rendition = new VideoRendition();\n rendition.src = src;\n rendition.width = width;\n rendition.height = height;\n rendition.frameRate = frameRate;\n rendition.bitrate = bitrate;\n rendition.codec = codec;\n addRendition(this, rendition);\n return rendition;\n }\n removeRendition(rendition) {\n removeRendition(rendition);\n }\n get selected() {\n return this.#selected;\n }\n set selected(val) {\n if (this.#selected === val) return;\n this.#selected = val;\n if (val !== true) return;\n selectedChanged(this);\n }\n}\nexport {\n VideoTrack,\n VideoTrackKind\n};\n", "import { RenditionEvent } from \"./rendition-event.js\";\nimport { getPrivate } from \"./utils.js\";\nfunction addRendition(track, rendition) {\n const renditionList = getPrivate(track).media.audioRenditions;\n getPrivate(rendition).media = getPrivate(track).media;\n getPrivate(rendition).track = track;\n const renditionSet = getPrivate(track).renditionSet;\n renditionSet.add(rendition);\n const index = renditionSet.size - 1;\n if (!(index in AudioRenditionList.prototype)) {\n Object.defineProperty(AudioRenditionList.prototype, index, {\n get() {\n return getCurrentRenditions(this)[index];\n }\n });\n }\n queueMicrotask(() => {\n if (!track.enabled) return;\n renditionList.dispatchEvent(new RenditionEvent(\"addrendition\", { rendition }));\n });\n}\nfunction removeRendition(rendition) {\n const renditionList = getPrivate(rendition).media.audioRenditions;\n const track = getPrivate(rendition).track;\n const renditionSet = getPrivate(track).renditionSet;\n renditionSet.delete(rendition);\n queueMicrotask(() => {\n const track2 = getPrivate(rendition).track;\n if (!track2.enabled) return;\n renditionList.dispatchEvent(new RenditionEvent(\"removerendition\", { rendition }));\n });\n}\nfunction selectedChanged(rendition) {\n const renditionList = getPrivate(rendition).media.audioRenditions;\n if (!renditionList || getPrivate(renditionList).changeRequested) return;\n getPrivate(renditionList).changeRequested = true;\n queueMicrotask(() => {\n delete getPrivate(renditionList).changeRequested;\n const track = getPrivate(rendition).track;\n if (!track.enabled) return;\n renditionList.dispatchEvent(new Event(\"change\"));\n });\n}\nfunction getCurrentRenditions(renditionList) {\n const media = getPrivate(renditionList).media;\n return [...media.audioTracks].filter((track) => track.enabled).flatMap((track) => [...getPrivate(track).renditionSet]);\n}\nclass AudioRenditionList extends EventTarget {\n #addRenditionCallback;\n #removeRenditionCallback;\n #changeCallback;\n [Symbol.iterator]() {\n return getCurrentRenditions(this).values();\n }\n get length() {\n return getCurrentRenditions(this).length;\n }\n getRenditionById(id) {\n return getCurrentRenditions(this).find((rendition) => `${rendition.id}` === `${id}`) ?? null;\n }\n get selectedIndex() {\n return getCurrentRenditions(this).findIndex((rendition) => rendition.selected);\n }\n set selectedIndex(index) {\n for (const [i, rendition] of getCurrentRenditions(this).entries()) {\n rendition.selected = i === index;\n }\n }\n get onaddrendition() {\n return this.#addRenditionCallback;\n }\n set onaddrendition(callback) {\n if (this.#addRenditionCallback) {\n this.removeEventListener(\"addrendition\", this.#addRenditionCallback);\n this.#addRenditionCallback = void 0;\n }\n if (typeof callback == \"function\") {\n this.#addRenditionCallback = callback;\n this.addEventListener(\"addrendition\", callback);\n }\n }\n get onremoverendition() {\n return this.#removeRenditionCallback;\n }\n set onremoverendition(callback) {\n if (this.#removeRenditionCallback) {\n this.removeEventListener(\"removerendition\", this.#removeRenditionCallback);\n this.#removeRenditionCallback = void 0;\n }\n if (typeof callback == \"function\") {\n this.#removeRenditionCallback = callback;\n this.addEventListener(\"removerendition\", callback);\n }\n }\n get onchange() {\n return this.#changeCallback;\n }\n set onchange(callback) {\n if (this.#changeCallback) {\n this.removeEventListener(\"change\", this.#changeCallback);\n this.#changeCallback = void 0;\n }\n if (typeof callback == \"function\") {\n this.#changeCallback = callback;\n this.addEventListener(\"change\", callback);\n }\n }\n}\nexport {\n AudioRenditionList,\n addRendition,\n removeRendition,\n selectedChanged\n};\n", "import { selectedChanged } from \"./audio-rendition-list.js\";\nclass AudioRendition {\n src;\n id;\n bitrate;\n codec;\n #selected = false;\n get selected() {\n return this.#selected;\n }\n set selected(val) {\n if (this.#selected === val) return;\n this.#selected = val;\n selectedChanged(this);\n }\n}\nexport {\n AudioRendition\n};\n", "import { TrackEvent } from \"./track-event.js\";\nimport { getPrivate } from \"./utils.js\";\nfunction addAudioTrack(media, track) {\n const trackList = media.audioTracks;\n getPrivate(track).media = media;\n if (!getPrivate(track).renditionSet) {\n getPrivate(track).renditionSet = /* @__PURE__ */ new Set();\n }\n const trackSet = getPrivate(trackList).trackSet;\n trackSet.add(track);\n const index = trackSet.size - 1;\n if (!(index in AudioTrackList.prototype)) {\n Object.defineProperty(AudioTrackList.prototype, index, {\n get() {\n return [...getPrivate(this).trackSet][index];\n }\n });\n }\n queueMicrotask(() => {\n trackList.dispatchEvent(new TrackEvent(\"addtrack\", { track }));\n });\n}\nfunction removeAudioTrack(track) {\n const trackList = getPrivate(track).media?.audioTracks;\n if (!trackList) return;\n const trackSet = getPrivate(trackList).trackSet;\n trackSet.delete(track);\n queueMicrotask(() => {\n trackList.dispatchEvent(new TrackEvent(\"removetrack\", { track }));\n });\n}\nfunction enabledChanged(track) {\n const trackList = getPrivate(track).media.audioTracks;\n if (!trackList || getPrivate(trackList).changeRequested) return;\n getPrivate(trackList).changeRequested = true;\n queueMicrotask(() => {\n delete getPrivate(trackList).changeRequested;\n trackList.dispatchEvent(new Event(\"change\"));\n });\n}\nclass AudioTrackList extends EventTarget {\n #addTrackCallback;\n #removeTrackCallback;\n #changeCallback;\n constructor() {\n super();\n getPrivate(this).trackSet = /* @__PURE__ */ new Set();\n }\n get #tracks() {\n return getPrivate(this).trackSet;\n }\n [Symbol.iterator]() {\n return this.#tracks.values();\n }\n get length() {\n return this.#tracks.size;\n }\n getTrackById(id) {\n return [...this.#tracks].find((track) => track.id === id) ?? null;\n }\n get onaddtrack() {\n return this.#addTrackCallback;\n }\n set onaddtrack(callback) {\n if (this.#addTrackCallback) {\n this.removeEventListener(\"addtrack\", this.#addTrackCallback);\n this.#addTrackCallback = void 0;\n }\n if (typeof callback == \"function\") {\n this.#addTrackCallback = callback;\n this.addEventListener(\"addtrack\", callback);\n }\n }\n get onremovetrack() {\n return this.#removeTrackCallback;\n }\n set onremovetrack(callback) {\n if (this.#removeTrackCallback) {\n this.removeEventListener(\"removetrack\", this.#removeTrackCallback);\n this.#removeTrackCallback = void 0;\n }\n if (typeof callback == \"function\") {\n this.#removeTrackCallback = callback;\n this.addEventListener(\"removetrack\", callback);\n }\n }\n get onchange() {\n return this.#changeCallback;\n }\n set onchange(callback) {\n if (this.#changeCallback) {\n this.removeEventListener(\"change\", this.#changeCallback);\n this.#changeCallback = void 0;\n }\n if (typeof callback == \"function\") {\n this.#changeCallback = callback;\n this.addEventListener(\"change\", callback);\n }\n }\n}\nexport {\n AudioTrackList,\n addAudioTrack,\n enabledChanged,\n removeAudioTrack\n};\n", "import { AudioRendition } from \"./audio-rendition.js\";\nimport { enabledChanged } from \"./audio-track-list.js\";\nimport { addRendition, removeRendition } from \"./audio-rendition-list.js\";\nconst AudioTrackKind = {\n alternative: \"alternative\",\n descriptions: \"descriptions\",\n main: \"main\",\n \"main-desc\": \"main-desc\",\n translation: \"translation\",\n commentary: \"commentary\"\n};\nclass AudioTrack {\n id;\n kind;\n label = \"\";\n language = \"\";\n sourceBuffer;\n #enabled = false;\n addRendition(src, codec, bitrate) {\n const rendition = new AudioRendition();\n rendition.src = src;\n rendition.codec = codec;\n rendition.bitrate = bitrate;\n addRendition(this, rendition);\n return rendition;\n }\n removeRendition(rendition) {\n removeRendition(rendition);\n }\n get enabled() {\n return this.#enabled;\n }\n set enabled(val) {\n if (this.#enabled === val) return;\n this.#enabled = val;\n enabledChanged(this);\n }\n}\nexport {\n AudioTrack,\n AudioTrackKind\n};\n", "import { VideoTrack } from \"./video-track.js\";\nimport { VideoTrackList, addVideoTrack, removeVideoTrack } from \"./video-track-list.js\";\nimport { AudioTrack } from \"./audio-track.js\";\nimport { AudioTrackList, addAudioTrack, removeAudioTrack } from \"./audio-track-list.js\";\nimport { VideoRenditionList } from \"./video-rendition-list.js\";\nimport { AudioRenditionList } from \"./audio-rendition-list.js\";\nimport { getPrivate } from \"./utils.js\";\nconst nativeVideoTracksFn = getBaseMediaTracksFn(globalThis.HTMLMediaElement, \"video\");\nconst nativeAudioTracksFn = getBaseMediaTracksFn(globalThis.HTMLMediaElement, \"audio\");\nfunction MediaTracksMixin(MediaElementClass) {\n if (!MediaElementClass?.prototype) return MediaElementClass;\n const videoTracksFn = getBaseMediaTracksFn(MediaElementClass, \"video\");\n if (!videoTracksFn || `${videoTracksFn}`.includes(\"[native code]\")) {\n Object.defineProperty(MediaElementClass.prototype, \"videoTracks\", {\n get() {\n return getVideoTracks(this);\n }\n });\n }\n const audioTracksFn = getBaseMediaTracksFn(MediaElementClass, \"audio\");\n if (!audioTracksFn || `${audioTracksFn}`.includes(\"[native code]\")) {\n Object.defineProperty(MediaElementClass.prototype, \"audioTracks\", {\n get() {\n return getAudioTracks(this);\n }\n });\n }\n if (!(\"addVideoTrack\" in MediaElementClass.prototype)) {\n MediaElementClass.prototype.addVideoTrack = function(kind, label = \"\", language = \"\") {\n const track = new VideoTrack();\n track.kind = kind;\n track.label = label;\n track.language = language;\n addVideoTrack(this, track);\n return track;\n };\n }\n if (!(\"removeVideoTrack\" in MediaElementClass.prototype)) {\n MediaElementClass.prototype.removeVideoTrack = removeVideoTrack;\n }\n if (!(\"addAudioTrack\" in MediaElementClass.prototype)) {\n MediaElementClass.prototype.addAudioTrack = function(kind, label = \"\", language = \"\") {\n const track = new AudioTrack();\n track.kind = kind;\n track.label = label;\n track.language = language;\n addAudioTrack(this, track);\n return track;\n };\n }\n if (!(\"removeAudioTrack\" in MediaElementClass.prototype)) {\n MediaElementClass.prototype.removeAudioTrack = removeAudioTrack;\n }\n if (!(\"videoRenditions\" in MediaElementClass.prototype)) {\n Object.defineProperty(MediaElementClass.prototype, \"videoRenditions\", {\n get() {\n return initVideoRenditions(this);\n }\n });\n }\n const initVideoRenditions = (media) => {\n let renditions = getPrivate(media).videoRenditions;\n if (!renditions) {\n renditions = new VideoRenditionList();\n getPrivate(renditions).media = media;\n getPrivate(media).videoRenditions = renditions;\n }\n return renditions;\n };\n if (!(\"audioRenditions\" in MediaElementClass.prototype)) {\n Object.defineProperty(MediaElementClass.prototype, \"audioRenditions\", {\n get() {\n return initAudioRenditions(this);\n }\n });\n }\n const initAudioRenditions = (media) => {\n let renditions = getPrivate(media).audioRenditions;\n if (!renditions) {\n renditions = new AudioRenditionList();\n getPrivate(renditions).media = media;\n getPrivate(media).audioRenditions = renditions;\n }\n return renditions;\n };\n return MediaElementClass;\n}\nfunction getBaseMediaTracksFn(MediaElementClass, type) {\n if (MediaElementClass?.prototype) {\n return Object.getOwnPropertyDescriptor(MediaElementClass.prototype, `${type}Tracks`)?.get;\n }\n}\nfunction getVideoTracks(media) {\n let tracks = getPrivate(media).videoTracks;\n if (!tracks) {\n tracks = new VideoTrackList();\n getPrivate(media).videoTracks = tracks;\n if (nativeVideoTracksFn) {\n const nativeTracks = nativeVideoTracksFn.call(media.nativeEl ?? media);\n for (const nativeTrack of nativeTracks) {\n addVideoTrack(media, nativeTrack);\n }\n nativeTracks.addEventListener(\"change\", () => {\n tracks.dispatchEvent(new Event(\"change\"));\n });\n nativeTracks.addEventListener(\"addtrack\", (event) => {\n if ([...tracks].some((t) => t instanceof VideoTrack)) {\n for (const nativeTrack of nativeTracks) {\n removeVideoTrack(nativeTrack);\n }\n return;\n }\n addVideoTrack(media, event.track);\n });\n nativeTracks.addEventListener(\"removetrack\", (event) => {\n removeVideoTrack(event.track);\n });\n }\n }\n return tracks;\n}\nfunction getAudioTracks(media) {\n let tracks = getPrivate(media).audioTracks;\n if (!tracks) {\n tracks = new AudioTrackList();\n getPrivate(media).audioTracks = tracks;\n if (nativeAudioTracksFn) {\n const nativeTracks = nativeAudioTracksFn.call(media.nativeEl ?? media);\n for (const nativeTrack of nativeTracks) {\n addAudioTrack(media, nativeTrack);\n }\n nativeTracks.addEventListener(\"change\", () => {\n tracks.dispatchEvent(new Event(\"change\"));\n });\n nativeTracks.addEventListener(\"addtrack\", (event) => {\n if ([...tracks].some((t) => t instanceof AudioTrack)) {\n for (const nativeTrack of nativeTracks) {\n removeAudioTrack(nativeTrack);\n }\n return;\n }\n addAudioTrack(media, event.track);\n });\n nativeTracks.addEventListener(\"removetrack\", (event) => {\n removeAudioTrack(event.track);\n });\n }\n }\n return tracks;\n}\nexport {\n MediaTracksMixin\n};\n"],
"mappings": "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",
"names": ["EventTarget", "_event", "DocumentFragment", "HTMLElement", "HTMLVideoElement", "customElements", "_name", "_constructor", "_options", "_root", "_detail", "CustomEvent", "typeArg", "eventInitDict", "__privateAdd", "__privateSet", "__privateGet", "createElement", "_tagName", "globalThisShim", "isServer", "internalGlobalThis", "internalDocument", "initialize", "teardown", "generatePlayerInitTime", "PlaybackTypes", "toMuxVideoURL", "MediaError", "getError", "CmcdTypeValues", "addCuePoints", "getCuePoints", "getActiveCuePoint", "addChapters", "getActiveChapter", "getStartDate", "getCurrentPdt", "getStreamType", "getTargetLiveWindow", "getLiveEdgeStart", "getSeekable", "getEnded", "getChapters", "toPlaybackIdFromSrc", "toPlaybackIdParts", "getEnvPlayerVersion", "player_version", "getPlayerVersion", "Events", "getAudioTemplateHTML", "attrs", "serializeAttributes", "getVideoTemplateHTML", "CustomMediaMixin", "superclass", "tag", "is", "_a", "_b", "_c", "_isDefined", "_define", "define_fn", "_isInit", "_nativeEl", "_childMap", "_init", "init_fn", "_syncMediaChildren", "syncMediaChildren_fn", "_upgradeProperty", "upgradeProperty_fn", "_forwardAttribute", "forwardAttribute_fn", "nativeElTest", "nativeElProps", "getNativeElProps", "__privateAdd", "__privateMethod", "__privateGet", "val", "__privateSet", "namedNodeMapToObject", "prop", "type", "event", "attrName", "oldValue", "newValue", "propsToAttrs", "args", "config", "attr", "removeNativeChildren", "el", "clone", "value", "_d", "_e", "_f", "__publicField", "proto", "html", "key", "namedNodeMap", "obj", "CustomVideoElement", "CustomAudioElement", "privateProps", "InvalidStateError", "NotSupportedError", "IterableWeakSet", "el", "fn", "ref", "value", "onCastApiAvailable", "callback", "_a", "_b", "_c", "requiresCastFramework", "loadCastFramework", "sdkUrl", "script", "castContext", "currentSession", "currentMedia", "editTracksInfo", "request", "resolve", "reject", "getMediaStatus", "setCastOptions", "options", "getDefaultCastOptions", "remoteInstances", "IterableWeakSet", "castElementRef", "cf", "onCastApiAvailable", "_a", "_b", "_c", "_d", "castContext", "e", "r", "privateProps", "remotePlaybackCallbackIdCount", "_media", "_isInit", "_remotePlayer", "_remoteListeners", "_state", "_available", "_callbacks", "_callbackIds", "_castPlayer", "castPlayer_get", "_disconnect", "disconnect_fn", "_onCastStateChanged", "onCastStateChanged_fn", "_onSessionStateChanged", "onSessionStateChanged_fn", "_init", "init_fn", "_onRemoteMediaLoaded", "onRemoteMediaLoaded_fn", "_updateRemoteTextTrack", "updateRemoteTextTrack_fn", "RemotePlayback", "media", "__privateAdd", "__privateSet", "__privateMethod", "__privateGet", "callback", "InvalidStateError", "NotSupportedError", "willDisconnect", "setCastOptions", "event", "listener", "err", "castState", "SESSION_RESUMED", "currentMedia", "getMediaStatus", "error", "value", "_e", "remoteSubtitles", "type", "localSubtitles", "kind", "subtitles", "language", "name", "trackId", "mode", "local", "hiddenTrackIds", "showingSubtitle", "activeTrackIds", "currentSession", "requestTrackIds", "id", "a", "b", "request", "editTracksInfo", "CastableMediaMixin", "superclass", "_a", "_b", "_localState", "_castOptions", "_castCustomData", "_remote", "_castPlayer", "castPlayer_get", "_loadOnPrompt", "loadOnPrompt_fn", "__privateAdd", "getDefaultCastOptions", "__privateGet", "requiresCastFramework", "loadCastFramework", "privateProps", "__privateMethod", "__privateSet", "RemotePlayback", "attrName", "oldValue", "newValue", "mediaInfo", "subtitles", "kind", "src", "activeTrackIds", "textTrackIdCount", "trackEl", "trackId", "track", "request", "currentSession", "val", "_c", "valType", "__superGet", "err", "__publicField", "TrackEvent", "type", "init", "__publicField", "privateProps", "getPrivate", "instance", "_a", "setPrivate", "props", "saved", "addVideoTrack", "media", "track", "trackList", "getPrivate", "trackSet", "index", "VideoTrackList", "TrackEvent", "removeVideoTrack", "_a", "selectedChanged", "selected", "hasUnselected", "_addTrackCallback", "_removeTrackCallback", "_changeCallback", "_tracks", "tracks_get", "__privateAdd", "__privateGet", "id", "callback", "__privateSet", "RenditionEvent", "type", "init", "__publicField", "addRendition", "track", "rendition", "renditionList", "getPrivate", "renditionSet", "index", "VideoRenditionList", "getCurrentRenditions", "RenditionEvent", "removeRendition", "selectedChanged", "_addRenditionCallback", "_removeRenditionCallback", "_changeCallback", "__privateAdd", "id", "_a", "i", "__privateGet", "callback", "__privateSet", "_selected", "VideoRendition", "__publicField", "__privateAdd", "__privateGet", "val", "__privateSet", "selectedChanged", "_selected", "VideoTrack", "__publicField", "__privateAdd", "src", "width", "height", "codec", "bitrate", "frameRate", "rendition", "VideoRendition", "addRendition", "removeRendition", "__privateGet", "val", "__privateSet", "selectedChanged", "addRendition", "track", "rendition", "renditionList", "getPrivate", "renditionSet", "index", "AudioRenditionList", "getCurrentRenditions", "RenditionEvent", "removeRendition", "selectedChanged", "_addRenditionCallback", "_removeRenditionCallback", "_changeCallback", "__privateAdd", "id", "_a", "i", "__privateGet", "callback", "__privateSet", "_selected", "AudioRendition", "__publicField", "__privateAdd", "__privateGet", "val", "__privateSet", "selectedChanged", "addAudioTrack", "media", "track", "trackList", "getPrivate", "trackSet", "index", "AudioTrackList", "TrackEvent", "removeAudioTrack", "_a", "enabledChanged", "_addTrackCallback", "_removeTrackCallback", "_changeCallback", "_tracks", "tracks_get", "__privateAdd", "__privateGet", "id", "callback", "__privateSet", "_enabled", "AudioTrack", "__publicField", "__privateAdd", "src", "codec", "bitrate", "rendition", "AudioRendition", "addRendition", "removeRendition", "__privateGet", "val", "__privateSet", "enabledChanged", "nativeVideoTracksFn", "getBaseMediaTracksFn", "nativeAudioTracksFn", "MediaTracksMixin", "MediaElementClass", "videoTracksFn", "getVideoTracks", "audioTracksFn", "getAudioTracks", "kind", "label", "language", "track", "VideoTrack", "addVideoTrack", "removeVideoTrack", "AudioTrack", "addAudioTrack", "removeAudioTrack", "initVideoRenditions", "media", "renditions", "getPrivate", "VideoRenditionList", "initAudioRenditions", "AudioRenditionList", "type", "_a", "tracks", "VideoTrackList", "nativeTracks", "nativeTrack", "event", "t", "AudioTrackList", "Events", "Attributes", "AttributeNameValues", "playerSoftwareVersion", "getPlayerVersion", "playerSoftwareName", "_core", "_loadRequested", "_playerInitTime", "_metadata", "_tokens", "__hlsConfig", "_playerSoftwareVersion", "_playerSoftwareName", "_errorTranslator", "_requestLoad", "requestLoad_fn", "MuxVideoBaseElement", "CustomVideoElement", "__privateAdd", "__privateSet", "generatePlayerInitTime", "_a", "value", "CmcdTypeValues", "__privateGet", "getError", "val", "attr", "currentVal", "num", "toPlaybackIdFromSrc", "_b", "_c", "_d", "queryParts", "toPlaybackIdParts", "playback", "drm", "getEnded", "getStreamType", "getTargetLiveWindow", "liveEdgeOffset", "seekableEnd", "seekableStart", "getLiveEdgeStart", "getSeekable", "cuePoints", "addCuePoints", "getActiveCuePoint", "getCuePoints", "chapters", "addChapters", "getActiveChapter", "getChapters", "getStartDate", "getCurrentPdt", "PlaybackTypes", "attrName", "currAttrs", "initialize", "teardown", "oldValue", "newValue", "hadSrc", "hasSrc", "__privateMethod", "toMuxVideoURL", "debug", "resp", "json", "_castCustomData", "MuxVideoElement", "CastableMediaMixin", "MediaTracksMixin", "internalGlobalThis", "src_default", "MuxVideoElement"]
}