stormcloud-video-player 0.8.60 → 0.8.62
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/stormcloud-vp.min.js +1 -1
- package/lib/Player.cjs.map +1 -1
- package/lib/StormcloudPlayer.cjs +83 -29
- package/lib/StormcloudPlayer.cjs.map +1 -1
- package/lib/index.cjs +87 -31
- package/lib/index.cjs.map +1 -1
- package/lib/index.d.ts +4034 -0
- package/lib/index.js +13001 -0
- package/lib/index.js.map +1 -0
- package/lib/patterns.cjs.map +1 -1
- package/lib/player/AdBreakOrchestrator.cjs +3 -2
- package/lib/player/AdBreakOrchestrator.cjs.map +1 -1
- package/lib/player/AdConfigManager.cjs +53 -11
- package/lib/player/AdConfigManager.cjs.map +1 -1
- package/lib/player/AdTimingService.cjs.map +1 -1
- package/lib/player/HlsEngine.cjs.map +1 -1
- package/lib/player/PlaceholderLayer.cjs.map +1 -1
- package/lib/player/PlayerControls.cjs.map +1 -1
- package/lib/player/Scte35CueManager.cjs.map +1 -1
- package/lib/player/Scte35Parser.cjs.map +1 -1
- package/lib/player/StormcloudVideoPlayer.cjs +83 -29
- package/lib/player/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/player/playerTypes.cjs.map +1 -1
- package/lib/players/FilePlayer.cjs.map +1 -1
- package/lib/players/HlsPlayer.cjs +83 -29
- package/lib/players/HlsPlayer.cjs.map +1 -1
- package/lib/players/index.cjs +83 -29
- package/lib/players/index.cjs.map +1 -1
- package/lib/props.cjs.map +1 -1
- package/lib/sdk/hlsAdPlayer.cjs.map +1 -1
- package/lib/sdk/pal.cjs +9 -5
- package/lib/sdk/pal.cjs.map +1 -1
- package/lib/sdk/pal.d.cts +1 -0
- package/lib/types.cjs.map +1 -1
- package/lib/types.d.cts +1 -0
- package/lib/ui/StormcloudVideoPlayer.cjs +87 -31
- package/lib/ui/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/utils/browserCompat.cjs.map +1 -1
- package/lib/utils/ctvVastSignals.cjs +25 -4
- package/lib/utils/ctvVastSignals.cjs.map +1 -1
- package/lib/utils/devUrl.cjs.map +1 -1
- package/lib/utils/polyfills.cjs.map +1 -1
- package/lib/utils/tracking.cjs +3 -2
- package/lib/utils/tracking.cjs.map +1 -1
- package/lib/utils/trackingIngest.cjs.map +1 -1
- package/lib/utils/vastEnvironmentSignals.cjs +27 -5
- package/lib/utils/vastEnvironmentSignals.cjs.map +1 -1
- package/lib/utils/vastEnvironmentSignals.d.cts +1 -1
- package/lib/utils/vastMacros.cjs +24 -4
- package/lib/utils/vastMacros.cjs.map +1 -1
- package/lib/utils/vastMacros.d.cts +2 -0
- package/lib/utils/vastTrackingMacros.cjs.map +1 -1
- package/lib/utils.cjs.map +1 -1
- package/package.json +5 -3
package/lib/sdk/pal.cjs
CHANGED
|
@@ -220,6 +220,7 @@ function toDevSafeUrl(rawUrl) {
|
|
|
220
220
|
// src/sdk/pal.ts
|
|
221
221
|
var PAL_SDK_URL = "https://imasdk.googleapis.com/pal/sdkloader/pal.js";
|
|
222
222
|
var _nonceLoader;
|
|
223
|
+
var _nonceLoaderAllowStorage;
|
|
223
224
|
var _palLoadPromise;
|
|
224
225
|
function loadPalSdk() {
|
|
225
226
|
var _window_goog;
|
|
@@ -262,12 +263,15 @@ function loadPalSdk() {
|
|
|
262
263
|
});
|
|
263
264
|
return _palLoadPromise;
|
|
264
265
|
}
|
|
265
|
-
function getOrCreateNonceLoader() {
|
|
266
|
-
if (_nonceLoader)
|
|
266
|
+
function getOrCreateNonceLoader(allowStorage) {
|
|
267
|
+
if (_nonceLoader && _nonceLoaderAllowStorage === allowStorage) {
|
|
268
|
+
return _nonceLoader;
|
|
269
|
+
}
|
|
267
270
|
var goog = window.goog;
|
|
268
271
|
var consentSettings = new goog.pal.ConsentSettings();
|
|
269
|
-
consentSettings.allowStorage =
|
|
272
|
+
consentSettings.allowStorage = allowStorage;
|
|
270
273
|
_nonceLoader = new goog.pal.NonceLoader(consentSettings);
|
|
274
|
+
_nonceLoaderAllowStorage = allowStorage;
|
|
271
275
|
return _nonceLoader;
|
|
272
276
|
}
|
|
273
277
|
function createPalNonceManager() {
|
|
@@ -276,7 +280,7 @@ function createPalNonceManager() {
|
|
|
276
280
|
return {
|
|
277
281
|
generateNonce: function generateNonce() {
|
|
278
282
|
return _async_to_generator(function() {
|
|
279
|
-
var options, _options_adWillAutoPlay, _options_adWillPlayMuted, _options_playerVolume, _options_continuousPlayback, loader, goog, request, manager, error;
|
|
283
|
+
var options, _options_allowStorage, _options_adWillAutoPlay, _options_adWillPlayMuted, _options_playerVolume, _options_continuousPlayback, loader, goog, request, manager, error;
|
|
280
284
|
var _arguments = arguments;
|
|
281
285
|
return _ts_generator(this, function(_state) {
|
|
282
286
|
switch(_state.label){
|
|
@@ -296,7 +300,7 @@ function createPalNonceManager() {
|
|
|
296
300
|
];
|
|
297
301
|
case 2:
|
|
298
302
|
_state.sent();
|
|
299
|
-
loader = getOrCreateNonceLoader();
|
|
303
|
+
loader = getOrCreateNonceLoader((_options_allowStorage = options.allowStorage) !== null && _options_allowStorage !== void 0 ? _options_allowStorage : true);
|
|
300
304
|
goog = window.goog;
|
|
301
305
|
request = new goog.pal.NonceRequest();
|
|
302
306
|
request.adWillAutoPlay = (_options_adWillAutoPlay = options.adWillAutoPlay) !== null && _options_adWillAutoPlay !== void 0 ? _options_adWillAutoPlay : true;
|
package/lib/sdk/pal.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["d:\\project\\stormcloud-vp\\lib\\sdk\\pal.cjs"],"names":[],"mappings":"AAAA","sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/sdk/pal.ts\nvar pal_exports = {};\n__export(pal_exports, {\n createPalNonceManager: () => createPalNonceManager\n});\nmodule.exports = __toCommonJS(pal_exports);\n\n// src/utils/devUrl.ts\nvar PRIVATE_HOST_PATTERNS = [\n /^localhost$/i,\n /^127\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/,\n /^0\\.0\\.0\\.0$/,\n /^::1$/,\n /^10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/,\n /^192\\.168\\.\\d{1,3}\\.\\d{1,3}$/,\n /^172\\.(1[6-9]|2\\d|3[0-1])\\.\\d{1,3}\\.\\d{1,3}$/\n];\nfunction isLocalDevHost(hostname) {\n const host = hostname.replace(/^\\[/, \"\").replace(/\\]$/, \"\").toLowerCase();\n if (!host) return false;\n if (host.endsWith(\".local\") || host.endsWith(\".localhost\")) return true;\n return PRIVATE_HOST_PATTERNS.some((pattern) => pattern.test(host));\n}\nfunction toDevSafeUrl(rawUrl) {\n if (!rawUrl) return rawUrl ?? \"\";\n let url;\n try {\n url = new URL(rawUrl);\n } catch {\n return rawUrl;\n }\n if (url.protocol !== \"http:\" && url.protocol !== \"https:\") {\n return rawUrl;\n }\n if (!isLocalDevHost(url.hostname)) {\n return rawUrl;\n }\n const cleanPath = url.pathname.replace(/\\/{2,}/g, \"/\") || \"/index.html\";\n return `file://${cleanPath}`;\n}\n\n// src/sdk/pal.ts\nvar PAL_SDK_URL = \"https://imasdk.googleapis.com/pal/sdkloader/pal.js\";\nvar _nonceLoader;\nvar _palLoadPromise;\nfunction loadPalSdk() {\n if (typeof window !== \"undefined\" && window.goog?.pal) {\n return Promise.resolve();\n }\n if (_palLoadPromise) return _palLoadPromise;\n _palLoadPromise = new Promise((resolve, reject) => {\n const existing = document.querySelector(\n 'script[data-pal=\"true\"]'\n );\n if (existing) {\n if (window.goog?.pal) {\n resolve();\n return;\n }\n const timeout = setTimeout(\n () => reject(new Error(\"PAL SDK load timeout\")),\n 1e4\n );\n existing.addEventListener(\"load\", () => {\n clearTimeout(timeout);\n resolve();\n });\n existing.addEventListener(\"error\", () => {\n clearTimeout(timeout);\n reject(new Error(\"PAL SDK load failed\"));\n });\n return;\n }\n const script = document.createElement(\"script\");\n script.src = PAL_SDK_URL;\n script.async = true;\n script.setAttribute(\"data-pal\", \"true\");\n script.onload = () => resolve();\n script.onerror = () => reject(new Error(\"PAL SDK load failed\"));\n document.head.appendChild(script);\n });\n return _palLoadPromise;\n}\nfunction getOrCreateNonceLoader() {\n if (_nonceLoader) return _nonceLoader;\n const goog = window.goog;\n const consentSettings = new goog.pal.ConsentSettings();\n consentSettings.allowStorage = true;\n _nonceLoader = new goog.pal.NonceLoader(consentSettings);\n return _nonceLoader;\n}\nfunction createPalNonceManager() {\n let currentNonce = \"\";\n let currentNonceManager;\n return {\n async generateNonce(options = {}) {\n try {\n await loadPalSdk();\n const loader = getOrCreateNonceLoader();\n const goog = window.goog;\n const request = new goog.pal.NonceRequest();\n request.adWillAutoPlay = options.adWillAutoPlay ?? true;\n request.adWillPlayMuted = options.adWillPlayMuted ?? false;\n request.playerVolume = options.playerVolume ?? (request.adWillPlayMuted ? 0 : 1);\n request.continuousPlayback = options.continuousPlayback ?? true;\n request.descriptionUrl = toDevSafeUrl(\n options.descriptionUrl || (typeof window !== \"undefined\" ? window.location.href : \"\")\n );\n request.iconsSupported = true;\n request.playerType = \"StormcloudVideoPlayer\";\n request.playerVersion = \"1.0\";\n request.supportedApiFrameworks = \"2,7,9\";\n request.url = toDevSafeUrl(\n options.descriptionUrl || (typeof window !== \"undefined\" ? window.location.href : \"\")\n );\n request.videoWidth = options.videoWidth || 640;\n request.videoHeight = options.videoHeight || 480;\n if (options.ppid) request.ppid = options.ppid;\n if (options.sessionId) request.sessionId = options.sessionId;\n console.log(\n \"[PAL] NonceRequest before generateNonce:\",\n JSON.stringify({\n adWillAutoPlay: request.adWillAutoPlay,\n adWillPlayMuted: request.adWillPlayMuted,\n playerVolume: request.playerVolume,\n continuousPlayback: request.continuousPlayback,\n descriptionUrl: request.descriptionUrl,\n iconsSupported: request.iconsSupported,\n playerType: request.playerType,\n playerVersion: request.playerVersion,\n supportedApiFrameworks: request.supportedApiFrameworks,\n url: request.url,\n videoWidth: request.videoWidth,\n videoHeight: request.videoHeight,\n ppid: request.ppid,\n sessionId: request.sessionId\n }, null, 2)\n );\n const manager = await loader.loadNonceManager(request);\n currentNonceManager = manager;\n currentNonce = manager.getNonce();\n console.log(\"[PAL] Nonce generated successfully\");\n return currentNonce;\n } catch (error) {\n console.warn(\"[PAL] Failed to generate nonce:\", error);\n currentNonce = \"\";\n currentNonceManager = void 0;\n return \"\";\n }\n },\n getCurrentNonce() {\n return currentNonce;\n },\n injectNonce(vastTagUrl) {\n if (!currentNonce || !vastTagUrl) return vastTagUrl;\n try {\n const url = new URL(vastTagUrl);\n url.searchParams.delete(\"paln\");\n url.searchParams.set(\"givn\", currentNonce);\n return url.toString();\n } catch {\n let base = vastTagUrl.replace(/([?&])paln=[^&]*/g, \"\").replace(/[?&]$/, \"\");\n const sep = base.includes(\"?\") ? \"&\" : \"?\";\n return `${base}${sep}givn=${encodeURIComponent(currentNonce)}`;\n }\n },\n sendPlaybackStart() {\n try {\n currentNonceManager?.sendPlaybackStart();\n } catch {\n }\n },\n sendPlaybackEnd() {\n try {\n currentNonceManager?.sendPlaybackEnd();\n } catch {\n }\n },\n sendAdClick() {\n try {\n currentNonceManager?.sendAdClick();\n } catch {\n }\n },\n sendAdTouch(event) {\n try {\n currentNonceManager?.sendAdTouch(event);\n } catch {\n }\n },\n reset() {\n currentNonce = \"\";\n currentNonceManager = void 0;\n }\n };\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n createPalNonceManager\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["d:\\project\\stormcloud-vp\\lib\\sdk\\pal.cjs"],"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","pal_exports","createPalNonceManager","module","exports","PRIVATE_HOST_PATTERNS","isLocalDevHost","hostname","host","replace","toLowerCase","endsWith","some","pattern","test","toDevSafeUrl","rawUrl","url","URL","protocol","cleanPath","pathname","PAL_SDK_URL","_nonceLoader","_nonceLoaderAllowStorage","_palLoadPromise","loadPalSdk","window","goog","pal","Promise","resolve","reject","existing","document","querySelector","timeout","setTimeout","Error","addEventListener","clearTimeout","script","createElement","src","async","setAttribute","onload","onerror","head","appendChild","getOrCreateNonceLoader","allowStorage","consentSettings","ConsentSettings","NonceLoader","currentNonce","currentNonceManager","generateNonce","options","loader","request","manager","error","NonceRequest","adWillAutoPlay","adWillPlayMuted","playerVolume","continuousPlayback","descriptionUrl","location","href","iconsSupported","playerType","playerVersion","supportedApiFrameworks","videoWidth","videoHeight","ppid","sessionId","console","log","JSON","stringify","loadNonceManager","getNonce","warn","getCurrentNonce","injectNonce","vastTagUrl","searchParams","delete","set","toString","base","sep","includes","encodeURIComponent","sendPlaybackStart","sendPlaybackEnd","sendAdClick","sendAdTouch","event","reset"],"mappings":"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","sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/sdk/pal.ts\nvar pal_exports = {};\n__export(pal_exports, {\n createPalNonceManager: () => createPalNonceManager\n});\nmodule.exports = __toCommonJS(pal_exports);\n\n// src/utils/devUrl.ts\nvar PRIVATE_HOST_PATTERNS = [\n /^localhost$/i,\n /^127\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/,\n /^0\\.0\\.0\\.0$/,\n /^::1$/,\n /^10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/,\n /^192\\.168\\.\\d{1,3}\\.\\d{1,3}$/,\n /^172\\.(1[6-9]|2\\d|3[0-1])\\.\\d{1,3}\\.\\d{1,3}$/\n];\nfunction isLocalDevHost(hostname) {\n const host = hostname.replace(/^\\[/, \"\").replace(/\\]$/, \"\").toLowerCase();\n if (!host) return false;\n if (host.endsWith(\".local\") || host.endsWith(\".localhost\")) return true;\n return PRIVATE_HOST_PATTERNS.some((pattern) => pattern.test(host));\n}\nfunction toDevSafeUrl(rawUrl) {\n if (!rawUrl) return rawUrl ?? \"\";\n let url;\n try {\n url = new URL(rawUrl);\n } catch {\n return rawUrl;\n }\n if (url.protocol !== \"http:\" && url.protocol !== \"https:\") {\n return rawUrl;\n }\n if (!isLocalDevHost(url.hostname)) {\n return rawUrl;\n }\n const cleanPath = url.pathname.replace(/\\/{2,}/g, \"/\") || \"/index.html\";\n return `file://${cleanPath}`;\n}\n\n// src/sdk/pal.ts\nvar PAL_SDK_URL = \"https://imasdk.googleapis.com/pal/sdkloader/pal.js\";\nvar _nonceLoader;\nvar _nonceLoaderAllowStorage;\nvar _palLoadPromise;\nfunction loadPalSdk() {\n if (typeof window !== \"undefined\" && window.goog?.pal) {\n return Promise.resolve();\n }\n if (_palLoadPromise) return _palLoadPromise;\n _palLoadPromise = new Promise((resolve, reject) => {\n const existing = document.querySelector(\n 'script[data-pal=\"true\"]'\n );\n if (existing) {\n if (window.goog?.pal) {\n resolve();\n return;\n }\n const timeout = setTimeout(\n () => reject(new Error(\"PAL SDK load timeout\")),\n 1e4\n );\n existing.addEventListener(\"load\", () => {\n clearTimeout(timeout);\n resolve();\n });\n existing.addEventListener(\"error\", () => {\n clearTimeout(timeout);\n reject(new Error(\"PAL SDK load failed\"));\n });\n return;\n }\n const script = document.createElement(\"script\");\n script.src = PAL_SDK_URL;\n script.async = true;\n script.setAttribute(\"data-pal\", \"true\");\n script.onload = () => resolve();\n script.onerror = () => reject(new Error(\"PAL SDK load failed\"));\n document.head.appendChild(script);\n });\n return _palLoadPromise;\n}\nfunction getOrCreateNonceLoader(allowStorage) {\n if (_nonceLoader && _nonceLoaderAllowStorage === allowStorage) {\n return _nonceLoader;\n }\n const goog = window.goog;\n const consentSettings = new goog.pal.ConsentSettings();\n consentSettings.allowStorage = allowStorage;\n _nonceLoader = new goog.pal.NonceLoader(consentSettings);\n _nonceLoaderAllowStorage = allowStorage;\n return _nonceLoader;\n}\nfunction createPalNonceManager() {\n let currentNonce = \"\";\n let currentNonceManager;\n return {\n async generateNonce(options = {}) {\n try {\n await loadPalSdk();\n const loader = getOrCreateNonceLoader(options.allowStorage ?? true);\n const goog = window.goog;\n const request = new goog.pal.NonceRequest();\n request.adWillAutoPlay = options.adWillAutoPlay ?? true;\n request.adWillPlayMuted = options.adWillPlayMuted ?? false;\n request.playerVolume = options.playerVolume ?? (request.adWillPlayMuted ? 0 : 1);\n request.continuousPlayback = options.continuousPlayback ?? true;\n request.descriptionUrl = toDevSafeUrl(\n options.descriptionUrl || (typeof window !== \"undefined\" ? window.location.href : \"\")\n );\n request.iconsSupported = true;\n request.playerType = \"StormcloudVideoPlayer\";\n request.playerVersion = \"1.0\";\n request.supportedApiFrameworks = \"2,7,9\";\n request.url = toDevSafeUrl(\n options.descriptionUrl || (typeof window !== \"undefined\" ? window.location.href : \"\")\n );\n request.videoWidth = options.videoWidth || 640;\n request.videoHeight = options.videoHeight || 480;\n if (options.ppid) request.ppid = options.ppid;\n if (options.sessionId) request.sessionId = options.sessionId;\n console.log(\n \"[PAL] NonceRequest before generateNonce:\",\n JSON.stringify({\n adWillAutoPlay: request.adWillAutoPlay,\n adWillPlayMuted: request.adWillPlayMuted,\n playerVolume: request.playerVolume,\n continuousPlayback: request.continuousPlayback,\n descriptionUrl: request.descriptionUrl,\n iconsSupported: request.iconsSupported,\n playerType: request.playerType,\n playerVersion: request.playerVersion,\n supportedApiFrameworks: request.supportedApiFrameworks,\n url: request.url,\n videoWidth: request.videoWidth,\n videoHeight: request.videoHeight,\n ppid: request.ppid,\n sessionId: request.sessionId\n }, null, 2)\n );\n const manager = await loader.loadNonceManager(request);\n currentNonceManager = manager;\n currentNonce = manager.getNonce();\n console.log(\"[PAL] Nonce generated successfully\");\n return currentNonce;\n } catch (error) {\n console.warn(\"[PAL] Failed to generate nonce:\", error);\n currentNonce = \"\";\n currentNonceManager = void 0;\n return \"\";\n }\n },\n getCurrentNonce() {\n return currentNonce;\n },\n injectNonce(vastTagUrl) {\n if (!currentNonce || !vastTagUrl) return vastTagUrl;\n try {\n const url = new URL(vastTagUrl);\n url.searchParams.delete(\"paln\");\n url.searchParams.set(\"givn\", currentNonce);\n return url.toString();\n } catch {\n let base = vastTagUrl.replace(/([?&])paln=[^&]*/g, \"\").replace(/[?&]$/, \"\");\n const sep = base.includes(\"?\") ? \"&\" : \"?\";\n return `${base}${sep}givn=${encodeURIComponent(currentNonce)}`;\n }\n },\n sendPlaybackStart() {\n try {\n currentNonceManager?.sendPlaybackStart();\n } catch {\n }\n },\n sendPlaybackEnd() {\n try {\n currentNonceManager?.sendPlaybackEnd();\n } catch {\n }\n },\n sendAdClick() {\n try {\n currentNonceManager?.sendAdClick();\n } catch {\n }\n },\n sendAdTouch(event) {\n try {\n currentNonceManager?.sendAdTouch(event);\n } catch {\n }\n },\n reset() {\n currentNonce = \"\";\n currentNonceManager = void 0;\n }\n };\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n createPalNonceManager\n});\n"]}
|
package/lib/sdk/pal.d.cts
CHANGED
package/lib/types.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["d:\\project\\stormcloud-vp\\lib\\types.cjs"],"names":["__defProp","Object","defineProperty"],"mappings":"AAAA
|
|
1
|
+
{"version":3,"sources":["d:\\project\\stormcloud-vp\\lib\\types.cjs"],"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__copyProps","to","from","except","desc","key","call","get","enumerable","__toCommonJS","mod","value","types_exports","module","exports"],"mappings":"AAAA;;;;;AACA,IAAIA,YAAYC,OAAOC,cAAc;AACrC,IAAIC,mBAAmBF,OAAOG,wBAAwB;AACtD,IAAIC,oBAAoBJ,OAAOK,mBAAmB;AAClD,IAAIC,eAAeN,OAAOO,SAAS,CAACC,cAAc;AAClD,IAAIC,cAAc,qBAACC,IAAIC,MAAMC,QAAQC;IACnC,IAAIF,QAAQ,CAAA,OAAOA,qCAAP,SAAOA,KAAG,MAAM,YAAY,OAAOA,SAAS,YAAY;YAC7D,kCAAA,2BAAA;;;gBAAA,IAAIG,MAAJ;gBACH,IAAI,CAACR,aAAaS,IAAI,CAACL,IAAII,QAAQA,QAAQF,QACzCb,UAAUW,IAAII,KAAK;oBAAEE,KAAK,SAALA;+BAAWL,IAAI,CAACG,IAAI;;oBAAEG,YAAY,CAAEJ,CAAAA,OAAOX,iBAAiBS,MAAMG,IAAG,KAAMD,KAAKI,UAAU;gBAAC;;YAFpH,QAAK,YAAWb,kBAAkBO,0BAA7B,SAAA,6BAAA,QAAA,yBAAA;;YAAA;YAAA;;;qBAAA,6BAAA;oBAAA;;;oBAAA;0BAAA;;;;IAGP;IACA,OAAOD;AACT;AACA,IAAIQ,eAAe,sBAACC;WAAQV,YAAYV,UAAU,CAAC,GAAG,cAAc;QAAEqB,OAAO;IAAK,IAAID;;AAEtF,eAAe;AACf,IAAIE,gBAAgB,CAAC;AACrBC,OAAOC,OAAO,GAAGL,aAAaG","sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/types.ts\nvar types_exports = {};\nmodule.exports = __toCommonJS(types_exports);\n"]}
|
package/lib/types.d.cts
CHANGED
|
@@ -2852,6 +2852,7 @@ function toDevSafeUrl(rawUrl) {
|
|
|
2852
2852
|
// src/sdk/pal.ts
|
|
2853
2853
|
var PAL_SDK_URL = "https://imasdk.googleapis.com/pal/sdkloader/pal.js";
|
|
2854
2854
|
var _nonceLoader;
|
|
2855
|
+
var _nonceLoaderAllowStorage;
|
|
2855
2856
|
var _palLoadPromise;
|
|
2856
2857
|
function loadPalSdk() {
|
|
2857
2858
|
var _window_goog;
|
|
@@ -2894,12 +2895,15 @@ function loadPalSdk() {
|
|
|
2894
2895
|
});
|
|
2895
2896
|
return _palLoadPromise;
|
|
2896
2897
|
}
|
|
2897
|
-
function getOrCreateNonceLoader() {
|
|
2898
|
-
if (_nonceLoader)
|
|
2898
|
+
function getOrCreateNonceLoader(allowStorage) {
|
|
2899
|
+
if (_nonceLoader && _nonceLoaderAllowStorage === allowStorage) {
|
|
2900
|
+
return _nonceLoader;
|
|
2901
|
+
}
|
|
2899
2902
|
var goog = window.goog;
|
|
2900
2903
|
var consentSettings = new goog.pal.ConsentSettings();
|
|
2901
|
-
consentSettings.allowStorage =
|
|
2904
|
+
consentSettings.allowStorage = allowStorage;
|
|
2902
2905
|
_nonceLoader = new goog.pal.NonceLoader(consentSettings);
|
|
2906
|
+
_nonceLoaderAllowStorage = allowStorage;
|
|
2903
2907
|
return _nonceLoader;
|
|
2904
2908
|
}
|
|
2905
2909
|
function createPalNonceManager() {
|
|
@@ -2908,7 +2912,7 @@ function createPalNonceManager() {
|
|
|
2908
2912
|
return {
|
|
2909
2913
|
generateNonce: function generateNonce() {
|
|
2910
2914
|
return _async_to_generator(function() {
|
|
2911
|
-
var options, _options_adWillAutoPlay, _options_adWillPlayMuted, _options_playerVolume, _options_continuousPlayback, loader, goog, request, manager, error;
|
|
2915
|
+
var options, _options_allowStorage, _options_adWillAutoPlay, _options_adWillPlayMuted, _options_playerVolume, _options_continuousPlayback, loader, goog, request, manager, error;
|
|
2912
2916
|
var _arguments = arguments;
|
|
2913
2917
|
return _ts_generator(this, function(_state) {
|
|
2914
2918
|
switch(_state.label){
|
|
@@ -2928,7 +2932,7 @@ function createPalNonceManager() {
|
|
|
2928
2932
|
];
|
|
2929
2933
|
case 2:
|
|
2930
2934
|
_state.sent();
|
|
2931
|
-
loader = getOrCreateNonceLoader();
|
|
2935
|
+
loader = getOrCreateNonceLoader((_options_allowStorage = options.allowStorage) !== null && _options_allowStorage !== void 0 ? _options_allowStorage : true);
|
|
2932
2936
|
goog = window.goog;
|
|
2933
2937
|
request = new goog.pal.NonceRequest();
|
|
2934
2938
|
request.adWillAutoPlay = (_options_adWillAutoPlay = options.adWillAutoPlay) !== null && _options_adWillAutoPlay !== void 0 ? _options_adWillAutoPlay : true;
|
|
@@ -3113,6 +3117,8 @@ function ingestPlayerTracking(licenseKey, channel, body) {
|
|
|
3113
3117
|
}
|
|
3114
3118
|
// src/utils/vastEnvironmentSignals.ts
|
|
3115
3119
|
var CTV_SESSION_STORAGE_KEY = "stormcloud.ctv.sid";
|
|
3120
|
+
var WEB_SESSION_STORAGE_KEY = "stormcloud.web.sid";
|
|
3121
|
+
var inMemoryWebSessionId;
|
|
3116
3122
|
var PLAYER_ID_STORAGE_KEY = "stormcloud.player.id";
|
|
3117
3123
|
var DEVICE_ID_STORAGE_KEYS = [
|
|
3118
3124
|
"rdid",
|
|
@@ -3134,7 +3140,7 @@ function resolveVastEnvironmentSignals(isCtv) {
|
|
|
3134
3140
|
var _ref;
|
|
3135
3141
|
var bridgeSignals = readNativeBridgeSignals();
|
|
3136
3142
|
var platformDevice = readPlatformNativeDeviceId();
|
|
3137
|
-
var realDeviceId = bridgeSignals.deviceId || readStoredDeviceId() || platformDevice.deviceId;
|
|
3143
|
+
var realDeviceId = bridgeSignals.deviceId || (isCtv ? readStoredDeviceId() : void 0) || platformDevice.deviceId;
|
|
3138
3144
|
var deviceId = realDeviceId;
|
|
3139
3145
|
var deviceIdType = bridgeSignals.deviceIdType || readStoredString("deviceIdType") || readStoredString("idtype") || platformDevice.deviceIdType || inferDeviceIdType();
|
|
3140
3146
|
var platformLat = bridgeSignals.deviceId ? bridgeSignals.limitAdTracking : platformDevice.limitAdTracking;
|
|
@@ -3163,9 +3169,12 @@ function resolveVastEnvironmentSignals(isCtv) {
|
|
|
3163
3169
|
deviceTypeHint: deviceTypeHint
|
|
3164
3170
|
});
|
|
3165
3171
|
}
|
|
3172
|
+
var webSessionId = getOrCreateWebSessionId();
|
|
3166
3173
|
return _object_spread_props(_object_spread({
|
|
3167
3174
|
isCtv: false
|
|
3168
|
-
},
|
|
3175
|
+
}, webSessionId ? {
|
|
3176
|
+
sessionId: webSessionId
|
|
3177
|
+
} : {}, deviceId ? {
|
|
3169
3178
|
deviceId: deviceId
|
|
3170
3179
|
} : {}, deviceId && deviceIdType ? {
|
|
3171
3180
|
deviceIdType: deviceIdType
|
|
@@ -3206,7 +3215,7 @@ var GAME_CONSOLE_UA = /PlayStation|Xbox|Nintendo/i;
|
|
|
3206
3215
|
var CONNECTED_TV_UA = /Web0S|webOS|Tizen|SMART-TV|SmartTV|NetCast|BRAVIA|HbbTV|VIDAA|Hisense|Philips|Viera|AQUOS|Android TV|Google TV|\bTV\b/i;
|
|
3207
3216
|
var FEATURE_PHONE_UA = /KAIOS|MIDP|J2ME|Series40|Opera Mini/i;
|
|
3208
3217
|
function resolveDeviceTypeHint(isCtv) {
|
|
3209
|
-
var override = readDeviceTypeHintOverride();
|
|
3218
|
+
var override = readDeviceTypeHintOverride(isCtv);
|
|
3210
3219
|
if (override != null) return override;
|
|
3211
3220
|
return inferDeviceTypeHint(isCtv);
|
|
3212
3221
|
}
|
|
@@ -3233,7 +3242,7 @@ function inferDeviceTypeHint(isCtv) {
|
|
|
3233
3242
|
if (/Mobile|Windows Phone|BlackBerry/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;
|
|
3234
3243
|
return fallback;
|
|
3235
3244
|
}
|
|
3236
|
-
function readDeviceTypeHintOverride() {
|
|
3245
|
+
function readDeviceTypeHintOverride(isCtv) {
|
|
3237
3246
|
if (typeof window === "undefined") return void 0;
|
|
3238
3247
|
var keys = [
|
|
3239
3248
|
"dth",
|
|
@@ -3282,6 +3291,7 @@ function readDeviceTypeHintOverride() {
|
|
|
3282
3291
|
}
|
|
3283
3292
|
}
|
|
3284
3293
|
}
|
|
3294
|
+
if (!isCtv) return void 0;
|
|
3285
3295
|
for(var _i = 0, _iter = [
|
|
3286
3296
|
"stormcloud.dth",
|
|
3287
3297
|
"dth"
|
|
@@ -3330,9 +3340,10 @@ function isEquivalentDeviceIdType(tagType, runtimeType) {
|
|
|
3330
3340
|
return ANDROID_ID_TYPES.has(tag) && ANDROID_ID_TYPES.has(runtime);
|
|
3331
3341
|
}
|
|
3332
3342
|
function resolveNativeDeviceId() {
|
|
3343
|
+
var includeStored = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : true;
|
|
3333
3344
|
var bridgeSignals = readNativeBridgeSignals();
|
|
3334
3345
|
var platformDevice = readPlatformNativeDeviceId();
|
|
3335
|
-
var deviceId = bridgeSignals.deviceId || readStoredDeviceId() || platformDevice.deviceId;
|
|
3346
|
+
var deviceId = bridgeSignals.deviceId || (includeStored ? readStoredDeviceId() : void 0) || platformDevice.deviceId;
|
|
3336
3347
|
if (!deviceId || isMacroPlaceholder(deviceId) || isZeroedAdId(deviceId)) {
|
|
3337
3348
|
return void 0;
|
|
3338
3349
|
}
|
|
@@ -3361,6 +3372,21 @@ function getOrCreateCtvSessionId() {
|
|
|
3361
3372
|
writePersistentId(CTV_SESSION_STORAGE_KEY, sessionId);
|
|
3362
3373
|
return sessionId;
|
|
3363
3374
|
}
|
|
3375
|
+
function getOrCreateWebSessionId() {
|
|
3376
|
+
if (typeof window === "undefined") return void 0;
|
|
3377
|
+
try {
|
|
3378
|
+
var _window_sessionStorage;
|
|
3379
|
+
var existing = (_window_sessionStorage = window.sessionStorage) === null || _window_sessionStorage === void 0 ? void 0 : _window_sessionStorage.getItem(WEB_SESSION_STORAGE_KEY);
|
|
3380
|
+
if (existing && !isMacroPlaceholder(existing)) return existing;
|
|
3381
|
+
} catch (unused) {}
|
|
3382
|
+
var sessionId = inMemoryWebSessionId || createUuid();
|
|
3383
|
+
inMemoryWebSessionId = sessionId;
|
|
3384
|
+
try {
|
|
3385
|
+
var _window_sessionStorage1;
|
|
3386
|
+
(_window_sessionStorage1 = window.sessionStorage) === null || _window_sessionStorage1 === void 0 ? void 0 : _window_sessionStorage1.setItem(WEB_SESSION_STORAGE_KEY, sessionId);
|
|
3387
|
+
} catch (unused) {}
|
|
3388
|
+
return sessionId;
|
|
3389
|
+
}
|
|
3364
3390
|
function readPersistentId(storageKey) {
|
|
3365
3391
|
return readStoredString(storageKey) || readCookie(storageKey);
|
|
3366
3392
|
}
|
|
@@ -3962,7 +3988,7 @@ function sha256Hex(input) {
|
|
|
3962
3988
|
})();
|
|
3963
3989
|
}
|
|
3964
3990
|
function resolvePlayerIdentitySeed(clientInfo) {
|
|
3965
|
-
var nativeDeviceId = resolveNativeDeviceId();
|
|
3991
|
+
var nativeDeviceId = resolveNativeDeviceId(clientInfo.isSmartTV);
|
|
3966
3992
|
if (nativeDeviceId) {
|
|
3967
3993
|
return "device:".concat(nativeDeviceId);
|
|
3968
3994
|
}
|
|
@@ -4731,6 +4757,12 @@ function applyDeviceIdentityParams(params, ctx) {
|
|
|
4731
4757
|
params.set("is_lat", latValue !== null && latValue !== void 0 ? latValue : isMacroPlaceholder2(tagLat) ? "0" : tagLat);
|
|
4732
4758
|
return;
|
|
4733
4759
|
}
|
|
4760
|
+
if (!ctx.isCtv) {
|
|
4761
|
+
params.delete("rdid");
|
|
4762
|
+
params.delete("idtype");
|
|
4763
|
+
params.delete("is_lat");
|
|
4764
|
+
return;
|
|
4765
|
+
}
|
|
4734
4766
|
var tagRdidValid = Boolean(tagRdid && !isMacroPlaceholder2(tagRdid));
|
|
4735
4767
|
var tagTypeValid = Boolean(tagType && !isMacroPlaceholder2(tagType));
|
|
4736
4768
|
if (tagRdidValid && tagTypeValid && runtimeType && !isEquivalentDeviceIdType(tagType, runtimeType)) {
|
|
@@ -4885,15 +4917,24 @@ function applyVastMacros(baseUrl, ctx) {
|
|
|
4885
4917
|
if (ctx.podMaxAds != null) {
|
|
4886
4918
|
params.set("pmad", String(Math.max(1, Math.round(ctx.podMaxAds))));
|
|
4887
4919
|
}
|
|
4888
|
-
if (!ctx.isCtv && ctx.pageUrl) {
|
|
4889
|
-
params.set("url", ctx.pageUrl);
|
|
4890
|
-
params.set("description_url", ctx.pageUrl);
|
|
4891
|
-
}
|
|
4892
4920
|
var existingUrl = params.get("url") || "";
|
|
4893
4921
|
if (EXAMPLE_COM_URL.test(existingUrl)) {
|
|
4894
4922
|
params.delete("url");
|
|
4895
4923
|
params.delete("description_url");
|
|
4896
4924
|
}
|
|
4925
|
+
if (!ctx.isCtv && ctx.pageUrl) {
|
|
4926
|
+
if (isMacroPlaceholder2(params.get("url"))) {
|
|
4927
|
+
params.set("url", ctx.pageUrl);
|
|
4928
|
+
}
|
|
4929
|
+
if (isMacroPlaceholder2(params.get("description_url"))) {
|
|
4930
|
+
params.set("description_url", params.get("url") || ctx.pageUrl);
|
|
4931
|
+
}
|
|
4932
|
+
}
|
|
4933
|
+
if (!ctx.isCtv) {
|
|
4934
|
+
params.delete("an");
|
|
4935
|
+
params.delete("msid");
|
|
4936
|
+
params.delete("sid");
|
|
4937
|
+
}
|
|
4897
4938
|
if (ctx.adWillPlayMuted != null) {
|
|
4898
4939
|
params.set("vpmute", ctx.adWillPlayMuted ? "1" : "0");
|
|
4899
4940
|
}
|
|
@@ -4927,6 +4968,9 @@ function applyVastMacros(baseUrl, ctx) {
|
|
|
4927
4968
|
if (ctx.programTitle) {
|
|
4928
4969
|
params.set("ct_ti", ctx.programTitle);
|
|
4929
4970
|
}
|
|
4971
|
+
if (ctx.channelName) {
|
|
4972
|
+
params.set("ct_ch", ctx.channelName);
|
|
4973
|
+
}
|
|
4930
4974
|
var staleKeys = [];
|
|
4931
4975
|
params.forEach(function(value, key) {
|
|
4932
4976
|
if (isMacroPlaceholder2(value)) {
|
|
@@ -4979,8 +5023,10 @@ function fetchConsentSignals() {
|
|
|
4979
5023
|
tcfApi("addEventListener", 2, function(tcData, success) {
|
|
4980
5024
|
if (settled) return;
|
|
4981
5025
|
if (success && tcData && (tcData.eventStatus === "tcloaded" || tcData.eventStatus === "useractioncomplete")) {
|
|
5026
|
+
var _tcData_purpose_consents, _tcData_purpose;
|
|
4982
5027
|
settled = true;
|
|
4983
5028
|
signals.gdpr = tcData.gdprApplies ? "1" : "0";
|
|
5029
|
+
signals.storageAllowed = tcData.gdprApplies ? ((_tcData_purpose = tcData.purpose) === null || _tcData_purpose === void 0 ? void 0 : (_tcData_purpose_consents = _tcData_purpose.consents) === null || _tcData_purpose_consents === void 0 ? void 0 : _tcData_purpose_consents[1]) === true : true;
|
|
4984
5030
|
if (typeof tcData.tcString === "string" && tcData.tcString) {
|
|
4985
5031
|
signals.gdprConsent = tcData.tcString;
|
|
4986
5032
|
}
|
|
@@ -6513,7 +6559,7 @@ var AdConfigManager = /*#__PURE__*/ function() {
|
|
|
6513
6559
|
pageUrl: !envSignals.isCtv && typeof window !== "undefined" ? toDevSafeUrl(window.location.href) : void 0,
|
|
6514
6560
|
adWillPlayMuted: adWillPlayMuted,
|
|
6515
6561
|
adWillAutoPlay: !!this.config.autoplay,
|
|
6516
|
-
sessionId: envSignals.sessionId,
|
|
6562
|
+
sessionId: envSignals.isCtv || this.consentSignals.storageAllowed !== false ? envSignals.sessionId : void 0,
|
|
6517
6563
|
deviceId: envSignals.deviceId,
|
|
6518
6564
|
deviceIdType: envSignals.deviceIdType,
|
|
6519
6565
|
limitAdTracking: envSignals.limitAdTracking,
|
|
@@ -6521,6 +6567,8 @@ var AdConfigManager = /*#__PURE__*/ function() {
|
|
|
6521
6567
|
adTest: this.config.adTest
|
|
6522
6568
|
}, this.config.programTitle ? {
|
|
6523
6569
|
programTitle: this.config.programTitle
|
|
6570
|
+
} : {}, this.config.channelName ? {
|
|
6571
|
+
channelName: this.config.channelName
|
|
6524
6572
|
} : {}), {
|
|
6525
6573
|
consent: this.consentSignals
|
|
6526
6574
|
}));
|
|
@@ -9641,7 +9689,7 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
|
|
|
9641
9689
|
// ───────────────────────────────────────────────────────────────
|
|
9642
9690
|
function load() {
|
|
9643
9691
|
return _async_to_generator(function() {
|
|
9644
|
-
var _this,
|
|
9692
|
+
var _this, error, palDescriptionUrl, continueLiveStreamDuringAds;
|
|
9645
9693
|
return _ts_generator(this, function(_state) {
|
|
9646
9694
|
switch(_state.label){
|
|
9647
9695
|
case 0:
|
|
@@ -9677,19 +9725,25 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
|
|
|
9677
9725
|
4
|
|
9678
9726
|
];
|
|
9679
9727
|
case 4:
|
|
9680
|
-
palDescriptionUrl = this.adConfig.getPalDescriptionUrl();
|
|
9681
|
-
|
|
9682
|
-
|
|
9683
|
-
|
|
9684
|
-
|
|
9685
|
-
adWillPlayMuted: true,
|
|
9686
|
-
playerVolume: 0,
|
|
9687
|
-
continuousPlayback: (_this_config_lowLatencyMode = this.config.lowLatencyMode) !== null && _this_config_lowLatencyMode !== void 0 ? _this_config_lowLatencyMode : false
|
|
9688
|
-
}, palDescriptionUrl ? {
|
|
9689
|
-
descriptionUrl: palDescriptionUrl
|
|
9690
|
-
} : {})).catch(function() {});
|
|
9691
|
-
fetchConsentSignals().then(function(signals) {
|
|
9728
|
+
palDescriptionUrl = this.config.ctvAdRequest ? this.adConfig.getPalDescriptionUrl() : void 0;
|
|
9729
|
+
fetchConsentSignals().catch(function() {
|
|
9730
|
+
return {};
|
|
9731
|
+
}).then(function(signals) {
|
|
9732
|
+
var _this_config_lowLatencyMode;
|
|
9692
9733
|
_this.adConfig.consentSignals = signals;
|
|
9734
|
+
var muted = _this.video.muted;
|
|
9735
|
+
return _this.palNonce.generateNonce(_object_spread({
|
|
9736
|
+
videoWidth: _this.video.offsetWidth || _this.video.clientWidth || 640,
|
|
9737
|
+
videoHeight: _this.video.offsetHeight || _this.video.clientHeight || 480,
|
|
9738
|
+
adWillAutoPlay: !!_this.config.autoplay,
|
|
9739
|
+
adWillPlayMuted: muted,
|
|
9740
|
+
playerVolume: muted ? 0 : _this.video.volume,
|
|
9741
|
+
continuousPlayback: (_this_config_lowLatencyMode = _this.config.lowLatencyMode) !== null && _this_config_lowLatencyMode !== void 0 ? _this_config_lowLatencyMode : false
|
|
9742
|
+
}, palDescriptionUrl ? {
|
|
9743
|
+
descriptionUrl: palDescriptionUrl
|
|
9744
|
+
} : {}, signals.storageAllowed != null ? {
|
|
9745
|
+
allowStorage: signals.storageAllowed
|
|
9746
|
+
} : {}));
|
|
9693
9747
|
}).catch(function() {});
|
|
9694
9748
|
this.adConfig.initializeTracking();
|
|
9695
9749
|
if (!this.hlsEngine.shouldUseNativeHls(function() {
|
|
@@ -10411,7 +10465,7 @@ var CRITICAL_PROPS = [
|
|
|
10411
10465
|
var CONTROLS_HIDE_DELAY = 3e3;
|
|
10412
10466
|
var DEFAULT_PLAYER_ASPECT_RATIO = 16 / 9;
|
|
10413
10467
|
var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
10414
|
-
var src = props.src, autoplay = props.autoplay, muted = props.muted, lowLatencyMode = props.lowLatencyMode, allowNativeHls = props.allowNativeHls, isLiveStream = props.isLiveStream, driftToleranceMs = props.driftToleranceMs, immediateManifestAds = props.immediateManifestAds, debugAdTiming = props.debugAdTiming, showCustomControls = props.showCustomControls, hideLoadingIndicator = props.hideLoadingIndicator, onVolumeToggle = props.onVolumeToggle, onFullscreenToggle = props.onFullscreenToggle, onControlClick = props.onControlClick, onReady = props.onReady, wrapperClassName = props.wrapperClassName, wrapperStyle = props.wrapperStyle, className = props.className, style = props.style, controls = props.controls, playsInline = props.playsInline, preload = props.preload, poster = props.poster, children = props.children, licenseKey = props.licenseKey, vastMode = props.vastMode, vastTagUrl = props.vastTagUrl, isVmap = props.isVmap, vmapUrl = props.vmapUrl, minSegmentsBeforePlay = props.minSegmentsBeforePlay, ctvAdRequest = props.ctvAdRequest, programTitle = props.programTitle, restVideoAttrs = _object_without_properties(props, [
|
|
10468
|
+
var src = props.src, autoplay = props.autoplay, muted = props.muted, lowLatencyMode = props.lowLatencyMode, allowNativeHls = props.allowNativeHls, isLiveStream = props.isLiveStream, driftToleranceMs = props.driftToleranceMs, immediateManifestAds = props.immediateManifestAds, debugAdTiming = props.debugAdTiming, showCustomControls = props.showCustomControls, hideLoadingIndicator = props.hideLoadingIndicator, onVolumeToggle = props.onVolumeToggle, onFullscreenToggle = props.onFullscreenToggle, onControlClick = props.onControlClick, onReady = props.onReady, wrapperClassName = props.wrapperClassName, wrapperStyle = props.wrapperStyle, className = props.className, style = props.style, controls = props.controls, playsInline = props.playsInline, preload = props.preload, poster = props.poster, children = props.children, licenseKey = props.licenseKey, vastMode = props.vastMode, vastTagUrl = props.vastTagUrl, isVmap = props.isVmap, vmapUrl = props.vmapUrl, minSegmentsBeforePlay = props.minSegmentsBeforePlay, ctvAdRequest = props.ctvAdRequest, programTitle = props.programTitle, channelName = props.channelName, restVideoAttrs = _object_without_properties(props, [
|
|
10415
10469
|
"src",
|
|
10416
10470
|
"autoplay",
|
|
10417
10471
|
"muted",
|
|
@@ -10443,7 +10497,8 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
10443
10497
|
"vmapUrl",
|
|
10444
10498
|
"minSegmentsBeforePlay",
|
|
10445
10499
|
"ctvAdRequest",
|
|
10446
|
-
"programTitle"
|
|
10500
|
+
"programTitle",
|
|
10501
|
+
"channelName"
|
|
10447
10502
|
]);
|
|
10448
10503
|
var videoRef = (0, import_react.useRef)(null);
|
|
10449
10504
|
var playerRef = (0, import_react.useRef)(null);
|
|
@@ -10635,6 +10690,7 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
10635
10690
|
if (minSegmentsBeforePlay !== void 0) cfg.minSegmentsBeforePlay = minSegmentsBeforePlay;
|
|
10636
10691
|
if (ctvAdRequest !== void 0) cfg.ctvAdRequest = ctvAdRequest;
|
|
10637
10692
|
if (programTitle !== void 0) cfg.programTitle = programTitle;
|
|
10693
|
+
if (channelName !== void 0) cfg.channelName = channelName;
|
|
10638
10694
|
var player = new StormcloudVideoPlayer(cfg);
|
|
10639
10695
|
playerRef.current = player;
|
|
10640
10696
|
player.load().then(function() {
|