ngx-techlify-core 18.3.5 → 18.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,3 @@
1
+ export class ColumnConfig {
2
+ }
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLWNvbmZpZy5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvY29sdW1uLXNlbGVjdG9yL2NvbHVtbi1jb25maWcubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsTUFBTSxPQUFPLFlBQVk7Q0FLeEIiLCJzb3VyY2VzQ29udGVudCI6WyJcbmV4cG9ydCBjbGFzcyBDb2x1bW5Db25maWcge1xuICAgIGxhYmVsOiBzdHJpbmc7IC8vQ29sdW1uIGxhYmVsXG4gICAgZGVmOiBzdHJpbmc7ICAgLy9Db2x1bW4gZGVmaW5pdGlvblxuICAgIGlzRWRpdGFibGU/OiBib29sZWFuOyAgLy9EZW5vdGVzIGlmIGEgY29sdW1uIGlzIGVkaXRhYmxlIGluIHNlbGVjdG9yLCBkZWZhdWx0IGl0IGlzIGVkaXRhYmxlXG4gICAgaXNTZWxlY3RlZD86IGJvb2xlYW47ICAvL0Rlbm90ZXMgaWYgYSBjb2x1bW4gaXMgc2VsZWN0ZWQgYnkgZGVmYXVsdCwgZGVmYXVsdCBpdCBpcyBzZWxlY3RlZFxufVxuIl19
@@ -1,5 +1,6 @@
1
1
  import { Component, EventEmitter, Input, Output } from '@angular/core';
2
2
  import { FormControl } from '@angular/forms';
3
+ import { startWith } from 'rxjs';
3
4
  import * as i0 from "@angular/core";
4
5
  import * as i1 from "@angular/common";
5
6
  import * as i2 from "@angular/material/form-field";
@@ -7,54 +8,80 @@ import * as i3 from "@angular/material/core";
7
8
  import * as i4 from "@angular/material/select";
8
9
  import * as i5 from "@angular/forms";
9
10
  import * as i6 from "@angular/material/icon";
