File size: 701 Bytes
89ce340 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
import { Plugin } from 'prosemirror-state'
import { Decoration, DecorationSet } from 'prosemirror-view'
import type { Node } from 'prosemirror-model'
const isEmptyParagraph = (node: Node) => {
return node.type.name === 'paragraph' && node.nodeSize === 2
}
export const placeholderPlugin = (placeholder: string) => {
return new Plugin({
props: {
decorations(state) {
const { $from } = state.selection
if (isEmptyParagraph($from.parent)) {
const decoration = Decoration.node($from.before(), $from.after(), {
'data-placeholder': placeholder,
})
return DecorationSet.create(state.doc, [decoration])
}
},
},
})
} |