solid-icons
Version:
Modern solution for use icons on SolidJS
38 lines (35 loc) • 1.05 kB
JavaScript
import { getNextElement, spread, mergeProps, memo, runHydrationEvents, template } from 'solid-js/web';
var _tmpl$ = /*#__PURE__*/template(`<svg>`);
const CustomIcon = props => {
return IconTemplate(props.src, props);
};
function IconTemplate(iconSrc, props) {
return (() => {
var _el$ = getNextElement(_tmpl$);
spread(_el$, mergeProps(() => iconSrc.a, props, {
get color() {
return props.color || "currentColor";
},
get height() {
return props.size || "1em";
},
get width() {
return props.size || "1em";
},
"xmlns": "http://www.w3.org/2000/svg",
get style() {
return {
...(typeof props.style === "object" ? props.style : {}),
overflow: "visible"
};
},
get innerHTML() {
return memo(() => !!props.title)() ? `${iconSrc.c}<title>${props.title}</title>` : iconSrc.c;
},
"src": undefined
}), true, false);
runHydrationEvents();
return _el$;
})();
}
export { CustomIcon, IconTemplate };