@clr/angular 12.0.8 → 13.0.0-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/accordion/accordion-content.d.ts +3 -0
- package/accordion/accordion-description.d.ts +3 -0
- package/accordion/accordion-panel.d.ts +3 -0
- package/accordion/accordion-title.d.ts +3 -0
- package/accordion/accordion.d.ts +3 -0
- package/accordion/accordion.module.d.ts +13 -0
- package/accordion/chocolate/accordion-oompa-loompa.d.ts +3 -0
- package/accordion/chocolate/accordion-willy-wonka.d.ts +3 -0
- package/accordion/providers/accordion.service.d.ts +3 -0
- package/accordion/stepper/chocolate/stepper-oompa-loompa.d.ts +3 -0
- package/accordion/stepper/chocolate/stepper-willy-wonka.d.ts +3 -0
- package/accordion/stepper/providers/stepper.service.d.ts +3 -0
- package/accordion/stepper/step-button.d.ts +3 -0
- package/accordion/stepper/stepper-panel.d.ts +3 -0
- package/accordion/stepper/stepper.d.ts +3 -0
- package/accordion/stepper/stepper.module.d.ts +12 -0
- package/button/button-group/button-group.d.ts +3 -0
- package/button/button-group/button-group.module.d.ts +9 -0
- package/button/button-group/button.d.ts +3 -0
- package/button/button-loading/loading-button.d.ts +3 -0
- package/button/button-loading/loading-button.module.d.ts +6 -0
- package/button/button.module.d.ts +6 -0
- package/button/providers/button-in-group.service.d.ts +3 -0
- package/clr-angular.d.ts +1 -105
- package/clr-angular.module.d.ts +23 -0
- package/data/data.module.d.ts +7 -0
- package/data/datagrid/built-in/filters/datagrid-numeric-filter.d.ts +3 -0
- package/data/datagrid/built-in/filters/datagrid-string-filter.d.ts +3 -0
- package/data/datagrid/chocolate/actionable-oompa-loompa.d.ts +3 -0
- package/data/datagrid/chocolate/datagrid-willy-wonka.d.ts +3 -0
- package/data/datagrid/chocolate/expandable-oompa-loompa.d.ts +3 -0
- package/data/datagrid/datagrid-action-bar.d.ts +3 -0
- package/data/datagrid/datagrid-action-overflow.d.ts +3 -0
- package/data/datagrid/datagrid-cell.d.ts +3 -0
- package/data/datagrid/datagrid-column-separator.d.ts +3 -0
- package/data/datagrid/datagrid-column-toggle-button.d.ts +3 -0
- package/data/datagrid/datagrid-column-toggle-title.d.ts +3 -0
- package/data/datagrid/datagrid-column-toggle.d.ts +3 -0
- package/data/datagrid/datagrid-column.d.ts +3 -0
- package/data/datagrid/datagrid-detail-body.d.ts +3 -0
- package/data/datagrid/datagrid-detail-header.d.ts +3 -0
- package/data/datagrid/datagrid-detail-registerer.d.ts +3 -0
- package/data/datagrid/datagrid-detail.d.ts +3 -0
- package/data/datagrid/datagrid-filter.d.ts +3 -0
- package/data/datagrid/datagrid-footer.d.ts +3 -0
- package/data/datagrid/datagrid-hideable-column.d.ts +3 -0
- package/data/datagrid/datagrid-if-detail.d.ts +3 -0
- package/data/datagrid/datagrid-if-expanded.service.d.ts +3 -0
- package/data/datagrid/datagrid-items-trackby.d.ts +3 -0
- package/data/datagrid/datagrid-items.d.ts +3 -0
- package/data/datagrid/datagrid-page-size.d.ts +3 -0
- package/data/datagrid/datagrid-pagination.d.ts +3 -0
- package/data/datagrid/datagrid-placeholder.d.ts +3 -0
- package/data/datagrid/datagrid-row-detail.d.ts +3 -0
- package/data/datagrid/datagrid-row.d.ts +3 -0
- package/data/datagrid/datagrid.d.ts +3 -0
- package/data/datagrid/datagrid.module.d.ts +53 -0
- package/data/datagrid/providers/column-resizer.service.d.ts +3 -0
- package/data/datagrid/providers/columns.service.d.ts +3 -0
- package/data/datagrid/providers/detail.service.d.ts +3 -0
- package/data/datagrid/providers/display-mode.service.d.ts +3 -0
- package/data/datagrid/providers/filters.d.ts +3 -0
- package/data/datagrid/providers/global-expandable-rows.d.ts +3 -0
- package/data/datagrid/providers/items.d.ts +3 -0
- package/data/datagrid/providers/page.d.ts +3 -0
- package/data/datagrid/providers/row-action-service.d.ts +3 -0
- package/data/datagrid/providers/selection.d.ts +3 -0
- package/data/datagrid/providers/sort.d.ts +3 -0
- package/data/datagrid/providers/state-debouncer.provider.d.ts +3 -0
- package/data/datagrid/providers/state.provider.d.ts +3 -0
- package/data/datagrid/providers/table-size.service.d.ts +3 -0
- package/data/datagrid/render/cell-renderer.d.ts +3 -0
- package/data/datagrid/render/header-renderer.d.ts +3 -0
- package/data/datagrid/render/main-renderer.d.ts +3 -0
- package/data/datagrid/render/noop-dom-adapter.d.ts +4 -1
- package/data/datagrid/render/render-organizer.d.ts +3 -0
- package/data/datagrid/render/row-renderer.d.ts +3 -0
- package/data/datagrid/utils/datagrid-filter-registrar.d.ts +3 -0
- package/data/datagrid/wrapped-cell.d.ts +3 -0
- package/data/datagrid/wrapped-column.d.ts +3 -0
- package/data/datagrid/wrapped-row.d.ts +3 -0
- package/data/stack-view/stack-block.d.ts +3 -0
- package/data/stack-view/stack-content-input.d.ts +3 -0
- package/data/stack-view/stack-header.d.ts +3 -0
- package/data/stack-view/stack-input.d.ts +3 -6
- package/data/stack-view/stack-select.d.ts +3 -5
- package/data/stack-view/stack-view-custom-tags.d.ts +3 -0
- package/data/stack-view/stack-view.d.ts +3 -0
- package/data/stack-view/stack-view.module.d.ts +15 -0
- package/data/tree-view/recursive-children.d.ts +3 -0
- package/data/tree-view/recursive-for-of.d.ts +3 -0
- package/data/tree-view/tree-features.service.d.ts +3 -0
- package/data/tree-view/tree-focus-manager.service.d.ts +3 -0
- package/data/tree-view/tree-node-link.d.ts +3 -0
- package/data/tree-view/tree-node.d.ts +3 -0
- package/data/tree-view/tree-view.module.d.ts +12 -0
- package/data/tree-view/tree.d.ts +3 -0
- package/emphasis/alert/alert-item.d.ts +3 -0
- package/emphasis/alert/alert-text.d.ts +3 -0
- package/emphasis/alert/alert.d.ts +3 -0
- package/emphasis/alert/alert.module.d.ts +12 -0
- package/emphasis/alert/alerts-pager.d.ts +3 -0
- package/emphasis/alert/alerts.d.ts +3 -0
- package/emphasis/alert/providers/icon-and-types.service.d.ts +3 -0
- package/emphasis/alert/providers/multi-alert.service.d.ts +3 -0
- package/emphasis/emphasis.module.d.ts +5 -0
- package/esm2020/accordion/accordion-content.mjs +20 -0
- package/esm2020/accordion/accordion-description.mjs +21 -0
- package/esm2020/accordion/accordion-panel.mjs +108 -0
- package/esm2020/accordion/accordion-title.mjs +21 -0
- package/esm2020/accordion/accordion.mjs +61 -0
- package/esm2020/accordion/accordion.module.mjs +55 -0
- package/esm2020/accordion/chocolate/accordion-oompa-loompa.mjs +31 -0
- package/esm2020/accordion/chocolate/accordion-willy-wonka.mjs +17 -0
- package/{esm2015/accordion/enums/accordion-status.enum.js → esm2020/accordion/enums/accordion-status.enum.mjs} +0 -0
- package/{esm2015/accordion/enums/accordion-strategy.enum.js → esm2020/accordion/enums/accordion-strategy.enum.mjs} +0 -0
- package/{esm2015/accordion/index.js → esm2020/accordion/index.mjs} +0 -0
- package/{esm2015/accordion/models/accordion.model.js → esm2020/accordion/models/accordion.model.mjs} +0 -0
- package/esm2020/accordion/providers/accordion.service.mjs +47 -0
- package/esm2020/accordion/stepper/chocolate/stepper-oompa-loompa.mjs +31 -0
- package/esm2020/accordion/stepper/chocolate/stepper-willy-wonka.mjs +17 -0
- package/{esm2015/accordion/stepper/index.js → esm2020/accordion/stepper/index.mjs} +0 -0
- package/{esm2015/accordion/stepper/models/stepper.model.js → esm2020/accordion/stepper/models/stepper.model.mjs} +0 -0
- package/esm2020/accordion/stepper/providers/stepper.service.mjs +55 -0
- package/esm2020/accordion/stepper/step-button.mjs +51 -0
- package/esm2020/accordion/stepper/stepper-panel.mjs +89 -0
- package/esm2020/accordion/stepper/stepper.mjs +93 -0
- package/esm2020/accordion/stepper/stepper.module.mjs +30 -0
- package/{esm2015/accordion/utils/animation.js → esm2020/accordion/utils/animation.mjs} +0 -0
- package/esm2020/button/button-group/button-group.mjs +140 -0
- package/esm2020/button/button-group/button-group.module.mjs +27 -0
- package/{esm2015/button/button-group/button.js → esm2020/button/button-group/button.mjs} +57 -24
- package/{esm2015/button/button-group/index.js → esm2020/button/button-group/index.mjs} +0 -0
- package/{esm2015/button/button-loading/index.js → esm2020/button/button-loading/index.mjs} +0 -0
- package/esm2020/button/button-loading/loading-button.mjs +150 -0
- package/esm2020/button/button-loading/loading-button.module.mjs +24 -0
- package/esm2020/button/button.module.mjs +25 -0
- package/{esm2015/button/index.js → esm2020/button/index.mjs} +0 -0
- package/esm2020/button/providers/button-in-group.service.mjs +25 -0
- package/esm2020/clr-angular.mjs +5 -0
- package/esm2020/clr-angular.module.mjs +96 -0
- package/esm2020/data/data.module.mjs +20 -0
- package/{esm2015/data/datagrid/built-in/comparators/datagrid-property-comparator.js → esm2020/data/datagrid/built-in/comparators/datagrid-property-comparator.mjs} +0 -0
- package/{esm2015/data/datagrid/built-in/filters/datagrid-numeric-filter-impl.js → esm2020/data/datagrid/built-in/filters/datagrid-numeric-filter-impl.mjs} +0 -0
- package/esm2020/data/datagrid/built-in/filters/datagrid-numeric-filter.mjs +200 -0
- package/{esm2015/data/datagrid/built-in/filters/datagrid-property-numeric-filter.js → esm2020/data/datagrid/built-in/filters/datagrid-property-numeric-filter.mjs} +0 -0
- package/{esm2015/data/datagrid/built-in/filters/datagrid-property-string-filter.js → esm2020/data/datagrid/built-in/filters/datagrid-property-string-filter.mjs} +0 -0
- package/{esm2015/data/datagrid/built-in/filters/datagrid-string-filter-impl.js → esm2020/data/datagrid/built-in/filters/datagrid-string-filter-impl.mjs} +0 -0
- package/esm2020/data/datagrid/built-in/filters/datagrid-string-filter.mjs +131 -0
- package/{esm2015/data/datagrid/built-in/nested-property.js → esm2020/data/datagrid/built-in/nested-property.mjs} +0 -0
- package/esm2020/data/datagrid/chocolate/actionable-oompa-loompa.mjs +31 -0
- package/esm2020/data/datagrid/chocolate/datagrid-willy-wonka.mjs +17 -0
- package/esm2020/data/datagrid/chocolate/expandable-oompa-loompa.mjs +31 -0
- package/esm2020/data/datagrid/datagrid-action-bar.mjs +20 -0
- package/esm2020/data/datagrid/datagrid-action-overflow.mjs +161 -0
- package/esm2020/data/datagrid/datagrid-cell.mjs +39 -0
- package/esm2020/data/datagrid/datagrid-column-separator.mjs +172 -0
- package/esm2020/data/datagrid/datagrid-column-toggle-button.mjs +63 -0
- package/esm2020/data/datagrid/datagrid-column-toggle-title.mjs +20 -0
- package/esm2020/data/datagrid/datagrid-column-toggle.mjs +229 -0
- package/esm2020/data/datagrid/datagrid-column.mjs +430 -0
- package/esm2020/data/datagrid/datagrid-detail-body.mjs +30 -0
- package/esm2020/data/datagrid/datagrid-detail-header.mjs +61 -0
- package/esm2020/data/datagrid/datagrid-detail-registerer.mjs +34 -0
- package/esm2020/data/datagrid/datagrid-detail.mjs +70 -0
- package/esm2020/data/datagrid/datagrid-filter.mjs +182 -0
- package/esm2020/data/datagrid/datagrid-footer.mjs +79 -0
- package/esm2020/data/datagrid/datagrid-hideable-column.mjs +104 -0
- package/esm2020/data/datagrid/datagrid-if-detail.mjs +63 -0
- package/esm2020/data/datagrid/datagrid-if-expanded.service.mjs +54 -0
- package/esm2020/data/datagrid/datagrid-items-trackby.mjs +32 -0
- package/esm2020/data/datagrid/datagrid-items.mjs +63 -0
- package/esm2020/data/datagrid/datagrid-page-size.mjs +47 -0
- package/esm2020/data/datagrid/datagrid-pagination.mjs +362 -0
- package/esm2020/data/datagrid/datagrid-placeholder.mjs +41 -0
- package/esm2020/data/datagrid/datagrid-row-detail.mjs +90 -0
- package/esm2020/data/datagrid/datagrid-row.mjs +241 -0
- package/esm2020/data/datagrid/datagrid.mjs +349 -0
- package/esm2020/data/datagrid/datagrid.module.mjs +237 -0
- package/esm2020/data/datagrid/enums/column-changes.enum.mjs +14 -0
- package/{esm2015/data/datagrid/enums/display-mode.enum.js → esm2020/data/datagrid/enums/display-mode.enum.mjs} +0 -0
- package/{esm2015/data/datagrid/enums/render-step.enum.js → esm2020/data/datagrid/enums/render-step.enum.mjs} +0 -0
- package/{esm2015/data/datagrid/enums/selection-type.js → esm2020/data/datagrid/enums/selection-type.mjs} +0 -0
- package/{esm2015/data/datagrid/enums/sort-order.enum.js → esm2020/data/datagrid/enums/sort-order.enum.mjs} +0 -0
- package/{esm2015/data/datagrid/index.js → esm2020/data/datagrid/index.mjs} +0 -0
- package/{esm2015/data/datagrid/interfaces/column-state.interface.js → esm2020/data/datagrid/interfaces/column-state.interface.mjs} +0 -0
- package/{esm2015/data/datagrid/interfaces/comparator.interface.js → esm2020/data/datagrid/interfaces/comparator.interface.mjs} +0 -0
- package/{esm2015/data/datagrid/interfaces/filter.interface.js → esm2020/data/datagrid/interfaces/filter.interface.mjs} +0 -0
- package/{esm2015/data/datagrid/interfaces/numeric-filter.interface.js → esm2020/data/datagrid/interfaces/numeric-filter.interface.mjs} +0 -0
- package/{esm2015/data/datagrid/interfaces/state.interface.js → esm2020/data/datagrid/interfaces/state.interface.mjs} +0 -0
- package/{esm2015/data/datagrid/interfaces/string-filter.interface.js → esm2020/data/datagrid/interfaces/string-filter.interface.mjs} +0 -0
- package/esm2020/data/datagrid/providers/column-resizer.service.mjs +57 -0
- package/{esm2015/data/datagrid/providers/column-state.provider.js → esm2020/data/datagrid/providers/column-state.provider.mjs} +0 -0
- package/esm2020/data/datagrid/providers/columns.service.mjs +53 -0
- package/{esm2015/data/datagrid/providers/custom-filter.js → esm2020/data/datagrid/providers/custom-filter.mjs} +0 -0
- package/esm2020/data/datagrid/providers/detail.service.mjs +61 -0
- package/esm2020/data/datagrid/providers/display-mode.service.mjs +35 -0
- package/esm2020/data/datagrid/providers/filters.mjs +111 -0
- package/esm2020/data/datagrid/providers/global-expandable-rows.mjs +33 -0
- package/esm2020/data/datagrid/providers/items.mjs +173 -0
- package/esm2020/data/datagrid/providers/page.mjs +155 -0
- package/esm2020/data/datagrid/providers/row-action-service.mjs +30 -0
- package/esm2020/data/datagrid/providers/selection.mjs +374 -0
- package/esm2020/data/datagrid/providers/sort.mjs +85 -0
- package/esm2020/data/datagrid/providers/state-debouncer.provider.mjs +42 -0
- package/esm2020/data/datagrid/providers/state.provider.mjs +74 -0
- package/esm2020/data/datagrid/providers/table-size.service.mjs +44 -0
- package/esm2020/data/datagrid/render/cell-renderer.mjs +81 -0
- package/{esm2015/data/datagrid/render/constants.js → esm2020/data/datagrid/render/constants.mjs} +0 -0
- package/esm2020/data/datagrid/render/header-renderer.mjs +132 -0
- package/esm2020/data/datagrid/render/main-renderer.mjs +198 -0
- package/esm2020/data/datagrid/render/noop-dom-adapter.mjs +54 -0
- package/esm2020/data/datagrid/render/render-organizer.mjs +38 -0
- package/esm2020/data/datagrid/render/row-renderer.mjs +58 -0
- package/esm2020/data/datagrid/utils/datagrid-filter-registrar.mjs +42 -0
- package/esm2020/data/datagrid/wrapped-cell.mjs +39 -0
- package/esm2020/data/datagrid/wrapped-column.mjs +40 -0
- package/esm2020/data/datagrid/wrapped-row.mjs +40 -0
- package/{esm2015/data/index.js → esm2020/data/index.mjs} +0 -0
- package/{esm2015/data/stack-view/index.js → esm2020/data/stack-view/index.mjs} +0 -0
- package/esm2020/data/stack-view/stack-block.mjs +214 -0
- package/esm2020/data/stack-view/stack-content-input.mjs +29 -0
- package/{esm2015/data/stack-view/stack-control.js → esm2020/data/stack-view/stack-control.mjs} +0 -0
- package/esm2020/data/stack-view/stack-header.mjs +68 -0
- package/{esm2015/data/stack-view/stack-input.js → esm2020/data/stack-view/stack-input.mjs} +20 -14
- package/esm2020/data/stack-view/stack-select.mjs +48 -0
- package/esm2020/data/stack-view/stack-view-custom-tags.mjs +16 -0
- package/esm2020/data/stack-view/stack-view.mjs +57 -0
- package/esm2020/data/stack-view/stack-view.module.mjs +69 -0
- package/{esm2015/data/tree-view/index.js → esm2020/data/tree-view/index.mjs} +0 -0
- package/{esm2015/data/tree-view/models/async-array.js → esm2020/data/tree-view/models/async-array.mjs} +0 -0
- package/{esm2015/data/tree-view/models/declarative-tree-node.model.js → esm2020/data/tree-view/models/declarative-tree-node.model.mjs} +0 -0
- package/{esm2015/data/tree-view/models/recursive-tree-node.model.js → esm2020/data/tree-view/models/recursive-tree-node.model.mjs} +0 -0
- package/{esm2015/data/tree-view/models/selected-state.enum.js → esm2020/data/tree-view/models/selected-state.enum.mjs} +0 -0
- package/{esm2015/data/tree-view/models/tree-node.model.js → esm2020/data/tree-view/models/tree-node.model.mjs} +0 -0
- package/esm2020/data/tree-view/recursive-children.mjs +81 -0
- package/esm2020/data/tree-view/recursive-for-of.mjs +54 -0
- package/esm2020/data/tree-view/tree-features.service.mjs +37 -0
- package/esm2020/data/tree-view/tree-focus-manager.service.mjs +121 -0
- package/esm2020/data/tree-view/tree-node-link.mjs +26 -0
- package/esm2020/data/tree-view/tree-node.mjs +279 -0
- package/esm2020/data/tree-view/tree-view.module.mjs +34 -0
- package/esm2020/data/tree-view/tree.mjs +91 -0
- package/esm2020/emphasis/alert/alert-item.mjs +43 -0
- package/esm2020/emphasis/alert/alert-text.mjs +22 -0
- package/esm2020/emphasis/alert/alert.mjs +107 -0
- package/esm2020/emphasis/alert/alert.module.mjs +34 -0
- package/esm2020/emphasis/alert/alerts-pager.mjs +72 -0
- package/esm2020/emphasis/alert/alerts.mjs +100 -0
- package/{esm2015/emphasis/alert/index.js → esm2020/emphasis/alert/index.mjs} +0 -0
- package/esm2020/emphasis/alert/providers/icon-and-types.service.mjs +74 -0
- package/esm2020/emphasis/alert/providers/multi-alert.service.mjs +79 -0
- package/{esm2015/emphasis/alert/utils/alert-info-object.js → esm2020/emphasis/alert/utils/alert-info-object.mjs} +0 -0
- package/{esm2015/emphasis/alert/utils/alert-types.js → esm2020/emphasis/alert/utils/alert-types.mjs} +0 -0
- package/esm2020/emphasis/emphasis.module.mjs +18 -0
- package/{esm2015/emphasis/index.js → esm2020/emphasis/index.mjs} +0 -0
- package/esm2020/forms/checkbox/checkbox-container.mjs +127 -0
- package/esm2020/forms/checkbox/checkbox-wrapper.mjs +68 -0
- package/esm2020/forms/checkbox/checkbox.mjs +43 -0
- package/esm2020/forms/checkbox/checkbox.module.mjs +33 -0
- package/{esm2015/forms/checkbox/index.js → esm2020/forms/checkbox/index.mjs} +0 -0
- package/esm2020/forms/combobox/combobox-container.mjs +109 -0
- package/esm2020/forms/combobox/combobox.mjs +363 -0
- package/esm2020/forms/combobox/combobox.module.mjs +81 -0
- package/{esm2015/forms/combobox/index.js → esm2020/forms/combobox/index.mjs} +0 -0
- package/{esm2015/forms/combobox/model/combobox.model.js → esm2020/forms/combobox/model/combobox.model.mjs} +0 -0
- package/{esm2015/forms/combobox/model/multi-select-combobox.model.js → esm2020/forms/combobox/model/multi-select-combobox.model.mjs} +0 -0
- package/{esm2015/forms/combobox/model/pseudo-focus.model.js → esm2020/forms/combobox/model/pseudo-focus.model.mjs} +0 -0
- package/{esm2015/forms/combobox/model/single-select-combobox.model.js → esm2020/forms/combobox/model/single-select-combobox.model.mjs} +0 -0
- package/esm2020/forms/combobox/option-items.directive.mjs +97 -0
- package/esm2020/forms/combobox/option-selected.directive.mjs +22 -0
- package/esm2020/forms/combobox/option.mjs +102 -0
- package/esm2020/forms/combobox/options.mjs +152 -0
- package/esm2020/forms/combobox/providers/combobox-container.service.mjs +18 -0
- package/esm2020/forms/combobox/providers/combobox-focus-handler.service.mjs +215 -0
- package/esm2020/forms/combobox/providers/option-selection.service.mjs +81 -0
- package/esm2020/forms/common/abstract-container.mjs +119 -0
- package/esm2020/forms/common/abstract-control.mjs +50 -0
- package/esm2020/forms/common/common.module.mjs +78 -0
- package/esm2020/forms/common/control-container.mjs +83 -0
- package/esm2020/forms/common/control.mjs +27 -0
- package/esm2020/forms/common/error.mjs +36 -0
- package/esm2020/forms/common/form.mjs +53 -0
- package/esm2020/forms/common/helper.mjs +36 -0
- package/esm2020/forms/common/if-control-state/abstract-if-state.mjs +44 -0
- package/esm2020/forms/common/if-control-state/if-control-state.service.mjs +56 -0
- package/esm2020/forms/common/if-control-state/if-error.mjs +68 -0
- package/esm2020/forms/common/if-control-state/if-success.mjs +45 -0
- package/{esm2015/forms/common/index.js → esm2020/forms/common/index.mjs} +0 -0
- package/esm2020/forms/common/label.mjs +67 -0
- package/esm2020/forms/common/layout.mjs +31 -0
- package/esm2020/forms/common/providers/container-id.service.mjs +33 -0
- package/esm2020/forms/common/providers/control-class.service.mjs +52 -0
- package/esm2020/forms/common/providers/control-id.service.mjs +31 -0
- package/esm2020/forms/common/providers/focus.service.mjs +25 -0
- package/esm2020/forms/common/providers/layout.service.mjs +57 -0
- package/esm2020/forms/common/providers/mark-control.service.mjs +25 -0
- package/esm2020/forms/common/providers/ng-control.service.mjs +33 -0
- package/esm2020/forms/common/success.mjs +36 -0
- package/esm2020/forms/common/wrapped-control.mjs +156 -0
- package/esm2020/forms/datalist/datalist-container.mjs +122 -0
- package/esm2020/forms/datalist/datalist-input.mjs +62 -0
- package/esm2020/forms/datalist/datalist.mjs +48 -0
- package/esm2020/forms/datalist/datalist.module.mjs +31 -0
- package/{esm2015/forms/datalist/index.js → esm2020/forms/datalist/index.mjs} +0 -0
- package/esm2020/forms/datalist/providers/datalist-id.service.mjs +31 -0
- package/esm2020/forms/datepicker/calendar.mjs +118 -0
- package/esm2020/forms/datepicker/date-container.mjs +249 -0
- package/esm2020/forms/datepicker/date-input.mjs +290 -0
- package/esm2020/forms/datepicker/datepicker-view-manager.mjs +46 -0
- package/esm2020/forms/datepicker/datepicker.module.mjs +87 -0
- package/esm2020/forms/datepicker/day.mjs +86 -0
- package/esm2020/forms/datepicker/daypicker.mjs +80 -0
- package/{esm2015/forms/datepicker/index.js → esm2020/forms/datepicker/index.mjs} +0 -0
- package/{esm2015/forms/datepicker/interfaces/date-range.interface.js → esm2020/forms/datepicker/interfaces/date-range.interface.mjs} +0 -0
- package/{esm2015/forms/datepicker/interfaces/day-of-week.interface.js → esm2020/forms/datepicker/interfaces/day-of-week.interface.mjs} +0 -0
- package/{esm2015/forms/datepicker/model/calendar-view.model.js → esm2020/forms/datepicker/model/calendar-view.model.mjs} +0 -0
- package/{esm2015/forms/datepicker/model/calendar.model.js → esm2020/forms/datepicker/model/calendar.model.mjs} +0 -0
- package/{esm2015/forms/datepicker/model/day-view.model.js → esm2020/forms/datepicker/model/day-view.model.mjs} +0 -0
- package/{esm2015/forms/datepicker/model/day.model.js → esm2020/forms/datepicker/model/day.model.mjs} +0 -0
- package/{esm2015/forms/datepicker/model/year-range.model.js → esm2020/forms/datepicker/model/year-range.model.mjs} +0 -0
- package/esm2020/forms/datepicker/monthpicker.mjs +125 -0
- package/esm2020/forms/datepicker/providers/date-form-control.service.mjs +36 -0
- package/esm2020/forms/datepicker/providers/date-io.service.mjs +176 -0
- package/esm2020/forms/datepicker/providers/date-navigation.service.mjs +130 -0
- package/esm2020/forms/datepicker/providers/datepicker-enabled.service.mjs +46 -0
- package/esm2020/forms/datepicker/providers/datepicker-focus.service.mjs +47 -0
- package/esm2020/forms/datepicker/providers/locale-helper.service.mjs +101 -0
- package/esm2020/forms/datepicker/providers/view-manager.service.mjs +41 -0
- package/{esm2015/forms/datepicker/utils/constants.js → esm2020/forms/datepicker/utils/constants.mjs} +0 -0
- package/{esm2015/forms/datepicker/utils/date-utils.js → esm2020/forms/datepicker/utils/date-utils.mjs} +0 -0
- package/esm2020/forms/datepicker/yearpicker.mjs +231 -0
- package/esm2020/forms/forms.module.mjs +64 -0
- package/{esm2015/forms/index.js → esm2020/forms/index.mjs} +0 -0
- package/{esm2015/forms/input/index.js → esm2020/forms/input/index.mjs} +0 -0
- package/{esm2015/forms/input/input-container.js → esm2020/forms/input/input-container.mjs} +44 -13
- package/esm2020/forms/input/input.mjs +27 -0
- package/esm2020/forms/input/input.module.mjs +33 -0
- package/{esm2015/forms/password/index.js → esm2020/forms/password/index.mjs} +0 -0
- package/esm2020/forms/password/password-container.mjs +175 -0
- package/esm2020/forms/password/password.mjs +61 -0
- package/esm2020/forms/password/password.module.mjs +32 -0
- package/{esm2015/forms/radio/index.js → esm2020/forms/radio/index.mjs} +0 -0
- package/esm2020/forms/radio/radio-container.mjs +127 -0
- package/esm2020/forms/radio/radio-wrapper.mjs +49 -0
- package/esm2020/forms/radio/radio.mjs +26 -0
- package/esm2020/forms/radio/radio.module.mjs +33 -0
- package/{esm2015/forms/range/index.js → esm2020/forms/range/index.mjs} +0 -0
- package/esm2020/forms/range/range-container.mjs +124 -0
- package/esm2020/forms/range/range.mjs +26 -0
- package/esm2020/forms/range/range.module.mjs +32 -0
- package/{esm2015/forms/select/index.js → esm2020/forms/select/index.mjs} +0 -0
- package/esm2020/forms/select/select-container.mjs +113 -0
- package/esm2020/forms/select/select.mjs +27 -0
- package/esm2020/forms/select/select.module.mjs +32 -0
- package/{esm2015/forms/textarea/index.js → esm2020/forms/textarea/index.mjs} +0 -0
- package/esm2020/forms/textarea/textarea-container.mjs +83 -0
- package/esm2020/forms/textarea/textarea.mjs +27 -0
- package/esm2020/forms/textarea/textarea.module.mjs +32 -0
- package/esm2020/icon/icon.mjs +24 -0
- package/esm2020/icon/icon.module.mjs +20 -0
- package/{esm2015/icon/index.js → esm2020/icon/index.mjs} +0 -0
- package/{esm2015/index.js → esm2020/index.mjs} +0 -0
- package/{esm2015/layout/index.js → esm2020/layout/index.mjs} +0 -0
- package/esm2020/layout/layout.module.mjs +21 -0
- package/{esm2015/layout/main-container/index.js → esm2020/layout/main-container/index.mjs} +0 -0
- package/esm2020/layout/main-container/main-container.mjs +58 -0
- package/esm2020/layout/main-container/main-container.module.mjs +25 -0
- package/{esm2015/layout/nav/chocolate/index.js → esm2020/layout/nav/chocolate/index.mjs} +0 -0
- package/esm2020/layout/nav/chocolate/main-container-willy-wonka.mjs +17 -0
- package/esm2020/layout/nav/chocolate/nav-detection-oompa-loompa.mjs +33 -0
- package/esm2020/layout/nav/header.mjs +120 -0
- package/{esm2015/layout/nav/index.js → esm2020/layout/nav/index.mjs} +0 -0
- package/esm2020/layout/nav/nav-level.mjs +81 -0
- package/esm2020/layout/nav/navigation.module.mjs +40 -0
- package/{esm2015/layout/nav/providers/responsive-navigation.service.js → esm2020/layout/nav/providers/responsive-navigation.service.mjs} +7 -6
- package/{esm2015/layout/nav/responsive-nav-codes.js → esm2020/layout/nav/responsive-nav-codes.mjs} +0 -0
- package/{esm2015/layout/nav/responsive-nav-control-message.js → esm2020/layout/nav/responsive-nav-control-message.mjs} +0 -0
- package/esm2020/layout/tabs/chocolate/active-oompa-loompa.mjs +36 -0
- package/esm2020/layout/tabs/chocolate/tabs-willy-wonka.mjs +17 -0
- package/{esm2015/layout/tabs/enums/tabs-layout.enum.js → esm2020/layout/tabs/enums/tabs-layout.enum.mjs} +0 -0
- package/{esm2015/layout/tabs/index.js → esm2020/layout/tabs/index.mjs} +0 -0
- package/esm2020/layout/tabs/providers/tabs.service.mjs +45 -0
- package/esm2020/layout/tabs/tab-content.mjs +96 -0
- package/esm2020/layout/tabs/tab-link.directive.mjs +115 -0
- package/esm2020/layout/tabs/tab-overflow-content.mjs +22 -0
- package/esm2020/layout/tabs/tab.mjs +47 -0
- package/{esm2015/layout/tabs/tabs-id.provider.js → esm2020/layout/tabs/tabs-id.provider.mjs} +0 -0
- package/esm2020/layout/tabs/tabs.mjs +312 -0
- package/esm2020/layout/tabs/tabs.module.mjs +58 -0
- package/{esm2015/layout/vertical-nav/index.js → esm2020/layout/vertical-nav/index.mjs} +0 -0
- package/esm2020/layout/vertical-nav/providers/vertical-nav-group-registration.service.mjs +24 -0
- package/esm2020/layout/vertical-nav/providers/vertical-nav-group.service.mjs +25 -0
- package/esm2020/layout/vertical-nav/providers/vertical-nav-icon.service.mjs +27 -0
- package/esm2020/layout/vertical-nav/providers/vertical-nav.service.mjs +54 -0
- package/esm2020/layout/vertical-nav/vertical-nav-group-children.mjs +19 -0
- package/esm2020/layout/vertical-nav/vertical-nav-group.mjs +162 -0
- package/esm2020/layout/vertical-nav/vertical-nav-icon.mjs +24 -0
- package/esm2020/layout/vertical-nav/vertical-nav-link.mjs +44 -0
- package/esm2020/layout/vertical-nav/vertical-nav.mjs +79 -0
- package/esm2020/layout/vertical-nav/vertical-nav.module.mjs +49 -0
- package/{esm2015/modal/index.js → esm2020/modal/index.mjs} +0 -0
- package/esm2020/modal/modal-body.mjs +42 -0
- package/esm2020/modal/modal.mjs +145 -0
- package/esm2020/modal/modal.module.mjs +32 -0
- package/esm2020/popover/common/abstract-popover.mjs +134 -0
- package/{esm2015/popover/common/popover-host-anchor.token.js → esm2020/popover/common/popover-host-anchor.token.mjs} +0 -0
- package/{esm2015/popover/common/popover-options.interface.js → esm2020/popover/common/popover-options.interface.mjs} +0 -0
- package/{esm2015/popover/common/popover.js → esm2020/popover/common/popover.mjs} +0 -0
- package/esm2020/popover/dropdown/dropdown-item.mjs +88 -0
- package/esm2020/popover/dropdown/dropdown-menu.mjs +114 -0
- package/esm2020/popover/dropdown/dropdown-trigger.mjs +48 -0
- package/esm2020/popover/dropdown/dropdown.mjs +62 -0
- package/esm2020/popover/dropdown/dropdown.module.mjs +29 -0
- package/{esm2015/popover/dropdown/index.js → esm2020/popover/dropdown/index.mjs} +0 -0
- package/{esm2015/popover/dropdown/menu-positions.js → esm2020/popover/dropdown/menu-positions.mjs} +0 -0
- package/esm2020/popover/dropdown/providers/dropdown-focus-handler.service.mjs +186 -0
- package/esm2020/popover/dropdown/providers/dropdown.service.mjs +33 -0
- package/{esm2015/popover/index.js → esm2020/popover/index.mjs} +0 -0
- package/esm2020/popover/popover.module.mjs +20 -0
- package/{esm2015/popover/signpost/index.js → esm2020/popover/signpost/index.mjs} +0 -0
- package/esm2020/popover/signpost/providers/signpost-focus-manager.service.mjs +23 -0
- package/esm2020/popover/signpost/providers/signpost-id.service.mjs +26 -0
- package/esm2020/popover/signpost/signpost-content.mjs +177 -0
- package/{esm2015/popover/signpost/signpost-positions.js → esm2020/popover/signpost/signpost-positions.mjs} +0 -0
- package/esm2020/popover/signpost/signpost-trigger.mjs +96 -0
- package/esm2020/popover/signpost/signpost.mjs +89 -0
- package/esm2020/popover/signpost/signpost.module.mjs +33 -0
- package/{esm2015/popover/tooltip/index.js → esm2020/popover/tooltip/index.mjs} +0 -0
- package/esm2020/popover/tooltip/providers/tooltip-id.service.mjs +25 -0
- package/esm2020/popover/tooltip/tooltip-content.mjs +132 -0
- package/esm2020/popover/tooltip/tooltip-trigger.mjs +54 -0
- package/esm2020/popover/tooltip/tooltip.mjs +41 -0
- package/esm2020/popover/tooltip/tooltip.module.mjs +28 -0
- package/{esm2015/progress/progress-bars/index.js → esm2020/progress/progress-bars/index.mjs} +0 -0
- package/{esm2015/progress/progress-bars/progress-bar.js → esm2020/progress/progress-bars/progress-bar.mjs} +75 -30
- package/esm2020/progress/progress-bars/progress-bar.module.mjs +24 -0
- package/{esm2015/progress/spinner/index.js → esm2020/progress/spinner/index.mjs} +0 -0
- package/esm2020/progress/spinner/spinner.mjs +83 -0
- package/esm2020/progress/spinner/spinner.module.mjs +24 -0
- package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
- package/{esm2015/timeline/enums/timeline-layout.enum.js → esm2020/timeline/enums/timeline-layout.enum.mjs} +0 -0
- package/{esm2015/timeline/enums/timeline-step-state.enum.js → esm2020/timeline/enums/timeline-step-state.enum.mjs} +0 -0
- package/{esm2015/timeline/index.js → esm2020/timeline/index.mjs} +0 -0
- package/{esm2015/timeline/interface/icon-attribute.interface.js → esm2020/timeline/interface/icon-attribute.interface.mjs} +0 -0
- package/esm2020/timeline/providers/timeline-icon-attribute.service.mjs +54 -0
- package/esm2020/timeline/timeline-step-description.mjs +20 -0
- package/esm2020/timeline/timeline-step-header.mjs +20 -0
- package/esm2020/timeline/timeline-step-title.mjs +30 -0
- package/esm2020/timeline/timeline-step.mjs +101 -0
- package/esm2020/timeline/timeline.mjs +35 -0
- package/esm2020/timeline/timeline.module.mjs +48 -0
- package/esm2020/utils/a11y/aria-live.service.mjs +163 -0
- package/{esm2015/utils/a11y/index.js → esm2020/utils/a11y/index.mjs} +0 -0
- package/{esm2015/utils/animations/collapse/collapse.js → esm2020/utils/animations/collapse/collapse.mjs} +0 -0
- package/{esm2015/utils/animations/collapse/index.js → esm2020/utils/animations/collapse/index.mjs} +0 -0
- package/{esm2015/utils/animations/constants.js → esm2020/utils/animations/constants.mjs} +0 -0
- package/esm2020/utils/animations/expandable-animation/expandable-animation.mjs +70 -0
- package/esm2020/utils/animations/expandable-animation/expandable-animation.module.mjs +24 -0
- package/{esm2015/utils/animations/expandable-animation/index.js → esm2020/utils/animations/expandable-animation/index.mjs} +0 -0
- package/{esm2015/utils/animations/fade/fade.js → esm2020/utils/animations/fade/fade.mjs} +0 -0
- package/{esm2015/utils/animations/fade/index.js → esm2020/utils/animations/fade/index.mjs} +0 -0
- package/{esm2015/utils/animations/fade-slide/fade-slide.js → esm2020/utils/animations/fade-slide/fade-slide.mjs} +0 -0
- package/{esm2015/utils/animations/fade-slide/index.js → esm2020/utils/animations/fade-slide/index.mjs} +0 -0
- package/{esm2015/utils/animations/index.js → esm2020/utils/animations/index.mjs} +0 -0
- package/{esm2015/utils/animations/slide/index.js → esm2020/utils/animations/slide/index.mjs} +0 -0
- package/{esm2015/utils/animations/slide/slide.js → esm2020/utils/animations/slide/slide.mjs} +0 -0
- package/esm2020/utils/aria/aria.service.mjs +16 -0
- package/{esm2015/utils/breakpoints/breakpoints.js → esm2020/utils/breakpoints/breakpoints.mjs} +0 -0
- package/esm2020/utils/chocolate/oompa-loompa.mjs +32 -0
- package/esm2020/utils/chocolate/willy-wonka.mjs +36 -0
- package/{esm2015/utils/component/is-boolean-attribute-set.js → esm2020/utils/component/is-boolean-attribute-set.mjs} +0 -0
- package/esm2020/utils/conditional/conditional.module.mjs +22 -0
- package/esm2020/utils/conditional/if-active.directive.mjs +104 -0
- package/esm2020/utils/conditional/if-active.service.mjs +77 -0
- package/esm2020/utils/conditional/if-expanded.directive.mjs +92 -0
- package/esm2020/utils/conditional/if-expanded.service.mjs +58 -0
- package/esm2020/utils/conditional/if-open.directive.mjs +87 -0
- package/{esm2015/utils/conditional/index.js → esm2020/utils/conditional/index.mjs} +0 -0
- package/esm2020/utils/dom-adapter/dom-adapter.mjs +52 -0
- package/esm2020/utils/drag-and-drop/drag-and-drop.module.mjs +43 -0
- package/{esm2015/utils/drag-and-drop/drag-event.js → esm2020/utils/drag-and-drop/drag-event.mjs} +0 -0
- package/esm2020/utils/drag-and-drop/drag-handle.mjs +32 -0
- package/esm2020/utils/drag-and-drop/draggable/draggable.mjs +135 -0
- package/esm2020/utils/drag-and-drop/draggable-ghost.mjs +124 -0
- package/esm2020/utils/drag-and-drop/droppable/droppable.mjs +222 -0
- package/esm2020/utils/drag-and-drop/if-dragged.mjs +45 -0
- package/{esm2015/utils/drag-and-drop/index.js → esm2020/utils/drag-and-drop/index.mjs} +0 -0
- package/{esm2015/utils/drag-and-drop/interfaces/drag-event.interface.js → esm2020/utils/drag-and-drop/interfaces/drag-event.interface.mjs} +0 -0
- package/{esm2015/utils/drag-and-drop/interfaces/drop-tolerance.interface.js → esm2020/utils/drag-and-drop/interfaces/drop-tolerance.interface.mjs} +0 -0
- package/{esm2015/utils/drag-and-drop/providers/drag-and-drop-event-bus.service.js → esm2020/utils/drag-and-drop/providers/drag-and-drop-event-bus.service.mjs} +7 -5
- package/esm2020/utils/drag-and-drop/providers/drag-event-listener.service.mjs +179 -0
- package/esm2020/utils/drag-and-drop/providers/drag-handle-registrar.service.mjs +60 -0
- package/esm2020/utils/drag-and-drop/providers/draggable-snapshot.service.mjs +38 -0
- package/esm2020/utils/drag-and-drop/providers/global-drag-mode.service.mjs +26 -0
- package/{esm2015/utils/enums/key-codes.enum.js → esm2020/utils/enums/key-codes.enum.mjs} +0 -0
- package/{esm2015/utils/focus/arrow-key-direction.enum.js → esm2020/utils/focus/arrow-key-direction.enum.mjs} +0 -0
- package/esm2020/utils/focus/focus-on-view-init/focus-on-view-init.mjs +84 -0
- package/esm2020/utils/focus/focus-on-view-init/focus-on-view-init.module.mjs +26 -0
- package/{esm2015/utils/focus/focus-on-view-init/focus-on-view-init.provider.js → esm2020/utils/focus/focus-on-view-init/focus-on-view-init.provider.mjs} +0 -0
- package/{esm2015/utils/focus/focus-on-view-init/index.js → esm2020/utils/focus/focus-on-view-init/index.mjs} +0 -0
- package/esm2020/utils/focus/focus.service.mjs +94 -0
- package/esm2020/utils/focus/focusable-item/basic-focusable-item.service.mjs +58 -0
- package/{esm2015/utils/focus/focusable-item/custom-focusable-item-provider.js → esm2020/utils/focus/focusable-item/custom-focusable-item-provider.mjs} +0 -0
- package/{esm2015/utils/focus/focusable-item/focusable-item.js → esm2020/utils/focus/focusable-item/focusable-item.mjs} +0 -0
- package/{esm2015/utils/focus/focusable-item/linkers.js → esm2020/utils/focus/focusable-item/linkers.mjs} +0 -0
- package/{esm2015/utils/focus/key-focus/enums/focus-direction.enum.js → esm2020/utils/focus/key-focus/enums/focus-direction.enum.mjs} +0 -0
- package/{esm2015/utils/focus/key-focus/interfaces.js → esm2020/utils/focus/key-focus/interfaces.mjs} +0 -0
- package/esm2020/utils/focus/key-focus/key-focus-item.mjs +34 -0
- package/esm2020/utils/focus/key-focus/key-focus.mjs +194 -0
- package/esm2020/utils/focus/key-focus/key-focus.module.mjs +26 -0
- package/esm2020/utils/focus/key-focus/roving-tabindex.mjs +102 -0
- package/{esm2015/utils/focus/key-focus/util.js → esm2020/utils/focus/key-focus/util.mjs} +0 -0
- package/{esm2015/utils/focus/wrap-observable.js → esm2020/utils/focus/wrap-observable.mjs} +0 -0
- package/{esm2015/utils/focus-trap/focus-trap-config.interface.js → esm2020/utils/focus-trap/focus-trap-config.interface.mjs} +0 -0
- package/esm2020/utils/focus-trap/focus-trap-tracker.service.mjs +32 -0
- package/esm2020/utils/focus-trap/focus-trap.directive.mjs +156 -0
- package/esm2020/utils/focus-trap/focus-trap.module.mjs +24 -0
- package/{esm2015/utils/focus-trap/index.js → esm2020/utils/focus-trap/index.mjs} +0 -0
- package/{esm2015/utils/forms/validation.js → esm2020/utils/forms/validation.mjs} +0 -0
- package/{esm2015/utils/host-wrapping/dynamic-wrapper.js → esm2020/utils/host-wrapping/dynamic-wrapper.mjs} +0 -0
- package/esm2020/utils/host-wrapping/empty-anchor.mjs +18 -0
- package/{esm2015/utils/host-wrapping/host-wrapper.js → esm2020/utils/host-wrapping/host-wrapper.mjs} +0 -0
- package/esm2020/utils/host-wrapping/host-wrapping.module.mjs +21 -0
- package/{esm2015/utils/i18n/common-strings.default.js → esm2020/utils/i18n/common-strings.default.mjs} +2 -2
- package/{esm2015/utils/i18n/common-strings.interface.js → esm2020/utils/i18n/common-strings.interface.mjs} +0 -0
- package/esm2020/utils/i18n/common-strings.service.mjs +47 -0
- package/{esm2015/utils/i18n/index.js → esm2020/utils/i18n/index.mjs} +0 -0
- package/{esm2015/utils/id-generator/id-generator.service.js → esm2020/utils/id-generator/id-generator.service.mjs} +0 -0
- package/{esm2015/utils/index.js → esm2020/utils/index.mjs} +0 -0
- package/{esm2015/utils/key-codes/key-codes.js → esm2020/utils/key-codes/key-codes.mjs} +0 -0
- package/{esm2015/utils/loading/index.js → esm2020/utils/loading/index.mjs} +0 -0
- package/{esm2015/utils/loading/loading-listener.js → esm2020/utils/loading/loading-listener.mjs} +0 -0
- package/esm2020/utils/loading/loading.mjs +55 -0
- package/esm2020/utils/loading/loading.module.mjs +20 -0
- package/{esm2015/utils/outside-click/index.js → esm2020/utils/outside-click/index.mjs} +0 -0
- package/esm2020/utils/outside-click/outside-click.mjs +46 -0
- package/esm2020/utils/outside-click/outside-click.module.mjs +20 -0
- package/{esm2015/utils/popover/enums/alignment.enum.js → esm2020/utils/popover/enums/alignment.enum.mjs} +0 -0
- package/{esm2015/utils/popover/enums/axis.enum.js → esm2020/utils/popover/enums/axis.enum.mjs} +0 -0
- package/{esm2015/utils/popover/enums/positions.enum.js → esm2020/utils/popover/enums/positions.enum.mjs} +0 -0
- package/{esm2015/utils/popover/enums/side.enum.js → esm2020/utils/popover/enums/side.enum.mjs} +0 -0
- package/{esm2015/utils/popover/enums/viewport-violation.enum.js → esm2020/utils/popover/enums/viewport-violation.enum.mjs} +0 -0
- package/{esm2015/utils/popover/index.js → esm2020/utils/popover/index.mjs} +0 -0
- package/{esm2015/utils/popover/interfaces/popover-content-offset.interface.js → esm2020/utils/popover/interfaces/popover-content-offset.interface.mjs} +0 -0
- package/{esm2015/utils/popover/interfaces/popover-position.interface.js → esm2020/utils/popover/interfaces/popover-position.interface.mjs} +0 -0
- package/{esm2015/utils/popover/interfaces/visibility-coords.interface.js → esm2020/utils/popover/interfaces/visibility-coords.interface.mjs} +0 -0
- package/esm2020/utils/popover/popover-anchor.mjs +26 -0
- package/esm2020/utils/popover/popover-close-button.mjs +52 -0
- package/esm2020/utils/popover/popover-content.mjs +150 -0
- package/esm2020/utils/popover/popover-open-close-button.mjs +43 -0
- package/esm2020/utils/popover/popover.module.mjs +26 -0
- package/esm2020/utils/popover/position-operators.mjs +180 -0
- package/esm2020/utils/popover/providers/popover-events.service.mjs +160 -0
- package/esm2020/utils/popover/providers/popover-position.service.mjs +215 -0
- package/esm2020/utils/popover/providers/popover-toggle.service.mjs +70 -0
- package/esm2020/utils/scrolling/scrolling-service.mjs +30 -0
- package/{esm2015/utils/template-ref/index.js → esm2020/utils/template-ref/index.mjs} +0 -0
- package/esm2020/utils/template-ref/template-ref-container.mjs +29 -0
- package/esm2020/utils/template-ref/template-ref.module.mjs +25 -0
- package/{esm2015/wizard/index.js → esm2020/wizard/index.mjs} +0 -0
- package/esm2020/wizard/providers/button-hub.service.mjs +63 -0
- package/esm2020/wizard/providers/header-actions.service.mjs +37 -0
- package/esm2020/wizard/providers/page-collection.service.mjs +361 -0
- package/esm2020/wizard/providers/wizard-navigation.service.mjs +574 -0
- package/esm2020/wizard/wizard-button.mjs +187 -0
- package/esm2020/wizard/wizard-custom-tags.mjs +16 -0
- package/esm2020/wizard/wizard-header-action.mjs +76 -0
- package/esm2020/wizard/wizard-page-buttons.mjs +19 -0
- package/esm2020/wizard/wizard-page-header-actions.mjs +19 -0
- package/esm2020/wizard/wizard-page-navtitle.mjs +19 -0
- package/esm2020/wizard/wizard-page-title.mjs +19 -0
- package/{esm2015/wizard/wizard-page.js → esm2020/wizard/wizard-page.mjs} +90 -47
- package/esm2020/wizard/wizard-stepnav-item.mjs +122 -0
- package/esm2020/wizard/wizard-stepnav.mjs +48 -0
- package/esm2020/wizard/wizard.mjs +475 -0
- package/esm2020/wizard/wizard.module.mjs +72 -0
- package/fesm2015/clr-angular.mjs +26606 -0
- package/fesm2015/clr-angular.mjs.map +1 -0
- package/{fesm2015/clr-angular.js → fesm2020/clr-angular.mjs} +8969 -6517
- package/fesm2020/clr-angular.mjs.map +1 -0
- package/forms/checkbox/checkbox-container.d.ts +3 -0
- package/forms/checkbox/checkbox-wrapper.d.ts +3 -0
- package/forms/checkbox/checkbox.d.ts +3 -0
- package/forms/checkbox/checkbox.module.d.ts +11 -5
- package/forms/combobox/combobox-container.d.ts +3 -0
- package/forms/combobox/combobox.d.ts +3 -5
- package/forms/combobox/combobox.module.d.ts +18 -5
- package/forms/combobox/option-items.directive.d.ts +3 -0
- package/forms/combobox/option-selected.directive.d.ts +3 -0
- package/forms/combobox/option.d.ts +3 -0
- package/forms/combobox/options.d.ts +3 -0
- package/forms/combobox/providers/combobox-container.service.d.ts +3 -0
- package/forms/combobox/providers/combobox-focus-handler.service.d.ts +4 -1
- package/forms/combobox/providers/option-selection.service.d.ts +3 -0
- package/forms/common/abstract-container.d.ts +3 -0
- package/forms/common/abstract-control.d.ts +3 -5
- package/forms/common/common.module.d.ts +16 -5
- package/forms/common/control-container.d.ts +3 -5
- package/forms/common/control.d.ts +3 -0
- package/forms/common/error.d.ts +3 -5
- package/forms/common/form.d.ts +3 -0
- package/forms/common/helper.d.ts +3 -5
- package/forms/common/if-control-state/abstract-if-state.d.ts +3 -0
- package/forms/common/if-control-state/if-control-state.service.d.ts +3 -0
- package/forms/common/if-control-state/if-error.d.ts +3 -0
- package/forms/common/if-control-state/if-success.d.ts +3 -0
- package/forms/common/label.d.ts +3 -0
- package/forms/common/layout.d.ts +3 -0
- package/forms/common/providers/container-id.service.d.ts +3 -0
- package/forms/common/providers/control-class.service.d.ts +3 -0
- package/forms/common/providers/control-id.service.d.ts +3 -0
- package/forms/common/providers/focus.service.d.ts +3 -0
- package/forms/common/providers/layout.service.d.ts +3 -0
- package/forms/common/providers/mark-control.service.d.ts +3 -0
- package/forms/common/providers/ng-control.service.d.ts +3 -0
- package/forms/common/success.d.ts +3 -5
- package/forms/common/wrapped-control.d.ts +3 -0
- package/forms/datalist/datalist-container.d.ts +3 -5
- package/forms/datalist/datalist-input.d.ts +3 -0
- package/forms/datalist/datalist.d.ts +3 -0
- package/forms/datalist/datalist.module.d.ts +10 -0
- package/forms/datalist/providers/datalist-id.service.d.ts +3 -0
- package/forms/datepicker/calendar.d.ts +3 -0
- package/forms/datepicker/date-container.d.ts +3 -0
- package/forms/datepicker/date-input.d.ts +3 -0
- package/forms/datepicker/datepicker-view-manager.d.ts +3 -0
- package/forms/datepicker/datepicker.module.d.ts +19 -0
- package/forms/datepicker/day.d.ts +3 -0
- package/forms/datepicker/daypicker.d.ts +3 -0
- package/forms/datepicker/monthpicker.d.ts +3 -0
- package/forms/datepicker/providers/date-form-control.service.d.ts +3 -0
- package/forms/datepicker/providers/date-io.service.d.ts +3 -0
- package/forms/datepicker/providers/date-navigation.service.d.ts +3 -0
- package/forms/datepicker/providers/datepicker-enabled.service.d.ts +3 -0
- package/forms/datepicker/providers/datepicker-focus.service.d.ts +3 -0
- package/forms/datepicker/providers/locale-helper.service.d.ts +3 -0
- package/forms/datepicker/providers/view-manager.service.d.ts +3 -0
- package/forms/datepicker/yearpicker.d.ts +3 -0
- package/forms/forms.module.d.ts +16 -0
- package/forms/input/input-container.d.ts +3 -5
- package/forms/input/input.d.ts +3 -0
- package/forms/input/input.module.d.ts +10 -5
- package/forms/password/password-container.d.ts +3 -0
- package/forms/password/password.d.ts +3 -0
- package/forms/password/password.module.d.ts +10 -5
- package/forms/radio/radio-container.d.ts +3 -0
- package/forms/radio/radio-wrapper.d.ts +3 -0
- package/forms/radio/radio.d.ts +3 -0
- package/forms/radio/radio.module.d.ts +11 -5
- package/forms/range/range-container.d.ts +3 -0
- package/forms/range/range.d.ts +3 -0
- package/forms/range/range.module.d.ts +10 -5
- package/forms/select/select-container.d.ts +3 -5
- package/forms/select/select.d.ts +3 -0
- package/forms/select/select.module.d.ts +10 -5
- package/forms/textarea/textarea-container.d.ts +3 -5
- package/forms/textarea/textarea.d.ts +3 -0
- package/forms/textarea/textarea.module.d.ts +10 -5
- package/icon/icon.d.ts +5 -0
- package/icon/icon.module.d.ts +6 -0
- package/layout/layout.module.d.ts +8 -0
- package/layout/main-container/main-container.d.ts +3 -0
- package/layout/main-container/main-container.module.d.ts +7 -0
- package/layout/nav/chocolate/main-container-willy-wonka.d.ts +3 -0
- package/layout/nav/chocolate/nav-detection-oompa-loompa.d.ts +3 -0
- package/layout/nav/header.d.ts +3 -0
- package/layout/nav/nav-level.d.ts +3 -0
- package/layout/nav/navigation.module.d.ts +11 -0
- package/layout/nav/providers/responsive-navigation.service.d.ts +3 -0
- package/layout/tabs/chocolate/active-oompa-loompa.d.ts +3 -0
- package/layout/tabs/chocolate/tabs-willy-wonka.d.ts +3 -0
- package/layout/tabs/providers/tabs.service.d.ts +3 -0
- package/layout/tabs/tab-content.d.ts +3 -0
- package/layout/tabs/tab-link.directive.d.ts +3 -0
- package/layout/tabs/tab-overflow-content.d.ts +3 -0
- package/layout/tabs/tab.d.ts +3 -0
- package/layout/tabs/tabs.d.ts +3 -0
- package/layout/tabs/tabs.module.d.ts +16 -0
- package/layout/vertical-nav/providers/vertical-nav-group-registration.service.d.ts +3 -0
- package/layout/vertical-nav/providers/vertical-nav-group.service.d.ts +3 -0
- package/layout/vertical-nav/providers/vertical-nav-icon.service.d.ts +3 -0
- package/layout/vertical-nav/providers/vertical-nav.service.d.ts +3 -0
- package/layout/vertical-nav/vertical-nav-group-children.d.ts +3 -0
- package/layout/vertical-nav/vertical-nav-group.d.ts +3 -0
- package/layout/vertical-nav/vertical-nav-icon.d.ts +3 -0
- package/layout/vertical-nav/vertical-nav-link.d.ts +3 -0
- package/layout/vertical-nav/vertical-nav.d.ts +3 -0
- package/layout/vertical-nav/vertical-nav.module.d.ts +13 -0
- package/modal/modal-body.d.ts +3 -0
- package/modal/modal.d.ts +3 -0
- package/modal/modal.module.d.ts +10 -0
- package/package.json +24 -12
- package/popover/common/abstract-popover.d.ts +3 -0
- package/popover/dropdown/dropdown-item.d.ts +3 -0
- package/popover/dropdown/dropdown-menu.d.ts +3 -0
- package/popover/dropdown/dropdown-trigger.d.ts +3 -0
- package/popover/dropdown/dropdown.d.ts +3 -0
- package/popover/dropdown/dropdown.module.d.ts +11 -0
- package/popover/dropdown/providers/dropdown-focus-handler.service.d.ts +3 -0
- package/popover/dropdown/providers/dropdown.service.d.ts +3 -0
- package/popover/popover.module.d.ts +7 -0
- package/popover/signpost/providers/signpost-focus-manager.service.d.ts +3 -0
- package/popover/signpost/providers/signpost-id.service.d.ts +3 -0
- package/popover/signpost/signpost-content.d.ts +3 -0
- package/popover/signpost/signpost-trigger.d.ts +3 -0
- package/popover/signpost/signpost.d.ts +3 -0
- package/popover/signpost/signpost.module.d.ts +11 -0
- package/popover/tooltip/providers/tooltip-id.service.d.ts +3 -0
- package/popover/tooltip/tooltip-content.d.ts +3 -0
- package/popover/tooltip/tooltip-trigger.d.ts +3 -0
- package/popover/tooltip/tooltip.d.ts +3 -0
- package/popover/tooltip/tooltip.module.d.ts +10 -0
- package/progress/progress-bars/progress-bar.d.ts +3 -0
- package/progress/progress-bars/progress-bar.module.d.ts +6 -0
- package/progress/spinner/spinner.d.ts +3 -0
- package/progress/spinner/spinner.module.d.ts +6 -0
- package/schematics/add/index.js +9 -9
- package/schematics/add/index.js.map +1 -1
- package/schematics/add/index.spec.js +13 -13
- package/schematics/add/index.spec.js.map +1 -1
- package/schematics/add/schema.json +1 -1
- package/schematics/migration-collection.json +5 -0
- package/schematics/update/update-13.0.0.js +37 -0
- package/schematics/update/update-13.0.0.js.map +1 -0
- package/schematics/update/update-13.0.0.spec.js +71 -0
- package/schematics/update/update-13.0.0.spec.js.map +1 -0
- package/schematics/update/update-3.0.0.js +1 -1
- package/schematics/update/update-3.0.0.js.map +1 -1
- package/schematics/update/update-5.0.0.js +1 -1
- package/schematics/update/update-5.0.0.js.map +1 -1
- package/schematics/update/update-5.0.0.spec.js +4 -4
- package/schematics/update/update-5.0.0.spec.js.map +1 -1
- package/schematics/utility/add-module-import-to-module.js +2 -2
- package/schematics/utility/add-module-import-to-module.js.map +1 -1
- package/schematics/utility/find-app-module.js +2 -2
- package/schematics/utility/find-app-module.js.map +1 -1
- package/schematics/utility/update-json-file.js +1 -1
- package/schematics/utility/update-json-file.js.map +1 -1
- package/src/utils/popover/README.md +139 -0
- package/timeline/providers/timeline-icon-attribute.service.d.ts +3 -0
- package/timeline/timeline-step-description.d.ts +3 -0
- package/timeline/timeline-step-header.d.ts +3 -0
- package/timeline/timeline-step-title.d.ts +3 -0
- package/timeline/timeline-step.d.ts +3 -0
- package/timeline/timeline.d.ts +3 -0
- package/timeline/timeline.module.d.ts +12 -0
- package/utils/a11y/aria-live.service.d.ts +3 -0
- package/utils/animations/expandable-animation/expandable-animation.d.ts +3 -0
- package/utils/animations/expandable-animation/expandable-animation.module.d.ts +6 -0
- package/utils/aria/aria.service.d.ts +3 -0
- package/utils/chocolate/oompa-loompa.d.ts +3 -0
- package/utils/chocolate/willy-wonka.d.ts +3 -0
- package/utils/conditional/conditional.module.d.ts +8 -0
- package/utils/conditional/if-active.directive.d.ts +3 -0
- package/utils/conditional/if-active.service.d.ts +3 -0
- package/utils/conditional/if-expanded.directive.d.ts +3 -0
- package/utils/conditional/if-expanded.service.d.ts +3 -0
- package/utils/conditional/if-open.directive.d.ts +3 -0
- package/utils/dom-adapter/dom-adapter.d.ts +4 -1
- package/utils/drag-and-drop/drag-and-drop.module.d.ts +10 -0
- package/utils/drag-and-drop/drag-handle.d.ts +3 -0
- package/utils/drag-and-drop/draggable/draggable.d.ts +3 -0
- package/utils/drag-and-drop/draggable-ghost.d.ts +3 -0
- package/utils/drag-and-drop/droppable/droppable.d.ts +3 -0
- package/utils/drag-and-drop/if-dragged.d.ts +3 -0
- package/utils/drag-and-drop/providers/drag-and-drop-event-bus.service.d.ts +3 -0
- package/utils/drag-and-drop/providers/drag-event-listener.service.d.ts +3 -0
- package/utils/drag-and-drop/providers/drag-handle-registrar.service.d.ts +3 -0
- package/utils/drag-and-drop/providers/draggable-snapshot.service.d.ts +3 -0
- package/utils/drag-and-drop/providers/global-drag-mode.service.d.ts +3 -0
- package/utils/focus/focus-on-view-init/focus-on-view-init.d.ts +3 -0
- package/utils/focus/focus-on-view-init/focus-on-view-init.module.d.ts +6 -0
- package/utils/focus/focus.service.d.ts +3 -0
- package/utils/focus/focusable-item/basic-focusable-item.service.d.ts +3 -0
- package/utils/focus/key-focus/key-focus-item.d.ts +3 -0
- package/utils/focus/key-focus/key-focus.d.ts +3 -0
- package/utils/focus/key-focus/key-focus.module.d.ts +8 -0
- package/utils/focus/key-focus/roving-tabindex.d.ts +3 -0
- package/utils/focus-trap/focus-trap-tracker.service.d.ts +3 -0
- package/utils/focus-trap/focus-trap.directive.d.ts +3 -0
- package/utils/focus-trap/focus-trap.module.d.ts +6 -0
- package/utils/host-wrapping/empty-anchor.d.ts +3 -5
- package/utils/host-wrapping/host-wrapping.module.d.ts +5 -5
- package/utils/i18n/common-strings.service.d.ts +3 -0
- package/utils/loading/loading.d.ts +3 -0
- package/utils/loading/loading.module.d.ts +6 -0
- package/utils/outside-click/outside-click.d.ts +3 -0
- package/utils/outside-click/outside-click.module.d.ts +6 -0
- package/utils/popover/popover-anchor.d.ts +3 -0
- package/utils/popover/popover-close-button.d.ts +3 -0
- package/utils/popover/popover-content.d.ts +3 -0
- package/utils/popover/popover-open-close-button.d.ts +3 -0
- package/utils/popover/popover.module.d.ts +8 -0
- package/utils/popover/providers/popover-events.service.d.ts +3 -0
- package/utils/popover/providers/popover-position.service.d.ts +3 -0
- package/utils/popover/providers/popover-toggle.service.d.ts +3 -0
- package/utils/scrolling/scrolling-service.d.ts +3 -0
- package/utils/template-ref/template-ref-container.d.ts +3 -0
- package/utils/template-ref/template-ref.module.d.ts +6 -0
- package/wizard/providers/button-hub.service.d.ts +3 -0
- package/wizard/providers/header-actions.service.d.ts +3 -0
- package/wizard/providers/page-collection.service.d.ts +3 -0
- package/wizard/providers/wizard-navigation.service.d.ts +3 -0
- package/wizard/wizard-button.d.ts +3 -0
- package/wizard/wizard-custom-tags.d.ts +3 -0
- package/wizard/wizard-header-action.d.ts +3 -0
- package/wizard/wizard-page-buttons.d.ts +3 -0
- package/wizard/wizard-page-header-actions.d.ts +3 -0
- package/wizard/wizard-page-navtitle.d.ts +3 -0
- package/wizard/wizard-page-title.d.ts +3 -0
- package/wizard/wizard-page.d.ts +3 -0
- package/wizard/wizard-stepnav-item.d.ts +3 -0
- package/wizard/wizard-stepnav.d.ts +3 -0
- package/wizard/wizard.d.ts +3 -0
- package/wizard/wizard.module.d.ts +18 -0
- package/bundles/clr-angular.umd.js +0 -26095
- package/bundles/clr-angular.umd.js.map +0 -1
- package/clr-angular.metadata.json +0 -1
- package/esm2015/accordion/accordion-content.js +0 -16
- package/esm2015/accordion/accordion-description.js +0 -17
- package/esm2015/accordion/accordion-panel.js +0 -105
- package/esm2015/accordion/accordion-title.js +0 -17
- package/esm2015/accordion/accordion.js +0 -57
- package/esm2015/accordion/accordion.module.js +0 -39
- package/esm2015/accordion/chocolate/accordion-oompa-loompa.js +0 -30
- package/esm2015/accordion/chocolate/accordion-willy-wonka.js +0 -13
- package/esm2015/accordion/providers/accordion.service.js +0 -44
- package/esm2015/accordion/stepper/chocolate/stepper-oompa-loompa.js +0 -30
- package/esm2015/accordion/stepper/chocolate/stepper-willy-wonka.js +0 -13
- package/esm2015/accordion/stepper/providers/stepper.service.js +0 -52
- package/esm2015/accordion/stepper/step-button.js +0 -47
- package/esm2015/accordion/stepper/stepper-panel.js +0 -88
- package/esm2015/accordion/stepper/stepper.js +0 -87
- package/esm2015/accordion/stepper/stepper.module.js +0 -25
- package/esm2015/button/button-group/button-group.js +0 -129
- package/esm2015/button/button-group/button-group.module.js +0 -22
- package/esm2015/button/button-loading/loading-button.js +0 -109
- package/esm2015/button/button-loading/loading-button.module.js +0 -19
- package/esm2015/button/button.module.js +0 -21
- package/esm2015/button/providers/button-in-group.service.js +0 -22
- package/esm2015/clr-angular.js +0 -108
- package/esm2015/clr-angular.module.js +0 -55
- package/esm2015/data/data.module.js +0 -15
- package/esm2015/data/datagrid/built-in/filters/datagrid-numeric-filter.js +0 -169
- package/esm2015/data/datagrid/built-in/filters/datagrid-string-filter.js +0 -111
- package/esm2015/data/datagrid/chocolate/actionable-oompa-loompa.js +0 -30
- package/esm2015/data/datagrid/chocolate/datagrid-willy-wonka.js +0 -13
- package/esm2015/data/datagrid/chocolate/expandable-oompa-loompa.js +0 -30
- package/esm2015/data/datagrid/datagrid-action-bar.js +0 -16
- package/esm2015/data/datagrid/datagrid-action-overflow.js +0 -123
- package/esm2015/data/datagrid/datagrid-cell.js +0 -38
- package/esm2015/data/datagrid/datagrid-column-separator.js +0 -151
- package/esm2015/data/datagrid/datagrid-column-toggle-button.js +0 -53
- package/esm2015/data/datagrid/datagrid-column-toggle-title.js +0 -16
- package/esm2015/data/datagrid/datagrid-column-toggle.js +0 -149
- package/esm2015/data/datagrid/datagrid-column.js +0 -374
- package/esm2015/data/datagrid/datagrid-detail-body.js +0 -22
- package/esm2015/data/datagrid/datagrid-detail-header.js +0 -45
- package/esm2015/data/datagrid/datagrid-detail-registerer.js +0 -31
- package/esm2015/data/datagrid/datagrid-detail.js +0 -52
- package/esm2015/data/datagrid/datagrid-filter.js +0 -131
- package/esm2015/data/datagrid/datagrid-footer.js +0 -58
- package/esm2015/data/datagrid/datagrid-hideable-column.js +0 -97
- package/esm2015/data/datagrid/datagrid-if-detail.js +0 -62
- package/esm2015/data/datagrid/datagrid-if-expanded.service.js +0 -52
- package/esm2015/data/datagrid/datagrid-items-trackby.js +0 -29
- package/esm2015/data/datagrid/datagrid-items.js +0 -63
- package/esm2015/data/datagrid/datagrid-page-size.js +0 -37
- package/esm2015/data/datagrid/datagrid-pagination.js +0 -258
- package/esm2015/data/datagrid/datagrid-placeholder.js +0 -34
- package/esm2015/data/datagrid/datagrid-row-detail.js +0 -81
- package/esm2015/data/datagrid/datagrid-row.js +0 -218
- package/esm2015/data/datagrid/datagrid.js +0 -295
- package/esm2015/data/datagrid/datagrid.module.js +0 -127
- package/esm2015/data/datagrid/enums/column-changes.enum.js +0 -16
- package/esm2015/data/datagrid/providers/column-resizer.service.js +0 -59
- package/esm2015/data/datagrid/providers/columns.service.js +0 -50
- package/esm2015/data/datagrid/providers/detail.service.js +0 -58
- package/esm2015/data/datagrid/providers/display-mode.service.js +0 -35
- package/esm2015/data/datagrid/providers/filters.js +0 -112
- package/esm2015/data/datagrid/providers/global-expandable-rows.js +0 -33
- package/esm2015/data/datagrid/providers/items.js +0 -175
- package/esm2015/data/datagrid/providers/page.js +0 -155
- package/esm2015/data/datagrid/providers/row-action-service.js +0 -27
- package/esm2015/data/datagrid/providers/selection.js +0 -376
- package/esm2015/data/datagrid/providers/sort.js +0 -85
- package/esm2015/data/datagrid/providers/state-debouncer.provider.js +0 -39
- package/esm2015/data/datagrid/providers/state.provider.js +0 -77
- package/esm2015/data/datagrid/providers/table-size.service.js +0 -41
- package/esm2015/data/datagrid/render/cell-renderer.js +0 -82
- package/esm2015/data/datagrid/render/header-renderer.js +0 -133
- package/esm2015/data/datagrid/render/main-renderer.js +0 -199
- package/esm2015/data/datagrid/render/noop-dom-adapter.js +0 -51
- package/esm2015/data/datagrid/render/render-organizer.js +0 -35
- package/esm2015/data/datagrid/render/row-renderer.js +0 -57
- package/esm2015/data/datagrid/utils/datagrid-filter-registrar.js +0 -41
- package/esm2015/data/datagrid/wrapped-cell.js +0 -31
- package/esm2015/data/datagrid/wrapped-column.js +0 -32
- package/esm2015/data/datagrid/wrapped-row.js +0 -32
- package/esm2015/data/stack-view/stack-block.js +0 -146
- package/esm2015/data/stack-view/stack-content-input.js +0 -25
- package/esm2015/data/stack-view/stack-header.js +0 -45
- package/esm2015/data/stack-view/stack-select.js +0 -38
- package/esm2015/data/stack-view/stack-view-custom-tags.js +0 -12
- package/esm2015/data/stack-view/stack-view.js +0 -50
- package/esm2015/data/stack-view/stack-view.module.js +0 -47
- package/esm2015/data/tree-view/recursive-children.js +0 -70
- package/esm2015/data/tree-view/recursive-for-of.js +0 -53
- package/esm2015/data/tree-view/tree-features.service.js +0 -34
- package/esm2015/data/tree-view/tree-focus-manager.service.js +0 -118
- package/esm2015/data/tree-view/tree-node-link.js +0 -25
- package/esm2015/data/tree-view/tree-node.js +0 -252
- package/esm2015/data/tree-view/tree-view.module.js +0 -30
- package/esm2015/data/tree-view/tree.js +0 -78
- package/esm2015/emphasis/alert/alert-item.js +0 -32
- package/esm2015/emphasis/alert/alert-text.js +0 -18
- package/esm2015/emphasis/alert/alert.js +0 -96
- package/esm2015/emphasis/alert/alert.module.js +0 -30
- package/esm2015/emphasis/alert/alerts-pager.js +0 -69
- package/esm2015/emphasis/alert/alerts.js +0 -94
- package/esm2015/emphasis/alert/providers/icon-and-types.service.js +0 -74
- package/esm2015/emphasis/alert/providers/multi-alert.service.js +0 -76
- package/esm2015/emphasis/emphasis.module.js +0 -13
- package/esm2015/forms/checkbox/checkbox-container.js +0 -95
- package/esm2015/forms/checkbox/checkbox-wrapper.js +0 -57
- package/esm2015/forms/checkbox/checkbox.js +0 -40
- package/esm2015/forms/checkbox/checkbox.module.js +0 -29
- package/esm2015/forms/combobox/combobox-container.js +0 -79
- package/esm2015/forms/combobox/combobox.js +0 -329
- package/esm2015/forms/combobox/combobox.module.js +0 -53
- package/esm2015/forms/combobox/option-items.directive.js +0 -96
- package/esm2015/forms/combobox/option-selected.directive.js +0 -21
- package/esm2015/forms/combobox/option.js +0 -91
- package/esm2015/forms/combobox/options.js +0 -125
- package/esm2015/forms/combobox/providers/combobox-container.service.js +0 -15
- package/esm2015/forms/combobox/providers/combobox-focus-handler.service.js +0 -213
- package/esm2015/forms/combobox/providers/option-selection.service.js +0 -78
- package/esm2015/forms/common/abstract-container.js +0 -113
- package/esm2015/forms/common/abstract-control.js +0 -47
- package/esm2015/forms/common/common.module.js +0 -56
- package/esm2015/forms/common/control-container.js +0 -51
- package/esm2015/forms/common/control.js +0 -26
- package/esm2015/forms/common/error.js +0 -32
- package/esm2015/forms/common/form.js +0 -47
- package/esm2015/forms/common/helper.js +0 -32
- package/esm2015/forms/common/if-control-state/abstract-if-state.js +0 -41
- package/esm2015/forms/common/if-control-state/if-control-state.service.js +0 -56
- package/esm2015/forms/common/if-control-state/if-error.js +0 -65
- package/esm2015/forms/common/if-control-state/if-success.js +0 -42
- package/esm2015/forms/common/label.js +0 -61
- package/esm2015/forms/common/layout.js +0 -30
- package/esm2015/forms/common/providers/container-id.service.js +0 -30
- package/esm2015/forms/common/providers/control-class.service.js +0 -50
- package/esm2015/forms/common/providers/control-id.service.js +0 -28
- package/esm2015/forms/common/providers/focus.service.js +0 -22
- package/esm2015/forms/common/providers/layout.service.js +0 -54
- package/esm2015/forms/common/providers/mark-control.service.js +0 -22
- package/esm2015/forms/common/providers/ng-control.service.js +0 -30
- package/esm2015/forms/common/success.js +0 -32
- package/esm2015/forms/common/wrapped-control.js +0 -158
- package/esm2015/forms/datalist/datalist-container.js +0 -79
- package/esm2015/forms/datalist/datalist-input.js +0 -59
- package/esm2015/forms/datalist/datalist.js +0 -46
- package/esm2015/forms/datalist/datalist.module.js +0 -27
- package/esm2015/forms/datalist/providers/datalist-id.service.js +0 -28
- package/esm2015/forms/datepicker/calendar.js +0 -119
- package/esm2015/forms/datepicker/date-container.js +0 -179
- package/esm2015/forms/datepicker/date-input.js +0 -256
- package/esm2015/forms/datepicker/datepicker-view-manager.js +0 -46
- package/esm2015/forms/datepicker/datepicker.module.js +0 -55
- package/esm2015/forms/datepicker/day.js +0 -72
- package/esm2015/forms/datepicker/daypicker.js +0 -84
- package/esm2015/forms/datepicker/monthpicker.js +0 -116
- package/esm2015/forms/datepicker/providers/date-form-control.service.js +0 -33
- package/esm2015/forms/datepicker/providers/date-io.service.js +0 -176
- package/esm2015/forms/datepicker/providers/date-navigation.service.js +0 -127
- package/esm2015/forms/datepicker/providers/datepicker-enabled.service.js +0 -43
- package/esm2015/forms/datepicker/providers/datepicker-focus.service.js +0 -45
- package/esm2015/forms/datepicker/providers/locale-helper.service.js +0 -98
- package/esm2015/forms/datepicker/providers/view-manager.service.js +0 -38
- package/esm2015/forms/datepicker/yearpicker.js +0 -193
- package/esm2015/forms/forms.module.js +0 -39
- package/esm2015/forms/input/input.js +0 -26
- package/esm2015/forms/input/input.module.js +0 -29
- package/esm2015/forms/password/password-container.js +0 -120
- package/esm2015/forms/password/password.js +0 -53
- package/esm2015/forms/password/password.module.js +0 -28
- package/esm2015/forms/radio/radio-container.js +0 -95
- package/esm2015/forms/radio/radio-wrapper.js +0 -39
- package/esm2015/forms/radio/radio.js +0 -25
- package/esm2015/forms/radio/radio.module.js +0 -29
- package/esm2015/forms/range/range-container.js +0 -93
- package/esm2015/forms/range/range.js +0 -25
- package/esm2015/forms/range/range.module.js +0 -28
- package/esm2015/forms/select/select-container.js +0 -82
- package/esm2015/forms/select/select.js +0 -26
- package/esm2015/forms/select/select.module.js +0 -28
- package/esm2015/forms/textarea/textarea-container.js +0 -51
- package/esm2015/forms/textarea/textarea.js +0 -26
- package/esm2015/forms/textarea/textarea.module.js +0 -28
- package/esm2015/icon/icon.js +0 -17
- package/esm2015/icon/icon.module.js +0 -15
- package/esm2015/layout/layout.module.js +0 -16
- package/esm2015/layout/main-container/main-container.js +0 -58
- package/esm2015/layout/main-container/main-container.module.js +0 -20
- package/esm2015/layout/nav/chocolate/main-container-willy-wonka.js +0 -13
- package/esm2015/layout/nav/chocolate/nav-detection-oompa-loompa.js +0 -32
- package/esm2015/layout/nav/header.js +0 -94
- package/esm2015/layout/nav/nav-level.js +0 -79
- package/esm2015/layout/nav/navigation.module.js +0 -29
- package/esm2015/layout/tabs/chocolate/active-oompa-loompa.js +0 -32
- package/esm2015/layout/tabs/chocolate/tabs-willy-wonka.js +0 -13
- package/esm2015/layout/tabs/providers/tabs.service.js +0 -42
- package/esm2015/layout/tabs/tab-content.js +0 -77
- package/esm2015/layout/tabs/tab-link.directive.js +0 -93
- package/esm2015/layout/tabs/tab-overflow-content.js +0 -18
- package/esm2015/layout/tabs/tab.js +0 -42
- package/esm2015/layout/tabs/tabs.js +0 -235
- package/esm2015/layout/tabs/tabs.module.js +0 -42
- package/esm2015/layout/vertical-nav/providers/vertical-nav-group-registration.service.js +0 -21
- package/esm2015/layout/vertical-nav/providers/vertical-nav-group.service.js +0 -22
- package/esm2015/layout/vertical-nav/providers/vertical-nav-icon.service.js +0 -24
- package/esm2015/layout/vertical-nav/providers/vertical-nav.service.js +0 -51
- package/esm2015/layout/vertical-nav/vertical-nav-group-children.js +0 -15
- package/esm2015/layout/vertical-nav/vertical-nav-group.js +0 -158
- package/esm2015/layout/vertical-nav/vertical-nav-icon.js +0 -23
- package/esm2015/layout/vertical-nav/vertical-nav-link.js +0 -36
- package/esm2015/layout/vertical-nav/vertical-nav.js +0 -77
- package/esm2015/layout/vertical-nav/vertical-nav.module.js +0 -37
- package/esm2015/modal/modal-body.js +0 -43
- package/esm2015/modal/modal.js +0 -111
- package/esm2015/modal/modal.module.js +0 -28
- package/esm2015/popover/common/abstract-popover.js +0 -133
- package/esm2015/popover/dropdown/dropdown-item.js +0 -87
- package/esm2015/popover/dropdown/dropdown-menu.js +0 -105
- package/esm2015/popover/dropdown/dropdown-trigger.js +0 -50
- package/esm2015/popover/dropdown/dropdown.js +0 -52
- package/esm2015/popover/dropdown/dropdown.module.js +0 -24
- package/esm2015/popover/dropdown/providers/dropdown-focus-handler.service.js +0 -181
- package/esm2015/popover/dropdown/providers/dropdown.service.js +0 -30
- package/esm2015/popover/popover.module.js +0 -15
- package/esm2015/popover/signpost/providers/signpost-focus-manager.service.js +0 -20
- package/esm2015/popover/signpost/providers/signpost-id.service.js +0 -23
- package/esm2015/popover/signpost/signpost-content.js +0 -150
- package/esm2015/popover/signpost/signpost-trigger.js +0 -95
- package/esm2015/popover/signpost/signpost.js +0 -72
- package/esm2015/popover/signpost/signpost.module.js +0 -29
- package/esm2015/popover/tooltip/providers/tooltip-id.service.js +0 -22
- package/esm2015/popover/tooltip/tooltip-content.js +0 -123
- package/esm2015/popover/tooltip/tooltip-trigger.js +0 -46
- package/esm2015/popover/tooltip/tooltip.js +0 -30
- package/esm2015/popover/tooltip/tooltip.module.js +0 -23
- package/esm2015/progress/progress-bars/progress-bar.module.js +0 -19
- package/esm2015/progress/spinner/spinner.js +0 -63
- package/esm2015/progress/spinner/spinner.module.js +0 -19
- package/esm2015/timeline/providers/timeline-icon-attribute.service.js +0 -54
- package/esm2015/timeline/timeline-step-description.js +0 -16
- package/esm2015/timeline/timeline-step-header.js +0 -16
- package/esm2015/timeline/timeline-step-title.js +0 -26
- package/esm2015/timeline/timeline-step.js +0 -73
- package/esm2015/timeline/timeline.js +0 -29
- package/esm2015/timeline/timeline.module.js +0 -36
- package/esm2015/utils/a11y/aria-live.service.js +0 -161
- package/esm2015/utils/animations/expandable-animation/expandable-animation.js +0 -57
- package/esm2015/utils/animations/expandable-animation/expandable-animation.module.js +0 -18
- package/esm2015/utils/aria/aria.service.js +0 -13
- package/esm2015/utils/chocolate/oompa-loompa.js +0 -33
- package/esm2015/utils/chocolate/willy-wonka.js +0 -33
- package/esm2015/utils/conditional/conditional.module.js +0 -17
- package/esm2015/utils/conditional/if-active.directive.js +0 -100
- package/esm2015/utils/conditional/if-active.service.js +0 -74
- package/esm2015/utils/conditional/if-expanded.directive.js +0 -91
- package/esm2015/utils/conditional/if-expanded.service.js +0 -55
- package/esm2015/utils/conditional/if-open.directive.js +0 -86
- package/esm2015/utils/dom-adapter/dom-adapter.js +0 -49
- package/esm2015/utils/drag-and-drop/drag-and-drop.module.js +0 -30
- package/esm2015/utils/drag-and-drop/drag-handle.js +0 -30
- package/esm2015/utils/drag-and-drop/draggable/draggable.js +0 -119
- package/esm2015/utils/drag-and-drop/draggable-ghost.js +0 -116
- package/esm2015/utils/drag-and-drop/droppable/droppable.js +0 -209
- package/esm2015/utils/drag-and-drop/if-dragged.js +0 -40
- package/esm2015/utils/drag-and-drop/providers/drag-event-listener.service.js +0 -181
- package/esm2015/utils/drag-and-drop/providers/drag-handle-registrar.service.js +0 -61
- package/esm2015/utils/drag-and-drop/providers/draggable-snapshot.service.js +0 -38
- package/esm2015/utils/drag-and-drop/providers/global-drag-mode.service.js +0 -26
- package/esm2015/utils/focus/focus-on-view-init/focus-on-view-init.js +0 -76
- package/esm2015/utils/focus/focus-on-view-init/focus-on-view-init.module.js +0 -21
- package/esm2015/utils/focus/focus.service.js +0 -94
- package/esm2015/utils/focus/focusable-item/basic-focusable-item.service.js +0 -55
- package/esm2015/utils/focus/key-focus/key-focus-item.js +0 -31
- package/esm2015/utils/focus/key-focus/key-focus.js +0 -181
- package/esm2015/utils/focus/key-focus/key-focus.module.js +0 -21
- package/esm2015/utils/focus/key-focus/roving-tabindex.js +0 -100
- package/esm2015/utils/focus-trap/focus-trap-tracker.service.js +0 -30
- package/esm2015/utils/focus-trap/focus-trap.directive.js +0 -154
- package/esm2015/utils/focus-trap/focus-trap.module.js +0 -19
- package/esm2015/utils/host-wrapping/empty-anchor.js +0 -14
- package/esm2015/utils/host-wrapping/host-wrapping.module.js +0 -16
- package/esm2015/utils/i18n/common-strings.service.js +0 -45
- package/esm2015/utils/loading/loading.js +0 -52
- package/esm2015/utils/loading/loading.module.js +0 -15
- package/esm2015/utils/outside-click/outside-click.js +0 -45
- package/esm2015/utils/outside-click/outside-click.module.js +0 -14
- package/esm2015/utils/popover/popover-anchor.js +0 -26
- package/esm2015/utils/popover/popover-close-button.js +0 -51
- package/esm2015/utils/popover/popover-content.js +0 -146
- package/esm2015/utils/popover/popover-open-close-button.js +0 -40
- package/esm2015/utils/popover/popover.module.js +0 -21
- package/esm2015/utils/popover/position-operators.js +0 -171
- package/esm2015/utils/popover/providers/popover-events.service.js +0 -159
- package/esm2015/utils/popover/providers/popover-position.service.js +0 -213
- package/esm2015/utils/popover/providers/popover-toggle.service.js +0 -67
- package/esm2015/utils/scrolling/scrolling-service.js +0 -27
- package/esm2015/utils/template-ref/template-ref-container.js +0 -21
- package/esm2015/utils/template-ref/template-ref.module.js +0 -19
- package/esm2015/wizard/providers/button-hub.service.js +0 -60
- package/esm2015/wizard/providers/header-actions.service.js +0 -37
- package/esm2015/wizard/providers/page-collection.service.js +0 -358
- package/esm2015/wizard/providers/wizard-navigation.service.js +0 -575
- package/esm2015/wizard/wizard-button.js +0 -163
- package/esm2015/wizard/wizard-custom-tags.js +0 -12
- package/esm2015/wizard/wizard-header-action.js +0 -55
- package/esm2015/wizard/wizard-page-buttons.js +0 -18
- package/esm2015/wizard/wizard-page-header-actions.js +0 -18
- package/esm2015/wizard/wizard-page-navtitle.js +0 -18
- package/esm2015/wizard/wizard-page-title.js +0 -18
- package/esm2015/wizard/wizard-stepnav-item.js +0 -100
- package/esm2015/wizard/wizard-stepnav.js +0 -34
- package/esm2015/wizard/wizard.js +0 -438
- package/esm2015/wizard/wizard.module.js +0 -48
- package/fesm2015/clr-angular.js.map +0 -1
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.
|
|
3
|
+
* This software is released under MIT license.
|
|
4
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
5
|
+
*/
|
|
6
|
+
import { Component, Optional, ViewChild, ContentChild, } from '@angular/core';
|
|
7
|
+
import { NgControlService } from '../common/providers/ng-control.service';
|
|
8
|
+
import { ControlIdService } from '../common/providers/control-id.service';
|
|
9
|
+
import { ControlClassService } from '../common/providers/control-class.service';
|
|
10
|
+
import { ComboboxContainerService } from './providers/combobox-container.service';
|
|
11
|
+
import { ClrAbstractContainer } from '../common/abstract-container';
|
|
12
|
+
import { ClrLabel } from '../common/label';
|
|
13
|
+
import { IfControlStateService } from '../common/if-control-state/if-control-state.service';
|
|
14
|
+
import * as i0 from "@angular/core";
|
|
15
|
+
import * as i1 from "../common/if-control-state/if-control-state.service";
|
|
16
|
+
import * as i2 from "../common/providers/layout.service";
|
|
17
|
+
import * as i3 from "../common/providers/control-class.service";
|
|
18
|
+
import * as i4 from "../common/providers/ng-control.service";
|
|
19
|
+
import * as i5 from "./providers/combobox-container.service";
|
|
20
|
+
import * as i6 from "@angular/common";
|
|
21
|
+
import * as i7 from "../common/label";
|
|
22
|
+
import * as i8 from "../../icon/icon";
|
|
23
|
+
export class ClrComboboxContainer extends ClrAbstractContainer {
|
|
24
|
+
constructor(ifControlStateService, layoutService, controlClassService, ngControlService, containerService, el) {
|
|
25
|
+
super(ifControlStateService, layoutService, controlClassService, ngControlService);
|
|
26
|
+
this.containerService = containerService;
|
|
27
|
+
this.el = el;
|
|
28
|
+
}
|
|
29
|
+
ngAfterContentInit() {
|
|
30
|
+
if (this.label) {
|
|
31
|
+
this.containerService.labelText = this.label.labelText;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
ngAfterViewInit() {
|
|
35
|
+
this.containerService.labelOffset =
|
|
36
|
+
this.controlContainer.nativeElement.offsetHeight - this.el.nativeElement.offsetHeight;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
ClrComboboxContainer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ClrComboboxContainer, deps: [{ token: i1.IfControlStateService }, { token: i2.LayoutService, optional: true }, { token: i3.ControlClassService }, { token: i4.NgControlService }, { token: i5.ComboboxContainerService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
40
|
+
ClrComboboxContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: ClrComboboxContainer, selector: "clr-combobox-container", host: { properties: { "class.clr-form-control": "true", "class.clr-combobox-form-control": "true", "class.clr-form-control-disabled": "control?.disabled", "class.clr-row": "addGrid()" } }, providers: [IfControlStateService, NgControlService, ControlIdService, ControlClassService, ComboboxContainerService], queries: [{ propertyName: "label", first: true, predicate: ClrLabel, descendants: true }], viewQueries: [{ propertyName: "controlContainer", first: true, predicate: ["controlContainer"], descendants: true }], usesInheritance: true, ngImport: i0, template: `
|
|
41
|
+
<ng-content select="label"></ng-content>
|
|
42
|
+
<label *ngIf="!label && addGrid()"></label>
|
|
43
|
+
<div class="clr-control-container" [ngClass]="controlClass()" #controlContainer>
|
|
44
|
+
<ng-content select="clr-combobox"></ng-content>
|
|
45
|
+
<cds-icon
|
|
46
|
+
*ngIf="showInvalid"
|
|
47
|
+
class="clr-validate-icon"
|
|
48
|
+
status="danger"
|
|
49
|
+
shape="exclamation-circle"
|
|
50
|
+
aria-hidden="true"
|
|
51
|
+
></cds-icon>
|
|
52
|
+
<cds-icon
|
|
53
|
+
*ngIf="showValid"
|
|
54
|
+
class="clr-validate-icon"
|
|
55
|
+
status="success"
|
|
56
|
+
shape="check-circle"
|
|
57
|
+
aria-hidden="true"
|
|
58
|
+
></cds-icon>
|
|
59
|
+
<ng-content select="clr-control-helper" *ngIf="showHelper"></ng-content>
|
|
60
|
+
<ng-content select="clr-control-error" *ngIf="showInvalid"></ng-content>
|
|
61
|
+
<ng-content select="clr-control-success" *ngIf="showValid"></ng-content>
|
|
62
|
+
</div>
|
|
63
|
+
`, isInline: true, directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.ClrLabel, selector: "label", inputs: ["for"] }, { type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i8.CdsIconCustomTag, selector: "cds-icon" }] });
|
|
64
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ClrComboboxContainer, decorators: [{
|
|
65
|
+
type: Component,
|
|
66
|
+
args: [{
|
|
67
|
+
selector: 'clr-combobox-container',
|
|
68
|
+
template: `
|
|
69
|
+
<ng-content select="label"></ng-content>
|
|
70
|
+
<label *ngIf="!label && addGrid()"></label>
|
|
71
|
+
<div class="clr-control-container" [ngClass]="controlClass()" #controlContainer>
|
|
72
|
+
<ng-content select="clr-combobox"></ng-content>
|
|
73
|
+
<cds-icon
|
|
74
|
+
*ngIf="showInvalid"
|
|
75
|
+
class="clr-validate-icon"
|
|
76
|
+
status="danger"
|
|
77
|
+
shape="exclamation-circle"
|
|
78
|
+
aria-hidden="true"
|
|
79
|
+
></cds-icon>
|
|
80
|
+
<cds-icon
|
|
81
|
+
*ngIf="showValid"
|
|
82
|
+
class="clr-validate-icon"
|
|
83
|
+
status="success"
|
|
84
|
+
shape="check-circle"
|
|
85
|
+
aria-hidden="true"
|
|
86
|
+
></cds-icon>
|
|
87
|
+
<ng-content select="clr-control-helper" *ngIf="showHelper"></ng-content>
|
|
88
|
+
<ng-content select="clr-control-error" *ngIf="showInvalid"></ng-content>
|
|
89
|
+
<ng-content select="clr-control-success" *ngIf="showValid"></ng-content>
|
|
90
|
+
</div>
|
|
91
|
+
`,
|
|
92
|
+
host: {
|
|
93
|
+
'[class.clr-form-control]': 'true',
|
|
94
|
+
'[class.clr-combobox-form-control]': 'true',
|
|
95
|
+
'[class.clr-form-control-disabled]': 'control?.disabled',
|
|
96
|
+
'[class.clr-row]': 'addGrid()',
|
|
97
|
+
},
|
|
98
|
+
providers: [IfControlStateService, NgControlService, ControlIdService, ControlClassService, ComboboxContainerService],
|
|
99
|
+
}]
|
|
100
|
+
}], ctorParameters: function () { return [{ type: i1.IfControlStateService }, { type: i2.LayoutService, decorators: [{
|
|
101
|
+
type: Optional
|
|
102
|
+
}] }, { type: i3.ControlClassService }, { type: i4.NgControlService }, { type: i5.ComboboxContainerService }, { type: i0.ElementRef }]; }, propDecorators: { controlContainer: [{
|
|
103
|
+
type: ViewChild,
|
|
104
|
+
args: ['controlContainer']
|
|
105
|
+
}], label: [{
|
|
106
|
+
type: ContentChild,
|
|
107
|
+
args: [ClrLabel]
|
|
108
|
+
}] } });
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYm9ib3gtY29udGFpbmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvZm9ybXMvY29tYm9ib3gvY29tYm9ib3gtY29udGFpbmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxPQUFPLEVBQ0wsU0FBUyxFQUNULFFBQVEsRUFFUixTQUFTLEVBQ1QsWUFBWSxHQUdiLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBRWhGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQzs7Ozs7Ozs7OztBQW9DNUYsTUFBTSxPQUFPLG9CQUFxQixTQUFRLG9CQUFvQjtJQUk1RCxZQUNFLHFCQUE0QyxFQUNoQyxhQUE0QixFQUN4QyxtQkFBd0MsRUFDeEMsZ0JBQWtDLEVBQzFCLGdCQUEwQyxFQUMxQyxFQUFjO1FBRXRCLEtBQUssQ0FBQyxxQkFBcUIsRUFBRSxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUgzRSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQTBCO1FBQzFDLE9BQUUsR0FBRixFQUFFLENBQVk7SUFHeEIsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO1NBQ3hEO0lBQ0gsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVztZQUMvQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUM7SUFDMUYsQ0FBQzs7aUhBeEJVLG9CQUFvQjtxR0FBcEIsb0JBQW9CLDhPQUZwQixDQUFDLHFCQUFxQixFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLHdCQUF3QixDQUFDLDZEQUl2RyxRQUFRLDZMQWxDWjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1QlQ7MkZBU1Usb0JBQW9CO2tCQWxDaEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsd0JBQXdCO29CQUNsQyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUJUO29CQUNELElBQUksRUFBRTt3QkFDSiwwQkFBMEIsRUFBRSxNQUFNO3dCQUNsQyxtQ0FBbUMsRUFBRSxNQUFNO3dCQUMzQyxtQ0FBbUMsRUFBRSxtQkFBbUI7d0JBQ3hELGlCQUFpQixFQUFFLFdBQVc7cUJBQy9CO29CQUNELFNBQVMsRUFBRSxDQUFDLHFCQUFxQixFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLHdCQUF3QixDQUFDO2lCQUN0SDs7MEJBT0ksUUFBUTs2S0FMb0IsZ0JBQWdCO3NCQUE5QyxTQUFTO3VCQUFDLGtCQUFrQjtnQkFDTCxLQUFLO3NCQUE1QixZQUFZO3VCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxNi0yMDIxIFZNd2FyZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZS5cbiAqIFRoZSBmdWxsIGxpY2Vuc2UgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluIExJQ0VOU0UgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgcHJvamVjdC5cbiAqL1xuXG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIE9wdGlvbmFsLFxuICBFbGVtZW50UmVmLFxuICBWaWV3Q2hpbGQsXG4gIENvbnRlbnRDaGlsZCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE5nQ29udHJvbFNlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vcHJvdmlkZXJzL25nLWNvbnRyb2wuc2VydmljZSc7XG5pbXBvcnQgeyBDb250cm9sSWRTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL3Byb3ZpZGVycy9jb250cm9sLWlkLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29udHJvbENsYXNzU2VydmljZSB9IGZyb20gJy4uL2NvbW1vbi9wcm92aWRlcnMvY29udHJvbC1jbGFzcy5zZXJ2aWNlJztcbmltcG9ydCB7IExheW91dFNlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vcHJvdmlkZXJzL2xheW91dC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbWJvYm94Q29udGFpbmVyU2VydmljZSB9IGZyb20gJy4vcHJvdmlkZXJzL2NvbWJvYm94LWNvbnRhaW5lci5zZXJ2aWNlJztcbmltcG9ydCB7IENsckFic3RyYWN0Q29udGFpbmVyIH0gZnJvbSAnLi4vY29tbW9uL2Fic3RyYWN0LWNvbnRhaW5lcic7XG5pbXBvcnQgeyBDbHJMYWJlbCB9IGZyb20gJy4uL2NvbW1vbi9sYWJlbCc7XG5pbXBvcnQgeyBJZkNvbnRyb2xTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vaWYtY29udHJvbC1zdGF0ZS9pZi1jb250cm9sLXN0YXRlLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjbHItY29tYm9ib3gtY29udGFpbmVyJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJsYWJlbFwiPjwvbmctY29udGVudD5cbiAgICA8bGFiZWwgKm5nSWY9XCIhbGFiZWwgJiYgYWRkR3JpZCgpXCI+PC9sYWJlbD5cbiAgICA8ZGl2IGNsYXNzPVwiY2xyLWNvbnRyb2wtY29udGFpbmVyXCIgW25nQ2xhc3NdPVwiY29udHJvbENsYXNzKClcIiAjY29udHJvbENvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImNsci1jb21ib2JveFwiPjwvbmctY29udGVudD5cbiAgICAgIDxjZHMtaWNvblxuICAgICAgICAqbmdJZj1cInNob3dJbnZhbGlkXCJcbiAgICAgICAgY2xhc3M9XCJjbHItdmFsaWRhdGUtaWNvblwiXG4gICAgICAgIHN0YXR1cz1cImRhbmdlclwiXG4gICAgICAgIHNoYXBlPVwiZXhjbGFtYXRpb24tY2lyY2xlXCJcbiAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgID48L2Nkcy1pY29uPlxuICAgICAgPGNkcy1pY29uXG4gICAgICAgICpuZ0lmPVwic2hvd1ZhbGlkXCJcbiAgICAgICAgY2xhc3M9XCJjbHItdmFsaWRhdGUtaWNvblwiXG4gICAgICAgIHN0YXR1cz1cInN1Y2Nlc3NcIlxuICAgICAgICBzaGFwZT1cImNoZWNrLWNpcmNsZVwiXG4gICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICA+PC9jZHMtaWNvbj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImNsci1jb250cm9sLWhlbHBlclwiICpuZ0lmPVwic2hvd0hlbHBlclwiPjwvbmctY29udGVudD5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImNsci1jb250cm9sLWVycm9yXCIgKm5nSWY9XCJzaG93SW52YWxpZFwiPjwvbmctY29udGVudD5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImNsci1jb250cm9sLXN1Y2Nlc3NcIiAqbmdJZj1cInNob3dWYWxpZFwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgaG9zdDoge1xuICAgICdbY2xhc3MuY2xyLWZvcm0tY29udHJvbF0nOiAndHJ1ZScsXG4gICAgJ1tjbGFzcy5jbHItY29tYm9ib3gtZm9ybS1jb250cm9sXSc6ICd0cnVlJyxcbiAgICAnW2NsYXNzLmNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWRdJzogJ2NvbnRyb2w/LmRpc2FibGVkJyxcbiAgICAnW2NsYXNzLmNsci1yb3ddJzogJ2FkZEdyaWQoKScsXG4gIH0sXG4gIHByb3ZpZGVyczogW0lmQ29udHJvbFN0YXRlU2VydmljZSwgTmdDb250cm9sU2VydmljZSwgQ29udHJvbElkU2VydmljZSwgQ29udHJvbENsYXNzU2VydmljZSwgQ29tYm9ib3hDb250YWluZXJTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2xyQ29tYm9ib3hDb250YWluZXIgZXh0ZW5kcyBDbHJBYnN0cmFjdENvbnRhaW5lciBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0luaXQge1xuICBAVmlld0NoaWxkKCdjb250cm9sQ29udGFpbmVyJykgY29udHJvbENvbnRhaW5lcjogRWxlbWVudFJlZjtcbiAgQENvbnRlbnRDaGlsZChDbHJMYWJlbCkgbGFiZWw6IENsckxhYmVsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGlmQ29udHJvbFN0YXRlU2VydmljZTogSWZDb250cm9sU3RhdGVTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIGxheW91dFNlcnZpY2U6IExheW91dFNlcnZpY2UsXG4gICAgY29udHJvbENsYXNzU2VydmljZTogQ29udHJvbENsYXNzU2VydmljZSxcbiAgICBuZ0NvbnRyb2xTZXJ2aWNlOiBOZ0NvbnRyb2xTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29udGFpbmVyU2VydmljZTogQ29tYm9ib3hDb250YWluZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWZcbiAgKSB7XG4gICAgc3VwZXIoaWZDb250cm9sU3RhdGVTZXJ2aWNlLCBsYXlvdXRTZXJ2aWNlLCBjb250cm9sQ2xhc3NTZXJ2aWNlLCBuZ0NvbnRyb2xTZXJ2aWNlKTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICBpZiAodGhpcy5sYWJlbCkge1xuICAgICAgdGhpcy5jb250YWluZXJTZXJ2aWNlLmxhYmVsVGV4dCA9IHRoaXMubGFiZWwubGFiZWxUZXh0O1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLmNvbnRhaW5lclNlcnZpY2UubGFiZWxPZmZzZXQgPVxuICAgICAgdGhpcy5jb250cm9sQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0IC0gdGhpcy5lbC5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodDtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,363 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.
|
|
3
|
+
* This software is released under MIT license.
|
|
4
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
5
|
+
*/
|
|
6
|
+
import { isPlatformBrowser } from '@angular/common';
|
|
7
|
+
import { Component, ContentChild, ElementRef, HostListener, PLATFORM_ID, ViewChild, Self, Optional, Input, Output, EventEmitter, Inject, } from '@angular/core';
|
|
8
|
+
import { POPOVER_HOST_ANCHOR } from '../../popover/common/popover-host-anchor.token';
|
|
9
|
+
import { OptionSelectionService } from './providers/option-selection.service';
|
|
10
|
+
import { WrappedFormControl } from '../common/wrapped-control';
|
|
11
|
+
import { ClrComboboxContainer } from './combobox-container';
|
|
12
|
+
import { ClrOptionSelected } from './option-selected.directive';
|
|
13
|
+
import { AriaService } from '../../utils/aria/aria.service';
|
|
14
|
+
import { IF_ACTIVE_ID_PROVIDER } from '../../utils/conditional/if-active.service';
|
|
15
|
+
import { MultiSelectComboboxModel } from './model/multi-select-combobox.model';
|
|
16
|
+
import { SingleSelectComboboxModel } from './model/single-select-combobox.model';
|
|
17
|
+
import { COMBOBOX_FOCUS_HANDLER_PROVIDER } from './providers/combobox-focus-handler.service';
|
|
18
|
+
import { FOCUS_SERVICE_PROVIDER } from '../../utils/focus/focus.service';
|
|
19
|
+
import { BACKSPACE } from '../../utils/key-codes/key-codes';
|
|
20
|
+
import { ClrAxis } from '../../utils/popover/enums/axis.enum';
|
|
21
|
+
import { ClrAlignment } from '../../utils/popover/enums/alignment.enum';
|
|
22
|
+
import { ClrSide } from '../../utils/popover/enums/side.enum';
|
|
23
|
+
import { ClrPopoverToggleService } from '../../utils/popover/providers/popover-toggle.service';
|
|
24
|
+
import { ClrPopoverEventsService } from '../../utils/popover/providers/popover-events.service';
|
|
25
|
+
import { ClrPopoverPositionService } from '../../utils/popover/providers/popover-position.service';
|
|
26
|
+
import { LoadingListener } from '../../utils/loading/loading-listener';
|
|
27
|
+
import { ClrLoadingState } from '../../utils/loading/loading';
|
|
28
|
+
import { CONTROL_STATE } from '../common/if-control-state/if-control-state.service';
|
|
29
|
+
import * as i0 from "@angular/core";
|
|
30
|
+
import * as i1 from "@angular/forms";
|
|
31
|
+
import * as i2 from "./providers/option-selection.service";
|
|
32
|
+
import * as i3 from "../../utils/i18n/common-strings.service";
|
|
33
|
+
import * as i4 from "../../utils/popover/providers/popover-toggle.service";
|
|
34
|
+
import * as i5 from "../../utils/popover/providers/popover-position.service";
|
|
35
|
+
import * as i6 from "../common/if-control-state/if-control-state.service";
|
|
36
|
+
import * as i7 from "./providers/combobox-container.service";
|
|
37
|
+
import * as i8 from "../../utils/aria/aria.service";
|
|
38
|
+
import * as i9 from "./providers/combobox-focus-handler.service";
|
|
39
|
+
import * as i10 from "../../utils/focus/key-focus/roving-tabindex";
|
|
40
|
+
import * as i11 from "../../utils/popover/popover-anchor";
|
|
41
|
+
import * as i12 from "@angular/common";
|
|
42
|
+
import * as i13 from "../../utils/focus/key-focus/key-focus-item";
|
|
43
|
+
import * as i14 from "../../icon/icon";
|
|
44
|
+
import * as i15 from "../../utils/popover/popover-open-close-button";
|
|
45
|
+
import * as i16 from "../../utils/popover/popover-content";
|
|
46
|
+
export class ClrCombobox extends WrappedFormControl {
|
|
47
|
+
constructor(vcr, injector, control, renderer, el, optionSelectionService, commonStrings, toggleService, positionService, controlStateService, containerService, platformId, ariaService, focusHandler, cdr) {
|
|
48
|
+
super(vcr, ClrComboboxContainer, injector, control, renderer, el);
|
|
49
|
+
this.control = control;
|
|
50
|
+
this.renderer = renderer;
|
|
51
|
+
this.el = el;
|
|
52
|
+
this.optionSelectionService = optionSelectionService;
|
|
53
|
+
this.commonStrings = commonStrings;
|
|
54
|
+
this.toggleService = toggleService;
|
|
55
|
+
this.positionService = positionService;
|
|
56
|
+
this.controlStateService = controlStateService;
|
|
57
|
+
this.containerService = containerService;
|
|
58
|
+
this.platformId = platformId;
|
|
59
|
+
this.ariaService = ariaService;
|
|
60
|
+
this.focusHandler = focusHandler;
|
|
61
|
+
this.cdr = cdr;
|
|
62
|
+
this.index = 1;
|
|
63
|
+
this.invalid = false;
|
|
64
|
+
this.focused = false;
|
|
65
|
+
this._searchText = '';
|
|
66
|
+
this.smartPosition = {
|
|
67
|
+
axis: ClrAxis.VERTICAL,
|
|
68
|
+
side: ClrSide.AFTER,
|
|
69
|
+
anchor: ClrAlignment.START,
|
|
70
|
+
content: ClrAlignment.START,
|
|
71
|
+
};
|
|
72
|
+
this.placeholder = '';
|
|
73
|
+
this.clrInputChange = new EventEmitter(false);
|
|
74
|
+
this.clrOpenChange = this.toggleService.openChange;
|
|
75
|
+
// This output should be used to set up a live region using aria-live and populate it with updates that reflect each combobox change
|
|
76
|
+
this.clrSelectionChange = this.optionSelectionService.selectionChanged;
|
|
77
|
+
if (control) {
|
|
78
|
+
control.valueAccessor = this;
|
|
79
|
+
}
|
|
80
|
+
// default to SingleSelectComboboxModel, in case the optional input [ClrMulti] isn't used
|
|
81
|
+
this.optionSelectionService.selectionModel = new SingleSelectComboboxModel();
|
|
82
|
+
this.updateControlValue();
|
|
83
|
+
}
|
|
84
|
+
// Override the id of WrappedFormControl, as we want to move it to the embedded input.
|
|
85
|
+
// Otherwise the label/component connection does not work and screen readers do not read the label.
|
|
86
|
+
get id() {
|
|
87
|
+
return this.controlIdService.id + '-combobox';
|
|
88
|
+
}
|
|
89
|
+
set id(id) {
|
|
90
|
+
super.id = id;
|
|
91
|
+
}
|
|
92
|
+
inputId() {
|
|
93
|
+
return this.controlIdService.id;
|
|
94
|
+
}
|
|
95
|
+
get openState() {
|
|
96
|
+
return this.toggleService.open;
|
|
97
|
+
}
|
|
98
|
+
set searchText(text) {
|
|
99
|
+
// if input text has changed since last time, fire a change event so application can react to it
|
|
100
|
+
if (text !== this._searchText) {
|
|
101
|
+
this._searchText = text;
|
|
102
|
+
this.clrInputChange.emit(this.searchText);
|
|
103
|
+
this.optionSelectionService.currentInput = this.searchText;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
get searchText() {
|
|
107
|
+
return this._searchText;
|
|
108
|
+
}
|
|
109
|
+
get multiSelectModel() {
|
|
110
|
+
if (!this.multiSelect) {
|
|
111
|
+
throw Error('multiSelectModel is not available in single selection context');
|
|
112
|
+
}
|
|
113
|
+
return this.optionSelectionService.selectionModel.model;
|
|
114
|
+
}
|
|
115
|
+
loadingStateChange(state) {
|
|
116
|
+
this.optionSelectionService.loading = state === ClrLoadingState.LOADING;
|
|
117
|
+
this.positionService.realign();
|
|
118
|
+
if (state !== ClrLoadingState.LOADING && isPlatformBrowser(this.platformId)) {
|
|
119
|
+
setTimeout(() => {
|
|
120
|
+
this.focusFirstActive();
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
get disabled() {
|
|
125
|
+
return this.control && this.control.disabled;
|
|
126
|
+
}
|
|
127
|
+
unselect(item) {
|
|
128
|
+
if (!this.disabled) {
|
|
129
|
+
this.optionSelectionService.unselect(item);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
set multiSelect(value) {
|
|
133
|
+
if (value) {
|
|
134
|
+
this.optionSelectionService.selectionModel = new MultiSelectComboboxModel();
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
// in theory, setting this again should not cause errors even though we already set it in constructor,
|
|
138
|
+
// since the initial call to writeValue (caused by [ngModel] input) should happen after this
|
|
139
|
+
this.optionSelectionService.selectionModel = new SingleSelectComboboxModel();
|
|
140
|
+
}
|
|
141
|
+
this.updateControlValue();
|
|
142
|
+
}
|
|
143
|
+
get multiSelect() {
|
|
144
|
+
return this.optionSelectionService.multiselectable;
|
|
145
|
+
}
|
|
146
|
+
get ariaControls() {
|
|
147
|
+
return this.ariaService.ariaControls;
|
|
148
|
+
}
|
|
149
|
+
get ariaOwns() {
|
|
150
|
+
return this.ariaService.ariaOwns;
|
|
151
|
+
}
|
|
152
|
+
get ariaDescribedBySelection() {
|
|
153
|
+
return 'selection-' + this.id;
|
|
154
|
+
}
|
|
155
|
+
get displayField() {
|
|
156
|
+
return this.optionSelectionService.displayField;
|
|
157
|
+
}
|
|
158
|
+
onBlur() {
|
|
159
|
+
this.onTouchedCallback();
|
|
160
|
+
if (this.control.control.updateOn === 'blur') {
|
|
161
|
+
this.control.control.updateValueAndValidity();
|
|
162
|
+
}
|
|
163
|
+
this.focused = false;
|
|
164
|
+
}
|
|
165
|
+
onFocus() {
|
|
166
|
+
this.focused = true;
|
|
167
|
+
}
|
|
168
|
+
getSelectionAriaLabel() {
|
|
169
|
+
if (this.containerService && this.containerService.labelText) {
|
|
170
|
+
return `${this.containerService.labelText} ${this.commonStrings.keys.comboboxSelection}`;
|
|
171
|
+
}
|
|
172
|
+
return this.commonStrings.keys.comboboxSelection;
|
|
173
|
+
}
|
|
174
|
+
onKeyUp(event) {
|
|
175
|
+
// if BACKSPACE in multiselect mode, delete the last pill if text is empty
|
|
176
|
+
if (event.keyCode === BACKSPACE && this.multiSelect && this._searchText.length === 0) {
|
|
177
|
+
const multiModel = this.optionSelectionService.selectionModel.model;
|
|
178
|
+
if (multiModel && multiModel.length > 0) {
|
|
179
|
+
const lastItem = multiModel[multiModel.length - 1];
|
|
180
|
+
this.control.control.markAsTouched();
|
|
181
|
+
this.optionSelectionService.unselect(lastItem);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
initializeSubscriptions() {
|
|
186
|
+
this.subscriptions.push(this.optionSelectionService.selectionChanged.subscribe((newSelection) => {
|
|
187
|
+
this.updateInputValue(newSelection);
|
|
188
|
+
if (this.multiSelect) {
|
|
189
|
+
this.positionService.realign();
|
|
190
|
+
}
|
|
191
|
+
if (!this.multiSelect && newSelection && !newSelection.isEmpty()) {
|
|
192
|
+
this.toggleService.open = false;
|
|
193
|
+
}
|
|
194
|
+
this.updateControlValue();
|
|
195
|
+
}));
|
|
196
|
+
this.subscriptions.push(this.toggleService.openChange.subscribe(open => {
|
|
197
|
+
if (open) {
|
|
198
|
+
this.focusFirstActive();
|
|
199
|
+
}
|
|
200
|
+
if (this.multiSelect) {
|
|
201
|
+
this.searchText = '';
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
this.searchText = this.getDisplayNames(this.optionSelectionService.selectionModel.model)[0] || '';
|
|
205
|
+
}
|
|
206
|
+
}));
|
|
207
|
+
this.subscriptions.push(this.toggleService.popoverAligned.subscribe(popoverNode => {
|
|
208
|
+
// When used outside a combobox container
|
|
209
|
+
if (!this.containerService) {
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
const popover = popoverNode;
|
|
213
|
+
// Update position if popover hides the label
|
|
214
|
+
if (popover.getBoundingClientRect().top < this.el.nativeElement.getBoundingClientRect().top) {
|
|
215
|
+
this.renderer.setStyle(popoverNode, 'top', `${popover.offsetTop + this.containerService.labelOffset}px`);
|
|
216
|
+
}
|
|
217
|
+
}));
|
|
218
|
+
if (this.controlStateService) {
|
|
219
|
+
this.subscriptions.push(this.controlStateService.statusChanges.subscribe(invalid => {
|
|
220
|
+
this.invalid = invalid === CONTROL_STATE.INVALID;
|
|
221
|
+
}));
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
focusFirstActive() {
|
|
225
|
+
this.focusHandler.focusFirstActive();
|
|
226
|
+
}
|
|
227
|
+
updateInputValue(model) {
|
|
228
|
+
if (!this.multiSelect) {
|
|
229
|
+
this.searchText = model.model ? this.getDisplayNames(model.model)[0] : '';
|
|
230
|
+
if (this.searchText) {
|
|
231
|
+
this.optionSelectionService.currentInput = this.searchText;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
updateControlValue() {
|
|
236
|
+
if (this.onChangeCallback) {
|
|
237
|
+
this.onChangeCallback(this.optionSelectionService.selectionModel.model);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
// ControlValueAccessor implementation methods
|
|
241
|
+
writeValue(value) {
|
|
242
|
+
this.optionSelectionService.selectionModel.model = value;
|
|
243
|
+
this.updateInputValue(this.optionSelectionService.selectionModel);
|
|
244
|
+
}
|
|
245
|
+
registerOnChange(onChange) {
|
|
246
|
+
this.onChangeCallback = onChange;
|
|
247
|
+
}
|
|
248
|
+
getActiveDescendant() {
|
|
249
|
+
const model = this.focusHandler.pseudoFocus.model;
|
|
250
|
+
return model ? model.id : null;
|
|
251
|
+
}
|
|
252
|
+
registerOnTouched(onTouched) {
|
|
253
|
+
this.onTouchedCallback = onTouched;
|
|
254
|
+
}
|
|
255
|
+
setDisabledState() {
|
|
256
|
+
// do nothing
|
|
257
|
+
}
|
|
258
|
+
focusInput() {
|
|
259
|
+
this.focusHandler.focusInput();
|
|
260
|
+
}
|
|
261
|
+
getDisplayNames(model) {
|
|
262
|
+
if (this.displayField) {
|
|
263
|
+
if (!Array.isArray(model)) {
|
|
264
|
+
model = [model];
|
|
265
|
+
}
|
|
266
|
+
return model.map(item => (item ? item[this.displayField] : null));
|
|
267
|
+
}
|
|
268
|
+
return [this.optionSelectionService.selectionModel.model];
|
|
269
|
+
}
|
|
270
|
+
// Lifecycle methods
|
|
271
|
+
ngAfterContentInit() {
|
|
272
|
+
this.initializeSubscriptions();
|
|
273
|
+
// Initialize with preselected value
|
|
274
|
+
if (!this.optionSelectionService.selectionModel.isEmpty()) {
|
|
275
|
+
this.updateInputValue(this.optionSelectionService.selectionModel);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
ngAfterViewInit() {
|
|
279
|
+
this.focusHandler.componentCdRef = this.cdr;
|
|
280
|
+
this.focusHandler.textInput = this.textbox.nativeElement;
|
|
281
|
+
this.focusHandler.trigger = this.trigger.nativeElement;
|
|
282
|
+
// The text input is the actual element we are wrapping
|
|
283
|
+
// This assignment is needed by the wrapper, so it can set
|
|
284
|
+
// the aria properties on the input element, not on the component.
|
|
285
|
+
this.el = this.textbox;
|
|
286
|
+
}
|
|
287
|
+
ngOnDestroy() {
|
|
288
|
+
this.subscriptions.forEach((sub) => sub.unsubscribe());
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
ClrCombobox.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ClrCombobox, deps: [{ token: i0.ViewContainerRef }, { token: i0.Injector }, { token: i1.NgControl, optional: true, self: true }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i2.OptionSelectionService }, { token: i3.ClrCommonStringsService }, { token: i4.ClrPopoverToggleService }, { token: i5.ClrPopoverPositionService }, { token: i6.IfControlStateService, optional: true }, { token: i7.ComboboxContainerService, optional: true }, { token: PLATFORM_ID }, { token: i8.AriaService }, { token: i9.ComboboxFocusHandler }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
292
|
+
ClrCombobox.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: ClrCombobox, selector: "clr-combobox", inputs: { placeholder: "placeholder", multiSelect: ["clrMulti", "multiSelect"] }, outputs: { clrInputChange: "clrInputChange", clrOpenChange: "clrOpenChange", clrSelectionChange: "clrSelectionChange" }, host: { listeners: { "keydown": "onKeyUp($event)" }, properties: { "class.aria-required": "true", "class.clr-combobox": "true", "class.clr-combobox-disabled": "control?.disabled" } }, providers: [
|
|
293
|
+
ClrPopoverToggleService,
|
|
294
|
+
{ provide: POPOVER_HOST_ANCHOR, useExisting: ElementRef },
|
|
295
|
+
OptionSelectionService,
|
|
296
|
+
{ provide: LoadingListener, useExisting: ClrCombobox },
|
|
297
|
+
IF_ACTIVE_ID_PROVIDER,
|
|
298
|
+
AriaService,
|
|
299
|
+
FOCUS_SERVICE_PROVIDER,
|
|
300
|
+
COMBOBOX_FOCUS_HANDLER_PROVIDER,
|
|
301
|
+
ClrPopoverToggleService,
|
|
302
|
+
ClrPopoverEventsService,
|
|
303
|
+
ClrPopoverPositionService,
|
|
304
|
+
], queries: [{ propertyName: "optionSelected", first: true, predicate: ClrOptionSelected, descendants: true }], viewQueries: [{ propertyName: "textbox", first: true, predicate: ["textboxInput"], descendants: true }, { propertyName: "trigger", first: true, predicate: ["trigger"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<!--\n* Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n* This software is released under MIT license.\n* The full license information can be found in LICENSE in the root directory of this project.\n-->\n\n<!-- The (click) handler is needed to auto-focus on input field which can not currently occupy the whole\n width of the component, after being wrapped to a new line -->\n<div\n class=\"clr-combobox-wrapper\"\n clrPopoverAnchor\n (click)=\"focusInput()\"\n [class.multi]=\"multiSelect\"\n [class.invalid]=\"invalid\"\n>\n <span\n *ngIf=\"multiSelect && optionSelectionService.selectionModel.model\"\n role=\"grid\"\n clrRovingTabindex\n [clrRovingTabindexDisabled]=\"control?.disabled\"\n clrDirection=\"both\"\n [attr.aria-label]=\"getSelectionAriaLabel()\"\n [attr.aria-disabled]=\"control?.disabled? true: null\"\n >\n <span *ngFor=\"let item of multiSelectModel; let i = index\" class=\"label label-combobox-pill\" role=\"row\">\n <span role=\"gridcell\">\n <span class=\"clr-combobox-pill-content\" clrKeyFocusItem>\n <ng-container\n *ngIf=\"optionSelected\"\n [ngTemplateOutlet]=\"optionSelected.template\"\n [ngTemplateOutletContext]=\"{$implicit: optionSelectionService.selectionModel.model[i]}\"\n >\n </ng-container>\n </span>\n </span>\n <span role=\"gridcell\">\n <button\n clrKeyFocusItem\n type=\"button\"\n class=\"clr-combobox-remove-btn\"\n [disabled]=\"control?.disabled? true: null\"\n [attr.aria-label]=\"commonStrings.keys.comboboxDelete + ' ' + optionSelectionService.selectionModel.toString(displayField, i)\"\n (click)=\"unselect(item)\"\n >\n <cds-icon shape=\"window-close\" size=\"12\"></cds-icon>\n </button>\n </span>\n </span>\n </span>\n\n <span class=\"clr-combobox-input-wrapper\">\n <input\n #textboxInput\n type=\"text\"\n [id]=\"inputId()\"\n role=\"combobox\"\n class=\"clr-input clr-combobox-input\"\n [(ngModel)]=\"searchText\"\n (blur)=\"onBlur()\"\n (focus)=\"onFocus()\"\n [attr.aria-expanded]=\"openState\"\n [attr.aria-owns]=\"ariaOwns\"\n aria-haspopup=\"listbox\"\n aria-autocomplete=\"list\"\n autocomplete=\"off\"\n [attr.aria-invalid]=\"control?.invalid? true: null\"\n [disabled]=\"control?.disabled? true: null\"\n [attr.aria-activedescendant]=\"getActiveDescendant()\"\n [attr.placeholder]=\"placeholder\"\n aria-multiline=\"false\"\n />\n </span>\n\n <!-- No click handler, as it uses the handler on the .clr-combobox-wrapper -->\n <button\n clrPopoverOpenCloseButton\n #trigger\n type=\"button\"\n class=\"clr-combobox-trigger\"\n tabindex=\"-1\"\n [disabled]=\"control?.disabled || null\"\n [attr.aria-label]=\"commonStrings.keys.comboboxOpen\"\n >\n <cds-icon shape=\"angle\" direction=\"down\" size=\"12\"></cds-icon>\n </button>\n\n <div class=\"clr-focus-indicator\" [class.clr-focus]=\"focused\"></div>\n</div>\n\n<!-- Both close handlers are handled manually due to issues in Edge browser.\n Additionally 'outsideClickToClose' has complex handling that's necessary\n to be manual due to the component architecture -->\n<div role=\"dialog\" *clrPopoverContent=\"openState at smartPosition; outsideClickToClose: false; scrollToClose: false\">\n <ng-content></ng-content>\n</div>\n", components: [{ type: i10.ClrRovingTabindex, selector: "[clrRovingTabindex]", inputs: ["clrRovingTabindex", "clrRovingTabindexDisabled"] }], directives: [{ type: i11.ClrPopoverAnchor, selector: "[clrPopoverAnchor]" }, { type: i12.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i12.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i13.ClrKeyFocusItem, selector: "[clrKeyFocusItem]" }, { type: i12.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i14.CdsIconCustomTag, selector: "cds-icon" }, { type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i15.ClrPopoverOpenCloseButton, selector: "[clrPopoverOpenCloseButton]", outputs: ["clrPopoverOpenCloseChange"] }, { type: i16.ClrPopoverContent, selector: "[clrPopoverContent]", inputs: ["clrPopoverContent", "clrPopoverContentAt", "clrPopoverContentOutsideClickToClose", "clrPopoverContentScrollToClose"] }] });
|
|
305
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ClrCombobox, decorators: [{
|
|
306
|
+
type: Component,
|
|
307
|
+
args: [{ selector: 'clr-combobox', providers: [
|
|
308
|
+
ClrPopoverToggleService,
|
|
309
|
+
{ provide: POPOVER_HOST_ANCHOR, useExisting: ElementRef },
|
|
310
|
+
OptionSelectionService,
|
|
311
|
+
{ provide: LoadingListener, useExisting: ClrCombobox },
|
|
312
|
+
IF_ACTIVE_ID_PROVIDER,
|
|
313
|
+
AriaService,
|
|
314
|
+
FOCUS_SERVICE_PROVIDER,
|
|
315
|
+
COMBOBOX_FOCUS_HANDLER_PROVIDER,
|
|
316
|
+
ClrPopoverToggleService,
|
|
317
|
+
ClrPopoverEventsService,
|
|
318
|
+
ClrPopoverPositionService,
|
|
319
|
+
], host: {
|
|
320
|
+
'[class.aria-required]': 'true',
|
|
321
|
+
'[class.clr-combobox]': 'true',
|
|
322
|
+
'[class.clr-combobox-disabled]': 'control?.disabled',
|
|
323
|
+
}, template: "<!--\n* Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n* This software is released under MIT license.\n* The full license information can be found in LICENSE in the root directory of this project.\n-->\n\n<!-- The (click) handler is needed to auto-focus on input field which can not currently occupy the whole\n width of the component, after being wrapped to a new line -->\n<div\n class=\"clr-combobox-wrapper\"\n clrPopoverAnchor\n (click)=\"focusInput()\"\n [class.multi]=\"multiSelect\"\n [class.invalid]=\"invalid\"\n>\n <span\n *ngIf=\"multiSelect && optionSelectionService.selectionModel.model\"\n role=\"grid\"\n clrRovingTabindex\n [clrRovingTabindexDisabled]=\"control?.disabled\"\n clrDirection=\"both\"\n [attr.aria-label]=\"getSelectionAriaLabel()\"\n [attr.aria-disabled]=\"control?.disabled? true: null\"\n >\n <span *ngFor=\"let item of multiSelectModel; let i = index\" class=\"label label-combobox-pill\" role=\"row\">\n <span role=\"gridcell\">\n <span class=\"clr-combobox-pill-content\" clrKeyFocusItem>\n <ng-container\n *ngIf=\"optionSelected\"\n [ngTemplateOutlet]=\"optionSelected.template\"\n [ngTemplateOutletContext]=\"{$implicit: optionSelectionService.selectionModel.model[i]}\"\n >\n </ng-container>\n </span>\n </span>\n <span role=\"gridcell\">\n <button\n clrKeyFocusItem\n type=\"button\"\n class=\"clr-combobox-remove-btn\"\n [disabled]=\"control?.disabled? true: null\"\n [attr.aria-label]=\"commonStrings.keys.comboboxDelete + ' ' + optionSelectionService.selectionModel.toString(displayField, i)\"\n (click)=\"unselect(item)\"\n >\n <cds-icon shape=\"window-close\" size=\"12\"></cds-icon>\n </button>\n </span>\n </span>\n </span>\n\n <span class=\"clr-combobox-input-wrapper\">\n <input\n #textboxInput\n type=\"text\"\n [id]=\"inputId()\"\n role=\"combobox\"\n class=\"clr-input clr-combobox-input\"\n [(ngModel)]=\"searchText\"\n (blur)=\"onBlur()\"\n (focus)=\"onFocus()\"\n [attr.aria-expanded]=\"openState\"\n [attr.aria-owns]=\"ariaOwns\"\n aria-haspopup=\"listbox\"\n aria-autocomplete=\"list\"\n autocomplete=\"off\"\n [attr.aria-invalid]=\"control?.invalid? true: null\"\n [disabled]=\"control?.disabled? true: null\"\n [attr.aria-activedescendant]=\"getActiveDescendant()\"\n [attr.placeholder]=\"placeholder\"\n aria-multiline=\"false\"\n />\n </span>\n\n <!-- No click handler, as it uses the handler on the .clr-combobox-wrapper -->\n <button\n clrPopoverOpenCloseButton\n #trigger\n type=\"button\"\n class=\"clr-combobox-trigger\"\n tabindex=\"-1\"\n [disabled]=\"control?.disabled || null\"\n [attr.aria-label]=\"commonStrings.keys.comboboxOpen\"\n >\n <cds-icon shape=\"angle\" direction=\"down\" size=\"12\"></cds-icon>\n </button>\n\n <div class=\"clr-focus-indicator\" [class.clr-focus]=\"focused\"></div>\n</div>\n\n<!-- Both close handlers are handled manually due to issues in Edge browser.\n Additionally 'outsideClickToClose' has complex handling that's necessary\n to be manual due to the component architecture -->\n<div role=\"dialog\" *clrPopoverContent=\"openState at smartPosition; outsideClickToClose: false; scrollToClose: false\">\n <ng-content></ng-content>\n</div>\n" }]
|
|
324
|
+
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.Injector }, { type: i1.NgControl, decorators: [{
|
|
325
|
+
type: Self
|
|
326
|
+
}, {
|
|
327
|
+
type: Optional
|
|
328
|
+
}] }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i2.OptionSelectionService }, { type: i3.ClrCommonStringsService }, { type: i4.ClrPopoverToggleService }, { type: i5.ClrPopoverPositionService }, { type: i6.IfControlStateService, decorators: [{
|
|
329
|
+
type: Optional
|
|
330
|
+
}] }, { type: i7.ComboboxContainerService, decorators: [{
|
|
331
|
+
type: Optional
|
|
332
|
+
}] }, { type: undefined, decorators: [{
|
|
333
|
+
type: Inject,
|
|
334
|
+
args: [PLATFORM_ID]
|
|
335
|
+
}] }, { type: i8.AriaService }, { type: i9.ComboboxFocusHandler }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { textbox: [{
|
|
336
|
+
type: ViewChild,
|
|
337
|
+
args: ['textboxInput']
|
|
338
|
+
}], trigger: [{
|
|
339
|
+
type: ViewChild,
|
|
340
|
+
args: ['trigger']
|
|
341
|
+
}], optionSelected: [{
|
|
342
|
+
type: ContentChild,
|
|
343
|
+
args: [ClrOptionSelected]
|
|
344
|
+
}], placeholder: [{
|
|
345
|
+
type: Input,
|
|
346
|
+
args: ['placeholder']
|
|
347
|
+
}], multiSelect: [{
|
|
348
|
+
type: Input,
|
|
349
|
+
args: ['clrMulti']
|
|
350
|
+
}], onKeyUp: [{
|
|
351
|
+
type: HostListener,
|
|
352
|
+
args: ['keydown', ['$event']]
|
|
353
|
+
}], clrInputChange: [{
|
|
354
|
+
type: Output,
|
|
355
|
+
args: ['clrInputChange']
|
|
356
|
+
}], clrOpenChange: [{
|
|
357
|
+
type: Output,
|
|
358
|
+
args: ['clrOpenChange']
|
|
359
|
+
}], clrSelectionChange: [{
|
|
360
|
+
type: Output,
|
|
361
|
+
args: ['clrSelectionChange']
|
|
362
|
+
}] } });
|
|
363
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYm9ib3guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy9mb3Jtcy9jb21ib2JveC9jb21ib2JveC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL2Zvcm1zL2NvbWJvYm94L2NvbWJvYm94Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUVYLFNBQVMsRUFHVCxJQUFJLEVBQ0osUUFBUSxFQUNSLEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUVaLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUVyRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUU1RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUdoRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbEYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDL0UsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDakYsT0FBTyxFQUFFLCtCQUErQixFQUF3QixNQUFNLDRDQUE0QyxDQUFDO0FBQ25ILE9BQU8sRUFBRSxzQkFBc0IsRUFB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QVc7c0JBRGQsS0FBSzt1QkFBQyxVQUFVO2dCQW9EakIsT0FBTztzQkFETixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFhRixjQUFjO3NCQUE5QyxNQUFNO3VCQUFDLGdCQUFnQjtnQkFFUSxhQUFhO3NCQUE1QyxNQUFNO3VCQUFDLGVBQWU7Z0JBR2Msa0JBQWtCO3NCQUF0RCxNQUFNO3VCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE2LTIwMjEgVk13YXJlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlLlxuICogVGhlIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gTElDRU5TRSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBwcm9qZWN0LlxuICovXG5cbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBFbGVtZW50UmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIFBMQVRGT1JNX0lELFxuICBSZW5kZXJlcjIsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgSW5qZWN0b3IsXG4gIFNlbGYsXG4gIE9wdGlvbmFsLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIEFmdGVyQ29udGVudEluaXQsXG4gIEluamVjdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFBPUE9WRVJfSE9TVF9BTkNIT1IgfSBmcm9tICcuLi8uLi9wb3BvdmVyL2NvbW1vbi9wb3BvdmVyLWhvc3QtYW5jaG9yLnRva2VuJztcblxuaW1wb3J0IHsgT3B0aW9uU2VsZWN0aW9uU2VydmljZSB9IGZyb20gJy4vcHJvdmlkZXJzL29wdGlvbi1zZWxlY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBXcmFwcGVkRm9ybUNvbnRyb2wgfSBmcm9tICcuLi9jb21tb24vd3JhcHBlZC1jb250cm9sJztcbmltcG9ydCB7IENsckNvbWJvYm94Q29udGFpbmVyIH0gZnJvbSAnLi9jb21ib2JveC1jb250YWluZXInO1xuaW1wb3J0IHsgTmdDb250cm9sLCBDb250cm9sVmFsdWVBY2Nlc3NvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENsck9wdGlvblNlbGVjdGVkIH0gZnJvbSAnLi9vcHRpb24tc2VsZWN0ZWQuZGlyZWN0aXZlJztcbmltcG9ydCB7IENsckNvbW1vblN0cmluZ3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXRpbHMvaTE4bi9jb21tb24tc3RyaW5ncy5zZXJ2aWNlJztcblxuaW1wb3J0IHsgQXJpYVNlcnZpY2UgfSBmcm9tICcuLi8uLi91dGlscy9hcmlhL2FyaWEuc2VydmljZSc7XG5pbXBvcnQgeyBJRl9BQ1RJVkVfSURfUFJPVklERVIgfSBmcm9tICcuLi8uLi91dGlscy9jb25kaXRpb25hbC9pZi1hY3RpdmUuc2VydmljZSc7XG5pbXBvcnQgeyBNdWx0aVNlbGVjdENvbWJvYm94TW9kZWwgfSBmcm9tICcuL21vZGVsL211bHRpLXNlbGVjdC1jb21ib2JveC5tb2RlbCc7XG5pbXBvcnQgeyBTaW5nbGVTZWxlY3RDb21ib2JveE1vZGVsIH0gZnJvbSAnLi9tb2RlbC9zaW5nbGUtc2VsZWN0LWNvbWJvYm94Lm1vZGVsJztcbmltcG9ydCB7IENPTUJPQk9YX0ZPQ1VTX0hBTkRMRVJfUFJPVklERVIsIENvbWJvYm94Rm9jdXNIYW5kbGVyIH0gZnJvbSAnLi9wcm92aWRlcnMvY29tYm9ib3gtZm9jdXMtaGFuZGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IEZPQ1VTX1NFUlZJQ0VfUFJPVklERVIgfSBmcm9tICcuLi8uLi91dGlscy9mb2N1cy9mb2N1cy5zZXJ2aWNlJztcbmltcG9ydCB7IEJBQ0tTUEFDRSB9IGZyb20gJy4uLy4uL3V0aWxzL2tleS1jb2Rlcy9rZXktY29kZXMnO1xuXG5pbXBvcnQgeyBDbHJQb3BvdmVyUG9zaXRpb24gfSBmcm9tICcuLi8uLi91dGlscy9wb3BvdmVyL2ludGVyZmFjZXMvcG9wb3Zlci1wb3NpdGlvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ2xyQXhpcyB9IGZyb20gJy4uLy4uL3V0aWxzL3BvcG92ZXIvZW51bXMvYXhpcy5lbnVtJztcbmltcG9ydCB7IENsckFsaWdubWVudCB9IGZyb20gJy4uLy4uL3V0aWxzL3BvcG92ZXIvZW51bXMvYWxpZ25tZW50LmVudW0nO1xuaW1wb3J0IHsgQ2xyU2lkZSB9IGZyb20gJy4uLy4uL3V0aWxzL3BvcG92ZXIvZW51bXMvc2lkZS5lbnVtJztcbmltcG9ydCB7IENsclBvcG92ZXJUb2dnbGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXRpbHMvcG9wb3Zlci9wcm92aWRlcnMvcG9wb3Zlci10b2dnbGUuc2VydmljZSc7XG5pbXBvcnQgeyBDbHJQb3BvdmVyRXZlbnRzU2VydmljZSB9IGZyb20gJy4uLy4uL3V0aWxzL3BvcG92ZXIvcHJvdmlkZXJzL3BvcG92ZXItZXZlbnRzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2xyUG9wb3ZlclBvc2l0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3V0aWxzL3BvcG92ZXIvcHJvdmlkZXJzL3BvcG92ZXItcG9zaXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBDb21ib2JveENvbnRhaW5lclNlcnZpY2UgfSBmcm9tICcuL3Byb3ZpZGVycy9jb21ib2JveC1jb250YWluZXIuc2VydmljZSc7XG5pbXBvcnQgeyBMb2FkaW5nTGlzdGVuZXIgfSBmcm9tICcuLi8uLi91dGlscy9sb2FkaW5nL2xvYWRpbmctbGlzdGVuZXInO1xuaW1wb3J0IHsgQ2xyTG9hZGluZ1N0YXRlIH0gZnJvbSAnLi4vLi4vdXRpbHMvbG9hZGluZy9sb2FkaW5nJztcbmltcG9ydCB7IENvbWJvYm94TW9kZWwgfSBmcm9tICcuL21vZGVsL2NvbWJvYm94Lm1vZGVsJztcbmltcG9ydCB7IElmQ29udHJvbFN0YXRlU2VydmljZSwgQ09OVFJPTF9TVEFURSB9IGZyb20gJy4uL2NvbW1vbi9pZi1jb250cm9sLXN0YXRlL2lmLWNvbnRyb2wtc3RhdGUuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Nsci1jb21ib2JveCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb21ib2JveC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAgQ2xyUG9wb3ZlclRvZ2dsZVNlcnZpY2UsXG4gICAgeyBwcm92aWRlOiBQT1BPVkVSX0hPU1RfQU5DSE9SLCB1c2VFeGlzdGluZzogRWxlbWVudFJlZiB9LFxuICAgIE9wdGlvblNlbGVjdGlvblNlcnZpY2UsXG4gICAgeyBwcm92aWRlOiBMb2FkaW5nTGlzdGVuZXIsIHVzZUV4aXN0aW5nOiBDbHJDb21ib2JveCB9LFxuICAgIElGX0FDVElWRV9JRF9QUk9WSURFUixcbiAgICBBcmlhU2VydmljZSxcbiAgICBGT0NVU19TRVJWSUNFX1BST1ZJREVSLFxuICAgIENPTUJPQk9YX0ZPQ1VTX0hBTkRMRVJfUFJPVklERVIsXG4gICAgQ2xyUG9wb3ZlclRvZ2dsZVNlcnZpY2UsXG4gICAgQ2xyUG9wb3ZlckV2ZW50c1NlcnZpY2UsXG4gICAgQ2xyUG9wb3ZlclBvc2l0aW9uU2VydmljZSxcbiAgXSxcbiAgaG9zdDoge1xuICAgICdbY2xhc3MuYXJpYS1yZXF1aXJlZF0nOiAndHJ1ZScsXG4gICAgJ1tjbGFzcy5jbHItY29tYm9ib3hdJzogJ3RydWUnLFxuICAgICdbY2xhc3MuY2xyLWNvbWJvYm94LWRpc2FibGVkXSc6ICdjb250cm9sPy5kaXNhYmxlZCcsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIENsckNvbWJvYm94PFQ+XG4gIGV4dGVuZHMgV3JhcHBlZEZvcm1Db250cm9sPENsckNvbWJvYm94Q29udGFpbmVyPlxuICBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBMb2FkaW5nTGlzdGVuZXIsIEFmdGVyQ29udGVudEluaXRcbntcbiAgQFZpZXdDaGlsZCgndGV4dGJveElucHV0JykgdGV4dGJveDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgndHJpZ2dlcicpIHRyaWdnZXI6IEVsZW1lbnRSZWY7XG4gIEBDb250ZW50Q2hpbGQoQ2xyT3B0aW9uU2VsZWN0ZWQpIG9wdGlvblNlbGVjdGVkOiBDbHJPcHRpb25TZWxlY3RlZDxUPjtcblxuICBwcml2YXRlIG9uQ2hhbmdlQ2FsbGJhY2s6IChtb2RlbDogVCB8IFRbXSkgPT4gYW55O1xuXG4gIHByb3RlY3RlZCBpbmRleCA9IDE7XG5cbiAgaW52YWxpZCA9IGZhbHNlO1xuICBmb2N1c2VkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgdmNyOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBAU2VsZigpXG4gICAgQE9wdGlvbmFsKClcbiAgICBwdWJsaWMgY29udHJvbDogTmdDb250cm9sLFxuICAgIHByb3RlY3RlZCByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByb3RlY3RlZCBlbDogRWxlbWVudFJlZixcbiAgICBwdWJsaWMgb3B0aW9uU2VsZWN0aW9uU2VydmljZTogT3B0aW9uU2VsZWN0aW9uU2VydmljZTxUPixcbiAgICBwdWJsaWMgY29tbW9uU3RyaW5nczogQ2xyQ29tbW9uU3RyaW5nc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB0b2dnbGVTZXJ2aWNlOiBDbHJQb3BvdmVyVG9nZ2xlU2VydmljZSxcbiAgICBwcml2YXRlIHBvc2l0aW9uU2VydmljZTogQ2xyUG9wb3ZlclBvc2l0aW9uU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGNvbnRyb2xTdGF0ZVNlcnZpY2U6IElmQ29udHJvbFN0YXRlU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGNvbnRhaW5lclNlcnZpY2U6IENvbWJvYm94Q29udGFpbmVyU2VydmljZSxcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IGFueSxcbiAgICBwcml2YXRlIGFyaWFTZXJ2aWNlOiBBcmlhU2VydmljZSxcbiAgICBwcml2YXRlIGZvY3VzSGFuZGxlcjogQ29tYm9ib3hGb2N1c0hhbmRsZXI8VD4sXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIHN1cGVyKHZjciwgQ2xyQ29tYm9ib3hDb250YWluZXIsIGluamVjdG9yLCBjb250cm9sLCByZW5kZXJlciwgZWwpO1xuICAgIGlmIChjb250cm9sKSB7XG4gICAgICBjb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgIH1cbiAgICAvLyBkZWZhdWx0IHRvIFNpbmdsZVNlbGVjdENvbWJvYm94TW9kZWwsIGluIGNhc2UgdGhlIG9wdGlvbmFsIGlucHV0IFtDbHJNdWx0aV0gaXNuJ3QgdXNlZFxuICAgIHRoaXMub3B0aW9uU2VsZWN0aW9uU2VydmljZS5zZWxlY3Rpb25Nb2RlbCA9IG5ldyBTaW5nbGVTZWxlY3RDb21ib2JveE1vZGVsPFQ+KCk7XG4gICAgdGhpcy51cGRhdGVDb250cm9sVmFsdWUoKTtcbiAgfVxuXG4gIGZvY3VzZWRQaWxsOiBhbnk7XG5cbiAgLy8gT3ZlcnJpZGUgdGhlIGlkIG9mIFdyYXBwZWRGb3JtQ29udHJvbCwgYXMgd2Ugd2FudCB0byBtb3ZlIGl0IHRvIHRoZSBlbWJlZGRlZCBpbnB1dC5cbiAgLy8gT3RoZXJ3aXNlIHRoZSBsYWJlbC9jb21wb25lbnQgY29ubmVjdGlvbiBkb2VzIG5vdCB3b3JrIGFuZCBzY3JlZW4gcmVhZGVycyBkbyBub3QgcmVhZCB0aGUgbGFiZWwuXG4gIGdldCBpZCgpIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sSWRTZXJ2aWNlLmlkICsgJy1jb21ib2JveCc7XG4gIH1cblxuICBzZXQgaWQoaWQ6IHN0cmluZykge1xuICAgIHN1cGVyLmlkID0gaWQ7XG4gIH1cblxuICBpbnB1dElkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbElkU2VydmljZS5pZDtcbiAgfVxuXG4gIGdldCBvcGVuU3RhdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudG9nZ2xlU2VydmljZS5vcGVuO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2VhcmNoVGV4dCA9ICcnO1xuXG4gIHNldCBzZWFyY2hUZXh0KHRleHQ6IHN0cmluZykge1xuICAgIC8vIGlmIGlucHV0IHRleHQgaGFzIGNoYW5nZWQgc2luY2UgbGFzdCB0aW1lLCBmaXJlIGEgY2hhbmdlIGV2ZW50IHNvIGFwcGxpY2F0aW9uIGNhbiByZWFjdCB0byBpdFxuICAgIGlmICh0ZXh0ICE9PSB0aGlzLl9zZWFyY2hUZXh0KSB7XG4gICAgICB0aGlzLl9zZWFyY2hUZXh0ID0gdGV4dDtcbiAgICAgIHRoaXMuY2xySW5wdXRDaGFuZ2UuZW1pdCh0aGlzLnNlYXJjaFRleHQpO1xuICAgICAgdGhpcy5vcHRpb25TZWxlY3Rpb25TZXJ2aWNlLmN1cnJlbnRJbnB1dCA9IHRoaXMuc2VhcmNoVGV4dDtcbiAgICB9XG4gIH1cblxuICBnZXQgc2VhcmNoVGV4dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9zZWFyY2hUZXh0O1xuICB9XG5cbiAgZ2V0IG11bHRpU2VsZWN0TW9kZWwoKTogVFtdIHtcbiAgICBpZiAoIXRoaXMubXVsdGlTZWxlY3QpIHtcbiAgICAgIHRocm93IEVycm9yKCdtdWx0aVNlbGVjdE1vZGVsIGlzIG5vdCBhdmFpbGFibGUgaW4gc2luZ2xlIHNlbGVjdGlvbiBjb250ZXh0Jyk7XG4gICAgfVxuICAgIHJldHVybiAodGhpcy5vcHRpb25TZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGlvbk1vZGVsIGFzIE11bHRpU2VsZWN0Q29tYm9ib3hNb2RlbDxUPikubW9kZWw7XG4gIH1cblxuICBwdWJsaWMgc21hcnRQb3NpdGlvbjogQ2xyUG9wb3ZlclBvc2l0aW9uID0ge1xuICAgIGF4aXM6IENsckF4aXMuVkVSVElDQUwsXG4gICAgc2lkZTogQ2xyU2lkZS5BRlRFUixcbiAgICBhbmNob3I6IENsckFsaWdubWVudC5TVEFSVCxcbiAgICBjb250ZW50OiBDbHJBbGlnbm1lbnQuU1RBUlQsXG4gIH07XG5cbiAgbG9hZGluZ1N0YXRlQ2hhbmdlKHN0YXRlOiBDbHJMb2FkaW5nU3RhdGUpOiB2b2lkIHtcbiAgICB0aGlzLm9wdGlvblNlbGVjdGlvblNlcnZpY2UubG9hZGluZyA9IHN0YXRlID09PSBDbHJMb2FkaW5nU3RhdGUuTE9BRElORztcbiAgICB0aGlzLnBvc2l0aW9uU2VydmljZS5yZWFsaWduKCk7XG4gICAgaWYgKHN0YXRlICE9PSBDbHJMb2FkaW5nU3RhdGUuTE9BRElORyAmJiBpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5mb2N1c0ZpcnN0QWN0aXZlKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldCBkaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sICYmIHRoaXMuY29udHJvbC5kaXNhYmxlZDtcbiAgfVxuXG4gIHVuc2VsZWN0KGl0ZW06IFQpIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMub3B0aW9uU2VsZWN0aW9uU2VydmljZS51bnNlbGVjdChpdGVtKTtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoJ3BsYWNlaG9sZGVyJykgcGxhY2Vob2xkZXIgPSAnJztcblxuICBASW5wdXQoJ2Nsck11bHRpJylcbiAgc2V0IG11bHRpU2VsZWN0KHZhbHVlOiBib29sZWFuIHwgc3RyaW5nKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLm9wdGlvblNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0aW9uTW9kZWwgPSBuZXcgTXVsdGlTZWxlY3RDb21ib2JveE1vZGVsPFQ+KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGluIHRoZW9yeSwgc2V0dGluZyB0aGlzIGFnYWluIHNob3VsZCBub3QgY2F1c2UgZXJyb3JzIGV2ZW4gdGhvdWdoIHdlIGFscmVhZHkgc2V0IGl0IGluIGNvbnN0cnVjdG9yLFxuICAgICAgLy8gc2luY2UgdGhlIGluaXRpYWwgY2FsbCB0byB3cml0ZVZhbHVlIChjYXVzZWQgYnkgW25nTW9kZWxdIGlucHV0KSBzaG91bGQgaGFwcGVuIGFmdGVyIHRoaXNcbiAgICAgIHRoaXMub3B0aW9uU2VsZWN0aW9uU2VydmljZS5zZWxlY3Rpb25Nb2RlbCA9IG5ldyBTaW5nbGVTZWxlY3RDb21ib2JveE1vZGVsPFQ+KCk7XG4gICAgfVxuICAgIHRoaXMudXBkYXRlQ29udHJvbFZhbHVlKCk7XG4gIH1cblxuICBnZXQgbXVsdGlTZWxlY3QoKSB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9uU2VsZWN0aW9uU2VydmljZS5tdWx0aXNlbGVjdGFibGU7XG4gIH1cblxuICBnZXQgYXJpYUNvbnRyb2xzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYXJpYVNlcnZpY2UuYXJpYUNvbnRyb2xzO1xuICB9XG5cbiAgZ2V0IGFyaWFPd25zKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYXJpYVNlcnZpY2UuYXJpYU93bnM7XG4gIH1cblxuICBnZXQgYXJpYURlc2NyaWJlZEJ5U2VsZWN0aW9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdzZWxlY3Rpb24tJyArIHRoaXMuaWQ7XG4gIH1cblxuICBnZXQgZGlzcGxheUZpZWxkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9uU2VsZWN0aW9uU2VydmljZS5kaXNwbGF5RmllbGQ7XG4gIH1cblxuICBvbkJsdXIoKSB7XG4gICAgdGhpcy5vblRvdWNoZWRDYWxsYmFjaygpO1xuICAgIGlmICh0aGlzLmNvbnRyb2wuY29udHJvbC51cGRhdGVPbiA9PT0gJ2JsdXInKSB7XG4gICAgICB0aGlzLmNvbnRyb2wuY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgfVxuICAgIHRoaXMuZm9jdXNlZCA9IGZhbHNlO1xuICB9XG5cbiAgb25Gb2N1cygpIHtcbiAgICB0aGlzLmZvY3VzZWQgPSB0cnVlO1xuICB9XG5cbiAgZ2V0U2VsZWN0aW9uQXJpYUxhYmVsKCkge1xuICAgIGlmICh0aGlzLmNvbnRhaW5lclNlcnZpY2UgJiYgdGhpcy5jb250YWluZXJTZXJ2aWNlLmxhYmVsVGV4dCkge1xuICAgICAgcmV0dXJuIGAke3RoaXMuY29udGFpbmVyU2VydmljZS5sYWJlbFRleHR9ICR7dGhpcy5jb21tb25TdHJpbmdzLmtleXMuY29tYm9ib3hTZWxlY3Rpb259YDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY29tbW9uU3RyaW5ncy5rZXlzLmNvbWJvYm94U2VsZWN0aW9uO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIG9uS2V5VXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAvLyBpZiBCQUNLU1BBQ0UgaW4gbXVsdGlzZWxlY3QgbW9kZSwgZGVsZXRlIHRoZSBsYXN0IHBpbGwgaWYgdGV4dCBpcyBlbXB0eVxuICAgIGlmIChldmVudC5rZXlDb2RlID09PSBCQUNLU1BBQ0UgJiYgdGhpcy5tdWx0aVNlbGVjdCAmJiB0aGlzLl9zZWFyY2hUZXh0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgY29uc3QgbXVsdGlNb2RlbDogVFtdID0gdGhpcy5vcHRpb25TZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGlvbk1vZGVsLm1vZGVsIGFzIFRbXTtcbiAgICAgIGlmIChtdWx0aU1vZGVsICYmIG11bHRpTW9kZWwubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCBsYXN0SXRlbTogVCA9IG11bHRpTW9kZWxbbXVsdGlNb2RlbC5sZW5ndGggLSAxXTtcbiAgICAgICAgdGhpcy5jb250cm9sLmNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgICAgICB0aGlzLm9wdGlvblNlbGVjdGlvblNlcnZpY2UudW5zZWxlY3QobGFzdEl0ZW0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBPdXRwdXQoJ2NscklucHV0Q2hhbmdlJykgcHVibGljIGNscklucHV0Q2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPihmYWxzZSk7XG5cbiAgQE91dHB1dCgnY2xyT3BlbkNoYW5nZScpIHB1YmxpYyBjbHJPcGVuQ2hhbmdlOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy50b2dnbGVTZXJ2aWNlLm9wZW5DaGFuZ2U7XG5cbiAgLy8gVGhpcyBvdXRwdXQgc2hvdWxkIGJlIHVzZWQgdG8gc2V0IHVwIGEgbGl2ZSByZWdpb24gdXNpbmcgYXJpYS1saXZlIGFuZCBwb3B1bGF0ZSBpdCB3aXRoIHVwZGF0ZXMgdGhhdCByZWZsZWN0IGVhY2ggY29tYm9ib3ggY2hhbmdlXG4gIEBPdXRwdXQoJ2NsclNlbGVjdGlvbkNoYW5nZScpIHB1YmxpYyBjbHJTZWxlY3Rpb25DaGFuZ2U6IE9ic2VydmFibGU8Q29tYm9ib3hNb2RlbDxUPj4gPVxuICAgIHRoaXMub3B0aW9uU2VsZWN0aW9uU2VydmljZS5zZWxlY3Rpb25DaGFuZ2VkO1xuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVN1YnNjcmlwdGlvbnMoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLm9wdGlvblNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0aW9uQ2hhbmdlZC5zdWJzY3JpYmUoKG5ld1NlbGVjdGlvbjogQ29tYm9ib3hNb2RlbDxUPikgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZUlucHV0VmFsdWUobmV3U2VsZWN0aW9uKTtcbiAgICAgICAgaWYgKHRoaXMubXVsdGlTZWxlY3QpIHtcbiAgICAgICAgICB0aGlzLnBvc2l0aW9uU2VydmljZS5yZWFsaWduKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLm11bHRpU2VsZWN0ICYmIG5ld1NlbGVjdGlvbiAmJiAhbmV3U2VsZWN0aW9uLmlzRW1wdHkoKSkge1xuICAgICAgICAgIHRoaXMudG9nZ2xlU2VydmljZS5vcGVuID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51cGRhdGVDb250cm9sVmFsdWUoKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy50b2dnbGVTZXJ2aWNlLm9wZW5DaGFuZ2Uuc3Vic2NyaWJlKG9wZW4gPT4ge1xuICAgICAgICBpZiAob3Blbikge1xuICAgICAgICAgIHRoaXMuZm9jdXNGaXJzdEFjdGl2ZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm11bHRpU2VsZWN0KSB7XG4gICAgICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gdGhpcy5nZXREaXNwbGF5TmFtZXModGhpcy5vcHRpb25TZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGlvbk1vZGVsLm1vZGVsKVswXSB8fCAnJztcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLnRvZ2dsZVNlcnZpY2UucG9wb3ZlckFsaWduZWQuc3Vic2NyaWJlKHBvcG92ZXJOb2RlID0+IHtcbiAgICAgICAgLy8gV2hlbiB1c2VkIG91dHNpZGUgYSBjb21ib2JveCBjb250YWluZXJcbiAgICAgICAgaWYgKCF0aGlzLmNvbnRhaW5lclNlcnZpY2UpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcG9wb3ZlcjogSFRNTEVsZW1lbnQgPSBwb3BvdmVyTm9kZSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgLy8gVXBkYXRlIHBvc2l0aW9uIGlmIHBvcG92ZXIgaGlkZXMgdGhlIGxhYmVsXG4gICAgICAgIGlmIChwb3BvdmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCA8IHRoaXMuZWwubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3ApIHtcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHBvcG92ZXJOb2RlLCAndG9wJywgYCR7cG9wb3Zlci5vZmZzZXRUb3AgKyB0aGlzLmNvbnRhaW5lclNlcnZpY2UubGFiZWxPZmZzZXR9cHhgKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgaWYgKHRoaXMuY29udHJvbFN0YXRlU2VydmljZSkge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICAgIHRoaXMuY29udHJvbFN0YXRlU2VydmljZS5zdGF0dXNDaGFuZ2VzLnN1YnNjcmliZShpbnZhbGlkID0+IHtcbiAgICAgICAgICB0aGlzLmludmFsaWQgPSBpbnZhbGlkID09PSBDT05UUk9MX1NUQVRFLklOVkFMSUQ7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGZvY3VzRmlyc3RBY3RpdmUoKSB7XG4gICAgdGhpcy5mb2N1c0hhbmRsZXIuZm9jdXNGaXJzdEFjdGl2ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVJbnB1dFZhbHVlKG1vZGVsOiBDb21ib2JveE1vZGVsPFQ+KSB7XG4gICAgaWYgKCF0aGlzLm11bHRpU2VsZWN0KSB7XG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSBtb2RlbC5tb2RlbCA/IHRoaXMuZ2V0RGlzcGxheU5hbWVzKG1vZGVsLm1vZGVsKVswXSA6ICcnO1xuICAgICAgaWYgKHRoaXMuc2VhcmNoVGV4dCkge1xuICAgICAgICB0aGlzLm9wdGlvblNlbGVjdGlvblNlcnZpY2UuY3VycmVudElucHV0ID0gdGhpcy5zZWFyY2hUZXh0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQ29udHJvbFZhbHVlKCkge1xuICAgIGlmICh0aGlzLm9uQ2hhbmdlQ2FsbGJhY2spIHtcbiAgICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayh0aGlzLm9wdGlvblNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0aW9uTW9kZWwubW9kZWwpO1xuICAgIH1cbiAgfVxuXG4gIC8vIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGltcGxlbWVudGF0aW9uIG1ldGhvZHNcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogVCB8IFRbXSk6IHZvaWQge1xuICAgIHRoaXMub3B0aW9uU2VsZWN0aW9uU2VydmljZS5zZWxlY3Rpb25Nb2RlbC5tb2RlbCA9IHZhbHVlO1xuICAgIHRoaXMudXBkYXRlSW5wdXRWYWx1ZSh0aGlzLm9wdGlvblNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0aW9uTW9kZWwpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShvbkNoYW5nZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrID0gb25DaGFuZ2U7XG4gIH1cblxuICBnZXRBY3RpdmVEZXNjZW5kYW50KCkge1xuICAgIGNvbnN0IG1vZGVsID0gdGhpcy5mb2N1c0hhbmRsZXIucHNldWRvRm9jdXMubW9kZWw7XG4gICAgcmV0dXJuIG1vZGVsID8gbW9kZWwuaWQgOiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBvblRvdWNoZWRDYWxsYmFjazogKCkgPT4gYW55O1xuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKG9uVG91Y2hlZDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWRDYWxsYmFjayA9IG9uVG91Y2hlZDtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoKTogdm9pZCB7XG4gICAgLy8gZG8gbm90aGluZ1xuICB9XG5cbiAgZm9jdXNJbnB1dCgpIHtcbiAgICB0aGlzLmZvY3VzSGFuZGxlci5mb2N1c0lucHV0KCk7XG4gIH1cblxuICBwcml2YXRlIGdldERpc3BsYXlOYW1lcyhtb2RlbDogVCB8IFRbXSkge1xuICAgIGlmICh0aGlzLmRpc3BsYXlGaWVsZCkge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG1vZGVsKSkge1xuICAgICAgICBtb2RlbCA9IFttb2RlbF07XG4gICAgICB9XG4gICAgICByZXR1cm4gbW9kZWwubWFwKGl0ZW0gPT4gKGl0ZW0gPyAoaXRlbSBhcyBhbnkpW3RoaXMuZGlzcGxheUZpZWxkXSA6IG51bGwpKTtcbiAgICB9XG4gICAgcmV0dXJuIFt0aGlzLm9wdGlvblNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0aW9uTW9kZWwubW9kZWxdO1xuICB9XG5cbiAgLy8gTGlmZWN5Y2xlIG1ldGhvZHNcbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIHRoaXMuaW5pdGlhbGl6ZVN1YnNjcmlwdGlvbnMoKTtcblxuICAgIC8vIEluaXRpYWxpemUgd2l0aCBwcmVzZWxlY3RlZCB2YWx1ZVxuICAgIGlmICghdGhpcy5vcHRpb25TZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGlvbk1vZGVsLmlzRW1wdHkoKSkge1xuICAgICAgdGhpcy51cGRhdGVJbnB1dFZhbHVlKHRoaXMub3B0aW9uU2VsZWN0aW9uU2VydmljZS5zZWxlY3Rpb25Nb2RlbCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuZm9jdXNIYW5kbGVyLmNvbXBvbmVudENkUmVmID0gdGhpcy5jZHI7XG4gICAgdGhpcy5mb2N1c0hhbmRsZXIudGV4dElucHV0ID0gdGhpcy50ZXh0Ym94Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgdGhpcy5mb2N1c0hhbmRsZXIudHJpZ2dlciA9IHRoaXMudHJpZ2dlci5uYXRpdmVFbGVtZW50O1xuICAgIC8vIFRoZSB0ZXh0IGlucHV0IGlzIHRoZSBhY3R1YWwgZWxlbWVudCB3ZSBhcmUgd3JhcHBpbmdcbiAgICAvLyBUaGlzIGFzc2lnbm1lbnQgaXMgbmVlZGVkIGJ5IHRoZSB3cmFwcGVyLCBzbyBpdCBjYW4gc2V0XG4gICAgLy8gdGhlIGFyaWEgcHJvcGVydGllcyBvbiB0aGUgaW5wdXQgZWxlbWVudCwgbm90IG9uIHRoZSBjb21wb25lbnQuXG4gICAgdGhpcy5lbCA9IHRoaXMudGV4dGJveDtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKChzdWI6IFN1YnNjcmlwdGlvbikgPT4gc3ViLnVuc3Vic2NyaWJlKCkpO1xuICB9XG59XG4iLCI8IS0tXG4qIENvcHlyaWdodCAoYykgMjAxNi0yMDIxIFZNd2FyZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuKiBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlLlxuKiBUaGUgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBpbiBMSUNFTlNFIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHByb2plY3QuXG4tLT5cblxuPCEtLSBUaGUgKGNsaWNrKSBoYW5kbGVyIGlzIG5lZWRlZCB0byBhdXRvLWZvY3VzIG9uIGlucHV0IGZpZWxkIHdoaWNoIGNhbiBub3QgY3VycmVudGx5IG9jY3VweSB0aGUgd2hvbGVcbiAgICAgd2lkdGggb2YgdGhlIGNvbXBvbmVudCwgYWZ0ZXIgYmVpbmcgd3JhcHBlZCB0byBhIG5ldyBsaW5lIC0tPlxuPGRpdlxuICBjbGFzcz1cImNsci1jb21ib2JveC13cmFwcGVyXCJcbiAgY2xyUG9wb3ZlckFuY2hvclxuICAoY2xpY2spPVwiZm9jdXNJbnB1dCgpXCJcbiAgW2NsYXNzLm11bHRpXT1cIm11bHRpU2VsZWN0XCJcbiAgW2NsYXNzLmludmFsaWRdPVwiaW52YWxpZFwiXG4+XG4gIDxzcGFuXG4gICAgKm5nSWY9XCJtdWx0aVNlbGVjdCAmJiBvcHRpb25TZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGlvbk1vZGVsLm1vZGVsXCJcbiAgICByb2xlPVwiZ3JpZFwiXG4gICAgY2xyUm92aW5nVGFiaW5kZXhcbiAgICBbY2xyUm92aW5nVGFiaW5kZXhEaXNhYmxlZF09XCJjb250cm9sPy5kaXNhYmxlZFwiXG4gICAgY2xyRGlyZWN0aW9uPVwiYm90aFwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJnZXRTZWxlY3Rpb25BcmlhTGFiZWwoKVwiXG4gICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJjb250cm9sPy5kaXNhYmxlZD8gdHJ1ZTogbnVsbFwiXG4gID5cbiAgICA8c3BhbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBtdWx0aVNlbGVjdE1vZGVsOyBsZXQgaSA9IGluZGV4XCIgY2xhc3M9XCJsYWJlbCBsYWJlbC1jb21ib2JveC1waWxsXCIgcm9sZT1cInJvd1wiPlxuICAgICAgPHNwYW4gcm9sZT1cImdyaWRjZWxsXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY2xyLWNvbWJvYm94LXBpbGwtY29udGVudFwiIGNscktleUZvY3VzSXRlbT5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdJZj1cIm9wdGlvblNlbGVjdGVkXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm9wdGlvblNlbGVjdGVkLnRlbXBsYXRlXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7JGltcGxpY2l0OiBvcHRpb25TZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGlvbk1vZGVsLm1vZGVsW2ldfVwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhbiByb2xlPVwiZ3JpZGNlbGxcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNscktleUZvY3VzSXRlbVxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwiY2xyLWNvbWJvYm94LXJlbW92ZS1idG5cIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJjb250cm9sPy5kaXNhYmxlZD8gdHJ1ZTogbnVsbFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJjb21tb25TdHJpbmdzLmtleXMuY29tYm9ib3hEZWxldGUgKyAnICcgKyBvcHRpb25TZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGlvbk1vZGVsLnRvU3RyaW5nKGRpc3BsYXlGaWVsZCwgaSlcIlxuICAgICAgICAgIChjbGljayk9XCJ1bnNlbGVjdChpdGVtKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8Y2RzLWljb24gc2hhcGU9XCJ3aW5kb3ctY2xvc2VcIiBzaXplPVwiMTJcIj48L2Nkcy1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L3NwYW4+XG4gIDwvc3Bhbj5cblxuICA8c3BhbiBjbGFzcz1cImNsci1jb21ib2JveC1pbnB1dC13cmFwcGVyXCI+XG4gICAgPGlucHV0XG4gICAgICAjdGV4dGJveElucHV0XG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgICBbaWRdPVwiaW5wdXRJZCgpXCJcbiAgICAgIHJvbGU9XCJjb21ib2JveFwiXG4gICAgICBjbGFzcz1cImNsci1pbnB1dCBjbHItY29tYm9ib3gtaW5wdXRcIlxuICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXh0XCJcbiAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcbiAgICAgIChmb2N1cyk9XCJvbkZvY3VzKClcIlxuICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJvcGVuU3RhdGVcIlxuICAgICAgW2F0dHIuYXJpYS1vd25zXT1cImFyaWFPd25zXCJcbiAgICAgIGFyaWEtaGFzcG9wdXA9XCJsaXN0Ym94XCJcbiAgICAgIGFyaWEtYXV0b2NvbXBsZXRlPVwibGlzdFwiXG4gICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cImNvbnRyb2w/LmludmFsaWQ/IHRydWU6IG51bGxcIlxuICAgICAgW2Rpc2FibGVkXT1cImNvbnRyb2w/LmRpc2FibGVkPyB0cnVlOiBudWxsXCJcbiAgICAgIFthdHRyLmFyaWEtYWN0aXZlZGVzY2VuZGFudF09XCJnZXRBY3RpdmVEZXNjZW5kYW50KClcIlxuICAgICAgW2F0dHIucGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgYXJpYS1tdWx0aWxpbmU9XCJmYWxzZVwiXG4gICAgLz5cbiAgPC9zcGFuPlxuXG4gIDwhLS0gTm8gY2xpY2sgaGFuZGxlciwgYXMgaXQgdXNlcyB0aGUgaGFuZGxlciBvbiB0aGUgLmNsci1jb21ib2JveC13cmFwcGVyIC0tPlxuICA8YnV0dG9uXG4gICAgY2xyUG9wb3Zlck9wZW5DbG9zZUJ1dHRvblxuICAgICN0cmlnZ2VyXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgY2xhc3M9XCJjbHItY29tYm9ib3gtdHJpZ2dlclwiXG4gICAgdGFiaW5kZXg9XCItMVwiXG4gICAgW2Rpc2FibGVkXT1cImNvbnRyb2w/LmRpc2FibGVkIHx8IG51bGxcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiY29tbW9uU3RyaW5ncy5rZXlzLmNvbWJvYm94T3BlblwiXG4gID5cbiAgICA8Y2RzLWljb24gc2hhcGU9XCJhbmdsZVwiIGRpcmVjdGlvbj1cImRvd25cIiBzaXplPVwiMTJcIj48L2Nkcy1pY29uPlxuICA8L2J1dHRvbj5cblxuICA8ZGl2IGNsYXNzPVwiY2xyLWZvY3VzLWluZGljYXRvclwiIFtjbGFzcy5jbHItZm9jdXNdPVwiZm9jdXNlZFwiPjwvZGl2PlxuPC9kaXY+XG5cbjwhLS0gQm90aCBjbG9zZSBoYW5kbGVycyBhcmUgaGFuZGxlZCBtYW51YWxseSBkdWUgdG8gaXNzdWVzIGluIEVkZ2UgYnJvd3Nlci5cbiAgICAgQWRkaXRpb25hbGx5ICdvdXRzaWRlQ2xpY2tUb0Nsb3NlJyBoYXMgY29tcGxleCBoYW5kbGluZyB0aGF0J3MgbmVjZXNzYXJ5XG4gICAgIHRvIGJlIG1hbnVhbCBkdWUgdG8gdGhlIGNvbXBvbmVudCBhcmNoaXRlY3R1cmUgLS0+XG48ZGl2IHJvbGU9XCJkaWFsb2dcIiAqY2xyUG9wb3ZlckNvbnRlbnQ9XCJvcGVuU3RhdGUgYXQgc21hcnRQb3NpdGlvbjsgb3V0c2lkZUNsaWNrVG9DbG9zZTogZmFsc2U7IHNjcm9sbFRvQ2xvc2U6IGZhbHNlXCI+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvZGl2PlxuIl19
|