@@ -21,7 +21,7 @@ import statisticToken, { merge as mergeToken, statistic } from './util/statistic
21
21
import type { VueNode } from '../_util/type' ;
22
22
import { objectType } from '../_util/type' ;
23
23
import type { ComputedRef , InjectionKey , Ref } from 'vue' ;
24
- import { defineComponent , provide , computed , inject } from 'vue' ;
24
+ import { defineComponent , provide , computed , inject , watchEffect , ref } from 'vue' ;
25
25
import { toReactive } from '../_util/toReactive' ;
26
26
27
27
const defaultTheme = createTheme ( defaultDerivative ) ;
@@ -63,12 +63,17 @@ export interface DesignTokenContext {
63
63
//defaultConfig
64
64
const DesignTokenContextKey : InjectionKey < DesignTokenContext > = Symbol ( 'DesignTokenContext' ) ;
65
65
66
+ export const globalDesignTokenApi = ref < DesignTokenContext > ( ) ;
67
+
66
68
export const useDesignTokenProvider = ( value : DesignTokenContext ) => {
67
69
provide ( DesignTokenContextKey , value ) ;
70
+ watchEffect ( ( ) => {
71
+ globalDesignTokenApi . value = value ;
72
+ } ) ;
68
73
} ;
69
74
70
75
export const useDesignTokenInject = ( ) => {
71
- return inject ( DesignTokenContextKey , defaultConfig ) ;
76
+ return inject ( DesignTokenContextKey , globalDesignTokenApi . value || defaultConfig ) ;
72
77
} ;
73
78
export const DesignTokenProvider = defineComponent ( {
74
79
props : {
@@ -87,7 +92,10 @@ export function useToken(): [
87
92
ComputedRef < GlobalToken > ,
88
93
ComputedRef < string > ,
89
94
] {
90
- const designTokenContext = inject ( DesignTokenContextKey , defaultConfig ) ;
95
+ const designTokenContext = inject < DesignTokenContext > (
96
+ DesignTokenContextKey ,
97
+ globalDesignTokenApi . value || defaultConfig ,
98
+ ) ;
91
99
92
100
const salt = computed ( ( ) => `${ version } -${ designTokenContext . hashed || '' } ` ) ;
93
101
0 commit comments