UNPKG

@orca-fe/x-map

Version:
64 lines (63 loc) 1.85 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.loadCSS = void 0; const cache = new Map(); function loadScript(src, callback = (e) => { }) { let p = cache.get(src); if (!p) { p = new Promise((resolve, reject) => { const script = document.createElement('script'); script.src = src; script.onload = function (e) { resolve(e); }; script.onerror = function (event, source, lineno, colno, error) { cache.delete(src); reject(error); }; document.body.appendChild(script); }); cache.set(src, p); } return p .then(() => { callback(); }) .catch((err) => { callback(err); }); } exports.default = loadScript; const cssCache = new Map(); function loadCSS(src, callback = (e) => { }) { if (cssCache.has(src)) { callback(); return () => { cssCache.delete(src); const cssElement = cssCache.get(src); if (cssElement && document.contains(cssElement)) { document.removeChild(cssElement); } }; } const link = document.createElement('link'); link.href = src; link.type = 'text/css'; link.rel = 'stylesheet'; cssCache.set(src, link); link.onload = function (e) { callback(); }; link.onerror = function (event, source, lineno, colno, error) { cssCache.delete(src); callback(error); }; document.head.appendChild(link); return () => { cssCache.delete(src); if (document.head.contains(link)) { document.head.removeChild(link); } }; } exports.loadCSS = loadCSS;