ngssm-toolkit 15.3.1 → 15.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.
@@ -6,17 +6,19 @@ import { MatFormFieldModule } from '@angular/material/form-field';
6
6
  import { MatInputModule } from '@angular/material/input';
7
7
  import { MatButtonModule } from '@angular/material/button';
8
8
  import { MatIconModule } from '@angular/material/icon';
9
+ import { A11yModule } from '@angular/cdk/a11y';
9
10
  import { BehaviorSubject, combineLatest } from 'rxjs';
10
11
  import { useDefaultErrorStateMatcher } from '../../default-error-state-matcher';
11
12
  import { defaultRegexEditorValidator, NGSSM_REGEX_EDITOR_VALIDATOR } from '../regex-editor-validator';
12
13
  import * as i0 from "@angular/core";
13
14
  import * as i1 from "@angular/common";
14
- import * as i2 from "@angular/forms";
15
- import * as i3 from "@angular/material/card";
16
- import * as i4 from "@angular/material/form-field";
17
- import * as i5 from "@angular/material/input";
18
- import * as i6 from "@angular/material/button";
19
- import * as i7 from "@angular/material/icon";
15
+ import * as i2 from "@angular/cdk/a11y";
16
+ import * as i3 from "@angular/forms";
17
+ import * as i4 from "@angular/material/card";
18
+ import * as i5 from "@angular/material/form-field";
19
+ import * as i6 from "@angular/material/input";
20
+ import * as i7 from "@angular/material/button";
21
+ import * as i8 from "@angular/material/icon";
20
22
  export class NgssmRegexEditorComponent {
21
23
  constructor(validator) {
22
24
  this._isRegexValid$ = new BehaviorSubject(null);
@@ -56,10 +58,19 @@ export class NgssmRegexEditorComponent {
56
58
  }
57
59
  }
58
60
  NgssmRegexEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NgssmRegexEditorComponent, deps: [{ token: NGSSM_REGEX_EDITOR_VALIDATOR, optional: true }], target: i0.ɵɵFactoryTarget.Component });
59
- NgssmRegexEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.3", 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\">\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\">\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: ReactiveFormsModule }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i3.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i3.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i3.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i3.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i6.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
61
+ NgssmRegexEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.3", 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.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.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.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"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i7.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
60
62
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NgssmRegexEditorComponent, decorators: [{
61
63
  type: Component,
62
- args: [{ selector: 'ngssm-regex-editor', standalone: true, imports: [CommonModule, ReactiveFormsModule, MatCardModule, MatFormFieldModule, MatInputModule, MatButtonModule, MatIconModule], providers: [useDefaultErrorStateMatcher], changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-card class=\"flex-column-stretch fxFlex\">\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\">\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"] }]
64
+ args: [{ selector: 'ngssm-regex-editor', standalone: true, imports: [
65
+ CommonModule,
66
+ A11yModule,
67
+ ReactiveFormsModule,
68
+ MatCardModule,
69
+ MatFormFieldModule,
70
+ MatInputModule,
71
+ MatButtonModule,
72
+ MatIconModule
73
+ ], 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"] }]
63
74
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
64
75
  type: Inject,
65
76
  args: [NGSSM_REGEX_EDITOR_VALIDATOR]
@@ -70,4 +81,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImpor
70
81
  }], regex: [{
71
82
  type: Input
72
83
  }] } });
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdzc20tcmVnZXgtZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nc3NtLXRvb2xraXQvc3JjL2xpYi9yZWdleC1lZGl0b3Ivbmdzc20tcmVnZXgtZWRpdG9yL25nc3NtLXJlZ2V4LWVkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS10b29sa2l0L3NyYy9saWIvcmVnZXgtZWRpdG9yL25nc3NtLXJlZ2V4LWVkaXRvci9uZ3NzbS1yZWdleC1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSx1QkFBdUIsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQW1CLFdBQVcsRUFBRSxtQkFBbUIsRUFBb0IsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakgsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBRWxFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSw0QkFBNEIsRUFB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QUFDLG1CQUd2Qix1QkFBdUIsQ0FBQyxNQUFNOzswQkFXbEMsTUFBTTsyQkFBQyw0QkFBNEI7OzBCQUFHLFFBQVE7NENBRmpELFdBQVc7c0JBQXBCLE1BQU07Z0JBa0JNLEtBQUs7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgSW5wdXQsIEluamVjdCwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Db250cm9sLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0Q2FyZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NhcmQnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgdXNlRGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyIH0gZnJvbSAnLi4vLi4vZGVmYXVsdC1lcnJvci1zdGF0ZS1tYXRjaGVyJztcbmltcG9ydCB7IGRlZmF1bHRSZWdleEVkaXRvclZhbGlkYXRvciwgTkdTU01fUkVHRVhfRURJVE9SX1ZBTElEQVRPUiwgUmVnZXhFZGl0b3JWYWxpZGF0b3IgfSBmcm9tICcuLi9yZWdleC1lZGl0b3ItdmFsaWRhdG9yJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmdzc20tcmVnZXgtZWRpdG9yJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgTWF0Q2FyZE1vZHVsZSwgTWF0Rm9ybUZpZWxkTW9kdWxlLCBNYXRJbnB1dE1vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLCBNYXRJY29uTW9kdWxlXSxcbiAgcHJvdmlkZXJzOiBbdXNlRGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyXSxcbiAgdGVtcGxhdGVVcmw6ICcuL25nc3NtLXJlZ2V4LWVkaXRvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL25nc3NtLXJlZ2V4LWVkaXRvci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBOZ3NzbVJlZ2V4RWRpdG9yQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSByZWdleFZhbGlkYXRvcjogUmVnZXhFZGl0b3JWYWxpZGF0b3I7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2lzUmVnZXhWYWxpZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4gfCBudWxsPihudWxsKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgcmVnZXhDb250cm9sOiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPjtcbiAgcHVibGljIHJlYWRvbmx5IHRlc3RTdHJpbmdDb250cm9sID0gbmV3IEZvcm1Db250cm9sPHN0cmluZz4oJycpO1xuXG4gIEBPdXRwdXQoKSBjbG9zZUVkaXRvciA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nIHwgdW5kZWZpbmVkPigpO1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoTkdTU01fUkVHRVhfRURJVE9SX1ZBTElEQVRPUikgQE9wdGlvbmFsKCkgdmFsaWRhdG9yPzogUmVnZXhFZGl0b3JWYWxpZGF0b3IpIHtcbiAgICB0aGlzLnJlZ2V4VmFsaWRhdG9yID0gdmFsaWRhdG9yID8/IGRlZmF1bHRSZWdleEVkaXRvclZhbGlkYXRvcjtcbiAgICB0aGlzLnJlZ2V4Q29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgKGMpID0+IHRoaXMudmFsaWRhdGVkUmVnZXgoYyldKTtcbiAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLnJlZ2V4Q29udHJvbC52YWx1ZUNoYW5nZXMsIHRoaXMudGVzdFN0cmluZ0NvbnRyb2wudmFsdWVDaGFuZ2VzLCB0aGlzLnJlZ2V4Q29udHJvbC5zdGF0dXNDaGFuZ2VzXSkuc3Vic2NyaWJlKFxuICAgICAgKHZhbHVlcykgPT4ge1xuICAgICAgICBpZiAodGhpcy5yZWdleENvbnRyb2wuaW52YWxpZCB8fCAodmFsdWVzWzFdID8/ICcnKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICB0aGlzLl9pc1JlZ2V4VmFsaWQkLm5leHQobnVsbCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaXNNYXRjaCA9IHRoaXMucmVnZXhWYWxpZGF0b3IuaXNNYXRjaCh2YWx1ZXNbMF0gPz8gJycsIHZhbHVlc1sxXSA/PyAnJyk7XG4gICAgICAgIHRoaXMuX2lzUmVnZXhWYWxpZCQubmV4dChpc01hdGNoKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IHJlZ2V4KHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsKSB7XG4gICAgdGhpcy5yZWdleENvbnRyb2wuc2V0VmFsdWUodmFsdWUgPz8gbnVsbCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzUmVnZXhWYWxpZCQoKTogT2JzZXJ2YWJsZTxib29sZWFuIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl9pc1JlZ2V4VmFsaWQkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGNhbmNlbCgpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlRWRpdG9yLmVtaXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBzdWJtaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZUVkaXRvci5lbWl0KHRoaXMucmVnZXhDb250cm9sLnZhbHVlID8/ICcnKTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVkUmVnZXgoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMucmVnZXhWYWxpZGF0b3IudmFsaWRhdGVQYXR0ZXJuKGNvbnRyb2wudmFsdWUpO1xuICAgIGlmIChyZXN1bHQuaXNWYWxpZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHJlZ2V4OiByZXN1bHQuZXJyb3JcbiAgICB9O1xuICB9XG59XG4iLCI8bWF0LWNhcmQgY2xhc3M9XCJmbGV4LWNvbHVtbi1zdHJldGNoIGZ4RmxleFwiPlxuICAgIDxtYXQtY2FyZC1oZWFkZXI+XG4gICAgICAgIDxtYXQtY2FyZC10aXRsZT5SZWdleCBFZGl0b3I8L21hdC1jYXJkLXRpdGxlPlxuICAgIDwvbWF0LWNhcmQtaGVhZGVyPlxuICAgIDxtYXQtY2FyZC1jb250ZW50IGNsYXNzPVwiZmxleC1jb2x1bW4tc3RyZXRjaCBmeEZsZXhcIj5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwid2l0aC1tYXJnaW4tdG9wLThcIj5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+UmVndWxhciBleHByZXNzaW9uPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW2Zvcm1Db250cm9sXT1cInJlZ2V4Q29udHJvbFwiPlxuICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInJlZ2V4Q29udHJvbC5lcnJvcnM/LlsncmVnZXgnXVwiPlxuICAgICAgICAgICAgICAgIHt7cmVnZXhDb250cm9sLmVycm9ycz8uWydyZWdleCddfX1cbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1yb3ctY2VudGVyXCI+XG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJmeEZsZXhcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlRlc3Qgc3RyaW5nPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFtmb3JtQ29udHJvbF09XCJ0ZXN0U3RyaW5nQ29udHJvbFwiPlxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImZhLXNvbGlkIGZhLWNoZWNrIHN1Y2Nlc3Mgd2l0aC1tYXJnaW4tbGVmdC0xMlwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIoaXNSZWdleFZhbGlkJCB8IGFzeW5jKSA9PT0gdHJ1ZVwiPjwvbWF0LWljb24+XG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJmYS1zb2xpZCBmYS14bWFyayBmYWlsdXJlIHdpdGgtbWFyZ2luLWxlZnQtMTJcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiKGlzUmVnZXhWYWxpZCQgfCBhc3luYykgPT09IGZhbHNlXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9tYXQtY2FyZC1jb250ZW50PlxuICAgIDxtYXQtY2FyZC1hY3Rpb25zIGNsYXNzPVwiZmxleC1yb3ctY2VudGVyXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZnhGbGV4XCI+PC9zcGFuPlxuICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT1cImNhbmNlbCgpXCIgaWQ9XCJjYW5jZWxCdXR0b25cIj5DYW5jZWw8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyZWdleENvbnRyb2wuaW52YWxpZCB8fCAoKGlzUmVnZXhWYWxpZCQgfCBhc3luYykgPT09IGZhbHNlKVwiIChjbGljayk9XCJzdWJtaXQoKVwiXG4gICAgICAgICAgICBpZD1cInN1Ym1pdEJ1dHRvblwiPlxuICAgICAgICAgICAgU3VibWl0XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvbWF0LWNhcmQtYWN0aW9ucz5cbjwvbWF0LWNhcmQ+Il19
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdzc20tcmVnZXgtZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nc3NtLXRvb2xraXQvc3JjL2xpYi9yZWdleC1lZGl0b3Ivbmdzc20tcmVnZXgtZWRpdG9yL25nc3NtLXJlZ2V4LWVkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS10b29sa2l0L3NyYy9saWIvcmVnZXgtZWRpdG9yL25nc3NtLXJlZ2V4LWVkaXRvci9uZ3NzbS1yZWdleC1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSx1QkFBdUIsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQW1CLFdBQVcsRUFBRSxtQkFBbUIsRUFBb0IsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakgsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUVsRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxtQ0FBbUMs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LGFBQWE7d0JBQ2Isa0JBQWtCO3dCQUNsQixjQUFjO3dCQUNkLGVBQWU7d0JBQ2YsYUFBYTtxQkFDZCxhQUNVLENBQUMsMkJBQTJCLENBQUMsbUJBR3ZCLHVCQUF1QixDQUFDLE1BQU07OzBCQVdsQyxNQUFNOzJCQUFDLDRCQUE0Qjs7MEJBQUcsUUFBUTs0Q0FGakQsV0FBVztzQkFBcEIsTUFBTTtnQkFrQk0sS0FBSztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBJbnB1dCwgSW5qZWN0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUNvbnRyb2wsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRDYXJkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2FyZCc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IEExMXlNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgdXNlRGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyIH0gZnJvbSAnLi4vLi4vZGVmYXVsdC1lcnJvci1zdGF0ZS1tYXRjaGVyJztcbmltcG9ydCB7IGRlZmF1bHRSZWdleEVkaXRvclZhbGlkYXRvciwgTkdTU01fUkVHRVhfRURJVE9SX1ZBTElEQVRPUiwgUmVnZXhFZGl0b3JWYWxpZGF0b3IgfSBmcm9tICcuLi9yZWdleC1lZGl0b3ItdmFsaWRhdG9yJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmdzc20tcmVnZXgtZWRpdG9yJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBBMTF5TW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgTWF0Q2FyZE1vZHVsZSxcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGVcbiAgXSxcbiAgcHJvdmlkZXJzOiBbdXNlRGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyXSxcbiAgdGVtcGxhdGVVcmw6ICcuL25nc3NtLXJlZ2V4LWVkaXRvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL25nc3NtLXJlZ2V4LWVkaXRvci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBOZ3NzbVJlZ2V4RWRpdG9yQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSByZWdleFZhbGlkYXRvcjogUmVnZXhFZGl0b3JWYWxpZGF0b3I7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2lzUmVnZXhWYWxpZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4gfCBudWxsPihudWxsKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgcmVnZXhDb250cm9sOiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPjtcbiAgcHVibGljIHJlYWRvbmx5IHRlc3RTdHJpbmdDb250cm9sID0gbmV3IEZvcm1Db250cm9sPHN0cmluZz4oJycpO1xuXG4gIEBPdXRwdXQoKSBjbG9zZUVkaXRvciA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nIHwgdW5kZWZpbmVkPigpO1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoTkdTU01fUkVHRVhfRURJVE9SX1ZBTElEQVRPUikgQE9wdGlvbmFsKCkgdmFsaWRhdG9yPzogUmVnZXhFZGl0b3JWYWxpZGF0b3IpIHtcbiAgICB0aGlzLnJlZ2V4VmFsaWRhdG9yID0gdmFsaWRhdG9yID8/IGRlZmF1bHRSZWdleEVkaXRvclZhbGlkYXRvcjtcbiAgICB0aGlzLnJlZ2V4Q29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgKGMpID0+IHRoaXMudmFsaWRhdGVkUmVnZXgoYyldKTtcbiAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLnJlZ2V4Q29udHJvbC52YWx1ZUNoYW5nZXMsIHRoaXMudGVzdFN0cmluZ0NvbnRyb2wudmFsdWVDaGFuZ2VzLCB0aGlzLnJlZ2V4Q29udHJvbC5zdGF0dXNDaGFuZ2VzXSkuc3Vic2NyaWJlKFxuICAgICAgKHZhbHVlcykgPT4ge1xuICAgICAgICBpZiAodGhpcy5yZWdleENvbnRyb2wuaW52YWxpZCB8fCAodmFsdWVzWzFdID8/ICcnKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICB0aGlzLl9pc1JlZ2V4VmFsaWQkLm5leHQobnVsbCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaXNNYXRjaCA9IHRoaXMucmVnZXhWYWxpZGF0b3IuaXNNYXRjaCh2YWx1ZXNbMF0gPz8gJycsIHZhbHVlc1sxXSA/PyAnJyk7XG4gICAgICAgIHRoaXMuX2lzUmVnZXhWYWxpZCQubmV4dChpc01hdGNoKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IHJlZ2V4KHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsKSB7XG4gICAgdGhpcy5yZWdleENvbnRyb2wuc2V0VmFsdWUodmFsdWUgPz8gbnVsbCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzUmVnZXhWYWxpZCQoKTogT2JzZXJ2YWJsZTxib29sZWFuIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl9pc1JlZ2V4VmFsaWQkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGNhbmNlbCgpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlRWRpdG9yLmVtaXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBzdWJtaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZUVkaXRvci5lbWl0KHRoaXMucmVnZXhDb250cm9sLnZhbHVlID8/ICcnKTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVkUmVnZXgoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMucmVnZXhWYWxpZGF0b3IudmFsaWRhdGVQYXR0ZXJuKGNvbnRyb2wudmFsdWUpO1xuICAgIGlmIChyZXN1bHQuaXNWYWxpZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHJlZ2V4OiByZXN1bHQuZXJyb3JcbiAgICB9O1xuICB9XG59XG4iLCI8bWF0LWNhcmQgY2xhc3M9XCJmbGV4LWNvbHVtbi1zdHJldGNoIGZ4RmxleFwiIGNka1RyYXBGb2N1cyBbY2RrVHJhcEZvY3VzQXV0b0NhcHR1cmVdPVwidHJ1ZVwiPlxuICAgIDxtYXQtY2FyZC1oZWFkZXI+XG4gICAgICAgIDxtYXQtY2FyZC10aXRsZT5SZWdleCBFZGl0b3I8L21hdC1jYXJkLXRpdGxlPlxuICAgIDwvbWF0LWNhcmQtaGVhZGVyPlxuICAgIDxtYXQtY2FyZC1jb250ZW50IGNsYXNzPVwiZmxleC1jb2x1bW4tc3RyZXRjaCBmeEZsZXhcIj5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwid2l0aC1tYXJnaW4tdG9wLThcIj5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+UmVndWxhciBleHByZXNzaW9uPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW2Zvcm1Db250cm9sXT1cInJlZ2V4Q29udHJvbFwiIGNka0ZvY3VzSW5pdGlhbD5cbiAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJyZWdleENvbnRyb2wuZXJyb3JzPy5bJ3JlZ2V4J11cIj5cbiAgICAgICAgICAgICAgICB7e3JlZ2V4Q29udHJvbC5lcnJvcnM/LlsncmVnZXgnXX19XG4gICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtcm93LWNlbnRlclwiPlxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZnhGbGV4XCI+XG4gICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5UZXN0IHN0cmluZzwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbZm9ybUNvbnRyb2xdPVwidGVzdFN0cmluZ0NvbnRyb2xcIj5cbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJmYS1zb2xpZCBmYS1jaGVjayBzdWNjZXNzIHdpdGgtbWFyZ2luLWxlZnQtMTJcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiKGlzUmVnZXhWYWxpZCQgfCBhc3luYykgPT09IHRydWVcIj48L21hdC1pY29uPlxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiZmEtc29saWQgZmEteG1hcmsgZmFpbHVyZSB3aXRoLW1hcmdpbi1sZWZ0LTEyXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIihpc1JlZ2V4VmFsaWQkIHwgYXN5bmMpID09PSBmYWxzZVwiPjwvbWF0LWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbWF0LWNhcmQtY29udGVudD5cbiAgICA8bWF0LWNhcmQtYWN0aW9ucyBjbGFzcz1cImZsZXgtcm93LWNlbnRlclwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImZ4RmxleFwiPjwvc3Bhbj5cbiAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIChjbGljayk9XCJjYW5jZWwoKVwiIGlkPVwiY2FuY2VsQnV0dG9uXCI+Q2FuY2VsPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwicmVnZXhDb250cm9sLmludmFsaWQgfHwgKChpc1JlZ2V4VmFsaWQkIHwgYXN5bmMpID09PSBmYWxzZSlcIiAoY2xpY2spPVwic3VibWl0KClcIlxuICAgICAgICAgICAgaWQ9XCJzdWJtaXRCdXR0b25cIj5cbiAgICAgICAgICAgIFN1Ym1pdFxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L21hdC1jYXJkLWFjdGlvbnM+XG48L21hdC1jYXJkPiJdfQ==
@@ -1,7 +1,7 @@
1
1
  import { Component, ChangeDetectionStrategy, Input } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import { MatIconModule } from '@angular/material/icon';
