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.
Files changed (40) hide show
  1. package/dist/stormcloud-vp.min.js +1 -1
  2. package/lib/Player.cjs +10 -12
  3. package/lib/Player.cjs.map +1 -1
  4. package/lib/StormcloudPlayer.cjs +165 -79
  5. package/lib/StormcloudPlayer.cjs.map +1 -1
  6. package/lib/index.cjs +176 -134
  7. package/lib/index.cjs.map +1 -1
  8. package/lib/index.d.cts +1 -1
  9. package/lib/index.d.ts +5 -19
  10. package/lib/index.js +170 -132
  11. package/lib/index.js.map +1 -1
  12. package/lib/player/AdBreakOrchestrator.cjs +45 -13
  13. package/lib/player/AdBreakOrchestrator.cjs.map +1 -1
  14. package/lib/player/AdConfigManager.cjs +19 -4
  15. package/lib/player/AdConfigManager.cjs.map +1 -1
  16. package/lib/player/AdConfigManager.d.cts +3 -0
  17. package/lib/player/EdgePodRequest.cjs +31 -1
  18. package/lib/player/EdgePodRequest.cjs.map +1 -1
  19. package/lib/player/EdgePodRequest.d.cts +21 -3
  20. package/lib/player/FloorLadder.cjs +86 -27
  21. package/lib/player/FloorLadder.cjs.map +1 -1
  22. package/lib/player/FloorLadder.d.cts +8 -7
  23. package/lib/player/StormcloudVideoPlayer.cjs +165 -79
  24. package/lib/player/StormcloudVideoPlayer.cjs.map +1 -1
  25. package/lib/player/StormcloudVideoPlayer.d.cts +3 -9
  26. package/lib/players/HlsPlayer.cjs +165 -79
  27. package/lib/players/HlsPlayer.cjs.map +1 -1
  28. package/lib/players/index.cjs +165 -79
  29. package/lib/players/index.cjs.map +1 -1
  30. package/lib/props.cjs +10 -12
  31. package/lib/props.cjs.map +1 -1
  32. package/lib/types.d.cts +3 -7
  33. package/lib/ui/StormcloudVideoPlayer.cjs +169 -140
  34. package/lib/ui/StormcloudVideoPlayer.cjs.map +1 -1
  35. package/lib/utils/tracking.cjs +7 -0
  36. package/lib/utils/tracking.cjs.map +1 -1
  37. package/lib/utils/tracking.d.cts +2 -1
  38. package/lib/utils/vastMacros.cjs +2 -1
  39. package/lib/utils/vastMacros.cjs.map +1 -1
  40. package/package.json +1 -1
@@ -1345,9 +1345,10 @@ function resolveScvpMacroValues(ctx) {
1345
1345
  var deviceId = (_ctx_deviceId = ctx.deviceId) === null || _ctx_deviceId === void 0 ? void 0 : _ctx_deviceId.trim();
1346
1346
  var deviceIdType = deviceId ? ((_ctx_deviceIdType = ctx.deviceIdType) === null || _ctx_deviceIdType === void 0 ? void 0 : _ctx_deviceIdType.trim()) || inferDeviceIdType() : void 0;
1347
1347
  if (deviceId && deviceIdType) {
1348
+ var _toFlag;
1348
1349
  set("RDID", deviceId);
1349
1350
  set("IDTYPE", deviceIdType);
1350
- set("IS-LAT", toFlag(ctx.limitAdTracking));
1351
+ set("IS-LAT", (_toFlag = toFlag(ctx.limitAdTracking)) !== null && _toFlag !== void 0 ? _toFlag : "0");
1351
1352
  }
1352
1353
  set("SID", ctx.sessionId);
1353
1354
  set("DTH", ctx.deviceTypeHint);
@@ -1682,21 +1683,19 @@ function fetchConsentSignals() {
1682
1683
  });
1683
1684
  }
1684
1685
  // src/player/FloorLadder.ts