10
- import * as i7 from "@angular/material/menu";
11
- import * as i8 from "@angular/material/list";
11
+ import * as i7 from "@angular/material/input";
12
+ import * as i8 from "@angular/material/button";
12
13
  export class ColumnSelectorComponent {
14
+ get availableColumns() {
15
+ return this.columnConfigs;
16
+ }
17
+ get displayedColumns() {
18
+ return this.columnConfigs.filter(column => column.isSelected ?? true);
19
+ }
20
+ get displayedColumnDefs() {
21
+ return this.displayedColumns.map(column => column.def);
22
+ }
23
+ get filteredColumns() {
24
+ return this.availableColumns.filter((column) => {
25
+ if (this.search.value) {
26
+ return column.label.toLowerCase().includes(this.search.value.toLowerCase());
27
+ }
28
+ return true;
29
+ });
30
+ }
31
+ get sortedColumns() {
32
+ let columns = this.filteredColumns.sort((a, b) => {
33
+ if (a.label < b.label)
34
+ return -1;
35
+ if (a.label > b.label)
36
+ return 1;
37
+ return 0;
38
+ });
39
+ if (this.search.value) {
40
+ columns = [...columns, ...this.selectedColumns];
41
+ }
42
+ return [...new Map(columns.map(column => [column.def, column])).values()];
43
+ }
13
44
  constructor() {
14
- this.availableColumns = [];
15
- this.displayedColumns = [];
16
45
  this.label = 'Columns';
17
46
  this.mode = 'selector';
47
+ this.columnConfigs = [];
48
+ this.selectedColumns = [];
49
+ this.selectedColumnsChange = new EventEmitter();
18
50
  this.displayedColumnsChange = new EventEmitter();
19
- /**
20
- * @deprecated Use displayedColumnsChange instead
21
- */
22
- this.updated = new EventEmitter();
23
51
  this.columnSelector = new FormControl([]);
24
- this.selectedColumns = [];
25
- this.selectedColumns = this.columnSelector.value || [];
52
+ this.search = new FormControl('');
26
53
  }
27
54
  ngOnInit() {
28
55
  if (this.displayedColumns?.length > 0) {
29
- this.columnSelector.setValue(this.displayedColumns, { emitEvent: false });
30
- this.selectedColumns = this.columnSelector.value;
56
+ this.columnSelector.setValue(this.displayedColumnDefs, { emitEvent: false });
31
57
  }
32
- this.columnSelector.valueChanges.subscribe((val) => {
33
- this.displayedColumns = val;
34
- this.displayedColumnsChange.emit(this.displayedColumns);
35
- this.updated.emit(val);
58
+ this.columnSelector.valueChanges
59
+ .pipe(startWith(this.displayedColumnDefs))
60
+ .subscribe((selectedColumns) => {
61
+ this.selectedColumns = this.columnConfigs
62
+ .filter(column => selectedColumns.includes(column.def));
63
+ const columnDefs = this.selectedColumns.map(column => column.def);
64
+ this.selectedColumnsChange.emit(this.selectedColumns);
65
+ this.displayedColumnsChange.emit(columnDefs);
36
66
  });
37
67
  }
38
- updateColumnSelector() {
39
- this.columnSelector.setValue(this.selectedColumns);
40
- }
41
68
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ColumnSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
42
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ColumnSelectorComponent, selector: "app-column-selector", inputs: { availableColumns: "availableColumns", displayedColumns: "displayedColumns", label: "label", mode: "mode" }, outputs: { displayedColumnsChange: "displayedColumnsChange", updated: "updated" }, ngImport: i0, template: "<mat-form-field *ngIf=\"mode === 'selector'\">\n <mat-label>{{ label }}</mat-label>\n <mat-select [multiple]=\"true\" [formControl]=\"columnSelector\">\n <mat-option class=\"text-capitalize\" *ngFor=\"let col of availableColumns\" [value]=\"col\">\n {{ col }}\n </mat-option>\n </mat-select>\n</mat-form-field>\n\n<!-- Mode: Icon -->\n<mat-icon *ngIf=\"mode === 'icon'\" class=\"cursor-pointer\"\n [matMenuTriggerFor]=\"columnMenu\" #menuTrigger=\"matMenuTrigger\">\n view_column\n</mat-icon>\n\n<!-- Mat Menu for Multi Selection -->\n<mat-menu #columnMenu=\"matMenu\" [overlapTrigger]=\"false\">\n <mat-selection-list [(ngModel)]=\"selectedColumns\" (ngModelChange)=\"updateColumnSelector()\">\n <mat-list-option *ngFor=\"let col of availableColumns\" [value]=\"col\">\n {{ col }}\n </mat-list-option>\n </mat-selection-list>\n</mat-menu>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "component", type: i3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i4.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i7.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: i7.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i8.MatSelectionList, selector: "mat-selection-list", inputs: ["color", "compareWith", "multiple", "hideSingleSelectionIndicator", "disabled"], outputs: ["selectionChange"], exportAs: ["matSelectionList"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i8.MatListOption, selector: "mat-list-option", inputs: ["togglePosition", "checkboxPosition", "color", "value", "selected"], outputs: ["selectedChange"], exportAs: ["matListOption"] }] }); }
69
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ColumnSelectorComponent, selector: "app-column-selector", inputs: { label: "label", mode: "mode", columnConfigs: "columnConfigs", selectedColumns: "selectedColumns" }, outputs: { selectedColumnsChange: "selectedColumnsChange", displayedColumnsChange: "displayedColumnsChange" }, ngImport: i0, template: "<mat-form-field *ngIf=\"mode === 'selector'\">\n <mat-label>{{ label }}</mat-label>\n <mat-select [multiple]=\"true\" [formControl]=\"columnSelector\">\n <mat-option class=\"text-capitalize\" *ngFor=\"let col of sortedColumns\" [value]=\"col.def\"\n [disabled]=\"!(col?.isEditable ?? true)\">\n {{ col.label }}\n </mat-option>\n </mat-select>\n</mat-form-field>\n\n<div *ngIf=\"mode === 'icon'\" style=\"height: 20px;\">\n <button matTooltip=\"Column Selector\" type=\"button\" mat-icon-button (click)=\"select.open()\" class=\"column-button\">\n <mat-icon class=\"relative-view-icon\">view_column</mat-icon>\n <mat-select class=\"column-selector\" #select [formControl]=\"columnSelector\" multiple panelWidth=\"\">\n <mat-form-field class=\"p-1 w-100\">\n <input matInput [formControl]=\"search\" placeholder=\"Search\" (keydown)=\"$event.stopPropagation();\"\n autocomplete=\"off\">\n <button mat-icon-button matSuffix type=\"button\" *ngIf=\"search.value\" (click)=\"search.setValue('')\">\n <mat-icon>clear</mat-icon>\n </button>\n </mat-form-field>\n <mat-option *ngFor=\"let column of sortedColumns\" [value]=\"column.def\" class=\"text-capitalize\"\n [disabled]=\"!(column?.isEditable ?? true)\">{{column?.label}}</mat-option>\n </mat-select>\n </button>\n</div>", styles: [".relative-view-icon{position:relative;right:10px;bottom:14px}.column-button{height:20px;width:20px;border:0;background:transparent}.column-selector{opacity:0;position:relative;bottom:50px}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i4.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "directive", type: i5.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: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i7.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: "component", type: i8.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }] }); }
43
70
  }
44
71
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ColumnSelectorComponent, decorators: [{
45
72
  type: Component,
46
- args: [{ selector: 'app-column-selector', template: "<mat-form-field *ngIf=\"mode === 'selector'\">\n <mat-label>{{ label }}</mat-label>\n <mat-select [multiple]=\"true\" [formControl]=\"columnSelector\">\n <mat-option class=\"text-capitalize\" *ngFor=\"let col of availableColumns\" [value]=\"col\">\n {{ col }}\n </mat-option>\n </mat-select>\n</mat-form-field>\n\n<!-- Mode: Icon -->\n<mat-icon *ngIf=\"mode === 'icon'\" class=\"cursor-pointer\"\n [matMenuTriggerFor]=\"columnMenu\" #menuTrigger=\"matMenuTrigger\">\n view_column\n</mat-icon>\n\n<!-- Mat Menu for Multi Selection -->\n<mat-menu #columnMenu=\"matMenu\" [overlapTrigger]=\"false\">\n <mat-selection-list [(ngModel)]=\"selectedColumns\" (ngModelChange)=\"updateColumnSelector()\">\n <mat-list-option *ngFor=\"let col of availableColumns\" [value]=\"col\">\n {{ col }}\n </mat-list-option>\n </mat-selection-list>\n</mat-menu>\n" }]
47
- }], ctorParameters: () => [], propDecorators: { availableColumns: [{
73
+ args: [{ selector: 'app-column-selector', template: "<mat-form-field *ngIf=\"mode === 'selector'\">\n <mat-label>{{ label }}</mat-label>\n <mat-select [multiple]=\"true\" [formControl]=\"columnSelector\">\n <mat-option class=\"text-capitalize\" *ngFor=\"let col of sortedColumns\" [value]=\"col.def\"\n [disabled]=\"!(col?.isEditable ?? true)\">\n {{ col.label }}\n </mat-option>\n </mat-select>\n</mat-form-field>\n\n<div *ngIf=\"mode === 'icon'\" style=\"height: 20px;\">\n <button matTooltip=\"Column Selector\" type=\"button\" mat-icon-button (click)=\"select.open()\" class=\"column-button\">\n <mat-icon class=\"relative-view-icon\">view_column</mat-icon>\n <mat-select class=\"column-selector\" #select [formControl]=\"columnSelector\" multiple panelWidth=\"\">\n <mat-form-field class=\"p-1 w-100\">\n <input matInput [formControl]=\"search\" placeholder=\"Search\" (keydown)=\"$event.stopPropagation();\"\n autocomplete=\"off\">\n <button mat-icon-button matSuffix type=\"button\" *ngIf=\"search.value\" (click)=\"search.setValue('')\">\n <mat-icon>clear</mat-icon>\n </button>\n </mat-form-field>\n <mat-option *ngFor=\"let column of sortedColumns\" [value]=\"column.def\" class=\"text-capitalize\"\n [disabled]=\"!(column?.isEditable ?? true)\">{{column?.label}}</mat-option>\n </mat-select>\n </button>\n</div>", styles: [".relative-view-icon{position:relative;right:10px;bottom:14px}.column-button{height:20px;width:20px;border:0;background:transparent}.column-selector{opacity:0;position:relative;bottom:50px}\n"] }]
74
+ }], ctorParameters: () => [], propDecorators: { label: [{
48
75
  type: Input
49
- }], displayedColumns: [{
76
+ }], mode: [{
50
77
  type: Input
51
- }], label: [{
78
+ }], columnConfigs: [{
52
79
  type: Input
53
- }], mode: [{
80
+ }], selectedColumns: [{
54
81
  type: Input
55
- }], displayedColumnsChange: [{
82
+ }], selectedColumnsChange: [{
56
83
  type: Output
57
- }], updated: [{
84
+ }], displayedColumnsChange: [{
58
85
  type: Output
59
86
  }] } });
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLXNlbGVjdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvY29sdW1uLXNlbGVjdG9yL2NvbHVtbi1zZWxlY3Rvci9jb2x1bW4tc2VsZWN0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi9jb2x1bW4tc2VsZWN0b3IvY29sdW1uLXNlbGVjdG9yL2NvbHVtbi1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzdFLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7OztBQVEzQyxNQUFNLE9BQU8sdUJBQXVCO0lBZWxDO1FBZFMscUJBQWdCLEdBQWEsRUFBRSxDQUFDO1FBQ2hDLHFCQUFnQixHQUFhLEVBQUUsQ0FBQztRQUNoQyxVQUFLLEdBQUcsU0FBUyxDQUFDO1FBQ2xCLFNBQUksR0FBd0IsVUFBVSxDQUFDO1FBRXRDLDJCQUFzQixHQUEyQixJQUFJLFlBQVksRUFBWSxDQUFDO1FBQ3hGOztXQUVHO1FBQ08sWUFBTyxHQUEyQixJQUFJLFlBQVksRUFBWSxDQUFDO1FBRXpFLG1CQUFjLEdBQWdCLElBQUksV0FBVyxDQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZELG9CQUFlLEdBQWEsRUFBRSxDQUFDO1FBRzdCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO0lBQ3pELENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDO1lBQ3hFLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUM7UUFDbkQsQ0FBQztRQUVELElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQWEsRUFBRSxFQUFFO1lBQzNELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxHQUFHLENBQUM7WUFDNUIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUN4RCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxvQkFBb0I7UUFDbEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3JELENBQUM7K0dBbENVLHVCQUF1QjttR0FBdkIsdUJBQXVCLG9RQ1RwQyxnM0JBdUJBOzs0RkRkYSx1QkFBdUI7a0JBTm5DLFNBQVM7K0JBRUUscUJBQXFCO3dEQUt0QixnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRUksc0JBQXNCO3NCQUEvQixNQUFNO2dCQUlHLE9BQU87c0JBQWhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3JtQ29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmNvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ2FwcC1jb2x1bW4tc2VsZWN0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vY29sdW1uLXNlbGVjdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY29sdW1uLXNlbGVjdG9yLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ29sdW1uU2VsZWN0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBhdmFpbGFibGVDb2x1bW5zOiBzdHJpbmdbXSA9IFtdO1xuICBASW5wdXQoKSBkaXNwbGF5ZWRDb2x1bW5zOiBzdHJpbmdbXSA9IFtdO1xuICBASW5wdXQoKSBsYWJlbCA9ICdDb2x1bW5zJztcbiAgQElucHV0KCkgbW9kZTogJ3NlbGVjdG9yJyB8ICdpY29uJyA9ICdzZWxlY3Rvcic7XG5cbiAgQE91dHB1dCgpIGRpc3BsYXllZENvbHVtbnNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmdbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZ1tdPigpO1xuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGRpc3BsYXllZENvbHVtbnNDaGFuZ2UgaW5zdGVhZFxuICAgKi9cbiAgQE91dHB1dCgpIHVwZGF0ZWQ6IEV2ZW50RW1pdHRlcjxzdHJpbmdbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZ1tdPigpO1xuXG4gIGNvbHVtblNlbGVjdG9yOiBGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxhbnk+KFtdKTtcbiAgc2VsZWN0ZWRDb2x1bW5zOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zID0gdGhpcy5jb2x1bW5TZWxlY3Rvci52YWx1ZSB8fCBbXTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc3BsYXllZENvbHVtbnM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuY29sdW1uU2VsZWN0b3Iuc2V0VmFsdWUodGhpcy5kaXNwbGF5ZWRDb2x1bW5zLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnMgPSB0aGlzLmNvbHVtblNlbGVjdG9yLnZhbHVlO1xuICAgIH1cblxuICAgIHRoaXMuY29sdW1uU2VsZWN0b3IudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsOiBzdHJpbmdbXSkgPT4ge1xuICAgICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zID0gdmFsO1xuICAgICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zQ2hhbmdlLmVtaXQodGhpcy5kaXNwbGF5ZWRDb2x1bW5zKTtcbiAgICAgIHRoaXMudXBkYXRlZC5lbWl0KHZhbCk7XG4gICAgfSk7XG4gIH1cblxuICB1cGRhdGVDb2x1bW5TZWxlY3RvcigpOiB2b2lkIHtcbiAgICB0aGlzLmNvbHVtblNlbGVjdG9yLnNldFZhbHVlKHRoaXMuc2VsZWN0ZWRDb2x1bW5zKTtcbiAgfVxufVxuIiwiPG1hdC1mb3JtLWZpZWxkICpuZ0lmPVwibW9kZSA9PT0gJ3NlbGVjdG9yJ1wiPlxuICA8bWF0LWxhYmVsPnt7IGxhYmVsIH19PC9tYXQtbGFiZWw+XG4gIDxtYXQtc2VsZWN0IFttdWx0aXBsZV09XCJ0cnVlXCIgW2Zvcm1Db250cm9sXT1cImNvbHVtblNlbGVjdG9yXCI+XG4gICAgPG1hdC1vcHRpb24gY2xhc3M9XCJ0ZXh0LWNhcGl0YWxpemVcIiAqbmdGb3I9XCJsZXQgY29sIG9mIGF2YWlsYWJsZUNvbHVtbnNcIiBbdmFsdWVdPVwiY29sXCI+XG4gICAgICB7eyBjb2wgfX1cbiAgICA8L21hdC1vcHRpb24+XG4gIDwvbWF0LXNlbGVjdD5cbjwvbWF0LWZvcm0tZmllbGQ+XG5cbjwhLS0gTW9kZTogSWNvbiAtLT5cbjxtYXQtaWNvbiAqbmdJZj1cIm1vZGUgPT09ICdpY29uJ1wiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJjb2x1bW5NZW51XCIgI21lbnVUcmlnZ2VyPVwibWF0TWVudVRyaWdnZXJcIj5cbiAgdmlld19jb2x1bW5cbjwvbWF0LWljb24+XG5cbjwhLS0gTWF0IE1lbnUgZm9yIE11bHRpIFNlbGVjdGlvbiAtLT5cbjxtYXQtbWVudSAjY29sdW1uTWVudT1cIm1hdE1lbnVcIiBbb3ZlcmxhcFRyaWdnZXJdPVwiZmFsc2VcIj5cbiAgPG1hdC1zZWxlY3Rpb24tbGlzdCBbKG5nTW9kZWwpXT1cInNlbGVjdGVkQ29sdW1uc1wiIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZUNvbHVtblNlbGVjdG9yKClcIj5cbiAgICA8bWF0LWxpc3Qtb3B0aW9uICpuZ0Zvcj1cImxldCBjb2wgb2YgYXZhaWxhYmxlQ29sdW1uc1wiIFt2YWx1ZV09XCJjb2xcIj5cbiAgICAgIHt7IGNvbCB9fVxuICAgIDwvbWF0LWxpc3Qtb3B0aW9uPlxuICA8L21hdC1zZWxlY3Rpb24tbGlzdD5cbjwvbWF0LW1lbnU+XG4iXX0=
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLXNlbGVjdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvY29sdW1uLXNlbGVjdG9yL2NvbHVtbi1zZWxlY3Rvci9jb2x1bW4tc2VsZWN0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi9jb2x1bW4tc2VsZWN0b3IvY29sdW1uLXNlbGVjdG9yL2NvbHVtbi1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7O0FBUWpDLE1BQU0sT0FBTyx1QkFBdUI7SUFZbEMsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQsSUFBSSxtQkFBbUI7UUFDckIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDakIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUU7WUFDbEQsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUN0QixPQUFRLE1BQU0sQ0FBQyxLQUFnQixDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQzFGLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQy9DLElBQUksQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSztnQkFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSztnQkFBRSxPQUFPLENBQUMsQ0FBQztZQUNoQyxPQUFPLENBQUMsQ0FBQztRQUNYLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3RCLE9BQU8sR0FBRyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2xELENBQUM7UUFDRCxPQUFPLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFRDtRQTVDUyxVQUFLLEdBQUcsU0FBUyxDQUFDO1FBQ2xCLFNBQUksR0FBd0IsVUFBVSxDQUFDO1FBQ3ZDLGtCQUFhLEdBQW1CLEVBQUUsQ0FBQztRQUNuQyxvQkFBZSxHQUFtQixFQUFFLENBQUM7UUFDcEMsMEJBQXFCLEdBQWlDLElBQUksWUFBWSxFQUFrQixDQUFDO1FBRXpGLDJCQUFzQixHQUEyQixJQUFJLFlBQVksRUFBWSxDQUFDO1FBRXhGLG1CQUFjLEdBQWdCLElBQUksV0FBVyxDQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZELFdBQU0sR0FBRyxJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQW1DYixDQUFDO0lBRWpCLFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDL0UsQ0FBQztRQUVELElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWTthQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO2FBQ3pDLFNBQVMsQ0FBQyxDQUFDLGVBQXlCLEVBQUUsRUFBRTtZQUN2QyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxhQUFhO2lCQUN0QyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzFELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2xFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ3RELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDL0MsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOytHQTdEVSx1QkFBdUI7bUdBQXZCLHVCQUF1Qix3UkNYcEMsazFDQXlCTTs7NEZEZE8sdUJBQXVCO2tCQU5uQyxTQUFTOytCQUVFLHFCQUFxQjt3REFLdEIsS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0kscUJBQXFCO3NCQUE5QixNQUFNO2dCQUVHLHNCQUFzQjtzQkFBL0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29sdW1uQ29uZmlnIH0gZnJvbSAnLi4vY29sdW1uLWNvbmZpZy5tb2RlbCc7XG5pbXBvcnQgeyBzdGFydFdpdGggfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpjb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdhcHAtY29sdW1uLXNlbGVjdG9yJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbHVtbi1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvbHVtbi1zZWxlY3Rvci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIENvbHVtblNlbGVjdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgbGFiZWwgPSAnQ29sdW1ucyc7XG4gIEBJbnB1dCgpIG1vZGU6ICdzZWxlY3RvcicgfCAnaWNvbicgPSAnc2VsZWN0b3InO1xuICBASW5wdXQoKSBjb2x1bW5Db25maWdzOiBDb2x1bW5Db25maWdbXSA9IFtdO1xuICBASW5wdXQoKSBzZWxlY3RlZENvbHVtbnM6IENvbHVtbkNvbmZpZ1tdID0gW107XG4gIEBPdXRwdXQoKSBzZWxlY3RlZENvbHVtbnNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDb2x1bW5Db25maWdbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPENvbHVtbkNvbmZpZ1tdPigpO1xuXG4gIEBPdXRwdXQoKSBkaXNwbGF5ZWRDb2x1bW5zQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nW10+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmdbXT4oKTtcblxuICBjb2x1bW5TZWxlY3RvcjogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2w8YW55PihbXSk7XG4gIHNlYXJjaCA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XG5cbiAgZ2V0IGF2YWlsYWJsZUNvbHVtbnMoKTogQ29sdW1uQ29uZmlnW10ge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbkNvbmZpZ3M7XG4gIH1cblxuICBnZXQgZGlzcGxheWVkQ29sdW1ucygpOiBDb2x1bW5Db25maWdbXSB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1uQ29uZmlncy5maWx0ZXIoY29sdW1uID0+IGNvbHVtbi5pc1NlbGVjdGVkID8/IHRydWUpO1xuICB9XG5cbiAgZ2V0IGRpc3BsYXllZENvbHVtbkRlZnMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmRpc3BsYXllZENvbHVtbnMubWFwKGNvbHVtbiA9PiBjb2x1bW4uZGVmKTtcbiAgfVxuXG4gIGdldCBmaWx0ZXJlZENvbHVtbnMoKTogQ29sdW1uQ29uZmlnW10ge1xuICAgIHJldHVybiB0aGlzLmF2YWlsYWJsZUNvbHVtbnMuZmlsdGVyKChjb2x1bW46IGFueSkgPT4ge1xuICAgICAgaWYgKHRoaXMuc2VhcmNoLnZhbHVlKSB7XG4gICAgICAgIHJldHVybiAoY29sdW1uLmxhYmVsIGFzIHN0cmluZykudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0aGlzLnNlYXJjaC52YWx1ZS50b0xvd2VyQ2FzZSgpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0IHNvcnRlZENvbHVtbnMoKTogQ29sdW1uQ29uZmlnW10ge1xuICAgIGxldCBjb2x1bW5zID0gdGhpcy5maWx0ZXJlZENvbHVtbnMuc29ydCgoYSwgYikgPT4ge1xuICAgICAgaWYgKGEubGFiZWwgPCBiLmxhYmVsKSByZXR1cm4gLTE7XG4gICAgICBpZiAoYS5sYWJlbCA+IGIubGFiZWwpIHJldHVybiAxO1xuICAgICAgcmV0dXJuIDA7XG4gICAgfSk7XG4gICAgaWYgKHRoaXMuc2VhcmNoLnZhbHVlKSB7XG4gICAgICBjb2x1bW5zID0gWy4uLmNvbHVtbnMsIC4uLnRoaXMuc2VsZWN0ZWRDb2x1bW5zXTtcbiAgICB9XG4gICAgcmV0dXJuIFsuLi5uZXcgTWFwKGNvbHVtbnMubWFwKGNvbHVtbiA9PiBbY29sdW1uLmRlZiwgY29sdW1uXSkpLnZhbHVlcygpXTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGlzcGxheWVkQ29sdW1ucz8ubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5jb2x1bW5TZWxlY3Rvci5zZXRWYWx1ZSh0aGlzLmRpc3BsYXllZENvbHVtbkRlZnMsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmNvbHVtblNlbGVjdG9yLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUoc3RhcnRXaXRoKHRoaXMuZGlzcGxheWVkQ29sdW1uRGVmcykpXG4gICAgICAuc3Vic2NyaWJlKChzZWxlY3RlZENvbHVtbnM6IHN0cmluZ1tdKSA9PiB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zID0gdGhpcy5jb2x1bW5Db25maWdzXG4gICAgICAgICAgLmZpbHRlcihjb2x1bW4gPT4gc2VsZWN0ZWRDb2x1bW5zLmluY2x1ZGVzKGNvbHVtbi5kZWYpKTtcbiAgICAgICAgY29uc3QgY29sdW1uRGVmcyA9IHRoaXMuc2VsZWN0ZWRDb2x1bW5zLm1hcChjb2x1bW4gPT4gY29sdW1uLmRlZik7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZENvbHVtbnMpO1xuICAgICAgICB0aGlzLmRpc3BsYXllZENvbHVtbnNDaGFuZ2UuZW1pdChjb2x1bW5EZWZzKTtcbiAgICAgIH0pO1xuICB9XG59XG4iLCI8bWF0LWZvcm0tZmllbGQgKm5nSWY9XCJtb2RlID09PSAnc2VsZWN0b3InXCI+XG4gIDxtYXQtbGFiZWw+e3sgbGFiZWwgfX08L21hdC1sYWJlbD5cbiAgPG1hdC1zZWxlY3QgW211bHRpcGxlXT1cInRydWVcIiBbZm9ybUNvbnRyb2xdPVwiY29sdW1uU2VsZWN0b3JcIj5cbiAgICA8bWF0LW9wdGlvbiBjbGFzcz1cInRleHQtY2FwaXRhbGl6ZVwiICpuZ0Zvcj1cImxldCBjb2wgb2Ygc29ydGVkQ29sdW1uc1wiIFt2YWx1ZV09XCJjb2wuZGVmXCJcbiAgICAgIFtkaXNhYmxlZF09XCIhKGNvbD8uaXNFZGl0YWJsZSA/PyB0cnVlKVwiPlxuICAgICAge3sgY29sLmxhYmVsIH19XG4gICAgPC9tYXQtb3B0aW9uPlxuICA8L21hdC1zZWxlY3Q+XG48L21hdC1mb3JtLWZpZWxkPlxuXG48ZGl2ICpuZ0lmPVwibW9kZSA9PT0gJ2ljb24nXCIgc3R5bGU9XCJoZWlnaHQ6IDIwcHg7XCI+XG4gIDxidXR0b24gbWF0VG9vbHRpcD1cIkNvbHVtbiBTZWxlY3RvclwiIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInNlbGVjdC5vcGVuKClcIiBjbGFzcz1cImNvbHVtbi1idXR0b25cIj5cbiAgICA8bWF0LWljb24gY2xhc3M9XCJyZWxhdGl2ZS12aWV3LWljb25cIj52aWV3X2NvbHVtbjwvbWF0LWljb24+XG4gICAgPG1hdC1zZWxlY3QgY2xhc3M9XCJjb2x1bW4tc2VsZWN0b3JcIiAjc2VsZWN0IFtmb3JtQ29udHJvbF09XCJjb2x1bW5TZWxlY3RvclwiIG11bHRpcGxlIHBhbmVsV2lkdGg9XCJcIj5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInAtMSB3LTEwMFwiPlxuICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW2Zvcm1Db250cm9sXT1cInNlYXJjaFwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoXCIgKGtleWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiXG4gICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCI+XG4gICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIG1hdFN1ZmZpeCB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJzZWFyY2gudmFsdWVcIiAoY2xpY2spPVwic2VhcmNoLnNldFZhbHVlKCcnKVwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5jbGVhcjwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBjb2x1bW4gb2Ygc29ydGVkQ29sdW1uc1wiIFt2YWx1ZV09XCJjb2x1bW4uZGVmXCIgY2xhc3M9XCJ0ZXh0LWNhcGl0YWxpemVcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiIShjb2x1bW4/LmlzRWRpdGFibGUgPz8gdHJ1ZSlcIj57e2NvbHVtbj8ubGFiZWx9fTwvbWF0LW9wdGlvbj5cbiAgICA8L21hdC1zZWxlY3Q+XG4gIDwvYnV0dG9uPlxuPC9kaXY+Il19
@@ -8,6 +8,8 @@ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
8
8
  import { MatIcon } from "@angular/material/icon";
9
9
  import { MatMenu, MatMenuTrigger } from "@angular/material/menu";
10
10
  import { MatListOption, MatSelectionList } from "@angular/material/list";
11
+ import { MatInputModule } from '@angular/material/input';
12
+ import { MatButtonModule } from '@angular/material/button';
11
13
  import * as i0 from "@angular/core";
12
14
  export class ColumnSelectorModule {
13
15
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ColumnSelectorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
@@ -21,7 +23,9 @@ export class ColumnSelectorModule {
21
23
  MatMenu,
22
24
  MatSelectionList,
23
25
  FormsModule,
24
- MatListOption], exports: [ColumnSelectorComponent] }); }
26
+ MatListOption,
27
+ MatInputModule,
28
+ MatButtonModule], exports: [ColumnSelectorComponent] }); }
25
29
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ColumnSelectorModule, imports: [CommonModule,
26
30
  MatFormFieldModule,
27
31
  MatOptionModule,
@@ -31,7 +35,9 @@ export class ColumnSelectorModule {
31
35
  MatMenu,
32
36
  MatSelectionList,
33
37
  FormsModule,
34
- MatListOption] }); }
38
+ MatListOption,
39
+ MatInputModule,
40
+ MatButtonModule] }); }
35
41
  }
