1 | var __rest = this && this.__rest || function (s, e) {
|
2 | var t = {};
|
3 | for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
4 | if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
5 | if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
6 | }
|
7 | return t;
|
8 | };
|
9 | import React from 'react';
|
10 | import { useCacheToken } from '@ant-design/cssinjs';
|
11 | import version from '../version';
|
12 | import { defaultTheme, DesignTokenContext } from './context';
|
13 | import defaultSeedToken from './themes/seed';
|
14 | import formatToken from './util/alias';
|
15 | export const unitless = {
|
16 | lineHeight: true,
|
17 | lineHeightSM: true,
|
18 | lineHeightLG: true,
|
19 | lineHeightHeading1: true,
|
20 | lineHeightHeading2: true,
|
21 | lineHeightHeading3: true,
|
22 | lineHeightHeading4: true,
|
23 | lineHeightHeading5: true,
|
24 | opacityLoading: true,
|
25 | fontWeightStrong: true,
|
26 | zIndexPopupBase: true,
|
27 | zIndexBase: true
|
28 | };
|
29 | export const ignore = {
|
30 | size: true,
|
31 | sizeSM: true,
|
32 | sizeLG: true,
|
33 | sizeMD: true,
|
34 | sizeXS: true,
|
35 | sizeXXS: true,
|
36 | sizeMS: true,
|
37 | sizeXL: true,
|
38 | sizeXXL: true,
|
39 | sizeUnit: true,
|
40 | sizeStep: true,
|
41 | motionBase: true,
|
42 | motionUnit: true
|
43 | };
|
44 | const preserve = {
|
45 | screenXS: true,
|
46 | screenXSMin: true,
|
47 | screenXSMax: true,
|
48 | screenSM: true,
|
49 | screenSMMin: true,
|
50 | screenSMMax: true,
|
51 | screenMD: true,
|
52 | screenMDMin: true,
|
53 | screenMDMax: true,
|
54 | screenLG: true,
|
55 | screenLGMin: true,
|
56 | screenLGMax: true,
|
57 | screenXL: true,
|
58 | screenXLMin: true,
|
59 | screenXLMax: true,
|
60 | screenXXL: true,
|
61 | screenXXLMin: true
|
62 | };
|
63 | export const getComputedToken = (originToken, overrideToken, theme) => {
|
64 | const derivativeToken = theme.getDerivativeToken(originToken);
|
65 | const {
|
66 | override
|
67 | } = overrideToken,
|
68 | components = __rest(overrideToken, ["override"]);
|
69 |
|
70 | let mergedDerivativeToken = Object.assign(Object.assign({}, derivativeToken), {
|
71 | override
|
72 | });
|
73 |
|
74 | mergedDerivativeToken = formatToken(mergedDerivativeToken);
|
75 | if (components) {
|
76 | Object.entries(components).forEach(_ref => {
|
77 | let [key, value] = _ref;
|
78 | const {
|
79 | theme: componentTheme
|
80 | } = value,
|
81 | componentTokens = __rest(value, ["theme"]);
|
82 | let mergedComponentToken = componentTokens;
|
83 | if (componentTheme) {
|
84 | mergedComponentToken = getComputedToken(Object.assign(Object.assign({}, mergedDerivativeToken), componentTokens), {
|
85 | override: componentTokens
|
86 | }, componentTheme);
|
87 | }
|
88 | mergedDerivativeToken[key] = mergedComponentToken;
|
89 | });
|
90 | }
|
91 | return mergedDerivativeToken;
|
92 | };
|
93 |
|
94 | export default function useToken() {
|
95 | const {
|
96 | token: rootDesignToken,
|
97 | hashed,
|
98 | theme,
|
99 | override,
|
100 | cssVar
|
101 | } = React.useContext(DesignTokenContext);
|
102 | const salt = `${version}-${hashed || ''}`;
|
103 | const mergedTheme = theme || defaultTheme;
|
104 | const [token, hashId, realToken] = useCacheToken(mergedTheme, [defaultSeedToken, rootDesignToken], {
|
105 | salt,
|
106 | override,
|
107 | getComputedToken,
|
108 |
|
109 |
|
110 | formatToken,
|
111 | cssVar: cssVar && {
|
112 | prefix: cssVar.prefix,
|
113 | key: cssVar.key,
|
114 | unitless,
|
115 | ignore,
|
116 | preserve
|
117 | }
|
118 | });
|
119 | return [mergedTheme, realToken, hashed ? hashId : '', token, cssVar];
|
120 | } |
\ | No newline at end of file |