Skip to content

Commit

Permalink
refactor: more cache (#45302)
Browse files Browse the repository at this point in the history
* chore: cache

* chore: clean up

* chore: clean up

* refactor: part

* chore: bump

* chore: fix lint

* chore: fix lint

* chore: fix alt
  • Loading branch information
zombieJ committed Oct 13, 2023
1 parent bf1b73e commit 317dac6
Show file tree
Hide file tree
Showing 6 changed files with 53 additions and 28 deletions.
17 changes: 11 additions & 6 deletions components/config-provider/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,11 @@ import defaultSeedToken from '../theme/themes/seed';
import type {
BadgeConfig,
ButtonConfig,
DrawerConfig,
ComponentStyleConfig,
ConfigConsumerProps,
CSPConfig,
DirectionType,
DrawerConfig,
FlexConfig,
ModalConfig,
PopupOverflow,
Expand Down Expand Up @@ -547,16 +547,21 @@ const ProviderChildren: React.FC<ProviderChildrenProps> = (props) => {
parsedComponents[componentName] = parsedToken;
});

const mergedToken = {
...defaultSeedToken,
...token,
};

return {
...rest,
theme: themeObj,

token: {
...defaultSeedToken,
...token,
},

token: mergedToken,
components: parsedComponents,
override: {
override: mergedToken,
...parsedComponents,
},
};
}, [mergedTheme]);

Expand Down
18 changes: 12 additions & 6 deletions components/theme/context.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import React from 'react';
import type { Theme } from '@ant-design/cssinjs';
import { createTheme } from '@ant-design/cssinjs';
import React from 'react';

import type { AliasToken, MapToken, OverrideToken, SeedToken } from './interface';
import defaultDerivative from './themes/default';
import defaultSeedToken from './themes/seed';
Expand All @@ -11,17 +12,22 @@ export const defaultTheme = createTheme(defaultDerivative);
// To ensure snapshot stable. We disable hashed in test env.
export const defaultConfig = {
token: defaultSeedToken,
override: { override: defaultSeedToken },
hashed: true,
};

export type ComponentsToken = {
[key in keyof OverrideToken]?: OverrideToken[key] & {
theme?: Theme<SeedToken, MapToken>;
};
};

export interface DesignTokenProviderProps {
token: Partial<AliasToken>;
theme?: Theme<SeedToken, MapToken>;
components?: {
[key in keyof OverrideToken]?: OverrideToken[key] & {
theme?: Theme<SeedToken, MapToken>;
};
};
components?: ComponentsToken;
/** Just merge `token` & `override` at top to save perf */
override: { override: Partial<AliasToken> } & ComponentsToken;
hashed?: string | boolean;
}

Expand Down
14 changes: 5 additions & 9 deletions components/theme/useToken.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import React from 'react';
import type { Theme } from '@ant-design/cssinjs';
import { useCacheToken } from '@ant-design/cssinjs';
import React from 'react';

import version from '../version';
import type { AliasToken, GlobalToken, MapToken, SeedToken } from './interface';
import type { DesignTokenProviderProps } from './context';
import { defaultTheme, DesignTokenContext } from './context';
import type { AliasToken, GlobalToken, MapToken, SeedToken } from './interface';
import defaultSeedToken from './themes/seed';
import formatToken from './util/alias';

Expand Down Expand Up @@ -57,12 +58,7 @@ export default function useToken(): [
token: GlobalToken,
hashId: string,
] {
const {
token: rootDesignToken,
hashed,
theme,
components,
} = React.useContext(DesignTokenContext);
const { token: rootDesignToken, hashed, theme, override } = React.useContext(DesignTokenContext);

const salt = `${version}-${hashed || ''}`;

Expand All @@ -73,7 +69,7 @@ export default function useToken(): [
[defaultSeedToken, rootDesignToken],
{
salt,
override: { override: rootDesignToken, ...components },
override,
getComputedToken,
// formatToken will not be consumed after 1.15.0 with getComputedToken.
// But token will break if @ant-design/cssinjs is under 1.15.0 without it
Expand Down
13 changes: 11 additions & 2 deletions components/tree/demo/virtual-scroll.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import React from 'react';
import { Tree } from 'antd';
import { Tooltip, Tree } from 'antd';
import type { DataNode } from 'antd/es/tree';

const dig = (path = '0', level = 3) => {
Expand All @@ -22,6 +22,15 @@ const dig = (path = '0', level = 3) => {

const treeData = dig();

const App: React.FC = () => <Tree treeData={treeData} height={233} defaultExpandAll />;
const MemoTooltip = Tooltip || React.memo(Tooltip);

const App: React.FC = () => (
<Tree
treeData={treeData}
height={233}
defaultExpandAll
titleRender={(item) => <MemoTooltip title={item.title as any}>{item.title as any}</MemoTooltip>}
/>
);

export default App;
6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@
],
"dependencies": {
"@ant-design/colors": "^7.0.0",
"@ant-design/cssinjs": "^1.17.0",
"@ant-design/cssinjs": "^1.17.1",
"@ant-design/icons": "^5.2.6",
"@ant-design/react-slick": "~1.0.2",
"@babel/runtime": "^7.18.3",
Expand Down Expand Up @@ -154,7 +154,7 @@
"rc-tree": "~5.7.12",
"rc-tree-select": "~5.13.0",
"rc-upload": "~4.3.5",
"rc-util": "^5.37.0",
"rc-util": "^5.38.0",
"scroll-into-view-if-needed": "^3.0.3",
"throttle-debounce": "^5.0.0"
},
Expand Down Expand Up @@ -217,7 +217,7 @@
"cross-fetch": "^4.0.0",
"crypto": "^1.0.1",
"dekko": "^0.2.1",
"dumi": "^2.3.0-alpha.4",
"dumi": "^2.3.0-alpha.7",
"dumi-plugin-color-chunk": "^1.0.2",
"duplicate-package-checker-webpack-plugin": "^3.0.0",
"esbuild-loader": "^4.0.0",
Expand Down
13 changes: 11 additions & 2 deletions scripts/collect-token-statistic.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
/* eslint-disable no-console */
import React from 'react';
import chalk from 'chalk';
import fs from 'fs-extra';
import ProgressBar from 'progress';
import React from 'react';
import ReactDOMServer from 'react-dom/server';

import { DesignTokenContext } from '../components/theme/internal';
import seedToken from '../components/theme/themes/seed';
import { statistic } from '../components/theme/util/statistic';
Expand All @@ -26,10 +27,18 @@ const bar = new ProgressBar('🚀 Collecting by component: [:bar] :component (:c
render(Component: any) {
ReactDOMServer.renderToString(React.createElement(Component));
// Render wireframe
const wireframeToken = { ...seedToken, wireframe: true };
ReactDOMServer.renderToString(
React.createElement(
DesignTokenContext.Provider,
{ value: { token: { ...seedToken, wireframe: true } } },
{
value: {
token: wireframeToken,
override: {
override: wireframeToken,
},
},
},
React.createElement(Component),
),
);
Expand Down

0 comments on commit 317dac6

Please sign in to comment.