ngx-material-entity 18.0.1 → 18.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/README.md +10 -13
- package/components/create-page/create-page.component.d.ts +3 -0
- package/components/custom-table/custom-table-configuration.model.d.ts +65 -0
- package/components/custom-table/custom-table.component.d.ts +111 -0
- package/components/edit-page/edit-page.component.d.ts +8 -1
- package/components/input/array/array-date-input/array-date-input.component.d.ts +2 -2
- package/components/input/array/array-date-range-input/array-date-range-input.component.d.ts +3 -3
- package/components/input/array/array-date-time-input/array-date-time-input.component.d.ts +3 -3
- package/components/input/array/array-table.class.d.ts +25 -19
- package/components/input/file/file-default-input/file-default-input.component.d.ts +1 -1
- package/components/input/file/file-image-input/file-image-input.component.d.ts +3 -0
- package/components/input/file/file-input/file-input.component.d.ts +8 -2
- package/components/input/input.component.d.ts +101 -80
- package/components/input/number/number-dropdown-input/number-dropdown-input.component.d.ts +2 -0
- package/components/input/relations/references-many-input/references-many-input.component.d.ts +14 -17
- package/components/input/string/string-dropdown-input/string-dropdown-input.component.d.ts +2 -0
- package/components/input/string/string-password-input/string-password-input.component.d.ts +3 -0
- package/components/table/edit-dialog/edit-entity-dialog.component.d.ts +5 -5
- package/components/table/table-data.d.ts +9 -4
- package/components/table/table.component.d.ts +15 -37
- package/components/tooltip/tooltip.component.d.ts +2 -0
- package/decorators/array/array-decorator-internal.data.d.ts +8 -3
- package/decorators/array/array-decorator.data.d.ts +45 -88
- package/decorators/base/property-decorator.data.d.ts +2 -2
- package/decorators/file/file-decorator-internal.data.d.ts +3 -2
- package/decorators/file/file-decorator.data.d.ts +4 -3
- package/decorators/references-many/references-many-decorator-internal.data.d.ts +3 -1
- package/decorators/references-many/references-many-decorator.data.d.ts +13 -1
- package/directives/dynamic-style-class.directive.d.ts +4 -5
- package/esm2022/components/confirm-dialog/confirm-dialog.component.mjs +7 -8
- package/esm2022/components/create-page/create-page.component.mjs +17 -11
- package/esm2022/components/custom-table/custom-table-configuration.model.mjs +37 -0
- package/esm2022/components/custom-table/custom-table.component.mjs +213 -0
- package/esm2022/components/edit-page/edit-page.component.mjs +29 -12
- package/esm2022/components/form/form.component.mjs +7 -8
- package/esm2022/components/input/array/array-date-input/array-date-input.component.mjs +17 -21
- package/esm2022/components/input/array/array-date-range-input/array-date-range-input.component.mjs +28 -27
- package/esm2022/components/input/array/array-date-time-input/array-date-time-input.component.mjs +18 -22
- package/esm2022/components/input/array/array-string-autocomplete-chips/array-string-autocomplete-chips.component.mjs +9 -7
- package/esm2022/components/input/array/array-string-chips-input/array-string-chips-input.component.mjs +9 -7
- package/esm2022/components/input/array/array-table.class.mjs +53 -45
- package/esm2022/components/input/base-input.component.mjs +3 -3
- package/esm2022/components/input/boolean/boolean-checkbox-input/boolean-checkbox-input.component.mjs +4 -4
- package/esm2022/components/input/boolean/boolean-dropdown-input/boolean-dropdown-input.component.mjs +3 -3
- package/esm2022/components/input/boolean/boolean-toggle-input/boolean-toggle-input.component.mjs +4 -4
- package/esm2022/components/input/custom/custom.component.mjs +3 -3
- package/esm2022/components/input/date/date-input/date-input.component.mjs +3 -3
- package/esm2022/components/input/date/date-range-input/date-range-input.component.mjs +7 -8
- package/esm2022/components/input/date/date-time-input/date-time-input.component.mjs +6 -6
- package/esm2022/components/input/file/file-default-input/file-default-input.component.mjs +5 -5
- package/esm2022/components/input/file/file-image-input/file-image-input.component.mjs +10 -9
- package/esm2022/components/input/file/file-input/file-input.component.mjs +27 -15
- package/esm2022/components/input/input.component.mjs +162 -114
- package/esm2022/components/input/number/number-dropdown-input/number-dropdown-input.component.mjs +11 -8
- package/esm2022/components/input/number/number-input/number-input.component.mjs +3 -3
- package/esm2022/components/input/number/number-slider-input/number-slider-input.component.mjs +4 -4
- package/esm2022/components/input/relations/references-many-input/references-many-input.component.mjs +46 -57
- package/esm2022/components/input/string/string-autocomplete-input/string-autocomplete-input.component.mjs +6 -7
- package/esm2022/components/input/string/string-dropdown-input/string-dropdown-input.component.mjs +11 -8
- package/esm2022/components/input/string/string-input/string-input.component.mjs +3 -3
- package/esm2022/components/input/string/string-password-input/string-password-input.component.mjs +13 -8
- package/esm2022/components/input/string/string-textbox-input/string-textbox-input.component.mjs +3 -3
- package/esm2022/components/table/create-dialog/create-entity-dialog.component.mjs +9 -10
- package/esm2022/components/table/display-column-value/base-display-column-value.component.mjs +3 -3
- package/esm2022/components/table/display-column-value/display-column-value.component.mjs +3 -3
- package/esm2022/components/table/edit-dialog/edit-data.builder.mjs +1 -1
- package/esm2022/components/table/edit-dialog/edit-entity-dialog.component.mjs +21 -16
- package/esm2022/components/table/table-data.builder.mjs +3 -1
- package/esm2022/components/table/table-data.mjs +1 -1
- package/esm2022/components/table/table.component.mjs +41 -114
- package/esm2022/components/tooltip/tooltip.component.mjs +9 -5
- package/esm2022/decorators/array/array-decorator-internal.data.mjs +18 -3
- package/esm2022/decorators/array/array-decorator.data.mjs +33 -2
- package/esm2022/decorators/array/array.decorator.mjs +15 -8
- package/esm2022/decorators/base/property-decorator.data.mjs +2 -2
- package/esm2022/decorators/file/file-decorator-internal.data.mjs +4 -3
- package/esm2022/decorators/file/file-decorator.data.mjs +3 -3
- package/esm2022/decorators/file/file.decorator.mjs +7 -4
- package/esm2022/decorators/has-many/has-many-decorator-internal.data.mjs +1 -1
- package/esm2022/decorators/number/number.decorator.mjs +7 -4
- package/esm2022/decorators/object/object.decorator.mjs +5 -3
- package/esm2022/decorators/references-many/references-many-decorator-internal.data.mjs +8 -1
- package/esm2022/decorators/references-many/references-many-decorator.data.mjs +1 -1
- package/esm2022/decorators/string/string-decorator-internal.data.mjs +2 -1
- package/esm2022/decorators/string/string.decorator.mjs +11 -6
- package/esm2022/directives/drag-drop.directive.mjs +3 -3
- package/esm2022/directives/dynamic-style-class.directive.mjs +7 -7
- package/esm2022/directives/included-in.directive.mjs +3 -3
- package/esm2022/directives/number.directive.mjs +3 -3
- package/esm2022/directives/password-match.directive.mjs +3 -3
- package/esm2022/directives/tooltip.directive.mjs +7 -4
- package/esm2022/functions/dropdown-values-to-function.function.mjs +2 -1
- package/esm2022/functions/get-changes-tooltip-content.function.mjs +23 -0
- package/esm2022/functions/get-validation-errors-tooltip-content.function.mjs +23 -0
- package/esm2022/functions/table-column-value-to-sort-value.function.mjs +33 -0
- package/esm2022/public-api.mjs +3 -2
- package/esm2022/utilities/date.utilities.mjs +7 -6
- package/esm2022/utilities/entity.utilities.mjs +58 -27
- package/esm2022/utilities/file.utilities.mjs +7 -4
- package/esm2022/utilities/validation.utilities.mjs +41 -21
- package/fesm2022/ngx-material-entity.mjs +2767 -2336
- package/fesm2022/ngx-material-entity.mjs.map +1 -1
- package/functions/get-changes-tooltip-content.function.d.ts +13 -0
- package/functions/table-column-value-to-sort-value.function.d.ts +9 -0
- package/package.json +4 -2
- package/public-api.d.ts +2 -1
- package/utilities/entity.utilities.d.ts +11 -7
- package/esm2022/functions/get-validation-errors-tooltip-content.function.ts.mjs +0 -23
- /package/functions/{get-validation-errors-tooltip-content.function.ts.d.ts → get-validation-errors-tooltip-content.function.d.ts} +0 -0
package/esm2022/components/input/number/number-dropdown-input/number-dropdown-input.component.mjs
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
/* eslint-disable jsdoc/require-jsdoc */
|
|
2
|
-
import {
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
3
|
import { Component, EnvironmentInjector, runInInjectionContext } from '@angular/core';
|
|
4
4
|
import { FormsModule } from '@angular/forms';
|
|
5
5
|
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
6
6
|
import { MatInputModule } from '@angular/material/input';
|
|
7
7
|
import { MatSelectModule } from '@angular/material/select';
|
|
8
|
+
import { FaIconComponent } from '@fortawesome/angular-fontawesome';
|
|
9
|
+
import { faSearch } from '@fortawesome/free-solid-svg-icons';
|
|
8
10
|
import { LodashUtilities } from '../../../../encapsulation/lodash.utilities';
|
|
9
11
|
import { NgxMatEntityBaseInputComponent } from '../../base-input.component';
|
|
10
12
|
import * as i0 from "@angular/core";
|
|
@@ -15,6 +17,7 @@ import * as i4 from "@angular/forms";
|
|
|
15
17
|
import * as i5 from "@angular/material/input";
|
|
16
18
|
export class NumberDropdownInputComponent extends NgxMatEntityBaseInputComponent {
|
|
17
19
|
injector;
|
|
20
|
+
faSearch = faSearch;
|
|
18
21
|
dropdownValues = [];
|
|
19
22
|
filteredDropdownValues = [];
|
|
20
23
|
get currentDropdownValue() {
|
|
@@ -45,18 +48,18 @@ export class NumberDropdownInputComponent extends NgxMatEntityBaseInputComponent
|
|
|
45
48
|
return option.displayName.toLowerCase().includes(filter) || `${option.value}`.toLowerCase().includes(filter);
|
|
46
49
|
});
|
|
47
50
|
}
|
|
48
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.
|
|
49
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.
|
|
51
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.7", ngImport: i0, type: NumberDropdownInputComponent, deps: [{ token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Component });
|
|
52
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.7", type: NumberDropdownInputComponent, isStandalone: true, selector: "number-dropdown-input", usesInheritance: true, ngImport: i0, template: "<!-- eslint-disable angular/no-call-expression -->\n<mat-form-field>\n <mat-label>{{metadata.displayName}}</mat-label>\n <mat-select #model=\"ngModel\"\n [name]=\"name\"\n [required]=\"metadata.required(entity)\"\n [disabled]=\"isReadOnly\"\n [(ngModel)]=\"propertyValue\"\n (selectionChange)=\"emitChange()\"\n (opened)=\"selectSearchInput.focus()\"\n >\n <mat-form-field class=\"select-search-input\">\n <!-- eslint-disable-next-line angular/no-any -->\n <input #selectSearchInput matInput (keyup)=\"filterDropdownValues($any($event.target).value)\">\n <fa-icon matSuffix [icon]=\"faSearch\"></fa-icon>\n </mat-form-field>\n @if (!metadata.required(entity)) {\n <mat-option>-</mat-option>\n }\n @if (shouldDisplayCurrentValue) {\n <mat-option [value]=\"currentDropdownValue?.value\">{{currentDropdownValue?.displayName}}</mat-option>\n }\n @for (value of filteredDropdownValues; track $index) {\n <mat-option [value]=\"value.value\">{{value.displayName}}</mat-option>\n }\n </mat-select>\n <mat-error>{{getValidationErrorMessage(model)}}</mat-error>\n</mat-form-field>", styles: ["mat-form-field{width:100%}::ng-deep .mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-right:16px}::ng-deep .select-search-input{max-width:100%;margin-top:-8px;margin-bottom:8px}::ng-deep .select-search-input .mat-mdc-form-field-subscript-wrapper{display:none}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i2.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: "component", type: i3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: CommonModule }, { kind: "component", type: FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }] });
|
|
50
53
|
}
|
|
51
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.
|
|
54
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.7", ngImport: i0, type: NumberDropdownInputComponent, decorators: [{
|
|
52
55
|
type: Component,
|
|
53
56
|
args: [{ selector: 'number-dropdown-input', standalone: true, imports: [
|
|
54
57
|
MatFormFieldModule,
|
|
55
58
|
MatSelectModule,
|
|
56
59
|
FormsModule,
|
|
57
60
|
MatInputModule,
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
], template: "<!-- eslint-disable angular/no-call-expression -->\n<mat-form-field>\n <mat-label>{{metadata.displayName}}</mat-label>\n <mat-select #model=\"ngModel\"\n [name]=\"name\"\n [required]=\"metadata.required(entity)\"\n [disabled]=\"isReadOnly\"\n [(ngModel)]=\"propertyValue\"\n (selectionChange)=\"emitChange()\"\n (opened)=\"selectSearchInput.focus()\"\n >\n <mat-form-field class=\"select-search-input\">\n <!-- eslint-disable-next-line angular/no-any -->\n <input #selectSearchInput matInput (keyup)=\"filterDropdownValues($any($event.target).value)\">\n <
|
|
61
|
+
CommonModule,
|
|
62
|
+
FaIconComponent
|
|
63
|
+
], template: "<!-- eslint-disable angular/no-call-expression -->\n<mat-form-field>\n <mat-label>{{metadata.displayName}}</mat-label>\n <mat-select #model=\"ngModel\"\n [name]=\"name\"\n [required]=\"metadata.required(entity)\"\n [disabled]=\"isReadOnly\"\n [(ngModel)]=\"propertyValue\"\n (selectionChange)=\"emitChange()\"\n (opened)=\"selectSearchInput.focus()\"\n >\n <mat-form-field class=\"select-search-input\">\n <!-- eslint-disable-next-line angular/no-any -->\n <input #selectSearchInput matInput (keyup)=\"filterDropdownValues($any($event.target).value)\">\n <fa-icon matSuffix [icon]=\"faSearch\"></fa-icon>\n </mat-form-field>\n @if (!metadata.required(entity)) {\n <mat-option>-</mat-option>\n }\n @if (shouldDisplayCurrentValue) {\n <mat-option [value]=\"currentDropdownValue?.value\">{{currentDropdownValue?.displayName}}</mat-option>\n }\n @for (value of filteredDropdownValues; track $index) {\n <mat-option [value]=\"value.value\">{{value.displayName}}</mat-option>\n }\n </mat-select>\n <mat-error>{{getValidationErrorMessage(model)}}</mat-error>\n</mat-form-field>", styles: ["mat-form-field{width:100%}::ng-deep .mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-right:16px}::ng-deep .select-search-input{max-width:100%;margin-top:-8px;margin-bottom:8px}::ng-deep .select-search-input .mat-mdc-form-field-subscript-wrapper{display:none}\n"] }]
|
|
61
64
|
}], ctorParameters: () => [{ type: i0.EnvironmentInjector }] });
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLWRyb3Bkb3duLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2NvbXBvbmVudHMvaW5wdXQvbnVtYmVyL251bWJlci1kcm9wZG93bi1pbnB1dC9udW1iZXItZHJvcGRvd24taW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY29tcG9uZW50cy9pbnB1dC9udW1iZXIvbnVtYmVyLWRyb3Bkb3duLWlucHV0L251bWJlci1kcm9wZG93bi1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx3Q0FBd0M7QUFDeEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQVUscUJBQXFCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBa0IsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFLN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7O0FBaUI1RSxNQUFNLE9BQU8sNEJBQ1QsU0FBUSw4QkFBa0Y7SUFnQjdEO0lBZDdCLFFBQVEsR0FBbUIsUUFBUSxDQUFDO0lBRTVCLGNBQWMsR0FBd0MsRUFBRSxDQUFDO0lBQ2pFLHNCQUFzQixHQUF3QyxFQUFFLENBQUM7SUFFakUsSUFBSSxvQkFBb0I7UUFDcEIsT0FBTyxlQUFlLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLElBQUksRUFBRSxDQUFDO2FBQ3RELElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxJQUFJLHlCQUF5QjtRQUN6QixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0gsQ0FBQztJQUVELFlBQTZCLFFBQTZCO1FBQ3RELEtBQUssRUFBRSxDQUFDO1FBRGlCLGFBQVEsR0FBUixRQUFRLENBQXFCO0lBRTFELENBQUM7SUFFUSxRQUFRO1FBQ2IsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLEtBQUsscUJBQXFCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLElBQUksRUFBRTtZQUNqRCxJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3RFLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxlQUFlLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNqRixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7O09BR0c7SUFDSCxvQkFBb0IsQ0FBQyxXQUFtQjtRQUNwQyxNQUFNLE1BQU0sR0FBVyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDakQsSUFBSSxDQUFDLHNCQUFzQixHQUFHLGVBQWUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN6RixPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7dUdBdENRLDRCQUE0QjsyRkFBNUIsNEJBQTRCLHdHQy9CekMsbXVDQTJCaUIsb1ZESlQsa0JBQWtCLHdnQkFDbEIsZUFBZSxtckJBQ2YsV0FBVywyakJBQ1gsY0FBYywwV0FDZCxZQUFZLCtCQUNaLGVBQWU7OzJGQUdWLDRCQUE0QjtrQkFmeEMsU0FBUzsrQkFFSSx1QkFBdUIsY0FHckIsSUFBSSxXQUNQO3dCQUNMLGtCQUFrQjt3QkFDbEIsZUFBZTt3QkFDZixXQUFXO3dCQUNYLGNBQWM7d0JBQ2QsWUFBWTt3QkFDWixlQUFlO3FCQUNsQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGpzZG9jL3JlcXVpcmUtanNkb2MgKi9cbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEVudmlyb25tZW50SW5qZWN0b3IsIE9uSW5pdCwgcnVuSW5JbmplY3Rpb25Db250ZXh0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBNYXRTZWxlY3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xuaW1wb3J0IHsgRmFJY29uQ29tcG9uZW50LCBJY29uRGVmaW5pdGlvbiB9IGZyb20gJ0Bmb3J0YXdlc29tZS9hbmd1bGFyLWZvbnRhd2Vzb21lJztcbmltcG9ydCB7IGZhU2VhcmNoIH0gZnJvbSAnQGZvcnRhd2Vzb21lL2ZyZWUtc29saWQtc3ZnLWljb25zJztcblxuaW1wb3J0IHsgQmFzZUVudGl0eVR5cGUgfSBmcm9tICcuLi8uLi8uLi8uLi9jbGFzc2VzL2VudGl0eS5tb2RlbCc7XG5pbXBvcnQgeyBEZWNvcmF0b3JUeXBlcyB9IGZyb20gJy4uLy4uLy4uLy4uL2RlY29yYXRvcnMvYmFzZS9kZWNvcmF0b3ItdHlwZXMuZW51bSc7XG5pbXBvcnQgeyBEcm9wZG93blZhbHVlIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGVjb3JhdG9ycy9iYXNlL2Ryb3Bkb3duLXZhbHVlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBMb2Rhc2hVdGlsaXRpZXMgfSBmcm9tICcuLi8uLi8uLi8uLi9lbmNhcHN1bGF0aW9uL2xvZGFzaC51dGlsaXRpZXMnO1xuaW1wb3J0IHsgTmd4TWF0RW50aXR5QmFzZUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYmFzZS1pbnB1dC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgYW5ndWxhci9jb21wb25lbnQtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ251bWJlci1kcm9wZG93bi1pbnB1dCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL251bWJlci1kcm9wZG93bi1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vbnVtYmVyLWRyb3Bkb3duLWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICAgICAgTWF0U2VsZWN0TW9kdWxlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgRmFJY29uQ29tcG9uZW50XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBOdW1iZXJEcm9wZG93bklucHV0Q29tcG9uZW50PEVudGl0eVR5cGUgZXh0ZW5kcyBCYXNlRW50aXR5VHlwZTxFbnRpdHlUeXBlPj5cbiAgICBleHRlbmRzIE5neE1hdEVudGl0eUJhc2VJbnB1dENvbXBvbmVudDxFbnRpdHlUeXBlLCBEZWNvcmF0b3JUeXBlcy5OVU1CRVJfRFJPUERPV04sIG51bWJlcj4gaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgZmFTZWFyY2g6IEljb25EZWZpbml0aW9uID0gZmFTZWFyY2g7XG5cbiAgICBwcml2YXRlIGRyb3Bkb3duVmFsdWVzOiBEcm9wZG93blZhbHVlPG51bWJlciB8IHVuZGVmaW5lZD5bXSA9IFtdO1xuICAgIGZpbHRlcmVkRHJvcGRvd25WYWx1ZXM6IERyb3Bkb3duVmFsdWU8bnVtYmVyIHwgdW5kZWZpbmVkPltdID0gW107XG5cbiAgICBnZXQgY3VycmVudERyb3Bkb3duVmFsdWUoKTogRHJvcGRvd25WYWx1ZTxudW1iZXIgfCB1bmRlZmluZWQ+IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIExvZGFzaFV0aWxpdGllcy5jbG9uZURlZXAodGhpcy5kcm9wZG93blZhbHVlcyA/PyBbXSlcbiAgICAgICAgICAgIC5maW5kKHYgPT4gdi52YWx1ZSA9PT0gdGhpcy5wcm9wZXJ0eVZhbHVlKTtcbiAgICB9XG5cbiAgICBnZXQgc2hvdWxkRGlzcGxheUN1cnJlbnRWYWx1ZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5jdXJyZW50RHJvcGRvd25WYWx1ZSAmJiAhdGhpcy5maWx0ZXJlZERyb3Bkb3duVmFsdWVzLmZpbmQodiA9PiB2LnZhbHVlID09PSB0aGlzLmN1cnJlbnREcm9wZG93blZhbHVlPy52YWx1ZSk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBpbmplY3RvcjogRW52aXJvbm1lbnRJbmplY3Rvcikge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB2b2lkIHJ1bkluSW5qZWN0aW9uQ29udGV4dCh0aGlzLmluamVjdG9yLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duVmFsdWVzID0gYXdhaXQgdGhpcy5tZXRhZGF0YS5kcm9wZG93blZhbHVlcyh0aGlzLmVudGl0eSk7XG4gICAgICAgICAgICB0aGlzLmZpbHRlcmVkRHJvcGRvd25WYWx1ZXMgPSBMb2Rhc2hVdGlsaXRpZXMuY2xvbmVEZWVwKHRoaXMuZHJvcGRvd25WYWx1ZXMpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGaWx0ZXJzIHRoZSBkcm9wZG93biB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHNlYXJjaElucHV0IC0gVGhlIHNlYXJjaCBpbnB1dCB0byBmaWx0ZXIgZm9yLlxuICAgICAqL1xuICAgIGZpbHRlckRyb3Bkb3duVmFsdWVzKHNlYXJjaElucHV0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZmlsdGVyOiBzdHJpbmcgPSBzZWFyY2hJbnB1dC50b0xvd2VyQ2FzZSgpO1xuICAgICAgICB0aGlzLmZpbHRlcmVkRHJvcGRvd25WYWx1ZXMgPSBMb2Rhc2hVdGlsaXRpZXMuY2xvbmVEZWVwKHRoaXMuZHJvcGRvd25WYWx1ZXMpLmZpbHRlcihvcHRpb24gPT4ge1xuICAgICAgICAgICAgcmV0dXJuIG9wdGlvbi5kaXNwbGF5TmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGZpbHRlcikgfHwgYCR7b3B0aW9uLnZhbHVlfWAudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmaWx0ZXIpO1xuICAgICAgICB9KTtcbiAgICB9XG59IiwiPCEtLSBlc2xpbnQtZGlzYWJsZSBhbmd1bGFyL25vLWNhbGwtZXhwcmVzc2lvbiAtLT5cbjxtYXQtZm9ybS1maWVsZD5cbiAgICA8bWF0LWxhYmVsPnt7bWV0YWRhdGEuZGlzcGxheU5hbWV9fTwvbWF0LWxhYmVsPlxuICAgIDxtYXQtc2VsZWN0ICNtb2RlbD1cIm5nTW9kZWxcIlxuICAgICAgICBbbmFtZV09XCJuYW1lXCJcbiAgICAgICAgW3JlcXVpcmVkXT1cIm1ldGFkYXRhLnJlcXVpcmVkKGVudGl0eSlcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiaXNSZWFkT25seVwiXG4gICAgICAgIFsobmdNb2RlbCldPVwicHJvcGVydHlWYWx1ZVwiXG4gICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwiZW1pdENoYW5nZSgpXCJcbiAgICAgICAgKG9wZW5lZCk9XCJzZWxlY3RTZWFyY2hJbnB1dC5mb2N1cygpXCJcbiAgICA+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInNlbGVjdC1zZWFyY2gtaW5wdXRcIj5cbiAgICAgICAgICAgIDwhLS0gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGFuZ3VsYXIvbm8tYW55IC0tPlxuICAgICAgICAgICAgPGlucHV0ICNzZWxlY3RTZWFyY2hJbnB1dCBtYXRJbnB1dCAoa2V5dXApPVwiZmlsdGVyRHJvcGRvd25WYWx1ZXMoJGFueSgkZXZlbnQudGFyZ2V0KS52YWx1ZSlcIj5cbiAgICAgICAgICAgIDxmYS1pY29uIG1hdFN1ZmZpeCBbaWNvbl09XCJmYVNlYXJjaFwiPjwvZmEtaWNvbj5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgQGlmICghbWV0YWRhdGEucmVxdWlyZWQoZW50aXR5KSkge1xuICAgICAgICAgICAgPG1hdC1vcHRpb24+LTwvbWF0LW9wdGlvbj5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKHNob3VsZERpc3BsYXlDdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJjdXJyZW50RHJvcGRvd25WYWx1ZT8udmFsdWVcIj57e2N1cnJlbnREcm9wZG93blZhbHVlPy5kaXNwbGF5TmFtZX19PC9tYXQtb3B0aW9uPlxuICAgICAgICB9XG4gICAgICAgIEBmb3IgKHZhbHVlIG9mIGZpbHRlcmVkRHJvcGRvd25WYWx1ZXM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cInZhbHVlLnZhbHVlXCI+e3t2YWx1ZS5kaXNwbGF5TmFtZX19PC9tYXQtb3B0aW9uPlxuICAgICAgICB9XG4gICAgPC9tYXQtc2VsZWN0PlxuICAgIDxtYXQtZXJyb3I+e3tnZXRWYWxpZGF0aW9uRXJyb3JNZXNzYWdlKG1vZGVsKX19PC9tYXQtZXJyb3I+XG48L21hdC1mb3JtLWZpZWxkPiJdfQ==
|
|
@@ -9,10 +9,10 @@ import * as i1 from "@angular/material/input";
|
|
|
9
9
|
import * as i2 from "@angular/material/form-field";
|
|
10
10
|
import * as i3 from "@angular/forms";
|
|
11
11
|
export class NumberInputComponent extends NgxMatEntityBaseInputComponent {
|
|
12
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.
|
|
13
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.
|
|
12
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.7", ngImport: i0, type: NumberInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
13
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.7", type: NumberInputComponent, isStandalone: true, selector: "number-input", usesInheritance: true, ngImport: i0, template: "<!-- eslint-disable angular/no-call-expression -->\n<mat-form-field>\n <mat-label>{{metadata.displayName}}</mat-label>\n <input\n #model=\"ngModel\"\n matInput\n type=\"number\"\n number\n [name]=\"name\"\n [required]=\"metadata.required(entity)\"\n [min]=\"metadata.min ?? null\"\n [max]=\"metadata.max ?? null\"\n [disabled]=\"isReadOnly\"\n [(ngModel)]=\"propertyValue\"\n (ngModelChange)=\"emitChange()\"\n >\n <mat-error>{{getValidationErrorMessage(model)}}</mat-error>\n</mat-form-field>", styles: ["mat-form-field{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i1.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: 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.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: FormsModule }, { 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.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i3.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
|
|
14
14
|
}
|
|
15
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.
|
|
15
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.7", ngImport: i0, type: NumberInputComponent, decorators: [{
|
|
16
16
|
type: Component,
|
|
17
17
|
args: [{ selector: 'number-input', standalone: true, imports: [
|
|
18
18
|
MatInputModule,
|
package/esm2022/components/input/number/number-slider-input/number-slider-input.component.mjs
CHANGED
|
@@ -13,15 +13,15 @@ export class NumberSliderInputComponent extends NgxMatEntityBaseInputComponent {
|
|
|
13
13
|
updatePropertyValue(value) {
|
|
14
14
|
this.propertyValue = value;
|
|
15
15
|
}
|
|
16
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.
|
|
17
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.
|
|
16
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.7", ngImport: i0, type: NumberSliderInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
17
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.7", type: NumberSliderInputComponent, isStandalone: true, selector: "number-slider-input", usesInheritance: true, ngImport: i0, template: "<!-- eslint-disable angular/no-call-expression -->\n<mat-slider\n id=\"slider\"\n color=\"primary\"\n [min]=\"metadata.min ?? null\"\n [max]=\"metadata.max ?? null\"\n [step]=\"metadata.step\"\n [discrete]=\"true\"\n [displayWith]=\"metadata.formatThumbLabelValue\"\n [showTickMarks]=\"metadata.showTickMarks\"\n [disabled]=\"isReadOnly\"\n (click)=\"model.control.markAsTouched()\"\n>\n <input matSliderThumb\n [disabled]=\"isReadOnly\"\n (valueChange)=\"updatePropertyValue($event)\"\n >\n</mat-slider>\n\n<mat-form-field floatLabel=\"always\">\n <mat-label>{{metadata.displayName}}</mat-label>\n <!-- hidden input is needed so that the slider can be used inside a mat-form-field -->\n <input #model=\"ngModel\" matInput\n style=\"opacity: 0%;\"\n [name]=\"name\"\n [required]=\"metadata.required(entity)\"\n [min]=\"metadata.min ?? null\"\n [max]=\"metadata.max ?? null\"\n [disabled]=\"isReadOnly\"\n [(ngModel)]=\"propertyValue\"\n (ngModelChange)=\"emitChange()\"\n >\n \n <mat-error>{{getValidationErrorMessage(model)}}</mat-error>\n</mat-form-field>", styles: ["mat-form-field{width:100%;margin-top:-20px}mat-slider{width:calc(100% - 40px);margin-left:20px;margin-right:20px;margin-bottom:-40px;z-index:999}::ng-deep #slider .mdc-slider__value-indicator-container{top:23px;left:57px;display:flex;transform:rotate(90deg) scale(1);border-radius:50%;pointer-events:auto}::ng-deep #slider .mdc-slider__value-indicator{padding-right:5px;padding-left:5px;transition:transform .1s 0ms cubic-bezier(0,0,.2,1);transform:scale(1)}::ng-deep #slider .mdc-slider__value-indicator-text{transform:rotate(270deg)}\n"], dependencies: [{ kind: "ngmodule", type: MatSliderModule }, { kind: "component", type: i1.MatSlider, selector: "mat-slider", inputs: ["disabled", "discrete", "showTickMarks", "min", "color", "disableRipple", "max", "step", "displayWith"], exportAs: ["matSlider"] }, { kind: "directive", type: i1.MatSliderThumb, selector: "input[matSliderThumb]", inputs: ["value"], outputs: ["valueChange", "dragStart", "dragEnd"], exportAs: ["matSliderThumb"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2.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: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
|
|
18
18
|
}
|
|
19
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.
|
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.7", ngImport: i0, type: NumberSliderInputComponent, decorators: [{
|
|
20
20
|
type: Component,
|
|
21
21
|
args: [{ selector: 'number-slider-input', standalone: true, imports: [
|
|
22
22
|
MatSliderModule,
|
|
23
23
|
MatInputModule,
|
|
24
24
|
FormsModule
|
|
25
|
-
], template: "<!-- eslint-disable angular/no-call-expression -->\n<mat-slider\n id=\"slider\"\n color=\"primary\"\n [min]=\"metadata.min ?? null\"\n [max]=\"metadata.max ?? null\"\n [step]=\"metadata.step\"\n [discrete]=\"true\"\n [displayWith]=\"metadata.formatThumbLabelValue\"\n [showTickMarks]=\"metadata.showTickMarks\"\n [disabled]=\"isReadOnly\"\n (click)=\"model.control.markAsTouched()\"\n>\n <input matSliderThumb\n [disabled]=\"isReadOnly\"\n (valueChange)=\"updatePropertyValue($event)\"\n >\n</mat-slider>\n\n<mat-form-field floatLabel=\"always\">\n <mat-label>{{metadata.displayName}}</mat-label>\n <!-- hidden input is needed so that the slider can be used inside a mat-form-field -->\n <input #model=\"ngModel\" matInput\n style=\"opacity: 0%;\"\n [name]=\"name\"\n [required]=\"metadata.required(entity)\"\n [min]=\"metadata.min ?? null\"\n [max]=\"metadata.max ?? null\"\n [disabled]=\"isReadOnly\"\n [(ngModel)]=\"propertyValue\"\n (ngModelChange)=\"emitChange()\"\n >\n \n <mat-error>{{getValidationErrorMessage(model)}}</mat-error>\n</mat-form-field>", styles: ["mat-form-field{width:100%;margin-top:-
|
|
25
|
+
], template: "<!-- eslint-disable angular/no-call-expression -->\n<mat-slider\n id=\"slider\"\n color=\"primary\"\n [min]=\"metadata.min ?? null\"\n [max]=\"metadata.max ?? null\"\n [step]=\"metadata.step\"\n [discrete]=\"true\"\n [displayWith]=\"metadata.formatThumbLabelValue\"\n [showTickMarks]=\"metadata.showTickMarks\"\n [disabled]=\"isReadOnly\"\n (click)=\"model.control.markAsTouched()\"\n>\n <input matSliderThumb\n [disabled]=\"isReadOnly\"\n (valueChange)=\"updatePropertyValue($event)\"\n >\n</mat-slider>\n\n<mat-form-field floatLabel=\"always\">\n <mat-label>{{metadata.displayName}}</mat-label>\n <!-- hidden input is needed so that the slider can be used inside a mat-form-field -->\n <input #model=\"ngModel\" matInput\n style=\"opacity: 0%;\"\n [name]=\"name\"\n [required]=\"metadata.required(entity)\"\n [min]=\"metadata.min ?? null\"\n [max]=\"metadata.max ?? null\"\n [disabled]=\"isReadOnly\"\n [(ngModel)]=\"propertyValue\"\n (ngModelChange)=\"emitChange()\"\n >\n \n <mat-error>{{getValidationErrorMessage(model)}}</mat-error>\n</mat-form-field>", styles: ["mat-form-field{width:100%;margin-top:-20px}mat-slider{width:calc(100% - 40px);margin-left:20px;margin-right:20px;margin-bottom:-40px;z-index:999}::ng-deep #slider .mdc-slider__value-indicator-container{top:23px;left:57px;display:flex;transform:rotate(90deg) scale(1);border-radius:50%;pointer-events:auto}::ng-deep #slider .mdc-slider__value-indicator{padding-right:5px;padding-left:5px;transition:transform .1s 0ms cubic-bezier(0,0,.2,1);transform:scale(1)}::ng-deep #slider .mdc-slider__value-indicator-text{transform:rotate(270deg)}\n"] }]
|
|
26
26
|
}] });
|
|
27
27
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLXNsaWRlci1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9jb21wb25lbnRzL2lucHV0L251bWJlci9udW1iZXItc2xpZGVyLWlucHV0L251bWJlci1zbGlkZXItaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY29tcG9uZW50cy9pbnB1dC9udW1iZXIvbnVtYmVyLXNsaWRlci1pbnB1dC9udW1iZXItc2xpZGVyLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLHdDQUF3QztBQUN4QyxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBSTNELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7QUFjNUUsTUFBTSxPQUFPLDBCQUNULFNBQVEsOEJBQWdGO0lBRXhGLG1CQUFtQixDQUFDLEtBQWE7UUFDN0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFDL0IsQ0FBQzt1R0FMUSwwQkFBMEI7MkZBQTFCLDBCQUEwQixzR0N2QnZDLCtwQ0FrQ2lCLGtsQkRoQlQsZUFBZSxrYUFDZixjQUFjLG10QkFDZCxXQUFXOzsyRkFHTiwwQkFBMEI7a0JBWnRDLFNBQVM7K0JBRUkscUJBQXFCLGNBR25CLElBQUksV0FDUDt3QkFDTCxlQUFlO3dCQUNmLGNBQWM7d0JBQ2QsV0FBVztxQkFDZCIsInNvdXJjZXNDb250ZW50IjpbIlxuLyogZXNsaW50LWRpc2FibGUganNkb2MvcmVxdWlyZS1qc2RvYyAqL1xuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBNYXRTbGlkZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbGlkZXInO1xuXG5pbXBvcnQgeyBCYXNlRW50aXR5VHlwZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NsYXNzZXMvZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7IERlY29yYXRvclR5cGVzIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGVjb3JhdG9ycy9iYXNlL2RlY29yYXRvci10eXBlcy5lbnVtJztcbmltcG9ydCB7IE5neE1hdEVudGl0eUJhc2VJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2Jhc2UtaW5wdXQuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGFuZ3VsYXIvY29tcG9uZW50LXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6ICdudW1iZXItc2xpZGVyLWlucHV0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbnVtYmVyLXNsaWRlci1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vbnVtYmVyLXNsaWRlci1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBNYXRTbGlkZXJNb2R1bGUsXG4gICAgICAgIE1hdElucHV0TW9kdWxlLFxuICAgICAgICBGb3Jtc01vZHVsZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgTnVtYmVyU2xpZGVySW5wdXRDb21wb25lbnQ8RW50aXR5VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPEVudGl0eVR5cGU+PlxuICAgIGV4dGVuZHMgTmd4TWF0RW50aXR5QmFzZUlucHV0Q29tcG9uZW50PEVudGl0eVR5cGUsIERlY29yYXRvclR5cGVzLk5VTUJFUl9TTElERVIsIG51bWJlcj4gaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgdXBkYXRlUHJvcGVydHlWYWx1ZSh2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMucHJvcGVydHlWYWx1ZSA9IHZhbHVlO1xuICAgIH1cbn0iLCI8IS0tIGVzbGludC1kaXNhYmxlIGFuZ3VsYXIvbm8tY2FsbC1leHByZXNzaW9uIC0tPlxuPG1hdC1zbGlkZXJcbiAgICBpZD1cInNsaWRlclwiXG4gICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICBbbWluXT1cIm1ldGFkYXRhLm1pbiA/PyBudWxsXCJcbiAgICBbbWF4XT1cIm1ldGFkYXRhLm1heCA/PyBudWxsXCJcbiAgICBbc3RlcF09XCJtZXRhZGF0YS5zdGVwXCJcbiAgICBbZGlzY3JldGVdPVwidHJ1ZVwiXG4gICAgW2Rpc3BsYXlXaXRoXT1cIm1ldGFkYXRhLmZvcm1hdFRodW1iTGFiZWxWYWx1ZVwiXG4gICAgW3Nob3dUaWNrTWFya3NdPVwibWV0YWRhdGEuc2hvd1RpY2tNYXJrc1wiXG4gICAgW2Rpc2FibGVkXT1cImlzUmVhZE9ubHlcIlxuICAgIChjbGljayk9XCJtb2RlbC5jb250cm9sLm1hcmtBc1RvdWNoZWQoKVwiXG4+XG4gICAgPGlucHV0IG1hdFNsaWRlclRodW1iXG4gICAgICAgIFtkaXNhYmxlZF09XCJpc1JlYWRPbmx5XCJcbiAgICAgICAgKHZhbHVlQ2hhbmdlKT1cInVwZGF0ZVByb3BlcnR5VmFsdWUoJGV2ZW50KVwiXG4gICAgPlxuPC9tYXQtc2xpZGVyPlxuXG48bWF0LWZvcm0tZmllbGQgZmxvYXRMYWJlbD1cImFsd2F5c1wiPlxuICAgIDxtYXQtbGFiZWw+e3ttZXRhZGF0YS5kaXNwbGF5TmFtZX19PC9tYXQtbGFiZWw+XG4gICAgPCEtLSBoaWRkZW4gaW5wdXQgaXMgbmVlZGVkIHNvIHRoYXQgdGhlIHNsaWRlciBjYW4gYmUgdXNlZCBpbnNpZGUgYSBtYXQtZm9ybS1maWVsZCAtLT5cbiAgICA8aW5wdXQgI21vZGVsPVwibmdNb2RlbFwiIG1hdElucHV0XG4gICAgICAgIHN0eWxlPVwib3BhY2l0eTogMCU7XCJcbiAgICAgICAgW25hbWVdPVwibmFtZVwiXG4gICAgICAgIFtyZXF1aXJlZF09XCJtZXRhZGF0YS5yZXF1aXJlZChlbnRpdHkpXCJcbiAgICAgICAgW21pbl09XCJtZXRhZGF0YS5taW4gPz8gbnVsbFwiXG4gICAgICAgIFttYXhdPVwibWV0YWRhdGEubWF4ID8/IG51bGxcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiaXNSZWFkT25seVwiXG4gICAgICAgIFsobmdNb2RlbCldPVwicHJvcGVydHlWYWx1ZVwiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImVtaXRDaGFuZ2UoKVwiXG4gICAgPlxuICAgIFxuICAgIDxtYXQtZXJyb3I+e3tnZXRWYWxpZGF0aW9uRXJyb3JNZXNzYWdlKG1vZGVsKX19PC9tYXQtZXJyb3I+XG48L21hdC1mb3JtLWZpZWxkPiJdfQ==
|
package/esm2022/components/input/relations/references-many-input/references-many-input.component.mjs
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
/* eslint-disable jsdoc/require-jsdoc */
|
|
2
|
-
import {
|
|
3
|
-
import { NgFor, NgIf } from '@angular/common';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
4
3
|
import { Component, EnvironmentInjector, Inject, runInInjectionContext } from '@angular/core';
|
|
5
4
|
import { FormsModule } from '@angular/forms';
|
|
6
5
|
import { MatButtonModule } from '@angular/material/button';
|
|
7
|
-
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
8
6
|
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
9
7
|
import { MatInputModule } from '@angular/material/input';
|
|
10
8
|
import { MatSelectModule } from '@angular/material/select';
|
|
11
|
-
import {
|
|
9
|
+
import { FaIconComponent } from '@fortawesome/angular-fontawesome';
|
|
10
|
+
import { faSearch } from '@fortawesome/free-solid-svg-icons';
|
|
12
11
|
import { ReferencesManyDecoratorConfigInternal } from '../../../../decorators/references-many/references-many-decorator-internal.data';
|
|
13
12
|
import { LodashUtilities } from '../../../../encapsulation/lodash.utilities';
|
|
14
13
|
import { ReflectUtilities } from '../../../../encapsulation/reflect.utilities';
|
|
14
|
+
import { defaultFalse } from '../../../../functions/default-false.function';
|
|
15
15
|
import { NGX_COMPLETE_GLOBAL_DEFAULT_VALUES } from '../../../../global-configuration-values';
|
|
16
|
-
import {
|
|
16
|
+
import { CustomTableComponent } from '../../../custom-table/custom-table.component';
|
|
17
17
|
import { NgxMatEntityBaseInputComponent } from '../../base-input.component';
|
|
18
18
|
import * as i0 from "@angular/core";
|
|
19
19
|
import * as i1 from "@angular/material/input";
|
|
@@ -21,21 +21,16 @@ import * as i2 from "@angular/material/form-field";
|
|
|
21
21
|
import * as i3 from "@angular/material/select";
|
|
22
22
|
import * as i4 from "@angular/material/core";
|
|
23
23
|
import * as i5 from "@angular/forms";
|
|
24
|
-
import * as i6 from "@angular/material/
|
|
25
|
-
import * as i7 from "@angular/material/checkbox";
|
|
26
|
-
import * as i8 from "@angular/material/button";
|
|
24
|
+
import * as i6 from "@angular/material/button";
|
|
27
25
|
export class ReferencesManyInputComponent extends NgxMatEntityBaseInputComponent {
|
|
28
26
|
injector;
|
|
29
27
|
globalConfig;
|
|
28
|
+
faSearch = faSearch;
|
|
30
29
|
allReferencedEntities = [];
|
|
31
30
|
allDropdownValues = [];
|
|
32
31
|
dropdownValues = [];
|
|
33
32
|
filteredDropdownValues = [];
|
|
34
33
|
input = '';
|
|
35
|
-
referencedEntitiesDataSource = new MatTableDataSource();
|
|
36
|
-
displayedColumns;
|
|
37
|
-
selection = new SelectionModel(true, []);
|
|
38
|
-
SelectionUtilities = SelectionUtilities;
|
|
39
34
|
get currentDropdownValue() {
|
|
40
35
|
return LodashUtilities.cloneDeep(this.dropdownValues ?? [])
|
|
41
36
|
.find(v => v.value === this.input);
|
|
@@ -43,6 +38,21 @@ export class ReferencesManyInputComponent extends NgxMatEntityBaseInputComponent
|
|
|
43
38
|
get shouldDisplayCurrentValue() {
|
|
44
39
|
return !!this.currentDropdownValue && !this.filteredDropdownValues.find(v => v.value === this.currentDropdownValue?.value);
|
|
45
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* The currently selected values.
|
|
43
|
+
*/
|
|
44
|
+
selected = [];
|
|
45
|
+
/**
|
|
46
|
+
* Configuration for the references many table.
|
|
47
|
+
*/
|
|
48
|
+
tableConfig;
|
|
49
|
+
get propertyValue() {
|
|
50
|
+
return this.entity[this.key];
|
|
51
|
+
}
|
|
52
|
+
set propertyValue(value) {
|
|
53
|
+
this.entity[this.key] = value;
|
|
54
|
+
this.metadata.change?.(this.entity);
|
|
55
|
+
}
|
|
46
56
|
constructor(injector, globalConfig) {
|
|
47
57
|
super();
|
|
48
58
|
this.injector = injector;
|
|
@@ -50,20 +60,22 @@ export class ReferencesManyInputComponent extends NgxMatEntityBaseInputComponent
|
|
|
50
60
|
}
|
|
51
61
|
ngOnInit() {
|
|
52
62
|
super.ngOnInit();
|
|
63
|
+
this.propertyValue = this.propertyValue ?? [];
|
|
53
64
|
this.metadata = new ReferencesManyDecoratorConfigInternal(this.metadata, this.globalConfig);
|
|
54
65
|
ReflectUtilities.defineMetadata('metadata', this.metadata, this.entity, this.key);
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
66
|
+
this.tableConfig = {
|
|
67
|
+
allowClick: defaultFalse,
|
|
68
|
+
displayColumns: this.metadata.displayColumns,
|
|
69
|
+
withSelection: !this.isReadOnly,
|
|
70
|
+
dynamicRowStyleClasses: this.metadata.dynamicRowStyleClasses,
|
|
71
|
+
emptyErrorMessage: this.metadata.emptyErrorMessage,
|
|
72
|
+
resolveToReferencedEntity: (id) => this.metadata.getEntityForId(id, this.allReferencedEntities)
|
|
73
|
+
};
|
|
62
74
|
void runInInjectionContext(this.injector, async () => {
|
|
63
75
|
this.allReferencedEntities = await this.metadata.getReferencedEntities();
|
|
64
76
|
this.allDropdownValues = this.metadata.getDropdownValues(LodashUtilities.cloneDeep(this.allReferencedEntities));
|
|
65
77
|
this.dropdownValues = LodashUtilities.cloneDeep(this.allDropdownValues);
|
|
66
|
-
for (const value of this.
|
|
78
|
+
for (const value of this.propertyValue) {
|
|
67
79
|
const foundValue = this.dropdownValues.find(v => v.value === value);
|
|
68
80
|
if (foundValue) {
|
|
69
81
|
this.dropdownValues.splice(this.dropdownValues.indexOf(foundValue), 1);
|
|
@@ -82,75 +94,52 @@ export class ReferencesManyInputComponent extends NgxMatEntityBaseInputComponent
|
|
|
82
94
|
return option.displayName.toLowerCase().includes(filter) || option.value.toLowerCase().includes(filter);
|
|
83
95
|
});
|
|
84
96
|
}
|
|
85
|
-
|
|
86
|
-
* Gets the value to display in the column.
|
|
87
|
-
* Runs in environment context to enable injection.
|
|
88
|
-
* @param entityId - The id of the entity to get the value from.
|
|
89
|
-
* @param displayColumn - The display column to get the value from.
|
|
90
|
-
* @returns The value of the display column.
|
|
91
|
-
*/
|
|
92
|
-
getDisplayColumnValue(entityId, displayColumn) {
|
|
93
|
-
return runInInjectionContext(this.injector, () => {
|
|
94
|
-
// eslint-disable-next-line typescript/no-unsafe-argument
|
|
95
|
-
return displayColumn.value(this.metadata.getEntityForId(entityId, this.allReferencedEntities));
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
async add() {
|
|
99
|
-
this.propertyValue = this.propertyValue ?? [];
|
|
97
|
+
add() {
|
|
100
98
|
this.propertyValue.push(LodashUtilities.cloneDeep(this.input));
|
|
99
|
+
this.propertyValue = [...this.propertyValue];
|
|
101
100
|
const foundDropdownValue = this.dropdownValues.find(v => v.value === this.input);
|
|
102
101
|
this.dropdownValues.splice(this.dropdownValues.indexOf(foundDropdownValue), 1);
|
|
103
102
|
this.filteredDropdownValues = LodashUtilities.cloneDeep(this.dropdownValues);
|
|
104
|
-
this.referencedEntitiesDataSource.data = this.propertyValue;
|
|
105
103
|
this.input = '';
|
|
106
104
|
this.emitChange();
|
|
107
105
|
}
|
|
108
106
|
addAll() {
|
|
109
107
|
this.propertyValue = this.allDropdownValues.map(dv => dv.value);
|
|
110
|
-
if (!this.propertyValue.length) {
|
|
111
|
-
this.propertyValue = undefined;
|
|
112
|
-
}
|
|
113
108
|
this.dropdownValues = [];
|
|
114
109
|
this.filteredDropdownValues = LodashUtilities.cloneDeep(this.dropdownValues);
|
|
115
|
-
this.referencedEntitiesDataSource.data = this.propertyValue ?? [];
|
|
116
110
|
this.input = '';
|
|
117
111
|
this.emitChange();
|
|
118
112
|
}
|
|
119
113
|
remove() {
|
|
120
|
-
for (const s of this.
|
|
121
|
-
this.propertyValue
|
|
114
|
+
for (const s of this.selected) {
|
|
115
|
+
this.propertyValue.splice(this.propertyValue.indexOf(s), 1);
|
|
122
116
|
const foundDropdownValue = this.allDropdownValues.find(v => v.value === s);
|
|
123
117
|
if (foundDropdownValue) {
|
|
124
118
|
this.dropdownValues.push(foundDropdownValue);
|
|
125
119
|
}
|
|
126
120
|
}
|
|
121
|
+
this.propertyValue = [...this.propertyValue];
|
|
127
122
|
this.filteredDropdownValues = LodashUtilities.cloneDeep(this.dropdownValues);
|
|
128
|
-
if (!this.propertyValue?.length) {
|
|
129
|
-
this.propertyValue = undefined;
|
|
130
|
-
}
|
|
131
|
-
this.referencedEntitiesDataSource.data = this.propertyValue ?? [];
|
|
132
|
-
this.selection.clear();
|
|
133
123
|
this.input = '';
|
|
134
124
|
this.emitChange();
|
|
135
125
|
}
|
|
136
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.
|
|
137
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.
|
|
126
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.7", ngImport: i0, type: ReferencesManyInputComponent, deps: [{ token: i0.EnvironmentInjector }, { token: NGX_COMPLETE_GLOBAL_DEFAULT_VALUES }], target: i0.ɵɵFactoryTarget.Component });
|
|
127
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.7", type: ReferencesManyInputComponent, isStandalone: true, selector: "references-many-input", usesInheritance: true, ngImport: i0, template: "<!-- eslint-disable angular/no-call-expression -->\n<div class=\"mat-elevation-z8 elevation-container\">\n <div class=\"array-headline\">\n <b>{{metadata.displayName}}</b>\n </div>\n\n <mat-form-field>\n <mat-label>{{metadata.dropdownLabel}}</mat-label>\n <mat-select #inputModel=\"ngModel\" [name]=\"name + 'input'\" [disabled]=\"isReadOnly\" [(ngModel)]=\"input\" (opened)=\"selectSearchInput.focus()\">\n <mat-form-field class=\"select-search-input\">\n <!-- eslint-disable-next-line angular/no-any -->\n <input #selectSearchInput matInput (keyup)=\"filterDropdownValues($any($event.target).value)\">\n <fa-icon matSuffix [icon]=\"faSearch\"></fa-icon>\n </mat-form-field>\n <mat-option>-</mat-option>\n @if (shouldDisplayCurrentValue) {\n <mat-option [value]=\"currentDropdownValue?.value\">{{currentDropdownValue?.displayName}}</mat-option>\n }\n @for (value of filteredDropdownValues; track $index) {\n <mat-option [value]=\"value.value\">{{value.displayName}}</mat-option>\n }\n </mat-select>\n <mat-error>{{getValidationErrorMessage(inputModel)}}</mat-error>\n </mat-form-field>\n\n @if (metadata.addAll) {\n <button type=\"button\" style=\"margin-left: 20px;\" mat-raised-button [disabled]=\"!dropdownValues.length || isReadOnly\" (click)=\"addAll()\">\n {{metadata.addAllButtonLabel}}\n </button>\n }\n\n <div class=\"buttons\">\n <button type=\"button\" mat-raised-button [disabled]=\"!input\" (click)=\"add()\">\n {{metadata.addButtonLabel}}\n </button>\n <button type=\"button\" mat-raised-button [disabled]=\"!selected.length\" (click)=\"remove()\">\n {{metadata.removeButtonLabel}}\n </button>\n </div>\n\n <custom-table\n [configuration]=\"tableConfig\"\n [data]=\"propertyValue\"\n (selectionChanged)=\"selected = $any($event)\"\n >\n </custom-table>\n</div>", styles: [".array-headline{padding-bottom:10px}.elevation-container{border-radius:5px;padding:15px;margin-bottom:15px;margin-top:15px}.buttons{display:flex;justify-content:space-between;margin-bottom:10px;margin-top:5px;flex-wrap:wrap;gap:10px}.buttons button{flex-grow:1}mat-form-field{max-width:100%}\n"], dependencies: [{ kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i1.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: 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.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i3.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: "component", type: i4.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i6.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: CustomTableComponent, selector: "custom-table", inputs: ["data", "searchString", "required", "isLoading", "configuration"], outputs: ["cellClicked", "selectionChanged"] }, { kind: "component", type: FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }] });
|
|
138
128
|
}
|
|
139
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.
|
|
129
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.7", ngImport: i0, type: ReferencesManyInputComponent, decorators: [{
|
|
140
130
|
type: Component,
|
|
141
131
|
args: [{ selector: 'references-many-input', standalone: true, imports: [
|
|
142
132
|
MatInputModule,
|
|
143
133
|
MatFormFieldModule,
|
|
144
134
|
MatSelectModule,
|
|
145
135
|
FormsModule,
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
], template: "<!-- eslint-disable angular/no-call-expression -->\n<div class=\"mat-elevation-z8 elevation-container\">\n <div class=\"array-headline\">\n <b>{{metadata.displayName}}</b>\n </div>\n\n <mat-form-field>\n <mat-label>{{metadata.dropdownLabel}}</mat-label>\n <mat-select #inputModel=\"ngModel\" [name]=\"name + 'input'\" [disabled]=\"isReadOnly\" [(ngModel)]=\"input\" (opened)=\"selectSearchInput.focus()\">\n <mat-form-field class=\"select-search-input\">\n <!-- eslint-disable-next-line angular/no-any -->\n <input #selectSearchInput matInput (keyup)=\"filterDropdownValues($any($event.target).value)\">\n <i matSuffix class=\"fas fa-search\"></i>\n </mat-form-field>\n <mat-option>-</mat-option>\n @if (shouldDisplayCurrentValue) {\n <mat-option [value]=\"currentDropdownValue?.value\">{{currentDropdownValue?.displayName}}</mat-option>\n }\n @for (value of filteredDropdownValues; track $index) {\n <mat-option [value]=\"value.value\">{{value.displayName}}</mat-option>\n }\n </mat-select>\n <mat-error>{{getValidationErrorMessage(inputModel)}}</mat-error>\n </mat-form-field>\n\n @if (metadata.addAll) {\n <button type=\"button\" style=\"margin-left: 20px;\" mat-raised-button [disabled]=\"!dropdownValues.length || isReadOnly\" (click)=\"addAll()\">\n {{metadata.addAllButtonLabel}}\n </button>\n }\n\n <div class=\"buttons\">\n <button type=\"button\" mat-raised-button [disabled]=\"!input\" (click)=\"add()\">\n {{metadata.addButtonLabel}}\n </button>\n <button type=\"button\" mat-raised-button [disabled]=\"!selection.selected.length\" (click)=\"remove()\">\n {{metadata.removeButtonLabel}}\n </button>\n </div>\n\n <mat-table [dataSource]=\"referencedEntitiesDataSource\">\n <!-- select Column -->\n @if (!isReadOnly) {\n <ng-container matColumnDef=\"select\">\n <mat-header-cell *matHeaderCellDef>\n <mat-checkbox\n [disabled]=\"!referencedEntitiesDataSource.data.length\" [checked]=\"selection.hasValue() && SelectionUtilities.isAllSelected(selection, referencedEntitiesDataSource)\"\n [indeterminate]=\"selection.hasValue() && !SelectionUtilities.isAllSelected(selection, referencedEntitiesDataSource)\"\n (change)=\"$event ? SelectionUtilities.masterToggle(selection, referencedEntitiesDataSource) : null\">\n </mat-checkbox>\n </mat-header-cell>\n <mat-cell *matCellDef=\"let entity\">\n <mat-checkbox [checked]=\"selection.isSelected(entity)\" (click)=\"$event.stopPropagation()\" (change)=\"$event ? selection.toggle(entity) : null\"></mat-checkbox>\n </mat-cell>\n </ng-container>\n }\n\n @for (dCol of metadata.displayColumns; track $index) {\n <ng-container [matColumnDef]=\"dCol.displayName\">\n <mat-header-cell *matHeaderCellDef>\n {{dCol.displayName}}\n </mat-header-cell>\n <mat-cell *matCellDef=\"let entityId\" class=\"entity\">\n {{getDisplayColumnValue(entityId, dCol)}}\n </mat-cell>\n </ng-container>\n }\n \n <mat-header-row *matHeaderRowDef=\"displayedColumns\"></mat-header-row>\n <mat-row *matRowDef=\"let row; columns: displayedColumns\"></mat-row>\n </mat-table>\n</div>", styles: [".mdc-data-table__row:last-child .mdc-data-table__cell{border-bottom:1px solid rgba(0,0,0,.12)}.elevation-container{border-radius:5px;padding:15px;margin-bottom:15px;margin-top:15px}.array-headline{padding-bottom:10px}.buttons{display:flex;justify-content:space-between;margin-bottom:10px;margin-top:5px;flex-wrap:wrap;gap:10px}.buttons button{flex-grow:1}mat-form-field{max-width:100%}mat-table{border:1px solid #E0E0E0;border-radius:5px;padding-top:5px;padding-bottom:25px}.mat-column-select{flex:0 0 48px;padding-left:0;padding-right:0;justify-content:center}\n"] }]
|
|
136
|
+
CommonModule,
|
|
137
|
+
MatButtonModule,
|
|
138
|
+
CustomTableComponent,
|
|
139
|
+
FaIconComponent
|
|
140
|
+
], template: "<!-- eslint-disable angular/no-call-expression -->\n<div class=\"mat-elevation-z8 elevation-container\">\n <div class=\"array-headline\">\n <b>{{metadata.displayName}}</b>\n </div>\n\n <mat-form-field>\n <mat-label>{{metadata.dropdownLabel}}</mat-label>\n <mat-select #inputModel=\"ngModel\" [name]=\"name + 'input'\" [disabled]=\"isReadOnly\" [(ngModel)]=\"input\" (opened)=\"selectSearchInput.focus()\">\n <mat-form-field class=\"select-search-input\">\n <!-- eslint-disable-next-line angular/no-any -->\n <input #selectSearchInput matInput (keyup)=\"filterDropdownValues($any($event.target).value)\">\n <fa-icon matSuffix [icon]=\"faSearch\"></fa-icon>\n </mat-form-field>\n <mat-option>-</mat-option>\n @if (shouldDisplayCurrentValue) {\n <mat-option [value]=\"currentDropdownValue?.value\">{{currentDropdownValue?.displayName}}</mat-option>\n }\n @for (value of filteredDropdownValues; track $index) {\n <mat-option [value]=\"value.value\">{{value.displayName}}</mat-option>\n }\n </mat-select>\n <mat-error>{{getValidationErrorMessage(inputModel)}}</mat-error>\n </mat-form-field>\n\n @if (metadata.addAll) {\n <button type=\"button\" style=\"margin-left: 20px;\" mat-raised-button [disabled]=\"!dropdownValues.length || isReadOnly\" (click)=\"addAll()\">\n {{metadata.addAllButtonLabel}}\n </button>\n }\n\n <div class=\"buttons\">\n <button type=\"button\" mat-raised-button [disabled]=\"!input\" (click)=\"add()\">\n {{metadata.addButtonLabel}}\n </button>\n <button type=\"button\" mat-raised-button [disabled]=\"!selected.length\" (click)=\"remove()\">\n {{metadata.removeButtonLabel}}\n </button>\n </div>\n\n <custom-table\n [configuration]=\"tableConfig\"\n [data]=\"propertyValue\"\n (selectionChanged)=\"selected = $any($event)\"\n >\n </custom-table>\n</div>", styles: [".array-headline{padding-bottom:10px}.elevation-container{border-radius:5px;padding:15px;margin-bottom:15px;margin-top:15px}.buttons{display:flex;justify-content:space-between;margin-bottom:10px;margin-top:5px;flex-wrap:wrap;gap:10px}.buttons button{flex-grow:1}mat-form-field{max-width:100%}\n"] }]
|
|
152
141
|
}], ctorParameters: () => [{ type: i0.EnvironmentInjector }, { type: undefined, decorators: [{
|
|
153
142
|
type: Inject,
|
|
154
143
|
args: [NGX_COMPLETE_GLOBAL_DEFAULT_VALUES]
|
|
155
144
|
}] }] });
|
|
156
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmZXJlbmNlcy1tYW55LWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2NvbXBvbmVudHMvaW5wdXQvcmVsYXRpb25zL3JlZmVyZW5jZXMtbWFueS1pbnB1dC9yZWZlcmVuY2VzLW1hbnktaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY29tcG9uZW50cy9pbnB1dC9yZWxhdGlvbnMvcmVmZXJlbmNlcy1tYW55LWlucHV0L3JlZmVyZW5jZXMtbWFueS1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx3Q0FBd0M7QUFDeEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLEVBQVUscUJBQXFCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUs3RSxPQUFP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QUM7UUFDRCxJQUFJLENBQUMsc0JBQXNCLEdBQUcsZUFBZSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDN0UsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7UUFDbkMsQ0FBQztRQUNELElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUM7UUFDbEUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDdEIsQ0FBQzt1R0FsSVEsNEJBQTRCLHFEQWdDekIsa0NBQWtDOzJGQWhDckMsNEJBQTRCLHdHQ3pDekMsZ21IQXVFTSw0bUJEekNFLGNBQWMsbzFCQUNkLGtCQUFrQiw4QkFDbEIsZUFBZSxtckJBQ2YsV0FBVyw4VkFFWCxjQUFjLHNnQ0FDZCxpQkFBaUIsNldBRWpCLGVBQWU7OzJGQUdWLDRCQUE0QjtrQkFsQnhDLFNBQVM7K0JBRUksdUJBQXVCLGNBR3JCLElBQUksV0FDUDt3QkFDTCxjQUFjO3dCQUNkLGtCQUFrQjt3QkFDbEIsZUFBZTt3QkFDZixXQUFXO3dCQUNYLElBQUk7d0JBQ0osY0FBYzt3QkFDZCxpQkFBaUI7d0JBQ2pCLEtBQUs7d0JBQ0wsZUFBZTtxQkFDbEI7OzBCQWtDSSxNQUFNOzJCQUFDLGtDQUFrQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGpzZG9jL3JlcXVpcmUtanNkb2MgKi9cbmltcG9ydCB7IFNlbGVjdGlvbk1vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcbmltcG9ydCB7IE5nRm9yLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRW52aXJvbm1lbnRJbmplY3RvciwgSW5qZWN0LCBPbkluaXQsIHJ1bkluSW5qZWN0aW9uQ29udGV4dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcbmltcG9ydCB7IE1hdFRhYmxlRGF0YVNvdXJjZSwgTWF0VGFibGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XG5cbmltcG9ydCB7IEJhc2VFbnRpdHlUeXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vY2xhc3Nlcy9lbnRpdHkubW9kZWwnO1xuaW1wb3J0IHsgRGVjb3JhdG9yVHlwZXMgfSBmcm9tICcuLi8uLi8uLi8uLi9kZWNvcmF0b3JzL2Jhc2UvZGVjb3JhdG9yLXR5cGVzLmVudW0nO1xuaW1wb3J0IHsgRHJvcGRvd25WYWx1ZSB9IGZyb20gJy4uLy4uLy4uLy4uL2RlY29yYXRvcnMvYmFzZS9kcm9wZG93bi12YWx1ZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUmVmZXJlbmNlc01hbnlEZWNvcmF0b3JDb25maWdJbnRlcm5hbCB9IGZyb20gJy4uLy4uLy4uLy4uL2RlY29yYXRvcnMvcmVmZXJlbmNlcy1tYW55L3JlZmVyZW5jZXMtbWFueS1kZWNvcmF0b3ItaW50ZXJuYWwuZGF0YSc7XG5pbXBvcnQgeyBMb2Rhc2hVdGlsaXRpZXMgfSBmcm9tICcuLi8uLi8uLi8uLi9lbmNhcHN1bGF0aW9uL2xvZGFzaC51dGlsaXRpZXMnO1xuaW1wb3J0IHsgUmVmbGVjdFV0aWxpdGllcyB9IGZyb20gJy4uLy4uLy4uLy4uL2VuY2Fwc3VsYXRpb24vcmVmbGVjdC51dGlsaXRpZXMnO1xuaW1wb3J0IHsgTkdYX0NPTVBMRVRFX0dMT0JBTF9ERUZBVUxUX1ZBTFVFUywgTmd4R2xvYmFsRGVmYXVsdFZhbHVlcyB9IGZyb20gJy4uLy4uLy4uLy4uL2dsb2JhbC1jb25maWd1cmF0aW9uLXZhbHVlcyc7XG5pbXBvcnQgeyBTZWxlY3Rpb25VdGlsaXRpZXMgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlsaXRpZXMvc2VsZWN0aW9uLnV0aWxpdGllcyc7XG5pbXBvcnQgeyBEaXNwbGF5Q29sdW1uIH0gZnJvbSAnLi4vLi4vLi4vdGFibGUvdGFibGUtZGF0YSc7XG5pbXBvcnQgeyBOZ3hNYXRFbnRpdHlCYXNlSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9iYXNlLWlucHV0LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBhbmd1bGFyL2NvbXBvbmVudC1zZWxlY3RvclxuICAgIHNlbGVjdG9yOiAncmVmZXJlbmNlcy1tYW55LWlucHV0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcmVmZXJlbmNlcy1tYW55LWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9yZWZlcmVuY2VzLW1hbnktaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICAgICAgTWF0U2VsZWN0TW9kdWxlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgTmdJZixcbiAgICAgICAgTWF0VGFibGVNb2R1bGUsXG4gICAgICAgIE1hdENoZWNrYm94TW9kdWxlLFxuICAgICAgICBOZ0ZvcixcbiAgICAgICAgTWF0QnV0dG9uTW9kdWxlXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBSZWZlcmVuY2VzTWFueUlucHV0Q29tcG9uZW50PEVudGl0eVR5cGUgZXh0ZW5kcyBCYXNlRW50aXR5VHlwZTxFbnRpdHlUeXBlPj5cbiAgICBleHRlbmRzIE5neE1hdEVudGl0eUJhc2VJbnB1dENvbXBvbmVudDxFbnRpdHlUeXBlLCBEZWNvcmF0b3JUeXBlcy5SRUZFUkVOQ0VTX01BTlksIHN0cmluZ1tdPiBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgICBwcml2YXRlIGFsbFJlZmVyZW5jZWRFbnRpdGllczogRW50aXR5VHlwZVtdID0gW107XG5cbiAgICBwcml2YXRlIGFsbERyb3Bkb3duVmFsdWVzOiBEcm9wZG93blZhbHVlPHN0cmluZz5bXSA9IFtdO1xuXG4gICAgZHJvcGRvd25WYWx1ZXM6IERyb3Bkb3duVmFsdWU8c3RyaW5nPltdID0gW107XG5cbiAgICBmaWx0ZXJlZERyb3Bkb3duVmFsdWVzOiBEcm9wZG93blZhbHVlPHN0cmluZz5bXSA9IFtdO1xuXG4gICAgaW5wdXQ6IHN0cmluZyA9ICcnO1xuXG4gICAgcmVmZXJlbmNlZEVudGl0aWVzRGF0YVNvdXJjZTogTWF0VGFibGVEYXRhU291cmNlPHN0cmluZz4gPSBuZXcgTWF0VGFibGVEYXRhU291cmNlKCk7XG5cbiAgICBkaXNwbGF5ZWRDb2x1bW5zITogc3RyaW5nW107XG5cbiAgICBzZWxlY3Rpb246IFNlbGVjdGlvbk1vZGVsPHN0cmluZz4gPSBuZXcgU2VsZWN0aW9uTW9kZWw8c3RyaW5nPih0cnVlLCBbXSk7XG5cbiAgICBTZWxlY3Rpb25VdGlsaXRpZXM6IHR5cGVvZiBTZWxlY3Rpb25VdGlsaXRpZXMgPSBTZWxlY3Rpb25VdGlsaXRpZXM7XG5cbiAgICBnZXQgY3VycmVudERyb3Bkb3duVmFsdWUoKTogRHJvcGRvd25WYWx1ZTxzdHJpbmc+IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIExvZGFzaFV0aWxpdGllcy5jbG9uZURlZXAodGhpcy5kcm9wZG93blZhbHVlcyA/PyBbXSlcbiAgICAgICAgICAgIC5maW5kKHYgPT4gdi52YWx1ZSA9PT0gdGhpcy5pbnB1dCk7XG4gICAgfVxuXG4gICAgZ2V0IHNob3VsZERpc3BsYXlDdXJyZW50VmFsdWUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuY3VycmVudERyb3Bkb3duVmFsdWUgJiYgIXRoaXMuZmlsdGVyZWREcm9wZG93blZhbHVlcy5maW5kKHYgPT4gdi52YWx1ZSA9PT0gdGhpcy5jdXJyZW50RHJvcGRvd25WYWx1ZT8udmFsdWUpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yOiBFbnZpcm9ubWVudEluamVjdG9yLFxuICAgICAgICBASW5qZWN0KE5HWF9DT01QTEVURV9HTE9CQUxfREVGQVVMVF9WQUxVRVMpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZ2xvYmFsQ29uZmlnOiBOZ3hHbG9iYWxEZWZhdWx0VmFsdWVzXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIHRoaXMubWV0YWRhdGEgPSBuZXcgUmVmZXJlbmNlc01hbnlEZWNvcmF0b3JDb25maWdJbnRlcm5hbCh0aGlzLm1ldGFkYXRhLCB0aGlzLmdsb2JhbENvbmZpZyk7XG4gICAgICAgIFJlZmxlY3RVdGlsaXRpZXMuZGVmaW5lTWV0YWRhdGEoJ21ldGFkYXRhJywgdGhpcy5tZXRhZGF0YSwgdGhpcy5lbnRpdHksIHRoaXMua2V5KTtcbiAgICAgICAgY29uc3QgZ2l2ZW5EaXNwbGF5Q29sdW1uczogc3RyaW5nW10gPSB0aGlzLm1ldGFkYXRhLmRpc3BsYXlDb2x1bW5zLm1hcCgodikgPT4gdi5kaXNwbGF5TmFtZSk7XG4gICAgICAgIGlmIChnaXZlbkRpc3BsYXlDb2x1bW5zLmZpbmQocyA9PiBzID09PSAnc2VsZWN0JykpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICBgVGhlIG5hbWUgXCJzZWxlY3RcIiBmb3IgYSBkaXNwbGF5IGNvbHVtbiBpcyByZXNlcnZlZC5cbiAgICAgICAgICAgICAgICBQbGVhc2UgY2hvb3NlIGEgZGlmZmVyZW50IG5hbWUuYFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMgPSB0aGlzLmlzUmVhZE9ubHkgPyBnaXZlbkRpc3BsYXlDb2x1bW5zIDogWydzZWxlY3QnXS5jb25jYXQoZ2l2ZW5EaXNwbGF5Q29sdW1ucyk7XG4gICAgICAgIHRoaXMucmVmZXJlbmNlZEVudGl0aWVzRGF0YVNvdXJjZS5kYXRhID0gdGhpcy5wcm9wZXJ0eVZhbHVlID8/IFtdO1xuXG4gICAgICAgIHZvaWQgcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuaW5qZWN0b3IsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYWxsUmVmZXJlbmNlZEVudGl0aWVzID0gYXdhaXQgdGhpcy5tZXRhZGF0YS5nZXRSZWZlcmVuY2VkRW50aXRpZXMoKSBhcyBFbnRpdHlUeXBlW107XG4gICAgICAgICAgICB0aGlzLmFsbERyb3Bkb3duVmFsdWVzID0gdGhpcy5tZXRhZGF0YS5nZXREcm9wZG93blZhbHVlcyhMb2Rhc2hVdGlsaXRpZXMuY2xvbmVEZWVwKHRoaXMuYWxsUmVmZXJlbmNlZEVudGl0aWVzKSk7XG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duVmFsdWVzID0gTG9kYXNoVXRpbGl0aWVzLmNsb25lRGVlcCh0aGlzLmFsbERyb3Bkb3duVmFsdWVzKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgdmFsdWUgb2YgdGhpcy5yZWZlcmVuY2VkRW50aXRpZXNEYXRhU291cmNlLmRhdGEpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmb3VuZFZhbHVlOiBEcm9wZG93blZhbHVlPHN0cmluZz4gfCB1bmRlZmluZWQgPSB0aGlzLmRyb3Bkb3duVmFsdWVzLmZpbmQodiA9PiB2LnZhbHVlID09PSB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgaWYgKGZvdW5kVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcm9wZG93blZhbHVlcy5zcGxpY2UodGhpcy5kcm9wZG93blZhbHVlcy5pbmRleE9mKGZvdW5kVmFsdWUpLCAxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmZpbHRlcmVkRHJvcGRvd25WYWx1ZXMgPSBMb2Rhc2hVdGlsaXRpZXMuY2xvbmVEZWVwKHRoaXMuZHJvcGRvd25WYWx1ZXMpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGaWx0ZXJzIHRoZSBkcm9wZG93biB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHNlYXJjaElucHV0IC0gVGhlIHNlYXJjaCBpbnB1dCB0byBmaWx0ZXIgZm9yLlxuICAgICAqL1xuICAgIGZpbHRlckRyb3Bkb3duVmFsdWVzKHNlYXJjaElucHV0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZmlsdGVyOiBzdHJpbmcgPSBzZWFyY2hJbnB1dC50b0xvd2VyQ2FzZSgpO1xuICAgICAgICB0aGlzLmZpbHRlcmVkRHJvcGRvd25WYWx1ZXMgPSBMb2Rhc2hVdGlsaXRpZXMuY2xvbmVEZWVwKHRoaXMuZHJvcGRvd25WYWx1ZXMpLmZpbHRlcihvcHRpb24gPT4ge1xuICAgICAgICAgICAgcmV0dXJuIG9wdGlvbi5kaXNwbGF5TmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGZpbHRlcikgfHwgb3B0aW9uLnZhbHVlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgdmFsdWUgdG8gZGlzcGxheSBpbiB0aGUgY29sdW1uLlxuICAgICAqIFJ1bnMgaW4gZW52aXJvbm1lbnQgY29udGV4dCB0byBlbmFibGUgaW5qZWN0aW9uLlxuICAgICAqIEBwYXJhbSBlbnRpdHlJZCAtIFRoZSBpZCBvZiB0aGUgZW50aXR5IHRvIGdldCB0aGUgdmFsdWUgZnJvbS5cbiAgICAgKiBAcGFyYW0gZGlzcGxheUNvbHVtbiAtIFRoZSBkaXNwbGF5IGNvbHVtbiB0byBnZXQgdGhlIHZhbHVlIGZyb20uXG4gICAgICogQHJldHVybnMgVGhlIHZhbHVlIG9mIHRoZSBkaXNwbGF5IGNvbHVtbi5cbiAgICAgKi9cbiAgICBnZXREaXNwbGF5Q29sdW1uVmFsdWUoZW50aXR5SWQ6IHN0cmluZywgZGlzcGxheUNvbHVtbjogRGlzcGxheUNvbHVtbjxFbnRpdHlUeXBlPik6IHVua25vd24ge1xuICAgICAgICByZXR1cm4gcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuaW5qZWN0b3IsICgpID0+IHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB0eXBlc2NyaXB0L25vLXVuc2FmZS1hcmd1bWVudFxuICAgICAgICAgICAgcmV0dXJuIGRpc3BsYXlDb2x1bW4udmFsdWUodGhpcy5tZXRhZGF0YS5nZXRFbnRpdHlGb3JJZChlbnRpdHlJZCwgdGhpcy5hbGxSZWZlcmVuY2VkRW50aXRpZXMpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYXN5bmMgYWRkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLnByb3BlcnR5VmFsdWUgPSB0aGlzLnByb3BlcnR5VmFsdWUgPz8gW107XG4gICAgICAgIHRoaXMucHJvcGVydHlWYWx1ZS5wdXNoKExvZGFzaFV0aWxpdGllcy5jbG9uZURlZXAodGhpcy5pbnB1dCkpO1xuICAgICAgICBjb25zdCBmb3VuZERyb3Bkb3duVmFsdWU6IERyb3Bkb3duVmFsdWU8c3RyaW5nPiA9IHRoaXMuZHJvcGRvd25WYWx1ZXMuZmluZCh2ID0+IHYudmFsdWUgPT09IHRoaXMuaW5wdXQpIGFzIERyb3Bkb3duVmFsdWU8c3RyaW5nPjtcbiAgICAgICAgdGhpcy5kcm9wZG93blZhbHVlcy5zcGxpY2UodGhpcy5kcm9wZG93blZhbHVlcy5pbmRleE9mKGZvdW5kRHJvcGRvd25WYWx1ZSksIDEpO1xuICAgICAgICB0aGlzLmZpbHRlcmVkRHJvcGRvd25WYWx1ZXMgPSBMb2Rhc2hVdGlsaXRpZXMuY2xvbmVEZWVwKHRoaXMuZHJvcGRvd25WYWx1ZXMpO1xuICAgICAgICB0aGlzLnJlZmVyZW5jZWRFbnRpdGllc0RhdGFTb3VyY2UuZGF0YSA9IHRoaXMucHJvcGVydHlWYWx1ZTtcbiAgICAgICAgdGhpcy5pbnB1dCA9ICcnO1xuICAgICAgICB0aGlzLmVtaXRDaGFuZ2UoKTtcbiAgICB9XG5cbiAgICBhZGRBbGwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucHJvcGVydHlWYWx1ZSA9IHRoaXMuYWxsRHJvcGRvd25WYWx1ZXMubWFwKGR2ID0+IGR2LnZhbHVlKTtcbiAgICAgICAgaWYgKCF0aGlzLnByb3BlcnR5VmFsdWUubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnByb3BlcnR5VmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kcm9wZG93blZhbHVlcyA9IFtdO1xuICAgICAgICB0aGlzLmZpbHRlcmVkRHJvcGRvd25WYWx1ZXMgPSBMb2Rhc2hVdGlsaXRpZXMuY2xvbmVEZWVwKHRoaXMuZHJvcGRvd25WYWx1ZXMpO1xuICAgICAgICB0aGlzLnJlZmVyZW5jZWRFbnRpdGllc0RhdGFTb3VyY2UuZGF0YSA9IHRoaXMucHJvcGVydHlWYWx1ZSA/PyBbXTtcbiAgICAgICAgdGhpcy5pbnB1dCA9ICcnO1xuICAgICAgICB0aGlzLmVtaXRDaGFuZ2UoKTtcbiAgICB9XG5cbiAgICByZW1vdmUoKTogdm9pZCB7XG4gICAgICAgIGZvciAoY29uc3QgcyBvZiB0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZCkge1xuICAgICAgICAgICAgdGhpcy5wcm9wZXJ0eVZhbHVlPy5zcGxpY2UodGhpcy5wcm9wZXJ0eVZhbHVlLmluZGV4T2YocyksIDEpO1xuICAgICAgICAgICAgY29uc3QgZm91bmREcm9wZG93blZhbHVlOiBEcm9wZG93blZhbHVlPHN0cmluZz4gfCB1bmRlZmluZWQgPSB0aGlzLmFsbERyb3Bkb3duVmFsdWVzLmZpbmQodiA9PiB2LnZhbHVlID09PSBzKTtcbiAgICAgICAgICAgIGlmIChmb3VuZERyb3Bkb3duVmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRyb3Bkb3duVmFsdWVzLnB1c2goZm91bmREcm9wZG93blZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZpbHRlcmVkRHJvcGRvd25WYWx1ZXMgPSBMb2Rhc2hVdGlsaXRpZXMuY2xvbmVEZWVwKHRoaXMuZHJvcGRvd25WYWx1ZXMpO1xuICAgICAgICBpZiAoIXRoaXMucHJvcGVydHlWYWx1ZT8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnByb3BlcnR5VmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZWZlcmVuY2VkRW50aXRpZXNEYXRhU291cmNlLmRhdGEgPSB0aGlzLnByb3BlcnR5VmFsdWUgPz8gW107XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uLmNsZWFyKCk7XG4gICAgICAgIHRoaXMuaW5wdXQgPSAnJztcbiAgICAgICAgdGhpcy5lbWl0Q2hhbmdlKCk7XG4gICAgfVxufSIsIjwhLS0gZXNsaW50LWRpc2FibGUgYW5ndWxhci9uby1jYWxsLWV4cHJlc3Npb24gLS0+XG48ZGl2IGNsYXNzPVwibWF0LWVsZXZhdGlvbi16OCBlbGV2YXRpb24tY29udGFpbmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImFycmF5LWhlYWRsaW5lXCI+XG4gICAgICAgIDxiPnt7bWV0YWRhdGEuZGlzcGxheU5hbWV9fTwvYj5cbiAgICA8L2Rpdj5cblxuICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPG1hdC1sYWJlbD57e21ldGFkYXRhLmRyb3Bkb3duTGFiZWx9fTwvbWF0LWxhYmVsPlxuICAgICAgICA8bWF0LXNlbGVjdCAjaW5wdXRNb2RlbD1cIm5nTW9kZWxcIiBbbmFtZV09XCJuYW1lICsgJ2lucHV0J1wiIFtkaXNhYmxlZF09XCJpc1JlYWRPbmx5XCIgWyhuZ01vZGVsKV09XCJpbnB1dFwiIChvcGVuZWQpPVwic2VsZWN0U2VhcmNoSW5wdXQuZm9jdXMoKVwiPlxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwic2VsZWN0LXNlYXJjaC1pbnB1dFwiPlxuICAgICAgICAgICAgICAgIDwhLS0gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGFuZ3VsYXIvbm8tYW55IC0tPlxuICAgICAgICAgICAgICAgIDxpbnB1dCAjc2VsZWN0U2VhcmNoSW5wdXQgbWF0SW5wdXQgKGtleXVwKT1cImZpbHRlckRyb3Bkb3duVmFsdWVzKCRhbnkoJGV2ZW50LnRhcmdldCkudmFsdWUpXCI+XG4gICAgICAgICAgICAgICAgPGkgbWF0U3VmZml4IGNsYXNzPVwiZmFzIGZhLXNlYXJjaFwiPjwvaT5cbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8bWF0LW9wdGlvbj4tPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgQGlmIChzaG91bGREaXNwbGF5Q3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cImN1cnJlbnREcm9wZG93blZhbHVlPy52YWx1ZVwiPnt7Y3VycmVudERyb3Bkb3duVmFsdWU/LmRpc3BsYXlOYW1lfX08L21hdC1vcHRpb24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAZm9yICh2YWx1ZSBvZiBmaWx0ZXJlZERyb3Bkb3duVmFsdWVzOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwidmFsdWUudmFsdWVcIj57e3ZhbHVlLmRpc3BsYXlOYW1lfX08L21hdC1vcHRpb24+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgPG1hdC1lcnJvcj57e2dldFZhbGlkYXRpb25FcnJvck1lc3NhZ2UoaW5wdXRNb2RlbCl9fTwvbWF0LWVycm9yPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICBAaWYgKG1ldGFkYXRhLmFkZEFsbCkge1xuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAyMHB4O1wiIG1hdC1yYWlzZWQtYnV0dG9uIFtkaXNhYmxlZF09XCIhZHJvcGRvd25WYWx1ZXMubGVuZ3RoIHx8IGlzUmVhZE9ubHlcIiAoY2xpY2spPVwiYWRkQWxsKClcIj5cbiAgICAgICAgICAgIHt7bWV0YWRhdGEuYWRkQWxsQnV0dG9uTGFiZWx9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICB9XG5cbiAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uc1wiPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtcmFpc2VkLWJ1dHRvbiBbZGlzYWJsZWRdPVwiIWlucHV0XCIgKGNsaWNrKT1cImFkZCgpXCI+XG4gICAgICAgICAgICB7e21ldGFkYXRhLmFkZEJ1dHRvbkxhYmVsfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1yYWlzZWQtYnV0dG9uIFtkaXNhYmxlZF09XCIhc2VsZWN0aW9uLnNlbGVjdGVkLmxlbmd0aFwiIChjbGljayk9XCJyZW1vdmUoKVwiPlxuICAgICAgICAgICAge3ttZXRhZGF0YS5yZW1vdmVCdXR0b25MYWJlbH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPG1hdC10YWJsZSBbZGF0YVNvdXJjZV09XCJyZWZlcmVuY2VkRW50aXRpZXNEYXRhU291cmNlXCI+XG4gICAgICAgIDwhLS0gc2VsZWN0IENvbHVtbiAtLT5cbiAgICAgICAgQGlmICghaXNSZWFkT25seSkge1xuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJzZWxlY3RcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXJlZmVyZW5jZWRFbnRpdGllc0RhdGFTb3VyY2UuZGF0YS5sZW5ndGhcIiBbY2hlY2tlZF09XCJzZWxlY3Rpb24uaGFzVmFsdWUoKSAmJiBTZWxlY3Rpb25VdGlsaXRpZXMuaXNBbGxTZWxlY3RlZChzZWxlY3Rpb24sIHJlZmVyZW5jZWRFbnRpdGllc0RhdGFTb3VyY2UpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cInNlbGVjdGlvbi5oYXNWYWx1ZSgpICYmICFTZWxlY3Rpb25VdGlsaXRpZXMuaXNBbGxTZWxlY3RlZChzZWxlY3Rpb24sIHJlZmVyZW5jZWRFbnRpdGllc0RhdGFTb3VyY2UpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiJGV2ZW50ID8gU2VsZWN0aW9uVXRpbGl0aWVzLm1hc3RlclRvZ2dsZShzZWxlY3Rpb24sIHJlZmVyZW5jZWRFbnRpdGllc0RhdGFTb3VyY2UpIDogbnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1jaGVja2JveD5cbiAgICAgICAgICAgICAgICA8L21hdC1oZWFkZXItY2VsbD5cbiAgICAgICAgICAgICAgICA8bWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZW50aXR5XCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggW2NoZWNrZWRdPVwic2VsZWN0aW9uLmlzU2VsZWN0ZWQoZW50aXR5KVwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIiAoY2hhbmdlKT1cIiRldmVudCA/IHNlbGVjdGlvbi50b2dnbGUoZW50aXR5KSA6IG51bGxcIj48L21hdC1jaGVja2JveD5cbiAgICAgICAgICAgICAgICA8L21hdC1jZWxsPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIH1cblxuICAgICAgICBAZm9yIChkQ29sIG9mIG1ldGFkYXRhLmRpc3BsYXlDb2x1bW5zOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgW21hdENvbHVtbkRlZl09XCJkQ29sLmRpc3BsYXlOYW1lXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5cbiAgICAgICAgICAgICAgICAgICAge3tkQ29sLmRpc3BsYXlOYW1lfX1cbiAgICAgICAgICAgICAgICA8L21hdC1oZWFkZXItY2VsbD5cbiAgICAgICAgICAgICAgICA8bWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZW50aXR5SWRcIiBjbGFzcz1cImVudGl0eVwiPlxuICAgICAgICAgICAgICAgICAgICB7e2dldERpc3BsYXlDb2x1bW5WYWx1ZShlbnRpdHlJZCwgZENvbCl9fVxuICAgICAgICAgICAgICAgIDwvbWF0LWNlbGw+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgfVxuICAgIFxuICAgICAgICA8bWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImRpc3BsYXllZENvbHVtbnNcIj48L21hdC1oZWFkZXItcm93PlxuICAgICAgICA8bWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogZGlzcGxheWVkQ29sdW1uc1wiPjwvbWF0LXJvdz5cbiAgICA8L21hdC10YWJsZT5cbjwvZGl2PiJdfQ==
|
|
145
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmZXJlbmNlcy1tYW55LWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2NvbXBvbmVudHMvaW5wdXQvcmVsYXRpb25zL3JlZmVyZW5jZXMtbWFueS1pbnB1dC9yZWZlcmVuY2VzLW1hbnktaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY29tcG9uZW50cy9pbnB1dC9yZWxhdGlvbnMvcmVmZXJlbmNlcy1tYW55LWlucHV0L3JlZmVyZW5jZXMtbWFueS1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx3Q0FBd0M7QUFDeEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxFQUFVLHFCQUFxQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFrQixNQUFNLGtDQUFrQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUs3RCxPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSxnRkFBZ0YsQ0FBQztBQUN2SSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0s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U0FBUzsrQkFFSSx1QkFBdUIsY0FHckIsSUFBSSxXQUNQO3dCQUNMLGNBQWM7d0JBQ2Qsa0JBQWtCO3dCQUNsQixlQUFlO3dCQUNmLFdBQVc7d0JBQ1gsWUFBWTt3QkFDWixlQUFlO3dCQUNmLG9CQUFvQjt3QkFDcEIsZUFBZTtxQkFDbEI7OzBCQTRDSSxNQUFNOzJCQUFDLGtDQUFrQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGpzZG9jL3JlcXVpcmUtanNkb2MgKi9cbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEVudmlyb25tZW50SW5qZWN0b3IsIEluamVjdCwgT25Jbml0LCBydW5JbkluamVjdGlvbkNvbnRleHQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBNYXRTZWxlY3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xuaW1wb3J0IHsgRmFJY29uQ29tcG9uZW50LCBJY29uRGVmaW5pdGlvbiB9IGZyb20gJ0Bmb3J0YXdlc29tZS9hbmd1bGFyLWZvbnRhd2Vzb21lJztcbmltcG9ydCB7IGZhU2VhcmNoIH0gZnJvbSAnQGZvcnRhd2Vzb21lL2ZyZWUtc29saWQtc3ZnLWljb25zJztcblxuaW1wb3J0IHsgQmFzZUVudGl0eVR5cGUgfSBmcm9tICcuLi8uLi8uLi8uLi9jbGFzc2VzL2VudGl0eS5tb2RlbCc7XG5pbXBvcnQgeyBEZWNvcmF0b3JUeXBlcyB9IGZyb20gJy4uLy4uLy4uLy4uL2RlY29yYXRvcnMvYmFzZS9kZWNvcmF0b3ItdHlwZXMuZW51bSc7XG5pbXBvcnQgeyBEcm9wZG93blZhbHVlIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGVjb3JhdG9ycy9iYXNlL2Ryb3Bkb3duLXZhbHVlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBSZWZlcmVuY2VzTWFueURlY29yYXRvckNvbmZpZ0ludGVybmFsIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGVjb3JhdG9ycy9yZWZlcmVuY2VzLW1hbnkvcmVmZXJlbmNlcy1tYW55LWRlY29yYXRvci1pbnRlcm5hbC5kYXRhJztcbmltcG9ydCB7IExvZGFzaFV0aWxpdGllcyB9IGZyb20gJy4uLy4uLy4uLy4uL2VuY2Fwc3VsYXRpb24vbG9kYXNoLnV0aWxpdGllcyc7XG5pbXBvcnQgeyBSZWZsZWN0VXRpbGl0aWVzIH0gZnJvbSAnLi4vLi4vLi4vLi4vZW5jYXBzdWxhdGlvbi9yZWZsZWN0LnV0aWxpdGllcyc7XG5pbXBvcnQgeyBkZWZhdWx0RmFsc2UgfSBmcm9tICcuLi8uLi8uLi8uLi9mdW5jdGlvbnMvZGVmYXVsdC1mYWxzZS5mdW5jdGlvbic7XG5pbXBvcnQgeyBOR1hfQ09NUExFVEVfR0xPQkFMX0RFRkFVTFRfVkFMVUVTLCBOZ3hHbG9iYWxEZWZhdWx0VmFsdWVzIH0gZnJvbSAnLi4vLi4vLi4vLi4vZ2xvYmFsLWNvbmZpZ3VyYXRpb24tdmFsdWVzJztcbmltcG9ydCB7IEN1c3RvbVRhYmxlQ29uZmlndXJhdGlvbiB9IGZyb20gJy4uLy4uLy4uL2N1c3RvbS10YWJsZS9jdXN0b20tdGFibGUtY29uZmlndXJhdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBDdXN0b21UYWJsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2N1c3RvbS10YWJsZS9jdXN0b20tdGFibGUuY29tcG9uZW50JztcbmltcG9ydCB7IE5neE1hdEVudGl0eUJhc2VJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2Jhc2UtaW5wdXQuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGFuZ3VsYXIvY29tcG9uZW50LXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6ICdyZWZlcmVuY2VzLW1hbnktaW5wdXQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9yZWZlcmVuY2VzLW1hbnktaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3JlZmVyZW5jZXMtbWFueS1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICAgICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgICAgICBNYXRTZWxlY3RNb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICAgICAgQ3VzdG9tVGFibGVDb21wb25lbnQsXG4gICAgICAgIEZhSWNvbkNvbXBvbmVudFxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgUmVmZXJlbmNlc01hbnlJbnB1dENvbXBvbmVudDxFbnRpdHlUeXBlIGV4dGVuZHMgQmFzZUVudGl0eVR5cGU8RW50aXR5VHlwZT4+XG4gICAgZXh0ZW5kcyBOZ3hNYXRFbnRpdHlCYXNlSW5wdXRDb21wb25lbnQ8RW50aXR5VHlwZSwgRGVjb3JhdG9yVHlwZXMuUkVGRVJFTkNFU19NQU5ZLCBzdHJpbmdbXT4gaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgZmFTZWFyY2g6IEljb25EZWZpbml0aW9uID0gZmFTZWFyY2g7XG5cbiAgICBwcml2YXRlIGFsbFJlZmVyZW5jZWRFbnRpdGllczogRW50aXR5VHlwZVtdID0gW107XG5cbiAgICBwcml2YXRlIGFsbERyb3Bkb3duVmFsdWVzOiBEcm9wZG93blZhbHVlPHN0cmluZz5bXSA9IFtdO1xuICAgIGRyb3Bkb3duVmFsdWVzOiBEcm9wZG93blZhbHVlPHN0cmluZz5bXSA9IFtdO1xuICAgIGZpbHRlcmVkRHJvcGRvd25WYWx1ZXM6IERyb3Bkb3duVmFsdWU8c3RyaW5nPltdID0gW107XG5cbiAgICBpbnB1dDogc3RyaW5nID0gJyc7XG5cbiAgICBnZXQgY3VycmVudERyb3Bkb3duVmFsdWUoKTogRHJvcGRvd25WYWx1ZTxzdHJpbmc+IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIExvZGFzaFV0aWxpdGllcy5jbG9uZURlZXAodGhpcy5kcm9wZG93blZhbHVlcyA/PyBbXSlcbiAgICAgICAgICAgIC5maW5kKHYgPT4gdi52YWx1ZSA9PT0gdGhpcy5pbnB1dCk7XG4gICAgfVxuXG4gICAgZ2V0IHNob3VsZERpc3BsYXlDdXJyZW50VmFsdWUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuY3VycmVudERyb3Bkb3duVmFsdWUgJiYgIXRoaXMuZmlsdGVyZWREcm9wZG93blZhbHVlcy5maW5kKHYgPT4gdi52YWx1ZSA9PT0gdGhpcy5jdXJyZW50RHJvcGRvd25WYWx1ZT8udmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgdmFsdWVzLlxuICAgICAqL1xuICAgIHNlbGVjdGVkOiBzdHJpbmdbXSA9IFtdO1xuICAgIC8qKlxuICAgICAqIENvbmZpZ3VyYXRpb24gZm9yIHRoZSByZWZlcmVuY2VzIG1hbnkgdGFibGUuXG4gICAgICovXG4gICAgdGFibGVDb25maWchOiBDdXN0b21UYWJsZUNvbmZpZ3VyYXRpb247XG5cbiAgICBvdmVycmlkZSBnZXQgcHJvcGVydHlWYWx1ZSgpOiBzdHJpbmdbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVudGl0eVt0aGlzLmtleV0gYXMgc3RyaW5nW107XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgc2V0IHByb3BlcnR5VmFsdWUodmFsdWU6IHN0cmluZ1tdKSB7XG4gICAgICAgICh0aGlzLmVudGl0eVt0aGlzLmtleV0gYXMgc3RyaW5nW10pID0gdmFsdWU7XG4gICAgICAgIHRoaXMubWV0YWRhdGEuY2hhbmdlPy4odGhpcy5lbnRpdHkpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yOiBFbnZpcm9ubWVudEluamVjdG9yLFxuICAgICAgICBASW5qZWN0KE5HWF9DT01QTEVURV9HTE9CQUxfREVGQVVMVF9WQUxVRVMpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZ2xvYmFsQ29uZmlnOiBOZ3hHbG9iYWxEZWZhdWx0VmFsdWVzXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIHRoaXMucHJvcGVydHlWYWx1ZSA9IHRoaXMucHJvcGVydHlWYWx1ZSA/PyBbXTtcbiAgICAgICAgdGhpcy5tZXRhZGF0YSA9IG5ldyBSZWZlcmVuY2VzTWFueURlY29yYXRvckNvbmZpZ0ludGVybmFsKHRoaXMubWV0YWRhdGEsIHRoaXMuZ2xvYmFsQ29uZmlnKTtcbiAgICAgICAgUmVmbGVjdFV0aWxpdGllcy5kZWZpbmVNZXRhZGF0YSgnbWV0YWRhdGEnLCB0aGlzLm1ldGFkYXRhLCB0aGlzLmVudGl0eSwgdGhpcy5rZXkpO1xuXG4gICAgICAgIHRoaXMudGFibGVDb25maWcgPSB7XG4gICAgICAgICAgICBhbGxvd0NsaWNrOiBkZWZhdWx0RmFsc2UsXG4gICAgICAgICAgICBkaXNwbGF5Q29sdW1uczogdGhpcy5tZXRhZGF0YS5kaXNwbGF5Q29sdW1ucyxcbiAgICAgICAgICAgIHdpdGhTZWxlY3Rpb246ICF0aGlzLmlzUmVhZE9ubHksXG4gICAgICAgICAgICBkeW5hbWljUm93U3R5bGVDbGFzc2VzOiB0aGlzLm1ldGFkYXRhLmR5bmFtaWNSb3dTdHlsZUNsYXNzZXMsXG4gICAgICAgICAgICBlbXB0eUVycm9yTWVzc2FnZTogdGhpcy5tZXRhZGF0YS5lbXB0eUVycm9yTWVzc2FnZSxcbiAgICAgICAgICAgIHJlc29sdmVUb1JlZmVyZW5jZWRFbnRpdHk6IChpZCkgPT4gdGhpcy5tZXRhZGF0YS5nZXRFbnRpdHlGb3JJZChpZCBhcyBzdHJpbmcsIHRoaXMuYWxsUmVmZXJlbmNlZEVudGl0aWVzKSBhcyBFbnRpdHlUeXBlXG4gICAgICAgIH07XG5cbiAgICAgICAgdm9pZCBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5pbmplY3RvciwgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5hbGxSZWZlcmVuY2VkRW50aXRpZXMgPSBhd2FpdCB0aGlzLm1ldGFkYXRhLmdldFJlZmVyZW5jZWRFbnRpdGllcygpIGFzIEVudGl0eVR5cGVbXTtcbiAgICAgICAgICAgIHRoaXMuYWxsRHJvcGRvd25WYWx1ZXMgPSB0aGlzLm1ldGFkYXRhLmdldERyb3Bkb3duVmFsdWVzKExvZGFzaFV0aWxpdGllcy5jbG9uZURlZXAodGhpcy5hbGxSZWZlcmVuY2VkRW50aXRpZXMpKTtcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd25WYWx1ZXMgPSBMb2Rhc2hVdGlsaXRpZXMuY2xvbmVEZWVwKHRoaXMuYWxsRHJvcGRvd25WYWx1ZXMpO1xuICAgICAgICAgICAgZm9yIChjb25zdCB2YWx1ZSBvZiB0aGlzLnByb3BlcnR5VmFsdWUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmb3VuZFZhbHVlOiBEcm9wZG93blZhbHVlPHN0cmluZz4gfCB1bmRlZmluZWQgPSB0aGlzLmRyb3Bkb3duVmFsdWVzLmZpbmQodiA9PiB2LnZhbHVlID09PSB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgaWYgKGZvdW5kVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcm9wZG93blZhbHVlcy5zcGxpY2UodGhpcy5kcm9wZG93blZhbHVlcy5pbmRleE9mKGZvdW5kVmFsdWUpLCAxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmZpbHRlcmVkRHJvcGRvd25WYWx1ZXMgPSBMb2Rhc2hVdGlsaXRpZXMuY2xvbmVEZWVwKHRoaXMuZHJvcGRvd25WYWx1ZXMpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGaWx0ZXJzIHRoZSBkcm9wZG93biB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHNlYXJjaElucHV0IC0gVGhlIHNlYXJjaCBpbnB1dCB0byBmaWx0ZXIgZm9yLlxuICAgICAqL1xuICAgIGZpbHRlckRyb3Bkb3duVmFsdWVzKHNlYXJjaElucHV0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZmlsdGVyOiBzdHJpbmcgPSBzZWFyY2hJbnB1dC50b0xvd2VyQ2FzZSgpO1xuICAgICAgICB0aGlzLmZpbHRlcmVkRHJvcGRvd25WYWx1ZXMgPSBMb2Rhc2hVdGlsaXRpZXMuY2xvbmVEZWVwKHRoaXMuZHJvcGRvd25WYWx1ZXMpLmZpbHRlcihvcHRpb24gPT4ge1xuICAgICAgICAgICAgcmV0dXJuIG9wdGlvbi5kaXNwbGF5TmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGZpbHRlcikgfHwgb3B0aW9uLnZhbHVlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYWRkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnByb3BlcnR5VmFsdWUucHVzaChMb2Rhc2hVdGlsaXRpZXMuY2xvbmVEZWVwKHRoaXMuaW5wdXQpKTtcbiAgICAgICAgdGhpcy5wcm9wZXJ0eVZhbHVlID0gWy4uLnRoaXMucHJvcGVydHlWYWx1ZV07XG4gICAgICAgIGNvbnN0IGZvdW5kRHJvcGRvd25WYWx1ZTogRHJvcGRvd25WYWx1ZTxzdHJpbmc+ID0gdGhpcy5kcm9wZG93blZhbHVlcy5maW5kKHYgPT4gdi52YWx1ZSA9PT0gdGhpcy5pbnB1dCkgYXMgRHJvcGRvd25WYWx1ZTxzdHJpbmc+O1xuICAgICAgICB0aGlzLmRyb3Bkb3duVmFsdWVzLnNwbGljZSh0aGlzLmRyb3Bkb3duVmFsdWVzLmluZGV4T2YoZm91bmREcm9wZG93blZhbHVlKSwgMSk7XG4gICAgICAgIHRoaXMuZmlsdGVyZWREcm9wZG93blZhbHVlcyA9IExvZGFzaFV0aWxpdGllcy5jbG9uZURlZXAodGhpcy5kcm9wZG93blZhbHVlcyk7XG4gICAgICAgIHRoaXMuaW5wdXQgPSAnJztcbiAgICAgICAgdGhpcy5lbWl0Q2hhbmdlKCk7XG4gICAgfVxuXG4gICAgYWRkQWxsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnByb3BlcnR5VmFsdWUgPSB0aGlzLmFsbERyb3Bkb3duVmFsdWVzLm1hcChkdiA9PiBkdi52YWx1ZSk7XG4gICAgICAgIHRoaXMuZHJvcGRvd25WYWx1ZXMgPSBbXTtcbiAgICAgICAgdGhpcy5maWx0ZXJlZERyb3Bkb3duVmFsdWVzID0gTG9kYXNoVXRpbGl0aWVzLmNsb25lRGVlcCh0aGlzLmRyb3Bkb3duVmFsdWVzKTtcbiAgICAgICAgdGhpcy5pbnB1dCA9ICcnO1xuICAgICAgICB0aGlzLmVtaXRDaGFuZ2UoKTtcbiAgICB9XG5cbiAgICByZW1vdmUoKTogdm9pZCB7XG4gICAgICAgIGZvciAoY29uc3QgcyBvZiB0aGlzLnNlbGVjdGVkKSB7XG4gICAgICAgICAgICB0aGlzLnByb3BlcnR5VmFsdWUuc3BsaWNlKHRoaXMucHJvcGVydHlWYWx1ZS5pbmRleE9mKHMpLCAxKTtcbiAgICAgICAgICAgIGNvbnN0IGZvdW5kRHJvcGRvd25WYWx1ZTogRHJvcGRvd25WYWx1ZTxzdHJpbmc+IHwgdW5kZWZpbmVkID0gdGhpcy5hbGxEcm9wZG93blZhbHVlcy5maW5kKHYgPT4gdi52YWx1ZSA9PT0gcyk7XG4gICAgICAgICAgICBpZiAoZm91bmREcm9wZG93blZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kcm9wZG93blZhbHVlcy5wdXNoKGZvdW5kRHJvcGRvd25WYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wcm9wZXJ0eVZhbHVlID0gWy4uLnRoaXMucHJvcGVydHlWYWx1ZV07XG4gICAgICAgIHRoaXMuZmlsdGVyZWREcm9wZG93blZhbHVlcyA9IExvZGFzaFV0aWxpdGllcy5jbG9uZURlZXAodGhpcy5kcm9wZG93blZhbHVlcyk7XG4gICAgICAgIHRoaXMuaW5wdXQgPSAnJztcbiAgICAgICAgdGhpcy5lbWl0Q2hhbmdlKCk7XG4gICAgfVxufSIsIjwhLS0gZXNsaW50LWRpc2FibGUgYW5ndWxhci9uby1jYWxsLWV4cHJlc3Npb24gLS0+XG48ZGl2IGNsYXNzPVwibWF0LWVsZXZhdGlvbi16OCBlbGV2YXRpb24tY29udGFpbmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImFycmF5LWhlYWRsaW5lXCI+XG4gICAgICAgIDxiPnt7bWV0YWRhdGEuZGlzcGxheU5hbWV9fTwvYj5cbiAgICA8L2Rpdj5cblxuICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPG1hdC1sYWJlbD57e21ldGFkYXRhLmRyb3Bkb3duTGFiZWx9fTwvbWF0LWxhYmVsPlxuICAgICAgICA8bWF0LXNlbGVjdCAjaW5wdXRNb2RlbD1cIm5nTW9kZWxcIiBbbmFtZV09XCJuYW1lICsgJ2lucHV0J1wiIFtkaXNhYmxlZF09XCJpc1JlYWRPbmx5XCIgWyhuZ01vZGVsKV09XCJpbnB1dFwiIChvcGVuZWQpPVwic2VsZWN0U2VhcmNoSW5wdXQuZm9jdXMoKVwiPlxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwic2VsZWN0LXNlYXJjaC1pbnB1dFwiPlxuICAgICAgICAgICAgICAgIDwhLS0gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGFuZ3VsYXIvbm8tYW55IC0tPlxuICAgICAgICAgICAgICAgIDxpbnB1dCAjc2VsZWN0U2VhcmNoSW5wdXQgbWF0SW5wdXQgKGtleXVwKT1cImZpbHRlckRyb3Bkb3duVmFsdWVzKCRhbnkoJGV2ZW50LnRhcmdldCkudmFsdWUpXCI+XG4gICAgICAgICAgICAgICAgPGZhLWljb24gbWF0U3VmZml4IFtpY29uXT1cImZhU2VhcmNoXCI+PC9mYS1pY29uPlxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxtYXQtb3B0aW9uPi08L21hdC1vcHRpb24+XG4gICAgICAgICAgICBAaWYgKHNob3VsZERpc3BsYXlDdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiY3VycmVudERyb3Bkb3duVmFsdWU/LnZhbHVlXCI+e3tjdXJyZW50RHJvcGRvd25WYWx1ZT8uZGlzcGxheU5hbWV9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBmb3IgKHZhbHVlIG9mIGZpbHRlcmVkRHJvcGRvd25WYWx1ZXM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJ2YWx1ZS52YWx1ZVwiPnt7dmFsdWUuZGlzcGxheU5hbWV9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICA8bWF0LWVycm9yPnt7Z2V0VmFsaWRhdGlvbkVycm9yTWVzc2FnZShpbnB1dE1vZGVsKX19PC9tYXQtZXJyb3I+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgIEBpZiAobWV0YWRhdGEuYWRkQWxsKSB7XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDIwcHg7XCIgbWF0LXJhaXNlZC1idXR0b24gW2Rpc2FibGVkXT1cIiFkcm9wZG93blZhbHVlcy5sZW5ndGggfHwgaXNSZWFkT25seVwiIChjbGljayk9XCJhZGRBbGwoKVwiPlxuICAgICAgICAgICAge3ttZXRhZGF0YS5hZGRBbGxCdXR0b25MYWJlbH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIH1cblxuICAgIDxkaXYgY2xhc3M9XCJidXR0b25zXCI+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1yYWlzZWQtYnV0dG9uIFtkaXNhYmxlZF09XCIhaW5wdXRcIiAoY2xpY2spPVwiYWRkKClcIj5cbiAgICAgICAgICAgIHt7bWV0YWRhdGEuYWRkQnV0dG9uTGFiZWx9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LXJhaXNlZC1idXR0b24gW2Rpc2FibGVkXT1cIiFzZWxlY3RlZC5sZW5ndGhcIiAoY2xpY2spPVwicmVtb3ZlKClcIj5cbiAgICAgICAgICAgIHt7bWV0YWRhdGEucmVtb3ZlQnV0dG9uTGFiZWx9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxjdXN0b20tdGFibGVcbiAgICAgICAgW2NvbmZpZ3VyYXRpb25dPVwidGFibGVDb25maWdcIlxuICAgICAgICBbZGF0YV09XCJwcm9wZXJ0eVZhbHVlXCJcbiAgICAgICAgKHNlbGVjdGlvbkNoYW5nZWQpPVwic2VsZWN0ZWQgPSAkYW55KCRldmVudClcIlxuICAgID5cbiAgICA8L2N1c3RvbS10YWJsZT5cbjwvZGl2PiJdfQ==
|