From 010418d0fd04ebef10180a3559abfbbd24b6a959 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Ku=CC=88hn?= Date: Sun, 31 Oct 2021 12:03:24 +0100 Subject: [PATCH] fix: prevent RangeError for posToDOMRect, fix #2112 --- packages/core/src/helpers/posToDOMRect.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/core/src/helpers/posToDOMRect.ts b/packages/core/src/helpers/posToDOMRect.ts index 70e4de08..98d7399f 100644 --- a/packages/core/src/helpers/posToDOMRect.ts +++ b/packages/core/src/helpers/posToDOMRect.ts @@ -1,8 +1,13 @@ import { EditorView } from 'prosemirror-view' +import minMax from '../utilities/minMax' export default function posToDOMRect(view: EditorView, from: number, to: number): DOMRect { - const start = view.coordsAtPos(from) - const end = view.coordsAtPos(to, -1) + const minPos = 0 + const maxPos = view.state.doc.content.size + const resolvedFrom = minMax(from, minPos, maxPos) + const resolvedEnd = minMax(to, minPos, maxPos) + const start = view.coordsAtPos(resolvedFrom) + const end = view.coordsAtPos(resolvedEnd, -1) const top = Math.min(start.top, end.top) const bottom = Math.max(start.bottom, end.bottom) const left = Math.min(start.left, end.left)