mirror of
https://github.com/penpot/penpot.git
synced 2026-09-11 22:49:30 +00:00
🐛 Fix sidebar scroll to shape (#10600)
This commit is contained in:
parent
bcf77767b2
commit
8ac2e8c8a8
@ -490,8 +490,7 @@
|
|||||||
selected-child-render-idx
|
selected-child-render-idx
|
||||||
(when (> total default-chunk-size)
|
(when (> total default-chunk-size)
|
||||||
(some (fn [sel-id]
|
(some (fn [sel-id]
|
||||||
(let [idx (.indexOf shapes sel-id)]
|
(d/index-of-pred shapes #(= (get % :id) sel-id)))
|
||||||
(when (>= idx 0) idx)))
|
|
||||||
selected))
|
selected))
|
||||||
|
|
||||||
;; Load at least enough to include the selected child plus extra
|
;; Load at least enough to include the selected child plus extra
|
||||||
@ -509,12 +508,7 @@
|
|||||||
|
|
||||||
(reset! children-count* new-count))
|
(reset! children-count* new-count))
|
||||||
|
|
||||||
(reset! children-count* 0))
|
(reset! children-count* 0))))
|
||||||
|
|
||||||
(fn []
|
|
||||||
(when-let [obs (mf/ref-val observer-ref)]
|
|
||||||
(.disconnect obs)
|
|
||||||
(mf/set-ref-val! obs nil)))))
|
|
||||||
|
|
||||||
;; Re-observe sentinel whenever children-count changes (sentinel moves)
|
;; Re-observe sentinel whenever children-count changes (sentinel moves)
|
||||||
;; and (shapes item) to reconnect observer after shape changes
|
;; and (shapes item) to reconnect observer after shape changes
|
||||||
@ -524,11 +518,6 @@
|
|||||||
scroll-node (dom/get-parent-with-data name-node "scroll-container")
|
scroll-node (dom/get-parent-with-data name-node "scroll-container")
|
||||||
lazy-node (mf/ref-val lazy-ref)]
|
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
|
;; Setup new observer if there are more children to load
|
||||||
(when (and ^boolean is-expanded
|
(when (and ^boolean is-expanded
|
||||||
^boolean (< children-count total)
|
^boolean (< children-count total)
|
||||||
@ -542,7 +531,13 @@
|
|||||||
(reset! children-count* next-count))))
|
(reset! children-count* next-count))))
|
||||||
observer (js/IntersectionObserver. cb #js {:root scroll-node})]
|
observer (js/IntersectionObserver. cb #js {:root scroll-node})]
|
||||||
(.observe observer lazy-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*
|
[:> layer-item-inner*
|
||||||
{:ref dref
|
{:ref dref
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user