@clyrex-digital/clyrex-controls-dev 0.8.1-dev.20260803102521 → 0.8.1-dev.20260807124440

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.
@@ -47,7 +47,7 @@ var IFrameLoaderView_default = IFrameLoaderView;
47
47
 
48
48
  // src/components/pageRenderingEngine/nodes/IframeClient.tsx
49
49
  import { jsx as jsx2 } from "react/jsx-runtime";
50
- var IframeClient = ({ src }) => {
50
+ var IframeClient = ({ src, height, width }) => {
51
51
  const iframeRef = useRef(null);
52
52
  const [iframeHeight, setIframeHeight] = useState("100%");
53
53
  const [isDataFound, setIsDataFound] = useState(null);
@@ -56,11 +56,11 @@ var IframeClient = ({ src }) => {
56
56
  const eventName = event?.data?.eventName;
57
57
  const payload = event?.data?.payload;
58
58
  if (eventName === "SET_HEIGHT" && payload?.height) {
59
- let height = 500;
59
+ let height2 = 500;
60
60
  if (payload.height > 500) {
61
- height = payload.height + 50;
61
+ height2 = payload.height + 50;
62
62
  }
63
- setIframeHeight(`${height}px`);
63
+ setIframeHeight(`${height2}px`);
64
64
  }
65
65
  };
66
66
  window.addEventListener("message", handleReceiveMessage);
@@ -83,10 +83,11 @@ var IframeClient = ({ src }) => {
83
83
  {
84
84
  ref: iframeRef,
85
85
  src,
86
- className: "w-full h-full border-none",
86
+ className: " border-none",
87
87
  scrolling: "no",
88
- style: { height: iframeHeight },
89
- onLoad: handleIframeLoad
88
+ onLoad: handleIframeLoad,
89
+ height,
90
+ width
90
91
  }
91
92
  ) }) });
92
93
  };
@@ -49,7 +49,7 @@ var IFrameLoaderView_default = IFrameLoaderView;
49
49
 
50
50
  // src/components/pageRenderingEngine/nodes/IframeClient.tsx
51
51
  import { jsx as jsx2 } from "react/jsx-runtime";
52
- var IframeClient = ({ src }) => {
52
+ var IframeClient = ({ src, height, width }) => {
53
53
  const iframeRef = useRef(null);
54
54
  const [iframeHeight, setIframeHeight] = useState("100%");
55
55
  const [isDataFound, setIsDataFound] = useState(null);
@@ -58,11 +58,11 @@ var IframeClient = ({ src }) => {
58
58
  const eventName = event?.data?.eventName;
59
59
  const payload = event?.data?.payload;
60
60
  if (eventName === "SET_HEIGHT" && payload?.height) {
61
- let height = 500;
61
+ let height2 = 500;
62
62
  if (payload.height > 500) {
63
- height = payload.height + 50;
63
+ height2 = payload.height + 50;
64
64
  }
65
- setIframeHeight(`${height}px`);
65
+ setIframeHeight(`${height2}px`);
66
66
  }
67
67
  };
68
68
  window.addEventListener("message", handleReceiveMessage);
@@ -85,10 +85,11 @@ var IframeClient = ({ src }) => {
85
85
  {
86
86
  ref: iframeRef,
87
87
  src,
88
- className: "w-full h-full border-none",
88
+ className: " border-none",
89
89
  scrolling: "no",
90
- style: { height: iframeHeight },
91
- onLoad: handleIframeLoad
90
+ onLoad: handleIframeLoad,
91
+ height,
92
+ width
92
93
  }
93
94
  ) }) });
94
95
  };
