@ethlete/cdk 2.3.3 → 2.5.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/CHANGELOG.md +12 -0
- package/esm2022/lib/components/accordion/components/accordion/accordion.component.mjs +3 -3
- package/esm2022/lib/components/accordion/components/accordion-group/accordion-group.component.mjs +3 -3
- package/esm2022/lib/components/accordion/partials/accordion-hint/accordion-hint.directive.mjs +3 -3
- package/esm2022/lib/components/accordion/partials/accordion-hint-wrapper/accordion-hint-wrapper.directive.mjs +3 -3
- package/esm2022/lib/components/accordion/partials/accordion-label/accordion-label.directive.mjs +3 -3
- package/esm2022/lib/components/accordion/partials/accordion-label-wrapper/accordion-label-wrapper.directive.mjs +3 -3
- package/esm2022/lib/components/bracket/components/bracket/bracket.component.mjs +3 -3
- package/esm2022/lib/components/bracket/directives/bracket-match/bracket-match.directive.mjs +3 -3
- package/esm2022/lib/components/bracket/directives/bracket-round/bracket-round.directive.mjs +3 -3
- package/esm2022/lib/components/bracket/partials/bracket-match/bracket-match.component.mjs +3 -3
- package/esm2022/lib/components/bracket/partials/bracket-round-header/bracket-round-header.component.mjs +3 -3
- package/esm2022/lib/components/button/components/button/button.component.mjs +3 -3
- package/esm2022/lib/components/button/components/query-button/query-button.component.mjs +3 -3
- package/esm2022/lib/components/button/directives/button/button.directive.mjs +3 -3
- package/esm2022/lib/components/button/directives/query-button/query-button.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/checkbox/components/checkbox/checkbox.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/checkbox/components/checkbox-field/checkbox-field.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/checkbox/components/checkbox-group/checkbox-group.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/checkbox/directives/checkbox/checkbox.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/checkbox/directives/checkbox-field/checkbox-field.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/checkbox/directives/checkbox-group/checkbox-group.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/checkbox/directives/checkbox-group-control/checkbox-group-control.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/error/components/error/error.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/input/components/email-input/email-input.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/input/components/input-field/input-field.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/input/components/number-input/number-input.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/input/components/password-input/password-input.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/input/components/search-input/search-input.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/input/components/text-input/text-input.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/input/components/textarea-input/textarea-input.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/input/directives/autosize-textarea/autosize-textarea.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/input/directives/email-input/email-input.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/input/directives/number-input/number-input.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/input/directives/password-input/password-input.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/input/directives/search-input/search-input.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/input/directives/text-input/text-input.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/input/directives/textarea-input/textarea-input.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/input/partials/password-input-toggle/password-input-toggle.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/input/partials/search-input-clear/search-input-clear.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/label/components/label/label.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/label/directives/label-suffix/label-suffix.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/radio/components/radio/radio.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/radio/components/radio-field/radio-field.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/radio/components/radio-group/radio-group.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/radio/directives/radio/radio.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/radio/directives/radio-field/radio-field.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/radio/directives/radio-group/radio-group.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/segmented-button/components/segmented-button/segmented-button.component.mjs +4 -5
- package/esm2022/lib/components/forms/components/segmented-button/components/segmented-button-field/segmented-button-field.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/segmented-button/components/segmented-button-group/segmented-button-group.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/segmented-button/directives/segmented-button/segmented-button.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/segmented-button/directives/segmented-button-field/segmented-button-field.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/segmented-button/directives/segmented-button-group/segmented-button-group.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/select/components/combobox/combobox.imports.mjs +12 -0
- package/esm2022/lib/components/forms/components/select/components/combobox/components/combobox/combobox.component.mjs +556 -0
- package/esm2022/lib/components/forms/components/select/components/combobox/components/combobox/public-api.mjs +2 -0
- package/esm2022/lib/components/forms/components/select/components/combobox/components/index.mjs +2 -0
- package/esm2022/lib/components/forms/components/select/components/combobox/components/public-api.mjs +2 -0
- package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox/combobox.directive.mjs +26 -0
- package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox/public-api.mjs +2 -0
- package/esm2022/lib/components/forms/components/select/components/combobox/directives/public-api.mjs +2 -0
- package/esm2022/lib/components/forms/components/select/components/combobox/partials/combobox-body/combobox-body.component.mjs +49 -0
- package/esm2022/lib/components/forms/components/select/components/combobox/partials/combobox-body/public-api.mjs +2 -0
- package/esm2022/lib/components/forms/components/select/components/combobox/partials/combobox-option/combobox-option.component.mjs +64 -0
- package/esm2022/lib/components/forms/components/select/components/combobox/partials/combobox-option/index.mjs +2 -0
- package/esm2022/lib/components/forms/components/select/components/combobox/partials/combobox-option/public-api.mjs +2 -0
- package/esm2022/lib/components/forms/components/select/components/combobox/partials/index.mjs +2 -0
- package/esm2022/lib/components/forms/components/select/components/combobox/partials/public-api.mjs +3 -0
- package/esm2022/lib/components/forms/components/select/components/combobox/public-api.mjs +4 -0
- package/esm2022/lib/components/forms/components/select/components/native-select/components/native-select/native-select.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/select/components/native-select/directives/native-select-input/native-select-input.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/select/components/native-select/directives/native-select-option/native-select-option.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/select/components/native-select/partials/native-select-option/native-select-option.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/select/components/public-api.mjs +2 -1
- package/esm2022/lib/components/forms/components/select/components/select/components/select/select.component.mjs +18 -31
- package/esm2022/lib/components/forms/components/select/components/select/directives/index.mjs +2 -0
- package/esm2022/lib/components/forms/components/select/components/select/directives/public-api.mjs +4 -0
- package/esm2022/lib/components/forms/components/select/components/select/directives/select/index.mjs +2 -0
- package/esm2022/lib/components/forms/components/select/components/select/directives/select/public-api.mjs +2 -0
- package/esm2022/lib/components/forms/components/select/components/select/directives/select/select.directive.mjs +449 -0
- package/esm2022/lib/components/forms/components/select/components/select/directives/select-body/index.mjs +2 -0
- package/esm2022/lib/components/forms/components/select/components/select/directives/select-body/public-api.mjs +2 -0
- package/esm2022/lib/components/forms/components/select/components/select/directives/select-body/select-body.directive.mjs +61 -0
- package/esm2022/lib/components/forms/components/select/components/select/directives/select-option/index.mjs +2 -0
- package/esm2022/lib/components/forms/components/select/components/select/directives/select-option/public-api.mjs +2 -0
- package/esm2022/lib/components/forms/components/select/components/select/directives/select-option/select-option.directive.mjs +121 -0
- package/esm2022/lib/components/forms/components/select/components/select/partials/public-api.mjs +1 -2
- package/esm2022/lib/components/forms/components/select/components/select/partials/select-body/select-body.component.mjs +22 -7
- package/esm2022/lib/components/forms/components/select/components/select/partials/select-option/select-option.component.mjs +14 -8
- package/esm2022/lib/components/forms/components/select/components/select/public-api.mjs +2 -1
- package/esm2022/lib/components/forms/components/select/components/select/select.imports.mjs +2 -3
- package/esm2022/lib/components/forms/components/select/components/select-field/select-field.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/slide-toggle/components/slide-toggle/slide-toggle.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/slide-toggle/components/slide-toggle-field/slide-toggle-field.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/slide-toggle/directives/slide-toggle/slide-toggle.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/slider/components/slider/slider.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/slider/components/slider-field/slider-field.component.mjs +3 -3
- package/esm2022/lib/components/forms/directives/dynamic-form-field/dynamic-form-field.directive.mjs +3 -3
- package/esm2022/lib/components/forms/directives/dynamic-form-group/dynamic-form-group.directive.mjs +3 -3
- package/esm2022/lib/components/forms/directives/if-input-empty/if-input-empty.directive.mjs +3 -3
- package/esm2022/lib/components/forms/directives/if-input-filled/if-input-filled.directive.mjs +3 -3
- package/esm2022/lib/components/forms/directives/input/input.directive.mjs +47 -32
- package/esm2022/lib/components/forms/directives/input-prefix/input-prefix.directive.mjs +3 -3
- package/esm2022/lib/components/forms/directives/input-suffix/input-suffix.directive.mjs +3 -3
- package/esm2022/lib/components/forms/directives/native-input-ref/native-input-ref.directive.mjs +3 -3
- package/esm2022/lib/components/forms/directives/static-form-field/static-form-field.directive.mjs +3 -3
- package/esm2022/lib/components/forms/directives/static-form-group/static-form-group.directive.mjs +3 -3
- package/esm2022/lib/components/forms/directives/writeable-input/writeable-input.directive.mjs +3 -3
- package/esm2022/lib/components/forms/services/default-validator-errors.service.mjs +3 -3
- package/esm2022/lib/components/forms/services/form-field-state.service.mjs +3 -3
- package/esm2022/lib/components/forms/services/form-group-state.service.mjs +3 -3
- package/esm2022/lib/components/forms/services/input-state.service.mjs +3 -3
- package/esm2022/lib/components/forms/utils/decorated-form-field.base.mjs +3 -3
- package/esm2022/lib/components/forms/utils/decorated-input.base.mjs +4 -4
- package/esm2022/lib/components/forms/utils/input.base.mjs +8 -8
- package/esm2022/lib/components/icons/chevron-icon/chevron-icon.component.mjs +3 -3
- package/esm2022/lib/components/masonry/components/masonry/masonry.component.mjs +3 -3
- package/esm2022/lib/components/masonry/partials/masonry-item/masonry-item.component.mjs +3 -3
- package/esm2022/lib/components/overlay/components/bottom-sheet/components/bottom-sheet-container/bottom-sheet-container.component.mjs +3 -3
- package/esm2022/lib/components/overlay/components/bottom-sheet/partials/bottom-sheet-container-base/bottom-sheet-container-base.component.mjs +3 -3
- package/esm2022/lib/components/overlay/components/bottom-sheet/partials/bottom-sheet-drag-handle/bottom-sheet-drag-handle.component.mjs +3 -3
- package/esm2022/lib/components/overlay/components/bottom-sheet/partials/bottom-sheet-title/bottom-sheet-title.directive.mjs +3 -3
- package/esm2022/lib/components/overlay/components/bottom-sheet/services/bottom-sheet-base.service.mjs +3 -3
- package/esm2022/lib/components/overlay/components/bottom-sheet/services/bottom-sheet-swipe-handler.service.mjs +3 -3
- package/esm2022/lib/components/overlay/components/bottom-sheet/services/bottom-sheet.service.mjs +3 -3
- package/esm2022/lib/components/overlay/components/dialog/components/dialog-container/dialog-container.component.mjs +3 -3
- package/esm2022/lib/components/overlay/components/dialog/partials/dialog-close/dialog-close.directive.mjs +3 -3
- package/esm2022/lib/components/overlay/components/dialog/partials/dialog-container-base/dialog-container-base.component.mjs +3 -3
- package/esm2022/lib/components/overlay/components/dialog/partials/dialog-title/dialog-title.directive.mjs +3 -3
- package/esm2022/lib/components/overlay/components/dialog/services/dialog-base.service.mjs +3 -3
- package/esm2022/lib/components/overlay/components/dialog/services/dialog.service.mjs +3 -3
- package/esm2022/lib/components/overlay/components/toggletip/components/toggletip/toggletip.component.mjs +3 -3
- package/esm2022/lib/components/overlay/components/toggletip/directives/toggletip/toggletip.directive.mjs +3 -3
- package/esm2022/lib/components/overlay/components/tooltip/components/tooltip/tooltip.component.mjs +3 -3
- package/esm2022/lib/components/overlay/components/tooltip/directives/tooltip/tooltip.directive.mjs +3 -3
- package/esm2022/lib/components/overlay/services/dynamic-overlay.service.mjs +3 -3
- package/esm2022/lib/components/pagination/components/pagination/pagination.component.mjs +3 -3
- package/esm2022/lib/components/pagination/partials/pagination-link/pagination-link.directive.mjs +3 -3
- package/esm2022/lib/components/pagination/services/pagination-head.service.mjs +3 -3
- package/esm2022/lib/components/picture/picture-data.directive.mjs +3 -3
- package/esm2022/lib/components/picture/picture.component.mjs +3 -3
- package/esm2022/lib/components/progress-spinner/progress-spinner.component.mjs +3 -3
- package/esm2022/lib/components/scrollable/components/scrollable/scrollable.component.mjs +55 -8
- package/esm2022/lib/components/skeleton/components/skeleton/skeleton.component.mjs +3 -3
- package/esm2022/lib/components/skeleton/partials/skeleton-item/skeleton-item.component.mjs +3 -3
- package/esm2022/lib/components/sort/components/sort-header/sort-header.component.mjs +3 -3
- package/esm2022/lib/components/sort/partials/sort/sort.directive.mjs +3 -3
- package/esm2022/lib/components/sort/services/sort-header-intl.mjs +3 -3
- package/esm2022/lib/components/table/components/table/table.component.mjs +3 -3
- package/esm2022/lib/components/table/partials/cells/cell/cell.directive.mjs +3 -3
- package/esm2022/lib/components/table/partials/cells/cell-def/cell-def.directive.mjs +3 -3
- package/esm2022/lib/components/table/partials/cells/column-def/column-def.directive.mjs +3 -3
- package/esm2022/lib/components/table/partials/cells/footer-cell/footer-cell.directive.mjs +3 -3
- package/esm2022/lib/components/table/partials/cells/footer-cell-def/footer-cell-def.directive.mjs +3 -3
- package/esm2022/lib/components/table/partials/cells/header-cell/header-cell.directive.mjs +3 -3
- package/esm2022/lib/components/table/partials/cells/header-cell-def/header-cell-def.directive.mjs +3 -3
- package/esm2022/lib/components/table/partials/cells/text-column/text-column.component.mjs +3 -3
- package/esm2022/lib/components/table/partials/rows/footer-row/footer-row.component.mjs +3 -3
- package/esm2022/lib/components/table/partials/rows/footer-row-def/footer-row-def.directive.mjs +3 -3
- package/esm2022/lib/components/table/partials/rows/header-row/header-row.component.mjs +3 -3
- package/esm2022/lib/components/table/partials/rows/header-row-def/header-row-def.directive.mjs +3 -3
- package/esm2022/lib/components/table/partials/rows/no-data-row/no-data-row.directive.mjs +3 -3
- package/esm2022/lib/components/table/partials/rows/recycle-rows/recycle-rows.directive.mjs +3 -3
- package/esm2022/lib/components/table/partials/rows/row/row.component.mjs +3 -3
- package/esm2022/lib/components/table/partials/rows/row-def/row-def.directive.mjs +3 -3
- package/esm2022/lib/components/table/partials/table-busy/table-busy.directive.mjs +3 -3
- package/esm2022/lib/components/table/partials/table-busy-outlet/table-busy-outlet.directive.mjs +3 -3
- package/esm2022/lib/components/tabs/components/inline-tabs/inline-tabs.component.mjs +3 -3
- package/esm2022/lib/components/tabs/components/nav-tabs/nav-tabs.component.mjs +3 -3
- package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab/inline-tab.component.mjs +3 -3
- package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-body/inline-tab-body.component.mjs +3 -3
- package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-body-host/inline-tab-body-host.directive.mjs +3 -3
- package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-content/inline-tab-content.directive.mjs +3 -3
- package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-header/inline-tab-header.component.mjs +3 -3
- package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-label/inline-tab-label.directive.mjs +3 -3
- package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-label-wrapper/inline-tab-label-wrapper.directive.mjs +3 -3
- package/esm2022/lib/components/tabs/partials/nav-tabs/nav-tab-link/nav-tab-link.directive.mjs +3 -3
- package/esm2022/lib/components/tabs/partials/nav-tabs/nav-tabs-outlet/nav-tabs-outlet.component.mjs +3 -3
- package/esm2022/lib/components/tabs/utils/active-tab-underline.util.mjs +3 -3
- package/esm2022/lib/components/tabs/utils/paginated-tab-header.directive.mjs +3 -3
- package/esm2022/lib/services/swipe-handler.service.mjs +3 -3
- package/fesm2022/ethlete-cdk.mjs +2035 -718
- package/fesm2022/ethlete-cdk.mjs.map +1 -1
- package/lib/components/forms/components/select/components/combobox/combobox.imports.d.ts +5 -0
- package/lib/components/forms/components/select/components/combobox/components/combobox/combobox.component.d.ts +84 -0
- package/lib/components/forms/components/select/components/combobox/components/combobox/public-api.d.ts +1 -0
- package/lib/components/forms/components/select/components/combobox/components/index.d.ts +1 -0
- package/lib/components/forms/components/select/components/combobox/components/public-api.d.ts +1 -0
- package/lib/components/forms/components/select/components/combobox/directives/combobox/combobox.directive.d.ts +7 -0
- package/lib/components/forms/components/select/components/combobox/directives/combobox/public-api.d.ts +1 -0
- package/lib/components/forms/components/select/components/combobox/directives/public-api.d.ts +1 -0
- package/lib/components/forms/components/select/components/combobox/partials/combobox-body/combobox-body.component.d.ts +16 -0
- package/lib/components/forms/components/select/components/combobox/partials/combobox-body/public-api.d.ts +1 -0
- package/lib/components/forms/components/select/components/combobox/partials/combobox-option/combobox-option.component.d.ts +16 -0
- package/lib/components/forms/components/select/components/combobox/partials/combobox-option/index.d.ts +1 -0
- package/lib/components/forms/components/select/components/combobox/partials/combobox-option/public-api.d.ts +1 -0
- package/lib/components/forms/components/select/components/combobox/partials/index.d.ts +1 -0
- package/lib/components/forms/components/select/components/combobox/partials/public-api.d.ts +2 -0
- package/lib/components/forms/components/select/components/combobox/public-api.d.ts +3 -0
- package/lib/components/forms/components/select/components/public-api.d.ts +1 -0
- package/lib/components/forms/components/select/components/select/components/select/select.component.d.ts +8 -11
- package/lib/components/forms/components/select/components/select/directives/index.d.ts +1 -0
- package/lib/components/forms/components/select/components/select/directives/public-api.d.ts +3 -0
- package/lib/components/forms/components/select/components/select/directives/select/index.d.ts +1 -0
- package/lib/components/forms/components/select/components/select/directives/select/public-api.d.ts +1 -0
- package/lib/components/forms/components/select/components/select/directives/select/select.directive.d.ts +95 -0
- package/lib/components/forms/components/select/components/select/directives/select-body/index.d.ts +1 -0
- package/lib/components/forms/components/select/components/select/directives/select-body/public-api.d.ts +1 -0
- package/lib/components/forms/components/select/components/select/directives/select-body/select-body.directive.d.ts +14 -0
- package/lib/components/forms/components/select/components/select/directives/select-option/index.d.ts +1 -0
- package/lib/components/forms/components/select/components/select/directives/select-option/public-api.d.ts +1 -0
- package/lib/components/forms/components/select/components/select/directives/select-option/select-option.directive.d.ts +29 -0
- package/lib/components/forms/components/select/components/select/partials/public-api.d.ts +0 -1
- package/lib/components/forms/components/select/components/select/partials/select-body/select-body.component.d.ts +6 -1
- package/lib/components/forms/components/select/components/select/partials/select-option/select-option.component.d.ts +4 -1
- package/lib/components/forms/components/select/components/select/public-api.d.ts +1 -0
- package/lib/components/forms/components/select/components/select/select.imports.d.ts +2 -2
- package/lib/components/forms/components/slider/components/slider/slider.component.d.ts +1 -1
- package/lib/components/forms/directives/input/input.directive.d.ts +3 -1
- package/lib/components/forms/utils/decorated-input.base.d.ts +1 -1
- package/lib/components/forms/utils/input.base.d.ts +2 -4
- package/lib/components/scrollable/components/scrollable/scrollable.component.d.ts +13 -5
- package/package.json +5 -5
- package/esm2022/lib/components/forms/components/select/components/select/partials/tree-select-option/public-api.mjs +0 -2
- package/esm2022/lib/components/forms/components/select/components/select/partials/tree-select-option/tree-select-option.component.mjs +0 -23
- package/lib/components/forms/components/select/components/select/partials/tree-select-option/public-api.d.ts +0 -1
- package/lib/components/forms/components/select/components/select/partials/tree-select-option/tree-select-option.component.d.ts +0 -5
|
@@ -0,0 +1,449 @@
|
|
|
1
|
+
import { LiveAnnouncer } from '@angular/cdk/a11y';
|
|
2
|
+
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
3
|
+
import { A, DOWN_ARROW, END, ENTER, ESCAPE, HOME, LEFT_ARROW, PAGE_DOWN, PAGE_UP, RIGHT_ARROW, SPACE, UP_ARROW, hasModifierKey, } from '@angular/cdk/keycodes';
|
|
4
|
+
import { ContentChildren, Directive, InjectionToken, Input, inject, } from '@angular/core';
|
|
5
|
+
import { AnimatedOverlayDirective, TypedQueryList, createDestroy, createReactiveBindings, } from '@ethlete/core';
|
|
6
|
+
import { BehaviorSubject, combineLatest, firstValueFrom, map, of, startWith, switchMap, takeUntil, tap } from 'rxjs';
|
|
7
|
+
import { INPUT_TOKEN } from '../../../../../../directives';
|
|
8
|
+
import { SELECT_OPTION_TOKEN } from '../select-option';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "@ethlete/core";
|
|
11
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
12
|
+
export const SELECT_TOKEN = new InjectionToken('ET_SELECT_INPUT_TOKEN');
|
|
13
|
+
let uniqueId = 0;
|
|
14
|
+
class SelectDirective {
|
|
15
|
+
get multiple() {
|
|
16
|
+
return this._multiple$.value;
|
|
17
|
+
}
|
|
18
|
+
set multiple(value) {
|
|
19
|
+
this._multiple$.next(coerceBooleanProperty(value));
|
|
20
|
+
this._migrateSelectValue();
|
|
21
|
+
}
|
|
22
|
+
set _selectOptionsQueryList(value) {
|
|
23
|
+
this._selectOptionsQueryList$.next(value);
|
|
24
|
+
}
|
|
25
|
+
constructor() {
|
|
26
|
+
this._selectBodyConfig = null;
|
|
27
|
+
this._animatedOverlay = inject(AnimatedOverlayDirective);
|
|
28
|
+
this._destroy$ = createDestroy();
|
|
29
|
+
this._liveAnnouncer = inject(LiveAnnouncer);
|
|
30
|
+
this.input = inject(INPUT_TOKEN);
|
|
31
|
+
this._selectBodyId$ = new BehaviorSubject(null);
|
|
32
|
+
this._isOpen$ = new BehaviorSubject(false);
|
|
33
|
+
this._multiple$ = new BehaviorSubject(false);
|
|
34
|
+
this._selectOptionsQueryList$ = new BehaviorSubject(null);
|
|
35
|
+
this.selectOptions$ = this._selectOptionsQueryList$.pipe(switchMap((queryList) => queryList?.changes.pipe(startWith(queryList)) ?? of(null)), switchMap((queryList) => {
|
|
36
|
+
if (!queryList)
|
|
37
|
+
return of(null);
|
|
38
|
+
const items = queryList
|
|
39
|
+
.filter((i) => !!i)
|
|
40
|
+
.map((opt) => combineLatest([opt.isSelected$, opt.isActive$]).pipe(map(([selected, active]) => ({ opt, selected, active }))));
|
|
41
|
+
return combineLatest(items ?? of(null));
|
|
42
|
+
}));
|
|
43
|
+
this.activeOption$ = this.selectOptions$.pipe(map((options) => {
|
|
44
|
+
if (!options)
|
|
45
|
+
return null;
|
|
46
|
+
return options.find((option) => option.active) ?? null;
|
|
47
|
+
}));
|
|
48
|
+
this.selectedOptions$ = this.selectOptions$.pipe(map((options) => {
|
|
49
|
+
if (!options)
|
|
50
|
+
return null;
|
|
51
|
+
const selectedOptions = options.filter((option) => option.selected);
|
|
52
|
+
if (!selectedOptions.length)
|
|
53
|
+
return null;
|
|
54
|
+
const inputValue = this.input.value;
|
|
55
|
+
if (this.multiple && Array.isArray(inputValue)) {
|
|
56
|
+
// sort selected options by the order of the input value
|
|
57
|
+
const selectedOptionsMap = new Map(selectedOptions.map((option) => [option.opt.value, option]));
|
|
58
|
+
return inputValue
|
|
59
|
+
.map((value) => selectedOptionsMap.get(value))
|
|
60
|
+
.filter((option) => !!option);
|
|
61
|
+
}
|
|
62
|
+
return selectedOptions;
|
|
63
|
+
}));
|
|
64
|
+
this.selectedOption$ = this.selectedOptions$.pipe(map((options) => options?.[0] ?? null));
|
|
65
|
+
this.selectBodyId$ = this._selectBodyId$.asObservable();
|
|
66
|
+
this.isOpen$ = this._isOpen$.asObservable();
|
|
67
|
+
this.multiple$ = this._multiple$.asObservable();
|
|
68
|
+
this.selectCurrentValueId = `et-select-current-value-${uniqueId++}`;
|
|
69
|
+
this.ariaViewValue$ = this.selectedOptions$.pipe(switchMap((options) => {
|
|
70
|
+
if (!options?.length)
|
|
71
|
+
return of(null);
|
|
72
|
+
const viewValues = options.map((option) => option.opt.viewValue$);
|
|
73
|
+
return combineLatest(viewValues);
|
|
74
|
+
}), map((viewValues) => {
|
|
75
|
+
if (!viewValues)
|
|
76
|
+
return null;
|
|
77
|
+
return viewValues.join(', ');
|
|
78
|
+
}));
|
|
79
|
+
this.activeDescendant$ = combineLatest([this.isOpen$, this.activeOption$]).pipe(map(([isOpen, activeOption]) => {
|
|
80
|
+
if (!isOpen || !activeOption)
|
|
81
|
+
return null;
|
|
82
|
+
return activeOption.opt.id;
|
|
83
|
+
}));
|
|
84
|
+
this.owns$ = combineLatest([this.isOpen$, this.selectBodyId$]).pipe(map(([isOpen, selectBodyId]) => {
|
|
85
|
+
if (!isOpen || !selectBodyId) {
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
88
|
+
return selectBodyId;
|
|
89
|
+
}));
|
|
90
|
+
this.labelledBy$ = this.input.labelId$.pipe(map((labelId) => {
|
|
91
|
+
const ids = [labelId, this.selectCurrentValueId];
|
|
92
|
+
return ids.filter((id) => !!id).join(' ');
|
|
93
|
+
}));
|
|
94
|
+
this._bindings = createReactiveBindings({
|
|
95
|
+
attribute: 'class.et-select--is-open',
|
|
96
|
+
observable: this.isOpen$,
|
|
97
|
+
}, {
|
|
98
|
+
attribute: 'class.et-select--disabled',
|
|
99
|
+
observable: this.input.disabled$,
|
|
100
|
+
});
|
|
101
|
+
this.trackByFn = (_, item) => item.id;
|
|
102
|
+
this._animatedOverlay.placement = 'bottom';
|
|
103
|
+
}
|
|
104
|
+
ngOnInit() {
|
|
105
|
+
this._unmountSelectBodyOnDisable();
|
|
106
|
+
this._migrateSelectValue();
|
|
107
|
+
}
|
|
108
|
+
ngAfterContentInit() {
|
|
109
|
+
this._setSelectedOptionActive();
|
|
110
|
+
}
|
|
111
|
+
mountSelectBody() {
|
|
112
|
+
if (!this._selectBodyConfig)
|
|
113
|
+
return;
|
|
114
|
+
if (this._animatedOverlay.isMounted || this.input.disabled)
|
|
115
|
+
return;
|
|
116
|
+
this._setSelectedOptionActive();
|
|
117
|
+
const instance = this._animatedOverlay.mount({
|
|
118
|
+
component: this._selectBodyConfig.component,
|
|
119
|
+
mirrorWidth: true,
|
|
120
|
+
data: { _bodyTemplate: this._selectBodyConfig.template },
|
|
121
|
+
});
|
|
122
|
+
if (!instance)
|
|
123
|
+
return;
|
|
124
|
+
this._selectBodyId$.next(instance.selectBody.id);
|
|
125
|
+
this._isOpen$.next(true);
|
|
126
|
+
}
|
|
127
|
+
unmountSelectBody() {
|
|
128
|
+
if (!this._animatedOverlay.isMounted)
|
|
129
|
+
return;
|
|
130
|
+
this._animatedOverlay.unmount();
|
|
131
|
+
this._selectBodyId$.next(null);
|
|
132
|
+
this._isOpen$.next(false);
|
|
133
|
+
}
|
|
134
|
+
setValue(value) {
|
|
135
|
+
this.input._updateValue(value);
|
|
136
|
+
this.input._markAsTouched();
|
|
137
|
+
this.input._setShouldDisplayError(true);
|
|
138
|
+
}
|
|
139
|
+
handleKeyDown(event) {
|
|
140
|
+
if (this._isOpen$.value) {
|
|
141
|
+
this._handleKeyDownInOpenState(event);
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
this._handleKeyDownInClosedState(event);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
setSelectBody(config) {
|
|
148
|
+
this._selectBodyConfig = config;
|
|
149
|
+
}
|
|
150
|
+
removeOptionFromSelection(option) {
|
|
151
|
+
if (!this.multiple || !Array.isArray(this.input.value))
|
|
152
|
+
return;
|
|
153
|
+
const value = this.input.value.filter((v) => v !== option.value);
|
|
154
|
+
this.setValue(value);
|
|
155
|
+
}
|
|
156
|
+
_controlTouched() {
|
|
157
|
+
this.input._markAsTouched();
|
|
158
|
+
this.input._setShouldDisplayError(true);
|
|
159
|
+
}
|
|
160
|
+
_unmountSelectBodyOnDisable() {
|
|
161
|
+
this.input.disabled$
|
|
162
|
+
.pipe(tap((disabled) => {
|
|
163
|
+
if (!disabled)
|
|
164
|
+
return;
|
|
165
|
+
this.unmountSelectBody();
|
|
166
|
+
}), takeUntil(this._destroy$))
|
|
167
|
+
.subscribe();
|
|
168
|
+
}
|
|
169
|
+
_handleKeyDownInClosedState(event) {
|
|
170
|
+
const keyCode = event.keyCode;
|
|
171
|
+
const isArrowKey = keyCode === DOWN_ARROW || keyCode === UP_ARROW || keyCode === LEFT_ARROW || keyCode === RIGHT_ARROW;
|
|
172
|
+
const isOpenKey = keyCode === ENTER || keyCode === SPACE;
|
|
173
|
+
if ((isOpenKey && !hasModifierKey(event)) || ((this.multiple || event.altKey) && isArrowKey)) {
|
|
174
|
+
event.preventDefault();
|
|
175
|
+
this.mountSelectBody();
|
|
176
|
+
}
|
|
177
|
+
else if (!this.multiple) {
|
|
178
|
+
switch (keyCode) {
|
|
179
|
+
case DOWN_ARROW:
|
|
180
|
+
this._selectOptionByOffset(1, true);
|
|
181
|
+
break;
|
|
182
|
+
case UP_ARROW:
|
|
183
|
+
this._selectOptionByOffset(-1, true);
|
|
184
|
+
break;
|
|
185
|
+
case HOME:
|
|
186
|
+
this._selectFirstOption(true);
|
|
187
|
+
break;
|
|
188
|
+
case END:
|
|
189
|
+
this._selectLastOption(true);
|
|
190
|
+
break;
|
|
191
|
+
case PAGE_UP:
|
|
192
|
+
this._selectOptionByOffset(-10, true);
|
|
193
|
+
break;
|
|
194
|
+
case PAGE_DOWN:
|
|
195
|
+
this._selectOptionByOffset(10, true);
|
|
196
|
+
break;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
else if (this.multiple && isArrowKey) {
|
|
200
|
+
event.preventDefault();
|
|
201
|
+
this.mountSelectBody();
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
async _handleKeyDownInOpenState(event) {
|
|
205
|
+
const keyCode = event.keyCode;
|
|
206
|
+
const isArrowKey = keyCode === DOWN_ARROW || keyCode === UP_ARROW;
|
|
207
|
+
if (isArrowKey && event.altKey) {
|
|
208
|
+
event.preventDefault();
|
|
209
|
+
this.unmountSelectBody();
|
|
210
|
+
}
|
|
211
|
+
else if (keyCode === ESCAPE && !hasModifierKey(event)) {
|
|
212
|
+
event.preventDefault();
|
|
213
|
+
this.unmountSelectBody();
|
|
214
|
+
}
|
|
215
|
+
else if (keyCode === ENTER || keyCode === SPACE) {
|
|
216
|
+
if (this.multiple) {
|
|
217
|
+
this._toggleActiveOptionSelection();
|
|
218
|
+
}
|
|
219
|
+
else {
|
|
220
|
+
this._setActiveOptionSelected();
|
|
221
|
+
}
|
|
222
|
+
event.preventDefault();
|
|
223
|
+
}
|
|
224
|
+
else if (this.multiple && keyCode === A && event.ctrlKey) {
|
|
225
|
+
event.preventDefault();
|
|
226
|
+
this._toggleSelectionOfAllOptions();
|
|
227
|
+
}
|
|
228
|
+
else {
|
|
229
|
+
switch (keyCode) {
|
|
230
|
+
case DOWN_ARROW:
|
|
231
|
+
this._activateOptionByOffset(1);
|
|
232
|
+
break;
|
|
233
|
+
case UP_ARROW:
|
|
234
|
+
this._activateOptionByOffset(-1);
|
|
235
|
+
break;
|
|
236
|
+
case HOME:
|
|
237
|
+
this._activateFirstOption();
|
|
238
|
+
break;
|
|
239
|
+
case END:
|
|
240
|
+
this._activateLastOption();
|
|
241
|
+
break;
|
|
242
|
+
case PAGE_UP:
|
|
243
|
+
this._activateOptionByOffset(-10);
|
|
244
|
+
break;
|
|
245
|
+
case PAGE_DOWN:
|
|
246
|
+
this._activateOptionByOffset(10);
|
|
247
|
+
break;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
async _setActiveOption(option) {
|
|
252
|
+
const currentActiveOption = await firstValueFrom(this.activeOption$);
|
|
253
|
+
if (currentActiveOption?.opt === option)
|
|
254
|
+
return false;
|
|
255
|
+
currentActiveOption?.opt._setActive(false);
|
|
256
|
+
if (option) {
|
|
257
|
+
option._setActive(true);
|
|
258
|
+
}
|
|
259
|
+
return true;
|
|
260
|
+
}
|
|
261
|
+
async _addActiveOptionToSelection() {
|
|
262
|
+
const activeOption = await firstValueFrom(this.activeOption$);
|
|
263
|
+
if (!activeOption || activeOption.opt.disabled || activeOption.selected)
|
|
264
|
+
return;
|
|
265
|
+
if (!Array.isArray(this.input.value)) {
|
|
266
|
+
this.setValue([activeOption.opt.value]);
|
|
267
|
+
return;
|
|
268
|
+
}
|
|
269
|
+
this.setValue([...this.input.value, activeOption.opt.value]);
|
|
270
|
+
}
|
|
271
|
+
async _removeActiveOptionFromSelection() {
|
|
272
|
+
const activeOption = await firstValueFrom(this.activeOption$);
|
|
273
|
+
if (!activeOption || activeOption.opt.disabled || !activeOption.selected)
|
|
274
|
+
return;
|
|
275
|
+
if (!Array.isArray(this.input.value)) {
|
|
276
|
+
this.setValue([]);
|
|
277
|
+
return;
|
|
278
|
+
}
|
|
279
|
+
this.setValue(this.input.value.filter((value) => value !== activeOption.opt.value));
|
|
280
|
+
}
|
|
281
|
+
async _toggleSelectionOfAllOptions() {
|
|
282
|
+
const allOptions = await firstValueFrom(this.selectOptions$);
|
|
283
|
+
const hasDeselectedOption = allOptions?.some((opt) => !opt.opt.disabled && !opt.selected);
|
|
284
|
+
if (hasDeselectedOption) {
|
|
285
|
+
this._selectAllOptions();
|
|
286
|
+
}
|
|
287
|
+
else {
|
|
288
|
+
this._deselectAllOptions();
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
async _selectAllOptions() {
|
|
292
|
+
const allOptions = await firstValueFrom(this.selectOptions$);
|
|
293
|
+
if (!allOptions)
|
|
294
|
+
return;
|
|
295
|
+
const selectedOptions = allOptions.filter((opt) => !opt.opt.disabled).map((opt) => opt.opt.value);
|
|
296
|
+
this.setValue(selectedOptions);
|
|
297
|
+
}
|
|
298
|
+
async _deselectAllOptions() {
|
|
299
|
+
this.setValue([]);
|
|
300
|
+
}
|
|
301
|
+
async _toggleActiveOptionSelection() {
|
|
302
|
+
const activeOption = await firstValueFrom(this.activeOption$);
|
|
303
|
+
if (!activeOption)
|
|
304
|
+
return;
|
|
305
|
+
if (activeOption.selected) {
|
|
306
|
+
this._removeActiveOptionFromSelection();
|
|
307
|
+
}
|
|
308
|
+
else {
|
|
309
|
+
this._addActiveOptionToSelection();
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
async _setActiveOptionSelected() {
|
|
313
|
+
const activeOption = await firstValueFrom(this.activeOption$);
|
|
314
|
+
if (!activeOption || activeOption.opt.disabled)
|
|
315
|
+
return;
|
|
316
|
+
this._setSelectedOption(activeOption.opt);
|
|
317
|
+
this.unmountSelectBody();
|
|
318
|
+
}
|
|
319
|
+
async _setSelectedOptionActive() {
|
|
320
|
+
const selectedOption = await firstValueFrom(this.selectedOption$);
|
|
321
|
+
if (!selectedOption)
|
|
322
|
+
return;
|
|
323
|
+
this._setActiveOption(selectedOption.opt);
|
|
324
|
+
}
|
|
325
|
+
async _setSelectedOption(option) {
|
|
326
|
+
const selectedOption = await firstValueFrom(this.selectedOption$);
|
|
327
|
+
if (selectedOption === option)
|
|
328
|
+
return false;
|
|
329
|
+
this._setActiveOption(option);
|
|
330
|
+
this.setValue(option?.value ?? null);
|
|
331
|
+
return true;
|
|
332
|
+
}
|
|
333
|
+
async _selectFirstOption(announce) {
|
|
334
|
+
const options = await firstValueFrom(this.selectOptions$);
|
|
335
|
+
if (!options)
|
|
336
|
+
return;
|
|
337
|
+
const firstOption = options[0]?.opt;
|
|
338
|
+
if (!firstOption)
|
|
339
|
+
return;
|
|
340
|
+
if (!this._setSelectedOption(firstOption))
|
|
341
|
+
return;
|
|
342
|
+
if (announce) {
|
|
343
|
+
const text = await firstValueFrom(firstOption.viewValue$);
|
|
344
|
+
this._liveAnnouncer.announce(text, 10000);
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
async _selectLastOption(announce) {
|
|
348
|
+
const options = await firstValueFrom(this.selectOptions$);
|
|
349
|
+
if (!options)
|
|
350
|
+
return;
|
|
351
|
+
const lastOption = options[options.length - 1]?.opt;
|
|
352
|
+
if (!lastOption)
|
|
353
|
+
return;
|
|
354
|
+
if (!this._setSelectedOption(lastOption))
|
|
355
|
+
return;
|
|
356
|
+
if (announce) {
|
|
357
|
+
const text = await firstValueFrom(lastOption.viewValue$);
|
|
358
|
+
this._liveAnnouncer.announce(text, 10000);
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
async _selectOptionByOffset(offset, announce) {
|
|
362
|
+
const options = await firstValueFrom(this.selectOptions$);
|
|
363
|
+
if (!options)
|
|
364
|
+
return;
|
|
365
|
+
const selectedOption = await firstValueFrom(this.selectedOption$);
|
|
366
|
+
const selectedOptionIndex = options.findIndex((o) => o.opt === selectedOption?.opt);
|
|
367
|
+
const nextOptionIndex = selectedOptionIndex + offset;
|
|
368
|
+
const nextOption = options[nextOptionIndex];
|
|
369
|
+
if (!nextOption)
|
|
370
|
+
return;
|
|
371
|
+
if (nextOption.opt.disabled) {
|
|
372
|
+
return this._selectOptionByOffset(offset + (offset < 0 ? -1 : 1), announce);
|
|
373
|
+
}
|
|
374
|
+
if (!this._setSelectedOption(nextOption.opt))
|
|
375
|
+
return;
|
|
376
|
+
if (announce) {
|
|
377
|
+
const text = await firstValueFrom(nextOption.opt.viewValue$);
|
|
378
|
+
this._liveAnnouncer.announce(text, 10000);
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
async _activateFirstOption() {
|
|
382
|
+
const options = await firstValueFrom(this.selectOptions$);
|
|
383
|
+
if (!options)
|
|
384
|
+
return;
|
|
385
|
+
const firstOption = options[0]?.opt;
|
|
386
|
+
if (!firstOption)
|
|
387
|
+
return;
|
|
388
|
+
await this._setActiveOption(firstOption);
|
|
389
|
+
}
|
|
390
|
+
async _activateLastOption() {
|
|
391
|
+
const options = await firstValueFrom(this.selectOptions$);
|
|
392
|
+
if (!options)
|
|
393
|
+
return;
|
|
394
|
+
const lastOption = options[options.length - 1]?.opt;
|
|
395
|
+
if (!lastOption)
|
|
396
|
+
return;
|
|
397
|
+
await this._setActiveOption(lastOption);
|
|
398
|
+
}
|
|
399
|
+
async _activateOptionByOffset(offset) {
|
|
400
|
+
const options = await firstValueFrom(this.selectOptions$);
|
|
401
|
+
if (!options)
|
|
402
|
+
return;
|
|
403
|
+
const activatedOption = await firstValueFrom(this.activeOption$);
|
|
404
|
+
const activatedOptionIndex = options.findIndex((o) => o.opt === activatedOption?.opt);
|
|
405
|
+
const nextOptionIndex = activatedOptionIndex + offset;
|
|
406
|
+
const nextOption = options[nextOptionIndex];
|
|
407
|
+
if (!nextOption)
|
|
408
|
+
return;
|
|
409
|
+
await this._setActiveOption(nextOption.opt);
|
|
410
|
+
}
|
|
411
|
+
async _migrateSelectValue() {
|
|
412
|
+
if (this.multiple && !Array.isArray(this.input.value)) {
|
|
413
|
+
this.setValue([]);
|
|
414
|
+
}
|
|
415
|
+
else if (!this.multiple && Array.isArray(this.input.value)) {
|
|
416
|
+
this.setValue(null);
|
|
417
|
+
}
|
|
418
|
+
this._setActiveOption(null);
|
|
419
|
+
}
|
|
420
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: SelectDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
421
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.2", type: SelectDirective, isStandalone: true, inputs: { multiple: "multiple", emptyText: "emptyText" }, providers: [
|
|
422
|
+
{
|
|
423
|
+
provide: SELECT_TOKEN,
|
|
424
|
+
useExisting: SelectDirective,
|
|
425
|
+
},
|
|
426
|
+
], queries: [{ propertyName: "_selectOptionsQueryList", predicate: SELECT_OPTION_TOKEN, descendants: true }], hostDirectives: [{ directive: i1.AnimatedOverlayDirective }], ngImport: i0 }); }
|
|
427
|
+
}
|
|
428
|
+
export { SelectDirective };
|
|
429
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: SelectDirective, decorators: [{
|
|
430
|
+
type: Directive,
|
|
431
|
+
args: [{
|
|
432
|
+
standalone: true,
|
|
433
|
+
hostDirectives: [AnimatedOverlayDirective],
|
|
434
|
+
providers: [
|
|
435
|
+
{
|
|
436
|
+
provide: SELECT_TOKEN,
|
|
437
|
+
useExisting: SelectDirective,
|
|
438
|
+
},
|
|
439
|
+
],
|
|
440
|
+
}]
|
|
441
|
+
}], ctorParameters: function () { return []; }, propDecorators: { multiple: [{
|
|
442
|
+
type: Input
|
|
443
|
+
}], emptyText: [{
|
|
444
|
+
type: Input
|
|
445
|
+
}], _selectOptionsQueryList: [{
|
|
446
|
+
type: ContentChildren,
|
|
447
|
+
args: [SELECT_OPTION_TOKEN, { descendants: true }]
|
|
448
|
+
}] } });
|
|
449
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3NyYy9saWIvY29tcG9uZW50cy9mb3Jtcy9jb21wb25lbnRzL3NlbGVjdC9jb21wb25lbnRzL3NlbGVjdC9kaXJlY3RpdmVzL3NlbGVjdC9zZWxlY3QuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQWdCLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUUsT0FBTyxFQUNMLENBQUMsRUFDRCxVQUFVLEVBQ1YsR0FBRyxFQUNILEtBQUssRUFDTCxNQUFNLEVBQ04sSUFBSSxFQUNKLFVBQVUsRUFDVixTQUFTLEVBQ1QsT0FBTyxFQUNQLFdBQVcsRUFDWCxLQUFLLEVBQ0wsUUFBUSxFQUNSLGNBQWMsR0FDZixNQUFNLHVCQUF1QixDQUFDO0FBRS9CLE9BQU8sRUFFTCxlQUFlLEVBQ2YsU0FBUyxFQUNULGNBQWMsRUFDZCxLQUFLLEVBSUwsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFFTCx3QkFBd0IsRUFDeEIsY0FBYyxFQUNkLGFBQWEsRUFDYixzQkFBc0IsR0FDdkIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsbUJBQW1CLEVBQXlCLE1BQU0sa0JBQWtCLENBQUM7OztBQUU5RSw4REFBOEQ7QUFDOUQsTUFBTSxDQUFDLE1BQU0sWUFB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O1lBQzVELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDckI7UUFFRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQzs4R0FqaEJVLGVBQWU7a0dBQWYsZUFBZSwyRkFQZjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxZQUFZO2dCQUNyQixXQUFXLEVBQUUsZUFBZTthQUM3QjtTQUNGLGtFQTJCZ0IsbUJBQW1COztTQXpCekIsZUFBZTsyRkFBZixlQUFlO2tCQVYzQixTQUFTO21CQUFDO29CQUNULFVBQVUsRUFBRSxJQUFJO29CQUNoQixjQUFjLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQztvQkFDMUMsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxZQUFZOzRCQUNyQixXQUFXLGlCQUFpQjt5QkFDN0I7cUJBQ0Y7aUJBQ0Y7MEVBYUssUUFBUTtzQkFEWCxLQUFLO2dCQVlOLFNBQVM7c0JBRFIsS0FBSztnQkFJTSx1QkFBdUI7c0JBRGxDLGVBQWU7dUJBQUMsbUJBQW1CLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGl2ZUFubm91bmNlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7XG4gIEEsXG4gIERPV05fQVJST1csXG4gIEVORCxcbiAgRU5URVIsXG4gIEVTQ0FQRSxcbiAgSE9NRSxcbiAgTEVGVF9BUlJPVyxcbiAgUEFHRV9ET1dOLFxuICBQQUdFX1VQLFxuICBSSUdIVF9BUlJPVyxcbiAgU1BBQ0UsXG4gIFVQX0FSUk9XLFxuICBoYXNNb2RpZmllcktleSxcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IENvbXBvbmVudFR5cGUgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRGlyZWN0aXZlLFxuICBJbmplY3Rpb25Ub2tlbixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgVGVtcGxhdGVSZWYsXG4gIFRyYWNrQnlGdW5jdGlvbixcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFuaW1hdGVkT3ZlcmxheUNvbXBvbmVudEJhc2UsXG4gIEFuaW1hdGVkT3ZlcmxheURpcmVjdGl2ZSxcbiAgVHlwZWRRdWVyeUxpc3QsXG4gIGNyZWF0ZURlc3Ryb3ksXG4gIGNyZWF0ZVJlYWN0aXZlQmluZGluZ3MsXG59IGZyb20gJ0BldGhsZXRlL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBmaXJzdFZhbHVlRnJvbSwgbWFwLCBvZiwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJTlBVVF9UT0tFTiB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgU2VsZWN0Qm9keURpcmVjdGl2ZSB9IGZyb20gJy4uL3NlbGVjdC1ib2R5JztcbmltcG9ydCB7IFNFTEVDVF9PUFRJT05fVE9LRU4sIFNlbGVjdE9wdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4uL3NlbGVjdC1vcHRpb24nO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IGNvbnN0IFNFTEVDVF9UT0tFTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxTZWxlY3REaXJlY3RpdmU8YW55Pj4oJ0VUX1NFTEVDVF9JTlBVVF9UT0tFTicpO1xuXG50eXBlIFNlbGVjdERpcmVjdGl2ZUJvZHlDb21wb25lbnRCYXNlID0gQW5pbWF0ZWRPdmVybGF5Q29tcG9uZW50QmFzZSAmIHtcbiAgX2JvZHlUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj4gfCBudWxsO1xuICBzZWxlY3RCb2R5OiBTZWxlY3RCb2R5RGlyZWN0aXZlO1xufTtcblxubGV0IHVuaXF1ZUlkID0gMDtcblxuaW50ZXJmYWNlIFNlbGVjdEJvZHlDb25maWc8VCBleHRlbmRzIFNlbGVjdERpcmVjdGl2ZUJvZHlDb21wb25lbnRCYXNlPiB7XG4gIGNvbXBvbmVudDogQ29tcG9uZW50VHlwZTxUPjtcbiAgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xufVxuXG5ARGlyZWN0aXZlKHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaG9zdERpcmVjdGl2ZXM6IFtBbmltYXRlZE92ZXJsYXlEaXJlY3RpdmVdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBTRUxFQ1RfVE9LRU4sXG4gICAgICB1c2VFeGlzdGluZzogU2VsZWN0RGlyZWN0aXZlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFNlbGVjdERpcmVjdGl2ZTxUIGV4dGVuZHMgU2VsZWN0RGlyZWN0aXZlQm9keUNvbXBvbmVudEJhc2U+IGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0IHtcbiAgcHJpdmF0ZSBfc2VsZWN0Qm9keUNvbmZpZzogU2VsZWN0Qm9keUNvbmZpZzxUPiB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2FuaW1hdGVkT3ZlcmxheSA9IGluamVjdDxBbmltYXRlZE92ZXJsYXlEaXJlY3RpdmU8VD4+KEFuaW1hdGVkT3ZlcmxheURpcmVjdGl2ZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kkID0gY3JlYXRlRGVzdHJveSgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9saXZlQW5ub3VuY2VyID0gaW5qZWN0KExpdmVBbm5vdW5jZXIpO1xuICByZWFkb25seSBpbnB1dCA9IGluamVjdChJTlBVVF9UT0tFTik7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfc2VsZWN0Qm9keUlkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2lzT3BlbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICBASW5wdXQoKVxuICBnZXQgbXVsdGlwbGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX211bHRpcGxlJC52YWx1ZTtcbiAgfVxuICBzZXQgbXVsdGlwbGUodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgIHRoaXMuX211bHRpcGxlJC5uZXh0KGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSkpO1xuXG4gICAgdGhpcy5fbWlncmF0ZVNlbGVjdFZhbHVlKCk7XG4gIH1cbiAgcHJpdmF0ZSBfbXVsdGlwbGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgQElucHV0KClcbiAgZW1wdHlUZXh0Pzogc3RyaW5nO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oU0VMRUNUX09QVElPTl9UT0tFTiwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICBwcml2YXRlIHNldCBfc2VsZWN0T3B0aW9uc1F1ZXJ5TGlzdCh2YWx1ZTogVHlwZWRRdWVyeUxpc3Q8U2VsZWN0T3B0aW9uRGlyZWN0aXZlPikge1xuICAgIHRoaXMuX3NlbGVjdE9wdGlvbnNRdWVyeUxpc3QkLm5leHQodmFsdWUpO1xuICB9XG4gIHByaXZhdGUgcmVhZG9ubHkgX3NlbGVjdE9wdGlvbnNRdWVyeUxpc3QkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUeXBlZFF1ZXJ5TGlzdDxTZWxlY3RPcHRpb25EaXJlY3RpdmU+IHwgbnVsbD4obnVsbCk7XG5cbiAgcmVhZG9ubHkgc2VsZWN0T3B0aW9ucyQgPSB0aGlzLl9zZWxlY3RPcHRpb25zUXVlcnlMaXN0JC5waXBlKFxuICAgIHN3aXRjaE1hcCgocXVlcnlMaXN0KSA9PiBxdWVyeUxpc3Q/LmNoYW5nZXMucGlwZShzdGFydFdpdGgocXVlcnlMaXN0KSkgPz8gb2YobnVsbCkpLFxuICAgIHN3aXRjaE1hcCgocXVlcnlMaXN0KSA9PiB7XG4gICAgICBpZiAoIXF1ZXJ5TGlzdCkgcmV0dXJuIG9mKG51bGwpO1xuXG4gICAgICBjb25zdCBpdGVtcyA9IHF1ZXJ5TGlzdFxuICAgICAgICAuZmlsdGVyKChpKTogaSBpcyBTZWxlY3RPcHRpb25EaXJlY3RpdmUgPT4gISFpKVxuICAgICAgICAubWFwKChvcHQpID0+XG4gICAgICAgICAgY29tYmluZUxhdGVzdChbb3B0LmlzU2VsZWN0ZWQkLCBvcHQuaXNBY3RpdmUkXSkucGlwZShcbiAgICAgICAgICAgIG1hcCgoW3NlbGVjdGVkLCBhY3RpdmVdKSA9PiAoeyBvcHQsIHNlbGVjdGVkLCBhY3RpdmUgfSkpLFxuICAgICAgICAgICksXG4gICAgICAgICk7XG5cbiAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KGl0ZW1zID8/IG9mKG51bGwpKTtcbiAgICB9KSxcbiAgKTtcblxuICByZWFkb25seSBhY3RpdmVPcHRpb24kID0gdGhpcy5zZWxlY3RPcHRpb25zJC5waXBlKFxuICAgIG1hcCgob3B0aW9ucykgPT4ge1xuICAgICAgaWYgKCFvcHRpb25zKSByZXR1cm4gbnVsbDtcblxuICAgICAgcmV0dXJuIG9wdGlvbnMuZmluZCgob3B0aW9uKSA9PiBvcHRpb24uYWN0aXZlKSA/PyBudWxsO1xuICAgIH0pLFxuICApO1xuXG4gIHJlYWRvbmx5IHNlbGVjdGVkT3B0aW9ucyQgPSB0aGlzLnNlbGVjdE9wdGlvbnMkLnBpcGUoXG4gICAgbWFwKChvcHRpb25zKSA9PiB7XG4gICAgICBpZiAoIW9wdGlvbnMpIHJldHVybiBudWxsO1xuXG4gICAgICBjb25zdCBzZWxlY3RlZE9wdGlvbnMgPSBvcHRpb25zLmZpbHRlcigob3B0aW9uKSA9PiBvcHRpb24uc2VsZWN0ZWQpO1xuXG4gICAgICBpZiAoIXNlbGVjdGVkT3B0aW9ucy5sZW5ndGgpIHJldHVybiBudWxsO1xuXG4gICAgICBjb25zdCBpbnB1dFZhbHVlID0gdGhpcy5pbnB1dC52YWx1ZTtcblxuICAgICAgaWYgKHRoaXMubXVsdGlwbGUgJiYgQXJyYXkuaXNBcnJheShpbnB1dFZhbHVlKSkge1xuICAgICAgICAvLyBzb3J0IHNlbGVjdGVkIG9wdGlvbnMgYnkgdGhlIG9yZGVyIG9mIHRoZSBpbnB1dCB2YWx1ZVxuICAgICAgICBjb25zdCBzZWxlY3RlZE9wdGlvbnNNYXAgPSBuZXcgTWFwKHNlbGVjdGVkT3B0aW9ucy5tYXAoKG9wdGlvbikgPT4gW29wdGlvbi5vcHQudmFsdWUsIG9wdGlvbl0pKTtcbiAgICAgICAgcmV0dXJuIGlucHV0VmFsdWVcbiAgICAgICAgICAubWFwKCh2YWx1ZSkgPT4gc2VsZWN0ZWRPcHRpb25zTWFwLmdldCh2YWx1ZSkpXG4gICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgb3B0aW9uLFxuICAgICAgICAgICAgKTogb3B0aW9uIGlzIHtcbiAgICAgICAgICAgICAgb3B0OiBTZWxlY3RPcHRpb25EaXJlY3RpdmU7XG4gICAgICAgICAgICAgIHNlbGVjdGVkOiBib29sZWFuO1xuICAgICAgICAgICAgICBhY3RpdmU6IGJvb2xlYW47XG4gICAgICAgICAgICB9ID0+ICEhb3B0aW9uLFxuICAgICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBzZWxlY3RlZE9wdGlvbnM7XG4gICAgfSksXG4gICk7XG5cbiAgcmVhZG9ubHkgc2VsZWN0ZWRPcHRpb24kID0gdGhpcy5zZWxlY3RlZE9wdGlvbnMkLnBpcGUobWFwKChvcHRpb25zKSA9PiBvcHRpb25zPy5bMF0gPz8gbnVsbCkpO1xuXG4gIHJlYWRvbmx5IHNlbGVjdEJvZHlJZCQgPSB0aGlzLl9zZWxlY3RCb2R5SWQkLmFzT2JzZXJ2YWJsZSgpO1xuICByZWFkb25seSBpc09wZW4kID0gdGhpcy5faXNPcGVuJC5hc09ic2VydmFibGUoKTtcbiAgcmVhZG9ubHkgbXVsdGlwbGUkID0gdGhpcy5fbXVsdGlwbGUkLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIHJlYWRvbmx5IHNlbGVjdEN1cnJlbnRWYWx1ZUlkID0gYGV0LXNlbGVjdC1jdXJyZW50LXZhbHVlLSR7dW5pcXVlSWQrK31gO1xuXG4gIHJlYWRvbmx5IGFyaWFWaWV3VmFsdWUkID0gdGhpcy5zZWxlY3RlZE9wdGlvbnMkLnBpcGUoXG4gICAgc3dpdGNoTWFwKChvcHRpb25zKSA9PiB7XG4gICAgICBpZiAoIW9wdGlvbnM/Lmxlbmd0aCkgcmV0dXJuIG9mKG51bGwpO1xuXG4gICAgICBjb25zdCB2aWV3VmFsdWVzID0gb3B0aW9ucy5tYXAoKG9wdGlvbikgPT4gb3B0aW9uLm9wdC52aWV3VmFsdWUkKTtcblxuICAgICAgcmV0dXJuIGNvbWJpbmVMYXRlc3Qodmlld1ZhbHVlcyk7XG4gICAgfSksXG4gICAgbWFwKCh2aWV3VmFsdWVzKSA9PiB7XG4gICAgICBpZiAoIXZpZXdWYWx1ZXMpIHJldHVybiBudWxsO1xuXG4gICAgICByZXR1cm4gdmlld1ZhbHVlcy5qb2luKCcsICcpO1xuICAgIH0pLFxuICApO1xuXG4gIHJlYWRvbmx5IGFjdGl2ZURlc2NlbmRhbnQkID0gY29tYmluZUxhdGVzdChbdGhpcy5pc09wZW4kLCB0aGlzLmFjdGl2ZU9wdGlvbiRdKS5waXBlKFxuICAgIG1hcCgoW2lzT3BlbiwgYWN0aXZlT3B0aW9uXSkgPT4ge1xuICAgICAgaWYgKCFpc09wZW4gfHwgIWFjdGl2ZU9wdGlvbikgcmV0dXJuIG51bGw7XG5cbiAgICAgIHJldHVybiBhY3RpdmVPcHRpb24ub3B0LmlkO1xuICAgIH0pLFxuICApO1xuXG4gIHJlYWRvbmx5IG93bnMkID0gY29tYmluZUxhdGVzdChbdGhpcy5pc09wZW4kLCB0aGlzLnNlbGVjdEJvZHlJZCRdKS5waXBlKFxuICAgIG1hcCgoW2lzT3Blbiwgc2VsZWN0Qm9keUlkXSkgPT4ge1xuICAgICAgaWYgKCFpc09wZW4gfHwgIXNlbGVjdEJvZHlJZCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHNlbGVjdEJvZHlJZDtcbiAgICB9KSxcbiAgKTtcblxuICByZWFkb25seSBsYWJlbGxlZEJ5JCA9IHRoaXMuaW5wdXQubGFiZWxJZCQucGlwZShcbiAgICBtYXAoKGxhYmVsSWQpID0+IHtcbiAgICAgIGNvbnN0IGlkcyA9IFtsYWJlbElkLCB0aGlzLnNlbGVjdEN1cnJlbnRWYWx1ZUlkXTtcblxuICAgICAgcmV0dXJuIGlkcy5maWx0ZXIoKGlkKSA9PiAhIWlkKS5qb2luKCcgJyk7XG4gICAgfSksXG4gICk7XG5cbiAgcmVhZG9ubHkgX2JpbmRpbmdzID0gY3JlYXRlUmVhY3RpdmVCaW5kaW5ncyhcbiAgICB7XG4gICAgICBhdHRyaWJ1dGU6ICdjbGFzcy5ldC1zZWxlY3QtLWlzLW9wZW4nLFxuICAgICAgb2JzZXJ2YWJsZTogdGhpcy5pc09wZW4kLFxuICAgIH0sXG4gICAge1xuICAgICAgYXR0cmlidXRlOiAnY2xhc3MuZXQtc2VsZWN0LS1kaXNhYmxlZCcsXG4gICAgICBvYnNlcnZhYmxlOiB0aGlzLmlucHV0LmRpc2FibGVkJCxcbiAgICB9LFxuICApO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuX2FuaW1hdGVkT3ZlcmxheS5wbGFjZW1lbnQgPSAnYm90dG9tJztcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX3VubW91bnRTZWxlY3RCb2R5T25EaXNhYmxlKCk7XG4gICAgdGhpcy5fbWlncmF0ZVNlbGVjdFZhbHVlKCk7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fc2V0U2VsZWN0ZWRPcHRpb25BY3RpdmUoKTtcbiAgfVxuXG4gIHRyYWNrQnlGbjogVHJhY2tCeUZ1bmN0aW9uPFNlbGVjdE9wdGlvbkRpcmVjdGl2ZT4gPSAoXywgaXRlbSkgPT4gaXRlbS5pZDtcblxuICBtb3VudFNlbGVjdEJvZHkoKSB7XG4gICAgaWYgKCF0aGlzLl9zZWxlY3RCb2R5Q29uZmlnKSByZXR1cm47XG5cbiAgICBpZiAodGhpcy5fYW5pbWF0ZWRPdmVybGF5LmlzTW91bnRlZCB8fCB0aGlzLmlucHV0LmRpc2FibGVkKSByZXR1cm47XG5cbiAgICB0aGlzLl9zZXRTZWxlY3RlZE9wdGlvbkFjdGl2ZSgpO1xuXG4gICAgY29uc3QgaW5zdGFuY2UgPSB0aGlzLl9hbmltYXRlZE92ZXJsYXkubW91bnQoe1xuICAgICAgY29tcG9uZW50OiB0aGlzLl9zZWxlY3RCb2R5Q29uZmlnLmNvbXBvbmVudCxcbiAgICAgIG1pcnJvcldpZHRoOiB0cnVlLFxuICAgICAgZGF0YTogeyBfYm9keVRlbXBsYXRlOiB0aGlzLl9zZWxlY3RCb2R5Q29uZmlnLnRlbXBsYXRlIH0gYXMgUGFydGlhbDxUPixcbiAgICB9KTtcblxuICAgIGlmICghaW5zdGFuY2UpIHJldHVybjtcblxuICAgIHRoaXMuX3NlbGVjdEJvZHlJZCQubmV4dChpbnN0YW5jZS5zZWxlY3RCb2R5LmlkKTtcbiAgICB0aGlzLl9pc09wZW4kLm5leHQodHJ1ZSk7XG4gIH1cblxuICB1bm1vdW50U2VsZWN0Qm9keSgpIHtcbiAgICBpZiAoIXRoaXMuX2FuaW1hdGVkT3ZlcmxheS5pc01vdW50ZWQpIHJldHVybjtcblxuICAgIHRoaXMuX2FuaW1hdGVkT3ZlcmxheS51bm1vdW50KCk7XG5cbiAgICB0aGlzLl9zZWxlY3RCb2R5SWQkLm5leHQobnVsbCk7XG4gICAgdGhpcy5faXNPcGVuJC5uZXh0KGZhbHNlKTtcbiAgfVxuXG4gIHNldFZhbHVlKHZhbHVlOiB1bmtub3duKSB7XG4gICAgdGhpcy5pbnB1dC5fdXBkYXRlVmFsdWUodmFsdWUpO1xuXG4gICAgdGhpcy5pbnB1dC5fbWFya0FzVG91Y2hlZCgpO1xuICAgIHRoaXMuaW5wdXQuX3NldFNob3VsZERpc3BsYXlFcnJvcih0cnVlKTtcbiAgfVxuXG4gIGhhbmRsZUtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAodGhpcy5faXNPcGVuJC52YWx1ZSkge1xuICAgICAgdGhpcy5faGFuZGxlS2V5RG93bkluT3BlblN0YXRlKGV2ZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5faGFuZGxlS2V5RG93bkluQ2xvc2VkU3RhdGUoZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIHNldFNlbGVjdEJvZHkoY29uZmlnOiBTZWxlY3RCb2R5Q29uZmlnPFQ+KSB7XG4gICAgdGhpcy5fc2VsZWN0Qm9keUNvbmZpZyA9IGNvbmZpZztcbiAgfVxuXG4gIHJlbW92ZU9wdGlvbkZyb21TZWxlY3Rpb24ob3B0aW9uOiBTZWxlY3RPcHRpb25EaXJlY3RpdmUpIHtcbiAgICBpZiAoIXRoaXMubXVsdGlwbGUgfHwgIUFycmF5LmlzQXJyYXkodGhpcy5pbnB1dC52YWx1ZSkpIHJldHVybjtcblxuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5pbnB1dC52YWx1ZS5maWx0ZXIoKHYpID0+IHYgIT09IG9wdGlvbi52YWx1ZSk7XG5cbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgfVxuXG4gIF9jb250cm9sVG91Y2hlZCgpIHtcbiAgICB0aGlzLmlucHV0Ll9tYXJrQXNUb3VjaGVkKCk7XG4gICAgdGhpcy5pbnB1dC5fc2V0U2hvdWxkRGlzcGxheUVycm9yKHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdW5tb3VudFNlbGVjdEJvZHlPbkRpc2FibGUoKSB7XG4gICAgdGhpcy5pbnB1dC5kaXNhYmxlZCRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKGRpc2FibGVkKSA9PiB7XG4gICAgICAgICAgaWYgKCFkaXNhYmxlZCkgcmV0dXJuO1xuXG4gICAgICAgICAgdGhpcy51bm1vdW50U2VsZWN0Qm9keSgpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZUtleURvd25JbkNsb3NlZFN0YXRlKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgY29uc3Qga2V5Q29kZSA9IGV2ZW50LmtleUNvZGU7XG4gICAgY29uc3QgaXNBcnJvd0tleSA9XG4gICAgICBrZXlDb2RlID09PSBET1dOX0FSUk9XIHx8IGtleUNvZGUgPT09IFVQX0FSUk9XIHx8IGtleUNvZGUgPT09IExFRlRfQVJST1cgfHwga2V5Q29kZSA9PT0gUklHSFRfQVJST1c7XG5cbiAgICBjb25zdCBpc09wZW5LZXkgPSBrZXlDb2RlID09PSBFTlRFUiB8fCBrZXlDb2RlID09PSBTUEFDRTtcblxuICAgIGlmICgoaXNPcGVuS2V5ICYmICFoYXNNb2RpZmllcktleShldmVudCkpIHx8ICgodGhpcy5tdWx0aXBsZSB8fCBldmVudC5hbHRLZXkpICYmIGlzQXJyb3dLZXkpKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5tb3VudFNlbGVjdEJvZHkoKTtcbiAgICB9IGVsc2UgaWYgKCF0aGlzLm11bHRpcGxlKSB7XG4gICAgICBzd2l0Y2ggKGtleUNvZGUpIHtcbiAgICAgICAgY2FzZSBET1dOX0FSUk9XOlxuICAgICAgICAgIHRoaXMuX3NlbGVjdE9wdGlvbkJ5T2Zmc2V0KDEsIHRydWUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFVQX0FSUk9XOlxuICAgICAgICAgIHRoaXMuX3NlbGVjdE9wdGlvbkJ5T2Zmc2V0KC0xLCB0cnVlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBIT01FOlxuICAgICAgICAgIHRoaXMuX3NlbGVjdEZpcnN0T3B0aW9uKHRydWUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEVORDpcbiAgICAgICAgICB0aGlzLl9zZWxlY3RMYXN0T3B0aW9uKHRydWUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFBBR0VfVVA6XG4gICAgICAgICAgdGhpcy5fc2VsZWN0T3B0aW9uQnlPZmZzZXQoLTEwLCB0cnVlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBQQUdFX0RPV046XG4gICAgICAgICAgdGhpcy5fc2VsZWN0T3B0aW9uQnlPZmZzZXQoMTAsIHRydWUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5tdWx0aXBsZSAmJiBpc0Fycm93S2V5KSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5tb3VudFNlbGVjdEJvZHkoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9oYW5kbGVLZXlEb3duSW5PcGVuU3RhdGUoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBjb25zdCBrZXlDb2RlID0gZXZlbnQua2V5Q29kZTtcbiAgICBjb25zdCBpc0Fycm93S2V5ID0ga2V5Q29kZSA9PT0gRE9XTl9BUlJPVyB8fCBrZXlDb2RlID09PSBVUF9BUlJPVztcblxuICAgIGlmIChpc0Fycm93S2V5ICYmIGV2ZW50LmFsdEtleSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMudW5tb3VudFNlbGVjdEJvZHkoKTtcbiAgICB9IGVsc2UgaWYgKGtleUNvZGUgPT09IEVTQ0FQRSAmJiAhaGFzTW9kaWZpZXJLZXkoZXZlbnQpKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy51bm1vdW50U2VsZWN0Qm9keSgpO1xuICAgIH0gZWxzZSBpZiAoa2V5Q29kZSA9PT0gRU5URVIgfHwga2V5Q29kZSA9PT0gU1BBQ0UpIHtcbiAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgIHRoaXMuX3RvZ2dsZUFjdGl2ZU9wdGlvblNlbGVjdGlvbigpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fc2V0QWN0aXZlT3B0aW9uU2VsZWN0ZWQoKTtcbiAgICAgIH1cblxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubXVsdGlwbGUgJiYga2V5Q29kZSA9PT0gQSAmJiBldmVudC5jdHJsS2V5KSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5fdG9nZ2xlU2VsZWN0aW9uT2ZBbGxPcHRpb25zKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN3aXRjaCAoa2V5Q29kZSkge1xuICAgICAgICBjYXNlIERPV05fQVJST1c6XG4gICAgICAgICAgdGhpcy5fYWN0aXZhdGVPcHRpb25CeU9mZnNldCgxKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBVUF9BUlJPVzpcbiAgICAgICAgICB0aGlzLl9hY3RpdmF0ZU9wdGlvbkJ5T2Zmc2V0KC0xKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBIT01FOlxuICAgICAgICAgIHRoaXMuX2FjdGl2YXRlRmlyc3RPcHRpb24oKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBFTkQ6XG4gICAgICAgICAgdGhpcy5fYWN0aXZhdGVMYXN0T3B0aW9uKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgUEFHRV9VUDpcbiAgICAgICAgICB0aGlzLl9hY3RpdmF0ZU9wdGlvbkJ5T2Zmc2V0KC0xMCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgUEFHRV9ET1dOOlxuICAgICAgICAgIHRoaXMuX2FjdGl2YXRlT3B0aW9uQnlPZmZzZXQoMTApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX3NldEFjdGl2ZU9wdGlvbihvcHRpb246IFNlbGVjdE9wdGlvbkRpcmVjdGl2ZSB8IG51bGwpIHtcbiAgICBjb25zdCBjdXJyZW50QWN0aXZlT3B0aW9uID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5hY3RpdmVPcHRpb24kKTtcblxuICAgIGlmIChjdXJyZW50QWN0aXZlT3B0aW9uPy5vcHQgPT09IG9wdGlvbikgcmV0dXJuIGZhbHNlO1xuXG4gICAgY3VycmVudEFjdGl2ZU9wdGlvbj8ub3B0Ll9zZXRBY3RpdmUoZmFsc2UpO1xuXG4gICAgaWYgKG9wdGlvbikge1xuICAgICAgb3B0aW9uLl9zZXRBY3RpdmUodHJ1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9hZGRBY3RpdmVPcHRpb25Ub1NlbGVjdGlvbigpIHtcbiAgICBjb25zdCBhY3RpdmVPcHRpb24gPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmFjdGl2ZU9wdGlvbiQpO1xuXG4gICAgaWYgKCFhY3RpdmVPcHRpb24gfHwgYWN0aXZlT3B0aW9uLm9wdC5kaXNhYmxlZCB8fCBhY3RpdmVPcHRpb24uc2VsZWN0ZWQpIHJldHVybjtcblxuICAgIGlmICghQXJyYXkuaXNBcnJheSh0aGlzLmlucHV0LnZhbHVlKSkge1xuICAgICAgdGhpcy5zZXRWYWx1ZShbYWN0aXZlT3B0aW9uLm9wdC52YWx1ZV0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2V0VmFsdWUoWy4uLnRoaXMuaW5wdXQudmFsdWUsIGFjdGl2ZU9wdGlvbi5vcHQudmFsdWVdKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX3JlbW92ZUFjdGl2ZU9wdGlvbkZyb21TZWxlY3Rpb24oKSB7XG4gICAgY29uc3QgYWN0aXZlT3B0aW9uID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5hY3RpdmVPcHRpb24kKTtcblxuICAgIGlmICghYWN0aXZlT3B0aW9uIHx8IGFjdGl2ZU9wdGlvbi5vcHQuZGlzYWJsZWQgfHwgIWFjdGl2ZU9wdGlvbi5zZWxlY3RlZCkgcmV0dXJuO1xuXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHRoaXMuaW5wdXQudmFsdWUpKSB7XG4gICAgICB0aGlzLnNldFZhbHVlKFtdKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNldFZhbHVlKHRoaXMuaW5wdXQudmFsdWUuZmlsdGVyKCh2YWx1ZSkgPT4gdmFsdWUgIT09IGFjdGl2ZU9wdGlvbi5vcHQudmFsdWUpKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX3RvZ2dsZVNlbGVjdGlvbk9mQWxsT3B0aW9ucygpIHtcbiAgICBjb25zdCBhbGxPcHRpb25zID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5zZWxlY3RPcHRpb25zJCk7XG5cbiAgICBjb25zdCBoYXNEZXNlbGVjdGVkT3B0aW9uID0gYWxsT3B0aW9ucz8uc29tZSgob3B0KSA9PiAhb3B0Lm9wdC5kaXNhYmxlZCAmJiAhb3B0LnNlbGVjdGVkKTtcblxuICAgIGlmIChoYXNEZXNlbGVjdGVkT3B0aW9uKSB7XG4gICAgICB0aGlzLl9zZWxlY3RBbGxPcHRpb25zKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2Rlc2VsZWN0QWxsT3B0aW9ucygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX3NlbGVjdEFsbE9wdGlvbnMoKSB7XG4gICAgY29uc3QgYWxsT3B0aW9ucyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuc2VsZWN0T3B0aW9ucyQpO1xuXG4gICAgaWYgKCFhbGxPcHRpb25zKSByZXR1cm47XG5cbiAgICBjb25zdCBzZWxlY3RlZE9wdGlvbnMgPSBhbGxPcHRpb25zLmZpbHRlcigob3B0KSA9PiAhb3B0Lm9wdC5kaXNhYmxlZCkubWFwKChvcHQpID0+IG9wdC5vcHQudmFsdWUpO1xuXG4gICAgdGhpcy5zZXRWYWx1ZShzZWxlY3RlZE9wdGlvbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfZGVzZWxlY3RBbGxPcHRpb25zKCkge1xuICAgIHRoaXMuc2V0VmFsdWUoW10pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfdG9nZ2xlQWN0aXZlT3B0aW9uU2VsZWN0aW9uKCkge1xuICAgIGNvbnN0IGFjdGl2ZU9wdGlvbiA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuYWN0aXZlT3B0aW9uJCk7XG5cbiAgICBpZiAoIWFjdGl2ZU9wdGlvbikgcmV0dXJuO1xuXG4gICAgaWYgKGFjdGl2ZU9wdGlvbi5zZWxlY3RlZCkge1xuICAgICAgdGhpcy5fcmVtb3ZlQWN0aXZlT3B0aW9uRnJvbVNlbGVjdGlvbigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9hZGRBY3RpdmVPcHRpb25Ub1NlbGVjdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX3NldEFjdGl2ZU9wdGlvblNlbGVjdGVkKCkge1xuICAgIGNvbnN0IGFjdGl2ZU9wdGlvbiA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuYWN0aXZlT3B0aW9uJCk7XG5cbiAgICBpZiAoIWFjdGl2ZU9wdGlvbiB8fCBhY3RpdmVPcHRpb24ub3B0LmRpc2FibGVkKSByZXR1cm47XG5cbiAgICB0aGlzLl9zZXRTZWxlY3RlZE9wdGlvbihhY3RpdmVPcHRpb24ub3B0KTtcblxuICAgIHRoaXMudW5tb3VudFNlbGVjdEJvZHkoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX3NldFNlbGVjdGVkT3B0aW9uQWN0aXZlKCkge1xuICAgIGNvbnN0IHNlbGVjdGVkT3B0aW9uID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5zZWxlY3RlZE9wdGlvbiQpO1xuXG4gICAgaWYgKCFzZWxlY3RlZE9wdGlvbikgcmV0dXJuO1xuXG4gICAgdGhpcy5fc2V0QWN0aXZlT3B0aW9uKHNlbGVjdGVkT3B0aW9uLm9wdCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9zZXRTZWxlY3RlZE9wdGlvbihvcHRpb246IFNlbGVjdE9wdGlvbkRpcmVjdGl2ZSB8IG51bGwpIHtcbiAgICBjb25zdCBzZWxlY3RlZE9wdGlvbiA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuc2VsZWN0ZWRPcHRpb24kKTtcblxuICAgIGlmIChzZWxlY3RlZE9wdGlvbiA9PT0gb3B0aW9uKSByZXR1cm4gZmFsc2U7XG5cbiAgICB0aGlzLl9zZXRBY3RpdmVPcHRpb24ob3B0aW9uKTtcblxuICAgIHRoaXMuc2V0VmFsdWUob3B0aW9uPy52YWx1ZSA/PyBudWxsKTtcblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfc2VsZWN0Rmlyc3RPcHRpb24oYW5ub3VuY2U6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBvcHRpb25zID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5zZWxlY3RPcHRpb25zJCk7XG5cbiAgICBpZiAoIW9wdGlvbnMpIHJldHVybjtcblxuICAgIGNvbnN0IGZpcnN0T3B0aW9uID0gb3B0aW9uc1swXT8ub3B0O1xuXG4gICAgaWYgKCFmaXJzdE9wdGlvbikgcmV0dXJuO1xuXG4gICAgaWYgKCF0aGlzLl9zZXRTZWxlY3RlZE9wdGlvbihmaXJzdE9wdGlvbikpIHJldHVybjtcblxuICAgIGlmIChhbm5vdW5jZSkge1xuICAgICAgY29uc3QgdGV4dCA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKGZpcnN0T3B0aW9uLnZpZXdWYWx1ZSQpO1xuICAgICAgdGhpcy5fbGl2ZUFubm91bmNlci5hbm5vdW5jZSh0ZXh0LCAxMDAwMCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfc2VsZWN0TGFzdE9wdGlvbihhbm5vdW5jZTogYm9vbGVhbikge1xuICAgIGNvbnN0IG9wdGlvbnMgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnNlbGVjdE9wdGlvbnMkKTtcblxuICAgIGlmICghb3B0aW9ucykgcmV0dXJuO1xuXG4gICAgY29uc3QgbGFzdE9wdGlvbiA9IG9wdGlvbnNbb3B0aW9ucy5sZW5ndGggLSAxXT8ub3B0O1xuXG4gICAgaWYgKCFsYXN0T3B0aW9uKSByZXR1cm47XG5cbiAgICBpZiAoIXRoaXMuX3NldFNlbGVjdGVkT3B0aW9uKGxhc3RPcHRpb24pKSByZXR1cm47XG5cbiAgICBpZiAoYW5ub3VuY2UpIHtcbiAgICAgIGNvbnN0IHRleHQgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbShsYXN0T3B0aW9uLnZpZXdWYWx1ZSQpO1xuICAgICAgdGhpcy5fbGl2ZUFubm91bmNlci5hbm5vdW5jZSh0ZXh0LCAxMDAwMCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfc2VsZWN0T3B0aW9uQnlPZmZzZXQob2Zmc2V0OiBudW1iZXIsIGFubm91bmNlOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuc2VsZWN0T3B0aW9ucyQpO1xuXG4gICAgaWYgKCFvcHRpb25zKSByZXR1cm47XG5cbiAgICBjb25zdCBzZWxlY3RlZE9wdGlvbiA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuc2VsZWN0ZWRPcHRpb24kKTtcbiAgICBjb25zdCBzZWxlY3RlZE9wdGlvbkluZGV4ID0gb3B0aW9ucy5maW5kSW5kZXgoKG8pID0+IG8ub3B0ID09PSBzZWxlY3RlZE9wdGlvbj8ub3B0KTtcbiAgICBjb25zdCBuZXh0T3B0aW9uSW5kZXggPSBzZWxlY3RlZE9wdGlvbkluZGV4ICsgb2Zmc2V0O1xuICAgIGNvbnN0IG5leHRPcHRpb24gPSBvcHRpb25zW25leHRPcHRpb25JbmRleF07XG5cbiAgICBpZiAoIW5leHRPcHRpb24pIHJldHVybjtcblxuICAgIGlmIChuZXh0T3B0aW9uLm9wdC5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdE9wdGlvbkJ5T2Zmc2V0KG9mZnNldCArIChvZmZzZXQgPCAwID8gLTEgOiAxKSwgYW5ub3VuY2UpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5fc2V0U2VsZWN0ZWRPcHRpb24obmV4dE9wdGlvbi5vcHQpKSByZXR1cm47XG5cbiAgICBpZiAoYW5ub3VuY2UpIHtcbiAgICAgIGNvbnN0IHRleHQgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbShuZXh0T3B0aW9uLm9wdC52aWV3VmFsdWUkKTtcbiAgICAgIHRoaXMuX2xpdmVBbm5vdW5jZXIuYW5ub3VuY2UodGV4dCwgMTAwMDApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX2FjdGl2YXRlRmlyc3RPcHRpb24oKSB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuc2VsZWN0T3B0aW9ucyQpO1xuXG4gICAgaWYgKCFvcHRpb25zKSByZXR1cm47XG5cbiAgICBjb25zdCBmaXJzdE9wdGlvbiA9IG9wdGlvbnNbMF0/Lm9wdDtcblxuICAgIGlmICghZmlyc3RPcHRpb24pIHJldHVybjtcblxuICAgIGF3YWl0IHRoaXMuX3NldEFjdGl2ZU9wdGlvbihmaXJzdE9wdGlvbik7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9hY3RpdmF0ZUxhc3RPcHRpb24oKSB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuc2VsZWN0T3B0aW9ucyQpO1xuXG4gICAgaWYgKCFvcHRpb25zKSByZXR1cm47XG5cbiAgICBjb25zdCBsYXN0T3B0aW9uID0gb3B0aW9uc1tvcHRpb25zLmxlbmd0aCAtIDFdPy5vcHQ7XG5cbiAgICBpZiAoIWxhc3RPcHRpb24pIHJldHVybjtcblxuICAgIGF3YWl0IHRoaXMuX3NldEFjdGl2ZU9wdGlvbihsYXN0T3B0aW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX2FjdGl2YXRlT3B0aW9uQnlPZmZzZXQob2Zmc2V0OiBudW1iZXIpIHtcbiAgICBjb25zdCBvcHRpb25zID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5zZWxlY3RPcHRpb25zJCk7XG5cbiAgICBpZiAoIW9wdGlvbnMpIHJldHVybjtcblxuICAgIGNvbnN0IGFjdGl2YXRlZE9wdGlvbiA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuYWN0aXZlT3B0aW9uJCk7XG4gICAgY29uc3QgYWN0aXZhdGVkT3B0aW9uSW5kZXggPSBvcHRpb25zLmZpbmRJbmRleCgobykgPT4gby5vcHQgPT09IGFjdGl2YXRlZE9wdGlvbj8ub3B0KTtcbiAgICBjb25zdCBuZXh0T3B0aW9uSW5kZXggPSBhY3RpdmF0ZWRPcHRpb25JbmRleCArIG9mZnNldDtcbiAgICBjb25zdCBuZXh0T3B0aW9uID0gb3B0aW9uc1tuZXh0T3B0aW9uSW5kZXhdO1xuXG4gICAgaWYgKCFuZXh0T3B0aW9uKSByZXR1cm47XG5cbiAgICBhd2FpdCB0aGlzLl9zZXRBY3RpdmVPcHRpb24obmV4dE9wdGlvbi5vcHQpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfbWlncmF0ZVNlbGVjdFZhbHVlKCkge1xuICAgIGlmICh0aGlzLm11bHRpcGxlICYmICFBcnJheS5pc0FycmF5KHRoaXMuaW5wdXQudmFsdWUpKSB7XG4gICAgICB0aGlzLnNldFZhbHVlKFtdKTtcbiAgICB9IGVsc2UgaWYgKCF0aGlzLm11bHRpcGxlICYmIEFycmF5LmlzQXJyYXkodGhpcy5pbnB1dC52YWx1ZSkpIHtcbiAgICAgIHRoaXMuc2V0VmFsdWUobnVsbCk7XG4gICAgfVxuXG4gICAgdGhpcy5fc2V0QWN0aXZlT3B0aW9uKG51bGwpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './public-api';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL2NvbXBvbmVudHMvZm9ybXMvY29tcG9uZW50cy9zZWxlY3QvY29tcG9uZW50cy9zZWxlY3QvZGlyZWN0aXZlcy9zZWxlY3QtYm9keS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './select-body.directive';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3NyYy9saWIvY29tcG9uZW50cy9mb3Jtcy9jb21wb25lbnRzL3NlbGVjdC9jb21wb25lbnRzL3NlbGVjdC9kaXJlY3RpdmVzL3NlbGVjdC1ib2R5L3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx5QkFBeUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc2VsZWN0LWJvZHkuZGlyZWN0aXZlJztcbiJdfQ==
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { Directive, InjectionToken, inject } from '@angular/core';
|
|
2
|
+
import { ClickOutsideDirective, createDestroy, createReactiveBindings } from '@ethlete/core';
|
|
3
|
+
import { map, takeUntil, tap } from 'rxjs';
|
|
4
|
+
import { SELECT_TOKEN } from '../select';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@ethlete/core";
|
|
7
|
+
export const SELECT_BODY_TOKEN = new InjectionToken('ET_SELECT_BODY_TOKEN');
|
|
8
|
+
let uniqueId = 0;
|
|
9
|
+
class SelectBodyDirective {
|
|
10
|
+
constructor() {
|
|
11
|
+
this._destroy$ = createDestroy();
|
|
12
|
+
this._select = inject(SELECT_TOKEN);
|
|
13
|
+
this._clickOutside = inject(ClickOutsideDirective);
|
|
14
|
+
this.id = `et-select-body-${uniqueId++}`;
|
|
15
|
+
this._bindings = createReactiveBindings({
|
|
16
|
+
attribute: 'aria-multiselectable',
|
|
17
|
+
observable: this._select.multiple$.pipe(map((multiple) => ({
|
|
18
|
+
render: true,
|
|
19
|
+
value: multiple,
|
|
20
|
+
}))),
|
|
21
|
+
}, {
|
|
22
|
+
attribute: 'aria-labelledby',
|
|
23
|
+
observable: this._select.input.labelId$.pipe(map((labelId) => ({
|
|
24
|
+
render: !!labelId,
|
|
25
|
+
value: labelId,
|
|
26
|
+
}))),
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
ngOnInit() {
|
|
30
|
+
this._clickOutside.etClickOutside
|
|
31
|
+
.pipe(takeUntil(this._destroy$), tap(() => this._select.unmountSelectBody()))
|
|
32
|
+
.subscribe();
|
|
33
|
+
}
|
|
34
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: SelectBodyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
35
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.2", type: SelectBodyDirective, isStandalone: true, host: { attributes: { "tabindex": "-1", "role": "listbox" }, properties: { "attr.id": "id" } }, providers: [
|
|
36
|
+
{
|
|
37
|
+
provide: SELECT_BODY_TOKEN,
|
|
38
|
+
useExisting: SelectBodyDirective,
|
|
39
|
+
},
|
|
40
|
+
], hostDirectives: [{ directive: i1.ClickOutsideDirective }], ngImport: i0 }); }
|
|
41
|
+
}
|
|
42
|
+
export { SelectBodyDirective };
|
|
43
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: SelectBodyDirective, decorators: [{
|
|
44
|
+
type: Directive,
|
|
45
|
+
args: [{
|
|
46
|
+
standalone: true,
|
|
47
|
+
providers: [
|
|
48
|
+
{
|
|
49
|
+
provide: SELECT_BODY_TOKEN,
|
|
50
|
+
useExisting: SelectBodyDirective,
|
|
51
|
+
},
|
|
52
|
+
],
|
|
53
|
+
host: {
|
|
54
|
+
'[attr.id]': 'id',
|
|
55
|
+
tabindex: '-1',
|
|
56
|
+
role: 'listbox',
|
|
57
|
+
},
|
|
58
|
+
hostDirectives: [ClickOutsideDirective],
|
|
59
|
+
}]
|
|
60
|
+
}] });
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWJvZHkuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm1zL2NvbXBvbmVudHMvc2VsZWN0L2NvbXBvbmVudHMvc2VsZWN0L2RpcmVjdGl2ZXMvc2VsZWN0LWJvZHkvc2VsZWN0LWJvZHkuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsYUFBYSxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdGLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFDOzs7QUFFekMsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxjQUFjLENBQXNCLHNCQUFzQixDQUFDLENBQUM7QUFFakcsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDO0FBRWpCLE1BZWEsbUJBQW1CO0lBZmhDO1FBZ0JtQixjQUFTLEdBQUcsYUFBYSxFQUFFLENBQUM7UUFFNUIsWUFBTyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUMvQixrQkFBYSxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBRXRELE9BQUUsR0FBRyxrQkFBa0IsUUFBUSxFQUFFLEVBQUUsQ0FBQztRQUVwQyxjQUFTLEdBQUcsc0JBQXNCLENBQ3pDO1lBQ0UsU0FBUyxFQUFFLHNCQUFzQjtZQUNqQyxVQUFVLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUNyQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ2pCLE1BQU0sRUFBRSxJQUFJO2dCQUNaLEtBQUssRUFBRSxRQUFRO2FBQ2hCLENBQUMsQ0FBQyxDQUNKO1NBQ0YsRUFDRDtZQUNFLFNBQVMsRUFBRSxpQkFBaUI7WUFDNUIsVUFBVSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQzFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDaEIsTUFBTSxFQUFFLENBQUMsQ0FBQyxPQUFPO2dCQUNqQixLQUFLLEVBQUUsT0FBaUI7YUFDekIsQ0FBQyxDQUFDLENBQ0o7U0FDRixDQUNGLENBQUM7S0FVSDtJQVJDLFFBQVE7UUFDTixJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWM7YUFDOUIsSUFBSSxDQUNILFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQ3pCLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FDNUM7YUFDQSxTQUFTLEVBQUUsQ0FBQztJQUNqQixDQUFDOzhHQXBDVSxtQkFBbUI7a0dBQW5CLG1CQUFtQixpSUFibkI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsbUJBQW1CO2FBQ2pDO1NBQ0Y7O1NBUVUsbUJBQW1COzJGQUFuQixtQkFBbUI7a0JBZi9CLFNBQVM7bUJBQUM7b0JBQ1QsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLHFCQUFxQjt5QkFDakM7cUJBQ0Y7b0JBQ0QsSUFBSSxFQUFFO3dCQUNKLFdBQVcsRUFBRSxJQUFJO3dCQUNqQixRQUFRLEVBQUUsSUFBSTt3QkFDZCxJQUFJLEVBQUUsU0FBUztxQkFDaEI7b0JBQ0QsY0FBYyxFQUFFLENBQUMscUJBQXFCLENBQUM7aUJBQ3hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbmplY3Rpb25Ub2tlbiwgT25Jbml0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENsaWNrT3V0c2lkZURpcmVjdGl2ZSwgY3JlYXRlRGVzdHJveSwgY3JlYXRlUmVhY3RpdmVCaW5kaW5ncyB9IGZyb20gJ0BldGhsZXRlL2NvcmUnO1xuaW1wb3J0IHsgbWFwLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU0VMRUNUX1RPS0VOIH0gZnJvbSAnLi4vc2VsZWN0JztcblxuZXhwb3J0IGNvbnN0IFNFTEVDVF9CT0RZX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPFNlbGVjdEJvZHlEaXJlY3RpdmU+KCdFVF9TRUxFQ1RfQk9EWV9UT0tFTicpO1xuXG5sZXQgdW5pcXVlSWQgPSAwO1xuXG5ARGlyZWN0aXZlKHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogU0VMRUNUX0JPRFlfVE9LRU4sXG4gICAgICB1c2VFeGlzdGluZzogU2VsZWN0Qm9keURpcmVjdGl2ZSxcbiAgICB9LFxuICBdLFxuICBob3N0OiB7XG4gICAgJ1thdHRyLmlkXSc6ICdpZCcsXG4gICAgdGFiaW5kZXg6ICctMScsXG4gICAgcm9sZTogJ2xpc3Rib3gnLFxuICB9LFxuICBob3N0RGlyZWN0aXZlczogW0NsaWNrT3V0c2lkZURpcmVjdGl2ZV0sXG59KVxuZXhwb3J0IGNsYXNzIFNlbGVjdEJvZHlEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95JCA9IGNyZWF0ZURlc3Ryb3koKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9zZWxlY3QgPSBpbmplY3QoU0VMRUNUX1RPS0VOKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfY2xpY2tPdXRzaWRlID0gaW5qZWN0KENsaWNrT3V0c2lkZURpcmVjdGl2ZSk7XG5cbiAgcmVhZG9ubHkgaWQgPSBgZXQtc2VsZWN0LWJvZHktJHt1bmlxdWVJZCsrfWA7XG5cbiAgcmVhZG9ubHkgX2JpbmRpbmdzID0gY3JlYXRlUmVhY3RpdmVCaW5kaW5ncyhcbiAgICB7XG4gICAgICBhdHRyaWJ1dGU6ICdhcmlhLW11bHRpc2VsZWN0YWJsZScsXG4gICAgICBvYnNlcnZhYmxlOiB0aGlzLl9zZWxlY3QubXVsdGlwbGUkLnBpcGUoXG4gICAgICAgIG1hcCgobXVsdGlwbGUpID0+ICh7XG4gICAgICAgICAgcmVuZGVyOiB0cnVlLFxuICAgICAgICAgIHZhbHVlOiBtdWx0aXBsZSxcbiAgICAgICAgfSkpLFxuICAgICAgKSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGF0dHJpYnV0ZTogJ2FyaWEtbGFiZWxsZWRieScsXG4gICAgICBvYnNlcnZhYmxlOiB0aGlzLl9zZWxlY3QuaW5wdXQubGFiZWxJZCQucGlwZShcbiAgICAgICAgbWFwKChsYWJlbElkKSA9PiAoe1xuICAgICAgICAgIHJlbmRlcjogISFsYWJlbElkLFxuICAgICAgICAgIHZhbHVlOiBsYWJlbElkIGFzIHN0cmluZyxcbiAgICAgICAgfSkpLFxuICAgICAgKSxcbiAgICB9LFxuICApO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX2NsaWNrT3V0c2lkZS5ldENsaWNrT3V0c2lkZVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLl9zZWxlY3QudW5tb3VudFNlbGVjdEJvZHkoKSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './public-api';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL2NvbXBvbmVudHMvZm9ybXMvY29tcG9uZW50cy9zZWxlY3QvY29tcG9uZW50cy9zZWxlY3QvZGlyZWN0aXZlcy9zZWxlY3Qtb3B0aW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './select-option.directive';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3NyYy9saWIvY29tcG9uZW50cy9mb3Jtcy9jb21wb25lbnRzL3NlbGVjdC9jb21wb25lbnRzL3NlbGVjdC9kaXJlY3RpdmVzL3NlbGVjdC1vcHRpb24vcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDJCQUEyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zZWxlY3Qtb3B0aW9uLmRpcmVjdGl2ZSc7XG4iXX0=
|