@tetacom/ng-components 1.1.43 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.json +16 -10
- package/README.md +3 -20
- package/component/accordion/accordion/accordion.component.d.ts +1 -1
- package/component/accordion/accordion-content.directive.d.ts +1 -1
- package/component/accordion/accordion-head/accordion-head.component.d.ts +1 -1
- package/component/accordion/accordion-item/accordion-item.component.d.ts +1 -1
- package/component/accordion/public-api.d.ts +0 -1
- package/component/autocomplete/autocomplete/autocomplete.component.d.ts +1 -1
- package/component/autocomplete/public-api.d.ts +0 -1
- package/component/avatar/avatar/avatar.component.d.ts +1 -1
- package/component/avatar/public-api.d.ts +0 -1
- package/component/button/button/button.component.d.ts +1 -1
- package/component/button/public-api.d.ts +0 -1
- package/component/chart-3d/chart3d/chart3d.component.d.ts +1 -1
- package/component/chart-3d/public-api.d.ts +0 -1
- package/component/checkbox/checkbox/checkbox.component.d.ts +1 -1
- package/component/checkbox/public-api.d.ts +0 -1
- package/component/date-picker/base-picker.d.ts +1 -1
- package/component/date-picker/date-picker/date-calendar/date-calendar.component.d.ts +1 -1
- package/component/date-picker/date-picker/date-picker.component.d.ts +1 -1
- package/component/date-picker/date-range/date-range.component.d.ts +1 -1
- package/component/date-picker/date-range/range-calendar/range-calendar.component.d.ts +3 -3
- package/component/date-picker/day-picker/day-item/day-item.component.d.ts +1 -1
- package/component/date-picker/day-picker/day-picker.component.d.ts +2 -2
- package/component/date-picker/month-picker/month-picker.component.d.ts +1 -1
- package/component/date-picker/public-api.d.ts +0 -1
- package/component/date-picker/year-picker/scroll-to-selected-year.directive.d.ts +1 -1
- package/component/date-picker/year-picker/year-picker.component.d.ts +1 -1
- package/component/delimiter/delimiter/delimiter.component.d.ts +1 -1
- package/component/delimiter/public-api.d.ts +0 -1
- package/component/divider/divider/divider.component.d.ts +1 -1
- package/component/divider/public-api.d.ts +0 -1
- package/component/dropdown/dropdown/dropdown.component.d.ts +1 -1
- package/component/dropdown/dropdown-content.directive.d.ts +1 -1
- package/component/dropdown/dropdown-head.directive.d.ts +1 -1
- package/component/dropdown/dropdown.directive.d.ts +1 -1
- package/component/dropdown/public-api.d.ts +0 -1
- package/component/dynamic-component/popup-content/popup-content.component.d.ts +1 -1
- package/component/dynamic-component/public-api.d.ts +0 -1
- package/component/expand-card/expand-card/expand-card.component.d.ts +1 -1
- package/component/expand-card/expand-item/expand-item.component.d.ts +1 -1
- package/component/expand-card/public-api.d.ts +0 -1
- package/component/expand-panel/expand-panel/expand-panel.component.d.ts +1 -1
- package/component/expand-panel/expand-panel-content.directive.d.ts +1 -1
- package/component/expand-panel/expand-panel-head.directive.d.ts +1 -1
- package/component/expand-panel/public-api.d.ts +0 -1
- package/component/file-upload/file-item/file-item.component.d.ts +1 -1
- package/component/file-upload/file-upload-area/file-upload-area.component.d.ts +1 -1
- package/component/file-upload/public-api.d.ts +0 -1
- package/component/filter/boolean-filter/boolean-filter.component.d.ts +1 -1
- package/component/filter/date-filter/date-filter.component.d.ts +1 -1
- package/component/filter/filter-host/filter-host.component.d.ts +1 -1
- package/component/filter/list-filter/list-filter.component.d.ts +1 -1
- package/component/filter/numeric-filter/numeric-filter.component.d.ts +1 -1
- package/component/filter/public-api.d.ts +0 -1
- package/component/filter/string-filter/string-filter.component.d.ts +1 -1
- package/component/icon/icon/icon.component.d.ts +1 -1
- package/component/icon/icon-file/icon-file.component.d.ts +1 -1
- package/component/icon/icon-sprite.directive.d.ts +1 -1
- package/component/icon/public-api.d.ts +0 -2
- package/component/input/color-input/color-input.component.d.ts +1 -1
- package/component/input/form-group-title/form-group-title.component.d.ts +1 -1
- package/component/input/input/input.component.d.ts +1 -1
- package/component/input/public-api.d.ts +1 -1
- package/component/input/text-field/text-field.component.d.ts +1 -1
- package/component/message/message/message.component.d.ts +1 -1
- package/component/message/message-host/message-host.component.d.ts +1 -1
- package/component/message/public-api.d.ts +0 -1
- package/component/modal/dialog/dialog.component.d.ts +1 -1
- package/component/modal/modal-container/modal-container.component.d.ts +1 -1
- package/component/modal/modal.module.d.ts +5 -8
- package/component/pager/pager/pager.component.d.ts +1 -1
- package/component/pager/public-api.d.ts +0 -1
- package/component/panel/panel/panel.component.d.ts +1 -1
- package/component/panel/public-api.d.ts +0 -1
- package/component/progress-bar/progress-bar/progress-bar.component.d.ts +1 -1
- package/component/progress-bar/public-api.d.ts +0 -1
- package/component/property-grid/property-grid/property-grid-group/property-grid-group.component.d.ts +1 -1
- package/component/property-grid/property-grid/property-grid-item/property-grid-item.component.d.ts +1 -1
- package/component/property-grid/property-grid/property-grid-item-description.directive.d.ts +1 -1
- package/component/property-grid/property-grid/property-grid.component.d.ts +1 -1
- package/component/property-grid/property-grid.module.d.ts +8 -16
- package/component/public-api.d.ts +0 -1
- package/component/radio/public-api.d.ts +0 -1
- package/component/radio/radio/radio.component.d.ts +3 -4
- package/component/radio/radio-button/radio-button.component.d.ts +1 -1
- package/component/resize-panel/public-api.d.ts +0 -1
- package/component/resize-panel/resize-panel/resize-panel.component.d.ts +1 -1
- package/component/select/public-api.d.ts +0 -1
- package/component/select/select/select.component.d.ts +1 -1
- package/component/select/select-option.directive.d.ts +1 -1
- package/component/select/select-value.directive.d.ts +1 -1
- package/component/sidebar/public-api.d.ts +0 -1
- package/component/sidebar/sidebar/sidebar.component.d.ts +1 -1
- package/component/switch/public-api.d.ts +0 -1
- package/component/switch/switch/switch.component.d.ts +1 -1
- package/component/switch/switch-button/switch-button.component.d.ts +1 -1
- package/component/table/cell/cell.component.d.ts +1 -1
- package/component/table/cell-host/cell-host.component.d.ts +1 -1
- package/component/table/default/boolean-cell/boolean-cell.component.d.ts +1 -1
- package/component/table/default/date-cell/date-cell.component.d.ts +1 -1
- package/component/table/default/date-time-cell/date-time-cell.component.d.ts +1 -1
- package/component/table/default/default-head-cell/default-head-cell.component.d.ts +1 -1
- package/component/table/default/list-cell/list-cell.component.d.ts +1 -1
- package/component/table/default/numeric-cell/numeric-cell.component.d.ts +1 -1
- package/component/table/default/string-cell/string-cell.component.d.ts +1 -1
- package/component/table/head-cell/head-cell.component.d.ts +1 -1
- package/component/table/head-cell-dropdown/head-cell-dropdown.component.d.ts +1 -1
- package/component/table/head-cell-host/head-cell-host.component.d.ts +1 -1
- package/component/table/public-api.d.ts +0 -1
- package/component/table/selection-cell/selection-cell.component.d.ts +1 -1
- package/component/table/selection-head-cell/selection-head-cell.component.d.ts +1 -1
- package/component/table/table/table.component.d.ts +1 -1
- package/component/table/table-body/table-body.component.d.ts +1 -1
- package/component/table/table-head/filter-dropdown-tab/filter-dropdown-tab.component.d.ts +1 -1
- package/component/table/table-head/main-dropdown-tab/main-dropdown-tab.component.d.ts +1 -1
- package/component/table/table-head/table-head.component.d.ts +1 -1
- package/component/table/table-head/visibility-dropdown-tab/visibility-dropdown-tab.component.d.ts +2 -2
- package/component/table/table-head-group/table-head-group.component.d.ts +1 -1
- package/component/tabs/public-api.d.ts +0 -1
- package/component/tabs/tab/tab.component.d.ts +1 -1
- package/component/tabs/tab-content.directive.d.ts +1 -1
- package/component/tabs/tab-title.directive.d.ts +1 -1
- package/component/tabs/tabs/tabs.component.d.ts +1 -1
- package/component/theme-switch/public-api.d.ts +0 -1
- package/component/theme-switch/theme-switch/theme-switch.component.d.ts +1 -1
- package/component/toggle/public-api.d.ts +0 -1
- package/component/toggle/toggle/toggle.component.d.ts +1 -1
- package/component/toolbar/public-api.d.ts +0 -1
- package/component/toolbar/toolbar/toolbar.component.d.ts +1 -1
- package/component/tree/public-api.d.ts +0 -1
- package/component/tree/tree/tree.component.d.ts +1 -1
- package/component/tree/tree-item/tree-item.component.d.ts +1 -1
- package/component/tree/tree-item-toggle/tree-item-toggle.component.d.ts +1 -1
- package/directive/auto-position/auto-position.directive.d.ts +1 -1
- package/directive/auto-position/public-api.d.ts +0 -1
- package/directive/click-outside/click-outside.directive.d.ts +1 -1
- package/directive/click-outside/public-api.d.ts +0 -1
- package/directive/context-menu/context-menu.directive.d.ts +1 -1
- package/directive/context-menu/public-api.d.ts +0 -1
- package/directive/disable-control/disable-control.directive.d.ts +1 -1
- package/directive/disable-control/public-api.d.ts +0 -1
- package/directive/drag-drop/drag-container.directive.d.ts +1 -1
- package/directive/drag-drop/drag-placeholder.directive.d.ts +1 -1
- package/directive/drag-drop/drag-preview.directive.d.ts +1 -1
- package/directive/drag-drop/drag.directive.d.ts +1 -1
- package/directive/drag-drop/public-api.d.ts +0 -1
- package/directive/drag-sort/drag-sort-container.directive.d.ts +1 -1
- package/directive/drag-sort/drag-sort-item.directive.d.ts +1 -1
- package/directive/drag-sort/public-api.d.ts +0 -1
- package/directive/highlight/highlight.directive.d.ts +1 -1
- package/directive/highlight/public-api.d.ts +0 -1
- package/directive/hint/hint.directive.d.ts +1 -1
- package/directive/hint/public-api.d.ts +0 -1
- package/directive/let/let.directive.d.ts +1 -1
- package/directive/let/public-api.d.ts +0 -1
- package/directive/loader/loader.directive.d.ts +1 -1
- package/directive/loader/public-api.d.ts +0 -1
- package/directive/no-autofill/no-autofill.directive.d.ts +1 -1
- package/directive/no-autofill/public-api.d.ts +0 -1
- package/directive/only-number/only-number.directive.d.ts +1 -1
- package/directive/only-number/public-api.d.ts +0 -1
- package/directive/resize-drag/public-api.d.ts +0 -1
- package/directive/resize-drag/resize-drag.directive.d.ts +1 -1
- package/directive/scroll-into-view/public-api.d.ts +0 -1
- package/directive/scroll-into-view/scroll-into-view.directive.d.ts +1 -1
- package/directive/scrollable/public-api.d.ts +0 -1
- package/directive/scrollable/scrollable/scrollable.component.d.ts +1 -1
- package/directive/scrollable/scrollable.directive.d.ts +1 -1
- package/directive/teta-template/public-api.d.ts +0 -1
- package/directive/teta-template/teta-template.directive.d.ts +1 -1
- package/directive/tooltip/public-api.d.ts +0 -1
- package/directive/tooltip/tooltip.directive.d.ts +1 -1
- package/docs/datePickerDocs.mdx +14 -59
- package/docs/dateRangeDocs.mdx +172 -0
- package/esm2022/common/contract/dynamic-data.mjs +1 -1
- package/esm2022/common/contract/teta-content-ref.mjs +1 -4
- package/esm2022/common/service/click.service.mjs +6 -9
- package/esm2022/common/service/dynamic-component.service.mjs +6 -10
- package/esm2022/common/service/overlay-container.service.mjs +7 -9
- package/esm2022/common/util/array-util.mjs +1 -1
- package/esm2022/common/util/dom-util.mjs +1 -1
- package/esm2022/common/util/position-util.mjs +1 -1
- package/esm2022/component/accordion/accordion/accordion.component.mjs +8 -6
- package/esm2022/component/accordion/accordion-content.directive.mjs +8 -8
- package/esm2022/component/accordion/accordion-head/accordion-head.component.mjs +13 -13
- package/esm2022/component/accordion/accordion-item/accordion-item.component.mjs +14 -17
- package/esm2022/component/accordion/public-api.mjs +1 -2
- package/esm2022/component/autocomplete/autocomplete/autocomplete.component.mjs +6 -6
- package/esm2022/component/autocomplete/public-api.mjs +1 -2
- package/esm2022/component/avatar/avatar/avatar.component.mjs +28 -32
- package/esm2022/component/avatar/public-api.mjs +1 -2
- package/esm2022/component/button/button/button.component.mjs +10 -12
- package/esm2022/component/button/public-api.mjs +1 -2
- package/esm2022/component/chart-3d/chart3d/chart3d.component.mjs +11 -20
- package/esm2022/component/chart-3d/model/chart-3d-options.mjs +1 -3
- package/esm2022/component/chart-3d/model/series-3d.mjs +1 -3
- package/esm2022/component/chart-3d/public-api.mjs +1 -2
- package/esm2022/component/checkbox/checkbox/checkbox.component.mjs +16 -33
- package/esm2022/component/checkbox/public-api.mjs +1 -2
- package/esm2022/component/date-picker/base-calendar.mjs +23 -24
- package/esm2022/component/date-picker/base-picker.mjs +10 -15
- package/esm2022/component/date-picker/date-picker/date-calendar/date-calendar.component.mjs +23 -23
- package/esm2022/component/date-picker/date-picker/date-picker.component.mjs +47 -46
- package/esm2022/component/date-picker/date-range/date-range.component.mjs +44 -39
- package/esm2022/component/date-picker/date-range/range-calendar/range-calendar.component.mjs +25 -27
- package/esm2022/component/date-picker/day-picker/day-item/day-item.component.mjs +6 -6
- package/esm2022/component/date-picker/day-picker/day-picker.component.mjs +12 -19
- package/esm2022/component/date-picker/model/date-period.mjs +1 -3
- package/esm2022/component/date-picker/model/day-model.mjs +1 -7
- package/esm2022/component/date-picker/month-picker/month-picker.component.mjs +13 -16
- package/esm2022/component/date-picker/public-api.mjs +1 -2
- package/esm2022/component/date-picker/year-picker/scroll-to-selected-year.directive.mjs +9 -9
- package/esm2022/component/date-picker/year-picker/year-picker.component.mjs +9 -14
- package/esm2022/component/delimiter/delimiter/delimiter.component.mjs +13 -13
- package/esm2022/component/delimiter/public-api.mjs +1 -2
- package/esm2022/component/divider/divider/divider.component.mjs +8 -10
- package/esm2022/component/divider/public-api.mjs +1 -2
- package/esm2022/component/dropdown/dropdown/dropdown.component.mjs +8 -13
- package/esm2022/component/dropdown/dropdown-base.mjs +26 -35
- package/esm2022/component/dropdown/dropdown-content.directive.mjs +8 -9
- package/esm2022/component/dropdown/dropdown-head.directive.mjs +9 -9
- package/esm2022/component/dropdown/dropdown.directive.mjs +9 -13
- package/esm2022/component/dropdown/public-api.mjs +1 -2
- package/esm2022/component/dynamic-component/popup-content/popup-content.component.mjs +10 -10
- package/esm2022/component/dynamic-component/public-api.mjs +1 -2
- package/esm2022/component/expand-card/expand-card/expand-card.component.mjs +14 -15
- package/esm2022/component/expand-card/expand-item/expand-item.component.mjs +11 -10
- package/esm2022/component/expand-card/public-api.mjs +1 -2
- package/esm2022/component/expand-panel/expand-panel/expand-panel.component.mjs +20 -18
- package/esm2022/component/expand-panel/expand-panel-content.directive.mjs +7 -7
- package/esm2022/component/expand-panel/expand-panel-head.directive.mjs +7 -7
- package/esm2022/component/expand-panel/public-api.mjs +1 -2
- package/esm2022/component/file-upload/file-item/file-item.component.mjs +6 -6
- package/esm2022/component/file-upload/file-upload-area/file-upload-area.component.mjs +24 -19
- package/esm2022/component/file-upload/public-api.mjs +1 -2
- package/esm2022/component/filter/base/filter-base.mjs +1 -4
- package/esm2022/component/filter/boolean-filter/boolean-filter.component.mjs +22 -20
- package/esm2022/component/filter/contarct/date-filter-value.mjs +1 -9
- package/esm2022/component/filter/contarct/date-filter.mjs +1 -1
- package/esm2022/component/filter/contarct/filter-item.mjs +13 -57
- package/esm2022/component/filter/contarct/filter-state.mjs +7 -7
- package/esm2022/component/filter/contarct/list-filter.mjs +1 -2
- package/esm2022/component/filter/contarct/numeric-filter-value.mjs +1 -13
- package/esm2022/component/filter/contarct/numeric-filter.mjs +1 -2
- package/esm2022/component/filter/contarct/sort-param.mjs +1 -13
- package/esm2022/component/filter/contarct/string-filter.mjs +1 -2
- package/esm2022/component/filter/date-filter/date-filter.component.mjs +22 -20
- package/esm2022/component/filter/filter-host/filter-host.component.mjs +11 -16
- package/esm2022/component/filter/list-filter/list-filter.component.mjs +25 -23
- package/esm2022/component/filter/numeric-filter/numeric-filter.component.mjs +22 -20
- package/esm2022/component/filter/public-api.mjs +1 -2
- package/esm2022/component/filter/string-filter/string-filter.component.mjs +19 -18
- package/esm2022/component/icon/icon/icon.component.mjs +9 -9
- package/esm2022/component/icon/icon-file/icon-file.component.mjs +6 -8
- package/esm2022/component/icon/icon-sprite.directive.mjs +9 -9
- package/esm2022/component/icon/icon.service.mjs +10 -15
- package/esm2022/component/icon/public-api.mjs +1 -3
- package/esm2022/component/input/color-input/color-input.component.mjs +11 -13
- package/esm2022/component/input/form-group-title/form-group-title.component.mjs +9 -8
- package/esm2022/component/input/input/input.component.mjs +12 -13
- package/esm2022/component/input/public-api.mjs +2 -2
- package/esm2022/component/input/text-field/text-field.component.mjs +25 -25
- package/esm2022/component/message/message/message.component.mjs +15 -14
- package/esm2022/component/message/message-host/message-host.component.mjs +22 -25
- package/esm2022/component/message/message.service.mjs +7 -9
- package/esm2022/component/message/model/message.mjs +4 -10
- package/esm2022/component/message/public-api.mjs +1 -2
- package/esm2022/component/modal/dialog/dialog.component.mjs +18 -18
- package/esm2022/component/modal/dialog.service.mjs +6 -6
- package/esm2022/component/modal/modal-container/modal-container.component.mjs +11 -13
- package/esm2022/component/modal/modal.module.mjs +8 -18
- package/esm2022/component/modal/modal.service.mjs +16 -19
- package/esm2022/component/modal/model/current-modal.mjs +1 -2
- package/esm2022/component/modal/model/modal-instance.mjs +7 -10
- package/esm2022/component/pager/model/pager-state.mjs +9 -29
- package/esm2022/component/pager/pager/pager.component.mjs +6 -6
- package/esm2022/component/pager/public-api.mjs +1 -2
- package/esm2022/component/panel/panel/panel.component.mjs +12 -11
- package/esm2022/component/panel/public-api.mjs +1 -2
- package/esm2022/component/progress-bar/progress-bar/progress-bar.component.mjs +37 -45
- package/esm2022/component/progress-bar/public-api.mjs +1 -2
- package/esm2022/component/property-grid/property-grid/property-grid-group/property-grid-group.component.mjs +13 -21
- package/esm2022/component/property-grid/property-grid/property-grid-item/property-grid-item.component.mjs +31 -29
- package/esm2022/component/property-grid/property-grid/property-grid-item-description.directive.mjs +8 -9
- package/esm2022/component/property-grid/property-grid/property-grid.component.mjs +19 -23
- package/esm2022/component/property-grid/property-grid.module.mjs +16 -46
- package/esm2022/component/public-api.mjs +1 -3
- package/esm2022/component/radio/public-api.mjs +1 -2
- package/esm2022/component/radio/radio/radio.component.mjs +17 -23
- package/esm2022/component/radio/radio-button/radio-button.component.mjs +10 -16
- package/esm2022/component/resize-panel/public-api.mjs +1 -2
- package/esm2022/component/resize-panel/resize-panel/resize-panel.component.mjs +24 -29
- package/esm2022/component/select/public-api.mjs +1 -2
- package/esm2022/component/select/select/select.component.mjs +49 -53
- package/esm2022/component/select/select-option.directive.mjs +8 -8
- package/esm2022/component/select/select-value.directive.mjs +8 -8
- package/esm2022/component/sidebar/public-api.mjs +1 -2
- package/esm2022/component/sidebar/sidebar/sidebar.component.mjs +14 -16
- package/esm2022/component/switch/public-api.mjs +1 -2
- package/esm2022/component/switch/switch/switch.component.mjs +10 -13
- package/esm2022/component/switch/switch-button/switch-button.component.mjs +9 -13
- package/esm2022/component/switch/switch.service.mjs +6 -7
- package/esm2022/component/table/base/cell-component-base.mjs +14 -18
- package/esm2022/component/table/base/head-cell-component-base.mjs +5 -4
- package/esm2022/component/table/cell/cell.component.mjs +11 -11
- package/esm2022/component/table/cell-host/cell-host.component.mjs +10 -14
- package/esm2022/component/table/contract/column-reorder-event.mjs +1 -3
- package/esm2022/component/table/contract/column-resize-event.mjs +1 -3
- package/esm2022/component/table/contract/sort-event.mjs +1 -3
- package/esm2022/component/table/contract/table-column-store.mjs +1 -6
- package/esm2022/component/table/contract/table-column.mjs +13 -83
- package/esm2022/component/table/contract/table-row.mjs +1 -3
- package/esm2022/component/table/default/boolean-cell/boolean-cell.component.mjs +15 -13
- package/esm2022/component/table/default/date-cell/date-cell.component.mjs +17 -13
- package/esm2022/component/table/default/date-time-cell/date-time-cell.component.mjs +17 -13
- package/esm2022/component/table/default/default-head-cell/default-head-cell.component.mjs +9 -13
- package/esm2022/component/table/default/list-cell/list-cell.component.mjs +16 -14
- package/esm2022/component/table/default/numeric-cell/numeric-cell.component.mjs +17 -14
- package/esm2022/component/table/default/string-cell/string-cell.component.mjs +16 -14
- package/esm2022/component/table/head-cell/head-cell.component.mjs +38 -41
- package/esm2022/component/table/head-cell-dropdown/head-cell-dropdown.component.mjs +29 -27
- package/esm2022/component/table/head-cell-host/head-cell-host.component.mjs +8 -13
- package/esm2022/component/table/public-api.mjs +1 -2
- package/esm2022/component/table/selection-cell/selection-cell.component.mjs +13 -14
- package/esm2022/component/table/selection-head-cell/selection-head-cell.component.mjs +12 -12
- package/esm2022/component/table/service/table.service.mjs +35 -58
- package/esm2022/component/table/table/table.component.mjs +53 -67
- package/esm2022/component/table/table-body/table-body.component.mjs +47 -51
- package/esm2022/component/table/table-head/filter-dropdown-tab/filter-dropdown-tab.component.mjs +15 -23
- package/esm2022/component/table/table-head/main-dropdown-tab/main-dropdown-tab.component.mjs +12 -19
- package/esm2022/component/table/table-head/table-head.component.mjs +15 -23
- package/esm2022/component/table/table-head/visibility-dropdown-tab/visibility-dropdown-tab.component.mjs +54 -51
- package/esm2022/component/table/table-head-group/table-head-group.component.mjs +11 -16
- package/esm2022/component/table/util/state-util.mjs +2 -2
- package/esm2022/component/table/util/table-util.mjs +1 -1
- package/esm2022/component/tabs/public-api.mjs +1 -2
- package/esm2022/component/tabs/tab/tab.component.mjs +15 -19
- package/esm2022/component/tabs/tab-content.directive.mjs +8 -8
- package/esm2022/component/tabs/tab-title.directive.mjs +8 -8
- package/esm2022/component/tabs/tabs/tabs.component.mjs +19 -23
- package/esm2022/component/theme-switch/public-api.mjs +1 -2
- package/esm2022/component/theme-switch/theme-switch/theme-switch.component.mjs +11 -12
- package/esm2022/component/theme-switch/theme-switch.service.mjs +5 -7
- package/esm2022/component/toggle/public-api.mjs +1 -2
- package/esm2022/component/toggle/toggle/toggle.component.mjs +12 -21
- package/esm2022/component/toolbar/public-api.mjs +1 -2
- package/esm2022/component/toolbar/toolbar/toolbar.component.mjs +5 -7
- package/esm2022/component/tree/public-api.mjs +1 -2
- package/esm2022/component/tree/tree/tree.component.mjs +31 -38
- package/esm2022/component/tree/tree-item/tree-item.component.mjs +17 -21
- package/esm2022/component/tree/tree-item-toggle/tree-item-toggle.component.mjs +10 -13
- package/esm2022/component/tree/tree.service.mjs +8 -10
- package/esm2022/directive/auto-position/auto-position.directive.mjs +12 -13
- package/esm2022/directive/auto-position/public-api.mjs +1 -2
- package/esm2022/directive/click-outside/click-outside.directive.mjs +19 -20
- package/esm2022/directive/click-outside/public-api.mjs +1 -2
- package/esm2022/directive/context-menu/context-menu.directive.mjs +20 -29
- package/esm2022/directive/context-menu/public-api.mjs +1 -2
- package/esm2022/directive/disable-control/disable-control.directive.mjs +7 -6
- package/esm2022/directive/disable-control/public-api.mjs +1 -2
- package/esm2022/directive/drag-drop/drag-container.directive.mjs +14 -21
- package/esm2022/directive/drag-drop/drag-drop.service.mjs +10 -20
- package/esm2022/directive/drag-drop/drag-placeholder.directive.mjs +7 -6
- package/esm2022/directive/drag-drop/drag-preview.directive.mjs +8 -8
- package/esm2022/directive/drag-drop/drag.directive.mjs +14 -20
- package/esm2022/directive/drag-drop/model/drag-container-instance.mjs +1 -4
- package/esm2022/directive/drag-drop/model/drag-instance.mjs +1 -3
- package/esm2022/directive/drag-drop/public-api.mjs +1 -2
- package/esm2022/directive/drag-sort/drag-sort-container.directive.mjs +9 -7
- package/esm2022/directive/drag-sort/drag-sort-item.directive.mjs +12 -16
- package/esm2022/directive/drag-sort/public-api.mjs +1 -2
- package/esm2022/directive/dynamic-content-base.directive.mjs +13 -22
- package/esm2022/directive/highlight/highlight.directive.mjs +8 -8
- package/esm2022/directive/highlight/public-api.mjs +1 -2
- package/esm2022/directive/hint/hint.directive.mjs +14 -24
- package/esm2022/directive/hint/public-api.mjs +1 -2
- package/esm2022/directive/let/let.directive.mjs +8 -9
- package/esm2022/directive/let/public-api.mjs +1 -2
- package/esm2022/directive/loader/loader.directive.mjs +12 -18
- package/esm2022/directive/loader/public-api.mjs +1 -2
- package/esm2022/directive/no-autofill/no-autofill.directive.mjs +7 -8
- package/esm2022/directive/no-autofill/public-api.mjs +1 -2
- package/esm2022/directive/only-number/only-number.directive.mjs +19 -19
- package/esm2022/directive/only-number/public-api.mjs +1 -2
- package/esm2022/directive/resize-drag/public-api.mjs +1 -2
- package/esm2022/directive/resize-drag/resize-drag.directive.mjs +18 -19
- package/esm2022/directive/scroll-into-view/public-api.mjs +1 -2
- package/esm2022/directive/scroll-into-view/scroll-into-view.directive.mjs +11 -13
- package/esm2022/directive/scrollable/public-api.mjs +1 -2
- package/esm2022/directive/scrollable/scrollable/scrollable.component.mjs +21 -24
- package/esm2022/directive/scrollable/scrollable.directive.mjs +8 -5
- package/esm2022/directive/teta-template/public-api.mjs +1 -2
- package/esm2022/directive/teta-template/teta-template.directive.mjs +8 -9
- package/esm2022/directive/tooltip/public-api.mjs +1 -2
- package/esm2022/directive/tooltip/tooltip.directive.mjs +16 -21
- package/esm2022/index.mjs +22 -0
- package/esm2022/locale/teta-config.service.mjs +8 -8
- package/esm2022/observable/animation-frame.mjs +1 -1
- package/esm2022/observable/public-api.mjs +1 -2
- package/esm2022/pipe/date-pipe/public-api.mjs +1 -2
- package/esm2022/pipe/date-pipe/teta-date.pipe.mjs +22 -14
- package/esm2022/pipe/number-pipe/number.pipe.mjs +6 -5
- package/esm2022/pipe/number-pipe/public-api.mjs +1 -2
- package/esm2022/pipe/util/number-helper.mjs +1 -1
- package/esm2022/tetacom-ng-components.mjs +2 -2
- package/esm2022/util/bool-or-func.mjs +1 -1
- package/esm2022/util/date-util.mjs +1 -1
- package/esm2022/util/forms-util.mjs +3 -3
- package/fesm2022/tetacom-ng-components.mjs +6035 -8435
- package/fesm2022/tetacom-ng-components.mjs.map +1 -1
- package/index.d.ts +17 -3
- package/observable/public-api.d.ts +0 -1
- package/package.json +6 -21
- package/pipe/date-pipe/public-api.d.ts +0 -1
- package/pipe/date-pipe/teta-date.pipe.d.ts +3 -3
- package/pipe/number-pipe/number.pipe.d.ts +1 -1
- package/pipe/number-pipe/public-api.d.ts +0 -1
- package/style/accordion.scss +3 -1
- package/style/checkbox.scss +1 -1
- package/style/icon.scss +1 -1
- package/style/message.scss +1 -1
- package/style/navigation.scss +3 -3
- package/style/switch.scss +1 -3
- package/style/toggle.scss +1 -1
- package/style/toolbar.scss +1 -1
- package/.browserslistrc +0 -16
- package/component/accordion/accordion.module.d.ts +0 -12
- package/component/autocomplete/autocomplete.module.d.ts +0 -8
- package/component/avatar/avatar.module.d.ts +0 -9
- package/component/button/button.module.d.ts +0 -8
- package/component/chart-3d/chart-3d.module.d.ts +0 -8
- package/component/checkbox/checkbox.module.d.ts +0 -9
- package/component/date-picker/date-picker.module.d.ts +0 -24
- package/component/delimiter/delimiter.module.d.ts +0 -8
- package/component/divider/divider.module.d.ts +0 -8
- package/component/dropdown/dropdown.module.d.ts +0 -11
- package/component/dynamic-component/dynamic-component.module.d.ts +0 -8
- package/component/expand-card/expand-card.module.d.ts +0 -13
- package/component/expand-panel/expand-panel.module.d.ts +0 -14
- package/component/file-upload/file-upload.module.d.ts +0 -12
- package/component/filter/filter.module.d.ts +0 -21
- package/component/icon/icon-file/icon-file.module.d.ts +0 -9
- package/component/icon/icon.module.d.ts +0 -10
- package/component/input/input.module.d.ts +0 -16
- package/component/message/message.module.d.ts +0 -11
- package/component/pager/pager.module.d.ts +0 -9
- package/component/panel/panel.module.d.ts +0 -8
- package/component/progress-bar/progress-bar.module.d.ts +0 -8
- package/component/radio/radio.module.d.ts +0 -10
- package/component/resize-panel/resize-panel.module.d.ts +0 -10
- package/component/select/select.module.d.ts +0 -18
- package/component/sidebar/sidebar.module.d.ts +0 -10
- package/component/switch/switch.module.d.ts +0 -9
- package/component/table/table.module.d.ts +0 -47
- package/component/tabs/tabs.module.d.ts +0 -11
- package/component/theme-switch/theme-switch.module.d.ts +0 -10
- package/component/three/custom-series/custom-series.component.d.ts +0 -20
- package/component/three/public-api.d.ts +0 -11
- package/component/three/three-chart/area-3d/area-3d.component.d.ts +0 -14
- package/component/three/three-chart/axes-3d/axes-3d.component.d.ts +0 -37
- package/component/three/three-chart/base-3d-series/base3d-series.component.d.ts +0 -15
- package/component/three/three-chart/block-3d/block-3d.component.d.ts +0 -28
- package/component/three/three-chart/canvas/canvas.component.d.ts +0 -11
- package/component/three/three-chart/directive/canvas-3d-host.d.ts +0 -19
- package/component/three/three-chart/directive/public-api.d.ts +0 -2
- package/component/three/three-chart/directive/series-3d-host.d.ts +0 -16
- package/component/three/three-chart/line-3d/line-3d.component.d.ts +0 -19
- package/component/three/three-chart/model/axes-3d-min-max.d.ts +0 -5
- package/component/three/three-chart/model/axis-3d-point.d.ts +0 -4
- package/component/three/three-chart/model/base-3d-series.d.ts +0 -11
- package/component/three/three-chart/model/base-3d-three-point.d.ts +0 -8
- package/component/three/three-chart/model/block-3d-series.d.ts +0 -6
- package/component/three/three-chart/model/block3d-point.d.ts +0 -5
- package/component/three/three-chart/model/enum/public-api.d.ts +0 -1
- package/component/three/three-chart/model/enum/series-3d-type.d.ts +0 -4
- package/component/three/three-chart/model/i-3d-chart-config.d.ts +0 -14
- package/component/three/three-chart/model/line-3d-point.d.ts +0 -5
- package/component/three/three-chart/model/line-3d-series.d.ts +0 -6
- package/component/three/three-chart/model/public-api.d.ts +0 -10
- package/component/three/three-chart/scene/scene.component.d.ts +0 -20
- package/component/three/three-chart/service/chart-3d.service.d.ts +0 -21
- package/component/three/three-chart/three-chart.component.d.ts +0 -19
- package/component/toggle/toggle.module.d.ts +0 -9
- package/component/toolbar/toolbar.module.d.ts +0 -8
- package/component/tree/tree.module.d.ts +0 -14
- package/directive/auto-position/auto-position.module.d.ts +0 -8
- package/directive/click-outside/click-outside.module.d.ts +0 -8
- package/directive/context-menu/context-menu.module.d.ts +0 -9
- package/directive/disable-control/disable-control.module.d.ts +0 -8
- package/directive/drag-drop/drag-drop.module.d.ts +0 -11
- package/directive/drag-sort/drag-sort.module.d.ts +0 -9
- package/directive/highlight/highlight.module.d.ts +0 -8
- package/directive/hint/hint.module.d.ts +0 -9
- package/directive/let/let.module.d.ts +0 -8
- package/directive/loader/loader.module.d.ts +0 -8
- package/directive/no-autofill/no-autofill.module.d.ts +0 -8
- package/directive/only-number/only-number.module.d.ts +0 -8
- package/directive/resize-drag/resize-drag.module.d.ts +0 -8
- package/directive/scroll-into-view/scroll-into-view.module.d.ts +0 -8
- package/directive/scrollable/scrollable.module.d.ts +0 -10
- package/directive/teta-template/teta-template.module.d.ts +0 -8
- package/directive/tooltip/tooltip.module.d.ts +0 -10
- package/docs/chartDocs.mdx +0 -153
- package/docs/threeDocs.mdx +0 -65
- package/esm2022/component/accordion/accordion.module.mjs +0 -27
- package/esm2022/component/autocomplete/autocomplete.module.mjs +0 -24
- package/esm2022/component/avatar/avatar.module.mjs +0 -28
- package/esm2022/component/button/button.module.mjs +0 -22
- package/esm2022/component/chart-3d/chart-3d.module.mjs +0 -18
- package/esm2022/component/checkbox/checkbox.module.mjs +0 -26
- package/esm2022/component/date-picker/date-picker.module.mjs +0 -91
- package/esm2022/component/delimiter/delimiter.module.mjs +0 -20
- package/esm2022/component/divider/divider.module.mjs +0 -20
- package/esm2022/component/dropdown/dropdown.module.mjs +0 -39
- package/esm2022/component/dynamic-component/dynamic-component.module.mjs +0 -20
- package/esm2022/component/expand-card/expand-card.module.mjs +0 -45
- package/esm2022/component/expand-panel/expand-panel.module.mjs +0 -50
- package/esm2022/component/file-upload/file-upload.module.mjs +0 -22
- package/esm2022/component/filter/filter.module.mjs +0 -81
- package/esm2022/component/icon/icon-file/icon-file.module.mjs +0 -28
- package/esm2022/component/icon/icon.module.mjs +0 -33
- package/esm2022/component/input/input.module.mjs +0 -26
- package/esm2022/component/message/message.module.mjs +0 -29
- package/esm2022/component/pager/pager.module.mjs +0 -24
- package/esm2022/component/panel/panel.module.mjs +0 -20
- package/esm2022/component/progress-bar/progress-bar.module.mjs +0 -20
- package/esm2022/component/radio/radio.module.mjs +0 -20
- package/esm2022/component/resize-panel/resize-panel.module.mjs +0 -20
- package/esm2022/component/select/select.module.mjs +0 -54
- package/esm2022/component/sidebar/sidebar.module.mjs +0 -28
- package/esm2022/component/switch/switch.module.mjs +0 -21
- package/esm2022/component/table/table.module.mjs +0 -185
- package/esm2022/component/tabs/tabs.module.mjs +0 -39
- package/esm2022/component/theme-switch/theme-switch.module.mjs +0 -28
- package/esm2022/component/three/custom-series/custom-series.component.mjs +0 -34
- package/esm2022/component/three/public-api.mjs +0 -12
- package/esm2022/component/three/three-chart/area-3d/area-3d.component.mjs +0 -53
- package/esm2022/component/three/three-chart/axes-3d/axes-3d.component.mjs +0 -60
- package/esm2022/component/three/three-chart/base-3d-series/base3d-series.component.mjs +0 -29
- package/esm2022/component/three/three-chart/block-3d/block-3d.component.mjs +0 -77
- package/esm2022/component/three/three-chart/canvas/canvas.component.mjs +0 -24
- package/esm2022/component/three/three-chart/directive/canvas-3d-host.mjs +0 -49
- package/esm2022/component/three/three-chart/directive/public-api.mjs +0 -3
- package/esm2022/component/three/three-chart/directive/series-3d-host.mjs +0 -48
- package/esm2022/component/three/three-chart/line-3d/line-3d.component.mjs +0 -42
- package/esm2022/component/three/three-chart/model/axes-3d-min-max.mjs +0 -2
- package/esm2022/component/three/three-chart/model/axis-3d-point.mjs +0 -2
- package/esm2022/component/three/three-chart/model/base-3d-series.mjs +0 -2
- package/esm2022/component/three/three-chart/model/base-3d-three-point.mjs +0 -2
- package/esm2022/component/three/three-chart/model/block-3d-series.mjs +0 -2
- package/esm2022/component/three/three-chart/model/block3d-point.mjs +0 -2
- package/esm2022/component/three/three-chart/model/enum/public-api.mjs +0 -2
- package/esm2022/component/three/three-chart/model/enum/series-3d-type.mjs +0 -6
- package/esm2022/component/three/three-chart/model/i-3d-chart-config.mjs +0 -2
- package/esm2022/component/three/three-chart/model/line-3d-point.mjs +0 -2
- package/esm2022/component/three/three-chart/model/line-3d-series.mjs +0 -2
- package/esm2022/component/three/three-chart/model/public-api.mjs +0 -11
- package/esm2022/component/three/three-chart/scene/scene.component.mjs +0 -47
- package/esm2022/component/three/three-chart/service/chart-3d.service.mjs +0 -86
- package/esm2022/component/three/three-chart/three-chart.component.mjs +0 -46
- package/esm2022/component/toggle/toggle.module.mjs +0 -19
- package/esm2022/component/toolbar/toolbar.module.mjs +0 -20
- package/esm2022/component/tree/tree.module.mjs +0 -24
- package/esm2022/directive/auto-position/auto-position.module.mjs +0 -24
- package/esm2022/directive/click-outside/click-outside.module.mjs +0 -20
- package/esm2022/directive/context-menu/context-menu.module.mjs +0 -24
- package/esm2022/directive/disable-control/disable-control.module.mjs +0 -22
- package/esm2022/directive/drag-drop/drag-drop.module.mjs +0 -39
- package/esm2022/directive/drag-sort/drag-sort.module.mjs +0 -19
- package/esm2022/directive/highlight/highlight.module.mjs +0 -20
- package/esm2022/directive/hint/hint.module.mjs +0 -24
- package/esm2022/directive/let/let.module.mjs +0 -23
- package/esm2022/directive/loader/loader.module.mjs +0 -20
- package/esm2022/directive/no-autofill/no-autofill.module.mjs +0 -18
- package/esm2022/directive/only-number/only-number.module.mjs +0 -18
- package/esm2022/directive/resize-drag/resize-drag.module.mjs +0 -18
- package/esm2022/directive/scroll-into-view/scroll-into-view.module.mjs +0 -23
- package/esm2022/directive/scrollable/scrollable.module.mjs +0 -33
- package/esm2022/directive/teta-template/teta-template.module.mjs +0 -24
- package/esm2022/directive/tooltip/tooltip.module.mjs +0 -20
- package/esm2022/observable/zoneObservable.mjs +0 -15
- package/esm2022/pipe/date-pipe/teta-date-pipe.module.mjs +0 -18
- package/esm2022/pipe/number-pipe/number-pipe.module.mjs +0 -22
- package/esm2022/public-api.mjs +0 -25
- package/observable/zoneObservable.d.ts +0 -5
- package/pipe/date-pipe/teta-date-pipe.module.d.ts +0 -8
- package/pipe/number-pipe/number-pipe.module.d.ts +0 -8
- package/public-api.d.ts +0 -22
|
@@ -1,59 +1,31 @@
|
|
|
1
|
-
import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
|
|
2
|
-
import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output, ViewChild, } from '@angular/core';
|
|
1
|
+
import { CdkVirtualScrollViewport, CdkFixedSizeVirtualScroll, CdkVirtualForOf } from '@angular/cdk/scrolling';
|
|
2
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, HostBinding, Input, Output, Type, ViewChild, } from '@angular/core';
|
|
3
3
|
import { combineLatest } from 'rxjs';
|
|
4
4
|
import { takeWhile } from 'rxjs/operators';
|
|
5
5
|
import { ArrayUtil } from '../../../common/util/array-util';
|
|
6
|
+
import { TetaConfigService } from '../../../locale/teta-config.service';
|
|
6
7
|
import { AggregationType } from '../enum/aggregation-type.enum';
|
|
7
8
|
import { SelectType } from '../enum/select-type.enum';
|
|
9
|
+
import { TableService } from '../service/table.service';
|
|
10
|
+
import { NumberPipe } from '../../../pipe/number-pipe/number.pipe';
|
|
11
|
+
import { IconComponent } from '../../icon/icon/icon.component';
|
|
12
|
+
import { CellComponent } from '../cell/cell.component';
|
|
13
|
+
import { SelectionCellComponent } from '../selection-cell/selection-cell.component';
|
|
14
|
+
import { FormsModule } from '@angular/forms';
|
|
15
|
+
import { NgTemplateOutlet, NgClass, AsyncPipe } from '@angular/common';
|
|
16
|
+
import { ScrollableDirective } from '../../../directive/scrollable/scrollable.directive';
|
|
17
|
+
import { ScrollableComponent } from '../../../directive/scrollable/scrollable/scrollable.component';
|
|
8
18
|
import * as i0 from "@angular/core";
|
|
9
19
|
import * as i1 from "../service/table.service";
|
|
10
20
|
import * as i2 from "../../../locale/teta-config.service";
|
|
11
|
-
import * as i3 from "@angular/
|
|
12
|
-
import * as i4 from "@angular/forms";
|
|
13
|
-
import * as i5 from "../../icon/icon/icon.component";
|
|
14
|
-
import * as i6 from "@angular/cdk/scrolling";
|
|
15
|
-
import * as i7 from "../../../directive/scrollable/scrollable.directive";
|
|
16
|
-
import * as i8 from "../../../directive/scrollable/scrollable/scrollable.component";
|
|
17
|
-
import * as i9 from "../cell/cell.component";
|
|
18
|
-
import * as i10 from "../selection-cell/selection-cell.component";
|
|
19
|
-
import * as i11 from "../../../pipe/number-pipe/number.pipe";
|
|
21
|
+
import * as i3 from "@angular/forms";
|
|
20
22
|
export class TableBodyComponent {
|
|
21
|
-
_svc;
|
|
22
|
-
_elementRef;
|
|
23
|
-
_config;
|
|
24
|
-
_cdr;
|
|
25
|
-
virtual;
|
|
26
|
-
activeRow;
|
|
27
|
-
selectedRows = [];
|
|
28
|
-
additionalComponent;
|
|
29
|
-
aggregate;
|
|
30
|
-
selectType;
|
|
31
|
-
rowClass;
|
|
32
|
-
trackRow;
|
|
33
|
-
trackColumns;
|
|
34
|
-
viewport;
|
|
35
|
-
tableBodyClass = true;
|
|
36
|
-
scrollChange = new EventEmitter();
|
|
37
23
|
set data(data) {
|
|
38
24
|
this._data = data;
|
|
39
25
|
}
|
|
40
26
|
get data() {
|
|
41
27
|
return this._data;
|
|
42
28
|
}
|
|
43
|
-
dict;
|
|
44
|
-
locked = [];
|
|
45
|
-
unlocked = [];
|
|
46
|
-
selectTypeEnum = SelectType;
|
|
47
|
-
aggregationType = AggregationType;
|
|
48
|
-
lockedFlex;
|
|
49
|
-
lockedWidth;
|
|
50
|
-
totalFlex;
|
|
51
|
-
totalWidth;
|
|
52
|
-
_columns = [];
|
|
53
|
-
_alive = true;
|
|
54
|
-
_data;
|
|
55
|
-
_hiddenColumns = [];
|
|
56
|
-
_obs;
|
|
57
29
|
set columns(columns) {
|
|
58
30
|
this._columns = columns;
|
|
59
31
|
this.locked = this._columns?.filter(_ => _.locked === true);
|
|
@@ -67,12 +39,24 @@ export class TableBodyComponent {
|
|
|
67
39
|
get columns() {
|
|
68
40
|
return this._columns;
|
|
69
41
|
}
|
|
70
|
-
locale;
|
|
71
42
|
constructor(_svc, _elementRef, _config, _cdr) {
|
|
72
43
|
this._svc = _svc;
|
|
73
44
|
this._elementRef = _elementRef;
|
|
74
45
|
this._config = _config;
|
|
75
46
|
this._cdr = _cdr;
|
|
47
|
+
this.selectedRows = [];
|
|
48
|
+
this.tableBodyClass = true;
|
|
49
|
+
this.scrollChange = new EventEmitter();
|
|
50
|
+
this.locked = [];
|
|
51
|
+
this.unlocked = [];
|
|
52
|
+
this.selectTypeEnum = SelectType;
|
|
53
|
+
this.aggregationType = AggregationType;
|
|
54
|
+
this._columns = [];
|
|
55
|
+
this._alive = true;
|
|
56
|
+
this._hiddenColumns = [];
|
|
57
|
+
this.trackTableRow = (index, row) => {
|
|
58
|
+
return this.trackRow ? this.trackRow(index, row.data) : row.data['id'];
|
|
59
|
+
};
|
|
76
60
|
}
|
|
77
61
|
setActiveRow(row, event) {
|
|
78
62
|
if (!event.shiftKey && !event.ctrlKey) {
|
|
@@ -133,6 +117,7 @@ export class TableBodyComponent {
|
|
|
133
117
|
if (column.aggregate === AggregationType.max) {
|
|
134
118
|
return this.getMax(column.name);
|
|
135
119
|
}
|
|
120
|
+
return null;
|
|
136
121
|
}
|
|
137
122
|
getAggregateText(column) {
|
|
138
123
|
if (column.aggregate === AggregationType.sum) {
|
|
@@ -152,9 +137,6 @@ export class TableBodyComponent {
|
|
|
152
137
|
emitScroll(event) {
|
|
153
138
|
this.scrollChange.emit(event);
|
|
154
139
|
}
|
|
155
|
-
trackTableRow = (index, row) => {
|
|
156
|
-
return this.trackRow ? this.trackRow(index, row.data) : row.data['id'];
|
|
157
|
-
};
|
|
158
140
|
addResizeObserver() {
|
|
159
141
|
this._obs = new ResizeObserver(_ => {
|
|
160
142
|
this.viewport?.checkViewportSize();
|
|
@@ -181,13 +163,27 @@ export class TableBodyComponent {
|
|
|
181
163
|
? accum
|
|
182
164
|
: current.data[columnName], null);
|
|
183
165
|
}
|
|
184
|
-
static
|
|
185
|
-
static
|
|
166
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TableBodyComponent, deps: [{ token: i1.TableService }, { token: i0.ElementRef }, { token: i2.TetaConfigService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
167
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: TableBodyComponent, isStandalone: true, selector: "teta-table-body", inputs: { virtual: "virtual", activeRow: "activeRow", selectedRows: "selectedRows", additionalComponent: "additionalComponent", aggregate: "aggregate", selectType: "selectType", rowClass: "rowClass", trackRow: "trackRow", trackColumns: "trackColumns" }, outputs: { scrollChange: "scrollChange" }, host: { properties: { "class.table-body": "this.tableBodyClass" } }, viewQueries: [{ propertyName: "viewport", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], ngImport: i0, template: "@if (virtual && data.length > 0) {\n <teta-scrollable class=\"table-body-container\"\n style=\"padding-bottom: 12px\"\n [showScrollbars]=\"true\"\n >\n <cdk-virtual-scroll-viewport tetaScrollable\n class=\"table-body-container\"\n (scroll)=\"emitScroll($event)\"\n [itemSize]=\"28\">\n <ng-container *cdkVirtualFor=\"let row of data;templateCacheSize: 0; let rowIndex = index; trackBy: trackTableRow;\">\n <ng-container *ngTemplateOutlet=\"bodyTemplate; context: {row: row, rowIndex: rowIndex}\"></ng-container>\n </ng-container>\n </cdk-virtual-scroll-viewport>\n </teta-scrollable>\n} @else {\n <teta-scrollable class=\"table-body-container\"\n style=\"padding-bottom: 12px\"\n direction=\"column\"\n [showScrollbars]=\"true\"\n (scroll)=\"emitScroll($event)\">\n <div class=\"table-body-container\">\n @if (!data?.length) {\n <div class=\"column column_auto\"\n style=\"position: absolute; top:0; bottom:16px;left:0;right:0;\"\n >\n <ng-content></ng-content>\n </div>\n }\n @for (row of data; track trackTableRow(rowIndex, row); let rowIndex = $index) {\n <ng-container *ngTemplateOutlet=\"bodyTemplate; context: {row: row, rowIndex: rowIndex}\"></ng-container>\n }\n @if (aggregate) {\n <ng-container *ngTemplateOutlet=\"aggTemplate;\"></ng-container>\n }\n <ng-container *ngTemplateOutlet=\"emptyRow;\"></ng-container>\n </div>\n </teta-scrollable>\n}\n\n<ng-template #bodyTemplate let-row=\"row\" let-rowIndex=\"rowIndex\">\n <div class=\"table-row\"\n ngForm\n (click)=\"setActiveRow(row.data, $event)\"\n [attr.data-row]=\"rowIndex\"\n [class.table-row_odd]=\"rowIndex % 2 === 1\"\n [ngClass]=\"rowClass ? rowClass(row.data, rowIndex) : ''\"\n [class.table-row_selected]=\"selectedRows && selectedRows.indexOf(row.data) >= 0\"\n [style.flex-grow]=\"totalFlex\"\n [style.flex-basis.px]=\"totalWidth\"\n [style.min-width.px]=\"totalWidth\">\n @if (locked.length > 0) {\n <div class=\"table-row_locked\"\n [style.flex-grow]=\"lockedFlex\"\n [style.flex-basis.px]=\"lockedWidth\"\n [style.min-width.px]=\"lockedWidth\"\n [style.zIndex]=\"row.data === activeRow ? 2 : 1\">\n @if (selectType === selectTypeEnum.checkBox && locked.length) {\n <teta-selection-cell\n [row]=\"row.data\"\n style=\"width: 28px;\"></teta-selection-cell>\n }\n @for (column of locked; track trackColumns(colIndex, column); let colIndex = $index) {\n <teta-cell\n [attr.data-row]=\"rowIndex\"\n [attr.data-column]=\"column.name\"\n [column]=\"column\"\n [filterOptions]=\"dict?dict[column.name]:[]\"\n [dict]=\"dict\"\n [row]=\"row\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n [style.flex-grow]=\"column.flex\"\n [style.flex-basis.px]=\"column.width\"\n ></teta-cell>\n }\n </div>\n }\n @if (selectType === selectTypeEnum.checkBox && locked.length < 1) {\n <teta-selection-cell\n [row]=\"row.data\"\n style=\"width: 28px;\"></teta-selection-cell>\n }\n @for (column of unlocked; track trackColumns(colIndex, column); let colIndex = $index) {\n <teta-cell\n [attr.data-row]=\"rowIndex\"\n [attr.data-column]=\"column.name\"\n [column]=\"column\"\n [filterOptions]=\"dict?dict[column.name]:[]\"\n [dict]=\"dict\"\n [row]=\"row\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n [style.flex-grow]=\"column.flex\"\n [style.flex-basis.px]=\"column.width\"\n ></teta-cell>\n }\n </div>\n</ng-template>\n\n<ng-template #aggTemplate>\n @if (locale | async; as loc) {\n @if (aggregate) {\n <div class=\"table-row\"\n [class.table-row_virtual]=\"virtual\"\n [style.flex-grow]=\"totalFlex\"\n [style.flex-basis.px]=\"totalWidth\"\n [style.min-width.px]=\"totalWidth\">\n @if (locked.length > 0) {\n <div class=\"table-row_locked\"\n [style.flex-grow]=\"lockedFlex\"\n [style.flex-basis.px]=\"lockedWidth\"\n [style.min-width.px]=\"lockedWidth\">\n @if (selectType === selectTypeEnum.checkBox && locked.length < 1) {\n <div class=\"cell align-center justify-content-center\"\n style=\"width: 28px;\"\n >\n <teta-icon [name]=\"'sumColor'\"></teta-icon>\n </div>\n }\n @for (column of locked; track trackColumns(colIndex, column); let colIndex = $index) {\n <div class=\"cell cell-component aggregate-cell\"\n [attr.data-column]=\"column.name\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n [style.flex-grow]=\"column.flex\"\n [style.flex-basis.px]=\"column.width\">\n @if (column.aggregate !== aggregationType.none) {\n <span class=\"cell-text cell-text_numeric font-title-3\"\n >\n {{loc[getAggregateText(column)]}}:\n {{getAggregateValue(column) | tetaNumber : 2}}\n </span>\n }\n </div>\n }\n </div>\n }\n @if (selectType === selectTypeEnum.checkBox && locked.length < 1) {\n <div class=\"cell align-center justify-content-center\"\n style=\"width: 28px;\"\n >\n <teta-icon [name]=\"'sumColor'\"></teta-icon>\n </div>\n }\n @for (column of unlocked; track trackColumns(colIndex, column); let colIndex = $index) {\n <div class=\"cell cell-component aggregate-cell\"\n [attr.data-column]=\"column.name\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n [style.flex-grow]=\"column.flex\"\n [style.flex-basis.px]=\"column.width\">\n @if (column.aggregate !== aggregationType.none) {\n <span class=\"cell-text cell-text_numeric font-title-3\"\n >\n {{loc[getAggregateText(column)]}}:\n {{getAggregateValue(column) | tetaNumber : 2}}\n </span>\n }\n </div>\n }\n </div>\n }\n }\n</ng-template>\n<ng-template #emptyRow>\n <div class=\"empty-table-row\"\n style=\"height: 0.1px\"\n [style.flex-grow]=\"totalFlex\"\n [style.flex-basis.px]=\"totalWidth\"\n [style.min-width.px]=\"totalWidth\">\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "component", type: ScrollableComponent, selector: "teta-scrollable", inputs: ["direction", "showScrollbars", "contentClass"], outputs: ["scroll"] }, { kind: "component", type: CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: ScrollableDirective, selector: "[tetaScrollable]" }, { kind: "directive", type: CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: SelectionCellComponent, selector: "teta-selection-cell", inputs: ["row"] }, { kind: "component", type: CellComponent, selector: "teta-cell", inputs: ["column", "filterOptions", "dict", "row"] }, { kind: "component", type: IconComponent, selector: "teta-icon", inputs: ["name", "size", "palette", "class"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: NumberPipe, name: "tetaNumber" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
186
168
|
}
|
|
187
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
169
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TableBodyComponent, decorators: [{
|
|
188
170
|
type: Component,
|
|
189
|
-
args: [{ selector: 'teta-table-body', changeDetection: ChangeDetectionStrategy.OnPush,
|
|
190
|
-
|
|
171
|
+
args: [{ selector: 'teta-table-body', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
172
|
+
ScrollableComponent,
|
|
173
|
+
CdkVirtualScrollViewport,
|
|
174
|
+
CdkFixedSizeVirtualScroll,
|
|
175
|
+
ScrollableDirective,
|
|
176
|
+
CdkVirtualForOf,
|
|
177
|
+
NgTemplateOutlet,
|
|
178
|
+
FormsModule,
|
|
179
|
+
NgClass,
|
|
180
|
+
SelectionCellComponent,
|
|
181
|
+
CellComponent,
|
|
182
|
+
IconComponent,
|
|
183
|
+
AsyncPipe,
|
|
184
|
+
NumberPipe,
|
|
185
|
+
], template: "@if (virtual && data.length > 0) {\n <teta-scrollable class=\"table-body-container\"\n style=\"padding-bottom: 12px\"\n [showScrollbars]=\"true\"\n >\n <cdk-virtual-scroll-viewport tetaScrollable\n class=\"table-body-container\"\n (scroll)=\"emitScroll($event)\"\n [itemSize]=\"28\">\n <ng-container *cdkVirtualFor=\"let row of data;templateCacheSize: 0; let rowIndex = index; trackBy: trackTableRow;\">\n <ng-container *ngTemplateOutlet=\"bodyTemplate; context: {row: row, rowIndex: rowIndex}\"></ng-container>\n </ng-container>\n </cdk-virtual-scroll-viewport>\n </teta-scrollable>\n} @else {\n <teta-scrollable class=\"table-body-container\"\n style=\"padding-bottom: 12px\"\n direction=\"column\"\n [showScrollbars]=\"true\"\n (scroll)=\"emitScroll($event)\">\n <div class=\"table-body-container\">\n @if (!data?.length) {\n <div class=\"column column_auto\"\n style=\"position: absolute; top:0; bottom:16px;left:0;right:0;\"\n >\n <ng-content></ng-content>\n </div>\n }\n @for (row of data; track trackTableRow(rowIndex, row); let rowIndex = $index) {\n <ng-container *ngTemplateOutlet=\"bodyTemplate; context: {row: row, rowIndex: rowIndex}\"></ng-container>\n }\n @if (aggregate) {\n <ng-container *ngTemplateOutlet=\"aggTemplate;\"></ng-container>\n }\n <ng-container *ngTemplateOutlet=\"emptyRow;\"></ng-container>\n </div>\n </teta-scrollable>\n}\n\n<ng-template #bodyTemplate let-row=\"row\" let-rowIndex=\"rowIndex\">\n <div class=\"table-row\"\n ngForm\n (click)=\"setActiveRow(row.data, $event)\"\n [attr.data-row]=\"rowIndex\"\n [class.table-row_odd]=\"rowIndex % 2 === 1\"\n [ngClass]=\"rowClass ? rowClass(row.data, rowIndex) : ''\"\n [class.table-row_selected]=\"selectedRows && selectedRows.indexOf(row.data) >= 0\"\n [style.flex-grow]=\"totalFlex\"\n [style.flex-basis.px]=\"totalWidth\"\n [style.min-width.px]=\"totalWidth\">\n @if (locked.length > 0) {\n <div class=\"table-row_locked\"\n [style.flex-grow]=\"lockedFlex\"\n [style.flex-basis.px]=\"lockedWidth\"\n [style.min-width.px]=\"lockedWidth\"\n [style.zIndex]=\"row.data === activeRow ? 2 : 1\">\n @if (selectType === selectTypeEnum.checkBox && locked.length) {\n <teta-selection-cell\n [row]=\"row.data\"\n style=\"width: 28px;\"></teta-selection-cell>\n }\n @for (column of locked; track trackColumns(colIndex, column); let colIndex = $index) {\n <teta-cell\n [attr.data-row]=\"rowIndex\"\n [attr.data-column]=\"column.name\"\n [column]=\"column\"\n [filterOptions]=\"dict?dict[column.name]:[]\"\n [dict]=\"dict\"\n [row]=\"row\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n [style.flex-grow]=\"column.flex\"\n [style.flex-basis.px]=\"column.width\"\n ></teta-cell>\n }\n </div>\n }\n @if (selectType === selectTypeEnum.checkBox && locked.length < 1) {\n <teta-selection-cell\n [row]=\"row.data\"\n style=\"width: 28px;\"></teta-selection-cell>\n }\n @for (column of unlocked; track trackColumns(colIndex, column); let colIndex = $index) {\n <teta-cell\n [attr.data-row]=\"rowIndex\"\n [attr.data-column]=\"column.name\"\n [column]=\"column\"\n [filterOptions]=\"dict?dict[column.name]:[]\"\n [dict]=\"dict\"\n [row]=\"row\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n [style.flex-grow]=\"column.flex\"\n [style.flex-basis.px]=\"column.width\"\n ></teta-cell>\n }\n </div>\n</ng-template>\n\n<ng-template #aggTemplate>\n @if (locale | async; as loc) {\n @if (aggregate) {\n <div class=\"table-row\"\n [class.table-row_virtual]=\"virtual\"\n [style.flex-grow]=\"totalFlex\"\n [style.flex-basis.px]=\"totalWidth\"\n [style.min-width.px]=\"totalWidth\">\n @if (locked.length > 0) {\n <div class=\"table-row_locked\"\n [style.flex-grow]=\"lockedFlex\"\n [style.flex-basis.px]=\"lockedWidth\"\n [style.min-width.px]=\"lockedWidth\">\n @if (selectType === selectTypeEnum.checkBox && locked.length < 1) {\n <div class=\"cell align-center justify-content-center\"\n style=\"width: 28px;\"\n >\n <teta-icon [name]=\"'sumColor'\"></teta-icon>\n </div>\n }\n @for (column of locked; track trackColumns(colIndex, column); let colIndex = $index) {\n <div class=\"cell cell-component aggregate-cell\"\n [attr.data-column]=\"column.name\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n [style.flex-grow]=\"column.flex\"\n [style.flex-basis.px]=\"column.width\">\n @if (column.aggregate !== aggregationType.none) {\n <span class=\"cell-text cell-text_numeric font-title-3\"\n >\n {{loc[getAggregateText(column)]}}:\n {{getAggregateValue(column) | tetaNumber : 2}}\n </span>\n }\n </div>\n }\n </div>\n }\n @if (selectType === selectTypeEnum.checkBox && locked.length < 1) {\n <div class=\"cell align-center justify-content-center\"\n style=\"width: 28px;\"\n >\n <teta-icon [name]=\"'sumColor'\"></teta-icon>\n </div>\n }\n @for (column of unlocked; track trackColumns(colIndex, column); let colIndex = $index) {\n <div class=\"cell cell-component aggregate-cell\"\n [attr.data-column]=\"column.name\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n [style.flex-grow]=\"column.flex\"\n [style.flex-basis.px]=\"column.width\">\n @if (column.aggregate !== aggregationType.none) {\n <span class=\"cell-text cell-text_numeric font-title-3\"\n >\n {{loc[getAggregateText(column)]}}:\n {{getAggregateValue(column) | tetaNumber : 2}}\n </span>\n }\n </div>\n }\n </div>\n }\n }\n</ng-template>\n<ng-template #emptyRow>\n <div class=\"empty-table-row\"\n style=\"height: 0.1px\"\n [style.flex-grow]=\"totalFlex\"\n [style.flex-basis.px]=\"totalWidth\"\n [style.min-width.px]=\"totalWidth\">\n </div>\n</ng-template>\n" }]
|
|
186
|
+
}], ctorParameters: () => [{ type: i1.TableService }, { type: i0.ElementRef }, { type: i2.TetaConfigService }, { type: i0.ChangeDetectorRef }], propDecorators: { virtual: [{
|
|
191
187
|
type: Input
|
|
192
188
|
}], activeRow: [{
|
|
193
189
|
type: Input
|
|
@@ -214,4 +210,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImpor
|
|
|
214
210
|
}], scrollChange: [{
|
|
215
211
|
type: Output
|
|
216
212
|
}] } });
|
|
217
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYm9keS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L3RhYmxlL3RhYmxlLWJvZHkvdGFibGUtYm9keS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L3RhYmxlL3RhYmxlLWJvZHkvdGFibGUtYm9keS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFHTCxNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxhQUFhLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDakQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSTNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQU01RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7Ozs7Ozs7O0FBU3RELE1BQU0sT0FBTyxrQkFBa0I7SUFzRW5CO0lBQ0E7SUFDQTtJQUNBO0lBeEVELE9BQU8sQ0FBVTtJQUNqQixTQUFTLENBQUk7SUFDYixZQUFZLEdBQVEsRUFBRSxDQUFDO0lBQ3ZCLG1CQUFtQixDQUErQjtJQUNsRCxTQUFTLENBQVU7SUFDbkIsVUFBVSxDQUFhO0lBQ3ZCLFFBQVEsQ0FBcUM7SUFDN0MsUUFBUSxDQUFpQztJQUN6QyxZQUFZLENBQThDO0lBRW5FLFFBQVEsQ0FBMkI7SUFFZSxjQUFjLEdBQUcsSUFBSSxDQUFDO0lBQzlELFlBQVksR0FBRyxJQUFJLFlBQVksRUFBUyxDQUFDO0lB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QUFwQixLQUFLO2dCQUVOLFFBQVE7c0JBRFAsU0FBUzt1QkFBQyx3QkFBd0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBR0osY0FBYztzQkFBL0QsV0FBVzt1QkFBQyxrQkFBa0I7Z0JBQ3JCLFlBQVk7c0JBQXJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQgfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVHlwZSxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VXaGlsZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgSURpY3Rpb25hcnkgfSBmcm9tICcuLi8uLi8uLi9jb21tb24vY29udHJhY3QvaS1kaWN0aW9uYXJ5JztcbmltcG9ydCB7IElJZE5hbWUgfSBmcm9tICcuLi8uLi8uLi9jb21tb24vY29udHJhY3QvaS1pZC1uYW1lJztcbmltcG9ydCB7IEFycmF5VXRpbCB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi91dGlsL2FycmF5LXV0aWwnO1xuaW1wb3J0IHsgVGV0YUNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9sb2NhbGUvdGV0YS1jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBUZXRhTG9jYWxpc2F0aW9uIH0gZnJvbSAnLi4vLi4vLi4vbG9jYWxlL3RldGEtbG9jYWxpc2F0aW9uJztcbmltcG9ydCB7IERldGFpbENvbXBvbmVudEJhc2UgfSBmcm9tICcuLi9iYXNlL2RldGFpbC1jb21wb25lbnQtYmFzZSc7XG5pbXBvcnQgeyBUYWJsZUNvbHVtbiB9IGZyb20gJy4uL2NvbnRyYWN0L3RhYmxlLWNvbHVtbic7XG5pbXBvcnQgeyBUYWJsZVJvdyB9IGZyb20gJy4uL2NvbnRyYWN0L3RhYmxlLXJvdyc7XG5pbXBvcnQgeyBBZ2dyZWdhdGlvblR5cGUgfSBmcm9tICcuLi9lbnVtL2FnZ3JlZ2F0aW9uLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBTZWxlY3RUeXBlIH0gZnJvbSAnLi4vZW51bS9zZWxlY3QtdHlwZS5lbnVtJztcbmltcG9ydCB7IFRhYmxlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2UvdGFibGUuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RldGEtdGFibGUtYm9keScsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS1ib2R5LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFibGUtYm9keS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVCb2R5Q29tcG9uZW50PFQ+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSB2aXJ0dWFsOiBib29sZWFuO1xuICBASW5wdXQoKSBhY3RpdmVSb3c6IFQ7XG4gIEBJbnB1dCgpIHNlbGVjdGVkUm93czogVFtdID0gW107XG4gIEBJbnB1dCgpIGFkZGl0aW9uYWxDb21wb25lbnQ6IFR5cGU8RGV0YWlsQ29tcG9uZW50QmFzZTxUPj47XG4gIEBJbnB1dCgpIGFnZ3JlZ2F0ZTogYm9vbGVhbjtcbiAgQElucHV0KCkgc2VsZWN0VHlwZTogU2VsZWN0VHlwZTtcbiAgQElucHV0KCkgcm93Q2xhc3M6IChyb3c6IFQsIGluZGV4PzogbnVtYmVyKSA9PiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRyYWNrUm93OiAoaW5kZXg6IG51bWJlciwgcm93OiBUKSA9PiBhbnk7XG4gIEBJbnB1dCgpIHRyYWNrQ29sdW1uczogKGluZGV4OiBudW1iZXIsIGNvbHVtbjogVGFibGVDb2x1bW4pID0+IGFueTtcbiAgQFZpZXdDaGlsZChDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQsIHsgc3RhdGljOiBmYWxzZSB9KVxuICB2aWV3cG9ydDogQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0O1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MudGFibGUtYm9keScpIHByaXZhdGUgcmVhZG9ubHkgdGFibGVCb2R5Q2xhc3MgPSB0cnVlO1xuICBAT3V0cHV0KCkgc2Nyb2xsQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcblxuICBzZXQgZGF0YShkYXRhOiBUYWJsZVJvdzxUPltdKSB7XG4gICAgdGhpcy5fZGF0YSA9IGRhdGE7XG4gIH1cblxuICBnZXQgZGF0YSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YTtcbiAgfVxuXG4gIGRpY3Q6IElEaWN0aW9uYXJ5PElJZE5hbWU8YW55PltdPjtcbiAgbG9ja2VkOiBUYWJsZUNvbHVtbltdID0gW107XG4gIHVubG9ja2VkOiBUYWJsZUNvbHVtbltdID0gW107XG4gIHNlbGVjdFR5cGVFbnVtID0gU2VsZWN0VHlwZTtcbiAgYWdncmVnYXRpb25UeXBlID0gQWdncmVnYXRpb25UeXBlO1xuICBsb2NrZWRGbGV4OiBudW1iZXI7XG4gIGxvY2tlZFdpZHRoOiBudW1iZXI7XG4gIHRvdGFsRmxleDogbnVtYmVyO1xuICB0b3RhbFdpZHRoOiBudW1iZXI7XG5cbiAgcHJpdmF0ZSBfY29sdW1uczogVGFibGVDb2x1bW5bXSA9IFtdO1xuICBwcml2YXRlIF9hbGl2ZSA9IHRydWU7XG4gIHByaXZhdGUgX2RhdGE6IFRhYmxlUm93PFQ+W107XG4gIHByaXZhdGUgX2hpZGRlbkNvbHVtbnM6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgX29iczogUmVzaXplT2JzZXJ2ZXI7XG5cbiAgc2V0IGNvbHVtbnMoY29sdW1uczogVGFibGVDb2x1bW5bXSkge1xuICAgIHRoaXMuX2NvbHVtbnMgPSBjb2x1bW5zO1xuICAgIHRoaXMubG9ja2VkID0gdGhpcy5fY29sdW1ucz8uZmlsdGVyKF8gPT4gXy5sb2NrZWQgPT09IHRydWUpO1xuICAgIHRoaXMudW5sb2NrZWQgPSB0aGlzLl9jb2x1bW5zPy5maWx0ZXIoXyA9PiBfLmxvY2tlZCA9PT0gZmFsc2UpO1xuICAgIGNvbnN0IHN0YXJ0V2lkdGggPSB0aGlzLnNlbGVjdFR5cGUgPT09IFNlbGVjdFR5cGUuY2hlY2tCb3ggPyAyOCA6IDA7XG4gICAgdGhpcy5sb2NrZWRGbGV4ID0gdGhpcy5sb2NrZWQucmVkdWNlKFxuICAgICAgKHByZXY6IG51bWJlciwgY3VycjogVGFibGVDb2x1bW4pID0+IHByZXYgKyBjdXJyLmZsZXgsXG4gICAgICAwXG4gICAgKTtcbiAgICB0aGlzLmxvY2tlZFdpZHRoID0gdGhpcy5sb2NrZWQucmVkdWNlKFxuICAgICAgKHByZXY6IG51bWJlciwgY3VycjogVGFibGVDb2x1bW4pID0+IHByZXYgKyBjdXJyLndpZHRoLFxuICAgICAgc3RhcnRXaWR0aFxuICAgICk7XG4gICAgdGhpcy50b3RhbEZsZXggPSB0aGlzLl9jb2x1bW5zLnJlZHVjZShcbiAgICAgIChwcmV2OiBudW1iZXIsIGN1cnI6IFRhYmxlQ29sdW1uKSA9PiBwcmV2ICsgY3Vyci5mbGV4LFxuICAgICAgMFxuICAgICk7XG4gICAgdGhpcy50b3RhbFdpZHRoID0gdGhpcy5fY29sdW1ucy5yZWR1Y2UoXG4gICAgICAocHJldjogbnVtYmVyLCBjdXJyOiBUYWJsZUNvbHVtbikgPT4gcHJldiArIGN1cnIud2lkdGgsXG4gICAgICBzdGFydFdpZHRoXG4gICAgKTtcbiAgfVxuXG4gIGdldCBjb2x1bW5zKCk6IFRhYmxlQ29sdW1uW10ge1xuICAgIHJldHVybiB0aGlzLl9jb2x1bW5zO1xuICB9XG5cbiAgbG9jYWxlOiBPYnNlcnZhYmxlPFRldGFMb2NhbGlzYXRpb24+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX3N2YzogVGFibGVTZXJ2aWNlPFQ+LFxuICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBfY29uZmlnOiBUZXRhQ29uZmlnU2VydmljZSxcbiAgICBwcml2YXRlIF9jZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICkge31cblxuICBzZXRBY3RpdmVSb3cocm93OiBULCBldmVudDogTW91c2VFdmVudCkge1xuICAgIGlmICghZXZlbnQuc2hpZnRLZXkgJiYgIWV2ZW50LmN0cmxLZXkpIHtcbiAgICAgIHRoaXMuX3N2Yy5zZXRBY3RpdmVSb3cocm93KTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmxvY2FsZSA9IHRoaXMuX2NvbmZpZy5sb2NhbGU7XG4gICAgY29tYmluZUxhdGVzdChbdGhpcy5fc3ZjLmNvbHVtbnMsIHRoaXMuX3N2Yy5oaWRkZW5Db2x1bW5zXSlcbiAgICAgIC5waXBlKHRha2VXaGlsZShfID0+IHRoaXMuX2FsaXZlKSlcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlczogW1RhYmxlQ29sdW1uW10sIHN0cmluZ1tdXSkgPT4ge1xuICAgICAgICBjb25zdCBbY29sdW1ucywgaGlkZGVuQ29sdW1uc10gPSB2YWx1ZXM7XG4gICAgICAgIHRoaXMuX2hpZGRlbkNvbHVtbnMgPSBoaWRkZW5Db2x1bW5zO1xuICAgICAgICB0aGlzLmNvbHVtbnMgPSBBcnJheVV0aWwuZmxhdHRlbihjb2x1bW5zLCAnY29sdW1ucycsIHRydWUpLmZpbHRlcihcbiAgICAgICAgICBfID0+IHRoaXMuX2hpZGRlbkNvbHVtbnMuaW5kZXhPZihfLm5hbWUpIDwgMFxuICAgICAgICApO1xuICAgICAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuX3N2Yy5kaXNwbGF5RGF0YS5waXBlKHRha2VXaGlsZShfID0+IHRoaXMuX2FsaXZlKSkuc3Vic2NyaWJlKF8gPT4ge1xuICAgICAgdGhpcy5kYXRhID0gXztcbiAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIHRoaXMudmlld3BvcnQ/LmNoZWNrVmlld3BvcnRTaXplKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9zdmMuZGljdC5waXBlKHRha2VXaGlsZShfID0+IHRoaXMuX2FsaXZlKSkuc3Vic2NyaWJlKF8gPT4ge1xuICAgICAgdGhpcy5kaWN0ID0gXztcbiAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcblxuICAgIHRoaXMuX3N2Yy5zY3JvbGxJbmRleFxuICAgICAgLnBpcGUodGFrZVdoaWxlKCgpID0+IHRoaXMuX2FsaXZlKSlcbiAgICAgIC5zdWJzY3JpYmUoYXN5bmMgaW5kZXggPT4ge1xuICAgICAgICBpZiAodGhpcy52aWV3cG9ydCkge1xuICAgICAgICAgIHRoaXMudmlld3BvcnQuc2Nyb2xsVG9JbmRleChpbmRleCwgJ2F1dG8nKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCByb3cgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICAgICAgIGAudGFibGUtcm93W2RhdGEtcm93PVwiJHtpbmRleH1cIl1gXG4gICAgICAgICAgKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICByb3c/LnNjcm9sbEludG9WaWV3KCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLl9zdmMuYWN0aXZlUm93LnBpcGUodGFrZVdoaWxlKF8gPT4gdGhpcy5fYWxpdmUpKS5zdWJzY3JpYmUoYXN5bmMgXyA9PiB7XG4gICAgICB0aGlzLmFjdGl2ZVJvdyA9IF87XG4gICAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG4gICAgdGhpcy5hZGRSZXNpemVPYnNlcnZlcigpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fYWxpdmUgPSBmYWxzZTtcbiAgICB0aGlzLnJlbW92ZVJlc2l6ZU9ic2VydmVyKCk7XG4gIH1cblxuICBnZXRBZ2dyZWdhdGVWYWx1ZShjb2x1bW46IFRhYmxlQ29sdW1uKTogbnVtYmVyIHtcbiAgICBpZiAoY29sdW1uLmFnZ3JlZ2F0ZSA9PT0gQWdncmVnYXRpb25UeXBlLnN1bSkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0U3VtKGNvbHVtbi5uYW1lKTtcbiAgICB9XG4gICAgaWYgKGNvbHVtbi5hZ2dyZWdhdGUgPT09IEFnZ3JlZ2F0aW9uVHlwZS5hdmcpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFN1bShjb2x1bW4ubmFtZSkgLyB0aGlzLmRhdGEubGVuZ3RoO1xuICAgIH1cbiAgICBpZiAoY29sdW1uLmFnZ3JlZ2F0ZSA9PT0gQWdncmVnYXRpb25UeXBlLm1pbikge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0TWluKGNvbHVtbi5uYW1lKTtcbiAgICB9XG4gICAgaWYgKGNvbHVtbi5hZ2dyZWdhdGUgPT09IEFnZ3JlZ2F0aW9uVHlwZS5tYXgpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldE1heChjb2x1bW4ubmFtZSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0QWdncmVnYXRlVGV4dChjb2x1bW46IFRhYmxlQ29sdW1uKTogc3RyaW5nIHtcbiAgICBpZiAoY29sdW1uLmFnZ3JlZ2F0ZSA9PT0gQWdncmVnYXRpb25UeXBlLnN1bSkge1xuICAgICAgcmV0dXJuICdzdW0nO1xuICAgIH1cbiAgICBpZiAoY29sdW1uLmFnZ3JlZ2F0ZSA9PT0gQWdncmVnYXRpb25UeXBlLmF2Zykge1xuICAgICAgcmV0dXJuICdhdmcnO1xuICAgIH1cbiAgICBpZiAoY29sdW1uLmFnZ3JlZ2F0ZSA9PT0gQWdncmVnYXRpb25UeXBlLm1pbikge1xuICAgICAgcmV0dXJuICdtaW4nO1xuICAgIH1cbiAgICBpZiAoY29sdW1uLmFnZ3JlZ2F0ZSA9PT0gQWdncmVnYXRpb25UeXBlLm1heCkge1xuICAgICAgcmV0dXJuICdtYXgnO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBlbWl0U2Nyb2xsKGV2ZW50KSB7XG4gICAgdGhpcy5zY3JvbGxDaGFuZ2UuZW1pdChldmVudCk7XG4gIH1cblxuICB0cmFja1RhYmxlUm93ID0gKGluZGV4OiBudW1iZXIsIHJvdzogVGFibGVSb3c8VD4pOiBhbnkgPT4ge1xuICAgIHJldHVybiB0aGlzLnRyYWNrUm93ID8gdGhpcy50cmFja1JvdyhpbmRleCwgcm93LmRhdGEpIDogcm93LmRhdGFbJ2lkJ107XG4gIH07XG5cbiAgcHJpdmF0ZSBhZGRSZXNpemVPYnNlcnZlcigpIHtcbiAgICB0aGlzLl9vYnMgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoXyA9PiB7XG4gICAgICB0aGlzLnZpZXdwb3J0Py5jaGVja1ZpZXdwb3J0U2l6ZSgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fb2JzLm9ic2VydmUodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlUmVzaXplT2JzZXJ2ZXIoKSB7XG4gICAgdGhpcy5fb2JzLnVub2JzZXJ2ZSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgIHRoaXMuX29icy5kaXNjb25uZWN0KCk7XG4gIH1cblxuICBwcml2YXRlIGdldFN1bShjb2x1bW5OYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhPy5yZWR1Y2UoKGFjY3VtLCBjdXJyZW50KSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSBwYXJzZUZsb2F0KGN1cnJlbnQuZGF0YVtjb2x1bW5OYW1lXSk7XG4gICAgICByZXR1cm4gYWNjdW0gKyAoaXNOYU4odmFsKSA/IDAgOiB2YWwpO1xuICAgIH0sIDApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRNaW4oY29sdW1uTmFtZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhPy5yZWR1Y2UoXG4gICAgICAoYWNjdW0sIGN1cnJlbnQ6IFRhYmxlUm93PFQ+KSA9PlxuICAgICAgICBhY2N1bSAhPSBudWxsICYmIGFjY3VtIDw9IGN1cnJlbnQuZGF0YVtjb2x1bW5OYW1lXVxuICAgICAgICAgID8gYWNjdW1cbiAgICAgICAgICA6IGN1cnJlbnQuZGF0YVtjb2x1bW5OYW1lXSxcbiAgICAgIG51bGxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRNYXgoY29sdW1uTmFtZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhPy5yZWR1Y2UoXG4gICAgICAoYWNjdW0sIGN1cnJlbnQpID0+XG4gICAgICAgIGFjY3VtICE9IG51bGwgJiYgYWNjdW0gPj0gY3VycmVudC5kYXRhW2NvbHVtbk5hbWVdXG4gICAgICAgICAgPyBhY2N1bVxuICAgICAgICAgIDogY3VycmVudC5kYXRhW2NvbHVtbk5hbWVdLFxuICAgICAgbnVsbFxuICAgICk7XG4gIH1cbn1cbiIsIjx0ZXRhLXNjcm9sbGFibGUgY2xhc3M9XCJ0YWJsZS1ib2R5LWNvbnRhaW5lclwiXG4gICAgICAgICAgICAgICAgIHN0eWxlPVwicGFkZGluZy1ib3R0b206IDEycHhcIlxuICAgICAgICAgICAgICAgICBzaG93U2Nyb2xsYmFycz1cInRydWVcIlxuICAgICAgICAgICAgICAgICAqbmdJZj1cInZpcnR1YWwgJiYgZGF0YS5sZW5ndGggPiAwOyBlbHNlIG5vblZpcnR1YWxcIj5cbiAgPGNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydCB0ZXRhU2Nyb2xsYWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtYm9keS1jb250YWluZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzY3JvbGwpPVwiZW1pdFNjcm9sbCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXRlbVNpemVdPVwiMjhcIj5cbiAgICA8bmctY29udGFpbmVyICpjZGtWaXJ0dWFsRm9yPVwibGV0IHJvdyBvZiBkYXRhO3RlbXBsYXRlQ2FjaGVTaXplOiAwOyBsZXQgcm93SW5kZXggPSBpbmRleDsgdHJhY2tCeTogdHJhY2tUYWJsZVJvdztcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJib2R5VGVtcGxhdGU7IGNvbnRleHQ6IHtyb3c6IHJvdywgcm93SW5kZXg6IHJvd0luZGV4fVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cbjwvdGV0YS1zY3JvbGxhYmxlPlxuPG5nLXRlbXBsYXRlICNub25WaXJ0dWFsPlxuICA8dGV0YS1zY3JvbGxhYmxlIGNsYXNzPVwidGFibGUtYm9keS1jb250YWluZXJcIlxuICAgICAgICAgICAgICAgICAgIHN0eWxlPVwicGFkZGluZy1ib3R0b206IDEycHhcIlxuICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbj1cImNvbHVtblwiXG4gICAgICAgICAgICAgICAgICAgc2hvd1Njcm9sbGJhcnM9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAoc2Nyb2xsKT1cImVtaXRTY3JvbGwoJGV2ZW50KVwiPlxuICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1ib2R5LWNvbnRhaW5lclwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbiBjb2x1bW5fYXV0b1wiXG4gICAgICAgICAgIHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlOyB0b3A6MDsgYm90dG9tOjE2cHg7bGVmdDowO3JpZ2h0OjA7XCJcbiAgICAgICAgICAgKm5nSWY9XCIhZGF0YT8ubGVuZ3RoXCI+XG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcm93IG9mIGRhdGE7IGxldCByb3dJbmRleCA9IGluZGV4OyB0cmFja0J5OiB0cmFja1RhYmxlUm93O1wiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYm9keVRlbXBsYXRlOyBjb250ZXh0OiB7cm93OiByb3csIHJvd0luZGV4OiByb3dJbmRleH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFnZ3JlZ2F0ZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYWdnVGVtcGxhdGU7XCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlbXB0eVJvdztcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC90ZXRhLXNjcm9sbGFibGU+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2JvZHlUZW1wbGF0ZSBsZXQtcm93PVwicm93XCIgbGV0LXJvd0luZGV4PVwicm93SW5kZXhcIj5cbiAgPGRpdiBjbGFzcz1cInRhYmxlLXJvd1wiXG4gICAgICAgbmdGb3JtXG4gICAgICAgKGNsaWNrKT1cInNldEFjdGl2ZVJvdyhyb3cuZGF0YSwgJGV2ZW50KVwiXG4gICAgICAgW2F0dHIuZGF0YS1yb3ddPVwicm93SW5kZXhcIlxuICAgICAgIFtjbGFzcy50YWJsZS1yb3dfb2RkXT1cInJvd0luZGV4ICUgMiA9PT0gMVwiXG4gICAgICAgW25nQ2xhc3NdPVwicm93Q2xhc3MgPyByb3dDbGFzcyhyb3cuZGF0YSwgcm93SW5kZXgpIDogJydcIlxuICAgICAgIFtjbGFzcy50YWJsZS1yb3dfc2VsZWN0ZWRdPVwic2VsZWN0ZWRSb3dzICYmIHNlbGVjdGVkUm93cy5pbmRleE9mKHJvdy5kYXRhKSA+PSAwXCJcbiAgICAgICBbc3R5bGUuZmxleC1ncm93XT1cInRvdGFsRmxleFwiXG4gICAgICAgW3N0eWxlLmZsZXgtYmFzaXMucHhdPVwidG90YWxXaWR0aFwiXG4gICAgICAgW3N0eWxlLm1pbi13aWR0aC5weF09XCJ0b3RhbFdpZHRoXCI+XG4gICAgPGRpdiBjbGFzcz1cInRhYmxlLXJvd19sb2NrZWRcIlxuICAgICAgICAgKm5nSWY9XCJsb2NrZWQubGVuZ3RoID4gMFwiXG4gICAgICAgICBbc3R5bGUuZmxleC1ncm93XT1cImxvY2tlZEZsZXhcIlxuICAgICAgICAgW3N0eWxlLmZsZXgtYmFzaXMucHhdPVwibG9ja2VkV2lkdGhcIlxuICAgICAgICAgW3N0eWxlLm1pbi13aWR0aC5weF09XCJsb2NrZWRXaWR0aFwiXG4gICAgICAgICBbc3R5bGUuekluZGV4XT1cInJvdy5kYXRhID09PSBhY3RpdmVSb3cgPyAyIDogMVwiPlxuICAgICAgPHRldGEtc2VsZWN0aW9uLWNlbGwgKm5nSWY9XCJzZWxlY3RUeXBlID09PSBzZWxlY3RUeXBlRW51bS5jaGVja0JveCAmJiBsb2NrZWQubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyb3ddPVwicm93LmRhdGFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogMjhweDtcIj48L3RldGEtc2VsZWN0aW9uLWNlbGw+XG4gICAgICA8dGV0YS1jZWxsXG4gICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgbG9ja2VkOyBsZXQgY29sSW5kZXggPSBpbmRleDsgdHJhY2tCeTogdHJhY2tDb2x1bW5zO1wiXG4gICAgICAgIFthdHRyLmRhdGEtcm93XT1cInJvd0luZGV4XCJcbiAgICAgICAgW2F0dHIuZGF0YS1jb2x1bW5dPVwiY29sdW1uLm5hbWVcIlxuICAgICAgICBbY29sdW1uXT1cImNvbHVtblwiXG4gICAgICAgIFtmaWx0ZXJPcHRpb25zXT1cImRpY3Q/ZGljdFtjb2x1bW4ubmFtZV06W11cIlxuICAgICAgICBbZGljdF09XCJkaWN0XCJcbiAgICAgICAgW3Jvd109XCJyb3dcIlxuICAgICAgICBbbmdDbGFzc109XCJjb2x1bW4uY2VsbENsYXNzXCJcbiAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiMFwiXG4gICAgICAgIFtzdHlsZS5mbGV4LWdyb3ddPVwiY29sdW1uLmZsZXhcIlxuICAgICAgICBbc3R5bGUuZmxleC1iYXNpcy5weF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgPjwvdGV0YS1jZWxsPlxuICAgIDwvZGl2PlxuICAgIDx0ZXRhLXNlbGVjdGlvbi1jZWxsICpuZ0lmPVwic2VsZWN0VHlwZSA9PT0gc2VsZWN0VHlwZUVudW0uY2hlY2tCb3ggJiYgbG9ja2VkLmxlbmd0aCA8IDFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFtyb3ddPVwicm93LmRhdGFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDI4cHg7XCI+PC90ZXRhLXNlbGVjdGlvbi1jZWxsPlxuICAgIDx0ZXRhLWNlbGxcbiAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgdW5sb2NrZWQ7IGxldCBjb2xJbmRleCA9IGluZGV4OyB0cmFja0J5OiB0cmFja0NvbHVtbnM7XCJcbiAgICAgIFthdHRyLmRhdGEtcm93XT1cInJvd0luZGV4XCJcbiAgICAgIFthdHRyLmRhdGEtY29sdW1uXT1cImNvbHVtbi5uYW1lXCJcbiAgICAgIFtjb2x1bW5dPVwiY29sdW1uXCJcbiAgICAgIFtmaWx0ZXJPcHRpb25zXT1cImRpY3Q/ZGljdFtjb2x1bW4ubmFtZV06W11cIlxuICAgICAgW2RpY3RdPVwiZGljdFwiXG4gICAgICBbcm93XT1cInJvd1wiXG4gICAgICBbbmdDbGFzc109XCJjb2x1bW4uY2VsbENsYXNzXCJcbiAgICAgIFthdHRyLnRhYmluZGV4XT1cIjBcIlxuICAgICAgW3N0eWxlLmZsZXgtZ3Jvd109XCJjb2x1bW4uZmxleFwiXG4gICAgICBbc3R5bGUuZmxleC1iYXNpcy5weF09XCJjb2x1bW4ud2lkdGhcIlxuICAgID48L3RldGEtY2VsbD5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2FnZ1RlbXBsYXRlPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwibG9jYWxlIHwgYXN5bmMgYXMgbG9jXCI+XG4gICAgPGRpdiBjbGFzcz1cInRhYmxlLXJvd1wiXG4gICAgICAgICAqbmdJZj1cImFnZ3JlZ2F0ZVwiXG4gICAgICAgICBbY2xhc3MudGFibGUtcm93X3ZpcnR1YWxdPVwidmlydHVhbFwiXG4gICAgICAgICBbc3R5bGUuZmxleC1ncm93XT1cInRvdGFsRmxleFwiXG4gICAgICAgICBbc3R5bGUuZmxleC1iYXNpcy5weF09XCJ0b3RhbFdpZHRoXCJcbiAgICAgICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwidG90YWxXaWR0aFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJvd19sb2NrZWRcIlxuICAgICAgICAgICAqbmdJZj1cImxvY2tlZC5sZW5ndGggPiAwXCJcbiAgICAgICAgICAgW3N0eWxlLmZsZXgtZ3Jvd109XCJsb2NrZWRGbGV4XCJcbiAgICAgICAgICAgW3N0eWxlLmZsZXgtYmFzaXMucHhdPVwibG9ja2VkV2lkdGhcIlxuICAgICAgICAgICBbc3R5bGUubWluLXdpZHRoLnB4XT1cImxvY2tlZFdpZHRoXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjZWxsIGFsaWduLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcbiAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOiAyOHB4O1wiXG4gICAgICAgICAgICAgKm5nSWY9XCJzZWxlY3RUeXBlID09PSBzZWxlY3RUeXBlRW51bS5jaGVja0JveCAmJiBsb2NrZWQubGVuZ3RoIDwgMVwiPlxuICAgICAgICAgIDx0ZXRhLWljb24gW25hbWVdPVwiJ3N1bUNvbG9yJ1wiPjwvdGV0YS1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNlbGwgY2VsbC1jb21wb25lbnQgYWdncmVnYXRlLWNlbGxcIlxuICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgbG9ja2VkOyBsZXQgY29sSW5kZXggPSBpbmRleDsgdHJhY2tCeTogdHJhY2tDb2x1bW5zO1wiXG4gICAgICAgICAgICAgW2F0dHIuZGF0YS1jb2x1bW5dPVwiY29sdW1uLm5hbWVcIlxuICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImNvbHVtbi5jZWxsQ2xhc3NcIlxuICAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cIjBcIlxuICAgICAgICAgICAgIFtzdHlsZS5mbGV4LWdyb3ddPVwiY29sdW1uLmZsZXhcIlxuICAgICAgICAgICAgIFtzdHlsZS5mbGV4LWJhc2lzLnB4XT1cImNvbHVtbi53aWR0aFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNlbGwtdGV4dCBjZWxsLXRleHRfbnVtZXJpYyBmb250LXRpdGxlLTNcIlxuICAgICAgICAgICAgICAqbmdJZj1cImNvbHVtbi5hZ2dyZWdhdGUgIT09IGFnZ3JlZ2F0aW9uVHlwZS5ub25lXCI+XG4gICAgICAgICAge3tsb2NbZ2V0QWdncmVnYXRlVGV4dChjb2x1bW4pXX19OlxuICAgICAgICAgIHt7Z2V0QWdncmVnYXRlVmFsdWUoY29sdW1uKSB8IHRldGFOdW1iZXIgOiAyfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNlbGwgYWxpZ24tY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxuICAgICAgICAgICBzdHlsZT1cIndpZHRoOiAyOHB4O1wiXG4gICAgICAgICAgICpuZ0lmPVwic2VsZWN0VHlwZSA9PT0gc2VsZWN0VHlwZUVudW0uY2hlY2tCb3ggJiYgbG9ja2VkLmxlbmd0aCA8IDFcIj5cbiAgICAgICAgPHRldGEtaWNvbiBbbmFtZV09XCInc3VtQ29sb3InXCI+PC90ZXRhLWljb24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjZWxsIGNlbGwtY29tcG9uZW50IGFnZ3JlZ2F0ZS1jZWxsXCJcbiAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiB1bmxvY2tlZDsgbGV0IGNvbEluZGV4ID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQ29sdW1ucztcIlxuICAgICAgICAgICBbYXR0ci5kYXRhLWNvbHVtbl09XCJjb2x1bW4ubmFtZVwiXG4gICAgICAgICAgIFtuZ0NsYXNzXT1cImNvbHVtbi5jZWxsQ2xhc3NcIlxuICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCIwXCJcbiAgICAgICAgICAgW3N0eWxlLmZsZXgtZ3Jvd109XCJjb2x1bW4uZmxleFwiXG4gICAgICAgICAgIFtzdHlsZS5mbGV4LWJhc2lzLnB4XT1cImNvbHVtbi53aWR0aFwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJjZWxsLXRleHQgY2VsbC10ZXh0X251bWVyaWMgZm9udC10aXRsZS0zXCJcbiAgICAgICAgICAgICpuZ0lmPVwiY29sdW1uLmFnZ3JlZ2F0ZSAhPT0gYWdncmVnYXRpb25UeXBlLm5vbmVcIj5cbiAgICAgICAge3tsb2NbZ2V0QWdncmVnYXRlVGV4dChjb2x1bW4pXX19OlxuICAgICAgICB7e2dldEFnZ3JlZ2F0ZVZhbHVlKGNvbHVtbikgfCB0ZXRhTnVtYmVyIDogMn19XG4gICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNlbXB0eVJvdz5cbiAgPGRpdiBjbGFzcz1cImVtcHR5LXRhYmxlLXJvd1wiXG4gICAgICAgc3R5bGU9XCJoZWlnaHQ6IDAuMXB4XCJcbiAgICAgICBbc3R5bGUuZmxleC1ncm93XT1cInRvdGFsRmxleFwiXG4gICAgICAgW3N0eWxlLmZsZXgtYmFzaXMucHhdPVwidG90YWxXaWR0aFwiXG4gICAgICAgW3N0eWxlLm1pbi13aWR0aC5weF09XCJ0b3RhbFdpZHRoXCI+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
213
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYm9keS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L3RhYmxlL3RhYmxlLWJvZHkvdGFibGUtYm9keS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L3RhYmxlL3RhYmxlLWJvZHkvdGFibGUtYm9keS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUseUJBQXlCLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDOUcsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFHTCxNQUFNLEVBQ04sSUFBSSxFQUNKLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUkzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDNUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFLeEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMvRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHNCQUFzQixF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QzlCLElBQUksQ0FDTCxDQUFDO0lBQ0osQ0FBQzs4R0FsTlUsa0JBQWtCO2tHQUFsQixrQkFBa0IsbWVBVWxCLHdCQUF3QixnREN0RXJDLDBtTkE0S0EsMEREL0hRLG1CQUFtQiwwSUFDbkIsd0JBQXdCLGlKQUN4Qix5QkFBeUIsc0lBQ3pCLG1CQUFtQiw2REFDbkIsZUFBZSw2TEFDZixnQkFBZ0IsbUpBQ2hCLFdBQVcsK1dBQ1gsT0FBTyxvRkFDUCxzQkFBc0IsaUZBQ3RCLGFBQWEsMEdBQ2IsYUFBYSwrRkFDYixTQUFTLHlDQUNULFVBQVU7OzJGQUdMLGtCQUFrQjtrQkF0QjlCLFNBQVM7K0JBQ0ksaUJBQWlCLG1CQUdWLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO3dCQUNMLG1CQUFtQjt3QkFDbkIsd0JBQXdCO3dCQUN4Qix5QkFBeUI7d0JBQ3pCLG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZixnQkFBZ0I7d0JBQ2hCLFdBQVc7d0JBQ1gsT0FBTzt3QkFDUCxzQkFBc0I7d0JBQ3RCLGFBQWE7d0JBQ2IsYUFBYTt3QkFDYixTQUFTO3dCQUNULFVBQVU7cUJBQ2I7MEtBR00sT0FBTztzQkFBZixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVOLFFBQVE7c0JBRFAsU0FBUzt1QkFBQyx3QkFBd0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBR0osY0FBYztzQkFBL0QsV0FBVzt1QkFBQyxrQkFBa0I7Z0JBQ3JCLFlBQVk7c0JBQXJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQsIENka0ZpeGVkU2l6ZVZpcnR1YWxTY3JvbGwsIENka1ZpcnR1YWxGb3JPZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY3JvbGxpbmcnO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBUeXBlLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVdoaWxlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBJRGljdGlvbmFyeSB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9jb250cmFjdC9pLWRpY3Rpb25hcnknO1xuaW1wb3J0IHsgSUlkTmFtZSB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9jb250cmFjdC9pLWlkLW5hbWUnO1xuaW1wb3J0IHsgQXJyYXlVdGlsIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL3V0aWwvYXJyYXktdXRpbCc7XG5pbXBvcnQgeyBUZXRhQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2xvY2FsZS90ZXRhLWNvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IFRldGFMb2NhbGlzYXRpb24gfSBmcm9tICcuLi8uLi8uLi9sb2NhbGUvdGV0YS1sb2NhbGlzYXRpb24nO1xuaW1wb3J0IHsgRGV0YWlsQ29tcG9uZW50QmFzZSB9IGZyb20gJy4uL2Jhc2UvZGV0YWlsLWNvbXBvbmVudC1iYXNlJztcbmltcG9ydCB7IFRhYmxlQ29sdW1uIH0gZnJvbSAnLi4vY29udHJhY3QvdGFibGUtY29sdW1uJztcbmltcG9ydCB7IFRhYmxlUm93IH0gZnJvbSAnLi4vY29udHJhY3QvdGFibGUtcm93JztcbmltcG9ydCB7IEFnZ3JlZ2F0aW9uVHlwZSB9IGZyb20gJy4uL2VudW0vYWdncmVnYXRpb24tdHlwZS5lbnVtJztcbmltcG9ydCB7IFNlbGVjdFR5cGUgfSBmcm9tICcuLi9lbnVtL3NlbGVjdC10eXBlLmVudW0nO1xuaW1wb3J0IHsgVGFibGVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZS90YWJsZS5zZXJ2aWNlJztcbmltcG9ydCB7IE51bWJlclBpcGUgfSBmcm9tICcuLi8uLi8uLi9waXBlL251bWJlci1waXBlL251bWJlci5waXBlJztcbmltcG9ydCB7IEljb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9pY29uL2ljb24vaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2VsbENvbXBvbmVudCB9IGZyb20gJy4uL2NlbGwvY2VsbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2VsZWN0aW9uQ2VsbENvbXBvbmVudCB9IGZyb20gJy4uL3NlbGVjdGlvbi1jZWxsL3NlbGVjdGlvbi1jZWxsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQsIE5nQ2xhc3MsIEFzeW5jUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBTY3JvbGxhYmxlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL3Njcm9sbGFibGUvc2Nyb2xsYWJsZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgU2Nyb2xsYWJsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9zY3JvbGxhYmxlL3Njcm9sbGFibGUvc2Nyb2xsYWJsZS5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RldGEtdGFibGUtYm9keScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLWJvZHkuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3RhYmxlLWJvZHkuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgU2Nyb2xsYWJsZUNvbXBvbmVudCxcbiAgICAgICAgQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0LFxuICAgICAgICBDZGtGaXhlZFNpemVWaXJ0dWFsU2Nyb2xsLFxuICAgICAgICBTY3JvbGxhYmxlRGlyZWN0aXZlLFxuICAgICAgICBDZGtWaXJ0dWFsRm9yT2YsXG4gICAgICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBOZ0NsYXNzLFxuICAgICAgICBTZWxlY3Rpb25DZWxsQ29tcG9uZW50LFxuICAgICAgICBDZWxsQ29tcG9uZW50LFxuICAgICAgICBJY29uQ29tcG9uZW50LFxuICAgICAgICBBc3luY1BpcGUsXG4gICAgICAgIE51bWJlclBpcGUsXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVCb2R5Q29tcG9uZW50PFQ+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSB2aXJ0dWFsOiBib29sZWFuO1xuICBASW5wdXQoKSBhY3RpdmVSb3c6IFQ7XG4gIEBJbnB1dCgpIHNlbGVjdGVkUm93czogVFtdID0gW107XG4gIEBJbnB1dCgpIGFkZGl0aW9uYWxDb21wb25lbnQ6IFR5cGU8RGV0YWlsQ29tcG9uZW50QmFzZTxUPj47XG4gIEBJbnB1dCgpIGFnZ3JlZ2F0ZTogYm9vbGVhbjtcbiAgQElucHV0KCkgc2VsZWN0VHlwZTogU2VsZWN0VHlwZTtcbiAgQElucHV0KCkgcm93Q2xhc3M6IChyb3c6IFQsIGluZGV4PzogbnVtYmVyKSA9PiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRyYWNrUm93OiAoaW5kZXg6IG51bWJlciwgcm93OiBUKSA9PiBhbnk7XG4gIEBJbnB1dCgpIHRyYWNrQ29sdW1uczogKGluZGV4OiBudW1iZXIsIGNvbHVtbjogVGFibGVDb2x1bW4pID0+IGFueTtcbiAgQFZpZXdDaGlsZChDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQsIHsgc3RhdGljOiBmYWxzZSB9KVxuICB2aWV3cG9ydDogQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0O1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MudGFibGUtYm9keScpIHByaXZhdGUgcmVhZG9ubHkgdGFibGVCb2R5Q2xhc3MgPSB0cnVlO1xuICBAT3V0cHV0KCkgc2Nyb2xsQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcblxuICBzZXQgZGF0YShkYXRhOiBUYWJsZVJvdzxUPltdKSB7XG4gICAgdGhpcy5fZGF0YSA9IGRhdGE7XG4gIH1cblxuICBnZXQgZGF0YSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YTtcbiAgfVxuXG4gIGRpY3Q6IElEaWN0aW9uYXJ5PElJZE5hbWU8YW55PltdPjtcbiAgbG9ja2VkOiBUYWJsZUNvbHVtbltdID0gW107XG4gIHVubG9ja2VkOiBUYWJsZUNvbHVtbltdID0gW107XG4gIHNlbGVjdFR5cGVFbnVtID0gU2VsZWN0VHlwZTtcbiAgYWdncmVnYXRpb25UeXBlID0gQWdncmVnYXRpb25UeXBlO1xuICBsb2NrZWRGbGV4OiBudW1iZXI7XG4gIGxvY2tlZFdpZHRoOiBudW1iZXI7XG4gIHRvdGFsRmxleDogbnVtYmVyO1xuICB0b3RhbFdpZHRoOiBudW1iZXI7XG5cbiAgcHJpdmF0ZSBfY29sdW1uczogVGFibGVDb2x1bW5bXSA9IFtdO1xuICBwcml2YXRlIF9hbGl2ZSA9IHRydWU7XG4gIHByaXZhdGUgX2RhdGE6IFRhYmxlUm93PFQ+W107XG4gIHByaXZhdGUgX2hpZGRlbkNvbHVtbnM6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgX29iczogUmVzaXplT2JzZXJ2ZXI7XG5cbiAgc2V0IGNvbHVtbnMoY29sdW1uczogVGFibGVDb2x1bW5bXSkge1xuICAgIHRoaXMuX2NvbHVtbnMgPSBjb2x1bW5zO1xuICAgIHRoaXMubG9ja2VkID0gdGhpcy5fY29sdW1ucz8uZmlsdGVyKF8gPT4gXy5sb2NrZWQgPT09IHRydWUpO1xuICAgIHRoaXMudW5sb2NrZWQgPSB0aGlzLl9jb2x1bW5zPy5maWx0ZXIoXyA9PiBfLmxvY2tlZCA9PT0gZmFsc2UpO1xuICAgIGNvbnN0IHN0YXJ0V2lkdGggPSB0aGlzLnNlbGVjdFR5cGUgPT09IFNlbGVjdFR5cGUuY2hlY2tCb3ggPyAyOCA6IDA7XG4gICAgdGhpcy5sb2NrZWRGbGV4ID0gdGhpcy5sb2NrZWQucmVkdWNlKFxuICAgICAgKHByZXY6IG51bWJlciwgY3VycjogVGFibGVDb2x1bW4pID0+IHByZXYgKyBjdXJyLmZsZXgsXG4gICAgICAwXG4gICAgKTtcbiAgICB0aGlzLmxvY2tlZFdpZHRoID0gdGhpcy5sb2NrZWQucmVkdWNlKFxuICAgICAgKHByZXY6IG51bWJlciwgY3VycjogVGFibGVDb2x1bW4pID0+IHByZXYgKyBjdXJyLndpZHRoLFxuICAgICAgc3RhcnRXaWR0aFxuICAgICk7XG4gICAgdGhpcy50b3RhbEZsZXggPSB0aGlzLl9jb2x1bW5zLnJlZHVjZShcbiAgICAgIChwcmV2OiBudW1iZXIsIGN1cnI6IFRhYmxlQ29sdW1uKSA9PiBwcmV2ICsgY3Vyci5mbGV4LFxuICAgICAgMFxuICAgICk7XG4gICAgdGhpcy50b3RhbFdpZHRoID0gdGhpcy5fY29sdW1ucy5yZWR1Y2UoXG4gICAgICAocHJldjogbnVtYmVyLCBjdXJyOiBUYWJsZUNvbHVtbikgPT4gcHJldiArIGN1cnIud2lkdGgsXG4gICAgICBzdGFydFdpZHRoXG4gICAgKTtcbiAgfVxuXG4gIGdldCBjb2x1bW5zKCk6IFRhYmxlQ29sdW1uW10ge1xuICAgIHJldHVybiB0aGlzLl9jb2x1bW5zO1xuICB9XG5cbiAgbG9jYWxlOiBPYnNlcnZhYmxlPFRldGFMb2NhbGlzYXRpb24+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX3N2YzogVGFibGVTZXJ2aWNlPFQ+LFxuICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBfY29uZmlnOiBUZXRhQ29uZmlnU2VydmljZSxcbiAgICBwcml2YXRlIF9jZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICkge31cblxuICBzZXRBY3RpdmVSb3cocm93OiBULCBldmVudDogTW91c2VFdmVudCkge1xuICAgIGlmICghZXZlbnQuc2hpZnRLZXkgJiYgIWV2ZW50LmN0cmxLZXkpIHtcbiAgICAgIHRoaXMuX3N2Yy5zZXRBY3RpdmVSb3cocm93KTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmxvY2FsZSA9IHRoaXMuX2NvbmZpZy5sb2NhbGU7XG4gICAgY29tYmluZUxhdGVzdChbdGhpcy5fc3ZjLmNvbHVtbnMsIHRoaXMuX3N2Yy5oaWRkZW5Db2x1bW5zXSlcbiAgICAgIC5waXBlKHRha2VXaGlsZShfID0+IHRoaXMuX2FsaXZlKSlcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlczogW1RhYmxlQ29sdW1uW10sIHN0cmluZ1tdXSkgPT4ge1xuICAgICAgICBjb25zdCBbY29sdW1ucywgaGlkZGVuQ29sdW1uc10gPSB2YWx1ZXM7XG4gICAgICAgIHRoaXMuX2hpZGRlbkNvbHVtbnMgPSBoaWRkZW5Db2x1bW5zO1xuICAgICAgICB0aGlzLmNvbHVtbnMgPSBBcnJheVV0aWwuZmxhdHRlbihjb2x1bW5zLCAnY29sdW1ucycsIHRydWUpLmZpbHRlcihcbiAgICAgICAgICBfID0+IHRoaXMuX2hpZGRlbkNvbHVtbnMuaW5kZXhPZihfLm5hbWUpIDwgMFxuICAgICAgICApO1xuICAgICAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuX3N2Yy5kaXNwbGF5RGF0YS5waXBlKHRha2VXaGlsZShfID0+IHRoaXMuX2FsaXZlKSkuc3Vic2NyaWJlKF8gPT4ge1xuICAgICAgdGhpcy5kYXRhID0gXztcbiAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIHRoaXMudmlld3BvcnQ/LmNoZWNrVmlld3BvcnRTaXplKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9zdmMuZGljdC5waXBlKHRha2VXaGlsZShfID0+IHRoaXMuX2FsaXZlKSkuc3Vic2NyaWJlKF8gPT4ge1xuICAgICAgdGhpcy5kaWN0ID0gXztcbiAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcblxuICAgIHRoaXMuX3N2Yy5zY3JvbGxJbmRleFxuICAgICAgLnBpcGUodGFrZVdoaWxlKCgpID0+IHRoaXMuX2FsaXZlKSlcbiAgICAgIC5zdWJzY3JpYmUoYXN5bmMgaW5kZXggPT4ge1xuICAgICAgICBpZiAodGhpcy52aWV3cG9ydCkge1xuICAgICAgICAgIHRoaXMudmlld3BvcnQuc2Nyb2xsVG9JbmRleChpbmRleCwgJ2F1dG8nKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCByb3cgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICAgICAgIGAudGFibGUtcm93W2RhdGEtcm93PVwiJHtpbmRleH1cIl1gXG4gICAgICAgICAgKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICByb3c/LnNjcm9sbEludG9WaWV3KCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLl9zdmMuYWN0aXZlUm93LnBpcGUodGFrZVdoaWxlKF8gPT4gdGhpcy5fYWxpdmUpKS5zdWJzY3JpYmUoYXN5bmMgXyA9PiB7XG4gICAgICB0aGlzLmFjdGl2ZVJvdyA9IF87XG4gICAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG4gICAgdGhpcy5hZGRSZXNpemVPYnNlcnZlcigpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fYWxpdmUgPSBmYWxzZTtcbiAgICB0aGlzLnJlbW92ZVJlc2l6ZU9ic2VydmVyKCk7XG4gIH1cblxuICBnZXRBZ2dyZWdhdGVWYWx1ZShjb2x1bW46IFRhYmxlQ29sdW1uKSA6bnVtYmVyIHtcbiAgICBpZiAoY29sdW1uLmFnZ3JlZ2F0ZSA9PT0gQWdncmVnYXRpb25UeXBlLnN1bSkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0U3VtKGNvbHVtbi5uYW1lKTtcbiAgICB9XG4gICAgaWYgKGNvbHVtbi5hZ2dyZWdhdGUgPT09IEFnZ3JlZ2F0aW9uVHlwZS5hdmcpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFN1bShjb2x1bW4ubmFtZSkgLyB0aGlzLmRhdGEubGVuZ3RoO1xuICAgIH1cbiAgICBpZiAoY29sdW1uLmFnZ3JlZ2F0ZSA9PT0gQWdncmVnYXRpb25UeXBlLm1pbikge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0TWluKGNvbHVtbi5uYW1lKTtcbiAgICB9XG4gICAgaWYgKGNvbHVtbi5hZ2dyZWdhdGUgPT09IEFnZ3JlZ2F0aW9uVHlwZS5tYXgpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldE1heChjb2x1bW4ubmFtZSk7XG4gICAgfVxuICAgIHJldHVybiBudWxsICA7XG4gIH1cblxuICBnZXRBZ2dyZWdhdGVUZXh0KGNvbHVtbjogVGFibGVDb2x1bW4pOiBzdHJpbmcge1xuICAgIGlmIChjb2x1bW4uYWdncmVnYXRlID09PSBBZ2dyZWdhdGlvblR5cGUuc3VtKSB7XG4gICAgICByZXR1cm4gJ3N1bSc7XG4gICAgfVxuICAgIGlmIChjb2x1bW4uYWdncmVnYXRlID09PSBBZ2dyZWdhdGlvblR5cGUuYXZnKSB7XG4gICAgICByZXR1cm4gJ2F2Zyc7XG4gICAgfVxuICAgIGlmIChjb2x1bW4uYWdncmVnYXRlID09PSBBZ2dyZWdhdGlvblR5cGUubWluKSB7XG4gICAgICByZXR1cm4gJ21pbic7XG4gICAgfVxuICAgIGlmIChjb2x1bW4uYWdncmVnYXRlID09PSBBZ2dyZWdhdGlvblR5cGUubWF4KSB7XG4gICAgICByZXR1cm4gJ21heCc7XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIGVtaXRTY3JvbGwoZXZlbnQpIHtcbiAgICB0aGlzLnNjcm9sbENoYW5nZS5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIHRyYWNrVGFibGVSb3cgPSAoaW5kZXg6IG51bWJlciwgcm93OiBUYWJsZVJvdzxUPik6IGFueSA9PiB7XG4gICAgcmV0dXJuIHRoaXMudHJhY2tSb3cgPyB0aGlzLnRyYWNrUm93KGluZGV4LCByb3cuZGF0YSkgOiByb3cuZGF0YVsnaWQnXTtcbiAgfTtcblxuICBwcml2YXRlIGFkZFJlc2l6ZU9ic2VydmVyKCkge1xuICAgIHRoaXMuX29icyA9IG5ldyBSZXNpemVPYnNlcnZlcihfID0+IHtcbiAgICAgIHRoaXMudmlld3BvcnQ/LmNoZWNrVmlld3BvcnRTaXplKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9vYnMub2JzZXJ2ZSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVSZXNpemVPYnNlcnZlcigpIHtcbiAgICB0aGlzLl9vYnMudW5vYnNlcnZlKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgdGhpcy5fb2JzLmRpc2Nvbm5lY3QoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U3VtKGNvbHVtbk5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmRhdGE/LnJlZHVjZSgoYWNjdW0sIGN1cnJlbnQpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9IHBhcnNlRmxvYXQoY3VycmVudC5kYXRhW2NvbHVtbk5hbWVdKTtcbiAgICAgIHJldHVybiBhY2N1bSArIChpc05hTih2YWwpID8gMCA6IHZhbCk7XG4gICAgfSwgMCk7XG4gIH1cblxuICBwcml2YXRlIGdldE1pbihjb2x1bW5OYW1lOiBzdHJpbmcpOm51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLmRhdGEgYXMgYW55KT8ucmVkdWNlKFxuICAgICAgKGFjY3VtLCBjdXJyZW50OiBUYWJsZVJvdzxUPikgPT5cbiAgICAgICAgYWNjdW0gIT0gbnVsbCAmJiBhY2N1bSA8PSBjdXJyZW50LmRhdGFbY29sdW1uTmFtZV1cbiAgICAgICAgICA/IGFjY3VtXG4gICAgICAgICAgOiBjdXJyZW50LmRhdGFbY29sdW1uTmFtZV0sXG4gICAgICBudWxsXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TWF4KGNvbHVtbk5hbWU6IHN0cmluZyk6bnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMuZGF0YSBhcyBhbnkpPy5yZWR1Y2UoXG4gICAgICAoYWNjdW0sIGN1cnJlbnQpID0+XG4gICAgICAgIGFjY3VtICE9IG51bGwgJiYgYWNjdW0gPj0gY3VycmVudC5kYXRhW2NvbHVtbk5hbWVdXG4gICAgICAgICAgPyBhY2N1bVxuICAgICAgICAgIDogY3VycmVudC5kYXRhW2NvbHVtbk5hbWVdLFxuICAgICAgbnVsbFxuICAgICk7XG4gIH1cbn1cbiIsIkBpZiAodmlydHVhbCAmJiBkYXRhLmxlbmd0aCA+IDApIHtcbiAgPHRldGEtc2Nyb2xsYWJsZSBjbGFzcz1cInRhYmxlLWJvZHktY29udGFpbmVyXCJcbiAgICBzdHlsZT1cInBhZGRpbmctYm90dG9tOiAxMnB4XCJcbiAgICBbc2hvd1Njcm9sbGJhcnNdPVwidHJ1ZVwiXG4gICAgPlxuICAgIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQgdGV0YVNjcm9sbGFibGVcbiAgICAgIGNsYXNzPVwidGFibGUtYm9keS1jb250YWluZXJcIlxuICAgICAgKHNjcm9sbCk9XCJlbWl0U2Nyb2xsKCRldmVudClcIlxuICAgICAgW2l0ZW1TaXplXT1cIjI4XCI+XG4gICAgICA8bmctY29udGFpbmVyICpjZGtWaXJ0dWFsRm9yPVwibGV0IHJvdyBvZiBkYXRhO3RlbXBsYXRlQ2FjaGVTaXplOiAwOyBsZXQgcm93SW5kZXggPSBpbmRleDsgdHJhY2tCeTogdHJhY2tUYWJsZVJvdztcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJvZHlUZW1wbGF0ZTsgY29udGV4dDoge3Jvdzogcm93LCByb3dJbmRleDogcm93SW5kZXh9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cbiAgPC90ZXRhLXNjcm9sbGFibGU+XG59IEBlbHNlIHtcbiAgPHRldGEtc2Nyb2xsYWJsZSBjbGFzcz1cInRhYmxlLWJvZHktY29udGFpbmVyXCJcbiAgICBzdHlsZT1cInBhZGRpbmctYm90dG9tOiAxMnB4XCJcbiAgICBkaXJlY3Rpb249XCJjb2x1bW5cIlxuICAgIFtzaG93U2Nyb2xsYmFyc109XCJ0cnVlXCJcbiAgICAoc2Nyb2xsKT1cImVtaXRTY3JvbGwoJGV2ZW50KVwiPlxuICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1ib2R5LWNvbnRhaW5lclwiPlxuICAgICAgQGlmICghZGF0YT8ubGVuZ3RoKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4gY29sdW1uX2F1dG9cIlxuICAgICAgICAgIHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlOyB0b3A6MDsgYm90dG9tOjE2cHg7bGVmdDowO3JpZ2h0OjA7XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICAgIEBmb3IgKHJvdyBvZiBkYXRhOyB0cmFjayB0cmFja1RhYmxlUm93KHJvd0luZGV4LCByb3cpOyBsZXQgcm93SW5kZXggPSAkaW5kZXgpIHtcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJvZHlUZW1wbGF0ZTsgY29udGV4dDoge3Jvdzogcm93LCByb3dJbmRleDogcm93SW5kZXh9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICB9XG4gICAgICBAaWYgKGFnZ3JlZ2F0ZSkge1xuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYWdnVGVtcGxhdGU7XCI+PC9uZy1jb250YWluZXI+XG4gICAgICB9XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZW1wdHlSb3c7XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvdGV0YS1zY3JvbGxhYmxlPlxufVxuXG48bmctdGVtcGxhdGUgI2JvZHlUZW1wbGF0ZSBsZXQtcm93PVwicm93XCIgbGV0LXJvd0luZGV4PVwicm93SW5kZXhcIj5cbiAgPGRpdiBjbGFzcz1cInRhYmxlLXJvd1wiXG4gICAgbmdGb3JtXG4gICAgKGNsaWNrKT1cInNldEFjdGl2ZVJvdyhyb3cuZGF0YSwgJGV2ZW50KVwiXG4gICAgW2F0dHIuZGF0YS1yb3ddPVwicm93SW5kZXhcIlxuICAgIFtjbGFzcy50YWJsZS1yb3dfb2RkXT1cInJvd0luZGV4ICUgMiA9PT0gMVwiXG4gICAgW25nQ2xhc3NdPVwicm93Q2xhc3MgPyByb3dDbGFzcyhyb3cuZGF0YSwgcm93SW5kZXgpIDogJydcIlxuICAgIFtjbGFzcy50YWJsZS1yb3dfc2VsZWN0ZWRdPVwic2VsZWN0ZWRSb3dzICYmIHNlbGVjdGVkUm93cy5pbmRleE9mKHJvdy5kYXRhKSA+PSAwXCJcbiAgICBbc3R5bGUuZmxleC1ncm93XT1cInRvdGFsRmxleFwiXG4gICAgW3N0eWxlLmZsZXgtYmFzaXMucHhdPVwidG90YWxXaWR0aFwiXG4gICAgW3N0eWxlLm1pbi13aWR0aC5weF09XCJ0b3RhbFdpZHRoXCI+XG4gICAgQGlmIChsb2NrZWQubGVuZ3RoID4gMCkge1xuICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJvd19sb2NrZWRcIlxuICAgICAgICBbc3R5bGUuZmxleC1ncm93XT1cImxvY2tlZEZsZXhcIlxuICAgICAgICBbc3R5bGUuZmxleC1iYXNpcy5weF09XCJsb2NrZWRXaWR0aFwiXG4gICAgICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwibG9ja2VkV2lkdGhcIlxuICAgICAgICBbc3R5bGUuekluZGV4XT1cInJvdy5kYXRhID09PSBhY3RpdmVSb3cgPyAyIDogMVwiPlxuICAgICAgICBAaWYgKHNlbGVjdFR5cGUgPT09IHNlbGVjdFR5cGVFbnVtLmNoZWNrQm94ICYmIGxvY2tlZC5sZW5ndGgpIHtcbiAgICAgICAgICA8dGV0YS1zZWxlY3Rpb24tY2VsbFxuICAgICAgICAgICAgW3Jvd109XCJyb3cuZGF0YVwiXG4gICAgICAgICAgc3R5bGU9XCJ3aWR0aDogMjhweDtcIj48L3RldGEtc2VsZWN0aW9uLWNlbGw+XG4gICAgICAgIH1cbiAgICAgICAgQGZvciAoY29sdW1uIG9mIGxvY2tlZDsgdHJhY2sgdHJhY2tDb2x1bW5zKGNvbEluZGV4LCBjb2x1bW4pOyBsZXQgY29sSW5kZXggPSAkaW5kZXgpIHtcbiAgICAgICAgICA8dGV0YS1jZWxsXG4gICAgICAgICAgICBbYXR0ci5kYXRhLXJvd109XCJyb3dJbmRleFwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLWNvbHVtbl09XCJjb2x1bW4ubmFtZVwiXG4gICAgICAgICAgICBbY29sdW1uXT1cImNvbHVtblwiXG4gICAgICAgICAgICBbZmlsdGVyT3B0aW9uc109XCJkaWN0P2RpY3RbY29sdW1uLm5hbWVdOltdXCJcbiAgICAgICAgICAgIFtkaWN0XT1cImRpY3RcIlxuICAgICAgICAgICAgW3Jvd109XCJyb3dcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwiY29sdW1uLmNlbGxDbGFzc1wiXG4gICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCIwXCJcbiAgICAgICAgICAgIFtzdHlsZS5mbGV4LWdyb3ddPVwiY29sdW1uLmZsZXhcIlxuICAgICAgICAgICAgW3N0eWxlLmZsZXgtYmFzaXMucHhdPVwiY29sdW1uLndpZHRoXCJcbiAgICAgICAgICA+PC90ZXRhLWNlbGw+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgICBAaWYgKHNlbGVjdFR5cGUgPT09IHNlbGVjdFR5cGVFbnVtLmNoZWNrQm94ICYmIGxvY2tlZC5sZW5ndGggPCAxKSB7XG4gICAgICA8dGV0YS1zZWxlY3Rpb24tY2VsbFxuICAgICAgICBbcm93XT1cInJvdy5kYXRhXCJcbiAgICAgIHN0eWxlPVwid2lkdGg6IDI4cHg7XCI+PC90ZXRhLXNlbGVjdGlvbi1jZWxsPlxuICAgIH1cbiAgICBAZm9yIChjb2x1bW4gb2YgdW5sb2NrZWQ7IHRyYWNrIHRyYWNrQ29sdW1ucyhjb2xJbmRleCwgY29sdW1uKTsgbGV0IGNvbEluZGV4ID0gJGluZGV4KSB7XG4gICAgICA8dGV0YS1jZWxsXG4gICAgICAgIFthdHRyLmRhdGEtcm93XT1cInJvd0luZGV4XCJcbiAgICAgICAgW2F0dHIuZGF0YS1jb2x1bW5dPVwiY29sdW1uLm5hbWVcIlxuICAgICAgICBbY29sdW1uXT1cImNvbHVtblwiXG4gICAgICAgIFtmaWx0ZXJPcHRpb25zXT1cImRpY3Q/ZGljdFtjb2x1bW4ubmFtZV06W11cIlxuICAgICAgICBbZGljdF09XCJkaWN0XCJcbiAgICAgICAgW3Jvd109XCJyb3dcIlxuICAgICAgICBbbmdDbGFzc109XCJjb2x1bW4uY2VsbENsYXNzXCJcbiAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiMFwiXG4gICAgICAgIFtzdHlsZS5mbGV4LWdyb3ddPVwiY29sdW1uLmZsZXhcIlxuICAgICAgICBbc3R5bGUuZmxleC1iYXNpcy5weF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgPjwvdGV0YS1jZWxsPlxuICAgIH1cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2FnZ1RlbXBsYXRlPlxuICBAaWYgKGxvY2FsZSB8IGFzeW5jOyBhcyBsb2MpIHtcbiAgICBAaWYgKGFnZ3JlZ2F0ZSkge1xuICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJvd1wiXG4gICAgICAgIFtjbGFzcy50YWJsZS1yb3dfdmlydHVhbF09XCJ2aXJ0dWFsXCJcbiAgICAgICAgW3N0eWxlLmZsZXgtZ3Jvd109XCJ0b3RhbEZsZXhcIlxuICAgICAgICBbc3R5bGUuZmxleC1iYXNpcy5weF09XCJ0b3RhbFdpZHRoXCJcbiAgICAgICAgW3N0eWxlLm1pbi13aWR0aC5weF09XCJ0b3RhbFdpZHRoXCI+XG4gICAgICAgIEBpZiAobG9ja2VkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcm93X2xvY2tlZFwiXG4gICAgICAgICAgICBbc3R5bGUuZmxleC1ncm93XT1cImxvY2tlZEZsZXhcIlxuICAgICAgICAgICAgW3N0eWxlLmZsZXgtYmFzaXMucHhdPVwibG9ja2VkV2lkdGhcIlxuICAgICAgICAgICAgW3N0eWxlLm1pbi13aWR0aC5weF09XCJsb2NrZWRXaWR0aFwiPlxuICAgICAgICAgICAgQGlmIChzZWxlY3RUeXBlID09PSBzZWxlY3RUeXBlRW51bS5jaGVja0JveCAmJiBsb2NrZWQubGVuZ3RoIDwgMSkge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2VsbCBhbGlnbi1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogMjhweDtcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8dGV0YS1pY29uIFtuYW1lXT1cIidzdW1Db2xvcidcIj48L3RldGEtaWNvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAZm9yIChjb2x1bW4gb2YgbG9ja2VkOyB0cmFjayB0cmFja0NvbHVtbnMoY29sSW5kZXgsIGNvbHVtbik7IGxldCBjb2xJbmRleCA9ICRpbmRleCkge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2VsbCBjZWxsLWNvbXBvbmVudCBhZ2dyZWdhdGUtY2VsbFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1jb2x1bW5dPVwiY29sdW1uLm5hbWVcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImNvbHVtbi5jZWxsQ2xhc3NcIlxuICAgICAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cIjBcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5mbGV4LWdyb3ddPVwiY29sdW1uLmZsZXhcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5mbGV4LWJhc2lzLnB4XT1cImNvbHVtbi53aWR0aFwiPlxuICAgICAgICAgICAgICAgIEBpZiAoY29sdW1uLmFnZ3JlZ2F0ZSAhPT0gYWdncmVnYXRpb25UeXBlLm5vbmUpIHtcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2VsbC10ZXh0IGNlbGwtdGV4dF9udW1lcmljIGZvbnQtdGl0bGUtM1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3tsb2NbZ2V0QWdncmVnYXRlVGV4dChjb2x1bW4pXX19OlxuICAgICAgICAgICAgICAgICAgICB7e2dldEFnZ3JlZ2F0ZVZhbHVlKGNvbHVtbikgfCB0ZXRhTnVtYmVyIDogMn19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKHNlbGVjdFR5cGUgPT09IHNlbGVjdFR5cGVFbnVtLmNoZWNrQm94ICYmIGxvY2tlZC5sZW5ndGggPCAxKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNlbGwgYWxpZ24tY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxuICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogMjhweDtcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPHRldGEtaWNvbiBbbmFtZV09XCInc3VtQ29sb3InXCI+PC90ZXRhLWljb24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgICAgQGZvciAoY29sdW1uIG9mIHVubG9ja2VkOyB0cmFjayB0cmFja0NvbHVtbnMoY29sSW5kZXgsIGNvbHVtbik7IGxldCBjb2xJbmRleCA9ICRpbmRleCkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjZWxsIGNlbGwtY29tcG9uZW50IGFnZ3JlZ2F0ZS1jZWxsXCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtY29sdW1uXT1cImNvbHVtbi5uYW1lXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cImNvbHVtbi5jZWxsQ2xhc3NcIlxuICAgICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiMFwiXG4gICAgICAgICAgICBbc3R5bGUuZmxleC1ncm93XT1cImNvbHVtbi5mbGV4XCJcbiAgICAgICAgICAgIFtzdHlsZS5mbGV4LWJhc2lzLnB4XT1cImNvbHVtbi53aWR0aFwiPlxuICAgICAgICAgICAgQGlmIChjb2x1bW4uYWdncmVnYXRlICE9PSBhZ2dyZWdhdGlvblR5cGUubm9uZSkge1xuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNlbGwtdGV4dCBjZWxsLXRleHRfbnVtZXJpYyBmb250LXRpdGxlLTNcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7e2xvY1tnZXRBZ2dyZWdhdGVUZXh0KGNvbHVtbildfX06XG4gICAgICAgICAgICAgICAge3tnZXRBZ2dyZWdhdGVWYWx1ZShjb2x1bW4pIHwgdGV0YU51bWJlciA6IDJ9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgfVxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjZW1wdHlSb3c+XG4gIDxkaXYgY2xhc3M9XCJlbXB0eS10YWJsZS1yb3dcIlxuICAgIHN0eWxlPVwiaGVpZ2h0OiAwLjFweFwiXG4gICAgW3N0eWxlLmZsZXgtZ3Jvd109XCJ0b3RhbEZsZXhcIlxuICAgIFtzdHlsZS5mbGV4LWJhc2lzLnB4XT1cInRvdGFsV2lkdGhcIlxuICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwidG90YWxXaWR0aFwiPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
package/esm2022/component/table/table-head/filter-dropdown-tab/filter-dropdown-tab.component.mjs
CHANGED
|
@@ -1,25 +1,17 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, HostListener, Input } from '@angular/core';
|
|
1
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, HostListener, Input } from '@angular/core';
|
|
2
|
+
import { TableColumn } from '../../contract/table-column';
|
|
2
3
|
import { FilterState } from '../../../filter/contarct/filter-state';
|
|
4
|
+
import { TableService } from '../../service/table.service';
|
|
5
|
+
import { TetaConfigService } from '../../../../locale/teta-config.service';
|
|
6
|
+
import { AsyncPipe } from '@angular/common';
|
|
7
|
+
import { IconComponent } from '../../../icon/icon/icon.component';
|
|
8
|
+
import { ButtonComponent } from '../../../button/button/button.component';
|
|
9
|
+
import { ToolbarComponent } from '../../../toolbar/toolbar/toolbar.component';
|
|
10
|
+
import { FilterHostComponent } from '../../../filter/filter-host/filter-host.component';
|
|
3
11
|
import * as i0 from "@angular/core";
|
|
4
12
|
import * as i1 from "../../service/table.service";
|
|
5
13
|
import * as i2 from "../../../../locale/teta-config.service";
|
|
6
|
-
import * as i3 from "@angular/common";
|
|
7
|
-
import * as i4 from "../../../filter/filter-host/filter-host.component";
|
|
8
|
-
import * as i5 from "../../../icon/icon/icon.component";
|
|
9
|
-
import * as i6 from "../../../button/button/button.component";
|
|
10
|
-
import * as i7 from "../../../toolbar/toolbar/toolbar.component";
|
|
11
14
|
export class FilterDropdownTabComponent {
|
|
12
|
-
_svc;
|
|
13
|
-
_config;
|
|
14
|
-
_elementRef;
|
|
15
|
-
_cdr;
|
|
16
|
-
columns;
|
|
17
|
-
column;
|
|
18
|
-
state;
|
|
19
|
-
data;
|
|
20
|
-
close;
|
|
21
|
-
locale;
|
|
22
|
-
filterOptions;
|
|
23
15
|
enter() {
|
|
24
16
|
this.applyFilter();
|
|
25
17
|
}
|
|
@@ -43,13 +35,13 @@ export class FilterDropdownTabComponent {
|
|
|
43
35
|
}
|
|
44
36
|
ngOnInit() {
|
|
45
37
|
}
|
|
46
|
-
static
|
|
47
|
-
static
|
|
38
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: FilterDropdownTabComponent, deps: [{ token: i1.TableService }, { token: i2.TetaConfigService }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
39
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: FilterDropdownTabComponent, isStandalone: true, selector: "teta-filter-dropdown-tab", inputs: { columns: "columns", column: "column", state: "state", data: "data", close: "close" }, host: { listeners: { "keydown.enter": "enter()" } }, ngImport: i0, template: "@if (locale | async; as loc) {\n @if (filterOptions | async; as options) {\n <teta-filter-host [column]=\"column\"\n [data]=\"data\"\n [state]=\"state\"\n [filterOptions]=\"options[column.name]\"></teta-filter-host>\n }\n <teta-toolbar class=\"justify-content-between\">\n <button type=\"button\" teta-button [palette]=\"'text'\" [view]=\"'ghost'\" (click)=\"clearFilter()\">\n {{loc.clear}}\n </button>\n <button type=\"button\" teta-button [palette]=\"'primary'\" (click)=\"applyFilter()\">\n <teta-icon [name]=\"'tick'\" [palette]=\"'white'\"></teta-icon>\n {{loc.apply}}\n </button>\n </teta-toolbar>\n}\n", styles: [":host{display:flex;flex-direction:column;min-height:0;min-width:0}\n"], dependencies: [{ kind: "component", type: FilterHostComponent, selector: "teta-filter-host", inputs: ["column", "state", "data", "filterOptions"], outputs: ["filterChanged"] }, { kind: "component", type: ToolbarComponent, selector: "teta-toolbar", inputs: ["palette", "class"] }, { kind: "component", type: ButtonComponent, selector: "button[teta-button], teta-button", inputs: ["palette", "class", "view", "square", "viewType", "size"] }, { kind: "component", type: IconComponent, selector: "teta-icon", inputs: ["name", "size", "palette", "class"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
48
40
|
}
|
|
49
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
41
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: FilterDropdownTabComponent, decorators: [{
|
|
50
42
|
type: Component,
|
|
51
|
-
args: [{ selector: 'teta-filter-dropdown-tab', changeDetection: ChangeDetectionStrategy.OnPush, template: "
|
|
52
|
-
}], ctorParameters:
|
|
43
|
+
args: [{ selector: 'teta-filter-dropdown-tab', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [FilterHostComponent, ToolbarComponent, ButtonComponent, IconComponent, AsyncPipe], template: "@if (locale | async; as loc) {\n @if (filterOptions | async; as options) {\n <teta-filter-host [column]=\"column\"\n [data]=\"data\"\n [state]=\"state\"\n [filterOptions]=\"options[column.name]\"></teta-filter-host>\n }\n <teta-toolbar class=\"justify-content-between\">\n <button type=\"button\" teta-button [palette]=\"'text'\" [view]=\"'ghost'\" (click)=\"clearFilter()\">\n {{loc.clear}}\n </button>\n <button type=\"button\" teta-button [palette]=\"'primary'\" (click)=\"applyFilter()\">\n <teta-icon [name]=\"'tick'\" [palette]=\"'white'\"></teta-icon>\n {{loc.apply}}\n </button>\n </teta-toolbar>\n}\n", styles: [":host{display:flex;flex-direction:column;min-height:0;min-width:0}\n"] }]
|
|
44
|
+
}], ctorParameters: () => [{ type: i1.TableService }, { type: i2.TetaConfigService }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }], propDecorators: { columns: [{
|
|
53
45
|
type: Input
|
|
54
46
|
}], column: [{
|
|
55
47
|
type: Input
|
|
@@ -63,4 +55,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImpor
|
|
|
63
55
|
type: HostListener,
|
|
64
56
|
args: ['keydown.enter']
|
|
65
57
|
}] } });
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWRyb3Bkb3duLXRhYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L3RhYmxlL3RhYmxlLWhlYWQvZmlsdGVyLWRyb3Bkb3duLXRhYi9maWx0ZXItZHJvcGRvd24tdGFiLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnQvdGFibGUvdGFibGUtaGVhZC9maWx0ZXItZHJvcGRvd24tdGFiL2ZpbHRlci1kcm9wZG93bi10YWIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUVOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUN4RCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFHbEUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ3pELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBSXpFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDOzs7O0FBVXhGLE1BQU0sT0FBTywwQkFBMEI7SUFVTixLQUFLO1FBQ2xDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsWUFBb0IsSUFBcUIsRUFDckIsT0FBMEIsRUFDMUIsV0FBdUIsRUFDdkIsSUFBdUI7UUFIdkIsU0FBSSxHQUFKLElBQUksQ0FBaUI7UUFDckIsWUFBTyxHQUFQLE9BQU8sQ0FBbUI7UUFDMUIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDdkIsU0FBSSxHQUFKLElBQUksQ0FBbUI7UUFDekMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztRQUNsQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQy9DLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxRQUFRO0lBQ1IsQ0FBQzs4R0FuQ1UsMEJBQTBCO2tHQUExQiwwQkFBMEIseU9DaEN2QyxrcEJBaUJBLDhIRGFjLG1CQUFtQiwrSUFBRSxnQkFBZ0IsdUZBQUUsZUFBZSxpSkFBRSxhQUFhLCtGQUFFLFNBQVM7OzJGQUVqRiwwQkFBMEI7a0JBUnRDLFNBQVM7K0JBQ0ksMEJBQTBCLG1CQUduQix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUCxDQUFDLG1CQUFtQixFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsU0FBUyxDQUFDOzBLQUdwRixPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUt5QixLQUFLO3NCQUFuQyxZQUFZO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25Jbml0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtUYWJsZUNvbHVtbn0gZnJvbSAnLi4vLi4vY29udHJhY3QvdGFibGUtY29sdW1uJztcbmltcG9ydCB7RmlsdGVyU3RhdGV9IGZyb20gJy4uLy4uLy4uL2ZpbHRlci9jb250YXJjdC9maWx0ZXItc3RhdGUnO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7VGV0YUxvY2FsaXNhdGlvbn0gZnJvbSAnLi4vLi4vLi4vLi4vbG9jYWxlL3RldGEtbG9jYWxpc2F0aW9uJztcbmltcG9ydCB7VGFibGVTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL3RhYmxlLnNlcnZpY2UnO1xuaW1wb3J0IHtUZXRhQ29uZmlnU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vLi4vbG9jYWxlL3RldGEtY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHtJRGljdGlvbmFyeX0gZnJvbSAnLi4vLi4vLi4vLi4vY29tbW9uL2NvbnRyYWN0L2ktZGljdGlvbmFyeSc7XG5pbXBvcnQge0lJZE5hbWV9IGZyb20gJy4uLy4uLy4uLy4uL2NvbW1vbi9jb250cmFjdC9pLWlkLW5hbWUnO1xuaW1wb3J0IHtJVHJlZURhdGF9IGZyb20gJy4uLy4uLy4uLy4uL2NvbW1vbi9jb250cmFjdC9pLXRyZWUtZGF0YSc7XG5pbXBvcnQgeyBBc3luY1BpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSWNvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2ljb24vaWNvbi9pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9idXR0b24vYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgVG9vbGJhckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL3Rvb2xiYXIvdG9vbGJhci90b29sYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGaWx0ZXJIb3N0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vZmlsdGVyL2ZpbHRlci1ob3N0L2ZpbHRlci1ob3N0LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndGV0YS1maWx0ZXItZHJvcGRvd24tdGFiJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZmlsdGVyLWRyb3Bkb3duLXRhYi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZmlsdGVyLWRyb3Bkb3duLXRhYi5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0ZpbHRlckhvc3RDb21wb25lbnQsIFRvb2xiYXJDb21wb25lbnQsIEJ1dHRvbkNvbXBvbmVudCwgSWNvbkNvbXBvbmVudCwgQXN5bmNQaXBlXVxufSlcbmV4cG9ydCBjbGFzcyBGaWx0ZXJEcm9wZG93blRhYkNvbXBvbmVudDxUPiBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGNvbHVtbnM6IElUcmVlRGF0YVtdO1xuICBASW5wdXQoKSBjb2x1bW46IFRhYmxlQ29sdW1uO1xuICBASW5wdXQoKSBzdGF0ZTogRmlsdGVyU3RhdGU7XG4gIEBJbnB1dCgpIGRhdGE6IFRbXTtcbiAgQElucHV0KCkgY2xvc2U6ICgpID0+IHZvaWQ7XG5cbiAgbG9jYWxlOiBPYnNlcnZhYmxlPFRldGFMb2NhbGlzYXRpb24+O1xuICBmaWx0ZXJPcHRpb25zOiBPYnNlcnZhYmxlPElEaWN0aW9uYXJ5PElJZE5hbWU8YW55PltdPj47XG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5lbnRlcicpIGVudGVyKCkge1xuICAgIHRoaXMuYXBwbHlGaWx0ZXIoKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3N2YzogVGFibGVTZXJ2aWNlPFQ+LFxuICAgICAgICAgICAgICBwcml2YXRlIF9jb25maWc6IFRldGFDb25maWdTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICAgICAgICBwcml2YXRlIF9jZHI6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgdGhpcy5sb2NhbGUgPSB0aGlzLl9jb25maWcubG9jYWxlO1xuICAgIHRoaXMuZmlsdGVyT3B0aW9ucyA9IHRoaXMuX3N2Yy5maWx0ZXJPcHRpb25zO1xuICB9XG5cbiAgY2xlYXJGaWx0ZXIoKSB7XG4gICAgdGhpcy5fc3ZjLmNsZWFyRmlsdGVyKHRoaXMuY29sdW1uKTtcbiAgICB0aGlzLmNsb3NlKCk7XG4gICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgYXBwbHlGaWx0ZXIoKSB7XG4gICAgdGhpcy5fc3ZjLnNldFN0YXRlKG5ldyBGaWx0ZXJTdGF0ZSh0aGlzLnN0YXRlKSk7XG4gICAgdGhpcy5jbG9zZSgpO1xuICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICB9XG59XG4iLCJAaWYgKGxvY2FsZSB8IGFzeW5jOyBhcyBsb2MpIHtcbiAgQGlmIChmaWx0ZXJPcHRpb25zIHwgYXN5bmM7IGFzIG9wdGlvbnMpIHtcbiAgICA8dGV0YS1maWx0ZXItaG9zdCBbY29sdW1uXT1cImNvbHVtblwiXG4gICAgICBbZGF0YV09XCJkYXRhXCJcbiAgICAgIFtzdGF0ZV09XCJzdGF0ZVwiXG4gICAgW2ZpbHRlck9wdGlvbnNdPVwib3B0aW9uc1tjb2x1bW4ubmFtZV1cIj48L3RldGEtZmlsdGVyLWhvc3Q+XG4gIH1cbiAgPHRldGEtdG9vbGJhciBjbGFzcz1cImp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgdGV0YS1idXR0b24gW3BhbGV0dGVdPVwiJ3RleHQnXCIgW3ZpZXddPVwiJ2dob3N0J1wiIChjbGljayk9XCJjbGVhckZpbHRlcigpXCI+XG4gICAgICB7e2xvYy5jbGVhcn19XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgdGV0YS1idXR0b24gW3BhbGV0dGVdPVwiJ3ByaW1hcnknXCIgKGNsaWNrKT1cImFwcGx5RmlsdGVyKClcIj5cbiAgICAgIDx0ZXRhLWljb24gW25hbWVdPVwiJ3RpY2snXCIgW3BhbGV0dGVdPVwiJ3doaXRlJ1wiPjwvdGV0YS1pY29uPlxuICAgICAge3tsb2MuYXBwbHl9fVxuICAgIDwvYnV0dG9uPlxuICA8L3RldGEtdG9vbGJhcj5cbn1cbiJdfQ==
|