stormcloud-video-player 0.8.75 → 0.8.77

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/Player.d.cts +9 -1
  5. package/lib/StormcloudPlayer.cjs +173 -78
  6. package/lib/StormcloudPlayer.cjs.map +1 -1
  7. package/lib/index.cjs +184 -133
  8. package/lib/index.cjs.map +1 -1
  9. package/lib/index.d.cts +1 -1
  10. package/lib/index.d.ts +9 -19
  11. package/lib/index.js +178 -131
  12. package/lib/index.js.map +1 -1
  13. package/lib/player/AdBreakOrchestrator.cjs +45 -13
  14. package/lib/player/AdBreakOrchestrator.cjs.map +1 -1
  15. package/lib/player/AdConfigManager.cjs +17 -3
  16. package/lib/player/AdConfigManager.cjs.map +1 -1
  17. package/lib/player/AdConfigManager.d.cts +3 -0
  18. package/lib/player/EdgePodRequest.cjs +31 -1
  19. package/lib/player/EdgePodRequest.cjs.map +1 -1
  20. package/lib/player/EdgePodRequest.d.cts +21 -3
  21. package/lib/player/FloorLadder.cjs +86 -27
  22. package/lib/player/FloorLadder.cjs.map +1 -1
  23. package/lib/player/FloorLadder.d.cts +8 -7
  24. package/lib/player/StormcloudVideoPlayer.cjs +163 -78
  25. package/lib/player/StormcloudVideoPlayer.cjs.map +1 -1
  26. package/lib/player/StormcloudVideoPlayer.d.cts +3 -9
  27. package/lib/players/HlsPlayer.cjs +169 -78
  28. package/lib/players/HlsPlayer.cjs.map +1 -1
  29. package/lib/players/index.cjs +169 -78
  30. package/lib/players/index.cjs.map +1 -1
  31. package/lib/props.cjs +10 -12
  32. package/lib/props.cjs.map +1 -1
  33. package/lib/props.d.cts +5 -1
  34. package/lib/types.d.cts +3 -7
  35. package/lib/ui/StormcloudVideoPlayer.cjs +167 -139
  36. package/lib/ui/StormcloudVideoPlayer.cjs.map +1 -1
  37. package/lib/utils/tracking.cjs +7 -0
  38. package/lib/utils/tracking.cjs.map +1 -1
  39. package/lib/utils/tracking.d.cts +2 -1
  40. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  import { StormcloudVideoPlayerConfig, AdFloorLadderConfig } from '../types.cjs';
2
- import { FloorLadderValidationReport, FloorLadderBounds, FloorSelector } from './FloorLadder.cjs';
2
+ import { FloorLadderBounds, FloorSelector } from './FloorLadder.cjs';
3
3
  import './OptimizedPodRequest.cjs';
4
4
 
5
5
  declare class StormcloudVideoPlayer {
@@ -19,19 +19,13 @@ declare class StormcloudVideoPlayer {
19
19
  private readonly hlsEngine;
20
20
  private readonly adBreak;
21
21
  private readonly floorLadder;
22
- private floorLadderEnabled;
23
22
  private edgePodBaseUrl;
24
23
  constructor(config: StormcloudVideoPlayerConfig);
25
24
  private get debug();
26
25
  private createAdPlayer;
27
- private isCtvEnvironment;
28
- setAdFloorLadder(update: Partial<AdFloorLadderConfig>): FloorLadderValidationReport;
29
- setAdFloorLadderEnabled(enabled: boolean): void;
26
+ private applyFloorLadderFromApi;
30
27
  isAdFloorLadderEnabled(): boolean;
31
- setEdgePodRequest(update: {
32
- enableEdgePodRequest?: boolean;
33
- edgePodUrl?: string;
34
- }): void;
28
+ private applyEdgePodFromApi;
35
29
  getEdgePodUrl(): string | undefined;
36
30
  private warnOnInvalidFloorLadder;
37
31
  getAdFloorLadder(): AdFloorLadderConfig;
@@ -1730,21 +1730,19 @@ function fetchConsentSignals() {
1730
1730
  });
1731
1731
  }
