mirror of
https://github.com/penpot/penpot.git
synced 2025-06-06 10:51:39 +02: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
|
(defn update-text-attrs
|
||||||
[{:keys [id attrs]}]
|
[{:keys [id attrs]}]
|
||||||
(let [attrs (d/without-nils attrs)]
|
(ptk/reify ::update-text-attrs
|
||||||
(ptk/reify ::update-text-attrs
|
ptk/UpdateEvent
|
||||||
ptk/UpdateEvent
|
(update [_ state]
|
||||||
(update [_ state]
|
(d/update-in-when state [:workspace-editor-state id] ted/update-editor-current-inline-styles attrs))
|
||||||
(d/update-in-when state [:workspace-editor-state id] ted/update-editor-current-inline-styles attrs))
|
|
||||||
|
|
||||||
ptk/WatchEvent
|
ptk/WatchEvent
|
||||||
(watch [_ state stream]
|
(watch [_ state stream]
|
||||||
(when-not (some? (get-in state [:workspace-editor-state id]))
|
(when-not (some? (get-in state [:workspace-editor-state id]))
|
||||||
(let [objects (dwc/lookup-page-objects state)
|
(let [objects (dwc/lookup-page-objects state)
|
||||||
shape (get objects id)
|
shape (get objects id)
|
||||||
|
|
||||||
update-fn #(update-shape % txt/is-text-node? attrs/merge attrs)
|
update-fn #(update-shape % txt/is-text-node? attrs/merge attrs)
|
||||||
shape-ids (cond (= (:type shape) :text) [id]
|
shape-ids (cond (= (:type shape) :text) [id]
|
||||||
(= (:type shape) :group) (cp/get-children id objects))]
|
(= (:type shape) :group) (cp/get-children id objects))]
|
||||||
(rx/of (dwc/update-shapes shape-ids update-fn))))))))
|
(rx/of (dwc/update-shapes shape-ids update-fn)))))))
|
||||||
|
|
||||||
;; --- RESIZE UTILS
|
;; --- RESIZE UTILS
|
||||||
|
|
||||||
|
|
|
@ -240,18 +240,19 @@
|
||||||
(when-not (empty? attrs)
|
(when-not (empty? attrs)
|
||||||
(st/emit! (dwt/update-text-attrs {:id id :attrs attrs})))))
|
(st/emit! (dwt/update-text-attrs {:id id :attrs attrs})))))
|
||||||
|
|
||||||
typography (cond
|
typography
|
||||||
(and (:typography-ref-id values)
|
(cond
|
||||||
(not= (:typography-ref-id values) :multiple)
|
(and (:typography-ref-id values)
|
||||||
(not= (:typography-ref-file values) file-id))
|
(not= (:typography-ref-id values) :multiple)
|
||||||
(-> shared-libs
|
(not= (:typography-ref-file values) file-id))
|
||||||
(get-in [(:typography-ref-file values) :data :typographies (:typography-ref-id values)])
|
(-> shared-libs
|
||||||
(assoc :file-id (:typography-ref-file values)))
|
(get-in [(:typography-ref-file values) :data :typographies (:typography-ref-id values)])
|
||||||
|
(assoc :file-id (:typography-ref-file values)))
|
||||||
|
|
||||||
(and (:typography-ref-id values)
|
(and (:typography-ref-id values)
|
||||||
(not= (:typography-ref-id values) :multiple)
|
(not= (:typography-ref-id values) :multiple)
|
||||||
(= (:typography-ref-file values) file-id))
|
(= (:typography-ref-file values) file-id))
|
||||||
(get typographies (:typography-ref-id values)))
|
(get typographies (:typography-ref-id values)))
|
||||||
|
|
||||||
on-convert-to-typography
|
on-convert-to-typography
|
||||||
(mf/use-callback
|
(mf/use-callback
|
||||||
|
|
|
@ -10,14 +10,15 @@
|
||||||
(ns app.util.text-editor
|
(ns app.util.text-editor
|
||||||
"Draft related abstraction functions."
|
"Draft related abstraction functions."
|
||||||
(:require
|
(:require
|
||||||
["draft-js" :as draft]
|
|
||||||
["./text_editor_impl.js" :as impl]
|
["./text_editor_impl.js" :as impl]
|
||||||
|
["draft-js" :as draft]
|
||||||
[app.common.attrs :as attrs]
|
[app.common.attrs :as attrs]
|
||||||
[app.common.text :as txt]
|
|
||||||
[app.common.data :as d]
|
[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.array :as arr]
|
||||||
[app.util.object :as obj]
|
[app.util.object :as obj]
|
||||||
|
[app.util.transit :as t]
|
||||||
[clojure.walk :as walk]
|
[clojure.walk :as walk]
|
||||||
[cuerdas.core :as str]))
|
[cuerdas.core :as str]))
|
||||||
|
|
||||||
|
@ -26,6 +27,7 @@
|
||||||
(defn encode-style-value
|
(defn encode-style-value
|
||||||
[v]
|
[v]
|
||||||
(cond
|
(cond
|
||||||
|
(uuid? v) (str "u:" v)
|
||||||
(string? v) (str "s:" v)
|
(string? v) (str "s:" v)
|
||||||
(number? v) (str "n:" v)
|
(number? v) (str "n:" v)
|
||||||
(keyword? v) (str "k:" (name v))
|
(keyword? v) (str "k:" (name v))
|
||||||
|
@ -41,6 +43,7 @@
|
||||||
"n:" (js/Number (subs v 2))
|
"n:" (js/Number (subs v 2))
|
||||||
"k:" (keyword (subs v 2))
|
"k:" (keyword (subs v 2))
|
||||||
"m:" (t/decode (subs v 2))
|
"m:" (t/decode (subs v 2))
|
||||||
|
"u:" (uuid/uuid (subs v 2))
|
||||||
"z:" nil
|
"z:" nil
|
||||||
"o:" (subs v 2)
|
"o:" (subs v 2)
|
||||||
v)))
|
v)))
|
||||||
|
|
|
@ -109,12 +109,18 @@ export function applyInlineStyle(state, styles) {
|
||||||
let content = null;
|
let content = null;
|
||||||
|
|
||||||
for (let style of styles) {
|
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("$$$");
|
const prefix = [p, k, ""].join("$$$");
|
||||||
|
|
||||||
content = state.getCurrentContent();
|
content = state.getCurrentContent();
|
||||||
content = removeInlineStylePrefix(content, selection, prefix);
|
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");
|
state = EditorState.push(state, content, "change-inline-style");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue