diff --git a/common/src/app/common/geom/matrix.cljc b/common/src/app/common/geom/matrix.cljc index f83f5cca7..b9d8eca19 100644 --- a/common/src/app/common/geom/matrix.cljc +++ b/common/src/app/common/geom/matrix.cljc @@ -14,7 +14,7 @@ [app.common.spec :as us] [clojure.spec.alpha :as s])) -(def precision 3) +(def precision 6) ;; --- Matrix Impl diff --git a/frontend/src/app/main/ui/hooks.cljs b/frontend/src/app/main/ui/hooks.cljs index 6fc2c6850..1b9c06105 100644 --- a/frontend/src/app/main/ui/hooks.cljs +++ b/frontend/src/app/main/ui/hooks.cljs @@ -300,13 +300,13 @@ [key default] (let [id (use-id) state (mf/use-state (get @storage key default)) - stream (mf/with-memo [] + stream (mf/with-memo [id] (->> mbc/stream - (rx/filter #(= (:type %) key)) (rx/filter #(not= (:id %) id)) + (rx/filter #(= (:type %) key)) (rx/map deref)))] - (mf/with-effect [@state key] + (mf/with-effect [@state key id] (mbc/emit! id key @state) (swap! storage assoc key @state)) diff --git a/frontend/src/app/main/ui/hooks/mutable_observer.cljs b/frontend/src/app/main/ui/hooks/mutable_observer.cljs index 239deea2e..7a81188b2 100644 --- a/frontend/src/app/main/ui/hooks/mutable_observer.cljs +++ b/frontend/src/app/main/ui/hooks/mutable_observer.cljs @@ -27,7 +27,7 @@ (remove #(= "transform" (.-attributeName ^js %))))] (when (d/not-empty? mutations) (on-change (mf/ref-val node-ref)))))) - + set-node (mf/use-callback (mf/deps on-mutation) diff --git a/frontend/src/app/main/ui/workspace/colorpalette.cljs b/frontend/src/app/main/ui/workspace/colorpalette.cljs index 501278cdc..cf87281f8 100644 --- a/frontend/src/app/main/ui/workspace/colorpalette.cljs +++ b/frontend/src/app/main/ui/workspace/colorpalette.cljs @@ -37,17 +37,17 @@ (mf/defc palette [{:keys [current-colors recent-colors file-colors shared-libs selected on-select]}] (let [;; We had to do this due to a bug that leave some bugged colors - current-colors (filter #(or (:gradient %) (:color %)) current-colors) - state (mf/use-state {:show-menu false}) + current-colors (h/use-equal-memo (filter #(or (:gradient %) (:color %)) current-colors)) + state (mf/use-state {:show-menu false}) - width (:width @state 0) - visible (/ width 66) + width (:width @state 0) + visible (/ width 66) - offset (:offset @state 0) - max-offset (- (count current-colors) - visible) + offset (:offset @state 0) + max-offset (- (count current-colors) + visible) - container (mf/use-ref nil) + container (mf/use-ref nil) {:keys [on-pointer-down on-lost-pointer-capture on-mouse-move parent-ref size]} (use-resize-hook :palette 72 54 80 :y true :bottom) @@ -139,7 +139,7 @@ (tr "workspace.libraries.colors.file-library") (str/ffmt " (%)" (count file-colors)))] [:div.color-sample - (for [[i color] (map-indexed vector (take 7 (vals file-colors))) ] + (for [[i color] (map-indexed vector (take 7 (vals file-colors)))] [:& cb/color-bullet {:key (dm/str "color-" i) :color color}])]] @@ -150,7 +150,7 @@ [:div.library-name (str (tr "workspace.libraries.colors.recent-colors") (str/format " (%s)" (count recent-colors)))] [:div.color-sample - (for [[idx color] (map-indexed vector (take 7 (reverse recent-colors))) ] + (for [[idx color] (map-indexed vector (take 7 (reverse recent-colors)))] [:& cb/color-bullet {:key (str "color-" idx) :color color}])]]]] @@ -185,13 +185,11 @@ on-select (mf/use-fn #(reset! selected %))] (mf/with-effect [@selected] - (fn [] - (reset! colors - (into [] - (cond - (= @selected :recent) (reverse recent-colors) - (= @selected :file) (->> (vals file-colors) (sort-by :name)) - :else (->> (library->colors shared-libs @selected) (sort-by :name))))))) + (let [colors' (cond + (= @selected :recent) (reverse recent-colors) + (= @selected :file) (->> (vals file-colors) (sort-by :name)) + :else (->> (library->colors shared-libs @selected) (sort-by :name)))] + (reset! colors (into [] colors')))) (mf/with-effect [recent-colors @selected] (when (= @selected :recent) diff --git a/frontend/src/app/main/ui/workspace/colorpicker/libraries.cljs b/frontend/src/app/main/ui/workspace/colorpicker/libraries.cljs index 9825d5da6..82a7d9e7d 100644 --- a/frontend/src/app/main/ui/workspace/colorpicker/libraries.cljs +++ b/frontend/src/app/main/ui/workspace/colorpicker/libraries.cljs @@ -7,7 +7,7 @@ (ns app.main.ui.workspace.colorpicker.libraries (:require [app.common.data.macros :as dm] - [app.main.data.workspace.colors :as dc] + [app.main.data.workspace.colors :as mdc] [app.main.refs :as refs] [app.main.store :as st] [app.main.ui.components.color-bullet :refer [color-bullet]] @@ -19,13 +19,13 @@ (mf/defc libraries [{:keys [on-select-color on-add-library-color disable-gradient disable-opacity]}] - (let [selected (h/use-shared-state dc/colorpicker-selected-broadcast-key :recent) + (let [selected (h/use-shared-state mdc/colorpicker-selected-broadcast-key :recent) current-colors (mf/use-state []) shared-libs (mf/deref refs/workspace-libraries) file-colors (mf/deref refs/workspace-file-colors) recent-colors (mf/deref refs/workspace-recent-colors) - recent-colors (filter #(or (:gradient %) (:color %)) recent-colors) + recent-colors (h/use-equal-memo (filter #(or (:gradient %) (:color %)) recent-colors)) on-library-change (mf/use-fn @@ -81,7 +81,7 @@ i/plus]) [:div.color-bullet.button {:style {:background-color "var(--color-white)"} - :on-click #(st/emit! (dc/show-palette @selected))} + :on-click #(st/emit! (mdc/show-palette @selected))} i/palette] (for [[idx color] (map-indexed vector @current-colors)]