Make parse.richTextToString more efficient (#848)

This commit is contained in:
Marshall Polaris 2022-09-12 16:11:03 -07:00 committed by GitHub
parent 22d2248951
commit cb143117e5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 3 deletions

View File

@ -13,6 +13,7 @@
"@tiptap/extension-link": "2.0.0-beta.43",
"@tiptap/extension-mention": "2.0.0-beta.102",
"@tiptap/starter-kit": "2.0.0-beta.191",
"prosemirror-model": "1.18.1",
"lodash": "4.17.21"
},
"devDependencies": {

View File

@ -1,5 +1,12 @@
import { MAX_TAG_LENGTH } from '../contract'
import { generateText, JSONContent } from '@tiptap/core'
import {
getText,
getTextSerializersFromSchema,
getSchema,
JSONContent,
} from '@tiptap/core'
import { Node as ProseMirrorNode } from 'prosemirror-model'
// Tiptap starter extensions
import { Blockquote } from '@tiptap/extension-blockquote'
import { Bold } from '@tiptap/extension-bold'
@ -97,7 +104,6 @@ export const exhibitExts = [
Paragraph,
Strike,
Text,
Image,
Link,
Mention,
@ -105,6 +111,15 @@ export const exhibitExts = [
TiptapTweet,
]
const exhibitSchema = getSchema(exhibitExts)
export function richTextToString(text?: JSONContent) {
return !text ? '' : generateText(text, exhibitExts)
if (!text) {
return ''
}
const contentNode = ProseMirrorNode.fromJSON(exhibitSchema, text)
return getText(contentNode, {
blockSeparator: '\n\n',
textSerializers: getTextSerializersFromSchema(exhibitSchema),
})
}