From 87b0506f51f8df0bf41bc56f6a0a53eaac3ab6b2 Mon Sep 17 00:00:00 2001 From: Harvey Zack Date: Fri, 23 Aug 2024 23:23:50 +0800 Subject: [PATCH] refactor: Update VAST plugin in Artplayer --- docs/assets/example/vast.js | 11 +++++++++-- docs/uncompiled/artplayer-plugin-vast/index.js | 13 +++++++------ docs/uncompiled/artplayer-plugin-vast/index.js.map | 2 +- packages/artplayer-plugin-vast/src/index.js | 11 ++++++----- .../types/artplayer-plugin-vast.d.ts | 12 +++++++++--- 5 files changed, 32 insertions(+), 17 deletions(-) diff --git a/docs/assets/example/vast.js b/docs/assets/example/vast.js index 75a4f2273..e8da60739 100644 --- a/docs/assets/example/vast.js +++ b/docs/assets/example/vast.js @@ -1,3 +1,7 @@ +// Depends on: +// https://glomex.github.io/vast-ima-player/ +// https://developers.google.com/interactive-media-ads/docs/sdks/html5/client-side + // npm i artplayer-plugin-vast // import artplayerPluginVast from 'artplayer-plugin-vast'; @@ -7,8 +11,11 @@ var art = new Artplayer({ fullscreen: true, fullscreenWeb: true, plugins: [ - artplayerPluginVast(({ playUrl }) => { - // + artplayerPluginVast(({ playUrl, imaPlayer, ima }) => { + // Play the ad when the video is played + art.once('play', () => { + playUrl('https://artplayer.org/assets/vast/linear-ad.xml'); + }); }), ], }); \ No newline at end of file diff --git a/docs/uncompiled/artplayer-plugin-vast/index.js b/docs/uncompiled/artplayer-plugin-vast/index.js index 366a5d209..725f8838a 100644 --- a/docs/uncompiled/artplayer-plugin-vast/index.js +++ b/docs/uncompiled/artplayer-plugin-vast/index.js @@ -166,24 +166,25 @@ function artplayerPluginVast(callback) { inset: "0", width: "100%", height: "100%", - zIndex: "150" + zIndex: "150", + display: "none" }); - const player = new (0, _vastImaPlayer.Player)(ima, $video, $container, adsRenderingSettings, playerOptions); + const imaPlayer = new (0, _vastImaPlayer.Player)(ima, $video, $container, adsRenderingSettings, playerOptions); function playUrl(url) { const playAdsRequest = new ima.AdsRequest(); playAdsRequest.adTagUrl = url; - player.playAds(playAdsRequest); + imaPlayer.playAds(playAdsRequest); } function playRes(res) { const playAdsRequest = new ima.AdsRequest(); playAdsRequest.adsResponse = res; - player.playAds(playAdsRequest); + imaPlayer.playAds(playAdsRequest); } if (typeof callback === "function") await callback({ art, id, ima, - player, + imaPlayer, $container, playUrl, playRes @@ -192,7 +193,7 @@ function artplayerPluginVast(callback) { name: "artplayerPluginVast", id, ima, - player, + imaPlayer, $container }; }; diff --git a/docs/uncompiled/artplayer-plugin-vast/index.js.map b/docs/uncompiled/artplayer-plugin-vast/index.js.map index 89d8e0d30..9558212b1 100644 --- a/docs/uncompiled/artplayer-plugin-vast/index.js.map +++ b/docs/uncompiled/artplayer-plugin-vast/index.js.map @@ -1 +1 @@ -{"mappings":"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","sources":["packages/artplayer-plugin-vast/src/index.js","packages/artplayer-plugin-vast/node_modules/_@glomex_vast-ima-player@1.21.0@@glomex/vast-ima-player/dist/vast-ima-player.module.js","packages/artplayer-plugin-vast/node_modules/_@glomex_vast-ima-player@1.21.0@@glomex/vast-ima-player/node_modules/@alugha/ima/lib/esm/loadScript.js","packages/artplayer-plugin-vast/node_modules/_@glomex_vast-ima-player@1.21.0@@glomex/vast-ima-player/node_modules/@alugha/ima/lib/esm/loadImaSdk.js","packages/artplayer-plugin-vast/node_modules/_@glomex_vast-ima-player@1.21.0@@glomex/vast-ima-player/node_modules/@ungap/custom-event/esm/index.js","packages/artplayer-plugin-vast/node_modules/_@glomex_vast-ima-player@1.21.0@@glomex/vast-ima-player/src/vast-ima-player.ts","packages/artplayer-plugin-vast/node_modules/_@glomex_vast-ima-player@1.21.0@@glomex/vast-ima-player/src/custom-playhead.ts","packages/artplayer-plugin-vast/node_modules/_@glomex_vast-ima-player@1.21.0@@glomex/vast-ima-player/src/delegated-event-target.ts","node_modules/@parcel/transformer-js/src/esmodule-helpers.js"],"sourcesContent":["import { Player, PlayerOptions, loadImaSdk } from '@glomex/vast-ima-player';\n\nexport default function artplayerPluginVast(callback) {\n return async (art) => {\n const { template, constructor } = art;\n const { createElement, setStyles, append } = constructor.utils;\n const { $video, $player } = template;\n\n await loadImaSdk();\n const google = window.google;\n const ima = google.ima;\n\n const adsRenderingSettings = new ima.AdsRenderingSettings();\n const playerOptions = new PlayerOptions();\n\n const id = `art-${Date.now()}`;\n const $container = createElement('div');\n append($player, $container);\n $container.id = id;\n setStyles($container, {\n position: 'absolute',\n inset: '0',\n width: '100%',\n height: '100%',\n zIndex: '150',\n });\n\n const player = new Player(ima, $video, $container, adsRenderingSettings, playerOptions);\n\n function playUrl(url) {\n const playAdsRequest = new ima.AdsRequest();\n playAdsRequest.adTagUrl = url;\n player.playAds(playAdsRequest);\n }\n\n function playRes(res) {\n const playAdsRequest = new ima.AdsRequest();\n playAdsRequest.adsResponse = res;\n player.playAds(playAdsRequest);\n }\n\n if (typeof callback === 'function') {\n await callback({ art, id, ima, player, $container, playUrl, playRes });\n }\n\n return {\n name: 'artplayerPluginVast',\n id,\n ima,\n player,\n $container,\n };\n };\n}\n\nif (typeof window !== 'undefined') {\n window['artplayerPluginVast'] = artplayerPluginVast;\n}\n",null,"// Asynchronous loader for external scripts\nvar loadScript = function (src) {\n return new Promise(function (resolve, reject) {\n var script = document.createElement(\"script\");\n script.async = true;\n script.src = src;\n script.onload = resolve;\n script.onerror = reject;\n document.body.appendChild(script);\n });\n};\nexport default loadScript;\n","import loadScript from \"./loadScript\";\nvar imaSdkSrc = \"https://imasdk.googleapis.com/js/sdkloader/ima3.js\";\nvar pendingPromise = null;\nvar promiseFinished = function () {\n pendingPromise = null;\n};\nvar loadImaSdk = function () {\n var w = window;\n if (w.google && w.google.ima) {\n return Promise.resolve(w.google.ima);\n }\n if (pendingPromise) {\n return pendingPromise;\n }\n pendingPromise = loadScript(imaSdkSrc).then(function () { return w.google.ima; });\n pendingPromise.then(promiseFinished).catch(promiseFinished);\n return pendingPromise;\n};\nexport default loadImaSdk;\n","/*! (c) Andrea Giammarchi - ISC */\nvar self = {};\nself.CustomEvent = typeof CustomEvent === 'function' ?\n CustomEvent :\n (function (__p__) {\n CustomEvent[__p__] = new CustomEvent('').constructor[__p__];\n return CustomEvent;\n function CustomEvent(type, init) {\n if (!init) init = {};\n var e = document.createEvent('CustomEvent');\n e.initCustomEvent(type, !!init.bubbles, !!init.cancelable, init.detail);\n return e;\n }\n }('prototype'));\nexport default self.CustomEvent;\n","/**\n * tslint:disable:max-classes-per-file\n *\n * @format\n */\n\nimport type { ImaSdk, google } from '@alugha/ima';\nimport CustomEvent from '@ungap/custom-event';\nimport { CustomPlayhead } from './custom-playhead';\nimport { DelegatedEventTarget } from './delegated-event-target';\n\nconst IGNORE_UNTIL_CURRENT_TIME = 0.5;\nconst ADS_MANAGER_LOADED_TIMEOUT = 5000;\nconst REQUEST_ADS_TIMEOUT = 10000;\nconst MEDIA_ELEMENT_EVENTS = [\n 'abort',\n 'canplay',\n 'canplaythrough',\n 'durationchange',\n 'emptied',\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];\n\n/**\n * Additional media events that help managing the\n * lifecycle of a media file playback.\n */\nenum AdditionalMediaEvent {\n /** Fired when initial media file play happened. */\n MEDIA_START = 'MediaStart',\n /** Fired when the first frame of the media file is played after linear preroll. */\n MEDIA_IMPRESSION = 'MediaImpression',\n /** Fired when the media file playback finished after potential postroll. */\n MEDIA_STOP = 'MediaStop',\n /** Fired when ad break cue points change. */\n MEDIA_CUE_POINTS_CHANGE = 'MediaCuePointsChange',\n /**\n * Fired when media resumes playback. CONTENT_RESUME_REQUESTED\n * is sometimes triggered before playback and this event is only\n * triggered after ad is finished or when content resumes.\n */\n MEDIA_RESUMED = 'MediaResumed'\n}\n\n/**\n * Adjusted enum of https://developers.google.com/interactive-media-ads/docs/sdks/html5/v3/reference/js/google.ima.AdEvent\n * to follow VPAID spec event names.\n */\nenum ImaToAdEventMap {\n // most relevant Ad events\n /**\n * Fired when an ad error occurred (standalone ad or ad within an ad rule).\n * IMA provides these events on different objects and this event normalizes it.\n */\n AD_ERROR = 'AdError',\n /** Fired when the ad has stalled playback to buffer. */\n AD_BUFFERING = 'AdBuffering',\n /** Fired when ad data is available. */\n LOADED = 'AdLoaded',\n /** Fired when the impression URL has been pinged. */\n IMPRESSION = 'AdImpression',\n /** Fired when the ad starts playing. */\n STARTED = 'AdStarted',\n /** Fired when the ad playhead crosses first quartile. */\n FIRST_QUARTILE = 'AdFirstQuartile',\n /** Fired when the ad playhead crosses midpoint. */\n MIDPOINT = 'AdMidpoint',\n /** Fired when the ad playhead crosses third quartile. */\n THIRD_QUARTILE = 'AdThirdQuartile',\n /** Fired when the ad's current time value changes. */\n AD_PROGRESS = 'AdProgress',\n /** Fired when the ad completes playing. */\n COMPLETE = 'AdComplete',\n /** Fired when the ad is clicked. */\n CLICK = 'AdClick',\n /** Fired when the ad is paused. */\n PAUSED = 'AdPaused',\n /** Fired when the ad is resumed. */\n RESUMED = 'AdResumed',\n /** Fired when the ad is skipped by the user. */\n SKIPPED = 'AdSkipped',\n /** Fired when the displayed ads skippable state is changed. */\n SKIPPABLE_STATE_CHANGED = 'AdSkippableStateChanged',\n /** Fired when the ad volume has changed. */\n VOLUME_CHANGED = 'AdVolumeChanged',\n /** Fired when the ad volume has been muted. */\n VOLUME_MUTED = 'AdMuted',\n\n // Ad lifecycle events\n /** Fired when an ads list is loaded. This is when ad rule cuePoints are available. */\n AD_METADATA = 'AdMetadata',\n /** Fired when an ad rule or a VMAP ad break would have played if autoPlayAdBreaks is false. */\n AD_BREAK_READY = 'AdBreakReady',\n /** Fired when content should be paused. This usually happens right before an ad is about to cover the content. */\n CONTENT_PAUSE_REQUESTED = 'AdContentPauseRequested',\n /** Fired when content should be resumed. This usually happens when an ad finishes or collapses. */\n CONTENT_RESUME_REQUESTED = 'AdContentResumeRequested',\n /** Fired when the ads manager is done playing all the ads. */\n ALL_ADS_COMPLETED = 'AdAllAdsCompleted',\n\n // VPAID events\n /** Fired when the ad's duration changes. */\n DURATION_CHANGE = 'AdDurationChange',\n /** Fired when an ad triggers the interaction callback. Ad interactions contain an interaction ID string in the ad data. */\n INTERACTION = 'AdInteraction',\n /** Fired when the displayed ad changes from linear to nonlinear, or vice versa. */\n LINEAR_CHANGED = 'AdLinearChanged',\n /** Fired when a non-fatal error is encountered. The user need not take any action since the SDK will continue with the same or next ad playback depending on the error situation. */\n LOG = 'AdLog',\n /** Fired when the ad is closed by the user. */\n USER_CLOSE = 'AdUserClose',\n\n // Undocumented events\n /** Not document by IMA */\n AD_CAN_PLAY = 'AdCanPlay',\n /** Not document by IMA */\n EXPANDED_CHANGED = 'AdExpandedChanged',\n /** Not document by IMA */\n VIEWABLE_IMPRESSION = 'AdViewableImpression'\n}\n\ntype PlayerEvent = AdditionalMediaEvent | ImaToAdEventMap;\n\n/**\n * Available events of the VAST-IMA-Player.\n *\n * Also see https://developers.google.com/interactive-media-ads/docs/sdks/html5/v3/reference/js/google.ima.AdEvent\n *\n * The player also triggers the normal media element events\n * (https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Media_events)\n * when the content playback happens. This is useful when\n * \"disableCustomPlaybackForIOS10Plus = false\" (default) is configured and\n * the same media element is used on iOS to render both ad and content.\n * Those event names are not enumerated here because they are known.\n */\nexport const PlayerEvent = {\n ...ImaToAdEventMap,\n ...AdditionalMediaEvent\n};\n\nexport class PlayerOptions {\n /** Sets whether to disable custom playback on iOS 10+ browsers. If true, ads will play inline if the content video is inline. This enables TrueView skippable ads. However, the ad will stay inline and not support iOS's native fullscreen. */\n disableCustomPlaybackForIOS10Plus: boolean = false;\n /** Enables or disables auto resizing of adsManager. If enabled it also resizes non-linear ads. */\n autoResize: boolean = true;\n /** Allows to have a separate 'Learn More' click tracking element on mobile. */\n clickTrackingElement?: HTMLElement;\n}\n\nexport class PlayerError extends Error {\n errorCode: number;\n innerError: Error;\n type: string;\n vastErrorCode: number;\n\n static ERROR_CODE_ADS_MANAGER_LOADED_TIMEOUT = 9000;\n static ERROR_CODE_REQUEST_ADS_TIMEOUT = 9001;\n\n constructor(...args) {\n super(...args);\n }\n}\n\ntype StartAd = {\n start: () => void;\n startWithoutReset: () => void;\n ad?: google.ima.Ad;\n adBreakTime?: number;\n};\n\ntype StartAdCallback = (startAd: StartAd) => void;\n\n/**\n * Convenience player wrapper for the Google IMA HTML5 SDK\n */\nexport class Player extends DelegatedEventTarget {\n #mediaElement: HTMLVideoElement;\n #adElement: HTMLElement;\n #customPlayhead: CustomPlayhead;\n #adsRenderingSettings: google.ima.AdsRenderingSettings;\n #ima: ImaSdk;\n #adDisplayContainer: google.ima.AdDisplayContainer | undefined;\n #adsManager: google.ima.AdsManager | undefined;\n #width: number;\n #height: number;\n #adsLoader: google.ima.AdsLoader;\n #playerOptions: PlayerOptions;\n #resizeObserver: any;\n #currentAd: google.ima.Ad;\n #loadedAd: google.ima.Ad;\n #mediaStartTriggered: boolean = false;\n #mediaImpressionTriggered: boolean = false;\n #mediaInActivation: boolean = false;\n #customPlaybackTimeAdjustedOnEnded: boolean = false;\n #cuePoints: number[] = [];\n #adCurrentTime: number;\n #adDuration: number;\n #startAdCallback: StartAdCallback;\n #adsManagerLoadedTimeout: number;\n #requestAdsTimeout: number;\n #wasExternallyPaused: boolean = false;\n #lastNonZeroAdVolume: number = 1;\n #activatePromise = Promise.resolve();\n\n constructor(\n ima: ImaSdk,\n mediaElement: HTMLVideoElement,\n adElement: HTMLElement,\n adsRenderingSettings: google.ima.AdsRenderingSettings = new ima.AdsRenderingSettings(),\n options: PlayerOptions = new PlayerOptions()\n ) {\n super();\n this.#mediaElement = mediaElement;\n this.#adElement = adElement;\n this.#ima = ima;\n this.#playerOptions = options;\n this.#adsRenderingSettings = adsRenderingSettings;\n // for iOS to reset to initial content state\n this.#adsRenderingSettings.restoreCustomPlaybackStateOnAdBreakComplete =\n true;\n\n if (\n options.disableCustomPlaybackForIOS10Plus &&\n !this.#mediaElement.hasAttribute('playsinline')\n ) {\n // assign \"playsinline\" when on iOS two video elements\n // will be used for content and ad playback\n this.#mediaElement.setAttribute('playsinline', '');\n }\n this.#ima.settings.setDisableCustomPlaybackForIOS10Plus(\n options.disableCustomPlaybackForIOS10Plus\n );\n\n // later used for to determine playhead for triggering midrolls\n // and to determine whether the player is currently playing content\n this.#customPlayhead = new CustomPlayhead(this.#mediaElement);\n this._handleMediaElementEvents = this._handleMediaElementEvents.bind(this);\n MEDIA_ELEMENT_EVENTS.forEach((eventName) => {\n this.#mediaElement.addEventListener(\n eventName,\n this._handleMediaElementEvents\n );\n });\n\n this._onAdsManagerLoaded = this._onAdsManagerLoaded.bind(this);\n this._onAdsLoaderError = this._onAdsLoaderError.bind(this);\n\n // initial synchronization of width / height\n const { offsetHeight, offsetWidth } = this.#mediaElement;\n this.#width = offsetWidth;\n this.#height = offsetHeight;\n\n if (options.autoResize) {\n // @ts-ignore\n if (window.ResizeObserver) {\n // @ts-ignore\n this.#resizeObserver = new window.ResizeObserver((entries) =>\n this._resizeObserverCallback(entries)\n );\n this.#resizeObserver.observe(this.#mediaElement);\n }\n }\n }\n\n /**\n * This allows synchronous activation of the media element\n * and the Google IMA ad-display-container. Useful when you\n * have to do async work before calling \"playAds\".\n */\n activate() {\n if (this.#mediaStartTriggered || this.#mediaInActivation) return;\n this.#mediaInActivation = true;\n if (this.#mediaElement.paused) {\n const ready = () => {\n this.#mediaElement.pause();\n return new Promise((resolve) => {\n setTimeout(() => {\n // We don't want to expose the activation detail\n // to the outside and ignore events during activation phase.\n // Waiting a little so that \"pause\" got emitted from above pause() call\n this.#mediaInActivation = false;\n resolve();\n }, 1);\n });\n };\n this.#activatePromise = new Promise((resolve) =>\n resolve(this.#mediaElement.play())\n )\n .then(ready)\n .catch(ready);\n }\n }\n\n /**\n * This is the entry point to start ad playback. It can be used\n * as such:\n *\n * - With a single VAST at the beginning to play a preroll\n * - Anyhwere during content playback with a single VAST\n * - With a single VMAP at the beginning\n */\n playAds(adsRequest: google.ima.AdsRequest) {\n this._requestAds(adsRequest);\n }\n\n /**\n * Similar to \"playAds\" method but with the difference\n * that it allows to first load the ad and start it separately\n * within the given callback.\n *\n * When a VAST or a VMAP ad break is given the callback is called\n * with a \"start\" method which either starts playing the individual\n * VAST ad or starts the VMAP ad break. If \"start\" method is not called\n * it won't play the ad.\n */\n loadAds(adsRequest: google.ima.AdsRequest, startAdCallback: StartAdCallback) {\n this._requestAds(adsRequest, false, startAdCallback);\n }\n\n private _mediaElementPlay() {\n return this.#activatePromise.then(\n () => new Promise((resolve) => resolve(this.#mediaElement.play()))\n );\n }\n\n private _requestAds(\n adsRequest: google.ima.AdsRequest,\n autoPlayAdBreaks: boolean = true,\n startAdCallback?: StartAdCallback\n ) {\n this.reset();\n this._setupIma();\n // it is important that this is set after\n // a new AdsLoader and AdDisplayContainer\n // was created because preloading ads wouldn't\n // work as expected for multiple ads\n this.#ima.settings.setAutoPlayAdBreaks(autoPlayAdBreaks);\n // in case of replay we go back to start\n if (this.#mediaElement.ended) {\n this.#customPlayhead.reset();\n this.#mediaElement.currentTime = 0;\n }\n this.#startAdCallback = startAdCallback;\n adsRequest.linearAdSlotWidth = this.#width;\n adsRequest.linearAdSlotHeight = this.#height;\n adsRequest.nonLinearAdSlotWidth = this.#width;\n adsRequest.nonLinearAdSlotHeight = this.#height;\n\n // see version 3.442.0 changelog about postroll prefetching\n // fixes issue with a disappearing nonlinear preroll that gets\n // followed by a linear postroll\n // https://developers.google.com/interactive-media-ads/docs/sdks/html5/client-side/history\n if (adsRequest.contentDuration == null) {\n adsRequest.contentDuration = -3;\n }\n\n // trigger an error after 5s in case adsManagerLoaded\n // does not come up, so that content playback starts\n this.#adsManagerLoadedTimeout = window.setTimeout(() => {\n const error = new PlayerError(\n `No adsManagerLoadedEvent within ${ADS_MANAGER_LOADED_TIMEOUT}ms.`\n );\n error.errorCode = PlayerError.ERROR_CODE_ADS_MANAGER_LOADED_TIMEOUT;\n this._onAdError(error);\n }, ADS_MANAGER_LOADED_TIMEOUT);\n // trigger an error when no error / ad break ready / ... event\n // occurred within 5s after requesting ads\n this.#requestAdsTimeout = window.setTimeout(() => {\n const error = new PlayerError(\n `No response for ads-request within ${REQUEST_ADS_TIMEOUT}ms.`\n );\n error.errorCode = PlayerError.ERROR_CODE_REQUEST_ADS_TIMEOUT;\n this._onAdError(error);\n }, REQUEST_ADS_TIMEOUT);\n\n this.#adsLoader.requestAds(adsRequest);\n }\n\n private _setupIma() {\n this.#adDisplayContainer = new this.#ima.AdDisplayContainer(\n this.#adElement,\n // used as single element for linear ad playback on iOS\n this.#playerOptions.disableCustomPlaybackForIOS10Plus\n ? undefined\n : this.#mediaElement,\n // allows to override the 'Learn More' button on mobile\n this.#playerOptions.clickTrackingElement\n );\n this.#adsLoader = new this.#ima.AdsLoader(this.#adDisplayContainer);\n this.#adsLoader.addEventListener(\n this.#ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,\n this._onAdsManagerLoaded,\n false\n );\n this.#adsLoader.addEventListener(\n this.#ima.AdErrorEvent.Type.AD_ERROR,\n this._onAdsLoaderError,\n false\n );\n }\n\n skipAd() {\n if (this.#adsManager) {\n this.#adsManager.skip();\n }\n }\n\n discardAdBreak() {\n if (this.#adsManager) {\n this.#adsManager.discardAdBreak();\n }\n }\n\n /**\n * Starts playback of either content or ad element.\n */\n play() {\n this.#wasExternallyPaused = false;\n if (!this.#customPlayhead.enabled && this.#adsManager) {\n this.#adsManager.resume();\n } else if (!this.#adsManagerLoadedTimeout) {\n // do not trigger play during ad loading process\n // so when \"play\" gets called externally twice it does\n // not start the content playback before the ad is loaded\n this._mediaElementPlay()\n .then(() => {\n // empty\n })\n .catch(() => {\n // just in case we don't receive a \"pause\" event\n this.dispatchEvent(new CustomEvent('pause'));\n });\n }\n }\n\n /**\n * Pauses playback of either content or ad element.\n */\n pause() {\n this.#wasExternallyPaused = true;\n if (!this.#customPlayhead.enabled && this.#adsManager) {\n this.#adsManager.pause();\n } else {\n this.#mediaElement.pause();\n }\n }\n\n /**\n * Sets volume of either content or ad element.\n */\n set volume(volume: number) {\n if (!this.#customPlayhead.enabled && this.#adsManager) {\n this.#adsManager.setVolume(volume);\n }\n this.#mediaElement.volume = volume;\n }\n\n /**\n * Returns volume of either content or ad element.\n */\n get volume() {\n if (!this.#customPlayhead.enabled && this.#adsManager) {\n return this.#adsManager.getVolume();\n }\n return this.#mediaElement.volume;\n }\n\n /**\n * Sets muted state on either content or ad element.\n */\n set muted(muted: boolean) {\n if (!this.#customPlayhead.enabled && this.#adsManager) {\n this.#adsManager.setVolume(muted ? 0 : this.#lastNonZeroAdVolume);\n }\n this.#mediaElement.muted = muted;\n }\n\n /**\n * Returns muted state of either content or ad element.\n */\n get muted() {\n if (!this.#customPlayhead.enabled && this.#adsManager) {\n return this.#adsManager.getVolume() === 0;\n }\n return this.#mediaElement.muted;\n }\n\n /**\n * Sets current time of content element when not in ad playback mode.\n */\n set currentTime(currentTime: number) {\n if (this.#customPlayhead.enabled) {\n this.#mediaElement.currentTime = currentTime;\n }\n }\n\n /**\n * Returns current playhead time of either content or ad element.\n */\n get currentTime() {\n if (this.#adCurrentTime !== undefined) {\n return this.#adCurrentTime;\n }\n return this.#mediaElement.currentTime;\n }\n\n /**\n * Returns current duration of either content or ad element.\n */\n get duration() {\n if (this.#adDuration !== undefined) {\n return this.#adDuration;\n }\n return this.#mediaElement.duration;\n }\n\n /**\n * Returns list of ad break cue points that weren't played yet.\n * Only available after \"AdMetadata\" event when VMAP is passed in playAds.\n */\n get cuePoints() {\n return [...this.#cuePoints];\n }\n\n private _setCuePoints(cuePoints: number[]) {\n this.#cuePoints = [...cuePoints];\n this.dispatchEvent(\n new CustomEvent(PlayerEvent.MEDIA_CUE_POINTS_CHANGE, {\n detail: { cuePoints: [...this.#cuePoints] }\n })\n );\n }\n\n /**\n * Remove already played cuepoints\n *\n * @param timeOffset offset in seconds as defined in VMAP or 0 for preroll and -1 for postroll\n */\n private _adjustCuePoints(timeOffset) {\n const cuePointIndex = this.cuePoints.indexOf(timeOffset);\n if (cuePointIndex > -1) {\n this.#cuePoints.splice(cuePointIndex, 1);\n this._setCuePoints(this.#cuePoints);\n }\n }\n\n /**\n * Allows resizing the ad element. Useful when options.autoResize = false.\n */\n resizeAd(width: number, height: number) {\n this.#width = width;\n this.#height = height;\n if (this.#adsManager) {\n this.#adsManager.resize(width, height, this._getViewMode());\n }\n this.#adElement.style.width = `${width}px`;\n this.#adElement.style.height = `${height}px`;\n }\n\n /**\n * Cleans up current ad and ad manager session or the complete IMA (via force).\n *\n * Externally call this function with \"force = true\" when you want to switch\n * the content source or move the player to another DOM node before doing\n * another \"playAds\" or \"loadAds\", so that it does a full cleanup.\n *\n * @param force - enforce a full cleanup\n * @returns a promise which resolves after all the cleanup work is done\n */\n reset(force: boolean = false) {\n if (force) {\n this.#mediaImpressionTriggered = false;\n this.#mediaStartTriggered = false;\n this.#customPlaybackTimeAdjustedOnEnded = false;\n }\n this._resetAd();\n this.#cuePoints = [];\n this.#wasExternallyPaused = false;\n this.#startAdCallback = undefined;\n // always destroy ads-manager\n if (this.#adsManager) {\n this.#adsManager.destroy();\n }\n this.#adsManager = undefined;\n // also reset autoplay ad breaks\n // because setting it to false again\n // in _setupIma would not properly\n // reset IMA\n this.#ima.settings.setAutoPlayAdBreaks(true);\n if (force) {\n this._resetIma();\n }\n this.#adElement.style.display = 'none';\n }\n\n private _resetIma() {\n if (this.#adsLoader) {\n this.#adsLoader.removeEventListener(\n this.#ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,\n this._onAdsManagerLoaded,\n false\n );\n this.#adsLoader.removeEventListener(\n this.#ima.AdErrorEvent.Type.AD_ERROR,\n this._onAdsLoaderError,\n false\n );\n this.#adsLoader.destroy();\n }\n\n if (this.#adDisplayContainer) {\n this.#adDisplayContainer.destroy();\n }\n }\n\n /**\n * Completely destroys this instance. It is unusable after that.\n */\n destroy() {\n this.reset(true);\n this.#customPlayhead.destroy();\n MEDIA_ELEMENT_EVENTS.forEach((eventName) => {\n this.#mediaElement.removeEventListener(\n eventName,\n this._handleMediaElementEvents\n );\n });\n this.#adsLoader?.removeEventListener(\n this.#ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,\n this._onAdsManagerLoaded,\n false\n );\n this.#adDisplayContainer?.destroy();\n this.#adsLoader?.destroy();\n this.#mediaImpressionTriggered = false;\n this.#customPlaybackTimeAdjustedOnEnded = false;\n this.#mediaStartTriggered = false;\n this.#resizeObserver?.disconnect();\n }\n\n isCustomPlaybackUsed() {\n const { settings } = this.#ima;\n return (\n settings.getDisableCustomPlaybackForIOS10Plus() === false &&\n !this.#adElement.querySelector('video')\n );\n }\n\n private _resetAd() {\n window.clearTimeout(this.#adsManagerLoadedTimeout);\n window.clearTimeout(this.#requestAdsTimeout);\n this.#adsManagerLoadedTimeout = undefined;\n this.#requestAdsTimeout = undefined;\n this.#currentAd = undefined;\n this.#adCurrentTime = undefined;\n this.#adDuration = undefined;\n this.#adElement.style.display = 'none';\n this.#adElement.classList.remove('nonlinear');\n if (this.#adsManager) {\n // just ensure to start from defined width/height\n this._resizeAdsManager();\n }\n }\n\n private _handleMediaElementEvents(event: Event) {\n // always forward volumechange events\n if (!this.#customPlayhead.enabled && event.type !== 'volumechange') return;\n if (event.type === 'timeupdate') {\n // ignoring first timeupdate after play\n // because we can be in ad state too early\n if (this.#mediaElement.currentTime < IGNORE_UNTIL_CURRENT_TIME) {\n return;\n }\n if (this.#adsManager) {\n const cuePointsAfterJump = this.#adsManager\n .getCuePoints()\n .filter((cuePoint) => {\n return cuePoint >= 0 && cuePoint < this.#customPlayhead.currentTime;\n });\n const cuePointToRemove = cuePointsAfterJump.pop();\n // in case the ad-break lead to an error it cannot be detected which\n // ad break was affected because IMA could've preloaded an ad-break\n // without emitting an event for it\n this._adjustCuePoints(cuePointToRemove);\n }\n if (!this.#mediaImpressionTriggered && this.#mediaStartTriggered) {\n this.dispatchEvent(new CustomEvent(PlayerEvent.MEDIA_IMPRESSION));\n this.#mediaImpressionTriggered = true;\n }\n }\n if (\n event.type === 'play' &&\n !this.#mediaStartTriggered &&\n !this.#mediaInActivation // we don't want to trigger \"MEDIA_START\" during activation phase\n ) {\n this.dispatchEvent(new CustomEvent(PlayerEvent.MEDIA_START));\n this.#mediaStartTriggered = true;\n }\n if (event.type === 'ended') {\n if (\n this.isCustomPlaybackUsed() &&\n this.#mediaElement.currentTime === this.#mediaElement.duration &&\n this.#cuePoints.indexOf(-1) > -1\n ) {\n /* Fixing a bug with postroll on iOS\n * when a postroll gets started via \"contentComplete\"\n * and a single video-tag is used IMA does not reset\n * back to the content after the postroll finished.\n * Setting the time of the video tag a little shorter\n * than the duration, so that the video-tag is not set to \"ended\".\n */\n this.#mediaElement.currentTime = this.#mediaElement.duration - 0.00001;\n this.#customPlaybackTimeAdjustedOnEnded = true;\n }\n this.#adsLoader.contentComplete();\n if (!this.#adsManager) {\n this._mediaStop();\n }\n }\n // @ts-ignore\n if (\n !window.ResizeObserver &&\n this.#playerOptions.autoResize &&\n event.type === 'loadedmetadata'\n ) {\n // in case ResizeObserver is not supported we want\n // to use at least the size after the media element got\n // loaded\n const { offsetHeight, offsetWidth } = this.#mediaElement;\n this.#width = offsetWidth;\n this.#height = offsetHeight;\n this._resizeAdsManager();\n }\n if (!this.#mediaInActivation || event.type === 'volumechange') {\n this.dispatchEvent(new CustomEvent(event.type));\n }\n }\n\n private _handleAdsManagerEvents(event: google.ima.AdEvent) {\n const { AdEvent } = this.#ima;\n\n // @ts-ignore\n switch (event.type) {\n case AdEvent.Type.LOADED:\n // For an individual VAST ad inform on \"LOADED\" to\n // to allow starting the ad manually.\n // In case of VMAP it could preload ads before the\n // actual ad break. For VMAP it allows starting the ad\n // on \"AD_BREAK_READY\" instead.\n const loadedAd = event.getAd();\n if (this.#startAdCallback && this.#cuePoints.length === 0) {\n this.#startAdCallback({\n ad: loadedAd,\n start: () => {\n this._startAdsManager();\n this.#startAdCallback = undefined;\n },\n startWithoutReset: () => {\n this._startAdsManager();\n }\n });\n } else {\n this.#loadedAd = loadedAd;\n }\n break;\n case AdEvent.Type.AD_BREAK_READY:\n this._resetAd();\n // for a VMAP schedule\n if (this.#startAdCallback) {\n this.#startAdCallback({\n ad: this.#loadedAd,\n adBreakTime: event.getAdData().adBreakTime,\n start: () => {\n this._startAdsManager();\n // we reset after we received the first\n // start() after preroll\n this.#startAdCallback = undefined;\n },\n startWithoutReset: () => {\n this._startAdsManager();\n }\n });\n this.#loadedAd = undefined;\n } else {\n this._startAdsManager();\n }\n break;\n case AdEvent.Type.STARTED:\n const ad = (this.#currentAd = event.getAd());\n // when playing an ad-pod IMA uses two video-tags\n // and switches between those but does not set volume\n // on both video-tags. Calling setVolume with the\n // previously stored volume synchronizes volume with\n // the other video-tag\n if (ad.getAdPodInfo().getAdPosition() > 1) {\n this.#adsManager.setVolume(this.#adsManager.getVolume());\n }\n this.#adElement.classList.remove('nonlinear');\n this._resizeAdsManager();\n // single or non-linear ads\n if (!ad.isLinear()) {\n this.#adElement.classList.add('nonlinear');\n this._playContent();\n } else {\n this.#customPlayhead.disable();\n this.#adDuration = ad.getDuration();\n this.#adCurrentTime = 0;\n }\n this.#adElement.style.display = '';\n if (this.#wasExternallyPaused) {\n this.#wasExternallyPaused = false;\n this.#adsManager.pause();\n }\n break;\n case AdEvent.Type.ALL_ADS_COMPLETED:\n if (this.#customPlaybackTimeAdjustedOnEnded) {\n return;\n }\n if (\n this.isCustomPlaybackUsed() &&\n Boolean(this.#currentAd) &&\n this.#currentAd.getAdPodInfo().getTimeOffset() !== -1\n ) {\n // on iOS it sometimes only triggers ALL_ADS_COMPLETED\n // before CONTENT_RESUME_REQUESTED\n this._playContent();\n }\n this.reset();\n break;\n case AdEvent.Type.CONTENT_PAUSE_REQUESTED:\n this._resetAd();\n this.#currentAd = event.getAd();\n this.#adElement.style.display = '';\n this.#mediaElement.pause();\n this._resizeAdsManager();\n if (this.#currentAd) {\n this._adjustCuePoints(this.#currentAd.getAdPodInfo().getTimeOffset());\n }\n // synchronize volume state because IMA does not do that\n this.#adsManager.setVolume(\n this.#mediaElement.muted ? 0 : this.#mediaElement.volume\n );\n // pause requested is a signal that an adbreak with a linear ad got started\n this.#customPlayhead.disable();\n this.#adDuration = this.#currentAd.getDuration();\n this.#adCurrentTime = 0;\n break;\n case AdEvent.Type.CONTENT_RESUME_REQUESTED:\n const adPlayedPreviously = Boolean(this.#currentAd);\n // synchronize ad volume state back to content\n // because IMA does not do that\n if (adPlayedPreviously) {\n const adVolume = this.#adsManager.getVolume();\n if (adVolume === 0) {\n this.#mediaElement.muted = true;\n } else {\n this.#mediaElement.muted = false;\n }\n this.#mediaElement.volume = this.#lastNonZeroAdVolume;\n }\n if (this.#customPlaybackTimeAdjustedOnEnded) {\n // Fixing the issue on iOS and postroll where we have to\n // adjust current time.\n // We jump back to the content end, so that \"ended\" is assigned again.\n this.#mediaElement.currentTime = this.#mediaElement.duration + 1;\n this.#customPlaybackTimeAdjustedOnEnded = false;\n }\n\n if (this.#mediaElement.ended) {\n // after postroll\n this.reset();\n this._mediaStop();\n } else {\n this._resetAd();\n }\n // only start playback when there previously was an ad\n // CONTENT_RESUME_REQUESTED also gets triggered when \"start\"\n // is not called on preroll when \"loadAds\" is used\n if (adPlayedPreviously) {\n this.#wasExternallyPaused = false;\n this._playContent();\n }\n break;\n case AdEvent.Type.AD_METADATA:\n this._setCuePoints(this.#adsManager.getCuePoints());\n if (this.#cuePoints.indexOf(0) === -1) {\n if (!this.#startAdCallback) {\n this._playContent();\n } else {\n this.#startAdCallback({\n start: () => {\n this._playContent();\n this.#startAdCallback = undefined;\n },\n startWithoutReset: () => {\n this._playContent();\n }\n });\n }\n }\n break;\n case AdEvent.Type.AD_PROGRESS:\n const adDataProgress = event.getAdData();\n this.#adCurrentTime = adDataProgress.currentTime;\n this.#adDuration = adDataProgress.duration;\n break;\n case AdEvent.Type.LOG:\n const adData = event.getAdData();\n // called when an error occurred in VMAP (e.g. empty preroll)\n if (this.#startAdCallback) {\n this.#startAdCallback({\n start: () => {\n this._playContent();\n this.#startAdCallback = undefined;\n },\n startWithoutReset: () => {\n this._playContent();\n }\n });\n } else if (adData.adError && !this.#currentAd) {\n this._playContent();\n }\n break;\n case AdEvent.Type.VOLUME_CHANGED:\n const currentVolume = this.#adsManager.getVolume();\n if (currentVolume > 0) {\n this.#lastNonZeroAdVolume = currentVolume;\n }\n break;\n }\n }\n\n private _onAdsLoaderError(event: google.ima.AdErrorEvent) {\n this._onAdError(this._createPlayerErrorFromImaErrorEvent(event));\n }\n\n private _onAdsManagerLoaded(loadedEvent: google.ima.AdsManagerLoadedEvent) {\n const {\n AdEvent,\n AdErrorEvent: {\n Type: { AD_ERROR }\n }\n } = this.#ima;\n window.clearTimeout(this.#adsManagerLoadedTimeout);\n const adsManager = (this.#adsManager = loadedEvent.getAdsManager(\n this.#customPlayhead,\n this.#adsRenderingSettings\n ));\n\n Object.keys(AdEvent.Type).forEach((imaEventName) => {\n adsManager.addEventListener(AdEvent.Type[imaEventName], (event) => {\n this._handleAdsManagerEvents(event);\n if (PlayerEvent[imaEventName]) {\n const isEventWithAdData =\n ['LOG', 'AD_PROGRESS'].indexOf(imaEventName) > -1;\n this.dispatchEvent(\n new CustomEvent(PlayerEvent[imaEventName], {\n detail: {\n ad: event.getAd() || this.#currentAd,\n adData: isEventWithAdData ? event.getAdData() : {}\n }\n })\n );\n }\n });\n });\n adsManager.addEventListener(AD_ERROR, (event) =>\n this._onAdError(this._createPlayerErrorFromImaErrorEvent(event))\n );\n\n // start ad playback\n try {\n adsManager.init(this.#width, this.#height, this._getViewMode());\n // initial sync of volume so that muted autoplay works\n adsManager.setVolume(\n this.#mediaElement.muted ? 0 : this.#mediaElement.volume\n );\n // ensure to initialize the ad container at least once before\n // starting it. For playback with sound it requires a synchronous\n // .activate()\n this.#adDisplayContainer?.initialize();\n if (!this.#startAdCallback) {\n this._startAdsManager();\n }\n } catch (adError) {\n this._onAdError(new PlayerError(adError.message));\n }\n }\n\n private _startAdsManager() {\n if (!this.#mediaStartTriggered) {\n this.dispatchEvent(new CustomEvent(PlayerEvent.MEDIA_START));\n this.#mediaStartTriggered = true;\n }\n if (this.#adsManager) {\n try {\n this.#adsManager.start();\n } catch (error) {\n this._onAdError(new PlayerError(error.message));\n }\n } else {\n this._playContent();\n }\n }\n\n private _mediaStop() {\n setTimeout(() => {\n this.#mediaImpressionTriggered = false;\n this.#mediaStartTriggered = false;\n this.#customPlaybackTimeAdjustedOnEnded = false;\n this.dispatchEvent(new CustomEvent(PlayerEvent.MEDIA_STOP));\n }, 1);\n }\n\n private _resizeObserverCallback(entries) {\n for (const entry of entries) {\n if (entry.contentBoxSize && entry.contentBoxSize.length === 1) {\n this.#width = entry.contentBoxSize[0].inlineSize;\n this.#height = entry.contentBoxSize[0].blockSize;\n } else if (entry.contentBoxSize && entry.contentBoxSize.inlineSize) {\n this.#width = entry.contentBoxSize.inlineSize;\n this.#height = entry.contentBoxSize.blockSize;\n } else {\n this.#width = entry.contentRect.width;\n this.#height = entry.contentRect.height;\n }\n }\n this._resizeAdsManager();\n }\n\n private _resizeAdsManager() {\n if (!this.#playerOptions.autoResize || !this.#adsManager) return;\n\n const ad = this.#currentAd;\n const viewMode = this._getViewMode();\n const isNonLinearAd = ad && !ad.isLinear();\n\n if (!isNonLinearAd) {\n this.resizeAd(this.#width, this.#height);\n } else if (ad) {\n if (ad.getWidth() > this.#width || ad.getHeight() > this.#height) {\n this.resizeAd(this.#width, this.#height);\n } else {\n // in case we won't add pixels in height here it triggers a VAST error\n // that there is not enough space to render the nonlinear ad\n // when \"useStyledNonLinearAds\" is given the height needs to be higher so\n // that the close button fits in\n this.#adsManager.resize(ad.getWidth(), ad.getHeight() + 20, viewMode);\n this.#adElement.style.width = `${ad.getWidth()}px`;\n this.#adElement.style.height = `${ad.getHeight() + 20}px`;\n }\n }\n }\n\n private _getViewMode() {\n if (\n document.fullscreenElement || // Standard syntax\n // @ts-ignore\n document.webkitFullscreenElement || // Chrome, Safari and Opera synta\n // @ts-ignore\n document.mozFullScreenElement || // Firefox syntax\n // @ts-ignore\n document.msFullscreenElement || // IE/Edge syntax\n // @ts-ignore\n this.#mediaElement.webkitDisplayingFullscreen // Video in fullscreen, e.g. Safari iOS\n ) {\n return this.#ima.ViewMode.FULLSCREEN;\n }\n return this.#ima.ViewMode.NORMAL;\n }\n\n private _playContent() {\n this.#adElement.style.display = 'none';\n\n if (!this.#mediaElement.ended) {\n this.#customPlayhead.enable();\n if (!this.#wasExternallyPaused) {\n this._mediaElementPlay()\n .then(() => {\n // empty\n })\n .catch(() => {\n // just in case we don't receive a \"pause\" event\n this.dispatchEvent(new CustomEvent('pause'));\n });\n this.dispatchEvent(new CustomEvent('play'));\n this.dispatchEvent(new CustomEvent(PlayerEvent.MEDIA_RESUMED));\n } else {\n this.#mediaElement.pause();\n // somehow the above \"pause()\" does not send out pause event\n this.dispatchEvent(new CustomEvent('pause'));\n }\n this.#wasExternallyPaused = false;\n }\n }\n\n private _createPlayerErrorFromImaErrorEvent(event: google.ima.AdErrorEvent) {\n const error = event.getError();\n const playerError = new PlayerError(error.getMessage());\n playerError.type = error.getType();\n playerError.errorCode = error.getErrorCode();\n playerError.vastErrorCode =\n error.getVastErrorCode && error.getVastErrorCode();\n playerError.innerError = error.getInnerError();\n return playerError;\n }\n\n private _onAdError(error: PlayerError) {\n this.dispatchEvent(\n new CustomEvent(PlayerEvent.AD_ERROR, {\n detail: { error }\n })\n );\n this._resetAd();\n if (this.#startAdCallback) {\n this.#startAdCallback({\n start: () => {\n this._playContent();\n this.#startAdCallback = undefined;\n },\n startWithoutReset: () => {\n this._playContent();\n }\n });\n } else {\n this._playContent();\n }\n }\n}\n","/**\n * Improved version of: https://developers.google.com/interactive-media-ads/docs/sdks/html5/ad-rules#known-issues-with-mobile-safari\n */\nexport class CustomPlayhead {\n #mediaElement?: HTMLVideoElement;\n #currentTime?: number;\n #enabled: boolean;\n seeking: boolean;\n\n constructor(mediaElement: HTMLVideoElement) {\n this.#mediaElement = mediaElement;\n this.#currentTime = 0;\n this.#enabled = false;\n this.seeking = false;\n this._onTimeupdate = this._onTimeupdate.bind(this);\n this._onSeeking = this._onSeeking.bind(this);\n this._onSeeked = this._onSeeked.bind(this);\n this.enable();\n }\n\n private _onSeeking() {\n this.seeking = true;\n }\n\n private _onSeeked() {\n this.seeking = false;\n }\n\n private _onTimeupdate() {\n if (!this.seeking && !this.#mediaElement?.paused) {\n this.#currentTime = this.#mediaElement?.currentTime;\n }\n }\n\n get enabled() {\n return this.#enabled;\n }\n\n enable() {\n if (this.#enabled) return;\n this.#mediaElement?.addEventListener('seeking', this._onSeeking);\n this.#mediaElement?.addEventListener('seeked', this._onSeeked);\n this.#mediaElement?.addEventListener('timeupdate', this._onTimeupdate);\n this.#enabled = true;\n }\n\n disable() {\n if (!this.#enabled) return;\n this.#mediaElement?.removeEventListener('seeking', this._onSeeking);\n this.#mediaElement?.removeEventListener('seeked', this._onSeeked);\n this.#mediaElement?.removeEventListener('timeupdate', this._onTimeupdate);\n this.#enabled = false;\n }\n\n get currentTime() {\n return this.#currentTime;\n }\n\n get duration() {\n return this.#mediaElement?.duration;\n }\n\n get muted() {\n return this.#mediaElement?.muted;\n }\n\n get volume() {\n return this.#mediaElement?.volume;\n }\n\n play() {\n return new Promise((resolve) => {\n resolve(this.#mediaElement?.play());\n });\n }\n\n pause() {\n this.#mediaElement?.pause();\n }\n\n reset() {\n this.#currentTime = 0;\n this.#enabled = false;\n this.seeking = false;\n this.enable();\n }\n\n destroy() {\n this.#currentTime = 0;\n this.#enabled = false;\n this.seeking = false;\n this.disable();\n this.#mediaElement = undefined;\n }\n}\n","export class DelegatedEventTarget implements EventTarget {\n\n private delegate = document.createDocumentFragment();\n\n addEventListener(...args: any): void {\n this.delegate.addEventListener.apply(this.delegate, args);\n }\n\n dispatchEvent(...args: any): boolean {\n return this.delegate.dispatchEvent.apply(this.delegate, args);\n }\n\n removeEventListener(...args: any): void {\n return this.delegate.removeEventListener.apply(this.delegate, args);\n }\n}\n","exports.interopDefault = function (a) {\n return a && a.__esModule ? a : {default: a};\n};\n\nexports.defineInteropFlag = function (a) {\n Object.defineProperty(a, '__esModule', {value: true});\n};\n\nexports.exportAll = function (source, dest) {\n Object.keys(source).forEach(function (key) {\n if (\n key === 'default' ||\n key === '__esModule' ||\n Object.prototype.hasOwnProperty.call(dest, key)\n ) {\n return;\n }\n\n Object.defineProperty(dest, key, {\n enumerable: true,\n get: function () {\n return source[key];\n },\n });\n });\n\n return dest;\n};\n\nexports.export = function (dest, destName, get) {\n Object.defineProperty(dest, destName, {\n enumerable: true,\n get: get,\n });\n};\n"],"names":["pendingPromise","promiseFinished","loadImaSdk","w","window","google","ima","Promise","resolve","reject","script","document","createElement","async","src","onload","onerror","body","appendChild","then","catch","self","CustomEvent","__p__","constructor","type","init","e","createEvent","initCustomEvent","bubbles","cancelable","detail","AdditionalMediaEvent","ImaToAdEventMap","CustomPlayhead","mediaElement","seeking","_classPrivateFieldLooseBase","this","_onTimeupdate","bind","_onSeeking","_onSeeked","enable","_classPrivateFieldLoo","paused","_classPrivateFieldLoo2","currentTime","addEventListener","disable","removeEventListener","play","_this","_classPrivateFieldLoo9","pause","reset","destroy","undefined","_classPrivateFieldLoo11","duration","_classPrivateFieldLoo12","muted","_classPrivateFieldLoo13","volume","DelegatedEventTarget","delegate","createDocumentFragment","apply","dispatchEvent","MEDIA_ELEMENT_EVENTS","PlayerEvent","PlayerOptions","disableCustomPlaybackForIOS10Plus","autoResize","clickTrackingElement","PlayerError","errorCode","innerError","vastErrorCode","Error","ERROR_CODE_ADS_MANAGER_LOADED_TIMEOUT","ERROR_CODE_REQUEST_ADS_TIMEOUT","Player","adElement","adsRenderingSettings","options","AdsRenderingSettings","_this2","restoreCustomPlaybackStateOnAdBreakComplete","hasAttribute","setAttribute","settings","setDisableCustomPlaybackForIOS10Plus","_handleMediaElementEvents","forEach","eventName","_onAdsManagerLoaded","_onAdsLoaderError","offsetHeight","offsetWidth","ResizeObserver","entries","_resizeObserverCallback","observe","activate","ready","_this3","setTimeout","playAds","adsRequest","_requestAds","loadAds","startAdCallback","_mediaElementPlay","_this4","autoPlayAdBreaks","_setupIma","setAutoPlayAdBreaks","ended","linearAdSlotWidth","linearAdSlotHeight","nonLinearAdSlotWidth","nonLinearAdSlotHeight","contentDuration","error","_this5","_onAdError","requestAds","AdsManagerLoadedEvent","Type","ADS_MANAGER_LOADED","AdErrorEvent","AD_ERROR","skipAd","skip","discardAdBreak","enabled","resume","_this6","_setCuePoints","cuePoints","MEDIA_CUE_POINTS_CHANGE","_adjustCuePoints","timeOffset","cuePointIndex","indexOf","splice","resizeAd","width","height","resize","_getViewMode","style","force","_resetAd","_resetIma","display","_this7","disconnect","isCustomPlaybackUsed","getDisableCustomPlaybackForIOS10Plus","querySelector","clearTimeout","classList","remove","_resizeAdsManager","event","cuePointToRemove","getCuePoints","filter","cuePoint","_this8","pop","MEDIA_IMPRESSION","MEDIA_START","contentComplete","_mediaStop","_handleAdsManagerEvents","AdEvent","LOADED","loadedAd","getAd","length","ad","start","_this9","_startAdsManager","startWithoutReset","AD_BREAK_READY","adBreakTime","getAdData","STARTED","getAdPodInfo","getAdPosition","setVolume","getVolume","isLinear","getDuration","add","_playContent","ALL_ADS_COMPLETED","Boolean","getTimeOffset","CONTENT_PAUSE_REQUESTED","CONTENT_RESUME_REQUESTED","adPlayedPreviously","adVolume","AD_METADATA","AD_PROGRESS","adDataProgress","LOG","adData","adError","VOLUME_CHANGED","currentVolume","_createPlayerErrorFromImaErrorEvent","loadedEvent","adsManager","getAdsManager","Object","keys","imaEventName","_this10","isEventWithAdData","initialize","message","_this11","MEDIA_STOP","entry","contentBoxSize","inlineSize","blockSize","contentRect","viewMode","getWidth","getHeight","fullscreenElement","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement","webkitDisplayingFullscreen","ViewMode","FULLSCREEN","NORMAL","_this12","MEDIA_RESUMED","getError","playerError","getMessage","getType","getErrorCode","getVastErrorCode","getInnerError","_this13"],"version":3,"file":"index.js.map","sourceRoot":"../../../"} \ No newline at end of file +{"mappings":"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","sources":["packages/artplayer-plugin-vast/src/index.js","packages/artplayer-plugin-vast/node_modules/_@glomex_vast-ima-player@1.21.0@@glomex/vast-ima-player/dist/vast-ima-player.module.js","packages/artplayer-plugin-vast/node_modules/_@glomex_vast-ima-player@1.21.0@@glomex/vast-ima-player/node_modules/@alugha/ima/lib/esm/loadScript.js","packages/artplayer-plugin-vast/node_modules/_@glomex_vast-ima-player@1.21.0@@glomex/vast-ima-player/node_modules/@alugha/ima/lib/esm/loadImaSdk.js","packages/artplayer-plugin-vast/node_modules/_@glomex_vast-ima-player@1.21.0@@glomex/vast-ima-player/node_modules/@ungap/custom-event/esm/index.js","packages/artplayer-plugin-vast/node_modules/_@glomex_vast-ima-player@1.21.0@@glomex/vast-ima-player/src/vast-ima-player.ts","packages/artplayer-plugin-vast/node_modules/_@glomex_vast-ima-player@1.21.0@@glomex/vast-ima-player/src/custom-playhead.ts","packages/artplayer-plugin-vast/node_modules/_@glomex_vast-ima-player@1.21.0@@glomex/vast-ima-player/src/delegated-event-target.ts","node_modules/@parcel/transformer-js/src/esmodule-helpers.js"],"sourcesContent":["import { Player, PlayerOptions, loadImaSdk } from '@glomex/vast-ima-player';\n\nexport default function artplayerPluginVast(callback) {\n return async (art) => {\n const { template, constructor } = art;\n const { createElement, setStyles, append } = constructor.utils;\n const { $video, $player } = template;\n\n await loadImaSdk();\n const google = window.google;\n const ima = google.ima;\n\n const adsRenderingSettings = new ima.AdsRenderingSettings();\n const playerOptions = new PlayerOptions();\n\n const id = `art-${Date.now()}`;\n const $container = createElement('div');\n append($player, $container);\n $container.id = id;\n setStyles($container, {\n position: 'absolute',\n inset: '0',\n width: '100%',\n height: '100%',\n zIndex: '150',\n display: 'none',\n });\n\n const imaPlayer = new Player(ima, $video, $container, adsRenderingSettings, playerOptions);\n\n function playUrl(url) {\n const playAdsRequest = new ima.AdsRequest();\n playAdsRequest.adTagUrl = url;\n imaPlayer.playAds(playAdsRequest);\n }\n\n function playRes(res) {\n const playAdsRequest = new ima.AdsRequest();\n playAdsRequest.adsResponse = res;\n imaPlayer.playAds(playAdsRequest);\n }\n\n if (typeof callback === 'function') {\n await callback({ art, id, ima, imaPlayer, $container, playUrl, playRes });\n }\n\n return {\n name: 'artplayerPluginVast',\n id,\n ima,\n imaPlayer,\n $container,\n };\n };\n}\n\nif (typeof window !== 'undefined') {\n window['artplayerPluginVast'] = artplayerPluginVast;\n}\n",null,"// Asynchronous loader for external scripts\nvar loadScript = function (src) {\n return new Promise(function (resolve, reject) {\n var script = document.createElement(\"script\");\n script.async = true;\n script.src = src;\n script.onload = resolve;\n script.onerror = reject;\n document.body.appendChild(script);\n });\n};\nexport default loadScript;\n","import loadScript from \"./loadScript\";\nvar imaSdkSrc = \"https://imasdk.googleapis.com/js/sdkloader/ima3.js\";\nvar pendingPromise = null;\nvar promiseFinished = function () {\n pendingPromise = null;\n};\nvar loadImaSdk = function () {\n var w = window;\n if (w.google && w.google.ima) {\n return Promise.resolve(w.google.ima);\n }\n if (pendingPromise) {\n return pendingPromise;\n }\n pendingPromise = loadScript(imaSdkSrc).then(function () { return w.google.ima; });\n pendingPromise.then(promiseFinished).catch(promiseFinished);\n return pendingPromise;\n};\nexport default loadImaSdk;\n","/*! (c) Andrea Giammarchi - ISC */\nvar self = {};\nself.CustomEvent = typeof CustomEvent === 'function' ?\n CustomEvent :\n (function (__p__) {\n CustomEvent[__p__] = new CustomEvent('').constructor[__p__];\n return CustomEvent;\n function CustomEvent(type, init) {\n if (!init) init = {};\n var e = document.createEvent('CustomEvent');\n e.initCustomEvent(type, !!init.bubbles, !!init.cancelable, init.detail);\n return e;\n }\n }('prototype'));\nexport default self.CustomEvent;\n","/**\n * tslint:disable:max-classes-per-file\n *\n * @format\n */\n\nimport type { ImaSdk, google } from '@alugha/ima';\nimport CustomEvent from '@ungap/custom-event';\nimport { CustomPlayhead } from './custom-playhead';\nimport { DelegatedEventTarget } from './delegated-event-target';\n\nconst IGNORE_UNTIL_CURRENT_TIME = 0.5;\nconst ADS_MANAGER_LOADED_TIMEOUT = 5000;\nconst REQUEST_ADS_TIMEOUT = 10000;\nconst MEDIA_ELEMENT_EVENTS = [\n 'abort',\n 'canplay',\n 'canplaythrough',\n 'durationchange',\n 'emptied',\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];\n\n/**\n * Additional media events that help managing the\n * lifecycle of a media file playback.\n */\nenum AdditionalMediaEvent {\n /** Fired when initial media file play happened. */\n MEDIA_START = 'MediaStart',\n /** Fired when the first frame of the media file is played after linear preroll. */\n MEDIA_IMPRESSION = 'MediaImpression',\n /** Fired when the media file playback finished after potential postroll. */\n MEDIA_STOP = 'MediaStop',\n /** Fired when ad break cue points change. */\n MEDIA_CUE_POINTS_CHANGE = 'MediaCuePointsChange',\n /**\n * Fired when media resumes playback. CONTENT_RESUME_REQUESTED\n * is sometimes triggered before playback and this event is only\n * triggered after ad is finished or when content resumes.\n */\n MEDIA_RESUMED = 'MediaResumed'\n}\n\n/**\n * Adjusted enum of https://developers.google.com/interactive-media-ads/docs/sdks/html5/v3/reference/js/google.ima.AdEvent\n * to follow VPAID spec event names.\n */\nenum ImaToAdEventMap {\n // most relevant Ad events\n /**\n * Fired when an ad error occurred (standalone ad or ad within an ad rule).\n * IMA provides these events on different objects and this event normalizes it.\n */\n AD_ERROR = 'AdError',\n /** Fired when the ad has stalled playback to buffer. */\n AD_BUFFERING = 'AdBuffering',\n /** Fired when ad data is available. */\n LOADED = 'AdLoaded',\n /** Fired when the impression URL has been pinged. */\n IMPRESSION = 'AdImpression',\n /** Fired when the ad starts playing. */\n STARTED = 'AdStarted',\n /** Fired when the ad playhead crosses first quartile. */\n FIRST_QUARTILE = 'AdFirstQuartile',\n /** Fired when the ad playhead crosses midpoint. */\n MIDPOINT = 'AdMidpoint',\n /** Fired when the ad playhead crosses third quartile. */\n THIRD_QUARTILE = 'AdThirdQuartile',\n /** Fired when the ad's current time value changes. */\n AD_PROGRESS = 'AdProgress',\n /** Fired when the ad completes playing. */\n COMPLETE = 'AdComplete',\n /** Fired when the ad is clicked. */\n CLICK = 'AdClick',\n /** Fired when the ad is paused. */\n PAUSED = 'AdPaused',\n /** Fired when the ad is resumed. */\n RESUMED = 'AdResumed',\n /** Fired when the ad is skipped by the user. */\n SKIPPED = 'AdSkipped',\n /** Fired when the displayed ads skippable state is changed. */\n SKIPPABLE_STATE_CHANGED = 'AdSkippableStateChanged',\n /** Fired when the ad volume has changed. */\n VOLUME_CHANGED = 'AdVolumeChanged',\n /** Fired when the ad volume has been muted. */\n VOLUME_MUTED = 'AdMuted',\n\n // Ad lifecycle events\n /** Fired when an ads list is loaded. This is when ad rule cuePoints are available. */\n AD_METADATA = 'AdMetadata',\n /** Fired when an ad rule or a VMAP ad break would have played if autoPlayAdBreaks is false. */\n AD_BREAK_READY = 'AdBreakReady',\n /** Fired when content should be paused. This usually happens right before an ad is about to cover the content. */\n CONTENT_PAUSE_REQUESTED = 'AdContentPauseRequested',\n /** Fired when content should be resumed. This usually happens when an ad finishes or collapses. */\n CONTENT_RESUME_REQUESTED = 'AdContentResumeRequested',\n /** Fired when the ads manager is done playing all the ads. */\n ALL_ADS_COMPLETED = 'AdAllAdsCompleted',\n\n // VPAID events\n /** Fired when the ad's duration changes. */\n DURATION_CHANGE = 'AdDurationChange',\n /** Fired when an ad triggers the interaction callback. Ad interactions contain an interaction ID string in the ad data. */\n INTERACTION = 'AdInteraction',\n /** Fired when the displayed ad changes from linear to nonlinear, or vice versa. */\n LINEAR_CHANGED = 'AdLinearChanged',\n /** Fired when a non-fatal error is encountered. The user need not take any action since the SDK will continue with the same or next ad playback depending on the error situation. */\n LOG = 'AdLog',\n /** Fired when the ad is closed by the user. */\n USER_CLOSE = 'AdUserClose',\n\n // Undocumented events\n /** Not document by IMA */\n AD_CAN_PLAY = 'AdCanPlay',\n /** Not document by IMA */\n EXPANDED_CHANGED = 'AdExpandedChanged',\n /** Not document by IMA */\n VIEWABLE_IMPRESSION = 'AdViewableImpression'\n}\n\ntype PlayerEvent = AdditionalMediaEvent | ImaToAdEventMap;\n\n/**\n * Available events of the VAST-IMA-Player.\n *\n * Also see https://developers.google.com/interactive-media-ads/docs/sdks/html5/v3/reference/js/google.ima.AdEvent\n *\n * The player also triggers the normal media element events\n * (https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Media_events)\n * when the content playback happens. This is useful when\n * \"disableCustomPlaybackForIOS10Plus = false\" (default) is configured and\n * the same media element is used on iOS to render both ad and content.\n * Those event names are not enumerated here because they are known.\n */\nexport const PlayerEvent = {\n ...ImaToAdEventMap,\n ...AdditionalMediaEvent\n};\n\nexport class PlayerOptions {\n /** Sets whether to disable custom playback on iOS 10+ browsers. If true, ads will play inline if the content video is inline. This enables TrueView skippable ads. However, the ad will stay inline and not support iOS's native fullscreen. */\n disableCustomPlaybackForIOS10Plus: boolean = false;\n /** Enables or disables auto resizing of adsManager. If enabled it also resizes non-linear ads. */\n autoResize: boolean = true;\n /** Allows to have a separate 'Learn More' click tracking element on mobile. */\n clickTrackingElement?: HTMLElement;\n}\n\nexport class PlayerError extends Error {\n errorCode: number;\n innerError: Error;\n type: string;\n vastErrorCode: number;\n\n static ERROR_CODE_ADS_MANAGER_LOADED_TIMEOUT = 9000;\n static ERROR_CODE_REQUEST_ADS_TIMEOUT = 9001;\n\n constructor(...args) {\n super(...args);\n }\n}\n\ntype StartAd = {\n start: () => void;\n startWithoutReset: () => void;\n ad?: google.ima.Ad;\n adBreakTime?: number;\n};\n\ntype StartAdCallback = (startAd: StartAd) => void;\n\n/**\n * Convenience player wrapper for the Google IMA HTML5 SDK\n */\nexport class Player extends DelegatedEventTarget {\n #mediaElement: HTMLVideoElement;\n #adElement: HTMLElement;\n #customPlayhead: CustomPlayhead;\n #adsRenderingSettings: google.ima.AdsRenderingSettings;\n #ima: ImaSdk;\n #adDisplayContainer: google.ima.AdDisplayContainer | undefined;\n #adsManager: google.ima.AdsManager | undefined;\n #width: number;\n #height: number;\n #adsLoader: google.ima.AdsLoader;\n #playerOptions: PlayerOptions;\n #resizeObserver: any;\n #currentAd: google.ima.Ad;\n #loadedAd: google.ima.Ad;\n #mediaStartTriggered: boolean = false;\n #mediaImpressionTriggered: boolean = false;\n #mediaInActivation: boolean = false;\n #customPlaybackTimeAdjustedOnEnded: boolean = false;\n #cuePoints: number[] = [];\n #adCurrentTime: number;\n #adDuration: number;\n #startAdCallback: StartAdCallback;\n #adsManagerLoadedTimeout: number;\n #requestAdsTimeout: number;\n #wasExternallyPaused: boolean = false;\n #lastNonZeroAdVolume: number = 1;\n #activatePromise = Promise.resolve();\n\n constructor(\n ima: ImaSdk,\n mediaElement: HTMLVideoElement,\n adElement: HTMLElement,\n adsRenderingSettings: google.ima.AdsRenderingSettings = new ima.AdsRenderingSettings(),\n options: PlayerOptions = new PlayerOptions()\n ) {\n super();\n this.#mediaElement = mediaElement;\n this.#adElement = adElement;\n this.#ima = ima;\n this.#playerOptions = options;\n this.#adsRenderingSettings = adsRenderingSettings;\n // for iOS to reset to initial content state\n this.#adsRenderingSettings.restoreCustomPlaybackStateOnAdBreakComplete =\n true;\n\n if (\n options.disableCustomPlaybackForIOS10Plus &&\n !this.#mediaElement.hasAttribute('playsinline')\n ) {\n // assign \"playsinline\" when on iOS two video elements\n // will be used for content and ad playback\n this.#mediaElement.setAttribute('playsinline', '');\n }\n this.#ima.settings.setDisableCustomPlaybackForIOS10Plus(\n options.disableCustomPlaybackForIOS10Plus\n );\n\n // later used for to determine playhead for triggering midrolls\n // and to determine whether the player is currently playing content\n this.#customPlayhead = new CustomPlayhead(this.#mediaElement);\n this._handleMediaElementEvents = this._handleMediaElementEvents.bind(this);\n MEDIA_ELEMENT_EVENTS.forEach((eventName) => {\n this.#mediaElement.addEventListener(\n eventName,\n this._handleMediaElementEvents\n );\n });\n\n this._onAdsManagerLoaded = this._onAdsManagerLoaded.bind(this);\n this._onAdsLoaderError = this._onAdsLoaderError.bind(this);\n\n // initial synchronization of width / height\n const { offsetHeight, offsetWidth } = this.#mediaElement;\n this.#width = offsetWidth;\n this.#height = offsetHeight;\n\n if (options.autoResize) {\n // @ts-ignore\n if (window.ResizeObserver) {\n // @ts-ignore\n this.#resizeObserver = new window.ResizeObserver((entries) =>\n this._resizeObserverCallback(entries)\n );\n this.#resizeObserver.observe(this.#mediaElement);\n }\n }\n }\n\n /**\n * This allows synchronous activation of the media element\n * and the Google IMA ad-display-container. Useful when you\n * have to do async work before calling \"playAds\".\n */\n activate() {\n if (this.#mediaStartTriggered || this.#mediaInActivation) return;\n this.#mediaInActivation = true;\n if (this.#mediaElement.paused) {\n const ready = () => {\n this.#mediaElement.pause();\n return new Promise((resolve) => {\n setTimeout(() => {\n // We don't want to expose the activation detail\n // to the outside and ignore events during activation phase.\n // Waiting a little so that \"pause\" got emitted from above pause() call\n this.#mediaInActivation = false;\n resolve();\n }, 1);\n });\n };\n this.#activatePromise = new Promise((resolve) =>\n resolve(this.#mediaElement.play())\n )\n .then(ready)\n .catch(ready);\n }\n }\n\n /**\n * This is the entry point to start ad playback. It can be used\n * as such:\n *\n * - With a single VAST at the beginning to play a preroll\n * - Anyhwere during content playback with a single VAST\n * - With a single VMAP at the beginning\n */\n playAds(adsRequest: google.ima.AdsRequest) {\n this._requestAds(adsRequest);\n }\n\n /**\n * Similar to \"playAds\" method but with the difference\n * that it allows to first load the ad and start it separately\n * within the given callback.\n *\n * When a VAST or a VMAP ad break is given the callback is called\n * with a \"start\" method which either starts playing the individual\n * VAST ad or starts the VMAP ad break. If \"start\" method is not called\n * it won't play the ad.\n */\n loadAds(adsRequest: google.ima.AdsRequest, startAdCallback: StartAdCallback) {\n this._requestAds(adsRequest, false, startAdCallback);\n }\n\n private _mediaElementPlay() {\n return this.#activatePromise.then(\n () => new Promise((resolve) => resolve(this.#mediaElement.play()))\n );\n }\n\n private _requestAds(\n adsRequest: google.ima.AdsRequest,\n autoPlayAdBreaks: boolean = true,\n startAdCallback?: StartAdCallback\n ) {\n this.reset();\n this._setupIma();\n // it is important that this is set after\n // a new AdsLoader and AdDisplayContainer\n // was created because preloading ads wouldn't\n // work as expected for multiple ads\n this.#ima.settings.setAutoPlayAdBreaks(autoPlayAdBreaks);\n // in case of replay we go back to start\n if (this.#mediaElement.ended) {\n this.#customPlayhead.reset();\n this.#mediaElement.currentTime = 0;\n }\n this.#startAdCallback = startAdCallback;\n adsRequest.linearAdSlotWidth = this.#width;\n adsRequest.linearAdSlotHeight = this.#height;\n adsRequest.nonLinearAdSlotWidth = this.#width;\n adsRequest.nonLinearAdSlotHeight = this.#height;\n\n // see version 3.442.0 changelog about postroll prefetching\n // fixes issue with a disappearing nonlinear preroll that gets\n // followed by a linear postroll\n // https://developers.google.com/interactive-media-ads/docs/sdks/html5/client-side/history\n if (adsRequest.contentDuration == null) {\n adsRequest.contentDuration = -3;\n }\n\n // trigger an error after 5s in case adsManagerLoaded\n // does not come up, so that content playback starts\n this.#adsManagerLoadedTimeout = window.setTimeout(() => {\n const error = new PlayerError(\n `No adsManagerLoadedEvent within ${ADS_MANAGER_LOADED_TIMEOUT}ms.`\n );\n error.errorCode = PlayerError.ERROR_CODE_ADS_MANAGER_LOADED_TIMEOUT;\n this._onAdError(error);\n }, ADS_MANAGER_LOADED_TIMEOUT);\n // trigger an error when no error / ad break ready / ... event\n // occurred within 5s after requesting ads\n this.#requestAdsTimeout = window.setTimeout(() => {\n const error = new PlayerError(\n `No response for ads-request within ${REQUEST_ADS_TIMEOUT}ms.`\n );\n error.errorCode = PlayerError.ERROR_CODE_REQUEST_ADS_TIMEOUT;\n this._onAdError(error);\n }, REQUEST_ADS_TIMEOUT);\n\n this.#adsLoader.requestAds(adsRequest);\n }\n\n private _setupIma() {\n this.#adDisplayContainer = new this.#ima.AdDisplayContainer(\n this.#adElement,\n // used as single element for linear ad playback on iOS\n this.#playerOptions.disableCustomPlaybackForIOS10Plus\n ? undefined\n : this.#mediaElement,\n // allows to override the 'Learn More' button on mobile\n this.#playerOptions.clickTrackingElement\n );\n this.#adsLoader = new this.#ima.AdsLoader(this.#adDisplayContainer);\n this.#adsLoader.addEventListener(\n this.#ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,\n this._onAdsManagerLoaded,\n false\n );\n this.#adsLoader.addEventListener(\n this.#ima.AdErrorEvent.Type.AD_ERROR,\n this._onAdsLoaderError,\n false\n );\n }\n\n skipAd() {\n if (this.#adsManager) {\n this.#adsManager.skip();\n }\n }\n\n discardAdBreak() {\n if (this.#adsManager) {\n this.#adsManager.discardAdBreak();\n }\n }\n\n /**\n * Starts playback of either content or ad element.\n */\n play() {\n this.#wasExternallyPaused = false;\n if (!this.#customPlayhead.enabled && this.#adsManager) {\n this.#adsManager.resume();\n } else if (!this.#adsManagerLoadedTimeout) {\n // do not trigger play during ad loading process\n // so when \"play\" gets called externally twice it does\n // not start the content playback before the ad is loaded\n this._mediaElementPlay()\n .then(() => {\n // empty\n })\n .catch(() => {\n // just in case we don't receive a \"pause\" event\n this.dispatchEvent(new CustomEvent('pause'));\n });\n }\n }\n\n /**\n * Pauses playback of either content or ad element.\n */\n pause() {\n this.#wasExternallyPaused = true;\n if (!this.#customPlayhead.enabled && this.#adsManager) {\n this.#adsManager.pause();\n } else {\n this.#mediaElement.pause();\n }\n }\n\n /**\n * Sets volume of either content or ad element.\n */\n set volume(volume: number) {\n if (!this.#customPlayhead.enabled && this.#adsManager) {\n this.#adsManager.setVolume(volume);\n }\n this.#mediaElement.volume = volume;\n }\n\n /**\n * Returns volume of either content or ad element.\n */\n get volume() {\n if (!this.#customPlayhead.enabled && this.#adsManager) {\n return this.#adsManager.getVolume();\n }\n return this.#mediaElement.volume;\n }\n\n /**\n * Sets muted state on either content or ad element.\n */\n set muted(muted: boolean) {\n if (!this.#customPlayhead.enabled && this.#adsManager) {\n this.#adsManager.setVolume(muted ? 0 : this.#lastNonZeroAdVolume);\n }\n this.#mediaElement.muted = muted;\n }\n\n /**\n * Returns muted state of either content or ad element.\n */\n get muted() {\n if (!this.#customPlayhead.enabled && this.#adsManager) {\n return this.#adsManager.getVolume() === 0;\n }\n return this.#mediaElement.muted;\n }\n\n /**\n * Sets current time of content element when not in ad playback mode.\n */\n set currentTime(currentTime: number) {\n if (this.#customPlayhead.enabled) {\n this.#mediaElement.currentTime = currentTime;\n }\n }\n\n /**\n * Returns current playhead time of either content or ad element.\n */\n get currentTime() {\n if (this.#adCurrentTime !== undefined) {\n return this.#adCurrentTime;\n }\n return this.#mediaElement.currentTime;\n }\n\n /**\n * Returns current duration of either content or ad element.\n */\n get duration() {\n if (this.#adDuration !== undefined) {\n return this.#adDuration;\n }\n return this.#mediaElement.duration;\n }\n\n /**\n * Returns list of ad break cue points that weren't played yet.\n * Only available after \"AdMetadata\" event when VMAP is passed in playAds.\n */\n get cuePoints() {\n return [...this.#cuePoints];\n }\n\n private _setCuePoints(cuePoints: number[]) {\n this.#cuePoints = [...cuePoints];\n this.dispatchEvent(\n new CustomEvent(PlayerEvent.MEDIA_CUE_POINTS_CHANGE, {\n detail: { cuePoints: [...this.#cuePoints] }\n })\n );\n }\n\n /**\n * Remove already played cuepoints\n *\n * @param timeOffset offset in seconds as defined in VMAP or 0 for preroll and -1 for postroll\n */\n private _adjustCuePoints(timeOffset) {\n const cuePointIndex = this.cuePoints.indexOf(timeOffset);\n if (cuePointIndex > -1) {\n this.#cuePoints.splice(cuePointIndex, 1);\n this._setCuePoints(this.#cuePoints);\n }\n }\n\n /**\n * Allows resizing the ad element. Useful when options.autoResize = false.\n */\n resizeAd(width: number, height: number) {\n this.#width = width;\n this.#height = height;\n if (this.#adsManager) {\n this.#adsManager.resize(width, height, this._getViewMode());\n }\n this.#adElement.style.width = `${width}px`;\n this.#adElement.style.height = `${height}px`;\n }\n\n /**\n * Cleans up current ad and ad manager session or the complete IMA (via force).\n *\n * Externally call this function with \"force = true\" when you want to switch\n * the content source or move the player to another DOM node before doing\n * another \"playAds\" or \"loadAds\", so that it does a full cleanup.\n *\n * @param force - enforce a full cleanup\n * @returns a promise which resolves after all the cleanup work is done\n */\n reset(force: boolean = false) {\n if (force) {\n this.#mediaImpressionTriggered = false;\n this.#mediaStartTriggered = false;\n this.#customPlaybackTimeAdjustedOnEnded = false;\n }\n this._resetAd();\n this.#cuePoints = [];\n this.#wasExternallyPaused = false;\n this.#startAdCallback = undefined;\n // always destroy ads-manager\n if (this.#adsManager) {\n this.#adsManager.destroy();\n }\n this.#adsManager = undefined;\n // also reset autoplay ad breaks\n // because setting it to false again\n // in _setupIma would not properly\n // reset IMA\n this.#ima.settings.setAutoPlayAdBreaks(true);\n if (force) {\n this._resetIma();\n }\n this.#adElement.style.display = 'none';\n }\n\n private _resetIma() {\n if (this.#adsLoader) {\n this.#adsLoader.removeEventListener(\n this.#ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,\n this._onAdsManagerLoaded,\n false\n );\n this.#adsLoader.removeEventListener(\n this.#ima.AdErrorEvent.Type.AD_ERROR,\n this._onAdsLoaderError,\n false\n );\n this.#adsLoader.destroy();\n }\n\n if (this.#adDisplayContainer) {\n this.#adDisplayContainer.destroy();\n }\n }\n\n /**\n * Completely destroys this instance. It is unusable after that.\n */\n destroy() {\n this.reset(true);\n this.#customPlayhead.destroy();\n MEDIA_ELEMENT_EVENTS.forEach((eventName) => {\n this.#mediaElement.removeEventListener(\n eventName,\n this._handleMediaElementEvents\n );\n });\n this.#adsLoader?.removeEventListener(\n this.#ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,\n this._onAdsManagerLoaded,\n false\n );\n this.#adDisplayContainer?.destroy();\n this.#adsLoader?.destroy();\n this.#mediaImpressionTriggered = false;\n this.#customPlaybackTimeAdjustedOnEnded = false;\n this.#mediaStartTriggered = false;\n this.#resizeObserver?.disconnect();\n }\n\n isCustomPlaybackUsed() {\n const { settings } = this.#ima;\n return (\n settings.getDisableCustomPlaybackForIOS10Plus() === false &&\n !this.#adElement.querySelector('video')\n );\n }\n\n private _resetAd() {\n window.clearTimeout(this.#adsManagerLoadedTimeout);\n window.clearTimeout(this.#requestAdsTimeout);\n this.#adsManagerLoadedTimeout = undefined;\n this.#requestAdsTimeout = undefined;\n this.#currentAd = undefined;\n this.#adCurrentTime = undefined;\n this.#adDuration = undefined;\n this.#adElement.style.display = 'none';\n this.#adElement.classList.remove('nonlinear');\n if (this.#adsManager) {\n // just ensure to start from defined width/height\n this._resizeAdsManager();\n }\n }\n\n private _handleMediaElementEvents(event: Event) {\n // always forward volumechange events\n if (!this.#customPlayhead.enabled && event.type !== 'volumechange') return;\n if (event.type === 'timeupdate') {\n // ignoring first timeupdate after play\n // because we can be in ad state too early\n if (this.#mediaElement.currentTime < IGNORE_UNTIL_CURRENT_TIME) {\n return;\n }\n if (this.#adsManager) {\n const cuePointsAfterJump = this.#adsManager\n .getCuePoints()\n .filter((cuePoint) => {\n return cuePoint >= 0 && cuePoint < this.#customPlayhead.currentTime;\n });\n const cuePointToRemove = cuePointsAfterJump.pop();\n // in case the ad-break lead to an error it cannot be detected which\n // ad break was affected because IMA could've preloaded an ad-break\n // without emitting an event for it\n this._adjustCuePoints(cuePointToRemove);\n }\n if (!this.#mediaImpressionTriggered && this.#mediaStartTriggered) {\n this.dispatchEvent(new CustomEvent(PlayerEvent.MEDIA_IMPRESSION));\n this.#mediaImpressionTriggered = true;\n }\n }\n if (\n event.type === 'play' &&\n !this.#mediaStartTriggered &&\n !this.#mediaInActivation // we don't want to trigger \"MEDIA_START\" during activation phase\n ) {\n this.dispatchEvent(new CustomEvent(PlayerEvent.MEDIA_START));\n this.#mediaStartTriggered = true;\n }\n if (event.type === 'ended') {\n if (\n this.isCustomPlaybackUsed() &&\n this.#mediaElement.currentTime === this.#mediaElement.duration &&\n this.#cuePoints.indexOf(-1) > -1\n ) {\n /* Fixing a bug with postroll on iOS\n * when a postroll gets started via \"contentComplete\"\n * and a single video-tag is used IMA does not reset\n * back to the content after the postroll finished.\n * Setting the time of the video tag a little shorter\n * than the duration, so that the video-tag is not set to \"ended\".\n */\n this.#mediaElement.currentTime = this.#mediaElement.duration - 0.00001;\n this.#customPlaybackTimeAdjustedOnEnded = true;\n }\n this.#adsLoader.contentComplete();\n if (!this.#adsManager) {\n this._mediaStop();\n }\n }\n // @ts-ignore\n if (\n !window.ResizeObserver &&\n this.#playerOptions.autoResize &&\n event.type === 'loadedmetadata'\n ) {\n // in case ResizeObserver is not supported we want\n // to use at least the size after the media element got\n // loaded\n const { offsetHeight, offsetWidth } = this.#mediaElement;\n this.#width = offsetWidth;\n this.#height = offsetHeight;\n this._resizeAdsManager();\n }\n if (!this.#mediaInActivation || event.type === 'volumechange') {\n this.dispatchEvent(new CustomEvent(event.type));\n }\n }\n\n private _handleAdsManagerEvents(event: google.ima.AdEvent) {\n const { AdEvent } = this.#ima;\n\n // @ts-ignore\n switch (event.type) {\n case AdEvent.Type.LOADED:\n // For an individual VAST ad inform on \"LOADED\" to\n // to allow starting the ad manually.\n // In case of VMAP it could preload ads before the\n // actual ad break. For VMAP it allows starting the ad\n // on \"AD_BREAK_READY\" instead.\n const loadedAd = event.getAd();\n if (this.#startAdCallback && this.#cuePoints.length === 0) {\n this.#startAdCallback({\n ad: loadedAd,\n start: () => {\n this._startAdsManager();\n this.#startAdCallback = undefined;\n },\n startWithoutReset: () => {\n this._startAdsManager();\n }\n });\n } else {\n this.#loadedAd = loadedAd;\n }\n break;\n case AdEvent.Type.AD_BREAK_READY:\n this._resetAd();\n // for a VMAP schedule\n if (this.#startAdCallback) {\n this.#startAdCallback({\n ad: this.#loadedAd,\n adBreakTime: event.getAdData().adBreakTime,\n start: () => {\n this._startAdsManager();\n // we reset after we received the first\n // start() after preroll\n this.#startAdCallback = undefined;\n },\n startWithoutReset: () => {\n this._startAdsManager();\n }\n });\n this.#loadedAd = undefined;\n } else {\n this._startAdsManager();\n }\n break;\n case AdEvent.Type.STARTED:\n const ad = (this.#currentAd = event.getAd());\n // when playing an ad-pod IMA uses two video-tags\n // and switches between those but does not set volume\n // on both video-tags. Calling setVolume with the\n // previously stored volume synchronizes volume with\n // the other video-tag\n if (ad.getAdPodInfo().getAdPosition() > 1) {\n this.#adsManager.setVolume(this.#adsManager.getVolume());\n }\n this.#adElement.classList.remove('nonlinear');\n this._resizeAdsManager();\n // single or non-linear ads\n if (!ad.isLinear()) {\n this.#adElement.classList.add('nonlinear');\n this._playContent();\n } else {\n this.#customPlayhead.disable();\n this.#adDuration = ad.getDuration();\n this.#adCurrentTime = 0;\n }\n this.#adElement.style.display = '';\n if (this.#wasExternallyPaused) {\n this.#wasExternallyPaused = false;\n this.#adsManager.pause();\n }\n break;\n case AdEvent.Type.ALL_ADS_COMPLETED:\n if (this.#customPlaybackTimeAdjustedOnEnded) {\n return;\n }\n if (\n this.isCustomPlaybackUsed() &&\n Boolean(this.#currentAd) &&\n this.#currentAd.getAdPodInfo().getTimeOffset() !== -1\n ) {\n // on iOS it sometimes only triggers ALL_ADS_COMPLETED\n // before CONTENT_RESUME_REQUESTED\n this._playContent();\n }\n this.reset();\n break;\n case AdEvent.Type.CONTENT_PAUSE_REQUESTED:\n this._resetAd();\n this.#currentAd = event.getAd();\n this.#adElement.style.display = '';\n this.#mediaElement.pause();\n this._resizeAdsManager();\n if (this.#currentAd) {\n this._adjustCuePoints(this.#currentAd.getAdPodInfo().getTimeOffset());\n }\n // synchronize volume state because IMA does not do that\n this.#adsManager.setVolume(\n this.#mediaElement.muted ? 0 : this.#mediaElement.volume\n );\n // pause requested is a signal that an adbreak with a linear ad got started\n this.#customPlayhead.disable();\n this.#adDuration = this.#currentAd.getDuration();\n this.#adCurrentTime = 0;\n break;\n case AdEvent.Type.CONTENT_RESUME_REQUESTED:\n const adPlayedPreviously = Boolean(this.#currentAd);\n // synchronize ad volume state back to content\n // because IMA does not do that\n if (adPlayedPreviously) {\n const adVolume = this.#adsManager.getVolume();\n if (adVolume === 0) {\n this.#mediaElement.muted = true;\n } else {\n this.#mediaElement.muted = false;\n }\n this.#mediaElement.volume = this.#lastNonZeroAdVolume;\n }\n if (this.#customPlaybackTimeAdjustedOnEnded) {\n // Fixing the issue on iOS and postroll where we have to\n // adjust current time.\n // We jump back to the content end, so that \"ended\" is assigned again.\n this.#mediaElement.currentTime = this.#mediaElement.duration + 1;\n this.#customPlaybackTimeAdjustedOnEnded = false;\n }\n\n if (this.#mediaElement.ended) {\n // after postroll\n this.reset();\n this._mediaStop();\n } else {\n this._resetAd();\n }\n // only start playback when there previously was an ad\n // CONTENT_RESUME_REQUESTED also gets triggered when \"start\"\n // is not called on preroll when \"loadAds\" is used\n if (adPlayedPreviously) {\n this.#wasExternallyPaused = false;\n this._playContent();\n }\n break;\n case AdEvent.Type.AD_METADATA:\n this._setCuePoints(this.#adsManager.getCuePoints());\n if (this.#cuePoints.indexOf(0) === -1) {\n if (!this.#startAdCallback) {\n this._playContent();\n } else {\n this.#startAdCallback({\n start: () => {\n this._playContent();\n this.#startAdCallback = undefined;\n },\n startWithoutReset: () => {\n this._playContent();\n }\n });\n }\n }\n break;\n case AdEvent.Type.AD_PROGRESS:\n const adDataProgress = event.getAdData();\n this.#adCurrentTime = adDataProgress.currentTime;\n this.#adDuration = adDataProgress.duration;\n break;\n case AdEvent.Type.LOG:\n const adData = event.getAdData();\n // called when an error occurred in VMAP (e.g. empty preroll)\n if (this.#startAdCallback) {\n this.#startAdCallback({\n start: () => {\n this._playContent();\n this.#startAdCallback = undefined;\n },\n startWithoutReset: () => {\n this._playContent();\n }\n });\n } else if (adData.adError && !this.#currentAd) {\n this._playContent();\n }\n break;\n case AdEvent.Type.VOLUME_CHANGED:\n const currentVolume = this.#adsManager.getVolume();\n if (currentVolume > 0) {\n this.#lastNonZeroAdVolume = currentVolume;\n }\n break;\n }\n }\n\n private _onAdsLoaderError(event: google.ima.AdErrorEvent) {\n this._onAdError(this._createPlayerErrorFromImaErrorEvent(event));\n }\n\n private _onAdsManagerLoaded(loadedEvent: google.ima.AdsManagerLoadedEvent) {\n const {\n AdEvent,\n AdErrorEvent: {\n Type: { AD_ERROR }\n }\n } = this.#ima;\n window.clearTimeout(this.#adsManagerLoadedTimeout);\n const adsManager = (this.#adsManager = loadedEvent.getAdsManager(\n this.#customPlayhead,\n this.#adsRenderingSettings\n ));\n\n Object.keys(AdEvent.Type).forEach((imaEventName) => {\n adsManager.addEventListener(AdEvent.Type[imaEventName], (event) => {\n this._handleAdsManagerEvents(event);\n if (PlayerEvent[imaEventName]) {\n const isEventWithAdData =\n ['LOG', 'AD_PROGRESS'].indexOf(imaEventName) > -1;\n this.dispatchEvent(\n new CustomEvent(PlayerEvent[imaEventName], {\n detail: {\n ad: event.getAd() || this.#currentAd,\n adData: isEventWithAdData ? event.getAdData() : {}\n }\n })\n );\n }\n });\n });\n adsManager.addEventListener(AD_ERROR, (event) =>\n this._onAdError(this._createPlayerErrorFromImaErrorEvent(event))\n );\n\n // start ad playback\n try {\n adsManager.init(this.#width, this.#height, this._getViewMode());\n // initial sync of volume so that muted autoplay works\n adsManager.setVolume(\n this.#mediaElement.muted ? 0 : this.#mediaElement.volume\n );\n // ensure to initialize the ad container at least once before\n // starting it. For playback with sound it requires a synchronous\n // .activate()\n this.#adDisplayContainer?.initialize();\n if (!this.#startAdCallback) {\n this._startAdsManager();\n }\n } catch (adError) {\n this._onAdError(new PlayerError(adError.message));\n }\n }\n\n private _startAdsManager() {\n if (!this.#mediaStartTriggered) {\n this.dispatchEvent(new CustomEvent(PlayerEvent.MEDIA_START));\n this.#mediaStartTriggered = true;\n }\n if (this.#adsManager) {\n try {\n this.#adsManager.start();\n } catch (error) {\n this._onAdError(new PlayerError(error.message));\n }\n } else {\n this._playContent();\n }\n }\n\n private _mediaStop() {\n setTimeout(() => {\n this.#mediaImpressionTriggered = false;\n this.#mediaStartTriggered = false;\n this.#customPlaybackTimeAdjustedOnEnded = false;\n this.dispatchEvent(new CustomEvent(PlayerEvent.MEDIA_STOP));\n }, 1);\n }\n\n private _resizeObserverCallback(entries) {\n for (const entry of entries) {\n if (entry.contentBoxSize && entry.contentBoxSize.length === 1) {\n this.#width = entry.contentBoxSize[0].inlineSize;\n this.#height = entry.contentBoxSize[0].blockSize;\n } else if (entry.contentBoxSize && entry.contentBoxSize.inlineSize) {\n this.#width = entry.contentBoxSize.inlineSize;\n this.#height = entry.contentBoxSize.blockSize;\n } else {\n this.#width = entry.contentRect.width;\n this.#height = entry.contentRect.height;\n }\n }\n this._resizeAdsManager();\n }\n\n private _resizeAdsManager() {\n if (!this.#playerOptions.autoResize || !this.#adsManager) return;\n\n const ad = this.#currentAd;\n const viewMode = this._getViewMode();\n const isNonLinearAd = ad && !ad.isLinear();\n\n if (!isNonLinearAd) {\n this.resizeAd(this.#width, this.#height);\n } else if (ad) {\n if (ad.getWidth() > this.#width || ad.getHeight() > this.#height) {\n this.resizeAd(this.#width, this.#height);\n } else {\n // in case we won't add pixels in height here it triggers a VAST error\n // that there is not enough space to render the nonlinear ad\n // when \"useStyledNonLinearAds\" is given the height needs to be higher so\n // that the close button fits in\n this.#adsManager.resize(ad.getWidth(), ad.getHeight() + 20, viewMode);\n this.#adElement.style.width = `${ad.getWidth()}px`;\n this.#adElement.style.height = `${ad.getHeight() + 20}px`;\n }\n }\n }\n\n private _getViewMode() {\n if (\n document.fullscreenElement || // Standard syntax\n // @ts-ignore\n document.webkitFullscreenElement || // Chrome, Safari and Opera synta\n // @ts-ignore\n document.mozFullScreenElement || // Firefox syntax\n // @ts-ignore\n document.msFullscreenElement || // IE/Edge syntax\n // @ts-ignore\n this.#mediaElement.webkitDisplayingFullscreen // Video in fullscreen, e.g. Safari iOS\n ) {\n return this.#ima.ViewMode.FULLSCREEN;\n }\n return this.#ima.ViewMode.NORMAL;\n }\n\n private _playContent() {\n this.#adElement.style.display = 'none';\n\n if (!this.#mediaElement.ended) {\n this.#customPlayhead.enable();\n if (!this.#wasExternallyPaused) {\n this._mediaElementPlay()\n .then(() => {\n // empty\n })\n .catch(() => {\n // just in case we don't receive a \"pause\" event\n this.dispatchEvent(new CustomEvent('pause'));\n });\n this.dispatchEvent(new CustomEvent('play'));\n this.dispatchEvent(new CustomEvent(PlayerEvent.MEDIA_RESUMED));\n } else {\n this.#mediaElement.pause();\n // somehow the above \"pause()\" does not send out pause event\n this.dispatchEvent(new CustomEvent('pause'));\n }\n this.#wasExternallyPaused = false;\n }\n }\n\n private _createPlayerErrorFromImaErrorEvent(event: google.ima.AdErrorEvent) {\n const error = event.getError();\n const playerError = new PlayerError(error.getMessage());\n playerError.type = error.getType();\n playerError.errorCode = error.getErrorCode();\n playerError.vastErrorCode =\n error.getVastErrorCode && error.getVastErrorCode();\n playerError.innerError = error.getInnerError();\n return playerError;\n }\n\n private _onAdError(error: PlayerError) {\n this.dispatchEvent(\n new CustomEvent(PlayerEvent.AD_ERROR, {\n detail: { error }\n })\n );\n this._resetAd();\n if (this.#startAdCallback) {\n this.#startAdCallback({\n start: () => {\n this._playContent();\n this.#startAdCallback = undefined;\n },\n startWithoutReset: () => {\n this._playContent();\n }\n });\n } else {\n this._playContent();\n }\n }\n}\n","/**\n * Improved version of: https://developers.google.com/interactive-media-ads/docs/sdks/html5/ad-rules#known-issues-with-mobile-safari\n */\nexport class CustomPlayhead {\n #mediaElement?: HTMLVideoElement;\n #currentTime?: number;\n #enabled: boolean;\n seeking: boolean;\n\n constructor(mediaElement: HTMLVideoElement) {\n this.#mediaElement = mediaElement;\n this.#currentTime = 0;\n this.#enabled = false;\n this.seeking = false;\n this._onTimeupdate = this._onTimeupdate.bind(this);\n this._onSeeking = this._onSeeking.bind(this);\n this._onSeeked = this._onSeeked.bind(this);\n this.enable();\n }\n\n private _onSeeking() {\n this.seeking = true;\n }\n\n private _onSeeked() {\n this.seeking = false;\n }\n\n private _onTimeupdate() {\n if (!this.seeking && !this.#mediaElement?.paused) {\n this.#currentTime = this.#mediaElement?.currentTime;\n }\n }\n\n get enabled() {\n return this.#enabled;\n }\n\n enable() {\n if (this.#enabled) return;\n this.#mediaElement?.addEventListener('seeking', this._onSeeking);\n this.#mediaElement?.addEventListener('seeked', this._onSeeked);\n this.#mediaElement?.addEventListener('timeupdate', this._onTimeupdate);\n this.#enabled = true;\n }\n\n disable() {\n if (!this.#enabled) return;\n this.#mediaElement?.removeEventListener('seeking', this._onSeeking);\n this.#mediaElement?.removeEventListener('seeked', this._onSeeked);\n this.#mediaElement?.removeEventListener('timeupdate', this._onTimeupdate);\n this.#enabled = false;\n }\n\n get currentTime() {\n return this.#currentTime;\n }\n\n get duration() {\n return this.#mediaElement?.duration;\n }\n\n get muted() {\n return this.#mediaElement?.muted;\n }\n\n get volume() {\n return this.#mediaElement?.volume;\n }\n\n play() {\n return new Promise((resolve) => {\n resolve(this.#mediaElement?.play());\n });\n }\n\n pause() {\n this.#mediaElement?.pause();\n }\n\n reset() {\n this.#currentTime = 0;\n this.#enabled = false;\n this.seeking = false;\n this.enable();\n }\n\n destroy() {\n this.#currentTime = 0;\n this.#enabled = false;\n this.seeking = false;\n this.disable();\n this.#mediaElement = undefined;\n }\n}\n","export class DelegatedEventTarget implements EventTarget {\n\n private delegate = document.createDocumentFragment();\n\n addEventListener(...args: any): void {\n this.delegate.addEventListener.apply(this.delegate, args);\n }\n\n dispatchEvent(...args: any): boolean {\n return this.delegate.dispatchEvent.apply(this.delegate, args);\n }\n\n removeEventListener(...args: any): void {\n return this.delegate.removeEventListener.apply(this.delegate, args);\n }\n}\n","exports.interopDefault = function (a) {\n return a && a.__esModule ? a : {default: a};\n};\n\nexports.defineInteropFlag = function (a) {\n Object.defineProperty(a, '__esModule', {value: true});\n};\n\nexports.exportAll = function (source, dest) {\n Object.keys(source).forEach(function (key) {\n if (\n key === 'default' ||\n key === '__esModule' ||\n Object.prototype.hasOwnProperty.call(dest, key)\n ) {\n return;\n }\n\n Object.defineProperty(dest, key, {\n enumerable: true,\n get: function () {\n return source[key];\n },\n });\n });\n\n return dest;\n};\n\nexports.export = function (dest, destName, get) {\n Object.defineProperty(dest, destName, {\n enumerable: true,\n get: get,\n });\n};\n"],"names":["pendingPromise","promiseFinished","loadImaSdk","w","window","google","ima","Promise","resolve","reject","script","document","createElement","async","src","onload","onerror","body","appendChild","then","catch","self","CustomEvent","__p__","constructor","type","init","e","createEvent","initCustomEvent","bubbles","cancelable","detail","AdditionalMediaEvent","ImaToAdEventMap","CustomPlayhead","mediaElement","seeking","_classPrivateFieldLooseBase","this","_onTimeupdate","bind","_onSeeking","_onSeeked","enable","_classPrivateFieldLoo","paused","_classPrivateFieldLoo2","currentTime","addEventListener","disable","removeEventListener","play","_this","_classPrivateFieldLoo9","pause","reset","destroy","undefined","_classPrivateFieldLoo11","duration","_classPrivateFieldLoo12","muted","_classPrivateFieldLoo13","volume","DelegatedEventTarget","delegate","createDocumentFragment","apply","dispatchEvent","MEDIA_ELEMENT_EVENTS","PlayerEvent","PlayerOptions","disableCustomPlaybackForIOS10Plus","autoResize","clickTrackingElement","PlayerError","errorCode","innerError","vastErrorCode","Error","ERROR_CODE_ADS_MANAGER_LOADED_TIMEOUT","ERROR_CODE_REQUEST_ADS_TIMEOUT","Player","adElement","adsRenderingSettings","options","AdsRenderingSettings","_this2","restoreCustomPlaybackStateOnAdBreakComplete","hasAttribute","setAttribute","settings","setDisableCustomPlaybackForIOS10Plus","_handleMediaElementEvents","forEach","eventName","_onAdsManagerLoaded","_onAdsLoaderError","offsetHeight","offsetWidth","ResizeObserver","entries","_resizeObserverCallback","observe","activate","ready","_this3","setTimeout","playAds","adsRequest","_requestAds","loadAds","startAdCallback","_mediaElementPlay","_this4","autoPlayAdBreaks","_setupIma","setAutoPlayAdBreaks","ended","linearAdSlotWidth","linearAdSlotHeight","nonLinearAdSlotWidth","nonLinearAdSlotHeight","contentDuration","error","_this5","_onAdError","requestAds","AdsManagerLoadedEvent","Type","ADS_MANAGER_LOADED","AdErrorEvent","AD_ERROR","skipAd","skip","discardAdBreak","enabled","resume","_this6","_setCuePoints","cuePoints","MEDIA_CUE_POINTS_CHANGE","_adjustCuePoints","timeOffset","cuePointIndex","indexOf","splice","resizeAd","width","height","resize","_getViewMode","style","force","_resetAd","_resetIma","display","_this7","disconnect","isCustomPlaybackUsed","getDisableCustomPlaybackForIOS10Plus","querySelector","clearTimeout","classList","remove","_resizeAdsManager","event","cuePointToRemove","getCuePoints","filter","cuePoint","_this8","pop","MEDIA_IMPRESSION","MEDIA_START","contentComplete","_mediaStop","_handleAdsManagerEvents","AdEvent","LOADED","loadedAd","getAd","length","ad","start","_this9","_startAdsManager","startWithoutReset","AD_BREAK_READY","adBreakTime","getAdData","STARTED","getAdPodInfo","getAdPosition","setVolume","getVolume","isLinear","getDuration","add","_playContent","ALL_ADS_COMPLETED","Boolean","getTimeOffset","CONTENT_PAUSE_REQUESTED","CONTENT_RESUME_REQUESTED","adPlayedPreviously","adVolume","AD_METADATA","AD_PROGRESS","adDataProgress","LOG","adData","adError","VOLUME_CHANGED","currentVolume","_createPlayerErrorFromImaErrorEvent","loadedEvent","adsManager","getAdsManager","Object","keys","imaEventName","_this10","isEventWithAdData","initialize","message","_this11","MEDIA_STOP","entry","contentBoxSize","inlineSize","blockSize","contentRect","viewMode","getWidth","getHeight","fullscreenElement","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement","webkitDisplayingFullscreen","ViewMode","FULLSCREEN","NORMAL","_this12","MEDIA_RESUMED","getError","playerError","getMessage","getType","getErrorCode","getVastErrorCode","getInnerError","_this13"],"version":3,"file":"index.js.map","sourceRoot":"../../../"} \ No newline at end of file diff --git a/packages/artplayer-plugin-vast/src/index.js b/packages/artplayer-plugin-vast/src/index.js index d09220713..d747adf8e 100644 --- a/packages/artplayer-plugin-vast/src/index.js +++ b/packages/artplayer-plugin-vast/src/index.js @@ -23,31 +23,32 @@ export default function artplayerPluginVast(callback) { width: '100%', height: '100%', zIndex: '150', + display: 'none', }); - const player = new Player(ima, $video, $container, adsRenderingSettings, playerOptions); + const imaPlayer = new Player(ima, $video, $container, adsRenderingSettings, playerOptions); function playUrl(url) { const playAdsRequest = new ima.AdsRequest(); playAdsRequest.adTagUrl = url; - player.playAds(playAdsRequest); + imaPlayer.playAds(playAdsRequest); } function playRes(res) { const playAdsRequest = new ima.AdsRequest(); playAdsRequest.adsResponse = res; - player.playAds(playAdsRequest); + imaPlayer.playAds(playAdsRequest); } if (typeof callback === 'function') { - await callback({ art, id, ima, player, $container, playUrl, playRes }); + await callback({ art, id, ima, imaPlayer, $container, playUrl, playRes }); } return { name: 'artplayerPluginVast', id, ima, - player, + imaPlayer, $container, }; }; diff --git a/packages/artplayer-plugin-vast/types/artplayer-plugin-vast.d.ts b/packages/artplayer-plugin-vast/types/artplayer-plugin-vast.d.ts index e9d103174..82c2445a8 100644 --- a/packages/artplayer-plugin-vast/types/artplayer-plugin-vast.d.ts +++ b/packages/artplayer-plugin-vast/types/artplayer-plugin-vast.d.ts @@ -3,9 +3,15 @@ import type Artplayer from 'artplayer'; export = artplayerPluginVast; export as namespace artplayerPluginVast; -type Option = { - // -}; +type Option = (params: { + art: Artplayer; + id: string; + ima: any; + imaPlayer: any; + $container: HTMLDivElement; + playUrl: (url: string) => void; + playRes: (res: string) => void; +}) => void; type Result = { name: 'artplayerPluginVast';