ngx-fastcomments
Version:
This is an Angular library for FastComments, a live embedded commenting library.
111 lines • 13.4 kB
JavaScript
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=