package/dist/index.js CHANGED
@@ -3913,7 +3913,7 @@ var init_IframeClient = __esm({
3913
3913
  import_react52 = __toESM(require("react"));
3914
3914
  init_IFrameLoaderView();
3915
3915
  import_jsx_runtime69 = require("react/jsx-runtime");
3916
- IframeClient = ({ src }) => {
3916
+ IframeClient = ({ src, height, width }) => {
3917
3917
  const iframeRef = (0, import_react52.useRef)(null);
3918
3918
  const [iframeHeight, setIframeHeight] = (0, import_react52.useState)("100%");
3919
3919
  const [isDataFound, setIsDataFound] = (0, import_react52.useState)(null);
@@ -3922,11 +3922,11 @@ var init_IframeClient = __esm({
3922
3922
  const eventName = event?.data?.eventName;
3923
3923
  const payload = event?.data?.payload;
3924
3924
  if (eventName === "SET_HEIGHT" && payload?.height) {
3925
- let height = 500;
3925
+ let height2 = 500;
3926
3926
  if (payload.height > 500) {
3927
- height = payload.height + 50;
3927
+ height2 = payload.height + 50;
3928
3928
  }
3929
- setIframeHeight(`${height}px`);
3929
+ setIframeHeight(`${height2}px`);
3930
3930
  }
3931
3931
  };
3932
3932
  window.addEventListener("message", handleReceiveMessage);
@@ -3949,10 +3949,11 @@ var init_IframeClient = __esm({
3949
3949
  {
3950
3950
  ref: iframeRef,
3951
3951
  src,
3952
- className: "w-full h-full border-none",
3952
+ className: " border-none",
3953
3953
  scrolling: "no",
3954
- style: { height: iframeHeight },
3955
- onLoad: handleIframeLoad
3954
+ onLoad: handleIframeLoad,
3955
+ height,
3956
+ width
3956
3957
  }
3957
3958
  ) }) });
3958
3959
  };
@@ -5880,7 +5881,7 @@ var EmbedNode = (props) => {
5880
5881
  } else {
5881
5882
  src = props.node.embedSrc;
5882
5883
  }
5883
- return /* @__PURE__ */ (0, import_jsx_runtime70.jsx)("div", { className: "aspect-video", children: src && /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(IframeClient2, { src }) });
5884
+ return /* @__PURE__ */ (0, import_jsx_runtime70.jsx)("div", { className: "aspect-video", children: src && /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(IframeClient2, { src, height: props.node.height, width: props.node.width }) });
5884
5885
  };
5885
5886
  var EmbedNode_default = EmbedNode;
5886
5887
 
@@ -6133,36 +6134,6 @@ var parseMaybeNumber = (value) => {
6133
6134
  const n = Number(value);
6134
6135
  return Number.isFinite(n) ? n : void 0;
6135
6136
  };
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
6137
  var getNestedValue3 = (obj, path) => {
6167
6138
  if (!obj || !path) {
6168
6139
  return void 0;
@@ -6172,57 +6143,114 @@ var getNestedValue3 = (obj, path) => {
6172
6143
  }, obj);
6173
6144
  };
