@blocknote/core 0.18.0 → 0.19.0
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.js +2191 -2068
- package/dist/blocknote.js.map +1 -1
- package/dist/blocknote.umd.cjs +9 -9
- package/dist/blocknote.umd.cjs.map +1 -1
- package/dist/src/api/blockManipulation/commands/insertBlocks/insertBlocks.js +27 -0
- package/dist/src/api/blockManipulation/commands/insertBlocks/insertBlocks.js.map +1 -0
- package/dist/src/api/blockManipulation/commands/insertBlocks/insertBlocks.test.js +99 -0
- package/dist/src/api/blockManipulation/commands/insertBlocks/insertBlocks.test.js.map +1 -0
- package/dist/src/api/blockManipulation/commands/mergeBlocks/mergeBlocks.js +97 -0
- package/dist/src/api/blockManipulation/commands/mergeBlocks/mergeBlocks.js.map +1 -0
- package/dist/src/api/blockManipulation/commands/mergeBlocks/mergeBlocks.test.js +88 -0
- package/dist/src/api/blockManipulation/commands/mergeBlocks/mergeBlocks.test.js.map +1 -0
- package/dist/src/api/blockManipulation/commands/moveBlock/moveBlock.js +116 -0
- package/dist/src/api/blockManipulation/commands/moveBlock/moveBlock.js.map +1 -0
- package/dist/src/api/blockManipulation/commands/moveBlock/moveBlock.test.js +106 -0
- package/dist/src/api/blockManipulation/commands/moveBlock/moveBlock.test.js.map +1 -0
- package/dist/src/api/blockManipulation/commands/nestBlock/nestBlock.js +57 -0
- package/dist/src/api/blockManipulation/commands/nestBlock/nestBlock.js.map +1 -0
- package/dist/src/api/blockManipulation/commands/removeBlocks/removeBlocks.js +43 -0
- package/dist/src/api/blockManipulation/commands/removeBlocks/removeBlocks.js.map +1 -0
- package/dist/src/api/blockManipulation/commands/removeBlocks/removeBlocks.test.js +27 -0
- package/dist/src/api/blockManipulation/commands/removeBlocks/removeBlocks.test.js.map +1 -0
- package/dist/src/api/blockManipulation/commands/replaceBlocks/replaceBlocks.js +29 -0
- package/dist/src/api/blockManipulation/commands/replaceBlocks/replaceBlocks.js.map +1 -0
- package/dist/src/api/blockManipulation/commands/replaceBlocks/replaceBlocks.test.js +157 -0
- package/dist/src/api/blockManipulation/commands/replaceBlocks/replaceBlocks.test.js.map +1 -0
- package/dist/src/api/blockManipulation/commands/splitBlock/splitBlock.js +27 -0
- package/dist/src/api/blockManipulation/commands/splitBlock/splitBlock.js.map +1 -0
- package/dist/src/api/blockManipulation/commands/splitBlock/splitBlock.test.js +64 -0
- package/dist/src/api/blockManipulation/commands/splitBlock/splitBlock.test.js.map +1 -0
- package/dist/src/api/blockManipulation/commands/updateBlock/updateBlock.js +145 -0
- package/dist/src/api/blockManipulation/commands/updateBlock/updateBlock.js.map +1 -0
- package/dist/src/api/blockManipulation/commands/updateBlock/updateBlock.test.js +252 -0
- package/dist/src/api/blockManipulation/commands/updateBlock/updateBlock.test.js.map +1 -0
- package/dist/src/api/blockManipulation/insertContentAt.js +64 -0
- package/dist/src/api/blockManipulation/insertContentAt.js.map +1 -0
- package/dist/src/api/blockManipulation/selections/textCursorPosition/textCursorPosition.js +76 -0
- package/dist/src/api/blockManipulation/selections/textCursorPosition/textCursorPosition.js.map +1 -0
- package/dist/src/api/blockManipulation/selections/textCursorPosition/textCursorPosition.test.js +33 -0
- package/dist/src/api/blockManipulation/selections/textCursorPosition/textCursorPosition.test.js.map +1 -0
- package/dist/src/api/blockManipulation/setupTestEnv.js +172 -0
- package/dist/src/api/blockManipulation/setupTestEnv.js.map +1 -0
- package/dist/src/api/clipboard/clipboard.test.js +246 -0
- package/dist/src/api/clipboard/clipboard.test.js.map +1 -0
- package/dist/src/api/clipboard/fromClipboard/acceptedMIMETypes.js +8 -0
- package/dist/src/api/clipboard/fromClipboard/acceptedMIMETypes.js.map +1 -0
- package/dist/src/api/clipboard/fromClipboard/fileDropExtension.js +38 -0
- package/dist/src/api/clipboard/fromClipboard/fileDropExtension.js.map +1 -0
- package/dist/src/api/clipboard/fromClipboard/handleFileInsertion.js +109 -0
- package/dist/src/api/clipboard/fromClipboard/handleFileInsertion.js.map +1 -0
- package/dist/src/api/clipboard/fromClipboard/handleVSCodePaste.js +26 -0
- package/dist/src/api/clipboard/fromClipboard/handleVSCodePaste.js.map +1 -0
- package/dist/src/api/clipboard/fromClipboard/pasteExtension.js +57 -0
- package/dist/src/api/clipboard/fromClipboard/pasteExtension.js.map +1 -0
- package/dist/src/api/clipboard/toClipboard/copyExtension.js +132 -0
- package/dist/src/api/clipboard/toClipboard/copyExtension.js.map +1 -0
- package/dist/src/api/exporters/html/externalHTMLExporter.js +35 -0
- package/dist/src/api/exporters/html/externalHTMLExporter.js.map +1 -0
- package/dist/src/api/exporters/html/htmlConversion.test.js +72 -0
- package/dist/src/api/exporters/html/htmlConversion.test.js.map +1 -0
- package/dist/src/api/exporters/html/internalHTMLSerializer.js +21 -0
- package/dist/src/api/exporters/html/internalHTMLSerializer.js.map +1 -0
- package/dist/src/api/exporters/html/util/serializeBlocksExternalHTML.js +141 -0
- package/dist/src/api/exporters/html/util/serializeBlocksExternalHTML.js.map +1 -0
- package/dist/src/api/exporters/html/util/serializeBlocksInternalHTML.js +96 -0
- package/dist/src/api/exporters/html/util/serializeBlocksInternalHTML.js.map +1 -0
- package/dist/src/api/exporters/markdown/markdownExporter.js +31 -0
- package/dist/src/api/exporters/markdown/markdownExporter.js.map +1 -0
- package/dist/src/api/exporters/markdown/markdownExporter.test.js +57 -0
- package/dist/src/api/exporters/markdown/markdownExporter.test.js.map +1 -0
- package/dist/src/api/exporters/markdown/removeUnderlinesRehypePlugin.js +33 -0
- package/dist/src/api/exporters/markdown/removeUnderlinesRehypePlugin.js.map +1 -0
- package/dist/src/api/exporters/markdown/util/addSpacesToCheckboxesRehypePlugin.js +37 -0
- package/dist/src/api/exporters/markdown/util/addSpacesToCheckboxesRehypePlugin.js.map +1 -0
- package/dist/src/api/getBlockInfoFromPos.js +171 -0
- package/dist/src/api/getBlockInfoFromPos.js.map +1 -0
- package/dist/src/api/nodeConversions/blockToNode.js +197 -0
- package/dist/src/api/nodeConversions/blockToNode.js.map +1 -0
- package/dist/src/api/nodeConversions/fragmentToBlocks.js +50 -0
- package/dist/src/api/nodeConversions/fragmentToBlocks.js.map +1 -0
- package/dist/src/api/nodeConversions/nodeConversions.test.js +54 -0
- package/dist/src/api/nodeConversions/nodeConversions.test.js.map +1 -0
- package/dist/src/api/nodeConversions/nodeToBlock.js +316 -0
- package/dist/src/api/nodeConversions/nodeToBlock.js.map +1 -0
- package/dist/src/api/nodeUtil.js +28 -0
- package/dist/src/api/nodeUtil.js.map +1 -0
- package/dist/src/api/parsers/html/parseHTML.js +19 -0
- package/dist/src/api/parsers/html/parseHTML.js.map +1 -0
- package/dist/src/api/parsers/html/parseHTML.test.js +470 -0
- package/dist/src/api/parsers/html/parseHTML.test.js.map +1 -0
- package/dist/src/api/parsers/html/util/nestedLists.js +106 -0
- package/dist/src/api/parsers/html/util/nestedLists.js.map +1 -0
- package/dist/src/api/parsers/html/util/nestedLists.test.js +166 -0
- package/dist/src/api/parsers/html/util/nestedLists.test.js.map +1 -0
- package/dist/src/api/parsers/markdown/parseMarkdown.js +52 -0
- package/dist/src/api/parsers/markdown/parseMarkdown.js.map +1 -0
- package/dist/src/api/parsers/markdown/parseMarkdown.test.js +109 -0
- package/dist/src/api/parsers/markdown/parseMarkdown.test.js.map +1 -0
- package/dist/src/api/testUtil/cases/customBlocks.js +313 -0
- package/dist/src/api/testUtil/cases/customBlocks.js.map +1 -0
- package/dist/src/api/testUtil/cases/customInlineContent.js +91 -0
- package/dist/src/api/testUtil/cases/customInlineContent.js.map +1 -0
- package/dist/src/api/testUtil/cases/customStyles.js +83 -0
- package/dist/src/api/testUtil/cases/customStyles.js.map +1 -0
- package/dist/src/api/testUtil/cases/defaultSchema.js +673 -0
- package/dist/src/api/testUtil/cases/defaultSchema.js.map +1 -0
- package/dist/src/api/testUtil/index.js +2 -0
- package/dist/src/api/testUtil/index.js.map +1 -0
- package/dist/src/api/testUtil/partialBlockTestUtil.js +114 -0
- package/dist/src/api/testUtil/partialBlockTestUtil.js.map +1 -0
- package/dist/src/api/testUtil/paste.js +29 -0
- package/dist/src/api/testUtil/paste.js.map +1 -0
- package/dist/src/blocks/AudioBlockContent/AudioBlockContent.js +97 -0
- package/dist/src/blocks/AudioBlockContent/AudioBlockContent.js.map +1 -0
- package/dist/src/blocks/AudioBlockContent/audioBlockHelpers.js +5 -0
- package/dist/src/blocks/AudioBlockContent/audioBlockHelpers.js.map +1 -0
- package/dist/src/blocks/CodeBlockContent/CodeBlockContent.js +273 -0
- package/dist/src/blocks/CodeBlockContent/CodeBlockContent.js.map +1 -0
- package/dist/src/blocks/CodeBlockContent/defaultSupportedLanguages.js +90 -0
- package/dist/src/blocks/CodeBlockContent/defaultSupportedLanguages.js.map +1 -0
- package/dist/src/blocks/FileBlockContent/FileBlockContent.js +70 -0
- package/dist/src/blocks/FileBlockContent/FileBlockContent.js.map +1 -0
- package/dist/src/blocks/FileBlockContent/fileBlockHelpers.js +317 -0
- package/dist/src/blocks/FileBlockContent/fileBlockHelpers.js.map +1 -0
- package/dist/src/blocks/FileBlockContent/uploadToTmpFilesDotOrg_DEV_ONLY.js +15 -0
- package/dist/src/blocks/FileBlockContent/uploadToTmpFilesDotOrg_DEV_ONLY.js.map +1 -0
- package/dist/src/blocks/HeadingBlockContent/HeadingBlockContent.js +141 -0
- package/dist/src/blocks/HeadingBlockContent/HeadingBlockContent.js.map +1 -0
- package/dist/src/blocks/ImageBlockContent/ImageBlockContent.js +106 -0
- package/dist/src/blocks/ImageBlockContent/ImageBlockContent.js.map +1 -0
- package/dist/src/blocks/ImageBlockContent/imageBlockHelpers.js +6 -0
- package/dist/src/blocks/ImageBlockContent/imageBlockHelpers.js.map +1 -0
- package/dist/src/blocks/ListItemBlockContent/BulletListItemBlockContent/BulletListItemBlockContent.js +111 -0
- package/dist/src/blocks/ListItemBlockContent/BulletListItemBlockContent/BulletListItemBlockContent.js.map +1 -0
- package/dist/src/blocks/ListItemBlockContent/CheckListItemBlockContent/CheckListItemBlockContent.js +218 -0
- package/dist/src/blocks/ListItemBlockContent/CheckListItemBlockContent/CheckListItemBlockContent.js.map +1 -0
- package/dist/src/blocks/ListItemBlockContent/ListItemKeyboardShortcuts.js +41 -0
- package/dist/src/blocks/ListItemBlockContent/ListItemKeyboardShortcuts.js.map +1 -0
- package/dist/src/blocks/ListItemBlockContent/NumberedListItemBlockContent/NumberedListIndexingPlugin.js +58 -0
- package/dist/src/blocks/ListItemBlockContent/NumberedListItemBlockContent/NumberedListIndexingPlugin.js.map +1 -0
- package/dist/src/blocks/ListItemBlockContent/NumberedListItemBlockContent/NumberedListItemBlockContent.js +128 -0
- package/dist/src/blocks/ListItemBlockContent/NumberedListItemBlockContent/NumberedListItemBlockContent.js.map +1 -0
- package/dist/src/blocks/ParagraphBlockContent/ParagraphBlockContent.js +51 -0
- package/dist/src/blocks/ParagraphBlockContent/ParagraphBlockContent.js.map +1 -0
- package/dist/src/blocks/TableBlockContent/TableBlockContent.js +130 -0
- package/dist/src/blocks/TableBlockContent/TableBlockContent.js.map +1 -0
- package/dist/src/blocks/TableBlockContent/TableExtension.js +57 -0
- package/dist/src/blocks/TableBlockContent/TableExtension.js.map +1 -0
- package/dist/src/blocks/VideoBlockContent/VideoBlockContent.js +103 -0
- package/dist/src/blocks/VideoBlockContent/VideoBlockContent.js.map +1 -0
- package/dist/src/blocks/VideoBlockContent/videoBlockHelpers.js +6 -0
- package/dist/src/blocks/VideoBlockContent/videoBlockHelpers.js.map +1 -0
- package/dist/src/blocks/defaultBlockHelpers.js +50 -0
- package/dist/src/blocks/defaultBlockHelpers.js.map +1 -0
- package/dist/src/blocks/defaultBlockTypeGuards.js +40 -0
- package/dist/src/blocks/defaultBlockTypeGuards.js.map +1 -0
- package/dist/src/blocks/defaultBlocks.js +50 -0
- package/dist/src/blocks/defaultBlocks.js.map +1 -0
- package/dist/src/blocks/defaultProps.js +19 -0
- package/dist/src/blocks/defaultProps.js.map +1 -0
- package/dist/src/editor/BlockNoteEditor.js +750 -0
- package/dist/src/editor/BlockNoteEditor.js.map +1 -0
- package/dist/src/editor/BlockNoteEditor.test.js +65 -0
- package/dist/src/editor/BlockNoteEditor.test.js.map +1 -0
- package/dist/src/editor/BlockNoteExtensions.js +149 -0
- package/dist/src/editor/BlockNoteExtensions.js.map +1 -0
- package/dist/src/editor/BlockNoteSchema.js +38 -0
- package/dist/src/editor/BlockNoteSchema.js.map +1 -0
- package/dist/src/editor/BlockNoteTipTapEditor.js +169 -0
- package/dist/src/editor/BlockNoteTipTapEditor.js.map +1 -0
- package/dist/src/editor/cursorPositionTypes.js +2 -0
- package/dist/src/editor/cursorPositionTypes.js.map +1 -0
- package/dist/src/editor/defaultColors.js +77 -0
- package/dist/src/editor/defaultColors.js.map +1 -0
- package/dist/src/editor/selectionTypes.js +2 -0
- package/dist/src/editor/selectionTypes.js.map +1 -0
- package/dist/src/editor/transformPasted.js +79 -0
- package/dist/src/editor/transformPasted.js.map +1 -0
- package/dist/src/exporter/Exporter.js +36 -0
- package/dist/src/exporter/Exporter.js.map +1 -0
- package/dist/src/exporter/index.js +3 -0
- package/dist/src/exporter/index.js.map +1 -0
- package/dist/src/exporter/mapping.js +12 -0
- package/dist/src/exporter/mapping.js.map +1 -0
- package/dist/src/extensions/BackgroundColor/BackgroundColorExtension.js +30 -0
- package/dist/src/extensions/BackgroundColor/BackgroundColorExtension.js.map +1 -0
- package/dist/src/extensions/BackgroundColor/BackgroundColorMark.js +39 -0
- package/dist/src/extensions/BackgroundColor/BackgroundColorMark.js.map +1 -0
- package/dist/src/extensions/FilePanel/FilePanelPlugin.js +131 -0
- package/dist/src/extensions/FilePanel/FilePanelPlugin.js.map +1 -0
- package/dist/src/extensions/FormattingToolbar/FormattingToolbarPlugin.js +195 -0
- package/dist/src/extensions/FormattingToolbar/FormattingToolbarPlugin.js.map +1 -0
- package/dist/src/extensions/KeyboardShortcuts/KeyboardShortcutsExtension.js +309 -0
- package/dist/src/extensions/KeyboardShortcuts/KeyboardShortcutsExtension.js.map +1 -0
- package/dist/src/extensions/LinkToolbar/LinkToolbarPlugin.js +247 -0
- package/dist/src/extensions/LinkToolbar/LinkToolbarPlugin.js.map +1 -0
- package/dist/src/extensions/NodeSelectionKeyboard/NodeSelectionKeyboardPlugin.js +51 -0
- package/dist/src/extensions/NodeSelectionKeyboard/NodeSelectionKeyboardPlugin.js.map +1 -0
- package/dist/src/extensions/Placeholder/PlaceholderPlugin.js +81 -0
- package/dist/src/extensions/Placeholder/PlaceholderPlugin.js.map +1 -0
- package/dist/src/extensions/PreviousBlockType/PreviousBlockTypePlugin.js +183 -0
- package/dist/src/extensions/PreviousBlockType/PreviousBlockTypePlugin.js.map +1 -0
- package/dist/src/extensions/SideMenu/MultipleNodeSelection.js +68 -0
- package/dist/src/extensions/SideMenu/MultipleNodeSelection.js.map +1 -0
- package/dist/src/extensions/SideMenu/SideMenuPlugin.js +339 -0
- package/dist/src/extensions/SideMenu/SideMenuPlugin.js.map +1 -0
- package/dist/src/extensions/SideMenu/dragging.js +128 -0
- package/dist/src/extensions/SideMenu/dragging.js.map +1 -0
- package/dist/src/extensions/SuggestionMenu/DefaultGridSuggestionItem.js +2 -0
- package/dist/src/extensions/SuggestionMenu/DefaultGridSuggestionItem.js.map +1 -0
- package/dist/src/extensions/SuggestionMenu/DefaultSuggestionItem.js +2 -0
- package/dist/src/extensions/SuggestionMenu/DefaultSuggestionItem.js.map +1 -0
- package/dist/src/extensions/SuggestionMenu/SuggestionPlugin.js +245 -0
- package/dist/src/extensions/SuggestionMenu/SuggestionPlugin.js.map +1 -0
- package/dist/src/extensions/SuggestionMenu/getDefaultEmojiPickerItems.js +26 -0
- package/dist/src/extensions/SuggestionMenu/getDefaultEmojiPickerItems.js.map +1 -0
- package/dist/src/extensions/SuggestionMenu/getDefaultSlashMenuItems.js +244 -0
- package/dist/src/extensions/SuggestionMenu/getDefaultSlashMenuItems.js.map +1 -0
- package/dist/src/extensions/TableHandles/TableHandlesPlugin.js +553 -0
- package/dist/src/extensions/TableHandles/TableHandlesPlugin.js.map +1 -0
- package/dist/src/extensions/TextAlignment/TextAlignmentExtension.js +36 -0
- package/dist/src/extensions/TextAlignment/TextAlignmentExtension.js.map +1 -0
- package/dist/src/extensions/TextColor/TextColorExtension.js +29 -0
- package/dist/src/extensions/TextColor/TextColorExtension.js.map +1 -0
- package/dist/src/extensions/TextColor/TextColorMark.js +37 -0
- package/dist/src/extensions/TextColor/TextColorMark.js.map +1 -0
- package/dist/src/extensions/TrailingNode/TrailingNodeExtension.js +58 -0
- package/dist/src/extensions/TrailingNode/TrailingNodeExtension.js.map +1 -0
- package/dist/src/extensions/UniqueID/UniqueID.js +283 -0
- package/dist/src/extensions/UniqueID/UniqueID.js.map +1 -0
- package/dist/src/extensions/getDraggableBlockFromElement.js +13 -0
- package/dist/src/extensions/getDraggableBlockFromElement.js.map +1 -0
- package/dist/src/extensions-shared/UiElementPosition.js +2 -0
- package/dist/src/extensions-shared/UiElementPosition.js.map +1 -0
- package/dist/src/i18n/dictionary.js +4 -0
- package/dist/src/i18n/dictionary.js.map +1 -0
- package/dist/src/i18n/locales/ar.js +298 -0
- package/dist/src/i18n/locales/ar.js.map +1 -0
- package/dist/src/i18n/locales/de.js +313 -0
- package/dist/src/i18n/locales/de.js.map +1 -0
- package/dist/src/i18n/locales/en.js +314 -0
- package/dist/src/i18n/locales/en.js.map +1 -0
- package/dist/src/i18n/locales/es.js +312 -0
- package/dist/src/i18n/locales/es.js.map +1 -0
- package/dist/src/i18n/locales/fr.js +313 -0
- package/dist/src/i18n/locales/fr.js.map +1 -0
- package/dist/src/i18n/locales/hr.js +308 -0
- package/dist/src/i18n/locales/hr.js.map +1 -0
- package/dist/src/i18n/locales/index.js +16 -0
- package/dist/src/i18n/locales/index.js.map +1 -0
- package/dist/src/i18n/locales/is.js +305 -0
- package/dist/src/i18n/locales/is.js.map +1 -0
- package/dist/src/i18n/locales/ja.js +333 -0
- package/dist/src/i18n/locales/ja.js.map +1 -0
- package/dist/src/i18n/locales/ko.js +326 -0
- package/dist/src/i18n/locales/ko.js.map +1 -0
- package/dist/src/i18n/locales/nl.js +313 -0
- package/dist/src/i18n/locales/nl.js.map +1 -0
- package/dist/src/i18n/locales/pl.js +297 -0
- package/dist/src/i18n/locales/pl.js.map +1 -0
- package/dist/src/i18n/locales/pt.js +305 -0
- package/dist/src/i18n/locales/pt.js.map +1 -0
- package/dist/src/i18n/locales/ru.js +340 -0
- package/dist/src/i18n/locales/ru.js.map +1 -0
- package/dist/src/i18n/locales/vi.js +312 -0
- package/dist/src/i18n/locales/vi.js.map +1 -0
- package/dist/src/i18n/locales/zh.js +346 -0
- package/dist/src/i18n/locales/zh.js.map +1 -0
- package/dist/src/index.js +55 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/pm-nodes/BlockContainer.js +72 -0
- package/dist/src/pm-nodes/BlockContainer.js.map +1 -0
- package/dist/src/pm-nodes/BlockGroup.js +43 -0
- package/dist/src/pm-nodes/BlockGroup.js.map +1 -0
- package/dist/src/pm-nodes/Doc.js +7 -0
- package/dist/src/pm-nodes/Doc.js.map +1 -0
- package/dist/src/pm-nodes/index.js +4 -0
- package/dist/src/pm-nodes/index.js.map +1 -0
- package/dist/src/schema/blocks/createSpec.js +126 -0
- package/dist/src/schema/blocks/createSpec.js.map +1 -0
- package/dist/src/schema/blocks/internal.js +147 -0
- package/dist/src/schema/blocks/internal.js.map +1 -0
- package/dist/src/schema/blocks/types.js +2 -0
- package/dist/src/schema/blocks/types.js.map +1 -0
- package/dist/src/schema/index.js +11 -0
- package/dist/src/schema/index.js.map +1 -0
- package/dist/src/schema/inlineContent/createSpec.js +64 -0
- package/dist/src/schema/inlineContent/createSpec.js.map +1 -0
- package/dist/src/schema/inlineContent/internal.js +52 -0
- package/dist/src/schema/inlineContent/internal.js.map +1 -0
- package/dist/src/schema/inlineContent/types.js +10 -0
- package/dist/src/schema/inlineContent/types.js.map +1 -0
- package/dist/src/schema/propTypes.js +2 -0
- package/dist/src/schema/propTypes.js.map +1 -0
- package/dist/src/schema/styles/createSpec.js +48 -0
- package/dist/src/schema/styles/createSpec.js.map +1 -0
- package/dist/src/schema/styles/internal.js +53 -0
- package/dist/src/schema/styles/internal.js.map +1 -0
- package/dist/src/schema/styles/types.js +2 -0
- package/dist/src/schema/styles/types.js.map +1 -0
- package/dist/src/util/EventEmitter.js +33 -0
- package/dist/src/util/EventEmitter.js.map +1 -0
- package/dist/src/util/browser.js +17 -0
- package/dist/src/util/browser.js.map +1 -0
- package/dist/src/util/combineByGroup.js +20 -0
- package/dist/src/util/combineByGroup.js.map +1 -0
- package/dist/src/util/esmDependencies.js +35 -0
- package/dist/src/util/esmDependencies.js.map +1 -0
- package/dist/src/util/string.js +14 -0
- package/dist/src/util/string.js.map +1 -0
- package/dist/src/util/typescript.js +12 -0
- package/dist/src/util/typescript.js.map +1 -0
- package/dist/style.css +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/webpack-stats.json +1 -1
- package/package.json +5 -5
- package/src/api/blockManipulation/commands/insertBlocks/insertBlocks.ts +2 -0
- package/src/api/blockManipulation/commands/mergeBlocks/mergeBlocks.test.ts +2 -2
- package/src/api/blockManipulation/commands/mergeBlocks/mergeBlocks.ts +104 -39
- package/src/api/blockManipulation/commands/moveBlock/moveBlock.ts +3 -5
- package/src/api/blockManipulation/commands/nestBlock/nestBlock.ts +100 -0
- package/src/api/blockManipulation/commands/removeBlocks/removeBlocks.ts +1 -1
- package/src/api/blockManipulation/commands/splitBlock/splitBlock.test.ts +8 -4
- package/src/api/blockManipulation/commands/splitBlock/splitBlock.ts +11 -7
- package/src/api/blockManipulation/commands/updateBlock/updateBlock.test.ts +5 -5
- package/src/api/blockManipulation/commands/updateBlock/updateBlock.ts +192 -107
- package/src/api/blockManipulation/selections/textCursorPosition/textCursorPosition.ts +48 -33
- package/src/api/clipboard/fromClipboard/handleFileInsertion.ts +1 -1
- package/src/api/clipboard/toClipboard/copyExtension.ts +1 -1
- package/src/api/exporters/html/htmlConversion.test.ts +1 -4
- package/src/api/exporters/html/util/serializeBlocksExternalHTML.ts +7 -1
- package/src/api/exporters/html/util/serializeBlocksInternalHTML.ts +56 -19
- package/src/api/exporters/markdown/markdownExporter.test.ts +1 -4
- package/src/api/getBlockInfoFromPos.ts +113 -58
- package/src/api/nodeConversions/blockToNode.ts +50 -25
- package/src/api/nodeConversions/fragmentToBlocks.ts +18 -0
- package/src/api/nodeConversions/nodeToBlock.ts +24 -21
- package/src/api/nodeUtil.ts +1 -1
- package/src/api/testUtil/partialBlockTestUtil.ts +15 -3
- package/src/blocks/AudioBlockContent/AudioBlockContent.ts +4 -2
- package/src/blocks/FileBlockContent/fileBlockHelpers.ts +5 -4
- package/src/blocks/HeadingBlockContent/HeadingBlockContent.ts +19 -31
- package/src/blocks/ImageBlockContent/ImageBlockContent.ts +4 -2
- package/src/blocks/ListItemBlockContent/BulletListItemBlockContent/BulletListItemBlockContent.ts +5 -9
- package/src/blocks/ListItemBlockContent/CheckListItemBlockContent/CheckListItemBlockContent.ts +6 -10
- package/src/blocks/ListItemBlockContent/ListItemKeyboardShortcuts.ts +1 -1
- package/src/blocks/ListItemBlockContent/NumberedListItemBlockContent/NumberedListIndexingPlugin.ts +11 -4
- package/src/blocks/ListItemBlockContent/NumberedListItemBlockContent/NumberedListItemBlockContent.ts +5 -9
- package/src/blocks/ParagraphBlockContent/ParagraphBlockContent.ts +4 -8
- package/src/blocks/VideoBlockContent/VideoBlockContent.ts +4 -2
- package/src/blocks/defaultBlockHelpers.ts +7 -2
- package/src/editor/Block.css +22 -1
- package/src/editor/BlockNoteEditor.test.ts +2 -2
- package/src/editor/BlockNoteEditor.ts +18 -21
- package/src/editor/BlockNoteExtensions.ts +2 -3
- package/src/editor/BlockNoteTipTapEditor.ts +8 -1
- package/src/editor/defaultColors.ts +77 -0
- package/src/editor/editor.css +10 -0
- package/src/editor/transformPasted.ts +6 -3
- package/src/exporter/Exporter.ts +101 -0
- package/src/exporter/index.ts +2 -0
- package/src/exporter/mapping.ts +75 -0
- package/src/extensions/KeyboardShortcuts/KeyboardShortcutsExtension.ts +201 -48
- package/src/extensions/NodeSelectionKeyboard/NodeSelectionKeyboardPlugin.ts +1 -1
- package/src/extensions/SideMenu/SideMenuPlugin.ts +141 -52
- package/src/extensions/SideMenu/dragging.ts +3 -54
- package/src/extensions/SuggestionMenu/getDefaultSlashMenuItems.ts +4 -6
- package/src/extensions/TableHandles/TableHandlesPlugin.ts +1 -1
- package/src/extensions/TrailingNode/TrailingNodeExtension.ts +1 -1
- package/src/extensions/getDraggableBlockFromElement.ts +19 -0
- package/src/i18n/locales/de.ts +5 -5
- package/src/i18n/locales/pt.ts +5 -5
- package/src/index.ts +9 -5
- package/src/pm-nodes/BlockContainer.ts +1 -1
- package/src/pm-nodes/BlockGroup.ts +2 -2
- package/src/pm-nodes/README.md +127 -28
- package/src/schema/blocks/createSpec.ts +4 -1
- package/src/schema/blocks/internal.ts +12 -2
- package/src/schema/blocks/types.ts +1 -1
- package/src/util/combineByGroup.ts +25 -0
- package/types/src/api/blockManipulation/commands/mergeBlocks/mergeBlocks.d.ts +22 -2
- package/types/src/api/blockManipulation/commands/nestBlock/nestBlock.d.ts +5 -0
- package/types/src/api/getBlockInfoFromPos.d.ts +55 -5
- package/types/src/api/nodeConversions/blockToNode.d.ts +1 -1
- package/types/src/api/nodeConversions/nodeToBlock.d.ts +3 -1
- package/types/src/api/testUtil/partialBlockTestUtil.d.ts +2 -1
- package/types/src/blocks/AudioBlockContent/AudioBlockContent.d.ts +1 -0
- package/types/src/blocks/FileBlockContent/fileBlockHelpers.d.ts +1 -0
- package/types/src/blocks/ImageBlockContent/ImageBlockContent.d.ts +1 -0
- package/types/src/blocks/VideoBlockContent/VideoBlockContent.d.ts +1 -0
- package/types/src/editor/BlockNoteEditor.d.ts +4 -3
- package/types/src/editor/BlockNoteTipTapEditor.d.ts +1 -0
- package/types/src/editor/defaultColors.d.ts +76 -0
- package/types/src/exporter/Exporter.d.ts +43 -0
- package/types/src/exporter/index.d.ts +2 -0
- package/types/src/exporter/mapping.d.ts +30 -0
- package/types/src/extensions/SideMenu/SideMenuPlugin.d.ts +2 -1
- package/types/src/extensions/SideMenu/dragging.d.ts +1 -6
- package/types/src/extensions/getDraggableBlockFromElement.d.ts +5 -0
- package/types/src/index.d.ts +9 -5
- package/types/src/schema/blocks/createSpec.d.ts +1 -1
- package/types/src/schema/blocks/internal.d.ts +2 -2
- package/types/src/schema/blocks/types.d.ts +1 -1
- package/types/src/util/combineByGroup.d.ts +9 -0
- package/dist/angular-html-HQGguTAE.js +0 -33
- package/dist/angular-html-HQGguTAE.js.map +0 -1
- package/dist/angular-ts-q9PqJiJb.js +0 -22
- package/dist/angular-ts-q9PqJiJb.js.map +0 -1
- package/dist/astro-0iWgpDaK.js +0 -17
- package/dist/astro-0iWgpDaK.js.map +0 -1
- package/dist/blade-C3Z8AhvY.js +0 -19
- package/dist/blade-C3Z8AhvY.js.map +0 -1
- package/dist/c-TKJGJdXV.js +0 -7
- package/dist/c-TKJGJdXV.js.map +0 -1
- package/dist/coffee-CN_y6cG3.js +0 -9
- package/dist/coffee-CN_y6cG3.js.map +0 -1
- package/dist/cpp-Be_e67JE.js +0 -19
- package/dist/cpp-Be_e67JE.js.map +0 -1
- package/dist/css-DHLSoXzW.js +0 -7
- package/dist/css-DHLSoXzW.js.map +0 -1
- package/dist/glsl-8qSUIm5B.js +0 -9
- package/dist/glsl-8qSUIm5B.js.map +0 -1
- package/dist/graphql-D7_Dk2ma.js +0 -15
- package/dist/graphql-D7_Dk2ma.js.map +0 -1
- package/dist/haml-S3dmcfEW.js +0 -11
- package/dist/haml-S3dmcfEW.js.map +0 -1
- package/dist/handlebars-DaIrqVg3.js +0 -15
- package/dist/handlebars-DaIrqVg3.js.map +0 -1
- package/dist/html-Bx3A18fV.js +0 -11
- package/dist/html-Bx3A18fV.js.map +0 -1
- package/dist/html-derivative-Cf3KTZBS.js +0 -9
- package/dist/html-derivative-Cf3KTZBS.js.map +0 -1
- package/dist/http-BphR83YX.js +0 -15
- package/dist/http-BphR83YX.js.map +0 -1
- package/dist/imba-CmP25v0O.js +0 -9
- package/dist/imba-CmP25v0O.js.map +0 -1
- package/dist/java-Dg4kxH6C.js +0 -7
- package/dist/java-Dg4kxH6C.js.map +0 -1
- package/dist/javascript-CipAzIn1.js +0 -7
- package/dist/javascript-CipAzIn1.js.map +0 -1
- package/dist/jinja-tioldiz6.js +0 -12
- package/dist/jinja-tioldiz6.js.map +0 -1
- package/dist/jison-DWJFEE_I.js +0 -9
- package/dist/jison-DWJFEE_I.js.map +0 -1
- package/dist/json-_04EL6MS.js +0 -7
- package/dist/json-_04EL6MS.js.map +0 -1
- package/dist/json5-Dwmp5XFI.js +0 -7
- package/dist/json5-Dwmp5XFI.js.map +0 -1
- package/dist/jsonc-LqD5auy0.js +0 -7
- package/dist/jsonc-LqD5auy0.js.map +0 -1
- package/dist/jsonl-B4yVuYQH.js +0 -7
- package/dist/jsonl-B4yVuYQH.js.map +0 -1
- package/dist/jsx-Mg4WaD5k.js +0 -7
- package/dist/jsx-Mg4WaD5k.js.map +0 -1
- package/dist/julia-CWi-ZdpN.js +0 -17
- package/dist/julia-CWi-ZdpN.js.map +0 -1
- package/dist/less-BBvTHIGe.js +0 -7
- package/dist/less-BBvTHIGe.js.map +0 -1
- package/dist/markdown-DAXqtk9a.js +0 -7
- package/dist/markdown-DAXqtk9a.js.map +0 -1
- package/dist/marko-0aaNgUGV.js +0 -15
- package/dist/marko-0aaNgUGV.js.map +0 -1
- package/dist/mdc-hXJ2B4O0.js +0 -13
- package/dist/mdc-hXJ2B4O0.js.map +0 -1
- package/dist/mdx-CSCKbb_f.js +0 -7
- package/dist/mdx-CSCKbb_f.js.map +0 -1
- package/dist/php-B_-4RJ09.js +0 -19
- package/dist/php-B_-4RJ09.js.map +0 -1
- package/dist/postcss-SJfTvo_B.js +0 -7
- package/dist/postcss-SJfTvo_B.js.map +0 -1
- package/dist/pug-3q2tx0nf.js +0 -13
- package/dist/pug-3q2tx0nf.js.map +0 -1
- package/dist/python-Dpup1-fE.js +0 -7
- package/dist/python-Dpup1-fE.js.map +0 -1
- package/dist/r-Chyv38Fv.js +0 -7
- package/dist/r-Chyv38Fv.js.map +0 -1
- package/dist/regexp-BF0hfxNW.js +0 -7
- package/dist/regexp-BF0hfxNW.js.map +0 -1
- package/dist/sass-p2RMoqDT.js +0 -7
- package/dist/sass-p2RMoqDT.js.map +0 -1
- package/dist/scss-DmlHSoOY.js +0 -9
- package/dist/scss-DmlHSoOY.js.map +0 -1
- package/dist/shellscript-CZpPN8_x.js +0 -7
- package/dist/shellscript-CZpPN8_x.js.map +0 -1
- package/dist/sql-DtlkUz2m.js +0 -7
- package/dist/sql-DtlkUz2m.js.map +0 -1
- package/dist/stylus-DEr8eSLm.js +0 -7
- package/dist/stylus-DEr8eSLm.js.map +0 -1
- package/dist/svelte-BRIJF62h.js +0 -15
- package/dist/svelte-BRIJF62h.js.map +0 -1
- package/dist/ts-tags-qkUtuI0N.js +0 -42
- package/dist/ts-tags-qkUtuI0N.js.map +0 -1
- package/dist/tsx-DTfbgJxi.js +0 -7
- package/dist/tsx-DTfbgJxi.js.map +0 -1
- package/dist/typescript-CCd4aQHh.js +0 -7
- package/dist/typescript-CCd4aQHh.js.map +0 -1
- package/dist/vue-B3TdbERm.js +0 -32
- package/dist/vue-B3TdbERm.js.map +0 -1
- package/dist/vue-html-BGmTBZk0.js +0 -11
- package/dist/vue-html-BGmTBZk0.js.map +0 -1
- package/dist/wasm-VDIDph3E.js +0 -7
- package/dist/wasm-VDIDph3E.js.map +0 -1
- package/dist/wgsl-2np_U3Z8.js +0 -7
- package/dist/wgsl-2np_U3Z8.js.map +0 -1
- package/dist/xml-CNyphW9R.js +0 -9
- package/dist/xml-CNyphW9R.js.map +0 -1
- package/dist/yaml-DxFiVFcM.js +0 -7
- package/dist/yaml-DxFiVFcM.js.map +0 -1
package/src/blocks/ListItemBlockContent/BulletListItemBlockContent/BulletListItemBlockContent.ts
CHANGED
|
@@ -36,7 +36,7 @@ const BulletListItemBlockContent = createStronglyTypedTiptapNode({
|
|
|
36
36
|
.command(
|
|
37
37
|
updateBlockCommand(
|
|
38
38
|
this.options.editor,
|
|
39
|
-
blockInfo.
|
|
39
|
+
blockInfo.bnBlock.beforePos,
|
|
40
40
|
{
|
|
41
41
|
type: "bulletListItem",
|
|
42
42
|
props: {},
|
|
@@ -60,14 +60,10 @@ const BulletListItemBlockContent = createStronglyTypedTiptapNode({
|
|
|
60
60
|
}
|
|
61
61
|
|
|
62
62
|
return this.options.editor.commands.command(
|
|
63
|
-
updateBlockCommand(
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
type: "bulletListItem",
|
|
68
|
-
props: {},
|
|
69
|
-
}
|
|
70
|
-
)
|
|
63
|
+
updateBlockCommand(this.options.editor, blockInfo.bnBlock.beforePos, {
|
|
64
|
+
type: "bulletListItem",
|
|
65
|
+
props: {},
|
|
66
|
+
})
|
|
71
67
|
);
|
|
72
68
|
},
|
|
73
69
|
};
|
package/src/blocks/ListItemBlockContent/CheckListItemBlockContent/CheckListItemBlockContent.ts
CHANGED
|
@@ -57,7 +57,7 @@ const checkListItemBlockContent = createStronglyTypedTiptapNode({
|
|
|
57
57
|
.command(
|
|
58
58
|
updateBlockCommand(
|
|
59
59
|
this.options.editor,
|
|
60
|
-
blockInfo.
|
|
60
|
+
blockInfo.bnBlock.beforePos,
|
|
61
61
|
{
|
|
62
62
|
type: "checkListItem",
|
|
63
63
|
props: {
|
|
@@ -83,7 +83,7 @@ const checkListItemBlockContent = createStronglyTypedTiptapNode({
|
|
|
83
83
|
.command(
|
|
84
84
|
updateBlockCommand(
|
|
85
85
|
this.options.editor,
|
|
86
|
-
blockInfo.
|
|
86
|
+
blockInfo.bnBlock.beforePos,
|
|
87
87
|
{
|
|
88
88
|
type: "checkListItem",
|
|
89
89
|
props: {
|
|
@@ -109,14 +109,10 @@ const checkListItemBlockContent = createStronglyTypedTiptapNode({
|
|
|
109
109
|
}
|
|
110
110
|
|
|
111
111
|
return this.editor.commands.command(
|
|
112
|
-
updateBlockCommand(
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
type: "checkListItem",
|
|
117
|
-
props: {},
|
|
118
|
-
}
|
|
119
|
-
)
|
|
112
|
+
updateBlockCommand(this.options.editor, blockInfo.bnBlock.beforePos, {
|
|
113
|
+
type: "checkListItem",
|
|
114
|
+
props: {},
|
|
115
|
+
})
|
|
120
116
|
);
|
|
121
117
|
},
|
|
122
118
|
};
|
|
@@ -5,7 +5,7 @@ import { BlockNoteEditor } from "../../editor/BlockNoteEditor.js";
|
|
|
5
5
|
|
|
6
6
|
export const handleEnter = (editor: BlockNoteEditor<any, any, any>) => {
|
|
7
7
|
const ttEditor = editor._tiptapEditor;
|
|
8
|
-
const { blockContent, blockContainer } = getBlockInfoFromSelection(
|
|
8
|
+
const { blockContent, bnBlock: blockContainer } = getBlockInfoFromSelection(
|
|
9
9
|
ttEditor.state
|
|
10
10
|
);
|
|
11
11
|
|
package/src/blocks/ListItemBlockContent/NumberedListItemBlockContent/NumberedListIndexingPlugin.ts
CHANGED
|
@@ -27,24 +27,30 @@ export const NumberedListIndexingPlugin = () => {
|
|
|
27
27
|
node,
|
|
28
28
|
});
|
|
29
29
|
|
|
30
|
+
if (!blockInfo.isBlockContainer) {
|
|
31
|
+
throw new Error("impossible");
|
|
32
|
+
}
|
|
33
|
+
|
|
30
34
|
// Checks if this block is the start of a new ordered list, i.e. if it's the first block in the document, the
|
|
31
35
|
// first block in its nesting level, or the previous block is not an ordered list item.
|
|
32
36
|
|
|
33
37
|
const prevBlock = tr.doc.resolve(
|
|
34
|
-
blockInfo.
|
|
38
|
+
blockInfo.bnBlock.beforePos
|
|
35
39
|
).nodeBefore;
|
|
36
40
|
|
|
37
41
|
if (prevBlock) {
|
|
38
42
|
const prevBlockInfo = getBlockInfo({
|
|
39
|
-
posBeforeNode:
|
|
40
|
-
blockInfo.blockContainer.beforePos - prevBlock.nodeSize,
|
|
43
|
+
posBeforeNode: blockInfo.bnBlock.beforePos - prevBlock.nodeSize,
|
|
41
44
|
node: prevBlock,
|
|
42
45
|
});
|
|
43
46
|
|
|
44
47
|
const isPrevBlockOrderedListItem =
|
|
45
|
-
prevBlockInfo.
|
|
48
|
+
prevBlockInfo.blockNoteType === "numberedListItem";
|
|
46
49
|
|
|
47
50
|
if (isPrevBlockOrderedListItem) {
|
|
51
|
+
if (!prevBlockInfo.isBlockContainer) {
|
|
52
|
+
throw new Error("impossible");
|
|
53
|
+
}
|
|
48
54
|
const prevBlockIndex =
|
|
49
55
|
prevBlockInfo.blockContent.node.attrs["index"];
|
|
50
56
|
|
|
@@ -59,6 +65,7 @@ export const NumberedListIndexingPlugin = () => {
|
|
|
59
65
|
modified = true;
|
|
60
66
|
|
|
61
67
|
tr.setNodeMarkup(blockInfo.blockContent.beforePos, undefined, {
|
|
68
|
+
...contentNode.attrs,
|
|
62
69
|
index: newIndex,
|
|
63
70
|
});
|
|
64
71
|
}
|
package/src/blocks/ListItemBlockContent/NumberedListItemBlockContent/NumberedListItemBlockContent.ts
CHANGED
|
@@ -49,7 +49,7 @@ const NumberedListItemBlockContent = createStronglyTypedTiptapNode({
|
|
|
49
49
|
.command(
|
|
50
50
|
updateBlockCommand(
|
|
51
51
|
this.options.editor,
|
|
52
|
-
blockInfo.
|
|
52
|
+
blockInfo.bnBlock.beforePos,
|
|
53
53
|
{
|
|
54
54
|
type: "numberedListItem",
|
|
55
55
|
props: {},
|
|
@@ -73,14 +73,10 @@ const NumberedListItemBlockContent = createStronglyTypedTiptapNode({
|
|
|
73
73
|
}
|
|
74
74
|
|
|
75
75
|
return this.editor.commands.command(
|
|
76
|
-
updateBlockCommand(
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
type: "numberedListItem",
|
|
81
|
-
props: {},
|
|
82
|
-
}
|
|
83
|
-
)
|
|
76
|
+
updateBlockCommand(this.options.editor, blockInfo.bnBlock.beforePos, {
|
|
77
|
+
type: "numberedListItem",
|
|
78
|
+
props: {},
|
|
79
|
+
})
|
|
84
80
|
);
|
|
85
81
|
},
|
|
86
82
|
};
|
|
@@ -25,14 +25,10 @@ export const ParagraphBlockContent = createStronglyTypedTiptapNode({
|
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
return this.editor.commands.command(
|
|
28
|
-
updateBlockCommand(
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
type: "paragraph",
|
|
33
|
-
props: {},
|
|
34
|
-
}
|
|
35
|
-
)
|
|
28
|
+
updateBlockCommand(this.options.editor, blockInfo.bnBlock.beforePos, {
|
|
29
|
+
type: "paragraph",
|
|
30
|
+
props: {},
|
|
31
|
+
})
|
|
36
32
|
);
|
|
37
33
|
},
|
|
38
34
|
};
|
|
@@ -18,6 +18,9 @@ import {
|
|
|
18
18
|
} from "../FileBlockContent/fileBlockHelpers.js";
|
|
19
19
|
import { parseVideoElement } from "./videoBlockHelpers.js";
|
|
20
20
|
|
|
21
|
+
export const FILE_VIDEO_ICON_SVG =
|
|
22
|
+
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path d="M2 3.9934C2 3.44476 2.45531 3 2.9918 3H21.0082C21.556 3 22 3.44495 22 3.9934V20.0066C22 20.5552 21.5447 21 21.0082 21H2.9918C2.44405 21 2 20.5551 2 20.0066V3.9934ZM8 5V19H16V5H8ZM4 5V7H6V5H4ZM18 5V7H20V5H18ZM4 9V11H6V9H4ZM18 9V11H20V9H18ZM4 13V15H6V13H4ZM18 13V15H20V13H18ZM4 17V19H6V17H4ZM18 17V19H20V17H18Z"></path></svg>';
|
|
23
|
+
|
|
21
24
|
export const videoPropSchema = {
|
|
22
25
|
textAlignment: defaultProps.textAlignment,
|
|
23
26
|
backgroundColor: defaultProps.backgroundColor,
|
|
@@ -56,8 +59,7 @@ export const videoRender = (
|
|
|
56
59
|
editor: BlockNoteEditor<any, any, any>
|
|
57
60
|
) => {
|
|
58
61
|
const icon = document.createElement("div");
|
|
59
|
-
icon.innerHTML =
|
|
60
|
-
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path d="M2 3.9934C2 3.44476 2.45531 3 2.9918 3H21.0082C21.556 3 22 3.44495 22 3.9934V20.0066C22 20.5552 21.5447 21 21.0082 21H2.9918C2.44405 21 2 20.5551 2 20.0066V3.9934ZM8 5V19H16V5H8ZM4 5V7H6V5H4ZM18 5V7H20V5H18ZM4 9V11H6V9H4ZM18 9V11H20V9H18ZM4 13V15H6V13H4ZM18 13V15H20V13H18ZM4 17V19H6V17H4ZM18 17V19H20V17H18Z"></path></svg>';
|
|
62
|
+
icon.innerHTML = FILE_VIDEO_ICON_SVG;
|
|
61
63
|
|
|
62
64
|
const video = document.createElement("video");
|
|
63
65
|
video.className = "bn-visual-media";
|
|
@@ -67,8 +67,13 @@ export const defaultBlockToHTML = <
|
|
|
67
67
|
dom: HTMLElement;
|
|
68
68
|
contentDOM?: HTMLElement;
|
|
69
69
|
} => {
|
|
70
|
-
|
|
71
|
-
|
|
70
|
+
let node = blockToNode(block, editor.pmSchema, editor.schema.styleSchema);
|
|
71
|
+
|
|
72
|
+
if (node.type.name === "blockContainer") {
|
|
73
|
+
// for regular blocks, get the toDOM spec from the blockContent node
|
|
74
|
+
node = node.firstChild!;
|
|
75
|
+
}
|
|
76
|
+
|
|
72
77
|
const toDOM = editor.pmSchema.nodes[node.type.name].spec.toDOM;
|
|
73
78
|
|
|
74
79
|
if (toDOM === undefined) {
|
package/src/editor/Block.css
CHANGED
|
@@ -403,6 +403,7 @@ NESTED BLOCKS
|
|
|
403
403
|
[data-file-block] .bn-file-caption {
|
|
404
404
|
font-size: 0.8em;
|
|
405
405
|
padding-block: 4px;
|
|
406
|
+
word-break: break-word;
|
|
406
407
|
}
|
|
407
408
|
|
|
408
409
|
[data-file-block] .bn-file-caption:empty {
|
|
@@ -472,7 +473,7 @@ NESTED BLOCKS
|
|
|
472
473
|
}
|
|
473
474
|
|
|
474
475
|
[data-background-color="orange"] {
|
|
475
|
-
background-color: #
|
|
476
|
+
background-color: #f6e9d9;
|
|
476
477
|
}
|
|
477
478
|
|
|
478
479
|
[data-background-color="yellow"] {
|
|
@@ -515,3 +516,23 @@ NESTED BLOCKS
|
|
|
515
516
|
justify-content: flex-start;
|
|
516
517
|
text-align: justify;
|
|
517
518
|
}
|
|
519
|
+
|
|
520
|
+
.bn-block-column-list {
|
|
521
|
+
display: flex;
|
|
522
|
+
flex-direction: row;
|
|
523
|
+
}
|
|
524
|
+
|
|
525
|
+
.bn-block-column {
|
|
526
|
+
flex: 1;
|
|
527
|
+
padding: 12px 20px;
|
|
528
|
+
/* scroll if we overflow, for example when tables or images are in the column */
|
|
529
|
+
overflow-x: auto;
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
.bn-block-column:first-child {
|
|
533
|
+
padding-left: 0;
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
.bn-block-column:last-child {
|
|
537
|
+
padding-right: 0;
|
|
538
|
+
}
|
|
@@ -14,8 +14,8 @@ it("creates an editor", () => {
|
|
|
14
14
|
editor._tiptapEditor.state.doc,
|
|
15
15
|
2
|
|
16
16
|
);
|
|
17
|
-
const
|
|
18
|
-
expect(
|
|
17
|
+
const info = getBlockInfo(posInfo);
|
|
18
|
+
expect(info.blockNoteType).toEqual("paragraph");
|
|
19
19
|
});
|
|
20
20
|
|
|
21
21
|
it("immediately replaces doc", async () => {
|
|
@@ -7,6 +7,12 @@ import {
|
|
|
7
7
|
moveBlockDown,
|
|
8
8
|
moveBlockUp,
|
|
9
9
|
} from "../api/blockManipulation/commands/moveBlock/moveBlock.js";
|
|
10
|
+
import {
|
|
11
|
+
canNestBlock,
|
|
12
|
+
canUnnestBlock,
|
|
13
|
+
nestBlock,
|
|
14
|
+
unnestBlock,
|
|
15
|
+
} from "../api/blockManipulation/commands/nestBlock/nestBlock.js";
|
|
10
16
|
import { removeBlocks } from "../api/blockManipulation/commands/removeBlocks/removeBlocks.js";
|
|
11
17
|
import { replaceBlocks } from "../api/blockManipulation/commands/replaceBlocks/replaceBlocks.js";
|
|
12
18
|
import { updateBlock } from "../api/blockManipulation/commands/updateBlock/updateBlock.js";
|
|
@@ -17,7 +23,6 @@ import {
|
|
|
17
23
|
} from "../api/blockManipulation/selections/textCursorPosition/textCursorPosition.js";
|
|
18
24
|
import { createExternalHTMLExporter } from "../api/exporters/html/externalHTMLExporter.js";
|
|
19
25
|
import { blocksToMarkdown } from "../api/exporters/markdown/markdownExporter.js";
|
|
20
|
-
import { getBlockInfoFromSelection } from "../api/getBlockInfoFromPos.js";
|
|
21
26
|
import { HTMLToBlocks } from "../api/parsers/html/parseHTML.js";
|
|
22
27
|
import { markdownToBlocks } from "../api/parsers/markdown/parseMarkdown.js";
|
|
23
28
|
import {
|
|
@@ -66,7 +71,8 @@ import { PlaceholderPlugin } from "../extensions/Placeholder/PlaceholderPlugin.j
|
|
|
66
71
|
import { Dictionary } from "../i18n/dictionary.js";
|
|
67
72
|
import { en } from "../i18n/locales/index.js";
|
|
68
73
|
|
|
69
|
-
import { Transaction } from "@tiptap/pm/state";
|
|
74
|
+
import { Plugin, Transaction } from "@tiptap/pm/state";
|
|
75
|
+
import { dropCursor } from "prosemirror-dropcursor";
|
|
70
76
|
import { createInternalHTMLSerializer } from "../api/exporters/html/internalHTMLSerializer.js";
|
|
71
77
|
import { inlineContentToNodes } from "../api/nodeConversions/blockToNode.js";
|
|
72
78
|
import { nodeToBlock } from "../api/nodeConversions/nodeToBlock.js";
|
|
@@ -90,7 +96,7 @@ export type BlockNoteEditorOptions<
|
|
|
90
96
|
/**
|
|
91
97
|
* A dictionary object containing translations for the editor.
|
|
92
98
|
*/
|
|
93
|
-
dictionary?: Dictionary
|
|
99
|
+
dictionary?: Dictionary & Record<string, any>;
|
|
94
100
|
|
|
95
101
|
/**
|
|
96
102
|
* @deprecated, provide placeholders via dictionary instead
|
|
@@ -190,6 +196,8 @@ export type BlockNoteEditorOptions<
|
|
|
190
196
|
* (note that the id is always set on the `data-id` attribute)
|
|
191
197
|
*/
|
|
192
198
|
setIdAttribute?: boolean;
|
|
199
|
+
|
|
200
|
+
dropCursor?: (opts: any) => Plugin;
|
|
193
201
|
};
|
|
194
202
|
|
|
195
203
|
const blockNoteTipTapOptions = {
|
|
@@ -236,7 +244,7 @@ export class BlockNoteEditor<
|
|
|
236
244
|
/**
|
|
237
245
|
* The dictionary contains translations for the editor.
|
|
238
246
|
*/
|
|
239
|
-
public readonly dictionary: Dictionary
|
|
247
|
+
public readonly dictionary: Dictionary & Record<string, any>;
|
|
240
248
|
|
|
241
249
|
/**
|
|
242
250
|
* The schema of the editor. The schema defines which Blocks, InlineContent, and Styles are available in the editor.
|
|
@@ -369,6 +377,7 @@ export class BlockNoteEditor<
|
|
|
369
377
|
setIdAttribute: newOptions.setIdAttribute,
|
|
370
378
|
});
|
|
371
379
|
|
|
380
|
+
const dropCursorPlugin: any = this.options.dropCursor ?? dropCursor;
|
|
372
381
|
const blockNoteUIExtension = Extension.create({
|
|
373
382
|
name: "BlockNoteUIExtension",
|
|
374
383
|
|
|
@@ -380,6 +389,7 @@ export class BlockNoteEditor<
|
|
|
380
389
|
this.suggestionMenus.plugin,
|
|
381
390
|
...(this.filePanel ? [this.filePanel.plugin] : []),
|
|
382
391
|
...(this.tableHandles ? [this.tableHandles.plugin] : []),
|
|
392
|
+
dropCursorPlugin({ width: 5, color: "#ddeeff", editor: this }),
|
|
383
393
|
PlaceholderPlugin(this, newOptions.placeholders),
|
|
384
394
|
NodeSelectionKeyboardPlugin(),
|
|
385
395
|
...(this.options.animations ?? true
|
|
@@ -962,41 +972,28 @@ export class BlockNoteEditor<
|
|
|
962
972
|
* Checks if the block containing the text cursor can be nested.
|
|
963
973
|
*/
|
|
964
974
|
public canNestBlock() {
|
|
965
|
-
|
|
966
|
-
this._tiptapEditor.state
|
|
967
|
-
);
|
|
968
|
-
|
|
969
|
-
return (
|
|
970
|
-
this._tiptapEditor.state.doc.resolve(blockContainer.beforePos)
|
|
971
|
-
.nodeBefore !== null
|
|
972
|
-
);
|
|
975
|
+
return canNestBlock(this);
|
|
973
976
|
}
|
|
974
977
|
|
|
975
978
|
/**
|
|
976
979
|
* Nests the block containing the text cursor into the block above it.
|
|
977
980
|
*/
|
|
978
981
|
public nestBlock() {
|
|
979
|
-
this
|
|
982
|
+
nestBlock(this);
|
|
980
983
|
}
|
|
981
984
|
|
|
982
985
|
/**
|
|
983
986
|
* Checks if the block containing the text cursor is nested.
|
|
984
987
|
*/
|
|
985
988
|
public canUnnestBlock() {
|
|
986
|
-
|
|
987
|
-
this._tiptapEditor.state
|
|
988
|
-
);
|
|
989
|
-
|
|
990
|
-
return (
|
|
991
|
-
this._tiptapEditor.state.doc.resolve(blockContainer.beforePos).depth > 1
|
|
992
|
-
);
|
|
989
|
+
return canUnnestBlock(this);
|
|
993
990
|
}
|
|
994
991
|
|
|
995
992
|
/**
|
|
996
993
|
* Lifts the block containing the text cursor out of its parent.
|
|
997
994
|
*/
|
|
998
995
|
public unnestBlock() {
|
|
999
|
-
this
|
|
996
|
+
unnestBlock(this);
|
|
1000
997
|
}
|
|
1001
998
|
|
|
1002
999
|
/**
|
|
@@ -4,7 +4,6 @@ import type { BlockNoteEditor } from "./BlockNoteEditor.js";
|
|
|
4
4
|
|
|
5
5
|
import Collaboration from "@tiptap/extension-collaboration";
|
|
6
6
|
import CollaborationCursor from "@tiptap/extension-collaboration-cursor";
|
|
7
|
-
import { Dropcursor } from "@tiptap/extension-dropcursor";
|
|
8
7
|
import { Gapcursor } from "@tiptap/extension-gapcursor";
|
|
9
8
|
import { HardBreak } from "@tiptap/extension-hard-break";
|
|
10
9
|
import { History } from "@tiptap/extension-history";
|
|
@@ -70,7 +69,8 @@ export const getBlockNoteExtensions = <
|
|
|
70
69
|
|
|
71
70
|
// DropCursor,
|
|
72
71
|
UniqueID.configure({
|
|
73
|
-
|
|
72
|
+
// everything from bnBlock group (nodes that represent a BlockNote block should have an id)
|
|
73
|
+
types: ["blockContainer", "columnList", "column"],
|
|
74
74
|
setIdAttribute: opts.setIdAttribute,
|
|
75
75
|
}),
|
|
76
76
|
HardBreak.extend({ priority: 10 }),
|
|
@@ -155,7 +155,6 @@ export const getBlockNoteExtensions = <
|
|
|
155
155
|
createPasteFromClipboardExtension(opts.editor),
|
|
156
156
|
createDropFileExtension(opts.editor),
|
|
157
157
|
|
|
158
|
-
Dropcursor.configure({ width: 5, color: "#ddeeff" }),
|
|
159
158
|
// This needs to be at the bottom of this list, because Key events (such as enter, when selecting a /command),
|
|
160
159
|
// should be handled before Enter handlers in other components like splitListItem
|
|
161
160
|
...(opts.trailingBlock === undefined || opts.trailingBlock
|
|
@@ -24,7 +24,7 @@ export type BlockNoteTipTapEditorOptions = Partial<
|
|
|
24
24
|
// @ts-ignore
|
|
25
25
|
export class BlockNoteTipTapEditor extends TiptapEditor {
|
|
26
26
|
private _state: EditorState;
|
|
27
|
-
|
|
27
|
+
private _creating = false;
|
|
28
28
|
public static create = (
|
|
29
29
|
options: BlockNoteTipTapEditorOptions,
|
|
30
30
|
styleSchema: StyleSchema
|
|
@@ -151,8 +151,12 @@ export class BlockNoteTipTapEditor extends TiptapEditor {
|
|
|
151
151
|
* Replace the default `createView` method with a custom one - which we call on mount
|
|
152
152
|
*/
|
|
153
153
|
private createViewAlternative() {
|
|
154
|
+
this._creating = true;
|
|
154
155
|
// Without queueMicrotask, custom IC / styles will give a React FlushSync error
|
|
155
156
|
queueMicrotask(() => {
|
|
157
|
+
if (!this._creating) {
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
156
160
|
this.view = new EditorView(
|
|
157
161
|
{ mount: this.options.element as any }, // use mount option so that we reuse the existing element instead of creating a new one
|
|
158
162
|
{
|
|
@@ -178,6 +182,7 @@ export class BlockNoteTipTapEditor extends TiptapEditor {
|
|
|
178
182
|
this.commands.focus(this.options.autofocus);
|
|
179
183
|
this.emit("create", { editor: this });
|
|
180
184
|
this.isInitialized = true;
|
|
185
|
+
this._creating = false;
|
|
181
186
|
});
|
|
182
187
|
}
|
|
183
188
|
|
|
@@ -189,6 +194,8 @@ export class BlockNoteTipTapEditor extends TiptapEditor {
|
|
|
189
194
|
public mount = (element?: HTMLElement | null) => {
|
|
190
195
|
if (!element) {
|
|
191
196
|
this.destroy();
|
|
197
|
+
// cancel pending microtask
|
|
198
|
+
this._creating = false;
|
|
192
199
|
} else {
|
|
193
200
|
this.options.element = element;
|
|
194
201
|
// @ts-ignore
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
export const COLORS_DEFAULT = {
|
|
2
|
+
gray: {
|
|
3
|
+
text: "#9b9a97",
|
|
4
|
+
background: "#ebeced",
|
|
5
|
+
},
|
|
6
|
+
brown: {
|
|
7
|
+
text: "#64473a",
|
|
8
|
+
background: "#e9e5e3",
|
|
9
|
+
},
|
|
10
|
+
red: {
|
|
11
|
+
text: "#e03e3e",
|
|
12
|
+
background: "#fbe4e4",
|
|
13
|
+
},
|
|
14
|
+
orange: {
|
|
15
|
+
text: "#d9730d",
|
|
16
|
+
background: "#f6e9d9",
|
|
17
|
+
},
|
|
18
|
+
yellow: {
|
|
19
|
+
text: "#dfab01",
|
|
20
|
+
background: "#fbf3db",
|
|
21
|
+
},
|
|
22
|
+
green: {
|
|
23
|
+
text: "#4d6461",
|
|
24
|
+
background: "#ddedea",
|
|
25
|
+
},
|
|
26
|
+
blue: {
|
|
27
|
+
text: "#0b6e99",
|
|
28
|
+
background: "#ddebf1",
|
|
29
|
+
},
|
|
30
|
+
purple: {
|
|
31
|
+
text: "#6940a5",
|
|
32
|
+
background: "#eae4f2",
|
|
33
|
+
},
|
|
34
|
+
pink: {
|
|
35
|
+
text: "#ad1a72",
|
|
36
|
+
background: "#f4dfeb",
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
export const COLORS_DARK_MODE_DEFAULT = {
|
|
41
|
+
gray: {
|
|
42
|
+
text: "#bebdb8",
|
|
43
|
+
background: "#9b9a97",
|
|
44
|
+
},
|
|
45
|
+
brown: {
|
|
46
|
+
text: "#8e6552",
|
|
47
|
+
background: "#64473a",
|
|
48
|
+
},
|
|
49
|
+
red: {
|
|
50
|
+
text: "#ec4040",
|
|
51
|
+
background: "#be3434",
|
|
52
|
+
},
|
|
53
|
+
orange: {
|
|
54
|
+
text: "#e3790d",
|
|
55
|
+
background: "#b7600a",
|
|
56
|
+
},
|
|
57
|
+
yellow: {
|
|
58
|
+
text: "#dfab01",
|
|
59
|
+
background: "#b58b00",
|
|
60
|
+
},
|
|
61
|
+
green: {
|
|
62
|
+
text: "#6b8b87",
|
|
63
|
+
background: "#4d6461",
|
|
64
|
+
},
|
|
65
|
+
blue: {
|
|
66
|
+
text: "#0e87bc",
|
|
67
|
+
background: "#0b6e99",
|
|
68
|
+
},
|
|
69
|
+
purple: {
|
|
70
|
+
text: "#8552d7",
|
|
71
|
+
background: "#6940a5",
|
|
72
|
+
},
|
|
73
|
+
pink: {
|
|
74
|
+
text: "#da208f",
|
|
75
|
+
background: "#ad1a72",
|
|
76
|
+
},
|
|
77
|
+
};
|
package/src/editor/editor.css
CHANGED
|
@@ -151,3 +151,13 @@ Tippy popups that are appended to document.body directly
|
|
|
151
151
|
/* if there's no explicit width set and the column is not being resized, set a default width */
|
|
152
152
|
min-width: var(--default-cell-min-width) !important;
|
|
153
153
|
}
|
|
154
|
+
|
|
155
|
+
.prosemirror-dropcursor-block {
|
|
156
|
+
transition-property: top, bottom;
|
|
157
|
+
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
|
158
|
+
transition-duration: 0.15s;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
.prosemirror-dropcursor-vertical {
|
|
162
|
+
transition-property: left, right;
|
|
163
|
+
}
|
|
@@ -32,7 +32,10 @@ export function wrapTableRows(f: Fragment, schema: Schema) {
|
|
|
32
32
|
newItems[newItems.length - 1] = newTable;
|
|
33
33
|
} else {
|
|
34
34
|
// create new table to wrap tableRow with
|
|
35
|
-
const newTable = schema.nodes.table.
|
|
35
|
+
const newTable = schema.nodes.table.createChecked(
|
|
36
|
+
undefined,
|
|
37
|
+
f.child(i)
|
|
38
|
+
);
|
|
36
39
|
newItems.push(newTable);
|
|
37
40
|
}
|
|
38
41
|
} else {
|
|
@@ -64,7 +67,7 @@ export function transformPasted(slice: Slice, view: EditorView) {
|
|
|
64
67
|
// (if we remove this if-block, the nesting bug will be fixed, but lists won't be nested correctly)
|
|
65
68
|
if (
|
|
66
69
|
i + 1 < f.childCount &&
|
|
67
|
-
f.child(i + 1).type.
|
|
70
|
+
f.child(i + 1).type.name === "blockGroup" // TODO
|
|
68
71
|
) {
|
|
69
72
|
const nestedChild = f
|
|
70
73
|
.child(i + 1)
|
|
@@ -80,7 +83,7 @@ export function transformPasted(slice: Slice, view: EditorView) {
|
|
|
80
83
|
f = removeChild(f, i + 1);
|
|
81
84
|
}
|
|
82
85
|
}
|
|
83
|
-
const container = view.state.schema.nodes.blockContainer.
|
|
86
|
+
const container = view.state.schema.nodes.blockContainer.createChecked(
|
|
84
87
|
undefined,
|
|
85
88
|
content
|
|
86
89
|
);
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { BlockNoteSchema } from "../editor/BlockNoteSchema.js";
|
|
2
|
+
import { COLORS_DEFAULT } from "../editor/defaultColors.js";
|
|
3
|
+
import {
|
|
4
|
+
BlockFromConfig,
|
|
5
|
+
BlockSchema,
|
|
6
|
+
InlineContent,
|
|
7
|
+
InlineContentSchema,
|
|
8
|
+
StyleSchema,
|
|
9
|
+
StyledText,
|
|
10
|
+
Styles,
|
|
11
|
+
} from "../schema/index.js";
|
|
12
|
+
|
|
13
|
+
import type {
|
|
14
|
+
BlockMapping,
|
|
15
|
+
InlineContentMapping,
|
|
16
|
+
StyleMapping,
|
|
17
|
+
} from "./mapping.js";
|
|
18
|
+
|
|
19
|
+
export type ExporterOptions = {
|
|
20
|
+
/**
|
|
21
|
+
* A function that can be used to resolve files, images, etc.
|
|
22
|
+
* Exporters might need the binary contents of files like images,
|
|
23
|
+
* which might not always be available from the same origin as the main page.
|
|
24
|
+
* You can use this option to proxy requests through a server you control
|
|
25
|
+
* to avoid cross-origin (CORS) issues.
|
|
26
|
+
*
|
|
27
|
+
* @default uses a BlockNote hosted proxy (https://corsproxy.api.blocknotejs.org/)
|
|
28
|
+
* @param url - The URL of the file to resolve
|
|
29
|
+
* @returns A Promise that resolves to a string (the URL to use instead of the original)
|
|
30
|
+
* or a Blob (you can return the Blob directly if you have already fetched it)
|
|
31
|
+
*/
|
|
32
|
+
resolveFileUrl?: (url: string) => Promise<string | Blob>;
|
|
33
|
+
/**
|
|
34
|
+
* Colors to use for background of blocks, font colors, and highlight colors
|
|
35
|
+
*/
|
|
36
|
+
colors: typeof COLORS_DEFAULT;
|
|
37
|
+
};
|
|
38
|
+
export abstract class Exporter<
|
|
39
|
+
B extends BlockSchema,
|
|
40
|
+
I extends InlineContentSchema,
|
|
41
|
+
S extends StyleSchema,
|
|
42
|
+
RB,
|
|
43
|
+
RI,
|
|
44
|
+
RS,
|
|
45
|
+
TS
|
|
46
|
+
> {
|
|
47
|
+
public constructor(
|
|
48
|
+
_schema: BlockNoteSchema<B, I, S>, // only used for type inference
|
|
49
|
+
protected readonly mappings: {
|
|
50
|
+
blockMapping: BlockMapping<B, I, S, RB, RI>;
|
|
51
|
+
inlineContentMapping: InlineContentMapping<I, S, RI, TS>;
|
|
52
|
+
styleMapping: StyleMapping<S, RS>;
|
|
53
|
+
},
|
|
54
|
+
public readonly options: ExporterOptions
|
|
55
|
+
) {}
|
|
56
|
+
|
|
57
|
+
public async resolveFile(url: string) {
|
|
58
|
+
if (!this.options?.resolveFileUrl) {
|
|
59
|
+
return (await fetch(url)).blob();
|
|
60
|
+
}
|
|
61
|
+
const ret = await this.options.resolveFileUrl(url);
|
|
62
|
+
if (ret instanceof Blob) {
|
|
63
|
+
return ret;
|
|
64
|
+
}
|
|
65
|
+
return (await fetch(ret)).blob();
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
public mapStyles(styles: Styles<S>) {
|
|
69
|
+
const stylesArray = Object.entries(styles).map(([key, value]) => {
|
|
70
|
+
const mappedStyle = this.mappings.styleMapping[key](value, this);
|
|
71
|
+
return mappedStyle;
|
|
72
|
+
});
|
|
73
|
+
return stylesArray;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
public mapInlineContent(inlineContent: InlineContent<I, S>) {
|
|
77
|
+
return this.mappings.inlineContentMapping[inlineContent.type](
|
|
78
|
+
inlineContent,
|
|
79
|
+
this
|
|
80
|
+
);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
public transformInlineContent(inlineContentArray: InlineContent<I, S>[]) {
|
|
84
|
+
return inlineContentArray.map((ic) => this.mapInlineContent(ic));
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
public abstract transformStyledText(styledText: StyledText<S>): TS;
|
|
88
|
+
|
|
89
|
+
public async mapBlock(
|
|
90
|
+
block: BlockFromConfig<B[keyof B], I, S>,
|
|
91
|
+
nestingLevel: number,
|
|
92
|
+
numberedListIndex: number
|
|
93
|
+
) {
|
|
94
|
+
return this.mappings.blockMapping[block.type](
|
|
95
|
+
block,
|
|
96
|
+
this,
|
|
97
|
+
nestingLevel,
|
|
98
|
+
numberedListIndex
|
|
99
|
+
);
|
|
100
|
+
}
|
|
101
|
+
}
|