UNPKG

ngx-fastcomments

Version:

This is an Angular library for FastComments, a live embedded commenting library.

111 lines 13.4 kB
import { ChangeDetectionStrategy, Component, Input, ViewChild } from '@angular/core'; import * as i0 from "@angular/core"; var LoadStatus; (function (LoadStatus) { LoadStatus[LoadStatus["Started"] = 0] = "Started"; LoadStatus[LoadStatus["ScriptLoaded"] = 1] = "ScriptLoaded"; LoadStatus[LoadStatus["Done"] = 2] = "Done"; LoadStatus[LoadStatus["Error"] = 3] = "Error"; })(LoadStatus || (LoadStatus = {})); export class FastCommentsComponent { constructor() { this.state = { status: LoadStatus.Started }; } ngOnInit() { if (!this.config) { throw new Error('Configuration is required!Like: <lib-fastcomments [config]="myConfigObject"></lib-fastcomments>' + ' or <lib-fastcomments [config]="{ tenantId: \'demo\' }"></lib-fastcomments>'); } if (this.state.status === LoadStatus.ScriptLoaded) { return this.reset(); } else { return this.loadInstance(); } } ngOnChanges() { if (this.state.status === LoadStatus.ScriptLoaded) { return this.reset(); } } async insertScript(src, id, parentElement) { return new Promise((resolve, reject) => { const script = window.document.createElement('script'); script.async = true; script.src = src; script.id = id; parentElement.appendChild(script); script.addEventListener('load', resolve); script.addEventListener('error', reject); }); } async loadInstance() { return new Promise(async (resolve, reject) => { switch (this.state.status) { case LoadStatus.Started: try { // @ts-ignore if (window && !window.FastCommentsUI) { const src = this.config.region === 'eu' ? 'https://cdn-eu.fastcomments.com/js/embed-v2.min.js' : 'https://cdn.fastcomments.com/js/embed-v2.min.js'; await this.insertScript(src, 'fastcomments-widget-script', window.document.body); } this.state.status = LoadStatus.ScriptLoaded; await this.loadInstance(); resolve(); } catch (e) { console.error('FastComments Script Load Failure', e); this.state.status = LoadStatus.Error; reject(); } break; case LoadStatus.ScriptLoaded: this.instantiateWidget(); this.state.status = LoadStatus.Done; resolve(); break; default: resolve(); break; } }); } reset() { if (!this.config) { return; } if (this.lastWidgetInstance) { this.lastWidgetInstance.update(this.config); } else { this.instantiateWidget(); } } instantiateWidget() { const element = this.fastCommentsElement.nativeElement; if (element) { // @ts-ignore this.lastWidgetInstance = window.FastCommentsUI(element, this.config); } } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FastCommentsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FastCommentsComponent, selector: "lib-fastcomments", inputs: { config: "config" }, viewQueries: [{ propertyName: "fastCommentsElement", first: true, predicate: ["fastCommentsElement"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: ` <div #fastCommentsElement></div> `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FastCommentsComponent, decorators: [{ type: Component, args: [{ selector: 'lib-fastcomments', template: ` <div #fastCommentsElement></div> `, changeDetection: ChangeDetectionStrategy.OnPush }] }], ctorParameters: () => [], propDecorators: { config: [{ type: Input }], fastCommentsElement: [{ type: ViewChild, args: ['fastCommentsElement', { static: true, }] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFzdC1jb21tZW50cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9mYXN0Y29tbWVudHMtYW5ndWxhci9zcmMvbGliL2Zhc3QtY29tbWVudHMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFxQixTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7O0FBR2xILElBQUssVUFLSjtBQUxELFdBQUssVUFBVTtJQUNiLGlEQUFPLENBQUE7SUFDUCwyREFBWSxDQUFBO0lBQ1osMkNBQUksQ0FBQTtJQUNKLDZDQUFLLENBQUE7QUFDUCxDQUFDLEVBTEksVUFBVSxLQUFWLFVBQVUsUUFLZDtBQW1CRCxNQUFNLE9BQU8scUJBQXFCO0lBVWhDO1FBQ0UsSUFBSSxDQUFDLEtBQUssR0FBRztZQUNYLE1BQU0sRUFBRSxVQUFVLENBQUMsT0FBTztTQUMzQixDQUFDO0lBQ0osQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsaUdBQWlHO2dCQUMvRyw2RUFBNkUsQ0FBQyxDQUFDO1FBQ25GLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNsRCxPQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN0QixDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzdCLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ2xELE9BQU8sSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3RC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QUksQ0FBQyxrQkFBa0IsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEUsQ0FBQztJQUNILENBQUM7K0dBL0ZVLHFCQUFxQjttR0FBckIscUJBQXFCLHFQQU50Qjs7R0FFVDs7NEZBSVUscUJBQXFCO2tCQVJqQyxTQUFTOytCQUNFLGtCQUFrQixZQUNsQjs7R0FFVCxtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTTt3REFLdEMsTUFBTTtzQkFBZCxLQUFLO2dCQUlOLG1CQUFtQjtzQkFIbEIsU0FBUzt1QkFBQyxxQkFBcUIsRUFBRTt3QkFDaEMsTUFBTSxFQUFFLElBQUk7cUJBQ2IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RmFzdENvbW1lbnRzQ29tbWVudFdpZGdldENvbmZpZ30gZnJvbSAnZmFzdGNvbW1lbnRzLXR5cGVzY3JpcHQnO1xuXG5lbnVtIExvYWRTdGF0dXMge1xuICBTdGFydGVkLFxuICBTY3JpcHRMb2FkZWQsXG4gIERvbmUsXG4gIEVycm9yXG59XG5cbmludGVyZmFjZSBGYXN0Q29tbWVudHNTdGF0ZSB7XG4gIHN0YXR1czogTG9hZFN0YXR1cztcbn1cblxuaW50ZXJmYWNlIFdpZGdldEluc3RhbmNlIHtcbiAgZGVzdHJveTogKCkgPT4gdm9pZDtcbiAgdXBkYXRlOiAoRmFzdENvbW1lbnRzQ29tbWVudFdpZGdldENvbmZpZykgPT4gdm9pZDtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWZhc3Rjb21tZW50cycsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiAjZmFzdENvbW1lbnRzRWxlbWVudD48L2Rpdj5cbiAgYCxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0eWxlczogW11cbn0pXG5leHBvcnQgY2xhc3MgRmFzdENvbW1lbnRzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuXG4gIEBJbnB1dCgpIGNvbmZpZzogRmFzdENvbW1lbnRzQ29tbWVudFdpZGdldENvbmZpZztcbiAgQFZpZXdDaGlsZCgnZmFzdENvbW1lbnRzRWxlbWVudCcsIHtcbiAgICBzdGF0aWM6IHRydWUsXG4gIH0pXG4gIGZhc3RDb21tZW50c0VsZW1lbnQ6IEVsZW1lbnRSZWY7XG4gIGxhc3RXaWRnZXRJbnN0YW5jZTogV2lkZ2V0SW5zdGFuY2UgfCBudWxsO1xuICBzdGF0ZTogRmFzdENvbW1lbnRzU3RhdGU7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIHN0YXR1czogTG9hZFN0YXR1cy5TdGFydGVkXG4gICAgfTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICghdGhpcy5jb25maWcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ29uZmlndXJhdGlvbiBpcyByZXF1aXJlZCFMaWtlOiA8bGliLWZhc3Rjb21tZW50cyBbY29uZmlnXT1cIm15Q29uZmlnT2JqZWN0XCI+PC9saWItZmFzdGNvbW1lbnRzPicgK1xuICAgICAgICAnIG9yIDxsaWItZmFzdGNvbW1lbnRzIFtjb25maWddPVwieyB0ZW5hbnRJZDogXFwnZGVtb1xcJyB9XCI+PC9saWItZmFzdGNvbW1lbnRzPicpO1xuICAgIH1cbiAgICBpZiAodGhpcy5zdGF0ZS5zdGF0dXMgPT09IExvYWRTdGF0dXMuU2NyaXB0TG9hZGVkKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXNldCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5sb2FkSW5zdGFuY2UoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpIHtcbiAgICBpZiAodGhpcy5zdGF0ZS5zdGF0dXMgPT09IExvYWRTdGF0dXMuU2NyaXB0TG9hZGVkKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXNldCgpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGluc2VydFNjcmlwdChzcmM6IHN0cmluZywgaWQ6IHN0cmluZywgcGFyZW50RWxlbWVudDogRWxlbWVudCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCBzY3JpcHQgPSB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XG4gICAgICBzY3JpcHQuYXN5bmMgPSB0cnVlO1xuICAgICAgc2NyaXB0LnNyYyA9IHNyYztcbiAgICAgIHNjcmlwdC5pZCA9IGlkO1xuICAgICAgcGFyZW50RWxlbWVudC5hcHBlbmRDaGlsZChzY3JpcHQpO1xuXG4gICAgICBzY3JpcHQuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIHJlc29sdmUpO1xuICAgICAgc2NyaXB0LmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgcmVqZWN0KTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGxvYWRJbnN0YW5jZSgpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgc3dpdGNoICh0aGlzLnN0YXRlLnN0YXR1cykge1xuICAgICAgICBjYXNlIExvYWRTdGF0dXMuU3RhcnRlZDpcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgaWYgKHdpbmRvdyAmJiAhd2luZG93LkZhc3RDb21tZW50c1VJKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHNyYyA9IHRoaXMuY29uZmlnLnJlZ2lvbiA9PT0gJ2V1JyA/ICdodHRwczovL2Nkbi1ldS5mYXN0Y29tbWVudHMuY29tL2pzL2VtYmVkLXYyLm1pbi5qcycgOiAnaHR0cHM6Ly9jZG4uZmFzdGNvbW1lbnRzLmNvbS9qcy9lbWJlZC12Mi5taW4uanMnO1xuICAgICAgICAgICAgICBhd2FpdCB0aGlzLmluc2VydFNjcmlwdChzcmMsICdmYXN0Y29tbWVudHMtd2lkZ2V0LXNjcmlwdCcsIHdpbmRvdy5kb2N1bWVudC5ib2R5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc3RhdGUuc3RhdHVzID0gTG9hZFN0YXR1cy5TY3JpcHRMb2FkZWQ7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmxvYWRJbnN0YW5jZSgpO1xuICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Zhc3RDb21tZW50cyBTY3JpcHQgTG9hZCBGYWlsdXJlJywgZSk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlLnN0YXR1cyA9IExvYWRTdGF0dXMuRXJyb3I7XG4gICAgICAgICAgICByZWplY3QoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9hZFN0YXR1cy5TY3JpcHRMb2FkZWQ6XG4gICAgICAgICAgdGhpcy5pbnN0YW50aWF0ZVdpZGdldCgpO1xuICAgICAgICAgIHRoaXMuc3RhdGUuc3RhdHVzID0gTG9hZFN0YXR1cy5Eb25lO1xuICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByZXNldCgpIHtcbiAgICBpZiAoIXRoaXMuY29uZmlnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLmxhc3RXaWRnZXRJbnN0YW5jZSkge1xuICAgICAgdGhpcy5sYXN0V2lkZ2V0SW5zdGFuY2UudXBkYXRlKHRoaXMuY29uZmlnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbnN0YW50aWF0ZVdpZGdldCgpO1xuICAgIH1cbiAgfVxuXG4gIGluc3RhbnRpYXRlV2lkZ2V0KCkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmZhc3RDb21tZW50c0VsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICBpZiAoZWxlbWVudCkge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGhpcy5sYXN0V2lkZ2V0SW5zdGFuY2UgPSB3aW5kb3cuRmFzdENvbW1lbnRzVUkoZWxlbWVudCwgdGhpcy5jb25maWcpO1xuICAgIH1cbiAgfVxuXG59XG4iXX0=