ngssm-toolkit 21.1.1 → 21.1.2

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.
@@ -25,9 +25,9 @@ import { MatMenuModule } from '@angular/material/menu';
25
25
  import { DateTime } from 'luxon';
26
26
 
27
27
  class NgssmMessageOverlayComponent {
28
- message = signal('', ...(ngDevMode ? [{ debugName: "message" }] : []));
29
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: NgssmMessageOverlayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
30
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: NgssmMessageOverlayComponent, isStandalone: true, selector: "ngssm-message-overlay", ngImport: i0, template: `
28
+ message = signal('', ...(ngDevMode ? [{ debugName: "message" }] : /* istanbul ignore next */ []));
29
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: NgssmMessageOverlayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
30
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.4", type: NgssmMessageOverlayComponent, isStandalone: true, selector: "ngssm-message-overlay", ngImport: i0, template: `
31
31
  <mat-card>
32
32
  <mat-card-content class="message-container">
33
33
  <mat-spinner></mat-spinner>
@@ -36,7 +36,7 @@ class NgssmMessageOverlayComponent {
36
36
  </mat-card>
37
37
  `, isInline: true, styles: [".message-container{display:flex!important;flex-direction:column;align-items:center}\n"], dependencies: [{ kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i1.MatCardContent, selector: "mat-card-content" }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i2.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }] });
38
38
  }
39
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: NgssmMessageOverlayComponent, decorators: [{
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: NgssmMessageOverlayComponent, decorators: [{
40
40
  type: Component,
41
41
  args: [{ selector: 'ngssm-message-overlay', imports: [MatCardModule, MatProgressSpinnerModule], template: `
42
42
  <mat-card>
@@ -56,16 +56,16 @@ class NgssmOverlayContainer extends OverlayContainer {
56
56
  getContainerElement() {
57
57
  return this.elementRef?.nativeElement;
58
58
  }
59
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: NgssmOverlayContainer, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
60
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: NgssmOverlayContainer });
59
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: NgssmOverlayContainer, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
60
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: NgssmOverlayContainer });
61
61
  }
62
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: NgssmOverlayContainer, decorators: [{
62
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: NgssmOverlayContainer, decorators: [{
63
63
  type: Injectable
64
64
  }] });
65
65
 
66
66
  class NgssmOverlayBuilder {
67
67
  static nextId = 1;
68
- overlayMessage = signal('Please wait', ...(ngDevMode ? [{ debugName: "overlayMessage" }] : []));
68
+ overlayMessage = signal('Please wait', ...(ngDevMode ? [{ debugName: "overlayMessage" }] : /* istanbul ignore next */ []));
69
69
  overlayTemplate;
70
70
  overlayComponent;
71
71
  logger = inject(Logger);
@@ -116,18 +116,18 @@ class NgssmOverlayBuilder {
116
116
  hideOverlay() {
117
117
  this.overlayRef.detach();
118
118
  }
119
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: NgssmOverlayBuilder, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
120
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: NgssmOverlayBuilder });
119
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: NgssmOverlayBuilder, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
120
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: NgssmOverlayBuilder });
121
121
  }
122
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: NgssmOverlayBuilder, decorators: [{
122
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: NgssmOverlayBuilder, decorators: [{
123
123
  type: Injectable
124
124
  }], ctorParameters: () => [] });
125
125
 
126
126
  class NgssmComponentOverlayDirective {
127
- overlayTemplate = input(...(ngDevMode ? [undefined, { debugName: "overlayTemplate" }] : []));
128
- overlayComponent = input(...(ngDevMode ? [undefined, { debugName: "overlayComponent" }] : []));
129
- overlayMessage = input('Please wait', ...(ngDevMode ? [{ debugName: "overlayMessage" }] : []));
130
- ngssmDisplayOverlay = input(false, ...(ngDevMode ? [{ debugName: "ngssmDisplayOverlay" }] : []));
127
+ overlayTemplate = input(...(ngDevMode ? [undefined, { debugName: "overlayTemplate" }] : /* istanbul ignore next */ []));
128
+ overlayComponent = input(...(ngDevMode ? [undefined, { debugName: "overlayComponent" }] : /* istanbul ignore next */ []));
129
+ overlayMessage = input('Please wait', ...(ngDevMode ? [{ debugName: "overlayMessage" }] : /* istanbul ignore next */ []));
130
+ ngssmDisplayOverlay = input(false, ...(ngDevMode ? [{ debugName: "ngssmDisplayOverlay" }] : /* istanbul ignore next */ []));
131
131
  overlayBuilder = inject(NgssmOverlayBuilder);
132
132
  constructor() {
133
133
  effect(() => {
@@ -145,10 +145,10 @@ class NgssmComponentOverlayDirective {
145
145
  }
146
146
  });
147
147
  }
148
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: NgssmComponentOverlayDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
149
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.3", type: NgssmComponentOverlayDirective, isStandalone: true, selector: "[ngssmDisplayOverlay]", inputs: { overlayTemplate: { classPropertyName: "overlayTemplate", publicName: "overlayTemplate", isSignal: true, isRequired: false, transformFunction: null }, overlayComponent: { classPropertyName: "overlayComponent", publicName: "overlayComponent", isSignal: true, isRequired: false, transformFunction: null }, overlayMessage: { classPropertyName: "overlayMessage", publicName: "overlayMessage", isSignal: true, isRequired: false, transformFunction: null }, ngssmDisplayOverlay: { classPropertyName: "ngssmDisplayOverlay", publicName: "ngssmDisplayOverlay", isSignal: true, isRequired: false, transformFunction: null } }, providers: [NgssmOverlayBuilder], ngImport: i0 });
148
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: NgssmComponentOverlayDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
149
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.4", type: NgssmComponentOverlayDirective, isStandalone: true, selector: "[ngssmDisplayOverlay]", inputs: { overlayTemplate: { classPropertyName: "overlayTemplate", publicName: "overlayTemplate", isSignal: true, isRequired: false, transformFunction: null }, overlayComponent: { classPropertyName: "overlayComponent", publicName: "overlayComponent", isSignal: true, isRequired: false, transformFunction: null }, overlayMessage: { classPropertyName: "overlayMessage", publicName: "overlayMessage", isSignal: true, isRequired: false, transformFunction: null }, ngssmDisplayOverlay: { classPropertyName: "ngssmDisplayOverlay", publicName: "ngssmDisplayOverlay", isSignal: true, isRequired: false, transformFunction: null } }, providers: [NgssmOverlayBuilder], ngImport: i0 });
150
150
  }
151
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: NgssmComponentOverlayDirective, decorators: [{
151
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: NgssmComponentOverlayDirective, decorators: [{
152
152
  type: Directive,
153
153
  args: [{
154
154
  selector: '[ngssmDisplayOverlay]',
@@ -157,10 +157,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
157
157
  }], ctorParameters: () => [], propDecorators: { overlayTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: "overlayTemplate", required: false }] }], overlayComponent: [{ type: i0.Input, args: [{ isSignal: true, alias: "overlayComponent", required: false }] }], overlayMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "overlayMessage", required: false }] }], ngssmDisplayOverlay: [{ type: i0.Input, args: [{ isSignal: true, alias: "ngssmDisplayOverlay", required: false }] }] } });
158
158
 
159
159
  class NgssmEmptyOverlayComponent {
160
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: NgssmEmptyOverlayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
161
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: NgssmEmptyOverlayComponent, isStandalone: true, selector: "ngssm-empty-overlay", ngImport: i0, template: ``, isInline: true });
160
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: NgssmEmptyOverlayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
161
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.4", type: NgssmEmptyOverlayComponent, isStandalone: true, selector: "ngssm-empty-overlay", ngImport: i0, template: ``, isInline: true });
162
162
  }
163
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: NgssmEmptyOverlayComponent, decorators: [{
163
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: NgssmEmptyOverlayComponent, decorators: [{
164
164
  type: Component,
165
165
  args: [{ selector: 'ngssm-empty-overlay', template: `` }]
166
166
  }] });
@@ -173,10 +173,10 @@ class DefaultErrorStateMatcher {
173
173
  const useDefaultErrorStateMatcher = { provide: ErrorStateMatcher, useClass: DefaultErrorStateMatcher };
174
174
 
175
175
  class NotFoundComponent {
176
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: NotFoundComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
177
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: NotFoundComponent, isStandalone: true, selector: "ngssm-not-found", ngImport: i0, template: ` <img src="./assets/404-not-found.png" alt="not found" /> `, isInline: true, styles: [":host{display:flex;flex-direction:row;flex:1;align-items:center;justify-content:center}\n"] });
176
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: NotFoundComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
177
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.4", type: NotFoundComponent, isStandalone: true, selector: "ngssm-not-found", ngImport: i0, template: ` <img src="./assets/404-not-found.png" alt="not found" /> `, isInline: true, styles: [":host{display:flex;flex-direction:row;flex:1;align-items:center;justify-content:center}\n"] });
178
178
  }
179
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: NotFoundComponent, decorators: [{
179
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: NotFoundComponent, decorators: [{
180
180
  type: Component,
181
181
  args: [{ selector: 'ngssm-not-found', imports: [], template: ` <img src="./assets/404-not-found.png" alt="not found" /> `, styles: [":host{display:flex;flex-direction:row;flex:1;align-items:center;justify-content:center}\n"] }]
182
182
  }] });
@@ -198,10 +198,10 @@ class NgssmFileSizePipe {
198
198
  }
199
199
  return `${bytes.toFixed(+precision)} ${this.units[unit]}`;
200
200
  }
201
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: NgssmFileSizePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
202
- static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.1.3", ngImport: i0, type: NgssmFileSizePipe, isStandalone: true, name: "ngssmFileSize" });
201
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: NgssmFileSizePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
202
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.4", ngImport: i0, type: NgssmFileSizePipe, isStandalone: true, name: "ngssmFileSize" });
203
203
  }
204
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: NgssmFileSizePipe, decorators: [{
204
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: NgssmFileSizePipe, decorators: [{
205
205
  type: Pipe,
206
206
  args: [{
207
207
  name: 'ngssmFileSize'
@@ -217,7 +217,7 @@ class NgssmFilePickerComponent {
217
217
  fileInput;
218
218
  id = `file-picker-${NgssmFilePickerComponent.nextId++}`;
219
219
  ngControl = inject(NgControl, { optional: true, self: true });
220
- displayDetails = input(true, ...(ngDevMode ? [{ debugName: "displayDetails" }] : []));
220
+ displayDetails = input(true, ...(ngDevMode ? [{ debugName: "displayDetails" }] : /* istanbul ignore next */ []));
221
221
  controlType = 'file-picker';
222
222
  placeholder = '';
223
223
  focused = false;
@@ -319,10 +319,10 @@ class NgssmFilePickerComponent {
319
319
  this.onChangeCallback(this.value);
320
320
  }
321
321
  }
322
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: NgssmFilePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
323
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: NgssmFilePickerComponent, isStandalone: true, selector: "ngssm-file-picker", inputs: { displayDetails: { classPropertyName: "displayDetails", publicName: "displayDetails", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: false, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null } }, 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\n class=\"file-picker-container\"\n (drop)=\"onDrop($event)\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n [ngClass]=\"{ 'picker-disabled': disabled }\">\n <input type=\"file\" class=\"hidden\" #fileInput (change)=\"onFileSelected()\" />\n @if (!empty) {\n <div class=\"flex-column-stretch\">\n <div class=\"file-picker-file-name\">\n {{ value?.name }}\n </div>\n @if (displayDetails()) {\n <div class=\"file-picker-file-information\">{{ value?.size | ngssmFileSize }}, last modified on {{ lastModificationDate }}</div>\n }\n </div>\n }\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: NgssmFileSizePipe, name: "ngssmFileSize" }] });
322
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: NgssmFilePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
323
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: NgssmFilePickerComponent, isStandalone: true, selector: "ngssm-file-picker", inputs: { displayDetails: { classPropertyName: "displayDetails", publicName: "displayDetails", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: false, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null } }, 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\n class=\"file-picker-container\"\n (drop)=\"onDrop($event)\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n [ngClass]=\"{ 'picker-disabled': disabled }\">\n <input type=\"file\" class=\"hidden\" #fileInput (change)=\"onFileSelected()\" />\n @if (!empty) {\n <div class=\"flex-column-stretch\">\n <div class=\"file-picker-file-name\">\n {{ value?.name }}\n </div>\n @if (displayDetails()) {\n <div class=\"file-picker-file-information\">{{ value?.size | ngssmFileSize }}, last modified on {{ lastModificationDate }}</div>\n }\n </div>\n }\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: NgssmFileSizePipe, name: "ngssmFileSize" }] });
324
324
  }
325
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: NgssmFilePickerComponent, decorators: [{
325
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: NgssmFilePickerComponent, decorators: [{
326
326
  type: Component,
327
327
  args: [{ selector: 'ngssm-file-picker', imports: [CommonModule, NgssmFileSizePipe], providers: [{ provide: MatFormFieldControl, useExisting: NgssmFilePickerComponent }], template: "<div\n class=\"file-picker-container\"\n (drop)=\"onDrop($event)\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n [ngClass]=\"{ 'picker-disabled': disabled }\">\n <input type=\"file\" class=\"hidden\" #fileInput (change)=\"onFileSelected()\" />\n @if (!empty) {\n <div class=\"flex-column-stretch\">\n <div class=\"file-picker-file-name\">\n {{ value?.name }}\n </div>\n @if (displayDetails()) {\n <div class=\"file-picker-file-information\">{{ value?.size | ngssmFileSize }}, last modified on {{ lastModificationDate }}</div>\n }\n </div>\n }\n</div>\n" }]
328
328
  }], ctorParameters: () => [], propDecorators: { fileInput: [{
@@ -339,20 +339,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
339
339
 
340
340
  class NgssmNotificationErrorComponent {
341
341
  message = inject(MAT_SNACK_BAR_DATA);
342
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: NgssmNotificationErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
343
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", 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: MatIconModule }, { kind: "component", type: i1$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
342
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: NgssmNotificationErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
343
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.4", 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: MatIconModule }, { kind: "component", type: i1$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
344
344
  }
345
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: NgssmNotificationErrorComponent, decorators: [{
345
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: NgssmNotificationErrorComponent, decorators: [{
346
346
  type: Component,
347
347
  args: [{ selector: 'ngssm-notification-error', imports: [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"] }]
348
348
  }] });
349
349
 
350
350
  class NgssmNotificationSuccessComponent {
351
351
  message = inject(MAT_SNACK_BAR_DATA);
352
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: NgssmNotificationSuccessComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
353
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", 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: MatIconModule }, { kind: "component", type: i1$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
352
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: NgssmNotificationSuccessComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
353
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.4", 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: MatIconModule }, { kind: "component", type: i1$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
354
354
  }
355
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: NgssmNotificationSuccessComponent, decorators: [{
355
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: NgssmNotificationSuccessComponent, decorators: [{
356
356
  type: Component,
357
357
  args: [{ selector: 'ngssm-notification-success', imports: [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"] }]
358
358
  }] });
@@ -371,10 +371,10 @@ class NgssmNotifierService {
371
371
  data: message
372
372
  });
373
373
  }
374
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: NgssmNotifierService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
375
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: NgssmNotifierService, providedIn: 'root' });
374
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: NgssmNotifierService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
375
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: NgssmNotifierService, providedIn: 'root' });
376
376
  }
377
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: NgssmNotifierService, decorators: [{
377
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: NgssmNotifierService, decorators: [{
378
378
  type: Injectable,
379
379
  args: [{
380
380
  providedIn: 'root'
@@ -410,10 +410,10 @@ const defaultRegexEditorValidator = {
410
410
 
411
411
  class NgssmConfirmationDialogComponent {
412
412
  data = inject(MAT_DIALOG_DATA);
413
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: NgssmConfirmationDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
414
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: NgssmConfirmationDialogComponent, isStandalone: true, selector: "ngssm-confirmation-dialog", 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: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "component", type: MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
413
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: NgssmConfirmationDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
414
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.4", type: NgssmConfirmationDialogComponent, isStandalone: true, selector: "ngssm-confirmation-dialog", 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: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "component", type: MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
415
415
  }
416
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: NgssmConfirmationDialogComponent, decorators: [{
416
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: NgssmConfirmationDialogComponent, decorators: [{
417
417
  type: Component,
418
418
  args: [{ selector: 'ngssm-confirmation-dialog', imports: [MatDialogContent, MatDialogActions, MatDialogClose, MatButton], 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"] }]
419
419
  }] });
@@ -430,10 +430,10 @@ class NgssmConfirmationDialogService {
430
430
  })
431
431
  .afterClosed();
432
432
  }
433
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: NgssmConfirmationDialogService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
434
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: NgssmConfirmationDialogService, providedIn: 'root' });
433
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: NgssmConfirmationDialogService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
434
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: NgssmConfirmationDialogService, providedIn: 'root' });
435
435
  }
436
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: NgssmConfirmationDialogService, decorators: [{
436
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: NgssmConfirmationDialogService, decorators: [{
437
437
  type: Injectable,
438
438
  args: [{
439
439
  providedIn: 'root'
@@ -462,10 +462,10 @@ class NgssmComponentDisplayDirective {
462
462
  this.componentAction(this.componentRef.instance);
463
463
  }
464
464
  }
465
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: NgssmComponentDisplayDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
466
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.3", type: NgssmComponentDisplayDirective, isStandalone: true, selector: "[ngssmComponentDisplay]", inputs: { ngssmComponentDisplay: "ngssmComponentDisplay", ngssmComponentAction: "ngssmComponentAction" }, ngImport: i0 });
465
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: NgssmComponentDisplayDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
466
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.4", type: NgssmComponentDisplayDirective, isStandalone: true, selector: "[ngssmComponentDisplay]", inputs: { ngssmComponentDisplay: "ngssmComponentDisplay", ngssmComponentAction: "ngssmComponentAction" }, ngImport: i0 });
467
467
  }
468
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: NgssmComponentDisplayDirective, decorators: [{
468
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: NgssmComponentDisplayDirective, decorators: [{
469
469
  type: Directive,
470
470
  args: [{
471
471
  selector: '[ngssmComponentDisplay]'
@@ -477,11 +477,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
477
477
  }] } });
478
478
 
479
479
  class NgssmHelpComponent {
480
- help = input(...(ngDevMode ? [undefined, { debugName: "help" }] : []));
481
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: NgssmHelpComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
482
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: NgssmHelpComponent, isStandalone: true, selector: "ngssm-help", inputs: { help: { classPropertyName: "help", publicName: "help", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<button mat-icon-button color=\"primary\" [matMenuTriggerFor]=\"helpMenu\" id=\"helpButton\">\n <mat-icon class=\"fa-solid fa-circle-question\"></mat-icon>\n</button>\n<mat-menu #helpMenu=\"matMenu\">\n @if (help(); as content) {\n <div class=\"ngssm-help-panel\" [innerHTML]=\"content\"></div>\n } @else {\n <div class=\"ngssm-help-panel\">\n <ng-content></ng-content>\n </div>\n }\n</mat-menu>\n", dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$3.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i3.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "directive", type: i3.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
480
+ help = input(...(ngDevMode ? [undefined, { debugName: "help" }] : /* istanbul ignore next */ []));
481
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: NgssmHelpComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
482
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: NgssmHelpComponent, isStandalone: true, selector: "ngssm-help", inputs: { help: { classPropertyName: "help", publicName: "help", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<button mat-icon-button color=\"primary\" [matMenuTriggerFor]=\"helpMenu\" id=\"helpButton\">\n <mat-icon class=\"fa-solid fa-circle-question\"></mat-icon>\n</button>\n<mat-menu #helpMenu=\"matMenu\">\n @if (help(); as content) {\n <div class=\"ngssm-help-panel\" [innerHTML]=\"content\"></div>\n } @else {\n <div class=\"ngssm-help-panel\">\n <ng-content></ng-content>\n </div>\n }\n</mat-menu>\n", dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$3.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i3.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "directive", type: i3.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
483
483
  }
484
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: NgssmHelpComponent, decorators: [{
484
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: NgssmHelpComponent, decorators: [{
485
485
  type: Component,
486
486
  args: [{ selector: 'ngssm-help', imports: [MatButtonModule, MatIconModule, MatMenuModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<button mat-icon-button color=\"primary\" [matMenuTriggerFor]=\"helpMenu\" id=\"helpButton\">\n <mat-icon class=\"fa-solid fa-circle-question\"></mat-icon>\n</button>\n<mat-menu #helpMenu=\"matMenu\">\n @if (help(); as content) {\n <div class=\"ngssm-help-panel\" [innerHTML]=\"content\"></div>\n } @else {\n <div class=\"ngssm-help-panel\">\n <ng-content></ng-content>\n </div>\n }\n</mat-menu>\n" }]
487
487
  }], propDecorators: { help: [{ type: i0.Input, args: [{ isSignal: true, alias: "help", required: false }] }] } });
@@ -557,10 +557,10 @@ class MatDialogOpeningEffect {
557
557
  config.dialog = undefined;
558
558
  });
559
559
  }
560
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: MatDialogOpeningEffect, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
561
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: MatDialogOpeningEffect });
560
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: MatDialogOpeningEffect, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
561
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: MatDialogOpeningEffect });
562
562
  }
563
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: MatDialogOpeningEffect, decorators: [{
563
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: MatDialogOpeningEffect, decorators: [{
564
564
  type: Injectable
565
565
  }], ctorParameters: () => [] });
566
566
 
@@ -1 +1 @@
1
- {"version":3,"file":"ngssm-toolkit.mjs","sources":["../../../projects/ngssm-toolkit/src/lib/overlay/ngssm-message-overlay.component.ts","../../../projects/ngssm-toolkit/src/lib/overlay/ngssm-overlay-container.ts","../../../projects/ngssm-toolkit/src/lib/overlay/ngssm-overlay-builder.ts","../../../projects/ngssm-toolkit/src/lib/overlay/ngssm-component-overlay.directive.ts","../../../projects/ngssm-toolkit/src/lib/overlay/ngssm-empty-overlay.component.ts","../../../projects/ngssm-toolkit/src/lib/default-error-state-matcher.ts","../../../projects/ngssm-toolkit/src/lib/not-found.component.ts","../../../projects/ngssm-toolkit/src/lib/file-picker/ngssm-file-size.pipe.ts","../../../projects/ngssm-toolkit/src/lib/file-picker/ngssm-file-picker.component.ts","../../../projects/ngssm-toolkit/src/lib/file-picker/ngssm-file-picker.component.html","../../../projects/ngssm-toolkit/src/lib/notification/ngssm-notification-error/ngssm-notification-error.component.ts","../../../projects/ngssm-toolkit/src/lib/notification/ngssm-notification-error/ngssm-notification-error.component.html","../../../projects/ngssm-toolkit/src/lib/notification/ngssm-notification-success/ngssm-notification-success.component.ts","../../../projects/ngssm-toolkit/src/lib/notification/ngssm-notification-success/ngssm-notification-success.component.html","../../../projects/ngssm-toolkit/src/lib/notification/ngssm-notifier.service.ts","../../../projects/ngssm-toolkit/src/lib/regex-editor/regex-editor-validator.ts","../../../projects/ngssm-toolkit/src/lib/confirmation-dialog/ngssm-confirmation-dialog/ngssm-confirmation-dialog.component.ts","../../../projects/ngssm-toolkit/src/lib/confirmation-dialog/ngssm-confirmation-dialog/ngssm-confirmation-dialog.component.html","../../../projects/ngssm-toolkit/src/lib/confirmation-dialog/ngssm-confirmation-dialog.service.ts","../../../projects/ngssm-toolkit/src/lib/object-helpers.ts","../../../projects/ngssm-toolkit/src/lib/ngssm-component-display.directive.ts","../../../projects/ngssm-toolkit/src/lib/ngssm-help/ngssm-help.component.ts","../../../projects/ngssm-toolkit/src/lib/ngssm-help/ngssm-help.component.html","../../../projects/ngssm-toolkit/src/lib/blob-helpers.ts","../../../projects/ngssm-toolkit/src/lib/luxon-helpers.ts","../../../projects/ngssm-toolkit/src/lib/mat-dialog/ngssm-mat-dialog-config.ts","../../../projects/ngssm-toolkit/src/lib/mat-dialog/mat-dialog-opening.effect.ts","../../../projects/ngssm-toolkit/src/lib/mat-dialog/provide-ngssm-mat-dialog.ts","../../../projects/ngssm-toolkit/src/public-api.ts","../../../projects/ngssm-toolkit/src/ngssm-toolkit.ts"],"sourcesContent":["import { Component, signal } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\n\n@Component({\n selector: 'ngssm-message-overlay',\n imports: [MatCardModule, MatProgressSpinnerModule],\n template: `\n <mat-card>\n <mat-card-content class=\"message-container\">\n <mat-spinner></mat-spinner>\n {{ message() }}\n </mat-card-content>\n </mat-card>\n `,\n styles: [\n `\n .message-container {\n display: flex !important;\n flex-direction: column;\n align-items: center;\n }\n `\n ]\n})\nexport class NgssmMessageOverlayComponent {\n public message = signal<string>('');\n}\n","import { ElementRef, Injectable } from '@angular/core';\nimport { OverlayContainer } from '@angular/cdk/overlay';\n\n@Injectable()\nexport class NgssmOverlayContainer extends OverlayContainer {\n private elementRef: ElementRef | undefined;\n\n public setContainerRef(elementRef: ElementRef) {\n this.elementRef = elementRef;\n }\n\n public override getContainerElement(): HTMLElement {\n return this.elementRef?.nativeElement;\n }\n}\n","import {\n ComponentType,\n createOverlayRef,\n createRepositionScrollStrategy,\n Overlay,\n OverlayContainer,\n OverlayRef\n} from '@angular/cdk/overlay';\nimport { ComponentPortal, TemplatePortal } from '@angular/cdk/portal';\nimport {\n DestroyableInjector,\n ElementRef,\n inject,\n Injectable,\n Injector,\n OnDestroy,\n Renderer2,\n signal,\n TemplateRef,\n ViewContainerRef\n} from '@angular/core';\n\nimport { Logger } from 'ngssm-store';\n\nimport { NgssmMessageOverlayComponent } from './ngssm-message-overlay.component';\nimport { NgssmOverlayContainer } from './ngssm-overlay-container';\n\n@Injectable()\nexport class NgssmOverlayBuilder implements OnDestroy {\n private static nextId = 1;\n\n public readonly overlayMessage = signal<string>('Please wait');\n public overlayTemplate: TemplateRef<unknown> | undefined;\n public overlayComponent: ComponentType<unknown> | undefined;\n\n private readonly logger = inject(Logger);\n private readonly injector = inject(Injector);\n private readonly elementRef = inject(ElementRef);\n private readonly overlay = inject(Overlay);\n private readonly viewContainerRef = inject(ViewContainerRef);\n private readonly renderer = inject(Renderer2);\n\n private readonly overlayInjector?: DestroyableInjector;\n private id = NgssmOverlayBuilder.nextId++;\n\n private overlayRef: OverlayRef;\n\n constructor() {\n this.logger.information(`[NgssmOverlayBuilder] Creating overlay ${this.id}`);\n this.renderer.setStyle(this.elementRef.nativeElement, 'position', 'relative');\n\n this.overlayInjector = Injector.create({\n providers: [{ provide: OverlayContainer, useClass: NgssmOverlayContainer }],\n parent: this.injector\n });\n const overlayContainer = this.overlayInjector.get(OverlayContainer);\n (overlayContainer as NgssmOverlayContainer).setContainerRef(this.elementRef);\n\n this.overlayRef = createOverlayRef(this.overlayInjector, {\n positionStrategy: this.overlay.position().global().centerHorizontally().centerVertically(),\n scrollStrategy: createRepositionScrollStrategy(this.injector),\n hasBackdrop: true,\n usePopover: false\n });\n }\n\n public ngOnDestroy(): void {\n this.logger.information(`[NgssmOverlayBuilder] Destroying overlay ${this.id}`);\n this.overlayRef.detach();\n this.overlayInjector?.destroy();\n }\n\n public showOverlay(): void {\n if (this.overlayTemplate) {\n this.overlayRef.attach(new TemplatePortal(this.overlayTemplate, this.viewContainerRef));\n } else if (this.overlayComponent) {\n const ref = this.overlayRef.attach(new ComponentPortal(this.overlayComponent, this.viewContainerRef));\n if (this.overlayComponent === NgssmMessageOverlayComponent) {\n (ref.instance as NgssmMessageOverlayComponent).message = this.overlayMessage;\n }\n } else {\n const ref = this.overlayRef.attach(new ComponentPortal(NgssmMessageOverlayComponent, this.viewContainerRef));\n ref.instance.message = this.overlayMessage;\n }\n }\n\n public hideOverlay(): void {\n this.overlayRef.detach();\n }\n}\n","import { Directive, inject, input, TemplateRef, effect } from '@angular/core';\nimport { ComponentType } from '@angular/cdk/portal';\n\nimport { NgssmOverlayBuilder } from './ngssm-overlay-builder';\n\n@Directive({\n selector: '[ngssmDisplayOverlay]',\n providers: [NgssmOverlayBuilder]\n})\nexport class NgssmComponentOverlayDirective {\n public readonly overlayTemplate = input<TemplateRef<unknown> | undefined | null>();\n public readonly overlayComponent = input<ComponentType<unknown> | undefined | null>();\n public readonly overlayMessage = input<string | null | undefined>('Please wait');\n public readonly ngssmDisplayOverlay = input<boolean>(false);\n\n private overlayBuilder = inject(NgssmOverlayBuilder);\n\n constructor() {\n effect(() => {\n this.overlayBuilder.overlayTemplate = this.overlayTemplate() ?? undefined;\n this.overlayBuilder.overlayComponent = this.overlayComponent() ?? undefined;\n this.overlayBuilder.overlayMessage.set(this.overlayMessage() ?? '');\n });\n\n effect(() => {\n const doRenderOveralay = this.ngssmDisplayOverlay();\n if (doRenderOveralay === true) {\n this.overlayBuilder.showOverlay();\n } else {\n this.overlayBuilder.hideOverlay();\n }\n });\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ngssm-empty-overlay',\n template: ``,\n styles: []\n})\nexport class NgssmEmptyOverlayComponent {}\n","import { Provider } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { ErrorStateMatcher } from '@angular/material/core';\n\nexport class DefaultErrorStateMatcher implements ErrorStateMatcher {\n isErrorState(control: FormControl | null): boolean {\n return !!(control && control.invalid);\n }\n}\n\nexport const useDefaultErrorStateMatcher: Provider = { provide: ErrorStateMatcher, useClass: DefaultErrorStateMatcher };\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ngssm-not-found',\n imports: [],\n template: ` <img src=\"./assets/404-not-found.png\" alt=\"not found\" /> `,\n styles: [\n `\n :host {\n display: flex;\n flex-direction: row;\n flex: 1;\n align-items: center;\n justify-content: center;\n }\n `\n ]\n})\nexport class NotFoundComponent {}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'ngssmFileSize'\n})\nexport class NgssmFileSizePipe implements PipeTransform {\n private readonly units = ['bytes', 'KB', 'MB', 'GB'];\n\n public transform(value: unknown, precision = 2): string {\n let bytes = value as number;\n if (isNaN(bytes) || !isFinite(bytes)) {\n return '?';\n }\n\n let unit = 0;\n while (bytes >= 1024 && unit < this.units.length) {\n bytes /= 1024;\n unit++;\n }\n\n if (unit === 0) {\n return `${bytes} ${this.units[unit]}`;\n }\n\n return `${bytes.toFixed(+precision)} ${this.units[unit]}`;\n }\n}\n","/* eslint-disable @typescript-eslint/member-ordering */\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { CommonModule } from '@angular/common';\nimport { Component, ElementRef, HostBinding, inject, input, Input, OnDestroy, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { MatFormFieldControl } from '@angular/material/form-field';\nimport { Subject } from 'rxjs';\n\nimport { NgssmFileSizePipe } from './ngssm-file-size.pipe';\n\nexport const noop = () => {\n // nothing to do\n};\n\n@Component({\n selector: 'ngssm-file-picker',\n imports: [CommonModule, NgssmFileSizePipe],\n templateUrl: './ngssm-file-picker.component.html',\n styleUrls: ['./ngssm-file-picker.component.scss'],\n providers: [{ provide: MatFormFieldControl, useExisting: NgssmFilePickerComponent }]\n})\nexport class NgssmFilePickerComponent implements MatFormFieldControl<File>, ControlValueAccessor, OnDestroy {\n private static nextId = 0;\n\n @ViewChild('fileInput', { static: true }) fileInput: ElementRef | undefined;\n @HostBinding('id') public id = `file-picker-${NgssmFilePickerComponent.nextId++}`;\n\n public readonly ngControl: NgControl | null = inject(NgControl, { optional: true, self: true });\n\n public readonly displayDetails = input(true);\n\n public controlType = 'file-picker';\n public placeholder = '';\n public focused = false;\n public stateChanges = new Subject<void>();\n public value: File | null = null;\n public autofilled?: boolean | undefined;\n public userAriaDescribedBy?: string | undefined;\n\n private onChangeCallback: (_: unknown) => void = noop;\n private _required = false;\n private _disabled = false;\n\n constructor() {\n // Replace the provider from above with this.\n if (this.ngControl != null) {\n // Setting the value accessor directly (instead of using\n // the providers) to avoid running into a circular import.\n this.ngControl.valueAccessor = this;\n }\n }\n\n @Input()\n public get required(): boolean {\n return this._required;\n }\n\n public set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n this.stateChanges.next();\n }\n\n @Input()\n public get disabled(): boolean {\n return this._disabled;\n }\n\n public set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n this.stateChanges.next();\n }\n\n public get empty(): boolean {\n return this.value === null;\n }\n\n public get shouldLabelFloat(): boolean {\n return this.value !== null;\n }\n\n public get errorState(): boolean {\n return this.ngControl?.invalid ?? false;\n }\n\n public get lastModificationDate(): string {\n if (this.value) {\n const date = new Date(this.value.lastModified);\n return date.toISOString();\n }\n\n return '';\n }\n\n public setDescribedByIds(): void {\n // nothing to do\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n public onContainerClick(): void {\n if (!this.disabled) {\n this.fileInput?.nativeElement.click();\n }\n }\n\n public writeValue(obj: File | null | undefined): void {\n this.value = obj ?? null;\n if (!this.value && this.fileInput) {\n this.fileInput.nativeElement.value = null;\n }\n\n this.stateChanges.next();\n }\n\n public registerOnChange(fn: (_: unknown) => void): void {\n this.onChangeCallback = fn;\n }\n\n public registerOnTouched(): void {\n // nothing to do\n }\n\n public ngOnDestroy(): void {\n this.stateChanges.complete();\n }\n\n public onDrop(event: DragEvent): void {\n this.preventAndStop(event);\n if (!this.disabled && event.dataTransfer !== null) {\n this.updateValue(event.dataTransfer.files);\n }\n }\n\n public onDragOver(event: DragEvent): void {\n this.preventAndStop(event);\n }\n\n public onDragLeave(event: DragEvent): void {\n this.preventAndStop(event);\n }\n\n public onFileSelected(): void {\n this.updateValue(this.fileInput?.nativeElement.files);\n }\n\n private preventAndStop(event: DragEvent): void {\n event.stopPropagation();\n event.preventDefault();\n }\n\n private updateValue(files: FileList): void {\n if (files.length > 0) {\n this.value = files[0];\n this.stateChanges.next();\n this.onChangeCallback(this.value);\n }\n }\n}\n","<div\n class=\"file-picker-container\"\n (drop)=\"onDrop($event)\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n [ngClass]=\"{ 'picker-disabled': disabled }\">\n <input type=\"file\" class=\"hidden\" #fileInput (change)=\"onFileSelected()\" />\n @if (!empty) {\n <div class=\"flex-column-stretch\">\n <div class=\"file-picker-file-name\">\n {{ value?.name }}\n </div>\n @if (displayDetails()) {\n <div class=\"file-picker-file-information\">{{ value?.size | ngssmFileSize }}, last modified on {{ lastModificationDate }}</div>\n }\n </div>\n }\n</div>\n","import { Component, ChangeDetectionStrategy, inject } from '@angular/core';\n\nimport { MatIconModule } from '@angular/material/icon';\nimport { MAT_SNACK_BAR_DATA } from '@angular/material/snack-bar';\n\n@Component({\n selector: 'ngssm-notification-error',\n imports: [MatIconModule],\n templateUrl: './ngssm-notification-error.component.html',\n styleUrls: ['./ngssm-notification-error.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NgssmNotificationErrorComponent {\n public readonly message: string = inject(MAT_SNACK_BAR_DATA);\n}\n","<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","import { Component, ChangeDetectionStrategy, inject } from '@angular/core';\n\nimport { MAT_SNACK_BAR_DATA } from '@angular/material/snack-bar';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n selector: 'ngssm-notification-success',\n imports: [MatIconModule],\n templateUrl: './ngssm-notification-success.component.html',\n styleUrls: ['./ngssm-notification-success.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NgssmNotificationSuccessComponent {\n public message: string = inject(MAT_SNACK_BAR_DATA);\n}\n","<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","import { inject, Injectable } from '@angular/core';\nimport { MatSnackBar } from '@angular/material/snack-bar';\n\nimport { NgssmNotificationErrorComponent } from './ngssm-notification-error/ngssm-notification-error.component';\nimport { NgssmNotificationSuccessComponent } from './ngssm-notification-success/ngssm-notification-success.component';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NgssmNotifierService {\n private readonly matSnackBar = inject(MatSnackBar);\n\n public notifyError(message: string): void {\n this.matSnackBar.openFromComponent(NgssmNotificationErrorComponent, {\n panelClass: 'ngssm-notification-panel',\n data: message\n });\n }\n\n public notifySuccess(message: string): void {\n this.matSnackBar.openFromComponent(NgssmNotificationSuccessComponent, {\n panelClass: 'ngssm-notification-panel',\n data: message\n });\n }\n}\n","export interface RegexValidationResult {\n isValid: boolean;\n error?: string;\n}\n\nexport interface RegexEditorValidator {\n validatePattern: (pattern: string) => RegexValidationResult;\n isMatch: (pattern: string, testString: string) => boolean;\n}\n\nexport const defaultRegexEditorValidator: RegexEditorValidator = {\n validatePattern: (pattern: string) => {\n try {\n const regex = new RegExp(pattern);\n if (regex.test('')) {\n return { isValid: true };\n }\n } catch (error) {\n return { isValid: false, error: (error as Error).message };\n }\n\n return { isValid: true };\n },\n isMatch: (pattern: string, testString: string) => {\n try {\n const regex = new RegExp(pattern);\n if (regex.test(testString)) {\n return true;\n }\n } catch {\n return false;\n }\n\n return false;\n }\n};\n","import { Component, ChangeDetectionStrategy, inject } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogContent, MatDialogActions, MatDialogClose } from '@angular/material/dialog';\nimport { MatButton } from '@angular/material/button';\n\nimport { NgssmConfirmationDialogConfig } from '../ngssm-confirmation-dialog-config';\n\n@Component({\n selector: 'ngssm-confirmation-dialog',\n imports: [MatDialogContent, MatDialogActions, MatDialogClose, MatButton],\n templateUrl: './ngssm-confirmation-dialog.component.html',\n styleUrls: ['./ngssm-confirmation-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NgssmConfirmationDialogComponent {\n public readonly data = inject(MAT_DIALOG_DATA) as NgssmConfirmationDialogConfig;\n}\n","<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","import { inject, Injectable } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { Observable } from 'rxjs';\n\nimport { NgssmConfirmationDialogConfig } from './ngssm-confirmation-dialog-config';\nimport { NgssmConfirmationDialogComponent } from './ngssm-confirmation-dialog/ngssm-confirmation-dialog.component';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NgssmConfirmationDialogService {\n private readonly matDialog = inject(MatDialog);\n\n public displayConfirmationDialog(config: NgssmConfirmationDialogConfig): Observable<string> {\n return this.matDialog\n .open(NgssmConfirmationDialogComponent, {\n disableClose: true,\n data: config,\n minWidth: config.minWidth,\n minHeight: config.minHeight\n })\n .afterClosed();\n }\n}\n","export const isNullOrUndefined = <T = unknown>(value: T): boolean => value === null || value === undefined;\n","import { ComponentRef, Directive, inject, Input, Type, ViewContainerRef } from '@angular/core';\n\nexport type NgssmComponentAction = (component: unknown) => void;\n\n@Directive({\n selector: '[ngssmComponentDisplay]'\n})\nexport class NgssmComponentDisplayDirective {\n private readonly viewContainerRef = inject(ViewContainerRef);\n\n private componentRef?: ComponentRef<unknown>;\n private componentAction?: NgssmComponentAction | null;\n\n @Input() public set ngssmComponentDisplay(value: Type<unknown> | null | undefined) {\n this.componentRef = undefined;\n this.viewContainerRef.clear();\n if (value) {\n this.componentRef = this.viewContainerRef.createComponent(value);\n if (this.componentRef && this.componentAction) {\n this.componentAction(this.componentRef.instance);\n }\n }\n }\n\n @Input() public set ngssmComponentAction(value: NgssmComponentAction | null | undefined) {\n this.componentAction = value;\n if (this.componentRef && this.componentAction) {\n this.componentAction(this.componentRef.instance);\n }\n }\n}\n","import { Component, ChangeDetectionStrategy, input } from '@angular/core';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\n\n@Component({\n selector: 'ngssm-help',\n imports: [MatButtonModule, MatIconModule, MatMenuModule],\n templateUrl: './ngssm-help.component.html',\n styleUrls: [],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NgssmHelpComponent {\n public readonly help = input<string | null | undefined>();\n}\n","<button mat-icon-button color=\"primary\" [matMenuTriggerFor]=\"helpMenu\" id=\"helpButton\">\n <mat-icon class=\"fa-solid fa-circle-question\"></mat-icon>\n</button>\n<mat-menu #helpMenu=\"matMenu\">\n @if (help(); as content) {\n <div class=\"ngssm-help-panel\" [innerHTML]=\"content\"></div>\n } @else {\n <div class=\"ngssm-help-panel\">\n <ng-content></ng-content>\n </div>\n }\n</mat-menu>\n","import { EnvironmentProviders, InjectionToken, makeEnvironmentProviders } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nexport type BlobContentReaderAsString = (file: Blob) => Observable<string>;\n\nexport const defaultBlobContentReaderAsString: BlobContentReaderAsString = (file: Blob): Observable<string> => {\n const observable = new Subject<string>();\n const reader = new FileReader();\n\n reader.onloadend = () => {\n const data = reader.result as string;\n reader.onload = null;\n observable.next(data);\n observable.complete();\n };\n\n reader.onerror = (error) => {\n observable.error(error);\n };\n\n reader.readAsText(file);\n\n return observable;\n};\n\nexport const BLOB_CONTENT_READER_AS_STRING = new InjectionToken<BlobContentReaderAsString>('BLOB_CONTENT_READER_AS_STRING');\n\nexport const provideBlobHelpers = (): EnvironmentProviders => {\n return makeEnvironmentProviders([{ provide: BLOB_CONTENT_READER_AS_STRING, useValue: defaultBlobContentReaderAsString }]);\n};\n","import { DateTime } from 'luxon';\n\nexport const compareDateTime = (left: DateTime, right: DateTime): number => {\n if (left < right) {\n return -1;\n }\n\n if (left > right) {\n return 1;\n }\n\n return 0;\n};\n\nexport const toUtcDate = (value: string): DateTime => DateTime.fromISO(value, { zone: 'utc' });\n","import { EnvironmentProviders, InjectionToken, makeEnvironmentProviders } from '@angular/core';\nimport { ComponentType } from '@angular/cdk/portal';\nimport { MatDialogConfig } from '@angular/material/dialog';\n\nimport { State } from 'ngssm-store';\n\nexport interface NgssmMatDialogConfig<T = unknown, D = unknown> {\n openingAction: string;\n closingActions: string[];\n component: ComponentType<T>;\n matDialogConfig?: MatDialogConfig<D>;\n beforeOpeningDialog?: (state: State) => void;\n}\n\nexport const NGSSM_MAT_DIALOG_CONFIG = new InjectionToken<NgssmMatDialogConfig>('NGSSM_MAT_DIALOG_CONFIG');\n\nexport const provideNgssmMatDialogConfigs = (...configs: NgssmMatDialogConfig[]): EnvironmentProviders => {\n return makeEnvironmentProviders(configs.map((config) => ({ provide: NGSSM_MAT_DIALOG_CONFIG, useValue: config, multi: true })));\n};\n","import { EnvironmentInjector, inject, Injectable, runInInjectionContext } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\n\nimport { Effect, State, Action, ActionDispatcher } from 'ngssm-store';\n\nimport { NGSSM_MAT_DIALOG_CONFIG, NgssmMatDialogConfig } from './ngssm-mat-dialog-config';\n\ninterface ExtendedConfig {\n config: NgssmMatDialogConfig;\n dialog?: MatDialogRef<unknown, unknown>;\n}\n\n@Injectable()\nexport class MatDialogOpeningEffect implements Effect {\n public readonly processedActions: string[] = [];\n\n private configs: NgssmMatDialogConfig[] | null = inject(NGSSM_MAT_DIALOG_CONFIG, { optional: true }) as unknown as NgssmMatDialogConfig[];\n private readonly matDialog = inject(MatDialog);\n private readonly injector = inject(EnvironmentInjector);\n\n private readonly extendedConfigs: ExtendedConfig[];\n\n constructor() {\n const allActions = (this.configs ?? []).flatMap((c) => [c.openingAction, ...c.closingActions]);\n const actions = new Set<string>(allActions);\n this.processedActions.push(...actions);\n this.extendedConfigs = (this.configs ?? []).map((c) => ({\n config: c\n }));\n }\n\n public processAction(actionDispatcher: ActionDispatcher, state: State, action: Action): void {\n this.processActionAsClosingOne(action);\n this.processActionAsOpeningOne(state, action);\n }\n\n private processActionAsOpeningOne(state: State, action: Action): void {\n const extendedConfig = this.extendedConfigs.find((c) => c.config.openingAction === action.type);\n if (extendedConfig) {\n const beforeOpeningDialog = extendedConfig.config.beforeOpeningDialog;\n if (beforeOpeningDialog) {\n runInInjectionContext(this.injector, () => beforeOpeningDialog(state));\n }\n extendedConfig.dialog = this.matDialog.open(extendedConfig.config.component, extendedConfig.config.matDialogConfig);\n }\n }\n\n private processActionAsClosingOne(action: Action): void {\n const extendedConfigs = this.extendedConfigs.filter((c) => c.config.closingActions.includes(action.type));\n extendedConfigs.forEach((config) => {\n config.dialog?.close();\n config.dialog = undefined;\n });\n }\n}\n","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\n\nimport { provideEffects } from 'ngssm-store';\n\nimport { MatDialogOpeningEffect } from './mat-dialog-opening.effect';\n\nexport const provideNgssmMatDialog = (): EnvironmentProviders => {\n return makeEnvironmentProviders([provideEffects(MatDialogOpeningEffect)]);\n};\n","/*\n * Public API Surface of ngssm-toolkit\n */\n\nexport * from './lib/overlay';\nexport * from './lib/default-error-state-matcher';\nexport * from './lib/not-found.component';\nexport * from './lib/file-picker';\nexport * from './lib/notification';\nexport * from './lib/regex-editor';\nexport * from './lib/confirmation-dialog';\nexport * from './lib/object-helpers';\nexport * from './lib/ngssm-component-display.directive';\nexport * from './lib/ngssm-help/ngssm-help.component';\nexport * from './lib/blob-helpers';\nexport * from './lib/luxon-helpers';\nexport * from './lib/mat-dialog';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
1
+ {"version":3,"file":"ngssm-toolkit.mjs","sources":["../../../projects/ngssm-toolkit/src/lib/overlay/ngssm-message-overlay.component.ts","../../../projects/ngssm-toolkit/src/lib/overlay/ngssm-overlay-container.ts","../../../projects/ngssm-toolkit/src/lib/overlay/ngssm-overlay-builder.ts","../../../projects/ngssm-toolkit/src/lib/overlay/ngssm-component-overlay.directive.ts","../../../projects/ngssm-toolkit/src/lib/overlay/ngssm-empty-overlay.component.ts","../../../projects/ngssm-toolkit/src/lib/default-error-state-matcher.ts","../../../projects/ngssm-toolkit/src/lib/not-found.component.ts","../../../projects/ngssm-toolkit/src/lib/file-picker/ngssm-file-size.pipe.ts","../../../projects/ngssm-toolkit/src/lib/file-picker/ngssm-file-picker.component.ts","../../../projects/ngssm-toolkit/src/lib/file-picker/ngssm-file-picker.component.html","../../../projects/ngssm-toolkit/src/lib/notification/ngssm-notification-error/ngssm-notification-error.component.ts","../../../projects/ngssm-toolkit/src/lib/notification/ngssm-notification-error/ngssm-notification-error.component.html","../../../projects/ngssm-toolkit/src/lib/notification/ngssm-notification-success/ngssm-notification-success.component.ts","../../../projects/ngssm-toolkit/src/lib/notification/ngssm-notification-success/ngssm-notification-success.component.html","../../../projects/ngssm-toolkit/src/lib/notification/ngssm-notifier.service.ts","../../../projects/ngssm-toolkit/src/lib/regex-editor/regex-editor-validator.ts","../../../projects/ngssm-toolkit/src/lib/confirmation-dialog/ngssm-confirmation-dialog/ngssm-confirmation-dialog.component.ts","../../../projects/ngssm-toolkit/src/lib/confirmation-dialog/ngssm-confirmation-dialog/ngssm-confirmation-dialog.component.html","../../../projects/ngssm-toolkit/src/lib/confirmation-dialog/ngssm-confirmation-dialog.service.ts","../../../projects/ngssm-toolkit/src/lib/object-helpers.ts","../../../projects/ngssm-toolkit/src/lib/ngssm-component-display.directive.ts","../../../projects/ngssm-toolkit/src/lib/ngssm-help/ngssm-help.component.ts","../../../projects/ngssm-toolkit/src/lib/ngssm-help/ngssm-help.component.html","../../../projects/ngssm-toolkit/src/lib/blob-helpers.ts","../../../projects/ngssm-toolkit/src/lib/luxon-helpers.ts","../../../projects/ngssm-toolkit/src/lib/mat-dialog/ngssm-mat-dialog-config.ts","../../../projects/ngssm-toolkit/src/lib/mat-dialog/mat-dialog-opening.effect.ts","../../../projects/ngssm-toolkit/src/lib/mat-dialog/provide-ngssm-mat-dialog.ts","../../../projects/ngssm-toolkit/src/public-api.ts","../../../projects/ngssm-toolkit/src/ngssm-toolkit.ts"],"sourcesContent":["import { Component, signal } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\n\n@Component({\n selector: 'ngssm-message-overlay',\n imports: [MatCardModule, MatProgressSpinnerModule],\n template: `\n <mat-card>\n <mat-card-content class=\"message-container\">\n <mat-spinner></mat-spinner>\n {{ message() }}\n </mat-card-content>\n </mat-card>\n `,\n styles: [\n `\n .message-container {\n display: flex !important;\n flex-direction: column;\n align-items: center;\n }\n `\n ]\n})\nexport class NgssmMessageOverlayComponent {\n public message = signal<string>('');\n}\n","import { ElementRef, Injectable } from '@angular/core';\nimport { OverlayContainer } from '@angular/cdk/overlay';\n\n@Injectable()\nexport class NgssmOverlayContainer extends OverlayContainer {\n private elementRef: ElementRef | undefined;\n\n public setContainerRef(elementRef: ElementRef) {\n this.elementRef = elementRef;\n }\n\n public override getContainerElement(): HTMLElement {\n return this.elementRef?.nativeElement;\n }\n}\n","import {\n ComponentType,\n createOverlayRef,\n createRepositionScrollStrategy,\n Overlay,\n OverlayContainer,\n OverlayRef\n} from '@angular/cdk/overlay';\nimport { ComponentPortal, TemplatePortal } from '@angular/cdk/portal';\nimport {\n DestroyableInjector,\n ElementRef,\n inject,\n Injectable,\n Injector,\n OnDestroy,\n Renderer2,\n signal,\n TemplateRef,\n ViewContainerRef\n} from '@angular/core';\n\nimport { Logger } from 'ngssm-store';\n\nimport { NgssmMessageOverlayComponent } from './ngssm-message-overlay.component';\nimport { NgssmOverlayContainer } from './ngssm-overlay-container';\n\n@Injectable()\nexport class NgssmOverlayBuilder implements OnDestroy {\n private static nextId = 1;\n\n public readonly overlayMessage = signal<string>('Please wait');\n public overlayTemplate: TemplateRef<unknown> | undefined;\n public overlayComponent: ComponentType<unknown> | undefined;\n\n private readonly logger = inject(Logger);\n private readonly injector = inject(Injector);\n private readonly elementRef = inject(ElementRef);\n private readonly overlay = inject(Overlay);\n private readonly viewContainerRef = inject(ViewContainerRef);\n private readonly renderer = inject(Renderer2);\n\n private readonly overlayInjector?: DestroyableInjector;\n private id = NgssmOverlayBuilder.nextId++;\n\n private overlayRef: OverlayRef;\n\n constructor() {\n this.logger.information(`[NgssmOverlayBuilder] Creating overlay ${this.id}`);\n this.renderer.setStyle(this.elementRef.nativeElement, 'position', 'relative');\n\n this.overlayInjector = Injector.create({\n providers: [{ provide: OverlayContainer, useClass: NgssmOverlayContainer }],\n parent: this.injector\n });\n const overlayContainer = this.overlayInjector.get(OverlayContainer);\n (overlayContainer as NgssmOverlayContainer).setContainerRef(this.elementRef);\n\n this.overlayRef = createOverlayRef(this.overlayInjector, {\n positionStrategy: this.overlay.position().global().centerHorizontally().centerVertically(),\n scrollStrategy: createRepositionScrollStrategy(this.injector),\n hasBackdrop: true,\n usePopover: false\n });\n }\n\n public ngOnDestroy(): void {\n this.logger.information(`[NgssmOverlayBuilder] Destroying overlay ${this.id}`);\n this.overlayRef.detach();\n this.overlayInjector?.destroy();\n }\n\n public showOverlay(): void {\n if (this.overlayTemplate) {\n this.overlayRef.attach(new TemplatePortal(this.overlayTemplate, this.viewContainerRef));\n } else if (this.overlayComponent) {\n const ref = this.overlayRef.attach(new ComponentPortal(this.overlayComponent, this.viewContainerRef));\n if (this.overlayComponent === NgssmMessageOverlayComponent) {\n (ref.instance as NgssmMessageOverlayComponent).message = this.overlayMessage;\n }\n } else {\n const ref = this.overlayRef.attach(new ComponentPortal(NgssmMessageOverlayComponent, this.viewContainerRef));\n ref.instance.message = this.overlayMessage;\n }\n }\n\n public hideOverlay(): void {\n this.overlayRef.detach();\n }\n}\n","import { Directive, inject, input, TemplateRef, effect } from '@angular/core';\nimport { ComponentType } from '@angular/cdk/portal';\n\nimport { NgssmOverlayBuilder } from './ngssm-overlay-builder';\n\n@Directive({\n selector: '[ngssmDisplayOverlay]',\n providers: [NgssmOverlayBuilder]\n})\nexport class NgssmComponentOverlayDirective {\n public readonly overlayTemplate = input<TemplateRef<unknown> | undefined | null>();\n public readonly overlayComponent = input<ComponentType<unknown> | undefined | null>();\n public readonly overlayMessage = input<string | null | undefined>('Please wait');\n public readonly ngssmDisplayOverlay = input<boolean>(false);\n\n private overlayBuilder = inject(NgssmOverlayBuilder);\n\n constructor() {\n effect(() => {\n this.overlayBuilder.overlayTemplate = this.overlayTemplate() ?? undefined;\n this.overlayBuilder.overlayComponent = this.overlayComponent() ?? undefined;\n this.overlayBuilder.overlayMessage.set(this.overlayMessage() ?? '');\n });\n\n effect(() => {\n const doRenderOveralay = this.ngssmDisplayOverlay();\n if (doRenderOveralay === true) {\n this.overlayBuilder.showOverlay();\n } else {\n this.overlayBuilder.hideOverlay();\n }\n });\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ngssm-empty-overlay',\n template: ``,\n styles: []\n})\nexport class NgssmEmptyOverlayComponent {}\n","import { Provider } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { ErrorStateMatcher } from '@angular/material/core';\n\nexport class DefaultErrorStateMatcher implements ErrorStateMatcher {\n isErrorState(control: FormControl | null): boolean {\n return !!(control && control.invalid);\n }\n}\n\nexport const useDefaultErrorStateMatcher: Provider = { provide: ErrorStateMatcher, useClass: DefaultErrorStateMatcher };\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ngssm-not-found',\n imports: [],\n template: ` <img src=\"./assets/404-not-found.png\" alt=\"not found\" /> `,\n styles: [\n `\n :host {\n display: flex;\n flex-direction: row;\n flex: 1;\n align-items: center;\n justify-content: center;\n }\n `\n ]\n})\nexport class NotFoundComponent {}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'ngssmFileSize'\n})\nexport class NgssmFileSizePipe implements PipeTransform {\n private readonly units = ['bytes', 'KB', 'MB', 'GB'];\n\n public transform(value: unknown, precision = 2): string {\n let bytes = value as number;\n if (isNaN(bytes) || !isFinite(bytes)) {\n return '?';\n }\n\n let unit = 0;\n while (bytes >= 1024 && unit < this.units.length) {\n bytes /= 1024;\n unit++;\n }\n\n if (unit === 0) {\n return `${bytes} ${this.units[unit]}`;\n }\n\n return `${bytes.toFixed(+precision)} ${this.units[unit]}`;\n }\n}\n","/* eslint-disable @typescript-eslint/member-ordering */\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { CommonModule } from '@angular/common';\nimport { Component, ElementRef, HostBinding, inject, input, Input, OnDestroy, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { MatFormFieldControl } from '@angular/material/form-field';\nimport { Subject } from 'rxjs';\n\nimport { NgssmFileSizePipe } from './ngssm-file-size.pipe';\n\nexport const noop = () => {\n // nothing to do\n};\n\n@Component({\n selector: 'ngssm-file-picker',\n imports: [CommonModule, NgssmFileSizePipe],\n templateUrl: './ngssm-file-picker.component.html',\n styleUrls: ['./ngssm-file-picker.component.scss'],\n providers: [{ provide: MatFormFieldControl, useExisting: NgssmFilePickerComponent }]\n})\nexport class NgssmFilePickerComponent implements MatFormFieldControl<File>, ControlValueAccessor, OnDestroy {\n private static nextId = 0;\n\n @ViewChild('fileInput', { static: true }) fileInput: ElementRef | undefined;\n @HostBinding('id') public id = `file-picker-${NgssmFilePickerComponent.nextId++}`;\n\n public readonly ngControl: NgControl | null = inject(NgControl, { optional: true, self: true });\n\n public readonly displayDetails = input(true);\n\n public controlType = 'file-picker';\n public placeholder = '';\n public focused = false;\n public stateChanges = new Subject<void>();\n public value: File | null = null;\n public autofilled?: boolean | undefined;\n public userAriaDescribedBy?: string | undefined;\n\n private onChangeCallback: (_: unknown) => void = noop;\n private _required = false;\n private _disabled = false;\n\n constructor() {\n // Replace the provider from above with this.\n if (this.ngControl != null) {\n // Setting the value accessor directly (instead of using\n // the providers) to avoid running into a circular import.\n this.ngControl.valueAccessor = this;\n }\n }\n\n @Input()\n public get required(): boolean {\n return this._required;\n }\n\n public set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n this.stateChanges.next();\n }\n\n @Input()\n public get disabled(): boolean {\n return this._disabled;\n }\n\n public set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n this.stateChanges.next();\n }\n\n public get empty(): boolean {\n return this.value === null;\n }\n\n public get shouldLabelFloat(): boolean {\n return this.value !== null;\n }\n\n public get errorState(): boolean {\n return this.ngControl?.invalid ?? false;\n }\n\n public get lastModificationDate(): string {\n if (this.value) {\n const date = new Date(this.value.lastModified);\n return date.toISOString();\n }\n\n return '';\n }\n\n public setDescribedByIds(): void {\n // nothing to do\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n public onContainerClick(): void {\n if (!this.disabled) {\n this.fileInput?.nativeElement.click();\n }\n }\n\n public writeValue(obj: File | null | undefined): void {\n this.value = obj ?? null;\n if (!this.value && this.fileInput) {\n this.fileInput.nativeElement.value = null;\n }\n\n this.stateChanges.next();\n }\n\n public registerOnChange(fn: (_: unknown) => void): void {\n this.onChangeCallback = fn;\n }\n\n public registerOnTouched(): void {\n // nothing to do\n }\n\n public ngOnDestroy(): void {\n this.stateChanges.complete();\n }\n\n public onDrop(event: DragEvent): void {\n this.preventAndStop(event);\n if (!this.disabled && event.dataTransfer !== null) {\n this.updateValue(event.dataTransfer.files);\n }\n }\n\n public onDragOver(event: DragEvent): void {\n this.preventAndStop(event);\n }\n\n public onDragLeave(event: DragEvent): void {\n this.preventAndStop(event);\n }\n\n public onFileSelected(): void {\n this.updateValue(this.fileInput?.nativeElement.files);\n }\n\n private preventAndStop(event: DragEvent): void {\n event.stopPropagation();\n event.preventDefault();\n }\n\n private updateValue(files: FileList): void {\n if (files.length > 0) {\n this.value = files[0];\n this.stateChanges.next();\n this.onChangeCallback(this.value);\n }\n }\n}\n","<div\n class=\"file-picker-container\"\n (drop)=\"onDrop($event)\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n [ngClass]=\"{ 'picker-disabled': disabled }\">\n <input type=\"file\" class=\"hidden\" #fileInput (change)=\"onFileSelected()\" />\n @if (!empty) {\n <div class=\"flex-column-stretch\">\n <div class=\"file-picker-file-name\">\n {{ value?.name }}\n </div>\n @if (displayDetails()) {\n <div class=\"file-picker-file-information\">{{ value?.size | ngssmFileSize }}, last modified on {{ lastModificationDate }}</div>\n }\n </div>\n }\n</div>\n","import { Component, ChangeDetectionStrategy, inject } from '@angular/core';\n\nimport { MatIconModule } from '@angular/material/icon';\nimport { MAT_SNACK_BAR_DATA } from '@angular/material/snack-bar';\n\n@Component({\n selector: 'ngssm-notification-error',\n imports: [MatIconModule],\n templateUrl: './ngssm-notification-error.component.html',\n styleUrls: ['./ngssm-notification-error.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NgssmNotificationErrorComponent {\n public readonly message: string = inject(MAT_SNACK_BAR_DATA);\n}\n","<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","import { Component, ChangeDetectionStrategy, inject } from '@angular/core';\n\nimport { MAT_SNACK_BAR_DATA } from '@angular/material/snack-bar';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n selector: 'ngssm-notification-success',\n imports: [MatIconModule],\n templateUrl: './ngssm-notification-success.component.html',\n styleUrls: ['./ngssm-notification-success.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NgssmNotificationSuccessComponent {\n public message: string = inject(MAT_SNACK_BAR_DATA);\n}\n","<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","import { inject, Injectable } from '@angular/core';\nimport { MatSnackBar } from '@angular/material/snack-bar';\n\nimport { NgssmNotificationErrorComponent } from './ngssm-notification-error/ngssm-notification-error.component';\nimport { NgssmNotificationSuccessComponent } from './ngssm-notification-success/ngssm-notification-success.component';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NgssmNotifierService {\n private readonly matSnackBar = inject(MatSnackBar);\n\n public notifyError(message: string): void {\n this.matSnackBar.openFromComponent(NgssmNotificationErrorComponent, {\n panelClass: 'ngssm-notification-panel',\n data: message\n });\n }\n\n public notifySuccess(message: string): void {\n this.matSnackBar.openFromComponent(NgssmNotificationSuccessComponent, {\n panelClass: 'ngssm-notification-panel',\n data: message\n });\n }\n}\n","export interface RegexValidationResult {\n isValid: boolean;\n error?: string;\n}\n\nexport interface RegexEditorValidator {\n validatePattern: (pattern: string) => RegexValidationResult;\n isMatch: (pattern: string, testString: string) => boolean;\n}\n\nexport const defaultRegexEditorValidator: RegexEditorValidator = {\n validatePattern: (pattern: string) => {\n try {\n const regex = new RegExp(pattern);\n if (regex.test('')) {\n return { isValid: true };\n }\n } catch (error) {\n return { isValid: false, error: (error as Error).message };\n }\n\n return { isValid: true };\n },\n isMatch: (pattern: string, testString: string) => {\n try {\n const regex = new RegExp(pattern);\n if (regex.test(testString)) {\n return true;\n }\n } catch {\n return false;\n }\n\n return false;\n }\n};\n","import { Component, ChangeDetectionStrategy, inject } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogContent, MatDialogActions, MatDialogClose } from '@angular/material/dialog';\nimport { MatButton } from '@angular/material/button';\n\nimport { NgssmConfirmationDialogConfig } from '../ngssm-confirmation-dialog-config';\n\n@Component({\n selector: 'ngssm-confirmation-dialog',\n imports: [MatDialogContent, MatDialogActions, MatDialogClose, MatButton],\n templateUrl: './ngssm-confirmation-dialog.component.html',\n styleUrls: ['./ngssm-confirmation-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NgssmConfirmationDialogComponent {\n public readonly data = inject(MAT_DIALOG_DATA) as NgssmConfirmationDialogConfig;\n}\n","<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","import { inject, Injectable } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { Observable } from 'rxjs';\n\nimport { NgssmConfirmationDialogConfig } from './ngssm-confirmation-dialog-config';\nimport { NgssmConfirmationDialogComponent } from './ngssm-confirmation-dialog/ngssm-confirmation-dialog.component';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NgssmConfirmationDialogService {\n private readonly matDialog = inject(MatDialog);\n\n public displayConfirmationDialog(config: NgssmConfirmationDialogConfig): Observable<string> {\n return this.matDialog\n .open(NgssmConfirmationDialogComponent, {\n disableClose: true,\n data: config,\n minWidth: config.minWidth,\n minHeight: config.minHeight\n })\n .afterClosed();\n }\n}\n","export const isNullOrUndefined = <T = unknown>(value: T): boolean => value === null || value === undefined;\n","import { ComponentRef, Directive, inject, Input, Type, ViewContainerRef } from '@angular/core';\n\nexport type NgssmComponentAction = (component: unknown) => void;\n\n@Directive({\n selector: '[ngssmComponentDisplay]'\n})\nexport class NgssmComponentDisplayDirective {\n private readonly viewContainerRef = inject(ViewContainerRef);\n\n private componentRef?: ComponentRef<unknown>;\n private componentAction?: NgssmComponentAction | null;\n\n @Input() public set ngssmComponentDisplay(value: Type<unknown> | null | undefined) {\n this.componentRef = undefined;\n this.viewContainerRef.clear();\n if (value) {\n this.componentRef = this.viewContainerRef.createComponent(value);\n if (this.componentRef && this.componentAction) {\n this.componentAction(this.componentRef.instance);\n }\n }\n }\n\n @Input() public set ngssmComponentAction(value: NgssmComponentAction | null | undefined) {\n this.componentAction = value;\n if (this.componentRef && this.componentAction) {\n this.componentAction(this.componentRef.instance);\n }\n }\n}\n","import { Component, ChangeDetectionStrategy, input } from '@angular/core';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\n\n@Component({\n selector: 'ngssm-help',\n imports: [MatButtonModule, MatIconModule, MatMenuModule],\n templateUrl: './ngssm-help.component.html',\n styleUrls: [],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NgssmHelpComponent {\n public readonly help = input<string | null | undefined>();\n}\n","<button mat-icon-button color=\"primary\" [matMenuTriggerFor]=\"helpMenu\" id=\"helpButton\">\n <mat-icon class=\"fa-solid fa-circle-question\"></mat-icon>\n</button>\n<mat-menu #helpMenu=\"matMenu\">\n @if (help(); as content) {\n <div class=\"ngssm-help-panel\" [innerHTML]=\"content\"></div>\n } @else {\n <div class=\"ngssm-help-panel\">\n <ng-content></ng-content>\n </div>\n }\n</mat-menu>\n","import { EnvironmentProviders, InjectionToken, makeEnvironmentProviders } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nexport type BlobContentReaderAsString = (file: Blob) => Observable<string>;\n\nexport const defaultBlobContentReaderAsString: BlobContentReaderAsString = (file: Blob): Observable<string> => {\n const observable = new Subject<string>();\n const reader = new FileReader();\n\n reader.onloadend = () => {\n const data = reader.result as string;\n reader.onload = null;\n observable.next(data);\n observable.complete();\n };\n\n reader.onerror = (error) => {\n observable.error(error);\n };\n\n reader.readAsText(file);\n\n return observable;\n};\n\nexport const BLOB_CONTENT_READER_AS_STRING = new InjectionToken<BlobContentReaderAsString>('BLOB_CONTENT_READER_AS_STRING');\n\nexport const provideBlobHelpers = (): EnvironmentProviders => {\n return makeEnvironmentProviders([{ provide: BLOB_CONTENT_READER_AS_STRING, useValue: defaultBlobContentReaderAsString }]);\n};\n","import { DateTime } from 'luxon';\n\nexport const compareDateTime = (left: DateTime, right: DateTime): number => {\n if (left < right) {\n return -1;\n }\n\n if (left > right) {\n return 1;\n }\n\n return 0;\n};\n\nexport const toUtcDate = (value: string): DateTime => DateTime.fromISO(value, { zone: 'utc' });\n","import { EnvironmentProviders, InjectionToken, makeEnvironmentProviders } from '@angular/core';\nimport { ComponentType } from '@angular/cdk/portal';\nimport { MatDialogConfig } from '@angular/material/dialog';\n\nimport { State } from 'ngssm-store';\n\nexport interface NgssmMatDialogConfig<T = unknown, D = unknown> {\n openingAction: string;\n closingActions: string[];\n component: ComponentType<T>;\n matDialogConfig?: MatDialogConfig<D>;\n beforeOpeningDialog?: (state: State) => void;\n}\n\nexport const NGSSM_MAT_DIALOG_CONFIG = new InjectionToken<NgssmMatDialogConfig>('NGSSM_MAT_DIALOG_CONFIG');\n\nexport const provideNgssmMatDialogConfigs = (...configs: NgssmMatDialogConfig[]): EnvironmentProviders => {\n return makeEnvironmentProviders(configs.map((config) => ({ provide: NGSSM_MAT_DIALOG_CONFIG, useValue: config, multi: true })));\n};\n","import { EnvironmentInjector, inject, Injectable, runInInjectionContext } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\n\nimport { Effect, State, Action, ActionDispatcher } from 'ngssm-store';\n\nimport { NGSSM_MAT_DIALOG_CONFIG, NgssmMatDialogConfig } from './ngssm-mat-dialog-config';\n\ninterface ExtendedConfig {\n config: NgssmMatDialogConfig;\n dialog?: MatDialogRef<unknown, unknown>;\n}\n\n@Injectable()\nexport class MatDialogOpeningEffect implements Effect {\n public readonly processedActions: string[] = [];\n\n private configs: NgssmMatDialogConfig[] | null = inject(NGSSM_MAT_DIALOG_CONFIG, { optional: true }) as unknown as NgssmMatDialogConfig[];\n private readonly matDialog = inject(MatDialog);\n private readonly injector = inject(EnvironmentInjector);\n\n private readonly extendedConfigs: ExtendedConfig[];\n\n constructor() {\n const allActions = (this.configs ?? []).flatMap((c) => [c.openingAction, ...c.closingActions]);\n const actions = new Set<string>(allActions);\n this.processedActions.push(...actions);\n this.extendedConfigs = (this.configs ?? []).map((c) => ({\n config: c\n }));\n }\n\n public processAction(actionDispatcher: ActionDispatcher, state: State, action: Action): void {\n this.processActionAsClosingOne(action);\n this.processActionAsOpeningOne(state, action);\n }\n\n private processActionAsOpeningOne(state: State, action: Action): void {\n const extendedConfig = this.extendedConfigs.find((c) => c.config.openingAction === action.type);\n if (extendedConfig) {\n const beforeOpeningDialog = extendedConfig.config.beforeOpeningDialog;\n if (beforeOpeningDialog) {\n runInInjectionContext(this.injector, () => beforeOpeningDialog(state));\n }\n extendedConfig.dialog = this.matDialog.open(extendedConfig.config.component, extendedConfig.config.matDialogConfig);\n }\n }\n\n private processActionAsClosingOne(action: Action): void {\n const extendedConfigs = this.extendedConfigs.filter((c) => c.config.closingActions.includes(action.type));\n extendedConfigs.forEach((config) => {\n config.dialog?.close();\n config.dialog = undefined;\n });\n }\n}\n","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\n\nimport { provideEffects } from 'ngssm-store';\n\nimport { MatDialogOpeningEffect } from './mat-dialog-opening.effect';\n\nexport const provideNgssmMatDialog = (): EnvironmentProviders => {\n return makeEnvironmentProviders([provideEffects(MatDialogOpeningEffect)]);\n};\n","/*\n * Public API Surface of ngssm-toolkit\n */\n\nexport * from './lib/overlay';\nexport * from './lib/default-error-state-matcher';\nexport * from './lib/not-found.component';\nexport * from './lib/file-picker';\nexport * from './lib/notification';\nexport * from './lib/regex-editor';\nexport * from './lib/confirmation-dialog';\nexport * from './lib/object-helpers';\nexport * from './lib/ngssm-component-display.directive';\nexport * from './lib/ngssm-help/ngssm-help.component';\nexport * from './lib/blob-helpers';\nexport * from './lib/luxon-helpers';\nexport * from './lib/mat-dialog';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ngssm-toolkit",
3
- "version": "21.1.1",
3
+ "version": "21.1.2",
4
4
  "description": "NgSsm - Utilities for angular applications.",
5
5
  "author": "Lion Marc",
6
6
  "license": "MIT",