ngssm-tree 15.3.4 → 15.3.5

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.
@@ -52,9 +52,9 @@ export class NgssmBreadcrumbComponent extends NgSsmComponent {
52
52
  }
53
53
  }
54
54
  }
55
- NgssmBreadcrumbComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NgssmBreadcrumbComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component });
56
- NgssmBreadcrumbComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.3", type: NgssmBreadcrumbComponent, isStandalone: true, selector: "ngssm-breadcrumb", inputs: { treeId: "treeId" }, usesInheritance: true, ngImport: i0, template: "<div class=\"flex-row-center\">\n <mat-icon class=\"fa-solid fa-folder-tree\" color=\"primary\"></mat-icon>\n <span *ngFor=\"let node of nodes$ | async; last as last\" class=\"flex-row-center\">\n\n <button mat-button [disabled]=\"last\" (click)=\"selectNode(node)\">\n {{node.label}}\n </button>\n\n <div class=\"ngssm-breadcrumb-separator\" *ngIf=\"!last\">/</div>\n </span>\n</div>", styles: [".ngssm-breadcrumb-separator{font-weight:700}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
57
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NgssmBreadcrumbComponent, decorators: [{
55
+ NgssmBreadcrumbComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: NgssmBreadcrumbComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component });
56
+ NgssmBreadcrumbComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.4", type: NgssmBreadcrumbComponent, isStandalone: true, selector: "ngssm-breadcrumb", inputs: { treeId: "treeId" }, usesInheritance: true, ngImport: i0, template: "<div class=\"flex-row-center\">\n <mat-icon class=\"fa-solid fa-folder-tree\" color=\"primary\"></mat-icon>\n <span *ngFor=\"let node of nodes$ | async; last as last\" class=\"flex-row-center\">\n\n <button mat-button [disabled]=\"last\" (click)=\"selectNode(node)\">\n {{node.label}}\n </button>\n\n <div class=\"ngssm-breadcrumb-separator\" *ngIf=\"!last\">/</div>\n </span>\n</div>", styles: [".ngssm-breadcrumb-separator{font-weight:700}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
57
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: NgssmBreadcrumbComponent, decorators: [{
58
58
  type: Component,
59
59
  args: [{ selector: 'ngssm-breadcrumb', standalone: true, imports: [CommonModule, MatIconModule, MatButtonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex-row-center\">\n <mat-icon class=\"fa-solid fa-folder-tree\" color=\"primary\"></mat-icon>\n <span *ngFor=\"let node of nodes$ | async; last as last\" class=\"flex-row-center\">\n\n <button mat-button [disabled]=\"last\" (click)=\"selectNode(node)\">\n {{node.label}}\n </button>\n\n <div class=\"ngssm-breadcrumb-separator\" *ngIf=\"!last\">/</div>\n </span>\n</div>", styles: [".ngssm-breadcrumb-separator{font-weight:700}\n"] }]
60
60
  }], ctorParameters: function () { return [{ type: i1.Store }]; }, propDecorators: { treeId: [{
@@ -117,9 +117,9 @@ export class NgssmTreeComponent extends NgSsmComponent {
117
117
  }
118
118
  }
119
119
  }
120
- NgssmTreeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NgssmTreeComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component });
121
- NgssmTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.3", type: NgssmTreeComponent, isStandalone: true, selector: "ngssm-tree", inputs: { treeConfig: "treeConfig" }, usesInheritance: true, ngImport: i0, template: "<mat-card class=\"flex-column-stretch fxFlex\">\n <mat-card-content class=\"flex-column-stretch fxFlex\" *ngIf=\"(treeConfig$ | async) as treeConfig\">\n <cdk-virtual-scroll-viewport itemSize=\"30\" class=\"fxFlex\">\n <div *cdkVirtualFor=\"let item of displayedItems$ | async; trackBy: getItemId\" class=\"ngssm-tree-node\"\n [style.padding-left.px]=\"item.node.level * 20\" (click)=\"selectNode(item.node)\"\n [ngClass]=\"{'selected' : (selectedNodeId$ | async) === item.node.node.nodeId}\">\n <mat-icon class=\"fa-solid fa-chevron-right\"\n *ngIf=\"item.node.node.isExpandable && item.node.isExpanded === false && item.node.status !== dataStatus.loading\"\n (click)=\"$event.stopPropagation();expand(item.node);\"></mat-icon>\n <mat-icon class=\"fa-solid fa-chevron-down\"\n *ngIf=\"item.node.node.isExpandable && item.node.isExpanded && item.node.status !== dataStatus.loading\"\n (click)=\"$event.stopPropagation();collapse(item.node)\"></mat-icon>\n <mat-spinner diameter=\"20\"\n *ngIf=\"item.node.node.isExpandable && item.node.status === dataStatus.loading\"></mat-spinner>\n <span *ngIf=\"!item.node.node.isExpandable\" class=\"not-expandable-padding\"></span>\n\n <mat-icon class=\"{{treeConfig.iconClasses[item.node.node.type]}}\" color=\"primary\"></mat-icon>\n\n <span class=\"ngssm-tree-node-label\">\n {{item.node.node.label}}\n </span>\n <span class=\"fxFlex\"></span>\n <i class=\"fa-solid fa-magnifying-glass search-icon\" *ngIf=\"item.canSearch\"\n (click)=\"$event.stopPropagation();displaySearchDialog(item.node)\">\n </i>\n </div>\n </cdk-virtual-scroll-viewport>\n </mat-card-content>\n</mat-card>", styles: [":host{display:flex;flex-direction:column}:host .ngssm-tree-node{height:30px;display:flex;flex-direction:row;align-items:center;padding-right:12px}:host .ngssm-tree-node .fa-folder{margin-right:4px}:host .ngssm-tree-node .fa-chevron-right:hover{cursor:pointer}:host .ngssm-tree-node.selected{background-color:#e4e6f1}:host .ngssm-tree-node:hover{cursor:pointer}:host .ngssm-tree-node:hover .search-icon{display:unset}:host .ngssm-tree-node:hover:not(.selected){background-color:#f3f3f3}:host .not-expandable-padding{width:24px}:host .search-icon{font-size:12px;display:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ScrollingModule }, { kind: "directive", type: i3.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i3.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i3.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { 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: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i6.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
122
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NgssmTreeComponent, decorators: [{
120
+ NgssmTreeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: NgssmTreeComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component });
121
+ NgssmTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.4", type: NgssmTreeComponent, isStandalone: true, selector: "ngssm-tree", inputs: { treeConfig: "treeConfig" }, usesInheritance: true, ngImport: i0, template: "<mat-card class=\"flex-column-stretch fxFlex\">\n <mat-card-content class=\"flex-column-stretch fxFlex\" *ngIf=\"(treeConfig$ | async) as treeConfig\">\n <cdk-virtual-scroll-viewport itemSize=\"30\" class=\"fxFlex\">\n <div *cdkVirtualFor=\"let item of displayedItems$ | async; trackBy: getItemId\" class=\"ngssm-tree-node\"\n [style.padding-left.px]=\"item.node.level * 20\" (click)=\"selectNode(item.node)\"\n [ngClass]=\"{'selected' : (selectedNodeId$ | async) === item.node.node.nodeId}\">\n <mat-icon class=\"fa-solid fa-chevron-right\"\n *ngIf=\"item.node.node.isExpandable && item.node.isExpanded === false && item.node.status !== dataStatus.loading\"\n (click)=\"$event.stopPropagation();expand(item.node);\"></mat-icon>\n <mat-icon class=\"fa-solid fa-chevron-down\"\n *ngIf=\"item.node.node.isExpandable && item.node.isExpanded && item.node.status !== dataStatus.loading\"\n (click)=\"$event.stopPropagation();collapse(item.node)\"></mat-icon>\n <mat-spinner diameter=\"20\"\n *ngIf=\"item.node.node.isExpandable && item.node.status === dataStatus.loading\"></mat-spinner>\n <span *ngIf=\"!item.node.node.isExpandable\" class=\"not-expandable-padding\"></span>\n\n <mat-icon class=\"{{treeConfig.iconClasses[item.node.node.type]}}\" color=\"primary\"></mat-icon>\n\n <span class=\"ngssm-tree-node-label\">\n {{item.node.node.label}}\n </span>\n <span class=\"fxFlex\"></span>\n <i class=\"fa-solid fa-magnifying-glass search-icon\" *ngIf=\"item.canSearch\"\n (click)=\"$event.stopPropagation();displaySearchDialog(item.node)\">\n </i>\n </div>\n </cdk-virtual-scroll-viewport>\n </mat-card-content>\n</mat-card>", styles: [":host{display:flex;flex-direction:column}:host .ngssm-tree-node{height:30px;display:flex;flex-direction:row;align-items:center;padding-right:12px}:host .ngssm-tree-node .fa-folder{margin-right:4px}:host .ngssm-tree-node .fa-chevron-right:hover{cursor:pointer}:host .ngssm-tree-node.selected{background-color:#e4e6f1}:host .ngssm-tree-node:hover{cursor:pointer}:host .ngssm-tree-node:hover .search-icon{display:unset}:host .ngssm-tree-node:hover:not(.selected){background-color:#f3f3f3}:host .not-expandable-padding{width:24px}:host .search-icon{font-size:12px;display:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ScrollingModule }, { kind: "directive", type: i3.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i3.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i3.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { 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: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i6.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
122
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: NgssmTreeComponent, decorators: [{
123
123
  type: Component,
124
124
  args: [{ selector: 'ngssm-tree', standalone: true, imports: [CommonModule, ScrollingModule, MatCardModule, MatIconModule, MatProgressSpinnerModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-card class=\"flex-column-stretch fxFlex\">\n <mat-card-content class=\"flex-column-stretch fxFlex\" *ngIf=\"(treeConfig$ | async) as treeConfig\">\n <cdk-virtual-scroll-viewport itemSize=\"30\" class=\"fxFlex\">\n <div *cdkVirtualFor=\"let item of displayedItems$ | async; trackBy: getItemId\" class=\"ngssm-tree-node\"\n [style.padding-left.px]=\"item.node.level * 20\" (click)=\"selectNode(item.node)\"\n [ngClass]=\"{'selected' : (selectedNodeId$ | async) === item.node.node.nodeId}\">\n <mat-icon class=\"fa-solid fa-chevron-right\"\n *ngIf=\"item.node.node.isExpandable && item.node.isExpanded === false && item.node.status !== dataStatus.loading\"\n (click)=\"$event.stopPropagation();expand(item.node);\"></mat-icon>\n <mat-icon class=\"fa-solid fa-chevron-down\"\n *ngIf=\"item.node.node.isExpandable && item.node.isExpanded && item.node.status !== dataStatus.loading\"\n (click)=\"$event.stopPropagation();collapse(item.node)\"></mat-icon>\n <mat-spinner diameter=\"20\"\n *ngIf=\"item.node.node.isExpandable && item.node.status === dataStatus.loading\"></mat-spinner>\n <span *ngIf=\"!item.node.node.isExpandable\" class=\"not-expandable-padding\"></span>\n\n <mat-icon class=\"{{treeConfig.iconClasses[item.node.node.type]}}\" color=\"primary\"></mat-icon>\n\n <span class=\"ngssm-tree-node-label\">\n {{item.node.node.label}}\n </span>\n <span class=\"fxFlex\"></span>\n <i class=\"fa-solid fa-magnifying-glass search-icon\" *ngIf=\"item.canSearch\"\n (click)=\"$event.stopPropagation();displaySearchDialog(item.node)\">\n </i>\n </div>\n </cdk-virtual-scroll-viewport>\n </mat-card-content>\n</mat-card>", styles: [":host{display:flex;flex-direction:column}:host .ngssm-tree-node{height:30px;display:flex;flex-direction:row;align-items:center;padding-right:12px}:host .ngssm-tree-node .fa-folder{margin-right:4px}:host .ngssm-tree-node .fa-chevron-right:hover{cursor:pointer}:host .ngssm-tree-node.selected{background-color:#e4e6f1}:host .ngssm-tree-node:hover{cursor:pointer}:host .ngssm-tree-node:hover .search-icon{display:unset}:host .ngssm-tree-node:hover:not(.selected){background-color:#f3f3f3}:host .not-expandable-padding{width:24px}:host .search-icon{font-size:12px;display:none}\n"] }]
125
125
  }], ctorParameters: function () { return [{ type: i1.Store }]; }, propDecorators: { treeConfig: [{
@@ -97,9 +97,9 @@ export class NgssmTreeSearchDialogComponent extends NgSsmComponent {
97
97
  };
98
98
  }
99
99
  }
100
- NgssmTreeSearchDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NgssmTreeSearchDialogComponent, deps: [{ token: i1.Store }, { token: NGSSM_TREE_DATA_SERVICE, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
101
- NgssmTreeSearchDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.3", type: NgssmTreeSearchDialogComponent, isStandalone: true, selector: "ngssm-ngssm-tree-search-dialog", viewQueries: [{ propertyName: "resultsViewerContainer", first: true, predicate: ["resultsViewerContainer"], descendants: true, read: ViewContainerRef }], usesInheritance: true, ngImport: i0, template: "<h1 mat-dialog-title>Tree search dialog</h1>\n<mat-dialog-content class=\"flex-column-stretch fxFlex\">\n <mat-card class=\"flex-column-stretch\">\n <mat-card-content class=\"flex-row-center\">\n <mat-form-field class=\"with-margin-right-12 fxFlex\">\n <mat-label>Starts search in</mat-label>\n <input matInput readonly [formControl]=\"searchRootPathControl\">\n </mat-form-field>\n\n <mat-form-field class=\"fxFlex with-margin-right-12\">\n <mat-label>Search pattern</mat-label>\n <input matInput [formControl]=\"searchPatternControl\">\n <mat-error *ngIf=\"searchPatternControl.errors?.['regex']\">\n {{searchPatternControl.errors?.['regex']}}\n </mat-error>\n </mat-form-field>\n\n <button mat-stroked-button color=\"primary\" [disabled]=\"searchPatternControl.invalid\" (click)=\"search()\"\n *ngIf=\"(searchStatus$ | async) !== searchStatus.inProgress\">\n <mat-icon class=\"fa-solid fa-magnifying-glass\"></mat-icon>\n Search\n </button>\n\n <button mat-raised-button color=\"accent\" (click)=\"abort()\"\n *ngIf=\"(searchStatus$ | async) === searchStatus.inProgress\">\n <mat-icon class=\"fa-solid fa-ban\"></mat-icon>\n Abort\n </button>\n </mat-card-content>\n <mat-card-footer class=\"flex-row-center\" *ngIf=\"(searchStatus$ | async) === searchStatus.inProgress\">\n <mat-spinner [diameter]=\"20\"></mat-spinner>\n {{ currentSearchedPath$ | async }}\n </mat-card-footer>\n </mat-card>\n <mat-card class=\"flex-column-stretch fxFlex with-margin-top-8\">\n <ng-container #resultsViewerContainer></ng-container>\n </mat-card>\n</mat-dialog-content>\n<mat-dialog-actions class=\"flex-row-center\">\n <span class=\"fxFlex\"></span>\n <button mat-button (click)=\"close()\">Close</button>\n</mat-dialog-actions>", styles: [":host{display:flex;flex-direction:column;height:100%}:host .mat-mdc-dialog-content{max-height:unset!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { 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: 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: MatDialogModule }, { kind: "directive", type: i6.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i6.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i6.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { 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: MatCardModule }, { kind: "component", type: i8.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i8.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i8.MatCardFooter, selector: "mat-card-footer" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i10.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
102
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NgssmTreeSearchDialogComponent, decorators: [{
100
+ NgssmTreeSearchDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: NgssmTreeSearchDialogComponent, deps: [{ token: i1.Store }, { token: NGSSM_TREE_DATA_SERVICE, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
101
+ NgssmTreeSearchDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.4", type: NgssmTreeSearchDialogComponent, isStandalone: true, selector: "ngssm-ngssm-tree-search-dialog", viewQueries: [{ propertyName: "resultsViewerContainer", first: true, predicate: ["resultsViewerContainer"], descendants: true, read: ViewContainerRef }], usesInheritance: true, ngImport: i0, template: "<h1 mat-dialog-title>Tree search dialog</h1>\n<mat-dialog-content class=\"flex-column-stretch fxFlex\">\n <mat-card class=\"flex-column-stretch\">\n <mat-card-content class=\"flex-row-center\">\n <mat-form-field class=\"with-margin-right-12 fxFlex\">\n <mat-label>Starts search in</mat-label>\n <input matInput readonly [formControl]=\"searchRootPathControl\">\n </mat-form-field>\n\n <mat-form-field class=\"fxFlex with-margin-right-12\">\n <mat-label>Search pattern</mat-label>\n <input matInput [formControl]=\"searchPatternControl\">\n <mat-error *ngIf=\"searchPatternControl.errors?.['regex']\">\n {{searchPatternControl.errors?.['regex']}}\n </mat-error>\n </mat-form-field>\n\n <button mat-stroked-button color=\"primary\" [disabled]=\"searchPatternControl.invalid\" (click)=\"search()\"\n *ngIf=\"(searchStatus$ | async) !== searchStatus.inProgress\">\n <mat-icon class=\"fa-solid fa-magnifying-glass\"></mat-icon>\n Search\n </button>\n\n <button mat-raised-button color=\"accent\" (click)=\"abort()\"\n *ngIf=\"(searchStatus$ | async) === searchStatus.inProgress\">\n <mat-icon class=\"fa-solid fa-ban\"></mat-icon>\n Abort\n </button>\n </mat-card-content>\n <mat-card-footer class=\"flex-row-center\" *ngIf=\"(searchStatus$ | async) === searchStatus.inProgress\">\n <mat-spinner [diameter]=\"20\"></mat-spinner>\n {{ currentSearchedPath$ | async }}\n </mat-card-footer>\n </mat-card>\n <mat-card class=\"flex-column-stretch fxFlex with-margin-top-8\">\n <ng-container #resultsViewerContainer></ng-container>\n </mat-card>\n</mat-dialog-content>\n<mat-dialog-actions class=\"flex-row-center\">\n <span class=\"fxFlex\"></span>\n <button mat-button (click)=\"close()\">Close</button>\n</mat-dialog-actions>", styles: [":host{display:flex;flex-direction:column;height:100%}:host .mat-mdc-dialog-content{max-height:unset!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { 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: 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: MatDialogModule }, { kind: "directive", type: i6.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i6.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i6.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { 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: MatCardModule }, { kind: "component", type: i8.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i8.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i8.MatCardFooter, selector: "mat-card-footer" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i10.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
102
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: NgssmTreeSearchDialogComponent, decorators: [{
103
103
  type: Component,
104
104
  args: [{ selector: 'ngssm-ngssm-tree-search-dialog', standalone: true, imports: [
105
105
  CommonModule,
@@ -41,9 +41,9 @@ export class TreeNodeLoadingEffect {
41
41
  });
42
42
  }
43
43
  }
44
- TreeNodeLoadingEffect.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreeNodeLoadingEffect, deps: [{ token: NGSSM_TREE_DATA_SERVICE, optional: true }, { token: i1.Logger }], target: i0.ɵɵFactoryTarget.Injectable });
45
- TreeNodeLoadingEffect.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreeNodeLoadingEffect });
46
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreeNodeLoadingEffect, decorators: [{
44
+ TreeNodeLoadingEffect.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreeNodeLoadingEffect, deps: [{ token: NGSSM_TREE_DATA_SERVICE, optional: true }, { token: i1.Logger }], target: i0.ɵɵFactoryTarget.Injectable });
45
+ TreeNodeLoadingEffect.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreeNodeLoadingEffect });
46
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreeNodeLoadingEffect, decorators: [{
47
47
  type: Injectable
48
48
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
49
49
  type: Inject,
@@ -76,9 +76,9 @@ export class TreeNodesSearchingEffect {
76
76
  this.dialog = undefined;
77
77
  }
78
78
  }
79
- TreeNodesSearchingEffect.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreeNodesSearchingEffect, deps: [{ token: i1.MatDialog }, { token: i2.Logger }], target: i0.ɵɵFactoryTarget.Injectable });
80
- TreeNodesSearchingEffect.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreeNodesSearchingEffect });
81
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreeNodesSearchingEffect, decorators: [{
79
+ TreeNodesSearchingEffect.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreeNodesSearchingEffect, deps: [{ token: i1.MatDialog }, { token: i2.Logger }], target: i0.ɵɵFactoryTarget.Injectable });
80
+ TreeNodesSearchingEffect.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreeNodesSearchingEffect });
81
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreeNodesSearchingEffect, decorators: [{
82
82
  type: Injectable
83
83
  }], ctorParameters: function () { return [{ type: i1.MatDialog }, { type: i2.Logger }]; } });
84
84
  export const treeNodesSearchingEffectProvider = {
@@ -124,9 +124,9 @@ export class TreeNodeExpandReducer {
124
124
  return state;
125
125
  }
126
126
  }
127
- TreeNodeExpandReducer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreeNodeExpandReducer, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
128
- TreeNodeExpandReducer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreeNodeExpandReducer });
129
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreeNodeExpandReducer, decorators: [{
127
+ TreeNodeExpandReducer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreeNodeExpandReducer, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
128
+ TreeNodeExpandReducer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreeNodeExpandReducer });
129
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreeNodeExpandReducer, decorators: [{
130
130
  type: Injectable
131
131
  }] });
