ngssm-toolkit 15.2.12 → 15.3.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.
Files changed (42) hide show
  1. package/esm2020/lib/confirmation-dialog/ngssm-confirmation-dialog/ngssm-confirmation-dialog.component.mjs +3 -3
  2. package/esm2020/lib/confirmation-dialog/ngssm-confirmation-dialog.service.mjs +3 -3
  3. package/esm2020/lib/file-picker/index.mjs +3 -3
  4. package/esm2020/lib/file-picker/ngssm-file-picker.component.mjs +138 -0
  5. package/esm2020/lib/file-picker/ngssm-file-size.pipe.mjs +32 -0
  6. package/esm2020/lib/material/material-imports.module.mjs +4 -4
  7. package/esm2020/lib/not-found.component.mjs +6 -5
  8. package/esm2020/lib/notification/ngssm-notification-error/ngssm-notification-error.component.mjs +3 -3
  9. package/esm2020/lib/notification/ngssm-notification-success/ngssm-notification-success.component.mjs +3 -3
  10. package/esm2020/lib/notification/ngssm-notifier.service.mjs +3 -3
  11. package/esm2020/lib/overlay/index.mjs +4 -4
  12. package/esm2020/lib/overlay/ngssm-component-overlay.directive.mjs +94 -0
  13. package/esm2020/lib/overlay/ngssm-empty-overlay.component.mjs +11 -0
  14. package/esm2020/lib/overlay/ngssm-message-overlay.component.mjs +35 -0
  15. package/esm2020/lib/overlay/ngssm-overlay-builder.mjs +7 -7
  16. package/esm2020/lib/regex-editor/ngssm-regex-editor/ngssm-regex-editor.component.mjs +3 -3
  17. package/esm2020/lib/regex-editor/ngssm-regex-editor-toggle/ngssm-regex-editor-toggle.component.mjs +3 -3
  18. package/esm2020/public-api.mjs +1 -2
  19. package/fesm2015/ngssm-toolkit.mjs +92 -118
  20. package/fesm2015/ngssm-toolkit.mjs.map +1 -1
  21. package/fesm2020/ngssm-toolkit.mjs +92 -118
  22. package/fesm2020/ngssm-toolkit.mjs.map +1 -1
  23. package/lib/file-picker/index.d.ts +2 -2
  24. package/lib/file-picker/{file-picker.component.d.ts → ngssm-file-picker.component.d.ts} +3 -3
  25. package/lib/file-picker/ngssm-file-size.pipe.d.ts +8 -0
  26. package/lib/not-found.component.d.ts +1 -1
  27. package/lib/overlay/index.d.ts +3 -3
  28. package/lib/overlay/{component-overlay.directive.d.ts → ngssm-component-overlay.directive.d.ts} +3 -3
  29. package/lib/overlay/ngssm-empty-overlay.component.d.ts +5 -0
  30. package/lib/overlay/ngssm-message-overlay.component.d.ts +7 -0
  31. package/package.json +1 -1
  32. package/public-api.d.ts +0 -1
  33. package/esm2020/lib/file-picker/file-picker.component.mjs +0 -137
  34. package/esm2020/lib/file-picker/file-size.pipe.mjs +0 -31
  35. package/esm2020/lib/ngssm-toolkit.module.mjs +0 -34
  36. package/esm2020/lib/overlay/component-overlay.directive.mjs +0 -94
  37. package/esm2020/lib/overlay/empty-overlay.component.mjs +0 -11
  38. package/esm2020/lib/overlay/message-overlay.component.mjs +0 -32
  39. package/lib/file-picker/file-size.pipe.d.ts +0 -8
  40. package/lib/ngssm-toolkit.module.d.ts +0 -14
  41. package/lib/overlay/empty-overlay.component.d.ts +0 -5
  42. package/lib/overlay/message-overlay.component.d.ts +0 -7
@@ -13,9 +13,9 @@ export class NgssmConfirmationDialogComponent extends NgSsmComponent {
13
13
  this.data = data;
14
14
  }
15
15
  }