1732
1732
  // src/player/FloorLadder.ts
1733
- var DEFAULT_WEB_FLOOR_LADDER_CONFIG = Object.freeze({
1733
+ var DISABLED_FLOOR_LADDER_CONFIG = Object.freeze({
1734
1734
  enabled: false,
1735
- targetingKey: "airytv_web_floor",
1736
- minFloorCents: 25,
1737
- maxFloorCents: 300,
1738
- stepCents: 25,
1739
- selectedFloorCents: 25,
1740
- fallbackFloorCents: 25,
1735
+ targetingKey: "",
1736
+ minFloorCents: 0,
1737
+ maxFloorCents: 0,
1738
+ stepCents: 0,
1739
+ selectedFloorCents: 0,
1740
+ fallbackFloorCents: 0,
1741
1741
  readyFloorCents: [],
1742
1742
  mode: "fixed",
1743
- allowedPositions: [
1744
- "midroll"
1745
- ],
1746
- targetAdUnitPath: "/21821455290/airytvadx/airytv-web",
1747
- configurationVersion: "2026-09-29.1"
1743
+ allowedPositions: [],
1744
+ targetAdUnitPath: "",
1745
+ configurationVersion: ""
1748
1746
  });
1749
1747
  var DEFAULT_FLOOR_LADDER_BOUNDS = Object.freeze({
1750
1748
  minCents: 25,
@@ -1763,15 +1761,6 @@ function generateFloorLevels(minCents, maxCents, stepCents) {
1763
1761
  }
1764
1762
  return levels;
1765
1763
  }
1766
- function resolveFloorLadderBounds() {
1767
- var overrides = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
1768
- var _overrides_minCents, _overrides_maxCents, _overrides_stepCents;
1769
- return {
1770
- minCents: (_overrides_minCents = overrides.minCents) !== null && _overrides_minCents !== void 0 ? _overrides_minCents : DEFAULT_FLOOR_LADDER_BOUNDS.minCents,
1771
- maxCents: (_overrides_maxCents = overrides.maxCents) !== null && _overrides_maxCents !== void 0 ? _overrides_maxCents : DEFAULT_FLOOR_LADDER_BOUNDS.maxCents,
1772
- stepCents: (_overrides_stepCents = overrides.stepCents) !== null && _overrides_stepCents !== void 0 ? _overrides_stepCents : DEFAULT_FLOOR_LADDER_BOUNDS.stepCents
1773
- };
1774
- }
1775
1764
  function validateFloorCents(value, config) {
1776
1765
  var bounds = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : DEFAULT_FLOOR_LADDER_BOUNDS;
1777
1766
  if (!isInteger(value)) return {
@@ -1903,7 +1892,6 @@ function resolveOpportunityFloor(config, context) {
1903
1892
  if (!config.enabled) return skipped("disabled");
1904
1893
  var positions = Array.isArray(config.allowedPositions) ? config.allowedPositions : [];
1905
1894
  if (positions.indexOf(context.position) === -1) return skipped("position_not_allowed");
1906
- if (context.isCtv) return skipped("ctv_excluded");
1907
1895
  if (!config.targetingKey) return skipped("missing_targeting_key");
1908
1896
  if (!config.targetAdUnitPath) return skipped("missing_target_ad_unit");
1909
1897
  var result;
@@ -2057,15 +2045,80 @@ function mergeDefined(target, update) {
2057
2045
  }
2058
2046
  return copyConfig(next);
2059
2047
  }
2048
+ var AD_POSITIONS = [
2049
+ "preroll",
2050
+ "midroll",
2051
+ "postroll"
2052
+ ];
2053
+ function finiteNumber(value) {
2054
+ return typeof value === "number" && isFinite(value) ? value : void 0;
2055
+ }
2056
+ function parseApiFloorLadder(raw) {
2057
+ if (!raw || (typeof raw === "undefined" ? "undefined" : _type_of(raw)) !== "object" || Array.isArray(raw)) return void 0;
2058
+ var src = raw;
2059
+ var out = {};
2060
+ if (typeof src.enabled === "boolean") out.enabled = src.enabled;
2061
+ if (typeof src.targetingKey === "string") out.targetingKey = src.targetingKey;
2062
+ if (typeof src.targetAdUnitPath === "string") out.targetAdUnitPath = src.targetAdUnitPath;
2063
+ if (typeof src.configurationVersion === "string") out.configurationVersion = src.configurationVersion;
2064
+ if (typeof src.mode === "string") out.mode = src.mode;
2065
+ var min = finiteNumber(src.minFloorCents);
2066
+ var max = finiteNumber(src.maxFloorCents);
2067
+ var step = finiteNumber(src.stepCents);
2068
+ var selected = finiteNumber(src.selectedFloorCents);
2069
+ var fallback = finiteNumber(src.fallbackFloorCents);
2070
+ if (min !== void 0) out.minFloorCents = min;
2071
+ if (max !== void 0) out.maxFloorCents = max;
2072
+ if (step !== void 0) out.stepCents = step;
2073
+ if (selected !== void 0) out.selectedFloorCents = selected;
2074
+ if (fallback !== void 0) out.fallbackFloorCents = fallback;
2075
+ if (Array.isArray(src.readyFloorCents)) {
2076
+ out.readyFloorCents = src.readyFloorCents.filter(function(cents) {
2077
+ return finiteNumber(cents) !== void 0;
2078
+ });
2079
+ }
2080
+ if (Array.isArray(src.allowedPositions)) {
2081
+ out.allowedPositions = src.allowedPositions.filter(function(position) {
2082
+ return AD_POSITIONS.indexOf(position) !== -1;
2083
+ });
2084
+ }
2085
+ return out;
2086
+ }
2060
2087
  var FloorLadderController = /*#__PURE__*/ function() {
2061
- function FloorLadderController(initial, bounds) {
2062
- var selector = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : fixedFloorSelector;
2088
+ function FloorLadderController() {
2089
+ var selector = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : fixedFloorSelector;
2063
2090
  _class_call_check(this, FloorLadderController);
2064
- this.config = mergeDefined(copyConfig(DEFAULT_WEB_FLOOR_LADDER_CONFIG), initial);
2065
- this.bounds = Object.freeze(resolveFloorLadderBounds(bounds));
2091
+ this.bounds = DEFAULT_FLOOR_LADDER_BOUNDS;
2092
+ this.config = copyConfig(DISABLED_FLOOR_LADDER_CONFIG);
2066
2093
  this.selector = selector;
2067
2094
  }
2068
2095
  _create_class(FloorLadderController, [
2096
+ {
2097
+ key: "isEnabled",
2098
+ value: function isEnabled() {
2099
+ return this.config.enabled === true;
2100
+ }
2101
+ },
2102
+ {
2103
+ key: "applyApiConfig",
2104
+ value: function applyApiConfig(raw) {
2105
+ var parsed = parseApiFloorLadder(raw);
2106
+ this.config = mergeDefined(copyConfig(DISABLED_FLOOR_LADDER_CONFIG), parsed);
2107
+ this.bounds = Object.freeze({
2108
+ minCents: this.config.minFloorCents,
2109
+ maxCents: this.config.maxFloorCents,
2110
+ stepCents: this.config.stepCents
2111
+ });
2112
+ return validateFloorLadderConfig(this.config, this.bounds);
2113
+ }
2114
+ },
2115
+ {
2116
+ key: "reset",
2117
+ value: function reset() {
2118
+ this.config = copyConfig(DISABLED_FLOOR_LADDER_CONFIG);
2119
+ this.bounds = DEFAULT_FLOOR_LADDER_BOUNDS;
2120
+ }
2121
+ },
2069
2122
  {
2070
2123
  key: "get",
2071
2124
  value: function get() {
@@ -2078,13 +2131,6 @@ var FloorLadderController = /*#__PURE__*/ function() {
2078
2131
  return _object_spread({}, this.bounds);
2079
2132
  }
2080
2133
  },
2081
- {
2082
- key: "update",
2083
- value: function update(update) {
2084
- this.config = mergeDefined(this.config, update);
2085
- return validateFloorLadderConfig(this.config, this.bounds);
2086
- }
2087
- },
2088
2134
  {
2089
2135
  key: "validate",
2090
2136
  value: function validate() {
@@ -6317,6 +6363,9 @@ function resolvePlayerIdentitySeed(clientInfo) {
6317
6363
  }
6318
6364
  return "fingerprint:".concat(JSON.stringify(clientInfo));
6319
6365
  }
6366
+ function getCachedBrowserId() {
6367
+ return cachedBrowserId !== null && cachedBrowserId !== void 0 ? cachedBrowserId : void 0;
6368
+ }
6320
6369
  function getBrowserID(clientInfo) {
6321
6370
  return _async_to_generator(function() {
6322
6371
  return _ts_generator(this, function(_state) {
@@ -7986,7 +8035,7 @@ var AdConfigManager = /*#__PURE__*/ function() {
7986
8035
  key: "fetchAdConfiguration",
7987
8036
  value: function fetchAdConfiguration() {
7988
8037
  return _async_to_generator(function() {
7989
- 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;
8038
+ 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;
7990
8039
  return _ts_generator(this, function(_state) {
7991
8040
  switch(_state.label){
7992
8041
  case 0:
@@ -8046,7 +8095,21 @@ var AdConfigManager = /*#__PURE__*/ function() {
8046
8095
  ];
8047
8096
  case 4:
8048
8097
  data = _state.sent();
8049
- 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;
8098
+ apiEnableEdge = (_data_response = data.response) === null || _data_response === void 0 ? void 0 : _data_response.enableEdgePodRequest;
8099
+ apiEdgeUrl = (_data_response1 = data.response) === null || _data_response1 === void 0 ? void 0 : _data_response1.edgePodUrl;
8100
+ this.apiEnableEdgePodRequest = typeof apiEnableEdge === "boolean" ? apiEnableEdge : void 0;
8101
+ this.apiEdgePodUrl = typeof apiEdgeUrl === "string" ? apiEdgeUrl : void 0;
8102
+ if (this.debug) {
8103
+ console.log("[StormcloudVideoPlayer] Edge pod settings from API:", {
8104
+ enableEdgePodRequest: this.apiEnableEdgePodRequest,
8105
+ edgePodUrl: this.apiEdgePodUrl
8106
+ });
8107
+ }
8108
+ this.apiFloorLadder = (_data_response2 = data.response) === null || _data_response2 === void 0 ? void 0 : _data_response2.floorLadder;
8109
+ if (this.debug) {
8110
+ console.log(this.apiFloorLadder ? "[StormcloudVideoPlayer] Floor ladder from API:" : "[StormcloudVideoPlayer] No floorLadder block in /ads/web response", this.apiFloorLadder);
8111
+ }
8112
+ 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;
8050
8113
  if (imaPayload) {
8051
8114
  decodedPayload = imaPayload;
8052
8115
  try {
@@ -8064,7 +8127,7 @@ var AdConfigManager = /*#__PURE__*/ function() {
8064
8127
  console.warn("[StormcloudVideoPlayer] No VAST tag URL found in /ads/web response");
8065
8128
  }
8066
8129
  }
8067
- 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;
8130
+ 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;
8068
8131
  if (numberAds != null && numberAds > 0) {
8069
8132
  this.apiNumberAds = numberAds;
8070
8133
  if (this.debug) {
@@ -9898,7 +9961,23 @@ function resolveEdgePodBaseUrl(config) {
9898
9961
  return void 0;
9899
9962
  }
9900
9963
  }
9964
+ function resolveEdgePodRequestContext(config) {
9965
+ var extra = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
9966
+ return {
9967
+ width: extra.width,
9968
+ height: extra.height,
9969
+ playerId: extra.playerId,
9970
+ contentNetwork: config.contentNetwork,
9971
+ contentChannel: config.channelName,
9972
+ contentTitle: config.programTitle
9973
+ };
9974
+ }
9975
+ function setOptionalParam(url, key, value) {
9976
+ var trimmed = value === null || value === void 0 ? void 0 : value.trim();
9977
+ if (trimmed) url.searchParams.set(key, trimmed);
9978
+ }
9901
9979
  function buildEdgePodUrl(baseUrl, remainingMs, remainingAdLimit) {
9980
+ var context = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {};
9902
9981
  var url = new URL(baseUrl);
9903
9982
  var maxMs = Math.max(0, Math.floor(remainingMs));
9904
9983
  var maxAds = Math.max(1, Math.min(EDGE_POD_MAX_ADS, Math.floor(remainingAdLimit)));
@@ -9906,6 +9985,16 @@ function buildEdgePodUrl(baseUrl, remainingMs, remainingAdLimit) {
9906
9985
  url.searchParams.set("pmad", String(maxAds));
9907
9986
  url.searchParams.set("duration", String(Math.floor(maxMs / 1e3)));
9908
9987
  url.searchParams.set("count", String(maxAds));
9988
+ if (context.width != null && Number.isFinite(context.width) && context.width > 0) {
9989
+ url.searchParams.set("width", String(Math.round(context.width)));
9990
+ }
9991
+ if (context.height != null && Number.isFinite(context.height) && context.height > 0) {
9992
+ url.searchParams.set("height", String(Math.round(context.height)));
9993
+ }
9994
+ setOptionalParam(url, "pid", context.playerId);
9995
+ setOptionalParam(url, "cn", context.contentNetwork);
9996
+ setOptionalParam(url, "cc", context.contentChannel);
9997
+ setOptionalParam(url, "ct", context.contentTitle);
9909
9998
  return url.toString();
9910
9999
  }
9911
10000
  function classifyEdgeVastResponse(result) {
@@ -10793,7 +10882,12 @@ var AdBreakOrchestrator = /*#__PURE__*/ function() {
10793
10882
  return void 0;
10794
10883
  }
10795
10884
  try {
10796
- return buildEdgePodUrl(baseUrl, remainingMs, remainingAds);
10885
+ var playerId = getCachedBrowserId();
10886
+ return buildEdgePodUrl(baseUrl, remainingMs, remainingAds, resolveEdgePodRequestContext(this.host.config, {
10887
+ width: this.host.video.offsetWidth || this.host.video.clientWidth,
10888
+ height: this.host.video.offsetHeight || this.host.video.clientHeight,
10889
+ playerId: playerId
10890
+ }));
10797
10891
  } catch (unused) {
10798
10892
  this.markEdgeExhausted("invalid_edge_url");
10799
10893
  return void 0;
@@ -12303,14 +12397,7 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
12303
12397
  this.config = _object_spread({}, browserOverrides, config);
12304
12398
  this.video = config.videoElement;
12305
12399
  logBrowserInfo(config.debugAdTiming);
12306
- var floorBounds = {};
12307
- if (this.config.adFloorMinCents != null) floorBounds.minCents = this.config.adFloorMinCents;
12308
- if (this.config.adFloorMaxCents != null) floorBounds.maxCents = this.config.adFloorMaxCents;
12309
- if (this.config.adFloorStepCents != null) floorBounds.stepCents = this.config.adFloorStepCents;
12310
- this.floorLadder = new FloorLadderController(this.config.adFloorLadder, floorBounds);
12311
- this.floorLadderEnabled = this.config.adFloorLadderEnabled === true;
12312
- this.warnOnInvalidFloorLadder(this.floorLadder.validate());
12313
- this.edgePodBaseUrl = resolveEdgePodBaseUrl(this.config);
12400
+ this.floorLadder = new FloorLadderController();
12314
12401
  this.adPlayer = this.createAdPlayer(false);
12315
12402
  this.palNonce = createPalNonceManager();
12316
12403
  this.cueManager = new Scte35CueManager(!!this.config.debugAdTiming, {
@@ -12417,9 +12504,8 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
12417
12504
  return _this.edgePodBaseUrl;
12418
12505
  },
12419
12506
  getFloorSnapshot: function getFloorSnapshot(position) {
12420
- return _this.floorLadderEnabled ? _this.floorLadder.snapshotFor({
12421
- position: position,
12422
- isCtv: _this.isCtvEnvironment()
12507
+ return _this.floorLadder.isEnabled() ? _this.floorLadder.snapshotFor({
12508
+ position: position
12423
12509
  }) : void 0;
12424
12510
  },
12425
12511
  onAdClick: function onAdClick() {
@@ -12456,45 +12542,42 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
12456
12542
  }
12457
12543
  },
12458
12544
  {
12459
- key: "isCtvEnvironment",
12460
- value: function isCtvEnvironment() {
12461
- if (this.config.ctvAdRequest) return true;
12462
- var hint = inferDeviceTypeHint(false);
12463
- return hint === DEVICE_TYPE_HINT.CONNECTED_TV || hint === DEVICE_TYPE_HINT.SET_TOP_BOX;
12464
- }
12465
- },
12466
- {
12467
- key: "setAdFloorLadder",
12468
- value: function setAdFloorLadder(update) {
12469
- var report = this.floorLadder.update(update);
12545
+ key: "applyFloorLadderFromApi",
12546
+ value: function applyFloorLadderFromApi() {
12547
+ var raw = this.adConfig.apiFloorLadder;
12548
+ if (raw == null) {
12549
+ this.floorLadder.reset();
12550
+ return;
12551
+ }
12552
+ var report = this.floorLadder.applyApiConfig(raw);
12470
12553
  this.warnOnInvalidFloorLadder(report);
12471
- return report;
12472
- }
12473
- },
12474
- {
12475
- key: "setAdFloorLadderEnabled",
12476
- value: function setAdFloorLadderEnabled(enabled) {
12477
- this.floorLadderEnabled = enabled;
12478
- if (enabled) this.warnOnInvalidFloorLadder(this.floorLadder.validate());
12554
+ if (this.debug) {
12555
+ console.log("[AdBreak][FLOOR] configuration applied from API", {
12556
+ config: this.floorLadder.get(),
12557
+ bounds: this.floorLadder.getBounds(),
12558
+ validation: report
12559
+ });
12560
+ }
12479
12561
  }
12480
12562
  },
12481
12563
  {
12482
12564
  key: "isAdFloorLadderEnabled",
12483
12565
  value: function isAdFloorLadderEnabled() {
12484
- return this.floorLadderEnabled;
12566
+ return this.floorLadder.isEnabled();
12485
12567
  }
12486
12568
  },
12487
12569
  {
12488
- key: "setEdgePodRequest",
12489
- value: function setEdgePodRequest(update) {
12490
- if (update.enableEdgePodRequest === this.config.enableEdgePodRequest && update.edgePodUrl === this.config.edgePodUrl) {
12491
- return;
12570
+ key: "applyEdgePodFromApi",
12571
+ value: function applyEdgePodFromApi() {
12572
+ this.edgePodBaseUrl = resolveEdgePodBaseUrl({
12573
+ enableEdgePodRequest: this.adConfig.apiEnableEdgePodRequest,
12574
+ edgePodUrl: this.adConfig.apiEdgePodUrl,
12575
+ licenseKey: this.config.licenseKey
12576
+ });
12577
+ if (this.debug) {
12578
+ var _this_edgePodBaseUrl;
12579
+ console.log("[AdBreak][EDGE] edge pod base URL from API:", (_this_edgePodBaseUrl = this.edgePodBaseUrl) !== null && _this_edgePodBaseUrl !== void 0 ? _this_edgePodBaseUrl : "(disabled; GAM only)");
12492
12580
  }
12493
- if (update.enableEdgePodRequest === void 0) delete this.config.enableEdgePodRequest;
12494
- else this.config.enableEdgePodRequest = update.enableEdgePodRequest;
12495
- if (update.edgePodUrl === void 0) delete this.config.edgePodUrl;
12496
- else this.config.edgePodUrl = update.edgePodUrl;
12497
- this.edgePodBaseUrl = resolveEdgePodBaseUrl(this.config);
12498
12581
  }
12499
12582
  },
12500
12583
  {
@@ -12507,7 +12590,7 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
12507
12590
  key: "warnOnInvalidFloorLadder",
12508
12591
  value: function warnOnInvalidFloorLadder(report) {
12509
12592
  var config = this.floorLadder.get();
12510
- if (report.ok || !this.floorLadderEnabled || !config.enabled) return;
12593
+ if (report.ok || !config.enabled) return;
12511
12594
  console.warn("[AdBreak][FLOOR] configuration has issues; invalid floors will not be sent", {
12512
12595
  errors: report.errors,
12513
12596
  configurationVersion: config.configurationVersion,
@@ -12582,6 +12665,8 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
12582
12665
  4
12583
12666
  ];
12584
12667
  case 4:
12668
+ this.applyFloorLadderFromApi();
12669
+ this.applyEdgePodFromApi();
12585
12670
  palDescriptionUrl = this.config.ctvAdRequest ? this.adConfig.getPalDescriptionUrl() : void 0;
12586
12671
  fetchConsentSignals().catch(function() {
12587
12672
  return {};
@@ -13344,6 +13429,12 @@ var HlsPlayer = /*#__PURE__*/ function(_import_react_Component) {
13344
13429
  if (_this1.props.adFailsafeTimeoutMs !== void 0) config.adFailsafeTimeoutMs = _this1.props.adFailsafeTimeoutMs;
13345
13430
  if (_this1.props.minSegmentsBeforePlay !== void 0) config.minSegmentsBeforePlay = _this1.props.minSegmentsBeforePlay;
13346
13431
  if (_this1.props.ctvAdRequest !== void 0) config.ctvAdRequest = _this1.props.ctvAdRequest;
13432
+ if (_this1.props.vastTagUrl !== void 0) config.vastTagUrl = _this1.props.vastTagUrl;
13433
+ if (_this1.props.isVmap !== void 0) config.isVmap = _this1.props.isVmap;
13434
+ if (_this1.props.vmapUrl !== void 0) config.vmapUrl = _this1.props.vmapUrl;
13435
+ if (_this1.props.minRemainingMsToRequestAd !== void 0) config.minRemainingMsToRequestAd = _this1.props.minRemainingMsToRequestAd;
13436
+ if (_this1.props.maxNoFillsPerBreak !== void 0) config.maxNoFillsPerBreak = _this1.props.maxNoFillsPerBreak;
13437
+ if (_this1.props.maxAdBreakExtensionMs !== void 0) config.maxAdBreakExtensionMs = _this1.props.maxAdBreakExtensionMs;
13347
13438
  _this1.player = new StormcloudVideoPlayer(config);
13348
13439
  (_this_props_onMount = (_this_props = _this1.props).onMount) === null || _this_props_onMount === void 0 ? void 0 : _this_props_onMount.call(_this_props, _this1);
13349
13440
  return [