@contentstack/live-preview-utils 3.0.1 → 3.1.0

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 (207) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +1 -1
  3. package/dist/legacy/cslp/cslpdata.cjs.map +1 -1
  4. package/dist/legacy/cslp/cslpdata.js.map +1 -1
  5. package/dist/legacy/livePreview/editButton/editButton.cjs +5 -2
  6. package/dist/legacy/livePreview/editButton/editButton.cjs.map +1 -1
  7. package/dist/legacy/livePreview/editButton/editButton.js +5 -2
  8. package/dist/legacy/livePreview/editButton/editButton.js.map +1 -1
  9. package/dist/legacy/livePreview/eventManager/postMessageEvent.hooks.cjs +1 -1
  10. package/dist/legacy/livePreview/eventManager/postMessageEvent.hooks.js +1 -1
  11. package/dist/legacy/preview/contentstack-live-preview-HOC.cjs +23 -4
  12. package/dist/legacy/preview/contentstack-live-preview-HOC.cjs.map +1 -1
  13. package/dist/legacy/preview/contentstack-live-preview-HOC.d.cts +2 -1
  14. package/dist/legacy/preview/contentstack-live-preview-HOC.d.ts +2 -1
  15. package/dist/legacy/preview/contentstack-live-preview-HOC.js +23 -4
  16. package/dist/legacy/preview/contentstack-live-preview-HOC.js.map +1 -1
  17. package/dist/legacy/timeline/compare/compare.cjs +2 -1
  18. package/dist/legacy/timeline/compare/compare.cjs.map +1 -1
  19. package/dist/legacy/timeline/compare/compare.js +2 -1
  20. package/dist/legacy/timeline/compare/compare.js.map +1 -1
  21. package/dist/legacy/types/types.cjs.map +1 -1
  22. package/dist/legacy/types/types.d.cts +2 -1
  23. package/dist/legacy/types/types.d.ts +2 -1
  24. package/dist/legacy/types/types.js.map +1 -1
  25. package/dist/legacy/utils/addLivePreviewQueryTags.cjs +49 -0
  26. package/dist/legacy/utils/addLivePreviewQueryTags.cjs.map +1 -0
  27. package/dist/legacy/utils/addLivePreviewQueryTags.d.cts +3 -0
  28. package/dist/legacy/utils/addLivePreviewQueryTags.d.ts +3 -0
  29. package/dist/legacy/utils/addLivePreviewQueryTags.js +26 -0
  30. package/dist/legacy/utils/addLivePreviewQueryTags.js.map +1 -0
  31. package/dist/legacy/utils/index.cjs +3 -21
  32. package/dist/legacy/utils/index.cjs.map +1 -1
  33. package/dist/legacy/utils/index.d.cts +4 -2
  34. package/dist/legacy/utils/index.d.ts +4 -2
  35. package/dist/legacy/utils/index.js +1 -19
  36. package/dist/legacy/utils/index.js.map +1 -1
  37. package/dist/legacy/visualBuilder/components/FieldRevert/FieldRevertComponent.cjs +62 -15
  38. package/dist/legacy/visualBuilder/components/FieldRevert/FieldRevertComponent.cjs.map +1 -1
  39. package/dist/legacy/visualBuilder/components/FieldRevert/FieldRevertComponent.d.cts +3 -2
  40. package/dist/legacy/visualBuilder/components/FieldRevert/FieldRevertComponent.d.ts +3 -2
  41. package/dist/legacy/visualBuilder/components/FieldRevert/FieldRevertComponent.js +63 -17
  42. package/dist/legacy/visualBuilder/components/FieldRevert/FieldRevertComponent.js.map +1 -1
  43. package/dist/legacy/visualBuilder/components/FieldRevert/useHandleOutsideClick.cjs +41 -0
  44. package/dist/legacy/visualBuilder/components/FieldRevert/useHandleOutsideClick.cjs.map +1 -0
  45. package/dist/legacy/visualBuilder/components/FieldRevert/useHandleOutsideClick.d.cts +3 -0
  46. package/dist/legacy/visualBuilder/components/FieldRevert/useHandleOutsideClick.d.ts +3 -0
  47. package/dist/legacy/visualBuilder/components/FieldRevert/useHandleOutsideClick.js +22 -0
  48. package/dist/legacy/visualBuilder/components/FieldRevert/useHandleOutsideClick.js.map +1 -0
  49. package/dist/legacy/visualBuilder/components/FieldToolbar.cjs +145 -147
  50. package/dist/legacy/visualBuilder/components/FieldToolbar.cjs.map +1 -1
  51. package/dist/legacy/visualBuilder/components/FieldToolbar.js +147 -149
  52. package/dist/legacy/visualBuilder/components/FieldToolbar.js.map +1 -1
  53. package/dist/legacy/visualBuilder/components/emptyBlock.cjs +1 -0
  54. package/dist/legacy/visualBuilder/components/emptyBlock.cjs.map +1 -1
  55. package/dist/legacy/visualBuilder/components/emptyBlock.js +1 -0
  56. package/dist/legacy/visualBuilder/components/emptyBlock.js.map +1 -1
  57. package/dist/legacy/visualBuilder/components/icons/variant.cjs +1 -1
  58. package/dist/legacy/visualBuilder/components/icons/variant.cjs.map +1 -1
  59. package/dist/legacy/visualBuilder/components/icons/variant.js +1 -1
  60. package/dist/legacy/visualBuilder/components/icons/variant.js.map +1 -1
  61. package/dist/legacy/visualBuilder/generators/generateToolbar.cjs +1 -1
  62. package/dist/legacy/visualBuilder/generators/generateToolbar.cjs.map +1 -1
  63. package/dist/legacy/visualBuilder/generators/generateToolbar.js +1 -1
  64. package/dist/legacy/visualBuilder/generators/generateToolbar.js.map +1 -1
  65. package/dist/legacy/visualBuilder/listeners/index.cjs +8 -2
  66. package/dist/legacy/visualBuilder/listeners/index.cjs.map +1 -1
  67. package/dist/legacy/visualBuilder/listeners/index.js +8 -2
  68. package/dist/legacy/visualBuilder/listeners/index.js.map +1 -1
  69. package/dist/legacy/visualBuilder/utils/constants.cjs +5 -2
  70. package/dist/legacy/visualBuilder/utils/constants.cjs.map +1 -1
  71. package/dist/legacy/visualBuilder/utils/constants.d.cts +2 -1
  72. package/dist/legacy/visualBuilder/utils/constants.d.ts +2 -1
  73. package/dist/legacy/visualBuilder/utils/constants.js +3 -1
  74. package/dist/legacy/visualBuilder/utils/constants.js.map +1 -1
  75. package/dist/legacy/visualBuilder/utils/getCsDataOfElement.cjs +17 -2
  76. package/dist/legacy/visualBuilder/utils/getCsDataOfElement.cjs.map +1 -1
  77. package/dist/legacy/visualBuilder/utils/getCsDataOfElement.js +17 -2
  78. package/dist/legacy/visualBuilder/utils/getCsDataOfElement.js.map +1 -1
  79. package/dist/legacy/visualBuilder/utils/getFieldType.cjs +6 -5
  80. package/dist/legacy/visualBuilder/utils/getFieldType.cjs.map +1 -1
  81. package/dist/legacy/visualBuilder/utils/getFieldType.js +6 -5
  82. package/dist/legacy/visualBuilder/utils/getFieldType.js.map +1 -1
  83. package/dist/legacy/visualBuilder/utils/handleFieldMouseDown.cjs +10 -0
  84. package/dist/legacy/visualBuilder/utils/handleFieldMouseDown.cjs.map +1 -1
  85. package/dist/legacy/visualBuilder/utils/handleFieldMouseDown.js +10 -0
  86. package/dist/legacy/visualBuilder/utils/handleFieldMouseDown.js.map +1 -1
  87. package/dist/legacy/visualBuilder/utils/handleIndividualFields.cjs +63 -39
  88. package/dist/legacy/visualBuilder/utils/handleIndividualFields.cjs.map +1 -1
  89. package/dist/legacy/visualBuilder/utils/handleIndividualFields.js +53 -39
  90. package/dist/legacy/visualBuilder/utils/handleIndividualFields.js.map +1 -1
  91. package/dist/legacy/visualBuilder/utils/insertSpaceAtCursor.cjs +44 -0
  92. package/dist/legacy/visualBuilder/utils/insertSpaceAtCursor.cjs.map +1 -0
  93. package/dist/legacy/visualBuilder/utils/insertSpaceAtCursor.d.cts +3 -0
  94. package/dist/legacy/visualBuilder/utils/insertSpaceAtCursor.d.ts +3 -0
  95. package/dist/legacy/visualBuilder/utils/insertSpaceAtCursor.js +21 -0
  96. package/dist/legacy/visualBuilder/utils/insertSpaceAtCursor.js.map +1 -0
  97. package/dist/legacy/visualBuilder/utils/multipleElementAddButton.cjs +1 -1
  98. package/dist/legacy/visualBuilder/utils/multipleElementAddButton.cjs.map +1 -1
  99. package/dist/legacy/visualBuilder/utils/multipleElementAddButton.js +1 -1
  100. package/dist/legacy/visualBuilder/utils/multipleElementAddButton.js.map +1 -1
  101. package/dist/legacy/visualBuilder/visualBuilder.style.cjs +3 -0
  102. package/dist/legacy/visualBuilder/visualBuilder.style.cjs.map +1 -1
  103. package/dist/legacy/visualBuilder/visualBuilder.style.js +3 -0
  104. package/dist/legacy/visualBuilder/visualBuilder.style.js.map +1 -1
  105. package/dist/modern/cslp/cslpdata.cjs.map +1 -1
  106. package/dist/modern/cslp/cslpdata.js.map +1 -1
  107. package/dist/modern/livePreview/editButton/editButton.cjs +4 -1
  108. package/dist/modern/livePreview/editButton/editButton.cjs.map +1 -1
  109. package/dist/modern/livePreview/editButton/editButton.js +4 -1
  110. package/dist/modern/livePreview/editButton/editButton.js.map +1 -1
  111. package/dist/modern/livePreview/eventManager/postMessageEvent.hooks.cjs +1 -1
  112. package/dist/modern/livePreview/eventManager/postMessageEvent.hooks.js +1 -1
  113. package/dist/modern/preview/contentstack-live-preview-HOC.cjs +23 -4
  114. package/dist/modern/preview/contentstack-live-preview-HOC.cjs.map +1 -1
  115. package/dist/modern/preview/contentstack-live-preview-HOC.d.cts +2 -1
  116. package/dist/modern/preview/contentstack-live-preview-HOC.d.ts +2 -1
  117. package/dist/modern/preview/contentstack-live-preview-HOC.js +23 -4
  118. package/dist/modern/preview/contentstack-live-preview-HOC.js.map +1 -1
  119. package/dist/modern/timeline/compare/compare.cjs +2 -1
  120. package/dist/modern/timeline/compare/compare.cjs.map +1 -1
  121. package/dist/modern/timeline/compare/compare.js +2 -1
  122. package/dist/modern/timeline/compare/compare.js.map +1 -1
  123. package/dist/modern/types/types.cjs.map +1 -1
  124. package/dist/modern/types/types.d.cts +2 -1
  125. package/dist/modern/types/types.d.ts +2 -1
  126. package/dist/modern/types/types.js.map +1 -1
  127. package/dist/modern/utils/addLivePreviewQueryTags.cjs +49 -0
  128. package/dist/modern/utils/addLivePreviewQueryTags.cjs.map +1 -0
  129. package/dist/modern/utils/addLivePreviewQueryTags.d.cts +3 -0
  130. package/dist/modern/utils/addLivePreviewQueryTags.d.ts +3 -0
  131. package/dist/modern/utils/addLivePreviewQueryTags.js +26 -0
  132. package/dist/modern/utils/addLivePreviewQueryTags.js.map +1 -0
  133. package/dist/modern/utils/index.cjs +3 -21
  134. package/dist/modern/utils/index.cjs.map +1 -1
  135. package/dist/modern/utils/index.d.cts +4 -2
  136. package/dist/modern/utils/index.d.ts +4 -2
  137. package/dist/modern/utils/index.js +1 -19
  138. package/dist/modern/utils/index.js.map +1 -1
  139. package/dist/modern/visualBuilder/components/FieldRevert/FieldRevertComponent.cjs +62 -15
  140. package/dist/modern/visualBuilder/components/FieldRevert/FieldRevertComponent.cjs.map +1 -1
  141. package/dist/modern/visualBuilder/components/FieldRevert/FieldRevertComponent.d.cts +3 -2
  142. package/dist/modern/visualBuilder/components/FieldRevert/FieldRevertComponent.d.ts +3 -2
  143. package/dist/modern/visualBuilder/components/FieldRevert/FieldRevertComponent.js +63 -17
  144. package/dist/modern/visualBuilder/components/FieldRevert/FieldRevertComponent.js.map +1 -1
  145. package/dist/modern/visualBuilder/components/FieldRevert/useHandleOutsideClick.cjs +41 -0
  146. package/dist/modern/visualBuilder/components/FieldRevert/useHandleOutsideClick.cjs.map +1 -0
  147. package/dist/modern/visualBuilder/components/FieldRevert/useHandleOutsideClick.d.cts +3 -0
  148. package/dist/modern/visualBuilder/components/FieldRevert/useHandleOutsideClick.d.ts +3 -0
  149. package/dist/modern/visualBuilder/components/FieldRevert/useHandleOutsideClick.js +22 -0
  150. package/dist/modern/visualBuilder/components/FieldRevert/useHandleOutsideClick.js.map +1 -0
  151. package/dist/modern/visualBuilder/components/FieldToolbar.cjs +144 -146
  152. package/dist/modern/visualBuilder/components/FieldToolbar.cjs.map +1 -1
  153. package/dist/modern/visualBuilder/components/FieldToolbar.js +146 -148
  154. package/dist/modern/visualBuilder/components/FieldToolbar.js.map +1 -1
  155. package/dist/modern/visualBuilder/components/emptyBlock.cjs +1 -0
  156. package/dist/modern/visualBuilder/components/emptyBlock.cjs.map +1 -1
  157. package/dist/modern/visualBuilder/components/emptyBlock.js +1 -0
  158. package/dist/modern/visualBuilder/components/emptyBlock.js.map +1 -1
  159. package/dist/modern/visualBuilder/components/icons/variant.cjs +1 -1
  160. package/dist/modern/visualBuilder/components/icons/variant.cjs.map +1 -1
  161. package/dist/modern/visualBuilder/components/icons/variant.js +1 -1
  162. package/dist/modern/visualBuilder/components/icons/variant.js.map +1 -1
  163. package/dist/modern/visualBuilder/generators/generateToolbar.cjs +1 -1
  164. package/dist/modern/visualBuilder/generators/generateToolbar.cjs.map +1 -1
  165. package/dist/modern/visualBuilder/generators/generateToolbar.js +1 -1
  166. package/dist/modern/visualBuilder/generators/generateToolbar.js.map +1 -1
  167. package/dist/modern/visualBuilder/listeners/index.cjs +8 -2
  168. package/dist/modern/visualBuilder/listeners/index.cjs.map +1 -1
  169. package/dist/modern/visualBuilder/listeners/index.js +8 -2
  170. package/dist/modern/visualBuilder/listeners/index.js.map +1 -1
  171. package/dist/modern/visualBuilder/utils/constants.cjs +5 -2
  172. package/dist/modern/visualBuilder/utils/constants.cjs.map +1 -1
  173. package/dist/modern/visualBuilder/utils/constants.d.cts +2 -1
  174. package/dist/modern/visualBuilder/utils/constants.d.ts +2 -1
  175. package/dist/modern/visualBuilder/utils/constants.js +3 -1
  176. package/dist/modern/visualBuilder/utils/constants.js.map +1 -1
  177. package/dist/modern/visualBuilder/utils/getCsDataOfElement.cjs +17 -2
  178. package/dist/modern/visualBuilder/utils/getCsDataOfElement.cjs.map +1 -1
  179. package/dist/modern/visualBuilder/utils/getCsDataOfElement.js +17 -2
  180. package/dist/modern/visualBuilder/utils/getCsDataOfElement.js.map +1 -1
  181. package/dist/modern/visualBuilder/utils/getFieldType.cjs +5 -5
  182. package/dist/modern/visualBuilder/utils/getFieldType.cjs.map +1 -1
  183. package/dist/modern/visualBuilder/utils/getFieldType.js +5 -5
  184. package/dist/modern/visualBuilder/utils/getFieldType.js.map +1 -1
  185. package/dist/modern/visualBuilder/utils/handleFieldMouseDown.cjs +10 -0
  186. package/dist/modern/visualBuilder/utils/handleFieldMouseDown.cjs.map +1 -1
  187. package/dist/modern/visualBuilder/utils/handleFieldMouseDown.js +10 -0
  188. package/dist/modern/visualBuilder/utils/handleFieldMouseDown.js.map +1 -1
  189. package/dist/modern/visualBuilder/utils/handleIndividualFields.cjs +62 -39
  190. package/dist/modern/visualBuilder/utils/handleIndividualFields.cjs.map +1 -1
  191. package/dist/modern/visualBuilder/utils/handleIndividualFields.js +52 -39
  192. package/dist/modern/visualBuilder/utils/handleIndividualFields.js.map +1 -1
  193. package/dist/modern/visualBuilder/utils/insertSpaceAtCursor.cjs +44 -0
  194. package/dist/modern/visualBuilder/utils/insertSpaceAtCursor.cjs.map +1 -0
  195. package/dist/modern/visualBuilder/utils/insertSpaceAtCursor.d.cts +3 -0
  196. package/dist/modern/visualBuilder/utils/insertSpaceAtCursor.d.ts +3 -0
  197. package/dist/modern/visualBuilder/utils/insertSpaceAtCursor.js +21 -0
  198. package/dist/modern/visualBuilder/utils/insertSpaceAtCursor.js.map +1 -0
  199. package/dist/modern/visualBuilder/utils/multipleElementAddButton.cjs +1 -1
  200. package/dist/modern/visualBuilder/utils/multipleElementAddButton.cjs.map +1 -1
  201. package/dist/modern/visualBuilder/utils/multipleElementAddButton.js +1 -1
  202. package/dist/modern/visualBuilder/utils/multipleElementAddButton.js.map +1 -1
  203. package/dist/modern/visualBuilder/visualBuilder.style.cjs +3 -0
  204. package/dist/modern/visualBuilder/visualBuilder.style.cjs.map +1 -1
  205. package/dist/modern/visualBuilder/visualBuilder.style.js +3 -0
  206. package/dist/modern/visualBuilder/visualBuilder.style.js.map +1 -1
  207. package/package.json +18 -6
@@ -32,6 +32,7 @@ var FieldRevertComponent_exports = {};
32
32
  __export(FieldRevertComponent_exports, {
33
33
  BASE_VARIANT_STATUS: () => BASE_VARIANT_STATUS,
34
34
  FieldRevertComponent: () => FieldRevertComponent,
35
+ VariantRevertDropdown: () => VariantRevertDropdown,
35
36
  getFieldVariantStatus: () => getFieldVariantStatus
36
37
  });
37
38
  module.exports = __toCommonJS(FieldRevertComponent_exports);
@@ -39,6 +40,9 @@ var import_classnames = __toESM(require("classnames"), 1);
39
40
  var import_compat = require("preact/compat");
40
41
  var import_visualBuilder = require("../../visualBuilder.style.cjs");
41
42
  var import_visualBuilderPostMessage = __toESM(require("../../utils/visualBuilderPostMessage.cjs"), 1);
43
+ var import_variant = require("../icons/variant.cjs");
44
+ var import_icons = require("../icons/index.cjs");
45
+ var import_useHandleOutsideClick = __toESM(require("./useHandleOutsideClick.cjs"), 1);
42
46
  var import_jsx_runtime = require("preact/jsx-runtime");
43
47
  var BASE_VARIANT_STATUS = {
44
48
  isAddedInstances: false,
@@ -47,12 +51,12 @@ var BASE_VARIANT_STATUS = {
47
51
  isOrderChanged: false,
48
52
  fieldLevelCustomizations: false
49
53
  };
50
- async function getFieldVariantStatus(fieldPathWithIndex) {
54
+ async function getFieldVariantStatus(fieldMetadata) {
51
55
  var _a;
52
56
  try {
53
57
  const result = await ((_a = import_visualBuilderPostMessage.default) == null ? void 0 : _a.send(
54
58
  "get-field-variant-status",
55
- fieldPathWithIndex
59
+ fieldMetadata
56
60
  ));
57
61
  return result;
58
62
  } catch (error) {
@@ -67,18 +71,6 @@ var FieldRevertComponent = (props) => {
67
71
  isOpen,
68
72
  closeDropdown
69
73
  } = props;
70
- const dropdownRef = (0, import_compat.useRef)(null);
71
- (0, import_compat.useEffect)(() => {
72
- const handleClickOutside = (event) => {
73
- if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {
74
- closeDropdown();
75
- }
76
- };
77
- document.addEventListener("mousedown", handleClickOutside);
78
- return () => {
79
- document.removeEventListener("mousedown", handleClickOutside);
80
- };
81
- }, []);
82
74
  const getDropdownItems = () => {
83
75
  const {
84
76
  isAddedInstances,
@@ -154,11 +146,11 @@ var FieldRevertComponent = (props) => {
154
146
  "variant-field-revert-component",
155
147
  (0, import_visualBuilder.visualBuilderStyles)()["variant-field-revert-component"]
156
148
  ),
157
- ref: dropdownRef,
158
149
  onClick: (e) => e.stopPropagation(),
159
150
  children: isOpen && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
160
151
  "div",
161
152
  {
153
+ "data-testid": "variant-field-revert-component__dropdown-content",
162
154
  className: (0, import_classnames.default)(
163
155
  "variant-field-revert-component__dropdown-content",
164
156
  (0, import_visualBuilder.visualBuilderStyles)()["variant-field-revert-component__dropdown-content"]
@@ -185,10 +177,65 @@ var FieldRevertComponent = (props) => {
185
177
  }
186
178
  );
187
179
  };
180
+ var VariantRevertDropdown = (props) => {
181
+ const {
182
+ closeDropdown,
183
+ invertTooltipPosition,
184
+ toggleVariantDropdown,
185
+ variantStatus = BASE_VARIANT_STATUS
186
+ } = props;
187
+ const dropdownRef = (0, import_compat.useRef)(null);
188
+ (0, import_useHandleOutsideClick.default)(dropdownRef, closeDropdown);
189
+ const hasDropdownItems = Object.values(variantStatus).some(
190
+ (value) => value
191
+ );
192
+ const buttonClassNames = (0, import_classnames.default)(
193
+ "visual-builder__button visual-builder__button--secondary",
194
+ (0, import_visualBuilder.visualBuilderStyles)()["visual-builder__button"],
195
+ (0, import_visualBuilder.visualBuilderStyles)()["visual-builder__button--secondary"],
196
+ (0, import_visualBuilder.visualBuilderStyles)()["visual-builder__tooltip"],
197
+ {
198
+ "visual-builder__tooltip--bottom": invertTooltipPosition,
199
+ [(0, import_visualBuilder.visualBuilderStyles)()["visual-builder__tooltip--bottom"]]: invertTooltipPosition
200
+ }
201
+ );
202
+ if (!hasDropdownItems) {
203
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
204
+ "button",
205
+ {
206
+ className: (0, import_classnames.default)(buttonClassNames),
207
+ style: { padding: "6px" },
208
+ "data-tooltip": "Variant",
209
+ "data-testid": `visual-builder-canvas-variant-icon`,
210
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_variant.VariantIcon, {})
211
+ }
212
+ );
213
+ }
214
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { ref: dropdownRef, children: [
215
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
216
+ "button",
217
+ {
218
+ className: (0, import_classnames.default)(
219
+ buttonClassNames,
220
+ (0, import_visualBuilder.visualBuilderStyles)()["visual-builder__variant-button"]
221
+ ),
222
+ "data-tooltip": "Variant Revert",
223
+ "data-testid": `visual-builder-canvas-variant-revert`,
224
+ onClick: toggleVariantDropdown,
225
+ children: [
226
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_variant.VariantIcon, {}),
227
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_icons.CaretIcon, { open: props.isOpen })
228
+ ]
229
+ }
230
+ ),
231
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(FieldRevertComponent, { ...props })
232
+ ] });
233
+ };
188
234
  // Annotate the CommonJS export names for ESM import in node:
189
235
  0 && (module.exports = {
190
236
  BASE_VARIANT_STATUS,
191
237
  FieldRevertComponent,
238
+ VariantRevertDropdown,
192
239
  getFieldVariantStatus
193
240
  });
194
241
  //# sourceMappingURL=FieldRevertComponent.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/visualBuilder/components/FieldRevert/FieldRevertComponent.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport React, { useRef, useEffect } from \"preact/compat\";\nimport { visualBuilderStyles } from \"../../visualBuilder.style\";\nimport visualBuilderPostMessage from \"../../utils/visualBuilderPostMessage\";\nimport { CslpData } from \"../../../cslp/types/cslp.types\";\n\nexport interface IVariantStatus {\n fieldLevelCustomizations: boolean;\n isBaseModified: boolean;\n isAddedInstances: boolean;\n isDeletedInstances: boolean;\n isOrderChanged: boolean;\n}\n\nexport type TFieldRevertActionCallback =\n | \"revert_to_base_entry_value\"\n | \"revert_added_instances\"\n | \"restore_deleted_instances\"\n | \"reset_field_level_customizations\"\n | \"restore_sorted_instances\";\n\ninterface FieldRevertComponentProps {\n fieldDataName: string;\n fieldMetadata: CslpData;\n isOpen: boolean;\n closeDropdown: () => void;\n variantStatus?: IVariantStatus;\n}\n\ninterface IItem {\n label: string;\n action: TFieldRevertActionCallback;\n id: string;\n testId: string;\n fieldDataName: string;\n}\n\nexport const BASE_VARIANT_STATUS: IVariantStatus = {\n isAddedInstances: false,\n isBaseModified: false,\n isDeletedInstances: false,\n isOrderChanged: false,\n fieldLevelCustomizations: false,\n};\n\nexport async function getFieldVariantStatus(\n fieldPathWithIndex: string\n): Promise<IVariantStatus | undefined> {\n try {\n const result = await visualBuilderPostMessage?.send<IVariantStatus>(\n \"get-field-variant-status\",\n fieldPathWithIndex\n );\n return result;\n } catch (error) {\n console.error(\"Failed to get field variant status:\", error);\n }\n}\n\nexport const FieldRevertComponent = (props: FieldRevertComponentProps) => {\n const {\n fieldDataName,\n fieldMetadata,\n variantStatus = BASE_VARIANT_STATUS,\n isOpen,\n closeDropdown,\n } = props;\n const dropdownRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n dropdownRef.current &&\n !dropdownRef.current.contains(event.target as Node)\n ) {\n closeDropdown();\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, []);\n\n const getDropdownItems = () => {\n const {\n isAddedInstances,\n isDeletedInstances,\n isBaseModified,\n isOrderChanged,\n fieldLevelCustomizations,\n } = variantStatus;\n\n const dropdownItems: IItem[] = [];\n\n if (isBaseModified) {\n dropdownItems.push({\n label: \"Revert to base entry value\",\n action: \"revert_to_base_entry_value\",\n id: `iframe-cs-variant-field-${fieldDataName}-revert`,\n testId: `iframe-cs-variant-field-${fieldDataName}-revert`,\n fieldDataName,\n });\n }\n\n if (isAddedInstances) {\n dropdownItems.push({\n label: \"Revert added instances\",\n action: \"revert_added_instances\",\n id: `iframe-cs-variant-field-${fieldDataName}-revert-added-instances`,\n testId: `iframe-cs-variant-field-${fieldDataName}-revert-added-instances`,\n fieldDataName,\n });\n }\n\n if (isDeletedInstances) {\n dropdownItems.push({\n label: \"Restore deleted instances\",\n action: \"restore_deleted_instances\",\n id: `iframe-cs-variant-field-${fieldDataName}-restore-deleted-instances`,\n testId: `iframe-cs-variant-field-${fieldDataName}-restore-deleted-instances`,\n fieldDataName,\n });\n }\n\n if (fieldLevelCustomizations) {\n dropdownItems.push({\n label: \"Reset field-level customizations\",\n action: \"reset_field_level_customizations\",\n id: `iframe-cs-variant-field-${fieldDataName}-reset-field-level-customizations`,\n testId: `iframe-cs-variant-field-${fieldDataName}-reset-field-level-customizations`,\n fieldDataName,\n });\n }\n\n if (isOrderChanged) {\n dropdownItems.push({\n label: \"Restore sorted instances\",\n action: \"restore_sorted_instances\",\n id: `iframe-cs-variant-field-${fieldDataName}-restore-sorted-instances`,\n testId: `iframe-cs-variant-field-${fieldDataName}-restore-sorted-instances`,\n fieldDataName,\n });\n }\n\n return dropdownItems;\n };\n\n const dropdownItems = getDropdownItems();\n\n function handleOnClick(item: IItem) {\n const { fieldDataName, action } = item;\n visualBuilderPostMessage?.send(\"send-variant-revert-action-trigger\", {\n fieldDataName,\n action,\n euid: fieldMetadata.entry_uid,\n ct_uid: fieldMetadata.content_type_uid,\n locale: fieldMetadata.locale,\n });\n }\n\n return (\n <div\n className={classNames(\n \"variant-field-revert-component\",\n visualBuilderStyles()[\"variant-field-revert-component\"]\n )}\n ref={dropdownRef}\n onClick={(e) => e.stopPropagation()}\n >\n {isOpen && (\n <div\n className={classNames(\n \"variant-field-revert-component__dropdown-content\",\n visualBuilderStyles()[\n \"variant-field-revert-component__dropdown-content\"\n ]\n )}\n >\n {dropdownItems.map((item) => (\n <div\n className={classNames(\n \"variant-field-revert-component__dropdown-content__list-item\",\n visualBuilderStyles()[\n \"variant-field-revert-component__dropdown-content__list-item\"\n ]\n )}\n onClick={(e) => {\n e.preventDefault();\n handleOnClick(item);\n closeDropdown();\n }}\n key={item.id}\n data-testid={item.testId}\n >\n <span>{item.label}</span>\n </div>\n ))}\n </div>\n )}\n </div>\n );\n};\n"],"mappings":"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","names":["visualBuilderPostMessage","dropdownItems","fieldDataName","classNames"]}
1
+ {"version":3,"sources":["../../../../../src/visualBuilder/components/FieldRevert/FieldRevertComponent.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport React, { useRef, useEffect } from \"preact/compat\";\nimport { visualBuilderStyles } from \"../../visualBuilder.style\";\nimport visualBuilderPostMessage from \"../../utils/visualBuilderPostMessage\";\nimport { CslpData } from \"../../../cslp/types/cslp.types\";\nimport { VariantIcon } from \"../icons/variant\";\nimport { CaretIcon } from \"../icons\";\nimport useHandleOutsideClick from \"./useHandleOutsideClick\";\n\nexport interface IVariantStatus {\n fieldLevelCustomizations: boolean;\n isBaseModified: boolean;\n isAddedInstances: boolean;\n isDeletedInstances: boolean;\n isOrderChanged: boolean;\n}\n\nexport type TFieldRevertActionCallback =\n | \"revert_to_base_entry_value\"\n | \"revert_added_instances\"\n | \"restore_deleted_instances\"\n | \"reset_field_level_customizations\"\n | \"restore_sorted_instances\";\n\ninterface FieldRevertComponentProps {\n fieldDataName: string;\n fieldMetadata: CslpData;\n isOpen: boolean;\n closeDropdown: () => void;\n variantStatus?: IVariantStatus;\n}\n\ninterface IItem {\n label: string;\n action: TFieldRevertActionCallback;\n id: string;\n testId: string;\n fieldDataName: string;\n}\n\nexport const BASE_VARIANT_STATUS: IVariantStatus = {\n isAddedInstances: false,\n isBaseModified: false,\n isDeletedInstances: false,\n isOrderChanged: false,\n fieldLevelCustomizations: false,\n};\n\nexport async function getFieldVariantStatus(\n fieldMetadata: CslpData\n): Promise<IVariantStatus | undefined> {\n try {\n const result = await visualBuilderPostMessage?.send<IVariantStatus>(\n \"get-field-variant-status\",\n fieldMetadata\n );\n return result;\n } catch (error) {\n console.error(\"Failed to get field variant status:\", error);\n }\n}\n\nexport const FieldRevertComponent = (props: FieldRevertComponentProps) => {\n const {\n fieldDataName,\n fieldMetadata,\n variantStatus = BASE_VARIANT_STATUS,\n isOpen,\n closeDropdown,\n } = props;\n\n const getDropdownItems = () => {\n const {\n isAddedInstances,\n isDeletedInstances,\n isBaseModified,\n isOrderChanged,\n fieldLevelCustomizations,\n } = variantStatus;\n\n const dropdownItems: IItem[] = [];\n\n if (isBaseModified) {\n dropdownItems.push({\n label: \"Revert to base entry value\",\n action: \"revert_to_base_entry_value\",\n id: `iframe-cs-variant-field-${fieldDataName}-revert`,\n testId: `iframe-cs-variant-field-${fieldDataName}-revert`,\n fieldDataName,\n });\n }\n\n if (isAddedInstances) {\n dropdownItems.push({\n label: \"Revert added instances\",\n action: \"revert_added_instances\",\n id: `iframe-cs-variant-field-${fieldDataName}-revert-added-instances`,\n testId: `iframe-cs-variant-field-${fieldDataName}-revert-added-instances`,\n fieldDataName,\n });\n }\n\n if (isDeletedInstances) {\n dropdownItems.push({\n label: \"Restore deleted instances\",\n action: \"restore_deleted_instances\",\n id: `iframe-cs-variant-field-${fieldDataName}-restore-deleted-instances`,\n testId: `iframe-cs-variant-field-${fieldDataName}-restore-deleted-instances`,\n fieldDataName,\n });\n }\n\n if (fieldLevelCustomizations) {\n dropdownItems.push({\n label: \"Reset field-level customizations\",\n action: \"reset_field_level_customizations\",\n id: `iframe-cs-variant-field-${fieldDataName}-reset-field-level-customizations`,\n testId: `iframe-cs-variant-field-${fieldDataName}-reset-field-level-customizations`,\n fieldDataName,\n });\n }\n\n if (isOrderChanged) {\n dropdownItems.push({\n label: \"Restore sorted instances\",\n action: \"restore_sorted_instances\",\n id: `iframe-cs-variant-field-${fieldDataName}-restore-sorted-instances`,\n testId: `iframe-cs-variant-field-${fieldDataName}-restore-sorted-instances`,\n fieldDataName,\n });\n }\n\n return dropdownItems;\n };\n\n const dropdownItems = getDropdownItems();\n\n function handleOnClick(item: IItem) {\n const { fieldDataName, action } = item;\n visualBuilderPostMessage?.send(\"send-variant-revert-action-trigger\", {\n fieldDataName,\n action,\n euid: fieldMetadata.entry_uid,\n ct_uid: fieldMetadata.content_type_uid,\n locale: fieldMetadata.locale,\n });\n }\n\n return (\n <div\n className={classNames(\n \"variant-field-revert-component\",\n visualBuilderStyles()[\"variant-field-revert-component\"]\n )}\n onClick={(e) => e.stopPropagation()}\n >\n {isOpen && (\n <div\n data-testid=\"variant-field-revert-component__dropdown-content\"\n className={classNames(\n \"variant-field-revert-component__dropdown-content\",\n visualBuilderStyles()[\n \"variant-field-revert-component__dropdown-content\"\n ]\n )}\n >\n {dropdownItems.map((item) => (\n <div\n className={classNames(\n \"variant-field-revert-component__dropdown-content__list-item\",\n visualBuilderStyles()[\n \"variant-field-revert-component__dropdown-content__list-item\"\n ]\n )}\n onClick={(e) => {\n e.preventDefault();\n handleOnClick(item);\n closeDropdown();\n }}\n key={item.id}\n data-testid={item.testId}\n >\n <span>{item.label}</span>\n </div>\n ))}\n </div>\n )}\n </div>\n );\n};\n\nexport const VariantRevertDropdown = (props: any) => {\n const {\n closeDropdown,\n invertTooltipPosition,\n toggleVariantDropdown,\n variantStatus = BASE_VARIANT_STATUS,\n } = props;\n const dropdownRef = useRef<HTMLDivElement>(null);\n useHandleOutsideClick(dropdownRef, closeDropdown);\n const hasDropdownItems = Object.values(variantStatus).some(\n (value) => value\n );\n\n const buttonClassNames = classNames(\n \"visual-builder__button visual-builder__button--secondary\",\n visualBuilderStyles()[\"visual-builder__button\"],\n visualBuilderStyles()[\"visual-builder__button--secondary\"],\n visualBuilderStyles()[\"visual-builder__tooltip\"],\n {\n \"visual-builder__tooltip--bottom\": invertTooltipPosition,\n [visualBuilderStyles()[\"visual-builder__tooltip--bottom\"]]:\n invertTooltipPosition,\n }\n );\n\n if (!hasDropdownItems) {\n return (\n <button\n className={classNames(buttonClassNames)}\n style={{ padding: \"6px\" }}\n data-tooltip={\"Variant\"}\n data-testid={`visual-builder-canvas-variant-icon`}\n >\n <VariantIcon />\n </button>\n );\n }\n return (\n <div ref={dropdownRef}>\n <button\n className={classNames(\n buttonClassNames,\n visualBuilderStyles()[\"visual-builder__variant-button\"]\n )}\n data-tooltip={\"Variant Revert\"}\n data-testid={`visual-builder-canvas-variant-revert`}\n onClick={toggleVariantDropdown}\n >\n <VariantIcon />\n <CaretIcon open={props.isOpen} />\n </button>\n <FieldRevertComponent {...props} />\n </div>\n );\n};\n"],"mappings":"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","names":["visualBuilderPostMessage","dropdownItems","fieldDataName","classNames","useHandleOutsideClick"]}
@@ -17,7 +17,8 @@ interface FieldRevertComponentProps {
17
17
  variantStatus?: IVariantStatus;
18
18
  }
