@ecodev/natural 61.0.0 → 61.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/classes/abstract-detail.mjs +36 -33
- package/esm2022/lib/classes/abstract-editable-list.mjs +8 -6
- package/esm2022/lib/classes/abstract-list.mjs +74 -55
- package/esm2022/lib/classes/abstract-navigable-list.mjs +9 -9
- package/esm2022/lib/classes/cumulative-changes.mjs +3 -5
- package/esm2022/lib/classes/data-source.mjs +3 -2
- package/esm2022/lib/classes/query-variable-manager.mjs +3 -3
- package/esm2022/lib/directives/http-prefix.directive.mjs +4 -6
- package/esm2022/lib/modules/alert/alert.service.mjs +9 -11
- package/esm2022/lib/modules/alert/confirm.component.mjs +6 -11
- package/esm2022/lib/modules/avatar/component/avatar.component.mjs +25 -23
- package/esm2022/lib/modules/avatar/service/avatar.service.mjs +22 -24
- package/esm2022/lib/modules/avatar/sources/source.mjs +2 -1
- package/esm2022/lib/modules/columns-picker/columns-picker.component.mjs +26 -28
- package/esm2022/lib/modules/columns-picker/public-api.mjs +1 -1
- package/esm2022/lib/modules/common/directives/background-density.directive.mjs +6 -8
- package/esm2022/lib/modules/common/directives/linkable-tab.directive.mjs +18 -19
- package/esm2022/lib/modules/common/directives/src-density.directive.mjs +6 -8
- package/esm2022/lib/modules/common/pipes/capitalize.pipe.mjs +3 -3
- package/esm2022/lib/modules/common/pipes/ellipsis.pipe.mjs +3 -3
- package/esm2022/lib/modules/common/pipes/enum.pipe.mjs +7 -9
- package/esm2022/lib/modules/common/pipes/time-ago.pipe.mjs +4 -3
- package/esm2022/lib/modules/common/public-api.mjs +2 -2
- package/esm2022/lib/modules/common/services/memory-storage.mjs +4 -6
- package/esm2022/lib/modules/common/services/seo.service.mjs +18 -26
- package/esm2022/lib/modules/detail-header/detail-header.component.mjs +38 -33
- package/esm2022/lib/modules/dialog-trigger/dialog-trigger.component.mjs +13 -11
- package/esm2022/lib/modules/dropdown-components/abstract-association-select-component.directive.mjs +13 -12
- package/esm2022/lib/modules/dropdown-components/public-api.mjs +3 -3
- package/esm2022/lib/modules/dropdown-components/type-boolean/type-boolean.component.mjs +10 -13
- package/esm2022/lib/modules/dropdown-components/type-date/type-date.component.mjs +29 -33
- package/esm2022/lib/modules/dropdown-components/type-date-range/type-date-range.component.mjs +27 -32
- package/esm2022/lib/modules/dropdown-components/type-hierarchic-selector/type-hierarchic-selector.component.mjs +3 -3
- package/esm2022/lib/modules/dropdown-components/type-natural-select/type-natural-select.component.mjs +3 -3
- package/esm2022/lib/modules/dropdown-components/type-number/type-number.component.mjs +29 -30
- package/esm2022/lib/modules/dropdown-components/type-options/type-options.component.mjs +17 -15
- package/esm2022/lib/modules/dropdown-components/type-select/type-select.component.mjs +25 -25
- package/esm2022/lib/modules/dropdown-components/type-text/type-text.component.mjs +15 -17
- package/esm2022/lib/modules/file/abstract-file.mjs +51 -47
- package/esm2022/lib/modules/file/component/file.component.mjs +51 -41
- package/esm2022/lib/modules/file/file-drop.directive.mjs +10 -13
- package/esm2022/lib/modules/file/file-select.directive.mjs +9 -12
- package/esm2022/lib/modules/file/file.service.mjs +15 -20
- package/esm2022/lib/modules/file/public-api.mjs +1 -1
- package/esm2022/lib/modules/fixed-button/fixed-button.component.mjs +7 -8
- package/esm2022/lib/modules/fixed-button-detail/fixed-button-detail.component.mjs +15 -12
- package/esm2022/lib/modules/hierarchic-selector/classes/flat-node.mjs +8 -2
- package/esm2022/lib/modules/hierarchic-selector/classes/model-node.mjs +4 -2
- package/esm2022/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.component.mjs +71 -55
- package/esm2022/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.service.mjs +18 -20
- package/esm2022/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.component.mjs +17 -11
- package/esm2022/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.service.mjs +7 -9
- package/esm2022/lib/modules/icon/icon.directive.mjs +15 -23
- package/esm2022/lib/modules/logger/error-handler.mjs +11 -25
- package/esm2022/lib/modules/logger/public-api.mjs +2 -2
- package/esm2022/lib/modules/matomo/matomo.service.mjs +15 -22
- package/esm2022/lib/modules/panels/abstract-panel.mjs +23 -19
- package/esm2022/lib/modules/panels/panels.component.mjs +10 -9
- package/esm2022/lib/modules/panels/panels.service.mjs +56 -52
- package/esm2022/lib/modules/relations/relations.component.mjs +74 -45
- package/esm2022/lib/modules/search/dropdown-container/dropdown-container.component.mjs +21 -22
- package/esm2022/lib/modules/search/dropdown-container/dropdown-ref.mjs +4 -2
- package/esm2022/lib/modules/search/dropdown-container/dropdown.service.mjs +8 -11
- package/esm2022/lib/modules/search/facet-selector/facet-selector.component.mjs +13 -18
- package/esm2022/lib/modules/search/group/group.component.mjs +12 -11
- package/esm2022/lib/modules/search/input/input.component.mjs +86 -73
- package/esm2022/lib/modules/search/public-api.mjs +1 -1
- package/esm2022/lib/modules/search/search/search.component.mjs +37 -40
- package/esm2022/lib/modules/select/abstract-select.component.mjs +66 -39
- package/esm2022/lib/modules/select/select/select.component.mjs +51 -48
- package/esm2022/lib/modules/select/select-enum/select-enum.component.mjs +32 -22
- package/esm2022/lib/modules/select/select-hierarchic/select-hierarchic.component.mjs +39 -34
- package/esm2022/lib/modules/sidenav/sidenav/sidenav.component.mjs +3 -3
- package/esm2022/lib/modules/sidenav/sidenav-container/sidenav-container.component.mjs +34 -29
- package/esm2022/lib/modules/sidenav/sidenav-content/sidenav-content.component.mjs +3 -3
- package/esm2022/lib/modules/sidenav/sidenav-stack.service.mjs +13 -15
- package/esm2022/lib/modules/sidenav/sidenav.service.mjs +47 -54
- package/esm2022/lib/modules/stamp/stamp.component.mjs +4 -3
- package/esm2022/lib/modules/table-button/table-button.component.mjs +16 -13
- package/esm2022/lib/services/abstract-model.service.mjs +17 -7
- package/esm2022/lib/services/debounce.service.mjs +7 -9
- package/esm2022/lib/services/enum.service.mjs +7 -10
- package/esm2022/lib/services/link-mutation.service.mjs +11 -10
- package/esm2022/lib/services/persistence.service.mjs +9 -21
- package/esm2022/lib/services/swiss-parsing-date-adapter.service.mjs +3 -3
- package/esm2022/public-api.mjs +2 -2
- package/fesm2022/ecodev-natural.mjs +1357 -1270
- package/fesm2022/ecodev-natural.mjs.map +1 -1
- package/lib/modules/alert/alert.service.d.ts +1 -3
- package/lib/modules/alert/confirm.component.d.ts +1 -2
- package/lib/modules/avatar/component/avatar.component.d.ts +0 -2
- package/lib/modules/columns-picker/columns-picker.component.d.ts +1 -3
- package/lib/modules/columns-picker/public-api.d.ts +1 -1
- package/lib/modules/common/directives/background-density.directive.d.ts +0 -2
- package/lib/modules/common/directives/linkable-tab.directive.d.ts +2 -4
- package/lib/modules/common/directives/src-density.directive.d.ts +0 -2
- package/lib/modules/common/pipes/enum.pipe.d.ts +0 -2
- package/lib/modules/common/public-api.d.ts +2 -1
- package/lib/modules/common/services/seo.service.d.ts +2 -3
- package/lib/modules/dialog-trigger/dialog-trigger.component.d.ts +3 -3
- package/lib/modules/dropdown-components/public-api.d.ts +9 -9
- package/lib/modules/dropdown-components/type-boolean/type-boolean.component.d.ts +1 -3
- package/lib/modules/dropdown-components/type-date/type-date.component.d.ts +1 -3
- package/lib/modules/dropdown-components/type-date-range/type-date-range.component.d.ts +2 -3
- package/lib/modules/dropdown-components/type-number/type-number.component.d.ts +1 -2
- package/lib/modules/dropdown-components/type-options/type-options.component.d.ts +3 -3
- package/lib/modules/dropdown-components/type-select/type-select.component.d.ts +1 -2
- package/lib/modules/dropdown-components/type-text/type-text.component.d.ts +1 -2
- package/lib/modules/file/component/file.component.d.ts +0 -3
- package/lib/modules/file/file.service.d.ts +0 -1
- package/lib/modules/file/public-api.d.ts +1 -1
- package/lib/modules/fixed-button-detail/fixed-button-detail.component.d.ts +1 -2
- package/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.component.d.ts +2 -3
- package/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.service.d.ts +0 -2
- package/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.component.d.ts +1 -2
- package/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.service.d.ts +1 -2
- package/lib/modules/icon/icon.directive.d.ts +3 -5
- package/lib/modules/logger/error-handler.d.ts +3 -4
- package/lib/modules/logger/public-api.d.ts +2 -1
- package/lib/modules/matomo/matomo.service.d.ts +2 -5
- package/lib/modules/panels/panels.component.d.ts +1 -3
- package/lib/modules/panels/panels.service.d.ts +2 -6
- package/lib/modules/relations/relations.component.d.ts +3 -5
- package/lib/modules/search/dropdown-container/dropdown-container.component.d.ts +3 -4
- package/lib/modules/search/dropdown-container/dropdown.service.d.ts +1 -3
- package/lib/modules/search/facet-selector/facet-selector.component.d.ts +1 -2
- package/lib/modules/search/input/input.component.d.ts +1 -3
- package/lib/modules/search/public-api.d.ts +5 -5
- package/lib/modules/search/search/search.component.d.ts +0 -2
- package/lib/modules/select/select-enum/select-enum.component.d.ts +4 -4
- package/lib/modules/select/select-hierarchic/select-hierarchic.component.d.ts +4 -4
- package/lib/modules/sidenav/sidenav-container/sidenav-container.component.d.ts +0 -1
- package/lib/modules/sidenav/sidenav.service.d.ts +2 -7
- package/lib/services/enum.service.d.ts +0 -2
- package/lib/services/link-mutation.service.d.ts +0 -2
- package/lib/services/persistence.service.d.ts +2 -4
- package/package.json +1 -1
- package/public-api.d.ts +3 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component, DestroyRef, inject,
|
|
1
|
+
import { Component, DestroyRef, inject, ViewChild } from '@angular/core';
|
|
2
2
|
import { MatListModule, MatSelectionList } from '@angular/material/list';
|
|
3
3
|
import { BehaviorSubject, merge, of } from 'rxjs';
|
|
4
4
|
import { NATURAL_DROPDOWN_DATA } from '../../search/dropdown-container/dropdown.service';
|
|
@@ -16,23 +16,26 @@ import * as i3 from "@angular/material/select";
|
|
|
16
16
|
import * as i4 from "@angular/material/core";
|
|
17
17
|
import * as i5 from "@angular/material/list";
|
|
18
18
|
export class TypeSelectComponent {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
19
|
+
destroyRef = inject(DestroyRef);
|
|
20
|
+
renderedValue = new BehaviorSubject('');
|
|
21
|
+
list;
|
|
22
|
+
requireValueCtrl = false;
|
|
23
|
+
operators = possibleDiscreteOperators;
|
|
24
|
+
operatorCtrl = new FormControl('is', { nonNullable: true });
|
|
25
|
+
valueCtrl = new FormControl();
|
|
26
|
+
form = new FormGroup({
|
|
27
|
+
operator: this.operatorCtrl,
|
|
28
|
+
value: this.valueCtrl,
|
|
29
|
+
});
|
|
30
|
+
items = [];
|
|
31
|
+
configuration;
|
|
32
|
+
defaults = {
|
|
33
|
+
items: [],
|
|
34
|
+
multiple: true,
|
|
35
|
+
operators: true,
|
|
36
|
+
};
|
|
37
|
+
constructor() {
|
|
38
|
+
const data = inject(NATURAL_DROPDOWN_DATA);
|
|
36
39
|
this.configuration = { ...this.defaults, ...data.configuration };
|
|
37
40
|
// Immediately initValidators and everytime the operator change later
|
|
38
41
|
this.operatorCtrl.valueChanges.pipe(startWith(null)).subscribe(() => this.initValidators());
|
|
@@ -159,17 +162,14 @@ export class TypeSelectComponent {
|
|
|
159
162
|
throw new Error('Unsupported operator key: ' + key);
|
|
160
163
|
}
|
|
161
164
|
}
|
|
162
|
-
static
|
|
163
|
-
static
|
|
165
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: TypeSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
166
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: TypeSelectComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "list", first: true, predicate: MatSelectionList, descendants: true }], ngImport: i0, template: "<form [formGroup]=\"form\">\n @if (configuration.operators) {\n <mat-form-field style=\"max-width: 7em; margin-right: 1em\">\n <mat-label i18n=\"Mathematical operator < > =\">Op\u00E9rateur</mat-label>\n <mat-select [formControl]=\"operatorCtrl\" [required]=\"true\" panelWidth=\"\">\n @for (item of operators; track item) {\n <mat-option [value]=\"item.key\">\n {{ item.label }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n }\n\n @if (requireValueCtrl) {\n <mat-selection-list [formControl]=\"valueCtrl\">\n @for (item of items; track item) {\n <mat-list-option [value]=\"getId(item)\" togglePosition=\"before\">\n {{ getDisplay(item) }}\n </mat-list-option>\n }\n </mat-selection-list>\n }\n</form>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatFormFieldModule }, { 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: "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: MatOptionModule }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i5.MatSelectionList, selector: "mat-selection-list", inputs: ["color", "compareWith", "multiple", "hideSingleSelectionIndicator", "disabled"], outputs: ["selectionChange"], exportAs: ["matSelectionList"] }, { kind: "component", type: i5.MatListOption, selector: "mat-list-option", inputs: ["togglePosition", "checkboxPosition", "color", "value", "selected"], outputs: ["selectedChange"], exportAs: ["matListOption"] }] });
|
|
164
167
|
}
|
|
165
168
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: TypeSelectComponent, decorators: [{
|
|
166
169
|
type: Component,
|
|
167
170
|
args: [{ standalone: true, imports: [FormsModule, ReactiveFormsModule, MatFormFieldModule, MatSelectModule, MatOptionModule, MatListModule], template: "<form [formGroup]=\"form\">\n @if (configuration.operators) {\n <mat-form-field style=\"max-width: 7em; margin-right: 1em\">\n <mat-label i18n=\"Mathematical operator < > =\">Op\u00E9rateur</mat-label>\n <mat-select [formControl]=\"operatorCtrl\" [required]=\"true\" panelWidth=\"\">\n @for (item of operators; track item) {\n <mat-option [value]=\"item.key\">\n {{ item.label }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n }\n\n @if (requireValueCtrl) {\n <mat-selection-list [formControl]=\"valueCtrl\">\n @for (item of items; track item) {\n <mat-list-option [value]=\"getId(item)\" togglePosition=\"before\">\n {{ getDisplay(item) }}\n </mat-list-option>\n }\n </mat-selection-list>\n }\n</form>\n" }]
|
|
168
|
-
}], ctorParameters: () => [
|
|
169
|
-
type: Inject,
|
|
170
|
-
args: [NATURAL_DROPDOWN_DATA]
|
|
171
|
-
}] }], propDecorators: { list: [{
|
|
171
|
+
}], ctorParameters: () => [], propDecorators: { list: [{
|
|
172
172
|
type: ViewChild,
|
|
173
173
|
args: [MatSelectionList, { static: false }]
|
|
174
174
|
}] } });
|
|
175
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS1zZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL21vZHVsZXMvZHJvcGRvd24tY29tcG9uZW50cy90eXBlLXNlbGVjdC90eXBlLXNlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsL3NyYy9saWIvbW9kdWxlcy9kcm9wZG93bi1jb21wb25lbnRzL3R5cGUtc2VsZWN0L3R5cGUtc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUMsYUFBYSxFQUFFLGdCQUFnQixFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDdkUsT0FBTyxFQUFDLGVBQWUsRUFBRSxLQUFLLEVBQWMsRUFBRSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRTVELE9BQU8sRUFBQyxxQkFBcUIsRUFBc0IsTUFBTSxrREFBa0QsQ0FBQztBQUU1RyxPQUFPLEVBQUMsV0FBVyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQWUsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDakgsT0FBTyxFQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQStCLHlCQUF5QixFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ2pGLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFDLGtC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QUFFLGFBQWEsQ0FBQzs7MEJBd0I1RixNQUFNOzJCQUFDLHFCQUFxQjt5Q0FuQkssSUFBSTtzQkFBeEQsU0FBUzt1QkFBQyxnQkFBZ0IsRUFBRSxFQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRGVzdHJveVJlZiwgaW5qZWN0LCBJbmplY3QsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01hdExpc3RNb2R1bGUsIE1hdFNlbGVjdGlvbkxpc3R9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xpc3QnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIG1lcmdlLCBPYnNlcnZhYmxlLCBvZn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0ZpbHRlckdyb3VwQ29uZGl0aW9uRmllbGQsIFNjYWxhcn0gZnJvbSAnLi4vLi4vc2VhcmNoL2NsYXNzZXMvZ3JhcGhxbC1kb2N0cmluZS50eXBlcyc7XG5pbXBvcnQge05BVFVSQUxfRFJPUERPV05fREFUQSwgTmF0dXJhbERyb3Bkb3duRGF0YX0gZnJvbSAnLi4vLi4vc2VhcmNoL2Ryb3Bkb3duLWNvbnRhaW5lci9kcm9wZG93bi5zZXJ2aWNlJztcbmltcG9ydCB7RHJvcGRvd25Db21wb25lbnR9IGZyb20gJy4uLy4uL3NlYXJjaC90eXBlcy9kcm9wZG93bi1jb21wb25lbnQnO1xuaW1wb3J0IHtGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVmFsaWRhdG9yRm4sIFZhbGlkYXRvcnN9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7bWFwLCBzdGFydFdpdGh9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7UG9zc2libGVEaXNjcmV0ZU9wZXJhdG9yS2V5cywgcG9zc2libGVEaXNjcmV0ZU9wZXJhdG9yc30gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtNYXRPcHRpb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHtNYXRTZWxlY3RNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XG5pbXBvcnQge01hdEZvcm1GaWVsZE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQge3Rha2VVbnRpbERlc3Ryb3llZH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5leHBvcnQgdHlwZSBUeXBlU2VsZWN0SXRlbSA9XG4gICAgfCBTY2FsYXJcbiAgICB8IHtcbiAgICAgICAgICBpZDogU2NhbGFyO1xuICAgICAgICAgIG5hbWU6IFNjYWxhcjtcbiAgICAgIH1cbiAgICB8IHtcbiAgICAgICAgICB2YWx1ZTogU2NhbGFyO1xuICAgICAgICAgIG5hbWU6IFNjYWxhcjtcbiAgICAgIH07XG5cbmV4cG9ydCB0eXBlIFR5cGVTZWxlY3RDb25maWd1cmF0aW9uID0ge1xuICAgIGl0ZW1zOiBUeXBlU2VsZWN0SXRlbVtdIHwgT2JzZXJ2YWJsZTxUeXBlU2VsZWN0SXRlbVtdPjtcbiAgICBtdWx0aXBsZT86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogSWYgdHJ1ZSAoZGVmYXVsdCkgYSBzZWxlY3Rib3ggYWxsb3dzIHRvIGNob29zZSBhbiBvcGVyYXRvci4gT3RoZXJ3aXNlLCB0aGUgc2VsZWN0Ym94IGlzIGhpZGRlbiBhbmQgdGhlIG9wZXJhdG9yIHdpbGwgYWx3YXlzIGJlIGBpc2AuXG4gICAgICovXG4gICAgb3BlcmF0b3JzPzogYm9vbGVhbjtcbn07XG5cbkBDb21wb25lbnQoe1xuICAgIHRlbXBsYXRlVXJsOiAnLi90eXBlLXNlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIE1hdEZvcm1GaWVsZE1vZHVsZSwgTWF0U2VsZWN0TW9kdWxlLCBNYXRPcHRpb25Nb2R1bGUsIE1hdExpc3RNb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBUeXBlU2VsZWN0Q29tcG9uZW50IGltcGxlbWVudHMgRHJvcGRvd25Db21wb25lbnQsIEFmdGVyVmlld0luaXQge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgcmVuZGVyZWRWYWx1ZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG4gICAgQFZpZXdDaGlsZChNYXRTZWxlY3Rpb25MaXN0LCB7c3RhdGljOiBmYWxzZX0pIHB1YmxpYyBsaXN0ITogTWF0U2VsZWN0aW9uTGlzdDtcbiAgICBwdWJsaWMgcmVxdWlyZVZhbHVlQ3RybCA9IGZhbHNlO1xuICAgIHB1YmxpYyByZWFkb25seSBvcGVyYXRvcnMgPSBwb3NzaWJsZURpc2NyZXRlT3BlcmF0b3JzO1xuICAgIHB1YmxpYyByZWFkb25seSBvcGVyYXRvckN0cmwgPSBuZXcgRm9ybUNvbnRyb2w8UG9zc2libGVEaXNjcmV0ZU9wZXJhdG9yS2V5cz4oJ2lzJywge25vbk51bGxhYmxlOiB0cnVlfSk7XG4gICAgcHVibGljIHJlYWRvbmx5IHZhbHVlQ3RybCA9IG5ldyBGb3JtQ29udHJvbCgpO1xuICAgIHB1YmxpYyByZWFkb25seSBmb3JtID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICAgIG9wZXJhdG9yOiB0aGlzLm9wZXJhdG9yQ3RybCxcbiAgICAgICAgdmFsdWU6IHRoaXMudmFsdWVDdHJsLFxuICAgIH0pO1xuXG4gICAgcHVibGljIGl0ZW1zOiBUeXBlU2VsZWN0SXRlbVtdID0gW107XG4gICAgcHVibGljIHJlYWRvbmx5IGNvbmZpZ3VyYXRpb246IFJlcXVpcmVkPFR5cGVTZWxlY3RDb25maWd1cmF0aW9uPjtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdHM6IFJlcXVpcmVkPFR5cGVTZWxlY3RDb25maWd1cmF0aW9uPiA9IHtcbiAgICAgICAgaXRlbXM6IFtdLFxuICAgICAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgICAgb3BlcmF0b3JzOiB0cnVlLFxuICAgIH07XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoQEluamVjdChOQVRVUkFMX0RST1BET1dOX0RBVEEpIGRhdGE6IE5hdHVyYWxEcm9wZG93bkRhdGE8VHlwZVNlbGVjdENvbmZpZ3VyYXRpb24+KSB7XG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IHsuLi50aGlzLmRlZmF1bHRzLCAuLi5kYXRhLmNvbmZpZ3VyYXRpb259O1xuXG4gICAgICAgIC8vIEltbWVkaWF0ZWx5IGluaXRWYWxpZGF0b3JzIGFuZCBldmVyeXRpbWUgdGhlIG9wZXJhdG9yIGNoYW5nZSBsYXRlclxuICAgICAgICB0aGlzLm9wZXJhdG9yQ3RybC52YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGgobnVsbCkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLmluaXRWYWxpZGF0b3JzKCkpO1xuXG4gICAgICAgIG1lcmdlKHRoaXMub3BlcmF0b3JDdHJsLnZhbHVlQ2hhbmdlcywgdGhpcy52YWx1ZUN0cmwudmFsdWVDaGFuZ2VzKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVuZGVyZWQgPSB0aGlzLmdldFJlbmRlcmVkVmFsdWUoKTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZWRWYWx1ZS5uZXh0KHJlbmRlcmVkKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5yZWxvYWRDb25kaXRpb24oZGF0YS5jb25kaXRpb24pO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5pc011bHRpcGxlKCkgJiYgdGhpcy5saXN0KSB7XG4gICAgICAgICAgICAodGhpcy5saXN0LnNlbGVjdGVkT3B0aW9ucyBhcyBhbnkpLl9tdWx0aXBsZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldElkKGl0ZW06IFR5cGVTZWxlY3RJdGVtKTogU2NhbGFyIHtcbiAgICAgICAgaWYgKHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JyAmJiBpdGVtKSB7XG4gICAgICAgICAgICByZXR1cm4gKGl0ZW0gYXMgYW55KS5pZCB8fCAoaXRlbSBhcyBhbnkpLnZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuXG4gICAgcHVibGljIGdldERpc3BsYXkoaXRlbTogVHlwZVNlbGVjdEl0ZW0pOiBTY2FsYXIge1xuICAgICAgICBpZiAodHlwZW9mIGl0ZW0gPT09ICdvYmplY3QnICYmIGl0ZW0/Lm5hbWUpIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtLm5hbWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaXRlbSBhcyBTY2FsYXI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldENvbmRpdGlvbigpOiBGaWx0ZXJHcm91cENvbmRpdGlvbkZpZWxkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdmFsdWVzID0gdGhpcy52YWx1ZUN0cmwudmFsdWU7XG4gICAgICAgIHJldHVybiB0aGlzLm9wZXJhdG9yS2V5VG9Db25kaXRpb24odGhpcy5vcGVyYXRvckN0cmwudmFsdWUsIHZhbHVlcyk7XG4gICAgfVxuXG4gICAgcHVibGljIGlzVmFsaWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0udmFsaWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGlzRGlydHkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0uZGlydHk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0VmFsaWRhdG9ycygpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgd2hpdGVsaXN0OiBQb3NzaWJsZURpc2NyZXRlT3BlcmF0b3JLZXlzW10gPSBbJ2lzJywgJ2lzbm90J107XG4gICAgICAgIHRoaXMucmVxdWlyZVZhbHVlQ3RybCA9IHdoaXRlbGlzdC5pbmNsdWRlcyh0aGlzLm9wZXJhdG9yQ3RybC52YWx1ZSk7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSB0aGlzLnJlcXVpcmVWYWx1ZUN0cmwgPyBbVmFsaWRhdG9ycy5yZXF1aXJlZF0gOiBbXTtcblxuICAgICAgICB0aGlzLnZhbHVlQ3RybC5zZXRWYWxpZGF0b3JzKHZhbGlkYXRvcnMpO1xuICAgICAgICB0aGlzLnZhbHVlQ3RybC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc011bHRpcGxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uLm11bHRpcGxlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0SXRlbUJ5SWQoaWQ6IFNjYWxhcik6IFR5cGVTZWxlY3RJdGVtIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXRlbXMuZmluZChpdGVtID0+IHRoaXMuZ2V0SWQoaXRlbSkgPT09IGlkKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlbG9hZENvbmRpdGlvbihjb25kaXRpb246IEZpbHRlckdyb3VwQ29uZGl0aW9uRmllbGQgfCBudWxsKTogdm9pZCB7XG4gICAgICAgIGlmIChjb25kaXRpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IG9wZXJhdG9yS2V5ID0gdGhpcy5jb25kaXRpb25Ub09wZXJhdG9yS2V5KGNvbmRpdGlvbik7XG4gICAgICAgICAgICB0aGlzLm9wZXJhdG9yQ3RybC5zZXRWYWx1ZShvcGVyYXRvcktleSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBBbHdheXMgcmVsb2FkIHZhbHVlLCBldmVuIHdpdGhvdXQgY29uZGl0aW9uIGJlY2F1c2Ugd2UgbmVlZCB0byBsb2FkIGxpc3Qgb2YgYXZhaWxhYmxlIGl0ZW1zIGluIGFsbCBjYXNlc1xuICAgICAgICB0aGlzLnJlbG9hZFZhbHVlKGNvbmRpdGlvbikuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgICAgICAgIHRoaXMudmFsdWVDdHJsLnNldFZhbHVlKHZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZWRWYWx1ZS5uZXh0KHRoaXMuZ2V0UmVuZGVyZWRWYWx1ZSgpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVsb2FkIHRoZSB2YWx1ZSBmcm9tIEFQSSAoYG9wZXJhdG9yQ3RybGAgc2hvdWxkIG5vdCBiZSB0b3VjaGVkKVxuICAgICAqL1xuICAgIHByaXZhdGUgcmVsb2FkVmFsdWUoY29uZGl0aW9uOiBGaWx0ZXJHcm91cENvbmRpdGlvbkZpZWxkIHwgbnVsbCk6IE9ic2VydmFibGU8U2NhbGFyW10+IHtcbiAgICAgICAgY29uc3Qgd2FudGVkSWRzID0gY29uZGl0aW9uPy5pbj8udmFsdWVzID8/IFtdO1xuXG4gICAgICAgIGNvbnN0IGl0ZW1zJCA9IEFycmF5LmlzQXJyYXkodGhpcy5jb25maWd1cmF0aW9uLml0ZW1zKVxuICAgICAgICAgICAgPyBvZih0aGlzLmNvbmZpZ3VyYXRpb24uaXRlbXMpXG4gICAgICAgICAgICA6IHRoaXMuY29uZmlndXJhdGlvbi5pdGVtcztcblxuICAgICAgICByZXR1cm4gaXRlbXMkLnBpcGUoXG4gICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSxcbiAgICAgICAgICAgIG1hcChpdGVtcyA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtcyA9IGl0ZW1zO1xuXG4gICAgICAgICAgICAgICAgLy8gUmVsb2FkIHNlbGVjdGlvbiwgYWNjb3JkaW5nIHRvIHBvc3NpYmxlIHZhbHVlcyBmcm9tIGNvbmZpZ3VyYXRpb25cbiAgICAgICAgICAgICAgICBjb25zdCBwb3NzaWJsZUlkcyA9IHRoaXMuaXRlbXMubWFwKGl0ZW0gPT4gdGhpcy5nZXRJZChpdGVtKSk7XG4gICAgICAgICAgICAgICAgY29uc3Qgd2FudGVkQW5kUG9zc2libGVJZHMgPSB3YW50ZWRJZHMuZmlsdGVyKGlkID0+IHBvc3NpYmxlSWRzLnNvbWUoaSA9PiBpID09PSBpZCkpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHdhbnRlZEFuZFBvc3NpYmxlSWRzO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRSZW5kZXJlZFZhbHVlKCk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IG9wZXJhdG9yID0gdGhpcy5vcGVyYXRvcnMuZmluZCh2ID0+IHYua2V5ID09PSB0aGlzLm9wZXJhdG9yQ3RybC52YWx1ZSk7XG4gICAgICAgIGlmICghb3BlcmF0b3IgfHwgIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzZWxlY3Rpb24gPVxuICAgICAgICAgICAgdGhpcy52YWx1ZUN0cmwudmFsdWVcbiAgICAgICAgICAgICAgICA/Lm1hcCgoaWQ6IFNjYWxhcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5nZXRJdGVtQnlJZChpZCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXREaXNwbGF5KGl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuam9pbignLCAnKSA/PyBudWxsO1xuXG4gICAgICAgIHJldHVybiBbb3BlcmF0b3IubGFiZWwsIHNlbGVjdGlvbl0uZmlsdGVyKHYgPT4gdikuam9pbignICcpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29uZGl0aW9uVG9PcGVyYXRvcktleShjb25kaXRpb246IEZpbHRlckdyb3VwQ29uZGl0aW9uRmllbGQpOiBQb3NzaWJsZURpc2NyZXRlT3BlcmF0b3JLZXlzIHtcbiAgICAgICAgaWYgKCF0aGlzLmNvbmZpZ3VyYXRpb24ub3BlcmF0b3JzKSB7XG4gICAgICAgICAgICByZXR1cm4gJ2lzJztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb25kaXRpb24uaW4gJiYgIWNvbmRpdGlvbi5pbi5ub3QpIHtcbiAgICAgICAgICAgIHJldHVybiAnaXMnO1xuICAgICAgICB9IGVsc2UgaWYgKGNvbmRpdGlvbi5pbj8ubm90KSB7XG4gICAgICAgICAgICByZXR1cm4gJ2lzbm90JztcbiAgICAgICAgfSBlbHNlIGlmIChjb25kaXRpb24ubnVsbD8ubm90KSB7XG4gICAgICAgICAgICByZXR1cm4gJ2FueSc7XG4gICAgICAgIH0gZWxzZSBpZiAoY29uZGl0aW9uLm51bGwgJiYgIWNvbmRpdGlvbi5udWxsLm5vdCkge1xuICAgICAgICAgICAgcmV0dXJuICdub25lJztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAnaXMnO1xuICAgIH1cblxuICAgIHByaXZhdGUgb3BlcmF0b3JLZXlUb0NvbmRpdGlvbihrZXk6IFBvc3NpYmxlRGlzY3JldGVPcGVyYXRvcktleXMsIHZhbHVlczogU2NhbGFyW10pOiBGaWx0ZXJHcm91cENvbmRpdGlvbkZpZWxkIHtcbiAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ2lzJzpcbiAgICAgICAgICAgICAgICByZXR1cm4ge2luOiB7dmFsdWVzOiB2YWx1ZXN9fTtcbiAgICAgICAgICAgIGNhc2UgJ2lzbm90JzpcbiAgICAgICAgICAgICAgICByZXR1cm4ge2luOiB7dmFsdWVzOiB2YWx1ZXMsIG5vdDogdHJ1ZX19O1xuICAgICAgICAgICAgY2FzZSAnYW55JzpcbiAgICAgICAgICAgICAgICByZXR1cm4ge251bGw6IHtub3Q6IHRydWV9fTtcbiAgICAgICAgICAgIGNhc2UgJ25vbmUnOlxuICAgICAgICAgICAgICAgIHJldHVybiB7bnVsbDoge25vdDogZmFsc2V9fTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBvcGVyYXRvciBrZXk6ICcgKyAoa2V5IGFzIHN0cmluZykpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG4gICAgQGlmIChjb25maWd1cmF0aW9uLm9wZXJhdG9ycykge1xuICAgICAgICA8bWF0LWZvcm0tZmllbGQgc3R5bGU9XCJtYXgtd2lkdGg6IDdlbTsgbWFyZ2luLXJpZ2h0OiAxZW1cIj5cbiAgICAgICAgICAgIDxtYXQtbGFiZWwgaTE4bj1cIk1hdGhlbWF0aWNhbCBvcGVyYXRvciA8ID4gPVwiPk9ww6lyYXRldXI8L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxtYXQtc2VsZWN0IFtmb3JtQ29udHJvbF09XCJvcGVyYXRvckN0cmxcIiBbcmVxdWlyZWRdPVwidHJ1ZVwiIHBhbmVsV2lkdGg9XCJcIj5cbiAgICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIG9wZXJhdG9yczsgdHJhY2sgaXRlbSkge1xuICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiaXRlbS5rZXlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0ubGFiZWwgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICB9XG5cbiAgICBAaWYgKHJlcXVpcmVWYWx1ZUN0cmwpIHtcbiAgICAgICAgPG1hdC1zZWxlY3Rpb24tbGlzdCBbZm9ybUNvbnRyb2xdPVwidmFsdWVDdHJsXCI+XG4gICAgICAgICAgICBAZm9yIChpdGVtIG9mIGl0ZW1zOyB0cmFjayBpdGVtKSB7XG4gICAgICAgICAgICAgICAgPG1hdC1saXN0LW9wdGlvbiBbdmFsdWVdPVwiZ2V0SWQoaXRlbSlcIiB0b2dnbGVQb3NpdGlvbj1cImJlZm9yZVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBnZXREaXNwbGF5KGl0ZW0pIH19XG4gICAgICAgICAgICAgICAgPC9tYXQtbGlzdC1vcHRpb24+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvbWF0LXNlbGVjdGlvbi1saXN0PlxuICAgIH1cbjwvZm9ybT5cbiJdfQ==
|
|
175
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS1zZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL21vZHVsZXMvZHJvcGRvd24tY29tcG9uZW50cy90eXBlLXNlbGVjdC90eXBlLXNlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsL3NyYy9saWIvbW9kdWxlcy9kcm9wZG93bi1jb21wb25lbnRzL3R5cGUtc2VsZWN0L3R5cGUtc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3RGLE9BQU8sRUFBQyxhQUFhLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RSxPQUFPLEVBQUMsZUFBZSxFQUFFLEtBQUssRUFBYyxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFNUQsT0FBTyxFQUFDLHFCQUFxQixFQUFzQixNQUFNLGtEQUFrRCxDQUFDO0FBRTVHLE9BQU8sRUFBQyxXQUFXLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBZSxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqSCxPQUFPLEVBQUMsR0FBRyxFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBK0IseUJBQXlCLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDakYsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMs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QkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLGFBQWEsQ0FBQzt3REFLM0QsSUFBSTtzQkFBeEQsU0FBUzt1QkFBQyxnQkFBZ0IsRUFBRSxFQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRGVzdHJveVJlZiwgaW5qZWN0LCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNYXRMaXN0TW9kdWxlLCBNYXRTZWxlY3Rpb25MaXN0fSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9saXN0JztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBtZXJnZSwgT2JzZXJ2YWJsZSwgb2Z9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtGaWx0ZXJHcm91cENvbmRpdGlvbkZpZWxkLCBTY2FsYXJ9IGZyb20gJy4uLy4uL3NlYXJjaC9jbGFzc2VzL2dyYXBocWwtZG9jdHJpbmUudHlwZXMnO1xuaW1wb3J0IHtOQVRVUkFMX0RST1BET1dOX0RBVEEsIE5hdHVyYWxEcm9wZG93bkRhdGF9IGZyb20gJy4uLy4uL3NlYXJjaC9kcm9wZG93bi1jb250YWluZXIvZHJvcGRvd24uc2VydmljZSc7XG5pbXBvcnQge0Ryb3Bkb3duQ29tcG9uZW50fSBmcm9tICcuLi8uLi9zZWFyY2gvdHlwZXMvZHJvcGRvd24tY29tcG9uZW50JztcbmltcG9ydCB7Rm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge21hcCwgc3RhcnRXaXRofSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1Bvc3NpYmxlRGlzY3JldGVPcGVyYXRvcktleXMsIHBvc3NpYmxlRGlzY3JldGVPcGVyYXRvcnN9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7TWF0T3B0aW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7TWF0U2VsZWN0TW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xuaW1wb3J0IHtNYXRGb3JtRmllbGRNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuZXhwb3J0IHR5cGUgVHlwZVNlbGVjdEl0ZW0gPVxuICAgIHwgU2NhbGFyXG4gICAgfCB7XG4gICAgICAgICAgaWQ6IFNjYWxhcjtcbiAgICAgICAgICBuYW1lOiBTY2FsYXI7XG4gICAgICB9XG4gICAgfCB7XG4gICAgICAgICAgdmFsdWU6IFNjYWxhcjtcbiAgICAgICAgICBuYW1lOiBTY2FsYXI7XG4gICAgICB9O1xuXG5leHBvcnQgdHlwZSBUeXBlU2VsZWN0Q29uZmlndXJhdGlvbiA9IHtcbiAgICBpdGVtczogVHlwZVNlbGVjdEl0ZW1bXSB8IE9ic2VydmFibGU8VHlwZVNlbGVjdEl0ZW1bXT47XG4gICAgbXVsdGlwbGU/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIElmIHRydWUgKGRlZmF1bHQpIGEgc2VsZWN0Ym94IGFsbG93cyB0byBjaG9vc2UgYW4gb3BlcmF0b3IuIE90aGVyd2lzZSwgdGhlIHNlbGVjdGJveCBpcyBoaWRkZW4gYW5kIHRoZSBvcGVyYXRvciB3aWxsIGFsd2F5cyBiZSBgaXNgLlxuICAgICAqL1xuICAgIG9wZXJhdG9ycz86IGJvb2xlYW47XG59O1xuXG5AQ29tcG9uZW50KHtcbiAgICB0ZW1wbGF0ZVVybDogJy4vdHlwZS1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0Zvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBNYXRGb3JtRmllbGRNb2R1bGUsIE1hdFNlbGVjdE1vZHVsZSwgTWF0T3B0aW9uTW9kdWxlLCBNYXRMaXN0TW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgVHlwZVNlbGVjdENvbXBvbmVudCBpbXBsZW1lbnRzIERyb3Bkb3duQ29tcG9uZW50LCBBZnRlclZpZXdJbml0IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gICAgcHVibGljIHJlYWRvbmx5IHJlbmRlcmVkVmFsdWUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuICAgIEBWaWV3Q2hpbGQoTWF0U2VsZWN0aW9uTGlzdCwge3N0YXRpYzogZmFsc2V9KSBwdWJsaWMgbGlzdCE6IE1hdFNlbGVjdGlvbkxpc3Q7XG4gICAgcHVibGljIHJlcXVpcmVWYWx1ZUN0cmwgPSBmYWxzZTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgb3BlcmF0b3JzID0gcG9zc2libGVEaXNjcmV0ZU9wZXJhdG9ycztcbiAgICBwdWJsaWMgcmVhZG9ubHkgb3BlcmF0b3JDdHJsID0gbmV3IEZvcm1Db250cm9sPFBvc3NpYmxlRGlzY3JldGVPcGVyYXRvcktleXM+KCdpcycsIHtub25OdWxsYWJsZTogdHJ1ZX0pO1xuICAgIHB1YmxpYyByZWFkb25seSB2YWx1ZUN0cmwgPSBuZXcgRm9ybUNvbnRyb2woKTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgZm9ybSA9IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgICBvcGVyYXRvcjogdGhpcy5vcGVyYXRvckN0cmwsXG4gICAgICAgIHZhbHVlOiB0aGlzLnZhbHVlQ3RybCxcbiAgICB9KTtcblxuICAgIHB1YmxpYyBpdGVtczogVHlwZVNlbGVjdEl0ZW1bXSA9IFtdO1xuICAgIHB1YmxpYyByZWFkb25seSBjb25maWd1cmF0aW9uOiBSZXF1aXJlZDxUeXBlU2VsZWN0Q29uZmlndXJhdGlvbj47XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRzOiBSZXF1aXJlZDxUeXBlU2VsZWN0Q29uZmlndXJhdGlvbj4gPSB7XG4gICAgICAgIGl0ZW1zOiBbXSxcbiAgICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgICAgIG9wZXJhdG9yczogdHJ1ZSxcbiAgICB9O1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBjb25zdCBkYXRhID0gaW5qZWN0PE5hdHVyYWxEcm9wZG93bkRhdGE8VHlwZVNlbGVjdENvbmZpZ3VyYXRpb24+PihOQVRVUkFMX0RST1BET1dOX0RBVEEpO1xuXG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IHsuLi50aGlzLmRlZmF1bHRzLCAuLi5kYXRhLmNvbmZpZ3VyYXRpb259O1xuXG4gICAgICAgIC8vIEltbWVkaWF0ZWx5IGluaXRWYWxpZGF0b3JzIGFuZCBldmVyeXRpbWUgdGhlIG9wZXJhdG9yIGNoYW5nZSBsYXRlclxuICAgICAgICB0aGlzLm9wZXJhdG9yQ3RybC52YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGgobnVsbCkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLmluaXRWYWxpZGF0b3JzKCkpO1xuXG4gICAgICAgIG1lcmdlKHRoaXMub3BlcmF0b3JDdHJsLnZhbHVlQ2hhbmdlcywgdGhpcy52YWx1ZUN0cmwudmFsdWVDaGFuZ2VzKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVuZGVyZWQgPSB0aGlzLmdldFJlbmRlcmVkVmFsdWUoKTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZWRWYWx1ZS5uZXh0KHJlbmRlcmVkKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5yZWxvYWRDb25kaXRpb24oZGF0YS5jb25kaXRpb24pO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5pc011bHRpcGxlKCkgJiYgdGhpcy5saXN0KSB7XG4gICAgICAgICAgICAodGhpcy5saXN0LnNlbGVjdGVkT3B0aW9ucyBhcyBhbnkpLl9tdWx0aXBsZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldElkKGl0ZW06IFR5cGVTZWxlY3RJdGVtKTogU2NhbGFyIHtcbiAgICAgICAgaWYgKHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JyAmJiBpdGVtKSB7XG4gICAgICAgICAgICByZXR1cm4gKGl0ZW0gYXMgYW55KS5pZCB8fCAoaXRlbSBhcyBhbnkpLnZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuXG4gICAgcHVibGljIGdldERpc3BsYXkoaXRlbTogVHlwZVNlbGVjdEl0ZW0pOiBTY2FsYXIge1xuICAgICAgICBpZiAodHlwZW9mIGl0ZW0gPT09ICdvYmplY3QnICYmIGl0ZW0/Lm5hbWUpIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtLm5hbWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaXRlbSBhcyBTY2FsYXI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldENvbmRpdGlvbigpOiBGaWx0ZXJHcm91cENvbmRpdGlvbkZpZWxkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdmFsdWVzID0gdGhpcy52YWx1ZUN0cmwudmFsdWU7XG4gICAgICAgIHJldHVybiB0aGlzLm9wZXJhdG9yS2V5VG9Db25kaXRpb24odGhpcy5vcGVyYXRvckN0cmwudmFsdWUsIHZhbHVlcyk7XG4gICAgfVxuXG4gICAgcHVibGljIGlzVmFsaWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0udmFsaWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGlzRGlydHkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0uZGlydHk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0VmFsaWRhdG9ycygpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgd2hpdGVsaXN0OiBQb3NzaWJsZURpc2NyZXRlT3BlcmF0b3JLZXlzW10gPSBbJ2lzJywgJ2lzbm90J107XG4gICAgICAgIHRoaXMucmVxdWlyZVZhbHVlQ3RybCA9IHdoaXRlbGlzdC5pbmNsdWRlcyh0aGlzLm9wZXJhdG9yQ3RybC52YWx1ZSk7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSB0aGlzLnJlcXVpcmVWYWx1ZUN0cmwgPyBbVmFsaWRhdG9ycy5yZXF1aXJlZF0gOiBbXTtcblxuICAgICAgICB0aGlzLnZhbHVlQ3RybC5zZXRWYWxpZGF0b3JzKHZhbGlkYXRvcnMpO1xuICAgICAgICB0aGlzLnZhbHVlQ3RybC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc011bHRpcGxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uLm11bHRpcGxlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0SXRlbUJ5SWQoaWQ6IFNjYWxhcik6IFR5cGVTZWxlY3RJdGVtIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXRlbXMuZmluZChpdGVtID0+IHRoaXMuZ2V0SWQoaXRlbSkgPT09IGlkKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlbG9hZENvbmRpdGlvbihjb25kaXRpb246IEZpbHRlckdyb3VwQ29uZGl0aW9uRmllbGQgfCBudWxsKTogdm9pZCB7XG4gICAgICAgIGlmIChjb25kaXRpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IG9wZXJhdG9yS2V5ID0gdGhpcy5jb25kaXRpb25Ub09wZXJhdG9yS2V5KGNvbmRpdGlvbik7XG4gICAgICAgICAgICB0aGlzLm9wZXJhdG9yQ3RybC5zZXRWYWx1ZShvcGVyYXRvcktleSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBBbHdheXMgcmVsb2FkIHZhbHVlLCBldmVuIHdpdGhvdXQgY29uZGl0aW9uIGJlY2F1c2Ugd2UgbmVlZCB0byBsb2FkIGxpc3Qgb2YgYXZhaWxhYmxlIGl0ZW1zIGluIGFsbCBjYXNlc1xuICAgICAgICB0aGlzLnJlbG9hZFZhbHVlKGNvbmRpdGlvbikuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgICAgICAgIHRoaXMudmFsdWVDdHJsLnNldFZhbHVlKHZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZWRWYWx1ZS5uZXh0KHRoaXMuZ2V0UmVuZGVyZWRWYWx1ZSgpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVsb2FkIHRoZSB2YWx1ZSBmcm9tIEFQSSAoYG9wZXJhdG9yQ3RybGAgc2hvdWxkIG5vdCBiZSB0b3VjaGVkKVxuICAgICAqL1xuICAgIHByaXZhdGUgcmVsb2FkVmFsdWUoY29uZGl0aW9uOiBGaWx0ZXJHcm91cENvbmRpdGlvbkZpZWxkIHwgbnVsbCk6IE9ic2VydmFibGU8U2NhbGFyW10+IHtcbiAgICAgICAgY29uc3Qgd2FudGVkSWRzID0gY29uZGl0aW9uPy5pbj8udmFsdWVzID8/IFtdO1xuXG4gICAgICAgIGNvbnN0IGl0ZW1zJCA9IEFycmF5LmlzQXJyYXkodGhpcy5jb25maWd1cmF0aW9uLml0ZW1zKVxuICAgICAgICAgICAgPyBvZih0aGlzLmNvbmZpZ3VyYXRpb24uaXRlbXMpXG4gICAgICAgICAgICA6IHRoaXMuY29uZmlndXJhdGlvbi5pdGVtcztcblxuICAgICAgICByZXR1cm4gaXRlbXMkLnBpcGUoXG4gICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSxcbiAgICAgICAgICAgIG1hcChpdGVtcyA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtcyA9IGl0ZW1zO1xuXG4gICAgICAgICAgICAgICAgLy8gUmVsb2FkIHNlbGVjdGlvbiwgYWNjb3JkaW5nIHRvIHBvc3NpYmxlIHZhbHVlcyBmcm9tIGNvbmZpZ3VyYXRpb25cbiAgICAgICAgICAgICAgICBjb25zdCBwb3NzaWJsZUlkcyA9IHRoaXMuaXRlbXMubWFwKGl0ZW0gPT4gdGhpcy5nZXRJZChpdGVtKSk7XG4gICAgICAgICAgICAgICAgY29uc3Qgd2FudGVkQW5kUG9zc2libGVJZHMgPSB3YW50ZWRJZHMuZmlsdGVyKGlkID0+IHBvc3NpYmxlSWRzLnNvbWUoaSA9PiBpID09PSBpZCkpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHdhbnRlZEFuZFBvc3NpYmxlSWRzO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRSZW5kZXJlZFZhbHVlKCk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IG9wZXJhdG9yID0gdGhpcy5vcGVyYXRvcnMuZmluZCh2ID0+IHYua2V5ID09PSB0aGlzLm9wZXJhdG9yQ3RybC52YWx1ZSk7XG4gICAgICAgIGlmICghb3BlcmF0b3IgfHwgIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzZWxlY3Rpb24gPVxuICAgICAgICAgICAgdGhpcy52YWx1ZUN0cmwudmFsdWVcbiAgICAgICAgICAgICAgICA/Lm1hcCgoaWQ6IFNjYWxhcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5nZXRJdGVtQnlJZChpZCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXREaXNwbGF5KGl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuam9pbignLCAnKSA/PyBudWxsO1xuXG4gICAgICAgIHJldHVybiBbb3BlcmF0b3IubGFiZWwsIHNlbGVjdGlvbl0uZmlsdGVyKHYgPT4gdikuam9pbignICcpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29uZGl0aW9uVG9PcGVyYXRvcktleShjb25kaXRpb246IEZpbHRlckdyb3VwQ29uZGl0aW9uRmllbGQpOiBQb3NzaWJsZURpc2NyZXRlT3BlcmF0b3JLZXlzIHtcbiAgICAgICAgaWYgKCF0aGlzLmNvbmZpZ3VyYXRpb24ub3BlcmF0b3JzKSB7XG4gICAgICAgICAgICByZXR1cm4gJ2lzJztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb25kaXRpb24uaW4gJiYgIWNvbmRpdGlvbi5pbi5ub3QpIHtcbiAgICAgICAgICAgIHJldHVybiAnaXMnO1xuICAgICAgICB9IGVsc2UgaWYgKGNvbmRpdGlvbi5pbj8ubm90KSB7XG4gICAgICAgICAgICByZXR1cm4gJ2lzbm90JztcbiAgICAgICAgfSBlbHNlIGlmIChjb25kaXRpb24ubnVsbD8ubm90KSB7XG4gICAgICAgICAgICByZXR1cm4gJ2FueSc7XG4gICAgICAgIH0gZWxzZSBpZiAoY29uZGl0aW9uLm51bGwgJiYgIWNvbmRpdGlvbi5udWxsLm5vdCkge1xuICAgICAgICAgICAgcmV0dXJuICdub25lJztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAnaXMnO1xuICAgIH1cblxuICAgIHByaXZhdGUgb3BlcmF0b3JLZXlUb0NvbmRpdGlvbihrZXk6IFBvc3NpYmxlRGlzY3JldGVPcGVyYXRvcktleXMsIHZhbHVlczogU2NhbGFyW10pOiBGaWx0ZXJHcm91cENvbmRpdGlvbkZpZWxkIHtcbiAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ2lzJzpcbiAgICAgICAgICAgICAgICByZXR1cm4ge2luOiB7dmFsdWVzOiB2YWx1ZXN9fTtcbiAgICAgICAgICAgIGNhc2UgJ2lzbm90JzpcbiAgICAgICAgICAgICAgICByZXR1cm4ge2luOiB7dmFsdWVzOiB2YWx1ZXMsIG5vdDogdHJ1ZX19O1xuICAgICAgICAgICAgY2FzZSAnYW55JzpcbiAgICAgICAgICAgICAgICByZXR1cm4ge251bGw6IHtub3Q6IHRydWV9fTtcbiAgICAgICAgICAgIGNhc2UgJ25vbmUnOlxuICAgICAgICAgICAgICAgIHJldHVybiB7bnVsbDoge25vdDogZmFsc2V9fTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBvcGVyYXRvciBrZXk6ICcgKyAoa2V5IGFzIHN0cmluZykpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG4gICAgQGlmIChjb25maWd1cmF0aW9uLm9wZXJhdG9ycykge1xuICAgICAgICA8bWF0LWZvcm0tZmllbGQgc3R5bGU9XCJtYXgtd2lkdGg6IDdlbTsgbWFyZ2luLXJpZ2h0OiAxZW1cIj5cbiAgICAgICAgICAgIDxtYXQtbGFiZWwgaTE4bj1cIk1hdGhlbWF0aWNhbCBvcGVyYXRvciA8ID4gPVwiPk9ww6lyYXRldXI8L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxtYXQtc2VsZWN0IFtmb3JtQ29udHJvbF09XCJvcGVyYXRvckN0cmxcIiBbcmVxdWlyZWRdPVwidHJ1ZVwiIHBhbmVsV2lkdGg9XCJcIj5cbiAgICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIG9wZXJhdG9yczsgdHJhY2sgaXRlbSkge1xuICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiaXRlbS5rZXlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0ubGFiZWwgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICB9XG5cbiAgICBAaWYgKHJlcXVpcmVWYWx1ZUN0cmwpIHtcbiAgICAgICAgPG1hdC1zZWxlY3Rpb24tbGlzdCBbZm9ybUNvbnRyb2xdPVwidmFsdWVDdHJsXCI+XG4gICAgICAgICAgICBAZm9yIChpdGVtIG9mIGl0ZW1zOyB0cmFjayBpdGVtKSB7XG4gICAgICAgICAgICAgICAgPG1hdC1saXN0LW9wdGlvbiBbdmFsdWVdPVwiZ2V0SWQoaXRlbSlcIiB0b2dnbGVQb3NpdGlvbj1cImJlZm9yZVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBnZXREaXNwbGF5KGl0ZW0pIH19XG4gICAgICAgICAgICAgICAgPC9tYXQtbGlzdC1vcHRpb24+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvbWF0LXNlbGVjdGlvbi1saXN0PlxuICAgIH1cbjwvZm9ybT5cbiJdfQ==
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { Component,
|
|
1
|
+
import { Component, inject } from '@angular/core';
|
|
2
2
|
import { FormControl, Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
3
3
|
import { BehaviorSubject } from 'rxjs';
|
|
4
|
+
import { NaturalDropdownRef } from '../../search/dropdown-container/dropdown-ref';
|
|
4
5
|
import { NATURAL_DROPDOWN_DATA } from '../../search/dropdown-container/dropdown.service';
|
|
5
6
|
import { MatInputModule } from '@angular/material/input';
|
|
6
7
|
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
7
8
|
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "
|
|
9
|
-
import * as i2 from "@angular/material/
|
|
10
|
-
import * as i3 from "@angular/
|
|
11
|
-
import * as i4 from "@angular/forms";
|
|
9
|
+
import * as i1 from "@angular/material/form-field";
|
|
10
|
+
import * as i2 from "@angular/material/input";
|
|
11
|
+
import * as i3 from "@angular/forms";
|
|
12
12
|
/**
|
|
13
13
|
* Show an error message if the control has a value and an error, even if control is not dirty and not touched.
|
|
14
14
|
*/
|
|
@@ -18,11 +18,12 @@ export class InvalidWithValueStateMatcher {
|
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
20
|
export class TypeTextComponent {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
21
|
+
dropdownRef = inject(NaturalDropdownRef);
|
|
22
|
+
renderedValue = new BehaviorSubject('');
|
|
23
|
+
formCtrl = new FormControl('', { nonNullable: true });
|
|
24
|
+
matcher = new InvalidWithValueStateMatcher();
|
|
25
|
+
constructor() {
|
|
26
|
+
const data = inject(NATURAL_DROPDOWN_DATA);
|
|
26
27
|
this.formCtrl.valueChanges.subscribe(value => {
|
|
27
28
|
this.renderedValue.next(value === null ? '' : this.formCtrl.value + '');
|
|
28
29
|
});
|
|
@@ -51,14 +52,11 @@ export class TypeTextComponent {
|
|
|
51
52
|
this.dropdownRef.close(); // undefined value, discard changes / prevent to add a condition (on new fields
|
|
52
53
|
}
|
|
53
54
|
}
|
|
54
|
-
static
|
|
55
|
-
static
|
|
55
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: TypeTextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
56
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: TypeTextComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<mat-form-field>\n <mat-label i18n>Valeur</mat-label>\n <input\n (keydown.enter)=\"close()\"\n [errorStateMatcher]=\"matcher\"\n [formControl]=\"formCtrl\"\n [required]=\"true\"\n matInput\n type=\"text\"\n autocomplete=\"off\"\n />\n @if (formCtrl.hasError('required')) {\n <mat-error>*</mat-error>\n }\n</mat-form-field>\n", styles: [":host input::-webkit-outer-spin-button,:host input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}\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: "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: "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.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: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
|
|
56
57
|
}
|
|
57
58
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: TypeTextComponent, decorators: [{
|
|
58
59
|
type: Component,
|
|
59
60
|
args: [{ standalone: true, imports: [MatFormFieldModule, MatInputModule, FormsModule, ReactiveFormsModule], template: "<mat-form-field>\n <mat-label i18n>Valeur</mat-label>\n <input\n (keydown.enter)=\"close()\"\n [errorStateMatcher]=\"matcher\"\n [formControl]=\"formCtrl\"\n [required]=\"true\"\n matInput\n type=\"text\"\n autocomplete=\"off\"\n />\n @if (formCtrl.hasError('required')) {\n <mat-error>*</mat-error>\n }\n</mat-form-field>\n", styles: [":host input::-webkit-outer-spin-button,:host input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}\n"] }]
|
|
60
|
-
}], ctorParameters: () => [
|
|
61
|
-
|
|
62
|
-
args: [NATURAL_DROPDOWN_DATA]
|
|
63
|
-
}] }, { type: i1.NaturalDropdownRef }] });
|
|
64
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS10ZXh0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL2Ryb3Bkb3duLWNvbXBvbmVudHMvdHlwZS10ZXh0L3R5cGUtdGV4dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsL3NyYy9saWIvbW9kdWxlcy9kcm9wZG93bi1jb21wb25lbnRzL3R5cGUtdGV4dC90eXBlLXRleHQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDaEQsT0FBTyxFQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFekYsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUdyQyxPQUFPLEVBQUMscUJBQXFCLEVBQXNCLE1BQU0sa0RBQWtELENBQUM7QUFFNUcsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDhCQUE4QixDQUFDOzs7Ozs7QUFFaEU7O0dBRUc7QUFDSCxNQUFNLE9BQU8sNEJBQTRCO0lBQzlCLFlBQVksQ0FBQyxPQUEyQjtRQUMzQyxPQUFPLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDdkQsQ0FBQztDQUNKO0FBUUQsTUFBTSxPQUFPLGlCQUFpQjtJQUsxQixZQUNtQyxJQUFnQyxFQUNyRCxXQUErQjtRQUEvQixnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFON0Isa0JBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUNoRCxhQUFRLEdBQUcsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLEVBQUMsV0FBVyxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7UUFDcEQsWUFBTyxHQUFHLElBQUksNEJBQTRCLEVBQUUsQ0FBQztRQU16RCxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDekMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQztRQUM1RSxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFFbkQsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzRCxDQUFDO0lBQ0wsQ0FBQztJQUVNLFlBQVk7UUFDZixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN2QixPQUFPLEVBQUUsQ0FBQztRQUNkLENBQUM7UUFFRCxPQUFPLEVBQUMsSUFBSSxFQUFFLEVBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFDLEVBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRU0sT0FBTztRQUNWLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFDL0IsQ0FBQztJQUVNLE9BQU87UUFDVixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO0lBQy9CLENBQUM7SUFFTSxLQUFLO1FBQ1IsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUMsQ0FBQyxDQUFDO1FBQzdELENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLCtFQUErRTtRQUM3RyxDQUFDO0lBQ0wsQ0FBQzs4R0ExQ1EsaUJBQWlCLGtCQU1kLHFCQUFxQjtrR0FOeEIsaUJBQWlCLHdFQzFCOUIsNllBZUEsMEtEU2Msa0JBQWtCLHVZQUFFLGNBQWMsMFdBQUUsV0FBVyxtbkJBQUUsbUJBQW1COzsyRkFFckUsaUJBQWlCO2tCQU43QixTQUFTO2lDQUdNLElBQUksV0FDUCxDQUFDLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLENBQUM7OzBCQVExRSxNQUFNOzJCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3JtQ29udHJvbCwgVmFsaWRhdG9ycywgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7RXJyb3JTdGF0ZU1hdGNoZXJ9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtGaWx0ZXJHcm91cENvbmRpdGlvbkZpZWxkfSBmcm9tICcuLi8uLi9zZWFyY2gvY2xhc3Nlcy9ncmFwaHFsLWRvY3RyaW5lLnR5cGVzJztcbmltcG9ydCB7TmF0dXJhbERyb3Bkb3duUmVmfSBmcm9tICcuLi8uLi9zZWFyY2gvZHJvcGRvd24tY29udGFpbmVyL2Ryb3Bkb3duLXJlZic7XG5pbXBvcnQge05BVFVSQUxfRFJPUERPV05fREFUQSwgTmF0dXJhbERyb3Bkb3duRGF0YX0gZnJvbSAnLi4vLi4vc2VhcmNoL2Ryb3Bkb3duLWNvbnRhaW5lci9kcm9wZG93bi5zZXJ2aWNlJztcbmltcG9ydCB7RHJvcGRvd25Db21wb25lbnR9IGZyb20gJy4uLy4uL3NlYXJjaC90eXBlcy9kcm9wZG93bi1jb21wb25lbnQnO1xuaW1wb3J0IHtNYXRJbnB1dE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHtNYXRGb3JtRmllbGRNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuXG4vKipcbiAqIFNob3cgYW4gZXJyb3IgbWVzc2FnZSBpZiB0aGUgY29udHJvbCBoYXMgYSB2YWx1ZSBhbmQgYW4gZXJyb3IsIGV2ZW4gaWYgY29udHJvbCBpcyBub3QgZGlydHkgYW5kIG5vdCB0b3VjaGVkLlxuICovXG5leHBvcnQgY2xhc3MgSW52YWxpZFdpdGhWYWx1ZVN0YXRlTWF0Y2hlciBpbXBsZW1lbnRzIEVycm9yU3RhdGVNYXRjaGVyIHtcbiAgICBwdWJsaWMgaXNFcnJvclN0YXRlKGNvbnRyb2w6IEZvcm1Db250cm9sIHwgbnVsbCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gY29udHJvbCAmJiBjb250cm9sLmludmFsaWQgJiYgY29udHJvbC52YWx1ZTtcbiAgICB9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHRlbXBsYXRlVXJsOiAnLi90eXBlLXRleHQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi90eXBlLXRleHQuY29tcG9uZW50LnNjc3MnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW01hdEZvcm1GaWVsZE1vZHVsZSwgTWF0SW5wdXRNb2R1bGUsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgVHlwZVRleHRDb21wb25lbnQgaW1wbGVtZW50cyBEcm9wZG93bkNvbXBvbmVudCB7XG4gICAgcHVibGljIHJlYWRvbmx5IHJlbmRlcmVkVmFsdWUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuICAgIHB1YmxpYyByZWFkb25seSBmb3JtQ3RybCA9IG5ldyBGb3JtQ29udHJvbCgnJywge25vbk51bGxhYmxlOiB0cnVlfSk7XG4gICAgcHVibGljIHJlYWRvbmx5IG1hdGNoZXIgPSBuZXcgSW52YWxpZFdpdGhWYWx1ZVN0YXRlTWF0Y2hlcigpO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KE5BVFVSQUxfRFJPUERPV05fREFUQSkgZGF0YTogTmF0dXJhbERyb3Bkb3duRGF0YTxuZXZlcj4sXG4gICAgICAgIHByb3RlY3RlZCBkcm9wZG93blJlZjogTmF0dXJhbERyb3Bkb3duUmVmLFxuICAgICkge1xuICAgICAgICB0aGlzLmZvcm1DdHJsLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlZFZhbHVlLm5leHQodmFsdWUgPT09IG51bGwgPyAnJyA6IHRoaXMuZm9ybUN0cmwudmFsdWUgKyAnJyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZm9ybUN0cmwuc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZF0pO1xuXG4gICAgICAgIGlmIChkYXRhLmNvbmRpdGlvbj8ubGlrZSkge1xuICAgICAgICAgICAgdGhpcy5mb3JtQ3RybC5zZXRWYWx1ZSgnJyArIGRhdGEuY29uZGl0aW9uLmxpa2UudmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldENvbmRpdGlvbigpOiBGaWx0ZXJHcm91cENvbmRpdGlvbkZpZWxkIHtcbiAgICAgICAgaWYgKCF0aGlzLmZvcm1DdHJsLnZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge2xpa2U6IHt2YWx1ZTogdGhpcy5mb3JtQ3RybC52YWx1ZX19O1xuICAgIH1cblxuICAgIHB1YmxpYyBpc1ZhbGlkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtQ3RybC52YWxpZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNEaXJ0eSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybUN0cmwuZGlydHk7XG4gICAgfVxuXG4gICAgcHVibGljIGNsb3NlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd25SZWYuY2xvc2Uoe2NvbmRpdGlvbjogdGhpcy5nZXRDb25kaXRpb24oKX0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5kcm9wZG93blJlZi5jbG9zZSgpOyAvLyB1bmRlZmluZWQgdmFsdWUsIGRpc2NhcmQgY2hhbmdlcyAvIHByZXZlbnQgdG8gYWRkIGEgY29uZGl0aW9uIChvbiBuZXcgZmllbGRzXG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8bWF0LWZvcm0tZmllbGQ+XG4gICAgPG1hdC1sYWJlbCBpMThuPlZhbGV1cjwvbWF0LWxhYmVsPlxuICAgIDxpbnB1dFxuICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJjbG9zZSgpXCJcbiAgICAgICAgW2Vycm9yU3RhdGVNYXRjaGVyXT1cIm1hdGNoZXJcIlxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybUN0cmxcIlxuICAgICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgIG1hdElucHV0XG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAvPlxuICAgIEBpZiAoZm9ybUN0cmwuaGFzRXJyb3IoJ3JlcXVpcmVkJykpIHtcbiAgICAgICAgPG1hdC1lcnJvcj4qPC9tYXQtZXJyb3I+XG4gICAgfVxuPC9tYXQtZm9ybS1maWVsZD5cbiJdfQ==
|
|
61
|
+
}], ctorParameters: () => [] });
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS10ZXh0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL2Ryb3Bkb3duLWNvbXBvbmVudHMvdHlwZS10ZXh0L3R5cGUtdGV4dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsL3NyYy9saWIvbW9kdWxlcy9kcm9wZG93bi1jb21wb25lbnRzL3R5cGUtdGV4dC90eXBlLXRleHQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDaEQsT0FBTyxFQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFekYsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUVyQyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw4Q0FBOEMsQ0FBQztBQUNoRixPQUFPLEVBQUMscUJBQXFCLEVBQXNCLE1BQU0sa0RBQWtELENBQUM7QUFFNUcsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDhCQUE4QixDQUFDOzs7OztBQUVoRTs7R0FFRztBQUNILE1BQU0sT0FBTyw0QkFBNEI7SUFDOUIsWUFBWSxDQUFDLE9BQTJCO1FBQzNDLE9BQU8sT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQztJQUN2RCxDQUFDO0NBQ0o7QUFRRCxNQUFNLE9BQU8saUJBQWlCO0lBQ2hCLFdBQVcsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUVuQyxhQUFhLEdBQUcsSUFBSSxlQUFlLENBQVMsRUFBRSxDQUFDLENBQUM7SUFDaEQsUUFBUSxHQUFHLElBQUksV0FBVyxDQUFDLEVBQUUsRUFBRSxFQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO0lBQ3BELE9BQU8sR0FBRyxJQUFJLDRCQUE0QixFQUFFLENBQUM7SUFFN0Q7UUFDSSxNQUFNLElBQUksR0FBRyxNQUFNLENBQTZCLHFCQUFxQixDQUFDLENBQUM7UUFFdkUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3pDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDNUUsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBRW5ELElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0QsQ0FBQztJQUNMLENBQUM7SUFFTSxZQUFZO1FBQ2YsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdkIsT0FBTyxFQUFFLENBQUM7UUFDZCxDQUFDO1FBRUQsT0FBTyxFQUFDLElBQUksRUFBRSxFQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBQyxFQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVNLE9BQU87UUFDVixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO0lBQy9CLENBQUM7SUFFTSxPQUFPO1FBQ1YsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztJQUMvQixDQUFDO0lBRU0sS0FBSztRQUNSLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFDLENBQUMsQ0FBQztRQUM3RCxDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQywrRUFBK0U7UUFDN0csQ0FBQztJQUNMLENBQUM7dUdBM0NRLGlCQUFpQjsyRkFBakIsaUJBQWlCLHdFQzFCOUIsNllBZUEsMEtEU2Msa0JBQWtCLHVZQUFFLGNBQWMsMFdBQUUsV0FBVyxtbkJBQUUsbUJBQW1COzsyRkFFckUsaUJBQWlCO2tCQU43QixTQUFTO2lDQUdNLElBQUksV0FDUCxDQUFDLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgaW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Rm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0Vycm9yU3RhdGVNYXRjaGVyfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7RmlsdGVyR3JvdXBDb25kaXRpb25GaWVsZH0gZnJvbSAnLi4vLi4vc2VhcmNoL2NsYXNzZXMvZ3JhcGhxbC1kb2N0cmluZS50eXBlcyc7XG5pbXBvcnQge05hdHVyYWxEcm9wZG93blJlZn0gZnJvbSAnLi4vLi4vc2VhcmNoL2Ryb3Bkb3duLWNvbnRhaW5lci9kcm9wZG93bi1yZWYnO1xuaW1wb3J0IHtOQVRVUkFMX0RST1BET1dOX0RBVEEsIE5hdHVyYWxEcm9wZG93bkRhdGF9IGZyb20gJy4uLy4uL3NlYXJjaC9kcm9wZG93bi1jb250YWluZXIvZHJvcGRvd24uc2VydmljZSc7XG5pbXBvcnQge0Ryb3Bkb3duQ29tcG9uZW50fSBmcm9tICcuLi8uLi9zZWFyY2gvdHlwZXMvZHJvcGRvd24tY29tcG9uZW50JztcbmltcG9ydCB7TWF0SW5wdXRNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7TWF0Rm9ybUZpZWxkTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcblxuLyoqXG4gKiBTaG93IGFuIGVycm9yIG1lc3NhZ2UgaWYgdGhlIGNvbnRyb2wgaGFzIGEgdmFsdWUgYW5kIGFuIGVycm9yLCBldmVuIGlmIGNvbnRyb2wgaXMgbm90IGRpcnR5IGFuZCBub3QgdG91Y2hlZC5cbiAqL1xuZXhwb3J0IGNsYXNzIEludmFsaWRXaXRoVmFsdWVTdGF0ZU1hdGNoZXIgaW1wbGVtZW50cyBFcnJvclN0YXRlTWF0Y2hlciB7XG4gICAgcHVibGljIGlzRXJyb3JTdGF0ZShjb250cm9sOiBGb3JtQ29udHJvbCB8IG51bGwpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGNvbnRyb2wgJiYgY29udHJvbC5pbnZhbGlkICYmIGNvbnRyb2wudmFsdWU7XG4gICAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICB0ZW1wbGF0ZVVybDogJy4vdHlwZS10ZXh0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vdHlwZS10ZXh0LmNvbXBvbmVudC5zY3NzJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtNYXRGb3JtRmllbGRNb2R1bGUsIE1hdElucHV0TW9kdWxlLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIFR5cGVUZXh0Q29tcG9uZW50IGltcGxlbWVudHMgRHJvcGRvd25Db21wb25lbnQge1xuICAgIHByb3RlY3RlZCBkcm9wZG93blJlZiA9IGluamVjdChOYXR1cmFsRHJvcGRvd25SZWYpO1xuXG4gICAgcHVibGljIHJlYWRvbmx5IHJlbmRlcmVkVmFsdWUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuICAgIHB1YmxpYyByZWFkb25seSBmb3JtQ3RybCA9IG5ldyBGb3JtQ29udHJvbCgnJywge25vbk51bGxhYmxlOiB0cnVlfSk7XG4gICAgcHVibGljIHJlYWRvbmx5IG1hdGNoZXIgPSBuZXcgSW52YWxpZFdpdGhWYWx1ZVN0YXRlTWF0Y2hlcigpO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBjb25zdCBkYXRhID0gaW5qZWN0PE5hdHVyYWxEcm9wZG93bkRhdGE8bmV2ZXI+PihOQVRVUkFMX0RST1BET1dOX0RBVEEpO1xuXG4gICAgICAgIHRoaXMuZm9ybUN0cmwudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVkVmFsdWUubmV4dCh2YWx1ZSA9PT0gbnVsbCA/ICcnIDogdGhpcy5mb3JtQ3RybC52YWx1ZSArICcnKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5mb3JtQ3RybC5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSk7XG5cbiAgICAgICAgaWYgKGRhdGEuY29uZGl0aW9uPy5saWtlKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm1DdHJsLnNldFZhbHVlKCcnICsgZGF0YS5jb25kaXRpb24ubGlrZS52YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q29uZGl0aW9uKCk6IEZpbHRlckdyb3VwQ29uZGl0aW9uRmllbGQge1xuICAgICAgICBpZiAoIXRoaXMuZm9ybUN0cmwudmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7bGlrZToge3ZhbHVlOiB0aGlzLmZvcm1DdHJsLnZhbHVlfX07XG4gICAgfVxuXG4gICAgcHVibGljIGlzVmFsaWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1DdHJsLnZhbGlkO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0RpcnR5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtQ3RybC5kaXJ0eTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xvc2UoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgdGhpcy5kcm9wZG93blJlZi5jbG9zZSh7Y29uZGl0aW9uOiB0aGlzLmdldENvbmRpdGlvbigpfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duUmVmLmNsb3NlKCk7IC8vIHVuZGVmaW5lZCB2YWx1ZSwgZGlzY2FyZCBjaGFuZ2VzIC8gcHJldmVudCB0byBhZGQgYSBjb25kaXRpb24gKG9uIG5ldyBmaWVsZHNcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxtYXQtZm9ybS1maWVsZD5cbiAgICA8bWF0LWxhYmVsIGkxOG4+VmFsZXVyPC9tYXQtbGFiZWw+XG4gICAgPGlucHV0XG4gICAgICAgIChrZXlkb3duLmVudGVyKT1cImNsb3NlKClcIlxuICAgICAgICBbZXJyb3JTdGF0ZU1hdGNoZXJdPVwibWF0Y2hlclwiXG4gICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ3RybFwiXG4gICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgIC8+XG4gICAgQGlmIChmb3JtQ3RybC5oYXNFcnJvcigncmVxdWlyZWQnKSkge1xuICAgICAgICA8bWF0LWVycm9yPio8L21hdC1lcnJvcj5cbiAgICB9XG48L21hdC1mb3JtLWZpZWxkPlxuIl19
|
|
@@ -14,54 +14,58 @@ import * as i1 from "./file.service";
|
|
|
14
14
|
* @dynamic
|
|
15
15
|
*/
|
|
16
16
|
export class NaturalAbstractFile {
|
|
17
|
+
element;
|
|
18
|
+
naturalFileService;
|
|
19
|
+
document;
|
|
20
|
+
fileElement;
|
|
21
|
+
/**
|
|
22
|
+
* Whether we should accept a single file or multiple files
|
|
23
|
+
*/
|
|
24
|
+
multiple = false;
|
|
25
|
+
/**
|
|
26
|
+
* Comma-separated list of unique file type specifiers. Like the native element
|
|
27
|
+
* it can be a mix of mime-type and file extensions.
|
|
28
|
+
*
|
|
29
|
+
* See https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#accept
|
|
30
|
+
*/
|
|
31
|
+
accept = '';
|
|
32
|
+
/**
|
|
33
|
+
* Maximum file size in bytes. 0 means no validation at all.
|
|
34
|
+
*/
|
|
35
|
+
maxSize = 0;
|
|
36
|
+
/**
|
|
37
|
+
* Disable the file selection entirely
|
|
38
|
+
*/
|
|
39
|
+
fileSelectionDisabled = false;
|
|
40
|
+
/**
|
|
41
|
+
* Whether the user can click on the element to select something
|
|
42
|
+
*
|
|
43
|
+
* This has only effect during initialization. Subsequent changes will have
|
|
44
|
+
* no effect.
|
|
45
|
+
*/
|
|
46
|
+
selectable = false;
|
|
47
|
+
/**
|
|
48
|
+
* If true, the file selection will be broadcast through `NaturalFileService.filesChanged`.
|
|
49
|
+
*
|
|
50
|
+
* It is useful to set this to false if there is two upload on a page with different purpose
|
|
51
|
+
* and the second upload should not be confused with the first one.
|
|
52
|
+
*/
|
|
53
|
+
broadcast = true;
|
|
54
|
+
/**
|
|
55
|
+
* The single valid file that has been selected.
|
|
56
|
+
*
|
|
57
|
+
* It is for convenience of use, and will only emit if there is at least one
|
|
58
|
+
* valid file. See `filesChange` for a more complete output.
|
|
59
|
+
*/
|
|
60
|
+
fileChange = new EventEmitter();
|
|
61
|
+
/**
|
|
62
|
+
* The list of files that have been selected.
|
|
63
|
+
*/
|
|
64
|
+
filesChange = new EventEmitter();
|
|
17
65
|
constructor(element, naturalFileService, document) {
|
|
18
66
|
this.element = element;
|
|
19
67
|
this.naturalFileService = naturalFileService;
|
|
20
68
|
this.document = document;
|
|
21
|
-
/**
|
|
22
|
-
* Whether we should accept a single file or multiple files
|
|
23
|
-
*/
|
|
24
|
-
this.multiple = false;
|
|
25
|
-
/**
|
|
26
|
-
* Comma-separated list of unique file type specifiers. Like the native element
|
|
27
|
-
* it can be a mix of mime-type and file extensions.
|
|
28
|
-
*
|
|
29
|
-
* See https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#accept
|
|
30
|
-
*/
|
|
31
|
-
this.accept = '';
|
|
32
|
-
/**
|
|
33
|
-
* Maximum file size in bytes. 0 means no validation at all.
|
|
34
|
-
*/
|
|
35
|
-
this.maxSize = 0;
|
|
36
|
-
/**
|
|
37
|
-
* Disable the file selection entirely
|
|
38
|
-
*/
|
|
39
|
-
this.fileSelectionDisabled = false;
|
|
40
|
-
/**
|
|
41
|
-
* Whether the user can click on the element to select something
|
|
42
|
-
*
|
|
43
|
-
* This has only effect during initialization. Subsequent changes will have
|
|
44
|
-
* no effect.
|
|
45
|
-
*/
|
|
46
|
-
this.selectable = false;
|
|
47
|
-
/**
|
|
48
|
-
* If true, the file selection will be broadcast through `NaturalFileService.filesChanged`.
|
|
49
|
-
*
|
|
50
|
-
* It is useful to set this to false if there is two upload on a page with different purpose
|
|
51
|
-
* and the second upload should not be confused with the first one.
|
|
52
|
-
*/
|
|
53
|
-
this.broadcast = true;
|
|
54
|
-
/**
|
|
55
|
-
* The single valid file that has been selected.
|
|
56
|
-
*
|
|
57
|
-
* It is for convenience of use, and will only emit if there is at least one
|
|
58
|
-
* valid file. See `filesChange` for a more complete output.
|
|
59
|
-
*/
|
|
60
|
-
this.fileChange = new EventEmitter();
|
|
61
|
-
/**
|
|
62
|
-
* The list of files that have been selected.
|
|
63
|
-
*/
|
|
64
|
-
this.filesChange = new EventEmitter();
|
|
65
69
|
}
|
|
66
70
|
ngOnDestroy() {
|
|
67
71
|
delete this.fileElement; // faster memory release of dom element
|
|
@@ -194,8 +198,8 @@ export class NaturalAbstractFile {
|
|
|
194
198
|
return null;
|
|
195
199
|
}));
|
|
196
200
|
}
|
|
197
|
-
static
|
|
198
|
-
static
|
|
201
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalAbstractFile, deps: [{ token: i0.ElementRef }, { token: i1.NaturalFileService }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive });
|
|
202
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.3", type: NaturalAbstractFile, isStandalone: true, inputs: { multiple: "multiple", accept: "accept", maxSize: "maxSize", fileSelectionDisabled: "fileSelectionDisabled", selectable: "selectable", broadcast: "broadcast" }, outputs: { fileChange: "fileChange", filesChange: "filesChange" }, host: { listeners: { "change": "onChange($event)" } }, usesOnChanges: true, ngImport: i0 });
|
|
199
203
|
}
|
|
200
204
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalAbstractFile, decorators: [{
|
|
201
205
|
type: Directive,
|
|
@@ -223,4 +227,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImpor
|
|
|
223
227
|
type: HostListener,
|
|
224
228
|
args: ['change', ['$event']]
|
|
225
229
|
}] } });
|
|
226
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL2ZpbGUvYWJzdHJhY3QtZmlsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUVULFlBQVksRUFDWixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFJTCxNQUFNLEdBRVQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILFVBQVUsRUFDViw0QkFBNEIsRUFDNUIsV0FBVyxFQUNYLFlBQVksRUFDWixlQUFlLEVBQ2YsV0FBVyxFQUNYLFdBQVcsRUFDWCxTQUFTLEdBQ1osTUFBTSxTQUFTLENBQUM7QUFFakIsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBQyxRQUFRLEVBQUUsR0FBRyxFQUErQixFQUFFLEVBQUUsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDOzs7QUFtQnpFOzs7Ozs7OztHQVFHO0FBRUgsTUFBTSxPQUFnQixtQkFBbUI7SUF1RHJDLFlBQ3FCLE9BQWdDLEVBQzlCLGtCQUFzQyxFQUN0QixRQUFrQjtRQUZwQyxZQUFPLEdBQVAsT0FBTyxDQUF5QjtRQUM5Qix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RCLGFBQVEsR0FBUixRQUFRLENBQVU7UUF2RHpEOztXQUVHO1FBQ2EsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVqQzs7Ozs7V0FLRztRQUNhLFdBQU0sR0FBRyxFQUFFLENBQUM7UUFFNUI7O1dBRUc7UUFDYSxZQUFPLEdBQUcsQ0FBQyxDQUFDO1FBRTVCOztXQUVHO1FBQ2EsMEJBQXFCLEdBQUcsS0FBSyxDQUFDO1FBRTlDOzs7OztXQUtHO1FBQ2EsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUVuQzs7Ozs7V0FLRztRQUNhLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFFakM7Ozs7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Z0JBS1UsT0FBTztzQkFBdEIsS0FBSztnQkFLVSxxQkFBcUI7c0JBQXBDLEtBQUs7Z0JBUVUsVUFBVTtzQkFBekIsS0FBSztnQkFRVSxTQUFTO3NCQUF4QixLQUFLO2dCQVFvQixVQUFVO3NCQUFuQyxNQUFNO2dCQUttQixXQUFXO3NCQUFwQyxNQUFNO2dCQW1KQSxRQUFRO3NCQURkLFlBQVk7dUJBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIGFjY2VwdFR5cGUsXG4gICAgY3JlYXRlSW52aXNpYmxlRmlsZUlucHV0V3JhcCxcbiAgICBkZXRlY3RTd2lwZSxcbiAgICBldmVudFRvRmlsZXMsXG4gICAgZmlsZUxpc3RUb0FycmF5LFxuICAgIGlzRGlyZWN0b3J5LFxuICAgIGlzRmlsZUlucHV0LFxuICAgIHN0b3BFdmVudCxcbn0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQge05hdHVyYWxGaWxlU2VydmljZX0gZnJvbSAnLi9maWxlLnNlcnZpY2UnO1xuaW1wb3J0IHtET0NVTUVOVH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7Zm9ya0pvaW4sIG1hcCwgT2JzZXJ2YWJsZSwgT2JzZXJ2YWJsZUlucHV0LCBvZiwgdGFwfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IHR5cGUgSW52YWxpZEZpbGUgPSB7XG4gICAgZmlsZTogRmlsZTtcbiAgICBlcnJvcjogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgRmlsZVNlbGVjdGlvbiA9IHtcbiAgICAvKipcbiAgICAgKiBUaGUgbGlzdCBvZiBmaWxlcyB0aGF0IGhhdmUgYmVlbiBzZWxlY3RlZC5cbiAgICAgKi9cbiAgICB2YWxpZDogRmlsZVtdO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGxpc3Qgb2YgZmlsZXMgdGhhdCBoYXZlIGJlZW4gc2VsZWN0ZWQgYnV0IGFyZSBpbnZhbGlkIGFjY29yZGluZyB0byB2YWxpZGF0b3JzLlxuICAgICAqL1xuICAgIGludmFsaWQ6IEludmFsaWRGaWxlW107XG59O1xuXG4vKipcbiAqIEEgbWFzdGVyIGJhc2Ugc2V0IG9mIGxvZ2ljIGludGVuZGVkIHRvIHN1cHBvcnQgZmlsZSBzZWxlY3QvZHJhZy9kcm9wIG9wZXJhdGlvbnNcbiAqXG4gKiBJbiBtb3N0IGNhc2VzIHlvdSBwcm9iYWJseSB3YW50IGNsaWNrLXRvLXNlbGVjdCBhbmQgZHJhZy10by1zZWxlY3QsIHNvIHlvdSBzaG91bGQgdXNlOlxuICpcbiAqICAgICA8ZGl2IG5hdHVyYWxGaWxlRHJvcCBbc2VsZWN0YWJsZV09XCJ0cnVlXCI+PC9kaXY+XG4gKlxuICogQGR5bmFtaWNcbiAqL1xuQERpcmVjdGl2ZSh7c3RhbmRhbG9uZTogdHJ1ZX0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTmF0dXJhbEFic3RyYWN0RmlsZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuICAgIHByaXZhdGUgZmlsZUVsZW1lbnQ/OiBIVE1MSW5wdXRFbGVtZW50O1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB3ZSBzaG91bGQgYWNjZXB0IGEgc2luZ2xlIGZpbGUgb3IgbXVsdGlwbGUgZmlsZXNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgbXVsdGlwbGUgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIENvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHVuaXF1ZSBmaWxlIHR5cGUgc3BlY2lmaWVycy4gTGlrZSB0aGUgbmF0aXZlIGVsZW1lbnRcbiAgICAgKiBpdCBjYW4gYmUgYSBtaXggb2YgbWltZS10eXBlIGFuZCBmaWxlIGV4dGVuc2lvbnMuXG4gICAgICpcbiAgICAgKiBTZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0L2ZpbGUjYWNjZXB0XG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIGFjY2VwdCA9ICcnO1xuXG4gICAgLyoqXG4gICAgICogTWF4aW11bSBmaWxlIHNpemUgaW4gYnl0ZXMuIDAgbWVhbnMgbm8gdmFsaWRhdGlvbiBhdCBhbGwuXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIG1heFNpemUgPSAwO1xuXG4gICAgLyoqXG4gICAgICogRGlzYWJsZSB0aGUgZmlsZSBzZWxlY3Rpb24gZW50aXJlbHlcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgZmlsZVNlbGVjdGlvbkRpc2FibGVkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSB1c2VyIGNhbiBjbGljayBvbiB0aGUgZWxlbWVudCB0byBzZWxlY3Qgc29tZXRoaW5nXG4gICAgICpcbiAgICAgKiBUaGlzIGhhcyBvbmx5IGVmZmVjdCBkdXJpbmcgaW5pdGlhbGl6YXRpb24uIFN1YnNlcXVlbnQgY2hhbmdlcyB3aWxsIGhhdmVcbiAgICAgKiBubyBlZmZlY3QuXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIHNlbGVjdGFibGUgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIElmIHRydWUsIHRoZSBmaWxlIHNlbGVjdGlvbiB3aWxsIGJlIGJyb2FkY2FzdCB0aHJvdWdoIGBOYXR1cmFsRmlsZVNlcnZpY2UuZmlsZXNDaGFuZ2VkYC5cbiAgICAgKlxuICAgICAqIEl0IGlzIHVzZWZ1bCB0byBzZXQgdGhpcyB0byBmYWxzZSBpZiB0aGVyZSBpcyB0d28gdXBsb2FkIG9uIGEgcGFnZSB3aXRoIGRpZmZlcmVudCBwdXJwb3NlXG4gICAgICogYW5kIHRoZSBzZWNvbmQgdXBsb2FkIHNob3VsZCBub3QgYmUgY29uZnVzZWQgd2l0aCB0aGUgZmlyc3Qgb25lLlxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBicm9hZGNhc3QgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHNpbmdsZSB2YWxpZCBmaWxlIHRoYXQgaGFzIGJlZW4gc2VsZWN0ZWQuXG4gICAgICpcbiAgICAgKiBJdCBpcyBmb3IgY29udmVuaWVuY2Ugb2YgdXNlLCBhbmQgd2lsbCBvbmx5IGVtaXQgaWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lXG4gICAgICogdmFsaWQgZmlsZS4gU2VlIGBmaWxlc0NoYW5nZWAgZm9yIGEgbW9yZSBjb21wbGV0ZSBvdXRwdXQuXG4gICAgICovXG4gICAgQE91dHB1dCgpIHB1YmxpYyByZWFkb25seSBmaWxlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxGaWxlPigpO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGxpc3Qgb2YgZmlsZXMgdGhhdCBoYXZlIGJlZW4gc2VsZWN0ZWQuXG4gICAgICovXG4gICAgQE91dHB1dCgpIHB1YmxpYyByZWFkb25seSBmaWxlc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsZVNlbGVjdGlvbj4oKTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgcHJvdGVjdGVkIHJlYWRvbmx5IG5hdHVyYWxGaWxlU2VydmljZTogTmF0dXJhbEZpbGVTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50OiBEb2N1bWVudCxcbiAgICApIHt9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGRlbGV0ZSB0aGlzLmZpbGVFbGVtZW50OyAvLyBmYXN0ZXIgbWVtb3J5IHJlbGVhc2Ugb2YgZG9tIGVsZW1lbnRcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGFibGUpIHtcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlU2VsZWN0aW5nKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmdldEZpbGVFbGVtZW50KCkubXVsdGlwbGUgPSB0aGlzLm11bHRpcGxlO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChjaGFuZ2VzLmFjY2VwdCkge1xuICAgICAgICAgICAgdGhpcy5nZXRGaWxlRWxlbWVudCgpLnNldEF0dHJpYnV0ZSgnYWNjZXB0JywgY2hhbmdlcy5hY2NlcHQuY3VycmVudFZhbHVlIHx8ICcqJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEZpbGVFbGVtZW50KCk6IEhUTUxJbnB1dEVsZW1lbnQge1xuICAgICAgICBpZiAodGhpcy5maWxlRWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmlsZUVsZW1lbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBlbG0gaXMgYSBmaWxlIGlucHV0XG4gICAgICAgIGlmIChpc0ZpbGVJbnB1dCh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCkpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsZUVsZW1lbnQgPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudDtcblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmlsZUVsZW1lbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBjcmVhdGUgZm9vIGZpbGUgaW5wdXRcbiAgICAgICAgY29uc3QgbGFiZWwgPSBjcmVhdGVJbnZpc2libGVGaWxlSW5wdXRXcmFwKHRoaXMuZG9jdW1lbnQpO1xuICAgICAgICB0aGlzLmZpbGVFbGVtZW50ID0gbGFiZWwuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0JylbMF07XG4gICAgICAgIHRoaXMuZmlsZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgdGhpcy5jaGFuZ2VGbi5iaW5kKHRoaXMpKTtcbiAgICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQobGFiZWwpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmZpbGVFbGVtZW50O1xuICAgIH1cblxuICAgIHByaXZhdGUgZW5hYmxlU2VsZWN0aW5nKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBlbG0gPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudDtcblxuICAgICAgICBpZiAoaXNGaWxlSW5wdXQoZWxtKSkge1xuICAgICAgICAgICAgY29uc3QgYmluZGVkSGFuZGxlciA9ICgpOiB2b2lkID0+IHRoaXMuYmVmb3JlU2VsZWN0KCk7XG4gICAgICAgICAgICBlbG0uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBiaW5kZWRIYW5kbGVyKTtcbiAgICAgICAgICAgIGVsbS5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgYmluZGVkSGFuZGxlcik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBiaW5kZWRIYW5kbGVyID0gKGV2ZW50OiBFdmVudCk6IGJvb2xlYW4gPT4gdGhpcy5jbGlja0hhbmRsZXIoZXZlbnQpO1xuICAgICAgICAgICAgZWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgYmluZGVkSGFuZGxlcik7XG4gICAgICAgICAgICBlbG0uYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIGJpbmRlZEhhbmRsZXIpO1xuICAgICAgICAgICAgZWxtLmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgYmluZGVkSGFuZGxlcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaGFuZGxlRmlsZXMoZmlsZXM6IEZpbGVbXSk6IHZvaWQge1xuICAgICAgICBjb25zdCBzZWxlY3Rpb246IEZpbGVTZWxlY3Rpb24gPSB7XG4gICAgICAgICAgICB2YWxpZDogW10sXG4gICAgICAgICAgICBpbnZhbGlkOiBbXSxcbiAgICAgICAgfTtcblxuICAgICAgICBmb3JrSm9pbihcbiAgICAgICAgICAgIGZpbGVzLm1hcChmaWxlID0+XG4gICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0ZShmaWxlKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICB0YXAoZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uLmludmFsaWQucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6IGZpbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiBlcnJvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uLnZhbGlkLnB1c2goZmlsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICApLFxuICAgICAgICApLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBpZiAoc2VsZWN0aW9uLnZhbGlkLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsZUNoYW5nZS5lbWl0KHNlbGVjdGlvbi52YWxpZFswXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChzZWxlY3Rpb24udmFsaWQubGVuZ3RoIHx8IHNlbGVjdGlvbi5pbnZhbGlkLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsZXNDaGFuZ2UuZW1pdChzZWxlY3Rpb24pO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYnJvYWRjYXN0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmF0dXJhbEZpbGVTZXJ2aWNlLmZpbGVzQ2hhbmdlZC5uZXh0KHNlbGVjdGlvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmdldEZpbGVFbGVtZW50KCkudmFsdWUgPSAnJztcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsbGVkIHdoZW4gaW5wdXQgaGFzIGZpbGVzXG4gICAgICovXG4gICAgcHJpdmF0ZSBjaGFuZ2VGbihldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCEoZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpbGVMaXN0ID0gZXZlbnQudGFyZ2V0LmZpbGVzO1xuXG4gICAgICAgIGlmICghZmlsZUxpc3QpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHN0b3BFdmVudChldmVudCk7XG4gICAgICAgIHRoaXMuaGFuZGxlRmlsZXMoZmlsZUxpc3RUb0FycmF5KGZpbGVMaXN0KSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbGlja0hhbmRsZXIoZXZlbnQ6IEV2ZW50KTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGVsbSA9IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICAgICAgICBpZiAoZWxtLmdldEF0dHJpYnV0ZSgnZGlzYWJsZWQnKSB8fCB0aGlzLmZpbGVTZWxlY3Rpb25EaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gcHJldmVudCB0aGUgY2xpY2sgaWYgaXQgaXMgYSBzd2lwZVxuICAgICAgICBpZiAoZGV0ZWN0U3dpcGUoZXZlbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpbGVFbG0gPSB0aGlzLmdldEZpbGVFbGVtZW50KCk7XG4gICAgICAgIGZpbGVFbG0uY2xpY2soKTtcbiAgICAgICAgdGhpcy5iZWZvcmVTZWxlY3QoKTtcblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBiZWZvcmVTZWxlY3QoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5maWxlRWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gaWYgbm8gZmlsZXMgaW4gYXJyYXksIGJlIHN1cmUgYnJvd3NlciBkb2VzbnQgcHJldmVudCByZXNlbGVjdCBvZiBzYW1lIGZpbGUgKHNlZSBnaXRodWIgaXNzdWUgMjcpXG4gICAgICAgIHRoaXMuZmlsZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdjaGFuZ2UnLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyBvbkNoYW5nZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZmlsZUxpc3QgPSB0aGlzLmdldEZpbGVFbGVtZW50KCkuZmlsZXM7XG4gICAgICAgIGNvbnN0IGZpbGVzOiBGaWxlW10gPSBmaWxlTGlzdCA/IGZpbGVMaXN0VG9BcnJheShmaWxlTGlzdCkgOiBldmVudFRvRmlsZXMoZXZlbnQpO1xuXG4gICAgICAgIGlmICghZmlsZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBzdG9wRXZlbnQoZXZlbnQpO1xuICAgICAgICB0aGlzLmhhbmRsZUZpbGVzKGZpbGVzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHZhbGlkYXRlKGZpbGU6IEZpbGUpOiBPYnNlcnZhYmxlPHN0cmluZyB8IG51bGw+IHtcbiAgICAgICAgcmV0dXJuIGZvcmtKb2luPFJlY29yZDxzdHJpbmcsIE9ic2VydmFibGVJbnB1dDxib29sZWFuPj4+KHtcbiAgICAgICAgICAgIGFjY2VwdDogb2YoYWNjZXB0VHlwZSh0aGlzLmFjY2VwdCwgZmlsZS50eXBlLCBmaWxlLm5hbWUpKSxcbiAgICAgICAgICAgIGZpbGVTaXplOiBvZighKHRoaXMubWF4U2l6ZSAmJiBmaWxlLnNpemUgPiB0aGlzLm1heFNpemUpKSxcbiAgICAgICAgICAgIGRpcmVjdG9yeTogaXNEaXJlY3RvcnkoZmlsZSksXG4gICAgICAgIH0pLnBpcGUoXG4gICAgICAgICAgICBtYXAocmVzdWx0ID0+IHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhyZXN1bHQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBrZXk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==
|
|
230
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL2ZpbGUvYWJzdHJhY3QtZmlsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUVULFlBQVksRUFDWixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFJTCxNQUFNLEdBRVQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILFVBQVUsRUFDViw0QkFBNEIsRUFDNUIsV0FBVyxFQUNYLFlBQVksRUFDWixlQUFlLEVBQ2YsV0FBVyxFQUNYLFdBQVcsRUFDWCxTQUFTLEdBQ1osTUFBTSxTQUFTLENBQUM7QUFFakIsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBQyxRQUFRLEVBQUUsR0FBRyxFQUErQixFQUFFLEVBQUUsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDOzs7QUFtQnpFOzs7Ozs7OztHQVFHO0FBRUgsTUFBTSxPQUFnQixtQkFBbUI7SUF3RGhCO0lBQ0U7SUFDZ0I7SUF6RC9CLFdBQVcsQ0FBb0I7SUFFdkM7O09BRUc7SUFDYSxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBRWpDOzs7OztPQUtHO0lBQ2EsTUFBTSxHQUFHLEVBQUUsQ0FBQztJQUU1Qjs7T0FFRztJQUNhLE9BQU8sR0FBRyxDQUFDLENBQUM7SUFFNUI7O09BRUc7SUFDYSxxQkFBcUIsR0FBRyxLQUFLLENBQUM7SUFFOUM7Ozs7O09BS0c7SUFDYSxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBRW5DOzs7OztPQUtHO0lBQ2EsU0FBUyxHQUFHLElBQUksQ0FBQztJQUVqQzs7Ozs7T0FLRztJQUN1QixVQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUVoRTs7T0FFRztJQUN1QixXQUFXLEdBQUcsSUFBSSxZQUFZLEVBQWlCLENBQUM7SUFF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QUF2QixLQUFLO2dCQVFVLE1BQU07c0JBQXJCLEtBQUs7Z0JBS1UsT0FBTztzQkFBdEIsS0FBSztnQkFLVSxxQkFBcUI7c0JBQXBDLEtBQUs7Z0JBUVUsVUFBVTtzQkFBekIsS0FBSztnQkFRVSxTQUFTO3NCQUF4QixLQUFLO2dCQVFvQixVQUFVO3NCQUFuQyxNQUFNO2dCQUttQixXQUFXO3NCQUFwQyxNQUFNO2dCQW1KQSxRQUFRO3NCQURkLFlBQVk7dUJBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIGFjY2VwdFR5cGUsXG4gICAgY3JlYXRlSW52aXNpYmxlRmlsZUlucHV0V3JhcCxcbiAgICBkZXRlY3RTd2lwZSxcbiAgICBldmVudFRvRmlsZXMsXG4gICAgZmlsZUxpc3RUb0FycmF5LFxuICAgIGlzRGlyZWN0b3J5LFxuICAgIGlzRmlsZUlucHV0LFxuICAgIHN0b3BFdmVudCxcbn0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQge05hdHVyYWxGaWxlU2VydmljZX0gZnJvbSAnLi9maWxlLnNlcnZpY2UnO1xuaW1wb3J0IHtET0NVTUVOVH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7Zm9ya0pvaW4sIG1hcCwgT2JzZXJ2YWJsZSwgT2JzZXJ2YWJsZUlucHV0LCBvZiwgdGFwfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IHR5cGUgSW52YWxpZEZpbGUgPSB7XG4gICAgZmlsZTogRmlsZTtcbiAgICBlcnJvcjogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgRmlsZVNlbGVjdGlvbiA9IHtcbiAgICAvKipcbiAgICAgKiBUaGUgbGlzdCBvZiBmaWxlcyB0aGF0IGhhdmUgYmVlbiBzZWxlY3RlZC5cbiAgICAgKi9cbiAgICB2YWxpZDogRmlsZVtdO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGxpc3Qgb2YgZmlsZXMgdGhhdCBoYXZlIGJlZW4gc2VsZWN0ZWQgYnV0IGFyZSBpbnZhbGlkIGFjY29yZGluZyB0byB2YWxpZGF0b3JzLlxuICAgICAqL1xuICAgIGludmFsaWQ6IEludmFsaWRGaWxlW107XG59O1xuXG4vKipcbiAqIEEgbWFzdGVyIGJhc2Ugc2V0IG9mIGxvZ2ljIGludGVuZGVkIHRvIHN1cHBvcnQgZmlsZSBzZWxlY3QvZHJhZy9kcm9wIG9wZXJhdGlvbnNcbiAqXG4gKiBJbiBtb3N0IGNhc2VzIHlvdSBwcm9iYWJseSB3YW50IGNsaWNrLXRvLXNlbGVjdCBhbmQgZHJhZy10by1zZWxlY3QsIHNvIHlvdSBzaG91bGQgdXNlOlxuICpcbiAqICAgICA8ZGl2IG5hdHVyYWxGaWxlRHJvcCBbc2VsZWN0YWJsZV09XCJ0cnVlXCI+PC9kaXY+XG4gKlxuICogQGR5bmFtaWNcbiAqL1xuQERpcmVjdGl2ZSh7c3RhbmRhbG9uZTogdHJ1ZX0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTmF0dXJhbEFic3RyYWN0RmlsZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuICAgIHByaXZhdGUgZmlsZUVsZW1lbnQ/OiBIVE1MSW5wdXRFbGVtZW50O1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB3ZSBzaG91bGQgYWNjZXB0IGEgc2luZ2xlIGZpbGUgb3IgbXVsdGlwbGUgZmlsZXNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgbXVsdGlwbGUgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIENvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHVuaXF1ZSBmaWxlIHR5cGUgc3BlY2lmaWVycy4gTGlrZSB0aGUgbmF0aXZlIGVsZW1lbnRcbiAgICAgKiBpdCBjYW4gYmUgYSBtaXggb2YgbWltZS10eXBlIGFuZCBmaWxlIGV4dGVuc2lvbnMuXG4gICAgICpcbiAgICAgKiBTZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0L2ZpbGUjYWNjZXB0XG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIGFjY2VwdCA9ICcnO1xuXG4gICAgLyoqXG4gICAgICogTWF4aW11bSBmaWxlIHNpemUgaW4gYnl0ZXMuIDAgbWVhbnMgbm8gdmFsaWRhdGlvbiBhdCBhbGwuXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIG1heFNpemUgPSAwO1xuXG4gICAgLyoqXG4gICAgICogRGlzYWJsZSB0aGUgZmlsZSBzZWxlY3Rpb24gZW50aXJlbHlcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgZmlsZVNlbGVjdGlvbkRpc2FibGVkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSB1c2VyIGNhbiBjbGljayBvbiB0aGUgZWxlbWVudCB0byBzZWxlY3Qgc29tZXRoaW5nXG4gICAgICpcbiAgICAgKiBUaGlzIGhhcyBvbmx5IGVmZmVjdCBkdXJpbmcgaW5pdGlhbGl6YXRpb24uIFN1YnNlcXVlbnQgY2hhbmdlcyB3aWxsIGhhdmVcbiAgICAgKiBubyBlZmZlY3QuXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIHNlbGVjdGFibGUgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIElmIHRydWUsIHRoZSBmaWxlIHNlbGVjdGlvbiB3aWxsIGJlIGJyb2FkY2FzdCB0aHJvdWdoIGBOYXR1cmFsRmlsZVNlcnZpY2UuZmlsZXNDaGFuZ2VkYC5cbiAgICAgKlxuICAgICAqIEl0IGlzIHVzZWZ1bCB0byBzZXQgdGhpcyB0byBmYWxzZSBpZiB0aGVyZSBpcyB0d28gdXBsb2FkIG9uIGEgcGFnZSB3aXRoIGRpZmZlcmVudCBwdXJwb3NlXG4gICAgICogYW5kIHRoZSBzZWNvbmQgdXBsb2FkIHNob3VsZCBub3QgYmUgY29uZnVzZWQgd2l0aCB0aGUgZmlyc3Qgb25lLlxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBicm9hZGNhc3QgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHNpbmdsZSB2YWxpZCBmaWxlIHRoYXQgaGFzIGJlZW4gc2VsZWN0ZWQuXG4gICAgICpcbiAgICAgKiBJdCBpcyBmb3IgY29udmVuaWVuY2Ugb2YgdXNlLCBhbmQgd2lsbCBvbmx5IGVtaXQgaWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lXG4gICAgICogdmFsaWQgZmlsZS4gU2VlIGBmaWxlc0NoYW5nZWAgZm9yIGEgbW9yZSBjb21wbGV0ZSBvdXRwdXQuXG4gICAgICovXG4gICAgQE91dHB1dCgpIHB1YmxpYyByZWFkb25seSBmaWxlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxGaWxlPigpO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGxpc3Qgb2YgZmlsZXMgdGhhdCBoYXZlIGJlZW4gc2VsZWN0ZWQuXG4gICAgICovXG4gICAgQE91dHB1dCgpIHB1YmxpYyByZWFkb25seSBmaWxlc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsZVNlbGVjdGlvbj4oKTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgcHJvdGVjdGVkIHJlYWRvbmx5IG5hdHVyYWxGaWxlU2VydmljZTogTmF0dXJhbEZpbGVTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50OiBEb2N1bWVudCxcbiAgICApIHt9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGRlbGV0ZSB0aGlzLmZpbGVFbGVtZW50OyAvLyBmYXN0ZXIgbWVtb3J5IHJlbGVhc2Ugb2YgZG9tIGVsZW1lbnRcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGFibGUpIHtcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlU2VsZWN0aW5nKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmdldEZpbGVFbGVtZW50KCkubXVsdGlwbGUgPSB0aGlzLm11bHRpcGxlO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChjaGFuZ2VzLmFjY2VwdCkge1xuICAgICAgICAgICAgdGhpcy5nZXRGaWxlRWxlbWVudCgpLnNldEF0dHJpYnV0ZSgnYWNjZXB0JywgY2hhbmdlcy5hY2NlcHQuY3VycmVudFZhbHVlIHx8ICcqJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEZpbGVFbGVtZW50KCk6IEhUTUxJbnB1dEVsZW1lbnQge1xuICAgICAgICBpZiAodGhpcy5maWxlRWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmlsZUVsZW1lbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBlbG0gaXMgYSBmaWxlIGlucHV0XG4gICAgICAgIGlmIChpc0ZpbGVJbnB1dCh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCkpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsZUVsZW1lbnQgPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudDtcblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmlsZUVsZW1lbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBjcmVhdGUgZm9vIGZpbGUgaW5wdXRcbiAgICAgICAgY29uc3QgbGFiZWwgPSBjcmVhdGVJbnZpc2libGVGaWxlSW5wdXRXcmFwKHRoaXMuZG9jdW1lbnQpO1xuICAgICAgICB0aGlzLmZpbGVFbGVtZW50ID0gbGFiZWwuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0JylbMF07XG4gICAgICAgIHRoaXMuZmlsZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgdGhpcy5jaGFuZ2VGbi5iaW5kKHRoaXMpKTtcbiAgICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQobGFiZWwpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmZpbGVFbGVtZW50O1xuICAgIH1cblxuICAgIHByaXZhdGUgZW5hYmxlU2VsZWN0aW5nKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBlbG0gPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudDtcblxuICAgICAgICBpZiAoaXNGaWxlSW5wdXQoZWxtKSkge1xuICAgICAgICAgICAgY29uc3QgYmluZGVkSGFuZGxlciA9ICgpOiB2b2lkID0+IHRoaXMuYmVmb3JlU2VsZWN0KCk7XG4gICAgICAgICAgICBlbG0uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBiaW5kZWRIYW5kbGVyKTtcbiAgICAgICAgICAgIGVsbS5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgYmluZGVkSGFuZGxlcik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBiaW5kZWRIYW5kbGVyID0gKGV2ZW50OiBFdmVudCk6IGJvb2xlYW4gPT4gdGhpcy5jbGlja0hhbmRsZXIoZXZlbnQpO1xuICAgICAgICAgICAgZWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgYmluZGVkSGFuZGxlcik7XG4gICAgICAgICAgICBlbG0uYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIGJpbmRlZEhhbmRsZXIpO1xuICAgICAgICAgICAgZWxtLmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgYmluZGVkSGFuZGxlcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaGFuZGxlRmlsZXMoZmlsZXM6IEZpbGVbXSk6IHZvaWQge1xuICAgICAgICBjb25zdCBzZWxlY3Rpb246IEZpbGVTZWxlY3Rpb24gPSB7XG4gICAgICAgICAgICB2YWxpZDogW10sXG4gICAgICAgICAgICBpbnZhbGlkOiBbXSxcbiAgICAgICAgfTtcblxuICAgICAgICBmb3JrSm9pbihcbiAgICAgICAgICAgIGZpbGVzLm1hcChmaWxlID0+XG4gICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0ZShmaWxlKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICB0YXAoZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uLmludmFsaWQucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6IGZpbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiBlcnJvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uLnZhbGlkLnB1c2goZmlsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICApLFxuICAgICAgICApLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBpZiAoc2VsZWN0aW9uLnZhbGlkLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsZUNoYW5nZS5lbWl0KHNlbGVjdGlvbi52YWxpZFswXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChzZWxlY3Rpb24udmFsaWQubGVuZ3RoIHx8IHNlbGVjdGlvbi5pbnZhbGlkLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsZXNDaGFuZ2UuZW1pdChzZWxlY3Rpb24pO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYnJvYWRjYXN0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmF0dXJhbEZpbGVTZXJ2aWNlLmZpbGVzQ2hhbmdlZC5uZXh0KHNlbGVjdGlvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmdldEZpbGVFbGVtZW50KCkudmFsdWUgPSAnJztcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsbGVkIHdoZW4gaW5wdXQgaGFzIGZpbGVzXG4gICAgICovXG4gICAgcHJpdmF0ZSBjaGFuZ2VGbihldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCEoZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpbGVMaXN0ID0gZXZlbnQudGFyZ2V0LmZpbGVzO1xuXG4gICAgICAgIGlmICghZmlsZUxpc3QpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHN0b3BFdmVudChldmVudCk7XG4gICAgICAgIHRoaXMuaGFuZGxlRmlsZXMoZmlsZUxpc3RUb0FycmF5KGZpbGVMaXN0KSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbGlja0hhbmRsZXIoZXZlbnQ6IEV2ZW50KTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGVsbSA9IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICAgICAgICBpZiAoZWxtLmdldEF0dHJpYnV0ZSgnZGlzYWJsZWQnKSB8fCB0aGlzLmZpbGVTZWxlY3Rpb25EaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gcHJldmVudCB0aGUgY2xpY2sgaWYgaXQgaXMgYSBzd2lwZVxuICAgICAgICBpZiAoZGV0ZWN0U3dpcGUoZXZlbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpbGVFbG0gPSB0aGlzLmdldEZpbGVFbGVtZW50KCk7XG4gICAgICAgIGZpbGVFbG0uY2xpY2soKTtcbiAgICAgICAgdGhpcy5iZWZvcmVTZWxlY3QoKTtcblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBiZWZvcmVTZWxlY3QoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5maWxlRWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gaWYgbm8gZmlsZXMgaW4gYXJyYXksIGJlIHN1cmUgYnJvd3NlciBkb2VzbnQgcHJldmVudCByZXNlbGVjdCBvZiBzYW1lIGZpbGUgKHNlZSBnaXRodWIgaXNzdWUgMjcpXG4gICAgICAgIHRoaXMuZmlsZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdjaGFuZ2UnLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyBvbkNoYW5nZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZmlsZUxpc3QgPSB0aGlzLmdldEZpbGVFbGVtZW50KCkuZmlsZXM7XG4gICAgICAgIGNvbnN0IGZpbGVzOiBGaWxlW10gPSBmaWxlTGlzdCA/IGZpbGVMaXN0VG9BcnJheShmaWxlTGlzdCkgOiBldmVudFRvRmlsZXMoZXZlbnQpO1xuXG4gICAgICAgIGlmICghZmlsZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBzdG9wRXZlbnQoZXZlbnQpO1xuICAgICAgICB0aGlzLmhhbmRsZUZpbGVzKGZpbGVzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHZhbGlkYXRlKGZpbGU6IEZpbGUpOiBPYnNlcnZhYmxlPHN0cmluZyB8IG51bGw+IHtcbiAgICAgICAgcmV0dXJuIGZvcmtKb2luPFJlY29yZDxzdHJpbmcsIE9ic2VydmFibGVJbnB1dDxib29sZWFuPj4+KHtcbiAgICAgICAgICAgIGFjY2VwdDogb2YoYWNjZXB0VHlwZSh0aGlzLmFjY2VwdCwgZmlsZS50eXBlLCBmaWxlLm5hbWUpKSxcbiAgICAgICAgICAgIGZpbGVTaXplOiBvZighKHRoaXMubWF4U2l6ZSAmJiBmaWxlLnNpemUgPiB0aGlzLm1heFNpemUpKSxcbiAgICAgICAgICAgIGRpcmVjdG9yeTogaXNEaXJlY3RvcnkoZmlsZSksXG4gICAgICAgIH0pLnBpcGUoXG4gICAgICAgICAgICBtYXAocmVzdWx0ID0+IHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhyZXN1bHQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBrZXk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==
|