@clyrex-digital/clyrex-controls-dev 0.8.1-dev.20260803102521 → 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.
package/dist/index.js CHANGED
@@ -6133,36 +6133,6 @@ var parseMaybeNumber = (value) => {
6133
6133
  const n = Number(value);
6134
6134
  return Number.isFinite(n) ? n : void 0;
6135
6135
  };
6136
- function resolveAssetUrl(fieldValue, tag) {
6137
- if (!fieldValue) {
6138
- return void 0;
6139
- }
6140
- if (typeof fieldValue === "string") {
6141
- const trimmed = fieldValue.trim();
6142
- if (trimmed.startsWith("itemassets/") || trimmed.startsWith("/itemassets/") || trimmed.startsWith("http")) {
6143
- return trimmed;
6144
- }
6145
- try {
6146
- const parsed = JSON.parse(trimmed);
6147
- return resolveAssetUrl(parsed, tag);
6148
- } catch {
6149
- return void 0;
6150
- }
6151
- }
6152
- if (Array.isArray(fieldValue)) {
6153
- const asset = tag ? fieldValue.find(
6154
- (x) => x?.tag?.toLowerCase() === tag?.toLowerCase()
6155
- ) : fieldValue[0];
6156
- return asset?.assetUrl;
6157
- }
6158
- if (typeof fieldValue === "object" && fieldValue !== null) {
6159
- const assetObject = fieldValue;
6160
- if (assetObject.assetUrl) {
6161
- return assetObject.assetUrl;
6162
- }
6163
- }
6164
- return void 0;
6165
- }
6166
6136
  var getNestedValue3 = (obj, path) => {
6167
6137
  if (!obj || !path) {
6168
6138
  return void 0;
@@ -6172,57 +6142,114 @@ var getNestedValue3 = (obj, path) => {
6172
6142
  }, obj);
6173
6143
  };
6174
6144
  var ImageGalleryNode = (props) => {
6175
- 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) => {
6176
6194
  let imageUrl = image.imageUrl;
6195
+ let posterUrl = image.posterUrl;
6196
+ let intrinsicWidth = image.intrinsicWidth;
6197
+ let intrinsicHeight = image.intrinsicHeight;
6177
6198
  if (image.datafield && props.dataitem) {
6178
6199
  const fieldValue = getNestedValue3(props.dataitem, image.datafield);
6179
- const resolvedAsset = resolveAssetUrl(fieldValue, image.tag);
6200
+ const resolvedAsset = resolveAsset(fieldValue, image.tag);
6180
6201
  if (resolvedAsset) {
6181
- imageUrl = resolvedAsset;
6202
+ imageUrl = resolvedAsset.assetUrl;
6203
+ posterUrl = resolvedAsset.posterUrl;
6204
+ intrinsicWidth = resolvedAsset.intrinsicWidth;
6205
+ intrinsicHeight = resolvedAsset.intrinsicHeight;
6182
6206
  }
6183
6207
  }
6184
6208
  if (!imageUrl) {
6185
- return "";
6186
- }
6187
- if (imageUrl.startsWith("http")) {
6188
- return imageUrl;
6209
+ return void 0;
6189
6210
  }
6190
- const base = props.assetBaseUrl.replace(/\/$/, "");
6191
- const path = imageUrl.replace(/^\//, "");
6192
- 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
+ };
6193
6217
  };
6194
6218
  const resolvePosterUrl = (posterUrl) => {
6195
6219
  if (!posterUrl) return void 0;
6196
6220
  return AssetUtility_default.resolveUrl(props.assetBaseUrl, posterUrl);
6197
6221
  };
6198
6222
  const rawImages = Array.isArray(props.node.images) ? props.node.images : [];
