fix: do not check for node selection within posToDOMRect
This commit is contained in:
@@ -1,16 +1,7 @@
|
|||||||
import isNodeSelection from './isNodeSelection'
|
|
||||||
import { EditorView } from 'prosemirror-view'
|
import { EditorView } from 'prosemirror-view'
|
||||||
import coordsAtPos from './coordsAtPos'
|
import coordsAtPos from './coordsAtPos'
|
||||||
|
|
||||||
export default function posToDOMRect(view: EditorView, from: number, to: number): DOMRect {
|
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 start = coordsAtPos(view, from)
|
||||||
const end = coordsAtPos(view, to, true)
|
const end = coordsAtPos(view, to, true)
|
||||||
const top = Math.min(start.top, end.top)
|
const top = Math.min(start.top, end.top)
|
||||||
|
|||||||
@@ -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 { EditorState, Plugin, PluginKey } from 'prosemirror-state'
|
||||||
import { EditorView } from 'prosemirror-view'
|
import { EditorView } from 'prosemirror-view'
|
||||||
import tippy, { Instance, Props } from 'tippy.js'
|
import tippy, { Instance, Props } from 'tippy.js'
|
||||||
@@ -104,7 +104,17 @@ export class BubbleMenuView {
|
|||||||
}
|
}
|
||||||
|
|
||||||
this.tippy.setProps({
|
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()
|
this.show()
|
||||||
|
|||||||
Reference in New Issue
Block a user