@@ -21,7 +21,7 @@ import statisticToken, { merge as mergeToken, statistic } from './util/statistic
2121import type { VueNode } from '../_util/type' ;
2222import { objectType } from '../_util/type' ;
2323import type { ComputedRef , InjectionKey , Ref } from 'vue' ;
24- import { defineComponent , provide , computed , inject } from 'vue' ;
24+ import { defineComponent , provide , computed , inject , watchEffect , ref } from 'vue' ;
2525import { toReactive } from '../_util/toReactive' ;
2626
2727const defaultTheme = createTheme ( defaultDerivative ) ;
@@ -63,12 +63,17 @@ export interface DesignTokenContext {
6363//defaultConfig
6464const DesignTokenContextKey : InjectionKey < DesignTokenContext > = Symbol ( 'DesignTokenContext' ) ;
6565
66+ export const globalDesignTokenApi = ref < DesignTokenContext > ( ) ;
67+
6668export const useDesignTokenProvider = ( value : DesignTokenContext ) => {
6769 provide ( DesignTokenContextKey , value ) ;
70+ watchEffect ( ( ) => {
71+ globalDesignTokenApi . value = value ;
72+ } ) ;
6873} ;
6974
7075export const useDesignTokenInject = ( ) => {
71- return inject ( DesignTokenContextKey , defaultConfig ) ;
76+ return inject ( DesignTokenContextKey , globalDesignTokenApi . value || defaultConfig ) ;
7277} ;
7378export const DesignTokenProvider = defineComponent ( {
7479 props : {
@@ -87,7 +92,10 @@ export function useToken(): [
8792 ComputedRef < GlobalToken > ,
8893 ComputedRef < string > ,
8994] {
90- const designTokenContext = inject ( DesignTokenContextKey , defaultConfig ) ;
95+ const designTokenContext = inject < DesignTokenContext > (
96+ DesignTokenContextKey ,
97+ globalDesignTokenApi . value || defaultConfig ,
98+ ) ;
9199
92100 const salt = computed ( ( ) => `${ version } -${ designTokenContext . hashed || '' } ` ) ;
93101
0 commit comments