mirror of
https://github.com/penpot/penpot.git
synced 2025-03-10 14:51:37 -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)
|
empty-input? (p/rejected nil)
|
||||||
direct-self-reference? (p/rejected :error/token-direct-self-reference)
|
direct-self-reference? (p/rejected :error/token-direct-self-reference)
|
||||||
:else (let [token-id (or (:id token) (random-uuid))
|
: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
|
:value input
|
||||||
:name token-name})]
|
:name token-name})]
|
||||||
(-> (sd/resolve-tokens+ new-tokens #_ {:debug? true})
|
(-> (sd/resolve-tokens+ new-tokens {:names-map? true})
|
||||||
(p/then
|
(p/then
|
||||||
(fn [resolved-tokens]
|
(fn [resolved-tokens]
|
||||||
(let [{:keys [errors resolved-value] :as resolved-token} (get resolved-tokens token-name)]
|
(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))))]
|
timeout))))]
|
||||||
debounced-resolver-callback))
|
debounced-resolver-callback))
|
||||||
|
|
||||||
|
(defonce form-token-cache-atom (atom nil))
|
||||||
|
|
||||||
(mf/defc form
|
(mf/defc form
|
||||||
{::mf/wrap-props false}
|
{::mf/wrap-props false}
|
||||||
[{:keys [token token-type] :as _args}]
|
[{:keys [token token-type] :as _args}]
|
||||||
(let [tokens (mf/deref refs/workspace-tokens)
|
(let [tokens (mf/deref refs/get-active-theme-sets-tokens)
|
||||||
resolved-tokens (sd/use-resolved-tokens 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
|
token-path (mf/use-memo
|
||||||
(mf/deps (:name token))
|
(mf/deps (:name token))
|
||||||
#(wtt/token-name->path (: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,
|
This hook will return the unresolved tokens as state until they are processed,
|
||||||
then the state will be updated with the resolved tokens."
|
then the state will be updated with the resolved tokens."
|
||||||
[tokens & {:keys [cache-atom]
|
[tokens & {:keys [cache-atom _names-map?]
|
||||||
:or {cache-atom !tokens-cache}}]
|
:or {cache-atom !tokens-cache}
|
||||||
|
:as config}]
|
||||||
(let [tokens-state (mf/use-state (get @cache-atom tokens))]
|
(let [tokens-state (mf/use-state (get @cache-atom tokens))]
|
||||||
(mf/use-effect
|
(mf/use-effect
|
||||||
(mf/deps tokens)
|
(mf/deps tokens config)
|
||||||
(fn []
|
(fn []
|
||||||
(let [cached (get @cache-atom tokens)]
|
(let [cached (get @cache-atom tokens)]
|
||||||
(cond
|
(cond
|
||||||
|
@ -120,7 +121,7 @@
|
||||||
;; Get the cached entry
|
;; Get the cached entry
|
||||||
(some? cached) (reset! tokens-state cached)
|
(some? cached) (reset! tokens-state cached)
|
||||||
;; No cached entry, start processing
|
;; No cached entry, start processing
|
||||||
:else (let [promise+ (resolve-tokens+ tokens)]
|
:else (let [promise+ (resolve-tokens+ tokens config)]
|
||||||
(swap! cache-atom assoc tokens promise+)
|
(swap! cache-atom assoc tokens promise+)
|
||||||
(p/then promise+ (fn [resolved-tokens]
|
(p/then promise+ (fn [resolved-tokens]
|
||||||
(swap! cache-atom assoc tokens resolved-tokens)
|
(swap! cache-atom assoc tokens resolved-tokens)
|
||||||
|
|
Loading…
Add table
Reference in a new issue