36
42
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ColumnSelectorModule, decorators: [{
37
43
  type: NgModule,
@@ -53,8 +59,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
53
59
  MatMenu,
54
60
  MatSelectionList,
55
61
  FormsModule,
56
- MatListOption
62
+ MatListOption,
63
+ MatInputModule,
64
+ MatButtonModule
57
65
  ]
58
66
  }]
59
67
  }] });
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLXNlbGVjdG9yLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvY29sdW1uLXNlbGVjdG9yL2NvbHVtbi1zZWxlY3Rvci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDdEYsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsV0FBVyxFQUFFLG1CQUFtQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEUsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQy9DLE9BQU8sRUFBQyxPQUFPLEVBQUUsY0FBYyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDL0QsT0FBTyxFQUFDLGFBQWEsRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLHdCQUF3QixDQUFDOztBQXlCdkUsTUFBTSxPQUFPLG9CQUFvQjsrR0FBcEIsb0JBQW9CO2dIQUFwQixvQkFBb0IsaUJBbkI3Qix1QkFBdUIsYUFNdkIsWUFBWTtZQUNaLGtCQUFrQjtZQUNsQixlQUFlO1lBQ2YsZUFBZTtZQUNmLG1CQUFtQjtZQUNuQixPQUFPO1lBQ1AsY0FBYztZQUNkLE9BQU87WUFDUCxnQkFBZ0I7WUFDaEIsV0FBVztZQUNYLGFBQWEsYUFiYix1QkFBdUI7Z0hBZ0JkLG9CQUFvQixZQWI3QixZQUFZO1lBQ1osa0JBQWtCO1lBQ2xCLGVBQWU7WUFDZixlQUFlO1lBQ2YsbUJBQW1CO1lBQ25CLE9BQU87WUFFUCxPQUFPO1lBQ1AsZ0JBQWdCO1lBQ2hCLFdBQVc7WUFDWCxhQUFhOzs0RkFHSixvQkFBb0I7a0JBckJoQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWix1QkFBdUI7cUJBQ3hCO29CQUNELE9BQU8sRUFBRTt3QkFDUCx1QkFBdUI7cUJBQ3hCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLGtCQUFrQjt3QkFDbEIsZUFBZTt3QkFDZixlQUFlO3dCQUNmLG1CQUFtQjt3QkFDbkIsT0FBTzt3QkFDUCxjQUFjO3dCQUNkLE9BQU87d0JBQ1AsZ0JBQWdCO3dCQUNoQixXQUFXO3dCQUNYLGFBQWE7cUJBQ2Q7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbHVtblNlbGVjdG9yQ29tcG9uZW50IH0gZnJvbSAnLi9jb2x1bW4tc2VsZWN0b3IvY29sdW1uLXNlbGVjdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQge01hdEZvcm1GaWVsZE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQge01hdE9wdGlvbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQge01hdFNlbGVjdE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcbmltcG9ydCB7Rm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7TWF0SWNvbn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2ljb25cIjtcbmltcG9ydCB7TWF0TWVudSwgTWF0TWVudVRyaWdnZXJ9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9tZW51XCI7XG5pbXBvcnQge01hdExpc3RPcHRpb24sIE1hdFNlbGVjdGlvbkxpc3R9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9saXN0XCI7XG5cblxuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBDb2x1bW5TZWxlY3RvckNvbXBvbmVudFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgQ29sdW1uU2VsZWN0b3JDb21wb25lbnRcbiAgXSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgTWF0T3B0aW9uTW9kdWxlLFxuICAgIE1hdFNlbGVjdE1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE1hdEljb24sXG4gICAgTWF0TWVudVRyaWdnZXIsXG4gICAgTWF0TWVudSxcbiAgICBNYXRTZWxlY3Rpb25MaXN0LFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIE1hdExpc3RPcHRpb25cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBDb2x1bW5TZWxlY3Rvck1vZHVsZSB7IH1cbiJdfQ==
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLXNlbGVjdG9yLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvY29sdW1uLXNlbGVjdG9yL2NvbHVtbi1zZWxlY3Rvci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDdEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBMkIzRCxNQUFNLE9BQU8sb0JBQW9COytHQUFwQixvQkFBb0I7Z0hBQXBCLG9CQUFvQixpQkFyQjdCLHVCQUF1QixhQU12QixZQUFZO1lBQ1osa0JBQWtCO1lBQ2xCLGVBQWU7WUFDZixlQUFlO1lBQ2YsbUJBQW1CO1lBQ25CLE9BQU87WUFDUCxjQUFjO1lBQ2QsT0FBTztZQUNQLGdCQUFnQjtZQUNoQixXQUFXO1lBQ1gsYUFBYTtZQUNiLGNBQWM7WUFDZCxlQUFlLGFBZmYsdUJBQXVCO2dIQWtCZCxvQkFBb0IsWUFmN0IsWUFBWTtZQUNaLGtCQUFrQjtZQUNsQixlQUFlO1lBQ2YsZUFBZTtZQUNmLG1CQUFtQjtZQUNuQixPQUFPO1lBRVAsT0FBTztZQUNQLGdCQUFnQjtZQUNoQixXQUFXO1lBQ1gsYUFBYTtZQUNiLGNBQWM7WUFDZCxlQUFlOzs0RkFHTixvQkFBb0I7a0JBdkJoQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWix1QkFBdUI7cUJBQ3hCO29CQUNELE9BQU8sRUFBRTt3QkFDUCx1QkFBdUI7cUJBQ3hCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLGtCQUFrQjt3QkFDbEIsZUFBZTt3QkFDZixlQUFlO3dCQUNmLG1CQUFtQjt3QkFDbkIsT0FBTzt3QkFDUCxjQUFjO3dCQUNkLE9BQU87d0JBQ1AsZ0JBQWdCO3dCQUNoQixXQUFXO3dCQUNYLGFBQWE7d0JBQ2IsY0FBYzt3QkFDZCxlQUFlO3FCQUNoQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29sdW1uU2VsZWN0b3JDb21wb25lbnQgfSBmcm9tICcuL2NvbHVtbi1zZWxlY3Rvci9jb2x1bW4tc2VsZWN0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0T3B0aW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBNYXRTZWxlY3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRJY29uIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2ljb25cIjtcbmltcG9ydCB7IE1hdE1lbnUsIE1hdE1lbnVUcmlnZ2VyIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL21lbnVcIjtcbmltcG9ydCB7IE1hdExpc3RPcHRpb24sIE1hdFNlbGVjdGlvbkxpc3QgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvbGlzdFwiO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuXG5cblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgQ29sdW1uU2VsZWN0b3JDb21wb25lbnRcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIENvbHVtblNlbGVjdG9yQ29tcG9uZW50XG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgIE1hdE9wdGlvbk1vZHVsZSxcbiAgICBNYXRTZWxlY3RNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBNYXRJY29uLFxuICAgIE1hdE1lbnVUcmlnZ2VyLFxuICAgIE1hdE1lbnUsXG4gICAgTWF0U2VsZWN0aW9uTGlzdCxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBNYXRMaXN0T3B0aW9uLFxuICAgIE1hdElucHV0TW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIENvbHVtblNlbGVjdG9yTW9kdWxlIHsgfVxuIl19
@@ -1,3 +1,4 @@
1
+ export * from './column-config.model';
1
2
  export * from './column-selector.module';
