1 | "use strict";
|
2 |
|
3 | exports.__esModule = true;
|
4 | exports.default = withIcon;
|
5 |
|
6 | var _propTypes = _interopRequireDefault(require("prop-types"));
|
7 |
|
8 | var _react = _interopRequireDefault(require("react"));
|
9 |
|
10 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
11 |
|
12 | function 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 |
|
33 | transition: 'transform 300ms ease-out'
|
34 | }
|
35 | };
|
36 |
|
37 | if ("production" !== process.env.NODE_ENV) {
|
38 | if (!accessibilityLabel && !decorative) {
|
39 |
|
40 | console.error('Missing `accessibilityLabel` or `decorative` for accessibility.');
|
41 | }
|
42 |
|
43 | if (accessibilityLabel && decorative) {
|
44 |
|
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 _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 |