@dereekb/dbx-form 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -0
- package/dereekb-dbx-form.d.ts +5 -0
- package/esm2020/dereekb-dbx-form.mjs +5 -0
- package/esm2020/index.mjs +2 -0
- package/esm2020/lib/form/action/form.action.directive.mjs +131 -0
- package/esm2020/lib/form/action/form.action.module.mjs +30 -0
- package/esm2020/lib/form/action/index.mjs +3 -0
- package/esm2020/lib/form/form.changes.directive.mjs +33 -0
- package/esm2020/lib/form/form.input.directive.mjs +49 -0
- package/esm2020/lib/form/form.mjs +20 -0
- package/esm2020/lib/form/form.module.mjs +36 -0
- package/esm2020/lib/form/index.mjs +7 -0
- package/esm2020/lib/form/loading/form.loading.directive.mjs +52 -0
- package/esm2020/lib/form/loading/index.mjs +2 -0
- package/esm2020/lib/formly/field/checklist/checklist.item.field.component.mjs +91 -0
- package/esm2020/lib/formly/field/checklist/checklist.item.field.content.default.component.mjs +38 -0
- package/esm2020/lib/formly/field/checklist/checklist.item.field.mjs +119 -0
- package/esm2020/lib/formly/field/checklist/checklist.item.field.module.mjs +81 -0
- package/esm2020/lib/formly/field/checklist/checklist.item.mjs +2 -0
- package/esm2020/lib/formly/field/checklist/index.mjs +6 -0
- package/esm2020/lib/formly/field/component/component.field.component.mjs +35 -0
- package/esm2020/lib/formly/field/component/component.field.mjs +7 -0
- package/esm2020/lib/formly/field/component/component.field.module.mjs +42 -0
- package/esm2020/lib/formly/field/component/index.mjs +4 -0
- package/esm2020/lib/formly/field/field.mjs +21 -0
- package/esm2020/lib/formly/field/index.mjs +7 -0
- package/esm2020/lib/formly/field/selection/index.mjs +4 -0
- package/esm2020/lib/formly/field/selection/pickable/index.mjs +6 -0
- package/esm2020/lib/formly/field/selection/pickable/pickable.chip.field.component.mjs +30 -0
- package/esm2020/lib/formly/field/selection/pickable/pickable.field.directive.mjs +244 -0
- package/esm2020/lib/formly/field/selection/pickable/pickable.field.module.mjs +96 -0
- package/esm2020/lib/formly/field/selection/pickable/pickable.list.field.component.mjs +30 -0
- package/esm2020/lib/formly/field/selection/pickable/pickable.mjs +2 -0
- package/esm2020/lib/formly/field/selection/searchable/index.mjs +9 -0
- package/esm2020/lib/formly/field/selection/searchable/searchable.chip.field.component.mjs +45 -0
- package/esm2020/lib/formly/field/selection/searchable/searchable.field.autocomplete.item.component.mjs +73 -0
- package/esm2020/lib/formly/field/selection/searchable/searchable.field.directive.mjs +237 -0
- package/esm2020/lib/formly/field/selection/searchable/searchable.field.mjs +45 -0
- package/esm2020/lib/formly/field/selection/searchable/searchable.field.module.mjs +107 -0
- package/esm2020/lib/formly/field/selection/searchable/searchable.mjs +2 -0
- package/esm2020/lib/formly/field/selection/searchable/searchable.text.field.component.mjs +31 -0
- package/esm2020/lib/formly/field/selection/searchable/text.chip.field.mjs +15 -0
- package/esm2020/lib/formly/field/selection/selection.mjs +2 -0
- package/esm2020/lib/formly/field/value/array/array.field.component.mjs +87 -0
- package/esm2020/lib/formly/field/value/array/array.field.module.mjs +52 -0
- package/esm2020/lib/formly/field/value/array/index.mjs +3 -0
- package/esm2020/lib/formly/field/value/boolean/boolean.field.mjs +50 -0
- package/esm2020/lib/formly/field/value/boolean/boolean.field.module.mjs +16 -0
- package/esm2020/lib/formly/field/value/boolean/index.mjs +3 -0
- package/esm2020/lib/formly/field/value/date/date.field.mjs +36 -0
- package/esm2020/lib/formly/field/value/date/date.field.module.mjs +87 -0
- package/esm2020/lib/formly/field/value/date/datetime.field.component.mjs +226 -0
- package/esm2020/lib/formly/field/value/date/index.mjs +4 -0
- package/esm2020/lib/formly/field/value/enum/enum.field.mjs +18 -0
- package/esm2020/lib/formly/field/value/enum/enum.mjs +2 -0
- package/esm2020/lib/formly/field/value/enum/index.mjs +4 -0
- package/esm2020/lib/formly/field/value/hidden.field.mjs +8 -0
- package/esm2020/lib/formly/field/value/index.mjs +8 -0
- package/esm2020/lib/formly/field/value/phone/index.mjs +4 -0
- package/esm2020/lib/formly/field/value/phone/phone.field.component.mjs +44 -0
- package/esm2020/lib/formly/field/value/phone/phone.field.mjs +64 -0
- package/esm2020/lib/formly/field/value/phone/phone.field.module.mjs +67 -0
- package/esm2020/lib/formly/field/value/text/index.mjs +4 -0
- package/esm2020/lib/formly/field/value/text/text.address.field.mjs +65 -0
- package/esm2020/lib/formly/field/value/text/text.field.mjs +125 -0
- package/esm2020/lib/formly/field/value/text/text.field.module.mjs +19 -0
- package/esm2020/lib/formly/field/wrapper/autotouch.wrapper.component.mjs +26 -0
- package/esm2020/lib/formly/field/wrapper/expandable.wrapper.component.mjs +83 -0
- package/esm2020/lib/formly/field/wrapper/flex.wrapper.component.mjs +22 -0
- package/esm2020/lib/formly/field/wrapper/flex.wrapper.layout.mjs +20 -0
- package/esm2020/lib/formly/field/wrapper/form.wrapper.module.mjs +84 -0
- package/esm2020/lib/formly/field/wrapper/index.mjs +11 -0
- package/esm2020/lib/formly/field/wrapper/info.wrapper.component.mjs +47 -0
- package/esm2020/lib/formly/field/wrapper/section.wrapper.component.mjs +35 -0
- package/esm2020/lib/formly/field/wrapper/subsection.wrapper.component.mjs +35 -0
- package/esm2020/lib/formly/field/wrapper/toggle.wrapper.component.mjs +58 -0
- package/esm2020/lib/formly/field/wrapper/toggle.wrapper.mjs +10 -0
- package/esm2020/lib/formly/formly.component.mjs +134 -0
- package/esm2020/lib/formly/formly.context.mjs +111 -0
- package/esm2020/lib/formly/formly.directive.mjs +101 -0
- package/esm2020/lib/formly/formly.module.mjs +59 -0
- package/esm2020/lib/formly/index.mjs +6 -0
- package/esm2020/lib/index.mjs +5 -0
- package/esm2020/lib/layout/form.layout.module.mjs +26 -0
- package/esm2020/lib/layout/form.spacer.component.mjs +17 -0
- package/esm2020/lib/layout/index.mjs +3 -0
- package/esm2020/lib/validator/boolean.mjs +12 -0
- package/esm2020/lib/validator/email.mjs +6 -0
- package/esm2020/lib/validator/index.mjs +4 -0
- package/esm2020/lib/validator/number.mjs +21 -0
- package/fesm2015/dereekb-dbx-form.mjs +3295 -0
- package/fesm2015/dereekb-dbx-form.mjs.map +1 -0
- package/fesm2020/dereekb-dbx-form.mjs +3289 -0
- package/fesm2020/dereekb-dbx-form.mjs.map +1 -0
- package/index.d.ts +1 -0
- package/lib/form/action/form.action.directive.d.ts +44 -0
- package/lib/form/action/form.action.module.d.ts +9 -0
- package/lib/form/action/index.d.ts +2 -0
- package/lib/form/form.changes.directive.d.ts +15 -0
- package/lib/form/form.d.ts +51 -0
- package/lib/form/form.input.directive.d.ts +18 -0
- package/lib/form/form.module.d.ts +10 -0
- package/lib/form/index.d.ts +6 -0
- package/lib/form/loading/form.loading.directive.d.ts +19 -0
- package/lib/form/loading/index.d.ts +1 -0
- package/lib/formly/field/checklist/checklist.item.d.ts +38 -0
- package/lib/formly/field/checklist/checklist.item.field.component.d.ts +48 -0
- package/lib/formly/field/checklist/checklist.item.field.content.default.component.d.ts +10 -0
- package/lib/formly/field/checklist/checklist.item.field.d.ts +50 -0
- package/lib/formly/field/checklist/checklist.item.field.module.d.ts +18 -0
- package/lib/formly/field/checklist/index.d.ts +5 -0
- package/lib/formly/field/component/component.field.component.d.ts +22 -0
- package/lib/formly/field/component/component.field.d.ts +6 -0
- package/lib/formly/field/component/component.field.module.d.ts +10 -0
- package/lib/formly/field/component/index.d.ts +3 -0
- package/lib/formly/field/field.d.ts +31 -0
- package/lib/formly/field/index.d.ts +6 -0
- package/lib/formly/field/selection/index.d.ts +3 -0
- package/lib/formly/field/selection/pickable/index.d.ts +5 -0
- package/lib/formly/field/selection/pickable/pickable.chip.field.component.d.ts +10 -0
- package/lib/formly/field/selection/pickable/pickable.d.ts +28 -0
- package/lib/formly/field/selection/pickable/pickable.field.directive.d.ts +155 -0
- package/lib/formly/field/selection/pickable/pickable.field.module.d.ts +20 -0
- package/lib/formly/field/selection/pickable/pickable.list.field.component.d.ts +11 -0
- package/lib/formly/field/selection/searchable/index.d.ts +8 -0
- package/lib/formly/field/selection/searchable/searchable.chip.field.component.d.ts +16 -0
- package/lib/formly/field/selection/searchable/searchable.d.ts +40 -0
- package/lib/formly/field/selection/searchable/searchable.field.autocomplete.item.component.d.ts +20 -0
- package/lib/formly/field/selection/searchable/searchable.field.d.ts +16 -0
- package/lib/formly/field/selection/searchable/searchable.field.directive.d.ts +131 -0
- package/lib/formly/field/selection/searchable/searchable.field.module.d.ts +21 -0
- package/lib/formly/field/selection/searchable/searchable.text.field.component.d.ts +15 -0
- package/lib/formly/field/selection/searchable/text.chip.field.d.ts +9 -0
- package/lib/formly/field/selection/selection.d.ts +25 -0
- package/lib/formly/field/value/array/array.field.component.d.ts +22 -0
- package/lib/formly/field/value/array/array.field.module.d.ts +13 -0
- package/lib/formly/field/value/array/index.d.ts +2 -0
- package/lib/formly/field/value/boolean/boolean.field.d.ts +8 -0
- package/lib/formly/field/value/boolean/boolean.field.module.d.ts +6 -0
- package/lib/formly/field/value/boolean/index.d.ts +2 -0
- package/lib/formly/field/value/date/date.field.d.ts +13 -0
- package/lib/formly/field/value/date/date.field.module.d.ts +21 -0
- package/lib/formly/field/value/date/datetime.field.component.d.ts +105 -0
- package/lib/formly/field/value/date/index.d.ts +3 -0
- package/lib/formly/field/value/enum/enum.d.ts +4 -0
- package/lib/formly/field/value/enum/enum.field.d.ts +14 -0
- package/lib/formly/field/value/enum/index.d.ts +2 -0
- package/lib/formly/field/value/hidden.field.d.ts +5 -0
- package/lib/formly/field/value/index.d.ts +7 -0
- package/lib/formly/field/value/phone/index.d.ts +3 -0
- package/lib/formly/field/value/phone/phone.field.component.d.ts +24 -0
- package/lib/formly/field/value/phone/phone.field.d.ts +26 -0
- package/lib/formly/field/value/phone/phone.field.module.d.ts +16 -0
- package/lib/formly/field/value/text/index.d.ts +3 -0
- package/lib/formly/field/value/text/text.address.field.d.ts +12 -0
- package/lib/formly/field/value/text/text.field.d.ts +42 -0
- package/lib/formly/field/value/text/text.field.module.d.ts +7 -0
- package/lib/formly/field/wrapper/autotouch.wrapper.component.d.ts +11 -0
- package/lib/formly/field/wrapper/expandable.wrapper.component.d.ts +43 -0
- package/lib/formly/field/wrapper/flex.wrapper.component.d.ts +6 -0
- package/lib/formly/field/wrapper/flex.wrapper.layout.d.ts +10 -0
- package/lib/formly/field/wrapper/form.wrapper.module.d.ts +19 -0
- package/lib/formly/field/wrapper/index.d.ts +10 -0
- package/lib/formly/field/wrapper/info.wrapper.component.d.ts +17 -0
- package/lib/formly/field/wrapper/section.wrapper.component.d.ts +8 -0
- package/lib/formly/field/wrapper/subsection.wrapper.component.d.ts +8 -0
- package/lib/formly/field/wrapper/toggle.wrapper.component.d.ts +24 -0
- package/lib/formly/field/wrapper/toggle.wrapper.d.ts +7 -0
- package/lib/formly/formly.component.d.ts +36 -0
- package/lib/formly/formly.context.d.ts +57 -0
- package/lib/formly/formly.directive.d.ts +50 -0
- package/lib/formly/formly.module.d.ts +11 -0
- package/lib/formly/index.d.ts +5 -0
- package/lib/index.d.ts +4 -0
- package/lib/layout/form.layout.module.d.ts +8 -0
- package/lib/layout/form.spacer.component.d.ts +8 -0
- package/lib/layout/index.d.ts +2 -0
- package/lib/validator/boolean.d.ts +2 -0
- package/lib/validator/email.d.ts +3 -0
- package/lib/validator/index.d.ts +3 -0
- package/lib/validator/number.d.ts +2 -0
- package/package.json +67 -0
- package/src/_index.scss +11 -0
- package/src/lib/form/_form.scss +26 -0
- package/src/lib/formly/_formly.scss +26 -0
- package/src/lib/formly/field/_field.scss +33 -0
- package/src/lib/formly/field/checklist/_checklist.scss +26 -0
- package/src/lib/formly/field/checklist/checklist.item_TODO.scss +57 -0
- package/src/lib/formly/field/component/_component.scss +26 -0
- package/src/lib/formly/field/fields_TODO.scss +4 -0
- package/src/lib/formly/field/selection/_selection.scss +17 -0
- package/src/lib/formly/field/selection/generic_TODO.scss +36 -0
- package/src/lib/formly/field/selection/pickable/_pickable.scss +26 -0
- package/src/lib/formly/field/selection/searchable/_searchable.scss +26 -0
- package/src/lib/formly/field/texteditor/_texteditor.scss +26 -0
- package/src/lib/formly/field/texteditor/texteditor_TODO.scss +32 -0
- package/src/lib/formly/field/value/_value.scss +33 -0
- package/src/lib/formly/field/value/array/_array.scss +26 -0
- package/src/lib/formly/field/value/boolean/_boolean.scss +26 -0
- package/src/lib/formly/field/value/date/_date.scss +26 -0
- package/src/lib/formly/field/value/date/date_TODO.scss +27 -0
- package/src/lib/formly/field/value/enum/_enum.scss +26 -0
- package/src/lib/formly/field/value/phone/_phone.scss +26 -0
- package/src/lib/formly/field/value/phone/phone_TODO.scss +10 -0
- package/src/lib/formly/field/value/text/_text.scss +26 -0
- package/src/lib/formly/field/wrapper/_wrapper.scss +26 -0
- package/src/lib/formly/field/wrapper/wrapper_TODO.scss +34 -0
- package/src/lib/formly/form_TODO.scss +153 -0
- package/src/lib/layout/_layout.scss +26 -0
- package/src/lib/style/_all-core.scss +12 -0
- package/src/lib/style/_all-theme.scss +12 -0
- package/src/lib/style/_all-typography.scss +12 -0
- package/src/lib/style/_config.scss +20 -0
- package/src/lib/style/_core.scss +9 -0
- package/src/lib/style/_mixin.scss +3 -0
- package/src/lib/style/_theming.scss +19 -0
- package/src/lib/style/_variables.scss +1 -0
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
import { beginLoading, LoadingStateContextInstance, successResult, mapLoadingStateResults, filterMaybe } from "@dereekb/rxjs";
|
|
2
|
+
import { convertMaybeToArray, findUnique, makeValuesGroupMap } from "@dereekb/util";
|
|
3
|
+
import { Directive, ViewChild } from "@angular/core";
|
|
4
|
+
import { FormControl } from "@angular/forms";
|
|
5
|
+
import { MatInput } from "@angular/material/input";
|
|
6
|
+
import { FieldType } from "@ngx-formly/core";
|
|
7
|
+
import { BehaviorSubject, combineLatest, of } from "rxjs";
|
|
8
|
+
import { filter, map, debounceTime, distinctUntilChanged, switchMap, startWith, shareReplay, mergeMap, first, delay } from "rxjs/operators";
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
/**
|
|
11
|
+
* Used for picking pre-set values using items as the presentation.
|
|
12
|
+
*/
|
|
13
|
+
export class AbstractDbxPickableItemFieldDirective extends FieldType {
|
|
14
|
+
constructor() {
|
|
15
|
+
super(...arguments);
|
|
16
|
+
this.inputCtrl = new FormControl('');
|
|
17
|
+
this._formControlObs = new BehaviorSubject(undefined);
|
|
18
|
+
this.formControl$ = this._formControlObs.pipe(filterMaybe());
|
|
19
|
+
this._displayHashMap = new BehaviorSubject(new Map());
|
|
20
|
+
this.filterInputValue$ = this.inputCtrl.valueChanges.pipe(startWith(undefined));
|
|
21
|
+
this.filterInputValueString$ = this.filterInputValue$.pipe(debounceTime(200), distinctUntilChanged(), shareReplay(1));
|
|
22
|
+
this.loadResultsDisplayValuesState$ = this.formControl$.pipe(first(), switchMap(() => this.loadValuesFn().pipe(switchMap((x) => this.loadDisplayValuesForFieldValues(x)), startWith(beginLoading()))), shareReplay(1));
|
|
23
|
+
this._formControlValue = this.formControl$.pipe(switchMap(control => control.valueChanges.pipe(startWith(control.value), shareReplay(1))));
|
|
24
|
+
this.loadResultsDisplayValues$ = this.loadResultsDisplayValuesState$.pipe(map(x => x?.value ?? []));
|
|
25
|
+
/**
|
|
26
|
+
* Current values in the form control.
|
|
27
|
+
*/
|
|
28
|
+
this.values$ = this._formControlValue.pipe(map(convertMaybeToArray), shareReplay(1));
|
|
29
|
+
/**
|
|
30
|
+
* Current values with their display value.
|
|
31
|
+
*/
|
|
32
|
+
this.displayValuesState$ = combineLatest([this.loadResultsDisplayValues$, this.values$]).pipe(switchMap(([displayValues, currentValues]) => {
|
|
33
|
+
const displayValuesMap = makeValuesGroupMap(displayValues, (x) => this.hashForValue(x.value));
|
|
34
|
+
const valuesNotInDisplayMap = [];
|
|
35
|
+
currentValues.forEach((x) => {
|
|
36
|
+
const key = this.hashForValue(x);
|
|
37
|
+
let displayValue = displayValuesMap.get(key)?.[0];
|
|
38
|
+
if (!displayValue) {
|
|
39
|
+
valuesNotInDisplayMap.push(x);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
if (valuesNotInDisplayMap.length) {
|
|
43
|
+
return this.loadDisplayValuesForValues(valuesNotInDisplayMap).pipe(map(x => mapLoadingStateResults(x, {
|
|
44
|
+
mapValue: (loadedValues) => {
|
|
45
|
+
loadedValues.forEach(x => x.isUnknown = x.isUnknown ?? true); // Assign unknown flag.
|
|
46
|
+
return ([...displayValues, ...loadedValues]);
|
|
47
|
+
}
|
|
48
|
+
})));
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
return of(successResult(displayValues));
|
|
52
|
+
}
|
|
53
|
+
}));
|
|
54
|
+
/**
|
|
55
|
+
* Results to be displayed if filtered.
|
|
56
|
+
*/
|
|
57
|
+
this.filteredSearchResultsState$ = this.loadResultsDisplayValues$.pipe(switchMap((values) => this.filterInputValueString$.pipe(switchMap(text => combineLatest([this._filterValues(text, values), this.displayValuesState$]).pipe(map(([values, displayState]) => mapLoadingStateResults(displayState, {
|
|
58
|
+
mapValue: (displayValues) => {
|
|
59
|
+
const valueHashSet = new Set(values.map(x => this.hashForValue(x)));
|
|
60
|
+
return displayValues.filter(x => !x.isUnknown && valueHashSet.has(x._hash));
|
|
61
|
+
}
|
|
62
|
+
})))))), shareReplay(1));
|
|
63
|
+
this.filteredSearchResults$ = this.filteredSearchResultsState$.pipe(map(x => x?.value), filterMaybe(), shareReplay(1));
|
|
64
|
+
this.items$ = combineLatest([this.filteredSearchResults$, this.values$]).pipe(map(([displayValues, values]) => {
|
|
65
|
+
const selectedHashValuesSet = new Set(values.map(x => this.hashForValue(x)));
|
|
66
|
+
let items = displayValues.map((x) => ({ display: x, selected: selectedHashValuesSet.has(x._hash) }));
|
|
67
|
+
if (this.sortItems) {
|
|
68
|
+
items = this.sortItems(items);
|
|
69
|
+
}
|
|
70
|
+
return items;
|
|
71
|
+
}), shareReplay(1));
|
|
72
|
+
this.itemsLoadingState$ = this.loadResultsDisplayValues$.pipe(switchMap(x => this.items$.pipe(first(), map(x => successResult(x)), startWith(beginLoading()), shareReplay(1))));
|
|
73
|
+
/**
|
|
74
|
+
* Context used for managing the loading of items, or when the current results change.
|
|
75
|
+
*/
|
|
76
|
+
this.context = new LoadingStateContextInstance({ obs: this.itemsLoadingState$, showLoadingOnNoValue: false });
|
|
77
|
+
this.filterItemsLoadingState$ = this.items$.pipe(map(x => successResult(x)), startWith(beginLoading()), shareReplay(1));
|
|
78
|
+
/**
|
|
79
|
+
* Context used for searching/filtering.
|
|
80
|
+
*/
|
|
81
|
+
this.filterResultsContext = new LoadingStateContextInstance({ obs: this.loadResultsDisplayValuesState$, showLoadingOnNoValue: true });
|
|
82
|
+
}
|
|
83
|
+
get multiSelect() {
|
|
84
|
+
return this.field.multiSelect ?? true;
|
|
85
|
+
}
|
|
86
|
+
get asArrayValue() {
|
|
87
|
+
return this.field.asArrayValue ?? true;
|
|
88
|
+
}
|
|
89
|
+
get filterLabel() {
|
|
90
|
+
return this.field.filterLabel;
|
|
91
|
+
}
|
|
92
|
+
get readonly() {
|
|
93
|
+
return this.field.templateOptions?.readonly;
|
|
94
|
+
}
|
|
95
|
+
get required() {
|
|
96
|
+
return this.field.templateOptions?.required;
|
|
97
|
+
}
|
|
98
|
+
get placeholder() {
|
|
99
|
+
return this.field.templateOptions?.placeholder ?? '';
|
|
100
|
+
}
|
|
101
|
+
get description() {
|
|
102
|
+
return this.field.templateOptions?.description;
|
|
103
|
+
}
|
|
104
|
+
get sortItems() {
|
|
105
|
+
return this.field.sortItems;
|
|
106
|
+
}
|
|
107
|
+
get hashForValue() {
|
|
108
|
+
return this.field.hashForValue ?? ((x) => x);
|
|
109
|
+
}
|
|
110
|
+
get displayForValue() {
|
|
111
|
+
return this.field.displayForValue;
|
|
112
|
+
}
|
|
113
|
+
get showFilterInput() {
|
|
114
|
+
return Boolean(this.field.filterValues);
|
|
115
|
+
}
|
|
116
|
+
get filterValuesFn() {
|
|
117
|
+
return this.field.filterValues ?? ((_, x) => of(x.map(y => y.value)));
|
|
118
|
+
}
|
|
119
|
+
get skipFilterFnOnEmpty() {
|
|
120
|
+
return this.field.skipFilterFnOnEmpty ?? true;
|
|
121
|
+
}
|
|
122
|
+
get _filterValues() {
|
|
123
|
+
let fn;
|
|
124
|
+
if (this.skipFilterFnOnEmpty) {
|
|
125
|
+
fn = (filterText, values) => {
|
|
126
|
+
let result;
|
|
127
|
+
if (filterText) {
|
|
128
|
+
result = this.filterValuesFn(filterText, values);
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
result = of(values.map(x => x.value));
|
|
132
|
+
}
|
|
133
|
+
return result;
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
fn = this.filterValuesFn;
|
|
138
|
+
}
|
|
139
|
+
return fn;
|
|
140
|
+
}
|
|
141
|
+
get showTextFilter() {
|
|
142
|
+
return this.field.showTextFilter ?? Boolean(this.field.filterValues);
|
|
143
|
+
}
|
|
144
|
+
get loadValuesFn() {
|
|
145
|
+
return this.field.loadValues;
|
|
146
|
+
}
|
|
147
|
+
get values() {
|
|
148
|
+
return this._getValueOnFormControl(this.formControl.value) ?? [];
|
|
149
|
+
}
|
|
150
|
+
get footerConfig() {
|
|
151
|
+
return this.field.footerConfig;
|
|
152
|
+
}
|
|
153
|
+
loadDisplayValuesForValues(values) {
|
|
154
|
+
return this.loadDisplayValuesForFieldValues(values.map((value) => ({ value })));
|
|
155
|
+
}
|
|
156
|
+
loadDisplayValuesForFieldValues(values) {
|
|
157
|
+
return this.getDisplayValuesForFieldValues(values).pipe(map((displayValues) => ({ loading: false, model: displayValues })), startWith({ loading: true }), shareReplay(1));
|
|
158
|
+
}
|
|
159
|
+
getDisplayValuesForFieldValues(values) {
|
|
160
|
+
return this._displayHashMap.pipe(mergeMap((displayMap) => {
|
|
161
|
+
const mappingResult = values
|
|
162
|
+
.map(x => [x, this.hashForValue(x.value)])
|
|
163
|
+
.map(([x, hash], i) => [i, hash, x, displayMap.get(hash)]);
|
|
164
|
+
const hasDisplay = mappingResult.filter(x => Boolean(x[3]));
|
|
165
|
+
const needsDisplay = mappingResult.filter(x => !x[3]);
|
|
166
|
+
if (needsDisplay.length > 0) {
|
|
167
|
+
// Go get the display value.
|
|
168
|
+
const displayValuesObs = this.displayForValue(needsDisplay.map(x => x[2]));
|
|
169
|
+
return displayValuesObs.pipe(first(), map((displayResults) => {
|
|
170
|
+
const displayResultsWithHash = displayResults.map((x) => {
|
|
171
|
+
x._hash = this.hashForValue(x.value);
|
|
172
|
+
return x;
|
|
173
|
+
});
|
|
174
|
+
// Create a map to re-join values later.
|
|
175
|
+
const displayResultsMapping = displayResultsWithHash.map(x => [x, x._hash]);
|
|
176
|
+
const valueIndexHashMap = new Map(displayResultsMapping.map(([x, hash]) => [hash, x]));
|
|
177
|
+
// Update displayMap. No need to push an update notification.
|
|
178
|
+
displayResultsMapping.forEach(([x, hash]) => displayMap.set(hash, x));
|
|
179
|
+
// Zip values back together.
|
|
180
|
+
const newDisplayValues = mappingResult.map(x => x[3] ?? valueIndexHashMap.get(x[1]));
|
|
181
|
+
// Return display values.
|
|
182
|
+
return newDisplayValues;
|
|
183
|
+
}));
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
// If all display values are hashed return that.
|
|
187
|
+
return of(hasDisplay.map(x => x[3]));
|
|
188
|
+
}
|
|
189
|
+
}));
|
|
190
|
+
}
|
|
191
|
+
ngOnInit() {
|
|
192
|
+
this._formControlObs.next(this.formControl);
|
|
193
|
+
// Focus after finished loading for the first time.
|
|
194
|
+
this.context.loading$.pipe(delay(10), filter(x => x), first()).subscribe(() => {
|
|
195
|
+
this.filterMatInput?.focus();
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
ngOnDestroy() {
|
|
199
|
+
this._displayHashMap.complete();
|
|
200
|
+
this._formControlObs.complete();
|
|
201
|
+
this.filterResultsContext.destroy();
|
|
202
|
+
}
|
|
203
|
+
_getValueOnFormControl(valueOnFormControl) {
|
|
204
|
+
const value = (valueOnFormControl != null) ? [].concat(valueOnFormControl) : []; // Always return an array.
|
|
205
|
+
return value;
|
|
206
|
+
}
|
|
207
|
+
addValue(value) {
|
|
208
|
+
this.setValues([...this.values, value]);
|
|
209
|
+
}
|
|
210
|
+
removeValue(value) {
|
|
211
|
+
const hashToFilter = this.hashForValue(value);
|
|
212
|
+
const values = this.values.filter(x => this.hashForValue(x) !== hashToFilter);
|
|
213
|
+
this.setValues(values);
|
|
214
|
+
}
|
|
215
|
+
setValues(values) {
|
|
216
|
+
// Use to filter non-unique values.
|
|
217
|
+
if (this.hashForValue) {
|
|
218
|
+
values = findUnique(values, this.hashForValue);
|
|
219
|
+
}
|
|
220
|
+
if (!this.multiSelect) {
|
|
221
|
+
values = [values[0]].filter(x => x != null);
|
|
222
|
+
}
|
|
223
|
+
this._setValueOnFormControl(values);
|
|
224
|
+
}
|
|
225
|
+
// MARK: Internal
|
|
226
|
+
_setValueOnFormControl(values) {
|
|
227
|
+
let newValue = values;
|
|
228
|
+
if (!this.asArrayValue) {
|
|
229
|
+
newValue = [values[0]].filter(x => x != null)[0];
|
|
230
|
+
}
|
|
231
|
+
this.formControl.setValue(newValue);
|
|
232
|
+
this.formControl.markAsTouched();
|
|
233
|
+
this.formControl.markAsDirty();
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
AbstractDbxPickableItemFieldDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: AbstractDbxPickableItemFieldDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
237
|
+
AbstractDbxPickableItemFieldDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.0", type: AbstractDbxPickableItemFieldDirective, viewQueries: [{ propertyName: "filterMatInput", first: true, predicate: ["filterMatInput"], descendants: true, static: true }], usesInheritance: true, ngImport: i0 });
|
|
238
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: AbstractDbxPickableItemFieldDirective, decorators: [{
|
|
239
|
+
type: Directive
|
|
240
|
+
}], propDecorators: { filterMatInput: [{
|
|
241
|
+
type: ViewChild,
|
|
242
|
+
args: ['filterMatInput', { static: true }]
|
|
243
|
+
}] } });
|
|
244
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja2FibGUuZmllbGQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZvcm0vc3JjL2xpYi9mb3JtbHkvZmllbGQvc2VsZWN0aW9uL3BpY2thYmxlL3BpY2thYmxlLmZpZWxkLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsWUFBWSxFQUFFLDJCQUEyQixFQUFnQixhQUFhLEVBQUUsc0JBQXNCLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVJLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxVQUFVLEVBQWUsa0JBQWtCLEVBQVMsTUFBTSxlQUFlLENBQUM7QUFDeEcsT0FBTyxFQUFhLFNBQVMsRUFBdUMsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxXQUFXLEVBQW1CLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sa0JBQWtCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFPLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQW1Gako7O0dBRUc7QUFFSCxNQUFNLE9BQU8scUNBQXlDLFNBQVEsU0FBa0Q7SUFEaEg7O1FBTVcsY0FBUyxHQUFHLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRWpDLG9CQUFlLEdBQUcsSUFBSSxlQUFlLENBQXlCLFNBQVMsQ0FBQyxDQUFDO1FBQ3hFLGlC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LENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNsRDtRQUVELElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNqQyxDQUFDOztrSUE5VlUscUNBQXFDO3NIQUFyQyxxQ0FBcUM7MkZBQXJDLHFDQUFxQztrQkFEakQsU0FBUzs4QkFJUixjQUFjO3NCQURiLFNBQVM7dUJBQUMsZ0JBQWdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGJ4SW5qZWN0ZWRDb21wb25lbnRDb25maWcgfSBmcm9tIFwiQGRlcmVla2IvZGJ4LWNvcmVcIjtcbmltcG9ydCB7IGJlZ2luTG9hZGluZywgTG9hZGluZ1N0YXRlQ29udGV4dEluc3RhbmNlLCBMb2FkaW5nU3RhdGUsIHN1Y2Nlc3NSZXN1bHQsIG1hcExvYWRpbmdTdGF0ZVJlc3VsdHMsIGZpbHRlck1heWJlIH0gZnJvbSBcIkBkZXJlZWtiL3J4anNcIjtcbmltcG9ydCB7IGNvbnZlcnRNYXliZVRvQXJyYXksIGZpbmRVbmlxdWUsIGdyb3VwVmFsdWVzLCBtYWtlVmFsdWVzR3JvdXBNYXAsIE1heWJlIH0gZnJvbSBcIkBkZXJlZWtiL3V0aWxcIjtcbmltcG9ydCB7IENvbXBvbmVudCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBPbkRlc3Ryb3ksIE9uSW5pdCwgVHlwZSwgVmlld0NoaWxkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEZvcm1Db250cm9sLCBBYnN0cmFjdENvbnRyb2wgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IE1hdElucHV0IH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2lucHV0XCI7XG5pbXBvcnQgeyBGaWVsZFR5cGUsIEZvcm1seUZpZWxkQ29uZmlnIH0gZnJvbSBcIkBuZ3gtZm9ybWx5L2NvcmVcIjtcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIHN3aXRjaE1hcCwgc3RhcnRXaXRoLCBzaGFyZVJlcGxheSwgbWVyZ2VNYXAsIGZpcnN0LCB0YXAsIGRlbGF5IH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQgeyBQaWNrYWJsZVZhbHVlRmllbGREaXNwbGF5Rm4sIFBpY2thYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZSwgUGlja2FibGVWYWx1ZUZpZWxkRmlsdGVyRm4sIFBpY2thYmxlVmFsdWVGaWVsZEhhc2hGbiwgUGlja2FibGVWYWx1ZUZpZWxkTG9hZFZhbHVlc0ZuLCBQaWNrYWJsZVZhbHVlRmllbGRWYWx1ZSB9IGZyb20gXCIuL3BpY2thYmxlXCI7XG5cbi8qKlxuICogV3JhcHMgdGhlIHNlbGVjdGVkIHN0YXRlIHdpdGggdGhlIGl0ZW1zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBpY2thYmxlSXRlbUZpZWxkSXRlbTxUPiB7XG4gIGRpc3BsYXk6IFBpY2thYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZTxUPjtcbiAgc2VsZWN0ZWQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBQaWNrYWJsZUl0ZW1GaWVsZEl0ZW1Tb3J0Rm48VD4gPSAoaXRlbXM6IFBpY2thYmxlSXRlbUZpZWxkSXRlbTxUPltdKSA9PiBQaWNrYWJsZUl0ZW1GaWVsZEl0ZW08VD5bXTtcblxuZXhwb3J0IGludGVyZmFjZSBQaWNrYWJsZVZhbHVlRmllbGRzRmllbGRDb25maWc8VD4ge1xuICAvKipcbiAgICogTG9hZHMgYWxsIHBpY2thYmxlIHZhbHVlcy5cbiAgICovXG4gIGxvYWRWYWx1ZXM6IFBpY2thYmxlVmFsdWVGaWVsZExvYWRWYWx1ZXNGbjxUPjtcbiAgLyoqXG4gICAqIFVzZWQgZm9yIGJ1aWxkaW5nIGEgZGlzcGxheSB2YWx1ZSBnaXZlbiB0aGUgaW5wdXQuXG4gICAqL1xuICBkaXNwbGF5Rm9yVmFsdWU6IFBpY2thYmxlVmFsdWVGaWVsZERpc3BsYXlGbjxUPjtcbiAgLyoqXG4gICAqIFVzZWQgZm9yIGhhc2hpbmcgZGlzcGxheSB2YWx1ZXMgYW5kIG9taXR0aW5nIHJlcGVhdCB2YWx1ZXMuXG4gICAqXG4gICAqIElmIGhhc2hGb3JWYWx1ZSBpcyBub3QgcHJvdmlkZWQsIHRoZSB2YWx1ZSdzIHZhbHVlIHdpbGwgYmUgdXNlZCBhcyBpcy5cbiAgICovXG4gIGhhc2hGb3JWYWx1ZT86IFBpY2thYmxlVmFsdWVGaWVsZEhhc2hGbjxUPjtcbiAgLyoqXG4gICAqIFVzZWQgZm9yIGZpbHRlcmluZyB2YWx1ZXMgdmlhIHRoZSBzZWFyY2ggdGV4dC5cbiAgICovXG4gIGZpbHRlclZhbHVlcz86IFBpY2thYmxlVmFsdWVGaWVsZEZpbHRlckZuPFQ+O1xuICAvKipcbiAgICogVXNlZCBmb3Igc29ydGluZyB0aGUgaXRlbXMgYmVmb3JlIHRoZXkgYXJlIGRpc3BsYXllZC5cbiAgICogXG4gICAqIFNob3VsZCBvbmx5IGJlIHVzZWQgdG8gc29ydCB2YWx1ZXMuXG4gICAqL1xuICBzb3J0SXRlbXM/OiBQaWNrYWJsZUl0ZW1GaWVsZEl0ZW1Tb3J0Rm48VD47XG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byBhbGxvdyBtdWx0aXBsZSBpdGVtcyB0byBiZSBzZWxlY3RlZC5cbiAgICovXG4gIG11bHRpU2VsZWN0PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIHNldC9nZXQgdmFsdWVzIGFzIGFuIGFycmF5IG9yIGEgc2luZ2xlIHZhbHVlLiBJZiBzZXQgZmFsc2UsIG11bHRpU2VsZWN0IGlzIGlnbm9yZWQuXG4gICAqL1xuICBhc0FycmF5VmFsdWU/OiBib29sZWFuO1xuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gc2hvdyB0aGUgdGV4dCBmaWx0ZXIuIFRydWUgYnkgZGVmYXVsdCBpZiBmaWx0ZXJWYWx1ZXMgaXMgcHJvdmlkZWQuXG4gICAqL1xuICBzaG93VGV4dEZpbHRlcj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byBza2lwIHRoZSBmaWx0ZXIgZnVuY3Rpb24gd2hlbiB0aGUgaW5wdXQgaXMgZW1wdHkuXG4gICAqIFxuICAgKiBUcnVlIGJ5IGRlZmF1bHQuXG4gICAqL1xuICBza2lwRmlsdGVyRm5PbkVtcHR5PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEZpbHRlciBMYWJlbFxuICAgKi9cbiAgZmlsdGVyTGFiZWw/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgdmFsdWVzIHRoYXQgY2FuIGJlIHBpY2tlZFxuICAgKi9cbiAgbWF4UGlja3M/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBPcHRpb25hbCBkZXNjcmlwdGlvbi9oaW50IHRvIGRpc3BsYXkuXG4gICAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIEZvb3RlciBEaXNwbGF5XG4gICAqL1xuICBmb290ZXJDb25maWc/OiBEYnhJbmplY3RlZENvbXBvbmVudENvbmZpZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQaWNrYWJsZVZhbHVlRmllbGRzRm9ybWx5RmllbGRDb25maWc8VD4gZXh0ZW5kcyBQaWNrYWJsZVZhbHVlRmllbGRzRmllbGRDb25maWc8VD4sIEZvcm1seUZpZWxkQ29uZmlnIHsgfVxuXG4vKipcbiAqIERpc3BsYXllZCB2YWx1ZSB3aXRoIHRoZSBjb21wdXRlZCBoYXNoLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBpY2thYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZVdpdGhIYXNoPFQsIE0gPSBhbnk+IGV4dGVuZHMgUGlja2FibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0+IHtcbiAgX2hhc2g6IGFueTtcbn1cblxuLyoqXG4gKiBVc2VkIGZvciBwaWNraW5nIHByZS1zZXQgdmFsdWVzIHVzaW5nIGl0ZW1zIGFzIHRoZSBwcmVzZW50YXRpb24uXG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGNsYXNzIEFic3RyYWN0RGJ4UGlja2FibGVJdGVtRmllbGREaXJlY3RpdmU8VD4gZXh0ZW5kcyBGaWVsZFR5cGU8UGlja2FibGVWYWx1ZUZpZWxkc0Zvcm1seUZpZWxkQ29uZmlnPFQ+PiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBAVmlld0NoaWxkKCdmaWx0ZXJNYXRJbnB1dCcsIHsgc3RhdGljOiB0cnVlIH0pXG4gIGZpbHRlck1hdElucHV0ITogTWF0SW5wdXQ7XG5cbiAgcmVhZG9ubHkgaW5wdXRDdHJsID0gbmV3IEZvcm1Db250cm9sKCcnKTtcblxuICBwcml2YXRlIF9mb3JtQ29udHJvbE9icyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWF5YmU8QWJzdHJhY3RDb250cm9sPj4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgZm9ybUNvbnRyb2wkID0gdGhpcy5fZm9ybUNvbnRyb2xPYnMucGlwZShmaWx0ZXJNYXliZSgpKTtcblxuICBwcml2YXRlIF9kaXNwbGF5SGFzaE1hcCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWFwPGFueSwgUGlja2FibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQ+Pj4obmV3IE1hcCgpKTtcblxuICByZWFkb25seSBmaWx0ZXJJbnB1dFZhbHVlJDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gdGhpcy5pbnB1dEN0cmwudmFsdWVDaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKHVuZGVmaW5lZCBhcyBhbnkpKTtcbiAgcmVhZG9ubHkgZmlsdGVySW5wdXRWYWx1ZVN0cmluZyQ6IE9ic2VydmFibGU8c3RyaW5nPiA9IHRoaXMuZmlsdGVySW5wdXRWYWx1ZSQucGlwZShcbiAgICBkZWJvdW5jZVRpbWUoMjAwKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgbG9hZFJlc3VsdHNEaXNwbGF5VmFsdWVzU3RhdGUkOiBPYnNlcnZhYmxlPExvYWRpbmdTdGF0ZTxQaWNrYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWVXaXRoSGFzaDxUPltdPj4gPSB0aGlzLmZvcm1Db250cm9sJC5waXBlKFxuICAgIGZpcnN0KCksXG4gICAgc3dpdGNoTWFwKCgpID0+IHRoaXMubG9hZFZhbHVlc0ZuKCkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoeCkgPT4gdGhpcy5sb2FkRGlzcGxheVZhbHVlc0ZvckZpZWxkVmFsdWVzKHgpKSxcbiAgICAgIHN0YXJ0V2l0aChiZWdpbkxvYWRpbmc8UGlja2FibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlV2l0aEhhc2g8VD5bXT4oKSlcbiAgICApKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IF9mb3JtQ29udHJvbFZhbHVlOiBPYnNlcnZhYmxlPFQgfCBUW10+ID0gdGhpcy5mb3JtQ29udHJvbCQucGlwZShcbiAgICBzd2l0Y2hNYXAoY29udHJvbCA9PiBjb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgc3RhcnRXaXRoKGNvbnRyb2wudmFsdWUpLFxuICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApKVxuICApO1xuXG4gIHJlYWRvbmx5IGxvYWRSZXN1bHRzRGlzcGxheVZhbHVlcyQ6IE9ic2VydmFibGU8UGlja2FibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlV2l0aEhhc2g8VD5bXT4gPSB0aGlzLmxvYWRSZXN1bHRzRGlzcGxheVZhbHVlc1N0YXRlJC5waXBlKFxuICAgIG1hcCh4ID0+IHg/LnZhbHVlID8/IFtdKVxuICApO1xuXG4gIC8qKlxuICAgKiBDdXJyZW50IHZhbHVlcyBpbiB0aGUgZm9ybSBjb250cm9sLlxuICAgKi9cbiAgcmVhZG9ubHkgdmFsdWVzJDogT2JzZXJ2YWJsZTxUW10+ID0gdGhpcy5fZm9ybUNvbnRyb2xWYWx1ZS5waXBlKFxuICAgIG1hcChjb252ZXJ0TWF5YmVUb0FycmF5KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIC8qKlxuICAgKiBDdXJyZW50IHZhbHVlcyB3aXRoIHRoZWlyIGRpc3BsYXkgdmFsdWUuXG4gICAqL1xuICByZWFkb25seSBkaXNwbGF5VmFsdWVzU3RhdGUkOiBPYnNlcnZhYmxlPExvYWRpbmdTdGF0ZTxQaWNrYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWVXaXRoSGFzaDxUPltdPj4gPVxuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMubG9hZFJlc3VsdHNEaXNwbGF5VmFsdWVzJCwgdGhpcy52YWx1ZXMkXSkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoW2Rpc3BsYXlWYWx1ZXMsIGN1cnJlbnRWYWx1ZXNdKSA9PiB7XG4gICAgICAgIGNvbnN0IGRpc3BsYXlWYWx1ZXNNYXAgPSBtYWtlVmFsdWVzR3JvdXBNYXAoZGlzcGxheVZhbHVlcywgKHgpID0+IHRoaXMuaGFzaEZvclZhbHVlKHgudmFsdWUpKTtcbiAgICAgICAgY29uc3QgdmFsdWVzTm90SW5EaXNwbGF5TWFwOiBUW10gPSBbXTtcblxuICAgICAgICBjdXJyZW50VmFsdWVzLmZvckVhY2goKHgpID0+IHtcbiAgICAgICAgICBjb25zdCBrZXkgPSB0aGlzLmhhc2hGb3JWYWx1ZSh4KTtcbiAgICAgICAgICBsZXQgZGlzcGxheVZhbHVlOiBNYXliZTxQaWNrYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWVXaXRoSGFzaDxUPj4gPSBkaXNwbGF5VmFsdWVzTWFwLmdldChrZXkpPy5bMF07XG5cbiAgICAgICAgICBpZiAoIWRpc3BsYXlWYWx1ZSkge1xuICAgICAgICAgICAgdmFsdWVzTm90SW5EaXNwbGF5TWFwLnB1c2goeCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAodmFsdWVzTm90SW5EaXNwbGF5TWFwLmxlbmd0aCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmxvYWREaXNwbGF5VmFsdWVzRm9yVmFsdWVzKHZhbHVlc05vdEluRGlzcGxheU1hcCkucGlwZShcbiAgICAgICAgICAgIG1hcCh4ID0+IG1hcExvYWRpbmdTdGF0ZVJlc3VsdHMoeCwge1xuICAgICAgICAgICAgICBtYXBWYWx1ZTogKGxvYWRlZFZhbHVlczogUGlja2FibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlV2l0aEhhc2g8VD5bXSkgPT4ge1xuICAgICAgICAgICAgICAgIGxvYWRlZFZhbHVlcy5mb3JFYWNoKHggPT4geC5pc1Vua25vd24gPSB4LmlzVW5rbm93biA/PyB0cnVlKTsgLy8gQXNzaWduIHVua25vd24gZmxhZy5cbiAgICAgICAgICAgICAgICByZXR1cm4gKFsuLi5kaXNwbGF5VmFsdWVzLCAuLi5sb2FkZWRWYWx1ZXNdKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkpXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gb2Yoc3VjY2Vzc1Jlc3VsdChkaXNwbGF5VmFsdWVzKSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAvKipcbiAgICogUmVzdWx0cyB0byBiZSBkaXNwbGF5ZWQgaWYgZmlsdGVyZWQuXG4gICAqL1xuICByZWFkb25seSBmaWx0ZXJlZFNlYXJjaFJlc3VsdHNTdGF0ZSQ6IE9ic2VydmFibGU8TG9hZGluZ1N0YXRlPFBpY2thYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZVdpdGhIYXNoPFQ+W10+PiA9IHRoaXMubG9hZFJlc3VsdHNEaXNwbGF5VmFsdWVzJC5waXBlKFxuICAgIHN3aXRjaE1hcCgodmFsdWVzKSA9PiB0aGlzLmZpbHRlcklucHV0VmFsdWVTdHJpbmckLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAodGV4dCA9PiBjb21iaW5lTGF0ZXN0KFt0aGlzLl9maWx0ZXJWYWx1ZXModGV4dCwgdmFsdWVzKSwgdGhpcy5kaXNwbGF5VmFsdWVzU3RhdGUkXSkucGlwZShcbiAgICAgICAgbWFwKChbdmFsdWVzLCBkaXNwbGF5U3RhdGVdKSA9PiBtYXBMb2FkaW5nU3RhdGVSZXN1bHRzKGRpc3BsYXlTdGF0ZSwge1xuICAgICAgICAgIG1hcFZhbHVlOiAoZGlzcGxheVZhbHVlczogUGlja2FibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlV2l0aEhhc2g8VD5bXSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsdWVIYXNoU2V0ID0gbmV3IFNldCh2YWx1ZXMubWFwKHggPT4gdGhpcy5oYXNoRm9yVmFsdWUoeCkpKTtcbiAgICAgICAgICAgIHJldHVybiBkaXNwbGF5VmFsdWVzLmZpbHRlcih4ID0+ICF4LmlzVW5rbm93biAmJiB2YWx1ZUhhc2hTZXQuaGFzKHguX2hhc2gpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pKSlcbiAgICAgIClcbiAgICApKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGZpbHRlcmVkU2VhcmNoUmVzdWx0cyQ6IE9ic2VydmFibGU8UGlja2FibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlV2l0aEhhc2g8VD5bXT4gPSB0aGlzLmZpbHRlcmVkU2VhcmNoUmVzdWx0c1N0YXRlJC5waXBlKFxuICAgIG1hcCh4ID0+IHg/LnZhbHVlKSxcbiAgICBmaWx0ZXJNYXliZSgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgaXRlbXMkOiBPYnNlcnZhYmxlPFBpY2thYmxlSXRlbUZpZWxkSXRlbTxUPltdPiA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuZmlsdGVyZWRTZWFyY2hSZXN1bHRzJCwgdGhpcy52YWx1ZXMkXSkucGlwZShcbiAgICBtYXAoKFtkaXNwbGF5VmFsdWVzLCB2YWx1ZXNdKSA9PiB7XG4gICAgICBjb25zdCBzZWxlY3RlZEhhc2hWYWx1ZXNTZXQgPSBuZXcgU2V0KHZhbHVlcy5tYXAoeCA9PiB0aGlzLmhhc2hGb3JWYWx1ZSh4KSkpO1xuICAgICAgbGV0IGl0ZW1zOiBQaWNrYWJsZUl0ZW1GaWVsZEl0ZW08VD5bXSA9IGRpc3BsYXlWYWx1ZXMubWFwKCh4KSA9PiAoeyBkaXNwbGF5OiB4LCBzZWxlY3RlZDogc2VsZWN0ZWRIYXNoVmFsdWVzU2V0Lmhhcyh4Ll9oYXNoKSB9KSk7XG5cbiAgICAgIGlmICh0aGlzLnNvcnRJdGVtcykge1xuICAgICAgICBpdGVtcyA9IHRoaXMuc29ydEl0ZW1zKGl0ZW1zKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgaXRlbXNMb2FkaW5nU3RhdGUkOiBPYnNlcnZhYmxlPExvYWRpbmdTdGF0ZT4gPSB0aGlzLmxvYWRSZXN1bHRzRGlzcGxheVZhbHVlcyQucGlwZShcbiAgICBzd2l0Y2hNYXAoeCA9PiB0aGlzLml0ZW1zJC5waXBlKFxuICAgICAgZmlyc3QoKSxcbiAgICAgIG1hcCh4ID0+IHN1Y2Nlc3NSZXN1bHQoeCkpLFxuICAgICAgc3RhcnRXaXRoKGJlZ2luTG9hZGluZygpKSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKSlcbiAgKTtcblxuICAvKipcbiAgICogQ29udGV4dCB1c2VkIGZvciBtYW5hZ2luZyB0aGUgbG9hZGluZyBvZiBpdGVtcywgb3Igd2hlbiB0aGUgY3VycmVudCByZXN1bHRzIGNoYW5nZS5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRleHQgPSBuZXcgTG9hZGluZ1N0YXRlQ29udGV4dEluc3RhbmNlKHsgb2JzOiB0aGlzLml0ZW1zTG9hZGluZ1N0YXRlJCwgc2hvd0xvYWRpbmdPbk5vVmFsdWU6IGZhbHNlIH0pO1xuXG4gIHJlYWRvbmx5IGZpbHRlckl0ZW1zTG9hZGluZ1N0YXRlJDogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU+ID0gdGhpcy5pdGVtcyQucGlwZShcbiAgICBtYXAoeCA9PiBzdWNjZXNzUmVzdWx0KHgpKSxcbiAgICBzdGFydFdpdGgoYmVnaW5Mb2FkaW5nKCkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgLyoqXG4gICAqIENvbnRleHQgdXNlZCBmb3Igc2VhcmNoaW5nL2ZpbHRlcmluZy5cbiAgICovXG4gIHJlYWRvbmx5IGZpbHRlclJlc3VsdHNDb250ZXh0ID0gbmV3IExvYWRpbmdTdGF0ZUNvbnRleHRJbnN0YW5jZSh7IG9iczogdGhpcy5sb2FkUmVzdWx0c0Rpc3BsYXlWYWx1ZXNTdGF0ZSQsIHNob3dMb2FkaW5nT25Ob1ZhbHVlOiB0cnVlIH0pO1xuXG4gIGdldCBtdWx0aVNlbGVjdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5tdWx0aVNlbGVjdCA/PyB0cnVlO1xuICB9XG5cbiAgZ2V0IGFzQXJyYXlWYWx1ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5hc0FycmF5VmFsdWUgPz8gdHJ1ZTtcbiAgfVxuXG4gIGdldCBmaWx0ZXJMYWJlbCgpOiBNYXliZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5maWx0ZXJMYWJlbDtcbiAgfVxuXG4gIGdldCByZWFkb25seSgpOiBNYXliZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQudGVtcGxhdGVPcHRpb25zPy5yZWFkb25seTtcbiAgfVxuXG4gIGdldCByZXF1aXJlZCgpOiBNYXliZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQudGVtcGxhdGVPcHRpb25zPy5yZXF1aXJlZDtcbiAgfVxuXG4gIGdldCBwbGFjZWhvbGRlcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLnRlbXBsYXRlT3B0aW9ucz8ucGxhY2Vob2xkZXIgPz8gJyc7XG4gIH1cblxuICBnZXQgZGVzY3JpcHRpb24oKTogTWF5YmU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQudGVtcGxhdGVPcHRpb25zPy5kZXNjcmlwdGlvbjtcbiAgfVxuXG4gIGdldCBzb3J0SXRlbXMoKTogTWF5YmU8UGlja2FibGVJdGVtRmllbGRJdGVtU29ydEZuPFQ+PiB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQuc29ydEl0ZW1zO1xuICB9XG5cbiAgZ2V0IGhhc2hGb3JWYWx1ZSgpOiBQaWNrYWJsZVZhbHVlRmllbGRIYXNoRm48VD4ge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLmhhc2hGb3JWYWx1ZSA/PyAoKHgpID0+IHggYXMgYW55KTtcbiAgfVxuXG4gIGdldCBkaXNwbGF5Rm9yVmFsdWUoKTogUGlja2FibGVWYWx1ZUZpZWxkRGlzcGxheUZuPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5kaXNwbGF5Rm9yVmFsdWU7XG4gIH1cblxuICBnZXQgc2hvd0ZpbHRlcklucHV0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCb29sZWFuKHRoaXMuZmllbGQuZmlsdGVyVmFsdWVzKTtcbiAgfVxuXG4gIGdldCBmaWx0ZXJWYWx1ZXNGbigpOiBQaWNrYWJsZVZhbHVlRmllbGRGaWx0ZXJGbjxUPiB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQuZmlsdGVyVmFsdWVzID8/ICgoXywgeCkgPT4gb2YoeC5tYXAoeSA9PiB5LnZhbHVlKSkpO1xuICB9XG5cbiAgZ2V0IHNraXBGaWx0ZXJGbk9uRW1wdHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQuc2tpcEZpbHRlckZuT25FbXB0eSA/PyB0cnVlO1xuICB9XG5cbiAgZ2V0IF9maWx0ZXJWYWx1ZXMoKTogUGlja2FibGVWYWx1ZUZpZWxkRmlsdGVyRm48VD4ge1xuICAgIGxldCBmbjogUGlja2FibGVWYWx1ZUZpZWxkRmlsdGVyRm48VD47XG5cbiAgICBpZiAodGhpcy5za2lwRmlsdGVyRm5PbkVtcHR5KSB7XG4gICAgICBmbiA9IChmaWx0ZXJUZXh0OiBNYXliZTxzdHJpbmc+LCB2YWx1ZXM6IFBpY2thYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZTxUPltdKTogT2JzZXJ2YWJsZTxUW10+ID0+IHtcbiAgICAgICAgbGV0IHJlc3VsdDogT2JzZXJ2YWJsZTxUW10+O1xuXG4gICAgICAgIGlmIChmaWx0ZXJUZXh0KSB7XG4gICAgICAgICAgcmVzdWx0ID0gdGhpcy5maWx0ZXJWYWx1ZXNGbihmaWx0ZXJUZXh0LCB2YWx1ZXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdCA9IG9mKHZhbHVlcy5tYXAoeCA9PiB4LnZhbHVlKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm4gPSB0aGlzLmZpbHRlclZhbHVlc0ZuO1xuICAgIH1cblxuICAgIHJldHVybiBmbjtcbiAgfVxuXG4gIGdldCBzaG93VGV4dEZpbHRlcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5zaG93VGV4dEZpbHRlciA/PyBCb29sZWFuKHRoaXMuZmllbGQuZmlsdGVyVmFsdWVzKTtcbiAgfVxuXG4gIGdldCBsb2FkVmFsdWVzRm4oKTogUGlja2FibGVWYWx1ZUZpZWxkTG9hZFZhbHVlc0ZuPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5sb2FkVmFsdWVzO1xuICB9XG5cbiAgZ2V0IHZhbHVlcygpOiBUW10ge1xuICAgIHJldHVybiB0aGlzLl9nZXRWYWx1ZU9uRm9ybUNvbnRyb2wodGhpcy5mb3JtQ29udHJvbC52YWx1ZSkgPz8gW107XG4gIH1cblxuICBnZXQgZm9vdGVyQ29uZmlnKCk6IE1heWJlPERieEluamVjdGVkQ29tcG9uZW50Q29uZmlnPiB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQuZm9vdGVyQ29uZmlnO1xuICB9XG5cbiAgbG9hZERpc3BsYXlWYWx1ZXNGb3JWYWx1ZXModmFsdWVzOiBUW10pOiBPYnNlcnZhYmxlPExvYWRpbmdTdGF0ZTxQaWNrYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWVXaXRoSGFzaDxUPltdPj4ge1xuICAgIHJldHVybiB0aGlzLmxvYWREaXNwbGF5VmFsdWVzRm9yRmllbGRWYWx1ZXModmFsdWVzLm1hcCgodmFsdWUpID0+ICh7IHZhbHVlIH0pKSk7XG4gIH1cblxuICBsb2FkRGlzcGxheVZhbHVlc0ZvckZpZWxkVmFsdWVzKHZhbHVlczogUGlja2FibGVWYWx1ZUZpZWxkVmFsdWU8VD5bXSk6IE9ic2VydmFibGU8TG9hZGluZ1N0YXRlPFBpY2thYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZVdpdGhIYXNoPFQ+W10+PiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RGlzcGxheVZhbHVlc0ZvckZpZWxkVmFsdWVzKHZhbHVlcykucGlwZShcbiAgICAgIG1hcCgoZGlzcGxheVZhbHVlczogUGlja2FibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlV2l0aEhhc2g8VD5bXSkgPT4gKHsgbG9hZGluZzogZmFsc2UsIG1vZGVsOiBkaXNwbGF5VmFsdWVzIH0pKSxcbiAgICAgIHN0YXJ0V2l0aCh7IGxvYWRpbmc6IHRydWUgfSksXG4gICAgICBzaGFyZVJlcGxheSgxKVxuICAgICk7XG4gIH1cblxuICBnZXREaXNwbGF5VmFsdWVzRm9yRmllbGRWYWx1ZXModmFsdWVzOiBQaWNrYWJsZVZhbHVlRmllbGRWYWx1ZTxUPltdKTogT2JzZXJ2YWJsZTxQaWNrYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWVXaXRoSGFzaDxUPltdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc3BsYXlIYXNoTWFwLnBpcGUoXG4gICAgICBtZXJnZU1hcCgoZGlzcGxheU1hcCkgPT4ge1xuICAgICAgICBjb25zdCBtYXBwaW5nUmVzdWx0ID0gdmFsdWVzXG4gICAgICAgICAgLm1hcCh4ID0+IFt4LCB0aGlzLmhhc2hGb3JWYWx1ZSh4LnZhbHVlKV0pXG4gICAgICAgICAgLm1hcCgoW3gsIGhhc2hdLCBpKSA9PiBbaSwgaGFzaCwgeCwgZGlzcGxheU1hcC5nZXQoaGFzaCldIGFzIFtudW1iZXIsIGFueSwgUGlja2FibGVWYWx1ZUZpZWxkVmFsdWU8VD4sIFBpY2thYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZVdpdGhIYXNoPFQ+XSk7XG5cbiAgICAgICAgY29uc3QgaGFzRGlzcGxheSA9IG1hcHBpbmdSZXN1bHQuZmlsdGVyKHggPT4gQm9vbGVhbih4WzNdKSk7XG4gICAgICAgIGNvbnN0IG5lZWRzRGlzcGxheSA9IG1hcHBpbmdSZXN1bHQuZmlsdGVyKHggPT4gIXhbM10pO1xuXG4gICAgICAgIGlmIChuZWVkc0Rpc3BsYXkubGVuZ3RoID4gMCkge1xuXG4gICAgICAgICAgLy8gR28gZ2V0IHRoZSBkaXNwbGF5IHZhbHVlLlxuICAgICAgICAgIGNvbnN0IGRpc3BsYXlWYWx1ZXNPYnMgPSB0aGlzLmRpc3BsYXlGb3JWYWx1ZShuZWVkc0Rpc3BsYXkubWFwKHggPT4geFsyXSkpO1xuXG4gICAgICAgICAgcmV0dXJuIGRpc3BsYXlWYWx1ZXNPYnMucGlwZShcbiAgICAgICAgICAgIGZpcnN0KCksXG4gICAgICAgICAgICBtYXAoKGRpc3BsYXlSZXN1bHRzKSA9PiB7XG5cbiAgICAgICAgICAgICAgY29uc3QgZGlzcGxheVJlc3VsdHNXaXRoSGFzaDogUGlja2FibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlV2l0aEhhc2g8VD5bXSA9IGRpc3BsYXlSZXN1bHRzLm1hcCgoeCkgPT4ge1xuICAgICAgICAgICAgICAgICh4IGFzIFBpY2thYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZVdpdGhIYXNoPFQ+KS5faGFzaCA9IHRoaXMuaGFzaEZvclZhbHVlKHgudmFsdWUpO1xuICAgICAgICAgICAgICAgIHJldHVybiAoeCBhcyBQaWNrYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWVXaXRoSGFzaDxUPik7XG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIC8vIENyZWF0ZSBhIG1hcCB0byByZS1qb2luIHZhbHVlcyBsYXRlci5cbiAgICAgICAgICAgICAgY29uc3QgZGlzcGxheVJlc3VsdHNNYXBwaW5nOiBbUGlja2FibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlV2l0aEhhc2g8VD4sIGFueV1bXSA9IGRpc3BsYXlSZXN1bHRzV2l0aEhhc2gubWFwKHggPT4gW3gsIHguX2hhc2hdKTtcbiAgICAgICAgICAgICAgY29uc3QgdmFsdWVJbmRleEhhc2hNYXAgPSBuZXcgTWFwKGRpc3BsYXlSZXN1bHRzTWFwcGluZy5tYXAoKFt4LCBoYXNoXSkgPT4gW2hhc2gsIHhdKSk7XG5cbiAgICAgICAgICAgICAgLy8gVXBkYXRlIGRpc3BsYXlNYXAuIE5vIG5lZWQgdG8gcHVzaCBhbiB1cGRhdGUgbm90aWZpY2F0aW9uLlxuICAgICAgICAgICAgICBkaXNwbGF5UmVzdWx0c01hcHBpbmcuZm9yRWFjaCgoW3gsIGhhc2hdKSA9PiBkaXNwbGF5TWFwLnNldChoYXNoLCB4KSk7XG5cbiAgICAgICAgICAgICAgLy8gWmlwIHZhbHVlcyBiYWNrIHRvZ2V0aGVyLlxuICAgICAgICAgICAgICBjb25zdCBuZXdEaXNwbGF5VmFsdWVzID0gbWFwcGluZ1Jlc3VsdC5tYXAoeCA9PiB4WzNdID8/IHZhbHVlSW5kZXhIYXNoTWFwLmdldCh4WzFdKSk7XG5cbiAgICAgICAgICAgICAgLy8gUmV0dXJuIGRpc3BsYXkgdmFsdWVzLlxuICAgICAgICAgICAgICByZXR1cm4gbmV3RGlzcGxheVZhbHVlcztcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgIC8vIElmIGFsbCBkaXNwbGF5IHZhbHVlcyBhcmUgaGFzaGVkIHJldHVybiB0aGF0LlxuICAgICAgICAgIHJldHVybiBvZihoYXNEaXNwbGF5Lm1hcCh4ID0+IHhbM10pKSBhcyBPYnNlcnZhYmxlPFBpY2thYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZVdpdGhIYXNoPFQ+W10+O1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9mb3JtQ29udHJvbE9icy5uZXh0KHRoaXMuZm9ybUNvbnRyb2wpO1xuXG4gICAgLy8gRm9jdXMgYWZ0ZXIgZmluaXNoZWQgbG9hZGluZyBmb3IgdGhlIGZpcnN0IHRpbWUuXG4gICAgdGhpcy5jb250ZXh0LmxvYWRpbmckLnBpcGUoXG4gICAgICBkZWxheSgxMCksXG4gICAgICBmaWx0ZXIoeCA9PiB4KSxcbiAgICAgIGZpcnN0KCksXG4gICAgKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5maWx0ZXJNYXRJbnB1dD8uZm9jdXMoKTtcbiAgICB9KVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzcGxheUhhc2hNYXAuY29tcGxldGUoKTtcbiAgICB0aGlzLl9mb3JtQ29udHJvbE9icy5jb21wbGV0ZSgpO1xuICAgIHRoaXMuZmlsdGVyUmVzdWx0c0NvbnRleHQuZGVzdHJveSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9nZXRWYWx1ZU9uRm9ybUNvbnRyb2wodmFsdWVPbkZvcm1Db250cm9sOiBhbnkpOiBUW10ge1xuICAgIGNvbnN0IHZhbHVlID0gKHZhbHVlT25Gb3JtQ29udHJvbCAhPSBudWxsKSA/IFtdLmNvbmNhdCh2YWx1ZU9uRm9ybUNvbnRyb2wpIDogW107ICAvLyBBbHdheXMgcmV0dXJuIGFuIGFycmF5LlxuICAgIHJldHVybiB2YWx1ZSBhcyBUW107XG4gIH1cblxuICBhZGRWYWx1ZSh2YWx1ZTogVCk6IHZvaWQge1xuICAgIHRoaXMuc2V0VmFsdWVzKFsuLi50aGlzLnZhbHVlcywgdmFsdWVdKTtcbiAgfVxuXG4gIHJlbW92ZVZhbHVlKHZhbHVlOiBUKTogdm9pZCB7XG4gICAgY29uc3QgaGFzaFRvRmlsdGVyID0gdGhpcy5oYXNoRm9yVmFsdWUodmFsdWUpO1xuICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMudmFsdWVzLmZpbHRlcih4ID0+IHRoaXMuaGFzaEZvclZhbHVlKHgpICE9PSBoYXNoVG9GaWx0ZXIpO1xuICAgIHRoaXMuc2V0VmFsdWVzKHZhbHVlcyk7XG4gIH1cblxuICBzZXRWYWx1ZXModmFsdWVzOiBUW10pOiB2b2lkIHtcblxuICAgIC8vIFVzZSB0byBmaWx0ZXIgbm9uLXVuaXF1ZSB2YWx1ZXMuXG4gICAgaWYgKHRoaXMuaGFzaEZvclZhbHVlKSB7XG4gICAgICB2YWx1ZXMgPSBmaW5kVW5pcXVlKHZhbHVlcywgdGhpcy5oYXNoRm9yVmFsdWUpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5tdWx0aVNlbGVjdCkge1xuICAgICAgdmFsdWVzID0gW3ZhbHVlc1swXV0uZmlsdGVyKHggPT4geCAhPSBudWxsKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zZXRWYWx1ZU9uRm9ybUNvbnRyb2wodmFsdWVzKTtcbiAgfVxuXG4gIC8vIE1BUks6IEludGVybmFsXG4gIHByb3RlY3RlZCBfc2V0VmFsdWVPbkZvcm1Db250cm9sKHZhbHVlczogVFtdKTogdm9pZCB7XG4gICAgbGV0IG5ld1ZhbHVlOiBUIHwgVFtdID0gdmFsdWVzO1xuXG4gICAgaWYgKCF0aGlzLmFzQXJyYXlWYWx1ZSkge1xuICAgICAgbmV3VmFsdWUgPSBbdmFsdWVzWzBdXS5maWx0ZXIoeCA9PiB4ICE9IG51bGwpWzBdO1xuICAgIH1cblxuICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUobmV3VmFsdWUpO1xuICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzRGlydHkoKTtcbiAgfVxuXG59XG4iXX0=
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { NgModule } from '@angular/core';
|
|
3
|
+
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
4
|
+
import { MatAutocompleteModule } from '@angular/material/autocomplete';
|
|
5
|
+
import { MatListModule } from '@angular/material/list';
|
|
6
|
+
import { MatChipsModule } from '@angular/material/chips';
|
|
7
|
+
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
8
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
9
|
+
import { MatInputModule } from '@angular/material/input';
|
|
10
|
+
import { FormlyModule } from '@ngx-formly/core';
|
|
11
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
12
|
+
import { DbxPickableChipFieldComponent } from './pickable.chip.field.component';
|
|
13
|
+
import { DbxPickableListFieldComponent } from './pickable.list.field.component';
|
|
14
|
+
import { DbxDatePipeModule, DbxInjectedComponentModule } from '@dereekb/dbx-core';
|
|
15
|
+
import { DbxAnchorModule, DbxTextModule, DbxLoadingModule, DbxButtonModule } from '@dereekb/dbx-web';
|
|
16
|
+
import * as i0 from "@angular/core";
|
|
17
|
+
import * as i1 from "@ngx-formly/core";
|
|
18
|
+
export class DbxFormFormlyPickableFieldModule {
|
|
19
|
+
}
|
|
20
|
+
DbxFormFormlyPickableFieldModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: DbxFormFormlyPickableFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
21
|
+
DbxFormFormlyPickableFieldModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: DbxFormFormlyPickableFieldModule, declarations: [DbxPickableChipFieldComponent,
|
|
22
|
+
DbxPickableListFieldComponent], imports: [CommonModule,
|
|
23
|
+
DbxTextModule,
|
|
24
|
+
DbxLoadingModule,
|
|
25
|
+
DbxButtonModule,
|
|
26
|
+
FormsModule,
|
|
27
|
+
MatButtonModule,
|
|
28
|
+
MatInputModule,
|
|
29
|
+
MatFormFieldModule,
|
|
30
|
+
ReactiveFormsModule,
|
|
31
|
+
MatAutocompleteModule,
|
|
32
|
+
MatListModule,
|
|
33
|
+
DbxDatePipeModule,
|
|
34
|
+
DbxAnchorModule,
|
|
35
|
+
MatChipsModule,
|
|
36
|
+
MatIconModule,
|
|
37
|
+
DbxInjectedComponentModule, i1.FormlyModule] });
|
|
38
|
+
DbxFormFormlyPickableFieldModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: DbxFormFormlyPickableFieldModule, imports: [[
|
|
39
|
+
CommonModule,
|
|
40
|
+
DbxTextModule,
|
|
41
|
+
DbxLoadingModule,
|
|
42
|
+
DbxButtonModule,
|
|
43
|
+
FormsModule,
|
|
44
|
+
MatButtonModule,
|
|
45
|
+
MatInputModule,
|
|
46
|
+
MatFormFieldModule,
|
|
47
|
+
ReactiveFormsModule,
|
|
48
|
+
MatAutocompleteModule,
|
|
49
|
+
MatListModule,
|
|
50
|
+
DbxDatePipeModule,
|
|
51
|
+
DbxAnchorModule,
|
|
52
|
+
MatChipsModule,
|
|
53
|
+
MatIconModule,
|
|
54
|
+
DbxInjectedComponentModule,
|
|
55
|
+
FormlyModule.forChild({
|
|
56
|
+
types: [
|
|
57
|
+
{ name: 'pickablechipfield', component: DbxPickableChipFieldComponent },
|
|
58
|
+
{ name: 'pickablelistfield', component: DbxPickableListFieldComponent },
|
|
59
|
+
]
|
|
60
|
+
})
|
|
61
|
+
]] });
|
|
62
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: DbxFormFormlyPickableFieldModule, decorators: [{
|
|
63
|
+
type: NgModule,
|
|
64
|
+
args: [{
|
|
65
|
+
imports: [
|
|
66
|
+
CommonModule,
|
|
67
|
+
DbxTextModule,
|
|
68
|
+
DbxLoadingModule,
|
|
69
|
+
DbxButtonModule,
|
|
70
|
+
FormsModule,
|
|
71
|
+
MatButtonModule,
|
|
72
|
+
MatInputModule,
|
|
73
|
+
MatFormFieldModule,
|
|
74
|
+
ReactiveFormsModule,
|
|
75
|
+
MatAutocompleteModule,
|
|
76
|
+
MatListModule,
|
|
77
|
+
DbxDatePipeModule,
|
|
78
|
+
DbxAnchorModule,
|
|
79
|
+
MatChipsModule,
|
|
80
|
+
MatIconModule,
|
|
81
|
+
DbxInjectedComponentModule,
|
|
82
|
+
FormlyModule.forChild({
|
|
83
|
+
types: [
|
|
84
|
+
{ name: 'pickablechipfield', component: DbxPickableChipFieldComponent },
|
|
85
|
+
{ name: 'pickablelistfield', component: DbxPickableListFieldComponent },
|
|
86
|
+
]
|
|
87
|
+
})
|
|
88
|
+
],
|
|
89
|
+
declarations: [
|
|
90
|
+
DbxPickableChipFieldComponent,
|
|
91
|
+
DbxPickableListFieldComponent
|
|
92
|
+
],
|
|
93
|
+
exports: []
|
|
94
|
+
}]
|
|
95
|
+
}] });
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja2FibGUuZmllbGQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZvcm0vc3JjL2xpYi9mb3JtbHkvZmllbGQvc2VsZWN0aW9uL3BpY2thYmxlL3BpY2thYmxlLmZpZWxkLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEYsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLDBCQUEwQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7OztBQWtDckcsTUFBTSxPQUFPLGdDQUFnQzs7NkhBQWhDLGdDQUFnQzs4SEFBaEMsZ0NBQWdDLGlCQUx6Qyw2QkFBNkI7UUFDN0IsNkJBQTZCLGFBMUI3QixZQUFZO1FBQ1osYUFBYTtRQUNiLGdCQUFnQjtRQUNoQixlQUFlO1FBQ2YsV0FBVztRQUNYLGVBQWU7UUFDZixjQUFjO1FBQ2Qsa0JBQWtCO1FBQ2xCLG1CQUFtQjtRQUNuQixxQkFBcUI7UUFDckIsYUFBYTtRQUNiLGlCQUFpQjtRQUNqQixlQUFlO1FBQ2YsY0FBYztRQUNkLGFBQWE7UUFDYiwwQkFBMEI7OEhBZWpCLGdDQUFnQyxZQS9CbEM7WUFDUCxZQUFZO1lBQ1osYUFBYTtZQUNiLGdCQUFnQjtZQUNoQixlQUFlO1lBQ2YsV0FBVztZQUNYLGVBQWU7WUFDZixjQUFjO1lBQ2Qsa0JBQWtCO1lBQ2xCLG1CQUFtQjtZQUNuQixxQkFBcUI7WUFDckIsYUFBYTtZQUNiLGlCQUFpQjtZQUNqQixlQUFlO1lBQ2YsY0FBYztZQUNkLGFBQWE7WUFDYiwwQkFBMEI7WUFDMUIsWUFBWSxDQUFDLFFBQVEsQ0FBQztnQkFDcEIsS0FBSyxFQUFFO29CQUVMLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFLFNBQVMsRUFBRSw2QkFBNkIsRUFBRTtvQkFDdkUsRUFBRSxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsU0FBUyxFQUFFLDZCQUE2QixFQUFFO2lCQUN4RTthQUNGLENBQUM7U0FDSDsyRkFPVSxnQ0FBZ0M7a0JBaEM1QyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixlQUFlO3dCQUNmLFdBQVc7d0JBQ1gsZUFBZTt3QkFDZixjQUFjO3dCQUNkLGtCQUFrQjt3QkFDbEIsbUJBQW1CO3dCQUNuQixxQkFBcUI7d0JBQ3JCLGFBQWE7d0JBQ2IsaUJBQWlCO3dCQUNqQixlQUFlO3dCQUNmLGNBQWM7d0JBQ2QsYUFBYTt3QkFDYiwwQkFBMEI7d0JBQzFCLFlBQVksQ0FBQyxRQUFRLENBQUM7NEJBQ3BCLEtBQUssRUFBRTtnQ0FFTCxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxTQUFTLEVBQUUsNkJBQTZCLEVBQUU7Z0NBQ3ZFLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFLFNBQVMsRUFBRSw2QkFBNkIsRUFBRTs2QkFDeEU7eUJBQ0YsQ0FBQztxQkFDSDtvQkFDRCxZQUFZLEVBQUU7d0JBQ1osNkJBQTZCO3dCQUM3Qiw2QkFBNkI7cUJBQzlCO29CQUNELE9BQU8sRUFBRSxFQUFFO2lCQUNaIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSc7XG5pbXBvcnQgeyBNYXRMaXN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGlzdCc7XG5pbXBvcnQgeyBNYXRDaGlwc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoaXBzJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBGb3JtbHlNb2R1bGUgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBEYnhQaWNrYWJsZUNoaXBGaWVsZENvbXBvbmVudCB9IGZyb20gJy4vcGlja2FibGUuY2hpcC5maWVsZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGJ4UGlja2FibGVMaXN0RmllbGRDb21wb25lbnQgfSBmcm9tICcuL3BpY2thYmxlLmxpc3QuZmllbGQuY29tcG9uZW50JztcbmltcG9ydCB7IERieERhdGVQaXBlTW9kdWxlLCBEYnhJbmplY3RlZENvbXBvbmVudE1vZHVsZSB9IGZyb20gJ0BkZXJlZWtiL2RieC1jb3JlJztcbmltcG9ydCB7IERieEFuY2hvck1vZHVsZSwgRGJ4VGV4dE1vZHVsZSwgRGJ4TG9hZGluZ01vZHVsZSwgRGJ4QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGRlcmVla2IvZGJ4LXdlYic7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRGJ4VGV4dE1vZHVsZSxcbiAgICBEYnhMb2FkaW5nTW9kdWxlLFxuICAgIERieEJ1dHRvbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgTWF0QXV0b2NvbXBsZXRlTW9kdWxlLFxuICAgIE1hdExpc3RNb2R1bGUsXG4gICAgRGJ4RGF0ZVBpcGVNb2R1bGUsXG4gICAgRGJ4QW5jaG9yTW9kdWxlLFxuICAgIE1hdENoaXBzTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgRGJ4SW5qZWN0ZWRDb21wb25lbnRNb2R1bGUsXG4gICAgRm9ybWx5TW9kdWxlLmZvckNoaWxkKHtcbiAgICAgIHR5cGVzOiBbXG5cbiAgICAgICAgeyBuYW1lOiAncGlja2FibGVjaGlwZmllbGQnLCBjb21wb25lbnQ6IERieFBpY2thYmxlQ2hpcEZpZWxkQ29tcG9uZW50IH0sXG4gICAgICAgIHsgbmFtZTogJ3BpY2thYmxlbGlzdGZpZWxkJywgY29tcG9uZW50OiBEYnhQaWNrYWJsZUxpc3RGaWVsZENvbXBvbmVudCB9LFxuICAgICAgXVxuICAgIH0pXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIERieFBpY2thYmxlQ2hpcEZpZWxkQ29tcG9uZW50LFxuICAgIERieFBpY2thYmxlTGlzdEZpZWxkQ29tcG9uZW50XG4gIF0sXG4gIGV4cG9ydHM6IFtdXG59KVxuZXhwb3J0IGNsYXNzIERieEZvcm1Gb3JtbHlQaWNrYWJsZUZpZWxkTW9kdWxlIHsgfVxuIl19
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Component } from "@angular/core";
|
|
2
|
+
import { AbstractDbxPickableItemFieldDirective } from "./pickable.field.directive";
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@dereekb/dbx-web";
|
|
5
|
+
import * as i2 from "@angular/material/list";
|
|
6
|
+
import * as i3 from "@dereekb/dbx-core";
|
|
7
|
+
import * as i4 from "@angular/material/form-field";
|
|
8
|
+
import * as i5 from "@angular/common";
|
|
9
|
+
import * as i6 from "@angular/material/input";
|
|
10
|
+
import * as i7 from "@angular/forms";
|
|
11
|
+
/**
|
|
12
|
+
* Used for picking pre-set values using a selection list as the presentation.
|
|
13
|
+
*/
|
|
14
|
+
export class DbxPickableListFieldComponent extends AbstractDbxPickableItemFieldDirective {
|
|
15
|
+
matSelectionChanged(selection) {
|
|
16
|
+
const options = selection.source.selectedOptions.selected;
|
|
17
|
+
const items = options.map(x => {
|
|
18
|
+
const { value, selected, disabled } = x;
|
|
19
|
+
return ({ item: value, selected, disabled });
|
|
20
|
+
});
|
|
21
|
+
this.setValues(items.map(x => x.item.display.value));
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
DbxPickableListFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: DbxPickableListFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
25
|
+
DbxPickableListFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.0", type: DbxPickableListFieldComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<div class=\"dbx-pickable-item-field\">\n <dbx-loading [context]=\"context\">\n <ng-container *ngIf=\"showFilterInput\">\n <ng-container *ngTemplateOutlet=\"filterTemplate\"></ng-container>\n </ng-container>\n <div class=\"dbx-model-list dbx-pickable-item-field-list\">\n <mat-selection-list [multiple]=\"multiSelect\" (selectionChange)=\"matSelectionChanged($event)\">\n <mat-list-option *ngFor=\"let item of items$ | async\" [selected]=\"item.selected\" [value]=\"item\">\n <p>{{ item.display.label }}</p>\n </mat-list-option>\n </mat-selection-list>\n <dbx-injected-content [config]=\"footerConfig\"></dbx-injected-content>\n </div>\n </dbx-loading>\n</div>\n\n<!-- Filter Input -->\n<ng-template #filterTemplate>\n <div class=\"dbx-pickable-item-field-filter\">\n <mat-form-field class=\"dbx-pickable-item-field-filter-field\" appearance=\"fill\">\n <mat-label>{{ filterLabel }}</mat-label>\n <input name=\"filter items\" #filterMatInput=\"matInput\" matInput [placeholder]=\"placeholder\"\n [formControl]=\"inputCtrl\">\n </mat-form-field>\n <div class=\"searchable-field-form-loading\">\n <dbx-loading [linear]=\"true\" [context]=\"filterResultsContext\"></dbx-loading>\n </div>\n </div>\n</ng-template>\n", components: [{ type: i1.DbxLoadingComponent, selector: "dbx-loading", inputs: ["show", "text", "mode", "color", "diameter", "linear", "context", "loading", "error"] }, { type: i2.MatSelectionList, selector: "mat-selection-list", inputs: ["disableRipple", "tabIndex", "color", "compareWith", "disabled", "multiple"], outputs: ["selectionChange"], exportAs: ["matSelectionList"] }, { type: i2.MatListOption, selector: "mat-list-option", inputs: ["disableRipple", "checkboxPosition", "color", "value", "disabled", "selected"], outputs: ["selectedChange"], exportAs: ["matListOption"] }, { type: i3.DbxInjectedComponent, selector: "dbx-injected-content, [dbx-injected-content]", inputs: ["config", "template"] }, { type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.MatLabel, selector: "mat-label" }, { type: i6.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"] }, { type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i7.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], pipes: { "async": i5.AsyncPipe } });
|
|
26
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: DbxPickableListFieldComponent, decorators: [{
|
|
27
|
+
type: Component,
|
|
28
|
+
args: [{ template: "<div class=\"dbx-pickable-item-field\">\n <dbx-loading [context]=\"context\">\n <ng-container *ngIf=\"showFilterInput\">\n <ng-container *ngTemplateOutlet=\"filterTemplate\"></ng-container>\n </ng-container>\n <div class=\"dbx-model-list dbx-pickable-item-field-list\">\n <mat-selection-list [multiple]=\"multiSelect\" (selectionChange)=\"matSelectionChanged($event)\">\n <mat-list-option *ngFor=\"let item of items$ | async\" [selected]=\"item.selected\" [value]=\"item\">\n <p>{{ item.display.label }}</p>\n </mat-list-option>\n </mat-selection-list>\n <dbx-injected-content [config]=\"footerConfig\"></dbx-injected-content>\n </div>\n </dbx-loading>\n</div>\n\n<!-- Filter Input -->\n<ng-template #filterTemplate>\n <div class=\"dbx-pickable-item-field-filter\">\n <mat-form-field class=\"dbx-pickable-item-field-filter-field\" appearance=\"fill\">\n <mat-label>{{ filterLabel }}</mat-label>\n <input name=\"filter items\" #filterMatInput=\"matInput\" matInput [placeholder]=\"placeholder\"\n [formControl]=\"inputCtrl\">\n </mat-form-field>\n <div class=\"searchable-field-form-loading\">\n <dbx-loading [linear]=\"true\" [context]=\"filterResultsContext\"></dbx-loading>\n </div>\n </div>\n</ng-template>\n" }]
|
|
29
|
+
}] });
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja2FibGUubGlzdC5maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9zcmMvbGliL2Zvcm1seS9maWVsZC9zZWxlY3Rpb24vcGlja2FibGUvcGlja2FibGUubGlzdC5maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9zcmMvbGliL2Zvcm1seS9maWVsZC9zZWxlY3Rpb24vcGlja2FibGUvcGlja2FibGUubGlzdC5maWVsZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFDLE9BQU8sRUFBRSxxQ0FBcUMsRUFBeUIsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7O0FBRTFHOztHQUVHO0FBSUgsTUFBTSxPQUFPLDZCQUFpQyxTQUFRLHFDQUF3QztJQUU1RixtQkFBbUIsQ0FBQyxTQUFpQztRQUNuRCxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUM7UUFDMUQsTUFBTSxLQUFLLEdBQTRELE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDckYsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3hDLE9BQU8sQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDL0MsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7OzBIQVZVLDZCQUE2Qjs4R0FBN0IsNkJBQTZCLDJFQ1YxQywweENBNkJBOzJGRG5CYSw2QkFBNkI7a0JBSHpDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgTWF0U2VsZWN0aW9uTGlzdENoYW5nZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9saXN0XCI7XG5pbXBvcnQgeyBBYnN0cmFjdERieFBpY2thYmxlSXRlbUZpZWxkRGlyZWN0aXZlLCBQaWNrYWJsZUl0ZW1GaWVsZEl0ZW0gfSBmcm9tIFwiLi9waWNrYWJsZS5maWVsZC5kaXJlY3RpdmVcIjtcblxuLyoqXG4gKiBVc2VkIGZvciBwaWNraW5nIHByZS1zZXQgdmFsdWVzIHVzaW5nIGEgc2VsZWN0aW9uIGxpc3QgYXMgdGhlIHByZXNlbnRhdGlvbi5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAncGlja2FibGUubGlzdC5maWVsZC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgRGJ4UGlja2FibGVMaXN0RmllbGRDb21wb25lbnQ8VD4gZXh0ZW5kcyBBYnN0cmFjdERieFBpY2thYmxlSXRlbUZpZWxkRGlyZWN0aXZlPFQ+IHtcblxuICBtYXRTZWxlY3Rpb25DaGFuZ2VkKHNlbGVjdGlvbjogTWF0U2VsZWN0aW9uTGlzdENoYW5nZSk6IHZvaWQge1xuICAgIGNvbnN0IG9wdGlvbnMgPSBzZWxlY3Rpb24uc291cmNlLnNlbGVjdGVkT3B0aW9ucy5zZWxlY3RlZDtcbiAgICBjb25zdCBpdGVtczogeyBpdGVtOiBQaWNrYWJsZUl0ZW1GaWVsZEl0ZW08VD4sIHNlbGVjdGVkOiBib29sZWFuIH1bXSA9IG9wdGlvbnMubWFwKHggPT4ge1xuICAgICAgY29uc3QgeyB2YWx1ZSwgc2VsZWN0ZWQsIGRpc2FibGVkIH0gPSB4O1xuICAgICAgcmV0dXJuICh7IGl0ZW06IHZhbHVlLCBzZWxlY3RlZCwgZGlzYWJsZWQgfSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnNldFZhbHVlcyhpdGVtcy5tYXAoeCA9PiB4Lml0ZW0uZGlzcGxheS52YWx1ZSkpO1xuICB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJkYngtcGlja2FibGUtaXRlbS1maWVsZFwiPlxuICA8ZGJ4LWxvYWRpbmcgW2NvbnRleHRdPVwiY29udGV4dFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RmlsdGVySW5wdXRcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWx0ZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxkaXYgY2xhc3M9XCJkYngtbW9kZWwtbGlzdCBkYngtcGlja2FibGUtaXRlbS1maWVsZC1saXN0XCI+XG4gICAgICA8bWF0LXNlbGVjdGlvbi1saXN0IFttdWx0aXBsZV09XCJtdWx0aVNlbGVjdFwiIChzZWxlY3Rpb25DaGFuZ2UpPVwibWF0U2VsZWN0aW9uQ2hhbmdlZCgkZXZlbnQpXCI+XG4gICAgICAgIDxtYXQtbGlzdC1vcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXMkIHwgYXN5bmNcIiBbc2VsZWN0ZWRdPVwiaXRlbS5zZWxlY3RlZFwiIFt2YWx1ZV09XCJpdGVtXCI+XG4gICAgICAgICAgPHA+e3sgaXRlbS5kaXNwbGF5LmxhYmVsIH19PC9wPlxuICAgICAgICA8L21hdC1saXN0LW9wdGlvbj5cbiAgICAgIDwvbWF0LXNlbGVjdGlvbi1saXN0PlxuICAgICAgPGRieC1pbmplY3RlZC1jb250ZW50IFtjb25maWddPVwiZm9vdGVyQ29uZmlnXCI+PC9kYngtaW5qZWN0ZWQtY29udGVudD5cbiAgICA8L2Rpdj5cbiAgPC9kYngtbG9hZGluZz5cbjwvZGl2PlxuXG48IS0tIEZpbHRlciBJbnB1dCAtLT5cbjxuZy10ZW1wbGF0ZSAjZmlsdGVyVGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJkYngtcGlja2FibGUtaXRlbS1maWVsZC1maWx0ZXJcIj5cbiAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJkYngtcGlja2FibGUtaXRlbS1maWVsZC1maWx0ZXItZmllbGRcIiBhcHBlYXJhbmNlPVwiZmlsbFwiPlxuICAgICAgPG1hdC1sYWJlbD57eyBmaWx0ZXJMYWJlbCB9fTwvbWF0LWxhYmVsPlxuICAgICAgPGlucHV0IG5hbWU9XCJmaWx0ZXIgaXRlbXNcIiAjZmlsdGVyTWF0SW5wdXQ9XCJtYXRJbnB1dFwiIG1hdElucHV0IFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgIFtmb3JtQ29udHJvbF09XCJpbnB1dEN0cmxcIj5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIDxkaXYgY2xhc3M9XCJzZWFyY2hhYmxlLWZpZWxkLWZvcm0tbG9hZGluZ1wiPlxuICAgICAgPGRieC1sb2FkaW5nIFtsaW5lYXJdPVwidHJ1ZVwiIFtjb250ZXh0XT1cImZpbHRlclJlc3VsdHNDb250ZXh0XCI+PC9kYngtbG9hZGluZz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja2FibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9zcmMvbGliL2Zvcm1seS9maWVsZC9zZWxlY3Rpb24vcGlja2FibGUvcGlja2FibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1heWJlIH0gZnJvbSBcIkBkZXJlZWtiL3V0aWxcIjtcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgU2VsZWN0aW9uRGlzcGxheVZhbHVlLCBTZWxlY3Rpb25WYWx1ZSwgU2VsZWN0aW9uVmFsdWVIYXNoRm4gfSBmcm9tIFwiLi4vc2VsZWN0aW9uXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGlja2FibGVWYWx1ZUZpZWxkVmFsdWU8VCwgTSA9IGFueT4gZXh0ZW5kcyBTZWxlY3Rpb25WYWx1ZTxULCBNPiB7IH1cbmV4cG9ydCBpbnRlcmZhY2UgUGlja2FibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0gPSBhbnk+IGV4dGVuZHMgU2VsZWN0aW9uRGlzcGxheVZhbHVlPFQsIE0+IHsgfVxuXG4vKipcbiAqIFBpY2thYmxlVmFsdWVGaWVsZCBmdW5jdGlvbiBmb3IgcmV0cmlldmluZyBhbGwgdmFsdWVzLlxuICovXG5leHBvcnQgdHlwZSBQaWNrYWJsZVZhbHVlRmllbGRMb2FkVmFsdWVzRm48VCwgTSA9IGFueT4gPSAoKSA9PiBPYnNlcnZhYmxlPFBpY2thYmxlVmFsdWVGaWVsZFZhbHVlPFQsIE0+W10+O1xuXG4vKipcbiAqIFBpY2thYmxlVmFsdWVGaWVsZCBmdW5jdGlvbiB0aGF0IGFsbG93cyB0aGUgdmFsdWVzIGEgY2hhbmNlIHRvIGdvIHRocm91Z2ggYW5vdGhlciBvYnNlcnZhYmxlIGZvciBhbnkgY2hhbmdlcy5cbiAqXG4gKiBWYWx1ZXMgbWF5IG5vdCBoYXZlIG1ldGFkYXRhIG9uIHRoZW0gaW4gc29tZSBjYXNlcywgd2hlcmUgdGhlIHZhbHVlIG1heSBpbmZhY3QgYmUgYW4gdW5rbm93biB2YWx1ZS5cbiAqIFRoZSByZXR1cm5lZCB2YWx1ZSBzaG91bGQgYmUgbWFya2VkIGFzIHVua25vd24sIG9yIGlmIGl0IGhhcyBubyBtZXRhIGJ1dCBpcyBrbm93biwgaXNVbmtub3duIHNob3VsZCBiZSBtYXJrZWQgZmFsc2UuXG4gKiBcbiAqIFRoZSB2YWx1ZSBpdHNlbGYgc2hvdWxkIG5vdCBjaGFuZ2UuIEFsbCBvdGhlciBmaWVsZHMgb24gdGhlIHZhbHVlIG1heSBjaGFuZ2UsIGhvd2V2ZXIuXG4gKi9cbmV4cG9ydCB0eXBlIFBpY2thYmxlVmFsdWVGaWVsZERpc3BsYXlGbjxULCBNID0gYW55PiA9ICh2YWx1ZXM6IFBpY2thYmxlVmFsdWVGaWVsZFZhbHVlPFQsIE0+W10pID0+IE9ic2VydmFibGU8UGlja2FibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0+W10+O1xuXG4vKipcbiAqIFVzZWQgZm9yIGZpbHRlcmluZyB0aGUgdmFsdWVzIHRoYXQgc2hvdWxkIGJlIGRpc3BsYXllZC5cbiAqL1xuZXhwb3J0IHR5cGUgUGlja2FibGVWYWx1ZUZpZWxkRmlsdGVyRm48VCwgTSA9IGFueT4gPSAoZmx0ZXJUZXh0OiBNYXliZTxzdHJpbmc+LCB2YWx1ZXM6IFBpY2thYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZTxULCBNPltdKSA9PiBPYnNlcnZhYmxlPFRbXT47XG5cbi8qKlxuICogVXNlZCB0byBoYXNoIHRoZSB2YWx1ZSBmcm9tIHRoZSBpbnB1dCBwaWNrYWJsZSB2YWx1ZS5cbiAqL1xuZXhwb3J0IHR5cGUgUGlja2FibGVWYWx1ZUZpZWxkSGFzaEZuPFQ+ID0gU2VsZWN0aW9uVmFsdWVIYXNoRm48VD47XG4iXX0=
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * from './searchable.chip.field.component';
|
|
2
|
+
export * from './searchable.field.autocomplete.item.component';
|
|
3
|
+
export * from './searchable.field.directive';
|
|
4
|
+
export * from './searchable.field';
|
|
5
|
+
export * from './searchable.field.module';
|
|
6
|
+
export * from './searchable.text.field.component';
|
|
7
|
+
export * from './searchable';
|
|
8
|
+
export * from './text.chip.field';
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9zcmMvbGliL2Zvcm1seS9maWVsZC9zZWxlY3Rpb24vc2VhcmNoYWJsZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zZWFyY2hhYmxlLmNoaXAuZmllbGQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vc2VhcmNoYWJsZS5maWVsZC5hdXRvY29tcGxldGUuaXRlbS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zZWFyY2hhYmxlLmZpZWxkLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlYXJjaGFibGUuZmllbGQnO1xuZXhwb3J0ICogZnJvbSAnLi9zZWFyY2hhYmxlLmZpZWxkLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlYXJjaGFibGUudGV4dC5maWVsZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zZWFyY2hhYmxlJztcbmV4cG9ydCAqIGZyb20gJy4vdGV4dC5jaGlwLmZpZWxkJztcbiJdfQ==
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { AbstractDbxSearchableValueFieldDirective } from './searchable.field.directive';
|
|
3
|
+
import { COMMA, ENTER } from '@angular/cdk/keycodes';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/material/autocomplete";
|
|
6
|
+
import * as i2 from "@angular/material/core";
|
|
7
|
+
import * as i3 from "./searchable.field.autocomplete.item.component";
|
|
8
|
+
import * as i4 from "@angular/material/form-field";
|
|
9
|
+
import * as i5 from "@angular/material/chips";
|
|
10
|
+
import * as i6 from "@angular/material/icon";
|
|
11
|
+
import * as i7 from "@dereekb/dbx-web";
|
|
12
|
+
import * as i8 from "@angular/common";
|
|
13
|
+
import * as i9 from "@angular/forms";
|
|
14
|
+
export class DbxSearchableChipFieldComponent extends AbstractDbxSearchableValueFieldDirective {
|
|
15
|
+
constructor() {
|
|
16
|
+
super(...arguments);
|
|
17
|
+
this.separatorKeysCodes = [ENTER, COMMA];
|
|
18
|
+
}
|
|
19
|
+
selected(event) {
|
|
20
|
+
this.addWithDisplayValue(event.option.value);
|
|
21
|
+
}
|
|
22
|
+
tabPressedOnInput(event) {
|
|
23
|
+
if (event?.key?.toLowerCase() === 'tab') {
|
|
24
|
+
const value = this.inputCtrl.value;
|
|
25
|
+
if ((value || '').trim()) {
|
|
26
|
+
this._addWithTextValue(value);
|
|
27
|
+
event.preventDefault();
|
|
28
|
+
event.stopImmediatePropagation();
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
addChip(event) {
|
|
35
|
+
const text = event.value ?? this.inputCtrl.value;
|
|
36
|
+
return this._addWithTextValue(text);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
DbxSearchableChipFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: DbxSearchableChipFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
40
|
+
DbxSearchableChipFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.0", type: DbxSearchableChipFieldComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<div class=\"dbx-searchable-field\">\n <!-- Autocomplete -->\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"selected($event)\">\n <mat-option *ngFor=\"let displayValue of (searchResults$ | async)\" [value]=\"displayValue\">\n <dbx-searchable-field-autocomplete-item [displayValue]=\"displayValue\">\n </dbx-searchable-field-autocomplete-item>\n </mat-option>\n </mat-autocomplete>\n <!-- Template -->\n <ng-template #content>\n <mat-form-field class=\"dbx-searchable-field-form-field\">\n <mat-label>{{ label }}</mat-label>\n <!-- TODO: Add back aria-label [attr.aria-label]=\"'email ' + emailParticipantsType\" -->\n <mat-chip-list [required]=\"required\" [disabled]=\"readonly\" #chipList>\n <mat-chip *ngFor=\"let displayValue of displayValues$ | async\" [removable]=\"true\"\n (removed)=\"removeWithDisplayValue(displayValue)\">\n <span class=\"s-chip-label\">{{ displayValue.label }}</span>\n <span class=\"s-chip-sublabel\" *ngIf=\"displayValue.sublabel\">({{ displayValue.sublabel }})</span>\n <mat-icon *ngIf=\"!readonly\" matChipRemove>cancel</mat-icon>\n </mat-chip>\n <input #textInput [name]=\"name\" [placeholder]=\"placeholder\" [formControl]=\"inputCtrl\" [matAutocomplete]=\"auto\"\n autocomplete=\"{{ autocomplete }}\" [matChipInputFor]=\"chipList\" (keydown)=\"tabPressedOnInput($event)\"\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\" (matChipInputTokenEnd)=\"addChip($event)\">\n </mat-chip-list>\n <mat-hint *ngIf=\"description\">{{ description }}</mat-hint>\n </mat-form-field>\n <div class=\"searchable-field-form-loading\">\n <dbx-loading [linear]=\"true\" [context]=\"searchContext\"></dbx-loading>\n </div>\n </ng-template>\n <!-- View -->\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</div>\n", components: [{ type: i1.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i2.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i3.DbxSearchableFieldAutocompleteItemComponent, selector: "dbx-searchable-field-autocomplete-item", inputs: ["displayValue"] }, { type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i5.MatChipList, selector: "mat-chip-list", inputs: ["errorStateMatcher", "multiple", "compareWith", "value", "required", "placeholder", "disabled", "aria-orientation", "selectable", "tabIndex"], outputs: ["change", "valueChange"], exportAs: ["matChipList"] }, { type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i7.DbxLoadingComponent, selector: "dbx-loading", inputs: ["show", "text", "mode", "color", "diameter", "linear", "context", "loading", "error"] }], directives: [{ type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.MatLabel, selector: "mat-label" }, { type: i5.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["color", "disableRipple", "tabIndex", "selected", "value", "selectable", "disabled", "removable"], outputs: ["selectionChange", "destroyed", "removed"], exportAs: ["matChip"] }, { type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.MatChipRemove, selector: "[matChipRemove]" }, { type: i9.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { type: i5.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i9.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i4.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i8.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "async": i8.AsyncPipe } });
|
|
41
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: DbxSearchableChipFieldComponent, decorators: [{
|
|
42
|
+
type: Component,
|
|
43
|
+
args: [{ template: "<div class=\"dbx-searchable-field\">\n <!-- Autocomplete -->\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"selected($event)\">\n <mat-option *ngFor=\"let displayValue of (searchResults$ | async)\" [value]=\"displayValue\">\n <dbx-searchable-field-autocomplete-item [displayValue]=\"displayValue\">\n </dbx-searchable-field-autocomplete-item>\n </mat-option>\n </mat-autocomplete>\n <!-- Template -->\n <ng-template #content>\n <mat-form-field class=\"dbx-searchable-field-form-field\">\n <mat-label>{{ label }}</mat-label>\n <!-- TODO: Add back aria-label [attr.aria-label]=\"'email ' + emailParticipantsType\" -->\n <mat-chip-list [required]=\"required\" [disabled]=\"readonly\" #chipList>\n <mat-chip *ngFor=\"let displayValue of displayValues$ | async\" [removable]=\"true\"\n (removed)=\"removeWithDisplayValue(displayValue)\">\n <span class=\"s-chip-label\">{{ displayValue.label }}</span>\n <span class=\"s-chip-sublabel\" *ngIf=\"displayValue.sublabel\">({{ displayValue.sublabel }})</span>\n <mat-icon *ngIf=\"!readonly\" matChipRemove>cancel</mat-icon>\n </mat-chip>\n <input #textInput [name]=\"name\" [placeholder]=\"placeholder\" [formControl]=\"inputCtrl\" [matAutocomplete]=\"auto\"\n autocomplete=\"{{ autocomplete }}\" [matChipInputFor]=\"chipList\" (keydown)=\"tabPressedOnInput($event)\"\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\" (matChipInputTokenEnd)=\"addChip($event)\">\n </mat-chip-list>\n <mat-hint *ngIf=\"description\">{{ description }}</mat-hint>\n </mat-form-field>\n <div class=\"searchable-field-form-loading\">\n <dbx-loading [linear]=\"true\" [context]=\"searchContext\"></dbx-loading>\n </div>\n </ng-template>\n <!-- View -->\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</div>\n" }]
|
|
44
|
+
}] });
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoYWJsZS5jaGlwLmZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL3NyYy9saWIvZm9ybWx5L2ZpZWxkL3NlbGVjdGlvbi9zZWFyY2hhYmxlL3NlYXJjaGFibGUuY2hpcC5maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9zcmMvbGliL2Zvcm1seS9maWVsZC9zZWxlY3Rpb24vc2VhcmNoYWJsZS9zZWFyY2hhYmxlLmNoaXAuZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcxQyxPQUFPLEVBQUUsd0NBQXdDLEVBQTRFLE1BQU0sOEJBQThCLENBQUM7QUFDbEssT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7Ozs7QUFRckQsTUFBTSxPQUFPLCtCQUFtQyxTQUFRLHdDQUEwRjtJQUhsSjs7UUFLVyx1QkFBa0IsR0FBYSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztLQTBCeEQ7SUF4QkMsUUFBUSxDQUFDLEtBQW1DO1FBQzFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxLQUFvQjtRQUNwQyxJQUFJLEtBQUssRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLEtBQUssS0FBSyxFQUFFO1lBQ3ZDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO1lBRW5DLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7Z0JBQ3hCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDOUIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN2QixLQUFLLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztnQkFDakMsT0FBTyxLQUFLLENBQUM7YUFDZDtTQUNGO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQXdCO1FBQzlCLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7UUFDakQsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQzs7NEhBMUJVLCtCQUErQjtnSEFBL0IsK0JBQStCLDJFQ1o1QyxxM0RBaUNBOzJGRHJCYSwrQkFBK0I7a0JBSDNDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xuaW1wb3J0IHsgTWF0Q2hpcElucHV0RXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGlwcyc7XG5pbXBvcnQgeyBBYnN0cmFjdERieFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlyZWN0aXZlLCBTZWFyY2hhYmxlVmFsdWVGaWVsZHNGaWVsZENvbmZpZywgU2VhcmNoYWJsZVZhbHVlRmllbGRzRm9ybWx5RmllbGRDb25maWcgfSBmcm9tICcuL3NlYXJjaGFibGUuZmllbGQuZGlyZWN0aXZlJztcbmltcG9ydCB7IENPTU1BLCBFTlRFUiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VhcmNoYWJsZUNoaXBWYWx1ZUZpZWxkc0ZpZWxkQ29uZmlnPFQ+IGV4dGVuZHMgU2VhcmNoYWJsZVZhbHVlRmllbGRzRmllbGRDb25maWc8VD4geyB9XG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaGFibGVDaGlwVmFsdWVGaWVsZHNGb3JtbHlGaWVsZENvbmZpZzxUPiBleHRlbmRzIFNlYXJjaGFibGVDaGlwVmFsdWVGaWVsZHNGaWVsZENvbmZpZzxUPiwgU2VhcmNoYWJsZVZhbHVlRmllbGRzRm9ybWx5RmllbGRDb25maWc8VD4geyB9XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJ3NlYXJjaGFibGUuY2hpcC5maWVsZC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgRGJ4U2VhcmNoYWJsZUNoaXBGaWVsZENvbXBvbmVudDxUPiBleHRlbmRzIEFic3RyYWN0RGJ4U2VhcmNoYWJsZVZhbHVlRmllbGREaXJlY3RpdmU8VCwgU2VhcmNoYWJsZUNoaXBWYWx1ZUZpZWxkc0Zvcm1seUZpZWxkQ29uZmlnPFQ+PiB7XG5cbiAgcmVhZG9ubHkgc2VwYXJhdG9yS2V5c0NvZGVzOiBudW1iZXJbXSA9IFtFTlRFUiwgQ09NTUFdO1xuXG4gIHNlbGVjdGVkKGV2ZW50OiBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5hZGRXaXRoRGlzcGxheVZhbHVlKGV2ZW50Lm9wdGlvbi52YWx1ZSk7XG4gIH1cblxuICB0YWJQcmVzc2VkT25JbnB1dChldmVudDogS2V5Ym9hcmRFdmVudCk6IGJvb2xlYW4ge1xuICAgIGlmIChldmVudD8ua2V5Py50b0xvd2VyQ2FzZSgpID09PSAndGFiJykge1xuICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmlucHV0Q3RybC52YWx1ZTtcblxuICAgICAgaWYgKCh2YWx1ZSB8fCAnJykudHJpbSgpKSB7XG4gICAgICAgIHRoaXMuX2FkZFdpdGhUZXh0VmFsdWUodmFsdWUpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgYWRkQ2hpcChldmVudDogTWF0Q2hpcElucHV0RXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0ZXh0ID0gZXZlbnQudmFsdWUgPz8gdGhpcy5pbnB1dEN0cmwudmFsdWU7XG4gICAgcmV0dXJuIHRoaXMuX2FkZFdpdGhUZXh0VmFsdWUodGV4dCk7XG4gIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cImRieC1zZWFyY2hhYmxlLWZpZWxkXCI+XG4gIDwhLS0gQXV0b2NvbXBsZXRlIC0tPlxuICA8bWF0LWF1dG9jb21wbGV0ZSAjYXV0bz1cIm1hdEF1dG9jb21wbGV0ZVwiIChvcHRpb25TZWxlY3RlZCk9XCJzZWxlY3RlZCgkZXZlbnQpXCI+XG4gICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGRpc3BsYXlWYWx1ZSBvZiAoc2VhcmNoUmVzdWx0cyQgfCBhc3luYylcIiBbdmFsdWVdPVwiZGlzcGxheVZhbHVlXCI+XG4gICAgICA8ZGJ4LXNlYXJjaGFibGUtZmllbGQtYXV0b2NvbXBsZXRlLWl0ZW0gW2Rpc3BsYXlWYWx1ZV09XCJkaXNwbGF5VmFsdWVcIj5cbiAgICAgIDwvZGJ4LXNlYXJjaGFibGUtZmllbGQtYXV0b2NvbXBsZXRlLWl0ZW0+XG4gICAgPC9tYXQtb3B0aW9uPlxuICA8L21hdC1hdXRvY29tcGxldGU+XG4gIDwhLS0gVGVtcGxhdGUgLS0+XG4gIDxuZy10ZW1wbGF0ZSAjY29udGVudD5cbiAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJkYngtc2VhcmNoYWJsZS1maWVsZC1mb3JtLWZpZWxkXCI+XG4gICAgICA8bWF0LWxhYmVsPnt7IGxhYmVsIH19PC9tYXQtbGFiZWw+XG4gICAgICA8IS0tIFRPRE86IEFkZCBiYWNrIGFyaWEtbGFiZWwgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ2VtYWlsICcgKyBlbWFpbFBhcnRpY2lwYW50c1R5cGVcIiAtLT5cbiAgICAgIDxtYXQtY2hpcC1saXN0IFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiIFtkaXNhYmxlZF09XCJyZWFkb25seVwiICNjaGlwTGlzdD5cbiAgICAgICAgPG1hdC1jaGlwICpuZ0Zvcj1cImxldCBkaXNwbGF5VmFsdWUgb2YgZGlzcGxheVZhbHVlcyQgfCBhc3luY1wiIFtyZW1vdmFibGVdPVwidHJ1ZVwiXG4gICAgICAgICAgKHJlbW92ZWQpPVwicmVtb3ZlV2l0aERpc3BsYXlWYWx1ZShkaXNwbGF5VmFsdWUpXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzLWNoaXAtbGFiZWxcIj57eyBkaXNwbGF5VmFsdWUubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzLWNoaXAtc3VibGFiZWxcIiAqbmdJZj1cImRpc3BsYXlWYWx1ZS5zdWJsYWJlbFwiPih7eyBkaXNwbGF5VmFsdWUuc3VibGFiZWwgfX0pPC9zcGFuPlxuICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cIiFyZWFkb25seVwiIG1hdENoaXBSZW1vdmU+Y2FuY2VsPC9tYXQtaWNvbj5cbiAgICAgICAgPC9tYXQtY2hpcD5cbiAgICAgICAgPGlucHV0ICN0ZXh0SW5wdXQgW25hbWVdPVwibmFtZVwiIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiIFtmb3JtQ29udHJvbF09XCJpbnB1dEN0cmxcIiBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9cIlxuICAgICAgICAgIGF1dG9jb21wbGV0ZT1cInt7IGF1dG9jb21wbGV0ZSB9fVwiIFttYXRDaGlwSW5wdXRGb3JdPVwiY2hpcExpc3RcIiAoa2V5ZG93bik9XCJ0YWJQcmVzc2VkT25JbnB1dCgkZXZlbnQpXCJcbiAgICAgICAgICBbbWF0Q2hpcElucHV0U2VwYXJhdG9yS2V5Q29kZXNdPVwic2VwYXJhdG9yS2V5c0NvZGVzXCIgKG1hdENoaXBJbnB1dFRva2VuRW5kKT1cImFkZENoaXAoJGV2ZW50KVwiPlxuICAgICAgPC9tYXQtY2hpcC1saXN0PlxuICAgICAgPG1hdC1oaW50ICpuZ0lmPVwiZGVzY3JpcHRpb25cIj57eyBkZXNjcmlwdGlvbiB9fTwvbWF0LWhpbnQ+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICA8ZGl2IGNsYXNzPVwic2VhcmNoYWJsZS1maWVsZC1mb3JtLWxvYWRpbmdcIj5cbiAgICAgIDxkYngtbG9hZGluZyBbbGluZWFyXT1cInRydWVcIiBbY29udGV4dF09XCJzZWFyY2hDb250ZXh0XCI+PC9kYngtbG9hZGluZz5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPCEtLSBWaWV3IC0tPlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFwiPjwvbmctY29udGFpbmVyPlxuPC9kaXY+XG4iXX0=
|