stormcloud-video-player 0.7.41 → 0.7.43

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.d.cts CHANGED
@@ -4089,12 +4089,6 @@ declare function overlayAuthoringDimensions(overlay: SwirlOverlay, decodeWidth:
4089
4089
  };
4090
4090
  declare function swirlProjectHasNabDemoMixedWithOther(overlays: SwirlOverlay[]): boolean;
4091
4091
  declare function inferSwirlOverlayCoordinateSpace(overlays: SwirlOverlay[], videoWidth: number, videoHeight: number): OverlayCoordinateSpace;
4092
- declare function scrollerLooksLikeMarketsStock(o: SwirlOverlay): boolean;
4093
- type DemoStockTickerOptions = {
4094
- coordinateWidth?: number;
4095
- coordinateHeight?: number;
4096
- };
4097
- declare function createDemoStockTickerOverlay(projectId: number, opts?: DemoStockTickerOptions): SwirlOverlay;
4098
4092
  declare function normalizeSwirlOverlay(raw: SwirlOverlay & Record<string, unknown>): SwirlOverlay;
4099
4093
  declare function fetchProjectOverlays(projectId: number, apiBaseUrl?: string): Promise<SwirlOverlay[]>;
4100
4094
  declare function resolveImageUrl(imageUrl: string, apiBaseUrl?: string): string;
@@ -4156,4 +4150,4 @@ interface AdStormAdLayer extends AdController {
4156
4150
  }
4157
4151
  declare function createAdStormPlayer(contentVideo: HTMLVideoElement, options: AdStormPlayerOptions): AdStormAdLayer;
4158
4152
 
4159
- export { type AdBreak, type AdSchedule, type AdStormAdLayer, type AdStormLayerOptionsUpdate, type AdStormPlayerOptions, type BaseStormcloudPlayerProps, type BrowserInfo, type ClientInfo, type DemoStockTickerOptions, type HeartbeatData, IS_BROWSER, IS_GLOBAL, IS_IOS, IS_SAFARI, type LateJoinPolicy, OVERLAY_API_BASE, type OnProgressProps, type OverlayCoordinateSpace, SUPPORTS_DASH, SUPPORTS_HLS, SWIRL_HD_AUTHORING_HEIGHT, SWIRL_HD_AUTHORING_WIDTH, StormcloudPlayer, StormcloudVideoPlayer, StormcloudVideoPlayerComponent, type StormcloudVideoPlayerConfig, type StormcloudVideoPlayerProps, type SwirlOverlay, type SwirlOverlayType, type SwirlScrollerConfig, type TrackingData, type VastBidResponse, canPlay, createAdStormPlayer, createDemoStockTickerOverlay, createStormcloudPlayer, StormcloudVideoPlayerComponent as default, detectBrowser, fetchProjectOverlays, getBrowserConfigOverrides, getBrowserID, getClientInfo, inferSwirlOverlayCoordinateSpace, initializePolyfills, isMediaStream, isOverlayActive, lazy, logBrowserInfo, merge, normalizeSwirlOverlay, omit, overlayAuthoringDimensions, parseQuery, players, randomString, resolveImageUrl, scrollerLooksLikeMarketsStock, sendHeartbeat, sendInitialTracking, supportsFeature, supportsModernJS, supportsWebKitPresentationMode, swirlProjectHasNabDemoMixedWithOther, timeStringToSeconds };
4153
+ export { type AdBreak, type AdSchedule, type AdStormAdLayer, type AdStormLayerOptionsUpdate, type AdStormPlayerOptions, type BaseStormcloudPlayerProps, type BrowserInfo, type ClientInfo, type HeartbeatData, IS_BROWSER, IS_GLOBAL, IS_IOS, IS_SAFARI, type LateJoinPolicy, OVERLAY_API_BASE, type OnProgressProps, type OverlayCoordinateSpace, SUPPORTS_DASH, SUPPORTS_HLS, SWIRL_HD_AUTHORING_HEIGHT, SWIRL_HD_AUTHORING_WIDTH, StormcloudPlayer, StormcloudVideoPlayer, StormcloudVideoPlayerComponent, type StormcloudVideoPlayerConfig, type StormcloudVideoPlayerProps, type SwirlOverlay, type SwirlOverlayType, type SwirlScrollerConfig, type TrackingData, type VastBidResponse, canPlay, createAdStormPlayer, createStormcloudPlayer, StormcloudVideoPlayerComponent as default, detectBrowser, fetchProjectOverlays, getBrowserConfigOverrides, getBrowserID, getClientInfo, inferSwirlOverlayCoordinateSpace, initializePolyfills, isMediaStream, isOverlayActive, lazy, logBrowserInfo, merge, normalizeSwirlOverlay, omit, overlayAuthoringDimensions, parseQuery, players, randomString, resolveImageUrl, sendHeartbeat, sendInitialTracking, supportsFeature, supportsModernJS, supportsWebKitPresentationMode, swirlProjectHasNabDemoMixedWithOther, timeStringToSeconds };
package/lib/index.d.ts CHANGED
@@ -4089,12 +4089,6 @@ declare function overlayAuthoringDimensions(overlay: SwirlOverlay, decodeWidth:
4089
4089
  };
