diff --git a/frontend/src/app/main/ui/workspace/tokens/core.cljs b/frontend/src/app/main/ui/workspace/tokens/core.cljs index dc86af128..9a68f70ea 100644 --- a/frontend/src/app/main/ui/workspace/tokens/core.cljs +++ b/frontend/src/app/main/ui/workspace/tokens/core.cljs @@ -9,11 +9,13 @@ [app.common.data :as d :refer [ordered-map]] [app.common.types.shape.radius :as ctsr] [app.common.types.token :as ctt] + [app.libs.file-builder :as fb] [app.main.data.tokens :as dt] [app.main.data.workspace :as udw] [app.main.data.workspace.changes :as dch] [app.main.data.workspace.shape-layout :as dwsl] [app.main.data.workspace.transforms :as dwt] + [app.main.refs :as refs] [app.main.store :as st] [app.main.ui.workspace.tokens.style-dictionary :as sd] [promesa.core :as p])) @@ -128,6 +130,25 @@ (st/emit! (dwsl/update-layout [shape-id] layout-update))))) +;; JSON export functions ------------------------------------------------------- +(defn transform-tokens-into-json-format [tokens] + (let [grouped-tokens (group-by (comp keyword :type second) tokens) + map-token (fn [[_ token]] + [(keyword (:name token)) + {:value (:value token) + :type (:type token)}])] + {:core (into (sorted-map) + (map (fn [[type tokens]] + [type + (into (sorted-map) + (map map-token tokens))]) + grouped-tokens))})) + +(defn download-tokens-as-json [] + (let [all-tokens (deref refs/workspace-tokens) + transformed-tokens-json (transform-tokens-into-json-format all-tokens)] + (fb/export-tokens-file transformed-tokens-json))) + ;; Token types ----------------------------------------------------------------- (def token-types diff --git a/frontend/src/app/main/ui/workspace/tokens/sidebar.cljs b/frontend/src/app/main/ui/workspace/tokens/sidebar.cljs index f4092988d..acd5cc62d 100644 --- a/frontend/src/app/main/ui/workspace/tokens/sidebar.cljs +++ b/frontend/src/app/main/ui/workspace/tokens/sidebar.cljs @@ -8,7 +8,6 @@ (:require-macros [app.main.style :as stl]) (:require [app.common.data :as d] - [app.libs.file-builder :as fb] [app.main.data.modal :as modal] [app.main.data.tokens :as dt] [app.main.refs :as refs] @@ -29,29 +28,6 @@ (def ^:private download-icon (i/icon-xref :download (stl/css :download-icon))) -(defn transform-tokens [tokens] - (let [grouped-tokens (group-by (comp keyword :type second) tokens) - map-token (fn [[_ token]] - [(keyword (:name token)) - {:value (:value token) - :type (:type token)}])] - (js/console.log grouped-tokens) - (js/console.log map-token) - {:core (into (sorted-map) - (map (fn [[type tokens]] - [type - (into (sorted-map) - (map map-token tokens))]) - grouped-tokens))})) - -(defn download-tokens-as-json [] - (let [all-tokens (deref refs/workspace-tokens) - transformed-tokens-json (transform-tokens all-tokens)] - (js/console.log transformed-tokens-json) - (fb/export-tokens-file transformed-tokens-json))) - - - (mf/defc token-pill {::mf/wrap-props false} [{:keys [on-click token highlighted? on-context-menu]}] @@ -192,6 +168,6 @@ [:div {:class (stl/css :sidebar-tab-wrapper)} [:& tokens-explorer] [:button {:class (stl/css :download-json-button) - :on-click download-tokens-as-json} "Download Tokens as JSON" + :on-click wtc/download-tokens-as-json} "Download Tokens as JSON" [:span.separator] download-icon]])