UNPKG

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