File size: 712 Bytes
f56a29b | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | 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]);
}
},
},
});
};
|