Skip to content

Commit 7daaf99

Browse files
committed
refactor: dependency inversion for useToken
1 parent b049106 commit 7daaf99

File tree

3 files changed

+34
-67
lines changed

3 files changed

+34
-67
lines changed

src/context/index.ts

Lines changed: 0 additions & 3 deletions
This file was deleted.
Lines changed: 9 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import React from 'react';
21
import type { Theme, TokenType } from '@ant-design/cssinjs';
32

43
import type { OverrideTokenMap, TokenMap } from '../interface';
@@ -13,7 +12,7 @@ export type TokenMapWithTheme<
1312
};
1413
};
1514

16-
export interface DesignTokenProviderProps<
15+
export interface UseTokenReturn<
1716
CompTokenMap extends TokenMap,
1817
DesignToken extends TokenType,
1918
AliasToken extends TokenType,
@@ -32,43 +31,22 @@ export interface DesignTokenProviderProps<
3231
};
3332
}
3433

35-
// To ensure snapshot stable. We disable hashed in test env.
36-
export const DefaultThemeProviderContextConfig = {
37-
token: {},
38-
override: { override: {} },
39-
hashed: true,
40-
};
41-
42-
export type GetThemeProviderContext<
34+
export type UseToken<
4335
CompTokenMap extends TokenMap,
4436
DesignToken extends TokenType,
4537
AliasToken extends TokenType,
46-
> = () => [React.Context<DesignTokenProviderProps<CompTokenMap, DesignToken, AliasToken>>];
38+
> = () => UseTokenReturn<CompTokenMap, DesignToken, AliasToken>;
4739

48-
export function useMergedThemeContext<
40+
function useDefaultToken<
4941
CompTokenMap extends TokenMap,
5042
DesignToken extends TokenType,
5143
AliasToken extends TokenType,
52-
>(getThemeProviderContext?: GetThemeProviderContext<CompTokenMap, DesignToken, AliasToken>) {
53-
const DefaultThemeProviderContext = React.createContext<DesignTokenProviderProps<CompTokenMap, DesignToken, AliasToken>>({
44+
> (): UseTokenReturn<CompTokenMap, DesignToken, AliasToken> {
45+
return {
5446
token: {},
5547
override: { override: {} },
5648
hashed: true,
57-
});
58-
59-
const [ThemeProviderContext] = getThemeProviderContext?.() ?? [];
60-
61-
const defaultContext = React.useContext(DefaultThemeProviderContext);
62-
63-
const context = React.useContext(ThemeProviderContext);
64-
65-
const mergedContext = React.useMemo(() => {
66-
return {
67-
...defaultContext,
68-
...context
69-
};
70-
}, [context, defaultContext]);
71-
72-
return mergedContext;
73-
}
49+
}
50+
};
7451

52+
export default useDefaultToken;

src/util/genStyleUtils.tsx

Lines changed: 25 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,6 @@ import {
1212
useStyleRegister,
1313
} from '@ant-design/cssinjs';
1414

15-
import type { GetThemeProviderContext } from '../context';
16-
import { useMergedThemeContext } from '../context';
17-
1815
import type {
1916
ComponentTokenKey,
2017
GlobalTokenWithComponent,
@@ -36,6 +33,7 @@ import statisticToken, { merge as mergeToken } from './statistic';
3633
import useUniqueMemo from '../_util/hooks/useUniqueMemo';
3734
import useDefaultCSP, { type UseCSP } from '../hooks/useCSP';
3835
import { type UsePrefix } from '../hooks/usePrefix';
36+
import useDefaultToken, { type UseToken } from '../hooks/useToken';
3937

4038
export interface StyleInfo {
4139
hashId: string;
@@ -103,21 +101,15 @@ export default function genStyleUtils<
103101
config: {
104102
useCSP?: UseCSP;
105103
usePrefix: UsePrefix;
106-
},
107-
getThemeProviderContext?: GetThemeProviderContext<
108-
CompTokenMap,
109-
DesignToken,
110-
AliasToken
111-
>,
104+
useToken?: UseToken<CompTokenMap, DesignToken, AliasToken>;
105+
}
112106
) {
113107
// Dependency inversion for preparing basic config.
114-
const { useCSP = useDefaultCSP, usePrefix } = config;
115-
116-
function useToken() {
117-
return useMergedThemeContext<CompTokenMap, DesignToken, AliasToken>(
118-
getThemeProviderContext,
119-
);
120-
}
108+
const {
109+
useCSP = useDefaultCSP,
110+
useToken = useDefaultToken,
111+
usePrefix,
112+
} = config;
121113

122114
function genStyleHooks<C extends TokenMapKey<CompTokenMap>>(
123115
component: C | [C, string],
@@ -362,19 +354,19 @@ export default function genStyleUtils<
362354

363355
// Shared config
364356
const sharedConfig: Omit<Parameters<typeof useStyleRegister>[0], 'path'> =
365-
{
366-
theme,
367-
token,
368-
hashId,
369-
nonce: () => csp.nonce!,
370-
clientOnly: options.clientOnly,
371-
layer: {
372-
name: 'antd',
373-
},
357+
{
358+
theme,
359+
token,
360+
hashId,
361+
nonce: () => csp.nonce!,
362+
clientOnly: options.clientOnly,
363+
layer: {
364+
name: 'antd',
365+
},
374366

375-
// antd is always at top of styles
376-
order: options.order || -999,
377-
};
367+
// antd is always at top of styles
368+
order: options.order || -999,
369+
};
378370

379371
// Generate style for all a tags in antd component.
380372
useStyleRegister(
@@ -448,11 +440,11 @@ export default function genStyleUtils<
448440
options.resetStyle === false
449441
? null
450442
: options?.genCommonStyle?.(
451-
mergedToken,
452-
prefixCls,
453-
rootCls,
454-
options.resetFont,
455-
) ?? {},
443+
mergedToken,
444+
prefixCls,
445+
rootCls,
446+
options.resetFont,
447+
) ?? {},
456448
styleInterpolation,
457449
];
458450
},

0 commit comments

Comments
 (0)