ngx-tinymce
Version:
Angular for tinymce
80 lines • 8.47 kB
JavaScript
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