@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
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/visualBuilder/components/FieldToolbar.tsx"],"sourcesContent":["import { useSignal } from \"@preact/signals\";\nimport { CslpData } from \"../../cslp/types/cslp.types\";\nimport getChildrenDirection from \"../utils/getChildrenDirection\";\nimport {\n ALLOWED_MODAL_EDITABLE_FIELD,\n ALLOWED_REPLACE_FIELDS,\n DEFAULT_MULTIPLE_FIELDS,\n} from \"../utils/constants\";\nimport { getFieldType } from \"../utils/getFieldType\";\nimport {\n handleDeleteInstance,\n handleMoveInstance,\n} from \"../utils/instanceHandlers\";\nimport visualBuilderPostMessage from \"../utils/visualBuilderPostMessage\";\nimport { FieldDataType, ISchemaFieldMap } from \"../utils/types/index.types\";\nimport { VisualBuilderPostMessageEvents } from \"../utils/types/postMessage.types\";\nimport {\n CaretIcon,\n DeleteIcon,\n MoveLeftIcon,\n MoveRightIcon,\n ReplaceAssetIcon,\n} from \"./icons\";\nimport { fieldIcons } from \"./icons/fields\";\nimport classNames from \"classnames\";\nimport { visualBuilderStyles } from \"../visualBuilder.style\";\nimport CommentIcon from \"./CommentIcon\";\nimport React, { useEffect, useState } from \"preact/compat\";\nimport { FieldSchemaMap } from \"../utils/fieldSchemaMap\";\nimport { isFieldDisabled } from \"../utils/isFieldDisabled\";\nimport { IReferenceContentTypeSchema } from \"../../cms/types/contentTypeSchema.types\";\nimport { VisualBuilderCslpEventDetails } from \"../types/visualBuilder.types\";\nimport { FormIcon } from \"./icons\";\nimport { getDOMEditStack } from \"../utils/getCsDataOfElement\";\nimport { VariantIcon } from \"./icons/variant\";\nimport {\n BASE_VARIANT_STATUS,\n FieldRevertComponent,\n getFieldVariantStatus,\n IVariantStatus,\n} from \"./FieldRevert/FieldRevertComponent\";\n\nexport type FieldDetails = Pick<VisualBuilderCslpEventDetails, \"editableElement\" | \"fieldMetadata\">;\n\nconst TOOLTIP_TOP_EDGE_BUFFER = 96;\n\ninterface MultipleFieldToolbarProps {\n eventDetails: VisualBuilderCslpEventDetails;\n hideOverlay: () => void;\n};\n\nfunction handleReplaceAsset(fieldMetadata: CslpData) {\n // TODO avoid sending whole fieldMetadata\n visualBuilderPostMessage?.send(\n VisualBuilderPostMessageEvents.OPEN_ASSET_MODAL,\n {\n fieldMetadata,\n }\n );\n}\n\nfunction handleReplaceReference(fieldMetadata: CslpData) {\n const isMultipleInstance =\n fieldMetadata.multipleFieldMetadata.index > -1 &&\n fieldMetadata.fieldPathWithIndex ===\n fieldMetadata.multipleFieldMetadata.parentDetails?.parentPath;\n const entryPath = isMultipleInstance\n ? fieldMetadata.instance.fieldPathWithIndex\n : fieldMetadata.fieldPathWithIndex;\n\n visualBuilderPostMessage?.send(\n VisualBuilderPostMessageEvents.OPEN_REFERENCE_MODAL,\n {\n entry_uid: fieldMetadata.entry_uid,\n content_type_uid: fieldMetadata.content_type_uid,\n locale: fieldMetadata.locale,\n fieldPath: fieldMetadata.fieldPath,\n fieldPathWithIndex: fieldMetadata.fieldPathWithIndex,\n entryPath,\n }\n );\n}\n\nfunction handleEdit(fieldMetadata: CslpData) {\n visualBuilderPostMessage?.send(\n VisualBuilderPostMessageEvents.OPEN_FIELD_EDIT_MODAL,\n { fieldMetadata }\n );\n}\n\nfunction handleFormFieldFocus(eventDetails: VisualBuilderCslpEventDetails) {\n const { editableElement, fieldMetadata, cslpData } = eventDetails;\n visualBuilderPostMessage?.send(\n VisualBuilderPostMessageEvents.TOGGLE_FORM,\n {\n fieldMetadata,\n cslpData,\n }\n ).then(() => {\n visualBuilderPostMessage?.send(VisualBuilderPostMessageEvents.FOCUS_FIELD, {\n DOMEditStack: getDOMEditStack(editableElement),\n });\n });\n}\n\nfunction FieldToolbarComponent(\n props: MultipleFieldToolbarProps\n): JSX.Element | null {\n const { eventDetails } = props;\n const { fieldMetadata, editableElement: targetElement } = eventDetails;\n const direction = useSignal(\"\");\n const parentPath =\n fieldMetadata?.multipleFieldMetadata?.parentDetails?.parentCslpValue ||\n \"\";\n const isVariant = !!fieldMetadata?.variant;\n const [fieldSchema, setFieldSchema] = useState<ISchemaFieldMap | null>(\n null\n );\n const [fieldVariantStatus, setFieldVariantStatus] =\n useState<IVariantStatus>(BASE_VARIANT_STATUS);\n const [isOpenVariantRevert, setIsOpenVariantRevert] =\n useState<boolean>(false);\n\n let isModalEditable = false;\n let isReplaceAllowed = false;\n let isMultiple = false;\n let Icon = null;\n let fieldType = null;\n let isWholeMultipleField = false;\n\n if(fieldSchema) {\n const { isDisabled } = isFieldDisabled(\n fieldSchema,\n {\n editableElement: targetElement,\n fieldMetadata\n }\n );\n\n // field is disabled, no actions needed\n if (isDisabled) {\n return null;\n }\n\n fieldType = getFieldType(fieldSchema);\n isModalEditable = ALLOWED_MODAL_EDITABLE_FIELD.includes(fieldType);\n isReplaceAllowed = ALLOWED_REPLACE_FIELDS.includes(fieldType);\n\n Icon = fieldIcons[fieldType];\n\n isMultiple = fieldSchema.multiple || false;\n if(fieldType === FieldDataType.REFERENCE)\n isMultiple = (fieldSchema as IReferenceContentTypeSchema).field_metadata.ref_multiple;\n\n // field is multiple but an instance is not selected\n // instead the whole field (all instances) is selected.\n // Currently, when whole featured_blogs is selected in canvas,\n // the fieldPathWithIndex and instance.fieldPathWithIndex are the same\n // cannot rely on -1 index, as the non-negative index then refers to the index of\n // the featured_blogs block in page_components\n // It is not needed except taxanomy.\n isWholeMultipleField = isMultiple &&\n (fieldMetadata.fieldPathWithIndex ===\n fieldMetadata.instance.fieldPathWithIndex ||\n fieldMetadata.multipleFieldMetadata?.index === -1);\n\n if (DEFAULT_MULTIPLE_FIELDS.includes(fieldType) && isWholeMultipleField) {\n return null;\n }\n }\n\n direction.value = getChildrenDirection(targetElement, parentPath);\n\n const invertTooltipPosition =\n targetElement.getBoundingClientRect().top <= TOOLTIP_TOP_EDGE_BUFFER;\n\n const editButton = Icon ? (\n <button\n data-testid=\"visual-builder__focused-toolbar__multiple-field-toolbar__edit-button\"\n className={classNames(\n \"visual-builder__button visual-builder__button--secondary visual-builder__button--edit\",\n visualBuilderStyles()[\"visual-builder__button\"],\n visualBuilderStyles()[\"visual-builder__button--secondary\"],\n visualBuilderStyles()[\"visual-builder__button--edit\"],\n visualBuilderStyles()[\"visual-builder__tooltip\"],\n {\n \"visual-builder__tooltip--bottom\": invertTooltipPosition,\n [visualBuilderStyles()[\"visual-builder__tooltip--bottom\"]]:\n invertTooltipPosition,\n }\n )}\n data-tooltip={\"Edit\"}\n onClick={(e) => {\n // TODO the listener for field path is attached to the common parent requiring\n // propagation to be stopped, should ideally only attach onClick to fieldpath dropdown\n e.preventDefault();\n e.stopPropagation();\n handleEdit(fieldMetadata);\n }}\n >\n <Icon />\n </button>\n ) : null;\n\n const replaceButton = fieldType ? (\n <button\n className={classNames(\n \"visual-builder__replace-button 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 data-tooltip={\"Replace\"}\n data-testid={`visual-builder-replace-${fieldType}`}\n onClick={(e) => {\n e.stopPropagation();\n e.preventDefault();\n if (fieldType === FieldDataType.REFERENCE) {\n handleReplaceReference(fieldMetadata);\n return;\n } else if (fieldType === FieldDataType.FILE) {\n handleReplaceAsset(fieldMetadata);\n return;\n }\n }}\n >\n <ReplaceAssetIcon />\n </button>\n ) : null;\n\n const formButton = (\n <button\n className={classNames(\n \"visual-builder__replace-button 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 data-tooltip={\"Form\"}\n data-testid={`visual-builder-form`}\n onClick={(e) => {\n handleFormFieldFocus(eventDetails);\n }}\n >\n <FormIcon />\n </button>\n );\n\n const toggleVariantDropdown = () => {\n setIsOpenVariantRevert(!isOpenVariantRevert);\n };\n\n const closeVariantDropdown = () => {\n setIsOpenVariantRevert(false);\n };\n\n const variantButton = (\n <button\n className={classNames(\n \"visual-builder__variant-button visual-builder__button visual-builder__button--secondary\",\n visualBuilderStyles()[\"visual-builder__button\"],\n visualBuilderStyles()[\"visual-builder__button--secondary\"],\n visualBuilderStyles()[\"visual-builder__tooltip\"],\n visualBuilderStyles()[\"visual-builder__variant-button\"],\n {\n \"visual-builder__tooltip--bottom\": invertTooltipPosition,\n [visualBuilderStyles()[\"visual-builder__tooltip--bottom\"]]:\n invertTooltipPosition,\n }\n )}\n data-tooltip={\"Variant Revert\"}\n data-testid={`visual-builder-canvas-variant-revert`}\n onClick={toggleVariantDropdown}\n >\n <VariantIcon />\n <CaretIcon open={isOpenVariantRevert} />\n </button>\n );\n\n const totalElementCount = targetElement?.parentNode?.childElementCount ?? 1;\n const indexOfElement = fieldMetadata?.multipleFieldMetadata?.index;\n\n const disableMoveLeft = indexOfElement === 0; // first element\n const disableMoveRight = indexOfElement === totalElementCount - 1; // last element\n\n useEffect(() => {\n async function fetchFieldSchema() {\n const fieldSchema = await FieldSchemaMap.getFieldSchema(\n fieldMetadata.content_type_uid,\n fieldMetadata.fieldPath\n );\n if (fieldSchema) {\n setFieldSchema(fieldSchema);\n }\n const variantStatus = await getFieldVariantStatus(\n fieldMetadata.fieldPathWithIndex\n );\n setFieldVariantStatus(variantStatus ?? BASE_VARIANT_STATUS);\n }\n fetchFieldSchema();\n }, [fieldMetadata]);\n\n useEffect(() => {\n visualBuilderPostMessage?.on(VisualBuilderPostMessageEvents.DELETE_INSTANCE, (args: { data: { path: string } }) => {\n if(args.data?.path === fieldMetadata.instance.fieldPathWithIndex){\n props.hideOverlay()\n }\n })\n }, [])\n\n const multipleFieldToolbarButtonClasses = 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 return (\n <div\n className={classNames(\n \"visual-builder__field-toolbar-container\",\n visualBuilderStyles()[\"visual-builder__field-toolbar-container\"]\n )}\n >\n {isVariant && (\n <FieldRevertComponent\n fieldDataName={fieldMetadata.fieldPathWithIndex}\n fieldMetadata={fieldMetadata}\n variantStatus={fieldVariantStatus}\n isOpen={isOpenVariantRevert}\n closeDropdown={closeVariantDropdown}\n />\n )}\n <div\n className={classNames(\n \"visual-builder__focused-toolbar__multiple-field-toolbar\",\n visualBuilderStyles()[\n \"visual-builder__focused-toolbar__multiple-field-toolbar\"\n ]\n )}\n data-testid=\"visual-builder__focused-toolbar__multiple-field-toolbar\"\n >\n <div\n className={classNames(\n \"visual-builder__focused-toolbar__button-group\",\n visualBuilderStyles()[\n \"visual-builder__focused-toolbar__button-group\"\n ]\n )}\n >\n <>\n {isVariant ? variantButton : null}\n {isMultiple && !isWholeMultipleField ? (\n <>\n <button\n data-testid=\"visual-builder__focused-toolbar__multiple-field-toolbar__move-left-button\"\n className={\n multipleFieldToolbarButtonClasses\n }\n data-tooltip={\n direction.value === \"vertical\"\n ? \"Move up\"\n : \"Move left\"\n }\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n handleMoveInstance(\n fieldMetadata,\n \"previous\"\n );\n }}\n disabled={disableMoveLeft}\n >\n <MoveLeftIcon\n className={classNames({\n \"visual-builder__rotate--90\":\n direction.value === \"vertical\",\n [visualBuilderStyles()[\n \"visual-builder__rotate--90\"\n ]]: direction.value === \"vertical\",\n })}\n disabled={disableMoveLeft}\n />\n </button>\n\n <button\n data-testid=\"visual-builder__focused-toolbar__multiple-field-toolbar__move-right-button\"\n className={\n multipleFieldToolbarButtonClasses\n }\n data-tooltip={\n direction.value === \"vertical\"\n ? \"Move down\"\n : \"Move right\"\n }\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n handleMoveInstance(\n fieldMetadata,\n \"next\"\n );\n }}\n disabled={disableMoveRight}\n >\n <MoveRightIcon\n className={classNames({\n \"visual-builder__rotate--90\":\n direction.value === \"vertical\",\n [visualBuilderStyles()[\n \"visual-builder__rotate--90\"\n ]]: direction.value === \"vertical\",\n })}\n disabled={disableMoveRight}\n />\n </button>\n\n {isModalEditable ? editButton : null}\n {formButton}\n {isReplaceAllowed ? replaceButton : null}\n\n <button\n data-testid=\"visual-builder__focused-toolbar__multiple-field-toolbar__delete-button\"\n className={\n multipleFieldToolbarButtonClasses\n }\n data-tooltip={\"Delete\"}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n handleDeleteInstance(fieldMetadata);\n }}\n >\n <DeleteIcon />\n </button>\n </>\n ) : (\n <>\n {isModalEditable ? editButton : null}\n {isReplaceAllowed ? replaceButton : null}\n {formButton}\n {fieldSchema ? (\n <CommentIcon\n fieldMetadata={fieldMetadata}\n fieldSchema={fieldSchema}\n invertTooltipPosition={\n invertTooltipPosition\n }\n />\n ) : null}\n </>\n )}\n </>\n </div>\n </div>\n </div>\n );\n}\n\nexport default FieldToolbarComponent;\n"],"mappings":"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","names":["import_icons","visualBuilderPostMessage","getChildrenDirection","classNames","fieldSchema","CommentIcon"]}
1
+ {"version":3,"sources":["../../../../src/visualBuilder/components/FieldToolbar.tsx"],"sourcesContent":["import { CslpData } from \"../../cslp/types/cslp.types\";\nimport getChildrenDirection from \"../utils/getChildrenDirection\";\nimport {\n ALLOWED_MODAL_EDITABLE_FIELD,\n ALLOWED_REPLACE_FIELDS,\n DEFAULT_MULTIPLE_FIELDS,\n} from \"../utils/constants\";\nimport { getFieldType } from \"../utils/getFieldType\";\nimport {\n handleDeleteInstance,\n handleMoveInstance,\n} from \"../utils/instanceHandlers\";\nimport visualBuilderPostMessage from \"../utils/visualBuilderPostMessage\";\nimport { FieldDataType, ISchemaFieldMap } from \"../utils/types/index.types\";\nimport { VisualBuilderPostMessageEvents } from \"../utils/types/postMessage.types\";\nimport {\n CaretIcon,\n DeleteIcon,\n MoveLeftIcon,\n MoveRightIcon,\n ReplaceAssetIcon,\n} from \"./icons\";\nimport { fieldIcons } from \"./icons/fields\";\nimport classNames from \"classnames\";\nimport { visualBuilderStyles } from \"../visualBuilder.style\";\nimport CommentIcon from \"./CommentIcon\";\nimport React, { useEffect, useState } from \"preact/compat\";\nimport { FieldSchemaMap } from \"../utils/fieldSchemaMap\";\nimport { isFieldDisabled } from \"../utils/isFieldDisabled\";\nimport { IReferenceContentTypeSchema } from \"../../cms/types/contentTypeSchema.types\";\nimport { VisualBuilderCslpEventDetails } from \"../types/visualBuilder.types\";\nimport { FormIcon } from \"./icons\";\nimport { getDOMEditStack } from \"../utils/getCsDataOfElement\";\nimport { VariantIcon } from \"./icons/variant\";\nimport {\n BASE_VARIANT_STATUS,\n FieldRevertComponent,\n getFieldVariantStatus,\n IVariantStatus,\n VariantRevertDropdown,\n} from \"./FieldRevert/FieldRevertComponent\";\n\nexport type FieldDetails = Pick<\n VisualBuilderCslpEventDetails,\n \"editableElement\" | \"fieldMetadata\"\n>;\n\nconst TOOLTIP_TOP_EDGE_BUFFER = 96;\n\ninterface MultipleFieldToolbarProps {\n eventDetails: VisualBuilderCslpEventDetails;\n hideOverlay: () => void;\n}\n\nfunction handleReplaceAsset(fieldMetadata: CslpData) {\n // TODO avoid sending whole fieldMetadata\n visualBuilderPostMessage?.send(\n VisualBuilderPostMessageEvents.OPEN_ASSET_MODAL,\n {\n fieldMetadata,\n }\n );\n}\n\nfunction handleReplaceReference(fieldMetadata: CslpData) {\n const isMultipleInstance =\n fieldMetadata.multipleFieldMetadata.index > -1 &&\n fieldMetadata.fieldPathWithIndex ===\n fieldMetadata.multipleFieldMetadata.parentDetails?.parentPath;\n const entryPath = isMultipleInstance\n ? fieldMetadata.instance.fieldPathWithIndex\n : fieldMetadata.fieldPathWithIndex;\n\n visualBuilderPostMessage?.send(\n VisualBuilderPostMessageEvents.OPEN_REFERENCE_MODAL,\n {\n entry_uid: fieldMetadata.entry_uid,\n content_type_uid: fieldMetadata.content_type_uid,\n locale: fieldMetadata.locale,\n fieldPath: fieldMetadata.fieldPath,\n fieldPathWithIndex: fieldMetadata.fieldPathWithIndex,\n entryPath,\n }\n );\n}\n\nfunction handleEdit(fieldMetadata: CslpData) {\n visualBuilderPostMessage?.send(\n VisualBuilderPostMessageEvents.OPEN_FIELD_EDIT_MODAL,\n { fieldMetadata }\n );\n}\n\nfunction handleFormFieldFocus(eventDetails: VisualBuilderCslpEventDetails) {\n const { editableElement, fieldMetadata, cslpData } = eventDetails;\n visualBuilderPostMessage\n ?.send(VisualBuilderPostMessageEvents.TOGGLE_FORM, {\n fieldMetadata,\n cslpData,\n })\n .then(() => {\n visualBuilderPostMessage?.send(\n VisualBuilderPostMessageEvents.FOCUS_FIELD,\n {\n DOMEditStack: getDOMEditStack(editableElement),\n }\n );\n });\n}\n\nfunction FieldToolbarComponent(\n props: MultipleFieldToolbarProps\n): JSX.Element | null {\n const { eventDetails } = props;\n const { fieldMetadata, editableElement: targetElement } = eventDetails;\n\n const parentPath =\n fieldMetadata?.multipleFieldMetadata?.parentDetails?.parentCslpValue ||\n \"\";\n const direction = getChildrenDirection(targetElement, parentPath);\n const isVariant = !!fieldMetadata?.variant;\n const [fieldSchema, setFieldSchema] = useState<ISchemaFieldMap | null>(\n null\n );\n const [fieldVariantStatus, setFieldVariantStatus] =\n useState<IVariantStatus>(BASE_VARIANT_STATUS);\n const [isOpenVariantRevert, setIsOpenVariantRevert] =\n useState<boolean>(false);\n\n let isModalEditable = false;\n let isReplaceAllowed = false;\n let isMultiple = false;\n let Icon = null;\n let fieldType = null;\n let isWholeMultipleField = false;\n\n if (fieldSchema) {\n const { isDisabled } = isFieldDisabled(fieldSchema, {\n editableElement: targetElement,\n fieldMetadata,\n });\n\n // field is disabled, no actions needed\n if (isDisabled) {\n return null;\n }\n\n fieldType = getFieldType(fieldSchema);\n isModalEditable = ALLOWED_MODAL_EDITABLE_FIELD.includes(fieldType);\n isReplaceAllowed = ALLOWED_REPLACE_FIELDS.includes(fieldType);\n\n Icon = fieldIcons[fieldType];\n\n isMultiple = fieldSchema.multiple || false;\n if (fieldType === FieldDataType.REFERENCE)\n isMultiple = (fieldSchema as IReferenceContentTypeSchema)\n .field_metadata.ref_multiple;\n\n // field is multiple but an instance is not selected\n // instead the whole field (all instances) is selected.\n // Currently, when whole featured_blogs is selected in canvas,\n // the fieldPathWithIndex and instance.fieldPathWithIndex are the same\n // cannot rely on -1 index, as the non-negative index then refers to the index of\n // the featured_blogs block in page_components\n // It is not needed except taxanomy.\n isWholeMultipleField =\n isMultiple &&\n (fieldMetadata.fieldPathWithIndex ===\n fieldMetadata.instance.fieldPathWithIndex ||\n fieldMetadata.multipleFieldMetadata?.index === -1);\n\n if (\n DEFAULT_MULTIPLE_FIELDS.includes(fieldType) &&\n isWholeMultipleField\n ) {\n return null;\n }\n }\n\n const invertTooltipPosition =\n targetElement.getBoundingClientRect().top <= TOOLTIP_TOP_EDGE_BUFFER;\n\n const editButton = Icon ? (\n <button\n data-testid=\"visual-builder__focused-toolbar__multiple-field-toolbar__edit-button\"\n className={classNames(\n \"visual-builder__button visual-builder__button--secondary visual-builder__button--edit\",\n visualBuilderStyles()[\"visual-builder__button\"],\n visualBuilderStyles()[\"visual-builder__button--secondary\"],\n visualBuilderStyles()[\"visual-builder__button--edit\"],\n visualBuilderStyles()[\"visual-builder__tooltip\"],\n {\n \"visual-builder__tooltip--bottom\": invertTooltipPosition,\n [visualBuilderStyles()[\"visual-builder__tooltip--bottom\"]]:\n invertTooltipPosition,\n }\n )}\n data-tooltip={\"Edit\"}\n onClick={(e) => {\n // TODO the listener for field path is attached to the common parent requiring\n // propagation to be stopped, should ideally only attach onClick to fieldpath dropdown\n e.preventDefault();\n e.stopPropagation();\n handleEdit(fieldMetadata);\n }}\n >\n <Icon />\n </button>\n ) : null;\n\n const replaceButton = fieldType ? (\n <button\n className={classNames(\n \"visual-builder__replace-button 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 data-tooltip={\"Replace\"}\n data-testid={`visual-builder-replace-${fieldType}`}\n onClick={(e) => {\n e.stopPropagation();\n e.preventDefault();\n if (fieldType === FieldDataType.REFERENCE) {\n handleReplaceReference(fieldMetadata);\n return;\n } else if (fieldType === FieldDataType.FILE) {\n handleReplaceAsset(fieldMetadata);\n return;\n }\n }}\n >\n <ReplaceAssetIcon />\n </button>\n ) : null;\n\n const formButton = (\n <button\n className={classNames(\n \"visual-builder__replace-button 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 data-tooltip={\"Form\"}\n data-testid={`visual-builder-form`}\n onClick={(e) => {\n handleFormFieldFocus(eventDetails);\n }}\n >\n <FormIcon />\n </button>\n );\n\n const toggleVariantDropdown = () => {\n setIsOpenVariantRevert(!isOpenVariantRevert);\n };\n\n const closeVariantDropdown = () => {\n setIsOpenVariantRevert(false);\n };\n\n const variantButton = (\n <button\n className={classNames(\n \"visual-builder__variant-button visual-builder__button visual-builder__button--secondary\",\n visualBuilderStyles()[\"visual-builder__button\"],\n visualBuilderStyles()[\"visual-builder__button--secondary\"],\n visualBuilderStyles()[\"visual-builder__tooltip\"],\n visualBuilderStyles()[\"visual-builder__variant-button\"],\n {\n \"visual-builder__tooltip--bottom\": invertTooltipPosition,\n [visualBuilderStyles()[\"visual-builder__tooltip--bottom\"]]:\n invertTooltipPosition,\n }\n )}\n data-tooltip={\"Variant Revert\"}\n data-testid={`visual-builder-canvas-variant-revert`}\n onClick={toggleVariantDropdown}\n >\n <VariantIcon />\n <CaretIcon open={isOpenVariantRevert} />\n </button>\n );\n\n const totalElementCount = targetElement?.parentNode?.childElementCount ?? 1;\n const indexOfElement = fieldMetadata?.multipleFieldMetadata?.index;\n\n const disableMoveLeft = indexOfElement === 0; // first element\n const disableMoveRight = indexOfElement === totalElementCount - 1; // last element\n\n useEffect(() => {\n async function fetchFieldSchema() {\n const fieldSchema = await FieldSchemaMap.getFieldSchema(\n fieldMetadata.content_type_uid,\n fieldMetadata.fieldPath\n );\n if (fieldSchema) {\n setFieldSchema(fieldSchema);\n }\n const variantStatus = await getFieldVariantStatus(fieldMetadata);\n setFieldVariantStatus(variantStatus ?? BASE_VARIANT_STATUS);\n }\n fetchFieldSchema();\n }, [fieldMetadata]);\n\n useEffect(() => {\n const event = visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.DELETE_INSTANCE,\n (args: { data: { path: string } }) => {\n if (\n args.data?.path ===\n fieldMetadata.instance.fieldPathWithIndex\n ) {\n props.hideOverlay();\n }\n }\n );\n return () => {\n event?.unregister();\n };\n }, []);\n\n const multipleFieldToolbarButtonClasses = 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 return (\n <div\n className={classNames(\n \"visual-builder__field-toolbar-container\",\n visualBuilderStyles()[\"visual-builder__field-toolbar-container\"]\n )}\n >\n <div\n className={classNames(\n \"visual-builder__focused-toolbar__multiple-field-toolbar\",\n visualBuilderStyles()[\n \"visual-builder__focused-toolbar__multiple-field-toolbar\"\n ]\n )}\n data-testid=\"visual-builder__focused-toolbar__multiple-field-toolbar\"\n >\n <div\n className={classNames(\n \"visual-builder__focused-toolbar__button-group\",\n visualBuilderStyles()[\n \"visual-builder__focused-toolbar__button-group\"\n ]\n )}\n >\n <>\n {isVariant ? (\n <VariantRevertDropdown\n fieldDataName={fieldMetadata.fieldPathWithIndex}\n fieldMetadata={fieldMetadata}\n variantStatus={fieldVariantStatus}\n isOpen={isOpenVariantRevert}\n closeDropdown={closeVariantDropdown}\n invertTooltipPosition={invertTooltipPosition}\n toggleVariantDropdown={toggleVariantDropdown}\n />\n ) : null}\n {isMultiple && !isWholeMultipleField ? (\n <>\n <button\n data-testid=\"visual-builder__focused-toolbar__multiple-field-toolbar__move-left-button\"\n className={\n multipleFieldToolbarButtonClasses\n }\n data-tooltip={\n direction === \"vertical\"\n ? \"Move up\"\n : \"Move left\"\n }\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n handleMoveInstance(\n fieldMetadata,\n \"previous\"\n );\n }}\n disabled={disableMoveLeft}\n >\n <MoveLeftIcon\n className={classNames({\n \"visual-builder__rotate--90\":\n direction === \"vertical\",\n [visualBuilderStyles()[\n \"visual-builder__rotate--90\"\n ]]: direction === \"vertical\",\n })}\n disabled={disableMoveLeft}\n />\n </button>\n\n <button\n data-testid=\"visual-builder__focused-toolbar__multiple-field-toolbar__move-right-button\"\n className={\n multipleFieldToolbarButtonClasses\n }\n data-tooltip={\n direction === \"vertical\"\n ? \"Move down\"\n : \"Move right\"\n }\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n handleMoveInstance(\n fieldMetadata,\n \"next\"\n );\n }}\n disabled={disableMoveRight}\n >\n <MoveRightIcon\n className={classNames({\n \"visual-builder__rotate--90\":\n direction === \"vertical\",\n [visualBuilderStyles()[\n \"visual-builder__rotate--90\"\n ]]: direction === \"vertical\",\n })}\n disabled={disableMoveRight}\n />\n </button>\n\n {isModalEditable ? editButton : null}\n {formButton}\n {isReplaceAllowed ? replaceButton : null}\n\n <button\n data-testid=\"visual-builder__focused-toolbar__multiple-field-toolbar__delete-button\"\n className={\n multipleFieldToolbarButtonClasses\n }\n data-tooltip={\"Delete\"}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n handleDeleteInstance(fieldMetadata);\n }}\n >\n <DeleteIcon />\n </button>\n </>\n ) : (\n <>\n {isModalEditable ? editButton : null}\n {isReplaceAllowed ? replaceButton : null}\n {formButton}\n {fieldSchema ? (\n <CommentIcon\n fieldMetadata={fieldMetadata}\n fieldSchema={fieldSchema}\n invertTooltipPosition={\n invertTooltipPosition\n }\n />\n ) : null}\n </>\n )}\n </>\n </div>\n </div>\n </div>\n );\n}\n\nexport default FieldToolbarComponent;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,kCAAiC;AACjC,uBAIO;AACP,0BAA6B;AAC7B,8BAGO;AACP,sCAAqC;AACrC,mBAA+C;AAC/C,yBAA+C;AAC/C,mBAMO;AACP,oBAA2B;AAC3B,wBAAuB;AACvB,2BAAoC;AACpC,yBAAwB;AACxB,oBAA2C;AAC3C,4BAA+B;AAC/B,6BAAgC;AAGhC,IAAAA,gBAAyB;AACzB,gCAAgC;AAChC,qBAA4B;AAC5B,kCAMO;AAsKK;AA/JZ,IAAM,0BAA0B;AAOhC,SAAS,mBAAmB,eAAyB;AAEjD,kCAAAC,SAA0B;AAAA,IACtB,kDAA+B;AAAA,IAC/B;AAAA,MACI;AAAA,IACJ;AAAA,EACJ;AACJ;AAEA,SAAS,uBAAuB,eAAyB;AACrD,QAAM,qBACF,cAAc,sBAAsB,QAAQ,MAC5C,cAAc,uBACV,cAAc,sBAAsB,eAAe;AAC3D,QAAM,YAAY,qBACZ,cAAc,SAAS,qBACvB,cAAc;AAEpB,kCAAAA,SAA0B;AAAA,IACtB,kDAA+B;AAAA,IAC/B;AAAA,MACI,WAAW,cAAc;AAAA,MACzB,kBAAkB,cAAc;AAAA,MAChC,QAAQ,cAAc;AAAA,MACtB,WAAW,cAAc;AAAA,MACzB,oBAAoB,cAAc;AAAA,MAClC;AAAA,IACJ;AAAA,EACJ;AACJ;AAEA,SAAS,WAAW,eAAyB;AACzC,kCAAAA,SAA0B;AAAA,IACtB,kDAA+B;AAAA,IAC/B,EAAE,cAAc;AAAA,EACpB;AACJ;AAEA,SAAS,qBAAqB,cAA6C;AACvE,QAAM,EAAE,iBAAiB,eAAe,SAAS,IAAI;AACrD,kCAAAA,SACM,KAAK,kDAA+B,aAAa;AAAA,IAC/C;AAAA,IACA;AAAA,EACJ,CAAC,EACA,KAAK,MAAM;AACR,oCAAAA,SAA0B;AAAA,MACtB,kDAA+B;AAAA,MAC/B;AAAA,QACI,kBAAc,2CAAgB,eAAe;AAAA,MACjD;AAAA,IACJ;AAAA,EACJ,CAAC;AACT;AAEA,SAAS,sBACL,OACkB;AAClB,QAAM,EAAE,aAAa,IAAI;AACzB,QAAM,EAAE,eAAe,iBAAiB,cAAc,IAAI;AAE1D,QAAM,aACF,eAAe,uBAAuB,eAAe,mBACrD;AACJ,QAAM,gBAAY,4BAAAC,SAAqB,eAAe,UAAU;AAChE,QAAM,YAAY,CAAC,CAAC,eAAe;AACnC,QAAM,CAAC,aAAa,cAAc,QAAI;AAAA,IAClC;AAAA,EACJ;AACA,QAAM,CAAC,oBAAoB,qBAAqB,QAC5C,wBAAyB,+CAAmB;AAChD,QAAM,CAAC,qBAAqB,sBAAsB,QAC9C,wBAAkB,KAAK;AAE3B,MAAI,kBAAkB;AACtB,MAAI,mBAAmB;AACvB,MAAI,aAAa;AACjB,MAAI,OAAO;AACX,MAAI,YAAY;AAChB,MAAI,uBAAuB;AAE3B,MAAI,aAAa;AACb,UAAM,EAAE,WAAW,QAAI,wCAAgB,aAAa;AAAA,MAChD,iBAAiB;AAAA,MACjB;AAAA,IACJ,CAAC;AAGD,QAAI,YAAY;AACZ,aAAO;AAAA,IACX;AAEA,oBAAY,kCAAa,WAAW;AACpC,sBAAkB,8CAA6B,SAAS,SAAS;AACjE,uBAAmB,wCAAuB,SAAS,SAAS;AAE5D,WAAO,yBAAW,SAAS;AAE3B,iBAAa,YAAY,YAAY;AACrC,QAAI,cAAc,2BAAc;AAC5B,mBAAc,YACT,eAAe;AASxB,2BACI,eACC,cAAc,uBACX,cAAc,SAAS,sBACvB,cAAc,uBAAuB,UAAU;AAEvD,QACI,yCAAwB,SAAS,SAAS,KAC1C,sBACF;AACE,aAAO;AAAA,IACX;AAAA,EACJ;AAEA,QAAM,wBACF,cAAc,sBAAsB,EAAE,OAAO;AAEjD,QAAM,aAAa,OACf;AAAA,IAAC;AAAA;AAAA,MACG,eAAY;AAAA,MACZ,eAAW,kBAAAC;AAAA,QACP;AAAA,YACA,0CAAoB,EAAE,wBAAwB;AAAA,YAC9C,0CAAoB,EAAE,mCAAmC;AAAA,YACzD,0CAAoB,EAAE,8BAA8B;AAAA,YACpD,0CAAoB,EAAE,yBAAyB;AAAA,QAC/C;AAAA,UACI,mCAAmC;AAAA,UACnC,KAAC,0CAAoB,EAAE,iCAAiC,CAAC,GACrD;AAAA,QACR;AAAA,MACJ;AAAA,MACA,gBAAc;AAAA,MACd,SAAS,CAAC,MAAM;AAGZ,UAAE,eAAe;AACjB,UAAE,gBAAgB;AAClB,mBAAW,aAAa;AAAA,MAC5B;AAAA,MAEA,sDAAC,QAAK;AAAA;AAAA,EACV,IACA;AAEJ,QAAM,gBAAgB,YAClB;AAAA,IAAC;AAAA;AAAA,MACG,eAAW,kBAAAA;AAAA,QACP;AAAA,YACA,0CAAoB,EAAE,wBAAwB;AAAA,YAC9C,0CAAoB,EAAE,mCAAmC;AAAA,YACzD,0CAAoB,EAAE,yBAAyB;AAAA,QAC/C;AAAA,UACI,mCAAmC;AAAA,UACnC,KAAC,0CAAoB,EAAE,iCAAiC,CAAC,GACrD;AAAA,QACR;AAAA,MACJ;AAAA,MACA,gBAAc;AAAA,MACd,eAAa,0BAA0B,SAAS;AAAA,MAChD,SAAS,CAAC,MAAM;AACZ,UAAE,gBAAgB;AAClB,UAAE,eAAe;AACjB,YAAI,cAAc,2BAAc,WAAW;AACvC,iCAAuB,aAAa;AACpC;AAAA,QACJ,WAAW,cAAc,2BAAc,MAAM;AACzC,6BAAmB,aAAa;AAChC;AAAA,QACJ;AAAA,MACJ;AAAA,MAEA,sDAAC,iCAAiB;AAAA;AAAA,EACtB,IACA;AAEJ,QAAM,aACF;AAAA,IAAC;AAAA;AAAA,MACG,eAAW,kBAAAA;AAAA,QACP;AAAA,YACA,0CAAoB,EAAE,wBAAwB;AAAA,YAC9C,0CAAoB,EAAE,mCAAmC;AAAA,YACzD,0CAAoB,EAAE,yBAAyB;AAAA,QAC/C;AAAA,UACI,mCAAmC;AAAA,UACnC,KAAC,0CAAoB,EAAE,iCAAiC,CAAC,GACrD;AAAA,QACR;AAAA,MACJ;AAAA,MACA,gBAAc;AAAA,MACd,eAAa;AAAA,MACb,SAAS,CAAC,MAAM;AACZ,6BAAqB,YAAY;AAAA,MACrC;AAAA,MAEA,sDAAC,0BAAS;AAAA;AAAA,EACd;AAGJ,QAAM,wBAAwB,MAAM;AAChC,2BAAuB,CAAC,mBAAmB;AAAA,EAC/C;AAEA,QAAM,uBAAuB,MAAM;AAC/B,2BAAuB,KAAK;AAAA,EAChC;AAEA,QAAM,gBACF;AAAA,IAAC;AAAA;AAAA,MACG,eAAW,kBAAAA;AAAA,QACP;AAAA,YACA,0CAAoB,EAAE,wBAAwB;AAAA,YAC9C,0CAAoB,EAAE,mCAAmC;AAAA,YACzD,0CAAoB,EAAE,yBAAyB;AAAA,YAC/C,0CAAoB,EAAE,gCAAgC;AAAA,QACtD;AAAA,UACI,mCAAmC;AAAA,UACnC,KAAC,0CAAoB,EAAE,iCAAiC,CAAC,GACrD;AAAA,QACR;AAAA,MACJ;AAAA,MACA,gBAAc;AAAA,MACd,eAAa;AAAA,MACb,SAAS;AAAA,MAET;AAAA,oDAAC,8BAAY;AAAA,QACb,4CAAC,0BAAU,MAAM,qBAAqB;AAAA;AAAA;AAAA,EAC1C;AAGJ,QAAM,oBAAoB,eAAe,YAAY,qBAAqB;AAC1E,QAAM,iBAAiB,eAAe,uBAAuB;AAE7D,QAAM,kBAAkB,mBAAmB;AAC3C,QAAM,mBAAmB,mBAAmB,oBAAoB;AAEhE,+BAAU,MAAM;AACZ,mBAAe,mBAAmB;AAC9B,YAAMC,eAAc,MAAM,qCAAe;AAAA,QACrC,cAAc;AAAA,QACd,cAAc;AAAA,MAClB;AACA,UAAIA,cAAa;AACb,uBAAeA,YAAW;AAAA,MAC9B;AACA,YAAM,gBAAgB,UAAM,mDAAsB,aAAa;AAC/D,4BAAsB,iBAAiB,+CAAmB;AAAA,IAC9D;AACA,qBAAiB;AAAA,EACrB,GAAG,CAAC,aAAa,CAAC;AAElB,+BAAU,MAAM;AACZ,UAAM,QAAQ,gCAAAH,SAA0B;AAAA,MACpC,kDAA+B;AAAA,MAC/B,CAAC,SAAqC;AAClC,YACI,KAAK,MAAM,SACX,cAAc,SAAS,oBACzB;AACE,gBAAM,YAAY;AAAA,QACtB;AAAA,MACJ;AAAA,IACJ;AACA,WAAO,MAAM;AACT,aAAO,WAAW;AAAA,IACtB;AAAA,EACJ,GAAG,CAAC,CAAC;AAEL,QAAM,wCAAoC,kBAAAE;AAAA,IACtC;AAAA,QACA,0CAAoB,EAAE,wBAAwB;AAAA,QAC9C,0CAAoB,EAAE,mCAAmC;AAAA,QACzD,0CAAoB,EAAE,yBAAyB;AAAA,IAC/C;AAAA,MACI,mCAAmC;AAAA,MACnC,KAAC,0CAAoB,EAAE,iCAAiC,CAAC,GACrD;AAAA,IACR;AAAA,EACJ;AAEA,SACI;AAAA,IAAC;AAAA;AAAA,MACG,eAAW,kBAAAA;AAAA,QACP;AAAA,YACA,0CAAoB,EAAE,yCAAyC;AAAA,MACnE;AAAA,MAEA;AAAA,QAAC;AAAA;AAAA,UACG,eAAW,kBAAAA;AAAA,YACP;AAAA,gBACA,0CAAoB,EAChB,yDACJ;AAAA,UACJ;AAAA,UACA,eAAY;AAAA,UAEZ;AAAA,YAAC;AAAA;AAAA,cACG,eAAW,kBAAAA;AAAA,gBACP;AAAA,oBACA,0CAAoB,EAChB,+CACJ;AAAA,cACJ;AAAA,cAEA,sFACK;AAAA,4BACG;AAAA,kBAAC;AAAA;AAAA,oBACG,eAAe,cAAc;AAAA,oBAC7B;AAAA,oBACA,eAAe;AAAA,oBACf,QAAQ;AAAA,oBACR,eAAe;AAAA,oBACf;AAAA,oBACA;AAAA;AAAA,gBACJ,IACA;AAAA,gBACH,cAAc,CAAC,uBACZ,4EACI;AAAA;AAAA,oBAAC;AAAA;AAAA,sBACG,eAAY;AAAA,sBACZ,WACI;AAAA,sBAEJ,gBACI,cAAc,aACR,YACA;AAAA,sBAEV,SAAS,CAAC,MAAM;AACZ,0BAAE,eAAe;AACjB,0BAAE,gBAAgB;AAClB;AAAA,0BACI;AAAA,0BACA;AAAA,wBACJ;AAAA,sBACJ;AAAA,sBACA,UAAU;AAAA,sBAEV;AAAA,wBAAC;AAAA;AAAA,0BACG,eAAW,kBAAAA,SAAW;AAAA,4BAClB,8BACI,cAAc;AAAA,4BAClB,KAAC,0CAAoB,EACjB,4BACJ,CAAC,GAAG,cAAc;AAAA,0BACtB,CAAC;AAAA,0BACD,UAAU;AAAA;AAAA,sBACd;AAAA;AAAA,kBACJ;AAAA,kBAEA;AAAA,oBAAC;AAAA;AAAA,sBACG,eAAY;AAAA,sBACZ,WACI;AAAA,sBAEJ,gBACI,cAAc,aACR,cACA;AAAA,sBAEV,SAAS,CAAC,MAAM;AACZ,0BAAE,eAAe;AACjB,0BAAE,gBAAgB;AAClB;AAAA,0BACI;AAAA,0BACA;AAAA,wBACJ;AAAA,sBACJ;AAAA,sBACA,UAAU;AAAA,sBAEV;AAAA,wBAAC;AAAA;AAAA,0BACG,eAAW,kBAAAA,SAAW;AAAA,4BAClB,8BACI,cAAc;AAAA,4BAClB,KAAC,0CAAoB,EACjB,4BACJ,CAAC,GAAG,cAAc;AAAA,0BACtB,CAAC;AAAA,0BACD,UAAU;AAAA;AAAA,sBACd;AAAA;AAAA,kBACJ;AAAA,kBAEC,kBAAkB,aAAa;AAAA,kBAC/B;AAAA,kBACA,mBAAmB,gBAAgB;AAAA,kBAEpC;AAAA,oBAAC;AAAA;AAAA,sBACG,eAAY;AAAA,sBACZ,WACI;AAAA,sBAEJ,gBAAc;AAAA,sBACd,SAAS,CAAC,MAAM;AACZ,0BAAE,eAAe;AACjB,0BAAE,gBAAgB;AAClB,0EAAqB,aAAa;AAAA,sBACtC;AAAA,sBAEA,sDAAC,2BAAW;AAAA;AAAA,kBAChB;AAAA,mBACJ,IAEA,4EACK;AAAA,oCAAkB,aAAa;AAAA,kBAC/B,mBAAmB,gBAAgB;AAAA,kBACnC;AAAA,kBACA,cACG;AAAA,oBAAC,mBAAAE;AAAA,oBAAA;AAAA,sBACG;AAAA,sBACA;AAAA,sBACA;AAAA;AAAA,kBAGJ,IACA;AAAA,mBACR;AAAA,iBAER;AAAA;AAAA,UACJ;AAAA;AAAA,MACJ;AAAA;AAAA,EACJ;AAER;AAEA,IAAO,uBAAQ;","names":["import_icons","visualBuilderPostMessage","getChildrenDirection","classNames","fieldSchema","CommentIcon"]}
@@ -1,7 +1,6 @@
1
1
  import "../../chunk-5WRI5ZAA.js";
2
2
 
3
3
  // src/visualBuilder/components/FieldToolbar.tsx
4
- import { useSignal } from "@preact/signals";
5
4
  import getChildrenDirection from "../utils/getChildrenDirection.js";
6
5
  import {
7
6
  ALLOWED_MODAL_EDITABLE_FIELD,
@@ -35,8 +34,8 @@ import { getDOMEditStack } from "../utils/getCsDataOfElement.js";
35
34
  import { VariantIcon } from "./icons/variant.js";
36
35
  import {
37
36
  BASE_VARIANT_STATUS,
38
- FieldRevertComponent,
39
- getFieldVariantStatus
37
+ getFieldVariantStatus,
38
+ VariantRevertDropdown
40
39
  } from "./FieldRevert/FieldRevertComponent.js";
41
40
  import { Fragment, jsx, jsxs } from "preact/jsx-runtime";
42
41
  var TOOLTIP_TOP_EDGE_BUFFER = 96;
@@ -71,23 +70,23 @@ function handleEdit(fieldMetadata) {
71
70
  }
72
71
  function handleFormFieldFocus(eventDetails) {
73
72
  const { editableElement, fieldMetadata, cslpData } = eventDetails;
74
- visualBuilderPostMessage?.send(
75
- VisualBuilderPostMessageEvents.TOGGLE_FORM,
76
- {
77
- fieldMetadata,
78
- cslpData
79
- }
80
- ).then(() => {
81
- visualBuilderPostMessage?.send(VisualBuilderPostMessageEvents.FOCUS_FIELD, {
82
- DOMEditStack: getDOMEditStack(editableElement)
83
- });
73
+ visualBuilderPostMessage?.send(VisualBuilderPostMessageEvents.TOGGLE_FORM, {
74
+ fieldMetadata,
75
+ cslpData
76
+ }).then(() => {
77
+ visualBuilderPostMessage?.send(
78
+ VisualBuilderPostMessageEvents.FOCUS_FIELD,
79
+ {
80
+ DOMEditStack: getDOMEditStack(editableElement)
81
+ }
82
+ );
84
83
  });
85
84
  }
86
85
  function FieldToolbarComponent(props) {
87
86
  const { eventDetails } = props;
88
87
  const { fieldMetadata, editableElement: targetElement } = eventDetails;
89
- const direction = useSignal("");
90
88
  const parentPath = fieldMetadata?.multipleFieldMetadata?.parentDetails?.parentCslpValue || "";
89
+ const direction = getChildrenDirection(targetElement, parentPath);
91
90
  const isVariant = !!fieldMetadata?.variant;
92
91
  const [fieldSchema, setFieldSchema] = useState(
93
92
  null
@@ -101,13 +100,10 @@ function FieldToolbarComponent(props) {
101
100
  let fieldType = null;
102
101
  let isWholeMultipleField = false;
103
102
  if (fieldSchema) {
104
- const { isDisabled } = isFieldDisabled(
105
- fieldSchema,
106
- {
107
- editableElement: targetElement,
108
- fieldMetadata
109
- }
110
- );
103
+ const { isDisabled } = isFieldDisabled(fieldSchema, {
104
+ editableElement: targetElement,
105
+ fieldMetadata
106
+ });
111
107
  if (isDisabled) {
112
108
  return null;
113
109
  }
@@ -123,7 +119,6 @@ function FieldToolbarComponent(props) {
123
119
  return null;
124
120
  }
125
121
  }
126
- direction.value = getChildrenDirection(targetElement, parentPath);
127
122
  const invertTooltipPosition = targetElement.getBoundingClientRect().top <= TOOLTIP_TOP_EDGE_BUFFER;
128
123
  const editButton = Icon ? /* @__PURE__ */ jsx(
129
124
  "button",
@@ -241,19 +236,23 @@ function FieldToolbarComponent(props) {
241
236
  if (fieldSchema2) {
242
237
  setFieldSchema(fieldSchema2);
243
238
  }
244
- const variantStatus = await getFieldVariantStatus(
245
- fieldMetadata.fieldPathWithIndex
246
- );
239
+ const variantStatus = await getFieldVariantStatus(fieldMetadata);
247
240
  setFieldVariantStatus(variantStatus ?? BASE_VARIANT_STATUS);
248
241
  }
249
242
  fetchFieldSchema();
250
243
  }, [fieldMetadata]);
251
244
  useEffect(() => {
252
- visualBuilderPostMessage?.on(VisualBuilderPostMessageEvents.DELETE_INSTANCE, (args) => {
253
- if (args.data?.path === fieldMetadata.instance.fieldPathWithIndex) {
254
- props.hideOverlay();
245
+ const event = visualBuilderPostMessage?.on(
246
+ VisualBuilderPostMessageEvents.DELETE_INSTANCE,
247
+ (args) => {
248
+ if (args.data?.path === fieldMetadata.instance.fieldPathWithIndex) {
249
+ props.hideOverlay();
250
+ }
255
251
  }
256
- });
252
+ );
253
+ return () => {
254
+ event?.unregister();
255
+ };
257
256
  }, []);
258
257
  const multipleFieldToolbarButtonClasses = classNames(
259
258
  "visual-builder__button visual-builder__button--secondary",
@@ -265,132 +264,131 @@ function FieldToolbarComponent(props) {
265
264
  [visualBuilderStyles()["visual-builder__tooltip--bottom"]]: invertTooltipPosition
266
265
  }
267
266
  );
268
- return /* @__PURE__ */ jsxs(
267
+ return /* @__PURE__ */ jsx(
269
268
  "div",
270
269
  {
271
270
  className: classNames(
272
271
  "visual-builder__field-toolbar-container",
273
272
  visualBuilderStyles()["visual-builder__field-toolbar-container"]
274
273
  ),
275
- children: [
276
- isVariant && /* @__PURE__ */ jsx(
277
- FieldRevertComponent,
278
- {
279
- fieldDataName: fieldMetadata.fieldPathWithIndex,
280
- fieldMetadata,
281
- variantStatus: fieldVariantStatus,
282
- isOpen: isOpenVariantRevert,
283
- closeDropdown: closeVariantDropdown
284
- }
285
- ),
286
- /* @__PURE__ */ jsx(
287
- "div",
288
- {
289
- className: classNames(
290
- "visual-builder__focused-toolbar__multiple-field-toolbar",
291
- visualBuilderStyles()["visual-builder__focused-toolbar__multiple-field-toolbar"]
292
- ),
293
- "data-testid": "visual-builder__focused-toolbar__multiple-field-toolbar",
294
- children: /* @__PURE__ */ jsx(
295
- "div",
296
- {
297
- className: classNames(
298
- "visual-builder__focused-toolbar__button-group",
299
- visualBuilderStyles()["visual-builder__focused-toolbar__button-group"]
300
- ),
301
- children: /* @__PURE__ */ jsxs(Fragment, { children: [
302
- isVariant ? variantButton : null,
303
- isMultiple && !isWholeMultipleField ? /* @__PURE__ */ jsxs(Fragment, { children: [
304
- /* @__PURE__ */ jsx(
305
- "button",
306
- {
307
- "data-testid": "visual-builder__focused-toolbar__multiple-field-toolbar__move-left-button",
308
- className: multipleFieldToolbarButtonClasses,
309
- "data-tooltip": direction.value === "vertical" ? "Move up" : "Move left",
310
- onClick: (e) => {
311
- e.preventDefault();
312
- e.stopPropagation();
313
- handleMoveInstance(
314
- fieldMetadata,
315
- "previous"
316
- );
317
- },
318
- disabled: disableMoveLeft,
319
- children: /* @__PURE__ */ jsx(
320
- MoveLeftIcon,
321
- {
322
- className: classNames({
323
- "visual-builder__rotate--90": direction.value === "vertical",
324
- [visualBuilderStyles()["visual-builder__rotate--90"]]: direction.value === "vertical"
325
- }),
326
- disabled: disableMoveLeft
327
- }
328
- )
329
- }
330
- ),
331
- /* @__PURE__ */ jsx(
332
- "button",
333
- {
334
- "data-testid": "visual-builder__focused-toolbar__multiple-field-toolbar__move-right-button",
335
- className: multipleFieldToolbarButtonClasses,
336
- "data-tooltip": direction.value === "vertical" ? "Move down" : "Move right",
337
- onClick: (e) => {
338
- e.preventDefault();
339
- e.stopPropagation();
340
- handleMoveInstance(
341
- fieldMetadata,
342
- "next"
343
- );
344
- },
345
- disabled: disableMoveRight,
346
- children: /* @__PURE__ */ jsx(
347
- MoveRightIcon,
348
- {
349
- className: classNames({
350
- "visual-builder__rotate--90": direction.value === "vertical",
351
- [visualBuilderStyles()["visual-builder__rotate--90"]]: direction.value === "vertical"
352
- }),
353
- disabled: disableMoveRight
354
- }
355
- )
356
- }
357
- ),
358
- isModalEditable ? editButton : null,
359
- formButton,
360
- isReplaceAllowed ? replaceButton : null,
361
- /* @__PURE__ */ jsx(
362
- "button",
363
- {
364
- "data-testid": "visual-builder__focused-toolbar__multiple-field-toolbar__delete-button",
365
- className: multipleFieldToolbarButtonClasses,
366
- "data-tooltip": "Delete",
367
- onClick: (e) => {
368
- e.preventDefault();
369
- e.stopPropagation();
370
- handleDeleteInstance(fieldMetadata);
371
- },
372
- children: /* @__PURE__ */ jsx(DeleteIcon, {})
373
- }
374
- )
375
- ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
376
- isModalEditable ? editButton : null,
377
- isReplaceAllowed ? replaceButton : null,
378
- formButton,
379
- fieldSchema ? /* @__PURE__ */ jsx(
380
- CommentIcon,
381
- {
382
- fieldMetadata,
383
- fieldSchema,
384
- invertTooltipPosition
385
- }
386
- ) : null
387
- ] })
274
+ children: /* @__PURE__ */ jsx(
275
+ "div",
276
+ {
277
+ className: classNames(
278
+ "visual-builder__focused-toolbar__multiple-field-toolbar",
279
+ visualBuilderStyles()["visual-builder__focused-toolbar__multiple-field-toolbar"]
280
+ ),
281
+ "data-testid": "visual-builder__focused-toolbar__multiple-field-toolbar",
282
+ children: /* @__PURE__ */ jsx(
283
+ "div",
284
+ {
285
+ className: classNames(
286
+ "visual-builder__focused-toolbar__button-group",
287
+ visualBuilderStyles()["visual-builder__focused-toolbar__button-group"]
288
+ ),
289
+ children: /* @__PURE__ */ jsxs(Fragment, { children: [
290
+ isVariant ? /* @__PURE__ */ jsx(
291
+ VariantRevertDropdown,
292
+ {
293
+ fieldDataName: fieldMetadata.fieldPathWithIndex,
294
+ fieldMetadata,
295
+ variantStatus: fieldVariantStatus,
296
+ isOpen: isOpenVariantRevert,
297
+ closeDropdown: closeVariantDropdown,
298
+ invertTooltipPosition,
299
+ toggleVariantDropdown
300
+ }
301
+ ) : null,
302
+ isMultiple && !isWholeMultipleField ? /* @__PURE__ */ jsxs(Fragment, { children: [
303
+ /* @__PURE__ */ jsx(
304
+ "button",
305
+ {
306
+ "data-testid": "visual-builder__focused-toolbar__multiple-field-toolbar__move-left-button",
307
+ className: multipleFieldToolbarButtonClasses,
308
+ "data-tooltip": direction === "vertical" ? "Move up" : "Move left",
309
+ onClick: (e) => {
310
+ e.preventDefault();
311
+ e.stopPropagation();
312
+ handleMoveInstance(
313
+ fieldMetadata,
314
+ "previous"
315
+ );
316
+ },
317
+ disabled: disableMoveLeft,
318
+ children: /* @__PURE__ */ jsx(
319
+ MoveLeftIcon,
320
+ {
321
+ className: classNames({
322
+ "visual-builder__rotate--90": direction === "vertical",
323
+ [visualBuilderStyles()["visual-builder__rotate--90"]]: direction === "vertical"
324
+ }),
325
+ disabled: disableMoveLeft
326
+ }
327
+ )
328
+ }
329
+ ),
330
+ /* @__PURE__ */ jsx(
331
+ "button",
332
+ {
333
+ "data-testid": "visual-builder__focused-toolbar__multiple-field-toolbar__move-right-button",
334
+ className: multipleFieldToolbarButtonClasses,
335
+ "data-tooltip": direction === "vertical" ? "Move down" : "Move right",
336
+ onClick: (e) => {
337
+ e.preventDefault();
338
+ e.stopPropagation();
339
+ handleMoveInstance(
340
+ fieldMetadata,
341
+ "next"
342
+ );
343
+ },
344
+ disabled: disableMoveRight,
345
+ children: /* @__PURE__ */ jsx(
346
+ MoveRightIcon,
347
+ {
348
+ className: classNames({
349
+ "visual-builder__rotate--90": direction === "vertical",
350
+ [visualBuilderStyles()["visual-builder__rotate--90"]]: direction === "vertical"
351
+ }),
352
+ disabled: disableMoveRight
353
+ }
354
+ )
355
+ }
356
+ ),
357
+ isModalEditable ? editButton : null,
358
+ formButton,
359
+ isReplaceAllowed ? replaceButton : null,
360
+ /* @__PURE__ */ jsx(
361
+ "button",
362
+ {
363
+ "data-testid": "visual-builder__focused-toolbar__multiple-field-toolbar__delete-button",
364
+ className: multipleFieldToolbarButtonClasses,
365
+ "data-tooltip": "Delete",
366
+ onClick: (e) => {
367
+ e.preventDefault();
368
+ e.stopPropagation();
369
+ handleDeleteInstance(fieldMetadata);
370
+ },
371
+ children: /* @__PURE__ */ jsx(DeleteIcon, {})
372
+ }
373
+ )
374
+ ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
375
+ isModalEditable ? editButton : null,
376
+ isReplaceAllowed ? replaceButton : null,
377
+ formButton,
378
+ fieldSchema ? /* @__PURE__ */ jsx(
379
+ CommentIcon,
380
+ {
381
+ fieldMetadata,
382
+ fieldSchema,
383
+ invertTooltipPosition
384
+ }
385
+ ) : null
388
386
  ] })
389
- }
390
- )
391
- }
392
- )
393
- ]
387
+ ] })
388
+ }
389
+ )
390
+ }
391
+ )
394
392
  }
395
393
  );
396
394
  }