|
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]) |
|
} |
|
}, |
|
}, |
|
}) |
|
} |