19
19
  declare const BASE_VARIANT_STATUS: IVariantStatus;
20
- declare function getFieldVariantStatus(fieldPathWithIndex: string): Promise<IVariantStatus | undefined>;
20
+ declare function getFieldVariantStatus(fieldMetadata: CslpData): Promise<IVariantStatus | undefined>;
21
21
  declare const FieldRevertComponent: (props: FieldRevertComponentProps) => react_jsx_runtime.JSX.Element;
22
+ declare const VariantRevertDropdown: (props: any) => react_jsx_runtime.JSX.Element;
22
23
 
23
- export { BASE_VARIANT_STATUS, FieldRevertComponent, type IVariantStatus, type TFieldRevertActionCallback, getFieldVariantStatus };
24
+ export { BASE_VARIANT_STATUS, FieldRevertComponent, type IVariantStatus, type TFieldRevertActionCallback, VariantRevertDropdown, getFieldVariantStatus };
@@ -17,7 +17,8 @@ interface FieldRevertComponentProps {
17
17
  variantStatus?: IVariantStatus;
18
18
  }
19
19
  declare const BASE_VARIANT_STATUS: IVariantStatus;
20
- declare function getFieldVariantStatus(fieldPathWithIndex: string): Promise<IVariantStatus | undefined>;
20
+ declare function getFieldVariantStatus(fieldMetadata: CslpData): Promise<IVariantStatus | undefined>;
21
21
  declare const FieldRevertComponent: (props: FieldRevertComponentProps) => react_jsx_runtime.JSX.Element;
22
+ declare const VariantRevertDropdown: (props: any) => react_jsx_runtime.JSX.Element;
22
23
 
23
- export { BASE_VARIANT_STATUS, FieldRevertComponent, type IVariantStatus, type TFieldRevertActionCallback, getFieldVariantStatus };
24
+ export { BASE_VARIANT_STATUS, FieldRevertComponent, type IVariantStatus, type TFieldRevertActionCallback, VariantRevertDropdown, getFieldVariantStatus };
@@ -2,10 +2,13 @@ import "../../../chunk-5WRI5ZAA.js";
2
2
 
3
3
  // src/visualBuilder/components/FieldRevert/FieldRevertComponent.tsx
4
4
  import classNames from "classnames";
5
- import { useRef, useEffect } from "preact/compat";
5
+ import { useRef } from "preact/compat";
6
6
  import { visualBuilderStyles } from "../../visualBuilder.style.js";
7
7
  import visualBuilderPostMessage from "../../utils/visualBuilderPostMessage.js";
8
- import { jsx } from "preact/jsx-runtime";
8
+ import { VariantIcon } from "../icons/variant.js";
9
+ import { CaretIcon } from "../icons/index.js";
10
+ import useHandleOutsideClick from "./useHandleOutsideClick.js";
11
+ import { jsx, jsxs } from "preact/jsx-runtime";
9
12
  var BASE_VARIANT_STATUS = {
10
13
  isAddedInstances: false,
11
14
  isBaseModified: false,
@@ -13,12 +16,12 @@ var BASE_VARIANT_STATUS = {
13
16
  isOrderChanged: false,
14
17
  fieldLevelCustomizations: false
15
18
  };
16
- async function getFieldVariantStatus(fieldPathWithIndex) {
19
+ async function getFieldVariantStatus(fieldMetadata) {
17
20
  var _a;
18
21
  try {
19
22
  const result = await ((_a = visualBuilderPostMessage) == null ? void 0 : _a.send(
20
23
  "get-field-variant-status",
21
- fieldPathWithIndex
24
+ fieldMetadata
22
25
  ));
23
26
  return result;
24
27
  } catch (error) {
@@ -33,18 +36,6 @@ var FieldRevertComponent = (props) => {
33
36
  isOpen,
34
37
  closeDropdown
35
38
  } = props;
36
- const dropdownRef = useRef(null);
37
- useEffect(() => {
38
- const handleClickOutside = (event) => {
39
- if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {
40
- closeDropdown();
41
- }
42
- };
43
- document.addEventListener("mousedown", handleClickOutside);
44
- return () => {
45
- document.removeEventListener("mousedown", handleClickOutside);
46
- };
47
- }, []);
48
39
  const getDropdownItems = () => {
49
40
  const {
50
41
  isAddedInstances,
@@ -120,11 +111,11 @@ var FieldRevertComponent = (props) => {
120
111
  "variant-field-revert-component",
121
112
  visualBuilderStyles()["variant-field-revert-component"]
122
113
  ),
123
- ref: dropdownRef,
124
114
  onClick: (e) => e.stopPropagation(),
125
115
  children: isOpen && /* @__PURE__ */ jsx(
126
116
  "div",
127
117
  {
118
+ "data-testid": "variant-field-revert-component__dropdown-content",
128
119
  className: classNames(
129
120
  "variant-field-revert-component__dropdown-content",
130
121
  visualBuilderStyles()["variant-field-revert-component__dropdown-content"]
@@ -151,9 +142,64 @@ var FieldRevertComponent = (props) => {
151
142
  }
152
143
  );
153
144
  };
145
+ var VariantRevertDropdown = (props) => {
146
+ const {
147
+ closeDropdown,
148
+ invertTooltipPosition,
149
+ toggleVariantDropdown,
150
+ variantStatus = BASE_VARIANT_STATUS
151
+ } = props;
152
+ const dropdownRef = useRef(null);
153
+ useHandleOutsideClick(dropdownRef, closeDropdown);
154
+ const hasDropdownItems = Object.values(variantStatus).some(
155
+ (value) => value
156
+ );
157
+ const buttonClassNames = classNames(
158
+ "visual-builder__button visual-builder__button--secondary",
159
+ visualBuilderStyles()["visual-builder__button"],
160
+ visualBuilderStyles()["visual-builder__button--secondary"],
161
+ visualBuilderStyles()["visual-builder__tooltip"],
162
+ {
163
+ "visual-builder__tooltip--bottom": invertTooltipPosition,
164
+ [visualBuilderStyles()["visual-builder__tooltip--bottom"]]: invertTooltipPosition
165
+ }
166
+ );
167
+ if (!hasDropdownItems) {
168
+ return /* @__PURE__ */ jsx(
169
+ "button",
170
+ {
171
+ className: classNames(buttonClassNames),
172
+ style: { padding: "6px" },
173
+ "data-tooltip": "Variant",
174
+ "data-testid": `visual-builder-canvas-variant-icon`,
175
+ children: /* @__PURE__ */ jsx(VariantIcon, {})
176
+ }
177
+ );
178
+ }
179
+ return /* @__PURE__ */ jsxs("div", { ref: dropdownRef, children: [
180
+ /* @__PURE__ */ jsxs(
181
+ "button",
182
+ {
183
+ className: classNames(
184
+ buttonClassNames,
185
+ visualBuilderStyles()["visual-builder__variant-button"]
186
+ ),
187
+ "data-tooltip": "Variant Revert",
188
+ "data-testid": `visual-builder-canvas-variant-revert`,
189
+ onClick: toggleVariantDropdown,
190
+ children: [
191
+ /* @__PURE__ */ jsx(VariantIcon, {}),
192
+ /* @__PURE__ */ jsx(CaretIcon, { open: props.isOpen })
193
+ ]
194
+ }
195
+ ),
196
+ /* @__PURE__ */ jsx(FieldRevertComponent, { ...props })
197
+ ] });
198
+ };
154
199
  export {
155
200
  BASE_VARIANT_STATUS,
156
201
  FieldRevertComponent,
202
+ VariantRevertDropdown,
157
203
  getFieldVariantStatus
158
204
  };
159
205
  //# sourceMappingURL=FieldRevertComponent.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/visualBuilder/components/FieldRevert/FieldRevertComponent.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport React, { useRef, useEffect } from \"preact/compat\";\nimport { visualBuilderStyles } from \"../../visualBuilder.style\";\nimport visualBuilderPostMessage from \"../../utils/visualBuilderPostMessage\";\nimport { CslpData } from \"../../../cslp/types/cslp.types\";\n\nexport interface IVariantStatus {\n fieldLevelCustomizations: boolean;\n isBaseModified: boolean;\n isAddedInstances: boolean;\n isDeletedInstances: boolean;\n isOrderChanged: boolean;\n}\n\nexport type TFieldRevertActionCallback =\n | \"revert_to_base_entry_value\"\n | \"revert_added_instances\"\n | \"restore_deleted_instances\"\n | \"reset_field_level_customizations\"\n | \"restore_sorted_instances\";\n\ninterface FieldRevertComponentProps {\n fieldDataName: string;\n fieldMetadata: CslpData;\n isOpen: boolean;\n closeDropdown: () => void;\n variantStatus?: IVariantStatus;\n}\n\ninterface IItem {\n label: string;\n action: TFieldRevertActionCallback;\n id: string;\n testId: string;\n fieldDataName: string;\n}\n\nexport const BASE_VARIANT_STATUS: IVariantStatus = {\n isAddedInstances: false,\n isBaseModified: false,\n isDeletedInstances: false,\n isOrderChanged: false,\n fieldLevelCustomizations: false,\n};\n\nexport async function getFieldVariantStatus(\n fieldPathWithIndex: string\n): Promise<IVariantStatus | undefined> {\n try {\n const result = await visualBuilderPostMessage?.send<IVariantStatus>(\n \"get-field-variant-status\",\n fieldPathWithIndex\n );\n return result;\n } catch (error) {\n console.error(\"Failed to get field variant status:\", error);\n }\n}\n\nexport const FieldRevertComponent = (props: FieldRevertComponentProps) => {\n const {\n fieldDataName,\n fieldMetadata,\n variantStatus = BASE_VARIANT_STATUS,\n isOpen,\n closeDropdown,\n } = props;\n const dropdownRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n dropdownRef.current &&\n !dropdownRef.current.contains(event.target as Node)\n ) {\n closeDropdown();\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, []);\n\n const getDropdownItems = () => {\n const {\n isAddedInstances,\n isDeletedInstances,\n isBaseModified,\n isOrderChanged,\n fieldLevelCustomizations,\n } = variantStatus;\n\n const dropdownItems: IItem[] = [];\n\n if (isBaseModified) {\n dropdownItems.push({\n label: \"Revert to base entry value\",\n action: \"revert_to_base_entry_value\",\n id: `iframe-cs-variant-field-${fieldDataName}-revert`,\n testId: `iframe-cs-variant-field-${fieldDataName}-revert`,\n fieldDataName,\n });\n }\n\n if (isAddedInstances) {\n dropdownItems.push({\n label: \"Revert added instances\",\n action: \"revert_added_instances\",\n id: `iframe-cs-variant-field-${fieldDataName}-revert-added-instances`,\n testId: `iframe-cs-variant-field-${fieldDataName}-revert-added-instances`,\n fieldDataName,\n });\n }\n\n if (isDeletedInstances) {\n dropdownItems.push({\n label: \"Restore deleted instances\",\n action: \"restore_deleted_instances\",\n id: `iframe-cs-variant-field-${fieldDataName}-restore-deleted-instances`,\n testId: `iframe-cs-variant-field-${fieldDataName}-restore-deleted-instances`,\n fieldDataName,\n });\n }\n\n if (fieldLevelCustomizations) {\n dropdownItems.push({\n label: \"Reset field-level customizations\",\n action: \"reset_field_level_customizations\",\n id: `iframe-cs-variant-field-${fieldDataName}-reset-field-level-customizations`,\n testId: `iframe-cs-variant-field-${fieldDataName}-reset-field-level-customizations`,\n fieldDataName,\n });\n }\n\n if (isOrderChanged) {\n dropdownItems.push({\n label: \"Restore sorted instances\",\n action: \"restore_sorted_instances\",\n id: `iframe-cs-variant-field-${fieldDataName}-restore-sorted-instances`,\n testId: `iframe-cs-variant-field-${fieldDataName}-restore-sorted-instances`,\n fieldDataName,\n });\n }\n\n return dropdownItems;\n };\n\n const dropdownItems = getDropdownItems();\n\n function handleOnClick(item: IItem) {\n const { fieldDataName, action } = item;\n visualBuilderPostMessage?.send(\"send-variant-revert-action-trigger\", {\n fieldDataName,\n action,\n euid: fieldMetadata.entry_uid,\n ct_uid: fieldMetadata.content_type_uid,\n locale: fieldMetadata.locale,\n });\n }\n\n return (\n <div\n className={classNames(\n \"variant-field-revert-component\",\n visualBuilderStyles()[\"variant-field-revert-component\"]\n )}\n ref={dropdownRef}\n onClick={(e) => e.stopPropagation()}\n >\n {isOpen && (\n <div\n className={classNames(\n \"variant-field-revert-component__dropdown-content\",\n visualBuilderStyles()[\n \"variant-field-revert-component__dropdown-content\"\n ]\n )}\n >\n {dropdownItems.map((item) => (\n <div\n className={classNames(\n \"variant-field-revert-component__dropdown-content__list-item\",\n visualBuilderStyles()[\n \"variant-field-revert-component__dropdown-content__list-item\"\n ]\n )}\n onClick={(e) => {\n e.preventDefault();\n handleOnClick(item);\n closeDropdown();\n }}\n key={item.id}\n data-testid={item.testId}\n >\n <span>{item.label}</span>\n </div>\n ))}\n </div>\n )}\n </div>\n );\n};\n"],"mappings":"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","names":["dropdownItems","fieldDataName"]}
1
+ {"version":3,"sources":["../../../../../src/visualBuilder/components/FieldRevert/FieldRevertComponent.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport React, { useRef, useEffect } from \"preact/compat\";\nimport { visualBuilderStyles } from \"../../visualBuilder.style\";\nimport visualBuilderPostMessage from \"../../utils/visualBuilderPostMessage\";\nimport { CslpData } from \"../../../cslp/types/cslp.types\";\nimport { VariantIcon } from \"../icons/variant\";\nimport { CaretIcon } from \"../icons\";\nimport useHandleOutsideClick from \"./useHandleOutsideClick\";\n\nexport interface IVariantStatus {\n fieldLevelCustomizations: boolean;\n isBaseModified: boolean;\n isAddedInstances: boolean;\n isDeletedInstances: boolean;\n isOrderChanged: boolean;\n}\n\nexport type TFieldRevertActionCallback =\n | \"revert_to_base_entry_value\"\n | \"revert_added_instances\"\n | \"restore_deleted_instances\"\n | \"reset_field_level_customizations\"\n | \"restore_sorted_instances\";\n\ninterface FieldRevertComponentProps {\n fieldDataName: string;\n fieldMetadata: CslpData;\n isOpen: boolean;\n closeDropdown: () => void;\n variantStatus?: IVariantStatus;\n}\n\ninterface IItem {\n label: string;\n action: TFieldRevertActionCallback;\n id: string;\n testId: string;\n fieldDataName: string;\n}\n\nexport const BASE_VARIANT_STATUS: IVariantStatus = {\n isAddedInstances: false,\n isBaseModified: false,\n isDeletedInstances: false,\n isOrderChanged: false,\n fieldLevelCustomizations: false,\n};\n\nexport async function getFieldVariantStatus(\n fieldMetadata: CslpData\n): Promise<IVariantStatus | undefined> {\n try {\n const result = await visualBuilderPostMessage?.send<IVariantStatus>(\n \"get-field-variant-status\",\n fieldMetadata\n );\n return result;\n } catch (error) {\n console.error(\"Failed to get field variant status:\", error);\n }\n}\n\nexport const FieldRevertComponent = (props: FieldRevertComponentProps) => {\n const {\n fieldDataName,\n fieldMetadata,\n variantStatus = BASE_VARIANT_STATUS,\n isOpen,\n closeDropdown,\n } = props;\n\n const getDropdownItems = () => {\n const {\n isAddedInstances,\n isDeletedInstances,\n isBaseModified,\n isOrderChanged,\n fieldLevelCustomizations,\n } = variantStatus;\n\n const dropdownItems: IItem[] = [];\n\n if (isBaseModified) {\n dropdownItems.push({\n label: \"Revert to base entry value\",\n action: \"revert_to_base_entry_value\",\n id: `iframe-cs-variant-field-${fieldDataName}-revert`,\n testId: `iframe-cs-variant-field-${fieldDataName}-revert`,\n fieldDataName,\n });\n }\n\n if (isAddedInstances) {\n dropdownItems.push({\n label: \"Revert added instances\",\n action: \"revert_added_instances\",\n id: `iframe-cs-variant-field-${fieldDataName}-revert-added-instances`,\n testId: `iframe-cs-variant-field-${fieldDataName}-revert-added-instances`,\n fieldDataName,\n });\n }\n\n if (isDeletedInstances) {\n dropdownItems.push({\n label: \"Restore deleted instances\",\n action: \"restore_deleted_instances\",\n id: `iframe-cs-variant-field-${fieldDataName}-restore-deleted-instances`,\n testId: `iframe-cs-variant-field-${fieldDataName}-restore-deleted-instances`,\n fieldDataName,\n });\n }\n\n if (fieldLevelCustomizations) {\n dropdownItems.push({\n label: \"Reset field-level customizations\",\n action: \"reset_field_level_customizations\",\n id: `iframe-cs-variant-field-${fieldDataName}-reset-field-level-customizations`,\n testId: `iframe-cs-variant-field-${fieldDataName}-reset-field-level-customizations`,\n fieldDataName,\n });\n }\n\n if (isOrderChanged) {\n dropdownItems.push({\n label: \"Restore sorted instances\",\n action: \"restore_sorted_instances\",\n id: `iframe-cs-variant-field-${fieldDataName}-restore-sorted-instances`,\n testId: `iframe-cs-variant-field-${fieldDataName}-restore-sorted-instances`,\n fieldDataName,\n });\n }\n\n return dropdownItems;\n };\n\n const dropdownItems = getDropdownItems();\n\n function handleOnClick(item: IItem) {\n const { fieldDataName, action } = item;\n visualBuilderPostMessage?.send(\"send-variant-revert-action-trigger\", {\n fieldDataName,\n action,\n euid: fieldMetadata.entry_uid,\n ct_uid: fieldMetadata.content_type_uid,\n locale: fieldMetadata.locale,\n });\n }\n\n return (\n <div\n className={classNames(\n \"variant-field-revert-component\",\n visualBuilderStyles()[\"variant-field-revert-component\"]\n )}\n onClick={(e) => e.stopPropagation()}\n >\n {isOpen && (\n <div\n data-testid=\"variant-field-revert-component__dropdown-content\"\n className={classNames(\n \"variant-field-revert-component__dropdown-content\",\n visualBuilderStyles()[\n \"variant-field-revert-component__dropdown-content\"\n ]\n )}\n >\n {dropdownItems.map((item) => (\n <div\n className={classNames(\n \"variant-field-revert-component__dropdown-content__list-item\",\n visualBuilderStyles()[\n \"variant-field-revert-component__dropdown-content__list-item\"\n ]\n )}\n onClick={(e) => {\n e.preventDefault();\n handleOnClick(item);\n closeDropdown();\n }}\n key={item.id}\n data-testid={item.testId}\n >\n <span>{item.label}</span>\n </div>\n ))}\n </div>\n )}\n </div>\n );\n};\n\nexport const VariantRevertDropdown = (props: any) => {\n const {\n closeDropdown,\n invertTooltipPosition,\n toggleVariantDropdown,\n variantStatus = BASE_VARIANT_STATUS,\n } = props;\n const dropdownRef = useRef<HTMLDivElement>(null);\n useHandleOutsideClick(dropdownRef, closeDropdown);\n const hasDropdownItems = Object.values(variantStatus).some(\n (value) => value\n );\n\n const buttonClassNames = classNames(\n \"visual-builder__button visual-builder__button--secondary\",\n visualBuilderStyles()[\"visual-builder__button\"],\n visualBuilderStyles()[\"visual-builder__button--secondary\"],\n visualBuilderStyles()[\"visual-builder__tooltip\"],\n {\n \"visual-builder__tooltip--bottom\": invertTooltipPosition,\n [visualBuilderStyles()[\"visual-builder__tooltip--bottom\"]]:\n invertTooltipPosition,\n }\n );\n\n if (!hasDropdownItems) {\n return (\n <button\n className={classNames(buttonClassNames)}\n style={{ padding: \"6px\" }}\n data-tooltip={\"Variant\"}\n data-testid={`visual-builder-canvas-variant-icon`}\n >\n <VariantIcon />\n </button>\n );\n }\n return (\n <div ref={dropdownRef}>\n <button\n className={classNames(\n buttonClassNames,\n visualBuilderStyles()[\"visual-builder__variant-button\"]\n )}\n data-tooltip={\"Variant Revert\"}\n data-testid={`visual-builder-canvas-variant-revert`}\n onClick={toggleVariantDropdown}\n >\n <VariantIcon />\n <CaretIcon open={props.isOpen} />\n </button>\n <FieldRevertComponent {...props} />\n </div>\n );\n};\n"],"mappings":"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","names":["dropdownItems","fieldDataName"]}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/visualBuilder/components/FieldRevert/useHandleOutsideClick.ts
21
+ var useHandleOutsideClick_exports = {};
22
+ __export(useHandleOutsideClick_exports, {
23
+ default: () => useHandleOutsideClick_default
24
+ });
25
+ module.exports = __toCommonJS(useHandleOutsideClick_exports);
26
+ var import_compat = require("preact/compat");
27
+ var useHandleOutsideClick = (ref, callback) => {
28
+ (0, import_compat.useEffect)(() => {
29
+ const handleClickOutside = (event) => {
30
+ if (ref.current && !ref.current.contains(event.target)) {
31
+ callback();
32
+ }
33
+ };
34
+ document.addEventListener("mousedown", handleClickOutside);
35
+ return () => {
36
+ document.removeEventListener("mousedown", handleClickOutside);
37
+ };
38
+ }, [ref, callback]);
39
+ };
40
+ var useHandleOutsideClick_default = useHandleOutsideClick;
41
+ //# sourceMappingURL=useHandleOutsideClick.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/visualBuilder/components/FieldRevert/useHandleOutsideClick.ts"],"sourcesContent":["import { useEffect } from \"preact/compat\";\n\nconst useHandleOutsideClick = (\n ref: React.RefObject<HTMLElement>,\n callback: () => void\n) => {\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (ref.current && !ref.current.contains(event.target as Node)) {\n callback();\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [ref, callback]);\n};\n\nexport default useHandleOutsideClick;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAA0B;AAE1B,IAAM,wBAAwB,CAC1B,KACA,aACC;AACD,+BAAU,MAAM;AACZ,UAAM,qBAAqB,CAAC,UAAsB;AAC9C,UAAI,IAAI,WAAW,CAAC,IAAI,QAAQ,SAAS,MAAM,MAAc,GAAG;AAC5D,iBAAS;AAAA,MACb;AAAA,IACJ;AAEA,aAAS,iBAAiB,aAAa,kBAAkB;AACzD,WAAO,MAAM;AACT,eAAS,oBAAoB,aAAa,kBAAkB;AAAA,IAChE;AAAA,EACJ,GAAG,CAAC,KAAK,QAAQ,CAAC;AACtB;AAEA,IAAO,gCAAQ;","names":[]}
@@ -0,0 +1,3 @@
1
+ declare const useHandleOutsideClick: (ref: React.RefObject<HTMLElement>, callback: () => void) => void;
2
+
3
+ export { useHandleOutsideClick as default };
@@ -0,0 +1,3 @@
1
+ declare const useHandleOutsideClick: (ref: React.RefObject<HTMLElement>, callback: () => void) => void;
2
+
3
+ export { useHandleOutsideClick as default };
@@ -0,0 +1,22 @@
1
+ import "../../../chunk-5WRI5ZAA.js";
2
+
3
+ // src/visualBuilder/components/FieldRevert/useHandleOutsideClick.ts
4
+ import { useEffect } from "preact/compat";
5
+ var useHandleOutsideClick = (ref, callback) => {
6
+ useEffect(() => {
7
+ const handleClickOutside = (event) => {
8
+ if (ref.current && !ref.current.contains(event.target)) {
9
+ callback();
10
+ }
11
+ };
12
+ document.addEventListener("mousedown", handleClickOutside);
13
+ return () => {
14
+ document.removeEventListener("mousedown", handleClickOutside);
15
+ };
16
+ }, [ref, callback]);
17
+ };
18
+ var useHandleOutsideClick_default = useHandleOutsideClick;
19
+ export {
20
+ useHandleOutsideClick_default as default
21
+ };
22
+ //# sourceMappingURL=useHandleOutsideClick.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/visualBuilder/components/FieldRevert/useHandleOutsideClick.ts"],"sourcesContent":["import { useEffect } from \"preact/compat\";\n\nconst useHandleOutsideClick = (\n ref: React.RefObject<HTMLElement>,\n callback: () => void\n) => {\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (ref.current && !ref.current.contains(event.target as Node)) {\n callback();\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [ref, callback]);\n};\n\nexport default useHandleOutsideClick;\n"],"mappings":";;;AAAA,SAAS,iBAAiB;AAE1B,IAAM,wBAAwB,CAC1B,KACA,aACC;AACD,YAAU,MAAM;AACZ,UAAM,qBAAqB,CAAC,UAAsB;AAC9C,UAAI,IAAI,WAAW,CAAC,IAAI,QAAQ,SAAS,MAAM,MAAc,GAAG;AAC5D,iBAAS;AAAA,MACb;AAAA,IACJ;AAEA,aAAS,iBAAiB,aAAa,kBAAkB;AACzD,WAAO,MAAM;AACT,eAAS,oBAAoB,aAAa,kBAAkB;AAAA,IAChE;AAAA,EACJ,GAAG,CAAC,KAAK,QAAQ,CAAC;AACtB;AAEA,IAAO,gCAAQ;","names":[]}