ngssm-toolkit 22.0.0 → 22.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { signal, Component, Injectable, inject, Injector, ElementRef, ViewContainerRef, Renderer2, input, effect, Directive, Pipe, Input, HostBinding, ViewChild, ChangeDetectionStrategy, InjectionToken, makeEnvironmentProviders, EnvironmentInjector, runInInjectionContext } from '@angular/core';
2
+ import { signal, Component, Injectable, inject, Injector, ElementRef, ViewContainerRef, Renderer2, input, effect, Directive, Pipe, Input, HostBinding, ViewChild, InjectionToken, makeEnvironmentProviders, EnvironmentInjector, runInInjectionContext } from '@angular/core';
3
3
  import { OverlayContainer, Overlay, createOverlayRef, createRepositionScrollStrategy } from '@angular/cdk/overlay';
4
4
  import { TemplatePortal, ComponentPortal } from '@angular/cdk/portal';
5
5
  import { Logger, provideEffects } from 'ngssm-store';
@@ -27,8 +27,8 @@ import { DateTime } from 'luxon';
27
27
  class NgssmMessageOverlayComponent {
28
28
  message = signal('', /* @ts-ignore */
29
29
  ...(ngDevMode ? [{ debugName: "message" }] : /* istanbul ignore next */ []));
30
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: NgssmMessageOverlayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
31
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.1", type: NgssmMessageOverlayComponent, isStandalone: true, selector: "ngssm-message-overlay", ngImport: i0, template: `
30
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: NgssmMessageOverlayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
31
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.1", type: NgssmMessageOverlayComponent, isStandalone: true, selector: "ngssm-message-overlay", ngImport: i0, template: `
32
32
  <mat-card>
33
33
  <mat-card-content class="message-container">
34
34
  <mat-spinner></mat-spinner>
@@ -37,7 +37,7 @@ class NgssmMessageOverlayComponent {
37
37
  </mat-card>
38
38
  `, 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"] }] });
39
39
  }
40
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: NgssmMessageOverlayComponent, decorators: [{
40
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: NgssmMessageOverlayComponent, decorators: [{
41
41
  type: Component,
42
42
  args: [{ selector: 'ngssm-message-overlay', imports: [MatCardModule, MatProgressSpinnerModule], template: `
43
43
  <mat-card>
@@ -57,10 +57,10 @@ class NgssmOverlayContainer extends OverlayContainer {
57
57
  getContainerElement() {
58
58
  return this.elementRef?.nativeElement;
59
59
  }
60
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: NgssmOverlayContainer, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
61
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: NgssmOverlayContainer });
60
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: NgssmOverlayContainer, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
61
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: NgssmOverlayContainer });
62
62
  }
63
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: NgssmOverlayContainer, decorators: [{
63
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: NgssmOverlayContainer, decorators: [{
64
64
  type: Injectable
65
65
  }] });
66
66
 
@@ -118,10 +118,10 @@ class NgssmOverlayBuilder {
118
118
  hideOverlay() {
119
119
  this.overlayRef.detach();
120
120
  }
121
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: NgssmOverlayBuilder, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
122
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: NgssmOverlayBuilder });
121
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: NgssmOverlayBuilder, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
122
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: NgssmOverlayBuilder });
123
123
  }
124
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: NgssmOverlayBuilder, decorators: [{
124
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: NgssmOverlayBuilder, decorators: [{
125
125
  type: Injectable
126
126
  }], ctorParameters: () => [] });
127
127
 
@@ -151,10 +151,10 @@ class NgssmComponentOverlayDirective {
151
151
  }
152
152
  });
153
153
  }
154
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: NgssmComponentOverlayDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
155
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.1", 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 });
154
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: NgssmComponentOverlayDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
155
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.1", 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 });
156
156
  }
157
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: NgssmComponentOverlayDirective, decorators: [{
157
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: NgssmComponentOverlayDirective, decorators: [{
158
158
  type: Directive,
159
159
  args: [{
160
160
  selector: '[ngssmDisplayOverlay]',
@@ -163,10 +163,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImpor
163
163
  }], 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 }] }] } });
164
164
 
165
165
  class NgssmEmptyOverlayComponent {
166
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: NgssmEmptyOverlayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
167
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.1", type: NgssmEmptyOverlayComponent, isStandalone: true, selector: "ngssm-empty-overlay", ngImport: i0, template: ``, isInline: true });
166
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: NgssmEmptyOverlayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
167
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.1", type: NgssmEmptyOverlayComponent, isStandalone: true, selector: "ngssm-empty-overlay", ngImport: i0, template: ``, isInline: true });
168
168
  }
169
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: NgssmEmptyOverlayComponent, decorators: [{
169
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: NgssmEmptyOverlayComponent, decorators: [{
170
170
  type: Component,
171
171
  args: [{ selector: 'ngssm-empty-overlay', template: `` }]
172
172
  }] });
