mirror of
https://github.com/penpot/penpot.git
synced 2025-08-06 08:08:29 +02:00
✨ Remove token when applying tyopgraphic asset style
This commit is contained in:
parent
f6b97af148
commit
58a843ea23
2 changed files with 30 additions and 38 deletions
|
@ -11,6 +11,7 @@
|
||||||
[app.common.files.helpers :as cfh]
|
[app.common.files.helpers :as cfh]
|
||||||
[app.common.geom.shapes :as gsh]
|
[app.common.geom.shapes :as gsh]
|
||||||
[app.common.logic.variant-properties :as clvp]
|
[app.common.logic.variant-properties :as clvp]
|
||||||
|
[app.common.text :as ct]
|
||||||
[app.common.types.component :as ctk]
|
[app.common.types.component :as ctk]
|
||||||
[app.common.types.container :as ctn]
|
[app.common.types.container :as ctn]
|
||||||
[app.common.types.pages-list :as ctpl]
|
[app.common.types.pages-list :as ctpl]
|
||||||
|
@ -21,9 +22,12 @@
|
||||||
[app.common.uuid :as uuid]
|
[app.common.uuid :as uuid]
|
||||||
[clojure.set :as set]))
|
[clojure.set :as set]))
|
||||||
|
|
||||||
|
(def text-typography-attrs (set ct/text-typography-attrs))
|
||||||
|
|
||||||
(defn- generate-unapply-tokens
|
(defn- generate-unapply-tokens
|
||||||
"When updating attributes that have a token applied, we must unapply it, because the value
|
"When updating attributes that have a token applied, we must unapply it, because the value
|
||||||
of the attribute now has been given directly, and does not come from the token."
|
of the attribute now has been given directly, and does not come from the token.
|
||||||
|
When applying a typography asset style we also unapply any typographic tokens."
|
||||||
[changes objects changed-sub-attr]
|
[changes objects changed-sub-attr]
|
||||||
(let [new-objects (pcb/get-objects changes)
|
(let [new-objects (pcb/get-objects changes)
|
||||||
mod-obj-changes (->> (:redo-changes changes)
|
mod-obj-changes (->> (:redo-changes changes)
|
||||||
|
@ -32,7 +36,11 @@
|
||||||
text-changed-attrs
|
text-changed-attrs
|
||||||
(fn [shape]
|
(fn [shape]
|
||||||
(let [new-shape (get new-objects (:id shape))
|
(let [new-shape (get new-objects (:id shape))
|
||||||
attrs (ctt/get-diff-attrs (:content shape) (:content new-shape))]
|
attrs (ctt/get-diff-attrs (:content shape) (:content new-shape))
|
||||||
|
;; Unapply token when applying typography asset style
|
||||||
|
attrs (if (set/intersection text-typography-attrs attrs)
|
||||||
|
(into attrs cto/typography-keys)
|
||||||
|
attrs)]
|
||||||
(apply set/union (map cto/shape-attr->token-attrs attrs))))
|
(apply set/union (map cto/shape-attr->token-attrs attrs))))
|
||||||
|
|
||||||
check-attr (fn [shape changes attr]
|
check-attr (fn [shape changes attr]
|
||||||
|
|
|
@ -250,53 +250,37 @@
|
||||||
(dwsl/update-layout-child shape-ids props {:ignore-touched true
|
(dwsl/update-layout-child shape-ids props {:ignore-touched true
|
||||||
:page-id page-id}))))))))
|
:page-id page-id}))))))))
|
||||||
|
|
||||||
|
(defn generate-text-shape-update
|
||||||
|
[txt-attrs shape-ids page-id]
|
||||||
|
(let [update-node? (fn [node]
|
||||||
|
(or (txt/is-text-node? node)
|
||||||
|
(txt/is-paragraph-node? node)))
|
||||||
|
update-fn (fn [node _]
|
||||||
|
(-> node
|
||||||
|
(d/txt-merge txt-attrs)
|
||||||
|
(cty/remove-typography-from-node)))]
|
||||||
|
(dwsh/update-shapes shape-ids
|
||||||
|
#(txt/update-text-content % update-node? update-fn nil)
|
||||||
|
{:ignore-touched true
|
||||||
|
:page-id page-id})))
|
||||||
|
|
||||||
(defn update-line-height
|
(defn update-line-height
|
||||||
([value shape-ids attributes] (update-line-height value shape-ids attributes nil))
|
([value shape-ids attributes] (update-line-height value shape-ids attributes nil))
|
||||||
([value shape-ids _attributes page-id]
|
([value shape-ids _attributes page-id]
|
||||||
(let [update-node? (fn [node]
|
(when (number? value)
|
||||||
(or (txt/is-text-node? node)
|
(generate-text-shape-update {:line-height value} shape-ids page-id))))
|
||||||
(txt/is-paragraph-node? node)))
|
|
||||||
update-fn (fn [node _]
|
|
||||||
(-> node
|
|
||||||
(d/txt-merge {:line-height value})
|
|
||||||
(cty/remove-typography-from-node)))]
|
|
||||||
(when (number? value)
|
|
||||||
(dwsh/update-shapes shape-ids
|
|
||||||
#(txt/update-text-content % update-node? update-fn nil)
|
|
||||||
{:ignore-touched true
|
|
||||||
:page-id page-id})))))
|
|
||||||
|
|
||||||
(defn update-letter-spacing
|
(defn update-letter-spacing
|
||||||
([value shape-ids attributes] (update-letter-spacing value shape-ids attributes nil))
|
([value shape-ids attributes] (update-letter-spacing value shape-ids attributes nil))
|
||||||
([value shape-ids _attributes page-id]
|
([value shape-ids _attributes page-id]
|
||||||
(let [update-node? (fn [node]
|
(when (number? value)
|
||||||
(or (txt/is-text-node? node)
|
(generate-text-shape-update {:letter-spacing (str value)} shape-ids page-id))))
|
||||||
(txt/is-paragraph-node? node)))
|
|
||||||
update-fn (fn [node _]
|
|
||||||
(-> node
|
|
||||||
(d/txt-merge {:letter-spacing (str value)})
|
|
||||||
(cty/remove-typography-from-node)))]
|
|
||||||
(when (number? value)
|
|
||||||
(dwsh/update-shapes shape-ids
|
|
||||||
#(txt/update-text-content % update-node? update-fn nil)
|
|
||||||
{:ignore-touched true
|
|
||||||
:page-id page-id})))))
|
|
||||||
|
|
||||||
(defn update-font-size
|
(defn update-font-size
|
||||||
([value shape-ids attributes] (update-font-size value shape-ids attributes nil))
|
([value shape-ids attributes] (update-font-size value shape-ids attributes nil))
|
||||||
([value shape-ids _attributes page-id]
|
([value shape-ids _attributes page-id]
|
||||||
(let [update-node? (fn [node]
|
(when (number? value)
|
||||||
(or (txt/is-text-node? node)
|
(generate-text-shape-update {:font-size (str value)} shape-ids page-id))))
|
||||||
(txt/is-paragraph-node? node)))
|
|
||||||
update-fn (fn [node _]
|
|
||||||
(-> node
|
|
||||||
(d/txt-merge {:font-size (str value)})
|
|
||||||
(cty/remove-typography-from-node)))]
|
|
||||||
(when (number? value)
|
|
||||||
(dwsh/update-shapes shape-ids
|
|
||||||
#(txt/update-text-content % update-node? update-fn nil)
|
|
||||||
{:ignore-touched true
|
|
||||||
:page-id page-id})))))
|
|
||||||
|
|
||||||
;; Events to apply / unapply tokens to shapes ------------------------------------------------------------
|
;; Events to apply / unapply tokens to shapes ------------------------------------------------------------
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue