ngssm-toolkit 15.2.8 → 15.2.10

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,4 +1,5 @@
1
1
  export * from './component-overlay.directive';
2
2
  export * from './empty-overlay.component';
3
3
  export * from './message-overlay.component';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS10b29sa2l0L3NyYy9saWIvb3ZlcmxheS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyw2QkFBNkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50LW92ZXJsYXkuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vZW1wdHktb3ZlcmxheS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9tZXNzYWdlLW92ZXJsYXkuY29tcG9uZW50JztcbiJdfQ==
4
+ export * from './ngssm-overlay-builder';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS10b29sa2l0L3NyYy9saWIvb3ZlcmxheS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHlCQUF5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnQtb3ZlcmxheS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9lbXB0eS1vdmVybGF5LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL21lc3NhZ2Utb3ZlcmxheS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9uZ3NzbS1vdmVybGF5LWJ1aWxkZXInO1xuIl19
@@ -0,0 +1,58 @@
1
+ import { Overlay } from '@angular/cdk/overlay';
2
+ import { ComponentPortal, TemplatePortal } from '@angular/cdk/portal';
3
+ import { DOCUMENT } from '@angular/common';
4
+ import { Inject, Injectable } from '@angular/core';
5
+ import { BehaviorSubject } from 'rxjs';
6
+ import { MessageOverlayComponent } from './message-overlay.component';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/cdk/overlay";
9
+ import * as i2 from "@angular/cdk/bidi";
10
+ import * as i3 from "@angular/common";
11
+ export class NgssmOverlayBuilder {
12
+ constructor(elementRef, viewContainerRef, document, scrollStrategies,
13
+ // eslint-disable-next-line deprecation/deprecation
14
+ componentFactoryResolver, positionBuilder, keyboardDispatcher, injector, ngZone, directionality, location, outsideClickDispatcher, renderer) {
15
+ this.elementRef = elementRef;
16
+ this.viewContainerRef = viewContainerRef;
17
+ this._overlayMessage$ = new BehaviorSubject('Please wait');
18
+ renderer.setStyle(this.elementRef.nativeElement, 'position', 'relative');
19
+ const container = {
20
+ getContainerElement: () => this.elementRef.nativeElement
21
+ };
22
+ this.overlay = new Overlay(scrollStrategies, container, componentFactoryResolver, positionBuilder, keyboardDispatcher, injector, ngZone, document, directionality, location, outsideClickDispatcher);
23
+ this.overlayRef = this.overlay.create({
24
+ positionStrategy: this.overlay.position().global().centerHorizontally().centerVertically(),
25
+ hasBackdrop: true
26
+ });
27
+ }
28
+ set overlayMessage(value) {
29
+ this._overlayMessage$.next(value);
30
+ }
31
+ showOverlay() {
32
+ if (this.overLayTemplate) {
33
+ this.overlayRef.attach(new TemplatePortal(this.overLayTemplate, this.viewContainerRef));
34
+ }
35
+ else if (this.overlayComponent) {
36
+ const ref = this.overlayRef.attach(new ComponentPortal(this.overlayComponent));
37
+ if (this.overlayComponent === MessageOverlayComponent) {
38
+ ref.instance.message$ = this._overlayMessage$.asObservable();
39
+ }
40
+ }
41
+ else {
42
+ const ref = this.overlayRef.attach(new ComponentPortal(MessageOverlayComponent));
43
+ ref.instance.message$ = this._overlayMessage$.asObservable();
44
+ }
45
+ }
46
+ hideOverlay() {
47
+ this.overlayRef.detach();
48
+ }
49
+ }
50
+ NgssmOverlayBuilder.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgssmOverlayBuilder, deps: [{ token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: DOCUMENT }, { token: i1.ScrollStrategyOptions }, { token: i0.ComponentFactoryResolver }, { token: i1.OverlayPositionBuilder }, { token: i1.OverlayKeyboardDispatcher }, { token: i0.Injector }, { token: i0.NgZone }, { token: i2.Directionality }, { token: i3.Location }, { token: i1.OverlayOutsideClickDispatcher }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Injectable });
51
+ NgssmOverlayBuilder.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgssmOverlayBuilder });
52
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgssmOverlayBuilder, decorators: [{
53
+ type: Injectable
54
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{
55
+ type: Inject,
56
+ args: [DOCUMENT]
57
+ }] }, { type: i1.ScrollStrategyOptions }, { type: i0.ComponentFactoryResolver }, { type: i1.OverlayPositionBuilder }, { type: i1.OverlayKeyboardDispatcher }, { type: i0.Injector }, { type: i0.NgZone }, { type: i2.Directionality }, { type: i3.Location }, { type: i1.OverlayOutsideClickDispatcher }, { type: i0.Renderer2 }]; } });
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdzc20tb3ZlcmxheS1idWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmdzc20tdG9vbGtpdC9zcmMvbGliL292ZXJsYXkvbmdzc20tb3ZlcmxheS1idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFFTCxPQUFPLEVBTVIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxRQUFRLEVBQVksTUFBTSxpQkFBaUIsQ0FBQztBQUNyRCxPQUFPLEVBR0wsTUFBTSxFQUNOLFVBQVUsRUFNWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7OztBQUd0RSxNQUFNLE9BQU8sbUJBQW1CO0lBUzlCLFlBQ1UsVUFBc0IsRUFDdEIsZ0JBQWtDLEVBQ3hCLFFBQWEsRUFDL0IsZ0JBQXVDO0lBQ3ZDLG1EQUFtRDtJQUNuRCx3QkFBa0QsRUFDbEQsZUFBdUMsRUFDdkMsa0JBQTZDLEVBQzdDLFFBQWtCLEVBQ2xCLE1BQWMsRUFDZCxjQUE4QixFQUM5QixRQUFrQixFQUNsQixzQkFBcUQsRUFDckQsUUFBbUI7UUFiWCxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFWM0IscUJBQWdCLEdBQUcsSUFBSSxlQUFlLENBQVMsYUFBYSxDQUFDLENBQUM7UUF3QjdFLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3pFLE1BQU0sU0FBUyxHQUFHO1lBQ2hCLG1CQUFtQixFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYTtTQUN6RCxDQUFDO1FBRUYsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FDeEIsZ0JBQWdCLEVBQ2hCLFNBQWdCLEVBQ2hCLHdCQUF3QixFQUN4QixlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLFFBQVEsRUFDUixNQUFNLEVBQ04sUUFBUSxFQUNSLGNBQWMsRUFDZCxRQUFRLEVBQ1Isc0JBQXNCLENBQ3ZCLENBQUM7UUFFRixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1lBQ3BDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRTtZQUMxRixXQUFXLEVBQUUsSUFBSTtTQUNsQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBVyxjQUFjLENBQUMsS0FBYTtRQUNyQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN4QixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7U0FDekY7YUFBTSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUNoQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1lBQy9FLElBQUksSUFBSSxDQUFDLGdCQUFnQixLQUFLLHVCQUF1QixFQUFFO2dCQUNyRCxHQUFHLENBQUMsUUFBUSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLENBQUM7YUFDOUQ7U0FDRjthQUFNO1lBQ0wsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxlQUFlLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDO1lBQ2pGLEdBQUcsQ0FBQyxRQUFRLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUM5RDtJQUNILENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDM0IsQ0FBQzs7Z0hBdEVVLG1CQUFtQiw0RUFZcEIsUUFBUTtvSEFaUCxtQkFBbUI7MkZBQW5CLG1CQUFtQjtrQkFEL0IsVUFBVTs7MEJBYU4sTUFBTTsyQkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aW9uYWxpdHkgfSBmcm9tICdAYW5ndWxhci9jZGsvYmlkaSc7XG5pbXBvcnQge1xuICBDb21wb25lbnRUeXBlLFxuICBPdmVybGF5LFxuICBPdmVybGF5S2V5Ym9hcmREaXNwYXRjaGVyLFxuICBPdmVybGF5T3V0c2lkZUNsaWNrRGlzcGF0Y2hlcixcbiAgT3ZlcmxheVBvc2l0aW9uQnVpbGRlcixcbiAgT3ZlcmxheVJlZixcbiAgU2Nyb2xsU3RyYXRlZ3lPcHRpb25zXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IENvbXBvbmVudFBvcnRhbCwgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IERPQ1VNRU5ULCBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdCxcbiAgSW5qZWN0YWJsZSxcbiAgSW5qZWN0b3IsXG4gIE5nWm9uZSxcbiAgUmVuZGVyZXIyLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NvbnRhaW5lclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWVzc2FnZU92ZXJsYXlDb21wb25lbnQgfSBmcm9tICcuL21lc3NhZ2Utb3ZlcmxheS5jb21wb25lbnQnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTmdzc21PdmVybGF5QnVpbGRlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX292ZXJsYXlNZXNzYWdlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignUGxlYXNlIHdhaXQnKTtcblxuICBwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXk7XG4gIHByaXZhdGUgb3ZlcmxheVJlZjogT3ZlcmxheVJlZjtcblxuICBwdWJsaWMgb3ZlckxheVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuICBwdWJsaWMgb3ZlcmxheUNvbXBvbmVudDogQ29tcG9uZW50VHlwZTxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgQEluamVjdChET0NVTUVOVCkgZG9jdW1lbnQ6IGFueSxcbiAgICBzY3JvbGxTdHJhdGVnaWVzOiBTY3JvbGxTdHJhdGVneU9wdGlvbnMsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uXG4gICAgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgcG9zaXRpb25CdWlsZGVyOiBPdmVybGF5UG9zaXRpb25CdWlsZGVyLFxuICAgIGtleWJvYXJkRGlzcGF0Y2hlcjogT3ZlcmxheUtleWJvYXJkRGlzcGF0Y2hlcixcbiAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgbmdab25lOiBOZ1pvbmUsXG4gICAgZGlyZWN0aW9uYWxpdHk6IERpcmVjdGlvbmFsaXR5LFxuICAgIGxvY2F0aW9uOiBMb2NhdGlvbixcbiAgICBvdXRzaWRlQ2xpY2tEaXNwYXRjaGVyOiBPdmVybGF5T3V0c2lkZUNsaWNrRGlzcGF0Y2hlcixcbiAgICByZW5kZXJlcjogUmVuZGVyZXIyXG4gICkge1xuICAgIHJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAncG9zaXRpb24nLCAncmVsYXRpdmUnKTtcbiAgICBjb25zdCBjb250YWluZXIgPSB7XG4gICAgICBnZXRDb250YWluZXJFbGVtZW50OiAoKSA9PiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudFxuICAgIH07XG5cbiAgICB0aGlzLm92ZXJsYXkgPSBuZXcgT3ZlcmxheShcbiAgICAgIHNjcm9sbFN0cmF0ZWdpZXMsXG4gICAgICBjb250YWluZXIgYXMgYW55LFxuICAgICAgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgICAgcG9zaXRpb25CdWlsZGVyLFxuICAgICAga2V5Ym9hcmREaXNwYXRjaGVyLFxuICAgICAgaW5qZWN0b3IsXG4gICAgICBuZ1pvbmUsXG4gICAgICBkb2N1bWVudCxcbiAgICAgIGRpcmVjdGlvbmFsaXR5LFxuICAgICAgbG9jYXRpb24sXG4gICAgICBvdXRzaWRlQ2xpY2tEaXNwYXRjaGVyXG4gICAgKTtcblxuICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoe1xuICAgICAgcG9zaXRpb25TdHJhdGVneTogdGhpcy5vdmVybGF5LnBvc2l0aW9uKCkuZ2xvYmFsKCkuY2VudGVySG9yaXpvbnRhbGx5KCkuY2VudGVyVmVydGljYWxseSgpLFxuICAgICAgaGFzQmFja2Ryb3A6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgb3ZlcmxheU1lc3NhZ2UodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX292ZXJsYXlNZXNzYWdlJC5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBzaG93T3ZlcmxheSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5vdmVyTGF5VGVtcGxhdGUpIHtcbiAgICAgIHRoaXMub3ZlcmxheVJlZi5hdHRhY2gobmV3IFRlbXBsYXRlUG9ydGFsKHRoaXMub3ZlckxheVRlbXBsYXRlLCB0aGlzLnZpZXdDb250YWluZXJSZWYpKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMub3ZlcmxheUNvbXBvbmVudCkge1xuICAgICAgY29uc3QgcmVmID0gdGhpcy5vdmVybGF5UmVmLmF0dGFjaChuZXcgQ29tcG9uZW50UG9ydGFsKHRoaXMub3ZlcmxheUNvbXBvbmVudCkpO1xuICAgICAgaWYgKHRoaXMub3ZlcmxheUNvbXBvbmVudCA9PT0gTWVzc2FnZU92ZXJsYXlDb21wb25lbnQpIHtcbiAgICAgICAgcmVmLmluc3RhbmNlLm1lc3NhZ2UkID0gdGhpcy5fb3ZlcmxheU1lc3NhZ2UkLmFzT2JzZXJ2YWJsZSgpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCByZWYgPSB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKG5ldyBDb21wb25lbnRQb3J0YWwoTWVzc2FnZU92ZXJsYXlDb21wb25lbnQpKTtcbiAgICAgIHJlZi5pbnN0YW5jZS5tZXNzYWdlJCA9IHRoaXMuX292ZXJsYXlNZXNzYWdlJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaGlkZU92ZXJsYXkoKTogdm9pZCB7XG4gICAgdGhpcy5vdmVybGF5UmVmLmRldGFjaCgpO1xuICB9XG59XG4iXX0=
@@ -1,3 +1,4 @@
1
1
  export * from './ngssm-regex-editor-toggle/ngssm-regex-editor-toggle.component';