@@ -179,10 +179,10 @@ class DefaultErrorStateMatcher {
179
179
  const useDefaultErrorStateMatcher = { provide: ErrorStateMatcher, useClass: DefaultErrorStateMatcher };
180
180
 
181
181
  class NotFoundComponent {
182
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: NotFoundComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
183
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.1", 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"] });
182
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: NotFoundComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
183
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.1", 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"] });
184
184
  }
185
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: NotFoundComponent, decorators: [{
185
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: NotFoundComponent, decorators: [{
186
186
  type: Component,
187
187
  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"] }]
188
188
  }] });
@@ -204,10 +204,10 @@ class NgssmFileSizePipe {
204
204
  }
205
205
  return `${bytes.toFixed(+precision)} ${this.units[unit]}`;
206
206
  }
207
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: NgssmFileSizePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
208
- static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.0.1", ngImport: i0, type: NgssmFileSizePipe, isStandalone: true, name: "ngssmFileSize" });
207
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: NgssmFileSizePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
208
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.1.1", ngImport: i0, type: NgssmFileSizePipe, isStandalone: true, name: "ngssmFileSize" });
209
209
  }
210
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: NgssmFileSizePipe, decorators: [{
210
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: NgssmFileSizePipe, decorators: [{
211
211
  type: Pipe,
212
212
  args: [{
213
213
  name: 'ngssmFileSize'
@@ -326,10 +326,10 @@ class NgssmFilePickerComponent {
326
326
  this.onChangeCallback(this.value);
327
327
  }
328
328
  }
329
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: NgssmFilePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
330
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.1", 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\">\n {{ $safeNavigationMigration(value?.size) | ngssmFileSize }}, last modified on {{ lastModificationDate }}\n </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" }] });
329
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: NgssmFilePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
330
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.1", 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\">\n {{ $safeNavigationMigration(value?.size) | ngssmFileSize }}, last modified on {{ lastModificationDate }}\n </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" }] });
331
331
  }
332
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: NgssmFilePickerComponent, decorators: [{
332
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: NgssmFilePickerComponent, decorators: [{
333
333
  type: Component,
334
334
  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\">\n {{ $safeNavigationMigration(value?.size) | ngssmFileSize }}, last modified on {{ lastModificationDate }}\n </div>\n }\n </div>\n }\n</div>\n" }]
335
335
  }], ctorParameters: () => [], propDecorators: { fileInput: [{
@@ -346,22 +346,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImpor
346
346
 
347
347
  class NgssmNotificationErrorComponent {
348
348
  message = inject(MAT_SNACK_BAR_DATA);
349
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: NgssmNotificationErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
350
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.1", 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 });
349
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: NgssmNotificationErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
350
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.1", 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"] }] });
351
351
  }
352
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: NgssmNotificationErrorComponent, decorators: [{
352
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: NgssmNotificationErrorComponent, decorators: [{
353
353
  type: Component,
354
- 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"] }]
354
+ args: [{ selector: 'ngssm-notification-error', imports: [MatIconModule], 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"] }]
355
355
  }] });
356
356
 
357
357
  class NgssmNotificationSuccessComponent {
358
358
  message = inject(MAT_SNACK_BAR_DATA);
359
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: NgssmNotificationSuccessComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
360
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.1", 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 });
359
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: NgssmNotificationSuccessComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
360
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.1", 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"] }] });
361
361
  }
362
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: NgssmNotificationSuccessComponent, decorators: [{
362
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: NgssmNotificationSuccessComponent, decorators: [{
363
363
  type: Component,
364
- 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"] }]
364
+ args: [{ selector: 'ngssm-notification-success', imports: [MatIconModule], 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"] }]
365
365
  }] });
366
366
 
367
367
  class NgssmNotifierService {
@@ -378,10 +378,10 @@ class NgssmNotifierService {
378
378
  data: message
379
379
  });
380
380
  }
381
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: NgssmNotifierService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
382
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: NgssmNotifierService, providedIn: 'root' });
381
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: NgssmNotifierService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
382
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: NgssmNotifierService, providedIn: 'root' });
383
383
  }
