mirror of
https://github.com/penpot/penpot.git
synced 2025-05-30 04:56:11 +02:00
Merge remote-tracking branch 'origin/staging' into develop
This commit is contained in:
commit
617edbebec
2 changed files with 17 additions and 29 deletions
|
@ -155,14 +155,13 @@
|
||||||
children]))
|
children]))
|
||||||
|
|
||||||
(mf/defc layer-item
|
(mf/defc layer-item
|
||||||
{::mf/wrap-props false
|
{::mf/props :obj
|
||||||
::mf/wrap [mf/memo]}
|
::mf/memo true}
|
||||||
[{:keys [index item selected objects sortable? filtered? depth parent-size component-child? highlighted]}]
|
[{:keys [index item selected objects sortable? filtered? depth parent-size component-child? highlighted]}]
|
||||||
(let [id (:id item)
|
(let [id (:id item)
|
||||||
blocked? (:blocked item)
|
blocked? (:blocked item)
|
||||||
hidden? (:hidden item)
|
hidden? (:hidden item)
|
||||||
|
|
||||||
|
|
||||||
drag-disabled* (mf/use-state false)
|
drag-disabled* (mf/use-state false)
|
||||||
drag-disabled? (deref drag-disabled*)
|
drag-disabled? (deref drag-disabled*)
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,6 @@
|
||||||
[app.util.globals :as globals]
|
[app.util.globals :as globals]
|
||||||
[app.util.i18n :as i18n :refer [tr]]
|
[app.util.i18n :as i18n :refer [tr]]
|
||||||
[app.util.keyboard :as kbd]
|
[app.util.keyboard :as kbd]
|
||||||
[app.util.object :as obj]
|
|
||||||
[app.util.timers :as ts]
|
[app.util.timers :as ts]
|
||||||
[beicon.v2.core :as rx]
|
[beicon.v2.core :as rx]
|
||||||
[cuerdas.core :as str]
|
[cuerdas.core :as str]
|
||||||
|
@ -36,35 +35,25 @@
|
||||||
;; level frames and try to avoid rerender frames that are does not
|
;; level frames and try to avoid rerender frames that are does not
|
||||||
;; affected by the selected set.
|
;; affected by the selected set.
|
||||||
(mf/defc frame-wrapper
|
(mf/defc frame-wrapper
|
||||||
{::mf/wrap-props false}
|
{::mf/props :obj}
|
||||||
[props]
|
[{:keys [selected] :as props}]
|
||||||
(let [selected (obj/get props "selected")
|
(let [disposable (mf/use-var nil)
|
||||||
callback (mf/use-var false)
|
|
||||||
pending-selected (mf/use-var selected)
|
pending-selected (mf/use-var selected)
|
||||||
current-selected (mf/use-state selected)
|
current-selected (mf/use-state selected)
|
||||||
|
props (mf/spread props :selected @current-selected)]
|
||||||
|
|
||||||
props
|
(mf/with-effect [selected]
|
||||||
(-> props
|
(reset! pending-selected selected)
|
||||||
(obj/clone)
|
(swap! disposable (fn [value]
|
||||||
(obj/set! "selected" @current-selected))]
|
(when (some? value)
|
||||||
|
(rx/dispose! value))
|
||||||
|
(ts/idle-then-raf
|
||||||
|
(fn []
|
||||||
|
(reset! current-selected @pending-selected)
|
||||||
|
(reset! disposable nil)))))
|
||||||
|
(fn []
|
||||||
|
(some-> @disposable rx/dispose!)))
|
||||||
|
|
||||||
(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]))
|
[:> layer-item props]))
|
||||||
|
|
||||||
(mf/defc layers-tree
|
(mf/defc layers-tree
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue