UNPKG

@mux/mux-video

Version:

A custom mux video element for the browser that Just Worksâ„¢

8 lines (7 loc) • 40.4 kB
{ "version": 3, "sources": ["../../../src/ads/mixin/events.ts", "../../../src/ads/mixin/google-ima-client-ad.ts", "../../../src/ads/mixin/google-ima-client-provider.ts", "../../../src/ads/mixin/index.ts"], "sourcesContent": ["export class AdEvent extends Event {}\n\nexport const Events = {\n // https://www.mux.com/docs/guides/mux-data-playback-events#ad-events\n AD_REQUEST: 'adrequest',\n AD_RESPONSE: 'adresponse',\n AD_BREAK_START: 'adbreakstart',\n AD_FIRST_QUARTILE: 'adfirstquartile',\n AD_MIDPOINT: 'admidpoint',\n AD_THIRD_QUARTILE: 'adthirdquartile',\n AD_ENDED: 'adended',\n AD_BREAK_END: 'adbreakend',\n AD_ERROR: 'aderror',\n AD_PLAY: 'adplay',\n AD_PLAYING: 'adplaying',\n AD_PAUSE: 'adpause',\n\n // Useful ad specific events that are not part of the Mux Data spec\n AD_IMPRESSION: 'adimpression',\n AD_CLICK: 'adclick',\n AD_SKIP: 'adskip',\n AD_CLOSE: 'adclose',\n\n // Use standard events if possible to be consistent with HTMLVideoElement\n // https://www.w3.org/TR/html52/semantics-embedded-content.html#mediaevents\n PLAY: 'play',\n PLAYING: 'playing',\n PAUSE: 'pause',\n VOLUME_CHANGE: 'volumechange',\n TIME_UPDATE: 'timeupdate',\n DURATION_CHANGE: 'durationchange',\n WAITING: 'waiting',\n} as const;\n", "import type { IAdsVideoClientAd } from './types.js';\n\nexport class GoogleImaClientAd implements IAdsVideoClientAd {\n #ad: google.ima.Ad;\n #manager: google.ima.AdsManager;\n\n constructor(ad: google.ima.Ad, manager: google.ima.AdsManager) {\n this.#ad = ad;\n this.#manager = manager;\n }\n\n isLinear() {\n return this.#ad.isLinear();\n }\n\n isCustomPlaybackUsed() {\n return this.#manager.isCustomPlaybackUsed();\n }\n}\n", "/* eslint @typescript-eslint/triple-slash-reference: \"off\" */\n/// <reference types=\"google_interactive_media_ads_types\" preserve=\"true\"/>\nimport { Events, AdEvent } from './events.js';\nimport { GoogleImaClientAd } from './google-ima-client-ad.js';\nimport { IAdsVideoClientProvider } from './types.js';\n\nexport type GoogleImaClientProviderConfig = {\n adContainer: HTMLElement;\n videoElement: HTMLVideoElement;\n originalSize: DOMRect;\n};\n\nexport class GoogleImaClientProvider extends EventTarget implements IAdsVideoClientProvider {\n static isSDKAvailable() {\n if (!('google' in globalThis && 'ima' in globalThis['google'])) {\n console.error('Missing google.ima SDK. Make sure you include it via a script tag.');\n return false;\n } else {\n return true;\n }\n }\n\n #adContainer: HTMLElement;\n #videoElement: HTMLVideoElement;\n #originalSize: DOMRect;\n #resizeObserver?: ResizeObserver;\n #adDisplayContainer: google.ima.AdDisplayContainer;\n #adsLoader: google.ima.AdsLoader;\n #adsManager?: google.ima.AdsManager;\n #imaAd?: google.ima.Ad | null;\n #ad?: GoogleImaClientAd;\n #adProgressData?: google.ima.AdProgressData;\n #initializedAdDisplayContainer = false;\n #adPaused = false;\n #videoPlayed = false;\n #adBreak = false;\n #lastCurrentTime = 0;\n\n constructor(config: GoogleImaClientProviderConfig) {\n super();\n\n this.#adContainer = config.adContainer;\n this.#videoElement = config.videoElement;\n this.#originalSize = config.originalSize;\n\n this.#videoPlayed = !this.#videoElement.paused;\n this.#videoElement.addEventListener('play', this.#onVideoPlay);\n this.#videoElement.addEventListener('seeking', this.#onVideoSeeking);\n this.#videoElement.addEventListener('ended', this.#onVideoEnded);\n\n this.#adDisplayContainer = new google.ima.AdDisplayContainer(this.#adContainer, this.#videoElement);\n this.#adsLoader = new google.ima.AdsLoader(this.#adDisplayContainer);\n\n this.#adsLoader.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, this.#onAdError);\n this.#adsLoader.addEventListener(\n google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,\n this.#onAdsManagerLoaded\n );\n\n this.#resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n const { width, height } = entry.contentRect;\n if (width > 0 && height > 0) {\n this.#resize(width, height);\n }\n }\n });\n this.#resizeObserver?.observe(this.#adContainer);\n }\n\n destroy() {\n this.#videoElement.removeEventListener('play', this.#onVideoPlay);\n this.#videoElement.removeEventListener('seeking', this.#onVideoSeeking);\n this.#videoElement.removeEventListener('ended', this.#onVideoEnded);\n\n this.#resizeObserver?.disconnect();\n this.#resizeObserver = undefined;\n\n this.#adsManager?.stop();\n this.#adsManager?.destroy();\n this.#adDisplayContainer?.destroy();\n this.#adsLoader?.destroy();\n }\n\n unload() {\n this.#adsManager?.stop();\n // Wait for the next tick to ensure the ad is stopped and the content is resumed.\n setTimeout(() => {\n this.#adsManager?.destroy();\n }, 0);\n }\n\n #resize(width: number, height: number) {\n this.#originalSize = { ...this.#originalSize, width, height };\n this.#adsManager?.resize(this.#originalSize.width, this.#originalSize.height);\n }\n\n #onVideoPlay = () => {\n this.#videoPlayed = true;\n\n if (this.#adBreak && !this.#adsManager?.isCustomPlaybackUsed()) {\n console.warn('Video play prevented during ad break');\n this.#videoElement.pause();\n }\n };\n\n #onVideoSeeking = () => {\n if (this.#adBreak && !this.#adsManager?.isCustomPlaybackUsed()) {\n if (this.#videoElement.currentTime !== this.#lastCurrentTime) {\n console.warn('Seek prevented during ad break');\n this.#videoElement.currentTime = this.#lastCurrentTime;\n this.#videoElement.dispatchEvent(new Event('timeupdate'));\n }\n }\n };\n\n #onVideoEnded = () => {\n this.#adsLoader?.contentComplete();\n };\n\n #onAdError = (adErrorEvent: google.ima.AdErrorEvent) => {\n console.error('Ad error', adErrorEvent.getError()?.getMessage());\n this.dispatchEvent(new AdEvent(Events.AD_ERROR));\n this.#onAdComplete();\n };\n\n #onAdComplete(_adEvent?: google.ima.AdEvent) {\n this.dispatchEvent(new AdEvent(Events.AD_ENDED));\n }\n\n #onAdsManagerLoaded = async (loadedEvent: google.ima.AdsManagerLoadedEvent) => {\n const adsRenderingSettings = new google.ima.AdsRenderingSettings();\n this.#adsManager = loadedEvent.getAdsManager(this.#videoElement, adsRenderingSettings);\n\n this.#adsManager?.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, this.#onAdError);\n\n this.#adsManager?.addEventListener(google.ima.AdEvent.Type.LOADED, () => {\n this.dispatchEvent(new AdEvent(Events.AD_RESPONSE));\n });\n\n this.#adsManager?.addEventListener(google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED, (event: google.ima.AdEvent) => {\n this.#imaAd = event.getAd();\n\n if (!this.#imaAd || !this.#adsManager) {\n console.warn('Google IMA ad is undefined');\n return;\n }\n\n this.#adBreak = true;\n this.#lastCurrentTime = this.#videoElement.currentTime || 0;\n this.#ad = new GoogleImaClientAd(this.#imaAd, this.#adsManager);\n this.dispatchEvent(new AdEvent(Events.AD_BREAK_START));\n });\n\n this.#adsManager?.addEventListener(google.ima.AdEvent.Type.CLICK, () => {\n this.dispatchEvent(new AdEvent(Events.AD_CLICK));\n });\n\n this.#adsManager?.addEventListener(google.ima.AdEvent.Type.IMPRESSION, () => {\n this.dispatchEvent(new AdEvent(Events.AD_IMPRESSION));\n });\n\n this.#adsManager?.addEventListener(google.ima.AdEvent.Type.SKIPPED, () => {\n this.dispatchEvent(new AdEvent(Events.AD_SKIP));\n });\n\n this.#adsManager?.addEventListener(google.ima.AdEvent.Type.USER_CLOSE, () => {\n this.dispatchEvent(new AdEvent(Events.AD_CLOSE));\n });\n\n this.#adsManager?.addEventListener(google.ima.AdEvent.Type.FIRST_QUARTILE, () => {\n this.dispatchEvent(new AdEvent(Events.AD_FIRST_QUARTILE));\n });\n\n this.#adsManager?.addEventListener(google.ima.AdEvent.Type.MIDPOINT, () => {\n this.dispatchEvent(new AdEvent(Events.AD_MIDPOINT));\n });\n\n this.#adsManager?.addEventListener(google.ima.AdEvent.Type.THIRD_QUARTILE, () => {\n this.dispatchEvent(new AdEvent(Events.AD_THIRD_QUARTILE));\n });\n\n this.#adsManager?.addEventListener(google.ima.AdEvent.Type.COMPLETE, (event: google.ima.AdEvent) => {\n this.#onAdComplete(event);\n });\n\n this.#adsManager?.addEventListener(google.ima.AdEvent.Type.SKIPPED, (event: google.ima.AdEvent) => {\n this.#onAdComplete(event);\n });\n\n this.#adsManager?.addEventListener(google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED, () => {\n this.#adBreak = false;\n this.dispatchEvent(new AdEvent(Events.AD_BREAK_END));\n });\n\n this.#adsManager?.addEventListener(google.ima.AdEvent.Type.STARTED, () => {\n this.dispatchEvent(new AdEvent(Events.AD_PLAYING));\n this.dispatchEvent(new AdEvent(Events.PLAYING));\n });\n\n this.#adsManager?.addEventListener(google.ima.AdEvent.Type.PAUSED, () => {\n this.#adPaused = true;\n this.dispatchEvent(new AdEvent(Events.AD_PAUSE));\n this.dispatchEvent(new AdEvent(Events.PAUSE));\n });\n\n this.#adsManager?.addEventListener(google.ima.AdEvent.Type.RESUMED, () => {\n this.#adPaused = false;\n this.dispatchEvent(new AdEvent(Events.AD_PLAY));\n this.dispatchEvent(new AdEvent(Events.PLAY));\n this.dispatchEvent(new AdEvent(Events.AD_PLAYING));\n this.dispatchEvent(new AdEvent(Events.PLAYING));\n });\n\n this.#adsManager?.addEventListener(google.ima.AdEvent.Type.AD_BUFFERING, () => {\n this.dispatchEvent(new AdEvent(Events.WAITING));\n });\n\n this.#adsManager?.addEventListener(google.ima.AdEvent.Type.AD_PROGRESS, (adProgressEvent: google.ima.AdEvent) => {\n this.#adProgressData = adProgressEvent.getAdData() as google.ima.AdProgressData;\n this.dispatchEvent(new AdEvent(Events.TIME_UPDATE));\n });\n\n this.#adsManager?.addEventListener(google.ima.AdEvent.Type.DURATION_CHANGE, () => {\n this.dispatchEvent(new AdEvent(Events.DURATION_CHANGE));\n });\n\n this.#adsManager?.addEventListener(google.ima.AdEvent.Type.VOLUME_CHANGED, () => {\n this.dispatchEvent(new AdEvent(Events.VOLUME_CHANGE));\n });\n\n this.#adsManager?.addEventListener(google.ima.AdEvent.Type.VOLUME_MUTED, () => {\n this.dispatchEvent(new AdEvent(Events.VOLUME_CHANGE));\n });\n\n try {\n if (this.#videoPlayed) {\n this.#startAds();\n } else {\n this.#videoElement.addEventListener(\n 'play',\n () => {\n this.#videoPlayed = true;\n this.#startAds();\n },\n { once: true }\n );\n }\n } catch {\n this.#onAdComplete();\n }\n };\n\n #startAds() {\n this.#adBreak = true;\n this.#videoElement.pause();\n\n // init() is included here because some ads (VMAP) start playing without the start() call.\n this.#adsManager?.init(this.#originalSize.width, this.#originalSize.height);\n this.#adsManager?.start();\n }\n\n get adsLoader() {\n return this.#adsLoader;\n }\n\n get ad() {\n return this.#ad;\n }\n\n get adBreak() {\n return this.#adBreak;\n }\n\n get paused() {\n return this.#adPaused;\n }\n\n get duration() {\n return this.#adProgressData?.duration ?? this.#imaAd?.getDuration() ?? NaN;\n }\n\n get currentTime() {\n return this.#adProgressData?.currentTime ?? 0;\n }\n\n get volume() {\n return this.#adsManager?.getVolume() ?? 1;\n }\n\n set volume(val: number) {\n this.#adsManager?.setVolume(val);\n }\n\n play() {\n this.#adsManager?.resume();\n // todo: resolve on playing event\n return Promise.resolve();\n }\n\n pause() {\n this.#adsManager?.pause();\n }\n\n /**\n * Initializes the ad display container video elements for playback.\n * You must call this method as a direct result of a user action,\n * so that the browser can mark the video element as user initiated.\n */\n initializeAdDisplayContainer() {\n if (this.#initializedAdDisplayContainer) return;\n this.#initializedAdDisplayContainer = true;\n this.#adDisplayContainer?.initialize();\n }\n\n requestAds(adTagUrl: string) {\n // Destroy the current AdsManager to prevent any previously requested post-roll ads from playing.\n if (this.#adsManager) {\n this.#adsManager.destroy();\n }\n\n // Reuse the existing AdsLoader instance initialized on page load.\n if (this.#adsLoader) {\n // Reset the IMA SDK.\n this.#adsLoader.contentComplete();\n }\n\n const adsRequest = new google.ima.AdsRequest();\n adsRequest.adTagUrl = adTagUrl;\n this.#adsLoader?.requestAds(adsRequest);\n this.dispatchEvent(new AdEvent(Events.AD_REQUEST));\n }\n}\n", "import { GoogleImaClientProvider } from './google-ima-client-provider';\nimport type { CustomVideoElement } from 'custom-media-element';\nimport { Events as AdEvents, AdEvent } from './events.js';\nimport { Constructor, IAdsVideo } from './types.js';\n\nexport * from './events.js';\nexport * from './types.js';\n\nexport const Attributes = {\n AD_TAG_URL: 'ad-tag-url',\n ALLOW_AD_BLOCKER: 'allow-ad-blocker',\n} as const;\n\ntype VideoBackup = {\n currentTime: number;\n};\n\nexport function AdsVideoMixin<T extends CustomVideoElement>(superclass: T): Constructor<IAdsVideo> & T {\n class AdsVideo extends superclass implements IAdsVideo {\n static get observedAttributes() {\n return [...super.observedAttributes, 'src', Attributes.AD_TAG_URL];\n }\n\n static get Events() {\n // Filter out any duplicate events with a Set.\n return [...new Set([...(super.Events ?? []), ...Object.values(AdEvents)])];\n }\n\n static getTemplateHTML = (attrs: Record<string, string>) => {\n return (\n superclass.getTemplateHTML(attrs) +\n /*html*/ `\n <style>\n :host {\n position: relative;\n }\n\n #ad-container {\n position: absolute;\n top: 0px;\n left: 0px;\n bottom: 0px;\n right: 0px;\n z-index: -1;\n width: 100%;\n height: 100%;\n }\n\n #ad-container.ad-break {\n z-index: 0;\n }\n\n #ima-unavailable-message {\n position: absolute;\n inset: 0;\n z-index: 10;\n background: rgba(0, 0, 0, 0.75);\n color: white;\n font-size: 0.9em;\n text-align: center;\n line-height: 1.4;\n align-items: center;\n align-content: center;\n cursor: not-allowed;\n }\n\n #ima-unavailable-message h4 {\n font-size: 1rem;\n margin: 0;\n }\n </style>\n <div id=\"ad-container\"></div>\n `\n );\n };\n\n #videoMetadataLoaded = false;\n #oldAdTagUrl?: string | null;\n #adProvider?: GoogleImaClientProvider;\n #videoBackup?: VideoBackup;\n\n connectedCallback() {\n super.connectedCallback();\n\n if (!GoogleImaClientProvider.isSDKAvailable()) {\n console.error('Missing google.ima SDK. Make sure you include it via a script tag.');\n\n if (!this.allowAdBlocker) {\n this.#showAdBlockedMessage();\n }\n return;\n }\n\n if (!this.#adProvider) {\n this.#adProvider = new GoogleImaClientProvider({\n adContainer: this.#adContainer,\n videoElement: this.nativeEl,\n originalSize: this.getBoundingClientRect(),\n });\n\n for (const event of Object.values(AdEvents)) {\n this.#adProvider.addEventListener(event, this);\n }\n }\n }\n\n attributeChangedCallback(attrName: string, oldValue?: string | null, newValue?: string | null): void {\n super.attributeChangedCallback(attrName, oldValue, newValue);\n\n if (attrName === 'src' && newValue !== oldValue) {\n // If subsequent videos are loaded, reset the old ad tag url\n // to allow the same ads to be requested for a new video.\n // Don't use events to reset the state as they could be triggered\n // if Google IMA reuses the same video element for ads.\n this.#oldAdTagUrl = undefined;\n this.#videoBackup = undefined;\n this.#videoMetadataLoaded = false;\n }\n\n if (attrName === Attributes.AD_TAG_URL) {\n this.#resetAds();\n }\n }\n\n /**\n * See https://github.com/muxinc/media-elements/blob/main/packages/custom-media-element/custom-media-element.ts#L345-L359\n * In custom-media-element this method forwards events from the native video element to the custom element.\n */\n handleEvent(event: Event | AdEvent): void {\n if (event instanceof AdEvent) {\n this.#handleAdEvent(event);\n return;\n }\n\n // If we are in an ad-break block the events from the native video element.\n // This can happen when Google IMA reuses the same video element for ads.\n if (this.#adProvider?.adBreak) {\n return;\n }\n\n if (event.type === 'loadedmetadata') {\n this.#onLoadedMetadata();\n } else if (event.type === 'play') {\n this.#onPlay();\n }\n\n super.handleEvent(event);\n }\n\n #onLoadedMetadata() {\n this.#videoMetadataLoaded = true;\n // When a new video is loaded, make sure we reset the ads.\n this.#resetAds();\n }\n\n #onPlay() {\n // Make sure the ads are reset before playing if needed.\n this.#resetAds();\n this.#adProvider?.initializeAdDisplayContainer();\n }\n\n #resetAds() {\n if (this.adTagUrl) {\n this.#requestAds();\n } else {\n this.#destroyAds();\n }\n }\n\n async #requestAds() {\n // The container element must be in the DOM to initialize the ad display container.\n if (!this.adTagUrl || !this.isConnected) return;\n\n // Wait until the video metadata has loaded before requesting ads to avoid unnecessary requests.\n if (!this.#videoMetadataLoaded) return;\n\n if (this.adTagUrl !== this.#oldAdTagUrl) {\n this.#oldAdTagUrl = this.adTagUrl;\n this.#adProvider?.requestAds(this.adTagUrl);\n }\n }\n\n #destroyAds() {\n this.#adProvider?.unload();\n this.#oldAdTagUrl = undefined;\n }\n\n get #adContainer() {\n return this.shadowRoot?.getElementById('ad-container') as HTMLElement;\n }\n\n #showAdBlockedMessage() {\n if (this.shadowRoot?.querySelector('#ima-unavailable-message')) {\n return;\n }\n\n this.#adContainer?.insertAdjacentHTML(\n 'afterend',\n /* html */ `\n <div id=\"ima-unavailable-message\">\n <h4>Ad experience unavailable.</h4>\n <span>This may be due to a missing SDK, network issue, or ad blocker.</span>\n </div>\n `\n );\n }\n\n #handleAdEvent(event: Event | AdEvent) {\n if (event.type === AdEvents.AD_BREAK_START) {\n this.#onAdBreakStart();\n this.#dispatchAdEvent(AdEvents.DURATION_CHANGE);\n this.#dispatchAdEvent(event.type);\n return;\n }\n\n if (event.type === AdEvents.AD_BREAK_END) {\n this.#onAdBreakEnd();\n this.#dispatchAdEvent(AdEvents.DURATION_CHANGE);\n this.#dispatchAdEvent(event.type);\n return;\n }\n\n this.#dispatchAdEvent(event.type);\n }\n\n #dispatchAdEvent(eventType: string) {\n // Composed events are forwarded to parent shadow hosts (e.g. mux-player).\n this.dispatchEvent(new AdEvent(eventType, { composed: true }));\n }\n\n #onAdBreakStart() {\n this.#adContainer?.classList.toggle('ad-break', true);\n\n if (!this.ad?.isLinear()) {\n return;\n }\n\n super.pause();\n\n this.#videoBackup = {\n currentTime: super.currentTime,\n };\n }\n\n #onAdBreakEnd() {\n this.#adContainer?.classList.toggle('ad-break', false);\n\n if (this.#videoBackup?.currentTime) {\n this.currentTime = this.#videoBackup.currentTime;\n }\n\n this.#videoBackup = undefined;\n\n setTimeout(() => {\n if (!super.ended) {\n try {\n this.play();\n } catch {\n // Ignore abort errors\n }\n }\n }, 100);\n }\n\n play() {\n if (!GoogleImaClientProvider.isSDKAvailable() && !this.allowAdBlocker) {\n return Promise.reject(new Error('Playback failed: Ad experience not available'));\n }\n if (this.#adProvider?.adBreak) {\n return this.#adProvider.play();\n }\n return super.play();\n }\n\n pause() {\n if (this.#adProvider?.adBreak) {\n this.#adProvider?.pause();\n }\n super.pause();\n }\n\n get ad() {\n return this.#adProvider?.ad;\n }\n\n get adsLoader() {\n if (!this.#adProvider) {\n console.warn('adsLoader not available yet');\n }\n return this.#adProvider?.adsLoader;\n }\n\n get adTagUrl() {\n return this.getAttribute(Attributes.AD_TAG_URL) ?? undefined;\n }\n\n set adTagUrl(value) {\n if (value == this.adTagUrl) return;\n\n if (value == null) {\n this.removeAttribute(Attributes.AD_TAG_URL);\n } else {\n this.setAttribute(Attributes.AD_TAG_URL, value);\n }\n }\n\n get allowAdBlocker() {\n return this.hasAttribute(Attributes.ALLOW_AD_BLOCKER);\n }\n\n set allowAdBlocker(val) {\n this.toggleAttribute(Attributes.ALLOW_AD_BLOCKER, Boolean(val));\n }\n\n get paused() {\n if (this.#adProvider?.adBreak) {\n return this.#adProvider?.paused ?? false;\n }\n return super.paused;\n }\n\n get duration() {\n if (this.#adProvider?.adBreak) {\n return this.#adProvider?.duration ?? 0;\n }\n return super.duration;\n }\n\n get currentTime() {\n if (this.#adProvider?.adBreak) {\n return this.#adProvider?.currentTime ?? 0;\n }\n return super.currentTime;\n }\n\n set currentTime(val) {\n if (this.#adProvider?.adBreak) {\n return;\n }\n super.currentTime = val;\n }\n\n get volume() {\n if (this.#adProvider?.adBreak) {\n return this.#adProvider?.volume ?? 0;\n }\n return super.volume;\n }\n\n set volume(val) {\n if (this.#adProvider?.adBreak) {\n if (this.#adProvider) {\n this.#adProvider.volume = val;\n }\n }\n super.volume = val;\n }\n\n get muted() {\n if (this.#adProvider?.adBreak) {\n return !this.#adProvider?.volume;\n }\n return super.muted;\n }\n\n set muted(val) {\n if (this.#adProvider?.adBreak) {\n if (this.#adProvider) {\n this.#adProvider.volume = val ? 0 : this.volume;\n }\n }\n super.muted = val;\n }\n\n get readyState() {\n if (this.#adProvider?.adBreak) {\n return 4;\n }\n return super.readyState;\n }\n\n async requestPictureInPicture(): Promise<PictureInPictureWindow> {\n if (this.#adProvider?.adBreak) {\n throw new Error('Cannot use PiP while ads are playing!');\n }\n return super.requestPictureInPicture();\n }\n }\n\n return AdsVideo as unknown as Constructor<IAdsVideo> & T;\n}\n"], "mappings": "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", "names": ["AdEvent", "Events", "_ad", "_manager", "GoogleImaClientAd", "ad", "manager", "__privateAdd", "__privateSet", "__privateGet", "_adContainer", "_videoElement", "_originalSize", "_resizeObserver", "_adDisplayContainer", "_adsLoader", "_adsManager", "_imaAd", "_ad", "_adProgressData", "_initializedAdDisplayContainer", "_adPaused", "_videoPlayed", "_adBreak", "_lastCurrentTime", "_GoogleImaClientProvider_instances", "resize_fn", "_onVideoPlay", "_onVideoSeeking", "_onVideoEnded", "_onAdError", "onAdComplete_fn", "_onAdsManagerLoaded", "startAds_fn", "GoogleImaClientProvider", "config", "_a", "__privateAdd", "__privateSet", "__privateGet", "adErrorEvent", "AdEvent", "Events", "__privateMethod", "loadedEvent", "_b", "_c", "_d", "_e", "_f", "_g", "_h", "_i", "_j", "_k", "_l", "_m", "_n", "_o", "_p", "_q", "_r", "_s", "_t", "_u", "adsRenderingSettings", "event", "GoogleImaClientAd", "adProgressEvent", "entries", "entry", "width", "height", "val", "adTagUrl", "adsRequest", "_adEvent", "Attributes", "AdsVideoMixin", "superclass", "_videoMetadataLoaded", "_oldAdTagUrl", "_adProvider", "_videoBackup", "_AdsVideo_instances", "onLoadedMetadata_fn", "onPlay_fn", "resetAds_fn", "requestAds_fn", "destroyAds_fn", "adContainer_get", "showAdBlockedMessage_fn", "handleAdEvent_fn", "dispatchAdEvent_fn", "onAdBreakStart_fn", "onAdBreakEnd_fn", "_AdsVideo", "__privateAdd", "_a", "Events", "GoogleImaClientProvider", "__privateMethod", "__privateGet", "__privateSet", "event", "attrName", "oldValue", "newValue", "AdEvent", "_b", "value", "val", "_c", "eventType", "__superGet", "attrs", "AdsVideo"] }