fix copying mentions as plain text

This commit is contained in:
Philipp Kühn
2021-01-19 20:27:51 +01:00
parent 80ec657053
commit 563f37d74b
11 changed files with 116 additions and 15 deletions

View File

@@ -6,6 +6,7 @@ import { Editor } from './Editor'
import { Extensions, NodeViewRenderer } from './types'
import getSchema from './helpers/getSchema'
import getSchemaTypeByName from './helpers/getSchemaTypeByName'
import getNodeType from './helpers/getNodeType'
import splitExtensions from './helpers/splitExtensions'
import getAttributesFromExtensions from './helpers/getAttributesFromExtensions'
import getRenderedAttributes from './helpers/getRenderedAttributes'
@@ -145,11 +146,9 @@ export default class ExtensionManager {
const context = {
options: extension.options,
editor,
type: getSchemaTypeByName(extension.config.name, this.schema),
type: getNodeType(extension.config.name, this.schema),
}
// @ts-ignore
const renderer = extension.config.addNodeView?.bind(context)?.() as NodeViewRenderer
const renderer = extension.config.addNodeView?.call(context) as NodeViewRenderer
const nodeview = (
node: ProsemirrorNode,
@@ -173,4 +172,23 @@ export default class ExtensionManager {
}))
}
get textSerializers() {
const { editor } = this
const { nodeExtensions } = splitExtensions(this.extensions)
return Object.fromEntries(nodeExtensions
.filter(extension => !!extension.config.renderText)
.map(extension => {
const context = {
options: extension.options,
editor,
type: getNodeType(extension.config.name, this.schema),
}
const textSerializer = (props: { node: ProsemirrorNode }) => extension.config.renderText?.call(context, props)
return [extension.config.name, textSerializer]
}))
}
}