6174
6145
  var ImageGalleryNode = (props) => {
6175
- const resolveImageUrl = (image) => {
6146
+ function resolveAsset(fieldValue, tag) {
6147
+ if (!fieldValue) {
6148
+ return void 0;
6149
+ }
6150
+ if (typeof fieldValue === "string") {
6151
+ const trimmed = fieldValue.trim();
6152
+ if (trimmed.startsWith("itemassets/") || trimmed.startsWith("/itemassets/") || trimmed.startsWith("http")) {
6153
+ return {
6154
+ assetUrl: trimmed
6155
+ };
6156
+ }
6157
+ try {
6158
+ const parsed = JSON.parse(trimmed);
6159
+ return resolveAsset(parsed, tag);
6160
+ } catch {
6161
+ return void 0;
6162
+ }
6163
+ }
6164
+ if (Array.isArray(fieldValue)) {
6165
+ const asset = tag ? fieldValue.find(
6166
+ (x) => x?.tag?.toLowerCase() === tag?.toLowerCase()
6167
+ ) : fieldValue[0];
6168
+ if (!asset) return void 0;
6169
+ return {
6170
+ assetUrl: asset.assetUrl,
6171
+ posterUrl: asset.posterUrl,
6172
+ intrinsicWidth: asset.intrinsicWidth,
6173
+ intrinsicHeight: asset.intrinsicHeight,
6174
+ device: asset.device,
6175
+ tag: asset.tag
6176
+ };
6177
+ }
6178
+ if (typeof fieldValue === "object" && fieldValue !== null) {
6179
+ const asset = fieldValue;
6180
+ if (!asset.assetUrl) {
6181
+ return void 0;
6182
+ }
6183
+ return {
6184
+ assetUrl: asset.assetUrl,
6185
+ posterUrl: asset.posterUrl,
6186
+ intrinsicWidth: asset.intrinsicWidth,
6187
+ intrinsicHeight: asset.intrinsicHeight,
6188
+ device: asset.device,
6189
+ tag: asset.tag
6190
+ };
6191
+ }
6192
+ return void 0;
6193
+ }
6194
+ const resolveImage = (image) => {
6176
6195
  let imageUrl = image.imageUrl;
6196
+ let posterUrl = image.posterUrl;
6197
+ let intrinsicWidth = image.intrinsicWidth;
6198
+ let intrinsicHeight = image.intrinsicHeight;
6177
6199
  if (image.datafield && props.dataitem) {
6178
6200
  const fieldValue = getNestedValue3(props.dataitem, image.datafield);
6179
- const resolvedAsset = resolveAssetUrl(fieldValue, image.tag);
6201
+ const resolvedAsset = resolveAsset(fieldValue, image.tag);
6180
6202
  if (resolvedAsset) {
6181
- imageUrl = resolvedAsset;
6203
+ imageUrl = resolvedAsset.assetUrl;
6204
+ posterUrl = resolvedAsset.posterUrl;
6205
+ intrinsicWidth = resolvedAsset.intrinsicWidth;
6206
+ intrinsicHeight = resolvedAsset.intrinsicHeight;
6182
6207
  }
6183
6208
  }
6184
6209
  if (!imageUrl) {
6185
- return "";
6186
- }
6187
- if (imageUrl.startsWith("http")) {
6188
- return imageUrl;
6210
+ return void 0;
6189
6211
  }
6190
- const base = props.assetBaseUrl.replace(/\/$/, "");
6191
- const path = imageUrl.replace(/^\//, "");
6192
- return `${base}/${path}`;
6212
+ return {
6213
+ imageUrl: imageUrl.startsWith("http") ? imageUrl : AssetUtility_default.resolveUrl(props.assetBaseUrl, imageUrl),
6214
+ posterUrl: posterUrl ? AssetUtility_default.resolveUrl(props.assetBaseUrl, posterUrl) : void 0,
6215
+ intrinsicWidth,
6216
+ intrinsicHeight
6217
+ };
6193
6218
  };
6194
6219
  const resolvePosterUrl = (posterUrl) => {
6195
6220
  if (!posterUrl) return void 0;
6196
6221
  return AssetUtility_default.resolveUrl(props.assetBaseUrl, posterUrl);
6197
6222
  };
6198
6223
  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
- );
6224
+ const hlsImages = rawImages.filter((img) => {
6225
+ const resolved = resolveImage(img);
6226
+ return resolved?.imageUrl?.endsWith(".m3u8");
6227
+ });
6228
+ const staticImages = rawImages.filter((img) => {
6229
+ const resolved = resolveImage(img);
6230
+ return resolved && !resolved.imageUrl?.endsWith(".m3u8");
6231
+ });
6205
6232
  const hlsSources = [
6206
6233
  ...DEVICE_ORDER.flatMap((deviceKey) => {
6207
6234
  const img = hlsImages.find((i) => i.device === deviceKey);
6208
6235
  if (!img) return [];
6209
- const src = resolveImageUrl(img);
6210
- if (!src) return [];
6211
- const media = deviceToMediaQuery(img.device);
6212
- const posterUrl = resolvePosterUrl(img.posterUrl);
6236
+ const resolved = resolveImage(img);
6237
+ if (!resolved) return [];
6213
6238
  return [
6214
6239
  {
6215
- src,
6216
- ...media ? { media } : {},
6217
- ...posterUrl ? { posterUrl } : {}
6240
+ src: resolved.imageUrl,
6241
+ ...deviceToMediaQuery(img.device) ? { media: deviceToMediaQuery(img.device) } : {},
6242
+ ...resolved.posterUrl ? { posterUrl: resolved.posterUrl } : {}
6218
6243
  }
6219
6244
  ];
6220
6245
  }),
6221
6246
  ...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)
6247
+ const resolved = resolveImage(img);
6248
+ if (!resolved) return void 0;
6249
+ return {
6250
+ src: resolved.imageUrl,
6251
+ ...resolved.posterUrl ? { posterUrl: resolved.posterUrl } : {}
6252
+ };
6253
+ }).filter(Boolean)
6226
6254
  ];