16
- NgssmConfirmationDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgssmConfirmationDialogComponent, deps: [{ token: i1.Store }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
17
- NgssmConfirmationDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.5", type: NgssmConfirmationDialogComponent, isStandalone: true, selector: "ngssm-confirmation-dialog", usesInheritance: true, ngImport: i0, template: "<mat-dialog-content class=\"flex-column-stretch fxFlex message-container\">\n{{data.message}}\n</mat-dialog-content>\n<mat-dialog-actions class=\"flex-row-center\">\n <span class=\"fxFlex\"></span>\n <button mat-button [matDialogClose]=\"data.cancelLabel\" id=\"cancelButton\">{{data.cancelLabel}}</button>\n <button mat-raised-button [color]=\"data.submitButtonColor\" [matDialogClose]=\"data.submitLabel\" id=\"submitButton\">\n {{data.submitLabel}}\n </button>\n</mat-dialog-actions>\n", styles: [":host .message-container{font-weight:700}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i2.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
18
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgssmConfirmationDialogComponent, decorators: [{
16
+ NgssmConfirmationDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgssmConfirmationDialogComponent, deps: [{ token: i1.Store }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
17
+ NgssmConfirmationDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: NgssmConfirmationDialogComponent, isStandalone: true, selector: "ngssm-confirmation-dialog", usesInheritance: true, ngImport: i0, template: "<mat-dialog-content class=\"flex-column-stretch fxFlex message-container\">\n{{data.message}}\n</mat-dialog-content>\n<mat-dialog-actions class=\"flex-row-center\">\n <span class=\"fxFlex\"></span>\n <button mat-button [matDialogClose]=\"data.cancelLabel\" id=\"cancelButton\">{{data.cancelLabel}}</button>\n <button mat-raised-button [color]=\"data.submitButtonColor\" [matDialogClose]=\"data.submitLabel\" id=\"submitButton\">\n {{data.submitLabel}}\n </button>\n</mat-dialog-actions>\n", styles: [":host .message-container{font-weight:700}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i2.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgssmConfirmationDialogComponent, decorators: [{
19
19
  type: Component,
20
20
  args: [{ selector: 'ngssm-confirmation-dialog', standalone: true, imports: [CommonModule, MatDialogModule, MatButtonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-dialog-content class=\"flex-column-stretch fxFlex message-container\">\n{{data.message}}\n</mat-dialog-content>\n<mat-dialog-actions class=\"flex-row-center\">\n <span class=\"fxFlex\"></span>\n <button mat-button [matDialogClose]=\"data.cancelLabel\" id=\"cancelButton\">{{data.cancelLabel}}</button>\n <button mat-raised-button [color]=\"data.submitButtonColor\" [matDialogClose]=\"data.submitLabel\" id=\"submitButton\">\n {{data.submitLabel}}\n </button>\n</mat-dialog-actions>\n", styles: [":host .message-container{font-weight:700}\n"] }]
21
21
  }], ctorParameters: function () { return [{ type: i1.Store }, { type: undefined, decorators: [{
@@ -17,9 +17,9 @@ export class NgssmConfirmationDialogService {
17
17
  .afterClosed();
18
18
  }
19
19
  }
20
- NgssmConfirmationDialogService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgssmConfirmationDialogService, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Injectable });
21
- NgssmConfirmationDialogService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgssmConfirmationDialogService, providedIn: 'root' });
22
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgssmConfirmationDialogService, decorators: [{
20
+ NgssmConfirmationDialogService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgssmConfirmationDialogService, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Injectable });
21
+ NgssmConfirmationDialogService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgssmConfirmationDialogService, providedIn: 'root' });
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgssmConfirmationDialogService, decorators: [{
23
23
  type: Injectable,
24
24
  args: [{
25
25
  providedIn: 'root'
@@ -1,3 +1,3 @@
1
- export * from './file-picker.component';
2
- export * from './file-size.pipe';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS10b29sa2l0L3NyYy9saWIvZmlsZS1waWNrZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9maWxlLXBpY2tlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9maWxlLXNpemUucGlwZSc7XG4iXX0=
1
+ export * from './ngssm-file-picker.component';
2
+ export * from './ngssm-file-size.pipe';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS10b29sa2l0L3NyYy9saWIvZmlsZS1waWNrZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLHdCQUF3QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9uZ3NzbS1maWxlLXBpY2tlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9uZ3NzbS1maWxlLXNpemUucGlwZSc7XG4iXX0=
@@ -0,0 +1,138 @@
1
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
2
+ import { CommonModule } from '@angular/common';
3
+ import { Component, HostBinding, Input, Optional, Self, ViewChild } from '@angular/core';
4
+ import { MatFormFieldControl } from '@angular/material/form-field';
5
+ import { BehaviorSubject, Subject } from 'rxjs';
6
+ import { NgssmFileSizePipe } from './ngssm-file-size.pipe';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/forms";
9
+ import * as i2 from "@angular/common";
10
+ export const noop = () => { };
11
+ export class NgssmFilePickerComponent {
12
+ constructor(ngControl) {
13
+ this.ngControl = ngControl;
14
+ this._displayDetails$ = new BehaviorSubject(true);
15
+ this.onChangeCallback = noop;
16
+ this._required = false;
17
+ this._disabled = false;
18
+ this.id = `file-picker-${NgssmFilePickerComponent.nextId++}`;
19
+ this.controlType = 'file-picker';
20
+ this.placeholder = '';
21
+ this.focused = false;
22
+ this.stateChanges = new Subject();
23
+ this.value = null;
24
+ // Replace the provider from above with this.
25
+ if (this.ngControl != null) {
26
+ // Setting the value accessor directly (instead of using
27
+ // the providers) to avoid running into a circular import.
28
+ this.ngControl.valueAccessor = this;
29
+ }
30
+ }
31
+ get empty() {
32
+ return this.value === null;
33
+ }
34
+ get shouldLabelFloat() {
35
+ return this.value !== null;
36
+ }
37
+ get required() {
38
+ return this._required;
39
+ }
40
+ set required(value) {
41
+ this._required = coerceBooleanProperty(value);
42
+ this.stateChanges.next();
43
+ }
44
+ get disabled() {
45
+ return this._disabled;
46
+ }
47
+ set disabled(value) {
48
+ this._disabled = coerceBooleanProperty(value);
49
+ this.stateChanges.next();
50
+ }
51
+ get errorState() {
52
+ return this.ngControl.invalid ?? false;
53
+ }
54
+ get lastModificationDate() {
55
+ if (this.value) {
56
+ const date = new Date(this.value.lastModified);
57
+ return date.toISOString();
58
+ }
59
+ return '';
60
+ }
61
+ get displayDetails$() {
62
+ return this._displayDetails$.asObservable();
63
+ }
64
+ set displayDetails(value) {
65
+ this._displayDetails$.next(value);
66
+ }
67
+ setDescribedByIds(ids) { }
68
+ setDisabledState(isDisabled) {
69
+ this.disabled = isDisabled;
70
+ }
71
+ onContainerClick(event) {
72
+ if (!this.disabled) {
73
+ this.fileInput?.nativeElement.click();
74
+ }
75
+ }
76
+ writeValue(obj) {
77
+ if (obj !== undefined && obj !== null) {
78
+ this.updateValue(obj);
79
+ }
80
+ }
81
+ registerOnChange(fn) {
82
+ this.onChangeCallback = fn;
83
+ }
84
+ registerOnTouched(fn) { }
85
+ ngOnDestroy() {
86
+ this.stateChanges.complete();
87
+ }
88
+ onDrop(event) {
89
+ this.preventAndStop(event);
90
+ if (!this.disabled) {
91
+ this.updateValue(event.dataTransfer.files);
92
+ }
93
+ }
94
+ onDragOver(event) {
95
+ this.preventAndStop(event);
96
+ }
97
+ onDragLeave(event) {
98
+ this.preventAndStop(event);
99
+ }
100
+ onFileSelected(event) {
101
+ this.updateValue(this.fileInput?.nativeElement.files);
102
+ }
103
+ preventAndStop(event) {
104
+ event.stopPropagation();
105
+ event.preventDefault();
106
+ }
107
+ updateValue(files) {
108
+ if (files.length > 0) {
109
+ this.value = files[0];
110
+ this.stateChanges.next();
111
+ this.onChangeCallback(this.value);
112
+ }
113
+ }
114
+ }
115
+ NgssmFilePickerComponent.nextId = 0;
116
+ NgssmFilePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgssmFilePickerComponent, deps: [{ token: i1.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component });
117
+ NgssmFilePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: NgssmFilePickerComponent, isStandalone: true, selector: "ngssm-file-picker", inputs: { required: "required", disabled: "disabled", displayDetails: "displayDetails" }, host: { properties: { "id": "this.id" } }, providers: [{ provide: MatFormFieldControl, useExisting: NgssmFilePickerComponent }], viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"file-picker-container\" (drop)=\"onDrop($event)\" (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\" [ngClass]=\"{'picker-disabled': disabled}\">\n <input type=\"file\" class=\"hidden\" #fileInput (change)=\"onFileSelected($event)\">\n <div *ngIf=\"empty === false\" class=\"flex-row-center\">\n <div class=\"file-picker-file-name\">\n {{value?.name}}\n </div>\n <div class=\"file-picker-file-information\" *ngIf=\"(displayDetails$ | async) === true\">\n {{value?.size | ngssmFileSize}}, last modified on {{lastModificationDate}}\n </div>\n </div>\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: NgssmFileSizePipe, name: "ngssmFileSize" }] });
118
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgssmFilePickerComponent, decorators: [{
119
+ type: Component,
120
+ args: [{ selector: 'ngssm-file-picker', standalone: true, imports: [CommonModule, NgssmFileSizePipe], providers: [{ provide: MatFormFieldControl, useExisting: NgssmFilePickerComponent }], template: "<div class=\"file-picker-container\" (drop)=\"onDrop($event)\" (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\" [ngClass]=\"{'picker-disabled': disabled}\">\n <input type=\"file\" class=\"hidden\" #fileInput (change)=\"onFileSelected($event)\">\n <div *ngIf=\"empty === false\" class=\"flex-row-center\">\n <div class=\"file-picker-file-name\">\n {{value?.name}}\n </div>\n <div class=\"file-picker-file-information\" *ngIf=\"(displayDetails$ | async) === true\">\n {{value?.size | ngssmFileSize}}, last modified on {{lastModificationDate}}\n </div>\n </div>\n</div>" }]
121
+ }], ctorParameters: function () { return [{ type: i1.NgControl, decorators: [{
122
+ type: Optional
123
+ }, {
124
+ type: Self
125
+ }] }]; }, propDecorators: { fileInput: [{
126
+ type: ViewChild,
127
+ args: ['fileInput', { static: true }]
128
+ }], id: [{
129
+ type: HostBinding,
130
+ args: ['id']
131
+ }], required: [{
132
+ type: Input
133
+ }], disabled: [{
134
+ type: Input
135
+ }], displayDetails: [{
136
+ type: Input
137
+ }] } });
138
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdzc20tZmlsZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmdzc20tdG9vbGtpdC9zcmMvbGliL2ZpbGUtcGlja2VyL25nc3NtLWZpbGUtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nc3NtLXRvb2xraXQvc3JjL2xpYi9maWxlLXBpY2tlci9uZ3NzbS1maWxlLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBYyxXQUFXLEVBQUUsS0FBSyxFQUFhLFFBQVEsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWhILE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxlQUFlLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7O0FBRTNELE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBRyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7QUFVN0IsTUFBTSxPQUFPLHdCQUF3QjtJQVduQyxZQUF1QyxTQUFvQjtRQUFwQixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBUjFDLHFCQUFnQixHQUFHLElBQUksZUFBZSxDQUFVLElBQUksQ0FBQyxDQUFDO1FBRS9ELHFCQUFnQixHQUFxQixJQUFJLENBQUM7UUFDMUMsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBYUEsT0FBRSxHQUFHLGVBQWUsd0JBQXdCLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztRQUMzRSxnQkFBVyxHQUFHLGFBQWEsQ0FBQztRQUM1QixnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUN6QixZQUFPLEdBQVksS0FBSyxDQUFDO1FBQ3pCLGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUNuQyxVQUFLLEdBQWdCLElBQUksQ0FBQztRQWIvQiw2Q0FBNkM7UUFDN0MsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksRUFBRTtZQUMxQix3REFBd0Q7WUFDeEQsMERBQTBEO1lBQzFELElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztTQUNyQztJQUNILENBQUM7SUFXRCxJQUFXLEtBQUs7UUFDZCxPQUFPLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFXLGdCQUFnQjtRQUN6QixPQUFPLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUNXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFXLFFBQVEsQ0FBQyxLQUFjO1FBQ2hDLElBQUksQ0FBQyxTQUFTLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFDVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBVyxRQUFRLENBQUMsS0FBYztRQUNoQyxJQUFJLENBQUMsU0FBUyxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQVcsVUFBVTtRQUNuQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQztJQUN6QyxDQUFDO0lBRUQsSUFBVyxvQkFBb0I7UUFDN0IsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2QsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUMvQyxPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUMzQjtRQUVELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELElBQVcsZUFBZTtRQUN4QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM5QyxDQUFDO0lBRUQsSUFDVyxjQUFjLENBQUMsS0FBYztRQUN0QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxHQUFhLElBQVMsQ0FBQztJQUV6QyxnQkFBZ0IsQ0FBQyxVQUFtQjtRQUN6QyxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztJQUM3QixDQUFDO0lBRU0sZ0JBQWdCLENBQUMsS0FBaUI7UUFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDbEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDdkM7SUFDSCxDQUFDO0lBRU0sVUFBVSxDQUFDLEdBQVE7UUFDeEIsSUFBSSxHQUFHLEtBQUssU0FBUyxJQUFJLEdBQUcsS0FBSyxJQUFJLEVBQUU7WUFDckMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN2QjtJQUNILENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxFQUFPO1FBQzdCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVNLGlCQUFpQixDQUFDLEVBQU8sSUFBUyxDQUFDO0lBRW5DLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQVU7UUFDdEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNsQixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDNUM7SUFDSCxDQUFDO0lBRU0sVUFBVSxDQUFDLEtBQVU7UUFDMUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRU0sV0FBVyxDQUFDLEtBQVU7UUFDM0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRU0sY0FBYyxDQUFDLEtBQVU7UUFDOUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRU8sY0FBYyxDQUFDLEtBQVU7UUFDL0IsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRU8sV0FBVyxDQUFDLEtBQWU7UUFDakMsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNwQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDbkM7SUFDSCxDQUFDOztBQXhJYywrQkFBTSxHQUFHLENBQUMsQ0FBQztxSEFEZix3QkFBd0I7eUdBQXhCLHdCQUF3QixxTUFGeEIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsd0JBQXdCLEVBQUUsQ0FBQyxnSkNqQnRGLDZvQkFXTSx5RERHTSxZQUFZLGlSQUFFLGlCQUFpQjsyRkFLOUIsd0JBQXdCO2tCQVJwQyxTQUFTOytCQUNFLG1CQUFtQixjQUNqQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLENBQUMsYUFHL0IsQ0FBQyxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxXQUFXLDBCQUEwQixFQUFFLENBQUM7OzBCQWF2RSxRQUFROzswQkFBSSxJQUFJOzRDQUZhLFNBQVM7c0JBQWxELFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFXZCxFQUFFO3NCQUEzQixXQUFXO3VCQUFDLElBQUk7Z0JBa0JOLFFBQVE7c0JBRGxCLEtBQUs7Z0JBV0ssUUFBUTtzQkFEbEIsS0FBSztnQkE0QkssY0FBYztzQkFEeEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgSW5wdXQsIE9uRGVzdHJveSwgT3B0aW9uYWwsIFNlbGYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZENvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBOZ3NzbUZpbGVTaXplUGlwZSB9IGZyb20gJy4vbmdzc20tZmlsZS1zaXplLnBpcGUnO1xuXG5leHBvcnQgY29uc3Qgbm9vcCA9ICgpID0+IHt9O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ3NzbS1maWxlLXBpY2tlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE5nc3NtRmlsZVNpemVQaXBlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL25nc3NtLWZpbGUtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbmdzc20tZmlsZS1waWNrZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBNYXRGb3JtRmllbGRDb250cm9sLCB1c2VFeGlzdGluZzogTmdzc21GaWxlUGlja2VyQ29tcG9uZW50IH1dXG59KVxuZXhwb3J0IGNsYXNzIE5nc3NtRmlsZVBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIE1hdEZvcm1GaWVsZENvbnRyb2w8RmlsZT4sIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHN0YXRpYyBuZXh0SWQgPSAwO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rpc3BsYXlEZXRhaWxzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG5cbiAgcHJpdmF0ZSBvbkNoYW5nZUNhbGxiYWNrOiAoXzogYW55KSA9PiB2b2lkID0gbm9vcDtcbiAgcHJpdmF0ZSBfcmVxdWlyZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfZGlzYWJsZWQgPSBmYWxzZTtcblxuICBAVmlld0NoaWxkKCdmaWxlSW5wdXQnLCB7IHN0YXRpYzogdHJ1ZSB9KSBmaWxlSW5wdXQ6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQFNlbGYoKSBwdWJsaWMgbmdDb250cm9sOiBOZ0NvbnRyb2wpIHtcbiAgICAvLyBSZXBsYWNlIHRoZSBwcm92aWRlciBmcm9tIGFib3ZlIHdpdGggdGhpcy5cbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wgIT0gbnVsbCkge1xuICAgICAgLy8gU2V0dGluZyB0aGUgdmFsdWUgYWNjZXNzb3IgZGlyZWN0bHkgKGluc3RlYWQgb2YgdXNpbmdcbiAgICAgIC8vIHRoZSBwcm92aWRlcnMpIHRvIGF2b2lkIHJ1bm5pbmcgaW50byBhIGNpcmN1bGFyIGltcG9ydC5cbiAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0QmluZGluZygnaWQnKSBwdWJsaWMgaWQgPSBgZmlsZS1waWNrZXItJHtOZ3NzbUZpbGVQaWNrZXJDb21wb25lbnQubmV4dElkKyt9YDtcbiAgcHVibGljIGNvbnRyb2xUeXBlID0gJ2ZpbGUtcGlja2VyJztcbiAgcHVibGljIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnJztcbiAgcHVibGljIGZvY3VzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIHN0YXRlQ2hhbmdlcyA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHB1YmxpYyB2YWx1ZTogRmlsZSB8IG51bGwgPSBudWxsO1xuICBwdWJsaWMgYXV0b2ZpbGxlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIHB1YmxpYyB1c2VyQXJpYURlc2NyaWJlZEJ5Pzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBnZXQgZW1wdHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUgPT09IG51bGw7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNob3VsZExhYmVsRmxvYXQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUgIT09IG51bGw7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IHJlcXVpcmVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZDtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgcmVxdWlyZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9yZXF1aXJlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cblxuICBwdWJsaWMgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZXJyb3JTdGF0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5uZ0NvbnRyb2wuaW52YWxpZCA/PyBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbGFzdE1vZGlmaWNhdGlvbkRhdGUoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy52YWx1ZSkge1xuICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHRoaXMudmFsdWUubGFzdE1vZGlmaWVkKTtcbiAgICAgIHJldHVybiBkYXRlLnRvSVNPU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgcHVibGljIGdldCBkaXNwbGF5RGV0YWlscyQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc3BsYXlEZXRhaWxzJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGlzcGxheURldGFpbHModmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNwbGF5RGV0YWlscyQubmV4dCh2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgc2V0RGVzY3JpYmVkQnlJZHMoaWRzOiBzdHJpbmdbXSk6IHZvaWQge31cblxuICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICBwdWJsaWMgb25Db250YWluZXJDbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5maWxlSW5wdXQ/Lm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgd3JpdGVWYWx1ZShvYmo6IGFueSk6IHZvaWQge1xuICAgIGlmIChvYmogIT09IHVuZGVmaW5lZCAmJiBvYmogIT09IG51bGwpIHtcbiAgICAgIHRoaXMudXBkYXRlVmFsdWUob2JqKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrID0gZm47XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge31cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkRyb3AoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMucHJldmVudEFuZFN0b3AoZXZlbnQpO1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy51cGRhdGVWYWx1ZShldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbkRyYWdPdmVyKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnByZXZlbnRBbmRTdG9wKGV2ZW50KTtcbiAgfVxuXG4gIHB1YmxpYyBvbkRyYWdMZWF2ZShldmVudDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5wcmV2ZW50QW5kU3RvcChldmVudCk7XG4gIH1cblxuICBwdWJsaWMgb25GaWxlU2VsZWN0ZWQoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlVmFsdWUodGhpcy5maWxlSW5wdXQ/Lm5hdGl2ZUVsZW1lbnQuZmlsZXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBwcmV2ZW50QW5kU3RvcChldmVudDogYW55KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlVmFsdWUoZmlsZXM6IEZpbGVMaXN0KTogdm9pZCB7XG4gICAgaWYgKGZpbGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMudmFsdWUgPSBmaWxlc1swXTtcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayh0aGlzLnZhbHVlKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmaWxlLXBpY2tlci1jb250YWluZXJcIiAoZHJvcCk9XCJvbkRyb3AoJGV2ZW50KVwiIChkcmFnb3Zlcik9XCJvbkRyYWdPdmVyKCRldmVudClcIlxuICAgIChkcmFnbGVhdmUpPVwib25EcmFnTGVhdmUoJGV2ZW50KVwiIFtuZ0NsYXNzXT1cInsncGlja2VyLWRpc2FibGVkJzogZGlzYWJsZWR9XCI+XG4gICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgY2xhc3M9XCJoaWRkZW5cIiAjZmlsZUlucHV0IChjaGFuZ2UpPVwib25GaWxlU2VsZWN0ZWQoJGV2ZW50KVwiPlxuICAgIDxkaXYgKm5nSWY9XCJlbXB0eSA9PT0gZmFsc2VcIiBjbGFzcz1cImZsZXgtcm93LWNlbnRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZS1waWNrZXItZmlsZS1uYW1lXCI+XG4gICAgICAgICAgICB7e3ZhbHVlPy5uYW1lfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlLXBpY2tlci1maWxlLWluZm9ybWF0aW9uXCIgKm5nSWY9XCIoZGlzcGxheURldGFpbHMkIHwgYXN5bmMpID09PSB0cnVlXCI+XG4gICAgICAgICAgICB7e3ZhbHVlPy5zaXplIHwgbmdzc21GaWxlU2l6ZX19LCBsYXN0IG1vZGlmaWVkIG9uIHt7bGFzdE1vZGlmaWNhdGlvbkRhdGV9fVxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PiJdfQ==
@@ -0,0 +1,32 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class NgssmFileSizePipe {
4
+ constructor() {
5
+ this.units = ['bytes', 'KB', 'MB', 'GB'];
6
+ }
7
+ transform(value, precision = 2) {
8
+ let bytes = +value;
9
+ if (isNaN(bytes) || !isFinite(bytes)) {
10
+ return '?';
11
+ }
12
+ let unit = 0;
13
+ while (bytes >= 1024 && unit < this.units.length) {
14
+ bytes /= 1024;
15
+ unit++;
16
+ }
17
+ if (unit === 0) {
18
+ return `${bytes} ${this.units[unit]}`;
19
+ }
20
+ return `${bytes.toFixed(+precision)} ${this.units[unit]}`;
21
+ }
22
+ }
23
+ NgssmFileSizePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgssmFileSizePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
24
+ NgssmFileSizePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.0", ngImport: i0, type: NgssmFileSizePipe, isStandalone: true, name: "ngssmFileSize" });
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgssmFileSizePipe, decorators: [{
26
+ type: Pipe,
27
+ args: [{
28
+ name: 'ngssmFileSize',
29
+ standalone: true
30
+ }]
31
+ }] });
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdzc20tZmlsZS1zaXplLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS10b29sa2l0L3NyYy9saWIvZmlsZS1waWNrZXIvbmdzc20tZmlsZS1zaXplLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBTXBELE1BQU0sT0FBTyxpQkFBaUI7SUFKOUI7UUFLbUIsVUFBSyxHQUFHLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FvQnREO0lBbEJRLFNBQVMsQ0FBQyxLQUFVLEVBQUUsWUFBb0IsQ0FBQztRQUNoRCxJQUFJLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQztRQUNuQixJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNwQyxPQUFPLEdBQUcsQ0FBQztTQUNaO1FBRUQsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ2IsT0FBTyxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUNoRCxLQUFLLElBQUksSUFBSSxDQUFDO1lBQ2QsSUFBSSxFQUFFLENBQUM7U0FDUjtRQUVELElBQUksSUFBSSxLQUFLLENBQUMsRUFBRTtZQUNkLE9BQU8sR0FBRyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1NBQ3ZDO1FBRUQsT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDNUQsQ0FBQzs7OEdBcEJVLGlCQUFpQjs0R0FBakIsaUJBQWlCOzJGQUFqQixpQkFBaUI7a0JBSjdCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLGVBQWU7b0JBQ3JCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQFBpcGUoe1xuICBuYW1lOiAnbmdzc21GaWxlU2l6ZScsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTmdzc21GaWxlU2l6ZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgcHJpdmF0ZSByZWFkb25seSB1bml0cyA9IFsnYnl0ZXMnLCAnS0InLCAnTUInLCAnR0InXTtcblxuICBwdWJsaWMgdHJhbnNmb3JtKHZhbHVlOiBhbnksIHByZWNpc2lvbjogbnVtYmVyID0gMik6IGFueSB7XG4gICAgbGV0IGJ5dGVzID0gK3ZhbHVlO1xuICAgIGlmIChpc05hTihieXRlcykgfHwgIWlzRmluaXRlKGJ5dGVzKSkge1xuICAgICAgcmV0dXJuICc/JztcbiAgICB9XG5cbiAgICBsZXQgdW5pdCA9IDA7XG4gICAgd2hpbGUgKGJ5dGVzID49IDEwMjQgJiYgdW5pdCA8IHRoaXMudW5pdHMubGVuZ3RoKSB7XG4gICAgICBieXRlcyAvPSAxMDI0O1xuICAgICAgdW5pdCsrO1xuICAgIH1cblxuICAgIGlmICh1bml0ID09PSAwKSB7XG4gICAgICByZXR1cm4gYCR7Ynl0ZXN9ICR7dGhpcy51bml0c1t1bml0XX1gO1xuICAgIH1cblxuICAgIHJldHVybiBgJHtieXRlcy50b0ZpeGVkKCtwcmVjaXNpb24pfSAke3RoaXMudW5pdHNbdW5pdF19YDtcbiAgfVxufVxuIl19
@@ -50,8 +50,8 @@ const modules = [
50
50
  ];
51
51
  export class MaterialImportsModule {
52
52
  }
53
- MaterialImportsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: MaterialImportsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
54
- MaterialImportsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.5", ngImport: i0, type: MaterialImportsModule, imports: [CommonModule,
53
+ MaterialImportsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: MaterialImportsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
54
+ MaterialImportsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.0", ngImport: i0, type: MaterialImportsModule, imports: [CommonModule,
55
55
  MatToolbarModule,
56
56
  MatSidenavModule,
57
57
  MatButtonModule,
@@ -96,7 +96,7 @@ MaterialImportsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", v
96
96
  MatSnackBarModule,
97
97
  MatTabsModule,
98
98
  MatExpansionModule] });
