🐛 Fix problem with rules when changing pages

This commit is contained in:
alonso.torres 2023-03-09 17:28:21 +01:00
parent 2a632512b3
commit 37f52cafc9
2 changed files with 22 additions and 20 deletions

View file

@ -81,25 +81,27 @@
callback (hooks/use-ref-callback callback)
;; We use the ref as a callback when the dom node is ready (or change)
node-ref (mf/use-fn
(fn [^js node]
(when (some? node)
(let [^js observer (mf/ref-val observer-ref)
^js prev-val (mf/ref-val prev-val-ref)]
node-ref
(mf/use-fn
(fn [^js node]
(when (some? node)
(let [^js observer (mf/ref-val observer-ref)
^js prev-val (mf/ref-val prev-val-ref)]
(when (and (not= prev-val node) (some? observer))
(log/debug :action "disconnect" :js/prev-val prev-val :js/node node)
(.disconnect observer)
(mf/set-ref-val! observer-ref nil))
(when (and (not= prev-val node) (some? observer))
(log/debug :action "disconnect" :js/prev-val prev-val :js/node node)
(.disconnect observer)
(mf/set-ref-val! observer-ref nil))
(when (and (not= prev-val node) (some? node))
(let [^js observer (js/ResizeObserver.
#(callback last-resize-type (dom/get-client-size node)))]
(mf/set-ref-val! observer-ref observer)
(log/debug :action "observe" :js/node node :js/observer observer)
(.observe observer node))))
(when (and (not= prev-val node) (some? node))
(let [^js observer (js/ResizeObserver.
#(callback last-resize-type (dom/get-client-size node)))]
(mf/set-ref-val! observer-ref observer)
(log/debug :action "observe" :js/node node :js/observer observer)
(.observe observer node)
(callback last-resize-type (dom/get-client-size node)))))
(mf/set-ref-val! prev-val-ref node))))]
(mf/set-ref-val! prev-val-ref node))))]
(mf/with-effect []
;; On dismount we need to disconnect the current observer

View file

@ -70,7 +70,8 @@
(when (and textpalette? (not hide-ui?))
[:& textpalette])
[:section.workspace-content {:ref node-ref}
[:section.workspace-content {:key (dm/str "workspace-" page-id)
:ref node-ref}
[:section.workspace-viewport
(when (debug? :coordinates)
[:& coordinates/coordinates {:colorpalette? colorpalette?}])
@ -79,8 +80,7 @@
[:div.history-debug-overlay
[:button {:on-click #(st/emit! dw/reinitialize-undo)} "CLEAR"]
[:& history-toolbox]])
[:& viewport {:key (dm/str "workspace-" page-id)
:file file
[:& viewport {:file file
:wlocal wlocal
:wglobal wglobal
:selected selected
@ -131,7 +131,7 @@
project (mf/deref refs/workspace-project)
layout (mf/deref refs/workspace-layout)
wglobal (mf/deref refs/workspace-global)
ready? (mf/deref refs/workspace-ready?)
ready? (mf/deref refs/workspace-ready?)
workspace-read-only? (mf/deref refs/workspace-read-only?)
components-v2 (features/use-feature :components-v2)