igniteui-angular 17.0.13 → 17.0.14
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/esm2022/lib/accordion/accordion.component.mjs +3 -3
- package/esm2022/lib/accordion/accordion.module.mjs +4 -4
- package/esm2022/lib/action-strip/action-strip.component.mjs +6 -6
- package/esm2022/lib/action-strip/action-strip.module.mjs +4 -4
- package/esm2022/lib/action-strip/grid-actions/grid-action-button.component.mjs +3 -3
- package/esm2022/lib/action-strip/grid-actions/grid-actions-base.directive.mjs +3 -3
- package/esm2022/lib/action-strip/grid-actions/grid-editing-actions.component.mjs +3 -3
- package/esm2022/lib/action-strip/grid-actions/grid-pinning-actions.component.mjs +3 -3
- package/esm2022/lib/avatar/avatar.component.mjs +3 -3
- package/esm2022/lib/avatar/avatar.module.mjs +4 -4
- package/esm2022/lib/badge/badge.component.mjs +3 -3
- package/esm2022/lib/badge/badge.module.mjs +4 -4
- package/esm2022/lib/banner/banner.component.mjs +3 -3
- package/esm2022/lib/banner/banner.directives.mjs +3 -3
- package/esm2022/lib/banner/banner.module.mjs +4 -4
- package/esm2022/lib/buttonGroup/buttonGroup.component.mjs +26 -20
- package/esm2022/lib/buttonGroup/buttongroup.module.mjs +4 -4
- package/esm2022/lib/calendar/calendar-base.mjs +9 -7
- package/esm2022/lib/calendar/calendar.component.mjs +3 -3
- package/esm2022/lib/calendar/calendar.directives.mjs +15 -15
- package/esm2022/lib/calendar/calendar.module.mjs +4 -4
- package/esm2022/lib/calendar/days-view/day-item.component.mjs +3 -3
- package/esm2022/lib/calendar/days-view/days-view.component.mjs +3 -3
- package/esm2022/lib/calendar/days-view/daysview-navigation.service.mjs +3 -3
- package/esm2022/lib/calendar/month-picker/month-picker-base.mjs +3 -3
- package/esm2022/lib/calendar/month-picker/month-picker.component.mjs +3 -3
- package/esm2022/lib/calendar/months-view/months-view.component.mjs +3 -3
- package/esm2022/lib/calendar/months-view.pipe.mjs +6 -6
- package/esm2022/lib/calendar/years-view/years-view.component.mjs +6 -6
- package/esm2022/lib/card/card.component.mjs +27 -27
- package/esm2022/lib/card/card.module.mjs +4 -4
- package/esm2022/lib/carousel/carousel.component.mjs +6 -6
- package/esm2022/lib/carousel/carousel.directives.mjs +9 -9
- package/esm2022/lib/carousel/carousel.module.mjs +4 -4
- package/esm2022/lib/carousel/slide.component.mjs +3 -3
- package/esm2022/lib/checkbox/checkbox.component.mjs +3 -3
- package/esm2022/lib/checkbox/checkbox.module.mjs +4 -4
- package/esm2022/lib/chips/chip.component.mjs +3 -3
- package/esm2022/lib/chips/chips-area.component.mjs +3 -3
- package/esm2022/lib/chips/chips.module.mjs +4 -4
- package/esm2022/lib/combo/combo-add-item.component.mjs +3 -3
- package/esm2022/lib/combo/combo-dropdown.component.mjs +3 -3
- package/esm2022/lib/combo/combo-item.component.mjs +3 -3
- package/esm2022/lib/combo/combo.api.mjs +3 -3
- package/esm2022/lib/combo/combo.common.mjs +3 -3
- package/esm2022/lib/combo/combo.component.mjs +3 -3
- package/esm2022/lib/combo/combo.directives.mjs +24 -24
- package/esm2022/lib/combo/combo.module.mjs +4 -4
- package/esm2022/lib/combo/combo.pipes.mjs +6 -6
- package/esm2022/lib/core/density.mjs +25 -21
- package/esm2022/lib/core/navigation/directives.mjs +6 -6
- package/esm2022/lib/core/navigation/nav.service.mjs +3 -3
- package/esm2022/lib/core/selection.mjs +3 -3
- package/esm2022/lib/core/touch.mjs +3 -3
- package/esm2022/lib/core/utils.mjs +3 -3
- package/esm2022/lib/date-common/calendar-container/calendar-container.component.mjs +3 -3
- package/esm2022/lib/date-common/picker-base.directive.mjs +3 -3
- package/esm2022/lib/date-common/picker-icons.common.mjs +9 -9
- package/esm2022/lib/date-picker/date-picker.component.mjs +3 -3
- package/esm2022/lib/date-picker/date-picker.module.mjs +4 -4
- package/esm2022/lib/date-range-picker/date-range-picker-inputs.common.mjs +15 -15
- package/esm2022/lib/date-range-picker/date-range-picker.component.mjs +3 -3
- package/esm2022/lib/date-range-picker/date-range-picker.module.mjs +4 -4
- package/esm2022/lib/dialog/dialog.component.mjs +3 -3
- package/esm2022/lib/dialog/dialog.directives.mjs +6 -6
- package/esm2022/lib/dialog/dialog.module.mjs +4 -4
- package/esm2022/lib/directives/autocomplete/autocomplete.directive.mjs +3 -3
- package/esm2022/lib/directives/autocomplete/autocomplete.module.mjs +4 -4
- package/esm2022/lib/directives/button/button.directive.mjs +3 -3
- package/esm2022/lib/directives/button/button.module.mjs +4 -4
- package/esm2022/lib/directives/date-time-editor/date-time-editor.directive.mjs +3 -3
- package/esm2022/lib/directives/date-time-editor/date-time-editor.module.mjs +4 -4
- package/esm2022/lib/directives/divider/divider.directive.mjs +3 -3
- package/esm2022/lib/directives/divider/divider.module.mjs +4 -4
- package/esm2022/lib/directives/drag-drop/drag-drop.directive.mjs +12 -12
- package/esm2022/lib/directives/drag-drop/drag-drop.module.mjs +4 -4
- package/esm2022/lib/directives/filter/filter.directive.mjs +6 -6
- package/esm2022/lib/directives/filter/filter.module.mjs +4 -4
- package/esm2022/lib/directives/focus/focus.directive.mjs +3 -3
- package/esm2022/lib/directives/focus/focus.module.mjs +4 -4
- package/esm2022/lib/directives/focus-trap/focus-trap.directive.mjs +3 -3
- package/esm2022/lib/directives/focus-trap/focus-trap.module.mjs +4 -4
- package/esm2022/lib/directives/for-of/base.helper.component.mjs +3 -3
- package/esm2022/lib/directives/for-of/display.container.mjs +3 -3
- package/esm2022/lib/directives/for-of/for_of.directive.mjs +6 -6
- package/esm2022/lib/directives/for-of/for_of.module.mjs +4 -4
- package/esm2022/lib/directives/for-of/for_of.sync.service.mjs +6 -6
- package/esm2022/lib/directives/for-of/horizontal.virtual.helper.component.mjs +3 -3
- package/esm2022/lib/directives/for-of/virtual.helper.component.mjs +3 -3
- package/esm2022/lib/directives/form-control/form-control.directive.mjs +3 -3
- package/esm2022/lib/directives/form-control/form-control.module.mjs +4 -4
- package/esm2022/lib/directives/hint/hint.directive.mjs +3 -3
- package/esm2022/lib/directives/input/input.directive.mjs +3 -3
- package/esm2022/lib/directives/label/label.directive.mjs +3 -3
- package/esm2022/lib/directives/layout/layout.directive.mjs +6 -6
- package/esm2022/lib/directives/layout/layout.module.mjs +4 -4
- package/esm2022/lib/directives/mask/mask-parsing.service.mjs +3 -3
- package/esm2022/lib/directives/mask/mask.directive.mjs +3 -3
- package/esm2022/lib/directives/mask/mask.module.mjs +4 -4
- package/esm2022/lib/directives/notification/notifications.directive.mjs +3 -3
- package/esm2022/lib/directives/prefix/prefix.directive.mjs +3 -3
- package/esm2022/lib/directives/radio/radio-group.directive.mjs +3 -3
- package/esm2022/lib/directives/radio/radio-group.module.mjs +4 -4
- package/esm2022/lib/directives/ripple/ripple.directive.mjs +3 -3
- package/esm2022/lib/directives/ripple/ripple.module.mjs +4 -4
- package/esm2022/lib/directives/scroll-inertia/scroll_inertia.directive.mjs +3 -3
- package/esm2022/lib/directives/scroll-inertia/scroll_inertia.module.mjs +4 -4
- package/esm2022/lib/directives/suffix/suffix.directive.mjs +3 -3
- package/esm2022/lib/directives/template-outlet/template_outlet.directive.mjs +3 -3
- package/esm2022/lib/directives/text-highlight/text-highlight.directive.mjs +3 -3
- package/esm2022/lib/directives/text-highlight/text-highlight.module.mjs +4 -4
- package/esm2022/lib/directives/text-selection/text-selection.directive.mjs +3 -3
- package/esm2022/lib/directives/text-selection/text-selection.module.mjs +4 -4
- package/esm2022/lib/directives/toggle/toggle.directive.mjs +9 -9
- package/esm2022/lib/directives/toggle/toggle.module.mjs +4 -4
- package/esm2022/lib/directives/tooltip/tooltip-target.directive.mjs +3 -3
- package/esm2022/lib/directives/tooltip/tooltip.component.mjs +3 -3
- package/esm2022/lib/directives/tooltip/tooltip.directive.mjs +3 -3
- package/esm2022/lib/directives/tooltip/tooltip.module.mjs +4 -4
- package/esm2022/lib/drop-down/drop-down-group.component.mjs +3 -3
- package/esm2022/lib/drop-down/drop-down-item.base.mjs +3 -3
- package/esm2022/lib/drop-down/drop-down-item.component.mjs +3 -3
- package/esm2022/lib/drop-down/drop-down-navigation.directive.mjs +3 -3
- package/esm2022/lib/drop-down/drop-down.base.mjs +3 -3
- package/esm2022/lib/drop-down/drop-down.component.mjs +3 -3
- package/esm2022/lib/drop-down/drop-down.module.mjs +4 -4
- package/esm2022/lib/expansion-panel/expansion-panel-body.component.mjs +3 -3
- package/esm2022/lib/expansion-panel/expansion-panel-header.component.mjs +3 -3
- package/esm2022/lib/expansion-panel/expansion-panel.common.mjs +3 -3
- package/esm2022/lib/expansion-panel/expansion-panel.component.mjs +3 -3
- package/esm2022/lib/expansion-panel/expansion-panel.directives.mjs +9 -9
- package/esm2022/lib/expansion-panel/expansion-panel.module.mjs +4 -4
- package/esm2022/lib/expansion-panel/toggle-animation-component.mjs +3 -3
- package/esm2022/lib/grids/api.service.mjs +3 -3
- package/esm2022/lib/grids/cell.component.mjs +3 -3
- package/esm2022/lib/grids/column-actions/column-actions-base.directive.mjs +3 -3
- package/esm2022/lib/grids/column-actions/column-actions.component.mjs +12 -12
- package/esm2022/lib/grids/column-actions/column-hiding.directive.mjs +3 -3
- package/esm2022/lib/grids/column-actions/column-pinning.directive.mjs +3 -3
- package/esm2022/lib/grids/columns/column-group.component.mjs +3 -3
- package/esm2022/lib/grids/columns/column-layout.component.mjs +3 -3
- package/esm2022/lib/grids/columns/column.component.mjs +3 -3
- package/esm2022/lib/grids/columns/templates.directive.mjs +24 -24
- package/esm2022/lib/grids/columns/validators.directive.mjs +21 -21
- package/esm2022/lib/grids/common/crud.service.mjs +3 -3
- package/esm2022/lib/grids/common/pipes.mjs +54 -54
- package/esm2022/lib/grids/filtering/advanced-filtering/advanced-filtering-dialog.component.mjs +3 -3
- package/esm2022/lib/grids/filtering/base/grid-filtering-cell.component.mjs +3 -3
- package/esm2022/lib/grids/filtering/base/grid-filtering-row.component.mjs +3 -3
- package/esm2022/lib/grids/filtering/excel-style/base-filtering.component.mjs +3 -3
- package/esm2022/lib/grids/filtering/excel-style/excel-style-clear-filters.component.mjs +3 -3
- package/esm2022/lib/grids/filtering/excel-style/excel-style-conditional-filter.component.mjs +3 -3
- package/esm2022/lib/grids/filtering/excel-style/excel-style-custom-dialog.component.mjs +3 -3
- package/esm2022/lib/grids/filtering/excel-style/excel-style-date-expression.component.mjs +3 -3
- package/esm2022/lib/grids/filtering/excel-style/excel-style-default-expression.component.mjs +3 -3
- package/esm2022/lib/grids/filtering/excel-style/excel-style-filtering.component.mjs +9 -9
- package/esm2022/lib/grids/filtering/excel-style/excel-style-header.component.mjs +3 -3
- package/esm2022/lib/grids/filtering/excel-style/excel-style-hiding.component.mjs +3 -3
- package/esm2022/lib/grids/filtering/excel-style/excel-style-moving.component.mjs +3 -3
- package/esm2022/lib/grids/filtering/excel-style/excel-style-pinning.component.mjs +3 -3
- package/esm2022/lib/grids/filtering/excel-style/excel-style-search.component.mjs +6 -6
- package/esm2022/lib/grids/filtering/excel-style/excel-style-selecting.component.mjs +3 -3
- package/esm2022/lib/grids/filtering/excel-style/excel-style-sorting.component.mjs +3 -3
- package/esm2022/lib/grids/filtering/grid-filtering.service.mjs +3 -3
- package/esm2022/lib/grids/grid/expandable-cell.component.mjs +3 -3
- package/esm2022/lib/grids/grid/grid-api.service.mjs +3 -3
- package/esm2022/lib/grids/grid/grid-row.component.mjs +3 -3
- package/esm2022/lib/grids/grid/grid-validation.service.mjs +3 -3
- package/esm2022/lib/grids/grid/grid.component.mjs +3 -3
- package/esm2022/lib/grids/grid/grid.details.pipe.mjs +3 -3
- package/esm2022/lib/grids/grid/grid.module.mjs +4 -4
- package/esm2022/lib/grids/grid/grid.pipes.mjs +12 -12
- package/esm2022/lib/grids/grid/grid.summary.pipe.mjs +3 -3
- package/esm2022/lib/grids/grid/groupby-row.component.mjs +3 -3
- package/esm2022/lib/grids/grid-base.directive.mjs +3 -3
- package/esm2022/lib/grids/grid-footer/grid-footer.component.mjs +3 -3
- package/esm2022/lib/grids/grid-mrl-navigation.service.mjs +3 -3
- package/esm2022/lib/grids/grid-navigation.service.mjs +3 -3
- package/esm2022/lib/grids/grid.common.mjs +3 -3
- package/esm2022/lib/grids/grid.directives.mjs +33 -33
- package/esm2022/lib/grids/grid.rowEdit.directive.mjs +15 -15
- package/esm2022/lib/grids/grouping/grid-group-by-area.component.mjs +3 -3
- package/esm2022/lib/grids/grouping/group-by-area.directive.mjs +6 -6
- package/esm2022/lib/grids/grouping/tree-grid-group-by-area.component.mjs +3 -3
- package/esm2022/lib/grids/headers/grid-header-group.component.mjs +3 -3
- package/esm2022/lib/grids/headers/grid-header-row.component.mjs +3 -3
- package/esm2022/lib/grids/headers/grid-header.component.mjs +3 -3
- package/esm2022/lib/grids/headers/pipes.mjs +9 -9
- package/esm2022/lib/grids/hierarchical-grid/hierarchical-cell.component.mjs +3 -3
- package/esm2022/lib/grids/hierarchical-grid/hierarchical-grid-api.service.mjs +3 -3
- package/esm2022/lib/grids/hierarchical-grid/hierarchical-grid-base.directive.mjs +3 -3
- package/esm2022/lib/grids/hierarchical-grid/hierarchical-grid-navigation.service.mjs +3 -3
- package/esm2022/lib/grids/hierarchical-grid/hierarchical-grid.component.mjs +31 -24
- package/esm2022/lib/grids/hierarchical-grid/hierarchical-grid.module.mjs +4 -4
- package/esm2022/lib/grids/hierarchical-grid/hierarchical-grid.pipes.mjs +6 -6
- package/esm2022/lib/grids/hierarchical-grid/hierarchical-row.component.mjs +3 -3
- package/esm2022/lib/grids/hierarchical-grid/row-island-api.service.mjs +3 -3
- package/esm2022/lib/grids/hierarchical-grid/row-island.component.mjs +3 -3
- package/esm2022/lib/grids/moving/moving.drag.directive.mjs +3 -3
- package/esm2022/lib/grids/moving/moving.drop.directive.mjs +3 -3
- package/esm2022/lib/grids/moving/moving.service.mjs +3 -3
- package/esm2022/lib/grids/pivot-grid/pivot-data-selector.component.mjs +3 -3
- package/esm2022/lib/grids/pivot-grid/pivot-filtering.service.mjs +3 -3
- package/esm2022/lib/grids/pivot-grid/pivot-grid-navigation.service.mjs +3 -3
- package/esm2022/lib/grids/pivot-grid/pivot-grid.component.mjs +3 -3
- package/esm2022/lib/grids/pivot-grid/pivot-grid.directives.mjs +3 -3
- package/esm2022/lib/grids/pivot-grid/pivot-grid.module.mjs +4 -4
- package/esm2022/lib/grids/pivot-grid/pivot-grid.pipes.mjs +30 -30
- package/esm2022/lib/grids/pivot-grid/pivot-header-row.component.mjs +3 -3
- package/esm2022/lib/grids/pivot-grid/pivot-row-dimension-content.component.mjs +3 -3
- package/esm2022/lib/grids/pivot-grid/pivot-row-dimension-header-group.component.mjs +3 -3
- package/esm2022/lib/grids/pivot-grid/pivot-row-dimension-header.component.mjs +3 -3
- package/esm2022/lib/grids/pivot-grid/pivot-row.component.mjs +3 -3
- package/esm2022/lib/grids/resizing/pivot-grid/pivot-resize-handle.directive.mjs +3 -3
- package/esm2022/lib/grids/resizing/pivot-grid/pivot-resizer.component.mjs +3 -3
- package/esm2022/lib/grids/resizing/pivot-grid/pivot-resizing.service.mjs +3 -3
- package/esm2022/lib/grids/resizing/resize-handle.directive.mjs +3 -3
- package/esm2022/lib/grids/resizing/resizer.component.mjs +3 -3
- package/esm2022/lib/grids/resizing/resizer.directive.mjs +3 -3
- package/esm2022/lib/grids/resizing/resizing.service.mjs +3 -3
- package/esm2022/lib/grids/row-drag.directive.mjs +9 -9
- package/esm2022/lib/grids/row.directive.mjs +3 -3
- package/esm2022/lib/grids/selection/drag-select.directive.mjs +3 -3
- package/esm2022/lib/grids/selection/row-selectors.mjs +9 -9
- package/esm2022/lib/grids/selection/selection.service.mjs +3 -3
- package/esm2022/lib/grids/state.directive.mjs +3 -3
- package/esm2022/lib/grids/summaries/grid-root-summary.pipe.mjs +3 -3
- package/esm2022/lib/grids/summaries/grid-summary.service.mjs +3 -3
- package/esm2022/lib/grids/summaries/summary-cell.component.mjs +3 -3
- package/esm2022/lib/grids/summaries/summary-row.component.mjs +3 -3
- package/esm2022/lib/grids/toolbar/common.mjs +15 -15
- package/esm2022/lib/grids/toolbar/grid-toolbar-advanced-filtering.component.mjs +3 -3
- package/esm2022/lib/grids/toolbar/grid-toolbar-exporter.component.mjs +3 -3
- package/esm2022/lib/grids/toolbar/grid-toolbar-hiding.component.mjs +3 -3
- package/esm2022/lib/grids/toolbar/grid-toolbar-pinning.component.mjs +3 -3
- package/esm2022/lib/grids/toolbar/grid-toolbar.base.mjs +6 -6
- package/esm2022/lib/grids/toolbar/grid-toolbar.component.mjs +3 -3
- package/esm2022/lib/grids/tree-grid/tree-cell.component.mjs +3 -3
- package/esm2022/lib/grids/tree-grid/tree-grid-api.service.mjs +3 -3
- package/esm2022/lib/grids/tree-grid/tree-grid-row.component.mjs +3 -3
- package/esm2022/lib/grids/tree-grid/tree-grid-selection.service.mjs +3 -3
- package/esm2022/lib/grids/tree-grid/tree-grid.component.mjs +3 -3
- package/esm2022/lib/grids/tree-grid/tree-grid.directives.mjs +3 -3
- package/esm2022/lib/grids/tree-grid/tree-grid.filtering.pipe.mjs +3 -3
- package/esm2022/lib/grids/tree-grid/tree-grid.grouping.pipe.mjs +3 -3
- package/esm2022/lib/grids/tree-grid/tree-grid.module.mjs +4 -4
- package/esm2022/lib/grids/tree-grid/tree-grid.pipes.mjs +21 -21
- package/esm2022/lib/grids/tree-grid/tree-grid.summary.pipe.mjs +3 -3
- package/esm2022/lib/icon/icon.component.mjs +3 -3
- package/esm2022/lib/icon/icon.module.mjs +4 -4
- package/esm2022/lib/icon/icon.service.mjs +3 -3
- package/esm2022/lib/input-group/input-group.component.mjs +3 -3
- package/esm2022/lib/input-group/input-group.module.mjs +4 -4
- package/esm2022/lib/list/list-item.component.mjs +3 -3
- package/esm2022/lib/list/list.common.mjs +15 -15
- package/esm2022/lib/list/list.component.mjs +18 -18
- package/esm2022/lib/list/list.module.mjs +4 -4
- package/esm2022/lib/navbar/navbar.component.mjs +9 -9
- package/esm2022/lib/navbar/navbar.module.mjs +4 -4
- package/esm2022/lib/navigation-drawer/navigation-drawer.component.mjs +3 -3
- package/esm2022/lib/navigation-drawer/navigation-drawer.directives.mjs +9 -9
- package/esm2022/lib/navigation-drawer/navigation-drawer.module.mjs +4 -4
- package/esm2022/lib/paginator/paginator-interfaces.mjs +3 -3
- package/esm2022/lib/paginator/paginator.component.mjs +12 -12
- package/esm2022/lib/paginator/paginator.module.mjs +4 -4
- package/esm2022/lib/progressbar/progressbar.common.mjs +6 -6
- package/esm2022/lib/progressbar/progressbar.component.mjs +9 -9
- package/esm2022/lib/progressbar/progressbar.module.mjs +4 -4
- package/esm2022/lib/query-builder/query-builder-header.component.mjs +3 -3
- package/esm2022/lib/query-builder/query-builder.component.mjs +6 -6
- package/esm2022/lib/query-builder/query-builder.module.mjs +4 -4
- package/esm2022/lib/radio/radio.component.mjs +3 -3
- package/esm2022/lib/select/select-group.component.mjs +3 -3
- package/esm2022/lib/select/select-item.component.mjs +3 -3
- package/esm2022/lib/select/select-navigation.directive.mjs +3 -3
- package/esm2022/lib/select/select.component.mjs +12 -12
- package/esm2022/lib/select/select.module.mjs +4 -4
- package/esm2022/lib/services/animation/angular-animation-service.mjs +3 -3
- package/esm2022/lib/services/csv/csv-exporter.mjs +3 -3
- package/esm2022/lib/services/direction/directionality.mjs +3 -3
- package/esm2022/lib/services/excel/excel-exporter.mjs +3 -3
- package/esm2022/lib/services/excel/excel-files.mjs +5 -4
- package/esm2022/lib/services/exporter-common/base-export-service.mjs +2 -2
- package/esm2022/lib/services/overlay/overlay.mjs +3 -3
- package/esm2022/lib/services/transaction/transaction-factory.service.mjs +6 -6
- package/esm2022/lib/simple-combo/simple-combo.component.mjs +3 -3
- package/esm2022/lib/simple-combo/simple-combo.module.mjs +4 -4
- package/esm2022/lib/slider/label/thumb-label.component.mjs +3 -3
- package/esm2022/lib/slider/slider.common.mjs +9 -9
- package/esm2022/lib/slider/slider.component.mjs +3 -3
- package/esm2022/lib/slider/slider.module.mjs +4 -4
- package/esm2022/lib/slider/thumb/thumb-slider.component.mjs +3 -3
- package/esm2022/lib/slider/ticks/tick.pipe.mjs +3 -3
- package/esm2022/lib/slider/ticks/ticks.component.mjs +3 -3
- package/esm2022/lib/snackbar/snackbar.component.mjs +3 -3
- package/esm2022/lib/snackbar/snackbar.module.mjs +4 -4
- package/esm2022/lib/splitter/splitter-pane/splitter-pane.component.mjs +3 -3
- package/esm2022/lib/splitter/splitter.component.mjs +6 -6
- package/esm2022/lib/splitter/splitter.module.mjs +4 -4
- package/esm2022/lib/stepper/step/step.component.mjs +3 -3
- package/esm2022/lib/stepper/stepper.component.mjs +3 -3
- package/esm2022/lib/stepper/stepper.directive.mjs +21 -21
- package/esm2022/lib/stepper/stepper.module.mjs +4 -4
- package/esm2022/lib/stepper/stepper.service.mjs +3 -3
- package/esm2022/lib/switch/switch.component.mjs +3 -3
- package/esm2022/lib/switch/switch.module.mjs +4 -4
- package/esm2022/lib/tabs/bottom-nav/bottom-nav-content.component.mjs +3 -3
- package/esm2022/lib/tabs/bottom-nav/bottom-nav-header.component.mjs +3 -3
- package/esm2022/lib/tabs/bottom-nav/bottom-nav-item.component.mjs +3 -3
- package/esm2022/lib/tabs/bottom-nav/bottom-nav.component.mjs +3 -3
- package/esm2022/lib/tabs/bottom-nav/bottom-nav.directives.mjs +6 -6
- package/esm2022/lib/tabs/bottom-nav/bottom-nav.module.mjs +4 -4
- package/esm2022/lib/tabs/tab-content.directive.mjs +3 -3
- package/esm2022/lib/tabs/tab-header.directive.mjs +3 -3
- package/esm2022/lib/tabs/tab-item.directive.mjs +3 -3
- package/esm2022/lib/tabs/tabs/tab-content.component.mjs +3 -3
- package/esm2022/lib/tabs/tabs/tab-header.component.mjs +3 -3
- package/esm2022/lib/tabs/tabs/tab-item.component.mjs +3 -3
- package/esm2022/lib/tabs/tabs/tabs.component.mjs +3 -3
- package/esm2022/lib/tabs/tabs/tabs.directives.mjs +6 -6
- package/esm2022/lib/tabs/tabs/tabs.module.mjs +4 -4
- package/esm2022/lib/tabs/tabs.directive.mjs +3 -3
- package/esm2022/lib/time-picker/time-picker.component.mjs +3 -3
- package/esm2022/lib/time-picker/time-picker.directives.mjs +6 -6
- package/esm2022/lib/time-picker/time-picker.module.mjs +4 -4
- package/esm2022/lib/time-picker/time-picker.pipes.mjs +6 -6
- package/esm2022/lib/toast/toast.component.mjs +3 -3
- package/esm2022/lib/toast/toast.module.mjs +4 -4
- package/esm2022/lib/tree/tree-navigation.service.mjs +3 -3
- package/esm2022/lib/tree/tree-node/tree-node.component.mjs +6 -6
- package/esm2022/lib/tree/tree-selection.service.mjs +3 -3
- package/esm2022/lib/tree/tree.component.mjs +9 -9
- package/esm2022/lib/tree/tree.module.mjs +4 -4
- package/esm2022/lib/tree/tree.service.mjs +3 -3
- package/fesm2022/igniteui-angular.mjs +1640 -1620
- package/fesm2022/igniteui-angular.mjs.map +1 -1
- package/lib/core/density.d.ts +0 -1
- package/lib/core/styles/components/button/_button-theme.scss +0 -6
- package/lib/core/styles/components/grid/_excel-filtering-theme.scss +5 -0
- package/lib/core/styles/components/grid/_grid-theme.scss +6 -0
- package/lib/directives/autocomplete/autocomplete.directive.d.ts +1 -1
- package/lib/grids/filtering/base/grid-filtering-row.component.d.ts +2 -2
- package/lib/grids/filtering/excel-style/excel-style-default-expression.component.d.ts +1 -1
- package/lib/grids/filtering/excel-style/excel-style-filtering.component.d.ts +1 -1
- package/lib/grids/grid-base.directive.d.ts +1 -1
- package/lib/grids/hierarchical-grid/hierarchical-grid.component.d.ts +4 -0
- package/lib/tabs/tab-content.directive.d.ts +1 -1
- package/package.json +1 -1
- package/schematics/tsconfig.tsbuildinfo +1 -1
- package/styles/igniteui-bootstrap-dark.css +1 -1
- package/styles/igniteui-bootstrap-light.css +1 -1
- package/styles/maps/igniteui-angular-dark.css.map +1 -1
- package/styles/maps/igniteui-angular.css.map +1 -1
- package/styles/maps/igniteui-bootstrap-dark.css.map +1 -1
- package/styles/maps/igniteui-bootstrap-light.css.map +1 -1
- package/styles/maps/igniteui-dark-green.css.map +1 -1
- package/styles/maps/igniteui-fluent-dark-excel.css.map +1 -1
- package/styles/maps/igniteui-fluent-dark-word.css.map +1 -1
- package/styles/maps/igniteui-fluent-dark.css.map +1 -1
- package/styles/maps/igniteui-fluent-light-excel.css.map +1 -1
- package/styles/maps/igniteui-fluent-light-word.css.map +1 -1
- package/styles/maps/igniteui-fluent-light.css.map +1 -1
- package/styles/maps/igniteui-indigo-dark.css.map +1 -1
- package/styles/maps/igniteui-indigo-light.css.map +1 -1
|
@@ -377,10 +377,10 @@ export class IgxHierarchicalGridNavigationService extends IgxGridNavigationServi
|
|
|
377
377
|
}
|
|
378
378
|
return { grid: currGrid, prev };
|
|
379
379
|
}
|
|
380
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
381
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.
|
|
380
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: IgxHierarchicalGridNavigationService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
381
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: IgxHierarchicalGridNavigationService }); }
|
|
382
382
|
}
|
|
383
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
383
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: IgxHierarchicalGridNavigationService, decorators: [{
|
|
384
384
|
type: Injectable
|
|
385
385
|
}] });
|
|
386
386
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGllcmFyY2hpY2FsLWdyaWQtbmF2aWdhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2dyaWRzL2hpZXJhcmNoaWNhbC1ncmlkL2hpZXJhcmNoaWNhbC1ncmlkLW5hdmlnYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2QyxPQUFPLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRW5FLE9BQU8sRUFBZSx3QkFBd0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQUduRixNQUFNLE9BQU8sb0NBQXFDLFNBQVEsd0JBQXdCO0lBRGxGOztRQUVjLHVCQUFrQixHQUFHLEtBQUssQ0FBQztLQXVZeEM7SUFwWW1CLGFBQWEsQ0FBQyxLQUFvQjtRQUM5QyxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMvRixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFO1lBQ2xGLE9BQU87U0FDVjtRQUVELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLHVCQUF1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USxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ3BDLENBQUM7OEdBdllRLG9DQUFvQztrSEFBcEMsb0NBQW9DOzsyRkFBcEMsb0NBQW9DO2tCQURoRCxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZmlyc3QgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBOQVZJR0FUSU9OX0tFWVMsIFNVUFBPUlRFRF9LRVlTIH0gZnJvbSAnLi4vLi4vY29yZS91dGlscyc7XG5pbXBvcnQgeyBHcmlkVHlwZSwgSVBhdGhTZWdtZW50LCBSb3dUeXBlIH0gZnJvbSAnLi4vY29tbW9uL2dyaWQuaW50ZXJmYWNlJztcbmltcG9ydCB7IElBY3RpdmVOb2RlLCBJZ3hHcmlkTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9ncmlkLW5hdmlnYXRpb24uc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBJZ3hIaWVyYXJjaGljYWxHcmlkTmF2aWdhdGlvblNlcnZpY2UgZXh0ZW5kcyBJZ3hHcmlkTmF2aWdhdGlvblNlcnZpY2Uge1xuICAgIHByb3RlY3RlZCBfcGVuZGluZ05hdmlnYXRpb24gPSBmYWxzZTtcblxuXG4gICAgcHVibGljIG92ZXJyaWRlIGRpc3BhdGNoRXZlbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgY29uc3Qga2V5ID0gZXZlbnQua2V5LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGlmICghdGhpcy5hY3RpdmVOb2RlIHx8ICEoU1VQUE9SVEVEX0tFWVMuaGFzKGtleSkgfHwgKGtleSA9PT0gJ3RhYicgJiYgdGhpcy5ncmlkLmNydWRTZXJ2aWNlLmNlbGwpKSAmJlxuICAgICAgICAgICAgIXRoaXMuZ3JpZC5jcnVkU2VydmljZS5yb3dFZGl0aW5nQmxvY2tlZCAmJiAhdGhpcy5ncmlkLmNydWRTZXJ2aWNlLnJvd0luRWRpdE1vZGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRhcmdldEdyaWQgPSB0aGlzLmdldENsb3Nlc3RFbGVtQnlUYWcoZXZlbnQudGFyZ2V0LCAnaWd4LWhpZXJhcmNoaWNhbC1ncmlkJyk7XG4gICAgICAgIGlmICh0YXJnZXRHcmlkICE9PSB0aGlzLmdyaWQubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX3BlbmRpbmdOYXZpZ2F0aW9uICYmIE5BVklHQVRJT05fS0VZUy5oYXMoa2V5KSkge1xuICAgICAgICAgICAgLy8gSW4gY2FzZSBmb2N1cyBuZWVkcyB0byBiZSBtb3ZlZCBmcm9tIG9uZSBncmlkIHRvIGFub3RoZXIsIGhvd2V2ZXIgdGhlcmUgaXMgYSBwZW5kaW5nIHNjcm9sbCBvcGVyYXRpb25cbiAgICAgICAgICAgIC8vIHdoaWNoIGlzIGFuIGFzeW5jIG9wZXJhdGlvbiwgYW55IGFkZGl0aW9uYWwgbmF2aWdhdGlvbiBrZXlzIHNob3VsZCBiZSBpZ25vcmVkXG4gICAgICAgICAgICAvLyB1bnRpbGwgb3BlcmF0aW9uIGNvbXBsZXRlLlxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzdXBlci5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgbmF2aWdhdGVJbkJvZHkocm93SW5kZXgsIHZpc2libGVDb2xJbmRleCwgY2I6IChhcmc6IGFueSkgPT4gdm9pZCA9IG51bGwpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmVjID0gdGhpcy5ncmlkLmRhdGFWaWV3W3Jvd0luZGV4XTtcbiAgICAgICAgaWYgKHJlYyAmJiB0aGlzLmdyaWQuaXNDaGlsZEdyaWRSZWNvcmQocmVjKSkge1xuICAgICAgICAgICAgIC8vIHRhcmdldCBpcyBjaGlsZCBncmlkXG4gICAgICAgICAgICBjb25zdCB2aXJ0U3RhdGUgPSB0aGlzLmdyaWQudmVydGljYWxTY3JvbGxDb250YWluZXIuc3RhdGU7XG4gICAgICAgICAgICAgY29uc3QgaW5WaWV3ID0gcm93SW5kZXggPj0gdmlydFN0YXRlLnN0YXJ0SW5kZXggJiYgcm93SW5kZXggPD0gdmlydFN0YXRlLnN0YXJ0SW5kZXggKyB2aXJ0U3RhdGUuY2h1bmtTaXplO1xuICAgICAgICAgICAgIGNvbnN0IGlzTmV4dCA9ICB0aGlzLmFjdGl2ZU5vZGUucm93IDwgcm93SW5kZXg7XG4gICAgICAgICAgICAgY29uc3QgdGFyZ2V0TGF5b3V0SW5kZXggPSBpc05leHQgPyBudWxsIDogdGhpcy5ncmlkLmNoaWxkTGF5b3V0S2V5cy5sZW5ndGggLSAxO1xuICAgICAgICAgICAgIGlmIChpblZpZXcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9tb3ZlVG9DaGlsZChyb3dJbmRleCwgdmlzaWJsZUNvbEluZGV4LCBpc05leHQsIHRhcmdldExheW91dEluZGV4LCBjYik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGxldCBzY3JvbGxBbW91bnQgPSB0aGlzLmdyaWQudmVydGljYWxTY3JvbGxDb250YWluZXIuZ2V0U2Nyb2xsRm9ySW5kZXgocm93SW5kZXgsICFpc05leHQpO1xuICAgICAgICAgICAgICAgIHNjcm9sbEFtb3VudCArPSBpc05leHQgPyAxIDogLTE7XG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkLnZlcnRpY2FsU2Nyb2xsQ29udGFpbmVyLmdldFNjcm9sbCgpLnNjcm9sbFRvcCA9IHNjcm9sbEFtb3VudDtcbiAgICAgICAgICAgICAgICB0aGlzLl9wZW5kaW5nTmF2aWdhdGlvbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkLnZlcnRpY2FsU2Nyb2xsQ29udGFpbmVyLmNodW5rTG9hZC5waXBlKGZpcnN0KCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX21vdmVUb0NoaWxkKHJvd0luZGV4LCB2aXNpYmxlQ29sSW5kZXgsIGlzTmV4dCwgdGFyZ2V0TGF5b3V0SW5kZXgsIGNiKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcGVuZGluZ05hdmlnYXRpb24gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGlzTGFzdCA9IHJvd0luZGV4ID09PSB0aGlzLmdyaWQuZGF0YVZpZXcubGVuZ3RoO1xuICAgICAgICBpZiAoKHJvd0luZGV4ID09PSAtMSB8fCBpc0xhc3QpICYmXG4gICAgICAgICAgICB0aGlzLmdyaWQucGFyZW50ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAvLyByZWFjaGVkIGVuZCBvZiBjaGlsZCBncmlkXG4gICAgICAgICAgICBjb25zdCBuZXh0U2libGluZ0luZGV4ID0gdGhpcy5uZXh0U2libGluZ0luZGV4KGlzTGFzdCk7XG4gICAgICAgICAgICBpZiAobmV4dFNpYmxpbmdJbmRleCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZC5wYXJlbnQubmF2aWdhdGlvbi5fbW92ZVRvQ2hpbGQodGhpcy5ncmlkLmNoaWxkUm93LmluZGV4LCB2aXNpYmxlQ29sSW5kZXgsIGlzTGFzdCwgbmV4dFNpYmxpbmdJbmRleCwgY2IpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9tb3ZlVG9QYXJlbnQoaXNMYXN0LCB2aXNpYmxlQ29sSW5kZXgsIGNiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmdyaWQucGFyZW50KSB7XG4gICAgICAgICAgICBjb25zdCBpc05leHQgPSB0aGlzLmFjdGl2ZU5vZGUgJiYgdHlwZW9mIHRoaXMuYWN0aXZlTm9kZS5yb3cgPT09ICdudW1iZXInID8gcm93SW5kZXggPiB0aGlzLmFjdGl2ZU5vZGUucm93IDogZmFsc2U7XG4gICAgICAgICAgICBjb25zdCBjYkhhbmRsZXIgPSAoYXJncykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2hhbmRsZVNjcm9sbEluQ2hpbGQocm93SW5kZXgsIGlzTmV4dCk7XG4gICAgICAgICAgICAgICAgY2IoYXJncyk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKCF0aGlzLmFjdGl2ZU5vZGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZU5vZGUgPSB7IHJvdzogbnVsbCwgY29sdW1uOiBudWxsIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzdXBlci5uYXZpZ2F0ZUluQm9keShyb3dJbmRleCwgdmlzaWJsZUNvbEluZGV4LCBjYkhhbmRsZXIpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLmFjdGl2ZU5vZGUpIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlTm9kZSA9IHsgcm93OiBudWxsLCBjb2x1bW46IG51bGwgfTtcbiAgICAgICAgfVxuICAgICAgICBzdXBlci5uYXZpZ2F0ZUluQm9keShyb3dJbmRleCwgdmlzaWJsZUNvbEluZGV4LCBjYik7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIHNob3VsZFBlcmZvcm1WZXJ0aWNhbFNjcm9sbChpbmRleCwgdmlzaWJsZUNvbHVtbkluZGV4ID0gLTEsIGlzTmV4dD8pIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0UmVjID0gdGhpcy5ncmlkLmRhdGFWaWV3W2luZGV4XTtcbiAgICAgICAgaWYgKHRoaXMuZ3JpZC5pc0NoaWxkR3JpZFJlY29yZCh0YXJnZXRSZWMpKSB7XG4gICAgICAgICAgICBjb25zdCBzY3JvbGxBbW91bnQgPSB0aGlzLmdyaWQudmVydGljYWxTY3JvbGxDb250YWluZXIuZ2V0U2Nyb2xsRm9ySW5kZXgoaW5kZXgsICFpc05leHQpO1xuICAgICAgICAgICAgY29uc3QgY3VyclNjcm9sbCA9IHRoaXMuZ3JpZC52ZXJ0aWNhbFNjcm9sbENvbnRhaW5lci5nZXRTY3JvbGwoKS5zY3JvbGxUb3A7XG4gICAgICAgICAgICBjb25zdCBzaG91bGRTY3JvbGwgPSAhaXNOZXh0ID8gc2Nyb2xsQW1vdW50ID4gY3VyclNjcm9sbCA6IGN1cnJTY3JvbGwgPCBzY3JvbGxBbW91bnQ7XG4gICAgICAgICAgICByZXR1cm4gc2hvdWxkU2Nyb2xsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHN1cGVyLnNob3VsZFBlcmZvcm1WZXJ0aWNhbFNjcm9sbChpbmRleCwgdmlzaWJsZUNvbHVtbkluZGV4KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBmb2N1c1Rib2R5KGV2ZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5hY3RpdmVOb2RlIHx8IHRoaXMuYWN0aXZlTm9kZS5yb3cgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlTm9kZSA9IHtcbiAgICAgICAgICAgICAgICByb3c6IDAsXG4gICAgICAgICAgICAgICAgY29sdW1uOiAwXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB0aGlzLmdyaWQubmF2aWdhdGVUbygwLCAwLCAob2JqKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkLmNsZWFyQ2VsbFNlbGVjdGlvbigpO1xuICAgICAgICAgICAgICAgIG9iai50YXJnZXQuYWN0aXZhdGUoZXZlbnQpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN1cGVyLmZvY3VzVGJvZHkoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG5leHRTaWJsaW5nSW5kZXgoaXNOZXh0KSB7XG4gICAgICAgIGNvbnN0IGxheW91dEtleSA9IHRoaXMuZ3JpZC5jaGlsZFJvdy5sYXlvdXQua2V5O1xuICAgICAgICBjb25zdCBsYXlvdXRJbmRleCA9IHRoaXMuZ3JpZC5wYXJlbnQuY2hpbGRMYXlvdXRLZXlzLmluZGV4T2YobGF5b3V0S2V5KTtcbiAgICAgICAgY29uc3QgbmV4dEluZGV4ID0gaXNOZXh0ID8gbGF5b3V0SW5kZXggKyAxIDogbGF5b3V0SW5kZXggLSAxO1xuICAgICAgICBpZiAobmV4dEluZGV4IDw9IHRoaXMuZ3JpZC5wYXJlbnQuY2hpbGRMYXlvdXRLZXlzLmxlbmd0aCAtIDEgJiYgbmV4dEluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXh0SW5kZXg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhbmRsZXMgc2Nyb2xsaW5nIGluIGNoaWxkIGdyaWQgYW5kIGVuc3VyZXMgdGFyZ2V0IGNoaWxkIHJvdyBpcyBpbiBtYWluIGdyaWQgdmlldyBwb3J0LlxuICAgICAqXG4gICAgICogQHBhcmFtIHJvd0luZGV4IFRoZSByb3cgaW5kZXggd2hpY2ggc2hvdWxkIGJlIGluIHZpZXcuXG4gICAgICogQHBhcmFtIGlzTmV4dCAgT3B0aW9uYWwuIFdoZXRoZXIgd2UgYXJlIG5hdmlnYXRpbmcgdG8gbmV4dC4gVXNlZCB0byBkZXRlcm1pbmUgc2Nyb2xsIGRpcmVjdGlvbi5cbiAgICAgKiBAcGFyYW0gY2IgIE9wdGlvbmFsLkNhbGxiYWNrIGZ1bmN0aW9uIGNhbGxlZCB3aGVuIG9wZXJhdGlvbiBpcyBjb21wbGV0ZS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX2hhbmRsZVNjcm9sbEluQ2hpbGQocm93SW5kZXg6IG51bWJlciwgaXNOZXh0PzogYm9vbGVhbiwgY2I/OiAoKSA9PiB2b2lkKSB7XG4gICAgICAgIGNvbnN0IHNob3VsZFNjcm9sbCA9IHRoaXMuc2hvdWxkUGVyZm9ybVZlcnRpY2FsU2Nyb2xsKHJvd0luZGV4LCAtMSwgaXNOZXh0KTtcbiAgICAgICAgaWYgKHNob3VsZFNjcm9sbCkge1xuICAgICAgICAgICAgdGhpcy5ncmlkLm5hdmlnYXRpb24ucGVyZm9ybVZlcnRpY2FsU2Nyb2xsVG9DZWxsKHJvd0luZGV4LCAtMSwgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucG9zaXRpb25JblBhcmVudChyb3dJbmRleCwgaXNOZXh0LCBjYik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25JblBhcmVudChyb3dJbmRleCwgaXNOZXh0LCBjYik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqIEBwYXJhbSByb3dJbmRleCBSb3cgaW5kZXggdGhhdCBzaG91bGQgY29tZSBpbiB2aWV3LlxuICAgICAqIEBwYXJhbSBpc05leHQgIFdoZXRoZXIgd2UgYXJlIG5hdmlnYXRpbmcgdG8gbmV4dC4gVXNlZCB0byBkZXRlcm1pbmUgc2Nyb2xsIGRpcmVjdGlvbi5cbiAgICAgKiBAcGFyYW0gY2IgIE9wdGlvbmFsLkNhbGxiYWNrIGZ1bmN0aW9uIGNhbGxlZCB3aGVuIG9wZXJhdGlvbiBpcyBjb21wbGV0ZS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcG9zaXRpb25JblBhcmVudChyb3dJbmRleCwgaXNOZXh0LCBjYj86ICgpID0+IHZvaWQpIHtcbiAgICAgICAgY29uc3Qgcm93ID0gdGhpcy5ncmlkLmdyaWRBUEkuZ2V0X3Jvd19ieV9pbmRleChyb3dJbmRleCk7XG4gICAgICAgIGlmICghcm93KSB7XG4gICAgICAgICAgICBpZiAoY2IpIHtcbiAgICAgICAgICAgICAgICBjYigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uSW5mbyA9IHRoaXMuZ2V0UG9zaXRpb25JbmZvKHJvdywgaXNOZXh0KTtcbiAgICAgICAgaWYgKCFwb3NpdGlvbkluZm8uaW5WaWV3KSB7XG4gICAgICAgICAgICAvLyBzdG9wIGV2ZW50IGZyb20gdHJpZ2dlcmluZyBtdWx0aXBsZSB0aW1lcyBiZWZvcmUgc2Nyb2xsaW5nIGlzIGNvbXBsZXRlLlxuICAgICAgICAgICAgdGhpcy5fcGVuZGluZ05hdmlnYXRpb24gPSB0cnVlO1xuICAgICAgICAgICAgY29uc3Qgc2Nyb2xsYWJsZUdyaWQgPSBpc05leHQgPyB0aGlzLmdldE5leHRTY3JvbGxhYmxlRG93bih0aGlzLmdyaWQpIDogdGhpcy5nZXROZXh0U2Nyb2xsYWJsZVVwKHRoaXMuZ3JpZCk7XG4gICAgICAgICAgICBzY3JvbGxhYmxlR3JpZC5ncmlkLnZlcnRpY2FsU2Nyb2xsQ29udGFpbmVyLnJlY2FsY1VwZGF0ZVNpemVzKCk7XG4gICAgICAgICAgICBzY3JvbGxhYmxlR3JpZC5ncmlkLnZlcnRpY2FsU2Nyb2xsQ29udGFpbmVyLmFkZFNjcm9sbFRvcChwb3NpdGlvbkluZm8ub2Zmc2V0KTtcbiAgICAgICAgICAgIHNjcm9sbGFibGVHcmlkLmdyaWQudmVydGljYWxTY3JvbGxDb250YWluZXIuY2h1bmtMb2FkLnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9wZW5kaW5nTmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlmIChjYikge1xuICAgICAgICAgICAgICAgICAgICBjYigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGNiKSB7XG4gICAgICAgICAgICAgICAgY2IoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1vdmVzIG5hdmlnYXRpb24gdG8gY2hpbGQgZ3JpZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwYXJlbnRSb3dJbmRleCBUaGUgcGFyZW50IHJvdyBpbmRleCwgYXQgd2hpY2ggdGhlIGNoaWxkIGdyaWQgaXMgcmVuZGVyZWQuXG4gICAgICogQHBhcmFtIGNoaWxkTGF5b3V0SW5kZXggT3B0aW9uYWwuIFRoZSBpbmRleCBvZiB0aGUgY2hpbGQgcm93IGlzbGFuZCB0byB3aGljaCB0aGUgY2hpbGQgZ3JpZCBiZWxvbmdzIHRvLiBVc2VzIGZpcnN0IGlmIG5vdCBzZXQuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9tb3ZlVG9DaGlsZChwYXJlbnRSb3dJbmRleDogbnVtYmVyLCB2aXNpYmxlQ29sSW5kZXg6IG51bWJlciwgaXNOZXh0OiBib29sZWFuLCBjaGlsZExheW91dEluZGV4PzogbnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNiPzogKGFyZzogYW55KSA9PiB2b2lkKSB7XG4gICAgICAgIGNvbnN0IHJpID0gdHlwZW9mIGNoaWxkTGF5b3V0SW5kZXggIT09ICdudW1iZXInID9cbiAgICAgICAgIHRoaXMuZ3JpZC5jaGlsZExheW91dExpc3QuZmlyc3QgOiB0aGlzLmdyaWQuY2hpbGRMYXlvdXRMaXN0LnRvQXJyYXkoKVtjaGlsZExheW91dEluZGV4XTtcbiAgICAgICAgY29uc3Qgcm93SWQgPSB0aGlzLmdyaWQuZGF0YVZpZXdbcGFyZW50Um93SW5kZXhdLnJvd0lEO1xuICAgICAgICBjb25zdCBwYXRoU2VnbWVudDogSVBhdGhTZWdtZW50ID0ge1xuICAgICAgICAgICAgcm93SUQ6IHJvd0lkLFxuICAgICAgICAgICAgcm93SXNsYW5kS2V5OiByaS5rZXlcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgY2hpbGRHcmlkID0gIHRoaXMuZ3JpZC5ncmlkQVBJLmdldENoaWxkR3JpZChbcGF0aFNlZ21lbnRdKTtcbiAgICAgICAgY29uc3QgdGFyZ2V0SW5kZXggPSBpc05leHQgPyAwIDogY2hpbGRHcmlkLmRhdGFWaWV3Lmxlbmd0aCAtIDE7XG4gICAgICAgIGNvbnN0IHRhcmdldFJlYyA9ICBjaGlsZEdyaWQuZGF0YVZpZXdbdGFyZ2V0SW5kZXhdO1xuICAgICAgICBpZiAoIXRhcmdldFJlYykge1xuICAgICAgICAgICAgLy8gaWYgbm8gdGFyZ2V0IHJlYywgdGhlbiBtb3ZlIG9uIGluIG5leHQgc2libGluZyBvciBwYXJlbnRcbiAgICAgICAgICAgIGNoaWxkR3JpZC5uYXZpZ2F0aW9uLm5hdmlnYXRlSW5Cb2R5KHRhcmdldEluZGV4LCB2aXNpYmxlQ29sSW5kZXgsIGNiKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hpbGRHcmlkLmlzQ2hpbGRHcmlkUmVjb3JkKHRhcmdldFJlYykpIHtcbiAgICAgICAgICAgIC8vIGlmIHRhcmdldCBpcyBhIGNoaWxkIGdyaWQgcmVjb3JkIHNob3VsZCBtb3ZlIGludG8gaXQuXG4gICAgICAgICAgICB0aGlzLmdyaWQubmF2aWdhdGlvbi5hY3RpdmVOb2RlLnJvdyA9IG51bGw7XG4gICAgICAgICAgICBjaGlsZEdyaWQubmF2aWdhdGlvbi5hY3RpdmVOb2RlID0geyByb3c6IHRhcmdldEluZGV4LCBjb2x1bW46IHRoaXMuYWN0aXZlTm9kZS5jb2x1bW59O1xuICAgICAgICAgICAgY2hpbGRHcmlkLm5hdmlnYXRpb24uX2hhbmRsZVNjcm9sbEluQ2hpbGQodGFyZ2V0SW5kZXgsIGlzTmV4dCwgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldExheW91dEluZGV4ID0gaXNOZXh0ID8gMCA6IGNoaWxkR3JpZC5jaGlsZExheW91dExpc3QudG9BcnJheSgpLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICAgICAgY2hpbGRHcmlkLm5hdmlnYXRpb24uX21vdmVUb0NoaWxkKHRhcmdldEluZGV4LCB2aXNpYmxlQ29sSW5kZXgsIGlzTmV4dCwgdGFyZ2V0TGF5b3V0SW5kZXgsIGNiKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY2hpbGRHcmlkTmF2ID0gIGNoaWxkR3JpZC5uYXZpZ2F0aW9uO1xuICAgICAgICB0aGlzLmNsZWFyQWN0aXZhdGlvbigpO1xuICAgICAgICBjb25zdCBsYXN0VmlzaWJsZUluZGV4ID0gY2hpbGRHcmlkTmF2Lmxhc3RDb2x1bW5JbmRleDtcbiAgICAgICAgY29uc3QgY29sdW1uSW5kZXggPSB2aXNpYmxlQ29sSW5kZXggPD0gbGFzdFZpc2libGVJbmRleCA/IHZpc2libGVDb2xJbmRleCA6IGxhc3RWaXNpYmxlSW5kZXg7XG4gICAgICAgIGNoaWxkR3JpZE5hdi5hY3RpdmVOb2RlID0geyByb3c6IHRhcmdldEluZGV4LCBjb2x1bW46IGNvbHVtbkluZGV4fTtcbiAgICAgICAgY2hpbGRHcmlkLnRib2R5Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoe3ByZXZlbnRTY3JvbGw6IHRydWV9KTtcbiAgICAgICAgdGhpcy5fcGVuZGluZ05hdmlnYXRpb24gPSBmYWxzZTtcbiAgICAgICAgY2hpbGRHcmlkLm5hdmlnYXRpb24uX2hhbmRsZVNjcm9sbEluQ2hpbGQodGFyZ2V0SW5kZXgsIGlzTmV4dCwgKCkgPT4ge1xuICAgICAgICAgICAgY2hpbGRHcmlkLm5hdmlnYXRlVG8odGFyZ2V0SW5kZXgsIGNvbHVtbkluZGV4LCBjYik7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1vdmVzIG5hdmlnYXRpb24gYmFjayB0byBwYXJlbnQgZ3JpZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByb3dJbmRleFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfbW92ZVRvUGFyZW50KGlzTmV4dDogYm9vbGVhbiwgY29sdW1uSW5kZXgsIGNiPykge1xuICAgICAgICBjb25zdCBpbmRleEluUGFyZW50ID0gdGhpcy5ncmlkLmNoaWxkUm93LmluZGV4O1xuICAgICAgICBjb25zdCBoYXNOZXh0VGFyZ2V0ID0gdGhpcy5oYXNOZXh0VGFyZ2V0KHRoaXMuZ3JpZC5wYXJlbnQsIGluZGV4SW5QYXJlbnQsIGlzTmV4dCk7XG4gICAgICAgIGlmICghaGFzTmV4dFRhcmdldCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2xlYXJBY3RpdmF0aW9uKCk7XG4gICAgICAgIGNvbnN0IHRhcmdldFJvd0luZGV4ID0gIGlzTmV4dCA/IGluZGV4SW5QYXJlbnQgKyAxIDogaW5kZXhJblBhcmVudCAtIDE7XG4gICAgICAgIGNvbnN0IGxhc3RWaXNpYmxlSW5kZXggPSB0aGlzLmdyaWQucGFyZW50Lm5hdmlnYXRpb24ubGFzdENvbHVtbkluZGV4O1xuICAgICAgICBjb25zdCBuZXh0Q29sdW1uSW5kZXggPSBjb2x1bW5JbmRleCA8PSBsYXN0VmlzaWJsZUluZGV4ID8gY29sdW1uSW5kZXggOiBsYXN0VmlzaWJsZUluZGV4O1xuICAgICAgICB0aGlzLl9wZW5kaW5nTmF2aWdhdGlvbiA9IHRydWU7XG4gICAgICAgIGNvbnN0IGNiRnVuYyA9IChhcmdzKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9wZW5kaW5nTmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICAgICAgY2IoYXJncyk7XG4gICAgICAgICAgICBhcmdzLnRhcmdldC5ncmlkLnRib2R5Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5ncmlkLnBhcmVudC5uYXZpZ2F0aW9uLm5hdmlnYXRlSW5Cb2R5KHRhcmdldFJvd0luZGV4LCBuZXh0Q29sdW1uSW5kZXgsIGNiRnVuYyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBpbmZvcm1hdGlvbiBvbiB0aGUgcm93IHBvc2l0aW9uIHJlbGF0aXZlIHRvIHRoZSByb290IGdyaWQgdmlldyBwb3J0LlxuICAgICAqIFJldHVybnMgd2hldGhlciB0aGUgcm93IGlzIGluIHZpZXcgYW5kIGl0cyBvZmZzZXQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcm93T2JqXG4gICAgICogQHBhcmFtIGlzTmV4dFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBnZXRQb3NpdGlvbkluZm8ocm93OiBSb3dUeXBlLCBpc05leHQ6IGJvb2xlYW4pIHtcbiAgICAgICAgLy8gWFhYOiBGaXggdHlwZVxuICAgICAgICBsZXQgcm93RWxlbSA9IHJvdy5uYXRpdmVFbGVtZW50O1xuICAgICAgICBpZiAoKHJvdyBhcyBhbnkpLmxheW91dCkge1xuICAgICAgICAgICAgY29uc3QgY2hpbGRMYXlvdXRLZXlzID0gdGhpcy5ncmlkLmNoaWxkTGF5b3V0S2V5cztcbiAgICAgICAgICAgIGNvbnN0IHJpS2V5ID0gaXNOZXh0ID8gY2hpbGRMYXlvdXRLZXlzWzBdIDogY2hpbGRMYXlvdXRLZXlzW2NoaWxkTGF5b3V0S2V5cy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgIGNvbnN0IHBhdGhTZWdtZW50OiBJUGF0aFNlZ21lbnQgPSB7XG4gICAgICAgICAgICAgICAgcm93SUQ6IHJvdy5kYXRhLnJvd0lELFxuICAgICAgICAgICAgICAgIHJvd0lzbGFuZEtleTogcmlLZXlcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zdCBjaGlsZEdyaWQgPSAgdGhpcy5ncmlkLmdyaWRBUEkuZ2V0Q2hpbGRHcmlkKFtwYXRoU2VnbWVudF0pO1xuICAgICAgICAgICAgcm93RWxlbSA9IGNoaWxkR3JpZC50Zm9vdC5uYXRpdmVFbGVtZW50O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGdyaWRCb3R0b20gPSB0aGlzLl9nZXRNaW5Cb3R0b20odGhpcy5ncmlkKTtcbiAgICAgICAgY29uc3QgZGlmZkJvdHRvbSA9XG4gICAgICAgIHJvd0VsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tIC0gZ3JpZEJvdHRvbTtcbiAgICAgICAgY29uc3QgZ3JpZFRvcCA9IHRoaXMuX2dldE1heFRvcCh0aGlzLmdyaWQpO1xuICAgICAgICBjb25zdCBkaWZmVG9wID0gcm93RWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5ib3R0b20gLVxuICAgICAgICByb3dFbGVtLm9mZnNldEhlaWdodCAtIGdyaWRUb3A7XG4gICAgICAgIC8vIEFkZGluZyBNYXRoLlJvdW5kIGJlY2F1c2UgQ2hyb21lIGhhcyBzb21lIGluY29uc2lzdGVuY2llcyB3aGVuIHRoZSBwYWdlIGlzIHpvb21lZFxuICAgICAgICBjb25zdCBpc0luVmlldyA9IGlzTmV4dCA/IE1hdGgucm91bmQoZGlmZkJvdHRvbSkgPD0gMCA6IE1hdGgucm91bmQoZGlmZlRvcCkgPj0gMDtcbiAgICAgICAgY29uc3QgY2FsY09mZnNldCA9ICBpc05leHQgPyBkaWZmQm90dG9tIDogZGlmZlRvcDtcblxuICAgICAgICByZXR1cm4geyBpblZpZXc6IGlzSW5WaWV3LCBvZmZzZXQ6IGNhbGNPZmZzZXQgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGNsb3Nlc3QgZWxlbWVudCBieSBpdHMgdGFnIG5hbWUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc291cmNlRWxlbSBUaGUgZWxlbWVudCBmcm9tIHdoaWNoIHRvIHN0YXJ0IHRoZSBzZWFyY2guXG4gICAgICogQHBhcmFtIHRhcmdldFRhZyBUaGUgdGFyZ2V0IGVsZW1lbnQgdGFnIG5hbWUsIGZvciB3aGljaCB0byBzZWFyY2guXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGdldENsb3Nlc3RFbGVtQnlUYWcoc291cmNlRWxlbSwgdGFyZ2V0VGFnKSB7XG4gICAgICAgIGxldCByZXN1bHQgPSBzb3VyY2VFbGVtO1xuICAgICAgICB3aGlsZSAocmVzdWx0ICE9PSBudWxsICYmIHJlc3VsdC5ub2RlVHlwZSA9PT0gMSkge1xuICAgICAgICAgICAgaWYgKHJlc3VsdC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09IHRhcmdldFRhZy50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5wYXJlbnROb2RlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xlYXJBY3RpdmF0aW9uKCkge1xuICAgICAgICAvLyBjbGVhciBpZiBwcmV2aW91cyBhY3RpdmF0aW9uIGV4aXN0cy5cbiAgICAgICAgaWYgKHRoaXMuYWN0aXZlTm9kZSAmJiBPYmplY3Qua2V5cyh0aGlzLmFjdGl2ZU5vZGUpLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVOb2RlID0gT2JqZWN0LmFzc2lnbih7fSBhcyBJQWN0aXZlTm9kZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGhhc05leHRUYXJnZXQoZ3JpZDogR3JpZFR5cGUsIGluZGV4OiBudW1iZXIsIGlzTmV4dDogYm9vbGVhbikge1xuICAgICAgICBjb25zdCB0YXJnZXRSb3dJbmRleCA9ICBpc05leHQgPyBpbmRleCArIDEgOiBpbmRleCAtIDE7XG4gICAgICAgIGNvbnN0IGhhc1RhcmdldFJlY29yZCA9ICEhZ3JpZC5kYXRhVmlld1t0YXJnZXRSb3dJbmRleF07XG4gICAgICAgIGlmIChoYXNUYXJnZXRSZWNvcmQpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IGhhc1RhcmdldFJlY29yZEluUGFyZW50ID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAoZ3JpZC5wYXJlbnQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpbmRleEluUGFyZW50ID0gZ3JpZC5jaGlsZFJvdy5pbmRleDtcbiAgICAgICAgICAgICAgICBoYXNUYXJnZXRSZWNvcmRJblBhcmVudCA9IHRoaXMuaGFzTmV4dFRhcmdldChncmlkLnBhcmVudCwgaW5kZXhJblBhcmVudCwgaXNOZXh0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBoYXNUYXJnZXRSZWNvcmRJblBhcmVudDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIG1heCB0b3AgdmlldyBpbiB0aGUgY3VycmVudCBncmlkIGhpZXJhcmNoeS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBncmlkXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZ2V0TWF4VG9wKGdyaWQpIHtcbiAgICAgICAgbGV0IGN1cnJHcmlkID0gZ3JpZDtcbiAgICAgICAgbGV0IHRvcCA9IGN1cnJHcmlkLnRib2R5Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wO1xuICAgICAgICB3aGlsZSAoY3VyckdyaWQucGFyZW50KSB7XG4gICAgICAgICAgICBjdXJyR3JpZCA9IGN1cnJHcmlkLnBhcmVudDtcbiAgICAgICAgICAgIGNvbnN0IHBpbm5lZFJvd3NIZWlnaHQgPSBjdXJyR3JpZC5oYXNQaW5uZWRSZWNvcmRzICYmIGN1cnJHcmlkLmlzUm93UGlubmluZ1RvVG9wID8gY3VyckdyaWQucGlubmVkUm93SGVpZ2h0IDogMDtcbiAgICAgICAgICAgIHRvcCA9IE1hdGgubWF4KHRvcCwgY3VyckdyaWQudGJvZHkubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgKyBwaW5uZWRSb3dzSGVpZ2h0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdG9wO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIG1pbiBib3R0b20gdmlldyBpbiB0aGUgY3VycmVudCBncmlkIGhpZXJhcmNoeS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBncmlkXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZ2V0TWluQm90dG9tKGdyaWQpIHtcbiAgICAgICAgbGV0IGN1cnJHcmlkID0gZ3JpZDtcbiAgICAgICAgbGV0IGJvdHRvbSA9IGN1cnJHcmlkLnRib2R5Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tO1xuICAgICAgICB3aGlsZSAoY3VyckdyaWQucGFyZW50KSB7XG4gICAgICAgICAgICBjdXJyR3JpZCA9IGN1cnJHcmlkLnBhcmVudDtcbiAgICAgICAgICAgIGNvbnN0IHBpbm5lZFJvd3NIZWlnaHQgPSBjdXJyR3JpZC5oYXNQaW5uZWRSZWNvcmRzICYmICFjdXJyR3JpZC5pc1Jvd1Bpbm5pbmdUb1RvcCA/IGN1cnJHcmlkLnBpbm5lZFJvd0hlaWdodCA6IDA7XG4gICAgICAgICAgICBib3R0b20gPSBNYXRoLm1pbihib3R0b20sIGN1cnJHcmlkLnRib2R5Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tIC0gcGlubmVkUm93c0hlaWdodCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGJvdHRvbTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGaW5kcyB0aGUgbmV4dCBncmlkIHRoYXQgYWxsb3dzIHNjcm9sbGluZyBkb3duLlxuICAgICAqXG4gICAgICogQHBhcmFtIGdyaWQgVGhlIGdyaWQgZnJvbSB3aGljaCB0byBiZWdpbiB0aGUgc2VhcmNoLlxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0TmV4dFNjcm9sbGFibGVEb3duKGdyaWQpIHtcbiAgICAgICAgbGV0IGN1cnJHcmlkID0gZ3JpZC5wYXJlbnQ7XG4gICAgICAgIGlmICghY3VyckdyaWQpIHtcbiAgICAgICAgICAgIHJldHVybiB7IGdyaWQsIHByZXY6IG51bGwgfTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgc2Nyb2xsVG9wID0gY3VyckdyaWQudmVydGljYWxTY3JvbGxDb250YWluZXIuc2Nyb2xsUG9zaXRpb247XG4gICAgICAgIGxldCBzY3JvbGxIZWlnaHQgPSBjdXJyR3JpZC52ZXJ0aWNhbFNjcm9sbENvbnRhaW5lci5nZXRTY3JvbGwoKS5zY3JvbGxIZWlnaHQ7XG4gICAgICAgIGxldCBub25TY3JvbGxhYmxlID0gc2Nyb2xsSGVpZ2h0ID09PSAwIHx8XG4gICAgICAgICAgICBNYXRoLnJvdW5kKHNjcm9sbFRvcCArIGN1cnJHcmlkLnZlcnRpY2FsU2Nyb2xsQ29udGFpbmVyLmlneEZvckNvbnRhaW5lclNpemUpID09PSBzY3JvbGxIZWlnaHQ7XG4gICAgICAgIGxldCBwcmV2ID0gZ3JpZDtcbiAgICAgICAgd2hpbGUgKG5vblNjcm9sbGFibGUgJiYgY3VyckdyaWQucGFyZW50ICE9PSBudWxsKSB7XG4gICAgICAgICAgICBwcmV2ID0gY3VyckdyaWQ7XG4gICAgICAgICAgICBjdXJyR3JpZCA9IGN1cnJHcmlkLnBhcmVudDtcbiAgICAgICAgICAgIHNjcm9sbFRvcCA9IGN1cnJHcmlkLnZlcnRpY2FsU2Nyb2xsQ29udGFpbmVyLnNjcm9sbFBvc2l0aW9uO1xuICAgICAgICAgICAgc2Nyb2xsSGVpZ2h0ID0gY3VyckdyaWQudmVydGljYWxTY3JvbGxDb250YWluZXIuZ2V0U2Nyb2xsKCkuc2Nyb2xsSGVpZ2h0O1xuICAgICAgICAgICAgbm9uU2Nyb2xsYWJsZSA9IHNjcm9sbEhlaWdodCA9PT0gMCB8fFxuICAgICAgICAgICAgICAgIE1hdGgucm91bmQoc2Nyb2xsVG9wICsgY3VyckdyaWQudmVydGljYWxTY3JvbGxDb250YWluZXIuaWd4Rm9yQ29udGFpbmVyU2l6ZSkgPT09IHNjcm9sbEhlaWdodDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBncmlkOiBjdXJyR3JpZCwgcHJldiB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZpbmRzIHRoZSBuZXh0IGdyaWQgdGhhdCBhbGxvd3Mgc2Nyb2xsaW5nIHVwLlxuICAgICAqXG4gICAgICogQHBhcmFtIGdyaWQgVGhlIGdyaWQgZnJvbSB3aGljaCB0byBiZWdpbiB0aGUgc2VhcmNoLlxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0TmV4dFNjcm9sbGFibGVVcChncmlkKSB7XG4gICAgICAgIGxldCBjdXJyR3JpZCA9IGdyaWQucGFyZW50O1xuICAgICAgICBpZiAoIWN1cnJHcmlkKSB7XG4gICAgICAgICAgICByZXR1cm4geyBncmlkLCBwcmV2OiBudWxsIH07XG4gICAgICAgIH1cbiAgICAgICAgbGV0IG5vblNjcm9sbGFibGUgPSBjdXJyR3JpZC52ZXJ0aWNhbFNjcm9sbENvbnRhaW5lci5zY3JvbGxQb3NpdGlvbiA9PT0gMDtcbiAgICAgICAgbGV0IHByZXYgPSBncmlkO1xuICAgICAgICB3aGlsZSAobm9uU2Nyb2xsYWJsZSAmJiBjdXJyR3JpZC5wYXJlbnQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHByZXYgPSBjdXJyR3JpZDtcbiAgICAgICAgICAgIGN1cnJHcmlkID0gY3VyckdyaWQucGFyZW50O1xuICAgICAgICAgICAgbm9uU2Nyb2xsYWJsZSA9IGN1cnJHcmlkLnZlcnRpY2FsU2Nyb2xsQ29udGFpbmVyLnNjcm9sbFBvc2l0aW9uID09PSAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IGdyaWQ6IGN1cnJHcmlkLCBwcmV2IH07XG4gICAgfVxufVxuIl19
|