@blocknote/core 0.9.6 → 0.10.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 +3697 -2609
- package/dist/blocknote.js.map +1 -1
- package/dist/blocknote.umd.cjs +7 -7
- package/dist/blocknote.umd.cjs.map +1 -1
- package/dist/style.css +1 -1
- package/dist/webpack-stats.json +1 -0
- package/package.json +8 -4
- package/src/api/README.md +8 -0
- package/src/api/blockManipulation/blockManipulation.test.ts +72 -10
- package/src/api/blockManipulation/blockManipulation.ts +38 -18
- package/src/api/exporters/copyExtension.ts +68 -0
- package/src/api/exporters/html/__snapshots__/complex/misc/external.html +1 -0
- package/src/api/exporters/html/__snapshots__/complex/misc/internal.html +1 -0
- package/src/api/exporters/html/__snapshots__/customParagraph/basic/external.html +1 -0
- package/src/api/exporters/html/__snapshots__/customParagraph/basic/internal.html +1 -0
- package/src/api/exporters/html/__snapshots__/customParagraph/nested/external.html +1 -0
- package/src/api/exporters/html/__snapshots__/customParagraph/nested/internal.html +1 -0
- package/src/api/exporters/html/__snapshots__/customParagraph/styled/external.html +1 -0
- package/src/api/exporters/html/__snapshots__/customParagraph/styled/internal.html +1 -0
- package/src/api/exporters/html/__snapshots__/fontSize/basic/external.html +1 -0
- package/src/api/exporters/html/__snapshots__/fontSize/basic/internal.html +1 -0
- package/src/api/exporters/html/__snapshots__/hardbreak/basic/external.html +1 -0
- package/src/api/exporters/html/__snapshots__/hardbreak/basic/internal.html +1 -0
- package/src/api/exporters/html/__snapshots__/hardbreak/between-links/external.html +1 -0
- package/src/api/exporters/html/__snapshots__/hardbreak/between-links/internal.html +1 -0
- package/src/api/exporters/html/__snapshots__/hardbreak/end/external.html +1 -0
- package/src/api/exporters/html/__snapshots__/hardbreak/end/internal.html +1 -0
- package/src/api/exporters/html/__snapshots__/hardbreak/link/external.html +1 -0
- package/src/api/exporters/html/__snapshots__/hardbreak/link/internal.html +1 -0
- package/src/api/exporters/html/__snapshots__/hardbreak/multiple/external.html +1 -0
- package/src/api/exporters/html/__snapshots__/hardbreak/multiple/internal.html +1 -0
- package/src/api/exporters/html/__snapshots__/hardbreak/only/external.html +1 -0
- package/src/api/exporters/html/__snapshots__/hardbreak/only/internal.html +1 -0
- package/src/api/exporters/html/__snapshots__/hardbreak/start/external.html +1 -0
- package/src/api/exporters/html/__snapshots__/hardbreak/start/internal.html +1 -0
- package/src/api/exporters/html/__snapshots__/hardbreak/styles/external.html +1 -0
- package/src/api/exporters/html/__snapshots__/hardbreak/styles/internal.html +1 -0
- package/src/api/exporters/html/__snapshots__/image/basic/external.html +1 -0
- package/src/api/exporters/html/__snapshots__/image/basic/internal.html +1 -0
- package/src/api/exporters/html/__snapshots__/image/button/external.html +1 -0
- package/src/api/exporters/html/__snapshots__/image/button/internal.html +1 -0
- package/src/api/exporters/html/__snapshots__/image/nested/external.html +1 -0
- package/src/api/exporters/html/__snapshots__/image/nested/internal.html +1 -0
- package/src/api/exporters/html/__snapshots__/link/adjacent/external.html +1 -0
- package/src/api/exporters/html/__snapshots__/link/adjacent/internal.html +1 -0
- package/src/api/exporters/html/__snapshots__/link/basic/external.html +1 -0
- package/src/api/exporters/html/__snapshots__/link/basic/internal.html +1 -0
- package/src/api/exporters/html/__snapshots__/link/styled/external.html +1 -0
- package/src/api/exporters/html/__snapshots__/link/styled/internal.html +1 -0
- package/src/api/exporters/html/__snapshots__/mention/basic/external.html +1 -0
- package/src/api/exporters/html/__snapshots__/mention/basic/internal.html +1 -0
- package/src/api/exporters/html/__snapshots__/paragraph/basic/external.html +1 -0
- package/src/api/exporters/html/__snapshots__/paragraph/basic/internal.html +1 -0
- package/src/api/exporters/html/__snapshots__/paragraph/empty/external.html +1 -0
- package/src/api/exporters/html/__snapshots__/paragraph/empty/internal.html +1 -0
- package/src/api/exporters/html/__snapshots__/paragraph/nested/external.html +1 -0
- package/src/api/exporters/html/__snapshots__/paragraph/nested/internal.html +1 -0
- package/src/api/exporters/html/__snapshots__/paragraph/styled/external.html +1 -0
- package/src/api/exporters/html/__snapshots__/paragraph/styled/internal.html +1 -0
- package/src/api/exporters/html/__snapshots__/paste/parse-basic-block-types.json +140 -0
- package/src/api/exporters/html/__snapshots__/paste/parse-deep-nested-content.json +240 -0
- package/src/api/exporters/html/__snapshots__/paste/parse-div-with-inline-content.json +91 -0
- package/src/api/exporters/html/__snapshots__/paste/parse-divs.json +19 -0
- package/src/api/exporters/html/__snapshots__/paste/parse-fake-image-caption.json +31 -0
- package/src/api/exporters/html/__snapshots__/paste/parse-mixed-nested-lists.json +70 -0
- package/src/api/exporters/html/__snapshots__/paste/parse-nested-lists-with-paragraphs.json +70 -0
- package/src/api/exporters/html/__snapshots__/paste/parse-nested-lists.json +70 -0
- package/src/api/exporters/html/__snapshots__/simpleCustomParagraph/basic/external.html +1 -0
- package/src/api/exporters/html/__snapshots__/simpleCustomParagraph/basic/internal.html +1 -0
- package/src/api/exporters/html/__snapshots__/simpleCustomParagraph/nested/external.html +1 -0
- package/src/api/exporters/html/__snapshots__/simpleCustomParagraph/nested/internal.html +1 -0
- package/src/api/exporters/html/__snapshots__/simpleCustomParagraph/styled/external.html +1 -0
- package/src/api/exporters/html/__snapshots__/simpleCustomParagraph/styled/internal.html +1 -0
- package/src/api/exporters/html/__snapshots__/simpleImage/basic/external.html +1 -0
- package/src/api/exporters/html/__snapshots__/simpleImage/basic/internal.html +1 -0
- package/src/api/exporters/html/__snapshots__/simpleImage/button/external.html +1 -0
- package/src/api/exporters/html/__snapshots__/simpleImage/button/internal.html +1 -0
- package/src/api/exporters/html/__snapshots__/simpleImage/nested/external.html +1 -0
- package/src/api/exporters/html/__snapshots__/simpleImage/nested/internal.html +1 -0
- package/src/api/exporters/html/__snapshots__/small/basic/external.html +1 -0
- package/src/api/exporters/html/__snapshots__/small/basic/internal.html +1 -0
- package/src/api/exporters/html/__snapshots__/tag/basic/external.html +1 -0
- package/src/api/exporters/html/__snapshots__/tag/basic/internal.html +1 -0
- package/src/api/exporters/html/externalHTMLExporter.ts +98 -0
- package/src/api/exporters/html/htmlConversion.test.ts +100 -0
- package/src/api/exporters/html/internalHTMLSerializer.ts +80 -0
- package/src/api/exporters/html/util/sharedHTMLConversion.ts +128 -0
- package/src/api/{formatConversions → exporters/html/util}/simplifyBlocksRehypePlugin.ts +13 -0
- package/src/api/exporters/markdown/__snapshots__/complex/misc/markdown.md +5 -0
- package/src/api/exporters/markdown/__snapshots__/customParagraph/basic/markdown.md +1 -0
- package/src/api/exporters/markdown/__snapshots__/customParagraph/nested/markdown.md +5 -0
- package/src/api/exporters/markdown/__snapshots__/customParagraph/styled/markdown.md +1 -0
- package/src/api/exporters/markdown/__snapshots__/fontSize/basic/markdown.md +1 -0
- package/src/api/exporters/markdown/__snapshots__/hardbreak/basic/markdown.md +2 -0
- package/src/api/exporters/markdown/__snapshots__/hardbreak/between-links/markdown.md +2 -0
- package/src/api/exporters/markdown/__snapshots__/hardbreak/end/markdown.md +1 -0
- package/src/api/exporters/markdown/__snapshots__/hardbreak/link/markdown.md +2 -0
- package/src/api/exporters/markdown/__snapshots__/hardbreak/multiple/markdown.md +3 -0
- package/src/api/exporters/markdown/__snapshots__/hardbreak/start/markdown.md +1 -0
- package/src/api/exporters/markdown/__snapshots__/hardbreak/styles/markdown.md +2 -0
- package/src/api/exporters/markdown/__snapshots__/image/basic/markdown.md +3 -0
- package/src/api/exporters/markdown/__snapshots__/image/button/markdown.md +1 -0
- package/src/api/exporters/markdown/__snapshots__/image/nested/markdown.md +7 -0
- package/src/api/exporters/markdown/__snapshots__/link/adjacent/markdown.md +1 -0
- package/src/api/exporters/markdown/__snapshots__/link/basic/markdown.md +1 -0
- package/src/api/exporters/markdown/__snapshots__/link/styled/markdown.md +1 -0
- package/src/api/exporters/markdown/__snapshots__/mention/basic/markdown.md +1 -0
- package/src/api/exporters/markdown/__snapshots__/paragraph/basic/markdown.md +1 -0
- package/src/api/exporters/markdown/__snapshots__/paragraph/empty/markdown.md +0 -0
- package/src/api/exporters/markdown/__snapshots__/paragraph/nested/markdown.md +5 -0
- package/src/api/exporters/markdown/__snapshots__/paragraph/styled/markdown.md +1 -0
- package/src/api/exporters/markdown/__snapshots__/simpleCustomParagraph/basic/markdown.md +1 -0
- package/src/api/exporters/markdown/__snapshots__/simpleCustomParagraph/nested/markdown.md +5 -0
- package/src/api/exporters/markdown/__snapshots__/simpleCustomParagraph/styled/markdown.md +1 -0
- package/src/api/exporters/markdown/__snapshots__/simpleImage/basic/markdown.md +1 -0
- package/src/api/exporters/markdown/__snapshots__/simpleImage/button/markdown.md +1 -0
- package/src/api/exporters/markdown/__snapshots__/simpleImage/nested/markdown.md +3 -0
- package/src/api/exporters/markdown/__snapshots__/small/basic/markdown.md +1 -0
- package/src/api/exporters/markdown/__snapshots__/tag/basic/markdown.md +1 -0
- package/src/api/exporters/markdown/markdownExporter.test.ts +85 -0
- package/src/api/exporters/markdown/markdownExporter.ts +42 -0
- package/src/api/nodeConversions/__snapshots__/nodeConversions.test.ts.snap +486 -125
- package/src/api/nodeConversions/nodeConversions.test.ts +67 -498
- package/src/api/nodeConversions/nodeConversions.ts +311 -85
- package/src/api/parsers/html/__snapshots__/paste/list-test.json +105 -0
- package/src/api/parsers/html/__snapshots__/paste/parse-basic-block-types.json +140 -0
- package/src/api/parsers/html/__snapshots__/paste/parse-deep-nested-content.json +240 -0
- package/src/api/parsers/html/__snapshots__/paste/parse-div-with-inline-content.json +91 -0
- package/src/api/parsers/html/__snapshots__/paste/parse-divs.json +121 -0
- package/src/api/parsers/html/__snapshots__/paste/parse-fake-image-caption.json +31 -0
- package/src/api/parsers/html/__snapshots__/paste/parse-google-docs-html.json +476 -0
- package/src/api/parsers/html/__snapshots__/paste/parse-mixed-nested-lists.json +140 -0
- package/src/api/parsers/html/__snapshots__/paste/parse-nested-lists-with-paragraphs.json +140 -0
- package/src/api/parsers/html/__snapshots__/paste/parse-nested-lists.json +157 -0
- package/src/api/parsers/html/__snapshots__/paste/parse-notion-html.json +470 -0
- package/src/api/parsers/html/__snapshots__/paste/parse-two-divs.json +36 -0
- package/src/api/parsers/html/parseHTML.test.ts +440 -0
- package/src/api/parsers/html/parseHTML.ts +42 -0
- package/src/api/parsers/html/util/__snapshots__/nestedLists.test.ts.snap +129 -0
- package/src/api/parsers/html/util/nestedLists.test.ts +176 -0
- package/src/api/parsers/html/util/nestedLists.ts +113 -0
- package/src/api/parsers/markdown/__snapshots__/complex.json +353 -0
- package/src/api/parsers/markdown/__snapshots__/issue-226-1.json +71 -0
- package/src/api/parsers/markdown/__snapshots__/issue-226-2.json +144 -0
- package/src/api/parsers/markdown/__snapshots__/nested.json +72 -0
- package/src/api/parsers/markdown/__snapshots__/non-nested.json +71 -0
- package/src/api/parsers/markdown/__snapshots__/styled.json +58 -0
- package/src/api/parsers/markdown/parseMarkdown.test.ts +114 -0
- package/src/api/parsers/markdown/parseMarkdown.ts +84 -0
- package/src/api/parsers/pasteExtension.ts +59 -0
- package/src/api/testUtil/cases/customBlocks.ts +282 -0
- package/src/api/testUtil/cases/customInlineContent.ts +114 -0
- package/src/api/testUtil/cases/customStyles.ts +100 -0
- package/src/api/testUtil/cases/defaultSchema.ts +399 -0
- package/src/api/testUtil/index.ts +17 -0
- package/src/api/testUtil/partialBlockTestUtil.ts +127 -0
- package/src/blocks/HeadingBlockContent/HeadingBlockContent.ts +136 -0
- package/src/{extensions/Blocks/nodes/BlockContent → blocks}/ImageBlockContent/ImageBlockContent.ts +87 -31
- package/src/{extensions/Blocks/nodes/BlockContent → blocks}/ListItemBlockContent/BulletListItemBlockContent/BulletListItemBlockContent.ts +34 -47
- package/src/{extensions/Blocks/nodes/BlockContent → blocks}/ListItemBlockContent/ListItemKeyboardShortcuts.ts +1 -1
- package/src/{extensions/Blocks/nodes/BlockContent → blocks}/ListItemBlockContent/NumberedListItemBlockContent/NumberedListIndexingPlugin.ts +1 -1
- package/src/{extensions/Blocks/nodes/BlockContent → blocks}/ListItemBlockContent/NumberedListItemBlockContent/NumberedListItemBlockContent.ts +34 -56
- package/src/blocks/ParagraphBlockContent/ParagraphBlockContent.ts +43 -0
- package/src/blocks/README.md +3 -0
- package/src/blocks/TableBlockContent/TableBlockContent.ts +74 -0
- package/src/blocks/TableBlockContent/TableExtension.ts +63 -0
- package/src/blocks/defaultBlockHelpers.ts +95 -0
- package/src/blocks/defaultBlocks.ts +60 -0
- package/src/blocks/defaultProps.ts +24 -0
- package/src/{extensions/Blocks/nodes/Block.module.css → editor/Block.css} +69 -62
- package/src/{BlockNoteEditor.test.ts → editor/BlockNoteEditor.test.ts} +2 -2
- package/src/{BlockNoteEditor.ts → editor/BlockNoteEditor.ts} +364 -153
- package/src/{BlockNoteExtensions.ts → editor/BlockNoteExtensions.ts} +59 -40
- package/src/editor/README.md +3 -0
- package/src/editor/cursorPositionTypes.ts +16 -0
- package/src/{editor.module.css → editor/editor.css} +42 -15
- package/src/editor/selectionTypes.ts +14 -0
- package/src/editor/transformPasted.ts +58 -0
- package/src/extensions/BackgroundColor/BackgroundColorExtension.ts +1 -36
- package/src/extensions/BackgroundColor/BackgroundColorMark.ts +12 -27
- package/src/extensions/FormattingToolbar/FormattingToolbarPlugin.ts +16 -24
- package/src/extensions/HyperlinkToolbar/HyperlinkToolbarPlugin.ts +12 -10
- package/src/extensions/ImageToolbar/ImageToolbarPlugin.ts +35 -73
- package/src/extensions/Placeholder/PlaceholderExtension.ts +4 -4
- package/src/extensions/README.md +3 -0
- package/src/extensions/SideMenu/SideMenuPlugin.ts +66 -37
- package/src/extensions/SlashMenu/BaseSlashMenuItem.ts +7 -6
- package/src/extensions/SlashMenu/SlashMenuPlugin.ts +9 -7
- package/src/extensions/SlashMenu/defaultSlashMenuItems.ts +98 -35
- package/src/extensions/TableHandles/TableHandlesPlugin.ts +617 -0
- package/src/extensions/TextAlignment/TextAlignmentExtension.ts +3 -51
- package/src/extensions/TextColor/TextColorExtension.ts +1 -29
- package/src/extensions/TextColor/TextColorMark.ts +7 -27
- package/src/extensions/UniqueID/UniqueID.ts +28 -2
- package/src/extensions-shared/README.md +3 -0
- package/src/{shared/plugins → extensions-shared}/suggestion/SuggestionPlugin.ts +19 -13
- package/src/index.ts +21 -15
- package/src/{extensions/Blocks/nodes → pm-nodes}/BlockContainer.ts +161 -96
- package/src/pm-nodes/BlockGroup.ts +54 -0
- package/src/pm-nodes/Doc.ts +7 -0
- package/src/pm-nodes/README.md +42 -0
- package/src/pm-nodes/index.ts +3 -0
- package/src/schema/README.md +3 -0
- package/src/schema/blocks/createSpec.ts +220 -0
- package/src/schema/blocks/internal.ts +253 -0
- package/src/schema/blocks/types.ts +252 -0
- package/src/schema/index.ts +10 -0
- package/src/schema/inlineContent/createSpec.ts +119 -0
- package/src/schema/inlineContent/internal.ts +105 -0
- package/src/schema/inlineContent/types.ts +144 -0
- package/src/schema/propTypes.ts +32 -0
- package/src/schema/styles/createSpec.ts +85 -0
- package/src/schema/styles/internal.ts +96 -0
- package/src/schema/styles/types.ts +42 -0
- package/src/util/README.md +3 -0
- package/src/{shared/utils.ts → util/browser.ts} +4 -8
- package/src/util/string.ts +3 -0
- package/src/util/typescript.ts +5 -0
- package/types/src/BlockNoteEditor.d.ts +49 -36
- package/types/src/BlockNoteExtensions.d.ts +8 -3
- package/types/src/api/blockManipulation/blockManipulation.d.ts +5 -4
- package/types/src/api/exporters/copyExtension.d.ts +6 -0
- package/types/src/api/exporters/html/externalHTMLExporter.d.ts +8 -0
- package/types/src/api/exporters/html/internalHTMLSerializer.d.ts +8 -0
- package/types/src/api/exporters/html/util/sharedHTMLConversion.d.ts +7 -0
- package/types/src/api/exporters/markdown/markdownExporter.d.ts +5 -0
- package/types/src/api/exporters/markdown/markdownExporter.test.d.ts +1 -0
- package/types/src/api/getBlockInfoFromPos.d.ts +27 -0
- package/types/src/api/nodeConversions/nodeConversions.d.ts +14 -6
- package/types/src/api/nodeConversions/testUtil.d.ts +7 -2
- package/types/src/api/nodeUtil.d.ts +8 -0
- package/types/src/api/parsers/html/parseHTML.d.ts +3 -0
- package/types/src/api/parsers/html/parseHTML.test.d.ts +1 -0
- package/types/src/api/parsers/html/util/nestedLists.d.ts +1 -0
- package/types/src/api/parsers/html/util/nestedLists.test.d.ts +1 -0
- package/types/src/api/parsers/markdown/parseMarkdown.d.ts +3 -0
- package/types/src/api/parsers/markdown/parseMarkdown.test.d.ts +1 -0
- package/types/src/api/parsers/pasteExtension.d.ts +6 -0
- package/types/src/api/testCases/cases/customBlocks.d.ts +345 -0
- package/types/src/api/testCases/cases/customInlineContent.d.ts +29 -0
- package/types/src/api/testCases/cases/customStyles.d.ts +64 -0
- package/types/src/api/testCases/cases/defaultSchema.d.ts +3 -0
- package/types/src/api/testCases/index.d.ts +12 -0
- package/types/src/api/testUtil/cases/customBlocks.d.ts +345 -0
- package/types/src/api/testUtil/cases/customInlineContent.d.ts +29 -0
- package/types/src/api/testUtil/cases/customStyles.d.ts +64 -0
- package/types/src/api/testUtil/cases/defaultSchema.d.ts +3 -0
- package/types/src/api/testUtil/index.d.ts +12 -0
- package/types/src/api/testUtil/partialBlockTestUtil.d.ts +7 -0
- package/types/src/blocks/HeadingBlockContent/HeadingBlockContent.d.ts +58 -0
- package/types/src/blocks/ImageBlockContent/ImageBlockContent.d.ts +93 -0
- package/types/src/blocks/ImageBlockContent/uploadToTmpFilesDotOrg_DEV_ONLY.d.ts +1 -0
- package/types/src/blocks/ListItemBlockContent/BulletListItemBlockContent/BulletListItemBlockContent.d.ts +46 -0
- package/types/src/blocks/ListItemBlockContent/ListItemKeyboardShortcuts.d.ts +2 -0
- package/types/src/blocks/ListItemBlockContent/NumberedListItemBlockContent/NumberedListIndexingPlugin.d.ts +2 -0
- package/types/src/blocks/ListItemBlockContent/NumberedListItemBlockContent/NumberedListItemBlockContent.d.ts +46 -0
- package/types/src/blocks/ParagraphBlockContent/ParagraphBlockContent.d.ts +52 -0
- package/types/src/blocks/TableBlockContent/TableBlockContent.d.ts +53 -0
- package/types/src/blocks/TableBlockContent/TableExtension.d.ts +2 -0
- package/types/src/blocks/defaultBlockHelpers.d.ts +10 -0
- package/types/src/blocks/defaultBlocks.d.ts +577 -0
- package/types/src/blocks/defaultProps.d.ts +15 -0
- package/types/src/editor/BlockNoteEditor.d.ts +299 -0
- package/types/src/editor/BlockNoteEditor.test.d.ts +1 -0
- package/types/src/editor/BlockNoteExtensions.d.ts +24 -0
- package/types/src/editor/cursorPositionTypes.d.ts +6 -0
- package/types/src/editor/selectionTypes.d.ts +4 -0
- package/types/src/editor/transformPasted.d.ts +12 -0
- package/types/src/extensions/BackgroundColor/BackgroundColorExtension.d.ts +0 -7
- package/types/src/extensions/BackgroundColor/BackgroundColorMark.d.ts +7 -9
- package/types/src/extensions/Blocks/api/blocks/createSpec.d.ts +35 -0
- package/types/src/extensions/Blocks/api/blocks/internal.d.ts +45 -0
- package/types/src/extensions/Blocks/api/blocks/types.d.ts +114 -0
- package/types/src/extensions/Blocks/api/cursorPositionTypes.d.ts +7 -5
- package/types/src/extensions/Blocks/api/defaultBlocks.d.ts +573 -113
- package/types/src/extensions/Blocks/api/defaultProps.d.ts +2 -1
- package/types/src/extensions/Blocks/api/inlineContent/createSpec.d.ts +21 -0
- package/types/src/extensions/Blocks/api/inlineContent/internal.d.ts +25 -0
- package/types/src/extensions/Blocks/api/inlineContent/types.d.ts +62 -0
- package/types/src/extensions/Blocks/api/selectionTypes.d.ts +5 -3
- package/types/src/extensions/Blocks/api/styles/createSpec.d.ts +13 -0
- package/types/src/extensions/Blocks/api/styles/internal.d.ts +22 -0
- package/types/src/extensions/Blocks/api/styles/types.d.ts +21 -0
- package/types/src/extensions/Blocks/nodes/BlockContainer.d.ts +8 -4
- package/types/src/extensions/Blocks/nodes/BlockContent/HeadingBlockContent/HeadingBlockContent.d.ts +38 -23
- package/types/src/extensions/Blocks/nodes/BlockContent/ImageBlockContent/ImageBlockContent.d.ts +75 -17
- package/types/src/extensions/Blocks/nodes/BlockContent/ListItemBlockContent/BulletListItemBlockContent/BulletListItemBlockContent.d.ts +30 -19
- package/types/src/extensions/Blocks/nodes/BlockContent/ListItemBlockContent/NumberedListItemBlockContent/NumberedListItemBlockContent.d.ts +30 -19
- package/types/src/extensions/Blocks/nodes/BlockContent/ParagraphBlockContent/ParagraphBlockContent.d.ts +36 -28
- package/types/src/extensions/Blocks/nodes/BlockContent/TableBlockContent/TableBlockContent.d.ts +53 -0
- package/types/src/extensions/Blocks/nodes/BlockContent/TableBlockContent/TableExtension.d.ts +2 -0
- package/types/src/extensions/Blocks/nodes/BlockContent/defaultBlockHelpers.d.ts +12 -0
- package/types/src/extensions/Blocks/nodes/BlockGroup.d.ts +1 -1
- package/types/src/extensions/FormattingToolbar/FormattingToolbarPlugin.d.ts +8 -6
- package/types/src/extensions/HyperlinkToolbar/HyperlinkToolbarPlugin.d.ts +6 -6
- package/types/src/extensions/ImageToolbar/ImageToolbarPlugin.d.ts +11 -16
- package/types/src/extensions/NonEditableBlocks/NonEditableBlockPlugin.d.ts +2 -0
- package/types/src/extensions/PreviousBlockType/PreviousBlockTypePlugin.d.ts +14 -0
- package/types/src/extensions/SideMenu/SideMenuPlugin.d.ts +18 -11
- package/types/src/extensions/SlashMenu/BaseSlashMenuItem.d.ts +5 -6
- package/types/src/extensions/SlashMenu/SlashMenuPlugin.d.ts +6 -6
- package/types/src/extensions/SlashMenu/defaultSlashMenuItems.d.ts +2 -1
- package/types/src/extensions/TableHandles/TableHandlesPlugin.d.ts +74 -0
- package/types/src/extensions/TextAlignment/TextAlignmentExtension.d.ts +0 -7
- package/types/src/extensions/TextColor/TextColorExtension.d.ts +0 -7
- package/types/src/extensions/TextColor/TextColorMark.d.ts +7 -9
- package/types/src/extensions/UniqueID/UniqueID.d.ts +1 -1
- package/types/src/extensions-shared/BaseUiElementTypes.d.ts +7 -0
- package/types/src/extensions-shared/suggestion/SuggestionItem.d.ts +3 -0
- package/types/src/extensions-shared/suggestion/SuggestionPlugin.d.ts +36 -0
- package/types/src/index.d.ts +20 -15
- package/types/src/pm-nodes/BlockContainer.d.ts +28 -0
- package/types/src/pm-nodes/BlockGroup.d.ts +10 -0
- package/types/src/pm-nodes/Doc.d.ts +2 -0
- package/types/src/pm-nodes/index.d.ts +3 -0
- package/types/src/schema/blocks/createSpec.d.ts +35 -0
- package/types/src/schema/blocks/internal.d.ts +45 -0
- package/types/src/schema/blocks/types.d.ts +107 -0
- package/types/src/schema/index.d.ts +10 -0
- package/types/src/schema/inlineContent/createSpec.d.ts +21 -0
- package/types/src/schema/inlineContent/internal.d.ts +28 -0
- package/types/src/schema/inlineContent/types.d.ts +62 -0
- package/types/src/schema/propTypes.d.ts +8 -0
- package/types/src/schema/styles/createSpec.d.ts +13 -0
- package/types/src/schema/styles/internal.d.ts +22 -0
- package/types/src/schema/styles/types.d.ts +21 -0
- package/types/src/shared/plugins/suggestion/SuggestionPlugin.d.ts +4 -2
- package/types/src/util/EventEmitter.d.ts +11 -0
- package/types/src/util/browser.d.ts +3 -0
- package/types/src/util/string.d.ts +1 -0
- package/types/src/util/typescript.d.ts +3 -0
- package/src/api/formatConversions/__snapshots__/formatConversions.test.ts.snap +0 -346
- package/src/api/formatConversions/formatConversions.test.ts +0 -753
- package/src/api/formatConversions/formatConversions.ts +0 -133
- package/src/api/nodeConversions/testUtil.ts +0 -65
- package/src/extensions/Blocks/api/block.ts +0 -307
- package/src/extensions/Blocks/api/blockTypes.ts +0 -249
- package/src/extensions/Blocks/api/cursorPositionTypes.ts +0 -7
- package/src/extensions/Blocks/api/defaultBlocks.ts +0 -16
- package/src/extensions/Blocks/api/defaultProps.ts +0 -16
- package/src/extensions/Blocks/api/inlineContentTypes.ts +0 -36
- package/src/extensions/Blocks/api/selectionTypes.ts +0 -5
- package/src/extensions/Blocks/api/serialization.ts +0 -29
- package/src/extensions/Blocks/helpers/findBlock.ts +0 -5
- package/src/extensions/Blocks/index.ts +0 -8
- package/src/extensions/Blocks/nodes/BlockAttributes.ts +0 -10
- package/src/extensions/Blocks/nodes/BlockContent/HeadingBlockContent/HeadingBlockContent.ts +0 -142
- package/src/extensions/Blocks/nodes/BlockContent/ParagraphBlockContent/ParagraphBlockContent.ts +0 -62
- package/src/extensions/Blocks/nodes/BlockGroup.ts +0 -53
- package/types/src/api/formatConversions/formatConversions.d.ts +0 -6
- package/types/src/extensions/Blocks/api/block.d.ts +0 -20
- package/types/src/extensions/Blocks/api/blockTypes.d.ts +0 -103
- package/types/src/extensions/Blocks/api/inlineContentTypes.d.ts +0 -30
- package/types/src/extensions/Blocks/api/serialization.d.ts +0 -2
- /package/src/{shared/EditorElement.ts → api/exporters/markdown/__snapshots__/hardbreak/only/markdown.md} +0 -0
- /package/src/api/{formatConversions → exporters/markdown}/removeUnderlinesRehypePlugin.ts +0 -0
- /package/src/{extensions/Blocks/helpers → api}/getBlockInfoFromPos.ts +0 -0
- /package/src/api/{util/nodeUtil.ts → nodeUtil.ts} +0 -0
- /package/src/{extensions/Blocks/nodes/BlockContent → blocks}/ImageBlockContent/uploadToTmpFilesDotOrg_DEV_ONLY.ts +0 -0
- /package/src/extensions/{Blocks → NonEditableBlocks}/NonEditableBlockPlugin.ts +0 -0
- /package/src/extensions/{Blocks → PreviousBlockType}/PreviousBlockTypePlugin.ts +0 -0
- /package/src/{shared → extensions-shared}/BaseUiElementTypes.ts +0 -0
- /package/src/{shared/plugins → extensions-shared}/suggestion/SuggestionItem.ts +0 -0
- /package/src/{shared → util}/EventEmitter.ts +0 -0
- /package/types/src/api/{formatConversions/formatConversions.test.d.ts → exporters/html/htmlConversion.test.d.ts} +0 -0
- /package/types/src/api/{formatConversions → exporters/html/util}/simplifyBlocksRehypePlugin.d.ts +0 -0
- /package/types/src/api/{formatConversions → exporters/markdown}/removeUnderlinesRehypePlugin.d.ts +0 -0
|
@@ -0,0 +1,440 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { BlockNoteEditor } from "../../..";
|
|
3
|
+
import { nestedListsToBlockNoteStructure } from "./util/nestedLists";
|
|
4
|
+
|
|
5
|
+
async function parseHTMLAndCompareSnapshots(
|
|
6
|
+
html: string,
|
|
7
|
+
snapshotName: string
|
|
8
|
+
) {
|
|
9
|
+
// use a dynamic import because we want to access
|
|
10
|
+
// __parseFromClipboard which is not exposed in types
|
|
11
|
+
const view: any = await import("prosemirror-view");
|
|
12
|
+
|
|
13
|
+
const editor = BlockNoteEditor.create();
|
|
14
|
+
const blocks = await editor.tryParseHTMLToBlocks(html);
|
|
15
|
+
|
|
16
|
+
const snapshotPath = "./__snapshots__/paste/" + snapshotName + ".json";
|
|
17
|
+
expect(JSON.stringify(blocks, undefined, 2)).toMatchFileSnapshot(
|
|
18
|
+
snapshotPath
|
|
19
|
+
);
|
|
20
|
+
|
|
21
|
+
// Now, we also want to test actually pasting in the editor, and not just calling
|
|
22
|
+
// tryParseHTMLToBlocks directly.
|
|
23
|
+
// The reason is that the prosemirror logic for pasting can be a bit different, because
|
|
24
|
+
// it's related to the context of where the user is pasting exactly (selection)
|
|
25
|
+
//
|
|
26
|
+
// The internal difference come that in tryParseHTMLToBlocks, we use DOMParser.parse,
|
|
27
|
+
// while when pasting, Prosemirror uses DOMParser.parseSlice, and then tries to fit the
|
|
28
|
+
// slice in the document. This fitting might change the structure / interpretation of the pasted blocks
|
|
29
|
+
|
|
30
|
+
// Simulate a paste event (this uses DOMParser.parseSlice internally)
|
|
31
|
+
|
|
32
|
+
(window as any).__TEST_OPTIONS.mockID = 0; // reset id counter
|
|
33
|
+
const htmlNode = nestedListsToBlockNoteStructure(html);
|
|
34
|
+
const tt = editor._tiptapEditor;
|
|
35
|
+
|
|
36
|
+
const slice = view.__parseFromClipboard(
|
|
37
|
+
tt.view,
|
|
38
|
+
"",
|
|
39
|
+
htmlNode.innerHTML,
|
|
40
|
+
false,
|
|
41
|
+
tt.view.state.selection.$from
|
|
42
|
+
);
|
|
43
|
+
tt.view.dispatch(tt.view.state.tr.replaceSelection(slice));
|
|
44
|
+
|
|
45
|
+
// alternative paste simulation doesn't work in a non-browser vitest env
|
|
46
|
+
// editor._tiptapEditor.view.pasteHTML(html, {
|
|
47
|
+
// preventDefault: () => {
|
|
48
|
+
// // noop
|
|
49
|
+
// },
|
|
50
|
+
// clipboardData: {
|
|
51
|
+
// types: ["text/html"],
|
|
52
|
+
// getData: () => html,
|
|
53
|
+
// },
|
|
54
|
+
// } as any);
|
|
55
|
+
|
|
56
|
+
const pastedBlocks = editor.topLevelBlocks;
|
|
57
|
+
pastedBlocks.pop(); // trailing paragraph
|
|
58
|
+
expect(pastedBlocks).toStrictEqual(blocks);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
describe("Parse HTML", () => {
|
|
62
|
+
it("Parse basic block types", async () => {
|
|
63
|
+
const html = `<h1>Heading 1</h1>
|
|
64
|
+
<h2>Heading 2</h2>
|
|
65
|
+
<h3>Heading 3</h3>
|
|
66
|
+
<p>Paragraph</p>
|
|
67
|
+
<figure><img src="exampleURL" /><figcaption>Image Caption</figcaption></figure>
|
|
68
|
+
<p>None <strong>Bold </strong><em>Italic </em><u>Underline </u><s>Strikethrough </s><strong><em><s><u>All</u></s></em></strong></p>`;
|
|
69
|
+
|
|
70
|
+
await parseHTMLAndCompareSnapshots(html, "parse-basic-block-types");
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
it("list test", async () => {
|
|
74
|
+
const html = `<ul>
|
|
75
|
+
<li>First</li>
|
|
76
|
+
<li>Second</li>
|
|
77
|
+
<li>Third</li>
|
|
78
|
+
<li>Five Parent
|
|
79
|
+
<ul>
|
|
80
|
+
<li>Child 1</li>
|
|
81
|
+
<li>Child 2</li>
|
|
82
|
+
</ul>
|
|
83
|
+
</li>
|
|
84
|
+
</ul>`;
|
|
85
|
+
await parseHTMLAndCompareSnapshots(html, "list-test");
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
it("Parse nested lists", async () => {
|
|
89
|
+
const html = `<ul>
|
|
90
|
+
<li>Bullet List Item</li>
|
|
91
|
+
<li>Bullet List Item</li>
|
|
92
|
+
<ul>
|
|
93
|
+
<li>
|
|
94
|
+
Nested Bullet List Item
|
|
95
|
+
</li>
|
|
96
|
+
<li>
|
|
97
|
+
Nested Bullet List Item
|
|
98
|
+
</li>
|
|
99
|
+
</ul>
|
|
100
|
+
<li>
|
|
101
|
+
Bullet List Item
|
|
102
|
+
</li>
|
|
103
|
+
</ul>
|
|
104
|
+
<ol>
|
|
105
|
+
<li>
|
|
106
|
+
Numbered List Item
|
|
107
|
+
<ol>
|
|
108
|
+
<li>
|
|
109
|
+
Nested Numbered List Item
|
|
110
|
+
</li>
|
|
111
|
+
<li>
|
|
112
|
+
Nested Numbered List Item
|
|
113
|
+
</li>
|
|
114
|
+
</ol>
|
|
115
|
+
</li>
|
|
116
|
+
<li>
|
|
117
|
+
Numbered List Item
|
|
118
|
+
</li>
|
|
119
|
+
</ol>`;
|
|
120
|
+
|
|
121
|
+
await parseHTMLAndCompareSnapshots(html, "parse-nested-lists");
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
it("Parse nested lists with paragraphs", async () => {
|
|
125
|
+
const html = `<ul>
|
|
126
|
+
<li>
|
|
127
|
+
<p>Bullet List Item</p>
|
|
128
|
+
<ul>
|
|
129
|
+
<li>
|
|
130
|
+
<p>Nested Bullet List Item</p>
|
|
131
|
+
</li>
|
|
132
|
+
<li>
|
|
133
|
+
<p>Nested Bullet List Item</p>
|
|
134
|
+
</li>
|
|
135
|
+
</ul>
|
|
136
|
+
</li>
|
|
137
|
+
<li>
|
|
138
|
+
<p>Bullet List Item</p>
|
|
139
|
+
</li>
|
|
140
|
+
</ul>
|
|
141
|
+
<ol>
|
|
142
|
+
<li>
|
|
143
|
+
<p>Numbered List Item</p>
|
|
144
|
+
<ol>
|
|
145
|
+
<li>
|
|
146
|
+
<p>Nested Numbered List Item</p>
|
|
147
|
+
</li>
|
|
148
|
+
<li>
|
|
149
|
+
<p>Nested Numbered List Item</p>
|
|
150
|
+
</li>
|
|
151
|
+
</ol>
|
|
152
|
+
</li>
|
|
153
|
+
<li>
|
|
154
|
+
<p>Numbered List Item</p>
|
|
155
|
+
</li>
|
|
156
|
+
</ol>`;
|
|
157
|
+
|
|
158
|
+
await parseHTMLAndCompareSnapshots(
|
|
159
|
+
html,
|
|
160
|
+
"parse-nested-lists-with-paragraphs"
|
|
161
|
+
);
|
|
162
|
+
});
|
|
163
|
+
|
|
164
|
+
it("Parse mixed nested lists", async () => {
|
|
165
|
+
const html = `<ul>
|
|
166
|
+
<li>
|
|
167
|
+
Bullet List Item
|
|
168
|
+
<ol>
|
|
169
|
+
<li>
|
|
170
|
+
Nested Numbered List Item
|
|
171
|
+
</li>
|
|
172
|
+
<li>
|
|
173
|
+
Nested Numbered List Item
|
|
174
|
+
</li>
|
|
175
|
+
</ol>
|
|
176
|
+
</li>
|
|
177
|
+
<li>
|
|
178
|
+
Bullet List Item
|
|
179
|
+
</li>
|
|
180
|
+
</ul>
|
|
181
|
+
<ol>
|
|
182
|
+
<li>
|
|
183
|
+
Numbered List Item
|
|
184
|
+
<ul>
|
|
185
|
+
<li>
|
|
186
|
+
<p>Nested Bullet List Item</p>
|
|
187
|
+
</li>
|
|
188
|
+
<li>
|
|
189
|
+
<p>Nested Bullet List Item</p>
|
|
190
|
+
</li>
|
|
191
|
+
</ul>
|
|
192
|
+
</li>
|
|
193
|
+
<li>
|
|
194
|
+
Numbered List Item
|
|
195
|
+
</li>
|
|
196
|
+
</ol>`;
|
|
197
|
+
|
|
198
|
+
await parseHTMLAndCompareSnapshots(html, "parse-mixed-nested-lists");
|
|
199
|
+
});
|
|
200
|
+
|
|
201
|
+
it("Parse divs", async () => {
|
|
202
|
+
const html = `<div>Single Div</div>
|
|
203
|
+
<div>
|
|
204
|
+
Div
|
|
205
|
+
<div>Nested Div</div>
|
|
206
|
+
<div>Nested Div</div>
|
|
207
|
+
</div>
|
|
208
|
+
<div>Single Div 2</div>
|
|
209
|
+
<div>
|
|
210
|
+
<div>Nested Div</div>
|
|
211
|
+
<div>Nested Div</div>
|
|
212
|
+
</div>`;
|
|
213
|
+
|
|
214
|
+
await parseHTMLAndCompareSnapshots(html, "parse-divs");
|
|
215
|
+
});
|
|
216
|
+
|
|
217
|
+
it("Parse two divs", async () => {
|
|
218
|
+
const html = `<div>Single Div</div><div>second Div</div>`;
|
|
219
|
+
|
|
220
|
+
await parseHTMLAndCompareSnapshots(html, "parse-two-divs");
|
|
221
|
+
});
|
|
222
|
+
|
|
223
|
+
it("Parse fake image caption", async () => {
|
|
224
|
+
const html = `<div>
|
|
225
|
+
<img src="exampleURL">
|
|
226
|
+
<p>Image Caption</p>
|
|
227
|
+
</div>`;
|
|
228
|
+
|
|
229
|
+
await parseHTMLAndCompareSnapshots(html, "parse-fake-image-caption");
|
|
230
|
+
});
|
|
231
|
+
|
|
232
|
+
// TODO: this one fails
|
|
233
|
+
it.skip("Parse deep nested content", async () => {
|
|
234
|
+
const html = `<div>
|
|
235
|
+
Outer 1 Div Before
|
|
236
|
+
<div>
|
|
237
|
+
Outer 2 Div Before
|
|
238
|
+
<div>
|
|
239
|
+
Outer 3 Div Before
|
|
240
|
+
<div>
|
|
241
|
+
Outer 4 Div Before
|
|
242
|
+
<h1>Heading 1</h1>
|
|
243
|
+
<h2>Heading 2</h2>
|
|
244
|
+
<h3>Heading 3</h3>
|
|
245
|
+
<p>Paragraph</p>
|
|
246
|
+
<figure><img src="exampleURL"><figcaption>Image Caption</figcaption></figure>
|
|
247
|
+
<p><strong>Bold</strong> <em>Italic</em> <u>Underline</u> <s>Strikethrough</s> <strong><em><s><u>All</u></s></em></strong></p>
|
|
248
|
+
Outer 4 Div After
|
|
249
|
+
</div>
|
|
250
|
+
Outer 3 Div After
|
|
251
|
+
</div>
|
|
252
|
+
Outer 2 Div After
|
|
253
|
+
</div>
|
|
254
|
+
Outer 1 Div After
|
|
255
|
+
</div>`;
|
|
256
|
+
|
|
257
|
+
await parseHTMLAndCompareSnapshots(html, "parse-deep-nested-content");
|
|
258
|
+
});
|
|
259
|
+
|
|
260
|
+
it("Parse div with inline content and nested blocks", async () => {
|
|
261
|
+
const html = `<div>
|
|
262
|
+
None <strong>Bold </strong><em>Italic </em><u>Underline </u><s>Strikethrough </s><strong><em><s><u>All</u></s></em></strong>
|
|
263
|
+
<div>Nested Div</div>
|
|
264
|
+
<p>Nested Paragraph</p>
|
|
265
|
+
</div>`;
|
|
266
|
+
|
|
267
|
+
await parseHTMLAndCompareSnapshots(html, "parse-div-with-inline-content");
|
|
268
|
+
});
|
|
269
|
+
|
|
270
|
+
it("Parse Notion HTML", async () => {
|
|
271
|
+
// A few notes on Notion output HTML:
|
|
272
|
+
// - Does not preserve text/background colors
|
|
273
|
+
// - Does not preserve non-list-item block nesting
|
|
274
|
+
// - Hard breaks are represented using white space, not `<br>` elements
|
|
275
|
+
// - Images are converted to links with a "!" at the start
|
|
276
|
+
// - Cells in first row of a table are converted to `th` elements, regardless
|
|
277
|
+
// of if the row is set as a header row
|
|
278
|
+
|
|
279
|
+
const html = `<meta charset='utf-8'><h1>Heading 1</h1>
|
|
280
|
+
<h2>Heading 2</h2>
|
|
281
|
+
<h3>Heading 3</h3>
|
|
282
|
+
<p>Paragraph 1</p>
|
|
283
|
+
<p>Nested Paragraph 1</p>
|
|
284
|
+
<p>Nested Paragraph 2</p>
|
|
285
|
+
<p>Paragraph
|
|
286
|
+
With Hard Break</p>
|
|
287
|
+
<p><strong>Bold</strong> <em>Italic</em> Underline <s>Strikethrough</s> <em><strong><s>All</s></strong></em></p>
|
|
288
|
+
<ul>
|
|
289
|
+
<li>Bullet List Item 1
|
|
290
|
+
<ul>
|
|
291
|
+
<li>Nested Bullet List Item 1
|
|
292
|
+
<ol>
|
|
293
|
+
<li>Nested Numbered List Item 1</li>
|
|
294
|
+
<li>Nested Numbered List Item 2</li>
|
|
295
|
+
</ol>
|
|
296
|
+
</li>
|
|
297
|
+
<li>Nested Bullet List Item 2</li>
|
|
298
|
+
</ul>
|
|
299
|
+
</li>
|
|
300
|
+
<li>Bullet List Item 2</li>
|
|
301
|
+
</ul>
|
|
302
|
+
<ol>
|
|
303
|
+
<li>Numbered List Item 1</li>
|
|
304
|
+
<li>Numbered List Item 2</li>
|
|
305
|
+
</ol>
|
|
306
|
+
<p>Background Color Paragraph</p>
|
|
307
|
+
<p>!<a href="https://www.pulsecarshalton.co.uk/wp-content/uploads/2016/08/jk-placeholder-image.jpg">https://www.pulsecarshalton.co.uk/wp-content/uploads/2016/08/jk-placeholder-image.jpg</a></p>
|
|
308
|
+
<table>
|
|
309
|
+
<thead>
|
|
310
|
+
<tr>
|
|
311
|
+
<th>Cell 1</th>
|
|
312
|
+
<th>Cell 2</th>
|
|
313
|
+
<th>Cell 3</th>
|
|
314
|
+
</tr>
|
|
315
|
+
</thead>
|
|
316
|
+
<tbody>
|
|
317
|
+
<tr>
|
|
318
|
+
<td>Cell 4</td>
|
|
319
|
+
<td>Cell 5</td>
|
|
320
|
+
<td>Cell 6</td>
|
|
321
|
+
</tr>
|
|
322
|
+
<tr>
|
|
323
|
+
<td>Cell 7</td>
|
|
324
|
+
<td>Cell 8</td>
|
|
325
|
+
<td>Cell 9</td>
|
|
326
|
+
</tr>
|
|
327
|
+
</tbody>
|
|
328
|
+
</table>
|
|
329
|
+
<p>Paragraph</p>
|
|
330
|
+
<!-- notionvc: 7cb7968f-b969-4795-af7a-d41b5481c675 -->`;
|
|
331
|
+
|
|
332
|
+
await parseHTMLAndCompareSnapshots(html, "parse-notion-html");
|
|
333
|
+
});
|
|
334
|
+
|
|
335
|
+
// Currently breaking, seems related to parsing `</br>` elements
|
|
336
|
+
it.skip("Parse Google Docs HTML", async () => {
|
|
337
|
+
// A few notes on Google Docs output HTML:
|
|
338
|
+
// - All inline markup is represented as `<span>` elements with inline
|
|
339
|
+
// styles (bold, italic, etc.)
|
|
340
|
+
// - The nested list structure is not valid, i.e. `<ul/ol>` elements are not
|
|
341
|
+
// placed within `<li>` elements
|
|
342
|
+
// - Images are wrapped in two spans and a paragraph
|
|
343
|
+
// - Everything is nested within a `<b>` element
|
|
344
|
+
|
|
345
|
+
const html = `<meta charset='utf-8'>
|
|
346
|
+
<meta charset="utf-8">
|
|
347
|
+
<b style="font-weight:normal;" id="docs-internal-guid-fdf86189-7fff-f50a-2bef-c048469db8a9">
|
|
348
|
+
<h1 dir="ltr" style="line-height:1.38;margin-left: 18pt;text-indent: -18pt;margin-top:24pt;margin-bottom:6pt;padding:0pt 0pt 0pt 18pt;"><span style="font-size:23pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Heading 1</span></h1>
|
|
349
|
+
<h2 dir="ltr" style="line-height:1.38;margin-left: 18pt;text-indent: -18pt;margin-top:18pt;margin-bottom:4pt;padding:0pt 0pt 0pt 18pt;"><span style="font-size:17pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Heading 2</span></h2>
|
|
350
|
+
<h3 dir="ltr" style="line-height:1.38;margin-left: 18pt;text-indent: -18pt;margin-top:14pt;margin-bottom:4pt;padding:0pt 0pt 0pt 18pt;"><span style="font-size:13pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Heading 3</span></h3>
|
|
351
|
+
<p dir="ltr" style="line-height:1.38;margin-top:12pt;margin-bottom:12pt;"><span style="font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Paragraph 1</span></p>
|
|
352
|
+
<p dir="ltr" style="line-height:1.38;margin-top:12pt;margin-bottom:12pt;"><span style="font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Paragraph 2</span></p>
|
|
353
|
+
<p dir="ltr" style="line-height:1.38;margin-top:12pt;margin-bottom:12pt;"><span style="font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Paragraph 3</span></p>
|
|
354
|
+
<p dir="ltr" style="line-height:1.38;margin-top:12pt;margin-bottom:12pt;"><span style="font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Paragraph With </span><span style="font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><br /></span><span style="font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Hard Break</span></p>
|
|
355
|
+
<p dir="ltr" style="line-height:1.38;margin-top:12pt;margin-bottom:12pt;"><span style="font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Bold</span><span style="font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Italic</span><span style="font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> Underline </span><span style="font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:line-through;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Strikethrough</span><span style="font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:11pt;font-family:Arial,sans-serif;color:#ff0000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:line-through;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">All</span></p>
|
|
356
|
+
<ul style="margin-top:0;margin-bottom:0;padding-inline-start:48px;">
|
|
357
|
+
<li dir="ltr" style="list-style-type:disc;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;" aria-level="1">
|
|
358
|
+
<p dir="ltr" style="line-height:1.38;margin-top:12pt;margin-bottom:0pt;" role="presentation"><span style="font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Bullet List Item 1</span></p>
|
|
359
|
+
</li>
|
|
360
|
+
<ul style="margin-top:0;margin-bottom:0;padding-inline-start:48px;">
|
|
361
|
+
<li dir="ltr" style="list-style-type:circle;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;" aria-level="2">
|
|
362
|
+
<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;" role="presentation"><span style="font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Nested Bullet List Item 1</span></p>
|
|
363
|
+
</li>
|
|
364
|
+
<ol style="margin-top:0;margin-bottom:0;padding-inline-start:48px;">
|
|
365
|
+
<li dir="ltr" style="list-style-type:decimal;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;" aria-level="3">
|
|
366
|
+
<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;" role="presentation"><span style="font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Nested Numbered List Item 1</span></p>
|
|
367
|
+
</li>
|
|
368
|
+
<li dir="ltr" style="list-style-type:decimal;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;" aria-level="3">
|
|
369
|
+
<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;" role="presentation"><span style="font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Nested Numbered List Item 2</span></p>
|
|
370
|
+
</li>
|
|
371
|
+
</ol>
|
|
372
|
+
<li dir="ltr" style="list-style-type:circle;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;" aria-level="2">
|
|
373
|
+
<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;" role="presentation"><span style="font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Nested Bullet List Item 2</span></p>
|
|
374
|
+
</li>
|
|
375
|
+
</ul>
|
|
376
|
+
<li dir="ltr" style="list-style-type:disc;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;" aria-level="1">
|
|
377
|
+
<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;" role="presentation"><span style="font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Bullet List Item 2</span></p>
|
|
378
|
+
</li>
|
|
379
|
+
</ul>
|
|
380
|
+
<ol style="margin-top:0;margin-bottom:0;padding-inline-start:48px;">
|
|
381
|
+
<li dir="ltr" style="list-style-type:decimal;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;" aria-level="1">
|
|
382
|
+
<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;" role="presentation"><span style="font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Numbered List Item 1</span></p>
|
|
383
|
+
</li>
|
|
384
|
+
<li dir="ltr" style="list-style-type:decimal;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;" aria-level="1">
|
|
385
|
+
<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:12pt;" role="presentation"><span style="font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Numbered List Item 2</span></p>
|
|
386
|
+
</li>
|
|
387
|
+
</ol>
|
|
388
|
+
<p dir="ltr" style="line-height:1.38;margin-top:12pt;margin-bottom:12pt;"><span style="font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><span style="border:none;display:inline-block;overflow:hidden;width:447px;height:301px;"><img src="https://lh7-us.googleusercontent.com/SGyYp6hfLvNkli62NKFJB6NQz-fNa2Sjy8QxfUuqipW--qCCXmCz-dJmeZUGaDXIF9TEZHzbhNJsw4_w-B09eaFOn0oUChKsrSt3cwAIFu6d4SoSjHTR_DRTPr415_P7an7Lue-EwlUcVBk1WCzcoVQ" width="447" height="301" style="margin-left:0px;margin-top:0px;" /></span></span></p>
|
|
389
|
+
<br />
|
|
390
|
+
<div dir="ltr" style="margin-left:0pt;" align="left">
|
|
391
|
+
<table style="border:none;border-collapse:collapse;table-layout:fixed;width:468pt">
|
|
392
|
+
<colgroup>
|
|
393
|
+
<col />
|
|
394
|
+
<col />
|
|
395
|
+
<col />
|
|
396
|
+
</colgroup>
|
|
397
|
+
<tbody>
|
|
398
|
+
<tr style="height:0pt">
|
|
399
|
+
<td style="border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;">
|
|
400
|
+
<p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Cell 1</span></p>
|
|
401
|
+
</td>
|
|
402
|
+
<td style="border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;">
|
|
403
|
+
<p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Cell 2</span></p>
|
|
404
|
+
</td>
|
|
405
|
+
<td style="border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;">
|
|
406
|
+
<p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Cell 3</span></p>
|
|
407
|
+
</td>
|
|
408
|
+
</tr>
|
|
409
|
+
<tr style="height:0pt">
|
|
410
|
+
<td style="border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;">
|
|
411
|
+
<p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Cell 4</span></p>
|
|
412
|
+
</td>
|
|
413
|
+
<td style="border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;">
|
|
414
|
+
<p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Cell 5</span></p>
|
|
415
|
+
</td>
|
|
416
|
+
<td style="border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;">
|
|
417
|
+
<p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Cell 6</span></p>
|
|
418
|
+
</td>
|
|
419
|
+
</tr>
|
|
420
|
+
<tr style="height:0pt">
|
|
421
|
+
<td style="border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;">
|
|
422
|
+
<p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Cell 7</span></p>
|
|
423
|
+
</td>
|
|
424
|
+
<td style="border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;">
|
|
425
|
+
<p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Cell 8</span></p>
|
|
426
|
+
</td>
|
|
427
|
+
<td style="border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;">
|
|
428
|
+
<p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Cell 9</span></p>
|
|
429
|
+
</td>
|
|
430
|
+
</tr>
|
|
431
|
+
</tbody>
|
|
432
|
+
</table>
|
|
433
|
+
</div>
|
|
434
|
+
<p dir="ltr" style="line-height:1.38;margin-top:12pt;margin-bottom:12pt;"><span style="font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Paragraph</span></p>
|
|
435
|
+
</b>
|
|
436
|
+
<br class="Apple-interchange-newline">`;
|
|
437
|
+
|
|
438
|
+
await parseHTMLAndCompareSnapshots(html, "parse-google-docs-html");
|
|
439
|
+
});
|
|
440
|
+
});
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { DOMParser, Schema } from "prosemirror-model";
|
|
2
|
+
import {
|
|
3
|
+
Block,
|
|
4
|
+
BlockSchema,
|
|
5
|
+
InlineContentSchema,
|
|
6
|
+
StyleSchema,
|
|
7
|
+
} from "../../../schema";
|
|
8
|
+
|
|
9
|
+
import { nodeToBlock } from "../../nodeConversions/nodeConversions";
|
|
10
|
+
import { nestedListsToBlockNoteStructure } from "./util/nestedLists";
|
|
11
|
+
export async function HTMLToBlocks<
|
|
12
|
+
BSchema extends BlockSchema,
|
|
13
|
+
I extends InlineContentSchema,
|
|
14
|
+
S extends StyleSchema
|
|
15
|
+
>(
|
|
16
|
+
html: string,
|
|
17
|
+
blockSchema: BSchema,
|
|
18
|
+
icSchema: I,
|
|
19
|
+
styleSchema: S,
|
|
20
|
+
pmSchema: Schema
|
|
21
|
+
): Promise<Block<BSchema, I, S>[]> {
|
|
22
|
+
const htmlNode = nestedListsToBlockNoteStructure(html);
|
|
23
|
+
const parser = DOMParser.fromSchema(pmSchema);
|
|
24
|
+
|
|
25
|
+
// Other approach might be to use
|
|
26
|
+
// const doc = pmSchema.nodes["doc"].createAndFill()!;
|
|
27
|
+
// and context: doc.resolve(3),
|
|
28
|
+
|
|
29
|
+
const parentNode = parser.parse(htmlNode, {
|
|
30
|
+
topNode: pmSchema.nodes["blockGroup"].create(),
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
const blocks: Block<BSchema, I, S>[] = [];
|
|
34
|
+
|
|
35
|
+
for (let i = 0; i < parentNode.childCount; i++) {
|
|
36
|
+
blocks.push(
|
|
37
|
+
nodeToBlock(parentNode.child(i), blockSchema, icSchema, styleSchema)
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return blocks;
|
|
42
|
+
}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
|
|
2
|
+
|
|
3
|
+
exports[`Lift nested lists > Lifts multiple bullet lists 1`] = `
|
|
4
|
+
"
|
|
5
|
+
<ul>
|
|
6
|
+
<div>
|
|
7
|
+
<li>Bullet List Item 1</li>
|
|
8
|
+
<div data-node-type=\\"blockGroup\\">
|
|
9
|
+
<ul>
|
|
10
|
+
<li>Nested Bullet List Item 1</li>
|
|
11
|
+
<li>Nested Bullet List Item 2</li>
|
|
12
|
+
</ul>
|
|
13
|
+
<ul>
|
|
14
|
+
<li>Nested Bullet List Item 3</li>
|
|
15
|
+
<li>Nested Bullet List Item 4</li>
|
|
16
|
+
</ul>
|
|
17
|
+
</div>
|
|
18
|
+
</div>
|
|
19
|
+
<li>Bullet List Item 2</li>
|
|
20
|
+
</ul>
|
|
21
|
+
"
|
|
22
|
+
`;
|
|
23
|
+
|
|
24
|
+
exports[`Lift nested lists > Lifts multiple bullet lists with content in between 1`] = `
|
|
25
|
+
"
|
|
26
|
+
<ul>
|
|
27
|
+
<div>
|
|
28
|
+
<li>Bullet List Item 1</li>
|
|
29
|
+
<div data-node-type=\\"blockGroup\\">
|
|
30
|
+
<ul>
|
|
31
|
+
<li>Nested Bullet List Item 1</li>
|
|
32
|
+
<li>Nested Bullet List Item 2</li>
|
|
33
|
+
</ul>
|
|
34
|
+
</div>
|
|
35
|
+
</div>
|
|
36
|
+
<div>
|
|
37
|
+
<li>In between content</li>
|
|
38
|
+
<div data-node-type=\\"blockGroup\\">
|
|
39
|
+
<ul>
|
|
40
|
+
<li>Nested Bullet List Item 3</li>
|
|
41
|
+
<li>Nested Bullet List Item 4</li>
|
|
42
|
+
</ul>
|
|
43
|
+
</div>
|
|
44
|
+
</div>
|
|
45
|
+
<li>Bullet List Item 2</li>
|
|
46
|
+
</ul>
|
|
47
|
+
"
|
|
48
|
+
`;
|
|
49
|
+
|
|
50
|
+
exports[`Lift nested lists > Lifts nested bullet lists 1`] = `
|
|
51
|
+
"
|
|
52
|
+
<ul>
|
|
53
|
+
<div>
|
|
54
|
+
<li>Bullet List Item 1</li>
|
|
55
|
+
<div data-node-type=\\"blockGroup\\">
|
|
56
|
+
<ul>
|
|
57
|
+
<li>Nested Bullet List Item 1</li>
|
|
58
|
+
<li>Nested Bullet List Item 2</li>
|
|
59
|
+
</ul>
|
|
60
|
+
</div>
|
|
61
|
+
</div>
|
|
62
|
+
<li>Bullet List Item 2</li>
|
|
63
|
+
</ul>
|
|
64
|
+
"
|
|
65
|
+
`;
|
|
66
|
+
|
|
67
|
+
exports[`Lift nested lists > Lifts nested bullet lists with content after nested list 1`] = `
|
|
68
|
+
"
|
|
69
|
+
<ul>
|
|
70
|
+
<div>
|
|
71
|
+
<li>Bullet List Item 1</li>
|
|
72
|
+
<div data-node-type=\\"blockGroup\\">
|
|
73
|
+
<ul>
|
|
74
|
+
<li>Nested Bullet List Item 1</li>
|
|
75
|
+
<li>Nested Bullet List Item 2</li>
|
|
76
|
+
</ul>
|
|
77
|
+
</div>
|
|
78
|
+
</div>
|
|
79
|
+
<li>More content in list item 1</li>
|
|
80
|
+
<li>Bullet List Item 2</li>
|
|
81
|
+
</ul>
|
|
82
|
+
"
|
|
83
|
+
`;
|
|
84
|
+
|
|
85
|
+
exports[`Lift nested lists > Lifts nested bullet lists without li 1`] = `
|
|
86
|
+
"
|
|
87
|
+
<ul>Bullet List Item 1
|
|
88
|
+
<ul>
|
|
89
|
+
<li>Nested Bullet List Item 1</li>
|
|
90
|
+
<li>Nested Bullet List Item 2</li>
|
|
91
|
+
</ul>
|
|
92
|
+
<li>Bullet List Item 2</li>
|
|
93
|
+
</ul>
|
|
94
|
+
"
|
|
95
|
+
`;
|
|
96
|
+
|
|
97
|
+
exports[`Lift nested lists > Lifts nested mixed lists 1`] = `
|
|
98
|
+
"
|
|
99
|
+
<ol>
|
|
100
|
+
<div>
|
|
101
|
+
<li>Numbered List Item 1</li>
|
|
102
|
+
<div data-node-type=\\"blockGroup\\">
|
|
103
|
+
<ul>
|
|
104
|
+
<li>Bullet List Item 1</li>
|
|
105
|
+
<li>Bullet List Item 2</li>
|
|
106
|
+
</ul>
|
|
107
|
+
</div>
|
|
108
|
+
</div>
|
|
109
|
+
<li>Numbered List Item 2</li>
|
|
110
|
+
</ol>
|
|
111
|
+
"
|
|
112
|
+
`;
|
|
113
|
+
|
|
114
|
+
exports[`Lift nested lists > Lifts nested numbered lists 1`] = `
|
|
115
|
+
"
|
|
116
|
+
<ol>
|
|
117
|
+
<div>
|
|
118
|
+
<li>Numbered List Item 1</li>
|
|
119
|
+
<div data-node-type=\\"blockGroup\\">
|
|
120
|
+
<ol>
|
|
121
|
+
<li>Nested Numbered List Item 1</li>
|
|
122
|
+
<li>Nested Numbered List Item 2</li>
|
|
123
|
+
</ol>
|
|
124
|
+
</div>
|
|
125
|
+
</div>
|
|
126
|
+
<li>Numbered List Item 2</li>
|
|
127
|
+
</ol>
|
|
128
|
+
"
|
|
129
|
+
`;
|