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
@@ -1428,9 +1428,10 @@ function resolveScvpMacroValues(ctx) {
1428
1428
  var deviceId = (_ctx_deviceId = ctx.deviceId) === null || _ctx_deviceId === void 0 ? void 0 : _ctx_deviceId.trim();
1429
1429
  var deviceIdType = deviceId ? ((_ctx_deviceIdType = ctx.deviceIdType) === null || _ctx_deviceIdType === void 0 ? void 0 : _ctx_deviceIdType.trim()) || inferDeviceIdType() : void 0;
1430
1430
  if (deviceId && deviceIdType) {
1431
+ var _toFlag;
1431
1432
  set("RDID", deviceId);
1432
1433
  set("IDTYPE", deviceIdType);
1433
- set("IS-LAT", toFlag(ctx.limitAdTracking));
1434
+ set("IS-LAT", (_toFlag = toFlag(ctx.limitAdTracking)) !== null && _toFlag !== void 0 ? _toFlag : "0");
1434
1435
  }
1435
1436
  set("SID", ctx.sessionId);
1436
1437
  set("DTH", ctx.deviceTypeHint);
@@ -1765,21 +1766,19 @@ function fetchConsentSignals() {
1765
1766
  });
1766
1767
  }
1767
1768
  // src/player/FloorLadder.ts
