diff --git a/CHANGES.md b/CHANGES.md index b2811d57c..520c2af07 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -5,6 +5,7 @@ ### :bug: Bugs fixed - Fix error when importing files with touched components [Taiga #9625](https://tree.taiga.io/project/penpot/issue/9625) +- Fix problem when changing color libraries [Plugins #184](https://github.com/penpot/penpot-plugins/issues/184) ## 2.4.0 diff --git a/frontend/src/app/main/data/workspace/libraries.cljs b/frontend/src/app/main/data/workspace/libraries.cljs index fa16fb9a8..25893d81b 100644 --- a/frontend/src/app/main/data/workspace/libraries.cljs +++ b/frontend/src/app/main/data/workspace/libraries.cljs @@ -191,6 +191,25 @@ (watch [it state _] (update-color* it state color file-id))))) +(defn update-color-data + "Update color data without affecting the path location" + [color file-id] + (let [color (d/without-nils color)] + + (dm/assert! + "expected valid color data structure" + (ctc/check-color! color)) + + (dm/assert! + "expected file-id" + (uuid? file-id)) + + (ptk/reify ::update-color-data + ptk/WatchEvent + (watch [it state _] + (let [color (assoc color :name (dm/str (:path color) "/" (:name color)))] + (update-color* it state color file-id)))))) + (defn rename-color [file-id id new-name] (dm/assert! diff --git a/frontend/src/app/plugins/library.cljs b/frontend/src/app/plugins/library.cljs index 29b8b15b0..31241a4bf 100644 --- a/frontend/src/app/plugins/library.cljs +++ b/frontend/src/app/plugins/library.cljs @@ -98,7 +98,7 @@ :else (let [color (-> (u/proxy->library-color self) (assoc :color value))] - (st/emit! (dwl/update-color color file-id)))))} + (st/emit! (dwl/update-color-data color file-id)))))} :opacity {:this true @@ -115,7 +115,7 @@ :else (let [color (-> (u/proxy->library-color self) (assoc :opacity value))] - (st/emit! (dwl/update-color color file-id)))))} + (st/emit! (dwl/update-color-data color file-id)))))} :gradient {:this true @@ -133,7 +133,7 @@ :else (let [color (-> (u/proxy->library-color self) (assoc :gradient value))] - (st/emit! (dwl/update-color color file-id))))))} + (st/emit! (dwl/update-color-data color file-id))))))} :image {:this true @@ -151,7 +151,7 @@ :else (let [color (-> (u/proxy->library-color self) (assoc :image value))] - (st/emit! (dwl/update-color color file-id))))))} + (st/emit! (dwl/update-color-data color file-id))))))} :remove (fn []