ngx-snotifire 16.0.0 → 17.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -15,13 +15,13 @@ export class ButtonsComponent {
15
15
  remove() {
16
16
  this.service.remove(this.toast.id);
17
17
  }
18
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ButtonsComponent, deps: [{ token: i1.SnotifireService }], target: i0.ɵɵFactoryTarget.Component }); }
19
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ButtonsComponent, selector: "notifire-button", inputs: { toast: "toast" }, ngImport: i0, template: "<div class=\"notifire-toast__buttons\">\n <ng-container *ngIf=\"toast.config\">\n <button\n type=\"button\"\n *ngFor=\"let button of toast.config.buttons\"\n [ngClass]=\"{ 'notifire-toast__buttons--bold': button.bold }\"\n (click)=\"button.action ? button.action(toast) : remove()\"\n >\n {{ button.text }}\n </button>\n </ng-container>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
18
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ButtonsComponent, deps: [{ token: i1.SnotifireService }], target: i0.ɵɵFactoryTarget.Component }); }
19
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.3", type: ButtonsComponent, selector: "notifire-button", inputs: { toast: "toast" }, ngImport: i0, template: "<div class=\"notifire-toast__buttons\">\n <ng-container *ngIf=\"toast.config\">\n <button\n type=\"button\"\n *ngFor=\"let button of toast.config.buttons\"\n [ngClass]=\"{ 'notifire-toast__buttons--bold': button.bold }\"\n (click)=\"button.action ? button.action(toast) : remove()\"\n >\n {{ button.text }}\n </button>\n </ng-container>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
20
20
  }
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ButtonsComponent, decorators: [{
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ButtonsComponent, decorators: [{
22
22
  type: Component,
23
23
  args: [{ selector: 'notifire-button', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"notifire-toast__buttons\">\n <ng-container *ngIf=\"toast.config\">\n <button\n type=\"button\"\n *ngFor=\"let button of toast.config.buttons\"\n [ngClass]=\"{ 'notifire-toast__buttons--bold': button.bold }\"\n (click)=\"button.action ? button.action(toast) : remove()\"\n >\n {{ button.text }}\n </button>\n </ng-container>\n</div>\n" }]
24
- }], ctorParameters: function () { return [{ type: i1.SnotifireService }]; }, propDecorators: { toast: [{
24
+ }], ctorParameters: () => [{ type: i1.SnotifireService }], propDecorators: { toast: [{
25
25
  type: Input
26
26
  }] } });
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc25vdGlmaXJlL3NyYy9saWIvY29tcG9uZW50cy9idXR0b25zL2J1dHRvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNub3RpZmlyZS9zcmMvbGliL2NvbXBvbmVudHMvYnV0dG9ucy9idXR0b25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssRUFFTCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7Ozs7QUFVdkI7O0dBRUc7QUFDSCxNQUFNLE9BQU8sZ0JBQWdCO0lBTTNCLFlBQTZCLE9BQXlCO1FBQXpCLFlBQU8sR0FBUCxPQUFPLENBQWtCO0lBQUcsQ0FBQztJQUUxRDs7T0FFRztJQUNILE1BQU07UUFDSixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7K0dBYlUsZ0JBQWdCO21HQUFoQixnQkFBZ0IsbUZDbkI3Qiw4YUFZQTs7NEZET2EsZ0JBQWdCO2tCQVQ1QixTQUFTOytCQUNFLGlCQUFpQixtQkFFVix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJO3VHQVM1QixLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTbm90aWZpcmVUb2FzdE1vZGVsIH0gZnJvbSAnLi4vdG9hc3Qvbm90aWZpcmUtdG9hc3QubW9kZWwnO1xuaW1wb3J0IHsgU25vdGlmaXJlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbm90aWZpcmUtYnV0dG9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2J1dHRvbnMuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG4vKipcbiAqIEJ1dHRvbnMgY29tcG9uZW50XG4gKi9cbmV4cG9ydCBjbGFzcyBCdXR0b25zQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIEdldCBidXR0b25zIEFycmF5XG4gICAqL1xuICBASW5wdXQoKSB0b2FzdCE6IFNub3RpZmlyZVRvYXN0TW9kZWw7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBzZXJ2aWNlOiBTbm90aWZpcmVTZXJ2aWNlKSB7fVxuXG4gIC8qKlxuICAgKiByZW1vdmUgdG9hc3RcbiAgICovXG4gIHJlbW92ZSgpIHtcbiAgICB0aGlzLnNlcnZpY2UucmVtb3ZlKHRoaXMudG9hc3QuaWQpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibm90aWZpcmUtdG9hc3RfX2J1dHRvbnNcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG9hc3QuY29uZmlnXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGJ1dHRvbiBvZiB0b2FzdC5jb25maWcuYnV0dG9uc1wiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdub3RpZmlyZS10b2FzdF9fYnV0dG9ucy0tYm9sZCc6IGJ1dHRvbi5ib2xkIH1cIlxuICAgICAgICAgICAgKGNsaWNrKT1cImJ1dHRvbi5hY3Rpb24gPyBidXR0b24uYWN0aW9uKHRvYXN0KSA6IHJlbW92ZSgpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAge3sgYnV0dG9uLnRleHQgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbiJdfQ==
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc25vdGlmaXJlL3NyYy9saWIvY29tcG9uZW50cy9idXR0b25zL2J1dHRvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNub3RpZmlyZS9zcmMvbGliL2NvbXBvbmVudHMvYnV0dG9ucy9idXR0b25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssRUFFTCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7Ozs7QUFVdkI7O0dBRUc7QUFDSCxNQUFNLE9BQU8sZ0JBQWdCO0lBTTNCLFlBQTZCLE9BQXlCO1FBQXpCLFlBQU8sR0FBUCxPQUFPLENBQWtCO0lBQUcsQ0FBQztJQUUxRDs7T0FFRztJQUNILE1BQU07UUFDSixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7OEdBYlUsZ0JBQWdCO2tHQUFoQixnQkFBZ0IsbUZDbkI3Qiw4YUFZQTs7MkZET2EsZ0JBQWdCO2tCQVQ1QixTQUFTOytCQUNFLGlCQUFpQixtQkFFVix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJO3FGQVM1QixLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTbm90aWZpcmVUb2FzdE1vZGVsIH0gZnJvbSAnLi4vdG9hc3Qvbm90aWZpcmUtdG9hc3QubW9kZWwnO1xuaW1wb3J0IHsgU25vdGlmaXJlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbm90aWZpcmUtYnV0dG9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2J1dHRvbnMuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG4vKipcbiAqIEJ1dHRvbnMgY29tcG9uZW50XG4gKi9cbmV4cG9ydCBjbGFzcyBCdXR0b25zQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIEdldCBidXR0b25zIEFycmF5XG4gICAqL1xuICBASW5wdXQoKSB0b2FzdCE6IFNub3RpZmlyZVRvYXN0TW9kZWw7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBzZXJ2aWNlOiBTbm90aWZpcmVTZXJ2aWNlKSB7fVxuXG4gIC8qKlxuICAgKiByZW1vdmUgdG9hc3RcbiAgICovXG4gIHJlbW92ZSgpIHtcbiAgICB0aGlzLnNlcnZpY2UucmVtb3ZlKHRoaXMudG9hc3QuaWQpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibm90aWZpcmUtdG9hc3RfX2J1dHRvbnNcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG9hc3QuY29uZmlnXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGJ1dHRvbiBvZiB0b2FzdC5jb25maWcuYnV0dG9uc1wiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdub3RpZmlyZS10b2FzdF9fYnV0dG9ucy0tYm9sZCc6IGJ1dHRvbi5ib2xkIH1cIlxuICAgICAgICAgICAgKGNsaWNrKT1cImJ1dHRvbi5hY3Rpb24gPyBidXR0b24uYWN0aW9uKHRvYXN0KSA6IHJlbW92ZSgpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAge3sgYnV0dG9uLnRleHQgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbiJdfQ==
@@ -119,11 +119,11 @@ export class NgxSnotifireComponent {
119
119
  this.unsubscribe$.next();
120
120
  this.unsubscribe$.complete();
121
121
  }
122
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgxSnotifireComponent, deps: [{ token: i1.SnotifireService }], target: i0.ɵɵFactoryTarget.Component }); }
123
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NgxSnotifireComponent, selector: "ngx-snotifire", ngImport: i0, template: "<div\n class=\"snotifire-backdrop\"\n *ngIf=\"backdrop && backdrop >= 0\"\n [style.opacity]=\"backdrop\"\n></div>\n\n<div\n *ngFor=\"let position of notifications | keys\"\n class=\"snotify snotify-{{ position }}\"\n>\n <ngx-toast\n *ngFor=\"let notification of getNotificationArray(notifications, position) | slice: blockSizeA:blockSizeB\"\n [toast]=\"notification\"\n (stateChanged)=\"stateChanged($event)\"\n >\n </ngx-toast>\n\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.ToastComponent, selector: "ngx-toast", inputs: ["toast"], outputs: ["stateChanged"] }, { kind: "pipe", type: i2.SlicePipe, name: "slice" }, { kind: "pipe", type: i4.KeysPipe, name: "keys" }], encapsulation: i0.ViewEncapsulation.None }); }
122
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: NgxSnotifireComponent, deps: [{ token: i1.SnotifireService }], target: i0.ɵɵFactoryTarget.Component }); }
123
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.3", type: NgxSnotifireComponent, selector: "ngx-snotifire", ngImport: i0, template: "<div\n class=\"snotifire-backdrop\"\n *ngIf=\"backdrop && backdrop >= 0\"\n [style.opacity]=\"backdrop\"\n></div>\n\n<div\n *ngFor=\"let position of notifications | keys\"\n class=\"snotify snotify-{{ position }}\"\n>\n <ngx-toast\n *ngFor=\"let notification of getNotificationArray(notifications, position) | slice: blockSizeA:blockSizeB\"\n [toast]=\"notification\"\n (stateChanged)=\"stateChanged($event)\"\n >\n </ngx-toast>\n\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.ToastComponent, selector: "ngx-toast", inputs: ["toast"], outputs: ["stateChanged"] }, { kind: "pipe", type: i2.SlicePipe, name: "slice" }, { kind: "pipe", type: i4.KeysPipe, name: "keys" }], encapsulation: i0.ViewEncapsulation.None }); }
124
124
  }
125
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgxSnotifireComponent, decorators: [{
125
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: NgxSnotifireComponent, decorators: [{
126
126
  type: Component,
127
127
  args: [{ selector: 'ngx-snotifire', encapsulation: ViewEncapsulation.None, template: "<div\n class=\"snotifire-backdrop\"\n *ngIf=\"backdrop && backdrop >= 0\"\n [style.opacity]=\"backdrop\"\n></div>\n\n<div\n *ngFor=\"let position of notifications | keys\"\n class=\"snotify snotify-{{ position }}\"\n>\n <ngx-toast\n *ngFor=\"let notification of getNotificationArray(notifications, position) | slice: blockSizeA:blockSizeB\"\n [toast]=\"notification\"\n (stateChanged)=\"stateChanged($event)\"\n >\n </ngx-toast>\n\n</div>\n" }]
128
- }], ctorParameters: function () { return [{ type: i1.SnotifireService }]; } });
129
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXNub3RpZmlyZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc25vdGlmaXJlL3NyYy9saWIvY29tcG9uZW50cy9uZ3gtbm90aWZpcmUvbmd4LXNub3RpZmlyZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc25vdGlmaXJlL3NyYy9saWIvY29tcG9uZW50cy9uZ3gtbm90aWZpcmUvbmd4LXNub3RpZmlyZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUdULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFnQixTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHlCQUF5QixFQUFFLE1BQU0sY0FBYyxDQUFDOzs7Ozs7QUFVN0UsTUFBTSxPQUFPLHFCQUFxQjtJQW1DaEMsWUFBcUIsT0FBeUI7UUFBekIsWUFBTyxHQUFQLE9BQU8sQ0FBa0I7UUFsQzdCLGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQXlCcEQ7O1dBRUc7UUFDSCxhQUFRLEdBQXVCLENBQUMsQ0FBQyxDQUFDO1FBQ2xDOztXQUVHO1FBQ0gsaUJBQVksR0FBMEIsRUFBRSxDQUFDO0lBRVEsQ0FBQztJQUNsRCxlQUFlLEtBQVUsQ0FBQztJQUUxQixRQUFRO1FBQ04sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPO2FBQ2pCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ2xDLFNBQVMsQ0FBQyxDQUFDLE1BQTZCLEVBQUUsRUFBRTtZQUMzQyxJQUNFLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYTtnQkFDMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsTUFBTTtn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TSxLQUFLLENBQUMsRUFBRTtvQkFDbEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQztpQkFDcEI7Z0JBQ0QsTUFBTTtTQUNUO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDL0IsQ0FBQzsrR0FsS1UscUJBQXFCO21HQUFyQixxQkFBcUIscURDbEJsQyx1ZUFrQkE7OzRGREFhLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxlQUFlLGlCQUVWLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU25vdGlmaXJlRXZlbnRUeXBlLCBTbm90aWZpY2F0aW9uUG9zaXRpb25UeXBlIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IFNub3RpZmlyZU5vdGlmaWNhdGlvbnMgfSBmcm9tICcuLi8uLi9tb2RlbHMvc25vdGlmaXJlLW5vdGlmaWNhdGlvbnMuaW50ZXJmYWNlJztcbmltcG9ydCB7IFNub3RpZmlyZVRvYXN0TW9kZWwgfSBmcm9tICcuLi90b2FzdC9ub3RpZmlyZS10b2FzdC5tb2RlbCc7XG5pbXBvcnQgeyBTbm90aWZpcmVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ3gtc25vdGlmaXJlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL25neC1zbm90aWZpcmUuY29tcG9uZW50Lmh0bWwnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3hTbm90aWZpcmVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgdW5zdWJzY3JpYmUkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgLyoqXG4gICAqIFRvYXN0cyBhcnJheVxuICAgKi9cbiAgbm90aWZpY2F0aW9ucyE6IFNub3RpZmlyZU5vdGlmaWNhdGlvbnM7XG4gIC8qKlxuICAgKiBUb2FzdHMgZW1pdHRlclxuICAgKi9cbiAgZW1pdHRlciE6IFN1YnNjcmlwdGlvbjtcbiAgLyoqXG4gICAqIEhlbHBlciBmb3Igc2xpY2UgcGlwZSAobWF4T25TY3JlZW4pXG4gICAqL1xuICBkb2NrU2l6ZUEhOiBudW1iZXI7XG4gIC8qKlxuICAgKiBIZWxwZXIgZm9yIHNsaWNlIHBpcGUgKG1heE9uU2NyZWVuKVxuICAgKi9cbiAgZG9ja1NpemVCITogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogSGVscGVyIGZvciBzbGljZSBwaXBlIChtYXhBdFBvc2l0aW9uKVxuICAgKi9cbiAgYmxvY2tTaXplQSE6IG51bWJlcjtcbiAgLyoqXG4gICAqIEhlbHBlciBmb3Igc2xpY2UgcGlwZSAobWF4QXRQb3NpdGlvbilcbiAgICovXG4gIGJsb2NrU2l6ZUIhOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBCYWNrZHJvcCBPcGFjaXR5XG4gICAqL1xuICBiYWNrZHJvcDogbnVtYmVyIHwgdW5kZWZpbmVkID0gLTE7XG4gIC8qKlxuICAgKiBIb3cgbWFueSB0b2FzdHMgd2l0aCBiYWNrZHJvcCBpbiBjdXJyZW50IHF1ZXVlXG4gICAqL1xuICB3aXRoQmFja2Ryb3A6IFNub3RpZmlyZVRvYXN0TW9kZWxbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IHNlcnZpY2U6IFNub3RpZmlyZVNlcnZpY2UpIHt9XG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXJ2aWNlLmVtaXR0ZXJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpXG4gICAgICAuc3Vic2NyaWJlKCh0b2FzdHM6IFNub3RpZmlyZVRvYXN0TW9kZWxbXSkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgdGhpcy5zZXJ2aWNlLmRlZmF1bHRDb25maWcgJiZcbiAgICAgICAgICB0aGlzLnNlcnZpY2UuZGVmYXVsdENvbmZpZy5nbG9iYWwgJiZcbiAgICAgICAgICB0aGlzLnNlcnZpY2UuZGVmYXVsdENvbmZpZy5nbG9iYWwubmV3T25Ub3BcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5kb2NrU2l6ZUEgPSB0aGlzLnNlcnZpY2UuZGVmYXVsdENvbmZpZy5nbG9iYWwubWF4T25TY3JlZW5cbiAgICAgICAgICAgID8gLXRoaXMuc2VydmljZS5kZWZhdWx0Q29uZmlnLmdsb2JhbC5tYXhPblNjcmVlblxuICAgICAgICAgICAgOiA2O1xuICAgICAgICAgIHRoaXMuZG9ja1NpemVCID0gdW5kZWZpbmVkO1xuICAgICAgICAgIHRoaXMuYmxvY2tTaXplQSA9IHRoaXMuc2VydmljZS5kZWZhdWx0Q29uZmlnLmdsb2JhbC5tYXhBdFBvc2l0aW9uXG4gICAgICAgICAgICA/IC10aGlzLnNlcnZpY2UuZGVmYXVsdENvbmZpZy5nbG9iYWwubWF4QXRQb3NpdGlvblxuICAgICAgICAgICAgOiA0O1xuICAgICAgICAgIHRoaXMuYmxvY2tTaXplQiA9IHVuZGVmaW5lZDtcbiAgICAgICAgICB0aGlzLndpdGhCYWNrZHJvcCA9IHRvYXN0cy5maWx0ZXIoXG4gICAgICAgICAgICAodG9hc3QpID0+XG4gICAgICAgICAgICAgIHRvYXN0LmNvbmZpZyAmJlxuICAgICAgICAgICAgICB0b2FzdC5jb25maWcuYmFja2Ryb3AgJiZcbiAgICAgICAgICAgICAgdG9hc3QuY29uZmlnLmJhY2tkcm9wID49IDBcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZG9ja1NpemVBID0gMDtcbiAgICAgICAgICB0aGlzLmRvY2tTaXplQiA9XG4gICAgICAgICAgICB0aGlzLnNlcnZpY2UuZGVmYXVsdENvbmZpZy5nbG9iYWwgJiZcbiAgICAgICAgICAgIHRoaXMuc2VydmljZS5kZWZhdWx0Q29uZmlnLmdsb2JhbC5tYXhPblNjcmVlbjtcbiAgICAgICAgICB0aGlzLmJsb2NrU2l6ZUEgPSAwO1xuICAgICAgICAgIHRoaXMuYmxvY2tTaXplQiA9XG4gICAgICAgICAgICB0aGlzLnNlcnZpY2UuZGVmYXVsdENvbmZpZy5nbG9iYWwgJiZcbiAgICAgICAgICAgIHRoaXMuc2VydmljZS5kZWZhdWx0Q29uZmlnLmdsb2JhbC5tYXhBdFBvc2l0aW9uO1xuICAgICAgICAgIHRoaXMud2l0aEJhY2tkcm9wID0gdG9hc3RzXG4gICAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgICAodG9hc3QpID0+XG4gICAgICAgICAgICAgICAgdG9hc3QuY29uZmlnICYmXG4gICAgICAgICAgICAgICAgdG9hc3QuY29uZmlnLmJhY2tkcm9wICYmXG4gICAgICAgICAgICAgICAgdG9hc3QuY29uZmlnLmJhY2tkcm9wID49IDBcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5yZXZlcnNlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zID0gdGhpcy5zcGxpdFRvYXN0cyhcbiAgICAgICAgICB0b2FzdHMuc2xpY2UodGhpcy5kb2NrU2l6ZUEsIHRoaXMuZG9ja1NpemVCKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlZChTbm90aWZpcmVFdmVudFR5cGUuTU9VTlRFRCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGxpdCB0b2FzdHMgdG9hc3RzIGludG8gZGlmZmVyZW50IG9iamVjdHNcbiAgICogQHBhcmFtIHRvYXN0cyBub3RpZmlyZS10b2FzdFtdXG4gICAqIEByZXR1cm5zIFNub3RpZnlOb3RpZmljYXRpb25zXG4gICAqL1xuICBzcGxpdFRvYXN0cyh0b2FzdHM6IFNub3RpZmlyZVRvYXN0TW9kZWxbXSk6IFNub3RpZmlyZU5vdGlmaWNhdGlvbnMge1xuICAgIGNvbnN0IHJlc3VsdDogU25vdGlmaXJlTm90aWZpY2F0aW9ucyA9IHt9O1xuXG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiBTbm90aWZpY2F0aW9uUG9zaXRpb25UeXBlKSB7XG4gICAgICBpZiAoU25vdGlmaWNhdGlvblBvc2l0aW9uVHlwZS5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eSkpIHtcbiAgICAgICAgcmVzdWx0W1xuICAgICAgICAgIFNub3RpZmljYXRpb25Qb3NpdGlvblR5cGVbXG4gICAgICAgICAgICBwcm9wZXJ0eSBhcyBrZXlvZiB0eXBlb2YgU25vdGlmaWNhdGlvblBvc2l0aW9uVHlwZVxuICAgICAgICAgIF1cbiAgICAgICAgXSA9IFtdO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRvYXN0cy5mb3JFYWNoKCh0b2FzdDogU25vdGlmaXJlVG9hc3RNb2RlbCkgPT4ge1xuICAgICAgaWYgKHRvYXN0LmNvbmZpZy5wb3NpdGlvbikge1xuICAgICAgICBjb25zdCBrZXlJbmRleCA9IE9iamVjdC5rZXlzKFNub3RpZmljYXRpb25Qb3NpdGlvblR5cGUpLmluZGV4T2YoXG4gICAgICAgICAgdG9hc3QuY29uZmlnLnBvc2l0aW9uXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHNlYXJjaGVkU3RyaW5nID0gT2JqZWN0LnZhbHVlcyhTbm90aWZpY2F0aW9uUG9zaXRpb25UeXBlKVtcbiAgICAgICAgICBrZXlJbmRleFxuICAgICAgICBdO1xuICAgICAgICByZXN1bHRbc2VhcmNoZWRTdHJpbmddPy5wdXNoKHRvYXN0KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgZ2V0Tm90aWZpY2F0aW9uQXJyYXkoXG4gICAgbm90aWZpY2F0aW9uczogU25vdGlmaXJlTm90aWZpY2F0aW9ucyxcbiAgICBwb3NpdGlvbjogU25vdGlmaWNhdGlvblBvc2l0aW9uVHlwZVxuICApOiBTbm90aWZpcmVUb2FzdE1vZGVsW10gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBub3RpZmljYXRpb25zW3Bvc2l0aW9uXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGFuZ2VzIHRoZSBiYWNrZHJvcCBvcGFjaXR5XG4gICAqIEBwYXJhbSBldmVudCBOb3RpZmljYXRpb25FdmVudFR5cGVcbiAgICovXG4gIHN0YXRlQ2hhbmdlZChldmVudDogU25vdGlmaXJlRXZlbnRUeXBlKSB7XG4gICAgaWYgKCF0aGlzLndpdGhCYWNrZHJvcC5sZW5ndGgpIHtcbiAgICAgIGlmICh0aGlzLmJhY2tkcm9wICYmIHRoaXMuYmFja2Ryb3AgPj0gMCkge1xuICAgICAgICB0aGlzLmJhY2tkcm9wID0gLTE7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHN3aXRjaCAoZXZlbnQpIHtcbiAgICAgIGNhc2UgJ21vdW50ZWQnOlxuICAgICAgICBpZiAodGhpcy5iYWNrZHJvcCAmJiB0aGlzLmJhY2tkcm9wIDwgMCkge1xuICAgICAgICAgIHRoaXMuYmFja2Ryb3AgPSAwO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYmVmb3JlU2hvdyc6XG4gICAgICAgIHRoaXMuYmFja2Ryb3AgPVxuICAgICAgICAgIHRoaXMud2l0aEJhY2tkcm9wW3RoaXMud2l0aEJhY2tkcm9wLmxlbmd0aCAtIDFdLmNvbmZpZz8uYmFja2Ryb3A7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYmVmb3JlSGlkZSc6XG4gICAgICAgIGlmICh0aGlzLndpdGhCYWNrZHJvcC5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICB0aGlzLmJhY2tkcm9wID0gMDtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2hpZGRlbic6XG4gICAgICAgIGlmICh0aGlzLndpdGhCYWNrZHJvcC5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICB0aGlzLmJhY2tkcm9wID0gLTE7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy51bnN1YnNjcmliZSQubmV4dCgpO1xuICAgIHRoaXMudW5zdWJzY3JpYmUkLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgICBjbGFzcz1cInNub3RpZmlyZS1iYWNrZHJvcFwiXG4gICAgKm5nSWY9XCJiYWNrZHJvcCAmJiBiYWNrZHJvcCA+PSAwXCJcbiAgICBbc3R5bGUub3BhY2l0eV09XCJiYWNrZHJvcFwiXG4+PC9kaXY+XG5cbjxkaXZcbiAgICAqbmdGb3I9XCJsZXQgcG9zaXRpb24gb2Ygbm90aWZpY2F0aW9ucyB8IGtleXNcIlxuICAgIGNsYXNzPVwic25vdGlmeSBzbm90aWZ5LXt7IHBvc2l0aW9uIH19XCJcbj5cbiAgICA8bmd4LXRvYXN0XG4gICAgICAgICpuZ0Zvcj1cImxldCBub3RpZmljYXRpb24gb2YgZ2V0Tm90aWZpY2F0aW9uQXJyYXkobm90aWZpY2F0aW9ucywgcG9zaXRpb24pIHwgc2xpY2U6IGJsb2NrU2l6ZUE6YmxvY2tTaXplQlwiXG4gICAgICAgIFt0b2FzdF09XCJub3RpZmljYXRpb25cIlxuICAgICAgICAoc3RhdGVDaGFuZ2VkKT1cInN0YXRlQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICA+XG4gICAgPC9uZ3gtdG9hc3Q+XG5cbjwvZGl2PlxuIl19
128
+ }], ctorParameters: () => [{ type: i1.SnotifireService }] });
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXNub3RpZmlyZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc25vdGlmaXJlL3NyYy9saWIvY29tcG9uZW50cy9uZ3gtbm90aWZpcmUvbmd4LXNub3RpZmlyZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc25vdGlmaXJlL3NyYy9saWIvY29tcG9uZW50cy9uZ3gtbm90aWZpcmUvbmd4LXNub3RpZmlyZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUdULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFnQixTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHlCQUF5QixFQUFFLE1BQU0sY0FBYyxDQUFDOzs7Ozs7QUFVN0UsTUFBTSxPQUFPLHFCQUFxQjtJQW1DaEMsWUFBcUIsT0FBeUI7UUFBekIsWUFBTyxHQUFQLE9BQU8sQ0FBa0I7UUFsQzdCLGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQXlCcEQ7O1dBRUc7UUFDSCxhQUFRLEdBQXVCLENBQUMsQ0FBQyxDQUFDO1FBQ2xDOztXQUVHO1FBQ0gsaUJBQVksR0FBMEIsRUFBRSxDQUFDO0lBRVEsQ0FBQztJQUNsRCxlQUFlLEtBQVUsQ0FBQztJQUUxQixRQUFRO1FBQ04sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPO2FBQ2pCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ2xDLFNBQVMsQ0FBQyxDQUFDLE1BQTZCLEVBQUUsRUFBRTtZQUMzQyxJQUNFLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYTtnQkFDMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsTUFBTTtn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TSxLQUFLLENBQUMsRUFBRTtvQkFDbEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQztpQkFDcEI7Z0JBQ0QsTUFBTTtTQUNUO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDL0IsQ0FBQzs4R0FsS1UscUJBQXFCO2tHQUFyQixxQkFBcUIscURDbEJsQyx1ZUFrQkE7OzJGREFhLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxlQUFlLGlCQUVWLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU25vdGlmaXJlRXZlbnRUeXBlLCBTbm90aWZpY2F0aW9uUG9zaXRpb25UeXBlIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IFNub3RpZmlyZU5vdGlmaWNhdGlvbnMgfSBmcm9tICcuLi8uLi9tb2RlbHMvc25vdGlmaXJlLW5vdGlmaWNhdGlvbnMuaW50ZXJmYWNlJztcbmltcG9ydCB7IFNub3RpZmlyZVRvYXN0TW9kZWwgfSBmcm9tICcuLi90b2FzdC9ub3RpZmlyZS10b2FzdC5tb2RlbCc7XG5pbXBvcnQgeyBTbm90aWZpcmVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ3gtc25vdGlmaXJlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL25neC1zbm90aWZpcmUuY29tcG9uZW50Lmh0bWwnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3hTbm90aWZpcmVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgdW5zdWJzY3JpYmUkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgLyoqXG4gICAqIFRvYXN0cyBhcnJheVxuICAgKi9cbiAgbm90aWZpY2F0aW9ucyE6IFNub3RpZmlyZU5vdGlmaWNhdGlvbnM7XG4gIC8qKlxuICAgKiBUb2FzdHMgZW1pdHRlclxuICAgKi9cbiAgZW1pdHRlciE6IFN1YnNjcmlwdGlvbjtcbiAgLyoqXG4gICAqIEhlbHBlciBmb3Igc2xpY2UgcGlwZSAobWF4T25TY3JlZW4pXG4gICAqL1xuICBkb2NrU2l6ZUEhOiBudW1iZXI7XG4gIC8qKlxuICAgKiBIZWxwZXIgZm9yIHNsaWNlIHBpcGUgKG1heE9uU2NyZWVuKVxuICAgKi9cbiAgZG9ja1NpemVCITogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogSGVscGVyIGZvciBzbGljZSBwaXBlIChtYXhBdFBvc2l0aW9uKVxuICAgKi9cbiAgYmxvY2tTaXplQSE6IG51bWJlcjtcbiAgLyoqXG4gICAqIEhlbHBlciBmb3Igc2xpY2UgcGlwZSAobWF4QXRQb3NpdGlvbilcbiAgICovXG4gIGJsb2NrU2l6ZUIhOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBCYWNrZHJvcCBPcGFjaXR5XG4gICAqL1xuICBiYWNrZHJvcDogbnVtYmVyIHwgdW5kZWZpbmVkID0gLTE7XG4gIC8qKlxuICAgKiBIb3cgbWFueSB0b2FzdHMgd2l0aCBiYWNrZHJvcCBpbiBjdXJyZW50IHF1ZXVlXG4gICAqL1xuICB3aXRoQmFja2Ryb3A6IFNub3RpZmlyZVRvYXN0TW9kZWxbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IHNlcnZpY2U6IFNub3RpZmlyZVNlcnZpY2UpIHt9XG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXJ2aWNlLmVtaXR0ZXJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpXG4gICAgICAuc3Vic2NyaWJlKCh0b2FzdHM6IFNub3RpZmlyZVRvYXN0TW9kZWxbXSkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgdGhpcy5zZXJ2aWNlLmRlZmF1bHRDb25maWcgJiZcbiAgICAgICAgICB0aGlzLnNlcnZpY2UuZGVmYXVsdENvbmZpZy5nbG9iYWwgJiZcbiAgICAgICAgICB0aGlzLnNlcnZpY2UuZGVmYXVsdENvbmZpZy5nbG9iYWwubmV3T25Ub3BcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5kb2NrU2l6ZUEgPSB0aGlzLnNlcnZpY2UuZGVmYXVsdENvbmZpZy5nbG9iYWwubWF4T25TY3JlZW5cbiAgICAgICAgICAgID8gLXRoaXMuc2VydmljZS5kZWZhdWx0Q29uZmlnLmdsb2JhbC5tYXhPblNjcmVlblxuICAgICAgICAgICAgOiA2O1xuICAgICAgICAgIHRoaXMuZG9ja1NpemVCID0gdW5kZWZpbmVkO1xuICAgICAgICAgIHRoaXMuYmxvY2tTaXplQSA9IHRoaXMuc2VydmljZS5kZWZhdWx0Q29uZmlnLmdsb2JhbC5tYXhBdFBvc2l0aW9uXG4gICAgICAgICAgICA/IC10aGlzLnNlcnZpY2UuZGVmYXVsdENvbmZpZy5nbG9iYWwubWF4QXRQb3NpdGlvblxuICAgICAgICAgICAgOiA0O1xuICAgICAgICAgIHRoaXMuYmxvY2tTaXplQiA9IHVuZGVmaW5lZDtcbiAgICAgICAgICB0aGlzLndpdGhCYWNrZHJvcCA9IHRvYXN0cy5maWx0ZXIoXG4gICAgICAgICAgICAodG9hc3QpID0+XG4gICAgICAgICAgICAgIHRvYXN0LmNvbmZpZyAmJlxuICAgICAgICAgICAgICB0b2FzdC5jb25maWcuYmFja2Ryb3AgJiZcbiAgICAgICAgICAgICAgdG9hc3QuY29uZmlnLmJhY2tkcm9wID49IDBcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZG9ja1NpemVBID0gMDtcbiAgICAgICAgICB0aGlzLmRvY2tTaXplQiA9XG4gICAgICAgICAgICB0aGlzLnNlcnZpY2UuZGVmYXVsdENvbmZpZy5nbG9iYWwgJiZcbiAgICAgICAgICAgIHRoaXMuc2VydmljZS5kZWZhdWx0Q29uZmlnLmdsb2JhbC5tYXhPblNjcmVlbjtcbiAgICAgICAgICB0aGlzLmJsb2NrU2l6ZUEgPSAwO1xuICAgICAgICAgIHRoaXMuYmxvY2tTaXplQiA9XG4gICAgICAgICAgICB0aGlzLnNlcnZpY2UuZGVmYXVsdENvbmZpZy5nbG9iYWwgJiZcbiAgICAgICAgICAgIHRoaXMuc2VydmljZS5kZWZhdWx0Q29uZmlnLmdsb2JhbC5tYXhBdFBvc2l0aW9uO1xuICAgICAgICAgIHRoaXMud2l0aEJhY2tkcm9wID0gdG9hc3RzXG4gICAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgICAodG9hc3QpID0+XG4gICAgICAgICAgICAgICAgdG9hc3QuY29uZmlnICYmXG4gICAgICAgICAgICAgICAgdG9hc3QuY29uZmlnLmJhY2tkcm9wICYmXG4gICAgICAgICAgICAgICAgdG9hc3QuY29uZmlnLmJhY2tkcm9wID49IDBcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5yZXZlcnNlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zID0gdGhpcy5zcGxpdFRvYXN0cyhcbiAgICAgICAgICB0b2FzdHMuc2xpY2UodGhpcy5kb2NrU2l6ZUEsIHRoaXMuZG9ja1NpemVCKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlZChTbm90aWZpcmVFdmVudFR5cGUuTU9VTlRFRCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGxpdCB0b2FzdHMgdG9hc3RzIGludG8gZGlmZmVyZW50IG9iamVjdHNcbiAgICogQHBhcmFtIHRvYXN0cyBub3RpZmlyZS10b2FzdFtdXG4gICAqIEByZXR1cm5zIFNub3RpZnlOb3RpZmljYXRpb25zXG4gICAqL1xuICBzcGxpdFRvYXN0cyh0b2FzdHM6IFNub3RpZmlyZVRvYXN0TW9kZWxbXSk6IFNub3RpZmlyZU5vdGlmaWNhdGlvbnMge1xuICAgIGNvbnN0IHJlc3VsdDogU25vdGlmaXJlTm90aWZpY2F0aW9ucyA9IHt9O1xuXG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiBTbm90aWZpY2F0aW9uUG9zaXRpb25UeXBlKSB7XG4gICAgICBpZiAoU25vdGlmaWNhdGlvblBvc2l0aW9uVHlwZS5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eSkpIHtcbiAgICAgICAgcmVzdWx0W1xuICAgICAgICAgIFNub3RpZmljYXRpb25Qb3NpdGlvblR5cGVbXG4gICAgICAgICAgICBwcm9wZXJ0eSBhcyBrZXlvZiB0eXBlb2YgU25vdGlmaWNhdGlvblBvc2l0aW9uVHlwZVxuICAgICAgICAgIF1cbiAgICAgICAgXSA9IFtdO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRvYXN0cy5mb3JFYWNoKCh0b2FzdDogU25vdGlmaXJlVG9hc3RNb2RlbCkgPT4ge1xuICAgICAgaWYgKHRvYXN0LmNvbmZpZy5wb3NpdGlvbikge1xuICAgICAgICBjb25zdCBrZXlJbmRleCA9IE9iamVjdC5rZXlzKFNub3RpZmljYXRpb25Qb3NpdGlvblR5cGUpLmluZGV4T2YoXG4gICAgICAgICAgdG9hc3QuY29uZmlnLnBvc2l0aW9uXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHNlYXJjaGVkU3RyaW5nID0gT2JqZWN0LnZhbHVlcyhTbm90aWZpY2F0aW9uUG9zaXRpb25UeXBlKVtcbiAgICAgICAgICBrZXlJbmRleFxuICAgICAgICBdO1xuICAgICAgICByZXN1bHRbc2VhcmNoZWRTdHJpbmddPy5wdXNoKHRvYXN0KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgZ2V0Tm90aWZpY2F0aW9uQXJyYXkoXG4gICAgbm90aWZpY2F0aW9uczogU25vdGlmaXJlTm90aWZpY2F0aW9ucyxcbiAgICBwb3NpdGlvbjogU25vdGlmaWNhdGlvblBvc2l0aW9uVHlwZVxuICApOiBTbm90aWZpcmVUb2FzdE1vZGVsW10gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBub3RpZmljYXRpb25zW3Bvc2l0aW9uXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGFuZ2VzIHRoZSBiYWNrZHJvcCBvcGFjaXR5XG4gICAqIEBwYXJhbSBldmVudCBOb3RpZmljYXRpb25FdmVudFR5cGVcbiAgICovXG4gIHN0YXRlQ2hhbmdlZChldmVudDogU25vdGlmaXJlRXZlbnRUeXBlKSB7XG4gICAgaWYgKCF0aGlzLndpdGhCYWNrZHJvcC5sZW5ndGgpIHtcbiAgICAgIGlmICh0aGlzLmJhY2tkcm9wICYmIHRoaXMuYmFja2Ryb3AgPj0gMCkge1xuICAgICAgICB0aGlzLmJhY2tkcm9wID0gLTE7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHN3aXRjaCAoZXZlbnQpIHtcbiAgICAgIGNhc2UgJ21vdW50ZWQnOlxuICAgICAgICBpZiAodGhpcy5iYWNrZHJvcCAmJiB0aGlzLmJhY2tkcm9wIDwgMCkge1xuICAgICAgICAgIHRoaXMuYmFja2Ryb3AgPSAwO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYmVmb3JlU2hvdyc6XG4gICAgICAgIHRoaXMuYmFja2Ryb3AgPVxuICAgICAgICAgIHRoaXMud2l0aEJhY2tkcm9wW3RoaXMud2l0aEJhY2tkcm9wLmxlbmd0aCAtIDFdLmNvbmZpZz8uYmFja2Ryb3A7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYmVmb3JlSGlkZSc6XG4gICAgICAgIGlmICh0aGlzLndpdGhCYWNrZHJvcC5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICB0aGlzLmJhY2tkcm9wID0gMDtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2hpZGRlbic6XG4gICAgICAgIGlmICh0aGlzLndpdGhCYWNrZHJvcC5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICB0aGlzLmJhY2tkcm9wID0gLTE7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy51bnN1YnNjcmliZSQubmV4dCgpO1xuICAgIHRoaXMudW5zdWJzY3JpYmUkLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgICBjbGFzcz1cInNub3RpZmlyZS1iYWNrZHJvcFwiXG4gICAgKm5nSWY9XCJiYWNrZHJvcCAmJiBiYWNrZHJvcCA+PSAwXCJcbiAgICBbc3R5bGUub3BhY2l0eV09XCJiYWNrZHJvcFwiXG4+PC9kaXY+XG5cbjxkaXZcbiAgICAqbmdGb3I9XCJsZXQgcG9zaXRpb24gb2Ygbm90aWZpY2F0aW9ucyB8IGtleXNcIlxuICAgIGNsYXNzPVwic25vdGlmeSBzbm90aWZ5LXt7IHBvc2l0aW9uIH19XCJcbj5cbiAgICA8bmd4LXRvYXN0XG4gICAgICAgICpuZ0Zvcj1cImxldCBub3RpZmljYXRpb24gb2YgZ2V0Tm90aWZpY2F0aW9uQXJyYXkobm90aWZpY2F0aW9ucywgcG9zaXRpb24pIHwgc2xpY2U6IGJsb2NrU2l6ZUE6YmxvY2tTaXplQlwiXG4gICAgICAgIFt0b2FzdF09XCJub3RpZmljYXRpb25cIlxuICAgICAgICAoc3RhdGVDaGFuZ2VkKT1cInN0YXRlQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICA+XG4gICAgPC9uZ3gtdG9hc3Q+XG5cbjwvZGl2PlxuIl19
@@ -14,13 +14,13 @@ export class PromptComponent {
14
14
  getValue($event) {
15
15
  return $event.target.value;
16
16
  }
17
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PromptComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
18
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PromptComponent, selector: "ngx-snotify-prompt", inputs: { toast: "toast" }, ngImport: i0, template: "<span\n class=\"notifire-toast__input\"\n [ngClass]=\"{ 'notifire-toast__input--filled': isPromptFocused }\"\n>\n <input\n (input)=\"toast.value = getValue($event); toast.eventEmitter.next(inputType)\"\n autofocus\n class=\"notifire-toast__input__field\"\n type=\"text\"\n [id]=\"toast.id\"\n (focus)=\"isPromptFocused = true\"\n (blur)=\"isPromptFocused = !!toast.value && !!toast.value.length\"\n >\n <label\n class=\"notifire-toast__input__label\"\n [for]=\"toast.id\"\n >\n <span\n class=\"notifire-toast__input__labelContent\"\n *ngIf=\"toast.config && toast.config.placeholder \"\n >\n {{ toast.config.placeholder | truncate }}\n </span>\n </label>\n</span>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.TruncatePipe, name: "truncate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
17
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: PromptComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
18
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.3", type: PromptComponent, selector: "ngx-snotify-prompt", inputs: { toast: "toast" }, ngImport: i0, template: "<span\n class=\"notifire-toast__input\"\n [ngClass]=\"{ 'notifire-toast__input--filled': isPromptFocused }\"\n>\n <input\n (input)=\"toast.value = getValue($event); toast.eventEmitter.next(inputType)\"\n autofocus\n class=\"notifire-toast__input__field\"\n type=\"text\"\n [id]=\"toast.id\"\n (focus)=\"isPromptFocused = true\"\n (blur)=\"isPromptFocused = !!toast.value && !!toast.value.length\"\n >\n <label\n class=\"notifire-toast__input__label\"\n [for]=\"toast.id\"\n >\n <span\n class=\"notifire-toast__input__labelContent\"\n *ngIf=\"toast.config && toast.config.placeholder \"\n >\n {{ toast.config.placeholder | truncate }}\n </span>\n </label>\n</span>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.TruncatePipe, name: "truncate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
19
19
  }