2
3
  export * from './column-selector/column-selector.component';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2NvbHVtbi1zZWxlY3Rvci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsNkNBQTZDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NvbHVtbi1zZWxlY3Rvci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9jb2x1bW4tc2VsZWN0b3IvY29sdW1uLXNlbGVjdG9yLmNvbXBvbmVudCc7XG4iXX0=
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2NvbHVtbi1zZWxlY3Rvci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyw2Q0FBNkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29sdW1uLWNvbmZpZy5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2NvbHVtbi1zZWxlY3Rvci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9jb2x1bW4tc2VsZWN0b3IvY29sdW1uLXNlbGVjdG9yLmNvbXBvbmVudCc7XG4iXX0=
@@ -31,7 +31,7 @@ import * as i1$4 from '@angular/forms';
31
31
  import { UntypedFormControl, Validators, ReactiveFormsModule, FormsModule, NG_VALUE_ACCESSOR, FormControl } from '@angular/forms';
32
32
  import * as i1$2 from '@angular/common/http';
33
33
  import { HttpErrorResponse, HttpResponse, HttpClient, provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';
34
- import { throwError, Observable, Subject, of, BehaviorSubject, map as map$1, Subscription, from, finalize as finalize$1, debounceTime as debounceTime$1, distinctUntilChanged as distinctUntilChanged$1 } from 'rxjs';
34
+ import { throwError, Observable, Subject, of, BehaviorSubject, map as map$1, Subscription, from, finalize as finalize$1, debounceTime as debounceTime$1, distinctUntilChanged as distinctUntilChanged$1, startWith as startWith$1 } from 'rxjs';
35
35
  import * as i1$1 from '@angular/material/snack-bar';
36
36
  import { MAT_SNACK_BAR_DATA, MatSnackBarModule } from '@angular/material/snack-bar';
37
37
  import * as i8$5 from '@angular/material/form-field';
@@ -533,8 +533,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
533
533
 
534
534
  class DataTable {
535
535
  }
536
- class ColumnConfig {
537
- }
536
+ let ColumnConfig$1 = class ColumnConfig {
537
+ };
538
538
  class ActionConfig {
539
539
  }
540
540
  class ActionsMenu {
@@ -12402,52 +12402,81 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
12402
12402
  }]
