ngx-snotifire 19.0.1 → 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.
|
@@ -579,11 +579,11 @@ class ButtonsComponent {
|
|
|
579
579
|
this.service.remove(this.toast.id);
|
|
580
580
|
}
|
|
581
581
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ButtonsComponent, deps: [{ token: SnotifireService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
582
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
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 }); }
|
|
583
583
|
}
|
|
584
584
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ButtonsComponent, decorators: [{
|
|
585
585
|
type: Component,
|
|
586
|
-
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" }]
|
|
587
587
|
}], ctorParameters: () => [{ type: SnotifireService }], propDecorators: { toast: [{
|
|
588
588
|
type: Input
|
|
589
589
|
}] } });
|
|
@@ -626,11 +626,11 @@ class PromptComponent {
|
|
|
626
626
|
return $event.target.value;
|
|
627
627
|
}
|
|
628
628
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: PromptComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
629
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
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 }); }
|
|
630
630
|
}
|
|
631
631
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: PromptComponent, decorators: [{
|
|
632
632
|
type: Component,
|
|
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
|
|
633
|
+
args: [{ selector: 'ngx-snotify-prompt', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: false, template: "<span\n class=\"notifire-toast__input\"\n [ngClass]=\"{ 'notifire-toast__input--filled': isPromptFocused }\"\n>\n <input\n (input)=\"toast.value = getValue($event); toast.eventEmitter.next(inputType)\"\n autofocus\n class=\"notifire-toast__input__field\"\n type=\"text\"\n [id]=\"toast.id\"\n (focus)=\"isPromptFocused = true\"\n (blur)=\"isPromptFocused = !!toast.value && !!toast.value.length\"\n >\n <label\n class=\"notifire-toast__input__label\"\n [for]=\"toast.id\"\n >\n @if (toast.config && toast.config.placeholder) {\n <span class=\"notifire-toast__input__labelContent\">\n {{ toast.config.placeholder | truncate }}\n </span>\n }\n </label>\n</span>\n" }]
|
|
634
634
|
}], propDecorators: { toast: [{
|
|
635
635
|
type: Input
|
|
636
636
|
}] } });
|
|
@@ -800,11 +800,11 @@ class ToastComponent {
|
|
|
800
800
|
this.unsubscribe$.complete();
|
|
801
801
|
}
|
|
802
802
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ToastComponent, deps: [{ token: SnotifireService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
803
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
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 }); }
|
|
804
804
|
}
|
|
805
805
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ToastComponent, decorators: [{
|
|
806
806
|
type: Component,
|
|
807
|
-
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" }]
|
|
808
808
|
}], ctorParameters: () => [{ type: SnotifireService }], propDecorators: { toast: [{
|
|
809
809
|
type: Input
|
|
810
810
|
}], stateChanged: [{
|
|
@@ -947,11 +947,11 @@ class NgxSnotifireComponent {
|
|
|
947
947
|
this.unsubscribe$.complete();
|
|
948
948
|
}
|
|
949
949
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: NgxSnotifireComponent, deps: [{ token: SnotifireService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
950
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
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 }); }
|
|
951
951
|
}
|
|
952
952
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: NgxSnotifireComponent, decorators: [{
|
|
953
953
|
type: Component,
|
|
954
|
-
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" }]
|
|
955
955
|
}], ctorParameters: () => [{ type: SnotifireService }] });
|
|
956
956
|
|
|
957
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 ): 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 <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":";;;;;;;AAEA;;;;;;AAMG;SACa,YAAY,CAC1B,MAAW,EACX,WAAmB,EACnB,UAA8B,EAAA;IAE9B,OAAO;QACL,KAAK,CAAC,GAAG,IAAW,EAAA;AACjB,YAAA,IAAI,CAAC,CAAC,CAAoB,CAAC,MAAM,GAAG;AACnC,gBAAA,GAAI,IAAI,CAAC,CAAC,CAAoB,CAAC,MAAM;AACrC,gBAAA,IAAI,EAAE,WAA4B;aACnC;YACD,OAAO,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;SAC1C;KACF;AACH;;ICvBY;AAAZ,CAAA,UAAY,kBAAkB,EAAA;AAC5B,IAAA,kBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,kBAAA,CAAA,aAAA,CAAA,GAAA,YAA0B;AAC1B,IAAA,kBAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,kBAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,kBAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,kBAAA,CAAA,aAAA,CAAA,GAAA,YAA0B;AAC1B,IAAA,kBAAA,CAAA,aAAA,CAAA,GAAA,YAA0B;AAC1B,IAAA,kBAAA,CAAA,aAAA,CAAA,GAAA,YAA0B;AAC1B,IAAA,kBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,kBAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACzB,CAAC,EAXW,kBAAkB,KAAlB,kBAAkB,GAW7B,EAAA,CAAA,CAAA;;ICXW;AAAZ,CAAA,UAAY,yBAAyB,EAAA;AACnC,IAAA,yBAAA,CAAA,UAAA,CAAA,GAAA,SAAoB;AACpB,IAAA,yBAAA,CAAA,aAAA,CAAA,GAAA,YAA0B;AAC1B,IAAA,yBAAA,CAAA,aAAA,CAAA,GAAA,YAA0B;AAC1B,IAAA,yBAAA,CAAA,WAAA,CAAA,GAAA,UAAsB;AACtB,IAAA,yBAAA,CAAA,cAAA,CAAA,GAAA,aAA4B;AAC5B,IAAA,yBAAA,CAAA,cAAA,CAAA,GAAA,aAA4B;AAC5B,IAAA,yBAAA,CAAA,YAAA,CAAA,GAAA,WAAwB;AACxB,IAAA,yBAAA,CAAA,eAAA,CAAA,GAAA,cAA8B;AAC9B,IAAA,yBAAA,CAAA,eAAA,CAAA,GAAA,cAA8B;AAChC,CAAC,EAVW,yBAAyB,KAAzB,yBAAyB,GAUpC,EAAA,CAAA,CAAA;;ICVW;AAAZ,CAAA,UAAY,aAAa,EAAA;AACvB,IAAA,aAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,aAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,aAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,aAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,aAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,aAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,aAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACnB,CAAC,EARW,aAAa,KAAb,aAAa,GAQxB,EAAA,CAAA,CAAA;;MCJY,cAAc,CAAA;AACzB,IAAA,WAAA,CACS,IAAoB;AAC3B;;AAEG;IACI,KAAc;AACrB;;AAEG;IACI,IAAa;AACpB;;AAEG;IACI,MAAwB;AAC/B;;AAEG;IACI,IAAwB,EAAA;QAhBxB,IAAI,CAAA,IAAA,GAAJ,IAAI;QAIJ,IAAK,CAAA,KAAA,GAAL,KAAK;QAIL,IAAI,CAAA,IAAA,GAAJ,IAAI;QAIJ,IAAM,CAAA,MAAA,GAAN,MAAM;QAIN,IAAI,CAAA,IAAA,GAAJ,IAAI;;AAEd;;ACtBD;AACA;;;;;;AAMG;SACa,iBAAiB,CAC/B,MAAW,EACX,WAAmB,EACnB,UAA8B,EAAA;AAE9B,IAAA,IAAI,WAAW,KAAK,aAAa,CAAC,KAAK,EAAE;QACvC,OAAO;YACL,KAAK,CAAC,GAAG,IAAW,EAAA;AAClB,gBAAA,IAAI,MAAM;AACV,gBAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AACrB,oBAAA,MAAM,GAAG;AACP,wBAAA,KAAK,EAAE,IAAI;AACX,wBAAA,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AACb,wBAAA,MAAM,EAAE,IAAI;AACZ,wBAAA,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;qBAChB;;AACI,qBAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;oBAC5B,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;AAC/B,wBAAA,MAAM,GAAG;AACP,4BAAA,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AACd,4BAAA,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AACb,4BAAA,MAAM,EAAE,IAAI;AACZ,4BAAA,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;yBAChB;;yBACI;AACL,wBAAA,MAAM,GAAG;AACP,4BAAA,KAAK,EAAE,IAAI;AACX,4BAAA,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AACb,4BAAA,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;AACf,4BAAA,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;yBAChB;;;qBAEE;AACL,oBAAA,MAAM,GAAG;AACP,wBAAA,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AACd,wBAAA,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AACb,wBAAA,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;AACf,wBAAA,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;qBAChB;;AAEH,gBAAA,OAAO,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE;oBAClC,MAAiC;AAClC,iBAAA,CAAC;aACH;SACF;;SACI;QACL,OAAO;YACL,KAAK,CAAC,GAAG,IAAW,EAAA;AAClB,gBAAA,IAAI,MAAM;AACV,gBAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AACrB,oBAAA,MAAM,GAAG;AACP,wBAAA,KAAK,EAAE,IAAI;AACX,wBAAA,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AACb,wBAAA,MAAM,EAAE,IAAI;qBACb;;AACI,qBAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AAC5B,oBAAA,MAAM,GAAG;AACP,wBAAA,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AACd,wBAAA,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AACb,wBAAA,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;qBAChB;;qBACI;AACL,oBAAA,MAAM,GAAG;AACP,wBAAA,KAAK,EAAE,IAAI;AACX,wBAAA,MAAM,EAAE,IAAI;AACZ,wBAAA,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;wBACb,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC;qBAC5D;;AAEH,gBAAA,OAAO,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE;oBAClC,MAAiC;AAClC,iBAAA,CAAC;aACH;SACF;;AAEL;;AChFA;;AAEG;MACU,mBAAmB,CAAA;AAqB9B,IAAA,WAAA,CACkB,EAAU,EACV,KAAa,EACb,IAAY,EACZ,MAAuB,EAAA;QAHvB,IAAE,CAAA,EAAA,GAAF,EAAE;QACF,IAAK,CAAA,KAAA,GAAL,KAAK;QACL,IAAI,CAAA,IAAA,GAAJ,IAAI;QACJ,IAAM,CAAA,MAAA,GAAN,MAAM;AAxBxB;;AAEG;AACM,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,OAAO,EAAsB;AAEzD;;AAEG;QACK,IAAY,CAAA,YAAA,GAAmB,EAAE;AAOzC;;AAEG;QACH,IAAK,CAAA,KAAA,GAAY,IAAI;AAQnB,QAAA,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,aAAa,CAAC,MAAM,EAAE;AAC5D,YAAA,IAAI,CAAC,KAAK,GAAG,EAAE;;QAEjB,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAK;YACtC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,YAA0B,KAAI;gBACvD,YAAY,CAAC,WAAW,EAAE;AAC5B,aAAC,CAAC;AACJ,SAAC,CAAC;;AAEJ;;;;;AAKG;IACH,EAAE,CAAC,KAAyB,EAAE,MAA6B,EAAA;AACzD,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CACpB,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAqB,KAAI;AACpD,YAAA,IAAI,CAAC,KAAK,KAAK,EAAE;gBACf,MAAM,CAAC,IAAI,CAAC;;SAEf,CAAC,CACH;AACD,QAAA,OAAO,IAAI;;AAGb;;;;AAIG;AACH,IAAA,MAAM,CAAC,KAA0B,EAAA;AAC/B,QAAA,OAAO,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC;AAC1B,cAAE,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;AACtB,gBAAA,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;gBAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,CAAC;AACtC,cAAE,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;;AAE7D;;ACzED;;;;AAIG;AACa,SAAA,SAAS,CAAC,GAAG,OAAc,EAAA;IACzC,MAAM,MAAM,GAAQ,EAAE;AACtB,IAAA,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACnB,QAAA,OAAO,MAAM;;AAGf,IAAA,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACzB,QAAA,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE;AAC9B,QAAA,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;AACpB,YAAA,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;gBACxB,IAAI,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE;AACzB,oBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;;qBAC5C;AACL,oBAAA,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;;;;;AAKrD,IAAA,OAAO,MAAM;AACf;AACA;;;AAGG;SACa,IAAI,GAAA;IAClB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AACzD;AACA;;;;AAIG;AACG,SAAU,QAAQ,CAAC,IAAS,EAAA;AAChC,IAAA,OAAO,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;AACjE;;MClBa,gBAAgB,CAAA;AAgB3B,IAAA,WAAA,CACoC,aAAgC,EAAA;QAAhC,IAAa,CAAA,aAAA,GAAb,aAAa;AAhBjD;;AAEG;QACc,IAAoB,CAAA,oBAAA,GAAG,IAAI;AAE5C;;AAEG;AACM,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,OAAO,EAAyB;AAE9C,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,OAAO,EAAU;AACpC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,OAAO,EAAuB;QAE1D,IAAa,CAAA,aAAA,GAA+B,EAAE;;AAM9C;;;;AAIG;AACH,IAAA,MAAM,CAAC,KAAqB,EAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE;YAChE,MAAM,MAAM,GAAG,SAAS,CACtB,IAAI,CAAC,aAAa,CAAC,eAAe,EAClC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAC1C,KAAK,CAAC,MAAM,CACb;AACD,YAAA,MAAM,KAAK,GAAG,IAAI,mBAAmB,CACnC,IAAI,EAAE,EACN,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,EAAE,EAC9B,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG,EAAE,EAC5B,MAAM,CACP;AACD,YAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AACf,YAAA,OAAO,KAAK;;AAEd,QAAA,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC;AAC1E,QAAA,MAAM,WAAW,GAAG,IAAI,mBAAmB,CACzC,IAAI,EAAE,EACN,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,EAAE,EAC9B,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG,EAAE,EAC5B,MAAM,CACP;AACD,QAAA,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC;AACrB,QAAA,OAAO,WAAW;;AAEpB;;;;AAIG;IACH,MAAM,CAAC,EAAU,EAAE,MAAgB,EAAA;QACjC,IAAI,CAAC,EAAE,EAAE;AACP,YAAA,OAAO,IAAI,CAAC,KAAK,EAAE;;QAErB,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAC5C,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,KAAK,EAAE,CAC3B;AACD,YAAA,OAAO,IAAI,CAAC,IAAI,EAAE;;AAEpB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;;AAG5B,IAAA,WAAW,CAAC,QAA2B,EAAA;AACrC,QAAA,MAAM,YAAY,IAAI,IAAI,CAAC,aAAa,GAAG,SAAS,CAClD,IAAI,CAAC,aAAa,EAClB,QAAQ,CACY,CAAC;AACvB,QAAA,OAAO,YAAY;;AAGrB;;AAEG;IACH,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE;QACvB,IAAI,CAAC,IAAI,EAAE;;AAGb;;;AAGG;AACK,IAAA,GAAG,CAAC,KAA0B,EAAA;QACpC,IACE,IAAI,CAAC,aAAa;YAClB,IAAI,CAAC,aAAa,CAAC,MAAM;AACzB,YAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,gBAAgB;AAC1C,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EACzB;YACA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,gBAAgB,EAAE;AAC/C,gBAAA,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC;;YAE1C;;QAEF,IACE,IAAI,CAAC,aAAa;YAClB,IAAI,CAAC,aAAa,CAAC,MAAM;AACzB,YAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,EAClC;AACA,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC;;aAC5B;AACL,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;;QAEhC,IAAI,CAAC,IAAI,EAAE;;AAGb;;AAEG;IACK,IAAI,GAAA;AACV,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;;AAG/C;;;;AAIG;AACK,IAAA,aAAa,CAAC,OAA4B,EAAA;AAChD,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;;AAGlE;;;;;AAKG;IACH,IAAI,CAAC,IAAuB,EAAE,MAAwB,EAAA;QACpD,OAAO,IAAI,CAAC,MAAM,CAAC;AACjB,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,MAAM,EAAE;AACN,gBAAA,GAAG,MAAM;gBACT,GAAG,EAAE,IAAI,EAAE;AACZ,aAAA;AACF,SAAA,CAAC;;AAmCJ;;AAEG;AAMH,IAAA,OAAO,CAAC,IAAS,EAAA;AACf,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAChB,YAAA,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC;;AAEzE,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;;AAmC1B;;AAEG;AAMH,IAAA,KAAK,CAAC,IAAS,EAAA;AACb,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;;AAmC1B;;AAEG;AAMH,IAAA,IAAI,CAAC,IAAS,EAAA;AACZ,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;;AAmC1B;;AAEG;AAMH,IAAA,OAAO,CAAC,IAAS,EAAA;AACf,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;;AAmC1B;;AAEG;AAMH,IAAA,OAAO,CAAC,IAAS,EAAA;AACf,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;;AAmC1B;;AAEG;AAMH,IAAA,MAAM,CAAC,IAAS,EAAA;AACd,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;;AAmD1B;;AAEG;AAMH,IAAA,KAAK,CAAC,IAAS,EAAA;AACb,QAAA,IAAI,KAAsB;AAC1B,QAAA,IAAI,IAAI,CAAC,MAAM,YAAY,OAAO,EAAE;AAClC,YAAA,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;;aACpB;AACL,YAAA,KAAK,GAAG,IAAI,CAAC,MAAM;;QAGrB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QAC/B,IAAI,MAAM,GAAG,KAAK;QAClB;AACG,aAAA,SAAS,CAAC;AACT,YAAA,IAAI,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC;AAC5C,YAAA,KAAK,EAAE,CAAC,KAAK,KAAI;gBACf,MAAM,GAAG,IAAI;;AAEb,gBAAA,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,EAAE,KAAK,YAAY,KAAK,CAAC,EAAE;AACnE,oBAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC;;aAEhC;SACF;aACA,GAAG,CAAC,MAAK;YACR,IAAI,CAAC,UAAU,CACb,KAAK,EACL,EAAE,EACF,MAAM,KAAK,IAAI,GAAG,aAAa,CAAC,KAAK,GAAG,aAAa,CAAC,OAAO,CAC9D;AACH,SAAC,CAAC;AACJ,QAAA,OAAO,KAAK;;;;;;;;;;;;;;;;;;;AAuBN,IAAA,UAAU,CAAC,KAAU,EAAE,IAAS,EAAE,IAAoB,EAAA;AAC5D,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,YAAA,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;;AAExB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;;AAG1B,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE;AAC9B,YAAA,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AACjB,YAAA,KAAK,CAAC,MAAM,GAAG,SAAS,CACtB,KAAK,CAAC,MAAM,EACZ,IAAI,CAAC,aAAa,CAAC,MAAM,EACzB,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,IAAI,EACxC,EAAE,IAAI,EAAE,EACR,IAAI,CAAC,MAAM,CACZ;;aACI;AACL,YAAA,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;;AAErD,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;;QAE/B,IAAI,CAAC,IAAI,EAAE;AACX,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;;AAE/B;;;;AAIG;AACH,IAAA,GAAG,CAAC,EAAU,EAAA;QACZ,QACE,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC;;AAziBlE,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,kBAiBjB,iBAAiB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAjBhB,gBAAgB,EAAA,CAAA,CAAA;;AA0L3B,UAAA,CAAA;IALC;AACD;;AAEG;;IACF;AAMA,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,SAAA,EAAA,IAAA,CAAA;AA0CD,UAAA,CAAA;IALC;AACD;;AAEG;;IACF;AAGA,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,OAAA,EAAA,IAAA,CAAA;AA0CD,UAAA,CAAA;IALC;AACD;;AAEG;;IACF;AAGA,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,MAAA,EAAA,IAAA,CAAA;AA0CD,UAAA,CAAA;IALC;AACD;;AAEG;;IACF;AAGA,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,SAAA,EAAA,IAAA,CAAA;AA0CD,UAAA,CAAA;IALC;AACD;;AAEG;;IACF;AAGA,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,SAAA,EAAA,IAAA,CAAA;AA0CD,UAAA,CAAA;IALC;AACD;;AAEG;;IACF;AAGA,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,CAAA;AA0DD,UAAA,CAAA;IALC;AACD;;AAEG;;IACF;AAkDA,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,OAAA,EAAA,IAAA,CAAA;4FAtgBU,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B;;0BAkBI,MAAM;2BAAC,iBAAiB;yCAyK3B,OAAO,EAAA,EAAA,EA+CP,KAAK,EAAA,EAAA,EA4CL,IAAI,EAAA,EAAA,EA4CJ,OAAO,EAAA,EAAA,EA4CP,OAAO,EAAA,EAAA,EA4CP,MAAM,EAAA,EAAA,EA4DN,KAAK,EAAA,EAAA,EAAA,EAAA,CAAA;;ACzdP;;AAEG;MACU,gBAAgB,CAAA;AAM3B,IAAA,WAAA,CAA6B,OAAyB,EAAA;QAAzB,IAAO,CAAA,OAAA,GAAP,OAAO;;AAEpC;;AAEG;IACH,MAAM,GAAA;QACJ,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;;+GAZzB,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,wGCpB7B,+bAaA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FDOa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAV5B,SAAS;+BACI,iBAAiB,EAAA,eAAA,EAEV,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,EAAA,UAAA,EACzB,KAAK,EAAA,QAAA,EAAA,+bAAA,EAAA;kFASV,KAAK,EAAA,CAAA;sBAAb;;;AEjBH;;AAEG;MACU,YAAY,CAAA;AARzB,IAAA,WAAA,GAAA;QASmB,IAAa,CAAA,aAAA,GAAG,EAAE;QAClB,IAAa,CAAA,aAAA,GAAG,KAAK;AASvC;AARC,IAAA,SAAS,CAAC,KAAa,EAAE,GAAG,IAAgB,EAAA;QAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa;AAE1E,QAAA,OAAO,KAAK,CAAC,MAAM,GAAG;cAClB,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC;AACvB,iBAAC,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa;cACjD,KAAK;;+GATA,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;6GAAZ,YAAY,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,CAAA;;4FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBARxB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,UAAU;AAChB,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MCYY,eAAe,CAAA;AAP5B,IAAA,WAAA,GAAA;AAQE,QAAA,IAAA,CAAA,SAAS,GAAG,kBAAkB,CAAC,KAAK;AAKpC;;AAEG;QACH,IAAe,CAAA,eAAA,GAAG,KAAK;AAKxB;AAHC,IAAA,QAAQ,CAAC,MAAW,EAAA;AAClB,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK;;+GAZjB,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,2GCjB5B,8xBAwBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FDPa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAP3B,SAAS;+BACI,oBAAoB,EAAA,eAAA,EAEb,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,EAAA,UAAA,EACzB,KAAK,EAAA,QAAA,EAAA,8xBAAA,EAAA;8BAOV,KAAK,EAAA,CAAA;sBAAb;;;MEFU,cAAc,CAAA;AAyBzB,IAAA,WAAA,CAA6B,OAAyB,EAAA;QAAzB,IAAO,CAAA,OAAA,GAAP,OAAO;AAxB5B,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,OAAO,EAAQ;AAMhC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAsB;AAO/D;;AAEG;AACH,QAAA,IAAA,CAAA,KAAK,GAAG;AACN,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,QAAQ,EAAE,CAAC;AACX,YAAA,SAAS,EAAE,EAAE;AACb,YAAA,YAAY,EAAE,KAAK;YACnB,UAAU,EAAE,aAAa,CAAC,MAAM;SACjC;;IAID,QAAQ,GAAA;QACN,IAAI,CAAC,OAAO,CAAC;AACV,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC;AACjC,aAAA,SAAS,CAAC,CAAC,KAA0B,KAAI;YACxC,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,EAAE;gBAC9B,IAAI,CAAC,SAAS,EAAE;;AAEpB,SAAC,CAAC;QAEJ,IAAI,CAAC,OAAO,CAAC;AACV,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC;AACjC,aAAA,SAAS,CAAC,CAAC,EAAE,KAAI;YAChB,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE;gBACxB,IAAI,CAAC,QAAQ,EAAE;;AAEnB,SAAC,CAAC;AACJ,QAAA,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE;YACjE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,GAAG,KAAK;;QAG3C,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;AACxD,QAAA,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,oBAAoB;;IAE7C,kBAAkB,GAAA;AAChB,QAAA,IACE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,eAAe;YAC1C,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,eAAe,CAAC,SAAS,EACpD;YACA,UAAU,CAAC,MAAK;gBACd,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC;gBACtD,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC;gBAC5D,IAAI,CAAC,KAAK,CAAC,SAAS;oBAClB,IAAI,CAAC,KAAK,CAAC,MAAM;AACjB,wBAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS;AAC3B,wBAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC;0BACxB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC;0BAC5B,EAAE;AACV,aAAC,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;;;AAGtE;;AAEG;IACH,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI;QAC9B,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC;QAC5D,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC;QACtD,IAAI,CAAC,KAAK,CAAC,SAAS;AAClB,YAAA,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM;AAChB,gBAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS;gBAC3B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI;AAClC,gBAAA,EAAE;QACJ,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;AACjD,YAAA,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,qBAAqB;YAC5C,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;YACvD,UAAU,CACR,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,EAC9C,IAAI,CAAC,KAAK,CAAC,MAAM;AACf,gBAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS;gBAC3B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CACvC;SACF,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC;;AAE9F;;AAEG;IACH,OAAO,GAAA;QACL,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;AACtD,QAAA,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE;YACrE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;;;AAGtC;;AAEG;IACH,YAAY,GAAA;QACV,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC;AAC5D,QAAA,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE;AACrE,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI;;;AAI5B;;AAEG;IACH,YAAY,GAAA;QACV,IACE,IAAI,CAAC,KAAK;YACV,IAAI,CAAC,KAAK,CAAC,MAAM;AACjB,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY;AAC9B,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EACzB;AACA,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK;AACzB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;;QAEpE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC;;AAE9D;;AAEG;IACH,mBAAmB,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;YAC3B;;QAEF,IAAI,CAAC,SAAS,EAAE;QAChB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;;AAGxD;;AAEG;AAEH;;;AAGG;IACH,SAAS,GAAA;AACP,QAAA,IACE,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AACpD,cAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AACpB,cAAE,CAAC,IAAI,CAAC,EACV;AACA,YAAA,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;;;AAGxB;;;AAGG;IACH,YAAY,CAAC,YAAoB,CAAC,EAAA;AAChC,QAAA,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC/B,MAAM,SAAS,GAAG,MAAK;YACrB,IAAI,CAAC,cAAc,GAAG,qBAAqB,CAAC,CAAC,SAAS,KAAI;AACxD,gBAAA,MAAM,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,KAAK;AAC7C,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CACvB,OAAO;AACL,qBAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AACpD,0BAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AACpB,0BAAE,CAAC,CAAC,EACR,CAAC,CACF;AACD,gBAAA,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACrB,oBAAA,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC;;AACpC,qBAAA,IACL,OAAO;AACP,qBAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AACpD,0BAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AACpB,0BAAE,CAAC,CAAC,EACN;AACA,oBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ;AAC9B,oBAAA,SAAS,EAAE;;qBACN;AACL,oBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC;AACvB,oBAAA,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC;oBACzC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;;AAEtC,aAAC,CAAC;AACJ,SAAC;AACD,QAAA,SAAS,EAAE;;IAGb,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;AACxB,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;;+GA/LnB,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,cAAc,6ICpB3B,w0FAqEA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,eAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FDjDa,cAAc,EAAA,UAAA,EAAA,CAAA;kBAN1B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EAEN,aAAA,EAAA,iBAAiB,CAAC,IAAI,cACzB,KAAK,EAAA,QAAA,EAAA,w0FAAA,EAAA;kFAQV,KAAK,EAAA,CAAA;sBAAb;gBACS,YAAY,EAAA,CAAA;sBAArB;;;AEpBH;;AAEG;MACU,QAAQ,CAAA;AACnB,IAAA,SAAS,CAAC,KAAU,EAAA;QAClB,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,KAAK;;AAEd,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;;+GALhB,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;6GAAR,QAAQ,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,KAAA,EAAA,CAAA,CAAA;;4FAAR,QAAQ,EAAA,UAAA,EAAA,CAAA;kBARpB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,MAAM;AACZ,oBAAA,IAAI,EAAE,KAAK;AACX,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MCaY,qBAAqB,CAAA;AAmChC,IAAA,WAAA,CAAqB,OAAyB,EAAA;QAAzB,IAAO,CAAA,OAAA,GAAP,OAAO;AAlCX,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,OAAO,EAAQ;AAyBnD;;AAEG;QACH,IAAQ,CAAA,QAAA,GAAuB,CAAC,CAAC;AACjC;;AAEG;QACH,IAAY,CAAA,YAAA,GAA0B,EAAE;;AAGxC,IAAA,eAAe;IAEf,QAAQ,GAAA;QACN,IAAI,CAAC,OAAO,CAAC;AACV,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC;AACjC,aAAA,SAAS,CAAC,CAAC,MAA6B,KAAI;AAC3C,YAAA,IACE,IAAI,CAAC,OAAO,CAAC,aAAa;AAC1B,gBAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM;gBACjC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,EAC1C;gBACA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC;sBAC/C,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC;sBACnC,CAAC;AACL,gBAAA,IAAI,CAAC,SAAS,GAAG,SAAS;gBAC1B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC;sBAChD,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC;sBACnC,CAAC;AACL,gBAAA,IAAI,CAAC,UAAU,GAAG,SAAS;AAC3B,gBAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM,CAC/B,CAAC,KAAK,KACJ,KAAK,CAAC,MAAM;oBACZ,KAAK,CAAC,MAAM,CAAC,QAAQ;AACrB,oBAAA,KAAK,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,CAC7B;;iBACI;AACL,gBAAA,IAAI,CAAC,SAAS,GAAG,CAAC;AAClB,gBAAA,IAAI,CAAC,SAAS;AACZ,oBAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM;wBACjC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,WAAW;AAC/C,gBAAA,IAAI,CAAC,UAAU,GAAG,CAAC;AACnB,gBAAA,IAAI,CAAC,UAAU;AACb,oBAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM;wBACjC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,aAAa;gBACjD,IAAI,CAAC,YAAY,GAAG;qBACjB,MAAM,CACL,CAAC,KAAK,KACJ,KAAK,CAAC,MAAM;oBACZ,KAAK,CAAC,MAAM,CAAC,QAAQ;AACrB,oBAAA,KAAK,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC;AAE7B,qBAAA,OAAO,EAAE;;YAEd,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,CACnC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAC7C;AACD,YAAA,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,OAAO,CAAC;AAC/C,SAAC,CAAC;;AAGN;;;;AAIG;AACH,IAAA,WAAW,CAAC,MAA6B,EAAA;QACvC,MAAM,MAAM,GAA2B,EAAE;AAEzC,QAAA,KAAK,MAAM,QAAQ,IAAI,yBAAyB,EAAE;AAChD,YAAA,IAAI,yBAAyB,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;gBACtD,MAAM,CACJ,yBAAyB,CACvB,QAAkD,CACnD,CACF,GAAG,EAAE;;;AAIV,QAAA,MAAM,CAAC,OAAO,CAAC,CAAC,KAA0B,KAAI;AAC5C,YAAA,IAAI,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE;AACzB,gBAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,OAAO,CAC7D,KAAK,CAAC,MAAM,CAAC,QAAQ,CACtB;gBACD,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAC7D,QAAQ,CACT;gBACD,MAAM,CAAC,cAAc,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC;;AAEvC,SAAC,CAAC;AACF,QAAA,OAAO,MAAM;;IAGf,oBAAoB,CAClB,aAAqC,EACrC,QAAmC,EAAA;AAEnC,QAAA,OAAO,aAAa,CAAC,QAAQ,CAAC;;AAGhC;;;AAGG;AACH,IAAA,YAAY,CAAC,KAAyB,EAAA;AACpC,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;YAC7B,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,EAAE;AACvC,gBAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;;YAEpB;;QAEF,QAAQ,KAAK;AACX,YAAA,KAAK,SAAS;gBACZ,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,EAAE;AACtC,oBAAA,IAAI,CAAC,QAAQ,GAAG,CAAC;;gBAEnB;AACF,YAAA,KAAK,YAAY;AACf,gBAAA,IAAI,CAAC,QAAQ;AACX,oBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,QAAQ;gBAClE;AACF,YAAA,KAAK,YAAY;gBACf,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;AAClC,oBAAA,IAAI,CAAC,QAAQ,GAAG,CAAC;;gBAEnB;AACF,YAAA,KAAK,QAAQ;gBACX,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;AAClC,oBAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;;gBAEpB;;;IAIN,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;AACxB,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;;+GAjKnB,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAL,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,0ECnBlC,gkBAkBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,cAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FDCa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAEV,aAAA,EAAA,iBAAiB,CAAC,IAAI,cACzB,KAAK,EAAA,QAAA,EAAA,gkBAAA,EAAA;;;MEMR,kBAAkB,CAAA;AAC7B,IAAA,OAAO,OAAO,GAAA;QACZ,OAAO;AACL,YAAA,QAAQ,EAAE,kBAAkB;YAC5B,SAAS,EAAE,CAAC,gBAAgB,CAAC;SAC9B;;+GALQ,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,iBAV3B,eAAe;YACf,cAAc;YACd,gBAAgB;YAChB,YAAY;YACZ,QAAQ;YACR,qBAAqB,CAAA,EAAA,OAAA,EAAA,CAEb,YAAY,CAAA,EAAA,OAAA,EAAA,CACZ,qBAAqB,CAAA,EAAA,CAAA,CAAA;AAEpB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAHnB,YAAY,CAAA,EAAA,CAAA,CAAA;;4FAGX,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAZ9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,eAAe;wBACf,cAAc;wBACd,gBAAgB;wBAChB,YAAY;wBACZ,QAAQ;wBACR,qBAAqB;AACtB,qBAAA;oBACD,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,qBAAqB,CAAC;AACjC,iBAAA;;;ACpBD;;AAEG;AACU,MAAA,aAAa,GAAG;AAC3B,IAAA,MAAM,EAAE;AACN,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,WAAW,EAAE,CAAC;AACd,QAAA,aAAa,EAAE,CAAC;AAChB,QAAA,gBAAgB,EAAE,KAAK;AACxB,KAAA;AACD,IAAA,eAAe,EAAE;QACf,IAAI,EAAE,aAAa,CAAC,IAAI;AACxB,QAAA,eAAe,EAAE,IAAI;AACrB,QAAA,OAAO,EAAE,IAAI;AACb,QAAA,YAAY,EAAE,IAAI;AAClB,QAAA,YAAY,EAAE,IAAI;AAClB,QAAA,aAAa,EAAE,GAAG;AAClB,QAAA,cAAc,EAAE,EAAE;QAClB,QAAQ,EAAE,CAAC,CAAC;AACZ,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,SAAS,EAAE,SAAS;AACpB,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,QAAQ,EAAE,WAAwC;AAClD,QAAA,SAAS,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE;AAC3D,KAAA;AACD,IAAA,IAAI,EAAE;AACJ,QAAA,CAAC,aAAa,CAAC,MAAM,GAAG;AACtB,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,YAAY,EAAE,KAAK;AACnB,YAAA,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;gBACxC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE;AAC9C,aAAA;AACD,YAAA,WAAW,EAAE,sBAAsB;YACnC,IAAI,EAAE,aAAa,CAAC,MAAM;AAC3B,SAAA;AACD,QAAA,CAAC,aAAa,CAAC,OAAO,GAAG;AACvB,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,YAAY,EAAE,KAAK;AACnB,YAAA,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;gBACxC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE;AAC9C,aAAA;YACD,IAAI,EAAE,aAAa,CAAC,OAAO;AAC5B,SAAA;AACD,QAAA,CAAC,aAAa,CAAC,OAAO,GAAG;YACvB,IAAI,EAAE,aAAa,CAAC,OAAO;AAC5B,SAAA;AACD,QAAA,CAAC,aAAa,CAAC,KAAK,GAAG;YACrB,IAAI,EAAE,aAAa,CAAC,KAAK;AAC1B,SAAA;AACD,QAAA,CAAC,aAAa,CAAC,OAAO,GAAG;YACvB,IAAI,EAAE,aAAa,CAAC,OAAO;AAC5B,SAAA;AACD,QAAA,CAAC,aAAa,CAAC,IAAI,GAAG;YACpB,IAAI,EAAE,aAAa,CAAC,IAAI;AACzB,SAAA;AACD,QAAA,CAAC,aAAa,CAAC,KAAK,GAAG;AACrB,YAAA,YAAY,EAAE,KAAK;AACnB,YAAA,YAAY,EAAE,KAAK;AACnB,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,eAAe,EAAE,KAAK;YACtB,IAAI,EAAE,aAAa,CAAC,KAAK;AAC1B,SAAA;AACF,KAAA;;;AClEH;;AAEG;;ACFH;;AAEG;;;;"}
|