diff --git a/frontend/src/app/main/ui/workspace/tokens/form.cljs b/frontend/src/app/main/ui/workspace/tokens/form.cljs index 5e3351940..2c80a1a8b 100644 --- a/frontend/src/app/main/ui/workspace/tokens/form.cljs +++ b/frontend/src/app/main/ui/workspace/tokens/form.cljs @@ -99,10 +99,10 @@ Token names should only contain letters and digits separated by . characters.")} empty-input? (p/rejected nil) direct-self-reference? (p/rejected :error/token-direct-self-reference) :else (let [token-id (or (:id token) (random-uuid)) - new-tokens (update tokens token-id merge {:id token-id - :value input - :name token-name})] - (-> (sd/resolve-tokens+ new-tokens #_ {:debug? true}) + new-tokens (update tokens token-name merge {:id token-id + :value input + :name token-name})] + (-> (sd/resolve-tokens+ new-tokens {:names-map? true}) (p/then (fn [resolved-tokens] (let [{:keys [errors resolved-value] :as resolved-token} (get resolved-tokens token-name)] @@ -139,11 +139,15 @@ Token names should only contain letters and digits separated by . characters.")} timeout))))] debounced-resolver-callback)) +(defonce form-token-cache-atom (atom nil)) + (mf/defc form {::mf/wrap-props false} [{:keys [token token-type] :as _args}] - (let [tokens (mf/deref refs/workspace-tokens) - resolved-tokens (sd/use-resolved-tokens tokens) + (let [tokens (mf/deref refs/get-active-theme-sets-tokens) + resolved-tokens (sd/use-resolved-tokens tokens {:names-map? true + :cache-atom form-token-cache-atom}) + _ (js/console.log "resolved-tokens" resolved-tokens) token-path (mf/use-memo (mf/deps (:name token)) #(wtt/token-name->path (:name token))) diff --git a/frontend/src/app/main/ui/workspace/tokens/style_dictionary.cljs b/frontend/src/app/main/ui/workspace/tokens/style_dictionary.cljs index 08893f57d..623326140 100644 --- a/frontend/src/app/main/ui/workspace/tokens/style_dictionary.cljs +++ b/frontend/src/app/main/ui/workspace/tokens/style_dictionary.cljs @@ -107,11 +107,12 @@ This hook will return the unresolved tokens as state until they are processed, then the state will be updated with the resolved tokens." - [tokens & {:keys [cache-atom] - :or {cache-atom !tokens-cache}}] + [tokens & {:keys [cache-atom _names-map?] + :or {cache-atom !tokens-cache} + :as config}] (let [tokens-state (mf/use-state (get @cache-atom tokens))] (mf/use-effect - (mf/deps tokens) + (mf/deps tokens config) (fn [] (let [cached (get @cache-atom tokens)] (cond @@ -120,7 +121,7 @@ ;; Get the cached entry (some? cached) (reset! tokens-state cached) ;; No cached entry, start processing - :else (let [promise+ (resolve-tokens+ tokens)] + :else (let [promise+ (resolve-tokens+ tokens config)] (swap! cache-atom assoc tokens promise+) (p/then promise+ (fn [resolved-tokens] (swap! cache-atom assoc tokens resolved-tokens)