20
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PromptComponent, decorators: [{
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: PromptComponent, decorators: [{
21
21
  type: Component,
22
22
  args: [{ selector: 'ngx-snotify-prompt', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<span\n class=\"notifire-toast__input\"\n [ngClass]=\"{ 'notifire-toast__input--filled': isPromptFocused }\"\n>\n <input\n (input)=\"toast.value = getValue($event); toast.eventEmitter.next(inputType)\"\n autofocus\n class=\"notifire-toast__input__field\"\n type=\"text\"\n [id]=\"toast.id\"\n (focus)=\"isPromptFocused = true\"\n (blur)=\"isPromptFocused = !!toast.value && !!toast.value.length\"\n >\n <label\n class=\"notifire-toast__input__label\"\n [for]=\"toast.id\"\n >\n <span\n class=\"notifire-toast__input__labelContent\"\n *ngIf=\"toast.config && toast.config.placeholder \"\n >\n {{ toast.config.placeholder | truncate }}\n </span>\n </label>\n</span>\n" }]
23
23
  }], propDecorators: { toast: [{
24
24
  type: Input
25
25
  }] } });
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvbXB0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbm90aWZpcmUvc3JjL2xpYi9jb21wb25lbnRzL3Byb21wdC9wcm9tcHQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNub3RpZmlyZS9zcmMvbGliL2NvbXBvbmVudHMvcHJvbXB0L3Byb21wdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxLQUFLLEVBRUwsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7OztBQVNsRCxNQUFNLE9BQU8sZUFBZTtJQU41QjtRQU9FLGNBQVMsR0FBRyxrQkFBa0IsQ0FBQyxLQUFLLENBQUM7UUFLckM7O1dBRUc7UUFDSCxvQkFBZSxHQUFHLEtBQUssQ0FBQztLQUt6QjtJQUhDLFFBQVEsQ0FBQyxNQUFXO1FBQ2xCLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDN0IsQ0FBQzsrR0FiVSxlQUFlO21HQUFmLGVBQWUsc0ZDaEI1QixxeUJBeUJBOzs0RkRUYSxlQUFlO2tCQU4zQixTQUFTOytCQUNFLG9CQUFvQixtQkFFYix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJOzhCQU81QixLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTbm90aWZpcmVFdmVudFR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgU25vdGlmaXJlVG9hc3RNb2RlbCB9IGZyb20gJy4uL3RvYXN0L25vdGlmaXJlLXRvYXN0Lm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmd4LXNub3RpZnktcHJvbXB0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb21wdC5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBQcm9tcHRDb21wb25lbnQge1xuICBpbnB1dFR5cGUgPSBTbm90aWZpcmVFdmVudFR5cGUuSU5QVVQ7XG4gIC8qKlxuICAgKiBHZXQgUFJPTVBUIHBsYWNlaG9sZGVyXG4gICAqL1xuICBASW5wdXQoKSB0b2FzdCE6IFNub3RpZmlyZVRvYXN0TW9kZWw7XG4gIC8qKlxuICAgKiBJcyBQUk9NUFQgZm9jdXNlZFxuICAgKi9cbiAgaXNQcm9tcHRGb2N1c2VkID0gZmFsc2U7XG5cbiAgZ2V0VmFsdWUoJGV2ZW50OiBhbnkpOiBzdHJpbmcge1xuICAgIHJldHVybiAkZXZlbnQudGFyZ2V0LnZhbHVlO1xuICB9XG59XG4iLCI8c3BhblxuICAgIGNsYXNzPVwibm90aWZpcmUtdG9hc3RfX2lucHV0XCJcbiAgICBbbmdDbGFzc109XCJ7ICdub3RpZmlyZS10b2FzdF9faW5wdXQtLWZpbGxlZCc6IGlzUHJvbXB0Rm9jdXNlZCB9XCJcbj5cbiAgICA8aW5wdXRcbiAgICAgICAgKGlucHV0KT1cInRvYXN0LnZhbHVlID0gZ2V0VmFsdWUoJGV2ZW50KTsgdG9hc3QuZXZlbnRFbWl0dGVyLm5leHQoaW5wdXRUeXBlKVwiXG4gICAgICAgIGF1dG9mb2N1c1xuICAgICAgICBjbGFzcz1cIm5vdGlmaXJlLXRvYXN0X19pbnB1dF9fZmllbGRcIlxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgIFtpZF09XCJ0b2FzdC5pZFwiXG4gICAgICAgIChmb2N1cyk9XCJpc1Byb21wdEZvY3VzZWQgPSB0cnVlXCJcbiAgICAgICAgKGJsdXIpPVwiaXNQcm9tcHRGb2N1c2VkID0gISF0b2FzdC52YWx1ZSAmJiAhIXRvYXN0LnZhbHVlLmxlbmd0aFwiXG4gICAgPlxuICAgIDxsYWJlbFxuICAgICAgICBjbGFzcz1cIm5vdGlmaXJlLXRvYXN0X19pbnB1dF9fbGFiZWxcIlxuICAgICAgICBbZm9yXT1cInRvYXN0LmlkXCJcbiAgICA+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cIm5vdGlmaXJlLXRvYXN0X19pbnB1dF9fbGFiZWxDb250ZW50XCJcbiAgICAgICAgICAgICpuZ0lmPVwidG9hc3QuY29uZmlnICYmIHRvYXN0LmNvbmZpZy5wbGFjZWhvbGRlciBcIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyB0b2FzdC5jb25maWcucGxhY2Vob2xkZXIgfCB0cnVuY2F0ZSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgPC9sYWJlbD5cbjwvc3Bhbj5cbiJdfQ==
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvbXB0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbm90aWZpcmUvc3JjL2xpYi9jb21wb25lbnRzL3Byb21wdC9wcm9tcHQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNub3RpZmlyZS9zcmMvbGliL2NvbXBvbmVudHMvcHJvbXB0L3Byb21wdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxLQUFLLEVBRUwsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7OztBQVNsRCxNQUFNLE9BQU8sZUFBZTtJQU41QjtRQU9FLGNBQVMsR0FBRyxrQkFBa0IsQ0FBQyxLQUFLLENBQUM7UUFLckM7O1dBRUc7UUFDSCxvQkFBZSxHQUFHLEtBQUssQ0FBQztLQUt6QjtJQUhDLFFBQVEsQ0FBQyxNQUFXO1FBQ2xCLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDN0IsQ0FBQzs4R0FiVSxlQUFlO2tHQUFmLGVBQWUsc0ZDaEI1QixxeUJBeUJBOzsyRkRUYSxlQUFlO2tCQU4zQixTQUFTOytCQUNFLG9CQUFvQixtQkFFYix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJOzhCQU81QixLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTbm90aWZpcmVFdmVudFR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgU25vdGlmaXJlVG9hc3RNb2RlbCB9IGZyb20gJy4uL3RvYXN0L25vdGlmaXJlLXRvYXN0Lm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmd4LXNub3RpZnktcHJvbXB0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb21wdC5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBQcm9tcHRDb21wb25lbnQge1xuICBpbnB1dFR5cGUgPSBTbm90aWZpcmVFdmVudFR5cGUuSU5QVVQ7XG4gIC8qKlxuICAgKiBHZXQgUFJPTVBUIHBsYWNlaG9sZGVyXG4gICAqL1xuICBASW5wdXQoKSB0b2FzdCE6IFNub3RpZmlyZVRvYXN0TW9kZWw7XG4gIC8qKlxuICAgKiBJcyBQUk9NUFQgZm9jdXNlZFxuICAgKi9cbiAgaXNQcm9tcHRGb2N1c2VkID0gZmFsc2U7XG5cbiAgZ2V0VmFsdWUoJGV2ZW50OiBhbnkpOiBzdHJpbmcge1xuICAgIHJldHVybiAkZXZlbnQudGFyZ2V0LnZhbHVlO1xuICB9XG59XG4iLCI8c3BhblxuICAgIGNsYXNzPVwibm90aWZpcmUtdG9hc3RfX2lucHV0XCJcbiAgICBbbmdDbGFzc109XCJ7ICdub3RpZmlyZS10b2FzdF9faW5wdXQtLWZpbGxlZCc6IGlzUHJvbXB0Rm9jdXNlZCB9XCJcbj5cbiAgICA8aW5wdXRcbiAgICAgICAgKGlucHV0KT1cInRvYXN0LnZhbHVlID0gZ2V0VmFsdWUoJGV2ZW50KTsgdG9hc3QuZXZlbnRFbWl0dGVyLm5leHQoaW5wdXRUeXBlKVwiXG4gICAgICAgIGF1dG9mb2N1c1xuICAgICAgICBjbGFzcz1cIm5vdGlmaXJlLXRvYXN0X19pbnB1dF9fZmllbGRcIlxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgIFtpZF09XCJ0b2FzdC5pZFwiXG4gICAgICAgIChmb2N1cyk9XCJpc1Byb21wdEZvY3VzZWQgPSB0cnVlXCJcbiAgICAgICAgKGJsdXIpPVwiaXNQcm9tcHRGb2N1c2VkID0gISF0b2FzdC52YWx1ZSAmJiAhIXRvYXN0LnZhbHVlLmxlbmd0aFwiXG4gICAgPlxuICAgIDxsYWJlbFxuICAgICAgICBjbGFzcz1cIm5vdGlmaXJlLXRvYXN0X19pbnB1dF9fbGFiZWxcIlxuICAgICAgICBbZm9yXT1cInRvYXN0LmlkXCJcbiAgICA+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cIm5vdGlmaXJlLXRvYXN0X19pbnB1dF9fbGFiZWxDb250ZW50XCJcbiAgICAgICAgICAgICpuZ0lmPVwidG9hc3QuY29uZmlnICYmIHRvYXN0LmNvbmZpZy5wbGFjZWhvbGRlciBcIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyB0b2FzdC5jb25maWcucGxhY2Vob2xkZXIgfCB0cnVuY2F0ZSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgPC9sYWJlbD5cbjwvc3Bhbj5cbiJdfQ==
@@ -171,15 +171,15 @@ export class ToastComponent {
171
171
  this.unsubscribe$.next();
172
172
  this.unsubscribe$.complete();
173
173
  }
174
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ToastComponent, deps: [{ token: i1.SnotifireService }], target: i0.ɵɵFactoryTarget.Component }); }
175
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ToastComponent, selector: "ngx-toast", inputs: { toast: "toast" }, outputs: { stateChanged: "stateChanged" }, ngImport: i0, template: "<ng-container *ngIf=\"toast && toast.config\">\n <div\n [attr.role]=\"toast.config.type === state.promptType ? 'dialog' : 'alert'\"\n [attr.aria-labelledby]=\"'snotify_' + toast.id\"\n [attr.aria-modal]=\"toast.config.type === state.promptType\"\n [ngClass]=\"[\n 'notifire-toast animated',\n 'snotify-' + toast.config.type,\n state.animation, toast.valid === undefined ? '' : toast.valid ? 'snotifyToast--valid' : 'snotifyToast--invalid'\n]\"\n [ngStyle]=\"{\n '-webkit-transition': toast.config.animation && toast.config.animation.time + 'ms',\n transition: toast.config.animation && toast.config.animation.time + 'ms',\n '-webkit-animation-duration': toast.config.animation && toast.config.animation.time + 'ms',\n 'animation-duration': toast.config.animation && toast.config.animation.time + 'ms'\n}\"\n (animationend)=\"onExitTransitionEnd()\"\n (click)=\"onClick()\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n >\n <div\n class=\"notifire-toast__progressBar\"\n *ngIf=\"toast.config.showProgressBar\"\n >\n <span\n class=\"notifire-toast__progressBar__percentage\"\n [ngStyle]=\"{ width: state.progress * 100 + '%' }\"\n ></span>\n </div>\n <div\n class=\"notifire-toast__inner\"\n *ngIf=\"!toast.config.html; else toastHTML\"\n >\n <div\n class=\"notifire-toast__title\"\n [attr.id]=\"'snotify_' + toast.id\"\n *ngIf=\"toast.title\"\n >\n {{ toast.title | truncate: toast.config.titleMaxLength }}\n </div>\n <div\n class=\"notifire-toast__body\"\n *ngIf=\"toast.body\"\n >\n {{ toast.body | truncate: toast.config.bodyMaxLength }}\n </div>\n <ngx-snotify-prompt\n *ngIf=\"toast.config.type === state.promptType\"\n [toast]=\"toast\"\n >\n </ngx-snotify-prompt>\n <div\n *ngIf=\"!toast.config.icon; else elseBlock\"\n [ngClass]=\"['snotifire-icon', toast.config.iconClass || 'snotifire-icon--' + toast.config.type]\"\n ></div>\n <ng-template #elseBlock>\n <img\n class=\"snotifire-icon\"\n [src]=\"toast.config.icon\"\n >\n </ng-template>\n </div>\n <ng-template #toastHTML>\n <div\n class=\"notifire-toast__inner\"\n [innerHTML]=\"toast.config.html\"\n ></div>\n </ng-template>\n <notifire-button\n *ngIf=\"toast.config.buttons\"\n [toast]=\"toast\"\n ></notifire-button>\n </div>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i3.PromptComponent, selector: "ngx-snotify-prompt", inputs: ["toast"] }, { kind: "component", type: i4.ButtonsComponent, selector: "notifire-button", inputs: ["toast"] }, { kind: "pipe", type: i5.TruncatePipe, name: "truncate" }], encapsulation: i0.ViewEncapsulation.None }); }
174
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ToastComponent, deps: [{ token: i1.SnotifireService }], target: i0.ɵɵFactoryTarget.Component }); }
175
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.3", type: ToastComponent, selector: "ngx-toast", inputs: { toast: "toast" }, outputs: { stateChanged: "stateChanged" }, ngImport: i0, template: "<ng-container *ngIf=\"toast && toast.config\">\n <div\n [attr.role]=\"toast.config.type === state.promptType ? 'dialog' : 'alert'\"\n [attr.aria-labelledby]=\"'snotify_' + toast.id\"\n [attr.aria-modal]=\"toast.config.type === state.promptType\"\n [ngClass]=\"[\n 'notifire-toast animated',\n 'snotify-' + toast.config.type,\n state.animation, toast.valid === undefined ? '' : toast.valid ? 'snotifyToast--valid' : 'snotifyToast--invalid'\n]\"\n [ngStyle]=\"{\n '-webkit-transition': toast.config.animation && toast.config.animation.time + 'ms',\n transition: toast.config.animation && toast.config.animation.time + 'ms',\n '-webkit-animation-duration': toast.config.animation && toast.config.animation.time + 'ms',\n 'animation-duration': toast.config.animation && toast.config.animation.time + 'ms'\n}\"\n (animationend)=\"onExitTransitionEnd()\"\n (click)=\"onClick()\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n >\n <div\n class=\"notifire-toast__progressBar\"\n *ngIf=\"toast.config.showProgressBar\"\n >\n <span\n class=\"notifire-toast__progressBar__percentage\"\n [ngStyle]=\"{ width: state.progress * 100 + '%' }\"\n ></span>\n </div>\n <div\n class=\"notifire-toast__inner\"\n *ngIf=\"!toast.config.html; else toastHTML\"\n >\n <div\n class=\"notifire-toast__title\"\n [attr.id]=\"'snotify_' + toast.id\"\n *ngIf=\"toast.title\"\n >\n {{ toast.title | truncate: toast.config.titleMaxLength }}\n </div>\n <div\n class=\"notifire-toast__body\"\n *ngIf=\"toast.body\"\n >\n {{ toast.body | truncate: toast.config.bodyMaxLength }}\n </div>\n <ngx-snotify-prompt\n *ngIf=\"toast.config.type === state.promptType\"\n [toast]=\"toast\"\n >\n </ngx-snotify-prompt>\n <div\n *ngIf=\"!toast.config.icon; else elseBlock\"\n [ngClass]=\"['snotifire-icon', toast.config.iconClass || 'snotifire-icon--' + toast.config.type]\"\n ></div>\n <ng-template #elseBlock>\n <img\n class=\"snotifire-icon\"\n [src]=\"toast.config.icon\"\n >\n </ng-template>\n </div>\n <ng-template #toastHTML>\n <div\n class=\"notifire-toast__inner\"\n [innerHTML]=\"toast.config.html\"\n ></div>\n </ng-template>\n <notifire-button\n *ngIf=\"toast.config.buttons\"\n [toast]=\"toast\"\n ></notifire-button>\n </div>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i3.PromptComponent, selector: "ngx-snotify-prompt", inputs: ["toast"] }, { kind: "component", type: i4.ButtonsComponent, selector: "notifire-button", inputs: ["toast"] }, { kind: "pipe", type: i5.TruncatePipe, name: "truncate" }], encapsulation: i0.ViewEncapsulation.None }); }
176
176
  }
