Wrap the useCodeMirrorMeasurement state setter in a timeout (#16818)

GitOrigin-RevId: 9f7c12f679ab3947724cc52c63fcee198c73ae87
This commit is contained in:
Alf Eaton 2024-02-01 09:43:11 +00:00 committed by Copybot
parent c443322a41
commit 373c4736e8

View file

@ -8,7 +8,7 @@ export default function useCodeMirrorMeasurement(
measure: (view: EditorView) => number
) {
const view = useCodeMirrorViewContext()
const [measurement, setMeasurement] = useState(measure(view))
const [measurement, setMeasurement] = useState(() => measure(view))
useEventListener(
'editor:geometry-change',
@ -17,7 +17,10 @@ export default function useCodeMirrorMeasurement(
key,
read: () => measure(view),
write(value) {
setMeasurement(value)
// wrap the React state setter in a timeout so it doesn't run inside the CodeMirror update cycle
window.setTimeout(() => {
setMeasurement(value)
})
},
})
}, [view, measure, key])