@acoustte-digital-services/digitalstore-controls-dev 0.8.1-dev.20260410073844 → 0.8.1-dev.20260414103409

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.js CHANGED
@@ -974,7 +974,13 @@ module.exports = __toCommonJS(index_exports);
974
974
  // src/components/pageRenderingEngine/nodes/WidgetRegistry.tsx
975
975
  var registry = {};
976
976
  function registerWidgets(widgets) {
977
- Object.assign(registry, widgets);
977
+ Object.entries(widgets).forEach(([key, component]) => {
978
+ if (!registry[key]) {
979
+ registry[key] = component;
980
+ } else {
981
+ console.warn(`Widget "${key}" is already registered. Skipping duplicate.`);
982
+ }
983
+ });
978
984
  }
979
985
  function getWidget(code) {
980
986
  return registry[code];
@@ -3428,10 +3434,7 @@ var import_react50 = __toESM(require("react"));
3428
3434
  var import_react37 = __toESM(require("react"));
3429
3435
 
3430
3436
  // src/components/pageRenderingEngine/nodes/TextNode.tsx
3431
- var import_jsx_runtime40 = (
3432
- // @ts-expect-error custom code
3433
- require("react/jsx-runtime")
3434
- );
3437
+ var import_jsx_runtime40 = require("react/jsx-runtime");
3435
3438
  var TextNode = (props) => {
3436
3439
  function cssStringToJson(cssString) {
3437
3440
  const styleObject = {};
@@ -3488,8 +3491,18 @@ var TextNode = (props) => {
3488
3491
  return key in dataItem ? dataItem[key] : `{${key}}`;
3489
3492
  });
3490
3493
  }
3494
+ function renderWithLineBreaks(text) {
3495
+ return text.split("\n").map((line, index, arr) => /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("span", { children: [
3496
+ line,
3497
+ index < arr.length - 1 && /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("br", {})
3498
+ ] }, index));
3499
+ }
3491
3500
  const displayText = props.linkText ? props.linkText : props.node.text;
3492
- return /* @__PURE__ */ (0, import_jsx_runtime40.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 });
3501
+ const finalText = props.dataitem && props.linkText ? displayText : props.dataitem ? replacePlaceholders(props.node.text, props.dataitem) : props.node.text;
3502
+ return (
3503
+ // @ts-expect-error custom code
3504
+ /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { style: { ...styles }, className: getFormatClass(props.node.format), children: typeof finalText === "string" ? renderWithLineBreaks(finalText) : finalText })
3505
+ );
3493
3506
  };
3494
3507
  var TextNode_default = TextNode;
3495
3508
 
package/dist/index.mjs CHANGED
@@ -10,7 +10,13 @@ import {
10
10
  // src/components/pageRenderingEngine/nodes/WidgetRegistry.tsx
11
11
  var registry = {};
12
12
  function registerWidgets(widgets) {
13
- Object.assign(registry, widgets);
13
+ Object.entries(widgets).forEach(([key, component]) => {
14
+ if (!registry[key]) {
15
+ registry[key] = component;
16
+ } else {
17
+ console.warn(`Widget "${key}" is already registered. Skipping duplicate.`);
18
+ }
19
+ });
14
20
  }
15
21
  function getWidget(code) {
16
22
  return registry[code];
@@ -2467,7 +2473,7 @@ import React42 from "react";
2467
2473
  import React32 from "react";
2468
2474
 
2469
2475
  // src/components/pageRenderingEngine/nodes/TextNode.tsx
2470
- import { jsx as jsx36 } from "react/jsx-runtime";
2476
+ import { jsx as jsx36, jsxs as jsxs24 } from "react/jsx-runtime";
2471
2477
  var TextNode = (props) => {
2472
2478
  function cssStringToJson(cssString) {
2473
2479
  const styleObject = {};
@@ -2524,10 +2530,17 @@ var TextNode = (props) => {
2524
2530
  return key in dataItem ? dataItem[key] : `{${key}}`;
2525
2531
  });
2526
2532
  }
2533
+ function renderWithLineBreaks(text) {
2534
+ return text.split("\n").map((line, index, arr) => /* @__PURE__ */ jsxs24("span", { children: [
2535
+ line,
2536
+ index < arr.length - 1 && /* @__PURE__ */ jsx36("br", {})
2537
+ ] }, index));
2538
+ }
2527
2539
  const displayText = props.linkText ? props.linkText : props.node.text;
2540
+ const finalText = props.dataitem && props.linkText ? displayText : props.dataitem ? replacePlaceholders(props.node.text, props.dataitem) : props.node.text;
2528
2541
  return (
2529
2542
  // @ts-expect-error custom code
2530
- /* @__PURE__ */ jsx36("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 })
2543
+ /* @__PURE__ */ jsx36("span", { style: { ...styles }, className: getFormatClass(props.node.format), children: typeof finalText === "string" ? renderWithLineBreaks(finalText) : finalText })
2531
2544
  );
2532
2545
  };
2533
2546
  var TextNode_default = TextNode;
@@ -2818,7 +2831,7 @@ var ImageNode_default = ImageNode;
2818
2831
 
2819
2832
  // src/components/pageRenderingEngine/nodes/LinkNode.tsx
2820
2833
  import dynamic2 from "next/dynamic";
2821
- import { Fragment as Fragment4, jsx as jsx40, jsxs as jsxs24 } from "react/jsx-runtime";
2834
+ import { Fragment as Fragment4, jsx as jsx40, jsxs as jsxs25 } from "react/jsx-runtime";
2822
2835
  var LinkNodeButton = dynamic2(() => import("./LinkNodeButton-KBSXOEHS.mjs"), {
2823
2836
  ssr: false
2824
2837
  });
@@ -2892,7 +2905,7 @@ var LinkNode = (props) => {
2892
2905
  return null;
2893
2906
  };
2894
2907
  if (isButton) {
2895
- return /* @__PURE__ */ jsxs24(
2908
+ return /* @__PURE__ */ jsxs25(
2896
2909
  LinkNodeButton,
2897
2910
  {
2898
2911
  node,
@@ -2910,7 +2923,7 @@ var LinkNode = (props) => {
2910
2923
  }
2911
2924
  );
2912
2925
  }
2913
- return /* @__PURE__ */ jsxs24(
2926
+ return /* @__PURE__ */ jsxs25(
2914
2927
  Hyperlink,
2915
2928
  {
2916
2929
  href: linkUrl || "#",
@@ -3087,7 +3100,7 @@ var DatafieldNode = (props) => {
3087
3100
  var DatafieldNode_default = DatafieldNode;
3088
3101
 
3089
3102
  // src/components/pageRenderingEngine/nodes/ParagraphNode.tsx
3090
- import { Fragment as Fragment5, jsx as jsx44, jsxs as jsxs25 } from "react/jsx-runtime";
3103
+ import { Fragment as Fragment5, jsx as jsx44, jsxs as jsxs26 } from "react/jsx-runtime";
3091
3104
  var ParagraphNode = (props) => {
3092
3105
  const NodeTypes2 = {
3093
3106
  ["text"]: TextNode_default,
@@ -3121,7 +3134,7 @@ var ParagraphNode = (props) => {
3121
3134
  ) }, index);
3122
3135
  }) });
3123
3136
  }
3124
- return /* @__PURE__ */ jsxs25("div", { className: " " + formatClasses, children: [
3137
+ return /* @__PURE__ */ jsxs26("div", { className: " " + formatClasses, children: [
3125
3138
  hasChildren && props.node.children.map((node, index) => {
3126
3139
  const SelectedNode = NodeTypes2[node.type];
3127
3140
  return /* @__PURE__ */ jsx44(React32.Fragment, { children: SelectedNode && /* @__PURE__ */ jsx44(
@@ -3209,12 +3222,12 @@ var ListItemNode = (props) => {
3209
3222
  var ListItemNode_default = ListItemNode;
3210
3223
 
3211
3224
  // src/components/pageRenderingEngine/nodes/ListNode.tsx
3212
- import { jsx as jsx47, jsxs as jsxs26 } from "react/jsx-runtime";
3225
+ import { jsx as jsx47, jsxs as jsxs27 } from "react/jsx-runtime";
3213
3226
  var ListNode = (props) => {
3214
3227
  const NodeTypes2 = {
3215
3228
  listitem: ListItemNode_default
3216
3229
  };
3217
- return /* @__PURE__ */ jsxs26(React35.Fragment, { children: [
3230
+ return /* @__PURE__ */ jsxs27(React35.Fragment, { children: [
3218
3231
  props.node.listType == "bullet" && /* @__PURE__ */ jsx47("ul", { children: props.node.children && props.node.children.map((node, index) => {
3219
3232
  const SelectedNode = NodeTypes2[node.type];
3220
3233
  return /* @__PURE__ */ jsx47(React35.Fragment, { children: SelectedNode && /* @__PURE__ */ jsx47(SelectedNode, { node, dataitem: props.dataitem, routeParameters: props.routeParameters }) }, index);
@@ -3246,7 +3259,7 @@ var QuoteNode_default = QuoteNode;
3246
3259
  // src/components/pageRenderingEngine/nodes/CodeNode.tsx
3247
3260
  import React37 from "react";
3248
3261
  import dynamic3 from "next/dynamic";
3249
- import { jsx as jsx49, jsxs as jsxs27 } from "react/jsx-runtime";
3262
+ import { jsx as jsx49, jsxs as jsxs28 } from "react/jsx-runtime";
3250
3263
  var CopyButton = dynamic3(() => import("./CopyButton-XONTQQW7.mjs"), {
3251
3264
  ssr: false,
3252
3265
  // optional: fallback UI while loading
@@ -3264,8 +3277,8 @@ var CodeNode = (props) => {
3264
3277
  if (node.type === "link") return node.text || node.url || "";
3265
3278
  return "";
3266
3279
  }).join("") ?? "";
3267
- return /* @__PURE__ */ jsxs27("div", { children: [
3268
- /* @__PURE__ */ jsxs27("div", { className: "flex items-center relative bg-neutral-strong px-4 py-3 text-xs font-sans justify-between rounded-t-md ", children: [
3280
+ return /* @__PURE__ */ jsxs28("div", { children: [
3281
+ /* @__PURE__ */ jsxs28("div", { className: "flex items-center relative bg-neutral-strong px-4 py-3 text-xs font-sans justify-between rounded-t-md ", children: [
3269
3282
  /* @__PURE__ */ jsx49("span", { children: "Code Snippet" }),
3270
3283
  /* @__PURE__ */ jsx49(CopyButton, { text: textContent })
3271
3284
  ] }),
@@ -3293,7 +3306,7 @@ var HorizontalRuleNode = () => {
3293
3306
  var HorizontalRuleNode_default = HorizontalRuleNode;
3294
3307
 
3295
3308
  // src/components/pageRenderingEngine/nodes/WidgetNode.tsx
3296
- import { Fragment as Fragment7, jsx as jsx51, jsxs as jsxs28 } from "react/jsx-runtime";
3309
+ import { Fragment as Fragment7, jsx as jsx51, jsxs as jsxs29 } from "react/jsx-runtime";
3297
3310
  var WidgetNode = (props) => {
3298
3311
  const getWidgetParameters = () => {
3299
3312
  const widgetInputParameters = {
@@ -3357,7 +3370,7 @@ var WidgetNode = (props) => {
3357
3370
  if (process.env.NODE_ENV !== "production") {
3358
3371
  console.warn("Widget not found:", widgetCode);
3359
3372
  }
3360
- return /* @__PURE__ */ jsxs28(Fragment7, { children: [
3373
+ return /* @__PURE__ */ jsxs29(Fragment7, { children: [
3361
3374
  "Widget not found: ",
3362
3375
  widgetCode
3363
3376
  ] });
@@ -3415,7 +3428,7 @@ var InputControlNode = (props) => {
3415
3428
  var InputControlNode_default = InputControlNode;
3416
3429
 
3417
3430
  // src/components/pageRenderingEngine/nodes/FormContainerNode.tsx
3418
- import { jsx as jsx53, jsxs as jsxs29 } from "react/jsx-runtime";
3431
+ import { jsx as jsx53, jsxs as jsxs30 } from "react/jsx-runtime";
3419
3432
  var FormContainerNode = (props) => {
3420
3433
  const NodeTypes2 = {
3421
3434
  ["input-control"]: InputControlNode_default
@@ -3445,7 +3458,7 @@ var FormContainerNode = (props) => {
3445
3458
  };
3446
3459
  fetchInitialData();
3447
3460
  }, [props.apiBaseUrl, props.node, props.session, props.routeParameters]);
3448
- return /* @__PURE__ */ jsxs29("form", { className: "group space-y-6 pb-6 overflow-y-auto", noValidate: true, ref: formRef, children: [
3461
+ return /* @__PURE__ */ jsxs30("form", { className: "group space-y-6 pb-6 overflow-y-auto", noValidate: true, ref: formRef, children: [
3449
3462
  node.children && node.children.map((node2, index) => {
3450
3463
  {
3451
3464
  }
@@ -3488,7 +3501,7 @@ var EmbedNode_default = EmbedNode;
3488
3501
 
3489
3502
  // src/components/Slider.tsx
3490
3503
  import React39, { useState as useState6, useEffect as useEffect8, Children, cloneElement } from "react";
3491
- import { Fragment as Fragment8, jsx as jsx55, jsxs as jsxs30 } from "react/jsx-runtime";
3504
+ import { Fragment as Fragment8, jsx as jsx55, jsxs as jsxs31 } from "react/jsx-runtime";
3492
3505
  var Slider = ({
3493
3506
  children,
3494
3507
  slidesToShow = 4,
@@ -3608,7 +3621,7 @@ var Slider = ({
3608
3621
  return "bottom-4";
3609
3622
  }
3610
3623
  };
3611
- return /* @__PURE__ */ jsxs30(
3624
+ return /* @__PURE__ */ jsxs31(
3612
3625
  "div",
3613
3626
  {
3614
3627
  className: `relative w-full overflow-hidden ${className}`,
@@ -3626,7 +3639,7 @@ var Slider = ({
3626
3639
  children: slides
3627
3640
  }
3628
3641
  ),
3629
- show_arrows && /* @__PURE__ */ jsxs30(Fragment8, { children: [
3642
+ show_arrows && /* @__PURE__ */ jsxs31(Fragment8, { children: [
3630
3643
  /* @__PURE__ */ jsx55(
3631
3644
  ArrowButton,
3632
3645
  {
@@ -3637,7 +3650,7 @@ var Slider = ({
3637
3650
  children: /* @__PURE__ */ jsx55("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__ */ jsx55("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M15.75 19.5 8.25 12l7.5-7.5" }) })
3638
3651
  }
3639
3652
  ),
3640
- /* @__PURE__ */ jsxs30(
3653
+ /* @__PURE__ */ jsxs31(
3641
3654
  ArrowButton,
3642
3655
  {
3643
3656
  direction: "right",
@@ -3786,7 +3799,7 @@ var ProgressPill = ({
3786
3799
  }
3787
3800
  return null;
3788
3801
  };
3789
- return /* @__PURE__ */ jsxs30(
3802
+ return /* @__PURE__ */ jsxs31(
3790
3803
  "button",
3791
3804
  {
3792
3805
  className: `${baseClasses} ${getStyleClasses()}`,
@@ -3962,9 +3975,9 @@ var PathUtility = class {
3962
3975
  var PathUtility_default = new PathUtility();
3963
3976
 
3964
3977
  // src/components/NoDataFound.tsx
3965
- import { jsx as jsx56, jsxs as jsxs31 } from "react/jsx-runtime";
3978
+ import { jsx as jsx56, jsxs as jsxs32 } from "react/jsx-runtime";
3966
3979
  var NoDataFound = () => {
3967
- return /* @__PURE__ */ jsxs31("div", { className: "flex flex-col items-center justify-center py-12 px-4 text-center bg-neutral-weak", children: [
3980
+ return /* @__PURE__ */ jsxs32("div", { className: "flex flex-col items-center justify-center py-12 px-4 text-center bg-neutral-weak", children: [
3968
3981
  /* @__PURE__ */ jsx56("div", { className: "mb-5", children: /* @__PURE__ */ jsx56("div", { className: "mx-auto w-20 h-20 rounded-full flex items-center justify-center bg-neutral-soft", children: /* @__PURE__ */ jsx56(
3969
3982
  "svg",
3970
3983
  {
@@ -3992,7 +4005,7 @@ var NoDataFound_default = NoDataFound;
3992
4005
 
3993
4006
  // src/components/Pagination.tsx
3994
4007
  import { useMemo } from "react";
3995
- import { jsx as jsx57, jsxs as jsxs32 } from "react/jsx-runtime";
4008
+ import { jsx as jsx57, jsxs as jsxs33 } from "react/jsx-runtime";
3996
4009
  var Pagination = (props) => {
3997
4010
  const { dataset, path, query, showPageSizeSelector = false, showJumpToPage = false } = props;
3998
4011
  const builder = useMemo(() => {
@@ -4063,11 +4076,11 @@ var Pagination = (props) => {
4063
4076
  );
4064
4077
  };
4065
4078
  if (totalPages <= 1 && totalItems === 0) return null;
4066
- return /* @__PURE__ */ jsxs32("div", { className: "py-6 border-t bg-default", children: [
4067
- /* @__PURE__ */ jsxs32("div", { className: "flex flex-col sm:flex-row items-center justify-between gap-4", children: [
4068
- /* @__PURE__ */ jsxs32("div", { className: "text-sm", children: [
4079
+ return /* @__PURE__ */ jsxs33("div", { className: "py-6 border-t bg-default", children: [
4080
+ /* @__PURE__ */ jsxs33("div", { className: "flex flex-col sm:flex-row items-center justify-between gap-4", children: [
4081
+ /* @__PURE__ */ jsxs33("div", { className: "text-sm", children: [
4069
4082
  "Showing ",
4070
- /* @__PURE__ */ jsxs32("span", { className: "font-semibold", children: [
4083
+ /* @__PURE__ */ jsxs33("span", { className: "font-semibold", children: [
4071
4084
  startItem,
4072
4085
  "-",
4073
4086
  endItem
@@ -4077,8 +4090,8 @@ var Pagination = (props) => {
4077
4090
  /* @__PURE__ */ jsx57("span", { className: "font-semibold", children: totalItems.toLocaleString() }),
4078
4091
  " results"
4079
4092
  ] }),
4080
- totalPages > 1 && /* @__PURE__ */ jsxs32("div", { className: "flex items-center space-x-1", children: [
4081
- /* @__PURE__ */ jsxs32(
4093
+ totalPages > 1 && /* @__PURE__ */ jsxs33("div", { className: "flex items-center space-x-1", children: [
4094
+ /* @__PURE__ */ jsxs33(
4082
4095
  NavigationButton,
4083
4096
  {
4084
4097
  page: activePageNumber - 1,
@@ -4103,7 +4116,7 @@ var Pagination = (props) => {
4103
4116
  const page = item;
4104
4117
  return /* @__PURE__ */ jsx57(PageButton, { page, children: page }, page);
4105
4118
  }),
4106
- /* @__PURE__ */ jsxs32(
4119
+ /* @__PURE__ */ jsxs33(
4107
4120
  NavigationButton,
4108
4121
  {
4109
4122
  page: activePageNumber + 1,
@@ -4115,7 +4128,7 @@ var Pagination = (props) => {
4115
4128
  }
4116
4129
  )
4117
4130
  ] }),
4118
- showJumpToPage && totalPages > 5 && /* @__PURE__ */ jsxs32("div", { className: "flex items-center space-x-2", children: [
4131
+ showJumpToPage && totalPages > 5 && /* @__PURE__ */ jsxs33("div", { className: "flex items-center space-x-2", children: [
4119
4132
  /* @__PURE__ */ jsx57("span", { className: "text-sm", children: "Go to:" }),
4120
4133
  /* @__PURE__ */ jsx57("div", { className: "relative", children: /* @__PURE__ */ jsx57(
4121
4134
  "input",
@@ -4138,7 +4151,7 @@ var Pagination = (props) => {
4138
4151
  ) })
4139
4152
  ] })
4140
4153
  ] }),
4141
- showPageSizeSelector && /* @__PURE__ */ jsx57("div", { className: "mt-4 pt-4 border-t bg-default", children: /* @__PURE__ */ jsxs32("div", { className: "flex items-center justify-center space-x-2", children: [
4154
+ showPageSizeSelector && /* @__PURE__ */ jsx57("div", { className: "mt-4 pt-4 border-t bg-default", children: /* @__PURE__ */ jsxs33("div", { className: "flex items-center justify-center space-x-2", children: [
4142
4155
  /* @__PURE__ */ jsx57("span", { className: "text-sm", children: "Show:" }),
4143
4156
  /* @__PURE__ */ jsx57("div", { className: "flex space-x-1", children: [10, 25, 50, 100].map((size) => /* @__PURE__ */ jsx57(
4144
4157
  Hyperlink,
@@ -4252,7 +4265,7 @@ var ImageGalleryNode_default = ImageGalleryNode;
4252
4265
 
4253
4266
  // src/components/pageRenderingEngine/nodes/DivContainer.tsx
4254
4267
  import Link2 from "next/link";
4255
- import { jsx as jsx59, jsxs as jsxs33 } from "react/jsx-runtime";
4268
+ import { jsx as jsx59, jsxs as jsxs34 } from "react/jsx-runtime";
4256
4269
  function toCamelCase(str) {
4257
4270
  return str.replace(/-([a-z])/g, (_, letter) => letter.toUpperCase());
4258
4271
  }
@@ -4575,7 +4588,7 @@ var DivContainer = async (props) => {
4575
4588
  props.node.autoFormat && "auto-format",
4576
4589
  props.node.bgClass
4577
4590
  ].filter(Boolean).join(" ");
4578
- return /* @__PURE__ */ jsxs33(React41.Fragment, { children: [
4591
+ return /* @__PURE__ */ jsxs34(React41.Fragment, { children: [
4579
4592
  /* @__PURE__ */ jsx59("style", { dangerouslySetInnerHTML: { __html: cssResult.css + animationCSS } }),
4580
4593
  /* @__PURE__ */ jsx59(React41.Fragment, { children: /* @__PURE__ */ jsx59(
4581
4594
  Wrapper,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@acoustte-digital-services/digitalstore-controls-dev",
3
- "version": "0.8.1-dev.20260410073844",
3
+ "version": "0.8.1-dev.20260414103409",
4
4
  "description": "Reusable React components",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",