diff --git a/CHANGES.md b/CHANGES.md index c150c2c0c..e8effdbd0 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -27,6 +27,18 @@ - zzkt [#814](https://github.com/penpot/penpot/pull/814) +## 1.4.1-alpha + +### :bug: Bugs fixed + +- Fix typography unlinking. +- Fix incorrect measures on shapes outside artboard. +- Fix issues on svg parsing related to numbers with exponents. +- Fix some race conditions on removing shape from workspace. +- Fix incorrect state management of user lang selection. +- Fix email validation usability issue on team invitation lightbox. + + ## 1.4.0-alpha ### :sparkles: New features diff --git a/frontend/src/app/main/data/workspace/texts.cljs b/frontend/src/app/main/data/workspace/texts.cljs index 525d865f5..154930a99 100644 --- a/frontend/src/app/main/data/workspace/texts.cljs +++ b/frontend/src/app/main/data/workspace/texts.cljs @@ -173,22 +173,21 @@ (defn update-text-attrs [{:keys [id attrs]}] - (let [attrs (d/without-nils attrs)] - (ptk/reify ::update-text-attrs - ptk/UpdateEvent - (update [_ state] - (d/update-in-when state [:workspace-editor-state id] ted/update-editor-current-inline-styles attrs)) + (ptk/reify ::update-text-attrs + ptk/UpdateEvent + (update [_ state] + (d/update-in-when state [:workspace-editor-state id] ted/update-editor-current-inline-styles attrs)) - ptk/WatchEvent - (watch [_ state stream] - (when-not (some? (get-in state [:workspace-editor-state id])) - (let [objects (dwc/lookup-page-objects state) - shape (get objects id) + ptk/WatchEvent + (watch [_ state stream] + (when-not (some? (get-in state [:workspace-editor-state id])) + (let [objects (dwc/lookup-page-objects state) + shape (get objects id) - update-fn #(update-shape % txt/is-text-node? attrs/merge attrs) - shape-ids (cond (= (:type shape) :text) [id] - (= (:type shape) :group) (cp/get-children id objects))] - (rx/of (dwc/update-shapes shape-ids update-fn)))))))) + update-fn #(update-shape % txt/is-text-node? attrs/merge attrs) + shape-ids (cond (= (:type shape) :text) [id] + (= (:type shape) :group) (cp/get-children id objects))] + (rx/of (dwc/update-shapes shape-ids update-fn))))))) ;; --- RESIZE UTILS diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/menus/text.cljs b/frontend/src/app/main/ui/workspace/sidebar/options/menus/text.cljs index 1d30a456f..031dc1d3c 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/menus/text.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/options/menus/text.cljs @@ -237,18 +237,19 @@ (when-not (empty? attrs) (st/emit! (dwt/update-text-attrs {:id id :attrs attrs}))))) - typography (cond - (and (:typography-ref-id values) - (not= (:typography-ref-id values) :multiple) - (not= (:typography-ref-file values) file-id)) - (-> shared-libs - (get-in [(:typography-ref-file values) :data :typographies (:typography-ref-id values)]) - (assoc :file-id (:typography-ref-file values))) + typography + (cond + (and (:typography-ref-id values) + (not= (:typography-ref-id values) :multiple) + (not= (:typography-ref-file values) file-id)) + (-> shared-libs + (get-in [(:typography-ref-file values) :data :typographies (:typography-ref-id values)]) + (assoc :file-id (:typography-ref-file values))) - (and (:typography-ref-id values) - (not= (:typography-ref-id values) :multiple) - (= (:typography-ref-file values) file-id)) - (get typographies (:typography-ref-id values))) + (and (:typography-ref-id values) + (not= (:typography-ref-id values) :multiple) + (= (:typography-ref-file values) file-id)) + (get typographies (:typography-ref-id values))) on-convert-to-typography (mf/use-callback diff --git a/frontend/src/app/util/text_editor.cljs b/frontend/src/app/util/text_editor.cljs index 44db82118..7e16ab051 100644 --- a/frontend/src/app/util/text_editor.cljs +++ b/frontend/src/app/util/text_editor.cljs @@ -7,14 +7,15 @@ (ns app.util.text-editor "Draft related abstraction functions." (:require - ["draft-js" :as draft] ["./text_editor_impl.js" :as impl] + ["draft-js" :as draft] [app.common.attrs :as attrs] - [app.common.text :as txt] [app.common.data :as d] - [app.util.transit :as t] + [app.common.text :as txt] + [app.common.uuid :as uuid] [app.util.array :as arr] [app.util.object :as obj] + [app.util.transit :as t] [clojure.walk :as walk] [cuerdas.core :as str])) @@ -23,6 +24,7 @@ (defn encode-style-value [v] (cond + (uuid? v) (str "u:" v) (string? v) (str "s:" v) (number? v) (str "n:" v) (keyword? v) (str "k:" (name v)) @@ -38,6 +40,7 @@ "n:" (js/Number (subs v 2)) "k:" (keyword (subs v 2)) "m:" (t/decode (subs v 2)) + "u:" (uuid/uuid (subs v 2)) "z:" nil "o:" (subs v 2) v))) diff --git a/frontend/src/app/util/text_editor_impl.js b/frontend/src/app/util/text_editor_impl.js index f97b238cb..e679f4e6d 100644 --- a/frontend/src/app/util/text_editor_impl.js +++ b/frontend/src/app/util/text_editor_impl.js @@ -106,12 +106,18 @@ export function applyInlineStyle(state, styles) { let content = null; for (let style of styles) { - const [p, k, _] = style.split("$$$"); + console.log("applyInlineStyle", style); + + const [p, k, v] = style.split("$$$"); const prefix = [p, k, ""].join("$$$"); content = state.getCurrentContent(); content = removeInlineStylePrefix(content, selection, prefix); - content = Modifier.applyInlineStyle(content, selection, style); + + if (v !== "z:null") { + content = Modifier.applyInlineStyle(content, selection, style); + } + state = EditorState.push(state, content, "change-inline-style"); }