177
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ToastComponent, decorators: [{
177
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ToastComponent, decorators: [{
178
178
  type: Component,
179
179
  args: [{ selector: 'ngx-toast', encapsulation: ViewEncapsulation.None, template: "<ng-container *ngIf=\"toast && toast.config\">\n <div\n [attr.role]=\"toast.config.type === state.promptType ? 'dialog' : 'alert'\"\n [attr.aria-labelledby]=\"'snotify_' + toast.id\"\n [attr.aria-modal]=\"toast.config.type === state.promptType\"\n [ngClass]=\"[\n 'notifire-toast animated',\n 'snotify-' + toast.config.type,\n state.animation, toast.valid === undefined ? '' : toast.valid ? 'snotifyToast--valid' : 'snotifyToast--invalid'\n]\"\n [ngStyle]=\"{\n '-webkit-transition': toast.config.animation && toast.config.animation.time + 'ms',\n transition: toast.config.animation && toast.config.animation.time + 'ms',\n '-webkit-animation-duration': toast.config.animation && toast.config.animation.time + 'ms',\n 'animation-duration': toast.config.animation && toast.config.animation.time + 'ms'\n}\"\n (animationend)=\"onExitTransitionEnd()\"\n (click)=\"onClick()\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n >\n <div\n class=\"notifire-toast__progressBar\"\n *ngIf=\"toast.config.showProgressBar\"\n >\n <span\n class=\"notifire-toast__progressBar__percentage\"\n [ngStyle]=\"{ width: state.progress * 100 + '%' }\"\n ></span>\n </div>\n <div\n class=\"notifire-toast__inner\"\n *ngIf=\"!toast.config.html; else toastHTML\"\n >\n <div\n class=\"notifire-toast__title\"\n [attr.id]=\"'snotify_' + toast.id\"\n *ngIf=\"toast.title\"\n >\n {{ toast.title | truncate: toast.config.titleMaxLength }}\n </div>\n <div\n class=\"notifire-toast__body\"\n *ngIf=\"toast.body\"\n >\n {{ toast.body | truncate: toast.config.bodyMaxLength }}\n </div>\n <ngx-snotify-prompt\n *ngIf=\"toast.config.type === state.promptType\"\n [toast]=\"toast\"\n >\n </ngx-snotify-prompt>\n <div\n *ngIf=\"!toast.config.icon; else elseBlock\"\n [ngClass]=\"['snotifire-icon', toast.config.iconClass || 'snotifire-icon--' + toast.config.type]\"\n ></div>\n <ng-template #elseBlock>\n <img\n class=\"snotifire-icon\"\n [src]=\"toast.config.icon\"\n >\n </ng-template>\n </div>\n <ng-template #toastHTML>\n <div\n class=\"notifire-toast__inner\"\n [innerHTML]=\"toast.config.html\"\n ></div>\n </ng-template>\n <notifire-button\n *ngIf=\"toast.config.buttons\"\n [toast]=\"toast\"\n ></notifire-button>\n </div>\n</ng-container>\n" }]
180
- }], ctorParameters: function () { return [{ type: i1.SnotifireService }]; }, propDecorators: { toast: [{
180
+ }], ctorParameters: () => [{ type: i1.SnotifireService }], propDecorators: { toast: [{
181
181
  type: Input
182
182
  }], stateChanged: [{
183
183
  type: Output
184
184
  }] } });
185
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNub3RpZmlyZS9zcmMvbGliL2NvbXBvbmVudHMvdG9hc3QvdG9hc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNub3RpZmlyZS9zcmMvbGliL2NvbXBvbmVudHMvdG9hc3QvdG9hc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7Ozs7OztBQVNqRSxNQUFNLE9BQU8sY0FBYztJQXlCekIsWUFBNkIsT0FBeUI7UUFBekIsWUFBTyxHQUFQLE9BQU8sQ0FBa0I7UUF4QjlDLGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQU1qQyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFzQixDQUFDO1FBT2hFOztXQUVHO1FBQ0gsVUFBSyxHQUFHO1lBQ04sTUFBTSxFQUFFLEtBQUs7WUFDYixRQUFRLEVBQUUsQ0FBQztZQUNYLFNBQVMsRUFBRSxFQUFFO1lBQ2IsWUFBWSxFQUFFLEtBQUs7WUFDbkIsVUFBVSxFQUFFLGFBQWEsQ0FBQyxNQUFNO1NBQ2pDLENBQUM7SUFFdUQsQ0FBQztJQUUxRCxRQUFRO1FBQ04sSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZO2FBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ2xDLFNBQVMsQ0FBQyxDQUFDLEtBQTBCLEVBQUUsRUFBRTtZQUN4QyxJ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QVMsRUFBRSxDQUFDO2lCQUNiO3FCQUFNO29CQUNMLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztvQkFDeEIsb0JBQW9CLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO29CQUMxQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2lCQUNwQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDO1FBQ0YsU0FBUyxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMvQixDQUFDOytHQWhNVSxjQUFjO21HQUFkLGNBQWMsd0hDbkIzQix1M0ZBMkVBOzs0RkR4RGEsY0FBYztrQkFMMUIsU0FBUzsrQkFDRSxXQUFXLGlCQUVOLGlCQUFpQixDQUFDLElBQUk7dUdBUTVCLEtBQUs7c0JBQWIsS0FBSztnQkFDSSxZQUFZO3NCQUFyQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNub3RpZmlyZUV2ZW50VHlwZSwgU25vdGlmaXJlVHlwZSB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBTbm90aWZpcmVUb2FzdE1vZGVsIH0gZnJvbSAnLi9ub3RpZmlyZS10b2FzdC5tb2RlbCc7XG5pbXBvcnQgeyBTbm90aWZpcmVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ3gtdG9hc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vdG9hc3QuY29tcG9uZW50Lmh0bWwnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBUb2FzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSB1bnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBHZXQgdG9hc3QgZnJvbSBub3RpZmljYXRpb25zIGFycmF5XG4gICAqL1xuICBASW5wdXQoKSB0b2FzdCE6IFNub3RpZmlyZVRvYXN0TW9kZWw7XG4gIEBPdXRwdXQoKSBzdGF0ZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFNub3RpZmlyZUV2ZW50VHlwZT4oKTtcblxuICAvKipcbiAgICogcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGlkXG4gICAqL1xuICBhbmltYXRpb25GcmFtZSE6IG51bWJlcjtcblxuICAvKipcbiAgICogVG9hc3Qgc3RhdGVcbiAgICovXG4gIHN0YXRlID0ge1xuICAgIHBhdXNlZDogZmFsc2UsXG4gICAgcHJvZ3Jlc3M6IDAsXG4gICAgYW5pbWF0aW9uOiAnJyxcbiAgICBpc0Rlc3Ryb3lpbmc6IGZhbHNlLFxuICAgIHByb21wdFR5cGU6IFNub3RpZmlyZVR5cGUuUFJPTVBULFxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgc2VydmljZTogU25vdGlmaXJlU2VydmljZSkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlcnZpY2UudG9hc3RDaGFuZ2VkXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpKVxuICAgICAgLnN1YnNjcmliZSgodG9hc3Q6IFNub3RpZmlyZVRvYXN0TW9kZWwpID0+IHtcbiAgICAgICAgaWYgKHRoaXMudG9hc3QuaWQgPT09IHRvYXN0LmlkKSB7XG4gICAgICAgICAgdGhpcy5pbml0VG9hc3QoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICB0aGlzLnNlcnZpY2UudG9hc3REZWxldGVkXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpKVxuICAgICAgLnN1YnNjcmliZSgoaWQpID0+IHtcbiAgICAgICAgaWYgKHRoaXMudG9hc3QuaWQgPT09IGlkKSB7XG4gICAgICAgICAgdGhpcy5vblJlbW92ZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICBpZiAodGhpcy50b2FzdCAmJiB0aGlzLnRvYXN0LmNvbmZpZyAmJiAhdGhpcy50b2FzdC5jb25maWcudGltZW91dCkge1xuICAgICAgdGhpcy50b2FzdC5jb25maWcuc2hvd1Byb2dyZXNzQmFyID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy50b2FzdC5ldmVudEVtaXR0ZXIubmV4dChTbm90aWZpcmVFdmVudFR5cGUuTU9VTlRFRCk7XG4gICAgdGhpcy5zdGF0ZS5hbmltYXRpb24gPSAnbm90aWZpcmUtdG9hc3QtLWluJztcbiAgfVxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5zZXJ2aWNlLmRlZmF1bHRDb25maWcuc25vdGlmaXJlQ29uZmlnICYmXG4gICAgICB0aGlzLnNlcnZpY2UuZGVmYXVsdENvbmZpZy5zbm90aWZpcmVDb25maWcuYW5pbWF0aW9uXG4gICAgKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZWQuZW1pdChTbm90aWZpcmVFdmVudFR5cGUuQkVGT1JFX1NIT1cpO1xuICAgICAgICB0aGlzLnRvYXN0LmV2ZW50RW1pdHRlci5uZXh0KFNub3RpZmlyZUV2ZW50VHlwZS5CRUZPUkVfU0hPVyk7XG4gICAgICAgIHRoaXMuc3RhdGUuYW5pbWF0aW9uID1cbiAgICAgICAgICB0aGlzLnRvYXN0LmNvbmZpZyAmJlxuICAgICAgICAgIHRoaXMudG9hc3QuY29uZmlnLmFuaW1hdGlvbiAmJlxuICAgICAgICAgIHRoaXMudG9hc3QuY29uZmlnLmFuaW1hdGlvbi5lbnRlclxuICAgICAgICAgICAgPyB0aGlzLnRvYXN0LmNvbmZpZy5hbmltYXRpb24uZW50ZXJcbiAgICAgICAgICAgIDogJyc7XG4gICAgICB9LCB0aGlzLnNlcnZpY2UuZGVmYXVsdENvbmZpZy5zbm90aWZpcmVDb25maWcuYW5pbWF0aW9uLnRpbWUgLyA1KTsgLy8gdGltZSB0byBzaG93IHRvYXN0IHB1c2ggYW5pbWF0aW9uIChub3RpZmlyZS10b2FzdC0taW4pXG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBUcmlnZ2VyIGJlZm9yZURlc3Ryb3kgbGlmZWN5Y2xlLiBSZW1vdmVzIHRvYXN0XG4gICAqL1xuICBvblJlbW92ZSgpIHtcbiAgICB0aGlzLnN0YXRlLmlzRGVzdHJveWluZyA9IHRydWU7XG4gICAgdGhpcy50b2FzdC5ldmVudEVtaXR0ZXIubmV4dChTbm90aWZpcmVFdmVudFR5cGUuQkVGT1JFX0hJREUpO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VkLmVtaXQoU25vdGlmaXJlRXZlbnRUeXBlLkJFRk9SRV9ISURFKTtcbiAgICB0aGlzLnN0YXRlLmFuaW1hdGlvbiA9XG4gICAgICAodGhpcy50b2FzdC5jb25maWcgJiZcbiAgICAgICAgdGhpcy50b2FzdC5jb25maWcuYW5pbWF0aW9uICYmXG4gICAgICAgIHRoaXMudG9hc3QuY29uZmlnLmFuaW1hdGlvbi5leGl0KSB8fFxuICAgICAgJyc7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnN0YXRlQ2hhbmdlZC5lbWl0KFNub3RpZmlyZUV2ZW50VHlwZS5ISURERU4pO1xuICAgICAgdGhpcy5zdGF0ZS5hbmltYXRpb24gPSAnbm90aWZpcmUtdG9hc3QtLW91dCc7XG4gICAgICB0aGlzLnRvYXN0LmV2ZW50RW1pdHRlci5uZXh0KFNub3RpZmlyZUV2ZW50VHlwZS5ISURERU4pO1xuICAgICAgc2V0VGltZW91dChcbiAgICAgICAgKCkgPT4gdGhpcy5zZXJ2aWNlLnJlbW92ZSh0aGlzLnRvYXN0LmlkLCB0cnVlKSxcbiAgICAgICAgdGhpcy50b2FzdC5jb25maWcgJiZcbiAgICAgICAgICB0aGlzLnRvYXN0LmNvbmZpZy5hbmltYXRpb24gJiZcbiAgICAgICAgICB0aGlzLnRvYXN0LmNvbmZpZy5hbmltYXRpb24udGltZSAvIDJcbiAgICAgICk7XG4gICAgfSwgdGhpcy50b2FzdC5jb25maWcgJiYgdGhpcy50b2FzdC5jb25maWcuYW5pbWF0aW9uICYmIHRoaXMudG9hc3QuY29uZmlnLmFuaW1hdGlvbi50aW1lIC8gMik7XG4gIH1cbiAgLyoqXG4gICAqIFRyaWdnZXIgT25DbGljayBsaWZlY3ljbGVcbiAgICovXG4gIG9uQ2xpY2soKSB7XG4gICAgdGhpcy50b2FzdC5ldmVudEVtaXR0ZXIubmV4dChTbm90aWZpcmVFdmVudFR5cGUuQ0xJQ0spO1xuICAgIGlmICh0aGlzLnRvYXN0ICYmIHRoaXMudG9hc3QuY29uZmlnICYmIHRoaXMudG9hc3QuY29uZmlnLmNsb3NlT25DbGljaykge1xuICAgICAgdGhpcy5zZXJ2aWNlLnJlbW92ZSh0aGlzLnRvYXN0LmlkKTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIFRyaWdnZXIgb25Ib3ZlckVudGVyIGxpZmVjeWNsZVxuICAgKi9cbiAgb25Nb3VzZUVudGVyKCkge1xuICAgIHRoaXMudG9hc3QuZXZlbnRFbWl0dGVyLm5leHQoU25vdGlmaXJlRXZlbnRUeXBlLk1PVVNFX0VOVEVSKTtcbiAgICBpZiAodGhpcy50b2FzdCAmJiB0aGlzLnRvYXN0LmNvbmZpZyAmJiB0aGlzLnRvYXN0LmNvbmZpZy5wYXVzZU9uSG92ZXIpIHtcbiAgICAgIHRoaXMuc3RhdGUucGF1c2VkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVHJpZ2dlciBvbkhvdmVyTGVhdmUgbGlmZWN5Y2xlXG4gICAqL1xuICBvbk1vdXNlTGVhdmUoKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy50b2FzdCAmJlxuICAgICAgdGhpcy50b2FzdC5jb25maWcgJiZcbiAgICAgIHRoaXMudG9hc3QuY29uZmlnLnBhdXNlT25Ib3ZlciAmJlxuICAgICAgdGhpcy50b2FzdC5jb25maWcudGltZW91dFxuICAgICkge1xuICAgICAgdGhpcy5zdGF0ZS5wYXVzZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMuc3RhcnRUaW1lb3V0KHRoaXMudG9hc3QuY29uZmlnLnRpbWVvdXQgKiB0aGlzLnN0YXRlLnByb2dyZXNzKTtcbiAgICB9XG4gICAgdGhpcy50b2FzdC5ldmVudEVtaXR0ZXIubmV4dChTbm90aWZpcmVFdmVudFR5cGUuTU9VU0VfTEVBVkUpO1xuICB9XG4gIC8qKlxuICAgKiBSZW1vdmUgdG9hc3QgY29tcGxldGVseSBhZnRlciBhbmltYXRpb25cbiAgICovXG4gIG9uRXhpdFRyYW5zaXRpb25FbmQoKSB7XG4gICAgaWYgKHRoaXMuc3RhdGUuaXNEZXN0cm95aW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW5pdFRvYXN0KCk7XG4gICAgdGhpcy50b2FzdC5ldmVudEVtaXR0ZXIubmV4dChTbm90aWZpcmVFdmVudFR5cGUuU0hPV04pO1xuICB9XG5cbiAgLypcbiAgIENvbW1vblxuICAgKi9cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSBiYXNlIHRvYXN0IGNvbmZpZ1xuICAgKlxuICAgKi9cbiAgaW5pdFRvYXN0KCk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgICh0aGlzLnRvYXN0ICYmIHRoaXMudG9hc3QuY29uZmlnICYmIHRoaXMudG9hc3QuY29uZmlnLnRpbWVvdXRcbiAgICAgICAgPyB0aGlzLnRvYXN0LmNvbmZpZy50aW1lb3V0XG4gICAgICAgIDogMCkgPiAwXG4gICAgKSB7XG4gICAgICB0aGlzLnN0YXJ0VGltZW91dCgwKTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIFN0YXJ0IHByb2dyZXNzIGJhclxuICAgKiBAcGFyYW0gc3RhcnRUaW1lIG51bWJlclxuICAgKi9cbiAgc3RhcnRUaW1lb3V0KHN0YXJ0VGltZTogbnVtYmVyID0gMCkge1xuICAgIGNvbnN0IHN0YXJ0ID0gcGVyZm9ybWFuY2Uubm93KCk7XG4gICAgY29uc3QgY2FsY3VsYXRlID0gKCkgPT4ge1xuICAgICAgdGhpcy5hbmltYXRpb25GcmFtZSA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgodGltZXN0YW1wKSA9PiB7XG4gICAgICAgIGNvbnN0IHJ1bnRpbWUgPSB0aW1lc3RhbXAgKyBzdGFydFRpbWUgLSBzdGFydDtcbiAgICAgICAgY29uc3QgcHJvZ3Jlc3MgPSBNYXRoLm1pbihcbiAgICAgICAgICBydW50aW1lIC9cbiAgICAgICAgICAgICh0aGlzLnRvYXN0ICYmIHRoaXMudG9hc3QuY29uZmlnICYmIHRoaXMudG9hc3QuY29uZmlnLnRpbWVvdXRcbiAgICAgICAgICAgICAgPyB0aGlzLnRvYXN0LmNvbmZpZy50aW1lb3V0XG4gICAgICAgICAgICAgIDogMSksXG4gICAgICAgICAgMVxuICAgICAgICApO1xuICAgICAgICBpZiAodGhpcy5zdGF0ZS5wYXVzZWQpIHtcbiAgICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLmFuaW1hdGlvbkZyYW1lKTtcbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICBydW50aW1lIDxcbiAgICAgICAgICAodGhpcy50b2FzdCAmJiB0aGlzLnRvYXN0LmNvbmZpZyAmJiB0aGlzLnRvYXN0LmNvbmZpZy50aW1lb3V0XG4gICAgICAgICAgICA/IHRoaXMudG9hc3QuY29uZmlnLnRpbWVvdXRcbiAgICAgICAgICAgIDogMSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5zdGF0ZS5wcm9ncmVzcyA9IHByb2dyZXNzO1xuICAgICAgICAgIGNhbGN1bGF0ZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc3RhdGUucHJvZ3Jlc3MgPSAxO1xuICAgICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuYW5pbWF0aW9uRnJhbWUpO1xuICAgICAgICAgIHRoaXMuc2VydmljZS5yZW1vdmUodGhpcy50b2FzdC5pZCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH07XG4gICAgY2FsY3VsYXRlKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnVuc3Vic2NyaWJlJC5uZXh0KCk7XG4gICAgdGhpcy51bnN1YnNjcmliZSQuY29tcGxldGUoKTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cInRvYXN0ICYmIHRvYXN0LmNvbmZpZ1wiPlxuICAgIDxkaXZcbiAgICAgICAgW2F0dHIucm9sZV09XCJ0b2FzdC5jb25maWcudHlwZSA9PT0gc3RhdGUucHJvbXB0VHlwZSA/ICdkaWFsb2cnIDogJ2FsZXJ0J1wiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCInc25vdGlmeV8nICsgdG9hc3QuaWRcIlxuICAgICAgICBbYXR0ci5hcmlhLW1vZGFsXT1cInRvYXN0LmNvbmZpZy50eXBlID09PSBzdGF0ZS5wcm9tcHRUeXBlXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiW1xuICAnbm90aWZpcmUtdG9hc3QgYW5pbWF0ZWQnLFxuICAnc25vdGlmeS0nICsgdG9hc3QuY29uZmlnLnR5cGUsXG4gIHN0YXRlLmFuaW1hdGlvbiwgIHRvYXN0LnZhbGlkID09PSB1bmRlZmluZWQgPyAnJyA6IHRvYXN0LnZhbGlkID8gJ3Nub3RpZnlUb2FzdC0tdmFsaWQnIDogJ3Nub3RpZnlUb2FzdC0taW52YWxpZCdcbl1cIlxuICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICctd2Via2l0LXRyYW5zaXRpb24nOiB0b2FzdC5jb25maWcuYW5pbWF0aW9uICYmIHRvYXN0LmNvbmZpZy5hbmltYXRpb24udGltZSAgKyAnbXMnLFxuICB0cmFuc2l0aW9uOiAgdG9hc3QuY29uZmlnLmFuaW1hdGlvbiAmJiB0b2FzdC5jb25maWcuYW5pbWF0aW9uLnRpbWUgKyAnbXMnLFxuICAnLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb24nOiAgdG9hc3QuY29uZmlnLmFuaW1hdGlvbiAmJiAgdG9hc3QuY29uZmlnLmFuaW1hdGlvbi50aW1lICsgJ21zJyxcbiAgJ2FuaW1hdGlvbi1kdXJhdGlvbic6ICB0b2FzdC5jb25maWcuYW5pbWF0aW9uICYmIHRvYXN0LmNvbmZpZy5hbmltYXRpb24udGltZSArICdtcydcbn1cIlxuICAgICAgICAoYW5pbWF0aW9uZW5kKT1cIm9uRXhpdFRyYW5zaXRpb25FbmQoKVwiXG4gICAgICAgIChjbGljayk9XCJvbkNsaWNrKClcIlxuICAgICAgICAobW91c2VlbnRlcik9XCJvbk1vdXNlRW50ZXIoKVwiXG4gICAgICAgIChtb3VzZWxlYXZlKT1cIm9uTW91c2VMZWF2ZSgpXCJcbiAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwibm90aWZpcmUtdG9hc3RfX3Byb2dyZXNzQmFyXCJcbiAgICAgICAgICAgICpuZ0lmPVwidG9hc3QuY29uZmlnLnNob3dQcm9ncmVzc0JhclwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJub3RpZmlyZS10b2FzdF9fcHJvZ3Jlc3NCYXJfX3BlcmNlbnRhZ2VcIlxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgd2lkdGg6IHN0YXRlLnByb2dyZXNzICogMTAwICsgJyUnIH1cIlxuICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwibm90aWZpcmUtdG9hc3RfX2lubmVyXCJcbiAgICAgICAgICAgICpuZ0lmPVwiIXRvYXN0LmNvbmZpZy5odG1sOyBlbHNlIHRvYXN0SFRNTFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm5vdGlmaXJlLXRvYXN0X190aXRsZVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuaWRdPVwiJ3Nub3RpZnlfJyArIHRvYXN0LmlkXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInRvYXN0LnRpdGxlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyB0b2FzdC50aXRsZSB8IHRydW5jYXRlOiB0b2FzdC5jb25maWcudGl0bGVNYXhMZW5ndGggfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibm90aWZpcmUtdG9hc3RfX2JvZHlcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwidG9hc3QuYm9keVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgdG9hc3QuYm9keSB8IHRydW5jYXRlOiB0b2FzdC5jb25maWcuYm9keU1heExlbmd0aCB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8bmd4LXNub3RpZnktcHJvbXB0XG4gICAgICAgICAgICAgICAgKm5nSWY9XCJ0b2FzdC5jb25maWcudHlwZSA9PT0gc3RhdGUucHJvbXB0VHlwZVwiXG4gICAgICAgICAgICAgICAgW3RvYXN0XT1cInRvYXN0XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbmd4LXNub3RpZnktcHJvbXB0PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIXRvYXN0LmNvbmZpZy5pY29uOyBlbHNlIGVsc2VCbG9ja1wiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiWydzbm90aWZpcmUtaWNvbicsIHRvYXN0LmNvbmZpZy5pY29uQ2xhc3MgfHwgJ3Nub3RpZmlyZS1pY29uLS0nICsgdG9hc3QuY29uZmlnLnR5cGVdXCJcbiAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZWxzZUJsb2NrPlxuICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzbm90aWZpcmUtaWNvblwiXG4gICAgICAgICAgICAgICAgICAgIFtzcmNdPVwidG9hc3QuY29uZmlnLmljb25cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctdGVtcGxhdGUgI3RvYXN0SFRNTD5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm5vdGlmaXJlLXRvYXN0X19pbm5lclwiXG4gICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJ0b2FzdC5jb25maWcuaHRtbFwiXG4gICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxub3RpZmlyZS1idXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwidG9hc3QuY29uZmlnLmJ1dHRvbnNcIlxuICAgICAgICAgICAgW3RvYXN0XT1cInRvYXN0XCJcbiAgICAgICAgPjwvbm90aWZpcmUtYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG4iXX0=
185
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNub3RpZmlyZS9zcmMvbGliL2NvbXBvbmVudHMvdG9hc3QvdG9hc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNub3RpZmlyZS9zcmMvbGliL2NvbXBvbmVudHMvdG9hc3QvdG9hc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7Ozs7OztBQVNqRSxNQUFNLE9BQU8sY0FBYztJQXlCekIsWUFBNkIsT0FBeUI7UUFBekIsWUFBTyxHQUFQLE9BQU8sQ0FBa0I7UUF4QjlDLGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQU1qQyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFzQixDQUFDO1FBT2hFOztXQUVHO1FBQ0gsVUFBSyxHQUFHO1lBQ04sTUFBTSxFQUFFLEtBQUs7WUFDYixRQUFRLEVBQUUsQ0FBQztZQUNYLFNBQVMsRUFBRSxFQUFFO1lBQ2IsWUFBWSxFQUFFLEtBQUs7WUFDbkIsVUFBVSxFQUFFLGFBQWEsQ0FBQyxNQUFNO1NBQ2pDLENBQUM7SUFFdUQsQ0FBQztJQUUxRCxRQUFRO1FBQ04sSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZO2FBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ2xDLFNBQVMsQ0FBQyxDQUFDLEtBQTBCLEVBQUUsRUFBRTtZQUN4QyxJ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QVMsRUFBRSxDQUFDO2lCQUNiO3FCQUFNO29CQUNMLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztvQkFDeEIsb0JBQW9CLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO29CQUMxQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2lCQUNwQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDO1FBQ0YsU0FBUyxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMvQixDQUFDOzhHQWhNVSxjQUFjO2tHQUFkLGNBQWMsd0hDbkIzQix1M0ZBMkVBOzsyRkR4RGEsY0FBYztrQkFMMUIsU0FBUzsrQkFDRSxXQUFXLGlCQUVOLGlCQUFpQixDQUFDLElBQUk7cUZBUTVCLEtBQUs7c0JBQWIsS0FBSztnQkFDSSxZQUFZO3NCQUFyQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNub3RpZmlyZUV2ZW50VHlwZSwgU25vdGlmaXJlVHlwZSB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBTbm90aWZpcmVUb2FzdE1vZGVsIH0gZnJvbSAnLi9ub3RpZmlyZS10b2FzdC5tb2RlbCc7XG5pbXBvcnQgeyBTbm90aWZpcmVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ3gtdG9hc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vdG9hc3QuY29tcG9uZW50Lmh0bWwnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBUb2FzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSB1bnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBHZXQgdG9hc3QgZnJvbSBub3RpZmljYXRpb25zIGFycmF5XG4gICAqL1xuICBASW5wdXQoKSB0b2FzdCE6IFNub3RpZmlyZVRvYXN0TW9kZWw7XG4gIEBPdXRwdXQoKSBzdGF0ZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFNub3RpZmlyZUV2ZW50VHlwZT4oKTtcblxuICAvKipcbiAgICogcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGlkXG4gICAqL1xuICBhbmltYXRpb25GcmFtZSE6IG51bWJlcjtcblxuICAvKipcbiAgICogVG9hc3Qgc3RhdGVcbiAgICovXG4gIHN0YXRlID0ge1xuICAgIHBhdXNlZDogZmFsc2UsXG4gICAgcHJvZ3Jlc3M6IDAsXG4gICAgYW5pbWF0aW9uOiAnJyxcbiAgICBpc0Rlc3Ryb3lpbmc6IGZhbHNlLFxuICAgIHByb21wdFR5cGU6IFNub3RpZmlyZVR5cGUuUFJPTVBULFxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgc2VydmljZTogU25vdGlmaXJlU2VydmljZSkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlcnZpY2UudG9hc3RDaGFuZ2VkXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpKVxuICAgICAgLnN1YnNjcmliZSgodG9hc3Q6IFNub3RpZmlyZVRvYXN0TW9kZWwpID0+IHtcbiAgICAgICAgaWYgKHRoaXMudG9hc3QuaWQgPT09IHRvYXN0LmlkKSB7XG4gICAgICAgICAgdGhpcy5pbml0VG9hc3QoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICB0aGlzLnNlcnZpY2UudG9hc3REZWxldGVkXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpKVxuICAgICAgLnN1YnNjcmliZSgoaWQpID0+IHtcbiAgICAgICAgaWYgKHRoaXMudG9hc3QuaWQgPT09IGlkKSB7XG4gICAgICAgICAgdGhpcy5vblJlbW92ZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICBpZiAodGhpcy50b2FzdCAmJiB0aGlzLnRvYXN0LmNvbmZpZyAmJiAhdGhpcy50b2FzdC5jb25maWcudGltZW91dCkge1xuICAgICAgdGhpcy50b2FzdC5jb25maWcuc2hvd1Byb2dyZXNzQmFyID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy50b2FzdC5ldmVudEVtaXR0ZXIubmV4dChTbm90aWZpcmVFdmVudFR5cGUuTU9VTlRFRCk7XG4gICAgdGhpcy5zdGF0ZS5hbmltYXRpb24gPSAnbm90aWZpcmUtdG9hc3QtLWluJztcbiAgfVxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5zZXJ2aWNlLmRlZmF1bHRDb25maWcuc25vdGlmaXJlQ29uZmlnICYmXG4gICAgICB0aGlzLnNlcnZpY2UuZGVmYXVsdENvbmZpZy5zbm90aWZpcmVDb25maWcuYW5pbWF0aW9uXG4gICAgKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZWQuZW1pdChTbm90aWZpcmVFdmVudFR5cGUuQkVGT1JFX1NIT1cpO1xuICAgICAgICB0aGlzLnRvYXN0LmV2ZW50RW1pdHRlci5uZXh0KFNub3RpZmlyZUV2ZW50VHlwZS5CRUZPUkVfU0hPVyk7XG4gICAgICAgIHRoaXMuc3RhdGUuYW5pbWF0aW9uID1cbiAgICAgICAgICB0aGlzLnRvYXN0LmNvbmZpZyAmJlxuICAgICAgICAgIHRoaXMudG9hc3QuY29uZmlnLmFuaW1hdGlvbiAmJlxuICAgICAgICAgIHRoaXMudG9hc3QuY29uZmlnLmFuaW1hdGlvbi5lbnRlclxuICAgICAgICAgICAgPyB0aGlzLnRvYXN0LmNvbmZpZy5hbmltYXRpb24uZW50ZXJcbiAgICAgICAgICAgIDogJyc7XG4gICAgICB9LCB0aGlzLnNlcnZpY2UuZGVmYXVsdENvbmZpZy5zbm90aWZpcmVDb25maWcuYW5pbWF0aW9uLnRpbWUgLyA1KTsgLy8gdGltZSB0byBzaG93IHRvYXN0IHB1c2ggYW5pbWF0aW9uIChub3RpZmlyZS10b2FzdC0taW4pXG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBUcmlnZ2VyIGJlZm9yZURlc3Ryb3kgbGlmZWN5Y2xlLiBSZW1vdmVzIHRvYXN0XG4gICAqL1xuICBvblJlbW92ZSgpIHtcbiAgICB0aGlzLnN0YXRlLmlzRGVzdHJveWluZyA9IHRydWU7XG4gICAgdGhpcy50b2FzdC5ldmVudEVtaXR0ZXIubmV4dChTbm90aWZpcmVFdmVudFR5cGUuQkVGT1JFX0hJREUpO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VkLmVtaXQoU25vdGlmaXJlRXZlbnRUeXBlLkJFRk9SRV9ISURFKTtcbiAgICB0aGlzLnN0YXRlLmFuaW1hdGlvbiA9XG4gICAgICAodGhpcy50b2FzdC5jb25maWcgJiZcbiAgICAgICAgdGhpcy50b2FzdC5jb25maWcuYW5pbWF0aW9uICYmXG4gICAgICAgIHRoaXMudG9hc3QuY29uZmlnLmFuaW1hdGlvbi5leGl0KSB8fFxuICAgICAgJyc7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnN0YXRlQ2hhbmdlZC5lbWl0KFNub3RpZmlyZUV2ZW50VHlwZS5ISURERU4pO1xuICAgICAgdGhpcy5zdGF0ZS5hbmltYXRpb24gPSAnbm90aWZpcmUtdG9hc3QtLW91dCc7XG4gICAgICB0aGlzLnRvYXN0LmV2ZW50RW1pdHRlci5uZXh0KFNub3RpZmlyZUV2ZW50VHlwZS5ISURERU4pO1xuICAgICAgc2V0VGltZW91dChcbiAgICAgICAgKCkgPT4gdGhpcy5zZXJ2aWNlLnJlbW92ZSh0aGlzLnRvYXN0LmlkLCB0cnVlKSxcbiAgICAgICAgdGhpcy50b2FzdC5jb25maWcgJiZcbiAgICAgICAgICB0aGlzLnRvYXN0LmNvbmZpZy5hbmltYXRpb24gJiZcbiAgICAgICAgICB0aGlzLnRvYXN0LmNvbmZpZy5hbmltYXRpb24udGltZSAvIDJcbiAgICAgICk7XG4gICAgfSwgdGhpcy50b2FzdC5jb25maWcgJiYgdGhpcy50b2FzdC5jb25maWcuYW5pbWF0aW9uICYmIHRoaXMudG9hc3QuY29uZmlnLmFuaW1hdGlvbi50aW1lIC8gMik7XG4gIH1cbiAgLyoqXG4gICAqIFRyaWdnZXIgT25DbGljayBsaWZlY3ljbGVcbiAgICovXG4gIG9uQ2xpY2soKSB7XG4gICAgdGhpcy50b2FzdC5ldmVudEVtaXR0ZXIubmV4dChTbm90aWZpcmVFdmVudFR5cGUuQ0xJQ0spO1xuICAgIGlmICh0aGlzLnRvYXN0ICYmIHRoaXMudG9hc3QuY29uZmlnICYmIHRoaXMudG9hc3QuY29uZmlnLmNsb3NlT25DbGljaykge1xuICAgICAgdGhpcy5zZXJ2aWNlLnJlbW92ZSh0aGlzLnRvYXN0LmlkKTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIFRyaWdnZXIgb25Ib3ZlckVudGVyIGxpZmVjeWNsZVxuICAgKi9cbiAgb25Nb3VzZUVudGVyKCkge1xuICAgIHRoaXMudG9hc3QuZXZlbnRFbWl0dGVyLm5leHQoU25vdGlmaXJlRXZlbnRUeXBlLk1PVVNFX0VOVEVSKTtcbiAgICBpZiAodGhpcy50b2FzdCAmJiB0aGlzLnRvYXN0LmNvbmZpZyAmJiB0aGlzLnRvYXN0LmNvbmZpZy5wYXVzZU9uSG92ZXIpIHtcbiAgICAgIHRoaXMuc3RhdGUucGF1c2VkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVHJpZ2dlciBvbkhvdmVyTGVhdmUgbGlmZWN5Y2xlXG4gICAqL1xuICBvbk1vdXNlTGVhdmUoKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy50b2FzdCAmJlxuICAgICAgdGhpcy50b2FzdC5jb25maWcgJiZcbiAgICAgIHRoaXMudG9hc3QuY29uZmlnLnBhdXNlT25Ib3ZlciAmJlxuICAgICAgdGhpcy50b2FzdC5jb25maWcudGltZW91dFxuICAgICkge1xuICAgICAgdGhpcy5zdGF0ZS5wYXVzZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMuc3RhcnRUaW1lb3V0KHRoaXMudG9hc3QuY29uZmlnLnRpbWVvdXQgKiB0aGlzLnN0YXRlLnByb2dyZXNzKTtcbiAgICB9XG4gICAgdGhpcy50b2FzdC5ldmVudEVtaXR0ZXIubmV4dChTbm90aWZpcmVFdmVudFR5cGUuTU9VU0VfTEVBVkUpO1xuICB9XG4gIC8qKlxuICAgKiBSZW1vdmUgdG9hc3QgY29tcGxldGVseSBhZnRlciBhbmltYXRpb25cbiAgICovXG4gIG9uRXhpdFRyYW5zaXRpb25FbmQoKSB7XG4gICAgaWYgKHRoaXMuc3RhdGUuaXNEZXN0cm95aW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW5pdFRvYXN0KCk7XG4gICAgdGhpcy50b2FzdC5ldmVudEVtaXR0ZXIubmV4dChTbm90aWZpcmVFdmVudFR5cGUuU0hPV04pO1xuICB9XG5cbiAgLypcbiAgIENvbW1vblxuICAgKi9cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSBiYXNlIHRvYXN0IGNvbmZpZ1xuICAgKlxuICAgKi9cbiAgaW5pdFRvYXN0KCk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgICh0aGlzLnRvYXN0ICYmIHRoaXMudG9hc3QuY29uZmlnICYmIHRoaXMudG9hc3QuY29uZmlnLnRpbWVvdXRcbiAgICAgICAgPyB0aGlzLnRvYXN0LmNvbmZpZy50aW1lb3V0XG4gICAgICAgIDogMCkgPiAwXG4gICAgKSB7XG4gICAgICB0aGlzLnN0YXJ0VGltZW91dCgwKTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIFN0YXJ0IHByb2dyZXNzIGJhclxuICAgKiBAcGFyYW0gc3RhcnRUaW1lIG51bWJlclxuICAgKi9cbiAgc3RhcnRUaW1lb3V0KHN0YXJ0VGltZTogbnVtYmVyID0gMCkge1xuICAgIGNvbnN0IHN0YXJ0ID0gcGVyZm9ybWFuY2Uubm93KCk7XG4gICAgY29uc3QgY2FsY3VsYXRlID0gKCkgPT4ge1xuICAgICAgdGhpcy5hbmltYXRpb25GcmFtZSA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgodGltZXN0YW1wKSA9PiB7XG4gICAgICAgIGNvbnN0IHJ1bnRpbWUgPSB0aW1lc3RhbXAgKyBzdGFydFRpbWUgLSBzdGFydDtcbiAgICAgICAgY29uc3QgcHJvZ3Jlc3MgPSBNYXRoLm1pbihcbiAgICAgICAgICBydW50aW1lIC9cbiAgICAgICAgICAgICh0aGlzLnRvYXN0ICYmIHRoaXMudG9hc3QuY29uZmlnICYmIHRoaXMudG9hc3QuY29uZmlnLnRpbWVvdXRcbiAgICAgICAgICAgICAgPyB0aGlzLnRvYXN0LmNvbmZpZy50aW1lb3V0XG4gICAgICAgICAgICAgIDogMSksXG4gICAgICAgICAgMVxuICAgICAgICApO1xuICAgICAgICBpZiAodGhpcy5zdGF0ZS5wYXVzZWQpIHtcbiAgICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLmFuaW1hdGlvbkZyYW1lKTtcbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICBydW50aW1lIDxcbiAgICAgICAgICAodGhpcy50b2FzdCAmJiB0aGlzLnRvYXN0LmNvbmZpZyAmJiB0aGlzLnRvYXN0LmNvbmZpZy50aW1lb3V0XG4gICAgICAgICAgICA/IHRoaXMudG9hc3QuY29uZmlnLnRpbWVvdXRcbiAgICAgICAgICAgIDogMSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5zdGF0ZS5wcm9ncmVzcyA9IHByb2dyZXNzO1xuICAgICAgICAgIGNhbGN1bGF0ZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc3RhdGUucHJvZ3Jlc3MgPSAxO1xuICAgICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuYW5pbWF0aW9uRnJhbWUpO1xuICAgICAgICAgIHRoaXMuc2VydmljZS5yZW1vdmUodGhpcy50b2FzdC5pZCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH07XG4gICAgY2FsY3VsYXRlKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnVuc3Vic2NyaWJlJC5uZXh0KCk7XG4gICAgdGhpcy51bnN1YnNjcmliZSQuY29tcGxldGUoKTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cInRvYXN0ICYmIHRvYXN0LmNvbmZpZ1wiPlxuICAgIDxkaXZcbiAgICAgICAgW2F0dHIucm9sZV09XCJ0b2FzdC5jb25maWcudHlwZSA9PT0gc3RhdGUucHJvbXB0VHlwZSA/ICdkaWFsb2cnIDogJ2FsZXJ0J1wiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCInc25vdGlmeV8nICsgdG9hc3QuaWRcIlxuICAgICAgICBbYXR0ci5hcmlhLW1vZGFsXT1cInRvYXN0LmNvbmZpZy50eXBlID09PSBzdGF0ZS5wcm9tcHRUeXBlXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiW1xuICAnbm90aWZpcmUtdG9hc3QgYW5pbWF0ZWQnLFxuICAnc25vdGlmeS0nICsgdG9hc3QuY29uZmlnLnR5cGUsXG4gIHN0YXRlLmFuaW1hdGlvbiwgIHRvYXN0LnZhbGlkID09PSB1bmRlZmluZWQgPyAnJyA6IHRvYXN0LnZhbGlkID8gJ3Nub3RpZnlUb2FzdC0tdmFsaWQnIDogJ3Nub3RpZnlUb2FzdC0taW52YWxpZCdcbl1cIlxuICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICctd2Via2l0LXRyYW5zaXRpb24nOiB0b2FzdC5jb25maWcuYW5pbWF0aW9uICYmIHRvYXN0LmNvbmZpZy5hbmltYXRpb24udGltZSAgKyAnbXMnLFxuICB0cmFuc2l0aW9uOiAgdG9hc3QuY29uZmlnLmFuaW1hdGlvbiAmJiB0b2FzdC5jb25maWcuYW5pbWF0aW9uLnRpbWUgKyAnbXMnLFxuICAnLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb24nOiAgdG9hc3QuY29uZmlnLmFuaW1hdGlvbiAmJiAgdG9hc3QuY29uZmlnLmFuaW1hdGlvbi50aW1lICsgJ21zJyxcbiAgJ2FuaW1hdGlvbi1kdXJhdGlvbic6ICB0b2FzdC5jb25maWcuYW5pbWF0aW9uICYmIHRvYXN0LmNvbmZpZy5hbmltYXRpb24udGltZSArICdtcydcbn1cIlxuICAgICAgICAoYW5pbWF0aW9uZW5kKT1cIm9uRXhpdFRyYW5zaXRpb25FbmQoKVwiXG4gICAgICAgIChjbGljayk9XCJvbkNsaWNrKClcIlxuICAgICAgICAobW91c2VlbnRlcik9XCJvbk1vdXNlRW50ZXIoKVwiXG4gICAgICAgIChtb3VzZWxlYXZlKT1cIm9uTW91c2VMZWF2ZSgpXCJcbiAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwibm90aWZpcmUtdG9hc3RfX3Byb2dyZXNzQmFyXCJcbiAgICAgICAgICAgICpuZ0lmPVwidG9hc3QuY29uZmlnLnNob3dQcm9ncmVzc0JhclwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJub3RpZmlyZS10b2FzdF9fcHJvZ3Jlc3NCYXJfX3BlcmNlbnRhZ2VcIlxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgd2lkdGg6IHN0YXRlLnByb2dyZXNzICogMTAwICsgJyUnIH1cIlxuICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwibm90aWZpcmUtdG9hc3RfX2lubmVyXCJcbiAgICAgICAgICAgICpuZ0lmPVwiIXRvYXN0LmNvbmZpZy5odG1sOyBlbHNlIHRvYXN0SFRNTFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm5vdGlmaXJlLXRvYXN0X190aXRsZVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuaWRdPVwiJ3Nub3RpZnlfJyArIHRvYXN0LmlkXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInRvYXN0LnRpdGxlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyB0b2FzdC50aXRsZSB8IHRydW5jYXRlOiB0b2FzdC5jb25maWcudGl0bGVNYXhMZW5ndGggfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibm90aWZpcmUtdG9hc3RfX2JvZHlcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwidG9hc3QuYm9keVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgdG9hc3QuYm9keSB8IHRydW5jYXRlOiB0b2FzdC5jb25maWcuYm9keU1heExlbmd0aCB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8bmd4LXNub3RpZnktcHJvbXB0XG4gICAgICAgICAgICAgICAgKm5nSWY9XCJ0b2FzdC5jb25maWcudHlwZSA9PT0gc3RhdGUucHJvbXB0VHlwZVwiXG4gICAgICAgICAgICAgICAgW3RvYXN0XT1cInRvYXN0XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbmd4LXNub3RpZnktcHJvbXB0PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIXRvYXN0LmNvbmZpZy5pY29uOyBlbHNlIGVsc2VCbG9ja1wiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiWydzbm90aWZpcmUtaWNvbicsIHRvYXN0LmNvbmZpZy5pY29uQ2xhc3MgfHwgJ3Nub3RpZmlyZS1pY29uLS0nICsgdG9hc3QuY29uZmlnLnR5cGVdXCJcbiAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZWxzZUJsb2NrPlxuICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzbm90aWZpcmUtaWNvblwiXG4gICAgICAgICAgICAgICAgICAgIFtzcmNdPVwidG9hc3QuY29uZmlnLmljb25cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctdGVtcGxhdGUgI3RvYXN0SFRNTD5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm5vdGlmaXJlLXRvYXN0X19pbm5lclwiXG4gICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJ0b2FzdC5jb25maWcuaHRtbFwiXG4gICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxub3RpZmlyZS1idXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwidG9hc3QuY29uZmlnLmJ1dHRvbnNcIlxuICAgICAgICAgICAgW3RvYXN0XT1cInRvYXN0XCJcbiAgICAgICAgPjwvbm90aWZpcmUtYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG4iXX0=
@@ -11,16 +11,16 @@ export class NgxSnotifireModule {
11
11
  providers: [SnotifireService],
12
12
  };
13
13
  }
14
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgxSnotifireModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
15
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: NgxSnotifireModule, declarations: [PromptComponent,
14
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: NgxSnotifireModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
15
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.3", ngImport: i0, type: NgxSnotifireModule, declarations: [PromptComponent,
16
16
  ToastComponent,
17
17
  ButtonsComponent,
18
18
  TruncatePipe,
19
19
  KeysPipe,
20
20
  NgxSnotifireComponent], imports: [CommonModule], exports: [NgxSnotifireComponent] }); }
21
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgxSnotifireModule, imports: [CommonModule] }); }
21
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: NgxSnotifireModule, imports: [CommonModule] }); }
22
22
  }
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgxSnotifireModule, decorators: [{
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: NgxSnotifireModule, decorators: [{
24
24
  type: NgModule,
25
25
  args: [{
26
26
  declarations: [
@@ -35,4 +35,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
35
35
  exports: [NgxSnotifireComponent],
36
36
  }]
37
37
  }] });
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXNub3RpZmlyZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc25vdGlmaXJlL3NyYy9saWIvbmd4LXNub3RpZmlyZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIscUJBQXFCLEVBQ3JCLGVBQWUsRUFDZixjQUFjLEdBQ2YsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDakQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sWUFBWSxDQUFDOztBQWM5QyxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLE1BQU0sQ0FBQyxPQUFPO1FBQ1osT0FBTztZQUNMLFFBQVEsRUFBRSxrQkFBa0I7WUFDNUIsU0FBUyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7U0FDOUIsQ0FBQztJQUNKLENBQUM7K0dBTlUsa0JBQWtCO2dIQUFsQixrQkFBa0IsaUJBVjNCLGVBQWU7WUFDZixjQUFjO1lBQ2QsZ0JBQWdCO1lBQ2hCLFlBQVk7WUFDWixRQUFRO1lBQ1IscUJBQXFCLGFBRWIsWUFBWSxhQUNaLHFCQUFxQjtnSEFFcEIsa0JBQWtCLFlBSG5CLFlBQVk7OzRGQUdYLGtCQUFrQjtrQkFaOUIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osZUFBZTt3QkFDZixjQUFjO3dCQUNkLGdCQUFnQjt3QkFDaEIsWUFBWTt3QkFDWixRQUFRO3dCQUNSLHFCQUFxQjtxQkFDdEI7b0JBQ0QsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixPQUFPLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztpQkFDakMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEJ1dHRvbnNDb21wb25lbnQsXG4gIE5neFNub3RpZmlyZUNvbXBvbmVudCxcbiAgUHJvbXB0Q29tcG9uZW50LFxuICBUb2FzdENvbXBvbmVudCxcbn0gZnJvbSAnLi9jb21wb25lbnRzJztcbmltcG9ydCB7IEtleXNQaXBlLCBUcnVuY2F0ZVBpcGUgfSBmcm9tICcuL3BpcGVzJztcbmltcG9ydCB7IFNub3RpZmlyZVNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgUHJvbXB0Q29tcG9uZW50LFxuICAgIFRvYXN0Q29tcG9uZW50LFxuICAgIEJ1dHRvbnNDb21wb25lbnQsXG4gICAgVHJ1bmNhdGVQaXBlLFxuICAgIEtleXNQaXBlLFxuICAgIE5neFNub3RpZmlyZUNvbXBvbmVudCxcbiAgXSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIGV4cG9ydHM6IFtOZ3hTbm90aWZpcmVDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3hTbm90aWZpcmVNb2R1bGUge1xuICBzdGF0aWMgZm9yUm9vdCgpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPE5neFNub3RpZmlyZU1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogTmd4U25vdGlmaXJlTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbU25vdGlmaXJlU2VydmljZV0sXG4gICAgfTtcbiAgfVxufVxuIl19
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXNub3RpZmlyZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc25vdGlmaXJlL3NyYy9saWIvbmd4LXNub3RpZmlyZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIscUJBQXFCLEVBQ3JCLGVBQWUsRUFDZixjQUFjLEdBQ2YsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDakQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sWUFBWSxDQUFDOztBQWM5QyxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLE1BQU0sQ0FBQyxPQUFPO1FBQ1osT0FBTztZQUNMLFFBQVEsRUFBRSxrQkFBa0I7WUFDNUIsU0FBUyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7U0FDOUIsQ0FBQztJQUNKLENBQUM7OEdBTlUsa0JBQWtCOytHQUFsQixrQkFBa0IsaUJBVjNCLGVBQWU7WUFDZixjQUFjO1lBQ2QsZ0JBQWdCO1lBQ2hCLFlBQVk7WUFDWixRQUFRO1lBQ1IscUJBQXFCLGFBRWIsWUFBWSxhQUNaLHFCQUFxQjsrR0FFcEIsa0JBQWtCLFlBSG5CLFlBQVk7OzJGQUdYLGtCQUFrQjtrQkFaOUIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osZUFBZTt3QkFDZixjQUFjO3dCQUNkLGdCQUFnQjt3QkFDaEIsWUFBWTt3QkFDWixRQUFRO3dCQUNSLHFCQUFxQjtxQkFDdEI7b0JBQ0QsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixPQUFPLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztpQkFDakMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEJ1dHRvbnNDb21wb25lbnQsXG4gIE5neFNub3RpZmlyZUNvbXBvbmVudCxcbiAgUHJvbXB0Q29tcG9uZW50LFxuICBUb2FzdENvbXBvbmVudCxcbn0gZnJvbSAnLi9jb21wb25lbnRzJztcbmltcG9ydCB7IEtleXNQaXBlLCBUcnVuY2F0ZVBpcGUgfSBmcm9tICcuL3BpcGVzJztcbmltcG9ydCB7IFNub3RpZmlyZVNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgUHJvbXB0Q29tcG9uZW50LFxuICAgIFRvYXN0Q29tcG9uZW50LFxuICAgIEJ1dHRvbnNDb21wb25lbnQsXG4gICAgVHJ1bmNhdGVQaXBlLFxuICAgIEtleXNQaXBlLFxuICAgIE5neFNub3RpZmlyZUNvbXBvbmVudCxcbiAgXSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIGV4cG9ydHM6IFtOZ3hTbm90aWZpcmVDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3hTbm90aWZpcmVNb2R1bGUge1xuICBzdGF0aWMgZm9yUm9vdCgpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPE5neFNub3RpZmlyZU1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogTmd4U25vdGlmaXJlTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbU25vdGlmaXJlU2VydmljZV0sXG4gICAgfTtcbiAgfVxufVxuIl19
@@ -10,14 +10,14 @@ export class KeysPipe {
10
10
  }
11
11
  return Object.keys(value);
12
12
  }
13
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: KeysPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
14
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: KeysPipe, name: "keys", pure: false }); }
13
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: KeysPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
14
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.3", ngImport: i0, type: KeysPipe, name: "keys", pure: false }); }
15
15
  }
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: KeysPipe, decorators: [{
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: KeysPipe, decorators: [{
17
17
  type: Pipe,
18
18
  args: [{
19
19
  name: 'keys',
20
20
  pure: false,
21
21
  }]
22
22
  }] });
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5cy5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNub3RpZmlyZS9zcmMvbGliL3BpcGVzL2tleXMucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7QUFNcEQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sUUFBUTtJQUNuQixTQUFTLENBQUMsS0FBVTtRQUNsQixJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1YsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUNELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDOytHQU5VLFFBQVE7NkdBQVIsUUFBUTs7NEZBQVIsUUFBUTtrQkFQcEIsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsTUFBTTtvQkFDWixJQUFJLEVBQUUsS0FBSztpQkFDWiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQFBpcGUoe1xuICBuYW1lOiAna2V5cycsXG4gIHB1cmU6IGZhbHNlLFxufSlcbi8qKlxuICogRXh0cmFjdCBvYmplY3Qga2V5cyBwaXBlXG4gKi9cbmV4cG9ydCBjbGFzcyBLZXlzUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0odmFsdWU6IGFueSk6IGFueSB7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gT2JqZWN0LmtleXModmFsdWUpO1xuICB9XG59XG4iXX0=
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5cy5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNub3RpZmlyZS9zcmMvbGliL3BpcGVzL2tleXMucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7QUFNcEQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sUUFBUTtJQUNuQixTQUFTLENBQUMsS0FBVTtRQUNsQixJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1YsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUNELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDOzhHQU5VLFFBQVE7NEdBQVIsUUFBUTs7MkZBQVIsUUFBUTtrQkFQcEIsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsTUFBTTtvQkFDWixJQUFJLEVBQUUsS0FBSztpQkFDWiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQFBpcGUoe1xuICBuYW1lOiAna2V5cycsXG4gIHB1cmU6IGZhbHNlLFxufSlcbi8qKlxuICogRXh0cmFjdCBvYmplY3Qga2V5cyBwaXBlXG4gKi9cbmV4cG9ydCBjbGFzcyBLZXlzUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0odmFsdWU6IGFueSk6IGFueSB7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gT2JqZWN0LmtleXModmFsdWUpO1xuICB9XG59XG4iXX0=
@@ -15,13 +15,13 @@ export class TruncatePipe {
15
15
  (args.length > 1 ? args[1] : this.DEFAULT_TRAIL)
16
16
  : value;
17
17
  }
