🐛 Fix sidebar scroll to shape (#10600)

This commit is contained in:
Elena Torró 2026-07-08 20:38:16 +02:00 committed by GitHub
parent bcf77767b2
commit 8ac2e8c8a8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -490,8 +490,7 @@
selected-child-render-idx
(when (> total default-chunk-size)
(some (fn [sel-id]
(let [idx (.indexOf shapes sel-id)]
(when (>= idx 0) idx)))
(d/index-of-pred shapes #(= (get % :id) sel-id)))
selected))
;; Load at least enough to include the selected child plus extra
@ -509,12 +508,7 @@
(reset! children-count* new-count))
(reset! children-count* 0))
(fn []
(when-let [obs (mf/ref-val observer-ref)]
(.disconnect obs)
(mf/set-ref-val! obs nil)))))
(reset! children-count* 0))))
;; Re-observe sentinel whenever children-count changes (sentinel moves)
;; and (shapes item) to reconnect observer after shape changes
@ -524,11 +518,6 @@
scroll-node (dom/get-parent-with-data name-node "scroll-container")
lazy-node (mf/ref-val lazy-ref)]
;; Disconnect previous observer
(when-let [obs (mf/ref-val observer-ref)]
(.disconnect obs)
(mf/set-ref-val! observer-ref nil))
;; Setup new observer if there are more children to load
(when (and ^boolean is-expanded
^boolean (< children-count total)
@ -542,7 +531,13 @@
(reset! children-count* next-count))))
observer (js/IntersectionObserver. cb #js {:root scroll-node})]
(.observe observer lazy-node)
(mf/set-ref-val! observer-ref observer)))))
(mf/set-ref-val! observer-ref observer)))
;; Disconnect on deps change or unmount; this effect owns the observer
(fn []
(when-let [obs (mf/ref-val observer-ref)]
(.disconnect obs)
(mf/set-ref-val! observer-ref nil)))))
[:> layer-item-inner*
{:ref dref