mirror of
https://github.com/penpot/penpot.git
synced 2025-01-23 06:58:58 -05:00
🐛 Fix typography unlinking.
This commit is contained in:
parent
14359d9acf
commit
a8565dc2c2
4 changed files with 39 additions and 30 deletions
|
@ -176,22 +176,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
|
||||
|
||||
|
|
|
@ -240,18 +240,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
|
||||
|
|
|
@ -10,14 +10,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]))
|
||||
|
||||
|
@ -26,6 +27,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))
|
||||
|
@ -41,6 +43,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)))
|
||||
|
|
|
@ -109,12 +109,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");
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue