@contentful/field-editor-rich-text 3.14.3 → 3.15.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/dist/cjs/ContentfulEditorProvider.js +8 -8
- package/dist/cjs/RichTextEditor.js +22 -20
- package/dist/cjs/RichTextEditor.styles.js +2 -1
- package/dist/cjs/SdkProvider.js +7 -5
- package/dist/cjs/SyncEditorChanges.js +15 -6
- package/dist/cjs/Toolbar/_tests_/toolbar.test.js +17 -15
- package/dist/cjs/Toolbar/components/EmbedEntityWidget.js +14 -10
- package/dist/cjs/Toolbar/components/EmbeddedEntityDropdownButton.js +10 -8
- package/dist/cjs/Toolbar/components/StickyToolbarWrapper.js +2 -2
- package/dist/cjs/Toolbar/index.js +33 -30
- package/dist/cjs/__fixtures__/FakeSdk.js +3 -3
- package/dist/cjs/__fixtures__/asset/index.js +10 -10
- package/dist/cjs/__fixtures__/content-type/index.js +1 -1
- package/dist/cjs/__fixtures__/entry/index.js +7 -7
- package/dist/cjs/__fixtures__/fixtures.js +8 -6
- package/dist/cjs/__fixtures__/locale/index.js +2 -2
- package/dist/cjs/__fixtures__/space/index.js +1 -1
- package/dist/cjs/constants/Schema.js +1 -0
- package/dist/cjs/dialogs/HypelinkDialog/HyperlinkDialog.js +43 -38
- package/dist/cjs/dialogs/openRichTextDialog.js +6 -4
- package/dist/cjs/dialogs/renderRichTextDialog.js +6 -4
- package/dist/cjs/helpers/__tests__/removeInternalMarks.test.js +10 -10
- package/dist/cjs/helpers/callbacks.js +3 -3
- package/dist/cjs/helpers/config.js +2 -2
- package/dist/cjs/helpers/editor.js +53 -44
- package/dist/cjs/helpers/environment.js +3 -3
- package/dist/cjs/helpers/formatDateAndTime.js +5 -4
- package/dist/cjs/helpers/getAllowedResourcesForNodeType.js +22 -5
- package/dist/cjs/helpers/getLinkedContentTypeIdsForNodeType.js +29 -5
- package/dist/cjs/helpers/nodeFactory.js +6 -6
- package/dist/cjs/helpers/sdkNavigatorSlideIn.js +14 -6
- package/dist/cjs/helpers/sdkNavigatorSlideIn.spec.js +3 -2
- package/dist/cjs/helpers/toSlateValue.js +14 -3
- package/dist/cjs/helpers/transformers.js +5 -5
- package/dist/cjs/helpers/validations.js +12 -9
- package/dist/cjs/index.js +7 -5
- package/dist/cjs/internal/constants.js +4 -2
- package/dist/cjs/internal/hooks.js +8 -6
- package/dist/cjs/internal/misc.js +15 -12
- package/dist/cjs/internal/queries.js +115 -108
- package/dist/cjs/internal/transforms.js +51 -48
- package/dist/cjs/internal/types/editor.js +3 -1
- package/dist/cjs/plugins/Break/createExitBreakPlugin.test.js +4 -3
- package/dist/cjs/plugins/Break/createResetNodePlugin.js +1 -0
- package/dist/cjs/plugins/Break/createSoftBreakPlugin.test.js +3 -3
- package/dist/cjs/plugins/CommandPalette/components/CommandList.js +35 -33
- package/dist/cjs/plugins/CommandPalette/components/CommandList.styles.js +1 -1
- package/dist/cjs/plugins/CommandPalette/components/CommandPrompt.js +7 -5
- package/dist/cjs/plugins/CommandPalette/hooks/useCommandList.js +7 -3
- package/dist/cjs/plugins/CommandPalette/onKeyDown.js +6 -1
- package/dist/cjs/plugins/CommandPalette/onKeyDown.spec.js +6 -4
- package/dist/cjs/plugins/CommandPalette/useCommands.js +3 -3
- package/dist/cjs/plugins/CommandPalette/utils/fetchEntries.js +2 -0
- package/dist/cjs/plugins/CommandPalette/utils/trimLeadingSlash.js +6 -1
- package/dist/cjs/plugins/DragAndDrop/index.js +9 -1
- package/dist/cjs/plugins/EmbeddedEntityBlock/LinkedEntityBlock.js +10 -8
- package/dist/cjs/plugins/EmbeddedEntityBlock/index.js +3 -3
- package/dist/cjs/plugins/EmbeddedEntityInline/FetchingWrappedInlineEntryCard.js +19 -17
- package/dist/cjs/plugins/EmbeddedEntityInline/LinkedEntityInline.js +9 -7
- package/dist/cjs/plugins/EmbeddedResourceBlock/LinkedResourceBlock.js +5 -5
- package/dist/cjs/plugins/EmbeddedResourceInline/FetchingWrappedResourceInlineCard.js +17 -13
- package/dist/cjs/plugins/EmbeddedResourceInline/LinkedResourceInline.js +5 -5
- package/dist/cjs/plugins/Heading/__tests__/createHeadingPlugin.test.js +32 -32
- package/dist/cjs/plugins/Heading/components/Heading.js +13 -10
- package/dist/cjs/plugins/Heading/components/ToolbarHeadingButton.js +19 -11
- package/dist/cjs/plugins/Heading/createHeadingPlugin.js +7 -2
- package/dist/cjs/plugins/Hr/index.js +19 -14
- package/dist/cjs/plugins/Hyperlink/HyperlinkModal.js +32 -28
- package/dist/cjs/plugins/Hyperlink/__tests__/createHyperlinkPlugin.test.js +8 -8
- package/dist/cjs/plugins/Hyperlink/components/EntityHyperlink.js +8 -6
- package/dist/cjs/plugins/Hyperlink/components/ResourceHyperlink.js +8 -6
- package/dist/cjs/plugins/Hyperlink/components/ToolbarHyperlinkButton.js +6 -4
- package/dist/cjs/plugins/Hyperlink/components/UrlHyperlink.js +7 -5
- package/dist/cjs/plugins/Hyperlink/components/styles.js +1 -1
- package/dist/cjs/plugins/Hyperlink/createHyperlinkPlugin.js +10 -4
- package/dist/cjs/plugins/Hyperlink/useEntityInfo.js +6 -3
- package/dist/cjs/plugins/Hyperlink/useResourceEntityInfo.js +7 -5
- package/dist/cjs/plugins/Hyperlink/utils.js +6 -14
- package/dist/cjs/plugins/List/__tests__/createListPlugin.test.js +13 -13
- package/dist/cjs/plugins/List/__tests__/insertListBreak.test.js +29 -25
- package/dist/cjs/plugins/List/__tests__/insertListFragment.test.js +22 -22
- package/dist/cjs/plugins/List/components/List.js +9 -7
- package/dist/cjs/plugins/List/components/ListItem.js +6 -4
- package/dist/cjs/plugins/List/components/ToolbarListButton.js +7 -5
- package/dist/cjs/plugins/List/createListPlugin.js +4 -0
- package/dist/cjs/plugins/List/insertListBreak.js +13 -4
- package/dist/cjs/plugins/List/insertListFragment.js +18 -5
- package/dist/cjs/plugins/List/onKeyDownList.js +7 -4
- package/dist/cjs/plugins/List/transforms/insertListItem.js +17 -2
- package/dist/cjs/plugins/List/transforms/moveListItemDown.js +8 -2
- package/dist/cjs/plugins/List/transforms/moveListItems.js +7 -2
- package/dist/cjs/plugins/List/transforms/moveListItems.test.js +15 -14
- package/dist/cjs/plugins/List/transforms/toggleList.js +8 -3
- package/dist/cjs/plugins/List/transforms/toggleList.spec.js +28 -28
- package/dist/cjs/plugins/List/transforms/unwrapList.js +7 -2
- package/dist/cjs/plugins/List/utils.js +12 -11
- package/dist/cjs/plugins/List/withList.js +6 -2
- package/dist/cjs/plugins/Marks/Bold.js +9 -7
- package/dist/cjs/plugins/Marks/Code.js +15 -7
- package/dist/cjs/plugins/Marks/Italic.js +9 -7
- package/dist/cjs/plugins/Marks/Subscript.js +10 -8
- package/dist/cjs/plugins/Marks/Superscript.js +10 -8
- package/dist/cjs/plugins/Marks/Underline.js +6 -4
- package/dist/cjs/plugins/Marks/components/MarkToolbarButton.js +9 -7
- package/dist/cjs/plugins/Marks/helpers.js +5 -5
- package/dist/cjs/plugins/Normalizer/baseRules.js +2 -0
- package/dist/cjs/plugins/Normalizer/createNormalizerPlugin.test.js +12 -12
- package/dist/cjs/plugins/Normalizer/utils.js +4 -3
- package/dist/cjs/plugins/Normalizer/withNormalizer.js +23 -3
- package/dist/cjs/plugins/Paragraph/Paragraph.js +6 -4
- package/dist/cjs/plugins/Paragraph/__tests__/createParagraphPlugin.test.js +32 -32
- package/dist/cjs/plugins/Paragraph/createParagraphPlugin.js +3 -2
- package/dist/cjs/plugins/PasteHTML/createPasteHTMLPlugin.js +9 -6
- package/dist/cjs/plugins/PasteHTML/utils/__tests__/sanitizeHTML.test.js +2 -0
- package/dist/cjs/plugins/PasteHTML/utils/sanitizeAnchors.js +9 -0
- package/dist/cjs/plugins/PasteHTML/utils/sanitizeHTML.js +17 -2
- package/dist/cjs/plugins/PasteHTML/utils/sanitizeSheets.js +13 -1
- package/dist/cjs/plugins/Quote/__test__/createQuotePlugin.test.js +21 -21
- package/dist/cjs/plugins/Quote/components/Quote.js +6 -4
- package/dist/cjs/plugins/Quote/components/ToolbarQuoteButton.js +6 -4
- package/dist/cjs/plugins/Quote/createQuotePlugin.js +1 -0
- package/dist/cjs/plugins/Quote/toggleQuote.js +5 -5
- package/dist/cjs/plugins/Quote/withQuote.js +4 -2
- package/dist/cjs/plugins/SelectOnBackspace/createSelectOnBackspacePlugin.js +1 -0
- package/dist/cjs/plugins/Table/__tests__/createTablePlugin.test.js +22 -22
- package/dist/cjs/plugins/Table/__tests__/helpers.test.js +4 -4
- package/dist/cjs/plugins/Table/actions/addColumn.js +5 -4
- package/dist/cjs/plugins/Table/actions/addRow.js +6 -3
- package/dist/cjs/plugins/Table/components/Cell.js +7 -5
- package/dist/cjs/plugins/Table/components/HeaderCell.js +7 -5
- package/dist/cjs/plugins/Table/components/Row.js +6 -4
- package/dist/cjs/plugins/Table/components/Table.js +8 -6
- package/dist/cjs/plugins/Table/components/TableActions.js +19 -16
- package/dist/cjs/plugins/Table/components/ToolbarButton.js +7 -4
- package/dist/cjs/plugins/Table/createTablePlugin.js +11 -1
- package/dist/cjs/plugins/Table/helpers.js +16 -12
- package/dist/cjs/plugins/Table/insertTableFragment.js +15 -2
- package/dist/cjs/plugins/Table/onKeyDownTable.js +10 -2
- package/dist/cjs/plugins/Table/tableTracking.js +6 -6
- package/dist/cjs/plugins/Text/__tests__/createTextPlugin.test.js +19 -17
- package/dist/cjs/plugins/Text/createTextPlugin.js +22 -5
- package/dist/cjs/plugins/Tracking/createTrackingPlugin.js +5 -4
- package/dist/cjs/plugins/Tracking/utils.js +6 -3
- package/dist/cjs/plugins/Voids/createVoidsPlugin.js +5 -0
- package/dist/cjs/plugins/Voids/transformVoid.js +1 -0
- package/dist/cjs/plugins/index.js +15 -3
- package/dist/cjs/plugins/shared/EmbeddedBlockToolbarIcon.js +12 -10
- package/dist/cjs/plugins/shared/EmbeddedBlockUtil.js +16 -6
- package/dist/cjs/plugins/shared/EmbeddedInlineToolbarIcon.js +10 -8
- package/dist/cjs/plugins/shared/EmbeddedInlineUtil.js +9 -5
- package/dist/cjs/plugins/shared/FetchingWrappedAssetCard.js +13 -11
- package/dist/cjs/plugins/shared/FetchingWrappedEntryCard.js +14 -12
- package/dist/cjs/plugins/shared/FetchingWrappedResourceCard.js +14 -11
- package/dist/cjs/plugins/shared/LinkedBlockWrapper.js +8 -4
- package/dist/cjs/plugins/shared/LinkedInlineWrapper.js +10 -6
- package/dist/cjs/plugins/shared/ResourceNewBadge.js +5 -3
- package/dist/cjs/plugins/shared/ToolbarButton.js +8 -6
- package/dist/cjs/plugins/shared/__tests__/FetchingWrappedAssetCard.test.js +10 -5
- package/dist/cjs/plugins/shared/__tests__/FetchingWrappedEntryCard.test.js +11 -6
- package/dist/cjs/plugins/shared/__tests__/FetchingWrappedResourceCard.test.js +15 -13
- package/dist/cjs/plugins/shared/utils.js +20 -3
- package/dist/cjs/test-utils/assertOutput.js +1 -0
- package/dist/cjs/test-utils/hyperscript.d.js +1 -0
- package/dist/cjs/test-utils/randomId.js +3 -1
- package/dist/cjs/test-utils/validation.js +8 -5
- package/dist/esm/ContentfulEditorProvider.js +4 -1
- package/dist/esm/RichTextEditor.js +13 -13
- package/dist/esm/RichTextEditor.styles.js +1 -0
- package/dist/esm/SdkProvider.js +2 -2
- package/dist/esm/SyncEditorChanges.js +18 -3
- package/dist/esm/Toolbar/_tests_/toolbar.test.js +12 -12
- package/dist/esm/Toolbar/components/EmbedEntityWidget.js +10 -8
- package/dist/esm/Toolbar/components/EmbeddedEntityDropdownButton.js +6 -6
- package/dist/esm/Toolbar/components/StickyToolbarWrapper.js +1 -1
- package/dist/esm/Toolbar/index.js +28 -27
- package/dist/esm/__fixtures__/FakeSdk.js +3 -3
- package/dist/esm/constants/Schema.js +1 -0
- package/dist/esm/dialogs/HypelinkDialog/HyperlinkDialog.js +34 -31
- package/dist/esm/dialogs/openRichTextDialog.js +2 -2
- package/dist/esm/dialogs/renderRichTextDialog.js +2 -2
- package/dist/esm/helpers/__tests__/removeInternalMarks.test.js +10 -10
- package/dist/esm/helpers/callbacks.js +1 -1
- package/dist/esm/helpers/config.js +9 -1
- package/dist/esm/helpers/editor.js +22 -6
- package/dist/esm/helpers/extractNodes.js +3 -1
- package/dist/esm/helpers/formatDateAndTime.js +11 -2
- package/dist/esm/helpers/getAllowedResourcesForNodeType.js +19 -2
- package/dist/esm/helpers/getLinkedContentTypeIdsForNodeType.js +26 -2
- package/dist/esm/helpers/sdkNavigatorSlideIn.js +20 -6
- package/dist/esm/helpers/sdkNavigatorSlideIn.spec.js +1 -0
- package/dist/esm/helpers/toSlateValue.js +17 -3
- package/dist/esm/helpers/validations.js +5 -1
- package/dist/esm/internal/misc.js +23 -2
- package/dist/esm/internal/queries.js +11 -2
- package/dist/esm/internal/transforms.js +14 -3
- package/dist/esm/internal/types/editor.js +3 -1
- package/dist/esm/plugins/Break/createExitBreakPlugin.test.js +4 -3
- package/dist/esm/plugins/Break/createResetNodePlugin.js +1 -0
- package/dist/esm/plugins/Break/createSoftBreakPlugin.test.js +3 -3
- package/dist/esm/plugins/CommandPalette/components/CommandList.js +30 -30
- package/dist/esm/plugins/CommandPalette/components/CommandPrompt.js +2 -2
- package/dist/esm/plugins/CommandPalette/createCommandPalettePlugin.js +11 -1
- package/dist/esm/plugins/CommandPalette/hooks/useCommandList.js +2 -0
- package/dist/esm/plugins/CommandPalette/onKeyDown.js +5 -0
- package/dist/esm/plugins/CommandPalette/onKeyDown.spec.js +2 -2
- package/dist/esm/plugins/CommandPalette/useCommands.js +3 -3
- package/dist/esm/plugins/CommandPalette/utils/fetchEntries.js +2 -0
- package/dist/esm/plugins/CommandPalette/utils/trimLeadingSlash.js +6 -1
- package/dist/esm/plugins/DragAndDrop/index.js +9 -1
- package/dist/esm/plugins/EmbeddedEntityBlock/LinkedEntityBlock.js +6 -6
- package/dist/esm/plugins/EmbeddedEntityInline/FetchingWrappedInlineEntryCard.js +14 -14
- package/dist/esm/plugins/EmbeddedEntityInline/LinkedEntityInline.js +5 -5
- package/dist/esm/plugins/EmbeddedResourceBlock/LinkedResourceBlock.js +4 -4
- package/dist/esm/plugins/EmbeddedResourceInline/FetchingWrappedResourceInlineCard.js +13 -11
- package/dist/esm/plugins/EmbeddedResourceInline/LinkedResourceInline.js +4 -4
- package/dist/esm/plugins/Heading/__tests__/createHeadingPlugin.test.js +32 -32
- package/dist/esm/plugins/Heading/components/Heading.js +8 -7
- package/dist/esm/plugins/Heading/components/ToolbarHeadingButton.js +14 -8
- package/dist/esm/plugins/Heading/createHeadingPlugin.js +6 -1
- package/dist/esm/plugins/Hr/index.js +8 -5
- package/dist/esm/plugins/Hyperlink/HyperlinkModal.js +25 -23
- package/dist/esm/plugins/Hyperlink/__tests__/createHyperlinkPlugin.test.js +8 -8
- package/dist/esm/plugins/Hyperlink/components/EntityHyperlink.js +4 -4
- package/dist/esm/plugins/Hyperlink/components/ResourceHyperlink.js +4 -4
- package/dist/esm/plugins/Hyperlink/components/ToolbarHyperlinkButton.js +2 -2
- package/dist/esm/plugins/Hyperlink/components/UrlHyperlink.js +3 -3
- package/dist/esm/plugins/Hyperlink/createHyperlinkPlugin.js +5 -1
- package/dist/esm/plugins/Hyperlink/useEntityInfo.js +6 -3
- package/dist/esm/plugins/Hyperlink/useResourceEntityInfo.js +3 -3
- package/dist/esm/plugins/Hyperlink/utils.js +2 -7
- package/dist/esm/plugins/List/__tests__/createListPlugin.test.js +13 -13
- package/dist/esm/plugins/List/__tests__/insertListBreak.test.js +29 -25
- package/dist/esm/plugins/List/__tests__/insertListFragment.test.js +22 -22
- package/dist/esm/plugins/List/components/List.js +1 -1
- package/dist/esm/plugins/List/components/ListItem.js +1 -1
- package/dist/esm/plugins/List/components/ToolbarListButton.js +3 -3
- package/dist/esm/plugins/List/createListPlugin.js +4 -0
- package/dist/esm/plugins/List/insertListBreak.js +13 -4
- package/dist/esm/plugins/List/insertListFragment.js +18 -5
- package/dist/esm/plugins/List/onKeyDownList.js +5 -2
- package/dist/esm/plugins/List/transforms/insertListItem.js +20 -3
- package/dist/esm/plugins/List/transforms/moveListItemDown.js +8 -2
- package/dist/esm/plugins/List/transforms/moveListItems.js +7 -2
- package/dist/esm/plugins/List/transforms/moveListItems.test.js +15 -14
- package/dist/esm/plugins/List/transforms/toggleList.js +8 -3
- package/dist/esm/plugins/List/transforms/toggleList.spec.js +28 -28
- package/dist/esm/plugins/List/transforms/unwrapList.js +7 -2
- package/dist/esm/plugins/List/utils.js +7 -2
- package/dist/esm/plugins/List/withList.js +6 -2
- package/dist/esm/plugins/Marks/Bold.js +2 -2
- package/dist/esm/plugins/Marks/Code.js +8 -2
- package/dist/esm/plugins/Marks/Italic.js +2 -2
- package/dist/esm/plugins/Marks/Subscript.js +2 -2
- package/dist/esm/plugins/Marks/Superscript.js +2 -2
- package/dist/esm/plugins/Marks/Underline.js +2 -2
- package/dist/esm/plugins/Marks/components/MarkToolbarButton.js +4 -4
- package/dist/esm/plugins/Marks/helpers.js +1 -1
- package/dist/esm/plugins/Normalizer/baseRules.js +4 -0
- package/dist/esm/plugins/Normalizer/createNormalizerPlugin.test.js +12 -12
- package/dist/esm/plugins/Normalizer/utils.js +1 -0
- package/dist/esm/plugins/Normalizer/withNormalizer.js +22 -2
- package/dist/esm/plugins/Paragraph/Paragraph.js +1 -1
- package/dist/esm/plugins/Paragraph/__tests__/createParagraphPlugin.test.js +32 -32
- package/dist/esm/plugins/Paragraph/createParagraphPlugin.js +2 -1
- package/dist/esm/plugins/PasteHTML/createPasteHTMLPlugin.js +9 -3
- package/dist/esm/plugins/PasteHTML/utils/__tests__/sanitizeHTML.test.js +2 -0
- package/dist/esm/plugins/PasteHTML/utils/sanitizeAnchors.js +27 -1
- package/dist/esm/plugins/PasteHTML/utils/sanitizeHTML.js +17 -2
- package/dist/esm/plugins/PasteHTML/utils/sanitizeSheets.js +13 -1
- package/dist/esm/plugins/Quote/__test__/createQuotePlugin.test.js +21 -21
- package/dist/esm/plugins/Quote/components/Quote.js +1 -1
- package/dist/esm/plugins/Quote/components/ToolbarQuoteButton.js +2 -2
- package/dist/esm/plugins/Quote/createQuotePlugin.js +1 -0
- package/dist/esm/plugins/Quote/shouldResetQuote.js +6 -1
- package/dist/esm/plugins/Quote/toggleQuote.js +1 -1
- package/dist/esm/plugins/Quote/withQuote.js +4 -2
- package/dist/esm/plugins/SelectOnBackspace/createSelectOnBackspacePlugin.js +1 -0
- package/dist/esm/plugins/Table/__tests__/createTablePlugin.test.js +22 -22
- package/dist/esm/plugins/Table/__tests__/helpers.test.js +4 -4
- package/dist/esm/plugins/Table/actions/addColumn.js +2 -1
- package/dist/esm/plugins/Table/actions/addRow.js +3 -0
- package/dist/esm/plugins/Table/components/Cell.js +2 -2
- package/dist/esm/plugins/Table/components/HeaderCell.js +2 -2
- package/dist/esm/plugins/Table/components/Row.js +1 -1
- package/dist/esm/plugins/Table/components/Table.js +3 -3
- package/dist/esm/plugins/Table/components/TableActions.js +12 -11
- package/dist/esm/plugins/Table/components/ToolbarButton.js +3 -2
- package/dist/esm/plugins/Table/createTablePlugin.js +11 -1
- package/dist/esm/plugins/Table/helpers.js +10 -1
- package/dist/esm/plugins/Table/insertTableFragment.js +15 -2
- package/dist/esm/plugins/Table/onKeyDownTable.js +10 -2
- package/dist/esm/plugins/Table/tableTracking.js +6 -6
- package/dist/esm/plugins/Text/__tests__/createTextPlugin.test.js +19 -17
- package/dist/esm/plugins/Text/createTextPlugin.js +22 -5
- package/dist/esm/plugins/Tracking/createTrackingPlugin.js +2 -1
- package/dist/esm/plugins/Tracking/utils.js +1 -0
- package/dist/esm/plugins/Voids/createVoidsPlugin.js +5 -0
- package/dist/esm/plugins/Voids/transformVoid.js +4 -1
- package/dist/esm/plugins/index.js +12 -0
- package/dist/esm/plugins/shared/EmbeddedBlockToolbarIcon.js +5 -5
- package/dist/esm/plugins/shared/EmbeddedBlockUtil.js +15 -5
- package/dist/esm/plugins/shared/EmbeddedInlineToolbarIcon.js +5 -5
- package/dist/esm/plugins/shared/EmbeddedInlineUtil.js +8 -4
- package/dist/esm/plugins/shared/FetchingWrappedAssetCard.js +8 -8
- package/dist/esm/plugins/shared/FetchingWrappedEntryCard.js +9 -9
- package/dist/esm/plugins/shared/FetchingWrappedResourceCard.js +9 -8
- package/dist/esm/plugins/shared/LinkedBlockWrapper.js +7 -3
- package/dist/esm/plugins/shared/LinkedInlineWrapper.js +5 -3
- package/dist/esm/plugins/shared/ResourceNewBadge.js +1 -1
- package/dist/esm/plugins/shared/ToolbarButton.js +3 -3
- package/dist/esm/plugins/shared/__tests__/FetchingWrappedAssetCard.test.js +5 -2
- package/dist/esm/plugins/shared/__tests__/FetchingWrappedEntryCard.test.js +5 -2
- package/dist/esm/plugins/shared/__tests__/FetchingWrappedResourceCard.test.js +8 -8
- package/dist/esm/plugins/shared/utils.js +9 -0
- package/dist/esm/test-utils/assertOutput.js +1 -0
- package/dist/esm/test-utils/hyperscript.d.js +1 -0
- package/dist/esm/test-utils/jsx.js +5 -1
- package/dist/esm/test-utils/randomId.js +3 -1
- package/dist/esm/test-utils/setEmptyDataAttribute.js +4 -1
- package/dist/esm/test-utils/validation.js +7 -4
- package/dist/types/plugins/Hyperlink/utils.d.ts +0 -1
- package/dist/types/plugins/shared/utils.d.ts +1 -0
- package/package.json +2 -2
|
@@ -15,6 +15,9 @@ function createTextPlugin(restrictedMarks = []) {
|
|
|
15
15
|
return {
|
|
16
16
|
key: 'TextPlugin',
|
|
17
17
|
handlers: {
|
|
18
|
+
// Triple selection in a non-Firefox browser undesirably selects
|
|
19
|
+
// the start of the next block. Editor.unhangRange helps removing
|
|
20
|
+
// the extra block at the end.
|
|
18
21
|
onMouseUp: (editor)=>()=>{
|
|
19
22
|
if (!editor.selection) {
|
|
20
23
|
return;
|
|
@@ -23,9 +26,16 @@ function createTextPlugin(restrictedMarks = []) {
|
|
|
23
26
|
}
|
|
24
27
|
},
|
|
25
28
|
withOverrides: (editor)=>{
|
|
26
|
-
|
|
29
|
+
// Reverts the change made upstream that caused the cursor
|
|
30
|
+
// to be trapped inside inline elements.
|
|
31
|
+
//
|
|
32
|
+
// Reverts https://github.com/ianstormtaylor/slate/pull/4578/
|
|
33
|
+
// Related https://github.com/ianstormtaylor/slate/issues/4704
|
|
34
|
+
const { insertText } = editor;
|
|
27
35
|
editor.insertText = (text)=>{
|
|
28
|
-
const { selection
|
|
36
|
+
const { selection } = editor;
|
|
37
|
+
// If the cursor is at the end of an inline, move it outside
|
|
38
|
+
// before inserting
|
|
29
39
|
if (selection && (0, _queries.isRangeCollapsed)(selection)) {
|
|
30
40
|
const inlinePath = (0, _queries.getAboveNode)(editor, {
|
|
31
41
|
match: (n)=>(0, _queries.isInline)(editor, n),
|
|
@@ -41,7 +51,8 @@ function createTextPlugin(restrictedMarks = []) {
|
|
|
41
51
|
}
|
|
42
52
|
return insertText(text);
|
|
43
53
|
};
|
|
44
|
-
|
|
54
|
+
// When pressing delete instead of backspace
|
|
55
|
+
const { deleteForward, deleteBackward } = editor;
|
|
45
56
|
editor.deleteBackward = (unit)=>{
|
|
46
57
|
deleteEmptyParagraph(unit, editor, deleteBackward);
|
|
47
58
|
};
|
|
@@ -77,8 +88,9 @@ function deleteEmptyParagraph(unit, editor, deleteFunction) {
|
|
|
77
88
|
if (entry) {
|
|
78
89
|
const [paragraphOrHeading, path] = entry;
|
|
79
90
|
const isTextEmpty = (0, _queries.isAncestorEmpty)(editor, paragraphOrHeading);
|
|
91
|
+
// We ignore paragraphs/headings that are children of ul, ol, blockquote, tables, etc
|
|
80
92
|
const isRootLevel = path.length === 1;
|
|
81
|
-
const hasSiblings = editor.children.length > 1;
|
|
93
|
+
const hasSiblings = editor.children.length > 1; // prevent editor from losing focus
|
|
82
94
|
if (isTextEmpty && isRootLevel && hasSiblings) {
|
|
83
95
|
(0, _transforms.removeNodes)(editor, {
|
|
84
96
|
at: path
|
|
@@ -112,7 +124,11 @@ function deleteEmptyParagraph(unit, editor, deleteFunction) {
|
|
|
112
124
|
deleteFunction(unit);
|
|
113
125
|
}
|
|
114
126
|
}
|
|
115
|
-
|
|
127
|
+
/**
|
|
128
|
+
* To be compatible with the old behavior we need to treat each 2 consecutive
|
|
129
|
+
* line breaks as a new paragraph when pasting as plain text (also known as
|
|
130
|
+
* paste and match style in macOS)
|
|
131
|
+
*/ function fixPasteAsPlainText(editor) {
|
|
116
132
|
editor.insertTextData = (data)=>{
|
|
117
133
|
const text = data.getData('text/plain');
|
|
118
134
|
if (!text) {
|
|
@@ -121,6 +137,7 @@ function fixPasteAsPlainText(editor) {
|
|
|
121
137
|
const lines = text.split(/\n{2}/);
|
|
122
138
|
let split = false;
|
|
123
139
|
for (const line of lines){
|
|
140
|
+
// empty lines
|
|
124
141
|
if (/^(\r\n?|\n)$/.test(line)) {
|
|
125
142
|
continue;
|
|
126
143
|
}
|
|
@@ -9,11 +9,11 @@ function _export(target, all) {
|
|
|
9
9
|
});
|
|
10
10
|
}
|
|
11
11
|
_export(exports, {
|
|
12
|
-
getPastingSource: function() {
|
|
13
|
-
return getPastingSource;
|
|
14
|
-
},
|
|
15
12
|
createTrackingPlugin: function() {
|
|
16
13
|
return createTrackingPlugin;
|
|
14
|
+
},
|
|
15
|
+
getPastingSource: function() {
|
|
16
|
+
return getPastingSource;
|
|
17
17
|
}
|
|
18
18
|
});
|
|
19
19
|
const _utils = require("./utils");
|
|
@@ -39,6 +39,7 @@ function getPastingSource(data) {
|
|
|
39
39
|
if (doc.querySelector('meta[content*="Microsoft Word"]')) {
|
|
40
40
|
return 'Microsoft Word';
|
|
41
41
|
}
|
|
42
|
+
// TODO: MS Word Online doesn't give us specific tags, we might need to have a closer look at its tracking result since we are using generic values to identify it
|
|
42
43
|
if (doc.querySelector('[style*="Arial_MSFontService"]') && (doc.querySelector('.TextRun') || doc.querySelector('.OutlineElement'))) {
|
|
43
44
|
return 'Microsoft Word Online';
|
|
44
45
|
}
|
|
@@ -76,7 +77,7 @@ const createTrackingPlugin = (onAction)=>{
|
|
|
76
77
|
return {
|
|
77
78
|
key: 'TrackingPlugin',
|
|
78
79
|
withOverrides: (editor)=>{
|
|
79
|
-
const { insertData
|
|
80
|
+
const { insertData } = editor;
|
|
80
81
|
editor.tracking = trackingActions;
|
|
81
82
|
editor.insertData = (data)=>{
|
|
82
83
|
const isCopyAndPaste = data.types.length !== 0;
|
|
@@ -8,9 +8,9 @@ Object.defineProperty(exports, "getCharacterCount", {
|
|
|
8
8
|
return getCharacterCount;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
-
const _contentfulslatejsadapter = _interop_require_wildcard(require("@contentful/contentful-slatejs-adapter"));
|
|
11
|
+
const _contentfulslatejsadapter = /*#__PURE__*/ _interop_require_wildcard(require("@contentful/contentful-slatejs-adapter"));
|
|
12
12
|
const _richtextplaintextrenderer = require("@contentful/rich-text-plain-text-renderer");
|
|
13
|
-
const _Schema = _interop_require_default(require("../../constants/Schema"));
|
|
13
|
+
const _Schema = /*#__PURE__*/ _interop_require_default(require("../../constants/Schema"));
|
|
14
14
|
function _interop_require_default(obj) {
|
|
15
15
|
return obj && obj.__esModule ? obj : {
|
|
16
16
|
default: obj
|
|
@@ -37,7 +37,9 @@ function _interop_require_wildcard(obj, nodeInterop) {
|
|
|
37
37
|
if (cache && cache.has(obj)) {
|
|
38
38
|
return cache.get(obj);
|
|
39
39
|
}
|
|
40
|
-
var newObj = {
|
|
40
|
+
var newObj = {
|
|
41
|
+
__proto__: null
|
|
42
|
+
};
|
|
41
43
|
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
42
44
|
for(var key in obj){
|
|
43
45
|
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
@@ -57,6 +59,7 @@ function _interop_require_wildcard(obj, nodeInterop) {
|
|
|
57
59
|
}
|
|
58
60
|
function getCharacterCount(editor) {
|
|
59
61
|
const document = _contentfulslatejsadapter.toContentfulDocument({
|
|
62
|
+
// eslint-disable-next-line -- parameter type is not exported @typescript-eslint/no-explicit-any
|
|
60
63
|
document: editor.children,
|
|
61
64
|
schema: _Schema.default
|
|
62
65
|
});
|
|
@@ -14,6 +14,8 @@ const createVoidsPlugin = ()=>({
|
|
|
14
14
|
key: 'VoidsPlugin',
|
|
15
15
|
exitBreak: [
|
|
16
16
|
{
|
|
17
|
+
// Inserts a new paragraph *before* a void element if it's the very first
|
|
18
|
+
// node on the editor
|
|
17
19
|
hotkey: 'enter',
|
|
18
20
|
before: true,
|
|
19
21
|
query: {
|
|
@@ -21,7 +23,10 @@ const createVoidsPlugin = ()=>({
|
|
|
21
23
|
}
|
|
22
24
|
},
|
|
23
25
|
{
|
|
26
|
+
// Inserts a new paragraph on enter when a void element is focused
|
|
24
27
|
hotkey: 'enter',
|
|
28
|
+
// exploit the internal use of Array.slice(0, level + 1) by the exitBreak plugin
|
|
29
|
+
// to stay in the parent element
|
|
25
30
|
level: -2,
|
|
26
31
|
query: {
|
|
27
32
|
filter: ([node, path])=>!((0, _editor.isRootLevel)(path) && (0, _queries.isFirstChildPath)(path)) && !!node.isVoid
|
|
@@ -9,11 +9,11 @@ function _export(target, all) {
|
|
|
9
9
|
});
|
|
10
10
|
}
|
|
11
11
|
_export(exports, {
|
|
12
|
-
getPlugins: function() {
|
|
13
|
-
return getPlugins;
|
|
14
|
-
},
|
|
15
12
|
disableCorePlugins: function() {
|
|
16
13
|
return disableCorePlugins;
|
|
14
|
+
},
|
|
15
|
+
getPlugins: function() {
|
|
16
|
+
return getPlugins;
|
|
17
17
|
}
|
|
18
18
|
});
|
|
19
19
|
const _plateserializerdocx = require("@udecode/plate-serializer-docx");
|
|
@@ -42,11 +42,15 @@ const _TrailingParagraph = require("./TrailingParagraph");
|
|
|
42
42
|
const _Voids = require("./Voids");
|
|
43
43
|
const getPlugins = (sdk, onAction, restrictedMarks)=>[
|
|
44
44
|
(0, _plateserializerdocx.createDeserializeDocxPlugin)(),
|
|
45
|
+
// Tracking - This should come first so all plugins below will have access to `editor.tracking`
|
|
45
46
|
(0, _Tracking.createTrackingPlugin)(onAction),
|
|
47
|
+
// Global / Global shortcuts
|
|
46
48
|
(0, _DragAndDrop.createDragAndDropPlugin)(),
|
|
49
|
+
// Enable command palette plugin only, if at least action type is allowed
|
|
47
50
|
...Object.values((0, _useCommands.isCommandPromptPluginEnabled)(sdk)).some(Boolean) ? [
|
|
48
51
|
(0, _CommandPalette.createCommandPalettePlugin)()
|
|
49
52
|
] : [],
|
|
53
|
+
// Block Elements
|
|
50
54
|
(0, _Paragraph.createParagraphPlugin)(),
|
|
51
55
|
(0, _List.createListPlugin)(),
|
|
52
56
|
(0, _Hr.createHrPlugin)(),
|
|
@@ -56,20 +60,28 @@ const getPlugins = (sdk, onAction, restrictedMarks)=>[
|
|
|
56
60
|
(0, _EmbeddedEntityBlock.createEmbeddedEntryBlockPlugin)(sdk),
|
|
57
61
|
(0, _EmbeddedEntityBlock.createEmbeddedAssetBlockPlugin)(sdk),
|
|
58
62
|
(0, _EmbeddedResourceBlock.createEmbeddedResourceBlockPlugin)(sdk),
|
|
63
|
+
// Inline elements
|
|
59
64
|
(0, _Hyperlink.createHyperlinkPlugin)(sdk),
|
|
60
65
|
(0, _EmbeddedEntityInline.createEmbeddedEntityInlinePlugin)(sdk),
|
|
61
66
|
(0, _EmbeddedResourceInline.createEmbeddedResourceInlinePlugin)(sdk),
|
|
67
|
+
// Marks
|
|
62
68
|
(0, _Marks.createMarksPlugin)(),
|
|
69
|
+
// Other
|
|
63
70
|
(0, _TrailingParagraph.createTrailingParagraphPlugin)(),
|
|
64
71
|
(0, _Text.createTextPlugin)(restrictedMarks),
|
|
65
72
|
(0, _Voids.createVoidsPlugin)(),
|
|
66
73
|
(0, _SelectOnBackspace.createSelectOnBackspacePlugin)(),
|
|
74
|
+
// Pasting content from other sources
|
|
67
75
|
(0, _PasteHTML.createPasteHTMLPlugin)(),
|
|
76
|
+
// These plugins drive their configurations from the list of plugins
|
|
77
|
+
// above. They MUST come last.
|
|
68
78
|
(0, _Break.createSoftBreakPlugin)(),
|
|
69
79
|
(0, _Break.createExitBreakPlugin)(),
|
|
70
80
|
(0, _Break.createResetNodePlugin)(),
|
|
71
81
|
(0, _Normalizer.createNormalizerPlugin)()
|
|
72
82
|
];
|
|
73
83
|
const disableCorePlugins = {
|
|
84
|
+
// Note: Enabled by default since v9.0.0 but it causes Cypress's
|
|
85
|
+
// .click() command to fail
|
|
74
86
|
eventEditor: true
|
|
75
87
|
};
|
|
@@ -9,14 +9,14 @@ function _export(target, all) {
|
|
|
9
9
|
});
|
|
10
10
|
}
|
|
11
11
|
_export(exports, {
|
|
12
|
-
styles: function() {
|
|
13
|
-
return styles;
|
|
14
|
-
},
|
|
15
12
|
EmbeddedBlockToolbarIcon: function() {
|
|
16
13
|
return EmbeddedBlockToolbarIcon;
|
|
14
|
+
},
|
|
15
|
+
styles: function() {
|
|
16
|
+
return styles;
|
|
17
17
|
}
|
|
18
18
|
});
|
|
19
|
-
const _react = _interop_require_wildcard(require("react"));
|
|
19
|
+
const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
|
|
20
20
|
const _f36components = require("@contentful/f36-components");
|
|
21
21
|
const _f36icons = require("@contentful/f36-icons");
|
|
22
22
|
const _richtexttypes = require("@contentful/rich-text-types");
|
|
@@ -46,7 +46,9 @@ function _interop_require_wildcard(obj, nodeInterop) {
|
|
|
46
46
|
if (cache && cache.has(obj)) {
|
|
47
47
|
return cache.get(obj);
|
|
48
48
|
}
|
|
49
|
-
var newObj = {
|
|
49
|
+
var newObj = {
|
|
50
|
+
__proto__: null
|
|
51
|
+
};
|
|
50
52
|
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
51
53
|
for(var key in obj){
|
|
52
54
|
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
@@ -69,7 +71,7 @@ const styles = {
|
|
|
69
71
|
marginRight: '10px'
|
|
70
72
|
})
|
|
71
73
|
};
|
|
72
|
-
function EmbeddedBlockToolbarIcon({ isDisabled
|
|
74
|
+
function EmbeddedBlockToolbarIcon({ isDisabled, nodeType, onClose }) {
|
|
73
75
|
const editor = (0, _ContentfulEditorProvider.useContentfulEditor)();
|
|
74
76
|
const sdk = (0, _SdkProvider.useSdkContext)();
|
|
75
77
|
const handleClick = async (event)=>{
|
|
@@ -86,19 +88,19 @@ function EmbeddedBlockToolbarIcon({ isDisabled , nodeType , onClose }) {
|
|
|
86
88
|
};
|
|
87
89
|
const type = getEntityTypeFromNodeType(nodeType);
|
|
88
90
|
const baseClass = `rich-text__${nodeType}`;
|
|
89
|
-
return _react.createElement(_f36components.Menu.Item, {
|
|
91
|
+
return /*#__PURE__*/ _react.createElement(_f36components.Menu.Item, {
|
|
90
92
|
disabled: isDisabled,
|
|
91
93
|
className: `${baseClass}-list-item`,
|
|
92
94
|
onClick: handleClick,
|
|
93
95
|
testId: `toolbar-toggle-${nodeType}`
|
|
94
|
-
}, _react.createElement(_f36components.Flex, {
|
|
96
|
+
}, /*#__PURE__*/ _react.createElement(_f36components.Flex, {
|
|
95
97
|
alignItems: "center",
|
|
96
98
|
flexDirection: "row"
|
|
97
|
-
}, _react.createElement(_f36components.Icon, {
|
|
99
|
+
}, /*#__PURE__*/ _react.createElement(_f36components.Icon, {
|
|
98
100
|
as: type === 'Asset' ? _f36icons.AssetIcon : _f36icons.EmbeddedEntryBlockIcon,
|
|
99
101
|
className: `rich-text__embedded-entry-list-icon ${styles.icon}`,
|
|
100
102
|
variant: "secondary"
|
|
101
|
-
}), _react.createElement("span", null, type, nodeType == _richtexttypes.BLOCKS.EMBEDDED_RESOURCE && _react.createElement(_ResourceNewBadge.ResourceNewBadge, null))));
|
|
103
|
+
}), /*#__PURE__*/ _react.createElement("span", null, type, nodeType == _richtexttypes.BLOCKS.EMBEDDED_RESOURCE && /*#__PURE__*/ _react.createElement(_ResourceNewBadge.ResourceNewBadge, null))));
|
|
102
104
|
}
|
|
103
105
|
function getEntityTypeFromNodeType(nodeType) {
|
|
104
106
|
const words = nodeType.toLowerCase().split('-');
|
|
@@ -20,7 +20,7 @@ _export(exports, {
|
|
|
20
20
|
}
|
|
21
21
|
});
|
|
22
22
|
const _richtexttypes = require("@contentful/rich-text-types");
|
|
23
|
-
const _ishotkey = _interop_require_default(require("is-hotkey"));
|
|
23
|
+
const _ishotkey = /*#__PURE__*/ _interop_require_default(require("is-hotkey"));
|
|
24
24
|
const _config = require("../../helpers/config");
|
|
25
25
|
const _editor = require("../../helpers/editor");
|
|
26
26
|
const _sdkNavigatorSlideIn = require("../../helpers/sdkNavigatorSlideIn");
|
|
@@ -31,7 +31,7 @@ function _interop_require_default(obj) {
|
|
|
31
31
|
};
|
|
32
32
|
}
|
|
33
33
|
function getWithEmbeddedBlockEvents(nodeType, sdk) {
|
|
34
|
-
return (editor, { options: { hotkey
|
|
34
|
+
return (editor, { options: { hotkey } })=>(event)=>{
|
|
35
35
|
const [, pathToSelectedElement] = (0, _editor.getNodeEntryFromSelection)(editor, nodeType);
|
|
36
36
|
if (pathToSelectedElement) {
|
|
37
37
|
const isDelete = event.key === 'Delete';
|
|
@@ -57,14 +57,14 @@ async function selectEntityAndInsert(nodeType, sdk, editor, logAction) {
|
|
|
57
57
|
logAction('openCreateEmbedDialog', {
|
|
58
58
|
nodeType
|
|
59
59
|
});
|
|
60
|
-
const { field
|
|
60
|
+
const { field, dialogs } = sdk;
|
|
61
61
|
const baseConfig = (0, _config.newEntitySelectorConfigFromRichTextField)(field, nodeType);
|
|
62
62
|
const selectEntity = baseConfig.entityType === 'Asset' ? dialogs.selectSingleAsset : dialogs.selectSingleEntry;
|
|
63
63
|
const config = {
|
|
64
64
|
...baseConfig,
|
|
65
65
|
withCreate: true
|
|
66
66
|
};
|
|
67
|
-
const { selection
|
|
67
|
+
const { selection } = editor;
|
|
68
68
|
const rteSlide = (0, _sdkNavigatorSlideIn.watchCurrentSlide)(sdk.navigator);
|
|
69
69
|
const entity = await selectEntity(config);
|
|
70
70
|
if (!entity) {
|
|
@@ -72,6 +72,8 @@ async function selectEntityAndInsert(nodeType, sdk, editor, logAction) {
|
|
|
72
72
|
nodeType
|
|
73
73
|
});
|
|
74
74
|
} else {
|
|
75
|
+
// Selection prevents incorrect position of inserted ref when RTE doesn't have focus
|
|
76
|
+
// (i.e. when using hotkeys and slide-in)
|
|
75
77
|
(0, _internal.select)(editor, selection);
|
|
76
78
|
insertBlock(editor, nodeType, entity);
|
|
77
79
|
ensureFollowingParagraph(editor, [
|
|
@@ -82,6 +84,8 @@ async function selectEntityAndInsert(nodeType, sdk, editor, logAction) {
|
|
|
82
84
|
nodeType
|
|
83
85
|
});
|
|
84
86
|
}
|
|
87
|
+
// If user chose to create a new entity, this might open slide-in to edit the
|
|
88
|
+
// entity. In this case, no point in focusing RTE which is now in the slide below.
|
|
85
89
|
rteSlide.onActive(()=>{
|
|
86
90
|
rteSlide.unwatch();
|
|
87
91
|
(0, _editor.focus)(editor);
|
|
@@ -91,15 +95,17 @@ async function selectResourceEntityAndInsert(sdk, editor, logAction) {
|
|
|
91
95
|
logAction('openCreateEmbedDialog', {
|
|
92
96
|
nodeType: _richtexttypes.BLOCKS.EMBEDDED_RESOURCE
|
|
93
97
|
});
|
|
94
|
-
const { field
|
|
98
|
+
const { field, dialogs } = sdk;
|
|
95
99
|
const config = (0, _config.newResourceEntitySelectorConfigFromRichTextField)(field, _richtexttypes.BLOCKS.EMBEDDED_RESOURCE);
|
|
96
|
-
const { selection
|
|
100
|
+
const { selection } = editor;
|
|
97
101
|
const entity = await dialogs.selectSingleResourceEntry(config);
|
|
98
102
|
if (!entity) {
|
|
99
103
|
logAction('cancelCreateEmbedDialog', {
|
|
100
104
|
nodeType: _richtexttypes.BLOCKS.EMBEDDED_RESOURCE
|
|
101
105
|
});
|
|
102
106
|
} else {
|
|
107
|
+
// Selection prevents incorrect position of inserted ref when RTE doesn't have focus
|
|
108
|
+
// (i.e. when using hotkeys and slide-in)
|
|
103
109
|
(0, _internal.select)(editor, selection);
|
|
104
110
|
insertBlock(editor, _richtexttypes.BLOCKS.EMBEDDED_RESOURCE, entity);
|
|
105
111
|
ensureFollowingParagraph(editor, [
|
|
@@ -110,6 +116,7 @@ async function selectResourceEntityAndInsert(sdk, editor, logAction) {
|
|
|
110
116
|
});
|
|
111
117
|
}
|
|
112
118
|
}
|
|
119
|
+
// TODO: incorporate this logic inside the trailingParagraph plugin instead
|
|
113
120
|
function ensureFollowingParagraph(editor, nodeTypes) {
|
|
114
121
|
const entityBlock = (0, _internal.getAboveNode)(editor, {
|
|
115
122
|
match: {
|
|
@@ -122,6 +129,8 @@ function ensureFollowingParagraph(editor, nodeTypes) {
|
|
|
122
129
|
const level = entityBlock[1].length - 1;
|
|
123
130
|
const lastNode = (0, _internal.getLastNodeByLevel)(editor, level);
|
|
124
131
|
const isTextContainer = _richtexttypes.TEXT_CONTAINERS.includes(lastNode?.[0].type ?? '');
|
|
132
|
+
// If the new block isn't followed by a sibling text container (e.g. paragraph)
|
|
133
|
+
// we insert a new empty one. Level 0 is handled by the trailingParagraph plugin
|
|
125
134
|
if (level !== 0 && !isTextContainer) {
|
|
126
135
|
(0, _editor.insertEmptyParagraph)(editor);
|
|
127
136
|
}
|
|
@@ -157,6 +166,7 @@ const createNode = (nodeType, entity)=>{
|
|
|
157
166
|
isVoid: true
|
|
158
167
|
};
|
|
159
168
|
};
|
|
169
|
+
// TODO: DRY up copied code from HR
|
|
160
170
|
function insertBlock(editor, nodeType, entity) {
|
|
161
171
|
if (!editor?.selection) return;
|
|
162
172
|
const linkedEntityBlock = createNode(nodeType, entity);
|
|
@@ -8,10 +8,10 @@ Object.defineProperty(exports, "EmbeddedInlineToolbarIcon", {
|
|
|
8
8
|
return EmbeddedInlineToolbarIcon;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
-
const _react = _interop_require_wildcard(require("react"));
|
|
11
|
+
const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
|
|
12
12
|
const _f36components = require("@contentful/f36-components");
|
|
13
13
|
const _f36icons = require("@contentful/f36-icons");
|
|
14
|
-
const _f36tokens = _interop_require_default(require("@contentful/f36-tokens"));
|
|
14
|
+
const _f36tokens = /*#__PURE__*/ _interop_require_default(require("@contentful/f36-tokens"));
|
|
15
15
|
const _richtexttypes = require("@contentful/rich-text-types");
|
|
16
16
|
const _emotion = require("emotion");
|
|
17
17
|
const _ContentfulEditorProvider = require("../../ContentfulEditorProvider");
|
|
@@ -45,7 +45,9 @@ function _interop_require_wildcard(obj, nodeInterop) {
|
|
|
45
45
|
if (cache && cache.has(obj)) {
|
|
46
46
|
return cache.get(obj);
|
|
47
47
|
}
|
|
48
|
-
var newObj = {
|
|
48
|
+
var newObj = {
|
|
49
|
+
__proto__: null
|
|
50
|
+
};
|
|
49
51
|
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
50
52
|
for(var key in obj){
|
|
51
53
|
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
@@ -76,7 +78,7 @@ const styles = {
|
|
|
76
78
|
}
|
|
77
79
|
})
|
|
78
80
|
};
|
|
79
|
-
function EmbeddedInlineToolbarIcon({ onClose
|
|
81
|
+
function EmbeddedInlineToolbarIcon({ onClose, nodeType, isDisabled }) {
|
|
80
82
|
const editor = (0, _ContentfulEditorProvider.useContentfulEditor)();
|
|
81
83
|
const sdk = (0, _SdkProvider.useSdkContext)();
|
|
82
84
|
async function handleClick(event) {
|
|
@@ -90,16 +92,16 @@ function EmbeddedInlineToolbarIcon({ onClose , nodeType , isDisabled }) {
|
|
|
90
92
|
}
|
|
91
93
|
(0, _editor.moveToTheNextChar)(editor);
|
|
92
94
|
}
|
|
93
|
-
return _react.createElement(_f36components.Menu.Item, {
|
|
95
|
+
return /*#__PURE__*/ _react.createElement(_f36components.Menu.Item, {
|
|
94
96
|
disabled: isDisabled,
|
|
95
97
|
className: "rich-text__entry-link-block-button",
|
|
96
98
|
testId: `toolbar-toggle-${nodeType}`,
|
|
97
99
|
onClick: handleClick
|
|
98
|
-
}, _react.createElement(_f36components.Flex, {
|
|
100
|
+
}, /*#__PURE__*/ _react.createElement(_f36components.Flex, {
|
|
99
101
|
alignItems: "center",
|
|
100
102
|
flexDirection: "row"
|
|
101
|
-
}, _react.createElement(_f36icons.EmbeddedEntryInlineIcon, {
|
|
103
|
+
}, /*#__PURE__*/ _react.createElement(_f36icons.EmbeddedEntryInlineIcon, {
|
|
102
104
|
variant: "secondary",
|
|
103
105
|
className: `rich-text__embedded-entry-list-icon ${styles.icon}`
|
|
104
|
-
}), _react.createElement("span", null, "Inline entry", nodeType == _richtexttypes.INLINES.EMBEDDED_RESOURCE && _react.createElement(_ResourceNewBadge.ResourceNewBadge, null))));
|
|
106
|
+
}), /*#__PURE__*/ _react.createElement("span", null, "Inline entry", nodeType == _richtexttypes.INLINES.EMBEDDED_RESOURCE && /*#__PURE__*/ _react.createElement(_ResourceNewBadge.ResourceNewBadge, null))));
|
|
105
107
|
}
|
|
@@ -20,7 +20,7 @@ _export(exports, {
|
|
|
20
20
|
}
|
|
21
21
|
});
|
|
22
22
|
const _richtexttypes = require("@contentful/rich-text-types");
|
|
23
|
-
const _ishotkey = _interop_require_default(require("is-hotkey"));
|
|
23
|
+
const _ishotkey = /*#__PURE__*/ _interop_require_default(require("is-hotkey"));
|
|
24
24
|
const _config = require("../../helpers/config");
|
|
25
25
|
const _editor = require("../../helpers/editor");
|
|
26
26
|
const _sdkNavigatorSlideIn = require("../../helpers/sdkNavigatorSlideIn");
|
|
@@ -31,7 +31,7 @@ function _interop_require_default(obj) {
|
|
|
31
31
|
};
|
|
32
32
|
}
|
|
33
33
|
function getWithEmbeddedEntryInlineEvents(nodeType, sdk) {
|
|
34
|
-
return function withEmbeddedEntryInlineEvents(editor, { options: { hotkey
|
|
34
|
+
return function withEmbeddedEntryInlineEvents(editor, { options: { hotkey } }) {
|
|
35
35
|
return function handleEvent(event) {
|
|
36
36
|
if (!editor) return;
|
|
37
37
|
if (hotkey && (0, _ishotkey.default)(hotkey, event)) {
|
|
@@ -82,7 +82,7 @@ async function selectEntityAndInsert(editor, sdk, logAction) {
|
|
|
82
82
|
...(0, _config.newEntitySelectorConfigFromRichTextField)(sdk.field, nodeType),
|
|
83
83
|
withCreate: true
|
|
84
84
|
};
|
|
85
|
-
const { selection
|
|
85
|
+
const { selection } = editor;
|
|
86
86
|
const rteSlide = (0, _sdkNavigatorSlideIn.watchCurrentSlide)(sdk.navigator);
|
|
87
87
|
const entry = await sdk.dialogs.selectSingleEntry(config);
|
|
88
88
|
if (!entry) {
|
|
@@ -90,6 +90,8 @@ async function selectEntityAndInsert(editor, sdk, logAction) {
|
|
|
90
90
|
nodeType
|
|
91
91
|
});
|
|
92
92
|
} else {
|
|
93
|
+
// Selection prevents incorrect position of inserted ref when RTE doesn't have focus
|
|
94
|
+
// (i.e. when using hotkeys and slide-in)
|
|
93
95
|
(0, _transforms.select)(editor, selection);
|
|
94
96
|
(0, _transforms.insertNodes)(editor, createInlineEntryNode(nodeType, entry));
|
|
95
97
|
logAction('insert', {
|
|
@@ -106,18 +108,20 @@ async function selectResourceEntityAndInsert(editor, sdk, logAction) {
|
|
|
106
108
|
logAction('openCreateEmbedDialog', {
|
|
107
109
|
nodeType
|
|
108
110
|
});
|
|
109
|
-
const { dialogs
|
|
111
|
+
const { dialogs, field } = sdk;
|
|
110
112
|
const config = {
|
|
111
113
|
...(0, _config.newResourceEntitySelectorConfigFromRichTextField)(field, nodeType),
|
|
112
114
|
withCreate: true
|
|
113
115
|
};
|
|
114
|
-
const { selection
|
|
116
|
+
const { selection } = editor;
|
|
115
117
|
const entry = await dialogs.selectSingleResourceEntry(config);
|
|
116
118
|
if (!entry) {
|
|
117
119
|
logAction('cancelCreateEmbedDialog', {
|
|
118
120
|
nodeType
|
|
119
121
|
});
|
|
120
122
|
} else {
|
|
123
|
+
// Selection prevents incorrect position of inserted ref when RTE doesn't have focus
|
|
124
|
+
// (i.e. when using hotkeys and slide-in)
|
|
121
125
|
(0, _transforms.select)(editor, selection);
|
|
122
126
|
(0, _transforms.insertNodes)(editor, createInlineEntryNode(nodeType, entry));
|
|
123
127
|
logAction('insert', {
|
|
@@ -8,10 +8,10 @@ Object.defineProperty(exports, "FetchingWrappedAssetCard", {
|
|
|
8
8
|
return FetchingWrappedAssetCard;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
-
const _react = _interop_require_wildcard(require("react"));
|
|
11
|
+
const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
|
|
12
12
|
const _f36components = require("@contentful/f36-components");
|
|
13
13
|
const _fieldeditorreference = require("@contentful/field-editor-reference");
|
|
14
|
-
const _fastdeepequal = _interop_require_default(require("fast-deep-equal"));
|
|
14
|
+
const _fastdeepequal = /*#__PURE__*/ _interop_require_default(require("fast-deep-equal"));
|
|
15
15
|
function _interop_require_default(obj) {
|
|
16
16
|
return obj && obj.__esModule ? obj : {
|
|
17
17
|
default: obj
|
|
@@ -38,7 +38,9 @@ function _interop_require_wildcard(obj, nodeInterop) {
|
|
|
38
38
|
if (cache && cache.has(obj)) {
|
|
39
39
|
return cache.get(obj);
|
|
40
40
|
}
|
|
41
|
-
var newObj = {
|
|
41
|
+
var newObj = {
|
|
42
|
+
__proto__: null
|
|
43
|
+
};
|
|
42
44
|
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
43
45
|
for(var key in obj){
|
|
44
46
|
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
@@ -56,21 +58,21 @@ function _interop_require_wildcard(obj, nodeInterop) {
|
|
|
56
58
|
}
|
|
57
59
|
return newObj;
|
|
58
60
|
}
|
|
59
|
-
const InternalAssetCard = _react.memo((props)=>{
|
|
61
|
+
const InternalAssetCard = /*#__PURE__*/ _react.memo((props)=>{
|
|
60
62
|
if (props.asset === undefined) {
|
|
61
|
-
return _react.createElement(_f36components.AssetCard, {
|
|
63
|
+
return /*#__PURE__*/ _react.createElement(_f36components.AssetCard, {
|
|
62
64
|
size: "default",
|
|
63
65
|
isLoading: true
|
|
64
66
|
});
|
|
65
67
|
}
|
|
66
68
|
if (props.asset === 'failed') {
|
|
67
|
-
return _react.createElement(_fieldeditorreference.MissingEntityCard, {
|
|
69
|
+
return /*#__PURE__*/ _react.createElement(_fieldeditorreference.MissingEntityCard, {
|
|
68
70
|
entityType: "Asset",
|
|
69
71
|
isDisabled: props.isDisabled,
|
|
70
72
|
onRemove: props.onRemove
|
|
71
73
|
});
|
|
72
74
|
}
|
|
73
|
-
return _react.createElement(_fieldeditorreference.WrappedAssetCard, {
|
|
75
|
+
return /*#__PURE__*/ _react.createElement(_fieldeditorreference.WrappedAssetCard, {
|
|
74
76
|
getEntityScheduledActions: props.loadEntityScheduledActions,
|
|
75
77
|
size: "small",
|
|
76
78
|
isSelected: props.isSelected,
|
|
@@ -85,9 +87,9 @@ const InternalAssetCard = _react.memo((props)=>{
|
|
|
85
87
|
}, _fastdeepequal.default);
|
|
86
88
|
InternalAssetCard.displayName = 'InternalAssetCard';
|
|
87
89
|
function FetchingWrappedAssetCard(props) {
|
|
88
|
-
const { onEntityFetchComplete
|
|
89
|
-
const { data: asset
|
|
90
|
-
const { getEntityScheduledActions
|
|
90
|
+
const { onEntityFetchComplete } = props;
|
|
91
|
+
const { data: asset, status } = (0, _fieldeditorreference.useEntity)('Asset', props.assetId);
|
|
92
|
+
const { getEntityScheduledActions } = (0, _fieldeditorreference.useEntityLoader)();
|
|
91
93
|
const loadEntityScheduledActions = _react.useCallback(()=>getEntityScheduledActions('Asset', props.assetId), [
|
|
92
94
|
getEntityScheduledActions,
|
|
93
95
|
props.assetId
|
|
@@ -100,7 +102,7 @@ function FetchingWrappedAssetCard(props) {
|
|
|
100
102
|
onEntityFetchComplete,
|
|
101
103
|
status
|
|
102
104
|
]);
|
|
103
|
-
return _react.createElement(InternalAssetCard, {
|
|
105
|
+
return /*#__PURE__*/ _react.createElement(InternalAssetCard, {
|
|
104
106
|
asset: asset,
|
|
105
107
|
sdk: props.sdk,
|
|
106
108
|
isDisabled: props.isDisabled,
|
|
@@ -8,10 +8,10 @@ Object.defineProperty(exports, "FetchingWrappedEntryCard", {
|
|
|
8
8
|
return FetchingWrappedEntryCard;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
-
const _react = _interop_require_wildcard(require("react"));
|
|
11
|
+
const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
|
|
12
12
|
const _f36components = require("@contentful/f36-components");
|
|
13
13
|
const _fieldeditorreference = require("@contentful/field-editor-reference");
|
|
14
|
-
const _fastdeepequal = _interop_require_default(require("fast-deep-equal"));
|
|
14
|
+
const _fastdeepequal = /*#__PURE__*/ _interop_require_default(require("fast-deep-equal"));
|
|
15
15
|
function _interop_require_default(obj) {
|
|
16
16
|
return obj && obj.__esModule ? obj : {
|
|
17
17
|
default: obj
|
|
@@ -38,7 +38,9 @@ function _interop_require_wildcard(obj, nodeInterop) {
|
|
|
38
38
|
if (cache && cache.has(obj)) {
|
|
39
39
|
return cache.get(obj);
|
|
40
40
|
}
|
|
41
|
-
var newObj = {
|
|
41
|
+
var newObj = {
|
|
42
|
+
__proto__: null
|
|
43
|
+
};
|
|
42
44
|
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
43
45
|
for(var key in obj){
|
|
44
46
|
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
@@ -56,22 +58,22 @@ function _interop_require_wildcard(obj, nodeInterop) {
|
|
|
56
58
|
}
|
|
57
59
|
return newObj;
|
|
58
60
|
}
|
|
59
|
-
const InternalEntryCard = _react.memo((props)=>{
|
|
60
|
-
const { entry
|
|
61
|
+
const InternalEntryCard = /*#__PURE__*/ _react.memo((props)=>{
|
|
62
|
+
const { entry, sdk, loadEntityScheduledActions } = props;
|
|
61
63
|
if (entry === undefined) {
|
|
62
|
-
return _react.createElement(_f36components.EntryCard, {
|
|
64
|
+
return /*#__PURE__*/ _react.createElement(_f36components.EntryCard, {
|
|
63
65
|
isLoading: true
|
|
64
66
|
});
|
|
65
67
|
}
|
|
66
68
|
if (entry === 'failed') {
|
|
67
|
-
return _react.createElement(_fieldeditorreference.MissingEntityCard, {
|
|
69
|
+
return /*#__PURE__*/ _react.createElement(_fieldeditorreference.MissingEntityCard, {
|
|
68
70
|
entityType: "Entry",
|
|
69
71
|
isDisabled: props.isDisabled,
|
|
70
72
|
onRemove: props.onRemove
|
|
71
73
|
});
|
|
72
74
|
}
|
|
73
75
|
const contentType = sdk.space.getCachedContentTypes().find((contentType)=>contentType.sys.id === entry.sys.contentType.sys.id);
|
|
74
|
-
return _react.createElement(_fieldeditorreference.WrappedEntryCard, {
|
|
76
|
+
return /*#__PURE__*/ _react.createElement(_fieldeditorreference.WrappedEntryCard, {
|
|
75
77
|
size: "default",
|
|
76
78
|
getAsset: props.sdk.space.getAsset,
|
|
77
79
|
getEntityScheduledActions: loadEntityScheduledActions,
|
|
@@ -88,9 +90,9 @@ const InternalEntryCard = _react.memo((props)=>{
|
|
|
88
90
|
}, _fastdeepequal.default);
|
|
89
91
|
InternalEntryCard.displayName = 'ReferenceCard';
|
|
90
92
|
const FetchingWrappedEntryCard = (props)=>{
|
|
91
|
-
const { entryId
|
|
92
|
-
const { data: entry
|
|
93
|
-
const { getEntityScheduledActions
|
|
93
|
+
const { entryId, onEntityFetchComplete } = props;
|
|
94
|
+
const { data: entry, status } = (0, _fieldeditorreference.useEntity)('Entry', entryId);
|
|
95
|
+
const { getEntityScheduledActions } = (0, _fieldeditorreference.useEntityLoader)();
|
|
94
96
|
const loadEntityScheduledActions = _react.useCallback(()=>getEntityScheduledActions('Entry', entryId), [
|
|
95
97
|
getEntityScheduledActions,
|
|
96
98
|
entryId
|
|
@@ -103,7 +105,7 @@ const FetchingWrappedEntryCard = (props)=>{
|
|
|
103
105
|
onEntityFetchComplete,
|
|
104
106
|
status
|
|
105
107
|
]);
|
|
106
|
-
return _react.createElement(InternalEntryCard, {
|
|
108
|
+
return /*#__PURE__*/ _react.createElement(InternalEntryCard, {
|
|
107
109
|
entry: entry,
|
|
108
110
|
sdk: props.sdk,
|
|
109
111
|
locale: props.locale,
|