1768
- var DEFAULT_WEB_FLOOR_LADDER_CONFIG = Object.freeze({
1769
+ var DISABLED_FLOOR_LADDER_CONFIG = Object.freeze({
1769
1770
  enabled: false,
1770
- targetingKey: "airytv_web_floor",
1771
- minFloorCents: 25,
1772
- maxFloorCents: 300,
1773
- stepCents: 25,
1774
- selectedFloorCents: 25,
1775
- fallbackFloorCents: 25,
1771
+ targetingKey: "",
1772
+ minFloorCents: 0,
1773
+ maxFloorCents: 0,
1774
+ stepCents: 0,
1775
+ selectedFloorCents: 0,
1776
+ fallbackFloorCents: 0,
1776
1777
  readyFloorCents: [],
1777
1778
  mode: "fixed",
1778
- allowedPositions: [
1779
- "midroll"
1780
- ],
1781
- targetAdUnitPath: "/21821455290/airytvadx/airytv-web",
1782
- configurationVersion: "2026-09-29.1"
1779
+ allowedPositions: [],
1780
+ targetAdUnitPath: "",
1781
+ configurationVersion: ""
1783
1782
  });
1784
1783
  var DEFAULT_FLOOR_LADDER_BOUNDS = Object.freeze({
1785
1784
  minCents: 25,
@@ -1798,15 +1797,6 @@ function generateFloorLevels(minCents, maxCents, stepCents) {
1798
1797
  }
1799
1798
  return levels;
1800
1799
  }
1801
- function resolveFloorLadderBounds() {
1802
- var overrides = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
1803
- var _overrides_minCents, _overrides_maxCents, _overrides_stepCents;
1804
- return {
1805
- minCents: (_overrides_minCents = overrides.minCents) !== null && _overrides_minCents !== void 0 ? _overrides_minCents : DEFAULT_FLOOR_LADDER_BOUNDS.minCents,
1806
- maxCents: (_overrides_maxCents = overrides.maxCents) !== null && _overrides_maxCents !== void 0 ? _overrides_maxCents : DEFAULT_FLOOR_LADDER_BOUNDS.maxCents,
1807
- stepCents: (_overrides_stepCents = overrides.stepCents) !== null && _overrides_stepCents !== void 0 ? _overrides_stepCents : DEFAULT_FLOOR_LADDER_BOUNDS.stepCents
1808
- };
1809
- }
1810
1800
  function validateFloorCents(value, config) {
1811
1801
  var bounds = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : DEFAULT_FLOOR_LADDER_BOUNDS;
1812
1802
  if (!isInteger(value)) return {
@@ -1938,7 +1928,6 @@ function resolveOpportunityFloor(config, context) {
1938
1928
  if (!config.enabled) return skipped("disabled");
1939
1929
  var positions = Array.isArray(config.allowedPositions) ? config.allowedPositions : [];
1940
1930
  if (positions.indexOf(context.position) === -1) return skipped("position_not_allowed");
1941
- if (context.isCtv) return skipped("ctv_excluded");
1942
1931
  if (!config.targetingKey) return skipped("missing_targeting_key");
1943
1932
  if (!config.targetAdUnitPath) return skipped("missing_target_ad_unit");
1944
1933
  var result;
@@ -2092,15 +2081,80 @@ function mergeDefined(target, update) {
2092
2081
  }
2093
2082
  return copyConfig(next);
2094
2083
  }
2084
+ var AD_POSITIONS = [
2085
+ "preroll",
2086
+ "midroll",
2087
+ "postroll"
2088
+ ];
2089
+ function finiteNumber(value) {
2090
+ return typeof value === "number" && isFinite(value) ? value : void 0;
2091
+ }
2092
+ function parseApiFloorLadder(raw) {
2093
+ if (!raw || (typeof raw === "undefined" ? "undefined" : _type_of(raw)) !== "object" || Array.isArray(raw)) return void 0;
2094
+ var src = raw;
2095
+ var out = {};
2096
+ if (typeof src.enabled === "boolean") out.enabled = src.enabled;
2097
+ if (typeof src.targetingKey === "string") out.targetingKey = src.targetingKey;
2098
+ if (typeof src.targetAdUnitPath === "string") out.targetAdUnitPath = src.targetAdUnitPath;
2099
+ if (typeof src.configurationVersion === "string") out.configurationVersion = src.configurationVersion;
2100
+ if (typeof src.mode === "string") out.mode = src.mode;
2101
+ var min = finiteNumber(src.minFloorCents);
2102
+ var max = finiteNumber(src.maxFloorCents);
2103
+ var step = finiteNumber(src.stepCents);
2104
+ var selected = finiteNumber(src.selectedFloorCents);
2105
+ var fallback = finiteNumber(src.fallbackFloorCents);
2106
+ if (min !== void 0) out.minFloorCents = min;
2107
+ if (max !== void 0) out.maxFloorCents = max;
2108
+ if (step !== void 0) out.stepCents = step;
2109
+ if (selected !== void 0) out.selectedFloorCents = selected;
2110
+ if (fallback !== void 0) out.fallbackFloorCents = fallback;
2111
+ if (Array.isArray(src.readyFloorCents)) {
2112
+ out.readyFloorCents = src.readyFloorCents.filter(function(cents) {
2113
+ return finiteNumber(cents) !== void 0;
2114
+ });
2115
+ }
2116
+ if (Array.isArray(src.allowedPositions)) {
2117
+ out.allowedPositions = src.allowedPositions.filter(function(position) {
2118
+ return AD_POSITIONS.indexOf(position) !== -1;
2119
+ });
2120
+ }
2121
+ return out;
2122
+ }
2095
2123
  var FloorLadderController = /*#__PURE__*/ function() {
2096
- function FloorLadderController(initial, bounds) {
2097
- var selector = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : fixedFloorSelector;
2124
+ function FloorLadderController() {
2125
+ var selector = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : fixedFloorSelector;
2098
2126
  _class_call_check(this, FloorLadderController);
2099
- this.config = mergeDefined(copyConfig(DEFAULT_WEB_FLOOR_LADDER_CONFIG), initial);
2100
- this.bounds = Object.freeze(resolveFloorLadderBounds(bounds));
2127
+ this.bounds = DEFAULT_FLOOR_LADDER_BOUNDS;
2128
+ this.config = copyConfig(DISABLED_FLOOR_LADDER_CONFIG);
2101
2129
  this.selector = selector;
2102
2130
  }
2103
2131
  _create_class(FloorLadderController, [
2132
+ {
2133
+ key: "isEnabled",
2134
+ value: function isEnabled() {
2135
+ return this.config.enabled === true;
2136
+ }
2137
+ },
2138
+ {
2139
+ key: "applyApiConfig",
2140
+ value: function applyApiConfig(raw) {
2141
+ var parsed = parseApiFloorLadder(raw);
2142
+ this.config = mergeDefined(copyConfig(DISABLED_FLOOR_LADDER_CONFIG), parsed);
2143
+ this.bounds = Object.freeze({
2144
+ minCents: this.config.minFloorCents,
2145
+ maxCents: this.config.maxFloorCents,
2146
+ stepCents: this.config.stepCents
2147
+ });
2148
+ return validateFloorLadderConfig(this.config, this.bounds);
2149
+ }
2150
+ },
2151
+ {
2152
+ key: "reset",
2153
+ value: function reset() {
2154
+ this.config = copyConfig(DISABLED_FLOOR_LADDER_CONFIG);
2155
+ this.bounds = DEFAULT_FLOOR_LADDER_BOUNDS;
2156
+ }
2157
+ },
2104
2158
  {
2105
2159
  key: "get",
2106
2160
  value: function get() {
@@ -2113,13 +2167,6 @@ var FloorLadderController = /*#__PURE__*/ function() {
2113
2167
  return _object_spread({}, this.bounds);
2114
2168
  }
2115
2169
  },
2116
- {
2117
- key: "update",
2118
- value: function update(update) {
2119
- this.config = mergeDefined(this.config, update);
2120
- return validateFloorLadderConfig(this.config, this.bounds);
2121
- }
2122
- },
2123
2170
  {
2124
2171
  key: "validate",
2125
2172
  value: function validate() {
@@ -6352,6 +6399,9 @@ function resolvePlayerIdentitySeed(clientInfo) {
6352
6399
  }
6353
6400
  return "fingerprint:".concat(JSON.stringify(clientInfo));
6354
6401
  }
6402
+ function getCachedBrowserId() {
6403
+ return cachedBrowserId !== null && cachedBrowserId !== void 0 ? cachedBrowserId : void 0;
6404
+ }
6355
6405
  function getBrowserID(clientInfo) {
6356
6406
  return _async_to_generator(function() {
6357
6407
  return _ts_generator(this, function(_state) {
@@ -8021,7 +8071,7 @@ var AdConfigManager = /*#__PURE__*/ function() {
8021
8071
  key: "fetchAdConfiguration",
8022
8072
  value: function fetchAdConfiguration() {
8023
8073
  return _async_to_generator(function() {
8024
- 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;
8074
+ 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;
8025
8075
  return _ts_generator(this, function(_state) {
8026
8076
  switch(_state.label){
8027
8077
  case 0:
@@ -8081,7 +8131,21 @@ var AdConfigManager = /*#__PURE__*/ function() {
8081
8131
  ];
8082
8132
  case 4:
8083
8133
  data = _state.sent();
8084
- 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;
8134
+ apiEnableEdge = (_data_response = data.response) === null || _data_response === void 0 ? void 0 : _data_response.enableEdgePodRequest;
8135
+ apiEdgeUrl = (_data_response1 = data.response) === null || _data_response1 === void 0 ? void 0 : _data_response1.edgePodUrl;
8136
+ this.apiEnableEdgePodRequest = typeof apiEnableEdge === "boolean" ? apiEnableEdge : void 0;
8137
+ this.apiEdgePodUrl = typeof apiEdgeUrl === "string" ? apiEdgeUrl : void 0;
8138
+ if (this.debug) {
8139
+ console.log("[StormcloudVideoPlayer] Edge pod settings from API:", {
8140
+ enableEdgePodRequest: this.apiEnableEdgePodRequest,
8141
+ edgePodUrl: this.apiEdgePodUrl
8142
+ });
8143
+ }
8144
+ this.apiFloorLadder = (_data_response2 = data.response) === null || _data_response2 === void 0 ? void 0 : _data_response2.floorLadder;
8145
+ if (this.debug) {
8146
+ console.log(this.apiFloorLadder ? "[StormcloudVideoPlayer] Floor ladder from API:" : "[StormcloudVideoPlayer] No floorLadder block in /ads/web response", this.apiFloorLadder);
8147
+ }
8148
+ 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;
8085
8149
  if (imaPayload) {
8086
8150
  decodedPayload = imaPayload;
8087
8151
  try {
@@ -8099,7 +8163,7 @@ var AdConfigManager = /*#__PURE__*/ function() {
8099
8163
  console.warn("[StormcloudVideoPlayer] No VAST tag URL found in /ads/web response");
8100
8164
  }
8101
8165
  }
8102
- 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;
8166
+ 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;
8103
8167
  if (numberAds != null && numberAds > 0) {
8104
8168
  this.apiNumberAds = numberAds;
8105
8169
  if (this.debug) {
@@ -9933,7 +9997,23 @@ function resolveEdgePodBaseUrl(config) {
9933
9997
  return void 0;
9934
9998
  }
9935
9999
  }
10000
+ function resolveEdgePodRequestContext(config) {
10001
+ var extra = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
10002
+ return {
10003
+ width: extra.width,
10004
+ height: extra.height,
10005
+ playerId: extra.playerId,
10006
+ contentNetwork: config.contentNetwork,
10007
+ contentChannel: config.channelName,
10008
+ contentTitle: config.programTitle
10009
+ };
10010
+ }
10011
+ function setOptionalParam(url, key, value) {
10012
+ var trimmed = value === null || value === void 0 ? void 0 : value.trim();
10013
+ if (trimmed) url.searchParams.set(key, trimmed);
10014
+ }
9936
10015
  function buildEdgePodUrl(baseUrl, remainingMs, remainingAdLimit) {
10016
+ var context = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {};
9937
10017
  var url = new URL(baseUrl);
9938
10018
  var maxMs = Math.max(0, Math.floor(remainingMs));
9939
10019
  var maxAds = Math.max(1, Math.min(EDGE_POD_MAX_ADS, Math.floor(remainingAdLimit)));
@@ -9941,6 +10021,16 @@ function buildEdgePodUrl(baseUrl, remainingMs, remainingAdLimit) {
9941
10021
  url.searchParams.set("pmad", String(maxAds));
9942
10022
  url.searchParams.set("duration", String(Math.floor(maxMs / 1e3)));
9943
10023
  url.searchParams.set("count", String(maxAds));
10024
+ if (context.width != null && Number.isFinite(context.width) && context.width > 0) {
10025
+ url.searchParams.set("width", String(Math.round(context.width)));
10026
+ }
10027
+ if (context.height != null && Number.isFinite(context.height) && context.height > 0) {
10028
+ url.searchParams.set("height", String(Math.round(context.height)));
10029
+ }
10030
+ setOptionalParam(url, "pid", context.playerId);
10031
+ setOptionalParam(url, "cn", context.contentNetwork);
10032
+ setOptionalParam(url, "cc", context.contentChannel);
10033
+ setOptionalParam(url, "ct", context.contentTitle);
9944
10034
  return url.toString();
9945
10035
  }
9946
10036
  function classifyEdgeVastResponse(result) {
@@ -10828,7 +10918,12 @@ var AdBreakOrchestrator = /*#__PURE__*/ function() {
10828
10918
  return void 0;
10829
10919
  }
10830
10920
  try {
10831
- return buildEdgePodUrl(baseUrl, remainingMs, remainingAds);
10921
+ var playerId = getCachedBrowserId();
10922
+ return buildEdgePodUrl(baseUrl, remainingMs, remainingAds, resolveEdgePodRequestContext(this.host.config, {
10923
+ width: this.host.video.offsetWidth || this.host.video.clientWidth,
10924
+ height: this.host.video.offsetHeight || this.host.video.clientHeight,
10925
+ playerId: playerId
10926
+ }));
10832
10927
  } catch (unused) {
10833
10928
  this.markEdgeExhausted("invalid_edge_url");
10834
10929
  return void 0;
@@ -12338,14 +12433,7 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
12338
12433
  this.config = _object_spread({}, browserOverrides, config);
12339
12434
  this.video = config.videoElement;
12340
12435
  logBrowserInfo(config.debugAdTiming);
12341
- var floorBounds = {};
12342
- if (this.config.adFloorMinCents != null) floorBounds.minCents = this.config.adFloorMinCents;
12343
- if (this.config.adFloorMaxCents != null) floorBounds.maxCents = this.config.adFloorMaxCents;
12344
- if (this.config.adFloorStepCents != null) floorBounds.stepCents = this.config.adFloorStepCents;
12345
- this.floorLadder = new FloorLadderController(this.config.adFloorLadder, floorBounds);
12346
- this.floorLadderEnabled = this.config.adFloorLadderEnabled === true;
12347
- this.warnOnInvalidFloorLadder(this.floorLadder.validate());
12348
- this.edgePodBaseUrl = resolveEdgePodBaseUrl(this.config);
12436
+ this.floorLadder = new FloorLadderController();
12349
12437
  this.adPlayer = this.createAdPlayer(false);
12350
12438
  this.palNonce = createPalNonceManager();
12351
12439
  this.cueManager = new Scte35CueManager(!!this.config.debugAdTiming, {
@@ -12452,9 +12540,8 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
12452
12540
  return _this.edgePodBaseUrl;
12453
12541
  },
12454
12542
  getFloorSnapshot: function getFloorSnapshot(position) {
12455
- return _this.floorLadderEnabled ? _this.floorLadder.snapshotFor({
12456
- position: position,
12457
- isCtv: _this.isCtvEnvironment()
12543
+ return _this.floorLadder.isEnabled() ? _this.floorLadder.snapshotFor({
12544
+ position: position
12458
12545
  }) : void 0;
12459
12546
  },
12460
12547
  onAdClick: function onAdClick() {
@@ -12491,45 +12578,42 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
12491
12578
  }
12492
12579
  },
12493
12580
  {
12494
- key: "isCtvEnvironment",
12495
- value: function isCtvEnvironment() {
12496
- if (this.config.ctvAdRequest) return true;
12497
- var hint = inferDeviceTypeHint(false);
12498
- return hint === DEVICE_TYPE_HINT.CONNECTED_TV || hint === DEVICE_TYPE_HINT.SET_TOP_BOX;
12499
- }
12500
- },
12501
- {
12502
- key: "setAdFloorLadder",
12503
- value: function setAdFloorLadder(update) {
12504
- var report = this.floorLadder.update(update);
12581
+ key: "applyFloorLadderFromApi",
12582
+ value: function applyFloorLadderFromApi() {
12583
+ var raw = this.adConfig.apiFloorLadder;
12584
+ if (raw == null) {
12585
+ this.floorLadder.reset();
12586
+ return;
12587
+ }
12588
+ var report = this.floorLadder.applyApiConfig(raw);
12505
12589
  this.warnOnInvalidFloorLadder(report);
12506
- return report;
12507
- }
12508
- },
12509
- {
12510
- key: "setAdFloorLadderEnabled",
12511
- value: function setAdFloorLadderEnabled(enabled) {
12512
- this.floorLadderEnabled = enabled;
12513
- if (enabled) this.warnOnInvalidFloorLadder(this.floorLadder.validate());
12590
+ if (this.debug) {
12591
+ console.log("[AdBreak][FLOOR] configuration applied from API", {
12592
+ config: this.floorLadder.get(),
12593
+ bounds: this.floorLadder.getBounds(),
12594
+ validation: report
12595
+ });
12596
+ }
12514
12597
  }
12515
12598
  },
12516
12599
  {
12517
12600
  key: "isAdFloorLadderEnabled",
12518
12601
  value: function isAdFloorLadderEnabled() {
12519
- return this.floorLadderEnabled;
12602
+ return this.floorLadder.isEnabled();
12520
12603
  }
12521
12604
  },
12522
12605
  {
12523
- key: "setEdgePodRequest",
12524
- value: function setEdgePodRequest(update) {
12525
- if (update.enableEdgePodRequest === this.config.enableEdgePodRequest && update.edgePodUrl === this.config.edgePodUrl) {
12526
- return;
12606
+ key: "applyEdgePodFromApi",
12607
+ value: function applyEdgePodFromApi() {
12608
+ this.edgePodBaseUrl = resolveEdgePodBaseUrl({
12609
+ enableEdgePodRequest: this.adConfig.apiEnableEdgePodRequest,
12610
+ edgePodUrl: this.adConfig.apiEdgePodUrl,
12611
+ licenseKey: this.config.licenseKey
12612
+ });
12613
+ if (this.debug) {
12614
+ var _this_edgePodBaseUrl;
12615
+ console.log("[AdBreak][EDGE] edge pod base URL from API:", (_this_edgePodBaseUrl = this.edgePodBaseUrl) !== null && _this_edgePodBaseUrl !== void 0 ? _this_edgePodBaseUrl : "(disabled; GAM only)");
12527
12616
  }
12528
- if (update.enableEdgePodRequest === void 0) delete this.config.enableEdgePodRequest;
12529
- else this.config.enableEdgePodRequest = update.enableEdgePodRequest;
12530
- if (update.edgePodUrl === void 0) delete this.config.edgePodUrl;
12531
- else this.config.edgePodUrl = update.edgePodUrl;
12532
- this.edgePodBaseUrl = resolveEdgePodBaseUrl(this.config);
12533
12617
  }
12534
12618
  },
12535
12619
  {
@@ -12542,7 +12626,7 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
12542
12626
  key: "warnOnInvalidFloorLadder",
12543
12627
  value: function warnOnInvalidFloorLadder(report) {
12544
12628
  var config = this.floorLadder.get();
12545
- if (report.ok || !this.floorLadderEnabled || !config.enabled) return;
12629
+ if (report.ok || !config.enabled) return;
12546
12630
  console.warn("[AdBreak][FLOOR] configuration has issues; invalid floors will not be sent", {
12547
12631
  errors: report.errors,
12548
12632
  configurationVersion: config.configurationVersion,
@@ -12617,6 +12701,8 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
12617
12701
  4
12618
12702
  ];
12619
12703
  case 4:
12704
+ this.applyFloorLadderFromApi();
12705
+ this.applyEdgePodFromApi();
12620
12706
  palDescriptionUrl = this.config.ctvAdRequest ? this.adConfig.getPalDescriptionUrl() : void 0;
12621
12707
  fetchConsentSignals().catch(function() {
12622
12708
  return {};