diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs b/frontend/src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs index 9e544c808..234c7cc06 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs @@ -125,12 +125,11 @@ on-change (mf/use-fn (fn [new-color old-color] - (let [old-color (-> (or old-color @prev-color*) + (let [old-color (-> old-color (dissoc :name) (dissoc :path) (d/without-nils)) shapes-by-color (get @grouped-colors* old-color)] - (reset! prev-color* new-color) (st/emit! (dc/change-color-in-selected new-color shapes-by-color old-color))))) on-open (mf/use-fn diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs b/frontend/src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs index 5f8e0d0af..fd608efd1 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs @@ -69,6 +69,8 @@ shared-libs (mf/deref refs/workspace-libraries) hover-detach (mf/use-state false) + on-change-var (h/use-update-var {:fn on-change}) + src-colors (if (= (:file-id color) current-file-id) file-colors (get-in shared-libs [(:file-id color) :data :colors])) @@ -83,18 +85,18 @@ (when on-detach (on-detach color))) change-value (fn [new-value] - (when on-change (on-change (-> color - (assoc :color new-value) - (dissoc :gradient))))) + (when (:fn @on-change-var) ((:fn @on-change-var) (-> color + (assoc :color new-value) + (dissoc :gradient))))) change-opacity (fn [new-opacity] - (when on-change (on-change (assoc color + (when (:fn @on-change-var) ((:fn @on-change-var) (assoc color :opacity new-opacity :id nil :file-id nil)))) handle-pick-color (fn [color] - (when on-change (on-change (merge uc/empty-color color)))) + (when (:fn @on-change-var) ((:fn @on-change-var) (merge uc/empty-color color)))) handle-select (fn [] (select-only color))