1685
- var DEFAULT_WEB_FLOOR_LADDER_CONFIG = Object.freeze({
1686
+ var DISABLED_FLOOR_LADDER_CONFIG = Object.freeze({
1686
1687
  enabled: false,
1687
- targetingKey: "airytv_web_floor",
1688
- minFloorCents: 25,
1689
- maxFloorCents: 300,
1690
- stepCents: 25,
1691
- selectedFloorCents: 25,
1692
- fallbackFloorCents: 25,
1688
+ targetingKey: "",
1689
+ minFloorCents: 0,
1690
+ maxFloorCents: 0,
1691
+ stepCents: 0,
1692
+ selectedFloorCents: 0,
1693
+ fallbackFloorCents: 0,
1693
1694
  readyFloorCents: [],
1694
1695
  mode: "fixed",
1695
- allowedPositions: [
1696
- "midroll"
1697
- ],
1698
- targetAdUnitPath: "/21821455290/airytvadx/airytv-web",
1699
- configurationVersion: "2026-09-29.1"
1696
+ allowedPositions: [],
1697
+ targetAdUnitPath: "",
1698
+ configurationVersion: ""
1700
1699
  });
1701
1700
  var DEFAULT_FLOOR_LADDER_BOUNDS = Object.freeze({
1702
1701
  minCents: 25,
@@ -1715,15 +1714,6 @@ function generateFloorLevels(minCents, maxCents, stepCents) {
1715
1714
  }
1716
1715
  return levels;
1717
1716
  }
1718
- function resolveFloorLadderBounds() {
1719
- var overrides = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
1720
- var _overrides_minCents, _overrides_maxCents, _overrides_stepCents;
1721
- return {
1722
- minCents: (_overrides_minCents = overrides.minCents) !== null && _overrides_minCents !== void 0 ? _overrides_minCents : DEFAULT_FLOOR_LADDER_BOUNDS.minCents,
1723
- maxCents: (_overrides_maxCents = overrides.maxCents) !== null && _overrides_maxCents !== void 0 ? _overrides_maxCents : DEFAULT_FLOOR_LADDER_BOUNDS.maxCents,
1724
- stepCents: (_overrides_stepCents = overrides.stepCents) !== null && _overrides_stepCents !== void 0 ? _overrides_stepCents : DEFAULT_FLOOR_LADDER_BOUNDS.stepCents
1725
- };
1726
- }
1727
1717
  function validateFloorCents(value, config) {
1728
1718
  var bounds = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : DEFAULT_FLOOR_LADDER_BOUNDS;
1729
1719
  if (!isInteger(value)) return {
@@ -1855,7 +1845,6 @@ function resolveOpportunityFloor(config, context) {
1855
1845
  if (!config.enabled) return skipped("disabled");
1856
1846
  var positions = Array.isArray(config.allowedPositions) ? config.allowedPositions : [];
1857
1847
  if (positions.indexOf(context.position) === -1) return skipped("position_not_allowed");
1858
- if (context.isCtv) return skipped("ctv_excluded");
1859
1848
  if (!config.targetingKey) return skipped("missing_targeting_key");
1860
1849
  if (!config.targetAdUnitPath) return skipped("missing_target_ad_unit");
1861
1850
  var result;
@@ -2009,15 +1998,80 @@ function mergeDefined(target, update) {
2009
1998
  }
2010
1999
  return copyConfig(next);
2011
2000
  }
2001
+ var AD_POSITIONS = [
2002
+ "preroll",
2003
+ "midroll",
2004
+ "postroll"
2005
+ ];
2006
+ function finiteNumber(value) {
2007
+ return typeof value === "number" && isFinite(value) ? value : void 0;
2008
+ }
2009
+ function parseApiFloorLadder(raw) {
2010
+ if (!raw || (typeof raw === "undefined" ? "undefined" : _type_of(raw)) !== "object" || Array.isArray(raw)) return void 0;
2011
+ var src = raw;
2012
+ var out = {};
2013
+ if (typeof src.enabled === "boolean") out.enabled = src.enabled;
2014
+ if (typeof src.targetingKey === "string") out.targetingKey = src.targetingKey;
2015
+ if (typeof src.targetAdUnitPath === "string") out.targetAdUnitPath = src.targetAdUnitPath;
2016
+ if (typeof src.configurationVersion === "string") out.configurationVersion = src.configurationVersion;
2017
+ if (typeof src.mode === "string") out.mode = src.mode;
2018
+ var min = finiteNumber(src.minFloorCents);
2019
+ var max = finiteNumber(src.maxFloorCents);
2020
+ var step = finiteNumber(src.stepCents);
2021
+ var selected = finiteNumber(src.selectedFloorCents);
2022
+ var fallback = finiteNumber(src.fallbackFloorCents);
2023
+ if (min !== void 0) out.minFloorCents = min;
2024
+ if (max !== void 0) out.maxFloorCents = max;
2025
+ if (step !== void 0) out.stepCents = step;
2026
+ if (selected !== void 0) out.selectedFloorCents = selected;
2027
+ if (fallback !== void 0) out.fallbackFloorCents = fallback;
2028
+ if (Array.isArray(src.readyFloorCents)) {
2029
+ out.readyFloorCents = src.readyFloorCents.filter(function(cents) {
2030
+ return finiteNumber(cents) !== void 0;
2031
+ });
2032
+ }
2033
+ if (Array.isArray(src.allowedPositions)) {
2034
+ out.allowedPositions = src.allowedPositions.filter(function(position) {
2035
+ return AD_POSITIONS.indexOf(position) !== -1;
2036
+ });
2037
+ }
2038
+ return out;
2039
+ }
2012
2040
  var FloorLadderController = /*#__PURE__*/ function() {
2013
- function FloorLadderController(initial, bounds) {
2014
- var selector = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : fixedFloorSelector;
2041
+ function FloorLadderController() {
2042
+ var selector = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : fixedFloorSelector;
2015
2043
  _class_call_check(this, FloorLadderController);
2016
- this.config = mergeDefined(copyConfig(DEFAULT_WEB_FLOOR_LADDER_CONFIG), initial);
2017
- this.bounds = Object.freeze(resolveFloorLadderBounds(bounds));
2044
+ this.bounds = DEFAULT_FLOOR_LADDER_BOUNDS;
2045
+ this.config = copyConfig(DISABLED_FLOOR_LADDER_CONFIG);
2018
2046
  this.selector = selector;
2019
2047
  }
2020
2048
  _create_class(FloorLadderController, [
2049
+ {
2050
+ key: "isEnabled",
2051
+ value: function isEnabled() {
2052
+ return this.config.enabled === true;
2053
+ }
2054
+ },
2055
+ {
2056
+ key: "applyApiConfig",
2057
+ value: function applyApiConfig(raw) {
2058
+ var parsed = parseApiFloorLadder(raw);
2059
+ this.config = mergeDefined(copyConfig(DISABLED_FLOOR_LADDER_CONFIG), parsed);
2060
+ this.bounds = Object.freeze({
2061
+ minCents: this.config.minFloorCents,
2062
+ maxCents: this.config.maxFloorCents,
2063
+ stepCents: this.config.stepCents
2064
+ });
2065
+ return validateFloorLadderConfig(this.config, this.bounds);
2066
+ }
2067
+ },
2068
+ {
2069
+ key: "reset",
2070
+ value: function reset() {
2071
+ this.config = copyConfig(DISABLED_FLOOR_LADDER_CONFIG);
2072
+ this.bounds = DEFAULT_FLOOR_LADDER_BOUNDS;
2073
+ }
2074
+ },
2021
2075
  {
2022
2076
  key: "get",
2023
2077
  value: function get() {
@@ -2030,13 +2084,6 @@ var FloorLadderController = /*#__PURE__*/ function() {
2030
2084
  return _object_spread({}, this.bounds);
2031
2085
  }
2032
2086
  },
2033
- {
2034
- key: "update",
2035
- value: function update(update) {
2036
- this.config = mergeDefined(this.config, update);
2037
- return validateFloorLadderConfig(this.config, this.bounds);
2038
- }
2039
- },
2040
2087
  {
2041
2088
  key: "validate",
2042
2089
  value: function validate() {
@@ -6269,6 +6316,9 @@ function resolvePlayerIdentitySeed(clientInfo) {
6269
6316
  }
6270
6317
  return "fingerprint:".concat(JSON.stringify(clientInfo));
6271
6318
  }
6319
+ function getCachedBrowserId() {
6320
+ return cachedBrowserId !== null && cachedBrowserId !== void 0 ? cachedBrowserId : void 0;
6321
+ }
6272
6322
  function getBrowserID(clientInfo) {
6273
6323
  return _async_to_generator(function() {
6274
6324
  return _ts_generator(this, function(_state) {
@@ -7938,7 +7988,7 @@ var AdConfigManager = /*#__PURE__*/ function() {
7938
7988
  key: "fetchAdConfiguration",
7939
7989
  value: function fetchAdConfiguration() {
7940
7990
  return _async_to_generator(function() {
7941
- var _data_response_ima_publisherdeskima, _data_response_ima, _data_response, _data_response_options_vast_cue_tones, _data_response_options_vast, _data_response_options, _data_response1, apiUrl, headers, response, data, imaPayload, decodedPayload, numberAds;
7991
+ 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;
7942
7992
  return _ts_generator(this, function(_state) {
7943
7993
  switch(_state.label){
7944
7994
  case 0:
@@ -7998,7 +8048,21 @@ var AdConfigManager = /*#__PURE__*/ function() {
7998
8048
  ];
7999
8049
  case 4:
8000
8050
  data = _state.sent();
8001
- imaPayload = (_data_response = data.response) === null || _data_response === void 0 ? void 0 : (_data_response_ima = _data_response.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;
8051
+ apiEnableEdge = (_data_response = data.response) === null || _data_response === void 0 ? void 0 : _data_response.enableEdgePodRequest;
8052
+ apiEdgeUrl = (_data_response1 = data.response) === null || _data_response1 === void 0 ? void 0 : _data_response1.edgePodUrl;
8053
+ this.apiEnableEdgePodRequest = typeof apiEnableEdge === "boolean" ? apiEnableEdge : void 0;
8054
+ this.apiEdgePodUrl = typeof apiEdgeUrl === "string" ? apiEdgeUrl : void 0;
8055
+ if (this.debug) {
8056
+ console.log("[StormcloudVideoPlayer] Edge pod settings from API:", {
8057
+ enableEdgePodRequest: this.apiEnableEdgePodRequest,
8058
+ edgePodUrl: this.apiEdgePodUrl
8059
+ });
8060
+ }
8061
+ this.apiFloorLadder = (_data_response2 = data.response) === null || _data_response2 === void 0 ? void 0 : _data_response2.floorLadder;
8062
+ if (this.debug) {
8063
+ console.log(this.apiFloorLadder ? "[StormcloudVideoPlayer] Floor ladder from API:" : "[StormcloudVideoPlayer] No floorLadder block in /ads/web response", this.apiFloorLadder);
8064
+ }
8065
+ 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;
8002
8066
  if (imaPayload) {
8003
8067
  decodedPayload = imaPayload;
8004
8068
  try {
@@ -8016,7 +8080,7 @@ var AdConfigManager = /*#__PURE__*/ function() {
8016
8080
  console.warn("[StormcloudVideoPlayer] No VAST tag URL found in /ads/web response");
8017
8081
  }
8018
8082
  }
8019
- numberAds = (_data_response1 = data.response) === null || _data_response1 === void 0 ? void 0 : (_data_response_options = _data_response1.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;
8083
+ 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;
8020
8084
  if (numberAds != null && numberAds > 0) {
8021
8085
  this.apiNumberAds = numberAds;
8022
8086
  if (this.debug) {
@@ -9850,7 +9914,23 @@ function resolveEdgePodBaseUrl(config) {
9850
9914
  return void 0;
9851
9915
  }
9852
9916
  }
9917
+ function resolveEdgePodRequestContext(config) {
9918
+ var extra = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
9919
+ return {
9920
+ width: extra.width,
9921
+ height: extra.height,
9922
+ playerId: extra.playerId,
9923
+ contentNetwork: config.contentNetwork,
9924
+ contentChannel: config.channelName,
9925
+ contentTitle: config.programTitle
9926
+ };
9927
+ }
9928
+ function setOptionalParam(url, key, value) {
9929
+ var trimmed = value === null || value === void 0 ? void 0 : value.trim();
9930
+ if (trimmed) url.searchParams.set(key, trimmed);
9931
+ }
9853
9932
  function buildEdgePodUrl(baseUrl, remainingMs, remainingAdLimit) {
9933
+ var context = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {};
9854
9934
  var url = new URL(baseUrl);
9855
9935
  var maxMs = Math.max(0, Math.floor(remainingMs));
9856
9936
  var maxAds = Math.max(1, Math.min(EDGE_POD_MAX_ADS, Math.floor(remainingAdLimit)));
@@ -9858,6 +9938,16 @@ function buildEdgePodUrl(baseUrl, remainingMs, remainingAdLimit) {
9858
9938
  url.searchParams.set("pmad", String(maxAds));
9859
9939
  url.searchParams.set("duration", String(Math.floor(maxMs / 1e3)));
9860
9940
  url.searchParams.set("count", String(maxAds));
9941
+ if (context.width != null && Number.isFinite(context.width) && context.width > 0) {
9942
+ url.searchParams.set("width", String(Math.round(context.width)));
9943
+ }
9944
+ if (context.height != null && Number.isFinite(context.height) && context.height > 0) {
9945
+ url.searchParams.set("height", String(Math.round(context.height)));
9946
+ }
9947
+ setOptionalParam(url, "pid", context.playerId);
9948
+ setOptionalParam(url, "cn", context.contentNetwork);
9949
+ setOptionalParam(url, "cc", context.contentChannel);
9950
+ setOptionalParam(url, "ct", context.contentTitle);
9861
9951
  return url.toString();
9862
9952
  }
9863
9953
  function classifyEdgeVastResponse(result) {
@@ -10745,7 +10835,12 @@ var AdBreakOrchestrator = /*#__PURE__*/ function() {
10745
10835
  return void 0;
10746
10836
  }
10747
10837
  try {
10748
- return buildEdgePodUrl(baseUrl, remainingMs, remainingAds);
10838
+ var playerId = getCachedBrowserId();
10839
+ return buildEdgePodUrl(baseUrl, remainingMs, remainingAds, resolveEdgePodRequestContext(this.host.config, {
10840
+ width: this.host.video.offsetWidth || this.host.video.clientWidth,
10841
+ height: this.host.video.offsetHeight || this.host.video.clientHeight,
10842
+ playerId: playerId
10843
+ }));
10749
10844
  } catch (unused) {
10750
10845
  this.markEdgeExhausted("invalid_edge_url");
10751
10846
  return void 0;
@@ -12255,14 +12350,7 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
12255
12350
  this.config = _object_spread({}, browserOverrides, config);
12256
12351
  this.video = config.videoElement;
12257
12352
  logBrowserInfo(config.debugAdTiming);
12258
- var floorBounds = {};
12259
- if (this.config.adFloorMinCents != null) floorBounds.minCents = this.config.adFloorMinCents;
12260
- if (this.config.adFloorMaxCents != null) floorBounds.maxCents = this.config.adFloorMaxCents;
12261
- if (this.config.adFloorStepCents != null) floorBounds.stepCents = this.config.adFloorStepCents;
12262
- this.floorLadder = new FloorLadderController(this.config.adFloorLadder, floorBounds);
12263
- this.floorLadderEnabled = this.config.adFloorLadderEnabled === true;
12264
- this.warnOnInvalidFloorLadder(this.floorLadder.validate());
12265
- this.edgePodBaseUrl = resolveEdgePodBaseUrl(this.config);
12353
+ this.floorLadder = new FloorLadderController();
12266
12354
  this.adPlayer = this.createAdPlayer(false);
12267
12355
  this.palNonce = createPalNonceManager();
12268
12356
  this.cueManager = new Scte35CueManager(!!this.config.debugAdTiming, {
@@ -12369,9 +12457,8 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
12369
12457
  return _this.edgePodBaseUrl;
12370
12458
  },
12371
12459
  getFloorSnapshot: function getFloorSnapshot(position) {
12372
- return _this.floorLadderEnabled ? _this.floorLadder.snapshotFor({
12373
- position: position,
12374
- isCtv: _this.isCtvEnvironment()
12460
+ return _this.floorLadder.isEnabled() ? _this.floorLadder.snapshotFor({
12461
+ position: position
12375
12462
  }) : void 0;
12376
12463
  },
12377
12464
  onAdClick: function onAdClick() {
@@ -12408,45 +12495,42 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
12408
12495
  }
12409
12496
  },
12410
12497
  {
12411
- key: "isCtvEnvironment",
12412
- value: function isCtvEnvironment() {
12413
- if (this.config.ctvAdRequest) return true;
12414
- var hint = inferDeviceTypeHint(false);
12415
- return hint === DEVICE_TYPE_HINT.CONNECTED_TV || hint === DEVICE_TYPE_HINT.SET_TOP_BOX;
12416
- }
12417
- },
12418
- {
12419
- key: "setAdFloorLadder",
12420
- value: function setAdFloorLadder(update) {
12421
- var report = this.floorLadder.update(update);
12498
+ key: "applyFloorLadderFromApi",
12499
+ value: function applyFloorLadderFromApi() {
12500
+ var raw = this.adConfig.apiFloorLadder;
12501
+ if (raw == null) {
12502
+ this.floorLadder.reset();
12503
+ return;
12504
+ }
12505
+ var report = this.floorLadder.applyApiConfig(raw);
12422
12506
  this.warnOnInvalidFloorLadder(report);
12423
- return report;
12424
- }
12425
- },
12426
- {
12427
- key: "setAdFloorLadderEnabled",
12428
- value: function setAdFloorLadderEnabled(enabled) {
12429
- this.floorLadderEnabled = enabled;
12430
- if (enabled) this.warnOnInvalidFloorLadder(this.floorLadder.validate());
12507
+ if (this.debug) {
12508
+ console.log("[AdBreak][FLOOR] configuration applied from API", {
12509
+ config: this.floorLadder.get(),
12510
+ bounds: this.floorLadder.getBounds(),
12511
+ validation: report
12512
+ });
12513
+ }
12431
12514
  }
12432
12515
  },
12433
12516
  {
12434
12517
  key: "isAdFloorLadderEnabled",
12435
12518
  value: function isAdFloorLadderEnabled() {
12436
- return this.floorLadderEnabled;
12519
+ return this.floorLadder.isEnabled();
12437
12520
  }
12438
12521
  },
12439
12522
  {
12440
- key: "setEdgePodRequest",
12441
- value: function setEdgePodRequest(update) {
12442
- if (update.enableEdgePodRequest === this.config.enableEdgePodRequest && update.edgePodUrl === this.config.edgePodUrl) {
12443
- return;
12523
+ key: "applyEdgePodFromApi",
12524
+ value: function applyEdgePodFromApi() {
12525
+ this.edgePodBaseUrl = resolveEdgePodBaseUrl({
12526
+ enableEdgePodRequest: this.adConfig.apiEnableEdgePodRequest,
12527
+ edgePodUrl: this.adConfig.apiEdgePodUrl,
12528
+ licenseKey: this.config.licenseKey
12529
+ });
12530
+ if (this.debug) {
12531
+ var _this_edgePodBaseUrl;
12532
+ console.log("[AdBreak][EDGE] edge pod base URL from API:", (_this_edgePodBaseUrl = this.edgePodBaseUrl) !== null && _this_edgePodBaseUrl !== void 0 ? _this_edgePodBaseUrl : "(disabled; GAM only)");
12444
12533
  }
12445
- if (update.enableEdgePodRequest === void 0) delete this.config.enableEdgePodRequest;
12446
- else this.config.enableEdgePodRequest = update.enableEdgePodRequest;
12447
- if (update.edgePodUrl === void 0) delete this.config.edgePodUrl;
12448
- else this.config.edgePodUrl = update.edgePodUrl;
12449
- this.edgePodBaseUrl = resolveEdgePodBaseUrl(this.config);
12450
12534
  }
12451
12535
  },
12452
12536
  {
@@ -12459,7 +12543,7 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
12459
12543
  key: "warnOnInvalidFloorLadder",
12460
12544
  value: function warnOnInvalidFloorLadder(report) {
12461
12545
  var config = this.floorLadder.get();
12462
- if (report.ok || !this.floorLadderEnabled || !config.enabled) return;
12546
+ if (report.ok || !config.enabled) return;
12463
12547
  console.warn("[AdBreak][FLOOR] configuration has issues; invalid floors will not be sent", {
12464
12548
  errors: report.errors,
12465
12549
  configurationVersion: config.configurationVersion,
@@ -12534,6 +12618,8 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
12534
12618
  4
12535
12619
  ];
12536
12620
  case 4:
12621
+ this.applyFloorLadderFromApi();
12622
+ this.applyEdgePodFromApi();
12537
12623
  palDescriptionUrl = this.config.ctvAdRequest ? this.adConfig.getPalDescriptionUrl() : void 0;
12538
12624
  fetchConsentSignals().catch(function() {
12539
12625
  return {};