6199
- const hlsImages = rawImages.filter(
6200
- (img) => resolveImageUrl(img).endsWith(".m3u8")
6201
- );
6202
- const staticImages = rawImages.filter(
6203
- (img) => !resolveImageUrl(img).endsWith(".m3u8")
6204
- );
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
+ });
6205
6231
  const hlsSources = [
6206
6232
  ...DEVICE_ORDER.flatMap((deviceKey) => {
6207
6233
  const img = hlsImages.find((i) => i.device === deviceKey);
6208
6234
  if (!img) return [];
6209
- const src = resolveImageUrl(img);
6210
- if (!src) return [];
6211
- const media = deviceToMediaQuery(img.device);
6212
- const posterUrl = resolvePosterUrl(img.posterUrl);
6235
+ const resolved = resolveImage(img);
6236
+ if (!resolved) return [];
6213
6237
  return [
6214
6238
  {
6215
- src,
6216
- ...media ? { media } : {},
6217
- ...posterUrl ? { posterUrl } : {}
6239
+ src: resolved.imageUrl,
6240
+ ...deviceToMediaQuery(img.device) ? { media: deviceToMediaQuery(img.device) } : {},
6241
+ ...resolved.posterUrl ? { posterUrl: resolved.posterUrl } : {}
6218
6242
  }
6219
6243
  ];
6220
6244
  }),
6221
6245
  ...hlsImages.filter((img) => !img.device).map((img) => {
6222
- const src = resolveImageUrl(img);
6223
- const posterUrl = resolvePosterUrl(img.posterUrl);
6224
- return { src, ...posterUrl ? { posterUrl } : {} };
6225
- }).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)
6226
6253
  ];
6227
6254
  const primaryHls = hlsImages.find((img) => !img.device) ?? hlsImages[0];
6228
6255
  const hlsIntrinsicWidth = primaryHls ? parseMaybeNumber(primaryHls.intrinsicWidth)?.toString() : void 0;
@@ -6264,7 +6291,11 @@ var ImageGalleryNode = (props) => {
6264
6291
  if (!match) {
6265
6292
  return null;
6266
6293
  }
6267
- const srcUrl = resolveImageUrl(match);
6294
+ const resolved = resolveImage(match);
6295
+ if (!resolved) {
6296
+ return null;
6297
+ }
6298
+ const srcUrl = resolved.imageUrl;
6268
6299
  if (!srcUrl) {
6269
6300
  return null;
6270
6301
  }
@@ -6281,7 +6312,8 @@ var ImageGalleryNode = (props) => {
6281
6312
  }),
6282
6313
  (() => {
6283
6314
  const img = staticFallback;
6284
- const imageUrl = resolveImageUrl(img);
6315
+ const resolved = resolveImage(img);
6316
+ const imageUrl = resolved?.imageUrl;
6285
6317
  if (!imageUrl) {
6286
6318
  return null;
6287
6319
  }
@@ -6308,7 +6340,8 @@ var ImageGalleryNode = (props) => {
6308
6340
  ] }) : (
6309
6341
  /* Case 2: Only device-specific images exist */
6310
6342
  /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(import_jsx_runtime72.Fragment, { children: staticSources.map((img, index) => {
6311
- const imageUrl = resolveImageUrl(img);
6343
+ const resolved = resolveImage(img);
6344
+ const imageUrl = resolved?.imageUrl;
6312
6345
  if (!imageUrl) {
6313
6346
  return null;
6314
6347
  }
@@ -6950,7 +6983,7 @@ var getNestedValue6 = (obj, path) => {
6950
6983
  return current && current[key] !== void 0 ? current[key] : void 0;
6951
6984
  }, obj);
6952
6985
  };
6953
- function resolveAssetUrl2(fieldValue, tag) {
6986
+ function resolveAssetUrl(fieldValue, tag) {
6954
6987
  if (!fieldValue) {
6955
6988
  return void 0;
6956
6989
  }
@@ -6961,7 +6994,7 @@ function resolveAssetUrl2(fieldValue, tag) {
6961
6994
  }
6962
6995
  try {
6963
6996
  const parsed = JSON.parse(trimmed);
6964
- return resolveAssetUrl2(parsed, tag);
6997
+ return resolveAssetUrl(parsed, tag);
6965
6998
  } catch {
6966
6999
  return void 0;
6967
7000
  }
@@ -6988,7 +7021,7 @@ function generateCompleteBackgroundString(layers, apiBaseUrl, dataItem) {
6988
7021
  let assetUrl = imageValue.assetUrl || "";
6989
7022
  if (layer.datafield && dataItem) {
6990
7023
  const fieldValue = getNestedValue6(dataItem, layer.datafield);
6991
- const resolvedAssetUrl = resolveAssetUrl2(fieldValue, layer.tag);
7024
+ const resolvedAssetUrl = resolveAssetUrl(fieldValue, layer.tag);
6992
7025
  if (resolvedAssetUrl) {
6993
7026
  assetUrl = resolvedAssetUrl;
6994
7027
  }
package/dist/index.mjs CHANGED
@@ -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
@@ -3984,36 +3984,6 @@ var parseMaybeNumber = (value) => {
3984
3984
  const n = Number(value);
3985
3985
  return Number.isFinite(n) ? n : void 0;
3986
3986
  };
3987
- function resolveAssetUrl(fieldValue, tag) {
3988
- if (!fieldValue) {
3989
- return void 0;
3990
- }
3991
- if (typeof fieldValue === "string") {
3992
- const trimmed = fieldValue.trim();
3993
- if (trimmed.startsWith("itemassets/") || trimmed.startsWith("/itemassets/") || trimmed.startsWith("http")) {
3994
- return trimmed;
3995
- }
3996
- try {
3997
- const parsed = JSON.parse(trimmed);
3998
- return resolveAssetUrl(parsed, tag);
3999
- } catch {
4000
- return void 0;
4001
- }
4002
- }
4003
- if (Array.isArray(fieldValue)) {
4004
- const asset = tag ? fieldValue.find(
4005
- (x) => x?.tag?.toLowerCase() === tag?.toLowerCase()
4006
- ) : fieldValue[0];
4007
- return asset?.assetUrl;
4008
- }
4009
- if (typeof fieldValue === "object" && fieldValue !== null) {
4010
- const assetObject = fieldValue;
4011
- if (assetObject.assetUrl) {
4012
- return assetObject.assetUrl;
4013
- }
4014
- }
4015
- return void 0;
4016
- }
4017
3987
  var getNestedValue3 = (obj, path) => {
4018
3988
  if (!obj || !path) {
4019
3989
  return void 0;
@@ -4023,57 +3993,114 @@ var getNestedValue3 = (obj, path) => {
4023
3993
  }, obj);
4024
3994
  };
4025
3995
  var ImageGalleryNode = (props) => {
4026
- 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) => {
4027
4045
  let imageUrl = image.imageUrl;
4046
+ let posterUrl = image.posterUrl;
4047
+ let intrinsicWidth = image.intrinsicWidth;
4048
+ let intrinsicHeight = image.intrinsicHeight;
4028
4049
  if (image.datafield && props.dataitem) {
4029
4050
  const fieldValue = getNestedValue3(props.dataitem, image.datafield);
4030
- const resolvedAsset = resolveAssetUrl(fieldValue, image.tag);
4051
+ const resolvedAsset = resolveAsset(fieldValue, image.tag);
4031
4052
  if (resolvedAsset) {
4032
- imageUrl = resolvedAsset;
4053
+ imageUrl = resolvedAsset.assetUrl;
4054
+ posterUrl = resolvedAsset.posterUrl;
4055
+ intrinsicWidth = resolvedAsset.intrinsicWidth;
4056
+ intrinsicHeight = resolvedAsset.intrinsicHeight;
4033
4057
  }
4034
4058
  }
4035
4059
  if (!imageUrl) {
4036
- return "";
4037
- }
4038
- if (imageUrl.startsWith("http")) {
4039
- return imageUrl;
4060
+ return void 0;
4040
4061
  }
4041
- const base = props.assetBaseUrl.replace(/\/$/, "");
4042
- const path = imageUrl.replace(/^\//, "");
4043
- 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
+ };
4044
4068
  };
4045
4069
  const resolvePosterUrl = (posterUrl) => {
4046
4070
  if (!posterUrl) return void 0;
4047
4071
  return AssetUtility_default.resolveUrl(props.assetBaseUrl, posterUrl);
4048
4072
  };
4049
4073
  const rawImages = Array.isArray(props.node.images) ? props.node.images : [];
4050
- const hlsImages = rawImages.filter(
4051
- (img) => resolveImageUrl(img).endsWith(".m3u8")
4052
- );
4053
- const staticImages = rawImages.filter(
4054
- (img) => !resolveImageUrl(img).endsWith(".m3u8")
4055
- );
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
+ });
4056
4082
  const hlsSources = [
4057
4083
  ...DEVICE_ORDER.flatMap((deviceKey) => {
4058
4084
  const img = hlsImages.find((i) => i.device === deviceKey);
4059
4085
  if (!img) return [];
4060
- const src = resolveImageUrl(img);
4061
- if (!src) return [];
4062
- const media = deviceToMediaQuery(img.device);
4063
- const posterUrl = resolvePosterUrl(img.posterUrl);
4086
+ const resolved = resolveImage(img);
4087
+ if (!resolved) return [];
4064
4088
  return [
4065
4089
  {
4066
- src,
4067
- ...media ? { media } : {},
4068
- ...posterUrl ? { posterUrl } : {}
4090
+ src: resolved.imageUrl,
4091
+ ...deviceToMediaQuery(img.device) ? { media: deviceToMediaQuery(img.device) } : {},
4092
+ ...resolved.posterUrl ? { posterUrl: resolved.posterUrl } : {}
4069
4093
  }
4070
4094
  ];
4071
4095
  }),
4072
4096
  ...hlsImages.filter((img) => !img.device).map((img) => {
4073
- const src = resolveImageUrl(img);
4074
- const posterUrl = resolvePosterUrl(img.posterUrl);
4075
- return { src, ...posterUrl ? { posterUrl } : {} };
4076
- }).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)
4077
4104
  ];
4078
4105
  const primaryHls = hlsImages.find((img) => !img.device) ?? hlsImages[0];
4079
4106
  const hlsIntrinsicWidth = primaryHls ? parseMaybeNumber(primaryHls.intrinsicWidth)?.toString() : void 0;
@@ -4115,7 +4142,11 @@ var ImageGalleryNode = (props) => {
4115
4142
  if (!match) {
4116
4143
  return null;
4117
4144
  }
4118
- const srcUrl = resolveImageUrl(match);
4145
+ const resolved = resolveImage(match);
4146
+ if (!resolved) {
4147
+ return null;
4148
+ }
4149
+ const srcUrl = resolved.imageUrl;
4119
4150
  if (!srcUrl) {
4120
4151
  return null;
4121
4152
  }
@@ -4132,7 +4163,8 @@ var ImageGalleryNode = (props) => {
4132
4163
  }),
4133
4164
  (() => {
4134
4165
  const img = staticFallback;
4135
- const imageUrl = resolveImageUrl(img);
4166
+ const resolved = resolveImage(img);
4167
+ const imageUrl = resolved?.imageUrl;
4136
4168
  if (!imageUrl) {
4137
4169
  return null;
4138
4170
  }
@@ -4159,7 +4191,8 @@ var ImageGalleryNode = (props) => {
4159
4191
  ] }) : (
4160
4192
  /* Case 2: Only device-specific images exist */
4161
4193
  /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_jsx_runtime44.Fragment, { children: staticSources.map((img, index) => {
4162
- const imageUrl = resolveImageUrl(img);
4194
+ const resolved = resolveImage(img);
4195
+ const imageUrl = resolved?.imageUrl;
4163
4196
  if (!imageUrl) {
4164
4197
  return null;
4165
4198
  }
@@ -4800,7 +4833,7 @@ var getNestedValue6 = (obj, path) => {
4800
4833
  return current && current[key] !== void 0 ? current[key] : void 0;
4801
4834
  }, obj);
4802
4835
  };
4803
- function resolveAssetUrl2(fieldValue, tag) {
4836
+ function resolveAssetUrl(fieldValue, tag) {
4804
4837
  if (!fieldValue) {
4805
4838
  return void 0;
4806
4839
  }
@@ -4811,7 +4844,7 @@ function resolveAssetUrl2(fieldValue, tag) {
4811
4844
  }
4812
4845
  try {
4813
4846
  const parsed = JSON.parse(trimmed);
4814
- return resolveAssetUrl2(parsed, tag);
4847
+ return resolveAssetUrl(parsed, tag);
4815
4848
  } catch {
4816
4849
  return void 0;
4817
4850
  }
@@ -4838,7 +4871,7 @@ function generateCompleteBackgroundString(layers, apiBaseUrl, dataItem) {
4838
4871
  let assetUrl = imageValue.assetUrl || "";
4839
4872
  if (layer.datafield && dataItem) {
4840
4873
  const fieldValue = getNestedValue6(dataItem, layer.datafield);
4841
- const resolvedAssetUrl = resolveAssetUrl2(fieldValue, layer.tag);
4874
+ const resolvedAssetUrl = resolveAssetUrl(fieldValue, layer.tag);
4842
4875
  if (resolvedAssetUrl) {
4843
4876
  assetUrl = resolvedAssetUrl;
4844
4877
  }
package/dist/server.mjs CHANGED
@@ -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.20260803102521",
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",