12403
12403
  }] });
12404
12404
 
12405
+ class ColumnConfig {
12406
+ }
12407
+
12405
12408
  class ColumnSelectorComponent {
12409
+ get availableColumns() {
12410
+ return this.columnConfigs;
12411
+ }
12412
+ get displayedColumns() {
12413
+ return this.columnConfigs.filter(column => column.isSelected ?? true);
12414
+ }
12415
+ get displayedColumnDefs() {
12416
+ return this.displayedColumns.map(column => column.def);
12417
+ }
12418
+ get filteredColumns() {
12419
+ return this.availableColumns.filter((column) => {
12420
+ if (this.search.value) {
12421
+ return column.label.toLowerCase().includes(this.search.value.toLowerCase());
12422
+ }
12423
+ return true;
12424
+ });
12425
+ }
12426
+ get sortedColumns() {
12427
+ let columns = this.filteredColumns.sort((a, b) => {
12428
+ if (a.label < b.label)
12429
+ return -1;
12430
+ if (a.label > b.label)
12431
+ return 1;
12432
+ return 0;
12433
+ });
12434
+ if (this.search.value) {
12435
+ columns = [...columns, ...this.selectedColumns];
12436
+ }
12437
+ return [...new Map(columns.map(column => [column.def, column])).values()];
12438
+ }
12406
12439
  constructor() {
12407
- this.availableColumns = [];
12408
- this.displayedColumns = [];
12409
12440
  this.label = 'Columns';
12410
12441
  this.mode = 'selector';
12442
+ this.columnConfigs = [];
12443
+ this.selectedColumns = [];
12444
+ this.selectedColumnsChange = new EventEmitter();
12411
12445
  this.displayedColumnsChange = new EventEmitter();
12412
- /**
12413
- * @deprecated Use displayedColumnsChange instead
12414
- */
12415
- this.updated = new EventEmitter();
12416
12446
  this.columnSelector = new FormControl([]);
12417
- this.selectedColumns = [];
12418
- this.selectedColumns = this.columnSelector.value || [];
12447
+ this.search = new FormControl('');
12419
12448
  }
12420
12449
  ngOnInit() {
12421
12450
  if (this.displayedColumns?.length > 0) {
12422
- this.columnSelector.setValue(this.displayedColumns, { emitEvent: false });
12423
- this.selectedColumns = this.columnSelector.value;
12451
+ this.columnSelector.setValue(this.displayedColumnDefs, { emitEvent: false });
12424
12452
  }
12425
- this.columnSelector.valueChanges.subscribe((val) => {
12426
- this.displayedColumns = val;
12427
- this.displayedColumnsChange.emit(this.displayedColumns);
12428
- this.updated.emit(val);
12453
+ this.columnSelector.valueChanges
12454
+ .pipe(startWith$1(this.displayedColumnDefs))
12455
+ .subscribe((selectedColumns) => {
12456
+ this.selectedColumns = this.columnConfigs
12457
+ .filter(column => selectedColumns.includes(column.def));
12458
+ const columnDefs = this.selectedColumns.map(column => column.def);
12459
+ this.selectedColumnsChange.emit(this.selectedColumns);
12460
+ this.displayedColumnsChange.emit(columnDefs);
12429
12461
  });
12430
12462
  }
12431
- updateColumnSelector() {
12432
- this.columnSelector.setValue(this.selectedColumns);
12433
- }
12434
12463
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ColumnSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
12435
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ColumnSelectorComponent, selector: "app-column-selector", inputs: { availableColumns: "availableColumns", displayedColumns: "displayedColumns", label: "label", mode: "mode" }, outputs: { displayedColumnsChange: "displayedColumnsChange", updated: "updated" }, ngImport: i0, template: "<mat-form-field *ngIf=\"mode === 'selector'\">\n <mat-label>{{ label }}</mat-label>\n <mat-select [multiple]=\"true\" [formControl]=\"columnSelector\">\n <mat-option class=\"text-capitalize\" *ngFor=\"let col of availableColumns\" [value]=\"col\">\n {{ col }}\n </mat-option>\n </mat-select>\n</mat-form-field>\n\n<!-- Mode: Icon -->\n<mat-icon *ngIf=\"mode === 'icon'\" class=\"cursor-pointer\"\n [matMenuTriggerFor]=\"columnMenu\" #menuTrigger=\"matMenuTrigger\">\n view_column\n</mat-icon>\n\n<!-- Mat Menu for Multi Selection -->\n<mat-menu #columnMenu=\"matMenu\" [overlapTrigger]=\"false\">\n <mat-selection-list [(ngModel)]=\"selectedColumns\" (ngModelChange)=\"updateColumnSelector()\">\n <mat-list-option *ngFor=\"let col of availableColumns\" [value]=\"col\">\n {{ col }}\n </mat-list-option>\n </mat-selection-list>\n</mat-menu>\n", styles: [""], dependencies: [{ kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i8$5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8$5.MatLabel, selector: "mat-label" }, { kind: "component", type: i8$3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i12.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i8$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i8$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: i8$2.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i8$6.MatSelectionList, selector: "mat-selection-list", inputs: ["color", "compareWith", "multiple", "hideSingleSelectionIndicator", "disabled"], outputs: ["selectionChange"], exportAs: ["matSelectionList"] }, { kind: "directive", type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i8$6.MatListOption, selector: "mat-list-option", inputs: ["togglePosition", "checkboxPosition", "color", "value", "selected"], outputs: ["selectedChange"], exportAs: ["matListOption"] }] }); }
12464
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ColumnSelectorComponent, selector: "app-column-selector", inputs: { label: "label", mode: "mode", columnConfigs: "columnConfigs", selectedColumns: "selectedColumns" }, outputs: { selectedColumnsChange: "selectedColumnsChange", displayedColumnsChange: "displayedColumnsChange" }, ngImport: i0, template: "<mat-form-field *ngIf=\"mode === 'selector'\">\n <mat-label>{{ label }}</mat-label>\n <mat-select [multiple]=\"true\" [formControl]=\"columnSelector\">\n <mat-option class=\"text-capitalize\" *ngFor=\"let col of sortedColumns\" [value]=\"col.def\"\n [disabled]=\"!(col?.isEditable ?? true)\">\n {{ col.label }}\n </mat-option>\n </mat-select>\n</mat-form-field>\n\n<div *ngIf=\"mode === 'icon'\" style=\"height: 20px;\">\n <button matTooltip=\"Column Selector\" type=\"button\" mat-icon-button (click)=\"select.open()\" class=\"column-button\">\n <mat-icon class=\"relative-view-icon\">view_column</mat-icon>\n <mat-select class=\"column-selector\" #select [formControl]=\"columnSelector\" multiple panelWidth=\"\">\n <mat-form-field class=\"p-1 w-100\">\n <input matInput [formControl]=\"search\" placeholder=\"Search\" (keydown)=\"$event.stopPropagation();\"\n autocomplete=\"off\">\n <button mat-icon-button matSuffix type=\"button\" *ngIf=\"search.value\" (click)=\"search.setValue('')\">\n <mat-icon>clear</mat-icon>\n </button>\n </mat-form-field>\n <mat-option *ngFor=\"let column of sortedColumns\" [value]=\"column.def\" class=\"text-capitalize\"\n [disabled]=\"!(column?.isEditable ?? true)\">{{column?.label}}</mat-option>\n </mat-select>\n </button>\n</div>", styles: [".relative-view-icon{position:relative;right:10px;bottom:14px}.column-button{height:20px;width:20px;border:0;background:transparent}.column-selector{opacity:0;position:relative;bottom:50px}\n"], dependencies: [{ kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i8$5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8$5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i8$5.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i8$3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i12.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "directive", type: i1$4.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: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i8$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i9$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: "component", type: i7$1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }] }); }
12436
12465
  }
