@blocknote/core 0.28.0 → 0.29.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/blocknote.cjs +9 -9
- package/dist/blocknote.cjs.map +1 -1
- package/dist/blocknote.js +3221 -3351
- package/dist/blocknote.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/webpack-stats.json +1 -1
- package/package.json +2 -2
- package/src/api/__snapshots__/blocks-deleted-nested-deep.json +26 -0
- package/src/api/__snapshots__/blocks-deleted-nested.json +68 -0
- package/src/api/__snapshots__/blocks-deleted.json +26 -0
- package/src/api/__snapshots__/blocks-inserted-nested.json +62 -0
- package/src/api/__snapshots__/blocks-inserted.json +20 -0
- package/src/api/__snapshots__/blocks-updated-content-inserted.json +42 -0
- package/src/api/__snapshots__/blocks-updated-multiple-insert.json +50 -0
- package/src/api/__snapshots__/blocks-updated-multiple.json +82 -0
- package/src/api/__snapshots__/blocks-updated-nested-deep.json +42 -0
- package/src/api/__snapshots__/blocks-updated-nested-multiple.json +118 -0
- package/src/api/__snapshots__/blocks-updated-nested.json +78 -0
- package/src/api/__snapshots__/blocks-updated-single.json +42 -0
- package/src/api/__snapshots__/blocks-updated.json +42 -0
- package/src/api/blockManipulation/__snapshots__/transactions.test.ts.snap +34 -0
- package/src/api/blockManipulation/commands/insertBlocks/__snapshots__/insertBlocks.test.ts.snap +312 -0
- package/src/api/blockManipulation/commands/insertBlocks/insertBlocks.test.ts +127 -94
- package/src/api/blockManipulation/commands/insertBlocks/insertBlocks.ts +19 -37
- package/src/api/blockManipulation/commands/mergeBlocks/mergeBlocks.test.ts +8 -6
- package/src/api/blockManipulation/commands/moveBlocks/moveBlocks.test.ts +25 -31
- package/src/api/blockManipulation/commands/moveBlocks/moveBlocks.ts +93 -91
- package/src/api/blockManipulation/commands/nestBlock/nestBlock.ts +16 -20
- package/src/api/blockManipulation/commands/replaceBlocks/replaceBlocks.test.ts +14 -1
- package/src/api/blockManipulation/commands/replaceBlocks/replaceBlocks.ts +18 -56
- package/src/api/blockManipulation/commands/splitBlock/splitBlock.test.ts +52 -46
- package/src/api/blockManipulation/commands/updateBlock/__snapshots__/updateBlock.test.ts.snap +1051 -0
- package/src/api/blockManipulation/commands/updateBlock/updateBlock.test.ts +247 -154
- package/src/api/blockManipulation/commands/updateBlock/updateBlock.ts +109 -142
- package/src/api/blockManipulation/getBlock/getBlock.ts +23 -48
- package/src/api/blockManipulation/insertContentAt.ts +4 -17
- package/src/api/blockManipulation/selections/selection.test.ts +32 -16
- package/src/api/blockManipulation/selections/selection.ts +25 -51
- package/src/api/blockManipulation/selections/textCursorPosition/textCursorPosition.test.ts +35 -14
- package/src/api/blockManipulation/selections/textCursorPosition/textCursorPosition.ts +34 -65
- package/src/api/clipboard/fromClipboard/handleFileInsertion.ts +8 -10
- package/src/api/clipboard/toClipboard/copyExtension.ts +7 -7
- package/src/api/exporters/html/util/serializeBlocksExternalHTML.ts +7 -16
- package/src/api/exporters/html/util/serializeBlocksInternalHTML.ts +3 -17
- package/src/api/getBlockInfoFromPos.ts +13 -1
- package/src/api/nodeConversions/blockToNode.ts +21 -10
- package/src/api/nodeConversions/fragmentToBlocks.ts +5 -18
- package/src/api/nodeConversions/nodeToBlock.ts +11 -8
- package/src/api/nodeUtil.test.ts +228 -0
- package/src/api/nodeUtil.ts +235 -2
- package/src/api/parsers/html/parseHTML.ts +2 -10
- package/src/api/parsers/markdown/parseMarkdown.ts +2 -8
- package/src/api/pmUtil.ts +54 -0
- package/src/api/positionMapping.ts +4 -2
- package/src/blocks/FileBlockContent/helpers/render/createAddFileButton.ts +2 -2
- package/src/blocks/HeadingBlockContent/HeadingBlockContent.ts +9 -13
- package/src/blocks/ListItemBlockContent/BulletListItemBlockContent/BulletListItemBlockContent.ts +5 -9
- package/src/blocks/ListItemBlockContent/CheckListItemBlockContent/CheckListItemBlockContent.ts +19 -31
- package/src/blocks/ListItemBlockContent/ListItemKeyboardShortcuts.ts +10 -8
- package/src/blocks/ListItemBlockContent/NumberedListItemBlockContent/NumberedListItemBlockContent.ts +9 -13
- package/src/blocks/ParagraphBlockContent/ParagraphBlockContent.ts +1 -1
- package/src/blocks/QuoteBlockContent/QuoteBlockContent.ts +5 -9
- package/src/blocks/defaultBlockHelpers.ts +1 -1
- package/src/editor/BlockNoteEditor.test.ts +1 -1
- package/src/editor/BlockNoteEditor.ts +259 -131
- package/src/editor/BlockNoteTipTapEditor.ts +91 -8
- package/src/extensions/Comments/CommentsPlugin.ts +32 -34
- package/src/extensions/KeyboardShortcuts/KeyboardShortcutsExtension.ts +4 -8
- package/src/extensions/LinkToolbar/LinkToolbarPlugin.ts +12 -13
- package/src/extensions/ShowSelection/ShowSelectionPlugin.ts +1 -3
- package/src/extensions/SideMenu/MultipleNodeSelection.ts +3 -1
- package/src/extensions/SideMenu/dragging.ts +1 -1
- package/src/extensions/SuggestionMenu/SuggestionPlugin.ts +22 -19
- package/src/extensions/SuggestionMenu/getDefaultSlashMenuItems.ts +8 -8
- package/src/extensions/TableHandles/TableHandlesPlugin.ts +150 -136
- package/src/index.ts +4 -3
- package/src/schema/inlineContent/createSpec.ts +1 -5
- package/types/src/api/blockManipulation/commands/insertBlocks/insertBlocks.d.ts +2 -2
- package/types/src/api/blockManipulation/commands/replaceBlocks/replaceBlocks.d.ts +4 -8
- package/types/src/api/blockManipulation/commands/updateBlock/updateBlock.d.ts +9 -10
- package/types/src/api/blockManipulation/getBlock/getBlock.d.ts +7 -7
- package/types/src/api/blockManipulation/insertContentAt.d.ts +5 -3
- package/types/src/api/blockManipulation/selections/selection.d.ts +3 -3
- package/types/src/api/blockManipulation/selections/textCursorPosition/textCursorPosition.d.ts +5 -5
- package/types/src/api/getBlockInfoFromPos.d.ts +8 -1
- package/types/src/api/nodeConversions/blockToNode.d.ts +3 -3
- package/types/src/api/nodeConversions/fragmentToBlocks.d.ts +1 -2
- package/types/src/api/nodeConversions/nodeToBlock.d.ts +2 -2
- package/types/src/api/nodeUtil.d.ts +67 -1
- package/types/src/api/parsers/html/parseHTML.d.ts +1 -1
- package/types/src/api/parsers/markdown/parseMarkdown.d.ts +1 -1
- package/types/src/api/pmUtil.d.ts +12 -0
- package/types/src/editor/BlockNoteEditor.d.ts +72 -10
- package/types/src/editor/BlockNoteTipTapEditor.d.ts +15 -2
- package/types/src/extensions/TableHandles/TableHandlesPlugin.d.ts +1 -1
- package/types/src/index.d.ts +1 -2
- package/src/api/blockManipulation/commands/removeBlocks/__snapshots__/removeBlocks.test.ts.snap +0 -1859
- package/src/api/blockManipulation/commands/removeBlocks/removeBlocks.test.ts +0 -40
- package/src/api/blockManipulation/commands/removeBlocks/removeBlocks.ts +0 -20
- package/src/api/clipboard/__snapshots__/external/pasteEndOfParagraph.html +0 -138
- package/src/api/clipboard/__snapshots__/external/pasteEndOfParagraphText.html +0 -138
- package/src/api/clipboard/__snapshots__/external/pasteImage.html +0 -153
- package/src/api/clipboard/__snapshots__/external/pasteParagraphInCustomBlock.html +0 -138
- package/src/api/clipboard/__snapshots__/external/pasteTable.html +0 -233
- package/src/api/clipboard/__snapshots__/external/pasteTableInExistingTable.html +0 -216
- package/src/api/clipboard/__snapshots__/internal/basicBlocks.html +0 -1
- package/src/api/clipboard/__snapshots__/internal/basicBlocksWithProps.html +0 -1
- package/src/api/clipboard/__snapshots__/internal/childToParent.html +0 -1
- package/src/api/clipboard/__snapshots__/internal/childrenToNextParent.html +0 -1
- package/src/api/clipboard/__snapshots__/internal/childrenToNextParentsChildren.html +0 -1
- package/src/api/clipboard/__snapshots__/internal/image.html +0 -1
- package/src/api/clipboard/__snapshots__/internal/multipleChildren.html +0 -1
- package/src/api/clipboard/__snapshots__/internal/multipleStyledText.html +0 -1
- package/src/api/clipboard/__snapshots__/internal/nestedImage.html +0 -1
- package/src/api/clipboard/__snapshots__/internal/paragraphInCustomBlock.html +0 -1
- package/src/api/clipboard/__snapshots__/internal/partialChildToParent.html +0 -1
- package/src/api/clipboard/__snapshots__/internal/styledText.html +0 -1
- package/src/api/clipboard/__snapshots__/internal/tableAllCells.html +0 -1
- package/src/api/clipboard/__snapshots__/internal/tableCell.html +0 -1
- package/src/api/clipboard/__snapshots__/internal/tableCellText.html +0 -1
- package/src/api/clipboard/__snapshots__/internal/tableRow.html +0 -1
- package/src/api/clipboard/__snapshots__/internal/unstyledText.html +0 -1
- package/src/api/clipboard/clipboardExternal.test.ts +0 -161
- package/src/api/clipboard/clipboardInternal.test.ts +0 -435
- package/src/api/clipboard/testUtil.ts +0 -27
- package/src/api/exporters/html/__snapshots__/codeBlock/contains-newlines/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/codeBlock/contains-newlines/internal.html +0 -3
- package/src/api/exporters/html/__snapshots__/codeBlock/defaultLanguage/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/codeBlock/defaultLanguage/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/codeBlock/empty/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/codeBlock/empty/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/codeBlock/python/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/codeBlock/python/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/complex/misc/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/complex/misc/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/customBlock/basic/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/customBlock/basic/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/customParagraph/basic/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/customParagraph/basic/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/customParagraph/lineBreaks/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/customParagraph/lineBreaks/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/customParagraph/nested/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/customParagraph/nested/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/customParagraph/styled/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/customParagraph/styled/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/file/basic/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/file/basic/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/file/button/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/file/button/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/file/nested/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/file/nested/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/file/noCaption/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/file/noCaption/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/file/noName/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/file/noName/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/fontSize/basic/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/fontSize/basic/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/hardbreak/basic/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/hardbreak/basic/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/hardbreak/between-links/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/hardbreak/between-links/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/hardbreak/end/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/hardbreak/end/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/hardbreak/link/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/hardbreak/link/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/hardbreak/multiple/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/hardbreak/multiple/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/hardbreak/only/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/hardbreak/only/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/hardbreak/start/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/hardbreak/start/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/hardbreak/styles/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/hardbreak/styles/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/image/basic/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/image/basic/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/image/button/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/image/button/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/image/nested/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/image/nested/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/image/noCaption/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/image/noCaption/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/image/noName/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/image/noName/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/image/noPreview/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/image/noPreview/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/link/adjacent/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/link/adjacent/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/link/basic/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/link/basic/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/link/styled/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/link/styled/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/lists/basic/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/lists/basic/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/lists/nested/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/lists/nested/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/mention/basic/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/mention/basic/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/pageBreak/basic/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/pageBreak/basic/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/paragraph/basic/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/paragraph/basic/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/paragraph/empty/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/paragraph/empty/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/paragraph/lineBreaks/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/paragraph/lineBreaks/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/paragraph/nested/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/paragraph/nested/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/paragraph/styled/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/paragraph/styled/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/paste/parse-basic-block-types.json +0 -140
- package/src/api/exporters/html/__snapshots__/paste/parse-deep-nested-content.json +0 -240
- package/src/api/exporters/html/__snapshots__/paste/parse-div-with-inline-content.json +0 -91
- package/src/api/exporters/html/__snapshots__/paste/parse-divs.json +0 -19
- package/src/api/exporters/html/__snapshots__/paste/parse-fake-image-caption.json +0 -31
- package/src/api/exporters/html/__snapshots__/paste/parse-mixed-nested-lists.json +0 -70
- package/src/api/exporters/html/__snapshots__/paste/parse-nested-lists-with-paragraphs.json +0 -70
- package/src/api/exporters/html/__snapshots__/paste/parse-nested-lists.json +0 -70
- package/src/api/exporters/html/__snapshots__/simpleCustomParagraph/basic/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/simpleCustomParagraph/basic/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/simpleCustomParagraph/nested/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/simpleCustomParagraph/nested/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/simpleCustomParagraph/styled/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/simpleCustomParagraph/styled/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/simpleFile/basic/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/simpleFile/basic/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/simpleFile/button/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/simpleFile/button/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/simpleFile/nested/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/simpleFile/nested/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/simpleImage/basic/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/simpleImage/basic/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/simpleImage/button/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/simpleImage/button/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/simpleImage/nested/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/simpleImage/nested/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/simpleImage/noCaption/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/simpleImage/noCaption/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/simpleImage/noName/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/simpleImage/noName/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/simpleImage/noPreview/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/simpleImage/noPreview/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/small/basic/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/small/basic/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/table/allColWidths/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/table/allColWidths/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/table/basic/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/table/basic/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/table/headerCols/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/table/headerCols/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/table/headerRows/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/table/headerRows/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/table/headersRows/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/table/headersRows/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/table/mixedCellColors/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/table/mixedCellColors/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/table/mixedColWidths/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/table/mixedColWidths/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/table/mixedRowspansAndColspans/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/table/mixedRowspansAndColspans/internal.html +0 -1
- package/src/api/exporters/html/__snapshots__/tag/basic/external.html +0 -1
- package/src/api/exporters/html/__snapshots__/tag/basic/internal.html +0 -1
- package/src/api/exporters/html/htmlConversion.test.ts +0 -110
- package/src/api/exporters/markdown/__snapshots__/codeBlock/contains-newlines/markdown.md +0 -4
- package/src/api/exporters/markdown/__snapshots__/codeBlock/defaultLanguage/markdown.md +0 -3
- package/src/api/exporters/markdown/__snapshots__/codeBlock/empty/markdown.md +0 -2
- package/src/api/exporters/markdown/__snapshots__/codeBlock/python/markdown.md +0 -3
- package/src/api/exporters/markdown/__snapshots__/complex/misc/markdown.md +0 -5
- package/src/api/exporters/markdown/__snapshots__/customBlock/basic/markdown.md +0 -5
- package/src/api/exporters/markdown/__snapshots__/customParagraph/basic/markdown.md +0 -1
- package/src/api/exporters/markdown/__snapshots__/customParagraph/lineBreaks/markdown.md +0 -1
- package/src/api/exporters/markdown/__snapshots__/customParagraph/nested/markdown.md +0 -5
- package/src/api/exporters/markdown/__snapshots__/customParagraph/styled/markdown.md +0 -1
- package/src/api/exporters/markdown/__snapshots__/file/basic/markdown.md +0 -3
- package/src/api/exporters/markdown/__snapshots__/file/button/markdown.md +0 -1
- package/src/api/exporters/markdown/__snapshots__/file/nested/markdown.md +0 -7
- package/src/api/exporters/markdown/__snapshots__/file/noCaption/markdown.md +0 -1
- package/src/api/exporters/markdown/__snapshots__/file/noName/markdown.md +0 -3
- package/src/api/exporters/markdown/__snapshots__/fontSize/basic/markdown.md +0 -1
- package/src/api/exporters/markdown/__snapshots__/hardbreak/basic/markdown.md +0 -2
- package/src/api/exporters/markdown/__snapshots__/hardbreak/between-links/markdown.md +0 -2
- package/src/api/exporters/markdown/__snapshots__/hardbreak/end/markdown.md +0 -1
- package/src/api/exporters/markdown/__snapshots__/hardbreak/link/markdown.md +0 -2
- package/src/api/exporters/markdown/__snapshots__/hardbreak/multiple/markdown.md +0 -3
- package/src/api/exporters/markdown/__snapshots__/hardbreak/only/markdown.md +0 -0
- package/src/api/exporters/markdown/__snapshots__/hardbreak/start/markdown.md +0 -1
- package/src/api/exporters/markdown/__snapshots__/hardbreak/styles/markdown.md +0 -2
- package/src/api/exporters/markdown/__snapshots__/image/basic/markdown.md +0 -3
- package/src/api/exporters/markdown/__snapshots__/image/button/markdown.md +0 -1
- package/src/api/exporters/markdown/__snapshots__/image/nested/markdown.md +0 -7
- package/src/api/exporters/markdown/__snapshots__/image/noCaption/markdown.md +0 -1
- package/src/api/exporters/markdown/__snapshots__/image/noName/markdown.md +0 -3
- package/src/api/exporters/markdown/__snapshots__/image/noPreview/markdown.md +0 -3
- package/src/api/exporters/markdown/__snapshots__/link/adjacent/markdown.md +0 -1
- package/src/api/exporters/markdown/__snapshots__/link/basic/markdown.md +0 -1
- package/src/api/exporters/markdown/__snapshots__/link/styled/markdown.md +0 -1
- package/src/api/exporters/markdown/__snapshots__/lists/basic/markdown.md +0 -10
- package/src/api/exporters/markdown/__snapshots__/lists/nested/markdown.md +0 -10
- package/src/api/exporters/markdown/__snapshots__/mention/basic/markdown.md +0 -1
- package/src/api/exporters/markdown/__snapshots__/pageBreak/basic/markdown.md +0 -0
- package/src/api/exporters/markdown/__snapshots__/paragraph/basic/markdown.md +0 -1
- package/src/api/exporters/markdown/__snapshots__/paragraph/empty/markdown.md +0 -0
- package/src/api/exporters/markdown/__snapshots__/paragraph/lineBreaks/markdown.md +0 -2
- package/src/api/exporters/markdown/__snapshots__/paragraph/nested/markdown.md +0 -5
- package/src/api/exporters/markdown/__snapshots__/paragraph/styled/markdown.md +0 -1
- package/src/api/exporters/markdown/__snapshots__/simpleCustomParagraph/basic/markdown.md +0 -1
- package/src/api/exporters/markdown/__snapshots__/simpleCustomParagraph/nested/markdown.md +0 -5
- package/src/api/exporters/markdown/__snapshots__/simpleCustomParagraph/styled/markdown.md +0 -1
- package/src/api/exporters/markdown/__snapshots__/simpleFile/basic/markdown.md +0 -3
- package/src/api/exporters/markdown/__snapshots__/simpleFile/button/markdown.md +0 -1
- package/src/api/exporters/markdown/__snapshots__/simpleFile/nested/markdown.md +0 -7
- package/src/api/exporters/markdown/__snapshots__/simpleImage/basic/markdown.md +0 -3
- package/src/api/exporters/markdown/__snapshots__/simpleImage/button/markdown.md +0 -1
- package/src/api/exporters/markdown/__snapshots__/simpleImage/nested/markdown.md +0 -7
- package/src/api/exporters/markdown/__snapshots__/simpleImage/noCaption/markdown.md +0 -1
- package/src/api/exporters/markdown/__snapshots__/simpleImage/noName/markdown.md +0 -3
- package/src/api/exporters/markdown/__snapshots__/simpleImage/noPreview/markdown.md +0 -3
- package/src/api/exporters/markdown/__snapshots__/small/basic/markdown.md +0 -1
- package/src/api/exporters/markdown/__snapshots__/table/allColWidths/markdown.md +0 -5
- package/src/api/exporters/markdown/__snapshots__/table/basic/markdown.md +0 -5
- package/src/api/exporters/markdown/__snapshots__/table/headerCols/markdown.md +0 -4
- package/src/api/exporters/markdown/__snapshots__/table/headerRows/markdown.md +0 -4
- package/src/api/exporters/markdown/__snapshots__/table/mixedCellColors/markdown.md +0 -5
- package/src/api/exporters/markdown/__snapshots__/table/mixedColWidths/markdown.md +0 -5
- package/src/api/exporters/markdown/__snapshots__/table/mixedRowspansAndColspans/markdown.md +0 -5
- package/src/api/exporters/markdown/__snapshots__/tag/basic/markdown.md +0 -1
- package/src/api/exporters/markdown/markdownExporter.test.ts +0 -86
- package/src/api/nodeConversions/__snapshots__/nodeConversions.test.ts.snap +0 -3473
- package/src/api/nodeConversions/nodeConversions.test.ts +0 -83
- package/src/api/parsers/html/__snapshots__/list-test.json +0 -177
- package/src/api/parsers/html/__snapshots__/parse-2-tables.json +0 -129
- package/src/api/parsers/html/__snapshots__/parse-basic-block-types.json +0 -142
- package/src/api/parsers/html/__snapshots__/parse-codeblocks.json +0 -62
- package/src/api/parsers/html/__snapshots__/parse-div-with-inline-content.json +0 -91
- package/src/api/parsers/html/__snapshots__/parse-divs.json +0 -121
- package/src/api/parsers/html/__snapshots__/parse-fake-image-caption.json +0 -33
- package/src/api/parsers/html/__snapshots__/parse-image-in-paragraph.json +0 -16
- package/src/api/parsers/html/__snapshots__/parse-mixed-nested-lists.json +0 -265
- package/src/api/parsers/html/__snapshots__/parse-nested-lists-with-paragraphs.json +0 -265
- package/src/api/parsers/html/__snapshots__/parse-nested-lists.json +0 -265
- package/src/api/parsers/html/__snapshots__/parse-notion-html.json +0 -565
- package/src/api/parsers/html/__snapshots__/parse-two-divs.json +0 -36
- package/src/api/parsers/html/parseHTML.test.ts +0 -563
- package/src/api/parsers/markdown/__snapshots__/complex.json +0 -353
- package/src/api/parsers/markdown/__snapshots__/issue-226-1.json +0 -71
- package/src/api/parsers/markdown/__snapshots__/issue-226-2.json +0 -144
- package/src/api/parsers/markdown/__snapshots__/nested.json +0 -72
- package/src/api/parsers/markdown/__snapshots__/non-nested.json +0 -71
- package/src/api/parsers/markdown/__snapshots__/pasted/complex.json +0 -319
- package/src/api/parsers/markdown/__snapshots__/pasted/issue-226-1.json +0 -81
- package/src/api/parsers/markdown/__snapshots__/pasted/issue-226-2.json +0 -165
- package/src/api/parsers/markdown/__snapshots__/pasted/nested.json +0 -81
- package/src/api/parsers/markdown/__snapshots__/pasted/non-nested.json +0 -81
- package/src/api/parsers/markdown/__snapshots__/pasted/styled.json +0 -61
- package/src/api/parsers/markdown/__snapshots__/pasted/whitespace bold.json +0 -42
- package/src/api/parsers/markdown/__snapshots__/styled.json +0 -58
- package/src/api/parsers/markdown/__snapshots__/whitespace bold.json +0 -19
- package/src/api/parsers/markdown/parseMarkdown.test.ts +0 -135
- package/src/api/testUtil/cases/customBlocks.ts +0 -342
- package/src/api/testUtil/cases/customInlineContent.ts +0 -113
- package/src/api/testUtil/cases/customStyles.ts +0 -102
- package/src/api/testUtil/cases/defaultSchema.ts +0 -1493
- package/src/api/testUtil/index.ts +0 -19
- package/src/api/testUtil/partialBlockTestUtil.ts +0 -198
- package/src/api/testUtil/paste.ts +0 -46
- package/types/src/api/blockManipulation/commands/removeBlocks/removeBlocks.d.ts +0 -4
- package/types/src/api/clipboard/clipboardExternal.test.d.ts +0 -1
- package/types/src/api/clipboard/clipboardInternal.test.d.ts +0 -1
- package/types/src/api/clipboard/testUtil.d.ts +0 -541
- package/types/src/api/exporters/html/htmlConversion.test.d.ts +0 -1
- package/types/src/api/exporters/markdown/markdownExporter.test.d.ts +0 -1
- package/types/src/api/nodeConversions/nodeConversions.test.d.ts +0 -1
- package/types/src/api/parsers/html/parseHTML.test.d.ts +0 -1
- package/types/src/api/parsers/markdown/parseMarkdown.test.d.ts +0 -1
- package/types/src/api/testUtil/cases/customBlocks.d.ts +0 -670
- package/types/src/api/testUtil/cases/customInlineContent.d.ts +0 -558
- package/types/src/api/testUtil/cases/customStyles.d.ts +0 -552
- package/types/src/api/testUtil/cases/defaultSchema.d.ts +0 -4
- package/types/src/api/testUtil/index.d.ts +0 -14
- package/types/src/api/testUtil/partialBlockTestUtil.d.ts +0 -9
- package/types/src/api/testUtil/paste.d.ts +0 -2
- /package/types/src/api/{blockManipulation/commands/removeBlocks/removeBlocks.test.d.ts → nodeUtil.test.d.ts} +0 -0
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { EditorOptions, createDocument } from "@tiptap/core";
|
|
2
|
-
// import "./blocknote.css";
|
|
1
|
+
import { Editor, EditorOptions, createDocument } from "@tiptap/core";
|
|
3
2
|
import { Editor as TiptapEditor } from "@tiptap/core";
|
|
4
3
|
|
|
5
4
|
import { Node } from "@tiptap/pm/model";
|
|
@@ -138,13 +137,83 @@ export class BlockNoteTipTapEditor extends TiptapEditor {
|
|
|
138
137
|
return this._state;
|
|
139
138
|
}
|
|
140
139
|
|
|
141
|
-
dispatch(
|
|
142
|
-
if (this.view) {
|
|
143
|
-
this.view.dispatch(tr);
|
|
144
|
-
} else {
|
|
140
|
+
dispatch(transaction: Transaction) {
|
|
141
|
+
if (!this.view) {
|
|
145
142
|
// before view has been initialized
|
|
146
|
-
this._state = this.state.apply(
|
|
143
|
+
this._state = this.state.apply(transaction);
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
// This is a verbatim copy of the default dispatch method, but with the following changes:
|
|
147
|
+
// - We provide the appendedTransactions to a new `v3-update` event
|
|
148
|
+
// In the future, we can remove this dispatch method entirely and rely on the new `update` event signature which does what we want by providing the appendedTransactions
|
|
149
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
150
|
+
// if the editor / the view of the editor was destroyed
|
|
151
|
+
// the transaction should not be dispatched as there is no view anymore.
|
|
152
|
+
if (this.view.isDestroyed) {
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
if (this.isCapturingTransaction) {
|
|
157
|
+
// Do the default capture behavior
|
|
158
|
+
(this as any).dispatchTransaction(transaction);
|
|
159
|
+
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
const { state, transactions: appendedTransactions } =
|
|
164
|
+
this.state.applyTransaction(transaction);
|
|
165
|
+
const selectionHasChanged = !this.state.selection.eq(state.selection);
|
|
166
|
+
|
|
167
|
+
this.emit("beforeTransaction", {
|
|
168
|
+
editor: this,
|
|
169
|
+
transaction,
|
|
170
|
+
nextState: state,
|
|
171
|
+
});
|
|
172
|
+
this.view.updateState(state);
|
|
173
|
+
this.emit("transaction", {
|
|
174
|
+
editor: this,
|
|
175
|
+
transaction,
|
|
176
|
+
});
|
|
177
|
+
|
|
178
|
+
if (selectionHasChanged) {
|
|
179
|
+
this.emit("selectionUpdate", {
|
|
180
|
+
editor: this,
|
|
181
|
+
transaction,
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
const focus = transaction.getMeta("focus");
|
|
186
|
+
const blur = transaction.getMeta("blur");
|
|
187
|
+
|
|
188
|
+
if (focus) {
|
|
189
|
+
this.emit("focus", {
|
|
190
|
+
editor: this,
|
|
191
|
+
event: focus.event,
|
|
192
|
+
transaction,
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
if (blur) {
|
|
197
|
+
this.emit("blur", {
|
|
198
|
+
editor: this,
|
|
199
|
+
event: blur.event,
|
|
200
|
+
transaction,
|
|
201
|
+
});
|
|
147
202
|
}
|
|
203
|
+
|
|
204
|
+
if (!transaction.docChanged || transaction.getMeta("preventUpdate")) {
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
this.emit("update", {
|
|
209
|
+
editor: this,
|
|
210
|
+
transaction,
|
|
211
|
+
});
|
|
212
|
+
this.emit("v3-update", {
|
|
213
|
+
editor: this,
|
|
214
|
+
transaction,
|
|
215
|
+
appendedTransactions: appendedTransactions.slice(1),
|
|
216
|
+
});
|
|
148
217
|
}
|
|
149
218
|
|
|
150
219
|
/**
|
|
@@ -171,7 +240,7 @@ export class BlockNoteTipTapEditor extends TiptapEditor {
|
|
|
171
240
|
{
|
|
172
241
|
...this.options.editorProps,
|
|
173
242
|
// @ts-ignore
|
|
174
|
-
dispatchTransaction: this.
|
|
243
|
+
dispatchTransaction: this.dispatch.bind(this),
|
|
175
244
|
state: this.state,
|
|
176
245
|
markViews,
|
|
177
246
|
nodeViews: this.extensionManager.nodeViews,
|
|
@@ -228,3 +297,17 @@ export class BlockNoteTipTapEditor extends TiptapEditor {
|
|
|
228
297
|
// (note: can probably be removed after tiptap upgrade fixed in 2.8.0)
|
|
229
298
|
this.options.onPaste = this.options.onDrop = undefined;
|
|
230
299
|
};
|
|
300
|
+
|
|
301
|
+
declare module "@tiptap/core" {
|
|
302
|
+
interface EditorEvents {
|
|
303
|
+
/**
|
|
304
|
+
* This is a custom event that will be emitted in Tiptap V3.
|
|
305
|
+
* We use it to provide the appendedTransactions, until Tiptap V3 is released.
|
|
306
|
+
*/
|
|
307
|
+
"v3-update": {
|
|
308
|
+
editor: Editor;
|
|
309
|
+
transaction: Transaction;
|
|
310
|
+
appendedTransactions: Transaction[];
|
|
311
|
+
};
|
|
312
|
+
}
|
|
313
|
+
}
|
|
@@ -89,41 +89,39 @@ export class CommentsPlugin extends EventEmitter<any> {
|
|
|
89
89
|
* when a thread is resolved or deleted, we need to update the marks to reflect the new state
|
|
90
90
|
*/
|
|
91
91
|
private updateMarksFromThreads = (threads: Map<string, ThreadData>) => {
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
})
|
|
117
|
-
);
|
|
118
|
-
ttEditor.dispatch(tr);
|
|
92
|
+
this.editor.transact((tr) => {
|
|
93
|
+
tr.doc.descendants((node, pos) => {
|
|
94
|
+
node.marks.forEach((mark) => {
|
|
95
|
+
if (mark.type.name === this.markType) {
|
|
96
|
+
const markType = mark.type;
|
|
97
|
+
const markThreadId = mark.attrs.threadId;
|
|
98
|
+
const thread = threads.get(markThreadId);
|
|
99
|
+
const isOrphan = !!(!thread || thread.resolved || thread.deletedAt);
|
|
100
|
+
|
|
101
|
+
if (isOrphan !== mark.attrs.orphan) {
|
|
102
|
+
const trimmedFrom = Math.max(pos, 0);
|
|
103
|
+
const trimmedTo = Math.min(
|
|
104
|
+
pos + node.nodeSize,
|
|
105
|
+
tr.doc.content.size - 1
|
|
106
|
+
);
|
|
107
|
+
tr.removeMark(trimmedFrom, trimmedTo, mark);
|
|
108
|
+
tr.addMark(
|
|
109
|
+
trimmedFrom,
|
|
110
|
+
trimmedTo,
|
|
111
|
+
markType.create({
|
|
112
|
+
...mark.attrs,
|
|
113
|
+
orphan: isOrphan,
|
|
114
|
+
})
|
|
115
|
+
);
|
|
119
116
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
117
|
+
if (isOrphan && this.selectedThreadId === markThreadId) {
|
|
118
|
+
// unselect
|
|
119
|
+
this.selectedThreadId = undefined;
|
|
120
|
+
this.emitStateUpdate();
|
|
121
|
+
}
|
|
124
122
|
}
|
|
125
123
|
}
|
|
126
|
-
}
|
|
124
|
+
});
|
|
127
125
|
});
|
|
128
126
|
});
|
|
129
127
|
};
|
|
@@ -262,8 +260,8 @@ export class CommentsPlugin extends EventEmitter<any> {
|
|
|
262
260
|
}
|
|
263
261
|
this.selectedThreadId = threadId;
|
|
264
262
|
this.emitStateUpdate();
|
|
265
|
-
this.editor.
|
|
266
|
-
|
|
263
|
+
this.editor.transact((tr) =>
|
|
264
|
+
tr.setMeta(PLUGIN_KEY, {
|
|
267
265
|
name: SET_SELECTED_THREAD_ID,
|
|
268
266
|
})
|
|
269
267
|
);
|
|
@@ -45,14 +45,10 @@ export const KeyboardShortcutsExtension = Extension.create<{
|
|
|
45
45
|
|
|
46
46
|
if (selectionAtBlockStart && !isParagraph) {
|
|
47
47
|
return commands.command(
|
|
48
|
-
updateBlockCommand(
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
type: "paragraph",
|
|
53
|
-
props: {},
|
|
54
|
-
}
|
|
55
|
-
)
|
|
48
|
+
updateBlockCommand(blockInfo.bnBlock.beforePos, {
|
|
49
|
+
type: "paragraph",
|
|
50
|
+
props: {},
|
|
51
|
+
})
|
|
56
52
|
);
|
|
57
53
|
}
|
|
58
54
|
|
|
@@ -12,6 +12,7 @@ import {
|
|
|
12
12
|
StyleSchema,
|
|
13
13
|
} from "../../schema/index.js";
|
|
14
14
|
import { EventEmitter } from "../../util/EventEmitter.js";
|
|
15
|
+
import { getPmSchema } from "../../api/pmUtil.js";
|
|
15
16
|
|
|
16
17
|
export type LinkToolbarState = UiElementPosition & {
|
|
17
18
|
// The hovered link's URL, and the text it's displayed with in the
|
|
@@ -153,17 +154,15 @@ class LinkToolbarView implements PluginView {
|
|
|
153
154
|
};
|
|
154
155
|
|
|
155
156
|
editLink(url: string, text: string) {
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
this.linkMarkRange!.from,
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
);
|
|
166
|
-
this.editor.dispatch(tr);
|
|
157
|
+
this.editor.transact((tr) => {
|
|
158
|
+
const pmSchema = getPmSchema(tr);
|
|
159
|
+
tr.insertText(text, this.linkMarkRange!.from, this.linkMarkRange!.to);
|
|
160
|
+
tr.addMark(
|
|
161
|
+
this.linkMarkRange!.from,
|
|
162
|
+
this.linkMarkRange!.from + text.length,
|
|
163
|
+
pmSchema.mark("link", { href: url })
|
|
164
|
+
);
|
|
165
|
+
});
|
|
167
166
|
this.pmView.focus();
|
|
168
167
|
|
|
169
168
|
if (this.state?.show) {
|
|
@@ -173,8 +172,8 @@ class LinkToolbarView implements PluginView {
|
|
|
173
172
|
}
|
|
174
173
|
|
|
175
174
|
deleteLink() {
|
|
176
|
-
this.editor.
|
|
177
|
-
|
|
175
|
+
this.editor.transact((tr) =>
|
|
176
|
+
tr
|
|
178
177
|
.removeMark(
|
|
179
178
|
this.linkMarkRange!.from,
|
|
180
179
|
this.linkMarkRange!.to,
|
|
@@ -41,9 +41,7 @@ export class ShowSelectionPlugin {
|
|
|
41
41
|
|
|
42
42
|
this.enabled = enabled;
|
|
43
43
|
|
|
44
|
-
this.editor.
|
|
45
|
-
this.editor.prosemirrorView?.state.tr.setMeta(PLUGIN_KEY, {})
|
|
46
|
-
);
|
|
44
|
+
this.editor.transact((tr) => tr.setMeta(PLUGIN_KEY, {}));
|
|
47
45
|
}
|
|
48
46
|
|
|
49
47
|
public getEnabled() {
|
|
@@ -82,6 +82,8 @@ export class MultipleNodeSelection extends Selection {
|
|
|
82
82
|
}
|
|
83
83
|
|
|
84
84
|
toJSON(): any {
|
|
85
|
-
return { type: "node", anchor: this.anchor, head: this.head };
|
|
85
|
+
return { type: "multiple-node", anchor: this.anchor, head: this.head };
|
|
86
86
|
}
|
|
87
87
|
}
|
|
88
|
+
|
|
89
|
+
Selection.jsonID("multiple-node", MultipleNodeSelection);
|
|
@@ -201,7 +201,7 @@ export function dragStart<
|
|
|
201
201
|
|
|
202
202
|
const externalHTMLExporter = createExternalHTMLExporter(schema, editor);
|
|
203
203
|
|
|
204
|
-
const blocks = fragmentToBlocks(selectedSlice.content
|
|
204
|
+
const blocks = fragmentToBlocks(selectedSlice.content);
|
|
205
205
|
const externalHTML = externalHTMLExporter.exportBlocks(blocks, {});
|
|
206
206
|
|
|
207
207
|
const plainText = cleanHTMLToMarkdown(externalHTML);
|
|
@@ -115,9 +115,7 @@ class SuggestionMenuView<
|
|
|
115
115
|
}
|
|
116
116
|
|
|
117
117
|
closeMenu = () => {
|
|
118
|
-
this.editor.
|
|
119
|
-
this.editor._tiptapEditor.state.tr.setMeta(suggestionMenuPluginKey, null)
|
|
120
|
-
);
|
|
118
|
+
this.editor.transact((tr) => tr.setMeta(suggestionMenuPluginKey, null));
|
|
121
119
|
};
|
|
122
120
|
|
|
123
121
|
clearQuery = () => {
|
|
@@ -128,13 +126,14 @@ class SuggestionMenuView<
|
|
|
128
126
|
this.editor._tiptapEditor
|
|
129
127
|
.chain()
|
|
130
128
|
.focus()
|
|
129
|
+
// TODO need to make an API for this
|
|
131
130
|
.deleteRange({
|
|
132
131
|
from:
|
|
133
132
|
this.pluginState.queryStartPos() -
|
|
134
133
|
(this.pluginState.deleteTriggerCharacter
|
|
135
134
|
? this.pluginState.triggerCharacter!.length
|
|
136
135
|
: 0),
|
|
137
|
-
to: this.editor.
|
|
136
|
+
to: this.editor.transact((tr) => tr.selection.from),
|
|
138
137
|
})
|
|
139
138
|
.run();
|
|
140
139
|
};
|
|
@@ -196,7 +195,12 @@ export class SuggestionMenuProseMirrorPlugin<
|
|
|
196
195
|
},
|
|
197
196
|
|
|
198
197
|
// Apply changes to the plugin state from an editor transaction.
|
|
199
|
-
apply
|
|
198
|
+
apply: (
|
|
199
|
+
transaction,
|
|
200
|
+
prev,
|
|
201
|
+
_oldState,
|
|
202
|
+
newState
|
|
203
|
+
): SuggestionPluginState => {
|
|
200
204
|
// TODO: More clearly define which transactions should be ignored.
|
|
201
205
|
if (transaction.getMeta("orderedListIndexing") !== undefined) {
|
|
202
206
|
return prev;
|
|
@@ -215,12 +219,14 @@ export class SuggestionMenuProseMirrorPlugin<
|
|
|
215
219
|
ignoreQueryLength?: boolean;
|
|
216
220
|
} | null = transaction.getMeta(suggestionMenuPluginKey);
|
|
217
221
|
|
|
218
|
-
// Only opens a menu of no menu is already open
|
|
219
222
|
if (
|
|
220
223
|
typeof suggestionPluginTransactionMeta === "object" &&
|
|
221
|
-
suggestionPluginTransactionMeta !== null
|
|
222
|
-
prev === undefined
|
|
224
|
+
suggestionPluginTransactionMeta !== null
|
|
223
225
|
) {
|
|
226
|
+
if (prev) {
|
|
227
|
+
// Close the previous menu if it exists
|
|
228
|
+
this.closeMenu();
|
|
229
|
+
}
|
|
224
230
|
const trackedPosition = trackPosition(
|
|
225
231
|
editor,
|
|
226
232
|
newState.selection.from -
|
|
@@ -262,7 +268,11 @@ export class SuggestionMenuProseMirrorPlugin<
|
|
|
262
268
|
transaction.getMeta("pointer") ||
|
|
263
269
|
// Moving the caret before the character which triggered the menu should hide it.
|
|
264
270
|
(prev.triggerCharacter !== undefined &&
|
|
265
|
-
newState.selection.from < prev.queryStartPos())
|
|
271
|
+
newState.selection.from < prev.queryStartPos()) ||
|
|
272
|
+
// Moving the caret to a new block should hide the menu.
|
|
273
|
+
!newState.selection.$from.sameParent(
|
|
274
|
+
newState.doc.resolve(prev.queryStartPos())
|
|
275
|
+
)
|
|
266
276
|
) {
|
|
267
277
|
return undefined;
|
|
268
278
|
}
|
|
@@ -281,21 +291,14 @@ export class SuggestionMenuProseMirrorPlugin<
|
|
|
281
291
|
|
|
282
292
|
props: {
|
|
283
293
|
handleTextInput(view, _from, _to, text) {
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
).getState(view.state);
|
|
287
|
-
|
|
288
|
-
if (
|
|
289
|
-
triggerCharacters.includes(text) &&
|
|
290
|
-
suggestionPluginState === undefined
|
|
291
|
-
) {
|
|
294
|
+
if (triggerCharacters.includes(text)) {
|
|
295
|
+
view.dispatch(view.state.tr.insertText(text));
|
|
292
296
|
view.dispatch(
|
|
293
297
|
view.state.tr
|
|
294
|
-
.insertText(text)
|
|
295
|
-
.scrollIntoView()
|
|
296
298
|
.setMeta(suggestionMenuPluginKey, {
|
|
297
299
|
triggerCharacter: text,
|
|
298
300
|
})
|
|
301
|
+
.scrollIntoView()
|
|
299
302
|
);
|
|
300
303
|
|
|
301
304
|
return true;
|
|
@@ -234,8 +234,8 @@ export function getDefaultSlashMenuItems<
|
|
|
234
234
|
});
|
|
235
235
|
|
|
236
236
|
// Immediately open the file toolbar
|
|
237
|
-
editor.
|
|
238
|
-
|
|
237
|
+
editor.transact((tr) =>
|
|
238
|
+
tr.setMeta(editor.filePanel!.plugin, {
|
|
239
239
|
block: insertedBlock,
|
|
240
240
|
})
|
|
241
241
|
);
|
|
@@ -253,8 +253,8 @@ export function getDefaultSlashMenuItems<
|
|
|
253
253
|
});
|
|
254
254
|
|
|
255
255
|
// Immediately open the file toolbar
|
|
256
|
-
editor.
|
|
257
|
-
|
|
256
|
+
editor.transact((tr) =>
|
|
257
|
+
tr.setMeta(editor.filePanel!.plugin, {
|
|
258
258
|
block: insertedBlock,
|
|
259
259
|
})
|
|
260
260
|
);
|
|
@@ -272,8 +272,8 @@ export function getDefaultSlashMenuItems<
|
|
|
272
272
|
});
|
|
273
273
|
|
|
274
274
|
// Immediately open the file toolbar
|
|
275
|
-
editor.
|
|
276
|
-
|
|
275
|
+
editor.transact((tr) =>
|
|
276
|
+
tr.setMeta(editor.filePanel!.plugin, {
|
|
277
277
|
block: insertedBlock,
|
|
278
278
|
})
|
|
279
279
|
);
|
|
@@ -291,8 +291,8 @@ export function getDefaultSlashMenuItems<
|
|
|
291
291
|
});
|
|
292
292
|
|
|
293
293
|
// Immediately open the file toolbar
|
|
294
|
-
editor.
|
|
295
|
-
|
|
294
|
+
editor.transact((tr) =>
|
|
295
|
+
tr.setMeta(editor.filePanel!.plugin, {
|
|
296
296
|
block: insertedBlock,
|
|
297
297
|
})
|
|
298
298
|
);
|