ngx-snotifire 19.1.0 → 20.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.
Files changed (33) hide show
  1. package/fesm2022/ngx-snotifire.mjs +25 -25
  2. package/fesm2022/ngx-snotifire.mjs.map +1 -1
  3. package/index.d.ts +794 -3
  4. package/package.json +13 -3
  5. package/lib/components/buttons/buttons-config.interface.d.ts +0 -17
  6. package/lib/components/buttons/buttons.component.d.ts +0 -17
  7. package/lib/components/index.d.ts +0 -5
  8. package/lib/components/ngx-notifire/ngx-snotifire.component.d.ts +0 -61
  9. package/lib/components/prompt/prompt.component.d.ts +0 -17
  10. package/lib/components/toast/notifire-toast.model.d.ts +0 -42
  11. package/lib/components/toast/toast.component.d.ts +0 -64
  12. package/lib/decorators/set-toast-type.decorator.d.ts +0 -10
  13. package/lib/decorators/transform-argument.decorator.d.ts +0 -10
  14. package/lib/defaults/defaults.interface.d.ts +0 -12
  15. package/lib/defaults/global-config.interface.d.ts +0 -34
  16. package/lib/defaults/index.d.ts +0 -3
  17. package/lib/defaults/toast-defaults.d.ts +0 -73
  18. package/lib/models/index.d.ts +0 -6
  19. package/lib/models/snotifire-animate.interface.d.ts +0 -19
  20. package/lib/models/snotifire-config.interface.d.ts +0 -82
  21. package/lib/models/snotifire-event.type.d.ts +0 -12
  22. package/lib/models/snotifire-notifications.interface.d.ts +0 -12
  23. package/lib/models/snotifire-position.type.d.ts +0 -11
  24. package/lib/models/snotifire.model.d.ts +0 -39
  25. package/lib/models/snotifire.type.d.ts +0 -9
  26. package/lib/ngx-snotifire.module.d.ts +0 -15
  27. package/lib/pipes/index.d.ts +0 -2
  28. package/lib/pipes/keys.pipe.d.ts +0 -7
  29. package/lib/pipes/truncate.pipe.d.ts +0 -9
  30. package/lib/services/index.d.ts +0 -1
  31. package/lib/services/notification.service.d.ts +0 -270
  32. package/lib/utils.d.ts +0 -17
  33. package/public-api.d.ts +0 -6
@@ -499,8 +499,8 @@ class SnotifireService {
499
499
  get(id) {
500
500
  return (this.notifications && this.notifications.find((toast) => toast.id === id));
501
501
  }
502
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SnotifireService, deps: [{ token: 'snotifireConfig' }], target: i0.ɵɵFactoryTarget.Injectable }); }
503
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SnotifireService }); }
502
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: SnotifireService, deps: [{ token: 'snotifireConfig' }], target: i0.ɵɵFactoryTarget.Injectable }); }
503
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: SnotifireService }); }
504
504
  }