384
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: NgssmNotifierService, decorators: [{
384
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: NgssmNotifierService, decorators: [{
385
385
  type: Injectable,
386
386
  args: [{
387
387
  providedIn: 'root'
@@ -417,12 +417,12 @@ const defaultRegexEditorValidator = {
417
417
 
418
418
  class NgssmConfirmationDialogComponent {
419
419
  data = inject(MAT_DIALOG_DATA);
420
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: NgssmConfirmationDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
421
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.1", 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 });
420
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: NgssmConfirmationDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
421
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.1", 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"] }] });
422
422
  }
423
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: NgssmConfirmationDialogComponent, decorators: [{
423
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: NgssmConfirmationDialogComponent, decorators: [{
424
424
  type: Component,
425
- 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"] }]
425
+ args: [{ selector: 'ngssm-confirmation-dialog', imports: [MatDialogContent, MatDialogActions, MatDialogClose, MatButton], 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"] }]
426
426
  }] });
427
427
 
428
428
  class NgssmConfirmationDialogService {
@@ -437,10 +437,10 @@ class NgssmConfirmationDialogService {
437
437
  })
438
438
  .afterClosed();
439
439
  }
440
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: NgssmConfirmationDialogService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
441
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: NgssmConfirmationDialogService, providedIn: 'root' });
440
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: NgssmConfirmationDialogService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
441
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: NgssmConfirmationDialogService, providedIn: 'root' });
442
442
  }
443
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: NgssmConfirmationDialogService, decorators: [{
443
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: NgssmConfirmationDialogService, decorators: [{
444
444
  type: Injectable,
445
445
  args: [{
446
446
  providedIn: 'root'
@@ -469,10 +469,10 @@ class NgssmComponentDisplayDirective {
469
469
  this.componentAction(this.componentRef.instance);
470
470
  }
471
471
  }
472
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: NgssmComponentDisplayDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
473
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.1", type: NgssmComponentDisplayDirective, isStandalone: true, selector: "[ngssmComponentDisplay]", inputs: { ngssmComponentDisplay: "ngssmComponentDisplay", ngssmComponentAction: "ngssmComponentAction" }, ngImport: i0 });
472
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: NgssmComponentDisplayDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
473
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.1", type: NgssmComponentDisplayDirective, isStandalone: true, selector: "[ngssmComponentDisplay]", inputs: { ngssmComponentDisplay: "ngssmComponentDisplay", ngssmComponentAction: "ngssmComponentAction" }, ngImport: i0 });
474
474
  }
475
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: NgssmComponentDisplayDirective, decorators: [{
475
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: NgssmComponentDisplayDirective, decorators: [{
476
476
  type: Directive,
477
477
  args: [{
478
478
  selector: '[ngssmComponentDisplay]'
@@ -486,12 +486,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImpor
486
486
  class NgssmHelpComponent {
487
487
  help = input(/* @ts-ignore */
488
488
  ...(ngDevMode ? [undefined, { debugName: "help" }] : /* istanbul ignore next */ []));
489
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: NgssmHelpComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
490
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.1", 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 });
489
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: NgssmHelpComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
490
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.1", 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"] }] });
491
491
  }
492
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: NgssmHelpComponent, decorators: [{
492
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: NgssmHelpComponent, decorators: [{
493
493
  type: Component,
494
- 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" }]
494
+ args: [{ selector: 'ngssm-help', imports: [MatButtonModule, MatIconModule, MatMenuModule], 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" }]
495
495
  }], propDecorators: { help: [{ type: i0.Input, args: [{ isSignal: true, alias: "help", required: false }] }] } });
496
496
 
497
497
  const defaultBlobContentReaderAsString = (file) => {
@@ -565,10 +565,10 @@ class MatDialogOpeningEffect {
565
565
  config.dialog = undefined;
566
566
  });
567
567
  }
568
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: MatDialogOpeningEffect, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
569
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: MatDialogOpeningEffect });
568
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: MatDialogOpeningEffect, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
569
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: MatDialogOpeningEffect });
570
570
  }
571
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: MatDialogOpeningEffect, decorators: [{
571
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: MatDialogOpeningEffect, decorators: [{
572
572
  type: Injectable
573
573
  }], ctorParameters: () => [] });
574
574
 
@@ -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\">\n {{ $safeNavigationMigration(value?.size) | ngssmFileSize }}, last modified on {{ lastModificationDate }}\n </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, detail?: string): void {\n this.matSnackBar.openFromComponent(NgssmNotificationErrorComponent, {\n panelClass: 'ngssm-notification-panel',\n data: detail ? `${message}: ${detail}` : 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\">\n {{ $safeNavigationMigration(value?.size) | ngssmFileSize }}, last modified on {{ lastModificationDate }}\n </div>\n }\n </div>\n }\n</div>\n","import { Component, 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})\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, 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})\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, detail?: string): void {\n this.matSnackBar.openFromComponent(NgssmNotificationErrorComponent, {\n panelClass: 'ngssm-notification-panel',\n data: detail ? `${message}: ${detail}` : 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, 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})\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, 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})\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": "22.0.0",
3
+ "version": "22.1.0",
4
4
  "description": "NgSsm - Utilities for angular applications.",
5
5
  "author": "Lion Marc",
6
6
  "license": "MIT",