99
- MaterialImportsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: MaterialImportsModule, imports: [modules, CommonModule,
99
+ MaterialImportsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: MaterialImportsModule, imports: [modules, CommonModule,
100
100
  MatToolbarModule,
101
101
  MatSidenavModule,
102
102
  MatButtonModule,
@@ -119,7 +119,7 @@ MaterialImportsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", v
119
119
  MatSnackBarModule,
120
120
  MatTabsModule,
121
121
  MatExpansionModule] });
122
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: MaterialImportsModule, decorators: [{
122
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: MaterialImportsModule, decorators: [{
123
123
  type: NgModule,
124
124
  args: [{
125
125
  declarations: [],
@@ -1,11 +1,12 @@
1
+ import { CommonModule } from '@angular/common';
1
2
  import { Component } from '@angular/core';
2
3
  import * as i0 from "@angular/core";
3
4
  export class NotFoundComponent {
4
5
  }
5
- NotFoundComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NotFoundComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6
- NotFoundComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.5", type: NotFoundComponent, selector: "ngssm-not-found", ngImport: i0, template: ` <img src="./assets/404-not-found.png" /> `, isInline: true, styles: [":host{display:flex;flex-direction:row;flex:1;align-items:center;justify-content:center}\n"] });
7
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NotFoundComponent, decorators: [{
6
+ NotFoundComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NotFoundComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
7
+ NotFoundComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: NotFoundComponent, isStandalone: true, selector: "ngssm-not-found", ngImport: i0, template: ` <img src="./assets/404-not-found.png" /> `, isInline: true, styles: [":host{display:flex;flex-direction:row;flex:1;align-items:center;justify-content:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
8
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NotFoundComponent, decorators: [{
8
9
  type: Component,
9
- args: [{ selector: 'ngssm-not-found', template: ` <img src="./assets/404-not-found.png" /> `, styles: [":host{display:flex;flex-direction:row;flex:1;align-items:center;justify-content:center}\n"] }]
10
+ args: [{ selector: 'ngssm-not-found', standalone: true, imports: [CommonModule], template: ` <img src="./assets/404-not-found.png" /> `, styles: [":host{display:flex;flex-direction:row;flex:1;align-items:center;justify-content:center}\n"] }]
10
11
  }] });
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90LWZvdW5kLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25nc3NtLXRvb2xraXQvc3JjL2xpYi9ub3QtZm91bmQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBaUIxQyxNQUFNLE9BQU8saUJBQWlCOzs4R0FBakIsaUJBQWlCO2tHQUFqQixpQkFBaUIsdURBYmxCLDRDQUE0QzsyRkFhM0MsaUJBQWlCO2tCQWY3QixTQUFTOytCQUNFLGlCQUFpQixZQUNqQiw0Q0FBNEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmdzc20tbm90LWZvdW5kJyxcbiAgdGVtcGxhdGU6IGAgPGltZyBzcmM9XCIuL2Fzc2V0cy80MDQtbm90LWZvdW5kLnBuZ1wiIC8+IGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIDpob3N0IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgICAgZmxleDogMTtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICB9XG4gICAgYFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIE5vdEZvdW5kQ29tcG9uZW50IHt9XG4iXX0=
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90LWZvdW5kLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25nc3NtLXRvb2xraXQvc3JjL2xpYi9ub3QtZm91bmQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQW1CMUMsTUFBTSxPQUFPLGlCQUFpQjs7OEdBQWpCLGlCQUFpQjtrR0FBakIsaUJBQWlCLDJFQWJsQiw0Q0FBNEMsa0tBRDVDLFlBQVk7MkZBY1gsaUJBQWlCO2tCQWpCN0IsU0FBUzsrQkFDRSxpQkFBaUIsY0FDZixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUMsWUFDYiw0Q0FBNEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nc3NtLW5vdC1mb3VuZCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICB0ZW1wbGF0ZTogYCA8aW1nIHNyYz1cIi4vYXNzZXRzLzQwNC1ub3QtZm91bmQucG5nXCIgLz4gYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgOmhvc3Qge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIH1cbiAgICBgXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgTm90Rm91bmRDb21wb25lbnQge31cbiJdfQ==
@@ -9,9 +9,9 @@ export class NgssmNotificationErrorComponent {
9
9
  this.message = message;
10
10
  }
11
11
  }
12
- NgssmNotificationErrorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgssmNotificationErrorComponent, deps: [{ token: MAT_SNACK_BAR_DATA }], target: i0.ɵɵFactoryTarget.Component });
13
- NgssmNotificationErrorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.5", type: NgssmNotificationErrorComponent, isStandalone: true, selector: "ngssm-notification-error", ngImport: i0, template: "<mat-icon class=\"fa-solid fa-triangle-exclamation with-margin-right-12\" color=\"accent\"></mat-icon>\n<span class=\"ngssm-notification-error-message\">{{message}}</span>\n", styles: [":host{display:flex;flex-direction:row;align-items:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
14
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgssmNotificationErrorComponent, decorators: [{
12
+ NgssmNotificationErrorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgssmNotificationErrorComponent, deps: [{ token: MAT_SNACK_BAR_DATA }], target: i0.ɵɵFactoryTarget.Component });
13
+ NgssmNotificationErrorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: NgssmNotificationErrorComponent, isStandalone: true, selector: "ngssm-notification-error", ngImport: i0, template: "<mat-icon class=\"fa-solid fa-triangle-exclamation with-margin-right-12\" color=\"accent\"></mat-icon>\n<span class=\"ngssm-notification-error-message\">{{message}}</span>\n", styles: [":host{display:flex;flex-direction:row;align-items:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgssmNotificationErrorComponent, decorators: [{
15
15
  type: Component,
16
16
  args: [{ selector: 'ngssm-notification-error', standalone: true, imports: [CommonModule, MatIconModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-icon class=\"fa-solid fa-triangle-exclamation with-margin-right-12\" color=\"accent\"></mat-icon>\n<span class=\"ngssm-notification-error-message\">{{message}}</span>\n", styles: [":host{display:flex;flex-direction:row;align-items:center}\n"] }]
17
17
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
@@ -9,9 +9,9 @@ export class NgssmNotificationSuccessComponent {
9
9
  this.message = message;
10
10
  }
11
11
  }
12
- NgssmNotificationSuccessComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgssmNotificationSuccessComponent, deps: [{ token: MAT_SNACK_BAR_DATA }], target: i0.ɵɵFactoryTarget.Component });
13
- NgssmNotificationSuccessComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.5", type: NgssmNotificationSuccessComponent, isStandalone: true, selector: "ngssm-notification-success", ngImport: i0, template: "<mat-icon class=\"fa-solid fa-check with-margin-right-12 ngssm-notification-success-icon\" color=\"primary\"></mat-icon>\n<span class=\"ngssm-notification-success-message\">{{message}}</span>\n\n", styles: [":host{display:flex;flex-direction:row;align-items:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
14
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgssmNotificationSuccessComponent, decorators: [{
12
+ NgssmNotificationSuccessComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgssmNotificationSuccessComponent, deps: [{ token: MAT_SNACK_BAR_DATA }], target: i0.ɵɵFactoryTarget.Component });
13
+ NgssmNotificationSuccessComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: NgssmNotificationSuccessComponent, isStandalone: true, selector: "ngssm-notification-success", ngImport: i0, template: "<mat-icon class=\"fa-solid fa-check with-margin-right-12 ngssm-notification-success-icon\" color=\"primary\"></mat-icon>\n<span class=\"ngssm-notification-success-message\">{{message}}</span>\n\n", styles: [":host{display:flex;flex-direction:row;align-items:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgssmNotificationSuccessComponent, decorators: [{
15
15
  type: Component,
16
16
  args: [{ selector: 'ngssm-notification-success', standalone: true, imports: [CommonModule, MatIconModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-icon class=\"fa-solid fa-check with-margin-right-12 ngssm-notification-success-icon\" color=\"primary\"></mat-icon>\n<span class=\"ngssm-notification-success-message\">{{message}}</span>\n\n", styles: [":host{display:flex;flex-direction:row;align-items:center}\n"] }]
17
17
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
@@ -20,9 +20,9 @@ export class NgssmNotifierService {
20
20
  });
21
21
  }
22
22
  }
23
- NgssmNotifierService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgssmNotifierService, deps: [{ token: i1.MatSnackBar }], target: i0.ɵɵFactoryTarget.Injectable });
24
- NgssmNotifierService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgssmNotifierService, providedIn: 'root' });
25
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgssmNotifierService, decorators: [{
23
+ NgssmNotifierService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgssmNotifierService, deps: [{ token: i1.MatSnackBar }], target: i0.ɵɵFactoryTarget.Injectable });
24
+ NgssmNotifierService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgssmNotifierService, providedIn: 'root' });
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgssmNotifierService, decorators: [{
26
26
  type: Injectable,
27
27
  args: [{
28
28
  providedIn: 'root'
@@ -1,5 +1,5 @@
1
- export * from './component-overlay.directive';
2
- export * from './empty-overlay.component';
3
- export * from './message-overlay.component';
1
+ export * from './ngssm-component-overlay.directive';
2
+ export * from './ngssm-empty-overlay.component';
3
+ export * from './ngssm-message-overlay.component';
4
4
  export * from './ngssm-overlay-builder';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS10b29sa2l0L3NyYy9saWIvb3ZlcmxheS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHlCQUF5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnQtb3ZlcmxheS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9lbXB0eS1vdmVybGF5LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL21lc3NhZ2Utb3ZlcmxheS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9uZ3NzbS1vdmVybGF5LWJ1aWxkZXInO1xuIl19
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS10b29sa2l0L3NyYy9saWIvb3ZlcmxheS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLHlCQUF5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9uZ3NzbS1jb21wb25lbnQtb3ZlcmxheS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9uZ3NzbS1lbXB0eS1vdmVybGF5LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL25nc3NtLW1lc3NhZ2Utb3ZlcmxheS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9uZ3NzbS1vdmVybGF5LWJ1aWxkZXInO1xuIl19
@@ -0,0 +1,94 @@
1
+ import { Overlay } from '@angular/cdk/overlay';
2
+ import { DOCUMENT } from '@angular/common';
3
+ import { Directive, Inject, Input } from '@angular/core';
4
+ import { ComponentPortal, TemplatePortal } from '@angular/cdk/portal';
5
+ import { BehaviorSubject, Subject, takeUntil } from 'rxjs';
6
+ import { NgssmMessageOverlayComponent } from './ngssm-message-overlay.component';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/cdk/overlay";
9
+ import * as i2 from "@angular/cdk/bidi";
10
+ import * as i3 from "@angular/common";
11
+ export class NgssmComponentOverlayDirective {
12
+ constructor(elementRef, viewContainerRef, document, scrollStrategies,
13
+ // eslint-disable-next-line deprecation/deprecation
14
+ componentFactoryResolver, positionBuilder, keyboardDispatcher, injector, ngZone, directionality, location, outsideClickDispatcher, renderer) {
15
+ this.elementRef = elementRef;
16
+ this.viewContainerRef = viewContainerRef;
17
+ this.unSubscribeAll$ = new Subject();
18
+ this._displayOverlay$ = new BehaviorSubject(false);
19
+ this._overlayMessage$ = new BehaviorSubject('Please wait');
20
+ renderer.setStyle(this.elementRef.nativeElement, 'position', 'relative');
21
+ const container = {
22
+ getContainerElement: () => this.elementRef.nativeElement
23
+ };
24
+ this.overlay = new Overlay(scrollStrategies, container, componentFactoryResolver, positionBuilder, keyboardDispatcher, injector, ngZone, document, directionality, location, outsideClickDispatcher);
25
+ this.overlayRef = this.overlay.create({
26
+ positionStrategy: this.overlay.position().global().centerHorizontally().centerVertically(),
27
+ hasBackdrop: true
28
+ });
29
+ }
30
+ set overlayMessage(value) {
31
+ this._overlayMessage$.next(value);
32
+ }
33
+ set dispalyOverlay(value) {
34
+ this._displayOverlay$.next(value);
35
+ }
36
+ ngAfterViewInit() {
37
+ this._displayOverlay$.pipe(takeUntil(this.unSubscribeAll$)).subscribe((v) => {
38
+ if (v) {
39
+ this.showOverlay();
40
+ }
41
+ else {
42
+ this.hideOverlay();
43
+ }
44
+ });
45
+ }
46
+ ngOnDestroy() {
47
+ this.unSubscribeAll$.next();
48
+ this.unSubscribeAll$.complete();
49
+ if (this._displayOverlay$.getValue()) {
50
+ this.overlayRef.detach();
51
+ }
52
+ }
53
+ showOverlay() {
54
+ if (this.overLayTemplate) {
55
+ this.overlayRef.attach(new TemplatePortal(this.overLayTemplate, this.viewContainerRef));
56
+ }
57
+ else if (this.overlayComponent) {
58
+ const ref = this.overlayRef.attach(new ComponentPortal(this.overlayComponent));
59
+ if (this.overlayComponent === NgssmMessageOverlayComponent) {
60
+ ref.instance.message$ = this._overlayMessage$.asObservable();
61
+ }
62
+ }
63
+ else {
64
+ const ref = this.overlayRef.attach(new ComponentPortal(NgssmMessageOverlayComponent));
65
+ ref.instance.message$ = this._overlayMessage$.asObservable();
66
+ }
67
+ }
68
+ hideOverlay() {
69
+ this.overlayRef.detach();
70
+ }
71
+ }
72
+ NgssmComponentOverlayDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgssmComponentOverlayDirective, deps: [{ token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: DOCUMENT }, { token: i1.ScrollStrategyOptions }, { token: i0.ComponentFactoryResolver }, { token: i1.OverlayPositionBuilder }, { token: i1.OverlayKeyboardDispatcher }, { token: i0.Injector }, { token: i0.NgZone }, { token: i2.Directionality }, { token: i3.Location }, { token: i1.OverlayOutsideClickDispatcher }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
73
+ NgssmComponentOverlayDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.0", type: NgssmComponentOverlayDirective, isStandalone: true, selector: "[ngssmDisplayOverlay]", inputs: { overLayTemplate: ["overlayTemplate", "overLayTemplate"], overlayComponent: "overlayComponent", overlayMessage: "overlayMessage", dispalyOverlay: ["ngssmDisplayOverlay", "dispalyOverlay"] }, ngImport: i0 });
74
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgssmComponentOverlayDirective, decorators: [{
75
+ type: Directive,
76
+ args: [{
77
+ selector: '[ngssmDisplayOverlay]',
78
+ standalone: true
79
+ }]
80
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{
81
+ type: Inject,
82
+ args: [DOCUMENT]
83
+ }] }, { type: i1.ScrollStrategyOptions }, { type: i0.ComponentFactoryResolver }, { type: i1.OverlayPositionBuilder }, { type: i1.OverlayKeyboardDispatcher }, { type: i0.Injector }, { type: i0.NgZone }, { type: i2.Directionality }, { type: i3.Location }, { type: i1.OverlayOutsideClickDispatcher }, { type: i0.Renderer2 }]; }, propDecorators: { overLayTemplate: [{
84
+ type: Input,
85
+ args: ['overlayTemplate']
86
+ }], overlayComponent: [{
87
+ type: Input
88
+ }], overlayMessage: [{
89
+ type: Input
90
+ }], dispalyOverlay: [{
91
+ type: Input,
92
+ args: ['ngssmDisplayOverlay']
93
+ }] } });
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdzc20tY29tcG9uZW50LW92ZXJsYXkuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmdzc20tdG9vbGtpdC9zcmMvbGliL292ZXJsYXkvbmdzc20tY29tcG9uZW50LW92ZXJsYXkuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxPQUFPLEVBTVIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUdMLFNBQVMsRUFFVCxNQUFNLEVBRU4sS0FBSyxFQU1OLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxlQUFlLEVBQWlCLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUzRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7QUFNakYsTUFBTSxPQUFPLDhCQUE4QjtJQVF6QyxZQUNVLFVBQXNCLEVBQ3RCLGdCQUFrQyxFQUN4QixRQUFhLEVBQy9CLGdCQUF1QztJQUN2QyxtREFBbUQ7SUFDbkQsd0JBQWtELEVBQ2xELGVBQXVDLEVBQ3ZDLGtCQUE2QyxFQUM3QyxRQUFrQixFQUNsQixNQUFjLEVBQ2QsY0FBOEIsRUFDOUIsUUFBa0IsRUFDbEIsc0JBQXFELEVBQ3JELFFBQW1CO1FBYlgsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBVDNCLG9CQUFlLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUN0QyxxQkFBZ0IsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUN2RCxxQkFBZ0IsR0FBRyxJQUFJLGVBQWUsQ0FBUyxhQUFhLENBQUMsQ0FB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LEVBQUUsQ0FBQztJQUMzQixDQUFDOzsySEFoR1UsOEJBQThCLDRFQVcvQixRQUFROytHQVhQLDhCQUE4QjsyRkFBOUIsOEJBQThCO2tCQUoxQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs7MEJBWUksTUFBTTsyQkFBQyxRQUFRO3dXQXVDUSxlQUFlO3NCQUF4QyxLQUFLO3VCQUFDLGlCQUFpQjtnQkFFZixnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBRWMsY0FBYztzQkFBakMsS0FBSztnQkFJbUMsY0FBYztzQkFBdEQsS0FBSzt1QkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBPdmVybGF5LFxuICBPdmVybGF5S2V5Ym9hcmREaXNwYXRjaGVyLFxuICBPdmVybGF5T3V0c2lkZUNsaWNrRGlzcGF0Y2hlcixcbiAgT3ZlcmxheVBvc2l0aW9uQnVpbGRlcixcbiAgT3ZlcmxheVJlZixcbiAgU2Nyb2xsU3RyYXRlZ3lPcHRpb25zXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBJbmplY3QsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIFJlbmRlcmVyMixcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBEaXJlY3Rpb25hbGl0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcbmltcG9ydCB7IENvbXBvbmVudFBvcnRhbCwgQ29tcG9uZW50VHlwZSwgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IE5nc3NtTWVzc2FnZU92ZXJsYXlDb21wb25lbnQgfSBmcm9tICcuL25nc3NtLW1lc3NhZ2Utb3ZlcmxheS5jb21wb25lbnQnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbmdzc21EaXNwbGF5T3ZlcmxheV0nLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE5nc3NtQ29tcG9uZW50T3ZlcmxheURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgdW5TdWJzY3JpYmVBbGwkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzcGxheU92ZXJsYXkkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX292ZXJsYXlNZXNzYWdlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignUGxlYXNlIHdhaXQnKTtcblxuICBwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXk7XG4gIHByaXZhdGUgb3ZlcmxheVJlZjogT3ZlcmxheVJlZjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIEBJbmplY3QoRE9DVU1FTlQpIGRvY3VtZW50OiBhbnksXG4gICAgc2Nyb2xsU3RyYXRlZ2llczogU2Nyb2xsU3RyYXRlZ3lPcHRpb25zLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvblxuICAgIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgIHBvc2l0aW9uQnVpbGRlcjogT3ZlcmxheVBvc2l0aW9uQnVpbGRlcixcbiAgICBrZXlib2FyZERpc3BhdGNoZXI6IE92ZXJsYXlLZXlib2FyZERpc3BhdGNoZXIsXG4gICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIG5nWm9uZTogTmdab25lLFxuICAgIGRpcmVjdGlvbmFsaXR5OiBEaXJlY3Rpb25hbGl0eSxcbiAgICBsb2NhdGlvbjogTG9jYXRpb24sXG4gICAgb3V0c2lkZUNsaWNrRGlzcGF0Y2hlcjogT3ZlcmxheU91dHNpZGVDbGlja0Rpc3BhdGNoZXIsXG4gICAgcmVuZGVyZXI6IFJlbmRlcmVyMlxuICApIHtcbiAgICByZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ3Bvc2l0aW9uJywgJ3JlbGF0aXZlJyk7XG4gICAgY29uc3QgY29udGFpbmVyID0ge1xuICAgICAgZ2V0Q29udGFpbmVyRWxlbWVudDogKCkgPT4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnRcbiAgICB9O1xuXG4gICAgdGhpcy5vdmVybGF5ID0gbmV3IE92ZXJsYXkoXG4gICAgICBzY3JvbGxTdHJhdGVnaWVzLFxuICAgICAgY29udGFpbmVyIGFzIGFueSxcbiAgICAgIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICAgIHBvc2l0aW9uQnVpbGRlcixcbiAgICAgIGtleWJvYXJkRGlzcGF0Y2hlcixcbiAgICAgIGluamVjdG9yLFxuICAgICAgbmdab25lLFxuICAgICAgZG9jdW1lbnQsXG4gICAgICBkaXJlY3Rpb25hbGl0eSxcbiAgICAgIGxvY2F0aW9uLFxuICAgICAgb3V0c2lkZUNsaWNrRGlzcGF0Y2hlclxuICAgICk7XG5cbiAgICB0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKHtcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5wb3NpdGlvbigpLmdsb2JhbCgpLmNlbnRlckhvcml6b250YWxseSgpLmNlbnRlclZlcnRpY2FsbHkoKSxcbiAgICAgIGhhc0JhY2tkcm9wOiB0cnVlXG4gICAgfSk7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0LXJlbmFtZVxuICBASW5wdXQoJ292ZXJsYXlUZW1wbGF0ZScpIG92ZXJMYXlUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICBASW5wdXQoKSBvdmVybGF5Q29tcG9uZW50OiBDb21wb25lbnRUeXBlPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgQElucHV0KCkgcHVibGljIHNldCBvdmVybGF5TWVzc2FnZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fb3ZlcmxheU1lc3NhZ2UkLm5leHQodmFsdWUpO1xuICB9XG5cbiAgQElucHV0KCduZ3NzbURpc3BsYXlPdmVybGF5JykgcHVibGljIHNldCBkaXNwYWx5T3ZlcmxheSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2Rpc3BsYXlPdmVybGF5JC5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzcGxheU92ZXJsYXkkLnBpcGUodGFrZVVudGlsKHRoaXMudW5TdWJzY3JpYmVBbGwkKSkuc3Vic2NyaWJlKCh2KSA9PiB7XG4gICAgICBpZiAodikge1xuICAgICAgICB0aGlzLnNob3dPdmVybGF5KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmhpZGVPdmVybGF5KCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy51blN1YnNjcmliZUFsbCQubmV4dCgpO1xuICAgIHRoaXMudW5TdWJzY3JpYmVBbGwkLmNvbXBsZXRlKCk7XG4gICAgaWYgKHRoaXMuX2Rpc3BsYXlPdmVybGF5JC5nZXRWYWx1ZSgpKSB7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYuZGV0YWNoKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzaG93T3ZlcmxheSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5vdmVyTGF5VGVtcGxhdGUpIHtcbiAgICAgIHRoaXMub3ZlcmxheVJlZi5hdHRhY2gobmV3IFRlbXBsYXRlUG9ydGFsKHRoaXMub3ZlckxheVRlbXBsYXRlLCB0aGlzLnZpZXdDb250YWluZXJSZWYpKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMub3ZlcmxheUNvbXBvbmVudCkge1xuICAgICAgY29uc3QgcmVmID0gdGhpcy5vdmVybGF5UmVmLmF0dGFjaChuZXcgQ29tcG9uZW50UG9ydGFsKHRoaXMub3ZlcmxheUNvbXBvbmVudCkpO1xuICAgICAgaWYgKHRoaXMub3ZlcmxheUNvbXBvbmVudCA9PT0gTmdzc21NZXNzYWdlT3ZlcmxheUNvbXBvbmVudCkge1xuICAgICAgICByZWYuaW5zdGFuY2UubWVzc2FnZSQgPSB0aGlzLl9vdmVybGF5TWVzc2FnZSQuYXNPYnNlcnZhYmxlKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHJlZiA9IHRoaXMub3ZlcmxheVJlZi5hdHRhY2gobmV3IENvbXBvbmVudFBvcnRhbChOZ3NzbU1lc3NhZ2VPdmVybGF5Q29tcG9uZW50KSk7XG4gICAgICByZWYuaW5zdGFuY2UubWVzc2FnZSQgPSB0aGlzLl9vdmVybGF5TWVzc2FnZSQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoaWRlT3ZlcmxheSgpOiB2b2lkIHtcbiAgICB0aGlzLm92ZXJsYXlSZWYuZGV0YWNoKCk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,11 @@
1
+ import { Component } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class NgssmEmptyOverlayComponent {
4
+ }
5
+ NgssmEmptyOverlayComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgssmEmptyOverlayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6
+ NgssmEmptyOverlayComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: NgssmEmptyOverlayComponent, isStandalone: true, selector: "ngssm-empty-overlay", ngImport: i0, template: ``, isInline: true });
7
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgssmEmptyOverlayComponent, decorators: [{
8
+ type: Component,
9
+ args: [{ selector: 'ngssm-empty-overlay', standalone: true, template: `` }]
10
+ }] });
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdzc20tZW1wdHktb3ZlcmxheS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS10b29sa2l0L3NyYy9saWIvb3ZlcmxheS9uZ3NzbS1lbXB0eS1vdmVybGF5LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVExQyxNQUFNLE9BQU8sMEJBQTBCOzt1SEFBMUIsMEJBQTBCOzJHQUExQiwwQkFBMEIsK0VBSDNCLEVBQUU7MkZBR0QsMEJBQTBCO2tCQU50QyxTQUFTOytCQUNFLHFCQUFxQixjQUNuQixJQUFJLFlBQ04sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ3NzbS1lbXB0eS1vdmVybGF5JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6IGBgLFxuICBzdHlsZXM6IFtdXG59KVxuZXhwb3J0IGNsYXNzIE5nc3NtRW1wdHlPdmVybGF5Q29tcG9uZW50IHt9XG4iXX0=
@@ -0,0 +1,35 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component } from '@angular/core';
3
+ import { MatCardModule } from '@angular/material/card';
4
+ import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
5
+ import { Subject } from 'rxjs';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/common";
8
+ import * as i2 from "@angular/material/card";
9
+ import * as i3 from "@angular/material/progress-spinner";
10
+ export class NgssmMessageOverlayComponent {
11
+ constructor() {
12
+ this.message$ = new Subject();
13
+ }
14
+ }
15
+ NgssmMessageOverlayComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgssmMessageOverlayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
16
+ NgssmMessageOverlayComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: NgssmMessageOverlayComponent, isStandalone: true, selector: "ngssm-message-overlay", ngImport: i0, template: `
17
+ <mat-card>
18
+ <mat-card-content class="message-container">
19
+ <mat-spinner></mat-spinner>
20
+ {{ message$ | async }}
21
+ </mat-card-content>
22
+ </mat-card>
23
+ `, isInline: true, styles: [".message-container{display:flex!important;flex-direction:column;align-items:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i2.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i2.MatCardContent, selector: "mat-card-content" }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i3.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }] });
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgssmMessageOverlayComponent, decorators: [{
25
+ type: Component,
26
+ args: [{ selector: 'ngssm-message-overlay', standalone: true, imports: [CommonModule, MatCardModule, MatProgressSpinnerModule], template: `
27
+ <mat-card>
28
+ <mat-card-content class="message-container">
29
+ <mat-spinner></mat-spinner>
30
+ {{ message$ | async }}
31
+ </mat-card-content>
32
+ </mat-card>
33
+ `, styles: [".message-container{display:flex!important;flex-direction:column;align-items:center}\n"] }]
34
+ }] });
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdzc20tbWVzc2FnZS1vdmVybGF5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nc3NtLXRvb2xraXQvc3JjL2xpYi9vdmVybGF5L25nc3NtLW1lc3NhZ2Utb3ZlcmxheS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzlFLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7O0FBd0IzQyxNQUFNLE9BQU8sNEJBQTRCO0lBdEJ6QztRQXVCUyxhQUFRLEdBQXVCLElBQUksT0FBTyxFQUFVLENBQUM7S0FDN0Q7O3lIQUZZLDRCQUE0Qjs2R0FBNUIsNEJBQTRCLGlGQWxCN0I7Ozs7Ozs7R0FPVCw4SkFSUyxZQUFZLG1GQUFFLGFBQWEsME5BQUUsd0JBQXdCOzJGQW1CcEQsNEJBQTRCO2tCQXRCeEMsU0FBUzsrQkFDRSx1QkFBdUIsY0FDckIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGFBQWEsRUFBRSx3QkFBd0IsQ0FBQyxZQUN0RDs7Ozs7OztHQU9UIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0Q2FyZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NhcmQnO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nc3NtLW1lc3NhZ2Utb3ZlcmxheScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1hdENhcmRNb2R1bGUsIE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZV0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPG1hdC1jYXJkPlxuICAgICAgPG1hdC1jYXJkLWNvbnRlbnQgY2xhc3M9XCJtZXNzYWdlLWNvbnRhaW5lclwiPlxuICAgICAgICA8bWF0LXNwaW5uZXI+PC9tYXQtc3Bpbm5lcj5cbiAgICAgICAge3sgbWVzc2FnZSQgfCBhc3luYyB9fVxuICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxuICAgIDwvbWF0LWNhcmQ+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIC5tZXNzYWdlLWNvbnRhaW5lciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIH1cbiAgICBgXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgTmdzc21NZXNzYWdlT3ZlcmxheUNvbXBvbmVudCB7XG4gIHB1YmxpYyBtZXNzYWdlJDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xufVxuIl19