mirror of
https://github.com/penpot/penpot.git
synced 2025-06-14 09:51:37 +02:00
✨ Improves resize observer
This commit is contained in:
parent
e1ccde6533
commit
ab5323d873
1 changed files with 8 additions and 4 deletions
|
@ -23,11 +23,15 @@
|
||||||
[app.main.ui.workspace.shapes.common :as common]
|
[app.main.ui.workspace.shapes.common :as common]
|
||||||
[app.main.ui.workspace.shapes.text.editor :as editor]
|
[app.main.ui.workspace.shapes.text.editor :as editor]
|
||||||
[app.util.dom :as dom]
|
[app.util.dom :as dom]
|
||||||
|
[app.util.logging :as log]
|
||||||
[app.util.object :as obj]
|
[app.util.object :as obj]
|
||||||
[app.util.timers :as timers]
|
[app.util.timers :as timers]
|
||||||
[beicon.core :as rx]
|
[beicon.core :as rx]
|
||||||
[rumext.alpha :as mf]))
|
[rumext.alpha :as mf]))
|
||||||
|
|
||||||
|
;; Change this to :info :debug or :trace to debug this module
|
||||||
|
(log/set-level! :warn)
|
||||||
|
|
||||||
;; --- Events
|
;; --- Events
|
||||||
|
|
||||||
(defn use-double-click [{:keys [id]} selected?]
|
(defn use-double-click [{:keys [id]} selected?]
|
||||||
|
@ -44,7 +48,7 @@
|
||||||
(mf/defc text-wrapper
|
(mf/defc text-wrapper
|
||||||
{::mf/wrap-props false}
|
{::mf/wrap-props false}
|
||||||
[props]
|
[props]
|
||||||
(let [{:keys [id x y width height] :as shape} (unchecked-get props "shape")
|
(let [{:keys [id name x y width height] :as shape} (unchecked-get props "shape")
|
||||||
selected-iref (mf/use-memo (mf/deps (:id shape))
|
selected-iref (mf/use-memo (mf/deps (:id shape))
|
||||||
#(refs/make-selected-ref (:id shape)))
|
#(refs/make-selected-ref (:id shape)))
|
||||||
selected? (mf/deref selected-iref)
|
selected? (mf/deref selected-iref)
|
||||||
|
@ -63,7 +67,7 @@
|
||||||
handle-pointer-leave (we/use-pointer-leave shape)
|
handle-pointer-leave (we/use-pointer-leave shape)
|
||||||
handle-double-click (use-double-click shape selected?)
|
handle-double-click (use-double-click shape selected?)
|
||||||
|
|
||||||
paragraph-ref (mf/use-var nil)
|
paragraph-ref (mf/use-state nil)
|
||||||
|
|
||||||
handle-resize-text
|
handle-resize-text
|
||||||
(mf/use-callback
|
(mf/use-callback
|
||||||
|
@ -93,9 +97,9 @@
|
||||||
(fn []
|
(fn []
|
||||||
(when-let [paragraph-node @paragraph-ref]
|
(when-let [paragraph-node @paragraph-ref]
|
||||||
(let [observer (js/ResizeObserver. handle-resize-text)]
|
(let [observer (js/ResizeObserver. handle-resize-text)]
|
||||||
|
(log/debug :msg "Attach resize observer" :shape-id id :shape-name name)
|
||||||
(.observe observer paragraph-node)
|
(.observe observer paragraph-node)
|
||||||
#(.disconnect observer)))
|
#(.disconnect observer)))))
|
||||||
))
|
|
||||||
|
|
||||||
[:> shape-container {:shape shape}
|
[:> shape-container {:shape shape}
|
||||||
;; We keep hidden the shape when we're editing so it keeps track of the size
|
;; We keep hidden the shape when we're editing so it keeps track of the size
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue