@acoustte-digital-services/digitalstore-controls-dev 0.8.1-dev.20260721123022 → 0.8.1-dev.20260721133206

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
@@ -4279,5 +4279,3 @@ export {
4279
4279
  ViewControl_default as ViewControl,
4280
4280
  ViewControlTypes_default as ViewControlTypes
4281
4281
  };
4282
- ontrolTypes
4283
- };
package/dist/server.d.mts CHANGED
@@ -81,7 +81,7 @@ interface ViewControlProps {
81
81
  session?: any;
82
82
  }
83
83
 
84
- declare const ViewControl: (props: ViewControlProps) => React.JSX.Element;
84
+ declare const ViewControl: React.MemoExoticComponent<(props: ViewControlProps) => React.JSX.Element>;
85
85
 
86
86
  declare const ViewControlTypes: {
87
87
  lineText: string;
package/dist/server.d.ts CHANGED
@@ -81,7 +81,7 @@ interface ViewControlProps {
81
81
  session?: any;
82
82
  }
83
83
 
84
- declare const ViewControl: (props: ViewControlProps) => React.JSX.Element;
84
+ declare const ViewControl: React.MemoExoticComponent<(props: ViewControlProps) => React.JSX.Element>;
85
85
 
86
86
  declare const ViewControlTypes: {
87
87
  lineText: string;
package/dist/server.js CHANGED
@@ -3168,36 +3168,36 @@ var DateTimeVew_default = DateTimeView;
3168
3168
 
3169
3169
  // src/components/controls/view/ViewControl.tsx
3170
3170
  var import_jsx_runtime29 = require("react/jsx-runtime");
3171
- var ViewControl = (props) => {
3172
- const ControlComponents = {
3173
- [ViewControlTypes_default.lineText]: LineTextView_default,
3174
- [ViewControlTypes_default.emailText]: EmailTextView_default,
3175
- [ViewControlTypes_default.asset]: Asset_default,
3176
- [ViewControlTypes_default.multilineTextBullets]: MultilineTextBulletsView_default,
3177
- [ViewControlTypes_default.boolean]: BooleanView_default,
3178
- [ViewControlTypes_default.checkboxInput]: BooleanView_default,
3179
- // [ViewControlTypes.timeUntilStarts]: TimeUntilStarts,
3180
- [ViewControlTypes_default.money]: MoneyView_default,
3181
- [ViewControlTypes_default.date]: DateView_default,
3182
- [ViewControlTypes_default.time]: DateView_default,
3183
- [ViewControlTypes_default.datetime]: DateTimeVew_default,
3184
- [ViewControlTypes_default.number]: NumberView_default,
3185
- [ViewControlTypes_default.multilineText]: MultilineTextView_default,
3186
- [ViewControlTypes_default.multilinetext]: MultilineTextView_default,
3187
- [ViewControlTypes_default.moneyText]: MoneyView_default,
3188
- [ViewControlTypes_default.percentage]: PercentageView_default,
3189
- [ViewControlTypes_default.status]: StatusView_default,
3190
- [ViewControlTypes_default.statusBg]: StatusBgView_default,
3191
- [ViewControlTypes_default.progressIndicator]: ProgressIndicator_default,
3192
- // [ViewControlTypes.timeUntilStarts]: TimeUntilStarts,
3193
- // [ViewControlTypes.timeUntilStartsStyled]: TimeUntilStartsStyled,
3194
- [ViewControlTypes_default.aiGeneratedSummary]: AiGeneratedSummary_default,
3195
- [ViewControlTypes_default.booleanView]: BooleanView_default,
3196
- [ViewControlTypes_default.text]: LineTextView_default
3197
- };
3171
+ var ControlComponents = {
3172
+ [ViewControlTypes_default.lineText]: LineTextView_default,
3173
+ [ViewControlTypes_default.emailText]: EmailTextView_default,
3174
+ [ViewControlTypes_default.asset]: Asset_default,
3175
+ [ViewControlTypes_default.multilineTextBullets]: MultilineTextBulletsView_default,
3176
+ [ViewControlTypes_default.boolean]: BooleanView_default,
3177
+ [ViewControlTypes_default.checkboxInput]: BooleanView_default,
3178
+ // [ViewControlTypes.timeUntilStarts]: TimeUntilStarts,
3179
+ [ViewControlTypes_default.money]: MoneyView_default,
3180
+ [ViewControlTypes_default.date]: DateView_default,
3181
+ [ViewControlTypes_default.time]: DateView_default,
3182
+ [ViewControlTypes_default.datetime]: DateTimeVew_default,
3183
+ [ViewControlTypes_default.number]: NumberView_default,
3184
+ [ViewControlTypes_default.multilineText]: MultilineTextView_default,
3185
+ [ViewControlTypes_default.multilinetext]: MultilineTextView_default,
3186
+ [ViewControlTypes_default.moneyText]: MoneyView_default,
3187
+ [ViewControlTypes_default.percentage]: PercentageView_default,
3188
+ [ViewControlTypes_default.status]: StatusView_default,
3189
+ [ViewControlTypes_default.statusBg]: StatusBgView_default,
3190
+ [ViewControlTypes_default.progressIndicator]: ProgressIndicator_default,
3191
+ // [ViewControlTypes.timeUntilStarts]: TimeUntilStarts,
3192
+ // [ViewControlTypes.timeUntilStartsStyled]: TimeUntilStartsStyled,
3193
+ [ViewControlTypes_default.aiGeneratedSummary]: AiGeneratedSummary_default,
3194
+ [ViewControlTypes_default.booleanView]: BooleanView_default,
3195
+ [ViewControlTypes_default.text]: LineTextView_default
3196
+ };
3197
+ var ViewControl = import_react20.default.memo((props) => {
3198
3198
  const SelectedControlComponent = props.controlType ? ControlComponents[props.controlType] : void 0;
3199
3199
  return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_react20.default.Fragment, { children: SelectedControlComponent ? /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(SelectedControlComponent, { ...props }) : "Control not found:" + props.controlType });
3200
- };
3200
+ });
3201
3201
  var ViewControl_default = ViewControl;
3202
3202
 
3203
3203
  // src/components/pageRenderingEngine/nodes/DatafieldNode.tsx
@@ -3632,6 +3632,17 @@ var EmbedNode_default = EmbedNode;
3632
3632
  init_ServiceClient();
3633
3633
 
3634
3634
  // src/components/utilities/AnimationUtility.tsx
3635
+ var normalizeSelector = (guid) => {
3636
+ const trimmedGuid = guid?.trim();
3637
+ if (!trimmedGuid) {
3638
+ return ".animation-fallback";
3639
+ }
3640
+ const baseValue = trimmedGuid.replace(/^#/, "").replace(/^\./, "");
3641
+ if (typeof CSS !== "undefined" && typeof CSS.escape === "function") {
3642
+ return `#${CSS.escape(baseValue)}`;
3643
+ }
3644
+ return `#${baseValue}`;
3645
+ };
3635
3646
  var AnimationUtility = class {
3636
3647
  static generateAnimationCSS(config, guid) {
3637
3648
  const {
@@ -3646,10 +3657,12 @@ var AnimationUtility = class {
3646
3657
  speedPerChar = 100,
3647
3658
  cursor = true,
3648
3659
  mode = "enter",
3649
- direction = "left"
3650
- // Default direction
3660
+ direction = "left",
3661
+ backgroundColor,
3662
+ borderColor
3651
3663
  } = config;
3652
3664
  let base = "", visible = "", keyframes = "";
3665
+ const selector = normalizeSelector(guid);
3653
3666
  switch (config.animation) {
3654
3667
  case "Fade":
3655
3668
  base = `opacity:0; transition:opacity ${duration}ms ${easing} ${delay}ms;`;
@@ -3683,12 +3696,20 @@ var AnimationUtility = class {
3683
3696
  `;
3684
3697
  if (mode === "enter") {
3685
3698
  base = `opacity:0;`;
3686
- visible = `opacity:1; animation:bounce ${duration}ms ${easing} ${delay}ms ${repeat};`;
3699
+ visible = `opacity:1; animation: bounce ${duration}ms ${easing} ${delay}ms ${repeat};`;
3687
3700
  } else {
3688
3701
  base = ``;
3689
- visible = `animation:bounce ${duration / 1e3}s ${easing} ${delay / 1e3}s ${repeat};`;
3702
+ visible = `animation: bounce ${duration / 1e3}s ${easing} ${delay / 1e3}s ${repeat};`;
3690
3703
  }
3691
3704
  break;
3705
+ case "Background":
3706
+ base = `transition: background-color ${duration}ms ${easing} ${delay}ms;`;
3707
+ visible = `background-color: ${backgroundColor};`;
3708
+ break;
3709
+ case "Border":
3710
+ base = `transition: border-color ${duration}ms ${easing} ${delay}ms;`;
3711
+ visible = `border-color: ${borderColor};`;
3712
+ break;
3692
3713
  case "Typewriter":
3693
3714
  keyframes = `
3694
3715
  @keyframes typewriter { from { width: 0 } to { width: 100% } }
@@ -3710,14 +3731,14 @@ var AnimationUtility = class {
3710
3731
  if (mode === "hover") {
3711
3732
  return `
3712
3733
  ${keyframes}
3713
- ${guid} { ${base} }
3714
- ${guid}:hover { ${visible} }
3734
+ ${selector} { ${base} }
3735
+ ${selector}:hover { ${visible} }
3715
3736
  `;
3716
3737
  } else {
3717
3738
  return `
3718
3739
  ${keyframes}
3719
- ${guid} { ${base} }
3720
- ${guid}.visible { ${visible} }
3740
+ ${selector} { ${base} }
3741
+ ${selector}.visible { ${visible} }
3721
3742
  `;
3722
3743
  }
3723
3744
  }
@@ -4545,6 +4566,25 @@ var DocumentNode = (props) => {
4545
4566
  documents = [docData];
4546
4567
  }
4547
4568
  }
4569
+ const handleDownload = async (e, url, filename) => {
4570
+ e.preventDefault();
4571
+ try {
4572
+ const response = await fetch(url);
4573
+ if (!response.ok) throw new Error("Network response was not ok");
4574
+ const blob = await response.blob();
4575
+ const blobUrl = window.URL.createObjectURL(blob);
4576
+ const link = document.createElement("a");
4577
+ link.href = blobUrl;
4578
+ link.download = filename;
4579
+ document.body.appendChild(link);
4580
+ link.click();
4581
+ document.body.removeChild(link);
4582
+ window.URL.revokeObjectURL(blobUrl);
4583
+ } catch (error) {
4584
+ console.warn("Blob download failed (possibly due to CORS), falling back to browser default navigation:", error);
4585
+ window.open(url, "_blank", "noopener,noreferrer");
4586
+ }
4587
+ };
4548
4588
  if (documents.length === 0) {
4549
4589
  return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_jsx_runtime45.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("div", { className: "py-4 px-2 bg-neutral-weak border rounded text-center flex flex-col gap-2", children: [
4550
4590
  /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("div", { className: "mx-auto w-10 h-10 rounded-full flex items-center justify-center bg-neutral-soft", children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
@@ -4588,6 +4628,9 @@ var DocumentNode = (props) => {
4588
4628
  }
4589
4629
  }
4590
4630
  const { Icon: Icon2, extLabel } = getFileDetails(documentUrl);
4631
+ const extMatch = documentUrl.match(/\.([a-zA-Z0-9]+)(?:[\?#]|$)/);
4632
+ const ext = extMatch ? extMatch[1] : "";
4633
+ const filename = ext ? `${documentTitle}.${ext}` : documentTitle;
4591
4634
  return /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(
4592
4635
  "div",
4593
4636
  {
@@ -4601,6 +4644,8 @@ var DocumentNode = (props) => {
4601
4644
  "a",
4602
4645
  {
4603
4646
  href: documentUrl,
4647
+ download: filename,
4648
+ onClick: (e) => handleDownload(e, documentUrl, filename),
4604
4649
  target: "_blank",
4605
4650
  rel: "noopener noreferrer",
4606
4651
  className: "inline-flex items-center px-4 py-2 text-sm font-medium bg-default border rounded focus:outline-none focus:ring-2 focus:ring-offset-2 transition-colors",
@@ -4847,6 +4892,7 @@ var DivContainer = async (props) => {
4847
4892
  }
4848
4893
  const updatedStyle = { ...updatedStyles };
4849
4894
  const guid = "css" + crypto.randomUUID().toLocaleLowerCase();
4895
+ const animationSelector = `#${guid}`;
4850
4896
  const { enterAnimation, exitAnimation, hoverAnimation } = props.node;
4851
4897
  let animationCSS = "";
4852
4898
  if (enterAnimation?.name) {
@@ -4856,7 +4902,7 @@ var DivContainer = async (props) => {
4856
4902
  mode: "enter",
4857
4903
  ...enterAnimation.properties
4858
4904
  },
4859
- `#${guid}`
4905
+ animationSelector
4860
4906
  );
4861
4907
  }
4862
4908
  if (hoverAnimation?.name) {
@@ -4866,7 +4912,7 @@ var DivContainer = async (props) => {
4866
4912
  mode: "hover",
4867
4913
  ...hoverAnimation.properties
4868
4914
  },
4869
- `#${guid}`
4915
+ animationSelector
4870
4916
  );
4871
4917
  }
4872
4918
  const isHidden = !shouldRenderContainer(
package/dist/server.mjs CHANGED
@@ -732,36 +732,36 @@ var DateTimeVew_default = DateTimeView;
732
732
 
733
733
  // src/components/controls/view/ViewControl.tsx
734
734
  import { jsx as jsx20 } from "react/jsx-runtime";
735
- var ViewControl = (props) => {
736
- const ControlComponents = {
737
- [ViewControlTypes_default.lineText]: LineTextView_default,
738
- [ViewControlTypes_default.emailText]: EmailTextView_default,
739
- [ViewControlTypes_default.asset]: Asset_default,
740
- [ViewControlTypes_default.multilineTextBullets]: MultilineTextBulletsView_default,
741
- [ViewControlTypes_default.boolean]: BooleanView_default,
742
- [ViewControlTypes_default.checkboxInput]: BooleanView_default,
743
- // [ViewControlTypes.timeUntilStarts]: TimeUntilStarts,
744
- [ViewControlTypes_default.money]: MoneyView_default,
745
- [ViewControlTypes_default.date]: DateView_default,
746
- [ViewControlTypes_default.time]: DateView_default,
747
- [ViewControlTypes_default.datetime]: DateTimeVew_default,
748
- [ViewControlTypes_default.number]: NumberView_default,
749
- [ViewControlTypes_default.multilineText]: MultilineTextView_default,
750
- [ViewControlTypes_default.multilinetext]: MultilineTextView_default,
751
- [ViewControlTypes_default.moneyText]: MoneyView_default,
752
- [ViewControlTypes_default.percentage]: PercentageView_default,
753
- [ViewControlTypes_default.status]: StatusView_default,
754
- [ViewControlTypes_default.statusBg]: StatusBgView_default,
755
- [ViewControlTypes_default.progressIndicator]: ProgressIndicator_default,
756
- // [ViewControlTypes.timeUntilStarts]: TimeUntilStarts,
757
- // [ViewControlTypes.timeUntilStartsStyled]: TimeUntilStartsStyled,
758
- [ViewControlTypes_default.aiGeneratedSummary]: AiGeneratedSummary_default,
759
- [ViewControlTypes_default.booleanView]: BooleanView_default,
760
- [ViewControlTypes_default.text]: LineTextView_default
761
- };
735
+ var ControlComponents = {
736
+ [ViewControlTypes_default.lineText]: LineTextView_default,
737
+ [ViewControlTypes_default.emailText]: EmailTextView_default,
738
+ [ViewControlTypes_default.asset]: Asset_default,
739
+ [ViewControlTypes_default.multilineTextBullets]: MultilineTextBulletsView_default,
740
+ [ViewControlTypes_default.boolean]: BooleanView_default,
741
+ [ViewControlTypes_default.checkboxInput]: BooleanView_default,
742
+ // [ViewControlTypes.timeUntilStarts]: TimeUntilStarts,
743
+ [ViewControlTypes_default.money]: MoneyView_default,
744
+ [ViewControlTypes_default.date]: DateView_default,
745
+ [ViewControlTypes_default.time]: DateView_default,
746
+ [ViewControlTypes_default.datetime]: DateTimeVew_default,
747
+ [ViewControlTypes_default.number]: NumberView_default,
748
+ [ViewControlTypes_default.multilineText]: MultilineTextView_default,
749
+ [ViewControlTypes_default.multilinetext]: MultilineTextView_default,
750
+ [ViewControlTypes_default.moneyText]: MoneyView_default,
751
+ [ViewControlTypes_default.percentage]: PercentageView_default,
752
+ [ViewControlTypes_default.status]: StatusView_default,
753
+ [ViewControlTypes_default.statusBg]: StatusBgView_default,
754
+ [ViewControlTypes_default.progressIndicator]: ProgressIndicator_default,
755
+ // [ViewControlTypes.timeUntilStarts]: TimeUntilStarts,
756
+ // [ViewControlTypes.timeUntilStartsStyled]: TimeUntilStartsStyled,
757
+ [ViewControlTypes_default.aiGeneratedSummary]: AiGeneratedSummary_default,
758
+ [ViewControlTypes_default.booleanView]: BooleanView_default,
759
+ [ViewControlTypes_default.text]: LineTextView_default
760
+ };
761
+ var ViewControl = React14.memo((props) => {
762
762
  const SelectedControlComponent = props.controlType ? ControlComponents[props.controlType] : void 0;
763
763
  return /* @__PURE__ */ jsx20(React14.Fragment, { children: SelectedControlComponent ? /* @__PURE__ */ jsx20(SelectedControlComponent, { ...props }) : "Control not found:" + props.controlType });
764
- };
764
+ });
765
765
  var ViewControl_default = ViewControl;
766
766
 
767
767
  // src/components/pageRenderingEngine/nodes/DatafieldNode.tsx
@@ -1193,6 +1193,17 @@ var EmbedNode = (props) => {
1193
1193
  var EmbedNode_default = EmbedNode;
1194
1194
 
1195
1195
  // src/components/utilities/AnimationUtility.tsx
1196
+ var normalizeSelector = (guid) => {
1197
+ const trimmedGuid = guid?.trim();
1198
+ if (!trimmedGuid) {
1199
+ return ".animation-fallback";
1200
+ }
1201
+ const baseValue = trimmedGuid.replace(/^#/, "").replace(/^\./, "");
1202
+ if (typeof CSS !== "undefined" && typeof CSS.escape === "function") {
1203
+ return `#${CSS.escape(baseValue)}`;
1204
+ }
1205
+ return `#${baseValue}`;
1206
+ };
1196
1207
  var AnimationUtility = class {
1197
1208
  static generateAnimationCSS(config, guid) {
1198
1209
  const {
@@ -1207,10 +1218,12 @@ var AnimationUtility = class {
1207
1218
  speedPerChar = 100,
1208
1219
  cursor = true,
1209
1220
  mode = "enter",
1210
- direction = "left"
1211
- // Default direction
1221
+ direction = "left",
1222
+ backgroundColor,
1223
+ borderColor
1212
1224
  } = config;
1213
1225
  let base = "", visible = "", keyframes = "";
1226
+ const selector = normalizeSelector(guid);
1214
1227
  switch (config.animation) {
1215
1228
  case "Fade":
1216
1229
  base = `opacity:0; transition:opacity ${duration}ms ${easing} ${delay}ms;`;
@@ -1244,12 +1257,20 @@ var AnimationUtility = class {
1244
1257
  `;
1245
1258
  if (mode === "enter") {
1246
1259
  base = `opacity:0;`;
1247
- visible = `opacity:1; animation:bounce ${duration}ms ${easing} ${delay}ms ${repeat};`;
1260
+ visible = `opacity:1; animation: bounce ${duration}ms ${easing} ${delay}ms ${repeat};`;
1248
1261
  } else {
1249
1262
  base = ``;
1250
- visible = `animation:bounce ${duration / 1e3}s ${easing} ${delay / 1e3}s ${repeat};`;
1263
+ visible = `animation: bounce ${duration / 1e3}s ${easing} ${delay / 1e3}s ${repeat};`;
1251
1264
  }
1252
1265
  break;
1266
+ case "Background":
1267
+ base = `transition: background-color ${duration}ms ${easing} ${delay}ms;`;
1268
+ visible = `background-color: ${backgroundColor};`;
1269
+ break;
1270
+ case "Border":
1271
+ base = `transition: border-color ${duration}ms ${easing} ${delay}ms;`;
1272
+ visible = `border-color: ${borderColor};`;
1273
+ break;
1253
1274
  case "Typewriter":
1254
1275
  keyframes = `
1255
1276
  @keyframes typewriter { from { width: 0 } to { width: 100% } }
@@ -1271,14 +1292,14 @@ var AnimationUtility = class {
1271
1292
  if (mode === "hover") {
1272
1293
  return `
1273
1294
  ${keyframes}
1274
- ${guid} { ${base} }
1275
- ${guid}:hover { ${visible} }
1295
+ ${selector} { ${base} }
1296
+ ${selector}:hover { ${visible} }
1276
1297
  `;
1277
1298
  } else {
1278
1299
  return `
1279
1300
  ${keyframes}
1280
- ${guid} { ${base} }
1281
- ${guid}.visible { ${visible} }
1301
+ ${selector} { ${base} }
1302
+ ${selector}.visible { ${visible} }
1282
1303
  `;
1283
1304
  }
1284
1305
  }
@@ -2103,6 +2124,25 @@ var DocumentNode = (props) => {
2103
2124
  documents = [docData];
2104
2125
  }
2105
2126
  }
2127
+ const handleDownload = async (e, url, filename) => {
2128
+ e.preventDefault();
2129
+ try {
2130
+ const response = await fetch(url);
2131
+ if (!response.ok) throw new Error("Network response was not ok");
2132
+ const blob = await response.blob();
2133
+ const blobUrl = window.URL.createObjectURL(blob);
2134
+ const link = document.createElement("a");
2135
+ link.href = blobUrl;
2136
+ link.download = filename;
2137
+ document.body.appendChild(link);
2138
+ link.click();
2139
+ document.body.removeChild(link);
2140
+ window.URL.revokeObjectURL(blobUrl);
2141
+ } catch (error) {
2142
+ console.warn("Blob download failed (possibly due to CORS), falling back to browser default navigation:", error);
2143
+ window.open(url, "_blank", "noopener,noreferrer");
2144
+ }
2145
+ };
2106
2146
  if (documents.length === 0) {
2107
2147
  return /* @__PURE__ */ jsx33(Fragment6, { children: /* @__PURE__ */ jsxs12("div", { className: "py-4 px-2 bg-neutral-weak border rounded text-center flex flex-col gap-2", children: [
2108
2148
  /* @__PURE__ */ jsx33("div", { className: "mx-auto w-10 h-10 rounded-full flex items-center justify-center bg-neutral-soft", children: /* @__PURE__ */ jsx33(
@@ -2146,6 +2186,9 @@ var DocumentNode = (props) => {
2146
2186
  }
2147
2187
  }
2148
2188
  const { Icon, extLabel } = getFileDetails(documentUrl);
2189
+ const extMatch = documentUrl.match(/\.([a-zA-Z0-9]+)(?:[\?#]|$)/);
2190
+ const ext = extMatch ? extMatch[1] : "";
2191
+ const filename = ext ? `${documentTitle}.${ext}` : documentTitle;
2149
2192
  return /* @__PURE__ */ jsxs12(
2150
2193
  "div",
2151
2194
  {
@@ -2159,6 +2202,8 @@ var DocumentNode = (props) => {
2159
2202
  "a",
2160
2203
  {
2161
2204
  href: documentUrl,
2205
+ download: filename,
2206
+ onClick: (e) => handleDownload(e, documentUrl, filename),
2162
2207
  target: "_blank",
2163
2208
  rel: "noopener noreferrer",
2164
2209
  className: "inline-flex items-center px-4 py-2 text-sm font-medium bg-default border rounded focus:outline-none focus:ring-2 focus:ring-offset-2 transition-colors",
@@ -2405,6 +2450,7 @@ var DivContainer = async (props) => {
2405
2450
  }
2406
2451
  const updatedStyle = { ...updatedStyles };
2407
2452
  const guid = "css" + crypto.randomUUID().toLocaleLowerCase();
2453
+ const animationSelector = `#${guid}`;
2408
2454
  const { enterAnimation, exitAnimation, hoverAnimation } = props.node;
2409
2455
  let animationCSS = "";
2410
2456
  if (enterAnimation?.name) {
@@ -2414,7 +2460,7 @@ var DivContainer = async (props) => {
2414
2460
  mode: "enter",
2415
2461
  ...enterAnimation.properties
2416
2462
  },
2417
- `#${guid}`
2463
+ animationSelector
2418
2464
  );
2419
2465
  }
2420
2466
  if (hoverAnimation?.name) {
@@ -2424,7 +2470,7 @@ var DivContainer = async (props) => {
2424
2470
  mode: "hover",
2425
2471
  ...hoverAnimation.properties
2426
2472
  },
2427
- `#${guid}`
2473
+ animationSelector
2428
2474
  );
2429
2475
  }
2430
2476
  const isHidden = !shouldRenderContainer(
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.20260721123022",
3
+ "version": "0.8.1-dev.20260721133206",
4
4
  "description": "Reusable React components",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",