@contentstack/live-preview-utils 3.1.1 → 3.1.3

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.
Files changed (254) hide show
  1. package/README.md +2 -2
  2. package/dist/legacy/configManager/config.default.cjs +8 -0
  3. package/dist/legacy/configManager/config.default.cjs.map +1 -1
  4. package/dist/legacy/configManager/config.default.js +8 -0
  5. package/dist/legacy/configManager/config.default.js.map +1 -1
  6. package/dist/legacy/configManager/handleUserConfig.cjs +7 -3
  7. package/dist/legacy/configManager/handleUserConfig.cjs.map +1 -1
  8. package/dist/legacy/configManager/handleUserConfig.js +7 -3
  9. package/dist/legacy/configManager/handleUserConfig.js.map +1 -1
  10. package/dist/legacy/livePreview/editButton/editButton.cjs +86 -1
  11. package/dist/legacy/livePreview/editButton/editButton.cjs.map +1 -1
  12. package/dist/legacy/livePreview/editButton/editButton.d.cts +14 -1
  13. package/dist/legacy/livePreview/editButton/editButton.d.ts +14 -1
  14. package/dist/legacy/livePreview/editButton/editButton.js +85 -1
  15. package/dist/legacy/livePreview/editButton/editButton.js.map +1 -1
  16. package/dist/legacy/livePreview/eventManager/postMessageEvent.hooks.cjs +1 -1
  17. package/dist/legacy/livePreview/eventManager/postMessageEvent.hooks.js +1 -1
  18. package/dist/legacy/preview/contentstack-live-preview-HOC.cjs +6 -2
  19. package/dist/legacy/preview/contentstack-live-preview-HOC.cjs.map +1 -1
  20. package/dist/legacy/preview/contentstack-live-preview-HOC.js +6 -2
  21. package/dist/legacy/preview/contentstack-live-preview-HOC.js.map +1 -1
  22. package/dist/legacy/types/types.cjs.map +1 -1
  23. package/dist/legacy/types/types.d.cts +7 -1
  24. package/dist/legacy/types/types.d.ts +7 -1
  25. package/dist/legacy/types/types.js.map +1 -1
  26. package/dist/legacy/visualBuilder/components/FieldToolbar.cjs +28 -22
  27. package/dist/legacy/visualBuilder/components/FieldToolbar.cjs.map +1 -1
  28. package/dist/legacy/visualBuilder/components/FieldToolbar.d.cts +1 -0
  29. package/dist/legacy/visualBuilder/components/FieldToolbar.d.ts +1 -0
  30. package/dist/legacy/visualBuilder/components/FieldToolbar.js +29 -24
  31. package/dist/legacy/visualBuilder/components/FieldToolbar.js.map +1 -1
  32. package/dist/legacy/visualBuilder/components/addInstanceButton.cjs +39 -11
  33. package/dist/legacy/visualBuilder/components/addInstanceButton.cjs.map +1 -1
  34. package/dist/legacy/visualBuilder/components/addInstanceButton.d.cts +5 -0
  35. package/dist/legacy/visualBuilder/components/addInstanceButton.d.ts +5 -0
  36. package/dist/legacy/visualBuilder/components/addInstanceButton.js +39 -11
  37. package/dist/legacy/visualBuilder/components/addInstanceButton.js.map +1 -1
  38. package/dist/legacy/visualBuilder/components/startEditingButton.cjs +38 -11
  39. package/dist/legacy/visualBuilder/components/startEditingButton.cjs.map +1 -1
  40. package/dist/legacy/visualBuilder/components/startEditingButton.d.cts +6 -2
  41. package/dist/legacy/visualBuilder/components/startEditingButton.d.ts +6 -2
  42. package/dist/legacy/visualBuilder/components/startEditingButton.js +34 -11
  43. package/dist/legacy/visualBuilder/components/startEditingButton.js.map +1 -1
  44. package/dist/legacy/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.cjs +59 -4
  45. package/dist/legacy/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.cjs.map +1 -1
  46. package/dist/legacy/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.js +59 -4
  47. package/dist/legacy/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.js.map +1 -1
  48. package/dist/legacy/visualBuilder/generators/generateAddInstanceButtons.cjs +8 -2
  49. package/dist/legacy/visualBuilder/generators/generateAddInstanceButtons.cjs.map +1 -1
  50. package/dist/legacy/visualBuilder/generators/generateAddInstanceButtons.d.cts +9 -3
  51. package/dist/legacy/visualBuilder/generators/generateAddInstanceButtons.d.ts +9 -3
  52. package/dist/legacy/visualBuilder/generators/generateAddInstanceButtons.js +8 -2
  53. package/dist/legacy/visualBuilder/generators/generateAddInstanceButtons.js.map +1 -1
  54. package/dist/legacy/visualBuilder/generators/generateOverlay.cjs +5 -0
  55. package/dist/legacy/visualBuilder/generators/generateOverlay.cjs.map +1 -1
  56. package/dist/legacy/visualBuilder/generators/generateOverlay.js +5 -0
  57. package/dist/legacy/visualBuilder/generators/generateOverlay.js.map +1 -1
  58. package/dist/legacy/visualBuilder/generators/generateToolbar.cjs +13 -5
  59. package/dist/legacy/visualBuilder/generators/generateToolbar.cjs.map +1 -1
  60. package/dist/legacy/visualBuilder/generators/generateToolbar.d.cts +2 -2
  61. package/dist/legacy/visualBuilder/generators/generateToolbar.d.ts +2 -2
  62. package/dist/legacy/visualBuilder/generators/generateToolbar.js +13 -5
  63. package/dist/legacy/visualBuilder/generators/generateToolbar.js.map +1 -1
  64. package/dist/legacy/visualBuilder/index.cjs +4 -2
  65. package/dist/legacy/visualBuilder/index.cjs.map +1 -1
  66. package/dist/legacy/visualBuilder/index.d.cts +1 -0
  67. package/dist/legacy/visualBuilder/index.d.ts +1 -0
  68. package/dist/legacy/visualBuilder/index.js +4 -2
  69. package/dist/legacy/visualBuilder/index.js.map +1 -1
  70. package/dist/legacy/visualBuilder/listeners/mouseClick.cjs +79 -21
  71. package/dist/legacy/visualBuilder/listeners/mouseClick.cjs.map +1 -1
  72. package/dist/legacy/visualBuilder/listeners/mouseClick.d.cts +4 -1
  73. package/dist/legacy/visualBuilder/listeners/mouseClick.d.ts +4 -1
  74. package/dist/legacy/visualBuilder/listeners/mouseClick.js +79 -21
  75. package/dist/legacy/visualBuilder/listeners/mouseClick.js.map +1 -1
  76. package/dist/legacy/visualBuilder/utils/enableInlineEditing.cjs +94 -0
  77. package/dist/legacy/visualBuilder/utils/enableInlineEditing.cjs.map +1 -0
  78. package/dist/legacy/visualBuilder/utils/enableInlineEditing.d.cts +11 -0
  79. package/dist/legacy/visualBuilder/utils/enableInlineEditing.d.ts +11 -0
  80. package/dist/legacy/visualBuilder/utils/enableInlineEditing.js +74 -0
  81. package/dist/legacy/visualBuilder/utils/enableInlineEditing.js.map +1 -0
  82. package/dist/legacy/visualBuilder/utils/getChildrenDirection.cjs +8 -0
  83. package/dist/legacy/visualBuilder/utils/getChildrenDirection.cjs.map +1 -1
  84. package/dist/legacy/visualBuilder/utils/getChildrenDirection.d.cts +3 -1
  85. package/dist/legacy/visualBuilder/utils/getChildrenDirection.d.ts +3 -1
  86. package/dist/legacy/visualBuilder/utils/getChildrenDirection.js +8 -0
  87. package/dist/legacy/visualBuilder/utils/getChildrenDirection.js.map +1 -1
  88. package/dist/legacy/visualBuilder/utils/handleIndividualFields.cjs +24 -112
  89. package/dist/legacy/visualBuilder/utils/handleIndividualFields.cjs.map +1 -1
  90. package/dist/legacy/visualBuilder/utils/handleIndividualFields.d.cts +3 -5
  91. package/dist/legacy/visualBuilder/utils/handleIndividualFields.d.ts +3 -5
  92. package/dist/legacy/visualBuilder/utils/handleIndividualFields.js +22 -116
  93. package/dist/legacy/visualBuilder/utils/handleIndividualFields.js.map +1 -1
  94. package/dist/legacy/visualBuilder/utils/handleInlineEditableField.cjs +81 -0
  95. package/dist/legacy/visualBuilder/utils/handleInlineEditableField.cjs.map +1 -0
  96. package/dist/legacy/visualBuilder/utils/handleInlineEditableField.d.cts +16 -0
  97. package/dist/legacy/visualBuilder/utils/handleInlineEditableField.d.ts +16 -0
  98. package/dist/legacy/visualBuilder/utils/handleInlineEditableField.js +58 -0
  99. package/dist/legacy/visualBuilder/utils/handleInlineEditableField.js.map +1 -0
  100. package/dist/legacy/visualBuilder/utils/isFieldMultiple.cjs +35 -0
  101. package/dist/legacy/visualBuilder/utils/isFieldMultiple.cjs.map +1 -0
  102. package/dist/legacy/visualBuilder/utils/isFieldMultiple.d.cts +6 -0
  103. package/dist/legacy/visualBuilder/utils/isFieldMultiple.d.ts +6 -0
  104. package/dist/legacy/visualBuilder/utils/isFieldMultiple.js +12 -0
  105. package/dist/legacy/visualBuilder/utils/isFieldMultiple.js.map +1 -0
  106. package/dist/legacy/visualBuilder/utils/multipleElementAddButton.cjs +14 -20
  107. package/dist/legacy/visualBuilder/utils/multipleElementAddButton.cjs.map +1 -1
  108. package/dist/legacy/visualBuilder/utils/multipleElementAddButton.d.cts +1 -1
  109. package/dist/legacy/visualBuilder/utils/multipleElementAddButton.d.ts +1 -1
  110. package/dist/legacy/visualBuilder/utils/multipleElementAddButton.js +14 -20
  111. package/dist/legacy/visualBuilder/utils/multipleElementAddButton.js.map +1 -1
  112. package/dist/legacy/visualBuilder/utils/pasteAsPlainText.cjs +44 -0
  113. package/dist/legacy/visualBuilder/utils/pasteAsPlainText.cjs.map +1 -0
  114. package/dist/legacy/visualBuilder/utils/pasteAsPlainText.d.cts +5 -0
  115. package/dist/legacy/visualBuilder/utils/pasteAsPlainText.d.ts +5 -0
  116. package/dist/legacy/visualBuilder/utils/pasteAsPlainText.js +21 -0
  117. package/dist/legacy/visualBuilder/utils/pasteAsPlainText.js.map +1 -0
  118. package/dist/legacy/visualBuilder/utils/types/index.types.cjs.map +1 -1
  119. package/dist/legacy/visualBuilder/utils/types/index.types.d.cts +6 -1
  120. package/dist/legacy/visualBuilder/utils/types/index.types.d.ts +6 -1
  121. package/dist/legacy/visualBuilder/utils/types/index.types.js.map +1 -1
  122. package/dist/legacy/visualBuilder/visualBuilder.style.cjs +27 -5
  123. package/dist/legacy/visualBuilder/visualBuilder.style.cjs.map +1 -1
  124. package/dist/legacy/visualBuilder/visualBuilder.style.d.cts +6 -1
  125. package/dist/legacy/visualBuilder/visualBuilder.style.d.ts +6 -1
  126. package/dist/legacy/visualBuilder/visualBuilder.style.js +27 -5
  127. package/dist/legacy/visualBuilder/visualBuilder.style.js.map +1 -1
  128. package/dist/modern/configManager/config.default.cjs +8 -0
  129. package/dist/modern/configManager/config.default.cjs.map +1 -1
  130. package/dist/modern/configManager/config.default.js +8 -0
  131. package/dist/modern/configManager/config.default.js.map +1 -1
  132. package/dist/modern/configManager/handleUserConfig.cjs +4 -0
  133. package/dist/modern/configManager/handleUserConfig.cjs.map +1 -1
  134. package/dist/modern/configManager/handleUserConfig.js +4 -0
  135. package/dist/modern/configManager/handleUserConfig.js.map +1 -1
  136. package/dist/modern/livePreview/editButton/editButton.cjs +85 -1
  137. package/dist/modern/livePreview/editButton/editButton.cjs.map +1 -1
  138. package/dist/modern/livePreview/editButton/editButton.d.cts +14 -1
  139. package/dist/modern/livePreview/editButton/editButton.d.ts +14 -1
  140. package/dist/modern/livePreview/editButton/editButton.js +84 -1
  141. package/dist/modern/livePreview/editButton/editButton.js.map +1 -1
  142. package/dist/modern/livePreview/eventManager/postMessageEvent.hooks.cjs +1 -1
  143. package/dist/modern/livePreview/eventManager/postMessageEvent.hooks.js +1 -1
  144. package/dist/modern/preview/contentstack-live-preview-HOC.cjs +6 -2
  145. package/dist/modern/preview/contentstack-live-preview-HOC.cjs.map +1 -1
  146. package/dist/modern/preview/contentstack-live-preview-HOC.js +6 -2
  147. package/dist/modern/preview/contentstack-live-preview-HOC.js.map +1 -1
  148. package/dist/modern/types/types.cjs.map +1 -1
  149. package/dist/modern/types/types.d.cts +7 -1
  150. package/dist/modern/types/types.d.ts +7 -1
  151. package/dist/modern/types/types.js.map +1 -1
  152. package/dist/modern/visualBuilder/components/FieldToolbar.cjs +28 -21
  153. package/dist/modern/visualBuilder/components/FieldToolbar.cjs.map +1 -1
  154. package/dist/modern/visualBuilder/components/FieldToolbar.d.cts +1 -0
  155. package/dist/modern/visualBuilder/components/FieldToolbar.d.ts +1 -0
  156. package/dist/modern/visualBuilder/components/FieldToolbar.js +29 -23
  157. package/dist/modern/visualBuilder/components/FieldToolbar.js.map +1 -1
  158. package/dist/modern/visualBuilder/components/addInstanceButton.cjs +38 -11
  159. package/dist/modern/visualBuilder/components/addInstanceButton.cjs.map +1 -1
  160. package/dist/modern/visualBuilder/components/addInstanceButton.d.cts +5 -0
  161. package/dist/modern/visualBuilder/components/addInstanceButton.d.ts +5 -0
  162. package/dist/modern/visualBuilder/components/addInstanceButton.js +38 -11
  163. package/dist/modern/visualBuilder/components/addInstanceButton.js.map +1 -1
  164. package/dist/modern/visualBuilder/components/startEditingButton.cjs +38 -11
  165. package/dist/modern/visualBuilder/components/startEditingButton.cjs.map +1 -1
  166. package/dist/modern/visualBuilder/components/startEditingButton.d.cts +6 -2
  167. package/dist/modern/visualBuilder/components/startEditingButton.d.ts +6 -2
  168. package/dist/modern/visualBuilder/components/startEditingButton.js +34 -11
  169. package/dist/modern/visualBuilder/components/startEditingButton.js.map +1 -1
  170. package/dist/modern/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.cjs +59 -4
  171. package/dist/modern/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.cjs.map +1 -1
  172. package/dist/modern/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.js +59 -4
  173. package/dist/modern/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.js.map +1 -1
  174. package/dist/modern/visualBuilder/generators/generateAddInstanceButtons.cjs +8 -2
  175. package/dist/modern/visualBuilder/generators/generateAddInstanceButtons.cjs.map +1 -1
  176. package/dist/modern/visualBuilder/generators/generateAddInstanceButtons.d.cts +9 -3
  177. package/dist/modern/visualBuilder/generators/generateAddInstanceButtons.d.ts +9 -3
  178. package/dist/modern/visualBuilder/generators/generateAddInstanceButtons.js +8 -2
  179. package/dist/modern/visualBuilder/generators/generateAddInstanceButtons.js.map +1 -1
  180. package/dist/modern/visualBuilder/generators/generateOverlay.cjs +5 -0
  181. package/dist/modern/visualBuilder/generators/generateOverlay.cjs.map +1 -1
  182. package/dist/modern/visualBuilder/generators/generateOverlay.js +5 -0
  183. package/dist/modern/visualBuilder/generators/generateOverlay.js.map +1 -1
  184. package/dist/modern/visualBuilder/generators/generateToolbar.cjs +13 -5
  185. package/dist/modern/visualBuilder/generators/generateToolbar.cjs.map +1 -1
  186. package/dist/modern/visualBuilder/generators/generateToolbar.d.cts +2 -2
  187. package/dist/modern/visualBuilder/generators/generateToolbar.d.ts +2 -2
  188. package/dist/modern/visualBuilder/generators/generateToolbar.js +13 -5
  189. package/dist/modern/visualBuilder/generators/generateToolbar.js.map +1 -1
  190. package/dist/modern/visualBuilder/index.cjs +4 -2
  191. package/dist/modern/visualBuilder/index.cjs.map +1 -1
  192. package/dist/modern/visualBuilder/index.d.cts +1 -0
  193. package/dist/modern/visualBuilder/index.d.ts +1 -0
  194. package/dist/modern/visualBuilder/index.js +4 -2
  195. package/dist/modern/visualBuilder/index.js.map +1 -1
  196. package/dist/modern/visualBuilder/listeners/mouseClick.cjs +76 -19
  197. package/dist/modern/visualBuilder/listeners/mouseClick.cjs.map +1 -1
  198. package/dist/modern/visualBuilder/listeners/mouseClick.d.cts +4 -1
  199. package/dist/modern/visualBuilder/listeners/mouseClick.d.ts +4 -1
  200. package/dist/modern/visualBuilder/listeners/mouseClick.js +76 -19
  201. package/dist/modern/visualBuilder/listeners/mouseClick.js.map +1 -1
  202. package/dist/modern/visualBuilder/utils/enableInlineEditing.cjs +94 -0
  203. package/dist/modern/visualBuilder/utils/enableInlineEditing.cjs.map +1 -0
  204. package/dist/modern/visualBuilder/utils/enableInlineEditing.d.cts +11 -0
  205. package/dist/modern/visualBuilder/utils/enableInlineEditing.d.ts +11 -0
  206. package/dist/modern/visualBuilder/utils/enableInlineEditing.js +74 -0
  207. package/dist/modern/visualBuilder/utils/enableInlineEditing.js.map +1 -0
  208. package/dist/modern/visualBuilder/utils/getChildrenDirection.cjs +8 -0
  209. package/dist/modern/visualBuilder/utils/getChildrenDirection.cjs.map +1 -1
  210. package/dist/modern/visualBuilder/utils/getChildrenDirection.d.cts +3 -1
  211. package/dist/modern/visualBuilder/utils/getChildrenDirection.d.ts +3 -1
  212. package/dist/modern/visualBuilder/utils/getChildrenDirection.js +8 -0
  213. package/dist/modern/visualBuilder/utils/getChildrenDirection.js.map +1 -1
  214. package/dist/modern/visualBuilder/utils/handleIndividualFields.cjs +23 -111
  215. package/dist/modern/visualBuilder/utils/handleIndividualFields.cjs.map +1 -1
  216. package/dist/modern/visualBuilder/utils/handleIndividualFields.d.cts +3 -5
  217. package/dist/modern/visualBuilder/utils/handleIndividualFields.d.ts +3 -5
  218. package/dist/modern/visualBuilder/utils/handleIndividualFields.js +21 -115
  219. package/dist/modern/visualBuilder/utils/handleIndividualFields.js.map +1 -1
  220. package/dist/modern/visualBuilder/utils/handleInlineEditableField.cjs +81 -0
  221. package/dist/modern/visualBuilder/utils/handleInlineEditableField.cjs.map +1 -0
  222. package/dist/modern/visualBuilder/utils/handleInlineEditableField.d.cts +16 -0
  223. package/dist/modern/visualBuilder/utils/handleInlineEditableField.d.ts +16 -0
  224. package/dist/modern/visualBuilder/utils/handleInlineEditableField.js +58 -0
  225. package/dist/modern/visualBuilder/utils/handleInlineEditableField.js.map +1 -0
  226. package/dist/modern/visualBuilder/utils/isFieldMultiple.cjs +35 -0
  227. package/dist/modern/visualBuilder/utils/isFieldMultiple.cjs.map +1 -0
  228. package/dist/modern/visualBuilder/utils/isFieldMultiple.d.cts +6 -0
  229. package/dist/modern/visualBuilder/utils/isFieldMultiple.d.ts +6 -0
  230. package/dist/modern/visualBuilder/utils/isFieldMultiple.js +12 -0
  231. package/dist/modern/visualBuilder/utils/isFieldMultiple.js.map +1 -0
  232. package/dist/modern/visualBuilder/utils/multipleElementAddButton.cjs +14 -18
  233. package/dist/modern/visualBuilder/utils/multipleElementAddButton.cjs.map +1 -1
  234. package/dist/modern/visualBuilder/utils/multipleElementAddButton.d.cts +1 -1
  235. package/dist/modern/visualBuilder/utils/multipleElementAddButton.d.ts +1 -1
  236. package/dist/modern/visualBuilder/utils/multipleElementAddButton.js +14 -18
  237. package/dist/modern/visualBuilder/utils/multipleElementAddButton.js.map +1 -1
  238. package/dist/modern/visualBuilder/utils/pasteAsPlainText.cjs +44 -0
  239. package/dist/modern/visualBuilder/utils/pasteAsPlainText.cjs.map +1 -0
  240. package/dist/modern/visualBuilder/utils/pasteAsPlainText.d.cts +5 -0
  241. package/dist/modern/visualBuilder/utils/pasteAsPlainText.d.ts +5 -0
  242. package/dist/modern/visualBuilder/utils/pasteAsPlainText.js +21 -0
  243. package/dist/modern/visualBuilder/utils/pasteAsPlainText.js.map +1 -0
  244. package/dist/modern/visualBuilder/utils/types/index.types.cjs.map +1 -1
  245. package/dist/modern/visualBuilder/utils/types/index.types.d.cts +6 -1
  246. package/dist/modern/visualBuilder/utils/types/index.types.d.ts +6 -1
  247. package/dist/modern/visualBuilder/utils/types/index.types.js.map +1 -1
  248. package/dist/modern/visualBuilder/visualBuilder.style.cjs +27 -5
  249. package/dist/modern/visualBuilder/visualBuilder.style.cjs.map +1 -1
  250. package/dist/modern/visualBuilder/visualBuilder.style.d.cts +6 -1
  251. package/dist/modern/visualBuilder/visualBuilder.style.d.ts +6 -1
  252. package/dist/modern/visualBuilder/visualBuilder.style.js +27 -5
  253. package/dist/modern/visualBuilder/visualBuilder.style.js.map +1 -1
  254. package/package.json +3 -2
