UNPKG

@slashedcloud/player

Version:

A media player application utilizing Shaka Player for adaptive video streaming, capable of playing HLS, MPD and plain HTTP video streams.

138 lines (137 loc) 4.95 kB
var w = Object.defineProperty; var R = Object.getOwnPropertySymbols; var D = Object.prototype.hasOwnProperty, M = Object.prototype.propertyIsEnumerable; var v = (a) => { throw TypeError(a); }; var h = (a, t, e) => t in a ? w(a, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : a[t] = e, m = (a, t) => { for (var e in t || (t = {})) D.call(t, e) && h(a, e, t[e]); if (R) for (var e of R(t)) M.call(t, e) && h(a, e, t[e]); return a; }; var p = (a, t, e) => h(a, typeof t != "symbol" ? t + "" : t, e), T = (a, t, e) => t.has(a) || v("Cannot " + e); var C = (a, t, e) => t.has(a) ? v("Cannot add the same private member more than once") : t instanceof WeakSet ? t.add(a) : t.set(a, e); var S = (a, t, e) => (T(a, t, "access private method"), e); var E = (a, t, e) => new Promise((i, r) => { var n = (s) => { try { d(e.next(s)); } catch (u) { r(u); } }, o = (s) => { try { d(e.throw(s)); } catch (u) { r(u); } }, d = (s) => s.done ? i(s.value) : Promise.resolve(s.value).then(n, o); d((e = e.apply(a, t)).next()); }); import b from "./Base.js"; import { l as P } from "../Common-B3lKdzU9.js"; import { P as A, S as c } from "../PlayerError-JebC7rsX.js"; import { s as l } from "../shaka-player.ui-CvkRFlcE.js"; /*! * SlashedCloud v0.1.2 (https://github.com/SlashedCloud/player#readme) * Copyright 2024-2024 rogerio.jardim@fedrax.pt * Licensed under Apache (https://github.com/SlashedCloud/player/blob/develop/LICENSE) */ const L = /* @__PURE__ */ new Map([ ["adStart", l.ads.AdManager.AD_STARTED], ["adComplete", l.ads.AdManager.AD_COMPLETE], ["adAllCompleted", l.ads.AdManager.ALL_ADS_COMPLETED], ["adClick", l.ads.AdManager.AD_CLICKED], ["adSkip", l.ads.AdManager.AD_SKIPPED], ["adError", l.ads.AdManager.AD_ERROR] ]); var g, y, f; class U extends b { /** * Creates an instance of AdsFeature. * @param {Player} player - The player instance. */ constructor(e, i) { super(e); C(this, g); p(this, "name", "AdsPlugin"); p(this, "loadIm3", null); p(this, "options"); p(this, "preventDoubleTrigger", []); this.options = i; } /** * Sets up the AdsFeature. * @throws {Error} - If the Google IMA SDK is not loaded or if the ad manager is not available. */ setup() { return E(this, null, function* () { if (this.options.adTagUrl && (this.loadIm3 = yield P("https://imasdk.googleapis.com/js/sdkloader/ima3.js")), !window.google || !window.google.ima) throw new A(this.name, c.ERROR, "IMA SDK Not Loaded.", { description: "The Google IMA SDK is required to display ads." }); if (!this.options.adTagUrl) throw new A(this.name, c.ERROR, "Ad Tag URL Not Available", { description: "An ad tag URL is required to display ads." }); google.ima.settings.setLocale(this.player.language); const e = this.player.basePlayer.getAdManager(); if (!e) throw new A(this.name, c.ERROR, "Ad Manager Not Available", { description: "The Ad Manager is currently unavailable." }); S(this, g, y).call(this, e), S(this, g, f).call(this, e); }); } // @ts-ignore requestClientSideAds(e, i) { e.requestClientSideAds(i); } } g = new WeakSet(), y = function(e) { return E(this, null, function* () { const i = this.player.controls.getClientSideAdContainer(); if (!i) throw new A(this.name, c.ERROR, "Ad Container Not Available", { description: "The client-side ad container is not available." }); e.initClientSide(i, this.player.videoElement, null); const r = new google.ima.AdsRequest(); r.adTagUrl = this.options.adTagUrl, r.setAdWillAutoPlay(!0), r.setAdWillPlayMuted(!0), this.player.videoElement.addEventListener("play", this.requestClientSideAds.bind(this, e, r), { once: !0 }); const n = new google.ima.AdsRenderingSettings(); n.restoreCustomPlaybackStateOnAdBreakComplete = !0, n.enablePreloading = !0, e.updateClientSideAdsRenderingSettings(n); }); }, /** * Adds event listeners for ads events. * @param {shaka.extern.IAdManager} adManager - The ad manager. * @returns {void} */ f = function(e) { for (const [i, r] of L) e.addEventListener(r, (n) => { const o = n.originalEvent, d = {}; switch (o.error && (d.error = m({}, o.error)), o.ad && (d.ad = m({}, o.ad)), i) { case "adStart": if (this.preventDoubleTrigger.includes("adStart")) return; this.preventDoubleTrigger.push(i); break; case "adComplete": case "adAllCompleted": case "adSkip": case "adError": const s = this.preventDoubleTrigger.indexOf("adStart"); s > -1 && this.preventDoubleTrigger.splice(s, 1); break; } this.player.emit(i, { originalEvent: d }); }); }; export { L as adManagerEventsMap, U as default };