From 0a238d9c12269e8da1bca4f37ac521489d84f07c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Ku=CC=88hn?= Date: Sat, 27 Mar 2021 11:16:50 +0100 Subject: [PATCH] add editor to placeholder props --- packages/extension-placeholder/package.json | 1 + packages/extension-placeholder/src/placeholder.ts | 13 ++++++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/packages/extension-placeholder/package.json b/packages/extension-placeholder/package.json index b9fe4856..5f581326 100644 --- a/packages/extension-placeholder/package.json +++ b/packages/extension-placeholder/package.json @@ -25,6 +25,7 @@ "@tiptap/core": "^2.0.0-beta.1" }, "dependencies": { + "prosemirror-model": "^1.13.3", "prosemirror-state": "^1.3.4", "prosemirror-view": "^1.18.1" } diff --git a/packages/extension-placeholder/src/placeholder.ts b/packages/extension-placeholder/src/placeholder.ts index d955fbd8..0f553567 100644 --- a/packages/extension-placeholder/src/placeholder.ts +++ b/packages/extension-placeholder/src/placeholder.ts @@ -1,11 +1,15 @@ -import { Extension, isNodeEmpty } from '@tiptap/core' +import { Editor, Extension, isNodeEmpty } from '@tiptap/core' +import { Node as ProsemirrorNode } from 'prosemirror-model' import { Decoration, DecorationSet } from 'prosemirror-view' import { Plugin } from 'prosemirror-state' export interface PlaceholderOptions { emptyEditorClass: string, emptyNodeClass: string, - placeholder: string | Function, + placeholder: ((PlaceholderProps: { + editor: Editor, + node: ProsemirrorNode, + }) => string) | string, showOnlyWhenEditable: boolean, showOnlyCurrent: boolean, } @@ -48,7 +52,10 @@ export const Placeholder = Extension.create({ const decoration = Decoration.node(pos, pos + node.nodeSize, { class: classes.join(' '), 'data-placeholder': typeof this.options.placeholder === 'function' - ? this.options.placeholder(node) + ? this.options.placeholder({ + editor: this.editor, + node, + }) : this.options.placeholder, })