@@ -1,4 +1,6 @@
1
1
  import { ISchemaFieldMap } from '../utils/types/index.types.js';
2
+ import { CslpData } from '../../cslp/types/cslp.types.js';
3
+ import { Signal } from '@preact/signals';
2
4
  import '../../cms/types/contentTypeSchema.types.js';
3
5
 
4
6
  interface AddInstanceButtonProps {
@@ -6,6 +8,9 @@ interface AddInstanceButtonProps {
6
8
  onClick: (event: MouseEvent) => void;
7
9
  label?: string | undefined;
8
10
  fieldSchema: ISchemaFieldMap | undefined;
11
+ fieldMetadata: CslpData;
12
+ index: number;
13
+ loading: Signal<boolean>;
9
14
  }
10
15
  declare function AddInstanceButtonComponent(props: AddInstanceButtonProps): JSX.Element;
11
16
 
@@ -4,28 +4,56 @@ import "../../chunk-5WRI5ZAA.js";
4
4
  import classNames from "classnames";
5
5
  import { visualBuilderStyles } from "../visualBuilder.style.js";
6
6
  import { PlusIcon } from "./icons/index.js";
7
+ import visualBuilderPostMessage from "../utils/visualBuilderPostMessage.js";
8
+ import { VisualBuilderPostMessageEvents } from "../utils/types/postMessage.types.js";
7
9
  import { jsx, jsxs } from "preact/jsx-runtime";
8
10
  function AddInstanceButtonComponent(props) {
9
11
  const fieldSchema = props.fieldSchema;
10
- const disabled = fieldSchema && "max_instance" in fieldSchema && fieldSchema.max_instance ? props.value.length >= fieldSchema.max_instance : false;
12
+ const fieldMetadata = props.fieldMetadata;
13
+ const index = props.index;
14
+ const loading = props.loading;
15
+ const onClick = async (event) => {
16
+ var _a;
17
+ loading.value = true;
18
+ try {
19
+ await ((_a = visualBuilderPostMessage) == null ? void 0 : _a.send(
20
+ VisualBuilderPostMessageEvents.ADD_INSTANCE,
21
+ {
22
+ fieldMetadata,
23
+ index
24
+ }
25
+ ));
26
+ } catch (error) {
27
+ console.error("Visual Builder: Failed to add instance", error);
28
+ }
29
+ loading.value = false;
30
+ props.onClick(event);
31
+ };
32
+ const buttonClassName = classNames(
33
+ "visual-builder__add-button",
34
+ visualBuilderStyles()["visual-builder__add-button"],
35
+ {
36
+ "visual-builder__add-button--with-label": props.label
37
+ },
38
+ {
39
+ [visualBuilderStyles()["visual-builder__add-button--loading"]]: loading.value
40
+ },
41
+ visualBuilderStyles()["visual-builder__tooltip"]
42
+ );
43
+ const maxInstances = fieldSchema && fieldSchema.data_type !== "block" ? fieldSchema.max_instance : void 0;
44
+ const isMaxInstances = maxInstances ? props.value.length >= maxInstances : false;
45
+ const disabled = loading.value || isMaxInstances;
11
46
  return /* @__PURE__ */ jsxs(
12
47
  "button",
13
48
  {
14
- className: classNames(
15
- "visual-builder__add-button",
16
- visualBuilderStyles()["visual-builder__add-button"],
17
- {
18
- "visual-builder__add-button--with-label": props.label
19
- },
20
- visualBuilderStyles()["visual-builder__tooltip"]
21
- ),
49
+ className: buttonClassName,
22
50
  "data-tooltip": "Add section",
23
51
  "data-testid": "visual-builder-add-instance-button",
24
52
  disabled,
25
- title: disabled && fieldSchema && "max_instance" in fieldSchema ? `Max ${fieldSchema.max_instance} instances allowed` : void 0,
53
+ title: maxInstances && isMaxInstances ? `Max ${maxInstances} instances allowed` : void 0,
26
54
  onClick: (e) => {
27
55
  const event = e;
28
- props.onClick(event);
56
+ onClick(event);
29
57
  },
30
58
  children: [
31
59
  /* @__PURE__ */ jsx(PlusIcon, {}),
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/visualBuilder/components/addInstanceButton.tsx"],"sourcesContent":["import React from \"preact/compat\";\nimport classNames from \"classnames\";\nimport { visualBuilderStyles } from \"../visualBuilder.style\";\nimport { PlusIcon } from \"./icons\";\nimport { ISchemaFieldMap } from \"../utils/types/index.types\";\n\ninterface AddInstanceButtonProps {\n value: any;\n onClick: (event: MouseEvent) => void;\n label?: string | undefined;\n fieldSchema: ISchemaFieldMap | undefined;\n}\n\nfunction AddInstanceButtonComponent(\n props: AddInstanceButtonProps\n): JSX.Element {\n const fieldSchema = props.fieldSchema;\n const disabled =\n fieldSchema && \"max_instance\" in fieldSchema && fieldSchema.max_instance\n ? props.value.length >= fieldSchema.max_instance\n : false;\n\n return (\n <button\n className={classNames(\n \"visual-builder__add-button\",\n visualBuilderStyles()[\"visual-builder__add-button\"],\n {\n \"visual-builder__add-button--with-label\": props.label,\n },\n visualBuilderStyles()[\"visual-builder__tooltip\"]\n )}\n data-tooltip={\"Add section\"}\n data-testid=\"visual-builder-add-instance-button\"\n disabled={disabled}\n title={\n disabled && fieldSchema && \"max_instance\" in fieldSchema\n ? `Max ${fieldSchema.max_instance} instances allowed`\n : undefined\n }\n onClick={(e) => {\n const event = e as unknown as MouseEvent;\n props.onClick(event);\n }}\n >\n <PlusIcon />\n {props.label ? (\n <span\n title={props.label}\n className={classNames(\n \"visual-builder__add-button-label\",\n visualBuilderStyles()[\n \"visual-builder__add-button-label\"\n ]\n )}\n >\n {props.label}\n </span>\n ) : null}\n </button>\n );\n}\n\nexport default AddInstanceButtonComponent;\n"],"mappings":";;;AACA,OAAO,gBAAgB;AACvB,SAAS,2BAA2B;AACpC,SAAS,gBAAgB;AAoBjB,SAsBI,KAtBJ;AAVR,SAAS,2BACL,OACW;AACX,QAAM,cAAc,MAAM;AAC1B,QAAM,WACF,eAAe,kBAAkB,eAAe,YAAY,eACtD,MAAM,MAAM,UAAU,YAAY,eAClC;AAEV,SACI;AAAA,IAAC;AAAA;AAAA,MACG,WAAW;AAAA,QACP;AAAA,QACA,oBAAoB,EAAE,4BAA4B;AAAA,QAClD;AAAA,UACI,0CAA0C,MAAM;AAAA,QACpD;AAAA,QACA,oBAAoB,EAAE,yBAAyB;AAAA,MACnD;AAAA,MACA,gBAAc;AAAA,MACd,eAAY;AAAA,MACZ;AAAA,MACA,OACI,YAAY,eAAe,kBAAkB,cACvC,OAAO,YAAY,YAAY,uBAC/B;AAAA,MAEV,SAAS,CAAC,MAAM;AACZ,cAAM,QAAQ;AACd,cAAM,QAAQ,KAAK;AAAA,MACvB;AAAA,MAEA;AAAA,4BAAC,YAAS;AAAA,QACT,MAAM,QACH;AAAA,UAAC;AAAA;AAAA,YACG,OAAO,MAAM;AAAA,YACb,WAAW;AAAA,cACP;AAAA,cACA,oBAAoB,EAChB,kCACJ;AAAA,YACJ;AAAA,YAEC,gBAAM;AAAA;AAAA,QACX,IACA;AAAA;AAAA;AAAA,EACR;AAER;AAEA,IAAO,4BAAQ;","names":[]}
1
+ {"version":3,"sources":["../../../../src/visualBuilder/components/addInstanceButton.tsx"],"sourcesContent":["import React from \"preact/compat\";\nimport classNames from \"classnames\";\nimport { visualBuilderStyles } from \"../visualBuilder.style\";\nimport { PlusIcon } from \"./icons\";\nimport { ISchemaFieldMap } from \"../utils/types/index.types\";\nimport { CslpData } from \"../../cslp/types/cslp.types\";\nimport visualBuilderPostMessage from \"../utils/visualBuilderPostMessage\";\nimport { VisualBuilderPostMessageEvents } from \"../utils/types/postMessage.types\";\nimport { Signal } from \"@preact/signals\";\n\ninterface AddInstanceButtonProps {\n value: any;\n onClick: (event: MouseEvent) => void;\n label?: string | undefined;\n fieldSchema: ISchemaFieldMap | undefined;\n fieldMetadata: CslpData;\n index: number;\n loading: Signal<boolean>;\n}\n\nfunction AddInstanceButtonComponent(\n props: AddInstanceButtonProps\n): JSX.Element {\n const fieldSchema = props.fieldSchema;\n const fieldMetadata = props.fieldMetadata;\n const index = props.index;\n const loading = props.loading;\n\n const onClick = async (event: MouseEvent) => {\n loading.value = true;\n try {\n await visualBuilderPostMessage?.send(\n VisualBuilderPostMessageEvents.ADD_INSTANCE,\n {\n fieldMetadata,\n index,\n }\n );\n } catch (error) {\n console.error(\"Visual Builder: Failed to add instance\", error);\n }\n loading.value = false;\n props.onClick(event);\n };\n\n const buttonClassName = classNames(\n \"visual-builder__add-button\",\n visualBuilderStyles()[\"visual-builder__add-button\"],\n {\n \"visual-builder__add-button--with-label\": props.label,\n },\n {\n [visualBuilderStyles()[\"visual-builder__add-button--loading\"]]:\n loading.value,\n },\n visualBuilderStyles()[\"visual-builder__tooltip\"]\n );\n\n const maxInstances =\n fieldSchema && fieldSchema.data_type !== \"block\"\n ? fieldSchema.max_instance\n : undefined;\n const isMaxInstances = maxInstances\n ? props.value.length >= maxInstances\n : false;\n const disabled = loading.value || isMaxInstances;\n\n return (\n <button\n className={buttonClassName}\n data-tooltip={\"Add section\"}\n data-testid=\"visual-builder-add-instance-button\"\n disabled={disabled}\n title={\n maxInstances && isMaxInstances\n ? `Max ${maxInstances} instances allowed`\n : undefined\n }\n onClick={(e) => {\n const event = e as unknown as MouseEvent;\n onClick(event);\n }}\n >\n <PlusIcon />\n {props.label ? (\n <span\n title={props.label}\n className={classNames(\n \"visual-builder__add-button-label\",\n visualBuilderStyles()[\n \"visual-builder__add-button-label\"\n ]\n )}\n >\n {props.label}\n </span>\n ) : null}\n </button>\n );\n}\n\nexport default AddInstanceButtonComponent;\n"],"mappings":";;;AACA,OAAO,gBAAgB;AACvB,SAAS,2BAA2B;AACpC,SAAS,gBAAgB;AAGzB,OAAO,8BAA8B;AACrC,SAAS,sCAAsC;AA6DvC,SAeI,KAfJ;AAhDR,SAAS,2BACL,OACW;AACX,QAAM,cAAc,MAAM;AAC1B,QAAM,gBAAgB,MAAM;AAC5B,QAAM,QAAQ,MAAM;AACpB,QAAM,UAAU,MAAM;AAEtB,QAAM,UAAU,OAAO,UAAsB;AA5BjD;AA6BQ,YAAQ,QAAQ;AAChB,QAAI;AACA,cAAM,qDAA0B;AAAA,QAC5B,+BAA+B;AAAA,QAC/B;AAAA,UACI;AAAA,UACA;AAAA,QACJ;AAAA;AAAA,IAER,SAAS,OAAO;AACZ,cAAQ,MAAM,0CAA0C,KAAK;AAAA,IACjE;AACA,YAAQ,QAAQ;AAChB,UAAM,QAAQ,KAAK;AAAA,EACvB;AAEA,QAAM,kBAAkB;AAAA,IACpB;AAAA,IACA,oBAAoB,EAAE,4BAA4B;AAAA,IAClD;AAAA,MACI,0CAA0C,MAAM;AAAA,IACpD;AAAA,IACA;AAAA,MACI,CAAC,oBAAoB,EAAE,qCAAqC,CAAC,GACzD,QAAQ;AAAA,IAChB;AAAA,IACA,oBAAoB,EAAE,yBAAyB;AAAA,EACnD;AAEA,QAAM,eACF,eAAe,YAAY,cAAc,UACnC,YAAY,eACZ;AACV,QAAM,iBAAiB,eACjB,MAAM,MAAM,UAAU,eACtB;AACN,QAAM,WAAW,QAAQ,SAAS;AAElC,SACI;AAAA,IAAC;AAAA;AAAA,MACG,WAAW;AAAA,MACX,gBAAc;AAAA,MACd,eAAY;AAAA,MACZ;AAAA,MACA,OACI,gBAAgB,iBACV,OAAO,YAAY,uBACnB;AAAA,MAEV,SAAS,CAAC,MAAM;AACZ,cAAM,QAAQ;AACd,gBAAQ,KAAK;AAAA,MACjB;AAAA,MAEA;AAAA,4BAAC,YAAS;AAAA,QACT,MAAM,QACH;AAAA,UAAC;AAAA;AAAA,YACG,OAAO,MAAM;AAAA,YACb,WAAW;AAAA,cACP;AAAA,cACA,oBAAoB,EAChB,kCACJ;AAAA,YACJ;AAAA,YAEC,gBAAM;AAAA;AAAA,QACX,IACA;AAAA;AAAA;AAAA,EACR;AAER;AAEA,IAAO,4BAAQ;","names":[]}
@@ -30,37 +30,64 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
30
30
  // src/visualBuilder/components/startEditingButton.tsx
31
31
  var startEditingButton_exports = {};
32
32
  __export(startEditingButton_exports, {
33
- default: () => startEditingButton_default
33
+ default: () => startEditingButton_default,
34
+ getEditButtonPosition: () => getEditButtonPosition
34
35
  });
35
36
  module.exports = __toCommonJS(startEditingButton_exports);
36
37
  var import_classnames = __toESM(require("classnames"), 1);
37
38
  var import_getVisualBuilderRedirectionUrl = __toESM(require("../utils/getVisualBuilderRedirectionUrl.cjs"), 1);
38
39
  var import_icons = require("./icons/index.cjs");
39
40
  var import_visualBuilder = require("../visualBuilder.style.cjs");
41
+ var import_configManager = __toESM(require("../../configManager/configManager.cjs"), 1);
40
42
  var import_jsx_runtime = require("preact/jsx-runtime");
43
+ var positionStyles = {
44
+ "bottom-right": (0, import_visualBuilder.visualBuilderStyles)()["visual-builder__start-editing-btn__bottom-right"],
45
+ "bottom-left": (0, import_visualBuilder.visualBuilderStyles)()["visual-builder__start-editing-btn__bottom-left"],
46
+ "top-left": (0, import_visualBuilder.visualBuilderStyles)()["visual-builder__start-editing-btn__top-left"],
47
+ "top-right": (0, import_visualBuilder.visualBuilderStyles)()["visual-builder__start-editing-btn__top-right"]
48
+ };
49
+ function getEditButtonPosition(position) {
50
+ const validPositions = ["bottom-left", "bottom-right", "top-left", "top-right"];
51
+ if (validPositions.includes(position)) {
52
+ return position;
53
+ } else {
54
+ return "bottom-right";
55
+ }
56
+ }
41
57
  function StartEditingButtonComponent() {
42
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
58
+ const config = import_configManager.default.get();
59
+ const enable = config.editInVisualBuilderButton.enable;
60
+ const position = config.editInVisualBuilderButton.position || "bottom-right";
61
+ function updateTargetUrl(e) {
62
+ const targetElement = e.target;
63
+ targetElement.setAttribute(
64
+ "href",
65
+ (0, import_getVisualBuilderRedirectionUrl.default)().toString()
66
+ );
67
+ }
68
+ return enable ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
43
69
  "a",
44
70
  {
45
71
  href: (0, import_getVisualBuilderRedirectionUrl.default)().toString(),
46
72
  className: (0, import_classnames.default)(
47
73
  "visual-builder__start-editing-btn",
48
- (0, import_visualBuilder.visualBuilderStyles)()["visual-builder__start-editing-btn"]
74
+ (0, import_visualBuilder.visualBuilderStyles)()["visual-builder__start-editing-btn"],
75
+ positionStyles[getEditButtonPosition(position)]
49
76
  ),
50
77
  "data-testid": "vcms-start-editing-btn",
51
- onClick: (e) => {
52
- const targetElement = e.target;
53
- targetElement.setAttribute(
54
- "href",
55
- (0, import_getVisualBuilderRedirectionUrl.default)().toString()
56
- );
57
- },
78
+ onMouseEnter: (e) => updateTargetUrl(e),
79
+ onFocus: (e) => updateTargetUrl(e),
80
+ onClick: (e) => updateTargetUrl(e),
58
81
  children: [
59
82
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_icons.EditIcon, {}),
60
83
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: "Start Editing" })
61
84
  ]
62
85
  }
63
- );
86
+ ) : null;
64
87
  }
