22 lines
619 B
JavaScript
22 lines
619 B
JavaScript
|
|
(function () {
|
||
|
|
'use strict';
|
||
|
|
|
||
|
|
const root = window.PixelIslandModules ||= {};
|
||
|
|
const pending = new Map();
|
||
|
|
|
||
|
|
function loadScript(src) {
|
||
|
|
if (pending.has(src)) return pending.get(src);
|
||
|
|
const promise = new Promise((resolve, reject) => {
|
||
|
|
const script = document.createElement('script');
|
||
|
|
script.src = src;
|
||
|
|
script.defer = true;
|
||
|
|
script.onload = () => resolve(script);
|
||
|
|
script.onerror = () => reject(new Error(`Could not load ${src}`));
|
||
|
|
document.head.appendChild(script);
|
||
|
|
});
|
||
|
|
pending.set(src, promise);
|
||
|
|
return promise;
|
||
|
|
}
|
||
|
|
|
||
|
|
root.ModuleLoader = { loadScript };
|
||
|
|
})();
|