From 4f6dffabb45ceed7d79d7e1b9f06f314b133ca97 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Wed, 2 Apr 2025 15:40:44 +0200 Subject: [PATCH] :recycle: Use new call convention for path drawing components --- .../main/ui/workspace/shapes/path/editor.cljs | 13 ++++--- .../src/app/main/ui/workspace/viewport.cljs | 2 +- .../main/ui/workspace/viewport/drawarea.cljs | 38 +++++++++---------- .../main/ui/workspace/viewport/selection.cljs | 4 +- .../app/main/ui/workspace/viewport_wasm.cljs | 2 +- 5 files changed, 29 insertions(+), 30 deletions(-) diff --git a/frontend/src/app/main/ui/workspace/shapes/path/editor.cljs b/frontend/src/app/main/ui/workspace/shapes/path/editor.cljs index 3814c7f44..9a85ba7e9 100644 --- a/frontend/src/app/main/ui/workspace/shapes/path/editor.cljs +++ b/frontend/src/app/main/ui/workspace/shapes/path/editor.cljs @@ -204,7 +204,7 @@ angle (gpt/angle-with-other v1 v2)] (<= (- 180 angle) 0.1)))) -(mf/defc path-editor +(mf/defc path-editor* [{:keys [shape zoom]}] (let [editor-ref (mf/use-ref nil) @@ -261,11 +261,12 @@ [(->> selected-points (map base->point) (into #{})) (->> points (remove selected-points) (into #{}))]) - show-snap? (and snap-toggled - (or (some? drag-handler) - (some? preview) - (some? moving-handler) - moving-nodes)) + show-snap? + (and snap-toggled + (or (some? drag-handler) + (some? preview) + (some? moving-handler) + moving-nodes)) handle-double-click-outside (fn [_] diff --git a/frontend/src/app/main/ui/workspace/viewport.cljs b/frontend/src/app/main/ui/workspace/viewport.cljs index 4b5ded830..760d1a23a 100644 --- a/frontend/src/app/main/ui/workspace/viewport.cljs +++ b/frontend/src/app/main/ui/workspace/viewport.cljs @@ -501,7 +501,7 @@ :on-frame-select on-frame-select}]) (when show-draw-area? - [:& drawarea/draw-area + [:> drawarea/draw-area* {:shape drawing-obj :zoom zoom :tool drawing-tool}]) diff --git a/frontend/src/app/main/ui/workspace/viewport/drawarea.cljs b/frontend/src/app/main/ui/workspace/viewport/drawarea.cljs index 19870dfa6..725d2ec8e 100644 --- a/frontend/src/app/main/ui/workspace/viewport/drawarea.cljs +++ b/frontend/src/app/main/ui/workspace/viewport/drawarea.cljs @@ -11,29 +11,13 @@ [app.common.types.shape :as cts] [app.main.ui.shapes.path :refer [path-shape]] [app.main.ui.workspace.shapes :as shapes] - [app.main.ui.workspace.shapes.path.editor :refer [path-editor]] + [app.main.ui.workspace.shapes.path.editor :refer [path-editor*]] [rumext.v2 :as mf])) -(declare generic-draw-area) -(declare path-draw-area) - -(mf/defc draw-area - [{:keys [shape zoom tool] :as props}] - - ;; Prevent rendering something that it's not a shape. - (when (cts/shape? shape) - [:g.draw-area - [:g {:style {:pointer-events "none"}} - [:& shapes/shape-wrapper {:shape shape}]] - - (case tool - :path [:& path-editor {:shape shape :zoom zoom}] - :curve [:& path-shape {:shape shape :zoom zoom}] - #_:default [:& generic-draw-area {:shape shape :zoom zoom}])])) - -(mf/defc generic-draw-area +(mf/defc generic-draw-area* + {::mf/private true} [{:keys [shape zoom]}] - (let [{:keys [x y width height]} (:selrect shape)] + (let [{:keys [x y width height]} (get shape :selrect)] (when (and x y (not (mth/nan? x)) (not (mth/nan? y))) @@ -45,3 +29,17 @@ :fill "none" :stroke-width (/ 1 zoom)}}]))) +(mf/defc draw-area* + [{:keys [shape zoom tool] :as props}] + + ;; Prevent rendering something that it's not a shape. + (when (cts/shape? shape) + [:g.draw-area + [:g {:style {:pointer-events "none"}} + [:& shapes/shape-wrapper {:shape shape}]] + + (case tool + :path [:> path-editor* props] + :curve [:& path-shape {:shape shape :zoom zoom}] + #_:default [:> generic-draw-area* props])])) + diff --git a/frontend/src/app/main/ui/workspace/viewport/selection.cljs b/frontend/src/app/main/ui/workspace/viewport/selection.cljs index a3b4005f0..b37a30139 100644 --- a/frontend/src/app/main/ui/workspace/viewport/selection.cljs +++ b/frontend/src/app/main/ui/workspace/viewport/selection.cljs @@ -20,7 +20,7 @@ [app.main.store :as st] [app.main.ui.context :as ctx] [app.main.ui.css-cursors :as cur] - [app.main.ui.workspace.shapes.path.editor :refer [path-editor]] + [app.main.ui.workspace.shapes.path.editor :refer [path-editor*]] [app.util.array :as array] [app.util.debug :as dbg] [app.util.dom :as dom] @@ -603,7 +603,7 @@ nil (= edition shape-id) - [:& path-editor + [:> path-editor* {:zoom zoom :shape shape}] diff --git a/frontend/src/app/main/ui/workspace/viewport_wasm.cljs b/frontend/src/app/main/ui/workspace/viewport_wasm.cljs index 5830dcad0..011a8c576 100644 --- a/frontend/src/app/main/ui/workspace/viewport_wasm.cljs +++ b/frontend/src/app/main/ui/workspace/viewport_wasm.cljs @@ -507,7 +507,7 @@ :on-frame-select on-frame-select}]) (when show-draw-area? - [:& drawarea/draw-area + [:> drawarea/draw-area* {:shape drawing-obj :zoom zoom :tool drawing-tool}])