@acoustte-digital-services/digitalstore-controls-dev 0.8.1-dev.20260320043430 → 0.8.1-dev.20260320070922
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +3 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +656 -257
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +651 -252
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -2101,7 +2101,7 @@ var DataList = (props) => {
|
|
|
2101
2101
|
}
|
|
2102
2102
|
}
|
|
2103
2103
|
}, [props.dataset]);
|
|
2104
|
-
function
|
|
2104
|
+
function getNestedProperty2(obj, path) {
|
|
2105
2105
|
if (path.includes(".")) {
|
|
2106
2106
|
return path.split(".").reduce((prev, curr) => prev ? prev[curr] : null, obj);
|
|
2107
2107
|
} else if (Array.isArray(obj[path])) {
|
|
@@ -2385,7 +2385,7 @@ var DataList = (props) => {
|
|
|
2385
2385
|
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)("tbody", { className: "divide-y divide-gray-200 ", children: props.dataset?.result?.map((dataitem, index) => {
|
|
2386
2386
|
let validityClass = "";
|
|
2387
2387
|
console.log("dataitem", dataitem);
|
|
2388
|
-
if (props.recordValidityColumnName &&
|
|
2388
|
+
if (props.recordValidityColumnName && getNestedProperty2(dataitem, props.recordValidityColumnName) == false) {
|
|
2389
2389
|
validityClass = "bg-alert-200";
|
|
2390
2390
|
}
|
|
2391
2391
|
return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("tr", { className: validityClass, children: props?.columns?.map((column, colindex) => {
|
|
@@ -2403,7 +2403,7 @@ var DataList = (props) => {
|
|
|
2403
2403
|
ViewControl_default,
|
|
2404
2404
|
{
|
|
2405
2405
|
controlType: column.controlType,
|
|
2406
|
-
value:
|
|
2406
|
+
value: getNestedProperty2(
|
|
2407
2407
|
dataitem,
|
|
2408
2408
|
column.name
|
|
2409
2409
|
),
|
|
@@ -2420,7 +2420,7 @@ var DataList = (props) => {
|
|
|
2420
2420
|
ViewControl_default,
|
|
2421
2421
|
{
|
|
2422
2422
|
controlType: column.controlType,
|
|
2423
|
-
value:
|
|
2423
|
+
value: getNestedProperty2(dataitem, column.name) || column.emptyValueLabel,
|
|
2424
2424
|
format: column.format,
|
|
2425
2425
|
customProps: column.customProps
|
|
2426
2426
|
}
|
|
@@ -2430,7 +2430,7 @@ var DataList = (props) => {
|
|
|
2430
2430
|
ViewControl_default,
|
|
2431
2431
|
{
|
|
2432
2432
|
controlType: column.controlType,
|
|
2433
|
-
value:
|
|
2433
|
+
value: getNestedProperty2(dataitem, column.name),
|
|
2434
2434
|
format: column.format,
|
|
2435
2435
|
customProps: column.customProps
|
|
2436
2436
|
}
|
|
@@ -2535,7 +2535,7 @@ var DataList = (props) => {
|
|
|
2535
2535
|
var DataList_default = DataList;
|
|
2536
2536
|
|
|
2537
2537
|
// src/components/pageRenderingEngine/PageBodyRenderer.tsx
|
|
2538
|
-
var
|
|
2538
|
+
var import_react52 = __toESM(require("react"));
|
|
2539
2539
|
|
|
2540
2540
|
// src/components/pageRenderingEngine/nodes/ParagraphNode.tsx
|
|
2541
2541
|
var import_react37 = __toESM(require("react"));
|
|
@@ -2548,19 +2548,57 @@ var TextNode = (props) => {
|
|
|
2548
2548
|
};
|
|
2549
2549
|
function cssStringToJson(cssString) {
|
|
2550
2550
|
const styleObject = {};
|
|
2551
|
-
const matches = cssString
|
|
2552
|
-
if (matches
|
|
2553
|
-
|
|
2554
|
-
|
|
2555
|
-
|
|
2556
|
-
|
|
2557
|
-
|
|
2551
|
+
const matches = cssString?.match(/([\w-]+)\s*:\s*([^;]+)\s*;/g);
|
|
2552
|
+
if (matches) {
|
|
2553
|
+
matches.forEach((match) => {
|
|
2554
|
+
const parts = match.match(/([\w-]+)\s*:\s*([^;]+)\s*;/);
|
|
2555
|
+
if (parts && parts.length === 3) {
|
|
2556
|
+
const property = parts[1].trim();
|
|
2557
|
+
const value = parts[2].trim();
|
|
2558
|
+
styleObject[property] = value;
|
|
2559
|
+
}
|
|
2560
|
+
});
|
|
2558
2561
|
}
|
|
2559
2562
|
return styleObject;
|
|
2560
2563
|
}
|
|
2561
|
-
|
|
2562
|
-
|
|
2563
|
-
|
|
2564
|
+
function toCamelCase(str) {
|
|
2565
|
+
return str.replace(/-([a-z])/g, (_, letter) => letter.toUpperCase());
|
|
2566
|
+
}
|
|
2567
|
+
function convertKeysToCamelCase(obj) {
|
|
2568
|
+
if (Array.isArray(obj)) {
|
|
2569
|
+
return obj.map(convertKeysToCamelCase);
|
|
2570
|
+
} else if (obj !== null && typeof obj === "object") {
|
|
2571
|
+
return Object.fromEntries(
|
|
2572
|
+
Object.entries(obj).filter(([_, value]) => value !== "").map(([key, value]) => [
|
|
2573
|
+
toCamelCase(key),
|
|
2574
|
+
convertKeysToCamelCase(value)
|
|
2575
|
+
])
|
|
2576
|
+
);
|
|
2577
|
+
}
|
|
2578
|
+
return obj;
|
|
2579
|
+
}
|
|
2580
|
+
function getFormatClass(format) {
|
|
2581
|
+
const classes = [];
|
|
2582
|
+
if (format === 1) classes.push("font-medium");
|
|
2583
|
+
if (format === 2) classes.push("italic");
|
|
2584
|
+
if (format === 3) classes.push("font-medium italic");
|
|
2585
|
+
if (format === 8) classes.push("underline");
|
|
2586
|
+
if (format === 9) classes.push("font-medium underline");
|
|
2587
|
+
if (format === 10) classes.push("italic underline");
|
|
2588
|
+
if (format === 11) classes.push("font-medium italic underline");
|
|
2589
|
+
if (format === 256) classes.push("lowercase");
|
|
2590
|
+
if (format === 512) classes.push("uppercase");
|
|
2591
|
+
if (format === 1024) classes.push("capitalize");
|
|
2592
|
+
return classes.join(" ");
|
|
2593
|
+
}
|
|
2594
|
+
const styles = convertKeysToCamelCase(cssStringToJson(props.node.style));
|
|
2595
|
+
function replacePlaceholders(template, dataItem) {
|
|
2596
|
+
return template.replace(/{(\w+)}/g, (_, key) => {
|
|
2597
|
+
return key in dataItem ? dataItem[key] : `{${key}}`;
|
|
2598
|
+
});
|
|
2599
|
+
}
|
|
2600
|
+
const displayText = props.linkText ? props.linkText : props.node.text;
|
|
2601
|
+
return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("span", { style: { ...styles }, className: getFormatClass(props.node.format), children: props.dataitem && props.linkText ? displayText : props.dataitem ? replacePlaceholders(props.node.text, props.dataitem) : props.node.text });
|
|
2564
2602
|
};
|
|
2565
2603
|
var TextNode_default = TextNode;
|
|
2566
2604
|
|
|
@@ -2600,7 +2638,7 @@ var SVGIconNode = ({ node }) => {
|
|
|
2600
2638
|
"span",
|
|
2601
2639
|
{
|
|
2602
2640
|
style: {
|
|
2603
|
-
display: "flex",
|
|
2641
|
+
display: "inline-flex",
|
|
2604
2642
|
width: node.width,
|
|
2605
2643
|
height: node.height,
|
|
2606
2644
|
color: node.color
|
|
@@ -2646,39 +2684,172 @@ var EquationNode = ({ node }) => {
|
|
|
2646
2684
|
};
|
|
2647
2685
|
var EquationNode_default = EquationNode;
|
|
2648
2686
|
|
|
2649
|
-
// src/components/pageRenderingEngine/nodes/
|
|
2687
|
+
// src/components/pageRenderingEngine/nodes/DatafieldNode.tsx
|
|
2650
2688
|
var import_jsx_runtime46 = require("react/jsx-runtime");
|
|
2689
|
+
function getNestedProperty(obj, path) {
|
|
2690
|
+
if (!obj || !path) return null;
|
|
2691
|
+
if (path.includes(".")) {
|
|
2692
|
+
return path.split(".").reduce((prev, curr) => prev ? prev[curr] : null, obj);
|
|
2693
|
+
} else if (Array.isArray(obj[path])) {
|
|
2694
|
+
return obj[path].map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("div", { children: item }, index));
|
|
2695
|
+
} else {
|
|
2696
|
+
return obj[path];
|
|
2697
|
+
}
|
|
2698
|
+
}
|
|
2699
|
+
var DatafieldNode = (props) => {
|
|
2700
|
+
function cssStringToJson(cssString) {
|
|
2701
|
+
const styleObject = {};
|
|
2702
|
+
const matches = cssString?.match(/([\w-]+)\s*:\s*([^;]+)\s*;/g);
|
|
2703
|
+
if (matches) {
|
|
2704
|
+
matches.forEach((match) => {
|
|
2705
|
+
const parts = match.match(/([\w-]+)\s*:\s*([^;]+)\s*;/);
|
|
2706
|
+
if (parts && parts.length === 3) {
|
|
2707
|
+
const property = parts[1].trim();
|
|
2708
|
+
const value2 = parts[2].trim();
|
|
2709
|
+
styleObject[property] = value2;
|
|
2710
|
+
}
|
|
2711
|
+
});
|
|
2712
|
+
}
|
|
2713
|
+
return styleObject;
|
|
2714
|
+
}
|
|
2715
|
+
function toCamelCase(str) {
|
|
2716
|
+
return str.replace(/-([a-z])/g, (_, letter) => letter.toUpperCase());
|
|
2717
|
+
}
|
|
2718
|
+
function convertKeysToCamelCase(obj) {
|
|
2719
|
+
if (!obj || typeof obj !== "object") return obj;
|
|
2720
|
+
return Object.fromEntries(
|
|
2721
|
+
Object.entries(obj).map(([key, value2]) => [toCamelCase(key), value2])
|
|
2722
|
+
);
|
|
2723
|
+
}
|
|
2724
|
+
const Formats = [
|
|
2725
|
+
"",
|
|
2726
|
+
"font-medium",
|
|
2727
|
+
"italic",
|
|
2728
|
+
"font-medium italic",
|
|
2729
|
+
"",
|
|
2730
|
+
"",
|
|
2731
|
+
"",
|
|
2732
|
+
"",
|
|
2733
|
+
"underline",
|
|
2734
|
+
"font-medium underline",
|
|
2735
|
+
"italic underline",
|
|
2736
|
+
"italic underline font-medium"
|
|
2737
|
+
];
|
|
2738
|
+
const styles = convertKeysToCamelCase(cssStringToJson(props.node.style));
|
|
2739
|
+
const fieldName = props.node.fieldName;
|
|
2740
|
+
const value = props.dataitem ? getNestedProperty(props.dataitem, fieldName) : null;
|
|
2741
|
+
console.log(fieldName, value, "haha");
|
|
2742
|
+
const isEmptyValue = value === null || value === void 0 || value === "" || Array.isArray(value) && value.length === 0 || typeof value === "object" && Object.keys(value).length === 0;
|
|
2743
|
+
const maxLines = props.node.maxLines;
|
|
2744
|
+
if (maxLines && Number(maxLines) > 0) {
|
|
2745
|
+
Object.assign(styles, {
|
|
2746
|
+
display: "-webkit-box",
|
|
2747
|
+
overflow: "hidden",
|
|
2748
|
+
WebkitBoxOrient: "vertical",
|
|
2749
|
+
WebkitLineClamp: String(maxLines)
|
|
2750
|
+
});
|
|
2751
|
+
}
|
|
2752
|
+
const dataType = props.node.dataType;
|
|
2753
|
+
if (isEmptyValue) {
|
|
2754
|
+
return null;
|
|
2755
|
+
}
|
|
2756
|
+
if (dataType == "rawContent") {
|
|
2757
|
+
return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
2758
|
+
PageBodyRenderer_default,
|
|
2759
|
+
{
|
|
2760
|
+
rawBody: value ?? `@databound[${fieldName}]`,
|
|
2761
|
+
routeParameters: props.routeParameters,
|
|
2762
|
+
query: props.query,
|
|
2763
|
+
session: props.session,
|
|
2764
|
+
host: props.host,
|
|
2765
|
+
path: props.path,
|
|
2766
|
+
apiBaseUrl: props.apiBaseUrl,
|
|
2767
|
+
breadcrumb: props.breadcrumb,
|
|
2768
|
+
donotApplyContainerClass: true
|
|
2769
|
+
}
|
|
2770
|
+
);
|
|
2771
|
+
}
|
|
2772
|
+
return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
2773
|
+
"span",
|
|
2774
|
+
{
|
|
2775
|
+
className: `datafield-node ${props.node.format < Formats.length ? Formats[props.node.format] : ""}`,
|
|
2776
|
+
style: styles,
|
|
2777
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
2778
|
+
ViewControl_default,
|
|
2779
|
+
{
|
|
2780
|
+
controlType: dataType,
|
|
2781
|
+
value: value ?? `@databound[${fieldName}]`
|
|
2782
|
+
}
|
|
2783
|
+
)
|
|
2784
|
+
}
|
|
2785
|
+
);
|
|
2786
|
+
};
|
|
2787
|
+
var DatafieldNode_default = DatafieldNode;
|
|
2788
|
+
|
|
2789
|
+
// src/components/pageRenderingEngine/nodes/ParagraphNode.tsx
|
|
2790
|
+
var import_jsx_runtime47 = require("react/jsx-runtime");
|
|
2651
2791
|
var ParagraphNode = (props) => {
|
|
2652
2792
|
const NodeTypes2 = {
|
|
2653
2793
|
["text"]: TextNode_default,
|
|
2654
2794
|
["linebreak"]: LineBreakNode_default,
|
|
2655
2795
|
["link"]: LinkNode_default,
|
|
2796
|
+
["datafield"]: DatafieldNode_default,
|
|
2656
2797
|
["equation"]: EquationNode_default,
|
|
2657
2798
|
["svg-icon"]: SVGIconNode_default
|
|
2658
2799
|
};
|
|
2659
2800
|
const FormatClass = {
|
|
2660
|
-
"center": "text-center"
|
|
2801
|
+
"center": "text-center",
|
|
2802
|
+
"right": "text-right"
|
|
2661
2803
|
};
|
|
2662
2804
|
{
|
|
2663
2805
|
}
|
|
2664
2806
|
let formatClasses = FormatClass[props.node.format] || "";
|
|
2665
|
-
|
|
2666
|
-
|
|
2807
|
+
const isInlineOnlyParent = props.parentTag === "summary";
|
|
2808
|
+
const hasChildren = props.node.children && props.node.children.length > 0;
|
|
2809
|
+
if (isInlineOnlyParent) {
|
|
2810
|
+
return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_jsx_runtime47.Fragment, { children: hasChildren && props.node.children.map((node, index) => {
|
|
2667
2811
|
const SelectedNode = NodeTypes2[node.type];
|
|
2668
|
-
return /* @__PURE__ */ (0,
|
|
2812
|
+
return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_react37.default.Fragment, { children: SelectedNode && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
|
|
2813
|
+
SelectedNode,
|
|
2814
|
+
{
|
|
2815
|
+
node,
|
|
2816
|
+
dataitem: props.dataitem,
|
|
2817
|
+
session: props.session,
|
|
2818
|
+
apiBaseUrl: props.apiBaseUrl,
|
|
2819
|
+
routeParameters: props.routeParameters
|
|
2820
|
+
}
|
|
2821
|
+
) }, index);
|
|
2822
|
+
}) });
|
|
2823
|
+
}
|
|
2824
|
+
return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: " " + formatClasses, children: [
|
|
2825
|
+
hasChildren && props.node.children.map((node, index) => {
|
|
2826
|
+
const SelectedNode = NodeTypes2[node.type];
|
|
2827
|
+
return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_react37.default.Fragment, { children: SelectedNode && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
|
|
2828
|
+
SelectedNode,
|
|
2829
|
+
{
|
|
2830
|
+
node,
|
|
2831
|
+
dataitem: props.dataitem,
|
|
2832
|
+
session: props.session,
|
|
2833
|
+
apiBaseUrl: props.apiBaseUrl,
|
|
2834
|
+
routeParameters: props.routeParameters
|
|
2835
|
+
}
|
|
2836
|
+
) }, index);
|
|
2669
2837
|
}),
|
|
2670
|
-
|
|
2838
|
+
!hasChildren && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "py-1.5 lg:py-2" })
|
|
2671
2839
|
] });
|
|
2672
2840
|
};
|
|
2673
2841
|
var ParagraphNode_default = ParagraphNode;
|
|
2674
2842
|
|
|
2675
2843
|
// src/components/pageRenderingEngine/nodes/HeadingNode.tsx
|
|
2676
2844
|
var import_react38 = __toESM(require("react"));
|
|
2677
|
-
var
|
|
2845
|
+
var import_jsx_runtime48 = require("react/jsx-runtime");
|
|
2678
2846
|
var HeadingNode = (props) => {
|
|
2679
2847
|
const NodeTypes2 = {
|
|
2680
2848
|
["text"]: TextNode_default,
|
|
2681
|
-
["link"]: LinkNode_default
|
|
2849
|
+
["link"]: LinkNode_default,
|
|
2850
|
+
["svg-icon"]: SVGIconNode_default,
|
|
2851
|
+
// ["linebreak"]: LineBreakNodeNew,
|
|
2852
|
+
["datafield"]: DatafieldNode_default
|
|
2682
2853
|
};
|
|
2683
2854
|
const HeadingTag = `${props.node.tag}`;
|
|
2684
2855
|
const FormatClass = {
|
|
@@ -2687,12 +2858,12 @@ var HeadingNode = (props) => {
|
|
|
2687
2858
|
{
|
|
2688
2859
|
}
|
|
2689
2860
|
let formatClasses = FormatClass[props.node.format] || "";
|
|
2690
|
-
return /* @__PURE__ */ (0,
|
|
2861
|
+
return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_jsx_runtime48.Fragment, { children: import_react38.default.createElement(
|
|
2691
2862
|
HeadingTag,
|
|
2692
2863
|
{ className: formatClasses },
|
|
2693
2864
|
props.node.children && props.node.children.map((childNode, index) => {
|
|
2694
2865
|
const SelectedNode = NodeTypes2[childNode.type];
|
|
2695
|
-
return /* @__PURE__ */ (0,
|
|
2866
|
+
return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_react38.default.Fragment, { children: SelectedNode && /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(SelectedNode, { node: childNode, dataitem: props.dataitem, session: props.session, apiBaseUrl: props.apiBaseUrl, routeParameters: props.routeParameters }) }, index);
|
|
2696
2867
|
})
|
|
2697
2868
|
) });
|
|
2698
2869
|
};
|
|
@@ -2703,34 +2874,54 @@ var import_react40 = __toESM(require("react"));
|
|
|
2703
2874
|
|
|
2704
2875
|
// src/components/pageRenderingEngine/nodes/ListItemNode.tsx
|
|
2705
2876
|
var import_react39 = __toESM(require("react"));
|
|
2706
|
-
var
|
|
2877
|
+
var import_jsx_runtime49 = require("react/jsx-runtime");
|
|
2707
2878
|
var ListItemNode = (props) => {
|
|
2708
2879
|
const NodeTypes2 = {
|
|
2709
|
-
|
|
2710
|
-
|
|
2711
|
-
|
|
2880
|
+
text: TextNode_default,
|
|
2881
|
+
linebreak: LineBreakNode_default,
|
|
2882
|
+
link: LinkNode_default,
|
|
2883
|
+
list: ListNode_default
|
|
2712
2884
|
};
|
|
2713
|
-
|
|
2885
|
+
let foundFirstBreak = false;
|
|
2886
|
+
const firstTextChild = props.node.children?.find((c) => c.type === "text");
|
|
2887
|
+
let liStyle = {};
|
|
2888
|
+
if (firstTextChild?.style) {
|
|
2889
|
+
const match = firstTextChild.style.match(/font-size\s*:\s*([^;]+);?/);
|
|
2890
|
+
if (match) {
|
|
2891
|
+
liStyle.fontSize = match[1].trim();
|
|
2892
|
+
}
|
|
2893
|
+
}
|
|
2894
|
+
return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("li", { style: liStyle, children: props.node.children && props.node.children.map((node, index) => {
|
|
2714
2895
|
const SelectedNode = NodeTypes2[node.type];
|
|
2715
|
-
|
|
2896
|
+
if (node.type === "linebreak") {
|
|
2897
|
+
if (!foundFirstBreak) {
|
|
2898
|
+
foundFirstBreak = true;
|
|
2899
|
+
return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", {}, index);
|
|
2900
|
+
} else {
|
|
2901
|
+
return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: "py-1 lg:py-2" }, index);
|
|
2902
|
+
}
|
|
2903
|
+
} else {
|
|
2904
|
+
foundFirstBreak = false;
|
|
2905
|
+
return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_react39.default.Fragment, { children: SelectedNode && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(SelectedNode, { node, dataitem: props.dataitem, routeParameters: props.routeParameters }) }, index);
|
|
2906
|
+
}
|
|
2716
2907
|
}) });
|
|
2717
2908
|
};
|
|
2718
2909
|
var ListItemNode_default = ListItemNode;
|
|
2719
2910
|
|
|
2720
2911
|
// src/components/pageRenderingEngine/nodes/ListNode.tsx
|
|
2721
|
-
var
|
|
2912
|
+
var import_jsx_runtime50 = require("react/jsx-runtime");
|
|
2722
2913
|
var ListNode = (props) => {
|
|
2723
2914
|
const NodeTypes2 = {
|
|
2724
2915
|
listitem: ListItemNode_default
|
|
2725
2916
|
};
|
|
2726
|
-
return /* @__PURE__ */ (0,
|
|
2727
|
-
props.node.listType == "bullet" && /* @__PURE__ */ (0,
|
|
2917
|
+
return /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(import_react40.default.Fragment, { children: [
|
|
2918
|
+
props.node.listType == "bullet" && /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("ul", { children: props.node.children && props.node.children.map((node, index) => {
|
|
2728
2919
|
const SelectedNode = NodeTypes2[node.type];
|
|
2729
|
-
return /* @__PURE__ */ (0,
|
|
2920
|
+
return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_react40.default.Fragment, { children: SelectedNode && /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(SelectedNode, { node, dataitem: props.dataitem, routeParameters: props.routeParameters }) }, index);
|
|
2730
2921
|
}) }),
|
|
2731
|
-
props.node.listType == "number" && /* @__PURE__ */ (0,
|
|
2922
|
+
props.node.listType == "number" && /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("ol", { children: props.node.children && props.node.children.map((node, index) => {
|
|
2732
2923
|
const SelectedNode = NodeTypes2[node.type];
|
|
2733
|
-
return /* @__PURE__ */ (0,
|
|
2924
|
+
return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_react40.default.Fragment, { children: SelectedNode && /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(SelectedNode, { node, dataitem: props.dataitem, routeParameters: props.routeParameters }) }, index);
|
|
2734
2925
|
}) })
|
|
2735
2926
|
] });
|
|
2736
2927
|
};
|
|
@@ -2738,56 +2929,118 @@ var ListNode_default = ListNode;
|
|
|
2738
2929
|
|
|
2739
2930
|
// src/components/pageRenderingEngine/nodes/QuoteNode.tsx
|
|
2740
2931
|
var import_react41 = __toESM(require("react"));
|
|
2741
|
-
var
|
|
2932
|
+
var import_jsx_runtime51 = require("react/jsx-runtime");
|
|
2742
2933
|
var QuoteNode = (props) => {
|
|
2743
2934
|
const NodeTypes2 = {
|
|
2744
2935
|
["text"]: TextNode_default,
|
|
2745
2936
|
["linebreak"]: LineBreakNode_default,
|
|
2746
2937
|
["link"]: LinkNode_default
|
|
2747
2938
|
};
|
|
2748
|
-
return /* @__PURE__ */ (0,
|
|
2939
|
+
return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("blockquote", { children: props.node.children && props.node.children.map((node, index) => {
|
|
2749
2940
|
const SelectedNode = NodeTypes2[node.type];
|
|
2750
|
-
return /* @__PURE__ */ (0,
|
|
2941
|
+
return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_react41.default.Fragment, { children: SelectedNode && /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(SelectedNode, { node, session: props.session, apiBaseUrl: props.apiBaseUrl, routeParameters: props.routeParameters }) }, index);
|
|
2751
2942
|
}) });
|
|
2752
2943
|
};
|
|
2753
2944
|
var QuoteNode_default = QuoteNode;
|
|
2754
2945
|
|
|
2755
2946
|
// src/components/pageRenderingEngine/nodes/CodeNode.tsx
|
|
2756
|
-
var
|
|
2757
|
-
|
|
2947
|
+
var import_react43 = __toESM(require("react"));
|
|
2948
|
+
|
|
2949
|
+
// src/components/CopyButton.tsx
|
|
2950
|
+
var import_react42 = require("react");
|
|
2951
|
+
var import_jsx_runtime52 = require("react/jsx-runtime");
|
|
2952
|
+
function CopyButton({ text }) {
|
|
2953
|
+
const [copied, setCopied] = (0, import_react42.useState)(false);
|
|
2954
|
+
const timeoutRef = (0, import_react42.useRef)(null);
|
|
2955
|
+
(0, import_react42.useEffect)(() => {
|
|
2956
|
+
return () => {
|
|
2957
|
+
if (timeoutRef.current) clearTimeout(timeoutRef.current);
|
|
2958
|
+
};
|
|
2959
|
+
}, []);
|
|
2960
|
+
const handleCopy = async () => {
|
|
2961
|
+
try {
|
|
2962
|
+
await navigator.clipboard.writeText(text);
|
|
2963
|
+
setCopied(true);
|
|
2964
|
+
if (timeoutRef.current) clearTimeout(timeoutRef.current);
|
|
2965
|
+
timeoutRef.current = setTimeout(() => setCopied(false), 2e3);
|
|
2966
|
+
} catch (err) {
|
|
2967
|
+
console.error("Failed to copy: ", err);
|
|
2968
|
+
}
|
|
2969
|
+
};
|
|
2970
|
+
return /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(
|
|
2971
|
+
"button",
|
|
2972
|
+
{
|
|
2973
|
+
onClick: handleCopy,
|
|
2974
|
+
className: "flex gap-1 items-center hover:text-white transition",
|
|
2975
|
+
children: [
|
|
2976
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
|
|
2977
|
+
"svg",
|
|
2978
|
+
{
|
|
2979
|
+
width: "16",
|
|
2980
|
+
height: "16",
|
|
2981
|
+
viewBox: "0 0 24 24",
|
|
2982
|
+
className: "w-4 h-4",
|
|
2983
|
+
fill: "currentColor",
|
|
2984
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
|
|
2985
|
+
"path",
|
|
2986
|
+
{
|
|
2987
|
+
fillRule: "evenodd",
|
|
2988
|
+
clipRule: "evenodd",
|
|
2989
|
+
d: "M12 4C10.8954 4 10 4.89543 10 6H14C14 4.89543 13.1046 4 12 4ZM8.53513 4C9.22675 2.8044 10.5194 2 12 2C13.4806 2 14.7733 2.8044 15.4649 4H17C18.6569 4 20 5.34315 20 7V19C20 20.6569 18.6569 22 17 22H7C5.34315 22 4 20.6569 4 19V7C4 5.34315 5.34315 4 7 4H8.53513ZM8 6H7C6.44772 6 6 6.44772 6 7V19C6 19.5523 6.44772 20 7 20H17C17.5523 20 18 19.5523 18 19V7C18 6.44772 17.5523 6 17 6H16C16 7.10457 15.1046 8 14 8H10C8.89543 8 8 7.10457 8 6Z"
|
|
2990
|
+
}
|
|
2991
|
+
)
|
|
2992
|
+
}
|
|
2993
|
+
),
|
|
2994
|
+
copied ? "Copied!" : "Copy code"
|
|
2995
|
+
]
|
|
2996
|
+
}
|
|
2997
|
+
);
|
|
2998
|
+
}
|
|
2999
|
+
|
|
3000
|
+
// src/components/pageRenderingEngine/nodes/CodeNode.tsx
|
|
3001
|
+
var import_jsx_runtime53 = require("react/jsx-runtime");
|
|
2758
3002
|
var CodeNode = (props) => {
|
|
2759
3003
|
const NodeTypes2 = {
|
|
2760
3004
|
["text"]: TextNode_default,
|
|
2761
3005
|
["linebreak"]: LineBreakNode_default,
|
|
2762
3006
|
["link"]: LinkNode_default
|
|
2763
3007
|
};
|
|
2764
|
-
|
|
2765
|
-
|
|
2766
|
-
|
|
2767
|
-
|
|
3008
|
+
const textContent = props.node?.children?.map((node) => {
|
|
3009
|
+
if (node.type === "text") return node.text || "";
|
|
3010
|
+
if (node.type === "linebreak") return "\n";
|
|
3011
|
+
if (node.type === "link") return node.text || node.url || "";
|
|
3012
|
+
return "";
|
|
3013
|
+
}).join("") ?? "";
|
|
3014
|
+
return /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "code-block", children: [
|
|
3015
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "flex items-center relative text-gray-200 bg-gray-800 px-4 py-2.5 text-xs font-sans justify-between rounded-t-md", children: [
|
|
3016
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { children: "Code Snippet" }),
|
|
3017
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(CopyButton, { text: textContent })
|
|
3018
|
+
] }),
|
|
3019
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)("code", { className: "block bg-gray-900 text-gray-100 p-4 rounded-b-md text-sm whitespace-pre-wrap", children: props.node.children && props.node.children.map((node, index) => {
|
|
3020
|
+
const SelectedNode = NodeTypes2[node.type];
|
|
3021
|
+
return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_react43.default.Fragment, { children: SelectedNode && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(SelectedNode, { node, session: props.session, apiBaseUrl: props.apiBaseUrl, routeParameters: props.routeParameters }) }, index);
|
|
3022
|
+
}) })
|
|
3023
|
+
] });
|
|
2768
3024
|
};
|
|
2769
3025
|
var CodeNode_default = CodeNode;
|
|
2770
3026
|
|
|
2771
3027
|
// src/components/pageRenderingEngine/nodes/HorizontalRuleNode.tsx
|
|
2772
|
-
var
|
|
3028
|
+
var import_jsx_runtime54 = require("react/jsx-runtime");
|
|
2773
3029
|
var HorizontalRuleNode = (props) => {
|
|
2774
|
-
return /* @__PURE__ */ (0,
|
|
3030
|
+
return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("hr", {});
|
|
2775
3031
|
};
|
|
2776
3032
|
var HorizontalRuleNode_default = HorizontalRuleNode;
|
|
2777
3033
|
|
|
2778
|
-
// src/components/pageRenderingEngine/nodes/LayoutContainerNode.tsx
|
|
2779
|
-
var import_react45 = __toESM(require("react"));
|
|
2780
|
-
|
|
2781
3034
|
// src/components/pageRenderingEngine/nodes/LayoutItemNode.tsx
|
|
2782
|
-
var
|
|
3035
|
+
var import_react49 = __toESM(require("react"));
|
|
2783
3036
|
|
|
2784
3037
|
// src/components/pageRenderingEngine/nodes/ImageNode.tsx
|
|
2785
|
-
var
|
|
2786
|
-
var
|
|
3038
|
+
var import_react44 = __toESM(require("react"));
|
|
3039
|
+
var import_jsx_runtime55 = require("react/jsx-runtime");
|
|
2787
3040
|
var ImageNode = (props) => {
|
|
2788
3041
|
const { node, apiBaseUrl = "" } = props;
|
|
2789
3042
|
let imageUrl = node.imageUrl.startsWith("http") ? node.imageUrl : `${apiBaseUrl}/digitalassets/storefront/${node.imageUrl}`;
|
|
2790
|
-
return /* @__PURE__ */ (0,
|
|
3043
|
+
return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_react44.default.Fragment, { children: node.width ? /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("div", { style: { width: node.width }, children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
2791
3044
|
"img",
|
|
2792
3045
|
{
|
|
2793
3046
|
loading: "lazy",
|
|
@@ -2797,7 +3050,7 @@ var ImageNode = (props) => {
|
|
|
2797
3050
|
height: node.intrinsicHeight,
|
|
2798
3051
|
alt: node.title
|
|
2799
3052
|
}
|
|
2800
|
-
) }) : /* @__PURE__ */ (0,
|
|
3053
|
+
) }) : /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
2801
3054
|
"img",
|
|
2802
3055
|
{
|
|
2803
3056
|
loading: "lazy",
|
|
@@ -2811,8 +3064,204 @@ var ImageNode = (props) => {
|
|
|
2811
3064
|
};
|
|
2812
3065
|
var ImageNode_default = ImageNode;
|
|
2813
3066
|
|
|
3067
|
+
// src/components/pageRenderingEngine/nodes/WidgetNode.tsx
|
|
3068
|
+
var import_react45 = require("react");
|
|
3069
|
+
var import_jsx_runtime56 = require("react/jsx-runtime");
|
|
3070
|
+
var WidgetNode = (props) => {
|
|
3071
|
+
const getWidgetParameters = () => {
|
|
3072
|
+
const widgetInputParameters = { ...props.routeParameters ?? {} };
|
|
3073
|
+
const rawWidgetParams = props.node?.widgetParameters ?? props.node?.widgetParams;
|
|
3074
|
+
let widgetParameters = {};
|
|
3075
|
+
const isJSON = (str) => {
|
|
3076
|
+
if (typeof str !== "string") return false;
|
|
3077
|
+
str = str.trim();
|
|
3078
|
+
return str.startsWith("{") && str.endsWith("}") || str.startsWith("[") && str.endsWith("]");
|
|
3079
|
+
};
|
|
3080
|
+
if (rawWidgetParams) {
|
|
3081
|
+
if (typeof rawWidgetParams === "string" && isJSON(rawWidgetParams)) {
|
|
3082
|
+
widgetParameters = JSON.parse(rawWidgetParams);
|
|
3083
|
+
} else if (typeof rawWidgetParams === "object") {
|
|
3084
|
+
widgetParameters = rawWidgetParams;
|
|
3085
|
+
}
|
|
3086
|
+
}
|
|
3087
|
+
const resolveValue = (val) => {
|
|
3088
|
+
if (typeof val === "string") {
|
|
3089
|
+
const m = /^\{(.+)\}$/.exec(val);
|
|
3090
|
+
if (m) {
|
|
3091
|
+
const actualKey = m[1];
|
|
3092
|
+
return props.routeParameters?.[actualKey] ?? val;
|
|
3093
|
+
}
|
|
3094
|
+
return val;
|
|
3095
|
+
} else if (Array.isArray(val)) {
|
|
3096
|
+
return val.map(resolveValue);
|
|
3097
|
+
} else if (val && typeof val === "object") {
|
|
3098
|
+
const out = {};
|
|
3099
|
+
for (const k of Object.keys(val)) {
|
|
3100
|
+
out[k] = resolveValue(val[k]);
|
|
3101
|
+
}
|
|
3102
|
+
return out;
|
|
3103
|
+
}
|
|
3104
|
+
return val;
|
|
3105
|
+
};
|
|
3106
|
+
Object.keys(widgetParameters).forEach((key) => {
|
|
3107
|
+
const rawVal = widgetParameters[key];
|
|
3108
|
+
if (rawVal === "route") {
|
|
3109
|
+
if (key === "itemPath") {
|
|
3110
|
+
widgetInputParameters[key] = props.path;
|
|
3111
|
+
} else {
|
|
3112
|
+
widgetInputParameters[key] = widgetInputParameters[key] ?? null;
|
|
3113
|
+
}
|
|
3114
|
+
} else {
|
|
3115
|
+
widgetInputParameters[key] = resolveValue(rawVal);
|
|
3116
|
+
}
|
|
3117
|
+
});
|
|
3118
|
+
widgetInputParameters["widgetTitle"] = props.node?.widgetTitle;
|
|
3119
|
+
return widgetInputParameters;
|
|
3120
|
+
};
|
|
3121
|
+
const SelectedWidget = props.widgetRegistry?.[props.node.widgetCode];
|
|
3122
|
+
if (!SelectedWidget) {
|
|
3123
|
+
console.warn("Widget not found:", props.node.widgetCode);
|
|
3124
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(import_jsx_runtime56.Fragment, { children: [
|
|
3125
|
+
"Widget not found: ",
|
|
3126
|
+
props.node.widgetCode
|
|
3127
|
+
] });
|
|
3128
|
+
}
|
|
3129
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_react45.Suspense, { fallback: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { className: "container mt-2", children: "..." }), children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
|
|
3130
|
+
SelectedWidget,
|
|
3131
|
+
{
|
|
3132
|
+
params: getWidgetParameters(),
|
|
3133
|
+
query: props.query,
|
|
3134
|
+
session: props.session,
|
|
3135
|
+
host: props.host,
|
|
3136
|
+
path: props.path,
|
|
3137
|
+
apiBaseUrl: props.apiBaseUrl
|
|
3138
|
+
}
|
|
3139
|
+
) });
|
|
3140
|
+
};
|
|
3141
|
+
var WidgetNode_default = WidgetNode;
|
|
3142
|
+
|
|
3143
|
+
// src/components/pageRenderingEngine/nodes/IframeClient.tsx
|
|
3144
|
+
var import_react47 = __toESM(require("react"));
|
|
3145
|
+
|
|
3146
|
+
// src/components/IFrameLoaderView.tsx
|
|
3147
|
+
var import_react46 = __toESM(require("react"));
|
|
3148
|
+
var import_jsx_runtime57 = require("react/jsx-runtime");
|
|
3149
|
+
var IFrameLoaderView = (props) => {
|
|
3150
|
+
return /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_react46.default.Fragment, { children: [
|
|
3151
|
+
props.isDataFound == null && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "", children: /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "mt-4 bg-gray-200 rounded-md p-4 animate-pulse", children: [
|
|
3152
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "flex items-center mb-4", children: [
|
|
3153
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "bg-gray-300 h-8 w-8 rounded-full animate-pulse" }),
|
|
3154
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "ml-2", children: [
|
|
3155
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "bg-gray-300 h-3 w-16 animate-pulse" }),
|
|
3156
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "bg-gray-300 h-2 w-12 animate-pulse" })
|
|
3157
|
+
] })
|
|
3158
|
+
] }),
|
|
3159
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "grid grid-cols-3 gap-4 mt-6", children: [
|
|
3160
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "animate-pulse", children: [
|
|
3161
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "bg-gray-300 rounded-full h-3 w-12 mb-2" }),
|
|
3162
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "bg-gray-300 rounded-full h-3 w-24 mb-2" }),
|
|
3163
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "bg-gray-300 rounded-full h-3 w-32 mb-2" }),
|
|
3164
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "bg-gray-300 rounded-full h-3 w-16 mb-2" }),
|
|
3165
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "bg-gray-300 rounded-full h-3 w-28 mb-2" })
|
|
3166
|
+
] }),
|
|
3167
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "animate-pulse", children: [
|
|
3168
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "bg-gray-300 rounded-full h-3 w-12 mb-2" }),
|
|
3169
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "bg-gray-300 rounded-full h-3 w-24 mb-2" }),
|
|
3170
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "bg-gray-300 rounded-full h-3 w-32 mb-2" }),
|
|
3171
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "bg-gray-300 rounded-full h-3 w-16 mb-2" }),
|
|
3172
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "bg-gray-300 rounded-full h-3 w-28 mb-2" })
|
|
3173
|
+
] }),
|
|
3174
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "animate-pulse", children: [
|
|
3175
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "bg-gray-300 rounded-full h-3 w-12 mb-2" }),
|
|
3176
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "bg-gray-300 rounded-full h-3 w-24 mb-2" }),
|
|
3177
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "bg-gray-300 rounded-full h-3 w-32 mb-2" }),
|
|
3178
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "bg-gray-300 rounded-full h-3 w-16 mb-2" }),
|
|
3179
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "bg-gray-300 rounded-full h-3 w-28 mb-2" })
|
|
3180
|
+
] })
|
|
3181
|
+
] })
|
|
3182
|
+
] }) }),
|
|
3183
|
+
props.children
|
|
3184
|
+
] });
|
|
3185
|
+
};
|
|
3186
|
+
var IFrameLoaderView_default = IFrameLoaderView;
|
|
3187
|
+
|
|
3188
|
+
// src/components/pageRenderingEngine/nodes/IframeClient.tsx
|
|
3189
|
+
var import_jsx_runtime58 = require("react/jsx-runtime");
|
|
3190
|
+
var IframeClient = ({ src }) => {
|
|
3191
|
+
const iframeRef = (0, import_react47.useRef)(null);
|
|
3192
|
+
const [iframeHeight, setIframeHeight] = (0, import_react47.useState)("100%");
|
|
3193
|
+
const [isDataFound, setIsDataFound] = (0, import_react47.useState)(null);
|
|
3194
|
+
(0, import_react47.useEffect)(() => {
|
|
3195
|
+
const handleReceiveMessage = (event) => {
|
|
3196
|
+
const eventName = event?.data?.eventName;
|
|
3197
|
+
const payload = event?.data?.payload;
|
|
3198
|
+
if (eventName === "SET_HEIGHT" && payload?.height) {
|
|
3199
|
+
let height = 500;
|
|
3200
|
+
if (payload.height > 500) {
|
|
3201
|
+
height = payload.height + 50;
|
|
3202
|
+
}
|
|
3203
|
+
setIframeHeight(`${height}px`);
|
|
3204
|
+
}
|
|
3205
|
+
};
|
|
3206
|
+
window.addEventListener("message", handleReceiveMessage);
|
|
3207
|
+
return () => window.removeEventListener("message", handleReceiveMessage);
|
|
3208
|
+
}, []);
|
|
3209
|
+
(0, import_react47.useEffect)(() => {
|
|
3210
|
+
const handleResize = () => {
|
|
3211
|
+
if (iframeRef.current) {
|
|
3212
|
+
iframeRef.current.contentWindow?.postMessage({ eventName: "RESIZE" }, "*");
|
|
3213
|
+
}
|
|
3214
|
+
};
|
|
3215
|
+
window.addEventListener("resize", handleResize);
|
|
3216
|
+
return () => window.removeEventListener("resize", handleResize);
|
|
3217
|
+
}, []);
|
|
3218
|
+
const handleIframeLoad = () => {
|
|
3219
|
+
setIsDataFound(true);
|
|
3220
|
+
};
|
|
3221
|
+
return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_react47.default.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(IFrameLoaderView_default, { isDataFound, children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
3222
|
+
"iframe",
|
|
3223
|
+
{
|
|
3224
|
+
ref: iframeRef,
|
|
3225
|
+
src,
|
|
3226
|
+
className: "w-full h-full border-none",
|
|
3227
|
+
scrolling: "no",
|
|
3228
|
+
onLoad: handleIframeLoad
|
|
3229
|
+
}
|
|
3230
|
+
) }) });
|
|
3231
|
+
};
|
|
3232
|
+
var IframeClient_default = IframeClient;
|
|
3233
|
+
|
|
3234
|
+
// src/components/pageRenderingEngine/nodes/EmbedNode.tsx
|
|
3235
|
+
var import_jsx_runtime59 = require("react/jsx-runtime");
|
|
3236
|
+
var EmbedNode = (props) => {
|
|
3237
|
+
let src;
|
|
3238
|
+
if (props.node.provider == "youtube") {
|
|
3239
|
+
src = `https://www.youtube-nocookie.com/embed/${props.node.embedSrc}`;
|
|
3240
|
+
} else if (props.node.provider == "bunny") {
|
|
3241
|
+
src = `https://iframe.mediadelivery.net/embed/${props.node.embedSrc}?autoplay=false&loop=false&muted=false&preload=true&responsive=true`;
|
|
3242
|
+
} else {
|
|
3243
|
+
src = props.node.embedSrc;
|
|
3244
|
+
}
|
|
3245
|
+
return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("div", { className: "aspect-video", children: src && /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(IframeClient_default, { src }) });
|
|
3246
|
+
};
|
|
3247
|
+
var EmbedNode_default = EmbedNode;
|
|
3248
|
+
|
|
3249
|
+
// src/components/pageRenderingEngine/nodes/VideoNode.tsx
|
|
3250
|
+
var import_react48 = __toESM(require("react"));
|
|
3251
|
+
var import_jsx_runtime60 = require("react/jsx-runtime");
|
|
3252
|
+
var VideoNode = (props) => {
|
|
3253
|
+
let src;
|
|
3254
|
+
if (props.node.provider == "youtube") {
|
|
3255
|
+
src = `https://www.youtube-nocookie.com/embed/${props.node.videoId}`;
|
|
3256
|
+
} else if (props.node.provider == "bunny") {
|
|
3257
|
+
src = `https://iframe.mediadelivery.net/embed/${props.node.videoId}?autoplay=false&loop=false&muted=false&preload=true&responsive=true`;
|
|
3258
|
+
}
|
|
3259
|
+
return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_react48.default.Fragment, { children: src && /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("iframe", { className: "w-full aspect-video rounded", src, loading: "lazy", allow: "accelerometer;gyroscope;autoplay;encrypted-media;picture-in-picture;", allowFullScreen: true }) });
|
|
3260
|
+
};
|
|
3261
|
+
var VideoNode_default = VideoNode;
|
|
3262
|
+
|
|
2814
3263
|
// src/components/pageRenderingEngine/nodes/LayoutItemNode.tsx
|
|
2815
|
-
var
|
|
3264
|
+
var import_jsx_runtime61 = require("react/jsx-runtime");
|
|
2816
3265
|
var LayoutItemNode = (props) => {
|
|
2817
3266
|
const NodeTypes2 = {
|
|
2818
3267
|
["paragraph"]: ParagraphNode_default,
|
|
@@ -2823,7 +3272,11 @@ var LayoutItemNode = (props) => {
|
|
|
2823
3272
|
["horizontalrule"]: HorizontalRuleNode_default,
|
|
2824
3273
|
["image"]: ImageNode_default,
|
|
2825
3274
|
["layout-container"]: LayoutContainerNode_default,
|
|
2826
|
-
["link"]: LinkNode_default
|
|
3275
|
+
["link"]: LinkNode_default,
|
|
3276
|
+
["widget"]: WidgetNode_default,
|
|
3277
|
+
["youtube"]: VideoNode_default,
|
|
3278
|
+
["video"]: VideoNode_default,
|
|
3279
|
+
["embed"]: EmbedNode_default
|
|
2827
3280
|
};
|
|
2828
3281
|
let cssClasses = "";
|
|
2829
3282
|
if (props.order) {
|
|
@@ -2841,6 +3294,7 @@ var LayoutItemNode = (props) => {
|
|
|
2841
3294
|
}
|
|
2842
3295
|
if (props.node.itemBorderRadius) {
|
|
2843
3296
|
styles.borderRadius = props.node.itemBorderRadius;
|
|
3297
|
+
styles.overflow = "hidden";
|
|
2844
3298
|
}
|
|
2845
3299
|
function removeParagraphsAtStartAndEnd(layoutItem) {
|
|
2846
3300
|
let startIndex = 0;
|
|
@@ -2857,6 +3311,8 @@ var LayoutItemNode = (props) => {
|
|
|
2857
3311
|
}
|
|
2858
3312
|
if (startIndex <= endIndex) {
|
|
2859
3313
|
layoutItem.children = layoutItem.children.slice(startIndex, endIndex + 1);
|
|
3314
|
+
} else {
|
|
3315
|
+
layoutItem.children = [];
|
|
2860
3316
|
}
|
|
2861
3317
|
return layoutItem;
|
|
2862
3318
|
}
|
|
@@ -2866,201 +3322,160 @@ var LayoutItemNode = (props) => {
|
|
|
2866
3322
|
} else {
|
|
2867
3323
|
updatedLayout = removeParagraphsAtStartAndEnd(props.node);
|
|
2868
3324
|
}
|
|
2869
|
-
return /* @__PURE__ */ (0,
|
|
3325
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_react49.default.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("div", { className: "layout-item " + cssClasses, style: { ...styles }, children: updatedLayout.children.map((node, index) => {
|
|
2870
3326
|
{
|
|
2871
3327
|
}
|
|
2872
3328
|
const SelectedNode = NodeTypes2[node.type];
|
|
2873
|
-
return /* @__PURE__ */ (0,
|
|
2874
|
-
|
|
3329
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_react49.default.Fragment, { children: SelectedNode && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
3330
|
+
SelectedNode,
|
|
3331
|
+
{
|
|
3332
|
+
node,
|
|
3333
|
+
routeParameters: props.routeParameters,
|
|
3334
|
+
query: props.query,
|
|
3335
|
+
session: props.session,
|
|
3336
|
+
host: props.host,
|
|
3337
|
+
path: props.path,
|
|
3338
|
+
apiBaseUrl: props.apiBaseUrl
|
|
3339
|
+
}
|
|
3340
|
+
) }, index);
|
|
3341
|
+
}) }) });
|
|
2875
3342
|
};
|
|
2876
3343
|
var LayoutItemNode_default = LayoutItemNode;
|
|
2877
3344
|
|
|
2878
|
-
// src/components/
|
|
2879
|
-
var
|
|
2880
|
-
|
|
2881
|
-
|
|
2882
|
-
|
|
2883
|
-
|
|
2884
|
-
|
|
2885
|
-
|
|
2886
|
-
}
|
|
2887
|
-
|
|
2888
|
-
"1fr": "layout-grid-col-1",
|
|
2889
|
-
"1fr 1fr": "layout-grid-col-2-equal",
|
|
2890
|
-
"1fr 2fr": "layout-grid-col-2-widths-33-67",
|
|
2891
|
-
"2fr 1fr": "layout-grid-col-2-widths-67-33",
|
|
2892
|
-
"3fr 2fr": "layout-grid-col-2-widths-60-40",
|
|
2893
|
-
"3fr 1fr": "layout-grid-col-2-widths-75-25",
|
|
2894
|
-
"1fr 1fr 1fr": "layout-grid-col-3-equal",
|
|
2895
|
-
"1fr 2fr 1fr": "layout-grid-col-3-widths-25-50-25",
|
|
2896
|
-
"1fr 6fr 1fr": "layout-grid-col-3-widths-15-70-15",
|
|
2897
|
-
"1fr 1fr 1fr 1fr": "layout-grid-col-4-equal"
|
|
3345
|
+
// src/components/utilities/AssetUtility.tsx
|
|
3346
|
+
var AssetUtility = class {
|
|
3347
|
+
constructor() {
|
|
3348
|
+
}
|
|
3349
|
+
static resolveUrl(apiBaseUrl, url) {
|
|
3350
|
+
if (!url) return void 0;
|
|
3351
|
+
if (url.startsWith("http")) return url;
|
|
3352
|
+
if (!apiBaseUrl) return url;
|
|
3353
|
+
return `${apiBaseUrl}/digitalassets-management/${url}`;
|
|
3354
|
+
}
|
|
2898
3355
|
};
|
|
3356
|
+
var AssetUtility_default = AssetUtility;
|
|
3357
|
+
|
|
3358
|
+
// src/components/pageRenderingEngine/nodes/LayoutContainerNode.tsx
|
|
3359
|
+
var import_jsx_runtime62 = require("react/jsx-runtime");
|
|
2899
3360
|
var LayoutContainerNode = (props) => {
|
|
2900
|
-
const
|
|
2901
|
-
|
|
2902
|
-
|
|
2903
|
-
|
|
2904
|
-
|
|
2905
|
-
|
|
2906
|
-
}
|
|
2907
|
-
|
|
2908
|
-
|
|
2909
|
-
|
|
3361
|
+
const VERTICAL_ALIGNMENT_CLASSES = {
|
|
3362
|
+
start: "items-start",
|
|
3363
|
+
center: "items-center place-content-center",
|
|
3364
|
+
end: "items-end",
|
|
3365
|
+
stretch: "items-stretch",
|
|
3366
|
+
baseline: "items-baseline"
|
|
3367
|
+
};
|
|
3368
|
+
const LAYOUTGRID_COLS_CLASSES = {
|
|
3369
|
+
"1fr": "layout-grid-col-1",
|
|
3370
|
+
"1fr 1fr": "layout-grid-col-2-equal",
|
|
3371
|
+
"1fr 2fr": "layout-grid-col-2-widths-33-67",
|
|
3372
|
+
"2fr 1fr": "layout-grid-col-2-widths-67-33",
|
|
3373
|
+
"3fr 2fr": "layout-grid-col-2-widths-60-40",
|
|
3374
|
+
"3fr 1fr": "layout-grid-col-2-widths-75-25",
|
|
3375
|
+
"1fr 1fr 1fr": "layout-grid-col-3-equal",
|
|
3376
|
+
"1fr 2fr 1fr": "layout-grid-col-3-widths-25-50-25",
|
|
3377
|
+
"1fr 6fr 1fr": "layout-grid-col-3-widths-15-70-15",
|
|
3378
|
+
"1fr 1fr 1fr 1fr": "layout-grid-col-4-equal"
|
|
3379
|
+
};
|
|
3380
|
+
const sectionWidth = props.node.sectionWidth || "fixed";
|
|
3381
|
+
let gridCssClasses = LAYOUTGRID_COLS_CLASSES[props.node.templateColumns] || "";
|
|
3382
|
+
if (props.node.contentVerticalAlignment) {
|
|
3383
|
+
gridCssClasses += " " + (VERTICAL_ALIGNMENT_CLASSES[props.node.contentVerticalAlignment] || "");
|
|
2910
3384
|
}
|
|
3385
|
+
const columnGap = props.node.columnGap || "0.5rem";
|
|
2911
3386
|
const styles = {};
|
|
2912
|
-
|
|
2913
|
-
styles.backgroundColor = node.backgroundColor;
|
|
2914
|
-
}
|
|
2915
|
-
let cssClasses = "layout_grid ";
|
|
3387
|
+
let cssClasses = "layout_grid";
|
|
2916
3388
|
let addPadding = false;
|
|
2917
|
-
if (node.
|
|
2918
|
-
|
|
2919
|
-
}
|
|
2920
|
-
cssClasses = cssClasses + " " + (node.boxShadow || "");
|
|
2921
|
-
addPadding = true;
|
|
3389
|
+
if (props.node.backgroundColor) {
|
|
3390
|
+
styles.backgroundColor = props.node.backgroundColor;
|
|
2922
3391
|
}
|
|
2923
|
-
if (node.borderWidth) {
|
|
2924
|
-
styles.borderWidth = node.borderWidth;
|
|
3392
|
+
if (props.node.borderWidth) {
|
|
3393
|
+
styles.borderWidth = props.node.borderWidth;
|
|
2925
3394
|
addPadding = true;
|
|
2926
3395
|
}
|
|
2927
|
-
if (node.borderRadius) {
|
|
2928
|
-
styles.borderRadius = node.borderRadius;
|
|
3396
|
+
if (props.node.borderRadius) {
|
|
3397
|
+
styles.borderRadius = props.node.borderRadius;
|
|
2929
3398
|
}
|
|
2930
|
-
|
|
2931
|
-
|
|
2932
|
-
|
|
2933
|
-
if (!resolvedPath.startsWith("http")) {
|
|
2934
|
-
resolvedPath = `${apiBaseUrl}/digitalassets/storefront/${resolvedPath}`;
|
|
2935
|
-
}
|
|
2936
|
-
backgroundStyle = `url('${resolvedPath}'),`;
|
|
2937
|
-
}
|
|
2938
|
-
if (node.gradientColor1 && node.gradientColor2) {
|
|
2939
|
-
backgroundStyle += `linear-gradient(to bottom, ${node.gradientColor1}, ${node.gradientColor2}),`;
|
|
3399
|
+
if (props.node.boxShadow && props.node.boxShadow !== "shadow-none") {
|
|
3400
|
+
cssClasses += " " + props.node.boxShadow;
|
|
3401
|
+
addPadding = true;
|
|
2940
3402
|
}
|
|
2941
|
-
|
|
2942
|
-
|
|
3403
|
+
const backgroundLayers = [];
|
|
3404
|
+
if (props.node.backgroundImage) {
|
|
3405
|
+
const resolved = AssetUtility_default.resolveUrl(
|
|
3406
|
+
props.apiBaseUrl,
|
|
3407
|
+
props.node.backgroundImage
|
|
3408
|
+
);
|
|
3409
|
+
if (resolved) {
|
|
3410
|
+
backgroundLayers.push(`url('${resolved}')`);
|
|
3411
|
+
addPadding = true;
|
|
3412
|
+
}
|
|
2943
3413
|
}
|
|
2944
|
-
if (
|
|
2945
|
-
|
|
2946
|
-
|
|
3414
|
+
if (props.node.gradientColor1 && props.node.gradientColor2) {
|
|
3415
|
+
backgroundLayers.push(
|
|
3416
|
+
`linear-gradient(to bottom, ${props.node.gradientColor1}, ${props.node.gradientColor2})`
|
|
3417
|
+
);
|
|
3418
|
+
addPadding = true;
|
|
3419
|
+
} else if (props.node.gradientColor1) {
|
|
3420
|
+
backgroundLayers.push(props.node.gradientColor1);
|
|
3421
|
+
addPadding = true;
|
|
3422
|
+
} else if (props.node.gradientColor2) {
|
|
3423
|
+
backgroundLayers.push(props.node.gradientColor2);
|
|
2947
3424
|
addPadding = true;
|
|
2948
3425
|
}
|
|
2949
|
-
|
|
2950
|
-
|
|
2951
|
-
sectionWidth = node.sectionWidth;
|
|
3426
|
+
if (backgroundLayers.length) {
|
|
3427
|
+
styles.background = backgroundLayers.join(", ");
|
|
2952
3428
|
}
|
|
2953
|
-
|
|
2954
|
-
|
|
2955
|
-
|
|
2956
|
-
|
|
2957
|
-
|
|
3429
|
+
const renderChildren = () => props.node.children?.map((node, index) => /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
3430
|
+
LayoutItemNode_default,
|
|
3431
|
+
{
|
|
3432
|
+
node,
|
|
3433
|
+
order: props.node.smOrder === "reverse" ? props.node.children.length - index : index,
|
|
3434
|
+
routeParameters: props.routeParameters,
|
|
3435
|
+
query: props.query,
|
|
3436
|
+
session: props.session,
|
|
3437
|
+
host: props.host,
|
|
3438
|
+
path: props.path,
|
|
3439
|
+
apiBaseUrl: props.apiBaseUrl
|
|
3440
|
+
},
|
|
3441
|
+
index
|
|
3442
|
+
));
|
|
3443
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(import_jsx_runtime62.Fragment, { children: [
|
|
3444
|
+
sectionWidth === "mixed" && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: cssClasses, style: styles, children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "container", children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
2958
3445
|
"div",
|
|
2959
3446
|
{
|
|
2960
|
-
className:
|
|
3447
|
+
className: `grid gap-y-4 lg:gap-y-0 ${gridCssClasses} ${addPadding ? "py-8 lg:py-6" : ""}`,
|
|
3448
|
+
style: { columnGap, minHeight: props.node.height },
|
|
3449
|
+
children: renderChildren()
|
|
3450
|
+
}
|
|
3451
|
+
) }) }),
|
|
3452
|
+
sectionWidth === "full" && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
3453
|
+
"div",
|
|
3454
|
+
{
|
|
3455
|
+
className: `grid gap-y-4 lg:gap-y-0 ${cssClasses} ${gridCssClasses} ${addPadding ? "p-8 lg:p-0" : ""}`,
|
|
2961
3456
|
style: { columnGap, ...styles },
|
|
2962
|
-
children:
|
|
2963
|
-
return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_react45.default.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(LayoutItemNode_default, { node: node2, order: props.node.smOrder == "reverse" ? node2.children.length - index : index }) }, index);
|
|
2964
|
-
})
|
|
3457
|
+
children: renderChildren()
|
|
2965
3458
|
}
|
|
2966
3459
|
),
|
|
2967
|
-
sectionWidth
|
|
3460
|
+
sectionWidth === "fixed" && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "container", children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
2968
3461
|
"div",
|
|
2969
3462
|
{
|
|
2970
|
-
className:
|
|
3463
|
+
className: `grid gap-y-4 lg:gap-y-0 ${cssClasses} ${gridCssClasses} ${addPadding ? "px-8 py-6 lg:px-6 lg:py-6" : ""}`,
|
|
2971
3464
|
style: { columnGap, ...styles },
|
|
2972
|
-
children:
|
|
2973
|
-
return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_react45.default.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(LayoutItemNode_default, { node: node2, order: props.node.smOrder == "reverse" ? node2.children.length - index : index }) }, index);
|
|
2974
|
-
})
|
|
3465
|
+
children: renderChildren()
|
|
2975
3466
|
}
|
|
2976
3467
|
) })
|
|
2977
3468
|
] });
|
|
2978
3469
|
};
|
|
2979
3470
|
var LayoutContainerNode_default = LayoutContainerNode;
|
|
2980
3471
|
|
|
2981
|
-
// src/components/pageRenderingEngine/nodes/WidgetNode.tsx
|
|
2982
|
-
var import_react46 = require("react");
|
|
2983
|
-
var import_jsx_runtime56 = require("react/jsx-runtime");
|
|
2984
|
-
var WidgetNode = (props) => {
|
|
2985
|
-
const getWidgetParameters = () => {
|
|
2986
|
-
const widgetInputParameters = { ...props.routeParameters ?? {} };
|
|
2987
|
-
const rawWidgetParams = props.node?.widgetParameters ?? props.node?.widgetParams;
|
|
2988
|
-
let widgetParameters = {};
|
|
2989
|
-
const isJSON = (str) => {
|
|
2990
|
-
if (typeof str !== "string") return false;
|
|
2991
|
-
str = str.trim();
|
|
2992
|
-
return str.startsWith("{") && str.endsWith("}") || str.startsWith("[") && str.endsWith("]");
|
|
2993
|
-
};
|
|
2994
|
-
if (rawWidgetParams) {
|
|
2995
|
-
if (typeof rawWidgetParams === "string" && isJSON(rawWidgetParams)) {
|
|
2996
|
-
widgetParameters = JSON.parse(rawWidgetParams);
|
|
2997
|
-
} else if (typeof rawWidgetParams === "object") {
|
|
2998
|
-
widgetParameters = rawWidgetParams;
|
|
2999
|
-
}
|
|
3000
|
-
}
|
|
3001
|
-
const resolveValue = (val) => {
|
|
3002
|
-
if (typeof val === "string") {
|
|
3003
|
-
const m = /^\{(.+)\}$/.exec(val);
|
|
3004
|
-
if (m) {
|
|
3005
|
-
const actualKey = m[1];
|
|
3006
|
-
return props.routeParameters?.[actualKey] ?? val;
|
|
3007
|
-
}
|
|
3008
|
-
return val;
|
|
3009
|
-
} else if (Array.isArray(val)) {
|
|
3010
|
-
return val.map(resolveValue);
|
|
3011
|
-
} else if (val && typeof val === "object") {
|
|
3012
|
-
const out = {};
|
|
3013
|
-
for (const k of Object.keys(val)) {
|
|
3014
|
-
out[k] = resolveValue(val[k]);
|
|
3015
|
-
}
|
|
3016
|
-
return out;
|
|
3017
|
-
}
|
|
3018
|
-
return val;
|
|
3019
|
-
};
|
|
3020
|
-
Object.keys(widgetParameters).forEach((key) => {
|
|
3021
|
-
const rawVal = widgetParameters[key];
|
|
3022
|
-
if (rawVal === "route") {
|
|
3023
|
-
if (key === "itemPath") {
|
|
3024
|
-
widgetInputParameters[key] = props.path;
|
|
3025
|
-
} else {
|
|
3026
|
-
widgetInputParameters[key] = widgetInputParameters[key] ?? null;
|
|
3027
|
-
}
|
|
3028
|
-
} else {
|
|
3029
|
-
widgetInputParameters[key] = resolveValue(rawVal);
|
|
3030
|
-
}
|
|
3031
|
-
});
|
|
3032
|
-
widgetInputParameters["widgetTitle"] = props.node?.widgetTitle;
|
|
3033
|
-
return widgetInputParameters;
|
|
3034
|
-
};
|
|
3035
|
-
const SelectedWidget = props.widgetRegistry?.[props.node.widgetCode];
|
|
3036
|
-
if (!SelectedWidget) {
|
|
3037
|
-
console.warn("Widget not found:", props.node.widgetCode);
|
|
3038
|
-
return /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(import_jsx_runtime56.Fragment, { children: [
|
|
3039
|
-
"Widget not found: ",
|
|
3040
|
-
props.node.widgetCode
|
|
3041
|
-
] });
|
|
3042
|
-
}
|
|
3043
|
-
return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_react46.Suspense, { fallback: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { className: "container mt-2", children: "..." }), children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
|
|
3044
|
-
SelectedWidget,
|
|
3045
|
-
{
|
|
3046
|
-
params: getWidgetParameters(),
|
|
3047
|
-
query: props.query,
|
|
3048
|
-
session: props.session,
|
|
3049
|
-
host: props.host,
|
|
3050
|
-
path: props.path,
|
|
3051
|
-
apiBaseUrl: props.apiBaseUrl
|
|
3052
|
-
}
|
|
3053
|
-
) });
|
|
3054
|
-
};
|
|
3055
|
-
var WidgetNode_default = WidgetNode;
|
|
3056
|
-
|
|
3057
3472
|
// src/components/pageRenderingEngine/nodes/FormContainerNode.tsx
|
|
3058
|
-
var
|
|
3473
|
+
var import_react50 = __toESM(require("react"));
|
|
3059
3474
|
|
|
3060
3475
|
// src/components/pageRenderingEngine/nodes/InputControlNode.tsx
|
|
3061
|
-
var
|
|
3476
|
+
var import_jsx_runtime63 = require("react/jsx-runtime");
|
|
3062
3477
|
var InputControlNode = (props) => {
|
|
3063
|
-
return /* @__PURE__ */ (0,
|
|
3478
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
3064
3479
|
InputControl_default,
|
|
3065
3480
|
{
|
|
3066
3481
|
name: props.node.name,
|
|
@@ -3089,19 +3504,19 @@ var InputControlNode = (props) => {
|
|
|
3089
3504
|
var InputControlNode_default = InputControlNode;
|
|
3090
3505
|
|
|
3091
3506
|
// src/components/pageRenderingEngine/nodes/FormContainerNode.tsx
|
|
3092
|
-
var
|
|
3507
|
+
var import_jsx_runtime64 = require("react/jsx-runtime");
|
|
3093
3508
|
var FormContainerNode = (props) => {
|
|
3094
3509
|
const NodeTypes2 = {
|
|
3095
3510
|
["input-control"]: InputControlNode_default
|
|
3096
3511
|
};
|
|
3097
3512
|
const { node } = props;
|
|
3098
|
-
const formRef = (0,
|
|
3513
|
+
const formRef = (0, import_react50.useRef)(null);
|
|
3099
3514
|
const initialState = {
|
|
3100
3515
|
inputValues: {},
|
|
3101
3516
|
lastPropertyChanged: ""
|
|
3102
3517
|
};
|
|
3103
|
-
const [formState, dispatch] = (0,
|
|
3104
|
-
const handleInputChange = (0,
|
|
3518
|
+
const [formState, dispatch] = (0, import_react50.useReducer)(FormReducer_default, initialState);
|
|
3519
|
+
const handleInputChange = (0, import_react50.useCallback)((updatedValues) => {
|
|
3105
3520
|
dispatch({ type: FORM_INPUT_UPDATE, name: updatedValues.name, value: updatedValues.value });
|
|
3106
3521
|
}, [dispatch]);
|
|
3107
3522
|
const onValidate = async () => {
|
|
@@ -3112,7 +3527,7 @@ var FormContainerNode = (props) => {
|
|
|
3112
3527
|
return true;
|
|
3113
3528
|
}
|
|
3114
3529
|
};
|
|
3115
|
-
(0,
|
|
3530
|
+
(0, import_react50.useEffect)(() => {
|
|
3116
3531
|
const fetchInitialData = async () => {
|
|
3117
3532
|
if (!props.fetchData || !node.dataFetchApi) return;
|
|
3118
3533
|
const response = await props.fetchData(
|
|
@@ -3129,12 +3544,12 @@ var FormContainerNode = (props) => {
|
|
|
3129
3544
|
};
|
|
3130
3545
|
fetchInitialData();
|
|
3131
3546
|
}, [props.fetchData, node.dataFetchApi, props.routeParameters]);
|
|
3132
|
-
return /* @__PURE__ */ (0,
|
|
3547
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("form", { className: "group space-y-6 pb-6 overflow-y-auto", noValidate: true, ref: formRef, children: [
|
|
3133
3548
|
node.children && node.children.map((node2, index) => {
|
|
3134
3549
|
{
|
|
3135
3550
|
}
|
|
3136
3551
|
const SelectedNode = NodeTypes2[node2.type];
|
|
3137
|
-
return /* @__PURE__ */ (0,
|
|
3552
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_react50.default.Fragment, { children: SelectedNode && node2.type == "input-control" && /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
|
|
3138
3553
|
InputControlNode_default,
|
|
3139
3554
|
{
|
|
3140
3555
|
value: formState.inputValues[node2.name],
|
|
@@ -3143,34 +3558,15 @@ var FormContainerNode = (props) => {
|
|
|
3143
3558
|
}
|
|
3144
3559
|
) }, index);
|
|
3145
3560
|
}),
|
|
3146
|
-
node.children.length == 0 && /* @__PURE__ */ (0,
|
|
3561
|
+
node.children.length == 0 && /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { className: "py-0.5 lg:py-1.5" })
|
|
3147
3562
|
] });
|
|
3148
3563
|
};
|
|
3149
3564
|
var FormContainerNode_default = FormContainerNode;
|
|
3150
3565
|
|
|
3151
3566
|
// src/components/pageRenderingEngine/nodes/DivContainer.tsx
|
|
3152
|
-
var
|
|
3567
|
+
var import_react51 = __toESM(require("react"));
|
|
3153
3568
|
var import_link3 = __toESM(require("next/link"));
|
|
3154
|
-
|
|
3155
|
-
// src/components/utilities/AssetUtility.tsx
|
|
3156
|
-
var AssetUtility = class {
|
|
3157
|
-
constructor() {
|
|
3158
|
-
}
|
|
3159
|
-
static resolveUrl(apiBaseUrl, url) {
|
|
3160
|
-
if (url) {
|
|
3161
|
-
if (url.startsWith("http")) {
|
|
3162
|
-
return url;
|
|
3163
|
-
} else {
|
|
3164
|
-
return `${apiBaseUrl}/digitalassets-management/${url}`;
|
|
3165
|
-
}
|
|
3166
|
-
}
|
|
3167
|
-
return void 0;
|
|
3168
|
-
}
|
|
3169
|
-
};
|
|
3170
|
-
var AssetUtility_default = AssetUtility;
|
|
3171
|
-
|
|
3172
|
-
// src/components/pageRenderingEngine/nodes/DivContainer.tsx
|
|
3173
|
-
var import_jsx_runtime59 = require("react/jsx-runtime");
|
|
3569
|
+
var import_jsx_runtime65 = require("react/jsx-runtime");
|
|
3174
3570
|
var DivContainer = (props) => {
|
|
3175
3571
|
const { cssProperties: styles, hoverCssProperties: hoverStyles, mobileCssProperties: mobileStyles } = props.node;
|
|
3176
3572
|
const updatedStyles = convertKeysToCamelCase(styles);
|
|
@@ -3184,8 +3580,10 @@ var DivContainer = (props) => {
|
|
|
3184
3580
|
["horizontalrule"]: HorizontalRuleNode_default,
|
|
3185
3581
|
["layout-container"]: LayoutContainerNode_default,
|
|
3186
3582
|
["widget"]: WidgetNode_default,
|
|
3583
|
+
["embed"]: EmbedNode_default,
|
|
3187
3584
|
["div-container"]: DivContainer,
|
|
3188
3585
|
["text"]: TextNode_default,
|
|
3586
|
+
["datafield"]: DatafieldNode_default,
|
|
3189
3587
|
["svg-icon"]: SVGIconNode_default
|
|
3190
3588
|
};
|
|
3191
3589
|
function toCamelCase(str) {
|
|
@@ -3287,9 +3685,9 @@ ${mobileCssRules.join("\n")}
|
|
|
3287
3685
|
return css2;
|
|
3288
3686
|
};
|
|
3289
3687
|
const css = generateCssString(updatedStyle, hoverStyles, mobileStyles);
|
|
3290
|
-
return /* @__PURE__ */ (0,
|
|
3291
|
-
/* @__PURE__ */ (0,
|
|
3292
|
-
props.node.href && props.node.href !== "" ? /* @__PURE__ */ (0,
|
|
3688
|
+
return /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(import_react51.default.Fragment, { children: [
|
|
3689
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("style", { dangerouslySetInnerHTML: { __html: css } }),
|
|
3690
|
+
props.node.href && props.node.href !== "" ? /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_link3.default, { href: props.node.href, className: "block", children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
3293
3691
|
"div",
|
|
3294
3692
|
{
|
|
3295
3693
|
id: guid,
|
|
@@ -3297,7 +3695,7 @@ ${mobileCssRules.join("\n")}
|
|
|
3297
3695
|
className: containerPaddingClass,
|
|
3298
3696
|
children: props.node.children?.map((node, index) => {
|
|
3299
3697
|
const SelectedNode = NodeTypes2[node.type];
|
|
3300
|
-
return /* @__PURE__ */ (0,
|
|
3698
|
+
return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_react51.default.Fragment, { children: SelectedNode && /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
3301
3699
|
SelectedNode,
|
|
3302
3700
|
{
|
|
3303
3701
|
node,
|
|
@@ -3312,9 +3710,9 @@ ${mobileCssRules.join("\n")}
|
|
|
3312
3710
|
) }, index);
|
|
3313
3711
|
})
|
|
3314
3712
|
}
|
|
3315
|
-
) }) : /* @__PURE__ */ (0,
|
|
3713
|
+
) }) : /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("div", { id: guid, style: { ...backgroundStyle }, className: containerPaddingClass, children: props.node.children && props.node.children.map((node, index) => {
|
|
3316
3714
|
const SelectedNode = NodeTypes2[node.type];
|
|
3317
|
-
return /* @__PURE__ */ (0,
|
|
3715
|
+
return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_react51.default.Fragment, { children: SelectedNode && /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
3318
3716
|
SelectedNode,
|
|
3319
3717
|
{
|
|
3320
3718
|
node,
|
|
@@ -3333,7 +3731,7 @@ ${mobileCssRules.join("\n")}
|
|
|
3333
3731
|
var DivContainer_default = DivContainer;
|
|
3334
3732
|
|
|
3335
3733
|
// src/components/pageRenderingEngine/PageBodyRenderer.tsx
|
|
3336
|
-
var
|
|
3734
|
+
var import_jsx_runtime66 = require("react/jsx-runtime");
|
|
3337
3735
|
var NodeTypes = {
|
|
3338
3736
|
["paragraph"]: ParagraphNode_default,
|
|
3339
3737
|
["heading"]: HeadingNode_default,
|
|
@@ -3346,7 +3744,8 @@ var NodeTypes = {
|
|
|
3346
3744
|
["widget"]: WidgetNode_default,
|
|
3347
3745
|
["form-container"]: FormContainerNode_default,
|
|
3348
3746
|
["div-container"]: DivContainer_default,
|
|
3349
|
-
["svg-icon"]: SVGIconNode_default
|
|
3747
|
+
["svg-icon"]: SVGIconNode_default,
|
|
3748
|
+
["embed"]: EmbedNode_default
|
|
3350
3749
|
};
|
|
3351
3750
|
var PageBodyRenderer = (props) => {
|
|
3352
3751
|
let pageBodyTree;
|
|
@@ -3360,11 +3759,11 @@ var PageBodyRenderer = (props) => {
|
|
|
3360
3759
|
if (pageBodyTree && pageBodyTree.root) {
|
|
3361
3760
|
rootNode = pageBodyTree.root;
|
|
3362
3761
|
}
|
|
3363
|
-
return /* @__PURE__ */ (0,
|
|
3762
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_react52.default.Fragment, { children: rootNode && rootNode?.children?.map((node, index) => {
|
|
3364
3763
|
{
|
|
3365
3764
|
}
|
|
3366
3765
|
const SelectedNode = NodeTypes[node.type];
|
|
3367
|
-
return /* @__PURE__ */ (0,
|
|
3766
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_react52.default.Fragment, { children: SelectedNode && /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_react52.default.Fragment, { children: node.type == "layout-container" ? /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_react52.default.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
3368
3767
|
SelectedNode,
|
|
3369
3768
|
{
|
|
3370
3769
|
node,
|
|
@@ -3377,7 +3776,7 @@ var PageBodyRenderer = (props) => {
|
|
|
3377
3776
|
apiBaseUrl: props.apiBaseUrl,
|
|
3378
3777
|
widgetRegistry: props.widgetRegistry
|
|
3379
3778
|
}
|
|
3380
|
-
) }) : /* @__PURE__ */ (0,
|
|
3779
|
+
) }) : /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_react52.default.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
3381
3780
|
SelectedNode,
|
|
3382
3781
|
{
|
|
3383
3782
|
node,
|