132
132
  export const treeNodeExpandReducerProvider = {
@@ -23,9 +23,9 @@ export class TreeNodeSelectionReducer {
23
23
  return state;
24
24
  }
25
25
  }
26
- TreeNodeSelectionReducer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreeNodeSelectionReducer, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
27
- TreeNodeSelectionReducer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreeNodeSelectionReducer });
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreeNodeSelectionReducer, decorators: [{
26
+ TreeNodeSelectionReducer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreeNodeSelectionReducer, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
27
+ TreeNodeSelectionReducer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreeNodeSelectionReducer });
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreeNodeSelectionReducer, decorators: [{
29
29
  type: Injectable
30
30
  }] });
31
31
  export const treeNodeSelectionReducerProvider = {
@@ -82,9 +82,9 @@ export class TreeNodesSearchReducer {
82
82
  return state;
83
83
  }
84
84
  }
85
- TreeNodesSearchReducer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreeNodesSearchReducer, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
86
- TreeNodesSearchReducer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreeNodesSearchReducer });
87
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreeNodesSearchReducer, decorators: [{
85
+ TreeNodesSearchReducer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreeNodesSearchReducer, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
86
+ TreeNodesSearchReducer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreeNodesSearchReducer });
87
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreeNodesSearchReducer, decorators: [{
88
88
  type: Injectable
89
89
  }] });
