From a72da38f6dc9a3e4fa474ecdb70e3fbea3034066 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Wed, 12 Jan 2022 20:23:50 +0100 Subject: [PATCH] :paperclip: Minor changes on :reg-objects impl. --- common/src/app/common/pages/changes.cljc | 41 ++++++++++++++---------- 1 file changed, 24 insertions(+), 17 deletions(-) diff --git a/common/src/app/common/pages/changes.cljc b/common/src/app/common/pages/changes.cljc index a48d5cf35e..f8539e038e 100644 --- a/common/src/app/common/pages/changes.cljc +++ b/common/src/app/common/pages/changes.cljc @@ -156,28 +156,35 @@ [data {:keys [page-id component-id shapes]}] ;; FIXME: Improve performance (letfn [(reg-objects [objects] - (reduce #(d/update-when %1 %2 update-group %1) objects - (sequence (comp - (mapcat #(cons % (cph/get-parents % objects))) - (map #(get objects %)) - (filter #(contains? #{:group :bool} (:type %))) - (map :id) - (distinct)) - shapes))) + (let [lookup (d/getf objects) + update-fn #(d/update-when %1 %2 update-group %1) + xform (comp + (mapcat #(cons % (cph/get-parents % objects))) + (map lookup) + (filter #(contains? #{:group :bool} (:type %))) + (map :id) + (distinct))] + + (->> (sequence xform shapes) + (reduce update-fn objects)))) + (set-mask-selrect [group children] (let [mask (first children)] (-> group - (merge (select-keys mask [:selrect :points])) - (assoc :x (-> mask :selrect :x) - :y (-> mask :selrect :y) - :width (-> mask :selrect :width) - :height (-> mask :selrect :height) - :flip-x (-> mask :flip-x) - :flip-y (-> mask :flip-y))))) + (assoc :selrect (-> mask :selrect)) + (assoc :points (-> mask :points)) + (assoc :x (-> mask :selrect :x)) + (assoc :y (-> mask :selrect :y)) + (assoc :width (-> mask :selrect :width)) + (assoc :height (-> mask :selrect :height)) + (assoc :flip-x (-> mask :flip-x)) + (assoc :flip-y (-> mask :flip-y))))) + (update-group [group objects] - (let [children (->> group :shapes (map #(get objects %)))] + (let [lookup (d/getf objects) + children (->> group :shapes (map lookup))] (cond - ;; If the group is empty we don't make any changes. Should be removed by a later process + ;; If the group is empty we don't make any changes. Will be removed by a later process (empty? children) group