From 5a36cbceb7af382035d1605c4edb8e66d1d51120 Mon Sep 17 00:00:00 2001 From: "alonso.torres" Date: Thu, 26 Jan 2023 14:27:14 +0100 Subject: [PATCH] :sparkles: Enter to select children allow for multiselection --- frontend/src/app/main/data/workspace.cljs | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/frontend/src/app/main/data/workspace.cljs b/frontend/src/app/main/data/workspace.cljs index 9dde3bd30..e6ece3a86 100644 --- a/frontend/src/app/main/data/workspace.cljs +++ b/frontend/src/app/main/data/workspace.cljs @@ -839,13 +839,22 @@ (ptk/reify ::start-editing-selected ptk/WatchEvent (watch [_ state _] - (let [selected (wsh/lookup-selected state)] - (if-not (= 1 (count selected)) - (rx/empty) + (let [selected (wsh/lookup-selected state) + objects (wsh/lookup-page-objects state)] - (let [objects (wsh/lookup-page-objects state) - {:keys [id type shapes]} (get objects (first selected))] + (if (> (count selected) 1) + (let [shapes-to-select + (->> selected + (reduce + (fn [result shape-id] + (let [children (dm/get-in objects [shape-id :shapes])] + (if (empty? children) + (conj result shape-id) + (into result children)))) + (d/ordered-set)))] + (rx/of (dws/select-shapes shapes-to-select))) + (let [{:keys [id type shapes]} (get objects (first selected))] (case type :text (rx/of (dwe/start-edition-mode id))