6227
6255
  const primaryHls = hlsImages.find((img) => !img.device) ?? hlsImages[0];
6228
6256
  const hlsIntrinsicWidth = primaryHls ? parseMaybeNumber(primaryHls.intrinsicWidth)?.toString() : void 0;
@@ -6264,7 +6292,11 @@ var ImageGalleryNode = (props) => {
6264
6292
  if (!match) {
6265
6293
  return null;
6266
6294
  }
6267
- const srcUrl = resolveImageUrl(match);
6295
+ const resolved = resolveImage(match);
6296
+ if (!resolved) {
6297
+ return null;
6298
+ }
6299
+ const srcUrl = resolved.imageUrl;
6268
6300
  if (!srcUrl) {
6269
6301
  return null;
6270
6302
  }
@@ -6281,7 +6313,8 @@ var ImageGalleryNode = (props) => {
6281
6313
  }),
6282
6314
  (() => {
6283
6315
  const img = staticFallback;
6284
- const imageUrl = resolveImageUrl(img);
6316
+ const resolved = resolveImage(img);
6317
+ const imageUrl = resolved?.imageUrl;
6285
6318
  if (!imageUrl) {
6286
6319
  return null;
6287
6320
  }
@@ -6308,7 +6341,8 @@ var ImageGalleryNode = (props) => {
6308
6341
  ] }) : (
6309
6342
  /* Case 2: Only device-specific images exist */
6310
6343
  /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(import_jsx_runtime72.Fragment, { children: staticSources.map((img, index) => {
6311
- const imageUrl = resolveImageUrl(img);
6344
+ const resolved = resolveImage(img);
6345
+ const imageUrl = resolved?.imageUrl;
6312
6346
  if (!imageUrl) {
6313
6347
  return null;
6314
6348
  }
@@ -6950,7 +6984,7 @@ var getNestedValue6 = (obj, path) => {
6950
6984
  return current && current[key] !== void 0 ? current[key] : void 0;
6951
6985
  }, obj);
6952
6986
  };
6953
- function resolveAssetUrl2(fieldValue, tag) {
6987
+ function resolveAssetUrl(fieldValue, tag) {
6954
6988
  if (!fieldValue) {
6955
6989
  return void 0;
6956
6990
  }
@@ -6961,7 +6995,7 @@ function resolveAssetUrl2(fieldValue, tag) {
6961
6995
  }
6962
6996
  try {
6963
6997
  const parsed = JSON.parse(trimmed);
6964
- return resolveAssetUrl2(parsed, tag);
6998
+ return resolveAssetUrl(parsed, tag);
6965
6999
  } catch {
6966
7000
  return void 0;
6967
7001
  }
@@ -6988,7 +7022,7 @@ function generateCompleteBackgroundString(layers, apiBaseUrl, dataItem) {
6988
7022
  let assetUrl = imageValue.assetUrl || "";
6989
7023
  if (layer.datafield && dataItem) {
6990
7024
  const fieldValue = getNestedValue6(dataItem, layer.datafield);
6991
- const resolvedAssetUrl = resolveAssetUrl2(fieldValue, layer.tag);
7025
+ const resolvedAssetUrl = resolveAssetUrl(fieldValue, layer.tag);
6992
7026
  if (resolvedAssetUrl) {
6993
7027
  assetUrl = resolvedAssetUrl;
6994
7028
  }
package/dist/index.mjs CHANGED
@@ -1195,7 +1195,7 @@ import React22 from "react";
1195
1195
  // src/components/pageRenderingEngine/nodes/EmbedNode.tsx
1196
1196
  import dynamic8 from "next/dynamic";
1197
1197
  import { jsx as jsx30 } from "react/jsx-runtime";
1198
- var IframeClient = dynamic8(() => import("./IframeClient-RGJFZ5P2.mjs"), {
1198
+ var IframeClient = dynamic8(() => import("./IframeClient-ZFI2S3GR.mjs"), {
1199
1199
  ssr: false
1200
1200
  });
1201
1201
  var EmbedNode = (props) => {
@@ -1207,7 +1207,7 @@ var EmbedNode = (props) => {
1207
1207
  } else {
1208
1208
  src = props.node.embedSrc;
1209
1209
  }
1210
- return /* @__PURE__ */ jsx30("div", { className: "aspect-video", children: src && /* @__PURE__ */ jsx30(IframeClient, { src }) });
1210
+ return /* @__PURE__ */ jsx30("div", { className: "aspect-video", children: src && /* @__PURE__ */ jsx30(IframeClient, { src, height: props.node.height, width: props.node.width }) });
1211
1211
  };
1212
1212
  var EmbedNode_default = EmbedNode;
1213
1213
 
@@ -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
@@ -1683,7 +1683,7 @@ var init_IframeClient = __esm({
1683
1683
  import_react30 = __toESM(require("react"));
1684
1684
  init_IFrameLoaderView();
1685
1685
  import_jsx_runtime41 = require("react/jsx-runtime");
1686
- IframeClient = ({ src }) => {
1686
+ IframeClient = ({ src, height, width }) => {
1687
1687
  const iframeRef = (0, import_react30.useRef)(null);
1688
1688
  const [iframeHeight, setIframeHeight] = (0, import_react30.useState)("100%");
1689
1689
  const [isDataFound, setIsDataFound] = (0, import_react30.useState)(null);
@@ -1692,11 +1692,11 @@ var init_IframeClient = __esm({
1692
1692
  const eventName = event?.data?.eventName;
1693
1693
  const payload = event?.data?.payload;
1694
1694
  if (eventName === "SET_HEIGHT" && payload?.height) {
1695
- let height = 500;
1695
+ let height2 = 500;
1696
1696
  if (payload.height > 500) {
1697
- height = payload.height + 50;
1697
+ height2 = payload.height + 50;
1698
1698
  }
1699
- setIframeHeight(`${height}px`);
1699
+ setIframeHeight(`${height2}px`);
1700
1700
  }
1701
1701
  };
1702
1702
  window.addEventListener("message", handleReceiveMessage);
@@ -1719,10 +1719,11 @@ var init_IframeClient = __esm({
1719
1719
  {
1720
1720
  ref: iframeRef,
1721
1721
  src,
1722
- className: "w-full h-full border-none",
1722
+ className: " border-none",
1723
1723
  scrolling: "no",
1724
- style: { height: iframeHeight },
1725
- onLoad: handleIframeLoad
1724
+ onLoad: handleIframeLoad,
1725
+ height,
1726
+ width
1726
1727
  }
1727
1728
  ) }) });
1728
1729
  };
@@ -3733,7 +3734,7 @@ var EmbedNode = (props) => {
3733
3734
  } else {
3734
3735
  src = props.node.embedSrc;
3735
3736
  }
3736
- return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { className: "aspect-video", children: src && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(IframeClient2, { src }) });
3737
+ return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { className: "aspect-video", children: src && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(IframeClient2, { src, height: props.node.height, width: props.node.width }) });
3737
3738
  };
3738
3739
  var EmbedNode_default = EmbedNode;
3739
3740
 
@@ -3984,36 +3985,6 @@ var parseMaybeNumber = (value) => {
3984
3985
  const n = Number(value);
3985
3986
  return Number.isFinite(n) ? n : void 0;
3986
3987
  };
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
3988
  var getNestedValue3 = (obj, path) => {
4018
3989
  if (!obj || !path) {
4019
3990
  return void 0;
@@ -4023,57 +3994,114 @@ var getNestedValue3 = (obj, path) => {
4023
3994
  }, obj);
4024
3995
  };
4025
3996
  var ImageGalleryNode = (props) => {
4026
- const resolveImageUrl = (image) => {
3997
+ function resolveAsset(fieldValue, tag) {
3998
+ if (!fieldValue) {
3999
+ return void 0;
4000
+ }
4001
+ if (typeof fieldValue === "string") {
4002
+ const trimmed = fieldValue.trim();
4003
+ if (trimmed.startsWith("itemassets/") || trimmed.startsWith("/itemassets/") || trimmed.startsWith("http")) {
4004
+ return {
4005
+ assetUrl: trimmed
4006
+ };
4007
+ }
4008
+ try {
4009
+ const parsed = JSON.parse(trimmed);
4010
+ return resolveAsset(parsed, tag);
4011
+ } catch {
4012
+ return void 0;
4013
+ }
4014
+ }
4015
+ if (Array.isArray(fieldValue)) {
4016
+ const asset = tag ? fieldValue.find(
4017
+ (x) => x?.tag?.toLowerCase() === tag?.toLowerCase()
4018
+ ) : fieldValue[0];
4019
+ if (!asset) return void 0;
4020
+ return {
4021
+ assetUrl: asset.assetUrl,
4022
+ posterUrl: asset.posterUrl,
4023
+ intrinsicWidth: asset.intrinsicWidth,
4024
+ intrinsicHeight: asset.intrinsicHeight,
4025
+ device: asset.device,
4026
+ tag: asset.tag
4027
+ };
4028
+ }
4029
+ if (typeof fieldValue === "object" && fieldValue !== null) {
4030
+ const asset = fieldValue;
4031
+ if (!asset.assetUrl) {
4032
+ return void 0;
4033
+ }
4034
+ return {
4035
+ assetUrl: asset.assetUrl,
4036
+ posterUrl: asset.posterUrl,
4037
+ intrinsicWidth: asset.intrinsicWidth,
4038
+ intrinsicHeight: asset.intrinsicHeight,
4039
+ device: asset.device,
4040
+ tag: asset.tag
4041
+ };
4042
+ }
4043
+ return void 0;
4044
+ }
4045
+ const resolveImage = (image) => {
4027
4046
  let imageUrl = image.imageUrl;
4047
+ let posterUrl = image.posterUrl;
4048
+ let intrinsicWidth = image.intrinsicWidth;
4049
+ let intrinsicHeight = image.intrinsicHeight;
4028
4050
  if (image.datafield && props.dataitem) {
4029
4051
  const fieldValue = getNestedValue3(props.dataitem, image.datafield);
4030
- const resolvedAsset = resolveAssetUrl(fieldValue, image.tag);
4052
+ const resolvedAsset = resolveAsset(fieldValue, image.tag);
4031
4053
  if (resolvedAsset) {
4032
- imageUrl = resolvedAsset;
4054
+ imageUrl = resolvedAsset.assetUrl;
4055
+ posterUrl = resolvedAsset.posterUrl;
4056
+ intrinsicWidth = resolvedAsset.intrinsicWidth;
4057
+ intrinsicHeight = resolvedAsset.intrinsicHeight;
4033
4058
  }
4034
4059
  }
4035
4060
  if (!imageUrl) {
4036
- return "";
4037
- }
4038
- if (imageUrl.startsWith("http")) {
4039
- return imageUrl;
4061
+ return void 0;
4040
4062
  }
4041
- const base = props.assetBaseUrl.replace(/\/$/, "");
4042
- const path = imageUrl.replace(/^\//, "");
4043
- return `${base}/${path}`;
4063
+ return {
4064
+ imageUrl: imageUrl.startsWith("http") ? imageUrl : AssetUtility_default.resolveUrl(props.assetBaseUrl, imageUrl),
4065
+ posterUrl: posterUrl ? AssetUtility_default.resolveUrl(props.assetBaseUrl, posterUrl) : void 0,
4066
+ intrinsicWidth,
4067
+ intrinsicHeight
4068
+ };
4044
4069
  };
4045
4070
  const resolvePosterUrl = (posterUrl) => {
4046
4071
  if (!posterUrl) return void 0;
4047
4072
  return AssetUtility_default.resolveUrl(props.assetBaseUrl, posterUrl);
4048
4073
  };
4049
4074
  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
- );
4075
+ const hlsImages = rawImages.filter((img) => {
4076
+ const resolved = resolveImage(img);
4077
+ return resolved?.imageUrl?.endsWith(".m3u8");
4078
+ });
4079
+ const staticImages = rawImages.filter((img) => {
4080
+ const resolved = resolveImage(img);
4081
+ return resolved && !resolved.imageUrl?.endsWith(".m3u8");
4082
+ });
4056
4083
  const hlsSources = [
4057
4084
  ...DEVICE_ORDER.flatMap((deviceKey) => {
4058
4085
  const img = hlsImages.find((i) => i.device === deviceKey);
4059
4086
  if (!img) return [];
4060
- const src = resolveImageUrl(img);
4061
- if (!src) return [];
4062
- const media = deviceToMediaQuery(img.device);
4063
- const posterUrl = resolvePosterUrl(img.posterUrl);
4087
+ const resolved = resolveImage(img);
4088
+ if (!resolved) return [];
4064
4089
  return [
4065
4090
  {
4066
- src,
4067
- ...media ? { media } : {},
4068
- ...posterUrl ? { posterUrl } : {}
4091
+ src: resolved.imageUrl,
4092
+ ...deviceToMediaQuery(img.device) ? { media: deviceToMediaQuery(img.device) } : {},
4093
+ ...resolved.posterUrl ? { posterUrl: resolved.posterUrl } : {}
4069
4094
  }
4070
4095
  ];
4071
4096
  }),
4072
4097
  ...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)
4098
+ const resolved = resolveImage(img);
4099
+ if (!resolved) return void 0;
4100
+ return {
4101
+ src: resolved.imageUrl,
4102
+ ...resolved.posterUrl ? { posterUrl: resolved.posterUrl } : {}
4103
+ };
4104
+ }).filter(Boolean)
4077
4105
  ];
4078
4106
  const primaryHls = hlsImages.find((img) => !img.device) ?? hlsImages[0];
4079
4107
  const hlsIntrinsicWidth = primaryHls ? parseMaybeNumber(primaryHls.intrinsicWidth)?.toString() : void 0;
@@ -4115,7 +4143,11 @@ var ImageGalleryNode = (props) => {
4115
4143
  if (!match) {
4116
4144
  return null;
4117
4145
  }
4118
- const srcUrl = resolveImageUrl(match);
4146
+ const resolved = resolveImage(match);
4147
+ if (!resolved) {
4148
+ return null;
4149
+ }
4150
+ const srcUrl = resolved.imageUrl;
4119
4151
  if (!srcUrl) {
4120
4152
  return null;
4121
4153
  }
@@ -4132,7 +4164,8 @@ var ImageGalleryNode = (props) => {
4132
4164
  }),
4133
4165
  (() => {
4134
4166
  const img = staticFallback;
4135
- const imageUrl = resolveImageUrl(img);
4167
+ const resolved = resolveImage(img);
4168
+ const imageUrl = resolved?.imageUrl;
4136
4169
  if (!imageUrl) {
4137
4170
  return null;
4138
4171
  }
@@ -4159,7 +4192,8 @@ var ImageGalleryNode = (props) => {
4159
4192
  ] }) : (
4160
4193
  /* Case 2: Only device-specific images exist */
4161
4194
  /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_jsx_runtime44.Fragment, { children: staticSources.map((img, index) => {
4162
- const imageUrl = resolveImageUrl(img);
4195
+ const resolved = resolveImage(img);
4196
+ const imageUrl = resolved?.imageUrl;
4163
4197
  if (!imageUrl) {
4164
4198
  return null;
4165
4199
  }
@@ -4800,7 +4834,7 @@ var getNestedValue6 = (obj, path) => {
4800
4834
  return current && current[key] !== void 0 ? current[key] : void 0;
4801
4835
  }, obj);
4802
4836
  };
4803
- function resolveAssetUrl2(fieldValue, tag) {
4837
+ function resolveAssetUrl(fieldValue, tag) {
4804
4838
  if (!fieldValue) {
4805
4839
  return void 0;
4806
4840
  }
@@ -4811,7 +4845,7 @@ function resolveAssetUrl2(fieldValue, tag) {
4811
4845
  }
4812
4846
  try {
4813
4847
  const parsed = JSON.parse(trimmed);
4814
- return resolveAssetUrl2(parsed, tag);
4848
+ return resolveAssetUrl(parsed, tag);
4815
4849
  } catch {
4816
4850
  return void 0;
4817
4851
  }
@@ -4838,7 +4872,7 @@ function generateCompleteBackgroundString(layers, apiBaseUrl, dataItem) {
4838
4872
  let assetUrl = imageValue.assetUrl || "";
4839
4873
  if (layer.datafield && dataItem) {
4840
4874
  const fieldValue = getNestedValue6(dataItem, layer.datafield);
4841
- const resolvedAssetUrl = resolveAssetUrl2(fieldValue, layer.tag);
4875
+ const resolvedAssetUrl = resolveAssetUrl(fieldValue, layer.tag);
4842
4876
  if (resolvedAssetUrl) {
4843
4877
  assetUrl = resolvedAssetUrl;
4844
4878
  }
package/dist/server.mjs CHANGED
@@ -1176,7 +1176,7 @@ import React22 from "react";
1176
1176
  // src/components/pageRenderingEngine/nodes/EmbedNode.tsx
1177
1177
  import dynamic7 from "next/dynamic";
1178
1178
  import { jsx as jsx30 } from "react/jsx-runtime";
1179
- var IframeClient = dynamic7(() => import("./IframeClient-J22NMEVY.mjs"), {
1179
+ var IframeClient = dynamic7(() => import("./IframeClient-7MLB3UB2.mjs"), {
1180
1180
  ssr: false
1181
1181
  });
1182
1182
  var EmbedNode = (props) => {
@@ -1188,7 +1188,7 @@ var EmbedNode = (props) => {
1188
1188
  } else {
1189
1189
  src = props.node.embedSrc;
1190
1190
  }
1191
- return /* @__PURE__ */ jsx30("div", { className: "aspect-video", children: src && /* @__PURE__ */ jsx30(IframeClient, { src }) });
1191
+ return /* @__PURE__ */ jsx30("div", { className: "aspect-video", children: src && /* @__PURE__ */ jsx30(IframeClient, { src, height: props.node.height, width: props.node.width }) });
1192
1192
  };
1193
1193
  var EmbedNode_default = EmbedNode;
1194
1194
 
@@ -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.20260807124440",
4
4
  "description": "Reusable React components",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",