0
Fork 0
mirror of https://github.com/penpot/penpot.git synced 2025-03-17 18:21:23 -05:00

🐛 Fix problem with layers loading

This commit is contained in:
alonso.torres 2024-02-26 18:54:31 +01:00 committed by Andrey Antukh
parent 49c750bdaf
commit 072c724462
2 changed files with 33 additions and 4 deletions

View file

@ -155,7 +155,8 @@
children]))
(mf/defc layer-item
{::mf/wrap-props false}
{::mf/wrap-props false
::mf/wrap [mf/memo]}
[{:keys [index item selected objects sortable? filtered? depth parent-size component-child? highlighted]}]
(let [id (:id item)
blocked? (:blocked item)

View file

@ -24,7 +24,9 @@
[app.util.globals :as globals]
[app.util.i18n :as i18n :refer [tr]]
[app.util.keyboard :as kbd]
[app.util.object :as obj]
[app.util.timers :as ts]
[beicon.v2.core :as rx]
[cuerdas.core :as str]
[goog.events :as events]
[rumext.v2 :as mf])
@ -34,10 +36,36 @@
;; level frames and try to avoid rerender frames that are does not
;; affected by the selected set.
(mf/defc frame-wrapper
{::mf/wrap-props false
::mf/wrap [mf/memo #(mf/deferred % ts/idle-then-raf)]}
{::mf/wrap-props false}
[props]
[:> layer-item props])
(let [selected (obj/get props "selected")
callback (mf/use-var false)
pending-selected (mf/use-var selected)
current-selected (mf/use-state selected)
props
(-> props
(obj/clone)
(obj/set! "selected" @current-selected))]
(mf/use-effect
(mf/deps selected)
(fn []
;; Change in selected we schedule a idle-then-raf
;; following changes will update the pending but not create
;; a new callbacks
(reset! pending-selected selected)
(when (not @callback)
(reset!
callback
(ts/idle-then-raf
(fn []
(reset! current-selected @pending-selected)
(reset! callback nil)))))
(fn []
(when @callback
(rx/dispose! @callback)))))
[:> layer-item props]))
(mf/defc layers-tree
{::mf/wrap [mf/memo #(mf/throttle % 200)]