@orca-fe/x-map
Version:
64 lines (63 loc) • 1.85 kB
JavaScript
;
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;