@contentful/field-editor-rich-text 3.16.8 → 3.16.10
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 +20 -22
- package/dist/cjs/RichTextEditor.styles.js +1 -2
- package/dist/cjs/SdkProvider.js +5 -7
- package/dist/cjs/SyncEditorChanges.js +6 -15
- package/dist/cjs/Toolbar/_tests_/toolbar.test.js +15 -17
- package/dist/cjs/Toolbar/components/EmbedEntityWidget.js +9 -13
- package/dist/cjs/Toolbar/components/EmbeddedEntityDropdownButton.js +8 -10
- package/dist/cjs/Toolbar/components/StickyToolbarWrapper.js +2 -2
- package/dist/cjs/Toolbar/index.js +30 -33
- 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 +6 -8
- package/dist/cjs/__fixtures__/locale/index.js +2 -2
- package/dist/cjs/__fixtures__/space/index.js +1 -1
- package/dist/cjs/constants/Schema.js +0 -1
- package/dist/cjs/dialogs/HypelinkDialog/HyperlinkDialog.js +38 -43
- package/dist/cjs/dialogs/openRichTextDialog.js +4 -6
- package/dist/cjs/dialogs/renderRichTextDialog.js +4 -6
- 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 +44 -53
- package/dist/cjs/helpers/environment.js +3 -3
- package/dist/cjs/helpers/formatDateAndTime.js +4 -5
- package/dist/cjs/helpers/getAllowedResourcesForNodeType.js +5 -22
- package/dist/cjs/helpers/getLinkedContentTypeIdsForNodeType.js +5 -29
- package/dist/cjs/helpers/nodeFactory.js +6 -6
- package/dist/cjs/helpers/sdkNavigatorSlideIn.js +6 -14
- package/dist/cjs/helpers/sdkNavigatorSlideIn.spec.js +2 -3
- package/dist/cjs/helpers/toSlateValue.js +3 -14
- package/dist/cjs/helpers/transformers.js +5 -5
- package/dist/cjs/helpers/validations.js +9 -12
- package/dist/cjs/index.js +5 -7
- package/dist/cjs/internal/constants.js +2 -4
- package/dist/cjs/internal/hooks.js +7 -9
- package/dist/cjs/internal/misc.js +12 -15
- package/dist/cjs/internal/queries.js +108 -115
- package/dist/cjs/internal/transforms.js +48 -51
- package/dist/cjs/internal/types/editor.js +1 -3
- package/dist/cjs/plugins/Break/createExitBreakPlugin.test.js +3 -4
- package/dist/cjs/plugins/Break/createResetNodePlugin.js +0 -1
- package/dist/cjs/plugins/Break/createSoftBreakPlugin.test.js +3 -3
- package/dist/cjs/plugins/CommandPalette/components/CommandList.js +33 -35
- package/dist/cjs/plugins/CommandPalette/components/CommandList.styles.js +1 -1
- package/dist/cjs/plugins/CommandPalette/components/CommandPrompt.js +5 -7
- package/dist/cjs/plugins/CommandPalette/hooks/useCommandList.js +3 -7
- package/dist/cjs/plugins/CommandPalette/onKeyDown.js +1 -6
- package/dist/cjs/plugins/CommandPalette/onKeyDown.spec.js +4 -6
- package/dist/cjs/plugins/CommandPalette/useCommands.js +3 -3
- package/dist/cjs/plugins/CommandPalette/utils/fetchEntries.js +0 -2
- package/dist/cjs/plugins/CommandPalette/utils/trimLeadingSlash.js +1 -6
- package/dist/cjs/plugins/DragAndDrop/index.js +1 -9
- package/dist/cjs/plugins/EmbeddedEntityBlock/LinkedEntityBlock.js +8 -10
- package/dist/cjs/plugins/EmbeddedEntityBlock/index.js +3 -3
- package/dist/cjs/plugins/EmbeddedEntityInline/FetchingWrappedInlineEntryCard.js +17 -19
- package/dist/cjs/plugins/EmbeddedEntityInline/LinkedEntityInline.js +7 -9
- package/dist/cjs/plugins/EmbeddedResourceBlock/LinkedResourceBlock.js +5 -5
- package/dist/cjs/plugins/EmbeddedResourceInline/FetchingWrappedResourceInlineCard.js +11 -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 +10 -13
- package/dist/cjs/plugins/Heading/components/ToolbarHeadingButton.js +29 -23
- package/dist/cjs/plugins/Heading/createHeadingPlugin.js +2 -7
- package/dist/cjs/plugins/Hr/index.js +14 -19
- package/dist/cjs/plugins/Hyperlink/HyperlinkModal.js +28 -32
- package/dist/cjs/plugins/Hyperlink/__tests__/createHyperlinkPlugin.test.js +8 -8
- package/dist/cjs/plugins/Hyperlink/components/EntityHyperlink.js +8 -10
- package/dist/cjs/plugins/Hyperlink/components/LinkPopover.js +17 -23
- package/dist/cjs/plugins/Hyperlink/components/ResourceHyperlink.js +8 -10
- package/dist/cjs/plugins/Hyperlink/components/ToolbarHyperlinkButton.js +4 -6
- package/dist/cjs/plugins/Hyperlink/components/UrlHyperlink.js +6 -8
- package/dist/cjs/plugins/Hyperlink/components/linkHandlers.js +3 -3
- package/dist/cjs/plugins/Hyperlink/components/styles.js +1 -1
- package/dist/cjs/plugins/Hyperlink/createHyperlinkPlugin.js +4 -10
- package/dist/cjs/plugins/Hyperlink/useEntityInfo.js +3 -6
- package/dist/cjs/plugins/Hyperlink/useResourceEntityInfo.js +4 -6
- package/dist/cjs/plugins/Hyperlink/utils.js +4 -4
- package/dist/cjs/plugins/List/__tests__/createListPlugin.test.js +13 -13
- package/dist/cjs/plugins/List/__tests__/insertListBreak.test.js +25 -29
- package/dist/cjs/plugins/List/__tests__/insertListFragment.test.js +22 -22
- package/dist/cjs/plugins/List/components/List.js +7 -9
- package/dist/cjs/plugins/List/components/ListItem.js +4 -6
- package/dist/cjs/plugins/List/components/ToolbarListButton.js +5 -7
- package/dist/cjs/plugins/List/createListPlugin.js +0 -4
- package/dist/cjs/plugins/List/insertListBreak.js +4 -13
- package/dist/cjs/plugins/List/insertListFragment.js +5 -18
- package/dist/cjs/plugins/List/onKeyDownList.js +6 -8
- package/dist/cjs/plugins/List/transforms/insertListItem.js +2 -17
- package/dist/cjs/plugins/List/transforms/moveListItemDown.js +2 -8
- package/dist/cjs/plugins/List/transforms/moveListItems.js +2 -7
- package/dist/cjs/plugins/List/transforms/moveListItems.test.js +14 -15
- package/dist/cjs/plugins/List/transforms/toggleList.js +3 -8
- package/dist/cjs/plugins/List/transforms/toggleList.spec.js +28 -28
- package/dist/cjs/plugins/List/transforms/unwrapList.js +2 -7
- package/dist/cjs/plugins/List/utils.js +11 -12
- package/dist/cjs/plugins/List/withList.js +2 -6
- package/dist/cjs/plugins/Marks/Bold.js +7 -9
- package/dist/cjs/plugins/Marks/Code.js +7 -15
- package/dist/cjs/plugins/Marks/Italic.js +7 -9
- package/dist/cjs/plugins/Marks/Subscript.js +8 -10
- package/dist/cjs/plugins/Marks/Superscript.js +8 -10
- package/dist/cjs/plugins/Marks/Underline.js +4 -6
- package/dist/cjs/plugins/Marks/components/MarkToolbarButton.js +7 -9
- package/dist/cjs/plugins/Marks/helpers.js +5 -5
- package/dist/cjs/plugins/Normalizer/baseRules.js +0 -2
- package/dist/cjs/plugins/Normalizer/createNormalizerPlugin.test.js +12 -12
- package/dist/cjs/plugins/Normalizer/utils.js +3 -4
- package/dist/cjs/plugins/Normalizer/withNormalizer.js +3 -23
- package/dist/cjs/plugins/Paragraph/Paragraph.js +4 -6
- package/dist/cjs/plugins/Paragraph/__tests__/createParagraphPlugin.test.js +32 -32
- package/dist/cjs/plugins/Paragraph/createParagraphPlugin.js +2 -3
- package/dist/cjs/plugins/PasteHTML/createPasteHTMLPlugin.js +6 -9
- package/dist/cjs/plugins/PasteHTML/utils/__tests__/sanitizeHTML.test.js +0 -2
- package/dist/cjs/plugins/PasteHTML/utils/sanitizeAnchors.js +0 -9
- package/dist/cjs/plugins/PasteHTML/utils/sanitizeHTML.js +2 -17
- package/dist/cjs/plugins/PasteHTML/utils/sanitizeSheets.js +1 -13
- package/dist/cjs/plugins/Quote/__test__/createQuotePlugin.test.js +21 -21
- package/dist/cjs/plugins/Quote/components/Quote.js +4 -6
- package/dist/cjs/plugins/Quote/components/ToolbarQuoteButton.js +4 -6
- package/dist/cjs/plugins/Quote/createQuotePlugin.js +0 -1
- package/dist/cjs/plugins/Quote/toggleQuote.js +5 -5
- package/dist/cjs/plugins/Quote/withQuote.js +2 -4
- package/dist/cjs/plugins/SelectOnBackspace/createSelectOnBackspacePlugin.js +0 -1
- 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 +4 -5
- package/dist/cjs/plugins/Table/actions/addRow.js +3 -6
- package/dist/cjs/plugins/Table/components/Cell.js +5 -7
- package/dist/cjs/plugins/Table/components/HeaderCell.js +5 -7
- package/dist/cjs/plugins/Table/components/Row.js +4 -6
- package/dist/cjs/plugins/Table/components/Table.js +6 -8
- package/dist/cjs/plugins/Table/components/TableActions.js +16 -19
- package/dist/cjs/plugins/Table/components/ToolbarButton.js +4 -7
- package/dist/cjs/plugins/Table/createTablePlugin.js +1 -11
- package/dist/cjs/plugins/Table/helpers.js +12 -16
- package/dist/cjs/plugins/Table/insertTableFragment.js +2 -15
- package/dist/cjs/plugins/Table/onKeyDownTable.js +2 -11
- package/dist/cjs/plugins/Table/tableTracking.js +6 -6
- package/dist/cjs/plugins/Text/__tests__/createTextPlugin.test.js +17 -19
- package/dist/cjs/plugins/Text/createTextPlugin.js +5 -22
- package/dist/cjs/plugins/Tracking/createTrackingPlugin.js +4 -5
- package/dist/cjs/plugins/Tracking/utils.js +3 -6
- package/dist/cjs/plugins/Voids/createVoidsPlugin.js +0 -5
- package/dist/cjs/plugins/Voids/transformVoid.js +0 -1
- package/dist/cjs/plugins/index.js +3 -15
- package/dist/cjs/plugins/shared/EmbeddedBlockToolbarIcon.js +10 -12
- package/dist/cjs/plugins/shared/EmbeddedBlockUtil.js +6 -16
- package/dist/cjs/plugins/shared/EmbeddedInlineToolbarIcon.js +8 -10
- package/dist/cjs/plugins/shared/EmbeddedInlineUtil.js +5 -9
- package/dist/cjs/plugins/shared/FetchingWrappedAssetCard.js +11 -13
- package/dist/cjs/plugins/shared/FetchingWrappedEntryCard.js +12 -14
- package/dist/cjs/plugins/shared/FetchingWrappedResourceCard.js +11 -14
- package/dist/cjs/plugins/shared/LinkedBlockWrapper.js +4 -8
- package/dist/cjs/plugins/shared/LinkedInlineWrapper.js +6 -10
- package/dist/cjs/plugins/shared/ResourceNewBadge.js +3 -5
- package/dist/cjs/plugins/shared/ToolbarButton.js +6 -8
- package/dist/cjs/plugins/shared/__tests__/FetchingWrappedAssetCard.test.js +5 -10
- package/dist/cjs/plugins/shared/__tests__/FetchingWrappedEntryCard.test.js +6 -11
- package/dist/cjs/plugins/shared/__tests__/FetchingWrappedResourceCard.test.js +13 -15
- package/dist/cjs/plugins/shared/utils.js +1 -4
- package/dist/cjs/test-utils/assertOutput.js +0 -1
- package/dist/cjs/test-utils/hyperscript.d.js +0 -1
- package/dist/cjs/test-utils/randomId.js +1 -3
- package/dist/cjs/test-utils/validation.js +5 -8
- package/dist/esm/ContentfulEditorProvider.js +1 -4
- package/dist/esm/RichTextEditor.js +13 -13
- package/dist/esm/RichTextEditor.styles.js +0 -1
- package/dist/esm/SdkProvider.js +2 -2
- package/dist/esm/SyncEditorChanges.js +3 -18
- package/dist/esm/Toolbar/_tests_/toolbar.test.js +12 -12
- package/dist/esm/Toolbar/components/EmbedEntityWidget.js +7 -9
- package/dist/esm/Toolbar/components/EmbeddedEntityDropdownButton.js +6 -6
- package/dist/esm/Toolbar/components/StickyToolbarWrapper.js +1 -1
- package/dist/esm/Toolbar/index.js +27 -28
- package/dist/esm/__fixtures__/FakeSdk.js +3 -3
- package/dist/esm/constants/Schema.js +0 -1
- package/dist/esm/dialogs/HypelinkDialog/HyperlinkDialog.js +31 -34
- 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 +1 -9
- package/dist/esm/helpers/editor.js +6 -22
- package/dist/esm/helpers/extractNodes.js +1 -3
- package/dist/esm/helpers/formatDateAndTime.js +2 -11
- package/dist/esm/helpers/getAllowedResourcesForNodeType.js +2 -19
- package/dist/esm/helpers/getLinkedContentTypeIdsForNodeType.js +2 -26
- package/dist/esm/helpers/sdkNavigatorSlideIn.js +6 -20
- package/dist/esm/helpers/sdkNavigatorSlideIn.spec.js +0 -1
- package/dist/esm/helpers/toSlateValue.js +3 -17
- package/dist/esm/helpers/validations.js +1 -5
- package/dist/esm/internal/misc.js +2 -23
- package/dist/esm/internal/queries.js +2 -11
- package/dist/esm/internal/transforms.js +3 -14
- package/dist/esm/internal/types/editor.js +1 -3
- package/dist/esm/plugins/Break/createExitBreakPlugin.test.js +3 -4
- package/dist/esm/plugins/Break/createResetNodePlugin.js +0 -1
- 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 +1 -11
- package/dist/esm/plugins/CommandPalette/hooks/useCommandList.js +0 -2
- package/dist/esm/plugins/CommandPalette/onKeyDown.js +0 -5
- 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 +0 -2
- package/dist/esm/plugins/CommandPalette/utils/trimLeadingSlash.js +1 -6
- package/dist/esm/plugins/DragAndDrop/index.js +1 -9
- 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 +9 -9
- 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 +7 -8
- package/dist/esm/plugins/Heading/components/ToolbarHeadingButton.js +26 -18
- package/dist/esm/plugins/Heading/createHeadingPlugin.js +1 -6
- package/dist/esm/plugins/Hr/index.js +5 -8
- package/dist/esm/plugins/Hyperlink/HyperlinkModal.js +23 -25
- package/dist/esm/plugins/Hyperlink/__tests__/createHyperlinkPlugin.test.js +8 -8
- package/dist/esm/plugins/Hyperlink/components/EntityHyperlink.js +6 -6
- package/dist/esm/plugins/Hyperlink/components/LinkPopover.js +15 -19
- package/dist/esm/plugins/Hyperlink/components/ResourceHyperlink.js +6 -6
- package/dist/esm/plugins/Hyperlink/components/ToolbarHyperlinkButton.js +2 -2
- package/dist/esm/plugins/Hyperlink/components/UrlHyperlink.js +4 -4
- package/dist/esm/plugins/Hyperlink/createHyperlinkPlugin.js +1 -5
- package/dist/esm/plugins/Hyperlink/useEntityInfo.js +3 -6
- package/dist/esm/plugins/Hyperlink/useResourceEntityInfo.js +2 -2
- package/dist/esm/plugins/Hyperlink/utils.js +1 -1
- package/dist/esm/plugins/List/__tests__/createListPlugin.test.js +13 -13
- package/dist/esm/plugins/List/__tests__/insertListBreak.test.js +25 -29
- 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 +0 -4
- package/dist/esm/plugins/List/insertListBreak.js +4 -13
- package/dist/esm/plugins/List/insertListFragment.js +5 -18
- package/dist/esm/plugins/List/onKeyDownList.js +5 -7
- package/dist/esm/plugins/List/transforms/insertListItem.js +3 -20
- package/dist/esm/plugins/List/transforms/moveListItemDown.js +2 -8
- package/dist/esm/plugins/List/transforms/moveListItems.js +2 -7
- package/dist/esm/plugins/List/transforms/moveListItems.test.js +14 -15
- package/dist/esm/plugins/List/transforms/toggleList.js +3 -8
- package/dist/esm/plugins/List/transforms/toggleList.spec.js +28 -28
- package/dist/esm/plugins/List/transforms/unwrapList.js +2 -7
- package/dist/esm/plugins/List/utils.js +2 -7
- package/dist/esm/plugins/List/withList.js +2 -6
- package/dist/esm/plugins/Marks/Bold.js +2 -2
- package/dist/esm/plugins/Marks/Code.js +2 -8
- 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 +0 -4
- package/dist/esm/plugins/Normalizer/createNormalizerPlugin.test.js +12 -12
- package/dist/esm/plugins/Normalizer/utils.js +0 -1
- package/dist/esm/plugins/Normalizer/withNormalizer.js +2 -22
- 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 +1 -2
- package/dist/esm/plugins/PasteHTML/createPasteHTMLPlugin.js +3 -9
- package/dist/esm/plugins/PasteHTML/utils/__tests__/sanitizeHTML.test.js +0 -2
- package/dist/esm/plugins/PasteHTML/utils/sanitizeAnchors.js +1 -27
- package/dist/esm/plugins/PasteHTML/utils/sanitizeHTML.js +2 -17
- package/dist/esm/plugins/PasteHTML/utils/sanitizeSheets.js +1 -13
- 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 +0 -1
- package/dist/esm/plugins/Quote/shouldResetQuote.js +1 -6
- package/dist/esm/plugins/Quote/toggleQuote.js +1 -1
- package/dist/esm/plugins/Quote/withQuote.js +2 -4
- package/dist/esm/plugins/SelectOnBackspace/createSelectOnBackspacePlugin.js +0 -1
- 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 +1 -2
- package/dist/esm/plugins/Table/actions/addRow.js +0 -3
- 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 +11 -12
- package/dist/esm/plugins/Table/components/ToolbarButton.js +2 -3
- package/dist/esm/plugins/Table/createTablePlugin.js +1 -11
- package/dist/esm/plugins/Table/helpers.js +1 -10
- package/dist/esm/plugins/Table/insertTableFragment.js +2 -15
- package/dist/esm/plugins/Table/onKeyDownTable.js +2 -11
- package/dist/esm/plugins/Table/tableTracking.js +6 -6
- package/dist/esm/plugins/Text/__tests__/createTextPlugin.test.js +17 -19
- package/dist/esm/plugins/Text/createTextPlugin.js +5 -22
- package/dist/esm/plugins/Tracking/createTrackingPlugin.js +1 -2
- package/dist/esm/plugins/Tracking/utils.js +0 -1
- package/dist/esm/plugins/Voids/createVoidsPlugin.js +0 -5
- package/dist/esm/plugins/Voids/transformVoid.js +1 -4
- package/dist/esm/plugins/index.js +0 -12
- package/dist/esm/plugins/shared/EmbeddedBlockToolbarIcon.js +5 -5
- package/dist/esm/plugins/shared/EmbeddedBlockUtil.js +5 -15
- package/dist/esm/plugins/shared/EmbeddedInlineToolbarIcon.js +5 -5
- package/dist/esm/plugins/shared/EmbeddedInlineUtil.js +4 -8
- 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 +8 -9
- package/dist/esm/plugins/shared/LinkedBlockWrapper.js +3 -7
- package/dist/esm/plugins/shared/LinkedInlineWrapper.js +3 -5
- 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 +2 -5
- package/dist/esm/plugins/shared/__tests__/FetchingWrappedEntryCard.test.js +2 -5
- package/dist/esm/plugins/shared/__tests__/FetchingWrappedResourceCard.test.js +8 -8
- package/dist/esm/plugins/shared/utils.js +1 -4
- package/dist/esm/test-utils/assertOutput.js +0 -1
- package/dist/esm/test-utils/hyperscript.d.js +0 -1
- package/dist/esm/test-utils/jsx.js +1 -5
- package/dist/esm/test-utils/randomId.js +1 -3
- package/dist/esm/test-utils/setEmptyDataAttribute.js +1 -4
- package/dist/esm/test-utils/validation.js +4 -7
- package/dist/types/RichTextEditor.d.ts +2 -3
- package/dist/types/Toolbar/components/EmbedEntityWidget.d.ts +1 -2
- package/dist/types/Toolbar/components/EmbeddedEntityDropdownButton.d.ts +1 -1
- package/dist/types/Toolbar/components/StickyToolbarWrapper.d.ts +2 -2
- package/dist/types/Toolbar/index.d.ts +1 -2
- package/dist/types/dialogs/HypelinkDialog/HyperlinkDialog.d.ts +4 -4
- package/dist/types/dialogs/renderRichTextDialog.d.ts +1 -2
- package/dist/types/plugins/CommandPalette/components/CommandList.d.ts +1 -2
- package/dist/types/plugins/CommandPalette/components/CommandPrompt.d.ts +1 -2
- package/dist/types/plugins/EmbeddedEntityBlock/LinkedEntityBlock.d.ts +1 -2
- package/dist/types/plugins/EmbeddedEntityInline/FetchingWrappedInlineEntryCard.d.ts +1 -1
- package/dist/types/plugins/EmbeddedEntityInline/LinkedEntityInline.d.ts +1 -2
- package/dist/types/plugins/EmbeddedResourceBlock/LinkedResourceBlock.d.ts +1 -2
- package/dist/types/plugins/EmbeddedResourceInline/FetchingWrappedResourceInlineCard.d.ts +1 -1
- package/dist/types/plugins/EmbeddedResourceInline/LinkedResourceInline.d.ts +1 -2
- package/dist/types/plugins/Heading/components/Heading.d.ts +6 -6
- package/dist/types/plugins/Heading/components/ToolbarHeadingButton.d.ts +1 -2
- package/dist/types/plugins/Hr/index.d.ts +2 -2
- package/dist/types/plugins/Hyperlink/HyperlinkModal.d.ts +1 -2
- package/dist/types/plugins/Hyperlink/components/EntityHyperlink.d.ts +1 -2
- package/dist/types/plugins/Hyperlink/components/LinkPopover.d.ts +1 -1
- package/dist/types/plugins/Hyperlink/components/ResourceHyperlink.d.ts +1 -2
- package/dist/types/plugins/Hyperlink/components/ToolbarHyperlinkButton.d.ts +1 -2
- package/dist/types/plugins/Hyperlink/components/UrlHyperlink.d.ts +1 -2
- package/dist/types/plugins/List/components/List.d.ts +2 -3
- package/dist/types/plugins/List/components/ListItem.d.ts +1 -2
- package/dist/types/plugins/List/components/ToolbarListButton.d.ts +1 -2
- package/dist/types/plugins/Marks/Bold.d.ts +2 -3
- package/dist/types/plugins/Marks/Code.d.ts +3 -4
- package/dist/types/plugins/Marks/Italic.d.ts +2 -3
- package/dist/types/plugins/Marks/Subscript.d.ts +3 -4
- package/dist/types/plugins/Marks/Superscript.d.ts +3 -4
- package/dist/types/plugins/Marks/Underline.d.ts +2 -3
- package/dist/types/plugins/Marks/components/MarkToolbarButton.d.ts +1 -1
- package/dist/types/plugins/Paragraph/Paragraph.d.ts +1 -2
- package/dist/types/plugins/Quote/components/Quote.d.ts +1 -2
- package/dist/types/plugins/Quote/components/ToolbarQuoteButton.d.ts +1 -2
- package/dist/types/plugins/Table/components/Cell.d.ts +1 -2
- package/dist/types/plugins/Table/components/HeaderCell.d.ts +1 -2
- package/dist/types/plugins/Table/components/Row.d.ts +1 -2
- package/dist/types/plugins/Table/components/Table.d.ts +1 -2
- package/dist/types/plugins/Table/components/TableActions.d.ts +1 -2
- package/dist/types/plugins/Table/components/ToolbarButton.d.ts +1 -2
- package/dist/types/plugins/shared/EmbeddedBlockToolbarIcon.d.ts +1 -2
- package/dist/types/plugins/shared/EmbeddedInlineToolbarIcon.d.ts +1 -2
- package/dist/types/plugins/shared/FetchingWrappedAssetCard.d.ts +1 -2
- package/dist/types/plugins/shared/FetchingWrappedEntryCard.d.ts +1 -2
- package/dist/types/plugins/shared/FetchingWrappedResourceCard.d.ts +1 -2
- package/dist/types/plugins/shared/LinkedBlockWrapper.d.ts +1 -1
- package/dist/types/plugins/shared/LinkedInlineWrapper.d.ts +1 -1
- package/dist/types/plugins/shared/ResourceNewBadge.d.ts +1 -2
- package/dist/types/plugins/shared/ToolbarButton.d.ts +1 -2
- package/package.json +8 -5
|
@@ -12,29 +12,18 @@ const _richtexttypes = require("@contentful/rich-text-types");
|
|
|
12
12
|
const _editor = require("../../helpers/editor");
|
|
13
13
|
const _queries = require("../../internal/queries");
|
|
14
14
|
const _helpers = require("./helpers");
|
|
15
|
-
|
|
16
|
-
* Removes table wrappers when pasting a single table cell
|
|
17
|
-
*
|
|
18
|
-
* In Plate/Slate, copying the content of a table cell wraps
|
|
19
|
-
* it in a <table><tr><td>{content}</td></tr></table> even
|
|
20
|
-
* when copying partial cell content.
|
|
21
|
-
*
|
|
22
|
-
* That's really annoying as there is no way to remove the table
|
|
23
|
-
* wrappers in that case.
|
|
24
|
-
*/ const trimUnnecessaryTableWrapper = (node)=>{
|
|
15
|
+
const trimUnnecessaryTableWrapper = (node)=>{
|
|
25
16
|
if (!(0, _queries.isElement)(node)) {
|
|
26
17
|
return [
|
|
27
18
|
node
|
|
28
19
|
];
|
|
29
20
|
}
|
|
30
|
-
// must be a table with a single row
|
|
31
21
|
if (node.type !== _richtexttypes.BLOCKS.TABLE || node.children?.length !== 1) {
|
|
32
22
|
return [
|
|
33
23
|
node
|
|
34
24
|
];
|
|
35
25
|
}
|
|
36
26
|
const row = node.children[0];
|
|
37
|
-
// the row must contain a single cell
|
|
38
27
|
if (row?.children?.length !== 1) {
|
|
39
28
|
return [
|
|
40
29
|
node
|
|
@@ -44,14 +33,12 @@ const _helpers = require("./helpers");
|
|
|
44
33
|
return cell.children;
|
|
45
34
|
};
|
|
46
35
|
const insertTableFragment = (editor)=>{
|
|
47
|
-
const { insertFragment
|
|
36
|
+
const { insertFragment } = editor;
|
|
48
37
|
return (fragments)=>{
|
|
49
38
|
if (!editor.selection) {
|
|
50
39
|
return;
|
|
51
40
|
}
|
|
52
41
|
fragments = fragments.flatMap(trimUnnecessaryTableWrapper);
|
|
53
|
-
// We need to make sure we have a new, empty and clean paragraph in order to paste tables as-is due to how Slate behaves
|
|
54
|
-
// More info: https://github.com/ianstormtaylor/slate/pull/4489 and https://github.com/ianstormtaylor/slate/issues/4542
|
|
55
42
|
const isInsertingTable = fragments.some((fragment)=>(0, _helpers.isTable)(fragment));
|
|
56
43
|
const isTableFirstFragment = fragments.findIndex((fragment)=>(0, _helpers.isTable)(fragment)) === 0;
|
|
57
44
|
const currentLineHasText = (0, _queries.getText)(editor, editor.selection?.focus.path) !== '';
|
|
@@ -17,13 +17,8 @@ const _actions = require("./actions");
|
|
|
17
17
|
const onKeyDownTable = (editor, plugin)=>{
|
|
18
18
|
const defaultHandler = (0, _platetable.onKeyDownTable)(editor, plugin);
|
|
19
19
|
return (event)=>{
|
|
20
|
-
// This fixes `Cannot resolve a Slate point from DOM point:
|
|
21
|
-
// [object HTMLDivElement]` when typing while the cursor is before table
|
|
22
20
|
const windowSelection = window.getSelection();
|
|
23
|
-
// @ts-expect-error
|
|
24
|
-
// this attribute comes from `plugins/Table/components/Table.tsx`
|
|
25
21
|
if (windowSelection?.anchorNode?.attributes) {
|
|
26
|
-
// @ts-expect-error
|
|
27
22
|
const blockType = windowSelection.anchorNode.attributes?.['data-block-type']?.value;
|
|
28
23
|
const isBeforeTable = blockType === _richtexttypes.BLOCKS.TABLE;
|
|
29
24
|
if (isBeforeTable) {
|
|
@@ -45,11 +40,10 @@ const onKeyDownTable = (editor, plugin)=>{
|
|
|
45
40
|
return;
|
|
46
41
|
}
|
|
47
42
|
}
|
|
48
|
-
// TODO clean this up
|
|
49
43
|
if (event.key === 'Backspace') {
|
|
50
44
|
const entry = (0, _platetable.getTableEntries)(editor, {});
|
|
51
45
|
if (entry) {
|
|
52
|
-
const { table, row, cell
|
|
46
|
+
const { table , row , cell } = entry;
|
|
53
47
|
const cellText = (0, _queries.getText)(editor, cell[1]);
|
|
54
48
|
const isFirstCell = (0, _queries.isFirstChild)(row[1]);
|
|
55
49
|
const isFirstRow = (0, _queries.isFirstChild)(table[1]);
|
|
@@ -60,18 +54,15 @@ const onKeyDownTable = (editor, plugin)=>{
|
|
|
60
54
|
}
|
|
61
55
|
}
|
|
62
56
|
}
|
|
63
|
-
// Pressing Tab on the last cell creates a new row
|
|
64
|
-
// Otherwise, jumping between cells is handled in the defaultKeyDownTable
|
|
65
57
|
if (event.key === 'Tab' && !event.shiftKey) {
|
|
66
58
|
event.preventDefault();
|
|
67
59
|
const entry = (0, _platetable.getTableEntries)(editor, {});
|
|
68
60
|
if (entry) {
|
|
69
|
-
const { table, row, cell
|
|
61
|
+
const { table , row , cell } = entry;
|
|
70
62
|
const isLastCell = (0, _queries.isLastChildPath)(row, cell[1]);
|
|
71
63
|
const isLastRow = (0, _queries.isLastChildPath)(table, row[1]);
|
|
72
64
|
if (isLastRow && isLastCell) {
|
|
73
65
|
(0, _actions.addRowBelow)(editor);
|
|
74
|
-
// skip default handler
|
|
75
66
|
return;
|
|
76
67
|
} else {
|
|
77
68
|
defaultHandler(event);
|
|
@@ -20,22 +20,22 @@ const _richtexttypes = require("@contentful/rich-text-types");
|
|
|
20
20
|
const _queries = require("../../internal/queries");
|
|
21
21
|
const _Tracking = require("../../plugins/Tracking");
|
|
22
22
|
function hasTables(nodes) {
|
|
23
|
-
return nodes.some(({ type
|
|
23
|
+
return nodes.some(({ type })=>{
|
|
24
24
|
return type === _richtexttypes.BLOCKS.TABLE;
|
|
25
25
|
});
|
|
26
26
|
}
|
|
27
|
-
const isTableHeaderCell = ({ type
|
|
27
|
+
const isTableHeaderCell = ({ type })=>type === _richtexttypes.BLOCKS.TABLE_HEADER_CELL;
|
|
28
28
|
function hasHeadersOutsideFirstRow(nodes) {
|
|
29
|
-
return nodes.filter(({ type
|
|
29
|
+
return nodes.filter(({ type })=>type === _richtexttypes.BLOCKS.TABLE).flatMap(({ children })=>children.slice(1)).some(({ children })=>children.some(isTableHeaderCell));
|
|
30
30
|
}
|
|
31
31
|
function addTableTrackingEvents(editor) {
|
|
32
|
-
const { insertData
|
|
32
|
+
const { insertData } = editor;
|
|
33
33
|
editor.insertData = (data)=>{
|
|
34
34
|
const html = data.getData('text/html');
|
|
35
35
|
if (html) {
|
|
36
|
-
const { children: markupBefore
|
|
36
|
+
const { children: markupBefore } = editor;
|
|
37
37
|
insertData(data);
|
|
38
|
-
const { children: markupAfter
|
|
38
|
+
const { children: markupAfter } = editor;
|
|
39
39
|
setTimeout(()=>{
|
|
40
40
|
if (hasTables(markupBefore)) return;
|
|
41
41
|
if (hasTables(markupAfter)) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
@@ -7,22 +7,21 @@ describe('delete backward', ()=>{
|
|
|
7
7
|
const tests = [
|
|
8
8
|
{
|
|
9
9
|
title: 'deletes a character of the text inside li',
|
|
10
|
-
input:
|
|
11
|
-
expected:
|
|
10
|
+
input: (0, _testutils.jsx)("hul", null, (0, _testutils.jsx)("hli", null, (0, _testutils.jsx)("hp", null, "p1", (0, _testutils.jsx)("cursor", null)))),
|
|
11
|
+
expected: (0, _testutils.jsx)("hul", null, (0, _testutils.jsx)("hli", null, (0, _testutils.jsx)("hp", null, "p", (0, _testutils.jsx)("cursor", null))))
|
|
12
12
|
},
|
|
13
13
|
{
|
|
14
14
|
title: 'does not delete the very first paragraph',
|
|
15
|
-
input:
|
|
16
|
-
expected:
|
|
15
|
+
input: (0, _testutils.jsx)("fragment", null, (0, _testutils.jsx)("hp", null, (0, _testutils.jsx)("cursor", null)), (0, _testutils.jsx)("hp", null, "text")),
|
|
16
|
+
expected: (0, _testutils.jsx)("fragment", null, (0, _testutils.jsx)("hp", null, (0, _testutils.jsx)("cursor", null)), (0, _testutils.jsx)("hp", null, "text"))
|
|
17
17
|
}
|
|
18
18
|
];
|
|
19
|
-
const render = (children)
|
|
19
|
+
const render = (children)=>(0, _testutils.jsx)("editor", null, children, (0, _testutils.jsx)("hp", null, (0, _testutils.jsx)("htext", null)));
|
|
20
20
|
for (const t of tests){
|
|
21
21
|
test(t.title, ()=>{
|
|
22
|
-
const { editor
|
|
22
|
+
const { editor } = (0, _testutils.createTestEditor)({
|
|
23
23
|
input: render(t.input)
|
|
24
24
|
});
|
|
25
|
-
// Equivalent of pressing backspace
|
|
26
25
|
editor.deleteBackward('character');
|
|
27
26
|
(0, _testutils.assertOutput)({
|
|
28
27
|
editor,
|
|
@@ -35,32 +34,31 @@ describe('delete forward', ()=>{
|
|
|
35
34
|
const tests = [
|
|
36
35
|
{
|
|
37
36
|
title: 'deletes a character of the text inside li',
|
|
38
|
-
input:
|
|
39
|
-
expected:
|
|
37
|
+
input: (0, _testutils.jsx)("hul", null, (0, _testutils.jsx)("hli", null, (0, _testutils.jsx)("hp", null, (0, _testutils.jsx)("cursor", null), "p1"))),
|
|
38
|
+
expected: (0, _testutils.jsx)("hul", null, (0, _testutils.jsx)("hli", null, (0, _testutils.jsx)("hp", null, (0, _testutils.jsx)("cursor", null), "1")))
|
|
40
39
|
},
|
|
41
40
|
{
|
|
42
41
|
title: 'deletes the first paragraph when followed by another paragraph',
|
|
43
|
-
input:
|
|
44
|
-
expected:
|
|
42
|
+
input: (0, _testutils.jsx)("fragment", null, (0, _testutils.jsx)("hp", null, (0, _testutils.jsx)("cursor", null)), (0, _testutils.jsx)("hp", null, "text")),
|
|
43
|
+
expected: (0, _testutils.jsx)("hp", null, (0, _testutils.jsx)("cursor", null), "text")
|
|
45
44
|
},
|
|
46
45
|
{
|
|
47
46
|
title: 'deletes the first paragraph when followed by li',
|
|
48
|
-
input:
|
|
49
|
-
expected:
|
|
47
|
+
input: (0, _testutils.jsx)("fragment", null, (0, _testutils.jsx)("hp", null, (0, _testutils.jsx)("cursor", null)), (0, _testutils.jsx)("hul", null, (0, _testutils.jsx)("hli", null, (0, _testutils.jsx)("hp", null, "p1")))),
|
|
48
|
+
expected: (0, _testutils.jsx)("hul", null, (0, _testutils.jsx)("hli", null, (0, _testutils.jsx)("hp", null, (0, _testutils.jsx)("cursor", null), "p1")))
|
|
50
49
|
},
|
|
51
50
|
{
|
|
52
51
|
title: 'deletes the first paragraph when followed by a blockquote',
|
|
53
|
-
input:
|
|
54
|
-
expected:
|
|
52
|
+
input: (0, _testutils.jsx)("fragment", null, (0, _testutils.jsx)("hp", null, (0, _testutils.jsx)("cursor", null)), (0, _testutils.jsx)("hquote", null, (0, _testutils.jsx)("hp", null, "p1"))),
|
|
53
|
+
expected: (0, _testutils.jsx)("hquote", null, (0, _testutils.jsx)("hp", null, (0, _testutils.jsx)("cursor", null), "p1"))
|
|
55
54
|
}
|
|
56
55
|
];
|
|
57
|
-
const render = (children)
|
|
56
|
+
const render = (children)=>(0, _testutils.jsx)("editor", null, children, (0, _testutils.jsx)("hp", null, (0, _testutils.jsx)("htext", null)));
|
|
58
57
|
for (const t of tests){
|
|
59
58
|
test(t.title, ()=>{
|
|
60
|
-
const { editor
|
|
59
|
+
const { editor } = (0, _testutils.createTestEditor)({
|
|
61
60
|
input: render(t.input)
|
|
62
61
|
});
|
|
63
|
-
// Equivalent of pressing backspace
|
|
64
62
|
editor.deleteForward('character');
|
|
65
63
|
(0, _testutils.assertOutput)({
|
|
66
64
|
editor,
|
|
@@ -15,9 +15,6 @@ 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.
|
|
21
18
|
onMouseUp: (editor)=>()=>{
|
|
22
19
|
if (!editor.selection) {
|
|
23
20
|
return;
|
|
@@ -26,16 +23,9 @@ function createTextPlugin(restrictedMarks = []) {
|
|
|
26
23
|
}
|
|
27
24
|
},
|
|
28
25
|
withOverrides: (editor)=>{
|
|
29
|
-
|
|
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;
|
|
26
|
+
const { insertText } = editor;
|
|
35
27
|
editor.insertText = (text)=>{
|
|
36
|
-
const { selection
|
|
37
|
-
// If the cursor is at the end of an inline, move it outside
|
|
38
|
-
// before inserting
|
|
28
|
+
const { selection } = editor;
|
|
39
29
|
if (selection && (0, _queries.isRangeCollapsed)(selection)) {
|
|
40
30
|
const inlinePath = (0, _queries.getAboveNode)(editor, {
|
|
41
31
|
match: (n)=>(0, _queries.isInline)(editor, n),
|
|
@@ -51,8 +41,7 @@ function createTextPlugin(restrictedMarks = []) {
|
|
|
51
41
|
}
|
|
52
42
|
return insertText(text);
|
|
53
43
|
};
|
|
54
|
-
|
|
55
|
-
const { deleteForward, deleteBackward } = editor;
|
|
44
|
+
const { deleteForward , deleteBackward } = editor;
|
|
56
45
|
editor.deleteBackward = (unit)=>{
|
|
57
46
|
deleteEmptyParagraph(unit, editor, deleteBackward);
|
|
58
47
|
};
|
|
@@ -88,9 +77,8 @@ function deleteEmptyParagraph(unit, editor, deleteFunction) {
|
|
|
88
77
|
if (entry) {
|
|
89
78
|
const [paragraphOrHeading, path] = entry;
|
|
90
79
|
const isTextEmpty = (0, _queries.isAncestorEmpty)(editor, paragraphOrHeading);
|
|
91
|
-
// We ignore paragraphs/headings that are children of ul, ol, blockquote, tables, etc
|
|
92
80
|
const isRootLevel = path.length === 1;
|
|
93
|
-
const hasSiblings = editor.children.length > 1;
|
|
81
|
+
const hasSiblings = editor.children.length > 1;
|
|
94
82
|
if (isTextEmpty && isRootLevel && hasSiblings) {
|
|
95
83
|
(0, _transforms.removeNodes)(editor, {
|
|
96
84
|
at: path
|
|
@@ -124,11 +112,7 @@ function deleteEmptyParagraph(unit, editor, deleteFunction) {
|
|
|
124
112
|
deleteFunction(unit);
|
|
125
113
|
}
|
|
126
114
|
}
|
|
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) {
|
|
115
|
+
function fixPasteAsPlainText(editor) {
|
|
132
116
|
editor.insertTextData = (data)=>{
|
|
133
117
|
const text = data.getData('text/plain');
|
|
134
118
|
if (!text) {
|
|
@@ -137,7 +121,6 @@ function deleteEmptyParagraph(unit, editor, deleteFunction) {
|
|
|
137
121
|
const lines = text.split(/\n{2}/);
|
|
138
122
|
let split = false;
|
|
139
123
|
for (const line of lines){
|
|
140
|
-
// empty lines
|
|
141
124
|
if (/^(\r\n?|\n)$/.test(line)) {
|
|
142
125
|
continue;
|
|
143
126
|
}
|
|
@@ -9,11 +9,11 @@ function _export(target, all) {
|
|
|
9
9
|
});
|
|
10
10
|
}
|
|
11
11
|
_export(exports, {
|
|
12
|
-
createTrackingPlugin: function() {
|
|
13
|
-
return createTrackingPlugin;
|
|
14
|
-
},
|
|
15
12
|
getPastingSource: function() {
|
|
16
13
|
return getPastingSource;
|
|
14
|
+
},
|
|
15
|
+
createTrackingPlugin: function() {
|
|
16
|
+
return createTrackingPlugin;
|
|
17
17
|
}
|
|
18
18
|
});
|
|
19
19
|
const _utils = require("./utils");
|
|
@@ -39,7 +39,6 @@ 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
|
|
43
42
|
if (doc.querySelector('[style*="Arial_MSFontService"]') && (doc.querySelector('.TextRun') || doc.querySelector('.OutlineElement'))) {
|
|
44
43
|
return 'Microsoft Word Online';
|
|
45
44
|
}
|
|
@@ -77,7 +76,7 @@ const createTrackingPlugin = (onAction)=>{
|
|
|
77
76
|
return {
|
|
78
77
|
key: 'TrackingPlugin',
|
|
79
78
|
withOverrides: (editor)=>{
|
|
80
|
-
const { insertData
|
|
79
|
+
const { insertData } = editor;
|
|
81
80
|
editor.tracking = trackingActions;
|
|
82
81
|
editor.insertData = (data)=>{
|
|
83
82
|
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 =
|
|
11
|
+
const _contentfulslatejsadapter = _interop_require_wildcard(require("@contentful/contentful-slatejs-adapter"));
|
|
12
12
|
const _richtextplaintextrenderer = require("@contentful/rich-text-plain-text-renderer");
|
|
13
|
-
const _Schema =
|
|
13
|
+
const _Schema = _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,9 +37,7 @@ function _interop_require_wildcard(obj, nodeInterop) {
|
|
|
37
37
|
if (cache && cache.has(obj)) {
|
|
38
38
|
return cache.get(obj);
|
|
39
39
|
}
|
|
40
|
-
var newObj = {
|
|
41
|
-
__proto__: null
|
|
42
|
-
};
|
|
40
|
+
var newObj = {};
|
|
43
41
|
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
44
42
|
for(var key in obj){
|
|
45
43
|
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
@@ -59,7 +57,6 @@ function _interop_require_wildcard(obj, nodeInterop) {
|
|
|
59
57
|
}
|
|
60
58
|
function getCharacterCount(editor) {
|
|
61
59
|
const document = _contentfulslatejsadapter.toContentfulDocument({
|
|
62
|
-
// eslint-disable-next-line -- parameter type is not exported @typescript-eslint/no-explicit-any
|
|
63
60
|
document: editor.children,
|
|
64
61
|
schema: _Schema.default
|
|
65
62
|
});
|
|
@@ -14,8 +14,6 @@ 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
|
|
19
17
|
hotkey: 'enter',
|
|
20
18
|
before: true,
|
|
21
19
|
query: {
|
|
@@ -23,10 +21,7 @@ const createVoidsPlugin = ()=>({
|
|
|
23
21
|
}
|
|
24
22
|
},
|
|
25
23
|
{
|
|
26
|
-
// Inserts a new paragraph on enter when a void element is focused
|
|
27
24
|
hotkey: 'enter',
|
|
28
|
-
// exploit the internal use of Array.slice(0, level + 1) by the exitBreak plugin
|
|
29
|
-
// to stay in the parent element
|
|
30
25
|
level: -2,
|
|
31
26
|
query: {
|
|
32
27
|
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
|
-
disableCorePlugins: function() {
|
|
13
|
-
return disableCorePlugins;
|
|
14
|
-
},
|
|
15
12
|
getPlugins: function() {
|
|
16
13
|
return getPlugins;
|
|
14
|
+
},
|
|
15
|
+
disableCorePlugins: function() {
|
|
16
|
+
return disableCorePlugins;
|
|
17
17
|
}
|
|
18
18
|
});
|
|
19
19
|
const _plateserializerdocx = require("@udecode/plate-serializer-docx");
|
|
@@ -42,15 +42,11 @@ 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`
|
|
46
45
|
(0, _Tracking.createTrackingPlugin)(onAction),
|
|
47
|
-
// Global / Global shortcuts
|
|
48
46
|
(0, _DragAndDrop.createDragAndDropPlugin)(),
|
|
49
|
-
// Enable command palette plugin only, if at least action type is allowed
|
|
50
47
|
...Object.values((0, _useCommands.isCommandPromptPluginEnabled)(sdk)).some(Boolean) ? [
|
|
51
48
|
(0, _CommandPalette.createCommandPalettePlugin)()
|
|
52
49
|
] : [],
|
|
53
|
-
// Block Elements
|
|
54
50
|
(0, _Paragraph.createParagraphPlugin)(),
|
|
55
51
|
(0, _List.createListPlugin)(),
|
|
56
52
|
(0, _Hr.createHrPlugin)(),
|
|
@@ -60,28 +56,20 @@ const getPlugins = (sdk, onAction, restrictedMarks)=>[
|
|
|
60
56
|
(0, _EmbeddedEntityBlock.createEmbeddedEntryBlockPlugin)(sdk),
|
|
61
57
|
(0, _EmbeddedEntityBlock.createEmbeddedAssetBlockPlugin)(sdk),
|
|
62
58
|
(0, _EmbeddedResourceBlock.createEmbeddedResourceBlockPlugin)(sdk),
|
|
63
|
-
// Inline elements
|
|
64
59
|
(0, _Hyperlink.createHyperlinkPlugin)(sdk),
|
|
65
60
|
(0, _EmbeddedEntityInline.createEmbeddedEntityInlinePlugin)(sdk),
|
|
66
61
|
(0, _EmbeddedResourceInline.createEmbeddedResourceInlinePlugin)(sdk),
|
|
67
|
-
// Marks
|
|
68
62
|
(0, _Marks.createMarksPlugin)(),
|
|
69
|
-
// Other
|
|
70
63
|
(0, _TrailingParagraph.createTrailingParagraphPlugin)(),
|
|
71
64
|
(0, _Text.createTextPlugin)(restrictedMarks),
|
|
72
65
|
(0, _Voids.createVoidsPlugin)(),
|
|
73
66
|
(0, _SelectOnBackspace.createSelectOnBackspacePlugin)(),
|
|
74
|
-
// Pasting content from other sources
|
|
75
67
|
(0, _PasteHTML.createPasteHTMLPlugin)(),
|
|
76
|
-
// These plugins drive their configurations from the list of plugins
|
|
77
|
-
// above. They MUST come last.
|
|
78
68
|
(0, _Break.createSoftBreakPlugin)(),
|
|
79
69
|
(0, _Break.createExitBreakPlugin)(),
|
|
80
70
|
(0, _Break.createResetNodePlugin)(),
|
|
81
71
|
(0, _Normalizer.createNormalizerPlugin)()
|
|
82
72
|
];
|
|
83
73
|
const disableCorePlugins = {
|
|
84
|
-
// Note: Enabled by default since v9.0.0 but it causes Cypress's
|
|
85
|
-
// .click() command to fail
|
|
86
74
|
eventEditor: true
|
|
87
75
|
};
|
|
@@ -9,14 +9,14 @@ function _export(target, all) {
|
|
|
9
9
|
});
|
|
10
10
|
}
|
|
11
11
|
_export(exports, {
|
|
12
|
-
EmbeddedBlockToolbarIcon: function() {
|
|
13
|
-
return EmbeddedBlockToolbarIcon;
|
|
14
|
-
},
|
|
15
12
|
styles: function() {
|
|
16
13
|
return styles;
|
|
14
|
+
},
|
|
15
|
+
EmbeddedBlockToolbarIcon: function() {
|
|
16
|
+
return EmbeddedBlockToolbarIcon;
|
|
17
17
|
}
|
|
18
18
|
});
|
|
19
|
-
const _react =
|
|
19
|
+
const _react = _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,9 +46,7 @@ function _interop_require_wildcard(obj, nodeInterop) {
|
|
|
46
46
|
if (cache && cache.has(obj)) {
|
|
47
47
|
return cache.get(obj);
|
|
48
48
|
}
|
|
49
|
-
var newObj = {
|
|
50
|
-
__proto__: null
|
|
51
|
-
};
|
|
49
|
+
var newObj = {};
|
|
52
50
|
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
53
51
|
for(var key in obj){
|
|
54
52
|
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
@@ -71,7 +69,7 @@ const styles = {
|
|
|
71
69
|
marginRight: '10px'
|
|
72
70
|
})
|
|
73
71
|
};
|
|
74
|
-
function EmbeddedBlockToolbarIcon({ isDisabled, nodeType, onClose
|
|
72
|
+
function EmbeddedBlockToolbarIcon({ isDisabled , nodeType , onClose }) {
|
|
75
73
|
const editor = (0, _ContentfulEditorProvider.useContentfulEditor)();
|
|
76
74
|
const sdk = (0, _SdkProvider.useSdkContext)();
|
|
77
75
|
const handleClick = async (event)=>{
|
|
@@ -88,19 +86,19 @@ function EmbeddedBlockToolbarIcon({ isDisabled, nodeType, onClose }) {
|
|
|
88
86
|
};
|
|
89
87
|
const type = getEntityTypeFromNodeType(nodeType);
|
|
90
88
|
const baseClass = `rich-text__${nodeType}`;
|
|
91
|
-
return
|
|
89
|
+
return _react.createElement(_f36components.Menu.Item, {
|
|
92
90
|
disabled: isDisabled,
|
|
93
91
|
className: `${baseClass}-list-item`,
|
|
94
92
|
onClick: handleClick,
|
|
95
93
|
testId: `toolbar-toggle-${nodeType}`
|
|
96
|
-
},
|
|
94
|
+
}, _react.createElement(_f36components.Flex, {
|
|
97
95
|
alignItems: "center",
|
|
98
96
|
flexDirection: "row"
|
|
99
|
-
},
|
|
97
|
+
}, _react.createElement(_f36components.Icon, {
|
|
100
98
|
as: type === 'Asset' ? _f36icons.AssetIcon : _f36icons.EmbeddedEntryBlockIcon,
|
|
101
99
|
className: `rich-text__embedded-entry-list-icon ${styles.icon}`,
|
|
102
100
|
variant: "secondary"
|
|
103
|
-
}),
|
|
101
|
+
}), _react.createElement("span", null, type, nodeType == _richtexttypes.BLOCKS.EMBEDDED_RESOURCE && _react.createElement(_ResourceNewBadge.ResourceNewBadge, null))));
|
|
104
102
|
}
|
|
105
103
|
function getEntityTypeFromNodeType(nodeType) {
|
|
106
104
|
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 =
|
|
23
|
+
const _ishotkey = _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, dialogs
|
|
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,8 +72,6 @@ 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)
|
|
77
75
|
(0, _internal.select)(editor, selection);
|
|
78
76
|
insertBlock(editor, nodeType, entity);
|
|
79
77
|
ensureFollowingParagraph(editor, [
|
|
@@ -84,8 +82,6 @@ async function selectEntityAndInsert(nodeType, sdk, editor, logAction) {
|
|
|
84
82
|
nodeType
|
|
85
83
|
});
|
|
86
84
|
}
|
|
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.
|
|
89
85
|
rteSlide.onActive(()=>{
|
|
90
86
|
rteSlide.unwatch();
|
|
91
87
|
(0, _editor.focus)(editor);
|
|
@@ -95,17 +91,15 @@ async function selectResourceEntityAndInsert(sdk, editor, logAction) {
|
|
|
95
91
|
logAction('openCreateEmbedDialog', {
|
|
96
92
|
nodeType: _richtexttypes.BLOCKS.EMBEDDED_RESOURCE
|
|
97
93
|
});
|
|
98
|
-
const { field, dialogs
|
|
94
|
+
const { field , dialogs } = sdk;
|
|
99
95
|
const config = (0, _config.newResourceEntitySelectorConfigFromRichTextField)(field, _richtexttypes.BLOCKS.EMBEDDED_RESOURCE);
|
|
100
|
-
const { selection
|
|
96
|
+
const { selection } = editor;
|
|
101
97
|
const entity = await dialogs.selectSingleResourceEntry(config);
|
|
102
98
|
if (!entity) {
|
|
103
99
|
logAction('cancelCreateEmbedDialog', {
|
|
104
100
|
nodeType: _richtexttypes.BLOCKS.EMBEDDED_RESOURCE
|
|
105
101
|
});
|
|
106
102
|
} else {
|
|
107
|
-
// Selection prevents incorrect position of inserted ref when RTE doesn't have focus
|
|
108
|
-
// (i.e. when using hotkeys and slide-in)
|
|
109
103
|
(0, _internal.select)(editor, selection);
|
|
110
104
|
insertBlock(editor, _richtexttypes.BLOCKS.EMBEDDED_RESOURCE, entity);
|
|
111
105
|
ensureFollowingParagraph(editor, [
|
|
@@ -116,7 +110,6 @@ async function selectResourceEntityAndInsert(sdk, editor, logAction) {
|
|
|
116
110
|
});
|
|
117
111
|
}
|
|
118
112
|
}
|
|
119
|
-
// TODO: incorporate this logic inside the trailingParagraph plugin instead
|
|
120
113
|
function ensureFollowingParagraph(editor, nodeTypes) {
|
|
121
114
|
const entityBlock = (0, _internal.getAboveNode)(editor, {
|
|
122
115
|
match: {
|
|
@@ -129,8 +122,6 @@ function ensureFollowingParagraph(editor, nodeTypes) {
|
|
|
129
122
|
const level = entityBlock[1].length - 1;
|
|
130
123
|
const lastNode = (0, _internal.getLastNodeByLevel)(editor, level);
|
|
131
124
|
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
|
|
134
125
|
if (level !== 0 && !isTextContainer) {
|
|
135
126
|
(0, _editor.insertEmptyParagraph)(editor);
|
|
136
127
|
}
|
|
@@ -166,7 +157,6 @@ const createNode = (nodeType, entity)=>{
|
|
|
166
157
|
isVoid: true
|
|
167
158
|
};
|
|
168
159
|
};
|
|
169
|
-
// TODO: DRY up copied code from HR
|
|
170
160
|
function insertBlock(editor, nodeType, entity) {
|
|
171
161
|
if (!editor?.selection) return;
|
|
172
162
|
const linkedEntityBlock = createNode(nodeType, entity);
|
|
@@ -8,10 +8,10 @@ Object.defineProperty(exports, "EmbeddedInlineToolbarIcon", {
|
|
|
8
8
|
return EmbeddedInlineToolbarIcon;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
-
const _react =
|
|
11
|
+
const _react = _interop_require_wildcard(require("react"));
|
|
12
12
|
const _f36components = require("@contentful/f36-components");
|
|
13
13
|
const _f36icons = require("@contentful/f36-icons");
|
|
14
|
-
const _f36tokens =
|
|
14
|
+
const _f36tokens = _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,9 +45,7 @@ function _interop_require_wildcard(obj, nodeInterop) {
|
|
|
45
45
|
if (cache && cache.has(obj)) {
|
|
46
46
|
return cache.get(obj);
|
|
47
47
|
}
|
|
48
|
-
var newObj = {
|
|
49
|
-
__proto__: null
|
|
50
|
-
};
|
|
48
|
+
var newObj = {};
|
|
51
49
|
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
52
50
|
for(var key in obj){
|
|
53
51
|
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
@@ -78,7 +76,7 @@ const styles = {
|
|
|
78
76
|
}
|
|
79
77
|
})
|
|
80
78
|
};
|
|
81
|
-
function EmbeddedInlineToolbarIcon({ onClose, nodeType, isDisabled
|
|
79
|
+
function EmbeddedInlineToolbarIcon({ onClose , nodeType , isDisabled }) {
|
|
82
80
|
const editor = (0, _ContentfulEditorProvider.useContentfulEditor)();
|
|
83
81
|
const sdk = (0, _SdkProvider.useSdkContext)();
|
|
84
82
|
async function handleClick(event) {
|
|
@@ -92,16 +90,16 @@ function EmbeddedInlineToolbarIcon({ onClose, nodeType, isDisabled }) {
|
|
|
92
90
|
}
|
|
93
91
|
(0, _editor.moveToTheNextChar)(editor);
|
|
94
92
|
}
|
|
95
|
-
return
|
|
93
|
+
return _react.createElement(_f36components.Menu.Item, {
|
|
96
94
|
disabled: isDisabled,
|
|
97
95
|
className: "rich-text__entry-link-block-button",
|
|
98
96
|
testId: `toolbar-toggle-${nodeType}`,
|
|
99
97
|
onClick: handleClick
|
|
100
|
-
},
|
|
98
|
+
}, _react.createElement(_f36components.Flex, {
|
|
101
99
|
alignItems: "center",
|
|
102
100
|
flexDirection: "row"
|
|
103
|
-
},
|
|
101
|
+
}, _react.createElement(_f36icons.EmbeddedEntryInlineIcon, {
|
|
104
102
|
variant: "secondary",
|
|
105
103
|
className: `rich-text__embedded-entry-list-icon ${styles.icon}`
|
|
106
|
-
}),
|
|
104
|
+
}), _react.createElement("span", null, "Inline entry", nodeType == _richtexttypes.INLINES.EMBEDDED_RESOURCE && _react.createElement(_ResourceNewBadge.ResourceNewBadge, null))));
|
|
107
105
|
}
|