UNPKG

ngx-tinymce

Version:
80 lines 8.47 kB
import { Injectable, Inject } from '@angular/core'; import { DOCUMENT } from '@angular/common'; import { Subject } from 'rxjs'; export class ScriptService { constructor(doc) { this.doc = doc; this.loaded = false; this.list = {}; this.emitter = new Subject(); } getChangeEmitter() { return this.emitter; } load(path) { if (this.loaded) { return this; } this.loaded = true; const promises = []; [path].forEach(script => promises.push(this.loadScript(script))); Promise.all(promises).then(res => { this.emitter.next(true); }); return this; } loadScript(path) { return new Promise((resolve, reject) => { if (this.list[path] === true) { resolve({ path: path, loaded: true, status: 'Loaded', }); return; } this.list[path] = true; const node = this.doc.createElement('script'); node.type = 'text/javascript'; node.src = path; node.charset = 'utf-8'; if (node.readyState) { // IE node.onreadystatechange = () => { if (node.readyState === 'loaded' || node.readyState === 'complete') { node.onreadystatechange = null; resolve({ path: path, loaded: true, status: 'Loaded', }); } }; } else { node.onload = () => { resolve({ path: path, loaded: true, status: 'Loaded', }); }; } node.onerror = (error) => resolve({ path: path, loaded: false, status: 'Loaded', }); this.doc.getElementsByTagName('head')[0].appendChild(node); }); } } ScriptService.decorators = [ { type: Injectable } ]; /** @nocollapse */ ScriptService.ctorParameters = () => [ { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] } ]; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlueW1jZS5zY3JpcHQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC10aW55bWNlLyIsInNvdXJjZXMiOlsic3JjL3RpbnltY2Uuc2NyaXB0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHL0IsTUFBTSxPQUFPLGFBQWE7SUFLeEIsWUFBc0MsR0FBUTtRQUFSLFFBQUcsR0FBSCxHQUFHLENBQUs7UUFKdEMsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUNmLFNBQUksR0FBUSxFQUFFLENBQUM7UUFDZixZQUFPLEdBQXFCLElBQUksT0FBTyxFQUFXLENBQUM7SUFFVixDQUFDO0lBRWxELGdCQUFnQjtRQUNkLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBSSxDQUFDLElBQVk7UUFDZixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDZixPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFFbkIsTUFBTSxRQUFRLEdBQW1CLEVBQUUsQ0FBQztRQUVwQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFakUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDL0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxVQUFVLENBQUMsSUFBWTtRQUNyQixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3JDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUU7Z0JBQzVCLE9BQU8sQ0FBTTtvQkFDWCxJQUFJLEVBQUUsSUFBSTtvQkFDVixNQUFNLEVBQUUsSUFBSTtvQkFDWixNQUFNLEVBQUUsUUFBUTtpQkFDakIsQ0FBQyxDQUFDO2dCQUNILE9BQU87YUFDUjtZQUVELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBRXZCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzlDLElBQUksQ0FBQyxJQUFJLEdBQUcsaUJBQWlCLENBQUM7WUFDOUIsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUM7WUFDaEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7WUFDdkIsSUFBVSxJQUFLLENBQUMsVUFBVSxFQUFFO2dCQUMxQixLQUFLO2dCQUNDLElBQUssQ0FBQyxrQkFBa0IsR0FBRyxHQUFHLEVBQUU7b0JBQ3BDLElBQ1EsSUFBSyxDQUFDLFVBQVUsS0FBSyxRQUFRO3dCQUM3QixJQUFLLENBQUMsVUFBVSxLQUFLLFVBQVUsRUFDckM7d0JBQ00sSUFBSyxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQzt3QkFDdEMsT0FBTyxDQUFNOzRCQUNYLElBQUksRUFBRSxJQUFJOzRCQUNWLE1BQU0sRUFBRSxJQUFJOzRCQUNaLE1BQU0sRUFBRSxRQUFRO3lCQUNqQixDQUFDLENBQUM7cUJBQ0o7Z0JBQ0gsQ0FBQyxDQUFDO2FBQ0g7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUU7b0JBQ2pCLE9BQU8sQ0FBTTt3QkFDWCxJQUFJLEVBQUUsSUFBSTt3QkFDVixNQUFNLEVBQUUsSUFBSTt3QkFDWixNQUFNLEVBQUUsUUFBUTtxQkFDakIsQ0FBQyxDQUFDO2dCQUNMLENBQUMsQ0FBQzthQUNIO1lBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLEtBQVUsRUFBRSxFQUFFLENBQzVCLE9BQU8sQ0FBTTtnQkFDWCxJQUFJLEVBQUUsSUFBSTtnQkFDVixNQUFNLEVBQUUsS0FBSztnQkFDYixNQUFNLEVBQUUsUUFBUTthQUNqQixDQUFDLENBQUM7WUFDTCxJQUFJLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OztZQS9FRixVQUFVOzs7OzRDQU1JLE1BQU0sU0FBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgU2NyaXB0U2VydmljZSB7XHJcbiAgcHJpdmF0ZSBsb2FkZWQgPSBmYWxzZTtcclxuICBwcml2YXRlIGxpc3Q6IGFueSA9IHt9O1xyXG4gIHByaXZhdGUgZW1pdHRlcjogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jOiBhbnkpIHt9XHJcblxyXG4gIGdldENoYW5nZUVtaXR0ZXIoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5lbWl0dGVyO1xyXG4gIH1cclxuXHJcbiAgbG9hZChwYXRoOiBzdHJpbmcpIHtcclxuICAgIGlmICh0aGlzLmxvYWRlZCkge1xyXG4gICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmxvYWRlZCA9IHRydWU7XHJcblxyXG4gICAgY29uc3QgcHJvbWlzZXM6IFByb21pc2U8YW55PltdID0gW107XHJcblxyXG4gICAgW3BhdGhdLmZvckVhY2goc2NyaXB0ID0+IHByb21pc2VzLnB1c2godGhpcy5sb2FkU2NyaXB0KHNjcmlwdCkpKTtcclxuXHJcbiAgICBQcm9taXNlLmFsbChwcm9taXNlcykudGhlbihyZXMgPT4ge1xyXG4gICAgICB0aGlzLmVtaXR0ZXIubmV4dCh0cnVlKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgbG9hZFNjcmlwdChwYXRoOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgaWYgKHRoaXMubGlzdFtwYXRoXSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgIHJlc29sdmUoPGFueT57XHJcbiAgICAgICAgICBwYXRoOiBwYXRoLFxyXG4gICAgICAgICAgbG9hZGVkOiB0cnVlLFxyXG4gICAgICAgICAgc3RhdHVzOiAnTG9hZGVkJyxcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMubGlzdFtwYXRoXSA9IHRydWU7XHJcblxyXG4gICAgICBjb25zdCBub2RlID0gdGhpcy5kb2MuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XHJcbiAgICAgIG5vZGUudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnO1xyXG4gICAgICBub2RlLnNyYyA9IHBhdGg7XHJcbiAgICAgIG5vZGUuY2hhcnNldCA9ICd1dGYtOCc7XHJcbiAgICAgIGlmICgoPGFueT5ub2RlKS5yZWFkeVN0YXRlKSB7XHJcbiAgICAgICAgLy8gSUVcclxuICAgICAgICAoPGFueT5ub2RlKS5vbnJlYWR5c3RhdGVjaGFuZ2UgPSAoKSA9PiB7XHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICg8YW55Pm5vZGUpLnJlYWR5U3RhdGUgPT09ICdsb2FkZWQnIHx8XHJcbiAgICAgICAgICAgICg8YW55Pm5vZGUpLnJlYWR5U3RhdGUgPT09ICdjb21wbGV0ZSdcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAoPGFueT5ub2RlKS5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBudWxsO1xyXG4gICAgICAgICAgICByZXNvbHZlKDxhbnk+e1xyXG4gICAgICAgICAgICAgIHBhdGg6IHBhdGgsXHJcbiAgICAgICAgICAgICAgbG9hZGVkOiB0cnVlLFxyXG4gICAgICAgICAgICAgIHN0YXR1czogJ0xvYWRlZCcsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbm9kZS5vbmxvYWQgPSAoKSA9PiB7XHJcbiAgICAgICAgICByZXNvbHZlKDxhbnk+e1xyXG4gICAgICAgICAgICBwYXRoOiBwYXRoLFxyXG4gICAgICAgICAgICBsb2FkZWQ6IHRydWUsXHJcbiAgICAgICAgICAgIHN0YXR1czogJ0xvYWRlZCcsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICAgIG5vZGUub25lcnJvciA9IChlcnJvcjogYW55KSA9PlxyXG4gICAgICAgIHJlc29sdmUoPGFueT57XHJcbiAgICAgICAgICBwYXRoOiBwYXRoLFxyXG4gICAgICAgICAgbG9hZGVkOiBmYWxzZSxcclxuICAgICAgICAgIHN0YXR1czogJ0xvYWRlZCcsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIHRoaXMuZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0uYXBwZW5kQ2hpbGQobm9kZSk7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIl19