@flywheel-io/vision 2.7.9 → 2.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,24 +1,28 @@
1
- import { AfterViewInit, ChangeDetectorRef, EventEmitter, OnInit } from '@angular/core';
1
+ import { AfterViewInit, ChangeDetectorRef } from '@angular/core';
2
2
  import { FwSnackbarMessage } from '../snackbar-message.model';
3
3
  import { FwSnackbarTimerService } from '../snackbar-timer.service';
4
4
  import * as i0 from "@angular/core";
5
- export declare class FwSnackbarComponent implements AfterViewInit, OnInit {
5
+ export declare class FwSnackbarComponent implements AfterViewInit {
6
6
  private cdr;
7
7
  private timerService;
8
- message: FwSnackbarMessage;
9
- messageDuration: number;
10
- ready: EventEmitter<FwSnackbarComponent>;
11
- dismiss: EventEmitter<string>;
12
- action: EventEmitter<string>;
13
- color: 'primary' | 'success' | 'warning' | 'danger';
8
+ message: import("@angular/core").InputSignal<FwSnackbarMessage>;
9
+ messageDuration: import("@angular/core").InputSignal<number>;
10
+ ready: import("@angular/core").OutputEmitterRef<FwSnackbarComponent>;
11
+ dismiss: import("@angular/core").OutputEmitterRef<string>;
12
+ action: import("@angular/core").OutputEmitterRef<string>;
13
+ private defaultIcons;
14
+ icon: import("@angular/core").Signal<string>;
15
+ showClose: import("@angular/core").Signal<boolean>;
16
+ duration: import("@angular/core").Signal<number>;
17
+ color: import("@angular/core").Signal<"warning" | "success" | "primary" | "secondary" | "slate" | "danger" | "skeleton">;
18
+ isTemplateRef: import("@angular/core").Signal<boolean>;
14
19
  get cssClass(): string;
15
20
  constructor(cdr: ChangeDetectorRef, timerService: FwSnackbarTimerService);
16
21
  ngAfterViewInit(): void;
17
22
  startTimer(): void;
18
23
  stopTimer(): void;
19
- ngOnInit(): void;
20
24
  handleDismiss(): void;
21
25
  handleAction(): void;
22
26
  static ɵfac: i0.ɵɵFactoryDeclaration<FwSnackbarComponent, never>;
23
- static ɵcmp: i0.ɵɵComponentDeclaration<FwSnackbarComponent, "fw-snackbar", never, { "message": { "alias": "message"; "required": false; }; "messageDuration": { "alias": "messageDuration"; "required": false; }; }, { "ready": "ready"; "dismiss": "dismiss"; "action": "action"; }, never, never, false, never>;
27
+ static ɵcmp: i0.ɵɵComponentDeclaration<FwSnackbarComponent, "fw-snackbar", never, { "message": { "alias": "message"; "required": true; "isSignal": true; }; "messageDuration": { "alias": "messageDuration"; "required": false; "isSignal": true; }; }, { "ready": "ready"; "dismiss": "dismiss"; "action": "action"; }, never, never, false, never>;
24
28
  }
@@ -1,12 +1,14 @@
1
+ import { TemplateRef } from '@angular/core';
1
2
  import { FwSnackbarComponent } from './snackbar/snackbar.component';
2
3
  export interface FwSnackbarMessage {
3
4
  id?: string;
4
5
  severity: 'info' | 'success' | 'warning' | 'error';
5
- message: string;
6
+ message: string | TemplateRef<any>;
6
7
  icon?: string;
7
8
  showClose?: boolean;
8
9
  actionText?: string;
9
10
  action?: () => void;
10
11
  duration?: number;
11
12
  ref?: FwSnackbarComponent;
13
+ templateContext?: object;
12
14
  }
@@ -1,5 +1,5 @@
1
1
  /* eslint-disable @rx-angular/no-explicit-change-detection-apis */
2
- import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output, ViewEncapsulation, } from '@angular/core';
2
+ import { ChangeDetectionStrategy, Component, computed, HostBinding, input, output, TemplateRef, ViewEncapsulation, } from '@angular/core';
3
3
  import { FwSnackbarTimerService } from '../snackbar-timer.service';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "../snackbar-timer.service";
