shineout
Version:
Shein 前端组件库
60 lines (54 loc) • 1.77 kB
JavaScript
import _extends from "@babel/runtime/helpers/extends";
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/objectWithoutPropertiesLoose";
import _objectSpread from "@babel/runtime/helpers/objectSpread";
import React from 'react';
import classnames from 'classnames';
import { defaultProps } from '../utils/defaultProps';
import { iconClass } from './styles';
function Icon(props) {
if (props === void 0) {
props = _objectSpread({}, defaultProps, {
prefix: 'icon',
fontFamily: 'iconfont',
name: '',
type: 'default'
});
}
var _props = props,
children = _props.children,
prefix = _props.prefix,
type = _props.type,
name = _props.name,
fontFamily = _props.fontFamily,
fontSize = _props.fontSize,
ext = _props.ext,
otherProps = _objectWithoutPropertiesLoose(_props, ["children", "prefix", "type", "name", "fontFamily", "fontSize", "ext"]);
var className = classnames(iconClass('_', type), props.className, prefix + "-" + name);
var style = Object.assign({}, {
fontFamily: fontFamily,
fontSize: fontSize
}, props.style);
if (ext === 'js') {
return React.createElement("i", _extends({}, otherProps, {
className: className,
style: style
}), React.createElement("svg", {
className: iconClass('svg'),
"aria-hidden": "true"
}, React.createElement("use", {
xlinkHref: "#" + prefix + "-" + name
})));
}
return React.createElement("i", _extends({}, otherProps, {
className: className,
style: style
}), children);
}
Icon.defaultProps = _objectSpread({}, defaultProps, {
prefix: 'icon',
fontFamily: 'iconfont',
name: '',
type: 'default'
});
Icon.displayName = 'ShineoutIcon';
export default Icon;