18
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TruncatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
19
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: TruncatePipe, name: "truncate" }); }
18
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: TruncatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
19
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.3", ngImport: i0, type: TruncatePipe, name: "truncate" }); }
20
20
  }
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TruncatePipe, decorators: [{
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: TruncatePipe, decorators: [{
22
22
  type: Pipe,
23
23
  args: [{
24
24
  name: 'truncate',
25
25
  }]
26
26
  }] });
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1bmNhdGUucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbm90aWZpcmUvc3JjL2xpYi9waXBlcy90cnVuY2F0ZS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQU1wRDs7R0FFRztBQUNILE1BQU0sT0FBTyxZQUFZO0lBUHpCO1FBUW1CLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ25CLGtCQUFhLEdBQUcsS0FBSyxDQUFDO0tBU3hDO0lBUkMsU0FBUyxDQUFDLEtBQWEsRUFBRSxHQUFHLElBQWdCO1FBQzFDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBRTNFLE9BQU8sS0FBSyxDQUFDLE1BQU0sR0FBRyxLQUFLO1lBQ3pCLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUM7Z0JBQ3ZCLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztZQUNwRCxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ1osQ0FBQzsrR0FWVSxZQUFZOzZHQUFaLFlBQVk7OzRGQUFaLFlBQVk7a0JBUHhCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLFVBQVU7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AUGlwZSh7XG4gIG5hbWU6ICd0cnVuY2F0ZScsXG59KVxuXG4vKipcbiAqIFRydW5jYXRlIHRvYXN0IHRleHQgcGlwZVxuICovXG5leHBvcnQgY2xhc3MgVHJ1bmNhdGVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9MSU1JVCA9IDQwO1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfVFJBSUwgPSAnLi4uJztcbiAgdHJhbnNmb3JtKHZhbHVlOiBzdHJpbmcsIC4uLmFyZ3M6IEFycmF5PGFueT4pOiBhbnkge1xuICAgIGNvbnN0IGxpbWl0ID0gYXJncy5sZW5ndGggPiAwID8gcGFyc2VJbnQoYXJnc1swXSwgMTApIDogdGhpcy5ERUZBVUxUX0xJTUlUO1xuXG4gICAgcmV0dXJuIHZhbHVlLmxlbmd0aCA+IGxpbWl0XG4gICAgICA/IHZhbHVlLnN1YnN0cmluZygwLCBsaW1pdCkgK1xuICAgICAgICAgIChhcmdzLmxlbmd0aCA+IDEgPyBhcmdzWzFdIDogdGhpcy5ERUZBVUxUX1RSQUlMKVxuICAgICAgOiB2YWx1ZTtcbiAgfVxufVxuIl19
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1bmNhdGUucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbm90aWZpcmUvc3JjL2xpYi9waXBlcy90cnVuY2F0ZS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQU1wRDs7R0FFRztBQUNILE1BQU0sT0FBTyxZQUFZO0lBUHpCO1FBUW1CLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ25CLGtCQUFhLEdBQUcsS0FBSyxDQUFDO0tBU3hDO0lBUkMsU0FBUyxDQUFDLEtBQWEsRUFBRSxHQUFHLElBQWdCO1FBQzFDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBRTNFLE9BQU8sS0FBSyxDQUFDLE1BQU0sR0FBRyxLQUFLO1lBQ3pCLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUM7Z0JBQ3ZCLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztZQUNwRCxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ1osQ0FBQzs4R0FWVSxZQUFZOzRHQUFaLFlBQVk7OzJGQUFaLFlBQVk7a0JBUHhCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLFVBQVU7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AUGlwZSh7XG4gIG5hbWU6ICd0cnVuY2F0ZScsXG59KVxuXG4vKipcbiAqIFRydW5jYXRlIHRvYXN0IHRleHQgcGlwZVxuICovXG5leHBvcnQgY2xhc3MgVHJ1bmNhdGVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9MSU1JVCA9IDQwO1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfVFJBSUwgPSAnLi4uJztcbiAgdHJhbnNmb3JtKHZhbHVlOiBzdHJpbmcsIC4uLmFyZ3M6IEFycmF5PGFueT4pOiBhbnkge1xuICAgIGNvbnN0IGxpbWl0ID0gYXJncy5sZW5ndGggPiAwID8gcGFyc2VJbnQoYXJnc1swXSwgMTApIDogdGhpcy5ERUZBVUxUX0xJTUlUO1xuXG4gICAgcmV0dXJuIHZhbHVlLmxlbmd0aCA+IGxpbWl0XG4gICAgICA/IHZhbHVlLnN1YnN0cmluZygwLCBsaW1pdCkgK1xuICAgICAgICAgIChhcmdzLmxlbmd0aCA+IDEgPyBhcmdzWzFdIDogdGhpcy5ERUZBVUxUX1RSQUlMKVxuICAgICAgOiB2YWx1ZTtcbiAgfVxufVxuIl19
@@ -230,8 +230,8 @@ export class SnotifireService {
230
230
  get(id) {
231
231
  return (this.notifications && this.notifications.find((toast) => toast.id === id));
232
232
  }
233
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SnotifireService, deps: [{ token: 'snotifireConfig' }], target: i0.ɵɵFactoryTarget.Injectable }); }
234
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SnotifireService }); }
233
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: SnotifireService, deps: [{ token: 'snotifireConfig' }], target: i0.ɵɵFactoryTarget.Injectable }); }
234
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: SnotifireService }); }
235
235
  }
