From ab6affa3cc9bd55819c497c3580fdfeaa033216e Mon Sep 17 00:00:00 2001 From: fantasticit Date: Mon, 28 Nov 2022 10:52:18 +0800 Subject: [PATCH] fix delete node in table --- .../src/tiptap/prose-utils/delete-node.ts | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/packages/client/src/tiptap/prose-utils/delete-node.ts b/packages/client/src/tiptap/prose-utils/delete-node.ts index 203aa900..c06e91c1 100644 --- a/packages/client/src/tiptap/prose-utils/delete-node.ts +++ b/packages/client/src/tiptap/prose-utils/delete-node.ts @@ -3,6 +3,7 @@ import { Editor } from '@tiptap/core'; export function deleteNode(nodeType: string, editor: Editor) { const { state } = editor; const $pos = state.selection.$anchor; + let done = false; if ($pos.depth) { for (let d = $pos.depth; d > 0; d--) { @@ -12,7 +13,7 @@ export function deleteNode(nodeType: string, editor: Editor) { if (editor.dispatchTransaction) // @ts-ignore editor.dispatchTransaction(state.tr.delete($pos.before(d), $pos.after(d)).scrollIntoView()); - return true; + done = true; } } } else { @@ -20,8 +21,25 @@ export function deleteNode(nodeType: string, editor: Editor) { const node = state.selection.node; if (node && node.type.name === nodeType) { editor.chain().deleteSelection().run(); + done = true; } } - return false; + if (!done) { + const pos = $pos.pos; + + if (pos) { + const node = state.tr.doc.nodeAt(pos); + + if (node && node.type.name === nodeType) { + // @ts-ignore + if (editor.dispatchTransaction) + // @ts-ignore + editor.dispatchTransaction(state.tr.delete(pos, pos + node.nodeSize)); + done = true; + } + } + } + + return done; }