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 d29dab7941
commit 666f43b4ad

View File

@ -507,11 +507,20 @@
;; 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]}]
(->> (partition-all 64 ids)
(map-indexed
(fn [idx chunk]
(if (zero? idx)
(rx/of (dwwt/resize-wasm-text-all chunk))
(->> (rx/of (dwwt/resize-wasm-text-all chunk))
(rx/delay (* idx 50))))))))))
(let [local-commits-s
(->> stream