@acoustte-digital-services/digitalstore-controls-dev 0.8.1-dev.20260324145831 → 0.8.1-dev.20260324170629

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.mjs CHANGED
@@ -1307,7 +1307,7 @@ var SelectWithSearchPanel = (props) => {
1307
1307
  const containerRef = useRef2(null);
1308
1308
  const [isCreateOpen, setIsCreateOpen] = useState5(false);
1309
1309
  const [formData, setFormData] = useState5({});
1310
- const getNestedValue2 = (obj, path) => {
1310
+ const getNestedValue3 = (obj, path) => {
1311
1311
  return path.split(".").reduce((acc, key) => acc?.[key], obj);
1312
1312
  };
1313
1313
  useEffect4(() => {
@@ -1345,7 +1345,7 @@ var SelectWithSearchPanel = (props) => {
1345
1345
  props.dataSourceDependsOn
1346
1346
  ]);
1347
1347
  const filteredItems = list?.filter((item) => {
1348
- const value = getNestedValue2(item, props.dataTextFieldName);
1348
+ const value = getNestedValue3(item, props.dataTextFieldName);
1349
1349
  return value?.toLowerCase().includes(searchTerm?.toLowerCase());
1350
1350
  });
1351
1351
  const playBeep = () => {
@@ -1376,7 +1376,7 @@ var SelectWithSearchPanel = (props) => {
1376
1376
  }, [searchTerm]);
1377
1377
  const handleSelect = (event, item) => {
1378
1378
  event.preventDefault();
1379
- setSearchTerm(getNestedValue2(item, props.dataTextFieldName));
1379
+ setSearchTerm(getNestedValue3(item, props.dataTextFieldName));
1380
1380
  if (props.callback) {
1381
1381
  const val = {};
1382
1382
  props.callback({
@@ -1526,7 +1526,7 @@ var SelectWithSearchPanel = (props) => {
1526
1526
  role: "option",
1527
1527
  tabIndex: -1,
1528
1528
  onMouseEnter: () => setHighlightedIndex(index),
1529
- children: /* @__PURE__ */ jsx27("span", { children: getNestedValue2(item, props.dataTextFieldName) })
1529
+ children: /* @__PURE__ */ jsx27("span", { children: getNestedValue3(item, props.dataTextFieldName) })
1530
1530
  }
1531
1531
  ) }, item[props.dataKeyFieldName])) : /* @__PURE__ */ jsx27("div", { className: "px-4 py-2 text-gray-500", children: "No results found" })
1532
1532
  }
@@ -2521,7 +2521,7 @@ var DataList = (props) => {
2521
2521
  var DataList_default = DataList;
2522
2522
 
2523
2523
  // src/components/pageRenderingEngine/PageBodyRenderer.tsx
2524
- import React49 from "react";
2524
+ import React50 from "react";
2525
2525
 
2526
2526
  // src/components/pageRenderingEngine/nodes/ParagraphNode.tsx
2527
2527
  import React36 from "react";
@@ -3028,42 +3028,391 @@ var HorizontalRuleNode = () => {
3028
3028
  var HorizontalRuleNode_default = HorizontalRuleNode;
3029
3029
 
3030
3030
  // src/components/pageRenderingEngine/nodes/ImageNode.tsx
3031
- import { Fragment as Fragment6, jsx as jsx55 } from "react/jsx-runtime";
3031
+ import React43 from "react";
3032
+
3033
+ // src/components/utilities/AssetUtility.tsx
3034
+ var AssetUtility = class {
3035
+ constructor() {
3036
+ }
3037
+ static resolveUrl(apiBaseUrl, url) {
3038
+ if (!url) return void 0;
3039
+ if (url.startsWith("http")) return url;
3040
+ if (!apiBaseUrl) return url;
3041
+ return `${apiBaseUrl}/digitalassets-management/${url}`;
3042
+ }
3043
+ };
3044
+ var AssetUtility_default = AssetUtility;
3045
+
3046
+ // src/components/HlsPlayer.tsx
3047
+ import React42, { useRef as useRef4, useEffect as useEffect8, useState as useState9, useCallback as useCallback3 } from "react";
3048
+ import Hls from "hls.js";
3049
+ import { jsx as jsx55, jsxs as jsxs27 } from "react/jsx-runtime";
3050
+ var HlsPlayer = React42.memo(
3051
+ ({
3052
+ assetUrl,
3053
+ posterUrl,
3054
+ intrinsicWidth,
3055
+ intrinsicHeight,
3056
+ showControls = true,
3057
+ loop = false,
3058
+ playOptions = "autoplay"
3059
+ }) => {
3060
+ const videoRef = useRef4(null);
3061
+ const hlsRef = useRef4(null);
3062
+ const [isPlaying, setIsPlaying] = useState9(playOptions === "autoplay");
3063
+ const [isHovered, setIsHovered] = useState9(false);
3064
+ const [isMobile, setIsMobile] = useState9(false);
3065
+ const wasManuallyPausedRef = useRef4(false);
3066
+ useEffect8(() => {
3067
+ const checkMobile = () => {
3068
+ const hasTouch = "ontouchstart" in window || navigator.maxTouchPoints > 0;
3069
+ const isSmallScreen = window.innerWidth <= 768;
3070
+ const ua = navigator.userAgent.toLowerCase();
3071
+ const isMobileUA = /android|iphone|ipad|ipod/i.test(ua);
3072
+ setIsMobile(hasTouch || isSmallScreen || isMobileUA);
3073
+ };
3074
+ checkMobile();
3075
+ window.addEventListener("resize", checkMobile);
3076
+ return () => window.removeEventListener("resize", checkMobile);
3077
+ }, []);
3078
+ useEffect8(() => {
3079
+ const v = videoRef.current;
3080
+ if (!v || !assetUrl) return;
3081
+ if (hlsRef.current) {
3082
+ hlsRef.current.destroy();
3083
+ hlsRef.current = null;
3084
+ }
3085
+ if (Hls.isSupported()) {
3086
+ const hls = new Hls();
3087
+ hls.loadSource(assetUrl);
3088
+ hls.attachMedia(v);
3089
+ hls.on(Hls.Events.MANIFEST_PARSED, () => {
3090
+ if (isPlaying && !wasManuallyPausedRef.current) {
3091
+ v.play().catch(console.error);
3092
+ }
3093
+ });
3094
+ hlsRef.current = hls;
3095
+ } else if (v.canPlayType("application/vnd.apple.mpegurl")) {
3096
+ v.src = assetUrl;
3097
+ }
3098
+ }, [assetUrl, isPlaying]);
3099
+ const handlePlayPause = useCallback3(() => {
3100
+ const v = videoRef.current;
3101
+ if (!v) return;
3102
+ if (v.paused) {
3103
+ wasManuallyPausedRef.current = false;
3104
+ v.play().then(() => setIsPlaying(true));
3105
+ } else {
3106
+ wasManuallyPausedRef.current = true;
3107
+ v.pause();
3108
+ setIsPlaying(false);
3109
+ }
3110
+ }, []);
3111
+ const handleMouseEnter = useCallback3(() => {
3112
+ if (isMobile) return;
3113
+ setIsHovered(true);
3114
+ if (playOptions === "playOnHover" && videoRef.current && !wasManuallyPausedRef.current) {
3115
+ videoRef.current.play().then(() => setIsPlaying(true));
3116
+ }
3117
+ }, [playOptions, isMobile]);
3118
+ const handleMouseLeave = useCallback3(() => {
3119
+ if (isMobile) return;
3120
+ setIsHovered(false);
3121
+ if (playOptions === "playOnHover" && videoRef.current) {
3122
+ videoRef.current.pause();
3123
+ videoRef.current.currentTime = 0;
3124
+ setIsPlaying(false);
3125
+ }
3126
+ }, [playOptions, isMobile]);
3127
+ return /* @__PURE__ */ jsxs27(
3128
+ "div",
3129
+ {
3130
+ className: "relative w-full aspect-video bg-black",
3131
+ onMouseEnter: handleMouseEnter,
3132
+ onMouseLeave: handleMouseLeave,
3133
+ children: [
3134
+ /* @__PURE__ */ jsx55(
3135
+ "video",
3136
+ {
3137
+ ref: videoRef,
3138
+ className: "w-full h-full object-contain",
3139
+ poster: posterUrl,
3140
+ controls: showControls && (isMobile || isPlaying),
3141
+ muted: playOptions === "autoplay" || playOptions === "playOnHover",
3142
+ autoPlay: playOptions === "autoplay",
3143
+ loop,
3144
+ playsInline: true,
3145
+ onClick: !isMobile && !isPlaying ? handlePlayPause : void 0
3146
+ }
3147
+ ),
3148
+ !isMobile && playOptions === "playOnHover" && posterUrl && /* @__PURE__ */ jsx55(
3149
+ "img",
3150
+ {
3151
+ src: posterUrl,
3152
+ width: intrinsicWidth,
3153
+ height: intrinsicHeight,
3154
+ alt: "poster",
3155
+ className: `absolute inset-0 object-cover transition-opacity ${isHovered ? "opacity-0" : "opacity-100"}`
3156
+ }
3157
+ ),
3158
+ !isMobile && !isPlaying && /* @__PURE__ */ jsx55(
3159
+ "div",
3160
+ {
3161
+ className: "absolute inset-0 flex items-center justify-center cursor-pointer",
3162
+ onClick: handlePlayPause,
3163
+ children: "\u25B6"
3164
+ }
3165
+ )
3166
+ ]
3167
+ }
3168
+ );
3169
+ }
3170
+ );
3171
+ HlsPlayer.displayName = "HlsPlayer";
3172
+ var HlsPlayer_default = HlsPlayer;
3173
+
3174
+ // src/components/DeviceAssetSelector.tsx
3175
+ import { jsx as jsx56 } from "react/jsx-runtime";
3176
+ var DeviceAssetSelector = ({
3177
+ assets,
3178
+ apiBaseUrl,
3179
+ session,
3180
+ // This should receive the session
3181
+ width,
3182
+ tag,
3183
+ customProps,
3184
+ nodeProps,
3185
+ device
3186
+ }) => {
3187
+ console.log("\u{1F511} Session in DeviceAssetSelector:", session);
3188
+ const targetTag = tag || nodeProps?.tag;
3189
+ const selectAssetByDevice = (assets2, currentDevice) => {
3190
+ if (!assets2 || assets2.length === 0) return void 0;
3191
+ const exactMatch = assets2.find((asset) => asset.device === currentDevice);
3192
+ if (exactMatch) return exactMatch;
3193
+ const noDeviceMatch = assets2.find((asset) => !asset.device || asset.device === "");
3194
+ if (noDeviceMatch) return noDeviceMatch;
3195
+ return void 0;
3196
+ };
3197
+ const selectAssetByTagAndDevice = (assets2, currentDevice, targetTag2) => {
3198
+ if (!assets2 || assets2.length === 0) return void 0;
3199
+ if (!targetTag2) return selectAssetByDevice(assets2, currentDevice);
3200
+ const taggedAssets = assets2.filter((asset) => asset.tag === targetTag2);
3201
+ if (taggedAssets.length === 0) {
3202
+ return selectAssetByDevice(assets2, currentDevice);
3203
+ }
3204
+ const exactTaggedMatch = taggedAssets.find((asset) => asset.device === currentDevice);
3205
+ if (exactTaggedMatch) return exactTaggedMatch;
3206
+ const noDeviceTaggedMatch = taggedAssets.find((asset) => !asset.device || asset.device === "");
3207
+ if (noDeviceTaggedMatch) return noDeviceTaggedMatch;
3208
+ return void 0;
3209
+ };
3210
+ const selectAsset = () => {
3211
+ if (!assets || assets.length === 0) return void 0;
3212
+ if (targetTag) {
3213
+ return selectAssetByTagAndDevice(assets, device, targetTag);
3214
+ }
3215
+ return selectAssetByDevice(assets, device);
3216
+ };
3217
+ const selectedAsset = selectAsset();
3218
+ if (!selectedAsset) {
3219
+ console.warn("No suitable asset found for device:", device, "and tag:", targetTag);
3220
+ return null;
3221
+ }
3222
+ const resolvedAssetUrl = AssetUtility_default.resolveUrl(apiBaseUrl, selectedAsset.assetUrl);
3223
+ const resolvedThumbnailUrl = selectedAsset.posterUrl ? AssetUtility_default.resolveUrl(apiBaseUrl, selectedAsset.posterUrl) : void 0;
3224
+ console.log("Selected Asset:", resolvedThumbnailUrl);
3225
+ const title = selectedAsset.title || nodeProps?.title;
3226
+ const intrinsicWidth = selectedAsset.intrinsicWidth?.toString();
3227
+ const intrinsicHeight = selectedAsset.intrinsicHeight?.toString();
3228
+ const isHls = resolvedAssetUrl?.endsWith(".m3u8");
3229
+ const showControls = customProps?.showControls ?? nodeProps?.showControls === "true";
3230
+ const loop = customProps?.loop ?? nodeProps?.loop === "true";
3231
+ const playOptions = customProps?.playOptions ?? nodeProps?.playOptions;
3232
+ const styles = {};
3233
+ if (nodeProps?.height) {
3234
+ styles.height = nodeProps.height;
3235
+ }
3236
+ if (nodeProps?.borderRadius) {
3237
+ styles.borderRadius = nodeProps.borderRadius;
3238
+ }
3239
+ if (nodeProps?.width) {
3240
+ styles.width = nodeProps.width;
3241
+ }
3242
+ const FormatClass = {
3243
+ "center": "justify-center",
3244
+ "left": "justify-start",
3245
+ "right": "justify-end"
3246
+ };
3247
+ const formatClasses = FormatClass[nodeProps?.format || ""] || "";
3248
+ const renderMedia = () => {
3249
+ if (isHls) {
3250
+ return /* @__PURE__ */ jsx56(
3251
+ HlsPlayer_default,
3252
+ {
3253
+ assetUrl: resolvedAssetUrl,
3254
+ posterUrl: resolvedThumbnailUrl,
3255
+ intrinsicWidth,
3256
+ intrinsicHeight,
3257
+ showControls,
3258
+ loop,
3259
+ playOptions
3260
+ }
3261
+ );
3262
+ } else {
3263
+ return (
3264
+ /* eslint-disable-next-line @next/next/no-img-element */
3265
+ /* @__PURE__ */ jsx56(
3266
+ "img",
3267
+ {
3268
+ style: styles,
3269
+ loading: "lazy",
3270
+ className: "object-cover w-full",
3271
+ src: resolvedAssetUrl,
3272
+ width: selectedAsset.intrinsicWidth,
3273
+ alt: title || "Asset image",
3274
+ height: selectedAsset.intrinsicHeight
3275
+ }
3276
+ )
3277
+ );
3278
+ }
3279
+ };
3280
+ if (width) {
3281
+ return /* @__PURE__ */ jsx56("div", { style: { width }, children: renderMedia() });
3282
+ }
3283
+ if (nodeProps?.format) {
3284
+ return /* @__PURE__ */ jsx56("div", { className: `flex ${formatClasses}`, children: renderMedia() });
3285
+ }
3286
+ return renderMedia();
3287
+ };
3288
+ var DeviceAssetSelector_default = DeviceAssetSelector;
3289
+
3290
+ // src/components/pageRenderingEngine/nodes/ImageNode.tsx
3291
+ import { Fragment as Fragment6, jsx as jsx57 } from "react/jsx-runtime";
3292
+ var getNestedValue = (obj, path) => {
3293
+ if (!obj || !path) return void 0;
3294
+ return path.split(".").reduce((current, key) => {
3295
+ return current && current[key] !== void 0 ? current[key] : void 0;
3296
+ }, obj);
3297
+ };
3032
3298
  var ImageNode = (props) => {
3033
- const { node, assetBaseUrl = "" } = props;
3034
- if (!node.imageUrl) return null;
3299
+ let assets;
3035
3300
  let imageUrl;
3036
- if (node.imageUrl.startsWith("http")) {
3037
- imageUrl = node.imageUrl;
3301
+ let posterUrl;
3302
+ const currentDevice = props.device;
3303
+ if (props.node.device) {
3304
+ const nodeDevice = props.node.device;
3305
+ if (nodeDevice !== currentDevice) {
3306
+ return null;
3307
+ }
3308
+ }
3309
+ console.log("ImageNode device / currentDevice:", props.node.device, currentDevice);
3310
+ if (props.node.imageUrl.startsWith("http")) {
3311
+ imageUrl = props.node.imageUrl;
3312
+ posterUrl = AssetUtility_default.resolveUrl(
3313
+ props.assetBaseUrl,
3314
+ props.node.posterUrl
3315
+ );
3316
+ } else if (props.dataitem && props.node.datafield) {
3317
+ const image = getNestedValue(props.dataitem, props.node.datafield);
3318
+ console.log("ImageNode Datafield Image:", image);
3319
+ try {
3320
+ if (typeof image === "string") {
3321
+ assets = JSON.parse(image);
3322
+ } else if (Array.isArray(image)) {
3323
+ assets = image;
3324
+ } else if (image && typeof image === "object") {
3325
+ assets = [image];
3326
+ }
3327
+ } catch (error) {
3328
+ console.error("Error parsing assets in ImageNode:", error);
3329
+ }
3330
+ if (assets && assets.length > 0) {
3331
+ return /* @__PURE__ */ jsx57(Fragment6, { children: /* @__PURE__ */ jsx57(
3332
+ DeviceAssetSelector_default,
3333
+ {
3334
+ device: props.device,
3335
+ assets,
3336
+ apiBaseUrl: props.apiBaseUrl,
3337
+ session: props.session,
3338
+ nodeProps: {
3339
+ title: props.node.title,
3340
+ showControls: props.node.showControls,
3341
+ loop: props.node.loop,
3342
+ playOptions: props.node.playOptions,
3343
+ borderRadius: props.node.borderRadius,
3344
+ width: props.node.width,
3345
+ height: props.node.height,
3346
+ format: props.node.format,
3347
+ tag: props.node.tag,
3348
+ // Add tag to ImageNode if needed
3349
+ placementCode: props.node.placementCode
3350
+ }
3351
+ }
3352
+ ) });
3353
+ } else {
3354
+ imageUrl = AssetUtility_default.resolveUrl(props.assetBaseUrl, props.node.imageUrl);
3355
+ posterUrl = AssetUtility_default.resolveUrl(props.assetBaseUrl, props.node.posterUrl);
3356
+ }
3038
3357
  } else {
3039
- imageUrl = assetBaseUrl ? `${assetBaseUrl}/${node.imageUrl}` : node.imageUrl;
3358
+ imageUrl = AssetUtility_default.resolveUrl(props.assetBaseUrl, props.node.imageUrl);
3359
+ posterUrl = AssetUtility_default.resolveUrl(props.assetBaseUrl, props.node.posterUrl);
3040
3360
  }
3041
- return /* @__PURE__ */ jsx55(Fragment6, { children: node.width ? /* @__PURE__ */ jsx55("div", { style: { width: node.width }, children: /* @__PURE__ */ jsx55(
3042
- "img",
3043
- {
3044
- loading: "lazy",
3045
- className: "object-cover",
3046
- src: imageUrl,
3047
- width: node.intrinsicWidth,
3048
- height: node.intrinsicHeight,
3049
- alt: node.title
3050
- }
3051
- ) }) : /* @__PURE__ */ jsx55(
3052
- "img",
3053
- {
3054
- loading: "lazy",
3055
- className: "object-cover",
3056
- src: imageUrl,
3057
- width: node.intrinsicWidth,
3058
- height: node.intrinsicHeight,
3059
- alt: node.title
3361
+ console.log("ImageNode Assets:", assets);
3362
+ if (!imageUrl) {
3363
+ return null;
3364
+ }
3365
+ const styles = {};
3366
+ if (props.node.height) styles.height = props.node.height;
3367
+ if (props.node.borderRadius) styles.borderRadius = props.node.borderRadius;
3368
+ if (props.node.width) styles.width = props.node.width;
3369
+ const FormatClass = {
3370
+ "center": "justify-center",
3371
+ "left": "justify-start",
3372
+ "right": "justify-end"
3373
+ };
3374
+ {
3375
+ }
3376
+ const formatClasses = FormatClass[props.node.format] || "";
3377
+ const isHls = imageUrl?.endsWith(".m3u8");
3378
+ const renderMedia = () => {
3379
+ if (isHls) {
3380
+ return /* @__PURE__ */ jsx57(
3381
+ HlsPlayer_default,
3382
+ {
3383
+ assetUrl: imageUrl,
3384
+ posterUrl,
3385
+ intrinsicWidth: props.node.intrinsicWidth,
3386
+ intrinsicHeight: props.node.intrinsicHeight,
3387
+ showControls: props.node.showControls === "true",
3388
+ loop: props.node.loop === "true",
3389
+ playOptions: props.node.playOptions
3390
+ }
3391
+ );
3392
+ } else {
3393
+ return /* @__PURE__ */ jsx57(React43.Fragment, { children: /* @__PURE__ */ jsx57(
3394
+ "img",
3395
+ {
3396
+ style: styles,
3397
+ loading: "lazy",
3398
+ className: "object-cover",
3399
+ src: imageUrl,
3400
+ width: props.node.intrinsicWidth,
3401
+ alt: props.node.title,
3402
+ height: props.node.intrinsicHeight
3403
+ }
3404
+ ) });
3060
3405
  }
3061
- ) });
3406
+ };
3407
+ if (props.node.width) {
3408
+ return /* @__PURE__ */ jsx57("div", { className: `flex ${formatClasses}`, children: renderMedia() });
3409
+ }
3410
+ return renderMedia();
3062
3411
  };
3063
3412
  var ImageNode_default = ImageNode;
3064
3413
 
3065
3414
  // src/components/pageRenderingEngine/nodes/WidgetNode.tsx
3066
- import { Fragment as Fragment7, jsx as jsx56, jsxs as jsxs27 } from "react/jsx-runtime";
3415
+ import { Fragment as Fragment7, jsx as jsx58, jsxs as jsxs28 } from "react/jsx-runtime";
3067
3416
  var WidgetNode = (props) => {
3068
3417
  const getWidgetParameters = () => {
3069
3418
  const widgetInputParameters = {
@@ -3120,14 +3469,14 @@ var WidgetNode = (props) => {
3120
3469
  };
3121
3470
  const widgetCode = props.node?.widgetCode;
3122
3471
  if (!widgetCode) {
3123
- return /* @__PURE__ */ jsx56(Fragment7, { children: "Invalid widget" });
3472
+ return /* @__PURE__ */ jsx58(Fragment7, { children: "Invalid widget" });
3124
3473
  }
3125
3474
  const SelectedWidget = getWidget(widgetCode);
3126
3475
  if (!SelectedWidget) {
3127
3476
  if (process.env.NODE_ENV !== "production") {
3128
3477
  console.warn("Widget not found:", widgetCode);
3129
3478
  }
3130
- return /* @__PURE__ */ jsxs27(Fragment7, { children: [
3479
+ return /* @__PURE__ */ jsxs28(Fragment7, { children: [
3131
3480
  "Widget not found: ",
3132
3481
  widgetCode
3133
3482
  ] });
@@ -3135,7 +3484,7 @@ var WidgetNode = (props) => {
3135
3484
  const widgetParams = getWidgetParameters();
3136
3485
  return (
3137
3486
  // eslint-disable-next-line react-hooks/static-components
3138
- /* @__PURE__ */ jsx56(
3487
+ /* @__PURE__ */ jsx58(
3139
3488
  SelectedWidget,
3140
3489
  {
3141
3490
  params: widgetParams,
@@ -3151,12 +3500,12 @@ var WidgetNode = (props) => {
3151
3500
  var WidgetNode_default = WidgetNode;
3152
3501
 
3153
3502
  // src/components/pageRenderingEngine/nodes/FormContainerNode.tsx
3154
- import React42, { useRef as useRef4, useReducer as useReducer2, useCallback as useCallback3, useEffect as useEffect8 } from "react";
3503
+ import React44, { useRef as useRef5, useReducer as useReducer2, useCallback as useCallback4, useEffect as useEffect9 } from "react";
3155
3504
 
3156
3505
  // src/components/pageRenderingEngine/nodes/InputControlNode.tsx
3157
- import { jsx as jsx57 } from "react/jsx-runtime";
3506
+ import { jsx as jsx59 } from "react/jsx-runtime";
3158
3507
  var InputControlNode = (props) => {
3159
- return /* @__PURE__ */ jsx57("div", { children: /* @__PURE__ */ jsx57(
3508
+ return /* @__PURE__ */ jsx59("div", { children: /* @__PURE__ */ jsx59(
3160
3509
  InputControl_default,
3161
3510
  {
3162
3511
  name: props.node.name,
@@ -3390,22 +3739,22 @@ var ServiceClient = class {
3390
3739
  var ServiceClient_default = ServiceClient;
3391
3740
 
3392
3741
  // src/components/pageRenderingEngine/nodes/FormContainerNode.tsx
3393
- import { jsx as jsx58, jsxs as jsxs28 } from "react/jsx-runtime";
3742
+ import { jsx as jsx60, jsxs as jsxs29 } from "react/jsx-runtime";
3394
3743
  var FormContainerNode = (props) => {
3395
3744
  const NodeTypes2 = {
3396
3745
  ["input-control"]: InputControlNode_default
3397
3746
  };
3398
3747
  const { node } = props;
3399
- const formRef = useRef4(null);
3748
+ const formRef = useRef5(null);
3400
3749
  const initialState = {
3401
3750
  inputValues: {},
3402
3751
  lastPropertyChanged: ""
3403
3752
  };
3404
3753
  const [formState, dispatch] = useReducer2(FormReducer_default, initialState);
3405
- const handleInputChange = useCallback3((updatedValues) => {
3754
+ const handleInputChange = useCallback4((updatedValues) => {
3406
3755
  dispatch({ type: FORM_INPUT_UPDATE, name: updatedValues.name, value: updatedValues.value });
3407
3756
  }, [dispatch]);
3408
- useEffect8(() => {
3757
+ useEffect9(() => {
3409
3758
  const fetchInitialData = async () => {
3410
3759
  const client = new ServiceClient_default(props.apiBaseUrl, props.session);
3411
3760
  const response = await client.getSingle(props.node.dataFetchApi, props.routeParameters);
@@ -3420,12 +3769,12 @@ var FormContainerNode = (props) => {
3420
3769
  };
3421
3770
  fetchInitialData();
3422
3771
  }, [props.apiBaseUrl, props.node, props.session, props.routeParameters]);
3423
- return /* @__PURE__ */ jsxs28("form", { className: "group space-y-6 pb-6 overflow-y-auto", noValidate: true, ref: formRef, children: [
3772
+ return /* @__PURE__ */ jsxs29("form", { className: "group space-y-6 pb-6 overflow-y-auto", noValidate: true, ref: formRef, children: [
3424
3773
  node.children && node.children.map((node2, index) => {
3425
3774
  {
3426
3775
  }
3427
3776
  const SelectedNode = NodeTypes2[node2.type];
3428
- return /* @__PURE__ */ jsx58(React42.Fragment, { children: SelectedNode && node2.type == "input-control" && /* @__PURE__ */ jsx58(
3777
+ return /* @__PURE__ */ jsx60(React44.Fragment, { children: SelectedNode && node2.type == "input-control" && /* @__PURE__ */ jsx60(
3429
3778
  InputControlNode_default,
3430
3779
  {
3431
3780
  value: formState.inputValues[node2.name],
@@ -3434,51 +3783,51 @@ var FormContainerNode = (props) => {
3434
3783
  }
3435
3784
  ) }, index);
3436
3785
  }),
3437
- node.children.length == 0 && /* @__PURE__ */ jsx58("div", { className: "py-0.5 lg:py-1.5" })
3786
+ node.children.length == 0 && /* @__PURE__ */ jsx60("div", { className: "py-0.5 lg:py-1.5" })
3438
3787
  ] });
3439
3788
  };
3440
3789
  var FormContainerNode_default = FormContainerNode;
3441
3790
 
3442
3791
  // src/components/pageRenderingEngine/nodes/DivContainer.tsx
3443
- import React48 from "react";
3792
+ import React49 from "react";
3444
3793
 
3445
3794
  // src/components/pageRenderingEngine/nodes/IframeClient.tsx
3446
- import React44, { useEffect as useEffect9, useRef as useRef5, useState as useState9 } from "react";
3795
+ import React46, { useEffect as useEffect10, useRef as useRef6, useState as useState10 } from "react";
3447
3796
 
3448
3797
  // src/components/IFrameLoaderView.tsx
3449
- import React43 from "react";
3450
- import { jsx as jsx59, jsxs as jsxs29 } from "react/jsx-runtime";
3798
+ import React45 from "react";
3799
+ import { jsx as jsx61, jsxs as jsxs30 } from "react/jsx-runtime";
3451
3800
  var IFrameLoaderView = (props) => {
3452
- return /* @__PURE__ */ jsxs29(React43.Fragment, { children: [
3453
- props.isDataFound == null && /* @__PURE__ */ jsx59("div", { className: "", children: /* @__PURE__ */ jsxs29("div", { className: "mt-4 bg-gray-200 rounded-md p-4 animate-pulse", children: [
3454
- /* @__PURE__ */ jsxs29("div", { className: "flex items-center mb-4", children: [
3455
- /* @__PURE__ */ jsx59("div", { className: "bg-gray-300 h-8 w-8 rounded-full animate-pulse" }),
3456
- /* @__PURE__ */ jsxs29("div", { className: "ml-2", children: [
3457
- /* @__PURE__ */ jsx59("div", { className: "bg-gray-300 h-3 w-16 animate-pulse" }),
3458
- /* @__PURE__ */ jsx59("div", { className: "bg-gray-300 h-2 w-12 animate-pulse" })
3801
+ return /* @__PURE__ */ jsxs30(React45.Fragment, { children: [
3802
+ props.isDataFound == null && /* @__PURE__ */ jsx61("div", { className: "", children: /* @__PURE__ */ jsxs30("div", { className: "mt-4 bg-gray-200 rounded-md p-4 animate-pulse", children: [
3803
+ /* @__PURE__ */ jsxs30("div", { className: "flex items-center mb-4", children: [
3804
+ /* @__PURE__ */ jsx61("div", { className: "bg-gray-300 h-8 w-8 rounded-full animate-pulse" }),
3805
+ /* @__PURE__ */ jsxs30("div", { className: "ml-2", children: [
3806
+ /* @__PURE__ */ jsx61("div", { className: "bg-gray-300 h-3 w-16 animate-pulse" }),
3807
+ /* @__PURE__ */ jsx61("div", { className: "bg-gray-300 h-2 w-12 animate-pulse" })
3459
3808
  ] })
3460
3809
  ] }),
3461
- /* @__PURE__ */ jsxs29("div", { className: "grid grid-cols-3 gap-4 mt-6", children: [
3462
- /* @__PURE__ */ jsxs29("div", { className: "animate-pulse", children: [
3463
- /* @__PURE__ */ jsx59("div", { className: "bg-gray-300 rounded-full h-3 w-12 mb-2" }),
3464
- /* @__PURE__ */ jsx59("div", { className: "bg-gray-300 rounded-full h-3 w-24 mb-2" }),
3465
- /* @__PURE__ */ jsx59("div", { className: "bg-gray-300 rounded-full h-3 w-32 mb-2" }),
3466
- /* @__PURE__ */ jsx59("div", { className: "bg-gray-300 rounded-full h-3 w-16 mb-2" }),
3467
- /* @__PURE__ */ jsx59("div", { className: "bg-gray-300 rounded-full h-3 w-28 mb-2" })
3810
+ /* @__PURE__ */ jsxs30("div", { className: "grid grid-cols-3 gap-4 mt-6", children: [
3811
+ /* @__PURE__ */ jsxs30("div", { className: "animate-pulse", children: [
3812
+ /* @__PURE__ */ jsx61("div", { className: "bg-gray-300 rounded-full h-3 w-12 mb-2" }),
3813
+ /* @__PURE__ */ jsx61("div", { className: "bg-gray-300 rounded-full h-3 w-24 mb-2" }),
3814
+ /* @__PURE__ */ jsx61("div", { className: "bg-gray-300 rounded-full h-3 w-32 mb-2" }),
3815
+ /* @__PURE__ */ jsx61("div", { className: "bg-gray-300 rounded-full h-3 w-16 mb-2" }),
3816
+ /* @__PURE__ */ jsx61("div", { className: "bg-gray-300 rounded-full h-3 w-28 mb-2" })
3468
3817
  ] }),
3469
- /* @__PURE__ */ jsxs29("div", { className: "animate-pulse", children: [
3470
- /* @__PURE__ */ jsx59("div", { className: "bg-gray-300 rounded-full h-3 w-12 mb-2" }),
3471
- /* @__PURE__ */ jsx59("div", { className: "bg-gray-300 rounded-full h-3 w-24 mb-2" }),
3472
- /* @__PURE__ */ jsx59("div", { className: "bg-gray-300 rounded-full h-3 w-32 mb-2" }),
3473
- /* @__PURE__ */ jsx59("div", { className: "bg-gray-300 rounded-full h-3 w-16 mb-2" }),
3474
- /* @__PURE__ */ jsx59("div", { className: "bg-gray-300 rounded-full h-3 w-28 mb-2" })
3818
+ /* @__PURE__ */ jsxs30("div", { className: "animate-pulse", children: [
3819
+ /* @__PURE__ */ jsx61("div", { className: "bg-gray-300 rounded-full h-3 w-12 mb-2" }),
3820
+ /* @__PURE__ */ jsx61("div", { className: "bg-gray-300 rounded-full h-3 w-24 mb-2" }),
3821
+ /* @__PURE__ */ jsx61("div", { className: "bg-gray-300 rounded-full h-3 w-32 mb-2" }),
3822
+ /* @__PURE__ */ jsx61("div", { className: "bg-gray-300 rounded-full h-3 w-16 mb-2" }),
3823
+ /* @__PURE__ */ jsx61("div", { className: "bg-gray-300 rounded-full h-3 w-28 mb-2" })
3475
3824
  ] }),
3476
- /* @__PURE__ */ jsxs29("div", { className: "animate-pulse", children: [
3477
- /* @__PURE__ */ jsx59("div", { className: "bg-gray-300 rounded-full h-3 w-12 mb-2" }),
3478
- /* @__PURE__ */ jsx59("div", { className: "bg-gray-300 rounded-full h-3 w-24 mb-2" }),
3479
- /* @__PURE__ */ jsx59("div", { className: "bg-gray-300 rounded-full h-3 w-32 mb-2" }),
3480
- /* @__PURE__ */ jsx59("div", { className: "bg-gray-300 rounded-full h-3 w-16 mb-2" }),
3481
- /* @__PURE__ */ jsx59("div", { className: "bg-gray-300 rounded-full h-3 w-28 mb-2" })
3825
+ /* @__PURE__ */ jsxs30("div", { className: "animate-pulse", children: [
3826
+ /* @__PURE__ */ jsx61("div", { className: "bg-gray-300 rounded-full h-3 w-12 mb-2" }),
3827
+ /* @__PURE__ */ jsx61("div", { className: "bg-gray-300 rounded-full h-3 w-24 mb-2" }),
3828
+ /* @__PURE__ */ jsx61("div", { className: "bg-gray-300 rounded-full h-3 w-32 mb-2" }),
3829
+ /* @__PURE__ */ jsx61("div", { className: "bg-gray-300 rounded-full h-3 w-16 mb-2" }),
3830
+ /* @__PURE__ */ jsx61("div", { className: "bg-gray-300 rounded-full h-3 w-28 mb-2" })
3482
3831
  ] })
3483
3832
  ] })
3484
3833
  ] }) }),
@@ -3488,12 +3837,12 @@ var IFrameLoaderView = (props) => {
3488
3837
  var IFrameLoaderView_default = IFrameLoaderView;
3489
3838
 
3490
3839
  // src/components/pageRenderingEngine/nodes/IframeClient.tsx
3491
- import { jsx as jsx60 } from "react/jsx-runtime";
3840
+ import { jsx as jsx62 } from "react/jsx-runtime";
3492
3841
  var IframeClient = ({ src }) => {
3493
- const iframeRef = useRef5(null);
3494
- const [iframeHeight, setIframeHeight] = useState9("100%");
3495
- const [isDataFound, setIsDataFound] = useState9(null);
3496
- useEffect9(() => {
3842
+ const iframeRef = useRef6(null);
3843
+ const [iframeHeight, setIframeHeight] = useState10("100%");
3844
+ const [isDataFound, setIsDataFound] = useState10(null);
3845
+ useEffect10(() => {
3497
3846
  const handleReceiveMessage = (event) => {
3498
3847
  const eventName = event?.data?.eventName;
3499
3848
  const payload = event?.data?.payload;
@@ -3508,7 +3857,7 @@ var IframeClient = ({ src }) => {
3508
3857
  window.addEventListener("message", handleReceiveMessage);
3509
3858
  return () => window.removeEventListener("message", handleReceiveMessage);
3510
3859
  }, []);
3511
- useEffect9(() => {
3860
+ useEffect10(() => {
3512
3861
  const handleResize = () => {
3513
3862
  if (iframeRef.current) {
3514
3863
  iframeRef.current.contentWindow?.postMessage({ eventName: "RESIZE" }, "*");
@@ -3520,7 +3869,7 @@ var IframeClient = ({ src }) => {
3520
3869
  const handleIframeLoad = () => {
3521
3870
  setIsDataFound(true);
3522
3871
  };
3523
- return /* @__PURE__ */ jsx60(React44.Fragment, { children: /* @__PURE__ */ jsx60(IFrameLoaderView_default, { isDataFound, children: /* @__PURE__ */ jsx60(
3872
+ return /* @__PURE__ */ jsx62(React46.Fragment, { children: /* @__PURE__ */ jsx62(IFrameLoaderView_default, { isDataFound, children: /* @__PURE__ */ jsx62(
3524
3873
  "iframe",
3525
3874
  {
3526
3875
  ref: iframeRef,
@@ -3535,7 +3884,7 @@ var IframeClient = ({ src }) => {
3535
3884
  var IframeClient_default = IframeClient;
3536
3885
 
3537
3886
  // src/components/pageRenderingEngine/nodes/EmbedNode.tsx
3538
- import { jsx as jsx61 } from "react/jsx-runtime";
3887
+ import { jsx as jsx63 } from "react/jsx-runtime";
3539
3888
  var EmbedNode = (props) => {
3540
3889
  let src;
3541
3890
  if (props.node.provider == "youtube") {
@@ -3545,26 +3894,13 @@ var EmbedNode = (props) => {
3545
3894
  } else {
3546
3895
  src = props.node.embedSrc;
3547
3896
  }
3548
- return /* @__PURE__ */ jsx61("div", { className: "aspect-video", children: src && /* @__PURE__ */ jsx61(IframeClient_default, { src }) });
3897
+ return /* @__PURE__ */ jsx63("div", { className: "aspect-video", children: src && /* @__PURE__ */ jsx63(IframeClient_default, { src }) });
3549
3898
  };
3550
3899
  var EmbedNode_default = EmbedNode;
3551
3900
 
3552
- // src/components/utilities/AssetUtility.tsx
3553
- var AssetUtility = class {
3554
- constructor() {
3555
- }
3556
- static resolveUrl(apiBaseUrl, url) {
3557
- if (!url) return void 0;
3558
- if (url.startsWith("http")) return url;
3559
- if (!apiBaseUrl) return url;
3560
- return `${apiBaseUrl}/digitalassets-management/${url}`;
3561
- }
3562
- };
3563
- var AssetUtility_default = AssetUtility;
3564
-
3565
3901
  // src/components/Slider.tsx
3566
- import React45, { useState as useState10, useEffect as useEffect10, Children, cloneElement } from "react";
3567
- import { Fragment as Fragment8, jsx as jsx62, jsxs as jsxs30 } from "react/jsx-runtime";
3902
+ import React47, { useState as useState11, useEffect as useEffect11, Children, cloneElement } from "react";
3903
+ import { Fragment as Fragment8, jsx as jsx64, jsxs as jsxs31 } from "react/jsx-runtime";
3568
3904
  var Slider = ({
3569
3905
  children,
3570
3906
  slidesToShow = 4,
@@ -3582,13 +3918,13 @@ var Slider = ({
3582
3918
  pillStyle = "cumulative",
3583
3919
  progressPosition = "bottom"
3584
3920
  }) => {
3585
- const [currentSlide, setCurrentSlide] = useState10(0);
3586
- const [transition, setTransition] = useState10(true);
3587
- const [slidesToShowState, setSlidesToShowState] = useState10(
3921
+ const [currentSlide, setCurrentSlide] = useState11(0);
3922
+ const [transition, setTransition] = useState11(true);
3923
+ const [slidesToShowState, setSlidesToShowState] = useState11(
3588
3924
  typeof slidesToShow === "number" ? slidesToShow : slidesToShow.large
3589
3925
  );
3590
- const [isPlaying, setIsPlaying] = useState10(autoplay);
3591
- useEffect10(() => {
3926
+ const [isPlaying, setIsPlaying] = useState11(autoplay);
3927
+ useEffect11(() => {
3592
3928
  if (typeof slidesToShow === "number") return;
3593
3929
  const handleResize = () => {
3594
3930
  if (window.innerWidth >= 1024) {
@@ -3603,7 +3939,7 @@ var Slider = ({
3603
3939
  window.addEventListener("resize", handleResize);
3604
3940
  return () => window.removeEventListener("resize", handleResize);
3605
3941
  }, [slidesToShow]);
3606
- useEffect10(() => {
3942
+ useEffect11(() => {
3607
3943
  if (!autoplay) return;
3608
3944
  const timer = setInterval(() => {
3609
3945
  if (isPlaying) {
@@ -3658,10 +3994,10 @@ var Slider = ({
3658
3994
  };
3659
3995
  const translateX = -currentSlide * (100 / slidesToShowState);
3660
3996
  const slides = Children.map(children, (child, index) => {
3661
- if (!React45.isValidElement(child)) return null;
3997
+ if (!React47.isValidElement(child)) return null;
3662
3998
  const childProps = child.props;
3663
3999
  const mergedClassName = `${childProps.className ?? ""} w-full`.trim();
3664
- return /* @__PURE__ */ jsx62(
4000
+ return /* @__PURE__ */ jsx64(
3665
4001
  "div",
3666
4002
  {
3667
4003
  className: `flex-none ${scaleOnHover ? "group hover:z-50" : ""} relative`,
@@ -3684,14 +4020,14 @@ var Slider = ({
3684
4020
  return "bottom-4";
3685
4021
  }
3686
4022
  };
3687
- return /* @__PURE__ */ jsxs30(
4023
+ return /* @__PURE__ */ jsxs31(
3688
4024
  "div",
3689
4025
  {
3690
4026
  className: `relative w-full overflow-hidden ${className}`,
3691
4027
  onMouseEnter: handleMouseEnter,
3692
4028
  onMouseLeave: handleMouseLeave,
3693
4029
  children: [
3694
- /* @__PURE__ */ jsx62(
4030
+ /* @__PURE__ */ jsx64(
3695
4031
  "div",
3696
4032
  {
3697
4033
  className: "flex h-full",
@@ -3702,18 +4038,18 @@ var Slider = ({
3702
4038
  children: slides
3703
4039
  }
3704
4040
  ),
3705
- show_arrows && /* @__PURE__ */ jsxs30(Fragment8, { children: [
3706
- /* @__PURE__ */ jsx62(
4041
+ show_arrows && /* @__PURE__ */ jsxs31(Fragment8, { children: [
4042
+ /* @__PURE__ */ jsx64(
3707
4043
  ArrowButton,
3708
4044
  {
3709
4045
  direction: "left",
3710
4046
  onClick: prevSlide,
3711
4047
  visible: infinite_scroll || currentSlide > 0,
3712
4048
  className: arrowClassName,
3713
- children: /* @__PURE__ */ jsx62("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", strokeWidth: 1.5, stroke: "currentColor", className: "w-6 h-6", children: /* @__PURE__ */ jsx62("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M15.75 19.5 8.25 12l7.5-7.5" }) })
4049
+ children: /* @__PURE__ */ jsx64("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", strokeWidth: 1.5, stroke: "currentColor", className: "w-6 h-6", children: /* @__PURE__ */ jsx64("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M15.75 19.5 8.25 12l7.5-7.5" }) })
3714
4050
  }
3715
4051
  ),
3716
- /* @__PURE__ */ jsxs30(
4052
+ /* @__PURE__ */ jsxs31(
3717
4053
  ArrowButton,
3718
4054
  {
3719
4055
  direction: "right",
@@ -3721,13 +4057,13 @@ var Slider = ({
3721
4057
  visible: infinite_scroll || currentSlide < maxSlide,
3722
4058
  className: arrowClassName,
3723
4059
  children: [
3724
- /* @__PURE__ */ jsx62("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", strokeWidth: 1.5, stroke: "currentColor", className: "w-6 h-6", children: /* @__PURE__ */ jsx62("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "m8.25 4.5 7.5 7.5-7.5 7.5" }) }),
4060
+ /* @__PURE__ */ jsx64("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", strokeWidth: 1.5, stroke: "currentColor", className: "w-6 h-6", children: /* @__PURE__ */ jsx64("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "m8.25 4.5 7.5 7.5-7.5 7.5" }) }),
3725
4061
  " "
3726
4062
  ]
3727
4063
  }
3728
4064
  )
3729
4065
  ] }),
3730
- show_dots && /* @__PURE__ */ jsx62("div", { className: `absolute left-1/2 -translate-x-1/2 flex justify-center space-x-1.5 ${getProgressPositionClass()}`, children: Array.from({ length: totalSlides }).map((_, index) => /* @__PURE__ */ jsx62(
4066
+ show_dots && /* @__PURE__ */ jsx64("div", { className: `absolute left-1/2 -translate-x-1/2 flex justify-center space-x-1.5 ${getProgressPositionClass()}`, children: Array.from({ length: totalSlides }).map((_, index) => /* @__PURE__ */ jsx64(
3731
4067
  ProgressPill,
3732
4068
  {
3733
4069
  active: index === currentSlide,
@@ -3753,7 +4089,7 @@ var ArrowButton = ({
3753
4089
  visible,
3754
4090
  children,
3755
4091
  className = ""
3756
- }) => /* @__PURE__ */ jsx62(
4092
+ }) => /* @__PURE__ */ jsx64(
3757
4093
  "button",
3758
4094
  {
3759
4095
  className: `
@@ -3779,13 +4115,13 @@ var ProgressPill = ({
3779
4115
  currentSlide,
3780
4116
  totalSlides
3781
4117
  }) => {
3782
- const [progress, setProgress] = useState10(0);
3783
- useEffect10(() => {
4118
+ const [progress, setProgress] = useState11(0);
4119
+ useEffect11(() => {
3784
4120
  if (active) {
3785
4121
  setProgress(0);
3786
4122
  }
3787
4123
  }, [active, index]);
3788
- useEffect10(() => {
4124
+ useEffect11(() => {
3789
4125
  if (!active || !isPlaying) {
3790
4126
  if (!active) {
3791
4127
  setProgress(0);
@@ -3840,7 +4176,7 @@ var ProgressPill = ({
3840
4176
  const renderProgressBar = () => {
3841
4177
  if (style === "modern" && isActive || style === "cumulative" && shouldShowProgress) {
3842
4178
  const displayProgress = style === "cumulative" && isFilled ? 100 : progress;
3843
- return /* @__PURE__ */ jsx62(
4179
+ return /* @__PURE__ */ jsx64(
3844
4180
  "div",
3845
4181
  {
3846
4182
  className: `absolute top-0 left-0 h-full rounded-full ${style === "cumulative" && isFilled ? activeClassName || "bg-white" : activeClassName || "bg-white"} transition-all duration-50 ease-linear`,
@@ -3852,7 +4188,7 @@ var ProgressPill = ({
3852
4188
  };
3853
4189
  const renderCumulativeFill = () => {
3854
4190
  if (style === "cumulative" && isFilled && !isActive) {
3855
- return /* @__PURE__ */ jsx62(
4191
+ return /* @__PURE__ */ jsx64(
3856
4192
  "div",
3857
4193
  {
3858
4194
  className: `absolute top-0 left-0 h-full rounded-full ${activeClassName || "bg-white"} transition-all duration-300`,
@@ -3862,7 +4198,7 @@ var ProgressPill = ({
3862
4198
  }
3863
4199
  return null;
3864
4200
  };
3865
- return /* @__PURE__ */ jsxs30(
4201
+ return /* @__PURE__ */ jsxs31(
3866
4202
  "button",
3867
4203
  {
3868
4204
  className: `${baseClasses} ${getStyleClasses()}`,
@@ -3986,32 +4322,6 @@ var AnimationUtility = class {
3986
4322
  };
3987
4323
  var AnimationUtility_default = AnimationUtility;
3988
4324
 
3989
- // src/components/pageRenderingEngine/nodes/EnterAnimationClient.tsx
3990
- import React46, { useEffect as useEffect11, useRef as useRef6 } from "react";
3991
- import { Fragment as Fragment9, jsx as jsx63 } from "react/jsx-runtime";
3992
- function EnterAnimationClient({ hasEnterAnimation, children }) {
3993
- const ref = useRef6(null);
3994
- useEffect11(() => {
3995
- if (!hasEnterAnimation || !ref.current) return;
3996
- const observer = new IntersectionObserver(
3997
- (entries) => {
3998
- entries.forEach((entry) => {
3999
- if (entry.isIntersecting) {
4000
- entry.target.classList.add("visible");
4001
- observer.unobserve(entry.target);
4002
- }
4003
- });
4004
- },
4005
- { threshold: 0.1 }
4006
- );
4007
- observer.observe(ref.current);
4008
- return () => observer.disconnect();
4009
- }, [hasEnterAnimation]);
4010
- return /* @__PURE__ */ jsx63(Fragment9, { children: children && // enforce passing the ref to Wrapper
4011
- //@ts-ignore
4012
- React46.cloneElement(children, { ref }) });
4013
- }
4014
-
4015
4325
  // src/components/utilities/PathUtility.tsx
4016
4326
  var PathUtility = class {
4017
4327
  constructor() {
@@ -4064,10 +4374,10 @@ var PathUtility = class {
4064
4374
  var PathUtility_default = new PathUtility();
4065
4375
 
4066
4376
  // src/components/NoDataFound.tsx
4067
- import { jsx as jsx64, jsxs as jsxs31 } from "react/jsx-runtime";
4377
+ import { jsx as jsx65, jsxs as jsxs32 } from "react/jsx-runtime";
4068
4378
  var NoDataFound = () => {
4069
- return /* @__PURE__ */ jsxs31("div", { className: "flex flex-col items-center justify-center py-12 px-4 text-center bg-neutral-weak", children: [
4070
- /* @__PURE__ */ jsx64("div", { className: "mb-5", children: /* @__PURE__ */ jsx64("div", { className: "mx-auto w-20 h-20 rounded-full flex items-center justify-center bg-neutral-soft", children: /* @__PURE__ */ jsx64(
4379
+ return /* @__PURE__ */ jsxs32("div", { className: "flex flex-col items-center justify-center py-12 px-4 text-center bg-neutral-weak", children: [
4380
+ /* @__PURE__ */ jsx65("div", { className: "mb-5", children: /* @__PURE__ */ jsx65("div", { className: "mx-auto w-20 h-20 rounded-full flex items-center justify-center bg-neutral-soft", children: /* @__PURE__ */ jsx65(
4071
4381
  "svg",
4072
4382
  {
4073
4383
  className: "w-10 h-10",
@@ -4075,7 +4385,7 @@ var NoDataFound = () => {
4075
4385
  stroke: "currentColor",
4076
4386
  viewBox: "0 0 24 24",
4077
4387
  xmlns: "http://www.w3.org/2000/svg",
4078
- children: /* @__PURE__ */ jsx64(
4388
+ children: /* @__PURE__ */ jsx65(
4079
4389
  "path",
4080
4390
  {
4081
4391
  strokeLinecap: "round",
@@ -4086,15 +4396,15 @@ var NoDataFound = () => {
4086
4396
  )
4087
4397
  }
4088
4398
  ) }) }),
4089
- /* @__PURE__ */ jsx64("h3", { className: "text-lg font-medium mb-2", children: "No data available" }),
4090
- /* @__PURE__ */ jsx64("p", { className: " max-w-sm mb-0", children: "No records found. Data may be empty or not available at the moment." })
4399
+ /* @__PURE__ */ jsx65("h3", { className: "text-lg font-medium mb-2", children: "No data available" }),
4400
+ /* @__PURE__ */ jsx65("p", { className: " max-w-sm mb-0", children: "No records found. Data may be empty or not available at the moment." })
4091
4401
  ] });
4092
4402
  };
4093
4403
  var NoDataFound_default = NoDataFound;
4094
4404
 
4095
4405
  // src/components/Pagination.tsx
4096
4406
  import { useMemo } from "react";
4097
- import { jsx as jsx65, jsxs as jsxs32 } from "react/jsx-runtime";
4407
+ import { jsx as jsx66, jsxs as jsxs33 } from "react/jsx-runtime";
4098
4408
  var Pagination = (props) => {
4099
4409
  const { dataset, path, query, showPageSizeSelector = false, showJumpToPage = false } = props;
4100
4410
  const builder = useMemo(() => {
@@ -4138,7 +4448,7 @@ var Pagination = (props) => {
4138
4448
  return range;
4139
4449
  };
4140
4450
  const paginationRange = getPaginationRange();
4141
- const PageButton = ({ page, children }) => /* @__PURE__ */ jsx65(
4451
+ const PageButton = ({ page, children }) => /* @__PURE__ */ jsx66(
4142
4452
  Hyperlink,
4143
4453
  {
4144
4454
  linkType: "Link" /* Link */,
@@ -4153,9 +4463,9 @@ var Pagination = (props) => {
4153
4463
  );
4154
4464
  const NavigationButton = ({ page, disabled, children }) => {
4155
4465
  if (disabled) {
4156
- return /* @__PURE__ */ jsx65("span", { className: "min-w-[20px] md:min-w-[40px] h-10 flex items-center justify-center px-2 md:px-3 border bg-neutral-base cursor-not-allowed", children });
4466
+ return /* @__PURE__ */ jsx66("span", { className: "min-w-[20px] md:min-w-[40px] h-10 flex items-center justify-center px-2 md:px-3 border bg-neutral-base cursor-not-allowed", children });
4157
4467
  }
4158
- return /* @__PURE__ */ jsx65(
4468
+ return /* @__PURE__ */ jsx66(
4159
4469
  Hyperlink,
4160
4470
  {
4161
4471
  className: "min-w-[20px] md:min-w-[40px] h-10 flex items-center justify-center px-2 md:px-3 border transition-colors duration-150",
@@ -4165,35 +4475,35 @@ var Pagination = (props) => {
4165
4475
  );
4166
4476
  };
4167
4477
  if (totalPages <= 1 && totalItems === 0) return null;
4168
- return /* @__PURE__ */ jsxs32("div", { className: "py-6 border-t bg-default", children: [
4169
- /* @__PURE__ */ jsxs32("div", { className: "flex flex-col sm:flex-row items-center justify-between gap-4", children: [
4170
- /* @__PURE__ */ jsxs32("div", { className: "text-sm", children: [
4478
+ return /* @__PURE__ */ jsxs33("div", { className: "py-6 border-t bg-default", children: [
4479
+ /* @__PURE__ */ jsxs33("div", { className: "flex flex-col sm:flex-row items-center justify-between gap-4", children: [
4480
+ /* @__PURE__ */ jsxs33("div", { className: "text-sm", children: [
4171
4481
  "Showing ",
4172
- /* @__PURE__ */ jsxs32("span", { className: "font-semibold", children: [
4482
+ /* @__PURE__ */ jsxs33("span", { className: "font-semibold", children: [
4173
4483
  startItem,
4174
4484
  "-",
4175
4485
  endItem
4176
4486
  ] }),
4177
4487
  " ",
4178
4488
  "out of ",
4179
- /* @__PURE__ */ jsx65("span", { className: "font-semibold", children: totalItems.toLocaleString() }),
4489
+ /* @__PURE__ */ jsx66("span", { className: "font-semibold", children: totalItems.toLocaleString() }),
4180
4490
  " results"
4181
4491
  ] }),
4182
- totalPages > 1 && /* @__PURE__ */ jsxs32("div", { className: "flex items-center space-x-1", children: [
4183
- /* @__PURE__ */ jsxs32(
4492
+ totalPages > 1 && /* @__PURE__ */ jsxs33("div", { className: "flex items-center space-x-1", children: [
4493
+ /* @__PURE__ */ jsxs33(
4184
4494
  NavigationButton,
4185
4495
  {
4186
4496
  page: activePageNumber - 1,
4187
4497
  disabled: activePageNumber === 1,
4188
4498
  children: [
4189
- /* @__PURE__ */ jsx65("span", { children: /* @__PURE__ */ jsx65(Icon_default, { name: "chevronLeft", className: "w-4 h-4 mr-1" }) }),
4190
- /* @__PURE__ */ jsx65("span", { className: "text-sm", children: "Prev" })
4499
+ /* @__PURE__ */ jsx66("span", { children: /* @__PURE__ */ jsx66(Icon_default, { name: "chevronLeft", className: "w-4 h-4 mr-1" }) }),
4500
+ /* @__PURE__ */ jsx66("span", { className: "text-sm", children: "Prev" })
4191
4501
  ]
4192
4502
  }
4193
4503
  ),
4194
4504
  paginationRange.map((item, index) => {
4195
4505
  if (item === "...") {
4196
- return /* @__PURE__ */ jsx65(
4506
+ return /* @__PURE__ */ jsx66(
4197
4507
  "span",
4198
4508
  {
4199
4509
  className: "min-w-[20px] md:min-w-[40px] h-10 flex items-center justify-center text-gray-500",
@@ -4203,23 +4513,23 @@ var Pagination = (props) => {
4203
4513
  );
4204
4514
  }
4205
4515
  const page = item;
4206
- return /* @__PURE__ */ jsx65(PageButton, { page, children: page }, page);
4516
+ return /* @__PURE__ */ jsx66(PageButton, { page, children: page }, page);
4207
4517
  }),
4208
- /* @__PURE__ */ jsxs32(
4518
+ /* @__PURE__ */ jsxs33(
4209
4519
  NavigationButton,
4210
4520
  {
4211
4521
  page: activePageNumber + 1,
4212
4522
  disabled: activePageNumber === totalPages,
4213
4523
  children: [
4214
- /* @__PURE__ */ jsx65("span", { className: "text-sm", children: "Next" }),
4215
- /* @__PURE__ */ jsx65("span", { children: /* @__PURE__ */ jsx65(Icon_default, { name: "chevronRight", className: "w-4 h-4 ml-1" }) })
4524
+ /* @__PURE__ */ jsx66("span", { className: "text-sm", children: "Next" }),
4525
+ /* @__PURE__ */ jsx66("span", { children: /* @__PURE__ */ jsx66(Icon_default, { name: "chevronRight", className: "w-4 h-4 ml-1" }) })
4216
4526
  ]
4217
4527
  }
4218
4528
  )
4219
4529
  ] }),
4220
- showJumpToPage && totalPages > 5 && /* @__PURE__ */ jsxs32("div", { className: "flex items-center space-x-2", children: [
4221
- /* @__PURE__ */ jsx65("span", { className: "text-sm", children: "Go to:" }),
4222
- /* @__PURE__ */ jsx65("div", { className: "relative", children: /* @__PURE__ */ jsx65(
4530
+ showJumpToPage && totalPages > 5 && /* @__PURE__ */ jsxs33("div", { className: "flex items-center space-x-2", children: [
4531
+ /* @__PURE__ */ jsx66("span", { className: "text-sm", children: "Go to:" }),
4532
+ /* @__PURE__ */ jsx66("div", { className: "relative", children: /* @__PURE__ */ jsx66(
4223
4533
  "input",
4224
4534
  {
4225
4535
  type: "number",
@@ -4240,9 +4550,9 @@ var Pagination = (props) => {
4240
4550
  ) })
4241
4551
  ] })
4242
4552
  ] }),
4243
- showPageSizeSelector && /* @__PURE__ */ jsx65("div", { className: "mt-4 pt-4 border-t bg-default", children: /* @__PURE__ */ jsxs32("div", { className: "flex items-center justify-center space-x-2", children: [
4244
- /* @__PURE__ */ jsx65("span", { className: "text-sm", children: "Show:" }),
4245
- /* @__PURE__ */ jsx65("div", { className: "flex space-x-1", children: [10, 25, 50, 100].map((size) => /* @__PURE__ */ jsx65(
4553
+ showPageSizeSelector && /* @__PURE__ */ jsx66("div", { className: "mt-4 pt-4 border-t bg-default", children: /* @__PURE__ */ jsxs33("div", { className: "flex items-center justify-center space-x-2", children: [
4554
+ /* @__PURE__ */ jsx66("span", { className: "text-sm", children: "Show:" }),
4555
+ /* @__PURE__ */ jsx66("div", { className: "flex space-x-1", children: [10, 25, 50, 100].map((size) => /* @__PURE__ */ jsx66(
4246
4556
  Hyperlink,
4247
4557
  {
4248
4558
  className: `
@@ -4254,14 +4564,14 @@ var Pagination = (props) => {
4254
4564
  },
4255
4565
  size
4256
4566
  )) }),
4257
- /* @__PURE__ */ jsx65("span", { className: "text-sm", children: "per page" })
4567
+ /* @__PURE__ */ jsx66("span", { className: "text-sm", children: "per page" })
4258
4568
  ] }) })
4259
4569
  ] });
4260
4570
  };
4261
4571
  var Pagination_default = Pagination;
4262
4572
 
4263
4573
  // src/components/pageRenderingEngine/nodes/DivContainer.tsx
4264
- import { jsx as jsx66, jsxs as jsxs33 } from "react/jsx-runtime";
4574
+ import { jsx as jsx67, jsxs as jsxs34 } from "react/jsx-runtime";
4265
4575
  function toCamelCase(str) {
4266
4576
  return str.replace(/-([a-z])/g, (_, letter) => letter.toUpperCase());
4267
4577
  }
@@ -4275,7 +4585,7 @@ function convertKeysToCamelCase(obj) {
4275
4585
  ])
4276
4586
  );
4277
4587
  }
4278
- var getNestedValue = (obj, path) => {
4588
+ var getNestedValue2 = (obj, path) => {
4279
4589
  if (!obj || !path) return void 0;
4280
4590
  return path.split(".").reduce((current, key) => {
4281
4591
  {
@@ -4416,7 +4726,7 @@ var DivContainer = async (props) => {
4416
4726
  }
4417
4727
  const shouldHideContainer = () => {
4418
4728
  if (!props.node.fieldVisibleOnTrue) return false;
4419
- const fieldValue = getNestedValue(props.dataitem, props.node.fieldVisibleOnTrue);
4729
+ const fieldValue = getNestedValue2(props.dataitem, props.node.fieldVisibleOnTrue);
4420
4730
  return fieldValue !== void 0 && fieldValue === false;
4421
4731
  };
4422
4732
  const isHidden = shouldHideContainer();
@@ -4443,10 +4753,10 @@ var DivContainer = async (props) => {
4443
4753
  response = await serviceClient.get(endpoint);
4444
4754
  result = response?.result;
4445
4755
  if (dataBindingProperties.showNoResultsMessage && (result === void 0 || result.length == 0)) {
4446
- return /* @__PURE__ */ jsx66(NoDataFound_default, {});
4756
+ return /* @__PURE__ */ jsx67(NoDataFound_default, {});
4447
4757
  }
4448
4758
  if (dataBindingProperties.childCollectionName && props.dataitem) {
4449
- childCollectionData = getNestedValue(props.dataitem, dataBindingProperties.childCollectionName);
4759
+ childCollectionData = getNestedValue2(props.dataitem, dataBindingProperties.childCollectionName);
4450
4760
  }
4451
4761
  }
4452
4762
  const cssResult = generateCssString(guid, updatedStyle, mobileStyles);
@@ -4455,7 +4765,7 @@ var DivContainer = async (props) => {
4455
4765
  }
4456
4766
  const SelectedNode = NodeTypes2[node.type];
4457
4767
  if (!SelectedNode) return null;
4458
- return /* @__PURE__ */ jsx66(React48.Fragment, { children: /* @__PURE__ */ jsx66(
4768
+ return /* @__PURE__ */ jsx67(React49.Fragment, { children: /* @__PURE__ */ jsx67(
4459
4769
  SelectedNode,
4460
4770
  {
4461
4771
  node,
@@ -4554,9 +4864,9 @@ var DivContainer = async (props) => {
4554
4864
  props.node.autoFormat && "auto-format",
4555
4865
  props.node.bgClass
4556
4866
  ].filter(Boolean).join(" ");
4557
- return /* @__PURE__ */ jsxs33(React48.Fragment, { children: [
4558
- /* @__PURE__ */ jsx66("style", { dangerouslySetInnerHTML: { __html: cssResult.css + animationCSS } }),
4559
- /* @__PURE__ */ jsx66(EnterAnimationClient, { hasEnterAnimation: !!props.node.enterAnimation, children: /* @__PURE__ */ jsx66(React48.Fragment, { children: /* @__PURE__ */ jsx66(
4867
+ return /* @__PURE__ */ jsxs34(React49.Fragment, { children: [
4868
+ /* @__PURE__ */ jsx67("style", { dangerouslySetInnerHTML: { __html: cssResult.css + animationCSS } }),
4869
+ /* @__PURE__ */ jsx67(React49.Fragment, { children: /* @__PURE__ */ jsx67(
4560
4870
  Wrapper,
4561
4871
  {
4562
4872
  id: guid,
@@ -4565,18 +4875,18 @@ var DivContainer = async (props) => {
4565
4875
  ...wrapperProps,
4566
4876
  children: dataToRender.map(
4567
4877
  (item, idx) => item?.links?.view && renderLink ? renderChildren(props.node.children, props, item, idx, props.href ? void 0 : item?.links?.view)?.map(
4568
- (child, i) => /* @__PURE__ */ jsx66(React48.Fragment, { children: child }, i)
4878
+ (child, i) => /* @__PURE__ */ jsx67(React49.Fragment, { children: child }, i)
4569
4879
  ) : renderChildren(props.node.children, props, item, idx)
4570
4880
  )
4571
4881
  }
4572
- ) }) }),
4573
- dataBindingProperties && props.node.dataBinding.enablePagination && /* @__PURE__ */ jsx66("div", { children: /* @__PURE__ */ jsx66(Pagination_default, { path: props.path, query: props.query, dataset: response }) })
4882
+ ) }),
4883
+ dataBindingProperties && props.node.dataBinding.enablePagination && /* @__PURE__ */ jsx67("div", { children: /* @__PURE__ */ jsx67(Pagination_default, { path: props.path, query: props.query, dataset: response }) })
4574
4884
  ] });
4575
4885
  };
4576
4886
  var DivContainer_default = DivContainer;
4577
4887
 
4578
4888
  // src/components/pageRenderingEngine/PageBodyRenderer.tsx
4579
- import { jsx as jsx67 } from "react/jsx-runtime";
4889
+ import { jsx as jsx68 } from "react/jsx-runtime";
4580
4890
  var NodeTypes = {
4581
4891
  ["paragraph"]: ParagraphNode_default,
4582
4892
  ["heading"]: HeadingNode_default,
@@ -4603,11 +4913,11 @@ var PageBodyRenderer = (props) => {
4603
4913
  if (pageBodyTree && pageBodyTree.root) {
4604
4914
  rootNode = pageBodyTree.root;
4605
4915
  }
4606
- return /* @__PURE__ */ jsx67(React49.Fragment, { children: rootNode && rootNode?.children?.map((node, index) => {
4916
+ return /* @__PURE__ */ jsx68(React50.Fragment, { children: rootNode && rootNode?.children?.map((node, index) => {
4607
4917
  {
4608
4918
  }
4609
4919
  const SelectedNode = NodeTypes[node.type];
4610
- return /* @__PURE__ */ jsx67(React49.Fragment, { children: SelectedNode && /* @__PURE__ */ jsx67(React49.Fragment, { children: node.type == "layout-container" ? /* @__PURE__ */ jsx67(React49.Fragment, { children: /* @__PURE__ */ jsx67(
4920
+ return /* @__PURE__ */ jsx68(React50.Fragment, { children: SelectedNode && /* @__PURE__ */ jsx68(React50.Fragment, { children: node.type == "layout-container" ? /* @__PURE__ */ jsx68(React50.Fragment, { children: /* @__PURE__ */ jsx68(
4611
4921
  SelectedNode,
4612
4922
  {
4613
4923
  node,
@@ -4619,9 +4929,10 @@ var PageBodyRenderer = (props) => {
4619
4929
  path: props.path,
4620
4930
  apiBaseUrl: props.apiBaseUrl,
4621
4931
  serviceClient: props.serviceClient,
4622
- assetBaseUrl: props.assetBaseUrl
4932
+ assetBaseUrl: props.assetBaseUrl,
4933
+ device: props.device
4623
4934
  }
4624
- ) }) : /* @__PURE__ */ jsx67(React49.Fragment, { children: /* @__PURE__ */ jsx67(
4935
+ ) }) : /* @__PURE__ */ jsx68(React50.Fragment, { children: /* @__PURE__ */ jsx68(
4625
4936
  SelectedNode,
4626
4937
  {
4627
4938
  node,
@@ -4632,7 +4943,8 @@ var PageBodyRenderer = (props) => {
4632
4943
  path: props.path,
4633
4944
  apiBaseUrl: props.apiBaseUrl,
4634
4945
  serviceClient: props.serviceClient,
4635
- assetBaseUrl: props.assetBaseUrl
4946
+ assetBaseUrl: props.assetBaseUrl,
4947
+ device: props.device
4636
4948
  }
4637
4949
  ) }) }) }, index);
4638
4950
  }) });