12437
12466
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ColumnSelectorComponent, decorators: [{
12438
12467
  type: Component,
12439
- args: [{ selector: 'app-column-selector', template: "<mat-form-field *ngIf=\"mode === 'selector'\">\n <mat-label>{{ label }}</mat-label>\n <mat-select [multiple]=\"true\" [formControl]=\"columnSelector\">\n <mat-option class=\"text-capitalize\" *ngFor=\"let col of availableColumns\" [value]=\"col\">\n {{ col }}\n </mat-option>\n </mat-select>\n</mat-form-field>\n\n<!-- Mode: Icon -->\n<mat-icon *ngIf=\"mode === 'icon'\" class=\"cursor-pointer\"\n [matMenuTriggerFor]=\"columnMenu\" #menuTrigger=\"matMenuTrigger\">\n view_column\n</mat-icon>\n\n<!-- Mat Menu for Multi Selection -->\n<mat-menu #columnMenu=\"matMenu\" [overlapTrigger]=\"false\">\n <mat-selection-list [(ngModel)]=\"selectedColumns\" (ngModelChange)=\"updateColumnSelector()\">\n <mat-list-option *ngFor=\"let col of availableColumns\" [value]=\"col\">\n {{ col }}\n </mat-list-option>\n </mat-selection-list>\n</mat-menu>\n" }]
12440
- }], ctorParameters: () => [], propDecorators: { availableColumns: [{
12468
+ args: [{ selector: 'app-column-selector', template: "<mat-form-field *ngIf=\"mode === 'selector'\">\n <mat-label>{{ label }}</mat-label>\n <mat-select [multiple]=\"true\" [formControl]=\"columnSelector\">\n <mat-option class=\"text-capitalize\" *ngFor=\"let col of sortedColumns\" [value]=\"col.def\"\n [disabled]=\"!(col?.isEditable ?? true)\">\n {{ col.label }}\n </mat-option>\n </mat-select>\n</mat-form-field>\n\n<div *ngIf=\"mode === 'icon'\" style=\"height: 20px;\">\n <button matTooltip=\"Column Selector\" type=\"button\" mat-icon-button (click)=\"select.open()\" class=\"column-button\">\n <mat-icon class=\"relative-view-icon\">view_column</mat-icon>\n <mat-select class=\"column-selector\" #select [formControl]=\"columnSelector\" multiple panelWidth=\"\">\n <mat-form-field class=\"p-1 w-100\">\n <input matInput [formControl]=\"search\" placeholder=\"Search\" (keydown)=\"$event.stopPropagation();\"\n autocomplete=\"off\">\n <button mat-icon-button matSuffix type=\"button\" *ngIf=\"search.value\" (click)=\"search.setValue('')\">\n <mat-icon>clear</mat-icon>\n </button>\n </mat-form-field>\n <mat-option *ngFor=\"let column of sortedColumns\" [value]=\"column.def\" class=\"text-capitalize\"\n [disabled]=\"!(column?.isEditable ?? true)\">{{column?.label}}</mat-option>\n </mat-select>\n </button>\n</div>", styles: [".relative-view-icon{position:relative;right:10px;bottom:14px}.column-button{height:20px;width:20px;border:0;background:transparent}.column-selector{opacity:0;position:relative;bottom:50px}\n"] }]
12469
+ }], ctorParameters: () => [], propDecorators: { label: [{
12441
12470
  type: Input
12442
- }], displayedColumns: [{
12471
+ }], mode: [{
12443
12472
  type: Input
12444
- }], label: [{
12473
+ }], columnConfigs: [{
12445
12474
  type: Input
12446
- }], mode: [{
12475
+ }], selectedColumns: [{
12447
12476
  type: Input
12448
- }], displayedColumnsChange: [{
12477
+ }], selectedColumnsChange: [{
12449
12478
  type: Output
12450
- }], updated: [{
12479
+ }], displayedColumnsChange: [{
12451
12480
  type: Output
12452
12481
  }] } });
