UNPKG

2.18 kBJavaScriptView Raw
1"use strict";
2
3exports.__esModule = true;
4exports.default = withIcon;
5
6var _propTypes = _interopRequireDefault(require("prop-types"));
7
8var _react = _interopRequireDefault(require("react"));
9
10function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
12function withIcon(name) {
13 return WrappedComponent => {
14 function Icon({
15 accessibilityLabel,
16 color = 'currentColor',
17 decorative,
18 flip,
19 flipVertical,
20 inline,
21 size = '1em'
22 }) {
23 const props = {
24 focusable: 'false',
25 role: decorative ? 'presentation' : 'img',
26 style: {
27 height: size,
28 width: size,
29 display: inline ? 'inline' : 'block',
30 fill: color,
31 transform: flip || flipVertical ? "scale(" + (flip ? -1 : 1) + ", " + (flipVertical ? -1 : 1) + ")" : 'scale(1)',
32 // keep scale(1) for transition flipping
33 transition: 'transform 300ms ease-out'
34 }
35 };
36
37 if ("production" !== process.env.NODE_ENV) {
38 if (!accessibilityLabel && !decorative) {
39 // eslint-disable-next-line no-console
40 console.error('Missing `accessibilityLabel` or `decorative` for accessibility.');
41 }
42
43 if (accessibilityLabel && decorative) {
44 // eslint-disable-next-line no-console
45 console.error('Only one of `accessibilityLabel` or `decorative` may be used.');
46 }
47 }
48
49 if (decorative) {
50 props['aria-hidden'] = true;
51 }
52
53 if (accessibilityLabel) {
54 props['aria-label'] = accessibilityLabel;
55 }
56
57 return /*#__PURE__*/_react.default.createElement(WrappedComponent, props);
58 }
59
60 Icon.propTypes = {
61 accessibilityLabel: _propTypes.default.string,
62 decorative: _propTypes.default.bool,
63 flip: _propTypes.default.bool,
64 flipVertical: _propTypes.default.bool,
65 size: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
66 color: _propTypes.default.string,
67 inline: _propTypes.default.bool
68 };
69 Icon.displayName = name;
70 Icon.WrappedComponent = WrappedComponent;
71 return Icon;
72 };
73}
\No newline at end of file