UNPKG

2.69 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.alias = alias;
7exports.getThemeFromTypeName = getThemeFromTypeName;
8exports.removeTypeTheme = removeTypeTheme;
9exports.svgBaseProps = void 0;
10exports.withThemeSuffix = withThemeSuffix;
11
12var _lodash = _interopRequireDefault(require("lodash.camelcase"));
13
14var _lodash2 = _interopRequireDefault(require("lodash.upperfirst"));
15
16var _warning = _interopRequireDefault(require("../_util/warning"));
17
18function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
20// These props make sure that the SVG behaviours like general text.
21// Reference: https://blog.prototypr.io/align-svg-icons-to-text-and-say-goodbye-to-font-icons-d44b3d7b26b4
22var svgBaseProps = {
23 width: '1em',
24 height: '1em',
25 fill: 'currentColor',
26 'aria-hidden': true,
27 focusable: 'false'
28}; // moved from https://github.com/ant-design/ant-design/blob/master/components/icon/utils.ts
29
30exports.svgBaseProps = svgBaseProps;
31var fillTester = /-fill$/;
32var outlineTester = /-o$/;
33var twoToneTester = /-twotone$/;
34
35function getThemeFromTypeName(type) {
36 var result = null;
37
38 if (fillTester.test(type)) {
39 result = 'filled';
40 } else if (outlineTester.test(type)) {
41 result = 'outlined';
42 } else if (twoToneTester.test(type)) {
43 result = 'twoTone';
44 }
45
46 return result;
47}
48
49function removeTypeTheme(type) {
50 return type.replace(fillTester, '').replace(outlineTester, '').replace(twoToneTester, '');
51}
52
53var themeMap = {
54 filled: 'filled',
55 outlined: 'outlined',
56 // default theme
57 twoTone: 'twoTone'
58};
59
60function withThemeSuffix(type, theme) {
61 var result = (0, _lodash2.default)((0, _lodash.default)(type));
62 var realTheme = (0, _lodash2.default)(themeMap[theme]);
63
64 if (theme !== 'outlined' && !realTheme) {
65 (0, _warning.default)(false, 'Icon', "This icon '".concat(type, "' has unknown theme '").concat(theme, "'"));
66 }
67
68 return result + realTheme;
69} // For alias or compatibility
70
71
72function alias(type) {
73 var newType = type;
74
75 switch (type) {
76 case 'cross':
77 newType = 'close';
78 break;
79 // https://github.com/ant-design/ant-design/issues/13007
80
81 case 'interation':
82 newType = 'interaction';
83 break;
84 // https://github.com/ant-design/ant-design/issues/16810
85
86 case 'canlendar':
87 newType = 'calendar';
88 break;
89 // https://github.com/ant-design/ant-design/issues/17448
90
91 case 'colum-height':
92 newType = 'column-height';
93 break;
94
95 default:
96 }
97
98 (0, _warning.default)(newType === type, 'Icon', "Icon '".concat(type, "' was a typo and is now deprecated, please use '").concat(newType, "' instead."));
99 return newType;
100}
\No newline at end of file