diff --git a/src/_util/type.ts b/src/_util/type.ts deleted file mode 100644 index d7f3853..0000000 --- a/src/_util/type.ts +++ /dev/null @@ -1 +0,0 @@ -export type AnyObject = Record; \ No newline at end of file diff --git a/src/context/configProvider.ts b/src/context/configProvider.ts index 3689575..75a3744 100644 --- a/src/context/configProvider.ts +++ b/src/context/configProvider.ts @@ -1,7 +1,6 @@ import React from 'react'; -import type { AnyObject } from '../_util/type'; -export interface DefaultConfigConsumerProps extends AnyObject { +export interface DefaultConfigConsumerProps extends Object { getPrefixCls?: (suffixCls?: string, customizePrefixCls?: string) => string; iconPrefixCls?: string; csp?: CSPConfig; diff --git a/src/context/themeProvider.ts b/src/context/themeProvider.ts index ec7a8fd..99ac535 100644 --- a/src/context/themeProvider.ts +++ b/src/context/themeProvider.ts @@ -3,7 +3,6 @@ import type { Theme } from '@ant-design/cssinjs'; import defaultSeedToken from '../themes/seed'; -import type { AnyObject } from '../_util/type'; import type { AliasToken, OverrideToken, MapToken, SeedToken, GlobalToken } from '../interface'; export const unitless: { @@ -41,13 +40,13 @@ export const ignore: { motionUnit: true, }; -type ComponentsToken = { +type ComponentsToken = { [key in keyof OverrideToken]?: OverrideToken[key] & { theme?: Theme; }; }; -export interface DesignTokenProviderProps { +export interface DesignTokenProviderProps { token: GlobalToken; /** Just merge `token` & `override` at top to save perf */ override: { override: Partial } & ComponentsToken; @@ -69,9 +68,9 @@ export const DefaultThemeProviderContextConfig = { hashed: true, }; -export type GetThemeProviderContext = () => [React.Context>]; +export type GetThemeProviderContext = () => [React.Context>]; -export function useMergedThemeContext (getThemeProviderContext?: GetThemeProviderContext) { +export function useMergedThemeContext (getThemeProviderContext?: GetThemeProviderContext) { const DefaultThemeProviderContext = React.createContext>( DefaultThemeProviderContextConfig as DesignTokenProviderProps ); diff --git a/src/interface/components.ts b/src/interface/components.ts index a297e5b..14113ff 100644 --- a/src/interface/components.ts +++ b/src/interface/components.ts @@ -1,9 +1,8 @@ -import type { AnyObject } from '../_util/type'; import type { AliasToken } from './alias'; -export type OverrideToken = { +export type OverrideToken = { [key in keyof CompTokenMap]: Partial & Partial; }; /** Final token which contains the components level override */ -export type GlobalToken = AliasToken & CompTokenMap; \ No newline at end of file +export type GlobalToken = AliasToken & CompTokenMap; \ No newline at end of file diff --git a/src/interface/index.ts b/src/interface/index.ts index d157523..40e1d9a 100644 --- a/src/interface/index.ts +++ b/src/interface/index.ts @@ -3,7 +3,6 @@ import type { CSSInterpolation, DerivativeFunc } from '@ant-design/cssinjs'; import type { AliasToken } from './alias'; import type { MapToken } from './maps'; import type { SeedToken } from './seeds'; -import type { AnyObject } from '../_util/type'; export type MappingAlgorithm = DerivativeFunc; @@ -37,6 +36,6 @@ export type { SeedToken } from './seeds'; export type UseComponentStyleResult = [(node: React.ReactNode) => React.ReactElement, string]; export type GenerateStyle< - ComponentToken extends AnyObject = AliasToken, + ComponentToken extends Object = AliasToken, ReturnType = CSSInterpolation, > = (token: ComponentToken) => ReturnType; diff --git a/src/util/alias.ts b/src/util/alias.ts index 904e242..a8e760a 100644 --- a/src/util/alias.ts +++ b/src/util/alias.ts @@ -1,20 +1,19 @@ -import { TinyColor } from '@ant-design/fast-color'; +import { FastColor } from '@ant-design/fast-color'; import type { AliasToken, MapToken, OverrideToken, SeedToken } from '../interface'; import seedToken from '../themes/seed'; import getAlphaColor from './getAlphaColor'; -import type { AnyObject } from '../_util/type'; /** Raw merge of `@ant-design/cssinjs` token. Which need additional process */ // type RawMergedToken = MapToken & { override: Partial }; -type RawMergedToken = MapToken & OverrideToken & { override: Partial }; +type RawMergedToken = MapToken & OverrideToken & { override: Partial }; /** * Seed (designer) > Derivative (designer) > Alias (developer). * * Merge seed & derivative & override token and generate alias token for developer. */ -export default function formatToken (derivativeToken: RawMergedToken): AliasToken { +export default function formatToken (derivativeToken: RawMergedToken): AliasToken { const { override, ...restToken } = derivativeToken; const overrideTokens = { ...override }; @@ -169,9 +168,9 @@ export default function formatToken (derivativeT boxShadowPopoverArrow: '2px 2px 5px rgba(0, 0, 0, 0.05)', boxShadowCard: ` - 0 1px 2px -2px ${new TinyColor('rgba(0, 0, 0, 0.16)').toRgbString()}, - 0 3px 6px 0 ${new TinyColor('rgba(0, 0, 0, 0.12)').toRgbString()}, - 0 5px 12px 4px ${new TinyColor('rgba(0, 0, 0, 0.09)').toRgbString()} + 0 1px 2px -2px ${new FastColor('rgba(0, 0, 0, 0.16)').toRgbString()}, + 0 3px 6px 0 ${new FastColor('rgba(0, 0, 0, 0.12)').toRgbString()}, + 0 5px 12px 4px ${new FastColor('rgba(0, 0, 0, 0.09)').toRgbString()} `, boxShadowDrawerRight: ` -6px 0 16px 0 rgba(0, 0, 0, 0.08), diff --git a/src/util/genStyleUtils.tsx b/src/util/genStyleUtils.tsx index 0d15a71..4516e5f 100644 --- a/src/util/genStyleUtils.tsx +++ b/src/util/genStyleUtils.tsx @@ -36,16 +36,15 @@ import getDefaultComponentToken from './getDefaultComponentToken'; import statisticToken, { merge as mergeToken } from './statistic'; import useUniqueMemo from '../_util/hooks/useUniqueMemo'; -import type { AnyObject } from '../_util/type'; -export type OverrideComponent = Extract; +export type OverrideComponent = Extract; -export type GlobalTokenWithComponent> = GlobalToken & +export type GlobalTokenWithComponent> = GlobalToken & CompTokenMap[C]; -export type ComponentToken> = Exclude[C], undefined>; -export type ComponentTokenKey> = keyof ComponentToken; +export type ComponentToken> = Exclude[C], undefined>; +export type ComponentTokenKey> = keyof ComponentToken; export interface StyleInfo { hashId: string; @@ -71,21 +70,21 @@ export type TokenWithCommonCls = T & { antCls: string; } & CSSUtil; -export type FullToken> = TokenWithCommonCls< +export type FullToken> = TokenWithCommonCls< GlobalTokenWithComponent >; -export type GenStyleFn> = ( +export type GenStyleFn> = ( token: FullToken, info: StyleInfo, ) => CSSInterpolation; export type GetDefaultTokenFn< - CompTokenMap extends AnyObject, + CompTokenMap extends Object, C extends OverrideComponent > = (token: AliasToken & Partial) => CompTokenMap[C]; -export type GetDefaultToken> = +export type GetDefaultToken> = | null | CompTokenMap[C] | GetDefaultTokenFn @@ -104,7 +103,7 @@ export type CSSVarRegisterProps = { }; }; -export default function genStyleUtils( +export default function genStyleUtils( getConfigProviderContext?: GetConfigProviderContext, getThemeProviderContext?: GetThemeProviderContext, ) { @@ -369,7 +368,7 @@ export default function genStyleUtils( )})`; }); } - const mergedToken = mergeToken( + const mergedToken = mergeToken( proxyToken, { componentCls, diff --git a/src/util/statistic.ts b/src/util/statistic.ts index 57d308b..b3263ae 100644 --- a/src/util/statistic.ts +++ b/src/util/statistic.ts @@ -1,4 +1,3 @@ -import type { AnyObject } from '../_util/type'; declare const CSSINJS_STATISTIC: any; @@ -10,7 +9,7 @@ let recording = true; * This function will do as `Object.assign` in production. But will use Object.defineProperty:get to * pass all value access in development. To support statistic field usage with alias token. */ -export function merge(...objs: Partial[]): T { +export function merge(...objs: Partial[]): T { /* istanbul ignore next */ if (!enableStatistic) { return Object.assign({}, ...objs); @@ -49,7 +48,7 @@ export const _statistic_build_: typeof statistic = {}; function noop() {} /** Statistic token usage case. Should use `merge` function if you do not want spread record. */ -const statisticToken = (token: T) => { +const statisticToken = (token: T) => { let tokenKeys: Set | undefined; let proxy = token; let flush: (componentName: string, componentToken: Record) => void =