diff --git a/common/src/app/common/types/token.cljc b/common/src/app/common/types/token.cljc index e29a54cc7..f8510f391 100644 --- a/common/src/app/common/types/token.cljc +++ b/common/src/app/common/types/token.cljc @@ -7,12 +7,27 @@ (ns app.common.types.token (:require [app.common.schema :as sm] - [app.common.schema.registry :as sr])) + [app.common.schema.registry :as sr] + [malli.util :as mu])) -(defn merge-schemas [& schema-keys] +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; HELPERS +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(defn merge-schemas + "Merge registered schemas." + [& schema-keys] (let [schemas (map #(get @sr/registry %) schema-keys)] (reduce sm/merge schemas))) +(defn schema-keys + "Converts registed map schema into set of keys." + [registered-schema] + (->> (get @sr/registry registered-schema) + (sm/schema) + (mu/keys) + (into #{}))) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; SCHEMA ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -49,6 +64,8 @@ [:r3 {:optional true} ::sm/uuid] [:r4 {:optional true} ::sm/uuid]]) +(def border-radius-keys (schema-keys ::border-radius)) + (sm/def! ::dimensions [:map [:width {:optional true} ::sm/uuid] diff --git a/frontend/src/app/main/ui/workspace/tokens/core.cljs b/frontend/src/app/main/ui/workspace/tokens/core.cljs index b117483c6..be3e51955 100644 --- a/frontend/src/app/main/ui/workspace/tokens/core.cljs +++ b/frontend/src/app/main/ui/workspace/tokens/core.cljs @@ -8,7 +8,7 @@ (:require [app.common.data :as d :refer [ordered-map]] [app.common.types.shape.radius :as ctsr] - [app.main.data.tokens :as dt] + [app.common.types.token :as ctt] [app.main.data.workspace.changes :as dch])) ;; Helpers --------------------------------------------------------------------- @@ -36,7 +36,7 @@ (when (ctsr/has-radius? shape) (ctsr/set-radius-1 shape parsed-value))) {:reg-objects? true - :attrs [:rx :ry :r1 :r2 :r3 :r4]}))) + :attrs ctt/border-radius-keys}))) ;; Token types ----------------------------------------------------------------- @@ -46,7 +46,7 @@ :modal {:key :tokens/boolean :fields [{:label "Boolean"}]}}] [:border-radius {:title "Border Radius" - :attributes #{:rx :ry :r1 :r2 :r3 :r4} + :attributes ctt/border-radius-keys :modal {:key :tokens/border-radius :fields [{:label "Border Radius" :key :border-radius}]}