236
236
  __decorate([
237
237
  TransformArgument
@@ -289,10 +289,10 @@ __decorate([
289
289
  ,
290
290
  SetToastType
291
291
  ], SnotifireService.prototype, "async", null);
292
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SnotifireService, decorators: [{
292
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: SnotifireService, decorators: [{
293
293
  type: Injectable
294
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
294
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
295
295
  type: Inject,
296
296
  args: ['snotifireConfig']
297
- }] }]; }, propDecorators: { success: [], error: [], info: [], warning: [], confirm: [], prompt: [], async: [] } });
298
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc25vdGlmaXJlL3NyYy9saWIvc2VydmljZXMvbm90aWZpY2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFDTCxVQUFVLEVBQ1YsUUFBUSxFQUNSLElBQUksRUFHSixPQUFPLEVBQ1AsR0FBRyxFQUNILFVBQVUsR0FDWCxNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUMvRSxPQUFPLEVBQW1CLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUcvRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLFVBQVUsQ0FBQzs7QUFHM0MsTUFBTSxPQUFPLGdCQUFnQjtJQWdCM0IsWUFDb0MsYUFBZ0M7UUFBaEMsa0JBQWEsR0FBYixhQUFhLENBQW1CO1FBaEJwRTs7V0FFRztRQUNjLHlCQUFvQixHQUFHLElBQUksQ0FBQztRQUU3Qzs7V0FFRztRQUNNLFlBQU8sR0FBRyxJQUFJLE9BQU8sRUFBeUIsQ0FBQztRQUUvQyxpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7UUFDckMsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBdUIsQ0FBQztRQUUzRCxrQkFBYSxHQUErQixFQUFFLENBQUM7SUFJNUMsQ0FBQztJQUVKOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsS0FBcUI7UUFDMUIsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUks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OztJQUNGLFlBQVk7K0NBR1o7QUEwQ0Q7SUFMQyxpQkFBaUI7SUFDbEI7O09BRUc7O0lBQ0YsWUFBWTs4Q0FHWjtBQTBERDtJQUxDLGlCQUFpQjtJQUNsQjs7T0FFRzs7SUFDRixZQUFZOzZDQW9EWjs0RkF4Z0JVLGdCQUFnQjtrQkFENUIsVUFBVTs7MEJBa0JOLE1BQU07MkJBQUMsaUJBQWlCOzRDQXlLM0IsT0FBTyxNQStDUCxLQUFLLE1BNENMLElBQUksTUE0Q0osT0FBTyxNQTRDUCxPQUFPLE1BNENQLE1BQU0sTUE0RE4sS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7XG4gIGNhdGNoRXJyb3IsXG4gIGZpbmFsaXplLFxuICBmcm9tLFxuICBPYnNlcnZhYmxlLFxuICBvZixcbiAgU3ViamVjdCxcbiAgdGFwLFxuICB0aHJvd0Vycm9yLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNldFRvYXN0VHlwZSB9IGZyb20gJy4uL2RlY29yYXRvcnMvc2V0LXRvYXN0LXR5cGUuZGVjb3JhdG9yJztcbmltcG9ydCB7IFRyYW5zZm9ybUFyZ3VtZW50IH0gZnJvbSAnLi4vZGVjb3JhdG9ycy90cmFuc2Zvcm0tYXJndW1lbnQuZGVjb3JhdG9yJztcbmltcG9ydCB7IFNub3RpZmlyZUNvbmZpZywgU25vdGlmaXJlRXZlbnRUeXBlLCBTbm90aWZpcmVUeXBlIH0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7IFNub3RpZmlyZURlZmF1bHRzIH0gZnJvbSAnLi4vZGVmYXVsdHMvZGVmYXVsdHMuaW50ZXJmYWNlJztcbmltcG9ydCB7IFNub3RpZmlyZU1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL3Nub3RpZmlyZS5tb2RlbCc7XG5pbXBvcnQgeyBTbm90aWZpcmVUb2FzdE1vZGVsIH0gZnJvbSAnLi4vY29tcG9uZW50cy90b2FzdC9ub3RpZmlyZS10b2FzdC5tb2RlbCc7XG5pbXBvcnQgeyBtZXJnZURlZXAsIHV1aWQgfSBmcm9tICcuLi91dGlscyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTbm90aWZpcmVTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIE1pbmltdW0gZGlzcGxheSB0aW1lIG9mIHRoZSBub3RpZmljYXRpb24gbWVzc2FnZVxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBtaW5pbXVtRGlzcGxheWVkVGltZSA9IDMwMDA7XG5cbiAgLyoqXG4gICAqIEVtaXRzIE5vdGlmaXJlIE5vdGlmaWNhdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IGVtaXR0ZXIgPSBuZXcgU3ViamVjdDxTbm90aWZpcmVUb2FzdE1vZGVsW10+KCk7XG5cbiAgcmVhZG9ubHkgdG9hc3REZWxldGVkID0gbmV3IFN1YmplY3Q8bnVtYmVyPigpO1xuICByZWFkb25seSB0b2FzdENoYW5nZWQgPSBuZXcgU3ViamVjdDxTbm90aWZpcmVUb2FzdE1vZGVsPigpO1xuXG4gIG5vdGlmaWNhdGlvbnM6IEFycmF5PFNub3RpZmlyZVRvYXN0TW9kZWw+ID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdCgnc25vdGlmaXJlQ29uZmlnJykgcHVibGljIGRlZmF1bHRDb25maWc6IFNub3RpZmlyZURlZmF1bHRzXG4gICkge31cblxuICAvKipcbiAgICogQ3JlYXRlcyB0b2FzdCBhbmQgYWRkIGl0IHRvIGFycmF5LCByZXR1cm5zIHRvYXN0IGlkXG4gICAqIEBwYXJhbSBOb3RpZmljYXRpb25Nb2RlbCBOb3RpZmljYXRpb25Nb2RlbFxuICAgKiBAcmV0dXJuIG51bWJlclxuICAgKi9cbiAgY3JlYXRlKG5vdGlmOiBTbm90aWZpcmVNb2RlbCk6IFNub3RpZmlyZVRvYXN0TW9kZWwge1xuICAgIGlmICh0aGlzLmRlZmF1bHRDb25maWcudHlwZSAmJiBub3RpZi5jb25maWcgJiYgbm90aWYuY29uZmlnLnR5cGUpIHtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IG1lcmdlRGVlcChcbiAgICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnLnNub3RpZmlyZUNvbmZpZyxcbiAgICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnLnR5cGVbbm90aWYuY29uZmlnLnR5cGVdLFxuICAgICAgICBub3RpZi5jb25maWdcbiAgICAgICk7XG4gICAgICBjb25zdCB0b2FzdCA9IG5ldyBTbm90aWZpcmVUb2FzdE1vZGVsKFxuICAgICAgICB1dWlkKCksXG4gICAgICAgIG5vdGlmLnRpdGxlID8gbm90aWYudGl0bGUgOiAnJyxcbiAgICAgICAgbm90aWYuYm9keSA/IG5vdGlmLmJvZHkgOiAnJyxcbiAgICAgICAgY29uZmlnXG4gICAgICApO1xuICAgICAgdGhpcy5hZGQodG9hc3QpO1xuICAgICAgcmV0dXJuIHRvYXN0O1xuICAgIH1cbiAgICBjb25zdCBjb25maWcgPSBtZXJnZURlZXAodGhpcy5kZWZhdWx0Q29uZmlnLnNub3RpZmlyZUNvbmZpZywgbm90aWYuY29uZmlnKTtcbiAgICBjb25zdCBkZWZhdWxUb2FzdCA9IG5ldyBTbm90aWZpcmVUb2FzdE1vZGVsKFxuICAgICAgdXVpZCgpLFxuICAgICAgbm90aWYudGl0bGUgPyBub3RpZi50aXRsZSA6ICcnLFxuICAgICAgbm90aWYuYm9keSA/IG5vdGlmLmJvZHkgOiAnJyxcbiAgICAgIGNvbmZpZ1xuICAgICk7XG4gICAgdGhpcy5hZGQoZGVmYXVsVG9hc3QpO1xuICAgIHJldHVybiBkZWZhdWxUb2FzdDtcbiAgfVxuICAvKipcbiAgICogSWYgSUQgcGFzc2VkLCBlbWl0cyB0b2FzdCBhbmltYXRpb24gcmVtb3ZlLCBpZiBJRCAmIFJFTU9WRSBwYXNzZWQsIHJlbW92ZXMgdG9hc3QgZnJvbSBub3RpZmljYXRpb25zIGFycmF5XG4gICAqIEBwYXJhbSBpZCBudW1iZXJcbiAgICogQHBhcmFtIHJlbW92ZSBib29sZWFuXG4gICAqL1xuICByZW1vdmUoaWQ6IG51bWJlciwgcmVtb3ZlPzogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICghaWQpIHtcbiAgICAgIHJldHVybiB0aGlzLmNsZWFyKCk7XG4gICAgfVxuICAgIGlmIChyZW1vdmUpIHtcbiAgICAgIHRoaXMubm90aWZpY2F0aW9ucyA9IHRoaXMubm90aWZpY2F0aW9ucy5maWx0ZXIoXG4gICAgICAgICh0b2FzdCkgPT4gdG9hc3QuaWQgIT09IGlkXG4gICAgICApO1xuICAgICAgcmV0dXJuIHRoaXMuZW1pdCgpO1xuICAgIH1cbiAgICB0aGlzLnRvYXN0RGVsZXRlZC5uZXh0KGlkKTtcbiAgfVxuXG4gIHNldERlZmF1bHRzKGRlZmF1bHRzOiBTbm90aWZpcmVEZWZhdWx0cyk6IFNub3RpZmlyZURlZmF1bHRzIHtcbiAgICBjb25zdCBtZXJnZWRDb25maWcgPSAodGhpcy5kZWZhdWx0Q29uZmlnID0gbWVyZ2VEZWVwKFxuICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnLFxuICAgICAgZGVmYXVsdHNcbiAgICApIGFzIFNub3RpZmlyZURlZmF1bHRzKTtcbiAgICByZXR1cm4gbWVyZ2VkQ29uZmlnO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIG5vdGlmaWNhdGlvbnMgYXJyYXlcbiAgICovXG4gIGNsZWFyKCk6IHZvaWQge1xuICAgIHRoaXMubm90aWZpY2F0aW9ucyA9IFtdO1xuICAgIHRoaXMuZW1pdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIGFkZCBOb3RpZmlyZVRvYXN0IHRvIG5vdGlmaWNhdGlvbnMgYXJyYXlcbiAgICogQHBhcmFtIHRvYXN0IE5vdGlmaXJlVG9hc3RcbiAgICovXG4gIHByaXZhdGUgYWRkKHRvYXN0OiBTbm90aWZpcmVUb2FzdE1vZGVsKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnICYmXG4gICAgICB0aGlzLmRlZmF1bHRDb25maWcuZ2xvYmFsICYmXG4gICAgICB0aGlzLmRlZmF1bHRDb25maWcuZ2xvYmFsLmZpbHRlckR1cGxpY2F0ZXMgJiZcbiAgICAgIHRoaXMuY29udGFpbnNUb2FzdCh0b2FzdClcbiAgICApIHtcbiAgICAgIGlmICghdGhpcy5kZWZhdWx0Q29uZmlnLmdsb2JhbC5maWx0ZXJEdXBsaWNhdGVzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBnbG9iYWwgY29uZmlnJyk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChcbiAgICAgIHRoaXMuZGVmYXVsdENvbmZpZyAmJlxuICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnLmdsb2JhbCAmJlxuICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnLmdsb2JhbC5uZXdPblRvcFxuICAgICkge1xuICAgICAgdGhpcy5ub3RpZmljYXRpb25zLnVuc2hpZnQodG9hc3QpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5vdGlmaWNhdGlvbnMucHVzaCh0b2FzdCk7XG4gICAgfVxuICAgIHRoaXMuZW1pdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIGVtaXQgY2hhbmdlcyBpbiBub3RpZmljYXRpb25zIGFycmF5XG4gICAqL1xuICBwcml2YXRlIGVtaXQoKTogdm9pZCB7XG4gICAgdGhpcy5lbWl0dGVyLm5leHQodGhpcy5ub3RpZmljYXRpb25zLnNsaWNlKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIGNoZWNrcyBpZiB0aGUgdG9hc3QgaXMgaW4gdGhlIGNvbGxlY3Rpb24uXG4gICAqIEBwYXJhbSBpblRvYXN0IE5vdGlmaXJlVG9hc3RcbiAgICogQHJldHVybnMgYm9vbGVhblxuICAgKi9cbiAgcHJpdmF0ZSBjb250YWluc1RvYXN0KGluVG9hc3Q6IFNub3RpZmlyZVRvYXN0TW9kZWwpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5ub3RpZmljYXRpb25zLnNvbWUoKHRvYXN0KSA9PiB0b2FzdC5lcXVhbHMoaW5Ub2FzdCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgZW1wdHkgdG9hc3Qgd2l0aCBodG1sIHN0cmluZyBpbnNpZGVcbiAgICogQHBhcmFtIGh0bWwgc3RyaW5nIHwgU2FmZUh0bWxcbiAgICogQHBhcmFtIGNvbmZpZyBOb3RpZmlyZUNvbmZpZ1xuICAgKiBAcmV0dXJucyBudW1iZXJcbiAgICovXG4gIGh0bWwoaHRtbDogc3RyaW5nIHwgU2FmZUh0bWwsIGNvbmZpZz86IFNub3RpZmlyZUNvbmZpZyk6IFNub3RpZmlyZVRvYXN0TW9kZWwge1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZSh7XG4gICAgICB0aXRsZTogdW5kZWZpbmVkLFxuICAgICAgYm9keTogdW5kZWZpbmVkLFxuICAgICAgY29uZmlnOiB7XG4gICAgICAgIC4uLmNvbmZpZyxcbiAgICAgICAgLi4ueyBodG1sIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCBzdWNjZXNzIHN0eWxlIHJldHVybnMgdG9hc3QgaWQ7XG4gICAqIEBwYXJhbSBib2R5IHN0cmluZ1xuICAgKiBAcmV0dXJucyBudW1iZXJcbiAgICovXG4gIHN1Y2Nlc3MoYm9keTogc3RyaW5nKTogU25vdGlmaXJlVG9hc3RNb2RlbDtcbiAgLyoqXG4gICAqIENyZWF0ZSB0b2FzdCB3aXRoIHN1Y2Nlc3Mgc3R5bGUgcmV0dXJucyB0b2FzdCBpZDtcbiAgICogQHBhcmFtIGJvZHkgc3RyaW5nXG4gICAqIEBwYXJhbSB0aXRsZSBzdHJpbmdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBzdWNjZXNzKGJvZHk6IHN0cmluZywgdGl0bGU6IHN0cmluZyk6IFNub3RpZmlyZVRvYXN0TW9kZWw7XG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCBzdWNjZXNzIHN0eWxlIHJldHVybnMgdG9hc3QgaWQ7XG4gICAqIEBwYXJhbSBib2R5IHN0cmluZ1xuICAgKiBAcGFyYW0gY29uZmlnIE5vdGlmaWNhdGlvbkNvbmZpZ1xuICAgKiBAcmV0dXJucyBudW1iZXJcbiAgICovXG4gIHN1Y2Nlc3MoYm9keTogc3RyaW5nLCBjb25maWc6IFNub3RpZmlyZUNvbmZpZyk6IFNub3RpZmlyZVRvYXN0TW9kZWw7XG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCBzdWNjZXNzIHN0eWxlICByZXR1cm5zIHRvYXN0IGlkO1xuICAgKiBAcGFyYW0gW2JvZHldIHN0cmluZ1xuICAgKiBAcGFyYW0gW3RpdGxlXSBzdHJpbmdcbiAgICogQHBhcmFtIFtjb25maWddIE5vdGlmaWNhdGlvbkNvbmZpZ1xuICAgKiBAcmV0dXJucyBudW1iZXJcbiAgICovXG4gIHN1Y2Nlc3MoXG4gICAgYm9keTogc3RyaW5nLFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgY29uZmlnOiBTbm90aWZpcmVDb25maWdcbiAgKTogU25vdGlmaXJlVG9hc3RNb2RlbDtcblxuICAvKipcbiAgICogVHJhbnNmb3JtIHRvYXN0IGFyZ3VtZW50cyBpbnRvIE5vdGlmaWNhdGlvbk1vZGVsIG9iamVjdFxuICAgKi9cbiAgQFRyYW5zZm9ybUFyZ3VtZW50XG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGN1cnJlbnQgdG9hc3QgdHlwZSBhbmQgY29sbGVjdHMgZGVmYXVsdCBjb25maWd1cmF0aW9uXG4gICAqL1xuICBAU2V0VG9hc3RUeXBlXG4gIHN1Y2Nlc3MoYXJnczogYW55KTogU25vdGlmaXJlVG9hc3RNb2RlbCB7XG4gICAgaWYgKCFhcmdzLmNvbmZpZykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIGNvbmZpZywgcGxlYXNlIGNvbmZpZ3VyZSBzZXJ2aWNlIGFjY29yZGluZ2x5Jyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNyZWF0ZShhcmdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCBlcnJvciBzdHlsZSByZXR1cm5zIHRvYXN0IGlkO1xuICAgKiBAcGFyYW0gYm9keSBzdHJpbmdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBlcnJvcihib2R5OiBzdHJpbmcpOiBTbm90aWZpcmVUb2FzdE1vZGVsO1xuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggZXJyb3Igc3R5bGUgcmV0dXJucyB0b2FzdCBpZDtcbiAgICogQHBhcmFtIGJvZHkgc3RyaW5nXG4gICAqIEBwYXJhbSB0aXRsZSBzdHJpbmdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBlcnJvcihib2R5OiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcpOiBTbm90aWZpcmVUb2FzdE1vZGVsO1xuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggZXJyb3Igc3R5bGUgcmV0dXJucyB0b2FzdCBpZDtcbiAgICogQHBhcmFtIGJvZHkgc3RyaW5nXG4gICAqIEBwYXJhbSBjb25maWcgTm90aWZpY2F0aW9uQ29uZmlnXG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgZXJyb3IoYm9keTogc3RyaW5nLCBjb25maWc6IFNub3RpZmlyZUNvbmZpZyk6IFNub3RpZmlyZVRvYXN0TW9kZWw7XG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCBlcnJvciBzdHlsZSAgcmV0dXJucyB0b2FzdCBpZDtcbiAgICogQHBhcmFtIFtib2R5XSBzdHJpbmdcbiAgICogQHBhcmFtIFt0aXRsZV0gc3RyaW5nXG4gICAqIEBwYXJhbSBbY29uZmlnXSBOb3RpZmljYXRpb25Db25maWdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBlcnJvcihcbiAgICBib2R5OiBzdHJpbmcsXG4gICAgdGl0bGU6IHN0cmluZyxcbiAgICBjb25maWc6IFNub3RpZmlyZUNvbmZpZ1xuICApOiBTbm90aWZpcmVUb2FzdE1vZGVsO1xuICAvKipcbiAgICogVHJhbnNmb3JtIHRvYXN0IGFyZ3VtZW50cyBpbnRvIE5vdGlmaWNhdGlvbk1vZGVsIG9iamVjdFxuICAgKi9cbiAgQFRyYW5zZm9ybUFyZ3VtZW50XG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGN1cnJlbnQgdG9hc3QgdHlwZSBhbmQgY29sbGVjdHMgZGVmYXVsdCBjb25maWd1cmF0aW9uXG4gICAqL1xuICBAU2V0VG9hc3RUeXBlXG4gIGVycm9yKGFyZ3M6IGFueSk6IFNub3RpZmlyZVRvYXN0TW9kZWwge1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZShhcmdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCBpbmZvIHN0eWxlIHJldHVybnMgdG9hc3QgaWQ7XG4gICAqIEBwYXJhbSBib2R5IHN0cmluZ1xuICAgKiBAcmV0dXJucyBudW1iZXJcbiAgICovXG4gIGluZm8oYm9keTogc3RyaW5nKTogU25vdGlmaXJlVG9hc3RNb2RlbDtcbiAgLyoqXG4gICAqIENyZWF0ZSB0b2FzdCB3aXRoIGluZm8gc3R5bGUgcmV0dXJucyB0b2FzdCBpZDtcbiAgICogQHBhcmFtIGJvZHkgc3RyaW5nXG4gICAqIEBwYXJhbSB0aXRsZSBzdHJpbmdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBpbmZvKGJvZHk6IHN0cmluZywgdGl0bGU6IHN0cmluZyk6IFNub3RpZmlyZVRvYXN0TW9kZWw7XG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCBpbmZvIHN0eWxlIHJldHVybnMgdG9hc3QgaWQ7XG4gICAqIEBwYXJhbSBib2R5IHN0cmluZ1xuICAgKiBAcGFyYW0gY29uZmlnIE5vdGlmaWNhdGlvbkNvbmZpZ1xuICAgKiBAcmV0dXJucyBudW1iZXJcbiAgICovXG4gIGluZm8oYm9keTogc3RyaW5nLCBjb25maWc6IFNub3RpZmlyZUNvbmZpZyk6IFNub3RpZmlyZVRvYXN0TW9kZWw7XG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCBpbmZvIHN0eWxlICByZXR1cm5zIHRvYXN0IGlkO1xuICAgKiBAcGFyYW0gW2JvZHldIHN0cmluZ1xuICAgKiBAcGFyYW0gW3RpdGxlXSBzdHJpbmdcbiAgICogQHBhcmFtIFtjb25maWddIE5vdGlmaWNhdGlvbkNvbmZpZ1xuICAgKiBAcmV0dXJucyBudW1iZXJcbiAgICovXG4gIGluZm8oXG4gICAgYm9keTogc3RyaW5nLFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgY29uZmlnOiBTbm90aWZpcmVDb25maWdcbiAgKTogU25vdGlmaXJlVG9hc3RNb2RlbDtcbiAgLyoqXG4gICAqIFRyYW5zZm9ybSB0b2FzdCBhcmd1bWVudHMgaW50byBOb3RpZmljYXRpb25Nb2RlbCBvYmplY3RcbiAgICovXG4gIEBUcmFuc2Zvcm1Bcmd1bWVudFxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBjdXJyZW50IHRvYXN0IHR5cGUgYW5kIGNvbGxlY3RzIGRlZmF1bHQgY29uZmlndXJhdGlvblxuICAgKi9cbiAgQFNldFRvYXN0VHlwZVxuICBpbmZvKGFyZ3M6IGFueSk6IFNub3RpZmlyZVRvYXN0TW9kZWwge1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZShhcmdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCB3YXJuaW5nIHN0eWxlIHJldHVybnMgdG9hc3QgaWQ7XG4gICAqIEBwYXJhbSBib2R5IHN0cmluZ1xuICAgKiBAcmV0dXJucyBudW1iZXJcbiAgICovXG4gIHdhcm5pbmcoYm9keTogc3RyaW5nKTogU25vdGlmaXJlVG9hc3RNb2RlbDtcbiAgLyoqXG4gICAqIENyZWF0ZSB0b2FzdCB3aXRoIHdhcm5pbmcgc3R5bGUgcmV0dXJucyB0b2FzdCBpZDtcbiAgICogQHBhcmFtIGJvZHkgc3RyaW5nXG4gICAqIEBwYXJhbSB0aXRsZSBzdHJpbmdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICB3YXJuaW5nKGJvZHk6IHN0cmluZywgdGl0bGU6IHN0cmluZyk6IFNub3RpZmlyZVRvYXN0TW9kZWw7XG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCB3YXJuaW5nIHN0eWxlIHJldHVybnMgdG9hc3QgaWQ7XG4gICAqIEBwYXJhbSBib2R5IHN0cmluZ1xuICAgKiBAcGFyYW0gY29uZmlnIE5vdGlmaWNhdGlvbkNvbmZpZ1xuICAgKiBAcmV0dXJucyBudW1iZXJcbiAgICovXG4gIHdhcm5pbmcoYm9keTogc3RyaW5nLCBjb25maWc6IFNub3RpZmlyZUNvbmZpZyk6IFNub3RpZmlyZVRvYXN0TW9kZWw7XG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCB3YXJuaW5nIHN0eWxlICByZXR1cm5zIHRvYXN0IGlkO1xuICAgKiBAcGFyYW0gW2JvZHldIHN0cmluZ1xuICAgKiBAcGFyYW0gW3RpdGxlXSBzdHJpbmdcbiAgICogQHBhcmFtIFtjb25maWddIE5vdGlmaWNhdGlvbkNvbmZpZ1xuICAgKiBAcmV0dXJucyBudW1iZXJcbiAgICovXG4gIHdhcm5pbmcoXG4gICAgYm9keTogc3RyaW5nLFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgY29uZmlnOiBTbm90aWZpcmVDb25maWdcbiAgKTogU25vdGlmaXJlVG9hc3RNb2RlbDtcbiAgLyoqXG4gICAqIFRyYW5zZm9ybSB0b2FzdCBhcmd1bWVudHMgaW50byBOb3RpZmljYXRpb25Nb2RlbCBvYmplY3RcbiAgICovXG4gIEBUcmFuc2Zvcm1Bcmd1bWVudFxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBjdXJyZW50IHRvYXN0IHR5cGUgYW5kIGNvbGxlY3RzIGRlZmF1bHQgY29uZmlndXJhdGlvblxuICAgKi9cbiAgQFNldFRvYXN0VHlwZVxuICB3YXJuaW5nKGFyZ3M6IGFueSk6IFNub3RpZmlyZVRvYXN0TW9kZWwge1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZShhcmdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCBjb25maXJtIHN0eWxlIHJldHVybnMgdG9hc3QgaWQ7XG4gICAqIEBwYXJhbSBib2R5IHN0cmluZ1xuICAgKiBAcmV0dXJucyBudW1iZXJcbiAgICovXG4gIGNvbmZpcm0oYm9keTogc3RyaW5nKTogU25vdGlmaXJlVG9hc3RNb2RlbDtcbiAgLyoqXG4gICAqIENyZWF0ZSB0b2FzdCB3aXRoIGNvbmZpcm0gc3R5bGUgcmV0dXJucyB0b2FzdCBpZDtcbiAgICogQHBhcmFtIGJvZHkgc3RyaW5nXG4gICAqIEBwYXJhbSB0aXRsZSBzdHJpbmdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBjb25maXJtKGJvZHk6IHN0cmluZywgdGl0bGU6IHN0cmluZyk6IFNub3RpZmlyZVRvYXN0TW9kZWw7XG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCBjb25maXJtIHN0eWxlIHJldHVybnMgdG9hc3QgaWQ7XG4gICAqIEBwYXJhbSBib2R5IHN0cmluZ1xuICAgKiBAcGFyYW0gY29uZmlnIE5vdGlmaWNhdGlvbkNvbmZpZ1xuICAgKiBAcmV0dXJucyBudW1iZXJcbiAgICovXG4gIGNvbmZpcm0oYm9keTogc3RyaW5nLCBjb25maWc6IFNub3RpZmlyZUNvbmZpZyk6IFNub3RpZmlyZVRvYXN0TW9kZWw7XG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCBjb25maXJtIHN0eWxlICByZXR1cm5zIHRvYXN0IGlkO1xuICAgKiBAcGFyYW0gW2JvZHldIHN0cmluZ1xuICAgKiBAcGFyYW0gW3RpdGxlXSBzdHJpbmdcbiAgICogQHBhcmFtIFtjb25maWddIE5vdGlmaWNhdGlvbkNvbmZpZ1xuICAgKiBAcmV0dXJucyBudW1iZXJcbiAgICovXG4gIGNvbmZpcm0oXG4gICAgYm9keTogc3RyaW5nLFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgY29uZmlnOiBTbm90aWZpcmVDb25maWdcbiAgKTogU25vdGlmaXJlVG9hc3RNb2RlbDtcbiAgLyoqXG4gICAqIFRyYW5zZm9ybSB0b2FzdCBhcmd1bWVudHMgaW50byBOb3RpZmljYXRpb25Nb2RlbCBvYmplY3RcbiAgICovXG4gIEBUcmFuc2Zvcm1Bcmd1bWVudFxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBjdXJyZW50IHRvYXN0IHR5cGUgYW5kIGNvbGxlY3RzIGRlZmF1bHQgY29uZmlndXJhdGlvblxuICAgKi9cbiAgQFNldFRvYXN0VHlwZVxuICBjb25maXJtKGFyZ3M6IGFueSk6IFNub3RpZmlyZVRvYXN0TW9kZWwge1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZShhcmdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCBQcm9tcHQgc3R5bGUgd2l0aCB0d28gYnV0dG9ucywgcmV0dXJucyB0b2FzdCBpZDtcbiAgICogQHBhcmFtIGJvZHkgc3RyaW5nXG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgcHJvbXB0KGJvZHk6IHN0cmluZyk6IFNub3RpZmlyZVRvYXN0TW9kZWw7XG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCBQcm9tcHQgc3R5bGUgd2l0aCB0d28gYnV0dG9ucywgcmV0dXJucyB0b2FzdCBpZDtcbiAgICogQHBhcmFtIGJvZHkgc3RyaW5nXG4gICAqIEBwYXJhbSB0aXRsZSBzdHJpbmdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBwcm9tcHQoYm9keTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKTogU25vdGlmaXJlVG9hc3RNb2RlbDtcbiAgLyoqXG4gICAqIENyZWF0ZSB0b2FzdCB3aXRoIFByb21wdCBzdHlsZSB3aXRoIHR3byBidXR0b25zLCByZXR1cm5zIHRvYXN0IGlkO1xuICAgKiBAcGFyYW0gYm9keSBzdHJpbmdcbiAgICogQHBhcmFtIGNvbmZpZyBOb3RpZmljYXRpb25Db25maWdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBwcm9tcHQoYm9keTogc3RyaW5nLCBjb25maWc6IFNub3RpZmlyZUNvbmZpZyk6IFNub3RpZmlyZVRvYXN0TW9kZWw7XG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCBQcm9tcHQgc3R5bGUgd2l0aCB0d28gYnV0dG9ucywgcmV0dXJucyB0b2FzdCBpZDtcbiAgICogQHBhcmFtIFtib2R5XSBzdHJpbmdcbiAgICogQHBhcmFtIFt0aXRsZV0gc3RyaW5nXG4gICAqIEBwYXJhbSBbY29uZmlnXSBOb3RpZmljYXRpb25Db25maWdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBwcm9tcHQoXG4gICAgYm9keTogc3RyaW5nLFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgY29uZmlnOiBTbm90aWZpcmVDb25maWdcbiAgKTogU25vdGlmaXJlVG9hc3RNb2RlbDtcbiAgLyoqXG4gICAqIFRyYW5zZm9ybSB0b2FzdCBhcmd1bWVudHMgaW50byBOb3RpZmljYXRpb25Nb2RlbCBvYmplY3RcbiAgICovXG4gIEBUcmFuc2Zvcm1Bcmd1bWVudFxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBjdXJyZW50IHRvYXN0IHR5cGUgYW5kIGNvbGxlY3RzIGRlZmF1bHQgY29uZmlndXJhdGlvblxuICAgKi9cbiAgQFNldFRvYXN0VHlwZVxuICBwcm9tcHQoYXJnczogYW55KTogU25vdGlmaXJlVG9hc3RNb2RlbCB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlKGFyZ3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYXN5bmMgdG9hc3Qgd2l0aCBJbmZvIHN0eWxlLiBQYXNzIGFjdGlvbiwgYW5kIHJlc29sdmUgb3IgcmVqZWN0IGl0LlxuICAgKiBAcGFyYW0gYm9keSBzdHJpbmdcbiAgICogQHBhcmFtIGFjdGlvbiBQcm9taXNlPE5vdGlmaWNhdGlvbk1vZGVsPiB8IE9ic2VydmFibGU8Tm90aWZpY2F0aW9uTW9kZWw+XG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgYXN5bmMoXG4gICAgYm9keTogc3RyaW5nLFxuICAgIGFjdGlvbjogUHJvbWlzZTxTbm90aWZpcmVNb2RlbD4gfCBPYnNlcnZhYmxlPFNub3RpZmlyZU1vZGVsPlxuICApOiBPYnNlcnZhYmxlPGFueT47XG4gIC8qKlxuICAgKiBDcmVhdGVzIGFzeW5jIHRvYXN0IHdpdGggSW5mbyBzdHlsZS4gUGFzcyBhY3Rpb24sIGFuZCByZXNvbHZlIG9yIHJlamVjdCBpdC5cbiAgICogQHBhcmFtIGJvZHkgc3RyaW5nXG4gICAqIEBwYXJhbSB0aXRsZSBzdHJpbmdcbiAgICogQHBhcmFtIGFjdGlvbiBQcm9taXNlPE5vdGlmaWNhdGlvbk1vZGVsPiB8IE9ic2VydmFibGU8Tm90aWZpY2F0aW9uTW9kZWw+XG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgYXN5bmMoXG4gICAgYm9keTogc3RyaW5nLFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgYWN0aW9uOiBQcm9taXNlPFNub3RpZmlyZU1vZGVsPiB8IE9ic2VydmFibGU8U25vdGlmaXJlTW9kZWw+XG4gICk6IE9ic2VydmFibGU8YW55PjtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYXN5bmMgdG9hc3Qgd2l0aCBJbmZvIHN0eWxlLiBQYXNzIGFjdGlvbiwgYW5kIHJlc29sdmUgb3IgcmVqZWN0IGl0LlxuICAgKiBAcGFyYW0gYm9keSBzdHJpbmdcbiAgICogQHBhcmFtIGFjdGlvbiBQcm9taXNlPE5vdGlmaWNhdGlvbk1vZGVsPiB8IE9ic2VydmFibGU8Tm90aWZpY2F0aW9uTW9kZWw+XG4gICAqIEBwYXJhbSBbY29uZmlnXSBOb3RpZmljYXRpb25Db25maWdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBhc3luYyhcbiAgICBib2R5OiBzdHJpbmcsXG4gICAgYWN0aW9uOiBQcm9taXNlPFNub3RpZmlyZU1vZGVsPiB8IE9ic2VydmFibGU8U25vdGlmaXJlTW9kZWw+LFxuICAgIGNvbmZpZzogU25vdGlmaXJlQ29uZmlnXG4gICk6IE9ic2VydmFibGU8YW55PjtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYXN5bmMgdG9hc3Qgd2l0aCBJbmZvIHN0eWxlLiBQYXNzIGFjdGlvbiwgYW5kIHJlc29sdmUgb3IgcmVqZWN0IGl0LlxuICAgKiBAcGFyYW0gYm9keSBzdHJpbmdcbiAgICogQHBhcmFtIHRpdGxlIHN0cmluZ1xuICAgKiBAcGFyYW0gYWN0aW9uIFByb21pc2U8Tm90aWZpY2F0aW9uTW9kZWw+IHwgT2JzZXJ2YWJsZTxOb3RpZmljYXRpb25Nb2RlbD5cbiAgICogQHBhcmFtIFtjb25maWddIE5vdGlmaWNhdGlvbkNvbmZpZ1xuICAgKiBAcmV0dXJucyBudW1iZXJcbiAgICovXG4gIGFzeW5jKFxuICAgIGJvZHk6IHN0cmluZyxcbiAgICB0aXRsZTogc3RyaW5nLFxuICAgIGFjdGlvbjogUHJvbWlzZTxTbm90aWZpcmVNb2RlbD4gfCBPYnNlcnZhYmxlPFNub3RpZmlyZU1vZGVsPixcbiAgICBjb25maWc6IFNub3RpZmlyZUNvbmZpZ1xuICApOiBPYnNlcnZhYmxlPGFueT47XG4gIC8qKlxuICAgKiBUcmFuc2Zvcm0gdG9hc3QgYXJndW1lbnRzIGludG8gTm90aWZpY2F0aW9uTW9kZWwgb2JqZWN0XG4gICAqL1xuICBAVHJhbnNmb3JtQXJndW1lbnRcbiAgLyoqXG4gICAqIERldGVybWluZXMgY3VycmVudCB0b2FzdCB0eXBlIGFuZCBjb2xsZWN0cyBkZWZhdWx0IGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIEBTZXRUb2FzdFR5cGVcbiAgYXN5bmMoYXJnczogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgYXN5bmM6IE9ic2VydmFibGU8YW55PjtcbiAgICBpZiAoYXJncy5hY3Rpb24gaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICBhc3luYyA9IGZyb20oYXJncy5hY3Rpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICBhc3luYyA9IGFyZ3MuYWN0aW9uO1xuICAgIH1cblxuICAgIGNvbnN0IHRvYXN0ID0gdGhpcy5jcmVhdGUoYXJncyk7XG4gICAgbGV0IGZhaWxlZCA9IGZhbHNlO1xuICAgIGNvbnN0IGFzeW5jQXRpb24gPSBhc3luYy5waXBlKFxuICAgICAgdGFwKChuZXh0KSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdjYWxsZWQnKSwgdGhpcy5tZXJnZVRvYXN0KHRvYXN0LCBuZXh0KTtcbiAgICAgIH0pLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgZmFpbGVkID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xuICAgICAgfSksXG4gICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgIHRoaXMubWVyZ2VUb2FzdChcbiAgICAgICAgICB0b2FzdCxcbiAgICAgICAgICB7fSxcbiAgICAgICAgICBmYWlsZWQgPT09IHRydWUgPyBTbm90aWZpcmVUeXBlLkVSUk9SIDogU25vdGlmaXJlVHlwZS5TVUNDRVNTXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICk7XG4gICAgdG9hc3Qub24oU25vdGlmaXJlRXZlbnRUeXBlLk1PVU5URUQsICgpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKCdtb3VudGVkJyk7XG4gICAgICByZXR1cm4gYXN5bmNBdGlvbjtcbiAgICB9KTtcbiAgICByZXR1cm4gYXN5bmNBdGlvbjtcblxuICAgIC8vIGNvbnN0IHRvYXN0ID0gdGhpcy5jcmVhdGUoYXJncyk7XG5cbiAgICAvLyB0b2FzdC5vbihTbm90aWZpcmVFdmVudFR5cGUuTU9VTlRFRCwgKCkgPT4ge1xuICAgIC8vICAgY29uc3Qgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gPSBhc3luYy5zdWJzY3JpYmUoe1xuICAgIC8vICAgICBuZXh0OiAobmV4dD86IFNub3RpZmlyZU1vZGVsKSA9PiB7XG4gICAgLy8gICAgICAgdGhpcy5tZXJnZVRvYXN0KHRvYXN0LCBuZXh0KTtcbiAgICAvLyAgICAgfSxcbiAgICAvLyAgICAgZXJyb3I6IChlcnJvcj86IFNub3RpZmlyZU1vZGVsKSA9PiB7XG4gICAgLy8gICAgICAgdGhpcy5tZXJnZVRvYXN0KHRvYXN0LCBlcnJvciwgU25vdGlmaXJlVHlwZS5FUlJPUik7XG4gICAgLy8gICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgLy8gICAgIH0sXG4gICAgLy8gICAgIGNvbXBsZXRlOiAoKSA9PiB7XG4gICAgLy8gICAgICAgdGhpcy5tZXJnZVRvYXN0KHRvYXN0LCB7fSwgU25vdGlmaXJlVHlwZS5TVUNDRVNTKTtcbiAgICAvLyAgICAgICBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAvLyAgICAgfSxcbiAgICAvLyAgIH0pO1xuICAgIC8vIH0pO1xuXG4gICAgLy8gcmV0dXJuIHRvYXN0O1xuICB9XG5cbiAgcHJpdmF0ZSBtZXJnZVRvYXN0KHRvYXN0OiBhbnksIG5leHQ6IGFueSwgdHlwZT86IFNub3RpZmlyZVR5cGUpIHtcbiAgICBpZiAobmV4dC5ib2R5KSB7XG4gICAgICB0b2FzdC5ib2R5ID0gbmV4dC5ib2R5O1xuICAgIH1cbiAgICBpZiAobmV4dC50aXRsZSkge1xuICAgICAgdG9hc3QudGl0bGUgPSBuZXh0LnRpdGxlO1xuICAgIH1cblxuICAgIGlmICh0eXBlICYmIHRoaXMuZGVmYXVsdENvbmZpZykge1xuICAgICAgY29uc29sZS5sb2codHlwZSk7XG4gICAgICB0b2FzdC5jb25maWcgPSBtZXJnZURlZXAoXG4gICAgICAgIHRvYXN0LmNvbmZpZyxcbiAgICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnLmdsb2JhbCxcbiAgICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnLnNub3RpZmlyZUNvbmZpZz8udHlwZSxcbiAgICAgICAgeyB0eXBlIH0sXG4gICAgICAgIG5leHQuY29uZmlnXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0b2FzdC5jb25maWcgPSBtZXJnZURlZXAodG9hc3QuY29uZmlnLCBuZXh0LmNvbmZpZyk7XG4gICAgfVxuICAgIGlmIChuZXh0Lmh0bWwpIHtcbiAgICAgIHRvYXN0LmNvbmZpZy5odG1sID0gbmV4dC5odG1sO1xuICAgIH1cbiAgICB0aGlzLmVtaXQoKTtcbiAgICB0aGlzLnRvYXN0Q2hhbmdlZC5uZXh0KHRvYXN0KTtcbiAgfVxuICAvKipcbiAgICogcmV0dXJucyBTbm90aWZ5VG9hc3Qgb2JqZWN0XG4gICAqIEBwYXJhbSBpZCBOdW1iZXJcbiAgICogQHJldHVybiBTbm90aWZ5VG9hc3R8dW5kZWZpbmVkXG4gICAqL1xuICBnZXQoaWQ6IG51bWJlcik6IFNub3RpZmlyZVRvYXN0TW9kZWwgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLm5vdGlmaWNhdGlvbnMgJiYgdGhpcy5ub3RpZmljYXRpb25zLmZpbmQoKHRvYXN0KSA9PiB0b2FzdC5pZCA9PT0gaWQpXG4gICAgKTtcbiAgfVxufVxuIl19
297
+ }] }], propDecorators: { success: [], error: [], info: [], warning: [], confirm: [], prompt: [], async: [] } });
298
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc25vdGlmaXJlL3NyYy9saWIvc2VydmljZXMvbm90aWZpY2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFDTCxVQUFVLEVBQ1YsUUFBUSxFQUNSLElBQUksRUFHSixPQUFPLEVBQ1AsR0FBRyxFQUNILFVBQVUsR0FDWCxNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUMvRSxPQUFPLEVBQW1CLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUcvRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLFVBQVUsQ0FBQzs7QUFHM0MsTUFBTSxPQUFPLGdCQUFnQjtJQWdCM0IsWUFDb0MsYUFBZ0M7UUFBaEMsa0JBQWEsR0FBYixhQUFhLENBQW1CO1FBaEJwRTs7V0FFRztRQUNjLHlCQUFvQixHQUFHLElBQUksQ0FBQztRQUU3Qzs7V0FFRztRQUNNLFlBQU8sR0FBRyxJQUFJLE9BQU8sRUFBeUIsQ0FBQztRQUUvQyxpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7UUFDckMsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBdUIsQ0FBQztRQUUzRCxrQkFBYSxHQUErQixFQUFFLENBQUM7SUFJNUMsQ0FBQztJQUVKOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsS0FBcUI7UUFDMUIsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUks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OztJQUNGLFlBQVk7K0NBR1o7QUEwQ0Q7SUFMQyxpQkFBaUI7SUFDbEI7O09BRUc7O0lBQ0YsWUFBWTs4Q0FHWjtBQTBERDtJQUxDLGlCQUFpQjtJQUNsQjs7T0FFRzs7SUFDRixZQUFZOzZDQW9EWjsyRkF4Z0JVLGdCQUFnQjtrQkFENUIsVUFBVTs7MEJBa0JOLE1BQU07MkJBQUMsaUJBQWlCO3lDQXlLM0IsT0FBTyxNQStDUCxLQUFLLE1BNENMLElBQUksTUE0Q0osT0FBTyxNQTRDUCxPQUFPLE1BNENQLE1BQU0sTUE0RE4sS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7XG4gIGNhdGNoRXJyb3IsXG4gIGZpbmFsaXplLFxuICBmcm9tLFxuICBPYnNlcnZhYmxlLFxuICBvZixcbiAgU3ViamVjdCxcbiAgdGFwLFxuICB0aHJvd0Vycm9yLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNldFRvYXN0VHlwZSB9IGZyb20gJy4uL2RlY29yYXRvcnMvc2V0LXRvYXN0LXR5cGUuZGVjb3JhdG9yJztcbmltcG9ydCB7IFRyYW5zZm9ybUFyZ3VtZW50IH0gZnJvbSAnLi4vZGVjb3JhdG9ycy90cmFuc2Zvcm0tYXJndW1lbnQuZGVjb3JhdG9yJztcbmltcG9ydCB7IFNub3RpZmlyZUNvbmZpZywgU25vdGlmaXJlRXZlbnRUeXBlLCBTbm90aWZpcmVUeXBlIH0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7IFNub3RpZmlyZURlZmF1bHRzIH0gZnJvbSAnLi4vZGVmYXVsdHMvZGVmYXVsdHMuaW50ZXJmYWNlJztcbmltcG9ydCB7IFNub3RpZmlyZU1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL3Nub3RpZmlyZS5tb2RlbCc7XG5pbXBvcnQgeyBTbm90aWZpcmVUb2FzdE1vZGVsIH0gZnJvbSAnLi4vY29tcG9uZW50cy90b2FzdC9ub3RpZmlyZS10b2FzdC5tb2RlbCc7XG5pbXBvcnQgeyBtZXJnZURlZXAsIHV1aWQgfSBmcm9tICcuLi91dGlscyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTbm90aWZpcmVTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIE1pbmltdW0gZGlzcGxheSB0aW1lIG9mIHRoZSBub3RpZmljYXRpb24gbWVzc2FnZVxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBtaW5pbXVtRGlzcGxheWVkVGltZSA9IDMwMDA7XG5cbiAgLyoqXG4gICAqIEVtaXRzIE5vdGlmaXJlIE5vdGlmaWNhdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IGVtaXR0ZXIgPSBuZXcgU3ViamVjdDxTbm90aWZpcmVUb2FzdE1vZGVsW10+KCk7XG5cbiAgcmVhZG9ubHkgdG9hc3REZWxldGVkID0gbmV3IFN1YmplY3Q8bnVtYmVyPigpO1xuICByZWFkb25seSB0b2FzdENoYW5nZWQgPSBuZXcgU3ViamVjdDxTbm90aWZpcmVUb2FzdE1vZGVsPigpO1xuXG4gIG5vdGlmaWNhdGlvbnM6IEFycmF5PFNub3RpZmlyZVRvYXN0TW9kZWw+ID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdCgnc25vdGlmaXJlQ29uZmlnJykgcHVibGljIGRlZmF1bHRDb25maWc6IFNub3RpZmlyZURlZmF1bHRzXG4gICkge31cblxuICAvKipcbiAgICogQ3JlYXRlcyB0b2FzdCBhbmQgYWRkIGl0IHRvIGFycmF5LCByZXR1cm5zIHRvYXN0IGlkXG4gICAqIEBwYXJhbSBOb3RpZmljYXRpb25Nb2RlbCBOb3RpZmljYXRpb25Nb2RlbFxuICAgKiBAcmV0dXJuIG51bWJlclxuICAgKi9cbiAgY3JlYXRlKG5vdGlmOiBTbm90aWZpcmVNb2RlbCk6IFNub3RpZmlyZVRvYXN0TW9kZWwge1xuICAgIGlmICh0aGlzLmRlZmF1bHRDb25maWcudHlwZSAmJiBub3RpZi5jb25maWcgJiYgbm90aWYuY29uZmlnLnR5cGUpIHtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IG1lcmdlRGVlcChcbiAgICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnLnNub3RpZmlyZUNvbmZpZyxcbiAgICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnLnR5cGVbbm90aWYuY29uZmlnLnR5cGVdLFxuICAgICAgICBub3RpZi5jb25maWdcbiAgICAgICk7XG4gICAgICBjb25zdCB0b2FzdCA9IG5ldyBTbm90aWZpcmVUb2FzdE1vZGVsKFxuICAgICAgICB1dWlkKCksXG4gICAgICAgIG5vdGlmLnRpdGxlID8gbm90aWYudGl0bGUgOiAnJyxcbiAgICAgICAgbm90aWYuYm9keSA/IG5vdGlmLmJvZHkgOiAnJyxcbiAgICAgICAgY29uZmlnXG4gICAgICApO1xuICAgICAgdGhpcy5hZGQodG9hc3QpO1xuICAgICAgcmV0dXJuIHRvYXN0O1xuICAgIH1cbiAgICBjb25zdCBjb25maWcgPSBtZXJnZURlZXAodGhpcy5kZWZhdWx0Q29uZmlnLnNub3RpZmlyZUNvbmZpZywgbm90aWYuY29uZmlnKTtcbiAgICBjb25zdCBkZWZhdWxUb2FzdCA9IG5ldyBTbm90aWZpcmVUb2FzdE1vZGVsKFxuICAgICAgdXVpZCgpLFxuICAgICAgbm90aWYudGl0bGUgPyBub3RpZi50aXRsZSA6ICcnLFxuICAgICAgbm90aWYuYm9keSA/IG5vdGlmLmJvZHkgOiAnJyxcbiAgICAgIGNvbmZpZ1xuICAgICk7XG4gICAgdGhpcy5hZGQoZGVmYXVsVG9hc3QpO1xuICAgIHJldHVybiBkZWZhdWxUb2FzdDtcbiAgfVxuICAvKipcbiAgICogSWYgSUQgcGFzc2VkLCBlbWl0cyB0b2FzdCBhbmltYXRpb24gcmVtb3ZlLCBpZiBJRCAmIFJFTU9WRSBwYXNzZWQsIHJlbW92ZXMgdG9hc3QgZnJvbSBub3RpZmljYXRpb25zIGFycmF5XG4gICAqIEBwYXJhbSBpZCBudW1iZXJcbiAgICogQHBhcmFtIHJlbW92ZSBib29sZWFuXG4gICAqL1xuICByZW1vdmUoaWQ6IG51bWJlciwgcmVtb3ZlPzogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICghaWQpIHtcbiAgICAgIHJldHVybiB0aGlzLmNsZWFyKCk7XG4gICAgfVxuICAgIGlmIChyZW1vdmUpIHtcbiAgICAgIHRoaXMubm90aWZpY2F0aW9ucyA9IHRoaXMubm90aWZpY2F0aW9ucy5maWx0ZXIoXG4gICAgICAgICh0b2FzdCkgPT4gdG9hc3QuaWQgIT09IGlkXG4gICAgICApO1xuICAgICAgcmV0dXJuIHRoaXMuZW1pdCgpO1xuICAgIH1cbiAgICB0aGlzLnRvYXN0RGVsZXRlZC5uZXh0KGlkKTtcbiAgfVxuXG4gIHNldERlZmF1bHRzKGRlZmF1bHRzOiBTbm90aWZpcmVEZWZhdWx0cyk6IFNub3RpZmlyZURlZmF1bHRzIHtcbiAgICBjb25zdCBtZXJnZWRDb25maWcgPSAodGhpcy5kZWZhdWx0Q29uZmlnID0gbWVyZ2VEZWVwKFxuICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnLFxuICAgICAgZGVmYXVsdHNcbiAgICApIGFzIFNub3RpZmlyZURlZmF1bHRzKTtcbiAgICByZXR1cm4gbWVyZ2VkQ29uZmlnO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIG5vdGlmaWNhdGlvbnMgYXJyYXlcbiAgICovXG4gIGNsZWFyKCk6IHZvaWQge1xuICAgIHRoaXMubm90aWZpY2F0aW9ucyA9IFtdO1xuICAgIHRoaXMuZW1pdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIGFkZCBOb3RpZmlyZVRvYXN0IHRvIG5vdGlmaWNhdGlvbnMgYXJyYXlcbiAgICogQHBhcmFtIHRvYXN0IE5vdGlmaXJlVG9hc3RcbiAgICovXG4gIHByaXZhdGUgYWRkKHRvYXN0OiBTbm90aWZpcmVUb2FzdE1vZGVsKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnICYmXG4gICAgICB0aGlzLmRlZmF1bHRDb25maWcuZ2xvYmFsICYmXG4gICAgICB0aGlzLmRlZmF1bHRDb25maWcuZ2xvYmFsLmZpbHRlckR1cGxpY2F0ZXMgJiZcbiAgICAgIHRoaXMuY29udGFpbnNUb2FzdCh0b2FzdClcbiAgICApIHtcbiAgICAgIGlmICghdGhpcy5kZWZhdWx0Q29uZmlnLmdsb2JhbC5maWx0ZXJEdXBsaWNhdGVzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBnbG9iYWwgY29uZmlnJyk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChcbiAgICAgIHRoaXMuZGVmYXVsdENvbmZpZyAmJlxuICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnLmdsb2JhbCAmJlxuICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnLmdsb2JhbC5uZXdPblRvcFxuICAgICkge1xuICAgICAgdGhpcy5ub3RpZmljYXRpb25zLnVuc2hpZnQodG9hc3QpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5vdGlmaWNhdGlvbnMucHVzaCh0b2FzdCk7XG4gICAgfVxuICAgIHRoaXMuZW1pdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIGVtaXQgY2hhbmdlcyBpbiBub3RpZmljYXRpb25zIGFycmF5XG4gICAqL1xuICBwcml2YXRlIGVtaXQoKTogdm9pZCB7XG4gICAgdGhpcy5lbWl0dGVyLm5leHQodGhpcy5ub3RpZmljYXRpb25zLnNsaWNlKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIGNoZWNrcyBpZiB0aGUgdG9hc3QgaXMgaW4gdGhlIGNvbGxlY3Rpb24uXG4gICAqIEBwYXJhbSBpblRvYXN0IE5vdGlmaXJlVG9hc3RcbiAgICogQHJldHVybnMgYm9vbGVhblxuICAgKi9cbiAgcHJpdmF0ZSBjb250YWluc1RvYXN0KGluVG9hc3Q6IFNub3RpZmlyZVRvYXN0TW9kZWwpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5ub3RpZmljYXRpb25zLnNvbWUoKHRvYXN0KSA9PiB0b2FzdC5lcXVhbHMoaW5Ub2FzdCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgZW1wdHkgdG9hc3Qgd2l0aCBodG1sIHN0cmluZyBpbnNpZGVcbiAgICogQHBhcmFtIGh0bWwgc3RyaW5nIHwgU2FmZUh0bWxcbiAgICogQHBhcmFtIGNvbmZpZyBOb3RpZmlyZUNvbmZpZ1xuICAgKiBAcmV0dXJucyBudW1iZXJcbiAgICovXG4gIGh0bWwoaHRtbDogc3RyaW5nIHwgU2FmZUh0bWwsIGNvbmZpZz86IFNub3RpZmlyZUNvbmZpZyk6IFNub3RpZmlyZVRvYXN0TW9kZWwge1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZSh7XG4gICAgICB0aXRsZTogdW5kZWZpbmVkLFxuICAgICAgYm9keTogdW5kZWZpbmVkLFxuICAgICAgY29uZmlnOiB7XG4gICAgICAgIC4uLmNvbmZpZyxcbiAgICAgICAgLi4ueyBodG1sIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCBzdWNjZXNzIHN0eWxlIHJldHVybnMgdG9hc3QgaWQ7XG4gICAqIEBwYXJhbSBib2R5IHN0cmluZ1xuICAgKiBAcmV0dXJucyBudW1iZXJcbiAgICovXG4gIHN1Y2Nlc3MoYm9keTogc3RyaW5nKTogU25vdGlmaXJlVG9hc3RNb2RlbDtcbiAgLyoqXG4gICAqIENyZWF0ZSB0b2FzdCB3aXRoIHN1Y2Nlc3Mgc3R5bGUgcmV0dXJucyB0b2FzdCBpZDtcbiAgICogQHBhcmFtIGJvZHkgc3RyaW5nXG4gICAqIEBwYXJhbSB0aXRsZSBzdHJpbmdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBzdWNjZXNzKGJvZHk6IHN0cmluZywgdGl0bGU6IHN0cmluZyk6IFNub3RpZmlyZVRvYXN0TW9kZWw7XG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCBzdWNjZXNzIHN0eWxlIHJldHVybnMgdG9hc3QgaWQ7XG4gICAqIEBwYXJhbSBib2R5IHN0cmluZ1xuICAgKiBAcGFyYW0gY29uZmlnIE5vdGlmaWNhdGlvbkNvbmZpZ1xuICAgKiBAcmV0dXJucyBudW1iZXJcbiAgICovXG4gIHN1Y2Nlc3MoYm9keTogc3RyaW5nLCBjb25maWc6IFNub3RpZmlyZUNvbmZpZyk6IFNub3RpZmlyZVRvYXN0TW9kZWw7XG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCBzdWNjZXNzIHN0eWxlICByZXR1cm5zIHRvYXN0IGlkO1xuICAgKiBAcGFyYW0gW2JvZHldIHN0cmluZ1xuICAgKiBAcGFyYW0gW3RpdGxlXSBzdHJpbmdcbiAgICogQHBhcmFtIFtjb25maWddIE5vdGlmaWNhdGlvbkNvbmZpZ1xuICAgKiBAcmV0dXJucyBudW1iZXJcbiAgICovXG4gIHN1Y2Nlc3MoXG4gICAgYm9keTogc3RyaW5nLFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgY29uZmlnOiBTbm90aWZpcmVDb25maWdcbiAgKTogU25vdGlmaXJlVG9hc3RNb2RlbDtcblxuICAvKipcbiAgICogVHJhbnNmb3JtIHRvYXN0IGFyZ3VtZW50cyBpbnRvIE5vdGlmaWNhdGlvbk1vZGVsIG9iamVjdFxuICAgKi9cbiAgQFRyYW5zZm9ybUFyZ3VtZW50XG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGN1cnJlbnQgdG9hc3QgdHlwZSBhbmQgY29sbGVjdHMgZGVmYXVsdCBjb25maWd1cmF0aW9uXG4gICAqL1xuICBAU2V0VG9hc3RUeXBlXG4gIHN1Y2Nlc3MoYXJnczogYW55KTogU25vdGlmaXJlVG9hc3RNb2RlbCB7XG4gICAgaWYgKCFhcmdzLmNvbmZpZykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIGNvbmZpZywgcGxlYXNlIGNvbmZpZ3VyZSBzZXJ2aWNlIGFjY29yZGluZ2x5Jyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNyZWF0ZShhcmdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCBlcnJvciBzdHlsZSByZXR1cm5zIHRvYXN0IGlkO1xuICAgKiBAcGFyYW0gYm9keSBzdHJpbmdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBlcnJvcihib2R5OiBzdHJpbmcpOiBTbm90aWZpcmVUb2FzdE1vZGVsO1xuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggZXJyb3Igc3R5bGUgcmV0dXJucyB0b2FzdCBpZDtcbiAgICogQHBhcmFtIGJvZHkgc3RyaW5nXG4gICAqIEBwYXJhbSB0aXRsZSBzdHJpbmdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBlcnJvcihib2R5OiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcpOiBTbm90aWZpcmVUb2FzdE1vZGVsO1xuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggZXJyb3Igc3R5bGUgcmV0dXJucyB0b2FzdCBpZDtcbiAgICogQHBhcmFtIGJvZHkgc3RyaW5nXG4gICAqIEBwYXJhbSBjb25maWcgTm90aWZpY2F0aW9uQ29uZmlnXG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgZXJyb3IoYm9keTogc3RyaW5nLCBjb25maWc6IFNub3RpZmlyZUNvbmZpZyk6IFNub3RpZmlyZVRvYXN0TW9kZWw7XG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCBlcnJvciBzdHlsZSAgcmV0dXJucyB0b2FzdCBpZDtcbiAgICogQHBhcmFtIFtib2R5XSBzdHJpbmdcbiAgICogQHBhcmFtIFt0aXRsZV0gc3RyaW5nXG4gICAqIEBwYXJhbSBbY29uZmlnXSBOb3RpZmljYXRpb25Db25maWdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBlcnJvcihcbiAgICBib2R5OiBzdHJpbmcsXG4gICAgdGl0bGU6IHN0cmluZyxcbiAgICBjb25maWc6IFNub3RpZmlyZUNvbmZpZ1xuICApOiBTbm90aWZpcmVUb2FzdE1vZGVsO1xuICAvKipcbiAgICogVHJhbnNmb3JtIHRvYXN0IGFyZ3VtZW50cyBpbnRvIE5vdGlmaWNhdGlvbk1vZGVsIG9iamVjdFxuICAgKi9cbiAgQFRyYW5zZm9ybUFyZ3VtZW50XG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGN1cnJlbnQgdG9hc3QgdHlwZSBhbmQgY29sbGVjdHMgZGVmYXVsdCBjb25maWd1cmF0aW9uXG4gICAqL1xuICBAU2V0VG9hc3RUeXBlXG4gIGVycm9yKGFyZ3M6IGFueSk6IFNub3RpZmlyZVRvYXN0TW9kZWwge1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZShhcmdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCBpbmZvIHN0eWxlIHJldHVybnMgdG9hc3QgaWQ7XG4gICAqIEBwYXJhbSBib2R5IHN0cmluZ1xuICAgKiBAcmV0dXJucyBudW1iZXJcbiAgICovXG4gIGluZm8oYm9keTogc3RyaW5nKTogU25vdGlmaXJlVG9hc3RNb2RlbDtcbiAgLyoqXG4gICAqIENyZWF0ZSB0b2FzdCB3aXRoIGluZm8gc3R5bGUgcmV0dXJucyB0b2FzdCBpZDtcbiAgICogQHBhcmFtIGJvZHkgc3RyaW5nXG4gICAqIEBwYXJhbSB0aXRsZSBzdHJpbmdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBpbmZvKGJvZHk6IHN0cmluZywgdGl0bGU6IHN0cmluZyk6IFNub3RpZmlyZVRvYXN0TW9kZWw7XG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCBpbmZvIHN0eWxlIHJldHVybnMgdG9hc3QgaWQ7XG4gICAqIEBwYXJhbSBib2R5IHN0cmluZ1xuICAgKiBAcGFyYW0gY29uZmlnIE5vdGlmaWNhdGlvbkNvbmZpZ1xuICAgKiBAcmV0dXJucyBudW1iZXJcbiAgICovXG4gIGluZm8oYm9keTogc3RyaW5nLCBjb25maWc6IFNub3RpZmlyZUNvbmZpZyk6IFNub3RpZmlyZVRvYXN0TW9kZWw7XG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCBpbmZvIHN0eWxlICByZXR1cm5zIHRvYXN0IGlkO1xuICAgKiBAcGFyYW0gW2JvZHldIHN0cmluZ1xuICAgKiBAcGFyYW0gW3RpdGxlXSBzdHJpbmdcbiAgICogQHBhcmFtIFtjb25maWddIE5vdGlmaWNhdGlvbkNvbmZpZ1xuICAgKiBAcmV0dXJucyBudW1iZXJcbiAgICovXG4gIGluZm8oXG4gICAgYm9keTogc3RyaW5nLFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgY29uZmlnOiBTbm90aWZpcmVDb25maWdcbiAgKTogU25vdGlmaXJlVG9hc3RNb2RlbDtcbiAgLyoqXG4gICAqIFRyYW5zZm9ybSB0b2FzdCBhcmd1bWVudHMgaW50byBOb3RpZmljYXRpb25Nb2RlbCBvYmplY3RcbiAgICovXG4gIEBUcmFuc2Zvcm1Bcmd1bWVudFxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBjdXJyZW50IHRvYXN0IHR5cGUgYW5kIGNvbGxlY3RzIGRlZmF1bHQgY29uZmlndXJhdGlvblxuICAgKi9cbiAgQFNldFRvYXN0VHlwZVxuICBpbmZvKGFyZ3M6IGFueSk6IFNub3RpZmlyZVRvYXN0TW9kZWwge1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZShhcmdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCB3YXJuaW5nIHN0eWxlIHJldHVybnMgdG9hc3QgaWQ7XG4gICAqIEBwYXJhbSBib2R5IHN0cmluZ1xuICAgKiBAcmV0dXJucyBudW1iZXJcbiAgICovXG4gIHdhcm5pbmcoYm9keTogc3RyaW5nKTogU25vdGlmaXJlVG9hc3RNb2RlbDtcbiAgLyoqXG4gICAqIENyZWF0ZSB0b2FzdCB3aXRoIHdhcm5pbmcgc3R5bGUgcmV0dXJucyB0b2FzdCBpZDtcbiAgICogQHBhcmFtIGJvZHkgc3RyaW5nXG4gICAqIEBwYXJhbSB0aXRsZSBzdHJpbmdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICB3YXJuaW5nKGJvZHk6IHN0cmluZywgdGl0bGU6IHN0cmluZyk6IFNub3RpZmlyZVRvYXN0TW9kZWw7XG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCB3YXJuaW5nIHN0eWxlIHJldHVybnMgdG9hc3QgaWQ7XG4gICAqIEBwYXJhbSBib2R5IHN0cmluZ1xuICAgKiBAcGFyYW0gY29uZmlnIE5vdGlmaWNhdGlvbkNvbmZpZ1xuICAgKiBAcmV0dXJucyBudW1iZXJcbiAgICovXG4gIHdhcm5pbmcoYm9keTogc3RyaW5nLCBjb25maWc6IFNub3RpZmlyZUNvbmZpZyk6IFNub3RpZmlyZVRvYXN0TW9kZWw7XG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCB3YXJuaW5nIHN0eWxlICByZXR1cm5zIHRvYXN0IGlkO1xuICAgKiBAcGFyYW0gW2JvZHldIHN0cmluZ1xuICAgKiBAcGFyYW0gW3RpdGxlXSBzdHJpbmdcbiAgICogQHBhcmFtIFtjb25maWddIE5vdGlmaWNhdGlvbkNvbmZpZ1xuICAgKiBAcmV0dXJucyBudW1iZXJcbiAgICovXG4gIHdhcm5pbmcoXG4gICAgYm9keTogc3RyaW5nLFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgY29uZmlnOiBTbm90aWZpcmVDb25maWdcbiAgKTogU25vdGlmaXJlVG9hc3RNb2RlbDtcbiAgLyoqXG4gICAqIFRyYW5zZm9ybSB0b2FzdCBhcmd1bWVudHMgaW50byBOb3RpZmljYXRpb25Nb2RlbCBvYmplY3RcbiAgICovXG4gIEBUcmFuc2Zvcm1Bcmd1bWVudFxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBjdXJyZW50IHRvYXN0IHR5cGUgYW5kIGNvbGxlY3RzIGRlZmF1bHQgY29uZmlndXJhdGlvblxuICAgKi9cbiAgQFNldFRvYXN0VHlwZVxuICB3YXJuaW5nKGFyZ3M6IGFueSk6IFNub3RpZmlyZVRvYXN0TW9kZWwge1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZShhcmdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCBjb25maXJtIHN0eWxlIHJldHVybnMgdG9hc3QgaWQ7XG4gICAqIEBwYXJhbSBib2R5IHN0cmluZ1xuICAgKiBAcmV0dXJucyBudW1iZXJcbiAgICovXG4gIGNvbmZpcm0oYm9keTogc3RyaW5nKTogU25vdGlmaXJlVG9hc3RNb2RlbDtcbiAgLyoqXG4gICAqIENyZWF0ZSB0b2FzdCB3aXRoIGNvbmZpcm0gc3R5bGUgcmV0dXJucyB0b2FzdCBpZDtcbiAgICogQHBhcmFtIGJvZHkgc3RyaW5nXG4gICAqIEBwYXJhbSB0aXRsZSBzdHJpbmdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBjb25maXJtKGJvZHk6IHN0cmluZywgdGl0bGU6IHN0cmluZyk6IFNub3RpZmlyZVRvYXN0TW9kZWw7XG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCBjb25maXJtIHN0eWxlIHJldHVybnMgdG9hc3QgaWQ7XG4gICAqIEBwYXJhbSBib2R5IHN0cmluZ1xuICAgKiBAcGFyYW0gY29uZmlnIE5vdGlmaWNhdGlvbkNvbmZpZ1xuICAgKiBAcmV0dXJucyBudW1iZXJcbiAgICovXG4gIGNvbmZpcm0oYm9keTogc3RyaW5nLCBjb25maWc6IFNub3RpZmlyZUNvbmZpZyk6IFNub3RpZmlyZVRvYXN0TW9kZWw7XG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCBjb25maXJtIHN0eWxlICByZXR1cm5zIHRvYXN0IGlkO1xuICAgKiBAcGFyYW0gW2JvZHldIHN0cmluZ1xuICAgKiBAcGFyYW0gW3RpdGxlXSBzdHJpbmdcbiAgICogQHBhcmFtIFtjb25maWddIE5vdGlmaWNhdGlvbkNvbmZpZ1xuICAgKiBAcmV0dXJucyBudW1iZXJcbiAgICovXG4gIGNvbmZpcm0oXG4gICAgYm9keTogc3RyaW5nLFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgY29uZmlnOiBTbm90aWZpcmVDb25maWdcbiAgKTogU25vdGlmaXJlVG9hc3RNb2RlbDtcbiAgLyoqXG4gICAqIFRyYW5zZm9ybSB0b2FzdCBhcmd1bWVudHMgaW50byBOb3RpZmljYXRpb25Nb2RlbCBvYmplY3RcbiAgICovXG4gIEBUcmFuc2Zvcm1Bcmd1bWVudFxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBjdXJyZW50IHRvYXN0IHR5cGUgYW5kIGNvbGxlY3RzIGRlZmF1bHQgY29uZmlndXJhdGlvblxuICAgKi9cbiAgQFNldFRvYXN0VHlwZVxuICBjb25maXJtKGFyZ3M6IGFueSk6IFNub3RpZmlyZVRvYXN0TW9kZWwge1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZShhcmdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCBQcm9tcHQgc3R5bGUgd2l0aCB0d28gYnV0dG9ucywgcmV0dXJucyB0b2FzdCBpZDtcbiAgICogQHBhcmFtIGJvZHkgc3RyaW5nXG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgcHJvbXB0KGJvZHk6IHN0cmluZyk6IFNub3RpZmlyZVRvYXN0TW9kZWw7XG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCBQcm9tcHQgc3R5bGUgd2l0aCB0d28gYnV0dG9ucywgcmV0dXJucyB0b2FzdCBpZDtcbiAgICogQHBhcmFtIGJvZHkgc3RyaW5nXG4gICAqIEBwYXJhbSB0aXRsZSBzdHJpbmdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBwcm9tcHQoYm9keTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKTogU25vdGlmaXJlVG9hc3RNb2RlbDtcbiAgLyoqXG4gICAqIENyZWF0ZSB0b2FzdCB3aXRoIFByb21wdCBzdHlsZSB3aXRoIHR3byBidXR0b25zLCByZXR1cm5zIHRvYXN0IGlkO1xuICAgKiBAcGFyYW0gYm9keSBzdHJpbmdcbiAgICogQHBhcmFtIGNvbmZpZyBOb3RpZmljYXRpb25Db25maWdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBwcm9tcHQoYm9keTogc3RyaW5nLCBjb25maWc6IFNub3RpZmlyZUNvbmZpZyk6IFNub3RpZmlyZVRvYXN0TW9kZWw7XG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCBQcm9tcHQgc3R5bGUgd2l0aCB0d28gYnV0dG9ucywgcmV0dXJucyB0b2FzdCBpZDtcbiAgICogQHBhcmFtIFtib2R5XSBzdHJpbmdcbiAgICogQHBhcmFtIFt0aXRsZV0gc3RyaW5nXG4gICAqIEBwYXJhbSBbY29uZmlnXSBOb3RpZmljYXRpb25Db25maWdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBwcm9tcHQoXG4gICAgYm9keTogc3RyaW5nLFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgY29uZmlnOiBTbm90aWZpcmVDb25maWdcbiAgKTogU25vdGlmaXJlVG9hc3RNb2RlbDtcbiAgLyoqXG4gICAqIFRyYW5zZm9ybSB0b2FzdCBhcmd1bWVudHMgaW50byBOb3RpZmljYXRpb25Nb2RlbCBvYmplY3RcbiAgICovXG4gIEBUcmFuc2Zvcm1Bcmd1bWVudFxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBjdXJyZW50IHRvYXN0IHR5cGUgYW5kIGNvbGxlY3RzIGRlZmF1bHQgY29uZmlndXJhdGlvblxuICAgKi9cbiAgQFNldFRvYXN0VHlwZVxuICBwcm9tcHQoYXJnczogYW55KTogU25vdGlmaXJlVG9hc3RNb2RlbCB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlKGFyZ3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYXN5bmMgdG9hc3Qgd2l0aCBJbmZvIHN0eWxlLiBQYXNzIGFjdGlvbiwgYW5kIHJlc29sdmUgb3IgcmVqZWN0IGl0LlxuICAgKiBAcGFyYW0gYm9keSBzdHJpbmdcbiAgICogQHBhcmFtIGFjdGlvbiBQcm9taXNlPE5vdGlmaWNhdGlvbk1vZGVsPiB8IE9ic2VydmFibGU8Tm90aWZpY2F0aW9uTW9kZWw+XG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgYXN5bmMoXG4gICAgYm9keTogc3RyaW5nLFxuICAgIGFjdGlvbjogUHJvbWlzZTxTbm90aWZpcmVNb2RlbD4gfCBPYnNlcnZhYmxlPFNub3RpZmlyZU1vZGVsPlxuICApOiBPYnNlcnZhYmxlPGFueT47XG4gIC8qKlxuICAgKiBDcmVhdGVzIGFzeW5jIHRvYXN0IHdpdGggSW5mbyBzdHlsZS4gUGFzcyBhY3Rpb24sIGFuZCByZXNvbHZlIG9yIHJlamVjdCBpdC5cbiAgICogQHBhcmFtIGJvZHkgc3RyaW5nXG4gICAqIEBwYXJhbSB0aXRsZSBzdHJpbmdcbiAgICogQHBhcmFtIGFjdGlvbiBQcm9taXNlPE5vdGlmaWNhdGlvbk1vZGVsPiB8IE9ic2VydmFibGU8Tm90aWZpY2F0aW9uTW9kZWw+XG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgYXN5bmMoXG4gICAgYm9keTogc3RyaW5nLFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgYWN0aW9uOiBQcm9taXNlPFNub3RpZmlyZU1vZGVsPiB8IE9ic2VydmFibGU8U25vdGlmaXJlTW9kZWw+XG4gICk6IE9ic2VydmFibGU8YW55PjtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYXN5bmMgdG9hc3Qgd2l0aCBJbmZvIHN0eWxlLiBQYXNzIGFjdGlvbiwgYW5kIHJlc29sdmUgb3IgcmVqZWN0IGl0LlxuICAgKiBAcGFyYW0gYm9keSBzdHJpbmdcbiAgICogQHBhcmFtIGFjdGlvbiBQcm9taXNlPE5vdGlmaWNhdGlvbk1vZGVsPiB8IE9ic2VydmFibGU8Tm90aWZpY2F0aW9uTW9kZWw+XG4gICAqIEBwYXJhbSBbY29uZmlnXSBOb3RpZmljYXRpb25Db25maWdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBhc3luYyhcbiAgICBib2R5OiBzdHJpbmcsXG4gICAgYWN0aW9uOiBQcm9taXNlPFNub3RpZmlyZU1vZGVsPiB8IE9ic2VydmFibGU8U25vdGlmaXJlTW9kZWw+LFxuICAgIGNvbmZpZzogU25vdGlmaXJlQ29uZmlnXG4gICk6IE9ic2VydmFibGU8YW55PjtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYXN5bmMgdG9hc3Qgd2l0aCBJbmZvIHN0eWxlLiBQYXNzIGFjdGlvbiwgYW5kIHJlc29sdmUgb3IgcmVqZWN0IGl0LlxuICAgKiBAcGFyYW0gYm9keSBzdHJpbmdcbiAgICogQHBhcmFtIHRpdGxlIHN0cmluZ1xuICAgKiBAcGFyYW0gYWN0aW9uIFByb21pc2U8Tm90aWZpY2F0aW9uTW9kZWw+IHwgT2JzZXJ2YWJsZTxOb3RpZmljYXRpb25Nb2RlbD5cbiAgICogQHBhcmFtIFtjb25maWddIE5vdGlmaWNhdGlvbkNvbmZpZ1xuICAgKiBAcmV0dXJucyBudW1iZXJcbiAgICovXG4gIGFzeW5jKFxuICAgIGJvZHk6IHN0cmluZyxcbiAgICB0aXRsZTogc3RyaW5nLFxuICAgIGFjdGlvbjogUHJvbWlzZTxTbm90aWZpcmVNb2RlbD4gfCBPYnNlcnZhYmxlPFNub3RpZmlyZU1vZGVsPixcbiAgICBjb25maWc6IFNub3RpZmlyZUNvbmZpZ1xuICApOiBPYnNlcnZhYmxlPGFueT47XG4gIC8qKlxuICAgKiBUcmFuc2Zvcm0gdG9hc3QgYXJndW1lbnRzIGludG8gTm90aWZpY2F0aW9uTW9kZWwgb2JqZWN0XG4gICAqL1xuICBAVHJhbnNmb3JtQXJndW1lbnRcbiAgLyoqXG4gICAqIERldGVybWluZXMgY3VycmVudCB0b2FzdCB0eXBlIGFuZCBjb2xsZWN0cyBkZWZhdWx0IGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIEBTZXRUb2FzdFR5cGVcbiAgYXN5bmMoYXJnczogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgYXN5bmM6IE9ic2VydmFibGU8YW55PjtcbiAgICBpZiAoYXJncy5hY3Rpb24gaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICBhc3luYyA9IGZyb20oYXJncy5hY3Rpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICBhc3luYyA9IGFyZ3MuYWN0aW9uO1xuICAgIH1cblxuICAgIGNvbnN0IHRvYXN0ID0gdGhpcy5jcmVhdGUoYXJncyk7XG4gICAgbGV0IGZhaWxlZCA9IGZhbHNlO1xuICAgIGNvbnN0IGFzeW5jQXRpb24gPSBhc3luYy5waXBlKFxuICAgICAgdGFwKChuZXh0KSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdjYWxsZWQnKSwgdGhpcy5tZXJnZVRvYXN0KHRvYXN0LCBuZXh0KTtcbiAgICAgIH0pLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgZmFpbGVkID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xuICAgICAgfSksXG4gICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgIHRoaXMubWVyZ2VUb2FzdChcbiAgICAgICAgICB0b2FzdCxcbiAgICAgICAgICB7fSxcbiAgICAgICAgICBmYWlsZWQgPT09IHRydWUgPyBTbm90aWZpcmVUeXBlLkVSUk9SIDogU25vdGlmaXJlVHlwZS5TVUNDRVNTXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICk7XG4gICAgdG9hc3Qub24oU25vdGlmaXJlRXZlbnRUeXBlLk1PVU5URUQsICgpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKCdtb3VudGVkJyk7XG4gICAgICByZXR1cm4gYXN5bmNBdGlvbjtcbiAgICB9KTtcbiAgICByZXR1cm4gYXN5bmNBdGlvbjtcblxuICAgIC8vIGNvbnN0IHRvYXN0ID0gdGhpcy5jcmVhdGUoYXJncyk7XG5cbiAgICAvLyB0b2FzdC5vbihTbm90aWZpcmVFdmVudFR5cGUuTU9VTlRFRCwgKCkgPT4ge1xuICAgIC8vICAgY29uc3Qgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gPSBhc3luYy5zdWJzY3JpYmUoe1xuICAgIC8vICAgICBuZXh0OiAobmV4dD86IFNub3RpZmlyZU1vZGVsKSA9PiB7XG4gICAgLy8gICAgICAgdGhpcy5tZXJnZVRvYXN0KHRvYXN0LCBuZXh0KTtcbiAgICAvLyAgICAgfSxcbiAgICAvLyAgICAgZXJyb3I6IChlcnJvcj86IFNub3RpZmlyZU1vZGVsKSA9PiB7XG4gICAgLy8gICAgICAgdGhpcy5tZXJnZVRvYXN0KHRvYXN0LCBlcnJvciwgU25vdGlmaXJlVHlwZS5FUlJPUik7XG4gICAgLy8gICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgLy8gICAgIH0sXG4gICAgLy8gICAgIGNvbXBsZXRlOiAoKSA9PiB7XG4gICAgLy8gICAgICAgdGhpcy5tZXJnZVRvYXN0KHRvYXN0LCB7fSwgU25vdGlmaXJlVHlwZS5TVUNDRVNTKTtcbiAgICAvLyAgICAgICBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAvLyAgICAgfSxcbiAgICAvLyAgIH0pO1xuICAgIC8vIH0pO1xuXG4gICAgLy8gcmV0dXJuIHRvYXN0O1xuICB9XG5cbiAgcHJpdmF0ZSBtZXJnZVRvYXN0KHRvYXN0OiBhbnksIG5leHQ6IGFueSwgdHlwZT86IFNub3RpZmlyZVR5cGUpIHtcbiAgICBpZiAobmV4dC5ib2R5KSB7XG4gICAgICB0b2FzdC5ib2R5ID0gbmV4dC5ib2R5O1xuICAgIH1cbiAgICBpZiAobmV4dC50aXRsZSkge1xuICAgICAgdG9hc3QudGl0bGUgPSBuZXh0LnRpdGxlO1xuICAgIH1cblxuICAgIGlmICh0eXBlICYmIHRoaXMuZGVmYXVsdENvbmZpZykge1xuICAgICAgY29uc29sZS5sb2codHlwZSk7XG4gICAgICB0b2FzdC5jb25maWcgPSBtZXJnZURlZXAoXG4gICAgICAgIHRvYXN0LmNvbmZpZyxcbiAgICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnLmdsb2JhbCxcbiAgICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnLnNub3RpZmlyZUNvbmZpZz8udHlwZSxcbiAgICAgICAgeyB0eXBlIH0sXG4gICAgICAgIG5leHQuY29uZmlnXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0b2FzdC5jb25maWcgPSBtZXJnZURlZXAodG9hc3QuY29uZmlnLCBuZXh0LmNvbmZpZyk7XG4gICAgfVxuICAgIGlmIChuZXh0Lmh0bWwpIHtcbiAgICAgIHRvYXN0LmNvbmZpZy5odG1sID0gbmV4dC5odG1sO1xuICAgIH1cbiAgICB0aGlzLmVtaXQoKTtcbiAgICB0aGlzLnRvYXN0Q2hhbmdlZC5uZXh0KHRvYXN0KTtcbiAgfVxuICAvKipcbiAgICogcmV0dXJucyBTbm90aWZ5VG9hc3Qgb2JqZWN0XG4gICAqIEBwYXJhbSBpZCBOdW1iZXJcbiAgICogQHJldHVybiBTbm90aWZ5VG9hc3R8dW5kZWZpbmVkXG4gICAqL1xuICBnZXQoaWQ6IG51bWJlcik6IFNub3RpZmlyZVRvYXN0TW9kZWwgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLm5vdGlmaWNhdGlvbnMgJiYgdGhpcy5ub3RpZmljYXRpb25zLmZpbmQoKHRvYXN0KSA9PiB0b2FzdC5pZCA9PT0gaWQpXG4gICAgKTtcbiAgfVxufVxuIl19
@@ -3,7 +3,7 @@ import { CommonModule } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
4
  import { Injectable, Inject, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Pipe, EventEmitter, Output, NgModule } from '@angular/core';