12453
12482
 
@@ -12463,7 +12492,9 @@ class ColumnSelectorModule {
12463
12492
  MatMenu,
12464
12493
  MatSelectionList,
12465
12494
  FormsModule,
12466
- MatListOption], exports: [ColumnSelectorComponent] }); }
12495
+ MatListOption,
12496
+ MatInputModule,
12497
+ MatButtonModule], exports: [ColumnSelectorComponent] }); }
12467
12498
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ColumnSelectorModule, imports: [CommonModule,
12468
12499
  MatFormFieldModule,
12469
12500
  MatOptionModule,
@@ -12473,7 +12504,9 @@ class ColumnSelectorModule {
12473
12504
  MatMenu,
12474
12505
  MatSelectionList,
12475
12506
  FormsModule,
12476
- MatListOption] }); }
12507
+ MatListOption,
12508
+ MatInputModule,
12509
+ MatButtonModule] }); }
12477
12510
  }
12478
12511
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ColumnSelectorModule, decorators: [{
12479
12512
  type: NgModule,
@@ -12495,7 +12528,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
12495
12528
  MatMenu,
12496
12529
  MatSelectionList,
12497
12530
  FormsModule,
12498
- MatListOption
12531
+ MatListOption,
12532
+ MatInputModule,
12533
+ MatButtonModule
12499
12534
  ]
12500
12535
  }]
12501
12536
  }] });
@@ -12508,5 +12543,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
12508
12543
  * Generated bundle index. Do not edit.
12509
12544
  */
12510
12545
 
