CatPtain's picture
Upload 339 files
89ce340 verified
raw
history blame
701 Bytes
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])
}
},
},
})
}