From 31826933e683b5e8c1b10696b4b8d813bf50b046 Mon Sep 17 00:00:00 2001 From: prabhanshuguptagit Date: Wed, 19 Jun 2024 18:59:08 +0530 Subject: [PATCH] Set selection on paste --- src/bean/grid.cljs | 5 +++++ src/bean/ui/events.cljs | 14 +++++++++----- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/bean/grid.cljs b/src/bean/grid.cljs index df8e2d8..e038d48 100644 --- a/src/bean/grid.cljs +++ b/src/bean/grid.cljs @@ -313,6 +313,11 @@ (unmerge-cells sheet (map #(offset % start) (keys addressed-attrs)))) eval-sheet-a-few-times)) +(defn pasted-area [pasted-at addresses] + (let [{:keys [start end]} (area/addresses->area addresses)] + {:start (offset start pasted-at) + :end (offset end pasted-at)})) + (defn clear-selection [sheet {:keys [start end]}] (->> (util/addresses-matrix start end) (mapcat identity) diff --git a/src/bean/ui/events.cljs b/src/bean/ui/events.cljs index eb0ff17..b45dd50 100644 --- a/src/bean/ui/events.cljs +++ b/src/bean/ui/events.cljs @@ -52,12 +52,16 @@ {:db (update-in db [:sheet] #(grid/clear-selection % selection))} {:fx [[:dispatch [::edit-cell [r c]]]]}))))) -(rf/reg-event-db +(rf/reg-event-fx ::paste-addressed-cells - (fn paste-addressed-cells [db [_ addressed-cells]] - (update-in db [:sheet] #(grid/update-cells-bulk % - (get-in db [:ui :grid :selection]) - addressed-cells)))) + (fn paste-addressed-cells [{:keys [db]} [_ addressed-cells]] + (let [selection (get-in db [:ui :grid :selection])] + {:db (update-in db [:sheet] #(grid/update-cells-bulk % + selection + addressed-cells)) + :fx [[:dispatch [::set-selection (grid/pasted-area + (:start selection) + (keys addressed-cells))]]]}))) (rf/reg-fx ::copy-to-clipboard