mirror of
https://github.com/penpot/penpot.git
synced 2025-03-10 06:41:40 -05:00
Use active sets tokens for form
This commit is contained in:
parent
6c6be35292
commit
8264da3a2a
2 changed files with 15 additions and 10 deletions
|
@ -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
|
||||
new-tokens (update tokens token-name merge {:id token-id
|
||||
:value input
|
||||
:name token-name})]
|
||||
(-> (sd/resolve-tokens+ new-tokens #_ {:debug? true})
|
||||
(-> (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)))
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Add table
Reference in a new issue