0
Fork 0
mirror of https://github.com/penpot/penpot.git synced 2025-02-08 08:09:14 -05:00

Move transform and download functionality to core.cljs

This commit is contained in:
Akshay Gupta 2024-06-24 14:18:57 +05:30
parent bbb09567f6
commit 0a73cbc6f1
No known key found for this signature in database
2 changed files with 22 additions and 25 deletions

View file

@ -9,11 +9,13 @@
[app.common.data :as d :refer [ordered-map]] [app.common.data :as d :refer [ordered-map]]
[app.common.types.shape.radius :as ctsr] [app.common.types.shape.radius :as ctsr]
[app.common.types.token :as ctt] [app.common.types.token :as ctt]
[app.libs.file-builder :as fb]
[app.main.data.tokens :as dt] [app.main.data.tokens :as dt]
[app.main.data.workspace :as udw] [app.main.data.workspace :as udw]
[app.main.data.workspace.changes :as dch] [app.main.data.workspace.changes :as dch]
[app.main.data.workspace.shape-layout :as dwsl] [app.main.data.workspace.shape-layout :as dwsl]
[app.main.data.workspace.transforms :as dwt] [app.main.data.workspace.transforms :as dwt]
[app.main.refs :as refs]
[app.main.store :as st] [app.main.store :as st]
[app.main.ui.workspace.tokens.style-dictionary :as sd] [app.main.ui.workspace.tokens.style-dictionary :as sd]
[promesa.core :as p])) [promesa.core :as p]))
@ -128,6 +130,25 @@
(st/emit! (st/emit!
(dwsl/update-layout [shape-id] layout-update))))) (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 ----------------------------------------------------------------- ;; Token types -----------------------------------------------------------------
(def token-types (def token-types

View file

@ -8,7 +8,6 @@
(:require-macros [app.main.style :as stl]) (:require-macros [app.main.style :as stl])
(:require (:require
[app.common.data :as d] [app.common.data :as d]
[app.libs.file-builder :as fb]
[app.main.data.modal :as modal] [app.main.data.modal :as modal]
[app.main.data.tokens :as dt] [app.main.data.tokens :as dt]
[app.main.refs :as refs] [app.main.refs :as refs]
@ -29,29 +28,6 @@
(def ^:private download-icon (def ^:private download-icon
(i/icon-xref :download (stl/css :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/defc token-pill
{::mf/wrap-props false} {::mf/wrap-props false}
[{:keys [on-click token highlighted? on-context-menu]}] [{:keys [on-click token highlighted? on-context-menu]}]
@ -192,6 +168,6 @@
[:div {:class (stl/css :sidebar-tab-wrapper)} [:div {:class (stl/css :sidebar-tab-wrapper)}
[:& tokens-explorer] [:& tokens-explorer]
[:button {:class (stl/css :download-json-button) [: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] [:span.separator]
download-icon]]) download-icon]])