@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
|
@@ -36,7 +36,7 @@ const styles = {
|
|
|
36
36
|
};
|
|
37
37
|
function createList(Tag, block) {
|
|
38
38
|
return function List(props) {
|
|
39
|
-
return
|
|
39
|
+
return React.createElement(Tag, {
|
|
40
40
|
...props.attributes,
|
|
41
41
|
className: cx(baseStyle, styles[block])
|
|
42
42
|
}, props.children);
|
|
@@ -21,17 +21,17 @@ export function ToolbarListButton(props) {
|
|
|
21
21
|
};
|
|
22
22
|
}
|
|
23
23
|
if (!editor) return null;
|
|
24
|
-
return
|
|
24
|
+
return React.createElement(React.Fragment, null, isNodeTypeEnabled(sdk.field, BLOCKS.UL_LIST) && React.createElement(ToolbarButton, {
|
|
25
25
|
title: "UL",
|
|
26
26
|
testId: "ul-toolbar-button",
|
|
27
27
|
onClick: handleClick(BLOCKS.UL_LIST),
|
|
28
28
|
isActive: isListTypeActive(editor, BLOCKS.UL_LIST),
|
|
29
29
|
isDisabled: props.isDisabled
|
|
30
|
-
},
|
|
30
|
+
}, React.createElement(ListBulletedIcon, null)), isNodeTypeEnabled(sdk.field, BLOCKS.OL_LIST) && React.createElement(ToolbarButton, {
|
|
31
31
|
title: "OL",
|
|
32
32
|
testId: "ol-toolbar-button",
|
|
33
33
|
onClick: handleClick(BLOCKS.OL_LIST),
|
|
34
34
|
isActive: isListTypeActive(editor, BLOCKS.OL_LIST),
|
|
35
35
|
isDisabled: props.isDisabled
|
|
36
|
-
},
|
|
36
|
+
}, React.createElement(ListNumberedIcon, null)));
|
|
37
37
|
}
|
|
@@ -28,8 +28,6 @@ export const createListPlugin = ()=>createPlateListPlugin({
|
|
|
28
28
|
handlers: {
|
|
29
29
|
onKeyDown: onKeyDownList
|
|
30
30
|
},
|
|
31
|
-
// The withList is added on ELEMENT_UL plugin in upstream code
|
|
32
|
-
// so we need to override it here
|
|
33
31
|
withOverrides: withList
|
|
34
32
|
},
|
|
35
33
|
[ELEMENT_OL]: {
|
|
@@ -39,14 +37,12 @@ export const createListPlugin = ()=>createPlateListPlugin({
|
|
|
39
37
|
onKeyDown: onKeyDownList
|
|
40
38
|
}
|
|
41
39
|
},
|
|
42
|
-
// ELEMENT_LIC is a child of li, Slate does ul > li > lic + ul
|
|
43
40
|
[ELEMENT_LIC]: {
|
|
44
41
|
type: BLOCKS.PARAGRAPH
|
|
45
42
|
},
|
|
46
43
|
[ELEMENT_LI]: {
|
|
47
44
|
type: BLOCKS.LIST_ITEM,
|
|
48
45
|
component: ListItem,
|
|
49
|
-
// @ts-expect-error
|
|
50
46
|
normalizer: [
|
|
51
47
|
{
|
|
52
48
|
validNode: hasListAsDirectParent,
|
|
@@ -1,9 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
* Credit: Copied & modified version from Plate's list plugin to support
|
|
3
|
-
* list items with multiple children.
|
|
4
|
-
*
|
|
5
|
-
* See: https://github.com/udecode/plate/blob/main/packages/nodes/list
|
|
6
|
-
*/ import { TEXT_CONTAINERS } from '@contentful/rich-text-types';
|
|
1
|
+
import { TEXT_CONTAINERS } from '@contentful/rich-text-types';
|
|
7
2
|
import { ELEMENT_DEFAULT, getPluginType, isBlockAboveEmpty, mockPlugin } from '@udecode/plate-common';
|
|
8
3
|
import { getListItemEntry, moveListItemUp, unwrapList, ELEMENT_LI } from '@udecode/plate-list';
|
|
9
4
|
import { onKeyDownResetNode, SIMULATE_BACKSPACE } from '@udecode/plate-reset-node';
|
|
@@ -12,11 +7,9 @@ const listBreak = (editor)=>{
|
|
|
12
7
|
if (!editor.selection) return false;
|
|
13
8
|
const res = getListItemEntry(editor, {});
|
|
14
9
|
let moved;
|
|
15
|
-
// If selection is in a li
|
|
16
10
|
if (res) {
|
|
17
|
-
const { list, listItem
|
|
11
|
+
const { list , listItem } = res;
|
|
18
12
|
const childNode = listItem[0].children[0];
|
|
19
|
-
// If selected li is empty, move it up.
|
|
20
13
|
if (isBlockAboveEmpty(editor) && listItem[0].children.length === 1 && TEXT_CONTAINERS.includes(childNode.type)) {
|
|
21
14
|
moved = moveListItemUp(editor, {
|
|
22
15
|
list,
|
|
@@ -42,16 +35,14 @@ const listBreak = (editor)=>{
|
|
|
42
35
|
if (didReset) {
|
|
43
36
|
return true;
|
|
44
37
|
}
|
|
45
|
-
|
|
46
|
-
* If selection is in li > p, insert li.
|
|
47
|
-
*/ if (!moved) {
|
|
38
|
+
if (!moved) {
|
|
48
39
|
const inserted = insertListItem(editor);
|
|
49
40
|
if (inserted) return true;
|
|
50
41
|
}
|
|
51
42
|
return false;
|
|
52
43
|
};
|
|
53
44
|
export const insertListBreak = (editor)=>{
|
|
54
|
-
const { insertBreak
|
|
45
|
+
const { insertBreak } = editor;
|
|
55
46
|
return ()=>{
|
|
56
47
|
if (listBreak(editor)) return;
|
|
57
48
|
insertBreak();
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
* Credit: Modified version of Plate's list plugin
|
|
3
|
-
* See: https://github.com/udecode/plate/blob/main/packages/nodes/list
|
|
4
|
-
*/ import { TEXT_CONTAINERS, BLOCKS } from '@contentful/rich-text-types';
|
|
1
|
+
import { TEXT_CONTAINERS, BLOCKS } from '@contentful/rich-text-types';
|
|
5
2
|
import { findNode } from '@udecode/plate-common';
|
|
6
3
|
import { isBlockNode, isAncestorPath, getCommonNode, getNodeTexts, getParentPath, getDescendantNodeByPath } from '../../internal/queries';
|
|
7
4
|
import { insertNodes } from '../../internal/transforms';
|
|
@@ -19,26 +16,19 @@ const isListRoot = (node)=>[
|
|
|
19
16
|
BLOCKS.UL_LIST,
|
|
20
17
|
BLOCKS.OL_LIST
|
|
21
18
|
].includes(node.type);
|
|
22
|
-
|
|
23
|
-
* Removes the "empty" leading lis. Empty in this context means lis only with other lis as children.
|
|
24
|
-
*
|
|
25
|
-
* @returns If argument is not a list root, returns it, otherwise returns ul[] or li[].
|
|
26
|
-
*/ const trimList = (listRoot)=>{
|
|
19
|
+
const trimList = (listRoot)=>{
|
|
27
20
|
if (!isListRoot(listRoot)) {
|
|
28
21
|
return [
|
|
29
22
|
listRoot
|
|
30
23
|
];
|
|
31
24
|
}
|
|
32
25
|
const textEntries = Array.from(getNodeTexts(listRoot));
|
|
33
|
-
const commonAncestorEntry = textEntries.reduce((commonAncestor, textEntry)=>isAncestorPath(commonAncestor[1], textEntry[1]) ? commonAncestor : getCommonNode(listRoot, textEntry[1], commonAncestor[1]),
|
|
34
|
-
getFirstAncestorOfType(listRoot, textEntries[0]));
|
|
26
|
+
const commonAncestorEntry = textEntries.reduce((commonAncestor, textEntry)=>isAncestorPath(commonAncestor[1], textEntry[1]) ? commonAncestor : getCommonNode(listRoot, textEntry[1], commonAncestor[1]), getFirstAncestorOfType(listRoot, textEntries[0]));
|
|
35
27
|
return isListRoot(commonAncestorEntry[0]) ? commonAncestorEntry[0].children : [
|
|
36
28
|
commonAncestorEntry[0]
|
|
37
29
|
];
|
|
38
30
|
};
|
|
39
|
-
|
|
40
|
-
* Removes leading li when pasting a single li with a single child.
|
|
41
|
-
*/ const trimLiWrapper = (nodes)=>{
|
|
31
|
+
const trimLiWrapper = (nodes)=>{
|
|
42
32
|
if (nodes.length !== 1) {
|
|
43
33
|
return nodes;
|
|
44
34
|
}
|
|
@@ -59,7 +49,7 @@ const unwrapTextContainerAtStart = (nodes)=>{
|
|
|
59
49
|
return nodes;
|
|
60
50
|
};
|
|
61
51
|
export const insertListFragment = (editor)=>{
|
|
62
|
-
const { insertFragment
|
|
52
|
+
const { insertFragment } = editor;
|
|
63
53
|
return (fragment)=>{
|
|
64
54
|
if (!editor.selection) {
|
|
65
55
|
return;
|
|
@@ -78,9 +68,6 @@ export const insertListFragment = (editor)=>{
|
|
|
78
68
|
}
|
|
79
69
|
const inlines = nodes.slice(0, firstBlockIndex);
|
|
80
70
|
const blocks = nodes.slice(firstBlockIndex);
|
|
81
|
-
// Two calls to insertNodes are required here. Otherwise, all blocks
|
|
82
|
-
// after a text or inline element occurrence will be unwrapped for
|
|
83
|
-
// some reason.
|
|
84
71
|
insertNodes(editor, inlines, {
|
|
85
72
|
at: editor.selection,
|
|
86
73
|
select: true
|
|
@@ -1,12 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
* Credit: Modified version of Plate's list plugin
|
|
3
|
-
* See: https://github.com/udecode/plate/blob/main/packages/nodes/list
|
|
4
|
-
*/ import isHotkey from 'is-hotkey';
|
|
5
|
-
import castArray from 'lodash/castArray';
|
|
1
|
+
import isHotkey from 'is-hotkey';
|
|
6
2
|
import { getAboveNode } from '../../internal/queries';
|
|
7
3
|
import { moveListItems } from './transforms/moveListItems';
|
|
8
4
|
import { toggleList } from './transforms/toggleList';
|
|
9
|
-
export const onKeyDownList = (editor, { type, options: { hotkey
|
|
5
|
+
export const onKeyDownList = (editor, { type , options: { hotkey } })=>(e)=>{
|
|
10
6
|
if (e.key === 'Tab' && editor.selection) {
|
|
11
7
|
const listSelected = getAboveNode(editor, {
|
|
12
8
|
at: editor.selection,
|
|
@@ -23,7 +19,9 @@ export const onKeyDownList = (editor, { type, options: { hotkey } })=>(e)=>{
|
|
|
23
19
|
}
|
|
24
20
|
}
|
|
25
21
|
if (!hotkey) return;
|
|
26
|
-
const hotkeys =
|
|
22
|
+
const hotkeys = Array.isArray(hotkey) ? hotkey : [
|
|
23
|
+
hotkey
|
|
24
|
+
];
|
|
27
25
|
for (const _hotkey of hotkeys){
|
|
28
26
|
if (isHotkey(_hotkey)(e)) {
|
|
29
27
|
toggleList(editor, {
|
|
@@ -2,9 +2,7 @@ import { BLOCKS, TEXT_CONTAINERS } from '@contentful/rich-text-types';
|
|
|
2
2
|
import { withoutNormalizing } from '../../../internal';
|
|
3
3
|
import { getAboveNode, getParentNode, isFirstChildPath, isSelectionAtBlockEnd, isSelectionAtBlockStart, getMarks, getNextPath } from '../../../internal/queries';
|
|
4
4
|
import { select, insertNodes, moveChildren, splitNodes, collapseSelection } from '../../../internal/transforms';
|
|
5
|
-
|
|
6
|
-
* Build a new list item node while preserving marks
|
|
7
|
-
*/ const emptyListItemNode = (editor, withChildren = false)=>{
|
|
5
|
+
const emptyListItemNode = (editor, withChildren = false)=>{
|
|
8
6
|
let children = [];
|
|
9
7
|
if (withChildren) {
|
|
10
8
|
const marks = getMarks(editor) || {};
|
|
@@ -27,13 +25,10 @@ import { select, insertNodes, moveChildren, splitNodes, collapseSelection } from
|
|
|
27
25
|
children
|
|
28
26
|
};
|
|
29
27
|
};
|
|
30
|
-
|
|
31
|
-
* Insert list item if selection is in li>p.
|
|
32
|
-
*/ export const insertListItem = (editor)=>{
|
|
28
|
+
export const insertListItem = (editor)=>{
|
|
33
29
|
if (!editor.selection) {
|
|
34
30
|
return false;
|
|
35
31
|
}
|
|
36
|
-
// Naming it paragraph for simplicity but can be a heading as well
|
|
37
32
|
const paragraph = getAboveNode(editor, {
|
|
38
33
|
match: {
|
|
39
34
|
type: TEXT_CONTAINERS
|
|
@@ -51,33 +46,23 @@ import { select, insertNodes, moveChildren, splitNodes, collapseSelection } from
|
|
|
51
46
|
if (listItemNode.type !== BLOCKS.LIST_ITEM) {
|
|
52
47
|
return false;
|
|
53
48
|
}
|
|
54
|
-
// We are in a li>p (or heading)
|
|
55
49
|
withoutNormalizing(editor, ()=>{
|
|
56
50
|
if (!editor.selection) {
|
|
57
51
|
return;
|
|
58
52
|
}
|
|
59
|
-
// Check the cursor position in the current paragraph
|
|
60
53
|
const isAtStart = isSelectionAtBlockStart(editor);
|
|
61
54
|
const isAtEnd = isSelectionAtBlockEnd(editor);
|
|
62
55
|
const isAtStartOfListItem = isAtStart && isFirstChildPath(paragraphPath);
|
|
63
56
|
const shouldSplit = !isAtStart && !isAtEnd;
|
|
64
|
-
// Split the current paragraph content if necessary
|
|
65
57
|
if (shouldSplit) {
|
|
66
58
|
splitNodes(editor);
|
|
67
59
|
}
|
|
68
|
-
// Insert the new li
|
|
69
60
|
const newListItemPath = isAtStartOfListItem ? listItemPath : getNextPath(listItemPath);
|
|
70
|
-
insertNodes(editor,
|
|
71
|
-
// paragraphs over there.
|
|
72
|
-
emptyListItemNode(editor, !shouldSplit), {
|
|
61
|
+
insertNodes(editor, emptyListItemNode(editor, !shouldSplit), {
|
|
73
62
|
at: newListItemPath
|
|
74
63
|
});
|
|
75
|
-
// Move children *after* selection to the new li
|
|
76
64
|
const fromPath = isAtStart ? paragraphPath : getNextPath(paragraphPath);
|
|
77
65
|
const fromStartIndex = fromPath[fromPath.length - 1] || 0;
|
|
78
|
-
// On split we don't add paragraph to the new li so we move
|
|
79
|
-
// content to the very beginning. Otherwise, account for the empty
|
|
80
|
-
// paragraph at the beginning by moving the content after
|
|
81
66
|
const toPath = newListItemPath.concat([
|
|
82
67
|
shouldSplit ? 0 : 1
|
|
83
68
|
]);
|
|
@@ -88,12 +73,10 @@ import { select, insertNodes, moveChildren, splitNodes, collapseSelection } from
|
|
|
88
73
|
fromStartIndex
|
|
89
74
|
});
|
|
90
75
|
}
|
|
91
|
-
// Move cursor to the start of the new li
|
|
92
76
|
select(editor, newListItemPath);
|
|
93
77
|
collapseSelection(editor, {
|
|
94
78
|
edge: 'start'
|
|
95
79
|
});
|
|
96
80
|
});
|
|
97
|
-
// Returning True skips processing other editor.insertBreak handlers
|
|
98
81
|
return true;
|
|
99
82
|
};
|
|
@@ -1,11 +1,8 @@
|
|
|
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';
|
|
1
|
+
import { getListTypes } from '@udecode/plate-list';
|
|
5
2
|
import { withoutNormalizing } from '../../../internal';
|
|
6
3
|
import { getNodeEntry, getNodeChildren, getNextPath, getPreviousPath, getLastChildPath, match } from '../../../internal/queries';
|
|
7
4
|
import { wrapNodes, moveNodes } from '../../../internal/transforms';
|
|
8
|
-
export const moveListItemDown = (editor, { list, listItem
|
|
5
|
+
export const moveListItemDown = (editor, { list , listItem })=>{
|
|
9
6
|
const [listNode] = list;
|
|
10
7
|
const [, listItemPath] = listItem;
|
|
11
8
|
let previousListItemPath;
|
|
@@ -14,7 +11,6 @@ export const moveListItemDown = (editor, { list, listItem })=>{
|
|
|
14
11
|
} catch (e) {
|
|
15
12
|
return;
|
|
16
13
|
}
|
|
17
|
-
// Previous sibling is the new parent
|
|
18
14
|
const previousSiblingItem = getNodeEntry(editor, previousListItemPath);
|
|
19
15
|
if (previousSiblingItem) {
|
|
20
16
|
const [, previousPath] = previousSiblingItem;
|
|
@@ -24,7 +20,6 @@ export const moveListItemDown = (editor, { list, listItem })=>{
|
|
|
24
20
|
const newPath = getNextPath(getLastChildPath(subList ?? previousSiblingItem));
|
|
25
21
|
withoutNormalizing(editor, ()=>{
|
|
26
22
|
if (!subList) {
|
|
27
|
-
// Create new sub-list
|
|
28
23
|
wrapNodes(editor, {
|
|
29
24
|
type: listNode.type,
|
|
30
25
|
children: [],
|
|
@@ -33,7 +28,6 @@ export const moveListItemDown = (editor, { list, listItem })=>{
|
|
|
33
28
|
at: listItemPath
|
|
34
29
|
});
|
|
35
30
|
}
|
|
36
|
-
// Move the current item to the sub-list
|
|
37
31
|
moveNodes(editor, {
|
|
38
32
|
at: listItemPath,
|
|
39
33
|
to: newPath
|
|
@@ -1,23 +1,18 @@
|
|
|
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';
|
|
1
|
+
import { isListNested, ELEMENT_LIC, getListItemEntry, moveListItemUp } from '@udecode/plate-list';
|
|
5
2
|
import { withoutNormalizing } from '../../../internal';
|
|
6
3
|
import { getNodeEntries, getPluginType, createPathRef, getParentPath, isAncestorPath } from '../../../internal/queries';
|
|
7
4
|
import { moveListItemDown } from './moveListItemDown';
|
|
8
|
-
export const moveListItems = (editor, { increase =
|
|
5
|
+
export const moveListItems = (editor, { increase =true , at =editor.selection ?? undefined } = {})=>{
|
|
9
6
|
const _nodes = getNodeEntries(editor, {
|
|
10
7
|
at,
|
|
11
8
|
match: {
|
|
12
9
|
type: getPluginType(editor, ELEMENT_LIC)
|
|
13
10
|
}
|
|
14
11
|
});
|
|
15
|
-
// Get the selected lic
|
|
16
12
|
const lics = Array.from(_nodes);
|
|
17
13
|
if (!lics.length) return;
|
|
18
14
|
const highestLicPaths = [];
|
|
19
15
|
const highestLicPathRefs = [];
|
|
20
|
-
// Filter out the nested lic, we just need to move the highest ones
|
|
21
16
|
lics.forEach((lic)=>{
|
|
22
17
|
const licPath = lic[1];
|
|
23
18
|
const liPath = getParentPath(licPath);
|
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
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)=>jsx("editor", null, children, jsx("hp", null, 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
|
|
11
10
|
moveListItems(editor, {
|
|
12
11
|
increase: !shift
|
|
13
12
|
});
|
|
@@ -20,37 +19,37 @@ describe('moving list items (up/down)', ()=>{
|
|
|
20
19
|
const tests = [
|
|
21
20
|
{
|
|
22
21
|
title: 'single paragraph',
|
|
23
|
-
input:
|
|
24
|
-
expected:
|
|
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))))))
|
|
25
24
|
},
|
|
26
25
|
{
|
|
27
26
|
title: 'multiple paragraphs',
|
|
28
|
-
input:
|
|
29
|
-
expected:
|
|
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))))))
|
|
30
29
|
},
|
|
31
30
|
{
|
|
32
31
|
title: 'multiple elements',
|
|
33
|
-
input:
|
|
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", {
|
|
34
33
|
type: "Asset",
|
|
35
34
|
id: "asset-id"
|
|
36
35
|
}))),
|
|
37
|
-
expected:
|
|
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", {
|
|
38
37
|
type: "Asset",
|
|
39
38
|
id: "asset-id"
|
|
40
39
|
})))))
|
|
41
40
|
},
|
|
42
41
|
{
|
|
43
42
|
title: 'with a sub-list',
|
|
44
|
-
input:
|
|
45
|
-
expected:
|
|
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))))))
|
|
46
45
|
},
|
|
47
46
|
{
|
|
48
47
|
title: 'with a sub-list as non-last child',
|
|
49
|
-
input:
|
|
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", {
|
|
50
49
|
type: "Entry",
|
|
51
50
|
id: "entry-id"
|
|
52
|
-
})),
|
|
53
|
-
expected:
|
|
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", {
|
|
54
53
|
type: "Entry",
|
|
55
54
|
id: "entry-id"
|
|
56
55
|
})))
|
|
@@ -1,7 +1,4 @@
|
|
|
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';
|
|
1
|
+
import { BLOCKS } from '@contentful/rich-text-types';
|
|
5
2
|
import { ELEMENT_LIC } from '@udecode/plate-list';
|
|
6
3
|
import { getListItemEntry } from '@udecode/plate-list';
|
|
7
4
|
import { withoutNormalizing } from '../../../internal';
|
|
@@ -13,15 +10,14 @@ const listTypes = [
|
|
|
13
10
|
BLOCKS.UL_LIST,
|
|
14
11
|
BLOCKS.OL_LIST
|
|
15
12
|
];
|
|
16
|
-
export const toggleList = (editor, { type
|
|
13
|
+
export const toggleList = (editor, { type })=>withoutNormalizing(editor, ()=>{
|
|
17
14
|
if (!editor.selection) {
|
|
18
15
|
return;
|
|
19
16
|
}
|
|
20
17
|
if (isRangeCollapsed(editor.selection) || !isRangeAcrossBlocks(editor)) {
|
|
21
|
-
// selection is collapsed
|
|
22
18
|
const res = getListItemEntry(editor);
|
|
23
19
|
if (res) {
|
|
24
|
-
const { list
|
|
20
|
+
const { list } = res;
|
|
25
21
|
if (list[0].type !== type) {
|
|
26
22
|
setNodes(editor, {
|
|
27
23
|
type
|
|
@@ -59,7 +55,6 @@ export const toggleList = (editor, { type })=>withoutNormalizing(editor, ()=>{
|
|
|
59
55
|
}
|
|
60
56
|
}
|
|
61
57
|
} else {
|
|
62
|
-
// selection is a range
|
|
63
58
|
const [startPoint, endPoint] = getRangeEdges(editor.selection);
|
|
64
59
|
const commonEntry = getCommonNode(editor, startPoint.path, endPoint.path);
|
|
65
60
|
if (listTypes.includes(commonEntry[0].type) || commonEntry[0].type === BLOCKS.LIST_ITEM) {
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
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 =
|
|
7
|
-
const expected =
|
|
8
|
-
const { editor
|
|
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 } = 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 =
|
|
21
|
-
const expected =
|
|
22
|
-
const { editor
|
|
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 } = 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 =
|
|
35
|
-
const expected =
|
|
36
|
-
const { editor
|
|
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 } = 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 =
|
|
51
|
-
const expected =
|
|
52
|
-
const { editor
|
|
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 } = 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 =
|
|
65
|
-
const expected =
|
|
66
|
-
const { editor
|
|
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 } = 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 =
|
|
79
|
-
const expected =
|
|
80
|
-
const { editor
|
|
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 } = 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 =
|
|
95
|
-
const expected =
|
|
96
|
-
const { editor
|
|
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 } = 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 =
|
|
109
|
-
const expected =
|
|
110
|
-
const { editor
|
|
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 } = 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 =
|
|
123
|
-
const expected =
|
|
124
|
-
const { editor
|
|
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 } = createTestEditor({
|
|
125
125
|
input
|
|
126
126
|
});
|
|
127
127
|
toggleList(editor, {
|
|
@@ -1,7 +1,4 @@
|
|
|
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';
|
|
1
|
+
import { BLOCKS } from '@contentful/rich-text-types';
|
|
5
2
|
import { withoutNormalizing } from '../../../internal';
|
|
6
3
|
import { getNodeEntries, isElement } from '../../../internal/queries';
|
|
7
4
|
import { unwrapNodes, liftNodes } from '../../../internal/transforms';
|
|
@@ -11,17 +8,15 @@ function hasUnliftedListItems(editor, at) {
|
|
|
11
8
|
match: (node, path)=>isElement(node) && node.type === BLOCKS.LIST_ITEM && path.length >= 2
|
|
12
9
|
}).next().done;
|
|
13
10
|
}
|
|
14
|
-
export const unwrapList = (editor, { at
|
|
11
|
+
export const unwrapList = (editor, { at } = {})=>{
|
|
15
12
|
withoutNormalizing(editor, ()=>{
|
|
16
13
|
do {
|
|
17
|
-
// lift list items to the root level
|
|
18
14
|
liftNodes(editor, {
|
|
19
15
|
at,
|
|
20
16
|
match: (node)=>isElement(node) && node.type === BLOCKS.LIST_ITEM,
|
|
21
17
|
mode: 'lowest'
|
|
22
18
|
});
|
|
23
19
|
}while (!hasUnliftedListItems(editor, at))
|
|
24
|
-
// finally unwrap all lifted items
|
|
25
20
|
unwrapNodes(editor, {
|
|
26
21
|
at,
|
|
27
22
|
match: {
|