From 58466e6488216eb67d8d0727c29f182f853bd9eb Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Wed, 26 Jun 2024 08:27:24 +0200 Subject: [PATCH] :bug: Color library loses association with shapes when exporting/importing the document --- CHANGES.md | 1 + frontend/src/app/worker/import.cljs | 32 +++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index eaf2c59a29..43ff3f8ab8 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -49,6 +49,7 @@ - Export shapes that are rotated act a bit strange when reimported [Taiga #7585](https://tree.taiga.io/project/penpot/issue/7585) - Penpot crashes when a new colorpicker is created while uploading an image to another instance [Taiga #8119](https://tree.taiga.io/project/penpot/issue/8119) - Removing Underline and Strikethrough Affects the Previous Text Object [Taiga #8103](https://tree.taiga.io/project/penpot/issue/8103) +- Color library loses association with shapes when exporting/importing the document [Taiga #8132](https://tree.taiga.io/project/penpot/issue/8132) ## 2.0.3 diff --git a/frontend/src/app/worker/import.cljs b/frontend/src/app/worker/import.cljs index 186de184d6..beb6e2b14e 100644 --- a/frontend/src/app/worker/import.cljs +++ b/frontend/src/app/worker/import.cljs @@ -223,6 +223,32 @@ (uuid? (get item :typography-ref-file)) (d/update-when :typography-ref-file resolve))))))) +(defn resolve-fills-content + [fills context] + (let [resolve (:resolve context)] + (->> fills + (mapv + (fn [fill] + (cond-> fill + (uuid? (get fill :fill-color-ref-id)) + (d/update-when :fill-color-ref-id resolve) + + (uuid? (get fill :fill-color-ref-file)) + (d/update-when :fill-color-ref-file resolve))))))) + +(defn resolve-strokes-content + [fills context] + (let [resolve (:resolve context)] + (->> fills + (mapv + (fn [fill] + (cond-> fill + (uuid? (get fill :stroke-color-ref-id)) + (d/update-when :stroke-color-ref-id resolve) + + (uuid? (get fill :stroke-color-ref-file)) + (d/update-when :stroke-color-ref-file resolve))))))) + (defn resolve-data-ids [data type context] (let [resolve (:resolve context)] @@ -238,6 +264,12 @@ (cond-> (= type :text) (d/update-when :content resolve-text-content context)) + (cond-> (:fills data) + (d/update-when :fills resolve-fills-content context)) + + (cond-> (:strokes data) + (d/update-when :strokes resolve-strokes-content context)) + (cond-> (and (= type :frame) (= :grid (:layout data))) (update :layout-grid-cells