From c0e68d5a25608e0b6d9c127bbc507b4ba2a94a61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Ku=CC=88hn?= Date: Mon, 24 May 2021 20:40:24 +0200 Subject: [PATCH] fix: do not check for node selection within posToDOMRect --- packages/core/src/helpers/posToDOMRect.ts | 9 --------- .../src/bubble-menu-plugin.ts | 14 ++++++++++++-- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/packages/core/src/helpers/posToDOMRect.ts b/packages/core/src/helpers/posToDOMRect.ts index a4c8fd59..46f791f1 100644 --- a/packages/core/src/helpers/posToDOMRect.ts +++ b/packages/core/src/helpers/posToDOMRect.ts @@ -1,16 +1,7 @@ -import isNodeSelection from './isNodeSelection' import { EditorView } from 'prosemirror-view' import coordsAtPos from './coordsAtPos' export default function posToDOMRect(view: EditorView, from: number, to: number): DOMRect { - if (isNodeSelection(view.state.selection)) { - const node = view.nodeDOM(from) as HTMLElement - - if (node && node.getBoundingClientRect) { - return node.getBoundingClientRect() - } - } - const start = coordsAtPos(view, from) const end = coordsAtPos(view, to, true) const top = Math.min(start.top, end.top) diff --git a/packages/extension-bubble-menu/src/bubble-menu-plugin.ts b/packages/extension-bubble-menu/src/bubble-menu-plugin.ts index 04884df5..f5ae9e50 100644 --- a/packages/extension-bubble-menu/src/bubble-menu-plugin.ts +++ b/packages/extension-bubble-menu/src/bubble-menu-plugin.ts @@ -1,4 +1,4 @@ -import { Editor, posToDOMRect } from '@tiptap/core' +import { Editor, posToDOMRect, isNodeSelection } from '@tiptap/core' import { EditorState, Plugin, PluginKey } from 'prosemirror-state' import { EditorView } from 'prosemirror-view' import tippy, { Instance, Props } from 'tippy.js' @@ -104,7 +104,17 @@ export class BubbleMenuView { } this.tippy.setProps({ - getReferenceClientRect: () => posToDOMRect(view, from, to), + getReferenceClientRect: () => { + if (isNodeSelection(view.state.selection)) { + const node = view.nodeDOM(from) as HTMLElement + + if (node) { + return node.getBoundingClientRect() + } + } + + return posToDOMRect(view, from, to) + }, }) this.show()