From 8833e19c7fbe9447db422e94ded99580e58dd6fb Mon Sep 17 00:00:00 2001 From: "alonso.torres" Date: Mon, 24 Jan 2022 15:04:36 +0100 Subject: [PATCH] :bug: Small fixes for guides --- .../src/app/main/data/workspace/guides.cljs | 2 +- .../src/app/main/ui/workspace/viewport.cljs | 1 - .../main/ui/workspace/viewport/guides.cljs | 3 +-- .../app/main/ui/workspace/viewport/utils.cljs | 11 +++----- frontend/src/app/util/geom/snap_points.cljs | 3 --- frontend/src/app/util/snap_data.cljs | 26 ++++++++++--------- 6 files changed, 20 insertions(+), 26 deletions(-) diff --git a/frontend/src/app/main/data/workspace/guides.cljs b/frontend/src/app/main/data/workspace/guides.cljs index 703ae08d4..ba614eebd 100644 --- a/frontend/src/app/main/data/workspace/guides.cljs +++ b/frontend/src/app/main/data/workspace/guides.cljs @@ -70,12 +70,12 @@ :origin it})))))) (defn move-frame-guides + "Move guides that are inside a frame when that frame is moved" [ids] (us/verify (s/coll-of uuid?) ids) (ptk/reify ::move-frame-guides ptk/WatchEvent - (watch [_ state _] (let [objects (wsh/lookup-page-objects state) frame-ids? (->> ids (filter #(= :frame (get-in objects [% :type]))) (into #{})) diff --git a/frontend/src/app/main/ui/workspace/viewport.cljs b/frontend/src/app/main/ui/workspace/viewport.cljs index ca67ea598..2ca92bb7f 100644 --- a/frontend/src/app/main/ui/workspace/viewport.cljs +++ b/frontend/src/app/main/ui/workspace/viewport.cljs @@ -157,7 +157,6 @@ show-artboard-names? (contains? layout :display-artboard-names) show-rules? (contains? layout :rules) - ;; TODO disabled-guides? (or drawing-tool transform)] (hooks/setup-dom-events viewport-ref zoom disable-paste in-viewport?) diff --git a/frontend/src/app/main/ui/workspace/viewport/guides.cljs b/frontend/src/app/main/ui/workspace/viewport/guides.cljs index 25afe586c..f18d913f6 100644 --- a/frontend/src/app/main/ui/workspace/viewport/guides.cljs +++ b/frontend/src/app/main/ui/workspace/viewport/guides.cljs @@ -97,7 +97,6 @@ ;; TODO: Change when pixel-grid flag exists new-position (mth/round new-position) new-frame-id (:id (get-hover-frame))] - #_(prn ">>" new-position new-frame-id) (swap! state assoc :new-position new-position :new-frame-id new-frame-id)))))] @@ -276,7 +275,7 @@ (when (or (nil? frame) (is-guide-inside-frame? (assoc guide :position pos) frame) (:hover @state true)) - [:g.guide-area {:data-guide-frame-id (when (some? frame) (str (:id frame)))} + [:g.guide-area (when-not disabled-guides? (let [{:keys [x y width height]} (guide-area-axis pos vbox zoom frame axis)] [:rect {:x x diff --git a/frontend/src/app/main/ui/workspace/viewport/utils.cljs b/frontend/src/app/main/ui/workspace/viewport/utils.cljs index 5c9e3334d..088d17549 100644 --- a/frontend/src/app/main/ui/workspace/viewport/utils.cljs +++ b/frontend/src/app/main/ui/workspace/viewport/utils.cljs @@ -85,16 +85,13 @@ mask? (and group? masked-group?) ;; When the shape is a frame we maybe need to move its thumbnail - thumb-node (when frame? (dom/get-element (str "thumbnail-" id))) - - ] + thumb-node (when frame? (dom/get-element (str "thumbnail-" id)))] (cond frame? - (into [thumb-node - (dom/query shape-node ".frame-background") - (dom/query shape-node ".frame-clip")] - (dom/query-all (str "[data-guide-frame-id='" id "']"))) + [thumb-node + (dom/query shape-node ".frame-background") + (dom/query shape-node ".frame-clip")] ;; For groups we don't want to transform the whole group but only ;; its filters/masks diff --git a/frontend/src/app/util/geom/snap_points.cljs b/frontend/src/app/util/geom/snap_points.cljs index 04ce1ebbf..8fccf5bf3 100644 --- a/frontend/src/app/util/geom/snap_points.cljs +++ b/frontend/src/app/util/geom/snap_points.cljs @@ -31,9 +31,6 @@ (defn guide-snap-points [guide] - - ;; TODO: The line will be displayed from the position to the axis. Maybe - ;; revisit this (if (= :x (:axis guide)) #{(gpt/point (:position guide) 0)} #{(gpt/point 0 (:position guide))})) diff --git a/frontend/src/app/util/snap_data.cljs b/frontend/src/app/util/snap_data.cljs index 1874f7793..9a58cd1b2 100644 --- a/frontend/src/app/util/snap_data.cljs +++ b/frontend/src/app/util/snap_data.cljs @@ -21,7 +21,7 @@ ;; PRIVATE FUNCTIONS -(defn make-insert-tree-data +(defn- make-insert-tree-data [shape-data axis] (fn [tree] (let [tree (or tree (rt/make-tree))] @@ -30,7 +30,7 @@ (rt/insert tree (get-in data [:pt axis]) data)) $ shape-data))))) -(defn make-delete-tree-data +(defn- make-delete-tree-data [shape-data axis] (fn [tree] (let [tree (or tree (rt/make-tree))] @@ -39,7 +39,7 @@ (rt/remove tree (get-in data [:pt axis]) data)) $ shape-data))))) -(defn add-root-frame +(defn- add-root-frame [page-data] (let [frame-id uuid/zero] @@ -47,7 +47,7 @@ (assoc-in [frame-id :x] (rt/make-tree)) (assoc-in [frame-id :y] (rt/make-tree))))) -(defn add-frame +(defn- add-frame [page-data frame] (let [frame-id (:id frame) parent-id (:parent-id frame) @@ -79,7 +79,7 @@ (update-in [frame-id :x] (make-insert-tree-data (d/concat-vec frame-data grid-x-data) :x)) (update-in [frame-id :y] (make-insert-tree-data (d/concat-vec frame-data grid-y-data) :y))))) -(defn add-shape +(defn- add-shape [page-data shape] (let [frame-id (:frame-id shape) snap-points (snap/shape-snap-points shape) @@ -94,7 +94,7 @@ (update-in [frame-id :y] (make-insert-tree-data shape-data :y))))) -(defn add-guide +(defn- add-guide [page-data guide] (let [guide-data (->> (snap/guide-snap-points guide) @@ -113,7 +113,7 @@ (assoc-in [:guides :objects-data (:id guide)] guide-data) (update-in [:guides (:axis guide)] (make-insert-tree-data guide-data (:axis guide))))))) -(defn remove-frame +(defn- remove-frame [page-data frame] (let [frame-id (:id frame) root-data (get-in page-data [uuid/zero :objects-data frame-id])] @@ -123,7 +123,7 @@ (update-in [uuid/zero :y] (make-delete-tree-data root-data :y)) (dissoc frame-id)))) -(defn remove-shape +(defn- remove-shape [page-data shape] (let [frame-id (:frame-id shape) @@ -133,7 +133,7 @@ (update-in [frame-id :x] (make-delete-tree-data shape-data :x)) (update-in [frame-id :y] (make-delete-tree-data shape-data :y))))) -(defn remove-guide +(defn- remove-guide [page-data guide] (if-let [frame-id (:frame-id guide)] (let [guide-data (get-in page-data [frame-id :objects-data (:id guide)])] @@ -147,7 +147,7 @@ (d/dissoc-in [:guides :objects-data (:id guide)]) (update-in [:guides (:axis guide)] (make-delete-tree-data guide-data (:axis guide))))))) -(defn update-frame +(defn- update-frame [page-data [_ new-frame]] (let [frame-id (:id new-frame) root-data (get-in page-data [uuid/zero :objects-data frame-id]) @@ -159,19 +159,20 @@ (update-in [frame-id :y] (make-delete-tree-data frame-data :y)) (add-frame new-frame)))) -(defn update-shape +(defn- update-shape [page-data [old-shape new-shape]] (-> page-data (remove-shape old-shape) (add-shape new-shape))) -(defn update-guide +(defn- update-guide [page-data [old-guide new-guide]] (-> page-data (remove-guide old-guide) (add-guide new-guide))) ;; PUBLIC API + (defn make-snap-data "Creates an empty snap index" [] @@ -231,6 +232,7 @@ (add-page snap-data page))) (defn query + "Retrieve the shape data for the snaps in that range" [snap-data page-id frame-id axis [from to]] (d/concat-vec