novo-elements 5.1.1 → 5.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -7
- package/bundles/novo-elements.umd.js +42693 -42665
- package/bundles/novo-elements.umd.js.map +1 -1
- package/bundles/novo-elements.umd.min.js +2 -2
- package/bundles/novo-elements.umd.min.js.map +1 -1
- package/elements/ace-editor/AceEditor.d.ts +37 -37
- package/elements/ace-editor/AceEditor.module.d.ts +2 -2
- package/elements/ace-editor/AceEditor.scss +5 -0
- package/elements/button/Button.d.ts +9 -9
- package/elements/button/Button.module.d.ts +2 -2
- package/elements/button/Button.scss +397 -0
- package/elements/calendar/Calendar.module.d.ts +2 -2
- package/elements/calendar/common/CalendarDateChange.d.ts +25 -25
- package/elements/calendar/common/CalendarDateChange.scss +23 -0
- package/elements/calendar/common/EventTypeLegend.d.ts +7 -7
- package/elements/calendar/day/CalendarAllDayEvent.d.ts +7 -7
- package/elements/calendar/day/CalendarDayEvent.d.ts +8 -8
- package/elements/calendar/day/CalendarDayView.d.ts +148 -148
- package/elements/calendar/day/CalendarDayView.scss +97 -0
- package/elements/calendar/day/CalendarHourSegment.d.ts +7 -7
- package/elements/calendar/month/CalendarMonthDay.d.ts +14 -14
- package/elements/calendar/month/CalendarMonthHeader.d.ts +14 -14
- package/elements/calendar/month/CalendarMonthView.d.ts +110 -110
- package/elements/calendar/month/CalendarMonthView.scss +169 -0
- package/elements/calendar/pipe/DayOfMonth.pipe.d.ts +6 -6
- package/elements/calendar/pipe/EndOfWeekDisplayPipe.pipe.d.ts +6 -6
- package/elements/calendar/pipe/Hours.pipe.d.ts +6 -6
- package/elements/calendar/pipe/Month.pipe.d.ts +6 -6
- package/elements/calendar/pipe/MonthDay.pipe.d.ts +6 -6
- package/elements/calendar/pipe/Weekday.pipe.d.ts +6 -6
- package/elements/calendar/pipe/Year.pipe.d.ts +6 -6
- package/elements/calendar/week/CalendarWeekEvent.d.ts +8 -8
- package/elements/calendar/week/CalendarWeekHeader.d.ts +14 -14
- package/elements/calendar/week/CalendarWeekView.d.ts +156 -156
- package/elements/calendar/week/CalendarWeekView.scss +86 -0
- package/elements/card/Card.d.ts +28 -28
- package/elements/card/Card.module.d.ts +2 -2
- package/elements/card/Card.scss +104 -0
- package/elements/category-dropdown/CategoryDropdown.d.ts +29 -29
- package/elements/category-dropdown/CategoryDropdown.module.d.ts +2 -2
- package/elements/category-dropdown/CategoryDropdown.scss +157 -0
- package/elements/chips/Chips.d.ts +78 -78
- package/elements/chips/Chips.module.d.ts +2 -2
- package/elements/chips/Chips.scss +373 -0
- package/elements/chips/RowChips.d.ts +12 -12
- package/elements/ckeditor/CKEditor.d.ts +44 -44
- package/elements/ckeditor/CKEditor.module.d.ts +2 -2
- package/elements/ckeditor/CKEditor.scss +37 -0
- package/elements/common/common.module.d.ts +2 -2
- package/elements/common/novo-template/novo-template.directive.d.ts +8 -8
- package/elements/data-table/ListInteractionTypes.d.ts +10 -10
- package/elements/data-table/cell-headers/data-table-checkbox-header-cell.component.d.ts +15 -15
- package/elements/data-table/cell-headers/data-table-expand-header-cell.component.d.ts +13 -13
- package/elements/data-table/cell-headers/data-table-header-cell.component.d.ts +81 -81
- package/elements/data-table/cell-headers/data-table-header-cell.directive.d.ts +11 -11
- package/elements/data-table/cells/data-table-cell.component.d.ts +17 -17
- package/elements/data-table/cells/data-table-checkbox-cell.component.d.ts +17 -17
- package/elements/data-table/cells/data-table-expand-cell.component.d.ts +16 -16
- package/elements/data-table/data-table-clear-button.component.d.ts +15 -15
- package/elements/data-table/data-table-expand.directive.d.ts +18 -18
- package/elements/data-table/data-table.component.d.ts +99 -99
- package/elements/data-table/data-table.component.scss +753 -0
- package/elements/data-table/data-table.module.d.ts +2 -2
- package/elements/data-table/data-table.pipes.d.ts +37 -37
- package/elements/data-table/data-table.source.d.ts +22 -22
- package/elements/data-table/interfaces.d.ts +128 -128
- package/elements/data-table/pagination/data-table-pagination.component.d.ts +52 -52
- package/elements/data-table/rows/data-table-header-row.component.d.ts +6 -6
- package/elements/data-table/rows/data-table-row.component.d.ts +7 -7
- package/elements/data-table/services/data-table-filter-utils.d.ts +3 -3
- package/elements/data-table/services/remote-data-table.service.d.ts +8 -8
- package/elements/data-table/services/static-data-table.service.d.ts +12 -12
- package/elements/data-table/sort-filter/sort-filter.directive.d.ts +8 -8
- package/elements/data-table/state/data-table-state.service.d.ts +32 -32
- package/elements/date-picker/DatePicker.d.ts +79 -79
- package/elements/date-picker/DatePicker.module.d.ts +2 -2
- package/elements/date-picker/DatePicker.scss +414 -0
- package/elements/date-picker/DatePickerInput.d.ts +66 -66
- package/elements/date-time-picker/DateTimePicker.d.ts +45 -45
- package/elements/date-time-picker/DateTimePicker.module.d.ts +2 -2
- package/elements/date-time-picker/DateTimePickerInput.d.ts +46 -46
- package/elements/date-time-picker/_DateTimePicker.scss +93 -0
- package/elements/dragula/Dragula.d.ts +13 -13
- package/elements/dragula/Dragula.module.d.ts +2 -2
- package/elements/dragula/Dragula.scss +18 -0
- package/elements/dragula/DragulaService.d.ts +23 -23
- package/elements/dropdown/Dropdown.d.ts +55 -55
- package/elements/dropdown/Dropdown.module.d.ts +2 -2
- package/elements/dropdown/Dropdown.scss +94 -0
- package/elements/expansion/_expansion-theme.scss +50 -0
- package/elements/expansion/accordion.d.ts +21 -21
- package/elements/expansion/expansion-animations.d.ts +9 -9
- package/elements/expansion/expansion-panel-content.d.ts +9 -9
- package/elements/expansion/expansion-panel-header.d.ts +45 -45
- package/elements/expansion/expansion-panel-header.scss +58 -0
- package/elements/expansion/expansion-panel.d.ts +54 -54
- package/elements/expansion/expansion-panel.scss +68 -0
- package/elements/expansion/expansion.module.d.ts +2 -2
- package/elements/form/Control.d.ts +107 -107
- package/elements/form/ControlGroup.d.ts +89 -83
- package/elements/form/ControlGroup.scss +147 -0
- package/elements/form/ControlTemplates.d.ts +9 -9
- package/elements/form/DynamicForm.d.ts +46 -46
- package/elements/form/FieldInteractionApi.d.ts +160 -160
- package/elements/form/FieldInteractionApiTypes.d.ts +29 -29
- package/elements/form/FieldInteractionModals.d.ts +16 -16
- package/elements/form/Form.d.ts +21 -21
- package/elements/form/Form.module.d.ts +2 -2
- package/elements/form/Form.scss +857 -0
- package/elements/form/FormControls.d.ts +22 -22
- package/elements/form/FormInterfaces.d.ts +36 -36
- package/elements/form/FormValidators.d.ts +22 -22
- package/elements/form/NovoFormControl.d.ts +100 -100
- package/elements/form/NovoFormGroup.d.ts +17 -17
- package/elements/form/controls/BaseControl.d.ts +106 -106
- package/elements/form/controls/ControlFactory.d.ts +4 -4
- package/elements/form/controls/ace-editor/AceEditorControl.d.ts +5 -5
- package/elements/form/controls/address/AddressControl.d.ts +5 -5
- package/elements/form/controls/check-list/CheckListControl.d.ts +5 -5
- package/elements/form/controls/checkbox/CheckboxControl.d.ts +5 -5
- package/elements/form/controls/custom/CustomControl.d.ts +5 -5
- package/elements/form/controls/date/DateControl.d.ts +5 -5
- package/elements/form/controls/date-time/DateTimeControl.d.ts +5 -5
- package/elements/form/controls/editor/EditorControl.d.ts +6 -6
- package/elements/form/controls/file/FileControl.d.ts +5 -5
- package/elements/form/controls/grouped/GroupedControl.d.ts +6 -6
- package/elements/form/controls/index.d.ts +19 -19
- package/elements/form/controls/native-select/NativeSelectControl.d.ts +6 -6
- package/elements/form/controls/picker/PickerControl.d.ts +9 -9
- package/elements/form/controls/quick-note/QuickNoteControl.d.ts +6 -6
- package/elements/form/controls/radio/RadioControl.d.ts +6 -6
- package/elements/form/controls/read-only/ReadOnlyControl.d.ts +5 -5
- package/elements/form/controls/select/SelectControl.d.ts +6 -6
- package/elements/form/controls/text-area/TextAreaControl.d.ts +5 -5
- package/elements/form/controls/textbox/TextBoxControl.d.ts +9 -9
- package/elements/form/controls/tiles/TilesControl.d.ts +6 -6
- package/elements/form/controls/time/TimeControl.d.ts +5 -5
- package/elements/form/extras/FormExtras.module.d.ts +2 -2
- package/elements/form/extras/address/Address.d.ts +65 -65
- package/elements/form/extras/address/Address.scss +152 -0
- package/elements/form/extras/checkbox/CheckList.d.ts +20 -20
- package/elements/form/extras/checkbox/Checkbox.d.ts +24 -24
- package/elements/form/extras/checkbox/Checkbox.scss +87 -0
- package/elements/form/extras/file/FileInput.d.ts +72 -72
- package/elements/form/extras/file/FileInput.scss +118 -0
- package/elements/form/extras/file/extras/file/File.d.ts +22 -22
- package/elements/header/Header.d.ts +22 -22
- package/elements/header/Header.module.d.ts +2 -2
- package/elements/header/Header.scss +96 -0
- package/elements/icon/Icon.d.ts +18 -18
- package/elements/icon/Icon.module.d.ts +2 -2
- package/elements/icon/Icon.scss +82 -0
- package/elements/list/List.d.ts +31 -31
- package/elements/list/List.module.d.ts +2 -2
- package/elements/list/List.scss +134 -0
- package/elements/loading/Loading.d.ts +26 -26
- package/elements/loading/Loading.module.d.ts +2 -2
- package/elements/loading/Loading.scss +56 -0
- package/elements/loading/NovoSpinner.scss +172 -0
- package/elements/modal/Modal.d.ts +45 -45
- package/elements/modal/Modal.module.d.ts +2 -2
- package/elements/modal/Modal.scss +207 -0
- package/elements/modal/ModalService.d.ts +10 -10
- package/elements/multi-picker/MultiPicker.d.ts +107 -107
- package/elements/multi-picker/MultiPicker.module.d.ts +2 -2
- package/elements/multi-picker/_MultiPicker.scss +74 -0
- package/elements/overlay/Overlay.d.ts +57 -57
- package/elements/overlay/Overlay.module.d.ts +2 -2
- package/elements/picker/Picker.d.ts +69 -69
- package/elements/picker/Picker.module.d.ts +2 -2
- package/elements/picker/Picker.scss +438 -0
- package/elements/picker/extras/base-picker-results/BasePickerResults.d.ts +91 -91
- package/elements/picker/extras/checklist-picker-results/ChecklistPickerResults.d.ts +21 -21
- package/elements/picker/extras/distributionlist-picker-results/DistributionListPickerResults.d.ts +13 -13
- package/elements/picker/extras/entity-picker-results/EntityPickerResults.d.ts +29 -29
- package/elements/picker/extras/grouped-multi-picker-results/GroupedMultiPickerResults.d.ts +42 -42
- package/elements/picker/extras/grouped-multi-picker-results/GroupedMultiPickerResults.scss +136 -0
- package/elements/picker/extras/mixed-multi-picker-results/MixedMultiPickerResults.d.ts +43 -43
- package/elements/picker/extras/mixed-multi-picker-results/MixedMultiPickerResults.scss +156 -0
- package/elements/picker/extras/picker-results/PickerResults.d.ts +11 -11
- package/elements/picker/extras/skills-picker-results/SkillsSpecialtyPickerResults.d.ts +21 -21
- package/elements/picker/extras/skills-picker-results/SkillsSpecialtyPickerResults.scss +65 -0
- package/elements/picker/extras/workers-comp-codes-picker-results/WorkersCompCodesPickerResults.d.ts +13 -13
- package/elements/picker/extras/workers-comp-codes-picker-results/WorkersCompCodesPickerResults.scss +0 -0
- package/elements/places/places.component.d.ts +71 -71
- package/elements/places/places.component.scss +26 -0
- package/elements/places/places.module.d.ts +2 -2
- package/elements/places/places.service.d.ts +22 -22
- package/elements/popover/PopOver.d.ts +30 -30
- package/elements/popover/PopOver.module.d.ts +2 -2
- package/elements/popover/PopOver.scss +179 -0
- package/elements/popover/PopOverContent.d.ts +45 -45
- package/elements/quick-note/QuickNote.d.ts +139 -139
- package/elements/quick-note/QuickNote.module.d.ts +2 -2
- package/elements/quick-note/QuickNote.scss +52 -0
- package/elements/quick-note/extras/quick-note-results/QuickNoteResults.d.ts +30 -30
- package/elements/radio/Radio.d.ts +26 -26
- package/elements/radio/Radio.module.d.ts +2 -2
- package/elements/radio/Radio.scss +94 -0
- package/elements/search/SearchBox.d.ts +59 -59
- package/elements/search/SearchBox.module.d.ts +2 -2
- package/elements/search/SearchBox.scss +67 -0
- package/elements/select/Select.d.ts +62 -62
- package/elements/select/Select.module.d.ts +2 -2
- package/elements/select/Select.scss +226 -0
- package/elements/simple-table/activity-table-renderers.d.ts +4 -4
- package/elements/simple-table/cell-header.d.ts +62 -62
- package/elements/simple-table/cell.d.ts +73 -73
- package/elements/simple-table/interfaces.d.ts +81 -81
- package/elements/simple-table/pagination.d.ts +37 -37
- package/elements/simple-table/row.d.ts +20 -20
- package/elements/simple-table/simple-table.module.d.ts +2 -2
- package/elements/simple-table/sort.d.ts +20 -20
- package/elements/simple-table/state.d.ts +22 -22
- package/elements/simple-table/table-source.d.ts +62 -62
- package/elements/simple-table/table.d.ts +59 -59
- package/elements/simple-table/table.scss +344 -0
- package/elements/slider/Slider.d.ts +18 -18
- package/elements/slider/Slider.module.d.ts +2 -2
- package/elements/slider/Slider.scss +89 -0
- package/elements/stepper/step-header.component.d.ts +45 -45
- package/elements/stepper/step-header.component.scss +78 -0
- package/elements/stepper/step-label.component.d.ts +5 -5
- package/elements/stepper/step-status.component.d.ts +6 -6
- package/elements/stepper/stepper.animations.d.ts +6 -6
- package/elements/stepper/stepper.component.d.ts +39 -39
- package/elements/stepper/stepper.component.scss +200 -0
- package/elements/stepper/stepper.module.d.ts +2 -2
- package/elements/switch/Switch.d.ts +19 -19
- package/elements/switch/Switch.module.d.ts +2 -2
- package/elements/switch/Switch.scss +143 -0
- package/elements/tabbed-group-picker/TabbedGroupPicker.d.ts +122 -122
- package/elements/tabbed-group-picker/TabbedGroupPicker.module.d.ts +2 -2
- package/elements/tabbed-group-picker/TabbedGroupPicker.scss +186 -0
- package/elements/table/Table.d.ts +184 -184
- package/elements/table/Table.module.d.ts +2 -2
- package/elements/table/Table.scss +585 -0
- package/elements/table/extras/TableExtras.module.d.ts +2 -2
- package/elements/table/extras/base-renderer/BaseRenderer.d.ts +5 -5
- package/elements/table/extras/date-cell/DateCell.d.ts +8 -8
- package/elements/table/extras/dropdown-cell/DropdownCell.d.ts +17 -17
- package/elements/table/extras/dropdown-cell/DropdownCell.scss +58 -0
- package/elements/table/extras/keep-filter-focus/KeepFilterFocus.d.ts +6 -6
- package/elements/table/extras/pagination/Pagination.d.ts +39 -39
- package/elements/table/extras/pagination/Pagination.scss +62 -0
- package/elements/table/extras/percentage-cell/PercentageCell.d.ts +3 -3
- package/elements/table/extras/row-details/RowDetails.d.ts +12 -12
- package/elements/table/extras/table-actions/TableActions.d.ts +2 -2
- package/elements/table/extras/table-cell/TableCell.d.ts +18 -18
- package/elements/table/extras/table-filter/TableFilter.d.ts +13 -13
- package/elements/table/extras/table-footer/TableFooter.d.ts +2 -2
- package/elements/table/extras/table-header/TableHeader.d.ts +2 -2
- package/elements/table/extras/th-orderable/ThOrderable.d.ts +30 -30
- package/elements/table/extras/th-sortable/ThSortable.d.ts +7 -7
- package/elements/tabs/Tabs.d.ts +49 -49
- package/elements/tabs/Tabs.module.d.ts +2 -2
- package/elements/tabs/Tabs.scss +287 -0
- package/elements/tiles/Tiles.d.ts +30 -30
- package/elements/tiles/Tiles.module.d.ts +2 -2
- package/elements/tiles/Tiles.scss +68 -0
- package/elements/time-picker/TimePicker.d.ts +38 -38
- package/elements/time-picker/TimePicker.module.d.ts +2 -2
- package/elements/time-picker/TimePicker.scss +388 -0
- package/elements/time-picker/TimePickerInput.d.ts +52 -52
- package/elements/tip-well/TipWell.d.ts +23 -23
- package/elements/tip-well/TipWell.module.d.ts +2 -2
- package/elements/tip-well/TipWell.scss +31 -0
- package/elements/toast/Toast.d.ts +28 -28
- package/elements/toast/Toast.module.d.ts +2 -2
- package/elements/toast/Toast.scss +413 -0
- package/elements/toast/ToastService.d.ts +40 -40
- package/elements/tooltip/Tooltip.component.d.ts +12 -11
- package/elements/tooltip/Tooltip.directive.d.ts +35 -34
- package/elements/tooltip/Tooltip.module.d.ts +2 -2
- package/elements/tooltip/Tooltip.scss +216 -0
- package/elements/unless/Unless.d.ts +12 -12
- package/elements/unless/Unless.module.d.ts +2 -2
- package/elements/value/EntityList.d.ts +13 -13
- package/elements/value/Render.d.ts +66 -66
- package/elements/value/Value.d.ts +40 -40
- package/elements/value/Value.module.d.ts +2 -2
- package/elements/value/Value.scss +57 -0
- package/elements/value/Values.scss +57 -0
- package/esm2015/elements/ace-editor/AceEditor.js +126 -126
- package/esm2015/elements/ace-editor/AceEditor.module.js +15 -15
- package/esm2015/elements/button/Button.js +74 -74
- package/esm2015/elements/button/Button.module.js +15 -15
- package/esm2015/elements/calendar/Calendar.module.js +81 -81
- package/esm2015/elements/calendar/common/CalendarDateChange.js +60 -60
- package/esm2015/elements/calendar/common/EventTypeLegend.js +32 -32
- package/esm2015/elements/calendar/day/CalendarAllDayEvent.js +40 -40
- package/esm2015/elements/calendar/day/CalendarDayEvent.js +41 -41
- package/esm2015/elements/calendar/day/CalendarDayView.js +302 -302
- package/esm2015/elements/calendar/day/CalendarHourSegment.js +34 -34
- package/esm2015/elements/calendar/month/CalendarMonthDay.js +87 -87
- package/esm2015/elements/calendar/month/CalendarMonthHeader.js +55 -55
- package/esm2015/elements/calendar/month/CalendarMonthView.js +171 -171
- package/esm2015/elements/calendar/pipe/DayOfMonth.pipe.js +16 -16
- package/esm2015/elements/calendar/pipe/EndOfWeekDisplayPipe.pipe.js +19 -19
- package/esm2015/elements/calendar/pipe/Hours.pipe.js +16 -16
- package/esm2015/elements/calendar/pipe/Month.pipe.js +16 -16
- package/esm2015/elements/calendar/pipe/MonthDay.pipe.js +16 -16
- package/esm2015/elements/calendar/pipe/Weekday.pipe.js +16 -16
- package/esm2015/elements/calendar/pipe/Year.pipe.js +16 -16
- package/esm2015/elements/calendar/week/CalendarWeekEvent.js +38 -38
- package/esm2015/elements/calendar/week/CalendarWeekHeader.js +46 -46
- package/esm2015/elements/calendar/week/CalendarWeekView.js +311 -311
- package/esm2015/elements/card/Card.js +104 -104
- package/esm2015/elements/card/Card.module.js +18 -18
- package/esm2015/elements/category-dropdown/CategoryDropdown.js +159 -159
- package/esm2015/elements/category-dropdown/CategoryDropdown.module.js +17 -17
- package/esm2015/elements/chips/Chips.js +356 -356
- package/esm2015/elements/chips/Chips.module.js +18 -18
- package/esm2015/elements/chips/RowChips.js +86 -86
- package/esm2015/elements/ckeditor/CKEditor.js +237 -237
- package/esm2015/elements/ckeditor/CKEditor.module.js +16 -16
- package/esm2015/elements/common/common.module.js +13 -13
- package/esm2015/elements/common/novo-template/novo-template.directive.js +22 -22
- package/esm2015/elements/data-table/ListInteractionTypes.js +1 -1
- package/esm2015/elements/data-table/cell-headers/data-table-checkbox-header-cell.component.js +73 -73
- package/esm2015/elements/data-table/cell-headers/data-table-expand-header-cell.component.js +47 -47
- package/esm2015/elements/data-table/cell-headers/data-table-header-cell.component.js +501 -501
- package/esm2015/elements/data-table/cell-headers/data-table-header-cell.directive.js +35 -35
- package/esm2015/elements/data-table/cells/data-table-cell.component.js +62 -62
- package/esm2015/elements/data-table/cells/data-table-checkbox-cell.component.js +65 -65
- package/esm2015/elements/data-table/cells/data-table-expand-cell.component.js +52 -52
- package/esm2015/elements/data-table/data-table-clear-button.component.js +54 -54
- package/esm2015/elements/data-table/data-table-expand.directive.js +57 -57
- package/esm2015/elements/data-table/data-table.component.js +665 -665
- package/esm2015/elements/data-table/data-table.module.js +87 -87
- package/esm2015/elements/data-table/data-table.pipes.js +150 -150
- package/esm2015/elements/data-table/data-table.source.js +62 -62
- package/esm2015/elements/data-table/interfaces.js +1 -1
- package/esm2015/elements/data-table/pagination/data-table-pagination.component.js +249 -249
- package/esm2015/elements/data-table/rows/data-table-header-row.component.js +23 -23
- package/esm2015/elements/data-table/rows/data-table-row.component.js +23 -23
- package/esm2015/elements/data-table/services/data-table-filter-utils.js +35 -35
- package/esm2015/elements/data-table/services/remote-data-table.service.js +3 -3
- package/esm2015/elements/data-table/services/static-data-table.service.js +48 -48
- package/esm2015/elements/data-table/sort-filter/sort-filter.directive.js +57 -57
- package/esm2015/elements/data-table/state/data-table-state.service.js +116 -116
- package/esm2015/elements/date-picker/DatePicker.js +493 -493
- package/esm2015/elements/date-picker/DatePicker.module.js +20 -20
- package/esm2015/elements/date-picker/DatePickerInput.js +255 -255
- package/esm2015/elements/date-time-picker/DateTimePicker.js +195 -195
- package/esm2015/elements/date-time-picker/DateTimePicker.module.js +22 -22
- package/esm2015/elements/date-time-picker/DateTimePickerInput.js +151 -151
- package/esm2015/elements/dragula/Dragula.js +66 -66
- package/esm2015/elements/dragula/Dragula.module.js +13 -13
- package/esm2015/elements/dragula/DragulaService.js +117 -117
- package/esm2015/elements/dropdown/Dropdown.js +284 -284
- package/esm2015/elements/dropdown/Dropdown.module.js +15 -15
- package/esm2015/elements/expansion/accordion.js +42 -42
- package/esm2015/elements/expansion/expansion-animations.js +33 -33
- package/esm2015/elements/expansion/expansion-panel-content.js +19 -19
- package/esm2015/elements/expansion/expansion-panel-header.js +131 -131
- package/esm2015/elements/expansion/expansion-panel.js +141 -141
- package/esm2015/elements/expansion/expansion.module.js +34 -34
- package/esm2015/elements/form/Control.js +645 -645
- package/esm2015/elements/form/ControlGroup.js +264 -247
- package/esm2015/elements/form/ControlTemplates.js +162 -161
- package/esm2015/elements/form/DynamicForm.js +221 -221
- package/esm2015/elements/form/FieldInteractionApi.js +680 -680
- package/esm2015/elements/form/FieldInteractionApiTypes.js +1 -1
- package/esm2015/elements/form/FieldInteractionModals.js +63 -63
- package/esm2015/elements/form/Form.js +93 -93
- package/esm2015/elements/form/Form.module.js +86 -86
- package/esm2015/elements/form/FormControls.js +23 -23
- package/esm2015/elements/form/FormInterfaces.js +1 -1
- package/esm2015/elements/form/FormValidators.js +115 -115
- package/esm2015/elements/form/NovoFormControl.js +154 -154
- package/esm2015/elements/form/NovoFormGroup.js +32 -32
- package/esm2015/elements/form/controls/BaseControl.js +101 -101
- package/esm2015/elements/form/controls/ControlFactory.js +47 -47
- package/esm2015/elements/form/controls/ace-editor/AceEditorControl.js +9 -9
- package/esm2015/elements/form/controls/address/AddressControl.js +11 -11
- package/esm2015/elements/form/controls/check-list/CheckListControl.js +10 -10
- package/esm2015/elements/form/controls/checkbox/CheckboxControl.js +9 -9
- package/esm2015/elements/form/controls/custom/CustomControl.js +10 -10
- package/esm2015/elements/form/controls/date/DateControl.js +9 -9
- package/esm2015/elements/form/controls/date-time/DateTimeControl.js +9 -9
- package/esm2015/elements/form/controls/editor/EditorControl.js +10 -10
- package/esm2015/elements/form/controls/file/FileControl.js +12 -12
- package/esm2015/elements/form/controls/grouped/GroupedControl.js +7 -7
- package/esm2015/elements/form/controls/index.js +20 -20
- package/esm2015/elements/form/controls/native-select/NativeSelectControl.js +11 -11
- package/esm2015/elements/form/controls/picker/PickerControl.js +17 -17
- package/esm2015/elements/form/controls/quick-note/QuickNoteControl.js +11 -11
- package/esm2015/elements/form/controls/radio/RadioControl.js +11 -11
- package/esm2015/elements/form/controls/read-only/ReadOnlyControl.js +10 -10
- package/esm2015/elements/form/controls/select/SelectControl.js +12 -12
- package/esm2015/elements/form/controls/text-area/TextAreaControl.js +9 -9
- package/esm2015/elements/form/controls/textbox/TextBoxControl.js +44 -44
- package/esm2015/elements/form/controls/tiles/TilesControl.js +11 -11
- package/esm2015/elements/form/controls/time/TimeControl.js +9 -9
- package/esm2015/elements/form/extras/FormExtras.module.js +36 -36
- package/esm2015/elements/form/extras/address/Address.js +512 -512
- package/esm2015/elements/form/extras/checkbox/CheckList.js +107 -107
- package/esm2015/elements/form/extras/checkbox/Checkbox.js +80 -80
- package/esm2015/elements/form/extras/file/FileInput.js +320 -320
- package/esm2015/elements/form/extras/file/extras/file/File.js +40 -40
- package/esm2015/elements/header/Header.js +96 -96
- package/esm2015/elements/header/Header.module.js +14 -14
- package/esm2015/elements/icon/Icon.js +53 -53
- package/esm2015/elements/icon/Icon.module.js +11 -11
- package/esm2015/elements/list/List.js +132 -132
- package/esm2015/elements/list/List.module.js +33 -33
- package/esm2015/elements/loading/Loading.js +174 -174
- package/esm2015/elements/loading/Loading.module.js +15 -15
- package/esm2015/elements/modal/Modal.js +138 -138
- package/esm2015/elements/modal/Modal.module.js +16 -16
- package/esm2015/elements/modal/ModalService.js +31 -31
- package/esm2015/elements/multi-picker/MultiPicker.js +600 -600
- package/esm2015/elements/multi-picker/MultiPicker.module.js +18 -18
- package/esm2015/elements/overlay/Overlay.js +238 -238
- package/esm2015/elements/overlay/Overlay.module.js +18 -18
- package/esm2015/elements/picker/Picker.js +343 -343
- package/esm2015/elements/picker/Picker.module.js +50 -50
- package/esm2015/elements/picker/extras/base-picker-results/BasePickerResults.js +353 -353
- package/esm2015/elements/picker/extras/checklist-picker-results/ChecklistPickerResults.js +127 -127
- package/esm2015/elements/picker/extras/distributionlist-picker-results/DistributionListPickerResults.js +63 -63
- package/esm2015/elements/picker/extras/entity-picker-results/EntityPickerResults.js +221 -221
- package/esm2015/elements/picker/extras/grouped-multi-picker-results/GroupedMultiPickerResults.js +264 -264
- package/esm2015/elements/picker/extras/mixed-multi-picker-results/MixedMultiPickerResults.js +193 -193
- package/esm2015/elements/picker/extras/picker-results/PickerResults.js +60 -60
- package/esm2015/elements/picker/extras/skills-picker-results/SkillsSpecialtyPickerResults.js +79 -79
- package/esm2015/elements/picker/extras/workers-comp-codes-picker-results/WorkersCompCodesPickerResults.js +79 -79
- package/esm2015/elements/places/places.component.js +369 -369
- package/esm2015/elements/places/places.module.js +18 -18
- package/esm2015/elements/places/places.service.js +248 -248
- package/esm2015/elements/popover/PopOver.js +144 -144
- package/esm2015/elements/popover/PopOver.module.js +14 -14
- package/esm2015/elements/popover/PopOverContent.js +198 -198
- package/esm2015/elements/quick-note/QuickNote.js +572 -572
- package/esm2015/elements/quick-note/QuickNote.module.js +19 -19
- package/esm2015/elements/quick-note/extras/quick-note-results/QuickNoteResults.js +138 -138
- package/esm2015/elements/radio/Radio.js +89 -89
- package/esm2015/elements/radio/Radio.module.js +16 -16
- package/esm2015/elements/search/SearchBox.js +193 -193
- package/esm2015/elements/search/SearchBox.module.js +19 -19
- package/esm2015/elements/select/Select.js +363 -358
- package/esm2015/elements/select/Select.module.js +19 -18
- package/esm2015/elements/simple-table/activity-table-renderers.js +16 -16
- package/esm2015/elements/simple-table/cell-header.js +278 -278
- package/esm2015/elements/simple-table/cell.js +291 -291
- package/esm2015/elements/simple-table/interfaces.js +1 -1
- package/esm2015/elements/simple-table/pagination.js +175 -175
- package/esm2015/elements/simple-table/row.js +66 -66
- package/esm2015/elements/simple-table/simple-table.module.js +92 -92
- package/esm2015/elements/simple-table/sort.js +87 -87
- package/esm2015/elements/simple-table/state.js +38 -38
- package/esm2015/elements/simple-table/table-source.js +70 -70
- package/esm2015/elements/simple-table/table.js +238 -238
- package/esm2015/elements/slider/Slider.js +81 -81
- package/esm2015/elements/slider/Slider.module.js +16 -16
- package/esm2015/elements/stepper/step-header.component.js +90 -90
- package/esm2015/elements/stepper/step-label.component.js +16 -16
- package/esm2015/elements/stepper/step-status.component.js +26 -26
- package/esm2015/elements/stepper/stepper.animations.js +19 -19
- package/esm2015/elements/stepper/stepper.component.js +139 -139
- package/esm2015/elements/stepper/stepper.module.js +21 -21
- package/esm2015/elements/switch/Switch.js +88 -88
- package/esm2015/elements/switch/Switch.module.js +16 -16
- package/esm2015/elements/tabbed-group-picker/TabbedGroupPicker.js +261 -261
- package/esm2015/elements/tabbed-group-picker/TabbedGroupPicker.module.js +33 -33
- package/esm2015/elements/table/Table.js +940 -940
- package/esm2015/elements/table/Table.module.js +40 -40
- package/esm2015/elements/table/extras/TableExtras.module.js +59 -59
- package/esm2015/elements/table/extras/base-renderer/BaseRenderer.js +8 -8
- package/esm2015/elements/table/extras/date-cell/DateCell.js +31 -31
- package/esm2015/elements/table/extras/dropdown-cell/DropdownCell.js +44 -44
- package/esm2015/elements/table/extras/keep-filter-focus/KeepFilterFocus.js +19 -19
- package/esm2015/elements/table/extras/pagination/Pagination.js +125 -125
- package/esm2015/elements/table/extras/percentage-cell/PercentageCell.js +15 -15
- package/esm2015/elements/table/extras/row-details/RowDetails.js +44 -44
- package/esm2015/elements/table/extras/table-actions/TableActions.js +11 -11
- package/esm2015/elements/table/extras/table-cell/TableCell.js +82 -82
- package/esm2015/elements/table/extras/table-filter/TableFilter.js +59 -59
- package/esm2015/elements/table/extras/table-footer/TableFooter.js +11 -11
- package/esm2015/elements/table/extras/table-header/TableHeader.js +11 -11
- package/esm2015/elements/table/extras/th-orderable/ThOrderable.js +125 -125
- package/esm2015/elements/table/extras/th-sortable/ThSortable.js +37 -37
- package/esm2015/elements/tabs/Tabs.js +253 -253
- package/esm2015/elements/tabs/Tabs.module.js +31 -31
- package/esm2015/elements/tiles/Tiles.js +154 -154
- package/esm2015/elements/tiles/Tiles.module.js +16 -16
- package/esm2015/elements/time-picker/TimePicker.js +201 -201
- package/esm2015/elements/time-picker/TimePicker.module.js +21 -21
- package/esm2015/elements/time-picker/TimePickerInput.js +202 -202
- package/esm2015/elements/tip-well/TipWell.js +94 -94
- package/esm2015/elements/tip-well/TipWell.module.js +16 -16
- package/esm2015/elements/toast/Toast.js +111 -111
- package/esm2015/elements/toast/Toast.module.js +15 -15
- package/esm2015/elements/toast/ToastService.js +92 -92
- package/esm2015/elements/tooltip/Tooltip.component.js +37 -34
- package/esm2015/elements/tooltip/Tooltip.directive.js +189 -187
- package/esm2015/elements/tooltip/Tooltip.module.js +16 -16
- package/esm2015/elements/unless/Unless.js +56 -56
- package/esm2015/elements/unless/Unless.module.js +15 -15
- package/esm2015/elements/value/EntityList.js +84 -84
- package/esm2015/elements/value/Render.js +415 -415
- package/esm2015/elements/value/Value.js +160 -160
- package/esm2015/elements/value/Value.module.js +17 -17
- package/esm2015/index.js +221 -221
- package/esm2015/novo-elements.js +25 -25
- package/esm2015/novo-elements.module.js +128 -128
- package/esm2015/novo-elements.providers.js +50 -50
- package/esm2015/pipes/Pipes.module.js +15 -15
- package/esm2015/pipes/decode-uri/DecodeURI.js +18 -18
- package/esm2015/pipes/group-by/GroupBy.js +24 -24
- package/esm2015/pipes/plural/Plural.js +349 -349
- package/esm2015/services/data-provider/ArrayCollection.js +301 -301
- package/esm2015/services/data-provider/Collection.js +1 -1
- package/esm2015/services/data-provider/CollectionEvent.js +21 -21
- package/esm2015/services/data-provider/PagedArrayCollection.js +78 -78
- package/esm2015/services/data-provider/PagedCollection.js +1 -1
- package/esm2015/services/date-format/DateFormat.js +189 -189
- package/esm2015/services/global/global.service.js +18 -18
- package/esm2015/services/novo-label-service.js +279 -279
- package/esm2015/services/options/OptionsService.js +26 -26
- package/esm2015/services/security/Security.js +67 -67
- package/esm2015/services/storage/storage.service.js +16 -16
- package/esm2015/services/template/NovoTemplateService.js +33 -33
- package/esm2015/utils/Helpers.js +395 -395
- package/esm2015/utils/app-bridge/AppBridge.js +710 -710
- package/esm2015/utils/calendar-utils/CalendarUtils.js +321 -321
- package/esm2015/utils/component-utils/ComponentUtils.js +20 -20
- package/esm2015/utils/countries/Countries.js +17538 -17538
- package/esm2015/utils/deferred/Deferred.js +14 -14
- package/esm2015/utils/form-utils/FormUtils.js +793 -788
- package/esm2015/utils/key-codes/KeyCodes.js +95 -95
- package/esm2015/utils/notifier/notifier.util.js +10 -10
- package/esm2015/utils/outside-click/OutsideClick.js +60 -60
- package/fesm2015/novo-elements.js +43328 -43295
- package/fesm2015/novo-elements.js.map +1 -1
- package/index.d.ts +225 -225
- package/novo-elements.d.ts +24 -24
- package/novo-elements.metadata.json +1 -1
- package/novo-elements.module.d.ts +2 -2
- package/novo-elements.providers.d.ts +5 -5
- package/novo-elements.scss +110 -0
- package/package.json +1 -1
- package/pipes/Pipes.module.d.ts +2 -2
- package/pipes/decode-uri/DecodeURI.d.ts +4 -4
- package/pipes/group-by/GroupBy.d.ts +4 -4
- package/pipes/plural/Plural.d.ts +4 -4
- package/services/data-provider/ArrayCollection.d.ts +178 -178
- package/services/data-provider/Collection.d.ts +93 -93
- package/services/data-provider/CollectionEvent.d.ts +17 -17
- package/services/data-provider/PagedArrayCollection.d.ts +18 -18
- package/services/data-provider/PagedCollection.d.ts +15 -15
- package/services/date-format/DateFormat.d.ts +13 -13
- package/services/global/global.service.d.ts +11 -11
- package/services/novo-label-service.d.ts +142 -142
- package/services/options/OptionsService.d.ts +9 -9
- package/services/security/Security.d.ts +19 -19
- package/services/storage/storage.service.d.ts +5 -5
- package/services/template/NovoTemplateService.d.ts +7 -7
- package/styles/content/typography.scss +200 -0
- package/styles/global/cdk.scss +106 -0
- package/styles/global/flex-grid.scss +156 -0
- package/styles/global/functions.scss +174 -0
- package/styles/global/include-media.scss +578 -0
- package/styles/global/layout.scss +3 -0
- package/styles/global/reset.scss +451 -0
- package/styles/global/variables.scss +324 -0
- package/utils/Helpers.d.ts +68 -68
- package/utils/app-bridge/AppBridge.d.ts +178 -178
- package/utils/calendar-utils/CalendarUtils.d.ts +150 -150
- package/utils/component-utils/ComponentUtils.d.ts +6 -6
- package/utils/countries/Countries.d.ts +51 -51
- package/utils/deferred/Deferred.d.ts +4 -4
- package/utils/form-utils/FormUtils.d.ts +77 -77
- package/utils/key-codes/KeyCodes.d.ts +93 -93
- package/utils/notifier/notifier.util.d.ts +1 -1
- package/utils/outside-click/OutsideClick.d.ts +24 -24
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
// NG2
|
|
2
|
-
import { NgModule } from '@angular/core';
|
|
3
|
-
import { CommonModule } from '@angular/common';
|
|
4
|
-
// APP
|
|
5
|
-
import { NovoCategoryDropdownElement } from './CategoryDropdown';
|
|
6
|
-
import { NovoTabModule } from './../tabs/Tabs.module';
|
|
7
|
-
import { NovoListModule } from './../list/List.module';
|
|
8
|
-
export class NovoCategoryDropdownModule {
|
|
9
|
-
}
|
|
10
|
-
NovoCategoryDropdownModule.decorators = [
|
|
11
|
-
{ type: NgModule, args: [{
|
|
12
|
-
imports: [CommonModule, NovoTabModule, NovoListModule],
|
|
13
|
-
declarations: [NovoCategoryDropdownElement],
|
|
14
|
-
exports: [NovoCategoryDropdownElement],
|
|
15
|
-
},] }
|
|
16
|
-
];
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
// NG2
|
|
2
|
+
import { NgModule } from '@angular/core';
|
|
3
|
+
import { CommonModule } from '@angular/common';
|
|
4
|
+
// APP
|
|
5
|
+
import { NovoCategoryDropdownElement } from './CategoryDropdown';
|
|
6
|
+
import { NovoTabModule } from './../tabs/Tabs.module';
|
|
7
|
+
import { NovoListModule } from './../list/List.module';
|
|
8
|
+
export class NovoCategoryDropdownModule {
|
|
9
|
+
}
|
|
10
|
+
NovoCategoryDropdownModule.decorators = [
|
|
11
|
+
{ type: NgModule, args: [{
|
|
12
|
+
imports: [CommonModule, NovoTabModule, NovoListModule],
|
|
13
|
+
declarations: [NovoCategoryDropdownElement],
|
|
14
|
+
exports: [NovoCategoryDropdownElement],
|
|
15
|
+
},] }
|
|
16
|
+
];
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2F0ZWdvcnlEcm9wZG93bi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvcnVubmVyL3dvcmsvbm92by1lbGVtZW50cy9ub3ZvLWVsZW1lbnRzL3Byb2plY3RzL25vdm8tZWxlbWVudHMvc3JjLyIsInNvdXJjZXMiOlsiZWxlbWVudHMvY2F0ZWdvcnktZHJvcGRvd24vQ2F0ZWdvcnlEcm9wZG93bi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTTtBQUNOLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE1BQU07QUFDTixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBT3ZELE1BQU0sT0FBTywwQkFBMEI7OztZQUx0QyxRQUFRLFNBQUM7Z0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGFBQWEsRUFBRSxjQUFjLENBQUM7Z0JBQ3RELFlBQVksRUFBRSxDQUFDLDJCQUEyQixDQUFDO2dCQUMzQyxPQUFPLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQzthQUN2QyIsInNvdXJjZXNDb250ZW50IjpbIi8vIE5HMlxuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG4vLyBBUFBcbmltcG9ydCB7IE5vdm9DYXRlZ29yeURyb3Bkb3duRWxlbWVudCB9IGZyb20gJy4vQ2F0ZWdvcnlEcm9wZG93bic7XG5pbXBvcnQgeyBOb3ZvVGFiTW9kdWxlIH0gZnJvbSAnLi8uLi90YWJzL1RhYnMubW9kdWxlJztcbmltcG9ydCB7IE5vdm9MaXN0TW9kdWxlIH0gZnJvbSAnLi8uLi9saXN0L0xpc3QubW9kdWxlJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTm92b1RhYk1vZHVsZSwgTm92b0xpc3RNb2R1bGVdLFxuICBkZWNsYXJhdGlvbnM6IFtOb3ZvQ2F0ZWdvcnlEcm9wZG93bkVsZW1lbnRdLFxuICBleHBvcnRzOiBbTm92b0NhdGVnb3J5RHJvcGRvd25FbGVtZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgTm92b0NhdGVnb3J5RHJvcGRvd25Nb2R1bGUge31cbiJdfQ==
|
|
@@ -1,356 +1,356 @@
|
|
|
1
|
-
// NG2
|
|
2
|
-
import { Component, EventEmitter, Input, Output, forwardRef, ElementRef, ViewChild, ViewContainerRef } from '@angular/core';
|
|
3
|
-
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
4
|
-
// Vendor
|
|
5
|
-
import { ReplaySubject } from 'rxjs';
|
|
6
|
-
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
7
|
-
// APP
|
|
8
|
-
import { KeyCodes } from '../../utils/key-codes/KeyCodes';
|
|
9
|
-
import { Helpers } from '../../utils/Helpers';
|
|
10
|
-
import { NovoLabelService } from '../../services/novo-label-service';
|
|
11
|
-
import { ComponentUtils } from '../../utils/component-utils/ComponentUtils';
|
|
12
|
-
// Value accessor for the component (supports ngModel)
|
|
13
|
-
const CHIPS_VALUE_ACCESSOR = {
|
|
14
|
-
provide: NG_VALUE_ACCESSOR,
|
|
15
|
-
useExisting: forwardRef(() => NovoChipsElement),
|
|
16
|
-
multi: true,
|
|
17
|
-
};
|
|
18
|
-
export class NovoChipElement {
|
|
19
|
-
constructor() {
|
|
20
|
-
this.disabled = false;
|
|
21
|
-
this.select = new EventEmitter();
|
|
22
|
-
this.remove = new EventEmitter();
|
|
23
|
-
this.deselect = new EventEmitter();
|
|
24
|
-
}
|
|
25
|
-
set type(type) {
|
|
26
|
-
this._type = type ? type.toLowerCase() : null;
|
|
27
|
-
}
|
|
28
|
-
onRemove(e) {
|
|
29
|
-
if (e) {
|
|
30
|
-
e.stopPropagation();
|
|
31
|
-
e.preventDefault();
|
|
32
|
-
}
|
|
33
|
-
this.remove.emit(e);
|
|
34
|
-
return false;
|
|
35
|
-
}
|
|
36
|
-
onSelect(e) {
|
|
37
|
-
if (e) {
|
|
38
|
-
e.stopPropagation();
|
|
39
|
-
e.preventDefault();
|
|
40
|
-
}
|
|
41
|
-
this.select.emit(e);
|
|
42
|
-
return false;
|
|
43
|
-
}
|
|
44
|
-
onDeselect(e) {
|
|
45
|
-
if (e) {
|
|
46
|
-
e.stopPropagation();
|
|
47
|
-
e.preventDefault();
|
|
48
|
-
}
|
|
49
|
-
this.deselect.emit(e);
|
|
50
|
-
return false;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
NovoChipElement.decorators = [
|
|
54
|
-
{ type: Component, args: [{
|
|
55
|
-
selector: 'chip,novo-chip',
|
|
56
|
-
template: `
|
|
57
|
-
<span (click)="onSelect($event)" (mouseenter)="onSelect($event)" (mouseleave)="onDeselect($event)" [ngClass]="_type">
|
|
58
|
-
<i *ngIf="_type" class="bhi-circle"></i>
|
|
59
|
-
<span><ng-content></ng-content></span>
|
|
60
|
-
</span>
|
|
61
|
-
<i class="bhi-close" *ngIf="!disabled" (click)="onRemove($event)"></i>
|
|
62
|
-
`
|
|
63
|
-
},] }
|
|
64
|
-
];
|
|
65
|
-
NovoChipElement.propDecorators = {
|
|
66
|
-
type: [{ type: Input }],
|
|
67
|
-
disabled: [{ type: Input }],
|
|
68
|
-
select: [{ type: Output }],
|
|
69
|
-
remove: [{ type: Output }],
|
|
70
|
-
deselect: [{ type: Output }]
|
|
71
|
-
};
|
|
72
|
-
export class NovoChipsElement {
|
|
73
|
-
constructor(element, componentUtils, labels) {
|
|
74
|
-
this.element = element;
|
|
75
|
-
this.componentUtils = componentUtils;
|
|
76
|
-
this.labels = labels;
|
|
77
|
-
this.closeOnSelect = false;
|
|
78
|
-
this.placeholder = '';
|
|
79
|
-
this._disablePickerInput = false;
|
|
80
|
-
this.changed = new EventEmitter();
|
|
81
|
-
this.focus = new EventEmitter();
|
|
82
|
-
this.blur = new EventEmitter();
|
|
83
|
-
this.typing = new EventEmitter();
|
|
84
|
-
this.items = [];
|
|
85
|
-
this.selected = null;
|
|
86
|
-
this.config = {};
|
|
87
|
-
// private data model
|
|
88
|
-
this._value = '';
|
|
89
|
-
this._items = new ReplaySubject(1);
|
|
90
|
-
// Placeholders for the callbacks
|
|
91
|
-
this.onModelChange = () => { };
|
|
92
|
-
this.onModelTouched = () => { };
|
|
93
|
-
}
|
|
94
|
-
set disablePickerInput(v) {
|
|
95
|
-
this._disablePickerInput = coerceBooleanProperty(v);
|
|
96
|
-
}
|
|
97
|
-
get disablePickerInput() {
|
|
98
|
-
return this._disablePickerInput;
|
|
99
|
-
}
|
|
100
|
-
ngOnInit() {
|
|
101
|
-
this.setItems();
|
|
102
|
-
}
|
|
103
|
-
get value() {
|
|
104
|
-
return this._value;
|
|
105
|
-
}
|
|
106
|
-
set value(selected) {
|
|
107
|
-
this.itemToAdd = '';
|
|
108
|
-
if (selected !== this._value) {
|
|
109
|
-
this._value = selected;
|
|
110
|
-
this.changed.emit({ value: selected, rawValue: this.items });
|
|
111
|
-
this.onModelChange(selected);
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
clearValue() {
|
|
115
|
-
this.items = [];
|
|
116
|
-
this._items.next(this.items);
|
|
117
|
-
this.value = null;
|
|
118
|
-
this.changed.emit({ value: this.value, rawValue: this.items });
|
|
119
|
-
this.onModelChange(this.value);
|
|
120
|
-
}
|
|
121
|
-
setItems() {
|
|
122
|
-
this.items = [];
|
|
123
|
-
if (this.model && Array.isArray(this.model)) {
|
|
124
|
-
const noLabels = [];
|
|
125
|
-
for (const value of this.model) {
|
|
126
|
-
let label;
|
|
127
|
-
if (this.source && this.source.format && Helpers.validateInterpolationProps(this.source.format, value)) {
|
|
128
|
-
label = Helpers.interpolate(this.source.format, value);
|
|
129
|
-
}
|
|
130
|
-
if (this.source && label && label !== this.source.format) {
|
|
131
|
-
this.items.push({
|
|
132
|
-
value,
|
|
133
|
-
label,
|
|
134
|
-
});
|
|
135
|
-
}
|
|
136
|
-
else if (this.source.getLabels && typeof this.source.getLabels === 'function') {
|
|
137
|
-
noLabels.push(value);
|
|
138
|
-
}
|
|
139
|
-
else if (this.source.options && Array.isArray(this.source.options)) {
|
|
140
|
-
this.items.push(this.getLabelFromOptions(value));
|
|
141
|
-
}
|
|
142
|
-
else if (this.source.categoryMap && this.source.categoryMap.size) {
|
|
143
|
-
this.items.push(value);
|
|
144
|
-
}
|
|
145
|
-
else {
|
|
146
|
-
this.items.push({
|
|
147
|
-
value,
|
|
148
|
-
label: value,
|
|
149
|
-
});
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
if (noLabels.length > 0 && this.source && this.source.getLabels && typeof this.source.getLabels === 'function') {
|
|
153
|
-
this.source.getLabels(noLabels).then((result) => {
|
|
154
|
-
for (const value of result) {
|
|
155
|
-
if (value.hasOwnProperty('label')) {
|
|
156
|
-
this.items.push({
|
|
157
|
-
value,
|
|
158
|
-
label: value.label,
|
|
159
|
-
});
|
|
160
|
-
}
|
|
161
|
-
else if (this.source.options && Array.isArray(this.source.options)) {
|
|
162
|
-
this.items.push(this.getLabelFromOptions(value));
|
|
163
|
-
}
|
|
164
|
-
else {
|
|
165
|
-
this.items.push(value);
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
this._items.next(this.items);
|
|
169
|
-
});
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
this.changed.emit({ value: this.model, rawValue: this.items });
|
|
173
|
-
this._items.next(this.items);
|
|
174
|
-
}
|
|
175
|
-
getLabelFromOptions(value) {
|
|
176
|
-
let id = value;
|
|
177
|
-
let optLabel = this.source.options.find((val) => val.value === value);
|
|
178
|
-
if (!optLabel && value.hasOwnProperty('id')) {
|
|
179
|
-
optLabel = this.source.options.find((val) => val.value === value.id);
|
|
180
|
-
id = value.id;
|
|
181
|
-
}
|
|
182
|
-
return {
|
|
183
|
-
value: id,
|
|
184
|
-
label: optLabel ? optLabel.label : value,
|
|
185
|
-
};
|
|
186
|
-
}
|
|
187
|
-
deselectAll(event) {
|
|
188
|
-
this.selected = null;
|
|
189
|
-
this.hidePreview();
|
|
190
|
-
}
|
|
191
|
-
select(event, item) {
|
|
192
|
-
this.blur.emit(event);
|
|
193
|
-
this.deselectAll();
|
|
194
|
-
this.selected = item;
|
|
195
|
-
this.showPreview();
|
|
196
|
-
}
|
|
197
|
-
deselect(event, item) {
|
|
198
|
-
this.blur.emit(event);
|
|
199
|
-
this.deselectAll();
|
|
200
|
-
}
|
|
201
|
-
onTyping(event) {
|
|
202
|
-
this.typing.emit(event);
|
|
203
|
-
}
|
|
204
|
-
onFocus(event) {
|
|
205
|
-
this.deselectAll();
|
|
206
|
-
this.element.nativeElement.classList.add('selected');
|
|
207
|
-
this.focus.emit(event);
|
|
208
|
-
}
|
|
209
|
-
add(event) {
|
|
210
|
-
if (event && !(event instanceof Event)) {
|
|
211
|
-
this.items.push(event);
|
|
212
|
-
this.value = this.source && this.source.valueFormatter ? this.source.valueFormatter(this.items) : this.items.map((i) => i.value);
|
|
213
|
-
// Set focus on the picker
|
|
214
|
-
const input = this.element.nativeElement.querySelector('novo-picker > input');
|
|
215
|
-
if (input) {
|
|
216
|
-
input.focus();
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
this._items.next(this.items);
|
|
220
|
-
}
|
|
221
|
-
remove(event, item) {
|
|
222
|
-
if (event) {
|
|
223
|
-
event.stopPropagation();
|
|
224
|
-
event.preventDefault();
|
|
225
|
-
}
|
|
226
|
-
this.items.splice(this.items.indexOf(item), 1);
|
|
227
|
-
this.deselectAll();
|
|
228
|
-
this.value = this.source && this.source.valueFormatter ? this.source.valueFormatter(this.items) : this.items.map((i) => i.value);
|
|
229
|
-
this.changed.emit({ value: this.value.length ? this.value : '', rawValue: this.items });
|
|
230
|
-
this.onModelChange(this.value.length ? this.value : '');
|
|
231
|
-
this._items.next(this.items);
|
|
232
|
-
}
|
|
233
|
-
onKeyDown(event) {
|
|
234
|
-
if (event.keyCode === KeyCodes.BACKSPACE) {
|
|
235
|
-
if (event.target && event.target.value.length === 0 && this.items.length) {
|
|
236
|
-
if (event) {
|
|
237
|
-
event.stopPropagation();
|
|
238
|
-
event.preventDefault();
|
|
239
|
-
}
|
|
240
|
-
if (this.selected) {
|
|
241
|
-
this.remove(event, this.selected);
|
|
242
|
-
}
|
|
243
|
-
else {
|
|
244
|
-
this.select(event, this.items[this.items.length - 1]);
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
// Set touched on blur
|
|
250
|
-
onTouched(e) {
|
|
251
|
-
this.element.nativeElement.classList.remove('selected');
|
|
252
|
-
this.onModelTouched();
|
|
253
|
-
this.blur.emit(e);
|
|
254
|
-
}
|
|
255
|
-
writeValue(model) {
|
|
256
|
-
this.model = model;
|
|
257
|
-
this.setItems();
|
|
258
|
-
}
|
|
259
|
-
registerOnChange(fn) {
|
|
260
|
-
this.onModelChange = fn;
|
|
261
|
-
}
|
|
262
|
-
registerOnTouched(fn) {
|
|
263
|
-
this.onModelTouched = fn;
|
|
264
|
-
}
|
|
265
|
-
setDisabledState(disabled) {
|
|
266
|
-
this._disablePickerInput = disabled;
|
|
267
|
-
}
|
|
268
|
-
/**
|
|
269
|
-
* @description This method creates an instance of the preview (called popup) and adds all the bindings to that
|
|
270
|
-
* instance. Will reuse the popup or create a new one if it does not already exist. Will only work if there is
|
|
271
|
-
* a previewTemplate given in the config.
|
|
272
|
-
*/
|
|
273
|
-
showPreview() {
|
|
274
|
-
if (this.source.previewTemplate) {
|
|
275
|
-
if (!this.popup) {
|
|
276
|
-
this.popup = this.componentUtils.append(this.source.previewTemplate, this.preview);
|
|
277
|
-
}
|
|
278
|
-
this.popup.instance.match = this.selected;
|
|
279
|
-
}
|
|
280
|
-
}
|
|
281
|
-
/**
|
|
282
|
-
* @description - This method deletes the preview popup from the DOM.
|
|
283
|
-
*/
|
|
284
|
-
hidePreview() {
|
|
285
|
-
if (this.popup) {
|
|
286
|
-
this.popup.destroy();
|
|
287
|
-
this.popup = null;
|
|
288
|
-
}
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
NovoChipsElement.decorators = [
|
|
292
|
-
{ type: Component, args: [{
|
|
293
|
-
selector: 'chips,novo-chips',
|
|
294
|
-
providers: [CHIPS_VALUE_ACCESSOR],
|
|
295
|
-
template: `
|
|
296
|
-
<div class="novo-chip-container">
|
|
297
|
-
<novo-chip
|
|
298
|
-
*ngFor="let item of _items | async"
|
|
299
|
-
[type]="type || item?.value?.searchEntity"
|
|
300
|
-
[class.selected]="item == selected"
|
|
301
|
-
[disabled]="disablePickerInput"
|
|
302
|
-
(remove)="remove($event, item)"
|
|
303
|
-
(select)="select($event, item)"
|
|
304
|
-
(deselect)="deselect($event, item)">
|
|
305
|
-
{{ item.label }}
|
|
306
|
-
</novo-chip>
|
|
307
|
-
</div>
|
|
308
|
-
<div class="chip-input-container" *ngIf="!maxlength || (maxlength && items.length < maxlength)">
|
|
309
|
-
<novo-picker
|
|
310
|
-
clearValueOnSelect="true"
|
|
311
|
-
[closeOnSelect]="closeOnSelect"
|
|
312
|
-
[config]="source"
|
|
313
|
-
[disablePickerInput]="disablePickerInput"
|
|
314
|
-
[placeholder]="placeholder"
|
|
315
|
-
[(ngModel)]="itemToAdd"
|
|
316
|
-
(select)="add($event)"
|
|
317
|
-
(keydown)="onKeyDown($event)"
|
|
318
|
-
(focus)="onFocus($event)"
|
|
319
|
-
(typing)="onTyping($event)"
|
|
320
|
-
(blur)="onTouched($event)"
|
|
321
|
-
[selected]="items"
|
|
322
|
-
[overrideElement]="element">
|
|
323
|
-
</novo-picker>
|
|
324
|
-
</div>
|
|
325
|
-
<div class="preview-container">
|
|
326
|
-
<span #preview></span>
|
|
327
|
-
</div>
|
|
328
|
-
<i class="bhi-search" [class.has-value]="items.length" *ngIf="!disablePickerInput"></i>
|
|
329
|
-
<label class="clear-all" *ngIf="items.length && !disablePickerInput" (click)="clearValue()">{{ labels.clearAll }} <i class="bhi-times"></i></label>
|
|
330
|
-
`,
|
|
331
|
-
host: {
|
|
332
|
-
'[class.with-value]': 'items.length > 0',
|
|
333
|
-
'[class.disabled]': 'disablePickerInput',
|
|
334
|
-
}
|
|
335
|
-
},] }
|
|
336
|
-
];
|
|
337
|
-
NovoChipsElement.ctorParameters = () => [
|
|
338
|
-
{ type: ElementRef },
|
|
339
|
-
{ type: ComponentUtils },
|
|
340
|
-
{ type: NovoLabelService }
|
|
341
|
-
];
|
|
342
|
-
NovoChipsElement.propDecorators = {
|
|
343
|
-
closeOnSelect: [{ type: Input }],
|
|
344
|
-
placeholder: [{ type: Input }],
|
|
345
|
-
source: [{ type: Input }],
|
|
346
|
-
maxlength: [{ type: Input }],
|
|
347
|
-
type: [{ type: Input }],
|
|
348
|
-
disablePickerInput: [{ type: Input }],
|
|
349
|
-
changed: [{ type: Output }],
|
|
350
|
-
focus: [{ type: Output }],
|
|
351
|
-
blur: [{ type: Output }],
|
|
352
|
-
typing: [{ type: Output }],
|
|
353
|
-
preview: [{ type: ViewChild, args: ['preview', { read: ViewContainerRef },] }],
|
|
354
|
-
value: [{ type: Input }]
|
|
355
|
-
};
|
|
356
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2hpcHMuanMiLCJzb3VyY2VSb290IjoiQzovVXNlcnMvY2hhcmxlcy5iYXJuZXMvRG9jdW1lbnRzL2Rldi9ub3ZvLWVsZW1lbnRzL3Byb2plY3RzL25vdm8tZWxlbWVudHMvc3JjLyIsInNvdXJjZXMiOlsiZWxlbWVudHMvY2hpcHMvQ2hpcHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTTtBQUNOLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBVSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEksT0FBTyxFQUFFLGlCQUFpQixFQUF3QixNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLFNBQVM7QUFDVCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE1BQU07QUFDTixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDMUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUU1RSxzREFBc0Q7QUFDdEQsTUFBTSxvQkFBb0IsR0FBRztJQUMzQixPQUFPLEVBQUUsaUJBQWlCO0lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7SUFDL0MsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDO0FBWUYsTUFBTSxPQUFPLGVBQWU7SUFWNUI7UUFpQkUsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUcxQixXQUFNLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFL0MsV0FBTSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRS9DLGFBQVEsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQStCbkQsQ0FBQztJQTVDQyxJQUNJLElBQUksQ0FBQyxJQUFZO1FBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNoRCxDQUFDO0lBZUQsUUFBUSxDQUFDLENBQUM7UUFDUixJQUFJLENBQUMsRUFBRTtZQUNMLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNwQixDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDcEI7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxRQUFRLENBQUMsQ0FBQztRQUNSLElBQUksQ0FBQyxFQUFFO1lBQ0wsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3BCLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztTQUNwQjtRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELFVBQVUsQ0FBQyxDQUFDO1FBQ1YsSUFBSSxDQUFDLEVBQUU7WUFDTCxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDcEIsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQ3BCO1FBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzs7WUF0REYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxnQkFBZ0I7Z0JBQzFCLFFBQVEsRUFBRTs7Ozs7O0tBTVA7YUFDSjs7O21CQUVFLEtBQUs7dUJBS0wsS0FBSztxQkFHTCxNQUFNO3FCQUVOLE1BQU07dUJBRU4sTUFBTTs7QUE4RVQsTUFBTSxPQUFPLGdCQUFnQjtJQTZDM0IsWUFBbUIsT0FBbUIsRUFBVSxjQUE4QixFQUFTLE1BQXdCO1FBQTVGLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFBUyxXQUFNLEdBQU4sTUFBTSxDQUFrQjtRQTNDL0csa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFFL0IsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFjakIsd0JBQW1CLEdBQVksS0FBSyxDQUFDO1FBRzdDLFlBQU8sR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVoRCxVQUFLLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFOUMsU0FBSSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRTdDLFdBQU0sR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUsvQyxVQUFLLEdBQWUsRUFBRSxDQUFDO1FBQ3ZCLGFBQVEsR0FBUSxJQUFJLENBQUM7UUFDckIsV0FBTSxHQUFRLEVBQUUsQ0FBQztRQUlqQixxQkFBcUI7UUFDckIsV0FBTSxHQUFRLEVBQUUsQ0FBQztRQUNqQixXQUFNLEdBQUcsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUIsaUNBQWlDO1FBQ2pDLGtCQUFhLEdBQWEsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBQ25DLG1CQUFjLEdBQWEsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0lBRThFLENBQUM7SUFsQ25ILElBQ0ksa0JBQWtCLENBQUMsQ0FBVTtRQUMvQixJQUFJLENBQUMsbUJBQW1CLEdBQUcscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUNELElBQUksa0JBQWtCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ2xDLENBQUM7SUE4QkQsUUFBUTtRQUNOLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUNJLEtBQUssQ0FBQyxRQUFRO1FBQ2hCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLElBQUksUUFBUSxLQUFLLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDNUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUM7WUFDdkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUM3RCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQzlCO0lBQ0gsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNoQixJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDM0MsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDO1lBQ3BCLEtBQUssTUFBTSxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFDOUIsSUFBSSxLQUFLLENBQUM7Z0JBQ1YsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLE9BQU8sQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRTtvQkFDdEcsS0FBSyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7aUJBQ3hEO2dCQUNELElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxLQUFLLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFO29CQUN4RCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQzt3QkFDZCxLQUFLO3dCQUNMLEtBQUs7cUJBQ04sQ0FBQyxDQUFDO2lCQUNKO3FCQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLElBQUksT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsS0FBSyxVQUFVLEVBQUU7b0JBQy9FLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQ3RCO3FCQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUNwRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztpQkFDbEQ7cUJBQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUU7b0JBQ2xFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUN4QjtxQkFBTTtvQkFDTCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQzt3QkFDZCxLQUFLO3dCQUNMLEtBQUssRUFBRSxLQUFLO3FCQUNiLENBQUMsQ0FBQztpQkFDSjthQUNGO1lBQ0QsSUFBSSxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxJQUFJLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEtBQUssVUFBVSxFQUFFO2dCQUM5RyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtvQkFDOUMsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUU7d0JBQzFCLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsRUFBRTs0QkFDakMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7Z0NBQ2QsS0FBSztnQ0FDTCxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUs7NkJBQ25CLENBQUMsQ0FBQzt5QkFDSjs2QkFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRTs0QkFDcEUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7eUJBQ2xEOzZCQUFNOzRCQUNMLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO3lCQUN4QjtxQkFDRjtvQkFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQy9CLENBQUMsQ0FBQyxDQUFDO2FBQ0o7U0FDRjtRQUNELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQy9ELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsbUJBQW1CLENBQUMsS0FBSztRQUN2QixJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFDZixJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEtBQUssS0FBSyxDQUFDLENBQUM7UUFDdEUsSUFBSSxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzNDLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3JFLEVBQUUsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDO1NBQ2Y7UUFDRCxPQUFPO1lBQ0wsS0FBSyxFQUFFLEVBQUU7WUFDVCxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLO1NBQ3pDLENBQUM7SUFDSixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQU07UUFDaEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBTSxFQUFFLElBQUs7UUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQU0sRUFBRSxJQUFLO1FBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQU07UUFDYixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQU07UUFDWixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsR0FBRyxDQUFDLEtBQUs7UUFDUCxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsS0FBSyxZQUFZLEtBQUssQ0FBQyxFQUFFO1lBQ3RDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pJLDBCQUEwQjtZQUMxQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMscUJBQXFCLENBQUMsQ0FBQztZQUM5RSxJQUFJLEtBQUssRUFBRTtnQkFDVCxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDZjtTQUNGO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSyxFQUFFLElBQUk7UUFDaEIsSUFBSSxLQUFLLEVBQUU7WUFDVCxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDeEIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQ3hCO1FBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pJLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3hGLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQUs7UUFDYixJQUFJLEtBQUssQ0FBQyxPQUFPLEtBQUssUUFBUSxDQUFDLFNBQVMsRUFBRTtZQUN4QyxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRTtnQkFDeEUsSUFBSSxLQUFLLEVBQUU7b0JBQ1QsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO29CQUN4QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7aUJBQ3hCO2dCQUNELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtvQkFDakIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2lCQUNuQztxQkFBTTtvQkFDTCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ3ZEO2FBQ0Y7U0FDRjtJQUNILENBQUM7SUFFRCxzQkFBc0I7SUFDdEIsU0FBUyxDQUFDLENBQUM7UUFDVCxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQVU7UUFDbkIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxFQUFZO1FBQzNCLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxFQUFZO1FBQzVCLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxRQUFpQjtRQUNoQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsUUFBUSxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUU7WUFDL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDcEY7WUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztTQUMzQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1NBQ25CO0lBQ0gsQ0FBQzs7O1lBdFNGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsa0JBQWtCO2dCQUM1QixTQUFTLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztnQkFDakMsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQW1DUjtnQkFDRixJQUFJLEVBQUU7b0JBQ0osb0JBQW9CLEVBQUUsa0JBQWtCO29CQUN4QyxrQkFBa0IsRUFBRSxvQkFBb0I7aUJBQ3pDO2FBQ0Y7OztZQXRINEQsVUFBVTtZQVM5RCxjQUFjO1lBRGQsZ0JBQWdCOzs7NEJBZ0h0QixLQUFLOzBCQUVMLEtBQUs7cUJBRUwsS0FBSzt3QkFFTCxLQUFLO21CQUVMLEtBQUs7aUNBRUwsS0FBSztzQkFTTCxNQUFNO29CQUVOLE1BQU07bUJBRU4sTUFBTTtxQkFFTixNQUFNO3NCQUdOLFNBQVMsU0FBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7b0JBMEIvQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTkcyXHJcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBmb3J3YXJkUmVmLCBFbGVtZW50UmVmLCBPbkluaXQsIFZpZXdDaGlsZCwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiwgQ29udHJvbFZhbHVlQWNjZXNzb3IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbi8vIFZlbmRvclxyXG5pbXBvcnQgeyBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XHJcbi8vIEFQUFxyXG5pbXBvcnQgeyBLZXlDb2RlcyB9IGZyb20gJy4uLy4uL3V0aWxzL2tleS1jb2Rlcy9LZXlDb2Rlcyc7XHJcbmltcG9ydCB7IEhlbHBlcnMgfSBmcm9tICcuLi8uLi91dGlscy9IZWxwZXJzJztcclxuaW1wb3J0IHsgTm92b0xhYmVsU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL25vdm8tbGFiZWwtc2VydmljZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudFV0aWxzIH0gZnJvbSAnLi4vLi4vdXRpbHMvY29tcG9uZW50LXV0aWxzL0NvbXBvbmVudFV0aWxzJztcclxuXHJcbi8vIFZhbHVlIGFjY2Vzc29yIGZvciB0aGUgY29tcG9uZW50IChzdXBwb3J0cyBuZ01vZGVsKVxyXG5jb25zdCBDSElQU19WQUxVRV9BQ0NFU1NPUiA9IHtcclxuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBOb3ZvQ2hpcHNFbGVtZW50KSxcclxuICBtdWx0aTogdHJ1ZSxcclxufTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY2hpcCxub3ZvLWNoaXAnLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICAgICAgPHNwYW4gKGNsaWNrKT1cIm9uU2VsZWN0KCRldmVudClcIiAobW91c2VlbnRlcik9XCJvblNlbGVjdCgkZXZlbnQpXCIgKG1vdXNlbGVhdmUpPVwib25EZXNlbGVjdCgkZXZlbnQpXCIgW25nQ2xhc3NdPVwiX3R5cGVcIj5cclxuICAgICAgICAgICAgPGkgKm5nSWY9XCJfdHlwZVwiIGNsYXNzPVwiYmhpLWNpcmNsZVwiPjwvaT5cclxuICAgICAgICAgICAgPHNwYW4+PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pjwvc3Bhbj5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPGkgY2xhc3M9XCJiaGktY2xvc2VcIiAqbmdJZj1cIiFkaXNhYmxlZFwiIChjbGljayk9XCJvblJlbW92ZSgkZXZlbnQpXCI+PC9pPlxyXG4gICAgYCxcclxufSlcclxuZXhwb3J0IGNsYXNzIE5vdm9DaGlwRWxlbWVudCB7XHJcbiAgQElucHV0KClcclxuICBzZXQgdHlwZSh0eXBlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX3R5cGUgPSB0eXBlID8gdHlwZS50b0xvd2VyQ2FzZSgpIDogbnVsbDtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgc2VsZWN0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KClcclxuICByZW1vdmU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKVxyXG4gIGRlc2VsZWN0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgZW50aXR5OiBzdHJpbmc7XHJcbiAgX3R5cGU6IHN0cmluZztcclxuXHJcbiAgb25SZW1vdmUoZSkge1xyXG4gICAgaWYgKGUpIHtcclxuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yZW1vdmUuZW1pdChlKTtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0KGUpIHtcclxuICAgIGlmIChlKSB7XHJcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgIH1cclxuICAgIHRoaXMuc2VsZWN0LmVtaXQoZSk7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBvbkRlc2VsZWN0KGUpIHtcclxuICAgIGlmIChlKSB7XHJcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgIH1cclxuICAgIHRoaXMuZGVzZWxlY3QuZW1pdChlKTtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY2hpcHMsbm92by1jaGlwcycsXHJcbiAgcHJvdmlkZXJzOiBbQ0hJUFNfVkFMVUVfQUNDRVNTT1JdLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm5vdm8tY2hpcC1jb250YWluZXJcIj5cclxuICAgICAgICAgIDxub3ZvLWNoaXBcclxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBfaXRlbXMgfCBhc3luY1wiXHJcbiAgICAgICAgICAgICAgW3R5cGVdPVwidHlwZSB8fCBpdGVtPy52YWx1ZT8uc2VhcmNoRW50aXR5XCJcclxuICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiaXRlbSA9PSBzZWxlY3RlZFwiXHJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVQaWNrZXJJbnB1dFwiXHJcbiAgICAgICAgICAgICAgKHJlbW92ZSk9XCJyZW1vdmUoJGV2ZW50LCBpdGVtKVwiXHJcbiAgICAgICAgICAgICAgKHNlbGVjdCk9XCJzZWxlY3QoJGV2ZW50LCBpdGVtKVwiXHJcbiAgICAgICAgICAgICAgKGRlc2VsZWN0KT1cImRlc2VsZWN0KCRldmVudCwgaXRlbSlcIj5cclxuICAgICAgICAgICAgICB7eyBpdGVtLmxhYmVsIH19XHJcbiAgICAgICAgICA8L25vdm8tY2hpcD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbnB1dC1jb250YWluZXJcIiAqbmdJZj1cIiFtYXhsZW5ndGggfHwgKG1heGxlbmd0aCAmJiBpdGVtcy5sZW5ndGggPCBtYXhsZW5ndGgpXCI+XHJcbiAgICAgICAgICAgIDxub3ZvLXBpY2tlclxyXG4gICAgICAgICAgICAgICAgY2xlYXJWYWx1ZU9uU2VsZWN0PVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbY2xvc2VPblNlbGVjdF09XCJjbG9zZU9uU2VsZWN0XCJcclxuICAgICAgICAgICAgICAgIFtjb25maWddPVwic291cmNlXCJcclxuICAgICAgICAgICAgICAgIFtkaXNhYmxlUGlja2VySW5wdXRdPVwiZGlzYWJsZVBpY2tlcklucHV0XCJcclxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIml0ZW1Ub0FkZFwiXHJcbiAgICAgICAgICAgICAgICAoc2VsZWN0KT1cImFkZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIChmb2N1cyk9XCJvbkZvY3VzKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgKHR5cGluZyk9XCJvblR5cGluZygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIChibHVyKT1cIm9uVG91Y2hlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIFtzZWxlY3RlZF09XCJpdGVtc1wiXHJcbiAgICAgICAgICAgICAgICBbb3ZlcnJpZGVFbGVtZW50XT1cImVsZW1lbnRcIj5cclxuICAgICAgICAgICAgPC9ub3ZvLXBpY2tlcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJldmlldy1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgPHNwYW4gI3ByZXZpZXc+PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxpIGNsYXNzPVwiYmhpLXNlYXJjaFwiIFtjbGFzcy5oYXMtdmFsdWVdPVwiaXRlbXMubGVuZ3RoXCIgKm5nSWY9XCIhZGlzYWJsZVBpY2tlcklucHV0XCI+PC9pPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImNsZWFyLWFsbFwiICpuZ0lmPVwiaXRlbXMubGVuZ3RoICYmICFkaXNhYmxlUGlja2VySW5wdXRcIiAoY2xpY2spPVwiY2xlYXJWYWx1ZSgpXCI+e3sgbGFiZWxzLmNsZWFyQWxsIH19IDxpIGNsYXNzPVwiYmhpLXRpbWVzXCI+PC9pPjwvbGFiZWw+XHJcbiAgIGAsXHJcbiAgaG9zdDoge1xyXG4gICAgJ1tjbGFzcy53aXRoLXZhbHVlXSc6ICdpdGVtcy5sZW5ndGggPiAwJyxcclxuICAgICdbY2xhc3MuZGlzYWJsZWRdJzogJ2Rpc2FibGVQaWNrZXJJbnB1dCcsXHJcbiAgfSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE5vdm9DaGlwc0VsZW1lbnQgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuICBASW5wdXQoKVxyXG4gIGNsb3NlT25TZWxlY3Q6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKVxyXG4gIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnJztcclxuICBASW5wdXQoKVxyXG4gIHNvdXJjZTogYW55O1xyXG4gIEBJbnB1dCgpXHJcbiAgbWF4bGVuZ3RoOiBhbnk7XHJcbiAgQElucHV0KClcclxuICB0eXBlOiBhbnk7XHJcbiAgQElucHV0KClcclxuICBzZXQgZGlzYWJsZVBpY2tlcklucHV0KHY6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2Rpc2FibGVQaWNrZXJJbnB1dCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KTtcclxuICB9XHJcbiAgZ2V0IGRpc2FibGVQaWNrZXJJbnB1dCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlUGlja2VySW5wdXQ7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2Rpc2FibGVQaWNrZXJJbnB1dDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBjaGFuZ2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KClcclxuICBmb2N1czogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpXHJcbiAgYmx1cjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpXHJcbiAgdHlwaW5nOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgQFZpZXdDaGlsZCgncHJldmlldycsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KVxyXG4gIHByZXZpZXc6IFZpZXdDb250YWluZXJSZWY7XHJcblxyXG4gIGl0ZW1zOiBBcnJheTxhbnk+ID0gW107XHJcbiAgc2VsZWN0ZWQ6IGFueSA9IG51bGw7XHJcbiAgY29uZmlnOiBhbnkgPSB7fTtcclxuICBtb2RlbDogYW55O1xyXG4gIGl0ZW1Ub0FkZDogYW55O1xyXG4gIHBvcHVwOiBhbnk7XHJcbiAgLy8gcHJpdmF0ZSBkYXRhIG1vZGVsXHJcbiAgX3ZhbHVlOiBhbnkgPSAnJztcclxuICBfaXRlbXMgPSBuZXcgUmVwbGF5U3ViamVjdCgxKTtcclxuICAvLyBQbGFjZWhvbGRlcnMgZm9yIHRoZSBjYWxsYmFja3NcclxuICBvbk1vZGVsQ2hhbmdlOiBGdW5jdGlvbiA9ICgpID0+IHt9O1xyXG4gIG9uTW9kZWxUb3VjaGVkOiBGdW5jdGlvbiA9ICgpID0+IHt9O1xyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZWxlbWVudDogRWxlbWVudFJlZiwgcHJpdmF0ZSBjb21wb25lbnRVdGlsczogQ29tcG9uZW50VXRpbHMsIHB1YmxpYyBsYWJlbHM6IE5vdm9MYWJlbFNlcnZpY2UpIHt9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5zZXRJdGVtcygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHZhbHVlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgdmFsdWUoc2VsZWN0ZWQpIHtcclxuICAgIHRoaXMuaXRlbVRvQWRkID0gJyc7XHJcbiAgICBpZiAoc2VsZWN0ZWQgIT09IHRoaXMuX3ZhbHVlKSB7XHJcbiAgICAgIHRoaXMuX3ZhbHVlID0gc2VsZWN0ZWQ7XHJcbiAgICAgIHRoaXMuY2hhbmdlZC5lbWl0KHsgdmFsdWU6IHNlbGVjdGVkLCByYXdWYWx1ZTogdGhpcy5pdGVtcyB9KTtcclxuICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHNlbGVjdGVkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsZWFyVmFsdWUoKSB7XHJcbiAgICB0aGlzLml0ZW1zID0gW107XHJcbiAgICB0aGlzLl9pdGVtcy5uZXh0KHRoaXMuaXRlbXMpO1xyXG4gICAgdGhpcy52YWx1ZSA9IG51bGw7XHJcbiAgICB0aGlzLmNoYW5nZWQuZW1pdCh7IHZhbHVlOiB0aGlzLnZhbHVlLCByYXdWYWx1ZTogdGhpcy5pdGVtcyB9KTtcclxuICAgIHRoaXMub25Nb2RlbENoYW5nZSh0aGlzLnZhbHVlKTtcclxuICB9XHJcblxyXG4gIHNldEl0ZW1zKCkge1xyXG4gICAgdGhpcy5pdGVtcyA9IFtdO1xyXG4gICAgaWYgKHRoaXMubW9kZWwgJiYgQXJyYXkuaXNBcnJheSh0aGlzLm1vZGVsKSkge1xyXG4gICAgICBjb25zdCBub0xhYmVscyA9IFtdO1xyXG4gICAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIHRoaXMubW9kZWwpIHtcclxuICAgICAgICBsZXQgbGFiZWw7XHJcbiAgICAgICAgaWYgKHRoaXMuc291cmNlICYmIHRoaXMuc291cmNlLmZvcm1hdCAmJiBIZWxwZXJzLnZhbGlkYXRlSW50ZXJwb2xhdGlvblByb3BzKHRoaXMuc291cmNlLmZvcm1hdCwgdmFsdWUpKSB7XHJcbiAgICAgICAgICBsYWJlbCA9IEhlbHBlcnMuaW50ZXJwb2xhdGUodGhpcy5zb3VyY2UuZm9ybWF0LCB2YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLnNvdXJjZSAmJiBsYWJlbCAmJiBsYWJlbCAhPT0gdGhpcy5zb3VyY2UuZm9ybWF0KSB7XHJcbiAgICAgICAgICB0aGlzLml0ZW1zLnB1c2goe1xyXG4gICAgICAgICAgICB2YWx1ZSxcclxuICAgICAgICAgICAgbGFiZWwsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc291cmNlLmdldExhYmVscyAmJiB0eXBlb2YgdGhpcy5zb3VyY2UuZ2V0TGFiZWxzID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICBub0xhYmVscy5wdXNoKHZhbHVlKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc291cmNlLm9wdGlvbnMgJiYgQXJyYXkuaXNBcnJheSh0aGlzLnNvdXJjZS5vcHRpb25zKSkge1xyXG4gICAgICAgICAgdGhpcy5pdGVtcy5wdXNoKHRoaXMuZ2V0TGFiZWxGcm9tT3B0aW9ucyh2YWx1ZSkpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zb3VyY2UuY2F0ZWdvcnlNYXAgJiYgdGhpcy5zb3VyY2UuY2F0ZWdvcnlNYXAuc2l6ZSkge1xyXG4gICAgICAgICAgdGhpcy5pdGVtcy5wdXNoKHZhbHVlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5pdGVtcy5wdXNoKHtcclxuICAgICAgICAgICAgdmFsdWUsXHJcbiAgICAgICAgICAgIGxhYmVsOiB2YWx1ZSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAobm9MYWJlbHMubGVuZ3RoID4gMCAmJiB0aGlzLnNvdXJjZSAmJiB0aGlzLnNvdXJjZS5nZXRMYWJlbHMgJiYgdHlwZW9mIHRoaXMuc291cmNlLmdldExhYmVscyA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgIHRoaXMuc291cmNlLmdldExhYmVscyhub0xhYmVscykudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIHJlc3VsdCkge1xyXG4gICAgICAgICAgICBpZiAodmFsdWUuaGFzT3duUHJvcGVydHkoJ2xhYmVsJykpIHtcclxuICAgICAgICAgICAgICB0aGlzLml0ZW1zLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgdmFsdWUsXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogdmFsdWUubGFiZWwsXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5zb3VyY2Uub3B0aW9ucyAmJiBBcnJheS5pc0FycmF5KHRoaXMuc291cmNlLm9wdGlvbnMpKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5pdGVtcy5wdXNoKHRoaXMuZ2V0TGFiZWxGcm9tT3B0aW9ucyh2YWx1ZSkpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuaXRlbXMucHVzaCh2YWx1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuX2l0ZW1zLm5leHQodGhpcy5pdGVtcyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuY2hhbmdlZC5lbWl0KHsgdmFsdWU6IHRoaXMubW9kZWwsIHJhd1ZhbHVlOiB0aGlzLml0ZW1zIH0pO1xyXG4gICAgdGhpcy5faXRlbXMubmV4dCh0aGlzLml0ZW1zKTtcclxuICB9XHJcblxyXG4gIGdldExhYmVsRnJvbU9wdGlvbnModmFsdWUpIHtcclxuICAgIGxldCBpZCA9IHZhbHVlO1xyXG4gICAgbGV0IG9wdExhYmVsID0gdGhpcy5zb3VyY2Uub3B0aW9ucy5maW5kKCh2YWwpID0+IHZhbC52YWx1ZSA9PT0gdmFsdWUpO1xyXG4gICAgaWYgKCFvcHRMYWJlbCAmJiB2YWx1ZS5oYXNPd25Qcm9wZXJ0eSgnaWQnKSkge1xyXG4gICAgICBvcHRMYWJlbCA9IHRoaXMuc291cmNlLm9wdGlvbnMuZmluZCgodmFsKSA9PiB2YWwudmFsdWUgPT09IHZhbHVlLmlkKTtcclxuICAgICAgaWQgPSB2YWx1ZS5pZDtcclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgIHZhbHVlOiBpZCxcclxuICAgICAgbGFiZWw6IG9wdExhYmVsID8gb3B0TGFiZWwubGFiZWwgOiB2YWx1ZSxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBkZXNlbGVjdEFsbChldmVudD8pIHtcclxuICAgIHRoaXMuc2VsZWN0ZWQgPSBudWxsO1xyXG4gICAgdGhpcy5oaWRlUHJldmlldygpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0KGV2ZW50PywgaXRlbT8pIHtcclxuICAgIHRoaXMuYmx1ci5lbWl0KGV2ZW50KTtcclxuICAgIHRoaXMuZGVzZWxlY3RBbGwoKTtcclxuICAgIHRoaXMuc2VsZWN0ZWQgPSBpdGVtO1xyXG4gICAgdGhpcy5zaG93UHJldmlldygpO1xyXG4gIH1cclxuXHJcbiAgZGVzZWxlY3QoZXZlbnQ/LCBpdGVtPykge1xyXG4gICAgdGhpcy5ibHVyLmVtaXQoZXZlbnQpO1xyXG4gICAgdGhpcy5kZXNlbGVjdEFsbCgpO1xyXG4gIH1cclxuXHJcbiAgb25UeXBpbmcoZXZlbnQ/KSB7XHJcbiAgICB0aGlzLnR5cGluZy5lbWl0KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIG9uRm9jdXMoZXZlbnQ/KSB7XHJcbiAgICB0aGlzLmRlc2VsZWN0QWxsKCk7XHJcbiAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdzZWxlY3RlZCcpO1xyXG4gICAgdGhpcy5mb2N1cy5lbWl0KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIGFkZChldmVudCkge1xyXG4gICAgaWYgKGV2ZW50ICYmICEoZXZlbnQgaW5zdGFuY2VvZiBFdmVudCkpIHtcclxuICAgICAgdGhpcy5pdGVtcy5wdXNoKGV2ZW50KTtcclxuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuc291cmNlICYmIHRoaXMuc291cmNlLnZhbHVlRm9ybWF0dGVyID8gdGhpcy5zb3VyY2UudmFsdWVGb3JtYXR0ZXIodGhpcy5pdGVtcykgOiB0aGlzLml0ZW1zLm1hcCgoaSkgPT4gaS52YWx1ZSk7XHJcbiAgICAgIC8vIFNldCBmb2N1cyBvbiB0aGUgcGlja2VyXHJcbiAgICAgIGNvbnN0IGlucHV0ID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3Rvcignbm92by1waWNrZXIgPiBpbnB1dCcpO1xyXG4gICAgICBpZiAoaW5wdXQpIHtcclxuICAgICAgICBpbnB1dC5mb2N1cygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLl9pdGVtcy5uZXh0KHRoaXMuaXRlbXMpO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlKGV2ZW50LCBpdGVtKSB7XHJcbiAgICBpZiAoZXZlbnQpIHtcclxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLml0ZW1zLnNwbGljZSh0aGlzLml0ZW1zLmluZGV4T2YoaXRlbSksIDEpO1xyXG4gICAgdGhpcy5kZXNlbGVjdEFsbCgpO1xyXG4gICAgdGhpcy52YWx1ZSA9IHRoaXMuc291cmNlICYmIHRoaXMuc291cmNlLnZhbHVlRm9ybWF0dGVyID8gdGhpcy5zb3VyY2UudmFsdWVGb3JtYXR0ZXIodGhpcy5pdGVtcykgOiB0aGlzLml0ZW1zLm1hcCgoaSkgPT4gaS52YWx1ZSk7XHJcbiAgICB0aGlzLmNoYW5nZWQuZW1pdCh7IHZhbHVlOiB0aGlzLnZhbHVlLmxlbmd0aCA/IHRoaXMudmFsdWUgOiAnJywgcmF3VmFsdWU6IHRoaXMuaXRlbXMgfSk7XHJcbiAgICB0aGlzLm9uTW9kZWxDaGFuZ2UodGhpcy52YWx1ZS5sZW5ndGggPyB0aGlzLnZhbHVlIDogJycpO1xyXG4gICAgdGhpcy5faXRlbXMubmV4dCh0aGlzLml0ZW1zKTtcclxuICB9XHJcblxyXG4gIG9uS2V5RG93bihldmVudCkge1xyXG4gICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IEtleUNvZGVzLkJBQ0tTUEFDRSkge1xyXG4gICAgICBpZiAoZXZlbnQudGFyZ2V0ICYmIGV2ZW50LnRhcmdldC52YWx1ZS5sZW5ndGggPT09IDAgJiYgdGhpcy5pdGVtcy5sZW5ndGgpIHtcclxuICAgICAgICBpZiAoZXZlbnQpIHtcclxuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWQpIHtcclxuICAgICAgICAgIHRoaXMucmVtb3ZlKGV2ZW50LCB0aGlzLnNlbGVjdGVkKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3QoZXZlbnQsIHRoaXMuaXRlbXNbdGhpcy5pdGVtcy5sZW5ndGggLSAxXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBTZXQgdG91Y2hlZCBvbiBibHVyXHJcbiAgb25Ub3VjaGVkKGUpIHtcclxuICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdGVkJyk7XHJcbiAgICB0aGlzLm9uTW9kZWxUb3VjaGVkKCk7XHJcbiAgICB0aGlzLmJsdXIuZW1pdChlKTtcclxuICB9XHJcblxyXG4gIHdyaXRlVmFsdWUobW9kZWw6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5tb2RlbCA9IG1vZGVsO1xyXG4gICAgdGhpcy5zZXRJdGVtcygpO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogRnVuY3Rpb24pOiB2b2lkIHtcclxuICAgIHRoaXMub25Nb2RlbENoYW5nZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IEZ1bmN0aW9uKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uTW9kZWxUb3VjaGVkID0gZm47XHJcbiAgfVxyXG5cclxuICBzZXREaXNhYmxlZFN0YXRlKGRpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kaXNhYmxlUGlja2VySW5wdXQgPSBkaXNhYmxlZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBUaGlzIG1ldGhvZCBjcmVhdGVzIGFuIGluc3RhbmNlIG9mIHRoZSBwcmV2aWV3IChjYWxsZWQgcG9wdXApIGFuZCBhZGRzIGFsbCB0aGUgYmluZGluZ3MgdG8gdGhhdFxyXG4gICAqIGluc3RhbmNlLiBXaWxsIHJldXNlIHRoZSBwb3B1cCBvciBjcmVhdGUgYSBuZXcgb25lIGlmIGl0IGRvZXMgbm90IGFscmVhZHkgZXhpc3QuIFdpbGwgb25seSB3b3JrIGlmIHRoZXJlIGlzXHJcbiAgICogYSBwcmV2aWV3VGVtcGxhdGUgZ2l2ZW4gaW4gdGhlIGNvbmZpZy5cclxuICAgKi9cclxuICBzaG93UHJldmlldygpIHtcclxuICAgIGlmICh0aGlzLnNvdXJjZS5wcmV2aWV3VGVtcGxhdGUpIHtcclxuICAgICAgaWYgKCF0aGlzLnBvcHVwKSB7XHJcbiAgICAgICAgdGhpcy5wb3B1cCA9IHRoaXMuY29tcG9uZW50VXRpbHMuYXBwZW5kKHRoaXMuc291cmNlLnByZXZpZXdUZW1wbGF0ZSwgdGhpcy5wcmV2aWV3KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnBvcHVwLmluc3RhbmNlLm1hdGNoID0gdGhpcy5zZWxlY3RlZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiAtIFRoaXMgbWV0aG9kIGRlbGV0ZXMgdGhlIHByZXZpZXcgcG9wdXAgZnJvbSB0aGUgRE9NLlxyXG4gICAqL1xyXG4gIGhpZGVQcmV2aWV3KCkge1xyXG4gICAgaWYgKHRoaXMucG9wdXApIHtcclxuICAgICAgdGhpcy5wb3B1cC5kZXN0cm95KCk7XHJcbiAgICAgIHRoaXMucG9wdXAgPSBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
1
|
+
// NG2
|
|
2
|
+
import { Component, EventEmitter, Input, Output, forwardRef, ElementRef, ViewChild, ViewContainerRef } from '@angular/core';
|
|
3
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
4
|
+
// Vendor
|
|
5
|
+
import { ReplaySubject } from 'rxjs';
|
|
6
|
+
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
7
|
+
// APP
|
|
8
|
+
import { KeyCodes } from '../../utils/key-codes/KeyCodes';
|
|
9
|
+
import { Helpers } from '../../utils/Helpers';
|
|
10
|
+
import { NovoLabelService } from '../../services/novo-label-service';
|
|
11
|
+
import { ComponentUtils } from '../../utils/component-utils/ComponentUtils';
|
|
12
|
+
// Value accessor for the component (supports ngModel)
|
|
13
|
+
const CHIPS_VALUE_ACCESSOR = {
|
|
14
|
+
provide: NG_VALUE_ACCESSOR,
|
|
15
|
+
useExisting: forwardRef(() => NovoChipsElement),
|
|
16
|
+
multi: true,
|
|
17
|
+
};
|
|
18
|
+
export class NovoChipElement {
|
|
19
|
+
constructor() {
|
|
20
|
+
this.disabled = false;
|
|
21
|
+
this.select = new EventEmitter();
|
|
22
|
+
this.remove = new EventEmitter();
|
|
23
|
+
this.deselect = new EventEmitter();
|
|
24
|
+
}
|
|
25
|
+
set type(type) {
|
|
26
|
+
this._type = type ? type.toLowerCase() : null;
|
|
27
|
+
}
|
|
28
|
+
onRemove(e) {
|
|
29
|
+
if (e) {
|
|
30
|
+
e.stopPropagation();
|
|
31
|
+
e.preventDefault();
|
|
32
|
+
}
|
|
33
|
+
this.remove.emit(e);
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
onSelect(e) {
|
|
37
|
+
if (e) {
|
|
38
|
+
e.stopPropagation();
|
|
39
|
+
e.preventDefault();
|
|
40
|
+
}
|
|
41
|
+
this.select.emit(e);
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
onDeselect(e) {
|
|
45
|
+
if (e) {
|
|
46
|
+
e.stopPropagation();
|
|
47
|
+
e.preventDefault();
|
|
48
|
+
}
|
|
49
|
+
this.deselect.emit(e);
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
NovoChipElement.decorators = [
|
|
54
|
+
{ type: Component, args: [{
|
|
55
|
+
selector: 'chip,novo-chip',
|
|
56
|
+
template: `
|
|
57
|
+
<span (click)="onSelect($event)" (mouseenter)="onSelect($event)" (mouseleave)="onDeselect($event)" [ngClass]="_type">
|
|
58
|
+
<i *ngIf="_type" class="bhi-circle"></i>
|
|
59
|
+
<span><ng-content></ng-content></span>
|
|
60
|
+
</span>
|
|
61
|
+
<i class="bhi-close" *ngIf="!disabled" (click)="onRemove($event)"></i>
|
|
62
|
+
`
|
|
63
|
+
},] }
|
|
64
|
+
];
|
|
65
|
+
NovoChipElement.propDecorators = {
|
|
66
|
+
type: [{ type: Input }],
|
|
67
|
+
disabled: [{ type: Input }],
|
|
68
|
+
select: [{ type: Output }],
|
|
69
|
+
remove: [{ type: Output }],
|
|
70
|
+
deselect: [{ type: Output }]
|
|
71
|
+
};
|
|
72
|
+
export class NovoChipsElement {
|
|
73
|
+
constructor(element, componentUtils, labels) {
|
|
74
|
+
this.element = element;
|
|
75
|
+
this.componentUtils = componentUtils;
|
|
76
|
+
this.labels = labels;
|
|
77
|
+
this.closeOnSelect = false;
|
|
78
|
+
this.placeholder = '';
|
|
79
|
+
this._disablePickerInput = false;
|
|
80
|
+
this.changed = new EventEmitter();
|
|
81
|
+
this.focus = new EventEmitter();
|
|
82
|
+
this.blur = new EventEmitter();
|
|
83
|
+
this.typing = new EventEmitter();
|
|
84
|
+
this.items = [];
|
|
85
|
+
this.selected = null;
|
|
86
|
+
this.config = {};
|
|
87
|
+
// private data model
|
|
88
|
+
this._value = '';
|
|
89
|
+
this._items = new ReplaySubject(1);
|
|
90
|
+
// Placeholders for the callbacks
|
|
91
|
+
this.onModelChange = () => { };
|
|
92
|
+
this.onModelTouched = () => { };
|
|
93
|
+
}
|
|
94
|
+
set disablePickerInput(v) {
|
|
95
|
+
this._disablePickerInput = coerceBooleanProperty(v);
|
|
96
|
+
}
|
|
97
|
+
get disablePickerInput() {
|
|
98
|
+
return this._disablePickerInput;
|
|
99
|
+
}
|
|
100
|
+
ngOnInit() {
|
|
101
|
+
this.setItems();
|
|
102
|
+
}
|
|
103
|
+
get value() {
|
|
104
|
+
return this._value;
|
|
105
|
+
}
|
|
106
|
+
set value(selected) {
|
|
107
|
+
this.itemToAdd = '';
|
|
108
|
+
if (selected !== this._value) {
|
|
109
|
+
this._value = selected;
|
|
110
|
+
this.changed.emit({ value: selected, rawValue: this.items });
|
|
111
|
+
this.onModelChange(selected);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
clearValue() {
|
|
115
|
+
this.items = [];
|
|
116
|
+
this._items.next(this.items);
|
|
117
|
+
this.value = null;
|
|
118
|
+
this.changed.emit({ value: this.value, rawValue: this.items });
|
|
119
|
+
this.onModelChange(this.value);
|
|
120
|
+
}
|
|
121
|
+
setItems() {
|
|
122
|
+
this.items = [];
|
|
123
|
+
if (this.model && Array.isArray(this.model)) {
|
|
124
|
+
const noLabels = [];
|
|
125
|
+
for (const value of this.model) {
|
|
126
|
+
let label;
|
|
127
|
+
if (this.source && this.source.format && Helpers.validateInterpolationProps(this.source.format, value)) {
|
|
128
|
+
label = Helpers.interpolate(this.source.format, value);
|
|
129
|
+
}
|
|
130
|
+
if (this.source && label && label !== this.source.format) {
|
|
131
|
+
this.items.push({
|
|
132
|
+
value,
|
|
133
|
+
label,
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
else if (this.source.getLabels && typeof this.source.getLabels === 'function') {
|
|
137
|
+
noLabels.push(value);
|
|
138
|
+
}
|
|
139
|
+
else if (this.source.options && Array.isArray(this.source.options)) {
|
|
140
|
+
this.items.push(this.getLabelFromOptions(value));
|
|
141
|
+
}
|
|
142
|
+
else if (this.source.categoryMap && this.source.categoryMap.size) {
|
|
143
|
+
this.items.push(value);
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
this.items.push({
|
|
147
|
+
value,
|
|
148
|
+
label: value,
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
if (noLabels.length > 0 && this.source && this.source.getLabels && typeof this.source.getLabels === 'function') {
|
|
153
|
+
this.source.getLabels(noLabels).then((result) => {
|
|
154
|
+
for (const value of result) {
|
|
155
|
+
if (value.hasOwnProperty('label')) {
|
|
156
|
+
this.items.push({
|
|
157
|
+
value,
|
|
158
|
+
label: value.label,
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
else if (this.source.options && Array.isArray(this.source.options)) {
|
|
162
|
+
this.items.push(this.getLabelFromOptions(value));
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
this.items.push(value);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
this._items.next(this.items);
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
this.changed.emit({ value: this.model, rawValue: this.items });
|
|
173
|
+
this._items.next(this.items);
|
|
174
|
+
}
|
|
175
|
+
getLabelFromOptions(value) {
|
|
176
|
+
let id = value;
|
|
177
|
+
let optLabel = this.source.options.find((val) => val.value === value);
|
|
178
|
+
if (!optLabel && value.hasOwnProperty('id')) {
|
|
179
|
+
optLabel = this.source.options.find((val) => val.value === value.id);
|
|
180
|
+
id = value.id;
|
|
181
|
+
}
|
|
182
|
+
return {
|
|
183
|
+
value: id,
|
|
184
|
+
label: optLabel ? optLabel.label : value,
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
deselectAll(event) {
|
|
188
|
+
this.selected = null;
|
|
189
|
+
this.hidePreview();
|
|
190
|
+
}
|
|
191
|
+
select(event, item) {
|
|
192
|
+
this.blur.emit(event);
|
|
193
|
+
this.deselectAll();
|
|
194
|
+
this.selected = item;
|
|
195
|
+
this.showPreview();
|
|
196
|
+
}
|
|
197
|
+
deselect(event, item) {
|
|
198
|
+
this.blur.emit(event);
|
|
199
|
+
this.deselectAll();
|
|
200
|
+
}
|
|
201
|
+
onTyping(event) {
|
|
202
|
+
this.typing.emit(event);
|
|
203
|
+
}
|
|
204
|
+
onFocus(event) {
|
|
205
|
+
this.deselectAll();
|
|
206
|
+
this.element.nativeElement.classList.add('selected');
|
|
207
|
+
this.focus.emit(event);
|
|
208
|
+
}
|
|
209
|
+
add(event) {
|
|
210
|
+
if (event && !(event instanceof Event)) {
|
|
211
|
+
this.items.push(event);
|
|
212
|
+
this.value = this.source && this.source.valueFormatter ? this.source.valueFormatter(this.items) : this.items.map((i) => i.value);
|
|
213
|
+
// Set focus on the picker
|
|
214
|
+
const input = this.element.nativeElement.querySelector('novo-picker > input');
|
|
215
|
+
if (input) {
|
|
216
|
+
input.focus();
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
this._items.next(this.items);
|
|
220
|
+
}
|
|
221
|
+
remove(event, item) {
|
|
222
|
+
if (event) {
|
|
223
|
+
event.stopPropagation();
|
|
224
|
+
event.preventDefault();
|
|
225
|
+
}
|
|
226
|
+
this.items.splice(this.items.indexOf(item), 1);
|
|
227
|
+
this.deselectAll();
|
|
228
|
+
this.value = this.source && this.source.valueFormatter ? this.source.valueFormatter(this.items) : this.items.map((i) => i.value);
|
|
229
|
+
this.changed.emit({ value: this.value.length ? this.value : '', rawValue: this.items });
|
|
230
|
+
this.onModelChange(this.value.length ? this.value : '');
|
|
231
|
+
this._items.next(this.items);
|
|
232
|
+
}
|
|
233
|
+
onKeyDown(event) {
|
|
234
|
+
if (event.keyCode === KeyCodes.BACKSPACE) {
|
|
235
|
+
if (event.target && event.target.value.length === 0 && this.items.length) {
|
|
236
|
+
if (event) {
|
|
237
|
+
event.stopPropagation();
|
|
238
|
+
event.preventDefault();
|
|
239
|
+
}
|
|
240
|
+
if (this.selected) {
|
|
241
|
+
this.remove(event, this.selected);
|
|
242
|
+
}
|
|
243
|
+
else {
|
|
244
|
+
this.select(event, this.items[this.items.length - 1]);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
// Set touched on blur
|
|
250
|
+
onTouched(e) {
|
|
251
|
+
this.element.nativeElement.classList.remove('selected');
|
|
252
|
+
this.onModelTouched();
|
|
253
|
+
this.blur.emit(e);
|
|
254
|
+
}
|
|
255
|
+
writeValue(model) {
|
|
256
|
+
this.model = model;
|
|
257
|
+
this.setItems();
|
|
258
|
+
}
|
|
259
|
+
registerOnChange(fn) {
|
|
260
|
+
this.onModelChange = fn;
|
|
261
|
+
}
|
|
262
|
+
registerOnTouched(fn) {
|
|
263
|
+
this.onModelTouched = fn;
|
|
264
|
+
}
|
|
265
|
+
setDisabledState(disabled) {
|
|
266
|
+
this._disablePickerInput = disabled;
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* @description This method creates an instance of the preview (called popup) and adds all the bindings to that
|
|
270
|
+
* instance. Will reuse the popup or create a new one if it does not already exist. Will only work if there is
|
|
271
|
+
* a previewTemplate given in the config.
|
|
272
|
+
*/
|
|
273
|
+
showPreview() {
|
|
274
|
+
if (this.source.previewTemplate) {
|
|
275
|
+
if (!this.popup) {
|
|
276
|
+
this.popup = this.componentUtils.append(this.source.previewTemplate, this.preview);
|
|
277
|
+
}
|
|
278
|
+
this.popup.instance.match = this.selected;
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* @description - This method deletes the preview popup from the DOM.
|
|
283
|
+
*/
|
|
284
|
+
hidePreview() {
|
|
285
|
+
if (this.popup) {
|
|
286
|
+
this.popup.destroy();
|
|
287
|
+
this.popup = null;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
NovoChipsElement.decorators = [
|
|
292
|
+
{ type: Component, args: [{
|
|
293
|
+
selector: 'chips,novo-chips',
|
|
294
|
+
providers: [CHIPS_VALUE_ACCESSOR],
|
|
295
|
+
template: `
|
|
296
|
+
<div class="novo-chip-container">
|
|
297
|
+
<novo-chip
|
|
298
|
+
*ngFor="let item of _items | async"
|
|
299
|
+
[type]="type || item?.value?.searchEntity"
|
|
300
|
+
[class.selected]="item == selected"
|
|
301
|
+
[disabled]="disablePickerInput"
|
|
302
|
+
(remove)="remove($event, item)"
|
|
303
|
+
(select)="select($event, item)"
|
|
304
|
+
(deselect)="deselect($event, item)">
|
|
305
|
+
{{ item.label }}
|
|
306
|
+
</novo-chip>
|
|
307
|
+
</div>
|
|
308
|
+
<div class="chip-input-container" *ngIf="!maxlength || (maxlength && items.length < maxlength)">
|
|
309
|
+
<novo-picker
|
|
310
|
+
clearValueOnSelect="true"
|
|
311
|
+
[closeOnSelect]="closeOnSelect"
|
|
312
|
+
[config]="source"
|
|
313
|
+
[disablePickerInput]="disablePickerInput"
|
|
314
|
+
[placeholder]="placeholder"
|
|
315
|
+
[(ngModel)]="itemToAdd"
|
|
316
|
+
(select)="add($event)"
|
|
317
|
+
(keydown)="onKeyDown($event)"
|
|
318
|
+
(focus)="onFocus($event)"
|
|
319
|
+
(typing)="onTyping($event)"
|
|
320
|
+
(blur)="onTouched($event)"
|
|
321
|
+
[selected]="items"
|
|
322
|
+
[overrideElement]="element">
|
|
323
|
+
</novo-picker>
|
|
324
|
+
</div>
|
|
325
|
+
<div class="preview-container">
|
|
326
|
+
<span #preview></span>
|
|
327
|
+
</div>
|
|
328
|
+
<i class="bhi-search" [class.has-value]="items.length" *ngIf="!disablePickerInput"></i>
|
|
329
|
+
<label class="clear-all" *ngIf="items.length && !disablePickerInput" (click)="clearValue()">{{ labels.clearAll }} <i class="bhi-times"></i></label>
|
|
330
|
+
`,
|
|
331
|
+
host: {
|
|
332
|
+
'[class.with-value]': 'items.length > 0',
|
|
333
|
+
'[class.disabled]': 'disablePickerInput',
|
|
334
|
+
}
|
|
335
|
+
},] }
|
|
336
|
+
];
|
|
337
|
+
NovoChipsElement.ctorParameters = () => [
|
|
338
|
+
{ type: ElementRef },
|
|
339
|
+
{ type: ComponentUtils },
|
|
340
|
+
{ type: NovoLabelService }
|
|
341
|
+
];
|
|
342
|
+
NovoChipsElement.propDecorators = {
|
|
343
|
+
closeOnSelect: [{ type: Input }],
|
|
344
|
+
placeholder: [{ type: Input }],
|
|
345
|
+
source: [{ type: Input }],
|
|
346
|
+
maxlength: [{ type: Input }],
|
|
347
|
+
type: [{ type: Input }],
|
|
348
|
+
disablePickerInput: [{ type: Input }],
|
|
349
|
+
changed: [{ type: Output }],
|
|
350
|
+
focus: [{ type: Output }],
|
|
351
|
+
blur: [{ type: Output }],
|
|
352
|
+
typing: [{ type: Output }],
|
|
353
|
+
preview: [{ type: ViewChild, args: ['preview', { read: ViewContainerRef },] }],
|
|
354
|
+
value: [{ type: Input }]
|
|
355
|
+
};
|
|
356
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2hpcHMuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvcnVubmVyL3dvcmsvbm92by1lbGVtZW50cy9ub3ZvLWVsZW1lbnRzL3Byb2plY3RzL25vdm8tZWxlbWVudHMvc3JjLyIsInNvdXJjZXMiOlsiZWxlbWVudHMvY2hpcHMvQ2hpcHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTTtBQUNOLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBVSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEksT0FBTyxFQUFFLGlCQUFpQixFQUF3QixNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLFNBQVM7QUFDVCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE1BQU07QUFDTixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDMUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUU1RSxzREFBc0Q7QUFDdEQsTUFBTSxvQkFBb0IsR0FBRztJQUMzQixPQUFPLEVBQUUsaUJBQWlCO0lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7SUFDL0MsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDO0FBWUYsTUFBTSxPQUFPLGVBQWU7SUFWNUI7UUFpQkUsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUcxQixXQUFNLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFL0MsV0FBTSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FB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cnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgZm9yd2FyZFJlZiwgRWxlbWVudFJlZiwgT25Jbml0LCBWaWV3Q2hpbGQsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SLCBDb250cm9sVmFsdWVBY2Nlc3NvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbi8vIFZlbmRvclxuaW1wb3J0IHsgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbi8vIEFQUFxuaW1wb3J0IHsgS2V5Q29kZXMgfSBmcm9tICcuLi8uLi91dGlscy9rZXktY29kZXMvS2V5Q29kZXMnO1xuaW1wb3J0IHsgSGVscGVycyB9IGZyb20gJy4uLy4uL3V0aWxzL0hlbHBlcnMnO1xuaW1wb3J0IHsgTm92b0xhYmVsU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL25vdm8tbGFiZWwtc2VydmljZSc7XG5pbXBvcnQgeyBDb21wb25lbnRVdGlscyB9IGZyb20gJy4uLy4uL3V0aWxzL2NvbXBvbmVudC11dGlscy9Db21wb25lbnRVdGlscyc7XG5cbi8vIFZhbHVlIGFjY2Vzc29yIGZvciB0aGUgY29tcG9uZW50IChzdXBwb3J0cyBuZ01vZGVsKVxuY29uc3QgQ0hJUFNfVkFMVUVfQUNDRVNTT1IgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBOb3ZvQ2hpcHNFbGVtZW50KSxcbiAgbXVsdGk6IHRydWUsXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjaGlwLG5vdm8tY2hpcCcsXG4gIHRlbXBsYXRlOiBgXG4gICAgICAgIDxzcGFuIChjbGljayk9XCJvblNlbGVjdCgkZXZlbnQpXCIgKG1vdXNlZW50ZXIpPVwib25TZWxlY3QoJGV2ZW50KVwiIChtb3VzZWxlYXZlKT1cIm9uRGVzZWxlY3QoJGV2ZW50KVwiIFtuZ0NsYXNzXT1cIl90eXBlXCI+XG4gICAgICAgICAgICA8aSAqbmdJZj1cIl90eXBlXCIgY2xhc3M9XCJiaGktY2lyY2xlXCI+PC9pPlxuICAgICAgICAgICAgPHNwYW4+PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pjwvc3Bhbj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8aSBjbGFzcz1cImJoaS1jbG9zZVwiICpuZ0lmPVwiIWRpc2FibGVkXCIgKGNsaWNrKT1cIm9uUmVtb3ZlKCRldmVudClcIj48L2k+XG4gICAgYCxcbn0pXG5leHBvcnQgY2xhc3MgTm92b0NoaXBFbGVtZW50IHtcbiAgQElucHV0KClcbiAgc2V0IHR5cGUodHlwZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fdHlwZSA9IHR5cGUgPyB0eXBlLnRvTG93ZXJDYXNlKCkgOiBudWxsO1xuICB9XG5cbiAgQElucHV0KClcbiAgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAT3V0cHV0KClcbiAgc2VsZWN0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpXG4gIHJlbW92ZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKVxuICBkZXNlbGVjdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgZW50aXR5OiBzdHJpbmc7XG4gIF90eXBlOiBzdHJpbmc7XG5cbiAgb25SZW1vdmUoZSkge1xuICAgIGlmIChlKSB7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgICB0aGlzLnJlbW92ZS5lbWl0KGUpO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIG9uU2VsZWN0KGUpIHtcbiAgICBpZiAoZSkge1xuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3QuZW1pdChlKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBvbkRlc2VsZWN0KGUpIHtcbiAgICBpZiAoZSkge1xuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gICAgdGhpcy5kZXNlbGVjdC5lbWl0KGUpO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjaGlwcyxub3ZvLWNoaXBzJyxcbiAgcHJvdmlkZXJzOiBbQ0hJUFNfVkFMVUVfQUNDRVNTT1JdLFxuICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2IGNsYXNzPVwibm92by1jaGlwLWNvbnRhaW5lclwiPlxuICAgICAgICAgIDxub3ZvLWNoaXBcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgX2l0ZW1zIHwgYXN5bmNcIlxuICAgICAgICAgICAgICBbdHlwZV09XCJ0eXBlIHx8IGl0ZW0/LnZhbHVlPy5zZWFyY2hFbnRpdHlcIlxuICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiaXRlbSA9PSBzZWxlY3RlZFwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlUGlja2VySW5wdXRcIlxuICAgICAgICAgICAgICAocmVtb3ZlKT1cInJlbW92ZSgkZXZlbnQsIGl0ZW0pXCJcbiAgICAgICAgICAgICAgKHNlbGVjdCk9XCJzZWxlY3QoJGV2ZW50LCBpdGVtKVwiXG4gICAgICAgICAgICAgIChkZXNlbGVjdCk9XCJkZXNlbGVjdCgkZXZlbnQsIGl0ZW0pXCI+XG4gICAgICAgICAgICAgIHt7IGl0ZW0ubGFiZWwgfX1cbiAgICAgICAgICA8L25vdm8tY2hpcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlucHV0LWNvbnRhaW5lclwiICpuZ0lmPVwiIW1heGxlbmd0aCB8fCAobWF4bGVuZ3RoICYmIGl0ZW1zLmxlbmd0aCA8IG1heGxlbmd0aClcIj5cbiAgICAgICAgICAgIDxub3ZvLXBpY2tlclxuICAgICAgICAgICAgICAgIGNsZWFyVmFsdWVPblNlbGVjdD1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtjbG9zZU9uU2VsZWN0XT1cImNsb3NlT25TZWxlY3RcIlxuICAgICAgICAgICAgICAgIFtjb25maWddPVwic291cmNlXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZVBpY2tlcklucHV0XT1cImRpc2FibGVQaWNrZXJJbnB1dFwiXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIml0ZW1Ub0FkZFwiXG4gICAgICAgICAgICAgICAgKHNlbGVjdCk9XCJhZGQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChmb2N1cyk9XCJvbkZvY3VzKCRldmVudClcIlxuICAgICAgICAgICAgICAgICh0eXBpbmcpPVwib25UeXBpbmcoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGJsdXIpPVwib25Ub3VjaGVkKCRldmVudClcIlxuICAgICAgICAgICAgICAgIFtzZWxlY3RlZF09XCJpdGVtc1wiXG4gICAgICAgICAgICAgICAgW292ZXJyaWRlRWxlbWVudF09XCJlbGVtZW50XCI+XG4gICAgICAgICAgICA8L25vdm8tcGlja2VyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInByZXZpZXctY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8c3BhbiAjcHJldmlldz48L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8aSBjbGFzcz1cImJoaS1zZWFyY2hcIiBbY2xhc3MuaGFzLXZhbHVlXT1cIml0ZW1zLmxlbmd0aFwiICpuZ0lmPVwiIWRpc2FibGVQaWNrZXJJbnB1dFwiPjwvaT5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwiY2xlYXItYWxsXCIgKm5nSWY9XCJpdGVtcy5sZW5ndGggJiYgIWRpc2FibGVQaWNrZXJJbnB1dFwiIChjbGljayk9XCJjbGVhclZhbHVlKClcIj57eyBsYWJlbHMuY2xlYXJBbGwgfX0gPGkgY2xhc3M9XCJiaGktdGltZXNcIj48L2k+PC9sYWJlbD5cbiAgIGAsXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzLndpdGgtdmFsdWVdJzogJ2l0ZW1zLmxlbmd0aCA+IDAnLFxuICAgICdbY2xhc3MuZGlzYWJsZWRdJzogJ2Rpc2FibGVQaWNrZXJJbnB1dCcsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIE5vdm9DaGlwc0VsZW1lbnQgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgQElucHV0KClcbiAgY2xvc2VPblNlbGVjdDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKVxuICBwbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpXG4gIHNvdXJjZTogYW55O1xuICBASW5wdXQoKVxuICBtYXhsZW5ndGg6IGFueTtcbiAgQElucHV0KClcbiAgdHlwZTogYW55O1xuICBASW5wdXQoKVxuICBzZXQgZGlzYWJsZVBpY2tlcklucHV0KHY6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNhYmxlUGlja2VySW5wdXQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodik7XG4gIH1cbiAgZ2V0IGRpc2FibGVQaWNrZXJJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZVBpY2tlcklucHV0O1xuICB9XG4gIHByaXZhdGUgX2Rpc2FibGVQaWNrZXJJbnB1dDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKVxuICBjaGFuZ2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpXG4gIGZvY3VzOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpXG4gIGJsdXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KClcbiAgdHlwaW5nOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAVmlld0NoaWxkKCdwcmV2aWV3JywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pXG4gIHByZXZpZXc6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgaXRlbXM6IEFycmF5PGFueT4gPSBbXTtcbiAgc2VsZWN0ZWQ6IGFueSA9IG51bGw7XG4gIGNvbmZpZzogYW55ID0ge307XG4gIG1vZGVsOiBhbnk7XG4gIGl0ZW1Ub0FkZDogYW55O1xuICBwb3B1cDogYW55O1xuICAvLyBwcml2YXRlIGRhdGEgbW9kZWxcbiAgX3ZhbHVlOiBhbnkgPSAnJztcbiAgX2l0ZW1zID0gbmV3IFJlcGxheVN1YmplY3QoMSk7XG4gIC8vIFBsYWNlaG9sZGVycyBmb3IgdGhlIGNhbGxiYWNrc1xuICBvbk1vZGVsQ2hhbmdlOiBGdW5jdGlvbiA9ICgpID0+IHt9O1xuICBvbk1vZGVsVG91Y2hlZDogRnVuY3Rpb24gPSAoKSA9PiB7fTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZWxlbWVudDogRWxlbWVudFJlZiwgcHJpdmF0ZSBjb21wb25lbnRVdGlsczogQ29tcG9uZW50VXRpbHMsIHB1YmxpYyBsYWJlbHM6IE5vdm9MYWJlbFNlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zZXRJdGVtcygpO1xuICB9XG5cbiAgZ2V0IHZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCB2YWx1ZShzZWxlY3RlZCkge1xuICAgIHRoaXMuaXRlbVRvQWRkID0gJyc7XG4gICAgaWYgKHNlbGVjdGVkICE9PSB0aGlzLl92YWx1ZSkge1xuICAgICAgdGhpcy5fdmFsdWUgPSBzZWxlY3RlZDtcbiAgICAgIHRoaXMuY2hhbmdlZC5lbWl0KHsgdmFsdWU6IHNlbGVjdGVkLCByYXdWYWx1ZTogdGhpcy5pdGVtcyB9KTtcbiAgICAgIHRoaXMub25Nb2RlbENoYW5nZShzZWxlY3RlZCk7XG4gICAgfVxuICB9XG5cbiAgY2xlYXJWYWx1ZSgpIHtcbiAgICB0aGlzLml0ZW1zID0gW107XG4gICAgdGhpcy5faXRlbXMubmV4dCh0aGlzLml0ZW1zKTtcbiAgICB0aGlzLnZhbHVlID0gbnVsbDtcbiAgICB0aGlzLmNoYW5nZWQuZW1pdCh7IHZhbHVlOiB0aGlzLnZhbHVlLCByYXdWYWx1ZTogdGhpcy5pdGVtcyB9KTtcbiAgICB0aGlzLm9uTW9kZWxDaGFuZ2UodGhpcy52YWx1ZSk7XG4gIH1cblxuICBzZXRJdGVtcygpIHtcbiAgICB0aGlzLml0ZW1zID0gW107XG4gICAgaWYgKHRoaXMubW9kZWwgJiYgQXJyYXkuaXNBcnJheSh0aGlzLm1vZGVsKSkge1xuICAgICAgY29uc3Qgbm9MYWJlbHMgPSBbXTtcbiAgICAgIGZvciAoY29uc3QgdmFsdWUgb2YgdGhpcy5tb2RlbCkge1xuICAgICAgICBsZXQgbGFiZWw7XG4gICAgICAgIGlmICh0aGlzLnNvdXJjZSAmJiB0aGlzLnNvdXJjZS5mb3JtYXQgJiYgSGVscGVycy52YWxpZGF0ZUludGVycG9sYXRpb25Qcm9wcyh0aGlzLnNvdXJjZS5mb3JtYXQsIHZhbHVlKSkge1xuICAgICAgICAgIGxhYmVsID0gSGVscGVycy5pbnRlcnBvbGF0ZSh0aGlzLnNvdXJjZS5mb3JtYXQsIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5zb3VyY2UgJiYgbGFiZWwgJiYgbGFiZWwgIT09IHRoaXMuc291cmNlLmZvcm1hdCkge1xuICAgICAgICAgIHRoaXMuaXRlbXMucHVzaCh7XG4gICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgIGxhYmVsLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc291cmNlLmdldExhYmVscyAmJiB0eXBlb2YgdGhpcy5zb3VyY2UuZ2V0TGFiZWxzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgbm9MYWJlbHMucHVzaCh2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zb3VyY2Uub3B0aW9ucyAmJiBBcnJheS5pc0FycmF5KHRoaXMuc291cmNlLm9wdGlvbnMpKSB7XG4gICAgICAgICAgdGhpcy5pdGVtcy5wdXNoKHRoaXMuZ2V0TGFiZWxGcm9tT3B0aW9ucyh2YWx1ZSkpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc291cmNlLmNhdGVnb3J5TWFwICYmIHRoaXMuc291cmNlLmNhdGVnb3J5TWFwLnNpemUpIHtcbiAgICAgICAgICB0aGlzLml0ZW1zLnB1c2godmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuaXRlbXMucHVzaCh7XG4gICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgIGxhYmVsOiB2YWx1ZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKG5vTGFiZWxzLmxlbmd0aCA+IDAgJiYgdGhpcy5zb3VyY2UgJiYgdGhpcy5zb3VyY2UuZ2V0TGFiZWxzICYmIHR5cGVvZiB0aGlzLnNvdXJjZS5nZXRMYWJlbHMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhpcy5zb3VyY2UuZ2V0TGFiZWxzKG5vTGFiZWxzKS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIHJlc3VsdCkge1xuICAgICAgICAgICAgaWYgKHZhbHVlLmhhc093blByb3BlcnR5KCdsYWJlbCcpKSB7XG4gICAgICAgICAgICAgIHRoaXMuaXRlbXMucHVzaCh7XG4gICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHZhbHVlLmxhYmVsLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5zb3VyY2Uub3B0aW9ucyAmJiBBcnJheS5pc0FycmF5KHRoaXMuc291cmNlLm9wdGlvbnMpKSB7XG4gICAgICAgICAgICAgIHRoaXMuaXRlbXMucHVzaCh0aGlzLmdldExhYmVsRnJvbU9wdGlvbnModmFsdWUpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuaXRlbXMucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuX2l0ZW1zLm5leHQodGhpcy5pdGVtcyk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmNoYW5nZWQuZW1pdCh7IHZhbHVlOiB0aGlzLm1vZGVsLCByYXdWYWx1ZTogdGhpcy5pdGVtcyB9KTtcbiAgICB0aGlzLl9pdGVtcy5uZXh0KHRoaXMuaXRlbXMpO1xuICB9XG5cbiAgZ2V0TGFiZWxGcm9tT3B0aW9ucyh2YWx1ZSkge1xuICAgIGxldCBpZCA9IHZhbHVlO1xuICAgIGxldCBvcHRMYWJlbCA9IHRoaXMuc291cmNlLm9wdGlvbnMuZmluZCgodmFsKSA9PiB2YWwudmFsdWUgPT09IHZhbHVlKTtcbiAgICBpZiAoIW9wdExhYmVsICYmIHZhbHVlLmhhc093blByb3BlcnR5KCdpZCcpKSB7XG4gICAgICBvcHRMYWJlbCA9IHRoaXMuc291cmNlLm9wdGlvbnMuZmluZCgodmFsKSA9PiB2YWwudmFsdWUgPT09IHZhbHVlLmlkKTtcbiAgICAgIGlkID0gdmFsdWUuaWQ7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICB2YWx1ZTogaWQsXG4gICAgICBsYWJlbDogb3B0TGFiZWwgPyBvcHRMYWJlbC5sYWJlbCA6IHZhbHVlLFxuICAgIH07XG4gIH1cblxuICBkZXNlbGVjdEFsbChldmVudD8pIHtcbiAgICB0aGlzLnNlbGVjdGVkID0gbnVsbDtcbiAgICB0aGlzLmhpZGVQcmV2aWV3KCk7XG4gIH1cblxuICBzZWxlY3QoZXZlbnQ/LCBpdGVtPykge1xuICAgIHRoaXMuYmx1ci5lbWl0KGV2ZW50KTtcbiAgICB0aGlzLmRlc2VsZWN0QWxsKCk7XG4gICAgdGhpcy5zZWxlY3RlZCA9IGl0ZW07XG4gICAgdGhpcy5zaG93UHJldmlldygpO1xuICB9XG5cbiAgZGVzZWxlY3QoZXZlbnQ/LCBpdGVtPykge1xuICAgIHRoaXMuYmx1ci5lbWl0KGV2ZW50KTtcbiAgICB0aGlzLmRlc2VsZWN0QWxsKCk7XG4gIH1cblxuICBvblR5cGluZyhldmVudD8pIHtcbiAgICB0aGlzLnR5cGluZy5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIG9uRm9jdXMoZXZlbnQ/KSB7XG4gICAgdGhpcy5kZXNlbGVjdEFsbCgpO1xuICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3NlbGVjdGVkJyk7XG4gICAgdGhpcy5mb2N1cy5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIGFkZChldmVudCkge1xuICAgIGlmIChldmVudCAmJiAhKGV2ZW50IGluc3RhbmNlb2YgRXZlbnQpKSB7XG4gICAgICB0aGlzLml0ZW1zLnB1c2goZXZlbnQpO1xuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuc291cmNlICYmIHRoaXMuc291cmNlLnZhbHVlRm9ybWF0dGVyID8gdGhpcy5zb3VyY2UudmFsdWVGb3JtYXR0ZXIodGhpcy5pdGVtcykgOiB0aGlzLml0ZW1zLm1hcCgoaSkgPT4gaS52YWx1ZSk7XG4gICAgICAvLyBTZXQgZm9jdXMgb24gdGhlIHBpY2tlclxuICAgICAgY29uc3QgaW5wdXQgPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdub3ZvLXBpY2tlciA+IGlucHV0Jyk7XG4gICAgICBpZiAoaW5wdXQpIHtcbiAgICAgICAgaW5wdXQuZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5faXRlbXMubmV4dCh0aGlzLml0ZW1zKTtcbiAgfVxuXG4gIHJlbW92ZShldmVudCwgaXRlbSkge1xuICAgIGlmIChldmVudCkge1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgICB0aGlzLml0ZW1zLnNwbGljZSh0aGlzLml0ZW1zLmluZGV4T2YoaXRlbSksIDEpO1xuICAgIHRoaXMuZGVzZWxlY3RBbGwoKTtcbiAgICB0aGlzLnZhbHVlID0gdGhpcy5zb3VyY2UgJiYgdGhpcy5zb3VyY2UudmFsdWVGb3JtYXR0ZXIgPyB0aGlzLnNvdXJjZS52YWx1ZUZvcm1hdHRlcih0aGlzLml0ZW1zKSA6IHRoaXMuaXRlbXMubWFwKChpKSA9PiBpLnZhbHVlKTtcbiAgICB0aGlzLmNoYW5nZWQuZW1pdCh7IHZhbHVlOiB0aGlzLnZhbHVlLmxlbmd0aCA/IHRoaXMudmFsdWUgOiAnJywgcmF3VmFsdWU6IHRoaXMuaXRlbXMgfSk7XG4gICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHRoaXMudmFsdWUubGVuZ3RoID8gdGhpcy52YWx1ZSA6ICcnKTtcbiAgICB0aGlzLl9pdGVtcy5uZXh0KHRoaXMuaXRlbXMpO1xuICB9XG5cbiAgb25LZXlEb3duKGV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IEtleUNvZGVzLkJBQ0tTUEFDRSkge1xuICAgICAgaWYgKGV2ZW50LnRhcmdldCAmJiBldmVudC50YXJnZXQudmFsdWUubGVuZ3RoID09PSAwICYmIHRoaXMuaXRlbXMubGVuZ3RoKSB7XG4gICAgICAgIGlmIChldmVudCkge1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWQpIHtcbiAgICAgICAgICB0aGlzLnJlbW92ZShldmVudCwgdGhpcy5zZWxlY3RlZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3QoZXZlbnQsIHRoaXMuaXRlbXNbdGhpcy5pdGVtcy5sZW5ndGggLSAxXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBTZXQgdG91Y2hlZCBvbiBibHVyXG4gIG9uVG91Y2hlZChlKSB7XG4gICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0ZWQnKTtcbiAgICB0aGlzLm9uTW9kZWxUb3VjaGVkKCk7XG4gICAgdGhpcy5ibHVyLmVtaXQoZSk7XG4gIH1cblxuICB3cml0ZVZhbHVlKG1vZGVsOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm1vZGVsID0gbW9kZWw7XG4gICAgdGhpcy5zZXRJdGVtcygpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogRnVuY3Rpb24pOiB2b2lkIHtcbiAgICB0aGlzLm9uTW9kZWxDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBGdW5jdGlvbik6IHZvaWQge1xuICAgIHRoaXMub25Nb2RlbFRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoZGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLl9kaXNhYmxlUGlja2VySW5wdXQgPSBkaXNhYmxlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVGhpcyBtZXRob2QgY3JlYXRlcyBhbiBpbnN0YW5jZSBvZiB0aGUgcHJldmlldyAoY2FsbGVkIHBvcHVwKSBhbmQgYWRkcyBhbGwgdGhlIGJpbmRpbmdzIHRvIHRoYXRcbiAgICogaW5zdGFuY2UuIFdpbGwgcmV1c2UgdGhlIHBvcHVwIG9yIGNyZWF0ZSBhIG5ldyBvbmUgaWYgaXQgZG9lcyBub3QgYWxyZWFkeSBleGlzdC4gV2lsbCBvbmx5IHdvcmsgaWYgdGhlcmUgaXNcbiAgICogYSBwcmV2aWV3VGVtcGxhdGUgZ2l2ZW4gaW4gdGhlIGNvbmZpZy5cbiAgICovXG4gIHNob3dQcmV2aWV3KCkge1xuICAgIGlmICh0aGlzLnNvdXJjZS5wcmV2aWV3VGVtcGxhdGUpIHtcbiAgICAgIGlmICghdGhpcy5wb3B1cCkge1xuICAgICAgICB0aGlzLnBvcHVwID0gdGhpcy5jb21wb25lbnRVdGlscy5hcHBlbmQodGhpcy5zb3VyY2UucHJldmlld1RlbXBsYXRlLCB0aGlzLnByZXZpZXcpO1xuICAgICAgfVxuICAgICAgdGhpcy5wb3B1cC5pbnN0YW5jZS5tYXRjaCA9IHRoaXMuc2VsZWN0ZWQ7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiAtIFRoaXMgbWV0aG9kIGRlbGV0ZXMgdGhlIHByZXZpZXcgcG9wdXAgZnJvbSB0aGUgRE9NLlxuICAgKi9cbiAgaGlkZVByZXZpZXcoKSB7XG4gICAgaWYgKHRoaXMucG9wdXApIHtcbiAgICAgIHRoaXMucG9wdXAuZGVzdHJveSgpO1xuICAgICAgdGhpcy5wb3B1cCA9IG51bGw7XG4gICAgfVxuICB9XG59XG4iXX0=
|