From cee974a9068a17d6393da1c26c5314834350cdcd Mon Sep 17 00:00:00 2001 From: "alonso.torres" Date: Wed, 18 Feb 2026 16:45:29 +0100 Subject: [PATCH] :bug: Fix problem with tokens in plugins --- docker/devenv/docker-compose.yaml | 1 + frontend/src/app/plugins/shape.cljs | 3 ++- frontend/src/app/plugins/tokens.cljs | 30 ++++++++++++++++++---------- 3 files changed, 23 insertions(+), 11 deletions(-) diff --git a/docker/devenv/docker-compose.yaml b/docker/devenv/docker-compose.yaml index 349690ec45..4a680e4e6b 100644 --- a/docker/devenv/docker-compose.yaml +++ b/docker/devenv/docker-compose.yaml @@ -50,6 +50,7 @@ services: - 4400:4400 - 4401:4401 - 4402:4402 + - 4403:4403 # Plugins - 4200:4200 diff --git a/frontend/src/app/plugins/shape.cljs b/frontend/src/app/plugins/shape.cljs index 014736e4d8..c409df8b16 100644 --- a/frontend/src/app/plugins/shape.cljs +++ b/frontend/src/app/plugins/shape.cljs @@ -1305,7 +1305,8 @@ tokens)))} :applyToken - {:schema [:tuple + {:enumerable false + :schema [:tuple [:fn token-proxy?] [:maybe [:set [:and ::sm/keyword [:fn cto/token-attr?]]]]] :fn (fn [token attrs] diff --git a/frontend/src/app/plugins/tokens.cljs b/frontend/src/app/plugins/tokens.cljs index c11f8dc373..dd4c18c592 100644 --- a/frontend/src/app/plugins/tokens.cljs +++ b/frontend/src/app/plugins/tokens.cljs @@ -144,14 +144,16 @@ (st/emit! (dwtl/delete-token set-id id))) :applyToShapes - {:schema [:tuple + {:enumerable false + :schema [:tuple [:vector [:fn shape-proxy?]] [:maybe [:set [:and ::sm/keyword [:fn cto/token-attr?]]]]] :fn (fn [shapes attrs] (apply-token-to-shapes file-id set-id id (map #(obj/get % "$id") shapes) attrs))} :applyToSelected - {:schema [:tuple [:maybe [:set [:and ::sm/keyword [:fn cto/token-attr?]]]]] + {:enumerable false + :schema [:tuple [:maybe [:set [:and ::sm/keyword [:fn cto/token-attr?]]]]] :fn (fn [attrs] (let [selected (get-in @st/state [:workspace-local :selected])] (apply-token-to-shapes file-id set-id id selected attrs)))})) @@ -236,14 +238,16 @@ (apply array))))} :getTokenById - {:schema [:tuple ::sm/uuid] + {:enumerable false + :schema [:tuple ::sm/uuid] :fn (fn [token-id] (let [token (u/locate-token file-id id token-id)] (when (some? token) (token-proxy plugin-id file-id id token-id))))} :addToken - {:schema (fn [args] + {:enumerable false + :schema (fn [args] [:tuple (-> (cfo/make-token-schema (-> (u/locate-tokens-lib file-id) (ctob/get-tokens id)) (cto/dtcg-token-type->token-type (-> args (first) (get "type")))) @@ -353,13 +357,15 @@ {:this true :get (fn [_])} :addSet - {:schema [:tuple [:fn token-set-proxy?]] + {:enumerable false + :schema [:tuple [:fn token-set-proxy?]] :fn (fn [token-set] (let [theme (u/locate-token-theme file-id id)] (st/emit! (dwtl/update-token-theme id (ctob/enable-set theme (obj/get token-set :name))))))} :removeSet - {:schema [:tuple [:fn token-set-proxy?]] + {:enumerable false + :schema [:tuple [:fn token-set-proxy?]] :fn (fn [token-set] (let [theme (u/locate-token-theme file-id id)] (st/emit! (dwtl/update-token-theme id (ctob/disable-set theme (obj/get token-set :name))))))} @@ -406,7 +412,8 @@ (apply array (map #(token-set-proxy plugin-id file-id (ctob/get-id %)) sets))))} :addTheme - {:schema (fn [attrs] + {:enumerable false + :schema (fn [attrs] [:tuple (-> (sm/schema (cfo/make-token-theme-schema (u/locate-tokens-lib file-id) (or (obj/get attrs "group") "") @@ -419,7 +426,8 @@ (token-theme-proxy plugin-id file-id (:id theme))))} :addSet - {:schema [:tuple (-> (sm/schema (cfo/make-token-set-schema + {:enumerable false + :schema [:tuple (-> (sm/schema (cfo/make-token-set-schema (u/locate-tokens-lib file-id) nil)) (sm/dissoc-key :id))] ;; We don't allow plugins to set the id @@ -431,14 +439,16 @@ (token-set-proxy plugin-id file-id (ctob/get-id set))))} :getThemeById - {:schema [:tuple ::sm/uuid] + {:enumerable false + :schema [:tuple ::sm/uuid] :fn (fn [theme-id] (let [theme (u/locate-token-theme file-id theme-id)] (when (some? theme) (token-theme-proxy plugin-id file-id theme-id))))} :getSetById - {:schema [:tuple ::sm/uuid] + {:enumerable false + :schema [:tuple ::sm/uuid] :fn (fn [set-id] (let [set (u/locate-token-set file-id set-id)] (when (some? set)