@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
JavaScript
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
};