@dereekb/dbx-form 12.7.0 → 13.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/fesm2022/dereekb-dbx-form-calendar.mjs +86 -86
- package/fesm2022/dereekb-dbx-form-calendar.mjs.map +1 -1
- package/fesm2022/dereekb-dbx-form-mapbox.mjs +28 -28
- package/fesm2022/dereekb-dbx-form-mapbox.mjs.map +1 -1
- package/fesm2022/dereekb-dbx-form.mjs +381 -542
- package/fesm2022/dereekb-dbx-form.mjs.map +1 -1
- package/lib/formly/field/value/phone/_phone.scss +1 -0
- package/lib/style/_theming.scss +196 -1
- package/package.json +26 -32
- package/types/dereekb-dbx-form-calendar.d.ts +679 -0
- package/types/dereekb-dbx-form-mapbox.d.ts +216 -0
- package/types/dereekb-dbx-form.d.ts +3050 -0
- package/calendar/index.d.ts +0 -1
- package/calendar/lib/calendar.module.d.ts +0 -19
- package/calendar/lib/calendar.schedule.selection.cell.component.d.ts +0 -16
- package/calendar/lib/calendar.schedule.selection.component.d.ts +0 -74
- package/calendar/lib/calendar.schedule.selection.d.ts +0 -29
- package/calendar/lib/calendar.schedule.selection.days.component.d.ts +0 -15
- package/calendar/lib/calendar.schedule.selection.days.form.component.d.ts +0 -10
- package/calendar/lib/calendar.schedule.selection.dialog.button.component.d.ts +0 -15
- package/calendar/lib/calendar.schedule.selection.dialog.component.d.ts +0 -24
- package/calendar/lib/calendar.schedule.selection.form.d.ts +0 -4
- package/calendar/lib/calendar.schedule.selection.popover.button.component.d.ts +0 -17
- package/calendar/lib/calendar.schedule.selection.popover.component.d.ts +0 -14
- package/calendar/lib/calendar.schedule.selection.popover.content.component.d.ts +0 -5
- package/calendar/lib/calendar.schedule.selection.range.component.d.ts +0 -52
- package/calendar/lib/calendar.schedule.selection.store.d.ts +0 -282
- package/calendar/lib/calendar.schedule.selection.store.provide.d.ts +0 -23
- package/calendar/lib/calendar.schedule.selection.toggle.button.component.d.ts +0 -18
- package/calendar/lib/field/index.d.ts +0 -1
- package/calendar/lib/field/schedule/calendar.schedule.field.component.d.ts +0 -102
- package/calendar/lib/field/schedule/calendar.schedule.field.d.ts +0 -6
- package/calendar/lib/field/schedule/calendar.schedule.module.d.ts +0 -8
- package/calendar/lib/field/schedule/index.d.ts +0 -3
- package/calendar/lib/index.d.ts +0 -17
- package/esm2022/calendar/dereekb-dbx-form-calendar.mjs +0 -5
- package/esm2022/calendar/index.mjs +0 -2
- package/esm2022/calendar/lib/calendar.module.mjs +0 -84
- package/esm2022/calendar/lib/calendar.schedule.selection.cell.component.mjs +0 -42
- package/esm2022/calendar/lib/calendar.schedule.selection.component.mjs +0 -156
- package/esm2022/calendar/lib/calendar.schedule.selection.days.component.mjs +0 -47
- package/esm2022/calendar/lib/calendar.schedule.selection.days.form.component.mjs +0 -22
- package/esm2022/calendar/lib/calendar.schedule.selection.dialog.button.component.mjs +0 -32
- package/esm2022/calendar/lib/calendar.schedule.selection.dialog.component.mjs +0 -59
- package/esm2022/calendar/lib/calendar.schedule.selection.form.mjs +0 -15
- package/esm2022/calendar/lib/calendar.schedule.selection.mjs +0 -31
- package/esm2022/calendar/lib/calendar.schedule.selection.popover.button.component.mjs +0 -50
- package/esm2022/calendar/lib/calendar.schedule.selection.popover.component.mjs +0 -41
- package/esm2022/calendar/lib/calendar.schedule.selection.popover.content.component.mjs +0 -34
- package/esm2022/calendar/lib/calendar.schedule.selection.range.component.mjs +0 -165
- package/esm2022/calendar/lib/calendar.schedule.selection.store.mjs +0 -785
- package/esm2022/calendar/lib/calendar.schedule.selection.store.provide.mjs +0 -48
- package/esm2022/calendar/lib/calendar.schedule.selection.toggle.button.component.mjs +0 -67
- package/esm2022/calendar/lib/field/index.mjs +0 -3
- package/esm2022/calendar/lib/field/schedule/calendar.schedule.field.component.mjs +0 -154
- package/esm2022/calendar/lib/field/schedule/calendar.schedule.field.mjs +0 -28
- package/esm2022/calendar/lib/field/schedule/calendar.schedule.module.mjs +0 -26
- package/esm2022/calendar/lib/field/schedule/index.mjs +0 -4
- package/esm2022/calendar/lib/index.mjs +0 -18
- package/esm2022/dereekb-dbx-form.mjs +0 -5
- package/esm2022/index.mjs +0 -2
- package/esm2022/lib/form/action/form.action.dialog.component.mjs +0 -75
- package/esm2022/lib/form/action/form.action.directive.mjs +0 -168
- package/esm2022/lib/form/action/form.action.module.mjs +0 -19
- package/esm2022/lib/form/action/index.mjs +0 -5
- package/esm2022/lib/form/action/transition/form.action.transition.module.mjs +0 -19
- package/esm2022/lib/form/action/transition/form.action.transition.safety.directive.mjs +0 -28
- package/esm2022/lib/form/action/transition/index.mjs +0 -3
- package/esm2022/lib/form/form.angular.util.mjs +0 -13
- package/esm2022/lib/form/form.mjs +0 -42
- package/esm2022/lib/form/form.module.mjs +0 -17
- package/esm2022/lib/form/index.mjs +0 -6
- package/esm2022/lib/form/io/form.change.directive.mjs +0 -38
- package/esm2022/lib/form/io/form.input.directive.mjs +0 -94
- package/esm2022/lib/form/io/form.io.module.mjs +0 -26
- package/esm2022/lib/form/io/form.loading.directive.mjs +0 -35
- package/esm2022/lib/form/io/index.mjs +0 -5
- package/esm2022/lib/form.module.mjs +0 -18
- package/esm2022/lib/form.providers.mjs +0 -32
- package/esm2022/lib/formly/config/index.mjs +0 -2
- package/esm2022/lib/formly/config/validation.mjs +0 -23
- package/esm2022/lib/formly/field/checklist/checklist.field.mjs +0 -102
- package/esm2022/lib/formly/field/checklist/checklist.item.field.component.mjs +0 -87
- package/esm2022/lib/formly/field/checklist/checklist.item.field.content.default.component.mjs +0 -50
- package/esm2022/lib/formly/field/checklist/checklist.item.field.mjs +0 -14
- package/esm2022/lib/formly/field/checklist/checklist.item.field.module.mjs +0 -30
- package/esm2022/lib/formly/field/checklist/checklist.item.mjs +0 -2
- package/esm2022/lib/formly/field/checklist/index.mjs +0 -7
- package/esm2022/lib/formly/field/component/component.field.component.mjs +0 -25
- package/esm2022/lib/formly/field/component/component.field.mjs +0 -7
- package/esm2022/lib/formly/field/component/component.field.module.mjs +0 -26
- package/esm2022/lib/formly/field/component/index.mjs +0 -4
- package/esm2022/lib/formly/field/field.mjs +0 -97
- package/esm2022/lib/formly/field/form.field.module.mjs +0 -22
- package/esm2022/lib/formly/field/index.mjs +0 -9
- package/esm2022/lib/formly/field/selection/index.mjs +0 -8
- package/esm2022/lib/formly/field/selection/list/index.mjs +0 -4
- package/esm2022/lib/formly/field/selection/list/list.field.component.mjs +0 -90
- package/esm2022/lib/formly/field/selection/list/list.field.mjs +0 -15
- package/esm2022/lib/formly/field/selection/list/list.field.module.mjs +0 -26
- package/esm2022/lib/formly/field/selection/pickable/index.mjs +0 -8
- package/esm2022/lib/formly/field/selection/pickable/pickable.chip.field.component.mjs +0 -37
- package/esm2022/lib/formly/field/selection/pickable/pickable.field.directive.mjs +0 -272
- package/esm2022/lib/formly/field/selection/pickable/pickable.field.mjs +0 -26
- package/esm2022/lib/formly/field/selection/pickable/pickable.field.module.mjs +0 -33
- package/esm2022/lib/formly/field/selection/pickable/pickable.list.field.component.mjs +0 -130
- package/esm2022/lib/formly/field/selection/pickable/pickable.mjs +0 -2
- package/esm2022/lib/formly/field/selection/pickable/pickable.util.mjs +0 -35
- package/esm2022/lib/formly/field/selection/searchable/index.mjs +0 -9
- package/esm2022/lib/formly/field/selection/searchable/searchable.chip.field.component.mjs +0 -70
- package/esm2022/lib/formly/field/selection/searchable/searchable.field.autocomplete.item.component.mjs +0 -90
- package/esm2022/lib/formly/field/selection/searchable/searchable.field.directive.mjs +0 -288
- package/esm2022/lib/formly/field/selection/searchable/searchable.field.mjs +0 -69
- package/esm2022/lib/formly/field/selection/searchable/searchable.field.module.mjs +0 -34
- package/esm2022/lib/formly/field/selection/searchable/searchable.mjs +0 -2
- package/esm2022/lib/formly/field/selection/searchable/searchable.text.field.component.mjs +0 -72
- package/esm2022/lib/formly/field/selection/searchable/text.chip.field.mjs +0 -15
- package/esm2022/lib/formly/field/selection/selection.field.mjs +0 -39
- package/esm2022/lib/formly/field/selection/selection.mjs +0 -2
- package/esm2022/lib/formly/field/selection/selection.module.mjs +0 -28
- package/esm2022/lib/formly/field/selection/sourceselect/index.mjs +0 -5
- package/esm2022/lib/formly/field/selection/sourceselect/sourceselect.field.component.mjs +0 -325
- package/esm2022/lib/formly/field/selection/sourceselect/sourceselect.field.mjs +0 -14
- package/esm2022/lib/formly/field/selection/sourceselect/sourceselect.field.module.mjs +0 -26
- package/esm2022/lib/formly/field/selection/sourceselect/sourceselect.mjs +0 -2
- package/esm2022/lib/formly/field/texteditor/index.mjs +0 -4
- package/esm2022/lib/formly/field/texteditor/texteditor.field.component.mjs +0 -97
- package/esm2022/lib/formly/field/texteditor/texteditor.field.mjs +0 -21
- package/esm2022/lib/formly/field/texteditor/texteditor.field.module.mjs +0 -26
- package/esm2022/lib/formly/field/value/array/array.field.component.mjs +0 -231
- package/esm2022/lib/formly/field/value/array/array.field.mjs +0 -28
- package/esm2022/lib/formly/field/value/array/array.field.module.mjs +0 -26
- package/esm2022/lib/formly/field/value/array/index.mjs +0 -4
- package/esm2022/lib/formly/field/value/boolean/boolean.field.mjs +0 -51
- package/esm2022/lib/formly/field/value/boolean/boolean.field.module.mjs +0 -19
- package/esm2022/lib/formly/field/value/boolean/index.mjs +0 -3
- package/esm2022/lib/formly/field/value/date/date.field.module.mjs +0 -36
- package/esm2022/lib/formly/field/value/date/date.value.mjs +0 -133
- package/esm2022/lib/formly/field/value/date/datetime.field.component.mjs +0 -737
- package/esm2022/lib/formly/field/value/date/datetime.field.mjs +0 -151
- package/esm2022/lib/formly/field/value/date/datetime.field.service.mjs +0 -23
- package/esm2022/lib/formly/field/value/date/datetime.mjs +0 -26
- package/esm2022/lib/formly/field/value/date/datetime.preset.mjs +0 -31
- package/esm2022/lib/formly/field/value/date/fixeddaterange.field.component.mjs +0 -521
- package/esm2022/lib/formly/field/value/date/index.mjs +0 -10
- package/esm2022/lib/formly/field/value/hidden.field.mjs +0 -8
- package/esm2022/lib/formly/field/value/index.mjs +0 -9
- package/esm2022/lib/formly/field/value/number/index.mjs +0 -3
- package/esm2022/lib/formly/field/value/number/number.field.mjs +0 -75
- package/esm2022/lib/formly/field/value/number/number.field.module.mjs +0 -18
- package/esm2022/lib/formly/field/value/phone/index.mjs +0 -4
- package/esm2022/lib/formly/field/value/phone/phone.field.component.mjs +0 -104
- package/esm2022/lib/formly/field/value/phone/phone.field.mjs +0 -66
- package/esm2022/lib/formly/field/value/phone/phone.field.module.mjs +0 -26
- package/esm2022/lib/formly/field/value/text/index.mjs +0 -5
- package/esm2022/lib/formly/field/value/text/text.additional.field.mjs +0 -114
- package/esm2022/lib/formly/field/value/text/text.address.field.mjs +0 -73
- package/esm2022/lib/formly/field/value/text/text.field.mjs +0 -47
- package/esm2022/lib/formly/field/value/text/text.field.module.mjs +0 -20
- package/esm2022/lib/formly/field/value/value.module.mjs +0 -31
- package/esm2022/lib/formly/field/wrapper/autotouch.wrapper.component.mjs +0 -32
- package/esm2022/lib/formly/field/wrapper/expand.wrapper.component.mjs +0 -34
- package/esm2022/lib/formly/field/wrapper/expand.wrapper.delegate.mjs +0 -58
- package/esm2022/lib/formly/field/wrapper/flex.wrapper.component.mjs +0 -38
- package/esm2022/lib/formly/field/wrapper/index.mjs +0 -13
- package/esm2022/lib/formly/field/wrapper/info.wrapper.component.mjs +0 -48
- package/esm2022/lib/formly/field/wrapper/section.wrapper.component.mjs +0 -31
- package/esm2022/lib/formly/field/wrapper/style.wrapper.component.mjs +0 -53
- package/esm2022/lib/formly/field/wrapper/subsection.wrapper.component.mjs +0 -30
- package/esm2022/lib/formly/field/wrapper/toggle.wrapper.component.mjs +0 -55
- package/esm2022/lib/formly/field/wrapper/working.wrapper.component.mjs +0 -45
- package/esm2022/lib/formly/field/wrapper/wrapper.key.mjs +0 -10
- package/esm2022/lib/formly/field/wrapper/wrapper.mjs +0 -77
- package/esm2022/lib/formly/field/wrapper/wrapper.module.mjs +0 -101
- package/esm2022/lib/formly/form/form.form.mjs +0 -17
- package/esm2022/lib/formly/form/form.form.module.mjs +0 -20
- package/esm2022/lib/formly/form/index.mjs +0 -4
- package/esm2022/lib/formly/form/search.form.component.mjs +0 -35
- package/esm2022/lib/formly/formly.component.template.mjs +0 -29
- package/esm2022/lib/formly/formly.context.directive.mjs +0 -23
- package/esm2022/lib/formly/formly.context.mjs +0 -102
- package/esm2022/lib/formly/formly.directive.mjs +0 -79
- package/esm2022/lib/formly/formly.form.component.mjs +0 -193
- package/esm2022/lib/formly/formly.module.mjs +0 -40
- package/esm2022/lib/formly/formly.providers.mjs +0 -8
- package/esm2022/lib/formly/index.mjs +0 -12
- package/esm2022/lib/formly/template/available.mjs +0 -18
- package/esm2022/lib/formly/template/available.module.mjs +0 -18
- package/esm2022/lib/formly/template/index.mjs +0 -8
- package/esm2022/lib/formly/template/login.mjs +0 -92
- package/esm2022/lib/formly/template/login.module.mjs +0 -17
- package/esm2022/lib/formly/template/timezone.mjs +0 -46
- package/esm2022/lib/formly/template/timezone.module.mjs +0 -17
- package/esm2022/lib/formly/template/website.mjs +0 -25
- package/esm2022/lib/index.mjs +0 -7
- package/esm2022/lib/layout/form.layout.module.mjs +0 -20
- package/esm2022/lib/layout/form.spacer.directive.mjs +0 -20
- package/esm2022/lib/layout/index.mjs +0 -3
- package/esm2022/lib/validator/available.mjs +0 -31
- package/esm2022/lib/validator/boolean.mjs +0 -12
- package/esm2022/lib/validator/email.mjs +0 -6
- package/esm2022/lib/validator/field.mjs +0 -31
- package/esm2022/lib/validator/index.mjs +0 -8
- package/esm2022/lib/validator/number.mjs +0 -53
- package/esm2022/lib/validator/phone.mjs +0 -61
- package/esm2022/lib/validator/website.mjs +0 -68
- package/esm2022/mapbox/dereekb-dbx-form-mapbox.mjs +0 -5
- package/esm2022/mapbox/index.mjs +0 -3
- package/esm2022/mapbox/lib/field/index.mjs +0 -3
- package/esm2022/mapbox/lib/field/latlng/index.mjs +0 -5
- package/esm2022/mapbox/lib/field/latlng/latlng.field.component.mjs +0 -262
- package/esm2022/mapbox/lib/field/latlng/latlng.field.marker.component.mjs +0 -34
- package/esm2022/mapbox/lib/field/latlng/latlng.field.mjs +0 -35
- package/esm2022/mapbox/lib/field/latlng/latlng.module.mjs +0 -26
- package/esm2022/mapbox/lib/field/zoom/index.mjs +0 -4
- package/esm2022/mapbox/lib/field/zoom/zoom.field.component.mjs +0 -146
- package/esm2022/mapbox/lib/field/zoom/zoom.field.mjs +0 -23
- package/esm2022/mapbox/lib/field/zoom/zoom.module.mjs +0 -26
- package/esm2022/mapbox/lib/mapbox.module.mjs +0 -16
- package/index.d.ts +0 -1
- package/lib/form/action/form.action.dialog.component.d.ts +0 -62
- package/lib/form/action/form.action.directive.d.ts +0 -65
- package/lib/form/action/form.action.module.d.ts +0 -10
- package/lib/form/action/index.d.ts +0 -4
- package/lib/form/action/transition/form.action.transition.module.d.ts +0 -10
- package/lib/form/action/transition/form.action.transition.safety.directive.d.ts +0 -17
- package/lib/form/action/transition/index.d.ts +0 -2
- package/lib/form/form.angular.util.d.ts +0 -15
- package/lib/form/form.d.ts +0 -92
- package/lib/form/form.module.d.ts +0 -9
- package/lib/form/index.d.ts +0 -5
- package/lib/form/io/form.change.directive.d.ts +0 -17
- package/lib/form/io/form.input.directive.d.ts +0 -27
- package/lib/form/io/form.io.module.d.ts +0 -16
- package/lib/form/io/form.loading.directive.d.ts +0 -21
- package/lib/form/io/index.d.ts +0 -4
- package/lib/form.module.d.ts +0 -10
- package/lib/form.providers.d.ts +0 -8
- package/lib/formly/config/index.d.ts +0 -1
- package/lib/formly/config/validation.d.ts +0 -23
- package/lib/formly/field/checklist/checklist.field.d.ts +0 -44
- package/lib/formly/field/checklist/checklist.item.d.ts +0 -36
- package/lib/formly/field/checklist/checklist.item.field.component.d.ts +0 -43
- package/lib/formly/field/checklist/checklist.item.field.content.default.component.d.ts +0 -10
- package/lib/formly/field/checklist/checklist.item.field.d.ts +0 -7
- package/lib/formly/field/checklist/checklist.item.field.module.d.ts +0 -10
- package/lib/formly/field/checklist/index.d.ts +0 -6
- package/lib/formly/field/component/component.field.component.d.ts +0 -12
- package/lib/formly/field/component/component.field.d.ts +0 -3
- package/lib/formly/field/component/component.field.module.d.ts +0 -8
- package/lib/formly/field/component/index.d.ts +0 -3
- package/lib/formly/field/field.d.ts +0 -99
- package/lib/formly/field/form.field.module.d.ts +0 -12
- package/lib/formly/field/index.d.ts +0 -8
- package/lib/formly/field/selection/index.d.ts +0 -7
- package/lib/formly/field/selection/list/index.d.ts +0 -3
- package/lib/formly/field/selection/list/list.field.component.d.ts +0 -55
- package/lib/formly/field/selection/list/list.field.d.ts +0 -8
- package/lib/formly/field/selection/list/list.field.module.d.ts +0 -8
- package/lib/formly/field/selection/pickable/index.d.ts +0 -7
- package/lib/formly/field/selection/pickable/pickable.chip.field.component.d.ts +0 -10
- package/lib/formly/field/selection/pickable/pickable.d.ts +0 -26
- package/lib/formly/field/selection/pickable/pickable.field.d.ts +0 -8
- package/lib/formly/field/selection/pickable/pickable.field.directive.d.ts +0 -169
- package/lib/formly/field/selection/pickable/pickable.field.module.d.ts +0 -9
- package/lib/formly/field/selection/pickable/pickable.list.field.component.d.ts +0 -39
- package/lib/formly/field/selection/pickable/pickable.util.d.ts +0 -14
- package/lib/formly/field/selection/searchable/index.d.ts +0 -8
- package/lib/formly/field/selection/searchable/searchable.chip.field.component.d.ts +0 -28
- package/lib/formly/field/selection/searchable/searchable.d.ts +0 -39
- package/lib/formly/field/selection/searchable/searchable.field.autocomplete.item.component.d.ts +0 -22
- package/lib/formly/field/selection/searchable/searchable.field.d.ts +0 -25
- package/lib/formly/field/selection/searchable/searchable.field.directive.d.ts +0 -163
- package/lib/formly/field/selection/searchable/searchable.field.module.d.ts +0 -10
- package/lib/formly/field/selection/searchable/searchable.text.field.component.d.ts +0 -24
- package/lib/formly/field/selection/searchable/text.chip.field.d.ts +0 -8
- package/lib/formly/field/selection/selection.d.ts +0 -26
- package/lib/formly/field/selection/selection.field.d.ts +0 -38
- package/lib/formly/field/selection/selection.module.d.ts +0 -18
- package/lib/formly/field/selection/sourceselect/index.d.ts +0 -4
- package/lib/formly/field/selection/sourceselect/sourceselect.d.ts +0 -116
- package/lib/formly/field/selection/sourceselect/sourceselect.field.component.d.ts +0 -95
- package/lib/formly/field/selection/sourceselect/sourceselect.field.d.ts +0 -7
- package/lib/formly/field/selection/sourceselect/sourceselect.field.module.d.ts +0 -8
- package/lib/formly/field/texteditor/index.d.ts +0 -3
- package/lib/formly/field/texteditor/texteditor.field.component.d.ts +0 -24
- package/lib/formly/field/texteditor/texteditor.field.d.ts +0 -6
- package/lib/formly/field/texteditor/texteditor.field.module.d.ts +0 -8
- package/lib/formly/field/value/array/array.field.component.d.ts +0 -89
- package/lib/formly/field/value/array/array.field.d.ts +0 -40
- package/lib/formly/field/value/array/array.field.module.d.ts +0 -8
- package/lib/formly/field/value/array/index.d.ts +0 -3
- package/lib/formly/field/value/boolean/boolean.field.d.ts +0 -8
- package/lib/formly/field/value/boolean/boolean.field.module.d.ts +0 -9
- package/lib/formly/field/value/boolean/index.d.ts +0 -2
- package/lib/formly/field/value/date/date.field.module.d.ts +0 -10
- package/lib/formly/field/value/date/date.value.d.ts +0 -32
- package/lib/formly/field/value/date/datetime.d.ts +0 -56
- package/lib/formly/field/value/date/datetime.field.component.d.ts +0 -307
- package/lib/formly/field/value/date/datetime.field.d.ts +0 -31
- package/lib/formly/field/value/date/datetime.field.service.d.ts +0 -12
- package/lib/formly/field/value/date/datetime.preset.d.ts +0 -2
- package/lib/formly/field/value/date/fixeddaterange.field.component.d.ts +0 -163
- package/lib/formly/field/value/date/index.d.ts +0 -9
- package/lib/formly/field/value/hidden.field.d.ts +0 -4
- package/lib/formly/field/value/index.d.ts +0 -8
- package/lib/formly/field/value/number/index.d.ts +0 -2
- package/lib/formly/field/value/number/number.field.d.ts +0 -46
- package/lib/formly/field/value/number/number.field.module.d.ts +0 -8
- package/lib/formly/field/value/phone/index.d.ts +0 -3
- package/lib/formly/field/value/phone/phone.field.component.d.ts +0 -35
- package/lib/formly/field/value/phone/phone.field.d.ts +0 -28
- package/lib/formly/field/value/phone/phone.field.module.d.ts +0 -8
- package/lib/formly/field/value/text/index.d.ts +0 -4
- package/lib/formly/field/value/text/text.additional.field.d.ts +0 -24
- package/lib/formly/field/value/text/text.address.field.d.ts +0 -43
- package/lib/formly/field/value/text/text.field.d.ts +0 -21
- package/lib/formly/field/value/text/text.field.module.d.ts +0 -10
- package/lib/formly/field/value/value.module.d.ts +0 -21
- package/lib/formly/field/wrapper/autotouch.wrapper.component.d.ts +0 -11
- package/lib/formly/field/wrapper/expand.wrapper.component.d.ts +0 -14
- package/lib/formly/field/wrapper/expand.wrapper.delegate.d.ts +0 -31
- package/lib/formly/field/wrapper/flex.wrapper.component.d.ts +0 -25
- package/lib/formly/field/wrapper/index.d.ts +0 -12
- package/lib/formly/field/wrapper/info.wrapper.component.d.ts +0 -11
- package/lib/formly/field/wrapper/section.wrapper.component.d.ts +0 -10
- package/lib/formly/field/wrapper/style.wrapper.component.d.ts +0 -27
- package/lib/formly/field/wrapper/subsection.wrapper.component.d.ts +0 -10
- package/lib/formly/field/wrapper/toggle.wrapper.component.d.ts +0 -17
- package/lib/formly/field/wrapper/working.wrapper.component.d.ts +0 -21
- package/lib/formly/field/wrapper/wrapper.d.ts +0 -35
- package/lib/formly/field/wrapper/wrapper.key.d.ts +0 -9
- package/lib/formly/field/wrapper/wrapper.module.d.ts +0 -17
- package/lib/formly/form/form.form.d.ts +0 -11
- package/lib/formly/form/form.form.module.d.ts +0 -10
- package/lib/formly/form/index.d.ts +0 -3
- package/lib/formly/form/search.form.component.d.ts +0 -12
- package/lib/formly/formly.component.template.d.ts +0 -19
- package/lib/formly/formly.context.d.ts +0 -57
- package/lib/formly/formly.context.directive.d.ts +0 -17
- package/lib/formly/formly.directive.d.ts +0 -54
- package/lib/formly/formly.form.component.d.ts +0 -51
- package/lib/formly/formly.module.d.ts +0 -15
- package/lib/formly/formly.providers.d.ts +0 -1
- package/lib/formly/index.d.ts +0 -11
- package/lib/formly/template/available.d.ts +0 -7
- package/lib/formly/template/available.module.d.ts +0 -8
- package/lib/formly/template/index.d.ts +0 -7
- package/lib/formly/template/login.d.ts +0 -66
- package/lib/formly/template/login.module.d.ts +0 -7
- package/lib/formly/template/timezone.d.ts +0 -20
- package/lib/formly/template/timezone.module.d.ts +0 -7
- package/lib/formly/template/website.d.ts +0 -15
- package/lib/index.d.ts +0 -6
- package/lib/layout/form.layout.module.d.ts +0 -10
- package/lib/layout/form.spacer.directive.d.ts +0 -8
- package/lib/layout/index.d.ts +0 -2
- package/lib/validator/available.d.ts +0 -30
- package/lib/validator/boolean.d.ts +0 -2
- package/lib/validator/email.d.ts +0 -2
- package/lib/validator/field.d.ts +0 -32
- package/lib/validator/index.d.ts +0 -7
- package/lib/validator/number.d.ts +0 -23
- package/lib/validator/phone.d.ts +0 -16
- package/lib/validator/website.d.ts +0 -31
- package/mapbox/index.d.ts +0 -2
- package/mapbox/lib/field/index.d.ts +0 -2
- package/mapbox/lib/field/latlng/index.d.ts +0 -4
- package/mapbox/lib/field/latlng/latlng.field.component.d.ts +0 -116
- package/mapbox/lib/field/latlng/latlng.field.d.ts +0 -6
- package/mapbox/lib/field/latlng/latlng.field.marker.component.d.ts +0 -12
- package/mapbox/lib/field/latlng/latlng.module.d.ts +0 -8
- package/mapbox/lib/field/zoom/index.d.ts +0 -3
- package/mapbox/lib/field/zoom/zoom.field.component.d.ts +0 -68
- package/mapbox/lib/field/zoom/zoom.field.d.ts +0 -6
- package/mapbox/lib/field/zoom/zoom.module.d.ts +0 -8
- package/mapbox/lib/mapbox.module.d.ts +0 -8
|
@@ -1,288 +0,0 @@
|
|
|
1
|
-
import { convertMaybeToArray, lastValue, separateValues, asArray, filterUniqueValues } from '@dereekb/util';
|
|
2
|
-
import { mergeDbxInjectionComponentConfigs } from '@dereekb/dbx-core';
|
|
3
|
-
import { filterMaybe, SubscriptionObject, successResult, startWithBeginLoading, loadingStateContext, isLoadingStateInLoadingState } from '@dereekb/rxjs';
|
|
4
|
-
import { Directive, ElementRef, viewChild } from '@angular/core';
|
|
5
|
-
import { FormControl } from '@angular/forms';
|
|
6
|
-
import { FieldType } from '@ngx-formly/material';
|
|
7
|
-
import { debounceTime, distinctUntilChanged, first, map, mergeMap, shareReplay, startWith, switchMap, BehaviorSubject, of } from 'rxjs';
|
|
8
|
-
import { DbxDefaultSearchableFieldDisplayComponent } from './searchable.field.autocomplete.item.component';
|
|
9
|
-
import { camelCase } from 'change-case-all';
|
|
10
|
-
import { toSignal } from '@angular/core/rxjs-interop';
|
|
11
|
-
import * as i0 from "@angular/core";
|
|
12
|
-
const DEFAULT_SEARCH_INPUT_PLACEHOLDER = 'Type to Search';
|
|
13
|
-
const DEFAULT_SEARCHABLE_FIELD_DISPLAY = {
|
|
14
|
-
componentClass: DbxDefaultSearchableFieldDisplayComponent
|
|
15
|
-
};
|
|
16
|
-
/**
|
|
17
|
-
* Abstract searchable field that provides a feature for searching for values, and for displaying values using Observables.
|
|
18
|
-
*
|
|
19
|
-
* Display values are cached for performance.
|
|
20
|
-
*/
|
|
21
|
-
export class AbstractDbxSearchableValueFieldDirective extends FieldType {
|
|
22
|
-
/**
|
|
23
|
-
* Optional override set by the parent class for whether or not to allow the current value to sync to the input.
|
|
24
|
-
*/
|
|
25
|
-
allowSyncValueToInput = false;
|
|
26
|
-
/**
|
|
27
|
-
* Default placeholder text to use when searchOnEmptyText is false.
|
|
28
|
-
*/
|
|
29
|
-
defaultSearchInputPlaceholder = DEFAULT_SEARCH_INPUT_PLACEHOLDER;
|
|
30
|
-
textInput = viewChild('textInput', { read: (ElementRef) });
|
|
31
|
-
inputCtrl = new FormControl('');
|
|
32
|
-
_formControlObs = new BehaviorSubject(undefined);
|
|
33
|
-
formControl$ = this._formControlObs.pipe(filterMaybe());
|
|
34
|
-
_clearDisplayHashMapSub = new SubscriptionObject();
|
|
35
|
-
_displayHashMap = new BehaviorSubject(new Map());
|
|
36
|
-
inputValue$ = this.inputCtrl.valueChanges.pipe(startWith(this.inputCtrl.value), map((x) => x || ''));
|
|
37
|
-
inputValueString$ = this.inputValue$.pipe(debounceTime(200), distinctUntilChanged());
|
|
38
|
-
searchResultsState$ = this.inputValueString$.pipe(switchMap((text) => (text || this.searchOnEmptyText ? this.search(text ?? '') : of([])).pipe(switchMap((x) => this.loadDisplayValuesForFieldValues(x)),
|
|
39
|
-
// Return begin loading to setup the loading state.
|
|
40
|
-
startWithBeginLoading())), shareReplay(1));
|
|
41
|
-
_singleValueSyncSub = new SubscriptionObject();
|
|
42
|
-
searchContext = loadingStateContext({ obs: this.searchResultsState$, showLoadingOnNoValue: false });
|
|
43
|
-
searchResults$ = this.searchResultsState$.pipe(map((x) => x?.value ?? []), shareReplay(1));
|
|
44
|
-
isLoadingSearchResults$ = this.searchResultsState$.pipe(map(isLoadingStateInLoadingState), distinctUntilChanged(), shareReplay(1));
|
|
45
|
-
_formControlValue$ = this.formControl$.pipe(switchMap((control) => control.valueChanges.pipe(startWith(control.value), shareReplay(1))));
|
|
46
|
-
values$ = this._formControlValue$.pipe(map(convertMaybeToArray), shareReplay(1));
|
|
47
|
-
displayValuesState$ = this.values$.pipe(distinctUntilChanged(), switchMap((values) => this.loadDisplayValuesForValues(values)), shareReplay(1));
|
|
48
|
-
displayValues$ = this.displayValuesState$.pipe(map((x) => x?.value ?? []));
|
|
49
|
-
inputValueSignal = toSignal(this.inputValue$);
|
|
50
|
-
searchResultsSignal = toSignal(this.searchResults$);
|
|
51
|
-
displayValuesSignal = toSignal(this.displayValues$);
|
|
52
|
-
isLoadingSearchResultsSignal = toSignal(this.isLoadingSearchResults$);
|
|
53
|
-
get name() {
|
|
54
|
-
return this.field.name ?? camelCase(this.label ?? this.key);
|
|
55
|
-
}
|
|
56
|
-
get label() {
|
|
57
|
-
return this.props.label;
|
|
58
|
-
}
|
|
59
|
-
get readonly() {
|
|
60
|
-
return this.props.readonly;
|
|
61
|
-
}
|
|
62
|
-
get isReadonlyOrDisabled() {
|
|
63
|
-
return this.readonly || this.disabled;
|
|
64
|
-
}
|
|
65
|
-
get searchableField() {
|
|
66
|
-
return this.props;
|
|
67
|
-
}
|
|
68
|
-
get asArrayValue() {
|
|
69
|
-
return this.searchableField.asArrayValue ?? true;
|
|
70
|
-
}
|
|
71
|
-
get pickOnlyOne() {
|
|
72
|
-
return this.asArrayValue === false || this.multiSelect === false;
|
|
73
|
-
}
|
|
74
|
-
get searchOnEmptyText() {
|
|
75
|
-
return this.searchableField.searchOnEmptyText ?? false;
|
|
76
|
-
}
|
|
77
|
-
get searchInputPlaceholder() {
|
|
78
|
-
const searchOnEmpty = this.searchOnEmptyText;
|
|
79
|
-
const placeholder = this.searchableField.placeholder;
|
|
80
|
-
const test = placeholder || (searchOnEmpty ? undefined : this.defaultSearchInputPlaceholder) || '';
|
|
81
|
-
return test;
|
|
82
|
-
}
|
|
83
|
-
get autocomplete() {
|
|
84
|
-
return (this.props.attributes?.['autocomplete'] ?? this.key);
|
|
85
|
-
}
|
|
86
|
-
get hashForValue() {
|
|
87
|
-
return this.searchableField.hashForValue ?? ((x) => x);
|
|
88
|
-
}
|
|
89
|
-
get displayForValue() {
|
|
90
|
-
return this.searchableField.displayForValue;
|
|
91
|
-
}
|
|
92
|
-
get useAnchor() {
|
|
93
|
-
return this.searchableField.useAnchor;
|
|
94
|
-
}
|
|
95
|
-
get anchorForValue() {
|
|
96
|
-
return this.searchableField.anchorForValue;
|
|
97
|
-
}
|
|
98
|
-
get display() {
|
|
99
|
-
return this.searchableField.display;
|
|
100
|
-
}
|
|
101
|
-
get search() {
|
|
102
|
-
return this.searchableField.search;
|
|
103
|
-
}
|
|
104
|
-
get values() {
|
|
105
|
-
return this._getValueOnFormControl(this.formControl.value) ?? [];
|
|
106
|
-
}
|
|
107
|
-
get allowStringValues() {
|
|
108
|
-
return this.searchableField.allowStringValues ?? Boolean(this.convertStringValue);
|
|
109
|
-
}
|
|
110
|
-
get convertStringValue() {
|
|
111
|
-
return this.searchableField.convertStringValue;
|
|
112
|
-
}
|
|
113
|
-
get showClearValue() {
|
|
114
|
-
return this.searchableField.showClearValue ?? true;
|
|
115
|
-
}
|
|
116
|
-
get searchLabel() {
|
|
117
|
-
return this.searchableField.searchLabel ?? 'Search';
|
|
118
|
-
}
|
|
119
|
-
get refreshDisplayValues$() {
|
|
120
|
-
return this.searchableField.refreshDisplayValues$;
|
|
121
|
-
}
|
|
122
|
-
loadDisplayValuesForValues(values) {
|
|
123
|
-
return this.loadDisplayValuesForFieldValues(values.map((value) => ({ value })));
|
|
124
|
-
}
|
|
125
|
-
loadDisplayValuesForFieldValues(values) {
|
|
126
|
-
return this.getDisplayValuesForFieldValues(values).pipe(map((displayValues) => successResult(displayValues)), startWithBeginLoading(), shareReplay(1));
|
|
127
|
-
}
|
|
128
|
-
getDisplayValuesForFieldValues(values) {
|
|
129
|
-
return this._displayHashMap.pipe(mergeMap((displayMap) => {
|
|
130
|
-
const mappingResult = values.map((x) => [x, this.hashForValue(x.value)]).map(([x, hash], i) => [i, hash, x, displayMap.get(hash)]);
|
|
131
|
-
const {
|
|
132
|
-
//
|
|
133
|
-
included: hasDisplay, excluded: needsDisplay } = separateValues(mappingResult, (x) => Boolean(x[3]));
|
|
134
|
-
let obs;
|
|
135
|
-
if (needsDisplay.length > 0) {
|
|
136
|
-
// Go get the display value.
|
|
137
|
-
const displayValuesObs = this.displayForValue(needsDisplay.map((x) => x[2]));
|
|
138
|
-
const defaultDisplay = mergeDbxInjectionComponentConfigs([DEFAULT_SEARCHABLE_FIELD_DISPLAY, this.display]);
|
|
139
|
-
const anchorForValue = this.useAnchor && this.anchorForValue;
|
|
140
|
-
obs = displayValuesObs.pipe(first(), map((displayResults) => {
|
|
141
|
-
// Assign the default component classes to complete configuration.
|
|
142
|
-
displayResults.forEach((x) => {
|
|
143
|
-
if (!x.display) {
|
|
144
|
-
x.display = defaultDisplay;
|
|
145
|
-
}
|
|
146
|
-
else {
|
|
147
|
-
x.display = mergeDbxInjectionComponentConfigs([defaultDisplay, x.display]);
|
|
148
|
-
}
|
|
149
|
-
if (!x.anchor && anchorForValue) {
|
|
150
|
-
x.anchor = anchorForValue(x);
|
|
151
|
-
}
|
|
152
|
-
});
|
|
153
|
-
// Create a map to re-join values later.
|
|
154
|
-
const displayResultsMapping = displayResults.map((x) => [x, this.hashForValue(x.value)]);
|
|
155
|
-
const valueIndexHashMap = new Map(displayResultsMapping.map(([x, hash]) => [hash, x]));
|
|
156
|
-
// Update displayMap. No need to push an update notification.
|
|
157
|
-
displayResultsMapping.forEach(([x, hash]) => displayMap.set(hash, x));
|
|
158
|
-
// Zip values back together.
|
|
159
|
-
const newDisplayValues = mappingResult.map((x) => x[3] ?? valueIndexHashMap.get(x[1]));
|
|
160
|
-
// Return display values.
|
|
161
|
-
return newDisplayValues;
|
|
162
|
-
}));
|
|
163
|
-
}
|
|
164
|
-
else {
|
|
165
|
-
// If all display values are hashed return that.
|
|
166
|
-
obs = of(hasDisplay.map((x) => x[3]));
|
|
167
|
-
}
|
|
168
|
-
return obs;
|
|
169
|
-
}));
|
|
170
|
-
}
|
|
171
|
-
ngOnInit() {
|
|
172
|
-
this._formControlObs.next(this.formControl);
|
|
173
|
-
if (this.refreshDisplayValues$ != null) {
|
|
174
|
-
this._clearDisplayHashMapSub.subscription = this.refreshDisplayValues$.subscribe(() => this._displayHashMap.next(new Map()));
|
|
175
|
-
}
|
|
176
|
-
if (this.searchableField.textInputValidator) {
|
|
177
|
-
this.inputCtrl.setValidators(this.searchableField.textInputValidator);
|
|
178
|
-
}
|
|
179
|
-
if (this.allowSyncValueToInput && this.multiSelect === false) {
|
|
180
|
-
this._singleValueSyncSub.subscription = this.displayValues$.subscribe((x) => {
|
|
181
|
-
if (x[0]) {
|
|
182
|
-
this._syncSingleValue(x[0]);
|
|
183
|
-
}
|
|
184
|
-
});
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
ngOnDestroy() {
|
|
188
|
-
super.ngOnDestroy();
|
|
189
|
-
this._clearDisplayHashMapSub.destroy();
|
|
190
|
-
this._displayHashMap.complete();
|
|
191
|
-
this._singleValueSyncSub.destroy();
|
|
192
|
-
this._formControlObs.complete();
|
|
193
|
-
this.searchContext.destroy();
|
|
194
|
-
}
|
|
195
|
-
/**
|
|
196
|
-
* Used to sync the input control with the selected value.
|
|
197
|
-
*
|
|
198
|
-
* Only used when multiSelect is false.
|
|
199
|
-
*/
|
|
200
|
-
_syncSingleValue(value) {
|
|
201
|
-
this.inputCtrl.setValue(value.label);
|
|
202
|
-
}
|
|
203
|
-
_addWithTextValue(text) {
|
|
204
|
-
if (!this.searchableField.allowStringValues) {
|
|
205
|
-
return;
|
|
206
|
-
}
|
|
207
|
-
if (text) {
|
|
208
|
-
text = (text || '').trim();
|
|
209
|
-
this.inputCtrl.setValue(text.trim());
|
|
210
|
-
}
|
|
211
|
-
if (!this.inputCtrl.valid) {
|
|
212
|
-
return;
|
|
213
|
-
}
|
|
214
|
-
if (text) {
|
|
215
|
-
const value = this.convertStringValue ? this.convertStringValue(text) : text;
|
|
216
|
-
this.addValue(value);
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
addWithDisplayValue(displayValue) {
|
|
220
|
-
this.addValue(displayValue.value);
|
|
221
|
-
}
|
|
222
|
-
removeWithDisplayValue(displayValue) {
|
|
223
|
-
this.removeValue(displayValue.value);
|
|
224
|
-
}
|
|
225
|
-
_tryAddCurrentInputValue() {
|
|
226
|
-
let addedValue = false;
|
|
227
|
-
if (this.allowStringValues) {
|
|
228
|
-
const value = this.inputCtrl.value || '';
|
|
229
|
-
if ((value || '').trim()) {
|
|
230
|
-
this._addWithTextValue(value);
|
|
231
|
-
addedValue = true;
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
return addedValue;
|
|
235
|
-
}
|
|
236
|
-
addValue(value) {
|
|
237
|
-
const textInput = this.textInput();
|
|
238
|
-
if (textInput) {
|
|
239
|
-
textInput.nativeElement.value = '';
|
|
240
|
-
}
|
|
241
|
-
this.inputCtrl.setValue(null);
|
|
242
|
-
this.setValues([...this.values, value]);
|
|
243
|
-
}
|
|
244
|
-
removeValue(value) {
|
|
245
|
-
let values;
|
|
246
|
-
if (this.hashForValue) {
|
|
247
|
-
const hashToFilter = this.hashForValue(value);
|
|
248
|
-
values = this.values.filter((x) => this.hashForValue(x) !== hashToFilter);
|
|
249
|
-
}
|
|
250
|
-
else {
|
|
251
|
-
values = this.values.filter((x) => x !== value);
|
|
252
|
-
}
|
|
253
|
-
this.setValues(values);
|
|
254
|
-
}
|
|
255
|
-
clearValues() {
|
|
256
|
-
this.setValues([]);
|
|
257
|
-
}
|
|
258
|
-
setValues(values) {
|
|
259
|
-
// Use to filter non-unique values.
|
|
260
|
-
if (this.hashForValue) {
|
|
261
|
-
values = filterUniqueValues(values, this.hashForValue);
|
|
262
|
-
}
|
|
263
|
-
if (this.pickOnlyOne) {
|
|
264
|
-
values = [lastValue(values)].filter((x) => x != null);
|
|
265
|
-
}
|
|
266
|
-
this._setValueOnFormControl(values);
|
|
267
|
-
}
|
|
268
|
-
// MARK: Internal
|
|
269
|
-
_getValueOnFormControl(valueOnFormControl) {
|
|
270
|
-
const value = valueOnFormControl != null ? asArray(valueOnFormControl) : []; // Always return an array.
|
|
271
|
-
return value;
|
|
272
|
-
}
|
|
273
|
-
_setValueOnFormControl(values) {
|
|
274
|
-
let newValue = values;
|
|
275
|
-
if (!this.asArrayValue) {
|
|
276
|
-
newValue = [values[0]].filter((x) => x != null)[0];
|
|
277
|
-
}
|
|
278
|
-
this.formControl.setValue(newValue);
|
|
279
|
-
this.formControl.markAsDirty();
|
|
280
|
-
this.formControl.markAsTouched();
|
|
281
|
-
}
|
|
282
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AbstractDbxSearchableValueFieldDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
283
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "18.2.13", type: AbstractDbxSearchableValueFieldDirective, viewQueries: [{ propertyName: "textInput", first: true, predicate: ["textInput"], descendants: true, read: ElementRef, isSignal: true }], usesInheritance: true, ngImport: i0 });
|
|
284
|
-
}
|
|
285
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AbstractDbxSearchableValueFieldDirective, decorators: [{
|
|
286
|
-
type: Directive
|
|
287
|
-
}] });
|
|
288
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoYWJsZS5maWVsZC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9zcmMvbGliL2Zvcm1seS9maWVsZC9zZWxlY3Rpb24vc2VhcmNoYWJsZS9zZWFyY2hhYmxlLmZpZWxkLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXVCLG1CQUFtQixFQUFFLFNBQVMsRUFBZ0IsY0FBYyxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBZ0IsTUFBTSxlQUFlLENBQUM7QUFDN0osT0FBTyxFQUErQixpQ0FBaUMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25HLE9BQU8sRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQWdCLGFBQWEsRUFBRSxxQkFBcUIsRUFBRSxtQkFBbUIsRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2SyxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBcUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BGLE9BQU8sRUFBbUIsV0FBVyxFQUFlLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLEVBQUUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUVwSixPQUFPLEVBQUUseUNBQXlDLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUMzRyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQXdFdEQsTUFBTSxnQ0FBZ0MsR0FBRyxnQkFBZ0Is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d0M7a0JBRDdELFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcnJheU9yVmFsdWUsIE1heWJlLCBjb252ZXJ0TWF5YmVUb0FycmF5LCBsYXN0VmFsdWUsIFByaW1hdGl2ZUtleSwgc2VwYXJhdGVWYWx1ZXMsIGFzQXJyYXksIGZpbHRlclVuaXF1ZVZhbHVlcywgQ29uZmlndXJhYmxlIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWcsIG1lcmdlRGJ4SW5qZWN0aW9uQ29tcG9uZW50Q29uZmlncyB9IGZyb20gJ0BkZXJlZWtiL2RieC1jb3JlJztcbmltcG9ydCB7IGZpbHRlck1heWJlLCBTdWJzY3JpcHRpb25PYmplY3QsIExvYWRpbmdTdGF0ZSwgc3VjY2Vzc1Jlc3VsdCwgc3RhcnRXaXRoQmVnaW5Mb2FkaW5nLCBsb2FkaW5nU3RhdGVDb250ZXh0LCBpc0xvYWRpbmdTdGF0ZUluTG9hZGluZ1N0YXRlIH0gZnJvbSAnQGRlcmVla2Ivcnhqcyc7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSwgT25Jbml0LCB2aWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUNvbnRyb2wsIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRmllbGRUeXBlQ29uZmlnLCBGb3JtbHlGaWVsZFByb3BzIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBGaWVsZFR5cGUgfSBmcm9tICdAbmd4LWZvcm1seS9tYXRlcmlhbCc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaXJzdCwgbWFwLCBtZXJnZU1hcCwgc2hhcmVSZXBsYXksIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCBCZWhhdmlvclN1YmplY3QsIG9mLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTZWFyY2hhYmxlVmFsdWVGaWVsZEhhc2hGbiwgU2VhcmNoYWJsZVZhbHVlRmllbGRTdHJpbmdTZWFyY2hGbiwgU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5Rm4sIFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlLCBTZWFyY2hhYmxlVmFsdWVGaWVsZFZhbHVlLCBTZWFyY2hhYmxlVmFsdWVGaWVsZEFuY2hvckZuLCBDb25maWd1cmVkU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWUgfSBmcm9tICcuL3NlYXJjaGFibGUnO1xuaW1wb3J0IHsgRGJ4RGVmYXVsdFNlYXJjaGFibGVGaWVsZERpc3BsYXlDb21wb25lbnQgfSBmcm9tICcuL3NlYXJjaGFibGUuZmllbGQuYXV0b2NvbXBsZXRlLml0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IGNhbWVsQ2FzZSB9IGZyb20gJ2NoYW5nZS1jYXNlLWFsbCc7XG5pbXBvcnQgeyB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuZXhwb3J0IGludGVyZmFjZSBTdHJpbmdWYWx1ZUZpZWxkc0ZpZWxkUHJvcHMgZXh0ZW5kcyBGb3JtbHlGaWVsZFByb3BzIHtcbiAgLyoqXG4gICAqIEN1c3RvbSBpbnB1dCB2YWxpZGF0b3JzLlxuICAgKi9cbiAgcmVhZG9ubHkgdGV4dElucHV0VmFsaWRhdG9yPzogVmFsaWRhdG9yRm4gfCBWYWxpZGF0b3JGbltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaGFibGVWYWx1ZUZpZWxkc0ZpZWxkUHJvcHM8VCwgTSA9IHVua25vd24sIEggZXh0ZW5kcyBQcmltYXRpdmVLZXkgPSBQcmltYXRpdmVLZXk+IGV4dGVuZHMgRm9ybWx5RmllbGRQcm9wcywgU3RyaW5nVmFsdWVGaWVsZHNGaWVsZFByb3BzIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIGFsbG93IHN0cmluZyB2YWx1ZXMgdG8gYmUgdXNlZCBkaXJlY3RseSwgb3IgaWYgdmFsdWVzIGNhbiBvbmx5IGJlIGNob3NlbiBmcm9tIHNlYXJjaGluZy5cbiAgICovXG4gIHJlYWRvbmx5IGFsbG93U3RyaW5nVmFsdWVzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIHNldC9nZXQgdmFsdWVzIGFzIGFuIGFycmF5IG9yIGEgc2luZ2xlIHZhbHVlLiBJZiBzZXQgZmFsc2UsIG11bHRpU2VsZWN0IGlzIGlnbm9yZWQuXG4gICAqL1xuICByZWFkb25seSBhc0FycmF5VmFsdWU/OiBib29sZWFuO1xuICAvKipcbiAgICogT3B0aW9uYWwgY29udmVyc2lvbiBmdW5jdGlvbi4gSWYgcHJvdmlkZWQsIGFsbG93U3RyaW5nVmFsdWVzIGlzIGNvbnNpZGVyZWQgdHJ1ZS5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnZlcnRTdHJpbmdWYWx1ZT86ICh0ZXh0OiBzdHJpbmcpID0+IFQ7XG4gIC8qKlxuICAgKiBVc2VkIGZvciBoYXNoaW5nIGRpc3BsYXkgdmFsdWVzIGFuZCBvbWl0dGluZyByZXBlYXQgdmFsdWVzLlxuICAgKlxuICAgKiBJZiBoYXNoRm9yVmFsdWUgaXMgbm90IHByb3ZpZGVkLCB0aGUgdmFsdWUncyB2YWx1ZSB3aWxsIGJlIHVzZWQgYXMgaXMuXG4gICAqL1xuICByZWFkb25seSBoYXNoRm9yVmFsdWU/OiBTZWFyY2hhYmxlVmFsdWVGaWVsZEhhc2hGbjxULCBIPjtcbiAgLyoqXG4gICAqIFBlcmZvcm1zIGEgc2VhcmNoLlxuICAgKi9cbiAgcmVhZG9ubHkgc2VhcmNoOiBTZWFyY2hhYmxlVmFsdWVGaWVsZFN0cmluZ1NlYXJjaEZuPFQsIE0+O1xuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gYWxsb3cgc2VhcmNoZXMgb24gZW1wdHkgdGV4dC4gSXMgZmFsc2UgYnkgZGVmYXVsdC5cbiAgICovXG4gIHJlYWRvbmx5IHNlYXJjaE9uRW1wdHlUZXh0PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIERlZmF1bHQgaW5qZWN0ZWQgY29uZmlnIHRvIHVzZSBmb3IgZGlzcGxheSB2YWx1ZXMuXG4gICAqL1xuICByZWFkb25seSBkaXNwbGF5PzogUGFydGlhbDxEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWc+O1xuICAvKipcbiAgICogVXNlZCBmb3IgYnVpbGRpbmcgYSBkaXNwbGF5IHZhbHVlIGdpdmVuIHRoZSBpbnB1dC5cbiAgICovXG4gIHJlYWRvbmx5IGRpc3BsYXlGb3JWYWx1ZTogU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5Rm48VCwgTT47XG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byB1c2UgdGhlIGFuY2hvciBmaWVsZCBvbiB2YWx1ZSBlbGVtZW50cy5cbiAgICpcbiAgICogVGhpcyBoYXMgbm8gZGVmYXVsdCBlZmZlY3QgaWYgYSBjb21wb25lbnQgY2xhc3MgaXMgcHJvdmlkZWQuXG4gICAqL1xuICByZWFkb25seSB1c2VBbmNob3I/OiBib29sZWFuO1xuICAvKipcbiAgICogVXNlZCBmb3IgcmV0cmlldmluZyBhbiBhbmNob3IgdmFsdWUgZm9yIHZhbHVlcyB0aGF0IGhhdmUgbm8gYW5jaG9yIHZhbHVlIHNldC5cbiAgICpcbiAgICogT25seSB1c2VkIHdoZW4gdXNlQW5jaG9yIGlzIHRydWUuXG4gICAqL1xuICByZWFkb25seSBhbmNob3JGb3JWYWx1ZT86IFNlYXJjaGFibGVWYWx1ZUZpZWxkQW5jaG9yRm48VCwgTT47XG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byBzaG93IFwiQ2xlYXJcIiBpbiB0aGUgYXV0Y29tcGxldGUgbGlzdC5cbiAgICovXG4gIHJlYWRvbmx5IHNob3dDbGVhclZhbHVlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIExhYmVsIGZvciB0aGUgc2VhcmNoIGlucHV0LlxuICAgKlxuICAgKiBEZWZhdWx0cyB0byBcIlNlYXJjaFwiXG4gICAqL1xuICByZWFkb25seSBzZWFyY2hMYWJlbD86IHN0cmluZztcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgb2JzZXJ2YWJsZSB0aGF0IHdpbGwgdHJpZ2dlciB0aGUgY2xlYXJpbmcgb2YgYWxsIGNhY2hlZCBkaXNwbGF5IHZhbHVlcy5cbiAgICovXG4gIHJlYWRvbmx5IHJlZnJlc2hEaXNwbGF5VmFsdWVzJD86IE9ic2VydmFibGU8dW5rbm93bj47XG59XG5cbmNvbnN0IERFRkFVTFRfU0VBUkNIX0lOUFVUX1BMQUNFSE9MREVSID0gJ1R5cGUgdG8gU2VhcmNoJztcblxuY29uc3QgREVGQVVMVF9TRUFSQ0hBQkxFX0ZJRUxEX0RJU1BMQVk6IFBhcnRpYWw8RGJ4SW5qZWN0aW9uQ29tcG9uZW50Q29uZmlnPiA9IHtcbiAgY29tcG9uZW50Q2xhc3M6IERieERlZmF1bHRTZWFyY2hhYmxlRmllbGREaXNwbGF5Q29tcG9uZW50XG59O1xuXG4vKipcbiAqIEFic3RyYWN0IHNlYXJjaGFibGUgZmllbGQgdGhhdCBwcm92aWRlcyBhIGZlYXR1cmUgZm9yIHNlYXJjaGluZyBmb3IgdmFsdWVzLCBhbmQgZm9yIGRpc3BsYXlpbmcgdmFsdWVzIHVzaW5nIE9ic2VydmFibGVzLlxuICpcbiAqIERpc3BsYXkgdmFsdWVzIGFyZSBjYWNoZWQgZm9yIHBlcmZvcm1hbmNlLlxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdERieFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlyZWN0aXZlPFQsIE0gPSB1bmtub3duLCBIIGV4dGVuZHMgUHJpbWF0aXZlS2V5ID0gUHJpbWF0aXZlS2V5LCBDIGV4dGVuZHMgU2VhcmNoYWJsZVZhbHVlRmllbGRzRmllbGRQcm9wczxULCBNLCBIPiA9IFNlYXJjaGFibGVWYWx1ZUZpZWxkc0ZpZWxkUHJvcHM8VCwgTSwgSD4+IGV4dGVuZHMgRmllbGRUeXBlPEZpZWxkVHlwZUNvbmZpZzxDPj4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byBzZXQvZ2V0IHZhbHVlcyBhcyBhbiBhcnJheS5cbiAgICovXG4gIGFic3RyYWN0IGdldCBtdWx0aVNlbGVjdCgpOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBvdmVycmlkZSBzZXQgYnkgdGhlIHBhcmVudCBjbGFzcyBmb3Igd2hldGhlciBvciBub3QgdG8gYWxsb3cgdGhlIGN1cnJlbnQgdmFsdWUgdG8gc3luYyB0byB0aGUgaW5wdXQuXG4gICAqL1xuICBhbGxvd1N5bmNWYWx1ZVRvSW5wdXQgPSBmYWxzZTtcblxuICAvKipcbiAgICogRGVmYXVsdCBwbGFjZWhvbGRlciB0ZXh0IHRvIHVzZSB3aGVuIHNlYXJjaE9uRW1wdHlUZXh0IGlzIGZhbHNlLlxuICAgKi9cbiAgZGVmYXVsdFNlYXJjaElucHV0UGxhY2Vob2xkZXI/OiBNYXliZTxzdHJpbmc+ID0gREVGQVVMVF9TRUFSQ0hfSU5QVVRfUExBQ0VIT0xERVI7XG5cbiAgcmVhZG9ubHkgdGV4dElucHV0ID0gdmlld0NoaWxkPHN0cmluZywgRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50Pj4oJ3RleHRJbnB1dCcsIHsgcmVhZDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PiB9KTtcblxuICByZWFkb25seSBpbnB1dEN0cmwgPSBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nPignJyk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZm9ybUNvbnRyb2xPYnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1heWJlPEFic3RyYWN0Q29udHJvbD4+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGZvcm1Db250cm9sJCA9IHRoaXMuX2Zvcm1Db250cm9sT2JzLnBpcGUoZmlsdGVyTWF5YmUoKSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfY2xlYXJEaXNwbGF5SGFzaE1hcFN1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzcGxheUhhc2hNYXAgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1hcDxILCBDb25maWd1cmVkU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWU8VCwgTT4+PihuZXcgTWFwKCkpO1xuXG4gIHJlYWRvbmx5IGlucHV0VmFsdWUkOiBPYnNlcnZhYmxlPHN0cmluZz4gPSB0aGlzLmlucHV0Q3RybC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICBzdGFydFdpdGgodGhpcy5pbnB1dEN0cmwudmFsdWUpLFxuICAgIG1hcCgoeCkgPT4geCB8fCAnJylcbiAgKTtcblxuICByZWFkb25seSBpbnB1dFZhbHVlU3RyaW5nJDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gdGhpcy5pbnB1dFZhbHVlJC5waXBlKGRlYm91bmNlVGltZSgyMDApLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcblxuICByZWFkb25seSBzZWFyY2hSZXN1bHRzU3RhdGUkOiBPYnNlcnZhYmxlPExvYWRpbmdTdGF0ZTxDb25maWd1cmVkU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWU8VCwgTT5bXT4+ID0gdGhpcy5pbnB1dFZhbHVlU3RyaW5nJC5waXBlKFxuICAgIHN3aXRjaE1hcCgodGV4dCkgPT5cbiAgICAgICh0ZXh0IHx8IHRoaXMuc2VhcmNoT25FbXB0eVRleHQgPyB0aGlzLnNlYXJjaCh0ZXh0ID8/ICcnKSA6IG9mKFtdKSkucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKCh4KSA9PiB0aGlzLmxvYWREaXNwbGF5VmFsdWVzRm9yRmllbGRWYWx1ZXMoeCkpLFxuICAgICAgICAvLyBSZXR1cm4gYmVnaW4gbG9hZGluZyB0byBzZXR1cCB0aGUgbG9hZGluZyBzdGF0ZS5cbiAgICAgICAgc3RhcnRXaXRoQmVnaW5Mb2FkaW5nKClcbiAgICAgIClcbiAgICApLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfc2luZ2xlVmFsdWVTeW5jU3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuXG4gIHJlYWRvbmx5IHNlYXJjaENvbnRleHQgPSBsb2FkaW5nU3RhdGVDb250ZXh0KHsgb2JzOiB0aGlzLnNlYXJjaFJlc3VsdHNTdGF0ZSQsIHNob3dMb2FkaW5nT25Ob1ZhbHVlOiBmYWxzZSB9KTtcbiAgcmVhZG9ubHkgc2VhcmNoUmVzdWx0cyQ6IE9ic2VydmFibGU8Q29uZmlndXJlZFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0+W10+ID0gdGhpcy5zZWFyY2hSZXN1bHRzU3RhdGUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4Py52YWx1ZSA/PyBbXSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcbiAgcmVhZG9ubHkgaXNMb2FkaW5nU2VhcmNoUmVzdWx0cyQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLnNlYXJjaFJlc3VsdHNTdGF0ZSQucGlwZShtYXAoaXNMb2FkaW5nU3RhdGVJbkxvYWRpbmdTdGF0ZSksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHNoYXJlUmVwbGF5KDEpKTtcblxuICByZWFkb25seSBfZm9ybUNvbnRyb2xWYWx1ZSQ6IE9ic2VydmFibGU8VCB8IFRbXT4gPSB0aGlzLmZvcm1Db250cm9sJC5waXBlKHN3aXRjaE1hcCgoY29udHJvbCkgPT4gY29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGgoY29udHJvbC52YWx1ZSksIHNoYXJlUmVwbGF5KDEpKSkpO1xuXG4gIHJlYWRvbmx5IHZhbHVlcyQ6IE9ic2VydmFibGU8VFtdPiA9IHRoaXMuX2Zvcm1Db250cm9sVmFsdWUkLnBpcGUobWFwKGNvbnZlcnRNYXliZVRvQXJyYXkpLCBzaGFyZVJlcGxheSgxKSk7XG5cbiAgcmVhZG9ubHkgZGlzcGxheVZhbHVlc1N0YXRlJDogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8Q29uZmlndXJlZFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0+W10+PiA9IHRoaXMudmFsdWVzJC5waXBlKFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc3dpdGNoTWFwKCh2YWx1ZXM6IFRbXSkgPT4gdGhpcy5sb2FkRGlzcGxheVZhbHVlc0ZvclZhbHVlcyh2YWx1ZXMpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGRpc3BsYXlWYWx1ZXMkOiBPYnNlcnZhYmxlPENvbmZpZ3VyZWRTZWFyY2hhYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZTxULCBNPltdPiA9IHRoaXMuZGlzcGxheVZhbHVlc1N0YXRlJC5waXBlKG1hcCgoeCkgPT4geD8udmFsdWUgPz8gW10pKTtcblxuICByZWFkb25seSBpbnB1dFZhbHVlU2lnbmFsID0gdG9TaWduYWwodGhpcy5pbnB1dFZhbHVlJCk7XG4gIHJlYWRvbmx5IHNlYXJjaFJlc3VsdHNTaWduYWwgPSB0b1NpZ25hbCh0aGlzLnNlYXJjaFJlc3VsdHMkKTtcbiAgcmVhZG9ubHkgZGlzcGxheVZhbHVlc1NpZ25hbCA9IHRvU2lnbmFsKHRoaXMuZGlzcGxheVZhbHVlcyQpO1xuXG4gIHJlYWRvbmx5IGlzTG9hZGluZ1NlYXJjaFJlc3VsdHNTaWduYWwgPSB0b1NpZ25hbCh0aGlzLmlzTG9hZGluZ1NlYXJjaFJlc3VsdHMkKTtcblxuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLm5hbWUgPz8gY2FtZWxDYXNlKHRoaXMubGFiZWwgPz8gKHRoaXMua2V5IGFzIHN0cmluZykpO1xuICB9XG5cbiAgZ2V0IGxhYmVsKCk6IE1heWJlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLnByb3BzLmxhYmVsO1xuICB9XG5cbiAgZ2V0IHJlYWRvbmx5KCk6IE1heWJlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5yZWFkb25seTtcbiAgfVxuXG4gIGdldCBpc1JlYWRvbmx5T3JEaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5yZWFkb25seSB8fCB0aGlzLmRpc2FibGVkO1xuICB9XG5cbiAgZ2V0IHNlYXJjaGFibGVGaWVsZCgpOiBTZWFyY2hhYmxlVmFsdWVGaWVsZHNGaWVsZFByb3BzPFQsIE0sIEg+IHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcztcbiAgfVxuXG4gIGdldCBhc0FycmF5VmFsdWUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoYWJsZUZpZWxkLmFzQXJyYXlWYWx1ZSA/PyB0cnVlO1xuICB9XG5cbiAgZ2V0IHBpY2tPbmx5T25lKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFzQXJyYXlWYWx1ZSA9PT0gZmFsc2UgfHwgdGhpcy5tdWx0aVNlbGVjdCA9PT0gZmFsc2U7XG4gIH1cblxuICBnZXQgc2VhcmNoT25FbXB0eVRleHQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoYWJsZUZpZWxkLnNlYXJjaE9uRW1wdHlUZXh0ID8/IGZhbHNlO1xuICB9XG5cbiAgZ2V0IHNlYXJjaElucHV0UGxhY2Vob2xkZXIoKTogc3RyaW5nIHwgJycge1xuICAgIGNvbnN0IHNlYXJjaE9uRW1wdHkgPSB0aGlzLnNlYXJjaE9uRW1wdHlUZXh0O1xuICAgIGNvbnN0IHBsYWNlaG9sZGVyID0gdGhpcy5zZWFyY2hhYmxlRmllbGQucGxhY2Vob2xkZXI7XG4gICAgY29uc3QgdGVzdCA9IHBsYWNlaG9sZGVyIHx8IChzZWFyY2hPbkVtcHR5ID8gdW5kZWZpbmVkIDogdGhpcy5kZWZhdWx0U2VhcmNoSW5wdXRQbGFjZWhvbGRlcikgfHwgJyc7XG4gICAgcmV0dXJuIHRlc3Q7XG4gIH1cblxuICBnZXQgYXV0b2NvbXBsZXRlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICh0aGlzLnByb3BzLmF0dHJpYnV0ZXM/LlsnYXV0b2NvbXBsZXRlJ10gPz8gdGhpcy5rZXkpIGFzIHN0cmluZztcbiAgfVxuXG4gIGdldCBoYXNoRm9yVmFsdWUoKTogU2VhcmNoYWJsZVZhbHVlRmllbGRIYXNoRm48VCwgSD4ge1xuICAgIHJldHVybiB0aGlzLnNlYXJjaGFibGVGaWVsZC5oYXNoRm9yVmFsdWUgPz8gKCh4KSA9PiB4IGFzIHVua25vd24gYXMgSCk7XG4gIH1cblxuICBnZXQgZGlzcGxheUZvclZhbHVlKCk6IFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheUZuPFQsIE0+IHtcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hhYmxlRmllbGQuZGlzcGxheUZvclZhbHVlO1xuICB9XG5cbiAgZ2V0IHVzZUFuY2hvcigpOiBNYXliZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoYWJsZUZpZWxkLnVzZUFuY2hvcjtcbiAgfVxuXG4gIGdldCBhbmNob3JGb3JWYWx1ZSgpOiBNYXliZTxTZWFyY2hhYmxlVmFsdWVGaWVsZEFuY2hvckZuPFQsIE0+PiB7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoYWJsZUZpZWxkLmFuY2hvckZvclZhbHVlO1xuICB9XG5cbiAgZ2V0IGRpc3BsYXkoKTogTWF5YmU8UGFydGlhbDxEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWc+PiB7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoYWJsZUZpZWxkLmRpc3BsYXk7XG4gIH1cblxuICBnZXQgc2VhcmNoKCk6IFNlYXJjaGFibGVWYWx1ZUZpZWxkU3RyaW5nU2VhcmNoRm48VCwgTT4ge1xuICAgIHJldHVybiB0aGlzLnNlYXJjaGFibGVGaWVsZC5zZWFyY2g7XG4gIH1cblxuICBnZXQgdmFsdWVzKCk6IFRbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2dldFZhbHVlT25Gb3JtQ29udHJvbCh0aGlzLmZvcm1Db250cm9sLnZhbHVlKSA/PyBbXTtcbiAgfVxuXG4gIGdldCBhbGxvd1N0cmluZ1ZhbHVlcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hhYmxlRmllbGQuYWxsb3dTdHJpbmdWYWx1ZXMgPz8gQm9vbGVhbih0aGlzLmNvbnZlcnRTdHJpbmdWYWx1ZSk7XG4gIH1cblxuICBnZXQgY29udmVydFN0cmluZ1ZhbHVlKCk6IE1heWJlPCh0ZXh0OiBzdHJpbmcpID0+IFQ+IHtcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hhYmxlRmllbGQuY29udmVydFN0cmluZ1ZhbHVlO1xuICB9XG5cbiAgZ2V0IHNob3dDbGVhclZhbHVlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlYXJjaGFibGVGaWVsZC5zaG93Q2xlYXJWYWx1ZSA/PyB0cnVlO1xuICB9XG5cbiAgZ2V0IHNlYXJjaExhYmVsKCkge1xuICAgIHJldHVybiB0aGlzLnNlYXJjaGFibGVGaWVsZC5zZWFyY2hMYWJlbCA/PyAnU2VhcmNoJztcbiAgfVxuXG4gIGdldCByZWZyZXNoRGlzcGxheVZhbHVlcyQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoYWJsZUZpZWxkLnJlZnJlc2hEaXNwbGF5VmFsdWVzJDtcbiAgfVxuXG4gIGxvYWREaXNwbGF5VmFsdWVzRm9yVmFsdWVzKHZhbHVlczogVFtdKTogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8Q29uZmlndXJlZFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0+W10+PiB7XG4gICAgcmV0dXJuIHRoaXMubG9hZERpc3BsYXlWYWx1ZXNGb3JGaWVsZFZhbHVlcyh2YWx1ZXMubWFwKCh2YWx1ZSkgPT4gKHsgdmFsdWUgfSkpKTtcbiAgfVxuXG4gIGxvYWREaXNwbGF5VmFsdWVzRm9yRmllbGRWYWx1ZXModmFsdWVzOiBTZWFyY2hhYmxlVmFsdWVGaWVsZFZhbHVlPFQsIE0+W10pOiBPYnNlcnZhYmxlPExvYWRpbmdTdGF0ZTxDb25maWd1cmVkU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWU8VCwgTT5bXT4+IHtcbiAgICByZXR1cm4gdGhpcy5nZXREaXNwbGF5VmFsdWVzRm9yRmllbGRWYWx1ZXModmFsdWVzKS5waXBlKFxuICAgICAgbWFwKChkaXNwbGF5VmFsdWVzOiBDb25maWd1cmVkU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWU8VCwgTT5bXSkgPT4gc3VjY2Vzc1Jlc3VsdChkaXNwbGF5VmFsdWVzKSksXG4gICAgICBzdGFydFdpdGhCZWdpbkxvYWRpbmcoKSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKTtcbiAgfVxuXG4gIGdldERpc3BsYXlWYWx1ZXNGb3JGaWVsZFZhbHVlcyh2YWx1ZXM6IFNlYXJjaGFibGVWYWx1ZUZpZWxkVmFsdWU8VCwgTT5bXSk6IE9ic2VydmFibGU8Q29uZmlndXJlZFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0+W10+IHtcbiAgICByZXR1cm4gdGhpcy5fZGlzcGxheUhhc2hNYXAucGlwZShcbiAgICAgIG1lcmdlTWFwKChkaXNwbGF5TWFwKSA9PiB7XG4gICAgICAgIGNvbnN0IG1hcHBpbmdSZXN1bHQgPSB2YWx1ZXMubWFwKCh4KSA9PiBbeCwgdGhpcy5oYXNoRm9yVmFsdWUoeC52YWx1ZSldIGFzIFtTZWFyY2hhYmxlVmFsdWVGaWVsZFZhbHVlPFQsIE0+LCBIXSkubWFwKChbeCwgaGFzaF0sIGkpID0+IFtpLCBoYXNoLCB4LCBkaXNwbGF5TWFwLmdldChoYXNoKV0gYXMgW251bWJlciwgSCwgU2VhcmNoYWJsZVZhbHVlRmllbGRWYWx1ZTxULCBNPiwgQ29uZmlndXJlZFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0+XSk7XG5cbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIC8vXG4gICAgICAgICAgaW5jbHVkZWQ6IGhhc0Rpc3BsYXksXG4gICAgICAgICAgZXhjbHVkZWQ6IG5lZWRzRGlzcGxheVxuICAgICAgICB9ID0gc2VwYXJhdGVWYWx1ZXMobWFwcGluZ1Jlc3VsdCwgKHgpID0+IEJvb2xlYW4oeFszXSkpO1xuXG4gICAgICAgIGxldCBvYnM6IE9ic2VydmFibGU8Q29uZmlndXJlZFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0+W10+O1xuXG4gICAgICAgIGlmIChuZWVkc0Rpc3BsYXkubGVuZ3RoID4gMCkge1xuICAgICAgICAgIC8vIEdvIGdldCB0aGUgZGlzcGxheSB2YWx1ZS5cbiAgICAgICAgICBjb25zdCBkaXNwbGF5VmFsdWVzT2JzID0gdGhpcy5kaXNwbGF5Rm9yVmFsdWUobmVlZHNEaXNwbGF5Lm1hcCgoeCkgPT4geFsyXSkpO1xuICAgICAgICAgIGNvbnN0IGRlZmF1bHREaXNwbGF5ID0gbWVyZ2VEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWdzKFtERUZBVUxUX1NFQVJDSEFCTEVfRklFTERfRElTUExBWSwgdGhpcy5kaXNwbGF5XSk7XG5cbiAgICAgICAgICBjb25zdCBhbmNob3JGb3JWYWx1ZSA9IHRoaXMudXNlQW5jaG9yICYmIHRoaXMuYW5jaG9yRm9yVmFsdWU7XG5cbiAgICAgICAgICBvYnMgPSBkaXNwbGF5VmFsdWVzT2JzLnBpcGUoXG4gICAgICAgICAgICBmaXJzdCgpLFxuICAgICAgICAgICAgbWFwKChkaXNwbGF5UmVzdWx0cykgPT4ge1xuICAgICAgICAgICAgICAvLyBBc3NpZ24gdGhlIGRlZmF1bHQgY29tcG9uZW50IGNsYXNzZXMgdG8gY29tcGxldGUgY29uZmlndXJhdGlvbi5cbiAgICAgICAgICAgICAgKGRpc3BsYXlSZXN1bHRzIGFzIENvbmZpZ3VyYWJsZTxTZWFyY2hhYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZTxULCBNPj5bXSkuZm9yRWFjaCgoeCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICgheC5kaXNwbGF5KSB7XG4gICAgICAgICAgICAgICAgICB4LmRpc3BsYXkgPSBkZWZhdWx0RGlzcGxheTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgeC5kaXNwbGF5ID0gbWVyZ2VEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWdzKFtkZWZhdWx0RGlzcGxheSwgeC5kaXNwbGF5XSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCF4LmFuY2hvciAmJiBhbmNob3JGb3JWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgeC5hbmNob3IgPSBhbmNob3JGb3JWYWx1ZSh4KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIC8vIENyZWF0ZSBhIG1hcCB0byByZS1qb2luIHZhbHVlcyBsYXRlci5cbiAgICAgICAgICAgICAgY29uc3QgZGlzcGxheVJlc3VsdHNNYXBwaW5nOiBbQ29uZmlndXJlZFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0+LCBIXVtdID0gKGRpc3BsYXlSZXN1bHRzIGFzIENvbmZpZ3VyZWRTZWFyY2hhYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZTxULCBNPltdKS5tYXAoKHgpID0+IFt4LCB0aGlzLmhhc2hGb3JWYWx1ZSh4LnZhbHVlKV0pO1xuICAgICAgICAgICAgICBjb25zdCB2YWx1ZUluZGV4SGFzaE1hcCA9IG5ldyBNYXAoZGlzcGxheVJlc3VsdHNNYXBwaW5nLm1hcCgoW3gsIGhhc2hdKSA9PiBbaGFzaCwgeF0pKTtcblxuICAgICAgICAgICAgICAvLyBVcGRhdGUgZGlzcGxheU1hcC4gTm8gbmVlZCB0byBwdXNoIGFuIHVwZGF0ZSBub3RpZmljYXRpb24uXG4gICAgICAgICAgICAgIGRpc3BsYXlSZXN1bHRzTWFwcGluZy5mb3JFYWNoKChbeCwgaGFzaF0pID0+IGRpc3BsYXlNYXAuc2V0KGhhc2gsIHgpKTtcblxuICAgICAgICAgICAgICAvLyBaaXAgdmFsdWVzIGJhY2sgdG9nZXRoZXIuXG4gICAgICAgICAgICAgIGNvbnN0IG5ld0Rpc3BsYXlWYWx1ZXMgPSBtYXBwaW5nUmVzdWx0Lm1hcCgoeCkgPT4geFszXSA/PyB2YWx1ZUluZGV4SGFzaE1hcC5nZXQoeFsxXSkpO1xuXG4gICAgICAgICAgICAgIC8vIFJldHVybiBkaXNwbGF5IHZhbHVlcy5cbiAgICAgICAgICAgICAgcmV0dXJuIG5ld0Rpc3BsYXlWYWx1ZXM7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gSWYgYWxsIGRpc3BsYXkgdmFsdWVzIGFyZSBoYXNoZWQgcmV0dXJuIHRoYXQuXG4gICAgICAgICAgb2JzID0gb2YoaGFzRGlzcGxheS5tYXAoKHgpID0+IHhbM10pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvYnM7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9mb3JtQ29udHJvbE9icy5uZXh0KHRoaXMuZm9ybUNvbnRyb2wpO1xuXG4gICAgaWYgKHRoaXMucmVmcmVzaERpc3BsYXlWYWx1ZXMkICE9IG51bGwpIHtcbiAgICAgIHRoaXMuX2NsZWFyRGlzcGxheUhhc2hNYXBTdWIuc3Vic2NyaXB0aW9uID0gdGhpcy5yZWZyZXNoRGlzcGxheVZhbHVlcyQuc3Vic2NyaWJlKCgpID0+IHRoaXMuX2Rpc3BsYXlIYXNoTWFwLm5leHQobmV3IE1hcCgpKSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2VhcmNoYWJsZUZpZWxkLnRleHRJbnB1dFZhbGlkYXRvcikge1xuICAgICAgdGhpcy5pbnB1dEN0cmwuc2V0VmFsaWRhdG9ycyh0aGlzLnNlYXJjaGFibGVGaWVsZC50ZXh0SW5wdXRWYWxpZGF0b3IpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmFsbG93U3luY1ZhbHVlVG9JbnB1dCAmJiB0aGlzLm11bHRpU2VsZWN0ID09PSBmYWxzZSkge1xuICAgICAgdGhpcy5fc2luZ2xlVmFsdWVTeW5jU3ViLnN1YnNjcmlwdGlvbiA9IHRoaXMuZGlzcGxheVZhbHVlcyQuc3Vic2NyaWJlKCh4KSA9PiB7XG4gICAgICAgIGlmICh4WzBdKSB7XG4gICAgICAgICAgdGhpcy5fc3luY1NpbmdsZVZhbHVlKHhbMF0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBvdmVycmlkZSBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIHRoaXMuX2NsZWFyRGlzcGxheUhhc2hNYXBTdWIuZGVzdHJveSgpO1xuICAgIHRoaXMuX2Rpc3BsYXlIYXNoTWFwLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fc2luZ2xlVmFsdWVTeW5jU3ViLmRlc3Ryb3koKTtcbiAgICB0aGlzLl9mb3JtQ29udHJvbE9icy5jb21wbGV0ZSgpO1xuICAgIHRoaXMuc2VhcmNoQ29udGV4dC5kZXN0cm95KCk7XG4gIH1cblxuICAvKipcbiAgICogVXNlZCB0byBzeW5jIHRoZSBpbnB1dCBjb250cm9sIHdpdGggdGhlIHNlbGVjdGVkIHZhbHVlLlxuICAgKlxuICAgKiBPbmx5IHVzZWQgd2hlbiBtdWx0aVNlbGVjdCBpcyBmYWxzZS5cbiAgICovXG4gIHByb3RlY3RlZCBfc3luY1NpbmdsZVZhbHVlKHZhbHVlOiBTZWFyY2hhYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZTxUPik6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRDdHJsLnNldFZhbHVlKHZhbHVlLmxhYmVsKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfYWRkV2l0aFRleHRWYWx1ZSh0ZXh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2VhcmNoYWJsZUZpZWxkLmFsbG93U3RyaW5nVmFsdWVzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRleHQpIHtcbiAgICAgIHRleHQgPSAodGV4dCB8fCAnJykudHJpbSgpO1xuICAgICAgdGhpcy5pbnB1dEN0cmwuc2V0VmFsdWUodGV4dC50cmltKCkpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5pbnB1dEN0cmwudmFsaWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGV4dCkge1xuICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmNvbnZlcnRTdHJpbmdWYWx1ZSA/IHRoaXMuY29udmVydFN0cmluZ1ZhbHVlKHRleHQpIDogKHRleHQgYXMgdW5rbm93biBhcyBUKTtcbiAgICAgIHRoaXMuYWRkVmFsdWUodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGFkZFdpdGhEaXNwbGF5VmFsdWUoZGlzcGxheVZhbHVlOiBTZWFyY2hhYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZTxUPik6IHZvaWQge1xuICAgIHRoaXMuYWRkVmFsdWUoZGlzcGxheVZhbHVlLnZhbHVlKTtcbiAgfVxuXG4gIHJlbW92ZVdpdGhEaXNwbGF5VmFsdWUoZGlzcGxheVZhbHVlOiBTZWFyY2hhYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZTxUPik6IHZvaWQge1xuICAgIHRoaXMucmVtb3ZlVmFsdWUoZGlzcGxheVZhbHVlLnZhbHVlKTtcbiAgfVxuXG4gIF90cnlBZGRDdXJyZW50SW5wdXRWYWx1ZSgpOiBib29sZWFuIHtcbiAgICBsZXQgYWRkZWRWYWx1ZSA9IGZhbHNlO1xuXG4gICAgaWYgKHRoaXMuYWxsb3dTdHJpbmdWYWx1ZXMpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5pbnB1dEN0cmwudmFsdWUgfHwgJyc7XG5cbiAgICAgIGlmICgodmFsdWUgfHwgJycpLnRyaW0oKSkge1xuICAgICAgICB0aGlzLl9hZGRXaXRoVGV4dFZhbHVlKHZhbHVlKTtcbiAgICAgICAgYWRkZWRWYWx1ZSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGFkZGVkVmFsdWU7XG4gIH1cblxuICBhZGRWYWx1ZSh2YWx1ZTogVCk6IHZvaWQge1xuICAgIGNvbnN0IHRleHRJbnB1dCA9IHRoaXMudGV4dElucHV0KCk7XG5cbiAgICBpZiAodGV4dElucHV0KSB7XG4gICAgICB0ZXh0SW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgIH1cblxuICAgIHRoaXMuaW5wdXRDdHJsLnNldFZhbHVlKG51bGwpO1xuICAgIHRoaXMuc2V0VmFsdWVzKFsuLi50aGlzLnZhbHVlcywgdmFsdWVdKTtcbiAgfVxuXG4gIHJlbW92ZVZhbHVlKHZhbHVlOiBUKTogdm9pZCB7XG4gICAgbGV0IHZhbHVlcztcblxuICAgIGlmICh0aGlzLmhhc2hGb3JWYWx1ZSkge1xuICAgICAgY29uc3QgaGFzaFRvRmlsdGVyID0gdGhpcy5oYXNoRm9yVmFsdWUodmFsdWUpO1xuICAgICAgdmFsdWVzID0gdGhpcy52YWx1ZXMuZmlsdGVyKCh4KSA9PiB0aGlzLmhhc2hGb3JWYWx1ZSh4KSAhPT0gaGFzaFRvRmlsdGVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWVzID0gdGhpcy52YWx1ZXMuZmlsdGVyKCh4KSA9PiB4ICE9PSB2YWx1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy5zZXRWYWx1ZXModmFsdWVzKTtcbiAgfVxuXG4gIGNsZWFyVmFsdWVzKCk6IHZvaWQge1xuICAgIHRoaXMuc2V0VmFsdWVzKFtdKTtcbiAgfVxuXG4gIHNldFZhbHVlcyh2YWx1ZXM6IFRbXSk6IHZvaWQge1xuICAgIC8vIFVzZSB0byBmaWx0ZXIgbm9uLXVuaXF1ZSB2YWx1ZXMuXG4gICAgaWYgKHRoaXMuaGFzaEZvclZhbHVlKSB7XG4gICAgICB2YWx1ZXMgPSBmaWx0ZXJVbmlxdWVWYWx1ZXModmFsdWVzLCB0aGlzLmhhc2hGb3JWYWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGlja09ubHlPbmUpIHtcbiAgICAgIHZhbHVlcyA9IFtsYXN0VmFsdWUodmFsdWVzKV0uZmlsdGVyKCh4KSA9PiB4ICE9IG51bGwpO1xuICAgIH1cblxuICAgIHRoaXMuX3NldFZhbHVlT25Gb3JtQ29udHJvbCh2YWx1ZXMpO1xuICB9XG5cbiAgLy8gTUFSSzogSW50ZXJuYWxcbiAgcHJvdGVjdGVkIF9nZXRWYWx1ZU9uRm9ybUNvbnRyb2wodmFsdWVPbkZvcm1Db250cm9sOiBBcnJheU9yVmFsdWU8VD4pOiBUW10ge1xuICAgIGNvbnN0IHZhbHVlOiBUW10gPSB2YWx1ZU9uRm9ybUNvbnRyb2wgIT0gbnVsbCA/IGFzQXJyYXkodmFsdWVPbkZvcm1Db250cm9sKSA6IFtdOyAvLyBBbHdheXMgcmV0dXJuIGFuIGFycmF5LlxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfc2V0VmFsdWVPbkZvcm1Db250cm9sKHZhbHVlczogVFtdKTogdm9pZCB7XG4gICAgbGV0IG5ld1ZhbHVlOiBUIHwgVFtdID0gdmFsdWVzO1xuXG4gICAgaWYgKCF0aGlzLmFzQXJyYXlWYWx1ZSkge1xuICAgICAgbmV3VmFsdWUgPSBbdmFsdWVzWzBdXS5maWx0ZXIoKHgpID0+IHggIT0gbnVsbClbMF07XG4gICAgfVxuXG4gICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZShuZXdWYWx1ZSk7XG4gICAgdGhpcy5mb3JtQ29udHJvbC5tYXJrQXNEaXJ0eSgpO1xuICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import { arrayToMap, separateValues } from '@dereekb/util';
|
|
2
|
-
import { of, switchMap, map } from 'rxjs';
|
|
3
|
-
import { formlyField, propsAndConfigForFieldConfig } from '../../field';
|
|
4
|
-
/**
|
|
5
|
-
* Used to create a SearchableValueFieldDisplayFn function that will retrieve the metadata for items that are missing their metadata so they can be displayed properly.
|
|
6
|
-
*
|
|
7
|
-
* @param param0
|
|
8
|
-
* @returns
|
|
9
|
-
*/
|
|
10
|
-
export function makeMetaFilterSearchableFieldValueDisplayFn({ loadMetaForValues, makeDisplayForValues }) {
|
|
11
|
-
return (values) => {
|
|
12
|
-
const { included: loaded, excluded: needLoading } = separateValues(values, (x) => Boolean(x.meta));
|
|
13
|
-
let allValues;
|
|
14
|
-
if (needLoading.length > 0) {
|
|
15
|
-
const loadingResult = loadMetaForValues(needLoading);
|
|
16
|
-
allValues = loadingResult.pipe(map((result) => {
|
|
17
|
-
const resultMap = arrayToMap(result, (x) => x.value);
|
|
18
|
-
const mergedWithLoad = needLoading.map((x) => {
|
|
19
|
-
const id = x.value;
|
|
20
|
-
const loadedItem = resultMap.get(id);
|
|
21
|
-
const anchor = x.anchor ?? loadedItem?.anchor;
|
|
22
|
-
const meta = loadedItem?.meta;
|
|
23
|
-
return {
|
|
24
|
-
...x,
|
|
25
|
-
anchor,
|
|
26
|
-
meta
|
|
27
|
-
};
|
|
28
|
-
});
|
|
29
|
-
return mergedWithLoad;
|
|
30
|
-
}), map((result) => [...loaded, ...result]));
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
allValues = of(loaded);
|
|
34
|
-
}
|
|
35
|
-
return allValues.pipe(switchMap(makeDisplayForValues));
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
export function searchableStringChipField(config) {
|
|
39
|
-
return searchableChipField({
|
|
40
|
-
...config,
|
|
41
|
-
allowStringValues: true
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
export function searchableChipField(config) {
|
|
45
|
-
const { key, placeholder, materialFormField } = config;
|
|
46
|
-
return formlyField({
|
|
47
|
-
key,
|
|
48
|
-
type: 'searchablechipfield',
|
|
49
|
-
...propsAndConfigForFieldConfig(config, {
|
|
50
|
-
...materialFormField,
|
|
51
|
-
...config,
|
|
52
|
-
placeholder: placeholder ?? 'Add...',
|
|
53
|
-
autocomplete: false
|
|
54
|
-
})
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
export function searchableTextField(config) {
|
|
58
|
-
const { key, materialFormField } = config;
|
|
59
|
-
return formlyField({
|
|
60
|
-
key,
|
|
61
|
-
type: 'searchabletextfield',
|
|
62
|
-
...propsAndConfigForFieldConfig(config, {
|
|
63
|
-
...materialFormField,
|
|
64
|
-
...config,
|
|
65
|
-
autocomplete: false
|
|
66
|
-
})
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoYWJsZS5maWVsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL3NyYy9saWIvZm9ybWx5L2ZpZWxkL3NlbGVjdGlvbi9zZWFyY2hhYmxlL3NlYXJjaGFibGUuZmllbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBaUMsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFGLE9BQU8sRUFBbUIsRUFBRSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0QsT0FBTyxFQUEyQixXQUFXLEVBQUUsNEJBQTRCLEVBQTZELE1BQU0sYUFBYSxDQUFDO0FBSzVKOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLDJDQUEyQyxDQUEyRCxFQUFFLGlCQUFpQixFQUFFLG9CQUFvQixFQUFrUDtJQUMvWSxPQUFPLENBQUMsTUFBeUMsRUFBRSxFQUFFO1FBQ25ELE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsR0FBRyxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDbkcsSUFBSSxTQUF3RCxDQUFDO1FBRTdELElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMzQixNQUFNLGFBQWEsR0FBRyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNyRCxTQUFTLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FDNUIsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7Z0JBQ2IsTUFBTSxTQUFTLEdBQW1ELFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFFckcsTUFBTSxjQUFjLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO29CQUMzQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDO29CQUNuQixNQUFNLFVBQVUsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUNyQyxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsTUFBTSxJQUFJLFVBQVUsRUFBRSxNQUFNLENBQUM7b0JBQzlDLE1BQU0sSUFBSSxHQUFhLFVBQVUsRUFBRSxJQUFJLENBQUM7b0JBRXhDLE9BQU87d0JBQ0wsR0FBRyxDQUFDO3dCQUNKLE1BQU07d0JBQ04sSUFBSTtxQkFDTCxDQUFDO2dCQUNKLENBQUMsQ0FBQyxDQUFDO2dCQUVILE9BQU8sY0FBYyxDQUFDO1lBQ3hCLENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQ3hDLENBQUM7UUFDSixDQUFDO2FBQU0sQ0FBQztZQUNOLFNBQVMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekIsQ0FBQztRQUVELE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUMsQ0FBQztBQUNKLENBQUM7QUFLRCxNQUFNLFVBQVUseUJBQXlCLENBQWMsTUFBMEM7SUFDL0YsT0FBTyxtQkFBbUIsQ0FBQztRQUN6QixHQUFHLE1BQU07UUFDVCxpQkFBaUIsRUFBRSxJQUFJO0tBQ3hCLENBQUMsQ0FBQztBQUNMLENBQUM7QUFJRCxNQUFNLFVBQVUsbUJBQW1CLENBQXdELE1BQTBDO0lBQ25JLE1BQU0sRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLEdBQUcsTUFBTSxDQUFDO0lBQ3ZELE9BQU8sV0FBVyxDQUFDO1FBQ2pCLEdBQUc7UUFDSCxJQUFJLEVBQUUscUJBQXFCO1FBQzNCLEdBQUcsNEJBQTRCLENBQUMsTUFBTSxFQUFFO1lBQ3RDLEdBQUcsaUJBQWlCO1lBQ3BCLEdBQUcsTUFBTTtZQUNULFdBQVcsRUFBRSxXQUFXLElBQUksUUFBUTtZQUNwQyxZQUFZLEVBQUUsS0FBSztTQUNwQixDQUFDO0tBQ0gsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUtELE1BQU0sVUFBVSxtQkFBbUIsQ0FBd0QsTUFBMEM7SUFDbkksTUFBTSxFQUFFLEdBQUcsRUFBRSxpQkFBaUIsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUMxQyxPQUFPLFdBQVcsQ0FBQztRQUNqQixHQUFHO1FBQ0gsSUFBSSxFQUFFLHFCQUFxQjtRQUMzQixHQUFHLDRCQUE0QixDQUFDLE1BQU0sRUFBRTtZQUN0QyxHQUFHLGlCQUFpQjtZQUNwQixHQUFHLE1BQU07WUFDVCxZQUFZLEVBQUUsS0FBSztTQUNwQixDQUFDO0tBQ0gsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFycmF5VG9NYXAsIHR5cGUgTWF5YmUsIHR5cGUgUHJpbWF0aXZlS2V5LCBzZXBhcmF0ZVZhbHVlcyB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgdHlwZSBGb3JtbHlGaWVsZENvbmZpZyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHsgdHlwZSBPYnNlcnZhYmxlLCBvZiwgc3dpdGNoTWFwLCBtYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHR5cGUgTGFiZWxlZEZpZWxkQ29uZmlnLCBmb3JtbHlGaWVsZCwgcHJvcHNBbmRDb25maWdGb3JGaWVsZENvbmZpZywgdHlwZSBEZXNjcmlwdGlvbkZpZWxkQ29uZmlnLCB0eXBlIE1hdGVyaWFsRm9ybUZpZWxkQ29uZmlnIH0gZnJvbSAnLi4vLi4vZmllbGQnO1xuaW1wb3J0IHsgdHlwZSBTZWFyY2hhYmxlVmFsdWVGaWVsZERpc3BsYXlGbiwgdHlwZSBTZWFyY2hhYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZSwgdHlwZSBTZWFyY2hhYmxlVmFsdWVGaWVsZFZhbHVlIH0gZnJvbSAnLi9zZWFyY2hhYmxlJztcbmltcG9ydCB7IHR5cGUgU2VhcmNoYWJsZUNoaXBWYWx1ZUZpZWxkc0ZpZWxkUHJvcHMgfSBmcm9tICcuL3NlYXJjaGFibGUuY2hpcC5maWVsZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgdHlwZSBTZWFyY2hhYmxlVGV4dFZhbHVlRmllbGRzRmllbGRQcm9wcyB9IGZyb20gJy4vc2VhcmNoYWJsZS50ZXh0LmZpZWxkLmNvbXBvbmVudCc7XG5cbi8qKlxuICogVXNlZCB0byBjcmVhdGUgYSBTZWFyY2hhYmxlVmFsdWVGaWVsZERpc3BsYXlGbiBmdW5jdGlvbiB0aGF0IHdpbGwgcmV0cmlldmUgdGhlIG1ldGFkYXRhIGZvciBpdGVtcyB0aGF0IGFyZSBtaXNzaW5nIHRoZWlyIG1ldGFkYXRhIHNvIHRoZXkgY2FuIGJlIGRpc3BsYXllZCBwcm9wZXJseS5cbiAqXG4gKiBAcGFyYW0gcGFyYW0wXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gbWFrZU1ldGFGaWx0ZXJTZWFyY2hhYmxlRmllbGRWYWx1ZURpc3BsYXlGbjxUIGV4dGVuZHMgc3RyaW5nIHwgbnVtYmVyID0gc3RyaW5nIHwgbnVtYmVyLCBNID0gdW5rbm93bj4oeyBsb2FkTWV0YUZvclZhbHVlcywgbWFrZURpc3BsYXlGb3JWYWx1ZXMgfTogeyBsb2FkTWV0YUZvclZhbHVlczogKHZhbHVlczogU2VhcmNoYWJsZVZhbHVlRmllbGRWYWx1ZTxULCBNPltdKSA9PiBPYnNlcnZhYmxlPFNlYXJjaGFibGVWYWx1ZUZpZWxkVmFsdWU8VCwgTT5bXT47IG1ha2VEaXNwbGF5Rm9yVmFsdWVzOiAodmFsdWVzOiBTZWFyY2hhYmxlVmFsdWVGaWVsZFZhbHVlPFQsIE0+W10pID0+IE9ic2VydmFibGU8U2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWU8VCwgTT5bXT4gfSk6IFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheUZuPFQsIE0+IHtcbiAgcmV0dXJuICh2YWx1ZXM6IFNlYXJjaGFibGVWYWx1ZUZpZWxkVmFsdWU8VCwgTT5bXSkgPT4ge1xuICAgIGNvbnN0IHsgaW5jbHVkZWQ6IGxvYWRlZCwgZXhjbHVkZWQ6IG5lZWRMb2FkaW5nIH0gPSBzZXBhcmF0ZVZhbHVlcyh2YWx1ZXMsICh4KSA9PiBCb29sZWFuKHgubWV0YSkpO1xuICAgIGxldCBhbGxWYWx1ZXM6IE9ic2VydmFibGU8U2VhcmNoYWJsZVZhbHVlRmllbGRWYWx1ZTxULCBNPltdPjtcblxuICAgIGlmIChuZWVkTG9hZGluZy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBsb2FkaW5nUmVzdWx0ID0gbG9hZE1ldGFGb3JWYWx1ZXMobmVlZExvYWRpbmcpO1xuICAgICAgYWxsVmFsdWVzID0gbG9hZGluZ1Jlc3VsdC5waXBlKFxuICAgICAgICBtYXAoKHJlc3VsdCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlc3VsdE1hcDogTWFwPE1heWJlPFQ+LCBTZWFyY2hhYmxlVmFsdWVGaWVsZFZhbHVlPFQsIE0+PiA9IGFycmF5VG9NYXAocmVzdWx0LCAoeCkgPT4geC52YWx1ZSk7XG5cbiAgICAgICAgICBjb25zdCBtZXJnZWRXaXRoTG9hZCA9IG5lZWRMb2FkaW5nLm1hcCgoeCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaWQgPSB4LnZhbHVlO1xuICAgICAgICAgICAgY29uc3QgbG9hZGVkSXRlbSA9IHJlc3VsdE1hcC5nZXQoaWQpO1xuICAgICAgICAgICAgY29uc3QgYW5jaG9yID0geC5hbmNob3IgPz8gbG9hZGVkSXRlbT8uYW5jaG9yO1xuICAgICAgICAgICAgY29uc3QgbWV0YTogTWF5YmU8TT4gPSBsb2FkZWRJdGVtPy5tZXRhO1xuXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAuLi54LFxuICAgICAgICAgICAgICBhbmNob3IsXG4gICAgICAgICAgICAgIG1ldGFcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICByZXR1cm4gbWVyZ2VkV2l0aExvYWQ7XG4gICAgICAgIH0pLFxuICAgICAgICBtYXAoKHJlc3VsdCkgPT4gWy4uLmxvYWRlZCwgLi4ucmVzdWx0XSlcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFsbFZhbHVlcyA9IG9mKGxvYWRlZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFsbFZhbHVlcy5waXBlKHN3aXRjaE1hcChtYWtlRGlzcGxheUZvclZhbHVlcykpO1xuICB9O1xufVxuXG4vLyBNQVJLOiBDaGlwc1xuZXhwb3J0IHR5cGUgU3RyaW5nU2VhcmNoYWJsZUNoaXBGaWVsZENvbmZpZzxNID0gdW5rbm93bj4gPSBPbWl0PFNlYXJjaGFibGVDaGlwRmllbGRDb25maWc8c3RyaW5nLCBNPiwgJ2FsbG93U3RyaW5nVmFsdWVzJz47XG5cbmV4cG9ydCBmdW5jdGlvbiBzZWFyY2hhYmxlU3RyaW5nQ2hpcEZpZWxkPE0gPSB1bmtub3duPihjb25maWc6IFN0cmluZ1NlYXJjaGFibGVDaGlwRmllbGRDb25maWc8TT4pOiBGb3JtbHlGaWVsZENvbmZpZyB7XG4gIHJldHVybiBzZWFyY2hhYmxlQ2hpcEZpZWxkKHtcbiAgICAuLi5jb25maWcsXG4gICAgYWxsb3dTdHJpbmdWYWx1ZXM6IHRydWVcbiAgfSk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VhcmNoYWJsZUNoaXBGaWVsZENvbmZpZzxUID0gdW5rbm93biwgTSA9IHVua25vd24sIEggZXh0ZW5kcyBQcmltYXRpdmVLZXkgPSBQcmltYXRpdmVLZXk+IGV4dGVuZHMgTGFiZWxlZEZpZWxkQ29uZmlnLCBEZXNjcmlwdGlvbkZpZWxkQ29uZmlnLCBNYXRlcmlhbEZvcm1GaWVsZENvbmZpZywgU2VhcmNoYWJsZUNoaXBWYWx1ZUZpZWxkc0ZpZWxkUHJvcHM8VCwgTSwgSD4ge31cblxuZXhwb3J0IGZ1bmN0aW9uIHNlYXJjaGFibGVDaGlwRmllbGQ8VCwgTSA9IHVua25vd24sIEggZXh0ZW5kcyBQcmltYXRpdmVLZXkgPSBQcmltYXRpdmVLZXk+KGNvbmZpZzogU2VhcmNoYWJsZUNoaXBGaWVsZENvbmZpZzxULCBNLCBIPik6IEZvcm1seUZpZWxkQ29uZmlnIHtcbiAgY29uc3QgeyBrZXksIHBsYWNlaG9sZGVyLCBtYXRlcmlhbEZvcm1GaWVsZCB9ID0gY29uZmlnO1xuICByZXR1cm4gZm9ybWx5RmllbGQoe1xuICAgIGtleSxcbiAgICB0eXBlOiAnc2VhcmNoYWJsZWNoaXBmaWVsZCcsXG4gICAgLi4ucHJvcHNBbmRDb25maWdGb3JGaWVsZENvbmZpZyhjb25maWcsIHtcbiAgICAgIC4uLm1hdGVyaWFsRm9ybUZpZWxkLFxuICAgICAgLi4uY29uZmlnLFxuICAgICAgcGxhY2Vob2xkZXI6IHBsYWNlaG9sZGVyID8/ICdBZGQuLi4nLFxuICAgICAgYXV0b2NvbXBsZXRlOiBmYWxzZVxuICAgIH0pXG4gIH0pO1xufVxuXG4vLyBNQVJLOiBUZXh0XG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaGFibGVUZXh0RmllbGRDb25maWc8VCA9IHVua25vd24sIE0gPSB1bmtub3duLCBIIGV4dGVuZHMgUHJpbWF0aXZlS2V5ID0gUHJpbWF0aXZlS2V5PiBleHRlbmRzIExhYmVsZWRGaWVsZENvbmZpZywgRGVzY3JpcHRpb25GaWVsZENvbmZpZywgTWF0ZXJpYWxGb3JtRmllbGRDb25maWcsIFNlYXJjaGFibGVUZXh0VmFsdWVGaWVsZHNGaWVsZFByb3BzPFQsIE0sIEg+IHt9XG5cbmV4cG9ydCBmdW5jdGlvbiBzZWFyY2hhYmxlVGV4dEZpZWxkPFQsIE0gPSB1bmtub3duLCBIIGV4dGVuZHMgUHJpbWF0aXZlS2V5ID0gUHJpbWF0aXZlS2V5Pihjb25maWc6IFNlYXJjaGFibGVUZXh0RmllbGRDb25maWc8VCwgTSwgSD4pOiBGb3JtbHlGaWVsZENvbmZpZyB7XG4gIGNvbnN0IHsga2V5LCBtYXRlcmlhbEZvcm1GaWVsZCB9ID0gY29uZmlnO1xuICByZXR1cm4gZm9ybWx5RmllbGQoe1xuICAgIGtleSxcbiAgICB0eXBlOiAnc2VhcmNoYWJsZXRleHRmaWVsZCcsXG4gICAgLi4ucHJvcHNBbmRDb25maWdGb3JGaWVsZENvbmZpZyhjb25maWcsIHtcbiAgICAgIC4uLm1hdGVyaWFsRm9ybUZpZWxkLFxuICAgICAgLi4uY29uZmlnLFxuICAgICAgYXV0b2NvbXBsZXRlOiBmYWxzZVxuICAgIH0pXG4gIH0pO1xufVxuIl19
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { FormlyModule } from '@ngx-formly/core';
|
|
3
|
-
import { DbxSearchableChipFieldComponent } from './searchable.chip.field.component';
|
|
4
|
-
import { DbxDefaultSearchableFieldDisplayComponent, DbxSearchableFieldAutocompleteItemComponent } from './searchable.field.autocomplete.item.component';
|
|
5
|
-
import { DbxSearchableTextFieldComponent } from './searchable.text.field.component';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "@ngx-formly/core";
|
|
8
|
-
const importsAndExports = [DbxSearchableChipFieldComponent, DbxSearchableTextFieldComponent, DbxSearchableFieldAutocompleteItemComponent, DbxDefaultSearchableFieldDisplayComponent];
|
|
9
|
-
export class DbxFormFormlySearchableFieldModule {
|
|
10
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFormFormlySearchableFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
11
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: DbxFormFormlySearchableFieldModule, imports: [DbxSearchableChipFieldComponent, DbxSearchableTextFieldComponent, DbxSearchableFieldAutocompleteItemComponent, DbxDefaultSearchableFieldDisplayComponent, i1.FormlyModule], exports: [DbxSearchableChipFieldComponent, DbxSearchableTextFieldComponent, DbxSearchableFieldAutocompleteItemComponent, DbxDefaultSearchableFieldDisplayComponent] });
|
|
12
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFormFormlySearchableFieldModule, imports: [importsAndExports, FormlyModule.forChild({
|
|
13
|
-
types: [
|
|
14
|
-
{ name: 'searchablechipfield', component: DbxSearchableChipFieldComponent, wrappers: ['form-field'] },
|
|
15
|
-
{ name: 'searchabletextfield', component: DbxSearchableTextFieldComponent, wrappers: ['form-field'] }
|
|
16
|
-
]
|
|
17
|
-
})] });
|
|
18
|
-
}
|
|
19
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFormFormlySearchableFieldModule, decorators: [{
|
|
20
|
-
type: NgModule,
|
|
21
|
-
args: [{
|
|
22
|
-
imports: [
|
|
23
|
-
...importsAndExports,
|
|
24
|
-
FormlyModule.forChild({
|
|
25
|
-
types: [
|
|
26
|
-
{ name: 'searchablechipfield', component: DbxSearchableChipFieldComponent, wrappers: ['form-field'] },
|
|
27
|
-
{ name: 'searchabletextfield', component: DbxSearchableTextFieldComponent, wrappers: ['form-field'] }
|
|
28
|
-
]
|
|
29
|
-
})
|
|
30
|
-
],
|
|
31
|
-
exports: importsAndExports
|
|
32
|
-
}]
|
|
33
|
-
}] });
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoYWJsZS5maWVsZC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9zcmMvbGliL2Zvcm1seS9maWVsZC9zZWxlY3Rpb24vc2VhcmNoYWJsZS9zZWFyY2hhYmxlLmZpZWxkLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNwRixPQUFPLEVBQUUseUNBQXlDLEVBQUUsMkNBQTJDLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN4SixPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7O0FBRXBGLE1BQU0saUJBQWlCLEdBQUcsQ0FBQywrQkFBK0IsRUFBRSwrQkFBK0IsRUFBRSwyQ0FBMkMsRUFBRSx5Q0FBeUMsQ0FBQyxDQUFDO0FBY3JMLE1BQU0sT0FBTyxrQ0FBa0M7d0dBQWxDLGtDQUFrQzt5R0FBbEMsa0NBQWtDLFlBZHBCLCtCQUErQixFQUFFLCtCQUErQixFQUFFLDJDQUEyQyxFQUFFLHlDQUF5Qyw4QkFBeEosK0JBQStCLEVBQUUsK0JBQStCLEVBQUUsMkNBQTJDLEVBQUUseUNBQXlDO3lHQWN0SyxrQ0FBa0MsWUFWeEMsaUJBQWlCLEVBQ3BCLFlBQVksQ0FBQyxRQUFRLENBQUM7Z0JBQ3BCLEtBQUssRUFBRTtvQkFDTCxFQUFFLElBQUksRUFBRSxxQkFBcUIsRUFBRSxTQUFTLEVBQUUsK0JBQStCLEVBQUUsUUFBUSxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUU7b0JBQ3JHLEVBQUUsSUFBSSxFQUFFLHFCQUFxQixFQUFFLFNBQVMsRUFBRSwrQkFBK0IsRUFBRSxRQUFRLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRTtpQkFDdEc7YUFDRixDQUFDOzs0RkFJTyxrQ0FBa0M7a0JBWjlDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLEdBQUcsaUJBQWlCO3dCQUNwQixZQUFZLENBQUMsUUFBUSxDQUFDOzRCQUNwQixLQUFLLEVBQUU7Z0NBQ0wsRUFBRSxJQUFJLEVBQUUscUJBQXFCLEVBQUUsU0FBUyxFQUFFLCtCQUErQixFQUFFLFFBQVEsRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFFO2dDQUNyRyxFQUFFLElBQUksRUFBRSxxQkFBcUIsRUFBRSxTQUFTLEVBQUUsK0JBQStCLEVBQUUsUUFBUSxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUU7NkJBQ3RHO3lCQUNGLENBQUM7cUJBQ0g7b0JBQ0QsT0FBTyxFQUFFLGlCQUFpQjtpQkFDM0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybWx5TW9kdWxlIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBEYnhTZWFyY2hhYmxlQ2hpcEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi9zZWFyY2hhYmxlLmNoaXAuZmllbGQuY29tcG9uZW50JztcbmltcG9ydCB7IERieERlZmF1bHRTZWFyY2hhYmxlRmllbGREaXNwbGF5Q29tcG9uZW50LCBEYnhTZWFyY2hhYmxlRmllbGRBdXRvY29tcGxldGVJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9zZWFyY2hhYmxlLmZpZWxkLmF1dG9jb21wbGV0ZS5pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYnhTZWFyY2hhYmxlVGV4dEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi9zZWFyY2hhYmxlLnRleHQuZmllbGQuY29tcG9uZW50JztcblxuY29uc3QgaW1wb3J0c0FuZEV4cG9ydHMgPSBbRGJ4U2VhcmNoYWJsZUNoaXBGaWVsZENvbXBvbmVudCwgRGJ4U2VhcmNoYWJsZVRleHRGaWVsZENvbXBvbmVudCwgRGJ4U2VhcmNoYWJsZUZpZWxkQXV0b2NvbXBsZXRlSXRlbUNvbXBvbmVudCwgRGJ4RGVmYXVsdFNlYXJjaGFibGVGaWVsZERpc3BsYXlDb21wb25lbnRdO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgLi4uaW1wb3J0c0FuZEV4cG9ydHMsXG4gICAgRm9ybWx5TW9kdWxlLmZvckNoaWxkKHtcbiAgICAgIHR5cGVzOiBbXG4gICAgICAgIHsgbmFtZTogJ3NlYXJjaGFibGVjaGlwZmllbGQnLCBjb21wb25lbnQ6IERieFNlYXJjaGFibGVDaGlwRmllbGRDb21wb25lbnQsIHdyYXBwZXJzOiBbJ2Zvcm0tZmllbGQnXSB9LFxuICAgICAgICB7IG5hbWU6ICdzZWFyY2hhYmxldGV4dGZpZWxkJywgY29tcG9uZW50OiBEYnhTZWFyY2hhYmxlVGV4dEZpZWxkQ29tcG9uZW50LCB3cmFwcGVyczogWydmb3JtLWZpZWxkJ10gfVxuICAgICAgXVxuICAgIH0pXG4gIF0sXG4gIGV4cG9ydHM6IGltcG9ydHNBbmRFeHBvcnRzXG59KVxuZXhwb3J0IGNsYXNzIERieEZvcm1Gb3JtbHlTZWFyY2hhYmxlRmllbGRNb2R1bGUge31cbiJdfQ==
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoYWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL3NyYy9saWIvZm9ybWx5L2ZpZWxkL3NlbGVjdGlvbi9zZWFyY2hhYmxlL3NlYXJjaGFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgTWFwRnVuY3Rpb24sIHR5cGUgUHJpbWF0aXZlS2V5IH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyB0eXBlIERieEluamVjdGlvbkNvbXBvbmVudENvbmZpZywgdHlwZSBDbGlja2FibGVBbmNob3IgfSBmcm9tICdAZGVyZWVrYi9kYngtY29yZSc7XG5pbXBvcnQgeyB0eXBlIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHR5cGUgU2VsZWN0aW9uRGlzcGxheVZhbHVlLCB0eXBlIFNlbGVjdGlvblZhbHVlLCB0eXBlIFNlbGVjdGlvblZhbHVlSGFzaEZ1bmN0aW9uIH0gZnJvbSAnLi4vc2VsZWN0aW9uJztcblxuZXhwb3J0IGludGVyZmFjZSBTZWFyY2hhYmxlVmFsdWVGaWVsZFZhbHVlPFQsIE0gPSB1bmtub3duPiBleHRlbmRzIFNlbGVjdGlvblZhbHVlPFQsIE0+IHtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIGFuY2hvciBtZXRhZGF0YSBvbiB0aGUgZmllbGQuXG4gICAqL1xuICByZWFkb25seSBhbmNob3I/OiBDbGlja2FibGVBbmNob3I7XG59XG5cbi8qKlxuICogRGlzcGxheWVkIHZhbHVlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0gPSB1bmtub3duPiBleHRlbmRzIFNlbGVjdGlvbkRpc3BsYXlWYWx1ZTxULCBNPiwgU2VhcmNoYWJsZVZhbHVlRmllbGRWYWx1ZTxULCBNPiB7XG4gIC8qKlxuICAgKiBEaXNwbGF5IG92ZXJyaWRlIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IGRpc3BsYXk/OiBQYXJ0aWFsPERieEluamVjdGlvbkNvbXBvbmVudENvbmZpZz47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlndXJlZFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0gPSB1bmtub3duPiBleHRlbmRzIE9taXQ8U2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWU8VCwgTT4sICdkaXNwbGF5Jz4ge1xuICByZWFkb25seSBkaXNwbGF5OiBEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWc7XG59XG5cbi8qKlxuICogU2VhcmNoYWJsZVZhbHVlRmllbGQgZnVuY3Rpb24gZm9yIHNlYXJjaGluZyB2YWx1ZXMuXG4gKi9cbmV4cG9ydCB0eXBlIFNlYXJjaGFibGVWYWx1ZUZpZWxkU3RyaW5nU2VhcmNoRm48VCwgTSA9IHVua25vd24+ID0gTWFwRnVuY3Rpb248c3RyaW5nLCBPYnNlcnZhYmxlPFNlYXJjaGFibGVWYWx1ZUZpZWxkVmFsdWU8VCwgTT5bXT4+O1xuXG4vKipcbiAqIFNlYXJjaGFibGVWYWx1ZUZpZWxkIGZ1bmN0aW9uIHRoYXQgYWxsb3dzIHRoZSB2YWx1ZXMgYSBjaGFuY2UgdG8gZ28gdGhyb3VnaCBhbm90aGVyIG9ic2VydmFibGUgZm9yIHVua25vd24gY2hhbmdlcy5cbiAqXG4gKiBBbiBleGFtcGxlIHVzYWdlIGlzIHBhc3NpbmcgYW4gZW1haWwgYWRkcmVzcywgdGhlbiBnZXR0aW5nIGJhY2sgbWV0YWRhdGEgdGhhdCBjYW4gYmUgdXNlZCB0byBzaG93IHRoZSB2YWx1ZXMuXG4gKlxuICogVGhlIHZhbHVlIGl0c2VsZiBzaG91bGQgbm90IGNoYW5nZS4gQWxsIG90aGVyIGZpZWxkcyBvbiB0aGUgdmFsdWUgbWF5IGNoYW5nZSwgaG93ZXZlci5cbiAqL1xuZXhwb3J0IHR5cGUgU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5Rm48VCwgTSA9IHVua25vd24+ID0gTWFwRnVuY3Rpb248U2VhcmNoYWJsZVZhbHVlRmllbGRWYWx1ZTxULCBNPltdLCBPYnNlcnZhYmxlPFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0+W10+PjtcblxuLyoqXG4gKiBTZWFyY2hhYmxlVmFsdWVGaWVsZCBmdW5jdGlvbiBmb3Igc2V0dGluZyBhbmNob3IgdmFsdWVzIG9uIGEgZmllbGQgdmFsdWUuXG4gKi9cbmV4cG9ydCB0eXBlIFNlYXJjaGFibGVWYWx1ZUZpZWxkQW5jaG9yRm48VCwgTSA9IHVua25vd24+ID0gTWFwRnVuY3Rpb248U2VhcmNoYWJsZVZhbHVlRmllbGRWYWx1ZTxULCBNPiwgQ2xpY2thYmxlQW5jaG9yPjtcblxuZXhwb3J0IHR5cGUgU2VhcmNoYWJsZVZhbHVlRmllbGRIYXNoRm48VCwgSCBleHRlbmRzIFByaW1hdGl2ZUtleSA9IFByaW1hdGl2ZUtleT4gPSBTZWxlY3Rpb25WYWx1ZUhhc2hGdW5jdGlvbjxULCBIPjtcbiJdfQ==
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, computed } from '@angular/core';
|
|
2
|
-
import { MatAutocompleteModule } from '@angular/material/autocomplete';
|
|
3
|
-
import { AbstractDbxSearchableValueFieldDirective } from './searchable.field.directive';
|
|
4
|
-
import { map, shareReplay } from 'rxjs';
|
|
5
|
-
import { toSignal } from '@angular/core/rxjs-interop';
|
|
6
|
-
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
7
|
-
import { MatChipsModule } from '@angular/material/chips';
|
|
8
|
-
import { MatIconModule } from '@angular/material/icon';
|
|
9
|
-
import { DbxLoadingModule } from '@dereekb/dbx-web';
|
|
10
|
-
import { DbxSearchableFieldAutocompleteItemComponent } from './searchable.field.autocomplete.item.component';
|
|
11
|
-
import { NgClass } from '@angular/common';
|
|
12
|
-
import { MatInput } from '@angular/material/input';
|
|
13
|
-
import { MatOptionModule } from '@angular/material/core';
|
|
14
|
-
import * as i0 from "@angular/core";
|
|
15
|
-
import * as i1 from "@angular/forms";
|
|
16
|
-
import * as i2 from "@dereekb/dbx-web";
|
|
17
|
-
import * as i3 from "@angular/material/core";
|
|
18
|
-
import * as i4 from "@angular/material/autocomplete";
|
|
19
|
-
/**
|
|
20
|
-
* Display component for selecting a single item/value.
|
|
21
|
-
*/
|
|
22
|
-
export class DbxSearchableTextFieldComponent extends AbstractDbxSearchableValueFieldDirective {
|
|
23
|
-
allowSyncValueToInput = true;
|
|
24
|
-
selectedDisplayValue$ = this.displayValues$.pipe(map((x) => x[0]), shareReplay(1));
|
|
25
|
-
selectedDisplayValueSignal = toSignal(this.selectedDisplayValue$);
|
|
26
|
-
hasValueSignal = computed(() => Boolean(this.selectedDisplayValueSignal()));
|
|
27
|
-
showSelectedDisplayValueSignal = computed(() => this.showSelectedValue && this.hasValueSignal());
|
|
28
|
-
get searchableField() {
|
|
29
|
-
return this.props;
|
|
30
|
-
}
|
|
31
|
-
get showSelectedValue() {
|
|
32
|
-
return this.searchableField.showSelectedValue ?? !this.allowStringValues; // Show the selected value only if string values are allowed.
|
|
33
|
-
}
|
|
34
|
-
get multiSelect() {
|
|
35
|
-
return false;
|
|
36
|
-
}
|
|
37
|
-
/*
|
|
38
|
-
private _clearInputSub = new SubscriptionObject();
|
|
39
|
-
|
|
40
|
-
override ngOnInit(): void {
|
|
41
|
-
super.ngOnInit();
|
|
42
|
-
|
|
43
|
-
this._clearInputSub.subscription = this.inputValue$.pipe(skipWhile((x) => !x)).subscribe((x) => {
|
|
44
|
-
if (!x) {
|
|
45
|
-
// this.clearValues();
|
|
46
|
-
}
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
override ngOnDestroy(): void {
|
|
51
|
-
super.ngOnDestroy();
|
|
52
|
-
this._clearInputSub.destroy();
|
|
53
|
-
}
|
|
54
|
-
*/
|
|
55
|
-
selected(event) {
|
|
56
|
-
const value = event.option.value;
|
|
57
|
-
console.log('selected', value);
|
|
58
|
-
if (value._clear) {
|
|
59
|
-
this.clearValues();
|
|
60
|
-
}
|
|
61
|
-
else if (!value._ignore) {
|
|
62
|
-
this.addWithDisplayValue(value);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxSearchableTextFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
66
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DbxSearchableTextFieldComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<div class=\"dbx-searchable-text-field\" [ngClass]=\"{ 'dbx-searchable-text-field-has-value': hasValueSignal(), 'dbx-searchable-text-field-show-value': showSelectedValue }\">\n <!-- Result View -->\n @if (showSelectedDisplayValueSignal()) {\n <div class=\"dbx-searchable-text-field-value mat-option mat-option-text\">\n <dbx-searchable-field-autocomplete-item [displayValue]=\"selectedDisplayValueSignal()!\"></dbx-searchable-field-autocomplete-item>\n </div>\n }\n <div class=\"dbx-searchable-text-field-input\">\n @if (searchLabel) {\n <div class=\"dbx-label\">{{ searchLabel }}</div>\n }\n <!-- View -->\n <input type=\"search\" [name]=\"name\" matInput #textInput [placeholder]=\"searchInputPlaceholder\" [formControl]=\"inputCtrl\" [matAutocomplete]=\"auto\" [matAutocompleteDisabled]=\"readonly || disabled\" autocomplete=\"{{ autocomplete }}\" />\n <div class=\"searchable-field-form-loading\">\n <dbx-loading [linear]=\"true\" [context]=\"searchContext\"></dbx-loading>\n </div>\n </div>\n</div>\n\n<!-- Autocomplete -->\n<mat-autocomplete class=\"dbx-searchable-text-field-autocomplete\" #auto (optionSelected)=\"selected($event)\">\n @for (displayValue of searchResultsSignal(); track displayValue.value) {\n <mat-option [value]=\"displayValue\">\n <dbx-searchable-field-autocomplete-item [displayValue]=\"displayValue\"></dbx-searchable-field-autocomplete-item>\n </mat-option>\n }\n <!-- If No Results -->\n @if (searchResultsSignal()?.length === 0) {\n @if (!isLoadingSearchResultsSignal()) {\n <mat-option value=\"\" disabled>\n <p class=\"dbx-clear-hint text-center\">No results found.</p>\n </mat-option>\n } @else {\n <mat-option value=\"\" disabled>\n <p class=\"dbx-clear-hint text-center\">Loading...</p>\n </mat-option>\n }\n }\n <!-- Add/Pick String Value -->\n @if (allowStringValues && inputValueSignal()) {\n <mat-option [value]=\"{ value: inputValueSignal() }\">\n <p class=\"dbx-clear-hint text-center\">\"{{ inputValueSignal() }}\"</p>\n </mat-option>\n }\n <!-- Show clear value -->\n @if (showClearValue && hasValueSignal()) {\n <mat-option value=\"\">\n <p class=\"dbx-clear-hint text-center\">Clear</p>\n </mat-option>\n }\n</mat-autocomplete>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: DbxLoadingModule }, { kind: "component", type: i2.DbxLoadingComponent, selector: "dbx-loading", inputs: ["padding", "show", "text", "mode", "color", "diameter", "linear", "loading", "error", "context"] }, { kind: "ngmodule", type: MatOptionModule }, { kind: "component", type: i3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i4.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i4.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: DbxSearchableFieldAutocompleteItemComponent, selector: "dbx-searchable-field-autocomplete-item", inputs: ["displayValue"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
67
|
-
}
|
|
68
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxSearchableTextFieldComponent, decorators: [{
|
|
69
|
-
type: Component,
|
|
70
|
-
args: [{ imports: [FormsModule, MatInput, NgClass, ReactiveFormsModule, DbxLoadingModule, MatOptionModule, MatAutocompleteModule, MatChipsModule, MatIconModule, DbxSearchableFieldAutocompleteItemComponent], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<div class=\"dbx-searchable-text-field\" [ngClass]=\"{ 'dbx-searchable-text-field-has-value': hasValueSignal(), 'dbx-searchable-text-field-show-value': showSelectedValue }\">\n <!-- Result View -->\n @if (showSelectedDisplayValueSignal()) {\n <div class=\"dbx-searchable-text-field-value mat-option mat-option-text\">\n <dbx-searchable-field-autocomplete-item [displayValue]=\"selectedDisplayValueSignal()!\"></dbx-searchable-field-autocomplete-item>\n </div>\n }\n <div class=\"dbx-searchable-text-field-input\">\n @if (searchLabel) {\n <div class=\"dbx-label\">{{ searchLabel }}</div>\n }\n <!-- View -->\n <input type=\"search\" [name]=\"name\" matInput #textInput [placeholder]=\"searchInputPlaceholder\" [formControl]=\"inputCtrl\" [matAutocomplete]=\"auto\" [matAutocompleteDisabled]=\"readonly || disabled\" autocomplete=\"{{ autocomplete }}\" />\n <div class=\"searchable-field-form-loading\">\n <dbx-loading [linear]=\"true\" [context]=\"searchContext\"></dbx-loading>\n </div>\n </div>\n</div>\n\n<!-- Autocomplete -->\n<mat-autocomplete class=\"dbx-searchable-text-field-autocomplete\" #auto (optionSelected)=\"selected($event)\">\n @for (displayValue of searchResultsSignal(); track displayValue.value) {\n <mat-option [value]=\"displayValue\">\n <dbx-searchable-field-autocomplete-item [displayValue]=\"displayValue\"></dbx-searchable-field-autocomplete-item>\n </mat-option>\n }\n <!-- If No Results -->\n @if (searchResultsSignal()?.length === 0) {\n @if (!isLoadingSearchResultsSignal()) {\n <mat-option value=\"\" disabled>\n <p class=\"dbx-clear-hint text-center\">No results found.</p>\n </mat-option>\n } @else {\n <mat-option value=\"\" disabled>\n <p class=\"dbx-clear-hint text-center\">Loading...</p>\n </mat-option>\n }\n }\n <!-- Add/Pick String Value -->\n @if (allowStringValues && inputValueSignal()) {\n <mat-option [value]=\"{ value: inputValueSignal() }\">\n <p class=\"dbx-clear-hint text-center\">\"{{ inputValueSignal() }}\"</p>\n </mat-option>\n }\n <!-- Show clear value -->\n @if (showClearValue && hasValueSignal()) {\n <mat-option value=\"\">\n <p class=\"dbx-clear-hint text-center\">Clear</p>\n </mat-option>\n }\n</mat-autocomplete>\n" }]
|
|
71
|
-
}] });
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoYWJsZS50ZXh0LmZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL3NyYy9saWIvZm9ybWx5L2ZpZWxkL3NlbGVjdGlvbi9zZWFyY2hhYmxlL3NlYXJjaGFibGUudGV4dC5maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9zcmMvbGliL2Zvcm1seS9maWVsZC9zZWxlY3Rpb24vc2VhcmNoYWJsZS9zZWFyY2hhYmxlLnRleHQuZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxxQkFBcUIsRUFBZ0MsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNyRyxPQUFPLEVBQUUsd0NBQXdDLEVBQW1DLE1BQU0sOEJBQThCLENBQUM7QUFDekgsT0FBTyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFeEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BELE9BQU8sRUFBRSwyQ0FBMkMsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQzdHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7QUFPekQ7O0dBRUc7QUFPSCxNQUFNLE9BQU8sK0JBQXVGLFNBQVEsd0NBQStGO0lBQ2hNLHFCQUFxQixHQUFHLElBQUksQ0FBQztJQUU3QixxQkFBcUIsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FDdkQsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDaEIsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7SUFFTywwQkFBMEIsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDbEUsY0FBYyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzVFLDhCQUE4QixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7SUFFMUcsSUFBYSxlQUFlO1FBQzFCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRUQsSUFBSSxpQkFBaUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGlCQUFpQixJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsNkRBQTZEO0lBQ3pJLENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDYixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7TUFpQkU7SUFFRixRQUFRLENBQUMsS0FBbUM7UUFDMUMsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFxRixDQUFDO1FBRWpILE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRS9CLElBQUssS0FBYSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyQixDQUFDO2FBQU0sSUFBSSxDQUFFLEtBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBNEMsQ0FBQyxDQUFDO1FBQ3pFLENBQUM7SUFDSCxDQUFDO3dHQXJEVSwrQkFBK0I7NEZBQS9CLCtCQUErQiwrRkM3QjVDLHN3RUFtREEsMkNEMUJZLFdBQVcsdVpBQUUsUUFBUSxpVUFBRSxPQUFPLG1GQUFFLG1CQUFtQixpTkFBRSxnQkFBZ0IsdU5BQUUsZUFBZSwrTEFBRSxxQkFBcUIsdXJCQUFFLGNBQWMsOEJBQUUsYUFBYSwrQkFBRSwyQ0FBMkM7OzRGQUl4TCwrQkFBK0I7a0JBTjNDLFNBQVM7OEJBRUMsQ0FBQyxXQUFXLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUscUJBQXFCLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSwyQ0FBMkMsQ0FBQyxtQkFDbkwsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRBdXRvY29tcGxldGVNb2R1bGUsIE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xuaW1wb3J0IHsgQWJzdHJhY3REYnhTZWFyY2hhYmxlVmFsdWVGaWVsZERpcmVjdGl2ZSwgU2VhcmNoYWJsZVZhbHVlRmllbGRzRmllbGRQcm9wcyB9IGZyb20gJy4vc2VhcmNoYWJsZS5maWVsZC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgbWFwLCBzaGFyZVJlcGxheSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUHJpbWF0aXZlS2V5IH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0Q2hpcHNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGlwcyc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBEYnhMb2FkaW5nTW9kdWxlIH0gZnJvbSAnQGRlcmVla2IvZGJ4LXdlYic7XG5pbXBvcnQgeyBEYnhTZWFyY2hhYmxlRmllbGRBdXRvY29tcGxldGVJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9zZWFyY2hhYmxlLmZpZWxkLmF1dG9jb21wbGV0ZS5pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgTWF0T3B0aW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBTZWFyY2hhYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZSB9IGZyb20gJy4vc2VhcmNoYWJsZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VhcmNoYWJsZVRleHRWYWx1ZUZpZWxkc0ZpZWxkUHJvcHM8VCwgTSA9IHVua25vd24sIEggZXh0ZW5kcyBQcmltYXRpdmVLZXkgPSBQcmltYXRpdmVLZXk+IGV4dGVuZHMgU2VhcmNoYWJsZVZhbHVlRmllbGRzRmllbGRQcm9wczxULCBNLCBIPiB7XG4gIHJlYWRvbmx5IHNob3dTZWxlY3RlZFZhbHVlPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBEaXNwbGF5IGNvbXBvbmVudCBmb3Igc2VsZWN0aW5nIGEgc2luZ2xlIGl0ZW0vdmFsdWUuXG4gKi9cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJ3NlYXJjaGFibGUudGV4dC5maWVsZC5jb21wb25lbnQuaHRtbCcsXG4gIGltcG9ydHM6IFtGb3Jtc01vZHVsZSwgTWF0SW5wdXQsIE5nQ2xhc3MsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIERieExvYWRpbmdNb2R1bGUsIE1hdE9wdGlvbk1vZHVsZSwgTWF0QXV0b2NvbXBsZXRlTW9kdWxlLCBNYXRDaGlwc01vZHVsZSwgTWF0SWNvbk1vZHVsZSwgRGJ4U2VhcmNoYWJsZUZpZWxkQXV0b2NvbXBsZXRlSXRlbUNvbXBvbmVudF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIERieFNlYXJjaGFibGVUZXh0RmllbGRDb21wb25lbnQ8VCwgTSA9IHVua25vd24sIEggZXh0ZW5kcyBQcmltYXRpdmVLZXkgPSBQcmltYXRpdmVLZXk+IGV4dGVuZHMgQWJzdHJhY3REYnhTZWFyY2hhYmxlVmFsdWVGaWVsZERpcmVjdGl2ZTxULCBNLCBILCBTZWFyY2hhYmxlVGV4dFZhbHVlRmllbGRzRmllbGRQcm9wczxULCBNLCBIPj4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIG92ZXJyaWRlIGFsbG93U3luY1ZhbHVlVG9JbnB1dCA9IHRydWU7XG5cbiAgcmVhZG9ubHkgc2VsZWN0ZWREaXNwbGF5VmFsdWUkID0gdGhpcy5kaXNwbGF5VmFsdWVzJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geFswXSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBzZWxlY3RlZERpc3BsYXlWYWx1ZVNpZ25hbCA9IHRvU2lnbmFsKHRoaXMuc2VsZWN0ZWREaXNwbGF5VmFsdWUkKTtcbiAgcmVhZG9ubHkgaGFzVmFsdWVTaWduYWwgPSBjb21wdXRlZCgoKSA9PiBCb29sZWFuKHRoaXMuc2VsZWN0ZWREaXNwbGF5VmFsdWVTaWduYWwoKSkpO1xuICByZWFkb25seSBzaG93U2VsZWN0ZWREaXNwbGF5VmFsdWVTaWduYWwgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnNob3dTZWxlY3RlZFZhbHVlICYmIHRoaXMuaGFzVmFsdWVTaWduYWwoKSk7XG5cbiAgb3ZlcnJpZGUgZ2V0IHNlYXJjaGFibGVGaWVsZCgpOiBTZWFyY2hhYmxlVGV4dFZhbHVlRmllbGRzRmllbGRQcm9wczxULCBNLCBIPiB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHM7XG4gIH1cblxuICBnZXQgc2hvd1NlbGVjdGVkVmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoYWJsZUZpZWxkLnNob3dTZWxlY3RlZFZhbHVlID8/ICF0aGlzLmFsbG93U3RyaW5nVmFsdWVzOyAvLyBTaG93IHRoZSBzZWxlY3RlZCB2YWx1ZSBvbmx5IGlmIHN0cmluZyB2YWx1ZXMgYXJlIGFsbG93ZWQuXG4gIH1cblxuICBnZXQgbXVsdGlTZWxlY3QoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLypcbiAgcHJpdmF0ZSBfY2xlYXJJbnB1dFN1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcblxuICBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgdGhpcy5fY2xlYXJJbnB1dFN1Yi5zdWJzY3JpcHRpb24gPSB0aGlzLmlucHV0VmFsdWUkLnBpcGUoc2tpcFdoaWxlKCh4KSA9PiAheCkpLnN1YnNjcmliZSgoeCkgPT4ge1xuICAgICAgaWYgKCF4KSB7XG4gICAgICAgIC8vIHRoaXMuY2xlYXJWYWx1ZXMoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG92ZXJyaWRlIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgdGhpcy5fY2xlYXJJbnB1dFN1Yi5kZXN0cm95KCk7XG4gIH1cbiAgKi9cblxuICBzZWxlY3RlZChldmVudDogTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHZhbHVlID0gZXZlbnQub3B0aW9uLnZhbHVlIGFzIFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQ+IHwgeyBfaWdub3JlPzogdHJ1ZSB9IHwgeyBfY2xlYXI/OiB0cnVlIH07XG5cbiAgICBjb25zb2xlLmxvZygnc2VsZWN0ZWQnLCB2YWx1ZSk7XG5cbiAgICBpZiAoKHZhbHVlIGFzIGFueSkuX2NsZWFyKSB7XG4gICAgICB0aGlzLmNsZWFyVmFsdWVzKCk7XG4gICAgfSBlbHNlIGlmICghKHZhbHVlIGFzIGFueSkuX2lnbm9yZSkge1xuICAgICAgdGhpcy5hZGRXaXRoRGlzcGxheVZhbHVlKHZhbHVlIGFzIFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQ+KTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkYngtc2VhcmNoYWJsZS10ZXh0LWZpZWxkXCIgW25nQ2xhc3NdPVwieyAnZGJ4LXNlYXJjaGFibGUtdGV4dC1maWVsZC1oYXMtdmFsdWUnOiBoYXNWYWx1ZVNpZ25hbCgpLCAnZGJ4LXNlYXJjaGFibGUtdGV4dC1maWVsZC1zaG93LXZhbHVlJzogc2hvd1NlbGVjdGVkVmFsdWUgfVwiPlxuICA8IS0tIFJlc3VsdCBWaWV3IC0tPlxuICBAaWYgKHNob3dTZWxlY3RlZERpc3BsYXlWYWx1ZVNpZ25hbCgpKSB7XG4gICAgPGRpdiBjbGFzcz1cImRieC1zZWFyY2hhYmxlLXRleHQtZmllbGQtdmFsdWUgbWF0LW9wdGlvbiBtYXQtb3B0aW9uLXRleHRcIj5cbiAgICAgIDxkYngtc2VhcmNoYWJsZS1maWVsZC1hdXRvY29tcGxldGUtaXRlbSBbZGlzcGxheVZhbHVlXT1cInNlbGVjdGVkRGlzcGxheVZhbHVlU2lnbmFsKCkhXCI+PC9kYngtc2VhcmNoYWJsZS1maWVsZC1hdXRvY29tcGxldGUtaXRlbT5cbiAgICA8L2Rpdj5cbiAgfVxuICA8ZGl2IGNsYXNzPVwiZGJ4LXNlYXJjaGFibGUtdGV4dC1maWVsZC1pbnB1dFwiPlxuICAgIEBpZiAoc2VhcmNoTGFiZWwpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJkYngtbGFiZWxcIj57eyBzZWFyY2hMYWJlbCB9fTwvZGl2PlxuICAgIH1cbiAgICA8IS0tIFZpZXcgLS0+XG4gICAgPGlucHV0IHR5cGU9XCJzZWFyY2hcIiBbbmFtZV09XCJuYW1lXCIgbWF0SW5wdXQgI3RleHRJbnB1dCBbcGxhY2Vob2xkZXJdPVwic2VhcmNoSW5wdXRQbGFjZWhvbGRlclwiIFtmb3JtQ29udHJvbF09XCJpbnB1dEN0cmxcIiBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9cIiBbbWF0QXV0b2NvbXBsZXRlRGlzYWJsZWRdPVwicmVhZG9ubHkgfHwgZGlzYWJsZWRcIiBhdXRvY29tcGxldGU9XCJ7eyBhdXRvY29tcGxldGUgfX1cIiAvPlxuICAgIDxkaXYgY2xhc3M9XCJzZWFyY2hhYmxlLWZpZWxkLWZvcm0tbG9hZGluZ1wiPlxuICAgICAgPGRieC1sb2FkaW5nIFtsaW5lYXJdPVwidHJ1ZVwiIFtjb250ZXh0XT1cInNlYXJjaENvbnRleHRcIj48L2RieC1sb2FkaW5nPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48IS0tIEF1dG9jb21wbGV0ZSAtLT5cbjxtYXQtYXV0b2NvbXBsZXRlIGNsYXNzPVwiZGJ4LXNlYXJjaGFibGUtdGV4dC1maWVsZC1hdXRvY29tcGxldGVcIiAjYXV0byAob3B0aW9uU2VsZWN0ZWQpPVwic2VsZWN0ZWQoJGV2ZW50KVwiPlxuICBAZm9yIChkaXNwbGF5VmFsdWUgb2Ygc2VhcmNoUmVzdWx0c1NpZ25hbCgpOyB0cmFjayBkaXNwbGF5VmFsdWUudmFsdWUpIHtcbiAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiZGlzcGxheVZhbHVlXCI+XG4gICAgICA8ZGJ4LXNlYXJjaGFibGUtZmllbGQtYXV0b2NvbXBsZXRlLWl0ZW0gW2Rpc3BsYXlWYWx1ZV09XCJkaXNwbGF5VmFsdWVcIj48L2RieC1zZWFyY2hhYmxlLWZpZWxkLWF1dG9jb21wbGV0ZS1pdGVtPlxuICAgIDwvbWF0LW9wdGlvbj5cbiAgfVxuICA8IS0tIElmIE5vIFJlc3VsdHMgLS0+XG4gIEBpZiAoc2VhcmNoUmVzdWx0c1NpZ25hbCgpPy5sZW5ndGggPT09IDApIHtcbiAgICBAaWYgKCFpc0xvYWRpbmdTZWFyY2hSZXN1bHRzU2lnbmFsKCkpIHtcbiAgICAgIDxtYXQtb3B0aW9uIHZhbHVlPVwiXCIgZGlzYWJsZWQ+XG4gICAgICAgIDxwIGNsYXNzPVwiZGJ4LWNsZWFyLWhpbnQgdGV4dC1jZW50ZXJcIj5ObyByZXN1bHRzIGZvdW5kLjwvcD5cbiAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICB9IEBlbHNlIHtcbiAgICAgIDxtYXQtb3B0aW9uIHZhbHVlPVwiXCIgZGlzYWJsZWQ+XG4gICAgICAgIDxwIGNsYXNzPVwiZGJ4LWNsZWFyLWhpbnQgdGV4dC1jZW50ZXJcIj5Mb2FkaW5nLi4uPC9wPlxuICAgICAgPC9tYXQtb3B0aW9uPlxuICAgIH1cbiAgfVxuICA8IS0tIEFkZC9QaWNrIFN0cmluZyBWYWx1ZSAtLT5cbiAgQGlmIChhbGxvd1N0cmluZ1ZhbHVlcyAmJiBpbnB1dFZhbHVlU2lnbmFsKCkpIHtcbiAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwieyB2YWx1ZTogaW5wdXRWYWx1ZVNpZ25hbCgpIH1cIj5cbiAgICAgIDxwIGNsYXNzPVwiZGJ4LWNsZWFyLWhpbnQgdGV4dC1jZW50ZXJcIj5cInt7IGlucHV0VmFsdWVTaWduYWwoKSB9fVwiPC9wPlxuICAgIDwvbWF0LW9wdGlvbj5cbiAgfVxuICA8IS0tIFNob3cgY2xlYXIgdmFsdWUgLS0+XG4gIEBpZiAoc2hvd0NsZWFyVmFsdWUgJiYgaGFzVmFsdWVTaWduYWwoKSkge1xuICAgIDxtYXQtb3B0aW9uIHZhbHVlPVwiXCI+XG4gICAgICA8cCBjbGFzcz1cImRieC1jbGVhci1oaW50IHRleHQtY2VudGVyXCI+Q2xlYXI8L3A+XG4gICAgPC9tYXQtb3B0aW9uPlxuICB9XG48L21hdC1hdXRvY29tcGxldGU+XG4iXX0=
|