stormcloud-video-player 0.7.37 → 0.7.39
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/dist/stormcloud-vp.min.js +1 -1
- package/lib/index.cjs +164 -34
- package/lib/index.cjs.map +1 -1
- package/lib/index.d.cts +17 -2
- package/lib/index.d.ts +17 -2
- package/lib/index.js +154 -36
- package/lib/index.js.map +1 -1
- package/lib/player/StormcloudVideoPlayer.cjs +40 -0
- package/lib/player/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/player/StormcloudVideoPlayer.d.cts +4 -0
- package/lib/players/HlsPlayer.cjs +40 -0
- package/lib/players/HlsPlayer.cjs.map +1 -1
- package/lib/players/index.cjs +40 -0
- package/lib/players/index.cjs.map +1 -1
- package/lib/ui/OverlayRenderer.cjs +4 -6
- package/lib/ui/OverlayRenderer.cjs.map +1 -1
- package/lib/ui/StormcloudVideoPlayer.cjs +152 -34
- package/lib/ui/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/ui/StormcloudVideoPlayer.d.cts +5 -0
- package/lib/utils/overlays.cjs +87 -7
- package/lib/utils/overlays.cjs.map +1 -1
- package/lib/utils/overlays.d.cts +8 -2
- package/package.json +1 -1
package/lib/index.d.cts
CHANGED
|
@@ -260,6 +260,10 @@ declare class StormcloudVideoPlayer {
|
|
|
260
260
|
width: number;
|
|
261
261
|
height: number;
|
|
262
262
|
} | null;
|
|
263
|
+
getMaxHlsResolution(): {
|
|
264
|
+
width: number;
|
|
265
|
+
height: number;
|
|
266
|
+
} | null;
|
|
263
267
|
getCurrentHlsSegmentDurationMs(): number | null;
|
|
264
268
|
get videoElement(): HTMLVideoElement;
|
|
265
269
|
resize(): void;
|
|
@@ -273,6 +277,11 @@ type StormcloudVideoPlayerProps = Omit<StormcloudVideoPlayerConfig, "videoElemen
|
|
|
273
277
|
licenseKey?: string;
|
|
274
278
|
swirlProjectId?: number;
|
|
275
279
|
swirlShowcaseDemo?: boolean;
|
|
280
|
+
swirlOverlayApiBaseUrl?: string;
|
|
281
|
+
swirlOverlayCoordinateSpace?: {
|
|
282
|
+
width: number;
|
|
283
|
+
height: number;
|
|
284
|
+
} | null;
|
|
276
285
|
adcisionChannelId?: number;
|
|
277
286
|
disableOverlays?: boolean;
|
|
278
287
|
showAdsControl?: boolean;
|
|
@@ -4007,6 +4016,7 @@ declare function getBrowserID(clientInfo: ClientInfo): Promise<string>;
|
|
|
4007
4016
|
declare function sendInitialTracking(licenseKey?: string): Promise<void>;
|
|
4008
4017
|
declare function sendHeartbeat(licenseKey?: string): Promise<void>;
|
|
4009
4018
|
|
|
4019
|
+
declare const OVERLAY_API_BASE = "https://adstorm.co/api-adstorm-dev";
|
|
4010
4020
|
interface OverlayCoordinateSpace {
|
|
4011
4021
|
width: number;
|
|
4012
4022
|
height: number;
|
|
@@ -4071,7 +4081,12 @@ interface SwirlOverlay {
|
|
|
4071
4081
|
}
|
|
4072
4082
|
declare function timeStringToSeconds(timeStr: string): number;
|
|
4073
4083
|
declare function isOverlayActive(overlay: SwirlOverlay, currentTime: number): boolean;
|
|
4074
|
-
declare function
|
|
4084
|
+
declare function scrollerLooksLikeMarketsStock(o: SwirlOverlay): boolean;
|
|
4085
|
+
type DemoStockTickerOptions = {
|
|
4086
|
+
stackAboveNews?: boolean;
|
|
4087
|
+
};
|
|
4088
|
+
declare function createDemoStockTickerOverlay(projectId: number, opts?: DemoStockTickerOptions): SwirlOverlay;
|
|
4089
|
+
declare function normalizeSwirlOverlay(raw: SwirlOverlay & Record<string, unknown>): SwirlOverlay;
|
|
4075
4090
|
declare function fetchProjectOverlays(projectId: number, apiBaseUrl?: string): Promise<SwirlOverlay[]>;
|
|
4076
4091
|
declare function resolveImageUrl(imageUrl: string, apiBaseUrl?: string): string;
|
|
4077
4092
|
|
|
@@ -4132,4 +4147,4 @@ interface AdStormAdLayer extends AdController {
|
|
|
4132
4147
|
}
|
|
4133
4148
|
declare function createAdStormPlayer(contentVideo: HTMLVideoElement, options: AdStormPlayerOptions): AdStormAdLayer;
|
|
4134
4149
|
|
|
4135
|
-
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, type OnProgressProps, type OverlayCoordinateSpace, SUPPORTS_DASH, SUPPORTS_HLS, 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, initializePolyfills, isMediaStream, isOverlayActive, lazy, logBrowserInfo, merge, omit, parseQuery, players, randomString, resolveImageUrl, sendHeartbeat, sendInitialTracking, supportsFeature, supportsModernJS, supportsWebKitPresentationMode, timeStringToSeconds };
|
|
4150
|
+
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, 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, initializePolyfills, isMediaStream, isOverlayActive, lazy, logBrowserInfo, merge, normalizeSwirlOverlay, omit, parseQuery, players, randomString, resolveImageUrl, scrollerLooksLikeMarketsStock, sendHeartbeat, sendInitialTracking, supportsFeature, supportsModernJS, supportsWebKitPresentationMode, timeStringToSeconds };
|
package/lib/index.d.ts
CHANGED
|
@@ -260,6 +260,10 @@ declare class StormcloudVideoPlayer {
|
|
|
260
260
|
width: number;
|
|
261
261
|
height: number;
|
|
262
262
|
} | null;
|
|
263
|
+
getMaxHlsResolution(): {
|
|
264
|
+
width: number;
|
|
265
|
+
height: number;
|
|
266
|
+
} | null;
|
|
263
267
|
getCurrentHlsSegmentDurationMs(): number | null;
|
|
264
268
|
get videoElement(): HTMLVideoElement;
|
|
265
269
|
resize(): void;
|
|
@@ -273,6 +277,11 @@ type StormcloudVideoPlayerProps = Omit<StormcloudVideoPlayerConfig, "videoElemen
|
|
|
273
277
|
licenseKey?: string;
|
|
274
278
|
swirlProjectId?: number;
|
|
275
279
|
swirlShowcaseDemo?: boolean;
|
|
280
|
+
swirlOverlayApiBaseUrl?: string;
|
|
281
|
+
swirlOverlayCoordinateSpace?: {
|
|
282
|
+
width: number;
|
|
283
|
+
height: number;
|
|
284
|
+
} | null;
|
|
276
285
|
adcisionChannelId?: number;
|
|
277
286
|
disableOverlays?: boolean;
|
|
278
287
|
showAdsControl?: boolean;
|
|
@@ -4007,6 +4016,7 @@ declare function getBrowserID(clientInfo: ClientInfo): Promise<string>;
|
|
|
4007
4016
|
declare function sendInitialTracking(licenseKey?: string): Promise<void>;
|
|
4008
4017
|
declare function sendHeartbeat(licenseKey?: string): Promise<void>;
|
|
4009
4018
|
|
|
4019
|
+
declare const OVERLAY_API_BASE = "https://adstorm.co/api-adstorm-dev";
|
|
4010
4020
|
interface OverlayCoordinateSpace {
|
|
4011
4021
|
width: number;
|
|
4012
4022
|
height: number;
|
|
@@ -4071,7 +4081,12 @@ interface SwirlOverlay {
|
|
|
4071
4081
|
}
|
|
4072
4082
|
declare function timeStringToSeconds(timeStr: string): number;
|
|
4073
4083
|
declare function isOverlayActive(overlay: SwirlOverlay, currentTime: number): boolean;
|
|
4074
|
-
declare function
|
|
4084
|
+
declare function scrollerLooksLikeMarketsStock(o: SwirlOverlay): boolean;
|
|
4085
|
+
type DemoStockTickerOptions = {
|
|
4086
|
+
stackAboveNews?: boolean;
|
|
4087
|
+
};
|
|
4088
|
+
declare function createDemoStockTickerOverlay(projectId: number, opts?: DemoStockTickerOptions): SwirlOverlay;
|
|
4089
|
+
declare function normalizeSwirlOverlay(raw: SwirlOverlay & Record<string, unknown>): SwirlOverlay;
|
|
4075
4090
|
declare function fetchProjectOverlays(projectId: number, apiBaseUrl?: string): Promise<SwirlOverlay[]>;
|
|
4076
4091
|
declare function resolveImageUrl(imageUrl: string, apiBaseUrl?: string): string;
|
|
4077
4092
|
|
|
@@ -4132,4 +4147,4 @@ interface AdStormAdLayer extends AdController {
|
|
|
4132
4147
|
}
|
|
4133
4148
|
declare function createAdStormPlayer(contentVideo: HTMLVideoElement, options: AdStormPlayerOptions): AdStormAdLayer;
|
|
4134
4149
|
|
|
4135
|
-
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, type OnProgressProps, type OverlayCoordinateSpace, SUPPORTS_DASH, SUPPORTS_HLS, 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, initializePolyfills, isMediaStream, isOverlayActive, lazy, logBrowserInfo, merge, omit, parseQuery, players, randomString, resolveImageUrl, sendHeartbeat, sendInitialTracking, supportsFeature, supportsModernJS, supportsWebKitPresentationMode, timeStringToSeconds };
|
|
4150
|
+
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, 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, initializePolyfills, isMediaStream, isOverlayActive, lazy, logBrowserInfo, merge, normalizeSwirlOverlay, omit, parseQuery, players, randomString, resolveImageUrl, scrollerLooksLikeMarketsStock, sendHeartbeat, sendInitialTracking, supportsFeature, supportsModernJS, supportsWebKitPresentationMode, timeStringToSeconds };
|
package/lib/index.js
CHANGED
|
@@ -5514,6 +5514,46 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
|
|
|
5514
5514
|
return min;
|
|
5515
5515
|
}
|
|
5516
5516
|
},
|
|
5517
|
+
{
|
|
5518
|
+
key: "getMaxHlsResolution",
|
|
5519
|
+
value: function getMaxHlsResolution() {
|
|
5520
|
+
var _this_hls;
|
|
5521
|
+
var levels = (_this_hls = this.hls) === null || _this_hls === void 0 ? void 0 : _this_hls.levels;
|
|
5522
|
+
if (!levels || levels.length === 0) return null;
|
|
5523
|
+
var max = null;
|
|
5524
|
+
var maxPixels = 0;
|
|
5525
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
5526
|
+
try {
|
|
5527
|
+
for(var _iterator = levels[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
5528
|
+
var level = _step.value;
|
|
5529
|
+
if (level.width && level.height) {
|
|
5530
|
+
var pixels = level.width * level.height;
|
|
5531
|
+
if (pixels > maxPixels) {
|
|
5532
|
+
maxPixels = pixels;
|
|
5533
|
+
max = {
|
|
5534
|
+
width: level.width,
|
|
5535
|
+
height: level.height
|
|
5536
|
+
};
|
|
5537
|
+
}
|
|
5538
|
+
}
|
|
5539
|
+
}
|
|
5540
|
+
} catch (err) {
|
|
5541
|
+
_didIteratorError = true;
|
|
5542
|
+
_iteratorError = err;
|
|
5543
|
+
} finally{
|
|
5544
|
+
try {
|
|
5545
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
5546
|
+
_iterator.return();
|
|
5547
|
+
}
|
|
5548
|
+
} finally{
|
|
5549
|
+
if (_didIteratorError) {
|
|
5550
|
+
throw _iteratorError;
|
|
5551
|
+
}
|
|
5552
|
+
}
|
|
5553
|
+
}
|
|
5554
|
+
return max;
|
|
5555
|
+
}
|
|
5556
|
+
},
|
|
5517
5557
|
{
|
|
5518
5558
|
key: "getCurrentHlsSegmentDurationMs",
|
|
5519
5559
|
value: function getCurrentHlsSegmentDurationMs() {
|
|
@@ -5624,7 +5664,7 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
|
|
|
5624
5664
|
// src/ui/StormcloudVideoPlayer.tsx
|
|
5625
5665
|
import { FaPlay, FaPause, FaVolumeUp, FaVolumeMute, FaVolumeDown, FaExpand, FaCompress, FaCog, FaTimes, FaCopy, FaLayerGroup } from "react-icons/fa";
|
|
5626
5666
|
// src/ui/OverlayRenderer.tsx
|
|
5627
|
-
import React, { useEffect, useRef, useState, useCallback, useMemo, useId } from "react";
|
|
5667
|
+
import React, { useEffect, useLayoutEffect, useRef, useState, useCallback, useMemo, useId } from "react";
|
|
5628
5668
|
// src/utils/overlays.ts
|
|
5629
5669
|
var OVERLAY_API_BASE = "https://adstorm.co/api-adstorm-dev";
|
|
5630
5670
|
function timeStringToSeconds(timeStr) {
|
|
@@ -5661,7 +5701,15 @@ function isOverlayActive(overlay, currentTime) {
|
|
|
5661
5701
|
if (durationSec <= 0) return false;
|
|
5662
5702
|
return currentTime >= startSec && currentTime < startSec + durationSec;
|
|
5663
5703
|
}
|
|
5664
|
-
function
|
|
5704
|
+
function scrollerLooksLikeMarketsStock(o) {
|
|
5705
|
+
var _ref, _ref1, _ref2, _ref3;
|
|
5706
|
+
if (o.type !== "scroller") return false;
|
|
5707
|
+
var cfg = o.scroller_config;
|
|
5708
|
+
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 : "");
|
|
5709
|
+
return /\b(MARKETS?|NYSE|NASDAQ|DJIA|\bS&P\b|STOCK|AAPL|TSLA|NVDA|EQUITIES)\b/i.test(blob);
|
|
5710
|
+
}
|
|
5711
|
+
function createDemoStockTickerOverlay(projectId, opts) {
|
|
5712
|
+
var stack = (opts === null || opts === void 0 ? void 0 : opts.stackAboveNews) === true;
|
|
5665
5713
|
return {
|
|
5666
5714
|
id: -9001,
|
|
5667
5715
|
project_id: projectId,
|
|
@@ -5669,13 +5717,13 @@ function createDemoStockTickerOverlay(projectId) {
|
|
|
5669
5717
|
type: "scroller",
|
|
5670
5718
|
visible: true,
|
|
5671
5719
|
x: 144,
|
|
5672
|
-
y: 950,
|
|
5720
|
+
y: stack ? 818 : 950,
|
|
5673
5721
|
width: 1632,
|
|
5674
|
-
height: 97,
|
|
5722
|
+
height: stack ? 78 : 97,
|
|
5675
5723
|
opacity: 100,
|
|
5676
5724
|
start_time: "00:00:00.000",
|
|
5677
5725
|
duration: "24:00:00.000",
|
|
5678
|
-
z_index: 120,
|
|
5726
|
+
z_index: stack ? 125 : 120,
|
|
5679
5727
|
scroller_config: {
|
|
5680
5728
|
use_custom_text: true,
|
|
5681
5729
|
custom_text: "AAPL +1.24% \u2022 MSFT +0.42% \u2022 GOOGL \u22120.11% \u2022 TSLA +2.31% \u2022 NVDA +1.87% \u2022 AMZN +0.65% \u2022 META +0.38% \u2022 DJIA +0.52% \u2022 S&P 500 +0.33% \u2022 NDAQ +0.41%",
|
|
@@ -5697,17 +5745,43 @@ function createDemoStockTickerOverlay(projectId) {
|
|
|
5697
5745
|
}
|
|
5698
5746
|
};
|
|
5699
5747
|
}
|
|
5748
|
+
function normalizeScrollerConfig(raw) {
|
|
5749
|
+
if (!raw || (typeof raw === "undefined" ? "undefined" : _type_of(raw)) !== "object") return void 0;
|
|
5750
|
+
var r = raw;
|
|
5751
|
+
var merged = _object_spread({}, raw);
|
|
5752
|
+
if (merged.use_custom_text === void 0 && typeof r.useCustomText === "boolean") {
|
|
5753
|
+
merged.use_custom_text = r.useCustomText;
|
|
5754
|
+
}
|
|
5755
|
+
if ((merged.custom_text === void 0 || merged.custom_text === "") && typeof r.customText === "string") {
|
|
5756
|
+
merged.custom_text = r.customText;
|
|
5757
|
+
}
|
|
5758
|
+
if (!merged.rss_url && typeof r.rssUrl === "string") {
|
|
5759
|
+
merged.rss_url = r.rssUrl;
|
|
5760
|
+
}
|
|
5761
|
+
return merged;
|
|
5762
|
+
}
|
|
5763
|
+
function normalizeSwirlOverlay(raw) {
|
|
5764
|
+
var o = _object_spread({}, raw);
|
|
5765
|
+
if (o.type === "scroller") {
|
|
5766
|
+
var _raw_scroller_config;
|
|
5767
|
+
var sc = (_raw_scroller_config = raw.scroller_config) !== null && _raw_scroller_config !== void 0 ? _raw_scroller_config : raw.scrollerConfig;
|
|
5768
|
+
var normalized = normalizeScrollerConfig(sc);
|
|
5769
|
+
if (normalized) o.scroller_config = normalized;
|
|
5770
|
+
}
|
|
5771
|
+
return o;
|
|
5772
|
+
}
|
|
5700
5773
|
function fetchProjectOverlays(_0) {
|
|
5701
5774
|
return _async_to_generator(function(projectId) {
|
|
5702
|
-
var apiBaseUrl, response, data;
|
|
5775
|
+
var apiBaseUrl, base, response, data;
|
|
5703
5776
|
var _arguments = arguments;
|
|
5704
5777
|
return _ts_generator(this, function(_state) {
|
|
5705
5778
|
switch(_state.label){
|
|
5706
5779
|
case 0:
|
|
5707
5780
|
apiBaseUrl = _arguments.length > 1 && _arguments[1] !== void 0 ? _arguments[1] : OVERLAY_API_BASE;
|
|
5781
|
+
base = apiBaseUrl.replace(/\/$/, "");
|
|
5708
5782
|
return [
|
|
5709
5783
|
4,
|
|
5710
|
-
fetch("".concat(
|
|
5784
|
+
fetch("".concat(base, "/adstorm/swirl/projects/").concat(projectId, "/overlays"))
|
|
5711
5785
|
];
|
|
5712
5786
|
case 1:
|
|
5713
5787
|
response = _state.sent();
|
|
@@ -5720,9 +5794,15 @@ function fetchProjectOverlays(_0) {
|
|
|
5720
5794
|
];
|
|
5721
5795
|
case 2:
|
|
5722
5796
|
data = _state.sent();
|
|
5797
|
+
if (!Array.isArray(data)) return [
|
|
5798
|
+
2,
|
|
5799
|
+
[]
|
|
5800
|
+
];
|
|
5723
5801
|
return [
|
|
5724
5802
|
2,
|
|
5725
|
-
|
|
5803
|
+
data.map(function(row) {
|
|
5804
|
+
return normalizeSwirlOverlay(row);
|
|
5805
|
+
})
|
|
5726
5806
|
];
|
|
5727
5807
|
}
|
|
5728
5808
|
});
|
|
@@ -7133,7 +7213,7 @@ function showcaseOpacity(phase) {
|
|
|
7133
7213
|
}
|
|
7134
7214
|
function showcaseScale(phase) {
|
|
7135
7215
|
if (phase < SHOWCASE_POP_IN_MS) {
|
|
7136
|
-
return 0.78 + 0.22 * easeOutBack(phase / SHOWCASE_POP_IN_MS);
|
|
7216
|
+
return Math.min(1, 0.78 + 0.22 * easeOutBack(phase / SHOWCASE_POP_IN_MS));
|
|
7137
7217
|
}
|
|
7138
7218
|
if (phase >= SHOWCASE_STEADY_END_MS && phase < SHOWCASE_POP_OUT_END_MS) {
|
|
7139
7219
|
return 1 - 0.14 * easeInCubic((phase - SHOWCASE_STEADY_END_MS) / SHOWCASE_POP_OUT_MS);
|
|
@@ -7198,7 +7278,6 @@ var OverlayRenderer = function OverlayRenderer(param) {
|
|
|
7198
7278
|
if (showcaseMode) {
|
|
7199
7279
|
return overlays.filter(function(o) {
|
|
7200
7280
|
if (!o.visible) return false;
|
|
7201
|
-
if (o.type === "scroller") return true;
|
|
7202
7281
|
return showcasePhase < SHOWCASE_POP_OUT_END_MS;
|
|
7203
7282
|
});
|
|
7204
7283
|
}
|
|
@@ -7218,7 +7297,7 @@ var OverlayRenderer = function OverlayRenderer(param) {
|
|
|
7218
7297
|
}, [
|
|
7219
7298
|
activeOverlays
|
|
7220
7299
|
]);
|
|
7221
|
-
|
|
7300
|
+
useLayoutEffect(function() {
|
|
7222
7301
|
var activeIds = new Set(activeOverlays.map(function(o) {
|
|
7223
7302
|
return o.id;
|
|
7224
7303
|
}));
|
|
@@ -7406,10 +7485,9 @@ var OverlayRenderer = function OverlayRenderer(param) {
|
|
|
7406
7485
|
var width = overlay.width * scaleX;
|
|
7407
7486
|
var height = overlay.height * scaleY;
|
|
7408
7487
|
var baseOpacity = Math.max(0, Math.min(100, overlay.opacity)) / 100;
|
|
7409
|
-
var isScrollerTicker = overlay.type === "scroller";
|
|
7410
7488
|
var inShowcaseBeat = showcaseMode && activeBeatIds.has(overlay.id);
|
|
7411
|
-
var useShowcasePop = inShowcaseBeat
|
|
7412
|
-
var opacity = useShowcasePop ? baseOpacity * showcaseOpacity(showcasePhase) :
|
|
7489
|
+
var useShowcasePop = inShowcaseBeat;
|
|
7490
|
+
var opacity = useShowcasePop ? baseOpacity * showcaseOpacity(showcasePhase) : visible ? baseOpacity : 0;
|
|
7413
7491
|
var popScale = useShowcasePop ? showcaseScale(showcasePhase) : 1;
|
|
7414
7492
|
var sz = {
|
|
7415
7493
|
w: width,
|
|
@@ -7551,7 +7629,7 @@ var PANEL_BASE_RIGHT_OFFSET = 10;
|
|
|
7551
7629
|
var StormcloudVideoPlayerComponent = React2.memo(function(props) {
|
|
7552
7630
|
var _ref;
|
|
7553
7631
|
var _aiLiveContext_context;
|
|
7554
|
-
var src = props.src, autoplay = props.autoplay, muted = props.muted, lowLatencyMode = props.lowLatencyMode, allowNativeHls = props.allowNativeHls, 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, minSegmentsBeforePlay = props.minSegmentsBeforePlay, disableAds = props.disableAds, disableFiller = props.disableFiller, swirlProjectId = props.swirlProjectId, swirlShowcaseDemo = props.swirlShowcaseDemo, adcisionChannelId = props.adcisionChannelId, disableOverlays = props.disableOverlays, showAdsControl = props.showAdsControl, showOverlaysControl = props.showOverlaysControl, showAiContextControl = props.showAiContextControl, showDebugControl = props.showDebugControl, restVideoAttrs = _object_without_properties(props, [
|
|
7632
|
+
var src = props.src, autoplay = props.autoplay, muted = props.muted, lowLatencyMode = props.lowLatencyMode, allowNativeHls = props.allowNativeHls, 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, minSegmentsBeforePlay = props.minSegmentsBeforePlay, disableAds = props.disableAds, disableFiller = props.disableFiller, swirlProjectId = props.swirlProjectId, swirlShowcaseDemo = props.swirlShowcaseDemo, swirlOverlayApiBaseUrl = props.swirlOverlayApiBaseUrl, swirlOverlayCoordinateSpace = props.swirlOverlayCoordinateSpace, adcisionChannelId = props.adcisionChannelId, disableOverlays = props.disableOverlays, showAdsControl = props.showAdsControl, showOverlaysControl = props.showOverlaysControl, showAiContextControl = props.showAiContextControl, showDebugControl = props.showDebugControl, restVideoAttrs = _object_without_properties(props, [
|
|
7555
7633
|
"src",
|
|
7556
7634
|
"autoplay",
|
|
7557
7635
|
"muted",
|
|
@@ -7581,6 +7659,8 @@ var StormcloudVideoPlayerComponent = React2.memo(function(props) {
|
|
|
7581
7659
|
"disableFiller",
|
|
7582
7660
|
"swirlProjectId",
|
|
7583
7661
|
"swirlShowcaseDemo",
|
|
7662
|
+
"swirlOverlayApiBaseUrl",
|
|
7663
|
+
"swirlOverlayCoordinateSpace",
|
|
7584
7664
|
"adcisionChannelId",
|
|
7585
7665
|
"disableOverlays",
|
|
7586
7666
|
"showAdsControl",
|
|
@@ -7617,13 +7697,21 @@ var StormcloudVideoPlayerComponent = React2.memo(function(props) {
|
|
|
7617
7697
|
var _React2_useState14 = _sliced_to_array(React2.useState(false), 2), showLicenseWarning = _React2_useState14[0], setShowLicenseWarning = _React2_useState14[1];
|
|
7618
7698
|
var _React2_useState15 = _sliced_to_array(React2.useState(true), 2), controlsVisible = _React2_useState15[0], setControlsVisible = _React2_useState15[1];
|
|
7619
7699
|
var _React2_useState16 = _sliced_to_array(React2.useState([]), 2), overlays = _React2_useState16[0], setOverlays = _React2_useState16[1];
|
|
7700
|
+
var overlayApiBase = React2.useMemo(function() {
|
|
7701
|
+
return (swirlOverlayApiBaseUrl === null || swirlOverlayApiBaseUrl === void 0 ? void 0 : swirlOverlayApiBaseUrl.replace(/\/$/, "")) || OVERLAY_API_BASE;
|
|
7702
|
+
}, [
|
|
7703
|
+
swirlOverlayApiBaseUrl
|
|
7704
|
+
]);
|
|
7620
7705
|
var displayOverlays = React2.useMemo(function() {
|
|
7621
7706
|
if (!swirlProjectId || !swirlShowcaseDemo) return overlays;
|
|
7622
|
-
if (overlays.some(
|
|
7707
|
+
if (overlays.some(scrollerLooksLikeMarketsStock)) return overlays;
|
|
7708
|
+
var hasOtherScroller = overlays.some(function(o) {
|
|
7623
7709
|
return o.type === "scroller";
|
|
7624
|
-
})
|
|
7710
|
+
});
|
|
7625
7711
|
return _to_consumable_array(overlays).concat([
|
|
7626
|
-
createDemoStockTickerOverlay(swirlProjectId
|
|
7712
|
+
createDemoStockTickerOverlay(swirlProjectId, {
|
|
7713
|
+
stackAboveNews: hasOtherScroller
|
|
7714
|
+
})
|
|
7627
7715
|
]);
|
|
7628
7716
|
}, [
|
|
7629
7717
|
overlays,
|
|
@@ -7903,7 +7991,7 @@ var StormcloudVideoPlayerComponent = React2.memo(function(props) {
|
|
|
7903
7991
|
}
|
|
7904
7992
|
var cancelled = false;
|
|
7905
7993
|
var loadOverlays = function loadOverlays() {
|
|
7906
|
-
fetchProjectOverlays(swirlProjectId).then(function(data) {
|
|
7994
|
+
fetchProjectOverlays(swirlProjectId, overlayApiBase).then(function(data) {
|
|
7907
7995
|
if (!cancelled) setOverlays(data);
|
|
7908
7996
|
}).catch(function(err) {
|
|
7909
7997
|
if (!cancelled) {
|
|
@@ -7919,41 +8007,69 @@ var StormcloudVideoPlayerComponent = React2.memo(function(props) {
|
|
|
7919
8007
|
};
|
|
7920
8008
|
}, [
|
|
7921
8009
|
swirlProjectId,
|
|
7922
|
-
adcisionChannelId
|
|
8010
|
+
adcisionChannelId,
|
|
8011
|
+
overlayApiBase
|
|
7923
8012
|
]);
|
|
7924
8013
|
useEffect2(function() {
|
|
8014
|
+
var _playerRef_current;
|
|
7925
8015
|
if (!swirlProjectId) return;
|
|
7926
|
-
var player = playerRef.current;
|
|
7927
|
-
if (!player) return;
|
|
7928
|
-
var attempts = 0;
|
|
7929
|
-
var maxAttempts = 30;
|
|
7930
8016
|
var tryResolve = function tryResolve() {
|
|
7931
|
-
var
|
|
7932
|
-
|
|
7933
|
-
|
|
8017
|
+
var _player_getMaxHlsResolution, _player_getMinHlsResolution;
|
|
8018
|
+
var player = playerRef.current;
|
|
8019
|
+
var fixed = swirlOverlayCoordinateSpace;
|
|
8020
|
+
if (fixed && fixed.width > 0 && fixed.height > 0) {
|
|
8021
|
+
setOverlayCoordSpace({
|
|
8022
|
+
width: fixed.width,
|
|
8023
|
+
height: fixed.height
|
|
8024
|
+
});
|
|
7934
8025
|
return true;
|
|
7935
8026
|
}
|
|
7936
|
-
|
|
7937
|
-
|
|
8027
|
+
if (!player) return false;
|
|
8028
|
+
var video2 = player.videoElement;
|
|
8029
|
+
if (video2 && video2.videoWidth > 0 && video2.videoHeight > 0) {
|
|
7938
8030
|
setOverlayCoordSpace({
|
|
7939
|
-
width:
|
|
7940
|
-
height:
|
|
8031
|
+
width: video2.videoWidth,
|
|
8032
|
+
height: video2.videoHeight
|
|
7941
8033
|
});
|
|
7942
8034
|
return true;
|
|
7943
8035
|
}
|
|
8036
|
+
var maxRes = (_player_getMaxHlsResolution = player.getMaxHlsResolution) === null || _player_getMaxHlsResolution === void 0 ? void 0 : _player_getMaxHlsResolution.call(player);
|
|
8037
|
+
if (maxRes) {
|
|
8038
|
+
setOverlayCoordSpace(maxRes);
|
|
8039
|
+
return true;
|
|
8040
|
+
}
|
|
8041
|
+
var minRes = (_player_getMinHlsResolution = player.getMinHlsResolution) === null || _player_getMinHlsResolution === void 0 ? void 0 : _player_getMinHlsResolution.call(player);
|
|
8042
|
+
if (minRes) {
|
|
8043
|
+
setOverlayCoordSpace(minRes);
|
|
8044
|
+
return true;
|
|
8045
|
+
}
|
|
7944
8046
|
return false;
|
|
7945
8047
|
};
|
|
7946
|
-
|
|
8048
|
+
var attempts = 0;
|
|
8049
|
+
var maxAttempts = 40;
|
|
8050
|
+
tryResolve();
|
|
7947
8051
|
var interval = setInterval(function() {
|
|
7948
8052
|
attempts++;
|
|
7949
|
-
if (
|
|
8053
|
+
if (!swirlOverlayCoordinateSpace) {
|
|
8054
|
+
tryResolve();
|
|
8055
|
+
}
|
|
8056
|
+
if (attempts >= maxAttempts) clearInterval(interval);
|
|
7950
8057
|
}, 300);
|
|
8058
|
+
var onVideoDims = function onVideoDims() {
|
|
8059
|
+
if (!swirlOverlayCoordinateSpace) {
|
|
8060
|
+
tryResolve();
|
|
8061
|
+
}
|
|
8062
|
+
};
|
|
8063
|
+
var video = (_playerRef_current = playerRef.current) === null || _playerRef_current === void 0 ? void 0 : _playerRef_current.videoElement;
|
|
8064
|
+
video === null || video === void 0 ? void 0 : video.addEventListener("loadedmetadata", onVideoDims);
|
|
7951
8065
|
return function() {
|
|
7952
|
-
|
|
8066
|
+
clearInterval(interval);
|
|
8067
|
+
video === null || video === void 0 ? void 0 : video.removeEventListener("loadedmetadata", onVideoDims);
|
|
7953
8068
|
};
|
|
7954
8069
|
}, [
|
|
7955
8070
|
swirlProjectId,
|
|
7956
|
-
criticalPropsKey
|
|
8071
|
+
criticalPropsKey,
|
|
8072
|
+
swirlOverlayCoordinateSpace
|
|
7957
8073
|
]);
|
|
7958
8074
|
useEffect2(function() {
|
|
7959
8075
|
if (!playerRef.current) return;
|
|
@@ -9755,6 +9871,8 @@ var StormcloudVideoPlayerComponent = React2.memo(function(props) {
|
|
|
9755
9871
|
"children",
|
|
9756
9872
|
"swirlProjectId",
|
|
9757
9873
|
"swirlShowcaseDemo",
|
|
9874
|
+
"swirlOverlayApiBaseUrl",
|
|
9875
|
+
"swirlOverlayCoordinateSpace",
|
|
9758
9876
|
"adcisionChannelId",
|
|
9759
9877
|
"disableOverlays",
|
|
9760
9878
|
"showAdsControl",
|
|
@@ -10980,5 +11098,5 @@ var createStormcloudPlayer = function createStormcloudPlayer(playerList, fallbac
|
|
|
10980
11098
|
};
|
|
10981
11099
|
var StormcloudPlayer = createStormcloudPlayer(players_default, players_default[players_default.length - 1]);
|
|
10982
11100
|
var StormcloudPlayer_default = StormcloudPlayer;
|
|
10983
|
-
export { IS_BROWSER, IS_GLOBAL, IS_IOS, IS_SAFARI, SUPPORTS_DASH, SUPPORTS_HLS, StormcloudPlayer_default as StormcloudPlayer, StormcloudVideoPlayer, StormcloudVideoPlayerComponent, canPlay, createAdStormPlayer, createDemoStockTickerOverlay, createStormcloudPlayer, StormcloudVideoPlayerComponent as default, detectBrowser, fetchProjectOverlays, getBrowserConfigOverrides, getBrowserID, getClientInfo, initializePolyfills, isMediaStream, isOverlayActive, lazy, logBrowserInfo, merge, omit, parseQuery, players_default as players, randomString, resolveImageUrl, sendHeartbeat, sendInitialTracking, supportsFeature, supportsModernJS, supportsWebKitPresentationMode, timeStringToSeconds };
|
|
11101
|
+
export { IS_BROWSER, IS_GLOBAL, IS_IOS, IS_SAFARI, OVERLAY_API_BASE, SUPPORTS_DASH, SUPPORTS_HLS, StormcloudPlayer_default as StormcloudPlayer, StormcloudVideoPlayer, StormcloudVideoPlayerComponent, canPlay, createAdStormPlayer, createDemoStockTickerOverlay, createStormcloudPlayer, StormcloudVideoPlayerComponent as default, detectBrowser, fetchProjectOverlays, getBrowserConfigOverrides, getBrowserID, getClientInfo, initializePolyfills, isMediaStream, isOverlayActive, lazy, logBrowserInfo, merge, normalizeSwirlOverlay, omit, parseQuery, players_default as players, randomString, resolveImageUrl, scrollerLooksLikeMarketsStock, sendHeartbeat, sendInitialTracking, supportsFeature, supportsModernJS, supportsWebKitPresentationMode, timeStringToSeconds };
|
|
10984
11102
|
//# sourceMappingURL=index.js.map
|