// Load CSS file async export const loadAsyncCss = (href: string | Array, id, cb: () => void = null) => { function createElement(d, s, href) { var link = d.createElement(s); link.href = href; link.rel = 'stylesheet'; return link; } (function (d, id, href, r) { var fjs = d.getElementsByTagName('link')[0]; var promises: Array> = []; const ID_CSS = id + '-css'; if (d.getElementById(id) || d.getElementById(ID_CSS)) { if (typeof r == 'function') { r(); } return; } if (typeof href == 'string') { href = [href]; } href.forEach((href_str, i) => { var link = createElement(d, 'link', href_str); if (i == href.length - 1) { link.id = ID_CSS; } fjs.parentNode.insertBefore(link, fjs); var promise = new Promise((resolve, reject) => { link.onload = function () { resolve(); } }); promises.push(promise); }); if (typeof r == 'function') { Promise.all(promises).then(() => r()); } }(document, id, href, cb)); }