505
505
  __decorate([
506
506
  TransformArgument
@@ -558,7 +558,7 @@ __decorate([
558
558
  ,
559
559
  SetToastType
560
560
  ], SnotifireService.prototype, "async", null);
561
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SnotifireService, decorators: [{
561
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: SnotifireService, decorators: [{
562
562
  type: Injectable
563
563
  }], ctorParameters: () => [{ type: undefined, decorators: [{
564
564
  type: Inject,
@@ -578,10 +578,10 @@ class ButtonsComponent {
578
578
  remove() {
579
579
  this.service.remove(this.toast.id);
580
580
  }
581
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ButtonsComponent, deps: [{ token: SnotifireService }], target: i0.ɵɵFactoryTarget.Component }); }
582
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.17", type: ButtonsComponent, isStandalone: false, selector: "notifire-button", inputs: { toast: "toast" }, ngImport: i0, template: "<div class=\"notifire-toast__buttons\">\n @if (toast.config) {\n @for (button of toast.config.buttons; track button.text) {\n <button\n type=\"button\"\n [ngClass]=\"{ 'notifire-toast__buttons--bold': button.bold }\"\n (click)=\"button.action ? button.action(toast) : remove()\"\n >\n {{ button.text }}\n </button>\n }\n }\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
581
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ButtonsComponent, deps: [{ token: SnotifireService }], target: i0.ɵɵFactoryTarget.Component }); }
582
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.15", type: ButtonsComponent, isStandalone: false, selector: "notifire-button", inputs: { toast: "toast" }, ngImport: i0, template: "<div class=\"notifire-toast__buttons\">\n @if (toast.config) {\n @for (button of toast.config.buttons; track button.text) {\n <button\n type=\"button\"\n [ngClass]=\"{ 'notifire-toast__buttons--bold': button.bold }\"\n (click)=\"button.action ? button.action(toast) : remove()\"\n >\n {{ button.text }}\n </button>\n }\n }\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
583
583
  }
584
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ButtonsComponent, decorators: [{
584
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ButtonsComponent, decorators: [{
585
585
  type: Component,
586
586
  args: [{ selector: 'notifire-button', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: false, template: "<div class=\"notifire-toast__buttons\">\n @if (toast.config) {\n @for (button of toast.config.buttons; track button.text) {\n <button\n type=\"button\"\n [ngClass]=\"{ 'notifire-toast__buttons--bold': button.bold }\"\n (click)=\"button.action ? button.action(toast) : remove()\"\n >\n {{ button.text }}\n </button>\n }\n }\n</div>\n" }]
587
587
  }], ctorParameters: () => [{ type: SnotifireService }], propDecorators: { toast: [{
@@ -603,10 +603,10 @@ class TruncatePipe {
603
603
  (args.length > 1 ? args[1] : this.DEFAULT_TRAIL)
604
604
  : value;
605
605
  }
606
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TruncatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
607
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.17", ngImport: i0, type: TruncatePipe, isStandalone: false, name: "truncate" }); }
606
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: TruncatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
607
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.15", ngImport: i0, type: TruncatePipe, isStandalone: false, name: "truncate" }); }
608
608
  }
609
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TruncatePipe, decorators: [{
609
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: TruncatePipe, decorators: [{
610
610
  type: Pipe,
611
611
  args: [{
612
612
  name: 'truncate',
@@ -625,10 +625,10 @@ class PromptComponent {
625
625
  getValue($event) {
626
626
  return $event.target.value;
627
627
  }
628
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: PromptComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
629
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.17", type: PromptComponent, isStandalone: false, 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 @if (toast.config && toast.config.placeholder) {\n <span class=\"notifire-toast__input__labelContent\">\n {{ toast.config.placeholder | truncate }}\n </span>\n }\n </label>\n</span>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: TruncatePipe, name: "truncate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
628
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: PromptComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
629
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.15", type: PromptComponent, isStandalone: false, 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 @if (toast.config && toast.config.placeholder) {\n <span class=\"notifire-toast__input__labelContent\">\n {{ toast.config.placeholder | truncate }}\n </span>\n }\n </label>\n</span>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: TruncatePipe, name: "truncate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
630
630
  }
631
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: PromptComponent, decorators: [{
631
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: PromptComponent, decorators: [{
632
632
  type: Component,
633
633
  args: [{ selector: 'ngx-snotify-prompt', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: false, 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 @if (toast.config && toast.config.placeholder) {\n <span class=\"notifire-toast__input__labelContent\">\n {{ toast.config.placeholder | truncate }}\n </span>\n }\n </label>\n</span>\n" }]
634
634
  }], propDecorators: { toast: [{
@@ -799,10 +799,10 @@ class ToastComponent {
799
799
  this.unsubscribe$.next();
800
800
  this.unsubscribe$.complete();
801
801
  }
802
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ToastComponent, deps: [{ token: SnotifireService }], target: i0.ɵɵFactoryTarget.Component }); }
803
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.17", type: ToastComponent, isStandalone: false, selector: "ngx-toast", inputs: { toast: "toast" }, outputs: { stateChanged: "stateChanged" }, ngImport: i0, template: "@if (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 @if (toast.config.showProgressBar) {\n <div class=\"notifire-toast__progressBar\">\n <span\n class=\"notifire-toast__progressBar__percentage\"\n [ngStyle]=\"{ width: state.progress * 100 + '%' }\"\n ></span>\n </div>\n }\n @if (!toast.config.html) {\n <div class=\"notifire-toast__inner\">\n @if (toast.title) {\n <div\n class=\"notifire-toast__title\"\n [attr.id]=\"'snotify_' + toast.id\"\n >\n {{ toast.title | truncate: toast.config.titleMaxLength }}\n </div>\n }\n @if (toast.body) {\n <div class=\"notifire-toast__body\">\n {{ toast.body | truncate: toast.config.bodyMaxLength }}\n </div>\n }\n @if (toast.config.type === state.promptType) {\n <ngx-snotify-prompt [toast]=\"toast\"></ngx-snotify-prompt>\n }\n @if (!toast.config.icon) {\n <div\n [ngClass]=\"['snotifire-icon', toast.config.iconClass || 'snotifire-icon--' + toast.config.type]\"\n ></div>\n } @else {\n <img\n class=\"snotifire-icon\"\n [src]=\"toast.config.icon\"\n >\n }\n </div>\n } @else {\n <div\n class=\"notifire-toast__inner\"\n [innerHTML]=\"toast.config.html\"\n ></div>\n }\n @if (toast.config.buttons) {\n <notifire-button [toast]=\"toast\"></notifire-button>\n }\n </div>\n}\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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 }); }
802
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ToastComponent, deps: [{ token: SnotifireService }], target: i0.ɵɵFactoryTarget.Component }); }
803
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.15", type: ToastComponent, isStandalone: false, selector: "ngx-toast", inputs: { toast: "toast" }, outputs: { stateChanged: "stateChanged" }, ngImport: i0, template: "@if (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 @if (toast.config.showProgressBar) {\n <div class=\"notifire-toast__progressBar\">\n <span\n class=\"notifire-toast__progressBar__percentage\"\n [ngStyle]=\"{ width: state.progress * 100 + '%' }\"\n ></span>\n </div>\n }\n @if (!toast.config.html) {\n <div class=\"notifire-toast__inner\">\n @if (toast.title) {\n <div\n class=\"notifire-toast__title\"\n [attr.id]=\"'snotify_' + toast.id\"\n >\n {{ toast.title | truncate: toast.config.titleMaxLength }}\n </div>\n }\n @if (toast.body) {\n <div class=\"notifire-toast__body\">\n {{ toast.body | truncate: toast.config.bodyMaxLength }}\n </div>\n }\n @if (toast.config.type === state.promptType) {\n <ngx-snotify-prompt [toast]=\"toast\"></ngx-snotify-prompt>\n }\n @if (!toast.config.icon) {\n <div\n [ngClass]=\"['snotifire-icon', toast.config.iconClass || 'snotifire-icon--' + toast.config.type]\"\n ></div>\n } @else {\n <img\n class=\"snotifire-icon\"\n [src]=\"toast.config.icon\"\n >\n }\n </div>\n } @else {\n <div\n class=\"notifire-toast__inner\"\n [innerHTML]=\"toast.config.html\"\n ></div>\n }\n @if (toast.config.buttons) {\n <notifire-button [toast]=\"toast\"></notifire-button>\n }\n </div>\n}\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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 }); }
804
804
  }
805
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ToastComponent, decorators: [{
805
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ToastComponent, decorators: [{
806
806
  type: Component,
807
807
  args: [{ selector: 'ngx-toast', encapsulation: ViewEncapsulation.None, standalone: false, template: "@if (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 @if (toast.config.showProgressBar) {\n <div class=\"notifire-toast__progressBar\">\n <span\n class=\"notifire-toast__progressBar__percentage\"\n [ngStyle]=\"{ width: state.progress * 100 + '%' }\"\n ></span>\n </div>\n }\n @if (!toast.config.html) {\n <div class=\"notifire-toast__inner\">\n @if (toast.title) {\n <div\n class=\"notifire-toast__title\"\n [attr.id]=\"'snotify_' + toast.id\"\n >\n {{ toast.title | truncate: toast.config.titleMaxLength }}\n </div>\n }\n @if (toast.body) {\n <div class=\"notifire-toast__body\">\n {{ toast.body | truncate: toast.config.bodyMaxLength }}\n </div>\n }\n @if (toast.config.type === state.promptType) {\n <ngx-snotify-prompt [toast]=\"toast\"></ngx-snotify-prompt>\n }\n @if (!toast.config.icon) {\n <div\n [ngClass]=\"['snotifire-icon', toast.config.iconClass || 'snotifire-icon--' + toast.config.type]\"\n ></div>\n } @else {\n <img\n class=\"snotifire-icon\"\n [src]=\"toast.config.icon\"\n >\n }\n </div>\n } @else {\n <div\n class=\"notifire-toast__inner\"\n [innerHTML]=\"toast.config.html\"\n ></div>\n }\n @if (toast.config.buttons) {\n <notifire-button [toast]=\"toast\"></notifire-button>\n }\n </div>\n}\n" }]
808
808
  }], ctorParameters: () => [{ type: SnotifireService }], propDecorators: { toast: [{
@@ -821,10 +821,10 @@ class KeysPipe {
821
821
  }
822
822
  return Object.keys(value);
823
823
  }
824
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: KeysPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
825
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.17", ngImport: i0, type: KeysPipe, isStandalone: false, name: "keys", pure: false }); }
824
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: KeysPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
825
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.15", ngImport: i0, type: KeysPipe, isStandalone: false, name: "keys", pure: false }); }
826
826
  }
827
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: KeysPipe, decorators: [{
827
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: KeysPipe, decorators: [{
828
828
  type: Pipe,
829
829
  args: [{
830
830
  name: 'keys',
@@ -946,10 +946,10 @@ class NgxSnotifireComponent {
946
946
  this.unsubscribe$.next();
947
947
  this.unsubscribe$.complete();
948
948
  }
949
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: NgxSnotifireComponent, deps: [{ token: SnotifireService }], target: i0.ɵɵFactoryTarget.Component }); }
950
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.17", type: NgxSnotifireComponent, isStandalone: false, selector: "ngx-snotifire", ngImport: i0, template: "@if (backdrop && backdrop >= 0) {\n <div\n class=\"snotifire-backdrop\"\n [style.opacity]=\"backdrop\"\n ></div>\n}\n\n@for (position of notifications | keys; track position) {\n <div class=\"snotify snotify-{{ position }}\">\n @for (notification of getNotificationArray(notifications, position) | slice: blockSizeA:blockSizeB; track notification.id) {\n <ngx-toast\n [toast]=\"notification\"\n (stateChanged)=\"stateChanged($event)\"\n >\n </ngx-toast>\n }\n </div>\n}\n", dependencies: [{ 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 }); }
949
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: NgxSnotifireComponent, deps: [{ token: SnotifireService }], target: i0.ɵɵFactoryTarget.Component }); }
950
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.15", type: NgxSnotifireComponent, isStandalone: false, selector: "ngx-snotifire", ngImport: i0, template: "@if (backdrop && backdrop >= 0) {\n <div\n class=\"snotifire-backdrop\"\n [style.opacity]=\"backdrop\"\n ></div>\n}\n\n@for (position of notifications | keys; track position) {\n <div class=\"snotify snotify-{{ position }}\">\n @for (notification of getNotificationArray(notifications, position) | slice: blockSizeA:blockSizeB; track notification.id) {\n <ngx-toast\n [toast]=\"notification\"\n (stateChanged)=\"stateChanged($event)\"\n >\n </ngx-toast>\n }\n </div>\n}\n", dependencies: [{ 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 }); }
951
951
  }
952
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: NgxSnotifireComponent, decorators: [{
952
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: NgxSnotifireComponent, decorators: [{
953
953
  type: Component,
954
954
  args: [{ selector: 'ngx-snotifire', encapsulation: ViewEncapsulation.None, standalone: false, template: "@if (backdrop && backdrop >= 0) {\n <div\n class=\"snotifire-backdrop\"\n [style.opacity]=\"backdrop\"\n ></div>\n}\n\n@for (position of notifications | keys; track position) {\n <div class=\"snotify snotify-{{ position }}\">\n @for (notification of getNotificationArray(notifications, position) | slice: blockSizeA:blockSizeB; track notification.id) {\n <ngx-toast\n [toast]=\"notification\"\n (stateChanged)=\"stateChanged($event)\"\n >\n </ngx-toast>\n }\n </div>\n}\n" }]
955
955
  }], ctorParameters: () => [{ type: SnotifireService }] });
@@ -961,16 +961,16 @@ class NgxSnotifireModule {
961
961
  providers: [SnotifireService],
962
962
  };
963
963
  }
964
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: NgxSnotifireModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
965
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.17", ngImport: i0, type: NgxSnotifireModule, declarations: [PromptComponent,
964
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: NgxSnotifireModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
965
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.15", ngImport: i0, type: NgxSnotifireModule, declarations: [PromptComponent,
966
966
  ToastComponent,
967
967
  ButtonsComponent,
968
968
  TruncatePipe,
969
969
  KeysPipe,
970
970
  NgxSnotifireComponent], imports: [CommonModule], exports: [NgxSnotifireComponent] }); }
971
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: NgxSnotifireModule, imports: [CommonModule] }); }
971
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: NgxSnotifireModule, imports: [CommonModule] }); }
972
972
  }
973
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: NgxSnotifireModule, decorators: [{
973
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: NgxSnotifireModule, decorators: [{
974
974
  type: NgModule,
975
975
  args: [{
976
976
  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 ): SnotifireToastModel;\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 ): SnotifireToastModel;\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 ): SnotifireToastModel;\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 ): 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 async(args: any): SnotifireToastModel {\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 async\n .subscribe({\n next: (next) => this.mergeToast(toast, next),\n error: (error) => {\n failed = true;\n // As long as error is defined, and not an error object assume it is a new toast config\n if (error && typeof error === 'object' && !(error instanceof Error)) {\n this.mergeToast(toast, error);\n }\n },\n })\n .add(() => {\n this.mergeToast(\n toast,\n {},\n failed === true ? SnotifireType.ERROR : SnotifireType.SUCCESS\n );\n });\n return toast;\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 standalone: false\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 @if (toast.config) {\n @for (button of toast.config.buttons; track button.text) {\n <button\n type=\"button\"\n [ngClass]=\"{ 'notifire-toast__buttons--bold': button.bold }\"\n (click)=\"button.action ? button.action(toast) : remove()\"\n >\n {{ button.text }}\n </button>\n }\n }\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'truncate',\n standalone: false\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 standalone: false\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 @if (toast.config && toast.config.placeholder) {\n <span class=\"notifire-toast__input__labelContent\">\n {{ toast.config.placeholder | truncate }}\n </span>\n }\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 standalone: false\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","@if (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 @if (toast.config.showProgressBar) {\n <div class=\"notifire-toast__progressBar\">\n <span\n class=\"notifire-toast__progressBar__percentage\"\n [ngStyle]=\"{ width: state.progress * 100 + '%' }\"\n ></span>\n </div>\n }\n @if (!toast.config.html) {\n <div class=\"notifire-toast__inner\">\n @if (toast.title) {\n <div\n class=\"notifire-toast__title\"\n [attr.id]=\"'snotify_' + toast.id\"\n >\n {{ toast.title | truncate: toast.config.titleMaxLength }}\n </div>\n }\n @if (toast.body) {\n <div class=\"notifire-toast__body\">\n {{ toast.body | truncate: toast.config.bodyMaxLength }}\n </div>\n }\n @if (toast.config.type === state.promptType) {\n <ngx-snotify-prompt [toast]=\"toast\"></ngx-snotify-prompt>\n }\n @if (!toast.config.icon) {\n <div\n [ngClass]=\"['snotifire-icon', toast.config.iconClass || 'snotifire-icon--' + toast.config.type]\"\n ></div>\n } @else {\n <img\n class=\"snotifire-icon\"\n [src]=\"toast.config.icon\"\n >\n }\n </div>\n } @else {\n <div\n class=\"notifire-toast__inner\"\n [innerHTML]=\"toast.config.html\"\n ></div>\n }\n @if (toast.config.buttons) {\n <notifire-button [toast]=\"toast\"></notifire-button>\n }\n </div>\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'keys',\n pure: false,\n standalone: 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 standalone: false\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","@if (backdrop && backdrop >= 0) {\n <div\n class=\"snotifire-backdrop\"\n [style.opacity]=\"backdrop\"\n ></div>\n}\n\n@for (position of notifications | keys; track position) {\n <div class=\"snotify snotify-{{ position }}\">\n @for (notification of getNotificationArray(notifications, position) | slice: blockSizeA:blockSizeB; track notification.id) {\n <ngx-toast\n [toast]=\"notification\"\n (stateChanged)=\"stateChanged($event)\"\n >\n </ngx-toast>\n }\n </div>\n}\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","i2.ToastComponent","i3","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 ): SnotifireToastModel;\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 ): SnotifireToastModel;\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 ): SnotifireToastModel;\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 ): 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 async(args: any): SnotifireToastModel {\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 async\n .subscribe({\n next: (next) => this.mergeToast(toast, next),\n error: (error) => {\n failed = true;\n // As long as error is defined, and not an error object assume it is a new toast config\n if (error && typeof error === 'object' && !(error instanceof Error)) {\n this.mergeToast(toast, error);\n }\n },\n })\n .add(() => {\n this.mergeToast(\n toast,\n {},\n failed === true ? SnotifireType.ERROR : SnotifireType.SUCCESS\n );\n });\n return toast;\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 standalone: false\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 @if (toast.config) {\n @for (button of toast.config.buttons; track button.text) {\n <button\n type=\"button\"\n [ngClass]=\"{ 'notifire-toast__buttons--bold': button.bold }\"\n (click)=\"button.action ? button.action(toast) : remove()\"\n >\n {{ button.text }}\n </button>\n }\n }\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'truncate',\n standalone: false\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 standalone: false\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 @if (toast.config && toast.config.placeholder) {\n <span class=\"notifire-toast__input__labelContent\">\n {{ toast.config.placeholder | truncate }}\n </span>\n }\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 standalone: false\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","@if (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 @if (toast.config.showProgressBar) {\n <div class=\"notifire-toast__progressBar\">\n <span\n class=\"notifire-toast__progressBar__percentage\"\n [ngStyle]=\"{ width: state.progress * 100 + '%' }\"\n ></span>\n </div>\n }\n @if (!toast.config.html) {\n <div class=\"notifire-toast__inner\">\n @if (toast.title) {\n <div\n class=\"notifire-toast__title\"\n [attr.id]=\"'snotify_' + toast.id\"\n >\n {{ toast.title | truncate: toast.config.titleMaxLength }}\n </div>\n }\n @if (toast.body) {\n <div class=\"notifire-toast__body\">\n {{ toast.body | truncate: toast.config.bodyMaxLength }}\n </div>\n }\n @if (toast.config.type === state.promptType) {\n <ngx-snotify-prompt [toast]=\"toast\"></ngx-snotify-prompt>\n }\n @if (!toast.config.icon) {\n <div\n [ngClass]=\"['snotifire-icon', toast.config.iconClass || 'snotifire-icon--' + toast.config.type]\"\n ></div>\n } @else {\n <img\n class=\"snotifire-icon\"\n [src]=\"toast.config.icon\"\n >\n }\n </div>\n } @else {\n <div\n class=\"notifire-toast__inner\"\n [innerHTML]=\"toast.config.html\"\n ></div>\n }\n @if (toast.config.buttons) {\n <notifire-button [toast]=\"toast\"></notifire-button>\n }\n </div>\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'keys',\n pure: false,\n standalone: 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 standalone: false\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","@if (backdrop && backdrop >= 0) {\n <div\n class=\"snotifire-backdrop\"\n [style.opacity]=\"backdrop\"\n ></div>\n}\n\n@for (position of notifications | keys; track position) {\n <div class=\"snotify snotify-{{ position }}\">\n @for (notification of getNotificationArray(notifications, position) | slice: blockSizeA:blockSizeB; track notification.id) {\n <ngx-toast\n [toast]=\"notification\"\n (stateChanged)=\"stateChanged($event)\"\n >\n </ngx-toast>\n }\n </div>\n}\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","i2.ToastComponent","i3","i4.KeysPipe"],"mappings":"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"}