4090
4090
  declare function swirlProjectHasNabDemoMixedWithOther(overlays: SwirlOverlay[]): boolean;
4091
4091
  declare function inferSwirlOverlayCoordinateSpace(overlays: SwirlOverlay[], videoWidth: number, videoHeight: number): OverlayCoordinateSpace;
4092
- declare function scrollerLooksLikeMarketsStock(o: SwirlOverlay): boolean;
4093
- type DemoStockTickerOptions = {
4094
- coordinateWidth?: number;
4095
- coordinateHeight?: number;
4096
- };
4097
- declare function createDemoStockTickerOverlay(projectId: number, opts?: DemoStockTickerOptions): SwirlOverlay;
4098
4092
  declare function normalizeSwirlOverlay(raw: SwirlOverlay & Record<string, unknown>): SwirlOverlay;
4099
4093
  declare function fetchProjectOverlays(projectId: number, apiBaseUrl?: string): Promise<SwirlOverlay[]>;
4100
4094
  declare function resolveImageUrl(imageUrl: string, apiBaseUrl?: string): string;
@@ -4156,4 +4150,4 @@ interface AdStormAdLayer extends AdController {
4156
4150
  }
4157
4151
  declare function createAdStormPlayer(contentVideo: HTMLVideoElement, options: AdStormPlayerOptions): AdStormAdLayer;
4158
4152
 
4159
- export { type AdBreak, type AdSchedule, type AdStormAdLayer, type AdStormLayerOptionsUpdate, type AdStormPlayerOptions, type BaseStormcloudPlayerProps, type BrowserInfo, type ClientInfo, type DemoStockTickerOptions, type HeartbeatData, IS_BROWSER, IS_GLOBAL, IS_IOS, IS_SAFARI, type LateJoinPolicy, OVERLAY_API_BASE, type OnProgressProps, type OverlayCoordinateSpace, SUPPORTS_DASH, SUPPORTS_HLS, SWIRL_HD_AUTHORING_HEIGHT, SWIRL_HD_AUTHORING_WIDTH, StormcloudPlayer, StormcloudVideoPlayer, StormcloudVideoPlayerComponent, type StormcloudVideoPlayerConfig, type StormcloudVideoPlayerProps, type SwirlOverlay, type SwirlOverlayType, type SwirlScrollerConfig, type TrackingData, type VastBidResponse, canPlay, createAdStormPlayer, createDemoStockTickerOverlay, createStormcloudPlayer, StormcloudVideoPlayerComponent as default, detectBrowser, fetchProjectOverlays, getBrowserConfigOverrides, getBrowserID, getClientInfo, inferSwirlOverlayCoordinateSpace, initializePolyfills, isMediaStream, isOverlayActive, lazy, logBrowserInfo, merge, normalizeSwirlOverlay, omit, overlayAuthoringDimensions, parseQuery, players, randomString, resolveImageUrl, scrollerLooksLikeMarketsStock, sendHeartbeat, sendInitialTracking, supportsFeature, supportsModernJS, supportsWebKitPresentationMode, swirlProjectHasNabDemoMixedWithOther, timeStringToSeconds };
4153
+ export { type AdBreak, type AdSchedule, type AdStormAdLayer, type AdStormLayerOptionsUpdate, type AdStormPlayerOptions, type BaseStormcloudPlayerProps, type BrowserInfo, type ClientInfo, type HeartbeatData, IS_BROWSER, IS_GLOBAL, IS_IOS, IS_SAFARI, type LateJoinPolicy, OVERLAY_API_BASE, type OnProgressProps, type OverlayCoordinateSpace, SUPPORTS_DASH, SUPPORTS_HLS, SWIRL_HD_AUTHORING_HEIGHT, SWIRL_HD_AUTHORING_WIDTH, StormcloudPlayer, StormcloudVideoPlayer, StormcloudVideoPlayerComponent, type StormcloudVideoPlayerConfig, type StormcloudVideoPlayerProps, type SwirlOverlay, type SwirlOverlayType, type SwirlScrollerConfig, type TrackingData, type VastBidResponse, canPlay, createAdStormPlayer, createStormcloudPlayer, StormcloudVideoPlayerComponent as default, detectBrowser, fetchProjectOverlays, getBrowserConfigOverrides, getBrowserID, getClientInfo, inferSwirlOverlayCoordinateSpace, initializePolyfills, isMediaStream, isOverlayActive, lazy, logBrowserInfo, merge, normalizeSwirlOverlay, omit, overlayAuthoringDimensions, parseQuery, players, randomString, resolveImageUrl, sendHeartbeat, sendInitialTracking, supportsFeature, supportsModernJS, supportsWebKitPresentationMode, swirlProjectHasNabDemoMixedWithOther, timeStringToSeconds };
package/lib/index.js CHANGED
@@ -5705,28 +5705,16 @@ var SWIRL_HD_AUTHORING_WIDTH = 1920;
5705
5705
  var SWIRL_HD_AUTHORING_HEIGHT = 1080;
