@solidev/data 0.1.1 → 0.2.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.
- package/esm2022/lib/auth/auth-interceptor.service.mjs +3 -3
- package/esm2022/lib/data/data-backend.mjs +3 -3
- package/esm2022/lib/dispedit/choice.pipe.mjs +6 -6
- package/esm2022/lib/dispedit/dispedit/dispedit.component.mjs +3 -3
- package/esm2022/lib/dispedit/factor.pipe.mjs +6 -6
- package/esm2022/lib/dispedit/factorc.pipe.mjs +6 -6
- package/esm2022/lib/dispedit/fkselect/fkselect.component.mjs +3 -3
- package/esm2022/lib/dispedit/flags/flags.component.mjs +3 -3
- package/esm2022/lib/dispedit/m2mselect/m2mselect.component.mjs +3 -3
- package/esm2022/lib/dispedit/richedit/richedit.component.mjs +3 -3
- package/esm2022/lib/dispedit/sdelete/sdelete.component.mjs +3 -3
- package/esm2022/lib/messages/message-zone/message-zone.component.mjs +3 -3
- package/esm2022/lib/messages/message.service.mjs +3 -3
- package/esm2022/lib/modellist/model-list-fields/model-list-field-header/model-list-field-header.component.mjs +3 -3
- package/esm2022/lib/modellist/model-list-fields/model-list-fields-selector/model-list-fields-selector.component.mjs +3 -3
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-autocomplete-filter/model-list-autocomplete-filter.component.mjs +3 -3
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-autocomplete-multi-filter/model-list-autocomplete-multi-filter.component.mjs +3 -3
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-date-filter/model-list-date-filter.component.mjs +3 -3
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-datetime-filter/model-list-datetime-filter.component.mjs +3 -3
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-datetimerange-filter/model-list-datetime-range-filter.component.mjs +3 -3
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-flags-filter/model-list-flags-filter.component.mjs +3 -3
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/model-list-geodistance-filter.component.mjs +3 -3
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-number-filter/model-list-number-filter.component.mjs +3 -3
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-select-filter/model-list-select-filter.component.mjs +3 -3
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-select-multi-filter/model-list-select-multi-filter.component.mjs +3 -3
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-text-filter/model-list-text-filter.component.mjs +3 -3
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-tree-filter/model-list-tree-filter.component.mjs +3 -3
- package/esm2022/lib/modellist/model-list-filters/model-list-filters/model-list-filters.component.mjs +3 -3
- package/esm2022/lib/modellist/model-list-filters/model-list-filters-select/model-list-filters-select.component.mjs +3 -3
- package/esm2022/lib/modellist/model-list-paginator/model-list-paginator/model-list-paginator.component.mjs +3 -3
- package/esm2022/lib/modellist/model-list-sorter/model-list-sorter/model-list-sorter.component.mjs +3 -3
- package/esm2022/lib/modellist/model-list.service.mjs +13 -6
- package/esm2022/lib/routing/breadcrumb/breadcrumb.component.mjs +3 -3
- package/esm2022/lib/updates/update/update.component.mjs +3 -3
- package/esm2022/lib/updates/update.service.mjs +3 -3
- package/esm2022/lib/uploader/ng-file-drop.directive.mjs +3 -3
- package/esm2022/lib/uploader/ng-file-select.directive.mjs +3 -3
- package/esm2022/lib/uploader/ngx-uploader.module.mjs +4 -4
- package/esm2022/lib/utils/tab-memory.service.mjs +3 -3
- package/fesm2022/solidev-data.mjs +136 -129
- package/fesm2022/solidev-data.mjs.map +1 -1
- package/lib/modellist/model-list.service.d.ts +5 -0
- package/package.json +4 -4
|
@@ -17,10 +17,10 @@ export class ModelListAutocompleteMultiFilterComponent extends ModelListAutocomp
|
|
|
17
17
|
this.list.filters.update();
|
|
18
18
|
this.fc.setValue(null);
|
|
19
19
|
}
|
|
20
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.
|
|
21
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.
|
|
20
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: ModelListAutocompleteMultiFilterComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
21
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: ModelListAutocompleteMultiFilterComponent, isStandalone: true, selector: "data-model-list-autocomplete-multi-filter", inputs: { filter: "filter" }, usesInheritance: true, ngImport: i0, template: "\n<div class=\"filteritem\" [ngClass]=\"filter.displayClasses || classes\">\n <div class=\"trash float-end\" (click)=\"disable()\"><i class=\"bi bi-trash\"></i></div>\n <label>{{filter.label}}</label>\n <input class=\"form-control\" [formControl]=\"fc\" [ngbTypeahead]=\"search\" [editable]=\"false\" [focusFirst]=\"true\" [inputFormatter]=\"display\" [resultFormatter]=\"display\" [placeholder]=\"filter.help\" (keyup.arrowDown)=\"scrollAction($event)\" (keyup.arrowUp)=\"scrollAction($event)\" #th=\"ngbTypeahead\" [class.tascroll]=\"filter.scroll\">\n <div class=\"enabled mt-1\">\n <div *ngFor=\"let e of filter.mcurrent$|async\"><i class=\"bi bi-trash me-2\" (click)=\"unset(e.value, e.desc)\" role=\"button\"></i>{{e.desc}}</div>\n </div>\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: NgbTypeaheadModule }, { kind: "directive", type: i2.NgbTypeahead, selector: "input[ngbTypeahead]", inputs: ["autocomplete", "container", "editable", "focusFirst", "inputFormatter", "ngbTypeahead", "resultFormatter", "resultTemplate", "selectOnExact", "showHint", "placement", "popperOptions", "popupClass"], outputs: ["selectItem"], exportAs: ["ngbTypeahead"] }, { 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"] }] }); }
|
|
22
22
|
}
|
|
23
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.
|
|
23
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: ModelListAutocompleteMultiFilterComponent, decorators: [{
|
|
24
24
|
type: Component,
|
|
25
25
|
args: [{ selector: 'data-model-list-autocomplete-multi-filter', standalone: true, imports: [CommonModule, NgbTypeaheadModule, ReactiveFormsModule], template: "\n<div class=\"filteritem\" [ngClass]=\"filter.displayClasses || classes\">\n <div class=\"trash float-end\" (click)=\"disable()\"><i class=\"bi bi-trash\"></i></div>\n <label>{{filter.label}}</label>\n <input class=\"form-control\" [formControl]=\"fc\" [ngbTypeahead]=\"search\" [editable]=\"false\" [focusFirst]=\"true\" [inputFormatter]=\"display\" [resultFormatter]=\"display\" [placeholder]=\"filter.help\" (keyup.arrowDown)=\"scrollAction($event)\" (keyup.arrowUp)=\"scrollAction($event)\" #th=\"ngbTypeahead\" [class.tascroll]=\"filter.scroll\">\n <div class=\"enabled mt-1\">\n <div *ngFor=\"let e of filter.mcurrent$|async\"><i class=\"bi bi-trash me-2\" (click)=\"unset(e.value, e.desc)\" role=\"button\"></i>{{e.desc}}</div>\n </div>\n</div>" }]
|
|
26
26
|
}], propDecorators: { filter: [{
|
|
@@ -24,10 +24,10 @@ export class ModelListDateFilterComponent {
|
|
|
24
24
|
this.filter.enabled = false;
|
|
25
25
|
this.list.filters.update();
|
|
26
26
|
}
|
|
27
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.
|
|
28
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.
|
|
27
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: ModelListDateFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: ModelListDateFilterComponent, isStandalone: true, selector: "data-model-list-date-filter", inputs: { list: "list", filter: "filter", classes: "classes" }, ngImport: i0, template: "\n<div class=\"filteritem\" [ngClass]=\"filter.displayClasses || classes\">\n <div class=\"trash float-end\" (click)=\"disable()\"><i class=\"bi bi-trash\"></i></div>\n <label>{{filter.label}}</label>\n <input class=\"form-control\" type=\"date\" [formControl]=\"fc\" [placeholder]=\"filter.help\">\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] }); }
|
|
29
29
|
}
|
|
30
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.
|
|
30
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: ModelListDateFilterComponent, decorators: [{
|
|
31
31
|
type: Component,
|
|
32
32
|
args: [{ selector: 'data-model-list-date-filter', standalone: true, imports: [CommonModule, ReactiveFormsModule], template: "\n<div class=\"filteritem\" [ngClass]=\"filter.displayClasses || classes\">\n <div class=\"trash float-end\" (click)=\"disable()\"><i class=\"bi bi-trash\"></i></div>\n <label>{{filter.label}}</label>\n <input class=\"form-control\" type=\"date\" [formControl]=\"fc\" [placeholder]=\"filter.help\">\n</div>" }]
|
|
33
33
|
}], ctorParameters: function () { return []; }, propDecorators: { list: [{
|
|
@@ -24,10 +24,10 @@ export class ModelListDatetimeFilterComponent {
|
|
|
24
24
|
this.filter.enabled = false;
|
|
25
25
|
this.list.filters.update();
|
|
26
26
|
}
|
|
27
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.
|
|
28
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.
|
|
27
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: ModelListDatetimeFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: ModelListDatetimeFilterComponent, isStandalone: true, selector: "data-model-list-datetime-filter", inputs: { list: "list", filter: "filter", classes: "classes" }, ngImport: i0, template: "\n<div class=\"filteritem\" [ngClass]=\"filter.displayClasses || classes\">\n <div class=\"trash float-end\" (click)=\"disable()\"><i class=\"bi bi-trash\"></i></div>\n <label>{{filter.label}}</label>\n <input class=\"form-control\" type=\"datetime-local\" [formControl]=\"fc\" [placeholder]=\"filter.help\">\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] }); }
|
|
29
29
|
}
|
|
30
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.
|
|
30
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: ModelListDatetimeFilterComponent, decorators: [{
|
|
31
31
|
type: Component,
|
|
32
32
|
args: [{ selector: 'data-model-list-datetime-filter', standalone: true, imports: [CommonModule, ReactiveFormsModule], template: "\n<div class=\"filteritem\" [ngClass]=\"filter.displayClasses || classes\">\n <div class=\"trash float-end\" (click)=\"disable()\"><i class=\"bi bi-trash\"></i></div>\n <label>{{filter.label}}</label>\n <input class=\"form-control\" type=\"datetime-local\" [formControl]=\"fc\" [placeholder]=\"filter.help\">\n</div>" }]
|
|
33
33
|
}], ctorParameters: function () { return []; }, propDecorators: { list: [{
|
|
@@ -5,10 +5,10 @@ export class ModelListDatetimeRangeFilterComponent {
|
|
|
5
5
|
constructor() {
|
|
6
6
|
this.classes = '';
|
|
7
7
|
}
|
|
8
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.
|
|
9
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.
|
|
8
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: ModelListDatetimeRangeFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: ModelListDatetimeRangeFilterComponent, isStandalone: true, selector: "data-model-list-datetime-range-filter", inputs: { list: "list", filter: "filter", classes: "classes" }, ngImport: i0, template: "<p>model-list-datetime-range-filter works!</p>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
|
|
10
10
|
}
|
|
11
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: ModelListDatetimeRangeFilterComponent, decorators: [{
|
|
12
12
|
type: Component,
|
|
13
13
|
args: [{ selector: 'data-model-list-datetime-range-filter', standalone: true, imports: [CommonModule], template: "<p>model-list-datetime-range-filter works!</p>" }]
|
|
14
14
|
}], ctorParameters: function () { return []; }, propDecorators: { list: [{
|
|
@@ -33,10 +33,10 @@ export class ModelListFlagsFilterComponent {
|
|
|
33
33
|
this.filter.enabled = false;
|
|
34
34
|
this.list.filters.update();
|
|
35
35
|
}
|
|
36
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.
|
|
37
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.
|
|
36
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: ModelListFlagsFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
37
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: ModelListFlagsFilterComponent, isStandalone: true, selector: "data-model-list-flags-filter", inputs: { list: "list", filter: "filter", classes: "classes" }, ngImport: i0, template: "\n<div class=\"filteritem\" [ngClass]=\"filter.displayClasses || classes\">\n <div class=\"trash float-end\" (click)=\"disable()\"><i class=\"bi bi-trash\"></i></div>\n <label>{{filter.label}}</label>\n <select class=\"form-select\" [formControl]=\"fc\">\n <option [ngValue]=\"null\">-- {{filter.help}} --</option>\n <option *ngFor=\"let c of flags$|async\" [ngValue]=\"c.flag\">{{c.flag}} ({{c.count}})</option>\n </select>\n <div class=\"enabled mt-1\">\n <div *ngFor=\"let e of filter.mcurrent$|async\"><i class=\"bi bi-trash me-2\" (click)=\"unset(e.value, e.desc)\" role=\"button\"></i>{{e.desc}}</div>\n </div>\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] }); }
|
|
38
38
|
}
|
|
39
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.
|
|
39
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: ModelListFlagsFilterComponent, decorators: [{
|
|
40
40
|
type: Component,
|
|
41
41
|
args: [{ selector: 'data-model-list-flags-filter', standalone: true, imports: [CommonModule, ReactiveFormsModule], template: "\n<div class=\"filteritem\" [ngClass]=\"filter.displayClasses || classes\">\n <div class=\"trash float-end\" (click)=\"disable()\"><i class=\"bi bi-trash\"></i></div>\n <label>{{filter.label}}</label>\n <select class=\"form-select\" [formControl]=\"fc\">\n <option [ngValue]=\"null\">-- {{filter.help}} --</option>\n <option *ngFor=\"let c of flags$|async\" [ngValue]=\"c.flag\">{{c.flag}} ({{c.count}})</option>\n </select>\n <div class=\"enabled mt-1\">\n <div *ngFor=\"let e of filter.mcurrent$|async\"><i class=\"bi bi-trash me-2\" (click)=\"unset(e.value, e.desc)\" role=\"button\"></i>{{e.desc}}</div>\n </div>\n</div>" }]
|
|
42
42
|
}], ctorParameters: function () { return []; }, propDecorators: { list: [{
|
|
@@ -47,10 +47,10 @@ export class ModelListGeodistanceFilterComponent {
|
|
|
47
47
|
const elem = $event.currentTarget.nextElementSibling.getElementsByClassName('active')[0];
|
|
48
48
|
elem.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
|
|
49
49
|
}
|
|
50
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.
|
|
51
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.
|
|
50
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: ModelListGeodistanceFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
51
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: ModelListGeodistanceFilterComponent, isStandalone: true, selector: "data-model-list-geodistance-filter", inputs: { list: "list", filter: "filter", classes: "classes" }, ngImport: i0, template: "\n<div class=\"filteritem\" [ngClass]=\"filter.displayClasses || classes\">\n <div class=\"trash float-end\" (click)=\"disable()\"><i class=\"bi bi-trash\"></i></div>\n <label>{{filter.label}}</label>\n <div class=\"row g-1\">\n <div class=\"col-4\">\n <select class=\"form-select\" [formControl]=\"fd\">\n <option value=\"\">Distance</option>\n <option value=\"lte,10\">< 10 km</option>\n <option value=\"lte,20\">< 20 km</option>\n <option value=\"lte,30\">< 30 km</option>\n <option value=\"lte,50\">< 50 km</option>\n <option value=\"lte,80\">< 80 km</option>\n <option value=\"lte,100\">< 100 km</option>\n <option value=\"lte,150\">< 150 km</option>\n <option value=\"lte,200\">< 200 km</option>\n <option value=\"lte,250\">< 250 km</option>\n <option value=\"lte,300\">< 300 km</option>\n <option value=\"lte,500\">< 500 km</option>\n <option value=\"lte,1000\">< 1000 km</option>\n </select>\n </div>\n <div class=\"col-8\">\n <input class=\"form-control\" [formControl]=\"fc\" [ngbTypeahead]=\"search\" [editable]=\"false\" [focusFirst]=\"true\" [inputFormatter]=\"display\" [resultFormatter]=\"display\" [placeholder]=\"filter.help\" (keyup.arrowDown)=\"scrollAction($event)\" (keyup.arrowUp)=\"scrollAction($event)\" #th=\"ngbTypeahead\" [class.tascroll]=\"filter.scroll\">\n </div>\n </div>\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: NgbTypeaheadModule }, { kind: "directive", type: i2.NgbTypeahead, selector: "input[ngbTypeahead]", inputs: ["autocomplete", "container", "editable", "focusFirst", "inputFormatter", "ngbTypeahead", "resultFormatter", "resultTemplate", "selectOnExact", "showHint", "placement", "popperOptions", "popupClass"], outputs: ["selectItem"], exportAs: ["ngbTypeahead"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { 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.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] }); }
|
|
52
52
|
}
|
|
53
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.
|
|
53
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: ModelListGeodistanceFilterComponent, decorators: [{
|
|
54
54
|
type: Component,
|
|
55
55
|
args: [{ selector: 'data-model-list-geodistance-filter', standalone: true, imports: [CommonModule, NgbTypeaheadModule, ReactiveFormsModule], template: "\n<div class=\"filteritem\" [ngClass]=\"filter.displayClasses || classes\">\n <div class=\"trash float-end\" (click)=\"disable()\"><i class=\"bi bi-trash\"></i></div>\n <label>{{filter.label}}</label>\n <div class=\"row g-1\">\n <div class=\"col-4\">\n <select class=\"form-select\" [formControl]=\"fd\">\n <option value=\"\">Distance</option>\n <option value=\"lte,10\">< 10 km</option>\n <option value=\"lte,20\">< 20 km</option>\n <option value=\"lte,30\">< 30 km</option>\n <option value=\"lte,50\">< 50 km</option>\n <option value=\"lte,80\">< 80 km</option>\n <option value=\"lte,100\">< 100 km</option>\n <option value=\"lte,150\">< 150 km</option>\n <option value=\"lte,200\">< 200 km</option>\n <option value=\"lte,250\">< 250 km</option>\n <option value=\"lte,300\">< 300 km</option>\n <option value=\"lte,500\">< 500 km</option>\n <option value=\"lte,1000\">< 1000 km</option>\n </select>\n </div>\n <div class=\"col-8\">\n <input class=\"form-control\" [formControl]=\"fc\" [ngbTypeahead]=\"search\" [editable]=\"false\" [focusFirst]=\"true\" [inputFormatter]=\"display\" [resultFormatter]=\"display\" [placeholder]=\"filter.help\" (keyup.arrowDown)=\"scrollAction($event)\" (keyup.arrowUp)=\"scrollAction($event)\" #th=\"ngbTypeahead\" [class.tascroll]=\"filter.scroll\">\n </div>\n </div>\n</div>" }]
|
|
56
56
|
}], ctorParameters: function () { return []; }, propDecorators: { list: [{
|
|
@@ -30,10 +30,10 @@ export class ModelListNumberFilterComponent {
|
|
|
30
30
|
this.filter.setOperator(eq);
|
|
31
31
|
this.list.filters.update();
|
|
32
32
|
}
|
|
33
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.
|
|
34
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.
|
|
33
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: ModelListNumberFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: ModelListNumberFilterComponent, isStandalone: true, selector: "data-model-list-number-filter", inputs: { list: "list", filter: "filter", classes: "classes" }, ngImport: i0, template: "\n<div class=\"filteritem\" [ngClass]=\"filter.displayClasses || classes\">\n <div class=\"trash float-end\" (click)=\"disable()\">\n <div class=\"bi bi-trash\"></div>\n </div>\n <label>{{filter.label}}</label>\n <div class=\"input-group\" ngbDropdown>\n <button class=\"btn btn-outline-secondary\" type=\"button\" ngbDropdownToggle><span class=\"me-2\">{{filter.operator.label}}</span>\n <div class=\"dropdown-menu\" ngbDropdownMenu>\n <button ngbDropdownItem *ngFor=\"let op of filter.operations\" (click)=\"selectOp(op.operator)\" [class.text-primary]=\"op.operator === filter.operator.operator\">{{op.label}}</button>\n </div>\n </button>\n <input class=\"form-control\" type=\"number\" [formControl]=\"fc\" [placeholder]=\"filter.help\">\n </div>\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: NgbDropdownModule }, { kind: "directive", type: i3.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "popperOptions", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i3.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "directive", type: i3.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { kind: "directive", type: i3.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["disabled"] }] }); }
|
|
35
35
|
}
|
|
36
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.
|
|
36
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: ModelListNumberFilterComponent, decorators: [{
|
|
37
37
|
type: Component,
|
|
38
38
|
args: [{ selector: 'data-model-list-number-filter', standalone: true, imports: [CommonModule, ReactiveFormsModule, NgbDropdownModule], template: "\n<div class=\"filteritem\" [ngClass]=\"filter.displayClasses || classes\">\n <div class=\"trash float-end\" (click)=\"disable()\">\n <div class=\"bi bi-trash\"></div>\n </div>\n <label>{{filter.label}}</label>\n <div class=\"input-group\" ngbDropdown>\n <button class=\"btn btn-outline-secondary\" type=\"button\" ngbDropdownToggle><span class=\"me-2\">{{filter.operator.label}}</span>\n <div class=\"dropdown-menu\" ngbDropdownMenu>\n <button ngbDropdownItem *ngFor=\"let op of filter.operations\" (click)=\"selectOp(op.operator)\" [class.text-primary]=\"op.operator === filter.operator.operator\">{{op.label}}</button>\n </div>\n </button>\n <input class=\"form-control\" type=\"number\" [formControl]=\"fc\" [placeholder]=\"filter.help\">\n </div>\n</div>" }]
|
|
39
39
|
}], ctorParameters: function () { return []; }, propDecorators: { list: [{
|
|
@@ -40,10 +40,10 @@ export class ModelListSelectFilterComponent {
|
|
|
40
40
|
this.filter.enabled = false;
|
|
41
41
|
this.list.filters.update();
|
|
42
42
|
}
|
|
43
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.
|
|
44
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.
|
|
43
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: ModelListSelectFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
44
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: ModelListSelectFilterComponent, isStandalone: true, selector: "data-model-list-select-filter", inputs: { list: "list", filter: "filter", classes: "classes" }, ngImport: i0, template: "\n<div class=\"filteritem\" [ngClass]=\"filter.displayClasses || classes\">\n <div class=\"trash float-end\" (click)=\"disable()\"><i class=\"bi bi-trash\"></i></div>\n <label>{{filter.label}}</label>\n <select class=\"form-select\" [formControl]=\"fc\">\n <option [ngValue]=\"null\">-- {{filter.help}} --</option>\n <option *ngFor=\"let c of filter.choices|async\" [ngValue]=\"c.value\">{{c.desc}}</option>\n </select>\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] }); }
|
|
45
45
|
}
|
|
46
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.
|
|
46
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: ModelListSelectFilterComponent, decorators: [{
|
|
47
47
|
type: Component,
|
|
48
48
|
args: [{ selector: 'data-model-list-select-filter', standalone: true, imports: [CommonModule, ReactiveFormsModule], template: "\n<div class=\"filteritem\" [ngClass]=\"filter.displayClasses || classes\">\n <div class=\"trash float-end\" (click)=\"disable()\"><i class=\"bi bi-trash\"></i></div>\n <label>{{filter.label}}</label>\n <select class=\"form-select\" [formControl]=\"fc\">\n <option [ngValue]=\"null\">-- {{filter.help}} --</option>\n <option *ngFor=\"let c of filter.choices|async\" [ngValue]=\"c.value\">{{c.desc}}</option>\n </select>\n</div>" }]
|
|
49
49
|
}], ctorParameters: function () { return []; }, propDecorators: { list: [{
|
|
@@ -35,10 +35,10 @@ export class ModelListSelectMultiFilterComponent {
|
|
|
35
35
|
this.filter.enabled = false;
|
|
36
36
|
this.list.filters.update();
|
|
37
37
|
}
|
|
38
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.
|
|
39
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.
|
|
38
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: ModelListSelectMultiFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
39
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: ModelListSelectMultiFilterComponent, isStandalone: true, selector: "data-model-list-select-multi-filter", inputs: { list: "list", filter: "filter", classes: "classes" }, ngImport: i0, template: "\n<div class=\"filteritem\" [ngClass]=\"filter.displayClasses || classes\">\n <div class=\"trash float-end\" (click)=\"disable()\"><i class=\"bi bi-trash\"></i></div>\n <label>{{filter.label}}</label>\n <select class=\"form-select\" [formControl]=\"fc\">\n <option [ngValue]=\"null\">-- {{filter.help}} --</option>\n <option *ngFor=\"let c of filter.choices|async\" [ngValue]=\"c.value\">{{c.desc}}</option>\n </select>\n <div class=\"enabled mt-1\">\n <div *ngFor=\"let e of filter.mcurrent$|async\"><i class=\"bi bi-trash me-2\" (click)=\"unset(e.value, e.desc)\" role=\"button\"></i>{{e.desc}}</div>\n </div>\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] }); }
|
|
40
40
|
}
|
|
41
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.
|
|
41
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: ModelListSelectMultiFilterComponent, decorators: [{
|
|
42
42
|
type: Component,
|
|
43
43
|
args: [{ selector: 'data-model-list-select-multi-filter', standalone: true, imports: [CommonModule, ReactiveFormsModule], template: "\n<div class=\"filteritem\" [ngClass]=\"filter.displayClasses || classes\">\n <div class=\"trash float-end\" (click)=\"disable()\"><i class=\"bi bi-trash\"></i></div>\n <label>{{filter.label}}</label>\n <select class=\"form-select\" [formControl]=\"fc\">\n <option [ngValue]=\"null\">-- {{filter.help}} --</option>\n <option *ngFor=\"let c of filter.choices|async\" [ngValue]=\"c.value\">{{c.desc}}</option>\n </select>\n <div class=\"enabled mt-1\">\n <div *ngFor=\"let e of filter.mcurrent$|async\"><i class=\"bi bi-trash me-2\" (click)=\"unset(e.value, e.desc)\" role=\"button\"></i>{{e.desc}}</div>\n </div>\n</div>" }]
|
|
44
44
|
}], ctorParameters: function () { return []; }, propDecorators: { list: [{
|
|
@@ -24,10 +24,10 @@ export class ModelListTextFilterComponent {
|
|
|
24
24
|
this.filter.enabled = false;
|
|
25
25
|
this.list.filters.update();
|
|
26
26
|
}
|
|
27
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.
|
|
28
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.
|
|
27
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: ModelListTextFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: ModelListTextFilterComponent, isStandalone: true, selector: "data-model-list-text-filter", inputs: { list: "list", filter: "filter", classes: "classes" }, ngImport: i0, template: "\n<div class=\"filteritem\" [ngClass]=\"filter.displayClasses || classes\">\n <div class=\"trash float-end\" (click)=\"disable()\"><i class=\"bi bi-trash\"></i></div>\n <label>{{filter.label}}</label>\n <input class=\"form-control\" type=\"text\" [formControl]=\"fc\" [placeholder]=\"filter.help\">\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] }); }
|
|
29
29
|
}
|
|
30
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.
|
|
30
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: ModelListTextFilterComponent, decorators: [{
|
|
31
31
|
type: Component,
|
|
32
32
|
args: [{ selector: 'data-model-list-text-filter', standalone: true, imports: [CommonModule, ReactiveFormsModule], template: "\n<div class=\"filteritem\" [ngClass]=\"filter.displayClasses || classes\">\n <div class=\"trash float-end\" (click)=\"disable()\"><i class=\"bi bi-trash\"></i></div>\n <label>{{filter.label}}</label>\n <input class=\"form-control\" type=\"text\" [formControl]=\"fc\" [placeholder]=\"filter.help\">\n</div>" }]
|
|
33
33
|
}], ctorParameters: function () { return []; }, propDecorators: { list: [{
|
|
@@ -158,10 +158,10 @@ export class ModelListTreeFilterComponent {
|
|
|
158
158
|
this.filter.enabled = false;
|
|
159
159
|
this.list.filters.update();
|
|
160
160
|
}
|
|
161
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.
|
|
162
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.
|
|
161
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: ModelListTreeFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
162
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: ModelListTreeFilterComponent, isStandalone: true, selector: "data-model-list-tree-filter", inputs: { list: "list", filter: "filter", classes: "classes" }, ngImport: i0, template: "\n<div class=\"filteritem\" [ngClass]=\"filter.displayClasses || classes\">\n <div class=\"trash float-end\" (click)=\"disable()\"><i class=\"bi bi-trash\"></i></div>\n <label>{{filter.label}}</label>\n <div class=\"levelselect\" *ngFor=\"let l of tree.levels\">\n <select class=\"form-select form-select-sm\" [formControl]=\"l.fc\">\n <option value=\"\">{{filter.help}}</option>\n <option *ngFor=\"let ch of l.choices\" [value]=\"ch.value\">{{ch.desc}}</option>\n </select>\n </div>\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] }); }
|
|
163
163
|
}
|
|
164
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.
|
|
164
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: ModelListTreeFilterComponent, decorators: [{
|
|
165
165
|
type: Component,
|
|
166
166
|
args: [{ selector: 'data-model-list-tree-filter', standalone: true, imports: [CommonModule, ReactiveFormsModule], template: "\n<div class=\"filteritem\" [ngClass]=\"filter.displayClasses || classes\">\n <div class=\"trash float-end\" (click)=\"disable()\"><i class=\"bi bi-trash\"></i></div>\n <label>{{filter.label}}</label>\n <div class=\"levelselect\" *ngFor=\"let l of tree.levels\">\n <select class=\"form-select form-select-sm\" [formControl]=\"l.fc\">\n <option value=\"\">{{filter.help}}</option>\n <option *ngFor=\"let ch of l.choices\" [value]=\"ch.value\">{{ch.desc}}</option>\n </select>\n </div>\n</div>" }]
|
|
167
167
|
}], ctorParameters: function () { return []; }, propDecorators: { list: [{
|
package/esm2022/lib/modellist/model-list-filters/model-list-filters/model-list-filters.component.mjs
CHANGED
|
@@ -20,10 +20,10 @@ export class ModelListFiltersComponent {
|
|
|
20
20
|
this.containerClasses = '';
|
|
21
21
|
this.itemClasses = '';
|
|
22
22
|
}
|
|
23
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.
|
|
24
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.
|
|
23
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: ModelListFiltersComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: ModelListFiltersComponent, isStandalone: true, selector: "data-model-list-filters", inputs: { list: "list", containerClasses: "containerClasses", itemClasses: "itemClasses" }, ngImport: i0, template: "\n<div [ngClass]=\"containerClasses\">\n <ng-container *ngFor=\"let f of list.filters.enabled|async\">\n <ng-container [ngSwitch]=\"f.type\">\n <data-model-list-autocomplete-filter *ngSwitchCase=\"'autocomplete'\" [filter]=\"$any(f)\" [list]=\"list\" [ngClass]=\"itemClasses\"></data-model-list-autocomplete-filter>\n <data-model-list-autocomplete-multi-filter *ngSwitchCase=\"'autocompletemulti'\" [filter]=\"$any(f)\" [list]=\"list\" [ngClass]=\"itemClasses\"></data-model-list-autocomplete-multi-filter>\n <data-model-list-datetime-filter *ngSwitchCase=\"'datetime'\" [filter]=\"$any(f)\" [list]=\"list\" [ngClass]=\"itemClasses\"></data-model-list-datetime-filter>\n <data-model-list-date-filter *ngSwitchCase=\"'date'\" [filter]=\"$any(f)\" [list]=\"list\" [ngClass]=\"itemClasses\"></data-model-list-date-filter>\n <data-model-list-datetime-range-filter *ngSwitchCase=\"'datetimerange'\" [filter]=\"$any(f)\" [list]=\"list\" [ngClass]=\"itemClasses\"></data-model-list-datetime-range-filter>\n <data-model-list-flags-filter *ngSwitchCase=\"'flags'\" [filter]=\"$any(f)\" [list]=\"list\" [ngClass]=\"itemClasses\"></data-model-list-flags-filter>\n <data-model-list-geodistance-filter *ngSwitchCase=\"'geodistance'\" [filter]=\"$any(f)\" [list]=\"list\" [ngClass]=\"itemClasses\"></data-model-list-geodistance-filter>\n <data-model-list-number-filter *ngSwitchCase=\"'number'\" [filter]=\"$any(f)\" [list]=\"list\" [ngClass]=\"itemClasses\"></data-model-list-number-filter>\n <data-model-list-select-filter *ngSwitchCase=\"'select'\" [filter]=\"$any(f)\" [list]=\"list\" [ngClass]=\"itemClasses\"></data-model-list-select-filter>\n <data-model-list-select-multi-filter *ngSwitchCase=\"'selectmulti'\" [filter]=\"$any(f)\" [list]=\"list\" [ngClass]=\"itemClasses\"></data-model-list-select-multi-filter>\n <data-model-list-text-filter *ngSwitchCase=\"'text'\" [filter]=\"$any(f)\" [list]=\"list\" [ngClass]=\"itemClasses\"></data-model-list-text-filter>\n <data-model-list-tree-filter *ngSwitchCase=\"'tree'\" [filter]=\"$any(f)\" [list]=\"list\" [ngClass]=\"itemClasses\"></data-model-list-tree-filter>\n </ng-container>\n </ng-container>\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "component", type: ModelListTextFilterComponent, selector: "data-model-list-text-filter", inputs: ["list", "filter", "classes"] }, { kind: "component", type: ModelListNumberFilterComponent, selector: "data-model-list-number-filter", inputs: ["list", "filter", "classes"] }, { kind: "component", type: ModelListAutocompleteFilterComponent, selector: "data-model-list-autocomplete-filter", inputs: ["list", "filter", "classes"] }, { kind: "component", type: ModelListAutocompleteMultiFilterComponent, selector: "data-model-list-autocomplete-multi-filter", inputs: ["filter"] }, { kind: "component", type: ModelListDatetimeFilterComponent, selector: "data-model-list-datetime-filter", inputs: ["list", "filter", "classes"] }, { kind: "component", type: ModelListDateFilterComponent, selector: "data-model-list-date-filter", inputs: ["list", "filter", "classes"] }, { kind: "component", type: ModelListDatetimeRangeFilterComponent, selector: "data-model-list-datetime-range-filter", inputs: ["list", "filter", "classes"] }, { kind: "component", type: ModelListFlagsFilterComponent, selector: "data-model-list-flags-filter", inputs: ["list", "filter", "classes"] }, { kind: "component", type: ModelListGeodistanceFilterComponent, selector: "data-model-list-geodistance-filter", inputs: ["list", "filter", "classes"] }, { kind: "component", type: ModelListSelectFilterComponent, selector: "data-model-list-select-filter", inputs: ["list", "filter", "classes"] }, { kind: "component", type: ModelListSelectMultiFilterComponent, selector: "data-model-list-select-multi-filter", inputs: ["list", "filter", "classes"] }, { kind: "component", type: ModelListTreeFilterComponent, selector: "data-model-list-tree-filter", inputs: ["list", "filter", "classes"] }] }); }
|
|
25
25
|
}
|
|
26
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.
|
|
26
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: ModelListFiltersComponent, decorators: [{
|
|
27
27
|
type: Component,
|
|
28
28
|
args: [{ selector: 'data-model-list-filters', standalone: true, imports: [
|
|
29
29
|
CommonModule,
|
|
@@ -12,10 +12,10 @@ export class ModelListFiltersSelectComponent {
|
|
|
12
12
|
f.enabled = !f.enabled;
|
|
13
13
|
this.list.filters.update();
|
|
14
14
|
}
|
|
15
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.
|
|
16
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.
|
|
15
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: ModelListFiltersSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
16
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: ModelListFiltersSelectComponent, isStandalone: true, selector: "data-model-list-filters-select", inputs: { list: "list", containerClasses: "containerClasses", itemActiveClasses: "itemActiveClasses", itemInactiveClasses: "itemInactiveClasses" }, ngImport: i0, template: "<span *ngFor=\"let f of list.filters.available|async\" (click)=\"toggle(f)\" [ngClass]=\"containerClasses\"><span *ngIf=\"f.enabled\" role=\"button\" [ngClass]=\"itemActiveClasses\" [title]=\"f.desc\"><i class=\"bi bi-check2-square me-2\"></i><span>{{f.label}}</span></span><span *ngIf=\"!f.enabled\" role=\"button\" [ngClass]=\"itemInactiveClasses\" [title]=\"f.desc\"><i class=\"bi bi-square me-2\"></i><span>{{f.label}}</span></span></span>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }] }); }
|
|
17
17
|
}
|
|
18
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.
|
|
18
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: ModelListFiltersSelectComponent, decorators: [{
|
|
19
19
|
type: Component,
|
|
20
20
|
args: [{ selector: 'data-model-list-filters-select', standalone: true, imports: [CommonModule], template: "<span *ngFor=\"let f of list.filters.available|async\" (click)=\"toggle(f)\" [ngClass]=\"containerClasses\"><span *ngIf=\"f.enabled\" role=\"button\" [ngClass]=\"itemActiveClasses\" [title]=\"f.desc\"><i class=\"bi bi-check2-square me-2\"></i><span>{{f.label}}</span></span><span *ngIf=\"!f.enabled\" role=\"button\" [ngClass]=\"itemInactiveClasses\" [title]=\"f.desc\"><i class=\"bi bi-square me-2\"></i><span>{{f.label}}</span></span></span>" }]
|
|
21
21
|
}], ctorParameters: function () { return []; }, propDecorators: { list: [{
|
|
@@ -54,10 +54,10 @@ export class ModelListPaginatorComponent {
|
|
|
54
54
|
});
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.
|
|
58
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.
|
|
57
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: ModelListPaginatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
58
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: ModelListPaginatorComponent, isStandalone: true, selector: "data-model-list-paginator", inputs: { list: "list", maxPages: "maxPages", hide: "hide" }, usesOnChanges: true, ngImport: i0, template: "\n<div class=\"row\" *ngIf=\"!hide\">\n <div class=\"col-sm-4\">\n <select class=\"form-select perpage\" [formControl]=\"perPageControl\">\n <option value=\"10\" *ngIf=\"maxPages>=10\">10 / page</option>\n <option value=\"20\" *ngIf=\"maxPages>=20\">20 / page</option>\n <option value=\"50\" *ngIf=\"maxPages>=50\">50 / page</option>\n <option value=\"100\" *ngIf=\"maxPages>=100\">100 / page</option>\n <option value=\"200\" *ngIf=\"maxPages>=200\">200 / page</option>\n <option value=\"500\" *ngIf=\"maxPages>=500\">500 / page</option>\n <option value=\"1000\" *ngIf=\"maxPages>=1000\">1000 / page</option>\n <option value=\"2000\" *ngIf=\"maxPages>=2000\">2000 / page</option>\n <option value=\"5000\" *ngIf=\"maxPages>=5000\">5000 / page</option>\n <option value=\"10000\" *ngIf=\"maxPages>=10000\">10000 / page</option>\n </select>\n </div>\n <div class=\"col-sm-5 pagination\" *ngIf=\"list\">\n <div class=\"text-xs-center\">\n <ngb-pagination [pageSize]=\"pageSize\" [collectionSize]=\"curCount\" [page]=\"curPage\" (pageChange)=\"onPageChange($event)\" [maxSize]=\"5\" [rotate]=\"true\"></ngb-pagination>\n </div>\n </div>\n <div class=\"col-sm-3 results\">\n <div>{{curCount}} r\u00E9sultats -<span (click)=\"showDirectAccess=!showDirectAccess\" role=\"button\">acces direct</span></div>\n <div *ngIf=\"showDirectAccess\">\n <input class=\"form-control\" [formControl]=\"directAccess\" type=\"number\" placeholder=\"Aller \u00E0 la page\">\n </div>\n </div>\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: NgbPaginationModule }, { kind: "component", type: i3.NgbPagination, selector: "ngb-pagination", inputs: ["disabled", "boundaryLinks", "directionLinks", "ellipses", "rotate", "collectionSize", "maxSize", "page", "pageSize", "size"], outputs: ["pageChange"] }] }); }
|
|
59
59
|
}
|
|
60
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.
|
|
60
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: ModelListPaginatorComponent, decorators: [{
|
|
61
61
|
type: Component,
|
|
62
62
|
args: [{ selector: 'data-model-list-paginator', standalone: true, imports: [CommonModule, ReactiveFormsModule, NgbPaginationModule], template: "\n<div class=\"row\" *ngIf=\"!hide\">\n <div class=\"col-sm-4\">\n <select class=\"form-select perpage\" [formControl]=\"perPageControl\">\n <option value=\"10\" *ngIf=\"maxPages>=10\">10 / page</option>\n <option value=\"20\" *ngIf=\"maxPages>=20\">20 / page</option>\n <option value=\"50\" *ngIf=\"maxPages>=50\">50 / page</option>\n <option value=\"100\" *ngIf=\"maxPages>=100\">100 / page</option>\n <option value=\"200\" *ngIf=\"maxPages>=200\">200 / page</option>\n <option value=\"500\" *ngIf=\"maxPages>=500\">500 / page</option>\n <option value=\"1000\" *ngIf=\"maxPages>=1000\">1000 / page</option>\n <option value=\"2000\" *ngIf=\"maxPages>=2000\">2000 / page</option>\n <option value=\"5000\" *ngIf=\"maxPages>=5000\">5000 / page</option>\n <option value=\"10000\" *ngIf=\"maxPages>=10000\">10000 / page</option>\n </select>\n </div>\n <div class=\"col-sm-5 pagination\" *ngIf=\"list\">\n <div class=\"text-xs-center\">\n <ngb-pagination [pageSize]=\"pageSize\" [collectionSize]=\"curCount\" [page]=\"curPage\" (pageChange)=\"onPageChange($event)\" [maxSize]=\"5\" [rotate]=\"true\"></ngb-pagination>\n </div>\n </div>\n <div class=\"col-sm-3 results\">\n <div>{{curCount}} r\u00E9sultats -<span (click)=\"showDirectAccess=!showDirectAccess\" role=\"button\">acces direct</span></div>\n <div *ngIf=\"showDirectAccess\">\n <input class=\"form-control\" [formControl]=\"directAccess\" type=\"number\" placeholder=\"Aller \u00E0 la page\">\n </div>\n </div>\n</div>" }]
|
|
63
63
|
}], propDecorators: { list: [{
|
package/esm2022/lib/modellist/model-list-sorter/model-list-sorter/model-list-sorter.component.mjs
CHANGED
|
@@ -35,10 +35,10 @@ export class ModelListSorterComponent {
|
|
|
35
35
|
cancel() {
|
|
36
36
|
this.list.sorter.unset(this.field);
|
|
37
37
|
}
|
|
38
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.
|
|
39
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.
|
|
38
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: ModelListSorterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
39
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: ModelListSorterComponent, isStandalone: true, selector: "data-model-list-sorter", inputs: { list: "list", field: "field" }, ngImport: i0, template: "<span class=\"dirs\"><span *ngIf=\"getOrder()>=0 || getCount()>1\" (click)=\"cancel()\" role=\"button\"><span class=\"count\" *ngIf=\"getCount()>1\"> {{getOrder()}}</span><span class=\"bi bi-x\"></span></span><span class=\"bi bi-sort-down-alt\" (click)=\"setUp()\" [class.active]=\"isUp()\" role=\"button\"></span><span class=\"bi bi-sort-down\" (click)=\"setDown()\" [class.active]=\"isDown()\" role=\"button\"></span> </span>\n<ng-content></ng-content>", styles: [".dirs{color:#d3d3d3}.dirs .count{font-size:.7rem;margin-right:-.1rem;vertical-align:super}.active{color:#000}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
40
40
|
}
|
|
41
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.
|
|
41
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: ModelListSorterComponent, decorators: [{
|
|
42
42
|
type: Component,
|
|
43
43
|
args: [{ selector: 'data-model-list-sorter', standalone: true, imports: [CommonModule], template: "<span class=\"dirs\"><span *ngIf=\"getOrder()>=0 || getCount()>1\" (click)=\"cancel()\" role=\"button\"><span class=\"count\" *ngIf=\"getCount()>1\"> {{getOrder()}}</span><span class=\"bi bi-x\"></span></span><span class=\"bi bi-sort-down-alt\" (click)=\"setUp()\" [class.active]=\"isUp()\" role=\"button\"></span><span class=\"bi bi-sort-down\" (click)=\"setDown()\" [class.active]=\"isDown()\" role=\"button\"></span> </span>\n<ng-content></ng-content>", styles: [".dirs{color:#d3d3d3}.dirs .count{font-size:.7rem;margin-right:-.1rem;vertical-align:super}.active{color:#000}\n"] }]
|
|
44
44
|
}], ctorParameters: function () { return []; }, propDecorators: { list: [{
|
|
@@ -12,8 +12,15 @@ export class ModelList {
|
|
|
12
12
|
constructor(name) {
|
|
13
13
|
this.messages$ = new ReplaySubject(1);
|
|
14
14
|
this.started = false;
|
|
15
|
+
this._count = null;
|
|
15
16
|
this.name = name;
|
|
16
17
|
}
|
|
18
|
+
/**
|
|
19
|
+
* Get current results count (from last meta received).
|
|
20
|
+
*/
|
|
21
|
+
get count() {
|
|
22
|
+
return this._count;
|
|
23
|
+
}
|
|
17
24
|
get results() {
|
|
18
25
|
if (!this._results) {
|
|
19
26
|
this._results = this.queryset.results.pipe(
|
|
@@ -26,7 +33,7 @@ export class ModelList {
|
|
|
26
33
|
if (!this._meta) {
|
|
27
34
|
this._meta = this.queryset.meta.pipe(
|
|
28
35
|
// tap(() => console.log('@solidev/data: modellist meta')),
|
|
29
|
-
share(), takeUntil(this.unsubscribe || NEVER));
|
|
36
|
+
tap((m) => (this._count = m.nav.count)), share(), takeUntil(this.unsubscribe || NEVER));
|
|
30
37
|
}
|
|
31
38
|
return this._meta;
|
|
32
39
|
}
|
|
@@ -79,7 +86,7 @@ export class ModelList {
|
|
|
79
86
|
return this.queryset.get(true, dbSync);
|
|
80
87
|
}), takeUntil(this.unsubscribe || NEVER))
|
|
81
88
|
.subscribe({
|
|
82
|
-
next: (
|
|
89
|
+
next: () => {
|
|
83
90
|
// console.log('@solidev/data: modellist:get results', this.name);
|
|
84
91
|
},
|
|
85
92
|
error: (error) => {
|
|
@@ -142,10 +149,10 @@ export class ModelListService {
|
|
|
142
149
|
}
|
|
143
150
|
return ml;
|
|
144
151
|
}
|
|
145
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.
|
|
146
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.
|
|
152
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: ModelListService, deps: [{ token: DATA_AUTH_SERVICE }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
153
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: ModelListService, providedIn: 'root' }); }
|
|
147
154
|
}
|
|
148
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.
|
|
155
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: ModelListService, decorators: [{
|
|
149
156
|
type: Injectable,
|
|
150
157
|
args: [{
|
|
151
158
|
providedIn: 'root',
|
|
@@ -154,4 +161,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImpor
|
|
|
154
161
|
type: Inject,
|
|
155
162
|
args: [DATA_AUTH_SERVICE]
|
|
156
163
|
}] }]; } });
|
|
157
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtbGlzdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS9zcmMvbGliL21vZGVsbGlzdC9tb2RlbC1saXN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUNMLGFBQWEsRUFDYixLQUFLLEVBRUwsRUFBRSxFQUNGLGFBQWEsRUFDYixLQUFLLEVBQ0wsT0FBTyxFQUNQLFNBQVMsR0FDVixNQUFNLE1BQU0sQ0FBQztBQVFkLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNqRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFLM0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7OztBQXlEckUsTUFBTSxPQUFPLFNBQVM7SUFZcEIsWUFBWSxJQUFZO1FBSGpCLGNBQVMsR0FBRyxJQUFJLGFBQWEsQ0FBb0IsQ0FBQyxDQUFDLENBQUM7UUFDcEQsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUdyQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNuQixDQUFDO0lBSUQsSUFBVyxPQUFPO1FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSTtZQUN4Qyw2REFBNkQ7WUFDN0QsS0FBSyxFQUFF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ZixJQUFJLFFBQVEsQ0FBQyxNQUFNLEVBQUU7Z0JBQ25CLEVBQUUsQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQzthQUM3QjtpQkFBTTtnQkFDTCxFQUFFLENBQUMsTUFBTSxHQUFHLElBQUksT0FBTyxFQUFrQixDQUFDO2FBQzNDO1lBQ0QsSUFBSSxRQUFRLENBQUMsV0FBVyxFQUFFO2dCQUN4QixFQUFFLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUM7YUFDdkM7aUJBQU07Z0JBQ0wsRUFBRSxDQUFDLFdBQVcsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO2FBQ3RDO1lBQ0QsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNwQjtRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQzs4R0FyRFUsZ0JBQWdCLGtCQUlqQixpQkFBaUI7a0hBSmhCLGdCQUFnQixjQUZmLE1BQU07OzJGQUVQLGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQUtJLE1BQU07MkJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBjb21iaW5lTGF0ZXN0LFxuICBORVZFUixcbiAgT2JzZXJ2YWJsZSxcbiAgb2YsXG4gIFJlcGxheVN1YmplY3QsXG4gIHNoYXJlLFxuICBTdWJqZWN0LFxuICB0YWtlVW50aWwsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGF0YU1vZGVsIH0gZnJvbSAnLi4vZGF0YS9kYXRhLW1vZGVsJztcbmltcG9ydCB7XG4gIElRdWVyeU1ldGEsXG4gIElRdWVyeU1ldGFOYXZQYXJhbXMsXG4gIElRdWVyeU5hdixcbiAgUXVlcnlzZXQsXG59IGZyb20gJy4uL2RhdGEvZGF0YS1xdWVyeSc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAsIHRhcCwgdGhyb3R0bGVUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTW9kZWxMaXN0RmllbGRzIH0gZnJvbSAnLi9tb2RlbC1saXN0LWZpZWxkcy9tb2RlbC1saXN0LWZpZWxkcyc7XG5pbXBvcnQgeyBNb2RlbExpc3RQYWdpbmF0b3IgfSBmcm9tICcuL21vZGVsLWxpc3QtcGFnaW5hdG9yL21vZGVsLWxpc3QtcGFnaW5hdG9yJztcbmltcG9ydCB7IE1vZGVsTGlzdFNvcnRlciB9IGZyb20gJy4vbW9kZWwtbGlzdC1zb3J0ZXIvbW9kZWwtbGlzdC1zb3J0ZXInO1xuaW1wb3J0IHsgTW9kZWxMaXN0RmlsdGVycyB9IGZyb20gJy4vbW9kZWwtbGlzdC1maWx0ZXJzL21vZGVsLWxpc3QtZmlsdGVycyc7XG5pbXBvcnQgeyBDb2xsZWN0aW9uIH0gZnJvbSAnLi4vZGF0YS9kYXRhLWNvbGxlY3Rpb24nO1xuaW1wb3J0IHsgTW9kZWxMaXN0RmlsdGVyIH0gZnJvbSAnLi9tb2RlbC1saXN0LWZpbHRlcnMvbW9kZWwtbGlzdC1maWx0ZXInO1xuaW1wb3J0IHsgSUZpZWxkSGVhZGVyTWVzc2FnZSB9IGZyb20gJy4vbW9kZWwtbGlzdC1maWVsZHMvbW9kZWwtbGlzdC1maWVsZC1oZWFkZXIvbWVzc2FnZXMnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2VCYXNlIH0gZnJvbSAnLi4vYXV0aC9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgREFUQV9BVVRIX1NFUlZJQ0UgfSBmcm9tICcuLi9hdXRoL2F1dGgtaW50ZXJjZXB0b3Iuc2VydmljZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9tRmllbGQge1xuICBuYW1lOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHByaW9yaXR5PzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlckRlZmF1bHRzIHtcbiAgW2luZGV4OiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCB0eXBlIFNvcnRlckRlZmF1bHRzID0gc3RyaW5nW107XG5cbi8qKlxuICogRmllbGRzIHBhcmFtZXRlcnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmllbGRzUGFyYW1zIHtcbiAgLyoqIEFsbG93ZWQgZmllbGRzLCBhbGwgbW9kZWwgZmllbGRzIGFyZSBhbGxvd2VkIGlmIGVtcHR5ICovXG4gIGFsbG93ZWQ/OiBzdHJpbmdbXTtcbiAgLyoqIERlZmF1bHQgZW5hYmxlZCBmaWVsZHMgKi9cbiAgZGVmYXVsdHM/OiBzdHJpbmdbXTtcbiAgLyoqIEV4Y2x1ZGVkIGZpZWxkcyAqL1xuICBleGNsdWRlZD86IHN0cmluZ1tdO1xuICAvKiogQ3VzdG9tIGZpZWxkcyAqL1xuICBjdXN0b20/OiBDdXN0b21GaWVsZFtdO1xufVxuXG4vKipcbiAqIEZpbHRlcnMgcGFyYW1ldGVycy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJzUGFyYW1zIHtcbiAgLyoqIEFsbG93ZWQgZmlsdGVyIG5hbWVzICovXG4gIGFsbG93ZWQ/OiBzdHJpbmdbXTtcbiAgLyoqIERlZmF1bHQgYWN0aXZlIGZpbHRlciBuYW1lcyAqL1xuICBkZWZhdWx0cz86IHN0cmluZ1tdO1xuICAvKiogRXhjbHVkZWQgZmlsdGVyIG5hbWVzICovXG4gIGV4Y2x1ZGVkPzogc3RyaW5nW107XG4gIC8qKiBGaWx0ZXJzIGRlZmluaXRpb25zICovXG4gIGZpbHRlcnM/OiBNb2RlbExpc3RGaWx0ZXJbXTtcbn1cblxuZXhwb3J0IHR5cGUgUGFnaW5hdGlvblBhcmFtcyA9IElRdWVyeU1ldGFOYXZQYXJhbXM7XG5cbmV4cG9ydCB0eXBlIElNb2RlbExpc3RNZXNzYWdlID0gSUZpZWxkSGVhZGVyTWVzc2FnZTtcblxuZXhwb3J0IGludGVyZmFjZSBNb2RlbExpc3RQYXJhbXMge1xuICBmaWVsZHM/OiBGaWVsZHNQYXJhbXM7XG4gIGZpbHRlcnM/OiBGaWx0ZXJzUGFyYW1zO1xuICBmaWx0ZXI/OiBGaWx0ZXJEZWZhdWx0cyB8IE9ic2VydmFibGU8RmlsdGVyRGVmYXVsdHM+O1xuICBzb3J0ZXI/OiBTb3J0ZXJEZWZhdWx0cztcbiAgcGFnaW5hdG9yPzogSVF1ZXJ5TmF2O1xuICBrZWVwPzogYm9vbGVhbjtcbiAgcmVsb2FkPzogU3ViamVjdDx2b2lkIHwgYm9vbGVhbj47XG4gIHVuc3Vic2NyaWJlPzogU3ViamVjdDx2b2lkPjtcbn1cblxuZXhwb3J0IGNsYXNzIE1vZGVsTGlzdDxUIGV4dGVuZHMgRGF0YU1vZGVsPiB7XG4gIHB1YmxpYyBuYW1lITogc3RyaW5nO1xuICBwdWJsaWMgZmlsdGVycyE6IE1vZGVsTGlzdEZpbHRlcnM7XG4gIHB1YmxpYyBzb3J0ZXIhOiBNb2RlbExpc3RTb3J0ZXI7XG4gIHB1YmxpYyBwYWdpbmF0b3IhOiBNb2RlbExpc3RQYWdpbmF0b3I7XG4gIHB1YmxpYyBxdWVyeXNldCE6IFF1ZXJ5c2V0PFQ+O1xuICBwdWJsaWMgZmllbGRzITogTW9kZWxMaXN0RmllbGRzPFQ+O1xuICBwdWJsaWMgcmVsb2FkITogU3ViamVjdDx2b2lkIHwgYm9vbGVhbj47XG4gIHB1YmxpYyB1bnN1YnNjcmliZSE6IFN1YmplY3Q8dm9pZD47XG4gIHB1YmxpYyBtZXNzYWdlcyQgPSBuZXcgUmVwbGF5U3ViamVjdDxJTW9kZWxMaXN0TWVzc2FnZT4oMSk7XG4gIHB1YmxpYyBzdGFydGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgfVxuXG4gIHByaXZhdGUgX3Jlc3VsdHM/OiBPYnNlcnZhYmxlPFRbXT47XG5cbiAgcHVibGljIGdldCByZXN1bHRzKCk6IE9ic2VydmFibGU8VFtdPiB7XG4gICAgaWYgKCF0aGlzLl9yZXN1bHRzKSB7XG4gICAgICB0aGlzLl9yZXN1bHRzID0gdGhpcy5xdWVyeXNldC5yZXN1bHRzLnBpcGUoXG4gICAgICAgIC8vIHRhcCgoKSA9PiBjb25zb2xlLmxvZygnQHNvbGlkZXYvZGF0YTogbW9kZWxsaXN0IHJlc3VsdCcpKSxcbiAgICAgICAgc2hhcmUoKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUgfHwgTkVWRVIpXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fcmVzdWx0cztcbiAgfVxuXG4gIHByaXZhdGUgX21ldGE/OiBPYnNlcnZhYmxlPElRdWVyeU1ldGE+O1xuXG4gIHB1YmxpYyBnZXQgbWV0YSgpOiBPYnNlcnZhYmxlPElRdWVyeU1ldGE+IHtcbiAgICBpZiAoIXRoaXMuX21ldGEpIHtcbiAgICAgIHRoaXMuX21ldGEgPSB0aGlzLnF1ZXJ5c2V0Lm1ldGEucGlwZShcbiAgICAgICAgLy8gdGFwKCgpID0+IGNvbnNvbGUubG9nKCdAc29saWRldi9kYXRhOiBtb2RlbGxpc3QgbWV0YScpKSxcbiAgICAgICAgc2hhcmUoKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUgfHwgTkVWRVIpXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fbWV0YTtcbiAgfVxuXG4gIHByaXZhdGUgX2xvYWRpbmc/OiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG4gIHB1YmxpYyBnZXQgbG9hZGluZygpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICBpZiAoIXRoaXMuX2xvYWRpbmcpIHtcbiAgICAgIHRoaXMuX2xvYWRpbmcgPSB0aGlzLnF1ZXJ5c2V0LmxvYWRpbmcucGlwZShcbiAgICAgICAgLy8gdGFwKCgpID0+IGNvbnNvbGUubG9nKCdAc29saWRldi9kYXRhOiBtb2RlbGxpc3QgbG9hZGluZycpKSxcbiAgICAgICAgc2hhcmUoKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUgfHwgTkVWRVIpXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fbG9hZGluZztcbiAgfVxuXG4gIHByaXZhdGUgX2Z1bGw/OiBPYnNlcnZhYmxlPFtUW10sIGJvb2xlYW4sIElRdWVyeU1ldGFdPjtcblxuICBwdWJsaWMgZ2V0IGZ1bGwoKTogT2JzZXJ2YWJsZTxbVFtdLCBib29sZWFuLCBJUXVlcnlNZXRhXT4ge1xuICAgIGlmICghdGhpcy5fZnVsbCkge1xuICAgICAgdGhpcy5fZnVsbCA9IHRoaXMucXVlcnlzZXQuZnVsbC5waXBlKFxuICAgICAgICAvLyB0YXAoKCkgPT4gY29uc29sZS5sb2coJ0Bzb2xpZGV2L2RhdGE6IG1vZGVsbGlzdCBmdWxsJykpLFxuICAgICAgICBzaGFyZSgpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSB8fCBORVZFUilcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9mdWxsO1xuICB9XG5cbiAgcHVibGljIHN0YXJ0KHBhcmFtczogTW9kZWxMaXN0UGFyYW1zKSB7XG4gICAgbGV0IGZpbHRlciQ6IE9ic2VydmFibGU8RmlsdGVyRGVmYXVsdHM+O1xuICAgIGxldCByZWxvYWRGaXJlZCA9IGZhbHNlO1xuICAgIGlmIChwYXJhbXMuZmlsdGVyICYmICFwYXJhbXMuZmlsdGVyLnN1YnNjcmliZSkge1xuICAgICAgZmlsdGVyJCA9IG9mKHBhcmFtcy5maWx0ZXIgYXMgRmlsdGVyRGVmYXVsdHMpO1xuICAgIH0gZWxzZSBpZiAocGFyYW1zLmZpbHRlciAmJiBwYXJhbXMuZmlsdGVyLnN1YnNjcmliZSkge1xuICAgICAgZmlsdGVyJCA9IHBhcmFtcy5maWx0ZXIgYXMgT2JzZXJ2YWJsZTxGaWx0ZXJEZWZhdWx0cz47XG4gICAgfSBlbHNlIHtcbiAgICAgIGZpbHRlciQgPSBvZih7fSk7XG4gICAgfVxuICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5yZWxvYWQucGlwZSh0YXAoKHYpID0+IChyZWxvYWRGaXJlZCA9ICEhdikpKSxcbiAgICAgIHRoaXMuZmlsdGVycy5vdXRwdXQsXG4gICAgICBmaWx0ZXIkLFxuICAgICAgdGhpcy5wYWdpbmF0b3Iub3V0cHV0LFxuICAgICAgdGhpcy5zb3J0ZXIub3V0cHV0LFxuICAgICAgdGhpcy5maWVsZHMub3V0cHV0LFxuICAgIF0pXG4gICAgICAucGlwZShcbiAgICAgICAgdGhyb3R0bGVUaW1lKDIwMCksXG4gICAgICAgIHN3aXRjaE1hcChcbiAgICAgICAgICAoW3JlbG9hZCwgZmlsdGVyLCBtYW51YWxGaWx0ZXIsIHBhZ2luYXRvciwgc29ydGVyLCBmaWVsZHNdKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnF1ZXJ5c2V0XG4gICAgICAgICAgICAgIC5maWx0ZXIoZmlsdGVyKVxuICAgICAgICAgICAgICAuZmlsdGVyKG1hbnVhbEZpbHRlciB8fCB7fSwgdHJ1ZSlcbiAgICAgICAgICAgICAgLnBhZ2luYXRlQnkocGFnaW5hdG9yLnBhZ2Vfc2l6ZSlcbiAgICAgICAgICAgICAgLnNldFBhZ2UocGFnaW5hdG9yLnBhZ2UpXG4gICAgICAgICAgICAgIC5zb3J0KC4uLnNvcnRlcilcbiAgICAgICAgICAgICAgLnNldEZpZWxkcyhmaWVsZHMpO1xuICAgICAgICAgICAgY29uc3QgZGJTeW5jID0gcmVsb2FkRmlyZWQ7XG4gICAgICAgICAgICByZWxvYWRGaXJlZCA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucXVlcnlzZXQuZ2V0KHRydWUsIGRiU3luYyk7XG4gICAgICAgICAgfVxuICAgICAgICApLFxuICAgICAgICB0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSB8fCBORVZFUilcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAocmVzdWx0czogYW55KTogdm9pZCA9PiB7XG4gICAgICAgICAgLy8gY29uc29sZS5sb2coJ0Bzb2xpZGV2L2RhdGE6IG1vZGVsbGlzdDpnZXQgcmVzdWx0cycsIHRoaXMubmFtZSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgJ0Bzb2xpZGV2L2RhdGE6IGVycm9yIHdoaWxlIGdldHRpbmcgbW9kZWwgbGlzdCByZXN1bHRzIDogJyxcbiAgICAgICAgICAgIGVycm9yXG4gICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHtcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZygnQHNvbGlkZXYvZGF0YTogbW9kZWxsaXN0OmNvbXBsZXRlZCcsIHRoaXMubmFtZSk7XG4gICAgICAgICAgdGhpcy5zdGFydGVkID0gZmFsc2U7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB0aGlzLnJlbG9hZC5uZXh0KCk7XG4gICAgdGhpcy5zdGFydGVkID0gdHJ1ZTtcbiAgfVxufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTW9kZWxMaXN0U2VydmljZSB7XG4gIHByaXZhdGUgX2luc3RhbmNlczogTWFwPHN0cmluZywgTW9kZWxMaXN0PGFueT4+ID0gbmV3IE1hcCgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoREFUQV9BVVRIX1NFUlZJQ0UpIHByaXZhdGUgX2F1dGg6IEF1dGhTZXJ2aWNlQmFzZTxhbnksIGFueSwgYW55PlxuICApIHtcbiAgICB0aGlzLl9hdXRoLmxvZ291dCQuc3Vic2NyaWJlKCgpID0+IHRoaXMucmVzZXQoKSk7XG4gIH1cblxuICBwdWJsaWMgcmVzZXQoKSB7XG4gICAgZm9yIChjb25zdCBpIG9mIHRoaXMuX2luc3RhbmNlcy52YWx1ZXMoKSkge1xuICAgICAgaWYgKGkudW5zdWJzY3JpYmUpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ0NsZWFyaW5nICcsIGkpO1xuICAgICAgICBpLnVuc3Vic2NyaWJlLm5leHQoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5faW5zdGFuY2VzLmNsZWFyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0PFQgZXh0ZW5kcyBEYXRhTW9kZWw+KFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uPFQ+LFxuICAgIGRlZmF1bHRzOiBNb2RlbExpc3RQYXJhbXNcbiAgKSB7XG4gICAgbGV0IG1sOiBNb2RlbExpc3Q8VD47XG5cbiAgICBpZiAoIW5hbWUgfHwgIXRoaXMuX2luc3RhbmNlcy5oYXMobmFtZSkgfHwgIWRlZmF1bHRzLmtlZXApIHtcbiAgICAgIG1sID0gbmV3IE1vZGVsTGlzdDxUPihuYW1lKTtcbiAgICAgIG1sLnF1ZXJ5c2V0ID0gY29sbGVjdGlvbi5xdWVyeXNldCgpO1xuICAgICAgbWwuZmllbGRzID0gbmV3IE1vZGVsTGlzdEZpZWxkcyhjb2xsZWN0aW9uLCBkZWZhdWx0cy5maWVsZHMpO1xuICAgICAgbWwuc29ydGVyID0gbmV3IE1vZGVsTGlzdFNvcnRlcihkZWZhdWx0cy5zb3J0ZXIgfHwgW10pO1xuICAgICAgbWwucGFnaW5hdG9yID0gbmV3IE1vZGVsTGlzdFBhZ2luYXRvcihkZWZhdWx0cy5wYWdpbmF0b3IpO1xuICAgICAgbWwuZmlsdGVycyA9IG5ldyBNb2RlbExpc3RGaWx0ZXJzKGRlZmF1bHRzLmZpbHRlcnMpO1xuICAgICAgaWYgKGRlZmF1bHRzLmtlZXApIHtcbiAgICAgICAgdGhpcy5faW5zdGFuY2VzLnNldChuYW1lLCBtbCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG1sID0gdGhpcy5faW5zdGFuY2VzLmdldChuYW1lKSE7XG4gICAgfVxuICAgIGlmICghbWwuc3RhcnRlZCkge1xuICAgICAgaWYgKGRlZmF1bHRzLnJlbG9hZCkge1xuICAgICAgICBtbC5yZWxvYWQgPSBkZWZhdWx0cy5yZWxvYWQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtbC5yZWxvYWQgPSBuZXcgU3ViamVjdDx2b2lkIHwgYm9vbGVhbj4oKTtcbiAgICAgIH1cbiAgICAgIGlmIChkZWZhdWx0cy51bnN1YnNjcmliZSkge1xuICAgICAgICBtbC51bnN1YnNjcmliZSA9IGRlZmF1bHRzLnVuc3Vic2NyaWJlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWwudW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgICAgfVxuICAgICAgbWwuc3RhcnQoZGVmYXVsdHMpO1xuICAgIH1cbiAgICByZXR1cm4gbWw7XG4gIH1cbn1cbiJdfQ==
|
|
164
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtbGlzdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS9zcmMvbGliL21vZGVsbGlzdC9tb2RlbC1saXN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUNMLGFBQWEsRUFDYixLQUFLLEVBRUwsRUFBRSxFQUNGLGFBQWEsRUFDYixLQUFLLEVBQ0wsT0FBTyxFQUNQLFNBQVMsR0FDVixNQUFNLE1BQU0sQ0FBQztBQVFkLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNqRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFLM0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7OztBQXlEckUsTUFBTSxPQUFPLFNBQVM7SUFZcEIsWUFBWSxJQUFZO1FBSGpCLGNBQVMsR0FBRyxJQUFJLGFBQWEsQ0FBb0IsQ0FBQyxDQUFDLENBQUM7UUFDcEQsWUFBTyxHQUFHLEtBQUssQ0FBQztRQU1mLFdBQU0sR0FBa0IsSUFBSSxDQUFDO1FBSG5DLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFJRDs7T0FFRztJQUNILElBQVcsS0FBSztRQUNkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBSUQsSUFBVyxPQUFPO1FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxF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O2dCQUNqQixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7YUFDL0I7U0FDRjthQUFNO1lBQ0wsRUFBRSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBRSxDQUFDO1NBQ2pDO1FBQ0QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUU7WUFDZixJQUFJLFFBQVEsQ0FBQyxNQUFNLEVBQUU7Z0JBQ25CLEVBQUUsQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQzthQUM3QjtpQkFBTTtnQkFDTCxFQUFFLENBQUMsTUFBTSxHQUFHLElBQUksT0FBTyxFQUFrQixDQUFDO2FBQzNDO1lBQ0QsSUFBSSxRQUFRLENBQUMsV0FBVyxFQUFFO2dCQUN4QixFQUFFLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUM7YUFDdkM7aUJBQU07Z0JBQ0wsRUFBRSxDQUFDLFdBQVcsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO2FBQ3RDO1lBQ0QsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNwQjtRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQzs4R0FyRFUsZ0JBQWdCLGtCQUlqQixpQkFBaUI7a0hBSmhCLGdCQUFnQixjQUZmLE1BQU07OzJGQUVQLGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQUtJLE1BQU07MkJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBjb21iaW5lTGF0ZXN0LFxuICBORVZFUixcbiAgT2JzZXJ2YWJsZSxcbiAgb2YsXG4gIFJlcGxheVN1YmplY3QsXG4gIHNoYXJlLFxuICBTdWJqZWN0LFxuICB0YWtlVW50aWwsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGF0YU1vZGVsIH0gZnJvbSAnLi4vZGF0YS9kYXRhLW1vZGVsJztcbmltcG9ydCB7XG4gIElRdWVyeU1ldGEsXG4gIElRdWVyeU1ldGFOYXZQYXJhbXMsXG4gIElRdWVyeU5hdixcbiAgUXVlcnlzZXQsXG59IGZyb20gJy4uL2RhdGEvZGF0YS1xdWVyeSc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAsIHRhcCwgdGhyb3R0bGVUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTW9kZWxMaXN0RmllbGRzIH0gZnJvbSAnLi9tb2RlbC1saXN0LWZpZWxkcy9tb2RlbC1saXN0LWZpZWxkcyc7XG5pbXBvcnQgeyBNb2RlbExpc3RQYWdpbmF0b3IgfSBmcm9tICcuL21vZGVsLWxpc3QtcGFnaW5hdG9yL21vZGVsLWxpc3QtcGFnaW5hdG9yJztcbmltcG9ydCB7IE1vZGVsTGlzdFNvcnRlciB9IGZyb20gJy4vbW9kZWwtbGlzdC1zb3J0ZXIvbW9kZWwtbGlzdC1zb3J0ZXInO1xuaW1wb3J0IHsgTW9kZWxMaXN0RmlsdGVycyB9IGZyb20gJy4vbW9kZWwtbGlzdC1maWx0ZXJzL21vZGVsLWxpc3QtZmlsdGVycyc7XG5pbXBvcnQgeyBDb2xsZWN0aW9uIH0gZnJvbSAnLi4vZGF0YS9kYXRhLWNvbGxlY3Rpb24nO1xuaW1wb3J0IHsgTW9kZWxMaXN0RmlsdGVyIH0gZnJvbSAnLi9tb2RlbC1saXN0LWZpbHRlcnMvbW9kZWwtbGlzdC1maWx0ZXInO1xuaW1wb3J0IHsgSUZpZWxkSGVhZGVyTWVzc2FnZSB9IGZyb20gJy4vbW9kZWwtbGlzdC1maWVsZHMvbW9kZWwtbGlzdC1maWVsZC1oZWFkZXIvbWVzc2FnZXMnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2VCYXNlIH0gZnJvbSAnLi4vYXV0aC9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgREFUQV9BVVRIX1NFUlZJQ0UgfSBmcm9tICcuLi9hdXRoL2F1dGgtaW50ZXJjZXB0b3Iuc2VydmljZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9tRmllbGQge1xuICBuYW1lOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHByaW9yaXR5PzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlckRlZmF1bHRzIHtcbiAgW2luZGV4OiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCB0eXBlIFNvcnRlckRlZmF1bHRzID0gc3RyaW5nW107XG5cbi8qKlxuICogRmllbGRzIHBhcmFtZXRlcnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmllbGRzUGFyYW1zIHtcbiAgLyoqIEFsbG93ZWQgZmllbGRzLCBhbGwgbW9kZWwgZmllbGRzIGFyZSBhbGxvd2VkIGlmIGVtcHR5ICovXG4gIGFsbG93ZWQ/OiBzdHJpbmdbXTtcbiAgLyoqIERlZmF1bHQgZW5hYmxlZCBmaWVsZHMgKi9cbiAgZGVmYXVsdHM/OiBzdHJpbmdbXTtcbiAgLyoqIEV4Y2x1ZGVkIGZpZWxkcyAqL1xuICBleGNsdWRlZD86IHN0cmluZ1tdO1xuICAvKiogQ3VzdG9tIGZpZWxkcyAqL1xuICBjdXN0b20/OiBDdXN0b21GaWVsZFtdO1xufVxuXG4vKipcbiAqIEZpbHRlcnMgcGFyYW1ldGVycy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJzUGFyYW1zIHtcbiAgLyoqIEFsbG93ZWQgZmlsdGVyIG5hbWVzICovXG4gIGFsbG93ZWQ/OiBzdHJpbmdbXTtcbiAgLyoqIERlZmF1bHQgYWN0aXZlIGZpbHRlciBuYW1lcyAqL1xuICBkZWZhdWx0cz86IHN0cmluZ1tdO1xuICAvKiogRXhjbHVkZWQgZmlsdGVyIG5hbWVzICovXG4gIGV4Y2x1ZGVkPzogc3RyaW5nW107XG4gIC8qKiBGaWx0ZXJzIGRlZmluaXRpb25zICovXG4gIGZpbHRlcnM/OiBNb2RlbExpc3RGaWx0ZXJbXTtcbn1cblxuZXhwb3J0IHR5cGUgUGFnaW5hdGlvblBhcmFtcyA9IElRdWVyeU1ldGFOYXZQYXJhbXM7XG5cbmV4cG9ydCB0eXBlIElNb2RlbExpc3RNZXNzYWdlID0gSUZpZWxkSGVhZGVyTWVzc2FnZTtcblxuZXhwb3J0IGludGVyZmFjZSBNb2RlbExpc3RQYXJhbXMge1xuICBmaWVsZHM/OiBGaWVsZHNQYXJhbXM7XG4gIGZpbHRlcnM/OiBGaWx0ZXJzUGFyYW1zO1xuICBmaWx0ZXI/OiBGaWx0ZXJEZWZhdWx0cyB8IE9ic2VydmFibGU8RmlsdGVyRGVmYXVsdHM+O1xuICBzb3J0ZXI/OiBTb3J0ZXJEZWZhdWx0cztcbiAgcGFnaW5hdG9yPzogSVF1ZXJ5TmF2O1xuICBrZWVwPzogYm9vbGVhbjtcbiAgcmVsb2FkPzogU3ViamVjdDx2b2lkIHwgYm9vbGVhbj47XG4gIHVuc3Vic2NyaWJlPzogU3ViamVjdDx2b2lkPjtcbn1cblxuZXhwb3J0IGNsYXNzIE1vZGVsTGlzdDxUIGV4dGVuZHMgRGF0YU1vZGVsPiB7XG4gIHB1YmxpYyBuYW1lITogc3RyaW5nO1xuICBwdWJsaWMgZmlsdGVycyE6IE1vZGVsTGlzdEZpbHRlcnM7XG4gIHB1YmxpYyBzb3J0ZXIhOiBNb2RlbExpc3RTb3J0ZXI7XG4gIHB1YmxpYyBwYWdpbmF0b3IhOiBNb2RlbExpc3RQYWdpbmF0b3I7XG4gIHB1YmxpYyBxdWVyeXNldCE6IFF1ZXJ5c2V0PFQ+O1xuICBwdWJsaWMgZmllbGRzITogTW9kZWxMaXN0RmllbGRzPFQ+O1xuICBwdWJsaWMgcmVsb2FkITogU3ViamVjdDx2b2lkIHwgYm9vbGVhbj47XG4gIHB1YmxpYyB1bnN1YnNjcmliZSE6IFN1YmplY3Q8dm9pZD47XG4gIHB1YmxpYyBtZXNzYWdlcyQgPSBuZXcgUmVwbGF5U3ViamVjdDxJTW9kZWxMaXN0TWVzc2FnZT4oMSk7XG4gIHB1YmxpYyBzdGFydGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgfVxuXG4gIHByaXZhdGUgX2NvdW50OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogR2V0IGN1cnJlbnQgcmVzdWx0cyBjb3VudCAoZnJvbSBsYXN0IG1ldGEgcmVjZWl2ZWQpLlxuICAgKi9cbiAgcHVibGljIGdldCBjb3VudCgpOiBudW1iZXIgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fY291bnQ7XG4gIH1cblxuICBwcml2YXRlIF9yZXN1bHRzPzogT2JzZXJ2YWJsZTxUW10+O1xuXG4gIHB1YmxpYyBnZXQgcmVzdWx0cygpOiBPYnNlcnZhYmxlPFRbXT4ge1xuICAgIGlmICghdGhpcy5fcmVzdWx0cykge1xuICAgICAgdGhpcy5fcmVzdWx0cyA9IHRoaXMucXVlcnlzZXQucmVzdWx0cy5waXBlKFxuICAgICAgICAvLyB0YXAoKCkgPT4gY29uc29sZS5sb2coJ0Bzb2xpZGV2L2RhdGE6IG1vZGVsbGlzdCByZXN1bHQnKSksXG4gICAgICAgIHNoYXJlKCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlIHx8IE5FVkVSKVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3Jlc3VsdHM7XG4gIH1cblxuICBwcml2YXRlIF9tZXRhPzogT2JzZXJ2YWJsZTxJUXVlcnlNZXRhPjtcblxuICBwdWJsaWMgZ2V0IG1ldGEoKTogT2JzZXJ2YWJsZTxJUXVlcnlNZXRhPiB7XG4gICAgaWYgKCF0aGlzLl9tZXRhKSB7XG4gICAgICB0aGlzLl9tZXRhID0gdGhpcy5xdWVyeXNldC5tZXRhLnBpcGUoXG4gICAgICAgIC8vIHRhcCgoKSA9PiBjb25zb2xlLmxvZygnQHNvbGlkZXYvZGF0YTogbW9kZWxsaXN0IG1ldGEnKSksXG4gICAgICAgIHRhcCgobSkgPT4gKHRoaXMuX2NvdW50ID0gbS5uYXYuY291bnQpKSxcbiAgICAgICAgc2hhcmUoKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUgfHwgTkVWRVIpXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fbWV0YTtcbiAgfVxuXG4gIHByaXZhdGUgX2xvYWRpbmc/OiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG4gIHB1YmxpYyBnZXQgbG9hZGluZygpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICBpZiAoIXRoaXMuX2xvYWRpbmcpIHtcbiAgICAgIHRoaXMuX2xvYWRpbmcgPSB0aGlzLnF1ZXJ5c2V0LmxvYWRpbmcucGlwZShcbiAgICAgICAgLy8gdGFwKCgpID0+IGNvbnNvbGUubG9nKCdAc29saWRldi9kYXRhOiBtb2RlbGxpc3QgbG9hZGluZycpKSxcbiAgICAgICAgc2hhcmUoKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUgfHwgTkVWRVIpXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fbG9hZGluZztcbiAgfVxuXG4gIHByaXZhdGUgX2Z1bGw/OiBPYnNlcnZhYmxlPFtUW10sIGJvb2xlYW4sIElRdWVyeU1ldGFdPjtcblxuICBwdWJsaWMgZ2V0IGZ1bGwoKTogT2JzZXJ2YWJsZTxbVFtdLCBib29sZWFuLCBJUXVlcnlNZXRhXT4ge1xuICAgIGlmICghdGhpcy5fZnVsbCkge1xuICAgICAgdGhpcy5fZnVsbCA9IHRoaXMucXVlcnlzZXQuZnVsbC5waXBlKFxuICAgICAgICAvLyB0YXAoKCkgPT4gY29uc29sZS5sb2coJ0Bzb2xpZGV2L2RhdGE6IG1vZGVsbGlzdCBmdWxsJykpLFxuICAgICAgICBzaGFyZSgpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSB8fCBORVZFUilcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9mdWxsO1xuICB9XG5cbiAgcHVibGljIHN0YXJ0KHBhcmFtczogTW9kZWxMaXN0UGFyYW1zKSB7XG4gICAgbGV0IGZpbHRlciQ6IE9ic2VydmFibGU8RmlsdGVyRGVmYXVsdHM+O1xuICAgIGxldCByZWxvYWRGaXJlZCA9IGZhbHNlO1xuICAgIGlmIChwYXJhbXMuZmlsdGVyICYmICFwYXJhbXMuZmlsdGVyLnN1YnNjcmliZSkge1xuICAgICAgZmlsdGVyJCA9IG9mKHBhcmFtcy5maWx0ZXIgYXMgRmlsdGVyRGVmYXVsdHMpO1xuICAgIH0gZWxzZSBpZiAocGFyYW1zLmZpbHRlciAmJiBwYXJhbXMuZmlsdGVyLnN1YnNjcmliZSkge1xuICAgICAgZmlsdGVyJCA9IHBhcmFtcy5maWx0ZXIgYXMgT2JzZXJ2YWJsZTxGaWx0ZXJEZWZhdWx0cz47XG4gICAgfSBlbHNlIHtcbiAgICAgIGZpbHRlciQgPSBvZih7fSk7XG4gICAgfVxuICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5yZWxvYWQucGlwZSh0YXAoKHYpID0+IChyZWxvYWRGaXJlZCA9ICEhdikpKSxcbiAgICAgIHRoaXMuZmlsdGVycy5vdXRwdXQsXG4gICAgICBmaWx0ZXIkLFxuICAgICAgdGhpcy5wYWdpbmF0b3Iub3V0cHV0LFxuICAgICAgdGhpcy5zb3J0ZXIub3V0cHV0LFxuICAgICAgdGhpcy5maWVsZHMub3V0cHV0LFxuICAgIF0pXG4gICAgICAucGlwZShcbiAgICAgICAgdGhyb3R0bGVUaW1lKDIwMCksXG4gICAgICAgIHN3aXRjaE1hcChcbiAgICAgICAgICAoW3JlbG9hZCwgZmlsdGVyLCBtYW51YWxGaWx0ZXIsIHBhZ2luYXRvciwgc29ydGVyLCBmaWVsZHNdKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnF1ZXJ5c2V0XG4gICAgICAgICAgICAgIC5maWx0ZXIoZmlsdGVyKVxuICAgICAgICAgICAgICAuZmlsdGVyKG1hbnVhbEZpbHRlciB8fCB7fSwgdHJ1ZSlcbiAgICAgICAgICAgICAgLnBhZ2luYXRlQnkocGFnaW5hdG9yLnBhZ2Vfc2l6ZSlcbiAgICAgICAgICAgICAgLnNldFBhZ2UocGFnaW5hdG9yLnBhZ2UpXG4gICAgICAgICAgICAgIC5zb3J0KC4uLnNvcnRlcilcbiAgICAgICAgICAgICAgLnNldEZpZWxkcyhmaWVsZHMpO1xuICAgICAgICAgICAgY29uc3QgZGJTeW5jID0gcmVsb2FkRmlyZWQ7XG4gICAgICAgICAgICByZWxvYWRGaXJlZCA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucXVlcnlzZXQuZ2V0KHRydWUsIGRiU3luYyk7XG4gICAgICAgICAgfVxuICAgICAgICApLFxuICAgICAgICB0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSB8fCBORVZFUilcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgLy8gY29uc29sZS5sb2coJ0Bzb2xpZGV2L2RhdGE6IG1vZGVsbGlzdDpnZXQgcmVzdWx0cycsIHRoaXMubmFtZSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgJ0Bzb2xpZGV2L2RhdGE6IGVycm9yIHdoaWxlIGdldHRpbmcgbW9kZWwgbGlzdCByZXN1bHRzIDogJyxcbiAgICAgICAgICAgIGVycm9yXG4gICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHtcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZygnQHNvbGlkZXYvZGF0YTogbW9kZWxsaXN0OmNvbXBsZXRlZCcsIHRoaXMubmFtZSk7XG4gICAgICAgICAgdGhpcy5zdGFydGVkID0gZmFsc2U7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB0aGlzLnJlbG9hZC5uZXh0KCk7XG4gICAgdGhpcy5zdGFydGVkID0gdHJ1ZTtcbiAgfVxufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTW9kZWxMaXN0U2VydmljZSB7XG4gIHByaXZhdGUgX2luc3RhbmNlczogTWFwPHN0cmluZywgTW9kZWxMaXN0PGFueT4+ID0gbmV3IE1hcCgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoREFUQV9BVVRIX1NFUlZJQ0UpIHByaXZhdGUgX2F1dGg6IEF1dGhTZXJ2aWNlQmFzZTxhbnksIGFueSwgYW55PlxuICApIHtcbiAgICB0aGlzLl9hdXRoLmxvZ291dCQuc3Vic2NyaWJlKCgpID0+IHRoaXMucmVzZXQoKSk7XG4gIH1cblxuICBwdWJsaWMgcmVzZXQoKSB7XG4gICAgZm9yIChjb25zdCBpIG9mIHRoaXMuX2luc3RhbmNlcy52YWx1ZXMoKSkge1xuICAgICAgaWYgKGkudW5zdWJzY3JpYmUpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ0NsZWFyaW5nICcsIGkpO1xuICAgICAgICBpLnVuc3Vic2NyaWJlLm5leHQoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5faW5zdGFuY2VzLmNsZWFyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0PFQgZXh0ZW5kcyBEYXRhTW9kZWw+KFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uPFQ+LFxuICAgIGRlZmF1bHRzOiBNb2RlbExpc3RQYXJhbXNcbiAgKSB7XG4gICAgbGV0IG1sOiBNb2RlbExpc3Q8VD47XG5cbiAgICBpZiAoIW5hbWUgfHwgIXRoaXMuX2luc3RhbmNlcy5oYXMobmFtZSkgfHwgIWRlZmF1bHRzLmtlZXApIHtcbiAgICAgIG1sID0gbmV3IE1vZGVsTGlzdDxUPihuYW1lKTtcbiAgICAgIG1sLnF1ZXJ5c2V0ID0gY29sbGVjdGlvbi5xdWVyeXNldCgpO1xuICAgICAgbWwuZmllbGRzID0gbmV3IE1vZGVsTGlzdEZpZWxkcyhjb2xsZWN0aW9uLCBkZWZhdWx0cy5maWVsZHMpO1xuICAgICAgbWwuc29ydGVyID0gbmV3IE1vZGVsTGlzdFNvcnRlcihkZWZhdWx0cy5zb3J0ZXIgfHwgW10pO1xuICAgICAgbWwucGFnaW5hdG9yID0gbmV3IE1vZGVsTGlzdFBhZ2luYXRvcihkZWZhdWx0cy5wYWdpbmF0b3IpO1xuICAgICAgbWwuZmlsdGVycyA9IG5ldyBNb2RlbExpc3RGaWx0ZXJzKGRlZmF1bHRzLmZpbHRlcnMpO1xuICAgICAgaWYgKGRlZmF1bHRzLmtlZXApIHtcbiAgICAgICAgdGhpcy5faW5zdGFuY2VzLnNldChuYW1lLCBtbCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG1sID0gdGhpcy5faW5zdGFuY2VzLmdldChuYW1lKSE7XG4gICAgfVxuICAgIGlmICghbWwuc3RhcnRlZCkge1xuICAgICAgaWYgKGRlZmF1bHRzLnJlbG9hZCkge1xuICAgICAgICBtbC5yZWxvYWQgPSBkZWZhdWx0cy5yZWxvYWQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtbC5yZWxvYWQgPSBuZXcgU3ViamVjdDx2b2lkIHwgYm9vbGVhbj4oKTtcbiAgICAgIH1cbiAgICAgIGlmIChkZWZhdWx0cy51bnN1YnNjcmliZSkge1xuICAgICAgICBtbC51bnN1YnNjcmliZSA9IGRlZmF1bHRzLnVuc3Vic2NyaWJlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWwudW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgICAgfVxuICAgICAgbWwuc3RhcnQoZGVmYXVsdHMpO1xuICAgIH1cbiAgICByZXR1cm4gbWw7XG4gIH1cbn1cbiJdfQ==
|