@@ -10,8 +10,9 @@ import * as i5 from "../../icon/icon.component";
10
10
  export class FwSnackbarComponent {
11
11
  get cssClass() {
12
12
  const cssClass = 'fw-snackbar';
13
- if (this.message?.severity) {
14
- return cssClass + ' ' + this.color;
13
+ const severity = this.message()?.severity;
14
+ if (severity) {
15
+ return cssClass + ' ' + this.color();
15
16
  }
16
17
  else {
17
18
  return cssClass;
@@ -20,21 +21,47 @@ export class FwSnackbarComponent {
20
21
  constructor(cdr, timerService) {
21
22
  this.cdr = cdr;
22
23
  this.timerService = timerService;
23
- this.messageDuration = 9000;
24
- this.ready = new EventEmitter();
25
- this.dismiss = new EventEmitter();
26
- this.action = new EventEmitter();
27
- this.color = 'primary';
24
+ this.message = input.required();
25
+ this.messageDuration = input(9000);
26
+ this.ready = output();
27
+ this.dismiss = output();
28
+ this.action = output();
29
+ this.defaultIcons = {
30
+ success: 'done-check-tracked',
31
+ warning: 'warning-circle',
32
+ error: 'warning',
33
+ info: 'information-circle',
34
+ };
35
+ this.icon = computed(() => this.message().icon || this.defaultIcons[this.message().severity]);
36
+ this.showClose = computed(() => {
37
+ const msg = this.message();
38
+ return msg.showClose !== undefined ? msg.showClose : msg.severity === 'error';
39
+ });
40
+ this.duration = computed(() => {
41
+ const msg = this.message();
42
+ if (msg.duration) {
43
+ return msg.duration;
44
+ }
45
+ return msg.severity === 'error' ? 29000 : this.messageDuration();
46
+ });
47
+ this.color = computed(() => {
48
+ const severity = this.message().severity;
49
+ const colors = {
50
+ success: 'success',
51
+ warning: 'warning',
52
+ error: 'danger',
53
+ info: 'primary',
54
+ };
55
+ return colors[severity] || 'primary';
56
+ });
57
+ this.isTemplateRef = computed(() => this.message().message instanceof TemplateRef);
28
58
  }
29
59
  ngAfterViewInit() {
30
60
  this.ready.emit(this);
31
61
  this.cdr.markForCheck();
32
62
  }
33
63
  startTimer() {
34
- if (this.message && this.message.duration) {
35
- this.messageDuration = this.message.duration;
36
- }
37
- this.timerService.start(this.messageDuration).then(() => {
64
+ this.timerService.start(this.duration()).then(() => {
38
65
  this.handleDismiss();
39
66
  this.cdr.markForCheck();
40
67
  });
@@ -43,69 +70,26 @@ export class FwSnackbarComponent {
43
70
  this.timerService.stop();
44
71
  this.cdr.markForCheck();
45
72
  }
46
- ngOnInit() {
47
- switch (this.message.severity) {
48
- case 'success':
49
- if (!this.message.icon) {
50
- this.message.icon = 'done-check-tracked';
51
- }
52
- this.color = 'success';
53
- break;
54
- case 'warning':
55
- if (!this.message.icon) {
56
- this.message.icon = 'warning-circle';
57
- }
58
- this.color = 'warning';
59
- break;
60
- case 'error':
61
- if (!this.message.icon) {
62
- this.message.icon = 'warning';
63
- }
64
- if (this.message.showClose === undefined) {
65
- this.message.showClose = true;
66
- }
67
- if (!this.message.duration) {
68
- this.message.duration = 29000;
69
- }
70
- this.color = 'danger';
71
- break;
72
- case 'info':
73
- if (!this.message.icon) {
74
- this.message.icon = 'information-circle';
75
- }
76
- this.color = 'primary';
77
- break;
78
- }
79
- }
80
73
  handleDismiss() {
81
- this.dismiss.emit(this.message.id);
74
+ this.dismiss.emit(this.message().id);
82
75
  this.cdr.markForCheck();
83
76
  }
84
77
  handleAction() {
85
- this.action.emit(this.message.id);
86
- if (this.message.action) {
87
- this.message.action();
78
+ const msg = this.message();
79
+ this.action.emit(msg.id);
80
+ if (msg.action) {
81
+ msg.action();
88
82
  }
89
83
  this.cdr.markForCheck();
90
84
  }
91
85
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwSnackbarComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.FwSnackbarTimerService }], target: i0.ɵɵFactoryTarget.Component }); }
92
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FwSnackbarComponent, selector: "fw-snackbar", inputs: { message: "message", messageDuration: "messageDuration" }, outputs: { ready: "ready", dismiss: "dismiss", action: "action" }, host: { properties: { "class": "this.cssClass" } }, providers: [FwSnackbarTimerService], ngImport: i0, template: "<ng-container *ngIf=\"message\">\n <fw-icon *ngIf=\"message.icon\">{{ message.icon }}</fw-icon>\n <h4 class=\"vision-h4\" *ngIf=\"message.message\">{{ message.message }}</h4>\n <fw-button\n *ngIf=\"message.actionText\" variant=\"ghost\"\n [color]=\"color\" size=\"small\"\n (click)=\"handleAction()\">{{ message.actionText }}\n </fw-button>\n <fw-icon-button\n *ngIf=\"message.showClose\"\n icon=\"close\" size=\"small\" [color]=\"message.severity\"\n (click)=\"handleDismiss()\">\n </fw-icon-button>\n <div *ngIf=\"!message.actionText && !message.showClose\"></div>\n</ng-container>\n", styles: [".vision-shadow-extra-large{box-shadow:0 8px 25px #0000001a}.vision-shadow-large,fw-snackbar{box-shadow:0 5px 15px #0000001a}.vision-shadow-medium{box-shadow:0 2px 5px #0000001a}.vision-shadow-small{box-shadow:0 1px 2px #0000000d}.vision-shadow-inner{box-shadow:0 2px 4px #00000014 inset}fw-snackbar{display:flex;align-items:flex-start;box-sizing:border-box;max-width:320px;min-width:200px;min-height:30px;padding:8px 8px 8px 16px;gap:8px;transform-origin:center;background-color:var(--card-header);color:var(--typography-base);white-space:pre-wrap;border-radius:4px;border:1px solid var(--separations-border);margin:8px}fw-snackbar>fw-icon{width:24px;height:24px;font-size:24px;white-space:nowrap;margin:3px 0}fw-snackbar h4{margin:6px 0 0;flex:1}fw-snackbar.primary fw-icon{color:var(--primary-base)}fw-snackbar.danger fw-icon{color:var(--red-base)}fw-snackbar.success fw-icon{color:var(--green-base)}fw-snackbar.warning fw-icon{color:var(--orange-base)}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.FwButtonComponent, selector: "fw-button", inputs: ["color", "size", "variant", "type", "disabled", "fullWidth", "leftIcon", "rightIcon"] }, { kind: "component", type: i4.FwIconButtonComponent, selector: "fw-icon-button", inputs: ["color", "icon", "size", "disabled", "selected"] }, { kind: "component", type: i5.FwIconComponent, selector: "fw-icon", inputs: ["size", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
86
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: FwSnackbarComponent, selector: "fw-snackbar", inputs: { message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: true, transformFunction: null }, messageDuration: { classPropertyName: "messageDuration", publicName: "messageDuration", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { ready: "ready", dismiss: "dismiss", action: "action" }, host: { properties: { "class": "this.cssClass" } }, providers: [FwSnackbarTimerService], ngImport: i0, template: "@if (message(); as msg) {\n @if (icon()) {\n <fw-icon>{{ icon() }}</fw-icon>\n }\n @if (isTemplateRef()) {\n <ng-container *ngTemplateOutlet=\"$any(msg.message); context: msg.templateContext\"></ng-container>\n } @else {\n @if (msg.message) {\n <h4 class=\"vision-h4\">{{ msg.message }}</h4>\n }\n }\n @if (msg.actionText) {\n <fw-button\n size=\"small\"\n variant=\"ghost\"\n [color]=\"color()\"\n (click)=\"handleAction()\"\n >\n {{ msg.actionText }}\n </fw-button>\n }\n @if (showClose()) {\n <fw-icon-button\n icon=\"close\"\n size=\"small\"\n [color]=\"msg.severity\"\n (click)=\"handleDismiss()\"\n ></fw-icon-button>\n }\n @if (!msg.actionText && !showClose()) {\n <div></div>\n }\n}\n", styles: [".vision-shadow-extra-large{box-shadow:0 8px 25px #0000001a}.vision-shadow-large,fw-snackbar{box-shadow:0 5px 15px #0000001a}.vision-shadow-medium{box-shadow:0 2px 5px #0000001a}.vision-shadow-small{box-shadow:0 1px 2px #0000000d}.vision-shadow-inner{box-shadow:0 2px 4px #00000014 inset}fw-snackbar{display:flex;align-items:flex-start;box-sizing:border-box;max-width:320px;min-width:200px;min-height:30px;padding:8px 8px 8px 16px;gap:8px;transform-origin:center;background-color:var(--card-header);color:var(--typography-base);white-space:pre-wrap;border-radius:4px;border:1px solid var(--separations-border);margin:8px}fw-snackbar>fw-icon{width:24px;height:24px;font-size:24px;white-space:nowrap;margin:3px 0}fw-snackbar h4{margin:6px 0 0;flex:1}fw-snackbar.primary fw-icon{color:var(--primary-base)}fw-snackbar.danger fw-icon{color:var(--red-base)}fw-snackbar.success fw-icon{color:var(--green-base)}fw-snackbar.warning fw-icon{color:var(--orange-base)}\n"], dependencies: [{ kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.FwButtonComponent, selector: "fw-button", inputs: ["color", "size", "variant", "type", "disabled", "fullWidth", "leftIcon", "rightIcon"] }, { kind: "component", type: i4.FwIconButtonComponent, selector: "fw-icon-button", inputs: ["color", "icon", "size", "disabled", "selected"] }, { kind: "component", type: i5.FwIconComponent, selector: "fw-icon", inputs: ["size", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
93
87
  }
94
88
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwSnackbarComponent, decorators: [{
95
89
  type: Component,
96
- args: [{ selector: 'fw-snackbar', providers: [FwSnackbarTimerService], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"message\">\n <fw-icon *ngIf=\"message.icon\">{{ message.icon }}</fw-icon>\n <h4 class=\"vision-h4\" *ngIf=\"message.message\">{{ message.message }}</h4>\n <fw-button\n *ngIf=\"message.actionText\" variant=\"ghost\"\n [color]=\"color\" size=\"small\"\n (click)=\"handleAction()\">{{ message.actionText }}\n </fw-button>\n <fw-icon-button\n *ngIf=\"message.showClose\"\n icon=\"close\" size=\"small\" [color]=\"message.severity\"\n (click)=\"handleDismiss()\">\n </fw-icon-button>\n <div *ngIf=\"!message.actionText && !message.showClose\"></div>\n</ng-container>\n", styles: [".vision-shadow-extra-large{box-shadow:0 8px 25px #0000001a}.vision-shadow-large,fw-snackbar{box-shadow:0 5px 15px #0000001a}.vision-shadow-medium{box-shadow:0 2px 5px #0000001a}.vision-shadow-small{box-shadow:0 1px 2px #0000000d}.vision-shadow-inner{box-shadow:0 2px 4px #00000014 inset}fw-snackbar{display:flex;align-items:flex-start;box-sizing:border-box;max-width:320px;min-width:200px;min-height:30px;padding:8px 8px 8px 16px;gap:8px;transform-origin:center;background-color:var(--card-header);color:var(--typography-base);white-space:pre-wrap;border-radius:4px;border:1px solid var(--separations-border);margin:8px}fw-snackbar>fw-icon{width:24px;height:24px;font-size:24px;white-space:nowrap;margin:3px 0}fw-snackbar h4{margin:6px 0 0;flex:1}fw-snackbar.primary fw-icon{color:var(--primary-base)}fw-snackbar.danger fw-icon{color:var(--red-base)}fw-snackbar.success fw-icon{color:var(--green-base)}fw-snackbar.warning fw-icon{color:var(--orange-base)}\n"] }]
97
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.FwSnackbarTimerService }], propDecorators: { message: [{
98
- type: Input
99
- }], messageDuration: [{
100
- type: Input
101
- }], ready: [{
102
- type: Output
103
- }], dismiss: [{
104
- type: Output
105
- }], action: [{
106
- type: Output
107
- }], cssClass: [{
90
+ args: [{ selector: 'fw-snackbar', providers: [FwSnackbarTimerService], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (message(); as msg) {\n @if (icon()) {\n <fw-icon>{{ icon() }}</fw-icon>\n }\n @if (isTemplateRef()) {\n <ng-container *ngTemplateOutlet=\"$any(msg.message); context: msg.templateContext\"></ng-container>\n } @else {\n @if (msg.message) {\n <h4 class=\"vision-h4\">{{ msg.message }}</h4>\n }\n }\n @if (msg.actionText) {\n <fw-button\n size=\"small\"\n variant=\"ghost\"\n [color]=\"color()\"\n (click)=\"handleAction()\"\n >\n {{ msg.actionText }}\n </fw-button>\n }\n @if (showClose()) {\n <fw-icon-button\n icon=\"close\"\n size=\"small\"\n [color]=\"msg.severity\"\n (click)=\"handleDismiss()\"\n ></fw-icon-button>\n }\n @if (!msg.actionText && !showClose()) {\n <div></div>\n }\n}\n", styles: [".vision-shadow-extra-large{box-shadow:0 8px 25px #0000001a}.vision-shadow-large,fw-snackbar{box-shadow:0 5px 15px #0000001a}.vision-shadow-medium{box-shadow:0 2px 5px #0000001a}.vision-shadow-small{box-shadow:0 1px 2px #0000000d}.vision-shadow-inner{box-shadow:0 2px 4px #00000014 inset}fw-snackbar{display:flex;align-items:flex-start;box-sizing:border-box;max-width:320px;min-width:200px;min-height:30px;padding:8px 8px 8px 16px;gap:8px;transform-origin:center;background-color:var(--card-header);color:var(--typography-base);white-space:pre-wrap;border-radius:4px;border:1px solid var(--separations-border);margin:8px}fw-snackbar>fw-icon{width:24px;height:24px;font-size:24px;white-space:nowrap;margin:3px 0}fw-snackbar h4{margin:6px 0 0;flex:1}fw-snackbar.primary fw-icon{color:var(--primary-base)}fw-snackbar.danger fw-icon{color:var(--red-base)}fw-snackbar.success fw-icon{color:var(--green-base)}fw-snackbar.warning fw-icon{color:var(--orange-base)}\n"] }]
91
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.FwSnackbarTimerService }], propDecorators: { cssClass: [{
108
92
  type: HostBinding,
109
93
  args: ['class']
110
94
  }] } });
111
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hY2tiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvc25hY2tiYXIvc25hY2tiYXIvc25hY2tiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvc25hY2tiYXIvc25hY2tiYXIvc25hY2tiYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0VBQWtFO0FBQ2xFLE9BQU8sRUFFTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUVMLE1BQU0sRUFDTixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7QUFXbkUsTUFBTSxPQUFPLG1CQUFtQjtJQVE5QixJQUEwQixRQUFRO1FBQ2hDLE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQztRQUMvQixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLENBQUM7WUFDM0IsT0FBTyxRQUFRLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDckMsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDO0lBQ0gsQ0FBQztJQUVELFlBQW9CLEdBQXNCLEVBQVUsWUFBb0M7UUFBcEUsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBd0I7UUFmL0Usb0JBQWUsR0FBVyxJQUFJLENBQUM7UUFDOUIsVUFBSyxHQUFHLElBQUksWUFBWSxFQUF1QixDQUFDO1FBQ2hELFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ3JDLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzlDLFVBQUssR0FBaUQsU0FBUyxDQUFDO0lBWWhFLENB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QUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3hCLENBQUM7UUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzFCLENBQUM7K0dBdEZVLG1CQUFtQjttR0FBbkIsbUJBQW1CLGlPQUxuQixDQUFDLHNCQUFzQixDQUFDLDBCQ3JCckMsb21CQWVBOzs0RkRXYSxtQkFBbUI7a0JBVC9CLFNBQVM7K0JBQ0UsYUFBYSxhQUdaLENBQUMsc0JBQXNCLENBQUMsaUJBQ3BCLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU07MkhBSXRDLE9BQU87c0JBQWYsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNJLEtBQUs7c0JBQWQsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFHbUIsUUFBUTtzQkFBakMsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHJ4LWFuZ3VsYXIvbm8tZXhwbGljaXQtY2hhbmdlLWRldGVjdGlvbi1hcGlzICovXG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEZ3U25hY2tiYXJNZXNzYWdlIH0gZnJvbSAnLi4vc25hY2tiYXItbWVzc2FnZS5tb2RlbCc7XG5pbXBvcnQgeyBGd1NuYWNrYmFyVGltZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc25hY2tiYXItdGltZXIuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Z3LXNuYWNrYmFyJyxcbiAgc3R5bGVVcmxzOiBbJy4vc25hY2tiYXIuY29tcG9uZW50LnNjc3MnXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3NuYWNrYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbRndTbmFja2JhclRpbWVyU2VydmljZV0sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcblxuZXhwb3J0IGNsYXNzIEZ3U25hY2tiYXJDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkluaXQge1xuICBASW5wdXQoKSBtZXNzYWdlOiBGd1NuYWNrYmFyTWVzc2FnZTtcbiAgQElucHV0KCkgbWVzc2FnZUR1cmF0aW9uOiBudW1iZXIgPSA5MDAwO1xuICBAT3V0cHV0KCkgcmVhZHkgPSBuZXcgRXZlbnRFbWl0dGVyPEZ3U25hY2tiYXJDb21wb25lbnQ+KCk7XG4gIEBPdXRwdXQoKSBkaXNtaXNzID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBhY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgY29sb3I6ICdwcmltYXJ5JyB8ICdzdWNjZXNzJyB8ICd3YXJuaW5nJyB8ICdkYW5nZXInID0gJ3ByaW1hcnknO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKSBnZXQgY3NzQ2xhc3MoKTogc3RyaW5nIHtcbiAgICBjb25zdCBjc3NDbGFzcyA9ICdmdy1zbmFja2Jhcic7XG4gICAgaWYgKHRoaXMubWVzc2FnZT8uc2V2ZXJpdHkpIHtcbiAgICAgIHJldHVybiBjc3NDbGFzcyArICcgJyArIHRoaXMuY29sb3I7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBjc3NDbGFzcztcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgdGltZXJTZXJ2aWNlOiBGd1NuYWNrYmFyVGltZXJTZXJ2aWNlKSB7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yZWFkeS5lbWl0KHRoaXMpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgc3RhcnRUaW1lcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tZXNzYWdlICYmIHRoaXMubWVzc2FnZS5kdXJhdGlvbikge1xuICAgICAgdGhpcy5tZXNzYWdlRHVyYXRpb24gPSB0aGlzLm1lc3NhZ2UuZHVyYXRpb247XG4gICAgfVxuICAgIHRoaXMudGltZXJTZXJ2aWNlLnN0YXJ0KHRoaXMubWVzc2FnZUR1cmF0aW9uKS50aGVuKCgpID0+IHtcbiAgICAgIHRoaXMuaGFuZGxlRGlzbWlzcygpO1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG4gIH1cblxuICBzdG9wVGltZXIoKTogdm9pZCB7XG4gICAgdGhpcy50aW1lclNlcnZpY2Uuc3RvcCgpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgc3dpdGNoICh0aGlzLm1lc3NhZ2Uuc2V2ZXJpdHkpIHtcbiAgICAgIGNhc2UgJ3N1Y2Nlc3MnOlxuICAgICAgICBpZiAoIXRoaXMubWVzc2FnZS5pY29uKSB7XG4gICAgICAgICAgdGhpcy5tZXNzYWdlLmljb24gPSAnZG9uZS1jaGVjay10cmFja2VkJztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNvbG9yID0gJ3N1Y2Nlc3MnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3dhcm5pbmcnOlxuICAgICAgICBpZiAoIXRoaXMubWVzc2FnZS5pY29uKSB7XG4gICAgICAgICAgdGhpcy5tZXNzYWdlLmljb24gPSAnd2FybmluZy1jaXJjbGUnO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29sb3IgPSAnd2FybmluZyc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZXJyb3InOlxuICAgICAgICBpZiAoIXRoaXMubWVzc2FnZS5pY29uKSB7XG4gICAgICAgICAgdGhpcy5tZXNzYWdlLmljb24gPSAnd2FybmluZyc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMubWVzc2FnZS5zaG93Q2xvc2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRoaXMubWVzc2FnZS5zaG93Q2xvc2UgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5tZXNzYWdlLmR1cmF0aW9uKSB7XG4gICAgICAgICAgdGhpcy5tZXNzYWdlLmR1cmF0aW9uID0gMjkwMDA7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jb2xvciA9ICdkYW5nZXInO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2luZm8nOlxuICAgICAgICBpZiAoIXRoaXMubWVzc2FnZS5pY29uKSB7XG4gICAgICAgICAgdGhpcy5tZXNzYWdlLmljb24gPSAnaW5mb3JtYXRpb24tY2lyY2xlJztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNvbG9yID0gJ3ByaW1hcnknO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBoYW5kbGVEaXNtaXNzKCk6IHZvaWQge1xuICAgIHRoaXMuZGlzbWlzcy5lbWl0KHRoaXMubWVzc2FnZS5pZCk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBoYW5kbGVBY3Rpb24oKTogdm9pZCB7XG4gICAgdGhpcy5hY3Rpb24uZW1pdCh0aGlzLm1lc3NhZ2UuaWQpO1xuICAgIGlmICh0aGlzLm1lc3NhZ2UuYWN0aW9uKSB7XG4gICAgICB0aGlzLm1lc3NhZ2UuYWN0aW9uKCk7XG4gICAgfVxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJtZXNzYWdlXCI+XG4gIDxmdy1pY29uICpuZ0lmPVwibWVzc2FnZS5pY29uXCI+e3sgbWVzc2FnZS5pY29uIH19PC9mdy1pY29uPlxuICA8aDQgY2xhc3M9XCJ2aXNpb24taDRcIiAqbmdJZj1cIm1lc3NhZ2UubWVzc2FnZVwiPnt7IG1lc3NhZ2UubWVzc2FnZSB9fTwvaDQ+XG4gIDxmdy1idXR0b25cbiAgICAqbmdJZj1cIm1lc3NhZ2UuYWN0aW9uVGV4dFwiIHZhcmlhbnQ9XCJnaG9zdFwiXG4gICAgW2NvbG9yXT1cImNvbG9yXCIgc2l6ZT1cInNtYWxsXCJcbiAgICAoY2xpY2spPVwiaGFuZGxlQWN0aW9uKClcIj57eyBtZXNzYWdlLmFjdGlvblRleHQgfX1cbiAgPC9mdy1idXR0b24+XG4gIDxmdy1pY29uLWJ1dHRvblxuICAgICpuZ0lmPVwibWVzc2FnZS5zaG93Q2xvc2VcIlxuICAgIGljb249XCJjbG9zZVwiIHNpemU9XCJzbWFsbFwiIFtjb2xvcl09XCJtZXNzYWdlLnNldmVyaXR5XCJcbiAgICAoY2xpY2spPVwiaGFuZGxlRGlzbWlzcygpXCI+XG4gIDwvZnctaWNvbi1idXR0b24+XG4gIDxkaXYgKm5nSWY9XCIhbWVzc2FnZS5hY3Rpb25UZXh0ICYmICFtZXNzYWdlLnNob3dDbG9zZVwiPjwvZGl2PlxuPC9uZy1jb250YWluZXI+XG4iXX0=
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hY2tiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvc25hY2tiYXIvc25hY2tiYXIvc25hY2tiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvc25hY2tiYXIvc25hY2tiYXIvc25hY2tiYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0VBQWtFO0FBQ2xFLE9BQU8sRUFFTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFFBQVEsRUFDUixXQUFXLEVBQ1gsS0FBSyxFQUNMLE1BQU0sRUFDTixXQUFXLEVBQ1gsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBS3ZCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7O0FBV25FLE1BQU0sT0FBTyxtQkFBbUI7SUEwQzlCLElBQTBCLFFBQVE7UUFDaEMsTUFBTSxRQUFRLEdBQUcsYUFBYSxDQUFDO1FBQy9CLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxRQUFRLENBQUM7UUFDMUMsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLE9BQU8sUUFBUSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdkMsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDO0lBQ0gsQ0FBQztJQUVELFlBQW9CLEdBQXNCLEVBQVUsWUFBb0M7UUFBcEUsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBd0I7UUFuRHhGLFlBQU8sR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFxQixDQUFDO1FBQzlDLG9CQUFlLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlCLFVBQUssR0FBRyxNQUFNLEVBQXVCLENBQUM7UUFD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QUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6QixJQUFJLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNmLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNmLENBQUM7UUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzFCLENBQUM7K0dBcEZVLG1CQUFtQjttR0FBbkIsbUJBQW1CLDRiQUxuQixDQUFDLHNCQUFzQixDQUFDLDBCQ3ZCckMsaXhCQWlDQTs7NEZETGEsbUJBQW1CO2tCQVQvQixTQUFTOytCQUNFLGFBQWEsYUFHWixDQUFDLHNCQUFzQixDQUFDLGlCQUNwQixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNOzJIQTZDckIsUUFBUTtzQkFBakMsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHJ4LWFuZ3VsYXIvbm8tZXhwbGljaXQtY2hhbmdlLWRldGVjdGlvbi1hcGlzICovXG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIEhvc3RCaW5kaW5nLFxuICBpbnB1dCxcbiAgb3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBGd0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2J1dHRvbi9idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IEljb25UeXBlIH0gZnJvbSAnLi4vLi4vaWNvbi9pY29uLnR5cGVzJztcbmltcG9ydCB7IEZ3U25hY2tiYXJNZXNzYWdlIH0gZnJvbSAnLi4vc25hY2tiYXItbWVzc2FnZS5tb2RlbCc7XG5pbXBvcnQgeyBGd1NuYWNrYmFyVGltZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc25hY2tiYXItdGltZXIuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Z3LXNuYWNrYmFyJyxcbiAgc3R5bGVVcmxzOiBbJy4vc25hY2tiYXIuY29tcG9uZW50LnNjc3MnXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3NuYWNrYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbRndTbmFja2JhclRpbWVyU2VydmljZV0sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcblxuZXhwb3J0IGNsYXNzIEZ3U25hY2tiYXJDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgbWVzc2FnZSA9IGlucHV0LnJlcXVpcmVkPEZ3U25hY2tiYXJNZXNzYWdlPigpO1xuICBtZXNzYWdlRHVyYXRpb24gPSBpbnB1dCg5MDAwKTtcbiAgcmVhZHkgPSBvdXRwdXQ8RndTbmFja2JhckNvbXBvbmVudD4oKTtcbiAgZGlzbWlzcyA9IG91dHB1dDxzdHJpbmc+KCk7XG4gIGFjdGlvbiA9IG91dHB1dDxzdHJpbmc+KCk7XG5cbiAgcHJpdmF0ZSBkZWZhdWx0SWNvbnM6IFJlY29yZDxGd1NuYWNrYmFyTWVzc2FnZVsnc2V2ZXJpdHknXSwgSWNvblR5cGU+ID0ge1xuICAgIHN1Y2Nlc3M6ICdkb25lLWNoZWNrLXRyYWNrZWQnLFxuICAgIHdhcm5pbmc6ICd3YXJuaW5nLWNpcmNsZScsXG4gICAgZXJyb3I6ICd3YXJuaW5nJyxcbiAgICBpbmZvOiAnaW5mb3JtYXRpb24tY2lyY2xlJyxcbiAgfTtcblxuICBpY29uID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5tZXNzYWdlKCkuaWNvbiB8fCB0aGlzLmRlZmF1bHRJY29uc1t0aGlzLm1lc3NhZ2UoKS5zZXZlcml0eV0pO1xuXG4gIHNob3dDbG9zZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBtc2cgPSB0aGlzLm1lc3NhZ2UoKTtcbiAgICByZXR1cm4gbXNnLnNob3dDbG9zZSAhPT0gdW5kZWZpbmVkID8gbXNnLnNob3dDbG9zZSA6IG1zZy5zZXZlcml0eSA9PT0gJ2Vycm9yJztcbiAgfSk7XG5cbiAgZHVyYXRpb24gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgbXNnID0gdGhpcy5tZXNzYWdlKCk7XG4gICAgaWYgKG1zZy5kdXJhdGlvbikge1xuICAgICAgcmV0dXJuIG1zZy5kdXJhdGlvbjtcbiAgICB9XG4gICAgcmV0dXJuIG1zZy5zZXZlcml0eSA9PT0gJ2Vycm9yJyA/IDI5MDAwIDogdGhpcy5tZXNzYWdlRHVyYXRpb24oKTtcbiAgfSk7XG5cbiAgY29sb3IgPSBjb21wdXRlZDxGd0J1dHRvbkNvbXBvbmVudFsnY29sb3InXT4oKCkgPT4ge1xuICAgIGNvbnN0IHNldmVyaXR5ID0gdGhpcy5tZXNzYWdlKCkuc2V2ZXJpdHk7XG4gICAgY29uc3QgY29sb3JzOiBSZWNvcmQ8RndTbmFja2Jhck1lc3NhZ2VbJ3NldmVyaXR5J10sIEZ3QnV0dG9uQ29tcG9uZW50Wydjb2xvciddPiA9IHtcbiAgICAgIHN1Y2Nlc3M6ICdzdWNjZXNzJyxcbiAgICAgIHdhcm5pbmc6ICd3YXJuaW5nJyxcbiAgICAgIGVycm9yOiAnZGFuZ2VyJyxcbiAgICAgIGluZm86ICdwcmltYXJ5JyxcbiAgICB9XG4gICAgcmV0dXJuIGNvbG9yc1tzZXZlcml0eV0gfHwgJ3ByaW1hcnknO1xuICB9KTtcblxuICBpc1RlbXBsYXRlUmVmID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5tZXNzYWdlKCkubWVzc2FnZSBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmKTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgZ2V0IGNzc0NsYXNzKCk6IHN0cmluZyB7XG4gICAgY29uc3QgY3NzQ2xhc3MgPSAnZnctc25hY2tiYXInO1xuICAgIGNvbnN0IHNldmVyaXR5ID0gdGhpcy5tZXNzYWdlKCk/LnNldmVyaXR5O1xuICAgIGlmIChzZXZlcml0eSkge1xuICAgICAgcmV0dXJuIGNzc0NsYXNzICsgJyAnICsgdGhpcy5jb2xvcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gY3NzQ2xhc3M7XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIHRpbWVyU2VydmljZTogRndTbmFja2JhclRpbWVyU2VydmljZSkge1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMucmVhZHkuZW1pdCh0aGlzKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHN0YXJ0VGltZXIoKTogdm9pZCB7XG4gICAgdGhpcy50aW1lclNlcnZpY2Uuc3RhcnQodGhpcy5kdXJhdGlvbigpKS50aGVuKCgpID0+IHtcbiAgICAgIHRoaXMuaGFuZGxlRGlzbWlzcygpO1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG4gIH1cblxuICBzdG9wVGltZXIoKTogdm9pZCB7XG4gICAgdGhpcy50aW1lclNlcnZpY2Uuc3RvcCgpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgaGFuZGxlRGlzbWlzcygpOiB2b2lkIHtcbiAgICB0aGlzLmRpc21pc3MuZW1pdCh0aGlzLm1lc3NhZ2UoKS5pZCk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBoYW5kbGVBY3Rpb24oKTogdm9pZCB7XG4gICAgY29uc3QgbXNnID0gdGhpcy5tZXNzYWdlKCk7XG4gICAgdGhpcy5hY3Rpb24uZW1pdChtc2cuaWQpO1xuICAgIGlmIChtc2cuYWN0aW9uKSB7XG4gICAgICBtc2cuYWN0aW9uKCk7XG4gICAgfVxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbn1cbiIsIkBpZiAobWVzc2FnZSgpOyBhcyBtc2cpIHtcbiAgQGlmIChpY29uKCkpIHtcbiAgICA8ZnctaWNvbj57eyBpY29uKCkgfX08L2Z3LWljb24+XG4gIH1cbiAgQGlmIChpc1RlbXBsYXRlUmVmKCkpIHtcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiJGFueShtc2cubWVzc2FnZSk7IGNvbnRleHQ6IG1zZy50ZW1wbGF0ZUNvbnRleHRcIj48L25nLWNvbnRhaW5lcj5cbiAgfSBAZWxzZSB7XG4gICAgQGlmIChtc2cubWVzc2FnZSkge1xuICAgICAgPGg0IGNsYXNzPVwidmlzaW9uLWg0XCI+e3sgbXNnLm1lc3NhZ2UgfX08L2g0PlxuICAgIH1cbiAgfVxuICBAaWYgKG1zZy5hY3Rpb25UZXh0KSB7XG4gICAgPGZ3LWJ1dHRvblxuICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgIHZhcmlhbnQ9XCJnaG9zdFwiXG4gICAgICBbY29sb3JdPVwiY29sb3IoKVwiXG4gICAgICAoY2xpY2spPVwiaGFuZGxlQWN0aW9uKClcIlxuICAgID5cbiAgICAgIHt7IG1zZy5hY3Rpb25UZXh0IH19XG4gICAgPC9mdy1idXR0b24+XG4gIH1cbiAgQGlmIChzaG93Q2xvc2UoKSkge1xuICAgIDxmdy1pY29uLWJ1dHRvblxuICAgICAgaWNvbj1cImNsb3NlXCJcbiAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICBbY29sb3JdPVwibXNnLnNldmVyaXR5XCJcbiAgICAgIChjbGljayk9XCJoYW5kbGVEaXNtaXNzKClcIlxuICAgID48L2Z3LWljb24tYnV0dG9uPlxuICB9XG4gIEBpZiAoIW1zZy5hY3Rpb25UZXh0ICYmICFzaG93Q2xvc2UoKSkge1xuICAgIDxkaXY+PC9kaXY+XG4gIH1cbn1cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hY2tiYXItbWVzc2FnZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NuYWNrYmFyL3NuYWNrYmFyLW1lc3NhZ2UubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZ3U25hY2tiYXJDb21wb25lbnQgfSBmcm9tICcuL3NuYWNrYmFyL3NuYWNrYmFyLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRndTbmFja2Jhck1lc3NhZ2Uge1xuICBpZD86IHN0cmluZztcbiAgc2V2ZXJpdHk6ICdpbmZvJyB8ICdzdWNjZXNzJyB8ICd3YXJuaW5nJyB8ICdlcnJvcic7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgaWNvbj86IHN0cmluZztcbiAgc2hvd0Nsb3NlPzogYm9vbGVhbjtcbiAgYWN0aW9uVGV4dD86IHN0cmluZyxcbiAgYWN0aW9uPzogKCkgPT4gdm9pZDtcbiAgZHVyYXRpb24/OiBudW1iZXI7XG4gIHJlZj86IEZ3U25hY2tiYXJDb21wb25lbnQ7XG59XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hY2tiYXItbWVzc2FnZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NuYWNrYmFyL3NuYWNrYmFyLW1lc3NhZ2UubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEZ3U25hY2tiYXJDb21wb25lbnQgfSBmcm9tICcuL3NuYWNrYmFyL3NuYWNrYmFyLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRndTbmFja2Jhck1lc3NhZ2Uge1xuICBpZD86IHN0cmluZztcbiAgc2V2ZXJpdHk6ICdpbmZvJyB8ICdzdWNjZXNzJyB8ICd3YXJuaW5nJyB8ICdlcnJvcic7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIG1lc3NhZ2U6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT47XG4gIGljb24/OiBzdHJpbmc7XG4gIHNob3dDbG9zZT86IGJvb2xlYW47XG4gIGFjdGlvblRleHQ/OiBzdHJpbmcsXG4gIGFjdGlvbj86ICgpID0+IHZvaWQ7XG4gIGR1cmF0aW9uPzogbnVtYmVyO1xuICByZWY/OiBGd1NuYWNrYmFyQ29tcG9uZW50O1xuICB0ZW1wbGF0ZUNvbnRleHQ/OiBvYmplY3Q7XG59XG4iXX0=
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { HostBinding, Input, ChangeDetectionStrategy, Component, EventEmitter, Output, NgModule, input, model, computed, ViewEncapsulation, HostListener, signal, effect, inject, ElementRef, ViewContainerRef, Directive, contentChildren, viewChild, ChangeDetectorRef, ContentChildren, ViewChild, forwardRef, Optional, Inject, SkipSelf, Injectable, Pipe, ContentChild, output, Host, ViewChildren, Self, viewChildren } from '@angular/core';
2
+ import { HostBinding, Input, ChangeDetectionStrategy, Component, EventEmitter, Output, NgModule, input, model, computed, ViewEncapsulation, HostListener, signal, effect, inject, ElementRef, ViewContainerRef, Directive, contentChildren, viewChild, ChangeDetectorRef, ContentChildren, ViewChild, forwardRef, Optional, Inject, SkipSelf, Injectable, Pipe, ContentChild, output, Host, ViewChildren, Self, TemplateRef, viewChildren } from '@angular/core';
3
3
  import * as i1$1 from '@angular/common';
4
4
  import { CommonModule, NgClass } from '@angular/common';
5
5
  import * as i1 from '@angular/platform-browser';
@@ -7582,8 +7582,9 @@ class FwSnackbarTimerService {
7582
7582
  class FwSnackbarComponent {
7583
7583
  get cssClass() {
7584
7584
  const cssClass = 'fw-snackbar';
7585
- if (this.message?.severity) {
7586
- return cssClass + ' ' + this.color;
7585
+ const severity = this.message()?.severity;
7586
+ if (severity) {
7587
+ return cssClass + ' ' + this.color();
7587
7588
  }
7588
7589
  else {
7589
7590
  return cssClass;
@@ -7592,21 +7593,47 @@ class FwSnackbarComponent {
7592
7593
  constructor(cdr, timerService) {
7593
7594
  this.cdr = cdr;
7594
7595
  this.timerService = timerService;
7595
- this.messageDuration = 9000;
7596
- this.ready = new EventEmitter();
7597
- this.dismiss = new EventEmitter();
7598
- this.action = new EventEmitter();
7599
- this.color = 'primary';
7596
+ this.message = input.required();
7597
+ this.messageDuration = input(9000);
7598
+ this.ready = output();
7599
+ this.dismiss = output();
7600
+ this.action = output();
7601
+ this.defaultIcons = {
7602
+ success: 'done-check-tracked',
7603
+ warning: 'warning-circle',
7604
+ error: 'warning',
7605
+ info: 'information-circle',
7606
+ };
7607
+ this.icon = computed(() => this.message().icon || this.defaultIcons[this.message().severity]);
7608
+ this.showClose = computed(() => {
7609
+ const msg = this.message();
7610
+ return msg.showClose !== undefined ? msg.showClose : msg.severity === 'error';
7611
+ });
7612
+ this.duration = computed(() => {
7613
+ const msg = this.message();
7614
+ if (msg.duration) {
7615
+ return msg.duration;
7616
+ }
7617
+ return msg.severity === 'error' ? 29000 : this.messageDuration();
7618
+ });
7619
+ this.color = computed(() => {
7620
+ const severity = this.message().severity;
7621
+ const colors = {
7622
+ success: 'success',
7623
+ warning: 'warning',
7624
+ error: 'danger',
7625
+ info: 'primary',
7626
+ };
7627
+ return colors[severity] || 'primary';
7628
+ });
7629
+ this.isTemplateRef = computed(() => this.message().message instanceof TemplateRef);
7600
7630
  }
7601
7631
  ngAfterViewInit() {
7602
7632
  this.ready.emit(this);
7603
7633
  this.cdr.markForCheck();
7604
7634
  }
7605
7635
  startTimer() {
7606
- if (this.message && this.message.duration) {
7607
- this.messageDuration = this.message.duration;
7608
- }
7609
- this.timerService.start(this.messageDuration).then(() => {
7636
+ this.timerService.start(this.duration()).then(() => {
7610
7637
  this.handleDismiss();
7611
7638
  this.cdr.markForCheck();
7612
7639
  });
@@ -7615,68 +7642,25 @@ class FwSnackbarComponent {
7615
7642
  this.timerService.stop();
7616
7643
  this.cdr.markForCheck();
7617
7644
  }
7618
- ngOnInit() {
7619
- switch (this.message.severity) {
7620
- case 'success':
7621
- if (!this.message.icon) {
7622
- this.message.icon = 'done-check-tracked';
7623
- }
7624
- this.color = 'success';
7625
- break;
7626
- case 'warning':
7627
- if (!this.message.icon) {
7628
- this.message.icon = 'warning-circle';
7629
- }
7630
- this.color = 'warning';
7631
- break;
7632
- case 'error':
7633
- if (!this.message.icon) {
7634
- this.message.icon = 'warning';
7635
- }
7636
- if (this.message.showClose === undefined) {
7637
- this.message.showClose = true;
7638
- }
7639
- if (!this.message.duration) {
7640
- this.message.duration = 29000;
7641
- }
7642
- this.color = 'danger';
7643
- break;
7644
- case 'info':
7645
- if (!this.message.icon) {
7646
- this.message.icon = 'information-circle';
7647
- }
7648
- this.color = 'primary';
7649
- break;
7650
- }
7651
- }
7652
7645
  handleDismiss() {
7653
- this.dismiss.emit(this.message.id);
7646
+ this.dismiss.emit(this.message().id);
7654
7647
  this.cdr.markForCheck();
7655
7648
  }
7656
7649
  handleAction() {
7657
- this.action.emit(this.message.id);
7658
- if (this.message.action) {
7659
- this.message.action();
7650
+ const msg = this.message();
7651
+ this.action.emit(msg.id);
7652
+ if (msg.action) {
7653
+ msg.action();
7660
7654
  }
7661
7655
  this.cdr.markForCheck();
7662
7656
  }
7663
7657
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwSnackbarComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: FwSnackbarTimerService }], target: i0.ɵɵFactoryTarget.Component }); }
7664
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FwSnackbarComponent, selector: "fw-snackbar", inputs: { message: "message", messageDuration: "messageDuration" }, outputs: { ready: "ready", dismiss: "dismiss", action: "action" }, host: { properties: { "class": "this.cssClass" } }, providers: [FwSnackbarTimerService], ngImport: i0, template: "<ng-container *ngIf=\"message\">\n <fw-icon *ngIf=\"message.icon\">{{ message.icon }}</fw-icon>\n <h4 class=\"vision-h4\" *ngIf=\"message.message\">{{ message.message }}</h4>\n <fw-button\n *ngIf=\"message.actionText\" variant=\"ghost\"\n [color]=\"color\" size=\"small\"\n (click)=\"handleAction()\">{{ message.actionText }}\n </fw-button>\n <fw-icon-button\n *ngIf=\"message.showClose\"\n icon=\"close\" size=\"small\" [color]=\"message.severity\"\n (click)=\"handleDismiss()\">\n </fw-icon-button>\n <div *ngIf=\"!message.actionText && !message.showClose\"></div>\n</ng-container>\n", styles: [".vision-shadow-extra-large{box-shadow:0 8px 25px #0000001a}.vision-shadow-large,fw-snackbar{box-shadow:0 5px 15px #0000001a}.vision-shadow-medium{box-shadow:0 2px 5px #0000001a}.vision-shadow-small{box-shadow:0 1px 2px #0000000d}.vision-shadow-inner{box-shadow:0 2px 4px #00000014 inset}fw-snackbar{display:flex;align-items:flex-start;box-sizing:border-box;max-width:320px;min-width:200px;min-height:30px;padding:8px 8px 8px 16px;gap:8px;transform-origin:center;background-color:var(--card-header);color:var(--typography-base);white-space:pre-wrap;border-radius:4px;border:1px solid var(--separations-border);margin:8px}fw-snackbar>fw-icon{width:24px;height:24px;font-size:24px;white-space:nowrap;margin:3px 0}fw-snackbar h4{margin:6px 0 0;flex:1}fw-snackbar.primary fw-icon{color:var(--primary-base)}fw-snackbar.danger fw-icon{color:var(--red-base)}fw-snackbar.success fw-icon{color:var(--green-base)}fw-snackbar.warning fw-icon{color:var(--orange-base)}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FwButtonComponent, selector: "fw-button", inputs: ["color", "size", "variant", "type", "disabled", "fullWidth", "leftIcon", "rightIcon"] }, { kind: "component", type: FwIconButtonComponent, selector: "fw-icon-button", inputs: ["color", "icon", "size", "disabled", "selected"] }, { kind: "component", type: FwIconComponent, selector: "fw-icon", inputs: ["size", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
7658
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: FwSnackbarComponent, selector: "fw-snackbar", inputs: { message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: true, transformFunction: null }, messageDuration: { classPropertyName: "messageDuration", publicName: "messageDuration", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { ready: "ready", dismiss: "dismiss", action: "action" }, host: { properties: { "class": "this.cssClass" } }, providers: [FwSnackbarTimerService], ngImport: i0, template: "@if (message(); as msg) {\n @if (icon()) {\n <fw-icon>{{ icon() }}</fw-icon>\n }\n @if (isTemplateRef()) {\n <ng-container *ngTemplateOutlet=\"$any(msg.message); context: msg.templateContext\"></ng-container>\n } @else {\n @if (msg.message) {\n <h4 class=\"vision-h4\">{{ msg.message }}</h4>\n }\n }\n @if (msg.actionText) {\n <fw-button\n size=\"small\"\n variant=\"ghost\"\n [color]=\"color()\"\n (click)=\"handleAction()\"\n >\n {{ msg.actionText }}\n </fw-button>\n }\n @if (showClose()) {\n <fw-icon-button\n icon=\"close\"\n size=\"small\"\n [color]=\"msg.severity\"\n (click)=\"handleDismiss()\"\n ></fw-icon-button>\n }\n @if (!msg.actionText && !showClose()) {\n <div></div>\n }\n}\n", styles: [".vision-shadow-extra-large{box-shadow:0 8px 25px #0000001a}.vision-shadow-large,fw-snackbar{box-shadow:0 5px 15px #0000001a}.vision-shadow-medium{box-shadow:0 2px 5px #0000001a}.vision-shadow-small{box-shadow:0 1px 2px #0000000d}.vision-shadow-inner{box-shadow:0 2px 4px #00000014 inset}fw-snackbar{display:flex;align-items:flex-start;box-sizing:border-box;max-width:320px;min-width:200px;min-height:30px;padding:8px 8px 8px 16px;gap:8px;transform-origin:center;background-color:var(--card-header);color:var(--typography-base);white-space:pre-wrap;border-radius:4px;border:1px solid var(--separations-border);margin:8px}fw-snackbar>fw-icon{width:24px;height:24px;font-size:24px;white-space:nowrap;margin:3px 0}fw-snackbar h4{margin:6px 0 0;flex:1}fw-snackbar.primary fw-icon{color:var(--primary-base)}fw-snackbar.danger fw-icon{color:var(--red-base)}fw-snackbar.success fw-icon{color:var(--green-base)}fw-snackbar.warning fw-icon{color:var(--orange-base)}\n"], dependencies: [{ kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: FwButtonComponent, selector: "fw-button", inputs: ["color", "size", "variant", "type", "disabled", "fullWidth", "leftIcon", "rightIcon"] }, { kind: "component", type: FwIconButtonComponent, selector: "fw-icon-button", inputs: ["color", "icon", "size", "disabled", "selected"] }, { kind: "component", type: FwIconComponent, selector: "fw-icon", inputs: ["size", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
7665
7659
  }
7666
7660
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwSnackbarComponent, decorators: [{
7667
7661
  type: Component,
7668
- args: [{ selector: 'fw-snackbar', providers: [FwSnackbarTimerService], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"message\">\n <fw-icon *ngIf=\"message.icon\">{{ message.icon }}</fw-icon>\n <h4 class=\"vision-h4\" *ngIf=\"message.message\">{{ message.message }}</h4>\n <fw-button\n *ngIf=\"message.actionText\" variant=\"ghost\"\n [color]=\"color\" size=\"small\"\n (click)=\"handleAction()\">{{ message.actionText }}\n </fw-button>\n <fw-icon-button\n *ngIf=\"message.showClose\"\n icon=\"close\" size=\"small\" [color]=\"message.severity\"\n (click)=\"handleDismiss()\">\n </fw-icon-button>\n <div *ngIf=\"!message.actionText && !message.showClose\"></div>\n</ng-container>\n", styles: [".vision-shadow-extra-large{box-shadow:0 8px 25px #0000001a}.vision-shadow-large,fw-snackbar{box-shadow:0 5px 15px #0000001a}.vision-shadow-medium{box-shadow:0 2px 5px #0000001a}.vision-shadow-small{box-shadow:0 1px 2px #0000000d}.vision-shadow-inner{box-shadow:0 2px 4px #00000014 inset}fw-snackbar{display:flex;align-items:flex-start;box-sizing:border-box;max-width:320px;min-width:200px;min-height:30px;padding:8px 8px 8px 16px;gap:8px;transform-origin:center;background-color:var(--card-header);color:var(--typography-base);white-space:pre-wrap;border-radius:4px;border:1px solid var(--separations-border);margin:8px}fw-snackbar>fw-icon{width:24px;height:24px;font-size:24px;white-space:nowrap;margin:3px 0}fw-snackbar h4{margin:6px 0 0;flex:1}fw-snackbar.primary fw-icon{color:var(--primary-base)}fw-snackbar.danger fw-icon{color:var(--red-base)}fw-snackbar.success fw-icon{color:var(--green-base)}fw-snackbar.warning fw-icon{color:var(--orange-base)}\n"] }]
7669
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: FwSnackbarTimerService }], propDecorators: { message: [{
7670
- type: Input
7671
- }], messageDuration: [{
7672
- type: Input
7673
- }], ready: [{
7674
- type: Output
7675
- }], dismiss: [{
7676
- type: Output
7677
- }], action: [{
7678
- type: Output
7679
- }], cssClass: [{
7662
+ args: [{ selector: 'fw-snackbar', providers: [FwSnackbarTimerService], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (message(); as msg) {\n @if (icon()) {\n <fw-icon>{{ icon() }}</fw-icon>\n }\n @if (isTemplateRef()) {\n <ng-container *ngTemplateOutlet=\"$any(msg.message); context: msg.templateContext\"></ng-container>\n } @else {\n @if (msg.message) {\n <h4 class=\"vision-h4\">{{ msg.message }}</h4>\n }\n }\n @if (msg.actionText) {\n <fw-button\n size=\"small\"\n variant=\"ghost\"\n [color]=\"color()\"\n (click)=\"handleAction()\"\n >\n {{ msg.actionText }}\n </fw-button>\n }\n @if (showClose()) {\n <fw-icon-button\n icon=\"close\"\n size=\"small\"\n [color]=\"msg.severity\"\n (click)=\"handleDismiss()\"\n ></fw-icon-button>\n }\n @if (!msg.actionText && !showClose()) {\n <div></div>\n }\n}\n", styles: [".vision-shadow-extra-large{box-shadow:0 8px 25px #0000001a}.vision-shadow-large,fw-snackbar{box-shadow:0 5px 15px #0000001a}.vision-shadow-medium{box-shadow:0 2px 5px #0000001a}.vision-shadow-small{box-shadow:0 1px 2px #0000000d}.vision-shadow-inner{box-shadow:0 2px 4px #00000014 inset}fw-snackbar{display:flex;align-items:flex-start;box-sizing:border-box;max-width:320px;min-width:200px;min-height:30px;padding:8px 8px 8px 16px;gap:8px;transform-origin:center;background-color:var(--card-header);color:var(--typography-base);white-space:pre-wrap;border-radius:4px;border:1px solid var(--separations-border);margin:8px}fw-snackbar>fw-icon{width:24px;height:24px;font-size:24px;white-space:nowrap;margin:3px 0}fw-snackbar h4{margin:6px 0 0;flex:1}fw-snackbar.primary fw-icon{color:var(--primary-base)}fw-snackbar.danger fw-icon{color:var(--red-base)}fw-snackbar.success fw-icon{color:var(--green-base)}fw-snackbar.warning fw-icon{color:var(--orange-base)}\n"] }]
7663
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: FwSnackbarTimerService }], propDecorators: { cssClass: [{
7680
7664
  type: HostBinding,
7681
7665
  args: ['class']
7682
7666
  }] } });