stormcloud-video-player 0.8.71 → 0.8.73

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/lib/index.cjs CHANGED
@@ -6624,6 +6624,10 @@ function toNumber(val) {
6624
6624
  var n = typeof val === "string" ? parseFloat(val) : Number(val);
6625
6625
  return Number.isNaN(n) ? void 0 : n;
6626
6626
  }
6627
+ function getDateRangeDurationSeconds(attrs) {
6628
+ var _toNumber;
6629
+ return (_toNumber = toNumber(attrs["DURATION"])) !== null && _toNumber !== void 0 ? _toNumber : toNumber(attrs["PLANNED-DURATION"]);
6630
+ }
6627
6631
  function isManifestBasedMarker(marker) {
6628
6632
  var raw = marker.raw;
6629
6633
  if (!raw) return false;
@@ -8989,11 +8993,13 @@ var HlsEngine = /*#__PURE__*/ function() {
8989
8993
  }
8990
8994
  }
8991
8995
  if (!tag) continue;
8996
+ if (tag.includes("EXT-X-CUE-OUT-CONT")) continue;
8992
8997
  if (tag.includes("EXT-X-CUE-OUT") || tag.includes("EXT-X-DATERANGE")) {
8993
- var attrs = tag.includes("EXT-X-DATERANGE") ? parseAttributeList(value) : {};
8998
+ var isDateRange = tag.includes("EXT-X-DATERANGE");
8999
+ var attrs = isDateRange ? parseAttributeList(value) : {};
8994
9000
  var hasScteOut = tag.includes("EXT-X-CUE-OUT") || "SCTE35-OUT" in attrs || attrs["SCTE35-OUT"] !== void 0;
8995
9001
  if (hasScteOut) {
8996
- var durationSeconds = parseCueOutDuration(value);
9002
+ var durationSeconds = isDateRange ? getDateRangeDurationSeconds(attrs) : parseCueOutDuration(value);
8997
9003
  var marker = _object_spread_props(_object_spread({
8998
9004
  type: "start"
8999
9005
  }, durationSeconds !== void 0 ? {
@@ -9167,7 +9173,7 @@ var HlsEngine = /*#__PURE__*/ function() {
9167
9173
  var hasScteOut = "SCTE35-OUT" in attrs || attrs["SCTE35-OUT"] !== void 0;
9168
9174
  var hasScteIn = "SCTE35-IN" in attrs || attrs["SCTE35-IN"] !== void 0;
9169
9175
  var klass = String((_attrs_CLASS = attrs["CLASS"]) !== null && _attrs_CLASS !== void 0 ? _attrs_CLASS : "");
9170
- var duration = toNumber(attrs["DURATION"]);
9176
+ var duration = getDateRangeDurationSeconds(attrs);
9171
9177
  if (hasScteOut || /com\.apple\.hls\.cue/i.test(klass)) {
9172
9178
  var marker2 = _object_spread_props(_object_spread({
9173
9179
  type: "start"
@@ -10344,7 +10350,7 @@ var AdBreakOrchestrator = /*#__PURE__*/ function() {
10344
10350
  key: "runEdgePod",
10345
10351
  value: function runEdgePod(requestUrl, trigger) {
10346
10352
  return _async_to_generator(function() {
10347
- var _params_get, _params_get1, epoch, generation, adPlayer, requestToken, params, _ref, _adPlayer_getPodAdCount, _adPlayer_getPodTotalDurationMs, remainingMs, remainingAds, podCount, error, errorMessage, classification, diag;
10353
+ var _params_get, _params_get1, epoch, generation, adPlayer, requestToken, params, _this_host_config_maxAdBreakExtensionMs, _ref, _adPlayer_getPodAdCount, _adPlayer_getPodTotalDurationMs, remainingMs, remainingAds, overrunAllowanceMs, podCount, error, errorMessage, classification, diag;
10348
10354
  return _ts_generator(this, function(_state) {
10349
10355
  switch(_state.label){
10350
10356
  case 0:
@@ -10399,7 +10405,8 @@ var AdBreakOrchestrator = /*#__PURE__*/ function() {
10399
10405
  }
10400
10406
  remainingMs = this.timing.getRemainingAdMs();
10401
10407
  remainingAds = Math.max(1, Math.min(EDGE_POD_MAX_ADS, this.adConfig.resolvePodParams().maxAds - this.timing.totalAdsInBreak));
10402
- podCount = adPlayer.limitPodToBudget ? adPlayer.limitPodToBudget(remainingMs, remainingAds) : (_ref = (_adPlayer_getPodAdCount = adPlayer.getPodAdCount) === null || _adPlayer_getPodAdCount === void 0 ? void 0 : _adPlayer_getPodAdCount.call(adPlayer)) !== null && _ref !== void 0 ? _ref : 0;
10408
+ overrunAllowanceMs = Math.max(0, (_this_host_config_maxAdBreakExtensionMs = this.host.config.maxAdBreakExtensionMs) !== null && _this_host_config_maxAdBreakExtensionMs !== void 0 ? _this_host_config_maxAdBreakExtensionMs : 0);
10409
+ podCount = adPlayer.limitPodToBudget ? adPlayer.limitPodToBudget(remainingMs + overrunAllowanceMs, remainingAds) : (_ref = (_adPlayer_getPodAdCount = adPlayer.getPodAdCount) === null || _adPlayer_getPodAdCount === void 0 ? void 0 : _adPlayer_getPodAdCount.call(adPlayer)) !== null && _ref !== void 0 ? _ref : 0;
10403
10410
  if (classifyEdgeVastResponse({
10404
10411
  podAdCount: podCount
10405
10412
  }) !== "fill") {
@@ -10409,7 +10416,8 @@ var AdBreakOrchestrator = /*#__PURE__*/ function() {
10409
10416
  this.logOrchestratorFunnel("edge_fill", {
10410
10417
  podAdCount: podCount,
10411
10418
  podDurationMs: (_adPlayer_getPodTotalDurationMs = adPlayer.getPodTotalDurationMs) === null || _adPlayer_getPodTotalDurationMs === void 0 ? void 0 : _adPlayer_getPodTotalDurationMs.call(adPlayer),
10412
- remainingMs: remainingMs
10419
+ remainingMs: remainingMs,
10420
+ overrunAllowanceMs: overrunAllowanceMs
10413
10421
  });
10414
10422
  sendAdLoadedTracking(this.host.config.licenseKey, {
10415
10423
  source: "hls",
@@ -12798,7 +12806,7 @@ var CRITICAL_PROPS = [
12798
12806
  var CONTROLS_HIDE_DELAY = 3e3;
12799
12807
  var DEFAULT_PLAYER_ASPECT_RATIO = 16 / 9;
12800
12808
  var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
12801
- var src = props.src, autoplay = props.autoplay, muted = props.muted, lowLatencyMode = props.lowLatencyMode, allowNativeHls = props.allowNativeHls, isLiveStream = props.isLiveStream, driftToleranceMs = props.driftToleranceMs, immediateManifestAds = props.immediateManifestAds, debugAdTiming = props.debugAdTiming, showCustomControls = props.showCustomControls, hideLoadingIndicator = props.hideLoadingIndicator, onVolumeToggle = props.onVolumeToggle, onFullscreenToggle = props.onFullscreenToggle, onControlClick = props.onControlClick, onReady = props.onReady, wrapperClassName = props.wrapperClassName, wrapperStyle = props.wrapperStyle, className = props.className, style = props.style, controls = props.controls, playsInline = props.playsInline, preload = props.preload, poster = props.poster, children = props.children, licenseKey = props.licenseKey, vastMode = props.vastMode, vastTagUrl = props.vastTagUrl, isVmap = props.isVmap, vmapUrl = props.vmapUrl, minSegmentsBeforePlay = props.minSegmentsBeforePlay, ctvAdRequest = props.ctvAdRequest, programTitle = props.programTitle, channelName = props.channelName, minRemainingMsToStartAd = props.minRemainingMsToStartAd, minRemainingMsToRequestAd = props.minRemainingMsToRequestAd, maxNoFillsPerBreak = props.maxNoFillsPerBreak, adFloorLadderEnabled = props.adFloorLadderEnabled, adFloorLadder = props.adFloorLadder, adFloorMinCents = props.adFloorMinCents, adFloorMaxCents = props.adFloorMaxCents, adFloorStepCents = props.adFloorStepCents, enableEdgePodRequest = props.enableEdgePodRequest, edgePodUrl = props.edgePodUrl, restVideoAttrs = _object_without_properties(props, [
12809
+ var src = props.src, autoplay = props.autoplay, muted = props.muted, lowLatencyMode = props.lowLatencyMode, allowNativeHls = props.allowNativeHls, isLiveStream = props.isLiveStream, driftToleranceMs = props.driftToleranceMs, immediateManifestAds = props.immediateManifestAds, debugAdTiming = props.debugAdTiming, showCustomControls = props.showCustomControls, hideLoadingIndicator = props.hideLoadingIndicator, onVolumeToggle = props.onVolumeToggle, onFullscreenToggle = props.onFullscreenToggle, onControlClick = props.onControlClick, onReady = props.onReady, wrapperClassName = props.wrapperClassName, wrapperStyle = props.wrapperStyle, className = props.className, style = props.style, controls = props.controls, playsInline = props.playsInline, preload = props.preload, poster = props.poster, children = props.children, licenseKey = props.licenseKey, vastMode = props.vastMode, vastTagUrl = props.vastTagUrl, isVmap = props.isVmap, vmapUrl = props.vmapUrl, minSegmentsBeforePlay = props.minSegmentsBeforePlay, ctvAdRequest = props.ctvAdRequest, programTitle = props.programTitle, channelName = props.channelName, minRemainingMsToStartAd = props.minRemainingMsToStartAd, minRemainingMsToRequestAd = props.minRemainingMsToRequestAd, maxNoFillsPerBreak = props.maxNoFillsPerBreak, maxAdBreakExtensionMs = props.maxAdBreakExtensionMs, adFloorLadderEnabled = props.adFloorLadderEnabled, adFloorLadder = props.adFloorLadder, adFloorMinCents = props.adFloorMinCents, adFloorMaxCents = props.adFloorMaxCents, adFloorStepCents = props.adFloorStepCents, enableEdgePodRequest = props.enableEdgePodRequest, edgePodUrl = props.edgePodUrl, restVideoAttrs = _object_without_properties(props, [
12802
12810
  "src",
12803
12811
  "autoplay",
12804
12812
  "muted",
@@ -12835,6 +12843,7 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
12835
12843
  "minRemainingMsToStartAd",
12836
12844
  "minRemainingMsToRequestAd",
12837
12845
  "maxNoFillsPerBreak",
12846
+ "maxAdBreakExtensionMs",
12838
12847
  "adFloorLadderEnabled",
12839
12848
  "adFloorLadder",
12840
12849
  "adFloorMinCents",
@@ -13042,6 +13051,7 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
13042
13051
  if (minRemainingMsToStartAd !== void 0) cfg.minRemainingMsToStartAd = minRemainingMsToStartAd;
13043
13052
  if (minRemainingMsToRequestAd !== void 0) cfg.minRemainingMsToRequestAd = minRemainingMsToRequestAd;
13044
13053
  if (maxNoFillsPerBreak !== void 0) cfg.maxNoFillsPerBreak = maxNoFillsPerBreak;
13054
+ if (maxAdBreakExtensionMs !== void 0) cfg.maxAdBreakExtensionMs = maxAdBreakExtensionMs;
13045
13055
  if (adFloorLadderEnabled !== void 0) cfg.adFloorLadderEnabled = adFloorLadderEnabled;
13046
13056
  if (adFloorLadder !== void 0) cfg.adFloorLadder = adFloorLadder;
13047
13057
  if (adFloorMinCents !== void 0) cfg.adFloorMinCents = adFloorMinCents;