5
5
  import { __decorate } from 'tslib';
6
- import { Subject, from, tap, catchError, throwError, finalize, takeUntil } from 'rxjs';
6
+ import { Subject, from, tap, throwError, catchError, finalize, takeUntil } from 'rxjs';
7
7
 
8
8
  /**
9
9
  * Defines toast style depending on method name
@@ -497,8 +497,8 @@ class SnotifireService {
497
497
  get(id) {
498
498
  return (this.notifications && this.notifications.find((toast) => toast.id === id));
499
499
  }
500
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SnotifireService, deps: [{ token: 'snotifireConfig' }], target: i0.ɵɵFactoryTarget.Injectable }); }
501
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SnotifireService }); }
500
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: SnotifireService, deps: [{ token: 'snotifireConfig' }], target: i0.ɵɵFactoryTarget.Injectable }); }
501
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: SnotifireService }); }
502
502
  }
503
503
  __decorate([
504
504
  TransformArgument
@@ -556,12 +556,12 @@ __decorate([
556
556
  ,
557
557
  SetToastType
558
558
  ], SnotifireService.prototype, "async", null);
559
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SnotifireService, decorators: [{
559
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: SnotifireService, decorators: [{
560
560
  type: Injectable
561
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
561
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
562
562
  type: Inject,
563
563
  args: ['snotifireConfig']
564
- }] }]; }, propDecorators: { success: [], error: [], info: [], warning: [], confirm: [], prompt: [], async: [] } });
564
+ }] }], propDecorators: { success: [], error: [], info: [], warning: [], confirm: [], prompt: [], async: [] } });
565
565
 
566
566
  /**
567
567
  * Buttons component
@@ -576,13 +576,13 @@ class ButtonsComponent {
576
576
  remove() {
577
577
  this.service.remove(this.toast.id);
578
578
  }
579
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ButtonsComponent, deps: [{ token: SnotifireService }], target: i0.ɵɵFactoryTarget.Component }); }
580
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ButtonsComponent, selector: "notifire-button", inputs: { toast: "toast" }, ngImport: i0, template: "<div class=\"notifire-toast__buttons\">\n <ng-container *ngIf=\"toast.config\">\n <button\n type=\"button\"\n *ngFor=\"let button of toast.config.buttons\"\n [ngClass]=\"{ 'notifire-toast__buttons--bold': button.bold }\"\n (click)=\"button.action ? button.action(toast) : remove()\"\n >\n {{ button.text }}\n </button>\n </ng-container>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
579
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ButtonsComponent, deps: [{ token: SnotifireService }], target: i0.ɵɵFactoryTarget.Component }); }
580
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.3", type: ButtonsComponent, selector: "notifire-button", inputs: { toast: "toast" }, ngImport: i0, template: "<div class=\"notifire-toast__buttons\">\n <ng-container *ngIf=\"toast.config\">\n <button\n type=\"button\"\n *ngFor=\"let button of toast.config.buttons\"\n [ngClass]=\"{ 'notifire-toast__buttons--bold': button.bold }\"\n (click)=\"button.action ? button.action(toast) : remove()\"\n >\n {{ button.text }}\n </button>\n </ng-container>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
581
581
  }
582
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ButtonsComponent, decorators: [{
582
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ButtonsComponent, decorators: [{
583
583
  type: Component,
584
584
  args: [{ selector: 'notifire-button', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"notifire-toast__buttons\">\n <ng-container *ngIf=\"toast.config\">\n <button\n type=\"button\"\n *ngFor=\"let button of toast.config.buttons\"\n [ngClass]=\"{ 'notifire-toast__buttons--bold': button.bold }\"\n (click)=\"button.action ? button.action(toast) : remove()\"\n >\n {{ button.text }}\n </button>\n </ng-container>\n</div>\n" }]
585
- }], ctorParameters: function () { return [{ type: SnotifireService }]; }, propDecorators: { toast: [{
585
+ }], ctorParameters: () => [{ type: SnotifireService }], propDecorators: { toast: [{
586
586
  type: Input
587
587
  }] } });
588
588
 
@@ -601,10 +601,10 @@ class TruncatePipe {
601
601
  (args.length > 1 ? args[1] : this.DEFAULT_TRAIL)
602
602
  : value;
603
603
  }
604
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TruncatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
605
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: TruncatePipe, name: "truncate" }); }
604
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: TruncatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
605
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.3", ngImport: i0, type: TruncatePipe, name: "truncate" }); }
606
606
  }
607
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TruncatePipe, decorators: [{
607
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: TruncatePipe, decorators: [{
608
608
  type: Pipe,
609
609
  args: [{
610
610
  name: 'truncate',
@@ -622,10 +622,10 @@ class PromptComponent {
622
622
  getValue($event) {
623
623
  return $event.target.value;
624
624
  }
625
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PromptComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
626
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PromptComponent, selector: "ngx-snotify-prompt", inputs: { toast: "toast" }, ngImport: i0, template: "<span\n class=\"notifire-toast__input\"\n [ngClass]=\"{ 'notifire-toast__input--filled': isPromptFocused }\"\n>\n <input\n (input)=\"toast.value = getValue($event); toast.eventEmitter.next(inputType)\"\n autofocus\n class=\"notifire-toast__input__field\"\n type=\"text\"\n [id]=\"toast.id\"\n (focus)=\"isPromptFocused = true\"\n (blur)=\"isPromptFocused = !!toast.value && !!toast.value.length\"\n >\n <label\n class=\"notifire-toast__input__label\"\n [for]=\"toast.id\"\n >\n <span\n class=\"notifire-toast__input__labelContent\"\n *ngIf=\"toast.config && toast.config.placeholder \"\n >\n {{ toast.config.placeholder | truncate }}\n </span>\n </label>\n</span>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: TruncatePipe, name: "truncate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
625
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: PromptComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
626
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.3", type: PromptComponent, selector: "ngx-snotify-prompt", inputs: { toast: "toast" }, ngImport: i0, template: "<span\n class=\"notifire-toast__input\"\n [ngClass]=\"{ 'notifire-toast__input--filled': isPromptFocused }\"\n>\n <input\n (input)=\"toast.value = getValue($event); toast.eventEmitter.next(inputType)\"\n autofocus\n class=\"notifire-toast__input__field\"\n type=\"text\"\n [id]=\"toast.id\"\n (focus)=\"isPromptFocused = true\"\n (blur)=\"isPromptFocused = !!toast.value && !!toast.value.length\"\n >\n <label\n class=\"notifire-toast__input__label\"\n [for]=\"toast.id\"\n >\n <span\n class=\"notifire-toast__input__labelContent\"\n *ngIf=\"toast.config && toast.config.placeholder \"\n >\n {{ toast.config.placeholder | truncate }}\n </span>\n </label>\n</span>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: TruncatePipe, name: "truncate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
627
627
  }
628
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PromptComponent, decorators: [{
628
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: PromptComponent, decorators: [{
629
629
  type: Component,
630
630
  args: [{ selector: 'ngx-snotify-prompt', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<span\n class=\"notifire-toast__input\"\n [ngClass]=\"{ 'notifire-toast__input--filled': isPromptFocused }\"\n>\n <input\n (input)=\"toast.value = getValue($event); toast.eventEmitter.next(inputType)\"\n autofocus\n class=\"notifire-toast__input__field\"\n type=\"text\"\n [id]=\"toast.id\"\n (focus)=\"isPromptFocused = true\"\n (blur)=\"isPromptFocused = !!toast.value && !!toast.value.length\"\n >\n <label\n class=\"notifire-toast__input__label\"\n [for]=\"toast.id\"\n >\n <span\n class=\"notifire-toast__input__labelContent\"\n *ngIf=\"toast.config && toast.config.placeholder \"\n >\n {{ toast.config.placeholder | truncate }}\n </span>\n </label>\n</span>\n" }]
631
631
  }], propDecorators: { toast: [{
@@ -796,13 +796,13 @@ class ToastComponent {
796
796
  this.unsubscribe$.next();
797
797
  this.unsubscribe$.complete();
798
798
  }
799
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ToastComponent, deps: [{ token: SnotifireService }], target: i0.ɵɵFactoryTarget.Component }); }
800
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ToastComponent, selector: "ngx-toast", inputs: { toast: "toast" }, outputs: { stateChanged: "stateChanged" }, ngImport: i0, template: "<ng-container *ngIf=\"toast && toast.config\">\n <div\n [attr.role]=\"toast.config.type === state.promptType ? 'dialog' : 'alert'\"\n [attr.aria-labelledby]=\"'snotify_' + toast.id\"\n [attr.aria-modal]=\"toast.config.type === state.promptType\"\n [ngClass]=\"[\n 'notifire-toast animated',\n 'snotify-' + toast.config.type,\n state.animation, toast.valid === undefined ? '' : toast.valid ? 'snotifyToast--valid' : 'snotifyToast--invalid'\n]\"\n [ngStyle]=\"{\n '-webkit-transition': toast.config.animation && toast.config.animation.time + 'ms',\n transition: toast.config.animation && toast.config.animation.time + 'ms',\n '-webkit-animation-duration': toast.config.animation && toast.config.animation.time + 'ms',\n 'animation-duration': toast.config.animation && toast.config.animation.time + 'ms'\n}\"\n (animationend)=\"onExitTransitionEnd()\"\n (click)=\"onClick()\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n >\n <div\n class=\"notifire-toast__progressBar\"\n *ngIf=\"toast.config.showProgressBar\"\n >\n <span\n class=\"notifire-toast__progressBar__percentage\"\n [ngStyle]=\"{ width: state.progress * 100 + '%' }\"\n ></span>\n </div>\n <div\n class=\"notifire-toast__inner\"\n *ngIf=\"!toast.config.html; else toastHTML\"\n >\n <div\n class=\"notifire-toast__title\"\n [attr.id]=\"'snotify_' + toast.id\"\n *ngIf=\"toast.title\"\n >\n {{ toast.title | truncate: toast.config.titleMaxLength }}\n </div>\n <div\n class=\"notifire-toast__body\"\n *ngIf=\"toast.body\"\n >\n {{ toast.body | truncate: toast.config.bodyMaxLength }}\n </div>\n <ngx-snotify-prompt\n *ngIf=\"toast.config.type === state.promptType\"\n [toast]=\"toast\"\n >\n </ngx-snotify-prompt>\n <div\n *ngIf=\"!toast.config.icon; else elseBlock\"\n [ngClass]=\"['snotifire-icon', toast.config.iconClass || 'snotifire-icon--' + toast.config.type]\"\n ></div>\n <ng-template #elseBlock>\n <img\n class=\"snotifire-icon\"\n [src]=\"toast.config.icon\"\n >\n </ng-template>\n </div>\n <ng-template #toastHTML>\n <div\n class=\"notifire-toast__inner\"\n [innerHTML]=\"toast.config.html\"\n ></div>\n </ng-template>\n <notifire-button\n *ngIf=\"toast.config.buttons\"\n [toast]=\"toast\"\n ></notifire-button>\n </div>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: PromptComponent, selector: "ngx-snotify-prompt", inputs: ["toast"] }, { kind: "component", type: ButtonsComponent, selector: "notifire-button", inputs: ["toast"] }, { kind: "pipe", type: TruncatePipe, name: "truncate" }], encapsulation: i0.ViewEncapsulation.None }); }
799
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ToastComponent, deps: [{ token: SnotifireService }], target: i0.ɵɵFactoryTarget.Component }); }
800
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.3", type: ToastComponent, selector: "ngx-toast", inputs: { toast: "toast" }, outputs: { stateChanged: "stateChanged" }, ngImport: i0, template: "<ng-container *ngIf=\"toast && toast.config\">\n <div\n [attr.role]=\"toast.config.type === state.promptType ? 'dialog' : 'alert'\"\n [attr.aria-labelledby]=\"'snotify_' + toast.id\"\n [attr.aria-modal]=\"toast.config.type === state.promptType\"\n [ngClass]=\"[\n 'notifire-toast animated',\n 'snotify-' + toast.config.type,\n state.animation, toast.valid === undefined ? '' : toast.valid ? 'snotifyToast--valid' : 'snotifyToast--invalid'\n]\"\n [ngStyle]=\"{\n '-webkit-transition': toast.config.animation && toast.config.animation.time + 'ms',\n transition: toast.config.animation && toast.config.animation.time + 'ms',\n '-webkit-animation-duration': toast.config.animation && toast.config.animation.time + 'ms',\n 'animation-duration': toast.config.animation && toast.config.animation.time + 'ms'\n}\"\n (animationend)=\"onExitTransitionEnd()\"\n (click)=\"onClick()\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n >\n <div\n class=\"notifire-toast__progressBar\"\n *ngIf=\"toast.config.showProgressBar\"\n >\n <span\n class=\"notifire-toast__progressBar__percentage\"\n [ngStyle]=\"{ width: state.progress * 100 + '%' }\"\n ></span>\n </div>\n <div\n class=\"notifire-toast__inner\"\n *ngIf=\"!toast.config.html; else toastHTML\"\n >\n <div\n class=\"notifire-toast__title\"\n [attr.id]=\"'snotify_' + toast.id\"\n *ngIf=\"toast.title\"\n >\n {{ toast.title | truncate: toast.config.titleMaxLength }}\n </div>\n <div\n class=\"notifire-toast__body\"\n *ngIf=\"toast.body\"\n >\n {{ toast.body | truncate: toast.config.bodyMaxLength }}\n </div>\n <ngx-snotify-prompt\n *ngIf=\"toast.config.type === state.promptType\"\n [toast]=\"toast\"\n >\n </ngx-snotify-prompt>\n <div\n *ngIf=\"!toast.config.icon; else elseBlock\"\n [ngClass]=\"['snotifire-icon', toast.config.iconClass || 'snotifire-icon--' + toast.config.type]\"\n ></div>\n <ng-template #elseBlock>\n <img\n class=\"snotifire-icon\"\n [src]=\"toast.config.icon\"\n >\n </ng-template>\n </div>\n <ng-template #toastHTML>\n <div\n class=\"notifire-toast__inner\"\n [innerHTML]=\"toast.config.html\"\n ></div>\n </ng-template>\n <notifire-button\n *ngIf=\"toast.config.buttons\"\n [toast]=\"toast\"\n ></notifire-button>\n </div>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: PromptComponent, selector: "ngx-snotify-prompt", inputs: ["toast"] }, { kind: "component", type: ButtonsComponent, selector: "notifire-button", inputs: ["toast"] }, { kind: "pipe", type: TruncatePipe, name: "truncate" }], encapsulation: i0.ViewEncapsulation.None }); }
801
801
  }
802
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ToastComponent, decorators: [{
802
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ToastComponent, decorators: [{
803
803
  type: Component,
804
804
  args: [{ selector: 'ngx-toast', encapsulation: ViewEncapsulation.None, template: "<ng-container *ngIf=\"toast && toast.config\">\n <div\n [attr.role]=\"toast.config.type === state.promptType ? 'dialog' : 'alert'\"\n [attr.aria-labelledby]=\"'snotify_' + toast.id\"\n [attr.aria-modal]=\"toast.config.type === state.promptType\"\n [ngClass]=\"[\n 'notifire-toast animated',\n 'snotify-' + toast.config.type,\n state.animation, toast.valid === undefined ? '' : toast.valid ? 'snotifyToast--valid' : 'snotifyToast--invalid'\n]\"\n [ngStyle]=\"{\n '-webkit-transition': toast.config.animation && toast.config.animation.time + 'ms',\n transition: toast.config.animation && toast.config.animation.time + 'ms',\n '-webkit-animation-duration': toast.config.animation && toast.config.animation.time + 'ms',\n 'animation-duration': toast.config.animation && toast.config.animation.time + 'ms'\n}\"\n (animationend)=\"onExitTransitionEnd()\"\n (click)=\"onClick()\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n >\n <div\n class=\"notifire-toast__progressBar\"\n *ngIf=\"toast.config.showProgressBar\"\n >\n <span\n class=\"notifire-toast__progressBar__percentage\"\n [ngStyle]=\"{ width: state.progress * 100 + '%' }\"\n ></span>\n </div>\n <div\n class=\"notifire-toast__inner\"\n *ngIf=\"!toast.config.html; else toastHTML\"\n >\n <div\n class=\"notifire-toast__title\"\n [attr.id]=\"'snotify_' + toast.id\"\n *ngIf=\"toast.title\"\n >\n {{ toast.title | truncate: toast.config.titleMaxLength }}\n </div>\n <div\n class=\"notifire-toast__body\"\n *ngIf=\"toast.body\"\n >\n {{ toast.body | truncate: toast.config.bodyMaxLength }}\n </div>\n <ngx-snotify-prompt\n *ngIf=\"toast.config.type === state.promptType\"\n [toast]=\"toast\"\n >\n </ngx-snotify-prompt>\n <div\n *ngIf=\"!toast.config.icon; else elseBlock\"\n [ngClass]=\"['snotifire-icon', toast.config.iconClass || 'snotifire-icon--' + toast.config.type]\"\n ></div>\n <ng-template #elseBlock>\n <img\n class=\"snotifire-icon\"\n [src]=\"toast.config.icon\"\n >\n </ng-template>\n </div>\n <ng-template #toastHTML>\n <div\n class=\"notifire-toast__inner\"\n [innerHTML]=\"toast.config.html\"\n ></div>\n </ng-template>\n <notifire-button\n *ngIf=\"toast.config.buttons\"\n [toast]=\"toast\"\n ></notifire-button>\n </div>\n</ng-container>\n" }]
805
- }], ctorParameters: function () { return [{ type: SnotifireService }]; }, propDecorators: { toast: [{
805
+ }], ctorParameters: () => [{ type: SnotifireService }], propDecorators: { toast: [{
806
806
  type: Input
807
807
  }], stateChanged: [{
808
808
  type: Output
@@ -818,10 +818,10 @@ class KeysPipe {
818
818
  }
819
819
  return Object.keys(value);
820
820
  }
821
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: KeysPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
822
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: KeysPipe, name: "keys", pure: false }); }
821
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: KeysPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
822
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.3", ngImport: i0, type: KeysPipe, name: "keys", pure: false }); }
823
823
  }
824
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: KeysPipe, decorators: [{
824
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: KeysPipe, decorators: [{
825
825
  type: Pipe,
826
826
  args: [{
827
827
  name: 'keys',
@@ -942,13 +942,13 @@ class NgxSnotifireComponent {
942
942
  this.unsubscribe$.next();
943
943
  this.unsubscribe$.complete();
944
944
  }
945
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgxSnotifireComponent, deps: [{ token: SnotifireService }], target: i0.ɵɵFactoryTarget.Component }); }
946
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NgxSnotifireComponent, selector: "ngx-snotifire", ngImport: i0, template: "<div\n class=\"snotifire-backdrop\"\n *ngIf=\"backdrop && backdrop >= 0\"\n [style.opacity]=\"backdrop\"\n></div>\n\n<div\n *ngFor=\"let position of notifications | keys\"\n class=\"snotify snotify-{{ position }}\"\n>\n <ngx-toast\n *ngFor=\"let notification of getNotificationArray(notifications, position) | slice: blockSizeA:blockSizeB\"\n [toast]=\"notification\"\n (stateChanged)=\"stateChanged($event)\"\n >\n </ngx-toast>\n\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ToastComponent, selector: "ngx-toast", inputs: ["toast"], outputs: ["stateChanged"] }, { kind: "pipe", type: i2.SlicePipe, name: "slice" }, { kind: "pipe", type: KeysPipe, name: "keys" }], encapsulation: i0.ViewEncapsulation.None }); }
945
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: NgxSnotifireComponent, deps: [{ token: SnotifireService }], target: i0.ɵɵFactoryTarget.Component }); }
946
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.3", type: NgxSnotifireComponent, selector: "ngx-snotifire", ngImport: i0, template: "<div\n class=\"snotifire-backdrop\"\n *ngIf=\"backdrop && backdrop >= 0\"\n [style.opacity]=\"backdrop\"\n></div>\n\n<div\n *ngFor=\"let position of notifications | keys\"\n class=\"snotify snotify-{{ position }}\"\n>\n <ngx-toast\n *ngFor=\"let notification of getNotificationArray(notifications, position) | slice: blockSizeA:blockSizeB\"\n [toast]=\"notification\"\n (stateChanged)=\"stateChanged($event)\"\n >\n </ngx-toast>\n\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ToastComponent, selector: "ngx-toast", inputs: ["toast"], outputs: ["stateChanged"] }, { kind: "pipe", type: i2.SlicePipe, name: "slice" }, { kind: "pipe", type: KeysPipe, name: "keys" }], encapsulation: i0.ViewEncapsulation.None }); }
947
947
  }
948
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgxSnotifireComponent, decorators: [{
948
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: NgxSnotifireComponent, decorators: [{
949
949
  type: Component,
950
950
  args: [{ selector: 'ngx-snotifire', encapsulation: ViewEncapsulation.None, template: "<div\n class=\"snotifire-backdrop\"\n *ngIf=\"backdrop && backdrop >= 0\"\n [style.opacity]=\"backdrop\"\n></div>\n\n<div\n *ngFor=\"let position of notifications | keys\"\n class=\"snotify snotify-{{ position }}\"\n>\n <ngx-toast\n *ngFor=\"let notification of getNotificationArray(notifications, position) | slice: blockSizeA:blockSizeB\"\n [toast]=\"notification\"\n (stateChanged)=\"stateChanged($event)\"\n >\n </ngx-toast>\n\n</div>\n" }]
951
- }], ctorParameters: function () { return [{ type: SnotifireService }]; } });
951
+ }], ctorParameters: () => [{ type: SnotifireService }] });
952
952
 
953
953
  class NgxSnotifireModule {
954
954
  static forRoot() {
@@ -957,16 +957,16 @@ class NgxSnotifireModule {
957
957
  providers: [SnotifireService],
958
958
  };
959
959
  }
960
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgxSnotifireModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
961
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: NgxSnotifireModule, declarations: [PromptComponent,
960
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: NgxSnotifireModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
961
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.3", ngImport: i0, type: NgxSnotifireModule, declarations: [PromptComponent,
962
962
  ToastComponent,
963
963
  ButtonsComponent,
964
964
  TruncatePipe,
965
965
  KeysPipe,
966
966
  NgxSnotifireComponent], imports: [CommonModule], exports: [NgxSnotifireComponent] }); }
967
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgxSnotifireModule, imports: [CommonModule] }); }
967
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: NgxSnotifireModule, imports: [CommonModule] }); }
968
968
  }
969
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgxSnotifireModule, decorators: [{
969
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: NgxSnotifireModule, decorators: [{
970
970
  type: NgModule,
971
971
  args: [{
972
972
  declarations: [
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-snotifire.mjs","sources":["../../../projects/ngx-snotifire/src/lib/decorators/set-toast-type.decorator.ts","../../../projects/ngx-snotifire/src/lib/models/snotifire-event.type.ts","../../../projects/ngx-snotifire/src/lib/models/snotifire-position.type.ts","../../../projects/ngx-snotifire/src/lib/models/snotifire.type.ts","../../../projects/ngx-snotifire/src/lib/models/snotifire.model.ts","../../../projects/ngx-snotifire/src/lib/decorators/transform-argument.decorator.ts","../../../projects/ngx-snotifire/src/lib/components/toast/notifire-toast.model.ts","../../../projects/ngx-snotifire/src/lib/utils.ts","../../../projects/ngx-snotifire/src/lib/services/notification.service.ts","../../../projects/ngx-snotifire/src/lib/components/buttons/buttons.component.ts","../../../projects/ngx-snotifire/src/lib/components/buttons/buttons.component.html","../../../projects/ngx-snotifire/src/lib/pipes/truncate.pipe.ts","../../../projects/ngx-snotifire/src/lib/components/prompt/prompt.component.ts","../../../projects/ngx-snotifire/src/lib/components/prompt/prompt.component.html","../../../projects/ngx-snotifire/src/lib/components/toast/toast.component.ts","../../../projects/ngx-snotifire/src/lib/components/toast/toast.component.html","../../../projects/ngx-snotifire/src/lib/pipes/keys.pipe.ts","../../../projects/ngx-snotifire/src/lib/components/ngx-notifire/ngx-snotifire.component.ts","../../../projects/ngx-snotifire/src/lib/components/ngx-notifire/ngx-snotifire.component.html","../../../projects/ngx-snotifire/src/lib/ngx-snotifire.module.ts","../../../projects/ngx-snotifire/src/lib/defaults/toast-defaults.ts","../../../projects/ngx-snotifire/src/public-api.ts","../../../projects/ngx-snotifire/src/ngx-snotifire.ts"],"sourcesContent":["import { SnotifireModel, SnotifireType } from '../models';\n\n/**\n * Defines toast style depending on method name\n * @param target any\n * @param propertyKey NotificationType\n * @param descriptor PropertyDescriptor\n * @returns value: ((...args: any[]) => any)\n */\nexport function SetToastType(\n target: any,\n propertyKey: string,\n descriptor: PropertyDescriptor\n) {\n return {\n value(...args: any[]) {\n (args[0] as SnotifireModel).config = {\n ...(args[0] as SnotifireModel).config,\n type: propertyKey as SnotifireType,\n };\n return descriptor.value.apply(this, args);\n },\n };\n}\n","export enum SnotifireEventType {\n MOUNTED = 'mounted',\n BEFORE_SHOW = 'beforeShow',\n SHOWN = 'shown',\n INPUT = 'input',\n CLICK = 'click',\n MOUSE_ENTER = 'mouseenter',\n MOUSE_LEAVE = 'mouseleave',\n BEFORE_HIDE = 'beforeHide',\n HIDDEN = 'hidden',\n DESTROYED = 'destroyed',\n}\n","export enum SnotificationPositionType {\n LEFT_TOP = 'leftTop',\n LEFT_CENTER = 'leftCenter',\n LEFT_BOTTOM = 'leftBottom',\n RIGHT_TOP = 'rightTop',\n RIGHT_CENTER = 'rightCenter',\n RIGHT_BOTTOM = 'rightBottom',\n CENTER_TOP = 'centerTop',\n CENTER_CENTER = 'centerCenter',\n CENTER_BOTTOM = 'centerBottom',\n}\n","export enum SnotifireType {\n SUCCESS = 'success',\n INFO = 'info',\n WARNING = 'warning',\n ERROR = 'error',\n ASYNC = 'async',\n CONFIRM = 'confirm',\n PROMPT = 'prompt',\n}\n","import { SafeHtml } from '@angular/platform-browser';\nimport { SnotifireConfig } from './snotifire-config.interface';\nimport { SnotifireType } from './snotifire.type';\n\nexport class SnotifireModel {\n constructor(\n public type?: SnotifireType,\n /**\n * Notification Title\n */\n public title?: string,\n /**\n * Notification message\n */\n public body?: string,\n /**\n * Config object\n */\n public config?: SnotifireConfig,\n /**\n * Html content\n */\n public html?: string | SafeHtml\n ) {}\n}\n","import { SnotifireConfig, SnotifireModel, SnotifireType } from '../models';\n\n//todo: cp check if async\n/**\n * Transform arguments to Snotify object\n * @param target any\n * @param propertyKey SnotifyTypeType\n * @param descriptor PropertyDescriptor\n * @returns Snotify\n */\nexport function TransformArgument(\n target: any,\n propertyKey: string,\n descriptor: PropertyDescriptor\n) {\n if (propertyKey === SnotifireType.ASYNC) {\n return {\n value(...args: any[]) {\n let result;\n if (args.length === 2) {\n result = {\n title: null,\n body: args[0],\n config: null,\n action: args[1],\n };\n } else if (args.length === 3) {\n if (typeof args[1] === 'string') {\n result = {\n title: args[1],\n body: args[0],\n config: null,\n action: args[2],\n };\n } else {\n result = {\n title: null,\n body: args[0],\n config: args[2],\n action: args[1],\n };\n }\n } else {\n result = {\n title: args[1],\n body: args[0],\n config: args[3],\n action: args[2],\n };\n }\n return descriptor.value.apply(this, [\n result as unknown as Notification,\n ]);\n },\n };\n } else {\n return {\n value(...args: any[]) {\n let result;\n if (args.length === 1) {\n result = {\n title: null,\n body: args[0],\n config: null,\n };\n } else if (args.length === 3) {\n result = {\n title: args[1],\n body: args[0],\n config: args[2],\n };\n } else {\n result = {\n title: null,\n config: null,\n body: args[0],\n [typeof args[1] === 'string' ? 'title' : 'config']: args[1],\n };\n }\n return descriptor.value.apply(this, [\n result as unknown as Notification,\n ]);\n },\n };\n }\n}\n","import { Subject, Subscription } from 'rxjs';\nimport { SnotifireConfig } from '../../models/snotifire-config.interface';\nimport { SnotifireEventType } from '../../models/snotifire-event.type';\nimport { SnotifireType } from '../../models/snotifire.type';\n\n/**\n * Toast main model\n */\nexport class SnotifireToastModel {\n /**\n * Emits NotifireEventType\n */\n readonly eventEmitter = new Subject<SnotifireEventType>();\n\n /**\n * Holds all subscribers because we need to unsubscribe from all before toast get destroyed\n */\n private eventsHolder: Subscription[] = [];\n\n /**\n * Toast prompt value\n */\n value?: string;\n\n /**\n * Toast validator\n */\n valid: boolean = true;\n\n constructor(\n public readonly id: number,\n public readonly title: string,\n public readonly body: string,\n public readonly config: SnotifireConfig\n ) {\n if (this.config && this.config.type === SnotifireType.PROMPT) {\n this.value = '';\n }\n this.on(SnotifireEventType.HIDDEN, () => {\n this.eventsHolder.forEach((subscription: Subscription) => {\n subscription.unsubscribe();\n });\n });\n }\n /**\n * Subscribe to toast events\n * @returns this\n * @param event NotificationEventType\n * @param action (toast: this) => void\n */\n on(event: SnotifireEventType, action: (toast: this) => void): this {\n this.eventsHolder.push(\n this.eventEmitter.subscribe((e: SnotifireEventType) => {\n if (e === event) {\n action(this);\n }\n })\n );\n return this;\n }\n\n /**\n * Tests if a toast equals this toast.\n * @returns boolean true then equals else false.\n * @param toast notifire-toast\n */\n equals(toast: SnotifireToastModel): boolean {\n return this.config && toast.config\n ? this.body === toast.body &&\n this.title === toast.title &&\n this.config.type === toast.config.type\n : this.body === toast.body && this.title === toast.title;\n }\n}\n","/**\n * Deep merge objects.\n * @param sources Array<Object<any>>\n * @returns Object<any>\n */\nexport function mergeDeep(...sources: any[]) {\n const target: any = {};\n if (!sources.length) {\n return target;\n }\n\n while (sources.length > 0) {\n const source = sources.shift();\n if (isObject(source)) {\n for (const key in source) {\n if (isObject(source[key])) {\n target[key] = mergeDeep(target[key], source[key]);\n } else {\n Object.assign(target, { [key]: source[key] });\n }\n }\n }\n }\n return target;\n}\n/**\n * Generates random id\n * @return number\n */\nexport function uuid(): number {\n return Math.floor(Math.random() * (Date.now() - 1)) + 1;\n}\n/**\n * Simple is object check.\n * @param item Object<any>\n * @returns boolean\n */\nexport function isObject(item: any): boolean {\n return item && typeof item === 'object' && !Array.isArray(item);\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { SafeHtml } from '@angular/platform-browser';\nimport {\n catchError,\n finalize,\n from,\n Observable,\n of,\n Subject,\n tap,\n throwError,\n} from 'rxjs';\nimport { SetToastType } from '../decorators/set-toast-type.decorator';\nimport { TransformArgument } from '../decorators/transform-argument.decorator';\nimport { SnotifireConfig, SnotifireEventType, SnotifireType } from '../models';\nimport { SnotifireDefaults } from '../defaults/defaults.interface';\nimport { SnotifireModel } from '../models/snotifire.model';\nimport { SnotifireToastModel } from '../components/toast/notifire-toast.model';\nimport { mergeDeep, uuid } from '../utils';\n\n@Injectable()\nexport class SnotifireService {\n /**\n * Minimum display time of the notification message\n */\n private readonly minimumDisplayedTime = 3000;\n\n /**\n * Emits Notifire Notifications\n */\n readonly emitter = new Subject<SnotifireToastModel[]>();\n\n readonly toastDeleted = new Subject<number>();\n readonly toastChanged = new Subject<SnotifireToastModel>();\n\n notifications: Array<SnotifireToastModel> = [];\n\n constructor(\n @Inject('snotifireConfig') public defaultConfig: SnotifireDefaults\n ) {}\n\n /**\n * Creates toast and add it to array, returns toast id\n * @param NotificationModel NotificationModel\n * @return number\n */\n create(notif: SnotifireModel): SnotifireToastModel {\n if (this.defaultConfig.type && notif.config && notif.config.type) {\n const config = mergeDeep(\n this.defaultConfig.snotifireConfig,\n this.defaultConfig.type[notif.config.type],\n notif.config\n );\n const toast = new SnotifireToastModel(\n uuid(),\n notif.title ? notif.title : '',\n notif.body ? notif.body : '',\n config\n );\n this.add(toast);\n return toast;\n }\n const config = mergeDeep(this.defaultConfig.snotifireConfig, notif.config);\n const defaulToast = new SnotifireToastModel(\n uuid(),\n notif.title ? notif.title : '',\n notif.body ? notif.body : '',\n config\n );\n this.add(defaulToast);\n return defaulToast;\n }\n /**\n * If ID passed, emits toast animation remove, if ID & REMOVE passed, removes toast from notifications array\n * @param id number\n * @param remove boolean\n */\n remove(id: number, remove?: boolean): void {\n if (!id) {\n return this.clear();\n }\n if (remove) {\n this.notifications = this.notifications.filter(\n (toast) => toast.id !== id\n );\n return this.emit();\n }\n this.toastDeleted.next(id);\n }\n\n setDefaults(defaults: SnotifireDefaults): SnotifireDefaults {\n const mergedConfig = (this.defaultConfig = mergeDeep(\n this.defaultConfig,\n defaults\n ) as SnotifireDefaults);\n return mergedConfig;\n }\n\n /**\n * Clear notifications array\n */\n clear(): void {\n this.notifications = [];\n this.emit();\n }\n\n /**\n * add NotifireToast to notifications array\n * @param toast NotifireToast\n */\n private add(toast: SnotifireToastModel): void {\n if (\n this.defaultConfig &&\n this.defaultConfig.global &&\n this.defaultConfig.global.filterDuplicates &&\n this.containsToast(toast)\n ) {\n if (!this.defaultConfig.global.filterDuplicates) {\n throw new Error('Missing global config');\n }\n return;\n }\n if (\n this.defaultConfig &&\n this.defaultConfig.global &&\n this.defaultConfig.global.newOnTop\n ) {\n this.notifications.unshift(toast);\n } else {\n this.notifications.push(toast);\n }\n this.emit();\n }\n\n /**\n * emit changes in notifications array\n */\n private emit(): void {\n this.emitter.next(this.notifications.slice());\n }\n\n /**\n * checks if the toast is in the collection.\n * @param inToast NotifireToast\n * @returns boolean\n */\n private containsToast(inToast: SnotifireToastModel): boolean {\n return this.notifications.some((toast) => toast.equals(inToast));\n }\n\n /**\n * Creates empty toast with html string inside\n * @param html string | SafeHtml\n * @param config NotifireConfig\n * @returns number\n */\n html(html: string | SafeHtml, config?: SnotifireConfig): SnotifireToastModel {\n return this.create({\n title: undefined,\n body: undefined,\n config: {\n ...config,\n ...{ html },\n },\n });\n }\n /**\n * Create toast with success style returns toast id;\n * @param body string\n * @returns number\n */\n success(body: string): SnotifireToastModel;\n /**\n * Create toast with success style returns toast id;\n * @param body string\n * @param title string\n * @returns number\n */\n success(body: string, title: string): SnotifireToastModel;\n /**\n * Create toast with success style returns toast id;\n * @param body string\n * @param config NotificationConfig\n * @returns number\n */\n success(body: string, config: SnotifireConfig): SnotifireToastModel;\n /**\n * Create toast with success style returns toast id;\n * @param [body] string\n * @param [title] string\n * @param [config] NotificationConfig\n * @returns number\n */\n success(\n body: string,\n title: string,\n config: SnotifireConfig\n ): SnotifireToastModel;\n\n /**\n * Transform toast arguments into NotificationModel object\n */\n @TransformArgument\n /**\n * Determines current toast type and collects default configuration\n */\n @SetToastType\n success(args: any): SnotifireToastModel {\n if (!args.config) {\n throw new Error('Missing config, please configure service accordingly');\n }\n return this.create(args);\n }\n\n /**\n * Create toast with error style returns toast id;\n * @param body string\n * @returns number\n */\n error(body: string): SnotifireToastModel;\n /**\n * Create toast with error style returns toast id;\n * @param body string\n * @param title string\n * @returns number\n */\n error(body: string, title: string): SnotifireToastModel;\n /**\n * Create toast with error style returns toast id;\n * @param body string\n * @param config NotificationConfig\n * @returns number\n */\n error(body: string, config: SnotifireConfig): SnotifireToastModel;\n /**\n * Create toast with error style returns toast id;\n * @param [body] string\n * @param [title] string\n * @param [config] NotificationConfig\n * @returns number\n */\n error(\n body: string,\n title: string,\n config: SnotifireConfig\n ): SnotifireToastModel;\n /**\n * Transform toast arguments into NotificationModel object\n */\n @TransformArgument\n /**\n * Determines current toast type and collects default configuration\n */\n @SetToastType\n error(args: any): SnotifireToastModel {\n return this.create(args);\n }\n\n /**\n * Create toast with info style returns toast id;\n * @param body string\n * @returns number\n */\n info(body: string): SnotifireToastModel;\n /**\n * Create toast with info style returns toast id;\n * @param body string\n * @param title string\n * @returns number\n */\n info(body: string, title: string): SnotifireToastModel;\n /**\n * Create toast with info style returns toast id;\n * @param body string\n * @param config NotificationConfig\n * @returns number\n */\n info(body: string, config: SnotifireConfig): SnotifireToastModel;\n /**\n * Create toast with info style returns toast id;\n * @param [body] string\n * @param [title] string\n * @param [config] NotificationConfig\n * @returns number\n */\n info(\n body: string,\n title: string,\n config: SnotifireConfig\n ): SnotifireToastModel;\n /**\n * Transform toast arguments into NotificationModel object\n */\n @TransformArgument\n /**\n * Determines current toast type and collects default configuration\n */\n @SetToastType\n info(args: any): SnotifireToastModel {\n return this.create(args);\n }\n\n /**\n * Create toast with warning style returns toast id;\n * @param body string\n * @returns number\n */\n warning(body: string): SnotifireToastModel;\n /**\n * Create toast with warning style returns toast id;\n * @param body string\n * @param title string\n * @returns number\n */\n warning(body: string, title: string): SnotifireToastModel;\n /**\n * Create toast with warning style returns toast id;\n * @param body string\n * @param config NotificationConfig\n * @returns number\n */\n warning(body: string, config: SnotifireConfig): SnotifireToastModel;\n /**\n * Create toast with warning style returns toast id;\n * @param [body] string\n * @param [title] string\n * @param [config] NotificationConfig\n * @returns number\n */\n warning(\n body: string,\n title: string,\n config: SnotifireConfig\n ): SnotifireToastModel;\n /**\n * Transform toast arguments into NotificationModel object\n */\n @TransformArgument\n /**\n * Determines current toast type and collects default configuration\n */\n @SetToastType\n warning(args: any): SnotifireToastModel {\n return this.create(args);\n }\n\n /**\n * Create toast with confirm style returns toast id;\n * @param body string\n * @returns number\n */\n confirm(body: string): SnotifireToastModel;\n /**\n * Create toast with confirm style returns toast id;\n * @param body string\n * @param title string\n * @returns number\n */\n confirm(body: string, title: string): SnotifireToastModel;\n /**\n * Create toast with confirm style returns toast id;\n * @param body string\n * @param config NotificationConfig\n * @returns number\n */\n confirm(body: string, config: SnotifireConfig): SnotifireToastModel;\n /**\n * Create toast with confirm style returns toast id;\n * @param [body] string\n * @param [title] string\n * @param [config] NotificationConfig\n * @returns number\n */\n confirm(\n body: string,\n title: string,\n config: SnotifireConfig\n ): SnotifireToastModel;\n /**\n * Transform toast arguments into NotificationModel object\n */\n @TransformArgument\n /**\n * Determines current toast type and collects default configuration\n */\n @SetToastType\n confirm(args: any): SnotifireToastModel {\n return this.create(args);\n }\n\n /**\n * Create toast with Prompt style with two buttons, returns toast id;\n * @param body string\n * @returns number\n */\n prompt(body: string): SnotifireToastModel;\n /**\n * Create toast with Prompt style with two buttons, returns toast id;\n * @param body string\n * @param title string\n * @returns number\n */\n prompt(body: string, title: string): SnotifireToastModel;\n /**\n * Create toast with Prompt style with two buttons, returns toast id;\n * @param body string\n * @param config NotificationConfig\n * @returns number\n */\n prompt(body: string, config: SnotifireConfig): SnotifireToastModel;\n /**\n * Create toast with Prompt style with two buttons, returns toast id;\n * @param [body] string\n * @param [title] string\n * @param [config] NotificationConfig\n * @returns number\n */\n prompt(\n body: string,\n title: string,\n config: SnotifireConfig\n ): SnotifireToastModel;\n /**\n * Transform toast arguments into NotificationModel object\n */\n @TransformArgument\n /**\n * Determines current toast type and collects default configuration\n */\n @SetToastType\n prompt(args: any): SnotifireToastModel {\n return this.create(args);\n }\n\n /**\n * Creates async toast with Info style. Pass action, and resolve or reject it.\n * @param body string\n * @param action Promise<NotificationModel> | Observable<NotificationModel>\n * @returns number\n */\n async(\n body: string,\n action: Promise<SnotifireModel> | Observable<SnotifireModel>\n ): Observable<any>;\n /**\n * Creates async toast with Info style. Pass action, and resolve or reject it.\n * @param body string\n * @param title string\n * @param action Promise<NotificationModel> | Observable<NotificationModel>\n * @returns number\n */\n async(\n body: string,\n title: string,\n action: Promise<SnotifireModel> | Observable<SnotifireModel>\n ): Observable<any>;\n /**\n * Creates async toast with Info style. Pass action, and resolve or reject it.\n * @param body string\n * @param action Promise<NotificationModel> | Observable<NotificationModel>\n * @param [config] NotificationConfig\n * @returns number\n */\n async(\n body: string,\n action: Promise<SnotifireModel> | Observable<SnotifireModel>,\n config: SnotifireConfig\n ): Observable<any>;\n /**\n * Creates async toast with Info style. Pass action, and resolve or reject it.\n * @param body string\n * @param title string\n * @param action Promise<NotificationModel> | Observable<NotificationModel>\n * @param [config] NotificationConfig\n * @returns number\n */\n async(\n body: string,\n title: string,\n action: Promise<SnotifireModel> | Observable<SnotifireModel>,\n config: SnotifireConfig\n ): Observable<any>;\n /**\n * Transform toast arguments into NotificationModel object\n */\n @TransformArgument\n /**\n * Determines current toast type and collects default configuration\n */\n @SetToastType\n async(args: any): Observable<any> {\n let async: Observable<any>;\n if (args.action instanceof Promise) {\n async = from(args.action);\n } else {\n async = args.action;\n }\n\n const toast = this.create(args);\n let failed = false;\n const asyncAtion = async.pipe(\n tap((next) => {\n console.log('called'), this.mergeToast(toast, next);\n }),\n catchError((error) => {\n failed = true;\n return throwError(() => error);\n }),\n finalize(() => {\n this.mergeToast(\n toast,\n {},\n failed === true ? SnotifireType.ERROR : SnotifireType.SUCCESS\n );\n })\n );\n toast.on(SnotifireEventType.MOUNTED, () => {\n console.log('mounted');\n return asyncAtion;\n });\n return asyncAtion;\n\n // const toast = this.create(args);\n\n // toast.on(SnotifireEventType.MOUNTED, () => {\n // const subscription: Subscription = async.subscribe({\n // next: (next?: SnotifireModel) => {\n // this.mergeToast(toast, next);\n // },\n // error: (error?: SnotifireModel) => {\n // this.mergeToast(toast, error, SnotifireType.ERROR);\n // subscription.unsubscribe();\n // },\n // complete: () => {\n // this.mergeToast(toast, {}, SnotifireType.SUCCESS);\n // subscription.unsubscribe();\n // },\n // });\n // });\n\n // return toast;\n }\n\n private mergeToast(toast: any, next: any, type?: SnotifireType) {\n if (next.body) {\n toast.body = next.body;\n }\n if (next.title) {\n toast.title = next.title;\n }\n\n if (type && this.defaultConfig) {\n console.log(type);\n toast.config = mergeDeep(\n toast.config,\n this.defaultConfig.global,\n this.defaultConfig.snotifireConfig?.type,\n { type },\n next.config\n );\n } else {\n toast.config = mergeDeep(toast.config, next.config);\n }\n if (next.html) {\n toast.config.html = next.html;\n }\n this.emit();\n this.toastChanged.next(toast);\n }\n /**\n * returns SnotifyToast object\n * @param id Number\n * @return SnotifyToast|undefined\n */\n get(id: number): SnotifireToastModel | undefined {\n return (\n this.notifications && this.notifications.find((toast) => toast.id === id)\n );\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnInit,\n ViewEncapsulation,\n} from '@angular/core';\nimport { SnotifireToastModel } from '../toast/notifire-toast.model';\nimport { SnotifireService } from '../../services';\n\n@Component({\n selector: 'notifire-button',\n templateUrl: './buttons.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\n/**\n * Buttons component\n */\nexport class ButtonsComponent {\n /**\n * Get buttons Array\n */\n @Input() toast!: SnotifireToastModel;\n\n constructor(private readonly service: SnotifireService) {}\n\n /**\n * remove toast\n */\n remove() {\n this.service.remove(this.toast.id);\n }\n}\n","<div class=\"notifire-toast__buttons\">\n <ng-container *ngIf=\"toast.config\">\n <button\n type=\"button\"\n *ngFor=\"let button of toast.config.buttons\"\n [ngClass]=\"{ 'notifire-toast__buttons--bold': button.bold }\"\n (click)=\"button.action ? button.action(toast) : remove()\"\n >\n {{ button.text }}\n </button>\n </ng-container>\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'truncate',\n})\n\n/**\n * Truncate toast text pipe\n */\nexport class TruncatePipe implements PipeTransform {\n private readonly DEFAULT_LIMIT = 40;\n private readonly DEFAULT_TRAIL = '...';\n transform(value: string, ...args: Array<any>): any {\n const limit = args.length > 0 ? parseInt(args[0], 10) : this.DEFAULT_LIMIT;\n\n return value.length > limit\n ? value.substring(0, limit) +\n (args.length > 1 ? args[1] : this.DEFAULT_TRAIL)\n : value;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnInit,\n ViewEncapsulation,\n} from '@angular/core';\nimport { SnotifireEventType } from '../../models';\nimport { SnotifireToastModel } from '../toast/notifire-toast.model';\n\n@Component({\n selector: 'ngx-snotify-prompt',\n templateUrl: './prompt.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class PromptComponent {\n inputType = SnotifireEventType.INPUT;\n /**\n * Get PROMPT placeholder\n */\n @Input() toast!: SnotifireToastModel;\n /**\n * Is PROMPT focused\n */\n isPromptFocused = false;\n\n getValue($event: any): string {\n return $event.target.value;\n }\n}\n","<span\n class=\"notifire-toast__input\"\n [ngClass]=\"{ 'notifire-toast__input--filled': isPromptFocused }\"\n>\n <input\n (input)=\"toast.value = getValue($event); toast.eventEmitter.next(inputType)\"\n autofocus\n class=\"notifire-toast__input__field\"\n type=\"text\"\n [id]=\"toast.id\"\n (focus)=\"isPromptFocused = true\"\n (blur)=\"isPromptFocused = !!toast.value && !!toast.value.length\"\n >\n <label\n class=\"notifire-toast__input__label\"\n [for]=\"toast.id\"\n >\n <span\n class=\"notifire-toast__input__labelContent\"\n *ngIf=\"toast.config && toast.config.placeholder \"\n >\n {{ toast.config.placeholder | truncate }}\n </span>\n </label>\n</span>\n","import {\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\nimport { Subject, takeUntil } from 'rxjs';\nimport { SnotifireEventType, SnotifireType } from '../../models';\nimport { SnotifireToastModel } from './notifire-toast.model';\nimport { SnotifireService } from '../../services';\n\n@Component({\n selector: 'ngx-toast',\n templateUrl: './toast.component.html',\n encapsulation: ViewEncapsulation.None,\n})\nexport class ToastComponent implements OnInit, OnDestroy {\n private unsubscribe$ = new Subject<void>();\n\n /**\n * Get toast from notifications array\n */\n @Input() toast!: SnotifireToastModel;\n @Output() stateChanged = new EventEmitter<SnotifireEventType>();\n\n /**\n * requestAnimationFrame id\n */\n animationFrame!: number;\n\n /**\n * Toast state\n */\n state = {\n paused: false,\n progress: 0,\n animation: '',\n isDestroying: false,\n promptType: SnotifireType.PROMPT,\n };\n\n constructor(private readonly service: SnotifireService) {}\n\n ngOnInit(): void {\n this.service.toastChanged\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe((toast: SnotifireToastModel) => {\n if (this.toast.id === toast.id) {\n this.initToast();\n }\n });\n\n this.service.toastDeleted\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe((id) => {\n if (this.toast.id === id) {\n this.onRemove();\n }\n });\n if (this.toast && this.toast.config && !this.toast.config.timeout) {\n this.toast.config.showProgressBar = false;\n }\n\n this.toast.eventEmitter.next(SnotifireEventType.MOUNTED);\n this.state.animation = 'notifire-toast--in';\n }\n ngAfterContentInit() {\n if (\n this.service.defaultConfig.snotifireConfig &&\n this.service.defaultConfig.snotifireConfig.animation\n ) {\n setTimeout(() => {\n this.stateChanged.emit(SnotifireEventType.BEFORE_SHOW);\n this.toast.eventEmitter.next(SnotifireEventType.BEFORE_SHOW);\n this.state.animation =\n this.toast.config &&\n this.toast.config.animation &&\n this.toast.config.animation.enter\n ? this.toast.config.animation.enter\n : '';\n }, this.service.defaultConfig.snotifireConfig.animation.time / 5); // time to show toast push animation (notifire-toast--in)\n }\n }\n /**\n * Trigger beforeDestroy lifecycle. Removes toast\n */\n onRemove() {\n this.state.isDestroying = true;\n this.toast.eventEmitter.next(SnotifireEventType.BEFORE_HIDE);\n this.stateChanged.emit(SnotifireEventType.BEFORE_HIDE);\n this.state.animation =\n (this.toast.config &&\n this.toast.config.animation &&\n this.toast.config.animation.exit) ||\n '';\n setTimeout(() => {\n this.stateChanged.emit(SnotifireEventType.HIDDEN);\n this.state.animation = 'notifire-toast--out';\n this.toast.eventEmitter.next(SnotifireEventType.HIDDEN);\n setTimeout(\n () => this.service.remove(this.toast.id, true),\n this.toast.config &&\n this.toast.config.animation &&\n this.toast.config.animation.time / 2\n );\n }, this.toast.config && this.toast.config.animation && this.toast.config.animation.time / 2);\n }\n /**\n * Trigger OnClick lifecycle\n */\n onClick() {\n this.toast.eventEmitter.next(SnotifireEventType.CLICK);\n if (this.toast && this.toast.config && this.toast.config.closeOnClick) {\n this.service.remove(this.toast.id);\n }\n }\n /**\n * Trigger onHoverEnter lifecycle\n */\n onMouseEnter() {\n this.toast.eventEmitter.next(SnotifireEventType.MOUSE_ENTER);\n if (this.toast && this.toast.config && this.toast.config.pauseOnHover) {\n this.state.paused = true;\n }\n }\n\n /**\n * Trigger onHoverLeave lifecycle\n */\n onMouseLeave() {\n if (\n this.toast &&\n this.toast.config &&\n this.toast.config.pauseOnHover &&\n this.toast.config.timeout\n ) {\n this.state.paused = false;\n this.startTimeout(this.toast.config.timeout * this.state.progress);\n }\n this.toast.eventEmitter.next(SnotifireEventType.MOUSE_LEAVE);\n }\n /**\n * Remove toast completely after animation\n */\n onExitTransitionEnd() {\n if (this.state.isDestroying) {\n return;\n }\n this.initToast();\n this.toast.eventEmitter.next(SnotifireEventType.SHOWN);\n }\n\n /*\n Common\n */\n\n /**\n * Initialize base toast config\n *\n */\n initToast(): void {\n if (\n (this.toast && this.toast.config && this.toast.config.timeout\n ? this.toast.config.timeout\n : 0) > 0\n ) {\n this.startTimeout(0);\n }\n }\n /**\n * Start progress bar\n * @param startTime number\n */\n startTimeout(startTime: number = 0) {\n const start = performance.now();\n const calculate = () => {\n this.animationFrame = requestAnimationFrame((timestamp) => {\n const runtime = timestamp + startTime - start;\n const progress = Math.min(\n runtime /\n (this.toast && this.toast.config && this.toast.config.timeout\n ? this.toast.config.timeout\n : 1),\n 1\n );\n if (this.state.paused) {\n cancelAnimationFrame(this.animationFrame);\n } else if (\n runtime <\n (this.toast && this.toast.config && this.toast.config.timeout\n ? this.toast.config.timeout\n : 1)\n ) {\n this.state.progress = progress;\n calculate();\n } else {\n this.state.progress = 1;\n cancelAnimationFrame(this.animationFrame);\n this.service.remove(this.toast.id);\n }\n });\n };\n calculate();\n }\n\n ngOnDestroy(): void {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n}\n","<ng-container *ngIf=\"toast && toast.config\">\n <div\n [attr.role]=\"toast.config.type === state.promptType ? 'dialog' : 'alert'\"\n [attr.aria-labelledby]=\"'snotify_' + toast.id\"\n [attr.aria-modal]=\"toast.config.type === state.promptType\"\n [ngClass]=\"[\n 'notifire-toast animated',\n 'snotify-' + toast.config.type,\n state.animation, toast.valid === undefined ? '' : toast.valid ? 'snotifyToast--valid' : 'snotifyToast--invalid'\n]\"\n [ngStyle]=\"{\n '-webkit-transition': toast.config.animation && toast.config.animation.time + 'ms',\n transition: toast.config.animation && toast.config.animation.time + 'ms',\n '-webkit-animation-duration': toast.config.animation && toast.config.animation.time + 'ms',\n 'animation-duration': toast.config.animation && toast.config.animation.time + 'ms'\n}\"\n (animationend)=\"onExitTransitionEnd()\"\n (click)=\"onClick()\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n >\n <div\n class=\"notifire-toast__progressBar\"\n *ngIf=\"toast.config.showProgressBar\"\n >\n <span\n class=\"notifire-toast__progressBar__percentage\"\n [ngStyle]=\"{ width: state.progress * 100 + '%' }\"\n ></span>\n </div>\n <div\n class=\"notifire-toast__inner\"\n *ngIf=\"!toast.config.html; else toastHTML\"\n >\n <div\n class=\"notifire-toast__title\"\n [attr.id]=\"'snotify_' + toast.id\"\n *ngIf=\"toast.title\"\n >\n {{ toast.title | truncate: toast.config.titleMaxLength }}\n </div>\n <div\n class=\"notifire-toast__body\"\n *ngIf=\"toast.body\"\n >\n {{ toast.body | truncate: toast.config.bodyMaxLength }}\n </div>\n <ngx-snotify-prompt\n *ngIf=\"toast.config.type === state.promptType\"\n [toast]=\"toast\"\n >\n </ngx-snotify-prompt>\n <div\n *ngIf=\"!toast.config.icon; else elseBlock\"\n [ngClass]=\"['snotifire-icon', toast.config.iconClass || 'snotifire-icon--' + toast.config.type]\"\n ></div>\n <ng-template #elseBlock>\n <img\n class=\"snotifire-icon\"\n [src]=\"toast.config.icon\"\n >\n </ng-template>\n </div>\n <ng-template #toastHTML>\n <div\n class=\"notifire-toast__inner\"\n [innerHTML]=\"toast.config.html\"\n ></div>\n </ng-template>\n <notifire-button\n *ngIf=\"toast.config.buttons\"\n [toast]=\"toast\"\n ></notifire-button>\n </div>\n</ng-container>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'keys',\n pure: false,\n})\n/**\n * Extract object keys pipe\n */\nexport class KeysPipe implements PipeTransform {\n transform(value: any): any {\n if (!value) {\n return value;\n }\n return Object.keys(value);\n }\n}\n","import {\n AfterViewInit,\n Component,\n OnDestroy,\n OnInit,\n ViewEncapsulation,\n} from '@angular/core';\nimport { Subject, Subscription, takeUntil } from 'rxjs';\nimport { SnotifireEventType, SnotificationPositionType } from '../../models';\nimport { SnotifireNotifications } from '../../models/snotifire-notifications.interface';\nimport { SnotifireToastModel } from '../toast/notifire-toast.model';\nimport { SnotifireService } from '../../services';\n\n@Component({\n selector: 'ngx-snotifire',\n templateUrl: './ngx-snotifire.component.html',\n encapsulation: ViewEncapsulation.None,\n})\nexport class NgxSnotifireComponent implements OnInit, OnDestroy, AfterViewInit {\n private readonly unsubscribe$ = new Subject<void>();\n /**\n * Toasts array\n */\n notifications!: SnotifireNotifications;\n /**\n * Toasts emitter\n */\n emitter!: Subscription;\n /**\n * Helper for slice pipe (maxOnScreen)\n */\n dockSizeA!: number;\n /**\n * Helper for slice pipe (maxOnScreen)\n */\n dockSizeB!: number | undefined;\n /**\n * Helper for slice pipe (maxAtPosition)\n */\n blockSizeA!: number;\n /**\n * Helper for slice pipe (maxAtPosition)\n */\n blockSizeB!: number | undefined;\n /**\n * Backdrop Opacity\n */\n backdrop: number | undefined = -1;\n /**\n * How many toasts with backdrop in current queue\n */\n withBackdrop: SnotifireToastModel[] = [];\n\n constructor(readonly service: SnotifireService) {}\n ngAfterViewInit(): void {}\n\n ngOnInit(): void {\n this.service.emitter\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe((toasts: SnotifireToastModel[]) => {\n if (\n this.service.defaultConfig &&\n this.service.defaultConfig.global &&\n this.service.defaultConfig.global.newOnTop\n ) {\n this.dockSizeA = this.service.defaultConfig.global.maxOnScreen\n ? -this.service.defaultConfig.global.maxOnScreen\n : 6;\n this.dockSizeB = undefined;\n this.blockSizeA = this.service.defaultConfig.global.maxAtPosition\n ? -this.service.defaultConfig.global.maxAtPosition\n : 4;\n this.blockSizeB = undefined;\n this.withBackdrop = toasts.filter(\n (toast) =>\n toast.config &&\n toast.config.backdrop &&\n toast.config.backdrop >= 0\n );\n } else {\n this.dockSizeA = 0;\n this.dockSizeB =\n this.service.defaultConfig.global &&\n this.service.defaultConfig.global.maxOnScreen;\n this.blockSizeA = 0;\n this.blockSizeB =\n this.service.defaultConfig.global &&\n this.service.defaultConfig.global.maxAtPosition;\n this.withBackdrop = toasts\n .filter(\n (toast) =>\n toast.config &&\n toast.config.backdrop &&\n toast.config.backdrop >= 0\n )\n .reverse();\n }\n this.notifications = this.splitToasts(\n toasts.slice(this.dockSizeA, this.dockSizeB)\n );\n this.stateChanged(SnotifireEventType.MOUNTED);\n });\n }\n\n /**\n * Split toasts toasts into different objects\n * @param toasts notifire-toast[]\n * @returns SnotifyNotifications\n */\n splitToasts(toasts: SnotifireToastModel[]): SnotifireNotifications {\n const result: SnotifireNotifications = {};\n\n for (const property in SnotificationPositionType) {\n if (SnotificationPositionType.hasOwnProperty(property)) {\n result[\n SnotificationPositionType[\n property as keyof typeof SnotificationPositionType\n ]\n ] = [];\n }\n }\n\n toasts.forEach((toast: SnotifireToastModel) => {\n if (toast.config.position) {\n const keyIndex = Object.keys(SnotificationPositionType).indexOf(\n toast.config.position\n );\n const searchedString = Object.values(SnotificationPositionType)[\n keyIndex\n ];\n result[searchedString]?.push(toast);\n }\n });\n return result;\n }\n\n getNotificationArray(\n notifications: SnotifireNotifications,\n position: SnotificationPositionType\n ): SnotifireToastModel[] | undefined {\n return notifications[position];\n }\n\n /**\n * Changes the backdrop opacity\n * @param event NotificationEventType\n */\n stateChanged(event: SnotifireEventType) {\n if (!this.withBackdrop.length) {\n if (this.backdrop && this.backdrop >= 0) {\n this.backdrop = -1;\n }\n return;\n }\n switch (event) {\n case 'mounted':\n if (this.backdrop && this.backdrop < 0) {\n this.backdrop = 0;\n }\n break;\n case 'beforeShow':\n this.backdrop =\n this.withBackdrop[this.withBackdrop.length - 1].config?.backdrop;\n break;\n case 'beforeHide':\n if (this.withBackdrop.length === 1) {\n this.backdrop = 0;\n }\n break;\n case 'hidden':\n if (this.withBackdrop.length === 1) {\n this.backdrop = -1;\n }\n break;\n }\n }\n\n ngOnDestroy(): void {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n}\n","<div\n class=\"snotifire-backdrop\"\n *ngIf=\"backdrop && backdrop >= 0\"\n [style.opacity]=\"backdrop\"\n></div>\n\n<div\n *ngFor=\"let position of notifications | keys\"\n class=\"snotify snotify-{{ position }}\"\n>\n <ngx-toast\n *ngFor=\"let notification of getNotificationArray(notifications, position) | slice: blockSizeA:blockSizeB\"\n [toast]=\"notification\"\n (stateChanged)=\"stateChanged($event)\"\n >\n </ngx-toast>\n\n</div>\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport {\n ButtonsComponent,\n NgxSnotifireComponent,\n PromptComponent,\n ToastComponent,\n} from './components';\nimport { KeysPipe, TruncatePipe } from './pipes';\nimport { SnotifireService } from './services';\n\n@NgModule({\n declarations: [\n PromptComponent,\n ToastComponent,\n ButtonsComponent,\n TruncatePipe,\n KeysPipe,\n NgxSnotifireComponent,\n ],\n imports: [CommonModule],\n exports: [NgxSnotifireComponent],\n})\nexport class NgxSnotifireModule {\n static forRoot(): ModuleWithProviders<NgxSnotifireModule> {\n return {\n ngModule: NgxSnotifireModule,\n providers: [SnotifireService],\n };\n }\n}\n","import { SnotificationPositionType, SnotifireType } from '../models';\n\n/**\n * Snotify default configuration object\n */\nexport const ToastDefaults = {\n global: {\n newOnTop: true,\n maxOnScreen: 8,\n maxAtPosition: 8,\n filterDuplicates: false,\n },\n snotifireConfig: {\n type: SnotifireType.INFO,\n showProgressBar: true,\n timeout: 5000,\n closeOnClick: true,\n pauseOnHover: true,\n bodyMaxLength: 150,\n titleMaxLength: 16,\n backdrop: -1,\n icon: undefined,\n iconClass: undefined,\n html: undefined,\n position: 'RIGHT_TOP' as SnotificationPositionType,\n animation: { enter: 'fadeIn', exit: 'fadeOut', time: 400 },\n },\n type: {\n [SnotifireType.PROMPT]: {\n timeout: 0,\n closeOnClick: false,\n buttons: [\n { text: 'Ok', action: null, bold: true },\n { text: 'Cancel', action: null, bold: false },\n ],\n placeholder: 'Enter answer here...',\n type: SnotifireType.PROMPT,\n },\n [SnotifireType.CONFIRM]: {\n timeout: 0,\n closeOnClick: false,\n buttons: [\n { text: 'Ok', action: null, bold: true },\n { text: 'Cancel', action: null, bold: false },\n ],\n type: SnotifireType.CONFIRM,\n },\n [SnotifireType.SUCCESS]: {\n type: SnotifireType.SUCCESS,\n },\n [SnotifireType.ERROR]: {\n type: SnotifireType.ERROR,\n },\n [SnotifireType.WARNING]: {\n type: SnotifireType.WARNING,\n },\n [SnotifireType.INFO]: {\n type: SnotifireType.INFO,\n },\n [SnotifireType.ASYNC]: {\n pauseOnHover: false,\n closeOnClick: false,\n timeout: 0,\n showProgressBar: false,\n type: SnotifireType.ASYNC,\n },\n },\n};\n","/*\n * Public API Surface of ngx-notifire\n */\n\nexport * from './lib/ngx-snotifire.module';\nexport * from './lib/components';\n\nexport * from './lib/models';\nexport * from './lib/pipes';\nexport * from './lib/services';\nexport * from './lib/defaults';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.SnotifireService","i1","i2.TruncatePipe","i3.PromptComponent","i4.ButtonsComponent","i5.TruncatePipe","i3.ToastComponent","i4.KeysPipe"],"mappings":"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"}
1
+ {"version":3,"file":"ngx-snotifire.mjs","sources":["../../../projects/ngx-snotifire/src/lib/decorators/set-toast-type.decorator.ts","../../../projects/ngx-snotifire/src/lib/models/snotifire-event.type.ts","../../../projects/ngx-snotifire/src/lib/models/snotifire-position.type.ts","../../../projects/ngx-snotifire/src/lib/models/snotifire.type.ts","../../../projects/ngx-snotifire/src/lib/models/snotifire.model.ts","../../../projects/ngx-snotifire/src/lib/decorators/transform-argument.decorator.ts","../../../projects/ngx-snotifire/src/lib/components/toast/notifire-toast.model.ts","../../../projects/ngx-snotifire/src/lib/utils.ts","../../../projects/ngx-snotifire/src/lib/services/notification.service.ts","../../../projects/ngx-snotifire/src/lib/components/buttons/buttons.component.ts","../../../projects/ngx-snotifire/src/lib/components/buttons/buttons.component.html","../../../projects/ngx-snotifire/src/lib/pipes/truncate.pipe.ts","../../../projects/ngx-snotifire/src/lib/components/prompt/prompt.component.ts","../../../projects/ngx-snotifire/src/lib/components/prompt/prompt.component.html","../../../projects/ngx-snotifire/src/lib/components/toast/toast.component.ts","../../../projects/ngx-snotifire/src/lib/components/toast/toast.component.html","../../../projects/ngx-snotifire/src/lib/pipes/keys.pipe.ts","../../../projects/ngx-snotifire/src/lib/components/ngx-notifire/ngx-snotifire.component.ts","../../../projects/ngx-snotifire/src/lib/components/ngx-notifire/ngx-snotifire.component.html","../../../projects/ngx-snotifire/src/lib/ngx-snotifire.module.ts","../../../projects/ngx-snotifire/src/lib/defaults/toast-defaults.ts","../../../projects/ngx-snotifire/src/public-api.ts","../../../projects/ngx-snotifire/src/ngx-snotifire.ts"],"sourcesContent":["import { SnotifireModel, SnotifireType } from '../models';\n\n/**\n * Defines toast style depending on method name\n * @param target any\n * @param propertyKey NotificationType\n * @param descriptor PropertyDescriptor\n * @returns value: ((...args: any[]) => any)\n */\nexport function SetToastType(\n target: any,\n propertyKey: string,\n descriptor: PropertyDescriptor\n) {\n return {\n value(...args: any[]) {\n (args[0] as SnotifireModel).config = {\n ...(args[0] as SnotifireModel).config,\n type: propertyKey as SnotifireType,\n };\n return descriptor.value.apply(this, args);\n },\n };\n}\n","export enum SnotifireEventType {\n MOUNTED = 'mounted',\n BEFORE_SHOW = 'beforeShow',\n SHOWN = 'shown',\n INPUT = 'input',\n CLICK = 'click',\n MOUSE_ENTER = 'mouseenter',\n MOUSE_LEAVE = 'mouseleave',\n BEFORE_HIDE = 'beforeHide',\n HIDDEN = 'hidden',\n DESTROYED = 'destroyed',\n}\n","export enum SnotificationPositionType {\n LEFT_TOP = 'leftTop',\n LEFT_CENTER = 'leftCenter',\n LEFT_BOTTOM = 'leftBottom',\n RIGHT_TOP = 'rightTop',\n RIGHT_CENTER = 'rightCenter',\n RIGHT_BOTTOM = 'rightBottom',\n CENTER_TOP = 'centerTop',\n CENTER_CENTER = 'centerCenter',\n CENTER_BOTTOM = 'centerBottom',\n}\n","export enum SnotifireType {\n SUCCESS = 'success',\n INFO = 'info',\n WARNING = 'warning',\n ERROR = 'error',\n ASYNC = 'async',\n CONFIRM = 'confirm',\n PROMPT = 'prompt',\n}\n","import { SafeHtml } from '@angular/platform-browser';\nimport { SnotifireConfig } from './snotifire-config.interface';\nimport { SnotifireType } from './snotifire.type';\n\nexport class SnotifireModel {\n constructor(\n public type?: SnotifireType,\n /**\n * Notification Title\n */\n public title?: string,\n /**\n * Notification message\n */\n public body?: string,\n /**\n * Config object\n */\n public config?: SnotifireConfig,\n /**\n * Html content\n */\n public html?: string | SafeHtml\n ) {}\n}\n","import { SnotifireConfig, SnotifireModel, SnotifireType } from '../models';\n\n//todo: cp check if async\n/**\n * Transform arguments to Snotify object\n * @param target any\n * @param propertyKey SnotifyTypeType\n * @param descriptor PropertyDescriptor\n * @returns Snotify\n */\nexport function TransformArgument(\n target: any,\n propertyKey: string,\n descriptor: PropertyDescriptor\n) {\n if (propertyKey === SnotifireType.ASYNC) {\n return {\n value(...args: any[]) {\n let result;\n if (args.length === 2) {\n result = {\n title: null,\n body: args[0],\n config: null,\n action: args[1],\n };\n } else if (args.length === 3) {\n if (typeof args[1] === 'string') {\n result = {\n title: args[1],\n body: args[0],\n config: null,\n action: args[2],\n };\n } else {\n result = {\n title: null,\n body: args[0],\n config: args[2],\n action: args[1],\n };\n }\n } else {\n result = {\n title: args[1],\n body: args[0],\n config: args[3],\n action: args[2],\n };\n }\n return descriptor.value.apply(this, [\n result as unknown as Notification,\n ]);\n },\n };\n } else {\n return {\n value(...args: any[]) {\n let result;\n if (args.length === 1) {\n result = {\n title: null,\n body: args[0],\n config: null,\n };\n } else if (args.length === 3) {\n result = {\n title: args[1],\n body: args[0],\n config: args[2],\n };\n } else {\n result = {\n title: null,\n config: null,\n body: args[0],\n [typeof args[1] === 'string' ? 'title' : 'config']: args[1],\n };\n }\n return descriptor.value.apply(this, [\n result as unknown as Notification,\n ]);\n },\n };\n }\n}\n","import { Subject, Subscription } from 'rxjs';\nimport { SnotifireConfig } from '../../models/snotifire-config.interface';\nimport { SnotifireEventType } from '../../models/snotifire-event.type';\nimport { SnotifireType } from '../../models/snotifire.type';\n\n/**\n * Toast main model\n */\nexport class SnotifireToastModel {\n /**\n * Emits NotifireEventType\n */\n readonly eventEmitter = new Subject<SnotifireEventType>();\n\n /**\n * Holds all subscribers because we need to unsubscribe from all before toast get destroyed\n */\n private eventsHolder: Subscription[] = [];\n\n /**\n * Toast prompt value\n */\n value?: string;\n\n /**\n * Toast validator\n */\n valid: boolean = true;\n\n constructor(\n public readonly id: number,\n public readonly title: string,\n public readonly body: string,\n public readonly config: SnotifireConfig\n ) {\n if (this.config && this.config.type === SnotifireType.PROMPT) {\n this.value = '';\n }\n this.on(SnotifireEventType.HIDDEN, () => {\n this.eventsHolder.forEach((subscription: Subscription) => {\n subscription.unsubscribe();\n });\n });\n }\n /**\n * Subscribe to toast events\n * @returns this\n * @param event NotificationEventType\n * @param action (toast: this) => void\n */\n on(event: SnotifireEventType, action: (toast: this) => void): this {\n this.eventsHolder.push(\n this.eventEmitter.subscribe((e: SnotifireEventType) => {\n if (e === event) {\n action(this);\n }\n })\n );\n return this;\n }\n\n /**\n * Tests if a toast equals this toast.\n * @returns boolean true then equals else false.\n * @param toast notifire-toast\n */\n equals(toast: SnotifireToastModel): boolean {\n return this.config && toast.config\n ? this.body === toast.body &&\n this.title === toast.title &&\n this.config.type === toast.config.type\n : this.body === toast.body && this.title === toast.title;\n }\n}\n","/**\n * Deep merge objects.\n * @param sources Array<Object<any>>\n * @returns Object<any>\n */\nexport function mergeDeep(...sources: any[]) {\n const target: any = {};\n if (!sources.length) {\n return target;\n }\n\n while (sources.length > 0) {\n const source = sources.shift();\n if (isObject(source)) {\n for (const key in source) {\n if (isObject(source[key])) {\n target[key] = mergeDeep(target[key], source[key]);\n } else {\n Object.assign(target, { [key]: source[key] });\n }\n }\n }\n }\n return target;\n}\n/**\n * Generates random id\n * @return number\n */\nexport function uuid(): number {\n return Math.floor(Math.random() * (Date.now() - 1)) + 1;\n}\n/**\n * Simple is object check.\n * @param item Object<any>\n * @returns boolean\n */\nexport function isObject(item: any): boolean {\n return item && typeof item === 'object' && !Array.isArray(item);\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { SafeHtml } from '@angular/platform-browser';\nimport {\n catchError,\n finalize,\n from,\n Observable,\n of,\n Subject,\n tap,\n throwError,\n} from 'rxjs';\nimport { SetToastType } from '../decorators/set-toast-type.decorator';\nimport { TransformArgument } from '../decorators/transform-argument.decorator';\nimport { SnotifireConfig, SnotifireEventType, SnotifireType } from '../models';\nimport { SnotifireDefaults } from '../defaults/defaults.interface';\nimport { SnotifireModel } from '../models/snotifire.model';\nimport { SnotifireToastModel } from '../components/toast/notifire-toast.model';\nimport { mergeDeep, uuid } from '../utils';\n\n@Injectable()\nexport class SnotifireService {\n /**\n * Minimum display time of the notification message\n */\n private readonly minimumDisplayedTime = 3000;\n\n /**\n * Emits Notifire Notifications\n */\n readonly emitter = new Subject<SnotifireToastModel[]>();\n\n readonly toastDeleted = new Subject<number>();\n readonly toastChanged = new Subject<SnotifireToastModel>();\n\n notifications: Array<SnotifireToastModel> = [];\n\n constructor(\n @Inject('snotifireConfig') public defaultConfig: SnotifireDefaults\n ) {}\n\n /**\n * Creates toast and add it to array, returns toast id\n * @param NotificationModel NotificationModel\n * @return number\n */\n create(notif: SnotifireModel): SnotifireToastModel {\n if (this.defaultConfig.type && notif.config && notif.config.type) {\n const config = mergeDeep(\n this.defaultConfig.snotifireConfig,\n this.defaultConfig.type[notif.config.type],\n notif.config\n );\n const toast = new SnotifireToastModel(\n uuid(),\n notif.title ? notif.title : '',\n notif.body ? notif.body : '',\n config\n );\n this.add(toast);\n return toast;\n }\n const config = mergeDeep(this.defaultConfig.snotifireConfig, notif.config);\n const defaulToast = new SnotifireToastModel(\n uuid(),\n notif.title ? notif.title : '',\n notif.body ? notif.body : '',\n config\n );\n this.add(defaulToast);\n return defaulToast;\n }\n /**\n * If ID passed, emits toast animation remove, if ID & REMOVE passed, removes toast from notifications array\n * @param id number\n * @param remove boolean\n */\n remove(id: number, remove?: boolean): void {\n if (!id) {\n return this.clear();\n }\n if (remove) {\n this.notifications = this.notifications.filter(\n (toast) => toast.id !== id\n );\n return this.emit();\n }\n this.toastDeleted.next(id);\n }\n\n setDefaults(defaults: SnotifireDefaults): SnotifireDefaults {\n const mergedConfig = (this.defaultConfig = mergeDeep(\n this.defaultConfig,\n defaults\n ) as SnotifireDefaults);\n return mergedConfig;\n }\n\n /**\n * Clear notifications array\n */\n clear(): void {\n this.notifications = [];\n this.emit();\n }\n\n /**\n * add NotifireToast to notifications array\n * @param toast NotifireToast\n */\n private add(toast: SnotifireToastModel): void {\n if (\n this.defaultConfig &&\n this.defaultConfig.global &&\n this.defaultConfig.global.filterDuplicates &&\n this.containsToast(toast)\n ) {\n if (!this.defaultConfig.global.filterDuplicates) {\n throw new Error('Missing global config');\n }\n return;\n }\n if (\n this.defaultConfig &&\n this.defaultConfig.global &&\n this.defaultConfig.global.newOnTop\n ) {\n this.notifications.unshift(toast);\n } else {\n this.notifications.push(toast);\n }\n this.emit();\n }\n\n /**\n * emit changes in notifications array\n */\n private emit(): void {\n this.emitter.next(this.notifications.slice());\n }\n\n /**\n * checks if the toast is in the collection.\n * @param inToast NotifireToast\n * @returns boolean\n */\n private containsToast(inToast: SnotifireToastModel): boolean {\n return this.notifications.some((toast) => toast.equals(inToast));\n }\n\n /**\n * Creates empty toast with html string inside\n * @param html string | SafeHtml\n * @param config NotifireConfig\n * @returns number\n */\n html(html: string | SafeHtml, config?: SnotifireConfig): SnotifireToastModel {\n return this.create({\n title: undefined,\n body: undefined,\n config: {\n ...config,\n ...{ html },\n },\n });\n }\n /**\n * Create toast with success style returns toast id;\n * @param body string\n * @returns number\n */\n success(body: string): SnotifireToastModel;\n /**\n * Create toast with success style returns toast id;\n * @param body string\n * @param title string\n * @returns number\n */\n success(body: string, title: string): SnotifireToastModel;\n /**\n * Create toast with success style returns toast id;\n * @param body string\n * @param config NotificationConfig\n * @returns number\n */\n success(body: string, config: SnotifireConfig): SnotifireToastModel;\n /**\n * Create toast with success style returns toast id;\n * @param [body] string\n * @param [title] string\n * @param [config] NotificationConfig\n * @returns number\n */\n success(\n body: string,\n title: string,\n config: SnotifireConfig\n ): SnotifireToastModel;\n\n /**\n * Transform toast arguments into NotificationModel object\n */\n @TransformArgument\n /**\n * Determines current toast type and collects default configuration\n */\n @SetToastType\n success(args: any): SnotifireToastModel {\n if (!args.config) {\n throw new Error('Missing config, please configure service accordingly');\n }\n return this.create(args);\n }\n\n /**\n * Create toast with error style returns toast id;\n * @param body string\n * @returns number\n */\n error(body: string): SnotifireToastModel;\n /**\n * Create toast with error style returns toast id;\n * @param body string\n * @param title string\n * @returns number\n */\n error(body: string, title: string): SnotifireToastModel;\n /**\n * Create toast with error style returns toast id;\n * @param body string\n * @param config NotificationConfig\n * @returns number\n */\n error(body: string, config: SnotifireConfig): SnotifireToastModel;\n /**\n * Create toast with error style returns toast id;\n * @param [body] string\n * @param [title] string\n * @param [config] NotificationConfig\n * @returns number\n */\n error(\n body: string,\n title: string,\n config: SnotifireConfig\n ): SnotifireToastModel;\n /**\n * Transform toast arguments into NotificationModel object\n */\n @TransformArgument\n /**\n * Determines current toast type and collects default configuration\n */\n @SetToastType\n error(args: any): SnotifireToastModel {\n return this.create(args);\n }\n\n /**\n * Create toast with info style returns toast id;\n * @param body string\n * @returns number\n */\n info(body: string): SnotifireToastModel;\n /**\n * Create toast with info style returns toast id;\n * @param body string\n * @param title string\n * @returns number\n */\n info(body: string, title: string): SnotifireToastModel;\n /**\n * Create toast with info style returns toast id;\n * @param body string\n * @param config NotificationConfig\n * @returns number\n */\n info(body: string, config: SnotifireConfig): SnotifireToastModel;\n /**\n * Create toast with info style returns toast id;\n * @param [body] string\n * @param [title] string\n * @param [config] NotificationConfig\n * @returns number\n */\n info(\n body: string,\n title: string,\n config: SnotifireConfig\n ): SnotifireToastModel;\n /**\n * Transform toast arguments into NotificationModel object\n */\n @TransformArgument\n /**\n * Determines current toast type and collects default configuration\n */\n @SetToastType\n info(args: any): SnotifireToastModel {\n return this.create(args);\n }\n\n /**\n * Create toast with warning style returns toast id;\n * @param body string\n * @returns number\n */\n warning(body: string): SnotifireToastModel;\n /**\n * Create toast with warning style returns toast id;\n * @param body string\n * @param title string\n * @returns number\n */\n warning(body: string, title: string): SnotifireToastModel;\n /**\n * Create toast with warning style returns toast id;\n * @param body string\n * @param config NotificationConfig\n * @returns number\n */\n warning(body: string, config: SnotifireConfig): SnotifireToastModel;\n /**\n * Create toast with warning style returns toast id;\n * @param [body] string\n * @param [title] string\n * @param [config] NotificationConfig\n * @returns number\n */\n warning(\n body: string,\n title: string,\n config: SnotifireConfig\n ): SnotifireToastModel;\n /**\n * Transform toast arguments into NotificationModel object\n */\n @TransformArgument\n /**\n * Determines current toast type and collects default configuration\n */\n @SetToastType\n warning(args: any): SnotifireToastModel {\n return this.create(args);\n }\n\n /**\n * Create toast with confirm style returns toast id;\n * @param body string\n * @returns number\n */\n confirm(body: string): SnotifireToastModel;\n /**\n * Create toast with confirm style returns toast id;\n * @param body string\n * @param title string\n * @returns number\n */\n confirm(body: string, title: string): SnotifireToastModel;\n /**\n * Create toast with confirm style returns toast id;\n * @param body string\n * @param config NotificationConfig\n * @returns number\n */\n confirm(body: string, config: SnotifireConfig): SnotifireToastModel;\n /**\n * Create toast with confirm style returns toast id;\n * @param [body] string\n * @param [title] string\n * @param [config] NotificationConfig\n * @returns number\n */\n confirm(\n body: string,\n title: string,\n config: SnotifireConfig\n ): SnotifireToastModel;\n /**\n * Transform toast arguments into NotificationModel object\n */\n @TransformArgument\n /**\n * Determines current toast type and collects default configuration\n */\n @SetToastType\n confirm(args: any): SnotifireToastModel {\n return this.create(args);\n }\n\n /**\n * Create toast with Prompt style with two buttons, returns toast id;\n * @param body string\n * @returns number\n */\n prompt(body: string): SnotifireToastModel;\n /**\n * Create toast with Prompt style with two buttons, returns toast id;\n * @param body string\n * @param title string\n * @returns number\n */\n prompt(body: string, title: string): SnotifireToastModel;\n /**\n * Create toast with Prompt style with two buttons, returns toast id;\n * @param body string\n * @param config NotificationConfig\n * @returns number\n */\n prompt(body: string, config: SnotifireConfig): SnotifireToastModel;\n /**\n * Create toast with Prompt style with two buttons, returns toast id;\n * @param [body] string\n * @param [title] string\n * @param [config] NotificationConfig\n * @returns number\n */\n prompt(\n body: string,\n title: string,\n config: SnotifireConfig\n ): SnotifireToastModel;\n /**\n * Transform toast arguments into NotificationModel object\n */\n @TransformArgument\n /**\n * Determines current toast type and collects default configuration\n */\n @SetToastType\n prompt(args: any): SnotifireToastModel {\n return this.create(args);\n }\n\n /**\n * Creates async toast with Info style. Pass action, and resolve or reject it.\n * @param body string\n * @param action Promise<NotificationModel> | Observable<NotificationModel>\n * @returns number\n */\n async(\n body: string,\n action: Promise<SnotifireModel> | Observable<SnotifireModel>\n ): Observable<any>;\n /**\n * Creates async toast with Info style. Pass action, and resolve or reject it.\n * @param body string\n * @param title string\n * @param action Promise<NotificationModel> | Observable<NotificationModel>\n * @returns number\n */\n async(\n body: string,\n title: string,\n action: Promise<SnotifireModel> | Observable<SnotifireModel>\n ): Observable<any>;\n /**\n * Creates async toast with Info style. Pass action, and resolve or reject it.\n * @param body string\n * @param action Promise<NotificationModel> | Observable<NotificationModel>\n * @param [config] NotificationConfig\n * @returns number\n */\n async(\n body: string,\n action: Promise<SnotifireModel> | Observable<SnotifireModel>,\n config: SnotifireConfig\n ): Observable<any>;\n /**\n * Creates async toast with Info style. Pass action, and resolve or reject it.\n * @param body string\n * @param title string\n * @param action Promise<NotificationModel> | Observable<NotificationModel>\n * @param [config] NotificationConfig\n * @returns number\n */\n async(\n body: string,\n title: string,\n action: Promise<SnotifireModel> | Observable<SnotifireModel>,\n config: SnotifireConfig\n ): Observable<any>;\n /**\n * Transform toast arguments into NotificationModel object\n */\n @TransformArgument\n /**\n * Determines current toast type and collects default configuration\n */\n @SetToastType\n async(args: any): Observable<any> {\n let async: Observable<any>;\n if (args.action instanceof Promise) {\n async = from(args.action);\n } else {\n async = args.action;\n }\n\n const toast = this.create(args);\n let failed = false;\n const asyncAtion = async.pipe(\n tap((next) => {\n console.log('called'), this.mergeToast(toast, next);\n }),\n catchError((error) => {\n failed = true;\n return throwError(() => error);\n }),\n finalize(() => {\n this.mergeToast(\n toast,\n {},\n failed === true ? SnotifireType.ERROR : SnotifireType.SUCCESS\n );\n })\n );\n toast.on(SnotifireEventType.MOUNTED, () => {\n console.log('mounted');\n return asyncAtion;\n });\n return asyncAtion;\n\n // const toast = this.create(args);\n\n // toast.on(SnotifireEventType.MOUNTED, () => {\n // const subscription: Subscription = async.subscribe({\n // next: (next?: SnotifireModel) => {\n // this.mergeToast(toast, next);\n // },\n // error: (error?: SnotifireModel) => {\n // this.mergeToast(toast, error, SnotifireType.ERROR);\n // subscription.unsubscribe();\n // },\n // complete: () => {\n // this.mergeToast(toast, {}, SnotifireType.SUCCESS);\n // subscription.unsubscribe();\n // },\n // });\n // });\n\n // return toast;\n }\n\n private mergeToast(toast: any, next: any, type?: SnotifireType) {\n if (next.body) {\n toast.body = next.body;\n }\n if (next.title) {\n toast.title = next.title;\n }\n\n if (type && this.defaultConfig) {\n console.log(type);\n toast.config = mergeDeep(\n toast.config,\n this.defaultConfig.global,\n this.defaultConfig.snotifireConfig?.type,\n { type },\n next.config\n );\n } else {\n toast.config = mergeDeep(toast.config, next.config);\n }\n if (next.html) {\n toast.config.html = next.html;\n }\n this.emit();\n this.toastChanged.next(toast);\n }\n /**\n * returns SnotifyToast object\n * @param id Number\n * @return SnotifyToast|undefined\n */\n get(id: number): SnotifireToastModel | undefined {\n return (\n this.notifications && this.notifications.find((toast) => toast.id === id)\n );\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnInit,\n ViewEncapsulation,\n} from '@angular/core';\nimport { SnotifireToastModel } from '../toast/notifire-toast.model';\nimport { SnotifireService } from '../../services';\n\n@Component({\n selector: 'notifire-button',\n templateUrl: './buttons.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\n/**\n * Buttons component\n */\nexport class ButtonsComponent {\n /**\n * Get buttons Array\n */\n @Input() toast!: SnotifireToastModel;\n\n constructor(private readonly service: SnotifireService) {}\n\n /**\n * remove toast\n */\n remove() {\n this.service.remove(this.toast.id);\n }\n}\n","<div class=\"notifire-toast__buttons\">\n <ng-container *ngIf=\"toast.config\">\n <button\n type=\"button\"\n *ngFor=\"let button of toast.config.buttons\"\n [ngClass]=\"{ 'notifire-toast__buttons--bold': button.bold }\"\n (click)=\"button.action ? button.action(toast) : remove()\"\n >\n {{ button.text }}\n </button>\n </ng-container>\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'truncate',\n})\n\n/**\n * Truncate toast text pipe\n */\nexport class TruncatePipe implements PipeTransform {\n private readonly DEFAULT_LIMIT = 40;\n private readonly DEFAULT_TRAIL = '...';\n transform(value: string, ...args: Array<any>): any {\n const limit = args.length > 0 ? parseInt(args[0], 10) : this.DEFAULT_LIMIT;\n\n return value.length > limit\n ? value.substring(0, limit) +\n (args.length > 1 ? args[1] : this.DEFAULT_TRAIL)\n : value;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnInit,\n ViewEncapsulation,\n} from '@angular/core';\nimport { SnotifireEventType } from '../../models';\nimport { SnotifireToastModel } from '../toast/notifire-toast.model';\n\n@Component({\n selector: 'ngx-snotify-prompt',\n templateUrl: './prompt.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class PromptComponent {\n inputType = SnotifireEventType.INPUT;\n /**\n * Get PROMPT placeholder\n */\n @Input() toast!: SnotifireToastModel;\n /**\n * Is PROMPT focused\n */\n isPromptFocused = false;\n\n getValue($event: any): string {\n return $event.target.value;\n }\n}\n","<span\n class=\"notifire-toast__input\"\n [ngClass]=\"{ 'notifire-toast__input--filled': isPromptFocused }\"\n>\n <input\n (input)=\"toast.value = getValue($event); toast.eventEmitter.next(inputType)\"\n autofocus\n class=\"notifire-toast__input__field\"\n type=\"text\"\n [id]=\"toast.id\"\n (focus)=\"isPromptFocused = true\"\n (blur)=\"isPromptFocused = !!toast.value && !!toast.value.length\"\n >\n <label\n class=\"notifire-toast__input__label\"\n [for]=\"toast.id\"\n >\n <span\n class=\"notifire-toast__input__labelContent\"\n *ngIf=\"toast.config && toast.config.placeholder \"\n >\n {{ toast.config.placeholder | truncate }}\n </span>\n </label>\n</span>\n","import {\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\nimport { Subject, takeUntil } from 'rxjs';\nimport { SnotifireEventType, SnotifireType } from '../../models';\nimport { SnotifireToastModel } from './notifire-toast.model';\nimport { SnotifireService } from '../../services';\n\n@Component({\n selector: 'ngx-toast',\n templateUrl: './toast.component.html',\n encapsulation: ViewEncapsulation.None,\n})\nexport class ToastComponent implements OnInit, OnDestroy {\n private unsubscribe$ = new Subject<void>();\n\n /**\n * Get toast from notifications array\n */\n @Input() toast!: SnotifireToastModel;\n @Output() stateChanged = new EventEmitter<SnotifireEventType>();\n\n /**\n * requestAnimationFrame id\n */\n animationFrame!: number;\n\n /**\n * Toast state\n */\n state = {\n paused: false,\n progress: 0,\n animation: '',\n isDestroying: false,\n promptType: SnotifireType.PROMPT,\n };\n\n constructor(private readonly service: SnotifireService) {}\n\n ngOnInit(): void {\n this.service.toastChanged\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe((toast: SnotifireToastModel) => {\n if (this.toast.id === toast.id) {\n this.initToast();\n }\n });\n\n this.service.toastDeleted\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe((id) => {\n if (this.toast.id === id) {\n this.onRemove();\n }\n });\n if (this.toast && this.toast.config && !this.toast.config.timeout) {\n this.toast.config.showProgressBar = false;\n }\n\n this.toast.eventEmitter.next(SnotifireEventType.MOUNTED);\n this.state.animation = 'notifire-toast--in';\n }\n ngAfterContentInit() {\n if (\n this.service.defaultConfig.snotifireConfig &&\n this.service.defaultConfig.snotifireConfig.animation\n ) {\n setTimeout(() => {\n this.stateChanged.emit(SnotifireEventType.BEFORE_SHOW);\n this.toast.eventEmitter.next(SnotifireEventType.BEFORE_SHOW);\n this.state.animation =\n this.toast.config &&\n this.toast.config.animation &&\n this.toast.config.animation.enter\n ? this.toast.config.animation.enter\n : '';\n }, this.service.defaultConfig.snotifireConfig.animation.time / 5); // time to show toast push animation (notifire-toast--in)\n }\n }\n /**\n * Trigger beforeDestroy lifecycle. Removes toast\n */\n onRemove() {\n this.state.isDestroying = true;\n this.toast.eventEmitter.next(SnotifireEventType.BEFORE_HIDE);\n this.stateChanged.emit(SnotifireEventType.BEFORE_HIDE);\n this.state.animation =\n (this.toast.config &&\n this.toast.config.animation &&\n this.toast.config.animation.exit) ||\n '';\n setTimeout(() => {\n this.stateChanged.emit(SnotifireEventType.HIDDEN);\n this.state.animation = 'notifire-toast--out';\n this.toast.eventEmitter.next(SnotifireEventType.HIDDEN);\n setTimeout(\n () => this.service.remove(this.toast.id, true),\n this.toast.config &&\n this.toast.config.animation &&\n this.toast.config.animation.time / 2\n );\n }, this.toast.config && this.toast.config.animation && this.toast.config.animation.time / 2);\n }\n /**\n * Trigger OnClick lifecycle\n */\n onClick() {\n this.toast.eventEmitter.next(SnotifireEventType.CLICK);\n if (this.toast && this.toast.config && this.toast.config.closeOnClick) {\n this.service.remove(this.toast.id);\n }\n }\n /**\n * Trigger onHoverEnter lifecycle\n */\n onMouseEnter() {\n this.toast.eventEmitter.next(SnotifireEventType.MOUSE_ENTER);\n if (this.toast && this.toast.config && this.toast.config.pauseOnHover) {\n this.state.paused = true;\n }\n }\n\n /**\n * Trigger onHoverLeave lifecycle\n */\n onMouseLeave() {\n if (\n this.toast &&\n this.toast.config &&\n this.toast.config.pauseOnHover &&\n this.toast.config.timeout\n ) {\n this.state.paused = false;\n this.startTimeout(this.toast.config.timeout * this.state.progress);\n }\n this.toast.eventEmitter.next(SnotifireEventType.MOUSE_LEAVE);\n }\n /**\n * Remove toast completely after animation\n */\n onExitTransitionEnd() {\n if (this.state.isDestroying) {\n return;\n }\n this.initToast();\n this.toast.eventEmitter.next(SnotifireEventType.SHOWN);\n }\n\n /*\n Common\n */\n\n /**\n * Initialize base toast config\n *\n */\n initToast(): void {\n if (\n (this.toast && this.toast.config && this.toast.config.timeout\n ? this.toast.config.timeout\n : 0) > 0\n ) {\n this.startTimeout(0);\n }\n }\n /**\n * Start progress bar\n * @param startTime number\n */\n startTimeout(startTime: number = 0) {\n const start = performance.now();\n const calculate = () => {\n this.animationFrame = requestAnimationFrame((timestamp) => {\n const runtime = timestamp + startTime - start;\n const progress = Math.min(\n runtime /\n (this.toast && this.toast.config && this.toast.config.timeout\n ? this.toast.config.timeout\n : 1),\n 1\n );\n if (this.state.paused) {\n cancelAnimationFrame(this.animationFrame);\n } else if (\n runtime <\n (this.toast && this.toast.config && this.toast.config.timeout\n ? this.toast.config.timeout\n : 1)\n ) {\n this.state.progress = progress;\n calculate();\n } else {\n this.state.progress = 1;\n cancelAnimationFrame(this.animationFrame);\n this.service.remove(this.toast.id);\n }\n });\n };\n calculate();\n }\n\n ngOnDestroy(): void {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n}\n","<ng-container *ngIf=\"toast && toast.config\">\n <div\n [attr.role]=\"toast.config.type === state.promptType ? 'dialog' : 'alert'\"\n [attr.aria-labelledby]=\"'snotify_' + toast.id\"\n [attr.aria-modal]=\"toast.config.type === state.promptType\"\n [ngClass]=\"[\n 'notifire-toast animated',\n 'snotify-' + toast.config.type,\n state.animation, toast.valid === undefined ? '' : toast.valid ? 'snotifyToast--valid' : 'snotifyToast--invalid'\n]\"\n [ngStyle]=\"{\n '-webkit-transition': toast.config.animation && toast.config.animation.time + 'ms',\n transition: toast.config.animation && toast.config.animation.time + 'ms',\n '-webkit-animation-duration': toast.config.animation && toast.config.animation.time + 'ms',\n 'animation-duration': toast.config.animation && toast.config.animation.time + 'ms'\n}\"\n (animationend)=\"onExitTransitionEnd()\"\n (click)=\"onClick()\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n >\n <div\n class=\"notifire-toast__progressBar\"\n *ngIf=\"toast.config.showProgressBar\"\n >\n <span\n class=\"notifire-toast__progressBar__percentage\"\n [ngStyle]=\"{ width: state.progress * 100 + '%' }\"\n ></span>\n </div>\n <div\n class=\"notifire-toast__inner\"\n *ngIf=\"!toast.config.html; else toastHTML\"\n >\n <div\n class=\"notifire-toast__title\"\n [attr.id]=\"'snotify_' + toast.id\"\n *ngIf=\"toast.title\"\n >\n {{ toast.title | truncate: toast.config.titleMaxLength }}\n </div>\n <div\n class=\"notifire-toast__body\"\n *ngIf=\"toast.body\"\n >\n {{ toast.body | truncate: toast.config.bodyMaxLength }}\n </div>\n <ngx-snotify-prompt\n *ngIf=\"toast.config.type === state.promptType\"\n [toast]=\"toast\"\n >\n </ngx-snotify-prompt>\n <div\n *ngIf=\"!toast.config.icon; else elseBlock\"\n [ngClass]=\"['snotifire-icon', toast.config.iconClass || 'snotifire-icon--' + toast.config.type]\"\n ></div>\n <ng-template #elseBlock>\n <img\n class=\"snotifire-icon\"\n [src]=\"toast.config.icon\"\n >\n </ng-template>\n </div>\n <ng-template #toastHTML>\n <div\n class=\"notifire-toast__inner\"\n [innerHTML]=\"toast.config.html\"\n ></div>\n </ng-template>\n <notifire-button\n *ngIf=\"toast.config.buttons\"\n [toast]=\"toast\"\n ></notifire-button>\n </div>\n</ng-container>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'keys',\n pure: false,\n})\n/**\n * Extract object keys pipe\n */\nexport class KeysPipe implements PipeTransform {\n transform(value: any): any {\n if (!value) {\n return value;\n }\n return Object.keys(value);\n }\n}\n","import {\n AfterViewInit,\n Component,\n OnDestroy,\n OnInit,\n ViewEncapsulation,\n} from '@angular/core';\nimport { Subject, Subscription, takeUntil } from 'rxjs';\nimport { SnotifireEventType, SnotificationPositionType } from '../../models';\nimport { SnotifireNotifications } from '../../models/snotifire-notifications.interface';\nimport { SnotifireToastModel } from '../toast/notifire-toast.model';\nimport { SnotifireService } from '../../services';\n\n@Component({\n selector: 'ngx-snotifire',\n templateUrl: './ngx-snotifire.component.html',\n encapsulation: ViewEncapsulation.None,\n})\nexport class NgxSnotifireComponent implements OnInit, OnDestroy, AfterViewInit {\n private readonly unsubscribe$ = new Subject<void>();\n /**\n * Toasts array\n */\n notifications!: SnotifireNotifications;\n /**\n * Toasts emitter\n */\n emitter!: Subscription;\n /**\n * Helper for slice pipe (maxOnScreen)\n */\n dockSizeA!: number;\n /**\n * Helper for slice pipe (maxOnScreen)\n */\n dockSizeB!: number | undefined;\n /**\n * Helper for slice pipe (maxAtPosition)\n */\n blockSizeA!: number;\n /**\n * Helper for slice pipe (maxAtPosition)\n */\n blockSizeB!: number | undefined;\n /**\n * Backdrop Opacity\n */\n backdrop: number | undefined = -1;\n /**\n * How many toasts with backdrop in current queue\n */\n withBackdrop: SnotifireToastModel[] = [];\n\n constructor(readonly service: SnotifireService) {}\n ngAfterViewInit(): void {}\n\n ngOnInit(): void {\n this.service.emitter\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe((toasts: SnotifireToastModel[]) => {\n if (\n this.service.defaultConfig &&\n this.service.defaultConfig.global &&\n this.service.defaultConfig.global.newOnTop\n ) {\n this.dockSizeA = this.service.defaultConfig.global.maxOnScreen\n ? -this.service.defaultConfig.global.maxOnScreen\n : 6;\n this.dockSizeB = undefined;\n this.blockSizeA = this.service.defaultConfig.global.maxAtPosition\n ? -this.service.defaultConfig.global.maxAtPosition\n : 4;\n this.blockSizeB = undefined;\n this.withBackdrop = toasts.filter(\n (toast) =>\n toast.config &&\n toast.config.backdrop &&\n toast.config.backdrop >= 0\n );\n } else {\n this.dockSizeA = 0;\n this.dockSizeB =\n this.service.defaultConfig.global &&\n this.service.defaultConfig.global.maxOnScreen;\n this.blockSizeA = 0;\n this.blockSizeB =\n this.service.defaultConfig.global &&\n this.service.defaultConfig.global.maxAtPosition;\n this.withBackdrop = toasts\n .filter(\n (toast) =>\n toast.config &&\n toast.config.backdrop &&\n toast.config.backdrop >= 0\n )\n .reverse();\n }\n this.notifications = this.splitToasts(\n toasts.slice(this.dockSizeA, this.dockSizeB)\n );\n this.stateChanged(SnotifireEventType.MOUNTED);\n });\n }\n\n /**\n * Split toasts toasts into different objects\n * @param toasts notifire-toast[]\n * @returns SnotifyNotifications\n */\n splitToasts(toasts: SnotifireToastModel[]): SnotifireNotifications {\n const result: SnotifireNotifications = {};\n\n for (const property in SnotificationPositionType) {\n if (SnotificationPositionType.hasOwnProperty(property)) {\n result[\n SnotificationPositionType[\n property as keyof typeof SnotificationPositionType\n ]\n ] = [];\n }\n }\n\n toasts.forEach((toast: SnotifireToastModel) => {\n if (toast.config.position) {\n const keyIndex = Object.keys(SnotificationPositionType).indexOf(\n toast.config.position\n );\n const searchedString = Object.values(SnotificationPositionType)[\n keyIndex\n ];\n result[searchedString]?.push(toast);\n }\n });\n return result;\n }\n\n getNotificationArray(\n notifications: SnotifireNotifications,\n position: SnotificationPositionType\n ): SnotifireToastModel[] | undefined {\n return notifications[position];\n }\n\n /**\n * Changes the backdrop opacity\n * @param event NotificationEventType\n */\n stateChanged(event: SnotifireEventType) {\n if (!this.withBackdrop.length) {\n if (this.backdrop && this.backdrop >= 0) {\n this.backdrop = -1;\n }\n return;\n }\n switch (event) {\n case 'mounted':\n if (this.backdrop && this.backdrop < 0) {\n this.backdrop = 0;\n }\n break;\n case 'beforeShow':\n this.backdrop =\n this.withBackdrop[this.withBackdrop.length - 1].config?.backdrop;\n break;\n case 'beforeHide':\n if (this.withBackdrop.length === 1) {\n this.backdrop = 0;\n }\n break;\n case 'hidden':\n if (this.withBackdrop.length === 1) {\n this.backdrop = -1;\n }\n break;\n }\n }\n\n ngOnDestroy(): void {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n}\n","<div\n class=\"snotifire-backdrop\"\n *ngIf=\"backdrop && backdrop >= 0\"\n [style.opacity]=\"backdrop\"\n></div>\n\n<div\n *ngFor=\"let position of notifications | keys\"\n class=\"snotify snotify-{{ position }}\"\n>\n <ngx-toast\n *ngFor=\"let notification of getNotificationArray(notifications, position) | slice: blockSizeA:blockSizeB\"\n [toast]=\"notification\"\n (stateChanged)=\"stateChanged($event)\"\n >\n </ngx-toast>\n\n</div>\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport {\n ButtonsComponent,\n NgxSnotifireComponent,\n PromptComponent,\n ToastComponent,\n} from './components';\nimport { KeysPipe, TruncatePipe } from './pipes';\nimport { SnotifireService } from './services';\n\n@NgModule({\n declarations: [\n PromptComponent,\n ToastComponent,\n ButtonsComponent,\n TruncatePipe,\n KeysPipe,\n NgxSnotifireComponent,\n ],\n imports: [CommonModule],\n exports: [NgxSnotifireComponent],\n})\nexport class NgxSnotifireModule {\n static forRoot(): ModuleWithProviders<NgxSnotifireModule> {\n return {\n ngModule: NgxSnotifireModule,\n providers: [SnotifireService],\n };\n }\n}\n","import { SnotificationPositionType, SnotifireType } from '../models';\n\n/**\n * Snotify default configuration object\n */\nexport const ToastDefaults = {\n global: {\n newOnTop: true,\n maxOnScreen: 8,\n maxAtPosition: 8,\n filterDuplicates: false,\n },\n snotifireConfig: {\n type: SnotifireType.INFO,\n showProgressBar: true,\n timeout: 5000,\n closeOnClick: true,\n pauseOnHover: true,\n bodyMaxLength: 150,\n titleMaxLength: 16,\n backdrop: -1,\n icon: undefined,\n iconClass: undefined,\n html: undefined,\n position: 'RIGHT_TOP' as SnotificationPositionType,\n animation: { enter: 'fadeIn', exit: 'fadeOut', time: 400 },\n },\n type: {\n [SnotifireType.PROMPT]: {\n timeout: 0,\n closeOnClick: false,\n buttons: [\n { text: 'Ok', action: null, bold: true },\n { text: 'Cancel', action: null, bold: false },\n ],\n placeholder: 'Enter answer here...',\n type: SnotifireType.PROMPT,\n },\n [SnotifireType.CONFIRM]: {\n timeout: 0,\n closeOnClick: false,\n buttons: [\n { text: 'Ok', action: null, bold: true },\n { text: 'Cancel', action: null, bold: false },\n ],\n type: SnotifireType.CONFIRM,\n },\n [SnotifireType.SUCCESS]: {\n type: SnotifireType.SUCCESS,\n },\n [SnotifireType.ERROR]: {\n type: SnotifireType.ERROR,\n },\n [SnotifireType.WARNING]: {\n type: SnotifireType.WARNING,\n },\n [SnotifireType.INFO]: {\n type: SnotifireType.INFO,\n },\n [SnotifireType.ASYNC]: {\n pauseOnHover: false,\n closeOnClick: false,\n timeout: 0,\n showProgressBar: false,\n type: SnotifireType.ASYNC,\n },\n },\n};\n","/*\n * Public API Surface of ngx-notifire\n */\n\nexport * from './lib/ngx-snotifire.module';\nexport * from './lib/components';\n\nexport * from './lib/models';\nexport * from './lib/pipes';\nexport * from './lib/services';\nexport * from './lib/defaults';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.SnotifireService","i1","i2.TruncatePipe","i3.PromptComponent","i4.ButtonsComponent","i5.TruncatePipe","i3.ToastComponent","i4.KeysPipe"],"mappings":"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"}
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "ngx-snotifire",
3
- "version": "16.0.0",
3
+ "version": "17.0.0",
4
4
  "license": "Apache-2.0",
5
5
  "peerDependencies": {
6
- "@angular/common": "^16.2.12",
7
- "@angular/core": "^16.2.12",
6
+ "@angular/common": "^17.0.3",
7
+ "@angular/core": "^17.0.3",
8
8
  "rxjs": "^7.0.0"
9
9
  },
10
10
  "dependencies": {