@yuuvis/client-framework 0.7.4 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/actions/lib/actions/delete-action/delete-action.d.ts +1 -0
- package/common/index.d.ts +1 -0
- package/common/lib/services/error-messages/error-messages.service.d.ts +7 -0
- package/common/lib/services/index.d.ts +1 -0
- package/esm2022/actions/lib/actions/delete-action/delete-action.mjs +4 -10
- package/esm2022/actions/lib/components/contextmenu/contextmenu.component.mjs +2 -2
- package/esm2022/common/index.mjs +2 -1
- package/esm2022/common/lib/directives/drag-select.directive.mjs +2 -2
- package/esm2022/common/lib/services/error-messages/error-messages.service.mjs +68 -0
- package/esm2022/common/lib/services/index.mjs +2 -0
- package/esm2022/forms/index.mjs +13 -8
- package/esm2022/forms/lib/elements/data-grid/data-grid/data-grid.component.mjs +172 -0
- package/esm2022/forms/lib/elements/data-grid/edit-table-data/edit-data.component.mjs +95 -0
- package/esm2022/forms/lib/elements/data-grid/model/data-grid.interface.mjs +9 -0
- package/esm2022/forms/lib/elements/datetime-range/datetime-range.component.mjs +32 -32
- package/esm2022/forms/lib/elements/index.mjs +11 -0
- package/esm2022/forms/lib/elements/number/number.component.mjs +3 -3
- package/esm2022/forms/lib/elements/number-range/number-range.component.mjs +3 -3
- package/esm2022/forms/lib/elements/organization/organization.component.mjs +47 -29
- package/esm2022/forms/lib/elements/range-select-date/date-range-picker/date-range-picker.component.mjs +38 -0
- package/esm2022/forms/lib/elements/range-select-date/range-select-date.component.mjs +181 -0
- package/esm2022/forms/lib/elements/range-select-date/range-select-date.interface.mjs +2 -0
- package/esm2022/forms/lib/elements/range-select-filesize/range-select-filesize.component.mjs +98 -0
- package/esm2022/forms/lib/elements/range-select-filesize/range-select-filesize.interface.mjs +2 -0
- package/esm2022/forms/lib/elements/string/string.component.mjs +10 -3
- package/esm2022/icons/lib/icons.mjs +3 -2
- package/esm2022/list/lib/list.component.mjs +6 -4
- package/esm2022/metadata-form/lib/metadata-default-templates/metadata-default-templates.component.mjs +5 -4
- package/esm2022/metadata-form/lib/metadata-form-element-registry.service.mjs +1 -1
- package/esm2022/metadata-form/lib/metadata-form-field/metadata-form-field.component.mjs +9 -52
- package/esm2022/object-details/index.mjs +2 -1
- package/esm2022/object-details/lib/object-audit/object-audit.component.mjs +3 -3
- package/esm2022/object-details/lib/object-metadata/object-metadata.component.mjs +5 -4
- package/esm2022/object-details/lib/retention-badge/retention-badge.component.mjs +27 -0
- package/esm2022/object-flavor/lib/object-flavor/object-flavor.component.mjs +2 -2
- package/esm2022/object-flavor/lib/object-flavor-picker/object-flavor-picker.component.mjs +2 -2
- package/esm2022/object-form/index.mjs +1 -1
- package/esm2022/object-form/lib/object-form.component.mjs +2 -1
- package/esm2022/object-form/lib/object-form.service.mjs +5 -2
- package/esm2022/object-summary/lib/object-summary/object-summary.component.mjs +15 -13
- package/esm2022/pagination/lib/pagination.component.mjs +4 -6
- package/esm2022/sequence-list/index.mjs +1 -3
- package/esm2022/sequence-list/lib/sequence-list.component.mjs +11 -16
- package/esm2022/sequence-list/lib/sequence-list.interface.mjs +1 -1
- package/esm2022/tile-list/lib/tile/tile.component.mjs +3 -3
- package/esm2022/tile-list/lib/tile-config/tile-config.component.mjs +2 -2
- package/esm2022/tile-list/lib/tile-extension/extensions/email.extension.mjs +1 -1
- package/fesm2022/yuuvis-client-framework-actions.mjs +4 -10
- package/fesm2022/yuuvis-client-framework-actions.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-common.mjs +69 -4
- package/fesm2022/yuuvis-client-framework-common.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-forms.mjs +1335 -755
- package/fesm2022/yuuvis-client-framework-forms.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-icons.mjs +2 -1
- package/fesm2022/yuuvis-client-framework-icons.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-list.mjs +5 -3
- package/fesm2022/yuuvis-client-framework-list.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-metadata-form.mjs +12 -55
- package/fesm2022/yuuvis-client-framework-metadata-form.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-object-details.mjs +28 -7
- package/fesm2022/yuuvis-client-framework-object-details.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-object-flavor.mjs +2 -2
- package/fesm2022/yuuvis-client-framework-object-flavor.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-object-form.mjs +5 -1
- package/fesm2022/yuuvis-client-framework-object-form.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-object-summary.mjs +14 -12
- package/fesm2022/yuuvis-client-framework-object-summary.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-pagination.mjs +3 -5
- package/fesm2022/yuuvis-client-framework-pagination.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-sequence-list.mjs +17 -296
- package/fesm2022/yuuvis-client-framework-sequence-list.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-tile-list.mjs +3 -3
- package/fesm2022/yuuvis-client-framework-tile-list.mjs.map +1 -1
- package/forms/index.d.ts +5 -7
- package/forms/lib/elements/data-grid/data-grid/data-grid.component.d.ts +38 -0
- package/forms/lib/elements/data-grid/edit-table-data/edit-data.component.d.ts +21 -0
- package/forms/lib/elements/data-grid/model/data-grid.interface.d.ts +14 -0
- package/forms/lib/elements/datetime-range/datetime-range.component.d.ts +2 -1
- package/forms/lib/elements/index.d.ts +10 -0
- package/forms/lib/elements/organization/organization.component.d.ts +13 -4
- package/forms/lib/elements/range-select-date/date-range-picker/date-range-picker.component.d.ts +13 -0
- package/forms/lib/elements/range-select-date/range-select-date.component.d.ts +33 -0
- package/forms/lib/elements/range-select-date/range-select-date.interface.d.ts +5 -0
- package/forms/lib/elements/range-select-filesize/range-select-filesize.component.d.ts +28 -0
- package/forms/lib/elements/range-select-filesize/range-select-filesize.interface.d.ts +5 -0
- package/list/lib/list.component.d.ts +2 -1
- package/metadata-form/lib/metadata-form-field/metadata-form-field.component.d.ts +1 -1
- package/object-details/index.d.ts +1 -0
- package/object-details/lib/retention-badge/retention-badge.component.d.ts +12 -0
- package/package.json +10 -10
- package/sequence-list/index.d.ts +0 -2
- package/sequence-list/lib/sequence-list.component.d.ts +2 -2
- package/sequence-list/lib/sequence-list.interface.d.ts +5 -4
- package/styles/client-framework.scss +55 -18
- package/esm2022/sequence-list/lib/sequence-list-template-manage/sequence-list-template-manage.component.mjs +0 -183
- package/esm2022/sequence-list/lib/sequence-list-templates/sequence-list-templates.component.mjs +0 -114
- package/sequence-list/lib/sequence-list-template-manage/sequence-list-template-manage.component.d.ts +0 -52
- package/sequence-list/lib/sequence-list-templates/sequence-list-templates.component.d.ts +0 -36
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { CommonModule } from '@angular/common';
|
|
2
2
|
import { Component, EventEmitter, forwardRef, HostBinding, HostListener, inject, input, Input, Output, ViewChild } from '@angular/core';
|
|
3
3
|
import { FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
4
|
-
import { Classification, SystemService, TranslateModule, UserService, YuvUser } from '@yuuvis/client-core';
|
|
4
|
+
import { Classification, SystemService, TranslateModule, TranslateService, UserService, YuvUser } from '@yuuvis/client-core';
|
|
5
5
|
import { YUV_ICONS } from '@yuuvis/client-framework/icons';
|
|
6
6
|
import { AutoComplete, YvcAutocompleteModule } from '@yuuvis/components/autocomplete';
|
|
7
7
|
import { YvcIconModule } from '@yuuvis/components/icon';
|
|
8
8
|
import { forkJoin, of } from 'rxjs';
|
|
9
|
-
import { catchError } from 'rxjs/operators';
|
|
9
|
+
import { catchError, map } from 'rxjs/operators';
|
|
10
10
|
import * as i0 from "@angular/core";
|
|
11
|
-
import * as i1 from "@angular/
|
|
12
|
-
import * as i2 from "@
|
|
13
|
-
import * as i3 from "@yuuvis/components/
|
|
14
|
-
import * as i4 from "@yuuvis/
|
|
11
|
+
import * as i1 from "@angular/common";
|
|
12
|
+
import * as i2 from "@angular/forms";
|
|
13
|
+
import * as i3 from "@yuuvis/components/autocomplete";
|
|
14
|
+
import * as i4 from "@yuuvis/components/icon";
|
|
15
15
|
/**
|
|
16
16
|
* Creates form input for organisation values.
|
|
17
17
|
* Implements `ControlValueAccessor` so it can be used within Angular forms.
|
|
@@ -25,6 +25,7 @@ export class OrganizationComponent {
|
|
|
25
25
|
constructor() {
|
|
26
26
|
this.system = inject(SystemService);
|
|
27
27
|
this.userService = inject(UserService);
|
|
28
|
+
this.translate = inject(TranslateService);
|
|
28
29
|
this.minLength = 2;
|
|
29
30
|
this.icons = {
|
|
30
31
|
organizationMulti: YUV_ICONS['group'],
|
|
@@ -63,12 +64,12 @@ export class OrganizationComponent {
|
|
|
63
64
|
*/
|
|
64
65
|
this.withMetadata = input(false);
|
|
65
66
|
this.userSelect = new EventEmitter();
|
|
66
|
-
// eslint-disable-next-line @typescript-eslint/no-
|
|
67
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
67
68
|
this.propagateChange = (_) => { };
|
|
68
69
|
}
|
|
69
70
|
set innerValue(iv) {
|
|
70
71
|
this._innerValue = iv || [];
|
|
71
|
-
this.userSelect.emit(this._innerValue);
|
|
72
|
+
this.userSelect.emit(this._innerValue.map((v) => v.user));
|
|
72
73
|
}
|
|
73
74
|
get innerValue() {
|
|
74
75
|
return this._innerValue;
|
|
@@ -110,7 +111,7 @@ export class OrganizationComponent {
|
|
|
110
111
|
registerOnChange(fn) {
|
|
111
112
|
this.propagateChange = fn;
|
|
112
113
|
}
|
|
113
|
-
// eslint-disable-next-line @typescript-eslint/no-
|
|
114
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
114
115
|
registerOnTouched(fn) { }
|
|
115
116
|
propagate() {
|
|
116
117
|
this.propagateChange(this.#getPropagateValue());
|
|
@@ -120,16 +121,16 @@ export class OrganizationComponent {
|
|
|
120
121
|
? this.withMetadata()
|
|
121
122
|
? this.value
|
|
122
123
|
? this._innerValue.map((v) => ({
|
|
123
|
-
id: v.id,
|
|
124
|
-
title: v.title
|
|
124
|
+
id: v.user.id,
|
|
125
|
+
title: v.user.title
|
|
125
126
|
}))
|
|
126
127
|
: this.value
|
|
127
128
|
: this.value
|
|
128
129
|
: this.withMetadata()
|
|
129
130
|
? this.value
|
|
130
131
|
? {
|
|
131
|
-
id: this._innerValue[0].id,
|
|
132
|
-
title: this._innerValue[0].title
|
|
132
|
+
id: this._innerValue[0].user.id,
|
|
133
|
+
title: this._innerValue[0].user.title
|
|
133
134
|
}
|
|
134
135
|
: this.value
|
|
135
136
|
: this.value;
|
|
@@ -138,17 +139,29 @@ export class OrganizationComponent {
|
|
|
138
139
|
this.autoCompleteInput.focusInput();
|
|
139
140
|
}
|
|
140
141
|
resolveFn(value) {
|
|
141
|
-
const
|
|
142
|
-
const
|
|
142
|
+
const obs = (value instanceof Array ? value : [value]).map((v) => {
|
|
143
|
+
const valueID = typeof v === 'string' ? v : v.id;
|
|
144
|
+
const match = this.innerValue.find((iv) => iv.user.id === valueID);
|
|
143
145
|
return match
|
|
144
146
|
? of(match)
|
|
145
|
-
: this.userService.getUserById(
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
147
|
+
: this.userService.getUserById(valueID).pipe(map((res) => ({
|
|
148
|
+
user: res,
|
|
149
|
+
state: {}
|
|
150
|
+
})), catchError((e) => {
|
|
151
|
+
const user = new YuvUser({
|
|
152
|
+
id: typeof v === 'string' ? v : v.id
|
|
153
|
+
});
|
|
154
|
+
user.title = typeof v === 'string' ? v : v.title;
|
|
155
|
+
return of({
|
|
156
|
+
user,
|
|
157
|
+
state: {
|
|
158
|
+
notFound: e.status === 404
|
|
159
|
+
},
|
|
160
|
+
titleString: e.status === 404 ? this.translate.instant('yuv.form.element.organization.user.not-found') : undefined
|
|
161
|
+
});
|
|
162
|
+
}));
|
|
150
163
|
});
|
|
151
|
-
return forkJoin(
|
|
164
|
+
return forkJoin(obs).subscribe((data) => {
|
|
152
165
|
this.innerValue = data;
|
|
153
166
|
// setTimeout(() => this.autoCompleteInput.cd.markForCheck());
|
|
154
167
|
});
|
|
@@ -157,7 +170,12 @@ export class OrganizationComponent {
|
|
|
157
170
|
if (query.length >= this.minLength) {
|
|
158
171
|
this.userService.queryUser(query, this.excludeMe, this.filterRoles).subscribe({
|
|
159
172
|
next: (users) => {
|
|
160
|
-
this.autocompleteRes = users
|
|
173
|
+
this.autocompleteRes = users
|
|
174
|
+
.filter((user) => !this.innerValue.some((value) => value.user.id === user.id))
|
|
175
|
+
.map((user) => ({
|
|
176
|
+
user: user,
|
|
177
|
+
state: {}
|
|
178
|
+
}));
|
|
161
179
|
this.propagateValidity(this.autocompleteRes.length > 0);
|
|
162
180
|
},
|
|
163
181
|
error: () => {
|
|
@@ -183,20 +201,20 @@ export class OrganizationComponent {
|
|
|
183
201
|
// handle selection changes to the model
|
|
184
202
|
onSelect() {
|
|
185
203
|
if (this.multiselect) {
|
|
186
|
-
this.value = this.innerValue.map((v) => v.id);
|
|
204
|
+
this.value = this.innerValue.map((v) => v.user.id);
|
|
187
205
|
}
|
|
188
206
|
else {
|
|
189
207
|
// internal autocomplete control is always set to multiselect
|
|
190
208
|
// so the resolved value is always an array
|
|
191
209
|
this.innerValue = this.innerValue.slice(-1);
|
|
192
|
-
this.value = this.innerValue[0].id;
|
|
210
|
+
this.value = this.innerValue[0].user.id;
|
|
193
211
|
}
|
|
194
212
|
this.propagate();
|
|
195
213
|
}
|
|
196
214
|
// handle selection changes to the model
|
|
197
215
|
onUnselect(value) {
|
|
198
|
-
this.innerValue = this.innerValue.filter((v) => v.id !== value.id);
|
|
199
|
-
const _value = this.innerValue.map((v) => v.id);
|
|
216
|
+
this.innerValue = this.innerValue.filter((v) => v.user.id !== value.id);
|
|
217
|
+
const _value = this.innerValue.map((v) => v.user.id);
|
|
200
218
|
this.value = this.multiselect ? _value : null;
|
|
201
219
|
if (!this.multiselect) {
|
|
202
220
|
this.clearInnerInput();
|
|
@@ -221,7 +239,7 @@ export class OrganizationComponent {
|
|
|
221
239
|
useExisting: forwardRef(() => OrganizationComponent),
|
|
222
240
|
multi: true
|
|
223
241
|
}
|
|
224
|
-
], viewQueries: [{ propertyName: "autoCompleteInput", first: true, predicate: ["autocomplete"], descendants: true }], ngImport: i0, template: "<yvc-autocomplete\n [(ngModel)]=\"innerValue\"\n #autocomplete\n (suggestionSelect)=\"onSelect()\"\n [placeholder]=\"placeholder\"\n (suggestionUnselect)=\"onUnselect($event)\"\n (blur)=\"onAutoCompleteBlur()\"\n [disabled]=\"readonly\"\n [autocompleteValues]=\"autocompleteRes\"\n field=\"id\"\n [forceSelection]=\"true\"\n (autocompleteFnc)=\"autocompleteFn($event)\"\n [multiple]=\"true\"\n>\n <!-- template for item inside the dropdown -->\n <ng-template #autocompleteOptionTemplate let-item>\n <span class=\"chip\">{{ item.title }}</span>\n </ng-template>\n
|
|
242
|
+
], viewQueries: [{ propertyName: "autoCompleteInput", first: true, predicate: ["autocomplete"], descendants: true }], ngImport: i0, template: "<yvc-autocomplete\n [(ngModel)]=\"innerValue\"\n #autocomplete\n (suggestionSelect)=\"onSelect()\"\n [placeholder]=\"placeholder\"\n (suggestionUnselect)=\"onUnselect($event)\"\n (blur)=\"onAutoCompleteBlur()\"\n [disabled]=\"readonly\"\n [autocompleteValues]=\"autocompleteRes\"\n field=\"id\"\n [forceSelection]=\"true\"\n (autocompleteFnc)=\"autocompleteFn($event)\"\n [multiple]=\"true\"\n>\n <!-- template for item inside the dropdown -->\n <ng-template #autocompleteOptionTemplate let-item>\n <span class=\"chip\">{{ item.user.title }}</span>\n </ng-template>\n\n <!-- template for chip -->\n <ng-template #chipTemplate let-item>\n <span class=\"chip\" [ngClass]=\"{ notFound: item.state.notFound }\" [title]=\"item.titleString\">\n {{ item.user.title }}\n </span>\n </ng-template>\n</yvc-autocomplete>\n\n<yvc-icon class=\"classify\" aria-hidden=\"true\" [svg]=\"multiselect ? icons.organizationMulti : icons.organization\" (click)=\"focusInput()\"></yvc-icon>\n", styles: [":host{display:flex;align-items:center}:host .chip.notFound{color:var(--color-error);text-decoration:line-through}:host .chip.notFound:before{content:\"!\";display:inline-block;background-color:var(--color-error);color:#fff;border-radius:2px;padding-inline:.3em;text-decoration:none;margin-inline-end:.75em}:host yvc-autocomplete{flex:1;--yvc-form-element-focus-border-color: transparent;--yvc-form-element-focus-outline-color: transparent}:host yvc-icon.classify{width:18px;height:18px;padding:calc(var(--app-pane-padding) / 8);color:var(--text-color-hint)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: YvcAutocompleteModule }, { kind: "component", type: i3.AutoComplete, selector: "yvc-autocomplete", inputs: ["field", "placeholder", "minLength", "multiple", "typeahead", "distinctValues", "forceSelection", "autocompleteValues", "disabled"], outputs: ["autocompleteFnc", "blur", "focus", "suggestionUnselect", "suggestionSelect"] }, { kind: "ngmodule", type: YvcIconModule }, { kind: "component", type: i4.Icon, selector: "yvc-icon", inputs: ["label", "svg", "svgSrc"] }, { kind: "ngmodule", type: TranslateModule }] }); }
|
|
225
243
|
}
|
|
226
244
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OrganizationComponent, decorators: [{
|
|
227
245
|
type: Component,
|
|
@@ -236,7 +254,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
236
254
|
useExisting: forwardRef(() => OrganizationComponent),
|
|
237
255
|
multi: true
|
|
238
256
|
}
|
|
239
|
-
], template: "<yvc-autocomplete\n [(ngModel)]=\"innerValue\"\n #autocomplete\n (suggestionSelect)=\"onSelect()\"\n [placeholder]=\"placeholder\"\n (suggestionUnselect)=\"onUnselect($event)\"\n (blur)=\"onAutoCompleteBlur()\"\n [disabled]=\"readonly\"\n [autocompleteValues]=\"autocompleteRes\"\n field=\"id\"\n [forceSelection]=\"true\"\n (autocompleteFnc)=\"autocompleteFn($event)\"\n [multiple]=\"true\"\n>\n <!-- template for item inside the dropdown -->\n <ng-template #autocompleteOptionTemplate let-item>\n <span class=\"chip\">{{ item.title }}</span>\n </ng-template>\n
|
|
257
|
+
], template: "<yvc-autocomplete\n [(ngModel)]=\"innerValue\"\n #autocomplete\n (suggestionSelect)=\"onSelect()\"\n [placeholder]=\"placeholder\"\n (suggestionUnselect)=\"onUnselect($event)\"\n (blur)=\"onAutoCompleteBlur()\"\n [disabled]=\"readonly\"\n [autocompleteValues]=\"autocompleteRes\"\n field=\"id\"\n [forceSelection]=\"true\"\n (autocompleteFnc)=\"autocompleteFn($event)\"\n [multiple]=\"true\"\n>\n <!-- template for item inside the dropdown -->\n <ng-template #autocompleteOptionTemplate let-item>\n <span class=\"chip\">{{ item.user.title }}</span>\n </ng-template>\n\n <!-- template for chip -->\n <ng-template #chipTemplate let-item>\n <span class=\"chip\" [ngClass]=\"{ notFound: item.state.notFound }\" [title]=\"item.titleString\">\n {{ item.user.title }}\n </span>\n </ng-template>\n</yvc-autocomplete>\n\n<yvc-icon class=\"classify\" aria-hidden=\"true\" [svg]=\"multiselect ? icons.organizationMulti : icons.organization\" (click)=\"focusInput()\"></yvc-icon>\n", styles: [":host{display:flex;align-items:center}:host .chip.notFound{color:var(--color-error);text-decoration:line-through}:host .chip.notFound:before{content:\"!\";display:inline-block;background-color:var(--color-error);color:#fff;border-radius:2px;padding-inline:.3em;text-decoration:none;margin-inline-end:.75em}:host yvc-autocomplete{flex:1;--yvc-form-element-focus-border-color: transparent;--yvc-form-element-focus-outline-color: transparent}:host yvc-icon.classify{width:18px;height:18px;padding:calc(var(--app-pane-padding) / 8);color:var(--text-color-hint)}\n"] }]
|
|
240
258
|
}], propDecorators: { autoCompleteInput: [{
|
|
241
259
|
type: ViewChild,
|
|
242
260
|
args: ['autocomplete']
|
|
@@ -265,4 +283,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
265
283
|
}], userSelect: [{
|
|
266
284
|
type: Output
|
|
267
285
|
}] } });
|
|
268
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnYW5pemF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMveXV1dmlzL2NsaWVudC1mcmFtZXdvcmsvZm9ybXMvc3JjL2xpYi9lbGVtZW50cy9vcmdhbml6YXRpb24vb3JnYW5pemF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMveXV1dmlzL2NsaWVudC1mcmFtZXdvcmsvZm9ybXMvc3JjL2xpYi9lbGVtZW50cy9vcmdhbml6YXRpb24vb3JnYW5pemF0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hJLE9BQU8sRUFBd0IsV0FBVyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hILE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDM0csT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzNELE9BQU8sRUFBRSxZQUFZLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7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S0FBSztnQkFJRyxXQUFXO3NCQUFuQixLQUFLO2dCQUtPLGVBQWU7c0JBQTNCLEtBQUs7Z0JBbUJHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBTUcsU0FBUztzQkFBakIsS0FBSztnQkFLRyxRQUFRO3NCQUFoQixLQUFLO2dCQUtHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBUUksVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgZm9yd2FyZFJlZiwgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lciwgaW5qZWN0LCBpbnB1dCwgSW5wdXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybXNNb2R1bGUsIE5HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SLCBWYWxpZGF0b3IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDbGFzc2lmaWNhdGlvbiwgU3lzdGVtU2VydmljZSwgVHJhbnNsYXRlTW9kdWxlLCBVc2VyU2VydmljZSwgWXV2VXNlciB9IGZyb20gJ0B5dXV2aXMvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgWVVWX0lDT05TIH0gZnJvbSAnQHl1dXZpcy9jbGllbnQtZnJhbWV3b3JrL2ljb25zJztcbmltcG9ydCB7IEF1dG9Db21wbGV0ZSwgWXZjQXV0b2NvbXBsZXRlTW9kdWxlIH0gZnJvbSAnQHl1dXZpcy9jb21wb25lbnRzL2F1dG9jb21wbGV0ZSc7XG5pbXBvcnQgeyBZdmNJY29uTW9kdWxlIH0gZnJvbSAnQHl1dXZpcy9jb21wb25lbnRzL2ljb24nO1xuaW1wb3J0IHsgZm9ya0pvaW4sIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG4vKipcbiAqIENyZWF0ZXMgZm9ybSBpbnB1dCBmb3Igb3JnYW5pc2F0aW9uIHZhbHVlcy5cbiAqIEltcGxlbWVudHMgYENvbnRyb2xWYWx1ZUFjY2Vzc29yYCBzbyBpdCBjYW4gYmUgdXNlZCB3aXRoaW4gQW5ndWxhciBmb3Jtcy5cbiAqXG4gKiBbU2NyZWVuc2hvdF0oLi4vYXNzZXRzL2ltYWdlcy95dXYtb3JnYW5pemF0aW9uLmdpZilcbiAqXG4gKiBAZXhhbXBsZVxuICogPHl1di1vcmdhbml6YXRpb24gW211bHRpc2VsZWN0XT1cInRydWVcIj48L3l1di1vcmdhbml6YXRpb24+XG4gKi9cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAneXV2LW9yZ2FuaXphdGlvbicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBZdmNBdXRvY29tcGxldGVNb2R1bGUsIFl2Y0ljb25Nb2R1bGUsIFRyYW5zbGF0ZU1vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9vcmdhbml6YXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vcmdhbml6YXRpb24uY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBPcmdhbml6YXRpb25Db21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBPcmdhbml6YXRpb25Db21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgT3JnYW5pemF0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciB7XG4gIHByaXZhdGUgc3lzdGVtID0gaW5qZWN0KFN5c3RlbVNlcnZpY2UpO1xuICBwcml2YXRlIHVzZXJTZXJ2aWNlID0gaW5qZWN0KFVzZXJTZXJ2aWNlKTtcblxuICBAVmlld0NoaWxkKCdhdXRvY29tcGxldGUnKSBhdXRvQ29tcGxldGVJbnB1dCE6IEF1dG9Db21wbGV0ZTtcbiAgbWluTGVuZ3RoID0gMjtcblxuICBpY29ucyA9IHtcbiAgICBvcmdhbml6YXRpb25NdWx0aTogWVVWX0lDT05TWydncm91cCddLFxuICAgIG9yZ2FuaXphdGlvbjogWVVWX0lDT05TWyd1c2VyJ11cbiAgfTtcblxuICBwcml2YXRlIGlzVmFsaWRJbnB1dCA9IHRydWU7XG4gIHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSB8IG51bGwgPSBudWxsO1xuICBfaW5uZXJWYWx1ZTogWXV2VXNlcltdID0gW107XG4gIHNldCBpbm5lclZhbHVlKGl2OiBZdXZVc2VyW10pIHtcbiAgICB0aGlzLl9pbm5lclZhbHVlID0gaXYgfHwgW107XG4gICAgdGhpcy51c2VyU2VsZWN0LmVtaXQodGhpcy5faW5uZXJWYWx1ZSk7XG4gIH1cbiAgZ2V0IGlubmVyVmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lubmVyVmFsdWU7XG4gIH1cbiAgYXV0b2NvbXBsZXRlUmVzOiBZdXZVc2VyW10gPSBbXTtcbiAgcHJpdmF0ZSBmaWx0ZXJSb2xlczogc3RyaW5nW10gPSBbXTtcblxuICAvLyBwcmV2ZW50IEVOVEVSIGZyb20gYmVpbmcgcHJvcGFnYXRlZCwgYmVjYXVzZSB0aGUgY29tcG9uZW50IGNvdWxkIGJlIGxvY2F0ZWRcbiAgLy8gaW5zaWRlIHNvbWUgb3RoZXIgY29tcG9uZW50IHRoYXQgYWxzbyByZWx5cyBvbiBFTlRFUlxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmVudGVyJywgWyckZXZlbnQnXSlcbiAgb25LZXlkb3duSGFuZGxlcihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pbnB1dERpc2FibGVkJykgZ2V0IF9pbnB1dERpc2FibGVkKCkge1xuICAgIHJldHVybiAhdGhpcy5tdWx0aXNlbGVjdCAmJiB0aGlzLmlubmVyVmFsdWU/Lmxlbmd0aCA9PT0gMTtcbiAgfVxuICAvLyBASG9zdEJpbmRpbmcoJ2NsYXNzLmlucHV0RGlydHknKSBnZXQgX2lucHV0RGlydHkoKSB7XG4gIC8vICAgcmV0dXJuIHRoaXMuYXV0b0NvbXBsZXRlSW5wdXQ/Lm11bHRpSW5wdXRFTD8ubmF0aXZlRWxlbWVudD8udmFsdWU7XG4gIC8vIH1cblxuICBASW5wdXQoKSBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgLyoqXG4gICAqIFBvc3NpYmxlcyB2YWx1ZXMgYXJlIGBFRElUYCAoZGVmYXVsdCksYFNFQVJDSGAsYENSRUFURWAuIEluIHNlYXJjaCBzaXR1YXRpb24gdmFsaWRhdGlvbiBvZiB0aGUgZm9ybSBlbGVtZW50IHdpbGwgYmUgdHVybmVkIG9mZiwgc28geW91IGFyZSBhYmxlIHRvIGVudGVyIHNlYXJjaCB0ZXJtcyB0aGF0IGRvIG5vdCBtZWV0IHRoZSBlbGVtZW50cyB2YWxpZGF0b3JzLlxuICAgKi9cbiAgQElucHV0KCkgc2l0dWF0aW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogSW5kaWNhdG9yIHRoYXQgbXVsdGlwbGUgc3RyaW5ncyBjb3VsZCBiZSBpbnNlcnRlZCwgdGhleSB3aWxsIGJlIHJlbmRlcmVkIGFzIGNoaXBzIChkZWZhdWx0OiBmYWxzZSkuXG4gICAqL1xuICBASW5wdXQoKSBtdWx0aXNlbGVjdCA9IGZhbHNlO1xuICAvKipcbiAgICogQWRkaXRpb25hbCBzZW1hbnRpY3MgZm9yIHRoZSBmb3JtIGVsZW1lbnQuXG4gICAqL1xuICBwcml2YXRlIF9jbGFzc2lmaWNhdGlvbnM/OiBzdHJpbmdbXTtcbiAgQElucHV0KCkgc2V0IGNsYXNzaWZpY2F0aW9ucyhjOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX2NsYXNzaWZpY2F0aW9ucyA9IGM7XG4gICAgaWYgKGM/Lmxlbmd0aCkge1xuICAgICAgY29uc3QgY2xhc3NpZmljYXRpb25zID0gdGhpcy5zeXN0ZW0uZ2V0Q2xhc3NpZmljYXRpb25zKGMpO1xuICAgICAgaWYgKGNsYXNzaWZpY2F0aW9ucy5oYXMoQ2xhc3NpZmljYXRpb24uU1RSSU5HX09SR0FOSVpBVElPTikpIHtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IGNsYXNzaWZpY2F0aW9ucy5nZXQoQ2xhc3NpZmljYXRpb24uU1RSSU5HX09SR0FOSVpBVElPTikhLm9wdGlvbnM7XG4gICAgICAgIHRoaXMuZmlsdGVyUm9sZXMgPSBvcHRpb25zO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbHRlclJvbGVzID0gW107XG4gICAgfVxuICB9XG4gIGdldCBjbGFzc2lmaWNhdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NsYXNzaWZpY2F0aW9ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBXaWxsIHByZXZlbnQgdGhlIGlucHV0IGZyb20gYmVpbmcgY2hhbmdlZCAoZGVmYXVsdDogZmFsc2UpXG4gICAqL1xuICBASW5wdXQoKSByZWFkb25seSA9IGZhbHNlO1xuICAvKipcbiAgICogU2V0IHRoaXMgdG8gdHJ1ZSBhbmQgdGhlIGNvbXBvbmVudCB3aWxsIHRyeSB0byBnYWluIGZvY3VzIG9uY2UgaXQgaGFzIGJlZW4gcmVuZGVyZWQuXG4gICAqIE5vdGljZSB0aGF0IHRoaXMgaXMgbm90IHJlbGlhYmxlLiBJZiB0aGVyZSBhcmUgYW55IG90aGVyIGNvbXBvbmVudHMgdGhhdCBhcmUgcmVuZGVyZWRcbiAgICogbGF0ZXIgYW5kIGFsc28gdHJ5IHRvIGJlIGZvY3VzZWQsIHRoZXkgd2lsbCAnd2luJywgYmVjYXVzZSB0aGVyZSBjYW4gb25seSBiZSBvbmUgZm9jdXMuXG4gICAqL1xuICBASW5wdXQoKSBhdXRvZm9jdXMgPSBmYWxzZTtcblxuICAvKipcbiAgICogV2lsbCBhdHRjaCB0aGUgb3ZlcmxheSB0byB0aGlzIEhUTUxlbGVtZW50XG4gICAqL1xuICBASW5wdXQoKSBhcHBlbmRUbyA9IG51bGw7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIGV4Y2x1ZGUgdGhlIGN1cnJlbnQgdXNlciBmcm9tIGF1dG9jb21wbGV0ZSByZXN1bHRcbiAgICovXG4gIEBJbnB1dCgpIGV4Y2x1ZGVNZSA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0aGUgZW1pdHRlZCB2YWx1ZSBzaG91bGQgYmUgYW4gb2JqZWN0IGNvbnRhaW5pbmcgaWQgYW5kIHRpdGxlXG4gICAqIG9yLCBpZiBzZXQgdG8gZmFsc2Ugb25seSB0aGUgSURcbiAgICovXG4gIHdpdGhNZXRhZGF0YSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBAT3V0cHV0KCkgdXNlclNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8WXV2VXNlcltdPigpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgcHJvcGFnYXRlQ2hhbmdlID0gKF86IGFueSkgPT4ge307XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICB0aGlzLnJlc29sdmVGbih2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xuICAgICAgdGhpcy5pbm5lclZhbHVlID0gW107XG4gICAgfVxuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge31cblxuICBwcml2YXRlIHByb3BhZ2F0ZSgpIHtcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLiNnZXRQcm9wYWdhdGVWYWx1ZSgpKTtcbiAgfVxuXG4gICNnZXRQcm9wYWdhdGVWYWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5tdWx0aXNlbGVjdFxuICAgICAgPyB0aGlzLndpdGhNZXRhZGF0YSgpXG4gICAgICAgID8gdGhpcy52YWx1ZVxuICAgICAgICAgID8gdGhpcy5faW5uZXJWYWx1ZS5tYXAoKHYpID0+ICh7XG4gICAgICAgICAgICAgIGlkOiB2LmlkLFxuICAgICAgICAgICAgICB0aXRsZTogdi50aXRsZVxuICAgICAgICAgICAgfSkpXG4gICAgICAgICAgOiB0aGlzLnZhbHVlXG4gICAgICAgIDogdGhpcy52YWx1ZVxuICAgICAgOiB0aGlzLndpdGhNZXRhZGF0YSgpXG4gICAgICAgID8gdGhpcy52YWx1ZVxuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICBpZDogdGhpcy5faW5uZXJWYWx1ZVswXS5pZCxcbiAgICAgICAgICAgICAgdGl0bGU6IHRoaXMuX2lubmVyVmFsdWVbMF0udGl0bGVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA6IHRoaXMudmFsdWVcbiAgICAgICAgOiB0aGlzLnZhbHVlO1xuICB9XG5cbiAgZm9jdXNJbnB1dCgpIHtcbiAgICB0aGlzLmF1dG9Db21wbGV0ZUlucHV0LmZvY3VzSW5wdXQoKTtcbiAgfVxuXG4gIHJlc29sdmVGbih2YWx1ZTogYW55KSB7XG4gICAgY29uc3QgbWFwID0gKHZhbHVlIGluc3RhbmNlb2YgQXJyYXkgPyB2YWx1ZSA6IFt2YWx1ZV0pLm1hcCgodikgPT4ge1xuICAgICAgY29uc3QgbWF0Y2ggPSB0aGlzLmlubmVyVmFsdWUuZmluZCgoaXYpID0+IGl2LmlkID09PSB2KTtcbiAgICAgIHJldHVybiBtYXRjaFxuICAgICAgICA/IG9mKG1hdGNoKVxuICAgICAgICA6IHRoaXMudXNlclNlcnZpY2UuZ2V0VXNlckJ5SWQodikucGlwZShcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT5cbiAgICAgICAgICAgICAgb2YoXG4gICAgICAgICAgICAgICAgbmV3IFl1dlVzZXIoXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiB2LFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogdixcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IG51bGxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgIH0pO1xuICAgIHJldHVybiBmb3JrSm9pbihtYXApLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgdGhpcy5pbm5lclZhbHVlID0gZGF0YTtcbiAgICAgIC8vIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5hdXRvQ29tcGxldGVJbnB1dC5jZC5tYXJrRm9yQ2hlY2soKSk7XG4gICAgfSk7XG4gIH1cblxuICBhdXRvY29tcGxldGVGbihxdWVyeTogc3RyaW5nKSB7XG4gICAgaWYgKHF1ZXJ5Lmxlbmd0aCA+PSB0aGlzLm1pbkxlbmd0aCkge1xuICAgICAgdGhpcy51c2VyU2VydmljZS5xdWVyeVVzZXIocXVlcnksIHRoaXMuZXhjbHVkZU1lLCB0aGlzLmZpbHRlclJvbGVzKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAodXNlcnM6IFl1dlVzZXJbXSkgPT4ge1xuICAgICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlUmVzID0gdXNlcnMuZmlsdGVyKCh1c2VyKSA9PiAhdGhpcy5pbm5lclZhbHVlLnNvbWUoKHZhbHVlKSA9PiB2YWx1ZS5pZCA9PT0gdXNlci5pZCkpO1xuICAgICAgICAgIHRoaXMucHJvcGFnYXRlVmFsaWRpdHkodGhpcy5hdXRvY29tcGxldGVSZXMubGVuZ3RoID4gMCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5hdXRvY29tcGxldGVSZXMgPSBbXTtcbiAgICAgICAgICB0aGlzLnByb3BhZ2F0ZVZhbGlkaXR5KHRoaXMuYXV0b2NvbXBsZXRlUmVzLmxlbmd0aCA+IDApO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hdXRvY29tcGxldGVSZXMgPSBbXTtcbiAgICB9XG4gIH1cblxuICAvLyByZXR1cm5zIG51bGwgd2hlbiB2YWxpZCBlbHNlIHRoZSB2YWxpZGF0aW9uIG9iamVjdFxuICBwdWJsaWMgdmFsaWRhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZElucHV0ID8gbnVsbCA6IHsgZW1wdHk6IHsgdmFsaWQ6IGZhbHNlIH0gfTtcbiAgfVxuXG4gIHByb3BhZ2F0ZVZhbGlkaXR5KHZhbGlkID0gdHJ1ZSkge1xuICAgIGlmICh0aGlzLmlzVmFsaWRJbnB1dCAhPT0gdmFsaWQpIHtcbiAgICAgIHRoaXMuaXNWYWxpZElucHV0ID0gdmFsaWQ7XG4gICAgICB0aGlzLnByb3BhZ2F0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGhhbmRsZSBzZWxlY3Rpb24gY2hhbmdlcyB0byB0aGUgbW9kZWxcbiAgb25TZWxlY3QoKSB7XG4gICAgaWYgKHRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmlubmVyVmFsdWUubWFwKCh2KSA9PiB2LmlkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gaW50ZXJuYWwgYXV0b2NvbXBsZXRlIGNvbnRyb2wgaXMgYWx3YXlzIHNldCB0byBtdWx0aXNlbGVjdFxuICAgICAgLy8gc28gdGhlIHJlc29sdmVkIHZhbHVlIGlzIGFsd2F5cyBhbiBhcnJheVxuICAgICAgdGhpcy5pbm5lclZhbHVlID0gdGhpcy5pbm5lclZhbHVlLnNsaWNlKC0xKTtcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmlubmVyVmFsdWVbMF0uaWQ7XG4gICAgfVxuICAgIHRoaXMucHJvcGFnYXRlKCk7XG4gIH1cblxuICAvLyBoYW5kbGUgc2VsZWN0aW9uIGNoYW5nZXMgdG8gdGhlIG1vZGVsXG4gIG9uVW5zZWxlY3QodmFsdWU6IGFueSkge1xuICAgIHRoaXMuaW5uZXJWYWx1ZSA9IHRoaXMuaW5uZXJWYWx1ZS5maWx0ZXIoKHYpID0+IHYuaWQgIT09IHZhbHVlLmlkKTtcbiAgICBjb25zdCBfdmFsdWUgPSB0aGlzLmlubmVyVmFsdWUubWFwKCh2KSA9PiB2LmlkKTtcbiAgICB0aGlzLnZhbHVlID0gdGhpcy5tdWx0aXNlbGVjdCA/IF92YWx1ZSA6IG51bGw7XG4gICAgaWYgKCF0aGlzLm11bHRpc2VsZWN0KSB7XG4gICAgICB0aGlzLmNsZWFySW5uZXJJbnB1dCgpO1xuICAgIH1cbiAgICB0aGlzLnByb3BhZ2F0ZSgpO1xuICB9XG5cbiAgb25BdXRvQ29tcGxldGVCbHVyKCkge1xuICAgIHRoaXMuY2xlYXJJbm5lcklucHV0KCk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFySW5uZXJJbnB1dCgpIHtcbiAgICB0aGlzLmF1dG9Db21wbGV0ZUlucHV0LmNsZWFySW5wdXQoKTtcbiAgfVxufVxuIiwiPHl2Yy1hdXRvY29tcGxldGVcbiAgWyhuZ01vZGVsKV09XCJpbm5lclZhbHVlXCJcbiAgI2F1dG9jb21wbGV0ZVxuICAoc3VnZ2VzdGlvblNlbGVjdCk9XCJvblNlbGVjdCgpXCJcbiAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgKHN1Z2dlc3Rpb25VbnNlbGVjdCk9XCJvblVuc2VsZWN0KCRldmVudClcIlxuICAoYmx1cik9XCJvbkF1dG9Db21wbGV0ZUJsdXIoKVwiXG4gIFtkaXNhYmxlZF09XCJyZWFkb25seVwiXG4gIFthdXRvY29tcGxldGVWYWx1ZXNdPVwiYXV0b2NvbXBsZXRlUmVzXCJcbiAgZmllbGQ9XCJpZFwiXG4gIFtmb3JjZVNlbGVjdGlvbl09XCJ0cnVlXCJcbiAgKGF1dG9jb21wbGV0ZUZuYyk9XCJhdXRvY29tcGxldGVGbigkZXZlbnQpXCJcbiAgW211bHRpcGxlXT1cInRydWVcIlxuPlxuICA8IS0tIHRlbXBsYXRlIGZvciBpdGVtIGluc2lkZSB0aGUgZHJvcGRvd24gLS0+XG4gIDxuZy10ZW1wbGF0ZSAjYXV0b2NvbXBsZXRlT3B0aW9uVGVtcGxhdGUgbGV0LWl0ZW0+XG4gICAgPHNwYW4gY2xhc3M9XCJjaGlwXCI+e3sgaXRlbS50aXRsZSB9fTwvc3Bhbj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgXG4gIDwhLS0gdGVtcGxhdGUgZm9yIGNoaXAgLS0+XG4gIDxuZy10ZW1wbGF0ZSAjY2hpcFRlbXBsYXRlIGxldC1pdGVtPlxuICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiPnt7IGl0ZW0udGl0bGUgfX08L3NwYW4+XG4gIDwvbmctdGVtcGxhdGU+XG48L3l2Yy1hdXRvY29tcGxldGU+XG5cbjx5dmMtaWNvblxuICBjbGFzcz1cImNsYXNzaWZ5XCJcbiAgW3RpdGxlXT1cIid5dXYuZm9ybS5lbGVtZW50Lm9yZ2FuaXphdGlvbi5jbGFzc2lmeS5pY29uLnRpdGxlJyB8IHRyYW5zbGF0ZVwiXG4gIFtzdmddPVwibXVsdGlzZWxlY3QgPyBpY29ucy5vcmdhbml6YXRpb25NdWx0aSA6IGljb25zLm9yZ2FuaXphdGlvblwiXG4gIChjbGljayk9XCJmb2N1c0lucHV0KClcIlxuPjwveXZjLWljb24+XG4iXX0=
|
|
286
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnYW5pemF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMveXV1dmlzL2NsaWVudC1mcmFtZXdvcmsvZm9ybXMvc3JjL2xpYi9lbGVtZW50cy9vcmdhbml6YXRpb24vb3JnYW5pemF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMveXV1dmlzL2NsaWVudC1mcmFtZXdvcmsvZm9ybXMvc3JjL2xpYi9lbGVtZW50cy9vcmdhbml6YXRpb24vb3JnYW5pemF0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hJLE9BQU8sRUFBd0IsV0FBVyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hILE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDN0gsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzNELE9BQU8sRUFBRSxZQUFZLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFFBQVEsRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVB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U0FBUztzQkFBakIsS0FBSztnQkFJRyxXQUFXO3NCQUFuQixLQUFLO2dCQUtPLGVBQWU7c0JBQTNCLEtBQUs7Z0JBbUJHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBTUcsU0FBUztzQkFBakIsS0FBSztnQkFLRyxRQUFRO3NCQUFoQixLQUFLO2dCQUtHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBUUksVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBmb3J3YXJkUmVmLCBIb3N0QmluZGluZywgSG9zdExpc3RlbmVyLCBpbmplY3QsIGlucHV0LCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3Jtc01vZHVsZSwgTkdfVkFMSURBVE9SUywgTkdfVkFMVUVfQUNDRVNTT1IsIFZhbGlkYXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENsYXNzaWZpY2F0aW9uLCBTeXN0ZW1TZXJ2aWNlLCBUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2UsIFVzZXJTZXJ2aWNlLCBZdXZVc2VyIH0gZnJvbSAnQHl1dXZpcy9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyBZVVZfSUNPTlMgfSBmcm9tICdAeXV1dmlzL2NsaWVudC1mcmFtZXdvcmsvaWNvbnMnO1xuaW1wb3J0IHsgQXV0b0NvbXBsZXRlLCBZdmNBdXRvY29tcGxldGVNb2R1bGUgfSBmcm9tICdAeXV1dmlzL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlJztcbmltcG9ydCB7IFl2Y0ljb25Nb2R1bGUgfSBmcm9tICdAeXV1dmlzL2NvbXBvbmVudHMvaWNvbic7XG5pbXBvcnQgeyBmb3JrSm9pbiwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW50ZXJmYWNlIFVzZXJOb2RlIHtcbiAgdXNlcjogWXV2VXNlcjtcbiAgc3RhdGU6IHtcbiAgICBub3RGb3VuZD86IGJvb2xlYW47XG4gIH07XG4gIHRpdGxlU3RyaW5nPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgZm9ybSBpbnB1dCBmb3Igb3JnYW5pc2F0aW9uIHZhbHVlcy5cbiAqIEltcGxlbWVudHMgYENvbnRyb2xWYWx1ZUFjY2Vzc29yYCBzbyBpdCBjYW4gYmUgdXNlZCB3aXRoaW4gQW5ndWxhciBmb3Jtcy5cbiAqXG4gKiBbU2NyZWVuc2hvdF0oLi4vYXNzZXRzL2ltYWdlcy95dXYtb3JnYW5pemF0aW9uLmdpZilcbiAqXG4gKiBAZXhhbXBsZVxuICogPHl1di1vcmdhbml6YXRpb24gW211bHRpc2VsZWN0XT1cInRydWVcIj48L3l1di1vcmdhbml6YXRpb24+XG4gKi9cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAneXV2LW9yZ2FuaXphdGlvbicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBZdmNBdXRvY29tcGxldGVNb2R1bGUsIFl2Y0ljb25Nb2R1bGUsIFRyYW5zbGF0ZU1vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9vcmdhbml6YXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vcmdhbml6YXRpb24uY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBPcmdhbml6YXRpb25Db21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBPcmdhbml6YXRpb25Db21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgT3JnYW5pemF0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciB7XG4gIHByaXZhdGUgc3lzdGVtID0gaW5qZWN0KFN5c3RlbVNlcnZpY2UpO1xuICBwcml2YXRlIHVzZXJTZXJ2aWNlID0gaW5qZWN0KFVzZXJTZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0cmFuc2xhdGUgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XG5cbiAgQFZpZXdDaGlsZCgnYXV0b2NvbXBsZXRlJykgYXV0b0NvbXBsZXRlSW5wdXQhOiBBdXRvQ29tcGxldGU7XG4gIG1pbkxlbmd0aCA9IDI7XG5cbiAgaWNvbnMgPSB7XG4gICAgb3JnYW5pemF0aW9uTXVsdGk6IFlVVl9JQ09OU1snZ3JvdXAnXSxcbiAgICBvcmdhbml6YXRpb246IFlVVl9JQ09OU1sndXNlciddXG4gIH07XG5cbiAgcHJpdmF0ZSBpc1ZhbGlkSW5wdXQgPSB0cnVlO1xuICB2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10gfCBudWxsID0gbnVsbDtcbiAgX2lubmVyVmFsdWU6IFVzZXJOb2RlW10gPSBbXTtcbiAgc2V0IGlubmVyVmFsdWUoaXY6IFVzZXJOb2RlW10pIHtcbiAgICB0aGlzLl9pbm5lclZhbHVlID0gaXYgfHwgW107XG4gICAgdGhpcy51c2VyU2VsZWN0LmVtaXQodGhpcy5faW5uZXJWYWx1ZS5tYXAoKHYpID0+IHYudXNlcikpO1xuICB9XG4gIGdldCBpbm5lclZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLl9pbm5lclZhbHVlO1xuICB9XG4gIGF1dG9jb21wbGV0ZVJlczogVXNlck5vZGVbXSA9IFtdO1xuICBwcml2YXRlIGZpbHRlclJvbGVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8vIHByZXZlbnQgRU5URVIgZnJvbSBiZWluZyBwcm9wYWdhdGVkLCBiZWNhdXNlIHRoZSBjb21wb25lbnQgY291bGQgYmUgbG9jYXRlZFxuICAvLyBpbnNpZGUgc29tZSBvdGhlciBjb21wb25lbnQgdGhhdCBhbHNvIHJlbHlzIG9uIEVOVEVSXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uZW50ZXInLCBbJyRldmVudCddKVxuICBvbktleWRvd25IYW5kbGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlucHV0RGlzYWJsZWQnKSBnZXQgX2lucHV0RGlzYWJsZWQoKSB7XG4gICAgcmV0dXJuICF0aGlzLm11bHRpc2VsZWN0ICYmIHRoaXMuaW5uZXJWYWx1ZT8ubGVuZ3RoID09PSAxO1xuICB9XG4gIC8vIEBIb3N0QmluZGluZygnY2xhc3MuaW5wdXREaXJ0eScpIGdldCBfaW5wdXREaXJ0eSgpIHtcbiAgLy8gICByZXR1cm4gdGhpcy5hdXRvQ29tcGxldGVJbnB1dD8ubXVsdGlJbnB1dEVMPy5uYXRpdmVFbGVtZW50Py52YWx1ZTtcbiAgLy8gfVxuXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICAvKipcbiAgICogUG9zc2libGVzIHZhbHVlcyBhcmUgYEVESVRgIChkZWZhdWx0KSxgU0VBUkNIYCxgQ1JFQVRFYC4gSW4gc2VhcmNoIHNpdHVhdGlvbiB2YWxpZGF0aW9uIG9mIHRoZSBmb3JtIGVsZW1lbnQgd2lsbCBiZSB0dXJuZWQgb2ZmLCBzbyB5b3UgYXJlIGFibGUgdG8gZW50ZXIgc2VhcmNoIHRlcm1zIHRoYXQgZG8gbm90IG1lZXQgdGhlIGVsZW1lbnRzIHZhbGlkYXRvcnMuXG4gICAqL1xuICBASW5wdXQoKSBzaXR1YXRpb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBJbmRpY2F0b3IgdGhhdCBtdWx0aXBsZSBzdHJpbmdzIGNvdWxkIGJlIGluc2VydGVkLCB0aGV5IHdpbGwgYmUgcmVuZGVyZWQgYXMgY2hpcHMgKGRlZmF1bHQ6IGZhbHNlKS5cbiAgICovXG4gIEBJbnB1dCgpIG11bHRpc2VsZWN0ID0gZmFsc2U7XG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIHNlbWFudGljcyBmb3IgdGhlIGZvcm0gZWxlbWVudC5cbiAgICovXG4gIHByaXZhdGUgX2NsYXNzaWZpY2F0aW9ucz86IHN0cmluZ1tdO1xuICBASW5wdXQoKSBzZXQgY2xhc3NpZmljYXRpb25zKGM6IHN0cmluZ1tdIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fY2xhc3NpZmljYXRpb25zID0gYztcbiAgICBpZiAoYz8ubGVuZ3RoKSB7XG4gICAgICBjb25zdCBjbGFzc2lmaWNhdGlvbnMgPSB0aGlzLnN5c3RlbS5nZXRDbGFzc2lmaWNhdGlvbnMoYyk7XG4gICAgICBpZiAoY2xhc3NpZmljYXRpb25zLmhhcyhDbGFzc2lmaWNhdGlvbi5TVFJJTkdfT1JHQU5JWkFUSU9OKSkge1xuICAgICAgICBjb25zdCBvcHRpb25zID0gY2xhc3NpZmljYXRpb25zLmdldChDbGFzc2lmaWNhdGlvbi5TVFJJTkdfT1JHQU5JWkFUSU9OKSEub3B0aW9ucztcbiAgICAgICAgdGhpcy5maWx0ZXJSb2xlcyA9IG9wdGlvbnM7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlsdGVyUm9sZXMgPSBbXTtcbiAgICB9XG4gIH1cbiAgZ2V0IGNsYXNzaWZpY2F0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5fY2xhc3NpZmljYXRpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIFdpbGwgcHJldmVudCB0aGUgaW5wdXQgZnJvbSBiZWluZyBjaGFuZ2VkIChkZWZhdWx0OiBmYWxzZSlcbiAgICovXG4gIEBJbnB1dCgpIHJlYWRvbmx5ID0gZmFsc2U7XG4gIC8qKlxuICAgKiBTZXQgdGhpcyB0byB0cnVlIGFuZCB0aGUgY29tcG9uZW50IHdpbGwgdHJ5IHRvIGdhaW4gZm9jdXMgb25jZSBpdCBoYXMgYmVlbiByZW5kZXJlZC5cbiAgICogTm90aWNlIHRoYXQgdGhpcyBpcyBub3QgcmVsaWFibGUuIElmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29tcG9uZW50cyB0aGF0IGFyZSByZW5kZXJlZFxuICAgKiBsYXRlciBhbmQgYWxzbyB0cnkgdG8gYmUgZm9jdXNlZCwgdGhleSB3aWxsICd3aW4nLCBiZWNhdXNlIHRoZXJlIGNhbiBvbmx5IGJlIG9uZSBmb2N1cy5cbiAgICovXG4gIEBJbnB1dCgpIGF1dG9mb2N1cyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBXaWxsIGF0dGNoIHRoZSBvdmVybGF5IHRvIHRoaXMgSFRNTGVsZW1lbnRcbiAgICovXG4gIEBJbnB1dCgpIGFwcGVuZFRvID0gbnVsbDtcblxuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gZXhjbHVkZSB0aGUgY3VycmVudCB1c2VyIGZyb20gYXV0b2NvbXBsZXRlIHJlc3VsdFxuICAgKi9cbiAgQElucHV0KCkgZXhjbHVkZU1lID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRoZSBlbWl0dGVkIHZhbHVlIHNob3VsZCBiZSBhbiBvYmplY3QgY29udGFpbmluZyBpZCBhbmQgdGl0bGVcbiAgICogb3IsIGlmIHNldCB0byBmYWxzZSBvbmx5IHRoZSBJRFxuICAgKi9cbiAgd2l0aE1ldGFkYXRhID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIEBPdXRwdXQoKSB1c2VyU2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxZdXZVc2VyW10+KCk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICBwcm9wYWdhdGVDaGFuZ2UgPSAoXzogYW55KSA9PiB7fTtcblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgIHRoaXMucmVzb2x2ZUZuKHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XG4gICAgICB0aGlzLmlubmVyVmFsdWUgPSBbXTtcbiAgICB9XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSA9IGZuO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7fVxuXG4gIHByaXZhdGUgcHJvcGFnYXRlKCkge1xuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMuI2dldFByb3BhZ2F0ZVZhbHVlKCkpO1xuICB9XG5cbiAgI2dldFByb3BhZ2F0ZVZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLm11bHRpc2VsZWN0XG4gICAgICA/IHRoaXMud2l0aE1ldGFkYXRhKClcbiAgICAgICAgPyB0aGlzLnZhbHVlXG4gICAgICAgICAgPyB0aGlzLl9pbm5lclZhbHVlLm1hcCgodikgPT4gKHtcbiAgICAgICAgICAgICAgaWQ6IHYudXNlci5pZCxcbiAgICAgICAgICAgICAgdGl0bGU6IHYudXNlci50aXRsZVxuICAgICAgICAgICAgfSkpXG4gICAgICAgICAgOiB0aGlzLnZhbHVlXG4gICAgICAgIDogdGhpcy52YWx1ZVxuICAgICAgOiB0aGlzLndpdGhNZXRhZGF0YSgpXG4gICAgICAgID8gdGhpcy52YWx1ZVxuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICBpZDogdGhpcy5faW5uZXJWYWx1ZVswXS51c2VyLmlkLFxuICAgICAgICAgICAgICB0aXRsZTogdGhpcy5faW5uZXJWYWx1ZVswXS51c2VyLnRpdGxlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiB0aGlzLnZhbHVlXG4gICAgICAgIDogdGhpcy52YWx1ZTtcbiAgfVxuXG4gIGZvY3VzSW5wdXQoKSB7XG4gICAgdGhpcy5hdXRvQ29tcGxldGVJbnB1dC5mb2N1c0lucHV0KCk7XG4gIH1cblxuICByZXNvbHZlRm4odmFsdWU6IGFueSkge1xuICAgIGNvbnN0IG9iczogT2JzZXJ2YWJsZTxVc2VyTm9kZT5bXSA9ICh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5ID8gdmFsdWUgOiBbdmFsdWVdKS5tYXAoKHYpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlSUQgPSB0eXBlb2YgdiA9PT0gJ3N0cmluZycgPyB2IDogdi5pZDtcblxuICAgICAgY29uc3QgbWF0Y2g6IFVzZXJOb2RlIHwgdW5kZWZpbmVkID0gdGhpcy5pbm5lclZhbHVlLmZpbmQoKGl2KSA9PiBpdi51c2VyLmlkID09PSB2YWx1ZUlEKTtcbiAgICAgIHJldHVybiBtYXRjaFxuICAgICAgICA/IG9mKG1hdGNoKVxuICAgICAgICA6IHRoaXMudXNlclNlcnZpY2UuZ2V0VXNlckJ5SWQodmFsdWVJRCkucGlwZShcbiAgICAgICAgICAgIG1hcCgocmVzOiBZdXZVc2VyKSA9PiAoe1xuICAgICAgICAgICAgICB1c2VyOiByZXMsXG4gICAgICAgICAgICAgIHN0YXRlOiB7fVxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgdXNlciA9IG5ldyBZdXZVc2VyKHtcbiAgICAgICAgICAgICAgICBpZDogdHlwZW9mIHYgPT09ICdzdHJpbmcnID8gdiA6IHYuaWRcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIHVzZXIudGl0bGUgPSB0eXBlb2YgdiA9PT0gJ3N0cmluZycgPyB2IDogdi50aXRsZTtcbiAgICAgICAgICAgICAgcmV0dXJuIG9mKHtcbiAgICAgICAgICAgICAgICB1c2VyLFxuICAgICAgICAgICAgICAgIHN0YXRlOiB7XG4gICAgICAgICAgICAgICAgICBub3RGb3VuZDogZS5zdGF0dXMgPT09IDQwNFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdGl0bGVTdHJpbmc6IGUuc3RhdHVzID09PSA0MDQgPyB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCd5dXYuZm9ybS5lbGVtZW50Lm9yZ2FuaXphdGlvbi51c2VyLm5vdC1mb3VuZCcpIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgIH0pO1xuICAgIHJldHVybiBmb3JrSm9pbihvYnMpLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgdGhpcy5pbm5lclZhbHVlID0gZGF0YTtcbiAgICAgIC8vIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5hdXRvQ29tcGxldGVJbnB1dC5jZC5tYXJrRm9yQ2hlY2soKSk7XG4gICAgfSk7XG4gIH1cblxuICBhdXRvY29tcGxldGVGbihxdWVyeTogc3RyaW5nKSB7XG4gICAgaWYgKHF1ZXJ5Lmxlbmd0aCA+PSB0aGlzLm1pbkxlbmd0aCkge1xuICAgICAgdGhpcy51c2VyU2VydmljZS5xdWVyeVVzZXIocXVlcnksIHRoaXMuZXhjbHVkZU1lLCB0aGlzLmZpbHRlclJvbGVzKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAodXNlcnM6IFl1dlVzZXJbXSkgPT4ge1xuICAgICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlUmVzID0gdXNlcnNcbiAgICAgICAgICAgIC5maWx0ZXIoKHVzZXIpID0+ICF0aGlzLmlubmVyVmFsdWUuc29tZSgodmFsdWUpID0+IHZhbHVlLnVzZXIuaWQgPT09IHVzZXIuaWQpKVxuICAgICAgICAgICAgLm1hcCgodXNlcikgPT4gKHtcbiAgICAgICAgICAgICAgdXNlcjogdXNlcixcbiAgICAgICAgICAgICAgc3RhdGU6IHt9XG4gICAgICAgICAgICB9KSk7XG4gICAgICAgICAgdGhpcy5wcm9wYWdhdGVWYWxpZGl0eSh0aGlzLmF1dG9jb21wbGV0ZVJlcy5sZW5ndGggPiAwKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZVJlcyA9IFtdO1xuICAgICAgICAgIHRoaXMucHJvcGFnYXRlVmFsaWRpdHkodGhpcy5hdXRvY29tcGxldGVSZXMubGVuZ3RoID4gMCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmF1dG9jb21wbGV0ZVJlcyA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIC8vIHJldHVybnMgbnVsbCB3aGVuIHZhbGlkIGVsc2UgdGhlIHZhbGlkYXRpb24gb2JqZWN0XG4gIHB1YmxpYyB2YWxpZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkSW5wdXQgPyBudWxsIDogeyBlbXB0eTogeyB2YWxpZDogZmFsc2UgfSB9O1xuICB9XG5cbiAgcHJvcGFnYXRlVmFsaWRpdHkodmFsaWQgPSB0cnVlKSB7XG4gICAgaWYgKHRoaXMuaXNWYWxpZElucHV0ICE9PSB2YWxpZCkge1xuICAgICAgdGhpcy5pc1ZhbGlkSW5wdXQgPSB2YWxpZDtcbiAgICAgIHRoaXMucHJvcGFnYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gaGFuZGxlIHNlbGVjdGlvbiBjaGFuZ2VzIHRvIHRoZSBtb2RlbFxuICBvblNlbGVjdCgpIHtcbiAgICBpZiAodGhpcy5tdWx0aXNlbGVjdCkge1xuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuaW5uZXJWYWx1ZS5tYXAoKHYpID0+IHYudXNlci5pZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGludGVybmFsIGF1dG9jb21wbGV0ZSBjb250cm9sIGlzIGFsd2F5cyBzZXQgdG8gbXVsdGlzZWxlY3RcbiAgICAgIC8vIHNvIHRoZSByZXNvbHZlZCB2YWx1ZSBpcyBhbHdheXMgYW4gYXJyYXlcbiAgICAgIHRoaXMuaW5uZXJWYWx1ZSA9IHRoaXMuaW5uZXJWYWx1ZS5zbGljZSgtMSk7XG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5pbm5lclZhbHVlWzBdLnVzZXIuaWQ7XG4gICAgfVxuICAgIHRoaXMucHJvcGFnYXRlKCk7XG4gIH1cblxuICAvLyBoYW5kbGUgc2VsZWN0aW9uIGNoYW5nZXMgdG8gdGhlIG1vZGVsXG4gIG9uVW5zZWxlY3QodmFsdWU6IGFueSkge1xuICAgIHRoaXMuaW5uZXJWYWx1ZSA9IHRoaXMuaW5uZXJWYWx1ZS5maWx0ZXIoKHYpID0+IHYudXNlci5pZCAhPT0gdmFsdWUuaWQpO1xuICAgIGNvbnN0IF92YWx1ZSA9IHRoaXMuaW5uZXJWYWx1ZS5tYXAoKHYpID0+IHYudXNlci5pZCk7XG4gICAgdGhpcy52YWx1ZSA9IHRoaXMubXVsdGlzZWxlY3QgPyBfdmFsdWUgOiBudWxsO1xuICAgIGlmICghdGhpcy5tdWx0aXNlbGVjdCkge1xuICAgICAgdGhpcy5jbGVhcklubmVySW5wdXQoKTtcbiAgICB9XG4gICAgdGhpcy5wcm9wYWdhdGUoKTtcbiAgfVxuXG4gIG9uQXV0b0NvbXBsZXRlQmx1cigpIHtcbiAgICB0aGlzLmNsZWFySW5uZXJJbnB1dCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhcklubmVySW5wdXQoKSB7XG4gICAgdGhpcy5hdXRvQ29tcGxldGVJbnB1dC5jbGVhcklucHV0KCk7XG4gIH1cbn1cbiIsIjx5dmMtYXV0b2NvbXBsZXRlXG4gIFsobmdNb2RlbCldPVwiaW5uZXJWYWx1ZVwiXG4gICNhdXRvY29tcGxldGVcbiAgKHN1Z2dlc3Rpb25TZWxlY3QpPVwib25TZWxlY3QoKVwiXG4gIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gIChzdWdnZXN0aW9uVW5zZWxlY3QpPVwib25VbnNlbGVjdCgkZXZlbnQpXCJcbiAgKGJsdXIpPVwib25BdXRvQ29tcGxldGVCbHVyKClcIlxuICBbZGlzYWJsZWRdPVwicmVhZG9ubHlcIlxuICBbYXV0b2NvbXBsZXRlVmFsdWVzXT1cImF1dG9jb21wbGV0ZVJlc1wiXG4gIGZpZWxkPVwiaWRcIlxuICBbZm9yY2VTZWxlY3Rpb25dPVwidHJ1ZVwiXG4gIChhdXRvY29tcGxldGVGbmMpPVwiYXV0b2NvbXBsZXRlRm4oJGV2ZW50KVwiXG4gIFttdWx0aXBsZV09XCJ0cnVlXCJcbj5cbiAgPCEtLSB0ZW1wbGF0ZSBmb3IgaXRlbSBpbnNpZGUgdGhlIGRyb3Bkb3duIC0tPlxuICA8bmctdGVtcGxhdGUgI2F1dG9jb21wbGV0ZU9wdGlvblRlbXBsYXRlIGxldC1pdGVtPlxuICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiPnt7IGl0ZW0udXNlci50aXRsZSB9fTwvc3Bhbj5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8IS0tIHRlbXBsYXRlIGZvciBjaGlwIC0tPlxuICA8bmctdGVtcGxhdGUgI2NoaXBUZW1wbGF0ZSBsZXQtaXRlbT5cbiAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiBbbmdDbGFzc109XCJ7IG5vdEZvdW5kOiBpdGVtLnN0YXRlLm5vdEZvdW5kIH1cIiBbdGl0bGVdPVwiaXRlbS50aXRsZVN0cmluZ1wiPlxuICAgICAge3sgaXRlbS51c2VyLnRpdGxlIH19XG4gICAgPC9zcGFuPlxuICA8L25nLXRlbXBsYXRlPlxuPC95dmMtYXV0b2NvbXBsZXRlPlxuXG48eXZjLWljb24gY2xhc3M9XCJjbGFzc2lmeVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIFtzdmddPVwibXVsdGlzZWxlY3QgPyBpY29ucy5vcmdhbml6YXRpb25NdWx0aSA6IGljb25zLm9yZ2FuaXphdGlvblwiIChjbGljayk9XCJmb2N1c0lucHV0KClcIj48L3l2Yy1pY29uPlxuIl19
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { Component, effect, inject, input, output } from '@angular/core';
|
|
3
|
+
import { FormBuilder, ReactiveFormsModule, Validators } from '@angular/forms';
|
|
4
|
+
import { TranslateModule } from '@yuuvis/client-core';
|
|
5
|
+
import { YvcOverlayRef } from '@yuuvis/components/overlay';
|
|
6
|
+
import { DatetimeRangeComponent } from '../../datetime-range/datetime-range.component';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@angular/forms";
|
|
9
|
+
import * as i2 from "@yuuvis/client-core";
|
|
10
|
+
export class DateRangePickerComponent {
|
|
11
|
+
constructor() {
|
|
12
|
+
this.#oRef = inject(YvcOverlayRef);
|
|
13
|
+
this.#fb = inject(FormBuilder);
|
|
14
|
+
this.form = this.#fb.group({
|
|
15
|
+
range: this.#fb.control(this.#oRef.data.range, Validators.required)
|
|
16
|
+
});
|
|
17
|
+
this.range = input(this.#oRef.data.range);
|
|
18
|
+
this.rangeChange = output();
|
|
19
|
+
this.#rangeEffect = effect(() => {
|
|
20
|
+
const range = this.range();
|
|
21
|
+
this.form.patchValue({ range });
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
#oRef;
|
|
25
|
+
#fb;
|
|
26
|
+
#rangeEffect;
|
|
27
|
+
apply() {
|
|
28
|
+
this.rangeChange.emit(this.form.value.range || undefined);
|
|
29
|
+
this.#oRef?.close(this.form.value.range);
|
|
30
|
+
}
|
|
31
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DateRangePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
32
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: DateRangePickerComponent, isStandalone: true, selector: "yuv-date-range-picker", inputs: { range: { classPropertyName: "range", publicName: "range", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { rangeChange: "rangeChange" }, ngImport: i0, template: "<form [formGroup]=\"form\" (ngSubmit)=\"apply()\">\n <h2>{{ 'yuv.form.element.range-select-date.custom.overlay.title' | translate }}</h2>\n <yuv-datetime-range [withTime]=\"false\" formControlName=\"range\"></yuv-datetime-range>\n <button class=\"primary\" [disabled]=\"form.invalid\">{{ 'yuv.form.element.range-select-date.custom.overlay.button.apply' | translate }}</button>\n</form>\n", styles: [":host{--form-element-border-color: transparent;--yvc-form-element-border-color: transparent}:host form{display:grid;grid-template-columns:1fr auto;grid-template-rows:repeat(3,auto);grid-template-areas:\"title title\" \"input input\" \". button\";gap:var(--app-pane-padding);padding:var(--app-pane-padding)}:host form h2{grid-area:title;margin:0}:host form yuv-datetime-range{grid-area:input;border:1px solid var(--text-color-hint);padding:1px 2px;border-radius:2px}:host form button{grid-area:button}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { 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.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "component", type: DatetimeRangeComponent, selector: "yuv-datetime-range", inputs: ["withTime", "readonly", "operator", "situation"] }] }); }
|
|
33
|
+
}
|
|
34
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DateRangePickerComponent, decorators: [{
|
|
35
|
+
type: Component,
|
|
36
|
+
args: [{ selector: 'yuv-date-range-picker', standalone: true, imports: [CommonModule, ReactiveFormsModule, TranslateModule, DatetimeRangeComponent], template: "<form [formGroup]=\"form\" (ngSubmit)=\"apply()\">\n <h2>{{ 'yuv.form.element.range-select-date.custom.overlay.title' | translate }}</h2>\n <yuv-datetime-range [withTime]=\"false\" formControlName=\"range\"></yuv-datetime-range>\n <button class=\"primary\" [disabled]=\"form.invalid\">{{ 'yuv.form.element.range-select-date.custom.overlay.button.apply' | translate }}</button>\n</form>\n", styles: [":host{--form-element-border-color: transparent;--yvc-form-element-border-color: transparent}:host form{display:grid;grid-template-columns:1fr auto;grid-template-rows:repeat(3,auto);grid-template-areas:\"title title\" \"input input\" \". button\";gap:var(--app-pane-padding);padding:var(--app-pane-padding)}:host form h2{grid-area:title;margin:0}:host form yuv-datetime-range{grid-area:input;border:1px solid var(--text-color-hint);padding:1px 2px;border-radius:2px}:host form button{grid-area:button}\n"] }]
|
|
37
|
+
}] });
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy95dXV2aXMvY2xpZW50LWZyYW1ld29yay9mb3Jtcy9zcmMvbGliL2VsZW1lbnRzL3JhbmdlLXNlbGVjdC1kYXRlL2RhdGUtcmFuZ2UtcGlja2VyL2RhdGUtcmFuZ2UtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMveXV1dmlzL2NsaWVudC1mcmFtZXdvcmsvZm9ybXMvc3JjL2xpYi9lbGVtZW50cy9yYW5nZS1zZWxlY3QtZGF0ZS9kYXRlLXJhbmdlLXBpY2tlci9kYXRlLXJhbmdlLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekUsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RSxPQUFPLEVBQWMsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDOzs7O0FBU3ZGLE1BQU0sT0FBTyx3QkFBd0I7SUFQckM7UUFRRSxVQUFLLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzlCLFFBQUcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFMUIsU0FBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO1lBQ3BCLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBeUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7U0FDNUYsQ0FBQyxDQUFDO1FBRUgsVUFBSyxHQUFHLEtBQUssQ0FBeUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0QsZ0JBQVcsR0FBRyxNQUFNLEVBQTBCLENBQUM7UUFDL0MsaUJBQVksR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ3pCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQUM7S0FNSjtJQWxCQyxLQUFLLENBQXlCO0lBQzlCLEdBQUcsQ0FBdUI7SUFRMUIsWUFBWSxDQUdUO0lBRUgsS0FBSztRQUNILElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxTQUFTLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQyxDQUFDOytHQWxCVSx3QkFBd0I7bUdBQXhCLHdCQUF3Qiw4UENkckMsd1lBS0EsK2lCREtZLFlBQVksOEJBQUUsbUJBQW1CLDRyQkFBRSxlQUFlLDRGQUFFLHNCQUFzQjs7NEZBSXpFLHdCQUF3QjtrQkFQcEMsU0FBUzsrQkFDRSx1QkFBdUIsY0FDckIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLG1CQUFtQixFQUFFLGVBQWUsRUFBRSxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIGVmZmVjdCwgaW5qZWN0LCBpbnB1dCwgb3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFJhbmdlVmFsdWUsIFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0B5dXV2aXMvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgWXZjT3ZlcmxheVJlZiB9IGZyb20gJ0B5dXV2aXMvY29tcG9uZW50cy9vdmVybGF5JztcbmltcG9ydCB7IERhdGV0aW1lUmFuZ2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9kYXRldGltZS1yYW5nZS9kYXRldGltZS1yYW5nZS5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd5dXYtZGF0ZS1yYW5nZS1waWNrZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBUcmFuc2xhdGVNb2R1bGUsIERhdGV0aW1lUmFuZ2VDb21wb25lbnRdLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50LnNjc3MnXG59KVxuZXhwb3J0IGNsYXNzIERhdGVSYW5nZVBpY2tlckNvbXBvbmVudCB7XG4gICNvUmVmID0gaW5qZWN0KFl2Y092ZXJsYXlSZWYpO1xuICAjZmIgPSBpbmplY3QoRm9ybUJ1aWxkZXIpO1xuXG4gIGZvcm0gPSB0aGlzLiNmYi5ncm91cCh7XG4gICAgcmFuZ2U6IHRoaXMuI2ZiLmNvbnRyb2w8UmFuZ2VWYWx1ZSB8IHVuZGVmaW5lZD4odGhpcy4jb1JlZi5kYXRhLnJhbmdlLCBWYWxpZGF0b3JzLnJlcXVpcmVkKVxuICB9KTtcblxuICByYW5nZSA9IGlucHV0PFJhbmdlVmFsdWUgfCB1bmRlZmluZWQ+KHRoaXMuI29SZWYuZGF0YS5yYW5nZSk7XG4gIHJhbmdlQ2hhbmdlID0gb3V0cHV0PFJhbmdlVmFsdWUgfCB1bmRlZmluZWQ+KCk7XG4gICNyYW5nZUVmZmVjdCA9IGVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgcmFuZ2UgPSB0aGlzLnJhbmdlKCk7XG4gICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoeyByYW5nZSB9KTtcbiAgfSk7XG5cbiAgYXBwbHkoKSB7XG4gICAgdGhpcy5yYW5nZUNoYW5nZS5lbWl0KHRoaXMuZm9ybS52YWx1ZS5yYW5nZSB8fCB1bmRlZmluZWQpO1xuICAgIHRoaXMuI29SZWY/LmNsb3NlKHRoaXMuZm9ybS52YWx1ZS5yYW5nZSk7XG4gIH1cbn1cbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIChuZ1N1Ym1pdCk9XCJhcHBseSgpXCI+XG4gIDxoMj57eyAneXV2LmZvcm0uZWxlbWVudC5yYW5nZS1zZWxlY3QtZGF0ZS5jdXN0b20ub3ZlcmxheS50aXRsZScgfCB0cmFuc2xhdGUgfX08L2gyPlxuICA8eXV2LWRhdGV0aW1lLXJhbmdlIFt3aXRoVGltZV09XCJmYWxzZVwiIGZvcm1Db250cm9sTmFtZT1cInJhbmdlXCI+PC95dXYtZGF0ZXRpbWUtcmFuZ2U+XG4gIDxidXR0b24gY2xhc3M9XCJwcmltYXJ5XCIgW2Rpc2FibGVkXT1cImZvcm0uaW52YWxpZFwiPnt7ICd5dXYuZm9ybS5lbGVtZW50LnJhbmdlLXNlbGVjdC1kYXRlLmN1c3RvbS5vdmVybGF5LmJ1dHRvbi5hcHBseScgfCB0cmFuc2xhdGUgfX08L2J1dHRvbj5cbjwvZm9ybT5cbiJdfQ==
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { Component, forwardRef, inject, input, signal } from '@angular/core';
|
|
3
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
4
|
+
import { FormBuilder, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';
|
|
5
|
+
import { marker } from '@colsen1991/ngx-translate-extract-marker';
|
|
6
|
+
import { LocaleDatePipe, Operator, OperatorLabel, SearchUtils, TranslateService } from '@yuuvis/client-core';
|
|
7
|
+
import { YvcDropdownModule } from '@yuuvis/components/dropdown';
|
|
8
|
+
import { YvcOverlayService } from '@yuuvis/components/overlay';
|
|
9
|
+
import { DateRangePickerComponent } from './date-range-picker/date-range-picker.component';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
import * as i1 from "@yuuvis/components/dropdown";
|
|
12
|
+
import * as i2 from "@angular/forms";
|
|
13
|
+
// marker for extracting translations for the available date range options
|
|
14
|
+
marker('yuv.form.element.range-select-date.option.any');
|
|
15
|
+
marker('yuv.form.element.range-select-date.option.today');
|
|
16
|
+
marker('yuv.form.element.range-select-date.option.yesterday');
|
|
17
|
+
marker('yuv.form.element.range-select-date.option.thisWeek');
|
|
18
|
+
marker('yuv.form.element.range-select-date.option.lastWeek');
|
|
19
|
+
marker('yuv.form.element.range-select-date.option.thisMonth');
|
|
20
|
+
marker('yuv.form.element.range-select-date.option.lastMonth');
|
|
21
|
+
marker('yuv.form.element.range-select-date.option.thisYear');
|
|
22
|
+
marker('yuv.form.element.range-select-date.option.lastYear');
|
|
23
|
+
marker('yuv.form.element.range-select-date.option.custom');
|
|
24
|
+
/**
|
|
25
|
+
* Component for selecting a date range based on pre-defined ranges like
|
|
26
|
+
* 'today', 'this week', 'this month', etc.
|
|
27
|
+
* It also allows to pick a custom date range.
|
|
28
|
+
*/
|
|
29
|
+
export class RangeSelectDateComponent {
|
|
30
|
+
#overlay;
|
|
31
|
+
#fb;
|
|
32
|
+
#ANY_OPTION;
|
|
33
|
+
#CUSTOM_OPTION;
|
|
34
|
+
#customDateRange;
|
|
35
|
+
constructor() {
|
|
36
|
+
this.translate = inject(TranslateService);
|
|
37
|
+
this.#overlay = inject(YvcOverlayService);
|
|
38
|
+
this.#fb = inject(FormBuilder);
|
|
39
|
+
this.#ANY_OPTION = 'any';
|
|
40
|
+
this.#CUSTOM_OPTION = 'custom';
|
|
41
|
+
this.dateOptions = signal([]);
|
|
42
|
+
this.innerForm = this.#fb.nonNullable.group({
|
|
43
|
+
range: [this.#ANY_OPTION]
|
|
44
|
+
});
|
|
45
|
+
/**
|
|
46
|
+
* Range values to be used in the dropdown.
|
|
47
|
+
*/
|
|
48
|
+
this.ranges = input(['today', 'yesterday', 'thisWeek', 'thisMonth', 'thisYear']);
|
|
49
|
+
/**
|
|
50
|
+
* Whether to show the custom date range option.
|
|
51
|
+
*/
|
|
52
|
+
this.customRange = input(true);
|
|
53
|
+
// ControlValueAccessor implementation
|
|
54
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
55
|
+
this.propagateChange = (_) => { };
|
|
56
|
+
this.translate.onLangChange.pipe(takeUntilDestroyed()).subscribe((_) => this.#setupOptions());
|
|
57
|
+
this.#setupOptions();
|
|
58
|
+
this.innerForm.valueChanges.pipe(takeUntilDestroyed()).subscribe((v) => this.#onFormValueChange(v));
|
|
59
|
+
}
|
|
60
|
+
#onFormValueChange(v) {
|
|
61
|
+
if (v.range === this.#CUSTOM_OPTION) {
|
|
62
|
+
if (!this.#customDateRange || this.dateOptions().find((o) => o.value === this.#CUSTOM_OPTION)?.label === this.#customDateRangeToString())
|
|
63
|
+
this.#openCustomRangeDialog();
|
|
64
|
+
else
|
|
65
|
+
this.propagateChange({
|
|
66
|
+
rangeValue: this.#customDateRange,
|
|
67
|
+
label: this.#customDateRangeToString()
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
const { start, end } = SearchUtils.dateRangeStartEnd(v.range);
|
|
72
|
+
this.propagateChange(v.range !== this.#ANY_OPTION
|
|
73
|
+
? {
|
|
74
|
+
rangeValue: { operator: Operator.INTERVAL_INCLUDE_BOTH, firstValue: start, secondValue: end },
|
|
75
|
+
label: this.translate.instant(`yuv.form.element.range-select-date.option.${v.range}`)
|
|
76
|
+
}
|
|
77
|
+
: undefined);
|
|
78
|
+
this.#customDateRange = undefined;
|
|
79
|
+
this.#setupOptions();
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
#openCustomRangeDialog() {
|
|
83
|
+
// open date range picker
|
|
84
|
+
const o = this.#overlay.open(DateRangePickerComponent, {
|
|
85
|
+
range: this.#customDateRange
|
|
86
|
+
});
|
|
87
|
+
o.afterClosed$.subscribe((res) => {
|
|
88
|
+
this.#customDateRange = res.data;
|
|
89
|
+
if (!res.data) {
|
|
90
|
+
this.innerForm.patchValue({ range: this.#ANY_OPTION });
|
|
91
|
+
this.#setupOptions();
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
this.#onFormValueChange(this.innerForm.value);
|
|
95
|
+
this.#setupOptions(this.#customDateRangeToString());
|
|
96
|
+
setTimeout(() => {
|
|
97
|
+
this.innerForm.patchValue({ range: this.#CUSTOM_OPTION }, {
|
|
98
|
+
emitEvent: false
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
#setupOptions(custom) {
|
|
105
|
+
const options = this.ranges().map((value) => ({
|
|
106
|
+
label: this.translate.instant(`yuv.form.element.range-select-date.option.${value}`),
|
|
107
|
+
value
|
|
108
|
+
}));
|
|
109
|
+
if (this.customRange())
|
|
110
|
+
options.push({
|
|
111
|
+
label: custom || this.translate.instant('yuv.form.element.range-select-date.option.custom'),
|
|
112
|
+
value: this.#CUSTOM_OPTION
|
|
113
|
+
});
|
|
114
|
+
this.dateOptions.set([
|
|
115
|
+
{
|
|
116
|
+
label: this.translate.instant('yuv.form.element.range-select-date.option.any'),
|
|
117
|
+
value: this.#ANY_OPTION
|
|
118
|
+
},
|
|
119
|
+
...options
|
|
120
|
+
]);
|
|
121
|
+
}
|
|
122
|
+
#customDateRangeToString() {
|
|
123
|
+
if (!this.#customDateRange)
|
|
124
|
+
return undefined;
|
|
125
|
+
const dp = new LocaleDatePipe(this.translate);
|
|
126
|
+
switch (this.#customDateRange.operator) {
|
|
127
|
+
case Operator.EQUAL: {
|
|
128
|
+
return dp.transform(this.#customDateRange.firstValue, 'shortDate');
|
|
129
|
+
}
|
|
130
|
+
case Operator.GREATER_OR_EQUAL: {
|
|
131
|
+
return `${OperatorLabel.GREATER_OR_EQUAL} ${dp.transform(this.#customDateRange.firstValue, 'shortDate')}`;
|
|
132
|
+
}
|
|
133
|
+
case Operator.LESS_OR_EQUAL: {
|
|
134
|
+
return `${OperatorLabel.LESS_OR_EQUAL} ${dp.transform(this.#customDateRange.firstValue, 'shortDate')}`;
|
|
135
|
+
}
|
|
136
|
+
case Operator.INTERVAL_INCLUDE_BOTH: {
|
|
137
|
+
return `${dp.transform(this.#customDateRange.firstValue, 'shortDate')} ${OperatorLabel.INTERVAL_INCLUDE_BOTH} ${dp.transform(this.#customDateRange.secondValue, 'shortDate')}`;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
return undefined;
|
|
141
|
+
}
|
|
142
|
+
writeValue(value) {
|
|
143
|
+
if (value?.rangeValue?.operator && value?.rangeValue?.firstValue) {
|
|
144
|
+
const dr = SearchUtils.getMatchingDateRange(value.rangeValue);
|
|
145
|
+
if (dr) {
|
|
146
|
+
this.innerForm.patchValue({ range: dr });
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
this.#customDateRange = value.rangeValue;
|
|
150
|
+
this.innerForm.patchValue({ range: this.#CUSTOM_OPTION });
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
this.innerForm.patchValue({ range: this.#ANY_OPTION });
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
registerOnChange(fn) {
|
|
158
|
+
this.propagateChange = fn;
|
|
159
|
+
}
|
|
160
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
161
|
+
registerOnTouched(fn) { }
|
|
162
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RangeSelectDateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
163
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: RangeSelectDateComponent, isStandalone: true, selector: "yuv-range-select-date", inputs: { ranges: { classPropertyName: "ranges", publicName: "ranges", isSignal: true, isRequired: false, transformFunction: null }, customRange: { classPropertyName: "customRange", publicName: "customRange", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
|
|
164
|
+
{
|
|
165
|
+
provide: NG_VALUE_ACCESSOR,
|
|
166
|
+
useExisting: forwardRef(() => RangeSelectDateComponent),
|
|
167
|
+
multi: true
|
|
168
|
+
}
|
|
169
|
+
], ngImport: i0, template: "<form [formGroup]=\"innerForm\">\n <yvc-dropdown formControlName=\"range\" [options]=\"dateOptions()\" [disableClearButton]=\"true\"></yvc-dropdown>\n</form>", styles: [":host form{display:flex}:host form yvc-dropdown{flex:1;outline-offset:0px;color:currentColor}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: YvcDropdownModule }, { kind: "component", type: i1.Dropdown, selector: "yvc-dropdown", inputs: ["options", "filter", "disabled", "multiple", "disableClearButton"], outputs: ["onDropdownOptionsClose"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] }); }
|
|
170
|
+
}
|
|
171
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RangeSelectDateComponent, decorators: [{
|
|
172
|
+
type: Component,
|
|
173
|
+
args: [{ selector: 'yuv-range-select-date', standalone: true, imports: [CommonModule, YvcDropdownModule, ReactiveFormsModule], providers: [
|
|
174
|
+
{
|
|
175
|
+
provide: NG_VALUE_ACCESSOR,
|
|
176
|
+
useExisting: forwardRef(() => RangeSelectDateComponent),
|
|
177
|
+
multi: true
|
|
178
|
+
}
|
|
179
|
+
], template: "<form [formGroup]=\"innerForm\">\n <yvc-dropdown formControlName=\"range\" [options]=\"dateOptions()\" [disableClearButton]=\"true\"></yvc-dropdown>\n</form>", styles: [":host form{display:flex}:host form yvc-dropdown{flex:1;outline-offset:0px;color:currentColor}\n"] }]
|
|
180
|
+
}], ctorParameters: () => [] });
|
|
181
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2Utc2VsZWN0LWRhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy95dXV2aXMvY2xpZW50LWZyYW1ld29yay9mb3Jtcy9zcmMvbGliL2VsZW1lbnRzL3JhbmdlLXNlbGVjdC1kYXRlL3JhbmdlLXNlbGVjdC1kYXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMveXV1dmlzL2NsaWVudC1mcmFtZXdvcmsvZm9ybXMvc3JjL2xpYi9lbGVtZW50cy9yYW5nZS1zZWxlY3QtZGF0ZS9yYW5nZS1zZWxlY3QtZGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUF3QixXQUFXLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDbEUsT0FBTyxFQUFhLGNBQWMsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFjLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3BJLE9BQU8sRUFBa0IsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRixPQUFPLEVBQXFCLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbEYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0saURBQWlELENBQUM7Ozs7QUFHM0YsMEVBQTBFO0FBQzFFLE1BQU0sQ0FBQywr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T0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUseUJBQXlCLENBQUM7NEJBQ3ZELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgZm9yd2FyZFJlZiwgaW5qZWN0LCBpbnB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUJ1aWxkZXIsIE5HX1ZBTFVFX0FDQ0VTU09SLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgbWFya2VyIH0gZnJvbSAnQGNvbHNlbjE5OTEvbmd4LXRyYW5zbGF0ZS1leHRyYWN0LW1hcmtlcic7XG5pbXBvcnQgeyBEYXRlUmFuZ2UsIExvY2FsZURhdGVQaXBlLCBPcGVyYXRvciwgT3BlcmF0b3JMYWJlbCwgUmFuZ2VWYWx1ZSwgU2VhcmNoVXRpbHMsIFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAeXV1dmlzL2NsaWVudC1jb3JlJztcbmltcG9ydCB7IERyb3Bkb3duT3B0aW9uLCBZdmNEcm9wZG93bk1vZHVsZSB9IGZyb20gJ0B5dXV2aXMvY29tcG9uZW50cy9kcm9wZG93bic7XG5pbXBvcnQgeyBPdmVybGF5Q2xvc2VFdmVudCwgWXZjT3ZlcmxheVNlcnZpY2UgfSBmcm9tICdAeXV1dmlzL2NvbXBvbmVudHMvb3ZlcmxheSc7XG5pbXBvcnQgeyBEYXRlUmFuZ2VQaWNrZXJDb21wb25lbnQgfSBmcm9tICcuL2RhdGUtcmFuZ2UtcGlja2VyL2RhdGUtcmFuZ2UtcGlja2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSYW5nZVNlbGVjdERhdGVWYWx1ZSB9IGZyb20gJy4vcmFuZ2Utc2VsZWN0LWRhdGUuaW50ZXJmYWNlJztcblxuLy8gbWFya2VyIGZvciBleHRyYWN0aW5nIHRyYW5zbGF0aW9ucyBmb3IgdGhlIGF2YWlsYWJsZSBkYXRlIHJhbmdlIG9wdGlvbnNcbm1hcmtlcigneXV2LmZvcm0uZWxlbWVudC5yYW5nZS1zZWxlY3QtZGF0ZS5vcHRpb24uYW55Jyk7XG5tYXJrZXIoJ3l1di5mb3JtLmVsZW1lbnQucmFuZ2Utc2VsZWN0LWRhdGUub3B0aW9uLnRvZGF5Jyk7XG5tYXJrZXIoJ3l1di5mb3JtLmVsZW1lbnQucmFuZ2Utc2VsZWN0LWRhdGUub3B0aW9uLnllc3RlcmRheScpO1xubWFya2VyKCd5dXYuZm9ybS5lbGVtZW50LnJhbmdlLXNlbGVjdC1kYXRlLm9wdGlvbi50aGlzV2VlaycpO1xubWFya2VyKCd5dXYuZm9ybS5lbGVtZW50LnJhbmdlLXNlbGVjdC1kYXRlLm9wdGlvbi5sYXN0V2VlaycpO1xubWFya2VyKCd5dXYuZm9ybS5lbGVtZW50LnJhbmdlLXNlbGVjdC1kYXRlLm9wdGlvbi50aGlzTW9udGgnKTtcbm1hcmtlcigneXV2LmZvcm0uZWxlbWVudC5yYW5nZS1zZWxlY3QtZGF0ZS5vcHRpb24ubGFzdE1vbnRoJyk7XG5tYXJrZXIoJ3l1di5mb3JtLmVsZW1lbnQucmFuZ2Utc2VsZWN0LWRhdGUub3B0aW9uLnRoaXNZZWFyJyk7XG5tYXJrZXIoJ3l1di5mb3JtLmVsZW1lbnQucmFuZ2Utc2VsZWN0LWRhdGUub3B0aW9uLmxhc3RZZWFyJyk7XG5tYXJrZXIoJ3l1di5mb3JtLmVsZW1lbnQucmFuZ2Utc2VsZWN0LWRhdGUub3B0aW9uLmN1c3RvbScpO1xuXG4vKipcbiAqIENvbXBvbmVudCBmb3Igc2VsZWN0aW5nIGEgZGF0ZSByYW5nZSBiYXNlZCBvbiBwcmUtZGVmaW5lZCByYW5nZXMgbGlrZVxuICogJ3RvZGF5JywgJ3RoaXMgd2VlaycsICd0aGlzIG1vbnRoJywgZXRjLlxuICogSXQgYWxzbyBhbGxvd3MgdG8gcGljayBhIGN1c3RvbSBkYXRlIHJhbmdlLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd5dXYtcmFuZ2Utc2VsZWN0LWRhdGUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBZdmNEcm9wZG93bk1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9yYW5nZS1zZWxlY3QtZGF0ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9yYW5nZS1zZWxlY3QtZGF0ZS5jb21wb25lbnQuc2NzcycsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUmFuZ2VTZWxlY3REYXRlQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFJhbmdlU2VsZWN0RGF0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgcHJpdmF0ZSB0cmFuc2xhdGUgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XG4gICNvdmVybGF5ID0gaW5qZWN0KFl2Y092ZXJsYXlTZXJ2aWNlKTtcbiAgI2ZiID0gaW5qZWN0KEZvcm1CdWlsZGVyKTtcblxuICAjQU5ZX09QVElPTiA9ICdhbnknO1xuICAjQ1VTVE9NX09QVElPTiA9ICdjdXN0b20nO1xuXG4gIGRhdGVPcHRpb25zID0gc2lnbmFsPERyb3Bkb3duT3B0aW9uW10+KFtdKTtcbiAgI2N1c3RvbURhdGVSYW5nZT86IFJhbmdlVmFsdWU7XG5cbiAgaW5uZXJGb3JtID0gdGhpcy4jZmIubm9uTnVsbGFibGUuZ3JvdXAoe1xuICAgIHJhbmdlOiBbdGhpcy4jQU5ZX09QVElPTl1cbiAgfSk7XG5cbiAgLyoqXG4gICAqIFJhbmdlIHZhbHVlcyB0byBiZSB1c2VkIGluIHRoZSBkcm9wZG93bi5cbiAgICovXG4gIHJhbmdlcyA9IGlucHV0PERhdGVSYW5nZVtdPihbJ3RvZGF5JywgJ3llc3RlcmRheScsICd0aGlzV2VlaycsICd0aGlzTW9udGgnLCAndGhpc1llYXInXSk7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHNob3cgdGhlIGN1c3RvbSBkYXRlIHJhbmdlIG9wdGlvbi5cbiAgICovXG4gIGN1c3RvbVJhbmdlID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy50cmFuc2xhdGUub25MYW5nQ2hhbmdlLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpLnN1YnNjcmliZSgoXykgPT4gdGhpcy4jc2V0dXBPcHRpb25zKCkpO1xuICAgIHRoaXMuI3NldHVwT3B0aW9ucygpO1xuICAgIHRoaXMuaW5uZXJGb3JtLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKS5zdWJzY3JpYmUoKHYpID0+IHRoaXMuI29uRm9ybVZhbHVlQ2hhbmdlKHYpKTtcbiAgfVxuXG4gICNvbkZvcm1WYWx1ZUNoYW5nZSh2OiBhbnkpIHtcbiAgICBpZiAodi5yYW5nZSA9PT0gdGhpcy4jQ1VTVE9NX09QVElPTikge1xuICAgICAgaWYgKCF0aGlzLiNjdXN0b21EYXRlUmFuZ2UgfHwgdGhpcy5kYXRlT3B0aW9ucygpLmZpbmQoKG8pID0+IG8udmFsdWUgPT09IHRoaXMuI0NVU1RPTV9PUFRJT04pPy5sYWJlbCA9PT0gdGhpcy4jY3VzdG9tRGF0ZVJhbmdlVG9TdHJpbmcoKSlcbiAgICAgICAgdGhpcy4jb3BlbkN1c3RvbVJhbmdlRGlhbG9nKCk7XG4gICAgICBlbHNlXG4gICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHtcbiAgICAgICAgICByYW5nZVZhbHVlOiB0aGlzLiNjdXN0b21EYXRlUmFuZ2UsXG4gICAgICAgICAgbGFiZWw6IHRoaXMuI2N1c3RvbURhdGVSYW5nZVRvU3RyaW5nKClcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc3RhcnQsIGVuZCB9ID0gU2VhcmNoVXRpbHMuZGF0ZVJhbmdlU3RhcnRFbmQodi5yYW5nZSBhcyBEYXRlUmFuZ2UpO1xuICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UoXG4gICAgICAgIHYucmFuZ2UgIT09IHRoaXMuI0FOWV9PUFRJT05cbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgcmFuZ2VWYWx1ZTogeyBvcGVyYXRvcjogT3BlcmF0b3IuSU5URVJWQUxfSU5DTFVERV9CT1RILCBmaXJzdFZhbHVlOiBzdGFydCwgc2Vjb25kVmFsdWU6IGVuZCB9LFxuICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgeXV2LmZvcm0uZWxlbWVudC5yYW5nZS1zZWxlY3QtZGF0ZS5vcHRpb24uJHt2LnJhbmdlfWApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuI2N1c3RvbURhdGVSYW5nZSA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuI3NldHVwT3B0aW9ucygpO1xuICAgIH1cbiAgfVxuXG4gICNvcGVuQ3VzdG9tUmFuZ2VEaWFsb2coKSB7XG4gICAgLy8gb3BlbiBkYXRlIHJhbmdlIHBpY2tlclxuICAgIGNvbnN0IG8gPSB0aGlzLiNvdmVybGF5Lm9wZW4oRGF0ZVJhbmdlUGlja2VyQ29tcG9uZW50LCB7XG4gICAgICByYW5nZTogdGhpcy4jY3VzdG9tRGF0ZVJhbmdlXG4gICAgfSk7XG4gICAgby5hZnRlckNsb3NlZCQuc3Vic2NyaWJlKChyZXM6IE92ZXJsYXlDbG9zZUV2ZW50PFJhbmdlVmFsdWU+KSA9PiB7XG4gICAgICB0aGlzLiNjdXN0b21EYXRlUmFuZ2UgPSByZXMuZGF0YTtcblxuICAgICAgaWYgKCFyZXMuZGF0YSkge1xuICAgICAgICB0aGlzLmlubmVyRm9ybS5wYXRjaFZhbHVlKHsgcmFuZ2U6IHRoaXMuI0FOWV9PUFRJT04gfSk7XG4gICAgICAgIHRoaXMuI3NldHVwT3B0aW9ucygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy4jb25Gb3JtVmFsdWVDaGFuZ2UodGhpcy5pbm5lckZvcm0udmFsdWUpO1xuICAgICAgICB0aGlzLiNzZXR1cE9wdGlvbnModGhpcy4jY3VzdG9tRGF0ZVJhbmdlVG9TdHJpbmcoKSk7XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5pbm5lckZvcm0ucGF0Y2hWYWx1ZShcbiAgICAgICAgICAgIHsgcmFuZ2U6IHRoaXMuI0NVU1RPTV9PUFRJT04gfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgfVxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgI3NldHVwT3B0aW9ucyhjdXN0b20/OiBzdHJpbmcpIHtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5yYW5nZXMoKS5tYXAoKHZhbHVlKSA9PiAoe1xuICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYHl1di5mb3JtLmVsZW1lbnQucmFuZ2Utc2VsZWN0LWRhdGUub3B0aW9uLiR7dmFsdWV9YCksXG4gICAgICB2YWx1ZVxuICAgIH0pKTtcbiAgICBpZiAodGhpcy5jdXN0b21SYW5nZSgpKVxuICAgICAgb3B0aW9ucy5wdXNoKHtcbiAgICAgICAgbGFiZWw6IGN1c3RvbSB8fCB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCd5dXYuZm9ybS5lbGVtZW50LnJhbmdlLXNlbGVjdC1kYXRlLm9wdGlvbi5jdXN0b20nKSxcbiAgICAgICAgdmFsdWU6IHRoaXMuI0NVU1RPTV9PUFRJT04gYXMgRGF0ZVJhbmdlXG4gICAgICB9KTtcblxuICAgIHRoaXMuZGF0ZU9wdGlvbnMuc2V0KFtcbiAgICAgIHtcbiAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ3l1di5mb3JtLmVsZW1lbnQucmFuZ2Utc2VsZWN0LWRhdGUub3B0aW9uLmFueScpLFxuICAgICAgICB2YWx1ZTogdGhpcy4jQU5ZX09QVElPTlxuICAgICAgfSxcbiAgICAgIC4uLm9wdGlvbnNcbiAgICBdKTtcbiAgfVxuXG4gICNjdXN0b21EYXRlUmFuZ2VUb1N0cmluZygpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGlmICghdGhpcy4jY3VzdG9tRGF0ZVJhbmdlKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGNvbnN0IGRwID0gbmV3IExvY2FsZURhdGVQaXBlKHRoaXMudHJhbnNsYXRlKTtcbiAgICBzd2l0Y2ggKHRoaXMuI2N1c3RvbURhdGVSYW5nZS5vcGVyYXRvcikge1xuICAgICAgY2FzZSBPcGVyYXRvci5FUVVBTDoge1xuICAgICAgICByZXR1cm4gZHAudHJhbnNmb3JtKHRoaXMuI2N1c3RvbURhdGVSYW5nZS5maXJzdFZhbHVlIGFzIERhdGUsICdzaG9ydERhdGUnKTtcbiAgICAgIH1cbiAgICAgIGNhc2UgT3BlcmF0b3IuR1JFQVRFUl9PUl9FUVVBTDoge1xuICAgICAgICByZXR1cm4gYCR7T3BlcmF0b3JMYWJlbC5HUkVBVEVSX09SX0VRVUFMfSAke2RwLnRyYW5zZm9ybSh0aGlzLiNjdXN0b21EYXRlUmFuZ2UuZmlyc3RWYWx1ZSBhcyBEYXRlLCAnc2hvcnREYXRlJyl9YDtcbiAgICAgIH1cbiAgICAgIGNhc2UgT3BlcmF0b3IuTEVTU19PUl9FUVVBTDoge1xuICAgICAgICByZXR1cm4gYCR7T3BlcmF0b3JMYWJlbC5MRVNTX09SX0VRVUFMfSAke2RwLnRyYW5zZm9ybSh0aGlzLiNjdXN0b21EYXRlUmFuZ2UuZmlyc3RWYWx1ZSBhcyBEYXRlLCAnc2hvcnREYXRlJyl9YDtcbiAgICAgIH1cbiAgICAgIGNhc2UgT3BlcmF0b3IuSU5URVJWQUxfSU5DTFVERV9CT1RIOiB7XG4gICAgICAgIHJldHVybiBgJHtkcC50cmFuc2Zvcm0odGhpcy4jY3VzdG9tRGF0ZVJhbmdlLmZpcnN0VmFsdWUgYXMgRGF0ZSwgJ3Nob3J0RGF0ZScpfSAke09wZXJhdG9yTGFiZWwuSU5URVJWQUxfSU5DTFVERV9CT1RIfSAke2RwLnRyYW5zZm9ybSh0aGlzLiNjdXN0b21EYXRlUmFuZ2Uuc2Vjb25kVmFsdWUgYXMgRGF0ZSwgJ3Nob3J0RGF0ZScpfWA7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICAvLyBDb250cm9sVmFsdWVBY2Nlc3NvciBpbXBsZW1lbnRhdGlvblxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgcHJvcGFnYXRlQ2hhbmdlID0gKF86IGFueSkgPT4ge307XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZT86IFJhbmdlU2VsZWN0RGF0ZVZhbHVlKTogdm9pZCB7XG4gICAgaWYgKHZhbHVlPy5yYW5nZVZhbHVlPy5vcGVyYXRvciAmJiB2YWx1ZT8ucmFuZ2VWYWx1ZT8uZmlyc3RWYWx1ZSkge1xuICAgICAgY29uc3QgZHI6IERhdGVSYW5nZSB8IHVuZGVmaW5lZCA9IFNlYXJjaFV0aWxzLmdldE1hdGNoaW5nRGF0ZVJhbmdlKHZhbHVlLnJhbmdlVmFsdWUpO1xuICAgICAgaWYgKGRyKSB7XG4gICAgICAgIHRoaXMuaW5uZXJGb3JtLnBhdGNoVmFsdWUoeyByYW5nZTogZHIgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLiNjdXN0b21EYXRlUmFuZ2UgPSB2YWx1ZS5yYW5nZVZhbHVlO1xuICAgICAgICB0aGlzLmlubmVyRm9ybS5wYXRjaFZhbHVlKHsgcmFuZ2U6IHRoaXMuI0NVU1RPTV9PUFRJT04gfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5uZXJGb3JtLnBhdGNoVmFsdWUoeyByYW5nZTogdGhpcy4jQU5ZX09QVElPTiB9KTtcbiAgICB9XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHt9XG59XG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cImlubmVyRm9ybVwiPlxuICAgIDx5dmMtZHJvcGRvd24gZm9ybUNvbnRyb2xOYW1lPVwicmFuZ2VcIiBbb3B0aW9uc109XCJkYXRlT3B0aW9ucygpXCIgW2Rpc2FibGVDbGVhckJ1dHRvbl09XCJ0cnVlXCI+PC95dmMtZHJvcGRvd24+XG48L2Zvcm0+Il19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2Utc2VsZWN0LWRhdGUuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy95dXV2aXMvY2xpZW50LWZyYW1ld29yay9mb3Jtcy9zcmMvbGliL2VsZW1lbnRzL3JhbmdlLXNlbGVjdC1kYXRlL3JhbmdlLXNlbGVjdC1kYXRlLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmFuZ2VWYWx1ZSB9IGZyb20gXCJAeXV1dmlzL2NsaWVudC1jb3JlXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmFuZ2VTZWxlY3REYXRlVmFsdWUge1xuICAgIHJhbmdlVmFsdWU6IFJhbmdlVmFsdWU7XG4gICAgbGFiZWw/OiBzdHJpbmc7XG59Il19
|