* chore: add precommit hook for eslint fixes, fix linting issues * chore: add eslint import sort plugin
34 lines
1.1 KiB
TypeScript
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,
|
|
})
|
|
},
|
|
},
|
|
}),
|
|
]
|
|
},
|
|
})
|