icon = (name, options) => {
const size = options?.size || "1.30em";
const className = options?.className || "icon";
const source = options?.source || Sources.Iconoir;
const style = Object.assign({}, source?.style, options?.style);
const container = options?.container || Icons;
const node = Object.entries({ width: size, height: size }).reduce(
(r, [k, v]) => {
r.setAttribute(k, v);
return r;
},
document.createElementNS("http://www.w3.org/2000/svg", "svg")
);
loadIcon(name, container, source).then((symbol) => {
["viewBox"].forEach((_) => {
const icon = symbol.firstChild;
if (icon && icon.getAttribute) {
node.setAttribute(_, icon.getAttribute(_));
} else {
console.error(`Could not load icon "${name}", got:`, symbol);
}
});
});
const use = document.createElementNS("http://www.w3.org/2000/svg", "use");
use.classList.add(className);
Object.assign(node.style, style);
use.setAttribute("href", `#icon-${name}-${sourceName(source)}`);
node.appendChild(use);
return node;
}