Scroll selection anchor into view when adding new comment (#21328)

* Scroll selection anchor into view when adding new comment

* check if cursor is near viewport edge

GitOrigin-RevId: 57d4195f7ce1513a56249365b45b3959b4ea813f
This commit is contained in:
Domagoj Kriskovic
2024-10-28 09:05:29 +00:00
committed by Copybot
parent 4bcc7c9602
commit db23262611
2 changed files with 34 additions and 4 deletions
@@ -0,0 +1,23 @@
import { EditorView } from '@codemirror/view'
const TOP_EDGE_THRESHOLD = 100
const BOTTOM_EDGE_THRESHOLD = 200
export function isCursorNearViewportEdge(view: EditorView, pos: number) {
const cursorCoords = view.coordsAtPos(pos)
if (!cursorCoords) {
return false
}
const scrollInfo = view.scrollDOM.getBoundingClientRect()
// check if the cursor is near the top of the viewport
if (Math.abs(cursorCoords.bottom - scrollInfo.top) <= TOP_EDGE_THRESHOLD) {
return true
}
// check if the cursor is near the bottom of the viewport
const viewportHeight = view.scrollDOM.clientHeight
const viewportBottom = scrollInfo.top + viewportHeight
return Math.abs(cursorCoords.bottom - viewportBottom) <= BOTTOM_EDGE_THRESHOLD
}