@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
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Credit: Modified version of Plate's list plugin
|
|
3
|
+
* See: https://github.com/udecode/plate/blob/main/packages/nodes/list
|
|
4
|
+
*/ import { getListTypes } from '@udecode/plate-list';
|
|
2
5
|
import { withoutNormalizing } from '../../../internal';
|
|
3
6
|
import { getNodeEntry, getNodeChildren, getNextPath, getPreviousPath, getLastChildPath, match } from '../../../internal/queries';
|
|
4
7
|
import { wrapNodes, moveNodes } from '../../../internal/transforms';
|
|
5
|
-
export const moveListItemDown = (editor, { list
|
|
8
|
+
export const moveListItemDown = (editor, { list, listItem })=>{
|
|
6
9
|
const [listNode] = list;
|
|
7
10
|
const [, listItemPath] = listItem;
|
|
8
11
|
let previousListItemPath;
|
|
@@ -11,6 +14,7 @@ export const moveListItemDown = (editor, { list , listItem })=>{
|
|
|
11
14
|
} catch (e) {
|
|
12
15
|
return;
|
|
13
16
|
}
|
|
17
|
+
// Previous sibling is the new parent
|
|
14
18
|
const previousSiblingItem = getNodeEntry(editor, previousListItemPath);
|
|
15
19
|
if (previousSiblingItem) {
|
|
16
20
|
const [, previousPath] = previousSiblingItem;
|
|
@@ -20,6 +24,7 @@ export const moveListItemDown = (editor, { list , listItem })=>{
|
|
|
20
24
|
const newPath = getNextPath(getLastChildPath(subList ?? previousSiblingItem));
|
|
21
25
|
withoutNormalizing(editor, ()=>{
|
|
22
26
|
if (!subList) {
|
|
27
|
+
// Create new sub-list
|
|
23
28
|
wrapNodes(editor, {
|
|
24
29
|
type: listNode.type,
|
|
25
30
|
children: [],
|
|
@@ -28,6 +33,7 @@ export const moveListItemDown = (editor, { list , listItem })=>{
|
|
|
28
33
|
at: listItemPath
|
|
29
34
|
});
|
|
30
35
|
}
|
|
36
|
+
// Move the current item to the sub-list
|
|
31
37
|
moveNodes(editor, {
|
|
32
38
|
at: listItemPath,
|
|
33
39
|
to: newPath
|
|
@@ -1,18 +1,23 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Credit: Modified version of Plate's list plugin
|
|
3
|
+
* See: https://github.com/udecode/plate/blob/main/packages/nodes/list
|
|
4
|
+
*/ import { isListNested, ELEMENT_LIC, getListItemEntry, moveListItemUp } from '@udecode/plate-list';
|
|
2
5
|
import { withoutNormalizing } from '../../../internal';
|
|
3
6
|
import { getNodeEntries, getPluginType, createPathRef, getParentPath, isAncestorPath } from '../../../internal/queries';
|
|
4
7
|
import { moveListItemDown } from './moveListItemDown';
|
|
5
|
-
export const moveListItems = (editor, { increase =true
|
|
8
|
+
export const moveListItems = (editor, { increase = true, at = editor.selection ?? undefined } = {})=>{
|
|
6
9
|
const _nodes = getNodeEntries(editor, {
|
|
7
10
|
at,
|
|
8
11
|
match: {
|
|
9
12
|
type: getPluginType(editor, ELEMENT_LIC)
|
|
10
13
|
}
|
|
11
14
|
});
|
|
15
|
+
// Get the selected lic
|
|
12
16
|
const lics = Array.from(_nodes);
|
|
13
17
|
if (!lics.length) return;
|
|
14
18
|
const highestLicPaths = [];
|
|
15
19
|
const highestLicPathRefs = [];
|
|
20
|
+
// Filter out the nested lic, we just need to move the highest ones
|
|
16
21
|
lics.forEach((lic)=>{
|
|
17
22
|
const licPath = lic[1];
|
|
18
23
|
const liPath = getParentPath(licPath);
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import { jsx, assertOutput, createTestEditor } from '../../../test-utils';
|
|
1
|
+
/** @jsx jsx */ import { jsx, assertOutput, createTestEditor } from '../../../test-utils';
|
|
2
2
|
import { moveListItems } from './moveListItems';
|
|
3
3
|
describe('moving list items (up/down)', ()=>{
|
|
4
|
-
const renderEditor = (children)
|
|
4
|
+
const renderEditor = (children)=>/*#__PURE__*/ jsx("editor", null, children, /*#__PURE__*/ jsx("hp", null, /*#__PURE__*/ jsx("htext", null)));
|
|
5
5
|
const assertTab = (t, shift = false)=>{
|
|
6
6
|
test(t.title, ()=>{
|
|
7
|
-
const { editor
|
|
7
|
+
const { editor } = createTestEditor({
|
|
8
8
|
input: renderEditor(t.input)
|
|
9
9
|
});
|
|
10
|
+
// Equivalent of pressing (SHIFT+)TAB
|
|
10
11
|
moveListItems(editor, {
|
|
11
12
|
increase: !shift
|
|
12
13
|
});
|
|
@@ -19,37 +20,37 @@ describe('moving list items (up/down)', ()=>{
|
|
|
19
20
|
const tests = [
|
|
20
21
|
{
|
|
21
22
|
title: 'single paragraph',
|
|
22
|
-
input: jsx("hul", null, jsx("hli", null, jsx("hp", null, "p1")), jsx("hli", null, jsx("hp", null, "p2", jsx("cursor", null)))),
|
|
23
|
-
expected: jsx("hul", null, jsx("hli", null, jsx("hp", null, "p1"), jsx("hul", null, jsx("hli", null, jsx("hp", null, "p2", jsx("cursor", null))))))
|
|
23
|
+
input: /*#__PURE__*/ jsx("hul", null, /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, "p1")), /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, "p2", /*#__PURE__*/ jsx("cursor", null)))),
|
|
24
|
+
expected: /*#__PURE__*/ jsx("hul", null, /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, "p1"), /*#__PURE__*/ jsx("hul", null, /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, "p2", /*#__PURE__*/ jsx("cursor", null))))))
|
|
24
25
|
},
|
|
25
26
|
{
|
|
26
27
|
title: 'multiple paragraphs',
|
|
27
|
-
input: jsx("hul", null, jsx("hli", null, jsx("hp", null, "p1"), jsx("hp", null, "p2")), jsx("hli", null, jsx("hp", null, "p3", jsx("cursor", null)))),
|
|
28
|
-
expected: jsx("hul", null, jsx("hli", null, jsx("hp", null, "p1"), jsx("hp", null, "p2"), jsx("hul", null, jsx("hli", null, jsx("hp", null, "p3", jsx("cursor", null))))))
|
|
28
|
+
input: /*#__PURE__*/ jsx("hul", null, /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, "p1"), /*#__PURE__*/ jsx("hp", null, "p2")), /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, "p3", /*#__PURE__*/ jsx("cursor", null)))),
|
|
29
|
+
expected: /*#__PURE__*/ jsx("hul", null, /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, "p1"), /*#__PURE__*/ jsx("hp", null, "p2"), /*#__PURE__*/ jsx("hul", null, /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, "p3", /*#__PURE__*/ jsx("cursor", null))))))
|
|
29
30
|
},
|
|
30
31
|
{
|
|
31
32
|
title: 'multiple elements',
|
|
32
|
-
input: jsx("hul", null, jsx("hli", null, jsx("hp", null, "a"), jsx("hp", null, "b"), jsx("hquote", null, jsx("hp", null, "quote"))), jsx("hli", null, jsx("hp", null, "c", jsx("cursor", null)), jsx("hp", null, "d"), jsx("hembed", {
|
|
33
|
+
input: /*#__PURE__*/ jsx("hul", null, /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, "a"), /*#__PURE__*/ jsx("hp", null, "b"), /*#__PURE__*/ jsx("hquote", null, /*#__PURE__*/ jsx("hp", null, "quote"))), /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, "c", /*#__PURE__*/ jsx("cursor", null)), /*#__PURE__*/ jsx("hp", null, "d"), /*#__PURE__*/ jsx("hembed", {
|
|
33
34
|
type: "Asset",
|
|
34
35
|
id: "asset-id"
|
|
35
36
|
}))),
|
|
36
|
-
expected: jsx("hul", null, jsx("hli", null, jsx("hp", null, "a"), jsx("hp", null, "b"), jsx("hquote", null, jsx("hp", null, "quote")), jsx("hul", null, jsx("hli", null, jsx("hp", null, "c", jsx("cursor", null)), jsx("hp", null, "d"), jsx("hembed", {
|
|
37
|
+
expected: /*#__PURE__*/ jsx("hul", null, /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, "a"), /*#__PURE__*/ jsx("hp", null, "b"), /*#__PURE__*/ jsx("hquote", null, /*#__PURE__*/ jsx("hp", null, "quote")), /*#__PURE__*/ jsx("hul", null, /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, "c", /*#__PURE__*/ jsx("cursor", null)), /*#__PURE__*/ jsx("hp", null, "d"), /*#__PURE__*/ jsx("hembed", {
|
|
37
38
|
type: "Asset",
|
|
38
39
|
id: "asset-id"
|
|
39
40
|
})))))
|
|
40
41
|
},
|
|
41
42
|
{
|
|
42
43
|
title: 'with a sub-list',
|
|
43
|
-
input: jsx("hul", null, jsx("hli", null, jsx("hp", null, "p1"), jsx("hul", null, jsx("hli", null, jsx("hp", null, "sub p1")))), jsx("hli", null, jsx("hp", null, "p2", jsx("cursor", null)))),
|
|
44
|
-
expected: jsx("hul", null, jsx("hli", null, jsx("hp", null, "p1"), jsx("hul", null, jsx("hli", null, jsx("hp", null, "sub p1")), jsx("hli", null, jsx("hp", null, "p2", jsx("cursor", null))))))
|
|
44
|
+
input: /*#__PURE__*/ jsx("hul", null, /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, "p1"), /*#__PURE__*/ jsx("hul", null, /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, "sub p1")))), /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, "p2", /*#__PURE__*/ jsx("cursor", null)))),
|
|
45
|
+
expected: /*#__PURE__*/ jsx("hul", null, /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, "p1"), /*#__PURE__*/ jsx("hul", null, /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, "sub p1")), /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, "p2", /*#__PURE__*/ jsx("cursor", null))))))
|
|
45
46
|
},
|
|
46
47
|
{
|
|
47
48
|
title: 'with a sub-list as non-last child',
|
|
48
|
-
input: jsx("hul", null, jsx("hli", null, jsx("hp", null, "p1"), jsx("hul", null, jsx("hli", null, jsx("hp", null, "sub p1"))), jsx("hembed", {
|
|
49
|
+
input: /*#__PURE__*/ jsx("hul", null, /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, "p1"), /*#__PURE__*/ jsx("hul", null, /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, "sub p1"))), /*#__PURE__*/ jsx("hembed", {
|
|
49
50
|
type: "Entry",
|
|
50
51
|
id: "entry-id"
|
|
51
|
-
})), jsx("hli", null, jsx("hp", null, "p2", jsx("cursor", null)))),
|
|
52
|
-
expected: jsx("hul", null, jsx("hli", null, jsx("hp", null, "p1"), jsx("hul", null, jsx("hli", null, jsx("hp", null, "sub p1")), jsx("hli", null, jsx("hp", null, "p2", jsx("cursor", null)))), jsx("hembed", {
|
|
52
|
+
})), /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, "p2", /*#__PURE__*/ jsx("cursor", null)))),
|
|
53
|
+
expected: /*#__PURE__*/ jsx("hul", null, /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, "p1"), /*#__PURE__*/ jsx("hul", null, /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, "sub p1")), /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, "p2", /*#__PURE__*/ jsx("cursor", null)))), /*#__PURE__*/ jsx("hembed", {
|
|
53
54
|
type: "Entry",
|
|
54
55
|
id: "entry-id"
|
|
55
56
|
})))
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Credit: Modified version of Plate's list plugin
|
|
3
|
+
* See: https://github.com/udecode/plate/blob/main/packages/nodes/list
|
|
4
|
+
*/ import { BLOCKS } from '@contentful/rich-text-types';
|
|
2
5
|
import { ELEMENT_LIC } from '@udecode/plate-list';
|
|
3
6
|
import { getListItemEntry } from '@udecode/plate-list';
|
|
4
7
|
import { withoutNormalizing } from '../../../internal';
|
|
@@ -10,14 +13,15 @@ const listTypes = [
|
|
|
10
13
|
BLOCKS.UL_LIST,
|
|
11
14
|
BLOCKS.OL_LIST
|
|
12
15
|
];
|
|
13
|
-
export const toggleList = (editor, { type
|
|
16
|
+
export const toggleList = (editor, { type })=>withoutNormalizing(editor, ()=>{
|
|
14
17
|
if (!editor.selection) {
|
|
15
18
|
return;
|
|
16
19
|
}
|
|
17
20
|
if (isRangeCollapsed(editor.selection) || !isRangeAcrossBlocks(editor)) {
|
|
21
|
+
// selection is collapsed
|
|
18
22
|
const res = getListItemEntry(editor);
|
|
19
23
|
if (res) {
|
|
20
|
-
const { list
|
|
24
|
+
const { list } = res;
|
|
21
25
|
if (list[0].type !== type) {
|
|
22
26
|
setNodes(editor, {
|
|
23
27
|
type
|
|
@@ -55,6 +59,7 @@ export const toggleList = (editor, { type })=>withoutNormalizing(editor, ()=>{
|
|
|
55
59
|
}
|
|
56
60
|
}
|
|
57
61
|
} else {
|
|
62
|
+
// selection is a range
|
|
58
63
|
const [startPoint, endPoint] = getRangeEdges(editor.selection);
|
|
59
64
|
const commonEntry = getCommonNode(editor, startPoint.path, endPoint.path);
|
|
60
65
|
if (listTypes.includes(commonEntry[0].type) || commonEntry[0].type === BLOCKS.LIST_ITEM) {
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { BLOCKS } from '@contentful/rich-text-types';
|
|
1
|
+
/** @jsx jsx */ import { BLOCKS } from '@contentful/rich-text-types';
|
|
2
2
|
import { assertOutput, jsx, createTestEditor } from '../../../test-utils';
|
|
3
3
|
import { toggleList } from './toggleList';
|
|
4
4
|
describe('toggle on', ()=>{
|
|
5
5
|
it('should turn a p to list', ()=>{
|
|
6
|
-
const input = jsx("editor", null, jsx("hp", null, "1", jsx("cursor", null)));
|
|
7
|
-
const expected = jsx("editor", null, jsx("hul", null, jsx("hli", null, jsx("hp", null, "1", jsx("cursor", null)))), jsx("hp", null, jsx("htext", null)));
|
|
8
|
-
const { editor
|
|
6
|
+
const input = /*#__PURE__*/ jsx("editor", null, /*#__PURE__*/ jsx("hp", null, "1", /*#__PURE__*/ jsx("cursor", null)));
|
|
7
|
+
const expected = /*#__PURE__*/ jsx("editor", null, /*#__PURE__*/ jsx("hul", null, /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, "1", /*#__PURE__*/ jsx("cursor", null)))), /*#__PURE__*/ jsx("hp", null, /*#__PURE__*/ jsx("htext", null)));
|
|
8
|
+
const { editor } = createTestEditor({
|
|
9
9
|
input
|
|
10
10
|
});
|
|
11
11
|
toggleList(editor, {
|
|
@@ -17,9 +17,9 @@ describe('toggle on', ()=>{
|
|
|
17
17
|
});
|
|
18
18
|
});
|
|
19
19
|
it('should turn a p with a selection to list', ()=>{
|
|
20
|
-
const input = jsx("editor", null, jsx("hp", null, "Planetas ", jsx("anchor", null), "mori in", jsx("focus", null), " gandavum!"));
|
|
21
|
-
const expected = jsx("editor", null, jsx("hul", null, jsx("hli", null, jsx("hp", null, "Planetas ", jsx("anchor", null), "mori in", jsx("focus", null), " gandavum!"))), jsx("hp", null, jsx("htext", null)));
|
|
22
|
-
const { editor
|
|
20
|
+
const input = /*#__PURE__*/ jsx("editor", null, /*#__PURE__*/ jsx("hp", null, "Planetas ", /*#__PURE__*/ jsx("anchor", null), "mori in", /*#__PURE__*/ jsx("focus", null), " gandavum!"));
|
|
21
|
+
const expected = /*#__PURE__*/ jsx("editor", null, /*#__PURE__*/ jsx("hul", null, /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, "Planetas ", /*#__PURE__*/ jsx("anchor", null), "mori in", /*#__PURE__*/ jsx("focus", null), " gandavum!"))), /*#__PURE__*/ jsx("hp", null, /*#__PURE__*/ jsx("htext", null)));
|
|
22
|
+
const { editor } = createTestEditor({
|
|
23
23
|
input
|
|
24
24
|
});
|
|
25
25
|
toggleList(editor, {
|
|
@@ -31,9 +31,9 @@ describe('toggle on', ()=>{
|
|
|
31
31
|
});
|
|
32
32
|
});
|
|
33
33
|
it('should turn multiple p to list', ()=>{
|
|
34
|
-
const input = jsx("editor", null, jsx("hp", null, jsx("anchor", null), "1"), jsx("hp", null, "2"), jsx("hp", null, "3", jsx("focus", null)));
|
|
35
|
-
const expected = jsx("editor", null, jsx("hul", null, jsx("hli", null, jsx("hp", null, jsx("anchor", null), "1")), jsx("hli", null, jsx("hp", null, "2")), jsx("hli", null, jsx("hp", null, "3", jsx("focus", null)))), jsx("hp", null, jsx("htext", null)));
|
|
36
|
-
const { editor
|
|
34
|
+
const input = /*#__PURE__*/ jsx("editor", null, /*#__PURE__*/ jsx("hp", null, /*#__PURE__*/ jsx("anchor", null), "1"), /*#__PURE__*/ jsx("hp", null, "2"), /*#__PURE__*/ jsx("hp", null, "3", /*#__PURE__*/ jsx("focus", null)));
|
|
35
|
+
const expected = /*#__PURE__*/ jsx("editor", null, /*#__PURE__*/ jsx("hul", null, /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, /*#__PURE__*/ jsx("anchor", null), "1")), /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, "2")), /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, "3", /*#__PURE__*/ jsx("focus", null)))), /*#__PURE__*/ jsx("hp", null, /*#__PURE__*/ jsx("htext", null)));
|
|
36
|
+
const { editor } = createTestEditor({
|
|
37
37
|
input
|
|
38
38
|
});
|
|
39
39
|
toggleList(editor, {
|
|
@@ -47,9 +47,9 @@ describe('toggle on', ()=>{
|
|
|
47
47
|
});
|
|
48
48
|
describe('toggle off', ()=>{
|
|
49
49
|
it('should split a simple list to two', ()=>{
|
|
50
|
-
const input = jsx("editor", null, jsx("hul", null, jsx("hli", null, jsx("hp", null, "1")), jsx("hli", null, jsx("hp", null, "2", jsx("cursor", null))), jsx("hli", null, jsx("hp", null, "3"))));
|
|
51
|
-
const expected = jsx("editor", null, jsx("hul", null, jsx("hli", null, jsx("hp", null, "1"))), jsx("hp", null, "2", jsx("cursor", null)), jsx("hul", null, jsx("hli", null, jsx("hp", null, "3"))), jsx("hp", null, jsx("htext", null)));
|
|
52
|
-
const { editor
|
|
50
|
+
const input = /*#__PURE__*/ jsx("editor", null, /*#__PURE__*/ jsx("hul", null, /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, "1")), /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, "2", /*#__PURE__*/ jsx("cursor", null))), /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, "3"))));
|
|
51
|
+
const expected = /*#__PURE__*/ jsx("editor", null, /*#__PURE__*/ jsx("hul", null, /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, "1"))), /*#__PURE__*/ jsx("hp", null, "2", /*#__PURE__*/ jsx("cursor", null)), /*#__PURE__*/ jsx("hul", null, /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, "3"))), /*#__PURE__*/ jsx("hp", null, /*#__PURE__*/ jsx("htext", null)));
|
|
52
|
+
const { editor } = createTestEditor({
|
|
53
53
|
input
|
|
54
54
|
});
|
|
55
55
|
toggleList(editor, {
|
|
@@ -61,9 +61,9 @@ describe('toggle off', ()=>{
|
|
|
61
61
|
});
|
|
62
62
|
});
|
|
63
63
|
it('should split a nested list', ()=>{
|
|
64
|
-
const input = jsx("editor", null, jsx("hul", null, jsx("hli", null, jsx("hp", null, "1"), jsx("hul", null, jsx("hli", null, jsx("hp", null, "11")), jsx("hli", null, jsx("hp", null, "12", jsx("cursor", null))), jsx("hli", null, jsx("hp", null, "13"))))));
|
|
65
|
-
const expected = jsx("editor", null, jsx("hul", null, jsx("hli", null, jsx("hp", null, "1"), jsx("hul", null, jsx("hli", null, jsx("hp", null, "11"))))), jsx("hp", null, "12", jsx("cursor", null)), jsx("hul", null, jsx("hli", null, jsx("hp", null, "13"))), jsx("hp", null, jsx("htext", null)));
|
|
66
|
-
const { editor
|
|
64
|
+
const input = /*#__PURE__*/ jsx("editor", null, /*#__PURE__*/ jsx("hul", null, /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, "1"), /*#__PURE__*/ jsx("hul", null, /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, "11")), /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, "12", /*#__PURE__*/ jsx("cursor", null))), /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, "13"))))));
|
|
65
|
+
const expected = /*#__PURE__*/ jsx("editor", null, /*#__PURE__*/ jsx("hul", null, /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, "1"), /*#__PURE__*/ jsx("hul", null, /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, "11"))))), /*#__PURE__*/ jsx("hp", null, "12", /*#__PURE__*/ jsx("cursor", null)), /*#__PURE__*/ jsx("hul", null, /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, "13"))), /*#__PURE__*/ jsx("hp", null, /*#__PURE__*/ jsx("htext", null)));
|
|
66
|
+
const { editor } = createTestEditor({
|
|
67
67
|
input
|
|
68
68
|
});
|
|
69
69
|
toggleList(editor, {
|
|
@@ -75,9 +75,9 @@ describe('toggle off', ()=>{
|
|
|
75
75
|
});
|
|
76
76
|
});
|
|
77
77
|
it('should turn a list to multiple p', ()=>{
|
|
78
|
-
const input = jsx("editor", null, jsx("hul", null, jsx("hli", null, jsx("hp", null, jsx("anchor", null), "1")), jsx("hli", null, jsx("hp", null, "2")), jsx("hli", null, jsx("hp", null, "3", jsx("focus", null)))));
|
|
79
|
-
const expected = jsx("editor", null, jsx("hp", null, jsx("anchor", null), "1"), jsx("hp", null, "2"), jsx("hp", null, "3", jsx("focus", null)));
|
|
80
|
-
const { editor
|
|
78
|
+
const input = /*#__PURE__*/ jsx("editor", null, /*#__PURE__*/ jsx("hul", null, /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, /*#__PURE__*/ jsx("anchor", null), "1")), /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, "2")), /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, "3", /*#__PURE__*/ jsx("focus", null)))));
|
|
79
|
+
const expected = /*#__PURE__*/ jsx("editor", null, /*#__PURE__*/ jsx("hp", null, /*#__PURE__*/ jsx("anchor", null), "1"), /*#__PURE__*/ jsx("hp", null, "2"), /*#__PURE__*/ jsx("hp", null, "3", /*#__PURE__*/ jsx("focus", null)));
|
|
80
|
+
const { editor } = createTestEditor({
|
|
81
81
|
input
|
|
82
82
|
});
|
|
83
83
|
toggleList(editor, {
|
|
@@ -91,9 +91,9 @@ describe('toggle off', ()=>{
|
|
|
91
91
|
});
|
|
92
92
|
describe('toggle over', ()=>{
|
|
93
93
|
it('should toggle different list types', ()=>{
|
|
94
|
-
const input = jsx("editor", null, jsx("hul", null, jsx("hli", null, jsx("hp", null, "1", jsx("cursor", null)))));
|
|
95
|
-
const expected = jsx("editor", null, jsx("hol", null, jsx("hli", null, jsx("hp", null, "1"))), jsx("hp", null, jsx("htext", null)));
|
|
96
|
-
const { editor
|
|
94
|
+
const input = /*#__PURE__*/ jsx("editor", null, /*#__PURE__*/ jsx("hul", null, /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, "1", /*#__PURE__*/ jsx("cursor", null)))));
|
|
95
|
+
const expected = /*#__PURE__*/ jsx("editor", null, /*#__PURE__*/ jsx("hol", null, /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, "1"))), /*#__PURE__*/ jsx("hp", null, /*#__PURE__*/ jsx("htext", null)));
|
|
96
|
+
const { editor } = createTestEditor({
|
|
97
97
|
input
|
|
98
98
|
});
|
|
99
99
|
toggleList(editor, {
|
|
@@ -105,9 +105,9 @@ describe('toggle over', ()=>{
|
|
|
105
105
|
});
|
|
106
106
|
});
|
|
107
107
|
it('should only toggle the nested list', ()=>{
|
|
108
|
-
const input = jsx("editor", null, jsx("hul", null, jsx("hli", null, jsx("hp", null, "1"), jsx("hul", null, jsx("hli", null, jsx("hp", null, "11", jsx("cursor", null)))))));
|
|
109
|
-
const expected = jsx("editor", null, jsx("hul", null, jsx("hli", null, jsx("hp", null, "1"), jsx("hol", null, jsx("hli", null, jsx("hp", null, "11", jsx("cursor", null)))))), jsx("hp", null, jsx("htext", null)));
|
|
110
|
-
const { editor
|
|
108
|
+
const input = /*#__PURE__*/ jsx("editor", null, /*#__PURE__*/ jsx("hul", null, /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, "1"), /*#__PURE__*/ jsx("hul", null, /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, "11", /*#__PURE__*/ jsx("cursor", null)))))));
|
|
109
|
+
const expected = /*#__PURE__*/ jsx("editor", null, /*#__PURE__*/ jsx("hul", null, /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, "1"), /*#__PURE__*/ jsx("hol", null, /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, "11", /*#__PURE__*/ jsx("cursor", null)))))), /*#__PURE__*/ jsx("hp", null, /*#__PURE__*/ jsx("htext", null)));
|
|
110
|
+
const { editor } = createTestEditor({
|
|
111
111
|
input
|
|
112
112
|
});
|
|
113
113
|
toggleList(editor, {
|
|
@@ -119,9 +119,9 @@ describe('toggle over', ()=>{
|
|
|
119
119
|
});
|
|
120
120
|
});
|
|
121
121
|
it('should only toggle everything that is selected', ()=>{
|
|
122
|
-
const input = jsx("editor", null, jsx("hul", null, jsx("hli", null, jsx("hp", null, jsx("anchor", null), "1"), jsx("hul", null, jsx("hli", null, jsx("hp", null, "11", jsx("focus", null)))))));
|
|
123
|
-
const expected = jsx("editor", null, jsx("hol", null, jsx("hli", null, jsx("hp", null, jsx("anchor", null), "1"), jsx("hol", null, jsx("hli", null, jsx("hp", null, "11", jsx("focus", null)))))), jsx("hp", null, jsx("htext", null)));
|
|
124
|
-
const { editor
|
|
122
|
+
const input = /*#__PURE__*/ jsx("editor", null, /*#__PURE__*/ jsx("hul", null, /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, /*#__PURE__*/ jsx("anchor", null), "1"), /*#__PURE__*/ jsx("hul", null, /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, "11", /*#__PURE__*/ jsx("focus", null)))))));
|
|
123
|
+
const expected = /*#__PURE__*/ jsx("editor", null, /*#__PURE__*/ jsx("hol", null, /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, /*#__PURE__*/ jsx("anchor", null), "1"), /*#__PURE__*/ jsx("hol", null, /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, "11", /*#__PURE__*/ jsx("focus", null)))))), /*#__PURE__*/ jsx("hp", null, /*#__PURE__*/ jsx("htext", null)));
|
|
124
|
+
const { editor } = createTestEditor({
|
|
125
125
|
input
|
|
126
126
|
});
|
|
127
127
|
toggleList(editor, {
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Credit: Modified version of Plate's list plugin
|
|
3
|
+
* See: https://github.com/udecode/plate/blob/main/packages/nodes/list
|
|
4
|
+
*/ import { BLOCKS } from '@contentful/rich-text-types';
|
|
2
5
|
import { withoutNormalizing } from '../../../internal';
|
|
3
6
|
import { getNodeEntries, isElement } from '../../../internal/queries';
|
|
4
7
|
import { unwrapNodes, liftNodes } from '../../../internal/transforms';
|
|
@@ -8,15 +11,17 @@ function hasUnliftedListItems(editor, at) {
|
|
|
8
11
|
match: (node, path)=>isElement(node) && node.type === BLOCKS.LIST_ITEM && path.length >= 2
|
|
9
12
|
}).next().done;
|
|
10
13
|
}
|
|
11
|
-
export const unwrapList = (editor, { at
|
|
14
|
+
export const unwrapList = (editor, { at } = {})=>{
|
|
12
15
|
withoutNormalizing(editor, ()=>{
|
|
13
16
|
do {
|
|
17
|
+
// lift list items to the root level
|
|
14
18
|
liftNodes(editor, {
|
|
15
19
|
at,
|
|
16
20
|
match: (node)=>isElement(node) && node.type === BLOCKS.LIST_ITEM,
|
|
17
21
|
mode: 'lowest'
|
|
18
22
|
});
|
|
19
23
|
}while (!hasUnliftedListItems(editor, at))
|
|
24
|
+
// finally unwrap all lifted items
|
|
20
25
|
unwrapNodes(editor, {
|
|
21
26
|
at,
|
|
22
27
|
match: {
|
|
@@ -16,7 +16,11 @@ const getNearestListAncestor = (editor, path)=>{
|
|
|
16
16
|
match: isList
|
|
17
17
|
}) || [];
|
|
18
18
|
};
|
|
19
|
-
|
|
19
|
+
/**
|
|
20
|
+
* Places orphaned list items in a list. If there's a list somewhere
|
|
21
|
+
* in the node's ancestors, defaults to that list type, else places
|
|
22
|
+
* the list item in an unordered list.
|
|
23
|
+
*/ export const normalizeOrphanedListItem = (editor, [, path])=>{
|
|
20
24
|
const [parentList] = getNearestListAncestor(editor, path);
|
|
21
25
|
const parentListType = parentList?.type;
|
|
22
26
|
wrapNodes(editor, {
|
|
@@ -65,7 +69,7 @@ export const replaceNodeWithListItems = (editor, entry)=>{
|
|
|
65
69
|
});
|
|
66
70
|
};
|
|
67
71
|
export const isListTypeActive = (editor, type)=>{
|
|
68
|
-
const { selection
|
|
72
|
+
const { selection } = editor;
|
|
69
73
|
if (!selection) {
|
|
70
74
|
return false;
|
|
71
75
|
}
|
|
@@ -76,6 +80,7 @@ export const isListTypeActive = (editor, type)=>{
|
|
|
76
80
|
return true;
|
|
77
81
|
}
|
|
78
82
|
}
|
|
83
|
+
// Lists can be nested. Here, we take the list type at the lowest level
|
|
79
84
|
const listNode = getBlockAbove(editor, {
|
|
80
85
|
match: {
|
|
81
86
|
type: [
|
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Credit: Modified version of Plate's list plugin
|
|
3
|
+
* See: https://github.com/udecode/plate/blob/main/packages/nodes/list
|
|
4
|
+
*/ import { LIST_ITEM_BLOCKS } from '@contentful/rich-text-types';
|
|
2
5
|
import { normalizeList, deleteFragmentList, deleteForwardList } from '@udecode/plate-list';
|
|
3
6
|
import { insertListBreak } from './insertListBreak';
|
|
4
7
|
import { insertListFragment } from './insertListFragment';
|
|
5
8
|
const validLiChildrenTypes = LIST_ITEM_BLOCKS;
|
|
6
9
|
export const withList = (editor)=>{
|
|
7
|
-
const { deleteForward
|
|
10
|
+
const { deleteForward, deleteFragment } = editor;
|
|
8
11
|
editor.deleteForward = (unit)=>{
|
|
9
12
|
if (deleteForwardList(editor)) return;
|
|
10
13
|
deleteForward(unit);
|
|
@@ -15,6 +18,7 @@ export const withList = (editor)=>{
|
|
|
15
18
|
};
|
|
16
19
|
editor.insertBreak = insertListBreak(editor);
|
|
17
20
|
editor.insertFragment = insertListFragment(editor);
|
|
21
|
+
// TODO: replace with our own Normalizer rules
|
|
18
22
|
editor.normalizeNode = normalizeList(editor, {
|
|
19
23
|
validLiChildrenTypes
|
|
20
24
|
});
|
|
@@ -9,7 +9,7 @@ import { buildMarkEventHandler } from './helpers';
|
|
|
9
9
|
export const ToolbarBoldButton = createMarkToolbarButton({
|
|
10
10
|
title: 'Bold',
|
|
11
11
|
mark: MARKS.BOLD,
|
|
12
|
-
icon: React.createElement(FormatBoldIcon, null)
|
|
12
|
+
icon: /*#__PURE__*/ React.createElement(FormatBoldIcon, null)
|
|
13
13
|
});
|
|
14
14
|
const styles = {
|
|
15
15
|
bold: css({
|
|
@@ -17,7 +17,7 @@ const styles = {
|
|
|
17
17
|
})
|
|
18
18
|
};
|
|
19
19
|
export function Bold(props) {
|
|
20
|
-
return React.createElement("strong", {
|
|
20
|
+
return /*#__PURE__*/ React.createElement("strong", {
|
|
21
21
|
...props.attributes,
|
|
22
22
|
className: styles.bold
|
|
23
23
|
}, props.children);
|
|
@@ -8,7 +8,7 @@ import { buildMarkEventHandler } from './helpers';
|
|
|
8
8
|
export const ToolbarCodeButton = createMarkToolbarButton({
|
|
9
9
|
title: 'Code',
|
|
10
10
|
mark: MARKS.CODE,
|
|
11
|
-
icon: React.createElement(CodeIcon, null)
|
|
11
|
+
icon: /*#__PURE__*/ React.createElement(CodeIcon, null)
|
|
12
12
|
});
|
|
13
13
|
export const ToolbarDropdownCodeButton = createMarkToolbarButton({
|
|
14
14
|
title: 'Code',
|
|
@@ -21,7 +21,7 @@ const styles = {
|
|
|
21
21
|
})
|
|
22
22
|
};
|
|
23
23
|
export function Code(props) {
|
|
24
|
-
return React.createElement("code", {
|
|
24
|
+
return /*#__PURE__*/ React.createElement("code", {
|
|
25
25
|
...props.attributes,
|
|
26
26
|
className: styles.code
|
|
27
27
|
}, props.children);
|
|
@@ -30,6 +30,12 @@ export const createCodePlugin = ()=>createDefaultCodePlugin({
|
|
|
30
30
|
type: MARKS.CODE,
|
|
31
31
|
component: Code,
|
|
32
32
|
options: {
|
|
33
|
+
// We need to define multiple hotkeys here,
|
|
34
|
+
// - mod+/ -> QWERTY keyboard layout
|
|
35
|
+
// - mod+shift+7 -> QWERTZ keyboard layout
|
|
36
|
+
// The workaround like in packages/rich-text/src/plugins/CommandPalette/onKeyDown.ts is sadly not working here,
|
|
37
|
+
// as `shift+7` is not interpreted as `/` with the `mod` key by the OS.
|
|
38
|
+
// TODO: there are a lot more different keyboard layouts out there
|
|
33
39
|
hotkey: [
|
|
34
40
|
'mod+/',
|
|
35
41
|
'mod+shift+7'
|
|
@@ -9,7 +9,7 @@ import { buildMarkEventHandler } from './helpers';
|
|
|
9
9
|
export const ToolbarItalicButton = createMarkToolbarButton({
|
|
10
10
|
title: 'Italic',
|
|
11
11
|
mark: MARKS.ITALIC,
|
|
12
|
-
icon: React.createElement(FormatItalicIcon, null)
|
|
12
|
+
icon: /*#__PURE__*/ React.createElement(FormatItalicIcon, null)
|
|
13
13
|
});
|
|
14
14
|
const styles = {
|
|
15
15
|
italic: css({
|
|
@@ -17,7 +17,7 @@ const styles = {
|
|
|
17
17
|
})
|
|
18
18
|
};
|
|
19
19
|
export function Italic(props) {
|
|
20
|
-
return React.createElement("em", {
|
|
20
|
+
return /*#__PURE__*/ React.createElement("em", {
|
|
21
21
|
...props.attributes,
|
|
22
22
|
className: styles.italic
|
|
23
23
|
}, props.children);
|
|
@@ -14,7 +14,7 @@ const styles = {
|
|
|
14
14
|
export const ToolbarSubscriptButton = createMarkToolbarButton({
|
|
15
15
|
title: 'Subscript',
|
|
16
16
|
mark: MARKS.SUBSCRIPT,
|
|
17
|
-
icon: React.createElement(SubscriptIcon, {
|
|
17
|
+
icon: /*#__PURE__*/ React.createElement(SubscriptIcon, {
|
|
18
18
|
viewBox: "0 0 23 18"
|
|
19
19
|
})
|
|
20
20
|
});
|
|
@@ -23,7 +23,7 @@ export const ToolbarDropdownSubscriptButton = createMarkToolbarButton({
|
|
|
23
23
|
mark: MARKS.SUBSCRIPT
|
|
24
24
|
});
|
|
25
25
|
export function Subscript(props) {
|
|
26
|
-
return React.createElement("sub", {
|
|
26
|
+
return /*#__PURE__*/ React.createElement("sub", {
|
|
27
27
|
...props.attributes,
|
|
28
28
|
className: styles.subscript
|
|
29
29
|
}, props.children);
|
|
@@ -14,14 +14,14 @@ const styles = {
|
|
|
14
14
|
export const ToolbarSuperscriptButton = createMarkToolbarButton({
|
|
15
15
|
title: 'Superscript',
|
|
16
16
|
mark: MARKS.SUPERSCRIPT,
|
|
17
|
-
icon: React.createElement(SuperscriptIcon, null)
|
|
17
|
+
icon: /*#__PURE__*/ React.createElement(SuperscriptIcon, null)
|
|
18
18
|
});
|
|
19
19
|
export const ToolbarDropdownSuperscriptButton = createMarkToolbarButton({
|
|
20
20
|
title: 'Superscript',
|
|
21
21
|
mark: MARKS.SUPERSCRIPT
|
|
22
22
|
});
|
|
23
23
|
export function Superscript(props) {
|
|
24
|
-
return React.createElement("sup", {
|
|
24
|
+
return /*#__PURE__*/ React.createElement("sup", {
|
|
25
25
|
...props.attributes,
|
|
26
26
|
className: styles.superscript
|
|
27
27
|
}, props.children);
|
|
@@ -8,10 +8,10 @@ import { buildMarkEventHandler } from './helpers';
|
|
|
8
8
|
export const ToolbarUnderlineButton = createMarkToolbarButton({
|
|
9
9
|
title: 'Underline',
|
|
10
10
|
mark: MARKS.UNDERLINE,
|
|
11
|
-
icon: React.createElement(FormatUnderlinedIcon, null)
|
|
11
|
+
icon: /*#__PURE__*/ React.createElement(FormatUnderlinedIcon, null)
|
|
12
12
|
});
|
|
13
13
|
export function Underline(props) {
|
|
14
|
-
return React.createElement("u", props.attributes, props.children);
|
|
14
|
+
return /*#__PURE__*/ React.createElement("u", props.attributes, props.children);
|
|
15
15
|
}
|
|
16
16
|
export const createUnderlinePlugin = ()=>createDefaultUnderlinePlugin({
|
|
17
17
|
type: MARKS.UNDERLINE,
|
|
@@ -13,8 +13,8 @@ const styles = {
|
|
|
13
13
|
color: tokens.blue600
|
|
14
14
|
})
|
|
15
15
|
};
|
|
16
|
-
export const createMarkToolbarButton = ({ mark
|
|
17
|
-
const Mark = ({ isDisabled
|
|
16
|
+
export const createMarkToolbarButton = ({ mark, title, icon })=>{
|
|
17
|
+
const Mark = ({ isDisabled })=>{
|
|
18
18
|
const editor = useContentfulEditor();
|
|
19
19
|
const handleClick = React.useCallback(()=>{
|
|
20
20
|
if (!editor?.selection) return;
|
|
@@ -29,7 +29,7 @@ export const createMarkToolbarButton = ({ mark , title , icon })=>{
|
|
|
29
29
|
]);
|
|
30
30
|
if (!editor) return null;
|
|
31
31
|
if (!icon) {
|
|
32
|
-
return React.createElement(Menu.Item, {
|
|
32
|
+
return /*#__PURE__*/ React.createElement(Menu.Item, {
|
|
33
33
|
onClick: handleClick,
|
|
34
34
|
disabled: isDisabled,
|
|
35
35
|
className: cx({
|
|
@@ -38,7 +38,7 @@ export const createMarkToolbarButton = ({ mark , title , icon })=>{
|
|
|
38
38
|
testId: `${mark}-toolbar-button`
|
|
39
39
|
}, title);
|
|
40
40
|
}
|
|
41
|
-
return React.createElement(ToolbarButton, {
|
|
41
|
+
return /*#__PURE__*/ React.createElement(ToolbarButton, {
|
|
42
42
|
title: title,
|
|
43
43
|
testId: `${mark}-toolbar-button`,
|
|
44
44
|
onClick: handleClick,
|
|
@@ -13,7 +13,7 @@ export const toggleMarkAndDeactivateConflictingMarks = (editor, mark)=>{
|
|
|
13
13
|
clear
|
|
14
14
|
});
|
|
15
15
|
};
|
|
16
|
-
export const buildMarkEventHandler = (type)=>(editor, { options: { hotkey
|
|
16
|
+
export const buildMarkEventHandler = (type)=>(editor, { options: { hotkey } })=>(event)=>{
|
|
17
17
|
if (editor.selection && hotkey && isHotkey(hotkey, event)) {
|
|
18
18
|
event.preventDefault();
|
|
19
19
|
const isActive = isMarkActive(editor, type);
|
|
@@ -4,8 +4,11 @@ import { transformWrapIn } from '../../helpers/transformers';
|
|
|
4
4
|
import { getParentNode, isText } from '../../internal/queries';
|
|
5
5
|
const isInline = (node)=>INLINE_TYPES.includes(node.type);
|
|
6
6
|
const isTextContainer = (node)=>TEXT_CONTAINERS.includes(node.type);
|
|
7
|
+
// Base rules are rules that must be enforced at all times regardless
|
|
8
|
+
// of which plugins are enabled.
|
|
7
9
|
export const baseRules = [
|
|
8
10
|
{
|
|
11
|
+
// Wrap orphaned text nodes in a paragraph
|
|
9
12
|
match: isText,
|
|
10
13
|
validNode: (editor, [, path])=>{
|
|
11
14
|
const parent = getParentNode(editor, path)?.[0];
|
|
@@ -16,6 +19,7 @@ export const baseRules = [
|
|
|
16
19
|
}
|
|
17
20
|
},
|
|
18
21
|
{
|
|
22
|
+
// Wrap orphaned inline nodes in a paragraph,
|
|
19
23
|
match: {
|
|
20
24
|
type: INLINE_TYPES
|
|
21
25
|
},
|