"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = useToken; exports.getComputedToken = void 0; var _cssinjs = require("@ant-design/cssinjs"); var _react = _interopRequireDefault(require("react")); var _version = _interopRequireDefault(require("../version")); var _context = require("./context"); var _seed = _interopRequireDefault(require("./themes/seed")); var _alias = _interopRequireDefault(require("./util/alias")); var __rest = void 0 && (void 0).__rest || function (s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; }; const getComputedToken = (originToken, overrideToken, theme) => { const derivativeToken = theme.getDerivativeToken(originToken); const { override } = overrideToken, components = __rest(overrideToken, ["override"]); // Merge with override let mergedDerivativeToken = Object.assign(Object.assign({}, derivativeToken), { override }); // Format if needed mergedDerivativeToken = (0, _alias.default)(mergedDerivativeToken); if (components) { Object.entries(components).forEach(_ref => { let [key, value] = _ref; const { theme: componentTheme } = value, componentTokens = __rest(value, ["theme"]); let mergedComponentToken = componentTokens; if (componentTheme) { mergedComponentToken = getComputedToken(Object.assign(Object.assign({}, mergedDerivativeToken), componentTokens), { override: componentTokens }, componentTheme); } mergedDerivativeToken[key] = mergedComponentToken; }); } return mergedDerivativeToken; }; // ================================== Hook ================================== exports.getComputedToken = getComputedToken; function useToken() { const { token: rootDesignToken, hashed, theme, components } = _react.default.useContext(_context.DesignTokenContext); const salt = `${_version.default}-${hashed || ''}`; const mergedTheme = theme || _context.defaultTheme; const [token, hashId] = (0, _cssinjs.useCacheToken)(mergedTheme, [_seed.default, rootDesignToken], { salt, override: Object.assign({ override: rootDesignToken }, components), 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 formatToken: _alias.default }); return [mergedTheme, token, hashed ? hashId : '']; }