Chunk stale text resize into batches on page load

Process resize-wasm-text-all in groups of 64 with a short delay
between chunks so propagate-modifiers does not block the main
thread on large pages.
This commit is contained in:
Alejandro Alonso 2026-08-28 13:14:15 +02:00
parent bbc85f8735
commit fad5e712e7

View File

@ -507,11 +507,19 @@
;; Resize auto-grow text shapes whose selrect does not match
;; the WASM text layout once their fonts finish loading.
;; Process in chunks so a large page does not freeze the main
;; thread with one propagate-modifiers pass.
(->> stream
(rx/filter (ptk/type? :app.render-wasm.api/stale-text-selrects))
(rx/map deref)
(rx/map (fn [{:keys [ids]}]
(dwwt/resize-wasm-text-all ids))))
(rx/mapcat
(fn [{:keys [ids]}]
(apply rx/merge
(map-indexed
(fn [idx chunk]
(cond->> (rx/of (dwwt/resize-wasm-text-all chunk))
(pos? idx) (rx/delay (* idx 50))))
(partition-all 64 ids))))))
(let [local-commits-s
(->> stream