2
2
  export * from './ngssm-regex-editor/ngssm-regex-editor.component';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS10b29sa2l0L3NyYy9saWIvcmVnZXgtZWRpdG9yL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsaUVBQWlFLENBQUM7QUFDaEYsY0FBYyxtREFBbUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbmdzc20tcmVnZXgtZWRpdG9yLXRvZ2dsZS9uZ3NzbS1yZWdleC1lZGl0b3ItdG9nZ2xlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL25nc3NtLXJlZ2V4LWVkaXRvci9uZ3NzbS1yZWdleC1lZGl0b3IuY29tcG9uZW50JztcbiJdfQ==
3
+ export * from './regex-editor-validator';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS10b29sa2l0L3NyYy9saWIvcmVnZXgtZWRpdG9yL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsaUVBQWlFLENBQUM7QUFDaEYsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLDBCQUEwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9uZ3NzbS1yZWdleC1lZGl0b3ItdG9nZ2xlL25nc3NtLXJlZ2V4LWVkaXRvci10b2dnbGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbmdzc20tcmVnZXgtZWRpdG9yL25nc3NtLXJlZ2V4LWVkaXRvci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9yZWdleC1lZGl0b3ItdmFsaWRhdG9yJztcbiJdfQ==
@@ -1,4 +1,4 @@
1
- import { Component, ChangeDetectionStrategy, EventEmitter, Output, Input } from '@angular/core';
1
+ import { Component, ChangeDetectionStrategy, EventEmitter, Output, Input, Inject, Optional } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import { FormControl, ReactiveFormsModule, Validators } from '@angular/forms';
4
4
  import { MatCardModule } from '@angular/material/card';
@@ -8,6 +8,7 @@ import { MatButtonModule } from '@angular/material/button';
8
8
  import { MatIconModule } from '@angular/material/icon';
9
9
  import { BehaviorSubject, combineLatest } from 'rxjs';
10
10
  import { useDefaultErrorStateMatcher } from '../../default-error-state-matcher';
11
+ import { defaultRegexEditorValidator, NGSSM_REGEX_EDITOR_VALIDATOR } from '../regex-editor-validator';
11
12
  import * as i0 from "@angular/core";
12
13
  import * as i1 from "@angular/common";
13
14
  import * as i2 from "@angular/forms";
@@ -16,32 +17,20 @@ import * as i4 from "@angular/material/form-field";
16
17
  import * as i5 from "@angular/material/input";
17
18
  import * as i6 from "@angular/material/button";
18
19
  import * as i7 from "@angular/material/icon";
19
- export const regexValidator = (control) => {
20
- try {
21
- const regex = new RegExp(control.value);
22
- if (regex.test('')) {
23
- // nothing here
24
- }
25
- }
26
- catch (error) {
27
- return {
28
- regex: error.message
29
- };
30
- }
31
- return null;
32
- };
33
20
  export class NgssmRegexEditorComponent {
34
- constructor() {
21
+ constructor(validator) {
35
22
  this._isRegexValid$ = new BehaviorSubject(null);
36
- this.regexControl = new FormControl(null, [Validators.required, regexValidator]);
37
23
  this.testStringControl = new FormControl('');
38
24
  this.closeEditor = new EventEmitter();
25
+ this.regexValidator = validator ?? defaultRegexEditorValidator;
26
+ this.regexControl = new FormControl(null, [Validators.required, (c) => this.validatedRegex(c)]);
39
27
  combineLatest([this.regexControl.valueChanges, this.testStringControl.valueChanges, this.regexControl.statusChanges]).subscribe((values) => {
40
28
  if (this.regexControl.invalid || (values[1] ?? '').length === 0) {
41
29
  this._isRegexValid$.next(null);
42
30
  return;
43
31
  }
44
- this._isRegexValid$.next(new RegExp(values[0] ?? '').test(values[1] ?? ''));
32
+ const isMatch = this.regexValidator.isMatch(values[0] ?? '', values[1] ?? '');
33
+ this._isRegexValid$.next(isMatch);
45
34
  });
46
35
  }
47
36
  set regex(value) {
@@ -56,15 +45,29 @@ export class NgssmRegexEditorComponent {
56
45
  submit() {
57
46
  this.closeEditor.emit(this.regexControl.value ?? '');
58
47
  }
48
+ validatedRegex(control) {
49
+ const result = this.regexValidator.validatePattern(control.value);
50
+ if (result.isValid) {
51
+ return null;
52
+ }
53
+ return {
54
+ regex: result.error
55
+ };
56
+ }
59
57
  }
60
- NgssmRegexEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgssmRegexEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
58
+ NgssmRegexEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgssmRegexEditorComponent, deps: [{ token: NGSSM_REGEX_EDITOR_VALIDATOR, optional: true }], target: i0.ɵɵFactoryTarget.Component });
61
59
  NgssmRegexEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.5", 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 });
62
60
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgssmRegexEditorComponent, decorators: [{
63
61
  type: Component,
64
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"] }]
65
- }], ctorParameters: function () { return []; }, propDecorators: { closeEditor: [{
63
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
64
+ type: Inject,
65
+ args: [NGSSM_REGEX_EDITOR_VALIDATOR]
66
+ }, {
67
+ type: Optional
68
+ }] }]; }, propDecorators: { closeEditor: [{
66
69
  type: Output
67
70
  }], regex: [{
68
71
  type: Input
69
72
  }] } });
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdzc20tcmVnZXgtZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nc3NtLXRvb2xraXQvc3JjL2xpYi9yZWdleC1lZGl0b3Ivbmdzc20tcmVnZXgtZWRpdG9yL25nc3NtLXJlZ2V4LWVkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS10b29sa2l0L3NyYy9saWIvcmVnZXgtZWRpdG9yL25nc3NtLXJlZ2V4LWVkaXRvci9uZ3NzbS1yZWdleC1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSx1QkFBdUIsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFtQixXQUFXLEVBQUUsbUJBQW1CLEVBQW9CLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pILE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUVsRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7Ozs7O0FBRWhGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLE9BQXdCLEVBQTJCLEVBQUU7SUFDbEYsSUFBSTtRQUNGLE1BQU0sS0FBSyxHQUFHLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDbEIsZUFBZTtTQUNoQjtLQUNGO0lBQUMsT0FBTyxLQUFVLEVBQUU7UUFDbkIsT0FBTztZQUNMLEtBQUssRUFBRSxLQUFLLENBQUMsT0FBTztTQUNyQixDQUFDO0tBQ0g7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMsQ0FBQztBQVdGLE1BQU0sT0FBTyx5QkFBeUI7SUFRcEM7UUFQaUIsbUJBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBaUIsSUFBSSxDQUFDLENBQUM7UUFFNUQsaUJBQVksR0FBRyxJQUFJLFdBQVcsQ0FBZ0IsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDO1FBQzNGLHNCQUFpQixHQUFHLElBQUksV0FBVyxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBRXRELGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQXNCLENBQUM7UUFHN0QsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUM3SCxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ1QsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO2dCQUMvRCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDL0IsT0FBTzthQUNSO1lBRUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM5RSxDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFhLEtBQUssQ0FBQyxLQUFnQztRQUNqRCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELElBQVcsYUFBYTtRQUN0QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVNLE1BQU07UUFDWCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFTSxNQUFNO1FBQ1gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUM7SUFDdkQsQ0FBQzs7c0hBbkNVLHlCQUF5QjswR0FBekIseUJBQXlCLHNJQUx6QixDQUFDLDJCQUEyQixDQUFDLDBCQy9CMUMsbWpEQWdDVyxpTERGQyxZQUFZLHVMQUFFLG1CQUFtQix5a0JBQUUsYUFBYSxpaEJBQUUsa0JBQWtCLHVZQUFFLGNBQWMsMFdBQUUsZUFBZSwyUUFBRSxhQUFhOzJGQU1uSCx5QkFBeUI7a0JBVHJDLFNBQVM7K0JBQ0Usb0JBQW9CLGNBQ2xCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxhQUFhLENBQUMsYUFDcEgsQ0FBQywyQkFBMkIsQ0FBQyxtQkFHdkIsdUJBQXVCLENBQUMsTUFBTTswRUFRckMsV0FBVztzQkFBcEIsTUFBTTtnQkFlTSxLQUFLO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgRXZlbnRFbWl0dGVyLCBPdXRwdXQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQ29udHJvbCwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdENhcmRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jYXJkJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IHVzZURlZmF1bHRFcnJvclN0YXRlTWF0Y2hlciB9IGZyb20gJy4uLy4uL2RlZmF1bHQtZXJyb3Itc3RhdGUtbWF0Y2hlcic7XG5cbmV4cG9ydCBjb25zdCByZWdleFZhbGlkYXRvciA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKGNvbnRyb2wudmFsdWUpO1xuICAgIGlmIChyZWdleC50ZXN0KCcnKSkge1xuICAgICAgLy8gbm90aGluZyBoZXJlXG4gICAgfVxuICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlZ2V4OiBlcnJvci5tZXNzYWdlXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmdzc20tcmVnZXgtZWRpdG9yJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgTWF0Q2FyZE1vZHVsZSwgTWF0Rm9ybUZpZWxkTW9kdWxlLCBNYXRJbnB1dE1vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLCBNYXRJY29uTW9kdWxlXSxcbiAgcHJvdmlkZXJzOiBbdXNlRGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyXSxcbiAgdGVtcGxhdGVVcmw6ICcuL25nc3NtLXJlZ2V4LWVkaXRvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL25nc3NtLXJlZ2V4LWVkaXRvci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBOZ3NzbVJlZ2V4RWRpdG9yQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNSZWdleFZhbGlkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbiB8IG51bGw+KG51bGwpO1xuXG4gIHB1YmxpYyByZWFkb25seSByZWdleENvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIHJlZ2V4VmFsaWRhdG9yXSk7XG4gIHB1YmxpYyByZWFkb25seSB0ZXN0U3RyaW5nQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxzdHJpbmc+KCcnKTtcblxuICBAT3V0cHV0KCkgY2xvc2VFZGl0b3IgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZyB8IHVuZGVmaW5lZD4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLnJlZ2V4Q29udHJvbC52YWx1ZUNoYW5nZXMsIHRoaXMudGVzdFN0cmluZ0NvbnRyb2wudmFsdWVDaGFuZ2VzLCB0aGlzLnJlZ2V4Q29udHJvbC5zdGF0dXNDaGFuZ2VzXSkuc3Vic2NyaWJlKFxuICAgICAgKHZhbHVlcykgPT4ge1xuICAgICAgICBpZiAodGhpcy5yZWdleENvbnRyb2wuaW52YWxpZCB8fCAodmFsdWVzWzFdID8/ICcnKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICB0aGlzLl9pc1JlZ2V4VmFsaWQkLm5leHQobnVsbCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5faXNSZWdleFZhbGlkJC5uZXh0KG5ldyBSZWdFeHAodmFsdWVzWzBdID8/ICcnKS50ZXN0KHZhbHVlc1sxXSA/PyAnJykpO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgcmVnZXgodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwpIHtcbiAgICB0aGlzLnJlZ2V4Q29udHJvbC5zZXRWYWx1ZSh2YWx1ZSA/PyBudWxsKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNSZWdleFZhbGlkJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4gfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzUmVnZXhWYWxpZCQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgY2FuY2VsKCk6IHZvaWQge1xuICAgIHRoaXMuY2xvc2VFZGl0b3IuZW1pdCgpO1xuICB9XG5cbiAgcHVibGljIHN1Ym1pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlRWRpdG9yLmVtaXQodGhpcy5yZWdleENvbnRyb2wudmFsdWUgPz8gJycpO1xuICB9XG59XG4iLCI8bWF0LWNhcmQgY2xhc3M9XCJmbGV4LWNvbHVtbi1zdHJldGNoIGZ4RmxleFwiPlxuICAgIDxtYXQtY2FyZC1oZWFkZXI+XG4gICAgICAgIDxtYXQtY2FyZC10aXRsZT5SZWdleCBFZGl0b3I8L21hdC1jYXJkLXRpdGxlPlxuICAgIDwvbWF0LWNhcmQtaGVhZGVyPlxuICAgIDxtYXQtY2FyZC1jb250ZW50IGNsYXNzPVwiZmxleC1jb2x1bW4tc3RyZXRjaCBmeEZsZXhcIj5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwid2l0aC1tYXJnaW4tdG9wLThcIj5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+UmVndWxhciBleHByZXNzaW9uPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW2Zvcm1Db250cm9sXT1cInJlZ2V4Q29udHJvbFwiPlxuICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInJlZ2V4Q29udHJvbC5lcnJvcnM/LlsncmVnZXgnXVwiPlxuICAgICAgICAgICAgICAgIHt7cmVnZXhDb250cm9sLmVycm9ycz8uWydyZWdleCddfX1cbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1yb3ctY2VudGVyXCI+XG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJmeEZsZXhcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlRlc3Qgc3RyaW5nPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFtmb3JtQ29udHJvbF09XCJ0ZXN0U3RyaW5nQ29udHJvbFwiPlxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImZhLXNvbGlkIGZhLWNoZWNrIHN1Y2Nlc3Mgd2l0aC1tYXJnaW4tbGVmdC0xMlwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIoaXNSZWdleFZhbGlkJCB8IGFzeW5jKSA9PT0gdHJ1ZVwiPjwvbWF0LWljb24+XG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJmYS1zb2xpZCBmYS14bWFyayBmYWlsdXJlIHdpdGgtbWFyZ2luLWxlZnQtMTJcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiKGlzUmVnZXhWYWxpZCQgfCBhc3luYykgPT09IGZhbHNlXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9tYXQtY2FyZC1jb250ZW50PlxuICAgIDxtYXQtY2FyZC1hY3Rpb25zIGNsYXNzPVwiZmxleC1yb3ctY2VudGVyXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZnhGbGV4XCI+PC9zcGFuPlxuICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT1cImNhbmNlbCgpXCIgaWQ9XCJjYW5jZWxCdXR0b25cIj5DYW5jZWw8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyZWdleENvbnRyb2wuaW52YWxpZCB8fCAoKGlzUmVnZXhWYWxpZCQgfCBhc3luYykgPT09IGZhbHNlKVwiIChjbGljayk9XCJzdWJtaXQoKVwiXG4gICAgICAgICAgICBpZD1cInN1Ym1pdEJ1dHRvblwiPlxuICAgICAgICAgICAgU3VibWl0XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvbWF0LWNhcmQtYWN0aW9ucz5cbjwvbWF0LWNhcmQ+Il19
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdzc20tcmVnZXgtZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nc3NtLXRvb2xraXQvc3JjL2xpYi9yZWdleC1lZGl0b3Ivbmdzc20tcmVnZXgtZWRpdG9yL25nc3NtLXJlZ2V4LWVkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS10b29sa2l0L3NyYy9saWIvcmVnZXgtZWRpdG9yL25nc3NtLXJlZ2V4LWVkaXRvci9uZ3NzbS1yZWdleC1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSx1QkFBdUIsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQW1CLFdBQVcsRUFBRSxtQkFBbUIsRUFBb0IsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakgsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBRWxFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSw0QkFBNEIsRUFBd0IsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7O0FBVzVILE1BQU0sT0FBTyx5QkFBeUI7SUFTcEMsWUFBOEQsU0FBZ0M7UUFQN0UsbUJBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBaUIsSUFBSSxDQUFDLENBQUM7UUFHNUQsc0JBQWlCLEdBQUcsSUFBSSxXQUFXLENBQVMsRUFBRSxDQUFDLENBQUM7UUFFdEQsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBc0IsQ0FBQztRQUc3RCxJQUFJLENBQUMsY0FBYyxHQUFHLFNBQVMsSUFBSSwyQkFBMkIsQ0FBQztRQUMvRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksV0FBVyxDQUFnQixJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvRyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQzdILENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDVCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7Z0JBQy9ELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMvQixPQUFPO2FBQ1I7WUFFRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUM5RSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNwQyxDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFhLEtBQUssQ0FBQyxLQUFnQztRQUNqRCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELElBQVcsYUFBYTtRQUN0QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVNLE1BQU07UUFDWCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFTSxNQUFNO1FBQ1gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVPLGNBQWMsQ0FBQyxPQUF3QjtRQUM3QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEUsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFO1lBQ2xCLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxPQUFPO1lBQ0wsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO1NBQ3BCLENBQUM7SUFDSixDQUFDOztzSEFsRFUseUJBQXlCLGtCQVNoQiw0QkFBNEI7MEdBVHJDLHlCQUF5QixzSUFMekIsQ0FBQywyQkFBMkIsQ0FBQywwQkNqQjFDLG1qREFnQ1csaUxEaEJDLFlBQVksdUxBQUUsbUJBQW1CLHlrQkFBRSxhQUFhLGloQkFBRSxrQkFBa0IsdVlBQUUsY0FBYywwV0FBRSxlQUFlLDJRQUFFLGFBQWE7MkZBTW5ILHlCQUF5QjtrQkFUckMsU0FBUzsrQkFDRSxvQkFBb0IsY0FDbEIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLG1CQUFtQixFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLGFBQWEsQ0FBQyxhQUNwSCxDQUFDLDJCQUEyQixDQUFDLG1CQUd2Qix1QkFBdUIsQ0FBQyxNQUFNOzswQkFXbEMsTUFBTTsyQkFBQyw0QkFBNEI7OzBCQUFHLFFBQVE7NENBRmpELFdBQVc7c0JBQXBCLE1BQU07Z0JBa0JNLEtBQUs7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgSW5wdXQsIEluamVjdCwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Db250cm9sLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0Q2FyZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NhcmQnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgdXNlRGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyIH0gZnJvbSAnLi4vLi4vZGVmYXVsdC1lcnJvci1zdGF0ZS1tYXRjaGVyJztcbmltcG9ydCB7IGRlZmF1bHRSZWdleEVkaXRvclZhbGlkYXRvciwgTkdTU01fUkVHRVhfRURJVE9SX1ZBTElEQVRPUiwgUmVnZXhFZGl0b3JWYWxpZGF0b3IgfSBmcm9tICcuLi9yZWdleC1lZGl0b3ItdmFsaWRhdG9yJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmdzc20tcmVnZXgtZWRpdG9yJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgTWF0Q2FyZE1vZHVsZSwgTWF0Rm9ybUZpZWxkTW9kdWxlLCBNYXRJbnB1dE1vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLCBNYXRJY29uTW9kdWxlXSxcbiAgcHJvdmlkZXJzOiBbdXNlRGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyXSxcbiAgdGVtcGxhdGVVcmw6ICcuL25nc3NtLXJlZ2V4LWVkaXRvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL25nc3NtLXJlZ2V4LWVkaXRvci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBOZ3NzbVJlZ2V4RWRpdG9yQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSByZWdleFZhbGlkYXRvcjogUmVnZXhFZGl0b3JWYWxpZGF0b3I7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2lzUmVnZXhWYWxpZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4gfCBudWxsPihudWxsKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgcmVnZXhDb250cm9sOiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPjtcbiAgcHVibGljIHJlYWRvbmx5IHRlc3RTdHJpbmdDb250cm9sID0gbmV3IEZvcm1Db250cm9sPHN0cmluZz4oJycpO1xuXG4gIEBPdXRwdXQoKSBjbG9zZUVkaXRvciA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nIHwgdW5kZWZpbmVkPigpO1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoTkdTU01fUkVHRVhfRURJVE9SX1ZBTElEQVRPUikgQE9wdGlvbmFsKCkgdmFsaWRhdG9yPzogUmVnZXhFZGl0b3JWYWxpZGF0b3IpIHtcbiAgICB0aGlzLnJlZ2V4VmFsaWRhdG9yID0gdmFsaWRhdG9yID8/IGRlZmF1bHRSZWdleEVkaXRvclZhbGlkYXRvcjtcbiAgICB0aGlzLnJlZ2V4Q29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgKGMpID0+IHRoaXMudmFsaWRhdGVkUmVnZXgoYyldKTtcbiAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLnJlZ2V4Q29udHJvbC52YWx1ZUNoYW5nZXMsIHRoaXMudGVzdFN0cmluZ0NvbnRyb2wudmFsdWVDaGFuZ2VzLCB0aGlzLnJlZ2V4Q29udHJvbC5zdGF0dXNDaGFuZ2VzXSkuc3Vic2NyaWJlKFxuICAgICAgKHZhbHVlcykgPT4ge1xuICAgICAgICBpZiAodGhpcy5yZWdleENvbnRyb2wuaW52YWxpZCB8fCAodmFsdWVzWzFdID8/ICcnKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICB0aGlzLl9pc1JlZ2V4VmFsaWQkLm5leHQobnVsbCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaXNNYXRjaCA9IHRoaXMucmVnZXhWYWxpZGF0b3IuaXNNYXRjaCh2YWx1ZXNbMF0gPz8gJycsIHZhbHVlc1sxXSA/PyAnJyk7XG4gICAgICAgIHRoaXMuX2lzUmVnZXhWYWxpZCQubmV4dChpc01hdGNoKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IHJlZ2V4KHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsKSB7XG4gICAgdGhpcy5yZWdleENvbnRyb2wuc2V0VmFsdWUodmFsdWUgPz8gbnVsbCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzUmVnZXhWYWxpZCQoKTogT2JzZXJ2YWJsZTxib29sZWFuIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl9pc1JlZ2V4VmFsaWQkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGNhbmNlbCgpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlRWRpdG9yLmVtaXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBzdWJtaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZUVkaXRvci5lbWl0KHRoaXMucmVnZXhDb250cm9sLnZhbHVlID8/ICcnKTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVkUmVnZXgoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMucmVnZXhWYWxpZGF0b3IudmFsaWRhdGVQYXR0ZXJuKGNvbnRyb2wudmFsdWUpO1xuICAgIGlmIChyZXN1bHQuaXNWYWxpZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHJlZ2V4OiByZXN1bHQuZXJyb3JcbiAgICB9O1xuICB9XG59XG4iLCI8bWF0LWNhcmQgY2xhc3M9XCJmbGV4LWNvbHVtbi1zdHJldGNoIGZ4RmxleFwiPlxuICAgIDxtYXQtY2FyZC1oZWFkZXI+XG4gICAgICAgIDxtYXQtY2FyZC10aXRsZT5SZWdleCBFZGl0b3I8L21hdC1jYXJkLXRpdGxlPlxuICAgIDwvbWF0LWNhcmQtaGVhZGVyPlxuICAgIDxtYXQtY2FyZC1jb250ZW50IGNsYXNzPVwiZmxleC1jb2x1bW4tc3RyZXRjaCBmeEZsZXhcIj5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwid2l0aC1tYXJnaW4tdG9wLThcIj5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+UmVndWxhciBleHByZXNzaW9uPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW2Zvcm1Db250cm9sXT1cInJlZ2V4Q29udHJvbFwiPlxuICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInJlZ2V4Q29udHJvbC5lcnJvcnM/LlsncmVnZXgnXVwiPlxuICAgICAgICAgICAgICAgIHt7cmVnZXhDb250cm9sLmVycm9ycz8uWydyZWdleCddfX1cbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1yb3ctY2VudGVyXCI+XG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJmeEZsZXhcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlRlc3Qgc3RyaW5nPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFtmb3JtQ29udHJvbF09XCJ0ZXN0U3RyaW5nQ29udHJvbFwiPlxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImZhLXNvbGlkIGZhLWNoZWNrIHN1Y2Nlc3Mgd2l0aC1tYXJnaW4tbGVmdC0xMlwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIoaXNSZWdleFZhbGlkJCB8IGFzeW5jKSA9PT0gdHJ1ZVwiPjwvbWF0LWljb24+XG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJmYS1zb2xpZCBmYS14bWFyayBmYWlsdXJlIHdpdGgtbWFyZ2luLWxlZnQtMTJcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiKGlzUmVnZXhWYWxpZCQgfCBhc3luYykgPT09IGZhbHNlXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9tYXQtY2FyZC1jb250ZW50PlxuICAgIDxtYXQtY2FyZC1hY3Rpb25zIGNsYXNzPVwiZmxleC1yb3ctY2VudGVyXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZnhGbGV4XCI+PC9zcGFuPlxuICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT1cImNhbmNlbCgpXCIgaWQ9XCJjYW5jZWxCdXR0b25cIj5DYW5jZWw8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyZWdleENvbnRyb2wuaW52YWxpZCB8fCAoKGlzUmVnZXhWYWxpZCQgfCBhc3luYykgPT09IGZhbHNlKVwiIChjbGljayk9XCJzdWJtaXQoKVwiXG4gICAgICAgICAgICBpZD1cInN1Ym1pdEJ1dHRvblwiPlxuICAgICAgICAgICAgU3VibWl0XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvbWF0LWNhcmQtYWN0aW9ucz5cbjwvbWF0LWNhcmQ+Il19
@@ -36,6 +36,7 @@ export class NgssmRegexEditorToggleComponent {
36
36
  this._isOpen$.next(false);
37
37
  if (regex !== undefined && this.inputElement) {
38
38
  this.inputElement.value = regex;
39
+ this.inputElement.dispatchEvent(new Event('input', { bubbles: true }));
39
40
  }
40
41
  }
41
42
  }
@@ -49,4 +50,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImpor
49
50
  }], disabled: [{
50
51
  type: Input
51
52
  }] } });
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdzc20tcmVnZXgtZWRpdG9yLXRvZ2dsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS10b29sa2l0L3NyYy9saWIvcmVnZXgtZWRpdG9yL25nc3NtLXJlZ2V4LWVkaXRvci10b2dnbGUvbmdzc20tcmVnZXgtZWRpdG9yLXRvZ2dsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS10b29sa2l0L3NyYy9saWIvcmVnZXgtZWRpdG9yL25nc3NtLXJlZ2V4LWVkaXRvci10b2dnbGUvbmdzc20tcmVnZXgtZWRpdG9yLXRvZ2dsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLHVCQUF1QixFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUVuRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQzs7Ozs7O0FBVS9GLE1BQU0sT0FBTywrQkFBK0I7SUFSNUM7UUFTbUIsYUFBUSxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQy9DLGlCQUFZLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7S0FpQ3JFO0lBNUJDLElBQWEsUUFBUSxDQUFDLEtBQWM7UUFDbEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVELElBQVcsV0FBVztRQUNwQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVNLFVBQVUsQ0FBQyxLQUFpQjtRQUNqQyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDaEMsT0FBTztTQUNSO1FBRUQsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUM7UUFDM0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVNLFdBQVcsQ0FBQyxLQUF5QjtRQUMxQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQixJQUFJLEtBQUssS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUM1QyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7U0FDakM7SUFDSCxDQUFDOzs0SEFsQ1UsK0JBQStCO2dIQUEvQiwrQkFBK0IscUpDakI1QyxpakJBUWMsa09ESUYsWUFBWSxtRkFBRSxhQUFhLG1MQUFFLGVBQWUsMkxBQUUsYUFBYSxpcENBQUUseUJBQXlCOzJGQUtyRiwrQkFBK0I7a0JBUjNDLFNBQVM7K0JBQ0UsMkJBQTJCLGNBQ3pCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSx5QkFBeUIsQ0FBQyxtQkFHaEYsdUJBQXVCLENBQUMsTUFBTTs4QkFRL0IsWUFBWTtzQkFBM0IsS0FBSztnQkFDTyxRQUFRO3NCQUFwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBPdmVybGF5TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBOZ3NzbVJlZ2V4RWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vbmdzc20tcmVnZXgtZWRpdG9yL25nc3NtLXJlZ2V4LWVkaXRvci5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ3NzbS1yZWdleC1lZGl0b3ItdG9nZ2xlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTWF0SWNvbk1vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLCBPdmVybGF5TW9kdWxlLCBOZ3NzbVJlZ2V4RWRpdG9yQ29tcG9uZW50XSxcbiAgdGVtcGxhdGVVcmw6ICcuL25nc3NtLXJlZ2V4LWVkaXRvci10b2dnbGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9uZ3NzbS1yZWdleC1lZGl0b3ItdG9nZ2xlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIE5nc3NtUmVnZXhFZGl0b3JUb2dnbGVDb21wb25lbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc09wZW4kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2lzRGlzYWJsZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgcHVibGljIHJlZ2V4VmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGw7XG5cbiAgQElucHV0KCkgcHVibGljIGlucHV0RWxlbWVudDogSFRNTElucHV0RWxlbWVudCB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5faXNEaXNhYmxlZCQubmV4dCh2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzT3BlbiQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzT3BlbiQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzRGlzYWJsZWQkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9pc0Rpc2FibGVkJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuRWRpdG9yKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2lzRGlzYWJsZWQkLmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLnJlZ2V4VmFsdWUgPSB0aGlzLmlucHV0RWxlbWVudD8udmFsdWU7XG4gICAgdGhpcy5faXNPcGVuJC5uZXh0KHRydWUpO1xuICB9XG5cbiAgcHVibGljIGNsb3NlRWRpdG9yKHJlZ2V4OiBzdHJpbmcgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICB0aGlzLl9pc09wZW4kLm5leHQoZmFsc2UpO1xuICAgIGlmIChyZWdleCAhPT0gdW5kZWZpbmVkICYmIHRoaXMuaW5wdXRFbGVtZW50KSB7XG4gICAgICB0aGlzLmlucHV0RWxlbWVudC52YWx1ZSA9IHJlZ2V4O1xuICAgIH1cbiAgfVxufVxuIiwiPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIm9wZW5FZGl0b3IoJGV2ZW50KVwiIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkJCB8IGFzeW5jXCIgY29sb3I9XCJwcmltYXJ5XCIgaWQ9XCJ0b2dnbGVCdXR0b25cIj5cbiAgICA8bWF0LWljb24gY2xhc3M9XCJmYS1zb2xpZCBmYS11cC1yaWdodC1mcm9tLXNxdWFyZSBuZ3NzbS1yZWdleC1lZGl0b3ItdG9nZ2xlLWljb25cIiBjZGtPdmVybGF5T3JpZ2luXG4gICAgICAgICN0cmlnZ2VyPVwiY2RrT3ZlcmxheU9yaWdpblwiPjwvbWF0LWljb24+XG48L2J1dHRvbj5cblxuPG5nLXRlbXBsYXRlIGNka0Nvbm5lY3RlZE92ZXJsYXkgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW5dPVwidHJpZ2dlclwiXG4gICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcGVuXT1cIihpc09wZW4kIHwgYXN5bmMpID09PSB0cnVlXCI+XG4gICAgPG5nc3NtLXJlZ2V4LWVkaXRvciAoY2xvc2VFZGl0b3IpPVwiY2xvc2VFZGl0b3IoJGV2ZW50KVwiIFtyZWdleF09XCJyZWdleFZhbHVlXCI+PC9uZ3NzbS1yZWdleC1lZGl0b3I+XG48L25nLXRlbXBsYXRlPiJdfQ==
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdzc20tcmVnZXgtZWRpdG9yLXRvZ2dsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS10b29sa2l0L3NyYy9saWIvcmVnZXgtZWRpdG9yL25nc3NtLXJlZ2V4LWVkaXRvci10b2dnbGUvbmdzc20tcmVnZXgtZWRpdG9yLXRvZ2dsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS10b29sa2l0L3NyYy9saWIvcmVnZXgtZWRpdG9yL25nc3NtLXJlZ2V4LWVkaXRvci10b2dnbGUvbmdzc20tcmVnZXgtZWRpdG9yLXRvZ2dsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLHVCQUF1QixFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUVuRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQzs7Ozs7O0FBVS9GLE1BQU0sT0FBTywrQkFBK0I7SUFSNUM7UUFTbUIsYUFBUSxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQy9DLGlCQUFZLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7S0FrQ3JFO0lBN0JDLElBQWEsUUFBUSxDQUFDLEtBQWM7UUFDbEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVELElBQVcsV0FBVztRQUNwQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVNLFVBQVUsQ0FBQyxLQUFpQjtRQUNqQyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDaEMsT0FBTztTQUNSO1FBRUQsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUM7UUFDM0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVNLFdBQVcsQ0FBQyxLQUF5QjtRQUMxQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQixJQUFJLEtBQUssS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUM1QyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDaEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztTQUN4RTtJQUNILENBQUM7OzRIQW5DVSwrQkFBK0I7Z0hBQS9CLCtCQUErQixxSkNqQjVDLGlqQkFRYyxrT0RJRixZQUFZLG1GQUFFLGFBQWEsbUxBQUUsZUFBZSwyTEFBRSxhQUFhLGlwQ0FBRSx5QkFBeUI7MkZBS3JGLCtCQUErQjtrQkFSM0MsU0FBUzsrQkFDRSwyQkFBMkIsY0FDekIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLHlCQUF5QixDQUFDLG1CQUdoRix1QkFBdUIsQ0FBQyxNQUFNOzhCQVEvQixZQUFZO3NCQUEzQixLQUFLO2dCQUNPLFFBQVE7c0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE92ZXJsYXlNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IE5nc3NtUmVnZXhFZGl0b3JDb21wb25lbnQgfSBmcm9tICcuLi9uZ3NzbS1yZWdleC1lZGl0b3Ivbmdzc20tcmVnZXgtZWRpdG9yLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nc3NtLXJlZ2V4LWVkaXRvci10b2dnbGUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRJY29uTW9kdWxlLCBNYXRCdXR0b25Nb2R1bGUsIE92ZXJsYXlNb2R1bGUsIE5nc3NtUmVnZXhFZGl0b3JDb21wb25lbnRdLFxuICB0ZW1wbGF0ZVVybDogJy4vbmdzc20tcmVnZXgtZWRpdG9yLXRvZ2dsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL25nc3NtLXJlZ2V4LWVkaXRvci10b2dnbGUuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgTmdzc21SZWdleEVkaXRvclRvZ2dsZUNvbXBvbmVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2lzT3BlbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNEaXNhYmxlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBwdWJsaWMgcmVnZXhWYWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbDtcblxuICBASW5wdXQoKSBwdWJsaWMgaW5wdXRFbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50IHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9pc0Rpc2FibGVkJC5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNPcGVuJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5faXNPcGVuJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNEaXNhYmxlZCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzRGlzYWJsZWQkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIG9wZW5FZGl0b3IoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5faXNEaXNhYmxlZCQuZ2V0VmFsdWUoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMucmVnZXhWYWx1ZSA9IHRoaXMuaW5wdXRFbGVtZW50Py52YWx1ZTtcbiAgICB0aGlzLl9pc09wZW4kLm5leHQodHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgY2xvc2VFZGl0b3IocmVnZXg6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIHRoaXMuX2lzT3BlbiQubmV4dChmYWxzZSk7XG4gICAgaWYgKHJlZ2V4ICE9PSB1bmRlZmluZWQgJiYgdGhpcy5pbnB1dEVsZW1lbnQpIHtcbiAgICAgIHRoaXMuaW5wdXRFbGVtZW50LnZhbHVlID0gcmVnZXg7XG4gICAgICB0aGlzLmlucHV0RWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnaW5wdXQnLCB7IGJ1YmJsZXM6IHRydWUgfSkpO1xuICAgIH1cbiAgfVxufVxuIiwiPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIm9wZW5FZGl0b3IoJGV2ZW50KVwiIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkJCB8IGFzeW5jXCIgY29sb3I9XCJwcmltYXJ5XCIgaWQ9XCJ0b2dnbGVCdXR0b25cIj5cbiAgICA8bWF0LWljb24gY2xhc3M9XCJmYS1zb2xpZCBmYS11cC1yaWdodC1mcm9tLXNxdWFyZSBuZ3NzbS1yZWdleC1lZGl0b3ItdG9nZ2xlLWljb25cIiBjZGtPdmVybGF5T3JpZ2luXG4gICAgICAgICN0cmlnZ2VyPVwiY2RrT3ZlcmxheU9yaWdpblwiPjwvbWF0LWljb24+XG48L2J1dHRvbj5cblxuPG5nLXRlbXBsYXRlIGNka0Nvbm5lY3RlZE92ZXJsYXkgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW5dPVwidHJpZ2dlclwiXG4gICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcGVuXT1cIihpc09wZW4kIHwgYXN5bmMpID09PSB0cnVlXCI+XG4gICAgPG5nc3NtLXJlZ2V4LWVkaXRvciAoY2xvc2VFZGl0b3IpPVwiY2xvc2VFZGl0b3IoJGV2ZW50KVwiIFtyZWdleF09XCJyZWdleFZhbHVlXCI+PC9uZ3NzbS1yZWdleC1lZGl0b3I+XG48L25nLXRlbXBsYXRlPiJdfQ==
@@ -0,0 +1,29 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ export const NGSSM_REGEX_EDITOR_VALIDATOR = new InjectionToken('NGSSM_NGSSM_REGEX_EDITOR_VALIDATORREDUCER');
3
+ export const defaultRegexEditorValidator = {
4
+ validatePattern: (pattern) => {
5
+ try {
6
+ const regex = new RegExp(pattern);
7
+ if (regex.test('')) {
8
+ return { isValid: true };
9
+ }
10
+ }
11
+ catch (error) {
12
+ return { isValid: false, error: error.message };
13
+ }
14
+ return { isValid: true };
15
+ },
16
+ isMatch: (pattern, testString) => {
17
+ try {
18
+ const regex = new RegExp(pattern);
19
+ if (regex.test(testString)) {
20
+ return true;
21
+ }
22
+ }
23
+ catch (error) {
24
+ return false;
25
+ }
26
+ return false;
27
+ }
28
+ };
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnZXgtZWRpdG9yLXZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nc3NtLXRvb2xraXQvc3JjL2xpYi9yZWdleC1lZGl0b3IvcmVnZXgtZWRpdG9yLXZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBWS9DLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLElBQUksY0FBYyxDQUF1QiwyQ0FBMkMsQ0FBQyxDQUFDO0FBRWxJLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUF5QjtJQUMvRCxlQUFlLEVBQUUsQ0FBQyxPQUFlLEVBQUUsRUFBRTtRQUNuQyxJQUFJO1lBQ0YsTUFBTSxLQUFLLEdBQUcsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDbEMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFO2dCQUNsQixPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO2FBQzFCO1NBQ0Y7UUFBQyxPQUFPLEtBQVUsRUFBRTtZQUNuQixPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBUyxDQUFDO1NBQ3hEO1FBRUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBQ0QsT0FBTyxFQUFFLENBQUMsT0FBZSxFQUFFLFVBQWtCLEVBQUUsRUFBRTtRQUMvQyxJQUFJO1lBQ0YsTUFBTSxLQUFLLEdBQUcsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDbEMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFO2dCQUMxQixPQUFPLElBQUksQ0FBQzthQUNiO1NBQ0Y7UUFBQyxPQUFPLEtBQVUsRUFBRTtZQUNuQixPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVnZXhWYWxpZGF0aW9uUmVzdWx0IHtcbiAgaXNWYWxpZDogYm9vbGVhbjtcbiAgZXJyb3I/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVnZXhFZGl0b3JWYWxpZGF0b3Ige1xuICB2YWxpZGF0ZVBhdHRlcm46IChwYXR0ZXJuOiBzdHJpbmcpID0+IFJlZ2V4VmFsaWRhdGlvblJlc3VsdDtcbiAgaXNNYXRjaDogKHBhdHRlcm46IHN0cmluZywgdGVzdFN0cmluZzogc3RyaW5nKSA9PiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgTkdTU01fUkVHRVhfRURJVE9SX1ZBTElEQVRPUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxSZWdleEVkaXRvclZhbGlkYXRvcj4oJ05HU1NNX05HU1NNX1JFR0VYX0VESVRPUl9WQUxJREFUT1JSRURVQ0VSJyk7XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0UmVnZXhFZGl0b3JWYWxpZGF0b3I6IFJlZ2V4RWRpdG9yVmFsaWRhdG9yID0ge1xuICB2YWxpZGF0ZVBhdHRlcm46IChwYXR0ZXJuOiBzdHJpbmcpID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKHBhdHRlcm4pO1xuICAgICAgaWYgKHJlZ2V4LnRlc3QoJycpKSB7XG4gICAgICAgIHJldHVybiB7IGlzVmFsaWQ6IHRydWUgfTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICByZXR1cm4geyBpc1ZhbGlkOiBmYWxzZSwgZXJyb3I6IGVycm9yLm1lc3NhZ2UgfSBhcyBhbnk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgaXNWYWxpZDogdHJ1ZSB9O1xuICB9LFxuICBpc01hdGNoOiAocGF0dGVybjogc3RyaW5nLCB0ZXN0U3RyaW5nOiBzdHJpbmcpID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKHBhdHRlcm4pO1xuICAgICAgaWYgKHJlZ2V4LnRlc3QodGVzdFN0cmluZykpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufTtcbiJdfQ==
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { NgModule, Component, Directive, Inject, Input, Pipe, Optional, Self, ViewChild, HostBinding, ChangeDetectionStrategy, Injectable, EventEmitter, Output } from '@angular/core';
2
+ import { NgModule, Component, Directive, Inject, Input, Injectable, Pipe, Optional, Self, ViewChild, HostBinding, ChangeDetectionStrategy, InjectionToken, EventEmitter, Output } from '@angular/core';
3
3
  import { RouterModule } from '@angular/router';
4
4
  import * as i3$1 from '@angular/common';
5
5
  import { CommonModule, DOCUMENT } from '@angular/common';
@@ -277,6 +277,56 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImpor
277
277
  args: [{ selector: 'ngssm-empty-overlay', template: `` }]
278
278
  }] });
279
279
 
280
+ class NgssmOverlayBuilder {
281
+ constructor(elementRef, viewContainerRef, document, scrollStrategies,
282
+ // eslint-disable-next-line deprecation/deprecation
283
+ componentFactoryResolver, positionBuilder, keyboardDispatcher, injector, ngZone, directionality, location, outsideClickDispatcher, renderer) {
284
+ this.elementRef = elementRef;
285
+ this.viewContainerRef = viewContainerRef;
286
+ this._overlayMessage$ = new BehaviorSubject('Please wait');
287
+ renderer.setStyle(this.elementRef.nativeElement, 'position', 'relative');
288
+ const container = {
289
+ getContainerElement: () => this.elementRef.nativeElement
290
+ };
291
+ this.overlay = new Overlay(scrollStrategies, container, componentFactoryResolver, positionBuilder, keyboardDispatcher, injector, ngZone, document, directionality, location, outsideClickDispatcher);
292
+ this.overlayRef = this.overlay.create({
293
+ positionStrategy: this.overlay.position().global().centerHorizontally().centerVertically(),
294
+ hasBackdrop: true
295
+ });
296
+ }
297
+ set overlayMessage(value) {
298
+ this._overlayMessage$.next(value);
299
+ }
300
+ showOverlay() {
301
+ if (this.overLayTemplate) {
302
+ this.overlayRef.attach(new TemplatePortal(this.overLayTemplate, this.viewContainerRef));
303
+ }
304
+ else if (this.overlayComponent) {
305
+ const ref = this.overlayRef.attach(new ComponentPortal(this.overlayComponent));
306
+ if (this.overlayComponent === MessageOverlayComponent) {
307
+ ref.instance.message$ = this._overlayMessage$.asObservable();
308
+ }
309
+ }
310
+ else {
311
+ const ref = this.overlayRef.attach(new ComponentPortal(MessageOverlayComponent));
312
+ ref.instance.message$ = this._overlayMessage$.asObservable();
313
+ }
314
+ }
315
+ hideOverlay() {
316
+ this.overlayRef.detach();
317
+ }
318
+ }
319
+ NgssmOverlayBuilder.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgssmOverlayBuilder, deps: [{ token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: DOCUMENT }, { token: i1.ScrollStrategyOptions }, { token: i0.ComponentFactoryResolver }, { token: i1.OverlayPositionBuilder }, { token: i1.OverlayKeyboardDispatcher }, { token: i0.Injector }, { token: i0.NgZone }, { token: i2$1.Directionality }, { token: i3$1.Location }, { token: i1.OverlayOutsideClickDispatcher }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Injectable });
320
+ NgssmOverlayBuilder.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgssmOverlayBuilder });
321
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgssmOverlayBuilder, decorators: [{
322
+ type: Injectable
323
+ }], ctorParameters: function () {
324
+ return [{ type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{
325
+ type: Inject,
326
+ args: [DOCUMENT]
327
+ }] }, { type: i1.ScrollStrategyOptions }, { type: i0.ComponentFactoryResolver }, { type: i1.OverlayPositionBuilder }, { type: i1.OverlayKeyboardDispatcher }, { type: i0.Injector }, { type: i0.NgZone }, { type: i2$1.Directionality }, { type: i3$1.Location }, { type: i1.OverlayOutsideClickDispatcher }, { type: i0.Renderer2 }];
328
+ } });
329
+
280
330
  class FileSizePipe {
281
331
  constructor() {
282
332
  this.units = ['bytes', 'KB', 'MB', 'GB'];
@@ -533,33 +583,49 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImpor
533
583
  }]
