@@ -55,7 +55,7 @@ export interface Option<DerivativeToken, DesignToken> {
5555 /**
5656 * Transform token to css variables.
5757 */
58- cssVar ? : {
58+ cssVar : {
5959 /** Prefix for css variables */
6060 prefix ?: string ;
6161 /** Tokens that should not be appended with unit */
@@ -65,7 +65,7 @@ export interface Option<DerivativeToken, DesignToken> {
6565 /** Tokens that preserves origin value */
6666 preserve ?: Record < string , boolean > ;
6767 /** Key for current theme. Useful for customizing and should be unique */
68- key ? : string ;
68+ key : string ;
6969 } ;
7070}
7171
@@ -86,7 +86,7 @@ function removeStyleTags(key: string, instanceId: string) {
8686 }
8787}
8888
89- const TOKEN_THRESHOLD = 0 ;
89+ const TOKEN_THRESHOLD = - 1 ;
9090
9191// Remove will check current keys first
9292function cleanTokenStyle ( tokenKey : string , instanceId : string ) {
@@ -136,9 +136,9 @@ export const getComputedToken = <
136136export const TOKEN_PREFIX = 'token' ;
137137
138138type TokenCacheValue < DerivativeToken > = [
139- token : DerivativeToken & { _tokenKey : string ; _themeKey : string } ,
139+ token : DerivativeToken ,
140140 hashId : string ,
141- realToken : DerivativeToken & { _tokenKey : string } ,
141+ realToken : DerivativeToken ,
142142 cssVarStr : string ,
143143 cssVarKey : string ,
144144] ;
@@ -156,7 +156,7 @@ export default function useCacheToken<
156156> (
157157 theme : Theme < any , any > ,
158158 tokens : Partial < DesignToken > [ ] ,
159- option : Option < DerivativeToken , DesignToken > = { } ,
159+ option : Option < DerivativeToken , DesignToken > ,
160160) : TokenCacheValue < DerivativeToken > {
161161 const {
162162 cache : { instanceId } ,
@@ -182,68 +182,53 @@ export default function useCacheToken<
182182 TOKEN_PREFIX ,
183183 [ salt , theme . id , tokenStr , overrideTokenStr , cssVarStr ] ,
184184 ( ) => {
185- let mergedDerivativeToken = compute
185+ const mergedDerivativeToken = compute
186186 ? compute ( mergedToken , override , theme )
187187 : getComputedToken ( mergedToken , override , theme , formatToken ) ;
188188
189189 // Replace token value with css variables
190190 const actualToken = { ...mergedDerivativeToken } ;
191- let cssVarsStr = '' ;
192- if ( ! ! cssVar ) {
193- [ mergedDerivativeToken , cssVarsStr ] = transformToken (
194- mergedDerivativeToken ,
195- cssVar . key ! ,
196- {
197- prefix : cssVar . prefix ,
198- ignore : cssVar . ignore ,
199- unitless : cssVar . unitless ,
200- preserve : cssVar . preserve ,
201- } ,
202- ) ;
203- }
191+ const [ tokenWithCssVar , cssVarsStr ] = transformToken (
192+ mergedDerivativeToken ,
193+ cssVar . key ,
194+ {
195+ prefix : cssVar . prefix ,
196+ ignore : cssVar . ignore ,
197+ unitless : cssVar . unitless ,
198+ preserve : cssVar . preserve ,
199+ } ,
200+ ) as [ any , string ] ;
204201
205202 // Optimize for `useStyleRegister` performance
206- const tokenKey = token2key ( mergedDerivativeToken , salt ) ;
207- mergedDerivativeToken . _tokenKey = tokenKey ;
208- actualToken . _tokenKey = token2key ( actualToken , salt ) ;
203+ const mergedSalt = `${ salt } _${ cssVar . prefix || '' } ` ;
204+ actualToken . _tokenKey = token2key ( actualToken , mergedSalt ) ;
209205
210- const themeKey = cssVar ?. key ?? tokenKey ;
211- mergedDerivativeToken . _themeKey = themeKey ;
206+ const themeKey = cssVar . key ;
212207 recordCleanToken ( themeKey ) ;
213208
214- const hashId = `${ hashPrefix } -${ hash ( tokenKey ) } ` ;
215- mergedDerivativeToken . _hashId = hashId ; // Not used
209+ const hashId = `${ hashPrefix } -${ hash ( mergedSalt ) } ` ;
216210
217- return [
218- mergedDerivativeToken ,
219- hashId ,
220- actualToken ,
221- cssVarsStr ,
222- cssVar ?. key || '' ,
223- ] ;
211+ return [ tokenWithCssVar , hashId , actualToken , cssVarsStr , cssVar . key ] ;
224212 } ,
225- ( cache ) => {
213+ ( [ , , , , themeKey ] ) => {
226214 // Remove token will remove all related style
227- cleanTokenStyle ( cache [ 0 ] . _themeKey , instanceId ) ;
215+ cleanTokenStyle ( themeKey , instanceId ) ;
228216 } ,
229- ( [ token , , , cssVarsStr ] ) => {
230- if ( cssVar && cssVarsStr ) {
231- const style = updateCSS (
232- cssVarsStr ,
233- hash ( `css-variables-${ token . _themeKey } ` ) ,
234- {
235- mark : ATTR_MARK ,
236- prepend : 'queue' ,
237- attachTo : container ,
238- priority : - 999 ,
239- } ,
240- ) ;
241-
242- ( style as any ) [ CSS_IN_JS_INSTANCE ] = instanceId ;
243-
244- // Used for `useCacheToken` to remove on batch when token removed
245- style . setAttribute ( ATTR_TOKEN , token . _themeKey ) ;
217+ ( [ , , , cssVarsStr , themeKey ] ) => {
218+ if ( ! cssVarsStr ) {
219+ return ;
246220 }
221+ const style = updateCSS ( cssVarsStr , hash ( `css-var-${ themeKey } ` ) , {
222+ mark : ATTR_MARK ,
223+ prepend : 'queue' ,
224+ attachTo : container ,
225+ priority : - 999 ,
226+ } ) ;
227+
228+ ( style as any ) [ CSS_IN_JS_INSTANCE ] = instanceId ;
229+
230+ // Used for `useCacheToken` to remove on batch when token removed
231+ style . setAttribute ( ATTR_TOKEN , themeKey ) ;
247232 } ,
248233 ) ;
249234
0 commit comments