116 lines
4.0 KiB
JavaScript
116 lines
4.0 KiB
JavaScript
"use strict";
|
|
|
|
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
exports.setAlpha = exports.resetComponent = exports.proTheme = exports.operationUnit = exports.lighten = void 0;
|
|
exports.useStyle = useStyle;
|
|
exports.useToken = void 0;
|
|
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
var _cssinjs = require("@ant-design/cssinjs");
|
|
var _tinycolor = require("@ctrl/tinycolor");
|
|
var _antd = require("antd");
|
|
var _react = require("react");
|
|
var _index = require("../index");
|
|
var batToken = _interopRequireWildcard(require("./token"));
|
|
/**
|
|
* 把一个颜色设置一下透明度
|
|
* @example (#fff, 0.5) => rgba(255, 255, 255, 0.5)
|
|
* @param baseColor {string}
|
|
* @param alpha {0-1}
|
|
* @returns rgba {string}
|
|
*/
|
|
var setAlpha = exports.setAlpha = function setAlpha(baseColor, alpha) {
|
|
return new _tinycolor.TinyColor(baseColor).setAlpha(alpha).toRgbString();
|
|
};
|
|
|
|
/**
|
|
* 把一个颜色修改一些明度
|
|
* @example (#000, 50) => #808080
|
|
* @param baseColor {string}
|
|
* @param brightness {0-100}
|
|
* @returns hexColor {string}
|
|
*/
|
|
var lighten = exports.lighten = function lighten(baseColor, brightness) {
|
|
var instance = new _tinycolor.TinyColor(baseColor);
|
|
return instance.lighten(brightness).toHexString();
|
|
};
|
|
var genTheme = function genTheme() {
|
|
if (typeof _antd.theme === 'undefined' || !_antd.theme) return batToken;
|
|
return _antd.theme;
|
|
};
|
|
var proTheme = exports.proTheme = genTheme();
|
|
var useToken = exports.useToken = proTheme.useToken;
|
|
var resetComponent = exports.resetComponent = function resetComponent(token) {
|
|
return {
|
|
boxSizing: 'border-box',
|
|
margin: 0,
|
|
padding: 0,
|
|
color: token.colorText,
|
|
fontSize: token.fontSize,
|
|
lineHeight: token.lineHeight,
|
|
listStyle: 'none'
|
|
};
|
|
};
|
|
var operationUnit = exports.operationUnit = function operationUnit(token) {
|
|
return {
|
|
// FIXME: This use link but is a operation unit. Seems should be a colorPrimary.
|
|
// And Typography use this to generate link style which should not do this.
|
|
color: token.colorLink,
|
|
outline: 'none',
|
|
cursor: 'pointer',
|
|
transition: "color ".concat(token.motionDurationSlow),
|
|
'&:focus, &:hover': {
|
|
color: token.colorLinkHover
|
|
},
|
|
'&:active': {
|
|
color: token.colorLinkActive
|
|
}
|
|
};
|
|
};
|
|
|
|
/**
|
|
* 封装了一下 antd 的 useStyle,支持了一下antd@4
|
|
* @param componentName {string} 组件的名字
|
|
* @param styleFn {GenerateStyle} 生成样式的函数
|
|
* @returns UseStyleResult
|
|
*/
|
|
function useStyle(componentName, styleFn) {
|
|
var _token$proComponentsC;
|
|
var _useContext = (0, _react.useContext)(_index.ProProvider),
|
|
_useContext$token = _useContext.token,
|
|
token = _useContext$token === void 0 ? {} : _useContext$token;
|
|
var _useContext2 = (0, _react.useContext)(_index.ProProvider),
|
|
hashed = _useContext2.hashed;
|
|
var _useToken = useToken(),
|
|
antdToken = _useToken.token,
|
|
hashId = _useToken.hashId;
|
|
var _useContext3 = (0, _react.useContext)(_index.ProProvider),
|
|
provideTheme = _useContext3.theme;
|
|
var _useContext4 = (0, _react.useContext)(_antd.ConfigProvider.ConfigContext),
|
|
getPrefixCls = _useContext4.getPrefixCls,
|
|
csp = _useContext4.csp;
|
|
|
|
// 如果不在 ProProvider 里面,就用 antd 的
|
|
if (!token.layout) {
|
|
token = (0, _objectSpread2.default)({}, antdToken);
|
|
}
|
|
token.proComponentsCls = (_token$proComponentsC = token.proComponentsCls) !== null && _token$proComponentsC !== void 0 ? _token$proComponentsC : ".".concat(getPrefixCls('pro'));
|
|
token.antCls = ".".concat(getPrefixCls());
|
|
return {
|
|
wrapSSR: (0, _cssinjs.useStyleRegister)({
|
|
theme: provideTheme,
|
|
token: token,
|
|
path: [componentName],
|
|
nonce: csp === null || csp === void 0 ? void 0 : csp.nonce,
|
|
layer: {
|
|
name: 'antd-pro'
|
|
}
|
|
}, function () {
|
|
return styleFn(token);
|
|
}),
|
|
hashId: hashed ? hashId : ''
|
|
};
|
|
} |