UNPKG

3.46 kBJavaScriptView Raw
1'use strict';
2
3exports.__esModule = true;
4
5var _extends2 = require('babel-runtime/helpers/extends');
6
7var _extends3 = _interopRequireDefault(_extends2);
8
9var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');
10
11var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);
12
13exports.default = createFromIconfontCN;
14
15var _react = require('react');
16
17var _react2 = _interopRequireDefault(_react);
18
19var _classnames = require('classnames');
20
21var _classnames2 = _interopRequireDefault(_classnames);
22
23var _configProvider = require('../config-provider');
24
25var _configProvider2 = _interopRequireDefault(_configProvider);
26
27var _index = require('./index');
28
29var _index2 = _interopRequireDefault(_index);
30
31function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
32
33var customCache = new Set();
34
35/** Icon.createFromIconfontCN
36 * @description 通过自定义 iconfont源来使用使用svg格式的图片
37 * @order 1
38 */
39function createFromIconfontCN() {
40 var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
41 var scriptUrl = options.scriptUrl,
42 _options$extraCommonP = options.extraCommonProps,
43 extraCommonProps = _options$extraCommonP === undefined ? {} : _options$extraCommonP;
44
45 var hasExist = customCache.has(scriptUrl);
46
47 if (document.querySelector('script[data-namespace="' + scriptUrl + '"]')) {
48 hasExist = true;
49 }
50
51 /**
52 * DOM API required.
53 * Make sure in browser environment.
54 * The Custom Icon will create a <script/>
55 * that loads SVG symbols and insert the SVG Element into the document body.
56 */
57 if (typeof document !== 'undefined' && typeof window !== 'undefined' && typeof document.createElement === 'function' && typeof scriptUrl === 'string' && scriptUrl.length && !hasExist) {
58 var script = document.createElement('script');
59 script.setAttribute('src', scriptUrl);
60 script.setAttribute('data-namespace', scriptUrl);
61 customCache.add(scriptUrl);
62 document.body.appendChild(script);
63 }
64
65 var Iconfont = function Iconfont(props) {
66 var _cx;
67
68 var type = props.type,
69 size = props.size,
70 children = props.children,
71 className = props.className,
72 _props$prefix = props.prefix,
73 prefix = _props$prefix === undefined ? 'next-' : _props$prefix,
74 others = (0, _objectWithoutProperties3.default)(props, ['type', 'size', 'children', 'className', 'prefix']);
75
76 // component > children > type
77
78 var content = null;
79 if (props.type) {
80 content = _react2.default.createElement('use', { xlinkHref: '#' + type });
81 }
82 if (children) {
83 content = children;
84 }
85
86 var classes = (0, _classnames2.default)((_cx = {}, _cx[prefix + 'icon-remote'] = true, _cx), className);
87
88 return _react2.default.createElement(
89 _index2.default,
90 { size: size },
91 _react2.default.createElement(
92 'svg',
93 (0, _extends3.default)({
94 className: classes,
95 focusable: false
96 }, others, extraCommonProps),
97 content
98 )
99 );
100 };
101
102 Iconfont.displayName = 'Iconfont';
103
104 return _configProvider2.default.config(Iconfont);
105}
106module.exports = exports['default'];
\No newline at end of file