From 2a04f78337a22217fd4f530c68a0823f8d318d32 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Thu, 29 May 2025 11:14:53 +0200 Subject: [PATCH 1/3] :sparkles: Add common transducers section to common data ns --- common/src/app/common/data.cljc | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/common/src/app/common/data.cljc b/common/src/app/common/data.cljc index 80268f617e..5e7ae75cf3 100644 --- a/common/src/app/common/data.cljc +++ b/common/src/app/common/data.cljc @@ -33,6 +33,12 @@ (def boolean-or-nil? (some-fn nil? boolean?)) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Commonly used transducers +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(def xf:map-id (map :id)) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Data Structures ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; From 3a27a5a542934bd23fcbdfb1e189e5cec1bf1db1 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Thu, 29 May 2025 11:15:46 +0200 Subject: [PATCH 2/3] :sparkles: Add minor naming change on process selected fn --- frontend/src/app/main/data/helpers.cljs | 8 ++++---- frontend/src/app/main/data/workspace/bool.cljs | 4 ++-- frontend/src/app/main/refs.cljs | 9 +++++---- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/frontend/src/app/main/data/helpers.cljs b/frontend/src/app/main/data/helpers.cljs index 1fd4c1bd92..9a97d36e16 100644 --- a/frontend/src/app/main/data/helpers.cljs +++ b/frontend/src/app/main/data/helpers.cljs @@ -64,15 +64,15 @@ (-> (lookup-page state file-id page-id) (get :objects)))) -(defn process-selected-shapes +(defn process-selected ([objects selected] - (process-selected-shapes objects selected nil)) + (process-selected objects selected nil)) ([objects selected {:keys [omit-blocked?] :or {omit-blocked? false}}] (letfn [(selectable? [id] (and (contains? objects id) (or (not omit-blocked?) - (not (get-in objects [id :blocked] false)))))] + (not (dm/get-in objects [id :blocked] false)))))] (let [selected (->> selected (cfh/clean-loops objects))] (into (d/ordered-set) (filter selectable?) @@ -95,7 +95,7 @@ ([state page-id options] (let [objects (lookup-page-objects state page-id) selected (dm/get-in state [:workspace-local :selected])] - (process-selected-shapes objects selected options)))) + (process-selected objects selected options)))) (defn lookup-shape ([state id] diff --git a/frontend/src/app/main/data/workspace/bool.cljs b/frontend/src/app/main/data/workspace/bool.cljs index e91e66ca6a..bb0e62b28f 100644 --- a/frontend/src/app/main/data/workspace/bool.cljs +++ b/frontend/src/app/main/data/workspace/bool.cljs @@ -69,8 +69,8 @@ (-> type d/name str/capital) ids - (->> (or ids (dsh/lookup-selected state)) - (cph/clean-loops objects)) + (->> (or ids (dsh/get-selected-ids state)) + (dsh/process-selected objects)) xform (comp diff --git a/frontend/src/app/main/refs.cljs b/frontend/src/app/main/refs.cljs index 5a3dab07de..fb0e80eba2 100644 --- a/frontend/src/app/main/refs.cljs +++ b/frontend/src/app/main/refs.cljs @@ -159,14 +159,15 @@ (let [objects (dsh/lookup-page-objects state) selected (dm/get-in state [:workspace-local :selected])] {:objects objects :selected selected})) - st/state (fn [v1 v2] - (and (identical? (:objects v1) (:objects v2)) - (= (:selected v1) (:selected v2)))))) + st/state + (fn [v1 v2] + (and (identical? (:objects v1) (:objects v2)) + (= (:selected v1) (:selected v2)))))) (def selected-shapes (l/derived (fn [{:keys [objects selected]}] - (dsh/process-selected-shapes objects selected)) + (dsh/process-selected objects selected)) selected-shapes-data =)) (defn make-selected-ref From d31f64796f655a386764ebcd322926b731fcc048 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Thu, 29 May 2025 11:16:12 +0200 Subject: [PATCH 3/3] :bug: Fix incorrect bool shape creation issue --- frontend/src/app/main/data/workspace/bool.cljs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/app/main/data/workspace/bool.cljs b/frontend/src/app/main/data/workspace/bool.cljs index bb0e62b28f..e2b85feb19 100644 --- a/frontend/src/app/main/data/workspace/bool.cljs +++ b/frontend/src/app/main/data/workspace/bool.cljs @@ -44,7 +44,7 @@ :frame-id (:frame-id head) :parent-id (:parent-id head) :name name - :shapes (vec shapes)} + :shapes (into [] d/xf:map-id shapes)} shape (-> shape