@contentstack/live-preview-utils 3.2.0-alpha.1 → 3.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/legacy/configManager/config.default.cjs +10 -1
- package/dist/legacy/configManager/config.default.cjs.map +1 -1
- package/dist/legacy/configManager/config.default.js +10 -1
- package/dist/legacy/configManager/config.default.js.map +1 -1
- package/dist/legacy/configManager/handleUserConfig.cjs +7 -3
- package/dist/legacy/configManager/handleUserConfig.cjs.map +1 -1
- package/dist/legacy/configManager/handleUserConfig.js +7 -3
- package/dist/legacy/configManager/handleUserConfig.js.map +1 -1
- package/dist/legacy/index.cjs +45 -1
- package/dist/legacy/index.cjs.map +1 -1
- package/dist/legacy/index.d.cts +16 -2
- package/dist/legacy/index.d.ts +16 -2
- package/dist/legacy/index.js +45 -1
- package/dist/legacy/index.js.map +1 -1
- package/dist/legacy/livePreview/editButton/editButton.cjs +86 -1
- package/dist/legacy/livePreview/editButton/editButton.cjs.map +1 -1
- package/dist/legacy/livePreview/editButton/editButton.d.cts +14 -1
- package/dist/legacy/livePreview/editButton/editButton.d.ts +14 -1
- package/dist/legacy/livePreview/editButton/editButton.js +85 -1
- package/dist/legacy/livePreview/editButton/editButton.js.map +1 -1
- package/dist/legacy/livePreview/eventManager/postMessageEvent.hooks.cjs +1 -1
- package/dist/legacy/livePreview/eventManager/postMessageEvent.hooks.js +1 -1
- package/dist/legacy/logger/logger.cjs +1 -1
- package/dist/legacy/logger/logger.cjs.map +1 -1
- package/dist/legacy/logger/logger.js +1 -1
- package/dist/legacy/logger/logger.js.map +1 -1
- package/dist/legacy/preview/contentstack-live-preview-HOC.cjs +6 -2
- package/dist/legacy/preview/contentstack-live-preview-HOC.cjs.map +1 -1
- package/dist/legacy/preview/contentstack-live-preview-HOC.js +6 -2
- package/dist/legacy/preview/contentstack-live-preview-HOC.js.map +1 -1
- package/dist/legacy/types/types.cjs.map +1 -1
- package/dist/legacy/types/types.d.cts +10 -15
- package/dist/legacy/types/types.d.ts +10 -15
- package/dist/legacy/types/types.js.map +1 -1
- package/dist/legacy/visualBuilder/collab.style.cjs +131 -1
- package/dist/legacy/visualBuilder/collab.style.cjs.map +1 -1
- package/dist/legacy/visualBuilder/collab.style.d.cts +17 -0
- package/dist/legacy/visualBuilder/collab.style.d.ts +17 -0
- package/dist/legacy/visualBuilder/collab.style.js +131 -1
- package/dist/legacy/visualBuilder/collab.style.js.map +1 -1
- package/dist/legacy/visualBuilder/components/Collab/AsyncLoader/AsyncLoader.cjs +70 -0
- package/dist/legacy/visualBuilder/components/Collab/AsyncLoader/AsyncLoader.cjs.map +1 -0
- package/dist/legacy/visualBuilder/components/Collab/AsyncLoader/AsyncLoader.d.cts +12 -0
- package/dist/legacy/visualBuilder/components/Collab/AsyncLoader/AsyncLoader.d.ts +12 -0
- package/dist/legacy/visualBuilder/components/Collab/AsyncLoader/AsyncLoader.js +41 -0
- package/dist/legacy/visualBuilder/components/Collab/AsyncLoader/AsyncLoader.js.map +1 -0
- package/dist/legacy/visualBuilder/components/Collab/Button/Button.cjs +32 -10
- package/dist/legacy/visualBuilder/components/Collab/Button/Button.cjs.map +1 -1
- package/dist/legacy/visualBuilder/components/Collab/Button/Button.d.cts +2 -0
- package/dist/legacy/visualBuilder/components/Collab/Button/Button.d.ts +2 -0
- package/dist/legacy/visualBuilder/components/Collab/Button/Button.js +33 -11
- package/dist/legacy/visualBuilder/components/Collab/Button/Button.js.map +1 -1
- package/dist/legacy/visualBuilder/components/Collab/CollabIndicator.cjs +11 -4
- package/dist/legacy/visualBuilder/components/Collab/CollabIndicator.cjs.map +1 -1
- package/dist/legacy/visualBuilder/components/Collab/CollabIndicator.js +11 -4
- package/dist/legacy/visualBuilder/components/Collab/CollabIndicator.js.map +1 -1
- package/dist/legacy/visualBuilder/components/Collab/Icon/Icon.cjs +6 -1
- package/dist/legacy/visualBuilder/components/Collab/Icon/Icon.cjs.map +1 -1
- package/dist/legacy/visualBuilder/components/Collab/Icon/Icon.d.cts +1 -0
- package/dist/legacy/visualBuilder/components/Collab/Icon/Icon.d.ts +1 -0
- package/dist/legacy/visualBuilder/components/Collab/Icon/Icon.js +6 -1
- package/dist/legacy/visualBuilder/components/Collab/Icon/Icon.js.map +1 -1
- package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/CommentActionBar.cjs +8 -3
- package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/CommentActionBar.cjs.map +1 -1
- package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/CommentActionBar.js +9 -4
- package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/CommentActionBar.js.map +1 -1
- package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/CommentCard.cjs +1 -2
- package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/CommentCard.cjs.map +1 -1
- package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/CommentCard.js +2 -3
- package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/CommentCard.js.map +1 -1
- package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/CommentResolvedText.cjs +2 -5
- package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/CommentResolvedText.cjs.map +1 -1
- package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/CommentResolvedText.js +3 -9
- package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/CommentResolvedText.js.map +1 -1
- package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/CommentTextArea.cjs +98 -57
- package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/CommentTextArea.cjs.map +1 -1
- package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/CommentTextArea.js +98 -57
- package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/CommentTextArea.js.map +1 -1
- package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/ThreadActionBar.cjs +92 -0
- package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/ThreadActionBar.cjs.map +1 -0
- package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/ThreadActionBar.d.cts +13 -0
- package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/ThreadActionBar.d.ts +13 -0
- package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/ThreadActionBar.js +63 -0
- package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/ThreadActionBar.js.map +1 -0
- package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/ThreadFooter.cjs +1 -0
- package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/ThreadFooter.cjs.map +1 -1
- package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/ThreadFooter.js +1 -0
- package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/ThreadFooter.js.map +1 -1
- package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/ThreadHeader.cjs +19 -50
- package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/ThreadHeader.cjs.map +1 -1
- package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/ThreadHeader.js +21 -52
- package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/ThreadHeader.js.map +1 -1
- package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/index.cjs +29 -18
- package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/index.cjs.map +1 -1
- package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/index.js +29 -18
- package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/index.js.map +1 -1
- package/dist/legacy/visualBuilder/components/Collab/Tooltip/Tooltip.cjs +19 -35
- package/dist/legacy/visualBuilder/components/Collab/Tooltip/Tooltip.cjs.map +1 -1
- package/dist/legacy/visualBuilder/components/Collab/Tooltip/Tooltip.js +19 -35
- package/dist/legacy/visualBuilder/components/Collab/Tooltip/Tooltip.js.map +1 -1
- package/dist/legacy/visualBuilder/components/FieldToolbar.cjs +28 -22
- package/dist/legacy/visualBuilder/components/FieldToolbar.cjs.map +1 -1
- package/dist/legacy/visualBuilder/components/FieldToolbar.d.cts +1 -0
- package/dist/legacy/visualBuilder/components/FieldToolbar.d.ts +1 -0
- package/dist/legacy/visualBuilder/components/FieldToolbar.js +29 -24
- package/dist/legacy/visualBuilder/components/FieldToolbar.js.map +1 -1
- package/dist/legacy/visualBuilder/components/addInstanceButton.cjs +39 -11
- package/dist/legacy/visualBuilder/components/addInstanceButton.cjs.map +1 -1
- package/dist/legacy/visualBuilder/components/addInstanceButton.d.cts +5 -0
- package/dist/legacy/visualBuilder/components/addInstanceButton.d.ts +5 -0
- package/dist/legacy/visualBuilder/components/addInstanceButton.js +39 -11
- package/dist/legacy/visualBuilder/components/addInstanceButton.js.map +1 -1
- package/dist/legacy/visualBuilder/components/startEditingButton.cjs +38 -11
- package/dist/legacy/visualBuilder/components/startEditingButton.cjs.map +1 -1
- package/dist/legacy/visualBuilder/components/startEditingButton.d.cts +7 -2
- package/dist/legacy/visualBuilder/components/startEditingButton.d.ts +7 -2
- package/dist/legacy/visualBuilder/components/startEditingButton.js +34 -11
- package/dist/legacy/visualBuilder/components/startEditingButton.js.map +1 -1
- package/dist/legacy/visualBuilder/eventManager/useCollab.cjs +57 -19
- package/dist/legacy/visualBuilder/eventManager/useCollab.cjs.map +1 -1
- package/dist/legacy/visualBuilder/eventManager/useCollab.js +57 -19
- package/dist/legacy/visualBuilder/eventManager/useCollab.js.map +1 -1
- package/dist/legacy/visualBuilder/eventManager/useHideFocusOverlayPostMessageEvent.cjs +7 -2
- package/dist/legacy/visualBuilder/eventManager/useHideFocusOverlayPostMessageEvent.cjs.map +1 -1
- package/dist/legacy/visualBuilder/eventManager/useHideFocusOverlayPostMessageEvent.js +7 -2
- package/dist/legacy/visualBuilder/eventManager/useHideFocusOverlayPostMessageEvent.js.map +1 -1
- package/dist/legacy/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.cjs +59 -4
- package/dist/legacy/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.cjs.map +1 -1
- package/dist/legacy/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.js +59 -4
- package/dist/legacy/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.js.map +1 -1
- package/dist/legacy/visualBuilder/generators/generateAddInstanceButtons.cjs +8 -2
- package/dist/legacy/visualBuilder/generators/generateAddInstanceButtons.cjs.map +1 -1
- package/dist/legacy/visualBuilder/generators/generateAddInstanceButtons.d.cts +9 -3
- package/dist/legacy/visualBuilder/generators/generateAddInstanceButtons.d.ts +9 -3
- package/dist/legacy/visualBuilder/generators/generateAddInstanceButtons.js +8 -2
- package/dist/legacy/visualBuilder/generators/generateAddInstanceButtons.js.map +1 -1
- package/dist/legacy/visualBuilder/generators/generateOverlay.cjs +5 -0
- package/dist/legacy/visualBuilder/generators/generateOverlay.cjs.map +1 -1
- package/dist/legacy/visualBuilder/generators/generateOverlay.js +5 -0
- package/dist/legacy/visualBuilder/generators/generateOverlay.js.map +1 -1
- package/dist/legacy/visualBuilder/generators/generateThread.cjs +103 -18
- package/dist/legacy/visualBuilder/generators/generateThread.cjs.map +1 -1
- package/dist/legacy/visualBuilder/generators/generateThread.d.cts +3 -1
- package/dist/legacy/visualBuilder/generators/generateThread.d.ts +3 -1
- package/dist/legacy/visualBuilder/generators/generateThread.js +101 -17
- package/dist/legacy/visualBuilder/generators/generateThread.js.map +1 -1
- package/dist/legacy/visualBuilder/generators/generateToolbar.cjs +13 -5
- package/dist/legacy/visualBuilder/generators/generateToolbar.cjs.map +1 -1
- package/dist/legacy/visualBuilder/generators/generateToolbar.d.cts +2 -2
- package/dist/legacy/visualBuilder/generators/generateToolbar.d.ts +2 -2
- package/dist/legacy/visualBuilder/generators/generateToolbar.js +13 -5
- package/dist/legacy/visualBuilder/generators/generateToolbar.js.map +1 -1
- package/dist/legacy/visualBuilder/hooks/useCollabOperations.cjs +9 -8
- package/dist/legacy/visualBuilder/hooks/useCollabOperations.cjs.map +1 -1
- package/dist/legacy/visualBuilder/hooks/useCollabOperations.js +9 -8
- package/dist/legacy/visualBuilder/hooks/useCollabOperations.js.map +1 -1
- package/dist/legacy/visualBuilder/hooks/useCommentTextArea.cjs +23 -5
- package/dist/legacy/visualBuilder/hooks/useCommentTextArea.cjs.map +1 -1
- package/dist/legacy/visualBuilder/hooks/useCommentTextArea.d.cts +1 -0
- package/dist/legacy/visualBuilder/hooks/useCommentTextArea.d.ts +1 -0
- package/dist/legacy/visualBuilder/hooks/useCommentTextArea.js +23 -5
- package/dist/legacy/visualBuilder/hooks/useCommentTextArea.js.map +1 -1
- package/dist/legacy/visualBuilder/index.cjs +16 -11
- package/dist/legacy/visualBuilder/index.cjs.map +1 -1
- package/dist/legacy/visualBuilder/index.d.cts +1 -0
- package/dist/legacy/visualBuilder/index.d.ts +1 -0
- package/dist/legacy/visualBuilder/index.js +14 -5
- package/dist/legacy/visualBuilder/index.js.map +1 -1
- package/dist/legacy/visualBuilder/listeners/mouseClick.cjs +93 -20
- package/dist/legacy/visualBuilder/listeners/mouseClick.cjs.map +1 -1
- package/dist/legacy/visualBuilder/listeners/mouseClick.d.cts +4 -1
- package/dist/legacy/visualBuilder/listeners/mouseClick.d.ts +4 -1
- package/dist/legacy/visualBuilder/listeners/mouseClick.js +93 -20
- package/dist/legacy/visualBuilder/listeners/mouseClick.js.map +1 -1
- package/dist/legacy/visualBuilder/listeners/mouseHover.cjs +3 -1
- package/dist/legacy/visualBuilder/listeners/mouseHover.cjs.map +1 -1
- package/dist/legacy/visualBuilder/listeners/mouseHover.js +3 -1
- package/dist/legacy/visualBuilder/listeners/mouseHover.js.map +1 -1
- package/dist/legacy/visualBuilder/types/collab.types.cjs.map +1 -1
- package/dist/legacy/visualBuilder/types/collab.types.d.cts +22 -1
- package/dist/legacy/visualBuilder/types/collab.types.d.ts +22 -1
- package/dist/legacy/visualBuilder/utils/collabUtils.cjs +108 -4
- package/dist/legacy/visualBuilder/utils/collabUtils.cjs.map +1 -1
- package/dist/legacy/visualBuilder/utils/collabUtils.d.cts +25 -1
- package/dist/legacy/visualBuilder/utils/collabUtils.d.ts +25 -1
- package/dist/legacy/visualBuilder/utils/collabUtils.js +103 -4
- package/dist/legacy/visualBuilder/utils/collabUtils.js.map +1 -1
- package/dist/legacy/visualBuilder/utils/enableInlineEditing.cjs +94 -0
- package/dist/legacy/visualBuilder/utils/enableInlineEditing.cjs.map +1 -0
- package/dist/legacy/visualBuilder/utils/enableInlineEditing.d.cts +11 -0
- package/dist/legacy/visualBuilder/utils/enableInlineEditing.d.ts +11 -0
- package/dist/legacy/visualBuilder/utils/enableInlineEditing.js +74 -0
- package/dist/legacy/visualBuilder/utils/enableInlineEditing.js.map +1 -0
- package/dist/legacy/visualBuilder/utils/getChildrenDirection.cjs +8 -0
- package/dist/legacy/visualBuilder/utils/getChildrenDirection.cjs.map +1 -1
- package/dist/legacy/visualBuilder/utils/getChildrenDirection.d.cts +3 -1
- package/dist/legacy/visualBuilder/utils/getChildrenDirection.d.ts +3 -1
- package/dist/legacy/visualBuilder/utils/getChildrenDirection.js +8 -0
- package/dist/legacy/visualBuilder/utils/getChildrenDirection.js.map +1 -1
- package/dist/legacy/visualBuilder/utils/handleFieldMouseDown.cjs +4 -1
- package/dist/legacy/visualBuilder/utils/handleFieldMouseDown.cjs.map +1 -1
- package/dist/legacy/visualBuilder/utils/handleFieldMouseDown.js +4 -1
- package/dist/legacy/visualBuilder/utils/handleFieldMouseDown.js.map +1 -1
- package/dist/legacy/visualBuilder/utils/handleIndividualFields.cjs +24 -112
- package/dist/legacy/visualBuilder/utils/handleIndividualFields.cjs.map +1 -1
- package/dist/legacy/visualBuilder/utils/handleIndividualFields.d.cts +3 -5
- package/dist/legacy/visualBuilder/utils/handleIndividualFields.d.ts +3 -5
- package/dist/legacy/visualBuilder/utils/handleIndividualFields.js +22 -116
- package/dist/legacy/visualBuilder/utils/handleIndividualFields.js.map +1 -1
- package/dist/legacy/visualBuilder/utils/handleInlineEditableField.cjs +81 -0
- package/dist/legacy/visualBuilder/utils/handleInlineEditableField.cjs.map +1 -0
- package/dist/legacy/visualBuilder/utils/handleInlineEditableField.d.cts +16 -0
- package/dist/legacy/visualBuilder/utils/handleInlineEditableField.d.ts +16 -0
- package/dist/legacy/visualBuilder/utils/handleInlineEditableField.js +58 -0
- package/dist/legacy/visualBuilder/utils/handleInlineEditableField.js.map +1 -0
- package/dist/legacy/visualBuilder/utils/isFieldMultiple.cjs +35 -0
- package/dist/legacy/visualBuilder/utils/isFieldMultiple.cjs.map +1 -0
- package/dist/legacy/visualBuilder/utils/isFieldMultiple.d.cts +6 -0
- package/dist/legacy/visualBuilder/utils/isFieldMultiple.d.ts +6 -0
- package/dist/legacy/visualBuilder/utils/isFieldMultiple.js +12 -0
- package/dist/legacy/visualBuilder/utils/isFieldMultiple.js.map +1 -0
- package/dist/legacy/visualBuilder/utils/multipleElementAddButton.cjs +14 -20
- package/dist/legacy/visualBuilder/utils/multipleElementAddButton.cjs.map +1 -1
- package/dist/legacy/visualBuilder/utils/multipleElementAddButton.d.cts +1 -1
- package/dist/legacy/visualBuilder/utils/multipleElementAddButton.d.ts +1 -1
- package/dist/legacy/visualBuilder/utils/multipleElementAddButton.js +14 -20
- package/dist/legacy/visualBuilder/utils/multipleElementAddButton.js.map +1 -1
- package/dist/legacy/visualBuilder/utils/pasteAsPlainText.cjs +44 -0
- package/dist/legacy/visualBuilder/utils/pasteAsPlainText.cjs.map +1 -0
- package/dist/legacy/visualBuilder/utils/pasteAsPlainText.d.cts +5 -0
- package/dist/legacy/visualBuilder/utils/pasteAsPlainText.d.ts +5 -0
- package/dist/legacy/visualBuilder/utils/pasteAsPlainText.js +21 -0
- package/dist/legacy/visualBuilder/utils/pasteAsPlainText.js.map +1 -0
- package/dist/legacy/visualBuilder/utils/types/index.types.cjs.map +1 -1
- package/dist/legacy/visualBuilder/utils/types/index.types.d.cts +6 -1
- package/dist/legacy/visualBuilder/utils/types/index.types.d.ts +6 -1
- package/dist/legacy/visualBuilder/utils/types/index.types.js.map +1 -1
- package/dist/legacy/visualBuilder/utils/types/postMessage.types.cjs +2 -1
- package/dist/legacy/visualBuilder/utils/types/postMessage.types.cjs.map +1 -1
- package/dist/legacy/visualBuilder/utils/types/postMessage.types.d.cts +2 -1
- package/dist/legacy/visualBuilder/utils/types/postMessage.types.d.ts +2 -1
- package/dist/legacy/visualBuilder/utils/types/postMessage.types.js +2 -1
- package/dist/legacy/visualBuilder/utils/types/postMessage.types.js.map +1 -1
- package/dist/legacy/visualBuilder/utils/updateFocussedState.cjs +10 -7
- package/dist/legacy/visualBuilder/utils/updateFocussedState.cjs.map +1 -1
- package/dist/legacy/visualBuilder/utils/updateFocussedState.js +10 -7
- package/dist/legacy/visualBuilder/utils/updateFocussedState.js.map +1 -1
- package/dist/legacy/visualBuilder/visualBuilder.style.cjs +27 -5
- package/dist/legacy/visualBuilder/visualBuilder.style.cjs.map +1 -1
- package/dist/legacy/visualBuilder/visualBuilder.style.d.cts +6 -1
- package/dist/legacy/visualBuilder/visualBuilder.style.d.ts +6 -1
- package/dist/legacy/visualBuilder/visualBuilder.style.js +27 -5
- package/dist/legacy/visualBuilder/visualBuilder.style.js.map +1 -1
- package/dist/modern/configManager/config.default.cjs +10 -1
- package/dist/modern/configManager/config.default.cjs.map +1 -1
- package/dist/modern/configManager/config.default.js +10 -1
- package/dist/modern/configManager/config.default.js.map +1 -1
- package/dist/modern/configManager/handleUserConfig.cjs +4 -0
- package/dist/modern/configManager/handleUserConfig.cjs.map +1 -1
- package/dist/modern/configManager/handleUserConfig.js +4 -0
- package/dist/modern/configManager/handleUserConfig.js.map +1 -1
- package/dist/modern/index.cjs +45 -1
- package/dist/modern/index.cjs.map +1 -1
- package/dist/modern/index.d.cts +16 -2
- package/dist/modern/index.d.ts +16 -2
- package/dist/modern/index.js +45 -1
- package/dist/modern/index.js.map +1 -1
- package/dist/modern/livePreview/editButton/editButton.cjs +85 -1
- package/dist/modern/livePreview/editButton/editButton.cjs.map +1 -1
- package/dist/modern/livePreview/editButton/editButton.d.cts +14 -1
- package/dist/modern/livePreview/editButton/editButton.d.ts +14 -1
- package/dist/modern/livePreview/editButton/editButton.js +84 -1
- package/dist/modern/livePreview/editButton/editButton.js.map +1 -1
- package/dist/modern/livePreview/eventManager/postMessageEvent.hooks.cjs +1 -1
- package/dist/modern/livePreview/eventManager/postMessageEvent.hooks.js +1 -1
- package/dist/modern/logger/logger.cjs +1 -1
- package/dist/modern/logger/logger.cjs.map +1 -1
- package/dist/modern/logger/logger.js +1 -1
- package/dist/modern/logger/logger.js.map +1 -1
- package/dist/modern/preview/contentstack-live-preview-HOC.cjs +6 -2
- package/dist/modern/preview/contentstack-live-preview-HOC.cjs.map +1 -1
- package/dist/modern/preview/contentstack-live-preview-HOC.js +6 -2
- package/dist/modern/preview/contentstack-live-preview-HOC.js.map +1 -1
- package/dist/modern/types/types.cjs.map +1 -1
- package/dist/modern/types/types.d.cts +10 -15
- package/dist/modern/types/types.d.ts +10 -15
- package/dist/modern/types/types.js.map +1 -1
- package/dist/modern/visualBuilder/collab.style.cjs +131 -1
- package/dist/modern/visualBuilder/collab.style.cjs.map +1 -1
- package/dist/modern/visualBuilder/collab.style.d.cts +17 -0
- package/dist/modern/visualBuilder/collab.style.d.ts +17 -0
- package/dist/modern/visualBuilder/collab.style.js +131 -1
- package/dist/modern/visualBuilder/collab.style.js.map +1 -1
- package/dist/modern/visualBuilder/components/Collab/AsyncLoader/AsyncLoader.cjs +70 -0
- package/dist/modern/visualBuilder/components/Collab/AsyncLoader/AsyncLoader.cjs.map +1 -0
- package/dist/modern/visualBuilder/components/Collab/AsyncLoader/AsyncLoader.d.cts +12 -0
- package/dist/modern/visualBuilder/components/Collab/AsyncLoader/AsyncLoader.d.ts +12 -0
- package/dist/modern/visualBuilder/components/Collab/AsyncLoader/AsyncLoader.js +41 -0
- package/dist/modern/visualBuilder/components/Collab/AsyncLoader/AsyncLoader.js.map +1 -0
- package/dist/modern/visualBuilder/components/Collab/Button/Button.cjs +32 -10
- package/dist/modern/visualBuilder/components/Collab/Button/Button.cjs.map +1 -1
- package/dist/modern/visualBuilder/components/Collab/Button/Button.d.cts +2 -0
- package/dist/modern/visualBuilder/components/Collab/Button/Button.d.ts +2 -0
- package/dist/modern/visualBuilder/components/Collab/Button/Button.js +33 -11
- package/dist/modern/visualBuilder/components/Collab/Button/Button.js.map +1 -1
- package/dist/modern/visualBuilder/components/Collab/CollabIndicator.cjs +7 -1
- package/dist/modern/visualBuilder/components/Collab/CollabIndicator.cjs.map +1 -1
- package/dist/modern/visualBuilder/components/Collab/CollabIndicator.js +7 -1
- package/dist/modern/visualBuilder/components/Collab/CollabIndicator.js.map +1 -1
- package/dist/modern/visualBuilder/components/Collab/Icon/Icon.cjs +6 -1
- package/dist/modern/visualBuilder/components/Collab/Icon/Icon.cjs.map +1 -1
- package/dist/modern/visualBuilder/components/Collab/Icon/Icon.d.cts +1 -0
- package/dist/modern/visualBuilder/components/Collab/Icon/Icon.d.ts +1 -0
- package/dist/modern/visualBuilder/components/Collab/Icon/Icon.js +6 -1
- package/dist/modern/visualBuilder/components/Collab/Icon/Icon.js.map +1 -1
- package/dist/modern/visualBuilder/components/Collab/ThreadPopup/CommentActionBar.cjs +8 -3
- package/dist/modern/visualBuilder/components/Collab/ThreadPopup/CommentActionBar.cjs.map +1 -1
- package/dist/modern/visualBuilder/components/Collab/ThreadPopup/CommentActionBar.js +9 -4
- package/dist/modern/visualBuilder/components/Collab/ThreadPopup/CommentActionBar.js.map +1 -1
- package/dist/modern/visualBuilder/components/Collab/ThreadPopup/CommentCard.cjs +1 -2
- package/dist/modern/visualBuilder/components/Collab/ThreadPopup/CommentCard.cjs.map +1 -1
- package/dist/modern/visualBuilder/components/Collab/ThreadPopup/CommentCard.js +2 -3
- package/dist/modern/visualBuilder/components/Collab/ThreadPopup/CommentCard.js.map +1 -1
- package/dist/modern/visualBuilder/components/Collab/ThreadPopup/CommentResolvedText.cjs +2 -5
- package/dist/modern/visualBuilder/components/Collab/ThreadPopup/CommentResolvedText.cjs.map +1 -1
- package/dist/modern/visualBuilder/components/Collab/ThreadPopup/CommentResolvedText.js +3 -9
- package/dist/modern/visualBuilder/components/Collab/ThreadPopup/CommentResolvedText.js.map +1 -1
- package/dist/modern/visualBuilder/components/Collab/ThreadPopup/CommentTextArea.cjs +94 -57
- package/dist/modern/visualBuilder/components/Collab/ThreadPopup/CommentTextArea.cjs.map +1 -1
- package/dist/modern/visualBuilder/components/Collab/ThreadPopup/CommentTextArea.js +94 -57
- package/dist/modern/visualBuilder/components/Collab/ThreadPopup/CommentTextArea.js.map +1 -1
- package/dist/modern/visualBuilder/components/Collab/ThreadPopup/ThreadActionBar.cjs +92 -0
- package/dist/modern/visualBuilder/components/Collab/ThreadPopup/ThreadActionBar.cjs.map +1 -0
- package/dist/modern/visualBuilder/components/Collab/ThreadPopup/ThreadActionBar.d.cts +13 -0
- package/dist/modern/visualBuilder/components/Collab/ThreadPopup/ThreadActionBar.d.ts +13 -0
- package/dist/modern/visualBuilder/components/Collab/ThreadPopup/ThreadActionBar.js +63 -0
- package/dist/modern/visualBuilder/components/Collab/ThreadPopup/ThreadActionBar.js.map +1 -0
- package/dist/modern/visualBuilder/components/Collab/ThreadPopup/ThreadFooter.cjs +1 -0
- package/dist/modern/visualBuilder/components/Collab/ThreadPopup/ThreadFooter.cjs.map +1 -1
- package/dist/modern/visualBuilder/components/Collab/ThreadPopup/ThreadFooter.js +1 -0
- package/dist/modern/visualBuilder/components/Collab/ThreadPopup/ThreadFooter.js.map +1 -1
- package/dist/modern/visualBuilder/components/Collab/ThreadPopup/ThreadHeader.cjs +19 -50
- package/dist/modern/visualBuilder/components/Collab/ThreadPopup/ThreadHeader.cjs.map +1 -1
- package/dist/modern/visualBuilder/components/Collab/ThreadPopup/ThreadHeader.js +21 -52
- package/dist/modern/visualBuilder/components/Collab/ThreadPopup/ThreadHeader.js.map +1 -1
- package/dist/modern/visualBuilder/components/Collab/ThreadPopup/index.cjs +29 -18
- package/dist/modern/visualBuilder/components/Collab/ThreadPopup/index.cjs.map +1 -1
- package/dist/modern/visualBuilder/components/Collab/ThreadPopup/index.js +29 -18
- package/dist/modern/visualBuilder/components/Collab/ThreadPopup/index.js.map +1 -1
- package/dist/modern/visualBuilder/components/Collab/Tooltip/Tooltip.cjs +19 -35
- package/dist/modern/visualBuilder/components/Collab/Tooltip/Tooltip.cjs.map +1 -1
- package/dist/modern/visualBuilder/components/Collab/Tooltip/Tooltip.js +19 -35
- package/dist/modern/visualBuilder/components/Collab/Tooltip/Tooltip.js.map +1 -1
- package/dist/modern/visualBuilder/components/FieldToolbar.cjs +28 -21
- package/dist/modern/visualBuilder/components/FieldToolbar.cjs.map +1 -1
- package/dist/modern/visualBuilder/components/FieldToolbar.d.cts +1 -0
- package/dist/modern/visualBuilder/components/FieldToolbar.d.ts +1 -0
- package/dist/modern/visualBuilder/components/FieldToolbar.js +29 -23
- package/dist/modern/visualBuilder/components/FieldToolbar.js.map +1 -1
- package/dist/modern/visualBuilder/components/addInstanceButton.cjs +38 -11
- package/dist/modern/visualBuilder/components/addInstanceButton.cjs.map +1 -1
- package/dist/modern/visualBuilder/components/addInstanceButton.d.cts +5 -0
- package/dist/modern/visualBuilder/components/addInstanceButton.d.ts +5 -0
- package/dist/modern/visualBuilder/components/addInstanceButton.js +38 -11
- package/dist/modern/visualBuilder/components/addInstanceButton.js.map +1 -1
- package/dist/modern/visualBuilder/components/startEditingButton.cjs +38 -11
- package/dist/modern/visualBuilder/components/startEditingButton.cjs.map +1 -1
- package/dist/modern/visualBuilder/components/startEditingButton.d.cts +7 -2
- package/dist/modern/visualBuilder/components/startEditingButton.d.ts +7 -2
- package/dist/modern/visualBuilder/components/startEditingButton.js +34 -11
- package/dist/modern/visualBuilder/components/startEditingButton.js.map +1 -1
- package/dist/modern/visualBuilder/eventManager/useCollab.cjs +45 -11
- package/dist/modern/visualBuilder/eventManager/useCollab.cjs.map +1 -1
- package/dist/modern/visualBuilder/eventManager/useCollab.js +45 -11
- package/dist/modern/visualBuilder/eventManager/useCollab.js.map +1 -1
- package/dist/modern/visualBuilder/eventManager/useHideFocusOverlayPostMessageEvent.cjs +5 -0
- package/dist/modern/visualBuilder/eventManager/useHideFocusOverlayPostMessageEvent.cjs.map +1 -1
- package/dist/modern/visualBuilder/eventManager/useHideFocusOverlayPostMessageEvent.js +5 -0
- package/dist/modern/visualBuilder/eventManager/useHideFocusOverlayPostMessageEvent.js.map +1 -1
- package/dist/modern/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.cjs +59 -4
- package/dist/modern/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.cjs.map +1 -1
- package/dist/modern/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.js +59 -4
- package/dist/modern/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.js.map +1 -1
- package/dist/modern/visualBuilder/generators/generateAddInstanceButtons.cjs +8 -2
- package/dist/modern/visualBuilder/generators/generateAddInstanceButtons.cjs.map +1 -1
- package/dist/modern/visualBuilder/generators/generateAddInstanceButtons.d.cts +9 -3
- package/dist/modern/visualBuilder/generators/generateAddInstanceButtons.d.ts +9 -3
- package/dist/modern/visualBuilder/generators/generateAddInstanceButtons.js +8 -2
- package/dist/modern/visualBuilder/generators/generateAddInstanceButtons.js.map +1 -1
- package/dist/modern/visualBuilder/generators/generateOverlay.cjs +5 -0
- package/dist/modern/visualBuilder/generators/generateOverlay.cjs.map +1 -1
- package/dist/modern/visualBuilder/generators/generateOverlay.js +5 -0
- package/dist/modern/visualBuilder/generators/generateOverlay.js.map +1 -1
- package/dist/modern/visualBuilder/generators/generateThread.cjs +102 -16
- package/dist/modern/visualBuilder/generators/generateThread.cjs.map +1 -1
- package/dist/modern/visualBuilder/generators/generateThread.d.cts +3 -1
- package/dist/modern/visualBuilder/generators/generateThread.d.ts +3 -1
- package/dist/modern/visualBuilder/generators/generateThread.js +100 -15
- package/dist/modern/visualBuilder/generators/generateThread.js.map +1 -1
- package/dist/modern/visualBuilder/generators/generateToolbar.cjs +13 -5
- package/dist/modern/visualBuilder/generators/generateToolbar.cjs.map +1 -1
- package/dist/modern/visualBuilder/generators/generateToolbar.d.cts +2 -2
- package/dist/modern/visualBuilder/generators/generateToolbar.d.ts +2 -2
- package/dist/modern/visualBuilder/generators/generateToolbar.js +13 -5
- package/dist/modern/visualBuilder/generators/generateToolbar.js.map +1 -1
- package/dist/modern/visualBuilder/hooks/useCollabOperations.cjs +9 -8
- package/dist/modern/visualBuilder/hooks/useCollabOperations.cjs.map +1 -1
- package/dist/modern/visualBuilder/hooks/useCollabOperations.js +9 -8
- package/dist/modern/visualBuilder/hooks/useCollabOperations.js.map +1 -1
- package/dist/modern/visualBuilder/hooks/useCommentTextArea.cjs +22 -5
- package/dist/modern/visualBuilder/hooks/useCommentTextArea.cjs.map +1 -1
- package/dist/modern/visualBuilder/hooks/useCommentTextArea.d.cts +1 -0
- package/dist/modern/visualBuilder/hooks/useCommentTextArea.d.ts +1 -0
- package/dist/modern/visualBuilder/hooks/useCommentTextArea.js +22 -5
- package/dist/modern/visualBuilder/hooks/useCommentTextArea.js.map +1 -1
- package/dist/modern/visualBuilder/index.cjs +16 -11
- package/dist/modern/visualBuilder/index.cjs.map +1 -1
- package/dist/modern/visualBuilder/index.d.cts +1 -0
- package/dist/modern/visualBuilder/index.d.ts +1 -0
- package/dist/modern/visualBuilder/index.js +14 -5
- package/dist/modern/visualBuilder/index.js.map +1 -1
- package/dist/modern/visualBuilder/listeners/mouseClick.cjs +90 -18
- package/dist/modern/visualBuilder/listeners/mouseClick.cjs.map +1 -1
- package/dist/modern/visualBuilder/listeners/mouseClick.d.cts +4 -1
- package/dist/modern/visualBuilder/listeners/mouseClick.d.ts +4 -1
- package/dist/modern/visualBuilder/listeners/mouseClick.js +90 -18
- package/dist/modern/visualBuilder/listeners/mouseClick.js.map +1 -1
- package/dist/modern/visualBuilder/listeners/mouseHover.cjs +3 -1
- package/dist/modern/visualBuilder/listeners/mouseHover.cjs.map +1 -1
- package/dist/modern/visualBuilder/listeners/mouseHover.js +3 -1
- package/dist/modern/visualBuilder/listeners/mouseHover.js.map +1 -1
- package/dist/modern/visualBuilder/types/collab.types.cjs.map +1 -1
- package/dist/modern/visualBuilder/types/collab.types.d.cts +22 -1
- package/dist/modern/visualBuilder/types/collab.types.d.ts +22 -1
- package/dist/modern/visualBuilder/utils/collabUtils.cjs +108 -4
- package/dist/modern/visualBuilder/utils/collabUtils.cjs.map +1 -1
- package/dist/modern/visualBuilder/utils/collabUtils.d.cts +25 -1
- package/dist/modern/visualBuilder/utils/collabUtils.d.ts +25 -1
- package/dist/modern/visualBuilder/utils/collabUtils.js +103 -4
- package/dist/modern/visualBuilder/utils/collabUtils.js.map +1 -1
- package/dist/modern/visualBuilder/utils/enableInlineEditing.cjs +94 -0
- package/dist/modern/visualBuilder/utils/enableInlineEditing.cjs.map +1 -0
- package/dist/modern/visualBuilder/utils/enableInlineEditing.d.cts +11 -0
- package/dist/modern/visualBuilder/utils/enableInlineEditing.d.ts +11 -0
- package/dist/modern/visualBuilder/utils/enableInlineEditing.js +74 -0
- package/dist/modern/visualBuilder/utils/enableInlineEditing.js.map +1 -0
- package/dist/modern/visualBuilder/utils/getChildrenDirection.cjs +8 -0
- package/dist/modern/visualBuilder/utils/getChildrenDirection.cjs.map +1 -1
- package/dist/modern/visualBuilder/utils/getChildrenDirection.d.cts +3 -1
- package/dist/modern/visualBuilder/utils/getChildrenDirection.d.ts +3 -1
- package/dist/modern/visualBuilder/utils/getChildrenDirection.js +8 -0
- package/dist/modern/visualBuilder/utils/getChildrenDirection.js.map +1 -1
- package/dist/modern/visualBuilder/utils/handleFieldMouseDown.cjs +4 -1
- package/dist/modern/visualBuilder/utils/handleFieldMouseDown.cjs.map +1 -1
- package/dist/modern/visualBuilder/utils/handleFieldMouseDown.js +4 -1
- package/dist/modern/visualBuilder/utils/handleFieldMouseDown.js.map +1 -1
- package/dist/modern/visualBuilder/utils/handleIndividualFields.cjs +23 -111
- package/dist/modern/visualBuilder/utils/handleIndividualFields.cjs.map +1 -1
- package/dist/modern/visualBuilder/utils/handleIndividualFields.d.cts +3 -5
- package/dist/modern/visualBuilder/utils/handleIndividualFields.d.ts +3 -5
- package/dist/modern/visualBuilder/utils/handleIndividualFields.js +21 -115
- package/dist/modern/visualBuilder/utils/handleIndividualFields.js.map +1 -1
- package/dist/modern/visualBuilder/utils/handleInlineEditableField.cjs +81 -0
- package/dist/modern/visualBuilder/utils/handleInlineEditableField.cjs.map +1 -0
- package/dist/modern/visualBuilder/utils/handleInlineEditableField.d.cts +16 -0
- package/dist/modern/visualBuilder/utils/handleInlineEditableField.d.ts +16 -0
- package/dist/modern/visualBuilder/utils/handleInlineEditableField.js +58 -0
- package/dist/modern/visualBuilder/utils/handleInlineEditableField.js.map +1 -0
- package/dist/modern/visualBuilder/utils/isFieldMultiple.cjs +35 -0
- package/dist/modern/visualBuilder/utils/isFieldMultiple.cjs.map +1 -0
- package/dist/modern/visualBuilder/utils/isFieldMultiple.d.cts +6 -0
- package/dist/modern/visualBuilder/utils/isFieldMultiple.d.ts +6 -0
- package/dist/modern/visualBuilder/utils/isFieldMultiple.js +12 -0
- package/dist/modern/visualBuilder/utils/isFieldMultiple.js.map +1 -0
- package/dist/modern/visualBuilder/utils/multipleElementAddButton.cjs +14 -18
- package/dist/modern/visualBuilder/utils/multipleElementAddButton.cjs.map +1 -1
- package/dist/modern/visualBuilder/utils/multipleElementAddButton.d.cts +1 -1
- package/dist/modern/visualBuilder/utils/multipleElementAddButton.d.ts +1 -1
- package/dist/modern/visualBuilder/utils/multipleElementAddButton.js +14 -18
- package/dist/modern/visualBuilder/utils/multipleElementAddButton.js.map +1 -1
- package/dist/modern/visualBuilder/utils/pasteAsPlainText.cjs +44 -0
- package/dist/modern/visualBuilder/utils/pasteAsPlainText.cjs.map +1 -0
- package/dist/modern/visualBuilder/utils/pasteAsPlainText.d.cts +5 -0
- package/dist/modern/visualBuilder/utils/pasteAsPlainText.d.ts +5 -0
- package/dist/modern/visualBuilder/utils/pasteAsPlainText.js +21 -0
- package/dist/modern/visualBuilder/utils/pasteAsPlainText.js.map +1 -0
- package/dist/modern/visualBuilder/utils/types/index.types.cjs.map +1 -1
- package/dist/modern/visualBuilder/utils/types/index.types.d.cts +6 -1
- package/dist/modern/visualBuilder/utils/types/index.types.d.ts +6 -1
- package/dist/modern/visualBuilder/utils/types/index.types.js.map +1 -1
- package/dist/modern/visualBuilder/utils/types/postMessage.types.cjs +2 -1
- package/dist/modern/visualBuilder/utils/types/postMessage.types.cjs.map +1 -1
- package/dist/modern/visualBuilder/utils/types/postMessage.types.d.cts +2 -1
- package/dist/modern/visualBuilder/utils/types/postMessage.types.d.ts +2 -1
- package/dist/modern/visualBuilder/utils/types/postMessage.types.js +2 -1
- package/dist/modern/visualBuilder/utils/types/postMessage.types.js.map +1 -1
- package/dist/modern/visualBuilder/utils/updateFocussedState.cjs +10 -7
- package/dist/modern/visualBuilder/utils/updateFocussedState.cjs.map +1 -1
- package/dist/modern/visualBuilder/utils/updateFocussedState.js +10 -7
- package/dist/modern/visualBuilder/utils/updateFocussedState.js.map +1 -1
- package/dist/modern/visualBuilder/visualBuilder.style.cjs +27 -5
- package/dist/modern/visualBuilder/visualBuilder.style.cjs.map +1 -1
- package/dist/modern/visualBuilder/visualBuilder.style.d.cts +6 -1
- package/dist/modern/visualBuilder/visualBuilder.style.d.ts +6 -1
- package/dist/modern/visualBuilder/visualBuilder.style.js +27 -5
- package/dist/modern/visualBuilder/visualBuilder.style.js.map +1 -1
- package/package.json +4 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/visualBuilder/utils/handleInlineEditableField.ts"],"sourcesContent":["import { ALLOWED_INLINE_EDITABLE_FIELD } from \"./constants\";\nimport { isFieldMultiple } from \"./isFieldMultiple\";\nimport { FieldDataType, VisualBuilderEditContext } from \"./types/index.types\";\nimport { enableInlineEditing } from \"./enableInlineEditing\";\n\n/**\n * Handles inline editing for supported fields.\n */\nexport function handleInlineEditableField({\n fieldType,\n fieldSchema,\n fieldMetadata,\n expectedFieldData,\n editableElement,\n elements,\n}: {\n fieldType: FieldDataType;\n fieldSchema: any;\n fieldMetadata: any;\n expectedFieldData: any;\n editableElement: HTMLElement;\n elements: VisualBuilderEditContext;\n}) {\n if (!ALLOWED_INLINE_EDITABLE_FIELD.includes(fieldType)) return;\n\n // Instances of ALLOWED_INLINE_EDITABLE_FIELD will always have index at last\n const index = Number(\n fieldMetadata.instance.fieldPathWithIndex.split(\".\").at(-1)\n );\n const isInstance = Number.isFinite(index);\n\n // CASE 1: Handle inline editing for multiple field\n if (isFieldMultiple(fieldSchema)) {\n let expectedFieldInstanceData = null;\n if (Array.isArray(expectedFieldData)) {\n // CASE: Selected element is the multiple field itself.\n // Inline Editing not allowed on field, only allowed on instance.\n // (We receive unreliable `multipleFieldMetadata` in this case)\n if (!isInstance) {\n return;\n }\n\n // CASE: Value does not exist for the provided instance's index\n if (index >= expectedFieldData.length) {\n // TODO: What should be the behavior here?\n } else {\n expectedFieldInstanceData = expectedFieldData.at(index);\n }\n }\n // CASE: ContentType's Field changed from single to multiple, while Entry's Field still single.\n else {\n expectedFieldInstanceData = expectedFieldData;\n }\n\n enableInlineEditing({\n fieldType,\n expectedFieldData: expectedFieldInstanceData,\n editableElement,\n elements,\n });\n }\n // CASE 2: Handle inline editing for a single field\n else {\n let expectedFieldInstanceData = null;\n // CASE: ContentType's Field changed from multiple to single, while Entry's Field still multiple.\n if (isInstance) {\n if (index !== 0) {\n // TODO: Handle this with UX\n // Let user know, CSLP is invalid due to change in Content Type\n return;\n }\n expectedFieldInstanceData = Array.isArray(expectedFieldData)\n ? expectedFieldData.at(0)\n : expectedFieldData;\n }\n enableInlineEditing({\n fieldType,\n expectedFieldData: expectedFieldInstanceData ?? expectedFieldData,\n editableElement,\n elements,\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAA8C;AAC9C,6BAAgC;AAEhC,iCAAoC;AAK7B,SAAS,0BAA0B;AAAA,EACtC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,GAOG;AACC,MAAI,CAAC,+CAA8B,SAAS,SAAS,EAAG;AAGxD,QAAM,QAAQ;AAAA,IACV,cAAc,SAAS,mBAAmB,MAAM,GAAG,EAAE,GAAG,EAAE;AAAA,EAC9D;AACA,QAAM,aAAa,OAAO,SAAS,KAAK;AAGxC,UAAI,wCAAgB,WAAW,GAAG;AAC9B,QAAI,4BAA4B;AAChC,QAAI,MAAM,QAAQ,iBAAiB,GAAG;AAIlC,UAAI,CAAC,YAAY;AACb;AAAA,MACJ;AAGA,UAAI,SAAS,kBAAkB,QAAQ;AAAA,MAEvC,OAAO;AACH,oCAA4B,kBAAkB,GAAG,KAAK;AAAA,MAC1D;AAAA,IACJ,OAEK;AACD,kCAA4B;AAAA,IAChC;AAEA,wDAAoB;AAAA,MAChB;AAAA,MACA,mBAAmB;AAAA,MACnB;AAAA,MACA;AAAA,IACJ,CAAC;AAAA,EACL,OAEK;AACD,QAAI,4BAA4B;AAEhC,QAAI,YAAY;AACZ,UAAI,UAAU,GAAG;AAGb;AAAA,MACJ;AACA,kCAA4B,MAAM,QAAQ,iBAAiB,IACrD,kBAAkB,GAAG,CAAC,IACtB;AAAA,IACV;AACA,wDAAoB;AAAA,MAChB;AAAA,MACA,mBAAmB,6BAA6B;AAAA,MAChD;AAAA,MACA;AAAA,IACJ,CAAC;AAAA,EACL;AACJ;","names":[]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { FieldDataType, VisualBuilderEditContext } from './types/index.types.cjs';
|
|
2
|
+
import '../../cms/types/contentTypeSchema.types.cjs';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Handles inline editing for supported fields.
|
|
6
|
+
*/
|
|
7
|
+
declare function handleInlineEditableField({ fieldType, fieldSchema, fieldMetadata, expectedFieldData, editableElement, elements, }: {
|
|
8
|
+
fieldType: FieldDataType;
|
|
9
|
+
fieldSchema: any;
|
|
10
|
+
fieldMetadata: any;
|
|
11
|
+
expectedFieldData: any;
|
|
12
|
+
editableElement: HTMLElement;
|
|
13
|
+
elements: VisualBuilderEditContext;
|
|
14
|
+
}): void;
|
|
15
|
+
|
|
16
|
+
export { handleInlineEditableField };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { FieldDataType, VisualBuilderEditContext } from './types/index.types.js';
|
|
2
|
+
import '../../cms/types/contentTypeSchema.types.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Handles inline editing for supported fields.
|
|
6
|
+
*/
|
|
7
|
+
declare function handleInlineEditableField({ fieldType, fieldSchema, fieldMetadata, expectedFieldData, editableElement, elements, }: {
|
|
8
|
+
fieldType: FieldDataType;
|
|
9
|
+
fieldSchema: any;
|
|
10
|
+
fieldMetadata: any;
|
|
11
|
+
expectedFieldData: any;
|
|
12
|
+
editableElement: HTMLElement;
|
|
13
|
+
elements: VisualBuilderEditContext;
|
|
14
|
+
}): void;
|
|
15
|
+
|
|
16
|
+
export { handleInlineEditableField };
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import "../../chunk-5WRI5ZAA.js";
|
|
2
|
+
|
|
3
|
+
// src/visualBuilder/utils/handleInlineEditableField.ts
|
|
4
|
+
import { ALLOWED_INLINE_EDITABLE_FIELD } from "./constants.js";
|
|
5
|
+
import { isFieldMultiple } from "./isFieldMultiple.js";
|
|
6
|
+
import { enableInlineEditing } from "./enableInlineEditing.js";
|
|
7
|
+
function handleInlineEditableField({
|
|
8
|
+
fieldType,
|
|
9
|
+
fieldSchema,
|
|
10
|
+
fieldMetadata,
|
|
11
|
+
expectedFieldData,
|
|
12
|
+
editableElement,
|
|
13
|
+
elements
|
|
14
|
+
}) {
|
|
15
|
+
if (!ALLOWED_INLINE_EDITABLE_FIELD.includes(fieldType)) return;
|
|
16
|
+
const index = Number(
|
|
17
|
+
fieldMetadata.instance.fieldPathWithIndex.split(".").at(-1)
|
|
18
|
+
);
|
|
19
|
+
const isInstance = Number.isFinite(index);
|
|
20
|
+
if (isFieldMultiple(fieldSchema)) {
|
|
21
|
+
let expectedFieldInstanceData = null;
|
|
22
|
+
if (Array.isArray(expectedFieldData)) {
|
|
23
|
+
if (!isInstance) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
if (index >= expectedFieldData.length) {
|
|
27
|
+
} else {
|
|
28
|
+
expectedFieldInstanceData = expectedFieldData.at(index);
|
|
29
|
+
}
|
|
30
|
+
} else {
|
|
31
|
+
expectedFieldInstanceData = expectedFieldData;
|
|
32
|
+
}
|
|
33
|
+
enableInlineEditing({
|
|
34
|
+
fieldType,
|
|
35
|
+
expectedFieldData: expectedFieldInstanceData,
|
|
36
|
+
editableElement,
|
|
37
|
+
elements
|
|
38
|
+
});
|
|
39
|
+
} else {
|
|
40
|
+
let expectedFieldInstanceData = null;
|
|
41
|
+
if (isInstance) {
|
|
42
|
+
if (index !== 0) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
expectedFieldInstanceData = Array.isArray(expectedFieldData) ? expectedFieldData.at(0) : expectedFieldData;
|
|
46
|
+
}
|
|
47
|
+
enableInlineEditing({
|
|
48
|
+
fieldType,
|
|
49
|
+
expectedFieldData: expectedFieldInstanceData ?? expectedFieldData,
|
|
50
|
+
editableElement,
|
|
51
|
+
elements
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
export {
|
|
56
|
+
handleInlineEditableField
|
|
57
|
+
};
|
|
58
|
+
//# sourceMappingURL=handleInlineEditableField.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/visualBuilder/utils/handleInlineEditableField.ts"],"sourcesContent":["import { ALLOWED_INLINE_EDITABLE_FIELD } from \"./constants\";\nimport { isFieldMultiple } from \"./isFieldMultiple\";\nimport { FieldDataType, VisualBuilderEditContext } from \"./types/index.types\";\nimport { enableInlineEditing } from \"./enableInlineEditing\";\n\n/**\n * Handles inline editing for supported fields.\n */\nexport function handleInlineEditableField({\n fieldType,\n fieldSchema,\n fieldMetadata,\n expectedFieldData,\n editableElement,\n elements,\n}: {\n fieldType: FieldDataType;\n fieldSchema: any;\n fieldMetadata: any;\n expectedFieldData: any;\n editableElement: HTMLElement;\n elements: VisualBuilderEditContext;\n}) {\n if (!ALLOWED_INLINE_EDITABLE_FIELD.includes(fieldType)) return;\n\n // Instances of ALLOWED_INLINE_EDITABLE_FIELD will always have index at last\n const index = Number(\n fieldMetadata.instance.fieldPathWithIndex.split(\".\").at(-1)\n );\n const isInstance = Number.isFinite(index);\n\n // CASE 1: Handle inline editing for multiple field\n if (isFieldMultiple(fieldSchema)) {\n let expectedFieldInstanceData = null;\n if (Array.isArray(expectedFieldData)) {\n // CASE: Selected element is the multiple field itself.\n // Inline Editing not allowed on field, only allowed on instance.\n // (We receive unreliable `multipleFieldMetadata` in this case)\n if (!isInstance) {\n return;\n }\n\n // CASE: Value does not exist for the provided instance's index\n if (index >= expectedFieldData.length) {\n // TODO: What should be the behavior here?\n } else {\n expectedFieldInstanceData = expectedFieldData.at(index);\n }\n }\n // CASE: ContentType's Field changed from single to multiple, while Entry's Field still single.\n else {\n expectedFieldInstanceData = expectedFieldData;\n }\n\n enableInlineEditing({\n fieldType,\n expectedFieldData: expectedFieldInstanceData,\n editableElement,\n elements,\n });\n }\n // CASE 2: Handle inline editing for a single field\n else {\n let expectedFieldInstanceData = null;\n // CASE: ContentType's Field changed from multiple to single, while Entry's Field still multiple.\n if (isInstance) {\n if (index !== 0) {\n // TODO: Handle this with UX\n // Let user know, CSLP is invalid due to change in Content Type\n return;\n }\n expectedFieldInstanceData = Array.isArray(expectedFieldData)\n ? expectedFieldData.at(0)\n : expectedFieldData;\n }\n enableInlineEditing({\n fieldType,\n expectedFieldData: expectedFieldInstanceData ?? expectedFieldData,\n editableElement,\n elements,\n });\n }\n}\n"],"mappings":";;;AAAA,SAAS,qCAAqC;AAC9C,SAAS,uBAAuB;AAEhC,SAAS,2BAA2B;AAK7B,SAAS,0BAA0B;AAAA,EACtC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,GAOG;AACC,MAAI,CAAC,8BAA8B,SAAS,SAAS,EAAG;AAGxD,QAAM,QAAQ;AAAA,IACV,cAAc,SAAS,mBAAmB,MAAM,GAAG,EAAE,GAAG,EAAE;AAAA,EAC9D;AACA,QAAM,aAAa,OAAO,SAAS,KAAK;AAGxC,MAAI,gBAAgB,WAAW,GAAG;AAC9B,QAAI,4BAA4B;AAChC,QAAI,MAAM,QAAQ,iBAAiB,GAAG;AAIlC,UAAI,CAAC,YAAY;AACb;AAAA,MACJ;AAGA,UAAI,SAAS,kBAAkB,QAAQ;AAAA,MAEvC,OAAO;AACH,oCAA4B,kBAAkB,GAAG,KAAK;AAAA,MAC1D;AAAA,IACJ,OAEK;AACD,kCAA4B;AAAA,IAChC;AAEA,wBAAoB;AAAA,MAChB;AAAA,MACA,mBAAmB;AAAA,MACnB;AAAA,MACA;AAAA,IACJ,CAAC;AAAA,EACL,OAEK;AACD,QAAI,4BAA4B;AAEhC,QAAI,YAAY;AACZ,UAAI,UAAU,GAAG;AAGb;AAAA,MACJ;AACA,kCAA4B,MAAM,QAAQ,iBAAiB,IACrD,kBAAkB,GAAG,CAAC,IACtB;AAAA,IACV;AACA,wBAAoB;AAAA,MAChB;AAAA,MACA,mBAAmB,6BAA6B;AAAA,MAChD;AAAA,MACA;AAAA,IACJ,CAAC;AAAA,EACL;AACJ;","names":[]}
|
|
@@ -0,0 +1,35 @@
|
|
|
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/utils/isFieldMultiple.ts
|
|
21
|
+
var isFieldMultiple_exports = {};
|
|
22
|
+
__export(isFieldMultiple_exports, {
|
|
23
|
+
isFieldMultiple: () => isFieldMultiple
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(isFieldMultiple_exports);
|
|
26
|
+
function isFieldMultiple(fieldSchema) {
|
|
27
|
+
return fieldSchema && (fieldSchema.multiple || fieldSchema.data_type === "reference" && // @ts-expect-error field_metadata will contain ref_multiple
|
|
28
|
+
// for reference fields
|
|
29
|
+
fieldSchema.field_metadata.ref_multiple);
|
|
30
|
+
}
|
|
31
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
32
|
+
0 && (module.exports = {
|
|
33
|
+
isFieldMultiple
|
|
34
|
+
});
|
|
35
|
+
//# sourceMappingURL=isFieldMultiple.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/visualBuilder/utils/isFieldMultiple.ts"],"sourcesContent":["import { ISchemaFieldMap } from \"./types/index.types\";\n\nexport function isFieldMultiple(fieldSchema: ISchemaFieldMap): boolean {\n return (\n fieldSchema &&\n (fieldSchema.multiple ||\n (fieldSchema.data_type === \"reference\" &&\n // @ts-expect-error field_metadata will contain ref_multiple\n // for reference fields\n fieldSchema.field_metadata.ref_multiple))\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEO,SAAS,gBAAgB,aAAuC;AACnE,SACI,gBACC,YAAY,YACR,YAAY,cAAc;AAAA;AAAA,EAGvB,YAAY,eAAe;AAE3C;","names":[]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import "../../chunk-5WRI5ZAA.js";
|
|
2
|
+
|
|
3
|
+
// src/visualBuilder/utils/isFieldMultiple.ts
|
|
4
|
+
function isFieldMultiple(fieldSchema) {
|
|
5
|
+
return fieldSchema && (fieldSchema.multiple || fieldSchema.data_type === "reference" && // @ts-expect-error field_metadata will contain ref_multiple
|
|
6
|
+
// for reference fields
|
|
7
|
+
fieldSchema.field_metadata.ref_multiple);
|
|
8
|
+
}
|
|
9
|
+
export {
|
|
10
|
+
isFieldMultiple
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=isFieldMultiple.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/visualBuilder/utils/isFieldMultiple.ts"],"sourcesContent":["import { ISchemaFieldMap } from \"./types/index.types\";\n\nexport function isFieldMultiple(fieldSchema: ISchemaFieldMap): boolean {\n return (\n fieldSchema &&\n (fieldSchema.multiple ||\n (fieldSchema.data_type === \"reference\" &&\n // @ts-expect-error field_metadata will contain ref_multiple\n // for reference fields\n fieldSchema.field_metadata.ref_multiple))\n );\n}\n"],"mappings":";;;AAEO,SAAS,gBAAgB,aAAuC;AACnE,SACI,gBACC,YAAY,YACR,YAAY,cAAc;AAAA;AAAA,EAGvB,YAAY,eAAe;AAE3C;","names":[]}
|
|
@@ -36,11 +36,10 @@ __export(multipleElementAddButton_exports, {
|
|
|
36
36
|
});
|
|
37
37
|
module.exports = __toCommonJS(multipleElementAddButton_exports);
|
|
38
38
|
var import_generateAddInstanceButtons = require("../generators/generateAddInstanceButtons.cjs");
|
|
39
|
-
var import_visualBuilderPostMessage = __toESM(require("./visualBuilderPostMessage.cjs"), 1);
|
|
40
|
-
var import_postMessage = require("./types/postMessage.types.cjs");
|
|
41
39
|
var import_getChildrenDirection = __toESM(require("./getChildrenDirection.cjs"), 1);
|
|
42
40
|
var import_generateOverlay = require("../generators/generateOverlay.cjs");
|
|
43
41
|
var import_mouseHover = require("../listeners/mouseHover.cjs");
|
|
42
|
+
var import_signals = require("@preact/signals");
|
|
44
43
|
var WAIT_FOR_NEW_INSTANCE_TIMEOUT = 4e3;
|
|
45
44
|
function handleAddButtonsForMultiple(eventDetails, elements, config) {
|
|
46
45
|
const { editableElement, visualBuilderContainer, resizeObserver } = elements;
|
|
@@ -91,27 +90,24 @@ function handleAddButtonsForMultiple(eventDetails, elements, config) {
|
|
|
91
90
|
index
|
|
92
91
|
});
|
|
93
92
|
};
|
|
93
|
+
const loading = (0, import_signals.signal)(false);
|
|
94
94
|
const previousButton = (0, import_generateAddInstanceButtons.generateAddInstanceButton)({
|
|
95
|
-
onClick: () => {
|
|
96
|
-
import_visualBuilderPostMessage.default?.send(import_postMessage.VisualBuilderPostMessageEvents.ADD_INSTANCE, {
|
|
97
|
-
fieldMetadata: eventDetails.fieldMetadata,
|
|
98
|
-
index: prevIndex
|
|
99
|
-
}).then(onMessageSent.bind(null, prevIndex));
|
|
100
|
-
},
|
|
101
|
-
label,
|
|
102
95
|
fieldSchema,
|
|
103
|
-
value: expectedFieldData
|
|
96
|
+
value: expectedFieldData,
|
|
97
|
+
fieldMetadata: eventDetails.fieldMetadata,
|
|
98
|
+
index: prevIndex,
|
|
99
|
+
onClick: onMessageSent.bind(null, prevIndex),
|
|
100
|
+
loading,
|
|
101
|
+
label
|
|
104
102
|
});
|
|
105
103
|
const nextButton = (0, import_generateAddInstanceButtons.generateAddInstanceButton)({
|
|
106
|
-
onClick: () => {
|
|
107
|
-
import_visualBuilderPostMessage.default?.send(import_postMessage.VisualBuilderPostMessageEvents.ADD_INSTANCE, {
|
|
108
|
-
fieldMetadata: eventDetails.fieldMetadata,
|
|
109
|
-
index: nextIndex
|
|
110
|
-
}).then(onMessageSent.bind(null, nextIndex));
|
|
111
|
-
},
|
|
112
|
-
label,
|
|
113
104
|
fieldSchema,
|
|
114
|
-
value: expectedFieldData
|
|
105
|
+
value: expectedFieldData,
|
|
106
|
+
fieldMetadata: eventDetails.fieldMetadata,
|
|
107
|
+
index: nextIndex,
|
|
108
|
+
onClick: onMessageSent.bind(null, nextIndex),
|
|
109
|
+
loading,
|
|
110
|
+
label
|
|
115
111
|
});
|
|
116
112
|
if (!visualBuilderContainer.contains(previousButton)) {
|
|
117
113
|
visualBuilderContainer.appendChild(previousButton);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/visualBuilder/utils/multipleElementAddButton.ts"],"sourcesContent":["import { VisualBuilderCslpEventDetails } from \"../types/visualBuilder.types\";\nimport {\n generateAddInstanceButton,\n getAddInstanceButtons,\n} from \"../generators/generateAddInstanceButtons\";\nimport visualBuilderPostMessage from \"./visualBuilderPostMessage\";\nimport { VisualBuilderPostMessageEvents } from \"./types/postMessage.types\";\nimport getChildrenDirection from \"./getChildrenDirection\";\nimport { hideOverlay } from \"../generators/generateOverlay\";\nimport { hideHoverOutline } from \"../listeners/mouseHover\";\nimport { ISchemaFieldMap } from \"./types/index.types\";\n\nconst WAIT_FOR_NEW_INSTANCE_TIMEOUT = 4000;\n\n/**\n * The function that handles the add instance buttons for multiple fields.\n * @param eventDetails The details containing the field metadata and cslp value.\n * @param elements The elements object that contain the editable element and visual builder wrapper.\n * @param config The configuration object that contains the expected field data and disabled state.\n * @returns void\n */\nexport function handleAddButtonsForMultiple(\n eventDetails: VisualBuilderCslpEventDetails,\n elements: {\n editableElement: Element | null;\n visualBuilderContainer: HTMLDivElement | null;\n resizeObserver: ResizeObserver;\n },\n config: {\n fieldSchema: ISchemaFieldMap;\n /**\n * expectedFieldData is the value of the whole multiple field (an array)\n */\n expectedFieldData: any;\n disabled: boolean;\n label: string | undefined;\n }\n): void {\n const { editableElement, visualBuilderContainer, resizeObserver } =\n elements;\n const { expectedFieldData, fieldSchema, disabled, label } = config;\n\n const parentCslpValue =\n eventDetails.fieldMetadata.multipleFieldMetadata?.parentDetails\n ?.parentCslpValue;\n\n if (!editableElement || !parentCslpValue) {\n return;\n }\n\n const direction = getChildrenDirection(editableElement, parentCslpValue);\n if (direction === \"none\" || !visualBuilderContainer) {\n return;\n }\n\n const targetDOMDimension = editableElement.getBoundingClientRect();\n removeAddInstanceButtons(\n {\n visualBuilderContainer: visualBuilderContainer,\n eventTarget: null,\n overlayWrapper: null,\n },\n true\n );\n\n const overlayWrapper = visualBuilderContainer.querySelector(\n \".visual-builder__overlay__wrapper\"\n );\n const focusedToolbar = visualBuilderContainer.querySelector(\n \".visual-builder__focused-toolbar\"\n );\n\n const hideOverlayAndHoverOutline = () => {\n hideHoverOutline(visualBuilderContainer);\n hideOverlay({\n visualBuilderContainer: visualBuilderContainer,\n visualBuilderOverlayWrapper: overlayWrapper as HTMLDivElement,\n focusedToolbar: focusedToolbar as HTMLDivElement,\n resizeObserver,\n });\n };\n\n if (disabled) {\n return;\n }\n\n // is whole field and not a single instance of the multiple field\n const isField =\n eventDetails.fieldMetadata.instance.fieldPathWithIndex ===\n eventDetails.fieldMetadata.fieldPathWithIndex;\n\n const prevIndex = isField\n ? 0\n : eventDetails.fieldMetadata.multipleFieldMetadata.index;\n const nextIndex = isField\n ? expectedFieldData.length\n : eventDetails.fieldMetadata.multipleFieldMetadata.index + 1;\n\n const parentCslp = isField ? eventDetails.cslpData : parentCslpValue;\n\n const onMessageSent = (index: number) => {\n hideOverlayAndHoverOutline();\n observeParentAndFocusNewInstance({\n parentCslp,\n index,\n });\n };\n\n const previousButton = generateAddInstanceButton({\n onClick: () => {\n visualBuilderPostMessage\n ?.send(VisualBuilderPostMessageEvents.ADD_INSTANCE, {\n fieldMetadata: eventDetails.fieldMetadata,\n index: prevIndex,\n })\n .then(onMessageSent.bind(null, prevIndex));\n },\n label,\n fieldSchema,\n value: expectedFieldData,\n });\n\n const nextButton = generateAddInstanceButton({\n onClick: () => {\n visualBuilderPostMessage\n ?.send(VisualBuilderPostMessageEvents.ADD_INSTANCE, {\n fieldMetadata: eventDetails.fieldMetadata,\n index: nextIndex,\n })\n .then(onMessageSent.bind(null, nextIndex));\n },\n label,\n fieldSchema,\n value: expectedFieldData,\n });\n\n if (!visualBuilderContainer.contains(previousButton)) {\n visualBuilderContainer.appendChild(previousButton);\n }\n\n if (!visualBuilderContainer.contains(nextButton)) {\n visualBuilderContainer.appendChild(nextButton);\n }\n\n if (direction === \"horizontal\") {\n const middleHeight =\n targetDOMDimension.top +\n (targetDOMDimension.bottom - targetDOMDimension.top) / 2 +\n window.scrollY;\n previousButton.style.left = `${targetDOMDimension.left}px`;\n previousButton.style.top = `${middleHeight}px`;\n\n nextButton.style.left = `${targetDOMDimension.right}px`;\n nextButton.style.top = `${middleHeight}px`;\n } else {\n const middleWidth =\n targetDOMDimension.left +\n (targetDOMDimension.right - targetDOMDimension.left) / 2;\n previousButton.style.left = `${middleWidth}px`;\n previousButton.style.top = `${\n targetDOMDimension.top + window.scrollY\n }px`;\n\n nextButton.style.left = `${middleWidth}px`;\n nextButton.style.top = `${\n targetDOMDimension.bottom + window.scrollY\n }px`;\n }\n}\n\nexport function removeAddInstanceButtons(\n elements: {\n visualBuilderContainer: HTMLDivElement | null;\n overlayWrapper: HTMLDivElement | null;\n eventTarget: EventTarget | null;\n },\n forceRemoveAll = false\n): void {\n const { visualBuilderContainer, overlayWrapper, eventTarget } = elements;\n\n if (!visualBuilderContainer) {\n return;\n }\n\n if (forceRemoveAll) {\n const addInstanceButtons = getAddInstanceButtons(\n visualBuilderContainer,\n true\n );\n\n addInstanceButtons?.forEach((button) => button.remove());\n }\n\n const addInstanceButtons = getAddInstanceButtons(visualBuilderContainer);\n\n if (!addInstanceButtons) {\n return;\n }\n\n const [previousButton, nextButton] = addInstanceButtons;\n\n if (overlayWrapper?.classList.contains(\"visible\")) {\n return;\n }\n\n if (\n eventTarget &&\n (previousButton.contains(eventTarget as Node) ||\n nextButton.contains(eventTarget as Node))\n ) {\n return;\n }\n\n nextButton.remove();\n previousButton.remove();\n}\n\n/**\n * This function that observes the parent element and focuses the newly added instance.\n *\n * @param parentCslp The parent cslp value.\n * @param index The index of the new instance.\n * @returns void\n *\n * We can evolve the retry logic, as different use cases arise.\n * Currently, if the new element is not found after the first mutation, we until\n * WAIT_FOR_NEW_INSTANCE_TIMEOUT, expecting that the new instance/block will be\n * found in later mutations and we can focus + disconnect then.\n * We also ensure there is only one setTimeout scheduled.\n */\nexport function observeParentAndFocusNewInstance({\n parentCslp,\n index,\n}: {\n parentCslp: string;\n index: number;\n}): void {\n const parent = document.querySelector(\n `[data-cslp='${parentCslp}']`\n ) as HTMLElement;\n\n if (parent) {\n const expectedCslp = [parentCslp, index].join(\".\");\n\n let hasObserverDisconnected = false;\n let timeoutId: ReturnType<typeof setTimeout> | null = null;\n\n const mutationObserver = new MutationObserver(\n (_mutations, observer) => {\n const newInstance = parent.querySelector(\n `[data-cslp='${expectedCslp}']`\n ) as HTMLElement | null;\n if (newInstance) {\n // this is how we also navigate to parent elements, but parent elements\n // are never primitive fields, the instances can be and this steals\n // focus from the form and puts it on the canvas.\n // So currently for a singleline multiple field, the form opens but we\n // come back to the canvas.\n // TODO - maybe we should not focus the content-editable\n // TODO - temp fix. We remove our empty block div once the new block arrives\n // but we focus the element before that and then the block shifts.\n // For some reason, the window resize event also does not trigger\n setTimeout(() => newInstance.click(), 350);\n observer.disconnect();\n hasObserverDisconnected = true;\n return;\n }\n if (!hasObserverDisconnected && !timeoutId) {\n // disconnect the observer whether we found the new instance or not\n // after timeout\n timeoutId = setTimeout(() => {\n observer.disconnect();\n hasObserverDisconnected = false;\n }, WAIT_FOR_NEW_INSTANCE_TIMEOUT);\n }\n }\n );\n mutationObserver.observe(parent, {\n childList: true,\n // watch subtrees as there may be wrapper elements\n subtree: true,\n // we don't need to watch for attribute changes\n attributes: false,\n });\n }\n}\n"],"mappings":"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","names":["getChildrenDirection","visualBuilderPostMessage","addInstanceButtons"]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/visualBuilder/utils/multipleElementAddButton.ts"],"sourcesContent":["import { VisualBuilderCslpEventDetails } from \"../types/visualBuilder.types\";\nimport {\n generateAddInstanceButton,\n getAddInstanceButtons,\n} from \"../generators/generateAddInstanceButtons\";\nimport getChildrenDirection from \"./getChildrenDirection\";\nimport { hideOverlay } from \"../generators/generateOverlay\";\nimport { hideHoverOutline } from \"../listeners/mouseHover\";\nimport { ISchemaFieldMap } from \"./types/index.types\";\nimport { signal } from \"@preact/signals\";\n\nconst WAIT_FOR_NEW_INSTANCE_TIMEOUT = 4000;\n\n/**\n * The function that handles the add instance buttons for multiple fields.\n * @param eventDetails The details containing the field metadata and cslp value.\n * @param elements The elements object that contain the editable element and visual builder wrapper.\n * @param config The configuration object that contains the expected field data and disabled state.\n * @returns void\n */\nexport function handleAddButtonsForMultiple(\n eventDetails: VisualBuilderCslpEventDetails,\n elements: {\n editableElement: Element | null;\n visualBuilderContainer: HTMLDivElement | null;\n resizeObserver: ResizeObserver;\n },\n config: {\n fieldSchema: ISchemaFieldMap;\n /**\n * expectedFieldData is the value of the whole multiple field (an array)\n */\n expectedFieldData: any;\n disabled: boolean;\n label: string | undefined;\n }\n): void {\n const { editableElement, visualBuilderContainer, resizeObserver } =\n elements;\n const { expectedFieldData, fieldSchema, disabled, label } = config;\n\n const parentCslpValue =\n eventDetails.fieldMetadata.multipleFieldMetadata?.parentDetails\n ?.parentCslpValue;\n\n if (!editableElement || !parentCslpValue) {\n return;\n }\n\n const direction = getChildrenDirection(editableElement, parentCslpValue);\n if (direction === \"none\" || !visualBuilderContainer) {\n return;\n }\n\n const targetDOMDimension = editableElement.getBoundingClientRect();\n removeAddInstanceButtons(\n {\n visualBuilderContainer: visualBuilderContainer,\n eventTarget: null,\n overlayWrapper: null,\n },\n true\n );\n\n const overlayWrapper = visualBuilderContainer.querySelector(\n \".visual-builder__overlay__wrapper\"\n );\n const focusedToolbar = visualBuilderContainer.querySelector(\n \".visual-builder__focused-toolbar\"\n );\n\n const hideOverlayAndHoverOutline = () => {\n hideHoverOutline(visualBuilderContainer);\n hideOverlay({\n visualBuilderContainer: visualBuilderContainer,\n visualBuilderOverlayWrapper: overlayWrapper as HTMLDivElement,\n focusedToolbar: focusedToolbar as HTMLDivElement,\n resizeObserver,\n });\n };\n\n if (disabled) {\n return;\n }\n\n // is whole field and not a single instance of the multiple field\n const isField =\n eventDetails.fieldMetadata.instance.fieldPathWithIndex ===\n eventDetails.fieldMetadata.fieldPathWithIndex;\n\n const prevIndex = isField\n ? 0\n : eventDetails.fieldMetadata.multipleFieldMetadata.index;\n const nextIndex = isField\n ? expectedFieldData.length\n : eventDetails.fieldMetadata.multipleFieldMetadata.index + 1;\n\n const parentCslp = isField ? eventDetails.cslpData : parentCslpValue;\n\n const onMessageSent = (index: number) => {\n hideOverlayAndHoverOutline();\n observeParentAndFocusNewInstance({\n parentCslp,\n index,\n });\n };\n\n // this is a shared loading state between the\n // next and previous button for the duration\n // between the add-instance post message being\n // sent and receiving a response for it.\n const loading = signal(false);\n\n const previousButton = generateAddInstanceButton({\n fieldSchema,\n value: expectedFieldData,\n fieldMetadata: eventDetails.fieldMetadata,\n index: prevIndex,\n onClick: onMessageSent.bind(null, prevIndex),\n loading,\n label,\n });\n\n const nextButton = generateAddInstanceButton({\n fieldSchema,\n value: expectedFieldData,\n fieldMetadata: eventDetails.fieldMetadata,\n index: nextIndex,\n onClick: onMessageSent.bind(null, nextIndex),\n loading,\n label,\n });\n\n if (!visualBuilderContainer.contains(previousButton)) {\n visualBuilderContainer.appendChild(previousButton);\n }\n\n if (!visualBuilderContainer.contains(nextButton)) {\n visualBuilderContainer.appendChild(nextButton);\n }\n\n if (direction === \"horizontal\") {\n const middleHeight =\n targetDOMDimension.top +\n (targetDOMDimension.bottom - targetDOMDimension.top) / 2 +\n window.scrollY;\n previousButton.style.left = `${targetDOMDimension.left}px`;\n previousButton.style.top = `${middleHeight}px`;\n\n nextButton.style.left = `${targetDOMDimension.right}px`;\n nextButton.style.top = `${middleHeight}px`;\n } else {\n const middleWidth =\n targetDOMDimension.left +\n (targetDOMDimension.right - targetDOMDimension.left) / 2;\n previousButton.style.left = `${middleWidth}px`;\n previousButton.style.top = `${\n targetDOMDimension.top + window.scrollY\n }px`;\n\n nextButton.style.left = `${middleWidth}px`;\n nextButton.style.top = `${\n targetDOMDimension.bottom + window.scrollY\n }px`;\n }\n}\n\nexport function removeAddInstanceButtons(\n elements: {\n visualBuilderContainer: HTMLDivElement | null;\n overlayWrapper: HTMLDivElement | null;\n eventTarget: EventTarget | null;\n },\n forceRemoveAll = false\n): void {\n const { visualBuilderContainer, overlayWrapper, eventTarget } = elements;\n\n if (!visualBuilderContainer) {\n return;\n }\n\n if (forceRemoveAll) {\n const addInstanceButtons = getAddInstanceButtons(\n visualBuilderContainer,\n true\n );\n\n addInstanceButtons?.forEach((button) => button.remove());\n }\n\n const addInstanceButtons = getAddInstanceButtons(visualBuilderContainer);\n\n if (!addInstanceButtons) {\n return;\n }\n\n const [previousButton, nextButton] = addInstanceButtons;\n\n if (overlayWrapper?.classList.contains(\"visible\")) {\n return;\n }\n\n if (\n eventTarget &&\n (previousButton.contains(eventTarget as Node) ||\n nextButton.contains(eventTarget as Node))\n ) {\n return;\n }\n\n nextButton.remove();\n previousButton.remove();\n}\n\n/**\n * This function observes the parent element and focuses the newly added instance.\n *\n * @param parentCslp The parent cslp value.\n * @param index The index of the new instance.\n * @returns void\n *\n * We can evolve the retry logic, as different use cases arise.\n * Currently, if the new element is not found after the first mutation, we until\n * WAIT_FOR_NEW_INSTANCE_TIMEOUT, expecting that the new instance/block will be\n * found in later mutations and we can focus + disconnect then.\n * We also ensure there is only one setTimeout scheduled.\n */\nexport function observeParentAndFocusNewInstance({\n parentCslp,\n index,\n}: {\n parentCslp: string;\n index: number;\n}): void {\n const parent = document.querySelector(\n `[data-cslp='${parentCslp}']`\n ) as HTMLElement;\n\n if (parent) {\n const expectedCslp = [parentCslp, index].join(\".\");\n\n let hasObserverDisconnected = false;\n let timeoutId: ReturnType<typeof setTimeout> | null = null;\n\n const mutationObserver = new MutationObserver(\n (_mutations, observer) => {\n const newInstance = parent.querySelector(\n `[data-cslp='${expectedCslp}']`\n ) as HTMLElement | null;\n if (newInstance) {\n // this is how we also navigate to parent elements, but parent elements\n // are never primitive fields, the instances can be and this steals\n // focus from the form and puts it on the canvas.\n // So currently for a singleline multiple field, the form opens but we\n // come back to the canvas.\n // TODO - maybe we should not focus the content-editable\n // TODO - temp fix. We remove our empty block div once the new block arrives\n // but we focus the element before that and then the block shifts.\n // For some reason, the window resize event also does not trigger\n setTimeout(() => newInstance.click(), 350);\n observer.disconnect();\n hasObserverDisconnected = true;\n return;\n }\n if (!hasObserverDisconnected && !timeoutId) {\n // disconnect the observer whether we found the new instance or not\n // after timeout\n timeoutId = setTimeout(() => {\n observer.disconnect();\n hasObserverDisconnected = false;\n }, WAIT_FOR_NEW_INSTANCE_TIMEOUT);\n }\n }\n );\n mutationObserver.observe(parent, {\n childList: true,\n // watch subtrees as there may be wrapper elements\n subtree: true,\n // we don't need to watch for attribute changes\n attributes: false,\n });\n }\n}\n"],"mappings":"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","names":["getChildrenDirection","addInstanceButtons"]}
|
|
@@ -29,7 +29,7 @@ declare function removeAddInstanceButtons(elements: {
|
|
|
29
29
|
eventTarget: EventTarget | null;
|
|
30
30
|
}, forceRemoveAll?: boolean): void;
|
|
31
31
|
/**
|
|
32
|
-
* This function
|
|
32
|
+
* This function observes the parent element and focuses the newly added instance.
|
|
33
33
|
*
|
|
34
34
|
* @param parentCslp The parent cslp value.
|
|
35
35
|
* @param index The index of the new instance.
|
|
@@ -29,7 +29,7 @@ declare function removeAddInstanceButtons(elements: {
|
|
|
29
29
|
eventTarget: EventTarget | null;
|
|
30
30
|
}, forceRemoveAll?: boolean): void;
|
|
31
31
|
/**
|
|
32
|
-
* This function
|
|
32
|
+
* This function observes the parent element and focuses the newly added instance.
|
|
33
33
|
*
|
|
34
34
|
* @param parentCslp The parent cslp value.
|
|
35
35
|
* @param index The index of the new instance.
|
|
@@ -5,11 +5,10 @@ import {
|
|
|
5
5
|
generateAddInstanceButton,
|
|
6
6
|
getAddInstanceButtons
|
|
7
7
|
} from "../generators/generateAddInstanceButtons.js";
|
|
8
|
-
import visualBuilderPostMessage from "./visualBuilderPostMessage.js";
|
|
9
|
-
import { VisualBuilderPostMessageEvents } from "./types/postMessage.types.js";
|
|
10
8
|
import getChildrenDirection from "./getChildrenDirection.js";
|
|
11
9
|
import { hideOverlay } from "../generators/generateOverlay.js";
|
|
12
10
|
import { hideHoverOutline } from "../listeners/mouseHover.js";
|
|
11
|
+
import { signal } from "@preact/signals";
|
|
13
12
|
var WAIT_FOR_NEW_INSTANCE_TIMEOUT = 4e3;
|
|
14
13
|
function handleAddButtonsForMultiple(eventDetails, elements, config) {
|
|
15
14
|
const { editableElement, visualBuilderContainer, resizeObserver } = elements;
|
|
@@ -60,27 +59,24 @@ function handleAddButtonsForMultiple(eventDetails, elements, config) {
|
|
|
60
59
|
index
|
|
61
60
|
});
|
|
62
61
|
};
|
|
62
|
+
const loading = signal(false);
|
|
63
63
|
const previousButton = generateAddInstanceButton({
|
|
64
|
-
onClick: () => {
|
|
65
|
-
visualBuilderPostMessage?.send(VisualBuilderPostMessageEvents.ADD_INSTANCE, {
|
|
66
|
-
fieldMetadata: eventDetails.fieldMetadata,
|
|
67
|
-
index: prevIndex
|
|
68
|
-
}).then(onMessageSent.bind(null, prevIndex));
|
|
69
|
-
},
|
|
70
|
-
label,
|
|
71
64
|
fieldSchema,
|
|
72
|
-
value: expectedFieldData
|
|
65
|
+
value: expectedFieldData,
|
|
66
|
+
fieldMetadata: eventDetails.fieldMetadata,
|
|
67
|
+
index: prevIndex,
|
|
68
|
+
onClick: onMessageSent.bind(null, prevIndex),
|
|
69
|
+
loading,
|
|
70
|
+
label
|
|
73
71
|
});
|
|
74
72
|
const nextButton = generateAddInstanceButton({
|
|
75
|
-
onClick: () => {
|
|
76
|
-
visualBuilderPostMessage?.send(VisualBuilderPostMessageEvents.ADD_INSTANCE, {
|
|
77
|
-
fieldMetadata: eventDetails.fieldMetadata,
|
|
78
|
-
index: nextIndex
|
|
79
|
-
}).then(onMessageSent.bind(null, nextIndex));
|
|
80
|
-
},
|
|
81
|
-
label,
|
|
82
73
|
fieldSchema,
|
|
83
|
-
value: expectedFieldData
|
|
74
|
+
value: expectedFieldData,
|
|
75
|
+
fieldMetadata: eventDetails.fieldMetadata,
|
|
76
|
+
index: nextIndex,
|
|
77
|
+
onClick: onMessageSent.bind(null, nextIndex),
|
|
78
|
+
loading,
|
|
79
|
+
label
|
|
84
80
|
});
|
|
85
81
|
if (!visualBuilderContainer.contains(previousButton)) {
|
|
86
82
|
visualBuilderContainer.appendChild(previousButton);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/visualBuilder/utils/multipleElementAddButton.ts"],"sourcesContent":["import { VisualBuilderCslpEventDetails } from \"../types/visualBuilder.types\";\nimport {\n generateAddInstanceButton,\n getAddInstanceButtons,\n} from \"../generators/generateAddInstanceButtons\";\nimport visualBuilderPostMessage from \"./visualBuilderPostMessage\";\nimport { VisualBuilderPostMessageEvents } from \"./types/postMessage.types\";\nimport getChildrenDirection from \"./getChildrenDirection\";\nimport { hideOverlay } from \"../generators/generateOverlay\";\nimport { hideHoverOutline } from \"../listeners/mouseHover\";\nimport { ISchemaFieldMap } from \"./types/index.types\";\n\nconst WAIT_FOR_NEW_INSTANCE_TIMEOUT = 4000;\n\n/**\n * The function that handles the add instance buttons for multiple fields.\n * @param eventDetails The details containing the field metadata and cslp value.\n * @param elements The elements object that contain the editable element and visual builder wrapper.\n * @param config The configuration object that contains the expected field data and disabled state.\n * @returns void\n */\nexport function handleAddButtonsForMultiple(\n eventDetails: VisualBuilderCslpEventDetails,\n elements: {\n editableElement: Element | null;\n visualBuilderContainer: HTMLDivElement | null;\n resizeObserver: ResizeObserver;\n },\n config: {\n fieldSchema: ISchemaFieldMap;\n /**\n * expectedFieldData is the value of the whole multiple field (an array)\n */\n expectedFieldData: any;\n disabled: boolean;\n label: string | undefined;\n }\n): void {\n const { editableElement, visualBuilderContainer, resizeObserver } =\n elements;\n const { expectedFieldData, fieldSchema, disabled, label } = config;\n\n const parentCslpValue =\n eventDetails.fieldMetadata.multipleFieldMetadata?.parentDetails\n ?.parentCslpValue;\n\n if (!editableElement || !parentCslpValue) {\n return;\n }\n\n const direction = getChildrenDirection(editableElement, parentCslpValue);\n if (direction === \"none\" || !visualBuilderContainer) {\n return;\n }\n\n const targetDOMDimension = editableElement.getBoundingClientRect();\n removeAddInstanceButtons(\n {\n visualBuilderContainer: visualBuilderContainer,\n eventTarget: null,\n overlayWrapper: null,\n },\n true\n );\n\n const overlayWrapper = visualBuilderContainer.querySelector(\n \".visual-builder__overlay__wrapper\"\n );\n const focusedToolbar = visualBuilderContainer.querySelector(\n \".visual-builder__focused-toolbar\"\n );\n\n const hideOverlayAndHoverOutline = () => {\n hideHoverOutline(visualBuilderContainer);\n hideOverlay({\n visualBuilderContainer: visualBuilderContainer,\n visualBuilderOverlayWrapper: overlayWrapper as HTMLDivElement,\n focusedToolbar: focusedToolbar as HTMLDivElement,\n resizeObserver,\n });\n };\n\n if (disabled) {\n return;\n }\n\n // is whole field and not a single instance of the multiple field\n const isField =\n eventDetails.fieldMetadata.instance.fieldPathWithIndex ===\n eventDetails.fieldMetadata.fieldPathWithIndex;\n\n const prevIndex = isField\n ? 0\n : eventDetails.fieldMetadata.multipleFieldMetadata.index;\n const nextIndex = isField\n ? expectedFieldData.length\n : eventDetails.fieldMetadata.multipleFieldMetadata.index + 1;\n\n const parentCslp = isField ? eventDetails.cslpData : parentCslpValue;\n\n const onMessageSent = (index: number) => {\n hideOverlayAndHoverOutline();\n observeParentAndFocusNewInstance({\n parentCslp,\n index,\n });\n };\n\n const previousButton = generateAddInstanceButton({\n onClick: () => {\n visualBuilderPostMessage\n ?.send(VisualBuilderPostMessageEvents.ADD_INSTANCE, {\n fieldMetadata: eventDetails.fieldMetadata,\n index: prevIndex,\n })\n .then(onMessageSent.bind(null, prevIndex));\n },\n label,\n fieldSchema,\n value: expectedFieldData,\n });\n\n const nextButton = generateAddInstanceButton({\n onClick: () => {\n visualBuilderPostMessage\n ?.send(VisualBuilderPostMessageEvents.ADD_INSTANCE, {\n fieldMetadata: eventDetails.fieldMetadata,\n index: nextIndex,\n })\n .then(onMessageSent.bind(null, nextIndex));\n },\n label,\n fieldSchema,\n value: expectedFieldData,\n });\n\n if (!visualBuilderContainer.contains(previousButton)) {\n visualBuilderContainer.appendChild(previousButton);\n }\n\n if (!visualBuilderContainer.contains(nextButton)) {\n visualBuilderContainer.appendChild(nextButton);\n }\n\n if (direction === \"horizontal\") {\n const middleHeight =\n targetDOMDimension.top +\n (targetDOMDimension.bottom - targetDOMDimension.top) / 2 +\n window.scrollY;\n previousButton.style.left = `${targetDOMDimension.left}px`;\n previousButton.style.top = `${middleHeight}px`;\n\n nextButton.style.left = `${targetDOMDimension.right}px`;\n nextButton.style.top = `${middleHeight}px`;\n } else {\n const middleWidth =\n targetDOMDimension.left +\n (targetDOMDimension.right - targetDOMDimension.left) / 2;\n previousButton.style.left = `${middleWidth}px`;\n previousButton.style.top = `${\n targetDOMDimension.top + window.scrollY\n }px`;\n\n nextButton.style.left = `${middleWidth}px`;\n nextButton.style.top = `${\n targetDOMDimension.bottom + window.scrollY\n }px`;\n }\n}\n\nexport function removeAddInstanceButtons(\n elements: {\n visualBuilderContainer: HTMLDivElement | null;\n overlayWrapper: HTMLDivElement | null;\n eventTarget: EventTarget | null;\n },\n forceRemoveAll = false\n): void {\n const { visualBuilderContainer, overlayWrapper, eventTarget } = elements;\n\n if (!visualBuilderContainer) {\n return;\n }\n\n if (forceRemoveAll) {\n const addInstanceButtons = getAddInstanceButtons(\n visualBuilderContainer,\n true\n );\n\n addInstanceButtons?.forEach((button) => button.remove());\n }\n\n const addInstanceButtons = getAddInstanceButtons(visualBuilderContainer);\n\n if (!addInstanceButtons) {\n return;\n }\n\n const [previousButton, nextButton] = addInstanceButtons;\n\n if (overlayWrapper?.classList.contains(\"visible\")) {\n return;\n }\n\n if (\n eventTarget &&\n (previousButton.contains(eventTarget as Node) ||\n nextButton.contains(eventTarget as Node))\n ) {\n return;\n }\n\n nextButton.remove();\n previousButton.remove();\n}\n\n/**\n * This function that observes the parent element and focuses the newly added instance.\n *\n * @param parentCslp The parent cslp value.\n * @param index The index of the new instance.\n * @returns void\n *\n * We can evolve the retry logic, as different use cases arise.\n * Currently, if the new element is not found after the first mutation, we until\n * WAIT_FOR_NEW_INSTANCE_TIMEOUT, expecting that the new instance/block will be\n * found in later mutations and we can focus + disconnect then.\n * We also ensure there is only one setTimeout scheduled.\n */\nexport function observeParentAndFocusNewInstance({\n parentCslp,\n index,\n}: {\n parentCslp: string;\n index: number;\n}): void {\n const parent = document.querySelector(\n `[data-cslp='${parentCslp}']`\n ) as HTMLElement;\n\n if (parent) {\n const expectedCslp = [parentCslp, index].join(\".\");\n\n let hasObserverDisconnected = false;\n let timeoutId: ReturnType<typeof setTimeout> | null = null;\n\n const mutationObserver = new MutationObserver(\n (_mutations, observer) => {\n const newInstance = parent.querySelector(\n `[data-cslp='${expectedCslp}']`\n ) as HTMLElement | null;\n if (newInstance) {\n // this is how we also navigate to parent elements, but parent elements\n // are never primitive fields, the instances can be and this steals\n // focus from the form and puts it on the canvas.\n // So currently for a singleline multiple field, the form opens but we\n // come back to the canvas.\n // TODO - maybe we should not focus the content-editable\n // TODO - temp fix. We remove our empty block div once the new block arrives\n // but we focus the element before that and then the block shifts.\n // For some reason, the window resize event also does not trigger\n setTimeout(() => newInstance.click(), 350);\n observer.disconnect();\n hasObserverDisconnected = true;\n return;\n }\n if (!hasObserverDisconnected && !timeoutId) {\n // disconnect the observer whether we found the new instance or not\n // after timeout\n timeoutId = setTimeout(() => {\n observer.disconnect();\n hasObserverDisconnected = false;\n }, WAIT_FOR_NEW_INSTANCE_TIMEOUT);\n }\n }\n );\n mutationObserver.observe(parent, {\n childList: true,\n // watch subtrees as there may be wrapper elements\n subtree: true,\n // we don't need to watch for attribute changes\n attributes: false,\n });\n }\n}\n"],"mappings":"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","names":["addInstanceButtons"]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/visualBuilder/utils/multipleElementAddButton.ts"],"sourcesContent":["import { VisualBuilderCslpEventDetails } from \"../types/visualBuilder.types\";\nimport {\n generateAddInstanceButton,\n getAddInstanceButtons,\n} from \"../generators/generateAddInstanceButtons\";\nimport getChildrenDirection from \"./getChildrenDirection\";\nimport { hideOverlay } from \"../generators/generateOverlay\";\nimport { hideHoverOutline } from \"../listeners/mouseHover\";\nimport { ISchemaFieldMap } from \"./types/index.types\";\nimport { signal } from \"@preact/signals\";\n\nconst WAIT_FOR_NEW_INSTANCE_TIMEOUT = 4000;\n\n/**\n * The function that handles the add instance buttons for multiple fields.\n * @param eventDetails The details containing the field metadata and cslp value.\n * @param elements The elements object that contain the editable element and visual builder wrapper.\n * @param config The configuration object that contains the expected field data and disabled state.\n * @returns void\n */\nexport function handleAddButtonsForMultiple(\n eventDetails: VisualBuilderCslpEventDetails,\n elements: {\n editableElement: Element | null;\n visualBuilderContainer: HTMLDivElement | null;\n resizeObserver: ResizeObserver;\n },\n config: {\n fieldSchema: ISchemaFieldMap;\n /**\n * expectedFieldData is the value of the whole multiple field (an array)\n */\n expectedFieldData: any;\n disabled: boolean;\n label: string | undefined;\n }\n): void {\n const { editableElement, visualBuilderContainer, resizeObserver } =\n elements;\n const { expectedFieldData, fieldSchema, disabled, label } = config;\n\n const parentCslpValue =\n eventDetails.fieldMetadata.multipleFieldMetadata?.parentDetails\n ?.parentCslpValue;\n\n if (!editableElement || !parentCslpValue) {\n return;\n }\n\n const direction = getChildrenDirection(editableElement, parentCslpValue);\n if (direction === \"none\" || !visualBuilderContainer) {\n return;\n }\n\n const targetDOMDimension = editableElement.getBoundingClientRect();\n removeAddInstanceButtons(\n {\n visualBuilderContainer: visualBuilderContainer,\n eventTarget: null,\n overlayWrapper: null,\n },\n true\n );\n\n const overlayWrapper = visualBuilderContainer.querySelector(\n \".visual-builder__overlay__wrapper\"\n );\n const focusedToolbar = visualBuilderContainer.querySelector(\n \".visual-builder__focused-toolbar\"\n );\n\n const hideOverlayAndHoverOutline = () => {\n hideHoverOutline(visualBuilderContainer);\n hideOverlay({\n visualBuilderContainer: visualBuilderContainer,\n visualBuilderOverlayWrapper: overlayWrapper as HTMLDivElement,\n focusedToolbar: focusedToolbar as HTMLDivElement,\n resizeObserver,\n });\n };\n\n if (disabled) {\n return;\n }\n\n // is whole field and not a single instance of the multiple field\n const isField =\n eventDetails.fieldMetadata.instance.fieldPathWithIndex ===\n eventDetails.fieldMetadata.fieldPathWithIndex;\n\n const prevIndex = isField\n ? 0\n : eventDetails.fieldMetadata.multipleFieldMetadata.index;\n const nextIndex = isField\n ? expectedFieldData.length\n : eventDetails.fieldMetadata.multipleFieldMetadata.index + 1;\n\n const parentCslp = isField ? eventDetails.cslpData : parentCslpValue;\n\n const onMessageSent = (index: number) => {\n hideOverlayAndHoverOutline();\n observeParentAndFocusNewInstance({\n parentCslp,\n index,\n });\n };\n\n // this is a shared loading state between the\n // next and previous button for the duration\n // between the add-instance post message being\n // sent and receiving a response for it.\n const loading = signal(false);\n\n const previousButton = generateAddInstanceButton({\n fieldSchema,\n value: expectedFieldData,\n fieldMetadata: eventDetails.fieldMetadata,\n index: prevIndex,\n onClick: onMessageSent.bind(null, prevIndex),\n loading,\n label,\n });\n\n const nextButton = generateAddInstanceButton({\n fieldSchema,\n value: expectedFieldData,\n fieldMetadata: eventDetails.fieldMetadata,\n index: nextIndex,\n onClick: onMessageSent.bind(null, nextIndex),\n loading,\n label,\n });\n\n if (!visualBuilderContainer.contains(previousButton)) {\n visualBuilderContainer.appendChild(previousButton);\n }\n\n if (!visualBuilderContainer.contains(nextButton)) {\n visualBuilderContainer.appendChild(nextButton);\n }\n\n if (direction === \"horizontal\") {\n const middleHeight =\n targetDOMDimension.top +\n (targetDOMDimension.bottom - targetDOMDimension.top) / 2 +\n window.scrollY;\n previousButton.style.left = `${targetDOMDimension.left}px`;\n previousButton.style.top = `${middleHeight}px`;\n\n nextButton.style.left = `${targetDOMDimension.right}px`;\n nextButton.style.top = `${middleHeight}px`;\n } else {\n const middleWidth =\n targetDOMDimension.left +\n (targetDOMDimension.right - targetDOMDimension.left) / 2;\n previousButton.style.left = `${middleWidth}px`;\n previousButton.style.top = `${\n targetDOMDimension.top + window.scrollY\n }px`;\n\n nextButton.style.left = `${middleWidth}px`;\n nextButton.style.top = `${\n targetDOMDimension.bottom + window.scrollY\n }px`;\n }\n}\n\nexport function removeAddInstanceButtons(\n elements: {\n visualBuilderContainer: HTMLDivElement | null;\n overlayWrapper: HTMLDivElement | null;\n eventTarget: EventTarget | null;\n },\n forceRemoveAll = false\n): void {\n const { visualBuilderContainer, overlayWrapper, eventTarget } = elements;\n\n if (!visualBuilderContainer) {\n return;\n }\n\n if (forceRemoveAll) {\n const addInstanceButtons = getAddInstanceButtons(\n visualBuilderContainer,\n true\n );\n\n addInstanceButtons?.forEach((button) => button.remove());\n }\n\n const addInstanceButtons = getAddInstanceButtons(visualBuilderContainer);\n\n if (!addInstanceButtons) {\n return;\n }\n\n const [previousButton, nextButton] = addInstanceButtons;\n\n if (overlayWrapper?.classList.contains(\"visible\")) {\n return;\n }\n\n if (\n eventTarget &&\n (previousButton.contains(eventTarget as Node) ||\n nextButton.contains(eventTarget as Node))\n ) {\n return;\n }\n\n nextButton.remove();\n previousButton.remove();\n}\n\n/**\n * This function observes the parent element and focuses the newly added instance.\n *\n * @param parentCslp The parent cslp value.\n * @param index The index of the new instance.\n * @returns void\n *\n * We can evolve the retry logic, as different use cases arise.\n * Currently, if the new element is not found after the first mutation, we until\n * WAIT_FOR_NEW_INSTANCE_TIMEOUT, expecting that the new instance/block will be\n * found in later mutations and we can focus + disconnect then.\n * We also ensure there is only one setTimeout scheduled.\n */\nexport function observeParentAndFocusNewInstance({\n parentCslp,\n index,\n}: {\n parentCslp: string;\n index: number;\n}): void {\n const parent = document.querySelector(\n `[data-cslp='${parentCslp}']`\n ) as HTMLElement;\n\n if (parent) {\n const expectedCslp = [parentCslp, index].join(\".\");\n\n let hasObserverDisconnected = false;\n let timeoutId: ReturnType<typeof setTimeout> | null = null;\n\n const mutationObserver = new MutationObserver(\n (_mutations, observer) => {\n const newInstance = parent.querySelector(\n `[data-cslp='${expectedCslp}']`\n ) as HTMLElement | null;\n if (newInstance) {\n // this is how we also navigate to parent elements, but parent elements\n // are never primitive fields, the instances can be and this steals\n // focus from the form and puts it on the canvas.\n // So currently for a singleline multiple field, the form opens but we\n // come back to the canvas.\n // TODO - maybe we should not focus the content-editable\n // TODO - temp fix. We remove our empty block div once the new block arrives\n // but we focus the element before that and then the block shifts.\n // For some reason, the window resize event also does not trigger\n setTimeout(() => newInstance.click(), 350);\n observer.disconnect();\n hasObserverDisconnected = true;\n return;\n }\n if (!hasObserverDisconnected && !timeoutId) {\n // disconnect the observer whether we found the new instance or not\n // after timeout\n timeoutId = setTimeout(() => {\n observer.disconnect();\n hasObserverDisconnected = false;\n }, WAIT_FOR_NEW_INSTANCE_TIMEOUT);\n }\n }\n );\n mutationObserver.observe(parent, {\n childList: true,\n // watch subtrees as there may be wrapper elements\n subtree: true,\n // we don't need to watch for attribute changes\n attributes: false,\n });\n }\n}\n"],"mappings":"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","names":["addInstanceButtons"]}
|
|
@@ -0,0 +1,44 @@
|
|
|
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/utils/pasteAsPlainText.ts
|
|
21
|
+
var pasteAsPlainText_exports = {};
|
|
22
|
+
__export(pasteAsPlainText_exports, {
|
|
23
|
+
pasteAsPlainText: () => pasteAsPlainText
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(pasteAsPlainText_exports);
|
|
26
|
+
var import_lodash_es = require("lodash-es");
|
|
27
|
+
var pasteAsPlainText = (0, import_lodash_es.debounce)(
|
|
28
|
+
(e) => {
|
|
29
|
+
e.preventDefault();
|
|
30
|
+
const clipboardData = e.clipboardData;
|
|
31
|
+
document.execCommand(
|
|
32
|
+
"inserttext",
|
|
33
|
+
false,
|
|
34
|
+
clipboardData?.getData("text/plain")
|
|
35
|
+
);
|
|
36
|
+
},
|
|
37
|
+
100,
|
|
38
|
+
{ leading: true }
|
|
39
|
+
);
|
|
40
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
41
|
+
0 && (module.exports = {
|
|
42
|
+
pasteAsPlainText
|
|
43
|
+
});
|
|
44
|
+
//# sourceMappingURL=pasteAsPlainText.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/visualBuilder/utils/pasteAsPlainText.ts"],"sourcesContent":["import { debounce } from \"lodash-es\";\n\nexport const pasteAsPlainText = debounce(\n (e: Event) => {\n e.preventDefault();\n const clipboardData = (e as ClipboardEvent).clipboardData;\n document.execCommand(\n \"inserttext\",\n false,\n clipboardData?.getData(\"text/plain\")\n );\n },\n 100,\n { leading: true }\n);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAyB;AAElB,IAAM,uBAAmB;AAAA,EAC5B,CAAC,MAAa;AACV,MAAE,eAAe;AACjB,UAAM,gBAAiB,EAAqB;AAC5C,aAAS;AAAA,MACL;AAAA,MACA;AAAA,MACA,eAAe,QAAQ,YAAY;AAAA,IACvC;AAAA,EACJ;AAAA,EACA;AAAA,EACA,EAAE,SAAS,KAAK;AACpB;","names":[]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import "../../chunk-5WRI5ZAA.js";
|
|
2
|
+
|
|
3
|
+
// src/visualBuilder/utils/pasteAsPlainText.ts
|
|
4
|
+
import { debounce } from "lodash-es";
|
|
5
|
+
var pasteAsPlainText = debounce(
|
|
6
|
+
(e) => {
|
|
7
|
+
e.preventDefault();
|
|
8
|
+
const clipboardData = e.clipboardData;
|
|
9
|
+
document.execCommand(
|
|
10
|
+
"inserttext",
|
|
11
|
+
false,
|
|
12
|
+
clipboardData?.getData("text/plain")
|
|
13
|
+
);
|
|
14
|
+
},
|
|
15
|
+
100,
|
|
16
|
+
{ leading: true }
|
|
17
|
+
);
|
|
18
|
+
export {
|
|
19
|
+
pasteAsPlainText
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=pasteAsPlainText.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/visualBuilder/utils/pasteAsPlainText.ts"],"sourcesContent":["import { debounce } from \"lodash-es\";\n\nexport const pasteAsPlainText = debounce(\n (e: Event) => {\n e.preventDefault();\n const clipboardData = (e as ClipboardEvent).clipboardData;\n document.execCommand(\n \"inserttext\",\n false,\n clipboardData?.getData(\"text/plain\")\n );\n },\n 100,\n { leading: true }\n);\n"],"mappings":";;;AAAA,SAAS,gBAAgB;AAElB,IAAM,mBAAmB;AAAA,EAC5B,CAAC,MAAa;AACV,MAAE,eAAe;AACjB,UAAM,gBAAiB,EAAqB;AAC5C,aAAS;AAAA,MACL;AAAA,MACA;AAAA,MACA,eAAe,QAAQ,YAAY;AAAA,IACvC;AAAA,EACJ;AAAA,EACA;AAAA,EACA,EAAE,SAAS,KAAK;AACpB;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/visualBuilder/utils/types/index.types.ts"],"sourcesContent":["import {\n IContentTypeRootBlocks,\n IModularBlockSingleBlock,\n} from \"../../../cms/types/contentTypeSchema.types\";\n\nexport type ISchemaIndividualFieldMap = Record<string, ISchemaFieldMap>;\n\nexport type ISchemaFieldMap = (\n | IContentTypeRootBlocks\n | (IModularBlockSingleBlock & {\n data_type: \"block\";\n display_name: string;\n })\n) & {\n non_localizable?: boolean;\n multiple?: boolean;\n field_metadata?: {\n updateRestrict?: boolean;\n isUnlinkedVariant?: boolean;\n };\n};\n\nexport interface ITraverseSchemaVisitor {\n should_visit: (\n fieldSchema: IContentTypeRootBlocks,\n path: string\n ) => boolean;\n visit: (fieldSchema: IContentTypeRootBlocks, path: string) => void;\n\n /**\n * A flat list of all the fields with its schema\n */\n fieldMap: ISchemaIndividualFieldMap;\n}\n\nexport enum FieldDataType {\n CUSTOM_FIELD = \"custom_field\",\n MULTILINE = \"multiline\",\n HTML_RTE = \"html_rte\",\n MARKDOWN_RTE = \"markdown_rte\",\n SELECT = \"select\",\n URL = \"url\",\n SINGLELINE = \"singleline\",\n JSON_RTE = \"json_rte\",\n MODULAR_BLOCK = \"modular_block\",\n LINK = \"link\",\n ISODATE = \"isodate\",\n BOOLEAN = \"boolean\",\n BLOCK = \"block\",\n NUMBER = \"number\",\n REFERENCE = \"reference\",\n GROUP = \"group\",\n EXPERIENCE_CONTAINER = \"experience_container\",\n FILE = \"file\",\n GLOBAL_FIELD = \"global_field\",\n TAXONOMY = \"taxonomy\",\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAmCO,IAAK,gBAAL,kBAAKA,mBAAL;AACH,EAAAA,eAAA,kBAAe;AACf,EAAAA,eAAA,eAAY;AACZ,EAAAA,eAAA,cAAW;AACX,EAAAA,eAAA,kBAAe;AACf,EAAAA,eAAA,YAAS;AACT,EAAAA,eAAA,SAAM;AACN,EAAAA,eAAA,gBAAa;AACb,EAAAA,eAAA,cAAW;AACX,EAAAA,eAAA,mBAAgB;AAChB,EAAAA,eAAA,UAAO;AACP,EAAAA,eAAA,aAAU;AACV,EAAAA,eAAA,aAAU;AACV,EAAAA,eAAA,WAAQ;AACR,EAAAA,eAAA,YAAS;AACT,EAAAA,eAAA,eAAY;AACZ,EAAAA,eAAA,WAAQ;AACR,EAAAA,eAAA,0BAAuB;AACvB,EAAAA,eAAA,UAAO;AACP,EAAAA,eAAA,kBAAe;AACf,EAAAA,eAAA,cAAW;AApBH,SAAAA;AAAA,GAAA;","names":["FieldDataType"]}
|
|
1
|
+
{"version":3,"sources":["../../../../../src/visualBuilder/utils/types/index.types.ts"],"sourcesContent":["import {\n IContentTypeRootBlocks,\n IModularBlockSingleBlock,\n} from \"../../../cms/types/contentTypeSchema.types\";\n\nexport type ISchemaIndividualFieldMap = Record<string, ISchemaFieldMap>;\n\nexport type ISchemaFieldMap = (\n | IContentTypeRootBlocks\n | (IModularBlockSingleBlock & {\n data_type: \"block\";\n display_name: string;\n })\n) & {\n non_localizable?: boolean;\n multiple?: boolean;\n field_metadata?: {\n updateRestrict?: boolean;\n isUnlinkedVariant?: boolean;\n };\n};\n\nexport interface ITraverseSchemaVisitor {\n should_visit: (\n fieldSchema: IContentTypeRootBlocks,\n path: string\n ) => boolean;\n visit: (fieldSchema: IContentTypeRootBlocks, path: string) => void;\n\n /**\n * A flat list of all the fields with its schema\n */\n fieldMap: ISchemaIndividualFieldMap;\n}\n\nexport enum FieldDataType {\n CUSTOM_FIELD = \"custom_field\",\n MULTILINE = \"multiline\",\n HTML_RTE = \"html_rte\",\n MARKDOWN_RTE = \"markdown_rte\",\n SELECT = \"select\",\n URL = \"url\",\n SINGLELINE = \"singleline\",\n JSON_RTE = \"json_rte\",\n MODULAR_BLOCK = \"modular_block\",\n LINK = \"link\",\n ISODATE = \"isodate\",\n BOOLEAN = \"boolean\",\n BLOCK = \"block\",\n NUMBER = \"number\",\n REFERENCE = \"reference\",\n GROUP = \"group\",\n EXPERIENCE_CONTAINER = \"experience_container\",\n FILE = \"file\",\n GLOBAL_FIELD = \"global_field\",\n TAXONOMY = \"taxonomy\",\n}\n\nexport interface VisualBuilderEditContext {\n visualBuilderContainer: HTMLDivElement;\n resizeObserver: ResizeObserver;\n lastEditedField: Element | null;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAmCO,IAAK,gBAAL,kBAAKA,mBAAL;AACH,EAAAA,eAAA,kBAAe;AACf,EAAAA,eAAA,eAAY;AACZ,EAAAA,eAAA,cAAW;AACX,EAAAA,eAAA,kBAAe;AACf,EAAAA,eAAA,YAAS;AACT,EAAAA,eAAA,SAAM;AACN,EAAAA,eAAA,gBAAa;AACb,EAAAA,eAAA,cAAW;AACX,EAAAA,eAAA,mBAAgB;AAChB,EAAAA,eAAA,UAAO;AACP,EAAAA,eAAA,aAAU;AACV,EAAAA,eAAA,aAAU;AACV,EAAAA,eAAA,WAAQ;AACR,EAAAA,eAAA,YAAS;AACT,EAAAA,eAAA,eAAY;AACZ,EAAAA,eAAA,WAAQ;AACR,EAAAA,eAAA,0BAAuB;AACvB,EAAAA,eAAA,UAAO;AACP,EAAAA,eAAA,kBAAe;AACf,EAAAA,eAAA,cAAW;AApBH,SAAAA;AAAA,GAAA;","names":["FieldDataType"]}
|
|
@@ -42,5 +42,10 @@ declare enum FieldDataType {
|
|
|
42
42
|
GLOBAL_FIELD = "global_field",
|
|
43
43
|
TAXONOMY = "taxonomy"
|
|
44
44
|
}
|
|
45
|
+
interface VisualBuilderEditContext {
|
|
46
|
+
visualBuilderContainer: HTMLDivElement;
|
|
47
|
+
resizeObserver: ResizeObserver;
|
|
48
|
+
lastEditedField: Element | null;
|
|
49
|
+
}
|
|
45
50
|
|
|
46
|
-
export { FieldDataType, type ISchemaFieldMap, type ISchemaIndividualFieldMap, type ITraverseSchemaVisitor };
|
|
51
|
+
export { FieldDataType, type ISchemaFieldMap, type ISchemaIndividualFieldMap, type ITraverseSchemaVisitor, type VisualBuilderEditContext };
|
|
@@ -42,5 +42,10 @@ declare enum FieldDataType {
|
|
|
42
42
|
GLOBAL_FIELD = "global_field",
|
|
43
43
|
TAXONOMY = "taxonomy"
|
|
44
44
|
}
|
|
45
|
+
interface VisualBuilderEditContext {
|
|
46
|
+
visualBuilderContainer: HTMLDivElement;
|
|
47
|
+
resizeObserver: ResizeObserver;
|
|
48
|
+
lastEditedField: Element | null;
|
|
49
|
+
}
|
|
45
50
|
|
|
46
|
-
export { FieldDataType, type ISchemaFieldMap, type ISchemaIndividualFieldMap, type ITraverseSchemaVisitor };
|
|
51
|
+
export { FieldDataType, type ISchemaFieldMap, type ISchemaIndividualFieldMap, type ITraverseSchemaVisitor, type VisualBuilderEditContext };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/visualBuilder/utils/types/index.types.ts"],"sourcesContent":["import {\n IContentTypeRootBlocks,\n IModularBlockSingleBlock,\n} from \"../../../cms/types/contentTypeSchema.types\";\n\nexport type ISchemaIndividualFieldMap = Record<string, ISchemaFieldMap>;\n\nexport type ISchemaFieldMap = (\n | IContentTypeRootBlocks\n | (IModularBlockSingleBlock & {\n data_type: \"block\";\n display_name: string;\n })\n) & {\n non_localizable?: boolean;\n multiple?: boolean;\n field_metadata?: {\n updateRestrict?: boolean;\n isUnlinkedVariant?: boolean;\n };\n};\n\nexport interface ITraverseSchemaVisitor {\n should_visit: (\n fieldSchema: IContentTypeRootBlocks,\n path: string\n ) => boolean;\n visit: (fieldSchema: IContentTypeRootBlocks, path: string) => void;\n\n /**\n * A flat list of all the fields with its schema\n */\n fieldMap: ISchemaIndividualFieldMap;\n}\n\nexport enum FieldDataType {\n CUSTOM_FIELD = \"custom_field\",\n MULTILINE = \"multiline\",\n HTML_RTE = \"html_rte\",\n MARKDOWN_RTE = \"markdown_rte\",\n SELECT = \"select\",\n URL = \"url\",\n SINGLELINE = \"singleline\",\n JSON_RTE = \"json_rte\",\n MODULAR_BLOCK = \"modular_block\",\n LINK = \"link\",\n ISODATE = \"isodate\",\n BOOLEAN = \"boolean\",\n BLOCK = \"block\",\n NUMBER = \"number\",\n REFERENCE = \"reference\",\n GROUP = \"group\",\n EXPERIENCE_CONTAINER = \"experience_container\",\n FILE = \"file\",\n GLOBAL_FIELD = \"global_field\",\n TAXONOMY = \"taxonomy\",\n}\n"],"mappings":";;;AAmCO,IAAK,gBAAL,kBAAKA,mBAAL;AACH,EAAAA,eAAA,kBAAe;AACf,EAAAA,eAAA,eAAY;AACZ,EAAAA,eAAA,cAAW;AACX,EAAAA,eAAA,kBAAe;AACf,EAAAA,eAAA,YAAS;AACT,EAAAA,eAAA,SAAM;AACN,EAAAA,eAAA,gBAAa;AACb,EAAAA,eAAA,cAAW;AACX,EAAAA,eAAA,mBAAgB;AAChB,EAAAA,eAAA,UAAO;AACP,EAAAA,eAAA,aAAU;AACV,EAAAA,eAAA,aAAU;AACV,EAAAA,eAAA,WAAQ;AACR,EAAAA,eAAA,YAAS;AACT,EAAAA,eAAA,eAAY;AACZ,EAAAA,eAAA,WAAQ;AACR,EAAAA,eAAA,0BAAuB;AACvB,EAAAA,eAAA,UAAO;AACP,EAAAA,eAAA,kBAAe;AACf,EAAAA,eAAA,cAAW;AApBH,SAAAA;AAAA,GAAA;","names":["FieldDataType"]}
|
|
1
|
+
{"version":3,"sources":["../../../../../src/visualBuilder/utils/types/index.types.ts"],"sourcesContent":["import {\n IContentTypeRootBlocks,\n IModularBlockSingleBlock,\n} from \"../../../cms/types/contentTypeSchema.types\";\n\nexport type ISchemaIndividualFieldMap = Record<string, ISchemaFieldMap>;\n\nexport type ISchemaFieldMap = (\n | IContentTypeRootBlocks\n | (IModularBlockSingleBlock & {\n data_type: \"block\";\n display_name: string;\n })\n) & {\n non_localizable?: boolean;\n multiple?: boolean;\n field_metadata?: {\n updateRestrict?: boolean;\n isUnlinkedVariant?: boolean;\n };\n};\n\nexport interface ITraverseSchemaVisitor {\n should_visit: (\n fieldSchema: IContentTypeRootBlocks,\n path: string\n ) => boolean;\n visit: (fieldSchema: IContentTypeRootBlocks, path: string) => void;\n\n /**\n * A flat list of all the fields with its schema\n */\n fieldMap: ISchemaIndividualFieldMap;\n}\n\nexport enum FieldDataType {\n CUSTOM_FIELD = \"custom_field\",\n MULTILINE = \"multiline\",\n HTML_RTE = \"html_rte\",\n MARKDOWN_RTE = \"markdown_rte\",\n SELECT = \"select\",\n URL = \"url\",\n SINGLELINE = \"singleline\",\n JSON_RTE = \"json_rte\",\n MODULAR_BLOCK = \"modular_block\",\n LINK = \"link\",\n ISODATE = \"isodate\",\n BOOLEAN = \"boolean\",\n BLOCK = \"block\",\n NUMBER = \"number\",\n REFERENCE = \"reference\",\n GROUP = \"group\",\n EXPERIENCE_CONTAINER = \"experience_container\",\n FILE = \"file\",\n GLOBAL_FIELD = \"global_field\",\n TAXONOMY = \"taxonomy\",\n}\n\nexport interface VisualBuilderEditContext {\n visualBuilderContainer: HTMLDivElement;\n resizeObserver: ResizeObserver;\n lastEditedField: Element | null;\n}\n"],"mappings":";;;AAmCO,IAAK,gBAAL,kBAAKA,mBAAL;AACH,EAAAA,eAAA,kBAAe;AACf,EAAAA,eAAA,eAAY;AACZ,EAAAA,eAAA,cAAW;AACX,EAAAA,eAAA,kBAAe;AACf,EAAAA,eAAA,YAAS;AACT,EAAAA,eAAA,SAAM;AACN,EAAAA,eAAA,gBAAa;AACb,EAAAA,eAAA,cAAW;AACX,EAAAA,eAAA,mBAAgB;AAChB,EAAAA,eAAA,UAAO;AACP,EAAAA,eAAA,aAAU;AACV,EAAAA,eAAA,aAAU;AACV,EAAAA,eAAA,WAAQ;AACR,EAAAA,eAAA,YAAS;AACT,EAAAA,eAAA,eAAY;AACZ,EAAAA,eAAA,WAAQ;AACR,EAAAA,eAAA,0BAAuB;AACvB,EAAAA,eAAA,UAAO;AACP,EAAAA,eAAA,kBAAe;AACf,EAAAA,eAAA,cAAW;AApBH,SAAAA;AAAA,GAAA;","names":["FieldDataType"]}
|
|
@@ -66,8 +66,9 @@ var VisualBuilderPostMessageEvents = /* @__PURE__ */ ((VisualBuilderPostMessageE
|
|
|
66
66
|
VisualBuilderPostMessageEvents2["GET_LOCALE"] = "get-locale";
|
|
67
67
|
VisualBuilderPostMessageEvents2["SEND_VARIANT_AND_LOCALE"] = "send-variant-and-locale";
|
|
68
68
|
VisualBuilderPostMessageEvents2["COLLAB_ENABLE"] = "collab-enable";
|
|
69
|
+
VisualBuilderPostMessageEvents2["COLLAB_DATA_UPDATE"] = "collab-data-update";
|
|
69
70
|
VisualBuilderPostMessageEvents2["COLLAB_DISABLE"] = "collab-disable";
|
|
70
|
-
VisualBuilderPostMessageEvents2["
|
|
71
|
+
VisualBuilderPostMessageEvents2["COLLAB_THREADS_REMOVE"] = "collab-threads-remove";
|
|
71
72
|
VisualBuilderPostMessageEvents2["COLLAB_THREAD_REOPEN"] = "collab-thread-reopen";
|
|
72
73
|
VisualBuilderPostMessageEvents2["COLLAB_THREAD_HIGHLIGHT"] = "collab-thread-highlight";
|
|
73
74
|
return VisualBuilderPostMessageEvents2;
|