534
584
  }], ctorParameters: function () { return [{ type: i1$2.MatSnackBar }]; } });
535
585
 
536
- const regexValidator = (control) => {
537
- try {
538
- const regex = new RegExp(control.value);
539
- if (regex.test('')) {
540
- // nothing here
586
+ const NGSSM_REGEX_EDITOR_VALIDATOR = new InjectionToken('NGSSM_NGSSM_REGEX_EDITOR_VALIDATORREDUCER');
587
+ const defaultRegexEditorValidator = {
588
+ validatePattern: (pattern) => {
589
+ try {
590
+ const regex = new RegExp(pattern);
591
+ if (regex.test('')) {
592
+ return { isValid: true };
593
+ }
541
594
  }
595
+ catch (error) {
596
+ return { isValid: false, error: error.message };
597
+ }
598
+ return { isValid: true };
599
+ },
600
+ isMatch: (pattern, testString) => {
601
+ try {
602
+ const regex = new RegExp(pattern);
603
+ if (regex.test(testString)) {
604
+ return true;
605
+ }
606
+ }
607
+ catch (error) {
608
+ return false;
609
+ }
610
+ return false;
542
611
  }
543
- catch (error) {
544
- return {
545
- regex: error.message
546
- };
547
- }
548
- return null;
549
612
  };
613
+
550
614
  class NgssmRegexEditorComponent {
551
- constructor() {
615
+ constructor(validator) {
552
616
  this._isRegexValid$ = new BehaviorSubject(null);
553
- this.regexControl = new FormControl(null, [Validators.required, regexValidator]);
554
617
  this.testStringControl = new FormControl('');
555
618
  this.closeEditor = new EventEmitter();
619
+ this.regexValidator = validator !== null && validator !== void 0 ? validator : defaultRegexEditorValidator;
620
+ this.regexControl = new FormControl(null, [Validators.required, (c) => this.validatedRegex(c)]);
556
621
  combineLatest([this.regexControl.valueChanges, this.testStringControl.valueChanges, this.regexControl.statusChanges]).subscribe((values) => {
557
622
  var _a, _b, _c;
558
623
  if (this.regexControl.invalid || ((_a = values[1]) !== null && _a !== void 0 ? _a : '').length === 0) {
559
624
  this._isRegexValid$.next(null);
560
625
  return;
561
626
  }
562
- this._isRegexValid$.next(new RegExp((_b = values[0]) !== null && _b !== void 0 ? _b : '').test((_c = values[1]) !== null && _c !== void 0 ? _c : ''));
627
+ const isMatch = this.regexValidator.isMatch((_b = values[0]) !== null && _b !== void 0 ? _b : '', (_c = values[1]) !== null && _c !== void 0 ? _c : '');
628
+ this._isRegexValid$.next(isMatch);
563
629
  });
564
630
  }
565
631
  set regex(value) {
@@ -575,13 +641,29 @@ class NgssmRegexEditorComponent {
575
641
  var _a;
576
642
  this.closeEditor.emit((_a = this.regexControl.value) !== null && _a !== void 0 ? _a : '');
577
643
  }
644
+ validatedRegex(control) {
645
+ const result = this.regexValidator.validatePattern(control.value);
646
+ if (result.isValid) {
647
+ return null;
648
+ }
649
+ return {
650
+ regex: result.error
651
+ };
652
+ }
578
653
  }
579
- NgssmRegexEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgssmRegexEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
654
+ NgssmRegexEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgssmRegexEditorComponent, deps: [{ token: NGSSM_REGEX_EDITOR_VALIDATOR, optional: true }], target: i0.ɵɵFactoryTarget.Component });
580
655
  NgssmRegexEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.5", 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$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3$1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$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: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.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: i1$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
581
656
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgssmRegexEditorComponent, decorators: [{
582
657
  type: Component,
583
658
  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"] }]
584
- }], ctorParameters: function () { return []; }, propDecorators: { closeEditor: [{
659
+ }], ctorParameters: function () {
660
+ return [{ type: undefined, decorators: [{
661
+ type: Inject,
662
+ args: [NGSSM_REGEX_EDITOR_VALIDATOR]
663
+ }, {
664
+ type: Optional
665
+ }] }];
666
+ }, propDecorators: { closeEditor: [{
585
667
  type: Output
586
668
  }], regex: [{
587
669
  type: Input
@@ -614,6 +696,7 @@ class NgssmRegexEditorToggleComponent {
614
696
  this._isOpen$.next(false);
615
697
  if (regex !== undefined && this.inputElement) {
616
698
  this.inputElement.value = regex;
699
+ this.inputElement.dispatchEvent(new Event('input', { bubbles: true }));
617
700
  }
618
701
  }
619
702
  }
@@ -636,5 +719,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImpor
636
719
  * Generated bundle index. Do not edit.
637
720
  */
638
721
 
639
- export { ComponentOverlayDirective, DefaultErrorStateMatcher, EmptyOverlayComponent, FilePickerComponent, FileSizePipe, MaterialImportsModule, MessageOverlayComponent, NgssmNotificationErrorComponent, NgssmNotificationSuccessComponent, NgssmNotifierService, NgssmRegexEditorComponent, NgssmRegexEditorToggleComponent, NgssmToolkitModule, NotFoundComponent, noop, regexValidator, useDefaultErrorStateMatcher };
722
+ export { ComponentOverlayDirective, DefaultErrorStateMatcher, EmptyOverlayComponent, FilePickerComponent, FileSizePipe, MaterialImportsModule, MessageOverlayComponent, NGSSM_REGEX_EDITOR_VALIDATOR, NgssmNotificationErrorComponent, NgssmNotificationSuccessComponent, NgssmNotifierService, NgssmOverlayBuilder, NgssmRegexEditorComponent, NgssmRegexEditorToggleComponent, NgssmToolkitModule, NotFoundComponent, defaultRegexEditorValidator, noop, useDefaultErrorStateMatcher };
640
723
  //# sourceMappingURL=ngssm-toolkit.mjs.map