ngssm-toolkit 19.3.1 → 19.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,9 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Component, Injectable, inject, Input, Directive, Pipe, HostBinding, ViewChild, Optional, Self, Inject, ChangeDetectionStrategy, InjectionToken, EventEmitter, Output, makeEnvironmentProviders, runInInjectionContext } from '@angular/core';
2
+ import { Component, Injectable, inject, Input, Directive, Pipe, input, HostBinding, ViewChild, Optional, Self, Inject, ChangeDetectionStrategy, InjectionToken, EventEmitter, Output, makeEnvironmentProviders, runInInjectionContext } from '@angular/core';
3
3
  import { TemplatePortal, ComponentPortal } from '@angular/cdk/portal';
4
4
  import { Subject, BehaviorSubject, combineLatest } from 'rxjs';
5
+ import * as i1$3 from 'ngssm-store';
6
+ import { Logger, NgSsmComponent, provideEffects } from 'ngssm-store';
5
7
  import * as i1 from '@angular/common';
6
8
  import { CommonModule } from '@angular/common';
7
9
  import * as i4 from '@angular/material/card';
@@ -28,9 +30,7 @@ import * as i2 from '@angular/cdk/a11y';
28
30
  import { A11yModule } from '@angular/cdk/a11y';
29
31
  import * as i1$4 from '@angular/material/dialog';
30
32
  import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';
31
- import * as i1$3 from 'ngssm-store';
32
- import { NgSsmComponent, provideEffects } from 'ngssm-store';
33
- import * as i4$2 from '@angular/material/menu';
33
+ import * as i3$3 from '@angular/material/menu';
34
34
  import { MatMenuModule } from '@angular/material/menu';
35
35
  import { DateTime } from 'luxon';
36
36
 
@@ -78,11 +78,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImpor
78
78
  }], ctorParameters: () => [] });
79
79
 
80
80
  class NgssmOverlayBuilder {
81
+ static { this.nextId = 1; }
81
82
  constructor(elementRef, ngssmOverlay, viewContainerRef, renderer) {
82
83
  this.elementRef = elementRef;
83
84
  this.ngssmOverlay = ngssmOverlay;
84
85
  this.viewContainerRef = viewContainerRef;
86
+ this.logger = inject(Logger);
85
87
  this._overlayMessage$ = new BehaviorSubject('Please wait');
88
+ this.id = NgssmOverlayBuilder.nextId++;
89
+ this.logger.information(`[NgssmOverlayBuilder] Creating overlay ${this.id}`);
86
90
  renderer.setStyle(this.elementRef.nativeElement, 'position', 'relative');
87
91
  this.ngssmOverlay.setContainerRef(this.elementRef);
88
92
  this.overlayRef = this.ngssmOverlay.create({
@@ -91,6 +95,7 @@ class NgssmOverlayBuilder {
91
95
  });
92
96
  }
93
97
  ngOnDestroy() {
98
+ this.logger.information(`[NgssmOverlayBuilder] Destroying overlay ${this.id}`);
94
99
  this.overlayRef.detach();
95
100
  }
96
101
  set overlayMessage(value) {
@@ -226,10 +231,10 @@ class NgssmFilePickerComponent {
226
231
  static { this.nextId = 0; }
227
232
  constructor(ngControl) {
228
233
  this.ngControl = ngControl;
229
- this._displayDetails$ = new BehaviorSubject(true);
230
234
  this.onChangeCallback = noop;
231
235
  this._required = false;
232
236
  this._disabled = false;
237
+ this.displayDetails = input(true);
233
238
  this.id = `file-picker-${NgssmFilePickerComponent.nextId++}`;
234
239
  this.controlType = 'file-picker';
235
240
  this.placeholder = '';
@@ -273,12 +278,6 @@ class NgssmFilePickerComponent {
273
278
  }
274
279
  return '';
275
280
  }
276
- get displayDetails$() {
277
- return this._displayDetails$.asObservable();
278
- }
279
- set displayDetails(value) {
280
- this._displayDetails$.next(value);
281
- }
282
281
  setDescribedByIds() {
283
282
  // nothing to do
284
283
  }
@@ -333,11 +332,11 @@ class NgssmFilePickerComponent {
333
332
  }
334
333
  }
335
334
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: NgssmFilePickerComponent, deps: [{ token: i3$1.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component }); }
336
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.6", type: NgssmFilePickerComponent, isStandalone: true, selector: "ngssm-file-picker", inputs: { required: "required", disabled: "disabled", displayDetails: "displayDetails" }, host: { properties: { "id": "this.id" } }, providers: [{ provide: MatFormFieldControl, useExisting: NgssmFilePickerComponent }], viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"file-picker-container\" (drop)=\"onDrop($event)\" (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\" [ngClass]=\"{'picker-disabled': disabled}\">\n <input type=\"file\" class=\"hidden\" #fileInput (change)=\"onFileSelected()\">\n <div *ngIf=\"empty === false\" class=\"flex-column-stretch\">\n <div class=\"file-picker-file-name\">\n {{value?.name}}\n </div>\n <div class=\"file-picker-file-information\" *ngIf=\"(displayDetails$ | async) === true\">\n {{value?.size | ngssmFileSize}}, last modified on {{lastModificationDate}}\n </div>\n </div>\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: NgssmFileSizePipe, name: "ngssmFileSize" }] }); }
335
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.6", type: NgssmFilePickerComponent, isStandalone: true, selector: "ngssm-file-picker", inputs: { displayDetails: { classPropertyName: "displayDetails", publicName: "displayDetails", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: false, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null } }, host: { properties: { "id": "this.id" } }, providers: [{ provide: MatFormFieldControl, useExisting: NgssmFilePickerComponent }], viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true, static: true }], ngImport: i0, template: "<div\n class=\"file-picker-container\"\n (drop)=\"onDrop($event)\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n [ngClass]=\"{ 'picker-disabled': disabled }\">\n <input type=\"file\" class=\"hidden\" #fileInput (change)=\"onFileSelected()\" />\n @if (!empty) {\n <div class=\"flex-column-stretch\">\n <div class=\"file-picker-file-name\">\n {{ value?.name }}\n </div>\n @if (displayDetails()) {\n <div class=\"file-picker-file-information\">{{ value?.size | ngssmFileSize }}, last modified on {{ lastModificationDate }}</div>\n }\n </div>\n }\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: NgssmFileSizePipe, name: "ngssmFileSize" }] }); }
337
336
  }
338
337
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: NgssmFilePickerComponent, decorators: [{
339
338
  type: Component,
340
- args: [{ selector: 'ngssm-file-picker', imports: [CommonModule, NgssmFileSizePipe], providers: [{ provide: MatFormFieldControl, useExisting: NgssmFilePickerComponent }], template: "<div class=\"file-picker-container\" (drop)=\"onDrop($event)\" (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\" [ngClass]=\"{'picker-disabled': disabled}\">\n <input type=\"file\" class=\"hidden\" #fileInput (change)=\"onFileSelected()\">\n <div *ngIf=\"empty === false\" class=\"flex-column-stretch\">\n <div class=\"file-picker-file-name\">\n {{value?.name}}\n </div>\n <div class=\"file-picker-file-information\" *ngIf=\"(displayDetails$ | async) === true\">\n {{value?.size | ngssmFileSize}}, last modified on {{lastModificationDate}}\n </div>\n </div>\n</div>" }]
339
+ args: [{ selector: 'ngssm-file-picker', imports: [CommonModule, NgssmFileSizePipe], providers: [{ provide: MatFormFieldControl, useExisting: NgssmFilePickerComponent }], template: "<div\n class=\"file-picker-container\"\n (drop)=\"onDrop($event)\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n [ngClass]=\"{ 'picker-disabled': disabled }\">\n <input type=\"file\" class=\"hidden\" #fileInput (change)=\"onFileSelected()\" />\n @if (!empty) {\n <div class=\"flex-column-stretch\">\n <div class=\"file-picker-file-name\">\n {{ value?.name }}\n </div>\n @if (displayDetails()) {\n <div class=\"file-picker-file-information\">{{ value?.size | ngssmFileSize }}, last modified on {{ lastModificationDate }}</div>\n }\n </div>\n }\n</div>\n" }]
341
340
  }], ctorParameters: () => [{ type: i3$1.NgControl, decorators: [{
342
341
  type: Optional
343
342
  }, {
@@ -352,8 +351,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImpor
352
351
  type: Input
353
352
  }], disabled: [{
354
353
  type: Input
355
- }], displayDetails: [{
356
- type: Input
357
354
  }] } });
358
355
 
359
356
  class NgssmNotificationErrorComponent {
@@ -478,7 +475,7 @@ class NgssmRegexEditorComponent {
478
475
  };
479
476
  }
