stormcloud-video-player 0.7.41 → 0.7.42
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 +2 -88
- package/lib/index.cjs.map +1 -1
- package/lib/index.d.cts +1 -7
- package/lib/index.d.ts +1 -7
- package/lib/index.js +3 -81
- package/lib/index.js.map +1 -1
- package/lib/ui/OverlayRenderer.cjs +1 -2
- package/lib/ui/OverlayRenderer.cjs.map +1 -1
- package/lib/ui/StormcloudVideoPlayer.cjs +2 -80
- package/lib/ui/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/utils/overlays.cjs +1 -67
- package/lib/utils/overlays.cjs.map +1 -1
- package/lib/utils/overlays.d.cts +1 -7
- package/package.json +1 -1
package/lib/utils/overlays.cjs
CHANGED
|
@@ -217,9 +217,6 @@ __export(overlays_exports, {
|
|
|
217
217
|
SWIRL_HD_AUTHORING_WIDTH: function SWIRL_HD_AUTHORING_WIDTH1() {
|
|
218
218
|
return SWIRL_HD_AUTHORING_WIDTH;
|
|
219
219
|
},
|
|
220
|
-
createDemoStockTickerOverlay: function createDemoStockTickerOverlay1() {
|
|
221
|
-
return createDemoStockTickerOverlay;
|
|
222
|
-
},
|
|
223
220
|
fetchProjectOverlays: function fetchProjectOverlays1() {
|
|
224
221
|
return fetchProjectOverlays;
|
|
225
222
|
},
|
|
@@ -238,9 +235,6 @@ __export(overlays_exports, {
|
|
|
238
235
|
resolveImageUrl: function resolveImageUrl1() {
|
|
239
236
|
return resolveImageUrl;
|
|
240
237
|
},
|
|
241
|
-
scrollerLooksLikeMarketsStock: function scrollerLooksLikeMarketsStock1() {
|
|
242
|
-
return scrollerLooksLikeMarketsStock;
|
|
243
|
-
},
|
|
244
238
|
swirlProjectHasNabDemoMixedWithOther: function swirlProjectHasNabDemoMixedWithOther1() {
|
|
245
239
|
return swirlProjectHasNabDemoMixedWithOther;
|
|
246
240
|
},
|
|
@@ -305,8 +299,7 @@ function overlayAuthoringDimensions(overlay, decodeWidth, decodeHeight) {
|
|
|
305
299
|
var EPS = 2;
|
|
306
300
|
var exceedsDecode = extR > decodeWidth + EPS || extB > decodeHeight + EPS;
|
|
307
301
|
var isNabDemo = overlay.name.startsWith(NAB_DEMO_NAME_PREFIX);
|
|
308
|
-
|
|
309
|
-
if (exceedsDecode && (isNabDemo || isSyntheticMarketsTicker)) {
|
|
302
|
+
if (exceedsDecode && isNabDemo) {
|
|
310
303
|
return {
|
|
311
304
|
width: SWIRL_HD_AUTHORING_WIDTH,
|
|
312
305
|
height: SWIRL_HD_AUTHORING_HEIGHT
|
|
@@ -404,63 +397,6 @@ function inferSwirlOverlayCoordinateSpace(overlays, videoWidth, videoHeight) {
|
|
|
404
397
|
height: videoHeight
|
|
405
398
|
};
|
|
406
399
|
}
|
|
407
|
-
function scrollerLooksLikeMarketsStock(o) {
|
|
408
|
-
var _ref, _ref1, _ref2, _ref3;
|
|
409
|
-
if (o.type !== "scroller") return false;
|
|
410
|
-
var cfg = o.scroller_config;
|
|
411
|
-
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 : "");
|
|
412
|
-
return /\b(MARKETS?|NYSE|NASDAQ|DJIA|\bS&P\b|STOCK|AAPL|TSLA|NVDA|EQUITIES)\b/i.test(blob);
|
|
413
|
-
}
|
|
414
|
-
function createDemoStockTickerOverlay(projectId, opts) {
|
|
415
|
-
var cw = (opts === null || opts === void 0 ? void 0 : opts.coordinateWidth) && opts.coordinateWidth > 0 ? opts.coordinateWidth : SWIRL_HD_AUTHORING_WIDTH;
|
|
416
|
-
var ch = (opts === null || opts === void 0 ? void 0 : opts.coordinateHeight) && opts.coordinateHeight > 0 ? opts.coordinateHeight : SWIRL_HD_AUTHORING_HEIGHT;
|
|
417
|
-
var sx = cw / SWIRL_HD_AUTHORING_WIDTH;
|
|
418
|
-
var sy = ch / SWIRL_HD_AUTHORING_HEIGHT;
|
|
419
|
-
var x = 36 * sx;
|
|
420
|
-
var y = 1002 * sy;
|
|
421
|
-
var width = 1848 * sx;
|
|
422
|
-
var height = 66 * sy;
|
|
423
|
-
var fontSize = Math.max(8, Math.round(13 * sy));
|
|
424
|
-
var scrollSpeed = Math.max(8, Math.round(36 * sx));
|
|
425
|
-
var borderRadius = Math.max(1, Math.round(4 * sy));
|
|
426
|
-
return {
|
|
427
|
-
id: -9001,
|
|
428
|
-
project_id: projectId,
|
|
429
|
-
name: "Demo stock ticker",
|
|
430
|
-
type: "scroller",
|
|
431
|
-
visible: true,
|
|
432
|
-
x: x,
|
|
433
|
-
y: y,
|
|
434
|
-
width: width,
|
|
435
|
-
height: height,
|
|
436
|
-
opacity: 100,
|
|
437
|
-
start_time: "00:00:00.000",
|
|
438
|
-
duration: "24:00:00.000",
|
|
439
|
-
z_index: 120,
|
|
440
|
-
scroller_config: {
|
|
441
|
-
preset: "equities_strip",
|
|
442
|
-
use_custom_text: true,
|
|
443
|
-
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%",
|
|
444
|
-
direction: "left",
|
|
445
|
-
scroll_speed: scrollSpeed,
|
|
446
|
-
font_size: fontSize,
|
|
447
|
-
font_weight: "600",
|
|
448
|
-
text_color: "#e2e8f0",
|
|
449
|
-
background_color: "#0a0f18",
|
|
450
|
-
background_opacity: 92,
|
|
451
|
-
border_radius: borderRadius,
|
|
452
|
-
padding: Math.max(3, Math.round(6 * sy)),
|
|
453
|
-
label: "U.S. equities",
|
|
454
|
-
label_line2: "",
|
|
455
|
-
label_color: "#1e3a5f",
|
|
456
|
-
label_text_color: "#f8fafc",
|
|
457
|
-
accent_color: "#38bdf8",
|
|
458
|
-
show_accent_line: true,
|
|
459
|
-
separator_char: "\u2022",
|
|
460
|
-
item_spacing: Math.max(28, Math.round(48 * sx))
|
|
461
|
-
}
|
|
462
|
-
};
|
|
463
|
-
}
|
|
464
400
|
function normalizeScrollerConfig(raw) {
|
|
465
401
|
if (!raw || (typeof raw === "undefined" ? "undefined" : _type_of(raw)) !== "object") return void 0;
|
|
466
402
|
var r = raw;
|
|
@@ -545,14 +481,12 @@ function resolveImageUrl(imageUrl) {
|
|
|
545
481
|
OVERLAY_API_BASE: OVERLAY_API_BASE,
|
|
546
482
|
SWIRL_HD_AUTHORING_HEIGHT: SWIRL_HD_AUTHORING_HEIGHT,
|
|
547
483
|
SWIRL_HD_AUTHORING_WIDTH: SWIRL_HD_AUTHORING_WIDTH,
|
|
548
|
-
createDemoStockTickerOverlay: createDemoStockTickerOverlay,
|
|
549
484
|
fetchProjectOverlays: fetchProjectOverlays,
|
|
550
485
|
inferSwirlOverlayCoordinateSpace: inferSwirlOverlayCoordinateSpace,
|
|
551
486
|
isOverlayActive: isOverlayActive,
|
|
552
487
|
normalizeSwirlOverlay: normalizeSwirlOverlay,
|
|
553
488
|
overlayAuthoringDimensions: overlayAuthoringDimensions,
|
|
554
489
|
resolveImageUrl: resolveImageUrl,
|
|
555
|
-
scrollerLooksLikeMarketsStock: scrollerLooksLikeMarketsStock,
|
|
556
490
|
swirlProjectHasNabDemoMixedWithOther: swirlProjectHasNabDemoMixedWithOther,
|
|
557
491
|
timeStringToSeconds: timeStringToSeconds
|
|
558
492
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/ubuntu24-new/Dev/stormcloud-vp/lib/utils/overlays.cjs","../../src/utils/overlays.ts"],"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","overlays_exports","OVERLAY_API_BASE","SWIRL_HD_AUTHORING_HEIGHT","SWIRL_HD_AUTHORING_WIDTH","createDemoStockTickerOverlay","fetchProjectOverlays","normalizeSwirlOverlay","inferSwirlOverlayCoordinateSpace","isOverlayActive","overlayAuthoringDimensions","resolveImageUrl","scrollerLooksLikeMarketsStock","swirlProjectHasNabDemoMixedWithOther","timeStringToSeconds","module","exports","timeStr","parts","split","length","hours","parseInt","minutes","secStr","dotIdx","indexOf","seconds","substring","msFrag","ms","padEnd"],"mappings":"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","sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/utils/overlays.ts\nvar overlays_exports = {};\n__export(overlays_exports, {\n OVERLAY_API_BASE: () => OVERLAY_API_BASE,\n SWIRL_HD_AUTHORING_HEIGHT: () => SWIRL_HD_AUTHORING_HEIGHT,\n SWIRL_HD_AUTHORING_WIDTH: () => SWIRL_HD_AUTHORING_WIDTH,\n createDemoStockTickerOverlay: () => createDemoStockTickerOverlay,\n fetchProjectOverlays: () => fetchProjectOverlays,\n inferSwirlOverlayCoordinateSpace: () => inferSwirlOverlayCoordinateSpace,\n isOverlayActive: () => isOverlayActive,\n normalizeSwirlOverlay: () => normalizeSwirlOverlay,\n overlayAuthoringDimensions: () => overlayAuthoringDimensions,\n resolveImageUrl: () => resolveImageUrl,\n scrollerLooksLikeMarketsStock: () => scrollerLooksLikeMarketsStock,\n swirlProjectHasNabDemoMixedWithOther: () => swirlProjectHasNabDemoMixedWithOther,\n timeStringToSeconds: () => timeStringToSeconds\n});\nmodule.exports = __toCommonJS(overlays_exports);\nvar OVERLAY_API_BASE = \"https://adstorm.co/api-adstorm-dev\";\nfunction timeStringToSeconds(timeStr) {\n if (!timeStr) return 0;\n const parts = timeStr.split(\":\");\n if (parts.length >= 3) {\n const hours = parseInt(parts[0] ?? \"0\", 10) || 0;\n const minutes = parseInt(parts[1] ?? \"0\", 10) || 0;\n const secStr = parts[2] ?? \"0\";\n const dotIdx = secStr.indexOf(\".\");\n const seconds = parseInt(dotIdx >= 0 ? secStr.substring(0, dotIdx) : secStr, 10) || 0;\n const msFrag = dotIdx >= 0 ? secStr.substring(dotIdx + 1) : \"\";\n const ms = msFrag ? parseInt(msFrag.padEnd(3, \"0\").substring(0, 3), 10) || 0 : 0;\n return hours * 3600 + minutes * 60 + seconds + ms / 1e3;\n }\n if (parts.length === 2) {\n const minutes = parseInt(parts[0] ?? \"0\", 10) || 0;\n const secStr = parts[1] ?? \"0\";\n const dotIdx = secStr.indexOf(\".\");\n const seconds = parseInt(dotIdx >= 0 ? secStr.substring(0, dotIdx) : secStr, 10) || 0;\n const msFrag = dotIdx >= 0 ? secStr.substring(dotIdx + 1) : \"\";\n const ms = msFrag ? parseInt(msFrag.padEnd(3, \"0\").substring(0, 3), 10) || 0 : 0;\n return minutes * 60 + seconds + ms / 1e3;\n }\n const num = parseFloat(timeStr);\n return isFinite(num) ? Math.max(0, num) : 0;\n}\nfunction isOverlayActive(overlay, currentTime) {\n if (!overlay.visible) return false;\n const startSec = timeStringToSeconds(overlay.start_time);\n const durationSec = timeStringToSeconds(overlay.duration);\n if (durationSec <= 0) return false;\n return currentTime >= startSec && currentTime < startSec + durationSec;\n}\nvar SWIRL_HD_AUTHORING_WIDTH = 1920;\nvar SWIRL_HD_AUTHORING_HEIGHT = 1080;\nvar NAB_DEMO_NAME_PREFIX = \"NAB Demo \\u2014 \";\nfunction overlayAuthoringDimensions(overlay, decodeWidth, decodeHeight) {\n if (!decodeWidth || !decodeHeight) {\n return {\n width: decodeWidth || SWIRL_HD_AUTHORING_WIDTH,\n height: decodeHeight || SWIRL_HD_AUTHORING_HEIGHT\n };\n }\n if (!overlay.visible) {\n return { width: decodeWidth, height: decodeHeight };\n }\n const extR = overlay.x + overlay.width;\n const extB = overlay.y + overlay.height;\n const EPS = 2;\n const exceedsDecode = extR > decodeWidth + EPS || extB > decodeHeight + EPS;\n const isNabDemo = overlay.name.startsWith(NAB_DEMO_NAME_PREFIX);\n const isSyntheticMarketsTicker = overlay.id === -9001 || overlay.name === \"Demo stock ticker\";\n if (exceedsDecode && (isNabDemo || isSyntheticMarketsTicker)) {\n return {\n width: SWIRL_HD_AUTHORING_WIDTH,\n height: SWIRL_HD_AUTHORING_HEIGHT\n };\n }\n return { width: decodeWidth, height: decodeHeight };\n}\nfunction overlayExtents(overlays) {\n let maxR = 0;\n let maxB = 0;\n for (const o of overlays) {\n if (!o.visible) continue;\n maxR = Math.max(maxR, o.x + o.width);\n maxB = Math.max(maxB, o.y + o.height);\n }\n return { maxR, maxB };\n}\nfunction swirlProjectHasNabDemoMixedWithOther(overlays) {\n let hasNab = false;\n let hasOther = false;\n for (const o of overlays) {\n if (!o.visible) continue;\n if (o.name.startsWith(NAB_DEMO_NAME_PREFIX)) hasNab = true;\n else hasOther = true;\n }\n return hasNab && hasOther;\n}\nfunction inferSwirlOverlayCoordinateSpace(overlays, videoWidth, videoHeight) {\n if (!videoWidth || !videoHeight) {\n return {\n width: videoWidth || SWIRL_HD_AUTHORING_WIDTH,\n height: videoHeight || SWIRL_HD_AUTHORING_HEIGHT\n };\n }\n if (!overlays.length) {\n return { width: videoWidth, height: videoHeight };\n }\n const { maxR, maxB } = overlayExtents(overlays);\n const EPS = 1;\n const exceedsDecode = maxR > videoWidth + EPS || maxB > videoHeight + EPS;\n const fitsHdCanvas = maxR <= SWIRL_HD_AUTHORING_WIDTH + EPS && maxB <= SWIRL_HD_AUTHORING_HEIGHT + EPS;\n const mixed = swirlProjectHasNabDemoMixedWithOther(overlays);\n const decodeLargerThanHd = videoWidth > SWIRL_HD_AUTHORING_WIDTH + EPS || videoHeight > SWIRL_HD_AUTHORING_HEIGHT + EPS;\n if (fitsHdCanvas && (decodeLargerThanHd || exceedsDecode && !mixed)) {\n return {\n width: SWIRL_HD_AUTHORING_WIDTH,\n height: SWIRL_HD_AUTHORING_HEIGHT\n };\n }\n return { width: videoWidth, height: videoHeight };\n}\nfunction scrollerLooksLikeMarketsStock(o) {\n if (o.type !== \"scroller\") return false;\n const cfg = o.scroller_config;\n const blob = `${o.name} ${cfg?.label ?? \"\"} ${cfg?.label_line2 ?? \"\"} ${cfg?.custom_text ?? \"\"} ${cfg?.preset ?? \"\"}`;\n return /\\b(MARKETS?|NYSE|NASDAQ|DJIA|\\bS&P\\b|STOCK|AAPL|TSLA|NVDA|EQUITIES)\\b/i.test(blob);\n}\nfunction createDemoStockTickerOverlay(projectId, opts) {\n const cw = opts?.coordinateWidth && opts.coordinateWidth > 0 ? opts.coordinateWidth : SWIRL_HD_AUTHORING_WIDTH;\n const ch = opts?.coordinateHeight && opts.coordinateHeight > 0 ? opts.coordinateHeight : SWIRL_HD_AUTHORING_HEIGHT;\n const sx = cw / SWIRL_HD_AUTHORING_WIDTH;\n const sy = ch / SWIRL_HD_AUTHORING_HEIGHT;\n const x = 36 * sx;\n const y = 1002 * sy;\n const width = 1848 * sx;\n const height = 66 * sy;\n const fontSize = Math.max(8, Math.round(13 * sy));\n const scrollSpeed = Math.max(8, Math.round(36 * sx));\n const borderRadius = Math.max(1, Math.round(4 * sy));\n return {\n id: -9001,\n project_id: projectId,\n name: \"Demo stock ticker\",\n type: \"scroller\",\n visible: true,\n x,\n y,\n width,\n height,\n opacity: 100,\n start_time: \"00:00:00.000\",\n duration: \"24:00:00.000\",\n z_index: 120,\n scroller_config: {\n preset: \"equities_strip\",\n use_custom_text: true,\n 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%\",\n direction: \"left\",\n scroll_speed: scrollSpeed,\n font_size: fontSize,\n font_weight: \"600\",\n text_color: \"#e2e8f0\",\n background_color: \"#0a0f18\",\n background_opacity: 92,\n border_radius: borderRadius,\n padding: Math.max(3, Math.round(6 * sy)),\n label: \"U.S. equities\",\n label_line2: \"\",\n label_color: \"#1e3a5f\",\n label_text_color: \"#f8fafc\",\n accent_color: \"#38bdf8\",\n show_accent_line: true,\n separator_char: \"\\u2022\",\n item_spacing: Math.max(28, Math.round(48 * sx))\n }\n };\n}\nfunction normalizeScrollerConfig(raw) {\n if (!raw || typeof raw !== \"object\") return void 0;\n const r = raw;\n const merged = { ...raw };\n if (merged.use_custom_text === void 0 && typeof r.useCustomText === \"boolean\") {\n merged.use_custom_text = r.useCustomText;\n }\n if ((merged.custom_text === void 0 || merged.custom_text === \"\") && typeof r.customText === \"string\") {\n merged.custom_text = r.customText;\n }\n if (!merged.rss_url && typeof r.rssUrl === \"string\") {\n merged.rss_url = r.rssUrl;\n }\n return merged;\n}\nfunction normalizeSwirlOverlay(raw) {\n const o = { ...raw };\n if (o.type === \"scroller\") {\n const sc = raw.scroller_config ?? raw.scrollerConfig;\n const normalized = normalizeScrollerConfig(sc);\n if (normalized) o.scroller_config = normalized;\n }\n return o;\n}\nasync function fetchProjectOverlays(projectId, apiBaseUrl = OVERLAY_API_BASE) {\n const base = apiBaseUrl.replace(/\\/$/, \"\");\n const response = await fetch(\n `${base}/adstorm/swirl/projects/${projectId}/overlays`\n );\n if (!response.ok) {\n throw new Error(\n `Failed to fetch overlays: ${response.status} ${response.statusText}`\n );\n }\n const data = await response.json();\n if (!Array.isArray(data)) return [];\n return data.map(\n (row) => normalizeSwirlOverlay(row)\n );\n}\nfunction resolveImageUrl(imageUrl, apiBaseUrl = OVERLAY_API_BASE) {\n if (!imageUrl) return \"\";\n if (imageUrl.startsWith(\"http://\") || imageUrl.startsWith(\"https://\")) {\n return imageUrl;\n }\n if (imageUrl.startsWith(\"/\")) {\n try {\n const url = new URL(apiBaseUrl);\n return `${url.origin}${imageUrl}`;\n } catch {\n return imageUrl;\n }\n }\n return `${apiBaseUrl}/${imageUrl}`;\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n OVERLAY_API_BASE,\n SWIRL_HD_AUTHORING_HEIGHT,\n SWIRL_HD_AUTHORING_WIDTH,\n createDemoStockTickerOverlay,\n fetchProjectOverlays,\n inferSwirlOverlayCoordinateSpace,\n isOverlayActive,\n normalizeSwirlOverlay,\n overlayAuthoringDimensions,\n resolveImageUrl,\n scrollerLooksLikeMarketsStock,\n swirlProjectHasNabDemoMixedWithOther,\n timeStringToSeconds\n});\n","export const OVERLAY_API_BASE = \"https://adstorm.co/api-adstorm-dev\";\n\nexport interface OverlayCoordinateSpace {\n width: number;\n height: number;\n}\n\nexport interface SwirlScrollerConfig {\n rss_url?: string;\n update_interval?: number;\n scroll_speed?: number;\n direction?: string;\n font_size?: number;\n font_family?: string;\n font_weight?: string;\n text_color?: string;\n background_color?: string;\n background_opacity?: number;\n border_color?: string;\n border_width?: number;\n border_radius?: number;\n padding?: number;\n margin?: number;\n show_title?: boolean;\n show_description?: boolean;\n show_timestamp?: boolean;\n show_author?: boolean;\n show_category?: boolean;\n max_items?: number;\n item_spacing?: number;\n fade_in_out?: boolean;\n fade_distance?: number;\n auto_refresh?: boolean;\n use_custom_text?: boolean;\n custom_text?: string;\n label?: string;\n label_line2?: string;\n label_color?: string;\n label_text_color?: string;\n accent_color?: string;\n show_accent_line?: boolean;\n separator_char?: string;\n preset?: string;\n}\n\nexport type SwirlOverlayType =\n | \"image\"\n | \"text\"\n | \"scroller\"\n | \"shape\"\n | \"score_bug\"\n | \"lower_third\"\n | \"qr_code\"\n | \"coming_up_next\"\n | \"contextual_trigger\"\n | \"odds_betting\"\n | \"breaking_news\"\n | \"countdown\";\n\nexport interface SwirlOverlay {\n id: number;\n project_id: number;\n name: string;\n type: SwirlOverlayType | string;\n visible: boolean;\n x: number;\n y: number;\n width: number;\n height: number;\n opacity: number;\n start_time: string;\n duration: string;\n content?: string;\n image_url?: string;\n scroller_config?: SwirlScrollerConfig;\n z_index: number;\n created_at?: string;\n updated_at?: string;\n}\n\nexport function timeStringToSeconds(timeStr: string): number {\n if (!timeStr) return 0;\n\n const parts = timeStr.split(\":\");\n\n if (parts.length >= 3) {\n const hours = parseInt(parts[0] ?? \"0\", 10) || 0;\n const minutes = parseInt(parts[1] ?? \"0\", 10) || 0;\n const secStr = parts[2] ?? \"0\";\n const dotIdx = secStr.indexOf(\".\");\n const seconds =\n parseInt(dotIdx >= 0 ? secStr.substring(0, dotIdx) : secStr, 10) || 0;\n const msFrag = dotIdx >= 0 ? secStr.substring(dotIdx + 1) : \"\";\n const ms = msFrag ? parseInt(msFrag.padEnd(3, \"0\").substring(0, 3), 10) || 0 : 0;\n return hours * 3600 + minutes * 60 + seconds + ms / 1000;\n }\n\n if (parts.length === 2) {\n const minutes = parseInt(parts[0] ?? \"0\", 10) || 0;\n const secStr = parts[1] ?? \"0\";\n const dotIdx = secStr.indexOf(\".\");\n const seconds =\n parseInt(dotIdx >= 0 ? secStr.substring(0, dotIdx) : secStr, 10) || 0;\n const msFrag = dotIdx >= 0 ? secStr.substring(dotIdx + 1) : \"\";\n const ms = msFrag ? parseInt(msFrag.padEnd(3, \"0\").substring(0, 3), 10) || 0 : 0;\n return minutes * 60 + seconds + ms / 1000;\n }\n\n const num = parseFloat(timeStr);\n return isFinite(num) ? Math.max(0, num) : 0;\n}\n\nexport function isOverlayActive(\n overlay: SwirlOverlay,\n currentTime: number\n): boolean {\n if (!overlay.visible) return false;\n const startSec = timeStringToSeconds(overlay.start_time);\n const durationSec = timeStringToSeconds(overlay.duration);\n if (durationSec <= 0) return false;\n return currentTime >= startSec && currentTime < startSec + durationSec;\n}\n\nexport const SWIRL_HD_AUTHORING_WIDTH = 1920;\nexport const SWIRL_HD_AUTHORING_HEIGHT = 1080;\n\nconst NAB_DEMO_NAME_PREFIX = \"NAB Demo — \";\n\nexport function overlayAuthoringDimensions(\n overlay: SwirlOverlay,\n decodeWidth: number,\n decodeHeight: number\n): { width: number; height: number } {\n if (!decodeWidth || !decodeHeight) {\n return {\n width: decodeWidth || SWIRL_HD_AUTHORING_WIDTH,\n height: decodeHeight || SWIRL_HD_AUTHORING_HEIGHT,\n };\n }\n if (!overlay.visible) {\n return { width: decodeWidth, height: decodeHeight };\n }\n const extR = overlay.x + overlay.width;\n const extB = overlay.y + overlay.height;\n const EPS = 2;\n const exceedsDecode =\n extR > decodeWidth + EPS || extB > decodeHeight + EPS;\n const isNabDemo = overlay.name.startsWith(NAB_DEMO_NAME_PREFIX);\n const isSyntheticMarketsTicker =\n overlay.id === -9001 || overlay.name === \"Demo stock ticker\";\n\n if (exceedsDecode && (isNabDemo || isSyntheticMarketsTicker)) {\n return {\n width: SWIRL_HD_AUTHORING_WIDTH,\n height: SWIRL_HD_AUTHORING_HEIGHT,\n };\n }\n return { width: decodeWidth, height: decodeHeight };\n}\n\nfunction overlayExtents(overlays: SwirlOverlay[]): { maxR: number; maxB: number } {\n let maxR = 0;\n let maxB = 0;\n for (const o of overlays) {\n if (!o.visible) continue;\n maxR = Math.max(maxR, o.x + o.width);\n maxB = Math.max(maxB, o.y + o.height);\n }\n return { maxR, maxB };\n}\n\nexport function swirlProjectHasNabDemoMixedWithOther(overlays: SwirlOverlay[]): boolean {\n let hasNab = false;\n let hasOther = false;\n for (const o of overlays) {\n if (!o.visible) continue;\n if (o.name.startsWith(NAB_DEMO_NAME_PREFIX)) hasNab = true;\n else hasOther = true;\n }\n return hasNab && hasOther;\n}\n\nexport function inferSwirlOverlayCoordinateSpace(\n overlays: SwirlOverlay[],\n videoWidth: number,\n videoHeight: number\n): OverlayCoordinateSpace {\n if (!videoWidth || !videoHeight) {\n return {\n width: videoWidth || SWIRL_HD_AUTHORING_WIDTH,\n height: videoHeight || SWIRL_HD_AUTHORING_HEIGHT,\n };\n }\n if (!overlays.length) {\n return { width: videoWidth, height: videoHeight };\n }\n\n const { maxR, maxB } = overlayExtents(overlays);\n const EPS = 1;\n const exceedsDecode = maxR > videoWidth + EPS || maxB > videoHeight + EPS;\n const fitsHdCanvas =\n maxR <= SWIRL_HD_AUTHORING_WIDTH + EPS &&\n maxB <= SWIRL_HD_AUTHORING_HEIGHT + EPS;\n const mixed = swirlProjectHasNabDemoMixedWithOther(overlays);\n const decodeLargerThanHd =\n videoWidth > SWIRL_HD_AUTHORING_WIDTH + EPS ||\n videoHeight > SWIRL_HD_AUTHORING_HEIGHT + EPS;\n\n if (fitsHdCanvas && (decodeLargerThanHd || (exceedsDecode && !mixed))) {\n return {\n width: SWIRL_HD_AUTHORING_WIDTH,\n height: SWIRL_HD_AUTHORING_HEIGHT,\n };\n }\n\n return { width: videoWidth, height: videoHeight };\n}\n\nexport function scrollerLooksLikeMarketsStock(o: SwirlOverlay): boolean {\n if (o.type !== \"scroller\") return false;\n const cfg = o.scroller_config;\n const blob = `${o.name} ${cfg?.label ?? \"\"} ${cfg?.label_line2 ?? \"\"} ${cfg?.custom_text ?? \"\"} ${cfg?.preset ?? \"\"}`;\n return /\\b(MARKETS?|NYSE|NASDAQ|DJIA|\\bS&P\\b|STOCK|AAPL|TSLA|NVDA|EQUITIES)\\b/i.test(blob);\n}\n\nexport type DemoStockTickerOptions = {\n coordinateWidth?: number;\n coordinateHeight?: number;\n};\n\nexport function createDemoStockTickerOverlay(\n projectId: number,\n opts?: DemoStockTickerOptions\n): SwirlOverlay {\n const cw =\n opts?.coordinateWidth && opts.coordinateWidth > 0\n ? opts.coordinateWidth\n : SWIRL_HD_AUTHORING_WIDTH;\n const ch =\n opts?.coordinateHeight && opts.coordinateHeight > 0\n ? opts.coordinateHeight\n : SWIRL_HD_AUTHORING_HEIGHT;\n const sx = cw / SWIRL_HD_AUTHORING_WIDTH;\n const sy = ch / SWIRL_HD_AUTHORING_HEIGHT;\n\n const x = 36 * sx;\n const y = 1002 * sy;\n const width = 1848 * sx;\n const height = 66 * sy;\n\n const fontSize = Math.max(8, Math.round(13 * sy));\n const scrollSpeed = Math.max(8, Math.round(36 * sx));\n const borderRadius = Math.max(1, Math.round(4 * sy));\n\n return {\n id: -9001,\n project_id: projectId,\n name: \"Demo stock ticker\",\n type: \"scroller\",\n visible: true,\n x,\n y,\n width,\n height,\n opacity: 100,\n start_time: \"00:00:00.000\",\n duration: \"24:00:00.000\",\n z_index: 120,\n scroller_config: {\n preset: \"equities_strip\",\n use_custom_text: true,\n custom_text:\n \"AAPL +0.84% • MSFT +0.31% • GOOGL −0.22% • AMZN +0.47% • NVDA +1.12% • META +0.19% • BRK.B +0.11% • JPM +0.55% • V +0.28% • UNH −0.17% • DJIA +0.41% • S&P 500 +0.29% • Nasdaq Composite +0.36% • Russell 2000 +0.52% • WTI crude $78.40 +0.6% • Gold $2,348/oz −0.2% • 10Y Treasury 4.28%\",\n direction: \"left\",\n scroll_speed: scrollSpeed,\n font_size: fontSize,\n font_weight: \"600\",\n text_color: \"#e2e8f0\",\n background_color: \"#0a0f18\",\n background_opacity: 92,\n border_radius: borderRadius,\n padding: Math.max(3, Math.round(6 * sy)),\n label: \"U.S. equities\",\n label_line2: \"\",\n label_color: \"#1e3a5f\",\n label_text_color: \"#f8fafc\",\n accent_color: \"#38bdf8\",\n show_accent_line: true,\n separator_char: \"•\",\n item_spacing: Math.max(28, Math.round(48 * sx)),\n },\n };\n}\n\nfunction normalizeScrollerConfig(\n raw: SwirlScrollerConfig | Record<string, unknown> | undefined\n): SwirlScrollerConfig | undefined {\n if (!raw || typeof raw !== \"object\") return undefined;\n const r = raw as Record<string, unknown>;\n const merged: SwirlScrollerConfig = { ...(raw as SwirlScrollerConfig) };\n if (merged.use_custom_text === undefined && typeof r.useCustomText === \"boolean\") {\n merged.use_custom_text = r.useCustomText;\n }\n if ((merged.custom_text === undefined || merged.custom_text === \"\") && typeof r.customText === \"string\") {\n merged.custom_text = r.customText;\n }\n if (!merged.rss_url && typeof r.rssUrl === \"string\") {\n merged.rss_url = r.rssUrl;\n }\n return merged;\n}\n\nexport function normalizeSwirlOverlay(raw: SwirlOverlay & Record<string, unknown>): SwirlOverlay {\n const o = { ...raw };\n if (o.type === \"scroller\") {\n const sc = raw.scroller_config ?? (raw as Record<string, unknown>).scrollerConfig;\n const normalized = normalizeScrollerConfig(sc as SwirlScrollerConfig);\n if (normalized) o.scroller_config = normalized;\n }\n return o;\n}\n\nexport async function fetchProjectOverlays(\n projectId: number,\n apiBaseUrl: string = OVERLAY_API_BASE\n): Promise<SwirlOverlay[]> {\n const base = apiBaseUrl.replace(/\\/$/, \"\");\n const response = await fetch(\n `${base}/adstorm/swirl/projects/${projectId}/overlays`\n );\n if (!response.ok) {\n throw new Error(\n `Failed to fetch overlays: ${response.status} ${response.statusText}`\n );\n }\n const data = await response.json();\n if (!Array.isArray(data)) return [];\n return data.map((row: SwirlOverlay & Record<string, unknown>) =>\n normalizeSwirlOverlay(row)\n );\n}\n\nexport function resolveImageUrl(\n imageUrl: string,\n apiBaseUrl: string = OVERLAY_API_BASE\n): string {\n if (!imageUrl) return \"\";\n if (imageUrl.startsWith(\"http://\") || imageUrl.startsWith(\"https://\")) {\n return imageUrl;\n }\n if (imageUrl.startsWith(\"/\")) {\n try {\n const url = new URL(apiBaseUrl);\n return `${url.origin}${imageUrl}`;\n } catch {\n return imageUrl;\n }\n }\n return `${apiBaseUrl}/${imageUrl}`;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["/home/ubuntu24-new/Dev/stormcloud-vp/lib/utils/overlays.cjs"],"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","__hasOwnProp","from","getOwnPropertyNames","prototype","__export","target","hasOwnProperty","all","get","name","enumerable","__copyProps","to","except","desc","call","key","__toCommonJS","mod","value"],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,IAAIA,YAAYC,OAAOC,cAAc;AACrC,IAAIC,KAAAA,QAAmBF,OAAOG;wCAAAA,SAAAA;YAAAA,YAC1BC,MACAC,UAMEC;;;;;oBARwBH,aAAAA,OAAwB,6DAAA;oBAClDC,OAAAA,SAAoBJ,EAAAA,KAAOO,EAAAA,CAAAA,OAAAA,SAAmB;;;wBAC/BP,CAAOQ,KACtBC,GAAYC,CADmB,CAACC,CACZC,IAApBH,MAAAA,GAD8C,AACnC,kBAACC,OAAQE,OAARF,WAAQE;;;oBADpBP,WAAeL;0BAGWa,KAAKD,GAAG,CAACE,CAAAA,EAAAA,EAAK;4BAAEC,EAAAA,IAAAA,MAAY,AAAK,6BAAA,OAAA,SAAA,MAAA,EAAA,KAAA,OAAA,SAAA,UAAA;oBAE/D,EAAIC,cAAc,qBAACC,IAAIX,MAAMY,QAAQC;oBAC/Bb;;wBAAQ,GAAOA,MAAAA,IAAAA,2BAAP,SAAOA,KAAG,MAAM,YAAY,OAAOA,SAAS,YAAY;;;2BAAhEA,CAAQ,CAAA;8BACL,CAAA,OAAA,CAAA,OAAA,kBAAA,2BAAA;;;;;;;;;;;;oBACH,IAAI,CAACD,aAAae,IAAI,CAACH,IAAII,QAAQA,QAAQH,QACzCnB,UAAUkB,IAAII,KAAK;;oBAAER,KAAK,QAAA,CAALA;QAAAA,aAAAA,iEAAAA;iCAAWP,IAAI,CAACe,IAAI;;wBAAEN,YAAY,CAAEI,CAAAA,OAAOjB,iBAAiBI,MAAMe,IAAG,KAAMF,KAAKJ,UAAU;kBAAC;;gBAFpH,QAAK,YAAWX,kBAAkBE,0BAA7B,SAAA,6BAAA,QAAA,yBAAA;;kBAAA,CAAA,GAAA,OAAA,IAAA,MAAA,EAAA,OAAA;yBAAA;;;uBAAA,6BAAA;cAAA,eAAA,IAAA,KAAA,OAAA;;;oBAAA,GAAA;8CAAA;;;;wCAGP;uBACA,OAAOW;IACT,uBAAA;IACA,4BAAA,EAAIK,eAAe,sBAACC;8BAAQP,YAAYjB,UAAU,CAAC,GAAG,cAAc;gDAAEyB,OAAO;2BAAK,IAAID","sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/utils/overlays.ts\nvar overlays_exports = {};\n__export(overlays_exports, {\n OVERLAY_API_BASE: () => OVERLAY_API_BASE,\n SWIRL_HD_AUTHORING_HEIGHT: () => SWIRL_HD_AUTHORING_HEIGHT,\n SWIRL_HD_AUTHORING_WIDTH: () => SWIRL_HD_AUTHORING_WIDTH,\n fetchProjectOverlays: () => fetchProjectOverlays,\n inferSwirlOverlayCoordinateSpace: () => inferSwirlOverlayCoordinateSpace,\n isOverlayActive: () => isOverlayActive,\n normalizeSwirlOverlay: () => normalizeSwirlOverlay,\n overlayAuthoringDimensions: () => overlayAuthoringDimensions,\n resolveImageUrl: () => resolveImageUrl,\n swirlProjectHasNabDemoMixedWithOther: () => swirlProjectHasNabDemoMixedWithOther,\n timeStringToSeconds: () => timeStringToSeconds\n});\nmodule.exports = __toCommonJS(overlays_exports);\nvar OVERLAY_API_BASE = \"https://adstorm.co/api-adstorm-dev\";\nfunction timeStringToSeconds(timeStr) {\n if (!timeStr) return 0;\n const parts = timeStr.split(\":\");\n if (parts.length >= 3) {\n const hours = parseInt(parts[0] ?? \"0\", 10) || 0;\n const minutes = parseInt(parts[1] ?? \"0\", 10) || 0;\n const secStr = parts[2] ?? \"0\";\n const dotIdx = secStr.indexOf(\".\");\n const seconds = parseInt(dotIdx >= 0 ? secStr.substring(0, dotIdx) : secStr, 10) || 0;\n const msFrag = dotIdx >= 0 ? secStr.substring(dotIdx + 1) : \"\";\n const ms = msFrag ? parseInt(msFrag.padEnd(3, \"0\").substring(0, 3), 10) || 0 : 0;\n return hours * 3600 + minutes * 60 + seconds + ms / 1e3;\n }\n if (parts.length === 2) {\n const minutes = parseInt(parts[0] ?? \"0\", 10) || 0;\n const secStr = parts[1] ?? \"0\";\n const dotIdx = secStr.indexOf(\".\");\n const seconds = parseInt(dotIdx >= 0 ? secStr.substring(0, dotIdx) : secStr, 10) || 0;\n const msFrag = dotIdx >= 0 ? secStr.substring(dotIdx + 1) : \"\";\n const ms = msFrag ? parseInt(msFrag.padEnd(3, \"0\").substring(0, 3), 10) || 0 : 0;\n return minutes * 60 + seconds + ms / 1e3;\n }\n const num = parseFloat(timeStr);\n return isFinite(num) ? Math.max(0, num) : 0;\n}\nfunction isOverlayActive(overlay, currentTime) {\n if (!overlay.visible) return false;\n const startSec = timeStringToSeconds(overlay.start_time);\n const durationSec = timeStringToSeconds(overlay.duration);\n if (durationSec <= 0) return false;\n return currentTime >= startSec && currentTime < startSec + durationSec;\n}\nvar SWIRL_HD_AUTHORING_WIDTH = 1920;\nvar SWIRL_HD_AUTHORING_HEIGHT = 1080;\nvar NAB_DEMO_NAME_PREFIX = \"NAB Demo \\u2014 \";\nfunction overlayAuthoringDimensions(overlay, decodeWidth, decodeHeight) {\n if (!decodeWidth || !decodeHeight) {\n return {\n width: decodeWidth || SWIRL_HD_AUTHORING_WIDTH,\n height: decodeHeight || SWIRL_HD_AUTHORING_HEIGHT\n };\n }\n if (!overlay.visible) {\n return { width: decodeWidth, height: decodeHeight };\n }\n const extR = overlay.x + overlay.width;\n const extB = overlay.y + overlay.height;\n const EPS = 2;\n const exceedsDecode = extR > decodeWidth + EPS || extB > decodeHeight + EPS;\n const isNabDemo = overlay.name.startsWith(NAB_DEMO_NAME_PREFIX);\n if (exceedsDecode && isNabDemo) {\n return {\n width: SWIRL_HD_AUTHORING_WIDTH,\n height: SWIRL_HD_AUTHORING_HEIGHT\n };\n }\n return { width: decodeWidth, height: decodeHeight };\n}\nfunction overlayExtents(overlays) {\n let maxR = 0;\n let maxB = 0;\n for (const o of overlays) {\n if (!o.visible) continue;\n maxR = Math.max(maxR, o.x + o.width);\n maxB = Math.max(maxB, o.y + o.height);\n }\n return { maxR, maxB };\n}\nfunction swirlProjectHasNabDemoMixedWithOther(overlays) {\n let hasNab = false;\n let hasOther = false;\n for (const o of overlays) {\n if (!o.visible) continue;\n if (o.name.startsWith(NAB_DEMO_NAME_PREFIX)) hasNab = true;\n else hasOther = true;\n }\n return hasNab && hasOther;\n}\nfunction inferSwirlOverlayCoordinateSpace(overlays, videoWidth, videoHeight) {\n if (!videoWidth || !videoHeight) {\n return {\n width: videoWidth || SWIRL_HD_AUTHORING_WIDTH,\n height: videoHeight || SWIRL_HD_AUTHORING_HEIGHT\n };\n }\n if (!overlays.length) {\n return { width: videoWidth, height: videoHeight };\n }\n const { maxR, maxB } = overlayExtents(overlays);\n const EPS = 1;\n const exceedsDecode = maxR > videoWidth + EPS || maxB > videoHeight + EPS;\n const fitsHdCanvas = maxR <= SWIRL_HD_AUTHORING_WIDTH + EPS && maxB <= SWIRL_HD_AUTHORING_HEIGHT + EPS;\n const mixed = swirlProjectHasNabDemoMixedWithOther(overlays);\n const decodeLargerThanHd = videoWidth > SWIRL_HD_AUTHORING_WIDTH + EPS || videoHeight > SWIRL_HD_AUTHORING_HEIGHT + EPS;\n if (fitsHdCanvas && (decodeLargerThanHd || exceedsDecode && !mixed)) {\n return {\n width: SWIRL_HD_AUTHORING_WIDTH,\n height: SWIRL_HD_AUTHORING_HEIGHT\n };\n }\n return { width: videoWidth, height: videoHeight };\n}\nfunction normalizeScrollerConfig(raw) {\n if (!raw || typeof raw !== \"object\") return void 0;\n const r = raw;\n const merged = { ...raw };\n if (merged.use_custom_text === void 0 && typeof r.useCustomText === \"boolean\") {\n merged.use_custom_text = r.useCustomText;\n }\n if ((merged.custom_text === void 0 || merged.custom_text === \"\") && typeof r.customText === \"string\") {\n merged.custom_text = r.customText;\n }\n if (!merged.rss_url && typeof r.rssUrl === \"string\") {\n merged.rss_url = r.rssUrl;\n }\n return merged;\n}\nfunction normalizeSwirlOverlay(raw) {\n const o = { ...raw };\n if (o.type === \"scroller\") {\n const sc = raw.scroller_config ?? raw.scrollerConfig;\n const normalized = normalizeScrollerConfig(sc);\n if (normalized) o.scroller_config = normalized;\n }\n return o;\n}\nasync function fetchProjectOverlays(projectId, apiBaseUrl = OVERLAY_API_BASE) {\n const base = apiBaseUrl.replace(/\\/$/, \"\");\n const response = await fetch(\n `${base}/adstorm/swirl/projects/${projectId}/overlays`\n );\n if (!response.ok) {\n throw new Error(\n `Failed to fetch overlays: ${response.status} ${response.statusText}`\n );\n }\n const data = await response.json();\n if (!Array.isArray(data)) return [];\n return data.map(\n (row) => normalizeSwirlOverlay(row)\n );\n}\nfunction resolveImageUrl(imageUrl, apiBaseUrl = OVERLAY_API_BASE) {\n if (!imageUrl) return \"\";\n if (imageUrl.startsWith(\"http://\") || imageUrl.startsWith(\"https://\")) {\n return imageUrl;\n }\n if (imageUrl.startsWith(\"/\")) {\n try {\n const url = new URL(apiBaseUrl);\n return `${url.origin}${imageUrl}`;\n } catch {\n return imageUrl;\n }\n }\n return `${apiBaseUrl}/${imageUrl}`;\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n OVERLAY_API_BASE,\n SWIRL_HD_AUTHORING_HEIGHT,\n SWIRL_HD_AUTHORING_WIDTH,\n fetchProjectOverlays,\n inferSwirlOverlayCoordinateSpace,\n isOverlayActive,\n normalizeSwirlOverlay,\n overlayAuthoringDimensions,\n resolveImageUrl,\n swirlProjectHasNabDemoMixedWithOther,\n timeStringToSeconds\n});\n"]}
|
package/lib/utils/overlays.d.cts
CHANGED
|
@@ -71,14 +71,8 @@ declare function overlayAuthoringDimensions(overlay: SwirlOverlay, decodeWidth:
|
|
|
71
71
|
};
|
|
72
72
|
declare function swirlProjectHasNabDemoMixedWithOther(overlays: SwirlOverlay[]): boolean;
|
|
73
73
|
declare function inferSwirlOverlayCoordinateSpace(overlays: SwirlOverlay[], videoWidth: number, videoHeight: number): OverlayCoordinateSpace;
|
|
74
|
-
declare function scrollerLooksLikeMarketsStock(o: SwirlOverlay): boolean;
|
|
75
|
-
type DemoStockTickerOptions = {
|
|
76
|
-
coordinateWidth?: number;
|
|
77
|
-
coordinateHeight?: number;
|
|
78
|
-
};
|
|
79
|
-
declare function createDemoStockTickerOverlay(projectId: number, opts?: DemoStockTickerOptions): SwirlOverlay;
|
|
80
74
|
declare function normalizeSwirlOverlay(raw: SwirlOverlay & Record<string, unknown>): SwirlOverlay;
|
|
81
75
|
declare function fetchProjectOverlays(projectId: number, apiBaseUrl?: string): Promise<SwirlOverlay[]>;
|
|
82
76
|
declare function resolveImageUrl(imageUrl: string, apiBaseUrl?: string): string;
|
|
83
77
|
|
|
84
|
-
export {
|
|
78
|
+
export { OVERLAY_API_BASE, type OverlayCoordinateSpace, SWIRL_HD_AUTHORING_HEIGHT, SWIRL_HD_AUTHORING_WIDTH, type SwirlOverlay, type SwirlOverlayType, type SwirlScrollerConfig, fetchProjectOverlays, inferSwirlOverlayCoordinateSpace, isOverlayActive, normalizeSwirlOverlay, overlayAuthoringDimensions, resolveImageUrl, swirlProjectHasNabDemoMixedWithOther, timeStringToSeconds };
|