toast-message-display 18.0.4 → 18.0.5
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/README.md +902 -59
- package/fesm2022/toast-message-display.mjs +16 -15
- package/fesm2022/toast-message-display.mjs.map +1 -1
- package/package.json +3 -5
- package/toast-message-display-18.0.5.tgz +0 -0
- package/types/toast-message-display.d.ts +227 -0
- package/esm2022/lib/models/horizontal-alignment.enum.mjs +0 -7
- package/esm2022/lib/models/index.mjs +0 -7
- package/esm2022/lib/models/toast-colors.enum.mjs +0 -10
- package/esm2022/lib/models/toast-display-model.mjs +0 -24
- package/esm2022/lib/models/toast-message.model.mjs +0 -11
- package/esm2022/lib/models/toast-options.model.mjs +0 -17
- package/esm2022/lib/models/vertical-alignment.enum.mjs +0 -6
- package/esm2022/lib/pipes/safe-html.pipe.mjs +0 -20
- package/esm2022/lib/services/toast-message.service.mjs +0 -55
- package/esm2022/lib/toast-demo/toast-demo.component.mjs +0 -121
- package/esm2022/lib/toast-message-inline/toast-message-inline.component.mjs +0 -65
- package/esm2022/lib/toast-message.module.mjs +0 -67
- package/esm2022/lib/toast-ui/toast-ui.component.mjs +0 -69
- package/esm2022/lib/utils/color-conversion.service.mjs +0 -33
- package/esm2022/lib/utils/index.mjs +0 -3
- package/esm2022/lib/utils/text-color.service.mjs +0 -93
- package/esm2022/public-api.mjs +0 -10
- package/esm2022/toast-message-display.mjs +0 -5
- package/index.d.ts +0 -5
- package/lib/models/horizontal-alignment.enum.d.ts +0 -5
- package/lib/models/index.d.ts +0 -6
- package/lib/models/toast-colors.enum.d.ts +0 -8
- package/lib/models/toast-display-model.d.ts +0 -19
- package/lib/models/toast-message.model.d.ts +0 -12
- package/lib/models/toast-options.model.d.ts +0 -18
- package/lib/models/vertical-alignment.enum.d.ts +0 -4
- package/lib/pipes/safe-html.pipe.d.ts +0 -8
- package/lib/services/toast-message.service.d.ts +0 -15
- package/lib/toast-demo/toast-demo.component.d.ts +0 -37
- package/lib/toast-message-inline/toast-message-inline.component.d.ts +0 -22
- package/lib/toast-message.module.d.ts +0 -19
- package/lib/toast-ui/toast-ui.component.d.ts +0 -19
- package/lib/utils/color-conversion.service.d.ts +0 -7
- package/lib/utils/index.d.ts +0 -2
- package/lib/utils/text-color.service.d.ts +0 -42
- package/public-api.d.ts +0 -6
- package/toast-message-display-18.0.4.tgz +0 -0
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { PipeTransform, OnInit, EventEmitter } from '@angular/core';
|
|
3
|
+
import * as _angular_platform_browser from '@angular/platform-browser';
|
|
4
|
+
import * as toast_message_display from 'toast-message-display';
|
|
5
|
+
import * as _angular_forms from '@angular/forms';
|
|
6
|
+
import { FormBuilder } from '@angular/forms';
|
|
7
|
+
import * as i8 from '@angular/material/snack-bar';
|
|
8
|
+
import { MatSnackBarVerticalPosition, MatSnackBarRef } from '@angular/material/snack-bar';
|
|
9
|
+
import * as i5 from '@angular/common';
|
|
10
|
+
import * as i7 from '@angular/material/icon';
|
|
11
|
+
import * as i9 from '@angular/material/button';
|
|
12
|
+
import * as i10 from '@angular/material/toolbar';
|
|
13
|
+
import * as i11 from '@angular/material/menu';
|
|
14
|
+
import * as i12 from '@angular/material/radio';
|
|
15
|
+
import * as i13 from '@angular/material/divider';
|
|
16
|
+
|
|
17
|
+
declare class SafeHtmlPipe implements PipeTransform {
|
|
18
|
+
private sanitizer;
|
|
19
|
+
transform(html: string): _angular_platform_browser.SafeHtml;
|
|
20
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SafeHtmlPipe, never>;
|
|
21
|
+
static ɵpipe: i0.ɵɵPipeDeclaration<SafeHtmlPipe, "safeHtml", false>;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
declare enum ToastColors {
|
|
25
|
+
SUCCESS = "#006B31",// green
|
|
26
|
+
ERROR = "#CC0000",// red
|
|
27
|
+
INFO = "#02559F",// grey
|
|
28
|
+
WARN = "#FFC20E",// orange
|
|
29
|
+
NOTIFY = "#080808",// black
|
|
30
|
+
GENERAL = "#f5f5f5"
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
interface ToastDisplayInterface {
|
|
34
|
+
id?: string;
|
|
35
|
+
message: string;
|
|
36
|
+
action?: string;
|
|
37
|
+
color: ToastColors;
|
|
38
|
+
icon?: string;
|
|
39
|
+
}
|
|
40
|
+
declare class ToastDisplay implements ToastDisplayInterface {
|
|
41
|
+
id?: string | undefined;
|
|
42
|
+
message: string;
|
|
43
|
+
action?: string | undefined;
|
|
44
|
+
color: ToastColors;
|
|
45
|
+
icon?: string | undefined;
|
|
46
|
+
constructor(id?: string | undefined, message?: string, action?: string | undefined, color?: ToastColors, icon?: string | undefined);
|
|
47
|
+
static adapt(item?: any): ToastDisplay;
|
|
48
|
+
static randomNumbers(length: number): string;
|
|
49
|
+
static generateRandom(randomChars: string, length: number): string;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
declare class ColorConversionService {
|
|
53
|
+
rgbToHex(rgb: number[]): string;
|
|
54
|
+
hexToRgb(hex: string): number[];
|
|
55
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ColorConversionService, never>;
|
|
56
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<ColorConversionService>;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
declare class TextColorService {
|
|
60
|
+
private colorConversionService;
|
|
61
|
+
constructor(colorConversionService: ColorConversionService);
|
|
62
|
+
/**
|
|
63
|
+
* Determines the appropriate text color (light or dark) based on the background color.
|
|
64
|
+
*
|
|
65
|
+
* @param bgColor - The background color to use for the calculation.
|
|
66
|
+
* @param lightColor - The light color to use if the background is dark.
|
|
67
|
+
* @param darkColor - The dark color to use if the background is light.
|
|
68
|
+
* @returns The appropriate text color (light or dark) based on the background color.
|
|
69
|
+
*/
|
|
70
|
+
textColorForBgColor(bgColor: string, lightColor: string, darkColor: string): string;
|
|
71
|
+
/**
|
|
72
|
+
* Determines whether the first color is darker than the second color.
|
|
73
|
+
*
|
|
74
|
+
* @param color1 - The first color to compare.
|
|
75
|
+
* @param color2 - The second color to compare.
|
|
76
|
+
* @returns The darker of the two colors.
|
|
77
|
+
*/
|
|
78
|
+
isColorDarker(color1: string, color2: string): string;
|
|
79
|
+
calculateLuminance(r: number, g: number, b: number): number;
|
|
80
|
+
/**
|
|
81
|
+
* Fixes the provided color string by ensuring it is in a valid hexadecimal format.
|
|
82
|
+
* If the input color is a hexadecimal string, it will be normalized to a 6-digit format.
|
|
83
|
+
* If the input color is not a hexadecimal string, it will be converted to an RGB array.
|
|
84
|
+
*
|
|
85
|
+
* @param color - The color string to be fixed.
|
|
86
|
+
* @returns An array of RGB values, or the normalized hexadecimal color string.
|
|
87
|
+
*/
|
|
88
|
+
fixColor(color: string): number[];
|
|
89
|
+
/**
|
|
90
|
+
* Converts the color representation of the provided string into HEX value.
|
|
91
|
+
*
|
|
92
|
+
* @param str - The color string to be standardized - 'whitesmoke'.
|
|
93
|
+
* @returns The standardized color string - #DEDEDE.
|
|
94
|
+
*/
|
|
95
|
+
standardize_color(str: string): string;
|
|
96
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TextColorService, never>;
|
|
97
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<TextColorService>;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
declare class ToastUIComponent implements OnInit {
|
|
101
|
+
data: ToastDisplay;
|
|
102
|
+
ngVersion: number;
|
|
103
|
+
close: EventEmitter<ToastDisplay>;
|
|
104
|
+
textColorService: TextColorService;
|
|
105
|
+
private snackBar;
|
|
106
|
+
options: ToastDisplay;
|
|
107
|
+
constructor(data: ToastDisplay);
|
|
108
|
+
ngOnInit(): void;
|
|
109
|
+
get color(): toast_message_display.ToastColors;
|
|
110
|
+
get textColor(): string;
|
|
111
|
+
onCloseToast(options?: ToastDisplay): void;
|
|
112
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ToastUIComponent, never>;
|
|
113
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ToastUIComponent, "app-toast-ui", never, { "options": { "alias": "options"; "required": false; }; }, { "close": "close"; }, never, never, false, never>;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
declare enum HorizontalAlignment {
|
|
117
|
+
LEFT = "left",
|
|
118
|
+
RIGHT = "right",
|
|
119
|
+
CENTER = "center"
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
declare enum VerticalAlignment {
|
|
123
|
+
TOP = "top",
|
|
124
|
+
BOTTOM = "bottom"
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
interface ToastMessageInterface {
|
|
128
|
+
error: string;
|
|
129
|
+
action: string;
|
|
130
|
+
icon: string;
|
|
131
|
+
}
|
|
132
|
+
declare class ToastMessage implements ToastMessageInterface {
|
|
133
|
+
error: string;
|
|
134
|
+
action: string;
|
|
135
|
+
icon: string;
|
|
136
|
+
constructor(error?: string, action?: string, icon?: string);
|
|
137
|
+
static adapt(item?: any): ToastMessageInterface;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
interface ToastOptionsInterface {
|
|
141
|
+
duration?: number;
|
|
142
|
+
horizontalPosition?: HorizontalAlignment;
|
|
143
|
+
verticalPosition?: MatSnackBarVerticalPosition;
|
|
144
|
+
data?: ToastDisplay;
|
|
145
|
+
}
|
|
146
|
+
declare class ToastOptions implements ToastOptionsInterface {
|
|
147
|
+
duration?: number | undefined;
|
|
148
|
+
horizontalPosition: HorizontalAlignment;
|
|
149
|
+
verticalPosition: VerticalAlignment;
|
|
150
|
+
data?: ToastDisplay | undefined;
|
|
151
|
+
constructor(duration?: number | undefined, horizontalPosition?: HorizontalAlignment, verticalPosition?: VerticalAlignment, data?: ToastDisplay | undefined);
|
|
152
|
+
static adapt(item?: any): ToastOptionsInterface;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
declare class ToastMessageDisplayService {
|
|
156
|
+
private snackBar;
|
|
157
|
+
private toastQueue;
|
|
158
|
+
private isToastVisible;
|
|
159
|
+
defaultDuration: number;
|
|
160
|
+
snackBarRef: MatSnackBarRef<any> | undefined;
|
|
161
|
+
toastMessage(options?: ToastDisplay, duration?: number, vertical?: VerticalAlignment): void;
|
|
162
|
+
private showNextToast;
|
|
163
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ToastMessageDisplayService, never>;
|
|
164
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<ToastMessageDisplayService>;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
declare class ToastDemoComponent {
|
|
168
|
+
random: () => number;
|
|
169
|
+
randomNumber: (min: number, max: number) => number;
|
|
170
|
+
fb: FormBuilder;
|
|
171
|
+
toastMessageDisplayService: ToastMessageDisplayService;
|
|
172
|
+
type: string;
|
|
173
|
+
position: _angular_forms.FormControl<string | null>;
|
|
174
|
+
icons: string[];
|
|
175
|
+
toastSamples: ({
|
|
176
|
+
message: string;
|
|
177
|
+
color: ToastColors;
|
|
178
|
+
action: string;
|
|
179
|
+
icon?: undefined;
|
|
180
|
+
} | {
|
|
181
|
+
message: string;
|
|
182
|
+
color: ToastColors;
|
|
183
|
+
icon: string;
|
|
184
|
+
action?: undefined;
|
|
185
|
+
} | {
|
|
186
|
+
message: string;
|
|
187
|
+
color: ToastColors;
|
|
188
|
+
icon: string;
|
|
189
|
+
action: string;
|
|
190
|
+
})[];
|
|
191
|
+
pickToastSample?: ToastDisplay;
|
|
192
|
+
onSelectType(type: string): void;
|
|
193
|
+
onBasic(type: string, icon?: string, action?: string): void;
|
|
194
|
+
presentToast(color: ToastColors, icon?: string, action?: string): void;
|
|
195
|
+
onInline(): void;
|
|
196
|
+
onClosedToast(toast?: ToastDisplay): void;
|
|
197
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ToastDemoComponent, never>;
|
|
198
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ToastDemoComponent, "app-toast-display-demo", never, {}, {}, never, never, false, never>;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
declare class ToastMessageInlineComponent implements OnInit {
|
|
202
|
+
close: EventEmitter<ToastDisplay>;
|
|
203
|
+
textColorService: TextColorService;
|
|
204
|
+
toastList: ToastDisplay[];
|
|
205
|
+
dismissToasts: any[];
|
|
206
|
+
set toast(value: any);
|
|
207
|
+
get option(): ToastDisplay | null;
|
|
208
|
+
duration: number;
|
|
209
|
+
position: VerticalAlignment;
|
|
210
|
+
get color(): ToastColors | "";
|
|
211
|
+
get textColor(): string;
|
|
212
|
+
ngOnInit(): void;
|
|
213
|
+
onCloseToast(toast?: ToastDisplay): void;
|
|
214
|
+
expireTime(toast: any): void;
|
|
215
|
+
removeToast(toast: any): void;
|
|
216
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ToastMessageInlineComponent, never>;
|
|
217
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ToastMessageInlineComponent, "app-toast-message-display-inline", never, { "toast": { "alias": "toast"; "required": false; }; "duration": { "alias": "duration"; "required": false; }; "position": { "alias": "position"; "required": false; }; }, { "close": "close"; }, never, never, false, never>;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
declare class ToastMessageDisplayModule {
|
|
221
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ToastMessageDisplayModule, never>;
|
|
222
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<ToastMessageDisplayModule, [typeof SafeHtmlPipe, typeof ToastUIComponent, typeof ToastDemoComponent, typeof ToastMessageInlineComponent], [typeof i5.CommonModule, typeof _angular_forms.ReactiveFormsModule, typeof i7.MatIconModule, typeof i8.MatSnackBarModule, typeof i9.MatButtonModule, typeof i10.MatToolbarModule, typeof i11.MatMenuModule, typeof i12.MatRadioModule, typeof i13.MatDividerModule], [typeof ToastUIComponent, typeof ToastDemoComponent]>;
|
|
223
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<ToastMessageDisplayModule>;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
export { HorizontalAlignment, ToastColors, ToastDemoComponent, ToastDisplay, ToastMessage, ToastMessageDisplayModule, ToastMessageDisplayService, ToastMessageInlineComponent, ToastOptions, ToastUIComponent, VerticalAlignment };
|
|
227
|
+
export type { ToastDisplayInterface, ToastMessageInterface, ToastOptionsInterface };
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export var HorizontalAlignment;
|
|
2
|
-
(function (HorizontalAlignment) {
|
|
3
|
-
HorizontalAlignment["LEFT"] = "left";
|
|
4
|
-
HorizontalAlignment["RIGHT"] = "right";
|
|
5
|
-
HorizontalAlignment["CENTER"] = "center";
|
|
6
|
-
})(HorizontalAlignment || (HorizontalAlignment = {}));
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9yaXpvbnRhbC1hbGlnbm1lbnQuZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RvYXN0LW1lc3NhZ2UtZGlzcGxheS9zcmMvbGliL21vZGVscy9ob3Jpem9udGFsLWFsaWdubWVudC5lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLG1CQUlYO0FBSkQsV0FBWSxtQkFBbUI7SUFDN0Isb0NBQWEsQ0FBQTtJQUNiLHNDQUFlLENBQUE7SUFDZix3Q0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVBSlcsbUJBQW1CLEtBQW5CLG1CQUFtQixRQUk5QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIEhvcml6b250YWxBbGlnbm1lbnQge1xuICBMRUZUID0gJ2xlZnQnLFxuICBSSUdIVCA9ICdyaWdodCcsXG4gIENFTlRFUiA9ICdjZW50ZXInLFxufVxuIl19
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export * from "./horizontal-alignment.enum";
|
|
2
|
-
export * from "./vertical-alignment.enum";
|
|
3
|
-
export * from "./toast-colors.enum";
|
|
4
|
-
export * from "./toast-display-model";
|
|
5
|
-
export * from "./toast-message.model";
|
|
6
|
-
export * from "./toast-options.model";
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90b2FzdC1tZXNzYWdlLWRpc3BsYXkvc3JjL2xpYi9tb2RlbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw2QkFBNkIsQ0FBQTtBQUMzQyxjQUFjLDJCQUEyQixDQUFBO0FBQ3pDLGNBQWMscUJBQXFCLENBQUE7QUFFbkMsY0FBYyx1QkFBdUIsQ0FBQTtBQUNyQyxjQUFjLHVCQUF1QixDQUFBO0FBQ3JDLGNBQWMsdUJBQXVCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9ob3Jpem9udGFsLWFsaWdubWVudC5lbnVtXCJcbmV4cG9ydCAqIGZyb20gXCIuL3ZlcnRpY2FsLWFsaWdubWVudC5lbnVtXCJcbmV4cG9ydCAqIGZyb20gXCIuL3RvYXN0LWNvbG9ycy5lbnVtXCJcblxuZXhwb3J0ICogZnJvbSBcIi4vdG9hc3QtZGlzcGxheS1tb2RlbFwiXG5leHBvcnQgKiBmcm9tIFwiLi90b2FzdC1tZXNzYWdlLm1vZGVsXCJcbmV4cG9ydCAqIGZyb20gXCIuL3RvYXN0LW9wdGlvbnMubW9kZWxcIlxuXG4iXX0=
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export var ToastColors;
|
|
2
|
-
(function (ToastColors) {
|
|
3
|
-
ToastColors["SUCCESS"] = "#006B31";
|
|
4
|
-
ToastColors["ERROR"] = "#CC0000";
|
|
5
|
-
ToastColors["INFO"] = "#02559F";
|
|
6
|
-
ToastColors["WARN"] = "#FFC20E";
|
|
7
|
-
ToastColors["NOTIFY"] = "#080808";
|
|
8
|
-
ToastColors["GENERAL"] = "#f5f5f5";
|
|
9
|
-
})(ToastColors || (ToastColors = {}));
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3QtY29sb3JzLmVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90b2FzdC1tZXNzYWdlLWRpc3BsYXkvc3JjL2xpYi9tb2RlbHMvdG9hc3QtY29sb3JzLmVudW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksV0FPWDtBQVBELFdBQVksV0FBVztJQUNyQixrQ0FBbUIsQ0FBQTtJQUNuQixnQ0FBaUIsQ0FBQTtJQUNqQiwrQkFBZ0IsQ0FBQTtJQUNoQiwrQkFBZ0IsQ0FBQTtJQUNoQixpQ0FBa0IsQ0FBQTtJQUNsQixrQ0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBUFcsV0FBVyxLQUFYLFdBQVcsUUFPdEIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBUb2FzdENvbG9ycyB7XG4gIFNVQ0NFU1MgPSAnIzAwNkIzMScsIC8vIGdyZWVuXG4gIEVSUk9SID0gJyNDQzAwMDAnLCAgIC8vIHJlZFxuICBJTkZPID0gJyMwMjU1OUYnLCAgICAvLyBncmV5XG4gIFdBUk4gPSAnI0ZGQzIwRScsICAgIC8vIG9yYW5nZVxuICBOT1RJRlkgPSAnIzA4MDgwOCcsICAgIC8vIGJsYWNrXG4gIEdFTkVSQUwgPSAnI2Y1ZjVmNScsICAgIC8vIGxpZ2h0XG59XG4iXX0=
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { ToastColors } from "./toast-colors.enum";
|
|
2
|
-
export class ToastDisplay {
|
|
3
|
-
constructor(id, message = 'Sample message', action, color = ToastColors.INFO, icon) {
|
|
4
|
-
this.id = id;
|
|
5
|
-
this.message = message;
|
|
6
|
-
this.action = action;
|
|
7
|
-
this.color = color;
|
|
8
|
-
this.icon = icon;
|
|
9
|
-
}
|
|
10
|
-
static adapt(item) {
|
|
11
|
-
return new ToastDisplay((item?.id) ? item.id : this.randomNumbers(8), item?.message, item?.action, item?.color, item?.icon);
|
|
12
|
-
}
|
|
13
|
-
static randomNumbers(length) {
|
|
14
|
-
return this.generateRandom('0123456789', length);
|
|
15
|
-
}
|
|
16
|
-
static generateRandom(randomChars, length) {
|
|
17
|
-
var result = '';
|
|
18
|
-
for (var i = 0; i < length; i++) {
|
|
19
|
-
result += randomChars.charAt(Math.floor(Math.random() * randomChars.length));
|
|
20
|
-
}
|
|
21
|
-
return result;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3QtZGlzcGxheS1tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RvYXN0LW1lc3NhZ2UtZGlzcGxheS9zcmMvbGliL21vZGVscy90b2FzdC1kaXNwbGF5LW1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQVVsRCxNQUFNLE9BQU8sWUFBWTtJQUV2QixZQUNTLEVBQVcsRUFDWCxVQUFVLGdCQUFnQixFQUMxQixNQUFlLEVBQ2YsUUFBUSxXQUFXLENBQUMsSUFBSSxFQUN4QixJQUFhO1FBSmIsT0FBRSxHQUFGLEVBQUUsQ0FBUztRQUNYLFlBQU8sR0FBUCxPQUFPLENBQW1CO1FBQzFCLFdBQU0sR0FBTixNQUFNLENBQVM7UUFDZixVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUN4QixTQUFJLEdBQUosSUFBSSxDQUFTO0lBQ25CLENBQUM7SUFFSixNQUFNLENBQUMsS0FBSyxDQUFDLElBQVU7UUFDckIsT0FBTyxJQUFJLFlBQVksQ0FDckIsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQzVDLElBQUksRUFBRSxPQUFPLEVBQ2IsSUFBSSxFQUFFLE1BQU0sRUFDWixJQUFJLEVBQUUsS0FBSyxFQUNYLElBQUksRUFBRSxJQUFJLENBQ1gsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsYUFBYSxDQUFDLE1BQWM7UUFDakMsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQTtJQUNsRCxDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxXQUFtQixFQUFFLE1BQWM7UUFFdkQsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFBO1FBQ2YsS0FBTSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRyxDQUFDO1lBQ2hDLE1BQU0sSUFBSSxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFBO1FBQ2hGLENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQTtJQUVmLENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRvYXN0Q29sb3JzIH0gZnJvbSBcIi4vdG9hc3QtY29sb3JzLmVudW1cIjtcblxuZXhwb3J0IGludGVyZmFjZSBUb2FzdERpc3BsYXlJbnRlcmZhY2Uge1xuICBpZD86IHN0cmluZztcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBhY3Rpb24/OiBzdHJpbmc7XG4gIGNvbG9yOiBUb2FzdENvbG9ycztcbiAgaWNvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFRvYXN0RGlzcGxheSBpbXBsZW1lbnRzIFRvYXN0RGlzcGxheUludGVyZmFjZSB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGlkPzogc3RyaW5nLFxuICAgIHB1YmxpYyBtZXNzYWdlID0gJ1NhbXBsZSBtZXNzYWdlJyxcbiAgICBwdWJsaWMgYWN0aW9uPzogc3RyaW5nLFxuICAgIHB1YmxpYyBjb2xvciA9IFRvYXN0Q29sb3JzLklORk8sXG4gICAgcHVibGljIGljb24/OiBzdHJpbmcsXG4gICkge31cblxuICBzdGF0aWMgYWRhcHQoaXRlbT86IGFueSkge1xuICAgIHJldHVybiBuZXcgVG9hc3REaXNwbGF5KFxuICAgICAgKGl0ZW0/LmlkKSA/IGl0ZW0uaWQgOiB0aGlzLnJhbmRvbU51bWJlcnMoOCksXG4gICAgICBpdGVtPy5tZXNzYWdlLFxuICAgICAgaXRlbT8uYWN0aW9uLFxuICAgICAgaXRlbT8uY29sb3IsXG4gICAgICBpdGVtPy5pY29uLFxuICAgICk7XG4gIH1cblxuICBzdGF0aWMgcmFuZG9tTnVtYmVycyhsZW5ndGg6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmdlbmVyYXRlUmFuZG9tKCcwMTIzNDU2Nzg5JywgbGVuZ3RoKVxuICB9XG5cbiAgc3RhdGljIGdlbmVyYXRlUmFuZG9tKHJhbmRvbUNoYXJzOiBzdHJpbmcsIGxlbmd0aDogbnVtYmVyKSB7XG5cbiAgICB2YXIgcmVzdWx0ID0gJydcbiAgICBmb3IgKCB2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKyApIHtcbiAgICAgICAgcmVzdWx0ICs9IHJhbmRvbUNoYXJzLmNoYXJBdChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiByYW5kb21DaGFycy5sZW5ndGgpKVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0XG5cbiAgfVxuXG59XG4iXX0=
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
export class ToastMessage {
|
|
2
|
-
constructor(error = '', action = '', icon = 'error') {
|
|
3
|
-
this.error = error;
|
|
4
|
-
this.action = action;
|
|
5
|
-
this.icon = icon;
|
|
6
|
-
}
|
|
7
|
-
static adapt(item) {
|
|
8
|
-
return new ToastMessage(item?.error, item?.action, item?.icon);
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3QtbWVzc2FnZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RvYXN0LW1lc3NhZ2UtZGlzcGxheS9zcmMvbGliL21vZGVscy90b2FzdC1tZXNzYWdlLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE1BQU0sT0FBTyxZQUFZO0lBQ3ZCLFlBQ1MsUUFBUSxFQUFFLEVBQ1YsU0FBUyxFQUFFLEVBQ1gsT0FBTyxPQUFPO1FBRmQsVUFBSyxHQUFMLEtBQUssQ0FBSztRQUNWLFdBQU0sR0FBTixNQUFNLENBQUs7UUFDWCxTQUFJLEdBQUosSUFBSSxDQUFVO0lBQ3BCLENBQUM7SUFFTCxNQUFNLENBQUMsS0FBSyxDQUFDLElBQVU7UUFDcEIsT0FBTyxJQUFJLFlBQVksQ0FDckIsSUFBSSxFQUFFLEtBQUssRUFDWCxJQUFJLEVBQUUsTUFBTSxFQUNaLElBQUksRUFBRSxJQUFJLENBQ1gsQ0FBQTtJQUVILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgVG9hc3RNZXNzYWdlSW50ZXJmYWNlIHtcbiAgZXJyb3I6IHN0cmluZztcbiAgYWN0aW9uOiBzdHJpbmc7XG4gIGljb246IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFRvYXN0TWVzc2FnZSBpbXBsZW1lbnRzIFRvYXN0TWVzc2FnZUludGVyZmFjZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBlcnJvciA9ICcnLFxuICAgIHB1YmxpYyBhY3Rpb24gPSAnJyxcbiAgICBwdWJsaWMgaWNvbiA9ICdlcnJvcicsXG4gICkge31cblxuIHN0YXRpYyBhZGFwdChpdGVtPzogYW55KTogVG9hc3RNZXNzYWdlSW50ZXJmYWNlIHtcbiAgICByZXR1cm4gbmV3IFRvYXN0TWVzc2FnZShcbiAgICAgIGl0ZW0/LmVycm9yLFxuICAgICAgaXRlbT8uYWN0aW9uLFxuICAgICAgaXRlbT8uaWNvbixcbiAgICApXG5cbiAgfVxufVxuIl19
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { HorizontalAlignment } from "./horizontal-alignment.enum";
|
|
2
|
-
import { ToastDisplay } from "./toast-display-model";
|
|
3
|
-
import { VerticalAlignment } from "./vertical-alignment.enum";
|
|
4
|
-
export class ToastOptions {
|
|
5
|
-
constructor(duration, horizontalPosition = HorizontalAlignment.CENTER, verticalPosition = VerticalAlignment.TOP, data) {
|
|
6
|
-
this.duration = duration;
|
|
7
|
-
this.horizontalPosition = horizontalPosition;
|
|
8
|
-
this.verticalPosition = verticalPosition;
|
|
9
|
-
this.data = data;
|
|
10
|
-
}
|
|
11
|
-
static adapt(item) {
|
|
12
|
-
if (item?.duration)
|
|
13
|
-
item.duration = item.duration * 1000;
|
|
14
|
-
return new ToastOptions(item?.duration, item?.horizontalPosition, item?.verticalPosition, item?.data ? ToastDisplay.adapt(item.data) : ToastDisplay.adapt());
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3Qtb3B0aW9ucy5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RvYXN0LW1lc3NhZ2UtZGlzcGxheS9zcmMvbGliL21vZGVscy90b2FzdC1vcHRpb25zLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQVM5RCxNQUFNLE9BQU8sWUFBWTtJQUV2QixZQUNTLFFBQWlCLEVBQ2pCLHFCQUFxQixtQkFBbUIsQ0FBQyxNQUFNLEVBQy9DLG1CQUFtQixpQkFBaUIsQ0FBQyxHQUFHLEVBQ3hDLElBQW1CO1FBSG5CLGFBQVEsR0FBUixRQUFRLENBQVM7UUFDakIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUE2QjtRQUMvQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXdCO1FBQ3hDLFNBQUksR0FBSixJQUFJLENBQWU7SUFDekIsQ0FBQztJQUVKLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBVTtRQUVyQixJQUFHLElBQUksRUFBRSxRQUFRO1lBQUUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQTtRQUV2RCxPQUFPLElBQUksWUFBWSxDQUNyQixJQUFJLEVBQUUsUUFBUSxFQUNkLElBQUksRUFBRSxrQkFBa0IsRUFDeEIsSUFBSSxFQUFFLGdCQUFnQixFQUN0QixJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUNsRSxDQUFBO0lBQ0gsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWF0U25hY2tCYXJWZXJ0aWNhbFBvc2l0aW9uIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhclwiO1xuaW1wb3J0IHsgSG9yaXpvbnRhbEFsaWdubWVudCB9IGZyb20gXCIuL2hvcml6b250YWwtYWxpZ25tZW50LmVudW1cIjtcbmltcG9ydCB7IFRvYXN0RGlzcGxheSB9IGZyb20gXCIuL3RvYXN0LWRpc3BsYXktbW9kZWxcIjtcbmltcG9ydCB7IFZlcnRpY2FsQWxpZ25tZW50IH0gZnJvbSBcIi4vdmVydGljYWwtYWxpZ25tZW50LmVudW1cIjtcblxuZXhwb3J0IGludGVyZmFjZSBUb2FzdE9wdGlvbnNJbnRlcmZhY2Uge1xuICBkdXJhdGlvbj86IG51bWJlclxuICBob3Jpem9udGFsUG9zaXRpb24/OiBIb3Jpem9udGFsQWxpZ25tZW50XG4gIHZlcnRpY2FsUG9zaXRpb24/OiBNYXRTbmFja0JhclZlcnRpY2FsUG9zaXRpb25cbiAgZGF0YT86IFRvYXN0RGlzcGxheVxufVxuXG5leHBvcnQgY2xhc3MgVG9hc3RPcHRpb25zIGltcGxlbWVudHMgVG9hc3RPcHRpb25zSW50ZXJmYWNlIHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZHVyYXRpb24/OiBudW1iZXIsXG4gICAgcHVibGljIGhvcml6b250YWxQb3NpdGlvbiA9IEhvcml6b250YWxBbGlnbm1lbnQuQ0VOVEVSLFxuICAgIHB1YmxpYyB2ZXJ0aWNhbFBvc2l0aW9uID0gVmVydGljYWxBbGlnbm1lbnQuVE9QLFxuICAgIHB1YmxpYyBkYXRhPzogVG9hc3REaXNwbGF5XG4gICkge31cblxuICBzdGF0aWMgYWRhcHQoaXRlbT86IGFueSk6IFRvYXN0T3B0aW9uc0ludGVyZmFjZSB7XG5cbiAgICBpZihpdGVtPy5kdXJhdGlvbikgaXRlbS5kdXJhdGlvbiA9IGl0ZW0uZHVyYXRpb24gKiAxMDAwXG5cbiAgICByZXR1cm4gbmV3IFRvYXN0T3B0aW9ucyhcbiAgICAgIGl0ZW0/LmR1cmF0aW9uLFxuICAgICAgaXRlbT8uaG9yaXpvbnRhbFBvc2l0aW9uLFxuICAgICAgaXRlbT8udmVydGljYWxQb3NpdGlvbixcbiAgICAgIGl0ZW0/LmRhdGEgPyBUb2FzdERpc3BsYXkuYWRhcHQoaXRlbS5kYXRhKSA6IFRvYXN0RGlzcGxheS5hZGFwdCgpXG4gICAgKVxuICB9XG5cbn1cbiJdfQ==
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export var VerticalAlignment;
|
|
2
|
-
(function (VerticalAlignment) {
|
|
3
|
-
VerticalAlignment["TOP"] = "top";
|
|
4
|
-
VerticalAlignment["BOTTOM"] = "bottom";
|
|
5
|
-
})(VerticalAlignment || (VerticalAlignment = {}));
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVydGljYWwtYWxpZ25tZW50LmVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90b2FzdC1tZXNzYWdlLWRpc3BsYXkvc3JjL2xpYi9tb2RlbHMvdmVydGljYWwtYWxpZ25tZW50LmVudW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksaUJBR1g7QUFIRCxXQUFZLGlCQUFpQjtJQUMzQixnQ0FBVyxDQUFBO0lBQ1gsc0NBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQUhXLGlCQUFpQixLQUFqQixpQkFBaUIsUUFHNUIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBWZXJ0aWNhbEFsaWdubWVudCB7XG4gIFRPUCA9ICd0b3AnLFxuICBCT1RUT00gPSAnYm90dG9tJyxcbn1cbiJdfQ==
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { Pipe, inject } from '@angular/core';
|
|
2
|
-
import { DomSanitizer } from "@angular/platform-browser";
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class SafeHtmlPipe {
|
|
5
|
-
constructor() {
|
|
6
|
-
this.sanitizer = inject(DomSanitizer);
|
|
7
|
-
}
|
|
8
|
-
transform(html) {
|
|
9
|
-
return this.sanitizer.bypassSecurityTrustHtml(html);
|
|
10
|
-
}
|
|
11
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SafeHtmlPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
12
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: SafeHtmlPipe, name: "safeHtml" }); }
|
|
13
|
-
}
|
|
14
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SafeHtmlPipe, decorators: [{
|
|
15
|
-
type: Pipe,
|
|
16
|
-
args: [{
|
|
17
|
-
name: 'safeHtml',
|
|
18
|
-
}]
|
|
19
|
-
}] });
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZS1odG1sLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90b2FzdC1tZXNzYWdlLWRpc3BsYXkvc3JjL2xpYi9waXBlcy9zYWZlLWh0bWwucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDJCQUEyQixDQUFDOztBQUt2RCxNQUFNLE9BQU8sWUFBWTtJQUh6QjtRQUtVLGNBQVMsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUE7S0FNekM7SUFKQyxTQUFTLENBQUMsSUFBWTtRQUNwQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDckQsQ0FBQzsrR0FOVSxZQUFZOzZHQUFaLFlBQVk7OzRGQUFaLFlBQVk7a0JBSHhCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLFVBQVU7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0RvbVNhbml0aXplcn0gZnJvbSBcIkBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXJcIjtcblxuQFBpcGUoe1xuICBuYW1lOiAnc2FmZUh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBTYWZlSHRtbFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICBwcml2YXRlIHNhbml0aXplciA9IGluamVjdChEb21TYW5pdGl6ZXIpXG5cbiAgdHJhbnNmb3JtKGh0bWw6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChodG1sKVxuICB9XG5cbn1cbiJdfQ==
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { inject, Injectable } from '@angular/core';
|
|
2
|
-
import { MatSnackBar } from '@angular/material/snack-bar';
|
|
3
|
-
import { ToastUIComponent } from '../toast-ui/toast-ui.component';
|
|
4
|
-
import { ToastOptions } from '../models/toast-options.model';
|
|
5
|
-
import { ToastDisplay } from '../models/toast-display-model';
|
|
6
|
-
import { take } from 'rxjs/operators';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
export class ToastMessageDisplayService {
|
|
9
|
-
constructor() {
|
|
10
|
-
this.snackBar = inject(MatSnackBar);
|
|
11
|
-
this.toastQueue = [];
|
|
12
|
-
this.isToastVisible = false;
|
|
13
|
-
this.defaultDuration = 3;
|
|
14
|
-
}
|
|
15
|
-
toastMessage(options = ToastDisplay.adapt(), duration, vertical) {
|
|
16
|
-
this.toastQueue.push({ options, duration, vertical });
|
|
17
|
-
this.showNextToast();
|
|
18
|
-
}
|
|
19
|
-
showNextToast() {
|
|
20
|
-
if (this.isToastVisible || this.toastQueue.length === 0)
|
|
21
|
-
return;
|
|
22
|
-
const { options, duration, vertical } = this.toastQueue.shift();
|
|
23
|
-
const vertPosition = (vertical) ? vertical : 'top';
|
|
24
|
-
const durationDismiss = (!options.action) ? this.defaultDuration : duration;
|
|
25
|
-
const displayOptions = ToastOptions.adapt({
|
|
26
|
-
duration: durationDismiss,
|
|
27
|
-
horizontalPosition: 'center',
|
|
28
|
-
verticalPosition: vertPosition,
|
|
29
|
-
data: options,
|
|
30
|
-
});
|
|
31
|
-
this.isToastVisible = true;
|
|
32
|
-
this.snackBarRef = this.snackBar.openFromComponent(ToastUIComponent, displayOptions);
|
|
33
|
-
if (this.snackBarRef) {
|
|
34
|
-
this.snackBarRef
|
|
35
|
-
.afterDismissed()
|
|
36
|
-
.pipe(take(1))
|
|
37
|
-
.subscribe(() => {
|
|
38
|
-
this.isToastVisible = false;
|
|
39
|
-
this.showNextToast();
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
else {
|
|
43
|
-
console.error('Snackbar reference is undefined. Unable to subscribe to dismissal event.');
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ToastMessageDisplayService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
47
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ToastMessageDisplayService, providedIn: 'root' }); }
|
|
48
|
-
}
|
|
49
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ToastMessageDisplayService, decorators: [{
|
|
50
|
-
type: Injectable,
|
|
51
|
-
args: [{
|
|
52
|
-
providedIn: 'root'
|
|
53
|
-
}]
|
|
54
|
-
}] });
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3QtbWVzc2FnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdG9hc3QtbWVzc2FnZS1kaXNwbGF5L3NyYy9saWIvc2VydmljZXMvdG9hc3QtbWVzc2FnZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxXQUFXLEVBQStDLE1BQU0sNkJBQTZCLENBQUM7QUFDdkcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRTdELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBS3RDLE1BQU0sT0FBTywwQkFBMEI7SUFIdkM7UUFLVSxhQUFRLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRS9CLGVBQVUsR0FBaUYsRUFBRSxDQUFDO1FBQzlGLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBRS9CLG9CQUFlLEdBQUcsQ0FBQyxDQUFDO0tBMENyQjtJQXRDQyxZQUFZLENBQUMsT0FBTyxHQUFHLFlBQVksQ0FBQyxLQUFLLEVBQUUsRUFBRSxRQUFpQixFQUFFLFFBQTRCO1FBQzFGLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRU8sYUFBYTtRQUVuQixJQUFJLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUFFLE9BQU07UUFFL0QsTUFBTSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUcsQ0FBQTtRQUVoRSxNQUFNLFlBQVksR0FBZ0MsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUE7UUFFL0UsTUFBTSxlQUFlLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFBO1FBRTNFLE1BQU0sY0FBYyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUM7WUFDeEMsUUFBUSxFQUFFLGVBQWU7WUFDekIsa0JBQWtCLEVBQUUsUUFBUTtZQUM1QixnQkFBZ0IsRUFBRSxZQUFZO1lBQzlCLElBQUksRUFBRSxPQUFPO1NBQ2QsQ0FBQyxDQUFBO1FBRUYsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLGdCQUFnQixFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBRXJGLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxXQUFXO2lCQUNiLGNBQWMsRUFBRTtpQkFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDYixTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO2dCQUM1QixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkIsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sQ0FBQyxLQUFLLENBQUMsMEVBQTBFLENBQUMsQ0FBQztRQUM1RixDQUFDO0lBRUgsQ0FBQzsrR0FoRFUsMEJBQTBCO21IQUExQiwwQkFBMEIsY0FGekIsTUFBTTs7NEZBRVAsMEJBQTBCO2tCQUh0QyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0U25hY2tCYXIsIE1hdFNuYWNrQmFyUmVmLCBNYXRTbmFja0JhclZlcnRpY2FsUG9zaXRpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xuaW1wb3J0IHsgVG9hc3RVSUNvbXBvbmVudCB9IGZyb20gJy4uL3RvYXN0LXVpL3RvYXN0LXVpLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUb2FzdE9wdGlvbnMgfSBmcm9tICcuLi9tb2RlbHMvdG9hc3Qtb3B0aW9ucy5tb2RlbCc7XG5pbXBvcnQgeyBWZXJ0aWNhbEFsaWdubWVudCB9IGZyb20gJy4uL21vZGVscy92ZXJ0aWNhbC1hbGlnbm1lbnQuZW51bSc7XG5pbXBvcnQgeyBUb2FzdERpc3BsYXkgfSBmcm9tICcuLi9tb2RlbHMvdG9hc3QtZGlzcGxheS1tb2RlbCc7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBUb2FzdE1lc3NhZ2VEaXNwbGF5U2VydmljZSB7XG5cbiAgcHJpdmF0ZSBzbmFja0JhciA9IGluamVjdChNYXRTbmFja0Jhcik7XG5cbiAgcHJpdmF0ZSB0b2FzdFF1ZXVlOiB7IG9wdGlvbnM6IFRvYXN0RGlzcGxheSwgZHVyYXRpb24/OiBudW1iZXIsIHZlcnRpY2FsPzogVmVydGljYWxBbGlnbm1lbnQgfVtdID0gW107XG4gIHByaXZhdGUgaXNUb2FzdFZpc2libGUgPSBmYWxzZTtcblxuICBkZWZhdWx0RHVyYXRpb24gPSAzO1xuXG4gIHNuYWNrQmFyUmVmOiBNYXRTbmFja0JhclJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gIHRvYXN0TWVzc2FnZShvcHRpb25zID0gVG9hc3REaXNwbGF5LmFkYXB0KCksIGR1cmF0aW9uPzogbnVtYmVyLCB2ZXJ0aWNhbD86IFZlcnRpY2FsQWxpZ25tZW50KSB7XG4gICAgdGhpcy50b2FzdFF1ZXVlLnB1c2goeyBvcHRpb25zLCBkdXJhdGlvbiwgdmVydGljYWwgfSk7XG4gICAgdGhpcy5zaG93TmV4dFRvYXN0KCk7XG4gIH1cblxuICBwcml2YXRlIHNob3dOZXh0VG9hc3QoKSB7XG5cbiAgICBpZiAodGhpcy5pc1RvYXN0VmlzaWJsZSB8fCB0aGlzLnRvYXN0UXVldWUubGVuZ3RoID09PSAwKSByZXR1cm5cblxuICAgIGNvbnN0IHsgb3B0aW9ucywgZHVyYXRpb24sIHZlcnRpY2FsIH0gPSB0aGlzLnRvYXN0UXVldWUuc2hpZnQoKSFcblxuICAgIGNvbnN0IHZlcnRQb3NpdGlvbjogTWF0U25hY2tCYXJWZXJ0aWNhbFBvc2l0aW9uID0gKHZlcnRpY2FsKSA/IHZlcnRpY2FsIDogJ3RvcCdcblxuICAgIGNvbnN0IGR1cmF0aW9uRGlzbWlzcyA9ICghb3B0aW9ucy5hY3Rpb24pID8gdGhpcy5kZWZhdWx0RHVyYXRpb24gOiBkdXJhdGlvblxuXG4gICAgY29uc3QgZGlzcGxheU9wdGlvbnMgPSBUb2FzdE9wdGlvbnMuYWRhcHQoe1xuICAgICAgZHVyYXRpb246IGR1cmF0aW9uRGlzbWlzcyxcbiAgICAgIGhvcml6b250YWxQb3NpdGlvbjogJ2NlbnRlcicsXG4gICAgICB2ZXJ0aWNhbFBvc2l0aW9uOiB2ZXJ0UG9zaXRpb24sXG4gICAgICBkYXRhOiBvcHRpb25zLFxuICAgIH0pXG5cbiAgICB0aGlzLmlzVG9hc3RWaXNpYmxlID0gdHJ1ZTtcbiAgICB0aGlzLnNuYWNrQmFyUmVmID0gdGhpcy5zbmFja0Jhci5vcGVuRnJvbUNvbXBvbmVudChUb2FzdFVJQ29tcG9uZW50LCBkaXNwbGF5T3B0aW9ucyk7XG5cbiAgICBpZiAodGhpcy5zbmFja0JhclJlZikge1xuICAgICAgdGhpcy5zbmFja0JhclJlZlxuICAgICAgICAuYWZ0ZXJEaXNtaXNzZWQoKVxuICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmlzVG9hc3RWaXNpYmxlID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5zaG93TmV4dFRvYXN0KCk7XG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdTbmFja2JhciByZWZlcmVuY2UgaXMgdW5kZWZpbmVkLiBVbmFibGUgdG8gc3Vic2NyaWJlIHRvIGRpc21pc3NhbCBldmVudC4nKTtcbiAgICB9XG5cbiAgfVxufVxuIl19
|
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
import { Component, inject } from '@angular/core';
|
|
2
|
-
import { ToastColors, ToastDisplay, VerticalAlignment } from '../models';
|
|
3
|
-
import { FormBuilder } from '@angular/forms';
|
|
4
|
-
import { ToastMessageDisplayService } from '../services/toast-message.service';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@angular/common";
|
|
7
|
-
import * as i2 from "@angular/forms";
|
|
8
|
-
import * as i3 from "@angular/material/icon";
|
|
9
|
-
import * as i4 from "@angular/material/button";
|
|
10
|
-
import * as i5 from "@angular/material/toolbar";
|
|
11
|
-
import * as i6 from "@angular/material/menu";
|
|
12
|
-
import * as i7 from "@angular/material/radio";
|
|
13
|
-
import * as i8 from "@angular/material/divider";
|
|
14
|
-
import * as i9 from "../toast-message-inline/toast-message-inline.component";
|
|
15
|
-
export class ToastDemoComponent {
|
|
16
|
-
constructor() {
|
|
17
|
-
this.random = () => {
|
|
18
|
-
const typedArray = new Uint8Array(1);
|
|
19
|
-
const randomValue = crypto.getRandomValues(typedArray)[0];
|
|
20
|
-
const randomFloat = randomValue / Math.pow(2, 8);
|
|
21
|
-
return randomFloat;
|
|
22
|
-
};
|
|
23
|
-
this.randomNumber = (min, max) => {
|
|
24
|
-
return Math.floor(this.random() * max) + min;
|
|
25
|
-
};
|
|
26
|
-
this.fb = inject(FormBuilder);
|
|
27
|
-
this.toastMessageDisplayService = inject(ToastMessageDisplayService);
|
|
28
|
-
this.type = 'Basic';
|
|
29
|
-
this.position = this.fb.control('top');
|
|
30
|
-
this.icons = [
|
|
31
|
-
'favorite_border',
|
|
32
|
-
'dashboard',
|
|
33
|
-
'event',
|
|
34
|
-
'paid',
|
|
35
|
-
'notifications',
|
|
36
|
-
'movie_filter',
|
|
37
|
-
];
|
|
38
|
-
this.toastSamples = [
|
|
39
|
-
{
|
|
40
|
-
message: `This is a simple toast message. This is a <span style="font-size: 22px">simple toast message</span>. This is a simple toast message. This is a simple toast message`,
|
|
41
|
-
color: ToastColors.ERROR,
|
|
42
|
-
action: "Ok"
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
message: 'Sample message',
|
|
46
|
-
color: ToastColors.INFO,
|
|
47
|
-
icon: this.icons[0]
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
message: 'Sample message',
|
|
51
|
-
color: ToastColors.WARN,
|
|
52
|
-
icon: this.icons[1]
|
|
53
|
-
},
|
|
54
|
-
{
|
|
55
|
-
message: `This is a simple toast message. This is a <span style="font-size: 22px">simple toast message</span>. This is a simple toast message. This is a simple toast message`,
|
|
56
|
-
color: ToastColors.NOTIFY,
|
|
57
|
-
icon: this.icons[2],
|
|
58
|
-
action: "Dismiss"
|
|
59
|
-
},
|
|
60
|
-
{
|
|
61
|
-
message: 'Sample message',
|
|
62
|
-
color: ToastColors.GENERAL,
|
|
63
|
-
action: "Dismiss"
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
message: `This is a simple toast message. This is a <span style="font-size: 22px">simple toast message</span>. This is a simple toast message. This is a simple toast message`,
|
|
67
|
-
color: ToastColors.SUCCESS,
|
|
68
|
-
action: "-"
|
|
69
|
-
},
|
|
70
|
-
];
|
|
71
|
-
}
|
|
72
|
-
onSelectType(type) {
|
|
73
|
-
this.type = type;
|
|
74
|
-
}
|
|
75
|
-
onBasic(type, icon, action) {
|
|
76
|
-
switch (type) {
|
|
77
|
-
case 'ERROR':
|
|
78
|
-
this.presentToast(ToastColors.ERROR, icon, action);
|
|
79
|
-
break;
|
|
80
|
-
case 'INFO':
|
|
81
|
-
this.presentToast(ToastColors.INFO, icon, action);
|
|
82
|
-
break;
|
|
83
|
-
case 'WARN':
|
|
84
|
-
this.presentToast(ToastColors.WARN, icon, action);
|
|
85
|
-
break;
|
|
86
|
-
case 'NOTIFY':
|
|
87
|
-
this.presentToast(ToastColors.NOTIFY, icon, action);
|
|
88
|
-
break;
|
|
89
|
-
case 'GENERAL':
|
|
90
|
-
this.presentToast(ToastColors.GENERAL, icon, action);
|
|
91
|
-
break;
|
|
92
|
-
default:
|
|
93
|
-
this.presentToast(ToastColors.SUCCESS, icon, action);
|
|
94
|
-
break;
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
presentToast(color, icon, action) {
|
|
98
|
-
const options = ToastDisplay.adapt({
|
|
99
|
-
message: `This is a simple toast message. <span style="font-size: 22px">simple toast message</span>. This is a simple toast message. This is a simple toast message`,
|
|
100
|
-
color,
|
|
101
|
-
icon,
|
|
102
|
-
action
|
|
103
|
-
});
|
|
104
|
-
const toastPosition = (this.position.value === 'top') ? VerticalAlignment.TOP : VerticalAlignment.BOTTOM;
|
|
105
|
-
this.toastMessageDisplayService.toastMessage(options, -1, toastPosition);
|
|
106
|
-
}
|
|
107
|
-
onInline() {
|
|
108
|
-
const pick = this.randomNumber(0, this.toastSamples.length - 1);
|
|
109
|
-
this.pickToastSample = this.toastSamples[pick];
|
|
110
|
-
}
|
|
111
|
-
onClosedToast(toast) {
|
|
112
|
-
console.log(toast);
|
|
113
|
-
}
|
|
114
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ToastDemoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
115
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ToastDemoComponent, selector: "app-toast-display-demo", ngImport: i0, template: "<mat-toolbar style=\"display: flex;\">\n <div>Toast Message Demo</div>\n <div style=\"flex:1; text-align: end;\">\n <button\n mat-stroked-button\n [matMenuTriggerFor]=\"menu\"\n matIconPrefix\n >\n {{ type | titlecase }}\n <mat-icon>layers</mat-icon>\n </button>\n </div>\n</mat-toolbar>\n\n<mat-menu #menu=\"matMenu\">\n <button\n mat-menu-item\n (click)=\"onSelectType('basic')\"\n >\n Basic\n </button>\n <button\n mat-menu-item\n (click)=\"onSelectType('icon')\"\n >\n Icon\n </button>\n <button\n mat-menu-item\n (click)=\"onSelectType('action')\"\n >\n Action\n </button>\n</mat-menu>\n\n<div style=\"margin: 1rem;\">\n <span [ngSwitch]=\"type\">\n <div *ngSwitchCase=\"'icon'\">\n <div style=\"display: flex; gap: 1rem; flex-direction: column;\">\n <h3 style=\"flex:1; margin-bottom: 0;\">Toast with Icon</h3>\n <div style=\"display: flex; gap: .5rem;\">\n <button\n mat-stroked-button\n (click)=\"onBasic('SUCCESS', 'favorite_border')\"\n >\n Icon - SUCCESS\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('ERROR', 'dashboard')\"\n >\n Icon - ERROR\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('INFO', 'event')\"\n >\n Icon - INFO\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('WARN', 'paid')\"\n >\n Icon - WARN\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('WARN', 'notifications')\"\n >\n Icon - NOTIFY\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('WARN', 'movie_filter')\"\n >\n Icon - GENERAL\n </button>\n </div>\n </div>\n </div>\n <div *ngSwitchCase=\"'action'\">\n <div style=\"display: flex; gap: 1rem; flex-direction: column;\">\n <h3 style=\"flex:1; margin-bottom: 0;\">Toast with Icon and Action</h3>\n <div style=\"display: flex; gap: .5rem;\">\n <button\n mat-stroked-button\n (click)=\"onBasic('SUCCESS', 'favorite_border', 'Dismiss')\"\n >\n Action - SUCCESS\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('ERROR', 'dashboard', 'Dismiss')\"\n >\n Action - ERROR\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('INFO', 'event', 'Dismiss')\"\n >\n Action - INFO\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('WARN', 'paid', 'Dismiss')\"\n >\n Action - WARN\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('NOTIFY', 'notifications', 'Dismiss')\"\n >\n Action - NOTIFY\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('GENERAL', 'movie_filter', 'Dismiss')\"\n >\n Action - GENERAL\n </button>\n </div>\n </div>\n </div>\n <div *ngSwitchDefault>\n\n <div style=\"display: flex; gap: 1rem; flex-direction: column;\">\n <h3 style=\"flex:1; margin-bottom: 0;\">Basic Toast</h3>\n <div style=\"display: flex; gap: .5rem;\">\n <button\n mat-stroked-button\n (click)=\"onBasic('SUCCESS')\"\n >\n Basic - SUCCESS\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('ERROR')\"\n >\n Basic - ERROR\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('INFO')\"\n >\n Basic - INFO\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('WARN')\"\n >\n Basic - WARN\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('NOTIFY')\"\n >\n Basic - NOTIFY\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('GENERAL')\"\n >\n Basic - GENERAL\n </button>\n </div>\n </div>\n\n </div>\n </span>\n <div style=\"display: flex; margin-top: 1rem;\">\n <mat-radio-group [formControl]=\"position\" style=\"display: flex; gap: 2rem\">\n <mat-radio-button value=\"top\">Top Position</mat-radio-button>\n <mat-radio-button value=\"bottom\">Bottom Position</mat-radio-button>\n </mat-radio-group>\n </div>\n</div>\n\n<div style=\"margin-top: 1rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n</div>\n\n<div style=\"margin: 1rem;\">\n <button mat-stroked-button (click)=\"onInline()\" style=\"margin-bottom: 2rem;\">\n Add Inline Toast Message\n </button>\n <app-toast-message-display-inline\n [toast]=\"pickToastSample\"\n [duration]=\"5\"\n (close)=\"onClosedToast($event)\"\n ></app-toast-message-display-inline>\n</div>\n", styles: [".bold{font-size:22px;font-weight:700}\n"], dependencies: [{ kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i5.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i6.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i6.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i6.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i7.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i7.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "component", type: i8.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i9.ToastMessageInlineComponent, selector: "app-toast-message-display-inline", inputs: ["toast", "duration", "position"], outputs: ["close"] }, { kind: "pipe", type: i1.TitleCasePipe, name: "titlecase" }] }); }
|
|
116
|
-
}
|
|
117
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ToastDemoComponent, decorators: [{
|
|
118
|
-
type: Component,
|
|
119
|
-
args: [{ selector: 'app-toast-display-demo', template: "<mat-toolbar style=\"display: flex;\">\n <div>Toast Message Demo</div>\n <div style=\"flex:1; text-align: end;\">\n <button\n mat-stroked-button\n [matMenuTriggerFor]=\"menu\"\n matIconPrefix\n >\n {{ type | titlecase }}\n <mat-icon>layers</mat-icon>\n </button>\n </div>\n</mat-toolbar>\n\n<mat-menu #menu=\"matMenu\">\n <button\n mat-menu-item\n (click)=\"onSelectType('basic')\"\n >\n Basic\n </button>\n <button\n mat-menu-item\n (click)=\"onSelectType('icon')\"\n >\n Icon\n </button>\n <button\n mat-menu-item\n (click)=\"onSelectType('action')\"\n >\n Action\n </button>\n</mat-menu>\n\n<div style=\"margin: 1rem;\">\n <span [ngSwitch]=\"type\">\n <div *ngSwitchCase=\"'icon'\">\n <div style=\"display: flex; gap: 1rem; flex-direction: column;\">\n <h3 style=\"flex:1; margin-bottom: 0;\">Toast with Icon</h3>\n <div style=\"display: flex; gap: .5rem;\">\n <button\n mat-stroked-button\n (click)=\"onBasic('SUCCESS', 'favorite_border')\"\n >\n Icon - SUCCESS\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('ERROR', 'dashboard')\"\n >\n Icon - ERROR\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('INFO', 'event')\"\n >\n Icon - INFO\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('WARN', 'paid')\"\n >\n Icon - WARN\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('WARN', 'notifications')\"\n >\n Icon - NOTIFY\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('WARN', 'movie_filter')\"\n >\n Icon - GENERAL\n </button>\n </div>\n </div>\n </div>\n <div *ngSwitchCase=\"'action'\">\n <div style=\"display: flex; gap: 1rem; flex-direction: column;\">\n <h3 style=\"flex:1; margin-bottom: 0;\">Toast with Icon and Action</h3>\n <div style=\"display: flex; gap: .5rem;\">\n <button\n mat-stroked-button\n (click)=\"onBasic('SUCCESS', 'favorite_border', 'Dismiss')\"\n >\n Action - SUCCESS\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('ERROR', 'dashboard', 'Dismiss')\"\n >\n Action - ERROR\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('INFO', 'event', 'Dismiss')\"\n >\n Action - INFO\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('WARN', 'paid', 'Dismiss')\"\n >\n Action - WARN\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('NOTIFY', 'notifications', 'Dismiss')\"\n >\n Action - NOTIFY\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('GENERAL', 'movie_filter', 'Dismiss')\"\n >\n Action - GENERAL\n </button>\n </div>\n </div>\n </div>\n <div *ngSwitchDefault>\n\n <div style=\"display: flex; gap: 1rem; flex-direction: column;\">\n <h3 style=\"flex:1; margin-bottom: 0;\">Basic Toast</h3>\n <div style=\"display: flex; gap: .5rem;\">\n <button\n mat-stroked-button\n (click)=\"onBasic('SUCCESS')\"\n >\n Basic - SUCCESS\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('ERROR')\"\n >\n Basic - ERROR\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('INFO')\"\n >\n Basic - INFO\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('WARN')\"\n >\n Basic - WARN\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('NOTIFY')\"\n >\n Basic - NOTIFY\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('GENERAL')\"\n >\n Basic - GENERAL\n </button>\n </div>\n </div>\n\n </div>\n </span>\n <div style=\"display: flex; margin-top: 1rem;\">\n <mat-radio-group [formControl]=\"position\" style=\"display: flex; gap: 2rem\">\n <mat-radio-button value=\"top\">Top Position</mat-radio-button>\n <mat-radio-button value=\"bottom\">Bottom Position</mat-radio-button>\n </mat-radio-group>\n </div>\n</div>\n\n<div style=\"margin-top: 1rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n</div>\n\n<div style=\"margin: 1rem;\">\n <button mat-stroked-button (click)=\"onInline()\" style=\"margin-bottom: 2rem;\">\n Add Inline Toast Message\n </button>\n <app-toast-message-display-inline\n [toast]=\"pickToastSample\"\n [duration]=\"5\"\n (close)=\"onClosedToast($event)\"\n ></app-toast-message-display-inline>\n</div>\n", styles: [".bold{font-size:22px;font-weight:700}\n"] }]
|
|
120
|
-
}] });
|
|
121
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3QtZGVtby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90b2FzdC1tZXNzYWdlLWRpc3BsYXkvc3JjL2xpYi90b2FzdC1kZW1vL3RvYXN0LWRlbW8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdG9hc3QtbWVzc2FnZS1kaXNwbGF5L3NyYy9saWIvdG9hc3QtZGVtby90b2FzdC1kZW1vLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7Ozs7Ozs7QUFPL0UsTUFBTSxPQUFPLGtCQUFrQjtJQUwvQjtRQU9FLFdBQU0sR0FBRyxHQUFHLEVBQUU7WUFDWixNQUFNLFVBQVUsR0FBRyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUNwQyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ3pELE1BQU0sV0FBVyxHQUFHLFdBQVcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtZQUNoRCxPQUFPLFdBQVcsQ0FBQTtRQUNwQixDQUFDLENBQUE7UUFFRCxpQkFBWSxHQUFHLENBQUMsR0FBVyxFQUFFLEdBQVcsRUFBRSxFQUFFO1lBQzFDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFBO1FBQzlDLENBQUMsQ0FBQTtRQUVELE9BQUUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUE7UUFDeEIsK0JBQTBCLEdBQUcsTUFBTSxDQUFDLDBCQUEwQixDQUFDLENBQUE7UUFFL0QsU0FBSSxHQUFHLE9BQU8sQ0FBQTtRQUVkLGFBQVEsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUVqQyxVQUFLLEdBQUc7WUFDTixpQkFBaUI7WUFDakIsV0FBVztZQUNYLE9BQU87WUFDUCxNQUFNO1lBQ04sZUFBZTtZQUNmLGNBQWM7U0FDZixDQUFBO1FBRUQsaUJBQVksR0FBRztZQUNiO2dCQUNFLE9BQU8sRUFBRSxxS0FBcUs7Z0JBQzlLLEtBQUssRUFBRSxXQUFXLENBQUMsS0FBSztnQkFDeEIsTUFBTSxFQUFFLElBQUk7YUFDYjtZQUNEO2dCQUNFLE9BQU8sRUFBRSxnQkFBZ0I7Z0JBQ3pCLEtBQUssRUFBRSxXQUFXLENBQUMsSUFBSTtnQkFDdkIsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2FBQ3BCO1lBQ0Q7Z0JBQ0UsT0FBTyxFQUFFLGdCQUFnQjtnQkFDekIsS0FBSyxFQUFFLFdBQVcsQ0FBQyxJQUFJO2dCQUN2QixJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7YUFDcEI7WUFDRDtnQkFDRSxPQUFPLEVBQUUscUtBQXFLO2dCQUM5SyxLQUFLLEVBQUUsV0FBVyxDQUFDLE1BQU07Z0JBQ3pCLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFDbkIsTUFBTSxFQUFFLFNBQVM7YUFDbEI7WUFDRDtnQkFDRSxPQUFPLEVBQUUsZ0JBQWdCO2dCQUN6QixLQUFLLEVBQUUsV0FBVyxDQUFDLE9BQU87Z0JBQzFCLE1BQU0sRUFBRSxTQUFTO2FBQ2xCO1lBQ0Q7Z0JBQ0ksT0FBTyxFQUFFLHFLQUFxSztnQkFDOUssS0FBSyxFQUFFLFdBQVcsQ0FBQyxPQUFPO2dCQUMxQixNQUFNLEVBQUUsR0FBRzthQUNaO1NBQ0YsQ0FBQTtLQXFESjtJQWpEQyxZQUFZLENBQUMsSUFBWTtRQUN2QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQTtJQUNsQixDQUFDO0lBRUQsT0FBTyxDQUFDLElBQVksRUFBRSxJQUFhLEVBQUUsTUFBZTtRQUNsRCxRQUFRLElBQUksRUFBRSxDQUFDO1lBQ2IsS0FBSyxPQUFPO2dCQUNWLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUE7Z0JBQ3BELE1BQU07WUFDTixLQUFLLE1BQU07Z0JBQ1QsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQTtnQkFDbkQsTUFBTTtZQUNOLEtBQUssTUFBTTtnQkFDVCxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFBO2dCQUNuRCxNQUFNO1lBQ04sS0FBSyxRQUFRO2dCQUNYLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUE7Z0JBQ3JELE1BQU07WUFDTixLQUFLLFNBQVM7Z0JBQ1osSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQTtnQkFDdEQsTUFBTTtZQUNOO2dCQUNFLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUE7Z0JBQ3RELE1BQU07UUFDUixDQUFDO0lBQ0gsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFrQixFQUFFLElBQWEsRUFBRSxNQUFlO1FBRTNELE1BQU0sT0FBTyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUM7WUFDL0IsT0FBTyxFQUFFLDJKQUEySjtZQUNwSyxLQUFLO1lBQ0wsSUFBSTtZQUNKLE1BQU07U0FDVCxDQUFDLENBQUE7UUFFRixNQUFNLGFBQWEsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQTtRQUN4RyxJQUFJLENBQUMsMEJBQTBCLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQTtJQUM1RSxDQUFDO0lBRUQsUUFBUTtRQUNOLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFDLENBQUMsQ0FBQyxDQUFBO1FBQzdELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNoRCxDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQW9CO1FBQ2hDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDcEIsQ0FBQzsrR0FoSFUsa0JBQWtCO21HQUFsQixrQkFBa0IsOERDWC9CLDBvTkErTEE7OzRGRHBMYSxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0ksd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRvYXN0Q29sb3JzLCBUb2FzdERpc3BsYXksIFZlcnRpY2FsQWxpZ25tZW50IH0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBUb2FzdE1lc3NhZ2VEaXNwbGF5U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3RvYXN0LW1lc3NhZ2Uuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXBwLXRvYXN0LWRpc3BsYXktZGVtbycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RvYXN0LWRlbW8uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3RvYXN0LWRlbW8uY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBUb2FzdERlbW9Db21wb25lbnQge1xuXG4gIHJhbmRvbSA9ICgpID0+IHtcbiAgICBjb25zdCB0eXBlZEFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoMSlcbiAgICBjb25zdCByYW5kb21WYWx1ZSA9IGNyeXB0by5nZXRSYW5kb21WYWx1ZXModHlwZWRBcnJheSlbMF1cbiAgICBjb25zdCByYW5kb21GbG9hdCA9IHJhbmRvbVZhbHVlIC8gTWF0aC5wb3coMiwgOClcbiAgICByZXR1cm4gcmFuZG9tRmxvYXRcbiAgfVxuXG4gIHJhbmRvbU51bWJlciA9IChtaW46IG51bWJlciwgbWF4OiBudW1iZXIpID0+IHtcbiAgICByZXR1cm4gTWF0aC5mbG9vcih0aGlzLnJhbmRvbSgpICogbWF4KSArIG1pblxuICB9XG5cbiAgZmIgPSBpbmplY3QoRm9ybUJ1aWxkZXIpXG4gIHRvYXN0TWVzc2FnZURpc3BsYXlTZXJ2aWNlID0gaW5qZWN0KFRvYXN0TWVzc2FnZURpc3BsYXlTZXJ2aWNlKVxuXG4gIHR5cGUgPSAnQmFzaWMnXG5cbiAgcG9zaXRpb24gPSB0aGlzLmZiLmNvbnRyb2woJ3RvcCcpXG5cbiAgaWNvbnMgPSBbXG4gICAgJ2Zhdm9yaXRlX2JvcmRlcicsXG4gICAgJ2Rhc2hib2FyZCcsXG4gICAgJ2V2ZW50JyxcbiAgICAncGFpZCcsXG4gICAgJ25vdGlmaWNhdGlvbnMnLFxuICAgICdtb3ZpZV9maWx0ZXInLFxuICBdXG5cbiAgdG9hc3RTYW1wbGVzID0gW1xuICAgIHtcbiAgICAgIG1lc3NhZ2U6IGBUaGlzIGlzIGEgc2ltcGxlIHRvYXN0IG1lc3NhZ2UuIFRoaXMgaXMgYSA8c3BhbiBzdHlsZT1cImZvbnQtc2l6ZTogMjJweFwiPnNpbXBsZSB0b2FzdCBtZXNzYWdlPC9zcGFuPi4gVGhpcyBpcyBhIHNpbXBsZSB0b2FzdCBtZXNzYWdlLiBUaGlzIGlzIGEgc2ltcGxlIHRvYXN0IG1lc3NhZ2VgLFxuICAgICAgY29sb3I6IFRvYXN0Q29sb3JzLkVSUk9SLFxuICAgICAgYWN0aW9uOiBcIk9rXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIG1lc3NhZ2U6ICdTYW1wbGUgbWVzc2FnZScsXG4gICAgICBjb2xvcjogVG9hc3RDb2xvcnMuSU5GTyxcbiAgICAgIGljb246IHRoaXMuaWNvbnNbMF1cbiAgICB9LFxuICAgIHtcbiAgICAgIG1lc3NhZ2U6ICdTYW1wbGUgbWVzc2FnZScsXG4gICAgICBjb2xvcjogVG9hc3RDb2xvcnMuV0FSTixcbiAgICAgIGljb246IHRoaXMuaWNvbnNbMV1cbiAgICB9LFxuICAgIHtcbiAgICAgIG1lc3NhZ2U6IGBUaGlzIGlzIGEgc2ltcGxlIHRvYXN0IG1lc3NhZ2UuIFRoaXMgaXMgYSA8c3BhbiBzdHlsZT1cImZvbnQtc2l6ZTogMjJweFwiPnNpbXBsZSB0b2FzdCBtZXNzYWdlPC9zcGFuPi4gVGhpcyBpcyBhIHNpbXBsZSB0b2FzdCBtZXNzYWdlLiBUaGlzIGlzIGEgc2ltcGxlIHRvYXN0IG1lc3NhZ2VgLFxuICAgICAgY29sb3I6IFRvYXN0Q29sb3JzLk5PVElGWSxcbiAgICAgIGljb246IHRoaXMuaWNvbnNbMl0sXG4gICAgICBhY3Rpb246IFwiRGlzbWlzc1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBtZXNzYWdlOiAnU2FtcGxlIG1lc3NhZ2UnLFxuICAgICAgY29sb3I6IFRvYXN0Q29sb3JzLkdFTkVSQUwsXG4gICAgICBhY3Rpb246IFwiRGlzbWlzc1wiXG4gICAgfSxcbiAgICB7XG4gICAgICAgIG1lc3NhZ2U6IGBUaGlzIGlzIGEgc2ltcGxlIHRvYXN0IG1lc3NhZ2UuIFRoaXMgaXMgYSA8c3BhbiBzdHlsZT1cImZvbnQtc2l6ZTogMjJweFwiPnNpbXBsZSB0b2FzdCBtZXNzYWdlPC9zcGFuPi4gVGhpcyBpcyBhIHNpbXBsZSB0b2FzdCBtZXNzYWdlLiBUaGlzIGlzIGEgc2ltcGxlIHRvYXN0IG1lc3NhZ2VgLFxuICAgICAgICBjb2xvcjogVG9hc3RDb2xvcnMuU1VDQ0VTUyxcbiAgICAgICAgYWN0aW9uOiBcIi1cIlxuICAgICAgfSxcbiAgICBdXG5cbiAgcGlja1RvYXN0U2FtcGxlPzogVG9hc3REaXNwbGF5XG5cbiAgb25TZWxlY3RUeXBlKHR5cGU6IHN0cmluZykge1xuICAgIHRoaXMudHlwZSA9IHR5cGVcbiAgfVxuXG4gIG9uQmFzaWModHlwZTogc3RyaW5nLCBpY29uPzogc3RyaW5nLCBhY3Rpb24/OiBzdHJpbmcpIHtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ0VSUk9SJzpcbiAgICAgICAgdGhpcy5wcmVzZW50VG9hc3QoVG9hc3RDb2xvcnMuRVJST1IsIGljb24sIGFjdGlvbilcbiAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnSU5GTyc6XG4gICAgICAgIHRoaXMucHJlc2VudFRvYXN0KFRvYXN0Q29sb3JzLklORk8sIGljb24sIGFjdGlvbilcbiAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnV0FSTic6XG4gICAgICAgIHRoaXMucHJlc2VudFRvYXN0KFRvYXN0Q29sb3JzLldBUk4sIGljb24sIGFjdGlvbilcbiAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnTk9USUZZJzpcbiAgICAgICAgdGhpcy5wcmVzZW50VG9hc3QoVG9hc3RDb2xvcnMuTk9USUZZLCBpY29uLCBhY3Rpb24pXG4gICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0dFTkVSQUwnOlxuICAgICAgICB0aGlzLnByZXNlbnRUb2FzdChUb2FzdENvbG9ycy5HRU5FUkFMLCBpY29uLCBhY3Rpb24pXG4gICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMucHJlc2VudFRvYXN0KFRvYXN0Q29sb3JzLlNVQ0NFU1MsIGljb24sIGFjdGlvbilcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHByZXNlbnRUb2FzdChjb2xvcjogVG9hc3RDb2xvcnMsIGljb24/OiBzdHJpbmcsIGFjdGlvbj86IHN0cmluZykge1xuXG4gICAgICBjb25zdCBvcHRpb25zID0gVG9hc3REaXNwbGF5LmFkYXB0KHtcbiAgICAgICAgICBtZXNzYWdlOiBgVGhpcyBpcyBhIHNpbXBsZSB0b2FzdCBtZXNzYWdlLiA8c3BhbiBzdHlsZT1cImZvbnQtc2l6ZTogMjJweFwiPnNpbXBsZSB0b2FzdCBtZXNzYWdlPC9zcGFuPi4gVGhpcyBpcyBhIHNpbXBsZSB0b2FzdCBtZXNzYWdlLiBUaGlzIGlzIGEgc2ltcGxlIHRvYXN0IG1lc3NhZ2VgLFxuICAgICAgICAgIGNvbG9yLFxuICAgICAgICAgIGljb24sXG4gICAgICAgICAgYWN0aW9uXG4gICAgICB9KVxuXG4gICAgICBjb25zdCB0b2FzdFBvc2l0aW9uID0gKHRoaXMucG9zaXRpb24udmFsdWUgPT09ICd0b3AnKSA/IFZlcnRpY2FsQWxpZ25tZW50LlRPUCA6IFZlcnRpY2FsQWxpZ25tZW50LkJPVFRPTVxuICAgICAgdGhpcy50b2FzdE1lc3NhZ2VEaXNwbGF5U2VydmljZS50b2FzdE1lc3NhZ2Uob3B0aW9ucywgLTEsIHRvYXN0UG9zaXRpb24pXG4gIH1cblxuICBvbklubGluZSgpIHtcbiAgICBjb25zdCBwaWNrID0gdGhpcy5yYW5kb21OdW1iZXIoMCwgdGhpcy50b2FzdFNhbXBsZXMubGVuZ3RoLTEpXG4gICAgdGhpcy5waWNrVG9hc3RTYW1wbGUgPSB0aGlzLnRvYXN0U2FtcGxlc1twaWNrXVxuICB9XG5cbiAgb25DbG9zZWRUb2FzdCh0b2FzdD86IFRvYXN0RGlzcGxheSkge1xuICAgIGNvbnNvbGUubG9nKHRvYXN0KVxuICB9XG5cbn1cbiIsIjxtYXQtdG9vbGJhciBzdHlsZT1cImRpc3BsYXk6IGZsZXg7XCI+XG4gICAgPGRpdj5Ub2FzdCBNZXNzYWdlIERlbW88L2Rpdj5cbiAgICA8ZGl2IHN0eWxlPVwiZmxleDoxOyB0ZXh0LWFsaWduOiBlbmQ7XCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIG1hdC1zdHJva2VkLWJ1dHRvblxuICAgICAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIlxuICAgICAgICAgICAgbWF0SWNvblByZWZpeFxuICAgICAgICA+XG4gICAgICAgICAgICB7eyB0eXBlIHwgdGl0bGVjYXNlIH19XG4gICAgICAgICAgICA8bWF0LWljb24+bGF5ZXJzPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG48L21hdC10b29sYmFyPlxuXG48bWF0LW1lbnUgI21lbnU9XCJtYXRNZW51XCI+XG4gICAgPGJ1dHRvblxuICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgIChjbGljayk9XCJvblNlbGVjdFR5cGUoJ2Jhc2ljJylcIlxuICAgID5cbiAgICAgICAgQmFzaWNcbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uXG4gICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0VHlwZSgnaWNvbicpXCJcbiAgICA+XG4gICAgICAgIEljb25cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uXG4gICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0VHlwZSgnYWN0aW9uJylcIlxuICAgID5cbiAgICAgICAgQWN0aW9uXG4gICAgPC9idXR0b24+XG48L21hdC1tZW51PlxuXG48ZGl2IHN0eWxlPVwibWFyZ2luOiAxcmVtO1wiPlxuICAgIDxzcGFuIFtuZ1N3aXRjaF09XCJ0eXBlXCI+XG4gICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidpY29uJ1wiPlxuICAgICAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGdhcDogMXJlbTsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcIj5cbiAgICAgICAgICAgICAgICA8aDMgc3R5bGU9XCJmbGV4OjE7IG1hcmdpbi1ib3R0b206IDA7XCI+VG9hc3Qgd2l0aCBJY29uPC9oMz5cbiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsgZ2FwOiAuNXJlbTtcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0LXN0cm9rZWQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25CYXNpYygnU1VDQ0VTUycsICdmYXZvcml0ZV9ib3JkZXInKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIEljb24gLSBTVUNDRVNTXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXQtc3Ryb2tlZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkJhc2ljKCdFUlJPUicsICdkYXNoYm9hcmQnKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIEljb24gLSBFUlJPUlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0LXN0cm9rZWQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25CYXNpYygnSU5GTycsICdldmVudCcpXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgSWNvbiAtIElORk9cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1zdHJva2VkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQmFzaWMoJ1dBUk4nLCAncGFpZCcpXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgSWNvbiAtIFdBUk5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1zdHJva2VkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQmFzaWMoJ1dBUk4nLCAnbm90aWZpY2F0aW9ucycpXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgSWNvbiAtIE5PVElGWVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0LXN0cm9rZWQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25CYXNpYygnV0FSTicsICdtb3ZpZV9maWx0ZXInKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIEljb24gLSBHRU5FUkFMXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInYWN0aW9uJ1wiPlxuICAgICAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGdhcDogMXJlbTsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcIj5cbiAgICAgICAgICAgICAgICA8aDMgc3R5bGU9XCJmbGV4OjE7IG1hcmdpbi1ib3R0b206IDA7XCI+VG9hc3Qgd2l0aCBJY29uIGFuZCBBY3Rpb248L2gzPlxuICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBnYXA6IC41cmVtO1wiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXQtc3Ryb2tlZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkJhc2ljKCdTVUNDRVNTJywgJ2Zhdm9yaXRlX2JvcmRlcicsICdEaXNtaXNzJylcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICBBY3Rpb24gLSBTVUNDRVNTXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXQtc3Ryb2tlZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkJhc2ljKCdFUlJPUicsICdkYXNoYm9hcmQnLCAnRGlzbWlzcycpXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgQWN0aW9uIC0gRVJST1JcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1zdHJva2VkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQmFzaWMoJ0lORk8nLCAnZXZlbnQnLCAnRGlzbWlzcycpXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgQWN0aW9uIC0gSU5GT1xuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0LXN0cm9rZWQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25CYXNpYygnV0FSTicsICdwYWlkJywgJ0Rpc21pc3MnKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIEFjdGlvbiAtIFdBUk5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1zdHJva2VkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQmFzaWMoJ05PVElGWScsICdub3RpZmljYXRpb25zJywgJ0Rpc21pc3MnKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIEFjdGlvbiAtIE5PVElGWVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0LXN0cm9rZWQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25CYXNpYygnR0VORVJBTCcsICdtb3ZpZV9maWx0ZXInLCAnRGlzbWlzcycpXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgQWN0aW9uIC0gR0VORVJBTFxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdTd2l0Y2hEZWZhdWx0PlxuXG4gICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsgZ2FwOiAxcmVtOyBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1wiPlxuICAgICAgICAgICAgICAgIDxoMyBzdHlsZT1cImZsZXg6MTsgbWFyZ2luLWJvdHRvbTogMDtcIj5CYXNpYyBUb2FzdDwvaDM+XG4gICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGdhcDogLjVyZW07XCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1zdHJva2VkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQmFzaWMoJ1NVQ0NFU1MnKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIEJhc2ljIC0gU1VDQ0VTU1xuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0LXN0cm9rZWQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25CYXNpYygnRVJST1InKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIEJhc2ljIC0gRVJST1JcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1zdHJva2VkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQmFzaWMoJ0lORk8nKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIEJhc2ljIC0gSU5GT1xuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0LXN0cm9rZWQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25CYXNpYygnV0FSTicpXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgQmFzaWMgLSBXQVJOXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXQtc3Ryb2tlZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkJhc2ljKCdOT1RJRlknKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIEJhc2ljIC0gTk9USUZZXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXQtc3Ryb2tlZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkJhc2ljKCdHRU5FUkFMJylcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICBCYXNpYyAtIEdFTkVSQUxcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8L2Rpdj5cbiAgICA8L3NwYW4+XG4gICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IG1hcmdpbi10b3A6IDFyZW07XCI+XG4gICAgICAgIDxtYXQtcmFkaW8tZ3JvdXAgW2Zvcm1Db250cm9sXT1cInBvc2l0aW9uXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBnYXA6IDJyZW1cIj5cbiAgICAgICAgICAgIDxtYXQtcmFkaW8tYnV0dG9uIHZhbHVlPVwidG9wXCI+VG9wIFBvc2l0aW9uPC9tYXQtcmFkaW8tYnV0dG9uPlxuICAgICAgICAgICAgPG1hdC1yYWRpby1idXR0b24gdmFsdWU9XCJib3R0b21cIj5Cb3R0b20gUG9zaXRpb248L21hdC1yYWRpby1idXR0b24+XG4gICAgICAgIDwvbWF0LXJhZGlvLWdyb3VwPlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgc3R5bGU9XCJtYXJnaW4tdG9wOiAxcmVtOyBtYXJnaW4tYm90dG9tOiAxcmVtO1wiPlxuICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cbjwvZGl2PlxuXG48ZGl2IHN0eWxlPVwibWFyZ2luOiAxcmVtO1wiPlxuICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiAoY2xpY2spPVwib25JbmxpbmUoKVwiIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMnJlbTtcIj5cbiAgICBBZGQgSW5saW5lIFRvYXN0IE1lc3NhZ2VcbiAgPC9idXR0b24+XG4gIDxhcHAtdG9hc3QtbWVzc2FnZS1kaXNwbGF5LWlubGluZVxuICAgIFt0b2FzdF09XCJwaWNrVG9hc3RTYW1wbGVcIlxuICAgIFtkdXJhdGlvbl09XCI1XCJcbiAgICAoY2xvc2UpPVwib25DbG9zZWRUb2FzdCgkZXZlbnQpXCJcbiAgPjwvYXBwLXRvYXN0LW1lc3NhZ2UtZGlzcGxheS1pbmxpbmU+XG48L2Rpdj5cbiJdfQ==
|