90
90
  export const treeNodesSearchReducerProvider = {
@@ -46,9 +46,9 @@ export class TreeNodesReducer {
46
46
  return state;
47
47
  }
48
48
  }
49
- TreeNodesReducer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreeNodesReducer, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
50
- TreeNodesReducer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreeNodesReducer });
51
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreeNodesReducer, decorators: [{
49
+ TreeNodesReducer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreeNodesReducer, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
50
+ TreeNodesReducer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreeNodesReducer });
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreeNodesReducer, decorators: [{
52
52
  type: Injectable
53
53
  }] });
54
54
  export const treeNodesReducerProvider = {
@@ -40,9 +40,9 @@ export class TreesReducer {
40
40
  return state;
41
41
  }
42
42
  }
43
- TreesReducer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreesReducer, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
44
- TreesReducer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreesReducer });
45
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreesReducer, decorators: [{
43
+ TreesReducer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreesReducer, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
44
+ TreesReducer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreesReducer });
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreesReducer, decorators: [{
46
46
  type: Injectable
47
47
  }] });
48
48
  export const treesReducerProvider = {
@@ -224,9 +224,9 @@ class TreeNodeLoadingEffect {
224
224
  });
225
225
  }
226
226
  }
227
- TreeNodeLoadingEffect.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreeNodeLoadingEffect, deps: [{ token: NGSSM_TREE_DATA_SERVICE, optional: true }, { token: i1.Logger }], target: i0.ɵɵFactoryTarget.Injectable });
228
- TreeNodeLoadingEffect.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreeNodeLoadingEffect });
229
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreeNodeLoadingEffect, decorators: [{
227
+ TreeNodeLoadingEffect.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreeNodeLoadingEffect, deps: [{ token: NGSSM_TREE_DATA_SERVICE, optional: true }, { token: i1.Logger }], target: i0.ɵɵFactoryTarget.Injectable });
228
+ TreeNodeLoadingEffect.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreeNodeLoadingEffect });
229
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreeNodeLoadingEffect, decorators: [{
230
230
  type: Injectable
231
231
  }], ctorParameters: function () {
232
232
  return [{ type: undefined, decorators: [{
@@ -349,9 +349,9 @@ class NgssmTreeComponent extends NgSsmComponent {
349
349
  }
350
350
  }
351
351
  }
352
- NgssmTreeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NgssmTreeComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component });
353
- NgssmTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.3", type: NgssmTreeComponent, isStandalone: true, selector: "ngssm-tree", inputs: { treeConfig: "treeConfig" }, usesInheritance: true, ngImport: i0, template: "<mat-card class=\"flex-column-stretch fxFlex\">\n <mat-card-content class=\"flex-column-stretch fxFlex\" *ngIf=\"(treeConfig$ | async) as treeConfig\">\n <cdk-virtual-scroll-viewport itemSize=\"30\" class=\"fxFlex\">\n <div *cdkVirtualFor=\"let item of displayedItems$ | async; trackBy: getItemId\" class=\"ngssm-tree-node\"\n [style.padding-left.px]=\"item.node.level * 20\" (click)=\"selectNode(item.node)\"\n [ngClass]=\"{'selected' : (selectedNodeId$ | async) === item.node.node.nodeId}\">\n <mat-icon class=\"fa-solid fa-chevron-right\"\n *ngIf=\"item.node.node.isExpandable && item.node.isExpanded === false && item.node.status !== dataStatus.loading\"\n (click)=\"$event.stopPropagation();expand(item.node);\"></mat-icon>\n <mat-icon class=\"fa-solid fa-chevron-down\"\n *ngIf=\"item.node.node.isExpandable && item.node.isExpanded && item.node.status !== dataStatus.loading\"\n (click)=\"$event.stopPropagation();collapse(item.node)\"></mat-icon>\n <mat-spinner diameter=\"20\"\n *ngIf=\"item.node.node.isExpandable && item.node.status === dataStatus.loading\"></mat-spinner>\n <span *ngIf=\"!item.node.node.isExpandable\" class=\"not-expandable-padding\"></span>\n\n <mat-icon class=\"{{treeConfig.iconClasses[item.node.node.type]}}\" color=\"primary\"></mat-icon>\n\n <span class=\"ngssm-tree-node-label\">\n {{item.node.node.label}}\n </span>\n <span class=\"fxFlex\"></span>\n <i class=\"fa-solid fa-magnifying-glass search-icon\" *ngIf=\"item.canSearch\"\n (click)=\"$event.stopPropagation();displaySearchDialog(item.node)\">\n </i>\n </div>\n </cdk-virtual-scroll-viewport>\n </mat-card-content>\n</mat-card>", styles: [":host{display:flex;flex-direction:column}:host .ngssm-tree-node{height:30px;display:flex;flex-direction:row;align-items:center;padding-right:12px}:host .ngssm-tree-node .fa-folder{margin-right:4px}:host .ngssm-tree-node .fa-chevron-right:hover{cursor:pointer}:host .ngssm-tree-node.selected{background-color:#e4e6f1}:host .ngssm-tree-node:hover{cursor:pointer}:host .ngssm-tree-node:hover .search-icon{display:unset}:host .ngssm-tree-node:hover:not(.selected){background-color:#f3f3f3}:host .not-expandable-padding{width:24px}:host .search-icon{font-size:12px;display:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ScrollingModule }, { kind: "directive", type: i3.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i3.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i3.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i8.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i8.MatCardContent, selector: "mat-card-content" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i6.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
354
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NgssmTreeComponent, decorators: [{
352
+ NgssmTreeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: NgssmTreeComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component });
353
+ NgssmTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.4", type: NgssmTreeComponent, isStandalone: true, selector: "ngssm-tree", inputs: { treeConfig: "treeConfig" }, usesInheritance: true, ngImport: i0, template: "<mat-card class=\"flex-column-stretch fxFlex\">\n <mat-card-content class=\"flex-column-stretch fxFlex\" *ngIf=\"(treeConfig$ | async) as treeConfig\">\n <cdk-virtual-scroll-viewport itemSize=\"30\" class=\"fxFlex\">\n <div *cdkVirtualFor=\"let item of displayedItems$ | async; trackBy: getItemId\" class=\"ngssm-tree-node\"\n [style.padding-left.px]=\"item.node.level * 20\" (click)=\"selectNode(item.node)\"\n [ngClass]=\"{'selected' : (selectedNodeId$ | async) === item.node.node.nodeId}\">\n <mat-icon class=\"fa-solid fa-chevron-right\"\n *ngIf=\"item.node.node.isExpandable && item.node.isExpanded === false && item.node.status !== dataStatus.loading\"\n (click)=\"$event.stopPropagation();expand(item.node);\"></mat-icon>\n <mat-icon class=\"fa-solid fa-chevron-down\"\n *ngIf=\"item.node.node.isExpandable && item.node.isExpanded && item.node.status !== dataStatus.loading\"\n (click)=\"$event.stopPropagation();collapse(item.node)\"></mat-icon>\n <mat-spinner diameter=\"20\"\n *ngIf=\"item.node.node.isExpandable && item.node.status === dataStatus.loading\"></mat-spinner>\n <span *ngIf=\"!item.node.node.isExpandable\" class=\"not-expandable-padding\"></span>\n\n <mat-icon class=\"{{treeConfig.iconClasses[item.node.node.type]}}\" color=\"primary\"></mat-icon>\n\n <span class=\"ngssm-tree-node-label\">\n {{item.node.node.label}}\n </span>\n <span class=\"fxFlex\"></span>\n <i class=\"fa-solid fa-magnifying-glass search-icon\" *ngIf=\"item.canSearch\"\n (click)=\"$event.stopPropagation();displaySearchDialog(item.node)\">\n </i>\n </div>\n </cdk-virtual-scroll-viewport>\n </mat-card-content>\n</mat-card>", styles: [":host{display:flex;flex-direction:column}:host .ngssm-tree-node{height:30px;display:flex;flex-direction:row;align-items:center;padding-right:12px}:host .ngssm-tree-node .fa-folder{margin-right:4px}:host .ngssm-tree-node .fa-chevron-right:hover{cursor:pointer}:host .ngssm-tree-node.selected{background-color:#e4e6f1}:host .ngssm-tree-node:hover{cursor:pointer}:host .ngssm-tree-node:hover .search-icon{display:unset}:host .ngssm-tree-node:hover:not(.selected){background-color:#f3f3f3}:host .not-expandable-padding{width:24px}:host .search-icon{font-size:12px;display:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ScrollingModule }, { kind: "directive", type: i3.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i3.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i3.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i8.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i8.MatCardContent, selector: "mat-card-content" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i6.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
354
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: NgssmTreeComponent, decorators: [{
355
355
  type: Component,
356
356
  args: [{ selector: 'ngssm-tree', standalone: true, imports: [CommonModule, ScrollingModule, MatCardModule, MatIconModule, MatProgressSpinnerModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-card class=\"flex-column-stretch fxFlex\">\n <mat-card-content class=\"flex-column-stretch fxFlex\" *ngIf=\"(treeConfig$ | async) as treeConfig\">\n <cdk-virtual-scroll-viewport itemSize=\"30\" class=\"fxFlex\">\n <div *cdkVirtualFor=\"let item of displayedItems$ | async; trackBy: getItemId\" class=\"ngssm-tree-node\"\n [style.padding-left.px]=\"item.node.level * 20\" (click)=\"selectNode(item.node)\"\n [ngClass]=\"{'selected' : (selectedNodeId$ | async) === item.node.node.nodeId}\">\n <mat-icon class=\"fa-solid fa-chevron-right\"\n *ngIf=\"item.node.node.isExpandable && item.node.isExpanded === false && item.node.status !== dataStatus.loading\"\n (click)=\"$event.stopPropagation();expand(item.node);\"></mat-icon>\n <mat-icon class=\"fa-solid fa-chevron-down\"\n *ngIf=\"item.node.node.isExpandable && item.node.isExpanded && item.node.status !== dataStatus.loading\"\n (click)=\"$event.stopPropagation();collapse(item.node)\"></mat-icon>\n <mat-spinner diameter=\"20\"\n *ngIf=\"item.node.node.isExpandable && item.node.status === dataStatus.loading\"></mat-spinner>\n <span *ngIf=\"!item.node.node.isExpandable\" class=\"not-expandable-padding\"></span>\n\n <mat-icon class=\"{{treeConfig.iconClasses[item.node.node.type]}}\" color=\"primary\"></mat-icon>\n\n <span class=\"ngssm-tree-node-label\">\n {{item.node.node.label}}\n </span>\n <span class=\"fxFlex\"></span>\n <i class=\"fa-solid fa-magnifying-glass search-icon\" *ngIf=\"item.canSearch\"\n (click)=\"$event.stopPropagation();displaySearchDialog(item.node)\">\n </i>\n </div>\n </cdk-virtual-scroll-viewport>\n </mat-card-content>\n</mat-card>", styles: [":host{display:flex;flex-direction:column}:host .ngssm-tree-node{height:30px;display:flex;flex-direction:row;align-items:center;padding-right:12px}:host .ngssm-tree-node .fa-folder{margin-right:4px}:host .ngssm-tree-node .fa-chevron-right:hover{cursor:pointer}:host .ngssm-tree-node.selected{background-color:#e4e6f1}:host .ngssm-tree-node:hover{cursor:pointer}:host .ngssm-tree-node:hover .search-icon{display:unset}:host .ngssm-tree-node:hover:not(.selected){background-color:#f3f3f3}:host .not-expandable-padding{width:24px}:host .search-icon{font-size:12px;display:none}\n"] }]
357
357
  }], ctorParameters: function () { return [{ type: i1.Store }]; }, propDecorators: { treeConfig: [{
@@ -400,9 +400,9 @@ class NgssmBreadcrumbComponent extends NgSsmComponent {
400
400
  }
401
401
  }
402
402
  }
403
- NgssmBreadcrumbComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NgssmBreadcrumbComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component });
404
- NgssmBreadcrumbComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.3", type: NgssmBreadcrumbComponent, isStandalone: true, selector: "ngssm-breadcrumb", inputs: { treeId: "treeId" }, usesInheritance: true, ngImport: i0, template: "<div class=\"flex-row-center\">\n <mat-icon class=\"fa-solid fa-folder-tree\" color=\"primary\"></mat-icon>\n <span *ngFor=\"let node of nodes$ | async; last as last\" class=\"flex-row-center\">\n\n <button mat-button [disabled]=\"last\" (click)=\"selectNode(node)\">\n {{node.label}}\n </button>\n\n <div class=\"ngssm-breadcrumb-separator\" *ngIf=\"!last\">/</div>\n </span>\n</div>", styles: [".ngssm-breadcrumb-separator{font-weight:700}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
405
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NgssmBreadcrumbComponent, decorators: [{
403
+ NgssmBreadcrumbComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: NgssmBreadcrumbComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component });
404
+ NgssmBreadcrumbComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.4", type: NgssmBreadcrumbComponent, isStandalone: true, selector: "ngssm-breadcrumb", inputs: { treeId: "treeId" }, usesInheritance: true, ngImport: i0, template: "<div class=\"flex-row-center\">\n <mat-icon class=\"fa-solid fa-folder-tree\" color=\"primary\"></mat-icon>\n <span *ngFor=\"let node of nodes$ | async; last as last\" class=\"flex-row-center\">\n\n <button mat-button [disabled]=\"last\" (click)=\"selectNode(node)\">\n {{node.label}}\n </button>\n\n <div class=\"ngssm-breadcrumb-separator\" *ngIf=\"!last\">/</div>\n </span>\n</div>", styles: [".ngssm-breadcrumb-separator{font-weight:700}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
405
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: NgssmBreadcrumbComponent, decorators: [{
406
406
  type: Component,
407
407
  args: [{ selector: 'ngssm-breadcrumb', standalone: true, imports: [CommonModule, MatIconModule, MatButtonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex-row-center\">\n <mat-icon class=\"fa-solid fa-folder-tree\" color=\"primary\"></mat-icon>\n <span *ngFor=\"let node of nodes$ | async; last as last\" class=\"flex-row-center\">\n\n <button mat-button [disabled]=\"last\" (click)=\"selectNode(node)\">\n {{node.label}}\n </button>\n\n <div class=\"ngssm-breadcrumb-separator\" *ngIf=\"!last\">/</div>\n </span>\n</div>", styles: [".ngssm-breadcrumb-separator{font-weight:700}\n"] }]
408
408
  }], ctorParameters: function () { return [{ type: i1.Store }]; }, propDecorators: { treeId: [{
@@ -482,9 +482,9 @@ class NgssmTreeSearchDialogComponent extends NgSsmComponent {
482
482
  };
483
483
  }
484
484
  }
485
- NgssmTreeSearchDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NgssmTreeSearchDialogComponent, deps: [{ token: i1.Store }, { token: NGSSM_TREE_DATA_SERVICE, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
486
- NgssmTreeSearchDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.3", type: NgssmTreeSearchDialogComponent, isStandalone: true, selector: "ngssm-ngssm-tree-search-dialog", viewQueries: [{ propertyName: "resultsViewerContainer", first: true, predicate: ["resultsViewerContainer"], descendants: true, read: ViewContainerRef }], usesInheritance: true, ngImport: i0, template: "<h1 mat-dialog-title>Tree search dialog</h1>\n<mat-dialog-content class=\"flex-column-stretch fxFlex\">\n <mat-card class=\"flex-column-stretch\">\n <mat-card-content class=\"flex-row-center\">\n <mat-form-field class=\"with-margin-right-12 fxFlex\">\n <mat-label>Starts search in</mat-label>\n <input matInput readonly [formControl]=\"searchRootPathControl\">\n </mat-form-field>\n\n <mat-form-field class=\"fxFlex with-margin-right-12\">\n <mat-label>Search pattern</mat-label>\n <input matInput [formControl]=\"searchPatternControl\">\n <mat-error *ngIf=\"searchPatternControl.errors?.['regex']\">\n {{searchPatternControl.errors?.['regex']}}\n </mat-error>\n </mat-form-field>\n\n <button mat-stroked-button color=\"primary\" [disabled]=\"searchPatternControl.invalid\" (click)=\"search()\"\n *ngIf=\"(searchStatus$ | async) !== searchStatus.inProgress\">\n <mat-icon class=\"fa-solid fa-magnifying-glass\"></mat-icon>\n Search\n </button>\n\n <button mat-raised-button color=\"accent\" (click)=\"abort()\"\n *ngIf=\"(searchStatus$ | async) === searchStatus.inProgress\">\n <mat-icon class=\"fa-solid fa-ban\"></mat-icon>\n Abort\n </button>\n </mat-card-content>\n <mat-card-footer class=\"flex-row-center\" *ngIf=\"(searchStatus$ | async) === searchStatus.inProgress\">\n <mat-spinner [diameter]=\"20\"></mat-spinner>\n {{ currentSearchedPath$ | async }}\n </mat-card-footer>\n </mat-card>\n <mat-card class=\"flex-column-stretch fxFlex with-margin-top-8\">\n <ng-container #resultsViewerContainer></ng-container>\n </mat-card>\n</mat-dialog-content>\n<mat-dialog-actions class=\"flex-row-center\">\n <span class=\"fxFlex\"></span>\n <button mat-button (click)=\"close()\">Close</button>\n</mat-dialog-actions>", styles: [":host{display:flex;flex-direction:column;height:100%}:host .mat-mdc-dialog-content{max-height:unset!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i4$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5$1.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: MatDialogModule }, { kind: "directive", type: i6$1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i6$1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i6$1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.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: MatCardModule }, { kind: "component", type: i8.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i8.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i8.MatCardFooter, selector: "mat-card-footer" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i6.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
487
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NgssmTreeSearchDialogComponent, decorators: [{
485
+ NgssmTreeSearchDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: NgssmTreeSearchDialogComponent, deps: [{ token: i1.Store }, { token: NGSSM_TREE_DATA_SERVICE, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
486
+ NgssmTreeSearchDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.4", type: NgssmTreeSearchDialogComponent, isStandalone: true, selector: "ngssm-ngssm-tree-search-dialog", viewQueries: [{ propertyName: "resultsViewerContainer", first: true, predicate: ["resultsViewerContainer"], descendants: true, read: ViewContainerRef }], usesInheritance: true, ngImport: i0, template: "<h1 mat-dialog-title>Tree search dialog</h1>\n<mat-dialog-content class=\"flex-column-stretch fxFlex\">\n <mat-card class=\"flex-column-stretch\">\n <mat-card-content class=\"flex-row-center\">\n <mat-form-field class=\"with-margin-right-12 fxFlex\">\n <mat-label>Starts search in</mat-label>\n <input matInput readonly [formControl]=\"searchRootPathControl\">\n </mat-form-field>\n\n <mat-form-field class=\"fxFlex with-margin-right-12\">\n <mat-label>Search pattern</mat-label>\n <input matInput [formControl]=\"searchPatternControl\">\n <mat-error *ngIf=\"searchPatternControl.errors?.['regex']\">\n {{searchPatternControl.errors?.['regex']}}\n </mat-error>\n </mat-form-field>\n\n <button mat-stroked-button color=\"primary\" [disabled]=\"searchPatternControl.invalid\" (click)=\"search()\"\n *ngIf=\"(searchStatus$ | async) !== searchStatus.inProgress\">\n <mat-icon class=\"fa-solid fa-magnifying-glass\"></mat-icon>\n Search\n </button>\n\n <button mat-raised-button color=\"accent\" (click)=\"abort()\"\n *ngIf=\"(searchStatus$ | async) === searchStatus.inProgress\">\n <mat-icon class=\"fa-solid fa-ban\"></mat-icon>\n Abort\n </button>\n </mat-card-content>\n <mat-card-footer class=\"flex-row-center\" *ngIf=\"(searchStatus$ | async) === searchStatus.inProgress\">\n <mat-spinner [diameter]=\"20\"></mat-spinner>\n {{ currentSearchedPath$ | async }}\n </mat-card-footer>\n </mat-card>\n <mat-card class=\"flex-column-stretch fxFlex with-margin-top-8\">\n <ng-container #resultsViewerContainer></ng-container>\n </mat-card>\n</mat-dialog-content>\n<mat-dialog-actions class=\"flex-row-center\">\n <span class=\"fxFlex\"></span>\n <button mat-button (click)=\"close()\">Close</button>\n</mat-dialog-actions>", styles: [":host{display:flex;flex-direction:column;height:100%}:host .mat-mdc-dialog-content{max-height:unset!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i4$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5$1.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: MatDialogModule }, { kind: "directive", type: i6$1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i6$1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i6$1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.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: MatCardModule }, { kind: "component", type: i8.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i8.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i8.MatCardFooter, selector: "mat-card-footer" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i6.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
487
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: NgssmTreeSearchDialogComponent, decorators: [{
488
488
  type: Component,
489
489
  args: [{ selector: 'ngssm-ngssm-tree-search-dialog', standalone: true, imports: [
490
490
  CommonModule,
@@ -578,9 +578,9 @@ class TreeNodesSearchingEffect {
578
578
  this.dialog = undefined;
579
579
  }
580
580
  }
581
- TreeNodesSearchingEffect.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreeNodesSearchingEffect, deps: [{ token: i6$1.MatDialog }, { token: i1.Logger }], target: i0.ɵɵFactoryTarget.Injectable });
582
- TreeNodesSearchingEffect.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreeNodesSearchingEffect });
583
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreeNodesSearchingEffect, decorators: [{
581
+ TreeNodesSearchingEffect.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreeNodesSearchingEffect, deps: [{ token: i6$1.MatDialog }, { token: i1.Logger }], target: i0.ɵɵFactoryTarget.Injectable });
582
+ TreeNodesSearchingEffect.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreeNodesSearchingEffect });
583
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreeNodesSearchingEffect, decorators: [{
584
584
  type: Injectable
585
585
  }], ctorParameters: function () { return [{ type: i6$1.MatDialog }, { type: i1.Logger }]; } });
586
586
  const treeNodesSearchingEffectProvider = {
@@ -708,9 +708,9 @@ class TreeNodeExpandReducer {
708
708
  return state;
709
709
  }
710
710
  }
711
- TreeNodeExpandReducer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreeNodeExpandReducer, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
712
- TreeNodeExpandReducer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreeNodeExpandReducer });
713
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreeNodeExpandReducer, decorators: [{
711
+ TreeNodeExpandReducer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreeNodeExpandReducer, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
712
+ TreeNodeExpandReducer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreeNodeExpandReducer });
713
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreeNodeExpandReducer, decorators: [{
714
714
  type: Injectable
715
715
  }] });
716
716
  const treeNodeExpandReducerProvider = {
@@ -739,9 +739,9 @@ class TreeNodeSelectionReducer {
739
739
  return state;
740
740
  }
741
741
  }
742
- TreeNodeSelectionReducer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreeNodeSelectionReducer, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
743
- TreeNodeSelectionReducer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreeNodeSelectionReducer });
744
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreeNodeSelectionReducer, decorators: [{
742
+ TreeNodeSelectionReducer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreeNodeSelectionReducer, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
743
+ TreeNodeSelectionReducer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreeNodeSelectionReducer });
744
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreeNodeSelectionReducer, decorators: [{
745
745
  type: Injectable
746
746
  }] });
747
747
  const treeNodeSelectionReducerProvider = {
@@ -829,9 +829,9 @@ class TreeNodesSearchReducer {
829
829
  return state;
830
830
  }
831
831
  }
832
- TreeNodesSearchReducer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreeNodesSearchReducer, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
833
- TreeNodesSearchReducer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreeNodesSearchReducer });
834
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreeNodesSearchReducer, decorators: [{
832
+ TreeNodesSearchReducer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreeNodesSearchReducer, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
833
+ TreeNodesSearchReducer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreeNodesSearchReducer });
834
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreeNodesSearchReducer, decorators: [{
835
835
  type: Injectable
836
836
  }] });
837
837
  const treeNodesSearchReducerProvider = {
@@ -881,9 +881,9 @@ class TreeNodesReducer {
881
881
  return state;
882
882
  }
883
883
  }
884
- TreeNodesReducer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreeNodesReducer, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
885
- TreeNodesReducer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreeNodesReducer });
886
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreeNodesReducer, decorators: [{
884
+ TreeNodesReducer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreeNodesReducer, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
885
+ TreeNodesReducer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreeNodesReducer });
886
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreeNodesReducer, decorators: [{
887
887
  type: Injectable
888
888
  }] });
889
889
  const treeNodesReducerProvider = {
@@ -928,9 +928,9 @@ class TreesReducer {
928
928
  return state;
929
929
  }
930
930
  }
931
- TreesReducer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreesReducer, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
932
- TreesReducer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreesReducer });
933
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreesReducer, decorators: [{
931
+ TreesReducer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreesReducer, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
932
+ TreesReducer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreesReducer });
933
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreesReducer, decorators: [{
934
934
  type: Injectable
935
935
  }] });
936
936
  const treesReducerProvider = {
@@ -223,9 +223,9 @@ class TreeNodeLoadingEffect {
223
223
  });
224
224
  }
225
225
  }
226
- TreeNodeLoadingEffect.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreeNodeLoadingEffect, deps: [{ token: NGSSM_TREE_DATA_SERVICE, optional: true }, { token: i1.Logger }], target: i0.ɵɵFactoryTarget.Injectable });
227
- TreeNodeLoadingEffect.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreeNodeLoadingEffect });
228
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreeNodeLoadingEffect, decorators: [{
226
+ TreeNodeLoadingEffect.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreeNodeLoadingEffect, deps: [{ token: NGSSM_TREE_DATA_SERVICE, optional: true }, { token: i1.Logger }], target: i0.ɵɵFactoryTarget.Injectable });
227
+ TreeNodeLoadingEffect.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreeNodeLoadingEffect });
228
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreeNodeLoadingEffect, decorators: [{
229
229
  type: Injectable
230
230
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
231
231
  type: Inject,
@@ -340,9 +340,9 @@ class NgssmTreeComponent extends NgSsmComponent {
340
340
  }
341
341
  }
342
342
  }
