UNPKG

@wordpress/components

Version:
68 lines (56 loc) 1.36 kB
import _extends from "@babel/runtime/helpers/esm/extends"; /** * WordPress dependencies */ import { cloneElement, createElement, Component, isValidElement } from '@wordpress/element'; import { SVG } from '@wordpress/primitives'; /** * Internal dependencies */ import Dashicon from '../dashicon'; function Icon({ icon = null, size, ...additionalProps }) { if ('string' === typeof icon) { return createElement(Dashicon, _extends({ icon: icon }, additionalProps)); } if (icon && Dashicon === icon.type) { return cloneElement(icon, { ...additionalProps }); } // Icons should be 24x24 by default. const iconSize = size || 24; if ('function' === typeof icon) { if (icon.prototype instanceof Component) { return createElement(icon, { size: iconSize, ...additionalProps }); } return icon({ size: iconSize, ...additionalProps }); } if (icon && (icon.type === 'svg' || icon.type === SVG)) { const appliedProps = { width: iconSize, height: iconSize, ...icon.props, ...additionalProps }; return createElement(SVG, appliedProps); } if (isValidElement(icon)) { return cloneElement(icon, { size: iconSize, ...additionalProps }); } return icon; } export default Icon; //# sourceMappingURL=index.js.map