diff --git a/frontend/src/app/main/data/tokens.cljs b/frontend/src/app/main/data/tokens.cljs index 503941a8bc..b406a44725 100644 --- a/frontend/src/app/main/data/tokens.cljs +++ b/frontend/src/app/main/data/tokens.cljs @@ -12,9 +12,11 @@ [app.common.types.shape :as cts] [app.common.uuid :as uuid] [app.main.data.workspace.changes :as dch] + [app.main.refs :as refs] [app.main.ui.workspace.tokens.common :refer [workspace-shapes]] [beicon.v2.core :as rx] [clojure.data :as data] + [cuerdas.core :as str] [potok.v2.core :as ptk])) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -65,6 +67,11 @@ next-applied-tokens (toggle-or-apply-token shape token)] (rx/of (update-shape shape-id {:applied-tokens next-applied-tokens})))))) +(defn get-token-data-from-token-id + [id] + (let [workspace-data (deref refs/workspace-data)] + (get (:tokens workspace-data) id))) + (defn add-token [token] (let [token (update token :id #(or % (uuid/next)))] @@ -87,6 +94,13 @@ (pcb/delete-token id))] (rx/of (dch/commit-changes changes)))))) +(defn duplicate-token + [id] + (let [new-token (-> (get-token-data-from-token-id id) + (dissoc :id) + (update :name #(str/concat % "-copy")))] + (add-token new-token))) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; TEMP (Move to test) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/frontend/src/app/main/ui/workspace/tokens/context_menu.cljs b/frontend/src/app/main/ui/workspace/tokens/context_menu.cljs index ec4fcb4c25..c6825f621d 100644 --- a/frontend/src/app/main/ui/workspace/tokens/context_menu.cljs +++ b/frontend/src/app/main/ui/workspace/tokens/context_menu.cljs @@ -29,7 +29,7 @@ (mf/defc token-pill-context-menu [{:keys [token-id]}] (let [do-delete #(st/emit! (dt/delete-token token-id)) - do-duplicate #(js/console.log "Duplicating") + do-duplicate #(st/emit! (dt/duplicate-token token-id)) do-edit #(js/console.log "Editing")] [:* [:& menu-entry {:title "Delete Token" :on-click do-delete}]