343
- NgssmTreeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NgssmTreeComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component });
344
- NgssmTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.3", type: NgssmTreeComponent, isStandalone: true, selector: "ngssm-tree", inputs: { treeConfig: "treeConfig" }, usesInheritance: true, ngImport: i0, template: "<mat-card class=\"flex-column-stretch fxFlex\">\n <mat-card-content class=\"flex-column-stretch fxFlex\" *ngIf=\"(treeConfig$ | async) as treeConfig\">\n <cdk-virtual-scroll-viewport itemSize=\"30\" class=\"fxFlex\">\n <div *cdkVirtualFor=\"let item of displayedItems$ | async; trackBy: getItemId\" class=\"ngssm-tree-node\"\n [style.padding-left.px]=\"item.node.level * 20\" (click)=\"selectNode(item.node)\"\n [ngClass]=\"{'selected' : (selectedNodeId$ | async) === item.node.node.nodeId}\">\n <mat-icon class=\"fa-solid fa-chevron-right\"\n *ngIf=\"item.node.node.isExpandable && item.node.isExpanded === false && item.node.status !== dataStatus.loading\"\n (click)=\"$event.stopPropagation();expand(item.node);\"></mat-icon>\n <mat-icon class=\"fa-solid fa-chevron-down\"\n *ngIf=\"item.node.node.isExpandable && item.node.isExpanded && item.node.status !== dataStatus.loading\"\n (click)=\"$event.stopPropagation();collapse(item.node)\"></mat-icon>\n <mat-spinner diameter=\"20\"\n *ngIf=\"item.node.node.isExpandable && item.node.status === dataStatus.loading\"></mat-spinner>\n <span *ngIf=\"!item.node.node.isExpandable\" class=\"not-expandable-padding\"></span>\n\n <mat-icon class=\"{{treeConfig.iconClasses[item.node.node.type]}}\" color=\"primary\"></mat-icon>\n\n <span class=\"ngssm-tree-node-label\">\n {{item.node.node.label}}\n </span>\n <span class=\"fxFlex\"></span>\n <i class=\"fa-solid fa-magnifying-glass search-icon\" *ngIf=\"item.canSearch\"\n (click)=\"$event.stopPropagation();displaySearchDialog(item.node)\">\n </i>\n </div>\n </cdk-virtual-scroll-viewport>\n </mat-card-content>\n</mat-card>", styles: [":host{display:flex;flex-direction:column}:host .ngssm-tree-node{height:30px;display:flex;flex-direction:row;align-items:center;padding-right:12px}:host .ngssm-tree-node .fa-folder{margin-right:4px}:host .ngssm-tree-node .fa-chevron-right:hover{cursor:pointer}:host .ngssm-tree-node.selected{background-color:#e4e6f1}:host .ngssm-tree-node:hover{cursor:pointer}:host .ngssm-tree-node:hover .search-icon{display:unset}:host .ngssm-tree-node:hover:not(.selected){background-color:#f3f3f3}:host .not-expandable-padding{width:24px}:host .search-icon{font-size:12px;display:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ScrollingModule }, { kind: "directive", type: i3.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i3.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i3.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i8.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i8.MatCardContent, selector: "mat-card-content" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i6.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
345
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NgssmTreeComponent, decorators: [{
343
+ NgssmTreeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: NgssmTreeComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component });
344
+ NgssmTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.4", type: NgssmTreeComponent, isStandalone: true, selector: "ngssm-tree", inputs: { treeConfig: "treeConfig" }, usesInheritance: true, ngImport: i0, template: "<mat-card class=\"flex-column-stretch fxFlex\">\n <mat-card-content class=\"flex-column-stretch fxFlex\" *ngIf=\"(treeConfig$ | async) as treeConfig\">\n <cdk-virtual-scroll-viewport itemSize=\"30\" class=\"fxFlex\">\n <div *cdkVirtualFor=\"let item of displayedItems$ | async; trackBy: getItemId\" class=\"ngssm-tree-node\"\n [style.padding-left.px]=\"item.node.level * 20\" (click)=\"selectNode(item.node)\"\n [ngClass]=\"{'selected' : (selectedNodeId$ | async) === item.node.node.nodeId}\">\n <mat-icon class=\"fa-solid fa-chevron-right\"\n *ngIf=\"item.node.node.isExpandable && item.node.isExpanded === false && item.node.status !== dataStatus.loading\"\n (click)=\"$event.stopPropagation();expand(item.node);\"></mat-icon>\n <mat-icon class=\"fa-solid fa-chevron-down\"\n *ngIf=\"item.node.node.isExpandable && item.node.isExpanded && item.node.status !== dataStatus.loading\"\n (click)=\"$event.stopPropagation();collapse(item.node)\"></mat-icon>\n <mat-spinner diameter=\"20\"\n *ngIf=\"item.node.node.isExpandable && item.node.status === dataStatus.loading\"></mat-spinner>\n <span *ngIf=\"!item.node.node.isExpandable\" class=\"not-expandable-padding\"></span>\n\n <mat-icon class=\"{{treeConfig.iconClasses[item.node.node.type]}}\" color=\"primary\"></mat-icon>\n\n <span class=\"ngssm-tree-node-label\">\n {{item.node.node.label}}\n </span>\n <span class=\"fxFlex\"></span>\n <i class=\"fa-solid fa-magnifying-glass search-icon\" *ngIf=\"item.canSearch\"\n (click)=\"$event.stopPropagation();displaySearchDialog(item.node)\">\n </i>\n </div>\n </cdk-virtual-scroll-viewport>\n </mat-card-content>\n</mat-card>", styles: [":host{display:flex;flex-direction:column}:host .ngssm-tree-node{height:30px;display:flex;flex-direction:row;align-items:center;padding-right:12px}:host .ngssm-tree-node .fa-folder{margin-right:4px}:host .ngssm-tree-node .fa-chevron-right:hover{cursor:pointer}:host .ngssm-tree-node.selected{background-color:#e4e6f1}:host .ngssm-tree-node:hover{cursor:pointer}:host .ngssm-tree-node:hover .search-icon{display:unset}:host .ngssm-tree-node:hover:not(.selected){background-color:#f3f3f3}:host .not-expandable-padding{width:24px}:host .search-icon{font-size:12px;display:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ScrollingModule }, { kind: "directive", type: i3.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i3.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i3.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i8.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i8.MatCardContent, selector: "mat-card-content" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i6.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
345
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: NgssmTreeComponent, decorators: [{
346
346
  type: Component,
347
347
  args: [{ selector: 'ngssm-tree', standalone: true, imports: [CommonModule, ScrollingModule, MatCardModule, MatIconModule, MatProgressSpinnerModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-card class=\"flex-column-stretch fxFlex\">\n <mat-card-content class=\"flex-column-stretch fxFlex\" *ngIf=\"(treeConfig$ | async) as treeConfig\">\n <cdk-virtual-scroll-viewport itemSize=\"30\" class=\"fxFlex\">\n <div *cdkVirtualFor=\"let item of displayedItems$ | async; trackBy: getItemId\" class=\"ngssm-tree-node\"\n [style.padding-left.px]=\"item.node.level * 20\" (click)=\"selectNode(item.node)\"\n [ngClass]=\"{'selected' : (selectedNodeId$ | async) === item.node.node.nodeId}\">\n <mat-icon class=\"fa-solid fa-chevron-right\"\n *ngIf=\"item.node.node.isExpandable && item.node.isExpanded === false && item.node.status !== dataStatus.loading\"\n (click)=\"$event.stopPropagation();expand(item.node);\"></mat-icon>\n <mat-icon class=\"fa-solid fa-chevron-down\"\n *ngIf=\"item.node.node.isExpandable && item.node.isExpanded && item.node.status !== dataStatus.loading\"\n (click)=\"$event.stopPropagation();collapse(item.node)\"></mat-icon>\n <mat-spinner diameter=\"20\"\n *ngIf=\"item.node.node.isExpandable && item.node.status === dataStatus.loading\"></mat-spinner>\n <span *ngIf=\"!item.node.node.isExpandable\" class=\"not-expandable-padding\"></span>\n\n <mat-icon class=\"{{treeConfig.iconClasses[item.node.node.type]}}\" color=\"primary\"></mat-icon>\n\n <span class=\"ngssm-tree-node-label\">\n {{item.node.node.label}}\n </span>\n <span class=\"fxFlex\"></span>\n <i class=\"fa-solid fa-magnifying-glass search-icon\" *ngIf=\"item.canSearch\"\n (click)=\"$event.stopPropagation();displaySearchDialog(item.node)\">\n </i>\n </div>\n </cdk-virtual-scroll-viewport>\n </mat-card-content>\n</mat-card>", styles: [":host{display:flex;flex-direction:column}:host .ngssm-tree-node{height:30px;display:flex;flex-direction:row;align-items:center;padding-right:12px}:host .ngssm-tree-node .fa-folder{margin-right:4px}:host .ngssm-tree-node .fa-chevron-right:hover{cursor:pointer}:host .ngssm-tree-node.selected{background-color:#e4e6f1}:host .ngssm-tree-node:hover{cursor:pointer}:host .ngssm-tree-node:hover .search-icon{display:unset}:host .ngssm-tree-node:hover:not(.selected){background-color:#f3f3f3}:host .not-expandable-padding{width:24px}:host .search-icon{font-size:12px;display:none}\n"] }]
348
348
  }], ctorParameters: function () { return [{ type: i1.Store }]; }, propDecorators: { treeConfig: [{
@@ -390,9 +390,9 @@ class NgssmBreadcrumbComponent extends NgSsmComponent {
390
390
  }
391
391
  }
392
392
  }
393
- NgssmBreadcrumbComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NgssmBreadcrumbComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component });
394
- NgssmBreadcrumbComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.3", type: NgssmBreadcrumbComponent, isStandalone: true, selector: "ngssm-breadcrumb", inputs: { treeId: "treeId" }, usesInheritance: true, ngImport: i0, template: "<div class=\"flex-row-center\">\n <mat-icon class=\"fa-solid fa-folder-tree\" color=\"primary\"></mat-icon>\n <span *ngFor=\"let node of nodes$ | async; last as last\" class=\"flex-row-center\">\n\n <button mat-button [disabled]=\"last\" (click)=\"selectNode(node)\">\n {{node.label}}\n </button>\n\n <div class=\"ngssm-breadcrumb-separator\" *ngIf=\"!last\">/</div>\n </span>\n</div>", styles: [".ngssm-breadcrumb-separator{font-weight:700}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
395
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NgssmBreadcrumbComponent, decorators: [{
393
+ NgssmBreadcrumbComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: NgssmBreadcrumbComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component });
394
+ NgssmBreadcrumbComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.4", type: NgssmBreadcrumbComponent, isStandalone: true, selector: "ngssm-breadcrumb", inputs: { treeId: "treeId" }, usesInheritance: true, ngImport: i0, template: "<div class=\"flex-row-center\">\n <mat-icon class=\"fa-solid fa-folder-tree\" color=\"primary\"></mat-icon>\n <span *ngFor=\"let node of nodes$ | async; last as last\" class=\"flex-row-center\">\n\n <button mat-button [disabled]=\"last\" (click)=\"selectNode(node)\">\n {{node.label}}\n </button>\n\n <div class=\"ngssm-breadcrumb-separator\" *ngIf=\"!last\">/</div>\n </span>\n</div>", styles: [".ngssm-breadcrumb-separator{font-weight:700}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
395
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: NgssmBreadcrumbComponent, decorators: [{
396
396
  type: Component,
397
397
  args: [{ selector: 'ngssm-breadcrumb', standalone: true, imports: [CommonModule, MatIconModule, MatButtonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex-row-center\">\n <mat-icon class=\"fa-solid fa-folder-tree\" color=\"primary\"></mat-icon>\n <span *ngFor=\"let node of nodes$ | async; last as last\" class=\"flex-row-center\">\n\n <button mat-button [disabled]=\"last\" (click)=\"selectNode(node)\">\n {{node.label}}\n </button>\n\n <div class=\"ngssm-breadcrumb-separator\" *ngIf=\"!last\">/</div>\n </span>\n</div>", styles: [".ngssm-breadcrumb-separator{font-weight:700}\n"] }]
398
398
  }], ctorParameters: function () { return [{ type: i1.Store }]; }, propDecorators: { treeId: [{
@@ -471,9 +471,9 @@ class NgssmTreeSearchDialogComponent extends NgSsmComponent {
471
471
  };
472
472
  }
473
473
  }
474
- NgssmTreeSearchDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NgssmTreeSearchDialogComponent, deps: [{ token: i1.Store }, { token: NGSSM_TREE_DATA_SERVICE, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
475
- NgssmTreeSearchDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.3", type: NgssmTreeSearchDialogComponent, isStandalone: true, selector: "ngssm-ngssm-tree-search-dialog", viewQueries: [{ propertyName: "resultsViewerContainer", first: true, predicate: ["resultsViewerContainer"], descendants: true, read: ViewContainerRef }], usesInheritance: true, ngImport: i0, template: "<h1 mat-dialog-title>Tree search dialog</h1>\n<mat-dialog-content class=\"flex-column-stretch fxFlex\">\n <mat-card class=\"flex-column-stretch\">\n <mat-card-content class=\"flex-row-center\">\n <mat-form-field class=\"with-margin-right-12 fxFlex\">\n <mat-label>Starts search in</mat-label>\n <input matInput readonly [formControl]=\"searchRootPathControl\">\n </mat-form-field>\n\n <mat-form-field class=\"fxFlex with-margin-right-12\">\n <mat-label>Search pattern</mat-label>\n <input matInput [formControl]=\"searchPatternControl\">\n <mat-error *ngIf=\"searchPatternControl.errors?.['regex']\">\n {{searchPatternControl.errors?.['regex']}}\n </mat-error>\n </mat-form-field>\n\n <button mat-stroked-button color=\"primary\" [disabled]=\"searchPatternControl.invalid\" (click)=\"search()\"\n *ngIf=\"(searchStatus$ | async) !== searchStatus.inProgress\">\n <mat-icon class=\"fa-solid fa-magnifying-glass\"></mat-icon>\n Search\n </button>\n\n <button mat-raised-button color=\"accent\" (click)=\"abort()\"\n *ngIf=\"(searchStatus$ | async) === searchStatus.inProgress\">\n <mat-icon class=\"fa-solid fa-ban\"></mat-icon>\n Abort\n </button>\n </mat-card-content>\n <mat-card-footer class=\"flex-row-center\" *ngIf=\"(searchStatus$ | async) === searchStatus.inProgress\">\n <mat-spinner [diameter]=\"20\"></mat-spinner>\n {{ currentSearchedPath$ | async }}\n </mat-card-footer>\n </mat-card>\n <mat-card class=\"flex-column-stretch fxFlex with-margin-top-8\">\n <ng-container #resultsViewerContainer></ng-container>\n </mat-card>\n</mat-dialog-content>\n<mat-dialog-actions class=\"flex-row-center\">\n <span class=\"fxFlex\"></span>\n <button mat-button (click)=\"close()\">Close</button>\n</mat-dialog-actions>", styles: [":host{display:flex;flex-direction:column;height:100%}:host .mat-mdc-dialog-content{max-height:unset!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i4$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5$1.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: MatDialogModule }, { kind: "directive", type: i6$1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i6$1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i6$1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.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: MatCardModule }, { kind: "component", type: i8.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i8.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i8.MatCardFooter, selector: "mat-card-footer" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i6.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
476
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NgssmTreeSearchDialogComponent, decorators: [{
474
+ NgssmTreeSearchDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: NgssmTreeSearchDialogComponent, deps: [{ token: i1.Store }, { token: NGSSM_TREE_DATA_SERVICE, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
475
+ NgssmTreeSearchDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.4", type: NgssmTreeSearchDialogComponent, isStandalone: true, selector: "ngssm-ngssm-tree-search-dialog", viewQueries: [{ propertyName: "resultsViewerContainer", first: true, predicate: ["resultsViewerContainer"], descendants: true, read: ViewContainerRef }], usesInheritance: true, ngImport: i0, template: "<h1 mat-dialog-title>Tree search dialog</h1>\n<mat-dialog-content class=\"flex-column-stretch fxFlex\">\n <mat-card class=\"flex-column-stretch\">\n <mat-card-content class=\"flex-row-center\">\n <mat-form-field class=\"with-margin-right-12 fxFlex\">\n <mat-label>Starts search in</mat-label>\n <input matInput readonly [formControl]=\"searchRootPathControl\">\n </mat-form-field>\n\n <mat-form-field class=\"fxFlex with-margin-right-12\">\n <mat-label>Search pattern</mat-label>\n <input matInput [formControl]=\"searchPatternControl\">\n <mat-error *ngIf=\"searchPatternControl.errors?.['regex']\">\n {{searchPatternControl.errors?.['regex']}}\n </mat-error>\n </mat-form-field>\n\n <button mat-stroked-button color=\"primary\" [disabled]=\"searchPatternControl.invalid\" (click)=\"search()\"\n *ngIf=\"(searchStatus$ | async) !== searchStatus.inProgress\">\n <mat-icon class=\"fa-solid fa-magnifying-glass\"></mat-icon>\n Search\n </button>\n\n <button mat-raised-button color=\"accent\" (click)=\"abort()\"\n *ngIf=\"(searchStatus$ | async) === searchStatus.inProgress\">\n <mat-icon class=\"fa-solid fa-ban\"></mat-icon>\n Abort\n </button>\n </mat-card-content>\n <mat-card-footer class=\"flex-row-center\" *ngIf=\"(searchStatus$ | async) === searchStatus.inProgress\">\n <mat-spinner [diameter]=\"20\"></mat-spinner>\n {{ currentSearchedPath$ | async }}\n </mat-card-footer>\n </mat-card>\n <mat-card class=\"flex-column-stretch fxFlex with-margin-top-8\">\n <ng-container #resultsViewerContainer></ng-container>\n </mat-card>\n</mat-dialog-content>\n<mat-dialog-actions class=\"flex-row-center\">\n <span class=\"fxFlex\"></span>\n <button mat-button (click)=\"close()\">Close</button>\n</mat-dialog-actions>", styles: [":host{display:flex;flex-direction:column;height:100%}:host .mat-mdc-dialog-content{max-height:unset!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i4$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5$1.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: MatDialogModule }, { kind: "directive", type: i6$1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i6$1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i6$1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.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: MatCardModule }, { kind: "component", type: i8.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i8.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i8.MatCardFooter, selector: "mat-card-footer" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i6.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
476
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: NgssmTreeSearchDialogComponent, decorators: [{
477
477
  type: Component,
478
478
  args: [{ selector: 'ngssm-ngssm-tree-search-dialog', standalone: true, imports: [
479
479
  CommonModule,
@@ -563,9 +563,9 @@ class TreeNodesSearchingEffect {
563
563
  this.dialog = undefined;
564
564
  }
565
565
  }
566
- TreeNodesSearchingEffect.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreeNodesSearchingEffect, deps: [{ token: i6$1.MatDialog }, { token: i1.Logger }], target: i0.ɵɵFactoryTarget.Injectable });
567
- TreeNodesSearchingEffect.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreeNodesSearchingEffect });
568
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreeNodesSearchingEffect, decorators: [{
566
+ TreeNodesSearchingEffect.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreeNodesSearchingEffect, deps: [{ token: i6$1.MatDialog }, { token: i1.Logger }], target: i0.ɵɵFactoryTarget.Injectable });
567
+ TreeNodesSearchingEffect.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreeNodesSearchingEffect });
568
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreeNodesSearchingEffect, decorators: [{
569
569
  type: Injectable
570
570
  }], ctorParameters: function () { return [{ type: i6$1.MatDialog }, { type: i1.Logger }]; } });
571
571
  const treeNodesSearchingEffectProvider = {
@@ -693,9 +693,9 @@ class TreeNodeExpandReducer {
693
693
  return state;
694
694
  }
695
695
  }
696
- TreeNodeExpandReducer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreeNodeExpandReducer, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
697
- TreeNodeExpandReducer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreeNodeExpandReducer });
698
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreeNodeExpandReducer, decorators: [{
696
+ TreeNodeExpandReducer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreeNodeExpandReducer, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
697
+ TreeNodeExpandReducer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreeNodeExpandReducer });
698
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreeNodeExpandReducer, decorators: [{
699
699
  type: Injectable
700
700
  }] });
701
701
  const treeNodeExpandReducerProvider = {
@@ -724,9 +724,9 @@ class TreeNodeSelectionReducer {
724
724
  return state;
725
725
  }
726
726
  }
727
- TreeNodeSelectionReducer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreeNodeSelectionReducer, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
728
- TreeNodeSelectionReducer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreeNodeSelectionReducer });
729
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreeNodeSelectionReducer, decorators: [{
727
+ TreeNodeSelectionReducer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreeNodeSelectionReducer, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
728
+ TreeNodeSelectionReducer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreeNodeSelectionReducer });
729
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreeNodeSelectionReducer, decorators: [{
730
730
  type: Injectable
731
731
  }] });
732
732
  const treeNodeSelectionReducerProvider = {
@@ -813,9 +813,9 @@ class TreeNodesSearchReducer {
813
813
  return state;
814
814
  }
815
815
  }
816
- TreeNodesSearchReducer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreeNodesSearchReducer, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
817
- TreeNodesSearchReducer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreeNodesSearchReducer });
818
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreeNodesSearchReducer, decorators: [{
816
+ TreeNodesSearchReducer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreeNodesSearchReducer, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
817
+ TreeNodesSearchReducer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreeNodesSearchReducer });
818
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreeNodesSearchReducer, decorators: [{
819
819
  type: Injectable
820
820
  }] });