5706
5706
  var NAB_DEMO_NAME_PREFIX = "NAB Demo \u2014 ";
5707
5707
  function overlayAuthoringDimensions(overlay, decodeWidth, decodeHeight) {
5708
- if (!decodeWidth || !decodeHeight) {
5709
- return {
5710
- width: decodeWidth || SWIRL_HD_AUTHORING_WIDTH,
5711
- height: decodeHeight || SWIRL_HD_AUTHORING_HEIGHT
5712
- };
5713
- }
5714
- if (!overlay.visible) {
5708
+ if (overlay.name.startsWith(NAB_DEMO_NAME_PREFIX)) {
5715
5709
  return {
5716
- width: decodeWidth,
5717
- height: decodeHeight
5710
+ width: SWIRL_HD_AUTHORING_WIDTH,
5711
+ height: SWIRL_HD_AUTHORING_HEIGHT
5718
5712
  };
5719
5713
  }
5720
- var extR = overlay.x + overlay.width;
5721
- var extB = overlay.y + overlay.height;
5722
- var EPS = 2;
5723
- var exceedsDecode = extR > decodeWidth + EPS || extB > decodeHeight + EPS;
5724
- var isNabDemo = overlay.name.startsWith(NAB_DEMO_NAME_PREFIX);
5725
- var isSyntheticMarketsTicker = overlay.id === -9001 || overlay.name === "Demo stock ticker";
5726
- if (exceedsDecode && (isNabDemo || isSyntheticMarketsTicker)) {
5714
+ if (!decodeWidth || !decodeHeight) {
5727
5715
  return {
5728
- width: SWIRL_HD_AUTHORING_WIDTH,
5729
- height: SWIRL_HD_AUTHORING_HEIGHT
5716
+ width: decodeWidth || SWIRL_HD_AUTHORING_WIDTH,
5717
+ height: decodeHeight || SWIRL_HD_AUTHORING_HEIGHT
5730
5718
  };
5731
5719
  }
5732
5720
  return {
@@ -5821,63 +5809,6 @@ function inferSwirlOverlayCoordinateSpace(overlays, videoWidth, videoHeight) {
5821
5809
  height: videoHeight
5822
5810
  };
5823
5811
  }
5824
- function scrollerLooksLikeMarketsStock(o) {
5825
- var _ref, _ref1, _ref2, _ref3;
5826
- if (o.type !== "scroller") return false;
5827
- var cfg = o.scroller_config;
5828
- var blob = "".concat(o.name, " ").concat((_ref = cfg === null || cfg === void 0 ? void 0 : cfg.label) !== null && _ref !== void 0 ? _ref : "", " ").concat((_ref1 = cfg === null || cfg === void 0 ? void 0 : cfg.label_line2) !== null && _ref1 !== void 0 ? _ref1 : "", " ").concat((_ref2 = cfg === null || cfg === void 0 ? void 0 : cfg.custom_text) !== null && _ref2 !== void 0 ? _ref2 : "", " ").concat((_ref3 = cfg === null || cfg === void 0 ? void 0 : cfg.preset) !== null && _ref3 !== void 0 ? _ref3 : "");
5829
- return /\b(MARKETS?|NYSE|NASDAQ|DJIA|\bS&P\b|STOCK|AAPL|TSLA|NVDA|EQUITIES)\b/i.test(blob);
5830
- }
5831
- function createDemoStockTickerOverlay(projectId, opts) {
5832
- var cw = (opts === null || opts === void 0 ? void 0 : opts.coordinateWidth) && opts.coordinateWidth > 0 ? opts.coordinateWidth : SWIRL_HD_AUTHORING_WIDTH;
5833
- var ch = (opts === null || opts === void 0 ? void 0 : opts.coordinateHeight) && opts.coordinateHeight > 0 ? opts.coordinateHeight : SWIRL_HD_AUTHORING_HEIGHT;
5834
- var sx = cw / SWIRL_HD_AUTHORING_WIDTH;
5835
- var sy = ch / SWIRL_HD_AUTHORING_HEIGHT;
5836
- var x = 36 * sx;
5837
- var y = 1002 * sy;
5838
- var width = 1848 * sx;
5839
- var height = 66 * sy;
5840
- var fontSize = Math.max(8, Math.round(13 * sy));
5841
- var scrollSpeed = Math.max(8, Math.round(36 * sx));
5842
- var borderRadius = Math.max(1, Math.round(4 * sy));
5843
- return {
5844
- id: -9001,
5845
- project_id: projectId,
5846
- name: "Demo stock ticker",
5847
- type: "scroller",
5848
- visible: true,
5849
- x: x,
5850
- y: y,
5851
- width: width,
5852
- height: height,
5853
- opacity: 100,
5854
- start_time: "00:00:00.000",
5855
- duration: "24:00:00.000",
5856
- z_index: 120,
5857
- scroller_config: {
5858
- preset: "equities_strip",
5859
- use_custom_text: true,
5860
- custom_text: "AAPL +0.84% \u2022 MSFT +0.31% \u2022 GOOGL \u22120.22% \u2022 AMZN +0.47% \u2022 NVDA +1.12% \u2022 META +0.19% \u2022 BRK.B +0.11% \u2022 JPM +0.55% \u2022 V +0.28% \u2022 UNH \u22120.17% \u2022 DJIA +0.41% \u2022 S&P 500 +0.29% \u2022 Nasdaq Composite +0.36% \u2022 Russell 2000 +0.52% \u2022 WTI crude $78.40 +0.6% \u2022 Gold $2,348/oz \u22120.2% \u2022 10Y Treasury 4.28%",
5861
- direction: "left",
5862
- scroll_speed: scrollSpeed,
5863
- font_size: fontSize,
5864
- font_weight: "600",
5865
- text_color: "#e2e8f0",
5866
- background_color: "#0a0f18",
5867
- background_opacity: 92,
5868
- border_radius: borderRadius,
5869
- padding: Math.max(3, Math.round(6 * sy)),
5870
- label: "U.S. equities",
5871
- label_line2: "",
5872
- label_color: "#1e3a5f",
5873
- label_text_color: "#f8fafc",
5874
- accent_color: "#38bdf8",
5875
- show_accent_line: true,
5876
- separator_char: "\u2022",
5877
- item_spacing: Math.max(28, Math.round(48 * sx))
5878
- }
5879
- };
5880
- }
5881
5812
  function normalizeScrollerConfig(raw) {
5882
5813
  if (!raw || (typeof raw === "undefined" ? "undefined" : _type_of(raw)) !== "object") return void 0;
5883
5814
  var r = raw;
@@ -7377,11 +7308,19 @@ function hexToRgb(hex) {
7377
7308
  return "".concat(num >> 16 & 255, ",").concat(num >> 8 & 255, ",").concat(num & 255);
7378
7309
  }
7379
7310
  var FADE_DURATION_MS = 1e3;
7380
- var SHOWCASE_CYCLE_MS_DEFAULT = 6e4;
7381
- var SHOWCASE_POP_IN_MS = 420;
7382
- var SHOWCASE_STEADY_END_MS = 46e3;
7383
- var SHOWCASE_POP_OUT_MS = 450;
7384
- var SHOWCASE_POP_OUT_END_MS = SHOWCASE_STEADY_END_MS + SHOWCASE_POP_OUT_MS;
7311
+ var SHOWCASE_CYCLE_MS_DEFAULT = 36e3;
7312
+ var SHOWCASE_MIN_BEAT_MS = 6e3;
7313
+ var BEAT_POP_IN_MS = 520;
7314
+ var BEAT_POP_OUT_MS = 520;
7315
+ var SHOWCASE_PERSISTENT_TYPES = /* @__PURE__ */ new Set([
7316
+ "scroller",
7317
+ "breaking_news",
7318
+ "image",
7319
+ "text",
7320
+ "shape",
7321
+ "countdown",
7322
+ "qr_code"
7323
+ ]);
7385
7324
  function easeOutCubic(t) {
7386
7325
  var u = 1 - t;
7387
7326
  return 1 - u * u * u;
@@ -7394,38 +7333,108 @@ function easeOutBack(t) {
7394
7333
  var c3 = c1 + 1;
7395
7334
  return 1 + c3 * Math.pow(t - 1, 3) + c1 * Math.pow(t - 1, 2);
7396
7335
  }
7397
- function showcaseOpacity(phase) {
7398
- if (phase < SHOWCASE_POP_IN_MS) return easeOutCubic(phase / SHOWCASE_POP_IN_MS);
7399
- if (phase >= SHOWCASE_STEADY_END_MS && phase < SHOWCASE_POP_OUT_END_MS) {
7400
- return 1 - easeInCubic((phase - SHOWCASE_STEADY_END_MS) / SHOWCASE_POP_OUT_MS);
7336
+ function beatOpacity(phase, beatMs) {
7337
+ if (phase < BEAT_POP_IN_MS) return easeOutCubic(phase / BEAT_POP_IN_MS);
7338
+ var holdEnd = beatMs - BEAT_POP_OUT_MS;
7339
+ if (phase >= holdEnd) {
7340
+ return Math.max(0, 1 - easeInCubic((phase - holdEnd) / BEAT_POP_OUT_MS));
7401
7341
  }
7402
7342
  return 1;
7403
7343
  }
7404
- function showcaseScale(phase) {
7405
- if (phase < SHOWCASE_POP_IN_MS) {
7406
- return Math.min(1, 0.78 + 0.22 * easeOutBack(phase / SHOWCASE_POP_IN_MS));
7344
+ function beatScale(phase, beatMs) {
7345
+ if (phase < BEAT_POP_IN_MS) {
7346
+ return Math.min(1, 0.92 + 0.08 * easeOutBack(phase / BEAT_POP_IN_MS));
7407
7347
  }
7408
- if (phase >= SHOWCASE_STEADY_END_MS && phase < SHOWCASE_POP_OUT_END_MS) {
7409
- return 1 - 0.14 * easeInCubic((phase - SHOWCASE_STEADY_END_MS) / SHOWCASE_POP_OUT_MS);
7348
+ var holdEnd = beatMs - BEAT_POP_OUT_MS;
7349
+ if (phase >= holdEnd) {
7350
+ return 1 - 0.06 * easeInCubic((phase - holdEnd) / BEAT_POP_OUT_MS);
7410
7351
  }
7411
7352
  return 1;
7412
7353
  }
7413
- function useShowcasePhase(enabled, cycleMs) {
7414
- var _useState = _sliced_to_array(useState(0), 2), phase = _useState[0], setPhase = _useState[1];
7354
+ function partitionShowcase(overlays) {
7355
+ var visible = overlays.filter(function(o) {
7356
+ return o.visible;
7357
+ });
7358
+ var persistent = [];
7359
+ var spotlight = [];
7360
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
7361
+ try {
7362
+ for(var _iterator = visible[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
7363
+ var o = _step.value;
7364
+ if (SHOWCASE_PERSISTENT_TYPES.has(o.type)) persistent.push(o);
7365
+ else spotlight.push(o);
7366
+ }
7367
+ } catch (err) {
7368
+ _didIteratorError = true;
7369
+ _iteratorError = err;
7370
+ } finally{
7371
+ try {
7372
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
7373
+ _iterator.return();
7374
+ }
7375
+ } finally{
7376
+ if (_didIteratorError) {
7377
+ throw _iteratorError;
7378
+ }
7379
+ }
7380
+ }
7381
+ spotlight.sort(function(a, b) {
7382
+ return a.z_index - b.z_index || a.id - b.id;
7383
+ });
7384
+ var beats = [];
7385
+ var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
7386
+ try {
7387
+ for(var _iterator1 = spotlight[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){
7388
+ var o1 = _step1.value;
7389
+ beats.push([
7390
+ o1
7391
+ ]);
7392
+ }
7393
+ } catch (err) {
7394
+ _didIteratorError1 = true;
7395
+ _iteratorError1 = err;
7396
+ } finally{
7397
+ try {
7398
+ if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
7399
+ _iterator1.return();
7400
+ }
7401
+ } finally{
7402
+ if (_didIteratorError1) {
7403
+ throw _iteratorError1;
7404
+ }
7405
+ }
7406
+ }
7407
+ return {
7408
+ persistent: persistent,
7409
+ beats: beats
7410
+ };
7411
+ }
7412
+ function useShowcaseBeat(enabled, cycleMs, beats) {
7413
+ var safeBeats = Math.max(1, beats);
7414
+ var beatMs = Math.max(SHOWCASE_MIN_BEAT_MS, Math.floor(cycleMs / safeBeats));
7415
+ var totalMs = beatMs * safeBeats;
7416
+ var _useState = _sliced_to_array(useState(function() {
7417
+ return Date.now();
7418
+ }), 2), now = _useState[0], setNow = _useState[1];
7415
7419
  useEffect(function() {
7416
7420
  if (!enabled) return;
7417
- setPhase(Date.now() % cycleMs);
7418
7421
  var id = window.setInterval(function() {
7419
- setPhase(Date.now() % cycleMs);
7420
- }, 48);
7422
+ return setNow(Date.now());
7423
+ }, 64);
7421
7424
  return function() {
7422
7425
  return clearInterval(id);
7423
7426
  };
7424
7427
  }, [
7425
- enabled,
7426
- cycleMs
7428
+ enabled
7427
7429
  ]);
7428
- return phase;
7430
+ var phase = now % totalMs;
7431
+ var beatIndex = Math.min(safeBeats - 1, Math.floor(phase / beatMs));
7432
+ var beatPhase = phase - beatIndex * beatMs;
7433
+ return {
7434
+ beatIndex: beatIndex,
7435
+ beatPhase: beatPhase,
7436
+ beatMs: beatMs
7437
+ };
7429
7438
  }
7430
7439
  var OverlayRenderer = function OverlayRenderer(param) {
7431
7440
  var overlays = param.overlays, currentTime = param.currentTime, videoRef = param.videoRef, coordinateSpace = param.coordinateSpace, _param_showcaseMode = param.showcaseMode, showcaseMode = _param_showcaseMode === void 0 ? false : _param_showcaseMode, _param_showcaseCycleMs = param.showcaseCycleMs, showcaseCycleMs = _param_showcaseCycleMs === void 0 ? SHOWCASE_CYCLE_MS_DEFAULT : _param_showcaseCycleMs;
@@ -7433,7 +7442,28 @@ var OverlayRenderer = function OverlayRenderer(param) {
7433
7442
  var rafRef = useRef(null);
7434
7443
  var _useState1 = _sliced_to_array(useState(/* @__PURE__ */ new Map()), 2), fadeMap = _useState1[0], setFadeMap = _useState1[1];
7435
7444
  var removeTimers = useRef(/* @__PURE__ */ new Map());
7436
- var showcasePhase = useShowcasePhase(showcaseMode, showcaseCycleMs);
7445
+ var _useMemo = useMemo(function() {
7446
+ return partitionShowcase(overlays);
7447
+ }, [
7448
+ overlays
7449
+ ]), showcasePersistent = _useMemo.persistent, showcaseBeats = _useMemo.beats;
7450
+ var _useShowcaseBeat = useShowcaseBeat(showcaseMode, showcaseCycleMs, showcaseBeats.length), showcaseBeatIndex = _useShowcaseBeat.beatIndex, showcaseBeatPhase = _useShowcaseBeat.beatPhase, showcaseBeatMs = _useShowcaseBeat.beatMs;
7451
+ var showcasePersistentIds = useMemo(function() {
7452
+ return new Set(showcasePersistent.map(function(o) {
7453
+ return o.id;
7454
+ }));
7455
+ }, [
7456
+ showcasePersistent
7457
+ ]);
7458
+ var showcaseSpotlightIds = useMemo(function() {
7459
+ var beat = showcaseBeats[showcaseBeatIndex];
7460
+ return new Set((beat !== null && beat !== void 0 ? beat : []).map(function(o) {
7461
+ return o.id;
7462
+ }));
7463
+ }, [
7464
+ showcaseBeats,
7465
+ showcaseBeatIndex
7466
+ ]);
7437
7467
  var updateDims = useCallback(function() {
7438
7468
  var video = videoRef.current;
7439
7469
  if (video) {
@@ -7466,10 +7496,9 @@ var OverlayRenderer = function OverlayRenderer(param) {
7466
7496
  ]);
7467
7497
  var activeOverlays = useMemo(function() {
7468
7498
  if (showcaseMode) {
7469
- return overlays.filter(function(o) {
7470
- if (!o.visible) return false;
7471
- return showcasePhase < SHOWCASE_POP_OUT_END_MS;
7472
- });
7499
+ var _showcaseBeats_showcaseBeatIndex;
7500
+ var beat = (_showcaseBeats_showcaseBeatIndex = showcaseBeats[showcaseBeatIndex]) !== null && _showcaseBeats_showcaseBeatIndex !== void 0 ? _showcaseBeats_showcaseBeatIndex : [];
7501
+ return _to_consumable_array(showcasePersistent).concat(_to_consumable_array(beat));
7473
7502
  }
7474
7503
  return overlays.filter(function(o) {
7475
7504
  return isOverlayActive(o, currentTime);
@@ -7478,14 +7507,9 @@ var OverlayRenderer = function OverlayRenderer(param) {
7478
7507
  overlays,
7479
7508
  currentTime,
7480
7509
  showcaseMode,
7481
- showcasePhase
7482
- ]);
7483
- var activeBeatIds = useMemo(function() {
7484
- return new Set(activeOverlays.map(function(o) {
7485
- return o.id;
7486
- }));
7487
- }, [
7488
- activeOverlays
7510
+ showcasePersistent,
7511
+ showcaseBeats,
7512
+ showcaseBeatIndex
7489
7513
  ]);
7490
7514
  useLayoutEffect(function() {
7491
7515
  var activeIds = new Set(activeOverlays.map(function(o) {
@@ -7680,10 +7704,12 @@ var OverlayRenderer = function OverlayRenderer(param) {
7680
7704
  var width = overlay.width * scaleX;
7681
7705
  var height = overlay.height * scaleY;
7682
7706
  var baseOpacity = Math.max(0, Math.min(100, overlay.opacity)) / 100;
7683
- var inShowcaseBeat = showcaseMode && activeBeatIds.has(overlay.id);
7684
- var useShowcasePop = inShowcaseBeat;
7685
- var opacity = useShowcasePop ? baseOpacity * showcaseOpacity(showcasePhase) : visible ? baseOpacity : 0;
7686
- var popScale = useShowcasePop ? showcaseScale(showcasePhase) : 1;
7707
+ var isShowcasePersistent = showcaseMode && showcasePersistentIds.has(overlay.id);
7708
+ var isShowcaseSpotlight = showcaseMode && showcaseSpotlightIds.has(overlay.id);
7709
+ var isShowcaseDormant = showcaseMode && !isShowcasePersistent && !isShowcaseSpotlight;
7710
+ var useShowcasePop = isShowcaseSpotlight;
7711
+ var opacity = useShowcasePop ? baseOpacity * beatOpacity(showcaseBeatPhase, showcaseBeatMs) : isShowcaseDormant ? 0 : visible ? baseOpacity : 0;
7712
+ var popScale = useShowcasePop ? beatScale(showcaseBeatPhase, showcaseBeatMs) : 1;
7687
7713
  var sz = {
7688
7714
  w: width,
7689
7715
  h: height
@@ -7898,27 +7924,7 @@ var StormcloudVideoPlayerComponent = React2.memo(function(props) {
7898
7924
  swirlOverlayApiBaseUrl
7899
7925
  ]);
7900
7926
  var _React2_useState17 = _sliced_to_array(React2.useState(null), 2), overlayCoordSpace = _React2_useState17[0], setOverlayCoordSpace = _React2_useState17[1];
7901
- var displayOverlays = React2.useMemo(function() {
7902
- if (!swirlProjectId || !swirlShowcaseDemo) return overlays;
7903
- if (overlays.some(scrollerLooksLikeMarketsStock)) return overlays;
7904
- if (overlays.some(function(o) {
7905
- return o.visible && o.type === "scroller";
7906
- })) return overlays;
7907
- var cw = overlayCoordSpace === null || overlayCoordSpace === void 0 ? void 0 : overlayCoordSpace.width;
7908
- var ch = overlayCoordSpace === null || overlayCoordSpace === void 0 ? void 0 : overlayCoordSpace.height;
7909
- var tickerOpts = cw && cw > 0 && ch && ch > 0 ? {
7910
- coordinateWidth: cw,
7911
- coordinateHeight: ch
7912
- } : {};
7913
- return _to_consumable_array(overlays).concat([
7914
- createDemoStockTickerOverlay(swirlProjectId, tickerOpts)
7915
- ]);
7916
- }, [
7917
- overlays,
7918
- swirlProjectId,
7919
- swirlShowcaseDemo,
7920
- overlayCoordSpace
7921
- ]);
7927
+ var displayOverlays = overlays;
7922
7928
  var _React2_useState18 = _sliced_to_array(React2.useState(typeof window !== "undefined" ? window.innerWidth : 1920), 2), viewportWidth = _React2_useState18[0], setViewportWidth = _React2_useState18[1];
7923
7929
  var _React2_useState19 = _sliced_to_array(React2.useState(typeof window !== "undefined" ? window.innerHeight > window.innerWidth : false), 2), isPortrait = _React2_useState19[0], setIsPortrait = _React2_useState19[1];
7924
7930
  var _React2_useState20 = _sliced_to_array(React2.useState(DEFAULT_PLAYER_ASPECT_RATIO), 2), playerAspectRatio = _React2_useState20[0], setPlayerAspectRatio = _React2_useState20[1];
@@ -11301,5 +11307,5 @@ var createStormcloudPlayer = function createStormcloudPlayer(playerList, fallbac
11301
11307
  };
11302
11308
  var StormcloudPlayer = createStormcloudPlayer(players_default, players_default[players_default.length - 1]);
11303
11309
  var StormcloudPlayer_default = StormcloudPlayer;
11304
- export { IS_BROWSER, IS_GLOBAL, IS_IOS, IS_SAFARI, OVERLAY_API_BASE, SUPPORTS_DASH, SUPPORTS_HLS, SWIRL_HD_AUTHORING_HEIGHT, SWIRL_HD_AUTHORING_WIDTH, StormcloudPlayer_default as StormcloudPlayer, StormcloudVideoPlayer, StormcloudVideoPlayerComponent, canPlay, createAdStormPlayer, createDemoStockTickerOverlay, createStormcloudPlayer, StormcloudVideoPlayerComponent as default, detectBrowser, fetchProjectOverlays, getBrowserConfigOverrides, getBrowserID, getClientInfo, inferSwirlOverlayCoordinateSpace, initializePolyfills, isMediaStream, isOverlayActive, lazy, logBrowserInfo, merge, normalizeSwirlOverlay, omit, overlayAuthoringDimensions, parseQuery, players_default as players, randomString, resolveImageUrl, scrollerLooksLikeMarketsStock, sendHeartbeat, sendInitialTracking, supportsFeature, supportsModernJS, supportsWebKitPresentationMode, swirlProjectHasNabDemoMixedWithOther, timeStringToSeconds };
11310
+ export { IS_BROWSER, IS_GLOBAL, IS_IOS, IS_SAFARI, OVERLAY_API_BASE, SUPPORTS_DASH, SUPPORTS_HLS, SWIRL_HD_AUTHORING_HEIGHT, SWIRL_HD_AUTHORING_WIDTH, StormcloudPlayer_default as StormcloudPlayer, StormcloudVideoPlayer, StormcloudVideoPlayerComponent, canPlay, createAdStormPlayer, createStormcloudPlayer, StormcloudVideoPlayerComponent as default, detectBrowser, fetchProjectOverlays, getBrowserConfigOverrides, getBrowserID, getClientInfo, inferSwirlOverlayCoordinateSpace, initializePolyfills, isMediaStream, isOverlayActive, lazy, logBrowserInfo, merge, normalizeSwirlOverlay, omit, overlayAuthoringDimensions, parseQuery, players_default as players, randomString, resolveImageUrl, sendHeartbeat, sendInitialTracking, supportsFeature, supportsModernJS, supportsWebKitPresentationMode, swirlProjectHasNabDemoMixedWithOther, timeStringToSeconds };
11305
11311
  //# sourceMappingURL=index.js.map