@acorex/components 18.12.41 → 18.12.43
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.
- package/dialog/lib/dialog.service.d.ts +2 -2
- package/esm2022/dialog/lib/dialog.service.mjs +26 -24
- package/esm2022/notification/lib/notification.service.mjs +60 -58
- package/esm2022/toast/lib/toast.service.mjs +65 -64
- package/esm2022/wysiwyg/lib/wysiwyg/wysiwyg-container/wysiwyg-container.component.mjs +7 -3
- package/fesm2022/acorex-components-dialog.mjs +25 -23
- package/fesm2022/acorex-components-dialog.mjs.map +1 -1
- package/fesm2022/acorex-components-notification.mjs +59 -58
- package/fesm2022/acorex-components-notification.mjs.map +1 -1
- package/fesm2022/acorex-components-toast.mjs +63 -63
- package/fesm2022/acorex-components-toast.mjs.map +1 -1
- package/fesm2022/acorex-components-wysiwyg.mjs +6 -2
- package/fesm2022/acorex-components-wysiwyg.mjs.map +1 -1
- package/notification/lib/notification.service.d.ts +3 -3
- package/package.json +1 -1
- package/toast/lib/toast.service.d.ts +3 -3
- package/wysiwyg/lib/wysiwyg/wysiwyg-container/wysiwyg-container.component.d.ts +1 -0
@@ -4,7 +4,7 @@ import { DIALOG_DATA, Dialog, DialogModule } from '@angular/cdk/dialog';
|
|
4
4
|
import * as i2 from '@angular/cdk/portal';
|
5
5
|
import { TemplatePortal, ComponentPortal, PortalModule } from '@angular/cdk/portal';
|
6
6
|
import * as i0 from '@angular/core';
|
7
|
-
import { TemplateRef, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, HostBinding, InjectionToken, inject,
|
7
|
+
import { TemplateRef, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, HostBinding, InjectionToken, inject, Injectable, NgModule } from '@angular/core';
|
8
8
|
import * as i3 from '@acorex/components/button';
|
9
9
|
import { AXButtonModule } from '@acorex/components/button';
|
10
10
|
import * as i4 from '@acorex/components/loading';
|
@@ -14,7 +14,7 @@ import { AXDecoratorModule } from '@acorex/components/decorators';
|
|
14
14
|
import * as i6 from '@angular/common';
|
15
15
|
import { CommonModule } from '@angular/common';
|
16
16
|
import * as i7 from '@acorex/core/translation';
|
17
|
-
import { AXTranslationModule } from '@acorex/core/translation';
|
17
|
+
import { AXTranslationService, AXTranslationModule } from '@acorex/core/translation';
|
18
18
|
import { GlobalPositionStrategy } from '@angular/cdk/overlay';
|
19
19
|
|
20
20
|
/**
|
@@ -138,39 +138,32 @@ function notificationConfig(config = {}) {
|
|
138
138
|
class AXNotificationService {
|
139
139
|
constructor() {
|
140
140
|
this.dialog = inject(Dialog);
|
141
|
+
this.translationService = inject(AXTranslationService);
|
141
142
|
this.defaultConfig = inject(AX_NOTIFICATION_CONFIG);
|
142
|
-
this.activeNotifications =
|
143
|
-
this.reservedNotifications =
|
144
|
-
this.notificationCounterElement =
|
145
|
-
this.moreNotificationsColor =
|
146
|
-
this.moreNotificationsLocation =
|
147
|
-
this.reserveCounter =
|
148
|
-
this.#effect = effect(() => {
|
149
|
-
if (this.defaultConfig.limit <= 0)
|
150
|
-
return;
|
151
|
-
this.handleShowReservedNotification();
|
152
|
-
this.handleShowReservedNotificationCounter();
|
153
|
-
this.handleReserveCounter();
|
154
|
-
}, { allowSignalWrites: true });
|
143
|
+
this.activeNotifications = [];
|
144
|
+
this.reservedNotifications = [];
|
145
|
+
this.notificationCounterElement = null;
|
146
|
+
this.moreNotificationsColor = 'primary';
|
147
|
+
this.moreNotificationsLocation = 'bottom-center';
|
148
|
+
this.reserveCounter = 0;
|
155
149
|
}
|
156
|
-
#effect;
|
157
150
|
show(config) {
|
158
|
-
config =
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
},
|
171
|
-
};
|
172
|
-
}
|
151
|
+
config = { ...this.defaultConfig, ...config };
|
152
|
+
this.moreNotificationsColor = config.color;
|
153
|
+
this.moreNotificationsLocation = config.location;
|
154
|
+
if (this.defaultConfig.limit > 0 && this.activeNotifications.length >= this.defaultConfig.limit) {
|
155
|
+
const reservedRef = {
|
156
|
+
close: () => {
|
157
|
+
console.warn('Reserved notification cannot be closed until it is displayed.');
|
158
|
+
},
|
159
|
+
};
|
160
|
+
this.reservedNotifications.push({ config, reservedRef });
|
161
|
+
this.handleReservedNotificationCounter();
|
162
|
+
return reservedRef;
|
173
163
|
}
|
164
|
+
return this.displayNotification(config);
|
165
|
+
}
|
166
|
+
displayNotification(config) {
|
174
167
|
const gap = this.defaultConfig.gap;
|
175
168
|
const pos = this.getPosition(config.location) + gap + 'px';
|
176
169
|
const positionStrategy = this.getPositionStrategy(new GlobalPositionStrategy(), config.location, pos, gap);
|
@@ -186,10 +179,13 @@ class AXNotificationService {
|
|
186
179
|
panelClass: ['ax-animate-animated', 'ax-animate-fadeIn', 'ax-animate-faster'],
|
187
180
|
positionStrategy,
|
188
181
|
});
|
189
|
-
this.activeNotifications.
|
182
|
+
this.activeNotifications.push(dialogRef.id);
|
183
|
+
this.handleReservedNotificationCounter();
|
190
184
|
const notificationRef = dialogRef.componentInstance;
|
191
185
|
dialogRef.closed.subscribe(() => {
|
192
|
-
this.activeNotifications
|
186
|
+
this.activeNotifications = this.activeNotifications.filter((id) => id !== dialogRef.id);
|
187
|
+
this.handleShowReservedNotification();
|
188
|
+
this.handleReservedNotificationCounter();
|
193
189
|
setTimeout(() => {
|
194
190
|
this.reposition(config.location, gap);
|
195
191
|
}, 0);
|
@@ -202,40 +198,45 @@ class AXNotificationService {
|
|
202
198
|
}
|
203
199
|
hideAll() {
|
204
200
|
this.dialog.closeAll();
|
201
|
+
this.reserveCounter = 0;
|
202
|
+
this.reservedNotifications = [];
|
203
|
+
this.activeNotifications = [];
|
204
|
+
this.handleReservedNotificationCounter();
|
205
205
|
}
|
206
206
|
handleShowReservedNotification() {
|
207
|
-
if (this.activeNotifications
|
208
|
-
return;
|
209
|
-
if (!this.reservedNotifications().length)
|
207
|
+
if (this.activeNotifications.length > this.defaultConfig.limit - 1)
|
210
208
|
return;
|
211
|
-
|
212
|
-
this.reservedNotifications.update((value) => {
|
213
|
-
const arr = [...value];
|
214
|
-
arr.shift();
|
215
|
-
return arr;
|
216
|
-
});
|
217
|
-
}
|
218
|
-
handleShowReservedNotificationCounter() {
|
219
|
-
if (this.reservedNotifications().length === this.reserveCounter())
|
209
|
+
if (!this.reservedNotifications.length)
|
220
210
|
return;
|
221
|
-
this.
|
222
|
-
|
223
|
-
|
224
|
-
|
211
|
+
const { config, reservedRef } = this.reservedNotifications.shift();
|
212
|
+
const displayedRef = this.displayNotification(config);
|
213
|
+
this.handleReservedNotificationCounter();
|
214
|
+
reservedRef.close = displayedRef.close;
|
225
215
|
}
|
226
|
-
|
227
|
-
|
216
|
+
handleReservedNotificationCounter() {
|
217
|
+
const reservedCount = this.reservedNotifications.length;
|
218
|
+
if (reservedCount === this.reserveCounter)
|
228
219
|
return;
|
229
|
-
|
220
|
+
this.reserveCounter = reservedCount;
|
221
|
+
if (reservedCount === 0 && this.notificationCounterElement !== null) {
|
222
|
+
this.notificationCounterElement.close();
|
230
223
|
return;
|
231
|
-
|
224
|
+
}
|
225
|
+
if (reservedCount > 0) {
|
226
|
+
if (this.notificationCounterElement !== null) {
|
227
|
+
this.notificationCounterElement.close();
|
228
|
+
}
|
229
|
+
this.createReservedCounterToast();
|
230
|
+
}
|
232
231
|
}
|
233
|
-
createReservedCounterToast() {
|
232
|
+
async createReservedCounterToast() {
|
234
233
|
const opt = {
|
235
234
|
closeButton: false,
|
236
|
-
color: this.moreNotificationsColor
|
237
|
-
location: this.moreNotificationsLocation
|
238
|
-
title:
|
235
|
+
color: this.moreNotificationsColor,
|
236
|
+
location: this.moreNotificationsLocation,
|
237
|
+
title: await this.translationService.translateAsync('more-notification', {
|
238
|
+
params: { number: this.reserveCounter },
|
239
|
+
}),
|
239
240
|
timeOutProgress: false,
|
240
241
|
};
|
241
242
|
const gap = this.defaultConfig.gap;
|
@@ -253,7 +254,7 @@ class AXNotificationService {
|
|
253
254
|
panelClass: ['ax-animate-animated', 'ax-animate-fadeIn', 'ax-animate-faster'],
|
254
255
|
positionStrategy,
|
255
256
|
});
|
256
|
-
this.notificationCounterElement
|
257
|
+
this.notificationCounterElement = dialogRef.componentInstance;
|
257
258
|
}
|
258
259
|
reposition(notificationLocation, gap) {
|
259
260
|
const list = this.dialog.openDialogs
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"acorex-components-notification.mjs","sources":["../../../../libs/components/notification/src/lib/notification.component.ts","../../../../libs/components/notification/src/lib/notification.component.html","../../../../libs/components/notification/src/lib/notification.config.ts","../../../../libs/components/notification/src/lib/notification.service.ts","../../../../libs/components/notification/src/lib/notification.module.ts","../../../../libs/components/notification/src/acorex-components-notification.ts"],"sourcesContent":["import { AXClosbaleComponent, AXComponentCloseEvent, MXBaseComponent } from '@acorex/components/common';\nimport { DIALOG_DATA, DialogRef } from '@angular/cdk/dialog';\nimport { ComponentPortal, ComponentType, Portal, TemplatePortal } from '@angular/cdk/portal';\nimport {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Inject,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { AXNotificationButtonItem, AXNotificationData } from './notification.class';\n\n/**\n * The Button is a component which detects user interaction and triggers a corresponding event\n *\n * @category Components\n */\n@Component({\n selector: 'ax-notification',\n templateUrl: './notification.component.html',\n styleUrls: ['./notification.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: AXClosbaleComponent, useExisting: AXNotificationComponent }],\n})\nexport class AXNotificationComponent extends MXBaseComponent {\n /** @ignore */\n _selectedPortal: Portal<unknown>;\n\n /** @ignore */\n _icon: string;\n\n /**\n * @ignore\n */\n constructor(\n @Inject(DIALOG_DATA)\n public config: AXNotificationData,\n public dialogRef: DialogRef<AXComponentCloseEvent>,\n ) {\n super();\n }\n\n /** @ignore */\n override ngOnInit() {\n super.ngOnInit();\n this._initContent();\n this._initIcon();\n this._handleTimeOut();\n }\n\n /** @ignore */\n private _handleTimeOut() {\n if (this.config.timeOut) {\n setTimeout(() => {\n this.close();\n }, this.config.timeOut);\n }\n }\n\n /** @ignore */\n private _initContent() {\n if (this.config.content instanceof TemplateRef) {\n this._selectedPortal = new TemplatePortal(\n this.config.content as TemplateRef<unknown>,\n this.getViewContainer(),\n );\n this.cdr.markForCheck();\n } else if (typeof this.config.content === 'function') {\n this._selectedPortal = new ComponentPortal(this.config.content as ComponentType<unknown>);\n this.cdr.markForCheck();\n }\n }\n\n /** @ignore */\n private _initIcon() {\n if (!this.config.icon) {\n switch (this.config.color) {\n case 'success':\n this._icon = 'ax-icon ax-icon-check-circle';\n break;\n case 'danger':\n this._icon = 'ax-icon ax-icon-error';\n break;\n case 'warning':\n this._icon = 'ax-icon ax-icon-warning';\n break;\n case 'info':\n this._icon = 'ax-icon ax-icon-info';\n break;\n default:\n this._icon = this.config.icon || 'ax-icon ax-icon-check-circle';\n break;\n }\n } else {\n this._icon = this.config.icon;\n }\n }\n\n /** @ignore */\n protected _handleButtonClick(button: AXNotificationButtonItem) {\n if (button.onClick) {\n button.onClick({ source: button });\n }\n }\n\n /** @ignore */\n @HostBinding('class')\n private get __hostClass(): string {\n return `ax-${this.config.color}`;\n }\n\n /**\n * Closes the dialog and provides the component and HTML element for reference.\n */\n close() {\n this.dialogRef.close({\n component: this,\n htmlElement: this.getHostElement(),\n });\n }\n}\n","<span class=\"ax-notification-icon ax-icon-solid {{ _icon }}\"></span>\n<div class=\"ax-notification-content\">\n <div class=\"ax-notification-title\">{{ config.title | translate | async }}</div>\n @if(_selectedPortal){\n <ng-template [cdkPortalOutlet]=\"_selectedPortal\"></ng-template>\n } @else{\n <div>{{ config.content }}</div>\n }\n\n @if(config.buttons?.length){\n <div class=\"ax-notification-buttons\">\n @for(button of config.buttons; track $index){\n <ax-button class=\"ax-xs\" [text]=\"button.text | translate | async\" [color]=\"button.color\" [look]=\"button.look\"\n [disabled]=\"button.disabled\" (onClick)=\"_handleButtonClick(button)\">\n @if(button.loading){\n <ax-loading></ax-loading>\n }\n </ax-button>\n }\n </div>\n }\n\n</div>\n@if(config.closeButton){\n<ax-close-button></ax-close-button>\n}\n@if(config.timeOutProgress && config.timeOut){\n<div class=\"ax-notification-progress\" [style.animation-duration.ms]=\"config.timeOut\"></div>\n}","import { AXLocation } from '@acorex/components/common';\nimport { InjectionToken } from '@angular/core';\n\nexport interface AXNotificationConfig {\n gap: number;\n timeOut: number;\n timeOutProgress: boolean;\n location: AXLocation;\n closeButton: boolean;\n limit: number;\n}\n\nexport const AX_NOTIFICATION_CONFIG = new InjectionToken<AXNotificationConfig>('AX_NOTIFICATION_CONFIG', {\n providedIn: 'root',\n factory: () => AXNotificationDefaultConfig,\n});\n\nexport const AXNotificationDefaultConfig: AXNotificationConfig = {\n gap: 5,\n timeOut: 2500,\n timeOutProgress: true,\n closeButton: true,\n location: 'top-end',\n limit: 3,\n};\n\nexport type PartialNotificationConfig = Partial<AXNotificationConfig>;\n\nexport function notificationConfig(config: PartialNotificationConfig = {}): AXNotificationConfig {\n const result = {\n ...AXNotificationDefaultConfig,\n ...config,\n };\n return result;\n}\n","import { AXLocation, AXStyleColorType } from '@acorex/components/common';\nimport { Dialog } from '@angular/cdk/dialog';\nimport { GlobalPositionStrategy } from '@angular/cdk/overlay';\nimport { Injectable, effect, inject, signal } from '@angular/core';\nimport {\n AXNotificationOptions as AXNotificationDisplayConfig,\n AXNotificationRef,\n} from './notification.class';\nimport { AXNotificationComponent } from './notification.component';\nimport { AXNotificationConfig, AX_NOTIFICATION_CONFIG } from './notification.config';\n\n@Injectable()\nexport class AXNotificationService {\n private dialog: Dialog = inject(Dialog);\n private defaultConfig: AXNotificationConfig = inject(AX_NOTIFICATION_CONFIG);\n private activeNotifications = signal<string[]>([]);\n private reservedNotifications = signal<AXNotificationDisplayConfig[]>([]);\n private notificationCounterElement = signal<AXNotificationComponent | null>(null);\n private moreNotificationsColor = signal<AXStyleColorType>('primary');\n private moreNotificationsLocation = signal<AXLocation>('bottom-center');\n private reserveCounter = signal(0);\n\n #effect = effect(\n () => {\n if (this.defaultConfig.limit <= 0) return;\n this.handleShowReservedNotification();\n this.handleShowReservedNotificationCounter();\n this.handleReserveCounter();\n },\n { allowSignalWrites: true },\n );\n\n show(config: AXNotificationDisplayConfig): AXNotificationRef {\n config = Object.assign(\n {\n closeButton: true,\n location: this.defaultConfig.location,\n },\n config,\n );\n this.moreNotificationsColor.set(config.color);\n this.moreNotificationsLocation.set(config.location);\n\n if (this.defaultConfig.limit > 0) {\n if (this.activeNotifications().length >= this.defaultConfig.limit) {\n this.reservedNotifications.update((value) => [...value, config]);\n return {\n close: () => {\n //TODO close reserved notification\n },\n };\n }\n }\n\n const gap = this.defaultConfig.gap;\n const pos = this.getPosition(config.location) + gap + 'px';\n const positionStrategy = this.getPositionStrategy(\n new GlobalPositionStrategy(),\n config.location,\n pos,\n gap,\n );\n const dialogRef = this.dialog.open(AXNotificationComponent, {\n data: config,\n autoFocus: '__no_element__',\n restoreFocus: false,\n role: 'dialog',\n ariaModal: true,\n closeOnNavigation: true,\n closeOnDestroy: true,\n hasBackdrop: false,\n panelClass: ['ax-animate-animated', 'ax-animate-fadeIn', 'ax-animate-faster'],\n positionStrategy,\n });\n\n this.activeNotifications.update((value) => [...value, dialogRef.id]);\n\n const notificationRef = dialogRef.componentInstance as AXNotificationComponent;\n dialogRef.closed.subscribe(() => {\n this.activeNotifications.update((value) => [...value].filter((dialogID) => dialogID !== dialogRef.id));\n setTimeout(() => {\n this.reposition(config.location, gap);\n }, 0);\n });\n\n return {\n close: () => {\n notificationRef.close();\n },\n };\n }\n\n hideAll() {\n this.dialog.closeAll();\n }\n\n private handleShowReservedNotification() {\n if (this.activeNotifications().length > this.defaultConfig.limit - 1) return;\n if (!this.reservedNotifications().length) return;\n\n this.show(this.reservedNotifications()[0]);\n this.reservedNotifications.update((value) => {\n const arr = [...value];\n arr.shift();\n return arr;\n });\n }\n\n private handleShowReservedNotificationCounter() {\n if (this.reservedNotifications().length === this.reserveCounter()) return;\n\n this.reserveCounter.set(this.reservedNotifications().length);\n\n if (this.notificationCounterElement() !== null) this.notificationCounterElement().close();\n\n this.createReservedCounterToast();\n }\n\n private handleReserveCounter() {\n if (this.reserveCounter() !== 0) return;\n\n if (this.notificationCounterElement() === null) return;\n\n this.notificationCounterElement().close();\n }\n\n private createReservedCounterToast() {\n const opt: AXNotificationDisplayConfig = {\n closeButton: false,\n color: this.moreNotificationsColor(),\n location: this.moreNotificationsLocation(),\n title: `And ${this.reserveCounter()} more...`,\n timeOutProgress: false,\n };\n const gap = this.defaultConfig.gap;\n const pos = this.getPosition(opt.location) + gap + 'px';\n const positionStrategy = this.getPositionStrategy(new GlobalPositionStrategy(), opt.location, pos, gap);\n const dialogRef = this.dialog.open(AXNotificationComponent, {\n data: opt,\n autoFocus: '__no_element__',\n restoreFocus: true,\n role: 'dialog',\n ariaModal: true,\n closeOnNavigation: true,\n closeOnDestroy: true,\n hasBackdrop: false,\n panelClass: ['ax-animate-animated', 'ax-animate-fadeIn', 'ax-animate-faster'],\n positionStrategy,\n });\n this.notificationCounterElement.set(dialogRef.componentInstance as AXNotificationComponent);\n }\n\n private reposition(notificationLocation: AXLocation, gap: number): void {\n const list = this.dialog.openDialogs\n .map((c) => c.componentInstance as AXNotificationComponent)\n .filter((c) => c.config?.location == notificationLocation);\n list.forEach((element, index) => {\n const pos = this.getRepositionPosition(index, gap, list, notificationLocation);\n\n this.getPositionStrategy(\n element.dialogRef.config.positionStrategy as GlobalPositionStrategy,\n notificationLocation,\n pos,\n gap,\n ).apply();\n });\n }\n\n private getRepositionPosition(\n index: number,\n gap: number,\n list: AXNotificationComponent[],\n notificationLocation: string,\n ) {\n if (index === 0) return gap + 'px';\n const previouseElement = list[index - 1];\n if (notificationLocation.split('-')[0] == 'bottom') {\n return window.innerHeight - previouseElement.getHostElement().offsetTop + gap + 'px';\n }\n return (\n previouseElement.getHostElement().offsetTop +\n previouseElement.getHostElement().offsetHeight +\n gap +\n 'px'\n );\n }\n\n private getPosition(location: string) {\n const list = this.dialog.openDialogs\n .map((c) => c.componentInstance as AXNotificationComponent)\n .filter((c) => c.config.location == location);\n if (list.length == 0) return 0;\n if (location.split('-')[0] == 'bottom') {\n return window.innerHeight - list[list.length - 1].getHostElement().offsetTop;\n }\n return (\n list[list.length - 1].getHostElement().offsetTop + list[list.length - 1].getHostElement().offsetHeight\n );\n }\n\n private getPositionStrategy(\n positionStrategy: GlobalPositionStrategy,\n location: AXLocation,\n pos: string,\n gap: number,\n ) {\n switch (location) {\n case 'bottom-center':\n return positionStrategy.bottom(pos).centerHorizontally();\n break;\n case 'bottom-end':\n return positionStrategy.bottom(pos).right(gap + 'px');\n break;\n case 'bottom-start':\n return positionStrategy.bottom(pos).left(gap + 'px');\n break;\n case 'top-center':\n return positionStrategy.top(pos).centerHorizontally();\n break;\n case 'top-end':\n return positionStrategy.top(pos).right(gap + 'px');\n break;\n case 'top-start':\n return positionStrategy.top(pos).left(gap + 'px');\n break;\n case 'center-start':\n return positionStrategy.centerVertically().left(gap + 'px');\n break;\n case 'center-end':\n return positionStrategy.centerVertically().right(gap + 'px');\n break;\n }\n }\n}\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { DialogModule } from '@angular/cdk/dialog';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXNotificationComponent } from './notification.component';\nimport { AXNotificationService } from './notification.service';\n\nconst COMPONENT = [AXNotificationComponent];\nconst MODULES = [CommonModule, PortalModule, AXButtonModule, DialogModule, AXLoadingModule, AXDecoratorModule, AXTranslationModule];\n\n@NgModule({\n declarations: [...COMPONENT],\n imports: [...MODULES],\n exports: [...COMPONENT],\n providers: [AXNotificationService],\n})\nexport class AXNotificationModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAaA;;;;AAIG;AASG,MAAO,uBAAwB,SAAQ,eAAe,CAAA;AAO1D;;AAEG;IACH,WAES,CAAA,MAA0B,EAC1B,SAA2C,EAAA;AAElD,QAAA,KAAK,EAAE;QAHA,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAS,CAAA,SAAA,GAAT,SAAS;;;IAMT,QAAQ,GAAA;QACf,KAAK,CAAC,QAAQ,EAAE;QAChB,IAAI,CAAC,YAAY,EAAE;QACnB,IAAI,CAAC,SAAS,EAAE;QAChB,IAAI,CAAC,cAAc,EAAE;;;IAIf,cAAc,GAAA;AACpB,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;YACvB,UAAU,CAAC,MAAK;gBACd,IAAI,CAAC,KAAK,EAAE;AACd,aAAC,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;;;;IAKnB,YAAY,GAAA;QAClB,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,YAAY,WAAW,EAAE;AAC9C,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,cAAc,CACvC,IAAI,CAAC,MAAM,CAAC,OAA+B,EAC3C,IAAI,CAAC,gBAAgB,EAAE,CACxB;AACD,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;;aAClB,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,UAAU,EAAE;AACpD,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,OAAiC,CAAC;AACzF,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;;;;IAKnB,SAAS,GAAA;AACf,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;AACrB,YAAA,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK;AACvB,gBAAA,KAAK,SAAS;AACZ,oBAAA,IAAI,CAAC,KAAK,GAAG,8BAA8B;oBAC3C;AACF,gBAAA,KAAK,QAAQ;AACX,oBAAA,IAAI,CAAC,KAAK,GAAG,uBAAuB;oBACpC;AACF,gBAAA,KAAK,SAAS;AACZ,oBAAA,IAAI,CAAC,KAAK,GAAG,yBAAyB;oBACtC;AACF,gBAAA,KAAK,MAAM;AACT,oBAAA,IAAI,CAAC,KAAK,GAAG,sBAAsB;oBACnC;AACF,gBAAA;oBACE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,8BAA8B;oBAC/D;;;aAEC;YACL,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI;;;;AAKvB,IAAA,kBAAkB,CAAC,MAAgC,EAAA;AAC3D,QAAA,IAAI,MAAM,CAAC,OAAO,EAAE;YAClB,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;;;;AAKtC,IAAA,IACY,WAAW,GAAA;AACrB,QAAA,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;;AAGlC;;AAEG;IACH,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AACnB,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,WAAW,EAAE,IAAI,CAAC,cAAc,EAAE;AACnC,SAAA,CAAC;;AA9FO,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,kBAWxB,WAAW,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAXV,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAFvB,QAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,SAAA,EAAA,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,uBAAuB,EAAE,CAAC,iDCxBrF,i/BA4BC,EAAA,MAAA,EAAA,CAAA,k1HAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,YAAA,EAAA,UAAA,EAAA,MAAA,EAAA,cAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,+BAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FDFY,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBARnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,mBAGV,uBAAuB,CAAC,MAAM,EAChC,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,SAAA,EAC1B,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAA,uBAAyB,EAAE,CAAC,EAAA,QAAA,EAAA,i/BAAA,EAAA,MAAA,EAAA,CAAA,k1HAAA,CAAA,EAAA;;0BAahF,MAAM;2BAAC,WAAW;iEAwET,WAAW,EAAA,CAAA;sBADtB,WAAW;uBAAC,OAAO;;;MEhGT,sBAAsB,GAAG,IAAI,cAAc,CAAuB,wBAAwB,EAAE;AACvG,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,OAAO,EAAE,MAAM,2BAA2B;AAC3C,CAAA;AAEY,MAAA,2BAA2B,GAAyB;AAC/D,IAAA,GAAG,EAAE,CAAC;AACN,IAAA,OAAO,EAAE,IAAI;AACb,IAAA,eAAe,EAAE,IAAI;AACrB,IAAA,WAAW,EAAE,IAAI;AACjB,IAAA,QAAQ,EAAE,SAAS;AACnB,IAAA,KAAK,EAAE,CAAC;;AAKM,SAAA,kBAAkB,CAAC,MAAA,GAAoC,EAAE,EAAA;AACvE,IAAA,MAAM,MAAM,GAAG;AACb,QAAA,GAAG,2BAA2B;AAC9B,QAAA,GAAG,MAAM;KACV;AACD,IAAA,OAAO,MAAM;AACf;;MCtBa,qBAAqB,CAAA;AADlC,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,MAAM,GAAW,MAAM,CAAC,MAAM,CAAC;AAC/B,QAAA,IAAA,CAAA,aAAa,GAAyB,MAAM,CAAC,sBAAsB,CAAC;AACpE,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAW,EAAE,CAAC;AAC1C,QAAA,IAAA,CAAA,qBAAqB,GAAG,MAAM,CAAgC,EAAE,CAAC;AACjE,QAAA,IAAA,CAAA,0BAA0B,GAAG,MAAM,CAAiC,IAAI,CAAC;AACzE,QAAA,IAAA,CAAA,sBAAsB,GAAG,MAAM,CAAmB,SAAS,CAAC;AAC5D,QAAA,IAAA,CAAA,yBAAyB,GAAG,MAAM,CAAa,eAAe,CAAC;AAC/D,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,CAAC,CAAC;AAElC,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CACd,MAAK;AACH,YAAA,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC;gBAAE;YACnC,IAAI,CAAC,8BAA8B,EAAE;YACrC,IAAI,CAAC,qCAAqC,EAAE;YAC5C,IAAI,CAAC,oBAAoB,EAAE;AAC7B,SAAC,EACD,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAC5B;AA2MF;AAnNC,IAAA,OAAO;AAUP,IAAA,IAAI,CAAC,MAAmC,EAAA;AACtC,QAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CACpB;AACE,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ;SACtC,EACD,MAAM,CACP;QACD,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;QAC7C,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;QAEnD,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,CAAC,EAAE;AAChC,YAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;AACjE,gBAAA,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,GAAG,KAAK,EAAE,MAAM,CAAC,CAAC;gBAChE,OAAO;oBACL,KAAK,EAAE,MAAK;;qBAEX;iBACF;;;AAIL,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG;AAClC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,GAAG,GAAG,IAAI;AAC1D,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,CAC/C,IAAI,sBAAsB,EAAE,EAC5B,MAAM,CAAC,QAAQ,EACf,GAAG,EACH,GAAG,CACJ;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE;AAC1D,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,SAAS,EAAE,gBAAgB;AAC3B,YAAA,YAAY,EAAE,KAAK;AACnB,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,iBAAiB,EAAE,IAAI;AACvB,YAAA,cAAc,EAAE,IAAI;AACpB,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,UAAU,EAAE,CAAC,qBAAqB,EAAE,mBAAmB,EAAE,mBAAmB,CAAC;YAC7E,gBAAgB;AACjB,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,GAAG,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;AAEpE,QAAA,MAAM,eAAe,GAAG,SAAS,CAAC,iBAA4C;AAC9E,QAAA,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,MAAK;AAC9B,YAAA,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,KAAK,QAAQ,KAAK,SAAS,CAAC,EAAE,CAAC,CAAC;YACtG,UAAU,CAAC,MAAK;gBACd,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC;aACtC,EAAE,CAAC,CAAC;AACP,SAAC,CAAC;QAEF,OAAO;YACL,KAAK,EAAE,MAAK;gBACV,eAAe,CAAC,KAAK,EAAE;aACxB;SACF;;IAGH,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;;IAGhB,8BAA8B,GAAA;AACpC,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,CAAC;YAAE;AACtE,QAAA,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,MAAM;YAAE;QAE1C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1C,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,KAAK,KAAI;AAC1C,YAAA,MAAM,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;YACtB,GAAG,CAAC,KAAK,EAAE;AACX,YAAA,OAAO,GAAG;AACZ,SAAC,CAAC;;IAGI,qCAAqC,GAAA;QAC3C,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,cAAc,EAAE;YAAE;AAEnE,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;AAE5D,QAAA,IAAI,IAAI,CAAC,0BAA0B,EAAE,KAAK,IAAI;AAAE,YAAA,IAAI,CAAC,0BAA0B,EAAE,CAAC,KAAK,EAAE;QAEzF,IAAI,CAAC,0BAA0B,EAAE;;IAG3B,oBAAoB,GAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC;YAAE;AAEjC,QAAA,IAAI,IAAI,CAAC,0BAA0B,EAAE,KAAK,IAAI;YAAE;AAEhD,QAAA,IAAI,CAAC,0BAA0B,EAAE,CAAC,KAAK,EAAE;;IAGnC,0BAA0B,GAAA;AAChC,QAAA,MAAM,GAAG,GAAgC;AACvC,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,KAAK,EAAE,IAAI,CAAC,sBAAsB,EAAE;AACpC,YAAA,QAAQ,EAAE,IAAI,CAAC,yBAAyB,EAAE;AAC1C,YAAA,KAAK,EAAE,CAAO,IAAA,EAAA,IAAI,CAAC,cAAc,EAAE,CAAU,QAAA,CAAA;AAC7C,YAAA,eAAe,EAAE,KAAK;SACvB;AACD,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG;AAClC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,GAAG,GAAG,IAAI;AACvD,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,sBAAsB,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,CAAC;QACvG,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE;AAC1D,YAAA,IAAI,EAAE,GAAG;AACT,YAAA,SAAS,EAAE,gBAAgB;AAC3B,YAAA,YAAY,EAAE,IAAI;AAClB,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,iBAAiB,EAAE,IAAI;AACvB,YAAA,cAAc,EAAE,IAAI;AACpB,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,UAAU,EAAE,CAAC,qBAAqB,EAAE,mBAAmB,EAAE,mBAAmB,CAAC;YAC7E,gBAAgB;AACjB,SAAA,CAAC;QACF,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,SAAS,CAAC,iBAA4C,CAAC;;IAGrF,UAAU,CAAC,oBAAgC,EAAE,GAAW,EAAA;AAC9D,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;aACtB,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,iBAA4C;AACzD,aAAA,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,QAAQ,IAAI,oBAAoB,CAAC;QAC5D,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,KAAI;AAC9B,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,oBAAoB,CAAC;YAE9E,IAAI,CAAC,mBAAmB,CACtB,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,gBAA0C,EACnE,oBAAoB,EACpB,GAAG,EACH,GAAG,CACJ,CAAC,KAAK,EAAE;AACX,SAAC,CAAC;;AAGI,IAAA,qBAAqB,CAC3B,KAAa,EACb,GAAW,EACX,IAA+B,EAC/B,oBAA4B,EAAA;QAE5B,IAAI,KAAK,KAAK,CAAC;YAAE,OAAO,GAAG,GAAG,IAAI;QAClC,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AACxC,QAAA,IAAI,oBAAoB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE;AAClD,YAAA,OAAO,MAAM,CAAC,WAAW,GAAG,gBAAgB,CAAC,cAAc,EAAE,CAAC,SAAS,GAAG,GAAG,GAAG,IAAI;;AAEtF,QAAA,QACE,gBAAgB,CAAC,cAAc,EAAE,CAAC,SAAS;AAC3C,YAAA,gBAAgB,CAAC,cAAc,EAAE,CAAC,YAAY;YAC9C,GAAG;AACH,YAAA,IAAI;;AAIA,IAAA,WAAW,CAAC,QAAgB,EAAA;AAClC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;aACtB,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,iBAA4C;AACzD,aAAA,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,QAAQ,CAAC;AAC/C,QAAA,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC;AAAE,YAAA,OAAO,CAAC;AAC9B,QAAA,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE;AACtC,YAAA,OAAO,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,SAAS;;AAE9E,QAAA,QACE,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,YAAY;;AAIlG,IAAA,mBAAmB,CACzB,gBAAwC,EACxC,QAAoB,EACpB,GAAW,EACX,GAAW,EAAA;QAEX,QAAQ,QAAQ;AACd,YAAA,KAAK,eAAe;gBAClB,OAAO,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,kBAAkB,EAAE;gBACxD;AACF,YAAA,KAAK,YAAY;AACf,gBAAA,OAAO,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;gBACrD;AACF,YAAA,KAAK,cAAc;AACjB,gBAAA,OAAO,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;gBACpD;AACF,YAAA,KAAK,YAAY;gBACf,OAAO,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,kBAAkB,EAAE;gBACrD;AACF,YAAA,KAAK,SAAS;AACZ,gBAAA,OAAO,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;gBAClD;AACF,YAAA,KAAK,WAAW;AACd,gBAAA,OAAO,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;gBACjD;AACF,YAAA,KAAK,cAAc;gBACjB,OAAO,gBAAgB,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;gBAC3D;AACF,YAAA,KAAK,YAAY;gBACf,OAAO,gBAAgB,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;gBAC5D;;;8GA1NK,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAArB,qBAAqB,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC;;;ACAD,MAAM,SAAS,GAAG,CAAC,uBAAuB,CAAC;AAC3C,MAAM,OAAO,GAAG,CAAC,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,mBAAmB,CAAC;MAQtH,oBAAoB,CAAA;8GAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,iBATd,uBAAuB,CAAA,EAAA,OAAA,EAAA,CACzB,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,mBAAmB,aAD/G,uBAAuB,CAAA,EAAA,CAAA,CAAA;AAS7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,EAFpB,SAAA,EAAA,CAAC,qBAAqB,CAAC,YAFrB,OAAO,CAAA,EAAA,CAAA,CAAA;;2FAIT,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAC,GAAG,SAAS,CAAC;AAC5B,oBAAA,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC;AACrB,oBAAA,OAAO,EAAE,CAAC,GAAG,SAAS,CAAC;oBACvB,SAAS,EAAE,CAAC,qBAAqB,CAAC;AACnC,iBAAA;;;ACnBD;;AAEG;;;;"}
|
1
|
+
{"version":3,"file":"acorex-components-notification.mjs","sources":["../../../../libs/components/notification/src/lib/notification.component.ts","../../../../libs/components/notification/src/lib/notification.component.html","../../../../libs/components/notification/src/lib/notification.config.ts","../../../../libs/components/notification/src/lib/notification.service.ts","../../../../libs/components/notification/src/lib/notification.module.ts","../../../../libs/components/notification/src/acorex-components-notification.ts"],"sourcesContent":["import { AXClosbaleComponent, AXComponentCloseEvent, MXBaseComponent } from '@acorex/components/common';\nimport { DIALOG_DATA, DialogRef } from '@angular/cdk/dialog';\nimport { ComponentPortal, ComponentType, Portal, TemplatePortal } from '@angular/cdk/portal';\nimport {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Inject,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { AXNotificationButtonItem, AXNotificationData } from './notification.class';\n\n/**\n * The Button is a component which detects user interaction and triggers a corresponding event\n *\n * @category Components\n */\n@Component({\n selector: 'ax-notification',\n templateUrl: './notification.component.html',\n styleUrls: ['./notification.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: AXClosbaleComponent, useExisting: AXNotificationComponent }],\n})\nexport class AXNotificationComponent extends MXBaseComponent {\n /** @ignore */\n _selectedPortal: Portal<unknown>;\n\n /** @ignore */\n _icon: string;\n\n /**\n * @ignore\n */\n constructor(\n @Inject(DIALOG_DATA)\n public config: AXNotificationData,\n public dialogRef: DialogRef<AXComponentCloseEvent>,\n ) {\n super();\n }\n\n /** @ignore */\n override ngOnInit() {\n super.ngOnInit();\n this._initContent();\n this._initIcon();\n this._handleTimeOut();\n }\n\n /** @ignore */\n private _handleTimeOut() {\n if (this.config.timeOut) {\n setTimeout(() => {\n this.close();\n }, this.config.timeOut);\n }\n }\n\n /** @ignore */\n private _initContent() {\n if (this.config.content instanceof TemplateRef) {\n this._selectedPortal = new TemplatePortal(\n this.config.content as TemplateRef<unknown>,\n this.getViewContainer(),\n );\n this.cdr.markForCheck();\n } else if (typeof this.config.content === 'function') {\n this._selectedPortal = new ComponentPortal(this.config.content as ComponentType<unknown>);\n this.cdr.markForCheck();\n }\n }\n\n /** @ignore */\n private _initIcon() {\n if (!this.config.icon) {\n switch (this.config.color) {\n case 'success':\n this._icon = 'ax-icon ax-icon-check-circle';\n break;\n case 'danger':\n this._icon = 'ax-icon ax-icon-error';\n break;\n case 'warning':\n this._icon = 'ax-icon ax-icon-warning';\n break;\n case 'info':\n this._icon = 'ax-icon ax-icon-info';\n break;\n default:\n this._icon = this.config.icon || 'ax-icon ax-icon-check-circle';\n break;\n }\n } else {\n this._icon = this.config.icon;\n }\n }\n\n /** @ignore */\n protected _handleButtonClick(button: AXNotificationButtonItem) {\n if (button.onClick) {\n button.onClick({ source: button });\n }\n }\n\n /** @ignore */\n @HostBinding('class')\n private get __hostClass(): string {\n return `ax-${this.config.color}`;\n }\n\n /**\n * Closes the dialog and provides the component and HTML element for reference.\n */\n close() {\n this.dialogRef.close({\n component: this,\n htmlElement: this.getHostElement(),\n });\n }\n}\n","<span class=\"ax-notification-icon ax-icon-solid {{ _icon }}\"></span>\n<div class=\"ax-notification-content\">\n <div class=\"ax-notification-title\">{{ config.title | translate | async }}</div>\n @if(_selectedPortal){\n <ng-template [cdkPortalOutlet]=\"_selectedPortal\"></ng-template>\n } @else{\n <div>{{ config.content }}</div>\n }\n\n @if(config.buttons?.length){\n <div class=\"ax-notification-buttons\">\n @for(button of config.buttons; track $index){\n <ax-button class=\"ax-xs\" [text]=\"button.text | translate | async\" [color]=\"button.color\" [look]=\"button.look\"\n [disabled]=\"button.disabled\" (onClick)=\"_handleButtonClick(button)\">\n @if(button.loading){\n <ax-loading></ax-loading>\n }\n </ax-button>\n }\n </div>\n }\n\n</div>\n@if(config.closeButton){\n<ax-close-button></ax-close-button>\n}\n@if(config.timeOutProgress && config.timeOut){\n<div class=\"ax-notification-progress\" [style.animation-duration.ms]=\"config.timeOut\"></div>\n}","import { AXLocation } from '@acorex/components/common';\nimport { InjectionToken } from '@angular/core';\n\nexport interface AXNotificationConfig {\n gap: number;\n timeOut: number;\n timeOutProgress: boolean;\n location: AXLocation;\n closeButton: boolean;\n limit: number;\n}\n\nexport const AX_NOTIFICATION_CONFIG = new InjectionToken<AXNotificationConfig>('AX_NOTIFICATION_CONFIG', {\n providedIn: 'root',\n factory: () => AXNotificationDefaultConfig,\n});\n\nexport const AXNotificationDefaultConfig: AXNotificationConfig = {\n gap: 5,\n timeOut: 2500,\n timeOutProgress: true,\n closeButton: true,\n location: 'top-end',\n limit: 3,\n};\n\nexport type PartialNotificationConfig = Partial<AXNotificationConfig>;\n\nexport function notificationConfig(config: PartialNotificationConfig = {}): AXNotificationConfig {\n const result = {\n ...AXNotificationDefaultConfig,\n ...config,\n };\n return result;\n}\n","import { AXLocation, AXStyleColorType } from '@acorex/components/common';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { Dialog } from '@angular/cdk/dialog';\nimport { GlobalPositionStrategy } from '@angular/cdk/overlay';\nimport { Injectable, inject } from '@angular/core';\nimport {\n AXNotificationOptions as AXNotificationDisplayConfig,\n AXNotificationRef,\n} from './notification.class';\nimport { AXNotificationComponent } from './notification.component';\nimport { AXNotificationConfig, AX_NOTIFICATION_CONFIG } from './notification.config';\n\ntype AXReservedNotifications = {\n config: AXNotificationDisplayConfig;\n reservedRef: {\n close: () => void;\n };\n};\n\n@Injectable()\nexport class AXNotificationService {\n private dialog: Dialog = inject(Dialog);\n private translationService: AXTranslationService = inject(AXTranslationService);\n private defaultConfig: AXNotificationConfig = inject(AX_NOTIFICATION_CONFIG);\n private activeNotifications: string[] = [];\n private reservedNotifications: AXReservedNotifications[] = [];\n private notificationCounterElement: AXNotificationComponent | null = null;\n private moreNotificationsColor: AXStyleColorType = 'primary';\n private moreNotificationsLocation: AXLocation = 'bottom-center';\n private reserveCounter = 0;\n\n show(config: AXNotificationDisplayConfig): AXNotificationRef {\n config = { ...this.defaultConfig, ...config };\n\n this.moreNotificationsColor = config.color;\n this.moreNotificationsLocation = config.location;\n\n if (this.defaultConfig.limit > 0 && this.activeNotifications.length >= this.defaultConfig.limit) {\n const reservedRef = {\n close: () => {\n console.warn('Reserved notification cannot be closed until it is displayed.');\n },\n };\n this.reservedNotifications.push({ config, reservedRef });\n this.handleReservedNotificationCounter();\n return reservedRef;\n }\n\n return this.displayNotification(config);\n }\n\n private displayNotification(config: AXNotificationDisplayConfig): AXNotificationRef {\n const gap = this.defaultConfig.gap;\n const pos = this.getPosition(config.location) + gap + 'px';\n const positionStrategy = this.getPositionStrategy(\n new GlobalPositionStrategy(),\n config.location,\n pos,\n gap,\n );\n\n const dialogRef = this.dialog.open(AXNotificationComponent, {\n data: config,\n autoFocus: '__no_element__',\n restoreFocus: false,\n role: 'dialog',\n ariaModal: true,\n closeOnNavigation: true,\n closeOnDestroy: true,\n hasBackdrop: false,\n panelClass: ['ax-animate-animated', 'ax-animate-fadeIn', 'ax-animate-faster'],\n positionStrategy,\n });\n\n this.activeNotifications.push(dialogRef.id);\n this.handleReservedNotificationCounter();\n\n const notificationRef = dialogRef.componentInstance as AXNotificationComponent;\n dialogRef.closed.subscribe(() => {\n this.activeNotifications = this.activeNotifications.filter((id) => id !== dialogRef.id);\n\n this.handleShowReservedNotification();\n this.handleReservedNotificationCounter();\n\n setTimeout(() => {\n this.reposition(config.location, gap);\n }, 0);\n });\n\n return {\n close: () => {\n notificationRef.close();\n },\n };\n }\n\n hideAll() {\n this.dialog.closeAll();\n this.reserveCounter = 0;\n this.reservedNotifications = [];\n this.activeNotifications = [];\n this.handleReservedNotificationCounter();\n }\n\n private handleShowReservedNotification() {\n if (this.activeNotifications.length > this.defaultConfig.limit - 1) return;\n if (!this.reservedNotifications.length) return;\n\n const { config, reservedRef } = this.reservedNotifications.shift();\n\n const displayedRef = this.displayNotification(config);\n this.handleReservedNotificationCounter();\n reservedRef.close = displayedRef.close;\n }\n\n private handleReservedNotificationCounter() {\n const reservedCount = this.reservedNotifications.length;\n\n if (reservedCount === this.reserveCounter) return;\n\n this.reserveCounter = reservedCount;\n\n if (reservedCount === 0 && this.notificationCounterElement !== null) {\n this.notificationCounterElement.close();\n return;\n }\n\n if (reservedCount > 0) {\n if (this.notificationCounterElement !== null) {\n this.notificationCounterElement.close();\n }\n this.createReservedCounterToast();\n }\n }\n\n private async createReservedCounterToast() {\n const opt: AXNotificationDisplayConfig = {\n closeButton: false,\n color: this.moreNotificationsColor,\n location: this.moreNotificationsLocation,\n title: await this.translationService.translateAsync('more-notification', {\n params: { number: this.reserveCounter },\n }),\n timeOutProgress: false,\n };\n const gap = this.defaultConfig.gap;\n const pos = this.getPosition(opt.location) + gap + 'px';\n const positionStrategy = this.getPositionStrategy(new GlobalPositionStrategy(), opt.location, pos, gap);\n const dialogRef = this.dialog.open(AXNotificationComponent, {\n data: opt,\n autoFocus: '__no_element__',\n restoreFocus: true,\n role: 'dialog',\n ariaModal: true,\n closeOnNavigation: true,\n closeOnDestroy: true,\n hasBackdrop: false,\n panelClass: ['ax-animate-animated', 'ax-animate-fadeIn', 'ax-animate-faster'],\n positionStrategy,\n });\n this.notificationCounterElement = dialogRef.componentInstance as AXNotificationComponent;\n }\n\n private reposition(notificationLocation: AXLocation, gap: number): void {\n const list = this.dialog.openDialogs\n .map((c) => c.componentInstance as AXNotificationComponent)\n .filter((c) => c.config?.location == notificationLocation);\n list.forEach((element, index) => {\n const pos = this.getRepositionPosition(index, gap, list, notificationLocation);\n\n this.getPositionStrategy(\n element.dialogRef.config.positionStrategy as GlobalPositionStrategy,\n notificationLocation,\n pos,\n gap,\n ).apply();\n });\n }\n\n private getRepositionPosition(\n index: number,\n gap: number,\n list: AXNotificationComponent[],\n notificationLocation: string,\n ) {\n if (index === 0) return gap + 'px';\n const previouseElement = list[index - 1];\n if (notificationLocation.split('-')[0] == 'bottom') {\n return window.innerHeight - previouseElement.getHostElement().offsetTop + gap + 'px';\n }\n return (\n previouseElement.getHostElement().offsetTop +\n previouseElement.getHostElement().offsetHeight +\n gap +\n 'px'\n );\n }\n\n private getPosition(location: string) {\n const list = this.dialog.openDialogs\n .map((c) => c.componentInstance as AXNotificationComponent)\n .filter((c) => c.config.location == location);\n if (list.length == 0) return 0;\n if (location.split('-')[0] == 'bottom') {\n return window.innerHeight - list[list.length - 1].getHostElement().offsetTop;\n }\n return (\n list[list.length - 1].getHostElement().offsetTop + list[list.length - 1].getHostElement().offsetHeight\n );\n }\n\n private getPositionStrategy(\n positionStrategy: GlobalPositionStrategy,\n location: AXLocation,\n pos: string,\n gap: number,\n ) {\n switch (location) {\n case 'bottom-center':\n return positionStrategy.bottom(pos).centerHorizontally();\n break;\n case 'bottom-end':\n return positionStrategy.bottom(pos).right(gap + 'px');\n break;\n case 'bottom-start':\n return positionStrategy.bottom(pos).left(gap + 'px');\n break;\n case 'top-center':\n return positionStrategy.top(pos).centerHorizontally();\n break;\n case 'top-end':\n return positionStrategy.top(pos).right(gap + 'px');\n break;\n case 'top-start':\n return positionStrategy.top(pos).left(gap + 'px');\n break;\n case 'center-start':\n return positionStrategy.centerVertically().left(gap + 'px');\n break;\n case 'center-end':\n return positionStrategy.centerVertically().right(gap + 'px');\n break;\n }\n }\n}\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { DialogModule } from '@angular/cdk/dialog';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXNotificationComponent } from './notification.component';\nimport { AXNotificationService } from './notification.service';\n\nconst COMPONENT = [AXNotificationComponent];\nconst MODULES = [CommonModule, PortalModule, AXButtonModule, DialogModule, AXLoadingModule, AXDecoratorModule, AXTranslationModule];\n\n@NgModule({\n declarations: [...COMPONENT],\n imports: [...MODULES],\n exports: [...COMPONENT],\n providers: [AXNotificationService],\n})\nexport class AXNotificationModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
@@ -2,13 +2,13 @@ import { MXBaseComponent, AXClosbaleComponent } from '@acorex/components/common'
|
|
2
2
|
import * as i1 from '@angular/cdk/dialog';
|
3
3
|
import { DIALOG_DATA, Dialog, DialogModule } from '@angular/cdk/dialog';
|
4
4
|
import * as i0 from '@angular/core';
|
5
|
-
import { Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, HostBinding, InjectionToken, inject,
|
5
|
+
import { Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, HostBinding, InjectionToken, inject, Injectable, NgModule } from '@angular/core';
|
6
6
|
import * as i2 from '@acorex/components/decorators';
|
7
7
|
import { AXDecoratorModule } from '@acorex/components/decorators';
|
8
8
|
import * as i3 from '@angular/common';
|
9
9
|
import { CommonModule } from '@angular/common';
|
10
10
|
import * as i4 from '@acorex/core/translation';
|
11
|
-
import { AXTranslationModule } from '@acorex/core/translation';
|
11
|
+
import { AXTranslationService, AXTranslationModule } from '@acorex/core/translation';
|
12
12
|
import { AX_GLOBAL_CONFIG } from '@acorex/core/config';
|
13
13
|
import { set } from 'lodash-es';
|
14
14
|
import { AXButtonModule } from '@acorex/components/button';
|
@@ -121,23 +121,16 @@ class AXToastService {
|
|
121
121
|
constructor(scrollStrategyOptions) {
|
122
122
|
this.scrollStrategyOptions = scrollStrategyOptions;
|
123
123
|
this.dialog = inject(Dialog);
|
124
|
+
this.translationService = inject(AXTranslationService);
|
124
125
|
this.defaultConfig = inject(AX_TOAST_CONFIG);
|
125
|
-
this.activeToasts =
|
126
|
-
this.reservedToasts =
|
127
|
-
this.toastCounterElement =
|
128
|
-
this.moreToastsColor =
|
129
|
-
this.moreToastsLocation =
|
130
|
-
this.reserveCounter =
|
131
|
-
this.#effect = effect(() => {
|
132
|
-
if (this.defaultConfig.limit <= 0)
|
133
|
-
return;
|
134
|
-
this.handleShowReservedToast();
|
135
|
-
this.handleShowReservedToastCounter();
|
136
|
-
this.handleReserveCounter();
|
137
|
-
}, { allowSignalWrites: true });
|
126
|
+
this.activeToasts = [];
|
127
|
+
this.reservedToasts = [];
|
128
|
+
this.toastCounterElement = null;
|
129
|
+
this.moreToastsColor = 'primary';
|
130
|
+
this.moreToastsLocation = 'bottom-center';
|
131
|
+
this.reserveCounter = 0;
|
138
132
|
this.scrollStrategy = this.scrollStrategyOptions.noop();
|
139
133
|
}
|
140
|
-
#effect;
|
141
134
|
primary(content) {
|
142
135
|
this.show({
|
143
136
|
timeOut: this.defaultConfig.timeOut,
|
@@ -174,27 +167,27 @@ class AXToastService {
|
|
174
167
|
});
|
175
168
|
}
|
176
169
|
show(config) {
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
},
|
190
|
-
};
|
191
|
-
}
|
170
|
+
config = { ...this.defaultConfig, ...config };
|
171
|
+
this.moreToastsColor = config.color;
|
172
|
+
this.moreToastsLocation = config.location;
|
173
|
+
if (this.defaultConfig.limit > 0 && this.activeToasts.length >= this.defaultConfig.limit) {
|
174
|
+
const reservedRef = {
|
175
|
+
close: () => {
|
176
|
+
console.warn('Reserved notification cannot be closed until it is displayed.');
|
177
|
+
},
|
178
|
+
};
|
179
|
+
this.reservedToasts.push({ config, reservedRef });
|
180
|
+
this.handleReservedToastCounter();
|
181
|
+
return reservedRef;
|
192
182
|
}
|
183
|
+
return this.displayToast(config);
|
184
|
+
}
|
185
|
+
displayToast(config) {
|
193
186
|
const gap = this.defaultConfig.gap;
|
194
|
-
const pos = this.getPosition(
|
195
|
-
const positionStrategy = this.getPositionStrategy(new GlobalPositionStrategy(),
|
187
|
+
const pos = this.getPosition(config.location) + gap + 'px';
|
188
|
+
const positionStrategy = this.getPositionStrategy(new GlobalPositionStrategy(), config.location, pos, gap);
|
196
189
|
const dialogRef = this.dialog.open(AXToastComponent, {
|
197
|
-
data:
|
190
|
+
data: config,
|
198
191
|
autoFocus: '__no_element__',
|
199
192
|
restoreFocus: true,
|
200
193
|
role: 'dialog',
|
@@ -206,12 +199,15 @@ class AXToastService {
|
|
206
199
|
positionStrategy,
|
207
200
|
scrollStrategy: this.scrollStrategy,
|
208
201
|
});
|
209
|
-
this.activeToasts.
|
202
|
+
this.activeToasts.push(dialogRef.id);
|
203
|
+
this.handleReservedToastCounter();
|
210
204
|
const toastRef = dialogRef.componentInstance;
|
211
205
|
dialogRef.closed.subscribe(() => {
|
212
|
-
this.activeToasts
|
206
|
+
this.activeToasts = this.activeToasts.filter((id) => id !== dialogRef.id);
|
207
|
+
this.handleShowReservedToast();
|
208
|
+
this.handleReservedToastCounter();
|
213
209
|
setTimeout(() => {
|
214
|
-
this.reposition(
|
210
|
+
this.reposition(config.location, gap);
|
215
211
|
}, 0);
|
216
212
|
});
|
217
213
|
return {
|
@@ -222,40 +218,45 @@ class AXToastService {
|
|
222
218
|
}
|
223
219
|
hideAll() {
|
224
220
|
this.dialog.closeAll();
|
221
|
+
this.reserveCounter = 0;
|
222
|
+
this.reservedToasts = [];
|
223
|
+
this.activeToasts = [];
|
224
|
+
this.handleReservedToastCounter();
|
225
225
|
}
|
226
226
|
handleShowReservedToast() {
|
227
|
-
if (this.activeToasts
|
227
|
+
if (this.activeToasts.length > this.defaultConfig.limit - 1)
|
228
228
|
return;
|
229
|
-
if (!this.reservedToasts
|
229
|
+
if (!this.reservedToasts.length)
|
230
230
|
return;
|
231
|
-
this.
|
232
|
-
this.
|
233
|
-
|
234
|
-
|
235
|
-
return toasts;
|
236
|
-
});
|
237
|
-
}
|
238
|
-
handleShowReservedToastCounter() {
|
239
|
-
if (this.reservedToasts().length === this.reserveCounter())
|
240
|
-
return;
|
241
|
-
this.reserveCounter.set(this.reservedToasts().length);
|
242
|
-
if (this.toastCounterElement() !== null)
|
243
|
-
this.toastCounterElement().close();
|
244
|
-
this.createReservedCounterToast();
|
231
|
+
const { config, reservedRef } = this.reservedToasts.shift();
|
232
|
+
const displayedRef = this.displayToast(config);
|
233
|
+
this.handleReservedToastCounter();
|
234
|
+
reservedRef.close = displayedRef.close;
|
245
235
|
}
|
246
|
-
|
247
|
-
|
236
|
+
handleReservedToastCounter() {
|
237
|
+
const reservedCount = this.reservedToasts.length;
|
238
|
+
if (reservedCount === this.reserveCounter)
|
248
239
|
return;
|
249
|
-
|
240
|
+
this.reserveCounter = reservedCount;
|
241
|
+
if (reservedCount === 0 && this.toastCounterElement !== null) {
|
242
|
+
this.toastCounterElement.close();
|
250
243
|
return;
|
251
|
-
|
244
|
+
}
|
245
|
+
if (reservedCount > 0) {
|
246
|
+
if (this.toastCounterElement !== null) {
|
247
|
+
this.toastCounterElement.close();
|
248
|
+
}
|
249
|
+
this.createReservedCounterToast();
|
250
|
+
}
|
252
251
|
}
|
253
|
-
createReservedCounterToast() {
|
252
|
+
async createReservedCounterToast() {
|
254
253
|
const opt = {
|
255
254
|
closeButton: false,
|
256
|
-
color: this.moreToastsColor
|
257
|
-
location: this.moreToastsLocation
|
258
|
-
title:
|
255
|
+
color: this.moreToastsColor,
|
256
|
+
location: this.moreToastsLocation,
|
257
|
+
title: await this.translationService.translateAsync('more-toast', {
|
258
|
+
params: { number: this.reserveCounter },
|
259
|
+
}),
|
259
260
|
timeOutProgress: false,
|
260
261
|
};
|
261
262
|
const gap = this.defaultConfig.gap;
|
@@ -274,7 +275,7 @@ class AXToastService {
|
|
274
275
|
positionStrategy,
|
275
276
|
scrollStrategy: this.scrollStrategy,
|
276
277
|
});
|
277
|
-
this.toastCounterElement
|
278
|
+
this.toastCounterElement = dialogRef.componentInstance;
|
278
279
|
}
|
279
280
|
reposition(toastLocation, gap) {
|
280
281
|
const list = this.dialog.openDialogs
|
@@ -282,7 +283,6 @@ class AXToastService {
|
|
282
283
|
.filter((c) => c.config?.location == toastLocation);
|
283
284
|
list.forEach((element, index) => {
|
284
285
|
const pos = this.getRepositionPosition(index, gap, list, toastLocation);
|
285
|
-
console.log(index, element);
|
286
286
|
this.getPositionStrategy(element.dialogRef.config.positionStrategy, toastLocation, pos, gap).apply();
|
287
287
|
});
|
288
288
|
}
|