65
88
  var startEditingButton_default = StartEditingButtonComponent;
89
+ // Annotate the CommonJS export names for ESM import in node:
90
+ 0 && (module.exports = {
91
+ getEditButtonPosition
92
+ });
66
93
  //# sourceMappingURL=startEditingButton.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/visualBuilder/components/startEditingButton.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport getVisualBuilderRedirectionUrl from \"../utils/getVisualBuilderRedirectionUrl\";\nimport { EditIcon } from \"./icons\";\nimport { visualBuilderStyles } from \"../visualBuilder.style\";\nimport React from \"preact/compat\";\n\nfunction StartEditingButtonComponent(): JSX.Element {\n return (\n <a\n href={getVisualBuilderRedirectionUrl().toString()}\n className={classNames(\n \"visual-builder__start-editing-btn\",\n visualBuilderStyles()[\"visual-builder__start-editing-btn\"]\n )}\n data-testid=\"vcms-start-editing-btn\"\n onClick={(e) => {\n const targetElement = e.target as HTMLAnchorElement;\n targetElement.setAttribute(\n \"href\",\n getVisualBuilderRedirectionUrl().toString()\n );\n }}\n >\n <EditIcon />\n <span>Start Editing</span>\n </a>\n );\n}\n\nexport default StartEditingButtonComponent;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAuB;AACvB,4CAA2C;AAC3C,mBAAyB;AACzB,2BAAoC;AAK5B;AAFR,SAAS,8BAA2C;AAChD,SACI;AAAA,IAAC;AAAA;AAAA,MACG,UAAM,sCAAAA,SAA+B,EAAE,SAAS;AAAA,MAChD,eAAW,kBAAAC;AAAA,QACP;AAAA,YACA,0CAAoB,EAAE,mCAAmC;AAAA,MAC7D;AAAA,MACA,eAAY;AAAA,MACZ,SAAS,CAAC,MAAM;AACZ,cAAM,gBAAgB,EAAE;AACxB,sBAAc;AAAA,UACV;AAAA,cACA,sCAAAD,SAA+B,EAAE,SAAS;AAAA,QAC9C;AAAA,MACJ;AAAA,MAEA;AAAA,oDAAC,yBAAS;AAAA,QACV,4CAAC,UAAK,2BAAa;AAAA;AAAA;AAAA,EACvB;AAER;AAEA,IAAO,6BAAQ;","names":["getVisualBuilderRedirectionUrl","classNames"]}
1
+ {"version":3,"sources":["../../../../src/visualBuilder/components/startEditingButton.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport getVisualBuilderRedirectionUrl from \"../utils/getVisualBuilderRedirectionUrl\";\nimport { EditIcon } from \"./icons\";\nimport { visualBuilderStyles } from \"../visualBuilder.style\";\nimport React from \"preact/compat\";\nimport Config from \"../../configManager/configManager\";\nimport { IConfigEditInVisualBuilderButton } from \"../../types/types\";\n\n\ntype Position = NonNullable<IConfigEditInVisualBuilderButton['position']>;\n\nconst positionStyles: Record<Position, string> = {\n \"bottom-right\": visualBuilderStyles()['visual-builder__start-editing-btn__bottom-right'],\n \"bottom-left\": visualBuilderStyles()['visual-builder__start-editing-btn__bottom-left'],\n \"top-left\": visualBuilderStyles()['visual-builder__start-editing-btn__top-left'],\n \"top-right\": visualBuilderStyles()['visual-builder__start-editing-btn__top-right'],\n}\n\nexport function getEditButtonPosition(position: any): Position {\n const validPositions: Position[] = ['bottom-left', 'bottom-right', 'top-left', 'top-right']\n if(validPositions.includes(position)){\n return position\n } else {\n return \"bottom-right\"\n }\n}\n\nfunction StartEditingButtonComponent(): JSX.Element | null {\n const config = Config.get()\n const enable = config.editInVisualBuilderButton.enable;\n const position = config.editInVisualBuilderButton.position || \"bottom-right\";\n \n function updateTargetUrl(e: any){\n const targetElement = e.target as HTMLAnchorElement;\n targetElement.setAttribute(\n \"href\",\n getVisualBuilderRedirectionUrl().toString()\n );\n }\n\n return enable ? (\n <a\n href={getVisualBuilderRedirectionUrl().toString()}\n className={classNames(\n \"visual-builder__start-editing-btn\",\n visualBuilderStyles()[\"visual-builder__start-editing-btn\"],\n positionStyles[getEditButtonPosition(position)]\n )}\n data-testid=\"vcms-start-editing-btn\"\n onMouseEnter={(e) => updateTargetUrl(e)}\n onFocus={(e) => updateTargetUrl(e)}\n onClick={(e) => updateTargetUrl(e)}\n >\n <EditIcon />\n <span>Start Editing</span>\n </a>\n ) : null;\n}\n\nexport default StartEditingButtonComponent;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAuB;AACvB,4CAA2C;AAC3C,mBAAyB;AACzB,2BAAoC;AAEpC,2BAAmB;AAoCX;AA9BR,IAAM,iBAA2C;AAAA,EAC7C,oBAAgB,0CAAoB,EAAE,iDAAiD;AAAA,EACvF,mBAAe,0CAAoB,EAAE,gDAAgD;AAAA,EACrF,gBAAY,0CAAoB,EAAE,6CAA6C;AAAA,EAC/E,iBAAa,0CAAoB,EAAE,8CAA8C;AACrF;AAEO,SAAS,sBAAsB,UAAyB;AAC3D,QAAM,iBAA6B,CAAC,eAAe,gBAAgB,YAAY,WAAW;AAC1F,MAAG,eAAe,SAAS,QAAQ,GAAE;AACjC,WAAO;AAAA,EACX,OAAO;AACH,WAAO;AAAA,EACX;AACJ;AAEA,SAAS,8BAAkD;AACvD,QAAM,SAAS,qBAAAA,QAAO,IAAI;AAC1B,QAAM,SAAS,OAAO,0BAA0B;AAChD,QAAM,WAAW,OAAO,0BAA0B,YAAY;AAE9D,WAAS,gBAAgB,GAAO;AAC5B,UAAM,gBAAgB,EAAE;AACxB,kBAAc;AAAA,MACV;AAAA,UACA,sCAAAC,SAA+B,EAAE,SAAS;AAAA,IAC9C;AAAA,EACJ;AAEA,SAAO,SACH;AAAA,IAAC;AAAA;AAAA,MACG,UAAM,sCAAAA,SAA+B,EAAE,SAAS;AAAA,MAChD,eAAW,kBAAAC;AAAA,QACP;AAAA,YACA,0CAAoB,EAAE,mCAAmC;AAAA,QACzD,eAAe,sBAAsB,QAAQ,CAAC;AAAA,MAClD;AAAA,MACA,eAAY;AAAA,MACZ,cAAc,CAAC,MAAM,gBAAgB,CAAC;AAAA,MACtC,SAAS,CAAC,MAAM,gBAAgB,CAAC;AAAA,MACjC,SAAS,CAAC,MAAM,gBAAgB,CAAC;AAAA,MAEjC;AAAA,oDAAC,yBAAS;AAAA,QACV,4CAAC,UAAK,2BAAa;AAAA;AAAA;AAAA,EACvB,IACA;AACR;AAEA,IAAO,6BAAQ;","names":["Config","getVisualBuilderRedirectionUrl","classNames"]}
@@ -1,3 +1,7 @@
1
- declare function StartEditingButtonComponent(): JSX.Element;
1
+ import { IConfigEditInVisualBuilderButton } from '../../types/types.cjs';
2
2
 
3
- export { StartEditingButtonComponent as default };
3
+ type Position = NonNullable<IConfigEditInVisualBuilderButton['position']>;
4
+ declare function getEditButtonPosition(position: any): Position;
5
+ declare function StartEditingButtonComponent(): JSX.Element | null;
6
+
7
+ export { StartEditingButtonComponent as default, getEditButtonPosition };
@@ -1,3 +1,7 @@
1
- declare function StartEditingButtonComponent(): JSX.Element;
1
+ import { IConfigEditInVisualBuilderButton } from '../../types/types.js';
2
2
 
3
- export { StartEditingButtonComponent as default };
3
+ type Position = NonNullable<IConfigEditInVisualBuilderButton['position']>;
4
+ declare function getEditButtonPosition(position: any): Position;
5
+ declare function StartEditingButtonComponent(): JSX.Element | null;
6
+
7
+ export { StartEditingButtonComponent as default, getEditButtonPosition };
@@ -5,33 +5,56 @@ import classNames from "classnames";
5
5
  import getVisualBuilderRedirectionUrl from "../utils/getVisualBuilderRedirectionUrl.js";
6
6
  import { EditIcon } from "./icons/index.js";
7
7
  import { visualBuilderStyles } from "../visualBuilder.style.js";
8
+ import Config from "../../configManager/configManager.js";
8
9
  import { jsx, jsxs } from "preact/jsx-runtime";
10
+ var positionStyles = {
11
+ "bottom-right": visualBuilderStyles()["visual-builder__start-editing-btn__bottom-right"],
12
+ "bottom-left": visualBuilderStyles()["visual-builder__start-editing-btn__bottom-left"],
13
+ "top-left": visualBuilderStyles()["visual-builder__start-editing-btn__top-left"],
14
+ "top-right": visualBuilderStyles()["visual-builder__start-editing-btn__top-right"]
15
+ };
16
+ function getEditButtonPosition(position) {
17
+ const validPositions = ["bottom-left", "bottom-right", "top-left", "top-right"];
18
+ if (validPositions.includes(position)) {
19
+ return position;
20
+ } else {
21
+ return "bottom-right";
22
+ }
23
+ }
9
24
  function StartEditingButtonComponent() {
10
- return /* @__PURE__ */ jsxs(
25
+ const config = Config.get();
26
+ const enable = config.editInVisualBuilderButton.enable;
27
+ const position = config.editInVisualBuilderButton.position || "bottom-right";
28
+ function updateTargetUrl(e) {
29
+ const targetElement = e.target;
30
+ targetElement.setAttribute(
31
+ "href",
32
+ getVisualBuilderRedirectionUrl().toString()
33
+ );
34
+ }
35
+ return enable ? /* @__PURE__ */ jsxs(
11
36
  "a",
12
37
  {
13
38
  href: getVisualBuilderRedirectionUrl().toString(),
14
39
  className: classNames(
15
40
  "visual-builder__start-editing-btn",
16
- visualBuilderStyles()["visual-builder__start-editing-btn"]
41
+ visualBuilderStyles()["visual-builder__start-editing-btn"],
42
+ positionStyles[getEditButtonPosition(position)]
17
43
  ),
18
44
  "data-testid": "vcms-start-editing-btn",
19
- onClick: (e) => {
20
- const targetElement = e.target;
21
- targetElement.setAttribute(
22
- "href",
23
- getVisualBuilderRedirectionUrl().toString()
24
- );
25
- },
45
+ onMouseEnter: (e) => updateTargetUrl(e),
46
+ onFocus: (e) => updateTargetUrl(e),
47
+ onClick: (e) => updateTargetUrl(e),
26
48
  children: [
27
49
  /* @__PURE__ */ jsx(EditIcon, {}),
28
50
  /* @__PURE__ */ jsx("span", { children: "Start Editing" })
29
51
  ]
30
52
  }
31
- );
53
+ ) : null;
32
54
  }
33
55
  var startEditingButton_default = StartEditingButtonComponent;
34
56
  export {
35
- startEditingButton_default as default
57
+ startEditingButton_default as default,
58
+ getEditButtonPosition
36
59
  };
37
60
  //# sourceMappingURL=startEditingButton.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/visualBuilder/components/startEditingButton.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport getVisualBuilderRedirectionUrl from \"../utils/getVisualBuilderRedirectionUrl\";\nimport { EditIcon } from \"./icons\";\nimport { visualBuilderStyles } from \"../visualBuilder.style\";\nimport React from \"preact/compat\";\n\nfunction StartEditingButtonComponent(): JSX.Element {\n return (\n <a\n href={getVisualBuilderRedirectionUrl().toString()}\n className={classNames(\n \"visual-builder__start-editing-btn\",\n visualBuilderStyles()[\"visual-builder__start-editing-btn\"]\n )}\n data-testid=\"vcms-start-editing-btn\"\n onClick={(e) => {\n const targetElement = e.target as HTMLAnchorElement;\n targetElement.setAttribute(\n \"href\",\n getVisualBuilderRedirectionUrl().toString()\n );\n }}\n >\n <EditIcon />\n <span>Start Editing</span>\n </a>\n );\n}\n\nexport default StartEditingButtonComponent;\n"],"mappings":";;;AAAA,OAAO,gBAAgB;AACvB,OAAO,oCAAoC;AAC3C,SAAS,gBAAgB;AACzB,SAAS,2BAA2B;AAK5B,SAeI,KAfJ;AAFR,SAAS,8BAA2C;AAChD,SACI;AAAA,IAAC;AAAA;AAAA,MACG,MAAM,+BAA+B,EAAE,SAAS;AAAA,MAChD,WAAW;AAAA,QACP;AAAA,QACA,oBAAoB,EAAE,mCAAmC;AAAA,MAC7D;AAAA,MACA,eAAY;AAAA,MACZ,SAAS,CAAC,MAAM;AACZ,cAAM,gBAAgB,EAAE;AACxB,sBAAc;AAAA,UACV;AAAA,UACA,+BAA+B,EAAE,SAAS;AAAA,QAC9C;AAAA,MACJ;AAAA,MAEA;AAAA,4BAAC,YAAS;AAAA,QACV,oBAAC,UAAK,2BAAa;AAAA;AAAA;AAAA,EACvB;AAER;AAEA,IAAO,6BAAQ;","names":[]}
1
+ {"version":3,"sources":["../../../../src/visualBuilder/components/startEditingButton.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport getVisualBuilderRedirectionUrl from \"../utils/getVisualBuilderRedirectionUrl\";\nimport { EditIcon } from \"./icons\";\nimport { visualBuilderStyles } from \"../visualBuilder.style\";\nimport React from \"preact/compat\";\nimport Config from \"../../configManager/configManager\";\nimport { IConfigEditInVisualBuilderButton } from \"../../types/types\";\n\n\ntype Position = NonNullable<IConfigEditInVisualBuilderButton['position']>;\n\nconst positionStyles: Record<Position, string> = {\n \"bottom-right\": visualBuilderStyles()['visual-builder__start-editing-btn__bottom-right'],\n \"bottom-left\": visualBuilderStyles()['visual-builder__start-editing-btn__bottom-left'],\n \"top-left\": visualBuilderStyles()['visual-builder__start-editing-btn__top-left'],\n \"top-right\": visualBuilderStyles()['visual-builder__start-editing-btn__top-right'],\n}\n\nexport function getEditButtonPosition(position: any): Position {\n const validPositions: Position[] = ['bottom-left', 'bottom-right', 'top-left', 'top-right']\n if(validPositions.includes(position)){\n return position\n } else {\n return \"bottom-right\"\n }\n}\n\nfunction StartEditingButtonComponent(): JSX.Element | null {\n const config = Config.get()\n const enable = config.editInVisualBuilderButton.enable;\n const position = config.editInVisualBuilderButton.position || \"bottom-right\";\n \n function updateTargetUrl(e: any){\n const targetElement = e.target as HTMLAnchorElement;\n targetElement.setAttribute(\n \"href\",\n getVisualBuilderRedirectionUrl().toString()\n );\n }\n\n return enable ? (\n <a\n href={getVisualBuilderRedirectionUrl().toString()}\n className={classNames(\n \"visual-builder__start-editing-btn\",\n visualBuilderStyles()[\"visual-builder__start-editing-btn\"],\n positionStyles[getEditButtonPosition(position)]\n )}\n data-testid=\"vcms-start-editing-btn\"\n onMouseEnter={(e) => updateTargetUrl(e)}\n onFocus={(e) => updateTargetUrl(e)}\n onClick={(e) => updateTargetUrl(e)}\n >\n <EditIcon />\n <span>Start Editing</span>\n </a>\n ) : null;\n}\n\nexport default StartEditingButtonComponent;\n"],"mappings":";;;AAAA,OAAO,gBAAgB;AACvB,OAAO,oCAAoC;AAC3C,SAAS,gBAAgB;AACzB,SAAS,2BAA2B;AAEpC,OAAO,YAAY;AAoCX,SAYI,KAZJ;AA9BR,IAAM,iBAA2C;AAAA,EAC7C,gBAAgB,oBAAoB,EAAE,iDAAiD;AAAA,EACvF,eAAe,oBAAoB,EAAE,gDAAgD;AAAA,EACrF,YAAY,oBAAoB,EAAE,6CAA6C;AAAA,EAC/E,aAAa,oBAAoB,EAAE,8CAA8C;AACrF;AAEO,SAAS,sBAAsB,UAAyB;AAC3D,QAAM,iBAA6B,CAAC,eAAe,gBAAgB,YAAY,WAAW;AAC1F,MAAG,eAAe,SAAS,QAAQ,GAAE;AACjC,WAAO;AAAA,EACX,OAAO;AACH,WAAO;AAAA,EACX;AACJ;AAEA,SAAS,8BAAkD;AACvD,QAAM,SAAS,OAAO,IAAI;AAC1B,QAAM,SAAS,OAAO,0BAA0B;AAChD,QAAM,WAAW,OAAO,0BAA0B,YAAY;AAE9D,WAAS,gBAAgB,GAAO;AAC5B,UAAM,gBAAgB,EAAE;AACxB,kBAAc;AAAA,MACV;AAAA,MACA,+BAA+B,EAAE,SAAS;AAAA,IAC9C;AAAA,EACJ;AAEA,SAAO,SACH;AAAA,IAAC;AAAA;AAAA,MACG,MAAM,+BAA+B,EAAE,SAAS;AAAA,MAChD,WAAW;AAAA,QACP;AAAA,QACA,oBAAoB,EAAE,mCAAmC;AAAA,QACzD,eAAe,sBAAsB,QAAQ,CAAC;AAAA,MAClD;AAAA,MACA,eAAY;AAAA,MACZ,cAAc,CAAC,MAAM,gBAAgB,CAAC;AAAA,MACtC,SAAS,CAAC,MAAM,gBAAgB,CAAC;AAAA,MACjC,SAAS,CAAC,MAAM,gBAAgB,CAAC;AAAA,MAEjC;AAAA,4BAAC,YAAS;AAAA,QACV,oBAAC,UAAK,2BAAa;AAAA;AAAA;AAAA,EACvB,IACA;AACR;AAEA,IAAO,6BAAQ;","names":[]}
@@ -58,8 +58,10 @@ function updateVariantClasses({
58
58
  const observers = [];
59
59
  const updateElementClasses = (element, dataCslp, observer) => {
60
60
  if (!dataCslp) return;
61
- if (dataCslp.startsWith("v2:") && element.classList.contains("visual-builder__base-field")) {
62
- element.classList.remove("visual-builder__base-field");
61
+ if (dataCslp.startsWith("v2:") && !element.classList.contains("visual-builder__variant-field")) {
62
+ if (element.classList.contains("visual-builder__base-field")) {
63
+ element.classList.remove("visual-builder__base-field");
64
+ }
63
65
  if (highlightVariantFields) {
64
66
  element.classList.add(
65
67
  (0, import_visualBuilder.visualBuilderStyles)()["visual-builder__variant-field"],
@@ -81,12 +83,53 @@ function updateVariantClasses({
81
83
  );
82
84
  element.classList.add("visual-builder__disabled-variant-field");
83
85
  }
86
+ if (!observer) return;
84
87
  observer.disconnect();
85
88
  const index = observers.indexOf(observer);
86
89
  if (index > -1) {
87
90
  observers.splice(index, 1);
88
91
  }
89
92
  };
93
+ const addElementClasses = (element) => {
94
+ const dataCslp = element.getAttribute(import_constants.DATA_CSLP_ATTR_SELECTOR);
95
+ if (!dataCslp) {
96
+ element.childNodes.forEach((child) => {
97
+ if (child instanceof HTMLElement) {
98
+ addElementClasses(child);
99
+ }
100
+ });
101
+ return;
102
+ }
103
+ if (dataCslp.startsWith("v2:") && element.classList.contains("visual-builder__variant-field")) {
104
+ return;
105
+ }
106
+ if (dataCslp.startsWith("v2:") && !element.classList.contains("visual-builder__variant-field")) {
107
+ if (element.classList.contains("visual-builder__base-field")) {
108
+ element.classList.remove("visual-builder__base-field");
109
+ }
110
+ if (highlightVariantFields) {
111
+ element.classList.add(
112
+ (0, import_visualBuilder.visualBuilderStyles)()["visual-builder__variant-field"],
113
+ "visual-builder__variant-field"
114
+ );
115
+ } else {
116
+ element.classList.add("visual-builder__variant-field");
117
+ }
118
+ } else if (!dataCslp.startsWith("v2:")) {
119
+ if (element.classList.contains("visual-builder__variant-field")) {
120
+ element.classList.remove(
121
+ (0, import_visualBuilder.visualBuilderStyles)()["visual-builder__variant-field"],
122
+ "visual-builder__variant-field"
123
+ );
124
+ }
125
+ element.classList.add("visual-builder__base-field");
126
+ }
127
+ element.childNodes.forEach((child) => {
128
+ if (child instanceof HTMLElement) {
129
+ addElementClasses(child);
130
+ }
131
+ });
132
+ };
90
133
  const elementsWithCslp = document.querySelectorAll(
91
134
  `[${import_constants.DATA_CSLP_ATTR_SELECTOR}]`
92
135
  );
@@ -94,7 +137,14 @@ function updateVariantClasses({
94
137
  const element = elementNode;
95
138
  const observer = new MutationObserver((mutations) => {
96
139
  mutations.forEach((mutation) => {
97
- if (mutation.type === "attributes" && mutation.attributeName === import_constants.DATA_CSLP_ATTR_SELECTOR) {
140
+ if (mutation.type === "attributes" && mutation.attributeName === import_constants.DATA_CSLP_ATTR_SELECTOR || mutation.type === "childList") {
141
+ if (mutation.addedNodes.length > 0) {
142
+ mutation.addedNodes.forEach((node) => {
143
+ if (node instanceof HTMLElement) {
144
+ addElementClasses(node);
145
+ }
146
+ });
147
+ }
98
148
  const dataCslp = element.getAttribute(
99
149
  import_constants.DATA_CSLP_ATTR_SELECTOR
100
150
  );
@@ -103,7 +153,12 @@ function updateVariantClasses({
103
153
  });
104
154
  });
105
155
  observers.push(observer);
106
- observer.observe(element, { attributes: true });
156
+ observer.observe(element, {
157
+ attributes: true,
158
+ childList: true,
159
+ // Observe direct children
160
+ subtree: true
161
+ });
107
162
  });
108
163
  setTimeout(() => {
109
164
  if (observers.length > 0) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.ts"],"sourcesContent":["import { VisualBuilder } from \"..\";\nimport livePreviewPostMessage from \"../../livePreview/eventManager/livePreviewEventManager\";\nimport { LIVE_PREVIEW_POST_MESSAGE_EVENTS } from \"../../livePreview/eventManager/livePreviewEventManager.constant\";\nimport { DATA_CSLP_ATTR_SELECTOR } from \"../utils/constants\";\nimport { visualBuilderStyles } from \"../visualBuilder.style\";\n\nconst VARIANT_UPDATE_DELAY_MS: Readonly<number> = 8000;\n\ntype OnAudienceModeVariantPatchUpdate = {\n highlightVariantFields: boolean;\n expectedCSLPValues: Record<\"variant\" | \"base\", string>;\n};\n\n/**\n * Registers a post message event listener for updating the variant / base classes in the live preview for audience mode.\n */\nexport function useRecalculateVariantDataCSLPValues(): void {\n livePreviewPostMessage?.on<OnAudienceModeVariantPatchUpdate>(\n LIVE_PREVIEW_POST_MESSAGE_EVENTS.VARIANT_PATCH,\n (event) => {\n if (VisualBuilder.VisualBuilderGlobalState.value.audienceMode) {\n updateVariantClasses(event.data);\n }\n }\n );\n}\nfunction updateVariantClasses({\n highlightVariantFields,\n expectedCSLPValues,\n}: OnAudienceModeVariantPatchUpdate): void {\n const variant = VisualBuilder.VisualBuilderGlobalState.value.variant;\n const observers: MutationObserver[] = [];\n\n // Helper function to update element classes\n const updateElementClasses = (\n element: HTMLElement,\n dataCslp: string,\n observer: MutationObserver\n ) => {\n if (!dataCslp) return;\n\n if (\n dataCslp.startsWith(\"v2:\") &&\n element.classList.contains(\"visual-builder__base-field\")\n ) {\n element.classList.remove(\"visual-builder__base-field\");\n if (highlightVariantFields) {\n element.classList.add(\n visualBuilderStyles()[\"visual-builder__variant-field\"],\n \"visual-builder__variant-field\"\n );\n } else {\n element.classList.add(\"visual-builder__variant-field\");\n }\n } else if (\n !dataCslp.startsWith(\"v2:\") &&\n element.classList.contains(\"visual-builder__variant-field\")\n ) {\n element.classList.remove(\n visualBuilderStyles()[\"visual-builder__variant-field\"],\n \"visual-builder__variant-field\"\n );\n element.classList.add(\"visual-builder__base-field\");\n } else if (\n dataCslp.startsWith(\"v2:\") &&\n variant &&\n !dataCslp.includes(variant) &&\n element.classList.contains(\"visual-builder__variant-field\")\n ) {\n element.classList.remove(\n visualBuilderStyles()[\"visual-builder__variant-field\"],\n \"visual-builder__variant-field\"\n );\n element.classList.add(\"visual-builder__disabled-variant-field\");\n }\n\n // Disconnect this observer after processing\n observer.disconnect();\n const index = observers.indexOf(observer);\n if (index > -1) {\n observers.splice(index, 1);\n }\n };\n\n // Create a separate observer for each element\n const elementsWithCslp = document.querySelectorAll(\n `[${DATA_CSLP_ATTR_SELECTOR}]`\n );\n\n elementsWithCslp.forEach((elementNode) => {\n const element = elementNode as HTMLElement;\n\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (\n mutation.type === \"attributes\" &&\n mutation.attributeName === DATA_CSLP_ATTR_SELECTOR\n ) {\n const dataCslp = element.getAttribute(\n DATA_CSLP_ATTR_SELECTOR\n );\n updateElementClasses(element, dataCslp || \"\", observer);\n }\n });\n });\n\n observers.push(observer);\n observer.observe(element, { attributes: true });\n });\n\n setTimeout(() => {\n if (observers.length > 0) {\n observers.forEach((observer) => observer.disconnect());\n observers.length = 0;\n }\n }, VARIANT_UPDATE_DELAY_MS);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAA8B;AAC9B,qCAAmC;AACnC,IAAAA,kCAAiD;AACjD,uBAAwC;AACxC,2BAAoC;AAEpC,IAAM,0BAA4C;AAU3C,SAAS,sCAA4C;AAhB5D;AAiBI,uCAAAC,YAAA,mBAAwB;AAAA,IACpB,iEAAiC;AAAA,IACjC,CAAC,UAAU;AACP,UAAI,uBAAc,yBAAyB,MAAM,cAAc;AAC3D,6BAAqB,MAAM,IAAI;AAAA,MACnC;AAAA,IACJ;AAAA;AAER;AACA,SAAS,qBAAqB;AAAA,EAC1B;AAAA,EACA;AACJ,GAA2C;AACvC,QAAM,UAAU,uBAAc,yBAAyB,MAAM;AAC7D,QAAM,YAAgC,CAAC;AAGvC,QAAM,uBAAuB,CACzB,SACA,UACA,aACC;AACD,QAAI,CAAC,SAAU;AAEf,QACI,SAAS,WAAW,KAAK,KACzB,QAAQ,UAAU,SAAS,4BAA4B,GACzD;AACE,cAAQ,UAAU,OAAO,4BAA4B;AACrD,UAAI,wBAAwB;AACxB,gBAAQ,UAAU;AAAA,cACd,0CAAoB,EAAE,+BAA+B;AAAA,UACrD;AAAA,QACJ;AAAA,MACJ,OAAO;AACH,gBAAQ,UAAU,IAAI,+BAA+B;AAAA,MACzD;AAAA,IACJ,WACI,CAAC,SAAS,WAAW,KAAK,KAC1B,QAAQ,UAAU,SAAS,+BAA+B,GAC5D;AACE,cAAQ,UAAU;AAAA,YACd,0CAAoB,EAAE,+BAA+B;AAAA,QACrD;AAAA,MACJ;AACA,cAAQ,UAAU,IAAI,4BAA4B;AAAA,IACtD,WACI,SAAS,WAAW,KAAK,KACzB,WACA,CAAC,SAAS,SAAS,OAAO,KAC1B,QAAQ,UAAU,SAAS,+BAA+B,GAC5D;AACE,cAAQ,UAAU;AAAA,YACd,0CAAoB,EAAE,+BAA+B;AAAA,QACrD;AAAA,MACJ;AACA,cAAQ,UAAU,IAAI,wCAAwC;AAAA,IAClE;AAGA,aAAS,WAAW;AACpB,UAAM,QAAQ,UAAU,QAAQ,QAAQ;AACxC,QAAI,QAAQ,IAAI;AACZ,gBAAU,OAAO,OAAO,CAAC;AAAA,IAC7B;AAAA,EACJ;AAGA,QAAM,mBAAmB,SAAS;AAAA,IAC9B,IAAI,wCAAuB;AAAA,EAC/B;AAEA,mBAAiB,QAAQ,CAAC,gBAAgB;AACtC,UAAM,UAAU;AAEhB,UAAM,WAAW,IAAI,iBAAiB,CAAC,cAAc;AACjD,gBAAU,QAAQ,CAAC,aAAa;AAC5B,YACI,SAAS,SAAS,gBAClB,SAAS,kBAAkB,0CAC7B;AACE,gBAAM,WAAW,QAAQ;AAAA,YACrB;AAAA,UACJ;AACA,+BAAqB,SAAS,YAAY,IAAI,QAAQ;AAAA,QAC1D;AAAA,MACJ,CAAC;AAAA,IACL,CAAC;AAED,cAAU,KAAK,QAAQ;AACvB,aAAS,QAAQ,SAAS,EAAE,YAAY,KAAK,CAAC;AAAA,EAClD,CAAC;AAED,aAAW,MAAM;AACb,QAAI,UAAU,SAAS,GAAG;AACtB,gBAAU,QAAQ,CAAC,aAAa,SAAS,WAAW,CAAC;AACrD,gBAAU,SAAS;AAAA,IACvB;AAAA,EACJ,GAAG,uBAAuB;AAC9B;","names":["import_livePreviewEventManager","livePreviewPostMessage"]}
1
+ {"version":3,"sources":["../../../../src/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.ts"],"sourcesContent":["import { VisualBuilder } from \"..\";\nimport livePreviewPostMessage from \"../../livePreview/eventManager/livePreviewEventManager\";\nimport { LIVE_PREVIEW_POST_MESSAGE_EVENTS } from \"../../livePreview/eventManager/livePreviewEventManager.constant\";\nimport { DATA_CSLP_ATTR_SELECTOR } from \"../utils/constants\";\nimport { visualBuilderStyles } from \"../visualBuilder.style\";\n\nconst VARIANT_UPDATE_DELAY_MS: Readonly<number> = 8000;\n\ntype OnAudienceModeVariantPatchUpdate = {\n highlightVariantFields: boolean;\n expectedCSLPValues: Record<\"variant\" | \"base\", string>;\n};\n\n/**\n * Registers a post message event listener for updating the variant / base classes in the live preview for audience mode.\n */\nexport function useRecalculateVariantDataCSLPValues(): void {\n livePreviewPostMessage?.on<OnAudienceModeVariantPatchUpdate>(\n LIVE_PREVIEW_POST_MESSAGE_EVENTS.VARIANT_PATCH,\n (event) => {\n if (VisualBuilder.VisualBuilderGlobalState.value.audienceMode) {\n updateVariantClasses(event.data);\n }\n }\n );\n}\nfunction updateVariantClasses({\n highlightVariantFields,\n expectedCSLPValues,\n}: OnAudienceModeVariantPatchUpdate): void {\n const variant = VisualBuilder.VisualBuilderGlobalState.value.variant;\n const observers: MutationObserver[] = [];\n\n // Helper function to update element classes\n const updateElementClasses = (\n element: HTMLElement,\n dataCslp: string,\n observer?: MutationObserver\n ) => {\n if (!dataCslp) return;\n\n if (\n dataCslp.startsWith(\"v2:\") &&\n !element.classList.contains(\"visual-builder__variant-field\")\n ) {\n if (element.classList.contains(\"visual-builder__base-field\")) {\n element.classList.remove(\"visual-builder__base-field\");\n }\n if (highlightVariantFields) {\n element.classList.add(\n visualBuilderStyles()[\"visual-builder__variant-field\"],\n \"visual-builder__variant-field\"\n );\n } else {\n element.classList.add(\"visual-builder__variant-field\");\n }\n } else if (\n !dataCslp.startsWith(\"v2:\") &&\n element.classList.contains(\"visual-builder__variant-field\")\n ) {\n element.classList.remove(\n visualBuilderStyles()[\"visual-builder__variant-field\"],\n \"visual-builder__variant-field\"\n );\n element.classList.add(\"visual-builder__base-field\");\n } else if (\n dataCslp.startsWith(\"v2:\") &&\n variant &&\n !dataCslp.includes(variant) &&\n element.classList.contains(\"visual-builder__variant-field\")\n ) {\n element.classList.remove(\n visualBuilderStyles()[\"visual-builder__variant-field\"],\n \"visual-builder__variant-field\"\n );\n element.classList.add(\"visual-builder__disabled-variant-field\");\n }\n if (!observer) return;\n // Disconnect this observer after processing\n observer.disconnect();\n const index = observers.indexOf(observer);\n if (index > -1) {\n observers.splice(index, 1);\n }\n };\n\n const addElementClasses = (element: HTMLElement) => {\n const dataCslp = element.getAttribute(DATA_CSLP_ATTR_SELECTOR);\n\n if (!dataCslp) {\n //recursive call for child nodes\n element.childNodes.forEach((child) => {\n if (child instanceof HTMLElement) {\n addElementClasses(child);\n }\n });\n return;\n }\n //if element might have been updated by another observer\n if (\n dataCslp.startsWith(\"v2:\") &&\n element.classList.contains(\"visual-builder__variant-field\")\n ) {\n return;\n }\n // if element has not given variant/base class\n if (\n dataCslp.startsWith(\"v2:\") &&\n !element.classList.contains(\"visual-builder__variant-field\")\n ) {\n if (element.classList.contains(\"visual-builder__base-field\")) {\n element.classList.remove(\"visual-builder__base-field\");\n }\n if (highlightVariantFields) {\n element.classList.add(\n visualBuilderStyles()[\"visual-builder__variant-field\"],\n \"visual-builder__variant-field\"\n );\n } else {\n element.classList.add(\"visual-builder__variant-field\");\n }\n } else if (!dataCslp.startsWith(\"v2:\")) {\n if (element.classList.contains(\"visual-builder__variant-field\")) {\n element.classList.remove(\n visualBuilderStyles()[\"visual-builder__variant-field\"],\n \"visual-builder__variant-field\"\n );\n }\n element.classList.add(\"visual-builder__base-field\");\n }\n\n //recursive call for child nodes\n element.childNodes.forEach((child) => {\n if (child instanceof HTMLElement) {\n addElementClasses(child);\n }\n });\n };\n\n // Create a separate observer for each element\n const elementsWithCslp = document.querySelectorAll(\n `[${DATA_CSLP_ATTR_SELECTOR}]`\n );\n elementsWithCslp.forEach((elementNode) => {\n const element = elementNode as HTMLElement;\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (\n (mutation.type === \"attributes\" &&\n mutation.attributeName === DATA_CSLP_ATTR_SELECTOR) ||\n mutation.type === \"childList\"\n ) {\n if (mutation.addedNodes.length > 0) {\n mutation.addedNodes.forEach((node) => {\n if (node instanceof HTMLElement) {\n addElementClasses(node);\n }\n });\n }\n const dataCslp = element.getAttribute(\n DATA_CSLP_ATTR_SELECTOR\n );\n updateElementClasses(element, dataCslp || \"\", observer);\n }\n });\n });\n\n observers.push(observer);\n observer.observe(element, {\n attributes: true,\n childList: true, // Observe direct children\n subtree: true,\n });\n });\n\n setTimeout(() => {\n if (observers.length > 0) {\n observers.forEach((observer) => observer.disconnect());\n observers.length = 0;\n }\n }, VARIANT_UPDATE_DELAY_MS);\n}\n"],"mappings":"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","names":["import_livePreviewEventManager","livePreviewPostMessage"]}
@@ -26,8 +26,10 @@ function updateVariantClasses({
26
26
  const observers = [];
27
27
  const updateElementClasses = (element, dataCslp, observer) => {
28
28
  if (!dataCslp) return;
29
- if (dataCslp.startsWith("v2:") && element.classList.contains("visual-builder__base-field")) {
30
- element.classList.remove("visual-builder__base-field");
29
+ if (dataCslp.startsWith("v2:") && !element.classList.contains("visual-builder__variant-field")) {
30
+ if (element.classList.contains("visual-builder__base-field")) {
31
+ element.classList.remove("visual-builder__base-field");
32
+ }
31
33
  if (highlightVariantFields) {
32
34
  element.classList.add(
33
35
  visualBuilderStyles()["visual-builder__variant-field"],
@@ -49,12 +51,53 @@ function updateVariantClasses({
49
51
  );
50
52
  element.classList.add("visual-builder__disabled-variant-field");
51
53
  }
54
+ if (!observer) return;
52
55
  observer.disconnect();
53
56
  const index = observers.indexOf(observer);
54
57
  if (index > -1) {
55
58
  observers.splice(index, 1);
56
59
  }
57
60
  };
61
+ const addElementClasses = (element) => {
62
+ const dataCslp = element.getAttribute(DATA_CSLP_ATTR_SELECTOR);
63
+ if (!dataCslp) {
64
+ element.childNodes.forEach((child) => {
65
+ if (child instanceof HTMLElement) {
66
+ addElementClasses(child);
67
+ }
68
+ });
69
+ return;
70
+ }
71
+ if (dataCslp.startsWith("v2:") && element.classList.contains("visual-builder__variant-field")) {
72
+ return;
73
+ }
74
+ if (dataCslp.startsWith("v2:") && !element.classList.contains("visual-builder__variant-field")) {
75
+ if (element.classList.contains("visual-builder__base-field")) {
76
+ element.classList.remove("visual-builder__base-field");
77
+ }
78
+ if (highlightVariantFields) {
79
+ element.classList.add(
80
+ visualBuilderStyles()["visual-builder__variant-field"],
81
+ "visual-builder__variant-field"
82
+ );
83
+ } else {
84
+ element.classList.add("visual-builder__variant-field");
85
+ }
86
+ } else if (!dataCslp.startsWith("v2:")) {
87
+ if (element.classList.contains("visual-builder__variant-field")) {
88
+ element.classList.remove(
89
+ visualBuilderStyles()["visual-builder__variant-field"],
90
+ "visual-builder__variant-field"
91
+ );
92
+ }
93
+ element.classList.add("visual-builder__base-field");
94
+ }
95
+ element.childNodes.forEach((child) => {
96
+ if (child instanceof HTMLElement) {
97
+ addElementClasses(child);
98
+ }
99
+ });
100
+ };
58
101
  const elementsWithCslp = document.querySelectorAll(
59
102
  `[${DATA_CSLP_ATTR_SELECTOR}]`
60
103
  );
@@ -62,7 +105,14 @@ function updateVariantClasses({
62
105
  const element = elementNode;
63
106
  const observer = new MutationObserver((mutations) => {
64
107
  mutations.forEach((mutation) => {
65
- if (mutation.type === "attributes" && mutation.attributeName === DATA_CSLP_ATTR_SELECTOR) {
108
+ if (mutation.type === "attributes" && mutation.attributeName === DATA_CSLP_ATTR_SELECTOR || mutation.type === "childList") {
109
+ if (mutation.addedNodes.length > 0) {
110
+ mutation.addedNodes.forEach((node) => {
111
+ if (node instanceof HTMLElement) {
112
+ addElementClasses(node);
113
+ }
114
+ });
115
+ }
66
116
  const dataCslp = element.getAttribute(
67
117
  DATA_CSLP_ATTR_SELECTOR
68
118
  );
@@ -71,7 +121,12 @@ function updateVariantClasses({
71
121
  });
72
122
  });
73
123
  observers.push(observer);
74
- observer.observe(element, { attributes: true });
124
+ observer.observe(element, {
125
+ attributes: true,
126
+ childList: true,
127
+ // Observe direct children
128
+ subtree: true
129
+ });
75
130
  });
76
131
  setTimeout(() => {
77
132
  if (observers.length > 0) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.ts"],"sourcesContent":["import { VisualBuilder } from \"..\";\nimport livePreviewPostMessage from \"../../livePreview/eventManager/livePreviewEventManager\";\nimport { LIVE_PREVIEW_POST_MESSAGE_EVENTS } from \"../../livePreview/eventManager/livePreviewEventManager.constant\";\nimport { DATA_CSLP_ATTR_SELECTOR } from \"../utils/constants\";\nimport { visualBuilderStyles } from \"../visualBuilder.style\";\n\nconst VARIANT_UPDATE_DELAY_MS: Readonly<number> = 8000;\n\ntype OnAudienceModeVariantPatchUpdate = {\n highlightVariantFields: boolean;\n expectedCSLPValues: Record<\"variant\" | \"base\", string>;\n};\n\n/**\n * Registers a post message event listener for updating the variant / base classes in the live preview for audience mode.\n */\nexport function useRecalculateVariantDataCSLPValues(): void {\n livePreviewPostMessage?.on<OnAudienceModeVariantPatchUpdate>(\n LIVE_PREVIEW_POST_MESSAGE_EVENTS.VARIANT_PATCH,\n (event) => {\n if (VisualBuilder.VisualBuilderGlobalState.value.audienceMode) {\n updateVariantClasses(event.data);\n }\n }\n );\n}\nfunction updateVariantClasses({\n highlightVariantFields,\n expectedCSLPValues,\n}: OnAudienceModeVariantPatchUpdate): void {\n const variant = VisualBuilder.VisualBuilderGlobalState.value.variant;\n const observers: MutationObserver[] = [];\n\n // Helper function to update element classes\n const updateElementClasses = (\n element: HTMLElement,\n dataCslp: string,\n observer: MutationObserver\n ) => {\n if (!dataCslp) return;\n\n if (\n dataCslp.startsWith(\"v2:\") &&\n element.classList.contains(\"visual-builder__base-field\")\n ) {\n element.classList.remove(\"visual-builder__base-field\");\n if (highlightVariantFields) {\n element.classList.add(\n visualBuilderStyles()[\"visual-builder__variant-field\"],\n \"visual-builder__variant-field\"\n );\n } else {\n element.classList.add(\"visual-builder__variant-field\");\n }\n } else if (\n !dataCslp.startsWith(\"v2:\") &&\n element.classList.contains(\"visual-builder__variant-field\")\n ) {\n element.classList.remove(\n visualBuilderStyles()[\"visual-builder__variant-field\"],\n \"visual-builder__variant-field\"\n );\n element.classList.add(\"visual-builder__base-field\");\n } else if (\n dataCslp.startsWith(\"v2:\") &&\n variant &&\n !dataCslp.includes(variant) &&\n element.classList.contains(\"visual-builder__variant-field\")\n ) {\n element.classList.remove(\n visualBuilderStyles()[\"visual-builder__variant-field\"],\n \"visual-builder__variant-field\"\n );\n element.classList.add(\"visual-builder__disabled-variant-field\");\n }\n\n // Disconnect this observer after processing\n observer.disconnect();\n const index = observers.indexOf(observer);\n if (index > -1) {\n observers.splice(index, 1);\n }\n };\n\n // Create a separate observer for each element\n const elementsWithCslp = document.querySelectorAll(\n `[${DATA_CSLP_ATTR_SELECTOR}]`\n );\n\n elementsWithCslp.forEach((elementNode) => {\n const element = elementNode as HTMLElement;\n\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (\n mutation.type === \"attributes\" &&\n mutation.attributeName === DATA_CSLP_ATTR_SELECTOR\n ) {\n const dataCslp = element.getAttribute(\n DATA_CSLP_ATTR_SELECTOR\n );\n updateElementClasses(element, dataCslp || \"\", observer);\n }\n });\n });\n\n observers.push(observer);\n observer.observe(element, { attributes: true });\n });\n\n setTimeout(() => {\n if (observers.length > 0) {\n observers.forEach((observer) => observer.disconnect());\n observers.length = 0;\n }\n }, VARIANT_UPDATE_DELAY_MS);\n}\n"],"mappings":";;;AAAA,SAAS,qBAAqB;AAC9B,OAAO,4BAA4B;AACnC,SAAS,wCAAwC;AACjD,SAAS,+BAA+B;AACxC,SAAS,2BAA2B;AAEpC,IAAM,0BAA4C;AAU3C,SAAS,sCAA4C;AAhB5D;AAiBI,sDAAwB;AAAA,IACpB,iCAAiC;AAAA,IACjC,CAAC,UAAU;AACP,UAAI,cAAc,yBAAyB,MAAM,cAAc;AAC3D,6BAAqB,MAAM,IAAI;AAAA,MACnC;AAAA,IACJ;AAAA;AAER;AACA,SAAS,qBAAqB;AAAA,EAC1B;AAAA,EACA;AACJ,GAA2C;AACvC,QAAM,UAAU,cAAc,yBAAyB,MAAM;AAC7D,QAAM,YAAgC,CAAC;AAGvC,QAAM,uBAAuB,CACzB,SACA,UACA,aACC;AACD,QAAI,CAAC,SAAU;AAEf,QACI,SAAS,WAAW,KAAK,KACzB,QAAQ,UAAU,SAAS,4BAA4B,GACzD;AACE,cAAQ,UAAU,OAAO,4BAA4B;AACrD,UAAI,wBAAwB;AACxB,gBAAQ,UAAU;AAAA,UACd,oBAAoB,EAAE,+BAA+B;AAAA,UACrD;AAAA,QACJ;AAAA,MACJ,OAAO;AACH,gBAAQ,UAAU,IAAI,+BAA+B;AAAA,MACzD;AAAA,IACJ,WACI,CAAC,SAAS,WAAW,KAAK,KAC1B,QAAQ,UAAU,SAAS,+BAA+B,GAC5D;AACE,cAAQ,UAAU;AAAA,QACd,oBAAoB,EAAE,+BAA+B;AAAA,QACrD;AAAA,MACJ;AACA,cAAQ,UAAU,IAAI,4BAA4B;AAAA,IACtD,WACI,SAAS,WAAW,KAAK,KACzB,WACA,CAAC,SAAS,SAAS,OAAO,KAC1B,QAAQ,UAAU,SAAS,+BAA+B,GAC5D;AACE,cAAQ,UAAU;AAAA,QACd,oBAAoB,EAAE,+BAA+B;AAAA,QACrD;AAAA,MACJ;AACA,cAAQ,UAAU,IAAI,wCAAwC;AAAA,IAClE;AAGA,aAAS,WAAW;AACpB,UAAM,QAAQ,UAAU,QAAQ,QAAQ;AACxC,QAAI,QAAQ,IAAI;AACZ,gBAAU,OAAO,OAAO,CAAC;AAAA,IAC7B;AAAA,EACJ;AAGA,QAAM,mBAAmB,SAAS;AAAA,IAC9B,IAAI,uBAAuB;AAAA,EAC/B;AAEA,mBAAiB,QAAQ,CAAC,gBAAgB;AACtC,UAAM,UAAU;AAEhB,UAAM,WAAW,IAAI,iBAAiB,CAAC,cAAc;AACjD,gBAAU,QAAQ,CAAC,aAAa;AAC5B,YACI,SAAS,SAAS,gBAClB,SAAS,kBAAkB,yBAC7B;AACE,gBAAM,WAAW,QAAQ;AAAA,YACrB;AAAA,UACJ;AACA,+BAAqB,SAAS,YAAY,IAAI,QAAQ;AAAA,QAC1D;AAAA,MACJ,CAAC;AAAA,IACL,CAAC;AAED,cAAU,KAAK,QAAQ;AACvB,aAAS,QAAQ,SAAS,EAAE,YAAY,KAAK,CAAC;AAAA,EAClD,CAAC;AAED,aAAW,MAAM;AACb,QAAI,UAAU,SAAS,GAAG;AACtB,gBAAU,QAAQ,CAAC,aAAa,SAAS,WAAW,CAAC;AACrD,gBAAU,SAAS;AAAA,IACvB;AAAA,EACJ,GAAG,uBAAuB;AAC9B;","names":[]}
1
+ {"version":3,"sources":["../../../../src/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.ts"],"sourcesContent":["import { VisualBuilder } from \"..\";\nimport livePreviewPostMessage from \"../../livePreview/eventManager/livePreviewEventManager\";\nimport { LIVE_PREVIEW_POST_MESSAGE_EVENTS } from \"../../livePreview/eventManager/livePreviewEventManager.constant\";\nimport { DATA_CSLP_ATTR_SELECTOR } from \"../utils/constants\";\nimport { visualBuilderStyles } from \"../visualBuilder.style\";\n\nconst VARIANT_UPDATE_DELAY_MS: Readonly<number> = 8000;\n\ntype OnAudienceModeVariantPatchUpdate = {\n highlightVariantFields: boolean;\n expectedCSLPValues: Record<\"variant\" | \"base\", string>;\n};\n\n/**\n * Registers a post message event listener for updating the variant / base classes in the live preview for audience mode.\n */\nexport function useRecalculateVariantDataCSLPValues(): void {\n livePreviewPostMessage?.on<OnAudienceModeVariantPatchUpdate>(\n LIVE_PREVIEW_POST_MESSAGE_EVENTS.VARIANT_PATCH,\n (event) => {\n if (VisualBuilder.VisualBuilderGlobalState.value.audienceMode) {\n updateVariantClasses(event.data);\n }\n }\n );\n}\nfunction updateVariantClasses({\n highlightVariantFields,\n expectedCSLPValues,\n}: OnAudienceModeVariantPatchUpdate): void {\n const variant = VisualBuilder.VisualBuilderGlobalState.value.variant;\n const observers: MutationObserver[] = [];\n\n // Helper function to update element classes\n const updateElementClasses = (\n element: HTMLElement,\n dataCslp: string,\n observer?: MutationObserver\n ) => {\n if (!dataCslp) return;\n\n if (\n dataCslp.startsWith(\"v2:\") &&\n !element.classList.contains(\"visual-builder__variant-field\")\n ) {\n if (element.classList.contains(\"visual-builder__base-field\")) {\n element.classList.remove(\"visual-builder__base-field\");\n }\n if (highlightVariantFields) {\n element.classList.add(\n visualBuilderStyles()[\"visual-builder__variant-field\"],\n \"visual-builder__variant-field\"\n );\n } else {\n element.classList.add(\"visual-builder__variant-field\");\n }\n } else if (\n !dataCslp.startsWith(\"v2:\") &&\n element.classList.contains(\"visual-builder__variant-field\")\n ) {\n element.classList.remove(\n visualBuilderStyles()[\"visual-builder__variant-field\"],\n \"visual-builder__variant-field\"\n );\n element.classList.add(\"visual-builder__base-field\");\n } else if (\n dataCslp.startsWith(\"v2:\") &&\n variant &&\n !dataCslp.includes(variant) &&\n element.classList.contains(\"visual-builder__variant-field\")\n ) {\n element.classList.remove(\n visualBuilderStyles()[\"visual-builder__variant-field\"],\n \"visual-builder__variant-field\"\n );\n element.classList.add(\"visual-builder__disabled-variant-field\");\n }\n if (!observer) return;\n // Disconnect this observer after processing\n observer.disconnect();\n const index = observers.indexOf(observer);\n if (index > -1) {\n observers.splice(index, 1);\n }\n };\n\n const addElementClasses = (element: HTMLElement) => {\n const dataCslp = element.getAttribute(DATA_CSLP_ATTR_SELECTOR);\n\n if (!dataCslp) {\n //recursive call for child nodes\n element.childNodes.forEach((child) => {\n if (child instanceof HTMLElement) {\n addElementClasses(child);\n }\n });\n return;\n }\n //if element might have been updated by another observer\n if (\n dataCslp.startsWith(\"v2:\") &&\n element.classList.contains(\"visual-builder__variant-field\")\n ) {\n return;\n }\n // if element has not given variant/base class\n if (\n dataCslp.startsWith(\"v2:\") &&\n !element.classList.contains(\"visual-builder__variant-field\")\n ) {\n if (element.classList.contains(\"visual-builder__base-field\")) {\n element.classList.remove(\"visual-builder__base-field\");\n }\n if (highlightVariantFields) {\n element.classList.add(\n visualBuilderStyles()[\"visual-builder__variant-field\"],\n \"visual-builder__variant-field\"\n );\n } else {\n element.classList.add(\"visual-builder__variant-field\");\n }\n } else if (!dataCslp.startsWith(\"v2:\")) {\n if (element.classList.contains(\"visual-builder__variant-field\")) {\n element.classList.remove(\n visualBuilderStyles()[\"visual-builder__variant-field\"],\n \"visual-builder__variant-field\"\n );\n }\n element.classList.add(\"visual-builder__base-field\");\n }\n\n //recursive call for child nodes\n element.childNodes.forEach((child) => {\n if (child instanceof HTMLElement) {\n addElementClasses(child);\n }\n });\n };\n\n // Create a separate observer for each element\n const elementsWithCslp = document.querySelectorAll(\n `[${DATA_CSLP_ATTR_SELECTOR}]`\n );\n elementsWithCslp.forEach((elementNode) => {\n const element = elementNode as HTMLElement;\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (\n (mutation.type === \"attributes\" &&\n mutation.attributeName === DATA_CSLP_ATTR_SELECTOR) ||\n mutation.type === \"childList\"\n ) {\n if (mutation.addedNodes.length > 0) {\n mutation.addedNodes.forEach((node) => {\n if (node instanceof HTMLElement) {\n addElementClasses(node);\n }\n });\n }\n const dataCslp = element.getAttribute(\n DATA_CSLP_ATTR_SELECTOR\n );\n updateElementClasses(element, dataCslp || \"\", observer);\n }\n });\n });\n\n observers.push(observer);\n observer.observe(element, {\n attributes: true,\n childList: true, // Observe direct children\n subtree: true,\n });\n });\n\n setTimeout(() => {\n if (observers.length > 0) {\n observers.forEach((observer) => observer.disconnect());\n observers.length = 0;\n }\n }, VARIANT_UPDATE_DELAY_MS);\n}\n"],"mappings":"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","names":[]}
@@ -38,8 +38,11 @@ var import_preact = require("preact");
38
38
  var import_addInstanceButton = __toESM(require("../components/addInstanceButton.cjs"), 1);
39
39
  var import_jsx_runtime = require("preact/jsx-runtime");
40
40
  function generateAddInstanceButton({
41
- fieldSchema,
42
41
  value,
42
+ fieldSchema,
43
+ fieldMetadata,
44
+ index,
45
+ loading,
43
46
  onClick,
44
47
  label
45
48
  }) {
@@ -48,10 +51,13 @@ function generateAddInstanceButton({
48
51
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
49
52
  import_addInstanceButton.default,
50
53
  {
54
+ loading,
55
+ index,
51
56
  value,
52
57
  label,
53
58
  onClick,
54
- fieldSchema
59
+ fieldSchema,
60
+ fieldMetadata
55
61
  }
56
62
  ),
57
63
  wrapper