doly-icons
Version:
React icon component based on Bootstrap Icons
30 lines (29 loc) • 1.72 kB
JavaScript
import { __assign, __rest } from "tslib";
import React, { useContext } from 'react';
import classnames from 'classnames';
import IconContext from './IconContext';
import { useInsertStyle } from './dynamicStyle';
var prefixClass = 'doly-icon';
var classes = {
spin: "".concat(prefixClass, "-spin"),
spinReverse: "".concat(prefixClass, "-spin-reverse")
};
var defaultSvgProps = {
'aria-hidden': true,
focusable: false
};
var IconBase = function (_a) {
var _b;
var spin = _a.spin, spinReverse = _a.spinReverse, className = _a.className, style = _a.style, svgProps = _a.svgProps, renderChild = _a.renderChild, restProps = __rest(_a, ["spin", "spinReverse", "className", "style", "svgProps", "renderChild"]);
var _c = useContext(IconContext), ref = _c.ref, csp = _c.csp, ctxSpin = _c.spin, ctxSpinReverse = _c.spinReverse, ctxClassName = _c.className, ctxStyle = _c.style, ctxSvgProps = _c.svgProps, ctxRestProps = __rest(_c, ["ref", "csp", "spin", "spinReverse", "className", "style", "svgProps"]);
var realSpin = typeof spin !== 'undefined' ? spin : ctxSpin;
var realSpinReverse = typeof spinReverse !== 'undefined' ? spinReverse : ctxSpinReverse;
useInsertStyle(csp);
var mergeProps = __assign(__assign(__assign({}, defaultSvgProps), ctxSvgProps), svgProps);
return (React.createElement("span", __assign({ className: classnames(prefixClass, (_b = {},
_b[classes.spin] = realSpin,
_b[classes.spinReverse] = realSpinReverse,
_b), ctxClassName, className), role: "img", style: __assign(__assign({}, ctxStyle), style) }, ctxRestProps, restProps), renderChild(mergeProps)));
};
IconBase.displayName = 'IconBase';
export default IconBase;