480
477
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: NgssmRegexEditorComponent, deps: [{ token: NGSSM_REGEX_EDITOR_VALIDATOR, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
481
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.6", type: NgssmRegexEditorComponent, isStandalone: true, selector: "ngssm-regex-editor", inputs: { regex: "regex" }, outputs: { closeEditor: "closeEditor" }, providers: [useDefaultErrorStateMatcher], ngImport: i0, template: "<mat-card class=\"flex-column-stretch fxFlex\" cdkTrapFocus [cdkTrapFocusAutoCapture]=\"true\">\n <mat-card-header>\n <mat-card-title>Regex Editor</mat-card-title>\n </mat-card-header>\n <mat-card-content class=\"flex-column-stretch fxFlex\">\n <mat-form-field class=\"with-margin-top-8\">\n <mat-label>Regular expression</mat-label>\n <input matInput [formControl]=\"regexControl\" cdkFocusInitial>\n <mat-error *ngIf=\"regexControl.errors?.['regex']\">\n {{regexControl.errors?.['regex']}}\n </mat-error>\n </mat-form-field>\n <div class=\"flex-row-center\">\n <mat-form-field class=\"fxFlex\">\n <mat-label>Test string</mat-label>\n <input matInput [formControl]=\"testStringControl\">\n </mat-form-field>\n <mat-icon class=\"fa-solid fa-check success with-margin-left-12\"\n *ngIf=\"(isRegexValid$ | async) === true\"></mat-icon>\n <mat-icon class=\"fa-solid fa-xmark failure with-margin-left-12\"\n *ngIf=\"(isRegexValid$ | async) === false\"></mat-icon>\n </div>\n </mat-card-content>\n <mat-card-actions class=\"flex-row-center\">\n <span class=\"fxFlex\"></span>\n <button mat-button (click)=\"cancel()\" id=\"cancelButton\">Cancel</button>\n <button mat-stroked-button color=\"primary\"\n [disabled]=\"regexControl.invalid || ((isRegexValid$ | async) === false)\" (click)=\"submit()\"\n id=\"submitButton\">\n Submit\n </button>\n </mat-card-actions>\n</mat-card>", styles: [":host{width:600px;height:250px;display:flex;flex-direction:column}:host .success{color:green}:host .failure{color:red}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i2.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i4.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i4.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i4.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i4.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i4.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3$2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
478
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.6", type: NgssmRegexEditorComponent, isStandalone: true, selector: "ngssm-regex-editor", inputs: { regex: "regex" }, outputs: { closeEditor: "closeEditor" }, providers: [useDefaultErrorStateMatcher], ngImport: i0, template: "<mat-card class=\"flex-column-stretch fxFlex\" cdkTrapFocus [cdkTrapFocusAutoCapture]=\"true\">\n <mat-card-header>\n <mat-card-title>Regex Editor</mat-card-title>\n </mat-card-header>\n <mat-card-content class=\"flex-column-stretch fxFlex\">\n <mat-form-field class=\"with-margin-top-8\">\n <mat-label>Regular expression</mat-label>\n <input matInput [formControl]=\"regexControl\" cdkFocusInitial />\n @if (regexControl.errors?.['regex']; as error) {\n <mat-error>\n {{ error }}\n </mat-error>\n }\n </mat-form-field>\n <div class=\"flex-row-center\">\n <mat-form-field class=\"fxFlex\">\n <mat-label>Test string</mat-label>\n <input matInput [formControl]=\"testStringControl\" />\n </mat-form-field>\n @if ((isRegexValid$ | async) === true) {\n <mat-icon class=\"fa-solid fa-check success with-margin-left-12\"></mat-icon>\n } @else if ((isRegexValid$ | async) === false) {\n <mat-icon class=\"fa-solid fa-xmark failure with-margin-left-12\"></mat-icon>\n }\n </div>\n </mat-card-content>\n <mat-card-actions class=\"flex-row-center\">\n <span class=\"fxFlex\"></span>\n <button mat-button (click)=\"cancel()\" id=\"cancelButton\">Cancel</button>\n <button\n mat-stroked-button\n color=\"primary\"\n [disabled]=\"regexControl.invalid || (isRegexValid$ | async) === false\"\n (click)=\"submit()\"\n id=\"submitButton\">\n Submit\n </button>\n </mat-card-actions>\n</mat-card>\n", styles: [":host{width:600px;height:250px;display:flex;flex-direction:column}:host .success{color:green}:host .failure{color:red}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i2.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i4.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i4.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i4.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i4.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i4.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3$2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
482
479
  }
483
480
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: NgssmRegexEditorComponent, decorators: [{
484
481
  type: Component,
@@ -491,7 +488,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImpor
491
488
  MatInputModule,
492
489
  MatButtonModule,
493
490
  MatIconModule
494
- ], providers: [useDefaultErrorStateMatcher], changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-card class=\"flex-column-stretch fxFlex\" cdkTrapFocus [cdkTrapFocusAutoCapture]=\"true\">\n <mat-card-header>\n <mat-card-title>Regex Editor</mat-card-title>\n </mat-card-header>\n <mat-card-content class=\"flex-column-stretch fxFlex\">\n <mat-form-field class=\"with-margin-top-8\">\n <mat-label>Regular expression</mat-label>\n <input matInput [formControl]=\"regexControl\" cdkFocusInitial>\n <mat-error *ngIf=\"regexControl.errors?.['regex']\">\n {{regexControl.errors?.['regex']}}\n </mat-error>\n </mat-form-field>\n <div class=\"flex-row-center\">\n <mat-form-field class=\"fxFlex\">\n <mat-label>Test string</mat-label>\n <input matInput [formControl]=\"testStringControl\">\n </mat-form-field>\n <mat-icon class=\"fa-solid fa-check success with-margin-left-12\"\n *ngIf=\"(isRegexValid$ | async) === true\"></mat-icon>\n <mat-icon class=\"fa-solid fa-xmark failure with-margin-left-12\"\n *ngIf=\"(isRegexValid$ | async) === false\"></mat-icon>\n </div>\n </mat-card-content>\n <mat-card-actions class=\"flex-row-center\">\n <span class=\"fxFlex\"></span>\n <button mat-button (click)=\"cancel()\" id=\"cancelButton\">Cancel</button>\n <button mat-stroked-button color=\"primary\"\n [disabled]=\"regexControl.invalid || ((isRegexValid$ | async) === false)\" (click)=\"submit()\"\n id=\"submitButton\">\n Submit\n </button>\n </mat-card-actions>\n</mat-card>", styles: [":host{width:600px;height:250px;display:flex;flex-direction:column}:host .success{color:green}:host .failure{color:red}\n"] }]
491
+ ], providers: [useDefaultErrorStateMatcher], changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-card class=\"flex-column-stretch fxFlex\" cdkTrapFocus [cdkTrapFocusAutoCapture]=\"true\">\n <mat-card-header>\n <mat-card-title>Regex Editor</mat-card-title>\n </mat-card-header>\n <mat-card-content class=\"flex-column-stretch fxFlex\">\n <mat-form-field class=\"with-margin-top-8\">\n <mat-label>Regular expression</mat-label>\n <input matInput [formControl]=\"regexControl\" cdkFocusInitial />\n @if (regexControl.errors?.['regex']; as error) {\n <mat-error>\n {{ error }}\n </mat-error>\n }\n </mat-form-field>\n <div class=\"flex-row-center\">\n <mat-form-field class=\"fxFlex\">\n <mat-label>Test string</mat-label>\n <input matInput [formControl]=\"testStringControl\" />\n </mat-form-field>\n @if ((isRegexValid$ | async) === true) {\n <mat-icon class=\"fa-solid fa-check success with-margin-left-12\"></mat-icon>\n } @else if ((isRegexValid$ | async) === false) {\n <mat-icon class=\"fa-solid fa-xmark failure with-margin-left-12\"></mat-icon>\n }\n </div>\n </mat-card-content>\n <mat-card-actions class=\"flex-row-center\">\n <span class=\"fxFlex\"></span>\n <button mat-button (click)=\"cancel()\" id=\"cancelButton\">Cancel</button>\n <button\n mat-stroked-button\n color=\"primary\"\n [disabled]=\"regexControl.invalid || (isRegexValid$ | async) === false\"\n (click)=\"submit()\"\n id=\"submitButton\">\n Submit\n </button>\n </mat-card-actions>\n</mat-card>\n", styles: [":host{width:600px;height:250px;display:flex;flex-direction:column}:host .success{color:green}:host .failure{color:red}\n"] }]
495
492
  }], ctorParameters: () => [{ type: undefined, decorators: [{
496
493
  type: Inject,
497
494
  args: [NGSSM_REGEX_EDITOR_VALIDATOR]
@@ -632,23 +629,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImpor
632
629
 
633
630
  class NgssmHelpComponent {
634
631
  constructor() {
635
- this._help$ = new BehaviorSubject(undefined);
636
- }
637
- set help(value) {
638
- this._help$.next(value ?? undefined);
639
- }
640
- get help$() {
641
- return this._help$.asObservable();
632
+ this.help = input();
642
633
  }
643
634
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: NgssmHelpComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
644
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.6", type: NgssmHelpComponent, isStandalone: true, selector: "ngssm-help", inputs: { help: "help" }, ngImport: i0, template: "<button mat-icon-button color=\"primary\" [matMenuTriggerFor]=\"help\" id=\"helpButton\">\n <mat-icon class=\"fa-solid fa-circle-question\"></mat-icon>\n</button>\n<mat-menu #help=\"matMenu\">\n <div class=\"ngssm-help-panel\" *ngIf=\"(help$ | async) === undefined;else withInnerHTML\">\n <ng-content></ng-content>\n </div>\n</mat-menu>\n\n<ng-template #withInnerHTML>\n <div class=\"ngssm-help-panel\" [innerHTML]=\"help$ | async\">\n </div>\n</ng-template>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3$2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i4$2.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: i4$2.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 }); }
635
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.6", 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: CommonModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3$2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i3$3.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$3.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 }); }
645
636
  }
646
637
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: NgssmHelpComponent, decorators: [{
647
638
  type: Component,
648
- args: [{ selector: 'ngssm-help', imports: [CommonModule, MatButtonModule, MatIconModule, MatMenuModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<button mat-icon-button color=\"primary\" [matMenuTriggerFor]=\"help\" id=\"helpButton\">\n <mat-icon class=\"fa-solid fa-circle-question\"></mat-icon>\n</button>\n<mat-menu #help=\"matMenu\">\n <div class=\"ngssm-help-panel\" *ngIf=\"(help$ | async) === undefined;else withInnerHTML\">\n <ng-content></ng-content>\n </div>\n</mat-menu>\n\n<ng-template #withInnerHTML>\n <div class=\"ngssm-help-panel\" [innerHTML]=\"help$ | async\">\n </div>\n</ng-template>" }]
649
- }], propDecorators: { help: [{
650
- type: Input
651
- }] } });
639
+ args: [{ selector: 'ngssm-help', imports: [CommonModule, 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" }]
640
+ }] });
652
641
 
653
642
  const defaultBlobContentReaderAsString = (file) => {
654
643
  const observable = new Subject();
@@ -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.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/regex-editor/ngssm-regex-editor/ngssm-regex-editor.component.ts","../../../projects/ngssm-toolkit/src/lib/regex-editor/ngssm-regex-editor/ngssm-regex-editor.component.html","../../../projects/ngssm-toolkit/src/lib/regex-editor/ngssm-regex-editor-toggle/ngssm-regex-editor-toggle.component.ts","../../../projects/ngssm-toolkit/src/lib/regex-editor/ngssm-regex-editor-toggle/ngssm-regex-editor-toggle.component.html","../../../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 { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { Observable, Subject } from 'rxjs';\n\n@Component({\n selector: 'ngssm-message-overlay',\n imports: [CommonModule, MatCardModule, MatProgressSpinnerModule],\n template: `\n <mat-card>\n <mat-card-content class=\"message-container\">\n <mat-spinner></mat-spinner>\n {{ message$ | async }}\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$: Observable<string> = new Subject<string>();\n}\n","import { ElementRef, Injectable } from '@angular/core';\nimport { Overlay } from '@angular/cdk/overlay';\n\n@Injectable()\nexport class NgssmOverlay extends Overlay {\n constructor() {\n super();\n }\n\n public setContainerRef(elementRef: ElementRef) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (this as any)._overlayContainer = {\n getContainerElement: () => elementRef.nativeElement\n };\n }\n}\n","import { ComponentType, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal, TemplatePortal } from '@angular/cdk/portal';\nimport { ElementRef, Injectable, OnDestroy, Renderer2, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { NgssmMessageOverlayComponent } from './ngssm-message-overlay.component';\nimport { NgssmOverlay } from './ngssm-overlay';\n\n@Injectable()\nexport class NgssmOverlayBuilder implements OnDestroy {\n private readonly _overlayMessage$ = new BehaviorSubject<string>('Please wait');\n\n private overlayRef: OverlayRef;\n\n public overLayTemplate: TemplateRef<unknown> | undefined;\n public overlayComponent: ComponentType<unknown> | undefined;\n\n constructor(\n private elementRef: ElementRef,\n private ngssmOverlay: NgssmOverlay,\n private viewContainerRef: ViewContainerRef,\n renderer: Renderer2\n ) {\n renderer.setStyle(this.elementRef.nativeElement, 'position', 'relative');\n this.ngssmOverlay.setContainerRef(this.elementRef);\n\n this.overlayRef = this.ngssmOverlay.create({\n positionStrategy: this.ngssmOverlay.position().global().centerHorizontally().centerVertically(),\n hasBackdrop: true\n });\n }\n\n public ngOnDestroy(): void {\n this.overlayRef.detach();\n }\n\n public set overlayMessage(value: string) {\n this._overlayMessage$.next(value);\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));\n if (this.overlayComponent === NgssmMessageOverlayComponent) {\n (ref.instance as NgssmMessageOverlayComponent).message$ = this._overlayMessage$.asObservable();\n }\n } else {\n const ref = this.overlayRef.attach(new ComponentPortal(NgssmMessageOverlayComponent));\n ref.instance.message$ = this._overlayMessage$.asObservable();\n }\n }\n\n public hideOverlay(): void {\n this.overlayRef.detach();\n }\n}\n","import { Directive, inject, Input, TemplateRef } from '@angular/core';\nimport { ComponentType } from '@angular/cdk/portal';\n\nimport { NgssmOverlayBuilder } from './ngssm-overlay-builder';\nimport { NgssmOverlay } from './ngssm-overlay';\n\n@Directive({\n selector: '[ngssmDisplayOverlay]',\n providers: [NgssmOverlayBuilder, NgssmOverlay]\n})\nexport class NgssmComponentOverlayDirective {\n private overlayBuilder = inject(NgssmOverlayBuilder);\n\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('overlayTemplate') set overLayTemplate(value: TemplateRef<unknown> | undefined | null) {\n this.overlayBuilder.overLayTemplate = value ?? undefined;\n }\n\n @Input() set overlayComponent(value: ComponentType<unknown> | undefined | null) {\n this.overlayBuilder.overlayComponent = value ?? undefined;\n }\n\n @Input() public set overlayMessage(value: string) {\n this.overlayBuilder.overlayMessage = value;\n }\n\n @Input('ngssmDisplayOverlay') public set displayOverlay(value: boolean) {\n if (value === true) {\n this.overlayBuilder.showOverlay();\n } else {\n this.overlayBuilder.hideOverlay();\n }\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ngssm-empty-overlay',\n standalone: true,\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 { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'ngssm-not-found',\n imports: [CommonModule],\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 standalone: true\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","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { CommonModule } from '@angular/common';\nimport { Component, ElementRef, HostBinding, Input, OnDestroy, Optional, Self, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { MatFormFieldControl } from '@angular/material/form-field';\nimport { BehaviorSubject, Observable, 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 private readonly _displayDetails$ = new BehaviorSubject<boolean>(true);\n\n private onChangeCallback: (_: unknown) => void = noop;\n private _required = false;\n private _disabled = false;\n\n @ViewChild('fileInput', { static: true }) fileInput: ElementRef | undefined;\n\n constructor(@Optional() @Self() public ngControl: NgControl) {\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 @HostBinding('id') public id = `file-picker-${NgssmFilePickerComponent.nextId++}`;\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 public get empty(): boolean {\n return this.value === null;\n }\n\n public get shouldLabelFloat(): boolean {\n return this.value !== null;\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 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 get displayDetails$(): Observable<boolean> {\n return this._displayDetails$.asObservable();\n }\n\n @Input()\n public set displayDetails(value: boolean) {\n this._displayDetails$.next(value);\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 class=\"file-picker-container\" (drop)=\"onDrop($event)\" (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\" [ngClass]=\"{'picker-disabled': disabled}\">\n <input type=\"file\" class=\"hidden\" #fileInput (change)=\"onFileSelected()\">\n <div *ngIf=\"empty === false\" class=\"flex-column-stretch\">\n <div class=\"file-picker-file-name\">\n {{value?.name}}\n </div>\n <div class=\"file-picker-file-information\" *ngIf=\"(displayDetails$ | async) === true\">\n {{value?.size | ngssmFileSize}}, last modified on {{lastModificationDate}}\n </div>\n </div>\n</div>","import { Component, ChangeDetectionStrategy, Inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\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: [CommonModule, MatIconModule],\n templateUrl: './ngssm-notification-error.component.html',\n styleUrls: ['./ngssm-notification-error.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NgssmNotificationErrorComponent {\n constructor(@Inject(MAT_SNACK_BAR_DATA) public message: string) {}\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';\nimport { CommonModule } from '@angular/common';\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: [CommonModule, MatIconModule],\n templateUrl: './ngssm-notification-success.component.html',\n styleUrls: ['./ngssm-notification-success.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NgssmNotificationSuccessComponent {\n constructor(@Inject(MAT_SNACK_BAR_DATA) public message: string) {}\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 { 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 constructor(private matSnackBar: MatSnackBar) {}\n\n public notifyError(message: string): void {\n this.matSnackBar.openFromComponent(NgssmNotificationErrorComponent, {\n panelClass: 'ngssm-notification-panel',\n data: message\n });\n }\n\n public notifySuccess(message: string): void {\n this.matSnackBar.openFromComponent(NgssmNotificationSuccessComponent, {\n panelClass: 'ngssm-notification-panel',\n data: message\n });\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport 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 NGSSM_REGEX_EDITOR_VALIDATOR = new InjectionToken<RegexEditorValidator>('NGSSM_NGSSM_REGEX_EDITOR_VALIDATORREDUCER');\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, EventEmitter, Output, Input, Inject, Optional } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AbstractControl, FormControl, ReactiveFormsModule, ValidationErrors, Validators } from '@angular/forms';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { BehaviorSubject, combineLatest, Observable } from 'rxjs';\n\nimport { useDefaultErrorStateMatcher } from '../../default-error-state-matcher';\nimport { defaultRegexEditorValidator, NGSSM_REGEX_EDITOR_VALIDATOR, RegexEditorValidator } from '../regex-editor-validator';\n\n@Component({\n selector: 'ngssm-regex-editor',\n imports: [\n CommonModule,\n A11yModule,\n ReactiveFormsModule,\n MatCardModule,\n MatFormFieldModule,\n MatInputModule,\n MatButtonModule,\n MatIconModule\n ],\n providers: [useDefaultErrorStateMatcher],\n templateUrl: './ngssm-regex-editor.component.html',\n styleUrls: ['./ngssm-regex-editor.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NgssmRegexEditorComponent {\n private readonly regexValidator: RegexEditorValidator;\n private readonly _isRegexValid$ = new BehaviorSubject<boolean | null>(null);\n\n public readonly regexControl: FormControl<string | null>;\n public readonly testStringControl = new FormControl<string>('');\n\n @Output() closeEditor = new EventEmitter<string | undefined>();\n\n constructor(@Inject(NGSSM_REGEX_EDITOR_VALIDATOR) @Optional() validator?: RegexEditorValidator) {\n this.regexValidator = validator ?? defaultRegexEditorValidator;\n this.regexControl = new FormControl<string | null>(null, [Validators.required, (c) => this.validatedRegex(c)]);\n combineLatest([this.regexControl.valueChanges, this.testStringControl.valueChanges, this.regexControl.statusChanges]).subscribe(\n (values) => {\n if (this.regexControl.invalid || (values[1] ?? '').length === 0) {\n this._isRegexValid$.next(null);\n return;\n }\n\n const isMatch = this.regexValidator.isMatch(values[0] ?? '', values[1] ?? '');\n this._isRegexValid$.next(isMatch);\n }\n );\n }\n\n @Input() set regex(value: string | undefined | null) {\n this.regexControl.setValue(value ?? null);\n }\n\n public get isRegexValid$(): Observable<boolean | null> {\n return this._isRegexValid$.asObservable();\n }\n\n public cancel(): void {\n this.closeEditor.emit();\n }\n\n public submit(): void {\n this.closeEditor.emit(this.regexControl.value ?? '');\n }\n\n private validatedRegex(control: AbstractControl): ValidationErrors | null {\n const result = this.regexValidator.validatePattern(control.value);\n if (result.isValid) {\n return null;\n }\n\n return {\n regex: result.error\n };\n }\n}\n","<mat-card class=\"flex-column-stretch fxFlex\" cdkTrapFocus [cdkTrapFocusAutoCapture]=\"true\">\n <mat-card-header>\n <mat-card-title>Regex Editor</mat-card-title>\n </mat-card-header>\n <mat-card-content class=\"flex-column-stretch fxFlex\">\n <mat-form-field class=\"with-margin-top-8\">\n <mat-label>Regular expression</mat-label>\n <input matInput [formControl]=\"regexControl\" cdkFocusInitial>\n <mat-error *ngIf=\"regexControl.errors?.['regex']\">\n {{regexControl.errors?.['regex']}}\n </mat-error>\n </mat-form-field>\n <div class=\"flex-row-center\">\n <mat-form-field class=\"fxFlex\">\n <mat-label>Test string</mat-label>\n <input matInput [formControl]=\"testStringControl\">\n </mat-form-field>\n <mat-icon class=\"fa-solid fa-check success with-margin-left-12\"\n *ngIf=\"(isRegexValid$ | async) === true\"></mat-icon>\n <mat-icon class=\"fa-solid fa-xmark failure with-margin-left-12\"\n *ngIf=\"(isRegexValid$ | async) === false\"></mat-icon>\n </div>\n </mat-card-content>\n <mat-card-actions class=\"flex-row-center\">\n <span class=\"fxFlex\"></span>\n <button mat-button (click)=\"cancel()\" id=\"cancelButton\">Cancel</button>\n <button mat-stroked-button color=\"primary\"\n [disabled]=\"regexControl.invalid || ((isRegexValid$ | async) === false)\" (click)=\"submit()\"\n id=\"submitButton\">\n Submit\n </button>\n </mat-card-actions>\n</mat-card>","import { Component, ChangeDetectionStrategy, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { ConnectionPositionPair, OriginConnectionPosition, OverlayConnectionPosition, OverlayModule } from '@angular/cdk/overlay';\nimport { MatButtonModule } from '@angular/material/button';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { NgssmRegexEditorComponent } from '../ngssm-regex-editor/ngssm-regex-editor.component';\n\n@Component({\n selector: 'ngssm-regex-editor-toggle',\n imports: [CommonModule, MatIconModule, MatButtonModule, OverlayModule, NgssmRegexEditorComponent],\n templateUrl: './ngssm-regex-editor-toggle.component.html',\n styleUrls: ['./ngssm-regex-editor-toggle.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NgssmRegexEditorToggleComponent {\n private readonly _isOpen$ = new BehaviorSubject<boolean>(false);\n private readonly _isDisabled$ = new BehaviorSubject<boolean>(false);\n private readonly originPos: OriginConnectionPosition = {\n originX: 'start',\n originY: 'top'\n };\n private readonly overlayPos: OverlayConnectionPosition = {\n overlayX: 'start',\n overlayY: 'top'\n };\n\n public readonly positions: ConnectionPositionPair[] = [new ConnectionPositionPair(this.originPos, this.overlayPos, 0, 0)];\n\n public regexValue: string | undefined | null;\n\n @Input() public inputElement: HTMLInputElement | undefined;\n @Input() set disabled(value: boolean) {\n this._isDisabled$.next(value);\n }\n\n public get isOpen$(): Observable<boolean> {\n return this._isOpen$.asObservable();\n }\n\n public get isDisabled$(): Observable<boolean> {\n return this._isDisabled$.asObservable();\n }\n\n public openEditor(event: MouseEvent): void {\n if (this._isDisabled$.getValue()) {\n return;\n }\n\n event.stopPropagation();\n this.regexValue = this.inputElement?.value;\n this._isOpen$.next(true);\n }\n\n public closeEditor(regex: string | undefined): void {\n this._isOpen$.next(false);\n if (regex !== undefined && this.inputElement) {\n this.inputElement.value = regex;\n this.inputElement.dispatchEvent(new Event('input', { bubbles: true }));\n }\n }\n}\n","<button mat-icon-button (click)=\"openEditor($event)\" [disabled]=\"isDisabled$ | async\" color=\"primary\" id=\"toggleButton\">\n <mat-icon class=\"fa-solid fa-up-right-from-square ngssm-regex-editor-toggle-icon\" cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"></mat-icon>\n</button>\n\n<ng-template cdkConnectedOverlay [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"(isOpen$ | async) === true\" [cdkConnectedOverlayPositions]=\"positions\">\n <ngssm-regex-editor (closeEditor)=\"closeEditor($event)\" [regex]=\"regexValue\"></ngssm-regex-editor>\n</ng-template>","import { Component, ChangeDetectionStrategy, Inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatDialogModule, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\n\nimport { NgSsmComponent, Store } from 'ngssm-store';\n\nimport { NgssmConfirmationDialogConfig } from '../ngssm-confirmation-dialog-config';\n\n@Component({\n selector: 'ngssm-confirmation-dialog',\n imports: [CommonModule, MatDialogModule, MatButtonModule],\n templateUrl: './ngssm-confirmation-dialog.component.html',\n styleUrls: ['./ngssm-confirmation-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NgssmConfirmationDialogComponent extends NgSsmComponent {\n constructor(\n store: Store,\n @Inject(MAT_DIALOG_DATA) public data: NgssmConfirmationDialogConfig\n ) {\n super(store);\n }\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 { 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 constructor(private matDialog: 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, Input, Type, ViewContainerRef } from '@angular/core';\n\nexport type NgssmComponentAction = (component: unknown) => void;\n\n@Directive({\n selector: '[ngssmComponentDisplay]',\n standalone: true\n})\nexport class NgssmComponentDisplayDirective {\n private componentRef?: ComponentRef<unknown>;\n private componentAction?: NgssmComponentAction | null;\n\n constructor(private viewContainerRef: ViewContainerRef) {}\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';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n@Component({\n selector: 'ngssm-help',\n imports: [CommonModule, MatButtonModule, MatIconModule, MatMenuModule],\n templateUrl: './ngssm-help.component.html',\n styleUrls: [],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NgssmHelpComponent {\n private readonly _help$ = new BehaviorSubject<string | undefined>(undefined);\n\n @Input() public set help(value: string | null | undefined) {\n this._help$.next(value ?? undefined);\n }\n\n public get help$(): Observable<string | undefined> {\n return this._help$.asObservable();\n }\n}\n","<button mat-icon-button color=\"primary\" [matMenuTriggerFor]=\"help\" id=\"helpButton\">\n <mat-icon class=\"fa-solid fa-circle-question\"></mat-icon>\n</button>\n<mat-menu #help=\"matMenu\">\n <div class=\"ngssm-help-panel\" *ngIf=\"(help$ | async) === undefined;else withInnerHTML\">\n <ng-content></ng-content>\n </div>\n</mat-menu>\n\n<ng-template #withInnerHTML>\n <div class=\"ngssm-help-panel\" [innerHTML]=\"help$ | async\">\n </div>\n</ng-template>","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, Optional, 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 private readonly extendedConfigs: ExtendedConfig[];\n\n public readonly processedActions: string[] = [];\n\n constructor(\n @Inject(NGSSM_MAT_DIALOG_CONFIG) @Optional() private configs: NgssmMatDialogConfig[],\n private matDialog: MatDialog,\n private injector: EnvironmentInjector\n ) {\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":["i2","i1.NgssmOverlay","i1","i3","i7","i8","i4"],"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.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/regex-editor/ngssm-regex-editor/ngssm-regex-editor.component.ts","../../../projects/ngssm-toolkit/src/lib/regex-editor/ngssm-regex-editor/ngssm-regex-editor.component.html","../../../projects/ngssm-toolkit/src/lib/regex-editor/ngssm-regex-editor-toggle/ngssm-regex-editor-toggle.component.ts","../../../projects/ngssm-toolkit/src/lib/regex-editor/ngssm-regex-editor-toggle/ngssm-regex-editor-toggle.component.html","../../../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 { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { Observable, Subject } from 'rxjs';\n\n@Component({\n selector: 'ngssm-message-overlay',\n imports: [CommonModule, MatCardModule, MatProgressSpinnerModule],\n template: `\n <mat-card>\n <mat-card-content class=\"message-container\">\n <mat-spinner></mat-spinner>\n {{ message$ | async }}\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$: Observable<string> = new Subject<string>();\n}\n","import { ElementRef, Injectable } from '@angular/core';\nimport { Overlay } from '@angular/cdk/overlay';\n\n@Injectable()\nexport class NgssmOverlay extends Overlay {\n constructor() {\n super();\n }\n\n public setContainerRef(elementRef: ElementRef) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (this as any)._overlayContainer = {\n getContainerElement: () => elementRef.nativeElement\n };\n }\n}\n","import { ComponentType, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal, TemplatePortal } from '@angular/cdk/portal';\nimport { ElementRef, inject, Injectable, OnDestroy, Renderer2, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { Logger } from 'ngssm-store';\n\nimport { NgssmMessageOverlayComponent } from './ngssm-message-overlay.component';\nimport { NgssmOverlay } from './ngssm-overlay';\n\n@Injectable()\nexport class NgssmOverlayBuilder implements OnDestroy {\n private static nextId = 1;\n private readonly logger = inject(Logger);\n private readonly _overlayMessage$ = new BehaviorSubject<string>('Please wait');\n private id = NgssmOverlayBuilder.nextId++;\n\n private overlayRef: OverlayRef;\n\n public overLayTemplate: TemplateRef<unknown> | undefined;\n public overlayComponent: ComponentType<unknown> | undefined;\n\n constructor(\n private elementRef: ElementRef,\n private ngssmOverlay: NgssmOverlay,\n private viewContainerRef: ViewContainerRef,\n renderer: Renderer2\n ) {\n this.logger.information(`[NgssmOverlayBuilder] Creating overlay ${this.id}`);\n renderer.setStyle(this.elementRef.nativeElement, 'position', 'relative');\n this.ngssmOverlay.setContainerRef(this.elementRef);\n\n this.overlayRef = this.ngssmOverlay.create({\n positionStrategy: this.ngssmOverlay.position().global().centerHorizontally().centerVertically(),\n hasBackdrop: true\n });\n }\n\n public ngOnDestroy(): void {\n this.logger.information(`[NgssmOverlayBuilder] Destroying overlay ${this.id}`);\n this.overlayRef.detach();\n }\n\n public set overlayMessage(value: string) {\n this._overlayMessage$.next(value);\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));\n if (this.overlayComponent === NgssmMessageOverlayComponent) {\n (ref.instance as NgssmMessageOverlayComponent).message$ = this._overlayMessage$.asObservable();\n }\n } else {\n const ref = this.overlayRef.attach(new ComponentPortal(NgssmMessageOverlayComponent));\n ref.instance.message$ = this._overlayMessage$.asObservable();\n }\n }\n\n public hideOverlay(): void {\n this.overlayRef.detach();\n }\n}\n","import { Directive, inject, Input, TemplateRef } from '@angular/core';\nimport { ComponentType } from '@angular/cdk/portal';\n\nimport { NgssmOverlayBuilder } from './ngssm-overlay-builder';\nimport { NgssmOverlay } from './ngssm-overlay';\n\n@Directive({\n selector: '[ngssmDisplayOverlay]',\n providers: [NgssmOverlayBuilder, NgssmOverlay]\n})\nexport class NgssmComponentOverlayDirective {\n private overlayBuilder = inject(NgssmOverlayBuilder);\n\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('overlayTemplate') set overLayTemplate(value: TemplateRef<unknown> | undefined | null) {\n this.overlayBuilder.overLayTemplate = value ?? undefined;\n }\n\n @Input() set overlayComponent(value: ComponentType<unknown> | undefined | null) {\n this.overlayBuilder.overlayComponent = value ?? undefined;\n }\n\n @Input() public set overlayMessage(value: string) {\n this.overlayBuilder.overlayMessage = value;\n }\n\n @Input('ngssmDisplayOverlay') public set displayOverlay(value: boolean) {\n if (value === true) {\n this.overlayBuilder.showOverlay();\n } else {\n this.overlayBuilder.hideOverlay();\n }\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ngssm-empty-overlay',\n standalone: true,\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 { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'ngssm-not-found',\n imports: [CommonModule],\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 standalone: true\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","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { CommonModule } from '@angular/common';\nimport { Component, ElementRef, HostBinding, input, Input, OnDestroy, Optional, Self, 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 private onChangeCallback: (_: unknown) => void = noop;\n private _required = false;\n private _disabled = false;\n\n public readonly displayDetails = input(true);\n\n @ViewChild('fileInput', { static: true }) fileInput: ElementRef | undefined;\n\n constructor(@Optional() @Self() public ngControl: NgControl) {\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 @HostBinding('id') public id = `file-picker-${NgssmFilePickerComponent.nextId++}`;\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 public get empty(): boolean {\n return this.value === null;\n }\n\n public get shouldLabelFloat(): boolean {\n return this.value !== null;\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 errorState(): boolean {\n return this.ngControl.invalid ?? false;\n }\n\n public get lastModificationDate(): string {\n if (this.value) {\n const date = new Date(this.value.lastModified);\n return date.toISOString();\n }\n\n return '';\n }\n\n public setDescribedByIds(): void {\n // nothing to do\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n public onContainerClick(): void {\n if (!this.disabled) {\n this.fileInput?.nativeElement.click();\n }\n }\n\n public writeValue(obj: File | null | undefined): void {\n this.value = obj ?? null;\n if (!this.value && this.fileInput) {\n this.fileInput.nativeElement.value = null;\n }\n\n this.stateChanges.next();\n }\n\n public registerOnChange(fn: (_: unknown) => void): void {\n this.onChangeCallback = fn;\n }\n\n public registerOnTouched(): void {\n // nothing to do\n }\n\n public ngOnDestroy(): void {\n this.stateChanges.complete();\n }\n\n public onDrop(event: DragEvent): void {\n this.preventAndStop(event);\n if (!this.disabled && event.dataTransfer !== null) {\n this.updateValue(event.dataTransfer.files);\n }\n }\n\n public onDragOver(event: DragEvent): void {\n this.preventAndStop(event);\n }\n\n public onDragLeave(event: DragEvent): void {\n this.preventAndStop(event);\n }\n\n public onFileSelected(): void {\n this.updateValue(this.fileInput?.nativeElement.files);\n }\n\n private preventAndStop(event: DragEvent): void {\n event.stopPropagation();\n event.preventDefault();\n }\n\n private updateValue(files: FileList): void {\n if (files.length > 0) {\n this.value = files[0];\n this.stateChanges.next();\n this.onChangeCallback(this.value);\n }\n }\n}\n","<div\n class=\"file-picker-container\"\n (drop)=\"onDrop($event)\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n [ngClass]=\"{ 'picker-disabled': disabled }\">\n <input type=\"file\" class=\"hidden\" #fileInput (change)=\"onFileSelected()\" />\n @if (!empty) {\n <div class=\"flex-column-stretch\">\n <div class=\"file-picker-file-name\">\n {{ value?.name }}\n </div>\n @if (displayDetails()) {\n <div class=\"file-picker-file-information\">{{ value?.size | ngssmFileSize }}, last modified on {{ lastModificationDate }}</div>\n }\n </div>\n }\n</div>\n","import { Component, ChangeDetectionStrategy, Inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\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: [CommonModule, MatIconModule],\n templateUrl: './ngssm-notification-error.component.html',\n styleUrls: ['./ngssm-notification-error.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NgssmNotificationErrorComponent {\n constructor(@Inject(MAT_SNACK_BAR_DATA) public message: string) {}\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';\nimport { CommonModule } from '@angular/common';\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: [CommonModule, MatIconModule],\n templateUrl: './ngssm-notification-success.component.html',\n styleUrls: ['./ngssm-notification-success.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NgssmNotificationSuccessComponent {\n constructor(@Inject(MAT_SNACK_BAR_DATA) public message: string) {}\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 { 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 constructor(private matSnackBar: MatSnackBar) {}\n\n public notifyError(message: string): void {\n this.matSnackBar.openFromComponent(NgssmNotificationErrorComponent, {\n panelClass: 'ngssm-notification-panel',\n data: message\n });\n }\n\n public notifySuccess(message: string): void {\n this.matSnackBar.openFromComponent(NgssmNotificationSuccessComponent, {\n panelClass: 'ngssm-notification-panel',\n data: message\n });\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport 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 NGSSM_REGEX_EDITOR_VALIDATOR = new InjectionToken<RegexEditorValidator>('NGSSM_NGSSM_REGEX_EDITOR_VALIDATORREDUCER');\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, EventEmitter, Output, Input, Inject, Optional } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AbstractControl, FormControl, ReactiveFormsModule, ValidationErrors, Validators } from '@angular/forms';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { BehaviorSubject, combineLatest, Observable } from 'rxjs';\n\nimport { useDefaultErrorStateMatcher } from '../../default-error-state-matcher';\nimport { defaultRegexEditorValidator, NGSSM_REGEX_EDITOR_VALIDATOR, RegexEditorValidator } from '../regex-editor-validator';\n\n@Component({\n selector: 'ngssm-regex-editor',\n imports: [\n CommonModule,\n A11yModule,\n ReactiveFormsModule,\n MatCardModule,\n MatFormFieldModule,\n MatInputModule,\n MatButtonModule,\n MatIconModule\n ],\n providers: [useDefaultErrorStateMatcher],\n templateUrl: './ngssm-regex-editor.component.html',\n styleUrls: ['./ngssm-regex-editor.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NgssmRegexEditorComponent {\n private readonly regexValidator: RegexEditorValidator;\n private readonly _isRegexValid$ = new BehaviorSubject<boolean | null>(null);\n\n public readonly regexControl: FormControl<string | null>;\n public readonly testStringControl = new FormControl<string>('');\n\n @Output() closeEditor = new EventEmitter<string | undefined>();\n\n constructor(@Inject(NGSSM_REGEX_EDITOR_VALIDATOR) @Optional() validator?: RegexEditorValidator) {\n this.regexValidator = validator ?? defaultRegexEditorValidator;\n this.regexControl = new FormControl<string | null>(null, [Validators.required, (c) => this.validatedRegex(c)]);\n combineLatest([this.regexControl.valueChanges, this.testStringControl.valueChanges, this.regexControl.statusChanges]).subscribe(\n (values) => {\n if (this.regexControl.invalid || (values[1] ?? '').length === 0) {\n this._isRegexValid$.next(null);\n return;\n }\n\n const isMatch = this.regexValidator.isMatch(values[0] ?? '', values[1] ?? '');\n this._isRegexValid$.next(isMatch);\n }\n );\n }\n\n @Input() set regex(value: string | undefined | null) {\n this.regexControl.setValue(value ?? null);\n }\n\n public get isRegexValid$(): Observable<boolean | null> {\n return this._isRegexValid$.asObservable();\n }\n\n public cancel(): void {\n this.closeEditor.emit();\n }\n\n public submit(): void {\n this.closeEditor.emit(this.regexControl.value ?? '');\n }\n\n private validatedRegex(control: AbstractControl): ValidationErrors | null {\n const result = this.regexValidator.validatePattern(control.value);\n if (result.isValid) {\n return null;\n }\n\n return {\n regex: result.error\n };\n }\n}\n","<mat-card class=\"flex-column-stretch fxFlex\" cdkTrapFocus [cdkTrapFocusAutoCapture]=\"true\">\n <mat-card-header>\n <mat-card-title>Regex Editor</mat-card-title>\n </mat-card-header>\n <mat-card-content class=\"flex-column-stretch fxFlex\">\n <mat-form-field class=\"with-margin-top-8\">\n <mat-label>Regular expression</mat-label>\n <input matInput [formControl]=\"regexControl\" cdkFocusInitial />\n @if (regexControl.errors?.['regex']; as error) {\n <mat-error>\n {{ error }}\n </mat-error>\n }\n </mat-form-field>\n <div class=\"flex-row-center\">\n <mat-form-field class=\"fxFlex\">\n <mat-label>Test string</mat-label>\n <input matInput [formControl]=\"testStringControl\" />\n </mat-form-field>\n @if ((isRegexValid$ | async) === true) {\n <mat-icon class=\"fa-solid fa-check success with-margin-left-12\"></mat-icon>\n } @else if ((isRegexValid$ | async) === false) {\n <mat-icon class=\"fa-solid fa-xmark failure with-margin-left-12\"></mat-icon>\n }\n </div>\n </mat-card-content>\n <mat-card-actions class=\"flex-row-center\">\n <span class=\"fxFlex\"></span>\n <button mat-button (click)=\"cancel()\" id=\"cancelButton\">Cancel</button>\n <button\n mat-stroked-button\n color=\"primary\"\n [disabled]=\"regexControl.invalid || (isRegexValid$ | async) === false\"\n (click)=\"submit()\"\n id=\"submitButton\">\n Submit\n </button>\n </mat-card-actions>\n</mat-card>\n","import { Component, ChangeDetectionStrategy, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { ConnectionPositionPair, OriginConnectionPosition, OverlayConnectionPosition, OverlayModule } from '@angular/cdk/overlay';\nimport { MatButtonModule } from '@angular/material/button';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { NgssmRegexEditorComponent } from '../ngssm-regex-editor/ngssm-regex-editor.component';\n\n@Component({\n selector: 'ngssm-regex-editor-toggle',\n imports: [CommonModule, MatIconModule, MatButtonModule, OverlayModule, NgssmRegexEditorComponent],\n templateUrl: './ngssm-regex-editor-toggle.component.html',\n styleUrls: ['./ngssm-regex-editor-toggle.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NgssmRegexEditorToggleComponent {\n private readonly _isOpen$ = new BehaviorSubject<boolean>(false);\n private readonly _isDisabled$ = new BehaviorSubject<boolean>(false);\n private readonly originPos: OriginConnectionPosition = {\n originX: 'start',\n originY: 'top'\n };\n private readonly overlayPos: OverlayConnectionPosition = {\n overlayX: 'start',\n overlayY: 'top'\n };\n\n public readonly positions: ConnectionPositionPair[] = [new ConnectionPositionPair(this.originPos, this.overlayPos, 0, 0)];\n\n public regexValue: string | undefined | null;\n\n @Input() public inputElement: HTMLInputElement | undefined;\n @Input() set disabled(value: boolean) {\n this._isDisabled$.next(value);\n }\n\n public get isOpen$(): Observable<boolean> {\n return this._isOpen$.asObservable();\n }\n\n public get isDisabled$(): Observable<boolean> {\n return this._isDisabled$.asObservable();\n }\n\n public openEditor(event: MouseEvent): void {\n if (this._isDisabled$.getValue()) {\n return;\n }\n\n event.stopPropagation();\n this.regexValue = this.inputElement?.value;\n this._isOpen$.next(true);\n }\n\n public closeEditor(regex: string | undefined): void {\n this._isOpen$.next(false);\n if (regex !== undefined && this.inputElement) {\n this.inputElement.value = regex;\n this.inputElement.dispatchEvent(new Event('input', { bubbles: true }));\n }\n }\n}\n","<button mat-icon-button (click)=\"openEditor($event)\" [disabled]=\"isDisabled$ | async\" color=\"primary\" id=\"toggleButton\">\n <mat-icon class=\"fa-solid fa-up-right-from-square ngssm-regex-editor-toggle-icon\" cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"></mat-icon>\n</button>\n\n<ng-template cdkConnectedOverlay [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"(isOpen$ | async) === true\" [cdkConnectedOverlayPositions]=\"positions\">\n <ngssm-regex-editor (closeEditor)=\"closeEditor($event)\" [regex]=\"regexValue\"></ngssm-regex-editor>\n</ng-template>","import { Component, ChangeDetectionStrategy, Inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatDialogModule, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\n\nimport { NgSsmComponent, Store } from 'ngssm-store';\n\nimport { NgssmConfirmationDialogConfig } from '../ngssm-confirmation-dialog-config';\n\n@Component({\n selector: 'ngssm-confirmation-dialog',\n imports: [CommonModule, MatDialogModule, MatButtonModule],\n templateUrl: './ngssm-confirmation-dialog.component.html',\n styleUrls: ['./ngssm-confirmation-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NgssmConfirmationDialogComponent extends NgSsmComponent {\n constructor(\n store: Store,\n @Inject(MAT_DIALOG_DATA) public data: NgssmConfirmationDialogConfig\n ) {\n super(store);\n }\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 { 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 constructor(private matDialog: 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, Input, Type, ViewContainerRef } from '@angular/core';\n\nexport type NgssmComponentAction = (component: unknown) => void;\n\n@Directive({\n selector: '[ngssmComponentDisplay]',\n standalone: true\n})\nexport class NgssmComponentDisplayDirective {\n private componentRef?: ComponentRef<unknown>;\n private componentAction?: NgssmComponentAction | null;\n\n constructor(private viewContainerRef: ViewContainerRef) {}\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';\nimport { CommonModule } from '@angular/common';\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: [CommonModule, 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, Optional, 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 private readonly extendedConfigs: ExtendedConfig[];\n\n public readonly processedActions: string[] = [];\n\n constructor(\n @Inject(NGSSM_MAT_DIALOG_CONFIG) @Optional() private configs: NgssmMatDialogConfig[],\n private matDialog: MatDialog,\n private injector: EnvironmentInjector\n ) {\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":["i2","i1.NgssmOverlay","i1","i3","i7","i8","i4"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA2Ba,4BAA4B,CAAA;AArBzC,IAAA,WAAA,GAAA;AAsBS,QAAA,IAAA,CAAA,QAAQ,GAAuB,IAAI,OAAO,EAAU;AAC5D;8GAFY,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,EAlB7B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;AAOT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,uFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EARS,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,wBAAwB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAmBpD,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBArBxC,SAAS;+BACE,uBAAuB,EAAA,OAAA,EACxB,CAAC,YAAY,EAAE,aAAa,EAAE,wBAAwB,CAAC,EACtD,QAAA,EAAA;;;;;;;AAOT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,uFAAA,CAAA,EAAA;;;ACZG,MAAO,YAAa,SAAQ,OAAO,CAAA;AACvC,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;;AAGF,IAAA,eAAe,CAAC,UAAsB,EAAA;;QAE1C,IAAY,CAAC,iBAAiB,GAAG;AAChC,YAAA,mBAAmB,EAAE,MAAM,UAAU,CAAC;SACvC;;8GATQ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAZ,YAAY,EAAA,CAAA,CAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB;;;MCQY,mBAAmB,CAAA;aACf,IAAM,CAAA,MAAA,GAAG,CAAH,CAAK;AAU1B,IAAA,WAAA,CACU,UAAsB,EACtB,YAA0B,EAC1B,gBAAkC,EAC1C,QAAmB,EAAA;QAHX,IAAU,CAAA,UAAA,GAAV,UAAU;QACV,IAAY,CAAA,YAAA,GAAZ,YAAY;QACZ,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;AAZT,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,eAAe,CAAS,aAAa,CAAC;AACtE,QAAA,IAAA,CAAA,EAAE,GAAG,mBAAmB,CAAC,MAAM,EAAE;QAavC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAA0C,uCAAA,EAAA,IAAI,CAAC,EAAE,CAAE,CAAA,CAAC;AAC5E,QAAA,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,UAAU,EAAE,UAAU,CAAC;QACxE,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC;QAElD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;AACzC,YAAA,gBAAgB,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,kBAAkB,EAAE,CAAC,gBAAgB,EAAE;AAC/F,YAAA,WAAW,EAAE;AACd,SAAA,CAAC;;IAGG,WAAW,GAAA;QAChB,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAA4C,yCAAA,EAAA,IAAI,CAAC,EAAE,CAAE,CAAA,CAAC;AAC9E,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;;IAG1B,IAAW,cAAc,CAAC,KAAa,EAAA;AACrC,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;;IAG5B,WAAW,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;;AAClF,aAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AAChC,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAC9E,YAAA,IAAI,IAAI,CAAC,gBAAgB,KAAK,4BAA4B,EAAE;gBACzD,GAAG,CAAC,QAAyC,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE;;;aAE3F;AACL,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,eAAe,CAAC,4BAA4B,CAAC,CAAC;YACrF,GAAG,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE;;;IAIzD,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;;8GAnDf,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAnB,mBAAmB,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B;;;MCAY,8BAA8B,CAAA;AAJ3C,IAAA,WAAA,GAAA;AAKU,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAsBrD;;IAnBC,IAA8B,eAAe,CAAC,KAA8C,EAAA;QAC1F,IAAI,CAAC,cAAc,CAAC,eAAe,GAAG,KAAK,IAAI,SAAS;;IAG1D,IAAa,gBAAgB,CAAC,KAAgD,EAAA;QAC5E,IAAI,CAAC,cAAc,CAAC,gBAAgB,GAAG,KAAK,IAAI,SAAS;;IAG3D,IAAoB,cAAc,CAAC,KAAa,EAAA;AAC9C,QAAA,IAAI,CAAC,cAAc,CAAC,cAAc,GAAG,KAAK;;IAG5C,IAAyC,cAAc,CAAC,KAAc,EAAA;AACpE,QAAA,IAAI,KAAK,KAAK,IAAI,EAAE;AAClB,YAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;;aAC5B;AACL,YAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;;;8GApB1B,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,EAF9B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,CAAA,iBAAA,EAAA,iBAAA,CAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,CAAA,qBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,SAAA,EAAA,CAAC,mBAAmB,EAAE,YAAY,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAEnC,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAJ1C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,SAAS,EAAE,CAAC,mBAAmB,EAAE,YAAY;AAC9C,iBAAA;8BAK+B,eAAe,EAAA,CAAA;sBAA5C,KAAK;uBAAC,iBAAiB;gBAIX,gBAAgB,EAAA,CAAA;sBAA5B;gBAImB,cAAc,EAAA,CAAA;sBAAjC;gBAIwC,cAAc,EAAA,CAAA;sBAAtD,KAAK;uBAAC,qBAAqB;;;MClBjB,0BAA0B,CAAA;8GAA1B,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,+EAH3B,CAAE,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAGD,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBANtC,SAAS;+BACE,qBAAqB,EAAA,UAAA,EACnB,IAAI,EAAA,QAAA,EACN,CAAE,CAAA,EAAA;;;MCDD,wBAAwB,CAAA;AACnC,IAAA,YAAY,CAAC,OAA2B,EAAA;QACtC,OAAO,CAAC,EAAE,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;;AAExC;AAEM,MAAM,2BAA2B,GAAa,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,wBAAwB;;MCSxG,iBAAiB,CAAA;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAblB,CAA2D,yDAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2FAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAD3D,YAAY,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAcX,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAhB7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAClB,OAAA,EAAA,CAAC,YAAY,CAAC,YACb,CAA2D,yDAAA,CAAA,EAAA,MAAA,EAAA,CAAA,2FAAA,CAAA,EAAA;;;MCA1D,iBAAiB,CAAA;AAJ9B,IAAA,WAAA,GAAA;QAKmB,IAAK,CAAA,KAAA,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;AAoBrD;AAlBQ,IAAA,SAAS,CAAC,KAAc,EAAE,SAAS,GAAG,CAAC,EAAA;QAC5C,IAAI,KAAK,GAAG,KAAe;QAC3B,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACpC,YAAA,OAAO,GAAG;;QAGZ,IAAI,IAAI,GAAG,CAAC;AACZ,QAAA,OAAO,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YAChD,KAAK,IAAI,IAAI;AACb,YAAA,IAAI,EAAE;;AAGR,QAAA,IAAI,IAAI,KAAK,CAAC,EAAE;YACd,OAAO,CAAA,EAAG,KAAK,CAAA,CAAA,EAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA,CAAE;;AAGvC,QAAA,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAI,CAAA,EAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;;8GAnBhD,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,eAAe;AACrB,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACIM,MAAM,IAAI,GAAG,MAAK;;AAEzB;MASa,wBAAwB,CAAA;aACpB,IAAM,CAAA,MAAA,GAAG,CAAH,CAAK;AAU1B,IAAA,WAAA,CAAuC,SAAoB,EAAA;QAApB,IAAS,CAAA,SAAA,GAAT,SAAS;QARxC,IAAgB,CAAA,gBAAA,GAAyB,IAAI;QAC7C,IAAS,CAAA,SAAA,GAAG,KAAK;QACjB,IAAS,CAAA,SAAA,GAAG,KAAK;AAET,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC;AAalB,QAAA,IAAA,CAAA,EAAE,GAAG,CAAe,YAAA,EAAA,wBAAwB,CAAC,MAAM,EAAE,EAAE;QAC1E,IAAW,CAAA,WAAA,GAAG,aAAa;QAC3B,IAAW,CAAA,WAAA,GAAG,EAAE;QAChB,IAAO,CAAA,OAAA,GAAG,KAAK;AACf,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,OAAO,EAAQ;QAClC,IAAK,CAAA,KAAA,GAAgB,IAAI;;AAZ9B,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;;;AAG1B,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI;;;AAavC,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,KAAK,KAAK,IAAI;;AAG5B,IAAA,IAAW,gBAAgB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,KAAK,KAAK,IAAI;;AAG5B,IAAA,IACW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,SAAS;;IAGvB,IAAW,QAAQ,CAAC,KAAc,EAAA;AAChC,QAAA,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC;AAC7C,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;;AAG1B,IAAA,IACW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,SAAS;;IAGvB,IAAW,QAAQ,CAAC,KAAc,EAAA;AAChC,QAAA,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC;AAC7C,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;;AAG1B,IAAA,IAAW,UAAU,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,IAAI,KAAK;;AAGxC,IAAA,IAAW,oBAAoB,GAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;AAC9C,YAAA,OAAO,IAAI,CAAC,WAAW,EAAE;;AAG3B,QAAA,OAAO,EAAE;;IAGJ,iBAAiB,GAAA;;;AAIjB,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AACzC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;;IAGrB,gBAAgB,GAAA;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,KAAK,EAAE;;;AAIlC,IAAA,UAAU,CAAC,GAA4B,EAAA;AAC5C,QAAA,IAAI,CAAC,KAAK,GAAG,GAAG,IAAI,IAAI;QACxB,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE;YACjC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI;;AAG3C,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;;AAGnB,IAAA,gBAAgB,CAAC,EAAwB,EAAA;AAC9C,QAAA,IAAI,CAAC,gBAAgB,GAAG,EAAE;;IAGrB,iBAAiB,GAAA;;;IAIjB,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;;AAGvB,IAAA,MAAM,CAAC,KAAgB,EAAA;AAC5B,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,YAAY,KAAK,IAAI,EAAE;YACjD,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC;;;AAIvC,IAAA,UAAU,CAAC,KAAgB,EAAA;AAChC,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;;AAGrB,IAAA,WAAW,CAAC,KAAgB,EAAA;AACjC,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;;IAGrB,cAAc,GAAA;QACnB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,KAAK,CAAC;;AAG/C,IAAA,cAAc,CAAC,KAAgB,EAAA;QACrC,KAAK,CAAC,eAAe,EAAE;QACvB,KAAK,CAAC,cAAc,EAAE;;AAGhB,IAAA,WAAW,CAAC,KAAe,EAAA;AACjC,QAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACpB,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC;AACrB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;AACxB,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;;;8GArI1B,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,8gBAFxB,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,wBAAwB,EAAE,CAAC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClBtF,wnBAkBA,EDHY,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,wHAAE,iBAAiB,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAK9B,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAPpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,WACpB,CAAC,YAAY,EAAE,iBAAiB,CAAC,EAG/B,SAAA,EAAA,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAA,wBAA0B,EAAE,CAAC,EAAA,QAAA,EAAA,wnBAAA,EAAA;;0BAavE;;0BAAY;yCAFiB,SAAS,EAAA,CAAA;sBAAlD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBAWd,EAAE,EAAA,CAAA;sBAA3B,WAAW;uBAAC,IAAI;gBAkBN,QAAQ,EAAA,CAAA;sBADlB;gBAWU,QAAQ,EAAA,CAAA;sBADlB;;;MEvDU,+BAA+B,CAAA;AAC1C,IAAA,WAAA,CAA+C,OAAe,EAAA;QAAf,IAAO,CAAA,OAAA,GAAP,OAAO;;AAD3C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,+BAA+B,kBACtB,kBAAkB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAD3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,+BAA+B,ECZ5C,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,+KAEA,EDKY,MAAA,EAAA,CAAA,6DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,8BAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAK1B,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAP3C,SAAS;+BACE,0BAA0B,EAAA,OAAA,EAC3B,CAAC,YAAY,EAAE,aAAa,CAAC,EAAA,eAAA,EAGrB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,+KAAA,EAAA,MAAA,EAAA,CAAA,6DAAA,CAAA,EAAA;;0BAGlC,MAAM;2BAAC,kBAAkB;;;MED3B,iCAAiC,CAAA;AAC5C,IAAA,WAAA,CAA+C,OAAe,EAAA;QAAf,IAAO,CAAA,OAAA,GAAP,OAAO;;AAD3C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iCAAiC,kBACxB,kBAAkB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAD3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iCAAiC,ECZ9C,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,qMAGA,EDIY,MAAA,EAAA,CAAA,6DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,8BAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAK1B,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAP7C,SAAS;+BACE,4BAA4B,EAAA,OAAA,EAC7B,CAAC,YAAY,EAAE,aAAa,CAAC,EAAA,eAAA,EAGrB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,qMAAA,EAAA,MAAA,EAAA,CAAA,6DAAA,CAAA,EAAA;;0BAGlC,MAAM;2BAAC,kBAAkB;;;MEJ3B,oBAAoB,CAAA;AAC/B,IAAA,WAAA,CAAoB,WAAwB,EAAA;QAAxB,IAAW,CAAA,WAAA,GAAX,WAAW;;AAExB,IAAA,WAAW,CAAC,OAAe,EAAA;AAChC,QAAA,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,+BAA+B,EAAE;AAClE,YAAA,UAAU,EAAE,0BAA0B;AACtC,YAAA,IAAI,EAAE;AACP,SAAA,CAAC;;AAGG,IAAA,aAAa,CAAC,OAAe,EAAA;AAClC,QAAA,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,iCAAiC,EAAE;AACpE,YAAA,UAAU,EAAE,0BAA0B;AACtC,YAAA,IAAI,EAAE;AACP,SAAA,CAAC;;8GAdO,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,cAFnB,MAAM,EAAA,CAAA,CAAA;;2FAEP,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCIY,4BAA4B,GAAG,IAAI,cAAc,CAAuB,2CAA2C;AAEnH,MAAA,2BAA2B,GAAyB;AAC/D,IAAA,eAAe,EAAE,CAAC,OAAe,KAAI;AACnC,QAAA,IAAI;AACF,YAAA,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC;AACjC,YAAA,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;AAClB,gBAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;;;QAE1B,OAAO,KAAK,EAAE;YACd,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE;;AAG5D,QAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;KACzB;AACD,IAAA,OAAO,EAAE,CAAC,OAAe,EAAE,UAAkB,KAAI;AAC/C,QAAA,IAAI;AACF,YAAA,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC;AACjC,YAAA,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AAC1B,gBAAA,OAAO,IAAI;;;AAEb,QAAA,MAAM;AACN,YAAA,OAAO,KAAK;;AAGd,QAAA,OAAO,KAAK;;;;MCNH,yBAAyB,CAAA;AASpC,IAAA,WAAA,CAA8D,SAAgC,EAAA;AAP7E,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,eAAe,CAAiB,IAAI,CAAC;AAG3D,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,WAAW,CAAS,EAAE,CAAC;AAErD,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAsB;AAG5D,QAAA,IAAI,CAAC,cAAc,GAAG,SAAS,IAAI,2BAA2B;QAC9D,IAAI,CAAC,YAAY,GAAG,IAAI,WAAW,CAAgB,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9G,aAAa,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAC7H,CAAC,MAAM,KAAI;AACT,YAAA,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,MAAM,KAAK,CAAC,EAAE;AAC/D,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC9B;;YAGF,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAC7E,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;AACnC,SAAC,CACF;;IAGH,IAAa,KAAK,CAAC,KAAgC,EAAA;QACjD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC;;AAG3C,IAAA,IAAW,aAAa,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;;IAGpC,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;;IAGlB,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE,CAAC;;AAG9C,IAAA,cAAc,CAAC,OAAwB,EAAA;AAC7C,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC;AACjE,QAAA,IAAI,MAAM,CAAC,OAAO,EAAE;AAClB,YAAA,OAAO,IAAI;;QAGb,OAAO;YACL,KAAK,EAAE,MAAM,CAAC;SACf;;AAjDQ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,kBAShB,4BAA4B,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGATrC,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EALzB,CAAC,2BAA2B,CAAC,0BC1B1C,qgDAuCA,EAAA,MAAA,EAAA,CAAA,0HAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDtBI,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,UAAU,yLACV,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,aAAa,EACb,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,kBAAkB,uYAClB,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAOJ,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAjBrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EACrB,OAAA,EAAA;wBACP,YAAY;wBACZ,UAAU;wBACV,mBAAmB;wBACnB,aAAa;wBACb,kBAAkB;wBAClB,cAAc;wBACd,eAAe;wBACf;AACD,qBAAA,EAAA,SAAA,EACU,CAAC,2BAA2B,CAAC,EAGvB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,qgDAAA,EAAA,MAAA,EAAA,CAAA,0HAAA,CAAA,EAAA;;0BAWlC,MAAM;2BAAC,4BAA4B;;0BAAG;yCAFzC,WAAW,EAAA,CAAA;sBAApB;gBAkBY,KAAK,EAAA,CAAA;sBAAjB;;;MExCU,+BAA+B,CAAA;AAP5C,IAAA,WAAA,GAAA;AAQmB,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAC9C,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAClD,QAAA,IAAA,CAAA,SAAS,GAA6B;AACrD,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,OAAO,EAAE;SACV;AACgB,QAAA,IAAA,CAAA,UAAU,GAA8B;AACvD,YAAA,QAAQ,EAAE,OAAO;AACjB,YAAA,QAAQ,EAAE;SACX;AAEe,QAAA,IAAA,CAAA,SAAS,GAA6B,CAAC,IAAI,sBAAsB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAkC1H;IA7BC,IAAa,QAAQ,CAAC,KAAc,EAAA;AAClC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;;AAG/B,IAAA,IAAW,OAAO,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE;;AAGrC,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE;;AAGlC,IAAA,UAAU,CAAC,KAAiB,EAAA;AACjC,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE;YAChC;;QAGF,KAAK,CAAC,eAAe,EAAE;QACvB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE,KAAK;AAC1C,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;;AAGnB,IAAA,WAAW,CAAC,KAAyB,EAAA;AAC1C,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,YAAY,EAAE;AAC5C,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,KAAK;AAC/B,YAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;;;8GA3C/D,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA/B,+BAA+B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChB5C,8lBAQc,EAAA,MAAA,EAAA,CAAA,2KAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDGF,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,qEAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,EAAA,8BAAA,EAAA,qCAAA,EAAA,4BAAA,EAAA,4BAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,8BAAA,EAAA,kCAAA,EAAA,+BAAA,EAAA,mCAAA,EAAA,mCAAA,EAAA,yBAAA,EAAA,iCAAA,EAAA,sCAAA,EAAA,gCAAA,EAAA,iCAAA,EAAA,uCAAA,EAAA,kCAAA,EAAA,yBAAA,EAAA,wCAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,4DAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,yBAAyB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAKrF,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAP3C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2BAA2B,EAC5B,OAAA,EAAA,CAAC,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,EAAE,yBAAyB,CAAC,EAGhF,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,8lBAAA,EAAA,MAAA,EAAA,CAAA,2KAAA,CAAA,EAAA;8BAkB/B,YAAY,EAAA,CAAA;sBAA3B;gBACY,QAAQ,EAAA,CAAA;sBAApB;;;AEjBG,MAAO,gCAAiC,SAAQ,cAAc,CAAA;IAClE,WACE,CAAA,KAAY,EACoB,IAAmC,EAAA;QAEnE,KAAK,CAAC,KAAK,CAAC;QAFoB,IAAI,CAAA,IAAA,GAAJ,IAAI;;AAH3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gCAAgC,yCAGjC,eAAe,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAHd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gCAAgC,4GChB7C,6fAUA,EAAA,MAAA,EAAA,CAAA,6CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDCY,YAAY,EAAE,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,qfAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAK7C,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAP5C,SAAS;+BACE,2BAA2B,EAAA,OAAA,EAC5B,CAAC,YAAY,EAAE,eAAe,EAAE,eAAe,CAAC,EAAA,eAAA,EAGxC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,6fAAA,EAAA,MAAA,EAAA,CAAA,6CAAA,CAAA,EAAA;;0BAK5C,MAAM;2BAAC,eAAe;;;METd,8BAA8B,CAAA;AACzC,IAAA,WAAA,CAAoB,SAAoB,EAAA;QAApB,IAAS,CAAA,SAAA,GAAT,SAAS;;AAEtB,IAAA,yBAAyB,CAAC,MAAqC,EAAA;QACpE,OAAO,IAAI,CAAC;aACT,IAAI,CAAC,gCAAgC,EAAE;AACtC,YAAA,YAAY,EAAE,IAAI;AAClB,YAAA,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,SAAS,EAAE,MAAM,CAAC;SACnB;AACA,aAAA,WAAW,EAAE;;8GAXP,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,8BAA8B,cAF7B,MAAM,EAAA,CAAA,CAAA;;2FAEP,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAH1C,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACTY,MAAA,iBAAiB,GAAG,CAAc,KAAQ,KAAc,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK;;MCQpF,8BAA8B,CAAA;AAIzC,IAAA,WAAA,CAAoB,gBAAkC,EAAA;QAAlC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;;IAEpC,IAAoB,qBAAqB,CAAC,KAAuC,EAAA;AAC/E,QAAA,IAAI,CAAC,YAAY,GAAG,SAAS;AAC7B,QAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;QAC7B,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,KAAK,CAAC;YAChE,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,eAAe,EAAE;gBAC7C,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;;;;IAKtD,IAAoB,oBAAoB,CAAC,KAA8C,EAAA;AACrF,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK;QAC5B,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,eAAe,EAAE;YAC7C,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;;;8GApBzC,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA9B,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA9B,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAJ1C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,yBAAyB;AACnC,oBAAA,UAAU,EAAE;AACb,iBAAA;qFAOqB,qBAAqB,EAAA,CAAA;sBAAxC;gBAWmB,oBAAoB,EAAA,CAAA;sBAAvC;;;MCZU,kBAAkB,CAAA;AAP/B,IAAA,WAAA,GAAA;QAQkB,IAAI,CAAA,IAAA,GAAG,KAAK,EAA6B;AAC1D;8GAFY,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECb/B,iaAYA,EDJY,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,8BAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAK1D,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EACb,OAAA,EAAA,CAAC,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,CAAC,EAGrD,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,iaAAA,EAAA;;;AENpC,MAAA,gCAAgC,GAA8B,CAAC,IAAU,KAAwB;AAC5G,IAAA,MAAM,UAAU,GAAG,IAAI,OAAO,EAAU;AACxC,IAAA,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE;AAE/B,IAAA,MAAM,CAAC,SAAS,GAAG,MAAK;AACtB,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,MAAgB;AACpC,QAAA,MAAM,CAAC,MAAM,GAAG,IAAI;AACpB,QAAA,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;QACrB,UAAU,CAAC,QAAQ,EAAE;AACvB,KAAC;AAED,IAAA,MAAM,CAAC,OAAO,GAAG,CAAC,KAAK,KAAI;AACzB,QAAA,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC;AACzB,KAAC;AAED,IAAA,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;AAEvB,IAAA,OAAO,UAAU;AACnB;MAEa,6BAA6B,GAAG,IAAI,cAAc,CAA4B,+BAA+B;AAEnH,MAAM,kBAAkB,GAAG,MAA2B;AAC3D,IAAA,OAAO,wBAAwB,CAAC,CAAC,EAAE,OAAO,EAAE,6BAA6B,EAAE,QAAQ,EAAE,gCAAgC,EAAE,CAAC,CAAC;AAC3H;;MC3Ba,eAAe,GAAG,CAAC,IAAc,EAAE,KAAe,KAAY;AACzE,IAAA,IAAI,IAAI,GAAG,KAAK,EAAE;QAChB,OAAO,CAAC,CAAC;;AAGX,IAAA,IAAI,IAAI,GAAG,KAAK,EAAE;AAChB,QAAA,OAAO,CAAC;;AAGV,IAAA,OAAO,CAAC;AACV;MAEa,SAAS,GAAG,CAAC,KAAa,KAAe,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;;MCAhF,uBAAuB,GAAG,IAAI,cAAc,CAAuB,yBAAyB;MAE5F,4BAA4B,GAAG,CAAC,GAAG,OAA+B,KAA0B;AACvG,IAAA,OAAO,wBAAwB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,MAAM,EAAE,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACjI;;MCLa,sBAAsB,CAAA;AAKjC,IAAA,WAAA,CACuD,OAA+B,EAC5E,SAAoB,EACpB,QAA6B,EAAA;QAFgB,IAAO,CAAA,OAAA,GAAP,OAAO;QACpD,IAAS,CAAA,SAAA,GAAT,SAAS;QACT,IAAQ,CAAA,QAAA,GAAR,QAAQ;QALF,IAAgB,CAAA,gBAAA,GAAa,EAAE;AAO7C,QAAA,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC;AAC9F,QAAA,MAAM,OAAO,GAAG,IAAI,GAAG,CAAS,UAAU,CAAC;QAC3C,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;AACtC,QAAA,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM;AACtD,YAAA,MAAM,EAAE;AACT,SAAA,CAAC,CAAC;;AAGE,IAAA,aAAa,CAAC,gBAAkC,EAAE,KAAY,EAAE,MAAc,EAAA;AACnF,QAAA,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC;AACtC,QAAA,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,MAAM,CAAC;;IAGvC,yBAAyB,CAAC,KAAY,EAAE,MAAc,EAAA;QAC5D,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,KAAK,MAAM,CAAC,IAAI,CAAC;QAC/F,IAAI,cAAc,EAAE;AAClB,YAAA,MAAM,mBAAmB,GAAG,cAAc,CAAC,MAAM,CAAC,mBAAmB;YACrE,IAAI,mBAAmB,EAAE;AACvB,gBAAA,qBAAqB,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,mBAAmB,CAAC,KAAK,CAAC,CAAC;;YAExE,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,MAAM,CAAC,eAAe,CAAC;;;AAI/G,IAAA,yBAAyB,CAAC,MAAc,EAAA;QAC9C,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACzG,QAAA,eAAe,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AACjC,YAAA,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE;AACtB,YAAA,MAAM,CAAC,MAAM,GAAG,SAAS;AAC3B,SAAC,CAAC;;AAvCO,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,kBAMvB,uBAAuB,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHANtB,sBAAsB,EAAA,CAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC;;0BAOI,MAAM;2BAAC,uBAAuB;;0BAAG;;;ACb/B,MAAM,qBAAqB,GAAG,MAA2B;IAC9D,OAAO,wBAAwB,CAAC,CAAC,cAAc,CAAC,sBAAsB,CAAC,CAAC,CAAC;AAC3E;;ACRA;;AAEG;;ACFH;;AAEG;;;;"}
@@ -1,16 +1,16 @@
1
1
  import { ElementRef, OnDestroy } from '@angular/core';
2
2
  import { ControlValueAccessor, NgControl } from '@angular/forms';
3
3
  import { MatFormFieldControl } from '@angular/material/form-field';
4
- import { Observable, Subject } from 'rxjs';
4
+ import { Subject } from 'rxjs';
5
5
  import * as i0 from "@angular/core";
6
6
  export declare const noop: () => void;
7
7
  export declare class NgssmFilePickerComponent implements MatFormFieldControl<File>, ControlValueAccessor, OnDestroy {
8
8
  ngControl: NgControl;
9
9
  private static nextId;
10
- private readonly _displayDetails$;
11
10
  private onChangeCallback;
12
11
  private _required;
13
12
  private _disabled;
13
+ readonly displayDetails: import("@angular/core").InputSignal<boolean>;
14
14
  fileInput: ElementRef | undefined;
15
15
  constructor(ngControl: NgControl);
16
16
  id: string;
@@ -29,8 +29,6 @@ export declare class NgssmFilePickerComponent implements MatFormFieldControl<Fil
29
29
  set disabled(value: boolean);
30
30
  get errorState(): boolean;
31
31
  get lastModificationDate(): string;
32
- get displayDetails$(): Observable<boolean>;
33
- set displayDetails(value: boolean);
34
32
  setDescribedByIds(): void;
35
33
  setDisabledState(isDisabled: boolean): void;
36
34
  onContainerClick(): void;
@@ -45,5 +43,5 @@ export declare class NgssmFilePickerComponent implements MatFormFieldControl<Fil
45
43
  private preventAndStop;
46
44
  private updateValue;
47
45
  static ɵfac: i0.ɵɵFactoryDeclaration<NgssmFilePickerComponent, [{ optional: true; self: true; }]>;
48
- static ɵcmp: i0.ɵɵComponentDeclaration<NgssmFilePickerComponent, "ngssm-file-picker", never, { "required": { "alias": "required"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "displayDetails": { "alias": "displayDetails"; "required": false; }; }, {}, never, never, true, never>;
46
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgssmFilePickerComponent, "ngssm-file-picker", never, { "displayDetails": { "alias": "displayDetails"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, {}, never, never, true, never>;
49
47
  }
@@ -1,9 +1,6 @@
1
- import { Observable } from 'rxjs';
2
1
  import * as i0 from "@angular/core";
3
2
  export declare class NgssmHelpComponent {
4
- private readonly _help$;
5
- set help(value: string | null | undefined);
6
- get help$(): Observable<string | undefined>;
3
+ readonly help: import("@angular/core").InputSignal<string | null | undefined>;
7
4
  static ɵfac: i0.ɵɵFactoryDeclaration<NgssmHelpComponent, never>;
8
- static ɵcmp: i0.ɵɵComponentDeclaration<NgssmHelpComponent, "ngssm-help", never, { "help": { "alias": "help"; "required": false; }; }, {}, never, ["*"], true, never>;
5
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgssmHelpComponent, "ngssm-help", never, { "help": { "alias": "help"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
9
6
  }
@@ -6,7 +6,10 @@ export declare class NgssmOverlayBuilder implements OnDestroy {
6
6
  private elementRef;
7
7
  private ngssmOverlay;
8
8
  private viewContainerRef;
9
+ private static nextId;
10
+ private readonly logger;
9
11
  private readonly _overlayMessage$;
12
+ private id;
10
13
  private overlayRef;
11
14
  overLayTemplate: TemplateRef<unknown> | undefined;
12
15
  overlayComponent: ComponentType<unknown> | undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ngssm-toolkit",
3
- "version": "19.3.1",
3
+ "version": "19.3.2",
4
4
  "description": "NgSsm - Utilities for angular applications.",
5
5
  "author": "Lion Marc",
6
6
  "license": "MIT",