stormcloud-video-player 0.8.74 → 0.8.76
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 +10 -12
- package/lib/Player.cjs.map +1 -1
- package/lib/StormcloudPlayer.cjs +165 -79
- package/lib/StormcloudPlayer.cjs.map +1 -1
- package/lib/index.cjs +176 -134
- package/lib/index.cjs.map +1 -1
- package/lib/index.d.cts +1 -1
- package/lib/index.d.ts +5 -19
- package/lib/index.js +170 -132
- package/lib/index.js.map +1 -1
- package/lib/player/AdBreakOrchestrator.cjs +45 -13
- package/lib/player/AdBreakOrchestrator.cjs.map +1 -1
- package/lib/player/AdConfigManager.cjs +19 -4
- package/lib/player/AdConfigManager.cjs.map +1 -1
- package/lib/player/AdConfigManager.d.cts +3 -0
- package/lib/player/EdgePodRequest.cjs +31 -1
- package/lib/player/EdgePodRequest.cjs.map +1 -1
- package/lib/player/EdgePodRequest.d.cts +21 -3
- package/lib/player/FloorLadder.cjs +86 -27
- package/lib/player/FloorLadder.cjs.map +1 -1
- package/lib/player/FloorLadder.d.cts +8 -7
- package/lib/player/StormcloudVideoPlayer.cjs +165 -79
- package/lib/player/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/player/StormcloudVideoPlayer.d.cts +3 -9
- package/lib/players/HlsPlayer.cjs +165 -79
- package/lib/players/HlsPlayer.cjs.map +1 -1
- package/lib/players/index.cjs +165 -79
- package/lib/players/index.cjs.map +1 -1
- package/lib/props.cjs +10 -12
- package/lib/props.cjs.map +1 -1
- package/lib/types.d.cts +3 -7
- package/lib/ui/StormcloudVideoPlayer.cjs +169 -140
- package/lib/ui/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/utils/tracking.cjs +7 -0
- package/lib/utils/tracking.cjs.map +1 -1
- package/lib/utils/tracking.d.cts +2 -1
- package/lib/utils/vastMacros.cjs +2 -1
- package/lib/utils/vastMacros.cjs.map +1 -1
- package/package.json +1 -1
package/lib/index.cjs
CHANGED
|
@@ -412,8 +412,8 @@ __export(index_exports, {
|
|
|
412
412
|
DEFAULT_TRACKING_INGEST_CONFIG: function DEFAULT_TRACKING_INGEST_CONFIG1() {
|
|
413
413
|
return DEFAULT_TRACKING_INGEST_CONFIG;
|
|
414
414
|
},
|
|
415
|
-
|
|
416
|
-
return
|
|
415
|
+
DISABLED_FLOOR_LADDER_CONFIG: function DISABLED_FLOOR_LADDER_CONFIG1() {
|
|
416
|
+
return DISABLED_FLOOR_LADDER_CONFIG;
|
|
417
417
|
},
|
|
418
418
|
GAM_AD_OPPORTUNITY_DURATION_MS: function GAM_AD_OPPORTUNITY_DURATION_MS1() {
|
|
419
419
|
return GAM_AD_OPPORTUNITY_DURATION_MS;
|
|
@@ -511,6 +511,9 @@ __export(index_exports, {
|
|
|
511
511
|
omit: function omit1() {
|
|
512
512
|
return omit;
|
|
513
513
|
},
|
|
514
|
+
parseApiFloorLadder: function parseApiFloorLadder1() {
|
|
515
|
+
return parseApiFloorLadder;
|
|
516
|
+
},
|
|
514
517
|
parseQuery: function parseQuery1() {
|
|
515
518
|
return parseQuery;
|
|
516
519
|
},
|
|
@@ -1546,9 +1549,10 @@ function resolveScvpMacroValues(ctx) {
|
|
|
1546
1549
|
var deviceId = (_ctx_deviceId = ctx.deviceId) === null || _ctx_deviceId === void 0 ? void 0 : _ctx_deviceId.trim();
|
|
1547
1550
|
var deviceIdType = deviceId ? ((_ctx_deviceIdType = ctx.deviceIdType) === null || _ctx_deviceIdType === void 0 ? void 0 : _ctx_deviceIdType.trim()) || inferDeviceIdType() : void 0;
|
|
1548
1551
|
if (deviceId && deviceIdType) {
|
|
1552
|
+
var _toFlag;
|
|
1549
1553
|
set("RDID", deviceId);
|
|
1550
1554
|
set("IDTYPE", deviceIdType);
|
|
1551
|
-
set("IS-LAT", toFlag(ctx.limitAdTracking));
|
|
1555
|
+
set("IS-LAT", (_toFlag = toFlag(ctx.limitAdTracking)) !== null && _toFlag !== void 0 ? _toFlag : "0");
|
|
1552
1556
|
}
|
|
1553
1557
|
set("SID", ctx.sessionId);
|
|
1554
1558
|
set("DTH", ctx.deviceTypeHint);
|
|
@@ -1883,21 +1887,19 @@ function fetchConsentSignals() {
|
|
|
1883
1887
|
});
|
|
1884
1888
|
}
|
|
1885
1889
|
// src/player/FloorLadder.ts
|
|
1886
|
-
var
|
|
1890
|
+
var DISABLED_FLOOR_LADDER_CONFIG = Object.freeze({
|
|
1887
1891
|
enabled: false,
|
|
1888
|
-
targetingKey: "
|
|
1889
|
-
minFloorCents:
|
|
1890
|
-
maxFloorCents:
|
|
1891
|
-
stepCents:
|
|
1892
|
-
selectedFloorCents:
|
|
1893
|
-
fallbackFloorCents:
|
|
1892
|
+
targetingKey: "",
|
|
1893
|
+
minFloorCents: 0,
|
|
1894
|
+
maxFloorCents: 0,
|
|
1895
|
+
stepCents: 0,
|
|
1896
|
+
selectedFloorCents: 0,
|
|
1897
|
+
fallbackFloorCents: 0,
|
|
1894
1898
|
readyFloorCents: [],
|
|
1895
1899
|
mode: "fixed",
|
|
1896
|
-
allowedPositions: [
|
|
1897
|
-
|
|
1898
|
-
|
|
1899
|
-
targetAdUnitPath: "/21821455290/airytvadx/airytv-web",
|
|
1900
|
-
configurationVersion: "2026-09-29.1"
|
|
1900
|
+
allowedPositions: [],
|
|
1901
|
+
targetAdUnitPath: "",
|
|
1902
|
+
configurationVersion: ""
|
|
1901
1903
|
});
|
|
1902
1904
|
var DEFAULT_FLOOR_LADDER_BOUNDS = Object.freeze({
|
|
1903
1905
|
minCents: 25,
|
|
@@ -2056,7 +2058,6 @@ function resolveOpportunityFloor(config, context) {
|
|
|
2056
2058
|
if (!config.enabled) return skipped("disabled");
|
|
2057
2059
|
var positions = Array.isArray(config.allowedPositions) ? config.allowedPositions : [];
|
|
2058
2060
|
if (positions.indexOf(context.position) === -1) return skipped("position_not_allowed");
|
|
2059
|
-
if (context.isCtv) return skipped("ctv_excluded");
|
|
2060
2061
|
if (!config.targetingKey) return skipped("missing_targeting_key");
|
|
2061
2062
|
if (!config.targetAdUnitPath) return skipped("missing_target_ad_unit");
|
|
2062
2063
|
var result;
|
|
@@ -2210,15 +2211,80 @@ function mergeDefined(target, update) {
|
|
|
2210
2211
|
}
|
|
2211
2212
|
return copyConfig(next);
|
|
2212
2213
|
}
|
|
2214
|
+
var AD_POSITIONS = [
|
|
2215
|
+
"preroll",
|
|
2216
|
+
"midroll",
|
|
2217
|
+
"postroll"
|
|
2218
|
+
];
|
|
2219
|
+
function finiteNumber(value) {
|
|
2220
|
+
return typeof value === "number" && isFinite(value) ? value : void 0;
|
|
2221
|
+
}
|
|
2222
|
+
function parseApiFloorLadder(raw) {
|
|
2223
|
+
if (!raw || (typeof raw === "undefined" ? "undefined" : _type_of(raw)) !== "object" || Array.isArray(raw)) return void 0;
|
|
2224
|
+
var src = raw;
|
|
2225
|
+
var out = {};
|
|
2226
|
+
if (typeof src.enabled === "boolean") out.enabled = src.enabled;
|
|
2227
|
+
if (typeof src.targetingKey === "string") out.targetingKey = src.targetingKey;
|
|
2228
|
+
if (typeof src.targetAdUnitPath === "string") out.targetAdUnitPath = src.targetAdUnitPath;
|
|
2229
|
+
if (typeof src.configurationVersion === "string") out.configurationVersion = src.configurationVersion;
|
|
2230
|
+
if (typeof src.mode === "string") out.mode = src.mode;
|
|
2231
|
+
var min = finiteNumber(src.minFloorCents);
|
|
2232
|
+
var max = finiteNumber(src.maxFloorCents);
|
|
2233
|
+
var step = finiteNumber(src.stepCents);
|
|
2234
|
+
var selected = finiteNumber(src.selectedFloorCents);
|
|
2235
|
+
var fallback = finiteNumber(src.fallbackFloorCents);
|
|
2236
|
+
if (min !== void 0) out.minFloorCents = min;
|
|
2237
|
+
if (max !== void 0) out.maxFloorCents = max;
|
|
2238
|
+
if (step !== void 0) out.stepCents = step;
|
|
2239
|
+
if (selected !== void 0) out.selectedFloorCents = selected;
|
|
2240
|
+
if (fallback !== void 0) out.fallbackFloorCents = fallback;
|
|
2241
|
+
if (Array.isArray(src.readyFloorCents)) {
|
|
2242
|
+
out.readyFloorCents = src.readyFloorCents.filter(function(cents) {
|
|
2243
|
+
return finiteNumber(cents) !== void 0;
|
|
2244
|
+
});
|
|
2245
|
+
}
|
|
2246
|
+
if (Array.isArray(src.allowedPositions)) {
|
|
2247
|
+
out.allowedPositions = src.allowedPositions.filter(function(position) {
|
|
2248
|
+
return AD_POSITIONS.indexOf(position) !== -1;
|
|
2249
|
+
});
|
|
2250
|
+
}
|
|
2251
|
+
return out;
|
|
2252
|
+
}
|
|
2213
2253
|
var FloorLadderController = /*#__PURE__*/ function() {
|
|
2214
|
-
function FloorLadderController(
|
|
2215
|
-
var selector = arguments.length >
|
|
2254
|
+
function FloorLadderController() {
|
|
2255
|
+
var selector = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : fixedFloorSelector;
|
|
2216
2256
|
_class_call_check(this, FloorLadderController);
|
|
2217
|
-
this.
|
|
2218
|
-
this.
|
|
2257
|
+
this.bounds = DEFAULT_FLOOR_LADDER_BOUNDS;
|
|
2258
|
+
this.config = copyConfig(DISABLED_FLOOR_LADDER_CONFIG);
|
|
2219
2259
|
this.selector = selector;
|
|
2220
2260
|
}
|
|
2221
2261
|
_create_class(FloorLadderController, [
|
|
2262
|
+
{
|
|
2263
|
+
key: "isEnabled",
|
|
2264
|
+
value: function isEnabled() {
|
|
2265
|
+
return this.config.enabled === true;
|
|
2266
|
+
}
|
|
2267
|
+
},
|
|
2268
|
+
{
|
|
2269
|
+
key: "applyApiConfig",
|
|
2270
|
+
value: function applyApiConfig(raw) {
|
|
2271
|
+
var parsed = parseApiFloorLadder(raw);
|
|
2272
|
+
this.config = mergeDefined(copyConfig(DISABLED_FLOOR_LADDER_CONFIG), parsed);
|
|
2273
|
+
this.bounds = Object.freeze({
|
|
2274
|
+
minCents: this.config.minFloorCents,
|
|
2275
|
+
maxCents: this.config.maxFloorCents,
|
|
2276
|
+
stepCents: this.config.stepCents
|
|
2277
|
+
});
|
|
2278
|
+
return validateFloorLadderConfig(this.config, this.bounds);
|
|
2279
|
+
}
|
|
2280
|
+
},
|
|
2281
|
+
{
|
|
2282
|
+
key: "reset",
|
|
2283
|
+
value: function reset() {
|
|
2284
|
+
this.config = copyConfig(DISABLED_FLOOR_LADDER_CONFIG);
|
|
2285
|
+
this.bounds = DEFAULT_FLOOR_LADDER_BOUNDS;
|
|
2286
|
+
}
|
|
2287
|
+
},
|
|
2222
2288
|
{
|
|
2223
2289
|
key: "get",
|
|
2224
2290
|
value: function get() {
|
|
@@ -2231,13 +2297,6 @@ var FloorLadderController = /*#__PURE__*/ function() {
|
|
|
2231
2297
|
return _object_spread({}, this.bounds);
|
|
2232
2298
|
}
|
|
2233
2299
|
},
|
|
2234
|
-
{
|
|
2235
|
-
key: "update",
|
|
2236
|
-
value: function update(update) {
|
|
2237
|
-
this.config = mergeDefined(this.config, update);
|
|
2238
|
-
return validateFloorLadderConfig(this.config, this.bounds);
|
|
2239
|
-
}
|
|
2240
|
-
},
|
|
2241
2300
|
{
|
|
2242
2301
|
key: "validate",
|
|
2243
2302
|
value: function validate() {
|
|
@@ -6499,6 +6558,9 @@ function resolvePlayerIdentitySeed(clientInfo) {
|
|
|
6499
6558
|
}
|
|
6500
6559
|
return "fingerprint:".concat(JSON.stringify(clientInfo));
|
|
6501
6560
|
}
|
|
6561
|
+
function getCachedBrowserId() {
|
|
6562
|
+
return cachedBrowserId !== null && cachedBrowserId !== void 0 ? cachedBrowserId : void 0;
|
|
6563
|
+
}
|
|
6502
6564
|
function getBrowserID(clientInfo) {
|
|
6503
6565
|
return _async_to_generator(function() {
|
|
6504
6566
|
return _ts_generator(this, function(_state) {
|
|
@@ -8168,7 +8230,7 @@ var AdConfigManager = /*#__PURE__*/ function() {
|
|
|
8168
8230
|
key: "fetchAdConfiguration",
|
|
8169
8231
|
value: function fetchAdConfiguration() {
|
|
8170
8232
|
return _async_to_generator(function() {
|
|
8171
|
-
var _data_response_ima_publisherdeskima, _data_response_ima,
|
|
8233
|
+
var _data_response, _data_response1, _data_response2, _data_response_ima_publisherdeskima, _data_response_ima, _data_response3, _data_response_options_vast_cue_tones, _data_response_options_vast, _data_response_options, _data_response4, apiUrl, headers, response, data, apiEnableEdge, apiEdgeUrl, imaPayload, decodedPayload, numberAds;
|
|
8172
8234
|
return _ts_generator(this, function(_state) {
|
|
8173
8235
|
switch(_state.label){
|
|
8174
8236
|
case 0:
|
|
@@ -8228,7 +8290,21 @@ var AdConfigManager = /*#__PURE__*/ function() {
|
|
|
8228
8290
|
];
|
|
8229
8291
|
case 4:
|
|
8230
8292
|
data = _state.sent();
|
|
8231
|
-
|
|
8293
|
+
apiEnableEdge = (_data_response = data.response) === null || _data_response === void 0 ? void 0 : _data_response.enableEdgePodRequest;
|
|
8294
|
+
apiEdgeUrl = (_data_response1 = data.response) === null || _data_response1 === void 0 ? void 0 : _data_response1.edgePodUrl;
|
|
8295
|
+
this.apiEnableEdgePodRequest = typeof apiEnableEdge === "boolean" ? apiEnableEdge : void 0;
|
|
8296
|
+
this.apiEdgePodUrl = typeof apiEdgeUrl === "string" ? apiEdgeUrl : void 0;
|
|
8297
|
+
if (this.debug) {
|
|
8298
|
+
console.log("[StormcloudVideoPlayer] Edge pod settings from API:", {
|
|
8299
|
+
enableEdgePodRequest: this.apiEnableEdgePodRequest,
|
|
8300
|
+
edgePodUrl: this.apiEdgePodUrl
|
|
8301
|
+
});
|
|
8302
|
+
}
|
|
8303
|
+
this.apiFloorLadder = (_data_response2 = data.response) === null || _data_response2 === void 0 ? void 0 : _data_response2.floorLadder;
|
|
8304
|
+
if (this.debug) {
|
|
8305
|
+
console.log(this.apiFloorLadder ? "[StormcloudVideoPlayer] Floor ladder from API:" : "[StormcloudVideoPlayer] No floorLadder block in /ads/web response", this.apiFloorLadder);
|
|
8306
|
+
}
|
|
8307
|
+
imaPayload = (_data_response3 = data.response) === null || _data_response3 === void 0 ? void 0 : (_data_response_ima = _data_response3.ima) === null || _data_response_ima === void 0 ? void 0 : (_data_response_ima_publisherdeskima = _data_response_ima["publisherdesk.ima"]) === null || _data_response_ima_publisherdeskima === void 0 ? void 0 : _data_response_ima_publisherdeskima.payload;
|
|
8232
8308
|
if (imaPayload) {
|
|
8233
8309
|
decodedPayload = imaPayload;
|
|
8234
8310
|
try {
|
|
@@ -8246,7 +8322,7 @@ var AdConfigManager = /*#__PURE__*/ function() {
|
|
|
8246
8322
|
console.warn("[StormcloudVideoPlayer] No VAST tag URL found in /ads/web response");
|
|
8247
8323
|
}
|
|
8248
8324
|
}
|
|
8249
|
-
numberAds = (
|
|
8325
|
+
numberAds = (_data_response4 = data.response) === null || _data_response4 === void 0 ? void 0 : (_data_response_options = _data_response4.options) === null || _data_response_options === void 0 ? void 0 : (_data_response_options_vast = _data_response_options.vast) === null || _data_response_options_vast === void 0 ? void 0 : (_data_response_options_vast_cue_tones = _data_response_options_vast.cue_tones) === null || _data_response_options_vast_cue_tones === void 0 ? void 0 : _data_response_options_vast_cue_tones.number_ads;
|
|
8250
8326
|
if (numberAds != null && numberAds > 0) {
|
|
8251
8327
|
this.apiNumberAds = numberAds;
|
|
8252
8328
|
if (this.debug) {
|
|
@@ -10080,7 +10156,23 @@ function resolveEdgePodBaseUrl(config) {
|
|
|
10080
10156
|
return void 0;
|
|
10081
10157
|
}
|
|
10082
10158
|
}
|
|
10159
|
+
function resolveEdgePodRequestContext(config) {
|
|
10160
|
+
var extra = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
|
|
10161
|
+
return {
|
|
10162
|
+
width: extra.width,
|
|
10163
|
+
height: extra.height,
|
|
10164
|
+
playerId: extra.playerId,
|
|
10165
|
+
contentNetwork: config.contentNetwork,
|
|
10166
|
+
contentChannel: config.channelName,
|
|
10167
|
+
contentTitle: config.programTitle
|
|
10168
|
+
};
|
|
10169
|
+
}
|
|
10170
|
+
function setOptionalParam(url, key, value) {
|
|
10171
|
+
var trimmed = value === null || value === void 0 ? void 0 : value.trim();
|
|
10172
|
+
if (trimmed) url.searchParams.set(key, trimmed);
|
|
10173
|
+
}
|
|
10083
10174
|
function buildEdgePodUrl(baseUrl, remainingMs, remainingAdLimit) {
|
|
10175
|
+
var context = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {};
|
|
10084
10176
|
var url = new URL(baseUrl);
|
|
10085
10177
|
var maxMs = Math.max(0, Math.floor(remainingMs));
|
|
10086
10178
|
var maxAds = Math.max(1, Math.min(EDGE_POD_MAX_ADS, Math.floor(remainingAdLimit)));
|
|
@@ -10088,6 +10180,16 @@ function buildEdgePodUrl(baseUrl, remainingMs, remainingAdLimit) {
|
|
|
10088
10180
|
url.searchParams.set("pmad", String(maxAds));
|
|
10089
10181
|
url.searchParams.set("duration", String(Math.floor(maxMs / 1e3)));
|
|
10090
10182
|
url.searchParams.set("count", String(maxAds));
|
|
10183
|
+
if (context.width != null && Number.isFinite(context.width) && context.width > 0) {
|
|
10184
|
+
url.searchParams.set("width", String(Math.round(context.width)));
|
|
10185
|
+
}
|
|
10186
|
+
if (context.height != null && Number.isFinite(context.height) && context.height > 0) {
|
|
10187
|
+
url.searchParams.set("height", String(Math.round(context.height)));
|
|
10188
|
+
}
|
|
10189
|
+
setOptionalParam(url, "pid", context.playerId);
|
|
10190
|
+
setOptionalParam(url, "cn", context.contentNetwork);
|
|
10191
|
+
setOptionalParam(url, "cc", context.contentChannel);
|
|
10192
|
+
setOptionalParam(url, "ct", context.contentTitle);
|
|
10091
10193
|
return url.toString();
|
|
10092
10194
|
}
|
|
10093
10195
|
function classifyEdgeVastResponse(result) {
|
|
@@ -10975,7 +11077,12 @@ var AdBreakOrchestrator = /*#__PURE__*/ function() {
|
|
|
10975
11077
|
return void 0;
|
|
10976
11078
|
}
|
|
10977
11079
|
try {
|
|
10978
|
-
|
|
11080
|
+
var playerId = getCachedBrowserId();
|
|
11081
|
+
return buildEdgePodUrl(baseUrl, remainingMs, remainingAds, resolveEdgePodRequestContext(this.host.config, {
|
|
11082
|
+
width: this.host.video.offsetWidth || this.host.video.clientWidth,
|
|
11083
|
+
height: this.host.video.offsetHeight || this.host.video.clientHeight,
|
|
11084
|
+
playerId: playerId
|
|
11085
|
+
}));
|
|
10979
11086
|
} catch (unused) {
|
|
10980
11087
|
this.markEdgeExhausted("invalid_edge_url");
|
|
10981
11088
|
return void 0;
|
|
@@ -12485,14 +12592,7 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
|
|
|
12485
12592
|
this.config = _object_spread({}, browserOverrides, config);
|
|
12486
12593
|
this.video = config.videoElement;
|
|
12487
12594
|
logBrowserInfo(config.debugAdTiming);
|
|
12488
|
-
|
|
12489
|
-
if (this.config.adFloorMinCents != null) floorBounds.minCents = this.config.adFloorMinCents;
|
|
12490
|
-
if (this.config.adFloorMaxCents != null) floorBounds.maxCents = this.config.adFloorMaxCents;
|
|
12491
|
-
if (this.config.adFloorStepCents != null) floorBounds.stepCents = this.config.adFloorStepCents;
|
|
12492
|
-
this.floorLadder = new FloorLadderController(this.config.adFloorLadder, floorBounds);
|
|
12493
|
-
this.floorLadderEnabled = this.config.adFloorLadderEnabled === true;
|
|
12494
|
-
this.warnOnInvalidFloorLadder(this.floorLadder.validate());
|
|
12495
|
-
this.edgePodBaseUrl = resolveEdgePodBaseUrl(this.config);
|
|
12595
|
+
this.floorLadder = new FloorLadderController();
|
|
12496
12596
|
this.adPlayer = this.createAdPlayer(false);
|
|
12497
12597
|
this.palNonce = createPalNonceManager();
|
|
12498
12598
|
this.cueManager = new Scte35CueManager(!!this.config.debugAdTiming, {
|
|
@@ -12599,9 +12699,8 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
|
|
|
12599
12699
|
return _this.edgePodBaseUrl;
|
|
12600
12700
|
},
|
|
12601
12701
|
getFloorSnapshot: function getFloorSnapshot(position) {
|
|
12602
|
-
return _this.
|
|
12603
|
-
position: position
|
|
12604
|
-
isCtv: _this.isCtvEnvironment()
|
|
12702
|
+
return _this.floorLadder.isEnabled() ? _this.floorLadder.snapshotFor({
|
|
12703
|
+
position: position
|
|
12605
12704
|
}) : void 0;
|
|
12606
12705
|
},
|
|
12607
12706
|
onAdClick: function onAdClick() {
|
|
@@ -12638,45 +12737,42 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
|
|
|
12638
12737
|
}
|
|
12639
12738
|
},
|
|
12640
12739
|
{
|
|
12641
|
-
key: "
|
|
12642
|
-
value: function
|
|
12643
|
-
|
|
12644
|
-
|
|
12645
|
-
|
|
12646
|
-
|
|
12647
|
-
|
|
12648
|
-
|
|
12649
|
-
key: "setAdFloorLadder",
|
|
12650
|
-
value: function setAdFloorLadder(update) {
|
|
12651
|
-
var report = this.floorLadder.update(update);
|
|
12740
|
+
key: "applyFloorLadderFromApi",
|
|
12741
|
+
value: function applyFloorLadderFromApi() {
|
|
12742
|
+
var raw = this.adConfig.apiFloorLadder;
|
|
12743
|
+
if (raw == null) {
|
|
12744
|
+
this.floorLadder.reset();
|
|
12745
|
+
return;
|
|
12746
|
+
}
|
|
12747
|
+
var report = this.floorLadder.applyApiConfig(raw);
|
|
12652
12748
|
this.warnOnInvalidFloorLadder(report);
|
|
12653
|
-
|
|
12654
|
-
|
|
12655
|
-
|
|
12656
|
-
|
|
12657
|
-
|
|
12658
|
-
|
|
12659
|
-
|
|
12660
|
-
if (enabled) this.warnOnInvalidFloorLadder(this.floorLadder.validate());
|
|
12749
|
+
if (this.debug) {
|
|
12750
|
+
console.log("[AdBreak][FLOOR] configuration applied from API", {
|
|
12751
|
+
config: this.floorLadder.get(),
|
|
12752
|
+
bounds: this.floorLadder.getBounds(),
|
|
12753
|
+
validation: report
|
|
12754
|
+
});
|
|
12755
|
+
}
|
|
12661
12756
|
}
|
|
12662
12757
|
},
|
|
12663
12758
|
{
|
|
12664
12759
|
key: "isAdFloorLadderEnabled",
|
|
12665
12760
|
value: function isAdFloorLadderEnabled() {
|
|
12666
|
-
return this.
|
|
12761
|
+
return this.floorLadder.isEnabled();
|
|
12667
12762
|
}
|
|
12668
12763
|
},
|
|
12669
12764
|
{
|
|
12670
|
-
key: "
|
|
12671
|
-
value: function
|
|
12672
|
-
|
|
12673
|
-
|
|
12765
|
+
key: "applyEdgePodFromApi",
|
|
12766
|
+
value: function applyEdgePodFromApi() {
|
|
12767
|
+
this.edgePodBaseUrl = resolveEdgePodBaseUrl({
|
|
12768
|
+
enableEdgePodRequest: this.adConfig.apiEnableEdgePodRequest,
|
|
12769
|
+
edgePodUrl: this.adConfig.apiEdgePodUrl,
|
|
12770
|
+
licenseKey: this.config.licenseKey
|
|
12771
|
+
});
|
|
12772
|
+
if (this.debug) {
|
|
12773
|
+
var _this_edgePodBaseUrl;
|
|
12774
|
+
console.log("[AdBreak][EDGE] edge pod base URL from API:", (_this_edgePodBaseUrl = this.edgePodBaseUrl) !== null && _this_edgePodBaseUrl !== void 0 ? _this_edgePodBaseUrl : "(disabled; GAM only)");
|
|
12674
12775
|
}
|
|
12675
|
-
if (update.enableEdgePodRequest === void 0) delete this.config.enableEdgePodRequest;
|
|
12676
|
-
else this.config.enableEdgePodRequest = update.enableEdgePodRequest;
|
|
12677
|
-
if (update.edgePodUrl === void 0) delete this.config.edgePodUrl;
|
|
12678
|
-
else this.config.edgePodUrl = update.edgePodUrl;
|
|
12679
|
-
this.edgePodBaseUrl = resolveEdgePodBaseUrl(this.config);
|
|
12680
12776
|
}
|
|
12681
12777
|
},
|
|
12682
12778
|
{
|
|
@@ -12689,7 +12785,7 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
|
|
|
12689
12785
|
key: "warnOnInvalidFloorLadder",
|
|
12690
12786
|
value: function warnOnInvalidFloorLadder(report) {
|
|
12691
12787
|
var config = this.floorLadder.get();
|
|
12692
|
-
if (report.ok || !
|
|
12788
|
+
if (report.ok || !config.enabled) return;
|
|
12693
12789
|
console.warn("[AdBreak][FLOOR] configuration has issues; invalid floors will not be sent", {
|
|
12694
12790
|
errors: report.errors,
|
|
12695
12791
|
configurationVersion: config.configurationVersion,
|
|
@@ -12764,6 +12860,8 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
|
|
|
12764
12860
|
4
|
|
12765
12861
|
];
|
|
12766
12862
|
case 4:
|
|
12863
|
+
this.applyFloorLadderFromApi();
|
|
12864
|
+
this.applyEdgePodFromApi();
|
|
12767
12865
|
palDescriptionUrl = this.config.ctvAdRequest ? this.adConfig.getPalDescriptionUrl() : void 0;
|
|
12768
12866
|
fetchConsentSignals().catch(function() {
|
|
12769
12867
|
return {};
|
|
@@ -13517,15 +13615,12 @@ var CRITICAL_PROPS = [
|
|
|
13517
13615
|
"vmapUrl",
|
|
13518
13616
|
"lowLatencyMode",
|
|
13519
13617
|
"driftToleranceMs",
|
|
13520
|
-
"ctvAdRequest"
|
|
13521
|
-
"adFloorMinCents",
|
|
13522
|
-
"adFloorMaxCents",
|
|
13523
|
-
"adFloorStepCents"
|
|
13618
|
+
"ctvAdRequest"
|
|
13524
13619
|
];
|
|
13525
13620
|
var CONTROLS_HIDE_DELAY = 3e3;
|
|
13526
13621
|
var DEFAULT_PLAYER_ASPECT_RATIO = 16 / 9;
|
|
13527
13622
|
var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
13528
|
-
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, vastTagUrl = props.vastTagUrl, isVmap = props.isVmap, vmapUrl = props.vmapUrl, minSegmentsBeforePlay = props.minSegmentsBeforePlay, ctvAdRequest = props.ctvAdRequest, programTitle = props.programTitle, channelName = props.channelName, contentNetwork = props.contentNetwork, minRemainingMsToStartAd = props.minRemainingMsToStartAd, minRemainingMsToRequestAd = props.minRemainingMsToRequestAd, maxNoFillsPerBreak = props.maxNoFillsPerBreak, maxAdBreakExtensionMs = props.maxAdBreakExtensionMs,
|
|
13623
|
+
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, vastTagUrl = props.vastTagUrl, isVmap = props.isVmap, vmapUrl = props.vmapUrl, minSegmentsBeforePlay = props.minSegmentsBeforePlay, ctvAdRequest = props.ctvAdRequest, programTitle = props.programTitle, channelName = props.channelName, contentNetwork = props.contentNetwork, minRemainingMsToStartAd = props.minRemainingMsToStartAd, minRemainingMsToRequestAd = props.minRemainingMsToRequestAd, maxNoFillsPerBreak = props.maxNoFillsPerBreak, maxAdBreakExtensionMs = props.maxAdBreakExtensionMs, restVideoAttrs = _object_without_properties(props, [
|
|
13529
13624
|
"src",
|
|
13530
13625
|
"autoplay",
|
|
13531
13626
|
"muted",
|
|
@@ -13562,19 +13657,10 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
13562
13657
|
"minRemainingMsToStartAd",
|
|
13563
13658
|
"minRemainingMsToRequestAd",
|
|
13564
13659
|
"maxNoFillsPerBreak",
|
|
13565
|
-
"maxAdBreakExtensionMs"
|
|
13566
|
-
"adFloorLadderEnabled",
|
|
13567
|
-
"adFloorLadder",
|
|
13568
|
-
"adFloorMinCents",
|
|
13569
|
-
"adFloorMaxCents",
|
|
13570
|
-
"adFloorStepCents",
|
|
13571
|
-
"enableEdgePodRequest",
|
|
13572
|
-
"edgePodUrl"
|
|
13660
|
+
"maxAdBreakExtensionMs"
|
|
13573
13661
|
]);
|
|
13574
|
-
var adFloorLadderKey = JSON.stringify(adFloorLadder !== null && adFloorLadder !== void 0 ? adFloorLadder : null);
|
|
13575
13662
|
var videoRef = (0, import_react.useRef)(null);
|
|
13576
13663
|
var playerRef = (0, import_react.useRef)(null);
|
|
13577
|
-
var appliedFloorLadderKeyRef = (0, import_react.useRef)(null);
|
|
13578
13664
|
var bufferingTimeoutRef = (0, import_react.useRef)(null);
|
|
13579
13665
|
var controlsTimerRef = (0, import_react.useRef)(null);
|
|
13580
13666
|
var wrapperRef = (0, import_react.useRef)(null);
|
|
@@ -13716,10 +13802,7 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
13716
13802
|
isVmap,
|
|
13717
13803
|
vmapUrl,
|
|
13718
13804
|
lowLatencyMode,
|
|
13719
|
-
driftToleranceMs
|
|
13720
|
-
adFloorMinCents,
|
|
13721
|
-
adFloorMaxCents,
|
|
13722
|
-
adFloorStepCents
|
|
13805
|
+
driftToleranceMs
|
|
13723
13806
|
]);
|
|
13724
13807
|
(0, import_react.useEffect)(function() {
|
|
13725
13808
|
if (typeof window === "undefined") return;
|
|
@@ -13770,16 +13853,8 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
13770
13853
|
if (minRemainingMsToRequestAd !== void 0) cfg.minRemainingMsToRequestAd = minRemainingMsToRequestAd;
|
|
13771
13854
|
if (maxNoFillsPerBreak !== void 0) cfg.maxNoFillsPerBreak = maxNoFillsPerBreak;
|
|
13772
13855
|
if (maxAdBreakExtensionMs !== void 0) cfg.maxAdBreakExtensionMs = maxAdBreakExtensionMs;
|
|
13773
|
-
if (adFloorLadderEnabled !== void 0) cfg.adFloorLadderEnabled = adFloorLadderEnabled;
|
|
13774
|
-
if (adFloorLadder !== void 0) cfg.adFloorLadder = adFloorLadder;
|
|
13775
|
-
if (adFloorMinCents !== void 0) cfg.adFloorMinCents = adFloorMinCents;
|
|
13776
|
-
if (adFloorMaxCents !== void 0) cfg.adFloorMaxCents = adFloorMaxCents;
|
|
13777
|
-
if (adFloorStepCents !== void 0) cfg.adFloorStepCents = adFloorStepCents;
|
|
13778
|
-
if (enableEdgePodRequest !== void 0) cfg.enableEdgePodRequest = enableEdgePodRequest;
|
|
13779
|
-
if (edgePodUrl !== void 0) cfg.edgePodUrl = edgePodUrl;
|
|
13780
13856
|
var player = new StormcloudVideoPlayer(cfg);
|
|
13781
13857
|
playerRef.current = player;
|
|
13782
|
-
appliedFloorLadderKeyRef.current = adFloorLadderKey;
|
|
13783
13858
|
player.load().then(function() {
|
|
13784
13859
|
var showNative = player.shouldShowNativeControls();
|
|
13785
13860
|
setShouldShowNativeControls(showNative);
|
|
@@ -13817,33 +13892,6 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
13817
13892
|
autoplay,
|
|
13818
13893
|
muted
|
|
13819
13894
|
]);
|
|
13820
|
-
(0, import_react.useEffect)(function() {
|
|
13821
|
-
if (!playerRef.current || adFloorLadder === void 0) return;
|
|
13822
|
-
if (appliedFloorLadderKeyRef.current === adFloorLadderKey) return;
|
|
13823
|
-
appliedFloorLadderKeyRef.current = adFloorLadderKey;
|
|
13824
|
-
playerRef.current.setAdFloorLadder(adFloorLadder);
|
|
13825
|
-
}, [
|
|
13826
|
-
adFloorLadderKey
|
|
13827
|
-
]);
|
|
13828
|
-
(0, import_react.useEffect)(function() {
|
|
13829
|
-
if (!playerRef.current) return;
|
|
13830
|
-
var enabled = adFloorLadderEnabled === true;
|
|
13831
|
-
if (playerRef.current.isAdFloorLadderEnabled() === enabled) return;
|
|
13832
|
-
playerRef.current.setAdFloorLadderEnabled(enabled);
|
|
13833
|
-
}, [
|
|
13834
|
-
adFloorLadderEnabled
|
|
13835
|
-
]);
|
|
13836
|
-
(0, import_react.useEffect)(function() {
|
|
13837
|
-
if (!playerRef.current) return;
|
|
13838
|
-
playerRef.current.setEdgePodRequest(_object_spread({}, enableEdgePodRequest !== void 0 ? {
|
|
13839
|
-
enableEdgePodRequest: enableEdgePodRequest
|
|
13840
|
-
} : {}, edgePodUrl !== void 0 ? {
|
|
13841
|
-
edgePodUrl: edgePodUrl
|
|
13842
|
-
} : {}));
|
|
13843
|
-
}, [
|
|
13844
|
-
enableEdgePodRequest,
|
|
13845
|
-
edgePodUrl
|
|
13846
|
-
]);
|
|
13847
13895
|
(0, import_react.useEffect)(function() {
|
|
13848
13896
|
if (!playerRef.current) return;
|
|
13849
13897
|
var checkAdStatus = function checkAdStatus() {
|
|
@@ -14833,7 +14881,6 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
14833
14881
|
]
|
|
14834
14882
|
});
|
|
14835
14883
|
}, function(prevProps, nextProps) {
|
|
14836
|
-
var _prevProps_adFloorLadder, _nextProps_adFloorLadder;
|
|
14837
14884
|
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
14838
14885
|
try {
|
|
14839
14886
|
for(var _iterator = CRITICAL_PROPS[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
@@ -14920,12 +14967,6 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
14920
14967
|
}
|
|
14921
14968
|
}
|
|
14922
14969
|
}
|
|
14923
|
-
if (prevProps.adFloorLadderEnabled !== nextProps.adFloorLadderEnabled || prevProps.enableEdgePodRequest !== nextProps.enableEdgePodRequest || prevProps.edgePodUrl !== nextProps.edgePodUrl) {
|
|
14924
|
-
return false;
|
|
14925
|
-
}
|
|
14926
|
-
if (JSON.stringify((_prevProps_adFloorLadder = prevProps.adFloorLadder) !== null && _prevProps_adFloorLadder !== void 0 ? _prevProps_adFloorLadder : null) !== JSON.stringify((_nextProps_adFloorLadder = nextProps.adFloorLadder) !== null && _nextProps_adFloorLadder !== void 0 ? _nextProps_adFloorLadder : null)) {
|
|
14927
|
-
return false;
|
|
14928
|
-
}
|
|
14929
14970
|
return true;
|
|
14930
14971
|
});
|
|
14931
14972
|
// src/StormcloudPlayer.tsx
|
|
@@ -16100,7 +16141,7 @@ var StormcloudPlayer_default = StormcloudPlayer;
|
|
|
16100
16141
|
DEFAULT_FLOOR_LADDER_BOUNDS: DEFAULT_FLOOR_LADDER_BOUNDS,
|
|
16101
16142
|
DEFAULT_REQUEST_SAFETY_MS: DEFAULT_REQUEST_SAFETY_MS,
|
|
16102
16143
|
DEFAULT_TRACKING_INGEST_CONFIG: DEFAULT_TRACKING_INGEST_CONFIG,
|
|
16103
|
-
|
|
16144
|
+
DISABLED_FLOOR_LADDER_CONFIG: DISABLED_FLOOR_LADDER_CONFIG,
|
|
16104
16145
|
GAM_AD_OPPORTUNITY_DURATION_MS: GAM_AD_OPPORTUNITY_DURATION_MS,
|
|
16105
16146
|
IS_BROWSER: IS_BROWSER,
|
|
16106
16147
|
IS_GLOBAL: IS_GLOBAL,
|
|
@@ -16132,6 +16173,7 @@ var StormcloudPlayer_default = StormcloudPlayer;
|
|
|
16132
16173
|
logBrowserInfo: logBrowserInfo,
|
|
16133
16174
|
merge: merge,
|
|
16134
16175
|
omit: omit,
|
|
16176
|
+
parseApiFloorLadder: parseApiFloorLadder,
|
|
16135
16177
|
parseQuery: parseQuery,
|
|
16136
16178
|
players: players,
|
|
16137
16179
|
randomString: randomString,
|