4
- import { OverlayModule } from '@angular/cdk/overlay';
4
+ import { ConnectionPositionPair, OverlayModule } from '@angular/cdk/overlay';
5
5
  import { MatButtonModule } from '@angular/material/button';
6
6
  import { BehaviorSubject } from 'rxjs';
7
7
  import { NgssmRegexEditorComponent } from '../ngssm-regex-editor/ngssm-regex-editor.component';
@@ -14,6 +14,15 @@ export class NgssmRegexEditorToggleComponent {
14
14
  constructor() {
15
15
  this._isOpen$ = new BehaviorSubject(false);
16
16
  this._isDisabled$ = new BehaviorSubject(false);
17
+ this.originPos = {
18
+ originX: 'start',
19
+ originY: 'top'
20
+ };
21
+ this.overlayPos = {
22
+ overlayX: 'start',
23
+ overlayY: 'top'
24
+ };
25
+ this.positions = [new ConnectionPositionPair(this.originPos, this.overlayPos, 0, 0)];
17
26
  }
18
27
  set disabled(value) {
19
28
  this._isDisabled$.next(value);
@@ -41,13 +50,13 @@ export class NgssmRegexEditorToggleComponent {
41
50
  }
42
51
  }
43
52
  NgssmRegexEditorToggleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NgssmRegexEditorToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
44
- NgssmRegexEditorToggleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.3", type: NgssmRegexEditorToggleComponent, isStandalone: true, selector: "ngssm-regex-editor-toggle", inputs: { inputElement: "inputElement", disabled: "disabled" }, ngImport: i0, template: "<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\">\n <ngssm-regex-editor (closeEditor)=\"closeEditor($event)\" [regex]=\"regexValue\"></ngssm-regex-editor>\n</ng-template>", styles: [":host{display:flex;flex-direction:row;margin-right:4px}:host .ngssm-regex-editor-toggle-icon{font-size:20px}:host .ngssm-regex-editor-toggle-icon:hover{cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i4.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i4.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: NgssmRegexEditorComponent, selector: "ngssm-regex-editor", inputs: ["regex"], outputs: ["closeEditor"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
53
+ NgssmRegexEditorToggleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.3", type: NgssmRegexEditorToggleComponent, isStandalone: true, selector: "ngssm-regex-editor-toggle", inputs: { inputElement: "inputElement", disabled: "disabled" }, ngImport: i0, template: "<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>", styles: [":host{display:flex;flex-direction:row;margin-right:4px}:host .ngssm-regex-editor-toggle-icon{font-size:20px}:host .ngssm-regex-editor-toggle-icon:hover{cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i4.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i4.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: NgssmRegexEditorComponent, selector: "ngssm-regex-editor", inputs: ["regex"], outputs: ["closeEditor"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
45
54
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NgssmRegexEditorToggleComponent, decorators: [{
46
55
  type: Component,
47
- args: [{ selector: 'ngssm-regex-editor-toggle', standalone: true, imports: [CommonModule, MatIconModule, MatButtonModule, OverlayModule, NgssmRegexEditorComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<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\">\n <ngssm-regex-editor (closeEditor)=\"closeEditor($event)\" [regex]=\"regexValue\"></ngssm-regex-editor>\n</ng-template>", styles: [":host{display:flex;flex-direction:row;margin-right:4px}:host .ngssm-regex-editor-toggle-icon{font-size:20px}:host .ngssm-regex-editor-toggle-icon:hover{cursor:pointer}\n"] }]
56
+ args: [{ selector: 'ngssm-regex-editor-toggle', standalone: true, imports: [CommonModule, MatIconModule, MatButtonModule, OverlayModule, NgssmRegexEditorComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<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>", styles: [":host{display:flex;flex-direction:row;margin-right:4px}:host .ngssm-regex-editor-toggle-icon{font-size:20px}:host .ngssm-regex-editor-toggle-icon:hover{cursor:pointer}\n"] }]
48
57
  }], propDecorators: { inputElement: [{
49
58
  type: Input
50
59
  }], disabled: [{
51
60
  type: Input
52
61
  }] } });
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdzc20tcmVnZXgtZWRpdG9yLXRvZ2dsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS10b29sa2l0L3NyYy9saWIvcmVnZXgtZWRpdG9yL25nc3NtLXJlZ2V4LWVkaXRvci10b2dnbGUvbmdzc20tcmVnZXgtZWRpdG9yLXRvZ2dsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS10b29sa2l0L3NyYy9saWIvcmVnZXgtZWRpdG9yL25nc3NtLXJlZ2V4LWVkaXRvci10b2dnbGUvbmdzc20tcmVnZXgtZWRpdG9yLXRvZ2dsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLHVCQUF1QixFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUVuRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQzs7Ozs7O0FBVS9GLE1BQU0sT0FBTywrQkFBK0I7SUFSNUM7UUFTbUIsYUFBUSxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQy9DLGlCQUFZLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7S0FrQ3JFO0lBN0JDLElBQWEsUUFBUSxDQUFDLEtBQWM7UUFDbEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVELElBQVcsV0FBVztRQUNwQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVNLFVBQVUsQ0FBQyxLQUFpQjtRQUNqQyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDaEMsT0FBTztTQUNSO1FBRUQsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUM7UUFDM0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVNLFdBQVcsQ0FBQyxLQUF5QjtRQUMxQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQixJQUFJLEtBQUssS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUM1QyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDaEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztTQUN4RTtJQUNILENBQUM7OzRIQW5DVSwrQkFBK0I7Z0hBQS9CLCtCQUErQixxSkNqQjVDLGlqQkFRYyxrT0RJRixZQUFZLG1GQUFFLGFBQWEsbUxBQUUsZUFBZSwyTEFBRSxhQUFhLGlwQ0FBRSx5QkFBeUI7MkZBS3JGLCtCQUErQjtrQkFSM0MsU0FBUzsrQkFDRSwyQkFBMkIsY0FDekIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLHlCQUF5QixDQUFDLG1CQUdoRix1QkFBdUIsQ0FBQyxNQUFNOzhCQVEvQixZQUFZO3NCQUEzQixLQUFLO2dCQUNPLFFBQVE7c0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE92ZXJsYXlNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IE5nc3NtUmVnZXhFZGl0b3JDb21wb25lbnQgfSBmcm9tICcuLi9uZ3NzbS1yZWdleC1lZGl0b3Ivbmdzc20tcmVnZXgtZWRpdG9yLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nc3NtLXJlZ2V4LWVkaXRvci10b2dnbGUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRJY29uTW9kdWxlLCBNYXRCdXR0b25Nb2R1bGUsIE92ZXJsYXlNb2R1bGUsIE5nc3NtUmVnZXhFZGl0b3JDb21wb25lbnRdLFxuICB0ZW1wbGF0ZVVybDogJy4vbmdzc20tcmVnZXgtZWRpdG9yLXRvZ2dsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL25nc3NtLXJlZ2V4LWVkaXRvci10b2dnbGUuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgTmdzc21SZWdleEVkaXRvclRvZ2dsZUNvbXBvbmVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2lzT3BlbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNEaXNhYmxlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBwdWJsaWMgcmVnZXhWYWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbDtcblxuICBASW5wdXQoKSBwdWJsaWMgaW5wdXRFbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50IHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9pc0Rpc2FibGVkJC5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNPcGVuJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5faXNPcGVuJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNEaXNhYmxlZCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzRGlzYWJsZWQkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIG9wZW5FZGl0b3IoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5faXNEaXNhYmxlZCQuZ2V0VmFsdWUoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMucmVnZXhWYWx1ZSA9IHRoaXMuaW5wdXRFbGVtZW50Py52YWx1ZTtcbiAgICB0aGlzLl9pc09wZW4kLm5leHQodHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgY2xvc2VFZGl0b3IocmVnZXg6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIHRoaXMuX2lzT3BlbiQubmV4dChmYWxzZSk7XG4gICAgaWYgKHJlZ2V4ICE9PSB1bmRlZmluZWQgJiYgdGhpcy5pbnB1dEVsZW1lbnQpIHtcbiAgICAgIHRoaXMuaW5wdXRFbGVtZW50LnZhbHVlID0gcmVnZXg7XG4gICAgICB0aGlzLmlucHV0RWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnaW5wdXQnLCB7IGJ1YmJsZXM6IHRydWUgfSkpO1xuICAgIH1cbiAgfVxufVxuIiwiPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIm9wZW5FZGl0b3IoJGV2ZW50KVwiIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkJCB8IGFzeW5jXCIgY29sb3I9XCJwcmltYXJ5XCIgaWQ9XCJ0b2dnbGVCdXR0b25cIj5cbiAgICA8bWF0LWljb24gY2xhc3M9XCJmYS1zb2xpZCBmYS11cC1yaWdodC1mcm9tLXNxdWFyZSBuZ3NzbS1yZWdleC1lZGl0b3ItdG9nZ2xlLWljb25cIiBjZGtPdmVybGF5T3JpZ2luXG4gICAgICAgICN0cmlnZ2VyPVwiY2RrT3ZlcmxheU9yaWdpblwiPjwvbWF0LWljb24+XG48L2J1dHRvbj5cblxuPG5nLXRlbXBsYXRlIGNka0Nvbm5lY3RlZE92ZXJsYXkgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW5dPVwidHJpZ2dlclwiXG4gICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcGVuXT1cIihpc09wZW4kIHwgYXN5bmMpID09PSB0cnVlXCI+XG4gICAgPG5nc3NtLXJlZ2V4LWVkaXRvciAoY2xvc2VFZGl0b3IpPVwiY2xvc2VFZGl0b3IoJGV2ZW50KVwiIFtyZWdleF09XCJyZWdleFZhbHVlXCI+PC9uZ3NzbS1yZWdleC1lZGl0b3I+XG48L25nLXRlbXBsYXRlPiJdfQ==
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdzc20tcmVnZXgtZWRpdG9yLXRvZ2dsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS10b29sa2l0L3NyYy9saWIvcmVnZXgtZWRpdG9yL25nc3NtLXJlZ2V4LWVkaXRvci10b2dnbGUvbmdzc20tcmVnZXgtZWRpdG9yLXRvZ2dsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS10b29sa2l0L3NyYy9saWIvcmVnZXgtZWRpdG9yL25nc3NtLXJlZ2V4LWVkaXRvci10b2dnbGUvbmdzc20tcmVnZXgtZWRpdG9yLXRvZ2dsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLHVCQUF1QixFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxzQkFBc0IsRUFBdUQsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEksT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFFbkQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sb0RBQW9ELENBQUM7Ozs7OztBQVUvRixNQUFNLE9BQU8sK0JBQStCO0lBUjVDO1FBU21CLGFBQVEsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUMvQyxpQkFBWSxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ25ELGNBQVMsR0FBNkI7WUFDckQsT0FBTyxFQUFFLE9BQU87WUFDaEIsT0FBTyxFQUFFLEtBQUs7U0FDZixDQUFDO1FBQ2UsZUFBVSxHQUE4QjtZQUN2RCxRQUFRLEVBQUUsT0FBTztZQUNqQixRQUFRLEVBQUUsS0FBSztTQUNoQixDQUFDO1FBRWMsY0FBUyxHQUE2QixDQUFDLElBQUksc0JBQXNCLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBa0MzSDtJQTdCQyxJQUFhLFFBQVEsQ0FBQyxLQUFjO1FBQ2xDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxJQUFXLFdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFFTSxVQUFVLENBQUMsS0FBaUI7UUFDakMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ2hDLE9BQU87U0FDUjtRQUVELEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDO1FBQzNDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFTSxXQUFXLENBQUMsS0FBeUI7UUFDMUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUIsSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDNUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDeEU7SUFDSCxDQUFDOzs0SEE3Q1UsK0JBQStCO2dIQUEvQiwrQkFBK0IscUpDakI1Qyw4bEJBUWMsa09ESUYsWUFBWSxtRkFBRSxhQUFhLG1MQUFFLGVBQWUsMkxBQUUsYUFBYSxpcENBQUUseUJBQXlCOzJGQUtyRiwrQkFBK0I7a0JBUjNDLFNBQVM7K0JBQ0UsMkJBQTJCLGNBQ3pCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSx5QkFBeUIsQ0FBQyxtQkFHaEYsdUJBQXVCLENBQUMsTUFBTTs4QkFrQi9CLFlBQVk7c0JBQTNCLEtBQUs7Z0JBQ08sUUFBUTtzQkFBcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgQ29ubmVjdGlvblBvc2l0aW9uUGFpciwgT3JpZ2luQ29ubmVjdGlvblBvc2l0aW9uLCBPdmVybGF5Q29ubmVjdGlvblBvc2l0aW9uLCBPdmVybGF5TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBOZ3NzbVJlZ2V4RWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vbmdzc20tcmVnZXgtZWRpdG9yL25nc3NtLXJlZ2V4LWVkaXRvci5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ3NzbS1yZWdleC1lZGl0b3ItdG9nZ2xlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTWF0SWNvbk1vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLCBPdmVybGF5TW9kdWxlLCBOZ3NzbVJlZ2V4RWRpdG9yQ29tcG9uZW50XSxcbiAgdGVtcGxhdGVVcmw6ICcuL25nc3NtLXJlZ2V4LWVkaXRvci10b2dnbGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9uZ3NzbS1yZWdleC1lZGl0b3ItdG9nZ2xlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIE5nc3NtUmVnZXhFZGl0b3JUb2dnbGVDb21wb25lbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc09wZW4kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2lzRGlzYWJsZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgb3JpZ2luUG9zOiBPcmlnaW5Db25uZWN0aW9uUG9zaXRpb24gPSB7XG4gICAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgICBvcmlnaW5ZOiAndG9wJ1xuICB9O1xuICBwcml2YXRlIHJlYWRvbmx5IG92ZXJsYXlQb3M6IE92ZXJsYXlDb25uZWN0aW9uUG9zaXRpb24gPSB7XG4gICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgb3ZlcmxheVk6ICd0b3AnXG4gIH07XG5cbiAgcHVibGljIHJlYWRvbmx5IHBvc2l0aW9uczogQ29ubmVjdGlvblBvc2l0aW9uUGFpcltdID0gW25ldyBDb25uZWN0aW9uUG9zaXRpb25QYWlyKHRoaXMub3JpZ2luUG9zLCB0aGlzLm92ZXJsYXlQb3MsIDAsIDApXTtcblxuICBwdWJsaWMgcmVnZXhWYWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbDtcblxuICBASW5wdXQoKSBwdWJsaWMgaW5wdXRFbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50IHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9pc0Rpc2FibGVkJC5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNPcGVuJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5faXNPcGVuJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNEaXNhYmxlZCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzRGlzYWJsZWQkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIG9wZW5FZGl0b3IoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5faXNEaXNhYmxlZCQuZ2V0VmFsdWUoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMucmVnZXhWYWx1ZSA9IHRoaXMuaW5wdXRFbGVtZW50Py52YWx1ZTtcbiAgICB0aGlzLl9pc09wZW4kLm5leHQodHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgY2xvc2VFZGl0b3IocmVnZXg6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIHRoaXMuX2lzT3BlbiQubmV4dChmYWxzZSk7XG4gICAgaWYgKHJlZ2V4ICE9PSB1bmRlZmluZWQgJiYgdGhpcy5pbnB1dEVsZW1lbnQpIHtcbiAgICAgIHRoaXMuaW5wdXRFbGVtZW50LnZhbHVlID0gcmVnZXg7XG4gICAgICB0aGlzLmlucHV0RWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnaW5wdXQnLCB7IGJ1YmJsZXM6IHRydWUgfSkpO1xuICAgIH1cbiAgfVxufVxuIiwiPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIm9wZW5FZGl0b3IoJGV2ZW50KVwiIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkJCB8IGFzeW5jXCIgY29sb3I9XCJwcmltYXJ5XCIgaWQ9XCJ0b2dnbGVCdXR0b25cIj5cbiAgICA8bWF0LWljb24gY2xhc3M9XCJmYS1zb2xpZCBmYS11cC1yaWdodC1mcm9tLXNxdWFyZSBuZ3NzbS1yZWdleC1lZGl0b3ItdG9nZ2xlLWljb25cIiBjZGtPdmVybGF5T3JpZ2luXG4gICAgICAgICN0cmlnZ2VyPVwiY2RrT3ZlcmxheU9yaWdpblwiPjwvbWF0LWljb24+XG48L2J1dHRvbj5cblxuPG5nLXRlbXBsYXRlIGNka0Nvbm5lY3RlZE92ZXJsYXkgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW5dPVwidHJpZ2dlclwiXG4gICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcGVuXT1cIihpc09wZW4kIHwgYXN5bmMpID09PSB0cnVlXCIgW2Nka0Nvbm5lY3RlZE92ZXJsYXlQb3NpdGlvbnNdPVwicG9zaXRpb25zXCI+XG4gICAgPG5nc3NtLXJlZ2V4LWVkaXRvciAoY2xvc2VFZGl0b3IpPVwiY2xvc2VFZGl0b3IoJGV2ZW50KVwiIFtyZWdleF09XCJyZWdleFZhbHVlXCI+PC9uZ3NzbS1yZWdleC1lZGl0b3I+XG48L25nLXRlbXBsYXRlPiJdfQ==
@@ -10,20 +10,20 @@ import * as i1$1 from '@angular/material/icon';
10
10
  import { MatIconModule } from '@angular/material/icon';
11
11
  import { MatListModule } from '@angular/material/list';
12
12
  import { MatDividerModule } from '@angular/material/divider';
13
- import * as i3$1 from '@angular/material/card';
13
+ import * as i4 from '@angular/material/card';
14
14
  import { MatCardModule } from '@angular/material/card';
15
15
  import { MatSlideToggleModule } from '@angular/material/slide-toggle';
16
- import * as i4 from '@angular/material/form-field';
16
+ import * as i5 from '@angular/material/form-field';
17
17
  import { MatFormFieldModule, MatFormFieldControl } from '@angular/material/form-field';
18
18
  import { MatRadioModule } from '@angular/material/radio';
19
19
  import { MatSelectModule } from '@angular/material/select';
20
- import * as i5 from '@angular/material/input';
20
+ import * as i6 from '@angular/material/input';
21
21
  import { MatInputModule } from '@angular/material/input';
22
22
  import { MatTableModule } from '@angular/material/table';
23
23
  import { MatPaginatorModule } from '@angular/material/paginator';
24
24
  import * as i2$2 from '@angular/material/dialog';
25
25
  import { MatDialogModule, MAT_DIALOG_DATA } from '@angular/material/dialog';
26
- import * as i3$2 from '@angular/material/progress-spinner';
26
+ import * as i3$1 from '@angular/material/progress-spinner';
27
27
  import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
28
28
  import { MatCheckboxModule } from '@angular/material/checkbox';
29
29
  import { MatTooltipModule } from '@angular/material/tooltip';
@@ -33,14 +33,16 @@ import { MatSnackBarModule, MAT_SNACK_BAR_DATA } from '@angular/material/snack-b
33
33
  import { MatTabsModule } from '@angular/material/tabs';
34
34
  import { MatExpansionModule } from '@angular/material/expansion';
35
35
  import * as i1 from '@angular/cdk/overlay';
36
- import { Overlay, OverlayModule } from '@angular/cdk/overlay';
36
+ import { Overlay, ConnectionPositionPair, OverlayModule } from '@angular/cdk/overlay';
37
37
  import { TemplatePortal, ComponentPortal } from '@angular/cdk/portal';
38
38
  import { Subject, BehaviorSubject, takeUntil, combineLatest } from 'rxjs';
39
39
  import * as i2 from '@angular/cdk/bidi';
40
40
  import { ErrorStateMatcher } from '@angular/material/core';
41
41
  import { coerceBooleanProperty } from '@angular/cdk/coercion';
42
- import * as i2$1 from '@angular/forms';
42
+ import * as i3$2 from '@angular/forms';
43
43
  import { FormControl, Validators, ReactiveFormsModule } from '@angular/forms';
44
+ import * as i2$1 from '@angular/cdk/a11y';
45
+ import { A11yModule } from '@angular/cdk/a11y';
44
46
  import * as i1$3 from 'ngssm-store';
45
47
  import { NgSsmComponent } from 'ngssm-store';
46
48
 
@@ -162,7 +164,7 @@ NgssmMessageOverlayComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14
162
164
  {{ message$ | async }}
163
165
  </mat-card-content>
164
166
  </mat-card>
165
- `, isInline: true, styles: [".message-container{display:flex!important;flex-direction:column;align-items:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i3$1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3$1.MatCardContent, selector: "mat-card-content" }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i3$2.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }] });
167
+ `, isInline: true, styles: [".message-container{display:flex!important;flex-direction:column;align-items:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i4.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i4.MatCardContent, selector: "mat-card-content" }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i3$1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }] });
166
168
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NgssmMessageOverlayComponent, decorators: [{
167
169
  type: Component,
168
170
  args: [{ selector: 'ngssm-message-overlay', standalone: true, imports: [CommonModule, MatCardModule, MatProgressSpinnerModule], template: `
@@ -475,13 +477,13 @@ class NgssmFilePickerComponent {
475
477
  }
476
478
  }
477
479
  NgssmFilePickerComponent.nextId = 0;
478
- NgssmFilePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NgssmFilePickerComponent, deps: [{ token: i2$1.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component });
480
+ NgssmFilePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NgssmFilePickerComponent, deps: [{ token: i3$2.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component });
479
481
  NgssmFilePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.3", type: NgssmFilePickerComponent, isStandalone: true, selector: "ngssm-file-picker", inputs: { required: "required", disabled: "disabled", displayDetails: "displayDetails" }, host: { properties: { "id": "this.id" } }, providers: [{ provide: MatFormFieldControl, useExisting: NgssmFilePickerComponent }], viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"file-picker-container\" (drop)=\"onDrop($event)\" (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\" [ngClass]=\"{'picker-disabled': disabled}\">\n <input type=\"file\" class=\"hidden\" #fileInput (change)=\"onFileSelected($event)\">\n <div *ngIf=\"empty === false\" class=\"flex-row-center\">\n <div class=\"file-picker-file-name\">\n {{value?.name}}\n </div>\n <div class=\"file-picker-file-information\" *ngIf=\"(displayDetails$ | async) === true\">\n {{value?.size | ngssmFileSize}}, last modified on {{lastModificationDate}}\n </div>\n </div>\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: NgssmFileSizePipe, name: "ngssmFileSize" }] });
480
482
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NgssmFilePickerComponent, decorators: [{
481
483
  type: Component,
482
484
  args: [{ selector: 'ngssm-file-picker', standalone: true, imports: [CommonModule, NgssmFileSizePipe], providers: [{ provide: MatFormFieldControl, useExisting: NgssmFilePickerComponent }], template: "<div class=\"file-picker-container\" (drop)=\"onDrop($event)\" (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\" [ngClass]=\"{'picker-disabled': disabled}\">\n <input type=\"file\" class=\"hidden\" #fileInput (change)=\"onFileSelected($event)\">\n <div *ngIf=\"empty === false\" class=\"flex-row-center\">\n <div class=\"file-picker-file-name\">\n {{value?.name}}\n </div>\n <div class=\"file-picker-file-information\" *ngIf=\"(displayDetails$ | async) === true\">\n {{value?.size | ngssmFileSize}}, last modified on {{lastModificationDate}}\n </div>\n </div>\n</div>" }]
483
485
  }], ctorParameters: function () {
484
- return [{ type: i2$1.NgControl, decorators: [{
486
+ return [{ type: i3$2.NgControl, decorators: [{
485
487
  type: Optional
486
488
  }, {
487
489
  type: Self
@@ -629,10 +631,19 @@ class NgssmRegexEditorComponent {
629
631
  }
630
632
  }
631
633
  NgssmRegexEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NgssmRegexEditorComponent, deps: [{ token: NGSSM_REGEX_EDITOR_VALIDATOR, optional: true }], target: i0.ɵɵFactoryTarget.Component });
632
- NgssmRegexEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.3", 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\">\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\">\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: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$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: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i3$1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3$1.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i3$1.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i3$1.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i3$1.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3$3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], 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 });
634
+ NgssmRegexEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.3", 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: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i2$1.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$2.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$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$2.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"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3$3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], 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 });
633
635
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NgssmRegexEditorComponent, decorators: [{
634
636
  type: Component,
635
- args: [{ selector: 'ngssm-regex-editor', standalone: true, imports: [CommonModule, ReactiveFormsModule, MatCardModule, MatFormFieldModule, MatInputModule, MatButtonModule, MatIconModule], providers: [useDefaultErrorStateMatcher], changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-card class=\"flex-column-stretch fxFlex\">\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\">\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"] }]
637
+ args: [{ selector: 'ngssm-regex-editor', standalone: true, imports: [
638
+ CommonModule,
639
+ A11yModule,
640
+ ReactiveFormsModule,
641
+ MatCardModule,
642
+ MatFormFieldModule,
643
+ MatInputModule,
644
+ MatButtonModule,
645
+ MatIconModule
646
+ ], 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"] }]
636
647
  }], ctorParameters: function () {
637
648
  return [{ type: undefined, decorators: [{
638
649
  type: Inject,
@@ -650,6 +661,15 @@ class NgssmRegexEditorToggleComponent {
650
661
  constructor() {
651
662
  this._isOpen$ = new BehaviorSubject(false);
652
663
  this._isDisabled$ = new BehaviorSubject(false);
664
+ this.originPos = {
665
+ originX: 'start',
666
+ originY: 'top'
667
+ };
668
+ this.overlayPos = {
669
+ overlayX: 'start',
670
+ overlayY: 'top'
671
+ };
672
+ this.positions = [new ConnectionPositionPair(this.originPos, this.overlayPos, 0, 0)];
653
673
  }
654
674
  set disabled(value) {
655
675
  this._isDisabled$.next(value);
@@ -678,10 +698,10 @@ class NgssmRegexEditorToggleComponent {
678
698
  }
679
699
  }
680
700
  NgssmRegexEditorToggleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NgssmRegexEditorToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
681
- NgssmRegexEditorToggleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.3", type: NgssmRegexEditorToggleComponent, isStandalone: true, selector: "ngssm-regex-editor-toggle", inputs: { inputElement: "inputElement", disabled: "disabled" }, ngImport: i0, template: "<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\">\n <ngssm-regex-editor (closeEditor)=\"closeEditor($event)\" [regex]=\"regexValue\"></ngssm-regex-editor>\n</ng-template>", styles: [":host{display:flex;flex-direction:row;margin-right:4px}:host .ngssm-regex-editor-toggle-icon{font-size:20px}:host .ngssm-regex-editor-toggle-icon:hover{cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3$3.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i1.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i1.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: NgssmRegexEditorComponent, selector: "ngssm-regex-editor", inputs: ["regex"], outputs: ["closeEditor"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
701
+ NgssmRegexEditorToggleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.3", type: NgssmRegexEditorToggleComponent, isStandalone: true, selector: "ngssm-regex-editor-toggle", inputs: { inputElement: "inputElement", disabled: "disabled" }, ngImport: i0, template: "<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>", styles: [":host{display:flex;flex-direction:row;margin-right:4px}:host .ngssm-regex-editor-toggle-icon{font-size:20px}:host .ngssm-regex-editor-toggle-icon:hover{cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3$3.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i1.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i1.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: NgssmRegexEditorComponent, selector: "ngssm-regex-editor", inputs: ["regex"], outputs: ["closeEditor"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
682
702
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NgssmRegexEditorToggleComponent, decorators: [{
683
703
  type: Component,
684
- args: [{ selector: 'ngssm-regex-editor-toggle', standalone: true, imports: [CommonModule, MatIconModule, MatButtonModule, OverlayModule, NgssmRegexEditorComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<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\">\n <ngssm-regex-editor (closeEditor)=\"closeEditor($event)\" [regex]=\"regexValue\"></ngssm-regex-editor>\n</ng-template>", styles: [":host{display:flex;flex-direction:row;margin-right:4px}:host .ngssm-regex-editor-toggle-icon{font-size:20px}:host .ngssm-regex-editor-toggle-icon:hover{cursor:pointer}\n"] }]
704
+ args: [{ selector: 'ngssm-regex-editor-toggle', standalone: true, imports: [CommonModule, MatIconModule, MatButtonModule, OverlayModule, NgssmRegexEditorComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<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>", styles: [":host{display:flex;flex-direction:row;margin-right:4px}:host .ngssm-regex-editor-toggle-icon{font-size:20px}:host .ngssm-regex-editor-toggle-icon:hover{cursor:pointer}\n"] }]
685
705
  }], propDecorators: { inputElement: [{
686
706
  type: Input
687
707
  }], disabled: [{