Files
tiptap/packages/core/src/extensions/clipboardTextSerializer.ts
Dominik 8c6751f0c6 add precommit hook for linting and automatic eslint fixes + update eslint packages (#2862)
* chore: add precommit hook for eslint fixes, fix linting issues
* chore: add eslint import sort plugin
2022-06-08 14:10:25 +02:00

34 lines
1.1 KiB
TypeScript

import { Plugin, PluginKey } from 'prosemirror-state'
import { Extension } from '../Extension'
import { getTextBetween } from '../helpers/getTextBetween'
import { getTextSerializersFromSchema } from '../helpers/getTextSerializersFromSchema'
export const ClipboardTextSerializer = Extension.create({
name: 'clipboardTextSerializer',
addProseMirrorPlugins() {
return [
new Plugin({
key: new PluginKey('clipboardTextSerializer'),
props: {
clipboardTextSerializer: () => {
const { editor } = this
const { state, schema } = editor
const { doc, selection } = state
const { ranges } = selection
const from = Math.min(...ranges.map(range => range.$from.pos))
const to = Math.max(...ranges.map(range => range.$to.pos))
const textSerializers = getTextSerializersFromSchema(schema)
const range = { from, to }
return getTextBetween(doc, range, {
textSerializers,
})
},
},
}),
]
},
})