12511
- export { AccessControlConfigModule, ActionPopup, ActionPopupComponent, ActionPopupModule, AlertService, ApiPrefixInterceptor, AuditLogForModelComponent, AuditLogForModelModule, AuditLogForModelRoutingModule, AuditLogListComponent, AuditLogListFilterComponent, AuditLogListFilterModule, AuditLogListFilterRoutingModule, AuditLogListModule, AuditLogListRoutingModule, AuditLogModule, AuditLogRoutingModule, AuditLogViewComponent, AuditLogViewModelComponent, AuditLogViewModelModule, AuditLogViewModelRoutingModule, AuditLogViewModule, AuditLogViewRoutingModule, AuditLogsViewModelComponent, AuditLogsViewModelModule, AuditLogsViewModelRoutingModule, AuthenticationGuard, AuthenticationService, CacheInterceptor, ChangePasswordModule, ColumnSelectorComponent, ColumnSelectorModule, CommentFormComponent, ConfigService, CoreModule, CredentialsService, CurrentUserService, DEFAULT_SELECTED_VALUE, DataManager, DataTable, DataTableComponent, DataTableModule, DateUtils, DateValidator, DocumentViewerComponent, DocumentViewerModule, EmailSubscriptionForUserComponent, EmailSubscriptionForUserModule, EmailSubscriptionForUserRoutingModule, EmailSubscriptionModule, EmailSubscriptionRoutingModule, EmailSubscriptionTypeFormComponent, EmailSubscriptionTypeFormModule, EmailSubscriptionTypeFormRoutingModule, EmailSubscriptionTypeListComponent, EmailSubscriptionTypeListModule, EmailSubscriptionTypeListRoutingModule, EmailSubscriptionTypeModule, EmailSubscriptionTypeRoutingModule, EmailSubscriptionUserFormComponent, EmailSubscriptionUserFormModule, EmailSubscriptionUserFormRoutingModule, EmailSubscriptionUserListComponent, EmailSubscriptionUserListFilterComponent, EmailSubscriptionUserListFilterModule, EmailSubscriptionUserListFilterRoutingModule, EmailSubscriptionUserListModule, EmailSubscriptionUserListRoutingModule, EmailSubscriptionUserModule, EmailSubscriptionUserRoutingModule, EntityFileFormComponent, EntityFileService, EntityFilesViewAllComponent, EntityFilesViewAllModule, ErrorHandlerInterceptor, ErrorHandlerService, ErrorSnackComponent, ExportExcelButtonComponent, ExportExcelModule, FileDragdropUploaderComponent, FileDragdropUploaderModule, FileDropperComponent, FileDropperConfig, FileDropperModule, FilterService, ForgotPasswordComponent, ForgotPasswordModule, ForgotPasswordRoutingModule, FormValidatorService, HTTP_DYNAMIC_INTERCEPTORS, HttpCacheService, HttpService, ImportCsvComponent, ImportCsvModule, LoaderComponent, LoaderModule, LogLevel, Logger, LoginComponent, LoginHistoryForUserComponent, LoginHistoryForUserModule, LoginHistoryForUserRoutingModule, LoginModule, LoginRoutingModule, MaterialModule, MultiUserConfig, NgxTechlifyUsersModule, NoteFormComponent, NoteListComponent, NoteModule, NumItemsSelector, NumberInputButtonComponent, NumberInputButtonModule, NumberSelector, PageEvent, Permission, PermissionModule, PermissionRoutingProvider, PermissionsManagementComponent, ProfileEditComponent, ProfileModule, ProfileRoutingModule, ReadMoreComponent, ReadMoreModule, RequestHelperService, RestrictorTypeSelectorComponent, RestrictorTypeSelectorModule, RestrictorsModule, Role, RoleFormButtonComponent, RoleFormComponent, RoleModule, RoleRoutingProvider, RoleService, RolesViewAllComponent, RouteReusableStrategy, SearchableSelectorComponent, SearchableSelectorModule, SignUpComponent, SignupModule, SignupRoutingModule, SnackModule, StorageService, SuccessSnackComponent, TechlifyCompanySwitcherComponent, TechlifyCompanySwitcherModule, TechlifyConfig, TechlifyFeatureEnabledDirective, TechlifyFeatureListingComponent, TechlifyFeatureModule, TechlifyFeatureRoutes, TechlifyFormComponentInterface, TechlifyListingControllerInterface, TechlifyNotificationForUserComponent, TechlifyNotificationForUserModule, TechlifyNotificationForUserRoutingModule, TechlifyNotificationModule, TechlifyNotificationRoutingModule, TechlifyServiceBaseClass, TechlifyTaggerTagFormConfigModel, TechlifyTaggerTagFormFieldComponent, TechlifyTaggerTagFormFieldModule, TechlifyTaggerTagSelectorComponent, TechlifyTaggerTagSelectorModule, TechlifyUpdateHistoryModule, TechlifyUpdateModule, TechlifyUpdateService, TechlifyUpdatesTeaserComponent, TechlifyUpdatesTeaserModule, Timeline, TimelineFilterComponent, TimelineFilterModule, TokenInterceptor, UpdateNotifierComponent, UpdateNotifierModule, User, UserClientEnableDisableButtonComponent, UserClientsListComponent, UserConfig, UserConfigService, UserDataService, UserEnableButtonComponent, UserExploreComponent, UserFormComponent, UserListPageConfig, UserModule, UserRoutingProvider, UserSelectorComponent, UserSelectorModule, UserService, UserSessionsComponent, UsersViewAllComponent, UtilityModule, ViewerConfig, calculateTimeline, esfur, estlr, esulr };
12546
+ export { AccessControlConfigModule, ActionPopup, ActionPopupComponent, ActionPopupModule, AlertService, ApiPrefixInterceptor, AuditLogForModelComponent, AuditLogForModelModule, AuditLogForModelRoutingModule, AuditLogListComponent, AuditLogListFilterComponent, AuditLogListFilterModule, AuditLogListFilterRoutingModule, AuditLogListModule, AuditLogListRoutingModule, AuditLogModule, AuditLogRoutingModule, AuditLogViewComponent, AuditLogViewModelComponent, AuditLogViewModelModule, AuditLogViewModelRoutingModule, AuditLogViewModule, AuditLogViewRoutingModule, AuditLogsViewModelComponent, AuditLogsViewModelModule, AuditLogsViewModelRoutingModule, AuthenticationGuard, AuthenticationService, CacheInterceptor, ChangePasswordModule, ColumnConfig, ColumnSelectorComponent, ColumnSelectorModule, CommentFormComponent, ConfigService, CoreModule, CredentialsService, CurrentUserService, DEFAULT_SELECTED_VALUE, DataManager, DataTable, DataTableComponent, DataTableModule, DateUtils, DateValidator, DocumentViewerComponent, DocumentViewerModule, EmailSubscriptionForUserComponent, EmailSubscriptionForUserModule, EmailSubscriptionForUserRoutingModule, EmailSubscriptionModule, EmailSubscriptionRoutingModule, EmailSubscriptionTypeFormComponent, EmailSubscriptionTypeFormModule, EmailSubscriptionTypeFormRoutingModule, EmailSubscriptionTypeListComponent, EmailSubscriptionTypeListModule, EmailSubscriptionTypeListRoutingModule, EmailSubscriptionTypeModule, EmailSubscriptionTypeRoutingModule, EmailSubscriptionUserFormComponent, EmailSubscriptionUserFormModule, EmailSubscriptionUserFormRoutingModule, EmailSubscriptionUserListComponent, EmailSubscriptionUserListFilterComponent, EmailSubscriptionUserListFilterModule, EmailSubscriptionUserListFilterRoutingModule, EmailSubscriptionUserListModule, EmailSubscriptionUserListRoutingModule, EmailSubscriptionUserModule, EmailSubscriptionUserRoutingModule, EntityFileFormComponent, EntityFileService, EntityFilesViewAllComponent, EntityFilesViewAllModule, ErrorHandlerInterceptor, ErrorHandlerService, ErrorSnackComponent, ExportExcelButtonComponent, ExportExcelModule, FileDragdropUploaderComponent, FileDragdropUploaderModule, FileDropperComponent, FileDropperConfig, FileDropperModule, FilterService, ForgotPasswordComponent, ForgotPasswordModule, ForgotPasswordRoutingModule, FormValidatorService, HTTP_DYNAMIC_INTERCEPTORS, HttpCacheService, HttpService, ImportCsvComponent, ImportCsvModule, LoaderComponent, LoaderModule, LogLevel, Logger, LoginComponent, LoginHistoryForUserComponent, LoginHistoryForUserModule, LoginHistoryForUserRoutingModule, LoginModule, LoginRoutingModule, MaterialModule, MultiUserConfig, NgxTechlifyUsersModule, NoteFormComponent, NoteListComponent, NoteModule, NumItemsSelector, NumberInputButtonComponent, NumberInputButtonModule, NumberSelector, PageEvent, Permission, PermissionModule, PermissionRoutingProvider, PermissionsManagementComponent, ProfileEditComponent, ProfileModule, ProfileRoutingModule, ReadMoreComponent, ReadMoreModule, RequestHelperService, RestrictorTypeSelectorComponent, RestrictorTypeSelectorModule, RestrictorsModule, Role, RoleFormButtonComponent, RoleFormComponent, RoleModule, RoleRoutingProvider, RoleService, RolesViewAllComponent, RouteReusableStrategy, SearchableSelectorComponent, SearchableSelectorModule, SignUpComponent, SignupModule, SignupRoutingModule, SnackModule, StorageService, SuccessSnackComponent, TechlifyCompanySwitcherComponent, TechlifyCompanySwitcherModule, TechlifyConfig, TechlifyFeatureEnabledDirective, TechlifyFeatureListingComponent, TechlifyFeatureModule, TechlifyFeatureRoutes, TechlifyFormComponentInterface, TechlifyListingControllerInterface, TechlifyNotificationForUserComponent, TechlifyNotificationForUserModule, TechlifyNotificationForUserRoutingModule, TechlifyNotificationModule, TechlifyNotificationRoutingModule, TechlifyServiceBaseClass, TechlifyTaggerTagFormConfigModel, TechlifyTaggerTagFormFieldComponent, TechlifyTaggerTagFormFieldModule, TechlifyTaggerTagSelectorComponent, TechlifyTaggerTagSelectorModule, TechlifyUpdateHistoryModule, TechlifyUpdateModule, TechlifyUpdateService, TechlifyUpdatesTeaserComponent, TechlifyUpdatesTeaserModule, Timeline, TimelineFilterComponent, TimelineFilterModule, TokenInterceptor, UpdateNotifierComponent, UpdateNotifierModule, User, UserClientEnableDisableButtonComponent, UserClientsListComponent, UserConfig, UserConfigService, UserDataService, UserEnableButtonComponent, UserExploreComponent, UserFormComponent, UserListPageConfig, UserModule, UserRoutingProvider, UserSelectorComponent, UserSelectorModule, UserService, UserSessionsComponent, UsersViewAllComponent, UtilityModule, ViewerConfig, calculateTimeline, esfur, estlr, esulr };
12512
12547
  //# sourceMappingURL=ngx-techlify-core.mjs.map