UNPKG

framo

Version:

Glorious media processing right in your browser with Typescript support

63 lines 2.27 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ScriptService = exports.LoadStatus = void 0; const scripts_1 = require("../stores/scripts"); var LoadStatus; (function (LoadStatus) { LoadStatus["AlreadyLoaded"] = "Already Loaded"; LoadStatus["Loaded"] = "Loaded"; })(LoadStatus = exports.LoadStatus || (exports.LoadStatus = {})); class ScriptService { constructor() { this.scripts = {}; scripts_1.ScriptStore.forEach((script) => { this.scripts[script.name] = { loaded: false, src: script.src, }; }); } load(...scripts) { const promises = []; scripts.forEach((script) => promises.push(this.loadScript(script))); return Promise.all(promises); } loadScript(name) { return new Promise((resolve) => { if (this.scripts[name].loaded) { const response = { script: name, loaded: true, status: LoadStatus.AlreadyLoaded, }; resolve(response); } else { const script = document.createElement("script"); script.type = "text/javascript"; script.src = this.scripts[name].src; script.onload = () => { this.scripts[name].loaded = true; const response = { script: name, loaded: true, status: LoadStatus.Loaded, }; resolve(response); }; script.onerror = (error) => { console.error(error); const response = { script: name, loaded: false, status: LoadStatus.Loaded, }; resolve(response); }; document.getElementsByTagName("head")[0].appendChild(script); } }); } } exports.ScriptService = ScriptService; //# sourceMappingURL=script-loader.service.js.map