ngx-snotifire 19.0.0 → 19.1.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.
|
@@ -3,7 +3,7 @@ import { CommonModule } from '@angular/common';
|
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
4
|
import { Inject, Injectable, Input, ViewEncapsulation, ChangeDetectionStrategy, Component, Pipe, EventEmitter, Output, NgModule } from '@angular/core';
|
|
5
5
|
import { __decorate } from 'tslib';
|
|
6
|
-
import { Subject, from,
|
|
6
|
+
import { Subject, from, takeUntil } from 'rxjs';
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* Defines toast style depending on method name
|
|
@@ -438,19 +438,21 @@ class SnotifireService {
|
|
|
438
438
|
}
|
|
439
439
|
const toast = this.create(args);
|
|
440
440
|
let failed = false;
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
441
|
+
async
|
|
442
|
+
.subscribe({
|
|
443
|
+
next: (next) => this.mergeToast(toast, next),
|
|
444
|
+
error: (error) => {
|
|
445
|
+
failed = true;
|
|
446
|
+
// As long as error is defined, and not an error object assume it is a new toast config
|
|
447
|
+
if (error && typeof error === 'object' && !(error instanceof Error)) {
|
|
448
|
+
this.mergeToast(toast, error);
|
|
449
|
+
}
|
|
450
|
+
},
|
|
451
|
+
})
|
|
452
|
+
.add(() => {
|
|
447
453
|
this.mergeToast(toast, {}, failed === true ? SnotifireType.ERROR : SnotifireType.SUCCESS);
|
|
448
|
-
}));
|
|
449
|
-
toast.on(SnotifireEventType.MOUNTED, () => {
|
|
450
|
-
console.log('mounted');
|
|
451
|
-
return asyncAtion;
|
|
452
454
|
});
|
|
453
|
-
return
|
|
455
|
+
return toast;
|
|
454
456
|
// const toast = this.create(args);
|
|
455
457
|
// toast.on(SnotifireEventType.MOUNTED, () => {
|
|
456
458
|
// const subscription: Subscription = async.subscribe({
|
|
@@ -577,11 +579,11 @@ class ButtonsComponent {
|
|
|
577
579
|
this.service.remove(this.toast.id);
|
|
578
580
|
}
|
|
579
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 }); }
|
|
580
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
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
583
|
}
|
|
582
584
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ButtonsComponent, decorators: [{
|
|
583
585
|
type: Component,
|
|
584
|
-
args: [{ selector: 'notifire-button', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: false, template: "<div class=\"notifire-toast__buttons\">\n
|
|
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" }]
|
|
585
587
|
}], ctorParameters: () => [{ type: SnotifireService }], propDecorators: { toast: [{
|
|
586
588
|
type: Input
|
|
587
589
|
}] } });
|
|
@@ -624,11 +626,11 @@ class PromptComponent {
|
|
|
624
626
|
return $event.target.value;
|
|
625
627
|
}
|
|
626
628
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: PromptComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
627
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
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
630
|
}
|
|
629
631
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: PromptComponent, decorators: [{
|
|
630
632
|
type: Component,
|
|
631
|
-
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
|
|
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" }]
|
|
632
634
|
}], propDecorators: { toast: [{
|
|
633
635
|
type: Input
|
|
634
636
|
}] } });
|
|
@@ -798,11 +800,11 @@ class ToastComponent {
|
|
|
798
800
|
this.unsubscribe$.complete();
|
|
799
801
|
}
|
|
800
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 }); }
|
|
801
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
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
804
|
}
|
|
803
805
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ToastComponent, decorators: [{
|
|
804
806
|
type: Component,
|
|
805
|
-
args: [{ selector: 'ngx-toast', encapsulation: ViewEncapsulation.None, standalone: false, template: "
|
|
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" }]
|
|
806
808
|
}], ctorParameters: () => [{ type: SnotifireService }], propDecorators: { toast: [{
|
|
807
809
|
type: Input
|
|
808
810
|
}], stateChanged: [{
|
|
@@ -945,11 +947,11 @@ class NgxSnotifireComponent {
|
|
|
945
947
|
this.unsubscribe$.complete();
|
|
946
948
|
}
|
|
947
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 }); }
|
|
948
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
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
951
|
}
|
|
950
952
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: NgxSnotifireComponent, decorators: [{
|
|
951
953
|
type: Component,
|
|
952
|
-
args: [{ selector: 'ngx-snotifire', encapsulation: ViewEncapsulation.None, standalone: false, template: "<div\n
|
|
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" }]
|
|
953
955
|
}], ctorParameters: () => [{ type: SnotifireService }] });
|
|
954
956
|
|
|
955
957
|
class NgxSnotifireModule {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-snotifire.mjs","sources":["../../../projects/ngx-snotifire/src/lib/decorators/set-toast-type.decorator.ts","../../../projects/ngx-snotifire/src/lib/models/snotifire-event.type.ts","../../../projects/ngx-snotifire/src/lib/models/snotifire-position.type.ts","../../../projects/ngx-snotifire/src/lib/models/snotifire.type.ts","../../../projects/ngx-snotifire/src/lib/models/snotifire.model.ts","../../../projects/ngx-snotifire/src/lib/decorators/transform-argument.decorator.ts","../../../projects/ngx-snotifire/src/lib/components/toast/notifire-toast.model.ts","../../../projects/ngx-snotifire/src/lib/utils.ts","../../../projects/ngx-snotifire/src/lib/services/notification.service.ts","../../../projects/ngx-snotifire/src/lib/components/buttons/buttons.component.ts","../../../projects/ngx-snotifire/src/lib/components/buttons/buttons.component.html","../../../projects/ngx-snotifire/src/lib/pipes/truncate.pipe.ts","../../../projects/ngx-snotifire/src/lib/components/prompt/prompt.component.ts","../../../projects/ngx-snotifire/src/lib/components/prompt/prompt.component.html","../../../projects/ngx-snotifire/src/lib/components/toast/toast.component.ts","../../../projects/ngx-snotifire/src/lib/components/toast/toast.component.html","../../../projects/ngx-snotifire/src/lib/pipes/keys.pipe.ts","../../../projects/ngx-snotifire/src/lib/components/ngx-notifire/ngx-snotifire.component.ts","../../../projects/ngx-snotifire/src/lib/components/ngx-notifire/ngx-snotifire.component.html","../../../projects/ngx-snotifire/src/lib/ngx-snotifire.module.ts","../../../projects/ngx-snotifire/src/lib/defaults/toast-defaults.ts","../../../projects/ngx-snotifire/src/public-api.ts","../../../projects/ngx-snotifire/src/ngx-snotifire.ts"],"sourcesContent":["import { SnotifireModel, SnotifireType } from '../models';\n\n/**\n * Defines toast style depending on method name\n * @param target any\n * @param propertyKey NotificationType\n * @param descriptor PropertyDescriptor\n * @returns value: ((...args: any[]) => any)\n */\nexport function SetToastType(\n target: any,\n propertyKey: string,\n descriptor: PropertyDescriptor\n) {\n return {\n value(...args: any[]) {\n (args[0] as SnotifireModel).config = {\n ...(args[0] as SnotifireModel).config,\n type: propertyKey as SnotifireType,\n };\n return descriptor.value.apply(this, args);\n },\n };\n}\n","export enum SnotifireEventType {\n MOUNTED = 'mounted',\n BEFORE_SHOW = 'beforeShow',\n SHOWN = 'shown',\n INPUT = 'input',\n CLICK = 'click',\n MOUSE_ENTER = 'mouseenter',\n MOUSE_LEAVE = 'mouseleave',\n BEFORE_HIDE = 'beforeHide',\n HIDDEN = 'hidden',\n DESTROYED = 'destroyed',\n}\n","export enum SnotificationPositionType {\n LEFT_TOP = 'leftTop',\n LEFT_CENTER = 'leftCenter',\n LEFT_BOTTOM = 'leftBottom',\n RIGHT_TOP = 'rightTop',\n RIGHT_CENTER = 'rightCenter',\n RIGHT_BOTTOM = 'rightBottom',\n CENTER_TOP = 'centerTop',\n CENTER_CENTER = 'centerCenter',\n CENTER_BOTTOM = 'centerBottom',\n}\n","export enum SnotifireType {\n SUCCESS = 'success',\n INFO = 'info',\n WARNING = 'warning',\n ERROR = 'error',\n ASYNC = 'async',\n CONFIRM = 'confirm',\n PROMPT = 'prompt',\n}\n","import { SafeHtml } from '@angular/platform-browser';\nimport { SnotifireConfig } from './snotifire-config.interface';\nimport { SnotifireType } from './snotifire.type';\n\nexport class SnotifireModel {\n constructor(\n public type?: SnotifireType,\n /**\n * Notification Title\n */\n public title?: string,\n /**\n * Notification message\n */\n public body?: string,\n /**\n * Config object\n */\n public config?: SnotifireConfig,\n /**\n * Html content\n */\n public html?: string | SafeHtml\n ) {}\n}\n","import { SnotifireConfig, SnotifireModel, SnotifireType } from '../models';\n\n//todo: cp check if async\n/**\n * Transform arguments to Snotify object\n * @param target any\n * @param propertyKey SnotifyTypeType\n * @param descriptor PropertyDescriptor\n * @returns Snotify\n */\nexport function TransformArgument(\n target: any,\n propertyKey: string,\n descriptor: PropertyDescriptor\n) {\n if (propertyKey === SnotifireType.ASYNC) {\n return {\n value(...args: any[]) {\n let result;\n if (args.length === 2) {\n result = {\n title: null,\n body: args[0],\n config: null,\n action: args[1],\n };\n } else if (args.length === 3) {\n if (typeof args[1] === 'string') {\n result = {\n title: args[1],\n body: args[0],\n config: null,\n action: args[2],\n };\n } else {\n result = {\n title: null,\n body: args[0],\n config: args[2],\n action: args[1],\n };\n }\n } else {\n result = {\n title: args[1],\n body: args[0],\n config: args[3],\n action: args[2],\n };\n }\n return descriptor.value.apply(this, [\n result as unknown as Notification,\n ]);\n },\n };\n } else {\n return {\n value(...args: any[]) {\n let result;\n if (args.length === 1) {\n result = {\n title: null,\n body: args[0],\n config: null,\n };\n } else if (args.length === 3) {\n result = {\n title: args[1],\n body: args[0],\n config: args[2],\n };\n } else {\n result = {\n title: null,\n config: null,\n body: args[0],\n [typeof args[1] === 'string' ? 'title' : 'config']: args[1],\n };\n }\n return descriptor.value.apply(this, [\n result as unknown as Notification,\n ]);\n },\n };\n }\n}\n","import { Subject, Subscription } from 'rxjs';\nimport { SnotifireConfig } from '../../models/snotifire-config.interface';\nimport { SnotifireEventType } from '../../models/snotifire-event.type';\nimport { SnotifireType } from '../../models/snotifire.type';\n\n/**\n * Toast main model\n */\nexport class SnotifireToastModel {\n /**\n * Emits NotifireEventType\n */\n readonly eventEmitter = new Subject<SnotifireEventType>();\n\n /**\n * Holds all subscribers because we need to unsubscribe from all before toast get destroyed\n */\n private eventsHolder: Subscription[] = [];\n\n /**\n * Toast prompt value\n */\n value?: string;\n\n /**\n * Toast validator\n */\n valid: boolean = true;\n\n constructor(\n public readonly id: number,\n public readonly title: string,\n public readonly body: string,\n public readonly config: SnotifireConfig\n ) {\n if (this.config && this.config.type === SnotifireType.PROMPT) {\n this.value = '';\n }\n this.on(SnotifireEventType.HIDDEN, () => {\n this.eventsHolder.forEach((subscription: Subscription) => {\n subscription.unsubscribe();\n });\n });\n }\n /**\n * Subscribe to toast events\n * @returns this\n * @param event NotificationEventType\n * @param action (toast: this) => void\n */\n on(event: SnotifireEventType, action: (toast: this) => void): this {\n this.eventsHolder.push(\n this.eventEmitter.subscribe((e: SnotifireEventType) => {\n if (e === event) {\n action(this);\n }\n })\n );\n return this;\n }\n\n /**\n * Tests if a toast equals this toast.\n * @returns boolean true then equals else false.\n * @param toast notifire-toast\n */\n equals(toast: SnotifireToastModel): boolean {\n return this.config && toast.config\n ? this.body === toast.body &&\n this.title === toast.title &&\n this.config.type === toast.config.type\n : this.body === toast.body && this.title === toast.title;\n }\n}\n","/**\n * Deep merge objects.\n * @param sources Array<Object<any>>\n * @returns Object<any>\n */\nexport function mergeDeep(...sources: any[]) {\n const target: any = {};\n if (!sources.length) {\n return target;\n }\n\n while (sources.length > 0) {\n const source = sources.shift();\n if (isObject(source)) {\n for (const key in source) {\n if (isObject(source[key])) {\n target[key] = mergeDeep(target[key], source[key]);\n } else {\n Object.assign(target, { [key]: source[key] });\n }\n }\n }\n }\n return target;\n}\n/**\n * Generates random id\n * @return number\n */\nexport function uuid(): number {\n return Math.floor(Math.random() * (Date.now() - 1)) + 1;\n}\n/**\n * Simple is object check.\n * @param item Object<any>\n * @returns boolean\n */\nexport function isObject(item: any): boolean {\n return item && typeof item === 'object' && !Array.isArray(item);\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { SafeHtml } from '@angular/platform-browser';\nimport {\n catchError,\n finalize,\n from,\n Observable,\n of,\n Subject,\n tap,\n throwError,\n} from 'rxjs';\nimport { SetToastType } from '../decorators/set-toast-type.decorator';\nimport { TransformArgument } from '../decorators/transform-argument.decorator';\nimport { SnotifireConfig, SnotifireEventType, SnotifireType } from '../models';\nimport { SnotifireDefaults } from '../defaults/defaults.interface';\nimport { SnotifireModel } from '../models/snotifire.model';\nimport { SnotifireToastModel } from '../components/toast/notifire-toast.model';\nimport { mergeDeep, uuid } from '../utils';\n\n@Injectable()\nexport class SnotifireService {\n /**\n * Minimum display time of the notification message\n */\n private readonly minimumDisplayedTime = 3000;\n\n /**\n * Emits Notifire Notifications\n */\n readonly emitter = new Subject<SnotifireToastModel[]>();\n\n readonly toastDeleted = new Subject<number>();\n readonly toastChanged = new Subject<SnotifireToastModel>();\n\n notifications: Array<SnotifireToastModel> = [];\n\n constructor(\n @Inject('snotifireConfig') public defaultConfig: SnotifireDefaults\n ) {}\n\n /**\n * Creates toast and add it to array, returns toast id\n * @param NotificationModel NotificationModel\n * @return number\n */\n create(notif: SnotifireModel): SnotifireToastModel {\n if (this.defaultConfig.type && notif.config && notif.config.type) {\n const config = mergeDeep(\n this.defaultConfig.snotifireConfig,\n this.defaultConfig.type[notif.config.type],\n notif.config\n );\n const toast = new SnotifireToastModel(\n uuid(),\n notif.title ? notif.title : '',\n notif.body ? notif.body : '',\n config\n );\n this.add(toast);\n return toast;\n }\n const config = mergeDeep(this.defaultConfig.snotifireConfig, notif.config);\n const defaulToast = new SnotifireToastModel(\n uuid(),\n notif.title ? notif.title : '',\n notif.body ? notif.body : '',\n config\n );\n this.add(defaulToast);\n return defaulToast;\n }\n /**\n * If ID passed, emits toast animation remove, if ID & REMOVE passed, removes toast from notifications array\n * @param id number\n * @param remove boolean\n */\n remove(id: number, remove?: boolean): void {\n if (!id) {\n return this.clear();\n }\n if (remove) {\n this.notifications = this.notifications.filter(\n (toast) => toast.id !== id\n );\n return this.emit();\n }\n this.toastDeleted.next(id);\n }\n\n setDefaults(defaults: SnotifireDefaults): SnotifireDefaults {\n const mergedConfig = (this.defaultConfig = mergeDeep(\n this.defaultConfig,\n defaults\n ) as SnotifireDefaults);\n return mergedConfig;\n }\n\n /**\n * Clear notifications array\n */\n clear(): void {\n this.notifications = [];\n this.emit();\n }\n\n /**\n * add NotifireToast to notifications array\n * @param toast NotifireToast\n */\n private add(toast: SnotifireToastModel): void {\n if (\n this.defaultConfig &&\n this.defaultConfig.global &&\n this.defaultConfig.global.filterDuplicates &&\n this.containsToast(toast)\n ) {\n if (!this.defaultConfig.global.filterDuplicates) {\n throw new Error('Missing global config');\n }\n return;\n }\n if (\n this.defaultConfig &&\n this.defaultConfig.global &&\n this.defaultConfig.global.newOnTop\n ) {\n this.notifications.unshift(toast);\n } else {\n this.notifications.push(toast);\n }\n this.emit();\n }\n\n /**\n * emit changes in notifications array\n */\n private emit(): void {\n this.emitter.next(this.notifications.slice());\n }\n\n /**\n * checks if the toast is in the collection.\n * @param inToast NotifireToast\n * @returns boolean\n */\n private containsToast(inToast: SnotifireToastModel): boolean {\n return this.notifications.some((toast) => toast.equals(inToast));\n }\n\n /**\n * Creates empty toast with html string inside\n * @param html string | SafeHtml\n * @param config NotifireConfig\n * @returns number\n */\n html(html: string | SafeHtml, config?: SnotifireConfig): SnotifireToastModel {\n return this.create({\n title: undefined,\n body: undefined,\n config: {\n ...config,\n ...{ html },\n },\n });\n }\n /**\n * Create toast with success style returns toast id;\n * @param body string\n * @returns number\n */\n success(body: string): SnotifireToastModel;\n /**\n * Create toast with success style returns toast id;\n * @param body string\n * @param title string\n * @returns number\n */\n success(body: string, title: string): SnotifireToastModel;\n /**\n * Create toast with success style returns toast id;\n * @param body string\n * @param config NotificationConfig\n * @returns number\n */\n success(body: string, config: SnotifireConfig): SnotifireToastModel;\n /**\n * Create toast with success style returns toast id;\n * @param [body] string\n * @param [title] string\n * @param [config] NotificationConfig\n * @returns number\n */\n success(\n body: string,\n title: string,\n config: SnotifireConfig\n ): SnotifireToastModel;\n\n /**\n * Transform toast arguments into NotificationModel object\n */\n @TransformArgument\n /**\n * Determines current toast type and collects default configuration\n */\n @SetToastType\n success(args: any): SnotifireToastModel {\n if (!args.config) {\n throw new Error('Missing config, please configure service accordingly');\n }\n return this.create(args);\n }\n\n /**\n * Create toast with error style returns toast id;\n * @param body string\n * @returns number\n */\n error(body: string): SnotifireToastModel;\n /**\n * Create toast with error style returns toast id;\n * @param body string\n * @param title string\n * @returns number\n */\n error(body: string, title: string): SnotifireToastModel;\n /**\n * Create toast with error style returns toast id;\n * @param body string\n * @param config NotificationConfig\n * @returns number\n */\n error(body: string, config: SnotifireConfig): SnotifireToastModel;\n /**\n * Create toast with error style returns toast id;\n * @param [body] string\n * @param [title] string\n * @param [config] NotificationConfig\n * @returns number\n */\n error(\n body: string,\n title: string,\n config: SnotifireConfig\n ): SnotifireToastModel;\n /**\n * Transform toast arguments into NotificationModel object\n */\n @TransformArgument\n /**\n * Determines current toast type and collects default configuration\n */\n @SetToastType\n error(args: any): SnotifireToastModel {\n return this.create(args);\n }\n\n /**\n * Create toast with info style returns toast id;\n * @param body string\n * @returns number\n */\n info(body: string): SnotifireToastModel;\n /**\n * Create toast with info style returns toast id;\n * @param body string\n * @param title string\n * @returns number\n */\n info(body: string, title: string): SnotifireToastModel;\n /**\n * Create toast with info style returns toast id;\n * @param body string\n * @param config NotificationConfig\n * @returns number\n */\n info(body: string, config: SnotifireConfig): SnotifireToastModel;\n /**\n * Create toast with info style returns toast id;\n * @param [body] string\n * @param [title] string\n * @param [config] NotificationConfig\n * @returns number\n */\n info(\n body: string,\n title: string,\n config: SnotifireConfig\n ): SnotifireToastModel;\n /**\n * Transform toast arguments into NotificationModel object\n */\n @TransformArgument\n /**\n * Determines current toast type and collects default configuration\n */\n @SetToastType\n info(args: any): SnotifireToastModel {\n return this.create(args);\n }\n\n /**\n * Create toast with warning style returns toast id;\n * @param body string\n * @returns number\n */\n warning(body: string): SnotifireToastModel;\n /**\n * Create toast with warning style returns toast id;\n * @param body string\n * @param title string\n * @returns number\n */\n warning(body: string, title: string): SnotifireToastModel;\n /**\n * Create toast with warning style returns toast id;\n * @param body string\n * @param config NotificationConfig\n * @returns number\n */\n warning(body: string, config: SnotifireConfig): SnotifireToastModel;\n /**\n * Create toast with warning style returns toast id;\n * @param [body] string\n * @param [title] string\n * @param [config] NotificationConfig\n * @returns number\n */\n warning(\n body: string,\n title: string,\n config: SnotifireConfig\n ): SnotifireToastModel;\n /**\n * Transform toast arguments into NotificationModel object\n */\n @TransformArgument\n /**\n * Determines current toast type and collects default configuration\n */\n @SetToastType\n warning(args: any): SnotifireToastModel {\n return this.create(args);\n }\n\n /**\n * Create toast with confirm style returns toast id;\n * @param body string\n * @returns number\n */\n confirm(body: string): SnotifireToastModel;\n /**\n * Create toast with confirm style returns toast id;\n * @param body string\n * @param title string\n * @returns number\n */\n confirm(body: string, title: string): SnotifireToastModel;\n /**\n * Create toast with confirm style returns toast id;\n * @param body string\n * @param config NotificationConfig\n * @returns number\n */\n confirm(body: string, config: SnotifireConfig): SnotifireToastModel;\n /**\n * Create toast with confirm style returns toast id;\n * @param [body] string\n * @param [title] string\n * @param [config] NotificationConfig\n * @returns number\n */\n confirm(\n body: string,\n title: string,\n config: SnotifireConfig\n ): SnotifireToastModel;\n /**\n * Transform toast arguments into NotificationModel object\n */\n @TransformArgument\n /**\n * Determines current toast type and collects default configuration\n */\n @SetToastType\n confirm(args: any): SnotifireToastModel {\n return this.create(args);\n }\n\n /**\n * Create toast with Prompt style with two buttons, returns toast id;\n * @param body string\n * @returns number\n */\n prompt(body: string): SnotifireToastModel;\n /**\n * Create toast with Prompt style with two buttons, returns toast id;\n * @param body string\n * @param title string\n * @returns number\n */\n prompt(body: string, title: string): SnotifireToastModel;\n /**\n * Create toast with Prompt style with two buttons, returns toast id;\n * @param body string\n * @param config NotificationConfig\n * @returns number\n */\n prompt(body: string, config: SnotifireConfig): SnotifireToastModel;\n /**\n * Create toast with Prompt style with two buttons, returns toast id;\n * @param [body] string\n * @param [title] string\n * @param [config] NotificationConfig\n * @returns number\n */\n prompt(\n body: string,\n title: string,\n config: SnotifireConfig\n ): SnotifireToastModel;\n /**\n * Transform toast arguments into NotificationModel object\n */\n @TransformArgument\n /**\n * Determines current toast type and collects default configuration\n */\n @SetToastType\n prompt(args: any): SnotifireToastModel {\n return this.create(args);\n }\n\n /**\n * Creates async toast with Info style. Pass action, and resolve or reject it.\n * @param body string\n * @param action Promise<NotificationModel> | Observable<NotificationModel>\n * @returns number\n */\n async(\n body: string,\n action: Promise<SnotifireModel> | Observable<SnotifireModel>\n ): Observable<any>;\n /**\n * Creates async toast with Info style. Pass action, and resolve or reject it.\n * @param body string\n * @param title string\n * @param action Promise<NotificationModel> | Observable<NotificationModel>\n * @returns number\n */\n async(\n body: string,\n title: string,\n action: Promise<SnotifireModel> | Observable<SnotifireModel>\n ): Observable<any>;\n /**\n * Creates async toast with Info style. Pass action, and resolve or reject it.\n * @param body string\n * @param action Promise<NotificationModel> | Observable<NotificationModel>\n * @param [config] NotificationConfig\n * @returns number\n */\n async(\n body: string,\n action: Promise<SnotifireModel> | Observable<SnotifireModel>,\n config: SnotifireConfig\n ): Observable<any>;\n /**\n * Creates async toast with Info style. Pass action, and resolve or reject it.\n * @param body string\n * @param title string\n * @param action Promise<NotificationModel> | Observable<NotificationModel>\n * @param [config] NotificationConfig\n * @returns number\n */\n async(\n body: string,\n title: string,\n action: Promise<SnotifireModel> | Observable<SnotifireModel>,\n config: SnotifireConfig\n ): Observable<any>;\n /**\n * Transform toast arguments into NotificationModel object\n */\n @TransformArgument\n /**\n * Determines current toast type and collects default configuration\n */\n @SetToastType\n async(args: any): Observable<any> {\n let async: Observable<any>;\n if (args.action instanceof Promise) {\n async = from(args.action);\n } else {\n async = args.action;\n }\n\n const toast = this.create(args);\n let failed = false;\n const asyncAtion = async.pipe(\n tap((next) => {\n console.log('called'), this.mergeToast(toast, next);\n }),\n catchError((error) => {\n failed = true;\n return throwError(() => error);\n }),\n finalize(() => {\n this.mergeToast(\n toast,\n {},\n failed === true ? SnotifireType.ERROR : SnotifireType.SUCCESS\n );\n })\n );\n toast.on(SnotifireEventType.MOUNTED, () => {\n console.log('mounted');\n return asyncAtion;\n });\n return asyncAtion;\n\n // const toast = this.create(args);\n\n // toast.on(SnotifireEventType.MOUNTED, () => {\n // const subscription: Subscription = async.subscribe({\n // next: (next?: SnotifireModel) => {\n // this.mergeToast(toast, next);\n // },\n // error: (error?: SnotifireModel) => {\n // this.mergeToast(toast, error, SnotifireType.ERROR);\n // subscription.unsubscribe();\n // },\n // complete: () => {\n // this.mergeToast(toast, {}, SnotifireType.SUCCESS);\n // subscription.unsubscribe();\n // },\n // });\n // });\n\n // return toast;\n }\n\n private mergeToast(toast: any, next: any, type?: SnotifireType) {\n if (next.body) {\n toast.body = next.body;\n }\n if (next.title) {\n toast.title = next.title;\n }\n\n if (type && this.defaultConfig) {\n console.log(type);\n toast.config = mergeDeep(\n toast.config,\n this.defaultConfig.global,\n this.defaultConfig.snotifireConfig?.type,\n { type },\n next.config\n );\n } else {\n toast.config = mergeDeep(toast.config, next.config);\n }\n if (next.html) {\n toast.config.html = next.html;\n }\n this.emit();\n this.toastChanged.next(toast);\n }\n /**\n * returns SnotifyToast object\n * @param id Number\n * @return SnotifyToast|undefined\n */\n get(id: number): SnotifireToastModel | undefined {\n return (\n this.notifications && this.notifications.find((toast) => toast.id === id)\n );\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnInit,\n ViewEncapsulation,\n} from '@angular/core';\nimport { SnotifireToastModel } from '../toast/notifire-toast.model';\nimport { SnotifireService } from '../../services';\n\n@Component({\n selector: 'notifire-button',\n templateUrl: './buttons.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n 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 <ng-container *ngIf=\"toast.config\">\n <button\n type=\"button\"\n *ngFor=\"let button of toast.config.buttons\"\n [ngClass]=\"{ 'notifire-toast__buttons--bold': button.bold }\"\n (click)=\"button.action ? button.action(toast) : remove()\"\n >\n {{ button.text }}\n </button>\n </ng-container>\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'truncate',\n 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 <span\n class=\"notifire-toast__input__labelContent\"\n *ngIf=\"toast.config && toast.config.placeholder \"\n >\n {{ toast.config.placeholder | truncate }}\n </span>\n </label>\n</span>\n","import {\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\nimport { Subject, takeUntil } from 'rxjs';\nimport { SnotifireEventType, SnotifireType } from '../../models';\nimport { SnotifireToastModel } from './notifire-toast.model';\nimport { SnotifireService } from '../../services';\n\n@Component({\n selector: 'ngx-toast',\n templateUrl: './toast.component.html',\n encapsulation: ViewEncapsulation.None,\n 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","<ng-container *ngIf=\"toast && toast.config\">\n <div\n [attr.role]=\"toast.config.type === state.promptType ? 'dialog' : 'alert'\"\n [attr.aria-labelledby]=\"'snotify_' + toast.id\"\n [attr.aria-modal]=\"toast.config.type === state.promptType\"\n [ngClass]=\"[\n 'notifire-toast animated',\n 'snotify-' + toast.config.type,\n state.animation, toast.valid === undefined ? '' : toast.valid ? 'snotifyToast--valid' : 'snotifyToast--invalid'\n]\"\n [ngStyle]=\"{\n '-webkit-transition': toast.config.animation && toast.config.animation.time + 'ms',\n transition: toast.config.animation && toast.config.animation.time + 'ms',\n '-webkit-animation-duration': toast.config.animation && toast.config.animation.time + 'ms',\n 'animation-duration': toast.config.animation && toast.config.animation.time + 'ms'\n}\"\n (animationend)=\"onExitTransitionEnd()\"\n (click)=\"onClick()\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n >\n <div\n class=\"notifire-toast__progressBar\"\n *ngIf=\"toast.config.showProgressBar\"\n >\n <span\n class=\"notifire-toast__progressBar__percentage\"\n [ngStyle]=\"{ width: state.progress * 100 + '%' }\"\n ></span>\n </div>\n <div\n class=\"notifire-toast__inner\"\n *ngIf=\"!toast.config.html; else toastHTML\"\n >\n <div\n class=\"notifire-toast__title\"\n [attr.id]=\"'snotify_' + toast.id\"\n *ngIf=\"toast.title\"\n >\n {{ toast.title | truncate: toast.config.titleMaxLength }}\n </div>\n <div\n class=\"notifire-toast__body\"\n *ngIf=\"toast.body\"\n >\n {{ toast.body | truncate: toast.config.bodyMaxLength }}\n </div>\n <ngx-snotify-prompt\n *ngIf=\"toast.config.type === state.promptType\"\n [toast]=\"toast\"\n >\n </ngx-snotify-prompt>\n <div\n *ngIf=\"!toast.config.icon; else elseBlock\"\n [ngClass]=\"['snotifire-icon', toast.config.iconClass || 'snotifire-icon--' + toast.config.type]\"\n ></div>\n <ng-template #elseBlock>\n <img\n class=\"snotifire-icon\"\n [src]=\"toast.config.icon\"\n >\n </ng-template>\n </div>\n <ng-template #toastHTML>\n <div\n class=\"notifire-toast__inner\"\n [innerHTML]=\"toast.config.html\"\n ></div>\n </ng-template>\n <notifire-button\n *ngIf=\"toast.config.buttons\"\n [toast]=\"toast\"\n ></notifire-button>\n </div>\n</ng-container>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'keys',\n pure: false,\n 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","<div\n class=\"snotifire-backdrop\"\n *ngIf=\"backdrop && backdrop >= 0\"\n [style.opacity]=\"backdrop\"\n></div>\n\n<div\n *ngFor=\"let position of notifications | keys\"\n class=\"snotify snotify-{{ position }}\"\n>\n <ngx-toast\n *ngFor=\"let notification of getNotificationArray(notifications, position) | slice: blockSizeA:blockSizeB\"\n [toast]=\"notification\"\n (stateChanged)=\"stateChanged($event)\"\n >\n </ngx-toast>\n\n</div>\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport {\n ButtonsComponent,\n NgxSnotifireComponent,\n PromptComponent,\n ToastComponent,\n} from './components';\nimport { KeysPipe, TruncatePipe } from './pipes';\nimport { SnotifireService } from './services';\n\n@NgModule({\n declarations: [\n PromptComponent,\n ToastComponent,\n ButtonsComponent,\n TruncatePipe,\n KeysPipe,\n NgxSnotifireComponent,\n ],\n imports: [CommonModule],\n exports: [NgxSnotifireComponent],\n})\nexport class NgxSnotifireModule {\n static forRoot(): ModuleWithProviders<NgxSnotifireModule> {\n return {\n ngModule: NgxSnotifireModule,\n providers: [SnotifireService],\n };\n }\n}\n","import { SnotificationPositionType, SnotifireType } from '../models';\n\n/**\n * Snotify default configuration object\n */\nexport const ToastDefaults = {\n global: {\n newOnTop: true,\n maxOnScreen: 8,\n maxAtPosition: 8,\n filterDuplicates: false,\n },\n snotifireConfig: {\n type: SnotifireType.INFO,\n showProgressBar: true,\n timeout: 5000,\n closeOnClick: true,\n pauseOnHover: true,\n bodyMaxLength: 150,\n titleMaxLength: 16,\n backdrop: -1,\n icon: undefined,\n iconClass: undefined,\n html: undefined,\n position: 'RIGHT_TOP' as SnotificationPositionType,\n animation: { enter: 'fadeIn', exit: 'fadeOut', time: 400 },\n },\n type: {\n [SnotifireType.PROMPT]: {\n timeout: 0,\n closeOnClick: false,\n buttons: [\n { text: 'Ok', action: null, bold: true },\n { text: 'Cancel', action: null, bold: false },\n ],\n placeholder: 'Enter answer here...',\n type: SnotifireType.PROMPT,\n },\n [SnotifireType.CONFIRM]: {\n timeout: 0,\n closeOnClick: false,\n buttons: [\n { text: 'Ok', action: null, bold: true },\n { text: 'Cancel', action: null, bold: false },\n ],\n type: SnotifireType.CONFIRM,\n },\n [SnotifireType.SUCCESS]: {\n type: SnotifireType.SUCCESS,\n },\n [SnotifireType.ERROR]: {\n type: SnotifireType.ERROR,\n },\n [SnotifireType.WARNING]: {\n type: SnotifireType.WARNING,\n },\n [SnotifireType.INFO]: {\n type: SnotifireType.INFO,\n },\n [SnotifireType.ASYNC]: {\n pauseOnHover: false,\n closeOnClick: false,\n timeout: 0,\n showProgressBar: false,\n type: SnotifireType.ASYNC,\n },\n },\n};\n","/*\n * Public API Surface of ngx-notifire\n */\n\nexport * from './lib/ngx-snotifire.module';\nexport * from './lib/components';\n\nexport * from './lib/models';\nexport * from './lib/pipes';\nexport * from './lib/services';\nexport * from './lib/defaults';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.SnotifireService","i1","i2.TruncatePipe","i3.PromptComponent","i4.ButtonsComponent","i5.TruncatePipe","i3.ToastComponent","i4.KeysPipe"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngx-snotifire.mjs","sources":["../../../projects/ngx-snotifire/src/lib/decorators/set-toast-type.decorator.ts","../../../projects/ngx-snotifire/src/lib/models/snotifire-event.type.ts","../../../projects/ngx-snotifire/src/lib/models/snotifire-position.type.ts","../../../projects/ngx-snotifire/src/lib/models/snotifire.type.ts","../../../projects/ngx-snotifire/src/lib/models/snotifire.model.ts","../../../projects/ngx-snotifire/src/lib/decorators/transform-argument.decorator.ts","../../../projects/ngx-snotifire/src/lib/components/toast/notifire-toast.model.ts","../../../projects/ngx-snotifire/src/lib/utils.ts","../../../projects/ngx-snotifire/src/lib/services/notification.service.ts","../../../projects/ngx-snotifire/src/lib/components/buttons/buttons.component.ts","../../../projects/ngx-snotifire/src/lib/components/buttons/buttons.component.html","../../../projects/ngx-snotifire/src/lib/pipes/truncate.pipe.ts","../../../projects/ngx-snotifire/src/lib/components/prompt/prompt.component.ts","../../../projects/ngx-snotifire/src/lib/components/prompt/prompt.component.html","../../../projects/ngx-snotifire/src/lib/components/toast/toast.component.ts","../../../projects/ngx-snotifire/src/lib/components/toast/toast.component.html","../../../projects/ngx-snotifire/src/lib/pipes/keys.pipe.ts","../../../projects/ngx-snotifire/src/lib/components/ngx-notifire/ngx-snotifire.component.ts","../../../projects/ngx-snotifire/src/lib/components/ngx-notifire/ngx-snotifire.component.html","../../../projects/ngx-snotifire/src/lib/ngx-snotifire.module.ts","../../../projects/ngx-snotifire/src/lib/defaults/toast-defaults.ts","../../../projects/ngx-snotifire/src/public-api.ts","../../../projects/ngx-snotifire/src/ngx-snotifire.ts"],"sourcesContent":["import { SnotifireModel, SnotifireType } from '../models';\n\n/**\n * Defines toast style depending on method name\n * @param target any\n * @param propertyKey NotificationType\n * @param descriptor PropertyDescriptor\n * @returns value: ((...args: any[]) => any)\n */\nexport function SetToastType(\n target: any,\n propertyKey: string,\n descriptor: PropertyDescriptor\n) {\n return {\n value(...args: any[]) {\n (args[0] as SnotifireModel).config = {\n ...(args[0] as SnotifireModel).config,\n type: propertyKey as SnotifireType,\n };\n return descriptor.value.apply(this, args);\n },\n };\n}\n","export enum SnotifireEventType {\n MOUNTED = 'mounted',\n BEFORE_SHOW = 'beforeShow',\n SHOWN = 'shown',\n INPUT = 'input',\n CLICK = 'click',\n MOUSE_ENTER = 'mouseenter',\n MOUSE_LEAVE = 'mouseleave',\n BEFORE_HIDE = 'beforeHide',\n HIDDEN = 'hidden',\n DESTROYED = 'destroyed',\n}\n","export enum SnotificationPositionType {\n LEFT_TOP = 'leftTop',\n LEFT_CENTER = 'leftCenter',\n LEFT_BOTTOM = 'leftBottom',\n RIGHT_TOP = 'rightTop',\n RIGHT_CENTER = 'rightCenter',\n RIGHT_BOTTOM = 'rightBottom',\n CENTER_TOP = 'centerTop',\n CENTER_CENTER = 'centerCenter',\n CENTER_BOTTOM = 'centerBottom',\n}\n","export enum SnotifireType {\n SUCCESS = 'success',\n INFO = 'info',\n WARNING = 'warning',\n ERROR = 'error',\n ASYNC = 'async',\n CONFIRM = 'confirm',\n PROMPT = 'prompt',\n}\n","import { SafeHtml } from '@angular/platform-browser';\nimport { SnotifireConfig } from './snotifire-config.interface';\nimport { SnotifireType } from './snotifire.type';\n\nexport class SnotifireModel {\n constructor(\n public type?: SnotifireType,\n /**\n * Notification Title\n */\n public title?: string,\n /**\n * Notification message\n */\n public body?: string,\n /**\n * Config object\n */\n public config?: SnotifireConfig,\n /**\n * Html content\n */\n public html?: string | SafeHtml\n ) {}\n}\n","import { SnotifireConfig, SnotifireModel, SnotifireType } from '../models';\n\n//todo: cp check if async\n/**\n * Transform arguments to Snotify object\n * @param target any\n * @param propertyKey SnotifyTypeType\n * @param descriptor PropertyDescriptor\n * @returns Snotify\n */\nexport function TransformArgument(\n target: any,\n propertyKey: string,\n descriptor: PropertyDescriptor\n) {\n if (propertyKey === SnotifireType.ASYNC) {\n return {\n value(...args: any[]) {\n let result;\n if (args.length === 2) {\n result = {\n title: null,\n body: args[0],\n config: null,\n action: args[1],\n };\n } else if (args.length === 3) {\n if (typeof args[1] === 'string') {\n result = {\n title: args[1],\n body: args[0],\n config: null,\n action: args[2],\n };\n } else {\n result = {\n title: null,\n body: args[0],\n config: args[2],\n action: args[1],\n };\n }\n } else {\n result = {\n title: args[1],\n body: args[0],\n config: args[3],\n action: args[2],\n };\n }\n return descriptor.value.apply(this, [\n result as unknown as Notification,\n ]);\n },\n };\n } else {\n return {\n value(...args: any[]) {\n let result;\n if (args.length === 1) {\n result = {\n title: null,\n body: args[0],\n config: null,\n };\n } else if (args.length === 3) {\n result = {\n title: args[1],\n body: args[0],\n config: args[2],\n };\n } else {\n result = {\n title: null,\n config: null,\n body: args[0],\n [typeof args[1] === 'string' ? 'title' : 'config']: args[1],\n };\n }\n return descriptor.value.apply(this, [\n result as unknown as Notification,\n ]);\n },\n };\n }\n}\n","import { Subject, Subscription } from 'rxjs';\nimport { SnotifireConfig } from '../../models/snotifire-config.interface';\nimport { SnotifireEventType } from '../../models/snotifire-event.type';\nimport { SnotifireType } from '../../models/snotifire.type';\n\n/**\n * Toast main model\n */\nexport class SnotifireToastModel {\n /**\n * Emits NotifireEventType\n */\n readonly eventEmitter = new Subject<SnotifireEventType>();\n\n /**\n * Holds all subscribers because we need to unsubscribe from all before toast get destroyed\n */\n private eventsHolder: Subscription[] = [];\n\n /**\n * Toast prompt value\n */\n value?: string;\n\n /**\n * Toast validator\n */\n valid: boolean = true;\n\n constructor(\n public readonly id: number,\n public readonly title: string,\n public readonly body: string,\n public readonly config: SnotifireConfig\n ) {\n if (this.config && this.config.type === SnotifireType.PROMPT) {\n this.value = '';\n }\n this.on(SnotifireEventType.HIDDEN, () => {\n this.eventsHolder.forEach((subscription: Subscription) => {\n subscription.unsubscribe();\n });\n });\n }\n /**\n * Subscribe to toast events\n * @returns this\n * @param event NotificationEventType\n * @param action (toast: this) => void\n */\n on(event: SnotifireEventType, action: (toast: this) => void): this {\n this.eventsHolder.push(\n this.eventEmitter.subscribe((e: SnotifireEventType) => {\n if (e === event) {\n action(this);\n }\n })\n );\n return this;\n }\n\n /**\n * Tests if a toast equals this toast.\n * @returns boolean true then equals else false.\n * @param toast notifire-toast\n */\n equals(toast: SnotifireToastModel): boolean {\n return this.config && toast.config\n ? this.body === toast.body &&\n this.title === toast.title &&\n this.config.type === toast.config.type\n : this.body === toast.body && this.title === toast.title;\n }\n}\n","/**\n * Deep merge objects.\n * @param sources Array<Object<any>>\n * @returns Object<any>\n */\nexport function mergeDeep(...sources: any[]) {\n const target: any = {};\n if (!sources.length) {\n return target;\n }\n\n while (sources.length > 0) {\n const source = sources.shift();\n if (isObject(source)) {\n for (const key in source) {\n if (isObject(source[key])) {\n target[key] = mergeDeep(target[key], source[key]);\n } else {\n Object.assign(target, { [key]: source[key] });\n }\n }\n }\n }\n return target;\n}\n/**\n * Generates random id\n * @return number\n */\nexport function uuid(): number {\n return Math.floor(Math.random() * (Date.now() - 1)) + 1;\n}\n/**\n * Simple is object check.\n * @param item Object<any>\n * @returns boolean\n */\nexport function isObject(item: any): boolean {\n return item && typeof item === 'object' && !Array.isArray(item);\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { SafeHtml } from '@angular/platform-browser';\nimport {\n catchError,\n finalize,\n from,\n Observable,\n of,\n Subject,\n tap,\n throwError,\n} from 'rxjs';\nimport { SetToastType } from '../decorators/set-toast-type.decorator';\nimport { TransformArgument } from '../decorators/transform-argument.decorator';\nimport { SnotifireConfig, SnotifireEventType, SnotifireType } from '../models';\nimport { SnotifireDefaults } from '../defaults/defaults.interface';\nimport { SnotifireModel } from '../models/snotifire.model';\nimport { SnotifireToastModel } from '../components/toast/notifire-toast.model';\nimport { mergeDeep, uuid } from '../utils';\n\n@Injectable()\nexport class SnotifireService {\n /**\n * Minimum display time of the notification message\n */\n private readonly minimumDisplayedTime = 3000;\n\n /**\n * Emits Notifire Notifications\n */\n readonly emitter = new Subject<SnotifireToastModel[]>();\n\n readonly toastDeleted = new Subject<number>();\n readonly toastChanged = new Subject<SnotifireToastModel>();\n\n notifications: Array<SnotifireToastModel> = [];\n\n constructor(\n @Inject('snotifireConfig') public defaultConfig: SnotifireDefaults\n ) {}\n\n /**\n * Creates toast and add it to array, returns toast id\n * @param NotificationModel NotificationModel\n * @return number\n */\n create(notif: SnotifireModel): SnotifireToastModel {\n if (this.defaultConfig.type && notif.config && notif.config.type) {\n const config = mergeDeep(\n this.defaultConfig.snotifireConfig,\n this.defaultConfig.type[notif.config.type],\n notif.config\n );\n const toast = new SnotifireToastModel(\n uuid(),\n notif.title ? notif.title : '',\n notif.body ? notif.body : '',\n config\n );\n this.add(toast);\n return toast;\n }\n const config = mergeDeep(this.defaultConfig.snotifireConfig, notif.config);\n const defaulToast = new SnotifireToastModel(\n uuid(),\n notif.title ? notif.title : '',\n notif.body ? notif.body : '',\n config\n );\n this.add(defaulToast);\n return defaulToast;\n }\n /**\n * If ID passed, emits toast animation remove, if ID & REMOVE passed, removes toast from notifications array\n * @param id number\n * @param remove boolean\n */\n remove(id: number, remove?: boolean): void {\n if (!id) {\n return this.clear();\n }\n if (remove) {\n this.notifications = this.notifications.filter(\n (toast) => toast.id !== id\n );\n return this.emit();\n }\n this.toastDeleted.next(id);\n }\n\n setDefaults(defaults: SnotifireDefaults): SnotifireDefaults {\n const mergedConfig = (this.defaultConfig = mergeDeep(\n this.defaultConfig,\n defaults\n ) as SnotifireDefaults);\n return mergedConfig;\n }\n\n /**\n * Clear notifications array\n */\n clear(): void {\n this.notifications = [];\n this.emit();\n }\n\n /**\n * add NotifireToast to notifications array\n * @param toast NotifireToast\n */\n private add(toast: SnotifireToastModel): void {\n if (\n this.defaultConfig &&\n this.defaultConfig.global &&\n this.defaultConfig.global.filterDuplicates &&\n this.containsToast(toast)\n ) {\n if (!this.defaultConfig.global.filterDuplicates) {\n throw new Error('Missing global config');\n }\n return;\n }\n if (\n this.defaultConfig &&\n this.defaultConfig.global &&\n this.defaultConfig.global.newOnTop\n ) {\n this.notifications.unshift(toast);\n } else {\n this.notifications.push(toast);\n }\n this.emit();\n }\n\n /**\n * emit changes in notifications array\n */\n private emit(): void {\n this.emitter.next(this.notifications.slice());\n }\n\n /**\n * checks if the toast is in the collection.\n * @param inToast NotifireToast\n * @returns boolean\n */\n private containsToast(inToast: SnotifireToastModel): boolean {\n return this.notifications.some((toast) => toast.equals(inToast));\n }\n\n /**\n * Creates empty toast with html string inside\n * @param html string | SafeHtml\n * @param config NotifireConfig\n * @returns number\n */\n html(html: string | SafeHtml, config?: SnotifireConfig): SnotifireToastModel {\n return this.create({\n title: undefined,\n body: undefined,\n config: {\n ...config,\n ...{ html },\n },\n });\n }\n /**\n * Create toast with success style returns toast id;\n * @param body string\n * @returns number\n */\n success(body: string): SnotifireToastModel;\n /**\n * Create toast with success style returns toast id;\n * @param body string\n * @param title string\n * @returns number\n */\n success(body: string, title: string): SnotifireToastModel;\n /**\n * Create toast with success style returns toast id;\n * @param body string\n * @param config NotificationConfig\n * @returns number\n */\n success(body: string, config: SnotifireConfig): SnotifireToastModel;\n /**\n * Create toast with success style returns toast id;\n * @param [body] string\n * @param [title] string\n * @param [config] NotificationConfig\n * @returns number\n */\n success(\n body: string,\n title: string,\n config: SnotifireConfig\n ): SnotifireToastModel;\n\n /**\n * Transform toast arguments into NotificationModel object\n */\n @TransformArgument\n /**\n * Determines current toast type and collects default configuration\n */\n @SetToastType\n success(args: any): SnotifireToastModel {\n if (!args.config) {\n throw new Error('Missing config, please configure service accordingly');\n }\n return this.create(args);\n }\n\n /**\n * Create toast with error style returns toast id;\n * @param body string\n * @returns number\n */\n error(body: string): SnotifireToastModel;\n /**\n * Create toast with error style returns toast id;\n * @param body string\n * @param title string\n * @returns number\n */\n error(body: string, title: string): SnotifireToastModel;\n /**\n * Create toast with error style returns toast id;\n * @param body string\n * @param config NotificationConfig\n * @returns number\n */\n error(body: string, config: SnotifireConfig): SnotifireToastModel;\n /**\n * Create toast with error style returns toast id;\n * @param [body] string\n * @param [title] string\n * @param [config] NotificationConfig\n * @returns number\n */\n error(\n body: string,\n title: string,\n config: SnotifireConfig\n ): SnotifireToastModel;\n /**\n * Transform toast arguments into NotificationModel object\n */\n @TransformArgument\n /**\n * Determines current toast type and collects default configuration\n */\n @SetToastType\n error(args: any): SnotifireToastModel {\n return this.create(args);\n }\n\n /**\n * Create toast with info style returns toast id;\n * @param body string\n * @returns number\n */\n info(body: string): SnotifireToastModel;\n /**\n * Create toast with info style returns toast id;\n * @param body string\n * @param title string\n * @returns number\n */\n info(body: string, title: string): SnotifireToastModel;\n /**\n * Create toast with info style returns toast id;\n * @param body string\n * @param config NotificationConfig\n * @returns number\n */\n info(body: string, config: SnotifireConfig): SnotifireToastModel;\n /**\n * Create toast with info style returns toast id;\n * @param [body] string\n * @param [title] string\n * @param [config] NotificationConfig\n * @returns number\n */\n info(\n body: string,\n title: string,\n config: SnotifireConfig\n ): SnotifireToastModel;\n /**\n * Transform toast arguments into NotificationModel object\n */\n @TransformArgument\n /**\n * Determines current toast type and collects default configuration\n */\n @SetToastType\n info(args: any): SnotifireToastModel {\n return this.create(args);\n }\n\n /**\n * Create toast with warning style returns toast id;\n * @param body string\n * @returns number\n */\n warning(body: string): SnotifireToastModel;\n /**\n * Create toast with warning style returns toast id;\n * @param body string\n * @param title string\n * @returns number\n */\n warning(body: string, title: string): SnotifireToastModel;\n /**\n * Create toast with warning style returns toast id;\n * @param body string\n * @param config NotificationConfig\n * @returns number\n */\n warning(body: string, config: SnotifireConfig): SnotifireToastModel;\n /**\n * Create toast with warning style returns toast id;\n * @param [body] string\n * @param [title] string\n * @param [config] NotificationConfig\n * @returns number\n */\n warning(\n body: string,\n title: string,\n config: SnotifireConfig\n ): SnotifireToastModel;\n /**\n * Transform toast arguments into NotificationModel object\n */\n @TransformArgument\n /**\n * Determines current toast type and collects default configuration\n */\n @SetToastType\n warning(args: any): SnotifireToastModel {\n return this.create(args);\n }\n\n /**\n * Create toast with confirm style returns toast id;\n * @param body string\n * @returns number\n */\n confirm(body: string): SnotifireToastModel;\n /**\n * Create toast with confirm style returns toast id;\n * @param body string\n * @param title string\n * @returns number\n */\n confirm(body: string, title: string): SnotifireToastModel;\n /**\n * Create toast with confirm style returns toast id;\n * @param body string\n * @param config NotificationConfig\n * @returns number\n */\n confirm(body: string, config: SnotifireConfig): SnotifireToastModel;\n /**\n * Create toast with confirm style returns toast id;\n * @param [body] string\n * @param [title] string\n * @param [config] NotificationConfig\n * @returns number\n */\n confirm(\n body: string,\n title: string,\n config: SnotifireConfig\n ): SnotifireToastModel;\n /**\n * Transform toast arguments into NotificationModel object\n */\n @TransformArgument\n /**\n * Determines current toast type and collects default configuration\n */\n @SetToastType\n confirm(args: any): SnotifireToastModel {\n return this.create(args);\n }\n\n /**\n * Create toast with Prompt style with two buttons, returns toast id;\n * @param body string\n * @returns number\n */\n prompt(body: string): SnotifireToastModel;\n /**\n * Create toast with Prompt style with two buttons, returns toast id;\n * @param body string\n * @param title string\n * @returns number\n */\n prompt(body: string, title: string): SnotifireToastModel;\n /**\n * Create toast with Prompt style with two buttons, returns toast id;\n * @param body string\n * @param config NotificationConfig\n * @returns number\n */\n prompt(body: string, config: SnotifireConfig): SnotifireToastModel;\n /**\n * Create toast with Prompt style with two buttons, returns toast id;\n * @param [body] string\n * @param [title] string\n * @param [config] NotificationConfig\n * @returns number\n */\n prompt(\n body: string,\n title: string,\n config: SnotifireConfig\n ): SnotifireToastModel;\n /**\n * Transform toast arguments into NotificationModel object\n */\n @TransformArgument\n /**\n * Determines current toast type and collects default configuration\n */\n @SetToastType\n prompt(args: any): SnotifireToastModel {\n return this.create(args);\n }\n\n /**\n * Creates async toast with Info style. Pass action, and resolve or reject it.\n * @param body string\n * @param action Promise<NotificationModel> | Observable<NotificationModel>\n * @returns number\n */\n async(\n body: string,\n action: Promise<SnotifireModel> | Observable<SnotifireModel>\n ): 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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"}
|
|
@@ -232,7 +232,7 @@ export declare class SnotifireService {
|
|
|
232
232
|
* @param action Promise<NotificationModel> | Observable<NotificationModel>
|
|
233
233
|
* @returns number
|
|
234
234
|
*/
|
|
235
|
-
async(body: string, action: Promise<SnotifireModel> | Observable<SnotifireModel>):
|
|
235
|
+
async(body: string, action: Promise<SnotifireModel> | Observable<SnotifireModel>): SnotifireToastModel;
|
|
236
236
|
/**
|
|
237
237
|
* Creates async toast with Info style. Pass action, and resolve or reject it.
|
|
238
238
|
* @param body string
|
|
@@ -240,7 +240,7 @@ export declare class SnotifireService {
|
|
|
240
240
|
* @param action Promise<NotificationModel> | Observable<NotificationModel>
|
|
241
241
|
* @returns number
|
|
242
242
|
*/
|
|
243
|
-
async(body: string, title: string, action: Promise<SnotifireModel> | Observable<SnotifireModel>):
|
|
243
|
+
async(body: string, title: string, action: Promise<SnotifireModel> | Observable<SnotifireModel>): SnotifireToastModel;
|
|
244
244
|
/**
|
|
245
245
|
* Creates async toast with Info style. Pass action, and resolve or reject it.
|
|
246
246
|
* @param body string
|
|
@@ -248,7 +248,7 @@ export declare class SnotifireService {
|
|
|
248
248
|
* @param [config] NotificationConfig
|
|
249
249
|
* @returns number
|
|
250
250
|
*/
|
|
251
|
-
async(body: string, action: Promise<SnotifireModel> | Observable<SnotifireModel>, config: SnotifireConfig):
|
|
251
|
+
async(body: string, action: Promise<SnotifireModel> | Observable<SnotifireModel>, config: SnotifireConfig): SnotifireToastModel;
|
|
252
252
|
/**
|
|
253
253
|
* Creates async toast with Info style. Pass action, and resolve or reject it.
|
|
254
254
|
* @param body string
|
|
@@ -257,7 +257,7 @@ export declare class SnotifireService {
|
|
|
257
257
|
* @param [config] NotificationConfig
|
|
258
258
|
* @returns number
|
|
259
259
|
*/
|
|
260
|
-
async(body: string, title: string, action: Promise<SnotifireModel> | Observable<SnotifireModel>, config: SnotifireConfig):
|
|
260
|
+
async(body: string, title: string, action: Promise<SnotifireModel> | Observable<SnotifireModel>, config: SnotifireConfig): SnotifireToastModel;
|
|
261
261
|
private mergeToast;
|
|
262
262
|
/**
|
|
263
263
|
* returns SnotifyToast object
|