@@ -21,8 +21,16 @@ 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 { unref , defineComponent , provide , computed , inject , watchEffect , ref } from 'vue' ;
25
- import { toReactive } from '../_util/toReactive' ;
24
+ import {
25
+ triggerRef ,
26
+ unref ,
27
+ defineComponent ,
28
+ provide ,
29
+ computed ,
30
+ inject ,
31
+ watch ,
32
+ shallowRef ,
33
+ } from 'vue' ;
26
34
27
35
const defaultTheme = createTheme ( defaultDerivative ) ;
28
36
@@ -64,13 +72,18 @@ export interface DesignTokenContext {
64
72
const DesignTokenContextKey : InjectionKey < ComputedRef < DesignTokenContext > > =
65
73
Symbol ( 'DesignTokenContext' ) ;
66
74
67
- export const globalDesignTokenApi = ref < DesignTokenContext > ( ) ;
75
+ export const globalDesignTokenApi = shallowRef < DesignTokenContext > ( ) ;
68
76
69
77
export const useDesignTokenProvider = ( value : ComputedRef < DesignTokenContext > ) => {
70
78
provide ( DesignTokenContextKey , value ) ;
71
- watchEffect ( ( ) => {
72
- globalDesignTokenApi . value = toReactive ( value ) ;
73
- } ) ;
79
+ watch (
80
+ value ,
81
+ ( ) => {
82
+ globalDesignTokenApi . value = unref ( value ) ;
83
+ triggerRef ( globalDesignTokenApi ) ;
84
+ } ,
85
+ { immediate : true , deep : true } ,
86
+ ) ;
74
87
} ;
75
88
76
89
export const useDesignTokenInject = ( ) => {
@@ -96,31 +109,32 @@ export function useToken(): [
96
109
ComputedRef < GlobalToken > ,
97
110
ComputedRef < string > ,
98
111
] {
99
- const designTokenContext = unref (
100
- inject < ComputedRef < DesignTokenContext > > (
101
- DesignTokenContextKey ,
102
- computed ( ( ) => globalDesignTokenApi . value || defaultConfig ) ,
103
- ) ,
112
+ const designTokenContext = inject < ComputedRef < DesignTokenContext > > (
113
+ DesignTokenContextKey ,
114
+ computed ( ( ) => globalDesignTokenApi . value || defaultConfig ) ,
104
115
) ;
105
116
106
- const salt = computed ( ( ) => `${ version } -${ designTokenContext . hashed || '' } ` ) ;
117
+ const salt = computed ( ( ) => `${ version } -${ designTokenContext . value . hashed || '' } ` ) ;
107
118
108
- const mergedTheme = computed ( ( ) => designTokenContext . theme || defaultTheme ) ;
119
+ const mergedTheme = computed ( ( ) => designTokenContext . value . theme || defaultTheme ) ;
109
120
110
121
const cacheToken = useCacheToken < GlobalToken , SeedToken > (
111
122
mergedTheme ,
112
- computed ( ( ) => [ defaultSeedToken , designTokenContext . token ] ) ,
123
+ computed ( ( ) => [ defaultSeedToken , designTokenContext . value . token ] ) ,
113
124
computed ( ( ) => ( {
114
125
salt : salt . value ,
115
- override : { override : designTokenContext . token , ...designTokenContext . components } ,
126
+ override : {
127
+ override : designTokenContext . value . token ,
128
+ ...designTokenContext . value . components ,
129
+ } ,
116
130
formatToken,
117
131
} ) ) ,
118
132
) ;
119
133
120
134
return [
121
135
mergedTheme ,
122
136
computed ( ( ) => cacheToken . value [ 0 ] ) ,
123
- computed ( ( ) => ( designTokenContext . hashed ? cacheToken . value [ 1 ] : '' ) ) ,
137
+ computed ( ( ) => ( designTokenContext . value . hashed ? cacheToken . value [ 1 ] : '' ) ) ,
124
138
] ;
125
139
}
126
140
0 commit comments