821
821
  const treeNodesSearchReducerProvider = {
@@ -865,9 +865,9 @@ class TreeNodesReducer {
865
865
  return state;
866
866
  }
867
867
  }
868
- TreeNodesReducer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreeNodesReducer, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
869
- TreeNodesReducer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreeNodesReducer });
870
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreeNodesReducer, decorators: [{
868
+ TreeNodesReducer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreeNodesReducer, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
869
+ TreeNodesReducer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreeNodesReducer });
870
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreeNodesReducer, decorators: [{
871
871
  type: Injectable
872
872
  }] });
873
873
  const treeNodesReducerProvider = {
@@ -912,9 +912,9 @@ class TreesReducer {
912
912
  return state;
913
913
  }
914
914
  }
915
- TreesReducer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreesReducer, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
916
- TreesReducer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreesReducer });
917
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: TreesReducer, decorators: [{
915
+ TreesReducer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreesReducer, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
916
+ TreesReducer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreesReducer });
917
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TreesReducer, decorators: [{
918
918
  type: Injectable
919
919
  }] });
920
920
  const treesReducerProvider = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ngssm-tree",
3
- "version": "15.3.4",
3
+ "version": "15.3.5",
4
4
  "description": "NgSsm - Tree implementation.",
5
5
  "author": "Lion Marc",
6
6
  "license": "MIT",