@progress-chef/platform-shared-components 0.0.121 → 0.0.122
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/esm2022/lib/atoms/atoms.module.mjs +1 -8
- package/esm2022/public-api.mjs +1 -4
- package/fesm2022/progress-chef-platform-shared-components.mjs +67 -258
- package/fesm2022/progress-chef-platform-shared-components.mjs.map +1 -1
- package/lib/atoms/atoms.module.d.ts +4 -5
- package/package.json +1 -2
- package/public-api.d.ts +0 -2
- package/esm2022/lib/atoms/toast-notification/toast-notification.module.mjs +0 -31
- package/esm2022/lib/atoms/toast-notification/toast-notification.service.mjs +0 -160
- package/lib/atoms/toast-notification/toast-notification.module.d.ts +0 -8
- package/lib/atoms/toast-notification/toast-notification.service.d.ts +0 -51
|
@@ -37,12 +37,11 @@ import * as i35 from "./text-area/text-area.module";
|
|
|
37
37
|
import * as i36 from "./textbox/textbox.module";
|
|
38
38
|
import * as i37 from "./time-picker/time-picker.module";
|
|
39
39
|
import * as i38 from "./timescheduler/timescheduler.module";
|
|
40
|
-
import * as i39 from "./
|
|
41
|
-
import * as i40 from "./
|
|
42
|
-
import * as i41 from "./
|
|
43
|
-
import * as i42 from "./uploader/uploader.module";
|
|
40
|
+
import * as i39 from "./tooltip/tooltip.module";
|
|
41
|
+
import * as i40 from "./typography/typography.module";
|
|
42
|
+
import * as i41 from "./uploader/uploader.module";
|
|
44
43
|
export declare class AtomsModule {
|
|
45
44
|
static ɵfac: i0.ɵɵFactoryDeclaration<AtomsModule, never>;
|
|
46
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<AtomsModule, never, [typeof i1.CommonModule, typeof i2.FormsModule, typeof i2.ReactiveFormsModule, typeof i3.AlertModule, typeof i4.AngularPopupModule, typeof i5.AvatarModule, typeof i6.BreadcrumbModule, typeof i7.ButtonModule, typeof i8.ButtonGroupModule, typeof i9.CheckboxModule, typeof i10.ChipModule, typeof i11.ChipListModule, typeof i12.ClipboardModule, typeof i13.ContainerModule, typeof i14.DateRangeModule, typeof i15.DatepickerModule, typeof i16.DragAndDropModule, typeof i17.DropdownModule, typeof i18.DropdownButtonModule, typeof i19.DropdowntreeModule, typeof i20.ExpansionPanelModule, typeof i21.IconModule, typeof i22.LabelsModule, typeof i23.ListViewsModule, typeof i24.LoaderModule, typeof i25.LoadingSpinnerModule, typeof i26.MultiSelectDropdownModule, typeof i27.NotificationModule, typeof i28.NumericTextboxModule, typeof i29.ProgressBarsModule, typeof i30.RadioButtonModule, typeof i31.SearchBoxModule, typeof i32.SliderModule, typeof i33.StepperModule, typeof i34.SwitchModule, typeof i35.TextAreaModule, typeof i36.TextboxModule, typeof i37.TimePickerModule, typeof i38.TimeschedulerModule, typeof i39.
|
|
45
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<AtomsModule, never, [typeof i1.CommonModule, typeof i2.FormsModule, typeof i2.ReactiveFormsModule, typeof i3.AlertModule, typeof i4.AngularPopupModule, typeof i5.AvatarModule, typeof i6.BreadcrumbModule, typeof i7.ButtonModule, typeof i8.ButtonGroupModule, typeof i9.CheckboxModule, typeof i10.ChipModule, typeof i11.ChipListModule, typeof i12.ClipboardModule, typeof i13.ContainerModule, typeof i14.DateRangeModule, typeof i15.DatepickerModule, typeof i16.DragAndDropModule, typeof i17.DropdownModule, typeof i18.DropdownButtonModule, typeof i19.DropdowntreeModule, typeof i20.ExpansionPanelModule, typeof i21.IconModule, typeof i22.LabelsModule, typeof i23.ListViewsModule, typeof i24.LoaderModule, typeof i25.LoadingSpinnerModule, typeof i26.MultiSelectDropdownModule, typeof i27.NotificationModule, typeof i28.NumericTextboxModule, typeof i29.ProgressBarsModule, typeof i30.RadioButtonModule, typeof i31.SearchBoxModule, typeof i32.SliderModule, typeof i33.StepperModule, typeof i34.SwitchModule, typeof i35.TextAreaModule, typeof i36.TextboxModule, typeof i37.TimePickerModule, typeof i38.TimeschedulerModule, typeof i39.TooltipModule, typeof i40.TypographyModule, typeof i41.UploaderModule], [typeof i3.AlertModule, typeof i4.AngularPopupModule, typeof i5.AvatarModule, typeof i6.BreadcrumbModule, typeof i7.ButtonModule, typeof i8.ButtonGroupModule, typeof i9.CheckboxModule, typeof i10.ChipModule, typeof i11.ChipListModule, typeof i12.ClipboardModule, typeof i13.ContainerModule, typeof i14.DateRangeModule, typeof i15.DatepickerModule, typeof i16.DragAndDropModule, typeof i17.DropdownModule, typeof i18.DropdownButtonModule, typeof i19.DropdowntreeModule, typeof i20.ExpansionPanelModule, typeof i21.IconModule, typeof i22.LabelsModule, typeof i23.ListViewsModule, typeof i24.LoaderModule, typeof i25.LoadingSpinnerModule, typeof i26.MultiSelectDropdownModule, typeof i27.NotificationModule, typeof i28.NumericTextboxModule, typeof i29.ProgressBarsModule, typeof i30.RadioButtonModule, typeof i31.SearchBoxModule, typeof i32.SliderModule, typeof i33.StepperModule, typeof i34.SwitchModule, typeof i35.TextAreaModule, typeof i36.TextboxModule, typeof i37.TimePickerModule, typeof i38.TimeschedulerModule, typeof i39.TooltipModule, typeof i40.TypographyModule, typeof i41.UploaderModule]>;
|
|
47
46
|
static ɵinj: i0.ɵɵInjectorDeclaration<AtomsModule>;
|
|
48
47
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@progress-chef/platform-shared-components",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.122",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/common": "^17.3.12",
|
|
6
6
|
"@angular/core": "^17.3.12",
|
|
@@ -34,7 +34,6 @@
|
|
|
34
34
|
"@progress/kendo-angular-excel-export": "^14.2.0",
|
|
35
35
|
"@progress/kendo-angular-indicators": "^14.2.0",
|
|
36
36
|
"@progress/kendo-angular-progressbar": "^14.2.0",
|
|
37
|
-
"@progress/kendo-angular-notification": "^14.2.0",
|
|
38
37
|
"@progress/kendo-angular-tooltip": "^14.2.0",
|
|
39
38
|
"@progress/kendo-angular-upload": "^14.2.0"
|
|
40
39
|
},
|
package/public-api.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
export * from './lib/atoms/toast-notification/toast-notification.service';
|
|
2
1
|
/** --------------- modules ----------------------- **/
|
|
3
2
|
export * from './lib/shared.module';
|
|
4
3
|
export * from './lib/atoms/atoms.module';
|
|
@@ -37,7 +36,6 @@ export * from './lib/atoms/switch/switch.module';
|
|
|
37
36
|
export * from './lib/atoms/text-area/text-area.module';
|
|
38
37
|
export * from './lib/atoms/textbox/textbox.module';
|
|
39
38
|
export * from './lib/atoms/time-picker/time-picker.module';
|
|
40
|
-
export * from './lib/atoms/toast-notification/toast-notification.module';
|
|
41
39
|
export * from './lib/atoms/timescheduler/timescheduler.module';
|
|
42
40
|
export * from './lib/atoms/tooltip/tooltip.module';
|
|
43
41
|
export * from './lib/atoms/typography/typography.module';
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { NgModule } from '@angular/core';
|
|
3
|
-
import { NotificationModule, NotificationService } from '@progress/kendo-angular-notification';
|
|
4
|
-
import { IconsService } from '@progress/kendo-angular-icons';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export class ToastNotificationModule {
|
|
7
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ToastNotificationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
8
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: ToastNotificationModule, imports: [CommonModule,
|
|
9
|
-
NotificationModule] }); }
|
|
10
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ToastNotificationModule, providers: [
|
|
11
|
-
IconsService,
|
|
12
|
-
NotificationService
|
|
13
|
-
], imports: [CommonModule,
|
|
14
|
-
NotificationModule] }); }
|
|
15
|
-
}
|
|
16
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ToastNotificationModule, decorators: [{
|
|
17
|
-
type: NgModule,
|
|
18
|
-
args: [{
|
|
19
|
-
declarations: [],
|
|
20
|
-
imports: [
|
|
21
|
-
CommonModule,
|
|
22
|
-
NotificationModule
|
|
23
|
-
],
|
|
24
|
-
exports: [],
|
|
25
|
-
providers: [
|
|
26
|
-
IconsService,
|
|
27
|
-
NotificationService
|
|
28
|
-
]
|
|
29
|
-
}]
|
|
30
|
-
}] });
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3Qtbm90aWZpY2F0aW9uLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC9zcmMvbGliL2F0b21zL3RvYXN0LW5vdGlmaWNhdGlvbi90b2FzdC1ub3RpZmljYXRpb24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQy9GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFtQjdELE1BQU0sT0FBTyx1QkFBdUI7K0dBQXZCLHVCQUF1QjtnSEFBdkIsdUJBQXVCLFlBWGhDLFlBQVk7WUFDWixrQkFBa0I7Z0hBVVQsdUJBQXVCLGFBTHZCO1lBQ1QsWUFBWTtZQUNaLG1CQUFtQjtTQUNwQixZQVRDLFlBQVk7WUFDWixrQkFBa0I7OzRGQVVULHVCQUF1QjtrQkFoQm5DLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLEVBRWI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osa0JBQWtCO3FCQUNuQjtvQkFDRCxPQUFPLEVBQUUsRUFFUjtvQkFDRCxTQUFTLEVBQUU7d0JBQ1QsWUFBWTt3QkFDWixtQkFBbUI7cUJBQ3BCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25Nb2R1bGUsIE5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICdAcHJvZ3Jlc3Mva2VuZG8tYW5ndWxhci1ub3RpZmljYXRpb24nO1xuaW1wb3J0IHsgSWNvbnNTZXJ2aWNlIH0gZnJvbSAnQHByb2dyZXNzL2tlbmRvLWFuZ3VsYXItaWNvbnMnO1xuXG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIFxuICBdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIE5vdGlmaWNhdGlvbk1vZHVsZVxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgXG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIEljb25zU2VydmljZSxcbiAgICBOb3RpZmljYXRpb25TZXJ2aWNlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgVG9hc3ROb3RpZmljYXRpb25Nb2R1bGUgeyB9XG4iXX0=
|
|
@@ -1,160 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "@progress/kendo-angular-notification";
|
|
4
|
-
export class ToastNotificationService {
|
|
5
|
-
constructor(notificationService, rendererFactory) {
|
|
6
|
-
this.notificationService = notificationService;
|
|
7
|
-
this.httpStatusHandledInHttpInterceptor = new Set([0, 202, 207, 401, 402, 403, 405, 500, 502, 503, 504]);
|
|
8
|
-
this.errMessagesSet = new Set();
|
|
9
|
-
this.allSubscriptions = [];
|
|
10
|
-
this.errorNotifications = [];
|
|
11
|
-
this.infoNotifications = [];
|
|
12
|
-
this.toastElement = null;
|
|
13
|
-
this.notificationsContainerSelector = "kendo-notification-container > div.k-notification-group";
|
|
14
|
-
this.errNotificationClickListener = null;
|
|
15
|
-
this.documentClickListener = null;
|
|
16
|
-
this.renderer = rendererFactory.createRenderer(null, null);
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* @param notification
|
|
20
|
-
* default notification config:
|
|
21
|
-
* - content: '',
|
|
22
|
-
* - animation: { type: 'slide', duration: 400 },
|
|
23
|
-
* - position: { horizontal: 'center', vertical: 'top' },
|
|
24
|
-
* - type: { style: 'success', icon: true },
|
|
25
|
-
* - hideAfter: 4000,
|
|
26
|
-
*/
|
|
27
|
-
showToastNotification(notification) {
|
|
28
|
-
const defaultNotification = {
|
|
29
|
-
content: '',
|
|
30
|
-
animation: { type: 'slide', duration: 400 },
|
|
31
|
-
position: { horizontal: 'center', vertical: 'top' },
|
|
32
|
-
type: { style: 'success', icon: true },
|
|
33
|
-
hideAfter: window.hideAfter || 6000, // window.hideAfter is used to finalize final time for hideAfter. It must be removed.
|
|
34
|
-
action: {}
|
|
35
|
-
};
|
|
36
|
-
const mergedNotification = { ...defaultNotification, ...notification };
|
|
37
|
-
if (this.httpStatusHandledInHttpInterceptor.has(mergedNotification?.action?.payload?.error?.status) ||
|
|
38
|
-
this.httpStatusHandledInHttpInterceptor.has(mergedNotification?.action?.payload?.response?.code)) {
|
|
39
|
-
return;
|
|
40
|
-
}
|
|
41
|
-
if (mergedNotification.type.style === 'error' && this.errMessagesSet.has(mergedNotification.content)) {
|
|
42
|
-
return;
|
|
43
|
-
}
|
|
44
|
-
if (mergedNotification.type.style === 'error') {
|
|
45
|
-
this.processErrorNotification(mergedNotification);
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
const nonErrNotification = this.notificationService.show({
|
|
49
|
-
content: mergedNotification.content,
|
|
50
|
-
cssClass: mergedNotification.cssClass,
|
|
51
|
-
animation: mergedNotification.animation,
|
|
52
|
-
position: mergedNotification.position,
|
|
53
|
-
type: mergedNotification.type,
|
|
54
|
-
closable: mergedNotification.closable,
|
|
55
|
-
hideAfter: mergedNotification.hideAfter,
|
|
56
|
-
});
|
|
57
|
-
if (mergedNotification.type.style === 'info') {
|
|
58
|
-
this.infoNotifications.push(nonErrNotification);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
processErrorNotification(notification) {
|
|
63
|
-
this.errMessagesSet.add(notification.content);
|
|
64
|
-
const errNotification = this.notificationService.show({
|
|
65
|
-
content: notification.content,
|
|
66
|
-
cssClass: notification.cssClass,
|
|
67
|
-
animation: notification.animation,
|
|
68
|
-
position: notification.position,
|
|
69
|
-
type: notification.type,
|
|
70
|
-
closable: notification.closable,
|
|
71
|
-
hideAfter: notification.hideAfter,
|
|
72
|
-
});
|
|
73
|
-
this.errorNotifications.push(errNotification);
|
|
74
|
-
try {
|
|
75
|
-
this.notificationsContainer = this.renderer.selectRootElement(this.notificationsContainerSelector, true);
|
|
76
|
-
}
|
|
77
|
-
catch (error) {
|
|
78
|
-
console.error('Error Toast Notification Container NOT found', error);
|
|
79
|
-
}
|
|
80
|
-
if (this.notificationsContainer) {
|
|
81
|
-
console.log('Toast Notification Container found');
|
|
82
|
-
if (this.registerClickListenersTimeoutId) {
|
|
83
|
-
clearTimeout(this.registerClickListenersTimeoutId);
|
|
84
|
-
}
|
|
85
|
-
// This defers the execution of click listener addition to the next event loop cycle.
|
|
86
|
-
// It ensures that the current click event (which triggered the notification) is not captured by the newly added listener.
|
|
87
|
-
this.registerClickListenersTimeoutId = setTimeout(() => this.registerClickListenersErrNotifications(), 0);
|
|
88
|
-
}
|
|
89
|
-
// On click of close icon in notification, hide all error notifications present
|
|
90
|
-
if (errNotification?.afterHide) {
|
|
91
|
-
this.allSubscriptions.push(errNotification.afterHide.subscribe(() => {
|
|
92
|
-
if (this.errMessagesSet.size && this.errorNotifications.length) {
|
|
93
|
-
this.hideErrorToastNotifications();
|
|
94
|
-
}
|
|
95
|
-
}));
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
registerClickListenersErrNotifications() {
|
|
99
|
-
if (this.notificationsContainer && !this.documentClickListener) {
|
|
100
|
-
// listen for click events on the error notifications container
|
|
101
|
-
this.errNotificationClickListener = this.renderer.listen(this.notificationsContainer, 'click', (event) => event.stopPropagation());
|
|
102
|
-
// listen for click events on the document when error notifications are shown
|
|
103
|
-
this.documentClickListener = this.renderer.listen('document', 'click', (event) => this.onClickOutCloseErrors(event));
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
onClickOutCloseErrors(event) {
|
|
107
|
-
if (this.notificationsContainer && !this.notificationsContainer.contains(event.target)) {
|
|
108
|
-
this.hideErrorToastNotifications();
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
hideToastNotifications(filter) {
|
|
112
|
-
if (filter === 'error') {
|
|
113
|
-
this.errorNotifications.forEach((notification) => notification.hide());
|
|
114
|
-
this.errMessagesSet.clear();
|
|
115
|
-
this.errorNotifications = [];
|
|
116
|
-
this.cleanUpListenersAndSubsForErr();
|
|
117
|
-
}
|
|
118
|
-
else if (filter === 'info') {
|
|
119
|
-
this.infoNotifications.forEach((notification) => notification.hide());
|
|
120
|
-
this.infoNotifications = [];
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
hideErrorToastNotifications() {
|
|
124
|
-
this.hideToastNotifications('error');
|
|
125
|
-
}
|
|
126
|
-
hideInfoToastNotifications() {
|
|
127
|
-
this.hideToastNotifications('info');
|
|
128
|
-
}
|
|
129
|
-
// This method only handles the cleanup of error notifications
|
|
130
|
-
cleanUpListenersAndSubsForErr() {
|
|
131
|
-
if (this.notificationsContainer) {
|
|
132
|
-
if (this.errNotificationClickListener) {
|
|
133
|
-
this.errNotificationClickListener();
|
|
134
|
-
this.errNotificationClickListener = null;
|
|
135
|
-
}
|
|
136
|
-
if (this.documentClickListener) {
|
|
137
|
-
this.documentClickListener();
|
|
138
|
-
this.documentClickListener = null;
|
|
139
|
-
}
|
|
140
|
-
this.notificationsContainer = null;
|
|
141
|
-
}
|
|
142
|
-
if (this.registerClickListenersTimeoutId) {
|
|
143
|
-
clearTimeout(this.registerClickListenersTimeoutId);
|
|
144
|
-
this.registerClickListenersTimeoutId = null;
|
|
145
|
-
}
|
|
146
|
-
this.allSubscriptions.forEach((subs) => subs.unsubscribe());
|
|
147
|
-
}
|
|
148
|
-
ngOnDestroy() {
|
|
149
|
-
this.cleanUpListenersAndSubsForErr();
|
|
150
|
-
}
|
|
151
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ToastNotificationService, deps: [{ token: i1.NotificationService }, { token: i0.RendererFactory2 }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
152
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ToastNotificationService, providedIn: 'root' }); }
|
|
153
|
-
}
|
|
154
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ToastNotificationService, decorators: [{
|
|
155
|
-
type: Injectable,
|
|
156
|
-
args: [{
|
|
157
|
-
providedIn: 'root',
|
|
158
|
-
}]
|
|
159
|
-
}], ctorParameters: () => [{ type: i1.NotificationService }, { type: i0.RendererFactory2 }] });
|
|
160
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3Qtbm90aWZpY2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQvc3JjL2xpYi9hdG9tcy90b2FzdC1ub3RpZmljYXRpb24vdG9hc3Qtbm90aWZpY2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBdUQsTUFBTSxlQUFlLENBQUM7OztBQWtCaEcsTUFBTSxPQUFPLHdCQUF3QjtJQWdCbkMsWUFDbUIsbUJBQXdDLEVBQ3pELGVBQWlDO1FBRGhCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFmM0QsdUNBQWtDLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNwRyxtQkFBYyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7UUFDM0IscUJBQWdCLEdBQW1CLEVBQUUsQ0FBQztRQUN0Qyx1QkFBa0IsR0FBc0IsRUFBRSxDQUFDO1FBQzNDLHNCQUFpQixHQUFzQixFQUFFLENBQUM7UUFDMUMsaUJBQVksR0FBdUIsSUFBSSxDQUFDO1FBQ3hDLG1DQUE4QixHQUFHLHlEQUF5RCxDQUFDO1FBQ25GLGlDQUE0QixHQUF3QixJQUFJLENBQUM7UUFDekQsMEJBQXFCLEdBQXdCLElBQUksQ0FBQztRQVV4RCxJQUFJLENBQUMsUUFBUSxHQUFHLGVBQWUsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUVJLHFCQUFxQixDQUFDLFlBQStCO1FBQzFELE1BQU0sbUJBQW1CLEdBQXNCO1lBQzdDLE9BQU8sRUFBRSxFQUFFO1lB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QUN2QyxDQUFDO0lBRU0sMEJBQTBCO1FBQy9CLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsOERBQThEO0lBQ3RELDZCQUE2QjtRQUNuQyxJQUFJLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBQ2hDLElBQUksSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO2dCQUNwQyxJQUFJLENBQUMsNEJBQTRCLEdBQUcsSUFBSSxDQUFDO1lBQzNDLENBQUM7WUFDRCxJQUFJLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO2dCQUMvQixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQztZQUNwQyxDQUFDO1lBQ0QsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQztRQUNyQyxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsK0JBQStCLEVBQUUsQ0FBQztZQUN6QyxZQUFZLENBQUMsSUFBSSxDQUFDLCtCQUErQixDQUFDLENBQUM7WUFDbkQsSUFBSSxDQUFDLCtCQUErQixHQUFHLElBQUksQ0FBQztRQUM5QyxDQUFDO1FBQ0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUE7SUFDN0QsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsNkJBQTZCLEVBQUUsQ0FBQztJQUN2QyxDQUFDOytHQXJLVSx3QkFBd0I7bUhBQXhCLHdCQUF3QixjQUZ2QixNQUFNOzs0RkFFUCx3QkFBd0I7a0JBSHBDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95LCBSZW5kZXJlcjIsIFJlbmRlcmVyRmFjdG9yeTIsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25SZWYsIE5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICdAcHJvZ3Jlc3Mva2VuZG8tYW5ndWxhci1ub3RpZmljYXRpb24nO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG9hc3ROb3RpZmljYXRpb24ge1xuICBjb250ZW50OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+IHwgRnVuY3Rpb24sXG4gIGNzc0NsYXNzPzogc3RyaW5nIHwgQXJyYXk8c3RyaW5nPiB8IE9iamVjdCxcbiAgYW5pbWF0aW9uPzogYW55LFxuICBwb3NpdGlvbj86IGFueSxcbiAgdHlwZT86IGFueSxcbiAgY2xvc2FibGU/OiBib29sZWFuLFxuICBoaWRlQWZ0ZXI/OiBudW1iZXJcbiAgYWN0aW9uOiBhbnlcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFRvYXN0Tm90aWZpY2F0aW9uU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgaHR0cFN0YXR1c0hhbmRsZWRJbkh0dHBJbnRlcmNlcHRvciA9IG5ldyBTZXQoWzAsIDIwMiwgMjA3LCA0MDEsIDQwMiwgNDAzLCA0MDUsIDUwMCwgNTAyLCA1MDMsIDUwNF0pO1xuICBlcnJNZXNzYWdlc1NldCA9IG5ldyBTZXQoKTtcbiAgYWxsU3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcbiAgZXJyb3JOb3RpZmljYXRpb25zOiBOb3RpZmljYXRpb25SZWZbXSA9IFtdO1xuICBpbmZvTm90aWZpY2F0aW9uczogTm90aWZpY2F0aW9uUmVmW10gPSBbXTtcbiAgdG9hc3RFbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuICBub3RpZmljYXRpb25zQ29udGFpbmVyU2VsZWN0b3IgPSBcImtlbmRvLW5vdGlmaWNhdGlvbi1jb250YWluZXIgPiBkaXYuay1ub3RpZmljYXRpb24tZ3JvdXBcIjtcbiAgcHJpdmF0ZSBlcnJOb3RpZmljYXRpb25DbGlja0xpc3RlbmVyOiAoKCkgPT4gdm9pZCkgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBkb2N1bWVudENsaWNrTGlzdGVuZXI6ICgoKSA9PiB2b2lkKSB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyOiBSZW5kZXJlcjI7XG4gIG5vdGlmaWNhdGlvbnNDb250YWluZXI6IGFueTtcbiAgcmVnaXN0ZXJDbGlja0xpc3RlbmVyc1RpbWVvdXRJZDogYW55O1xuICBub3RpZmljYXRpb25BZnRlckhpZGVTdWJzY3JpcHRpb24kOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBub3RpZmljYXRpb25TZXJ2aWNlOiBOb3RpZmljYXRpb25TZXJ2aWNlLFxuICAgIHJlbmRlcmVyRmFjdG9yeTogUmVuZGVyZXJGYWN0b3J5MlxuICApIHtcbiAgICB0aGlzLnJlbmRlcmVyID0gcmVuZGVyZXJGYWN0b3J5LmNyZWF0ZVJlbmRlcmVyKG51bGwsIG51bGwpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBub3RpZmljYXRpb24gXG4gICAqIGRlZmF1bHQgbm90aWZpY2F0aW9uIGNvbmZpZzpcbiAgICogLSBjb250ZW50OiAnJyxcbiAgICogLSBhbmltYXRpb246IHsgdHlwZTogJ3NsaWRlJywgZHVyYXRpb246IDQwMCB9LFxuICAgKiAtIHBvc2l0aW9uOiB7IGhvcml6b250YWw6ICdjZW50ZXInLCB2ZXJ0aWNhbDogJ3RvcCcgfSxcbiAgICogLSB0eXBlOiB7IHN0eWxlOiAnc3VjY2VzcycsIGljb246IHRydWUgfSxcbiAgICogLSBoaWRlQWZ0ZXI6IDQwMDAsXG4gICAqL1xuXG4gIHB1YmxpYyBzaG93VG9hc3ROb3RpZmljYXRpb24obm90aWZpY2F0aW9uOiBUb2FzdE5vdGlmaWNhdGlvbikge1xuICAgIGNvbnN0IGRlZmF1bHROb3RpZmljYXRpb246IFRvYXN0Tm90aWZpY2F0aW9uID0ge1xuICAgICAgY29udGVudDogJycsXG4gICAgICBhbmltYXRpb246IHsgdHlwZTogJ3NsaWRlJywgZHVyYXRpb246IDQwMCB9LFxuICAgICAgcG9zaXRpb246IHsgaG9yaXpvbnRhbDogJ2NlbnRlcicsIHZlcnRpY2FsOiAndG9wJyB9LFxuICAgICAgdHlwZTogeyBzdHlsZTogJ3N1Y2Nlc3MnLCBpY29uOiB0cnVlIH0sXG4gICAgICBoaWRlQWZ0ZXI6ICh3aW5kb3cgYXMgYW55KS5oaWRlQWZ0ZXIgfHwgNjAwMCwgLy8gd2luZG93LmhpZGVBZnRlciBpcyB1c2VkIHRvIGZpbmFsaXplIGZpbmFsIHRpbWUgZm9yIGhpZGVBZnRlci4gSXQgbXVzdCBiZSByZW1vdmVkLlxuICAgICAgYWN0aW9uOiB7fVxuICAgIH1cbiAgICBjb25zdCBtZXJnZWROb3RpZmljYXRpb24gPSB7IC4uLmRlZmF1bHROb3RpZmljYXRpb24sIC4uLm5vdGlmaWNhdGlvbiB9O1xuICAgIGlmICh0aGlzLmh0dHBTdGF0dXNIYW5kbGVkSW5IdHRwSW50ZXJjZXB0b3IuaGFzKG1lcmdlZE5vdGlmaWNhdGlvbj8uYWN0aW9uPy5wYXlsb2FkPy5lcnJvcj8uc3RhdHVzKSB8fFxuICAgICAgdGhpcy5odHRwU3RhdHVzSGFuZGxlZEluSHR0cEludGVyY2VwdG9yLmhhcyhtZXJnZWROb3RpZmljYXRpb24/LmFjdGlvbj8ucGF5bG9hZD8ucmVzcG9uc2U/LmNvZGUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKG1lcmdlZE5vdGlmaWNhdGlvbi50eXBlLnN0eWxlID09PSAnZXJyb3InICYmIHRoaXMuZXJyTWVzc2FnZXNTZXQuaGFzKG1lcmdlZE5vdGlmaWNhdGlvbi5jb250ZW50KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChtZXJnZWROb3RpZmljYXRpb24udHlwZS5zdHlsZSA9PT0gJ2Vycm9yJykge1xuICAgICB0aGlzLnByb2Nlc3NFcnJvck5vdGlmaWNhdGlvbihtZXJnZWROb3RpZmljYXRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBub25FcnJOb3RpZmljYXRpb246IE5vdGlmaWNhdGlvblJlZiA9IHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zaG93KHtcbiAgICAgICAgY29udGVudDogbWVyZ2VkTm90aWZpY2F0aW9uLmNvbnRlbnQsXG4gICAgICAgIGNzc0NsYXNzOiBtZXJnZWROb3RpZmljYXRpb24uY3NzQ2xhc3MsXG4gICAgICAgIGFuaW1hdGlvbjogbWVyZ2VkTm90aWZpY2F0aW9uLmFuaW1hdGlvbixcbiAgICAgICAgcG9zaXRpb246IG1lcmdlZE5vdGlmaWNhdGlvbi5wb3NpdGlvbixcbiAgICAgICAgdHlwZTogbWVyZ2VkTm90aWZpY2F0aW9uLnR5cGUsXG4gICAgICAgIGNsb3NhYmxlOiBtZXJnZWROb3RpZmljYXRpb24uY2xvc2FibGUsXG4gICAgICAgIGhpZGVBZnRlcjogbWVyZ2VkTm90aWZpY2F0aW9uLmhpZGVBZnRlcixcbiAgICAgIH0pO1xuICAgICAgaWYgKG1lcmdlZE5vdGlmaWNhdGlvbi50eXBlLnN0eWxlID09PSAnaW5mbycpIHtcbiAgICAgICAgdGhpcy5pbmZvTm90aWZpY2F0aW9ucy5wdXNoKG5vbkVyck5vdGlmaWNhdGlvbik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzRXJyb3JOb3RpZmljYXRpb24obm90aWZpY2F0aW9uOiBUb2FzdE5vdGlmaWNhdGlvbikge1xuICAgIHRoaXMuZXJyTWVzc2FnZXNTZXQuYWRkKG5vdGlmaWNhdGlvbi5jb250ZW50KTtcbiAgICBjb25zdCBlcnJOb3RpZmljYXRpb246IE5vdGlmaWNhdGlvblJlZiA9IHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zaG93KHtcbiAgICAgIGNvbnRlbnQ6IG5vdGlmaWNhdGlvbi5jb250ZW50LFxuICAgICAgY3NzQ2xhc3M6IG5vdGlmaWNhdGlvbi5jc3NDbGFzcyxcbiAgICAgIGFuaW1hdGlvbjogbm90aWZpY2F0aW9uLmFuaW1hdGlvbixcbiAgICAgIHBvc2l0aW9uOiBub3RpZmljYXRpb24ucG9zaXRpb24sXG4gICAgICB0eXBlOiBub3RpZmljYXRpb24udHlwZSxcbiAgICAgIGNsb3NhYmxlOiBub3RpZmljYXRpb24uY2xvc2FibGUsXG4gICAgICBoaWRlQWZ0ZXI6IG5vdGlmaWNhdGlvbi5oaWRlQWZ0ZXIsXG4gICAgfSk7XG4gICAgdGhpcy5lcnJvck5vdGlmaWNhdGlvbnMucHVzaChlcnJOb3RpZmljYXRpb24pO1xuICAgIHRyeSB7XG4gICAgICB0aGlzLm5vdGlmaWNhdGlvbnNDb250YWluZXIgPSB0aGlzLnJlbmRlcmVyLnNlbGVjdFJvb3RFbGVtZW50KHRoaXMubm90aWZpY2F0aW9uc0NvbnRhaW5lclNlbGVjdG9yLCB0cnVlKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgVG9hc3QgTm90aWZpY2F0aW9uIENvbnRhaW5lciBOT1QgZm91bmQnLCBlcnJvcik7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubm90aWZpY2F0aW9uc0NvbnRhaW5lcikge1xuICAgICAgY29uc29sZS5sb2coJ1RvYXN0IE5vdGlmaWNhdGlvbiBDb250YWluZXIgZm91bmQnKTtcbiAgICAgIGlmICh0aGlzLnJlZ2lzdGVyQ2xpY2tMaXN0ZW5lcnNUaW1lb3V0SWQpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMucmVnaXN0ZXJDbGlja0xpc3RlbmVyc1RpbWVvdXRJZCk7XG4gICAgICB9XG4gICAgICAvLyBUaGlzIGRlZmVycyB0aGUgZXhlY3V0aW9uIG9mIGNsaWNrIGxpc3RlbmVyIGFkZGl0aW9uIHRvIHRoZSBuZXh0IGV2ZW50IGxvb3AgY3ljbGUuXG4gICAgICAvLyBJdCBlbnN1cmVzIHRoYXQgdGhlIGN1cnJlbnQgY2xpY2sgZXZlbnQgKHdoaWNoIHRyaWdnZXJlZCB0aGUgbm90aWZpY2F0aW9uKSBpcyBub3QgY2FwdHVyZWQgYnkgdGhlIG5ld2x5IGFkZGVkIGxpc3RlbmVyLiAgICAgICBcbiAgICAgIHRoaXMucmVnaXN0ZXJDbGlja0xpc3RlbmVyc1RpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5yZWdpc3RlckNsaWNrTGlzdGVuZXJzRXJyTm90aWZpY2F0aW9ucygpLCAwKTtcbiAgICB9XG5cbiAgICAvLyAgT24gY2xpY2sgb2YgY2xvc2UgaWNvbiBpbiBub3RpZmljYXRpb24sIGhpZGUgYWxsIGVycm9yIG5vdGlmaWNhdGlvbnMgcHJlc2VudFxuICAgIGlmIChlcnJOb3RpZmljYXRpb24/LmFmdGVySGlkZSkge1xuICAgICAgdGhpcy5hbGxTdWJzY3JpcHRpb25zLnB1c2goZXJyTm90aWZpY2F0aW9uLmFmdGVySGlkZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5lcnJNZXNzYWdlc1NldC5zaXplICYmIHRoaXMuZXJyb3JOb3RpZmljYXRpb25zLmxlbmd0aCkge1xuICAgICAgICAgIHRoaXMuaGlkZUVycm9yVG9hc3ROb3RpZmljYXRpb25zKCk7XG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyQ2xpY2tMaXN0ZW5lcnNFcnJOb3RpZmljYXRpb25zKCkge1xuICAgIGlmICh0aGlzLm5vdGlmaWNhdGlvbnNDb250YWluZXIgJiYgIXRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyKSB7XG4gICAgICAvLyBsaXN0ZW4gZm9yIGNsaWNrIGV2ZW50cyBvbiB0aGUgZXJyb3Igbm90aWZpY2F0aW9ucyBjb250YWluZXJcbiAgICAgIHRoaXMuZXJyTm90aWZpY2F0aW9uQ2xpY2tMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMubm90aWZpY2F0aW9uc0NvbnRhaW5lciwgJ2NsaWNrJywgKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiBldmVudC5zdG9wUHJvcGFnYXRpb24oKSk7XG4gICAgICAvLyBsaXN0ZW4gZm9yIGNsaWNrIGV2ZW50cyBvbiB0aGUgZG9jdW1lbnQgd2hlbiBlcnJvciBub3RpZmljYXRpb25zIGFyZSBzaG93blxuICAgICAgdGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3RlbignZG9jdW1lbnQnLCAnY2xpY2snLCAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHRoaXMub25DbGlja091dENsb3NlRXJyb3JzKGV2ZW50KSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBvbkNsaWNrT3V0Q2xvc2VFcnJvcnMoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBpZiAodGhpcy5ub3RpZmljYXRpb25zQ29udGFpbmVyICYmICF0aGlzLm5vdGlmaWNhdGlvbnNDb250YWluZXIuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpKSB7XG4gICAgICB0aGlzLmhpZGVFcnJvclRvYXN0Tm90aWZpY2F0aW9ucygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBoaWRlVG9hc3ROb3RpZmljYXRpb25zKGZpbHRlcjogJ2Vycm9yJyB8ICdpbmZvJykge1xuICAgIGlmIChmaWx0ZXIgPT09ICdlcnJvcicpIHtcbiAgICAgIHRoaXMuZXJyb3JOb3RpZmljYXRpb25zLmZvckVhY2goKG5vdGlmaWNhdGlvbikgPT4gbm90aWZpY2F0aW9uLmhpZGUoKSlcbiAgICAgIHRoaXMuZXJyTWVzc2FnZXNTZXQuY2xlYXIoKTtcbiAgICAgIHRoaXMuZXJyb3JOb3RpZmljYXRpb25zID0gW107XG4gICAgICB0aGlzLmNsZWFuVXBMaXN0ZW5lcnNBbmRTdWJzRm9yRXJyKCk7XG4gICAgfSBlbHNlIGlmIChmaWx0ZXIgPT09ICdpbmZvJykge1xuICAgICAgdGhpcy5pbmZvTm90aWZpY2F0aW9ucy5mb3JFYWNoKChub3RpZmljYXRpb24pID0+IG5vdGlmaWNhdGlvbi5oaWRlKCkpXG4gICAgICB0aGlzLmluZm9Ob3RpZmljYXRpb25zID0gW107XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhpZGVFcnJvclRvYXN0Tm90aWZpY2F0aW9ucygpIHtcbiAgICB0aGlzLmhpZGVUb2FzdE5vdGlmaWNhdGlvbnMoJ2Vycm9yJyk7XG4gIH1cblxuICBwdWJsaWMgaGlkZUluZm9Ub2FzdE5vdGlmaWNhdGlvbnMoKSB7XG4gICAgdGhpcy5oaWRlVG9hc3ROb3RpZmljYXRpb25zKCdpbmZvJyk7XG4gIH1cblxuICAvLyBUaGlzIG1ldGhvZCBvbmx5IGhhbmRsZXMgdGhlIGNsZWFudXAgb2YgZXJyb3Igbm90aWZpY2F0aW9uc1xuICBwcml2YXRlIGNsZWFuVXBMaXN0ZW5lcnNBbmRTdWJzRm9yRXJyKCkge1xuICAgIGlmICh0aGlzLm5vdGlmaWNhdGlvbnNDb250YWluZXIpIHtcbiAgICAgIGlmICh0aGlzLmVyck5vdGlmaWNhdGlvbkNsaWNrTGlzdGVuZXIpIHtcbiAgICAgICAgdGhpcy5lcnJOb3RpZmljYXRpb25DbGlja0xpc3RlbmVyKCk7XG4gICAgICAgIHRoaXMuZXJyTm90aWZpY2F0aW9uQ2xpY2tMaXN0ZW5lciA9IG51bGw7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIpIHtcbiAgICAgICAgdGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIoKTtcbiAgICAgICAgdGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIgPSBudWxsO1xuICAgICAgfVxuICAgICAgdGhpcy5ub3RpZmljYXRpb25zQ29udGFpbmVyID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKHRoaXMucmVnaXN0ZXJDbGlja0xpc3RlbmVyc1RpbWVvdXRJZCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMucmVnaXN0ZXJDbGlja0xpc3RlbmVyc1RpbWVvdXRJZCk7XG4gICAgICB0aGlzLnJlZ2lzdGVyQ2xpY2tMaXN0ZW5lcnNUaW1lb3V0SWQgPSBudWxsO1xuICAgIH1cbiAgICB0aGlzLmFsbFN1YnNjcmlwdGlvbnMuZm9yRWFjaCgoc3VicykgPT4gc3Vicy51bnN1YnNjcmliZSgpKVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5jbGVhblVwTGlzdGVuZXJzQW5kU3Vic0ZvckVycigpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import * as i0 from "@angular/core";
|
|
2
|
-
import * as i1 from "@angular/common";
|
|
3
|
-
import * as i2 from "@progress/kendo-angular-notification";
|
|
4
|
-
export declare class ToastNotificationModule {
|
|
5
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<ToastNotificationModule, never>;
|
|
6
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<ToastNotificationModule, never, [typeof i1.CommonModule, typeof i2.NotificationModule], never>;
|
|
7
|
-
static ɵinj: i0.ɵɵInjectorDeclaration<ToastNotificationModule>;
|
|
8
|
-
}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { OnDestroy, RendererFactory2, TemplateRef } from '@angular/core';
|
|
2
|
-
import { NotificationRef, NotificationService } from '@progress/kendo-angular-notification';
|
|
3
|
-
import { Subscription } from 'rxjs';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export interface ToastNotification {
|
|
6
|
-
content: string | TemplateRef<any> | Function;
|
|
7
|
-
cssClass?: string | Array<string> | Object;
|
|
8
|
-
animation?: any;
|
|
9
|
-
position?: any;
|
|
10
|
-
type?: any;
|
|
11
|
-
closable?: boolean;
|
|
12
|
-
hideAfter?: number;
|
|
13
|
-
action: any;
|
|
14
|
-
}
|
|
15
|
-
export declare class ToastNotificationService implements OnDestroy {
|
|
16
|
-
private readonly notificationService;
|
|
17
|
-
httpStatusHandledInHttpInterceptor: Set<number>;
|
|
18
|
-
errMessagesSet: Set<unknown>;
|
|
19
|
-
allSubscriptions: Subscription[];
|
|
20
|
-
errorNotifications: NotificationRef[];
|
|
21
|
-
infoNotifications: NotificationRef[];
|
|
22
|
-
toastElement: HTMLElement | null;
|
|
23
|
-
notificationsContainerSelector: string;
|
|
24
|
-
private errNotificationClickListener;
|
|
25
|
-
private documentClickListener;
|
|
26
|
-
private readonly renderer;
|
|
27
|
-
notificationsContainer: any;
|
|
28
|
-
registerClickListenersTimeoutId: any;
|
|
29
|
-
notificationAfterHideSubscription$: Subscription | undefined;
|
|
30
|
-
constructor(notificationService: NotificationService, rendererFactory: RendererFactory2);
|
|
31
|
-
/**
|
|
32
|
-
* @param notification
|
|
33
|
-
* default notification config:
|
|
34
|
-
* - content: '',
|
|
35
|
-
* - animation: { type: 'slide', duration: 400 },
|
|
36
|
-
* - position: { horizontal: 'center', vertical: 'top' },
|
|
37
|
-
* - type: { style: 'success', icon: true },
|
|
38
|
-
* - hideAfter: 4000,
|
|
39
|
-
*/
|
|
40
|
-
showToastNotification(notification: ToastNotification): void;
|
|
41
|
-
private processErrorNotification;
|
|
42
|
-
private registerClickListenersErrNotifications;
|
|
43
|
-
private onClickOutCloseErrors;
|
|
44
|
-
hideToastNotifications(filter: 'error' | 'info'): void;
|
|
45
|
-
hideErrorToastNotifications(): void;
|
|
46
|
-
hideInfoToastNotifications(): void;
|
|
47
|
-
private cleanUpListenersAndSubsForErr;
|
|
48
|
-
ngOnDestroy(): void;
|
|
49
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<ToastNotificationService, never>;
|
|
50
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<ToastNotificationService>;
|
|
51
|
-
}
|