@@ -21,8 +21,16 @@ 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 { 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' ;
2634
2735const defaultTheme = createTheme ( defaultDerivative ) ;
2836
@@ -64,13 +72,18 @@ export interface DesignTokenContext {
6472const DesignTokenContextKey : InjectionKey < ComputedRef < DesignTokenContext > > =
6573 Symbol ( 'DesignTokenContext' ) ;
6674
67- export const globalDesignTokenApi = ref < DesignTokenContext > ( ) ;
75+ export const globalDesignTokenApi = shallowRef < DesignTokenContext > ( ) ;
6876
6977export const useDesignTokenProvider = ( value : ComputedRef < DesignTokenContext > ) => {
7078 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+ ) ;
7487} ;
7588
7689export const useDesignTokenInject = ( ) => {
@@ -96,31 +109,32 @@ export function useToken(): [
96109 ComputedRef < GlobalToken > ,
97110 ComputedRef < string > ,
98111] {
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 ) ,
104115 ) ;
105116
106- const salt = computed ( ( ) => `${ version } -${ designTokenContext . hashed || '' } ` ) ;
117+ const salt = computed ( ( ) => `${ version } -${ designTokenContext . value . hashed || '' } ` ) ;
107118
108- const mergedTheme = computed ( ( ) => designTokenContext . theme || defaultTheme ) ;
119+ const mergedTheme = computed ( ( ) => designTokenContext . value . theme || defaultTheme ) ;
109120
110121 const cacheToken = useCacheToken < GlobalToken , SeedToken > (
111122 mergedTheme ,
112- computed ( ( ) => [ defaultSeedToken , designTokenContext . token ] ) ,
123+ computed ( ( ) => [ defaultSeedToken , designTokenContext . value . token ] ) ,
113124 computed ( ( ) => ( {
114125 salt : salt . value ,
115- override : { override : designTokenContext . token , ...designTokenContext . components } ,
126+ override : {
127+ override : designTokenContext . value . token ,
128+ ...designTokenContext . value . components ,
129+ } ,
116130 formatToken,
117131 } ) ) ,
118132 ) ;
119133
120134 return [
121135 mergedTheme ,
122136 computed ( ( ) => cacheToken . value [ 0 ] ) ,
123- computed ( ( ) => ( designTokenContext . hashed ? cacheToken . value [ 1 ] : '' ) ) ,
137+ computed ( ( ) => ( designTokenContext . value . hashed ? cacheToken . value [ 1 ] : '' ) ) ,
124138 ] ;
125139}
126140
0 commit comments