diff --git a/frontend/src/app/main/ui/workspace/shapes/group.cljs b/frontend/src/app/main/ui/workspace/shapes/group.cljs index dd9a1a47e..5fbd2ad16 100644 --- a/frontend/src/app/main/ui/workspace/shapes/group.cljs +++ b/frontend/src/app/main/ui/workspace/shapes/group.cljs @@ -6,33 +6,26 @@ (ns app.main.ui.workspace.shapes.group (:require - [app.main.data.workspace :as dw] + [app.common.data.macros :as dm] [app.main.refs :as refs] - [app.main.store :as st] - [app.main.streams :as ms] [app.main.ui.shapes.group :as group] [app.main.ui.shapes.shape :refer [shape-container]] - [app.util.dom :as dom] + [app.main.ui.workspace.shapes.common :refer [check-shape-props]] [rumext.v2 :as mf])) -(defn use-double-click [{:keys [id]}] - (mf/use-callback - (mf/deps id) - (fn [event] - (dom/stop-propagation event) - (dom/prevent-default event) - (st/emit! (dw/select-inside-group id @ms/mouse-position))))) - (defn group-wrapper-factory [shape-wrapper] (let [group-shape (group/group-shape shape-wrapper)] (mf/fnc group-wrapper - {::mf/wrap [#(mf/memo' % (mf/check-props ["shape"]))] + {::mf/wrap [#(mf/memo' % check-shape-props)] ::mf/wrap-props false} [props] - (let [shape (unchecked-get props "shape") - childs-ref (mf/use-memo (mf/deps (:id shape)) #(refs/children-objects (:id shape))) - childs (mf/deref childs-ref)] + (let [shape (unchecked-get props "shape") + shape-id (dm/get-prop shape :id) + + childs* (mf/with-memo [shape-id] + (refs/children-objects shape-id)) + childs (mf/deref childs*)] [:> shape-container {:shape shape} [:& group-shape