@acoustte-digital-services/digitalstore-controls-dev 0.8.1-dev.20260323111546 → 0.8.1-dev.20260323123345

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.d.mts CHANGED
@@ -205,7 +205,7 @@ interface PageBodyRendererProps {
205
205
  donotApplyContainerLargeClass?: boolean;
206
206
  widgetRegistry?: Record<string, React.ComponentType<any>>;
207
207
  serviceClient?: ServiceClientInterface;
208
- resolveAssetUrl?: (assetUrl: string) => string | undefined;
208
+ resolveAssetUrl?: (url: string) => string | undefined;
209
209
  dataMap?: Record<string, any>;
210
210
  }
211
211
  declare const PageBodyRenderer: React.FC<PageBodyRendererProps>;
package/dist/index.d.ts CHANGED
@@ -205,7 +205,7 @@ interface PageBodyRendererProps {
205
205
  donotApplyContainerLargeClass?: boolean;
206
206
  widgetRegistry?: Record<string, React.ComponentType<any>>;
207
207
  serviceClient?: ServiceClientInterface;
208
- resolveAssetUrl?: (assetUrl: string) => string | undefined;
208
+ resolveAssetUrl?: (url: string) => string | undefined;
209
209
  dataMap?: Record<string, any>;
210
210
  }
211
211
  declare const PageBodyRenderer: React.FC<PageBodyRendererProps>;
package/dist/index.js CHANGED
@@ -2541,7 +2541,7 @@ var DataList = (props) => {
2541
2541
  var DataList_default = DataList;
2542
2542
 
2543
2543
  // src/components/pageRenderingEngine/PageBodyRenderer.tsx
2544
- var import_react54 = __toESM(require("react"));
2544
+ var import_react53 = __toESM(require("react"));
2545
2545
 
2546
2546
  // src/components/pageRenderingEngine/nodes/ParagraphNode.tsx
2547
2547
  var import_react36 = __toESM(require("react"));
@@ -2780,13 +2780,7 @@ var DatafieldNode = (props) => {
2780
2780
  {
2781
2781
  className: `datafield-node ${props.node.format < Formats.length ? Formats[props.node.format] : ""}`,
2782
2782
  style: styles,
2783
- children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
2784
- ViewControl_default,
2785
- {
2786
- controlType: dataType,
2787
- value: value ?? `@databound[${fieldName}]`
2788
- }
2789
- )
2783
+ children: String(value)
2790
2784
  }
2791
2785
  );
2792
2786
  };
@@ -3038,15 +3032,23 @@ var HorizontalRuleNode = (props) => {
3038
3032
  var HorizontalRuleNode_default = HorizontalRuleNode;
3039
3033
 
3040
3034
  // src/components/pageRenderingEngine/nodes/LayoutItemNode.tsx
3041
- var import_react48 = __toESM(require("react"));
3035
+ var import_react47 = __toESM(require("react"));
3042
3036
 
3043
3037
  // src/components/pageRenderingEngine/nodes/ImageNode.tsx
3044
- var import_react43 = __toESM(require("react"));
3045
3038
  var import_jsx_runtime55 = require("react/jsx-runtime");
3046
3039
  var ImageNode = (props) => {
3047
- const { node, apiBaseUrl = "" } = props;
3048
- let imageUrl = node.imageUrl.startsWith("http") ? node.imageUrl : `${apiBaseUrl}/digitalassets/storefront/${node.imageUrl}`;
3049
- return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_react43.default.Fragment, { children: node.width ? /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("div", { style: { width: node.width }, children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
3040
+ const { node, apiBaseUrl = "", resolveAssetUrl } = props;
3041
+ let imageUrl;
3042
+ if (!node.imageUrl) return null;
3043
+ if (node.imageUrl.startsWith("http")) {
3044
+ imageUrl = node.imageUrl;
3045
+ } else if (resolveAssetUrl) {
3046
+ imageUrl = resolveAssetUrl(node.imageUrl);
3047
+ } else {
3048
+ imageUrl = `${apiBaseUrl}/${node.imageUrl}`;
3049
+ }
3050
+ if (!imageUrl) return null;
3051
+ return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_jsx_runtime55.Fragment, { children: node.width ? /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("div", { style: { width: node.width }, children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
3050
3052
  "img",
3051
3053
  {
3052
3054
  loading: "lazy",
@@ -3071,7 +3073,7 @@ var ImageNode = (props) => {
3071
3073
  var ImageNode_default = ImageNode;
3072
3074
 
3073
3075
  // src/components/pageRenderingEngine/nodes/WidgetNode.tsx
3074
- var import_react44 = require("react");
3076
+ var import_react43 = require("react");
3075
3077
  var import_jsx_runtime56 = require("react/jsx-runtime");
3076
3078
  var WidgetNode = (props) => {
3077
3079
  const getWidgetParameters = () => {
@@ -3132,7 +3134,7 @@ var WidgetNode = (props) => {
3132
3134
  props.node.widgetCode
3133
3135
  ] });
3134
3136
  }
3135
- return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_react44.Suspense, { fallback: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { className: "container mt-2", children: "..." }), children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
3137
+ return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_react43.Suspense, { fallback: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { className: "container mt-2", children: "..." }), children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
3136
3138
  SelectedWidget,
3137
3139
  {
3138
3140
  params: getWidgetParameters(),
@@ -3147,13 +3149,13 @@ var WidgetNode = (props) => {
3147
3149
  var WidgetNode_default = WidgetNode;
3148
3150
 
3149
3151
  // src/components/pageRenderingEngine/nodes/IframeClient.tsx
3150
- var import_react46 = __toESM(require("react"));
3152
+ var import_react45 = __toESM(require("react"));
3151
3153
 
3152
3154
  // src/components/IFrameLoaderView.tsx
3153
- var import_react45 = __toESM(require("react"));
3155
+ var import_react44 = __toESM(require("react"));
3154
3156
  var import_jsx_runtime57 = require("react/jsx-runtime");
3155
3157
  var IFrameLoaderView = (props) => {
3156
- return /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_react45.default.Fragment, { children: [
3158
+ return /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_react44.default.Fragment, { children: [
3157
3159
  props.isDataFound == null && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "", children: /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "mt-4 bg-gray-200 rounded-md p-4 animate-pulse", children: [
3158
3160
  /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "flex items-center mb-4", children: [
3159
3161
  /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "bg-gray-300 h-8 w-8 rounded-full animate-pulse" }),
@@ -3194,10 +3196,10 @@ var IFrameLoaderView_default = IFrameLoaderView;
3194
3196
  // src/components/pageRenderingEngine/nodes/IframeClient.tsx
3195
3197
  var import_jsx_runtime58 = require("react/jsx-runtime");
3196
3198
  var IframeClient = ({ src }) => {
3197
- const iframeRef = (0, import_react46.useRef)(null);
3198
- const [iframeHeight, setIframeHeight] = (0, import_react46.useState)("100%");
3199
- const [isDataFound, setIsDataFound] = (0, import_react46.useState)(null);
3200
- (0, import_react46.useEffect)(() => {
3199
+ const iframeRef = (0, import_react45.useRef)(null);
3200
+ const [iframeHeight, setIframeHeight] = (0, import_react45.useState)("100%");
3201
+ const [isDataFound, setIsDataFound] = (0, import_react45.useState)(null);
3202
+ (0, import_react45.useEffect)(() => {
3201
3203
  const handleReceiveMessage = (event) => {
3202
3204
  const eventName = event?.data?.eventName;
3203
3205
  const payload = event?.data?.payload;
@@ -3212,7 +3214,7 @@ var IframeClient = ({ src }) => {
3212
3214
  window.addEventListener("message", handleReceiveMessage);
3213
3215
  return () => window.removeEventListener("message", handleReceiveMessage);
3214
3216
  }, []);
3215
- (0, import_react46.useEffect)(() => {
3217
+ (0, import_react45.useEffect)(() => {
3216
3218
  const handleResize = () => {
3217
3219
  if (iframeRef.current) {
3218
3220
  iframeRef.current.contentWindow?.postMessage({ eventName: "RESIZE" }, "*");
@@ -3224,7 +3226,7 @@ var IframeClient = ({ src }) => {
3224
3226
  const handleIframeLoad = () => {
3225
3227
  setIsDataFound(true);
3226
3228
  };
3227
- return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_react46.default.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(IFrameLoaderView_default, { isDataFound, children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
3229
+ return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_react45.default.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(IFrameLoaderView_default, { isDataFound, children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
3228
3230
  "iframe",
3229
3231
  {
3230
3232
  ref: iframeRef,
@@ -3253,7 +3255,7 @@ var EmbedNode = (props) => {
3253
3255
  var EmbedNode_default = EmbedNode;
3254
3256
 
3255
3257
  // src/components/pageRenderingEngine/nodes/VideoNode.tsx
3256
- var import_react47 = __toESM(require("react"));
3258
+ var import_react46 = __toESM(require("react"));
3257
3259
  var import_jsx_runtime60 = require("react/jsx-runtime");
3258
3260
  var VideoNode = (props) => {
3259
3261
  let src;
@@ -3262,7 +3264,7 @@ var VideoNode = (props) => {
3262
3264
  } else if (props.node.provider == "bunny") {
3263
3265
  src = `https://iframe.mediadelivery.net/embed/${props.node.videoId}?autoplay=false&loop=false&muted=false&preload=true&responsive=true`;
3264
3266
  }
3265
- return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_react47.default.Fragment, { children: src && /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("iframe", { className: "w-full aspect-video rounded", src, loading: "lazy", allow: "accelerometer;gyroscope;autoplay;encrypted-media;picture-in-picture;", allowFullScreen: true }) });
3267
+ return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_react46.default.Fragment, { children: src && /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("iframe", { className: "w-full aspect-video rounded", src, loading: "lazy", allow: "accelerometer;gyroscope;autoplay;encrypted-media;picture-in-picture;", allowFullScreen: true }) });
3266
3268
  };
3267
3269
  var VideoNode_default = VideoNode;
3268
3270
 
@@ -3328,11 +3330,11 @@ var LayoutItemNode = (props) => {
3328
3330
  } else {
3329
3331
  updatedLayout = removeParagraphsAtStartAndEnd(props.node);
3330
3332
  }
3331
- return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_react48.default.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("div", { className: "layout-item " + cssClasses, style: { ...styles }, children: updatedLayout.children.map((node, index) => {
3333
+ return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_react47.default.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("div", { className: "layout-item " + cssClasses, style: { ...styles }, children: updatedLayout.children.map((node, index) => {
3332
3334
  {
3333
3335
  }
3334
3336
  const SelectedNode = NodeTypes2[node.type];
3335
- return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_react48.default.Fragment, { children: SelectedNode && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
3337
+ return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_react47.default.Fragment, { children: SelectedNode && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
3336
3338
  SelectedNode,
3337
3339
  {
3338
3340
  node,
@@ -3476,7 +3478,7 @@ var LayoutContainerNode = (props) => {
3476
3478
  var LayoutContainerNode_default = LayoutContainerNode;
3477
3479
 
3478
3480
  // src/components/pageRenderingEngine/nodes/FormContainerNode.tsx
3479
- var import_react49 = __toESM(require("react"));
3481
+ var import_react48 = __toESM(require("react"));
3480
3482
 
3481
3483
  // src/components/pageRenderingEngine/nodes/InputControlNode.tsx
3482
3484
  var import_jsx_runtime63 = require("react/jsx-runtime");
@@ -3516,13 +3518,13 @@ var FormContainerNode = (props) => {
3516
3518
  ["input-control"]: InputControlNode_default
3517
3519
  };
3518
3520
  const { node } = props;
3519
- const formRef = (0, import_react49.useRef)(null);
3521
+ const formRef = (0, import_react48.useRef)(null);
3520
3522
  const initialState = {
3521
3523
  inputValues: {},
3522
3524
  lastPropertyChanged: ""
3523
3525
  };
3524
- const [formState, dispatch] = (0, import_react49.useReducer)(FormReducer_default, initialState);
3525
- const handleInputChange = (0, import_react49.useCallback)((updatedValues) => {
3526
+ const [formState, dispatch] = (0, import_react48.useReducer)(FormReducer_default, initialState);
3527
+ const handleInputChange = (0, import_react48.useCallback)((updatedValues) => {
3526
3528
  dispatch({ type: FORM_INPUT_UPDATE, name: updatedValues.name, value: updatedValues.value });
3527
3529
  }, [dispatch]);
3528
3530
  const onValidate = async () => {
@@ -3533,7 +3535,7 @@ var FormContainerNode = (props) => {
3533
3535
  return true;
3534
3536
  }
3535
3537
  };
3536
- (0, import_react49.useEffect)(() => {
3538
+ (0, import_react48.useEffect)(() => {
3537
3539
  const fetchInitialData = async () => {
3538
3540
  if (!props.fetchData || !node.dataFetchApi) return;
3539
3541
  const response = await props.fetchData(
@@ -3555,7 +3557,7 @@ var FormContainerNode = (props) => {
3555
3557
  {
3556
3558
  }
3557
3559
  const SelectedNode = NodeTypes2[node2.type];
3558
- return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_react49.default.Fragment, { children: SelectedNode && node2.type == "input-control" && /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
3560
+ return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_react48.default.Fragment, { children: SelectedNode && node2.type == "input-control" && /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
3559
3561
  InputControlNode_default,
3560
3562
  {
3561
3563
  value: formState.inputValues[node2.name],
@@ -3570,7 +3572,7 @@ var FormContainerNode = (props) => {
3570
3572
  var FormContainerNode_default = FormContainerNode;
3571
3573
 
3572
3574
  // src/components/pageRenderingEngine/nodes/DivContainer.tsx
3573
- var import_react53 = __toESM(require("react"));
3575
+ var import_react52 = __toESM(require("react"));
3574
3576
 
3575
3577
  // src/components/utilities/AnimationUtility.tsx
3576
3578
  var AnimationUtility = class {
@@ -3681,11 +3683,11 @@ var AnimationUtility = class {
3681
3683
  var AnimationUtility_default = AnimationUtility;
3682
3684
 
3683
3685
  // src/components/Pagination.tsx
3684
- var import_react50 = require("react");
3686
+ var import_react49 = require("react");
3685
3687
  var import_jsx_runtime65 = require("react/jsx-runtime");
3686
3688
  var Pagination = (props) => {
3687
3689
  const { dataset, path, query, showPageSizeSelector = false, showJumpToPage = false } = props;
3688
- const builder = (0, import_react50.useMemo)(() => {
3690
+ const builder = (0, import_react49.useMemo)(() => {
3689
3691
  const b = new OdataBuilder(path);
3690
3692
  if (query) b.setQuery(query);
3691
3693
  return b;
@@ -3900,11 +3902,11 @@ var PathUtility = class {
3900
3902
  var PathUtility_default = new PathUtility();
3901
3903
 
3902
3904
  // src/components/pageRenderingEngine/nodes/EnterAnimationClient.tsx
3903
- var import_react51 = __toESM(require("react"));
3905
+ var import_react50 = __toESM(require("react"));
3904
3906
  var import_jsx_runtime66 = require("react/jsx-runtime");
3905
3907
  function EnterAnimationClient({ hasEnterAnimation, children }) {
3906
- const ref = (0, import_react51.useRef)(null);
3907
- (0, import_react51.useEffect)(() => {
3908
+ const ref = (0, import_react50.useRef)(null);
3909
+ (0, import_react50.useEffect)(() => {
3908
3910
  if (!hasEnterAnimation || !ref.current) return;
3909
3911
  const observer = new IntersectionObserver(
3910
3912
  (entries) => {
@@ -3922,11 +3924,11 @@ function EnterAnimationClient({ hasEnterAnimation, children }) {
3922
3924
  }, [hasEnterAnimation]);
3923
3925
  return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_jsx_runtime66.Fragment, { children: children && // enforce passing the ref to Wrapper
3924
3926
  //@ts-ignore
3925
- import_react51.default.cloneElement(children, { ref }) });
3927
+ import_react50.default.cloneElement(children, { ref }) });
3926
3928
  }
3927
3929
 
3928
3930
  // src/components/Slider.tsx
3929
- var import_react52 = __toESM(require("react"));
3931
+ var import_react51 = __toESM(require("react"));
3930
3932
  var import_jsx_runtime67 = require("react/jsx-runtime");
3931
3933
  var Slider = ({
3932
3934
  children,
@@ -3945,13 +3947,13 @@ var Slider = ({
3945
3947
  pillStyle = "cumulative",
3946
3948
  progressPosition = "bottom"
3947
3949
  }) => {
3948
- const [currentSlide, setCurrentSlide] = (0, import_react52.useState)(0);
3949
- const [transition, setTransition] = (0, import_react52.useState)(true);
3950
- const [slidesToShowState, setSlidesToShowState] = (0, import_react52.useState)(
3950
+ const [currentSlide, setCurrentSlide] = (0, import_react51.useState)(0);
3951
+ const [transition, setTransition] = (0, import_react51.useState)(true);
3952
+ const [slidesToShowState, setSlidesToShowState] = (0, import_react51.useState)(
3951
3953
  typeof slidesToShow === "number" ? slidesToShow : slidesToShow.large
3952
3954
  );
3953
- const [isPlaying, setIsPlaying] = (0, import_react52.useState)(autoplay);
3954
- (0, import_react52.useEffect)(() => {
3955
+ const [isPlaying, setIsPlaying] = (0, import_react51.useState)(autoplay);
3956
+ (0, import_react51.useEffect)(() => {
3955
3957
  if (typeof slidesToShow === "number") return;
3956
3958
  const handleResize = () => {
3957
3959
  if (window.innerWidth >= 1024) {
@@ -3966,7 +3968,7 @@ var Slider = ({
3966
3968
  window.addEventListener("resize", handleResize);
3967
3969
  return () => window.removeEventListener("resize", handleResize);
3968
3970
  }, [slidesToShow]);
3969
- (0, import_react52.useEffect)(() => {
3971
+ (0, import_react51.useEffect)(() => {
3970
3972
  if (!autoplay) return;
3971
3973
  const timer = setInterval(() => {
3972
3974
  if (isPlaying) {
@@ -3975,7 +3977,7 @@ var Slider = ({
3975
3977
  }, autoplay_speed);
3976
3978
  return () => clearInterval(timer);
3977
3979
  }, [autoplay, autoplay_speed, currentSlide, isPlaying]);
3978
- const totalSlides = import_react52.Children.count(children);
3980
+ const totalSlides = import_react51.Children.count(children);
3979
3981
  const maxSlide = totalSlides - slidesToShowState;
3980
3982
  const nextSlide = () => {
3981
3983
  if (currentSlide >= maxSlide) {
@@ -4020,8 +4022,8 @@ var Slider = ({
4020
4022
  }
4021
4023
  };
4022
4024
  const translateX = -currentSlide * (100 / slidesToShowState);
4023
- const slides = import_react52.Children.map(children, (child, index) => {
4024
- if (!import_react52.default.isValidElement(child)) return null;
4025
+ const slides = import_react51.Children.map(children, (child, index) => {
4026
+ if (!import_react51.default.isValidElement(child)) return null;
4025
4027
  const childProps = child.props;
4026
4028
  const mergedClassName = `${childProps.className ?? ""} w-full`.trim();
4027
4029
  return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
@@ -4029,7 +4031,7 @@ var Slider = ({
4029
4031
  {
4030
4032
  className: `flex-none ${scaleOnHover ? "group hover:z-50" : ""} relative`,
4031
4033
  style: { width: `calc(${100 / slidesToShowState}%)`, paddingRight: gap },
4032
- children: (0, import_react52.cloneElement)(child, {
4034
+ children: (0, import_react51.cloneElement)(child, {
4033
4035
  className: mergedClassName
4034
4036
  })
4035
4037
  },
@@ -4142,13 +4144,13 @@ var ProgressPill = ({
4142
4144
  currentSlide,
4143
4145
  totalSlides
4144
4146
  }) => {
4145
- const [progress, setProgress] = (0, import_react52.useState)(0);
4146
- (0, import_react52.useEffect)(() => {
4147
+ const [progress, setProgress] = (0, import_react51.useState)(0);
4148
+ (0, import_react51.useEffect)(() => {
4147
4149
  if (active) {
4148
4150
  setProgress(0);
4149
4151
  }
4150
4152
  }, [active, index]);
4151
- (0, import_react52.useEffect)(() => {
4153
+ (0, import_react51.useEffect)(() => {
4152
4154
  if (!active || !isPlaying) {
4153
4155
  if (!active) {
4154
4156
  setProgress(0);
@@ -4440,7 +4442,7 @@ var DivContainer = async (props) => {
4440
4442
  function renderNode(node, props2, dataitem, key, href) {
4441
4443
  const SelectedNode = NodeTypes2[node.type];
4442
4444
  if (!SelectedNode) return null;
4443
- return /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react53.default.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
4445
+ return /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react52.default.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
4444
4446
  SelectedNode,
4445
4447
  {
4446
4448
  node,
@@ -4537,9 +4539,9 @@ var DivContainer = async (props) => {
4537
4539
  props.node.autoFormat && "auto-format",
4538
4540
  props.node.bgClass
4539
4541
  ].filter(Boolean).join(" ");
4540
- return /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(import_react53.default.Fragment, { children: [
4542
+ return /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(import_react52.default.Fragment, { children: [
4541
4543
  /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("style", { dangerouslySetInnerHTML: { __html: cssResult.css + animationCSS } }),
4542
- /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(EnterAnimationClient, { hasEnterAnimation: !!props.node.enterAnimation, children: /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react53.default.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
4544
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(EnterAnimationClient, { hasEnterAnimation: !!props.node.enterAnimation, children: /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react52.default.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
4543
4545
  Wrapper,
4544
4546
  {
4545
4547
  id: guid,
@@ -4548,7 +4550,7 @@ var DivContainer = async (props) => {
4548
4550
  ...wrapperProps,
4549
4551
  children: dataToRender.map(
4550
4552
  (item, idx) => item?.links?.view && renderLink ? renderChildren(props.node.children, props, item, idx, props.href ? void 0 : item?.links?.view)?.map(
4551
- (child, i) => /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react53.default.Fragment, { children: child }, i)
4553
+ (child, i) => /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react52.default.Fragment, { children: child }, i)
4552
4554
  ) : renderChildren(props.node.children, props, item, idx)
4553
4555
  )
4554
4556
  }
@@ -4587,11 +4589,11 @@ var PageBodyRenderer = (props) => {
4587
4589
  if (pageBodyTree && pageBodyTree.root) {
4588
4590
  rootNode = pageBodyTree.root;
4589
4591
  }
4590
- return /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_react54.default.Fragment, { children: rootNode && rootNode?.children?.map((node, index) => {
4592
+ return /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_react53.default.Fragment, { children: rootNode && rootNode?.children?.map((node, index) => {
4591
4593
  {
4592
4594
  }
4593
4595
  const SelectedNode = NodeTypes[node.type];
4594
- return /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_react54.default.Fragment, { children: SelectedNode && /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_react54.default.Fragment, { children: node.type == "layout-container" ? /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_react54.default.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
4596
+ return /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_react53.default.Fragment, { children: SelectedNode && /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_react53.default.Fragment, { children: node.type == "layout-container" ? /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_react53.default.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
4595
4597
  SelectedNode,
4596
4598
  {
4597
4599
  node,
@@ -4607,7 +4609,7 @@ var PageBodyRenderer = (props) => {
4607
4609
  resolveAssetUrl: props.resolveAssetUrl,
4608
4610
  dataMap: props.dataMap
4609
4611
  }
4610
- ) }) : /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_react54.default.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
4612
+ ) }) : /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_react53.default.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
4611
4613
  SelectedNode,
4612
4614
  {
4613
4615
  node,
package/dist/index.mjs CHANGED
@@ -2509,7 +2509,7 @@ var DataList = (props) => {
2509
2509
  var DataList_default = DataList;
2510
2510
 
2511
2511
  // src/components/pageRenderingEngine/PageBodyRenderer.tsx
2512
- import React53 from "react";
2512
+ import React52 from "react";
2513
2513
 
2514
2514
  // src/components/pageRenderingEngine/nodes/ParagraphNode.tsx
2515
2515
  import React36 from "react";
@@ -2748,13 +2748,7 @@ var DatafieldNode = (props) => {
2748
2748
  {
2749
2749
  className: `datafield-node ${props.node.format < Formats.length ? Formats[props.node.format] : ""}`,
2750
2750
  style: styles,
2751
- children: /* @__PURE__ */ jsx46(
2752
- ViewControl_default,
2753
- {
2754
- controlType: dataType,
2755
- value: value ?? `@databound[${fieldName}]`
2756
- }
2757
- )
2751
+ children: String(value)
2758
2752
  }
2759
2753
  );
2760
2754
  };
@@ -3006,15 +3000,23 @@ var HorizontalRuleNode = (props) => {
3006
3000
  var HorizontalRuleNode_default = HorizontalRuleNode;
3007
3001
 
3008
3002
  // src/components/pageRenderingEngine/nodes/LayoutItemNode.tsx
3009
- import React47 from "react";
3003
+ import React46 from "react";
3010
3004
 
3011
3005
  // src/components/pageRenderingEngine/nodes/ImageNode.tsx
3012
- import React42 from "react";
3013
- import { jsx as jsx55 } from "react/jsx-runtime";
3006
+ import { Fragment as Fragment6, jsx as jsx55 } from "react/jsx-runtime";
3014
3007
  var ImageNode = (props) => {
3015
- const { node, apiBaseUrl = "" } = props;
3016
- let imageUrl = node.imageUrl.startsWith("http") ? node.imageUrl : `${apiBaseUrl}/digitalassets/storefront/${node.imageUrl}`;
3017
- return /* @__PURE__ */ jsx55(React42.Fragment, { children: node.width ? /* @__PURE__ */ jsx55("div", { style: { width: node.width }, children: /* @__PURE__ */ jsx55(
3008
+ const { node, apiBaseUrl = "", resolveAssetUrl } = props;
3009
+ let imageUrl;
3010
+ if (!node.imageUrl) return null;
3011
+ if (node.imageUrl.startsWith("http")) {
3012
+ imageUrl = node.imageUrl;
3013
+ } else if (resolveAssetUrl) {
3014
+ imageUrl = resolveAssetUrl(node.imageUrl);
3015
+ } else {
3016
+ imageUrl = `${apiBaseUrl}/${node.imageUrl}`;
3017
+ }
3018
+ if (!imageUrl) return null;
3019
+ return /* @__PURE__ */ jsx55(Fragment6, { children: node.width ? /* @__PURE__ */ jsx55("div", { style: { width: node.width }, children: /* @__PURE__ */ jsx55(
3018
3020
  "img",
3019
3021
  {
3020
3022
  loading: "lazy",
@@ -3040,7 +3042,7 @@ var ImageNode_default = ImageNode;
3040
3042
 
3041
3043
  // src/components/pageRenderingEngine/nodes/WidgetNode.tsx
3042
3044
  import { Suspense } from "react";
3043
- import { Fragment as Fragment6, jsx as jsx56, jsxs as jsxs27 } from "react/jsx-runtime";
3045
+ import { Fragment as Fragment7, jsx as jsx56, jsxs as jsxs27 } from "react/jsx-runtime";
3044
3046
  var WidgetNode = (props) => {
3045
3047
  const getWidgetParameters = () => {
3046
3048
  const widgetInputParameters = { ...props.routeParameters ?? {} };
@@ -3095,7 +3097,7 @@ var WidgetNode = (props) => {
3095
3097
  const SelectedWidget = props.widgetRegistry?.[props.node.widgetCode];
3096
3098
  if (!SelectedWidget) {
3097
3099
  console.warn("Widget not found:", props.node.widgetCode);
3098
- return /* @__PURE__ */ jsxs27(Fragment6, { children: [
3100
+ return /* @__PURE__ */ jsxs27(Fragment7, { children: [
3099
3101
  "Widget not found: ",
3100
3102
  props.node.widgetCode
3101
3103
  ] });
@@ -3115,13 +3117,13 @@ var WidgetNode = (props) => {
3115
3117
  var WidgetNode_default = WidgetNode;
3116
3118
 
3117
3119
  // src/components/pageRenderingEngine/nodes/IframeClient.tsx
3118
- import React45, { useEffect as useEffect8, useRef as useRef4, useState as useState9 } from "react";
3120
+ import React44, { useEffect as useEffect8, useRef as useRef4, useState as useState9 } from "react";
3119
3121
 
3120
3122
  // src/components/IFrameLoaderView.tsx
3121
- import React44 from "react";
3123
+ import React43 from "react";
3122
3124
  import { jsx as jsx57, jsxs as jsxs28 } from "react/jsx-runtime";
3123
3125
  var IFrameLoaderView = (props) => {
3124
- return /* @__PURE__ */ jsxs28(React44.Fragment, { children: [
3126
+ return /* @__PURE__ */ jsxs28(React43.Fragment, { children: [
3125
3127
  props.isDataFound == null && /* @__PURE__ */ jsx57("div", { className: "", children: /* @__PURE__ */ jsxs28("div", { className: "mt-4 bg-gray-200 rounded-md p-4 animate-pulse", children: [
3126
3128
  /* @__PURE__ */ jsxs28("div", { className: "flex items-center mb-4", children: [
3127
3129
  /* @__PURE__ */ jsx57("div", { className: "bg-gray-300 h-8 w-8 rounded-full animate-pulse" }),
@@ -3192,7 +3194,7 @@ var IframeClient = ({ src }) => {
3192
3194
  const handleIframeLoad = () => {
3193
3195
  setIsDataFound(true);
3194
3196
  };
3195
- return /* @__PURE__ */ jsx58(React45.Fragment, { children: /* @__PURE__ */ jsx58(IFrameLoaderView_default, { isDataFound, children: /* @__PURE__ */ jsx58(
3197
+ return /* @__PURE__ */ jsx58(React44.Fragment, { children: /* @__PURE__ */ jsx58(IFrameLoaderView_default, { isDataFound, children: /* @__PURE__ */ jsx58(
3196
3198
  "iframe",
3197
3199
  {
3198
3200
  ref: iframeRef,
@@ -3221,7 +3223,7 @@ var EmbedNode = (props) => {
3221
3223
  var EmbedNode_default = EmbedNode;
3222
3224
 
3223
3225
  // src/components/pageRenderingEngine/nodes/VideoNode.tsx
3224
- import React46 from "react";
3226
+ import React45 from "react";
3225
3227
  import { jsx as jsx60 } from "react/jsx-runtime";
3226
3228
  var VideoNode = (props) => {
3227
3229
  let src;
@@ -3230,7 +3232,7 @@ var VideoNode = (props) => {
3230
3232
  } else if (props.node.provider == "bunny") {
3231
3233
  src = `https://iframe.mediadelivery.net/embed/${props.node.videoId}?autoplay=false&loop=false&muted=false&preload=true&responsive=true`;
3232
3234
  }
3233
- return /* @__PURE__ */ jsx60(React46.Fragment, { children: src && /* @__PURE__ */ jsx60("iframe", { className: "w-full aspect-video rounded", src, loading: "lazy", allow: "accelerometer;gyroscope;autoplay;encrypted-media;picture-in-picture;", allowFullScreen: true }) });
3235
+ return /* @__PURE__ */ jsx60(React45.Fragment, { children: src && /* @__PURE__ */ jsx60("iframe", { className: "w-full aspect-video rounded", src, loading: "lazy", allow: "accelerometer;gyroscope;autoplay;encrypted-media;picture-in-picture;", allowFullScreen: true }) });
3234
3236
  };
3235
3237
  var VideoNode_default = VideoNode;
3236
3238
 
@@ -3296,11 +3298,11 @@ var LayoutItemNode = (props) => {
3296
3298
  } else {
3297
3299
  updatedLayout = removeParagraphsAtStartAndEnd(props.node);
3298
3300
  }
3299
- return /* @__PURE__ */ jsx61(React47.Fragment, { children: /* @__PURE__ */ jsx61("div", { className: "layout-item " + cssClasses, style: { ...styles }, children: updatedLayout.children.map((node, index) => {
3301
+ return /* @__PURE__ */ jsx61(React46.Fragment, { children: /* @__PURE__ */ jsx61("div", { className: "layout-item " + cssClasses, style: { ...styles }, children: updatedLayout.children.map((node, index) => {
3300
3302
  {
3301
3303
  }
3302
3304
  const SelectedNode = NodeTypes2[node.type];
3303
- return /* @__PURE__ */ jsx61(React47.Fragment, { children: SelectedNode && /* @__PURE__ */ jsx61(
3305
+ return /* @__PURE__ */ jsx61(React46.Fragment, { children: SelectedNode && /* @__PURE__ */ jsx61(
3304
3306
  SelectedNode,
3305
3307
  {
3306
3308
  node,
@@ -3330,7 +3332,7 @@ var AssetUtility = class {
3330
3332
  var AssetUtility_default = AssetUtility;
3331
3333
 
3332
3334
  // src/components/pageRenderingEngine/nodes/LayoutContainerNode.tsx
3333
- import { Fragment as Fragment7, jsx as jsx62, jsxs as jsxs29 } from "react/jsx-runtime";
3335
+ import { Fragment as Fragment8, jsx as jsx62, jsxs as jsxs29 } from "react/jsx-runtime";
3334
3336
  var LayoutContainerNode = (props) => {
3335
3337
  const VERTICAL_ALIGNMENT_CLASSES = {
3336
3338
  start: "items-start",
@@ -3414,7 +3416,7 @@ var LayoutContainerNode = (props) => {
3414
3416
  },
3415
3417
  index
3416
3418
  ));
3417
- return /* @__PURE__ */ jsxs29(Fragment7, { children: [
3419
+ return /* @__PURE__ */ jsxs29(Fragment8, { children: [
3418
3420
  sectionWidth === "mixed" && /* @__PURE__ */ jsx62("div", { className: cssClasses, style: styles, children: /* @__PURE__ */ jsx62("div", { className: "container", children: /* @__PURE__ */ jsx62(
3419
3421
  "div",
3420
3422
  {
@@ -3444,7 +3446,7 @@ var LayoutContainerNode = (props) => {
3444
3446
  var LayoutContainerNode_default = LayoutContainerNode;
3445
3447
 
3446
3448
  // src/components/pageRenderingEngine/nodes/FormContainerNode.tsx
3447
- import React48, { useRef as useRef5, useReducer as useReducer2, useCallback as useCallback3, useEffect as useEffect9 } from "react";
3449
+ import React47, { useRef as useRef5, useReducer as useReducer2, useCallback as useCallback3, useEffect as useEffect9 } from "react";
3448
3450
 
3449
3451
  // src/components/pageRenderingEngine/nodes/InputControlNode.tsx
3450
3452
  import { jsx as jsx63 } from "react/jsx-runtime";
@@ -3523,7 +3525,7 @@ var FormContainerNode = (props) => {
3523
3525
  {
3524
3526
  }
3525
3527
  const SelectedNode = NodeTypes2[node2.type];
3526
- return /* @__PURE__ */ jsx64(React48.Fragment, { children: SelectedNode && node2.type == "input-control" && /* @__PURE__ */ jsx64(
3528
+ return /* @__PURE__ */ jsx64(React47.Fragment, { children: SelectedNode && node2.type == "input-control" && /* @__PURE__ */ jsx64(
3527
3529
  InputControlNode_default,
3528
3530
  {
3529
3531
  value: formState.inputValues[node2.name],
@@ -3538,7 +3540,7 @@ var FormContainerNode = (props) => {
3538
3540
  var FormContainerNode_default = FormContainerNode;
3539
3541
 
3540
3542
  // src/components/pageRenderingEngine/nodes/DivContainer.tsx
3541
- import React52 from "react";
3543
+ import React51 from "react";
3542
3544
 
3543
3545
  // src/components/utilities/AnimationUtility.tsx
3544
3546
  var AnimationUtility = class {
@@ -3868,8 +3870,8 @@ var PathUtility = class {
3868
3870
  var PathUtility_default = new PathUtility();
3869
3871
 
3870
3872
  // src/components/pageRenderingEngine/nodes/EnterAnimationClient.tsx
3871
- import React50, { useEffect as useEffect10, useRef as useRef6 } from "react";
3872
- import { Fragment as Fragment8, jsx as jsx66 } from "react/jsx-runtime";
3873
+ import React49, { useEffect as useEffect10, useRef as useRef6 } from "react";
3874
+ import { Fragment as Fragment9, jsx as jsx66 } from "react/jsx-runtime";
3873
3875
  function EnterAnimationClient({ hasEnterAnimation, children }) {
3874
3876
  const ref = useRef6(null);
3875
3877
  useEffect10(() => {
@@ -3888,14 +3890,14 @@ function EnterAnimationClient({ hasEnterAnimation, children }) {
3888
3890
  observer.observe(ref.current);
3889
3891
  return () => observer.disconnect();
3890
3892
  }, [hasEnterAnimation]);
3891
- return /* @__PURE__ */ jsx66(Fragment8, { children: children && // enforce passing the ref to Wrapper
3893
+ return /* @__PURE__ */ jsx66(Fragment9, { children: children && // enforce passing the ref to Wrapper
3892
3894
  //@ts-ignore
3893
- React50.cloneElement(children, { ref }) });
3895
+ React49.cloneElement(children, { ref }) });
3894
3896
  }
3895
3897
 
3896
3898
  // src/components/Slider.tsx
3897
- import React51, { useState as useState11, useEffect as useEffect11, Children, cloneElement } from "react";
3898
- import { Fragment as Fragment9, jsx as jsx67, jsxs as jsxs32 } from "react/jsx-runtime";
3899
+ import React50, { useState as useState11, useEffect as useEffect11, Children, cloneElement } from "react";
3900
+ import { Fragment as Fragment10, jsx as jsx67, jsxs as jsxs32 } from "react/jsx-runtime";
3899
3901
  var Slider = ({
3900
3902
  children,
3901
3903
  slidesToShow = 4,
@@ -3989,7 +3991,7 @@ var Slider = ({
3989
3991
  };
3990
3992
  const translateX = -currentSlide * (100 / slidesToShowState);
3991
3993
  const slides = Children.map(children, (child, index) => {
3992
- if (!React51.isValidElement(child)) return null;
3994
+ if (!React50.isValidElement(child)) return null;
3993
3995
  const childProps = child.props;
3994
3996
  const mergedClassName = `${childProps.className ?? ""} w-full`.trim();
3995
3997
  return /* @__PURE__ */ jsx67(
@@ -4033,7 +4035,7 @@ var Slider = ({
4033
4035
  children: slides
4034
4036
  }
4035
4037
  ),
4036
- show_arrows && /* @__PURE__ */ jsxs32(Fragment9, { children: [
4038
+ show_arrows && /* @__PURE__ */ jsxs32(Fragment10, { children: [
4037
4039
  /* @__PURE__ */ jsx67(
4038
4040
  ArrowButton,
4039
4041
  {
@@ -4408,7 +4410,7 @@ var DivContainer = async (props) => {
4408
4410
  function renderNode(node, props2, dataitem, key, href) {
4409
4411
  const SelectedNode = NodeTypes2[node.type];
4410
4412
  if (!SelectedNode) return null;
4411
- return /* @__PURE__ */ jsx69(React52.Fragment, { children: /* @__PURE__ */ jsx69(
4413
+ return /* @__PURE__ */ jsx69(React51.Fragment, { children: /* @__PURE__ */ jsx69(
4412
4414
  SelectedNode,
4413
4415
  {
4414
4416
  node,
@@ -4505,9 +4507,9 @@ var DivContainer = async (props) => {
4505
4507
  props.node.autoFormat && "auto-format",
4506
4508
  props.node.bgClass
4507
4509
  ].filter(Boolean).join(" ");
4508
- return /* @__PURE__ */ jsxs34(React52.Fragment, { children: [
4510
+ return /* @__PURE__ */ jsxs34(React51.Fragment, { children: [
4509
4511
  /* @__PURE__ */ jsx69("style", { dangerouslySetInnerHTML: { __html: cssResult.css + animationCSS } }),
4510
- /* @__PURE__ */ jsx69(EnterAnimationClient, { hasEnterAnimation: !!props.node.enterAnimation, children: /* @__PURE__ */ jsx69(React52.Fragment, { children: /* @__PURE__ */ jsx69(
4512
+ /* @__PURE__ */ jsx69(EnterAnimationClient, { hasEnterAnimation: !!props.node.enterAnimation, children: /* @__PURE__ */ jsx69(React51.Fragment, { children: /* @__PURE__ */ jsx69(
4511
4513
  Wrapper,
4512
4514
  {
4513
4515
  id: guid,
@@ -4516,7 +4518,7 @@ var DivContainer = async (props) => {
4516
4518
  ...wrapperProps,
4517
4519
  children: dataToRender.map(
4518
4520
  (item, idx) => item?.links?.view && renderLink ? renderChildren(props.node.children, props, item, idx, props.href ? void 0 : item?.links?.view)?.map(
4519
- (child, i) => /* @__PURE__ */ jsx69(React52.Fragment, { children: child }, i)
4521
+ (child, i) => /* @__PURE__ */ jsx69(React51.Fragment, { children: child }, i)
4520
4522
  ) : renderChildren(props.node.children, props, item, idx)
4521
4523
  )
4522
4524
  }
@@ -4555,11 +4557,11 @@ var PageBodyRenderer = (props) => {
4555
4557
  if (pageBodyTree && pageBodyTree.root) {
4556
4558
  rootNode = pageBodyTree.root;
4557
4559
  }
4558
- return /* @__PURE__ */ jsx70(React53.Fragment, { children: rootNode && rootNode?.children?.map((node, index) => {
4560
+ return /* @__PURE__ */ jsx70(React52.Fragment, { children: rootNode && rootNode?.children?.map((node, index) => {
4559
4561
  {
4560
4562
  }
4561
4563
  const SelectedNode = NodeTypes[node.type];
4562
- return /* @__PURE__ */ jsx70(React53.Fragment, { children: SelectedNode && /* @__PURE__ */ jsx70(React53.Fragment, { children: node.type == "layout-container" ? /* @__PURE__ */ jsx70(React53.Fragment, { children: /* @__PURE__ */ jsx70(
4564
+ return /* @__PURE__ */ jsx70(React52.Fragment, { children: SelectedNode && /* @__PURE__ */ jsx70(React52.Fragment, { children: node.type == "layout-container" ? /* @__PURE__ */ jsx70(React52.Fragment, { children: /* @__PURE__ */ jsx70(
4563
4565
  SelectedNode,
4564
4566
  {
4565
4567
  node,
@@ -4575,7 +4577,7 @@ var PageBodyRenderer = (props) => {
4575
4577
  resolveAssetUrl: props.resolveAssetUrl,
4576
4578
  dataMap: props.dataMap
4577
4579
  }
4578
- ) }) : /* @__PURE__ */ jsx70(React53.Fragment, { children: /* @__PURE__ */ jsx70(
4580
+ ) }) : /* @__PURE__ */ jsx70(React52.Fragment, { children: /* @__PURE__ */ jsx70(
4579
4581
  SelectedNode,
4580
4582
  {
4581
4583
  node,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@acoustte-digital-services/digitalstore-controls-dev",
3
- "version": "0.8.1-dev.20260323111546",
3
+ "version": "0.8.1-dev.20260323123345",
4
4
  "description": "Reusable React components",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",