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

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 React51 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 React50 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()}`,
@@ -3987,11 +4323,11 @@ var AnimationUtility = class {
3987
4323
  var AnimationUtility_default = AnimationUtility;
3988
4324
 
3989
4325
  // 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";
4326
+ import React48, { useEffect as useEffect12, useRef as useRef7 } from "react";
4327
+ import { Fragment as Fragment9, jsx as jsx65 } from "react/jsx-runtime";
3992
4328
  function EnterAnimationClient({ hasEnterAnimation, children }) {
3993
- const ref = useRef6(null);
3994
- useEffect11(() => {
4329
+ const ref = useRef7(null);
4330
+ useEffect12(() => {
3995
4331
  if (!hasEnterAnimation || !ref.current) return;
3996
4332
  const observer = new IntersectionObserver(
3997
4333
  (entries) => {
@@ -4007,9 +4343,9 @@ function EnterAnimationClient({ hasEnterAnimation, children }) {
4007
4343
  observer.observe(ref.current);
4008
4344
  return () => observer.disconnect();
4009
4345
  }, [hasEnterAnimation]);
4010
- return /* @__PURE__ */ jsx63(Fragment9, { children: children && // enforce passing the ref to Wrapper
4346
+ return /* @__PURE__ */ jsx65(Fragment9, { children: children && // enforce passing the ref to Wrapper
4011
4347
  //@ts-ignore
4012
- React46.cloneElement(children, { ref }) });
4348
+ React48.cloneElement(children, { ref }) });
4013
4349
  }
4014
4350
 
4015
4351
  // src/components/utilities/PathUtility.tsx
@@ -4064,10 +4400,10 @@ var PathUtility = class {
4064
4400
  var PathUtility_default = new PathUtility();
4065
4401
 
4066
4402
  // src/components/NoDataFound.tsx
4067
- import { jsx as jsx64, jsxs as jsxs31 } from "react/jsx-runtime";
4403
+ import { jsx as jsx66, jsxs as jsxs32 } from "react/jsx-runtime";
4068
4404
  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(
4405
+ return /* @__PURE__ */ jsxs32("div", { className: "flex flex-col items-center justify-center py-12 px-4 text-center bg-neutral-weak", children: [
4406
+ /* @__PURE__ */ jsx66("div", { className: "mb-5", children: /* @__PURE__ */ jsx66("div", { className: "mx-auto w-20 h-20 rounded-full flex items-center justify-center bg-neutral-soft", children: /* @__PURE__ */ jsx66(
4071
4407
  "svg",
4072
4408
  {
4073
4409
  className: "w-10 h-10",
@@ -4075,7 +4411,7 @@ var NoDataFound = () => {
4075
4411
  stroke: "currentColor",
4076
4412
  viewBox: "0 0 24 24",
4077
4413
  xmlns: "http://www.w3.org/2000/svg",
4078
- children: /* @__PURE__ */ jsx64(
4414
+ children: /* @__PURE__ */ jsx66(
4079
4415
  "path",
4080
4416
  {
4081
4417
  strokeLinecap: "round",
@@ -4086,15 +4422,15 @@ var NoDataFound = () => {
4086
4422
  )
4087
4423
  }
4088
4424
  ) }) }),
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." })
4425
+ /* @__PURE__ */ jsx66("h3", { className: "text-lg font-medium mb-2", children: "No data available" }),
4426
+ /* @__PURE__ */ jsx66("p", { className: " max-w-sm mb-0", children: "No records found. Data may be empty or not available at the moment." })
4091
4427
  ] });
4092
4428
  };
4093
4429
  var NoDataFound_default = NoDataFound;
4094
4430
 
4095
4431
  // src/components/Pagination.tsx
4096
4432
  import { useMemo } from "react";
4097
- import { jsx as jsx65, jsxs as jsxs32 } from "react/jsx-runtime";
4433
+ import { jsx as jsx67, jsxs as jsxs33 } from "react/jsx-runtime";
4098
4434
  var Pagination = (props) => {
4099
4435
  const { dataset, path, query, showPageSizeSelector = false, showJumpToPage = false } = props;
4100
4436
  const builder = useMemo(() => {
@@ -4138,7 +4474,7 @@ var Pagination = (props) => {
4138
4474
  return range;
4139
4475
  };
4140
4476
  const paginationRange = getPaginationRange();
4141
- const PageButton = ({ page, children }) => /* @__PURE__ */ jsx65(
4477
+ const PageButton = ({ page, children }) => /* @__PURE__ */ jsx67(
4142
4478
  Hyperlink,
4143
4479
  {
4144
4480
  linkType: "Link" /* Link */,
@@ -4153,9 +4489,9 @@ var Pagination = (props) => {
4153
4489
  );
4154
4490
  const NavigationButton = ({ page, disabled, children }) => {
4155
4491
  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 });
4492
+ return /* @__PURE__ */ jsx67("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
4493
  }
4158
- return /* @__PURE__ */ jsx65(
4494
+ return /* @__PURE__ */ jsx67(
4159
4495
  Hyperlink,
4160
4496
  {
4161
4497
  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 +4501,35 @@ var Pagination = (props) => {
4165
4501
  );
4166
4502
  };
4167
4503
  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: [
4504
+ return /* @__PURE__ */ jsxs33("div", { className: "py-6 border-t bg-default", children: [
4505
+ /* @__PURE__ */ jsxs33("div", { className: "flex flex-col sm:flex-row items-center justify-between gap-4", children: [
4506
+ /* @__PURE__ */ jsxs33("div", { className: "text-sm", children: [
4171
4507
  "Showing ",
4172
- /* @__PURE__ */ jsxs32("span", { className: "font-semibold", children: [
4508
+ /* @__PURE__ */ jsxs33("span", { className: "font-semibold", children: [
4173
4509
  startItem,
4174
4510
  "-",
4175
4511
  endItem
4176
4512
  ] }),
4177
4513
  " ",
4178
4514
  "out of ",
4179
- /* @__PURE__ */ jsx65("span", { className: "font-semibold", children: totalItems.toLocaleString() }),
4515
+ /* @__PURE__ */ jsx67("span", { className: "font-semibold", children: totalItems.toLocaleString() }),
4180
4516
  " results"
4181
4517
  ] }),
4182
- totalPages > 1 && /* @__PURE__ */ jsxs32("div", { className: "flex items-center space-x-1", children: [
4183
- /* @__PURE__ */ jsxs32(
4518
+ totalPages > 1 && /* @__PURE__ */ jsxs33("div", { className: "flex items-center space-x-1", children: [
4519
+ /* @__PURE__ */ jsxs33(
4184
4520
  NavigationButton,
4185
4521
  {
4186
4522
  page: activePageNumber - 1,
4187
4523
  disabled: activePageNumber === 1,
4188
4524
  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" })
4525
+ /* @__PURE__ */ jsx67("span", { children: /* @__PURE__ */ jsx67(Icon_default, { name: "chevronLeft", className: "w-4 h-4 mr-1" }) }),
4526
+ /* @__PURE__ */ jsx67("span", { className: "text-sm", children: "Prev" })
4191
4527
  ]
4192
4528
  }
4193
4529
  ),
4194
4530
  paginationRange.map((item, index) => {
4195
4531
  if (item === "...") {
4196
- return /* @__PURE__ */ jsx65(
4532
+ return /* @__PURE__ */ jsx67(
4197
4533
  "span",
4198
4534
  {
4199
4535
  className: "min-w-[20px] md:min-w-[40px] h-10 flex items-center justify-center text-gray-500",
@@ -4203,23 +4539,23 @@ var Pagination = (props) => {
4203
4539
  );
4204
4540
  }
4205
4541
  const page = item;
4206
- return /* @__PURE__ */ jsx65(PageButton, { page, children: page }, page);
4542
+ return /* @__PURE__ */ jsx67(PageButton, { page, children: page }, page);
4207
4543
  }),
4208
- /* @__PURE__ */ jsxs32(
4544
+ /* @__PURE__ */ jsxs33(
4209
4545
  NavigationButton,
4210
4546
  {
4211
4547
  page: activePageNumber + 1,
4212
4548
  disabled: activePageNumber === totalPages,
4213
4549
  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" }) })
4550
+ /* @__PURE__ */ jsx67("span", { className: "text-sm", children: "Next" }),
4551
+ /* @__PURE__ */ jsx67("span", { children: /* @__PURE__ */ jsx67(Icon_default, { name: "chevronRight", className: "w-4 h-4 ml-1" }) })
4216
4552
  ]
4217
4553
  }
4218
4554
  )
4219
4555
  ] }),
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(
4556
+ showJumpToPage && totalPages > 5 && /* @__PURE__ */ jsxs33("div", { className: "flex items-center space-x-2", children: [
4557
+ /* @__PURE__ */ jsx67("span", { className: "text-sm", children: "Go to:" }),
4558
+ /* @__PURE__ */ jsx67("div", { className: "relative", children: /* @__PURE__ */ jsx67(
4223
4559
  "input",
4224
4560
  {
4225
4561
  type: "number",
@@ -4240,9 +4576,9 @@ var Pagination = (props) => {
4240
4576
  ) })
4241
4577
  ] })
4242
4578
  ] }),
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(
4579
+ showPageSizeSelector && /* @__PURE__ */ jsx67("div", { className: "mt-4 pt-4 border-t bg-default", children: /* @__PURE__ */ jsxs33("div", { className: "flex items-center justify-center space-x-2", children: [
4580
+ /* @__PURE__ */ jsx67("span", { className: "text-sm", children: "Show:" }),
4581
+ /* @__PURE__ */ jsx67("div", { className: "flex space-x-1", children: [10, 25, 50, 100].map((size) => /* @__PURE__ */ jsx67(
4246
4582
  Hyperlink,
4247
4583
  {
4248
4584
  className: `
@@ -4254,14 +4590,14 @@ var Pagination = (props) => {
4254
4590
  },
4255
4591
  size
4256
4592
  )) }),
4257
- /* @__PURE__ */ jsx65("span", { className: "text-sm", children: "per page" })
4593
+ /* @__PURE__ */ jsx67("span", { className: "text-sm", children: "per page" })
4258
4594
  ] }) })
4259
4595
  ] });
4260
4596
  };
4261
4597
  var Pagination_default = Pagination;
4262
4598
 
4263
4599
  // src/components/pageRenderingEngine/nodes/DivContainer.tsx
4264
- import { jsx as jsx66, jsxs as jsxs33 } from "react/jsx-runtime";
4600
+ import { jsx as jsx68, jsxs as jsxs34 } from "react/jsx-runtime";
4265
4601
  function toCamelCase(str) {
4266
4602
  return str.replace(/-([a-z])/g, (_, letter) => letter.toUpperCase());
4267
4603
  }
@@ -4275,7 +4611,7 @@ function convertKeysToCamelCase(obj) {
4275
4611
  ])
4276
4612
  );
4277
4613
  }
4278
- var getNestedValue = (obj, path) => {
4614
+ var getNestedValue2 = (obj, path) => {
4279
4615
  if (!obj || !path) return void 0;
4280
4616
  return path.split(".").reduce((current, key) => {
4281
4617
  {
@@ -4416,7 +4752,7 @@ var DivContainer = async (props) => {
4416
4752
  }
4417
4753
  const shouldHideContainer = () => {
4418
4754
  if (!props.node.fieldVisibleOnTrue) return false;
4419
- const fieldValue = getNestedValue(props.dataitem, props.node.fieldVisibleOnTrue);
4755
+ const fieldValue = getNestedValue2(props.dataitem, props.node.fieldVisibleOnTrue);
4420
4756
  return fieldValue !== void 0 && fieldValue === false;
4421
4757
  };
4422
4758
  const isHidden = shouldHideContainer();
@@ -4443,10 +4779,10 @@ var DivContainer = async (props) => {
4443
4779
  response = await serviceClient.get(endpoint);
4444
4780
  result = response?.result;
4445
4781
  if (dataBindingProperties.showNoResultsMessage && (result === void 0 || result.length == 0)) {
4446
- return /* @__PURE__ */ jsx66(NoDataFound_default, {});
4782
+ return /* @__PURE__ */ jsx68(NoDataFound_default, {});
4447
4783
  }
4448
4784
  if (dataBindingProperties.childCollectionName && props.dataitem) {
4449
- childCollectionData = getNestedValue(props.dataitem, dataBindingProperties.childCollectionName);
4785
+ childCollectionData = getNestedValue2(props.dataitem, dataBindingProperties.childCollectionName);
4450
4786
  }
4451
4787
  }
4452
4788
  const cssResult = generateCssString(guid, updatedStyle, mobileStyles);
@@ -4455,7 +4791,7 @@ var DivContainer = async (props) => {
4455
4791
  }
4456
4792
  const SelectedNode = NodeTypes2[node.type];
4457
4793
  if (!SelectedNode) return null;
4458
- return /* @__PURE__ */ jsx66(React48.Fragment, { children: /* @__PURE__ */ jsx66(
4794
+ return /* @__PURE__ */ jsx68(React50.Fragment, { children: /* @__PURE__ */ jsx68(
4459
4795
  SelectedNode,
4460
4796
  {
4461
4797
  node,
@@ -4554,9 +4890,9 @@ var DivContainer = async (props) => {
4554
4890
  props.node.autoFormat && "auto-format",
4555
4891
  props.node.bgClass
4556
4892
  ].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(
4893
+ return /* @__PURE__ */ jsxs34(React50.Fragment, { children: [
4894
+ /* @__PURE__ */ jsx68("style", { dangerouslySetInnerHTML: { __html: cssResult.css + animationCSS } }),
4895
+ /* @__PURE__ */ jsx68(EnterAnimationClient, { hasEnterAnimation: !!props.node.enterAnimation, children: /* @__PURE__ */ jsx68(React50.Fragment, { children: /* @__PURE__ */ jsx68(
4560
4896
  Wrapper,
4561
4897
  {
4562
4898
  id: guid,
@@ -4565,18 +4901,18 @@ var DivContainer = async (props) => {
4565
4901
  ...wrapperProps,
4566
4902
  children: dataToRender.map(
4567
4903
  (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)
4904
+ (child, i) => /* @__PURE__ */ jsx68(React50.Fragment, { children: child }, i)
4569
4905
  ) : renderChildren(props.node.children, props, item, idx)
4570
4906
  )
4571
4907
  }
4572
4908
  ) }) }),
4573
- dataBindingProperties && props.node.dataBinding.enablePagination && /* @__PURE__ */ jsx66("div", { children: /* @__PURE__ */ jsx66(Pagination_default, { path: props.path, query: props.query, dataset: response }) })
4909
+ dataBindingProperties && props.node.dataBinding.enablePagination && /* @__PURE__ */ jsx68("div", { children: /* @__PURE__ */ jsx68(Pagination_default, { path: props.path, query: props.query, dataset: response }) })
4574
4910
  ] });
4575
4911
  };
4576
4912
  var DivContainer_default = DivContainer;
4577
4913
 
4578
4914
  // src/components/pageRenderingEngine/PageBodyRenderer.tsx
4579
- import { jsx as jsx67 } from "react/jsx-runtime";
4915
+ import { jsx as jsx69 } from "react/jsx-runtime";
4580
4916
  var NodeTypes = {
4581
4917
  ["paragraph"]: ParagraphNode_default,
4582
4918
  ["heading"]: HeadingNode_default,
@@ -4603,11 +4939,11 @@ var PageBodyRenderer = (props) => {
4603
4939
  if (pageBodyTree && pageBodyTree.root) {
4604
4940
  rootNode = pageBodyTree.root;
4605
4941
  }
4606
- return /* @__PURE__ */ jsx67(React49.Fragment, { children: rootNode && rootNode?.children?.map((node, index) => {
4942
+ return /* @__PURE__ */ jsx69(React51.Fragment, { children: rootNode && rootNode?.children?.map((node, index) => {
4607
4943
  {
4608
4944
  }
4609
4945
  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(
4946
+ return /* @__PURE__ */ jsx69(React51.Fragment, { children: SelectedNode && /* @__PURE__ */ jsx69(React51.Fragment, { children: node.type == "layout-container" ? /* @__PURE__ */ jsx69(React51.Fragment, { children: /* @__PURE__ */ jsx69(
4611
4947
  SelectedNode,
4612
4948
  {
4613
4949
  node,
@@ -4619,9 +4955,10 @@ var PageBodyRenderer = (props) => {
4619
4955
  path: props.path,
4620
4956
  apiBaseUrl: props.apiBaseUrl,
4621
4957
  serviceClient: props.serviceClient,
4622
- assetBaseUrl: props.assetBaseUrl
4958
+ assetBaseUrl: props.assetBaseUrl,
4959
+ device: props.device
4623
4960
  }
4624
- ) }) : /* @__PURE__ */ jsx67(React49.Fragment, { children: /* @__PURE__ */ jsx67(
4961
+ ) }) : /* @__PURE__ */ jsx69(React51.Fragment, { children: /* @__PURE__ */ jsx69(
4625
4962
  SelectedNode,
4626
4963
  {
4627
4964
  node,
@@ -4632,7 +4969,8 @@ var PageBodyRenderer = (props) => {
4632
4969
  path: props.path,
4633
4970
  apiBaseUrl: props.apiBaseUrl,
4634
4971
  serviceClient: props.serviceClient,
4635
- assetBaseUrl: props.assetBaseUrl
4972
+ assetBaseUrl: props.assetBaseUrl,
4973
+ device: props.device
4636
4974
  }
4637
4975
  ) }) }) }, index);
4638
4976
  }) });