@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,73 @@
|
|
|
1
|
+
import { Component, Input, ViewChild, ViewContainerRef } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
import * as i2 from "@dereekb/dbx-web";
|
|
5
|
+
export class DbxSearchableFieldAutocompleteItemComponent {
|
|
6
|
+
ngOnInit() {
|
|
7
|
+
this.content.clear();
|
|
8
|
+
const componentClass = this.displayValue?.componentClass;
|
|
9
|
+
if (componentClass) {
|
|
10
|
+
const componentRef = this.content.createComponent(componentClass);
|
|
11
|
+
componentRef.instance.displayValue = this.displayValue;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
DbxSearchableFieldAutocompleteItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: DbxSearchableFieldAutocompleteItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
16
|
+
DbxSearchableFieldAutocompleteItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.0", type: DbxSearchableFieldAutocompleteItemComponent, selector: "dbx-searchable-field-autocomplete-item", inputs: { displayValue: "displayValue" }, viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: `
|
|
17
|
+
<ng-template #content></ng-template>
|
|
18
|
+
`, isInline: true });
|
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: DbxSearchableFieldAutocompleteItemComponent, decorators: [{
|
|
20
|
+
type: Component,
|
|
21
|
+
args: [{
|
|
22
|
+
selector: 'dbx-searchable-field-autocomplete-item',
|
|
23
|
+
template: `
|
|
24
|
+
<ng-template #content></ng-template>
|
|
25
|
+
`
|
|
26
|
+
}]
|
|
27
|
+
}], propDecorators: { content: [{
|
|
28
|
+
type: ViewChild,
|
|
29
|
+
args: ['content', { static: true, read: ViewContainerRef }]
|
|
30
|
+
}], displayValue: [{
|
|
31
|
+
type: Input
|
|
32
|
+
}] } });
|
|
33
|
+
// MARK: Default
|
|
34
|
+
export class DbxDefaultSearchableFieldDisplayComponent {
|
|
35
|
+
}
|
|
36
|
+
DbxDefaultSearchableFieldDisplayComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: DbxDefaultSearchableFieldDisplayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
37
|
+
DbxDefaultSearchableFieldDisplayComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.0", type: DbxDefaultSearchableFieldDisplayComponent, selector: "dbx-default-searchable-field-display", inputs: { displayValue: "displayValue" }, ngImport: i0, template: `
|
|
38
|
+
<span class="s-chip-label">{{ displayValue.label }}</span>
|
|
39
|
+
<span class="s-chip-sublabel" *ngIf="displayValue.sublabel">({{ displayValue.sublabel }})</span>
|
|
40
|
+
`, isInline: true, directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
41
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: DbxDefaultSearchableFieldDisplayComponent, decorators: [{
|
|
42
|
+
type: Component,
|
|
43
|
+
args: [{
|
|
44
|
+
selector: 'dbx-default-searchable-field-display',
|
|
45
|
+
template: `
|
|
46
|
+
<span class="s-chip-label">{{ displayValue.label }}</span>
|
|
47
|
+
<span class="s-chip-sublabel" *ngIf="displayValue.sublabel">({{ displayValue.sublabel }})</span>
|
|
48
|
+
`
|
|
49
|
+
}]
|
|
50
|
+
}], propDecorators: { displayValue: [{
|
|
51
|
+
type: Input
|
|
52
|
+
}] } });
|
|
53
|
+
export class DbxDefaultSearchableAnchorFieldDisplayComponent {
|
|
54
|
+
}
|
|
55
|
+
DbxDefaultSearchableAnchorFieldDisplayComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: DbxDefaultSearchableAnchorFieldDisplayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
56
|
+
DbxDefaultSearchableAnchorFieldDisplayComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.0", type: DbxDefaultSearchableAnchorFieldDisplayComponent, selector: "ng-component", inputs: { displayValue: "displayValue" }, ngImport: i0, template: `
|
|
57
|
+
<dbx-anchor [block]="true" [anchor]="displayValue?.anchor">
|
|
58
|
+
<dbx-default-searchable-field-display [displayValue]="displayValue"></dbx-default-searchable-field-display>
|
|
59
|
+
</dbx-anchor>
|
|
60
|
+
`, isInline: true, components: [{ type: i2.DbxAnchorComponent, selector: "dbx-anchor, [dbx-anchor]", inputs: ["block"] }, { type: DbxDefaultSearchableFieldDisplayComponent, selector: "dbx-default-searchable-field-display", inputs: ["displayValue"] }] });
|
|
61
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: DbxDefaultSearchableAnchorFieldDisplayComponent, decorators: [{
|
|
62
|
+
type: Component,
|
|
63
|
+
args: [{
|
|
64
|
+
template: `
|
|
65
|
+
<dbx-anchor [block]="true" [anchor]="displayValue?.anchor">
|
|
66
|
+
<dbx-default-searchable-field-display [displayValue]="displayValue"></dbx-default-searchable-field-display>
|
|
67
|
+
</dbx-anchor>
|
|
68
|
+
`
|
|
69
|
+
}]
|
|
70
|
+
}], propDecorators: { displayValue: [{
|
|
71
|
+
type: Input
|
|
72
|
+
}] } });
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoYWJsZS5maWVsZC5hdXRvY29tcGxldGUuaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9zcmMvbGliL2Zvcm1seS9maWVsZC9zZWxlY3Rpb24vc2VhcmNoYWJsZS9zZWFyY2hhYmxlLmZpZWxkLmF1dG9jb21wbGV0ZS5pdGVtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFTdEYsTUFBTSxPQUFPLDJDQUEyQztJQVF0RCxRQUFRO1FBQ04sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNyQixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLGNBQWMsQ0FBQztRQUV6RCxJQUFJLGNBQWMsRUFBRTtZQUNsQixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNsRSxZQUFZLENBQUMsUUFBUSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1NBQ3hEO0lBQ0gsQ0FBQzs7d0lBaEJVLDJDQUEyQzs0SEFBM0MsMkNBQTJDLHVNQUVWLGdCQUFnQiwyQ0FObEQ7O0dBRVQ7MkZBRVUsMkNBQTJDO2tCQU52RCxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx3Q0FBd0M7b0JBQ2xELFFBQVEsRUFBRTs7R0FFVDtpQkFDRjs4QkFJQyxPQUFPO3NCQUROLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBSTlELFlBQVk7c0JBRFgsS0FBSzs7QUFpQlIsZ0JBQWdCO0FBUWhCLE1BQU0sT0FBTyx5Q0FBeUM7O3NJQUF6Qyx5Q0FBeUM7MEhBQXpDLHlDQUF5QyxzSEFMMUM7OztHQUdUOzJGQUVVLHlDQUF5QztrQkFQckQsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsc0NBQXNDO29CQUNoRCxRQUFRLEVBQUU7OztHQUdUO2lCQUNGOzhCQUlDLFlBQVk7c0JBRFgsS0FBSzs7QUFZUixNQUFNLE9BQU8sK0NBQStDOzs0SUFBL0MsK0NBQStDO2dJQUEvQywrQ0FBK0MsOEZBTmhEOzs7O0dBSVQsaUlBWlUseUNBQXlDOzJGQWN6QywrQ0FBK0M7a0JBUDNELFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFOzs7O0dBSVQ7aUJBQ0Y7OEJBSUMsWUFBWTtzQkFEWCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBWaWV3Q2hpbGQsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNlYXJjaGFibGVGaWVsZERpc3BsYXlDb21wb25lbnQsIFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlIH0gZnJvbSAnLi9zZWFyY2hhYmxlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGJ4LXNlYXJjaGFibGUtZmllbGQtYXV0b2NvbXBsZXRlLWl0ZW0nLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuZy10ZW1wbGF0ZSAjY29udGVudD48L25nLXRlbXBsYXRlPlxuICBgXG59KVxuZXhwb3J0IGNsYXNzIERieFNlYXJjaGFibGVGaWVsZEF1dG9jb21wbGV0ZUl0ZW1Db21wb25lbnQ8VD4gaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBWaWV3Q2hpbGQoJ2NvbnRlbnQnLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KVxuICBjb250ZW50ITogVmlld0NvbnRhaW5lclJlZjtcblxuICBASW5wdXQoKVxuICBkaXNwbGF5VmFsdWU/OiBTZWFyY2hhYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZTxUPjtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRlbnQuY2xlYXIoKTtcbiAgICBjb25zdCBjb21wb25lbnRDbGFzcyA9IHRoaXMuZGlzcGxheVZhbHVlPy5jb21wb25lbnRDbGFzcztcblxuICAgIGlmIChjb21wb25lbnRDbGFzcykge1xuICAgICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy5jb250ZW50LmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnRDbGFzcyk7XG4gICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuZGlzcGxheVZhbHVlID0gdGhpcy5kaXNwbGF5VmFsdWU7XG4gICAgfVxuICB9XG5cbiAgLy8gVE9ETzogTWF5IG5lZWQgdG8gaGFuZGxlIHRoZSBjb21wb25lbnQgYmVpbmcgcmV1c2VkL2lucHV0IGNoYW5naW5nLlxuXG59XG5cbi8vIE1BUks6IERlZmF1bHRcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RieC1kZWZhdWx0LXNlYXJjaGFibGUtZmllbGQtZGlzcGxheScsXG4gIHRlbXBsYXRlOiBgXG4gICAgPHNwYW4gY2xhc3M9XCJzLWNoaXAtbGFiZWxcIj57eyBkaXNwbGF5VmFsdWUubGFiZWwgfX08L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9XCJzLWNoaXAtc3VibGFiZWxcIiAqbmdJZj1cImRpc3BsYXlWYWx1ZS5zdWJsYWJlbFwiPih7eyBkaXNwbGF5VmFsdWUuc3VibGFiZWwgfX0pPC9zcGFuPlxuICBgXG59KVxuZXhwb3J0IGNsYXNzIERieERlZmF1bHRTZWFyY2hhYmxlRmllbGREaXNwbGF5Q29tcG9uZW50PFQ+IGltcGxlbWVudHMgU2VhcmNoYWJsZUZpZWxkRGlzcGxheUNvbXBvbmVudDxUPiB7XG5cbiAgQElucHV0KClcbiAgZGlzcGxheVZhbHVlITogU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWU8VD47XG5cbn1cblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlOiBgXG4gICAgPGRieC1hbmNob3IgW2Jsb2NrXT1cInRydWVcIiBbYW5jaG9yXT1cImRpc3BsYXlWYWx1ZT8uYW5jaG9yXCI+XG4gICAgICA8ZGJ4LWRlZmF1bHQtc2VhcmNoYWJsZS1maWVsZC1kaXNwbGF5IFtkaXNwbGF5VmFsdWVdPVwiZGlzcGxheVZhbHVlXCI+PC9kYngtZGVmYXVsdC1zZWFyY2hhYmxlLWZpZWxkLWRpc3BsYXk+XG4gICAgPC9kYngtYW5jaG9yPlxuICBgXG59KVxuZXhwb3J0IGNsYXNzIERieERlZmF1bHRTZWFyY2hhYmxlQW5jaG9yRmllbGREaXNwbGF5Q29tcG9uZW50PFQ+IGltcGxlbWVudHMgU2VhcmNoYWJsZUZpZWxkRGlzcGxheUNvbXBvbmVudDxUPiB7XG5cbiAgQElucHV0KClcbiAgZGlzcGxheVZhbHVlITogU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWU8VD47XG5cbn1cbiJdfQ==
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
import { filterMaybe, SubscriptionObject, beginLoading, LoadingStateContextInstance } from '@dereekb/rxjs';
|
|
2
|
+
import { Directive, ElementRef, ViewChild } from '@angular/core';
|
|
3
|
+
import { FormControl } from '@angular/forms';
|
|
4
|
+
import { FieldType } from '@ngx-formly/core';
|
|
5
|
+
import { debounceTime, distinctUntilChanged, filter, first, map, mergeMap, shareReplay, startWith, switchMap, BehaviorSubject, of } from 'rxjs';
|
|
6
|
+
import { DbxDefaultSearchableAnchorFieldDisplayComponent, DbxDefaultSearchableFieldDisplayComponent } from './searchable.field.autocomplete.item.component';
|
|
7
|
+
import { convertMaybeToArray, findUnique } from '@dereekb/util';
|
|
8
|
+
import { camelCase } from 'change-case';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
/**
|
|
11
|
+
* Abstract searchable field that provides a feature for searching for values, and for displaying values using Observables.
|
|
12
|
+
*
|
|
13
|
+
* Display values are cached for performance.
|
|
14
|
+
*/
|
|
15
|
+
export class AbstractDbxSearchableValueFieldDirective extends FieldType {
|
|
16
|
+
constructor() {
|
|
17
|
+
super(...arguments);
|
|
18
|
+
/**
|
|
19
|
+
* Whether or not to set/get values as an array.
|
|
20
|
+
*/
|
|
21
|
+
this.multiSelect = true;
|
|
22
|
+
this.inputCtrl = new FormControl('');
|
|
23
|
+
this._formControlObs = new BehaviorSubject(undefined);
|
|
24
|
+
this.formControl$ = this._formControlObs.pipe(filterMaybe());
|
|
25
|
+
this._displayHashMap = new BehaviorSubject(new Map());
|
|
26
|
+
this.inputValue$ = this.inputCtrl.valueChanges.pipe();
|
|
27
|
+
this.inputValueString$ = this.inputValue$.pipe(debounceTime(200), distinctUntilChanged());
|
|
28
|
+
this.searchResultsState$ = this.inputValueString$.pipe(filter((text) => Boolean(text || this.searchOnEmptyText) && Boolean(this.search)),
|
|
29
|
+
// TODO: Consider caching search text/results.
|
|
30
|
+
switchMap((text) => this.search(text).pipe(switchMap((x) => this.loadDisplayValuesForFieldValues(x)),
|
|
31
|
+
// Return begin loading to setup the loading state.
|
|
32
|
+
startWith(beginLoading()))), shareReplay(1));
|
|
33
|
+
this.singleValueSyncSubscription = new SubscriptionObject();
|
|
34
|
+
this.searchContext = new LoadingStateContextInstance({ obs: this.searchResultsState$, showLoadingOnNoValue: true });
|
|
35
|
+
this.searchResults$ = this.searchResultsState$.pipe(map(x => x?.value ?? []));
|
|
36
|
+
this._formControlValue = this.formControl$.pipe(switchMap(control => control.valueChanges.pipe(startWith(control.value), shareReplay(1))));
|
|
37
|
+
this.values$ = this._formControlValue.pipe(map(convertMaybeToArray), shareReplay(1));
|
|
38
|
+
this.displayValuesState$ = this.values$.pipe(distinctUntilChanged(), switchMap((values) => this.loadDisplayValuesForValues(values)), shareReplay(1));
|
|
39
|
+
this.displayValues$ = this.displayValuesState$.pipe(map(x => x?.value ?? []));
|
|
40
|
+
}
|
|
41
|
+
get name() {
|
|
42
|
+
return this.field.name ?? (camelCase(this.label ?? this.key));
|
|
43
|
+
}
|
|
44
|
+
get label() {
|
|
45
|
+
return this.field.templateOptions?.label;
|
|
46
|
+
}
|
|
47
|
+
get readonly() {
|
|
48
|
+
return this.field.templateOptions?.readonly;
|
|
49
|
+
}
|
|
50
|
+
get searchOnEmptyText() {
|
|
51
|
+
return this.field.searchOnEmptyText ?? false;
|
|
52
|
+
}
|
|
53
|
+
get required() {
|
|
54
|
+
return this.field.templateOptions?.required;
|
|
55
|
+
}
|
|
56
|
+
get autocomplete() {
|
|
57
|
+
return this.field.templateOptions?.attributes?.['autocomplete'] ?? this.key;
|
|
58
|
+
}
|
|
59
|
+
get placeholder() {
|
|
60
|
+
return this.field.templateOptions?.placeholder ?? '';
|
|
61
|
+
}
|
|
62
|
+
get description() {
|
|
63
|
+
return this.field.description ?? this.field.templateOptions?.description;
|
|
64
|
+
}
|
|
65
|
+
get hashForValue() {
|
|
66
|
+
return this.field.hashForValue ?? ((x) => x);
|
|
67
|
+
}
|
|
68
|
+
get displayForValue() {
|
|
69
|
+
return this.field.displayForValue;
|
|
70
|
+
}
|
|
71
|
+
get useAnchor() {
|
|
72
|
+
return this.field.useAnchor;
|
|
73
|
+
}
|
|
74
|
+
get anchorForValue() {
|
|
75
|
+
return this.field.anchorForValue;
|
|
76
|
+
}
|
|
77
|
+
get componentClass() {
|
|
78
|
+
return this.field.componentClass;
|
|
79
|
+
}
|
|
80
|
+
get search() {
|
|
81
|
+
return this.field.search;
|
|
82
|
+
}
|
|
83
|
+
get values() {
|
|
84
|
+
return this._getValueOnFormControl(this.formControl.value) ?? [];
|
|
85
|
+
}
|
|
86
|
+
get allowStringValues() {
|
|
87
|
+
return this.allowStringValues ?? Boolean(this.convertStringValue);
|
|
88
|
+
}
|
|
89
|
+
get convertStringValue() {
|
|
90
|
+
return this.field.convertStringValue;
|
|
91
|
+
}
|
|
92
|
+
loadDisplayValuesForValues(values) {
|
|
93
|
+
return this.loadDisplayValuesForFieldValues(values.map((value) => ({ value })));
|
|
94
|
+
}
|
|
95
|
+
loadDisplayValuesForFieldValues(values) {
|
|
96
|
+
return this.getDisplayValuesForFieldValues(values).pipe(map((displayValues) => ({ loading: false, model: displayValues })), startWith({ loading: true }), shareReplay(1));
|
|
97
|
+
}
|
|
98
|
+
getDisplayValuesForFieldValues(values) {
|
|
99
|
+
return this._displayHashMap.pipe(mergeMap((displayMap) => {
|
|
100
|
+
const mappingResult = values
|
|
101
|
+
.map(x => [x, this.hashForValue(x.value)])
|
|
102
|
+
.map(([x, hash], i) => [i, hash, x, displayMap.get(hash)]);
|
|
103
|
+
const hasDisplay = mappingResult.filter(x => Boolean(x[3]));
|
|
104
|
+
const needsDisplay = mappingResult.filter(x => !x[3]);
|
|
105
|
+
if (needsDisplay.length > 0) {
|
|
106
|
+
// Go get the display value.
|
|
107
|
+
const displayValuesObs = this.displayForValue(needsDisplay.map(x => x[2]));
|
|
108
|
+
const componentClass = this.componentClass ?? this.defaultComponentClass;
|
|
109
|
+
const anchorForValue = this.useAnchor && this.anchorForValue;
|
|
110
|
+
return displayValuesObs.pipe(first(), map((displayResults) => {
|
|
111
|
+
// Assign the default component classes.
|
|
112
|
+
displayResults.forEach(x => {
|
|
113
|
+
if (!x.componentClass) {
|
|
114
|
+
x.componentClass = componentClass;
|
|
115
|
+
}
|
|
116
|
+
if (!x.anchor && anchorForValue) {
|
|
117
|
+
x.anchor = anchorForValue(x);
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
// Create a map to re-join values later.
|
|
121
|
+
const displayResultsMapping = displayResults.map(x => [x, this.hashForValue(x.value)]);
|
|
122
|
+
const valueIndexHashMap = new Map(displayResultsMapping.map(([x, hash]) => [hash, x]));
|
|
123
|
+
// Update displayMap. No need to push an update notification.
|
|
124
|
+
displayResultsMapping.forEach(([x, hash]) => displayMap.set(hash, x));
|
|
125
|
+
// Zip values back together.
|
|
126
|
+
const newDisplayValues = mappingResult.map(x => x[3] ?? valueIndexHashMap.get(x[1]));
|
|
127
|
+
// Return display values.
|
|
128
|
+
return newDisplayValues;
|
|
129
|
+
}));
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
// If all display values are hashed return that.
|
|
133
|
+
return of(hasDisplay.map(x => x[3]));
|
|
134
|
+
}
|
|
135
|
+
}));
|
|
136
|
+
}
|
|
137
|
+
ngOnInit() {
|
|
138
|
+
this._formControlObs.next(this.formControl);
|
|
139
|
+
if (this.field.textInputValidator) {
|
|
140
|
+
this.inputCtrl.setValidators(this.field.textInputValidator);
|
|
141
|
+
}
|
|
142
|
+
if (!this.defaultComponentClass) {
|
|
143
|
+
if (this.useAnchor) {
|
|
144
|
+
this.defaultComponentClass = DbxDefaultSearchableAnchorFieldDisplayComponent;
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
this.defaultComponentClass = DbxDefaultSearchableFieldDisplayComponent;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
if (this.multiSelect === false) {
|
|
151
|
+
this.singleValueSyncSubscription.subscription = this.displayValues$.subscribe((x) => {
|
|
152
|
+
if (x[0]) {
|
|
153
|
+
this._syncSingleValue(x[0]);
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
ngOnDestroy() {
|
|
159
|
+
this._displayHashMap.complete();
|
|
160
|
+
this._formControlObs.complete();
|
|
161
|
+
this.searchContext.destroy();
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Used to sync the input control with the selected value.
|
|
165
|
+
*
|
|
166
|
+
* Only used when multiSelect is false.
|
|
167
|
+
*/
|
|
168
|
+
_syncSingleValue(value) {
|
|
169
|
+
this.inputCtrl.setValue(value.label);
|
|
170
|
+
}
|
|
171
|
+
_addWithTextValue(text) {
|
|
172
|
+
if (!this.field.allowStringValues) {
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
if (text) {
|
|
176
|
+
text = (text || '').trim();
|
|
177
|
+
this.inputCtrl.setValue(text.trim());
|
|
178
|
+
}
|
|
179
|
+
// console.log('Add: ', text, this.inputCtrl.valid);
|
|
180
|
+
if (!this.inputCtrl.valid) {
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
if (text) {
|
|
184
|
+
const value = (this.convertStringValue) ? this.convertStringValue(text) : text;
|
|
185
|
+
this.addValue(value);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
addWithDisplayValue(displayValue) {
|
|
189
|
+
this.addValue(displayValue.value);
|
|
190
|
+
}
|
|
191
|
+
removeWithDisplayValue(displayValue) {
|
|
192
|
+
this.removeValue(displayValue.value);
|
|
193
|
+
}
|
|
194
|
+
addValue(value) {
|
|
195
|
+
this.textInput.nativeElement.value = '';
|
|
196
|
+
this.inputCtrl.setValue(null);
|
|
197
|
+
this.setValues([...this.values, value]);
|
|
198
|
+
}
|
|
199
|
+
removeValue(value) {
|
|
200
|
+
let values;
|
|
201
|
+
if (this.hashForValue) {
|
|
202
|
+
const hashToFilter = this.hashForValue(value);
|
|
203
|
+
values = this.values.filter(x => this.hashForValue(x) !== hashToFilter);
|
|
204
|
+
}
|
|
205
|
+
else {
|
|
206
|
+
values = this.values.filter(x => x !== value);
|
|
207
|
+
}
|
|
208
|
+
this.setValues(values);
|
|
209
|
+
}
|
|
210
|
+
setValues(values) {
|
|
211
|
+
// Use to filter non-unique values.
|
|
212
|
+
if (this.hashForValue) {
|
|
213
|
+
values = findUnique(values, this.hashForValue);
|
|
214
|
+
}
|
|
215
|
+
this._setValueOnFormControl(values);
|
|
216
|
+
}
|
|
217
|
+
// MARK: Internal
|
|
218
|
+
_getValueOnFormControl(valueOnFormControl) {
|
|
219
|
+
const value = (valueOnFormControl != null) ? [].concat(valueOnFormControl) : []; // Always return an array.
|
|
220
|
+
return value;
|
|
221
|
+
}
|
|
222
|
+
_setValueOnFormControl(values) {
|
|
223
|
+
const value = (this.multiSelect) ? values : values?.[0];
|
|
224
|
+
this.formControl.setValue(value);
|
|
225
|
+
this.formControl.markAsDirty();
|
|
226
|
+
this.formControl.markAsTouched();
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
AbstractDbxSearchableValueFieldDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: AbstractDbxSearchableValueFieldDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
230
|
+
AbstractDbxSearchableValueFieldDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.0", type: AbstractDbxSearchableValueFieldDirective, viewQueries: [{ propertyName: "textInput", first: true, predicate: ["textInput"], descendants: true }], usesInheritance: true, ngImport: i0 });
|
|
231
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: AbstractDbxSearchableValueFieldDirective, decorators: [{
|
|
232
|
+
type: Directive
|
|
233
|
+
}], propDecorators: { textInput: [{
|
|
234
|
+
type: ViewChild,
|
|
235
|
+
args: ['textInput']
|
|
236
|
+
}] } });
|
|
237
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoYWJsZS5maWVsZC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9zcmMvbGliL2Zvcm1seS9maWVsZC9zZWxlY3Rpb24vc2VhcmNoYWJsZS9zZWFyY2hhYmxlLmZpZWxkLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBZ0IsMkJBQTJCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekgsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQTJCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQW1CLFdBQVcsRUFBZSxNQUFNLGdCQUFnQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sa0JBQWtCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLEVBQUUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUs1SixPQUFPLEVBQUUsK0NBQStDLEVBQUUseUNBQXlDLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUM1SixPQUFPLEVBQVMsbUJBQW1CLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7O0FBOER4Qzs7OztHQUlHO0FBRUgsTUFBTSxPQUFnQix3Q0FDcEIsU0FBUSxTQUFZO0lBRnRCOztRQUlFOztXQUVHO1FBQ0gsZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFPVixjQUFTLEdBQUcsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFakMsb0JBQWUsR0FBRyxJQUFJ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QUMsTUFBVztRQUMxQyxNQUFNLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDbkMsQ0FBQzs7cUlBdFRtQix3Q0FBd0M7eUhBQXhDLHdDQUF3QzsyRkFBeEMsd0NBQXdDO2tCQUQ3RCxTQUFTOzhCQVlSLFNBQVM7c0JBRFIsU0FBUzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZmlsdGVyTWF5YmUsIFN1YnNjcmlwdGlvbk9iamVjdCwgYmVnaW5Mb2FkaW5nLCBMb2FkaW5nU3RhdGUsIExvYWRpbmdTdGF0ZUNvbnRleHRJbnN0YW5jZSB9IGZyb20gJ0BkZXJlZWtiL3J4anMnO1xuaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBPbkRlc3Ryb3ksIE9uSW5pdCwgVHlwZSwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Db250cm9sLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZpZWxkVHlwZSwgRm9ybWx5RmllbGRDb25maWcgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgZmlyc3QsIG1hcCwgbWVyZ2VNYXAsIHNoYXJlUmVwbGF5LCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgQmVoYXZpb3JTdWJqZWN0LCBvZiwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgU2VhcmNoYWJsZVZhbHVlRmllbGRIYXNoRm4sIFNlYXJjaGFibGVWYWx1ZUZpZWxkU3RyaW5nU2VhcmNoRm4sXG4gIFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheUZuLCBTZWFyY2hhYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZSwgU2VhcmNoYWJsZVZhbHVlRmllbGRWYWx1ZSwgU2VhcmNoYWJsZUZpZWxkRGlzcGxheUNvbXBvbmVudCwgU2VhcmNoYWJsZVZhbHVlRmllbGRBbmNob3JGblxufSBmcm9tICcuL3NlYXJjaGFibGUnO1xuaW1wb3J0IHsgRGJ4RGVmYXVsdFNlYXJjaGFibGVBbmNob3JGaWVsZERpc3BsYXlDb21wb25lbnQsIERieERlZmF1bHRTZWFyY2hhYmxlRmllbGREaXNwbGF5Q29tcG9uZW50IH0gZnJvbSAnLi9zZWFyY2hhYmxlLmZpZWxkLmF1dG9jb21wbGV0ZS5pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNYXliZSwgY29udmVydE1heWJlVG9BcnJheSwgZmluZFVuaXF1ZSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgY2FtZWxDYXNlIH0gZnJvbSAnY2hhbmdlLWNhc2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0cmluZ1ZhbHVlRmllbGRzRmllbGRDb25maWcge1xuICAvKipcbiAgICogQ3VzdG9tIGlucHV0IHZhbGlkYXRvcnMuXG4gICAqL1xuICB0ZXh0SW5wdXRWYWxpZGF0b3I/OiBWYWxpZGF0b3JGbiB8IFZhbGlkYXRvckZuW107XG4gIC8qKlxuICAgKiBPcHRpb25hbCBkZXNjcmlwdGlvbi9oaW50IHRvIGRpc3BsYXkuXG4gICAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdHJpbmdWYWx1ZUZpZWxkc0Zvcm1seUZpZWxkQ29uZmlnIGV4dGVuZHMgU3RyaW5nVmFsdWVGaWVsZHNGaWVsZENvbmZpZywgRm9ybWx5RmllbGRDb25maWcgeyB9XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VhcmNoYWJsZVZhbHVlRmllbGRzRmllbGRDb25maWc8VD4gZXh0ZW5kcyBTdHJpbmdWYWx1ZUZpZWxkc0ZpZWxkQ29uZmlnIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIGFsbG93IHN0cmluZyB2YWx1ZXMgdG8gYmUgdXNlZCBkaXJlY3RseSwgb3IgaWYgdmFsdWVzIGNhbiBvbmx5IGJlIGNob3NlbiBmcm9tIHNlYXJjaGluZy5cbiAgICovXG4gIGFsbG93U3RyaW5nVmFsdWVzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIGNvbnZlcnNpb24gZnVuY3Rpb24uIElmIHByb3ZpZGVkLCBhbGxvd1N0cmluZ1ZhbHVlcyBpcyBjb25zaWRlcmVkIHRydWUuXG4gICAqL1xuICBjb252ZXJ0U3RyaW5nVmFsdWU/OiAodGV4dDogc3RyaW5nKSA9PiBUO1xuICAvKipcbiAgICogVXNlZCBmb3IgaGFzaGluZyBkaXNwbGF5IHZhbHVlcyBhbmQgb21pdHRpbmcgcmVwZWF0IHZhbHVlcy5cbiAgICpcbiAgICogSWYgaGFzaEZvclZhbHVlIGlzIG5vdCBwcm92aWRlZCwgdGhlIHZhbHVlJ3MgdmFsdWUgd2lsbCBiZSB1c2VkIGFzIGlzLlxuICAgKi9cbiAgaGFzaEZvclZhbHVlPzogU2VhcmNoYWJsZVZhbHVlRmllbGRIYXNoRm48VD47XG4gIC8qKlxuICAgKiBQZXJmb3JtcyBhIHNlYXJjaC5cbiAgICovXG4gIHNlYXJjaDogU2VhcmNoYWJsZVZhbHVlRmllbGRTdHJpbmdTZWFyY2hGbjxUPjtcbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIGFsbG93IHNlYXJjaGVzIG9uIGVtcHR5IHRleHQuIElzIGZhbHNlIGJ5IGRlZmF1bHQuXG4gICAqL1xuICBzZWFyY2hPbkVtcHR5VGV4dD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBDdXN0b20gY29tcG9uZW50IGNsYXNzIHRvIHVzZSBieSBkZWZhdWx0LlxuICAgKi9cbiAgY29tcG9uZW50Q2xhc3M/OiBUeXBlPFNlYXJjaGFibGVGaWVsZERpc3BsYXlDb21wb25lbnQ8VD4+O1xuICAvKipcbiAgICogVXNlZCBmb3IgYnVpbGRpbmcgYSBkaXNwbGF5IHZhbHVlIGdpdmVuIHRoZSBpbnB1dC5cbiAgICovXG4gIGRpc3BsYXlGb3JWYWx1ZTogU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5Rm48VD47XG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byB1c2UgdGhlIGFuY2hvciBmaWVsZCBvbiB2YWx1ZSBlbGVtZW50cy5cbiAgICpcbiAgICogVGhpcyBoYXMgbm8gZGVmYXVsdCBlZmZlY3QgaWYgYSBjb21wb25lbnQgY2xhc3MgaXMgcHJvdmlkZWQuXG4gICAqL1xuICB1c2VBbmNob3I/OiBib29sZWFuO1xuICAvKipcbiAgICogVXNlZCBmb3IgcmV0cmlldmluZyBhbiBhbmNob3IgdmFsdWUgZm9yIHZhbHVlcyB0aGF0IGhhdmUgbm8gYW5jaG9yIHZhbHVlIHNldC5cbiAgICpcbiAgICogT25seSB1c2VkIHdoZW4gdXNlQW5jaG9yIGlzIHRydWUuXG4gICAqL1xuICBhbmNob3JGb3JWYWx1ZT86IFNlYXJjaGFibGVWYWx1ZUZpZWxkQW5jaG9yRm48VD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VhcmNoYWJsZVZhbHVlRmllbGRzRm9ybWx5RmllbGRDb25maWc8VD4gZXh0ZW5kcyBTZWFyY2hhYmxlVmFsdWVGaWVsZHNGaWVsZENvbmZpZzxUPiwgRm9ybWx5RmllbGRDb25maWcgeyB9XG5cbi8qKlxuICogQWJzdHJhY3Qgc2VhcmNoYWJsZSBmaWVsZCB0aGF0IHByb3ZpZGVzIGEgZmVhdHVyZSBmb3Igc2VhcmNoaW5nIGZvciB2YWx1ZXMsIGFuZCBmb3IgZGlzcGxheWluZyB2YWx1ZXMgdXNpbmcgT2JzZXJ2YWJsZXMuXG4gKlxuICogRGlzcGxheSB2YWx1ZXMgYXJlIGNhY2hlZCBmb3IgcGVyZm9ybWFuY2UuXG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0RGJ4U2VhcmNoYWJsZVZhbHVlRmllbGREaXJlY3RpdmU8VCwgQyBleHRlbmRzIFNlYXJjaGFibGVWYWx1ZUZpZWxkc0Zvcm1seUZpZWxkQ29uZmlnPFQ+PlxuICBleHRlbmRzIEZpZWxkVHlwZTxDPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gc2V0L2dldCB2YWx1ZXMgYXMgYW4gYXJyYXkuXG4gICAqL1xuICBtdWx0aVNlbGVjdCA9IHRydWU7XG5cbiAgZGVmYXVsdENvbXBvbmVudENsYXNzPzogVHlwZTxTZWFyY2hhYmxlRmllbGREaXNwbGF5Q29tcG9uZW50PFQ+PjtcblxuICBAVmlld0NoaWxkKCd0ZXh0SW5wdXQnKVxuICB0ZXh0SW5wdXQhOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gIHJlYWRvbmx5IGlucHV0Q3RybCA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XG5cbiAgcHJpdmF0ZSBfZm9ybUNvbnRyb2xPYnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1heWJlPEFic3RyYWN0Q29udHJvbD4+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGZvcm1Db250cm9sJCA9IHRoaXMuX2Zvcm1Db250cm9sT2JzLnBpcGUoZmlsdGVyTWF5YmUoKSk7XG5cbiAgcHJpdmF0ZSBfZGlzcGxheUhhc2hNYXAgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1hcDxhbnksIFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQ+Pj4obmV3IE1hcCgpKTtcblxuICByZWFkb25seSBpbnB1dFZhbHVlJDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gdGhpcy5pbnB1dEN0cmwudmFsdWVDaGFuZ2VzLnBpcGUoKTtcbiAgcmVhZG9ubHkgaW5wdXRWYWx1ZVN0cmluZyQ6IE9ic2VydmFibGU8c3RyaW5nPiA9IHRoaXMuaW5wdXRWYWx1ZSQucGlwZShcbiAgICBkZWJvdW5jZVRpbWUoMjAwKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICk7XG5cbiAgcmVhZG9ubHkgc2VhcmNoUmVzdWx0c1N0YXRlJCA9IHRoaXMuaW5wdXRWYWx1ZVN0cmluZyQucGlwZShcbiAgICBmaWx0ZXIoKHRleHQpID0+IEJvb2xlYW4odGV4dCB8fCB0aGlzLnNlYXJjaE9uRW1wdHlUZXh0KSAmJiBCb29sZWFuKHRoaXMuc2VhcmNoKSksXG4gICAgLy8gVE9ETzogQ29uc2lkZXIgY2FjaGluZyBzZWFyY2ggdGV4dC9yZXN1bHRzLlxuICAgIHN3aXRjaE1hcCgodGV4dCkgPT4gdGhpcy5zZWFyY2godGV4dCkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoeCkgPT4gdGhpcy5sb2FkRGlzcGxheVZhbHVlc0ZvckZpZWxkVmFsdWVzKHgpKSxcbiAgICAgIC8vIFJldHVybiBiZWdpbiBsb2FkaW5nIHRvIHNldHVwIHRoZSBsb2FkaW5nIHN0YXRlLlxuICAgICAgc3RhcnRXaXRoKGJlZ2luTG9hZGluZygpKVxuICAgICkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgc2luZ2xlVmFsdWVTeW5jU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuXG4gIHJlYWRvbmx5IHNlYXJjaENvbnRleHQgPSBuZXcgTG9hZGluZ1N0YXRlQ29udGV4dEluc3RhbmNlKHsgb2JzOiB0aGlzLnNlYXJjaFJlc3VsdHNTdGF0ZSQsIHNob3dMb2FkaW5nT25Ob1ZhbHVlOiB0cnVlIH0pO1xuXG4gIHJlYWRvbmx5IHNlYXJjaFJlc3VsdHMkOiBPYnNlcnZhYmxlPFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQ+W10+ID0gdGhpcy5zZWFyY2hSZXN1bHRzU3RhdGUkLnBpcGUoXG4gICAgbWFwKHggPT4geD8udmFsdWUgPz8gW10pXG4gICk7XG5cbiAgcmVhZG9ubHkgX2Zvcm1Db250cm9sVmFsdWU6IE9ic2VydmFibGU8VCB8IFRbXT4gPSB0aGlzLmZvcm1Db250cm9sJC5waXBlKFxuICAgIHN3aXRjaE1hcChjb250cm9sID0+IGNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICBzdGFydFdpdGgoY29udHJvbC52YWx1ZSksXG4gICAgICBzaGFyZVJlcGxheSgxKVxuICAgICkpXG4gICk7XG5cbiAgcmVhZG9ubHkgdmFsdWVzJDogT2JzZXJ2YWJsZTxUW10+ID0gdGhpcy5fZm9ybUNvbnRyb2xWYWx1ZS5waXBlKFxuICAgIG1hcChjb252ZXJ0TWF5YmVUb0FycmF5KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGRpc3BsYXlWYWx1ZXNTdGF0ZSQ6IE9ic2VydmFibGU8TG9hZGluZ1N0YXRlPFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQ+W10+PiA9IHRoaXMudmFsdWVzJC5waXBlKFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc3dpdGNoTWFwKCh2YWx1ZXM6IFRbXSkgPT4gdGhpcy5sb2FkRGlzcGxheVZhbHVlc0ZvclZhbHVlcyh2YWx1ZXMpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGRpc3BsYXlWYWx1ZXMkOiBPYnNlcnZhYmxlPFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQ+W10+ID0gdGhpcy5kaXNwbGF5VmFsdWVzU3RhdGUkLnBpcGUoXG4gICAgbWFwKHggPT4geD8udmFsdWUgPz8gW10pXG4gICk7XG5cbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5uYW1lID8/IChjYW1lbENhc2UodGhpcy5sYWJlbCA/PyB0aGlzLmtleSBhcyBzdHJpbmcpKTtcbiAgfVxuXG4gIGdldCBsYWJlbCgpOiBNYXliZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC50ZW1wbGF0ZU9wdGlvbnM/LmxhYmVsO1xuICB9XG5cbiAgZ2V0IHJlYWRvbmx5KCk6IE1heWJlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC50ZW1wbGF0ZU9wdGlvbnM/LnJlYWRvbmx5O1xuICB9XG5cbiAgZ2V0IHNlYXJjaE9uRW1wdHlUZXh0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLnNlYXJjaE9uRW1wdHlUZXh0ID8/IGZhbHNlO1xuICB9XG5cbiAgZ2V0IHJlcXVpcmVkKCk6IE1heWJlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC50ZW1wbGF0ZU9wdGlvbnM/LnJlcXVpcmVkO1xuICB9XG5cbiAgZ2V0IGF1dG9jb21wbGV0ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAodGhpcy5maWVsZC50ZW1wbGF0ZU9wdGlvbnM/LmF0dHJpYnV0ZXM/LlsnYXV0b2NvbXBsZXRlJ10gYXMgYW55KSA/PyB0aGlzLmtleSBhcyBzdHJpbmc7XG4gIH1cblxuICBnZXQgcGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC50ZW1wbGF0ZU9wdGlvbnM/LnBsYWNlaG9sZGVyID8/ICcnO1xuICB9XG5cbiAgZ2V0IGRlc2NyaXB0aW9uKCk6IE1heWJlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLmRlc2NyaXB0aW9uID8/IHRoaXMuZmllbGQudGVtcGxhdGVPcHRpb25zPy5kZXNjcmlwdGlvbjtcbiAgfVxuXG4gIGdldCBoYXNoRm9yVmFsdWUoKTogU2VhcmNoYWJsZVZhbHVlRmllbGRIYXNoRm48VD4ge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLmhhc2hGb3JWYWx1ZSA/PyAoKHgpID0+IHggYXMgYW55KTtcbiAgfVxuXG4gIGdldCBkaXNwbGF5Rm9yVmFsdWUoKTogU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5Rm48VD4ge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLmRpc3BsYXlGb3JWYWx1ZTtcbiAgfVxuXG4gIGdldCB1c2VBbmNob3IoKTogTWF5YmU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLnVzZUFuY2hvcjtcbiAgfVxuXG4gIGdldCBhbmNob3JGb3JWYWx1ZSgpOiBNYXliZTxTZWFyY2hhYmxlVmFsdWVGaWVsZEFuY2hvckZuPFQ+PiB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQuYW5jaG9yRm9yVmFsdWU7XG4gIH1cblxuICBnZXQgY29tcG9uZW50Q2xhc3MoKTogTWF5YmU8VHlwZTxTZWFyY2hhYmxlRmllbGREaXNwbGF5Q29tcG9uZW50PFQ+Pj4ge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLmNvbXBvbmVudENsYXNzO1xuICB9XG5cbiAgZ2V0IHNlYXJjaCgpOiBTZWFyY2hhYmxlVmFsdWVGaWVsZFN0cmluZ1NlYXJjaEZuPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5zZWFyY2g7XG4gIH1cblxuICBnZXQgdmFsdWVzKCk6IFRbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2dldFZhbHVlT25Gb3JtQ29udHJvbCh0aGlzLmZvcm1Db250cm9sLnZhbHVlKSA/PyBbXTtcbiAgfVxuXG4gIGdldCBhbGxvd1N0cmluZ1ZhbHVlcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5hbGxvd1N0cmluZ1ZhbHVlcyA/PyBCb29sZWFuKHRoaXMuY29udmVydFN0cmluZ1ZhbHVlKTtcbiAgfVxuXG4gIGdldCBjb252ZXJ0U3RyaW5nVmFsdWUoKTogTWF5YmU8KHRleHQ6IHN0cmluZykgPT4gVD4ge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLmNvbnZlcnRTdHJpbmdWYWx1ZTtcbiAgfVxuXG4gIGxvYWREaXNwbGF5VmFsdWVzRm9yVmFsdWVzKHZhbHVlczogVFtdKTogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8U2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWU8VD5bXT4+IHtcbiAgICByZXR1cm4gdGhpcy5sb2FkRGlzcGxheVZhbHVlc0ZvckZpZWxkVmFsdWVzKHZhbHVlcy5tYXAoKHZhbHVlKSA9PiAoeyB2YWx1ZSB9KSkpO1xuICB9XG5cbiAgbG9hZERpc3BsYXlWYWx1ZXNGb3JGaWVsZFZhbHVlcyh2YWx1ZXM6IFNlYXJjaGFibGVWYWx1ZUZpZWxkVmFsdWU8VD5bXSk6IE9ic2VydmFibGU8TG9hZGluZ1N0YXRlPFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQ+W10+PiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RGlzcGxheVZhbHVlc0ZvckZpZWxkVmFsdWVzKHZhbHVlcykucGlwZShcbiAgICAgIG1hcCgoZGlzcGxheVZhbHVlczogU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWU8VD5bXSkgPT4gKHsgbG9hZGluZzogZmFsc2UsIG1vZGVsOiBkaXNwbGF5VmFsdWVzIH0pKSxcbiAgICAgIHN0YXJ0V2l0aCh7IGxvYWRpbmc6IHRydWUgfSksXG4gICAgICBzaGFyZVJlcGxheSgxKVxuICAgICk7XG4gIH1cblxuICBnZXREaXNwbGF5VmFsdWVzRm9yRmllbGRWYWx1ZXModmFsdWVzOiBTZWFyY2hhYmxlVmFsdWVGaWVsZFZhbHVlPFQ+W10pOiBPYnNlcnZhYmxlPFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQ+W10+IHtcbiAgICByZXR1cm4gdGhpcy5fZGlzcGxheUhhc2hNYXAucGlwZShcbiAgICAgIG1lcmdlTWFwKChkaXNwbGF5TWFwKSA9PiB7XG4gICAgICAgIGNvbnN0IG1hcHBpbmdSZXN1bHQgPSB2YWx1ZXNcbiAgICAgICAgICAubWFwKHggPT4gW3gsIHRoaXMuaGFzaEZvclZhbHVlKHgudmFsdWUpXSlcbiAgICAgICAgICAubWFwKChbeCwgaGFzaF0sIGkpID0+IFtpLCBoYXNoLCB4LCBkaXNwbGF5TWFwLmdldChoYXNoKV0gYXMgW251bWJlciwgYW55LCBTZWFyY2hhYmxlVmFsdWVGaWVsZFZhbHVlPFQ+LCBTZWFyY2hhYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZTxUPl0pO1xuXG4gICAgICAgIGNvbnN0IGhhc0Rpc3BsYXkgPSBtYXBwaW5nUmVzdWx0LmZpbHRlcih4ID0+IEJvb2xlYW4oeFszXSkpO1xuICAgICAgICBjb25zdCBuZWVkc0Rpc3BsYXkgPSBtYXBwaW5nUmVzdWx0LmZpbHRlcih4ID0+ICF4WzNdKTtcblxuICAgICAgICBpZiAobmVlZHNEaXNwbGF5Lmxlbmd0aCA+IDApIHtcblxuICAgICAgICAgIC8vIEdvIGdldCB0aGUgZGlzcGxheSB2YWx1ZS5cbiAgICAgICAgICBjb25zdCBkaXNwbGF5VmFsdWVzT2JzID0gdGhpcy5kaXNwbGF5Rm9yVmFsdWUobmVlZHNEaXNwbGF5Lm1hcCh4ID0+IHhbMl0pKTtcbiAgICAgICAgICBjb25zdCBjb21wb25lbnRDbGFzcyA9IHRoaXMuY29tcG9uZW50Q2xhc3MgPz8gdGhpcy5kZWZhdWx0Q29tcG9uZW50Q2xhc3M7XG4gICAgICAgICAgY29uc3QgYW5jaG9yRm9yVmFsdWUgPSB0aGlzLnVzZUFuY2hvciAmJiB0aGlzLmFuY2hvckZvclZhbHVlO1xuXG4gICAgICAgICAgcmV0dXJuIGRpc3BsYXlWYWx1ZXNPYnMucGlwZShcbiAgICAgICAgICAgIGZpcnN0KCksXG4gICAgICAgICAgICBtYXAoKGRpc3BsYXlSZXN1bHRzKSA9PiB7XG5cbiAgICAgICAgICAgICAgLy8gQXNzaWduIHRoZSBkZWZhdWx0IGNvbXBvbmVudCBjbGFzc2VzLlxuICAgICAgICAgICAgICBkaXNwbGF5UmVzdWx0cy5mb3JFYWNoKHggPT4ge1xuICAgICAgICAgICAgICAgIGlmICgheC5jb21wb25lbnRDbGFzcykge1xuICAgICAgICAgICAgICAgICAgeC5jb21wb25lbnRDbGFzcyA9IGNvbXBvbmVudENsYXNzO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICgheC5hbmNob3IgJiYgYW5jaG9yRm9yVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgIHguYW5jaG9yID0gYW5jaG9yRm9yVmFsdWUoeCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAvLyBDcmVhdGUgYSBtYXAgdG8gcmUtam9pbiB2YWx1ZXMgbGF0ZXIuXG4gICAgICAgICAgICAgIGNvbnN0IGRpc3BsYXlSZXN1bHRzTWFwcGluZzogW1NlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQ+LCBhbnldW10gPSBkaXNwbGF5UmVzdWx0cy5tYXAoeCA9PiBbeCwgdGhpcy5oYXNoRm9yVmFsdWUoeC52YWx1ZSldKTtcbiAgICAgICAgICAgICAgY29uc3QgdmFsdWVJbmRleEhhc2hNYXAgPSBuZXcgTWFwKGRpc3BsYXlSZXN1bHRzTWFwcGluZy5tYXAoKFt4LCBoYXNoXSkgPT4gW2hhc2gsIHhdKSk7XG5cbiAgICAgICAgICAgICAgLy8gVXBkYXRlIGRpc3BsYXlNYXAuIE5vIG5lZWQgdG8gcHVzaCBhbiB1cGRhdGUgbm90aWZpY2F0aW9uLlxuICAgICAgICAgICAgICBkaXNwbGF5UmVzdWx0c01hcHBpbmcuZm9yRWFjaCgoW3gsIGhhc2hdKSA9PiBkaXNwbGF5TWFwLnNldChoYXNoLCB4KSk7XG5cbiAgICAgICAgICAgICAgLy8gWmlwIHZhbHVlcyBiYWNrIHRvZ2V0aGVyLlxuICAgICAgICAgICAgICBjb25zdCBuZXdEaXNwbGF5VmFsdWVzID0gbWFwcGluZ1Jlc3VsdC5tYXAoeCA9PiB4WzNdID8/IHZhbHVlSW5kZXhIYXNoTWFwLmdldCh4WzFdKSk7XG5cbiAgICAgICAgICAgICAgLy8gUmV0dXJuIGRpc3BsYXkgdmFsdWVzLlxuICAgICAgICAgICAgICByZXR1cm4gbmV3RGlzcGxheVZhbHVlcztcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgIC8vIElmIGFsbCBkaXNwbGF5IHZhbHVlcyBhcmUgaGFzaGVkIHJldHVybiB0aGF0LlxuICAgICAgICAgIHJldHVybiBvZihoYXNEaXNwbGF5Lm1hcCh4ID0+IHhbM10pKSBhcyBPYnNlcnZhYmxlPFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQ+W10+O1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9mb3JtQ29udHJvbE9icy5uZXh0KHRoaXMuZm9ybUNvbnRyb2wpO1xuXG4gICAgaWYgKHRoaXMuZmllbGQudGV4dElucHV0VmFsaWRhdG9yKSB7XG4gICAgICB0aGlzLmlucHV0Q3RybC5zZXRWYWxpZGF0b3JzKHRoaXMuZmllbGQudGV4dElucHV0VmFsaWRhdG9yKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuZGVmYXVsdENvbXBvbmVudENsYXNzKSB7XG4gICAgICBpZiAodGhpcy51c2VBbmNob3IpIHtcbiAgICAgICAgdGhpcy5kZWZhdWx0Q29tcG9uZW50Q2xhc3MgPSBEYnhEZWZhdWx0U2VhcmNoYWJsZUFuY2hvckZpZWxkRGlzcGxheUNvbXBvbmVudDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGVmYXVsdENvbXBvbmVudENsYXNzID0gRGJ4RGVmYXVsdFNlYXJjaGFibGVGaWVsZERpc3BsYXlDb21wb25lbnQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubXVsdGlTZWxlY3QgPT09IGZhbHNlKSB7XG4gICAgICB0aGlzLnNpbmdsZVZhbHVlU3luY1N1YnNjcmlwdGlvbi5zdWJzY3JpcHRpb24gPSB0aGlzLmRpc3BsYXlWYWx1ZXMkLnN1YnNjcmliZSgoeCkgPT4ge1xuICAgICAgICBpZiAoeFswXSkge1xuICAgICAgICAgIHRoaXMuX3N5bmNTaW5nbGVWYWx1ZSh4WzBdKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzcGxheUhhc2hNYXAuY29tcGxldGUoKTtcbiAgICB0aGlzLl9mb3JtQ29udHJvbE9icy5jb21wbGV0ZSgpO1xuICAgIHRoaXMuc2VhcmNoQ29udGV4dC5kZXN0cm95KCk7XG4gIH1cblxuICAvKipcbiAgICogVXNlZCB0byBzeW5jIHRoZSBpbnB1dCBjb250cm9sIHdpdGggdGhlIHNlbGVjdGVkIHZhbHVlLlxuICAgKlxuICAgKiBPbmx5IHVzZWQgd2hlbiBtdWx0aVNlbGVjdCBpcyBmYWxzZS5cbiAgICovXG4gIHByb3RlY3RlZCBfc3luY1NpbmdsZVZhbHVlKHZhbHVlOiBTZWFyY2hhYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZTxUPik6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRDdHJsLnNldFZhbHVlKHZhbHVlLmxhYmVsKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfYWRkV2l0aFRleHRWYWx1ZSh0ZXh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZmllbGQuYWxsb3dTdHJpbmdWYWx1ZXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGV4dCkge1xuICAgICAgdGV4dCA9ICh0ZXh0IHx8ICcnKS50cmltKCk7XG4gICAgICB0aGlzLmlucHV0Q3RybC5zZXRWYWx1ZSh0ZXh0LnRyaW0oKSk7XG4gICAgfVxuXG4gICAgLy8gY29uc29sZS5sb2coJ0FkZDogJywgdGV4dCwgdGhpcy5pbnB1dEN0cmwudmFsaWQpO1xuXG4gICAgaWYgKCF0aGlzLmlucHV0Q3RybC52YWxpZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0ZXh0KSB7XG4gICAgICBjb25zdCB2YWx1ZSA9ICh0aGlzLmNvbnZlcnRTdHJpbmdWYWx1ZSkgPyB0aGlzLmNvbnZlcnRTdHJpbmdWYWx1ZSh0ZXh0KSA6IHRleHQgYXMgYW55IGFzIFQ7XG4gICAgICB0aGlzLmFkZFZhbHVlKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBhZGRXaXRoRGlzcGxheVZhbHVlKGRpc3BsYXlWYWx1ZTogU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWU8VD4pOiB2b2lkIHtcbiAgICB0aGlzLmFkZFZhbHVlKGRpc3BsYXlWYWx1ZS52YWx1ZSk7XG4gIH1cblxuICByZW1vdmVXaXRoRGlzcGxheVZhbHVlKGRpc3BsYXlWYWx1ZTogU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWU8VD4pOiB2b2lkIHtcbiAgICB0aGlzLnJlbW92ZVZhbHVlKGRpc3BsYXlWYWx1ZS52YWx1ZSk7XG4gIH1cblxuICBhZGRWYWx1ZSh2YWx1ZTogVCk6IHZvaWQge1xuICAgIHRoaXMudGV4dElucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICB0aGlzLmlucHV0Q3RybC5zZXRWYWx1ZShudWxsKTtcbiAgICB0aGlzLnNldFZhbHVlcyhbLi4udGhpcy52YWx1ZXMsIHZhbHVlXSk7XG4gIH1cblxuICByZW1vdmVWYWx1ZSh2YWx1ZTogVCk6IHZvaWQge1xuICAgIGxldCB2YWx1ZXM7XG5cbiAgICBpZiAodGhpcy5oYXNoRm9yVmFsdWUpIHtcbiAgICAgIGNvbnN0IGhhc2hUb0ZpbHRlciA9IHRoaXMuaGFzaEZvclZhbHVlKHZhbHVlKTtcbiAgICAgIHZhbHVlcyA9IHRoaXMudmFsdWVzLmZpbHRlcih4ID0+IHRoaXMuaGFzaEZvclZhbHVlKHgpICE9PSBoYXNoVG9GaWx0ZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZXMgPSB0aGlzLnZhbHVlcy5maWx0ZXIoeCA9PiB4ICE9PSB2YWx1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy5zZXRWYWx1ZXModmFsdWVzKTtcbiAgfVxuXG4gIHNldFZhbHVlcyh2YWx1ZXM6IFRbXSk6IHZvaWQge1xuICAgIC8vIFVzZSB0byBmaWx0ZXIgbm9uLXVuaXF1ZSB2YWx1ZXMuXG4gICAgaWYgKHRoaXMuaGFzaEZvclZhbHVlKSB7XG4gICAgICB2YWx1ZXMgPSBmaW5kVW5pcXVlKHZhbHVlcywgdGhpcy5oYXNoRm9yVmFsdWUpO1xuICAgIH1cblxuICAgIHRoaXMuX3NldFZhbHVlT25Gb3JtQ29udHJvbCh2YWx1ZXMpO1xuICB9XG5cbiAgLy8gTUFSSzogSW50ZXJuYWxcbiAgcHJvdGVjdGVkIF9nZXRWYWx1ZU9uRm9ybUNvbnRyb2wodmFsdWVPbkZvcm1Db250cm9sOiBhbnkpOiBUW10ge1xuICAgIGNvbnN0IHZhbHVlID0gKHZhbHVlT25Gb3JtQ29udHJvbCAhPSBudWxsKSA/IFtdLmNvbmNhdCh2YWx1ZU9uRm9ybUNvbnRyb2wpIDogW107ICAvLyBBbHdheXMgcmV0dXJuIGFuIGFycmF5LlxuICAgIHJldHVybiB2YWx1ZSBhcyBUW107XG4gIH1cblxuICBwcm90ZWN0ZWQgX3NldFZhbHVlT25Gb3JtQ29udHJvbCh2YWx1ZXM6IFRbXSk6IHZvaWQge1xuICAgIGNvbnN0IHZhbHVlID0gKHRoaXMubXVsdGlTZWxlY3QpID8gdmFsdWVzIDogdmFsdWVzPy5bMF07XG4gICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgdGhpcy5mb3JtQ29udHJvbC5tYXJrQXNEaXJ0eSgpO1xuICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICB9XG5cbn1cbiJdfQ==
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { arrayToMap, separateValues } from '@dereekb/util';
|
|
2
|
+
import { of } from 'rxjs';
|
|
3
|
+
import { map } from 'rxjs/operators';
|
|
4
|
+
import { formlyField } from '../../field';
|
|
5
|
+
export function makeMetaFilterSearchableFieldValueDisplayFn(loadMetaForValues, makeDisplayForValues) {
|
|
6
|
+
return (values) => {
|
|
7
|
+
const { included: loaded, excluded: needLoading } = separateValues(values, (x) => Boolean(x.meta));
|
|
8
|
+
let allValues;
|
|
9
|
+
if (needLoading.length > 0) {
|
|
10
|
+
const loadingResult = loadMetaForValues(needLoading);
|
|
11
|
+
allValues = loadingResult.pipe(map((result) => {
|
|
12
|
+
const resultMap = arrayToMap(result, (x) => x.value);
|
|
13
|
+
const mergedWithLoad = needLoading.map((x) => {
|
|
14
|
+
const id = x.value;
|
|
15
|
+
const loadedItem = resultMap.get(id);
|
|
16
|
+
const anchor = x.anchor ?? loadedItem?.anchor;
|
|
17
|
+
const meta = loadedItem?.meta;
|
|
18
|
+
return {
|
|
19
|
+
...x,
|
|
20
|
+
anchor,
|
|
21
|
+
meta
|
|
22
|
+
};
|
|
23
|
+
}).filter(x => !x.meta);
|
|
24
|
+
return mergedWithLoad;
|
|
25
|
+
}), map((result) => [...loaded, ...result]));
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
allValues = of(loaded);
|
|
29
|
+
}
|
|
30
|
+
return allValues.pipe(map((x) => makeDisplayForValues(x)));
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
export function searchableChipField(config) {
|
|
34
|
+
return formlyField({
|
|
35
|
+
type: 'searchablechipfield',
|
|
36
|
+
...config
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
export function searchableTextField(config) {
|
|
40
|
+
return formlyField({
|
|
41
|
+
type: 'searchabletextfield',
|
|
42
|
+
...config
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoYWJsZS5maWVsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL3NyYy9saWIvZm9ybWx5L2ZpZWxkL3NlbGVjdGlvbi9zZWFyY2hhYmxlL3NlYXJjaGFibGUuZmllbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFlLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUt2RCxNQUFNLFVBQVUsMkNBQTJDLENBQ3pELGlCQUF5RyxFQUN6RyxvQkFBdUc7SUFDdkcsT0FBTyxDQUFDLE1BQXNDLEVBQUUsRUFBRTtRQUNoRCxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLEdBQUcsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ25HLElBQUksU0FBcUQsQ0FBQztRQUUxRCxJQUFJLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzFCLE1BQU0sYUFBYSxHQUFHLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3JELFNBQVMsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUM1QixHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtnQkFDYixNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBWSxDQUFDLENBQUM7Z0JBRTVELE1BQU0sY0FBYyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtvQkFDM0MsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQztvQkFDbkIsTUFBTSxVQUFVLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDckMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sSUFBSSxVQUFVLEVBQUUsTUFBTSxDQUFDO29CQUM5QyxNQUFNLElBQUksR0FBRyxVQUFVLEVBQUUsSUFBSSxDQUFDO29CQUU5QixPQUFPO3dCQUNMLEdBQUcsQ0FBQzt3QkFDSixNQUFNO3dCQUNOLElBQUk7cUJBQ0wsQ0FBQztnQkFDSixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFFeEIsT0FBTyxjQUFjLENBQUM7WUFDeEIsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FDeEMsQ0FBQztTQUNIO2FBQU07WUFDTCxTQUFTLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3hCO1FBRUQsT0FBTyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdELENBQUMsQ0FBQztBQUNKLENBQUM7QUFLRCxNQUFNLFVBQVUsbUJBQW1CLENBQWlELE1BQVM7SUFDM0YsT0FBTyxXQUFXLENBQUk7UUFDcEIsSUFBSSxFQUFFLHFCQUFxQjtRQUMzQixHQUFHLE1BQU07S0FDVixDQUFDLENBQUM7QUFDTCxDQUFDO0FBS0QsTUFBTSxVQUFVLG1CQUFtQixDQUFpRCxNQUFTO0lBQzNGLE9BQU8sV0FBVyxDQUFJO1FBQ3BCLElBQUksRUFBRSxxQkFBcUI7UUFDM0IsR0FBRyxNQUFNO0tBQ1YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFycmF5VG9NYXAsIHNlcGFyYXRlVmFsdWVzIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRmllbGRDb25maWcsIGZvcm1seUZpZWxkIH0gZnJvbSAnLi4vLi4vZmllbGQnO1xuaW1wb3J0IHsgU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5Rm4sIFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlLCBTZWFyY2hhYmxlVmFsdWVGaWVsZFZhbHVlIH0gZnJvbSAnLi9zZWFyY2hhYmxlJztcbmltcG9ydCB7IFNlYXJjaGFibGVDaGlwVmFsdWVGaWVsZHNGaWVsZENvbmZpZywgU2VhcmNoYWJsZUNoaXBWYWx1ZUZpZWxkc0Zvcm1seUZpZWxkQ29uZmlnIH0gZnJvbSAnLi9zZWFyY2hhYmxlLmNoaXAuZmllbGQuY29tcG9uZW50JztcbmltcG9ydCB7IFNlYXJjaGFibGVUZXh0VmFsdWVGaWVsZHNGaWVsZENvbmZpZywgU2VhcmNoYWJsZVRleHRWYWx1ZUZpZWxkc0Zvcm1seUZpZWxkQ29uZmlnIH0gZnJvbSAnLi9zZWFyY2hhYmxlLnRleHQuZmllbGQuY29tcG9uZW50JztcblxuZXhwb3J0IGZ1bmN0aW9uIG1ha2VNZXRhRmlsdGVyU2VhcmNoYWJsZUZpZWxkVmFsdWVEaXNwbGF5Rm48VCA9IHN0cmluZyB8IG51bWJlcj4oXG4gIGxvYWRNZXRhRm9yVmFsdWVzOiAodmFsdWVzOiBTZWFyY2hhYmxlVmFsdWVGaWVsZFZhbHVlPFQ+W10pID0+IE9ic2VydmFibGU8U2VhcmNoYWJsZVZhbHVlRmllbGRWYWx1ZTxUPltdPixcbiAgbWFrZURpc3BsYXlGb3JWYWx1ZXM6ICh2YWx1ZXM6IFNlYXJjaGFibGVWYWx1ZUZpZWxkVmFsdWU8VD5bXSkgPT4gU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWU8VD5bXSk6IFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheUZuPFQ+IHtcbiAgcmV0dXJuICh2YWx1ZXM6IFNlYXJjaGFibGVWYWx1ZUZpZWxkVmFsdWU8VD5bXSkgPT4ge1xuICAgIGNvbnN0IHsgaW5jbHVkZWQ6IGxvYWRlZCwgZXhjbHVkZWQ6IG5lZWRMb2FkaW5nIH0gPSBzZXBhcmF0ZVZhbHVlcyh2YWx1ZXMsICh4KSA9PiBCb29sZWFuKHgubWV0YSkpO1xuICAgIGxldCBhbGxWYWx1ZXM6IE9ic2VydmFibGU8U2VhcmNoYWJsZVZhbHVlRmllbGRWYWx1ZTxUPltdPjtcblxuICAgIGlmIChuZWVkTG9hZGluZy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBsb2FkaW5nUmVzdWx0ID0gbG9hZE1ldGFGb3JWYWx1ZXMobmVlZExvYWRpbmcpO1xuICAgICAgYWxsVmFsdWVzID0gbG9hZGluZ1Jlc3VsdC5waXBlKFxuICAgICAgICBtYXAoKHJlc3VsdCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlc3VsdE1hcCA9IGFycmF5VG9NYXAocmVzdWx0LCAoeCkgPT4geC52YWx1ZSBhcyBhbnkpO1xuXG4gICAgICAgICAgY29uc3QgbWVyZ2VkV2l0aExvYWQgPSBuZWVkTG9hZGluZy5tYXAoKHgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGlkID0geC52YWx1ZTtcbiAgICAgICAgICAgIGNvbnN0IGxvYWRlZEl0ZW0gPSByZXN1bHRNYXAuZ2V0KGlkKTtcbiAgICAgICAgICAgIGNvbnN0IGFuY2hvciA9IHguYW5jaG9yID8/IGxvYWRlZEl0ZW0/LmFuY2hvcjtcbiAgICAgICAgICAgIGNvbnN0IG1ldGEgPSBsb2FkZWRJdGVtPy5tZXRhO1xuXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAuLi54LFxuICAgICAgICAgICAgICBhbmNob3IsXG4gICAgICAgICAgICAgIG1ldGFcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSkuZmlsdGVyKHggPT4gIXgubWV0YSk7XG5cbiAgICAgICAgICByZXR1cm4gbWVyZ2VkV2l0aExvYWQ7XG4gICAgICAgIH0pLFxuICAgICAgICBtYXAoKHJlc3VsdCkgPT4gWy4uLmxvYWRlZCwgLi4ucmVzdWx0XSlcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFsbFZhbHVlcyA9IG9mKGxvYWRlZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFsbFZhbHVlcy5waXBlKG1hcCgoeCkgPT4gbWFrZURpc3BsYXlGb3JWYWx1ZXMoeCkpKTtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZWFyY2hhYmxlQ2hpcEZpZWxkQ29uZmlnPFQgPSBhbnk+IGV4dGVuZHMgRmllbGRDb25maWcsIFNlYXJjaGFibGVDaGlwVmFsdWVGaWVsZHNGaWVsZENvbmZpZzxUPiB7IH1cbmV4cG9ydCBpbnRlcmZhY2UgU2VhcmNoYWJsZUNoaXBGaWVsZEZvcm1seUNvbmZpZzxUID0gYW55PiBleHRlbmRzIE9taXQ8U2VhcmNoYWJsZUNoaXBWYWx1ZUZpZWxkc0Zvcm1seUZpZWxkQ29uZmlnPFQ+LCAndHlwZSc+IHsgfVxuXG5leHBvcnQgZnVuY3Rpb24gc2VhcmNoYWJsZUNoaXBGaWVsZDxDIGV4dGVuZHMgU2VhcmNoYWJsZUNoaXBGaWVsZEZvcm1seUNvbmZpZzxhbnk+Pihjb25maWc6IEMpOiBDIHtcbiAgcmV0dXJuIGZvcm1seUZpZWxkPEM+KHtcbiAgICB0eXBlOiAnc2VhcmNoYWJsZWNoaXBmaWVsZCcsXG4gICAgLi4uY29uZmlnXG4gIH0pO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaGFibGVUZXh0RmllbGRDb25maWc8VCA9IGFueT4gZXh0ZW5kcyBGaWVsZENvbmZpZywgU2VhcmNoYWJsZVRleHRWYWx1ZUZpZWxkc0ZpZWxkQ29uZmlnPFQ+IHsgfVxuZXhwb3J0IGludGVyZmFjZSBTZWFyY2hhYmxlVGV4dEZpZWxkRm9ybWx5Q29uZmlnPFQgPSBhbnk+IGV4dGVuZHMgT21pdDxTZWFyY2hhYmxlVGV4dFZhbHVlRmllbGRzRm9ybWx5RmllbGRDb25maWc8VD4sICd0eXBlJz4geyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBzZWFyY2hhYmxlVGV4dEZpZWxkPEMgZXh0ZW5kcyBTZWFyY2hhYmxlVGV4dEZpZWxkRm9ybWx5Q29uZmlnPGFueT4+KGNvbmZpZzogQyk6IEMge1xuICByZXR1cm4gZm9ybWx5RmllbGQ8Qz4oe1xuICAgIHR5cGU6ICdzZWFyY2hhYmxldGV4dGZpZWxkJyxcbiAgICAuLi5jb25maWdcbiAgfSk7XG59XG4iXX0=
|
|
@@ -0,0 +1,107 @@
|
|
|
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 { DbxSearchableChipFieldComponent } from './searchable.chip.field.component';
|
|
12
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
13
|
+
import { DbxDefaultSearchableAnchorFieldDisplayComponent, DbxDefaultSearchableFieldDisplayComponent, DbxSearchableFieldAutocompleteItemComponent } from './searchable.field.autocomplete.item.component';
|
|
14
|
+
import { DbxSearchableTextFieldComponent } from './searchable.text.field.component';
|
|
15
|
+
import { DbxDatePipeModule, DbxInjectedComponentModule } from '@dereekb/dbx-core';
|
|
16
|
+
import { DbxAnchorModule, DbxTextModule, DbxLoadingModule, DbxButtonModule } from '@dereekb/dbx-web';
|
|
17
|
+
import * as i0 from "@angular/core";
|
|
18
|
+
import * as i1 from "@ngx-formly/core";
|
|
19
|
+
export class DbxFormFormlySearchableFieldModule {
|
|
20
|
+
}
|
|
21
|
+
DbxFormFormlySearchableFieldModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: DbxFormFormlySearchableFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
22
|
+
DbxFormFormlySearchableFieldModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: DbxFormFormlySearchableFieldModule, declarations: [DbxSearchableChipFieldComponent,
|
|
23
|
+
DbxSearchableTextFieldComponent,
|
|
24
|
+
DbxSearchableFieldAutocompleteItemComponent,
|
|
25
|
+
DbxDefaultSearchableFieldDisplayComponent,
|
|
26
|
+
DbxDefaultSearchableAnchorFieldDisplayComponent], imports: [CommonModule,
|
|
27
|
+
DbxTextModule,
|
|
28
|
+
DbxLoadingModule,
|
|
29
|
+
DbxButtonModule,
|
|
30
|
+
FormsModule,
|
|
31
|
+
MatButtonModule,
|
|
32
|
+
MatInputModule,
|
|
33
|
+
MatFormFieldModule,
|
|
34
|
+
ReactiveFormsModule,
|
|
35
|
+
MatAutocompleteModule,
|
|
36
|
+
MatListModule,
|
|
37
|
+
DbxDatePipeModule,
|
|
38
|
+
DbxAnchorModule,
|
|
39
|
+
MatChipsModule,
|
|
40
|
+
MatIconModule,
|
|
41
|
+
DbxInjectedComponentModule, i1.FormlyModule], exports: [DbxSearchableChipFieldComponent,
|
|
42
|
+
DbxSearchableTextFieldComponent] });
|
|
43
|
+
DbxFormFormlySearchableFieldModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: DbxFormFormlySearchableFieldModule, imports: [[
|
|
44
|
+
CommonModule,
|
|
45
|
+
DbxTextModule,
|
|
46
|
+
DbxLoadingModule,
|
|
47
|
+
DbxButtonModule,
|
|
48
|
+
FormsModule,
|
|
49
|
+
MatButtonModule,
|
|
50
|
+
MatInputModule,
|
|
51
|
+
MatFormFieldModule,
|
|
52
|
+
ReactiveFormsModule,
|
|
53
|
+
MatAutocompleteModule,
|
|
54
|
+
MatListModule,
|
|
55
|
+
DbxDatePipeModule,
|
|
56
|
+
DbxAnchorModule,
|
|
57
|
+
MatChipsModule,
|
|
58
|
+
MatIconModule,
|
|
59
|
+
DbxInjectedComponentModule,
|
|
60
|
+
FormlyModule.forChild({
|
|
61
|
+
types: [
|
|
62
|
+
{ name: 'searchablechipfield', component: DbxSearchableChipFieldComponent },
|
|
63
|
+
{ name: 'searchabletextfield', component: DbxSearchableTextFieldComponent }
|
|
64
|
+
]
|
|
65
|
+
})
|
|
66
|
+
]] });
|
|
67
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: DbxFormFormlySearchableFieldModule, decorators: [{
|
|
68
|
+
type: NgModule,
|
|
69
|
+
args: [{
|
|
70
|
+
imports: [
|
|
71
|
+
CommonModule,
|
|
72
|
+
DbxTextModule,
|
|
73
|
+
DbxLoadingModule,
|
|
74
|
+
DbxButtonModule,
|
|
75
|
+
FormsModule,
|
|
76
|
+
MatButtonModule,
|
|
77
|
+
MatInputModule,
|
|
78
|
+
MatFormFieldModule,
|
|
79
|
+
ReactiveFormsModule,
|
|
80
|
+
MatAutocompleteModule,
|
|
81
|
+
MatListModule,
|
|
82
|
+
DbxDatePipeModule,
|
|
83
|
+
DbxAnchorModule,
|
|
84
|
+
MatChipsModule,
|
|
85
|
+
MatIconModule,
|
|
86
|
+
DbxInjectedComponentModule,
|
|
87
|
+
FormlyModule.forChild({
|
|
88
|
+
types: [
|
|
89
|
+
{ name: 'searchablechipfield', component: DbxSearchableChipFieldComponent },
|
|
90
|
+
{ name: 'searchabletextfield', component: DbxSearchableTextFieldComponent }
|
|
91
|
+
]
|
|
92
|
+
})
|
|
93
|
+
],
|
|
94
|
+
declarations: [
|
|
95
|
+
DbxSearchableChipFieldComponent,
|
|
96
|
+
DbxSearchableTextFieldComponent,
|
|
97
|
+
DbxSearchableFieldAutocompleteItemComponent,
|
|
98
|
+
DbxDefaultSearchableFieldDisplayComponent,
|
|
99
|
+
DbxDefaultSearchableAnchorFieldDisplayComponent
|
|
100
|
+
],
|
|
101
|
+
exports: [
|
|
102
|
+
DbxSearchableChipFieldComponent,
|
|
103
|
+
DbxSearchableTextFieldComponent
|
|
104
|
+
]
|
|
105
|
+
}]
|
|
106
|
+
}] });
|
|
107
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoYWJsZS5maWVsZC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9zcmMvbGliL2Zvcm1seS9maWVsZC9zZWxlY3Rpb24vc2VhcmNoYWJsZS9zZWFyY2hhYmxlLmZpZWxkLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNwRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUNMLCtDQUErQyxFQUFFLHlDQUF5QyxFQUMxRiwyQ0FBMkMsRUFDNUMsTUFBTSxnREFBZ0QsQ0FBQztBQUN4RCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNwRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRixPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7O0FBdUNyRyxNQUFNLE9BQU8sa0NBQWtDOzsrSEFBbEMsa0NBQWtDO2dJQUFsQyxrQ0FBa0MsaUJBWDNDLCtCQUErQjtRQUMvQiwrQkFBK0I7UUFDL0IsMkNBQTJDO1FBQzNDLHlDQUF5QztRQUN6QywrQ0FBK0MsYUE1Qi9DLFlBQVk7UUFDWixhQUFhO1FBQ2IsZ0JBQWdCO1FBQ2hCLGVBQWU7UUFDZixXQUFXO1FBQ1gsZUFBZTtRQUNmLGNBQWM7UUFDZCxrQkFBa0I7UUFDbEIsbUJBQW1CO1FBQ25CLHFCQUFxQjtRQUNyQixhQUFhO1FBQ2IsaUJBQWlCO1FBQ2pCLGVBQWU7UUFDZixjQUFjO1FBQ2QsYUFBYTtRQUNiLDBCQUEwQiw4QkFnQjFCLCtCQUErQjtRQUMvQiwrQkFBK0I7Z0lBR3RCLGtDQUFrQyxZQXBDcEM7WUFDUCxZQUFZO1lBQ1osYUFBYTtZQUNiLGdCQUFnQjtZQUNoQixlQUFlO1lBQ2YsV0FBVztZQUNYLGVBQWU7WUFDZixjQUFjO1lBQ2Qsa0JBQWtCO1lBQ2xCLG1CQUFtQjtZQUNuQixxQkFBcUI7WUFDckIsYUFBYTtZQUNiLGlCQUFpQjtZQUNqQixlQUFlO1lBQ2YsY0FBYztZQUNkLGFBQWE7WUFDYiwwQkFBMEI7WUFDMUIsWUFBWSxDQUFDLFFBQVEsQ0FBQztnQkFDcEIsS0FBSyxFQUFFO29CQUNMLEVBQUUsSUFBSSxFQUFFLHFCQUFxQixFQUFFLFNBQVMsRUFBRSwrQkFBK0IsRUFBRTtvQkFDM0UsRUFBRSxJQUFJLEVBQUUscUJBQXFCLEVBQUUsU0FBUyxFQUFFLCtCQUErQixFQUFFO2lCQUM1RTthQUNGLENBQUM7U0FDSDsyRkFhVSxrQ0FBa0M7a0JBckM5QyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixlQUFlO3dCQUNmLFdBQVc7d0JBQ1gsZUFBZTt3QkFDZixjQUFjO3dCQUNkLGtCQUFrQjt3QkFDbEIsbUJBQW1CO3dCQUNuQixxQkFBcUI7d0JBQ3JCLGFBQWE7d0JBQ2IsaUJBQWlCO3dCQUNqQixlQUFlO3dCQUNmLGNBQWM7d0JBQ2QsYUFBYTt3QkFDYiwwQkFBMEI7d0JBQzFCLFlBQVksQ0FBQyxRQUFRLENBQUM7NEJBQ3BCLEtBQUssRUFBRTtnQ0FDTCxFQUFFLElBQUksRUFBRSxxQkFBcUIsRUFBRSxTQUFTLEVBQUUsK0JBQStCLEVBQUU7Z0NBQzNFLEVBQUUsSUFBSSxFQUFFLHFCQUFxQixFQUFFLFNBQVMsRUFBRSwrQkFBK0IsRUFBRTs2QkFDNUU7eUJBQ0YsQ0FBQztxQkFDSDtvQkFDRCxZQUFZLEVBQUU7d0JBQ1osK0JBQStCO3dCQUMvQiwrQkFBK0I7d0JBQy9CLDJDQUEyQzt3QkFDM0MseUNBQXlDO3dCQUN6QywrQ0FBK0M7cUJBQ2hEO29CQUNELE9BQU8sRUFBRTt3QkFDUCwrQkFBK0I7d0JBQy9CLCtCQUErQjtxQkFDaEM7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJztcbmltcG9ydCB7IE1hdExpc3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9saXN0JztcbmltcG9ydCB7IE1hdENoaXBzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hpcHMnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IEZvcm1seU1vZHVsZSB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHsgRGJ4U2VhcmNoYWJsZUNoaXBGaWVsZENvbXBvbmVudCB9IGZyb20gJy4vc2VhcmNoYWJsZS5jaGlwLmZpZWxkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHtcbiAgRGJ4RGVmYXVsdFNlYXJjaGFibGVBbmNob3JGaWVsZERpc3BsYXlDb21wb25lbnQsIERieERlZmF1bHRTZWFyY2hhYmxlRmllbGREaXNwbGF5Q29tcG9uZW50LFxuICBEYnhTZWFyY2hhYmxlRmllbGRBdXRvY29tcGxldGVJdGVtQ29tcG9uZW50XG59IGZyb20gJy4vc2VhcmNoYWJsZS5maWVsZC5hdXRvY29tcGxldGUuaXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGJ4U2VhcmNoYWJsZVRleHRGaWVsZENvbXBvbmVudCB9IGZyb20gJy4vc2VhcmNoYWJsZS50ZXh0LmZpZWxkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYnhEYXRlUGlwZU1vZHVsZSwgRGJ4SW5qZWN0ZWRDb21wb25lbnRNb2R1bGUgfSBmcm9tICdAZGVyZWVrYi9kYngtY29yZSc7XG5pbXBvcnQgeyBEYnhBbmNob3JNb2R1bGUsIERieFRleHRNb2R1bGUsIERieExvYWRpbmdNb2R1bGUsIERieEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BkZXJlZWtiL2RieC13ZWInO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIERieFRleHRNb2R1bGUsXG4gICAgRGJ4TG9hZGluZ01vZHVsZSxcbiAgICBEYnhCdXR0b25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE1hdElucHV0TW9kdWxlLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE1hdEF1dG9jb21wbGV0ZU1vZHVsZSxcbiAgICBNYXRMaXN0TW9kdWxlLFxuICAgIERieERhdGVQaXBlTW9kdWxlLFxuICAgIERieEFuY2hvck1vZHVsZSxcbiAgICBNYXRDaGlwc01vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIERieEluamVjdGVkQ29tcG9uZW50TW9kdWxlLFxuICAgIEZvcm1seU1vZHVsZS5mb3JDaGlsZCh7XG4gICAgICB0eXBlczogW1xuICAgICAgICB7IG5hbWU6ICdzZWFyY2hhYmxlY2hpcGZpZWxkJywgY29tcG9uZW50OiBEYnhTZWFyY2hhYmxlQ2hpcEZpZWxkQ29tcG9uZW50IH0sXG4gICAgICAgIHsgbmFtZTogJ3NlYXJjaGFibGV0ZXh0ZmllbGQnLCBjb21wb25lbnQ6IERieFNlYXJjaGFibGVUZXh0RmllbGRDb21wb25lbnQgfVxuICAgICAgXVxuICAgIH0pXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIERieFNlYXJjaGFibGVDaGlwRmllbGRDb21wb25lbnQsXG4gICAgRGJ4U2VhcmNoYWJsZVRleHRGaWVsZENvbXBvbmVudCxcbiAgICBEYnhTZWFyY2hhYmxlRmllbGRBdXRvY29tcGxldGVJdGVtQ29tcG9uZW50LFxuICAgIERieERlZmF1bHRTZWFyY2hhYmxlRmllbGREaXNwbGF5Q29tcG9uZW50LFxuICAgIERieERlZmF1bHRTZWFyY2hhYmxlQW5jaG9yRmllbGREaXNwbGF5Q29tcG9uZW50XG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBEYnhTZWFyY2hhYmxlQ2hpcEZpZWxkQ29tcG9uZW50LFxuICAgIERieFNlYXJjaGFibGVUZXh0RmllbGRDb21wb25lbnRcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBEYnhGb3JtRm9ybWx5U2VhcmNoYWJsZUZpZWxkTW9kdWxlIHsgfVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoYWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL3NyYy9saWIvZm9ybWx5L2ZpZWxkL3NlbGVjdGlvbi9zZWFyY2hhYmxlL3NlYXJjaGFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENsaWNrYWJsZUFuY2hvciB9IGZyb20gJ0BkZXJlZWtiL2RieC1jb3JlJztcbmltcG9ydCB7IFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNlbGVjdGlvbkRpc3BsYXlWYWx1ZSwgU2VsZWN0aW9uVmFsdWUsIFNlbGVjdGlvblZhbHVlSGFzaEZuIH0gZnJvbSAnLi4vc2VsZWN0aW9uJztcblxuZXhwb3J0IGludGVyZmFjZSBTZWFyY2hhYmxlRmllbGREaXNwbGF5Q29tcG9uZW50PFQ+IHtcbiAgZGlzcGxheVZhbHVlPzogU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWU8VD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VhcmNoYWJsZVZhbHVlRmllbGRWYWx1ZTxULCBNID0gYW55PiBleHRlbmRzIFNlbGVjdGlvblZhbHVlPFQsIE0+IHtcblxuICAvKipcbiAgICogT3B0aW9uYWwgYW5jaG9yIG1ldGFkYXRhIG9uIHRoZSBmaWVsZC5cbiAgICovXG4gIGFuY2hvcj86IENsaWNrYWJsZUFuY2hvcjtcbn1cblxuLyoqXG4gKiBEaXNwbGF5ZWQgdmFsdWUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWU8VCwgTSA9IGFueT4gZXh0ZW5kcyBTZWxlY3Rpb25EaXNwbGF5VmFsdWU8VCwgTT4sIFNlYXJjaGFibGVWYWx1ZUZpZWxkVmFsdWU8VCwgTT4ge1xuICBzdWJsYWJlbD86IHN0cmluZztcbiAgLyoqXG4gICAqIEN1c3RvbSBjb21wb25lbnQgY2xhc3MgdG8gdXNlLlxuICAgKi9cbiAgY29tcG9uZW50Q2xhc3M/OiBUeXBlPFNlYXJjaGFibGVGaWVsZERpc3BsYXlDb21wb25lbnQ8VD4+O1xufVxuXG4vKipcbiAqIFNlYXJjaGFibGVWYWx1ZUZpZWxkIGZ1bmN0aW9uIGZvciBzZWFyY2hpbmcgdmFsdWVzLlxuICovXG5leHBvcnQgdHlwZSBTZWFyY2hhYmxlVmFsdWVGaWVsZFN0cmluZ1NlYXJjaEZuPFQ+ID0gKHNlYXJjaDogc3RyaW5nKSA9PiBPYnNlcnZhYmxlPFNlYXJjaGFibGVWYWx1ZUZpZWxkVmFsdWU8VD5bXT47XG5cbi8qKlxuICogU2VhcmNoYWJsZVZhbHVlRmllbGQgZnVuY3Rpb24gdGhhdCBhbGxvd3MgdGhlIHZhbHVlcyBhIGNoYW5jZSB0byBnbyB0aHJvdWdoIGFub3RoZXIgb2JzZXJ2YWJsZSBmb3IgYW55IGNoYW5nZXMuXG4gKlxuICogQW4gZXhhbXBsZSB1c2FnZSBpcyBwYXNzaW5nIGFuIGVtYWlsIGFkZHJlc3MsIHRoZW4gZ2V0dGluZyBiYWNrIG1ldGFkYXRhIHRoYXQgY2FuIGJlIHVzZWQgdG8gc2hvdyB0aGUgdmFsdWVzLlxuICpcbiAqIFRoZSB2YWx1ZSBpdHNlbGYgc2hvdWxkIG5vdCBjaGFuZ2UuIEFsbCBvdGhlciBmaWVsZHMgb24gdGhlIHZhbHVlIG1heSBjaGFuZ2UsIGhvd2V2ZXIuXG4gKi9cbmV4cG9ydCB0eXBlIFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheUZuPFQ+ID0gKHZhbHVlczogU2VhcmNoYWJsZVZhbHVlRmllbGRWYWx1ZTxUPltdKSA9PiBPYnNlcnZhYmxlPFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQ+W10+O1xuXG4vKipcbiAqIFNlYXJjaGFibGVWYWx1ZUZpZWxkIGZ1bmN0aW9uIGZvciBzZXR0aW5nIGFuY2hvciB2YWx1ZXMgb24gYSBmaWVsZCB2YWx1ZS5cbiAqL1xuZXhwb3J0IHR5cGUgU2VhcmNoYWJsZVZhbHVlRmllbGRBbmNob3JGbjxUPiA9ICh2YWx1ZTogU2VhcmNoYWJsZVZhbHVlRmllbGRWYWx1ZTxUPikgPT4gQ2xpY2thYmxlQW5jaG9yO1xuXG5leHBvcnQgdHlwZSBTZWFyY2hhYmxlVmFsdWVGaWVsZEhhc2hGbjxUPiA9IFNlbGVjdGlvblZhbHVlSGFzaEZuPFQ+O1xuIl19
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { AbstractDbxSearchableValueFieldDirective } from './searchable.field.directive';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/material/autocomplete";
|
|
5
|
+
import * as i2 from "@angular/material/core";
|
|
6
|
+
import * as i3 from "./searchable.field.autocomplete.item.component";
|
|
7
|
+
import * as i4 from "@angular/material/form-field";
|
|
8
|
+
import * as i5 from "@dereekb/dbx-web";
|
|
9
|
+
import * as i6 from "@angular/common";
|
|
10
|
+
import * as i7 from "@angular/material/input";
|
|
11
|
+
import * as i8 from "@angular/forms";
|
|
12
|
+
/**
|
|
13
|
+
* Display component for selecting a single item/value.
|
|
14
|
+
*/
|
|
15
|
+
export class DbxSearchableTextFieldComponent extends AbstractDbxSearchableValueFieldDirective {
|
|
16
|
+
constructor() {
|
|
17
|
+
super(...arguments);
|
|
18
|
+
this.multiSelect = false;
|
|
19
|
+
}
|
|
20
|
+
selected(event) {
|
|
21
|
+
const e = event;
|
|
22
|
+
this.addWithDisplayValue(e.option.value);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
DbxSearchableTextFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: DbxSearchableTextFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
26
|
+
DbxSearchableTextFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.0", type: DbxSearchableTextFieldComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<div class=\"dbx-searchable-text-field\">\n <!-- Autocomplete -->\n <mat-autocomplete #auto (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 <input type=\"search\" [name]=\"name\" matInput #textInput [placeholder]=\"placeholder\" [formControl]=\"inputCtrl\" [matAutocomplete]=\"auto\"\n autocomplete=\"{{ autocomplete }}\">\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.DbxLoadingComponent, selector: "dbx-loading", inputs: ["show", "text", "mode", "color", "diameter", "linear", "context", "loading", "error"] }], directives: [{ type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.MatLabel, selector: "mat-label" }, { type: i7.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: i8.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: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i8.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "async": i6.AsyncPipe } });
|
|
27
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: DbxSearchableTextFieldComponent, decorators: [{
|
|
28
|
+
type: Component,
|
|
29
|
+
args: [{ template: "<div class=\"dbx-searchable-text-field\">\n <!-- Autocomplete -->\n <mat-autocomplete #auto (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 <input type=\"search\" [name]=\"name\" matInput #textInput [placeholder]=\"placeholder\" [formControl]=\"inputCtrl\" [matAutocomplete]=\"auto\"\n autocomplete=\"{{ autocomplete }}\">\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" }]
|
|
30
|
+
}] });
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoYWJsZS50ZXh0LmZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL3NyYy9saWIvZm9ybWx5L2ZpZWxkL3NlbGVjdGlvbi9zZWFyY2hhYmxlL3NlYXJjaGFibGUudGV4dC5maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9zcmMvbGliL2Zvcm1seS9maWVsZC9zZWxlY3Rpb24vc2VhcmNoYWJsZS9zZWFyY2hhYmxlLnRleHQuZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxQyxPQUFPLEVBQUUsd0NBQXdDLEVBQTRFLE1BQU0sOEJBQThCLENBQUM7Ozs7Ozs7Ozs7QUFLbEs7O0dBRUc7QUFJSCxNQUFNLE9BQU8sK0JBQW1DLFNBQVEsd0NBQTBGO0lBSGxKOztRQUtvQixnQkFBVyxHQUFHLEtBQUssQ0FBQztLQU92QztJQUxDLFFBQVEsQ0FBQyxLQUFVO1FBQ2pCLE1BQU0sQ0FBQyxHQUFpQyxLQUFLLENBQUM7UUFDOUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsQ0FBQzs7NEhBUFUsK0JBQStCO2dIQUEvQiwrQkFBK0IsMkVDYjVDLHlrQ0F1QkE7MkZEVmEsK0JBQStCO2tCQUgzQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJztcbmltcG9ydCB7IEFic3RyYWN0RGJ4U2VhcmNoYWJsZVZhbHVlRmllbGREaXJlY3RpdmUsIFNlYXJjaGFibGVWYWx1ZUZpZWxkc0ZpZWxkQ29uZmlnLCBTZWFyY2hhYmxlVmFsdWVGaWVsZHNGb3JtbHlGaWVsZENvbmZpZyB9IGZyb20gJy4vc2VhcmNoYWJsZS5maWVsZC5kaXJlY3RpdmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaGFibGVUZXh0VmFsdWVGaWVsZHNGaWVsZENvbmZpZzxUPiBleHRlbmRzIFNlYXJjaGFibGVWYWx1ZUZpZWxkc0ZpZWxkQ29uZmlnPFQ+IHsgfVxuZXhwb3J0IGludGVyZmFjZSBTZWFyY2hhYmxlVGV4dFZhbHVlRmllbGRzRm9ybWx5RmllbGRDb25maWc8VD4gZXh0ZW5kcyBTZWFyY2hhYmxlVGV4dFZhbHVlRmllbGRzRmllbGRDb25maWc8VD4sIFNlYXJjaGFibGVWYWx1ZUZpZWxkc0Zvcm1seUZpZWxkQ29uZmlnPFQ+IHsgfVxuXG4vKipcbiAqIERpc3BsYXkgY29tcG9uZW50IGZvciBzZWxlY3RpbmcgYSBzaW5nbGUgaXRlbS92YWx1ZS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnc2VhcmNoYWJsZS50ZXh0LmZpZWxkLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBEYnhTZWFyY2hhYmxlVGV4dEZpZWxkQ29tcG9uZW50PFQ+IGV4dGVuZHMgQWJzdHJhY3REYnhTZWFyY2hhYmxlVmFsdWVGaWVsZERpcmVjdGl2ZTxULCBTZWFyY2hhYmxlVGV4dFZhbHVlRmllbGRzRm9ybWx5RmllbGRDb25maWc8VD4+IHtcblxuICBvdmVycmlkZSByZWFkb25seSBtdWx0aVNlbGVjdCA9IGZhbHNlO1xuXG4gIHNlbGVjdGVkKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBlOiBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50ID0gZXZlbnQ7XG4gICAgdGhpcy5hZGRXaXRoRGlzcGxheVZhbHVlKGUub3B0aW9uLnZhbHVlKTtcbiAgfVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwiZGJ4LXNlYXJjaGFibGUtdGV4dC1maWVsZFwiPlxuICA8IS0tIEF1dG9jb21wbGV0ZSAtLT5cbiAgPG1hdC1hdXRvY29tcGxldGUgI2F1dG8gKG9wdGlvblNlbGVjdGVkKT1cInNlbGVjdGVkKCRldmVudClcIj5cbiAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgZGlzcGxheVZhbHVlIG9mIChzZWFyY2hSZXN1bHRzJCB8IGFzeW5jKVwiIFt2YWx1ZV09XCJkaXNwbGF5VmFsdWVcIj5cbiAgICAgIDxkYngtc2VhcmNoYWJsZS1maWVsZC1hdXRvY29tcGxldGUtaXRlbSBbZGlzcGxheVZhbHVlXT1cImRpc3BsYXlWYWx1ZVwiPlxuICAgICAgPC9kYngtc2VhcmNoYWJsZS1maWVsZC1hdXRvY29tcGxldGUtaXRlbT5cbiAgICA8L21hdC1vcHRpb24+XG4gIDwvbWF0LWF1dG9jb21wbGV0ZT5cbiAgPCEtLSBUZW1wbGF0ZSAtLT5cbiAgPG5nLXRlbXBsYXRlICNjb250ZW50PlxuICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImRieC1zZWFyY2hhYmxlLWZpZWxkLWZvcm0tZmllbGRcIj5cbiAgICAgIDxtYXQtbGFiZWw+e3sgbGFiZWwgfX08L21hdC1sYWJlbD5cbiAgICAgIDxpbnB1dCB0eXBlPVwic2VhcmNoXCIgW25hbWVdPVwibmFtZVwiIG1hdElucHV0ICN0ZXh0SW5wdXQgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCIgW2Zvcm1Db250cm9sXT1cImlucHV0Q3RybFwiIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiXG4gICAgICAgIGF1dG9jb21wbGV0ZT1cInt7IGF1dG9jb21wbGV0ZSB9fVwiPlxuICAgICAgPG1hdC1oaW50ICpuZ0lmPVwiZGVzY3JpcHRpb25cIj57eyBkZXNjcmlwdGlvbiB9fTwvbWF0LWhpbnQ+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICA8ZGl2IGNsYXNzPVwic2VhcmNoYWJsZS1maWVsZC1mb3JtLWxvYWRpbmdcIj5cbiAgICAgIDxkYngtbG9hZGluZyBbbGluZWFyXT1cInRydWVcIiBbY29udGV4dF09XCJzZWFyY2hDb250ZXh0XCI+PC9kYngtbG9hZGluZz5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPCEtLSBWaWV3IC0tPlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFwiPjwvbmctY29udGFpbmVyPlxuPC9kaXY+XG4iXX0=
|