@clyrex-digital/clyrex-controls-dev 0.8.1-dev.20260803093422 → 0.8.1-dev.20260803112407

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.
@@ -1,7 +1,5 @@
1
1
  "use client";
2
2
 
3
- "use client";
4
-
5
3
  // src/components/HlsPlayer.tsx
6
4
  import React, { useRef, useEffect, useState, useCallback } from "react";
7
5
  import Hls from "hls.js";
@@ -459,6 +457,7 @@ var HlsPlayer = React.memo(
459
457
  "aria-label": isPlaying ? "Pause" : "Play",
460
458
  className: "hls-play-btn",
461
459
  onClick: (e) => {
460
+ e.preventDefault();
462
461
  e.stopPropagation();
463
462
  handlePlayPause();
464
463
  },
@@ -566,6 +565,7 @@ var HlsPlayer = React.memo(
566
565
  type: "button",
567
566
  "aria-label": isMuted ? "Unmute" : "Mute",
568
567
  onClick: (e) => {
568
+ e.preventDefault();
569
569
  e.stopPropagation();
570
570
  handleMuteToggle();
571
571
  },
@@ -587,6 +587,7 @@ var HlsPlayer = React.memo(
587
587
  type: "button",
588
588
  "aria-label": isFullscreen ? "Exit fullscreen" : "Enter fullscreen",
589
589
  onClick: (e) => {
590
+ e.preventDefault();
590
591
  e.stopPropagation();
591
592
  handleFullscreenToggle();
592
593
  },
@@ -1,5 +1,7 @@
1
1
  "use client";
2
2
 
3
+ "use client";
4
+
3
5
  // src/components/HlsPlayer.tsx
4
6
  import React, { useRef, useEffect, useState, useCallback } from "react";
5
7
  import Hls from "hls.js";
@@ -457,6 +459,7 @@ var HlsPlayer = React.memo(
457
459
  "aria-label": isPlaying ? "Pause" : "Play",
458
460
  className: "hls-play-btn",
459
461
  onClick: (e) => {
462
+ e.preventDefault();
460
463
  e.stopPropagation();
461
464
  handlePlayPause();
462
465
  },
@@ -564,6 +567,7 @@ var HlsPlayer = React.memo(
564
567
  type: "button",
565
568
  "aria-label": isMuted ? "Unmute" : "Mute",
566
569
  onClick: (e) => {
570
+ e.preventDefault();
567
571
  e.stopPropagation();
568
572
  handleMuteToggle();
569
573
  },
@@ -585,6 +589,7 @@ var HlsPlayer = React.memo(
585
589
  type: "button",
586
590
  "aria-label": isFullscreen ? "Exit fullscreen" : "Enter fullscreen",
587
591
  onClick: (e) => {
592
+ e.preventDefault();
588
593
  e.stopPropagation();
589
594
  handleFullscreenToggle();
590
595
  },
package/dist/index.js CHANGED
@@ -653,6 +653,7 @@ var init_HlsPlayer = __esm({
653
653
  "aria-label": isPlaying ? "Pause" : "Play",
654
654
  className: "hls-play-btn",
655
655
  onClick: (e) => {
656
+ e.preventDefault();
656
657
  e.stopPropagation();
657
658
  handlePlayPause();
658
659
  },
@@ -760,6 +761,7 @@ var init_HlsPlayer = __esm({
760
761
  type: "button",
761
762
  "aria-label": isMuted ? "Unmute" : "Mute",
762
763
  onClick: (e) => {
764
+ e.preventDefault();
763
765
  e.stopPropagation();
764
766
  handleMuteToggle();
765
767
  },
@@ -781,6 +783,7 @@ var init_HlsPlayer = __esm({
781
783
  type: "button",
782
784
  "aria-label": isFullscreen ? "Exit fullscreen" : "Enter fullscreen",
783
785
  onClick: (e) => {
786
+ e.preventDefault();
784
787
  e.stopPropagation();
785
788
  handleFullscreenToggle();
786
789
  },
@@ -6130,36 +6133,6 @@ var parseMaybeNumber = (value) => {
6130
6133
  const n = Number(value);
6131
6134
  return Number.isFinite(n) ? n : void 0;
6132
6135
  };
6133
- function resolveAssetUrl(fieldValue, tag) {
6134
- if (!fieldValue) {
6135
- return void 0;
6136
- }
6137
- if (typeof fieldValue === "string") {
6138
- const trimmed = fieldValue.trim();
6139
- if (trimmed.startsWith("itemassets/") || trimmed.startsWith("/itemassets/") || trimmed.startsWith("http")) {
6140
- return trimmed;
6141
- }
6142
- try {
6143
- const parsed = JSON.parse(trimmed);
6144
- return resolveAssetUrl(parsed, tag);
6145
- } catch {
6146
- return void 0;
6147
- }
6148
- }
6149
- if (Array.isArray(fieldValue)) {
6150
- const asset = tag ? fieldValue.find(
6151
- (x) => x?.tag?.toLowerCase() === tag?.toLowerCase()
6152
- ) : fieldValue[0];
6153
- return asset?.assetUrl;
6154
- }
6155
- if (typeof fieldValue === "object" && fieldValue !== null) {
6156
- const assetObject = fieldValue;
6157
- if (assetObject.assetUrl) {
6158
- return assetObject.assetUrl;
6159
- }
6160
- }
6161
- return void 0;
6162
- }
6163
6136
  var getNestedValue3 = (obj, path) => {
6164
6137
  if (!obj || !path) {
6165
6138
  return void 0;
@@ -6169,57 +6142,114 @@ var getNestedValue3 = (obj, path) => {
6169
6142
  }, obj);
6170
6143
  };
6171
6144
  var ImageGalleryNode = (props) => {
6172
- const resolveImageUrl = (image) => {
6145
+ function resolveAsset(fieldValue, tag) {
6146
+ if (!fieldValue) {
6147
+ return void 0;
6148
+ }
6149
+ if (typeof fieldValue === "string") {
6150
+ const trimmed = fieldValue.trim();
6151
+ if (trimmed.startsWith("itemassets/") || trimmed.startsWith("/itemassets/") || trimmed.startsWith("http")) {
6152
+ return {
6153
+ assetUrl: trimmed
6154
+ };
6155
+ }
6156
+ try {
6157
+ const parsed = JSON.parse(trimmed);
6158
+ return resolveAsset(parsed, tag);
6159
+ } catch {
6160
+ return void 0;
6161
+ }
6162
+ }
6163
+ if (Array.isArray(fieldValue)) {
6164
+ const asset = tag ? fieldValue.find(
6165
+ (x) => x?.tag?.toLowerCase() === tag?.toLowerCase()
6166
+ ) : fieldValue[0];
6167
+ if (!asset) return void 0;
6168
+ return {
6169
+ assetUrl: asset.assetUrl,
6170
+ posterUrl: asset.posterUrl,
6171
+ intrinsicWidth: asset.intrinsicWidth,
6172
+ intrinsicHeight: asset.intrinsicHeight,
6173
+ device: asset.device,
6174
+ tag: asset.tag
6175
+ };
6176
+ }
6177
+ if (typeof fieldValue === "object" && fieldValue !== null) {
6178
+ const asset = fieldValue;
6179
+ if (!asset.assetUrl) {
6180
+ return void 0;
6181
+ }
6182
+ return {
6183
+ assetUrl: asset.assetUrl,
6184
+ posterUrl: asset.posterUrl,
6185
+ intrinsicWidth: asset.intrinsicWidth,
6186
+ intrinsicHeight: asset.intrinsicHeight,
6187
+ device: asset.device,
6188
+ tag: asset.tag
6189
+ };
6190
+ }
6191
+ return void 0;
6192
+ }
6193
+ const resolveImage = (image) => {
6173
6194
  let imageUrl = image.imageUrl;
6195
+ let posterUrl = image.posterUrl;
6196
+ let intrinsicWidth = image.intrinsicWidth;
6197
+ let intrinsicHeight = image.intrinsicHeight;
6174
6198
  if (image.datafield && props.dataitem) {
6175
6199
  const fieldValue = getNestedValue3(props.dataitem, image.datafield);
6176
- const resolvedAsset = resolveAssetUrl(fieldValue, image.tag);
6200
+ const resolvedAsset = resolveAsset(fieldValue, image.tag);
6177
6201
  if (resolvedAsset) {
6178
- imageUrl = resolvedAsset;
6202
+ imageUrl = resolvedAsset.assetUrl;
6203
+ posterUrl = resolvedAsset.posterUrl;
6204
+ intrinsicWidth = resolvedAsset.intrinsicWidth;
6205
+ intrinsicHeight = resolvedAsset.intrinsicHeight;
6179
6206
  }
6180
6207
  }
6181
6208
  if (!imageUrl) {
6182
- return "";
6183
- }
6184
- if (imageUrl.startsWith("http")) {
6185
- return imageUrl;
6209
+ return void 0;
6186
6210
  }
6187
- const base = props.assetBaseUrl.replace(/\/$/, "");
6188
- const path = imageUrl.replace(/^\//, "");
6189
- return `${base}/${path}`;
6211
+ return {
6212
+ imageUrl: imageUrl.startsWith("http") ? imageUrl : AssetUtility_default.resolveUrl(props.assetBaseUrl, imageUrl),
6213
+ posterUrl: posterUrl ? AssetUtility_default.resolveUrl(props.assetBaseUrl, posterUrl) : void 0,
6214
+ intrinsicWidth,
6215
+ intrinsicHeight
6216
+ };
6190
6217
  };
6191
6218
  const resolvePosterUrl = (posterUrl) => {
6192
6219
  if (!posterUrl) return void 0;
6193
6220
  return AssetUtility_default.resolveUrl(props.assetBaseUrl, posterUrl);
6194
6221
  };
6195
6222
  const rawImages = Array.isArray(props.node.images) ? props.node.images : [];
6196
- const hlsImages = rawImages.filter(
6197
- (img) => resolveImageUrl(img).endsWith(".m3u8")
6198
- );
6199
- const staticImages = rawImages.filter(
6200
- (img) => !resolveImageUrl(img).endsWith(".m3u8")
6201
- );
6223
+ const hlsImages = rawImages.filter((img) => {
6224
+ const resolved = resolveImage(img);
6225
+ return resolved?.imageUrl?.endsWith(".m3u8");
6226
+ });
6227
+ const staticImages = rawImages.filter((img) => {
6228
+ const resolved = resolveImage(img);
6229
+ return resolved && !resolved.imageUrl?.endsWith(".m3u8");
6230
+ });
6202
6231
  const hlsSources = [
6203
6232
  ...DEVICE_ORDER.flatMap((deviceKey) => {
6204
6233
  const img = hlsImages.find((i) => i.device === deviceKey);
6205
6234
  if (!img) return [];
6206
- const src = resolveImageUrl(img);
6207
- if (!src) return [];
6208
- const media = deviceToMediaQuery(img.device);
6209
- const posterUrl = resolvePosterUrl(img.posterUrl);
6235
+ const resolved = resolveImage(img);
6236
+ if (!resolved) return [];
6210
6237
  return [
6211
6238
  {
6212
- src,
6213
- ...media ? { media } : {},
6214
- ...posterUrl ? { posterUrl } : {}
6239
+ src: resolved.imageUrl,
6240
+ ...deviceToMediaQuery(img.device) ? { media: deviceToMediaQuery(img.device) } : {},
6241
+ ...resolved.posterUrl ? { posterUrl: resolved.posterUrl } : {}
6215
6242
  }
6216
6243
  ];
6217
6244
  }),
6218
6245
  ...hlsImages.filter((img) => !img.device).map((img) => {
6219
- const src = resolveImageUrl(img);
6220
- const posterUrl = resolvePosterUrl(img.posterUrl);
6221
- return { src, ...posterUrl ? { posterUrl } : {} };
6222
- }).filter((s) => !!s.src)
6246
+ const resolved = resolveImage(img);
6247
+ if (!resolved) return void 0;
6248
+ return {
6249
+ src: resolved.imageUrl,
6250
+ ...resolved.posterUrl ? { posterUrl: resolved.posterUrl } : {}
6251
+ };
6252
+ }).filter(Boolean)
6223
6253
  ];
6224
6254
  const primaryHls = hlsImages.find((img) => !img.device) ?? hlsImages[0];
6225
6255
  const hlsIntrinsicWidth = primaryHls ? parseMaybeNumber(primaryHls.intrinsicWidth)?.toString() : void 0;
@@ -6261,7 +6291,11 @@ var ImageGalleryNode = (props) => {
6261
6291
  if (!match) {
6262
6292
  return null;
6263
6293
  }
6264
- const srcUrl = resolveImageUrl(match);
6294
+ const resolved = resolveImage(match);
6295
+ if (!resolved) {
6296
+ return null;
6297
+ }
6298
+ const srcUrl = resolved.imageUrl;
6265
6299
  if (!srcUrl) {
6266
6300
  return null;
6267
6301
  }
@@ -6278,7 +6312,8 @@ var ImageGalleryNode = (props) => {
6278
6312
  }),
6279
6313
  (() => {
6280
6314
  const img = staticFallback;
6281
- const imageUrl = resolveImageUrl(img);
6315
+ const resolved = resolveImage(img);
6316
+ const imageUrl = resolved?.imageUrl;
6282
6317
  if (!imageUrl) {
6283
6318
  return null;
6284
6319
  }
@@ -6305,7 +6340,8 @@ var ImageGalleryNode = (props) => {
6305
6340
  ] }) : (
6306
6341
  /* Case 2: Only device-specific images exist */
6307
6342
  /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(import_jsx_runtime72.Fragment, { children: staticSources.map((img, index) => {
6308
- const imageUrl = resolveImageUrl(img);
6343
+ const resolved = resolveImage(img);
6344
+ const imageUrl = resolved?.imageUrl;
6309
6345
  if (!imageUrl) {
6310
6346
  return null;
6311
6347
  }
@@ -6947,7 +6983,7 @@ var getNestedValue6 = (obj, path) => {
6947
6983
  return current && current[key] !== void 0 ? current[key] : void 0;
6948
6984
  }, obj);
6949
6985
  };
6950
- function resolveAssetUrl2(fieldValue, tag) {
6986
+ function resolveAssetUrl(fieldValue, tag) {
6951
6987
  if (!fieldValue) {
6952
6988
  return void 0;
6953
6989
  }
@@ -6958,7 +6994,7 @@ function resolveAssetUrl2(fieldValue, tag) {
6958
6994
  }
6959
6995
  try {
6960
6996
  const parsed = JSON.parse(trimmed);
6961
- return resolveAssetUrl2(parsed, tag);
6997
+ return resolveAssetUrl(parsed, tag);
6962
6998
  } catch {
6963
6999
  return void 0;
6964
7000
  }
@@ -6985,7 +7021,7 @@ function generateCompleteBackgroundString(layers, apiBaseUrl, dataItem) {
6985
7021
  let assetUrl = imageValue.assetUrl || "";
6986
7022
  if (layer.datafield && dataItem) {
6987
7023
  const fieldValue = getNestedValue6(dataItem, layer.datafield);
6988
- const resolvedAssetUrl = resolveAssetUrl2(fieldValue, layer.tag);
7024
+ const resolvedAssetUrl = resolveAssetUrl(fieldValue, layer.tag);
6989
7025
  if (resolvedAssetUrl) {
6990
7026
  assetUrl = resolvedAssetUrl;
6991
7027
  }
package/dist/index.mjs CHANGED
@@ -137,7 +137,7 @@ import React3 from "react";
137
137
  // src/components/DeviceAssetSelector.tsx
138
138
  import dynamic2 from "next/dynamic";
139
139
  import { jsx as jsx3 } from "react/jsx-runtime";
140
- var HlsPlayer = dynamic2(() => import("./HlsPlayer-2P7SBFDP.mjs"), { ssr: false });
140
+ var HlsPlayer = dynamic2(() => import("./HlsPlayer-IW52N5RG.mjs"), { ssr: false });
141
141
  var FORMAT_CLASSES = {
142
142
  center: "justify-center",
143
143
  left: "justify-start",
@@ -509,7 +509,7 @@ import React14 from "react";
509
509
  // src/components/pageRenderingEngine/nodes/ImageNode.tsx
510
510
  import dynamic5 from "next/dynamic";
511
511
  import { jsx as jsx17 } from "react/jsx-runtime";
512
- var HlsPlayer2 = dynamic5(() => import("./HlsPlayer-2P7SBFDP.mjs"), { ssr: false });
512
+ var HlsPlayer2 = dynamic5(() => import("./HlsPlayer-IW52N5RG.mjs"), { ssr: false });
513
513
  var getNestedValue = (obj, path) => {
514
514
  if (!obj || !path) return void 0;
515
515
  return path.split(".").reduce((current, key) => {
@@ -1431,7 +1431,7 @@ var NoDataFound_default = NoDataFound;
1431
1431
  // src/components/pageRenderingEngine/nodes/ImageGalleryNode.tsx
1432
1432
  import dynamic9 from "next/dynamic";
1433
1433
  import { Fragment as Fragment5, jsx as jsx32, jsxs as jsxs11 } from "react/jsx-runtime";
1434
- var HlsPlayer3 = dynamic9(() => import("./HlsPlayer-2P7SBFDP.mjs"), { ssr: false });
1434
+ var HlsPlayer3 = dynamic9(() => import("./HlsPlayer-IW52N5RG.mjs"), { ssr: false });
1435
1435
  var deviceToMediaQuery = (device) => {
1436
1436
  switch (device) {
1437
1437
  case "lg":
@@ -1452,36 +1452,6 @@ var parseMaybeNumber = (value) => {
1452
1452
  const n = Number(value);
1453
1453
  return Number.isFinite(n) ? n : void 0;
1454
1454
  };
1455
- function resolveAssetUrl(fieldValue, tag) {
1456
- if (!fieldValue) {
1457
- return void 0;
1458
- }
1459
- if (typeof fieldValue === "string") {
1460
- const trimmed = fieldValue.trim();
1461
- if (trimmed.startsWith("itemassets/") || trimmed.startsWith("/itemassets/") || trimmed.startsWith("http")) {
1462
- return trimmed;
1463
- }
1464
- try {
1465
- const parsed = JSON.parse(trimmed);
1466
- return resolveAssetUrl(parsed, tag);
1467
- } catch {
1468
- return void 0;
1469
- }
1470
- }
1471
- if (Array.isArray(fieldValue)) {
1472
- const asset = tag ? fieldValue.find(
1473
- (x) => x?.tag?.toLowerCase() === tag?.toLowerCase()
1474
- ) : fieldValue[0];
1475
- return asset?.assetUrl;
1476
- }
1477
- if (typeof fieldValue === "object" && fieldValue !== null) {
1478
- const assetObject = fieldValue;
1479
- if (assetObject.assetUrl) {
1480
- return assetObject.assetUrl;
1481
- }
1482
- }
1483
- return void 0;
1484
- }
1485
1455
  var getNestedValue3 = (obj, path) => {
1486
1456
  if (!obj || !path) {
1487
1457
  return void 0;
@@ -1491,57 +1461,114 @@ var getNestedValue3 = (obj, path) => {
1491
1461
  }, obj);
1492
1462
  };
1493
1463
  var ImageGalleryNode = (props) => {
1494
- const resolveImageUrl = (image) => {
1464
+ function resolveAsset(fieldValue, tag) {
1465
+ if (!fieldValue) {
1466
+ return void 0;
1467
+ }
1468
+ if (typeof fieldValue === "string") {
1469
+ const trimmed = fieldValue.trim();
1470
+ if (trimmed.startsWith("itemassets/") || trimmed.startsWith("/itemassets/") || trimmed.startsWith("http")) {
1471
+ return {
1472
+ assetUrl: trimmed
1473
+ };
1474
+ }
1475
+ try {
1476
+ const parsed = JSON.parse(trimmed);
1477
+ return resolveAsset(parsed, tag);
1478
+ } catch {
1479
+ return void 0;
1480
+ }
1481
+ }
1482
+ if (Array.isArray(fieldValue)) {
1483
+ const asset = tag ? fieldValue.find(
1484
+ (x) => x?.tag?.toLowerCase() === tag?.toLowerCase()
1485
+ ) : fieldValue[0];
1486
+ if (!asset) return void 0;
1487
+ return {
1488
+ assetUrl: asset.assetUrl,
1489
+ posterUrl: asset.posterUrl,
1490
+ intrinsicWidth: asset.intrinsicWidth,
1491
+ intrinsicHeight: asset.intrinsicHeight,
1492
+ device: asset.device,
1493
+ tag: asset.tag
1494
+ };
1495
+ }
1496
+ if (typeof fieldValue === "object" && fieldValue !== null) {
1497
+ const asset = fieldValue;
1498
+ if (!asset.assetUrl) {
1499
+ return void 0;
1500
+ }
1501
+ return {
1502
+ assetUrl: asset.assetUrl,
1503
+ posterUrl: asset.posterUrl,
1504
+ intrinsicWidth: asset.intrinsicWidth,
1505
+ intrinsicHeight: asset.intrinsicHeight,
1506
+ device: asset.device,
1507
+ tag: asset.tag
1508
+ };
1509
+ }
1510
+ return void 0;
1511
+ }
1512
+ const resolveImage = (image) => {
1495
1513
  let imageUrl = image.imageUrl;
1514
+ let posterUrl = image.posterUrl;
1515
+ let intrinsicWidth = image.intrinsicWidth;
1516
+ let intrinsicHeight = image.intrinsicHeight;
1496
1517
  if (image.datafield && props.dataitem) {
1497
1518
  const fieldValue = getNestedValue3(props.dataitem, image.datafield);
1498
- const resolvedAsset = resolveAssetUrl(fieldValue, image.tag);
1519
+ const resolvedAsset = resolveAsset(fieldValue, image.tag);
1499
1520
  if (resolvedAsset) {
1500
- imageUrl = resolvedAsset;
1521
+ imageUrl = resolvedAsset.assetUrl;
1522
+ posterUrl = resolvedAsset.posterUrl;
1523
+ intrinsicWidth = resolvedAsset.intrinsicWidth;
1524
+ intrinsicHeight = resolvedAsset.intrinsicHeight;
1501
1525
  }
1502
1526
  }
1503
1527
  if (!imageUrl) {
1504
- return "";
1505
- }
1506
- if (imageUrl.startsWith("http")) {
1507
- return imageUrl;
1528
+ return void 0;
1508
1529
  }
1509
- const base = props.assetBaseUrl.replace(/\/$/, "");
1510
- const path = imageUrl.replace(/^\//, "");
1511
- return `${base}/${path}`;
1530
+ return {
1531
+ imageUrl: imageUrl.startsWith("http") ? imageUrl : AssetUtility_default.resolveUrl(props.assetBaseUrl, imageUrl),
1532
+ posterUrl: posterUrl ? AssetUtility_default.resolveUrl(props.assetBaseUrl, posterUrl) : void 0,
1533
+ intrinsicWidth,
1534
+ intrinsicHeight
1535
+ };
1512
1536
  };
1513
1537
  const resolvePosterUrl = (posterUrl) => {
1514
1538
  if (!posterUrl) return void 0;
1515
1539
  return AssetUtility_default.resolveUrl(props.assetBaseUrl, posterUrl);
1516
1540
  };
1517
1541
  const rawImages = Array.isArray(props.node.images) ? props.node.images : [];
1518
- const hlsImages = rawImages.filter(
1519
- (img) => resolveImageUrl(img).endsWith(".m3u8")
1520
- );
1521
- const staticImages = rawImages.filter(
1522
- (img) => !resolveImageUrl(img).endsWith(".m3u8")
1523
- );
1542
+ const hlsImages = rawImages.filter((img) => {
1543
+ const resolved = resolveImage(img);
1544
+ return resolved?.imageUrl?.endsWith(".m3u8");
1545
+ });
1546
+ const staticImages = rawImages.filter((img) => {
1547
+ const resolved = resolveImage(img);
1548
+ return resolved && !resolved.imageUrl?.endsWith(".m3u8");
1549
+ });
1524
1550
  const hlsSources = [
1525
1551
  ...DEVICE_ORDER.flatMap((deviceKey) => {
1526
1552
  const img = hlsImages.find((i) => i.device === deviceKey);
1527
1553
  if (!img) return [];
1528
- const src = resolveImageUrl(img);
1529
- if (!src) return [];
1530
- const media = deviceToMediaQuery(img.device);
1531
- const posterUrl = resolvePosterUrl(img.posterUrl);
1554
+ const resolved = resolveImage(img);
1555
+ if (!resolved) return [];
1532
1556
  return [
1533
1557
  {
1534
- src,
1535
- ...media ? { media } : {},
1536
- ...posterUrl ? { posterUrl } : {}
1558
+ src: resolved.imageUrl,
1559
+ ...deviceToMediaQuery(img.device) ? { media: deviceToMediaQuery(img.device) } : {},
1560
+ ...resolved.posterUrl ? { posterUrl: resolved.posterUrl } : {}
1537
1561
  }
1538
1562
  ];
1539
1563
  }),
1540
1564
  ...hlsImages.filter((img) => !img.device).map((img) => {
1541
- const src = resolveImageUrl(img);
1542
- const posterUrl = resolvePosterUrl(img.posterUrl);
1543
- return { src, ...posterUrl ? { posterUrl } : {} };
1544
- }).filter((s) => !!s.src)
1565
+ const resolved = resolveImage(img);
1566
+ if (!resolved) return void 0;
1567
+ return {
1568
+ src: resolved.imageUrl,
1569
+ ...resolved.posterUrl ? { posterUrl: resolved.posterUrl } : {}
1570
+ };
1571
+ }).filter(Boolean)
1545
1572
  ];
1546
1573
  const primaryHls = hlsImages.find((img) => !img.device) ?? hlsImages[0];
1547
1574
  const hlsIntrinsicWidth = primaryHls ? parseMaybeNumber(primaryHls.intrinsicWidth)?.toString() : void 0;
@@ -1583,7 +1610,11 @@ var ImageGalleryNode = (props) => {
1583
1610
  if (!match) {
1584
1611
  return null;
1585
1612
  }
1586
- const srcUrl = resolveImageUrl(match);
1613
+ const resolved = resolveImage(match);
1614
+ if (!resolved) {
1615
+ return null;
1616
+ }
1617
+ const srcUrl = resolved.imageUrl;
1587
1618
  if (!srcUrl) {
1588
1619
  return null;
1589
1620
  }
@@ -1600,7 +1631,8 @@ var ImageGalleryNode = (props) => {
1600
1631
  }),
1601
1632
  (() => {
1602
1633
  const img = staticFallback;
1603
- const imageUrl = resolveImageUrl(img);
1634
+ const resolved = resolveImage(img);
1635
+ const imageUrl = resolved?.imageUrl;
1604
1636
  if (!imageUrl) {
1605
1637
  return null;
1606
1638
  }
@@ -1627,7 +1659,8 @@ var ImageGalleryNode = (props) => {
1627
1659
  ] }) : (
1628
1660
  /* Case 2: Only device-specific images exist */
1629
1661
  /* @__PURE__ */ jsx32(Fragment5, { children: staticSources.map((img, index) => {
1630
- const imageUrl = resolveImageUrl(img);
1662
+ const resolved = resolveImage(img);
1663
+ const imageUrl = resolved?.imageUrl;
1631
1664
  if (!imageUrl) {
1632
1665
  return null;
1633
1666
  }
@@ -2268,7 +2301,7 @@ var getNestedValue6 = (obj, path) => {
2268
2301
  return current && current[key] !== void 0 ? current[key] : void 0;
2269
2302
  }, obj);
2270
2303
  };
2271
- function resolveAssetUrl2(fieldValue, tag) {
2304
+ function resolveAssetUrl(fieldValue, tag) {
2272
2305
  if (!fieldValue) {
2273
2306
  return void 0;
2274
2307
  }
@@ -2279,7 +2312,7 @@ function resolveAssetUrl2(fieldValue, tag) {
2279
2312
  }
2280
2313
  try {
2281
2314
  const parsed = JSON.parse(trimmed);
2282
- return resolveAssetUrl2(parsed, tag);
2315
+ return resolveAssetUrl(parsed, tag);
2283
2316
  } catch {
2284
2317
  return void 0;
2285
2318
  }
@@ -2306,7 +2339,7 @@ function generateCompleteBackgroundString(layers, apiBaseUrl, dataItem) {
2306
2339
  let assetUrl = imageValue.assetUrl || "";
2307
2340
  if (layer.datafield && dataItem) {
2308
2341
  const fieldValue = getNestedValue6(dataItem, layer.datafield);
2309
- const resolvedAssetUrl = resolveAssetUrl2(fieldValue, layer.tag);
2342
+ const resolvedAssetUrl = resolveAssetUrl(fieldValue, layer.tag);
2310
2343
  if (resolvedAssetUrl) {
2311
2344
  assetUrl = resolvedAssetUrl;
2312
2345
  }
package/dist/server.js CHANGED
@@ -496,6 +496,7 @@ var init_HlsPlayer = __esm({
496
496
  "aria-label": isPlaying ? "Pause" : "Play",
497
497
  className: "hls-play-btn",
498
498
  onClick: (e) => {
499
+ e.preventDefault();
499
500
  e.stopPropagation();
500
501
  handlePlayPause();
501
502
  },
@@ -603,6 +604,7 @@ var init_HlsPlayer = __esm({
603
604
  type: "button",
604
605
  "aria-label": isMuted ? "Unmute" : "Mute",
605
606
  onClick: (e) => {
607
+ e.preventDefault();
606
608
  e.stopPropagation();
607
609
  handleMuteToggle();
608
610
  },
@@ -624,6 +626,7 @@ var init_HlsPlayer = __esm({
624
626
  type: "button",
625
627
  "aria-label": isFullscreen ? "Exit fullscreen" : "Enter fullscreen",
626
628
  onClick: (e) => {
629
+ e.preventDefault();
627
630
  e.stopPropagation();
628
631
  handleFullscreenToggle();
629
632
  },
@@ -3981,36 +3984,6 @@ var parseMaybeNumber = (value) => {
3981
3984
  const n = Number(value);
3982
3985
  return Number.isFinite(n) ? n : void 0;
3983
3986
  };
3984
- function resolveAssetUrl(fieldValue, tag) {
3985
- if (!fieldValue) {
3986
- return void 0;
3987
- }
3988
- if (typeof fieldValue === "string") {
3989
- const trimmed = fieldValue.trim();
3990
- if (trimmed.startsWith("itemassets/") || trimmed.startsWith("/itemassets/") || trimmed.startsWith("http")) {
3991
- return trimmed;
3992
- }
3993
- try {
3994
- const parsed = JSON.parse(trimmed);
3995
- return resolveAssetUrl(parsed, tag);
3996
- } catch {
3997
- return void 0;
3998
- }
3999
- }
4000
- if (Array.isArray(fieldValue)) {
4001
- const asset = tag ? fieldValue.find(
4002
- (x) => x?.tag?.toLowerCase() === tag?.toLowerCase()
4003
- ) : fieldValue[0];
4004
- return asset?.assetUrl;
4005
- }
4006
- if (typeof fieldValue === "object" && fieldValue !== null) {
4007
- const assetObject = fieldValue;
4008
- if (assetObject.assetUrl) {
4009
- return assetObject.assetUrl;
4010
- }
4011
- }
4012
- return void 0;
4013
- }
4014
3987
  var getNestedValue3 = (obj, path) => {
4015
3988
  if (!obj || !path) {
4016
3989
  return void 0;
@@ -4020,57 +3993,114 @@ var getNestedValue3 = (obj, path) => {
4020
3993
  }, obj);
4021
3994
  };
4022
3995
  var ImageGalleryNode = (props) => {
4023
- const resolveImageUrl = (image) => {
3996
+ function resolveAsset(fieldValue, tag) {
3997
+ if (!fieldValue) {
3998
+ return void 0;
3999
+ }
4000
+ if (typeof fieldValue === "string") {
4001
+ const trimmed = fieldValue.trim();
4002
+ if (trimmed.startsWith("itemassets/") || trimmed.startsWith("/itemassets/") || trimmed.startsWith("http")) {
4003
+ return {
4004
+ assetUrl: trimmed
4005
+ };
4006
+ }
4007
+ try {
4008
+ const parsed = JSON.parse(trimmed);
4009
+ return resolveAsset(parsed, tag);
4010
+ } catch {
4011
+ return void 0;
4012
+ }
4013
+ }
4014
+ if (Array.isArray(fieldValue)) {
4015
+ const asset = tag ? fieldValue.find(
4016
+ (x) => x?.tag?.toLowerCase() === tag?.toLowerCase()
4017
+ ) : fieldValue[0];
4018
+ if (!asset) return void 0;
4019
+ return {
4020
+ assetUrl: asset.assetUrl,
4021
+ posterUrl: asset.posterUrl,
4022
+ intrinsicWidth: asset.intrinsicWidth,
4023
+ intrinsicHeight: asset.intrinsicHeight,
4024
+ device: asset.device,
4025
+ tag: asset.tag
4026
+ };
4027
+ }
4028
+ if (typeof fieldValue === "object" && fieldValue !== null) {
4029
+ const asset = fieldValue;
4030
+ if (!asset.assetUrl) {
4031
+ return void 0;
4032
+ }
4033
+ return {
4034
+ assetUrl: asset.assetUrl,
4035
+ posterUrl: asset.posterUrl,
4036
+ intrinsicWidth: asset.intrinsicWidth,
4037
+ intrinsicHeight: asset.intrinsicHeight,
4038
+ device: asset.device,
4039
+ tag: asset.tag
4040
+ };
4041
+ }
4042
+ return void 0;
4043
+ }
4044
+ const resolveImage = (image) => {
4024
4045
  let imageUrl = image.imageUrl;
4046
+ let posterUrl = image.posterUrl;
4047
+ let intrinsicWidth = image.intrinsicWidth;
4048
+ let intrinsicHeight = image.intrinsicHeight;
4025
4049
  if (image.datafield && props.dataitem) {
4026
4050
  const fieldValue = getNestedValue3(props.dataitem, image.datafield);
4027
- const resolvedAsset = resolveAssetUrl(fieldValue, image.tag);
4051
+ const resolvedAsset = resolveAsset(fieldValue, image.tag);
4028
4052
  if (resolvedAsset) {
4029
- imageUrl = resolvedAsset;
4053
+ imageUrl = resolvedAsset.assetUrl;
4054
+ posterUrl = resolvedAsset.posterUrl;
4055
+ intrinsicWidth = resolvedAsset.intrinsicWidth;
4056
+ intrinsicHeight = resolvedAsset.intrinsicHeight;
4030
4057
  }
4031
4058
  }
4032
4059
  if (!imageUrl) {
4033
- return "";
4034
- }
4035
- if (imageUrl.startsWith("http")) {
4036
- return imageUrl;
4060
+ return void 0;
4037
4061
  }
4038
- const base = props.assetBaseUrl.replace(/\/$/, "");
4039
- const path = imageUrl.replace(/^\//, "");
4040
- return `${base}/${path}`;
4062
+ return {
4063
+ imageUrl: imageUrl.startsWith("http") ? imageUrl : AssetUtility_default.resolveUrl(props.assetBaseUrl, imageUrl),
4064
+ posterUrl: posterUrl ? AssetUtility_default.resolveUrl(props.assetBaseUrl, posterUrl) : void 0,
4065
+ intrinsicWidth,
4066
+ intrinsicHeight
4067
+ };
4041
4068
  };
4042
4069
  const resolvePosterUrl = (posterUrl) => {
4043
4070
  if (!posterUrl) return void 0;
4044
4071
  return AssetUtility_default.resolveUrl(props.assetBaseUrl, posterUrl);
4045
4072
  };
4046
4073
  const rawImages = Array.isArray(props.node.images) ? props.node.images : [];
4047
- const hlsImages = rawImages.filter(
4048
- (img) => resolveImageUrl(img).endsWith(".m3u8")
4049
- );
4050
- const staticImages = rawImages.filter(
4051
- (img) => !resolveImageUrl(img).endsWith(".m3u8")
4052
- );
4074
+ const hlsImages = rawImages.filter((img) => {
4075
+ const resolved = resolveImage(img);
4076
+ return resolved?.imageUrl?.endsWith(".m3u8");
4077
+ });
4078
+ const staticImages = rawImages.filter((img) => {
4079
+ const resolved = resolveImage(img);
4080
+ return resolved && !resolved.imageUrl?.endsWith(".m3u8");
4081
+ });
4053
4082
  const hlsSources = [
4054
4083
  ...DEVICE_ORDER.flatMap((deviceKey) => {
4055
4084
  const img = hlsImages.find((i) => i.device === deviceKey);
4056
4085
  if (!img) return [];
4057
- const src = resolveImageUrl(img);
4058
- if (!src) return [];
4059
- const media = deviceToMediaQuery(img.device);
4060
- const posterUrl = resolvePosterUrl(img.posterUrl);
4086
+ const resolved = resolveImage(img);
4087
+ if (!resolved) return [];
4061
4088
  return [
4062
4089
  {
4063
- src,
4064
- ...media ? { media } : {},
4065
- ...posterUrl ? { posterUrl } : {}
4090
+ src: resolved.imageUrl,
4091
+ ...deviceToMediaQuery(img.device) ? { media: deviceToMediaQuery(img.device) } : {},
4092
+ ...resolved.posterUrl ? { posterUrl: resolved.posterUrl } : {}
4066
4093
  }
4067
4094
  ];
4068
4095
  }),
4069
4096
  ...hlsImages.filter((img) => !img.device).map((img) => {
4070
- const src = resolveImageUrl(img);
4071
- const posterUrl = resolvePosterUrl(img.posterUrl);
4072
- return { src, ...posterUrl ? { posterUrl } : {} };
4073
- }).filter((s) => !!s.src)
4097
+ const resolved = resolveImage(img);
4098
+ if (!resolved) return void 0;
4099
+ return {
4100
+ src: resolved.imageUrl,
4101
+ ...resolved.posterUrl ? { posterUrl: resolved.posterUrl } : {}
4102
+ };
4103
+ }).filter(Boolean)
4074
4104
  ];
4075
4105
  const primaryHls = hlsImages.find((img) => !img.device) ?? hlsImages[0];
4076
4106
  const hlsIntrinsicWidth = primaryHls ? parseMaybeNumber(primaryHls.intrinsicWidth)?.toString() : void 0;
@@ -4112,7 +4142,11 @@ var ImageGalleryNode = (props) => {
4112
4142
  if (!match) {
4113
4143
  return null;
4114
4144
  }
4115
- const srcUrl = resolveImageUrl(match);
4145
+ const resolved = resolveImage(match);
4146
+ if (!resolved) {
4147
+ return null;
4148
+ }
4149
+ const srcUrl = resolved.imageUrl;
4116
4150
  if (!srcUrl) {
4117
4151
  return null;
4118
4152
  }
@@ -4129,7 +4163,8 @@ var ImageGalleryNode = (props) => {
4129
4163
  }),
4130
4164
  (() => {
4131
4165
  const img = staticFallback;
4132
- const imageUrl = resolveImageUrl(img);
4166
+ const resolved = resolveImage(img);
4167
+ const imageUrl = resolved?.imageUrl;
4133
4168
  if (!imageUrl) {
4134
4169
  return null;
4135
4170
  }
@@ -4156,7 +4191,8 @@ var ImageGalleryNode = (props) => {
4156
4191
  ] }) : (
4157
4192
  /* Case 2: Only device-specific images exist */
4158
4193
  /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_jsx_runtime44.Fragment, { children: staticSources.map((img, index) => {
4159
- const imageUrl = resolveImageUrl(img);
4194
+ const resolved = resolveImage(img);
4195
+ const imageUrl = resolved?.imageUrl;
4160
4196
  if (!imageUrl) {
4161
4197
  return null;
4162
4198
  }
@@ -4797,7 +4833,7 @@ var getNestedValue6 = (obj, path) => {
4797
4833
  return current && current[key] !== void 0 ? current[key] : void 0;
4798
4834
  }, obj);
4799
4835
  };
4800
- function resolveAssetUrl2(fieldValue, tag) {
4836
+ function resolveAssetUrl(fieldValue, tag) {
4801
4837
  if (!fieldValue) {
4802
4838
  return void 0;
4803
4839
  }
@@ -4808,7 +4844,7 @@ function resolveAssetUrl2(fieldValue, tag) {
4808
4844
  }
4809
4845
  try {
4810
4846
  const parsed = JSON.parse(trimmed);
4811
- return resolveAssetUrl2(parsed, tag);
4847
+ return resolveAssetUrl(parsed, tag);
4812
4848
  } catch {
4813
4849
  return void 0;
4814
4850
  }
@@ -4835,7 +4871,7 @@ function generateCompleteBackgroundString(layers, apiBaseUrl, dataItem) {
4835
4871
  let assetUrl = imageValue.assetUrl || "";
4836
4872
  if (layer.datafield && dataItem) {
4837
4873
  const fieldValue = getNestedValue6(dataItem, layer.datafield);
4838
- const resolvedAssetUrl = resolveAssetUrl2(fieldValue, layer.tag);
4874
+ const resolvedAssetUrl = resolveAssetUrl(fieldValue, layer.tag);
4839
4875
  if (resolvedAssetUrl) {
4840
4876
  assetUrl = resolvedAssetUrl;
4841
4877
  }
package/dist/server.mjs CHANGED
@@ -122,7 +122,7 @@ import dynamic2 from "next/dynamic";
122
122
  // src/components/DeviceAssetSelector.tsx
123
123
  import dynamic from "next/dynamic";
124
124
  import { jsx as jsx3 } from "react/jsx-runtime";
125
- var HlsPlayer = dynamic(() => import("./HlsPlayer-TZM3MFPW.mjs"), { ssr: false });
125
+ var HlsPlayer = dynamic(() => import("./HlsPlayer-BVS6BVF7.mjs"), { ssr: false });
126
126
  var FORMAT_CLASSES = {
127
127
  center: "justify-center",
128
128
  left: "justify-start",
@@ -197,7 +197,7 @@ var DeviceAssetSelector_default = DeviceAssetSelector;
197
197
 
198
198
  // src/components/pageRenderingEngine/nodes/ImageNode.tsx
199
199
  import { jsx as jsx4 } from "react/jsx-runtime";
200
- var HlsPlayer2 = dynamic2(() => import("./HlsPlayer-TZM3MFPW.mjs"), { ssr: false });
200
+ var HlsPlayer2 = dynamic2(() => import("./HlsPlayer-BVS6BVF7.mjs"), { ssr: false });
201
201
  var getNestedValue = (obj, path) => {
202
202
  if (!obj || !path) return void 0;
203
203
  return path.split(".").reduce((current, key) => {
@@ -1412,7 +1412,7 @@ var NoDataFound_default = NoDataFound;
1412
1412
  // src/components/pageRenderingEngine/nodes/ImageGalleryNode.tsx
1413
1413
  import dynamic8 from "next/dynamic";
1414
1414
  import { Fragment as Fragment5, jsx as jsx32, jsxs as jsxs11 } from "react/jsx-runtime";
1415
- var HlsPlayer3 = dynamic8(() => import("./HlsPlayer-TZM3MFPW.mjs"), { ssr: false });
1415
+ var HlsPlayer3 = dynamic8(() => import("./HlsPlayer-BVS6BVF7.mjs"), { ssr: false });
1416
1416
  var deviceToMediaQuery = (device) => {
1417
1417
  switch (device) {
1418
1418
  case "lg":
@@ -1433,36 +1433,6 @@ var parseMaybeNumber = (value) => {
1433
1433
  const n = Number(value);
1434
1434
  return Number.isFinite(n) ? n : void 0;
1435
1435
  };
1436
- function resolveAssetUrl(fieldValue, tag) {
1437
- if (!fieldValue) {
1438
- return void 0;
1439
- }
1440
- if (typeof fieldValue === "string") {
1441
- const trimmed = fieldValue.trim();
1442
- if (trimmed.startsWith("itemassets/") || trimmed.startsWith("/itemassets/") || trimmed.startsWith("http")) {
1443
- return trimmed;
1444
- }
1445
- try {
1446
- const parsed = JSON.parse(trimmed);
1447
- return resolveAssetUrl(parsed, tag);
1448
- } catch {
1449
- return void 0;
1450
- }
1451
- }
1452
- if (Array.isArray(fieldValue)) {
1453
- const asset = tag ? fieldValue.find(
1454
- (x) => x?.tag?.toLowerCase() === tag?.toLowerCase()
1455
- ) : fieldValue[0];
1456
- return asset?.assetUrl;
1457
- }
1458
- if (typeof fieldValue === "object" && fieldValue !== null) {
1459
- const assetObject = fieldValue;
1460
- if (assetObject.assetUrl) {
1461
- return assetObject.assetUrl;
1462
- }
1463
- }
1464
- return void 0;
1465
- }
1466
1436
  var getNestedValue3 = (obj, path) => {
1467
1437
  if (!obj || !path) {
1468
1438
  return void 0;
@@ -1472,57 +1442,114 @@ var getNestedValue3 = (obj, path) => {
1472
1442
  }, obj);
1473
1443
  };
1474
1444
  var ImageGalleryNode = (props) => {
1475
- const resolveImageUrl = (image) => {
1445
+ function resolveAsset(fieldValue, tag) {
1446
+ if (!fieldValue) {
1447
+ return void 0;
1448
+ }
1449
+ if (typeof fieldValue === "string") {
1450
+ const trimmed = fieldValue.trim();
1451
+ if (trimmed.startsWith("itemassets/") || trimmed.startsWith("/itemassets/") || trimmed.startsWith("http")) {
1452
+ return {
1453
+ assetUrl: trimmed
1454
+ };
1455
+ }
1456
+ try {
1457
+ const parsed = JSON.parse(trimmed);
1458
+ return resolveAsset(parsed, tag);
1459
+ } catch {
1460
+ return void 0;
1461
+ }
1462
+ }
1463
+ if (Array.isArray(fieldValue)) {
1464
+ const asset = tag ? fieldValue.find(
1465
+ (x) => x?.tag?.toLowerCase() === tag?.toLowerCase()
1466
+ ) : fieldValue[0];
1467
+ if (!asset) return void 0;
1468
+ return {
1469
+ assetUrl: asset.assetUrl,
1470
+ posterUrl: asset.posterUrl,
1471
+ intrinsicWidth: asset.intrinsicWidth,
1472
+ intrinsicHeight: asset.intrinsicHeight,
1473
+ device: asset.device,
1474
+ tag: asset.tag
1475
+ };
1476
+ }
1477
+ if (typeof fieldValue === "object" && fieldValue !== null) {
1478
+ const asset = fieldValue;
1479
+ if (!asset.assetUrl) {
1480
+ return void 0;
1481
+ }
1482
+ return {
1483
+ assetUrl: asset.assetUrl,
1484
+ posterUrl: asset.posterUrl,
1485
+ intrinsicWidth: asset.intrinsicWidth,
1486
+ intrinsicHeight: asset.intrinsicHeight,
1487
+ device: asset.device,
1488
+ tag: asset.tag
1489
+ };
1490
+ }
1491
+ return void 0;
1492
+ }
1493
+ const resolveImage = (image) => {
1476
1494
  let imageUrl = image.imageUrl;
1495
+ let posterUrl = image.posterUrl;
1496
+ let intrinsicWidth = image.intrinsicWidth;
1497
+ let intrinsicHeight = image.intrinsicHeight;
1477
1498
  if (image.datafield && props.dataitem) {
1478
1499
  const fieldValue = getNestedValue3(props.dataitem, image.datafield);
1479
- const resolvedAsset = resolveAssetUrl(fieldValue, image.tag);
1500
+ const resolvedAsset = resolveAsset(fieldValue, image.tag);
1480
1501
  if (resolvedAsset) {
1481
- imageUrl = resolvedAsset;
1502
+ imageUrl = resolvedAsset.assetUrl;
1503
+ posterUrl = resolvedAsset.posterUrl;
1504
+ intrinsicWidth = resolvedAsset.intrinsicWidth;
1505
+ intrinsicHeight = resolvedAsset.intrinsicHeight;
1482
1506
  }
1483
1507
  }
1484
1508
  if (!imageUrl) {
1485
- return "";
1486
- }
1487
- if (imageUrl.startsWith("http")) {
1488
- return imageUrl;
1509
+ return void 0;
1489
1510
  }
1490
- const base = props.assetBaseUrl.replace(/\/$/, "");
1491
- const path = imageUrl.replace(/^\//, "");
1492
- return `${base}/${path}`;
1511
+ return {
1512
+ imageUrl: imageUrl.startsWith("http") ? imageUrl : AssetUtility_default.resolveUrl(props.assetBaseUrl, imageUrl),
1513
+ posterUrl: posterUrl ? AssetUtility_default.resolveUrl(props.assetBaseUrl, posterUrl) : void 0,
1514
+ intrinsicWidth,
1515
+ intrinsicHeight
1516
+ };
1493
1517
  };
1494
1518
  const resolvePosterUrl = (posterUrl) => {
1495
1519
  if (!posterUrl) return void 0;
1496
1520
  return AssetUtility_default.resolveUrl(props.assetBaseUrl, posterUrl);
1497
1521
  };
1498
1522
  const rawImages = Array.isArray(props.node.images) ? props.node.images : [];
1499
- const hlsImages = rawImages.filter(
1500
- (img) => resolveImageUrl(img).endsWith(".m3u8")
1501
- );
1502
- const staticImages = rawImages.filter(
1503
- (img) => !resolveImageUrl(img).endsWith(".m3u8")
1504
- );
1523
+ const hlsImages = rawImages.filter((img) => {
1524
+ const resolved = resolveImage(img);
1525
+ return resolved?.imageUrl?.endsWith(".m3u8");
1526
+ });
1527
+ const staticImages = rawImages.filter((img) => {
1528
+ const resolved = resolveImage(img);
1529
+ return resolved && !resolved.imageUrl?.endsWith(".m3u8");
1530
+ });
1505
1531
  const hlsSources = [
1506
1532
  ...DEVICE_ORDER.flatMap((deviceKey) => {
1507
1533
  const img = hlsImages.find((i) => i.device === deviceKey);
1508
1534
  if (!img) return [];
1509
- const src = resolveImageUrl(img);
1510
- if (!src) return [];
1511
- const media = deviceToMediaQuery(img.device);
1512
- const posterUrl = resolvePosterUrl(img.posterUrl);
1535
+ const resolved = resolveImage(img);
1536
+ if (!resolved) return [];
1513
1537
  return [
1514
1538
  {
1515
- src,
1516
- ...media ? { media } : {},
1517
- ...posterUrl ? { posterUrl } : {}
1539
+ src: resolved.imageUrl,
1540
+ ...deviceToMediaQuery(img.device) ? { media: deviceToMediaQuery(img.device) } : {},
1541
+ ...resolved.posterUrl ? { posterUrl: resolved.posterUrl } : {}
1518
1542
  }
1519
1543
  ];
1520
1544
  }),
1521
1545
  ...hlsImages.filter((img) => !img.device).map((img) => {
1522
- const src = resolveImageUrl(img);
1523
- const posterUrl = resolvePosterUrl(img.posterUrl);
1524
- return { src, ...posterUrl ? { posterUrl } : {} };
1525
- }).filter((s) => !!s.src)
1546
+ const resolved = resolveImage(img);
1547
+ if (!resolved) return void 0;
1548
+ return {
1549
+ src: resolved.imageUrl,
1550
+ ...resolved.posterUrl ? { posterUrl: resolved.posterUrl } : {}
1551
+ };
1552
+ }).filter(Boolean)
1526
1553
  ];
1527
1554
  const primaryHls = hlsImages.find((img) => !img.device) ?? hlsImages[0];
1528
1555
  const hlsIntrinsicWidth = primaryHls ? parseMaybeNumber(primaryHls.intrinsicWidth)?.toString() : void 0;
@@ -1564,7 +1591,11 @@ var ImageGalleryNode = (props) => {
1564
1591
  if (!match) {
1565
1592
  return null;
1566
1593
  }
1567
- const srcUrl = resolveImageUrl(match);
1594
+ const resolved = resolveImage(match);
1595
+ if (!resolved) {
1596
+ return null;
1597
+ }
1598
+ const srcUrl = resolved.imageUrl;
1568
1599
  if (!srcUrl) {
1569
1600
  return null;
1570
1601
  }
@@ -1581,7 +1612,8 @@ var ImageGalleryNode = (props) => {
1581
1612
  }),
1582
1613
  (() => {
1583
1614
  const img = staticFallback;
1584
- const imageUrl = resolveImageUrl(img);
1615
+ const resolved = resolveImage(img);
1616
+ const imageUrl = resolved?.imageUrl;
1585
1617
  if (!imageUrl) {
1586
1618
  return null;
1587
1619
  }
@@ -1608,7 +1640,8 @@ var ImageGalleryNode = (props) => {
1608
1640
  ] }) : (
1609
1641
  /* Case 2: Only device-specific images exist */
1610
1642
  /* @__PURE__ */ jsx32(Fragment5, { children: staticSources.map((img, index) => {
1611
- const imageUrl = resolveImageUrl(img);
1643
+ const resolved = resolveImage(img);
1644
+ const imageUrl = resolved?.imageUrl;
1612
1645
  if (!imageUrl) {
1613
1646
  return null;
1614
1647
  }
@@ -2249,7 +2282,7 @@ var getNestedValue6 = (obj, path) => {
2249
2282
  return current && current[key] !== void 0 ? current[key] : void 0;
2250
2283
  }, obj);
2251
2284
  };
2252
- function resolveAssetUrl2(fieldValue, tag) {
2285
+ function resolveAssetUrl(fieldValue, tag) {
2253
2286
  if (!fieldValue) {
2254
2287
  return void 0;
2255
2288
  }
@@ -2260,7 +2293,7 @@ function resolveAssetUrl2(fieldValue, tag) {
2260
2293
  }
2261
2294
  try {
2262
2295
  const parsed = JSON.parse(trimmed);
2263
- return resolveAssetUrl2(parsed, tag);
2296
+ return resolveAssetUrl(parsed, tag);
2264
2297
  } catch {
2265
2298
  return void 0;
2266
2299
  }
@@ -2287,7 +2320,7 @@ function generateCompleteBackgroundString(layers, apiBaseUrl, dataItem) {
2287
2320
  let assetUrl = imageValue.assetUrl || "";
2288
2321
  if (layer.datafield && dataItem) {
2289
2322
  const fieldValue = getNestedValue6(dataItem, layer.datafield);
2290
- const resolvedAssetUrl = resolveAssetUrl2(fieldValue, layer.tag);
2323
+ const resolvedAssetUrl = resolveAssetUrl(fieldValue, layer.tag);
2291
2324
  if (resolvedAssetUrl) {
2292
2325
  assetUrl = resolvedAssetUrl;
2293
2326
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clyrex-digital/clyrex-controls-dev",
3
- "version": "0.8.1-dev.20260803093422",
3
+ "version": "0.8.1-dev.20260803112407",
4
4
  "description": "Reusable React components",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",