@clr/angular 17.12.2 → 18.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -5
- package/fesm2022/clr-angular-accordion.mjs +355 -0
- package/fesm2022/clr-angular-accordion.mjs.map +1 -0
- package/fesm2022/clr-angular-button.mjs +713 -0
- package/fesm2022/clr-angular-button.mjs.map +1 -0
- package/fesm2022/clr-angular-collapsible-panel.mjs +201 -0
- package/fesm2022/clr-angular-collapsible-panel.mjs.map +1 -0
- package/fesm2022/clr-angular-data-datagrid.mjs +7601 -0
- package/fesm2022/clr-angular-data-datagrid.mjs.map +1 -0
- package/fesm2022/clr-angular-data-stack-view.mjs +442 -0
- package/fesm2022/clr-angular-data-stack-view.mjs.map +1 -0
- package/fesm2022/clr-angular-data-tree-view.mjs +1106 -0
- package/fesm2022/clr-angular-data-tree-view.mjs.map +1 -0
- package/fesm2022/clr-angular-data.mjs +9145 -0
- package/fesm2022/clr-angular-data.mjs.map +1 -0
- package/fesm2022/clr-angular-emphasis-alert.mjs +624 -0
- package/fesm2022/clr-angular-emphasis-alert.mjs.map +1 -0
- package/fesm2022/clr-angular-emphasis-badge.mjs +69 -0
- package/fesm2022/clr-angular-emphasis-badge.mjs.map +1 -0
- package/fesm2022/clr-angular-emphasis-common.mjs +25 -0
- package/fesm2022/clr-angular-emphasis-common.mjs.map +1 -0
- package/fesm2022/clr-angular-emphasis-label.mjs +105 -0
- package/fesm2022/clr-angular-emphasis-label.mjs.map +1 -0
- package/fesm2022/clr-angular-emphasis.mjs +807 -0
- package/fesm2022/clr-angular-emphasis.mjs.map +1 -0
- package/fesm2022/clr-angular-forms-checkbox.mjs +301 -0
- package/fesm2022/clr-angular-forms-checkbox.mjs.map +1 -0
- package/fesm2022/clr-angular-forms-combobox.mjs +1445 -0
- package/fesm2022/clr-angular-forms-combobox.mjs.map +1 -0
- package/fesm2022/clr-angular-forms-common.mjs +1235 -0
- package/fesm2022/clr-angular-forms-common.mjs.map +1 -0
- package/fesm2022/clr-angular-forms-datalist.mjs +275 -0
- package/fesm2022/clr-angular-forms-datalist.mjs.map +1 -0
- package/fesm2022/clr-angular-forms-datepicker.mjs +3230 -0
- package/fesm2022/clr-angular-forms-datepicker.mjs.map +1 -0
- package/fesm2022/clr-angular-forms-file-input.mjs +810 -0
- package/fesm2022/clr-angular-forms-file-input.mjs.map +1 -0
- package/fesm2022/clr-angular-forms-input.mjs +167 -0
- package/fesm2022/clr-angular-forms-input.mjs.map +1 -0
- package/fesm2022/clr-angular-forms-number-input.mjs +249 -0
- package/fesm2022/clr-angular-forms-number-input.mjs.map +1 -0
- package/fesm2022/clr-angular-forms-password.mjs +245 -0
- package/fesm2022/clr-angular-forms-password.mjs.map +1 -0
- package/fesm2022/clr-angular-forms-radio.mjs +262 -0
- package/fesm2022/clr-angular-forms-radio.mjs.map +1 -0
- package/fesm2022/clr-angular-forms-range.mjs +199 -0
- package/fesm2022/clr-angular-forms-range.mjs.map +1 -0
- package/fesm2022/clr-angular-forms-select.mjs +166 -0
- package/fesm2022/clr-angular-forms-select.mjs.map +1 -0
- package/fesm2022/clr-angular-forms-textarea.mjs +149 -0
- package/fesm2022/clr-angular-forms-textarea.mjs.map +1 -0
- package/fesm2022/clr-angular-forms.mjs +8592 -0
- package/fesm2022/clr-angular-forms.mjs.map +1 -0
- package/fesm2022/clr-angular-icon.mjs +7387 -0
- package/fesm2022/clr-angular-icon.mjs.map +1 -0
- package/fesm2022/clr-angular-layout-breadcrumbs.mjs +120 -0
- package/fesm2022/clr-angular-layout-breadcrumbs.mjs.map +1 -0
- package/fesm2022/clr-angular-layout-main-container.mjs +100 -0
- package/fesm2022/clr-angular-layout-main-container.mjs.map +1 -0
- package/fesm2022/clr-angular-layout-nav.mjs +580 -0
- package/fesm2022/clr-angular-layout-nav.mjs.map +1 -0
- package/fesm2022/clr-angular-layout-tabs.mjs +807 -0
- package/fesm2022/clr-angular-layout-tabs.mjs.map +1 -0
- package/fesm2022/clr-angular-layout-vertical-nav.mjs +507 -0
- package/fesm2022/clr-angular-layout-vertical-nav.mjs.map +1 -0
- package/fesm2022/clr-angular-layout.mjs +2086 -0
- package/fesm2022/clr-angular-layout.mjs.map +1 -0
- package/fesm2022/clr-angular-modal.mjs +618 -0
- package/fesm2022/clr-angular-modal.mjs.map +1 -0
- package/fesm2022/clr-angular-popover-common.mjs +1027 -0
- package/fesm2022/clr-angular-popover-common.mjs.map +1 -0
- package/fesm2022/clr-angular-popover-dropdown.mjs +489 -0
- package/fesm2022/clr-angular-popover-dropdown.mjs.map +1 -0
- package/fesm2022/clr-angular-popover-signpost.mjs +478 -0
- package/fesm2022/clr-angular-popover-signpost.mjs.map +1 -0
- package/fesm2022/clr-angular-popover-tooltip.mjs +293 -0
- package/fesm2022/clr-angular-popover-tooltip.mjs.map +1 -0
- package/fesm2022/clr-angular-popover.mjs +2271 -0
- package/fesm2022/clr-angular-popover.mjs.map +1 -0
- package/fesm2022/clr-angular-progress-progress-bars.mjs +217 -0
- package/fesm2022/clr-angular-progress-progress-bars.mjs.map +1 -0
- package/fesm2022/clr-angular-progress-spinner.mjs +132 -0
- package/fesm2022/clr-angular-progress-spinner.mjs.map +1 -0
- package/fesm2022/clr-angular-stepper.mjs +688 -0
- package/fesm2022/clr-angular-stepper.mjs.map +1 -0
- package/fesm2022/clr-angular-timeline.mjs +316 -0
- package/fesm2022/clr-angular-timeline.mjs.map +1 -0
- package/fesm2022/clr-angular-utils-conditional.mjs +351 -0
- package/fesm2022/clr-angular-utils-conditional.mjs.map +1 -0
- package/fesm2022/clr-angular-utils-loading.mjs +107 -0
- package/fesm2022/clr-angular-utils-loading.mjs.map +1 -0
- package/fesm2022/clr-angular-utils.mjs +2544 -0
- package/fesm2022/clr-angular-utils.mjs.map +1 -0
- package/fesm2022/clr-angular-wizard.mjs +2863 -0
- package/fesm2022/clr-angular-wizard.mjs.map +1 -0
- package/fesm2022/clr-angular.mjs +38771 -0
- package/fesm2022/clr-angular.mjs.map +1 -0
- package/package.json +197 -18
- package/popover/common/README.md +110 -0
- package/types/clr-angular-accordion.d.ts +100 -0
- package/types/clr-angular-button.d.ts +169 -0
- package/types/clr-angular-collapsible-panel.d.ts +73 -0
- package/types/clr-angular-data-datagrid.d.ts +1850 -0
- package/types/clr-angular-data-stack-view.d.ts +87 -0
- package/types/clr-angular-data-tree-view.d.ts +220 -0
- package/types/clr-angular-data.d.ts +2147 -0
- package/types/clr-angular-emphasis-alert.d.ts +175 -0
- package/types/clr-angular-emphasis-badge.d.ts +25 -0
- package/types/clr-angular-emphasis-common.d.ts +6 -0
- package/types/clr-angular-emphasis-label.d.ts +29 -0
- package/types/clr-angular-emphasis.d.ts +231 -0
- package/types/clr-angular-forms-checkbox.d.ts +69 -0
- package/types/clr-angular-forms-combobox.d.ts +300 -0
- package/types/clr-angular-forms-common.d.ts +336 -0
- package/types/clr-angular-forms-datalist.d.ts +59 -0
- package/types/clr-angular-forms-datepicker.d.ts +951 -0
- package/types/clr-angular-forms-file-input.d.ts +190 -0
- package/types/clr-angular-forms-input.d.ts +29 -0
- package/types/clr-angular-forms-number-input.d.ts +43 -0
- package/types/clr-angular-forms-password.d.ts +52 -0
- package/types/clr-angular-forms-radio.d.ts +50 -0
- package/types/clr-angular-forms-range.d.ts +37 -0
- package/types/clr-angular-forms-select.d.ts +36 -0
- package/types/clr-angular-forms-textarea.d.ts +29 -0
- package/types/clr-angular-forms.d.ts +2072 -0
- package/types/clr-angular-icon.d.ts +1498 -0
- package/types/clr-angular-layout-breadcrumbs.d.ts +45 -0
- package/types/clr-angular-layout-main-container.d.ts +28 -0
- package/types/clr-angular-layout-nav.d.ts +138 -0
- package/types/clr-angular-layout-tabs.d.ts +158 -0
- package/types/clr-angular-layout-vertical-nav.d.ts +128 -0
- package/types/clr-angular-layout.d.ts +476 -0
- package/types/clr-angular-modal.d.ts +160 -0
- package/types/clr-angular-popover-common.d.ts +230 -0
- package/types/clr-angular-popover-dropdown.d.ts +122 -0
- package/types/clr-angular-popover-signpost.d.ts +149 -0
- package/types/clr-angular-popover-tooltip.d.ts +83 -0
- package/types/clr-angular-popover.d.ts +568 -0
- package/{progress/progress-bars/progress-bar.d.ts → types/clr-angular-progress-progress-bars.d.ts} +15 -3
- package/{progress/spinner/spinner.d.ts → types/clr-angular-progress-spinner.d.ts} +15 -3
- package/types/clr-angular-stepper.d.ts +179 -0
- package/types/clr-angular-timeline.d.ts +86 -0
- package/types/clr-angular-utils-conditional.d.ts +132 -0
- package/types/clr-angular-utils-loading.d.ts +38 -0
- package/types/clr-angular-utils.d.ts +1075 -0
- package/types/clr-angular-wizard.d.ts +1451 -0
- package/types/clr-angular.d.ts +10257 -0
- package/accordion/accordion-content.d.ts +0 -5
- package/accordion/accordion-description.d.ts +0 -5
- package/accordion/accordion-panel.d.ts +0 -45
- package/accordion/accordion-title.d.ts +0 -5
- package/accordion/accordion.d.ts +0 -20
- package/accordion/accordion.module.d.ts +0 -16
- package/accordion/chocolate/accordion-oompa-loompa.d.ts +0 -12
- package/accordion/chocolate/accordion-willy-wonka.d.ts +0 -6
- package/accordion/enums/accordion-status.enum.d.ts +0 -5
- package/accordion/enums/accordion-strategy.enum.d.ts +0 -4
- package/accordion/index.d.ts +0 -10
- package/accordion/models/accordion.model.d.ts +0 -27
- package/accordion/providers/accordion.service.d.ts +0 -17
- package/accordion/stepper/chocolate/stepper-oompa-loompa.d.ts +0 -12
- package/accordion/stepper/chocolate/stepper-willy-wonka.d.ts +0 -6
- package/accordion/stepper/index.d.ts +0 -4
- package/accordion/stepper/models/stepper.model.d.ts +0 -29
- package/accordion/stepper/providers/stepper.service.d.ts +0 -23
- package/accordion/stepper/step-button.d.ts +0 -21
- package/accordion/stepper/stepper-panel.d.ts +0 -28
- package/accordion/stepper/stepper.d.ts +0 -26
- package/accordion/stepper/stepper.module.d.ts +0 -14
- package/accordion/utils/animation.d.ts +0 -2
- package/button/button-group/button-group.d.ts +0 -60
- package/button/button-group/button-group.module.d.ts +0 -13
- package/button/button-group/button.d.ts +0 -40
- package/button/button-group/index.d.ts +0 -3
- package/button/button-loading/index.d.ts +0 -2
- package/button/button-loading/loading-button.d.ts +0 -17
- package/button/button-loading/loading-button.module.d.ts +0 -10
- package/button/button.module.d.ts +0 -9
- package/button/index.d.ts +0 -3
- package/button/providers/button-group-focus-handler.service.d.ts +0 -32
- package/button/providers/button-group-focus.enum.d.ts +0 -4
- package/button/providers/button-in-group.service.d.ts +0 -10
- package/clr-angular.module.d.ts +0 -25
- package/data/data.module.d.ts +0 -9
- package/data/datagrid/built-in/comparators/datagrid-property-comparator.d.ts +0 -7
- package/data/datagrid/built-in/filters/datagrid-numeric-filter-impl.d.ts +0 -37
- package/data/datagrid/built-in/filters/datagrid-numeric-filter.d.ts +0 -58
- package/data/datagrid/built-in/filters/datagrid-property-numeric-filter.d.ts +0 -8
- package/data/datagrid/built-in/filters/datagrid-property-string-filter.d.ts +0 -8
- package/data/datagrid/built-in/filters/datagrid-string-filter-impl.d.ts +0 -39
- package/data/datagrid/built-in/filters/datagrid-string-filter.d.ts +0 -60
- package/data/datagrid/built-in/nested-property.d.ts +0 -10
- package/data/datagrid/chocolate/actionable-oompa-loompa.d.ts +0 -12
- package/data/datagrid/chocolate/datagrid-willy-wonka.d.ts +0 -6
- package/data/datagrid/chocolate/expandable-oompa-loompa.d.ts +0 -12
- package/data/datagrid/datagrid-action-bar.d.ts +0 -5
- package/data/datagrid/datagrid-action-overflow.d.ts +0 -28
- package/data/datagrid/datagrid-cell.d.ts +0 -21
- package/data/datagrid/datagrid-column-separator.d.ts +0 -36
- package/data/datagrid/datagrid-column-toggle-button.d.ts +0 -16
- package/data/datagrid/datagrid-column-toggle-trackby.d.ts +0 -6
- package/data/datagrid/datagrid-column-toggle.d.ts +0 -30
- package/data/datagrid/datagrid-column.d.ts +0 -92
- package/data/datagrid/datagrid-detail-body.d.ts +0 -5
- package/data/datagrid/datagrid-detail-header.d.ts +0 -14
- package/data/datagrid/datagrid-detail-registerer.d.ts +0 -9
- package/data/datagrid/datagrid-detail.d.ts +0 -17
- package/data/datagrid/datagrid-filter.d.ts +0 -40
- package/data/datagrid/datagrid-footer.d.ts +0 -17
- package/data/datagrid/datagrid-hideable-column.d.ts +0 -41
- package/data/datagrid/datagrid-if-detail.d.ts +0 -28
- package/data/datagrid/datagrid-if-expanded.service.d.ts +0 -18
- package/data/datagrid/datagrid-items.d.ts +0 -28
- package/data/datagrid/datagrid-page-size.d.ts +0 -13
- package/data/datagrid/datagrid-pagination.d.ts +0 -73
- package/data/datagrid/datagrid-placeholder.d.ts +0 -12
- package/data/datagrid/datagrid-row-detail.d.ts +0 -34
- package/data/datagrid/datagrid-row.d.ts +0 -109
- package/data/datagrid/datagrid-selection-cell.directive.d.ts +0 -9
- package/data/datagrid/datagrid-single-selection.directive.d.ts +0 -21
- package/data/datagrid/datagrid-virtual-scroll.directive.d.ts +0 -80
- package/data/datagrid/datagrid.d.ts +0 -149
- package/data/datagrid/datagrid.module.d.ts +0 -60
- package/data/datagrid/enums/column-changes.enum.d.ts +0 -6
- package/data/datagrid/enums/display-mode.enum.d.ts +0 -4
- package/data/datagrid/enums/render-step.enum.d.ts +0 -7
- package/data/datagrid/enums/selection-type.d.ts +0 -5
- package/data/datagrid/enums/sort-order.enum.d.ts +0 -12
- package/data/datagrid/index.d.ts +0 -50
- package/data/datagrid/interfaces/column-state.interface.d.ts +0 -14
- package/data/datagrid/interfaces/comparator.interface.d.ts +0 -3
- package/data/datagrid/interfaces/filter.interface.d.ts +0 -8
- package/data/datagrid/interfaces/key-nav-grid-strategy.interface.d.ts +0 -11
- package/data/datagrid/interfaces/numeric-filter.interface.d.ts +0 -3
- package/data/datagrid/interfaces/state.interface.d.ts +0 -14
- package/data/datagrid/interfaces/string-filter.interface.d.ts +0 -3
- package/data/datagrid/interfaces/virtual-scroll-data-range.interface.d.ts +0 -5
- package/data/datagrid/providers/column-resizer.service.d.ts +0 -22
- package/data/datagrid/providers/column-state.provider.d.ts +0 -9
- package/data/datagrid/providers/columns.service.d.ts +0 -18
- package/data/datagrid/providers/custom-filter.d.ts +0 -2
- package/data/datagrid/providers/detail.service.d.ts +0 -28
- package/data/datagrid/providers/display-mode.service.d.ts +0 -14
- package/data/datagrid/providers/filters.d.ts +0 -44
- package/data/datagrid/providers/global-expandable-rows.d.ts +0 -16
- package/data/datagrid/providers/items.d.ts +0 -84
- package/data/datagrid/providers/page.d.ts +0 -62
- package/data/datagrid/providers/row-action-service.d.ts +0 -12
- package/data/datagrid/providers/selection.d.ts +0 -105
- package/data/datagrid/providers/sort.d.ts +0 -44
- package/data/datagrid/providers/state-debouncer.provider.d.ts +0 -14
- package/data/datagrid/providers/state.provider.d.ts +0 -24
- package/data/datagrid/providers/table-size.service.d.ts +0 -17
- package/data/datagrid/render/cell-renderer.d.ts +0 -18
- package/data/datagrid/render/constants.d.ts +0 -4
- package/data/datagrid/render/header-renderer.d.ts +0 -34
- package/data/datagrid/render/main-renderer.d.ts +0 -71
- package/data/datagrid/render/noop-dom-adapter.d.ts +0 -13
- package/data/datagrid/render/render-organizer.d.ts +0 -12
- package/data/datagrid/render/row-detail-renderer.d.ts +0 -11
- package/data/datagrid/render/row-renderer.d.ts +0 -17
- package/data/datagrid/utils/datagrid-filter-registrar.d.ts +0 -18
- package/data/datagrid/utils/key-navigation-grid.controller.d.ts +0 -32
- package/data/datagrid/utils/key-navigation-strategies/default.d.ts +0 -15
- package/data/datagrid/utils/key-navigation-strategies/expanded-columns-row.d.ts +0 -12
- package/data/datagrid/utils/key-navigation-strategies/expanded-row.d.ts +0 -12
- package/data/datagrid/utils/key-navigation-utils.d.ts +0 -24
- package/data/datagrid/wrapped-cell.d.ts +0 -10
- package/data/datagrid/wrapped-column.d.ts +0 -10
- package/data/datagrid/wrapped-row.d.ts +0 -10
- package/data/index.d.ts +0 -4
- package/data/stack-view/index.d.ts +0 -6
- package/data/stack-view/stack-block.d.ts +0 -37
- package/data/stack-view/stack-content-input.d.ts +0 -6
- package/data/stack-view/stack-header.d.ts +0 -8
- package/data/stack-view/stack-view-custom-tags.d.ts +0 -15
- package/data/stack-view/stack-view.d.ts +0 -5
- package/data/stack-view/stack-view.module.d.ts +0 -18
- package/data/tree-view/index.d.ts +0 -6
- package/data/tree-view/models/async-array.d.ts +0 -3
- package/data/tree-view/models/declarative-tree-node.model.d.ts +0 -9
- package/data/tree-view/models/recursive-tree-node.model.d.ts +0 -18
- package/data/tree-view/models/selected-state.enum.d.ts +0 -5
- package/data/tree-view/models/tree-node.model.d.ts +0 -23
- package/data/tree-view/recursive-children.d.ts +0 -22
- package/data/tree-view/recursive-for-of.d.ts +0 -22
- package/data/tree-view/tree-features.service.d.ts +0 -22
- package/data/tree-view/tree-focus-manager.service.d.ts +0 -32
- package/data/tree-view/tree-node-link.d.ts +0 -10
- package/data/tree-view/tree-node.d.ts +0 -59
- package/data/tree-view/tree-view.module.d.ts +0 -17
- package/data/tree-view/tree.d.ts +0 -22
- package/emphasis/alert/alert-item.d.ts +0 -8
- package/emphasis/alert/alert-text.d.ts +0 -9
- package/emphasis/alert/alert.d.ts +0 -40
- package/emphasis/alert/alert.module.d.ts +0 -18
- package/emphasis/alert/alerts-pager.d.ts +0 -31
- package/emphasis/alert/alerts.d.ts +0 -32
- package/emphasis/alert/index.d.ts +0 -6
- package/emphasis/alert/providers/icon-and-types.service.d.ts +0 -18
- package/emphasis/alert/providers/multi-alert.service.d.ts +0 -28
- package/emphasis/alert/utils/alert-info-object.d.ts +0 -5
- package/emphasis/alert/utils/alert-types.d.ts +0 -1
- package/emphasis/emphasis.module.d.ts +0 -7
- package/emphasis/index.d.ts +0 -2
- package/esm2020/accordion/accordion-content.mjs +0 -21
- package/esm2020/accordion/accordion-description.mjs +0 -22
- package/esm2020/accordion/accordion-panel.mjs +0 -141
- package/esm2020/accordion/accordion-title.mjs +0 -22
- package/esm2020/accordion/accordion.mjs +0 -62
- package/esm2020/accordion/accordion.module.mjs +0 -56
- package/esm2020/accordion/chocolate/accordion-oompa-loompa.mjs +0 -34
- package/esm2020/accordion/chocolate/accordion-willy-wonka.mjs +0 -20
- package/esm2020/accordion/enums/accordion-status.enum.mjs +0 -13
- package/esm2020/accordion/enums/accordion-strategy.enum.mjs +0 -12
- package/esm2020/accordion/index.mjs +0 -17
- package/esm2020/accordion/models/accordion.model.mjs +0 -61
- package/esm2020/accordion/providers/accordion.service.mjs +0 -48
- package/esm2020/accordion/stepper/chocolate/stepper-oompa-loompa.mjs +0 -34
- package/esm2020/accordion/stepper/chocolate/stepper-willy-wonka.mjs +0 -20
- package/esm2020/accordion/stepper/index.mjs +0 -11
- package/esm2020/accordion/stepper/models/stepper.model.mjs +0 -146
- package/esm2020/accordion/stepper/providers/stepper.service.mjs +0 -75
- package/esm2020/accordion/stepper/step-button.mjs +0 -62
- package/esm2020/accordion/stepper/stepper-panel.mjs +0 -96
- package/esm2020/accordion/stepper/stepper.mjs +0 -105
- package/esm2020/accordion/stepper/stepper.module.mjs +0 -31
- package/esm2020/accordion/utils/animation.mjs +0 -31
- package/esm2020/button/button-group/button-group.mjs +0 -164
- package/esm2020/button/button-group/button-group.module.mjs +0 -28
- package/esm2020/button/button-group/button.mjs +0 -175
- package/esm2020/button/button-group/index.mjs +0 -10
- package/esm2020/button/button-loading/index.mjs +0 -9
- package/esm2020/button/button-loading/loading-button.mjs +0 -164
- package/esm2020/button/button-loading/loading-button.module.mjs +0 -25
- package/esm2020/button/button.module.mjs +0 -26
- package/esm2020/button/index.mjs +0 -10
- package/esm2020/button/providers/button-group-focus-handler.service.mjs +0 -97
- package/esm2020/button/providers/button-group-focus.enum.mjs +0 -12
- package/esm2020/button/providers/button-in-group.service.mjs +0 -26
- package/esm2020/clr-angular.mjs +0 -5
- package/esm2020/clr-angular.module.mjs +0 -93
- package/esm2020/data/data.module.mjs +0 -23
- package/esm2020/data/datagrid/built-in/comparators/datagrid-property-comparator.mjs +0 -46
- package/esm2020/data/datagrid/built-in/filters/datagrid-numeric-filter-impl.mjs +0 -93
- package/esm2020/data/datagrid/built-in/filters/datagrid-numeric-filter.mjs +0 -259
- package/esm2020/data/datagrid/built-in/filters/datagrid-property-numeric-filter.mjs +0 -28
- package/esm2020/data/datagrid/built-in/filters/datagrid-property-string-filter.mjs +0 -27
- package/esm2020/data/datagrid/built-in/filters/datagrid-string-filter-impl.mjs +0 -82
- package/esm2020/data/datagrid/built-in/filters/datagrid-string-filter.mjs +0 -185
- package/esm2020/data/datagrid/built-in/nested-property.mjs +0 -38
- package/esm2020/data/datagrid/chocolate/actionable-oompa-loompa.mjs +0 -34
- package/esm2020/data/datagrid/chocolate/datagrid-willy-wonka.mjs +0 -20
- package/esm2020/data/datagrid/chocolate/expandable-oompa-loompa.mjs +0 -34
- package/esm2020/data/datagrid/datagrid-action-bar.mjs +0 -21
- package/esm2020/data/datagrid/datagrid-action-overflow.mjs +0 -166
- package/esm2020/data/datagrid/datagrid-cell.mjs +0 -40
- package/esm2020/data/datagrid/datagrid-column-separator.mjs +0 -171
- package/esm2020/data/datagrid/datagrid-column-toggle-button.mjs +0 -65
- package/esm2020/data/datagrid/datagrid-column-toggle-trackby.mjs +0 -8
- package/esm2020/data/datagrid/datagrid-column-toggle.mjs +0 -204
- package/esm2020/data/datagrid/datagrid-column.mjs +0 -420
- package/esm2020/data/datagrid/datagrid-detail-body.mjs +0 -31
- package/esm2020/data/datagrid/datagrid-detail-header.mjs +0 -67
- package/esm2020/data/datagrid/datagrid-detail-registerer.mjs +0 -37
- package/esm2020/data/datagrid/datagrid-detail.mjs +0 -98
- package/esm2020/data/datagrid/datagrid-filter.mjs +0 -186
- package/esm2020/data/datagrid/datagrid-footer.mjs +0 -78
- package/esm2020/data/datagrid/datagrid-hideable-column.mjs +0 -106
- package/esm2020/data/datagrid/datagrid-if-detail.mjs +0 -96
- package/esm2020/data/datagrid/datagrid-if-expanded.service.mjs +0 -55
- package/esm2020/data/datagrid/datagrid-items.mjs +0 -72
- package/esm2020/data/datagrid/datagrid-page-size.mjs +0 -63
- package/esm2020/data/datagrid/datagrid-pagination.mjs +0 -388
- package/esm2020/data/datagrid/datagrid-placeholder.mjs +0 -42
- package/esm2020/data/datagrid/datagrid-row-detail.mjs +0 -116
- package/esm2020/data/datagrid/datagrid-row.mjs +0 -372
- package/esm2020/data/datagrid/datagrid-selection-cell.directive.mjs +0 -37
- package/esm2020/data/datagrid/datagrid-single-selection.directive.mjs +0 -74
- package/esm2020/data/datagrid/datagrid-virtual-scroll.directive.mjs +0 -340
- package/esm2020/data/datagrid/datagrid.mjs +0 -556
- package/esm2020/data/datagrid/datagrid.module.mjs +0 -238
- package/esm2020/data/datagrid/enums/column-changes.enum.mjs +0 -16
- package/esm2020/data/datagrid/enums/display-mode.enum.mjs +0 -12
- package/esm2020/data/datagrid/enums/render-step.enum.mjs +0 -15
- package/esm2020/data/datagrid/enums/selection-type.mjs +0 -13
- package/esm2020/data/datagrid/enums/sort-order.enum.mjs +0 -20
- package/esm2020/data/datagrid/index.mjs +0 -56
- package/esm2020/data/datagrid/interfaces/column-state.interface.mjs +0 -8
- package/esm2020/data/datagrid/interfaces/comparator.interface.mjs +0 -8
- package/esm2020/data/datagrid/interfaces/filter.interface.mjs +0 -8
- package/esm2020/data/datagrid/interfaces/key-nav-grid-strategy.interface.mjs +0 -8
- package/esm2020/data/datagrid/interfaces/numeric-filter.interface.mjs +0 -8
- package/esm2020/data/datagrid/interfaces/state.interface.mjs +0 -8
- package/esm2020/data/datagrid/interfaces/string-filter.interface.mjs +0 -8
- package/esm2020/data/datagrid/interfaces/virtual-scroll-data-range.interface.mjs +0 -8
- package/esm2020/data/datagrid/providers/column-resizer.service.mjs +0 -58
- package/esm2020/data/datagrid/providers/column-state.provider.mjs +0 -19
- package/esm2020/data/datagrid/providers/columns.service.mjs +0 -63
- package/esm2020/data/datagrid/providers/custom-filter.mjs +0 -9
- package/esm2020/data/datagrid/providers/detail.service.mjs +0 -76
- package/esm2020/data/datagrid/providers/display-mode.service.mjs +0 -36
- package/esm2020/data/datagrid/providers/filters.mjs +0 -112
- package/esm2020/data/datagrid/providers/global-expandable-rows.mjs +0 -34
- package/esm2020/data/datagrid/providers/items.mjs +0 -177
- package/esm2020/data/datagrid/providers/page.mjs +0 -156
- package/esm2020/data/datagrid/providers/row-action-service.mjs +0 -31
- package/esm2020/data/datagrid/providers/selection.mjs +0 -365
- package/esm2020/data/datagrid/providers/sort.mjs +0 -86
- package/esm2020/data/datagrid/providers/state-debouncer.provider.mjs +0 -43
- package/esm2020/data/datagrid/providers/state.provider.mjs +0 -75
- package/esm2020/data/datagrid/providers/table-size.service.mjs +0 -45
- package/esm2020/data/datagrid/render/cell-renderer.mjs +0 -59
- package/esm2020/data/datagrid/render/constants.mjs +0 -13
- package/esm2020/data/datagrid/render/header-renderer.mjs +0 -117
- package/esm2020/data/datagrid/render/main-renderer.mjs +0 -285
- package/esm2020/data/datagrid/render/noop-dom-adapter.mjs +0 -48
- package/esm2020/data/datagrid/render/render-organizer.mjs +0 -39
- package/esm2020/data/datagrid/render/row-detail-renderer.mjs +0 -31
- package/esm2020/data/datagrid/render/row-renderer.mjs +0 -62
- package/esm2020/data/datagrid/utils/datagrid-filter-registrar.mjs +0 -43
- package/esm2020/data/datagrid/utils/key-navigation-grid.controller.mjs +0 -155
- package/esm2020/data/datagrid/utils/key-navigation-strategies/default.mjs +0 -132
- package/esm2020/data/datagrid/utils/key-navigation-strategies/expanded-columns-row.mjs +0 -129
- package/esm2020/data/datagrid/utils/key-navigation-strategies/expanded-row.mjs +0 -165
- package/esm2020/data/datagrid/utils/key-navigation-utils.mjs +0 -121
- package/esm2020/data/datagrid/wrapped-cell.mjs +0 -37
- package/esm2020/data/datagrid/wrapped-column.mjs +0 -38
- package/esm2020/data/datagrid/wrapped-row.mjs +0 -38
- package/esm2020/data/index.mjs +0 -11
- package/esm2020/data/stack-view/index.mjs +0 -13
- package/esm2020/data/stack-view/stack-block.mjs +0 -236
- package/esm2020/data/stack-view/stack-content-input.mjs +0 -27
- package/esm2020/data/stack-view/stack-header.mjs +0 -37
- package/esm2020/data/stack-view/stack-view-custom-tags.mjs +0 -57
- package/esm2020/data/stack-view/stack-view.mjs +0 -23
- package/esm2020/data/stack-view/stack-view.module.mjs +0 -53
- package/esm2020/data/tree-view/index.mjs +0 -13
- package/esm2020/data/tree-view/models/async-array.mjs +0 -11
- package/esm2020/data/tree-view/models/declarative-tree-node.model.mjs +0 -37
- package/esm2020/data/tree-view/models/recursive-tree-node.model.mjs +0 -77
- package/esm2020/data/tree-view/models/selected-state.enum.mjs +0 -17
- package/esm2020/data/tree-view/models/tree-node.model.mjs +0 -116
- package/esm2020/data/tree-view/recursive-children.mjs +0 -88
- package/esm2020/data/tree-view/recursive-for-of.mjs +0 -57
- package/esm2020/data/tree-view/tree-features.service.mjs +0 -38
- package/esm2020/data/tree-view/tree-focus-manager.service.mjs +0 -190
- package/esm2020/data/tree-view/tree-node-link.mjs +0 -30
- package/esm2020/data/tree-view/tree-node.mjs +0 -348
- package/esm2020/data/tree-view/tree-view.module.mjs +0 -35
- package/esm2020/data/tree-view/tree.mjs +0 -102
- package/esm2020/emphasis/alert/alert-item.mjs +0 -52
- package/esm2020/emphasis/alert/alert-text.mjs +0 -23
- package/esm2020/emphasis/alert/alert.mjs +0 -142
- package/esm2020/emphasis/alert/alert.module.mjs +0 -36
- package/esm2020/emphasis/alert/alerts-pager.mjs +0 -87
- package/esm2020/emphasis/alert/alerts.mjs +0 -102
- package/esm2020/emphasis/alert/index.mjs +0 -13
- package/esm2020/emphasis/alert/providers/icon-and-types.service.mjs +0 -90
- package/esm2020/emphasis/alert/providers/multi-alert.service.mjs +0 -97
- package/esm2020/emphasis/alert/utils/alert-info-object.mjs +0 -8
- package/esm2020/emphasis/alert/utils/alert-types.mjs +0 -9
- package/esm2020/emphasis/emphasis.module.mjs +0 -21
- package/esm2020/emphasis/index.mjs +0 -9
- package/esm2020/forms/checkbox/checkbox-container.mjs +0 -136
- package/esm2020/forms/checkbox/checkbox-wrapper.mjs +0 -70
- package/esm2020/forms/checkbox/checkbox.mjs +0 -53
- package/esm2020/forms/checkbox/checkbox.module.mjs +0 -33
- package/esm2020/forms/checkbox/index.mjs +0 -11
- package/esm2020/forms/combobox/combobox-container.mjs +0 -106
- package/esm2020/forms/combobox/combobox.mjs +0 -360
- package/esm2020/forms/combobox/combobox.module.mjs +0 -97
- package/esm2020/forms/combobox/index.mjs +0 -15
- package/esm2020/forms/combobox/model/combobox.model.mjs +0 -9
- package/esm2020/forms/combobox/model/multi-select-combobox.model.mjs +0 -82
- package/esm2020/forms/combobox/model/pseudo-focus.model.mjs +0 -24
- package/esm2020/forms/combobox/model/single-select-combobox.model.mjs +0 -39
- package/esm2020/forms/combobox/option-group.mjs +0 -42
- package/esm2020/forms/combobox/option-items.directive.mjs +0 -110
- package/esm2020/forms/combobox/option-selected.directive.mjs +0 -25
- package/esm2020/forms/combobox/option.mjs +0 -103
- package/esm2020/forms/combobox/options.mjs +0 -156
- package/esm2020/forms/combobox/providers/combobox-container.service.mjs +0 -19
- package/esm2020/forms/combobox/providers/combobox-focus-handler.service.mjs +0 -222
- package/esm2020/forms/combobox/providers/option-selection.service.mjs +0 -85
- package/esm2020/forms/common/abstract-container.mjs +0 -135
- package/esm2020/forms/common/abstract-control.mjs +0 -51
- package/esm2020/forms/common/common.module.mjs +0 -78
- package/esm2020/forms/common/control-container.mjs +0 -84
- package/esm2020/forms/common/control.mjs +0 -31
- package/esm2020/forms/common/error.mjs +0 -38
- package/esm2020/forms/common/form.mjs +0 -54
- package/esm2020/forms/common/helper.mjs +0 -37
- package/esm2020/forms/common/if-control-state/abstract-if-state.mjs +0 -46
- package/esm2020/forms/common/if-control-state/if-control-state.service.mjs +0 -57
- package/esm2020/forms/common/if-control-state/if-error.mjs +0 -75
- package/esm2020/forms/common/if-control-state/if-success.mjs +0 -48
- package/esm2020/forms/common/index.mjs +0 -21
- package/esm2020/forms/common/label.mjs +0 -102
- package/esm2020/forms/common/layout.mjs +0 -32
- package/esm2020/forms/common/providers/container-id.service.mjs +0 -39
- package/esm2020/forms/common/providers/control-class.service.mjs +0 -53
- package/esm2020/forms/common/providers/control-id.service.mjs +0 -32
- package/esm2020/forms/common/providers/focus.service.mjs +0 -26
- package/esm2020/forms/common/providers/layout.service.mjs +0 -58
- package/esm2020/forms/common/providers/mark-control.service.mjs +0 -26
- package/esm2020/forms/common/providers/ng-control.service.mjs +0 -53
- package/esm2020/forms/common/success.mjs +0 -38
- package/esm2020/forms/common/wrapped-control.mjs +0 -191
- package/esm2020/forms/datalist/datalist-container.mjs +0 -121
- package/esm2020/forms/datalist/datalist-input.mjs +0 -63
- package/esm2020/forms/datalist/datalist.mjs +0 -49
- package/esm2020/forms/datalist/datalist.module.mjs +0 -32
- package/esm2020/forms/datalist/index.mjs +0 -11
- package/esm2020/forms/datalist/providers/datalist-id.service.mjs +0 -32
- package/esm2020/forms/datepicker/calendar.mjs +0 -175
- package/esm2020/forms/datepicker/date-container.mjs +0 -365
- package/esm2020/forms/datepicker/date-end-input.mjs +0 -60
- package/esm2020/forms/datepicker/date-input.mjs +0 -294
- package/esm2020/forms/datepicker/date-input.validator.mjs +0 -100
- package/esm2020/forms/datepicker/date-single-input.mjs +0 -63
- package/esm2020/forms/datepicker/date-start-input.mjs +0 -61
- package/esm2020/forms/datepicker/datepicker-action-buttons.mjs +0 -59
- package/esm2020/forms/datepicker/datepicker-view-manager.mjs +0 -74
- package/esm2020/forms/datepicker/datepicker.module.mjs +0 -111
- package/esm2020/forms/datepicker/day.mjs +0 -145
- package/esm2020/forms/datepicker/daypicker.mjs +0 -81
- package/esm2020/forms/datepicker/index.mjs +0 -21
- package/esm2020/forms/datepicker/interfaces/date-range.interface.mjs +0 -8
- package/esm2020/forms/datepicker/interfaces/day-of-week.interface.mjs +0 -8
- package/esm2020/forms/datepicker/model/calendar-view.model.mjs +0 -182
- package/esm2020/forms/datepicker/model/calendar.model.mjs +0 -79
- package/esm2020/forms/datepicker/model/day-view.model.mjs +0 -25
- package/esm2020/forms/datepicker/model/day.model.mjs +0 -72
- package/esm2020/forms/datepicker/model/year-range.model.mjs +0 -61
- package/esm2020/forms/datepicker/monthpicker.mjs +0 -325
- package/esm2020/forms/datepicker/providers/date-form-control.service.mjs +0 -37
- package/esm2020/forms/datepicker/providers/date-io.service.mjs +0 -195
- package/esm2020/forms/datepicker/providers/date-navigation.service.mjs +0 -195
- package/esm2020/forms/datepicker/providers/datepicker-enabled.service.mjs +0 -47
- package/esm2020/forms/datepicker/providers/datepicker-focus.service.mjs +0 -48
- package/esm2020/forms/datepicker/providers/locale-helper.service.mjs +0 -102
- package/esm2020/forms/datepicker/providers/view-manager.service.mjs +0 -42
- package/esm2020/forms/datepicker/utils/constants.mjs +0 -38
- package/esm2020/forms/datepicker/utils/date-utils.mjs +0 -50
- package/esm2020/forms/datepicker/yearpicker.mjs +0 -304
- package/esm2020/forms/file-input/file-input-container.mjs +0 -245
- package/esm2020/forms/file-input/file-input-validator-errors.mjs +0 -8
- package/esm2020/forms/file-input/file-input-validator.mjs +0 -101
- package/esm2020/forms/file-input/file-input-value-accessor.mjs +0 -53
- package/esm2020/forms/file-input/file-input.helpers.mjs +0 -22
- package/esm2020/forms/file-input/file-input.mjs +0 -77
- package/esm2020/forms/file-input/file-input.module.mjs +0 -74
- package/esm2020/forms/file-input/file-list.mjs +0 -160
- package/esm2020/forms/file-input/file-messages-template.mjs +0 -26
- package/esm2020/forms/file-input/file-messages.mjs +0 -61
- package/esm2020/forms/file-input/index.mjs +0 -16
- package/esm2020/forms/forms.module.mjs +0 -73
- package/esm2020/forms/index.mjs +0 -21
- package/esm2020/forms/input/index.mjs +0 -10
- package/esm2020/forms/input/input-container.mjs +0 -92
- package/esm2020/forms/input/input.mjs +0 -40
- package/esm2020/forms/input/input.module.mjs +0 -33
- package/esm2020/forms/number-input/index.mjs +0 -10
- package/esm2020/forms/number-input/number-input-container.mjs +0 -148
- package/esm2020/forms/number-input/number-input.mjs +0 -79
- package/esm2020/forms/number-input/number-input.module.mjs +0 -32
- package/esm2020/forms/password/index.mjs +0 -10
- package/esm2020/forms/password/password-container.mjs +0 -180
- package/esm2020/forms/password/password.mjs +0 -64
- package/esm2020/forms/password/password.module.mjs +0 -32
- package/esm2020/forms/radio/index.mjs +0 -11
- package/esm2020/forms/radio/radio-container.mjs +0 -150
- package/esm2020/forms/radio/radio-wrapper.mjs +0 -44
- package/esm2020/forms/radio/radio.mjs +0 -29
- package/esm2020/forms/radio/radio.module.mjs +0 -33
- package/esm2020/forms/range/index.mjs +0 -10
- package/esm2020/forms/range/range-container.mjs +0 -137
- package/esm2020/forms/range/range.mjs +0 -30
- package/esm2020/forms/range/range.module.mjs +0 -32
- package/esm2020/forms/select/index.mjs +0 -10
- package/esm2020/forms/select/select-container.mjs +0 -114
- package/esm2020/forms/select/select.mjs +0 -31
- package/esm2020/forms/select/select.module.mjs +0 -32
- package/esm2020/forms/textarea/index.mjs +0 -10
- package/esm2020/forms/textarea/textarea-container.mjs +0 -84
- package/esm2020/forms/textarea/textarea.mjs +0 -31
- package/esm2020/forms/textarea/textarea.module.mjs +0 -32
- package/esm2020/icon/icon.mjs +0 -29
- package/esm2020/icon/icon.module.mjs +0 -25
- package/esm2020/icon/index.mjs +0 -9
- package/esm2020/index.mjs +0 -23
- package/esm2020/layout/breadcrumbs/breadcrumb-item.mjs +0 -24
- package/esm2020/layout/breadcrumbs/breadcrumbs.constants.mjs +0 -8
- package/esm2020/layout/breadcrumbs/breadcrumbs.mjs +0 -46
- package/esm2020/layout/breadcrumbs/breadcrumbs.module.mjs +0 -28
- package/esm2020/layout/breadcrumbs/index.mjs +0 -11
- package/esm2020/layout/breadcrumbs/model/breadcrumbs.model.mjs +0 -8
- package/esm2020/layout/index.mjs +0 -13
- package/esm2020/layout/layout.module.mjs +0 -25
- package/esm2020/layout/main-container/index.mjs +0 -9
- package/esm2020/layout/main-container/main-container.mjs +0 -62
- package/esm2020/layout/main-container/main-container.module.mjs +0 -26
- package/esm2020/layout/nav/aria-current-link.mjs +0 -32
- package/esm2020/layout/nav/chocolate/index.mjs +0 -9
- package/esm2020/layout/nav/chocolate/main-container-willy-wonka.mjs +0 -20
- package/esm2020/layout/nav/chocolate/nav-detection-oompa-loompa.mjs +0 -36
- package/esm2020/layout/nav/header.mjs +0 -154
- package/esm2020/layout/nav/index.mjs +0 -12
- package/esm2020/layout/nav/nav-level.mjs +0 -197
- package/esm2020/layout/nav/navigation.module.mjs +0 -45
- package/esm2020/layout/nav/providers/responsive-navigation.service.mjs +0 -61
- package/esm2020/layout/nav/responsive-nav-codes.mjs +0 -21
- package/esm2020/layout/nav/responsive-nav-control-message.mjs +0 -19
- package/esm2020/layout/tabs/chocolate/active-oompa-loompa.mjs +0 -39
- package/esm2020/layout/tabs/chocolate/tabs-willy-wonka.mjs +0 -20
- package/esm2020/layout/tabs/enums/tabs-layout.enum.mjs +0 -12
- package/esm2020/layout/tabs/index.mjs +0 -17
- package/esm2020/layout/tabs/providers/tabs.service.mjs +0 -46
- package/esm2020/layout/tabs/tab-action.directive.mjs +0 -22
- package/esm2020/layout/tabs/tab-content.mjs +0 -87
- package/esm2020/layout/tabs/tab-link.directive.mjs +0 -105
- package/esm2020/layout/tabs/tab-overflow-content.mjs +0 -23
- package/esm2020/layout/tabs/tab.mjs +0 -47
- package/esm2020/layout/tabs/tabs-actions.mjs +0 -39
- package/esm2020/layout/tabs/tabs-id.provider.mjs +0 -17
- package/esm2020/layout/tabs/tabs.mjs +0 -327
- package/esm2020/layout/tabs/tabs.module.mjs +0 -67
- package/esm2020/layout/vertical-nav/index.mjs +0 -13
- package/esm2020/layout/vertical-nav/providers/vertical-nav-group-registration.service.mjs +0 -25
- package/esm2020/layout/vertical-nav/providers/vertical-nav-group.service.mjs +0 -26
- package/esm2020/layout/vertical-nav/providers/vertical-nav-icon.service.mjs +0 -28
- package/esm2020/layout/vertical-nav/providers/vertical-nav.service.mjs +0 -55
- package/esm2020/layout/vertical-nav/vertical-nav-group-children.mjs +0 -20
- package/esm2020/layout/vertical-nav/vertical-nav-group.mjs +0 -162
- package/esm2020/layout/vertical-nav/vertical-nav-icon.mjs +0 -28
- package/esm2020/layout/vertical-nav/vertical-nav-link.mjs +0 -57
- package/esm2020/layout/vertical-nav/vertical-nav.mjs +0 -85
- package/esm2020/layout/vertical-nav/vertical-nav.module.mjs +0 -50
- package/esm2020/modal/index.mjs +0 -14
- package/esm2020/modal/modal-body.mjs +0 -65
- package/esm2020/modal/modal-configuration.service.mjs +0 -21
- package/esm2020/modal/modal-host.component.mjs +0 -29
- package/esm2020/modal/modal-stack.service.mjs +0 -53
- package/esm2020/modal/modal.mjs +0 -185
- package/esm2020/modal/modal.module.mjs +0 -33
- package/esm2020/modal/side-panel.mjs +0 -227
- package/esm2020/modal/side-panel.module.mjs +0 -28
- package/esm2020/popover/common/abstract-popover.mjs +0 -138
- package/esm2020/popover/common/popover-host-anchor.token.mjs +0 -9
- package/esm2020/popover/common/popover-options.interface.mjs +0 -8
- package/esm2020/popover/common/popover.mjs +0 -267
- package/esm2020/popover/dropdown/dropdown-item.mjs +0 -105
- package/esm2020/popover/dropdown/dropdown-menu.mjs +0 -115
- package/esm2020/popover/dropdown/dropdown-trigger.mjs +0 -51
- package/esm2020/popover/dropdown/dropdown.mjs +0 -53
- package/esm2020/popover/dropdown/dropdown.module.mjs +0 -30
- package/esm2020/popover/dropdown/index.mjs +0 -13
- package/esm2020/popover/dropdown/menu-positions.mjs +0 -17
- package/esm2020/popover/dropdown/providers/dropdown-focus-handler.service.mjs +0 -186
- package/esm2020/popover/dropdown/providers/dropdown.service.mjs +0 -34
- package/esm2020/popover/index.mjs +0 -11
- package/esm2020/popover/popover.module.mjs +0 -23
- package/esm2020/popover/signpost/index.mjs +0 -12
- package/esm2020/popover/signpost/providers/signpost-focus-manager.service.mjs +0 -24
- package/esm2020/popover/signpost/providers/signpost-id.service.mjs +0 -26
- package/esm2020/popover/signpost/signpost-content.mjs +0 -179
- package/esm2020/popover/signpost/signpost-positions.mjs +0 -23
- package/esm2020/popover/signpost/signpost-title.mjs +0 -21
- package/esm2020/popover/signpost/signpost-trigger.mjs +0 -90
- package/esm2020/popover/signpost/signpost.mjs +0 -94
- package/esm2020/popover/signpost/signpost.module.mjs +0 -46
- package/esm2020/popover/tooltip/index.mjs +0 -11
- package/esm2020/popover/tooltip/providers/tooltip-id.service.mjs +0 -26
- package/esm2020/popover/tooltip/providers/tooltip-mouse.service.mjs +0 -44
- package/esm2020/popover/tooltip/tooltip-content.mjs +0 -135
- package/esm2020/popover/tooltip/tooltip-trigger.mjs +0 -62
- package/esm2020/popover/tooltip/tooltip.mjs +0 -29
- package/esm2020/popover/tooltip/tooltip.module.mjs +0 -29
- package/esm2020/progress/progress-bars/index.mjs +0 -9
- package/esm2020/progress/progress-bars/progress-bar.mjs +0 -177
- package/esm2020/progress/progress-bars/progress-bar.module.mjs +0 -25
- package/esm2020/progress/spinner/index.mjs +0 -9
- package/esm2020/progress/spinner/spinner.mjs +0 -95
- package/esm2020/progress/spinner/spinner.module.mjs +0 -25
- package/esm2020/timeline/enums/timeline-layout.enum.mjs +0 -12
- package/esm2020/timeline/enums/timeline-step-state.enum.mjs +0 -15
- package/esm2020/timeline/index.mjs +0 -15
- package/esm2020/timeline/interface/icon-attribute.interface.mjs +0 -8
- package/esm2020/timeline/providers/timeline-icon-attribute.service.mjs +0 -55
- package/esm2020/timeline/timeline-step-description.mjs +0 -21
- package/esm2020/timeline/timeline-step-header.mjs +0 -21
- package/esm2020/timeline/timeline-step-title.mjs +0 -31
- package/esm2020/timeline/timeline-step.mjs +0 -97
- package/esm2020/timeline/timeline.mjs +0 -36
- package/esm2020/timeline/timeline.module.mjs +0 -49
- package/esm2020/utils/animations/collapse/collapse.mjs +0 -17
- package/esm2020/utils/animations/collapse/index.mjs +0 -8
- package/esm2020/utils/animations/constants.mjs +0 -14
- package/esm2020/utils/animations/expandable-animation/base-expandable-animation.mjs +0 -46
- package/esm2020/utils/animations/expandable-animation/expandable-animation.directive.mjs +0 -56
- package/esm2020/utils/animations/expandable-animation/expandable-animation.mjs +0 -49
- package/esm2020/utils/animations/expandable-animation/expandable-animation.module.mjs +0 -26
- package/esm2020/utils/animations/expandable-animation/index.mjs +0 -12
- package/esm2020/utils/animations/fade/fade.mjs +0 -15
- package/esm2020/utils/animations/fade/index.mjs +0 -8
- package/esm2020/utils/animations/fade-slide/fade-slide.mjs +0 -31
- package/esm2020/utils/animations/fade-slide/index.mjs +0 -8
- package/esm2020/utils/animations/index.mjs +0 -12
- package/esm2020/utils/animations/slide/index.mjs +0 -8
- package/esm2020/utils/animations/slide/slide.mjs +0 -31
- package/esm2020/utils/assert/assert.helpers.mjs +0 -10
- package/esm2020/utils/breakpoints/breakpoints.mjs +0 -24
- package/esm2020/utils/cdk/cdk-drag.module.mjs +0 -58
- package/esm2020/utils/cdk/cdk-trap-focus.module.mjs +0 -53
- package/esm2020/utils/chocolate/oompa-loompa.mjs +0 -33
- package/esm2020/utils/chocolate/willy-wonka.mjs +0 -37
- package/esm2020/utils/component/is-boolean-attribute-set.mjs +0 -19
- package/esm2020/utils/conditional/conditional.module.mjs +0 -27
- package/esm2020/utils/conditional/if-active.directive.mjs +0 -98
- package/esm2020/utils/conditional/if-active.service.mjs +0 -71
- package/esm2020/utils/conditional/if-expanded.directive.mjs +0 -96
- package/esm2020/utils/conditional/if-expanded.service.mjs +0 -60
- package/esm2020/utils/conditional/if-open.directive.mjs +0 -81
- package/esm2020/utils/conditional/index.mjs +0 -11
- package/esm2020/utils/destroy/destroy.service.mjs +0 -45
- package/esm2020/utils/destroy/index.mjs +0 -8
- package/esm2020/utils/dom-adapter/dom-adapter.mjs +0 -62
- package/esm2020/utils/enums/keys.enum.mjs +0 -33
- package/esm2020/utils/focus/arrow-key-direction.enum.mjs +0 -14
- package/esm2020/utils/focus/focus-on-view-init/focus-on-view-init.mjs +0 -90
- package/esm2020/utils/focus/focus-on-view-init/focus-on-view-init.module.mjs +0 -27
- package/esm2020/utils/focus/focus-on-view-init/focus-on-view-init.provider.mjs +0 -15
- package/esm2020/utils/focus/focus-on-view-init/index.mjs +0 -10
- package/esm2020/utils/focus/focus-trap/index.mjs +0 -8
- package/esm2020/utils/focus/focus-trap/standalone-cdk-trap-focus.directive.mjs +0 -35
- package/esm2020/utils/focus/focus.service.mjs +0 -95
- package/esm2020/utils/focus/focusable-item/basic-focusable-item.service.mjs +0 -55
- package/esm2020/utils/focus/focusable-item/custom-focusable-item-provider.mjs +0 -17
- package/esm2020/utils/focus/focusable-item/focusable-item.mjs +0 -9
- package/esm2020/utils/focus/focusable-item/linkers.mjs +0 -35
- package/esm2020/utils/focus/key-focus/enums/focus-direction.enum.mjs +0 -13
- package/esm2020/utils/focus/key-focus/index.mjs +0 -9
- package/esm2020/utils/focus/key-focus/interfaces.mjs +0 -8
- package/esm2020/utils/focus/key-focus/key-focus-item.mjs +0 -35
- package/esm2020/utils/focus/key-focus/key-focus.mjs +0 -199
- package/esm2020/utils/focus/key-focus/key-focus.module.mjs +0 -27
- package/esm2020/utils/focus/key-focus/roving-tabindex.mjs +0 -103
- package/esm2020/utils/focus/key-focus/util.mjs +0 -45
- package/esm2020/utils/focus/wrap-observable.mjs +0 -20
- package/esm2020/utils/forms/validation.mjs +0 -21
- package/esm2020/utils/host-wrapping/empty-anchor.mjs +0 -19
- package/esm2020/utils/host-wrapping/host-wrapper.mjs +0 -42
- package/esm2020/utils/host-wrapping/host-wrapping.module.mjs +0 -25
- package/esm2020/utils/i18n/common-strings.default.mjs +0 -137
- package/esm2020/utils/i18n/common-strings.interface.mjs +0 -8
- package/esm2020/utils/i18n/common-strings.service.mjs +0 -48
- package/esm2020/utils/i18n/index.mjs +0 -10
- package/esm2020/utils/id-generator/id-generator.service.mjs +0 -11
- package/esm2020/utils/index.mjs +0 -15
- package/esm2020/utils/loading/index.mjs +0 -10
- package/esm2020/utils/loading/loading-listener.mjs +0 -13
- package/esm2020/utils/loading/loading.mjs +0 -58
- package/esm2020/utils/loading/loading.module.mjs +0 -25
- package/esm2020/utils/outside-click/index.mjs +0 -10
- package/esm2020/utils/outside-click/outside-click.mjs +0 -49
- package/esm2020/utils/outside-click/outside-click.module.mjs +0 -25
- package/esm2020/utils/popover/enums/alignment.enum.mjs +0 -13
- package/esm2020/utils/popover/enums/axis.enum.mjs +0 -12
- package/esm2020/utils/popover/enums/positions.enum.mjs +0 -60
- package/esm2020/utils/popover/enums/side.enum.mjs +0 -12
- package/esm2020/utils/popover/enums/viewport-violation.enum.mjs +0 -14
- package/esm2020/utils/popover/index.mjs +0 -21
- package/esm2020/utils/popover/interfaces/popover-content-offset.interface.mjs +0 -8
- package/esm2020/utils/popover/interfaces/popover-position.interface.mjs +0 -8
- package/esm2020/utils/popover/interfaces/visibility-coords.interface.mjs +0 -8
- package/esm2020/utils/popover/popover-anchor.mjs +0 -26
- package/esm2020/utils/popover/popover-close-button.mjs +0 -52
- package/esm2020/utils/popover/popover-content.mjs +0 -161
- package/esm2020/utils/popover/popover-host.directive.mjs +0 -37
- package/esm2020/utils/popover/popover-open-close-button.mjs +0 -43
- package/esm2020/utils/popover/popover.module.mjs +0 -26
- package/esm2020/utils/popover/position-operators.mjs +0 -180
- package/esm2020/utils/popover/providers/popover-events.service.mjs +0 -142
- package/esm2020/utils/popover/providers/popover-position.service.mjs +0 -230
- package/esm2020/utils/popover/providers/popover-toggle.service.mjs +0 -75
- package/esm2020/utils/popover/stop-escape-propagation.directive.mjs +0 -43
- package/esm2020/utils/scrolling/scrolling-service.mjs +0 -31
- package/esm2020/utils/template-ref/index.mjs +0 -10
- package/esm2020/utils/template-ref/template-ref-container.mjs +0 -30
- package/esm2020/utils/template-ref/template-ref.module.mjs +0 -25
- package/esm2020/wizard/heading-level.mjs +0 -8
- package/esm2020/wizard/index.mjs +0 -20
- package/esm2020/wizard/providers/button-hub.service.mjs +0 -64
- package/esm2020/wizard/providers/header-actions.service.mjs +0 -36
- package/esm2020/wizard/providers/page-collection.service.mjs +0 -360
- package/esm2020/wizard/providers/wizard-navigation.service.mjs +0 -575
- package/esm2020/wizard/wizard-button.mjs +0 -188
- package/esm2020/wizard/wizard-header-action.mjs +0 -77
- package/esm2020/wizard/wizard-page-buttons.mjs +0 -22
- package/esm2020/wizard/wizard-page-header-actions.mjs +0 -22
- package/esm2020/wizard/wizard-page-navtitle.mjs +0 -22
- package/esm2020/wizard/wizard-page-title.mjs +0 -25
- package/esm2020/wizard/wizard-page.mjs +0 -652
- package/esm2020/wizard/wizard-stepnav-item.mjs +0 -204
- package/esm2020/wizard/wizard-stepnav.mjs +0 -55
- package/esm2020/wizard/wizard-title.mjs +0 -22
- package/esm2020/wizard/wizard.mjs +0 -525
- package/esm2020/wizard/wizard.module.mjs +0 -73
- package/fesm2015/clr-angular.mjs +0 -31527
- package/fesm2015/clr-angular.mjs.map +0 -1
- package/fesm2020/clr-angular.mjs +0 -31343
- package/fesm2020/clr-angular.mjs.map +0 -1
- package/forms/checkbox/checkbox-container.d.ts +0 -25
- package/forms/checkbox/checkbox-wrapper.d.ts +0 -22
- package/forms/checkbox/checkbox.d.ts +0 -20
- package/forms/checkbox/checkbox.module.d.ts +0 -14
- package/forms/checkbox/index.d.ts +0 -4
- package/forms/combobox/combobox-container.d.ts +0 -18
- package/forms/combobox/combobox.d.ts +0 -87
- package/forms/combobox/combobox.module.d.ts +0 -22
- package/forms/combobox/index.d.ts +0 -8
- package/forms/combobox/model/combobox.model.d.ts +0 -9
- package/forms/combobox/model/multi-select-combobox.model.d.ts +0 -12
- package/forms/combobox/model/pseudo-focus.model.d.ts +0 -7
- package/forms/combobox/model/single-select-combobox.model.d.ts +0 -10
- package/forms/combobox/option-group.d.ts +0 -9
- package/forms/combobox/option-items.directive.d.ts +0 -28
- package/forms/combobox/option-selected.directive.d.ts +0 -13
- package/forms/combobox/option.d.ts +0 -25
- package/forms/combobox/options.d.ts +0 -36
- package/forms/combobox/providers/combobox-container.service.d.ts +0 -7
- package/forms/combobox/providers/combobox-focus-handler.service.d.ts +0 -48
- package/forms/combobox/providers/option-selection.service.d.ts +0 -24
- package/forms/common/abstract-container.d.ts +0 -47
- package/forms/common/abstract-control.d.ts +0 -18
- package/forms/common/common.module.d.ts +0 -19
- package/forms/common/control-container.d.ts +0 -6
- package/forms/common/control.d.ts +0 -11
- package/forms/common/error.d.ts +0 -12
- package/forms/common/form.d.ts +0 -16
- package/forms/common/helper.d.ts +0 -12
- package/forms/common/if-control-state/abstract-if-state.d.ts +0 -18
- package/forms/common/if-control-state/if-control-state.service.d.ts +0 -17
- package/forms/common/if-control-state/if-error.d.ts +0 -19
- package/forms/common/if-control-state/if-success.d.ts +0 -16
- package/forms/common/index.d.ts +0 -14
- package/forms/common/label.d.ts +0 -32
- package/forms/common/layout.d.ts +0 -11
- package/forms/common/providers/container-id.service.d.ts +0 -18
- package/forms/common/providers/control-class.service.d.ts +0 -13
- package/forms/common/providers/control-id.service.d.ts +0 -11
- package/forms/common/providers/focus.service.d.ts +0 -9
- package/forms/common/providers/layout.service.d.ts +0 -23
- package/forms/common/providers/mark-control.service.d.ts +0 -9
- package/forms/common/providers/ng-control.service.d.ts +0 -27
- package/forms/common/success.d.ts +0 -12
- package/forms/common/wrapped-control.d.ts +0 -46
- package/forms/datalist/datalist-container.d.ts +0 -14
- package/forms/datalist/datalist-input.d.ts +0 -18
- package/forms/datalist/datalist.d.ts +0 -14
- package/forms/datalist/datalist.module.d.ts +0 -13
- package/forms/datalist/index.d.ts +0 -4
- package/forms/datalist/providers/datalist-id.service.d.ts +0 -11
- package/forms/datepicker/calendar.d.ts +0 -65
- package/forms/datepicker/date-container.d.ts +0 -72
- package/forms/datepicker/date-end-input.d.ts +0 -15
- package/forms/datepicker/date-input.d.ts +0 -67
- package/forms/datepicker/date-input.validator.d.ts +0 -27
- package/forms/datepicker/date-single-input.d.ts +0 -15
- package/forms/datepicker/date-start-input.d.ts +0 -15
- package/forms/datepicker/datepicker-action-buttons.d.ts +0 -16
- package/forms/datepicker/datepicker-view-manager.d.ts +0 -30
- package/forms/datepicker/datepicker.module.d.ts +0 -29
- package/forms/datepicker/day.d.ts +0 -40
- package/forms/datepicker/daypicker.d.ts +0 -44
- package/forms/datepicker/index.d.ts +0 -14
- package/forms/datepicker/interfaces/date-range.interface.d.ts +0 -13
- package/forms/datepicker/interfaces/day-of-week.interface.d.ts +0 -4
- package/forms/datepicker/model/calendar-view.model.d.ts +0 -74
- package/forms/datepicker/model/calendar.model.d.ts +0 -35
- package/forms/datepicker/model/day-view.model.d.ts +0 -16
- package/forms/datepicker/model/day.model.d.ts +0 -30
- package/forms/datepicker/model/year-range.model.d.ts +0 -34
- package/forms/datepicker/monthpicker.d.ts +0 -87
- package/forms/datepicker/providers/date-form-control.service.d.ts +0 -14
- package/forms/datepicker/providers/date-io.service.d.ts +0 -39
- package/forms/datepicker/providers/date-navigation.service.d.ts +0 -94
- package/forms/datepicker/providers/datepicker-enabled.service.d.ts +0 -15
- package/forms/datepicker/providers/datepicker-focus.service.d.ts +0 -16
- package/forms/datepicker/providers/locale-helper.service.d.ts +0 -46
- package/forms/datepicker/providers/view-manager.service.d.ts +0 -17
- package/forms/datepicker/utils/constants.d.ts +0 -24
- package/forms/datepicker/utils/date-utils.d.ts +0 -16
- package/forms/datepicker/yearpicker.d.ts +0 -78
- package/forms/file-input/file-input-container.d.ts +0 -27
- package/forms/file-input/file-input-validator-errors.d.ts +0 -52
- package/forms/file-input/file-input-validator.d.ts +0 -14
- package/forms/file-input/file-input-value-accessor.d.ts +0 -15
- package/forms/file-input/file-input.d.ts +0 -23
- package/forms/file-input/file-input.helpers.d.ts +0 -3
- package/forms/file-input/file-input.module.d.ts +0 -17
- package/forms/file-input/file-list.d.ts +0 -18
- package/forms/file-input/file-messages-template.d.ts +0 -19
- package/forms/file-input/file-messages.d.ts +0 -17
- package/forms/file-input/index.d.ts +0 -9
- package/forms/forms.module.d.ts +0 -20
- package/forms/index.d.ts +0 -14
- package/forms/input/index.d.ts +0 -3
- package/forms/input/input-container.d.ts +0 -6
- package/forms/input/input.d.ts +0 -11
- package/forms/input/input.module.d.ts +0 -13
- package/forms/number-input/index.d.ts +0 -3
- package/forms/number-input/number-input-container.d.ts +0 -17
- package/forms/number-input/number-input.d.ts +0 -22
- package/forms/number-input/number-input.module.d.ts +0 -13
- package/forms/password/index.d.ts +0 -3
- package/forms/password/password-container.d.ts +0 -32
- package/forms/password/password.d.ts +0 -16
- package/forms/password/password.module.d.ts +0 -13
- package/forms/radio/index.d.ts +0 -4
- package/forms/radio/radio-container.d.ts +0 -28
- package/forms/radio/radio-wrapper.d.ts +0 -9
- package/forms/radio/radio.d.ts +0 -10
- package/forms/radio/radio.module.d.ts +0 -14
- package/forms/range/index.d.ts +0 -3
- package/forms/range/range-container.d.ts +0 -22
- package/forms/range/range.d.ts +0 -10
- package/forms/range/range.module.d.ts +0 -13
- package/forms/select/index.d.ts +0 -3
- package/forms/select/select-container.d.ts +0 -20
- package/forms/select/select.d.ts +0 -11
- package/forms/select/select.module.d.ts +0 -13
- package/forms/textarea/index.d.ts +0 -3
- package/forms/textarea/textarea-container.d.ts +0 -6
- package/forms/textarea/textarea.d.ts +0 -11
- package/forms/textarea/textarea.module.d.ts +0 -13
- package/icon/icon.d.ts +0 -9
- package/icon/icon.module.d.ts +0 -10
- package/icon/index.d.ts +0 -2
- package/index.d.ts +0 -16
- package/layout/breadcrumbs/breadcrumb-item.d.ts +0 -5
- package/layout/breadcrumbs/breadcrumbs.constants.d.ts +0 -1
- package/layout/breadcrumbs/breadcrumbs.d.ts +0 -17
- package/layout/breadcrumbs/breadcrumbs.module.d.ts +0 -12
- package/layout/breadcrumbs/index.d.ts +0 -4
- package/layout/breadcrumbs/model/breadcrumbs.model.d.ts +0 -9
- package/layout/index.d.ts +0 -6
- package/layout/layout.module.d.ts +0 -11
- package/layout/main-container/index.d.ts +0 -2
- package/layout/main-container/main-container.d.ts +0 -17
- package/layout/main-container/main-container.module.d.ts +0 -11
- package/layout/nav/aria-current-link.d.ts +0 -13
- package/layout/nav/chocolate/index.d.ts +0 -2
- package/layout/nav/chocolate/main-container-willy-wonka.d.ts +0 -6
- package/layout/nav/chocolate/nav-detection-oompa-loompa.d.ts +0 -12
- package/layout/nav/header.d.ts +0 -31
- package/layout/nav/index.d.ts +0 -5
- package/layout/nav/nav-level.d.ts +0 -35
- package/layout/nav/navigation.module.d.ts +0 -16
- package/layout/nav/providers/responsive-navigation.service.d.ts +0 -18
- package/layout/nav/responsive-nav-codes.d.ts +0 -14
- package/layout/nav/responsive-nav-control-message.d.ts +0 -7
- package/layout/tabs/chocolate/active-oompa-loompa.d.ts +0 -13
- package/layout/tabs/chocolate/tabs-willy-wonka.d.ts +0 -6
- package/layout/tabs/enums/tabs-layout.enum.d.ts +0 -4
- package/layout/tabs/index.d.ts +0 -11
- package/layout/tabs/providers/tabs.service.d.ts +0 -16
- package/layout/tabs/tab-action.directive.d.ts +0 -5
- package/layout/tabs/tab-content.d.ts +0 -18
- package/layout/tabs/tab-link.directive.d.ts +0 -25
- package/layout/tabs/tab-overflow-content.d.ts +0 -5
- package/layout/tabs/tab.d.ts +0 -17
- package/layout/tabs/tabs-actions.d.ts +0 -7
- package/layout/tabs/tabs-id.provider.d.ts +0 -7
- package/layout/tabs/tabs.d.ts +0 -50
- package/layout/tabs/tabs.module.d.ts +0 -23
- package/layout/vertical-nav/index.d.ts +0 -6
- package/layout/vertical-nav/providers/vertical-nav-group-registration.service.d.ts +0 -8
- package/layout/vertical-nav/providers/vertical-nav-group.service.d.ts +0 -9
- package/layout/vertical-nav/providers/vertical-nav-icon.service.d.ts +0 -9
- package/layout/vertical-nav/providers/vertical-nav.service.d.ts +0 -17
- package/layout/vertical-nav/vertical-nav-group-children.d.ts +0 -5
- package/layout/vertical-nav/vertical-nav-group.d.ts +0 -32
- package/layout/vertical-nav/vertical-nav-icon.d.ts +0 -10
- package/layout/vertical-nav/vertical-nav-link.d.ts +0 -10
- package/layout/vertical-nav/vertical-nav.d.ts +0 -28
- package/layout/vertical-nav/vertical-nav.module.d.ts +0 -18
- package/modal/index.d.ts +0 -7
- package/modal/modal-body.d.ts +0 -22
- package/modal/modal-configuration.service.d.ts +0 -7
- package/modal/modal-host.component.d.ts +0 -5
- package/modal/modal-stack.service.d.ts +0 -15
- package/modal/modal.d.ts +0 -43
- package/modal/modal.module.d.ts +0 -15
- package/modal/side-panel.d.ts +0 -53
- package/modal/side-panel.module.d.ts +0 -13
- package/popover/common/abstract-popover.d.ts +0 -35
- package/popover/common/popover-host-anchor.token.d.ts +0 -2
- package/popover/common/popover-options.interface.d.ts +0 -7
- package/popover/common/popover.d.ts +0 -30
- package/popover/dropdown/dropdown-item.d.ts +0 -27
- package/popover/dropdown/dropdown-menu.d.ts +0 -15
- package/popover/dropdown/dropdown-trigger.d.ts +0 -16
- package/popover/dropdown/dropdown.d.ts +0 -17
- package/popover/dropdown/dropdown.module.d.ts +0 -15
- package/popover/dropdown/index.d.ts +0 -6
- package/popover/dropdown/menu-positions.d.ts +0 -1
- package/popover/dropdown/providers/dropdown-focus-handler.service.d.ts +0 -49
- package/popover/dropdown/providers/dropdown.service.d.ts +0 -16
- package/popover/index.d.ts +0 -4
- package/popover/popover.module.d.ts +0 -9
- package/popover/signpost/index.d.ts +0 -5
- package/popover/signpost/providers/signpost-focus-manager.service.d.ts +0 -8
- package/popover/signpost/providers/signpost-id.service.d.ts +0 -9
- package/popover/signpost/signpost-content.d.ts +0 -57
- package/popover/signpost/signpost-positions.d.ts +0 -10
- package/popover/signpost/signpost-title.d.ts +0 -5
- package/popover/signpost/signpost-trigger.d.ts +0 -29
- package/popover/signpost/signpost.d.ts +0 -27
- package/popover/signpost/signpost.module.d.ts +0 -17
- package/popover/tooltip/index.d.ts +0 -4
- package/popover/tooltip/providers/tooltip-id.service.d.ts +0 -9
- package/popover/tooltip/providers/tooltip-mouse.service.d.ts +0 -15
- package/popover/tooltip/tooltip-content.d.ts +0 -25
- package/popover/tooltip/tooltip-trigger.d.ts +0 -18
- package/popover/tooltip/tooltip.d.ts +0 -6
- package/popover/tooltip/tooltip.module.d.ts +0 -14
- package/progress/progress-bars/index.d.ts +0 -2
- package/progress/progress-bars/progress-bar.module.d.ts +0 -10
- package/progress/spinner/index.d.ts +0 -2
- package/progress/spinner/spinner.module.d.ts +0 -10
- package/src/utils/popover/README.md +0 -139
- package/timeline/enums/timeline-layout.enum.d.ts +0 -4
- package/timeline/enums/timeline-step-state.enum.d.ts +0 -7
- package/timeline/index.d.ts +0 -8
- package/timeline/interface/icon-attribute.interface.d.ts +0 -6
- package/timeline/providers/timeline-icon-attribute.service.d.ts +0 -12
- package/timeline/timeline-step-description.d.ts +0 -5
- package/timeline/timeline-step-header.d.ts +0 -5
- package/timeline/timeline-step-title.d.ts +0 -15
- package/timeline/timeline-step.d.ts +0 -19
- package/timeline/timeline.d.ts +0 -8
- package/timeline/timeline.module.d.ts +0 -15
- package/utils/animations/collapse/collapse.d.ts +0 -2
- package/utils/animations/collapse/index.d.ts +0 -1
- package/utils/animations/constants.d.ts +0 -2
- package/utils/animations/expandable-animation/base-expandable-animation.d.ts +0 -16
- package/utils/animations/expandable-animation/expandable-animation.d.ts +0 -16
- package/utils/animations/expandable-animation/expandable-animation.directive.d.ts +0 -16
- package/utils/animations/expandable-animation/expandable-animation.module.d.ts +0 -9
- package/utils/animations/expandable-animation/index.d.ts +0 -4
- package/utils/animations/fade/fade.d.ts +0 -2
- package/utils/animations/fade/index.d.ts +0 -1
- package/utils/animations/fade-slide/fade-slide.d.ts +0 -2
- package/utils/animations/fade-slide/index.d.ts +0 -1
- package/utils/animations/index.d.ts +0 -5
- package/utils/animations/slide/index.d.ts +0 -1
- package/utils/animations/slide/slide.d.ts +0 -2
- package/utils/assert/assert.helpers.d.ts +0 -1
- package/utils/breakpoints/breakpoints.d.ts +0 -15
- package/utils/cdk/cdk-drag.module.d.ts +0 -25
- package/utils/cdk/cdk-trap-focus.module.d.ts +0 -24
- package/utils/chocolate/oompa-loompa.d.ts +0 -13
- package/utils/chocolate/willy-wonka.d.ts +0 -11
- package/utils/component/is-boolean-attribute-set.d.ts +0 -1
- package/utils/conditional/conditional.module.d.ts +0 -12
- package/utils/conditional/if-active.directive.d.ts +0 -38
- package/utils/conditional/if-active.service.d.ts +0 -45
- package/utils/conditional/if-expanded.directive.d.ts +0 -24
- package/utils/conditional/if-expanded.service.d.ts +0 -20
- package/utils/conditional/if-open.directive.d.ts +0 -36
- package/utils/conditional/index.d.ts +0 -4
- package/utils/destroy/destroy.service.d.ts +0 -32
- package/utils/destroy/index.d.ts +0 -1
- package/utils/dom-adapter/dom-adapter.d.ts +0 -12
- package/utils/enums/keys.enum.d.ts +0 -24
- package/utils/focus/arrow-key-direction.enum.d.ts +0 -6
- package/utils/focus/focus-on-view-init/focus-on-view-init.d.ts +0 -19
- package/utils/focus/focus-on-view-init/focus-on-view-init.module.d.ts +0 -10
- package/utils/focus/focus-on-view-init/focus-on-view-init.provider.d.ts +0 -6
- package/utils/focus/focus-on-view-init/index.d.ts +0 -3
- package/utils/focus/focus-trap/index.d.ts +0 -1
- package/utils/focus/focus-trap/standalone-cdk-trap-focus.directive.d.ts +0 -13
- package/utils/focus/focus.service.d.ts +0 -26
- package/utils/focus/focusable-item/basic-focusable-item.service.d.ts +0 -20
- package/utils/focus/focusable-item/custom-focusable-item-provider.d.ts +0 -6
- package/utils/focus/focusable-item/focusable-item.d.ts +0 -12
- package/utils/focus/focusable-item/linkers.d.ts +0 -13
- package/utils/focus/key-focus/enums/focus-direction.enum.d.ts +0 -5
- package/utils/focus/key-focus/index.d.ts +0 -2
- package/utils/focus/key-focus/interfaces.d.ts +0 -5
- package/utils/focus/key-focus/key-focus-item.d.ts +0 -11
- package/utils/focus/key-focus/key-focus.d.ts +0 -44
- package/utils/focus/key-focus/key-focus.module.d.ts +0 -10
- package/utils/focus/key-focus/roving-tabindex.d.ts +0 -19
- package/utils/focus/key-focus/util.d.ts +0 -3
- package/utils/focus/wrap-observable.d.ts +0 -2
- package/utils/forms/validation.d.ts +0 -2
- package/utils/host-wrapping/empty-anchor.d.ts +0 -5
- package/utils/host-wrapping/host-wrapper.d.ts +0 -11
- package/utils/host-wrapping/host-wrapping.module.d.ts +0 -10
- package/utils/i18n/common-strings.default.d.ts +0 -2
- package/utils/i18n/common-strings.interface.d.ts +0 -309
- package/utils/i18n/common-strings.service.d.ts +0 -21
- package/utils/i18n/index.d.ts +0 -3
- package/utils/id-generator/id-generator.service.d.ts +0 -1
- package/utils/index.d.ts +0 -8
- package/utils/loading/index.d.ts +0 -3
- package/utils/loading/loading-listener.d.ts +0 -8
- package/utils/loading/loading.d.ts +0 -20
- package/utils/loading/loading.module.d.ts +0 -10
- package/utils/outside-click/index.d.ts +0 -3
- package/utils/outside-click/outside-click.d.ts +0 -11
- package/utils/outside-click/outside-click.module.d.ts +0 -8
- package/utils/popover/enums/alignment.enum.d.ts +0 -5
- package/utils/popover/enums/axis.enum.d.ts +0 -4
- package/utils/popover/enums/positions.enum.d.ts +0 -23
- package/utils/popover/enums/side.enum.d.ts +0 -4
- package/utils/popover/enums/viewport-violation.enum.d.ts +0 -6
- package/utils/popover/index.d.ts +0 -14
- package/utils/popover/interfaces/popover-content-offset.interface.d.ts +0 -4
- package/utils/popover/interfaces/popover-position.interface.d.ts +0 -16
- package/utils/popover/interfaces/visibility-coords.interface.d.ts +0 -6
- package/utils/popover/popover-anchor.d.ts +0 -8
- package/utils/popover/popover-close-button.d.ts +0 -17
- package/utils/popover/popover-content.d.ts +0 -42
- package/utils/popover/popover-host.directive.d.ts +0 -6
- package/utils/popover/popover-open-close-button.d.ts +0 -13
- package/utils/popover/popover.module.d.ts +0 -10
- package/utils/popover/position-operators.d.ts +0 -10
- package/utils/popover/providers/popover-events.service.d.ts +0 -34
- package/utils/popover/providers/popover-position.service.d.ts +0 -24
- package/utils/popover/providers/popover-toggle.service.d.ts +0 -28
- package/utils/popover/stop-escape-propagation.directive.d.ts +0 -14
- package/utils/scrolling/scrolling-service.d.ts +0 -9
- package/utils/template-ref/index.d.ts +0 -3
- package/utils/template-ref/template-ref-container.d.ts +0 -7
- package/utils/template-ref/template-ref.module.d.ts +0 -8
- package/wizard/heading-level.d.ts +0 -1
- package/wizard/index.d.ts +0 -13
- package/wizard/providers/button-hub.service.d.ts +0 -20
- package/wizard/providers/header-actions.service.d.ts +0 -15
- package/wizard/providers/page-collection.service.d.ts +0 -196
- package/wizard/providers/wizard-navigation.service.d.ts +0 -366
- package/wizard/wizard-button.d.ts +0 -28
- package/wizard/wizard-header-action.d.ts +0 -12
- package/wizard/wizard-page-buttons.d.ts +0 -8
- package/wizard/wizard-page-header-actions.d.ts +0 -8
- package/wizard/wizard-page-navtitle.d.ts +0 -8
- package/wizard/wizard-page-title.d.ts +0 -10
- package/wizard/wizard-page.d.ts +0 -494
- package/wizard/wizard-stepnav-item.d.ts +0 -42
- package/wizard/wizard-stepnav.d.ts +0 -9
- package/wizard/wizard-title.d.ts +0 -7
- package/wizard/wizard.d.ts +0 -256
- package/wizard/wizard.module.d.ts +0 -22
|
@@ -1,575 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2016-2025 Broadcom. All Rights Reserved.
|
|
3
|
-
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
4
|
-
* This software is released under MIT license.
|
|
5
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
6
|
-
*/
|
|
7
|
-
import { Injectable } from '@angular/core';
|
|
8
|
-
import { Subject } from 'rxjs';
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
import * as i1 from "./page-collection.service";
|
|
11
|
-
import * as i2 from "./button-hub.service";
|
|
12
|
-
/**
|
|
13
|
-
* Performs navigation functions for a wizard and manages the current page. Presented as a
|
|
14
|
-
* separate service to encapsulate the behavior of navigating and completing the wizard so
|
|
15
|
-
* that it can be shared across the wizard and its sub-components.
|
|
16
|
-
*
|
|
17
|
-
* The easiest way to access the navigation service is there a reference on your wizard. The
|
|
18
|
-
* Following example would allow you to access your instance of the wizard from your host
|
|
19
|
-
* component and thereby access the navigation service via YourHostComponent.wizard.navService.
|
|
20
|
-
*
|
|
21
|
-
* @example
|
|
22
|
-
* <clr-wizard #wizard ...>
|
|
23
|
-
*
|
|
24
|
-
* @example
|
|
25
|
-
* export class YourHostComponent {
|
|
26
|
-
* @ViewChild("wizard") wizard: Wizard;
|
|
27
|
-
* ...
|
|
28
|
-
* }
|
|
29
|
-
*
|
|
30
|
-
*/
|
|
31
|
-
export class WizardNavigationService {
|
|
32
|
-
/**
|
|
33
|
-
* Creates an instance of WizardNavigationService. Also sets up subscriptions
|
|
34
|
-
* that listen to the button service to determine when a button has been clicked
|
|
35
|
-
* in the wizard. Is also responsible for taking action when the page collection
|
|
36
|
-
* requests that navigation be reset to its pristine state.
|
|
37
|
-
*
|
|
38
|
-
* @memberof WizardNavigationService
|
|
39
|
-
*/
|
|
40
|
-
constructor(pageCollection, buttonService) {
|
|
41
|
-
this.pageCollection = pageCollection;
|
|
42
|
-
this.buttonService = buttonService;
|
|
43
|
-
/**
|
|
44
|
-
* A Boolean flag used by the ClrWizardPage to avoid a race condition when pages are
|
|
45
|
-
* loading and there is no current page defined.
|
|
46
|
-
*
|
|
47
|
-
* @memberof WizardNavigationService
|
|
48
|
-
*/
|
|
49
|
-
this.navServiceLoaded = false;
|
|
50
|
-
/**
|
|
51
|
-
* A boolean flag shared across the Wizard subcomponents that follows the value
|
|
52
|
-
* of the Wizard.forceForward (clrWizardForceForwardNavigation) input. When true,
|
|
53
|
-
* navigating backwards in the stepnav menu will reset any skipped pages' completed
|
|
54
|
-
* state to false.
|
|
55
|
-
*
|
|
56
|
-
* This is useful when a wizard executes validation on a page-by-page basis when
|
|
57
|
-
* the next button is clicked.
|
|
58
|
-
*
|
|
59
|
-
* @memberof WizardNavigationService
|
|
60
|
-
*/
|
|
61
|
-
this.forceForwardNavigation = false;
|
|
62
|
-
/**
|
|
63
|
-
* A boolean flag shared across the Wizard subcomponents that follows the value
|
|
64
|
-
* of the Wizard.stopCancel (clrWizardPreventDefaultCancel) input. When true, the cancel
|
|
65
|
-
* routine is subverted and must be reinstated in the host component calling Wizard.close()
|
|
66
|
-
* at some point.
|
|
67
|
-
*
|
|
68
|
-
* @memberof WizardNavigationService
|
|
69
|
-
*/
|
|
70
|
-
this.wizardHasAltCancel = false;
|
|
71
|
-
/**
|
|
72
|
-
* A boolean flag shared across the Wizard subcomponents that follows the value
|
|
73
|
-
* of the Wizard.stopNext (clrWizardPreventDefaultNext) input. When true, the next and finish
|
|
74
|
-
* routines are subverted and must be reinstated in the host component calling Wizard.next(),
|
|
75
|
-
* Wizard.forceNext(), Wizard.finish(), or Wizard.forceFinish().
|
|
76
|
-
*
|
|
77
|
-
* @memberof WizardNavigationService
|
|
78
|
-
*/
|
|
79
|
-
this.wizardHasAltNext = false;
|
|
80
|
-
/**
|
|
81
|
-
* A boolean flag shared across the Wizard subcomponents that follows the value
|
|
82
|
-
* of the Wizard.stopNavigation (clrWizardPreventNavigation) input. When true, all
|
|
83
|
-
* navigational elements in the wizard are disabled.
|
|
84
|
-
*
|
|
85
|
-
* This is intended to freeze the wizard in place. Events are not fired so this is
|
|
86
|
-
* not a way to implement alternate functionality for navigation.
|
|
87
|
-
*
|
|
88
|
-
* @memberof WizardNavigationService
|
|
89
|
-
*/
|
|
90
|
-
this.wizardStopNavigation = false;
|
|
91
|
-
/**
|
|
92
|
-
* A boolean flag shared with the stepnav items that prevents user clicks on
|
|
93
|
-
* stepnav items from navigating the wizard.
|
|
94
|
-
*
|
|
95
|
-
* @memberof WizardNavigationService
|
|
96
|
-
*/
|
|
97
|
-
this.wizardDisableStepnav = false;
|
|
98
|
-
/**
|
|
99
|
-
*
|
|
100
|
-
* @memberof WizardNavigationService
|
|
101
|
-
*/
|
|
102
|
-
this._currentChanged = new Subject();
|
|
103
|
-
/**
|
|
104
|
-
* @memberof WizardNavigationService
|
|
105
|
-
*/
|
|
106
|
-
this._movedToNextPage = new Subject();
|
|
107
|
-
/**
|
|
108
|
-
* @memberof WizardNavigationService
|
|
109
|
-
*/
|
|
110
|
-
this._wizardFinished = new Subject();
|
|
111
|
-
/**
|
|
112
|
-
* @memberof WizardNavigationService
|
|
113
|
-
*/
|
|
114
|
-
this._movedToPreviousPage = new Subject();
|
|
115
|
-
/**
|
|
116
|
-
* @memberof WizardNavigationService
|
|
117
|
-
*/
|
|
118
|
-
this._cancelWizard = new Subject();
|
|
119
|
-
this.previousButtonSubscription = buttonService.previousBtnClicked.subscribe(() => {
|
|
120
|
-
const currentPage = this.currentPage;
|
|
121
|
-
if (this.currentPageIsFirst || currentPage.previousStepDisabled) {
|
|
122
|
-
return;
|
|
123
|
-
}
|
|
124
|
-
currentPage.previousButtonClicked.emit(currentPage);
|
|
125
|
-
if (!currentPage.preventDefault) {
|
|
126
|
-
this.previous();
|
|
127
|
-
}
|
|
128
|
-
});
|
|
129
|
-
this.nextButtonSubscription = buttonService.nextBtnClicked.subscribe(() => {
|
|
130
|
-
this.checkAndCommitCurrentPage('next');
|
|
131
|
-
});
|
|
132
|
-
this.dangerButtonSubscription = buttonService.dangerBtnClicked.subscribe(() => {
|
|
133
|
-
this.checkAndCommitCurrentPage('danger');
|
|
134
|
-
});
|
|
135
|
-
this.finishButtonSubscription = buttonService.finishBtnClicked.subscribe(() => {
|
|
136
|
-
this.checkAndCommitCurrentPage('finish');
|
|
137
|
-
});
|
|
138
|
-
this.customButtonSubscription = buttonService.customBtnClicked.subscribe((type) => {
|
|
139
|
-
if (!this.wizardStopNavigation) {
|
|
140
|
-
this.currentPage.customButtonClicked.emit(type);
|
|
141
|
-
}
|
|
142
|
-
});
|
|
143
|
-
this.cancelButtonSubscription = buttonService.cancelBtnClicked.subscribe(() => {
|
|
144
|
-
if (this.wizardStopNavigation) {
|
|
145
|
-
return;
|
|
146
|
-
}
|
|
147
|
-
if (this.currentPage.preventDefault) {
|
|
148
|
-
this.currentPage.pageOnCancel.emit(this.currentPage);
|
|
149
|
-
}
|
|
150
|
-
else {
|
|
151
|
-
this.cancel();
|
|
152
|
-
}
|
|
153
|
-
});
|
|
154
|
-
this.pagesResetSubscription = pageCollection.pagesReset.subscribe(() => {
|
|
155
|
-
this.setFirstPageCurrent();
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
/**
|
|
159
|
-
* An Observable that is predominantly used amongst the subcomponents and services
|
|
160
|
-
* of the wizard. It is recommended that users listen to the ClrWizardPage.onLoad
|
|
161
|
-
* (clrWizardPageOnLoad) output instead of this Observable.
|
|
162
|
-
*
|
|
163
|
-
* @memberof WizardNavigationService
|
|
164
|
-
*/
|
|
165
|
-
get currentPageChanged() {
|
|
166
|
-
// TODO: MAKE SURE EXTERNAL OUTPUTS SAY 'CHANGE' NOT 'CHANGED'
|
|
167
|
-
// A BREAKING CHANGE SO AWAITING MINOR RELEASE
|
|
168
|
-
return this._currentChanged.asObservable();
|
|
169
|
-
}
|
|
170
|
-
/**
|
|
171
|
-
* @memberof WizardNavigationService
|
|
172
|
-
*/
|
|
173
|
-
get currentPageTitle() {
|
|
174
|
-
// when the querylist of pages is empty. this is the first place it fails...
|
|
175
|
-
if (!this.currentPage) {
|
|
176
|
-
return null;
|
|
177
|
-
}
|
|
178
|
-
return this.currentPage.title;
|
|
179
|
-
}
|
|
180
|
-
/**
|
|
181
|
-
* Returns a Boolean that tells you whether or not the current page is the first
|
|
182
|
-
* page in the Wizard.
|
|
183
|
-
*
|
|
184
|
-
* This is helpful for determining whether a page is navigable.
|
|
185
|
-
*
|
|
186
|
-
* @memberof WizardNavigationService
|
|
187
|
-
*/
|
|
188
|
-
get currentPageIsFirst() {
|
|
189
|
-
return this.pageCollection.firstPage === this.currentPage;
|
|
190
|
-
}
|
|
191
|
-
/**
|
|
192
|
-
* Returns a Boolean that tells you whether or not the current page is the
|
|
193
|
-
* last page in the Wizard.
|
|
194
|
-
*
|
|
195
|
-
* This is used to determine which buttons should display in the wizard footer.
|
|
196
|
-
*
|
|
197
|
-
* @memberof WizardNavigationService
|
|
198
|
-
*/
|
|
199
|
-
get currentPageIsLast() {
|
|
200
|
-
return this.pageCollection.lastPage === this.currentPage;
|
|
201
|
-
}
|
|
202
|
-
/**
|
|
203
|
-
* Returns the ClrWizardPage object of the current page or null.
|
|
204
|
-
*
|
|
205
|
-
* @memberof WizardNavigationService
|
|
206
|
-
*/
|
|
207
|
-
get currentPage() {
|
|
208
|
-
if (!this._currentPage) {
|
|
209
|
-
return null;
|
|
210
|
-
}
|
|
211
|
-
return this._currentPage;
|
|
212
|
-
}
|
|
213
|
-
/**
|
|
214
|
-
* Accepts a ClrWizardPage object, since that object to be the current/active
|
|
215
|
-
* page in the wizard, and emits the ClrWizardPage.onLoad (clrWizardPageOnLoad)
|
|
216
|
-
* event for that page.
|
|
217
|
-
*
|
|
218
|
-
* Note that all of this work is bypassed if the ClrWizardPage object is already
|
|
219
|
-
* the current page.
|
|
220
|
-
*
|
|
221
|
-
* @memberof WizardNavigationService
|
|
222
|
-
*/
|
|
223
|
-
set currentPage(page) {
|
|
224
|
-
if (this._currentPage !== page && !this.wizardStopNavigation) {
|
|
225
|
-
this._currentPage = page;
|
|
226
|
-
page.onLoad.emit(page.id);
|
|
227
|
-
this._currentChanged.next(page);
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
/**
|
|
231
|
-
* An observable used internally to alert the wizard that forward navigation
|
|
232
|
-
* has occurred. It is recommended that you use the Wizard.onMoveNext
|
|
233
|
-
* (clrWizardOnNext) output instead of this one.
|
|
234
|
-
*
|
|
235
|
-
* @memberof WizardNavigationService
|
|
236
|
-
*/
|
|
237
|
-
get movedToNextPage() {
|
|
238
|
-
return this._movedToNextPage.asObservable();
|
|
239
|
-
}
|
|
240
|
-
/**
|
|
241
|
-
* An observable used internally to alert the wizard that the nav service
|
|
242
|
-
* has approved completion of the wizard.
|
|
243
|
-
*
|
|
244
|
-
* It is recommended that you use the Wizard.wizardFinished (clrWizardOnFinish)
|
|
245
|
-
* output instead of this one.
|
|
246
|
-
*
|
|
247
|
-
* @memberof WizardNavigationService
|
|
248
|
-
*/
|
|
249
|
-
get wizardFinished() {
|
|
250
|
-
return this._wizardFinished.asObservable();
|
|
251
|
-
}
|
|
252
|
-
/**
|
|
253
|
-
* Notifies the wizard when backwards navigation has occurred via the
|
|
254
|
-
* previous button.
|
|
255
|
-
*
|
|
256
|
-
* @memberof WizardNavigationService
|
|
257
|
-
*/
|
|
258
|
-
get movedToPreviousPage() {
|
|
259
|
-
return this._movedToPreviousPage.asObservable();
|
|
260
|
-
}
|
|
261
|
-
/**
|
|
262
|
-
* Notifies the wizard that a user is trying to cancel it.
|
|
263
|
-
*
|
|
264
|
-
* @memberof WizardNavigationService
|
|
265
|
-
*/
|
|
266
|
-
get notifyWizardCancel() {
|
|
267
|
-
return this._cancelWizard.asObservable();
|
|
268
|
-
}
|
|
269
|
-
/**
|
|
270
|
-
*
|
|
271
|
-
* @memberof WizardNavigationService
|
|
272
|
-
*/
|
|
273
|
-
ngOnDestroy() {
|
|
274
|
-
this.previousButtonSubscription.unsubscribe();
|
|
275
|
-
this.nextButtonSubscription.unsubscribe();
|
|
276
|
-
this.dangerButtonSubscription.unsubscribe();
|
|
277
|
-
this.finishButtonSubscription.unsubscribe();
|
|
278
|
-
this.customButtonSubscription.unsubscribe();
|
|
279
|
-
this.cancelButtonSubscription.unsubscribe();
|
|
280
|
-
this.pagesResetSubscription.unsubscribe();
|
|
281
|
-
}
|
|
282
|
-
/**
|
|
283
|
-
* This is a public function that can be used to programmatically advance
|
|
284
|
-
* the user to the next page.
|
|
285
|
-
*
|
|
286
|
-
* When invoked, this method will move the wizard to the next page after
|
|
287
|
-
* successful validation. Note that this method goes through all checks
|
|
288
|
-
* and event emissions as if Wizard.next(false) had been called.
|
|
289
|
-
*
|
|
290
|
-
* In most cases, it makes more sense to use Wizard.next(false).
|
|
291
|
-
*
|
|
292
|
-
* @memberof WizardNavigationService
|
|
293
|
-
*/
|
|
294
|
-
next() {
|
|
295
|
-
if (this.currentPageIsLast) {
|
|
296
|
-
this.checkAndCommitCurrentPage('finish');
|
|
297
|
-
}
|
|
298
|
-
else {
|
|
299
|
-
this.checkAndCommitCurrentPage('next');
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
/**
|
|
303
|
-
* Bypasses checks and most event emissions to force a page to navigate forward.
|
|
304
|
-
*
|
|
305
|
-
* Comparable to calling Wizard.next() or Wizard.forceNext().
|
|
306
|
-
*
|
|
307
|
-
* @memberof WizardNavigationService
|
|
308
|
-
*/
|
|
309
|
-
forceNext() {
|
|
310
|
-
const currentPage = this.currentPage;
|
|
311
|
-
const nextPage = this.pageCollection.getNextPage(currentPage);
|
|
312
|
-
// catch errant null or undefineds that creep in
|
|
313
|
-
if (!nextPage) {
|
|
314
|
-
throw new Error('The wizard has no next page to go to.');
|
|
315
|
-
}
|
|
316
|
-
if (this.wizardStopNavigation) {
|
|
317
|
-
return;
|
|
318
|
-
}
|
|
319
|
-
if (!currentPage.completed) {
|
|
320
|
-
// this is a state that alt next flows can get themselves in...
|
|
321
|
-
this.pageCollection.commitPage(currentPage);
|
|
322
|
-
}
|
|
323
|
-
this.currentPage = nextPage;
|
|
324
|
-
}
|
|
325
|
-
/**
|
|
326
|
-
* Accepts a button/action type as a parameter. Encapsulates all logic for
|
|
327
|
-
* event emissions, state of the current page, and wizard and page level overrides.
|
|
328
|
-
*
|
|
329
|
-
* Avoid calling this function directly unless you really know what you're doing.
|
|
330
|
-
*
|
|
331
|
-
* @memberof WizardNavigationService
|
|
332
|
-
*/
|
|
333
|
-
checkAndCommitCurrentPage(buttonType) {
|
|
334
|
-
const currentPage = this.currentPage;
|
|
335
|
-
if (!currentPage.readyToComplete || this.wizardStopNavigation) {
|
|
336
|
-
return;
|
|
337
|
-
}
|
|
338
|
-
const iAmTheLastPage = this.currentPageIsLast;
|
|
339
|
-
const isNext = buttonType === 'next';
|
|
340
|
-
const isDanger = buttonType === 'danger';
|
|
341
|
-
const isDangerNext = isDanger && !iAmTheLastPage;
|
|
342
|
-
const isDangerFinish = isDanger && iAmTheLastPage;
|
|
343
|
-
const isFinish = buttonType === 'finish' || isDangerFinish;
|
|
344
|
-
if (isFinish && !iAmTheLastPage) {
|
|
345
|
-
return;
|
|
346
|
-
}
|
|
347
|
-
currentPage.primaryButtonClicked.emit(buttonType);
|
|
348
|
-
if (isFinish) {
|
|
349
|
-
currentPage.finishButtonClicked.emit(currentPage);
|
|
350
|
-
}
|
|
351
|
-
else if (isDanger) {
|
|
352
|
-
currentPage.dangerButtonClicked.emit();
|
|
353
|
-
}
|
|
354
|
-
else if (isNext) {
|
|
355
|
-
currentPage.nextButtonClicked.emit();
|
|
356
|
-
}
|
|
357
|
-
if (currentPage.stopNext || currentPage.preventDefault) {
|
|
358
|
-
currentPage.onCommit.emit(currentPage.id);
|
|
359
|
-
return;
|
|
360
|
-
}
|
|
361
|
-
// order is very important with these emitters!
|
|
362
|
-
if (isFinish) {
|
|
363
|
-
// mark page as complete
|
|
364
|
-
if (!this.wizardHasAltNext) {
|
|
365
|
-
this.pageCollection.commitPage(currentPage);
|
|
366
|
-
}
|
|
367
|
-
this._wizardFinished.next();
|
|
368
|
-
}
|
|
369
|
-
if (this.wizardHasAltNext) {
|
|
370
|
-
this.pageCollection.commitPage(currentPage);
|
|
371
|
-
if (isNext || isDangerNext) {
|
|
372
|
-
this._movedToNextPage.next(true);
|
|
373
|
-
}
|
|
374
|
-
// jump out here, no matter what type we're looking at
|
|
375
|
-
return;
|
|
376
|
-
}
|
|
377
|
-
if (isNext || isDangerNext) {
|
|
378
|
-
this.forceNext();
|
|
379
|
-
}
|
|
380
|
-
if (!this.wizardHasAltNext && !this.wizardStopNavigation) {
|
|
381
|
-
this._movedToNextPage.next(true);
|
|
382
|
-
}
|
|
383
|
-
}
|
|
384
|
-
/**
|
|
385
|
-
* This is a public function that can be used to programmatically conclude
|
|
386
|
-
* the wizard.
|
|
387
|
-
*
|
|
388
|
-
* When invoked, this method will initiate the work involved with finalizing
|
|
389
|
-
* and finishing the wizard workflow. Note that this method goes through all
|
|
390
|
-
* checks and event emissions as if Wizard.finish(false) had been called.
|
|
391
|
-
*
|
|
392
|
-
* In most cases, it makes more sense to use Wizard.finish(false).
|
|
393
|
-
*
|
|
394
|
-
* @memberof WizardNavigationService
|
|
395
|
-
*/
|
|
396
|
-
finish() {
|
|
397
|
-
this.checkAndCommitCurrentPage('finish');
|
|
398
|
-
}
|
|
399
|
-
/**
|
|
400
|
-
* Programmatically moves the wizard to the page before the current page.
|
|
401
|
-
*
|
|
402
|
-
* In most instances, it makes more sense to call Wizard.previous()
|
|
403
|
-
* which does the same thing.
|
|
404
|
-
*
|
|
405
|
-
* @memberof WizardNavigationService
|
|
406
|
-
*/
|
|
407
|
-
previous() {
|
|
408
|
-
if (this.currentPageIsFirst || this.wizardStopNavigation) {
|
|
409
|
-
return;
|
|
410
|
-
}
|
|
411
|
-
const previousPage = this.pageCollection.getPreviousPage(this.currentPage);
|
|
412
|
-
if (!previousPage) {
|
|
413
|
-
return;
|
|
414
|
-
}
|
|
415
|
-
this._movedToPreviousPage.next(true);
|
|
416
|
-
if (this.forceForwardNavigation) {
|
|
417
|
-
this.currentPage.completed = false;
|
|
418
|
-
}
|
|
419
|
-
this.currentPage = previousPage;
|
|
420
|
-
}
|
|
421
|
-
/**
|
|
422
|
-
* Allows a hook into the cancel workflow of the wizard from the nav service. Note that
|
|
423
|
-
* this route goes through all checks and event emissions as if a cancel button had
|
|
424
|
-
* been clicked.
|
|
425
|
-
*
|
|
426
|
-
* In most cases, users looking for a hook into the cancel routine are actually looking
|
|
427
|
-
* for a way to close the wizard from their host component because they have prevented
|
|
428
|
-
* the default cancel action.
|
|
429
|
-
*
|
|
430
|
-
* In this instance, it is recommended that you use Wizard.close() to avoid any event
|
|
431
|
-
* emission loop resulting from an event handler calling back into routine that will
|
|
432
|
-
* again evoke the events it handles.
|
|
433
|
-
*
|
|
434
|
-
* @memberof WizardNavigationService
|
|
435
|
-
*/
|
|
436
|
-
cancel() {
|
|
437
|
-
this._cancelWizard.next();
|
|
438
|
-
}
|
|
439
|
-
/**
|
|
440
|
-
* Performs all required checks to determine if a user can navigate to a page. Checking at each
|
|
441
|
-
* point if a page is navigable -- completed where the page immediately after the last completed
|
|
442
|
-
* page.
|
|
443
|
-
*
|
|
444
|
-
* Takes two parameters. The first one must be either the ClrWizardPage object or the ID of the
|
|
445
|
-
* ClrWizardPage object that you want to make the current page.
|
|
446
|
-
*
|
|
447
|
-
* The second parameter is optional and is a Boolean flag for "lazy completion". What this means
|
|
448
|
-
* is the Wizard will mark all pages between the current page and the page you want to navigate
|
|
449
|
-
* to as completed. This is useful for informational wizards that do not require user action,
|
|
450
|
-
* allowing an easy means for users to jump ahead.
|
|
451
|
-
*
|
|
452
|
-
* To avoid checks on navigation, use ClrWizardPage.makeCurrent() instead.
|
|
453
|
-
*
|
|
454
|
-
* @memberof WizardNavigationService
|
|
455
|
-
*/
|
|
456
|
-
goTo(pageToGoToOrId, lazyComplete = false) {
|
|
457
|
-
const myPages = this.pageCollection;
|
|
458
|
-
const pageToGoTo = typeof pageToGoToOrId === 'string' ? myPages.getPageById(pageToGoToOrId) : pageToGoToOrId;
|
|
459
|
-
const currentPage = this.currentPage;
|
|
460
|
-
// no point in going to the current page. you're there already!
|
|
461
|
-
// also hard block on any navigation when stopNavigation is true
|
|
462
|
-
if (pageToGoTo === currentPage || this.wizardStopNavigation) {
|
|
463
|
-
return;
|
|
464
|
-
}
|
|
465
|
-
const currentPageIndex = myPages.getPageIndex(currentPage);
|
|
466
|
-
const goToPageIndex = myPages.getPageIndex(pageToGoTo);
|
|
467
|
-
const goingForward = goToPageIndex > currentPageIndex;
|
|
468
|
-
const pagesToCheck = myPages.getPageRangeFromPages(this.currentPage, pageToGoTo);
|
|
469
|
-
const okayToMove = lazyComplete || this.canGoTo(pagesToCheck);
|
|
470
|
-
if (!okayToMove) {
|
|
471
|
-
return;
|
|
472
|
-
}
|
|
473
|
-
if (goingForward && lazyComplete) {
|
|
474
|
-
pagesToCheck.forEach((page) => {
|
|
475
|
-
if (page !== pageToGoTo) {
|
|
476
|
-
page.completed = true;
|
|
477
|
-
}
|
|
478
|
-
});
|
|
479
|
-
}
|
|
480
|
-
else if (!goingForward && this.forceForwardNavigation) {
|
|
481
|
-
pagesToCheck.forEach((page) => {
|
|
482
|
-
page.completed = false;
|
|
483
|
-
});
|
|
484
|
-
}
|
|
485
|
-
this.currentPage = pageToGoTo;
|
|
486
|
-
}
|
|
487
|
-
/**
|
|
488
|
-
* Accepts a range of ClrWizardPage objects as a parameter. Performs the work of checking
|
|
489
|
-
* those objects to determine if navigation can be accomplished.
|
|
490
|
-
*
|
|
491
|
-
* @memberof WizardNavigationService
|
|
492
|
-
*/
|
|
493
|
-
canGoTo(pagesToCheck) {
|
|
494
|
-
let okayToMove = true;
|
|
495
|
-
const myPages = this.pageCollection;
|
|
496
|
-
// previous page can be important when moving because if it's completed it
|
|
497
|
-
// allows us to move to the page even if it's incomplete...
|
|
498
|
-
let previousPagePasses;
|
|
499
|
-
if (!pagesToCheck || pagesToCheck.length < 1) {
|
|
500
|
-
return false;
|
|
501
|
-
}
|
|
502
|
-
pagesToCheck.forEach((page) => {
|
|
503
|
-
if (!okayToMove) {
|
|
504
|
-
return;
|
|
505
|
-
}
|
|
506
|
-
if (page.completed) {
|
|
507
|
-
// default is true. just jump out instead of complicating it.
|
|
508
|
-
return;
|
|
509
|
-
}
|
|
510
|
-
// so we know our page is not completed...
|
|
511
|
-
const previousPage = myPages.getPageIndex(page) > 0 ? myPages.getPreviousPage(page) : null;
|
|
512
|
-
previousPagePasses = previousPage === null || previousPage.completed === true;
|
|
513
|
-
// we are false if not the current page AND previous page is not completed
|
|
514
|
-
// (but must have a previous page)
|
|
515
|
-
if (!page.current && !previousPagePasses) {
|
|
516
|
-
okayToMove = false;
|
|
517
|
-
}
|
|
518
|
-
// falls through to true as default
|
|
519
|
-
});
|
|
520
|
-
return okayToMove;
|
|
521
|
-
}
|
|
522
|
-
/**
|
|
523
|
-
* Looks through the collection of pages to find the first one that is incomplete
|
|
524
|
-
* and makes that page the current/active page.
|
|
525
|
-
*
|
|
526
|
-
* @memberof WizardNavigationService
|
|
527
|
-
*/
|
|
528
|
-
setLastEnabledPageCurrent() {
|
|
529
|
-
const allPages = this.pageCollection.pagesAsArray;
|
|
530
|
-
let lastCompletedPageIndex = null;
|
|
531
|
-
allPages.forEach((page, index) => {
|
|
532
|
-
if (page.completed) {
|
|
533
|
-
lastCompletedPageIndex = index;
|
|
534
|
-
}
|
|
535
|
-
});
|
|
536
|
-
if (lastCompletedPageIndex === null) {
|
|
537
|
-
// always is at least the first item...
|
|
538
|
-
lastCompletedPageIndex = 0;
|
|
539
|
-
}
|
|
540
|
-
else if (lastCompletedPageIndex + 1 < allPages.length) {
|
|
541
|
-
lastCompletedPageIndex = lastCompletedPageIndex + 1;
|
|
542
|
-
}
|
|
543
|
-
this.currentPage = allPages[lastCompletedPageIndex];
|
|
544
|
-
}
|
|
545
|
-
/**
|
|
546
|
-
* Finds the first page in the collection of pages and makes that page the
|
|
547
|
-
* current/active page.
|
|
548
|
-
*
|
|
549
|
-
* @memberof WizardNavigationService
|
|
550
|
-
*/
|
|
551
|
-
setFirstPageCurrent() {
|
|
552
|
-
this.currentPage = this.pageCollection.pagesAsArray[0];
|
|
553
|
-
}
|
|
554
|
-
/**
|
|
555
|
-
* Updates the stepnav on the left side of the wizard when pages are dynamically
|
|
556
|
-
* added or removed from the collection of pages.
|
|
557
|
-
*
|
|
558
|
-
* @memberof WizardNavigationService
|
|
559
|
-
*/
|
|
560
|
-
updateNavigation() {
|
|
561
|
-
let toSetCurrent;
|
|
562
|
-
this.pageCollection.updateCompletedStates();
|
|
563
|
-
const currentPageRemoved = this.pageCollection.pagesAsArray.indexOf(this.currentPage) < 0;
|
|
564
|
-
if (currentPageRemoved) {
|
|
565
|
-
toSetCurrent = this.pageCollection.findFirstIncompletePage();
|
|
566
|
-
this.currentPage = toSetCurrent;
|
|
567
|
-
}
|
|
568
|
-
}
|
|
569
|
-
}
|
|
570
|
-
WizardNavigationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: WizardNavigationService, deps: [{ token: i1.PageCollectionService }, { token: i2.ButtonHubService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
571
|
-
WizardNavigationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: WizardNavigationService });
|
|
572
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: WizardNavigationService, decorators: [{
|
|
573
|
-
type: Injectable
|
|
574
|
-
}], ctorParameters: function () { return [{ type: i1.PageCollectionService }, { type: i2.ButtonHubService }]; } });
|
|
575
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLW5hdmlnYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL3dpemFyZC9wcm92aWRlcnMvd2l6YXJkLW5hdmlnYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQTBCLE1BQU0sZUFBZSxDQUFDO0FBQ25FLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7QUFPM0M7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCRztBQUVILE1BQU0sT0FBTyx1QkFBdUI7SUFvSmxDOzs7Ozs7O09BT0c7SUFDSCxZQUFtQixjQUFxQyxFQUFTLGFBQStCO1FBQTdFLG1CQUFjLEdBQWQsY0FBYyxDQUF1QjtRQUFTLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQXBHaEc7Ozs7O1dBS0c7UUFDSCxxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFFekI7Ozs7Ozs7Ozs7V0FVRztRQUNILDJCQUFzQixHQUFHLEtBQUssQ0FBQztRQUUvQjs7Ozs7OztXQU9HO1FBQ0gsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBRTNCOzs7Ozs7O1dBT0c7UUFDSCxxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFFekI7Ozs7Ozs7OztXQVNHO1FBQ0gseUJBQW9CLEdBQUcsS0FBSyxDQUFDO1FBRTdCOzs7OztXQUtHO1FBQ0gseUJBQW9CLEdBQUcsS0FBSyxDQUFDO1FBTzdCOzs7V0FHRztRQUNLLG9CQUFlLEdBQUcsSUFBSSxPQUFPLEVBQWlCLENBQUM7UUFFdkQ7O1dBRUc7UUFDSyxxQkFBZ0IsR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO1FBRWxEOztXQUVHO1FBQ0ssb0JBQWUsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRTlDOztXQUVHO1FBQ0sseUJBQW9CLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztR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QUFJLENBQUMsY0FBYyxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFFNUMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxRixJQUFJLGtCQUFrQixFQUFFO1lBQ3RCLFlBQVksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLHVCQUF1QixFQUFFLENBQUM7WUFDN0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxZQUFZLENBQUM7U0FDakM7SUFDSCxDQUFDOztvSEExcEJVLHVCQUF1Qjt3SEFBdkIsdUJBQXVCOzJGQUF2Qix1QkFBdUI7a0JBRG5DLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE2LTIwMjUgQnJvYWRjb20uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBUaGUgdGVybSBcIkJyb2FkY29tXCIgcmVmZXJzIHRvIEJyb2FkY29tIEluYy4gYW5kL29yIGl0cyBzdWJzaWRpYXJpZXMuXG4gKiBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlLlxuICogVGhlIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gTElDRU5TRSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBwcm9qZWN0LlxuICovXG5cbmltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBDbHJXaXphcmRQYWdlIH0gZnJvbSAnLi4vd2l6YXJkLXBhZ2UnO1xuaW1wb3J0IHsgQnV0dG9uSHViU2VydmljZSB9IGZyb20gJy4vYnV0dG9uLWh1Yi5zZXJ2aWNlJztcbmltcG9ydCB7IFBhZ2VDb2xsZWN0aW9uU2VydmljZSB9IGZyb20gJy4vcGFnZS1jb2xsZWN0aW9uLnNlcnZpY2UnO1xuXG4vKipcbiAqIFBlcmZvcm1zIG5hdmlnYXRpb24gZnVuY3Rpb25zIGZvciBhIHdpemFyZCBhbmQgbWFuYWdlcyB0aGUgY3VycmVudCBwYWdlLiBQcmVzZW50ZWQgYXMgYVxuICogc2VwYXJhdGUgc2VydmljZSB0byBlbmNhcHN1bGF0ZSB0aGUgYmVoYXZpb3Igb2YgbmF2aWdhdGluZyBhbmQgY29tcGxldGluZyB0aGUgd2l6YXJkIHNvXG4gKiB0aGF0IGl0IGNhbiBiZSBzaGFyZWQgYWNyb3NzIHRoZSB3aXphcmQgYW5kIGl0cyBzdWItY29tcG9uZW50cy5cbiAqXG4gKiBUaGUgZWFzaWVzdCB3YXkgdG8gYWNjZXNzIHRoZSBuYXZpZ2F0aW9uIHNlcnZpY2UgaXMgdGhlcmUgYSByZWZlcmVuY2Ugb24geW91ciB3aXphcmQuIFRoZVxuICogRm9sbG93aW5nIGV4YW1wbGUgd291bGQgYWxsb3cgeW91IHRvIGFjY2VzcyB5b3VyIGluc3RhbmNlIG9mIHRoZSB3aXphcmQgZnJvbSB5b3VyIGhvc3RcbiAqIGNvbXBvbmVudCBhbmQgdGhlcmVieSBhY2Nlc3MgdGhlIG5hdmlnYXRpb24gc2VydmljZSB2aWEgWW91ckhvc3RDb21wb25lbnQud2l6YXJkLm5hdlNlcnZpY2UuXG4gKlxuICogQGV4YW1wbGVcbiAqIDxjbHItd2l6YXJkICN3aXphcmQgLi4uPlxuICpcbiAqIEBleGFtcGxlXG4gKiBleHBvcnQgY2xhc3MgWW91ckhvc3RDb21wb25lbnQge1xuICogICBAVmlld0NoaWxkKFwid2l6YXJkXCIpIHdpemFyZDogV2l6YXJkO1xuICogICAuLi5cbiAqIH1cbiAqXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBXaXphcmROYXZpZ2F0aW9uU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBJcyBub3RpZmllZCB3aGVuIGEgcHJldmlvdXMgYnV0dG9uIGlzIGNsaWNrZWQgaW4gdGhlIHdpemFyZC4gUGVyZm9ybXMgY2hlY2tzXG4gICAqIGJlZm9yZSBhbGVydGluZyB0aGUgY3VycmVudCBwYWdlIG9mIHRoZSBidXR0b24gY2xpY2suIEVuYWN0cyBuYXZpZ2F0aW9uIHRvXG4gICAqIHRoZSBwcmV2aW91cyBwYWdlIGlmIG5vdCBvdmVycmlkZGVuIGF0IHRoZSBwYWdlIGxldmVsLlxuICAgKlxuICAgKiBAbWVtYmVyb2YgV2l6YXJkTmF2aWdhdGlvblNlcnZpY2VcbiAgICovXG4gIHByZXZpb3VzQnV0dG9uU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgLyoqXG4gICAqIElzIG5vdGlmaWVkIHdoZW4gYSBOZXh0IGJ1dHRvbiBpcyBjbGlja2VkIGluIHRoZSB3aXphcmQuXG4gICAqXG4gICAqIEBtZW1iZXJvZiBXaXphcmROYXZpZ2F0aW9uU2VydmljZVxuICAgKi9cbiAgbmV4dEJ1dHRvblN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIC8qKlxuICAgKiBJcyBub3RpZmllZCB3aGVuIGEgZGFuZ2VyIGJ1dHRvbiBpcyBjbGlja2VkIGluIHRoZSB3aXphcmQuXG4gICAqXG4gICAqIEBtZW1iZXJvZiBXaXphcmROYXZpZ2F0aW9uU2VydmljZVxuICAgKi9cbiAgZGFuZ2VyQnV0dG9uU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgLyoqXG4gICAqIElzIG5vdGlmaWVkIHdoZW4gYSAgZmluaXNoIGJ1dHRvbiBpcyBjbGlja2VkIGluIHRoZSB3aXphcmQuXG4gICAqXG4gICAqIEBtZW1iZXJvZiBXaXphcmROYXZpZ2F0aW9uU2VydmljZVxuICAgKi9cbiAgZmluaXNoQnV0dG9uU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgLyoqXG4gICAqIElzIG5vdGlmaWVkIHdoZW4gYSBDdXN0b20gYnV0dG9uIGlzIGNsaWNrZWQgaW4gdGhlIHdpemFyZC5cbiAgICpcbiAgICogQG1lbWJlcm9mIFdpemFyZE5hdmlnYXRpb25TZXJ2aWNlXG4gICAqL1xuICBjdXN0b21CdXR0b25TdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAvKipcbiAgICogSXMgbm90aWZpZWQgd2hlbiBhIENhbmNlbCBidXR0b24gaXMgY2xpY2tlZCBpbiB0aGUgd2l6YXJkLiBOb3RpZmllcyB0aGUgd2l6YXJkLFxuICAgKiB3aGljaCBoYW5kbGVzIGFsbCBjYW5jZWwgZnVuY3Rpb25hbGl0eSwgaWYgY2FuY2VsIGlzIG5vdCBvdmVycmlkZGVuIGF0IHRoZSBwYWdlXG4gICAqIGxldmVsLlxuICAgKlxuICAgKiBAbWVtYmVyb2YgV2l6YXJkTmF2aWdhdGlvblNlcnZpY2VcbiAgICovXG4gIGNhbmNlbEJ1dHRvblN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIC8qKlxuICAgKiBSZXNldHMgbmF2aWdhdGlvbiB0byBtYWtlIHRoZSBmaXJzdCBwYWdlIGN1cnJlbnQgd2hlbiB0aGUgcGFnZSBjb2xsZWN0aW9uIHNlcnZpY2VcbiAgICogZW1pdHMgYW4gZXZlbnQgbm90aWZ5aW5nIFdpemFyZE5hdmlnYXRpb25TZXJ2aWNlIHRoYXQgaXQgaGFzIHJlc2V0IGFsbCBwYWdlc1xuICAgKiB0byB0aGVpciBwcmlzdGluZSwgaW5jb21wbGV0ZSBzdGF0ZS5cbiAgICpcbiAgICogQG1lbWJlcm9mIFdpemFyZE5hdmlnYXRpb25TZXJ2aWNlXG4gICAqL1xuICBwYWdlc1Jlc2V0U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgLyoqXG4gICAqIEEgQm9vbGVhbiBmbGFnIHVzZWQgYnkgdGhlIENscldpemFyZFBhZ2UgdG8gYXZvaWQgYSByYWNlIGNvbmRpdGlvbiB3aGVuIHBhZ2VzIGFyZVxuICAgKiBsb2FkaW5nIGFuZCB0aGVyZSBpcyBubyBjdXJyZW50IHBhZ2UgZGVmaW5lZC5cbiAgICpcbiAgICogQG1lbWJlcm9mIFdpemFyZE5hdmlnYXRpb25TZXJ2aWNlXG4gICAqL1xuICBuYXZTZXJ2aWNlTG9hZGVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEEgYm9vbGVhbiBmbGFnIHNoYXJlZCBhY3Jvc3MgdGhlIFdpemFyZCBzdWJjb21wb25lbnRzIHRoYXQgZm9sbG93cyB0aGUgdmFsdWVcbiAgICogb2YgdGhlIFdpemFyZC5mb3JjZUZvcndhcmQgKGNscldpemFyZEZvcmNlRm9yd2FyZE5hdmlnYXRpb24pIGlucHV0LiBXaGVuIHRydWUsXG4gICAqIG5hdmlnYXRpbmcgYmFja3dhcmRzIGluIHRoZSBzdGVwbmF2IG1lbnUgd2lsbCByZXNldCBhbnkgc2tpcHBlZCBwYWdlcycgY29tcGxldGVkXG4gICAqIHN0YXRlIHRvIGZhbHNlLlxuICAgKlxuICAgKiBUaGlzIGlzIHVzZWZ1bCB3aGVuIGEgd2l6YXJkIGV4ZWN1dGVzIHZhbGlkYXRpb24gb24gYSBwYWdlLWJ5LXBhZ2UgYmFzaXMgd2hlblxuICAgKiB0aGUgbmV4dCBidXR0b24gaXMgY2xpY2tlZC5cbiAgICpcbiAgICogQG1lbWJlcm9mIFdpemFyZE5hdmlnYXRpb25TZXJ2aWNlXG4gICAqL1xuICBmb3JjZUZvcndhcmROYXZpZ2F0aW9uID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEEgYm9vbGVhbiBmbGFnIHNoYXJlZCBhY3Jvc3MgdGhlIFdpemFyZCBzdWJjb21wb25lbnRzIHRoYXQgZm9sbG93cyB0aGUgdmFsdWVcbiAgICogb2YgdGhlIFdpemFyZC5zdG9wQ2FuY2VsIChjbHJXaXphcmRQcmV2ZW50RGVmYXVsdENhbmNlbCkgaW5wdXQuIFdoZW4gdHJ1ZSwgdGhlIGNhbmNlbFxuICAgKiByb3V0aW5lIGlzIHN1YnZlcnRlZCBhbmQgbXVzdCBiZSByZWluc3RhdGVkIGluIHRoZSBob3N0IGNvbXBvbmVudCBjYWxsaW5nIFdpemFyZC5jbG9zZSgpXG4gICAqIGF0IHNvbWUgcG9pbnQuXG4gICAqXG4gICAqIEBtZW1iZXJvZiBXaXphcmROYXZpZ2F0aW9uU2VydmljZVxuICAgKi9cbiAgd2l6YXJkSGFzQWx0Q2FuY2VsID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEEgYm9vbGVhbiBmbGFnIHNoYXJlZCBhY3Jvc3MgdGhlIFdpemFyZCBzdWJjb21wb25lbnRzIHRoYXQgZm9sbG93cyB0aGUgdmFsdWVcbiAgICogb2YgdGhlIFdpemFyZC5zdG9wTmV4dCAoY2xyV2l6YXJkUHJldmVudERlZmF1bHROZXh0KSBpbnB1dC4gV2hlbiB0cnVlLCB0aGUgbmV4dCBhbmQgZmluaXNoXG4gICAqIHJvdXRpbmVzIGFyZSBzdWJ2ZXJ0ZWQgYW5kIG11c3QgYmUgcmVpbnN0YXRlZCBpbiB0aGUgaG9zdCBjb21wb25lbnQgY2FsbGluZyBXaXphcmQubmV4dCgpLFxuICAgKiBXaXphcmQuZm9yY2VOZXh0KCksIFdpemFyZC5maW5pc2goKSwgb3IgV2l6YXJkLmZvcmNlRmluaXNoKCkuXG4gICAqXG4gICAqIEBtZW1iZXJvZiBXaXphcmROYXZpZ2F0aW9uU2VydmljZVxuICAgKi9cbiAgd2l6YXJkSGFzQWx0TmV4dCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBBIGJvb2xlYW4gZmxhZyBzaGFyZWQgYWNyb3NzIHRoZSBXaXphcmQgc3ViY29tcG9uZW50cyB0aGF0IGZvbGxvd3MgdGhlIHZhbHVlXG4gICAqIG9mIHRoZSBXaXphcmQuc3RvcE5hdmlnYXRpb24gKGNscldpemFyZFByZXZlbnROYXZpZ2F0aW9uKSBpbnB1dC4gV2hlbiB0cnVlLCBhbGxcbiAgICogbmF2aWdhdGlvbmFsIGVsZW1lbnRzIGluIHRoZSB3aXphcmQgYXJlIGRpc2FibGVkLlxuICAgKlxuICAgKiBUaGlzIGlzIGludGVuZGVkIHRvIGZyZWV6ZSB0aGUgd2l6YXJkIGluIHBsYWNlLiBFdmVudHMgYXJlIG5vdCBmaXJlZCBzbyB0aGlzIGlzXG4gICAqIG5vdCBhIHdheSB0byBpbXBsZW1lbnQgYWx0ZXJuYXRlIGZ1bmN0aW9uYWxpdHkgZm9yIG5hdmlnYXRpb24uXG4gICAqXG4gICAqIEBtZW1iZXJvZiBXaXphcmROYXZpZ2F0aW9uU2VydmljZVxuICAgKi9cbiAgd2l6YXJkU3RvcE5hdmlnYXRpb24gPSBmYWxzZTtcblxuICAvKipcbiAgICogQSBib29sZWFuIGZsYWcgc2hhcmVkIHdpdGggdGhlIHN0ZXBuYXYgaXRlbXMgdGhhdCBwcmV2ZW50cyB1c2VyIGNsaWNrcyBvblxuICAgKiBzdGVwbmF2IGl0ZW1zIGZyb20gbmF2aWdhdGluZyB0aGUgd2l6YXJkLlxuICAgKlxuICAgKiBAbWVtYmVyb2YgV2l6YXJkTmF2aWdhdGlvblNlcnZpY2VcbiAgICovXG4gIHdpemFyZERpc2FibGVTdGVwbmF2ID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEBtZW1iZXJvZiBXaXphcmROYXZpZ2F0aW9uU2VydmljZVxuICAgKi9cbiAgcHJpdmF0ZSBfY3VycmVudFBhZ2U6IENscldpemFyZFBhZ2U7XG5cbiAgLyoqXG4gICAqXG4gICAqIEBtZW1iZXJvZiBXaXphcmROYXZpZ2F0aW9uU2VydmljZVxuICAgKi9cbiAgcHJpdmF0ZSBfY3VycmVudENoYW5nZWQgPSBuZXcgU3ViamVjdDxDbHJXaXphcmRQYWdlPigpO1xuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgV2l6YXJkTmF2aWdhdGlvblNlcnZpY2VcbiAgICovXG4gIHByaXZhdGUgX21vdmVkVG9OZXh0UGFnZSA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgLyoqXG4gICAqIEBtZW1iZXJvZiBXaXphcmROYXZpZ2F0aW9uU2VydmljZVxuICAgKi9cbiAgcHJpdmF0ZSBfd2l6YXJkRmluaXNoZWQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgV2l6YXJkTmF2aWdhdGlvblNlcnZpY2VcbiAgICovXG4gIHByaXZhdGUgX21vdmVkVG9QcmV2aW91c1BhZ2UgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgV2l6YXJkTmF2aWdhdGlvblNlcnZpY2VcbiAgICovXG4gIHByaXZhdGUgX2NhbmNlbFdpemFyZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgV2l6YXJkTmF2aWdhdGlvblNlcnZpY2UuIEFsc28gc2V0cyB1cCBzdWJzY3JpcHRpb25zXG4gICAqIHRoYXQgbGlzdGVuIHRvIHRoZSBidXR0b24gc2VydmljZSB0byBkZXRlcm1pbmUgd2hlbiBhIGJ1dHRvbiBoYXMgYmVlbiBjbGlja2VkXG4gICAqIGluIHRoZSB3aXphcmQuIElzIGFsc28gcmVzcG9uc2libGUgZm9yIHRha2luZyBhY3Rpb24gd2hlbiB0aGUgcGFnZSBjb2xsZWN0aW9uXG4gICAqIHJlcXVlc3RzIHRoYXQgbmF2aWdhdGlvbiBiZSByZXNldCB0byBpdHMgcHJpc3RpbmUgc3RhdGUuXG4gICAqXG4gICAqIEBtZW1iZXJvZiBXaXphcmROYXZpZ2F0aW9uU2VydmljZVxuICAgKi9cbiAgY29uc3RydWN0b3IocHVibGljIHBhZ2VDb2xsZWN0aW9uOiBQYWdlQ29sbGVjdGlvblNlcnZpY2UsIHB1YmxpYyBidXR0b25TZXJ2aWNlOiBCdXR0b25IdWJTZXJ2aWNlKSB7XG4gICAgdGhpcy5wcmV2aW91c0J1dHRvblN1YnNjcmlwdGlvbiA9IGJ1dHRvblNlcnZpY2UucHJldmlvdXNCdG5DbGlja2VkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBjb25zdCBjdXJyZW50UGFnZSA9IHRoaXMuY3VycmVudFBhZ2U7XG4gICAgICBpZiAodGhpcy5jdXJyZW50UGFnZUlzRmlyc3QgfHwgY3VycmVudFBhZ2UucHJldmlvdXNTdGVwRGlzYWJsZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY3VycmVudFBhZ2UucHJldmlvdXNCdXR0b25DbGlja2VkLmVtaXQoY3VycmVudFBhZ2UpO1xuICAgICAgaWYgKCFjdXJyZW50UGFnZS5wcmV2ZW50RGVmYXVsdCkge1xuICAgICAgICB0aGlzLnByZXZpb3VzKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLm5leHRCdXR0b25TdWJzY3JpcHRpb24gPSBidXR0b25TZXJ2aWNlLm5leHRCdG5DbGlja2VkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmNoZWNrQW5kQ29tbWl0Q3VycmVudFBhZ2UoJ25leHQnKTtcbiAgICB9KTtcblxuICAgIHRoaXMuZGFuZ2VyQnV0dG9uU3Vic2NyaXB0aW9uID0gYnV0dG9uU2VydmljZS5kYW5nZXJCdG5DbGlja2VkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmNoZWNrQW5kQ29tbWl0Q3VycmVudFBhZ2UoJ2RhbmdlcicpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5maW5pc2hCdXR0b25TdWJzY3JpcHRpb24gPSBidXR0b25TZXJ2aWNlLmZpbmlzaEJ0bkNsaWNrZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuY2hlY2tBbmRDb21taXRDdXJyZW50UGFnZSgnZmluaXNoJyk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmN1c3RvbUJ1dHRvblN1YnNjcmlwdGlvbiA9IGJ1dHRvblNlcnZpY2UuY3VzdG9tQnRuQ2xpY2tlZC5zdWJzY3JpYmUoKHR5cGU6IHN0cmluZykgPT4ge1xuICAgICAgaWYgKCF0aGlzLndpemFyZFN0b3BOYXZpZ2F0aW9uKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2UuY3VzdG9tQnV0dG9uQ2xpY2tlZC5lbWl0KHR5cGUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5jYW5jZWxCdXR0b25TdWJzY3JpcHRpb24gPSBidXR0b25TZXJ2aWNlLmNhbmNlbEJ0bkNsaWNrZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLndpemFyZFN0b3BOYXZpZ2F0aW9uKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuY3VycmVudFBhZ2UucHJldmVudERlZmF1bHQpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50UGFnZS5wYWdlT25DYW5jZWwuZW1pdCh0aGlzLmN1cnJlbnRQYWdlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY2FuY2VsKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLnBhZ2VzUmVzZXRTdWJzY3JpcHRpb24gPSBwYWdlQ29sbGVjdGlvbi5wYWdlc1Jlc2V0LnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnNldEZpcnN0UGFnZUN1cnJlbnQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbiBPYnNlcnZhYmxlIHRoYXQgaXMgcHJlZG9taW5hbnRseSB1c2VkIGFtb25nc3QgdGhlIHN1YmNvbXBvbmVudHMgYW5kIHNlcnZpY2VzXG4gICAqIG9mIHRoZSB3aXphcmQuIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgdXNlcnMgbGlzdGVuIHRvIHRoZSBDbHJXaXphcmRQYWdlLm9uTG9hZFxuICAgKiAoY2xyV2l6YXJkUGFnZU9uTG9hZCkgb3V0cHV0IGluc3RlYWQgb2YgdGhpcyBPYnNlcnZhYmxlLlxuICAgKlxuICAgKiBAbWVtYmVyb2YgV2l6YXJkTmF2aWdhdGlvblNlcnZpY2VcbiAgICovXG4gIGdldCBjdXJyZW50UGFnZUNoYW5nZWQoKTogT2JzZXJ2YWJsZTxDbHJXaXphcmRQYWdlPiB7XG4gICAgLy8gVE9ETzogTUFLRSBTVVJFIEVYVEVSTkFMIE9VVFBVVFMgU0FZICdDSEFOR0UnIE5PVCAnQ0hBTkdFRCdcbiAgICAvLyBBIEJSRUFLSU5HIENIQU5HRSBTTyBBV0FJVElORyBNSU5PUiBSRUxFQVNFXG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRDaGFuZ2VkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBtZW1iZXJvZiBXaXphcmROYXZpZ2F0aW9uU2VydmljZVxuICAgKi9cbiAgZ2V0IGN1cnJlbnRQYWdlVGl0bGUoKTogVGVtcGxhdGVSZWY8YW55PiB7XG4gICAgLy8gd2hlbiB0aGUgcXVlcnlsaXN0IG9mIHBhZ2VzIGlzIGVtcHR5LiB0aGlzIGlzIHRoZSBmaXJzdCBwbGFjZSBpdCBmYWlscy4uLlxuICAgIGlmICghdGhpcy5jdXJyZW50UGFnZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmN1cnJlbnRQYWdlLnRpdGxlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBCb29sZWFuIHRoYXQgdGVsbHMgeW91IHdoZXRoZXIgb3Igbm90IHRoZSBjdXJyZW50IHBhZ2UgaXMgdGhlIGZpcnN0XG4gICAqIHBhZ2UgaW4gdGhlIFdpemFyZC5cbiAgICpcbiAgICogVGhpcyBpcyBoZWxwZnVsIGZvciBkZXRlcm1pbmluZyB3aGV0aGVyIGEgcGFnZSBpcyBuYXZpZ2FibGUuXG4gICAqXG4gICAqIEBtZW1iZXJvZiBXaXphcmROYXZpZ2F0aW9uU2VydmljZVxuICAgKi9cbiAgZ2V0IGN1cnJlbnRQYWdlSXNGaXJzdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5wYWdlQ29sbGVjdGlvbi5maXJzdFBhZ2UgPT09IHRoaXMuY3VycmVudFBhZ2U7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIEJvb2xlYW4gdGhhdCB0ZWxscyB5b3Ugd2hldGhlciBvciBub3QgdGhlIGN1cnJlbnQgcGFnZSBpcyB0aGVcbiAgICogbGFzdCBwYWdlIGluIHRoZSBXaXphcmQuXG4gICAqXG4gICAqIFRoaXMgaXMgdXNlZCB0byBkZXRlcm1pbmUgd2hpY2ggYnV0dG9ucyBzaG91bGQgZGlzcGxheSBpbiB0aGUgd2l6YXJkIGZvb3Rlci5cbiAgICpcbiAgICogQG1lbWJlcm9mIFdpemFyZE5hdmlnYXRpb25TZXJ2aWNlXG4gICAqL1xuICBnZXQgY3VycmVudFBhZ2VJc0xhc3QoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucGFnZUNvbGxlY3Rpb24ubGFzdFBhZ2UgPT09IHRoaXMuY3VycmVudFBhZ2U7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgQ2xyV2l6YXJkUGFnZSBvYmplY3Qgb2YgdGhlIGN1cnJlbnQgcGFnZSBvciBudWxsLlxuICAgKlxuICAgKiBAbWVtYmVyb2YgV2l6YXJkTmF2aWdhdGlvblNlcnZpY2VcbiAgICovXG4gIGdldCBjdXJyZW50UGFnZSgpOiBDbHJXaXphcmRQYWdlIHtcbiAgICBpZiAoIXRoaXMuX2N1cnJlbnRQYWdlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRQYWdlO1xuICB9XG5cbiAgLyoqXG4gICAqIEFjY2VwdHMgYSBDbHJXaXphcmRQYWdlIG9iamVjdCwgc2luY2UgdGhhdCBvYmplY3QgdG8gYmUgdGhlIGN1cnJlbnQvYWN0aXZlXG4gICAqIHBhZ2UgaW4gdGhlIHdpemFyZCwgYW5kIGVtaXRzIHRoZSBDbHJXaXphcmRQYWdlLm9uTG9hZCAoY2xyV2l6YXJkUGFnZU9uTG9hZClcbiAgICogZXZlbnQgZm9yIHRoYXQgcGFnZS5cbiAgICpcbiAgICogTm90ZSB0aGF0IGFsbCBvZiB0aGlzIHdvcmsgaXMgYnlwYXNzZWQgaWYgdGhlIENscldpemFyZFBhZ2Ugb2JqZWN0IGlzIGFscmVhZHlcbiAgICogdGhlIGN1cnJlbnQgcGFnZS5cbiAgICpcbiAgICogQG1lbWJlcm9mIFdpemFyZE5hdmlnYXRpb25TZXJ2aWNlXG4gICAqL1xuICBzZXQgY3VycmVudFBhZ2UocGFnZTogQ2xyV2l6YXJkUGFnZSkge1xuICAgIGlmICh0aGlzLl9jdXJyZW50UGFnZSAhPT0gcGFnZSAmJiAhdGhpcy53aXphcmRTdG9wTmF2aWdhdGlvbikge1xuICAgICAgdGhpcy5fY3VycmVudFBhZ2UgPSBwYWdlO1xuICAgICAgcGFnZS5vbkxvYWQuZW1pdChwYWdlLmlkKTtcbiAgICAgIHRoaXMuX2N1cnJlbnRDaGFuZ2VkLm5leHQocGFnZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFuIG9ic2VydmFibGUgdXNlZCBpbnRlcm5hbGx5IHRvIGFsZXJ0IHRoZSB3aXphcmQgdGhhdCBmb3J3YXJkIG5hdmlnYXRpb25cbiAgICogaGFzIG9jY3VycmVkLiBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdSB1c2UgdGhlIFdpemFyZC5vbk1vdmVOZXh0XG4gICAqIChjbHJXaXphcmRPbk5leHQpIG91dHB1dCBpbnN0ZWFkIG9mIHRoaXMgb25lLlxuICAgKlxuICAgKiBAbWVtYmVyb2YgV2l6YXJkTmF2aWdhdGlvblNlcnZpY2VcbiAgICovXG4gIGdldCBtb3ZlZFRvTmV4dFBhZ2UoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX21vdmVkVG9OZXh0UGFnZS5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbiBvYnNlcnZhYmxlIHVzZWQgaW50ZXJuYWxseSB0byBhbGVydCB0aGUgd2l6YXJkIHRoYXQgdGhlIG5hdiBzZXJ2aWNlXG4gICAqIGhhcyBhcHByb3ZlZCBjb21wbGV0aW9uIG9mIHRoZSB3aXphcmQuXG4gICAqXG4gICAqIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91IHVzZSB0aGUgV2l6YXJkLndpemFyZEZpbmlzaGVkIChjbHJXaXphcmRPbkZpbmlzaClcbiAgICogb3V0cHV0IGluc3RlYWQgb2YgdGhpcyBvbmUuXG4gICAqXG4gICAqIEBtZW1iZXJvZiBXaXphcmROYXZpZ2F0aW9uU2VydmljZVxuICAgKi9cbiAgZ2V0IHdpemFyZEZpbmlzaGVkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLl93aXphcmRGaW5pc2hlZC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOb3RpZmllcyB0aGUgd2l6YXJkIHdoZW4gYmFja3dhcmRzIG5hdmlnYXRpb24gaGFzIG9jY3VycmVkIHZpYSB0aGVcbiAgICogcHJldmlvdXMgYnV0dG9uLlxuICAgKlxuICAgKiBAbWVtYmVyb2YgV2l6YXJkTmF2aWdhdGlvblNlcnZpY2VcbiAgICovXG4gIGdldCBtb3ZlZFRvUHJldmlvdXNQYWdlKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9tb3ZlZFRvUHJldmlvdXNQYWdlLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIE5vdGlmaWVzIHRoZSB3aXphcmQgdGhhdCBhIHVzZXIgaXMgdHJ5aW5nIHRvIGNhbmNlbCBpdC5cbiAgICpcbiAgICogQG1lbWJlcm9mIFdpemFyZE5hdmlnYXRpb25TZXJ2aWNlXG4gICAqL1xuICBnZXQgbm90aWZ5V2l6YXJkQ2FuY2VsKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuX2NhbmNlbFdpemFyZC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAbWVtYmVyb2YgV2l6YXJkTmF2aWdhdGlvblNlcnZpY2VcbiAgICovXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMucHJldmlvdXNCdXR0b25TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLm5leHRCdXR0b25TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmRhbmdlckJ1dHRvblN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuZmluaXNoQnV0dG9uU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5jdXN0b21CdXR0b25TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmNhbmNlbEJ1dHRvblN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMucGFnZXNSZXNldFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgYSBwdWJsaWMgZnVuY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCB0byBwcm9ncmFtbWF0aWNhbGx5IGFkdmFuY2VcbiAgICogdGhlIHVzZXIgdG8gdGhlIG5leHQgcGFnZS5cbiAgICpcbiAgICogV2hlbiBpbnZva2VkLCB0aGlzIG1ldGhvZCB3aWxsIG1vdmUgdGhlIHdpemFyZCB0byB0aGUgbmV4dCBwYWdlIGFmdGVyXG4gICAqIHN1Y2Nlc3NmdWwgdmFsaWRhdGlvbi4gTm90ZSB0aGF0IHRoaXMgbWV0aG9kIGdvZXMgdGhyb3VnaCBhbGwgY2hlY2tzXG4gICAqIGFuZCBldmVudCBlbWlzc2lvbnMgYXMgaWYgV2l6YXJkLm5leHQoZmFsc2UpIGhhZCBiZWVuIGNhbGxlZC5cbiAgICpcbiAgICogSW4gbW9zdCBjYXNlcywgaXQgbWFrZXMgbW9yZSBzZW5zZSB0byB1c2UgV2l6YXJkLm5leHQoZmFsc2UpLlxuICAgKlxuICAgKiBAbWVtYmVyb2YgV2l6YXJkTmF2aWdhdGlvblNlcnZpY2VcbiAgICovXG4gIG5leHQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY3VycmVudFBhZ2VJc0xhc3QpIHtcbiAgICAgIHRoaXMuY2hlY2tBbmRDb21taXRDdXJyZW50UGFnZSgnZmluaXNoJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2hlY2tBbmRDb21taXRDdXJyZW50UGFnZSgnbmV4dCcpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBCeXBhc3NlcyBjaGVja3MgYW5kIG1vc3QgZXZlbnQgZW1pc3Npb25zIHRvIGZvcmNlIGEgcGFnZSB0byBuYXZpZ2F0ZSBmb3J3YXJkLlxuICAgKlxuICAgKiBDb21wYXJhYmxlIHRvIGNhbGxpbmcgV2l6YXJkLm5leHQoKSBvciBXaXphcmQuZm9yY2VOZXh0KCkuXG4gICAqXG4gICAqIEBtZW1iZXJvZiBXaXphcmROYXZpZ2F0aW9uU2VydmljZVxuICAgKi9cbiAgZm9yY2VOZXh0KCk6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnRQYWdlOiBDbHJXaXphcmRQYWdlID0gdGhpcy5jdXJyZW50UGFnZTtcbiAgICBjb25zdCBuZXh0UGFnZTogQ2xyV2l6YXJkUGFnZSA9IHRoaXMucGFnZUNvbGxlY3Rpb24uZ2V0TmV4dFBhZ2UoY3VycmVudFBhZ2UpO1xuXG4gICAgLy8gY2F0Y2ggZXJyYW50IG51bGwgb3IgdW5kZWZpbmVkcyB0aGF0IGNyZWVwIGluXG4gICAgaWYgKCFuZXh0UGFnZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgd2l6YXJkIGhhcyBubyBuZXh0IHBhZ2UgdG8gZ28gdG8uJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMud2l6YXJkU3RvcE5hdmlnYXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIWN1cnJlbnRQYWdlLmNvbXBsZXRlZCkge1xuICAgICAgLy8gdGhpcyBpcyBhIHN0YXRlIHRoYXQgYWx0IG5leHQgZmxvd3MgY2FuIGdldCB0aGVtc2VsdmVzIGluLi4uXG4gICAgICB0aGlzLnBhZ2VDb2xsZWN0aW9uLmNvbW1pdFBhZ2UoY3VycmVudFBhZ2UpO1xuICAgIH1cbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gbmV4dFBhZ2U7XG4gIH1cblxuICAvKipcbiAgICogQWNjZXB0cyBhIGJ1dHRvbi9hY3Rpb24gdHlwZSBhcyBhIHBhcmFtZXRlci4gRW5jYXBzdWxhdGVzIGFsbCBsb2dpYyBmb3JcbiAgICogZXZlbnQgZW1pc3Npb25zLCBzdGF0ZSBvZiB0aGUgY3VycmVudCBwYWdlLCBhbmQgd2l6YXJkIGFuZCBwYWdlIGxldmVsIG92ZXJyaWRlcy5cbiAgICpcbiAgICogQXZvaWQgY2FsbGluZyB0aGlzIGZ1bmN0aW9uIGRpcmVjdGx5IHVubGVzcyB5b3UgcmVhbGx5IGtub3cgd2hhdCB5b3UncmUgZG9pbmcuXG4gICAqXG4gICAqIEBtZW1iZXJvZiBXaXphcmROYXZpZ2F0aW9uU2VydmljZVxuICAgKi9cbiAgY2hlY2tBbmRDb21taXRDdXJyZW50UGFnZShidXR0b25UeXBlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50UGFnZTogQ2xyV2l6YXJkUGFnZSA9IHRoaXMuY3VycmVudFBhZ2U7XG5cbiAgICBpZiAoIWN1cnJlbnRQYWdlLnJlYWR5VG9Db21wbGV0ZSB8fCB0aGlzLndpemFyZFN0b3BOYXZpZ2F0aW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaUFtVGhlTGFzdFBhZ2UgPSB0aGlzLmN1cnJlbnRQYWdlSXNMYXN0O1xuXG4gICAgY29uc3QgaXNOZXh0ID0gYnV0dG9uVHlwZSA9PT0gJ25leHQnO1xuICAgIGNvbnN0IGlzRGFuZ2VyID0gYnV0dG9uVHlwZSA9PT0gJ2Rhbmdlcic7XG4gICAgY29uc3QgaXNEYW5nZXJOZXh0ID0gaXNEYW5nZXIgJiYgIWlBbVRoZUxhc3RQYWdlO1xuICAgIGNvbnN0IGlzRGFuZ2VyRmluaXNoID0gaXNEYW5nZXIgJiYgaUFtVGhlTGFzdFBhZ2U7XG4gICAgY29uc3QgaXNGaW5pc2ggPSBidXR0b25UeXBlID09PSAnZmluaXNoJyB8fCBpc0RhbmdlckZpbmlzaDtcblxuICAgIGlmIChpc0ZpbmlzaCAmJiAhaUFtVGhlTGFzdFBhZ2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjdXJyZW50UGFnZS5wcmltYXJ5QnV0dG9uQ2xpY2tlZC5lbWl0KGJ1dHRvblR5cGUpO1xuXG4gICAgaWYgKGlzRmluaXNoKSB7XG4gICAgICBjdXJyZW50UGFnZS5maW5pc2hCdXR0b25DbGlja2VkLmVtaXQoY3VycmVudFBhZ2UpO1xuICAgIH0gZWxzZSBpZiAoaXNEYW5nZXIpIHtcbiAgICAgIGN1cnJlbnRQYWdlLmRhbmdlckJ1dHRvbkNsaWNrZWQuZW1pdCgpO1xuICAgIH0gZWxzZSBpZiAoaXNOZXh0KSB7XG4gICAgICBjdXJyZW50UGFnZS5uZXh0QnV0dG9uQ2xpY2tlZC5lbWl0KCk7XG4gICAgfVxuXG4gICAgaWYgKGN1cnJlbnRQYWdlLnN0b3BOZXh0IHx8IGN1cnJlbnRQYWdlLnByZXZlbnREZWZhdWx0KSB7XG4gICAgICBjdXJyZW50UGFnZS5vbkNvbW1pdC5lbWl0KGN1cnJlbnRQYWdlLmlkKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBvcmRlciBpcyB2ZXJ5IGltcG9ydGFudCB3aXRoIHRoZXNlIGVtaXR0ZXJzIVxuICAgIGlmIChpc0ZpbmlzaCkge1xuICAgICAgLy8gbWFyayBwYWdlIGFzIGNvbXBsZXRlXG4gICAgICBpZiAoIXRoaXMud2l6YXJkSGFzQWx0TmV4dCkge1xuICAgICAgICB0aGlzLnBhZ2VDb2xsZWN0aW9uLmNvbW1pdFBhZ2UoY3VycmVudFBhZ2UpO1xuICAgICAgfVxuICAgICAgdGhpcy5fd2l6YXJkRmluaXNoZWQubmV4dCgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLndpemFyZEhhc0FsdE5leHQpIHtcbiAgICAgIHRoaXMucGFnZUNvbGxlY3Rpb24uY29tbWl0UGFnZShjdXJyZW50UGFnZSk7XG5cbiAgICAgIGlmIChpc05leHQgfHwgaXNEYW5nZXJOZXh0KSB7XG4gICAgICAgIHRoaXMuX21vdmVkVG9OZXh0UGFnZS5uZXh0KHRydWUpO1xuICAgICAgfVxuICAgICAgLy8ganVtcCBvdXQgaGVyZSwgbm8gbWF0dGVyIHdoYXQgdHlwZSB3ZSdyZSBsb29raW5nIGF0XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGlzTmV4dCB8fCBpc0Rhbmdlck5leHQpIHtcbiAgICAgIHRoaXMuZm9yY2VOZXh0KCk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLndpemFyZEhhc0FsdE5leHQgJiYgIXRoaXMud2l6YXJkU3RvcE5hdmlnYXRpb24pIHtcbiAgICAgIHRoaXMuX21vdmVkVG9OZXh0UGFnZS5uZXh0KHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGlzIGEgcHVibGljIGZ1bmN0aW9uIHRoYXQgY2FuIGJlIHVzZWQgdG8gcHJvZ3JhbW1hdGljYWxseSBjb25jbHVkZVxuICAgKiB0aGUgd2l6YXJkLlxuICAgKlxuICAgKiBXaGVuIGludm9rZWQsIHRoaXMgbWV0aG9kIHdpbGwgIGluaXRpYXRlIHRoZSB3b3JrIGludm9sdmVkIHdpdGggZmluYWxpemluZ1xuICAgKiBhbmQgZmluaXNoaW5nIHRoZSB3aXphcmQgd29ya2Zsb3cuIE5vdGUgdGhhdCB0aGlzIG1ldGhvZCBnb2VzIHRocm91Z2ggYWxsXG4gICAqIGNoZWNrcyBhbmQgZXZlbnQgZW1pc3Npb25zIGFzIGlmIFdpemFyZC5maW5pc2goZmFsc2UpIGhhZCBiZWVuIGNhbGxlZC5cbiAgICpcbiAgICogSW4gbW9zdCBjYXNlcywgaXQgbWFrZXMgbW9yZSBzZW5zZSB0byB1c2UgV2l6YXJkLmZpbmlzaChmYWxzZSkuXG4gICAqXG4gICAqIEBtZW1iZXJvZiBXaXphcmROYXZpZ2F0aW9uU2VydmljZVxuICAgKi9cbiAgZmluaXNoKCk6IHZvaWQge1xuICAgIHRoaXMuY2hlY2tBbmRDb21taXRDdXJyZW50UGFnZSgnZmluaXNoJyk7XG4gIH1cblxuICAvKipcbiAgICogUHJvZ3JhbW1hdGljYWxseSBtb3ZlcyB0aGUgd2l6YXJkIHRvIHRoZSBwYWdlIGJlZm9yZSB0aGUgY3VycmVudCBwYWdlLlxuICAgKlxuICAgKiBJbiBtb3N0IGluc3RhbmNlcywgaXQgbWFrZXMgbW9yZSBzZW5zZSB0byBjYWxsIFdpemFyZC5wcmV2aW91cygpXG4gICAqIHdoaWNoIGRvZXMgdGhlIHNhbWUgdGhpbmcuXG4gICAqXG4gICAqIEBtZW1iZXJvZiBXaXphcmROYXZpZ2F0aW9uU2VydmljZVxuICAgKi9cbiAgcHJldmlvdXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY3VycmVudFBhZ2VJc0ZpcnN0IHx8IHRoaXMud2l6YXJkU3RvcE5hdmlnYXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBwcmV2aW91c1BhZ2UgPSB0aGlzLnBhZ2VDb2xsZWN0aW9uLmdldFByZXZpb3VzUGFnZSh0aGlzLmN1cnJlbnRQYWdlKTtcblxuICAgIGlmICghcHJldmlvdXNQYWdlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fbW92ZWRUb1ByZXZpb3VzUGFnZS5uZXh0KHRydWUpO1xuXG4gICAgaWYgKHRoaXMuZm9yY2VGb3J3YXJkTmF2aWdhdGlvbikge1xuICAgICAgdGhpcy5jdXJyZW50UGFnZS5jb21wbGV0ZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gcHJldmlvdXNQYWdlO1xuICB9XG5cbiAgLyoqXG4gICAqIEFsbG93cyBhIGhvb2sgaW50byB0aGUgY2FuY2VsIHdvcmtmbG93IG9mIHRoZSB3aXphcmQgZnJvbSB0aGUgbmF2IHNlcnZpY2UuIE5vdGUgdGhhdFxuICAgKiB0aGlzIHJvdXRlIGdvZXMgdGhyb3VnaCBhbGwgY2hlY2tzIGFuZCBldmVudCBlbWlzc2lvbnMgYXMgaWYgYSBjYW5jZWwgYnV0dG9uIGhhZFxuICAgKiBiZWVuIGNsaWNrZWQuXG4gICAqXG4gICAqIEluIG1vc3QgY2FzZXMsIHVzZXJzIGxvb2tpbmcgZm9yIGEgaG9vayBpbnRvIHRoZSBjYW5jZWwgcm91dGluZSBhcmUgYWN0dWFsbHkgbG9va2luZ1xuICAgKiBmb3IgYSB3YXkgdG8gY2xvc2UgdGhlIHdpemFyZCBmcm9tIHRoZWlyIGhvc3QgY29tcG9uZW50IGJlY2F1c2UgdGhleSBoYXZlIHByZXZlbnRlZFxuICAgKiB0aGUgZGVmYXVsdCBjYW5jZWwgYWN0aW9uLlxuICAgKlxuICAgKiBJbiB0aGlzIGluc3RhbmNlLCBpdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdSB1c2UgV2l6YXJkLmNsb3NlKCkgdG8gYXZvaWQgYW55IGV2ZW50XG4gICAqIGVtaXNzaW9uIGxvb3AgcmVzdWx0aW5nIGZyb20gYW4gZXZlbnQgaGFuZGxlciBjYWxsaW5nIGJhY2sgaW50byByb3V0aW5lIHRoYXQgd2lsbFxuICAgKiBhZ2FpbiBldm9rZSB0aGUgZXZlbnRzIGl0IGhhbmRsZXMuXG4gICAqXG4gICAqIEBtZW1iZXJvZiBXaXphcmROYXZpZ2F0aW9uU2VydmljZVxuICAgKi9cbiAgY2FuY2VsKCk6IHZvaWQge1xuICAgIHRoaXMuX2NhbmNlbFdpemFyZC5uZXh0KCk7XG4gIH1cblxuICAvKipcbiAgICogUGVyZm9ybXMgYWxsIHJlcXVpcmVkIGNoZWNrcyB0byBkZXRlcm1pbmUgaWYgYSB1c2VyIGNhbiBuYXZpZ2F0ZSB0byBhIHBhZ2UuIENoZWNraW5nIGF0IGVhY2hcbiAgICogcG9pbnQgaWYgYSBwYWdlIGlzIG5hdmlnYWJsZSAtLSBjb21wbGV0ZWQgd2hlcmUgdGhlIHBhZ2UgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGxhc3QgY29tcGxldGVkXG4gICAqIHBhZ2UuXG4gICAqXG4gICAqIFRha2VzIHR3byBwYXJhbWV0ZXJzLiBUaGUgZmlyc3Qgb25lIG11c3QgYmUgZWl0aGVyIHRoZSBDbHJXaXphcmRQYWdlIG9iamVjdCBvciB0aGUgSUQgb2YgdGhlXG4gICAqIENscldpemFyZFBhZ2Ugb2JqZWN0IHRoYXQgeW91IHdhbnQgdG8gbWFrZSB0aGUgY3VycmVudCBwYWdlLlxuICAgKlxuICAgKiBUaGUgc2Vjb25kIHBhcmFtZXRlciBpcyBvcHRpb25hbCBhbmQgaXMgYSBCb29sZWFuIGZsYWcgZm9yIFwibGF6eSBjb21wbGV0aW9uXCIuIFdoYXQgdGhpcyBtZWFuc1xuICAgKiBpcyB0aGUgV2l6YXJkIHdpbGwgbWFyayBhbGwgcGFnZXMgYmV0d2VlbiB0aGUgY3VycmVudCBwYWdlIGFuZCB0aGUgcGFnZSB5b3Ugd2FudCB0byBuYXZpZ2F0ZVxuICAgKiB0byBhcyBjb21wbGV0ZWQuIFRoaXMgaXMgdXNlZnVsIGZvciBpbmZvcm1hdGlvbmFsIHdpemFyZHMgdGhhdCBkbyBub3QgcmVxdWlyZSB1c2VyIGFjdGlvbixcbiAgICogYWxsb3dpbmcgYW4gZWFzeSBtZWFucyBmb3IgdXNlcnMgdG8ganVtcCBhaGVhZC5cbiAgICpcbiAgICogVG8gYXZvaWQgY2hlY2tzIG9uIG5hdmlnYXRpb24sIHVzZSBDbHJXaXphcmRQYWdlLm1ha2VDdXJyZW50KCkgaW5zdGVhZC5cbiAgICpcbiAgICogQG1lbWJlcm9mIFdpemFyZE5hdmlnYXRpb25TZXJ2aWNlXG4gICAqL1xuICBnb1RvKHBhZ2VUb0dvVG9PcklkOiBhbnksIGxhenlDb21wbGV0ZSA9IGZhbHNlKSB7XG4gICAgY29uc3QgbXlQYWdlcyA9IHRoaXMucGFnZUNvbGxlY3Rpb247XG4gICAgY29uc3QgcGFnZVRvR29UbyA9IHR5cGVvZiBwYWdlVG9Hb1RvT3JJZCA9PT0gJ3N0cmluZycgPyBteVBhZ2VzLmdldFBhZ2VCeUlkKHBhZ2VUb0dvVG9PcklkKSA6IHBhZ2VUb0dvVG9PcklkO1xuICAgIGNvbnN0IGN1cnJlbnRQYWdlID0gdGhpcy5jdXJyZW50UGFnZTtcblxuICAgIC8vIG5vIHBvaW50IGluIGdvaW5nIHRvIHRoZSBjdXJyZW50IHBhZ2UuIHlvdSdyZSB0aGVyZSBhbHJlYWR5IVxuICAgIC8vIGFsc28gaGFyZCBibG9jayBvbiBhbnkgbmF2aWdhdGlvbiB3aGVuIHN0b3BOYXZpZ2F0aW9uIGlzIHRydWVcbiAgICBpZiAocGFnZVRvR29UbyA9PT0gY3VycmVudFBhZ2UgfHwgdGhpcy53aXphcmRTdG9wTmF2aWdhdGlvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnRQYWdlSW5kZXggPSBteVBhZ2VzLmdldFBhZ2VJbmRleChjdXJyZW50UGFnZSk7XG4gICAgY29uc3QgZ29Ub1BhZ2VJbmRleCA9IG15UGFnZXMuZ2V0UGFnZUluZGV4KHBhZ2VUb0dvVG8pO1xuICAgIGNvbnN0IGdvaW5nRm9yd2FyZCA9IGdvVG9QYWdlSW5kZXggPiBjdXJyZW50UGFnZUluZGV4O1xuICAgIGNvbnN0IHBhZ2VzVG9DaGVjayA9IG15UGFnZXMuZ2V0UGFnZVJhbmdlRnJvbVBhZ2VzKHRoaXMuY3VycmVudFBhZ2UsIHBhZ2VUb0dvVG8pO1xuICAgIGNvbnN0IG9rYXlUb01vdmUgPSBsYXp5Q29tcGxldGUgfHwgdGhpcy5jYW5Hb1RvKHBhZ2VzVG9DaGVjayk7XG5cbiAgICBpZiAoIW9rYXlUb01vdmUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZ29pbmdGb3J3YXJkICYmIGxhenlDb21wbGV0ZSkge1xuICAgICAgcGFnZXNUb0NoZWNrLmZvckVhY2goKHBhZ2U6IENscldpemFyZFBhZ2UpID0+IHtcbiAgICAgICAgaWYgKHBhZ2UgIT09IHBhZ2VUb0dvVG8pIHtcbiAgICAgICAgICBwYWdlLmNvbXBsZXRlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoIWdvaW5nRm9yd2FyZCAmJiB0aGlzLmZvcmNlRm9yd2FyZE5hdmlnYXRpb24pIHtcbiAgICAgIHBhZ2VzVG9DaGVjay5mb3JFYWNoKChwYWdlOiBDbHJXaXphcmRQYWdlKSA9PiB7XG4gICAgICAgIHBhZ2UuY29tcGxldGVkID0gZmFsc2U7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gcGFnZVRvR29UbztcbiAgfVxuXG4gIC8qKlxuICAgKiBBY2NlcHRzIGEgcmFuZ2Ugb2YgQ2xyV2l6YXJkUGFnZSBvYmplY3RzIGFzIGEgcGFyYW1ldGVyLiBQZXJmb3JtcyB0aGUgd29yayBvZiBjaGVja2luZ1xuICAgKiB0aG9zZSBvYmplY3RzIHRvIGRldGVybWluZSBpZiBuYXZpZ2F0aW9uIGNhbiBiZSBhY2NvbXBsaXNoZWQuXG4gICAqXG4gICAqIEBtZW1iZXJvZiBXaXphcmROYXZpZ2F0aW9uU2VydmljZVxuICAgKi9cbiAgY2FuR29UbyhwYWdlc1RvQ2hlY2s6IENscldpemFyZFBhZ2VbXSk6IGJvb2xlYW4ge1xuICAgIGxldCBva2F5VG9Nb3ZlID0gdHJ1ZTtcbiAgICBjb25zdCBteVBhZ2VzID0gdGhpcy5wYWdlQ29sbGVjdGlvbjtcblxuICAgIC8vIHByZXZpb3VzIHBhZ2UgY2FuIGJlIGltcG9ydGFudCB3aGVuIG1vdmluZyBiZWNhdXNlIGlmIGl0J3MgY29tcGxldGVkIGl0XG4gICAgLy8gYWxsb3dzIHVzIHRvIG1vdmUgdG8gdGhlIHBhZ2UgZXZlbiBpZiBpdCdzIGluY29tcGxldGUuLi5cbiAgICBsZXQgcHJldmlvdXNQYWdlUGFzc2VzOiBib29sZWFuO1xuXG4gICAgaWYgKCFwYWdlc1RvQ2hlY2sgfHwgcGFnZXNUb0NoZWNrLmxlbmd0aCA8IDEpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwYWdlc1RvQ2hlY2suZm9yRWFjaCgocGFnZTogQ2xyV2l6YXJkUGFnZSkgPT4ge1xuICAgICAgaWYgKCFva2F5VG9Nb3ZlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHBhZ2UuY29tcGxldGVkKSB7XG4gICAgICAgIC8vIGRlZmF1bHQgaXMgdHJ1ZS4ganVzdCBqdW1wIG91dCBpbnN0ZWFkIG9mIGNvbXBsaWNhdGluZyBpdC5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBzbyB3ZSBrbm93IG91ciBwYWdlIGlzIG5vdCBjb21wbGV0ZWQuLi5cbiAgICAgIGNvbnN0IHByZXZpb3VzUGFnZSA9IG15UGFnZXMuZ2V0UGFnZUluZGV4KHBhZ2UpID4gMCA/IG15UGFnZXMuZ2V0UHJldmlvdXNQYWdlKHBhZ2UpIDogbnVsbDtcbiAgICAgIHByZXZpb3VzUGFnZVBhc3NlcyA9IHByZXZpb3VzUGFnZSA9PT0gbnVsbCB8fCBwcmV2aW91c1BhZ2UuY29tcGxldGVkID09PSB0cnVlO1xuXG4gICAgICAvLyB3ZSBhcmUgZmFsc2UgaWYgbm90IHRoZSBjdXJyZW50IHBhZ2UgQU5EIHByZXZpb3VzIHBhZ2UgaXMgbm90IGNvbXBsZXRlZFxuICAgICAgLy8gKGJ1dCBtdXN0IGhhdmUgYSBwcmV2aW91cyBwYWdlKVxuICAgICAgaWYgKCFwYWdlLmN1cnJlbnQgJiYgIXByZXZpb3VzUGFnZVBhc3Nlcykge1xuICAgICAgICBva2F5VG9Nb3ZlID0gZmFsc2U7XG4gICAgICB9XG4gICAgICAvLyBmYWxscyB0aHJvdWdoIHRvIHRydWUgYXMgZGVmYXVsdFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG9rYXlUb01vdmU7XG4gIH1cblxuICAvKipcbiAgICogTG9va3MgdGhyb3VnaCB0aGUgY29sbGVjdGlvbiBvZiBwYWdlcyB0byBmaW5kIHRoZSBmaXJzdCBvbmUgdGhhdCBpcyBpbmNvbXBsZXRlXG4gICAqIGFuZCBtYWtlcyB0aGF0IHBhZ2UgdGhlIGN1cnJlbnQvYWN0aXZlIHBhZ2UuXG4gICAqXG4gICAqIEBtZW1iZXJvZiBXaXphcmROYXZpZ2F0aW9uU2VydmljZVxuICAgKi9cbiAgc2V0TGFzdEVuYWJsZWRQYWdlQ3VycmVudCgpOiB2b2lkIHtcbiAgICBjb25zdCBhbGxQYWdlczogQ2xyV2l6YXJkUGFnZVtdID0gdGhpcy5wYWdlQ29sbGVjdGlvbi5wYWdlc0FzQXJyYXk7XG4gICAgbGV0IGxhc3RDb21wbGV0ZWRQYWdlSW5kZXg6IG51bWJlciA9IG51bGw7XG5cbiAgICBhbGxQYWdlcy5mb3JFYWNoKChwYWdlOiBDbHJXaXphcmRQYWdlLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICBpZiAocGFnZS5jb21wbGV0ZWQpIHtcbiAgICAgICAgbGFzdENvbXBsZXRlZFBhZ2VJbmRleCA9IGluZGV4O1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKGxhc3RDb21wbGV0ZWRQYWdlSW5kZXggPT09IG51bGwpIHtcbiAgICAgIC8vIGFsd2F5cyBpcyBhdCBsZWFzdCB0aGUgZmlyc3QgaXRlbS4uLlxuICAgICAgbGFzdENvbXBsZXRlZFBhZ2VJbmRleCA9IDA7XG4gICAgfSBlbHNlIGlmIChsYXN0Q29tcGxldGVkUGFnZUluZGV4ICsgMSA8IGFsbFBhZ2VzLmxlbmd0aCkge1xuICAgICAgbGFzdENvbXBsZXRlZFBhZ2VJbmRleCA9IGxhc3RDb21wbGV0ZWRQYWdlSW5kZXggKyAxO1xuICAgIH1cblxuICAgIHRoaXMuY3VycmVudFBhZ2UgPSBhbGxQYWdlc1tsYXN0Q29tcGxldGVkUGFnZUluZGV4XTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kcyB0aGUgZmlyc3QgcGFnZSBpbiB0aGUgY29sbGVjdGlvbiBvZiBwYWdlcyBhbmQgbWFrZXMgdGhhdCBwYWdlIHRoZVxuICAgKiBjdXJyZW50L2FjdGl2ZSBwYWdlLlxuICAgKlxuICAgKiBAbWVtYmVyb2YgV2l6YXJkTmF2aWdhdGlvblNlcnZpY2VcbiAgICovXG4gIHNldEZpcnN0UGFnZUN1cnJlbnQoKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IHRoaXMucGFnZUNvbGxlY3Rpb24ucGFnZXNBc0FycmF5WzBdO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIHN0ZXBuYXYgb24gdGhlIGxlZnQgc2lkZSBvZiB0aGUgd2l6YXJkIHdoZW4gcGFnZXMgYXJlIGR5bmFtaWNhbGx5XG4gICAqIGFkZGVkIG9yIHJlbW92ZWQgZnJvbSB0aGUgY29sbGVjdGlvbiBvZiBwYWdlcy5cbiAgICpcbiAgICogQG1lbWJlcm9mIFdpemFyZE5hdmlnYXRpb25TZXJ2aWNlXG4gICAqL1xuICB1cGRhdGVOYXZpZ2F0aW9uKCk6IHZvaWQge1xuICAgIGxldCB0b1NldEN1cnJlbnQ6IENscldpemFyZFBhZ2U7XG5cbiAgICB0aGlzLnBhZ2VDb2xsZWN0aW9uLnVwZGF0ZUNvbXBsZXRlZFN0YXRlcygpO1xuXG4gICAgY29uc3QgY3VycmVudFBhZ2VSZW1vdmVkID0gdGhpcy5wYWdlQ29sbGVjdGlvbi5wYWdlc0FzQXJyYXkuaW5kZXhPZih0aGlzLmN1cnJlbnRQYWdlKSA8IDA7XG4gICAgaWYgKGN1cnJlbnRQYWdlUmVtb3ZlZCkge1xuICAgICAgdG9TZXRDdXJyZW50ID0gdGhpcy5wYWdlQ29sbGVjdGlvbi5maW5kRmlyc3RJbmNvbXBsZXRlUGFnZSgpO1xuICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IHRvU2V0Q3VycmVudDtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|