From 8e5d0ad41c37e67d26e9e45d2bd9395bee12d6e6 Mon Sep 17 00:00:00 2001 From: Alf Eaton Date: Thu, 1 Feb 2024 09:43:11 +0000 Subject: [PATCH] Wrap the useCodeMirrorMeasurement state setter in a timeout (#16818) GitOrigin-RevId: 9f7c12f679ab3947724cc52c63fcee198c73ae87 --- .../source-editor/hooks/use-codemirror-measurement.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/services/web/frontend/js/features/source-editor/hooks/use-codemirror-measurement.ts b/services/web/frontend/js/features/source-editor/hooks/use-codemirror-measurement.ts index bfba8b0574..b6e8c7112d 100644 --- a/services/web/frontend/js/features/source-editor/hooks/use-codemirror-measurement.ts +++ b/services/web/frontend/js/features/source-editor/hooks/use-codemirror-measurement.ts @@ -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])