@ethlete/cdk 2.6.2 → 2.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/esm2022/lib/components/accordion/components/accordion/accordion.component.mjs +13 -25
- package/esm2022/lib/components/accordion/components/accordion-group/accordion-group.component.mjs +9 -16
- package/esm2022/lib/components/accordion/partials/accordion-hint/accordion-hint.directive.mjs +5 -6
- package/esm2022/lib/components/accordion/partials/accordion-hint-wrapper/accordion-hint-wrapper.directive.mjs +5 -6
- package/esm2022/lib/components/accordion/partials/accordion-label/accordion-label.directive.mjs +5 -6
- package/esm2022/lib/components/accordion/partials/accordion-label-wrapper/accordion-label-wrapper.directive.mjs +5 -6
- package/esm2022/lib/components/bracket/components/bracket/bracket.component.mjs +5 -6
- package/esm2022/lib/components/bracket/directives/bracket-match/bracket-match.directive.mjs +5 -6
- package/esm2022/lib/components/bracket/directives/bracket-round/bracket-round.directive.mjs +5 -6
- package/esm2022/lib/components/bracket/partials/bracket-match/bracket-match.component.mjs +5 -6
- package/esm2022/lib/components/bracket/partials/bracket-round-header/bracket-round-header.component.mjs +5 -6
- package/esm2022/lib/components/button/components/button/button.component.mjs +5 -6
- package/esm2022/lib/components/button/components/query-button/query-button.component.mjs +5 -6
- package/esm2022/lib/components/button/directives/button/button.directive.mjs +8 -10
- package/esm2022/lib/components/button/directives/query-button/query-button.directive.mjs +5 -6
- package/esm2022/lib/components/forms/components/checkbox/components/checkbox/checkbox.component.mjs +5 -6
- package/esm2022/lib/components/forms/components/checkbox/components/checkbox-field/checkbox-field.component.mjs +5 -6
- package/esm2022/lib/components/forms/components/checkbox/components/checkbox-group/checkbox-group.component.mjs +5 -6
- package/esm2022/lib/components/forms/components/checkbox/directives/checkbox/checkbox.directive.mjs +5 -6
- package/esm2022/lib/components/forms/components/checkbox/directives/checkbox-field/checkbox-field.directive.mjs +5 -6
- package/esm2022/lib/components/forms/components/checkbox/directives/checkbox-group/checkbox-group.directive.mjs +5 -6
- package/esm2022/lib/components/forms/components/checkbox/directives/checkbox-group-control/checkbox-group-control.directive.mjs +5 -6
- package/esm2022/lib/components/forms/components/error/components/error/error.component.mjs +5 -6
- package/esm2022/lib/components/forms/components/input/components/email-input/email-input.component.mjs +5 -6
- package/esm2022/lib/components/forms/components/input/components/input-field/input-field.component.mjs +5 -6
- package/esm2022/lib/components/forms/components/input/components/number-input/number-input.component.mjs +5 -6
- package/esm2022/lib/components/forms/components/input/components/password-input/password-input.component.mjs +5 -6
- package/esm2022/lib/components/forms/components/input/components/search-input/search-input.component.mjs +5 -6
- package/esm2022/lib/components/forms/components/input/components/text-input/text-input.component.mjs +5 -6
- package/esm2022/lib/components/forms/components/input/components/textarea-input/textarea-input.component.mjs +12 -24
- package/esm2022/lib/components/forms/components/input/directives/autosize-textarea/autosize-textarea.directive.mjs +5 -6
- package/esm2022/lib/components/forms/components/input/directives/email-input/email-input.directive.mjs +5 -6
- package/esm2022/lib/components/forms/components/input/directives/number-input/number-input.directive.mjs +5 -6
- package/esm2022/lib/components/forms/components/input/directives/password-input/password-input.directive.mjs +5 -6
- package/esm2022/lib/components/forms/components/input/directives/search-input/search-input.directive.mjs +5 -6
- package/esm2022/lib/components/forms/components/input/directives/text-input/text-input.directive.mjs +5 -6
- package/esm2022/lib/components/forms/components/input/directives/textarea-input/textarea-input.directive.mjs +5 -6
- package/esm2022/lib/components/forms/components/input/partials/password-input-toggle/password-input-toggle.component.mjs +5 -6
- package/esm2022/lib/components/forms/components/input/partials/search-input-clear/search-input-clear.component.mjs +5 -6
- package/esm2022/lib/components/forms/components/label/components/label/label.component.mjs +5 -6
- package/esm2022/lib/components/forms/components/label/directives/label-suffix/label-suffix.directive.mjs +9 -16
- package/esm2022/lib/components/forms/components/radio/components/radio/radio.component.mjs +5 -6
- package/esm2022/lib/components/forms/components/radio/components/radio-field/radio-field.component.mjs +5 -6
- package/esm2022/lib/components/forms/components/radio/components/radio-group/radio-group.component.mjs +5 -6
- package/esm2022/lib/components/forms/components/radio/directives/radio/radio.directive.mjs +7 -9
- package/esm2022/lib/components/forms/components/radio/directives/radio-field/radio-field.directive.mjs +5 -6
- package/esm2022/lib/components/forms/components/radio/directives/radio-group/radio-group.directive.mjs +5 -6
- package/esm2022/lib/components/forms/components/segmented-button/components/segmented-button/segmented-button.component.mjs +5 -6
- package/esm2022/lib/components/forms/components/segmented-button/components/segmented-button-field/segmented-button-field.component.mjs +5 -6
- package/esm2022/lib/components/forms/components/segmented-button/components/segmented-button-group/segmented-button-group.component.mjs +5 -6
- package/esm2022/lib/components/forms/components/segmented-button/directives/segmented-button/segmented-button.directive.mjs +7 -9
- package/esm2022/lib/components/forms/components/segmented-button/directives/segmented-button-field/segmented-button-field.directive.mjs +5 -6
- package/esm2022/lib/components/forms/components/segmented-button/directives/segmented-button-group/segmented-button-group.directive.mjs +5 -6
- package/esm2022/lib/components/forms/components/select/components/combobox/components/combobox/combobox.component.mjs +10 -12
- package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox/combobox.directive.mjs +5 -6
- package/esm2022/lib/components/forms/components/select/components/combobox/partials/combobox-body/combobox-body.component.mjs +5 -6
- package/esm2022/lib/components/forms/components/select/components/combobox/partials/combobox-option/combobox-option.component.mjs +5 -6
- package/esm2022/lib/components/forms/components/select/components/native-select/components/native-select/native-select.component.mjs +5 -6
- package/esm2022/lib/components/forms/components/select/components/native-select/directives/native-select-input/native-select-input.directive.mjs +5 -6
- package/esm2022/lib/components/forms/components/select/components/native-select/directives/native-select-option/native-select-option.directive.mjs +12 -24
- package/esm2022/lib/components/forms/components/select/components/native-select/partials/native-select-option/native-select-option.component.mjs +5 -6
- package/esm2022/lib/components/forms/components/select/components/select/components/select/select.component.mjs +5 -6
- package/esm2022/lib/components/forms/components/select/components/select/directives/select/select.directive.mjs +7 -9
- package/esm2022/lib/components/forms/components/select/components/select/directives/select-body/select-body.directive.mjs +5 -6
- package/esm2022/lib/components/forms/components/select/components/select/directives/select-option/select-option.directive.mjs +7 -9
- package/esm2022/lib/components/forms/components/select/components/select/partials/select-body/select-body.component.mjs +5 -6
- package/esm2022/lib/components/forms/components/select/components/select/partials/select-option/select-option.component.mjs +5 -6
- package/esm2022/lib/components/forms/components/select/components/select-field/select-field.component.mjs +5 -6
- package/esm2022/lib/components/forms/components/select/directives/select-field/select-field.directive.mjs +5 -6
- package/esm2022/lib/components/forms/components/slide-toggle/components/slide-toggle/slide-toggle.component.mjs +5 -6
- package/esm2022/lib/components/forms/components/slide-toggle/components/slide-toggle-field/slide-toggle-field.component.mjs +5 -6
- package/esm2022/lib/components/forms/components/slide-toggle/directives/slide-toggle/slide-toggle.directive.mjs +5 -6
- package/esm2022/lib/components/forms/components/slider/components/slider/slider.component.mjs +12 -14
- package/esm2022/lib/components/forms/components/slider/components/slider-field/slider-field.component.mjs +5 -6
- package/esm2022/lib/components/forms/directives/dynamic-form-field/dynamic-form-field.directive.mjs +7 -9
- package/esm2022/lib/components/forms/directives/dynamic-form-group/dynamic-form-group.directive.mjs +7 -9
- package/esm2022/lib/components/forms/directives/if-input-empty/if-input-empty.directive.mjs +5 -6
- package/esm2022/lib/components/forms/directives/if-input-filled/if-input-filled.directive.mjs +5 -6
- package/esm2022/lib/components/forms/directives/input/input.directive.mjs +5 -6
- package/esm2022/lib/components/forms/directives/input-prefix/input-prefix.directive.mjs +5 -6
- package/esm2022/lib/components/forms/directives/input-suffix/input-suffix.directive.mjs +5 -6
- package/esm2022/lib/components/forms/directives/native-input-ref/native-input-ref.directive.mjs +5 -6
- package/esm2022/lib/components/forms/directives/static-form-field/static-form-field.directive.mjs +5 -6
- package/esm2022/lib/components/forms/directives/static-form-group/static-form-group.directive.mjs +5 -6
- package/esm2022/lib/components/forms/directives/writeable-input/writeable-input.directive.mjs +5 -6
- package/esm2022/lib/components/forms/services/default-validator-errors.service.mjs +5 -6
- package/esm2022/lib/components/forms/services/form-field-state.service.mjs +5 -6
- package/esm2022/lib/components/forms/services/form-group-state.service.mjs +5 -6
- package/esm2022/lib/components/forms/services/input-state.service.mjs +5 -6
- package/esm2022/lib/components/forms/utils/decorated-form-field.base.mjs +5 -6
- package/esm2022/lib/components/forms/utils/decorated-input.base.mjs +5 -6
- package/esm2022/lib/components/forms/utils/input.base.mjs +5 -6
- package/esm2022/lib/components/icons/chevron-icon/chevron-icon.component.mjs +5 -6
- package/esm2022/lib/components/masonry/components/masonry/masonry.component.mjs +9 -11
- package/esm2022/lib/components/masonry/partials/masonry-item/masonry-item.component.mjs +5 -6
- package/esm2022/lib/components/overlay/components/bottom-sheet/components/bottom-sheet-container/bottom-sheet-container.component.mjs +5 -6
- package/esm2022/lib/components/overlay/components/bottom-sheet/partials/bottom-sheet-container-base/bottom-sheet-container-base.component.mjs +5 -6
- package/esm2022/lib/components/overlay/components/bottom-sheet/partials/bottom-sheet-drag-handle/bottom-sheet-drag-handle.component.mjs +5 -6
- package/esm2022/lib/components/overlay/components/bottom-sheet/partials/bottom-sheet-title/bottom-sheet-title.directive.mjs +5 -6
- package/esm2022/lib/components/overlay/components/bottom-sheet/services/bottom-sheet-base.service.mjs +5 -6
- package/esm2022/lib/components/overlay/components/bottom-sheet/services/bottom-sheet-swipe-handler.service.mjs +5 -6
- package/esm2022/lib/components/overlay/components/bottom-sheet/services/bottom-sheet.service.mjs +5 -6
- package/esm2022/lib/components/overlay/components/dialog/components/dialog-container/dialog-container.component.mjs +5 -6
- package/esm2022/lib/components/overlay/components/dialog/partials/dialog-close/dialog-close.directive.mjs +5 -6
- package/esm2022/lib/components/overlay/components/dialog/partials/dialog-container-base/dialog-container-base.component.mjs +5 -6
- package/esm2022/lib/components/overlay/components/dialog/partials/dialog-title/dialog-title.directive.mjs +5 -6
- package/esm2022/lib/components/overlay/components/dialog/services/dialog-base.service.mjs +5 -6
- package/esm2022/lib/components/overlay/components/dialog/services/dialog.service.mjs +5 -6
- package/esm2022/lib/components/overlay/components/toggletip/components/toggletip/toggletip.component.mjs +5 -6
- package/esm2022/lib/components/overlay/components/toggletip/directives/toggletip/toggletip.directive.mjs +7 -9
- package/esm2022/lib/components/overlay/components/tooltip/components/tooltip/tooltip.component.mjs +5 -6
- package/esm2022/lib/components/overlay/components/tooltip/directives/tooltip/tooltip.directive.mjs +5 -6
- package/esm2022/lib/components/overlay/services/dynamic-overlay.service.mjs +11 -14
- package/esm2022/lib/components/pagination/components/pagination/pagination.component.mjs +10 -11
- package/esm2022/lib/components/pagination/partials/pagination-link/pagination-link.directive.mjs +5 -6
- package/esm2022/lib/components/pagination/services/pagination-head.service.mjs +5 -6
- package/esm2022/lib/components/picture/picture-data.directive.mjs +9 -16
- package/esm2022/lib/components/picture/picture.component.mjs +5 -6
- package/esm2022/lib/components/progress-spinner/progress-spinner.component.mjs +14 -26
- package/esm2022/lib/components/scrollable/components/scrollable/scrollable.component.mjs +163 -93
- package/esm2022/lib/components/scrollable/types/scrollable.types.mjs +1 -1
- package/esm2022/lib/components/skeleton/components/skeleton/skeleton.component.mjs +9 -16
- package/esm2022/lib/components/skeleton/partials/skeleton-item/skeleton-item.component.mjs +5 -6
- package/esm2022/lib/components/sort/components/sort-header/sort-header.component.mjs +25 -51
- package/esm2022/lib/components/sort/partials/sort/sort.directive.mjs +19 -38
- package/esm2022/lib/components/sort/services/sort-header-intl.mjs +5 -6
- package/esm2022/lib/components/table/components/table/table.component.mjs +8 -10
- package/esm2022/lib/components/table/partials/cells/cell/cell.directive.mjs +5 -6
- package/esm2022/lib/components/table/partials/cells/cell-def/cell-def.directive.mjs +5 -6
- package/esm2022/lib/components/table/partials/cells/column-def/column-def.directive.mjs +5 -6
- package/esm2022/lib/components/table/partials/cells/footer-cell/footer-cell.directive.mjs +5 -6
- package/esm2022/lib/components/table/partials/cells/footer-cell-def/footer-cell-def.directive.mjs +5 -6
- package/esm2022/lib/components/table/partials/cells/header-cell/header-cell.directive.mjs +5 -6
- package/esm2022/lib/components/table/partials/cells/header-cell-def/header-cell-def.directive.mjs +5 -6
- package/esm2022/lib/components/table/partials/cells/text-column/text-column.component.mjs +5 -6
- package/esm2022/lib/components/table/partials/rows/footer-row/footer-row.component.mjs +5 -6
- package/esm2022/lib/components/table/partials/rows/footer-row-def/footer-row-def.directive.mjs +5 -6
- package/esm2022/lib/components/table/partials/rows/header-row/header-row.component.mjs +5 -6
- package/esm2022/lib/components/table/partials/rows/header-row-def/header-row-def.directive.mjs +5 -6
- package/esm2022/lib/components/table/partials/rows/no-data-row/no-data-row.directive.mjs +5 -6
- package/esm2022/lib/components/table/partials/rows/recycle-rows/recycle-rows.directive.mjs +5 -6
- package/esm2022/lib/components/table/partials/rows/row/row.component.mjs +5 -6
- package/esm2022/lib/components/table/partials/rows/row-def/row-def.directive.mjs +5 -6
- package/esm2022/lib/components/table/partials/table-busy/table-busy.directive.mjs +9 -10
- package/esm2022/lib/components/table/partials/table-busy-outlet/table-busy-outlet.directive.mjs +10 -11
- package/esm2022/lib/components/tabs/components/inline-tabs/inline-tabs.component.mjs +42 -72
- package/esm2022/lib/components/tabs/components/nav-tabs/nav-tabs.component.mjs +11 -20
- package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab/inline-tab.component.mjs +12 -24
- package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-body/inline-tab-body.component.mjs +16 -19
- package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-body-host/inline-tab-body-host.directive.mjs +5 -6
- package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-content/inline-tab-content.directive.mjs +9 -10
- package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-header/inline-tab-header.component.mjs +7 -17
- package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-label/inline-tab-label.directive.mjs +5 -6
- package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-label-wrapper/inline-tab-label-wrapper.directive.mjs +12 -19
- package/esm2022/lib/components/tabs/partials/nav-tabs/nav-tab-link/nav-tab-link.directive.mjs +25 -45
- package/esm2022/lib/components/tabs/partials/nav-tabs/nav-tabs-outlet/nav-tabs-outlet.component.mjs +5 -6
- package/esm2022/lib/components/tabs/utils/active-tab-underline.util.mjs +7 -9
- package/esm2022/lib/components/tabs/utils/paginated-tab-header.directive.mjs +26 -47
- package/esm2022/lib/services/swipe-handler.service.mjs +5 -6
- package/fesm2022/ethlete-cdk.mjs +847 -957
- package/fesm2022/ethlete-cdk.mjs.map +1 -1
- package/lib/components/accordion/components/accordion/accordion.component.d.ts +5 -8
- package/lib/components/accordion/components/accordion-group/accordion-group.component.d.ts +3 -5
- package/lib/components/accordion/partials/accordion-hint/accordion-hint.directive.d.ts +1 -1
- package/lib/components/accordion/partials/accordion-hint-wrapper/accordion-hint-wrapper.directive.d.ts +1 -1
- package/lib/components/accordion/partials/accordion-label/accordion-label.directive.d.ts +1 -1
- package/lib/components/accordion/partials/accordion-label-wrapper/accordion-label-wrapper.directive.d.ts +1 -1
- package/lib/components/bracket/components/bracket/bracket.component.d.ts +1 -1
- package/lib/components/bracket/directives/bracket-match/bracket-match.directive.d.ts +1 -1
- package/lib/components/bracket/directives/bracket-round/bracket-round.directive.d.ts +1 -1
- package/lib/components/bracket/partials/bracket-match/bracket-match.component.d.ts +1 -1
- package/lib/components/bracket/partials/bracket-round-header/bracket-round-header.component.d.ts +1 -1
- package/lib/components/button/components/button/button.component.d.ts +1 -1
- package/lib/components/button/components/query-button/query-button.component.d.ts +1 -1
- package/lib/components/button/directives/button/button.directive.d.ts +3 -4
- package/lib/components/button/directives/query-button/query-button.directive.d.ts +1 -1
- package/lib/components/forms/components/checkbox/components/checkbox/checkbox.component.d.ts +1 -1
- package/lib/components/forms/components/checkbox/components/checkbox-field/checkbox-field.component.d.ts +1 -1
- package/lib/components/forms/components/checkbox/components/checkbox-group/checkbox-group.component.d.ts +1 -1
- package/lib/components/forms/components/checkbox/directives/checkbox/checkbox.directive.d.ts +1 -1
- package/lib/components/forms/components/checkbox/directives/checkbox-field/checkbox-field.directive.d.ts +1 -1
- package/lib/components/forms/components/checkbox/directives/checkbox-group/checkbox-group.directive.d.ts +1 -1
- package/lib/components/forms/components/checkbox/directives/checkbox-group-control/checkbox-group-control.directive.d.ts +1 -1
- package/lib/components/forms/components/error/components/error/error.component.d.ts +1 -1
- package/lib/components/forms/components/input/components/email-input/email-input.component.d.ts +1 -1
- package/lib/components/forms/components/input/components/input-field/input-field.component.d.ts +1 -1
- package/lib/components/forms/components/input/components/number-input/number-input.component.d.ts +1 -1
- package/lib/components/forms/components/input/components/password-input/password-input.component.d.ts +1 -1
- package/lib/components/forms/components/input/components/search-input/search-input.component.d.ts +1 -1
- package/lib/components/forms/components/input/components/text-input/text-input.component.d.ts +1 -1
- package/lib/components/forms/components/input/components/textarea-input/textarea-input.component.d.ts +5 -8
- package/lib/components/forms/components/input/directives/autosize-textarea/autosize-textarea.directive.d.ts +1 -1
- package/lib/components/forms/components/input/directives/email-input/email-input.directive.d.ts +1 -1
- package/lib/components/forms/components/input/directives/number-input/number-input.directive.d.ts +1 -1
- package/lib/components/forms/components/input/directives/password-input/password-input.directive.d.ts +1 -1
- package/lib/components/forms/components/input/directives/search-input/search-input.directive.d.ts +1 -1
- package/lib/components/forms/components/input/directives/text-input/text-input.directive.d.ts +1 -1
- package/lib/components/forms/components/input/directives/textarea-input/textarea-input.directive.d.ts +1 -1
- package/lib/components/forms/components/input/partials/password-input-toggle/password-input-toggle.component.d.ts +1 -1
- package/lib/components/forms/components/input/partials/search-input-clear/search-input-clear.component.d.ts +1 -1
- package/lib/components/forms/components/label/components/label/label.component.d.ts +1 -1
- package/lib/components/forms/components/label/directives/label-suffix/label-suffix.directive.d.ts +3 -5
- package/lib/components/forms/components/radio/components/radio/radio.component.d.ts +1 -1
- package/lib/components/forms/components/radio/components/radio-field/radio-field.component.d.ts +1 -1
- package/lib/components/forms/components/radio/components/radio-group/radio-group.component.d.ts +1 -1
- package/lib/components/forms/components/radio/directives/radio/radio.directive.d.ts +2 -3
- package/lib/components/forms/components/radio/directives/radio-field/radio-field.directive.d.ts +1 -1
- package/lib/components/forms/components/radio/directives/radio-group/radio-group.directive.d.ts +1 -1
- package/lib/components/forms/components/segmented-button/components/segmented-button/segmented-button.component.d.ts +1 -1
- package/lib/components/forms/components/segmented-button/components/segmented-button-field/segmented-button-field.component.d.ts +1 -1
- package/lib/components/forms/components/segmented-button/components/segmented-button-group/segmented-button-group.component.d.ts +1 -1
- package/lib/components/forms/components/segmented-button/directives/segmented-button/segmented-button.directive.d.ts +2 -3
- package/lib/components/forms/components/segmented-button/directives/segmented-button-field/segmented-button-field.directive.d.ts +1 -1
- package/lib/components/forms/components/segmented-button/directives/segmented-button-group/segmented-button-group.directive.d.ts +1 -1
- package/lib/components/forms/components/select/components/combobox/components/combobox/combobox.component.d.ts +5 -6
- package/lib/components/forms/components/select/components/combobox/directives/combobox/combobox.directive.d.ts +1 -1
- package/lib/components/forms/components/select/components/combobox/partials/combobox-body/combobox-body.component.d.ts +1 -1
- package/lib/components/forms/components/select/components/combobox/partials/combobox-option/combobox-option.component.d.ts +1 -1
- package/lib/components/forms/components/select/components/native-select/components/native-select/native-select.component.d.ts +1 -1
- package/lib/components/forms/components/select/components/native-select/directives/native-select-input/native-select-input.directive.d.ts +1 -1
- package/lib/components/forms/components/select/components/native-select/directives/native-select-option/native-select-option.directive.d.ts +5 -8
- package/lib/components/forms/components/select/components/native-select/partials/native-select-option/native-select-option.component.d.ts +1 -1
- package/lib/components/forms/components/select/components/select/components/select/select.component.d.ts +1 -1
- package/lib/components/forms/components/select/components/select/directives/select/select.directive.d.ts +2 -3
- package/lib/components/forms/components/select/components/select/directives/select-body/select-body.directive.d.ts +1 -1
- package/lib/components/forms/components/select/components/select/directives/select-option/select-option.directive.d.ts +2 -3
- package/lib/components/forms/components/select/components/select/partials/select-body/select-body.component.d.ts +1 -1
- package/lib/components/forms/components/select/components/select/partials/select-option/select-option.component.d.ts +1 -1
- package/lib/components/forms/components/select/components/select-field/select-field.component.d.ts +1 -1
- package/lib/components/forms/components/select/directives/select-field/select-field.directive.d.ts +1 -1
- package/lib/components/forms/components/slide-toggle/components/slide-toggle/slide-toggle.component.d.ts +1 -1
- package/lib/components/forms/components/slide-toggle/components/slide-toggle-field/slide-toggle-field.component.d.ts +1 -1
- package/lib/components/forms/components/slide-toggle/directives/slide-toggle/slide-toggle.directive.d.ts +1 -1
- package/lib/components/forms/components/slider/components/slider/slider.component.d.ts +6 -7
- package/lib/components/forms/components/slider/components/slider-field/slider-field.component.d.ts +1 -1
- package/lib/components/forms/directives/dynamic-form-field/dynamic-form-field.directive.d.ts +2 -3
- package/lib/components/forms/directives/dynamic-form-group/dynamic-form-group.directive.d.ts +2 -3
- package/lib/components/forms/directives/if-input-empty/if-input-empty.directive.d.ts +1 -1
- package/lib/components/forms/directives/if-input-filled/if-input-filled.directive.d.ts +1 -1
- package/lib/components/forms/directives/input/input.directive.d.ts +1 -1
- package/lib/components/forms/directives/input-prefix/input-prefix.directive.d.ts +1 -1
- package/lib/components/forms/directives/input-suffix/input-suffix.directive.d.ts +1 -1
- package/lib/components/forms/directives/native-input-ref/native-input-ref.directive.d.ts +1 -1
- package/lib/components/forms/directives/static-form-field/static-form-field.directive.d.ts +1 -1
- package/lib/components/forms/directives/static-form-group/static-form-group.directive.d.ts +1 -1
- package/lib/components/forms/directives/writeable-input/writeable-input.directive.d.ts +1 -1
- package/lib/components/forms/utils/decorated-form-field.base.d.ts +1 -1
- package/lib/components/forms/utils/decorated-input.base.d.ts +1 -1
- package/lib/components/forms/utils/input.base.d.ts +1 -1
- package/lib/components/icons/chevron-icon/chevron-icon.component.d.ts +1 -1
- package/lib/components/masonry/components/masonry/masonry.component.d.ts +3 -4
- package/lib/components/masonry/partials/masonry-item/masonry-item.component.d.ts +1 -1
- package/lib/components/overlay/components/bottom-sheet/components/bottom-sheet-container/bottom-sheet-container.component.d.ts +1 -1
- package/lib/components/overlay/components/bottom-sheet/partials/bottom-sheet-container-base/bottom-sheet-container-base.component.d.ts +1 -1
- package/lib/components/overlay/components/bottom-sheet/partials/bottom-sheet-drag-handle/bottom-sheet-drag-handle.component.d.ts +1 -1
- package/lib/components/overlay/components/bottom-sheet/partials/bottom-sheet-title/bottom-sheet-title.directive.d.ts +1 -1
- package/lib/components/overlay/components/bottom-sheet/services/bottom-sheet-base.service.d.ts +1 -1
- package/lib/components/overlay/components/dialog/components/dialog-container/dialog-container.component.d.ts +1 -1
- package/lib/components/overlay/components/dialog/partials/dialog-close/dialog-close.directive.d.ts +1 -1
- package/lib/components/overlay/components/dialog/partials/dialog-container-base/dialog-container-base.component.d.ts +1 -1
- package/lib/components/overlay/components/dialog/partials/dialog-title/dialog-title.directive.d.ts +1 -1
- package/lib/components/overlay/components/dialog/services/dialog-base.service.d.ts +1 -1
- package/lib/components/overlay/components/toggletip/components/toggletip/toggletip.component.d.ts +1 -1
- package/lib/components/overlay/components/toggletip/directives/toggletip/toggletip.directive.d.ts +2 -3
- package/lib/components/overlay/components/tooltip/components/tooltip/tooltip.component.d.ts +1 -1
- package/lib/components/overlay/components/tooltip/directives/tooltip/tooltip.directive.d.ts +1 -1
- package/lib/components/overlay/services/dynamic-overlay.service.d.ts +3 -6
- package/lib/components/pagination/components/pagination/pagination.component.d.ts +4 -4
- package/lib/components/pagination/partials/pagination-link/pagination-link.directive.d.ts +1 -1
- package/lib/components/picture/picture-data.directive.d.ts +3 -5
- package/lib/components/picture/picture.component.d.ts +1 -1
- package/lib/components/progress-spinner/progress-spinner.component.d.ts +7 -10
- package/lib/components/scrollable/components/scrollable/scrollable.component.d.ts +29 -27
- package/lib/components/scrollable/types/scrollable.types.d.ts +6 -0
- package/lib/components/skeleton/components/skeleton/skeleton.component.d.ts +3 -5
- package/lib/components/skeleton/partials/skeleton-item/skeleton-item.component.d.ts +1 -1
- package/lib/components/sort/components/sort-header/sort-header.component.d.ts +18 -22
- package/lib/components/sort/partials/sort/sort.directive.d.ts +8 -12
- package/lib/components/table/components/table/table.component.d.ts +2 -3
- package/lib/components/table/partials/cells/cell/cell.directive.d.ts +1 -1
- package/lib/components/table/partials/cells/cell-def/cell-def.directive.d.ts +1 -1
- package/lib/components/table/partials/cells/column-def/column-def.directive.d.ts +1 -1
- package/lib/components/table/partials/cells/footer-cell/footer-cell.directive.d.ts +1 -1
- package/lib/components/table/partials/cells/footer-cell-def/footer-cell-def.directive.d.ts +1 -1
- package/lib/components/table/partials/cells/header-cell/header-cell.directive.d.ts +1 -1
- package/lib/components/table/partials/cells/header-cell-def/header-cell-def.directive.d.ts +1 -1
- package/lib/components/table/partials/cells/text-column/text-column.component.d.ts +1 -1
- package/lib/components/table/partials/rows/footer-row/footer-row.component.d.ts +1 -1
- package/lib/components/table/partials/rows/footer-row-def/footer-row-def.directive.d.ts +1 -1
- package/lib/components/table/partials/rows/header-row/header-row.component.d.ts +1 -1
- package/lib/components/table/partials/rows/header-row-def/header-row-def.directive.d.ts +1 -1
- package/lib/components/table/partials/rows/no-data-row/no-data-row.directive.d.ts +1 -1
- package/lib/components/table/partials/rows/recycle-rows/recycle-rows.directive.d.ts +1 -1
- package/lib/components/table/partials/rows/row/row.component.d.ts +1 -1
- package/lib/components/table/partials/rows/row-def/row-def.directive.d.ts +1 -1
- package/lib/components/table/partials/table-busy/table-busy.directive.d.ts +2 -3
- package/lib/components/table/partials/table-busy-outlet/table-busy-outlet.directive.d.ts +2 -3
- package/lib/components/tabs/components/inline-tabs/inline-tabs.component.d.ts +15 -24
- package/lib/components/tabs/components/nav-tabs/nav-tabs.component.d.ts +3 -8
- package/lib/components/tabs/partials/inline-tabs/inline-tab/inline-tab.component.d.ts +5 -8
- package/lib/components/tabs/partials/inline-tabs/inline-tab-body/inline-tab-body.component.d.ts +6 -5
- package/lib/components/tabs/partials/inline-tabs/inline-tab-body-host/inline-tab-body-host.directive.d.ts +1 -1
- package/lib/components/tabs/partials/inline-tabs/inline-tab-content/inline-tab-content.directive.d.ts +2 -3
- package/lib/components/tabs/partials/inline-tabs/inline-tab-header/inline-tab-header.component.d.ts +3 -6
- package/lib/components/tabs/partials/inline-tabs/inline-tab-label/inline-tab-label.directive.d.ts +1 -1
- package/lib/components/tabs/partials/inline-tabs/inline-tab-label-wrapper/inline-tab-label-wrapper.directive.d.ts +4 -7
- package/lib/components/tabs/partials/nav-tabs/nav-tab-link/nav-tab-link.directive.d.ts +14 -18
- package/lib/components/tabs/partials/nav-tabs/nav-tabs-outlet/nav-tabs-outlet.component.d.ts +1 -1
- package/lib/components/tabs/utils/active-tab-underline.util.d.ts +2 -3
- package/lib/components/tabs/utils/paginated-tab-header.directive.d.ts +12 -17
- package/package.json +4 -5
|
@@ -1,72 +1,32 @@
|
|
|
1
|
-
import { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';
|
|
2
1
|
import { NgClass, NgIf } from '@angular/common';
|
|
3
|
-
import { ChangeDetectionStrategy, Component, ContentChildren, ElementRef, EventEmitter, HostBinding, Input, Output, Renderer2, ViewChild, ViewEncapsulation, inject, isDevMode, } from '@angular/core';
|
|
4
|
-
import { CursorDragScrollDirective, IS_ACTIVE_ELEMENT, IS_ELEMENT, LetDirective, ObserveScrollStateDirective, createDestroy, equal, scrollToElement, } from '@ethlete/core';
|
|
5
|
-
import { BehaviorSubject, startWith, takeUntil, tap } from 'rxjs';
|
|
2
|
+
import { ChangeDetectionStrategy, Component, ContentChildren, ElementRef, EventEmitter, HostBinding, Input, Output, Renderer2, ViewChild, ViewEncapsulation, booleanAttribute, inject, isDevMode, numberAttribute, } from '@angular/core';
|
|
3
|
+
import { CursorDragScrollDirective, IS_ACTIVE_ELEMENT, IS_ELEMENT, LetDirective, ObserveScrollStateDirective, createDestroy, equal, getElementVisibleStates, scrollToElement, } from '@ethlete/core';
|
|
4
|
+
import { BehaviorSubject, debounceTime, fromEvent, merge, startWith, takeUntil, tap } from 'rxjs';
|
|
6
5
|
import { ChevronIconComponent } from '../../../icons';
|
|
7
6
|
import * as i0 from "@angular/core";
|
|
8
|
-
class ScrollableComponent {
|
|
7
|
+
export class ScrollableComponent {
|
|
9
8
|
constructor() {
|
|
10
9
|
this._destroy$ = createDestroy();
|
|
11
10
|
this._renderer = inject(Renderer2);
|
|
12
11
|
this._elementRef = inject(ElementRef);
|
|
12
|
+
this._isCursorDragging$ = new BehaviorSubject(false);
|
|
13
13
|
this.itemSize = 'auto';
|
|
14
14
|
this.direction = 'horizontal';
|
|
15
|
-
this.
|
|
16
|
-
this.
|
|
17
|
-
this.
|
|
18
|
-
this.
|
|
19
|
-
this.
|
|
20
|
-
this.
|
|
21
|
-
this._disableActiveElementScrolling = false;
|
|
15
|
+
this.renderMasks = true;
|
|
16
|
+
this.renderButtons = true;
|
|
17
|
+
this.renderScrollbars = false;
|
|
18
|
+
this.stickyButtons = false;
|
|
19
|
+
this.cursorDragScroll = true;
|
|
20
|
+
this.disableActiveElementScrolling = false;
|
|
22
21
|
this.scrollMode = 'container';
|
|
22
|
+
this.snap = false;
|
|
23
|
+
this.scrollMargin = 0;
|
|
23
24
|
this.scrollStateChange = new EventEmitter();
|
|
25
|
+
this.intersectionChange = new EventEmitter();
|
|
24
26
|
this.activeElements = null;
|
|
25
27
|
this.elements = null;
|
|
26
28
|
this.scrollState$ = new BehaviorSubject(null);
|
|
27
29
|
}
|
|
28
|
-
get renderMasks() {
|
|
29
|
-
return this._renderMasks;
|
|
30
|
-
}
|
|
31
|
-
set renderMasks(value) {
|
|
32
|
-
this._renderMasks = coerceBooleanProperty(value);
|
|
33
|
-
}
|
|
34
|
-
get renderButtons() {
|
|
35
|
-
return this._renderButtons;
|
|
36
|
-
}
|
|
37
|
-
set renderButtons(value) {
|
|
38
|
-
this._renderButtons = coerceBooleanProperty(value);
|
|
39
|
-
}
|
|
40
|
-
get renderScrollbars() {
|
|
41
|
-
return this._renderScrollbars;
|
|
42
|
-
}
|
|
43
|
-
set renderScrollbars(value) {
|
|
44
|
-
this._renderScrollbars = coerceBooleanProperty(value);
|
|
45
|
-
}
|
|
46
|
-
get stickyButtons() {
|
|
47
|
-
return this._stickyButtons;
|
|
48
|
-
}
|
|
49
|
-
set stickyButtons(value) {
|
|
50
|
-
this._stickyButtons = coerceBooleanProperty(value);
|
|
51
|
-
}
|
|
52
|
-
get cursorDragScroll() {
|
|
53
|
-
return this._cursorDragScroll;
|
|
54
|
-
}
|
|
55
|
-
set cursorDragScroll(value) {
|
|
56
|
-
this._cursorDragScroll = coerceBooleanProperty(value);
|
|
57
|
-
}
|
|
58
|
-
get activeElementScrollMargin() {
|
|
59
|
-
return this._activeElementScrollMargin;
|
|
60
|
-
}
|
|
61
|
-
set activeElementScrollMargin(value) {
|
|
62
|
-
this._activeElementScrollMargin = coerceNumberProperty(value);
|
|
63
|
-
}
|
|
64
|
-
get disableActiveElementScrolling() {
|
|
65
|
-
return this._disableActiveElementScrolling;
|
|
66
|
-
}
|
|
67
|
-
set disableActiveElementScrolling(value) {
|
|
68
|
-
this._disableActiveElementScrolling = coerceBooleanProperty(value);
|
|
69
|
-
}
|
|
70
30
|
ngOnInit() {
|
|
71
31
|
this.scrollState$
|
|
72
32
|
.pipe(tap((state) => {
|
|
@@ -79,6 +39,7 @@ class ScrollableComponent {
|
|
|
79
39
|
this._renderer.setAttribute(element, 'can-scroll', state.canScroll.toString());
|
|
80
40
|
}), takeUntil(this._destroy$))
|
|
81
41
|
.subscribe();
|
|
42
|
+
this._setupScrollListening();
|
|
82
43
|
}
|
|
83
44
|
ngAfterContentInit() {
|
|
84
45
|
if (!this.activeElements || !this.elements) {
|
|
@@ -99,35 +60,12 @@ class ScrollableComponent {
|
|
|
99
60
|
behavior: 'auto',
|
|
100
61
|
container: this.scrollable.nativeElement,
|
|
101
62
|
element: firstActive.elementRef.nativeElement,
|
|
102
|
-
scrollInlineMargin: this.direction === 'horizontal' ? this.
|
|
103
|
-
scrollBlockMargin: this.direction === 'horizontal' ? 0 : this.
|
|
63
|
+
scrollInlineMargin: this.direction === 'horizontal' ? this.scrollMargin : 0,
|
|
64
|
+
scrollBlockMargin: this.direction === 'horizontal' ? 0 : this.scrollMargin,
|
|
104
65
|
});
|
|
105
66
|
}), takeUntil(this._destroy$))
|
|
106
67
|
.subscribe();
|
|
107
68
|
}
|
|
108
|
-
_scrollStateChanged(scrollState) {
|
|
109
|
-
if (equal(this.scrollState$.value, scrollState)) {
|
|
110
|
-
return;
|
|
111
|
-
}
|
|
112
|
-
this.scrollState$.next(scrollState);
|
|
113
|
-
this.scrollStateChange.emit(scrollState);
|
|
114
|
-
}
|
|
115
|
-
scrollToStartDirection() {
|
|
116
|
-
if (this.scrollMode === 'container') {
|
|
117
|
-
this.scrollOneContainerSize('start');
|
|
118
|
-
}
|
|
119
|
-
else {
|
|
120
|
-
this.scrollOneItemSize('start');
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
scrollToStartEnd() {
|
|
124
|
-
if (this.scrollMode === 'container') {
|
|
125
|
-
this.scrollOneContainerSize('end');
|
|
126
|
-
}
|
|
127
|
-
else {
|
|
128
|
-
this.scrollOneItemSize('end');
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
69
|
scrollOneContainerSize(direction) {
|
|
132
70
|
const scrollElement = this.scrollable.nativeElement;
|
|
133
71
|
const parent = this._elementRef.nativeElement;
|
|
@@ -179,15 +117,135 @@ class ScrollableComponent {
|
|
|
179
117
|
behavior: 'smooth',
|
|
180
118
|
});
|
|
181
119
|
}
|
|
182
|
-
|
|
183
|
-
|
|
120
|
+
scrollToElement(options) {
|
|
121
|
+
const scrollElement = this.scrollable.nativeElement;
|
|
122
|
+
scrollToElement({
|
|
123
|
+
container: scrollElement,
|
|
124
|
+
...options,
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
scrollToElementByIndex(options) {
|
|
128
|
+
const elements = this.elements?.toArray() ?? [];
|
|
129
|
+
if (!elements.length) {
|
|
130
|
+
if (isDevMode()) {
|
|
131
|
+
console.warn('No elements found to scroll to. Make sure to apply the isElement directive to the elements you want to scroll to.');
|
|
132
|
+
}
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
const scrollElement = this.scrollable.nativeElement;
|
|
136
|
+
const element = elements[options.index]?.elementRef.nativeElement;
|
|
137
|
+
scrollToElement({
|
|
138
|
+
container: scrollElement,
|
|
139
|
+
element,
|
|
140
|
+
...options,
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
setIsCursorDragging(isDragging) {
|
|
144
|
+
this._isCursorDragging$.next(isDragging);
|
|
145
|
+
}
|
|
146
|
+
_scrollStateChanged(scrollState) {
|
|
147
|
+
if (equal(this.scrollState$.value, scrollState)) {
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
this.scrollState$.next(scrollState);
|
|
151
|
+
this.scrollStateChange.emit(scrollState);
|
|
152
|
+
}
|
|
153
|
+
scrollToStartDirection() {
|
|
154
|
+
if (this.scrollMode === 'container') {
|
|
155
|
+
this.scrollOneContainerSize('start');
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
this.scrollOneItemSize('start');
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
scrollToStartEnd() {
|
|
162
|
+
if (this.scrollMode === 'container') {
|
|
163
|
+
this.scrollOneContainerSize('end');
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
this.scrollOneItemSize('end');
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
_setupScrollListening() {
|
|
170
|
+
const scrollElement = this.scrollable.nativeElement;
|
|
171
|
+
let isSnapping = false;
|
|
172
|
+
let snapTimeout = 0;
|
|
173
|
+
merge(fromEvent(scrollElement, 'wheel'), fromEvent(scrollElement, 'touchstart'))
|
|
174
|
+
.pipe(takeUntil(this._destroy$), tap(() => {
|
|
175
|
+
isSnapping = false;
|
|
176
|
+
}))
|
|
177
|
+
.subscribe();
|
|
178
|
+
merge(fromEvent(scrollElement, 'scroll'), this._isCursorDragging$)
|
|
179
|
+
.pipe(debounceTime(25), takeUntil(this._destroy$), tap(() => {
|
|
180
|
+
const elements = this.elements
|
|
181
|
+
?.toArray()
|
|
182
|
+
.map((e) => e?.elementRef.nativeElement)
|
|
183
|
+
.filter((e) => !!e) ?? [];
|
|
184
|
+
if (!elements.length)
|
|
185
|
+
return;
|
|
186
|
+
const states = getElementVisibleStates({
|
|
187
|
+
elements,
|
|
188
|
+
container: scrollElement,
|
|
189
|
+
});
|
|
190
|
+
const prop = this.direction === 'horizontal' ? 'inlineIntersection' : 'blockIntersection';
|
|
191
|
+
const stateClass = `et-element--is-intersecting`;
|
|
192
|
+
for (const state of states) {
|
|
193
|
+
if (state[prop] === 100) {
|
|
194
|
+
state.element.classList.add(stateClass);
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
state.element.classList.remove(stateClass);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
this.intersectionChange.emit(states.map((s, i) => {
|
|
201
|
+
const state = {
|
|
202
|
+
element: s.element,
|
|
203
|
+
intersectionRatio: s[prop] / 100,
|
|
204
|
+
isIntersecting: s[prop] === 100,
|
|
205
|
+
index: i,
|
|
206
|
+
};
|
|
207
|
+
return state;
|
|
208
|
+
}));
|
|
209
|
+
if (isSnapping || this._isCursorDragging$.value || !this.snap)
|
|
210
|
+
return;
|
|
211
|
+
const isOnlyOnePartialIntersection = states.filter((s) => s[prop] < 100 && s[prop] > 0).length === 1;
|
|
212
|
+
if (isOnlyOnePartialIntersection)
|
|
213
|
+
return;
|
|
214
|
+
const highestIntersecting = states.reduce((prev, current) => {
|
|
215
|
+
if (current[prop] > prev[prop] && current[prop] < 100) {
|
|
216
|
+
return current;
|
|
217
|
+
}
|
|
218
|
+
return prev;
|
|
219
|
+
});
|
|
220
|
+
const fullIntersectionIndex = states.findIndex((s) => s[prop] === 100);
|
|
221
|
+
const highestIntersectingIndex = states.findIndex((s) => s === highestIntersecting);
|
|
222
|
+
const origin = highestIntersectingIndex > fullIntersectionIndex ? 'end' : 'start';
|
|
223
|
+
if (!highestIntersecting || highestIntersecting[prop] === 100)
|
|
224
|
+
return;
|
|
225
|
+
scrollToElement({
|
|
226
|
+
container: scrollElement,
|
|
227
|
+
element: highestIntersecting.element,
|
|
228
|
+
direction: this.direction === 'horizontal' ? 'inline' : 'block',
|
|
229
|
+
origin,
|
|
230
|
+
scrollBlockMargin: this.direction === 'horizontal' ? 0 : this.scrollMargin,
|
|
231
|
+
scrollInlineMargin: this.direction === 'horizontal' ? this.scrollMargin : 0,
|
|
232
|
+
});
|
|
233
|
+
isSnapping = true;
|
|
234
|
+
window.clearTimeout(snapTimeout);
|
|
235
|
+
snapTimeout = window.setTimeout(() => {
|
|
236
|
+
isSnapping = false;
|
|
237
|
+
}, 1000);
|
|
238
|
+
}))
|
|
239
|
+
.subscribe();
|
|
240
|
+
}
|
|
241
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: ScrollableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
242
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.0", type: ScrollableComponent, isStandalone: true, selector: "et-scrollable", inputs: { itemSize: "itemSize", direction: "direction", scrollableRole: "scrollableRole", scrollableClass: "scrollableClass", renderMasks: ["renderMasks", "renderMasks", booleanAttribute], renderButtons: ["renderButtons", "renderButtons", booleanAttribute], renderScrollbars: ["renderScrollbars", "renderScrollbars", booleanAttribute], stickyButtons: ["stickyButtons", "stickyButtons", booleanAttribute], cursorDragScroll: ["cursorDragScroll", "cursorDragScroll", booleanAttribute], disableActiveElementScrolling: ["disableActiveElementScrolling", "disableActiveElementScrolling", booleanAttribute], scrollMode: "scrollMode", snap: ["snap", "snap", booleanAttribute], scrollMargin: ["scrollMargin", "scrollMargin", numberAttribute] }, outputs: { scrollStateChange: "scrollStateChange", intersectionChange: "intersectionChange" }, host: { properties: { "attr.item-size": "this.itemSize", "attr.direction": "this.direction", "attr.render-scrollbars": "this.renderScrollbars", "attr.sticky-buttons": "this.stickyButtons" }, classAttribute: "et-scrollable" }, queries: [{ propertyName: "activeElements", predicate: IS_ACTIVE_ELEMENT, descendants: true }, { propertyName: "elements", predicate: IS_ELEMENT, descendants: true }], viewQueries: [{ propertyName: "scrollable", first: true, predicate: ["scrollable"], descendants: true, static: true }], ngImport: i0, template: "<div\n #scrollable\n [attr.role]=\"scrollableRole ?? undefined\"\n [ngClass]=\"scrollableClass\"\n [etCursorDragScroll]=\"cursorDragScroll\"\n [allowedDirection]=\"direction\"\n (etObserveScrollState)=\"_scrollStateChanged($event)\"\n (cursorDragStart)=\"setIsCursorDragging(true)\"\n (cursorDragEnd)=\"setIsCursorDragging(false)\"\n class=\"et-scrollable-container\"\n>\n <ng-content />\n</div>\n\n<div *ngIf=\"renderMasks\" class=\"et-scrollable-masks\">\n <div class=\"et-scrollable-mask et-scrollable-mask--start\"></div>\n <div class=\"et-scrollable-mask et-scrollable-mask--end\"></div>\n</div>\n\n<div *ngIf=\"renderButtons\" class=\"et-scrollable-buttons\">\n <button\n (click)=\"scrollToStartDirection()\"\n class=\"et-scrollable-button et-scrollable-button--start\"\n aria-hidden=\"true\"\n type=\"button\"\n tabindex=\"-1\"\n >\n <et-chevron-icon />\n </button>\n <button\n (click)=\"scrollToStartEnd()\"\n class=\"et-scrollable-button et-scrollable-button--end\"\n aria-hidden=\"true\"\n type=\"button\"\n tabindex=\"-1\"\n >\n <et-chevron-icon />\n </button>\n</div>\n", styles: [".et-scrollable{--mask: #121212 0, transparent 100%;--mask-size: 25px;--_auto-size: min-content;--_flow: column;display:grid;position:relative}.et-scrollable[item-size=same]{--auto-size: 1fr}.et-scrollable[render-scrollbars=false] .et-scrollable-container{scrollbar-width:none}.et-scrollable[render-scrollbars=false] .et-scrollable-container::-webkit-scrollbar{display:none}.et-scrollable[direction=horizontal] .et-scrollable-container{grid-auto-columns:var(--_auto-size);overflow-x:auto;overflow-y:hidden}.et-scrollable[direction=horizontal] .et-scrollable-mask,.et-scrollable[direction=horizontal] .et-scrollable-button{inline-size:var(--mask-size);block-size:100%}.et-scrollable[direction=horizontal] .et-scrollable-mask--start,.et-scrollable[direction=horizontal] .et-scrollable-button--start{inset-block-start:0;inset-inline:0 0}.et-scrollable[direction=horizontal] .et-scrollable-mask--end,.et-scrollable[direction=horizontal] .et-scrollable-button--end{inset-block-start:0;inset-inline:calc(100% - 40px) 0}.et-scrollable[direction=horizontal] .et-scrollable-mask--start{background:linear-gradient(to right,var(--mask))}.et-scrollable[direction=horizontal] .et-scrollable-mask--end{background:linear-gradient(to left,var(--mask));inset-inline:calc(100% - var(--mask-size)) 100%}.et-scrollable[direction=horizontal] .et-scrollable-button--start{inset-block-start:calc(50% - 20px);transform:rotate(-90deg)}.et-scrollable[direction=horizontal] .et-scrollable-button--end{inset-block-start:calc(50% - 20px);transform:rotate(90deg)}.et-scrollable[direction=vertical]{--_flow: row}.et-scrollable[direction=vertical] .et-scrollable-container{grid-auto-rows:var(--_auto-size);overflow-x:hidden;overflow-y:auto}.et-scrollable[direction=vertical] .et-scrollable-mask,.et-scrollable[direction=vertical] .et-scrollable-button{block-size:var(--mask-size);inline-size:100%}.et-scrollable[direction=vertical] .et-scrollable-mask--start,.et-scrollable[direction=vertical] .et-scrollable-button--start{inset-block-start:0;inset-inline-start:0}.et-scrollable[direction=vertical] .et-scrollable-mask--end,.et-scrollable[direction=vertical] .et-scrollable-button--end{inset-block-end:0;inset-inline-start:0}.et-scrollable[direction=vertical] .et-scrollable-mask--start{background:linear-gradient(to bottom,var(--mask))}.et-scrollable[direction=vertical] .et-scrollable-mask--end{background:linear-gradient(to top,var(--mask))}.et-scrollable[at-start=false] .et-scrollable-masks .et-scrollable-mask--start,.et-scrollable[at-start=false] .et-scrollable-buttons .et-scrollable-button--start{opacity:1}.et-scrollable[at-start=false] .et-scrollable-buttons .et-scrollable-button--start{pointer-events:all}.et-scrollable[at-end=false] .et-scrollable-masks .et-scrollable-mask--end,.et-scrollable[at-end=false] .et-scrollable-buttons .et-scrollable-button--end{opacity:1}.et-scrollable[at-end=false] .et-scrollable-buttons .et-scrollable-button--end{pointer-events:all}.et-scrollable .et-scrollable-container{display:grid;grid-auto-flow:var(--_flow);overflow:auto;grid-row:1/1;grid-column:1/1}.et-scrollable .et-scrollable-masks,.et-scrollable .et-scrollable-buttons{grid-row:1/1;grid-column:1/1;pointer-events:none}.et-scrollable .et-scrollable-masks .et-scrollable-mask,.et-scrollable .et-scrollable-masks .et-scrollable-button,.et-scrollable .et-scrollable-buttons .et-scrollable-mask,.et-scrollable .et-scrollable-buttons .et-scrollable-button{position:absolute;opacity:0;transition:opacity .3s var(--ease-5)}.et-scrollable .et-scrollable-buttons .et-scrollable-button{background:transparent;border:none;padding:12px;inline-size:40px;block-size:40px;border-radius:4px;cursor:pointer}.et-scrollable .et-scrollable-buttons .et-scrollable-button .et-chevron-icon{pointer-events:none}.et-scrollable .et-scrollable-buttons .et-scrollable-button .et-scrollable-button--start{inset-inline:0 0}.et-scrollable .et-scrollable-buttons .et-scrollable-button .et-scrollable-button--end{inset-inline:calc(100% - 40px) 0}.et-scrollable[sticky-buttons=true] .et-scrollable-buttons{margin-block:10%}.et-scrollable[sticky-buttons=true] .et-scrollable-buttons .et-scrollable-button{position:sticky}\n"], dependencies: [{ kind: "directive", type: CursorDragScrollDirective, selector: "[etCursorDragScroll]", inputs: ["etCursorDragScroll", "allowedDirection"], outputs: ["cursorDragStart", "cursorDragMove", "cursorDragEnd"], exportAs: ["etCursorDragScroll"] }, { kind: "directive", type: ObserveScrollStateDirective, selector: "[etObserveScrollState]", inputs: ["rootMargin", "observerThreshold"], outputs: ["etObserveScrollState"], exportAs: ["etObserveScrollState"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ChevronIconComponent, selector: "et-chevron-icon" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
184
243
|
}
|
|
185
|
-
|
|
186
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.5", ngImport: i0, type: ScrollableComponent, decorators: [{
|
|
244
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: ScrollableComponent, decorators: [{
|
|
187
245
|
type: Component,
|
|
188
246
|
args: [{ selector: 'et-scrollable', standalone: true, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [CursorDragScrollDirective, ObserveScrollStateDirective, NgClass, NgIf, LetDirective, ChevronIconComponent], host: {
|
|
189
247
|
class: 'et-scrollable',
|
|
190
|
-
}, template: "<div\n #scrollable\n [attr.role]=\"scrollableRole ?? undefined\"\n [ngClass]=\"scrollableClass\"\n [etCursorDragScroll]=\"cursorDragScroll\"\n [allowedDirection]=\"direction\"\n (etObserveScrollState)=\"_scrollStateChanged($event)\"\n class=\"et-scrollable-container\"\n>\n <ng-content />\n</div>\n\n<div *ngIf=\"renderMasks\" class=\"et-scrollable-masks\">\n <div class=\"et-scrollable-mask et-scrollable-mask--start\"></div>\n <div class=\"et-scrollable-mask et-scrollable-mask--end\"></div>\n</div>\n\n<div *ngIf=\"renderButtons\" class=\"et-scrollable-buttons\">\n <button\n (click)=\"scrollToStartDirection()\"\n class=\"et-scrollable-button et-scrollable-button--start\"\n aria-hidden=\"true\"\n type=\"button\"\n tabindex=\"-1\"\n >\n <et-chevron-icon />\n </button>\n <button\n (click)=\"scrollToStartEnd()\"\n class=\"et-scrollable-button et-scrollable-button--end\"\n aria-hidden=\"true\"\n type=\"button\"\n tabindex=\"-1\"\n >\n <et-chevron-icon />\n </button>\n</div>\n", styles: [".et-scrollable{--mask: #121212 0, transparent 100%;--mask-size: 25px;--_auto-size: min-content;--_flow: column;display:grid;position:relative}.et-scrollable[item-size=same]{--auto-size: 1fr}.et-scrollable[render-scrollbars=false] .et-scrollable-container{scrollbar-width:none}.et-scrollable[render-scrollbars=false] .et-scrollable-container::-webkit-scrollbar{display:none}.et-scrollable[direction=horizontal] .et-scrollable-container{grid-auto-columns:var(--_auto-size);overflow-x:auto;overflow-y:hidden}.et-scrollable[direction=horizontal] .et-scrollable-mask,.et-scrollable[direction=horizontal] .et-scrollable-button{inline-size:var(--mask-size);block-size:100%}.et-scrollable[direction=horizontal] .et-scrollable-mask--start,.et-scrollable[direction=horizontal] .et-scrollable-button--start{inset-block-start:0;inset-inline:0 0}.et-scrollable[direction=horizontal] .et-scrollable-mask--end,.et-scrollable[direction=horizontal] .et-scrollable-button--end{inset-block-start:0;inset-inline:calc(100% - 40px) 0}.et-scrollable[direction=horizontal] .et-scrollable-mask--start{background:linear-gradient(to right,var(--mask))}.et-scrollable[direction=horizontal] .et-scrollable-mask--end{background:linear-gradient(to left,var(--mask));inset-inline:calc(100% - var(--mask-size)) 100%}.et-scrollable[direction=horizontal] .et-scrollable-button--start{inset-block-start:calc(50% - 20px);transform:rotate(-90deg)}.et-scrollable[direction=horizontal] .et-scrollable-button--end{inset-block-start:calc(50% - 20px);transform:rotate(90deg)}.et-scrollable[direction=vertical]{--_flow: row
|
|
248
|
+
}, template: "<div\n #scrollable\n [attr.role]=\"scrollableRole ?? undefined\"\n [ngClass]=\"scrollableClass\"\n [etCursorDragScroll]=\"cursorDragScroll\"\n [allowedDirection]=\"direction\"\n (etObserveScrollState)=\"_scrollStateChanged($event)\"\n (cursorDragStart)=\"setIsCursorDragging(true)\"\n (cursorDragEnd)=\"setIsCursorDragging(false)\"\n class=\"et-scrollable-container\"\n>\n <ng-content />\n</div>\n\n<div *ngIf=\"renderMasks\" class=\"et-scrollable-masks\">\n <div class=\"et-scrollable-mask et-scrollable-mask--start\"></div>\n <div class=\"et-scrollable-mask et-scrollable-mask--end\"></div>\n</div>\n\n<div *ngIf=\"renderButtons\" class=\"et-scrollable-buttons\">\n <button\n (click)=\"scrollToStartDirection()\"\n class=\"et-scrollable-button et-scrollable-button--start\"\n aria-hidden=\"true\"\n type=\"button\"\n tabindex=\"-1\"\n >\n <et-chevron-icon />\n </button>\n <button\n (click)=\"scrollToStartEnd()\"\n class=\"et-scrollable-button et-scrollable-button--end\"\n aria-hidden=\"true\"\n type=\"button\"\n tabindex=\"-1\"\n >\n <et-chevron-icon />\n </button>\n</div>\n", styles: [".et-scrollable{--mask: #121212 0, transparent 100%;--mask-size: 25px;--_auto-size: min-content;--_flow: column;display:grid;position:relative}.et-scrollable[item-size=same]{--auto-size: 1fr}.et-scrollable[render-scrollbars=false] .et-scrollable-container{scrollbar-width:none}.et-scrollable[render-scrollbars=false] .et-scrollable-container::-webkit-scrollbar{display:none}.et-scrollable[direction=horizontal] .et-scrollable-container{grid-auto-columns:var(--_auto-size);overflow-x:auto;overflow-y:hidden}.et-scrollable[direction=horizontal] .et-scrollable-mask,.et-scrollable[direction=horizontal] .et-scrollable-button{inline-size:var(--mask-size);block-size:100%}.et-scrollable[direction=horizontal] .et-scrollable-mask--start,.et-scrollable[direction=horizontal] .et-scrollable-button--start{inset-block-start:0;inset-inline:0 0}.et-scrollable[direction=horizontal] .et-scrollable-mask--end,.et-scrollable[direction=horizontal] .et-scrollable-button--end{inset-block-start:0;inset-inline:calc(100% - 40px) 0}.et-scrollable[direction=horizontal] .et-scrollable-mask--start{background:linear-gradient(to right,var(--mask))}.et-scrollable[direction=horizontal] .et-scrollable-mask--end{background:linear-gradient(to left,var(--mask));inset-inline:calc(100% - var(--mask-size)) 100%}.et-scrollable[direction=horizontal] .et-scrollable-button--start{inset-block-start:calc(50% - 20px);transform:rotate(-90deg)}.et-scrollable[direction=horizontal] .et-scrollable-button--end{inset-block-start:calc(50% - 20px);transform:rotate(90deg)}.et-scrollable[direction=vertical]{--_flow: row}.et-scrollable[direction=vertical] .et-scrollable-container{grid-auto-rows:var(--_auto-size);overflow-x:hidden;overflow-y:auto}.et-scrollable[direction=vertical] .et-scrollable-mask,.et-scrollable[direction=vertical] .et-scrollable-button{block-size:var(--mask-size);inline-size:100%}.et-scrollable[direction=vertical] .et-scrollable-mask--start,.et-scrollable[direction=vertical] .et-scrollable-button--start{inset-block-start:0;inset-inline-start:0}.et-scrollable[direction=vertical] .et-scrollable-mask--end,.et-scrollable[direction=vertical] .et-scrollable-button--end{inset-block-end:0;inset-inline-start:0}.et-scrollable[direction=vertical] .et-scrollable-mask--start{background:linear-gradient(to bottom,var(--mask))}.et-scrollable[direction=vertical] .et-scrollable-mask--end{background:linear-gradient(to top,var(--mask))}.et-scrollable[at-start=false] .et-scrollable-masks .et-scrollable-mask--start,.et-scrollable[at-start=false] .et-scrollable-buttons .et-scrollable-button--start{opacity:1}.et-scrollable[at-start=false] .et-scrollable-buttons .et-scrollable-button--start{pointer-events:all}.et-scrollable[at-end=false] .et-scrollable-masks .et-scrollable-mask--end,.et-scrollable[at-end=false] .et-scrollable-buttons .et-scrollable-button--end{opacity:1}.et-scrollable[at-end=false] .et-scrollable-buttons .et-scrollable-button--end{pointer-events:all}.et-scrollable .et-scrollable-container{display:grid;grid-auto-flow:var(--_flow);overflow:auto;grid-row:1/1;grid-column:1/1}.et-scrollable .et-scrollable-masks,.et-scrollable .et-scrollable-buttons{grid-row:1/1;grid-column:1/1;pointer-events:none}.et-scrollable .et-scrollable-masks .et-scrollable-mask,.et-scrollable .et-scrollable-masks .et-scrollable-button,.et-scrollable .et-scrollable-buttons .et-scrollable-mask,.et-scrollable .et-scrollable-buttons .et-scrollable-button{position:absolute;opacity:0;transition:opacity .3s var(--ease-5)}.et-scrollable .et-scrollable-buttons .et-scrollable-button{background:transparent;border:none;padding:12px;inline-size:40px;block-size:40px;border-radius:4px;cursor:pointer}.et-scrollable .et-scrollable-buttons .et-scrollable-button .et-chevron-icon{pointer-events:none}.et-scrollable .et-scrollable-buttons .et-scrollable-button .et-scrollable-button--start{inset-inline:0 0}.et-scrollable .et-scrollable-buttons .et-scrollable-button .et-scrollable-button--end{inset-inline:calc(100% - 40px) 0}.et-scrollable[sticky-buttons=true] .et-scrollable-buttons{margin-block:10%}.et-scrollable[sticky-buttons=true] .et-scrollable-buttons .et-scrollable-button{position:sticky}\n"] }]
|
|
191
249
|
}], propDecorators: { itemSize: [{
|
|
192
250
|
type: Input
|
|
193
251
|
}, {
|
|
@@ -203,29 +261,41 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.5", ngImpor
|
|
|
203
261
|
}], scrollableClass: [{
|
|
204
262
|
type: Input
|
|
205
263
|
}], renderMasks: [{
|
|
206
|
-
type: Input
|
|
264
|
+
type: Input,
|
|
265
|
+
args: [{ transform: booleanAttribute }]
|
|
207
266
|
}], renderButtons: [{
|
|
208
|
-
type: Input
|
|
267
|
+
type: Input,
|
|
268
|
+
args: [{ transform: booleanAttribute }]
|
|
209
269
|
}], renderScrollbars: [{
|
|
210
|
-
type: Input
|
|
270
|
+
type: Input,
|
|
271
|
+
args: [{ transform: booleanAttribute }]
|
|
211
272
|
}, {
|
|
212
273
|
type: HostBinding,
|
|
213
274
|
args: ['attr.render-scrollbars']
|
|
214
275
|
}], stickyButtons: [{
|
|
215
|
-
type: Input
|
|
276
|
+
type: Input,
|
|
277
|
+
args: [{ transform: booleanAttribute }]
|
|
216
278
|
}, {
|
|
217
279
|
type: HostBinding,
|
|
218
280
|
args: ['attr.sticky-buttons']
|
|
219
281
|
}], cursorDragScroll: [{
|
|
220
|
-
type: Input
|
|
221
|
-
|
|
222
|
-
type: Input
|
|
282
|
+
type: Input,
|
|
283
|
+
args: [{ transform: booleanAttribute }]
|
|
223
284
|
}], disableActiveElementScrolling: [{
|
|
224
|
-
type: Input
|
|
285
|
+
type: Input,
|
|
286
|
+
args: [{ transform: booleanAttribute }]
|
|
225
287
|
}], scrollMode: [{
|
|
226
288
|
type: Input
|
|
289
|
+
}], snap: [{
|
|
290
|
+
type: Input,
|
|
291
|
+
args: [{ transform: booleanAttribute }]
|
|
292
|
+
}], scrollMargin: [{
|
|
293
|
+
type: Input,
|
|
294
|
+
args: [{ transform: numberAttribute }]
|
|
227
295
|
}], scrollStateChange: [{
|
|
228
296
|
type: Output
|
|
297
|
+
}], intersectionChange: [{
|
|
298
|
+
type: Output
|
|
229
299
|
}], scrollable: [{
|
|
230
300
|
type: ViewChild,
|
|
231
301
|
args: ['scrollable', { static: true }]
|
|
@@ -236,4 +306,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.5", ngImpor
|
|
|
236
306
|
type: ContentChildren,
|
|
237
307
|
args: [IS_ELEMENT, { descendants: true }]
|
|
238
308
|
}] } });
|
|
239
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsYWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL2NvbXBvbmVudHMvc2Nyb2xsYWJsZS9jb21wb25lbnRzL3Njcm9sbGFibGUvc2Nyb2xsYWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL2NvbXBvbmVudHMvc2Nyb2xsYWJsZS9jb21wb25lbnRzL3Njcm9sbGFibGUvc2Nyb2xsYWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTZCLHFCQUFxQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDL0csT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1QsU0FBUyxFQUNULGlCQUFpQixFQUNqQixNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCx5QkFBeUIsRUFDekIsaUJBQWlCLEVBQ2pCLFVBQVUsRUFHVixZQUFZLEVBRVosMkJBQTJCLEVBRzNCLGFBQWEsRUFDYixLQUFLLEVBQ0wsZUFBZSxHQUNoQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUd0RCxNQVlhLG1CQUFtQjtJQVpoQztRQWFtQixjQUFTLEdBQUcsYUFBYSxFQUFFLENBQUM7UUFD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QW9CLENBQUMsUUFDOUc7d0JBQ0osS0FBSyxFQUFFLGVBQWU7cUJBQ3ZCOzhCQVNELFFBQVE7c0JBRlAsS0FBSzs7c0JBQ0wsV0FBVzt1QkFBQyxnQkFBZ0I7Z0JBSzdCLFNBQVM7c0JBRlIsS0FBSzs7c0JBQ0wsV0FBVzt1QkFBQyxnQkFBZ0I7Z0JBSTdCLGNBQWM7c0JBRGIsS0FBSztnQkFJTixlQUFlO3NCQURkLEtBQUs7Z0JBSUYsV0FBVztzQkFEZCxLQUFLO2dCQVVGLGFBQWE7c0JBRGhCLEtBQUs7Z0JBV0YsZ0JBQWdCO3NCQUZuQixLQUFLOztzQkFDTCxXQUFXO3VCQUFDLHdCQUF3QjtnQkFXakMsYUFBYTtzQkFGaEIsS0FBSzs7c0JBQ0wsV0FBVzt1QkFBQyxxQkFBcUI7Z0JBVTlCLGdCQUFnQjtzQkFEbkIsS0FBSztnQkFVRix5QkFBeUI7c0JBRDVCLEtBQUs7Z0JBVUYsNkJBQTZCO3NCQURoQyxLQUFLO2dCQVVOLFVBQVU7c0JBRFQsS0FBSztnQkFJRyxpQkFBaUI7c0JBRHpCLE1BQU07Z0JBSVAsVUFBVTtzQkFEVCxTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSXpDLGNBQWM7c0JBRGIsZUFBZTt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7Z0JBSXpELFFBQVE7c0JBRFAsZUFBZTt1QkFBQyxVQUFVLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQm9vbGVhbklucHV0LCBOdW1iZXJJbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5LCBjb2VyY2VOdW1iZXJQcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBOZ0NsYXNzLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBSZW5kZXJlcjIsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGluamVjdCxcbiAgaXNEZXZNb2RlLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEN1cnNvckRyYWdTY3JvbGxEaXJlY3RpdmUsXG4gIElTX0FDVElWRV9FTEVNRU5ULFxuICBJU19FTEVNRU5ULFxuICBJc0FjdGl2ZUVsZW1lbnREaXJlY3RpdmUsXG4gIElzRWxlbWVudERpcmVjdGl2ZSxcbiAgTGV0RGlyZWN0aXZlLFxuICBOZ0NsYXNzVHlwZSxcbiAgT2JzZXJ2ZVNjcm9sbFN0YXRlRGlyZWN0aXZlLFxuICBTY3JvbGxPYnNlcnZlclNjcm9sbFN0YXRlLFxuICBUeXBlZFF1ZXJ5TGlzdCxcbiAgY3JlYXRlRGVzdHJveSxcbiAgZXF1YWwsXG4gIHNjcm9sbFRvRWxlbWVudCxcbn0gZnJvbSAnQGV0aGxldGUvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIHN0YXJ0V2l0aCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENoZXZyb25JY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vaWNvbnMnO1xuaW1wb3J0IHsgU2Nyb2xsYWJsZVNjcm9sbE1vZGUgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2V0LXNjcm9sbGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2Nyb2xsYWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Njcm9sbGFibGUuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtDdXJzb3JEcmFnU2Nyb2xsRGlyZWN0aXZlLCBPYnNlcnZlU2Nyb2xsU3RhdGVEaXJlY3RpdmUsIE5nQ2xhc3MsIE5nSWYsIExldERpcmVjdGl2ZSwgQ2hldnJvbkljb25Db21wb25lbnRdLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdldC1zY3JvbGxhYmxlJyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgU2Nyb2xsYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kkID0gY3JlYXRlRGVzdHJveSgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZW5kZXJlciA9IGluamVjdChSZW5kZXJlcjIpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9lbGVtZW50UmVmID0gaW5qZWN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PihFbGVtZW50UmVmKTtcblxuICBASW5wdXQoKVxuICBASG9zdEJpbmRpbmcoJ2F0dHIuaXRlbS1zaXplJylcbiAgaXRlbVNpemU6ICdhdXRvJyB8ICdzYW1lJyA9ICdhdXRvJztcblxuICBASW5wdXQoKVxuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGlyZWN0aW9uJylcbiAgZGlyZWN0aW9uOiAnaG9yaXpvbnRhbCcgfCAndmVydGljYWwnID0gJ2hvcml6b250YWwnO1xuXG4gIEBJbnB1dCgpXG4gIHNjcm9sbGFibGVSb2xlPzogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHNjcm9sbGFibGVDbGFzcz86IE5nQ2xhc3NUeXBlO1xuXG4gIEBJbnB1dCgpXG4gIGdldCByZW5kZXJNYXNrcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcmVuZGVyTWFza3M7XG4gIH1cbiAgc2V0IHJlbmRlck1hc2tzKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICB0aGlzLl9yZW5kZXJNYXNrcyA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cbiAgcHJpdmF0ZSBfcmVuZGVyTWFza3MgPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIGdldCByZW5kZXJCdXR0b25zKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9yZW5kZXJCdXR0b25zO1xuICB9XG4gIHNldCByZW5kZXJCdXR0b25zKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICB0aGlzLl9yZW5kZXJCdXR0b25zID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuICBwcml2YXRlIF9yZW5kZXJCdXR0b25zID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBASG9zdEJpbmRpbmcoJ2F0dHIucmVuZGVyLXNjcm9sbGJhcnMnKVxuICBnZXQgcmVuZGVyU2Nyb2xsYmFycygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcmVuZGVyU2Nyb2xsYmFycztcbiAgfVxuICBzZXQgcmVuZGVyU2Nyb2xsYmFycyh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgdGhpcy5fcmVuZGVyU2Nyb2xsYmFycyA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cbiAgcHJpdmF0ZSBfcmVuZGVyU2Nyb2xsYmFycyA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIEBIb3N0QmluZGluZygnYXR0ci5zdGlja3ktYnV0dG9ucycpXG4gIGdldCBzdGlja3lCdXR0b25zKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zdGlja3lCdXR0b25zO1xuICB9XG4gIHNldCBzdGlja3lCdXR0b25zKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICB0aGlzLl9zdGlja3lCdXR0b25zID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuICBwcml2YXRlIF9zdGlja3lCdXR0b25zID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgZ2V0IGN1cnNvckRyYWdTY3JvbGwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2N1cnNvckRyYWdTY3JvbGw7XG4gIH1cbiAgc2V0IGN1cnNvckRyYWdTY3JvbGwodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgIHRoaXMuX2N1cnNvckRyYWdTY3JvbGwgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG4gIHByaXZhdGUgX2N1cnNvckRyYWdTY3JvbGwgPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBhY3RpdmVFbGVtZW50U2Nyb2xsTWFyZ2luKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZUVsZW1lbnRTY3JvbGxNYXJnaW47XG4gIH1cbiAgc2V0IGFjdGl2ZUVsZW1lbnRTY3JvbGxNYXJnaW4odmFsdWU6IE51bWJlcklucHV0KSB7XG4gICAgdGhpcy5fYWN0aXZlRWxlbWVudFNjcm9sbE1hcmdpbiA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlKTtcbiAgfVxuICBwcml2YXRlIF9hY3RpdmVFbGVtZW50U2Nyb2xsTWFyZ2luID0gNDA7XG5cbiAgQElucHV0KClcbiAgZ2V0IGRpc2FibGVBY3RpdmVFbGVtZW50U2Nyb2xsaW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlQWN0aXZlRWxlbWVudFNjcm9sbGluZztcbiAgfVxuICBzZXQgZGlzYWJsZUFjdGl2ZUVsZW1lbnRTY3JvbGxpbmcodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgIHRoaXMuX2Rpc2FibGVBY3RpdmVFbGVtZW50U2Nyb2xsaW5nID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuICBwcml2YXRlIF9kaXNhYmxlQWN0aXZlRWxlbWVudFNjcm9sbGluZyA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHNjcm9sbE1vZGU6IFNjcm9sbGFibGVTY3JvbGxNb2RlID0gJ2NvbnRhaW5lcic7XG5cbiAgQE91dHB1dCgpXG4gIHJlYWRvbmx5IHNjcm9sbFN0YXRlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxTY3JvbGxPYnNlcnZlclNjcm9sbFN0YXRlPigpO1xuXG4gIEBWaWV3Q2hpbGQoJ3Njcm9sbGFibGUnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBzY3JvbGxhYmxlITogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgQENvbnRlbnRDaGlsZHJlbihJU19BQ1RJVkVfRUxFTUVOVCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICBhY3RpdmVFbGVtZW50czogVHlwZWRRdWVyeUxpc3Q8SXNBY3RpdmVFbGVtZW50RGlyZWN0aXZlPiB8IG51bGwgPSBudWxsO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oSVNfRUxFTUVOVCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICBlbGVtZW50czogVHlwZWRRdWVyeUxpc3Q8SXNFbGVtZW50RGlyZWN0aXZlPiB8IG51bGwgPSBudWxsO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBzY3JvbGxTdGF0ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNjcm9sbE9ic2VydmVyU2Nyb2xsU3RhdGUgfCBudWxsPihudWxsKTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNjcm9sbFN0YXRlJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoc3RhdGUpID0+IHtcbiAgICAgICAgICBpZiAoIXN0YXRlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcblxuICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLnNldEF0dHJpYnV0ZShlbGVtZW50LCAnYXQtc3RhcnQnLCBzdGF0ZS5pc0F0U3RhcnQudG9TdHJpbmcoKSk7XG4gICAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0QXR0cmlidXRlKGVsZW1lbnQsICdhdC1lbmQnLCBzdGF0ZS5pc0F0RW5kLnRvU3RyaW5nKCkpO1xuICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLnNldEF0dHJpYnV0ZShlbGVtZW50LCAnY2FuLXNjcm9sbCcsIHN0YXRlLmNhblNjcm9sbC50b1N0cmluZygpKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmFjdGl2ZUVsZW1lbnRzIHx8ICF0aGlzLmVsZW1lbnRzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5hY3RpdmVFbGVtZW50cy5jaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgc3RhcnRXaXRoKHRoaXMuYWN0aXZlRWxlbWVudHMpLFxuICAgICAgICB0YXAoKGFjdGl2ZUVsZW1lbnRzKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuZGlzYWJsZUFjdGl2ZUVsZW1lbnRTY3JvbGxpbmcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBmaXJzdEFjdGl2ZSA9IGFjdGl2ZUVsZW1lbnRzXG4gICAgICAgICAgICAuZmlsdGVyKChhKTogYSBpcyBJc0FjdGl2ZUVsZW1lbnREaXJlY3RpdmUgPT4gISFhKVxuICAgICAgICAgICAgLmZpbmQoKGEpID0+IGEuaXNBY3RpdmVFbGVtZW50KTtcblxuICAgICAgICAgIGlmICghZmlyc3RBY3RpdmUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBzY3JvbGxUb0VsZW1lbnQoe1xuICAgICAgICAgICAgYmVoYXZpb3I6ICdhdXRvJyxcbiAgICAgICAgICAgIGNvbnRhaW5lcjogdGhpcy5zY3JvbGxhYmxlLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICBlbGVtZW50OiBmaXJzdEFjdGl2ZS5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICBzY3JvbGxJbmxpbmVNYXJnaW46IHRoaXMuZGlyZWN0aW9uID09PSAnaG9yaXpvbnRhbCcgPyB0aGlzLmFjdGl2ZUVsZW1lbnRTY3JvbGxNYXJnaW4gOiAwLFxuICAgICAgICAgICAgc2Nyb2xsQmxvY2tNYXJnaW46IHRoaXMuZGlyZWN0aW9uID09PSAnaG9yaXpvbnRhbCcgPyAwIDogdGhpcy5hY3RpdmVFbGVtZW50U2Nyb2xsTWFyZ2luLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfc2Nyb2xsU3RhdGVDaGFuZ2VkKHNjcm9sbFN0YXRlOiBTY3JvbGxPYnNlcnZlclNjcm9sbFN0YXRlKSB7XG4gICAgaWYgKGVxdWFsKHRoaXMuc2Nyb2xsU3RhdGUkLnZhbHVlLCBzY3JvbGxTdGF0ZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNjcm9sbFN0YXRlJC5uZXh0KHNjcm9sbFN0YXRlKTtcbiAgICB0aGlzLnNjcm9sbFN0YXRlQ2hhbmdlLmVtaXQoc2Nyb2xsU3RhdGUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNjcm9sbFRvU3RhcnREaXJlY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMuc2Nyb2xsTW9kZSA9PT0gJ2NvbnRhaW5lcicpIHtcbiAgICAgIHRoaXMuc2Nyb2xsT25lQ29udGFpbmVyU2l6ZSgnc3RhcnQnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zY3JvbGxPbmVJdGVtU2l6ZSgnc3RhcnQnKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgc2Nyb2xsVG9TdGFydEVuZCgpIHtcbiAgICBpZiAodGhpcy5zY3JvbGxNb2RlID09PSAnY29udGFpbmVyJykge1xuICAgICAgdGhpcy5zY3JvbGxPbmVDb250YWluZXJTaXplKCdlbmQnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zY3JvbGxPbmVJdGVtU2l6ZSgnZW5kJyk7XG4gICAgfVxuICB9XG5cbiAgc2Nyb2xsT25lQ29udGFpbmVyU2l6ZShkaXJlY3Rpb246ICdzdGFydCcgfCAnZW5kJykge1xuICAgIGNvbnN0IHNjcm9sbEVsZW1lbnQgPSB0aGlzLnNjcm9sbGFibGUubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICBjb25zdCBzY3JvbGxhYmxlU2l6ZSA9IHRoaXMuZGlyZWN0aW9uID09PSAnaG9yaXpvbnRhbCcgPyBwYXJlbnQuY2xpZW50V2lkdGggOiBwYXJlbnQuY2xpZW50SGVpZ2h0O1xuICAgIGNvbnN0IGN1cnJlbnRTY3JvbGwgPSB0aGlzLmRpcmVjdGlvbiA9PT0gJ2hvcml6b250YWwnID8gc2Nyb2xsRWxlbWVudC5zY3JvbGxMZWZ0IDogc2Nyb2xsRWxlbWVudC5zY3JvbGxUb3A7XG5cbiAgICBzY3JvbGxFbGVtZW50LnNjcm9sbFRvKHtcbiAgICAgIFt0aGlzLmRpcmVjdGlvbiA9PT0gJ2hvcml6b250YWwnID8gJ2xlZnQnIDogJ3RvcCddOlxuICAgICAgICBjdXJyZW50U2Nyb2xsICsgKGRpcmVjdGlvbiA9PT0gJ3N0YXJ0JyA/IC1zY3JvbGxhYmxlU2l6ZSA6IHNjcm9sbGFibGVTaXplKSxcbiAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcbiAgICB9KTtcbiAgfVxuXG4gIHNjcm9sbE9uZUl0ZW1TaXplKGRpcmVjdGlvbjogJ3N0YXJ0JyB8ICdlbmQnKSB7XG4gICAgY29uc3QgZWxlbWVudHMgPSB0aGlzLmVsZW1lbnRzPy50b0FycmF5KCkgPz8gW107XG5cbiAgICBpZiAoIWVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAnTm8gZWxlbWVudHMgZm91bmQgdG8gc2Nyb2xsIHRvLiBNYWtlIHN1cmUgdG8gYXBwbHkgdGhlIGlzRWxlbWVudCBkaXJlY3RpdmUgdG8gdGhlIGVsZW1lbnRzIHlvdSB3YW50IHRvIHNjcm9sbCB0by4nLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHNjcm9sbEVsZW1lbnQgPSB0aGlzLnNjcm9sbGFibGUubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICBjb25zdCBjdXJyZW50U2Nyb2xsID0gdGhpcy5kaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJyA/IHNjcm9sbEVsZW1lbnQuc2Nyb2xsTGVmdCA6IHNjcm9sbEVsZW1lbnQuc2Nyb2xsVG9wO1xuXG4gICAgY29uc3Qgc2Nyb2xsYWJsZUVsZW1lbnRzID0gZWxlbWVudHMuZmlsdGVyKChlKSA9PiB7XG4gICAgICBpZiAoIWUpIHJldHVybiBmYWxzZTtcblxuICAgICAgY29uc3QgcmVjdCA9IGUuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICBpZiAodGhpcy5kaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJykge1xuICAgICAgICByZXR1cm4gZGlyZWN0aW9uID09PSAnc3RhcnQnID8gcmVjdC5sZWZ0IDwgMCA6IHJlY3QucmlnaHQgPiBwYXJlbnQuY2xpZW50V2lkdGg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZGlyZWN0aW9uID09PSAnc3RhcnQnID8gcmVjdC50b3AgPCAwIDogcmVjdC5ib3R0b20gPiBwYXJlbnQuY2xpZW50SGVpZ2h0O1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKCFzY3JvbGxhYmxlRWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc2Nyb2xsYWJsZUVsZW1lbnRSZWYgPVxuICAgICAgZGlyZWN0aW9uID09PSAnc3RhcnQnID8gc2Nyb2xsYWJsZUVsZW1lbnRzW3Njcm9sbGFibGVFbGVtZW50cy5sZW5ndGggLSAxXSA6IHNjcm9sbGFibGVFbGVtZW50c1swXTtcblxuICAgIGlmICghc2Nyb2xsYWJsZUVsZW1lbnRSZWYpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzY3JvbGxhYmxlRWxlbWVudCA9IHNjcm9sbGFibGVFbGVtZW50UmVmLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCBzY3JvbGxhYmxlRWxlbWVudFJlY3QgPSBzY3JvbGxhYmxlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgIGNvbnN0IHNjcm9sbENvbnRhaW5lclNpemUgPSB0aGlzLmRpcmVjdGlvbiA9PT0gJ2hvcml6b250YWwnID8gcGFyZW50LmNsaWVudFdpZHRoIDogcGFyZW50LmNsaWVudEhlaWdodDtcbiAgICBjb25zdCBkb2NTaXplID0gdGhpcy5kaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJyA/IGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGggOiBkb2N1bWVudC5ib2R5LmNsaWVudEhlaWdodDtcblxuICAgIGNvbnN0IG9mZnNldFNpemUgPSBkb2NTaXplIC0gc2Nyb2xsQ29udGFpbmVyU2l6ZTtcbiAgICBjb25zdCBvZmZzZXQgPSBvZmZzZXRTaXplID8gb2Zmc2V0U2l6ZSAvIDIgOiAwO1xuICAgIGNvbnN0IHNjcm9sbEZvciA9IE1hdGgucm91bmQoY3VycmVudFNjcm9sbCArIHNjcm9sbGFibGVFbGVtZW50UmVjdC5sZWZ0IC0gb2Zmc2V0KTtcblxuICAgIHNjcm9sbEVsZW1lbnQuc2Nyb2xsVG8oe1xuICAgICAgW3RoaXMuZGlyZWN0aW9uID09PSAnaG9yaXpvbnRhbCcgPyAnbGVmdCcgOiAndG9wJ106IHNjcm9sbEZvcixcbiAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcbiAgICB9KTtcbiAgfVxufVxuIiwiPGRpdlxuICAjc2Nyb2xsYWJsZVxuICBbYXR0ci5yb2xlXT1cInNjcm9sbGFibGVSb2xlID8/IHVuZGVmaW5lZFwiXG4gIFtuZ0NsYXNzXT1cInNjcm9sbGFibGVDbGFzc1wiXG4gIFtldEN1cnNvckRyYWdTY3JvbGxdPVwiY3Vyc29yRHJhZ1Njcm9sbFwiXG4gIFthbGxvd2VkRGlyZWN0aW9uXT1cImRpcmVjdGlvblwiXG4gIChldE9ic2VydmVTY3JvbGxTdGF0ZSk9XCJfc2Nyb2xsU3RhdGVDaGFuZ2VkKCRldmVudClcIlxuICBjbGFzcz1cImV0LXNjcm9sbGFibGUtY29udGFpbmVyXCJcbj5cbiAgPG5nLWNvbnRlbnQgLz5cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwicmVuZGVyTWFza3NcIiBjbGFzcz1cImV0LXNjcm9sbGFibGUtbWFza3NcIj5cbiAgPGRpdiBjbGFzcz1cImV0LXNjcm9sbGFibGUtbWFzayBldC1zY3JvbGxhYmxlLW1hc2stLXN0YXJ0XCI+PC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJldC1zY3JvbGxhYmxlLW1hc2sgZXQtc2Nyb2xsYWJsZS1tYXNrLS1lbmRcIj48L2Rpdj5cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwicmVuZGVyQnV0dG9uc1wiIGNsYXNzPVwiZXQtc2Nyb2xsYWJsZS1idXR0b25zXCI+XG4gIDxidXR0b25cbiAgICAoY2xpY2spPVwic2Nyb2xsVG9TdGFydERpcmVjdGlvbigpXCJcbiAgICBjbGFzcz1cImV0LXNjcm9sbGFibGUtYnV0dG9uIGV0LXNjcm9sbGFibGUtYnV0dG9uLS1zdGFydFwiXG4gICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICB0YWJpbmRleD1cIi0xXCJcbiAgPlxuICAgIDxldC1jaGV2cm9uLWljb24gLz5cbiAgPC9idXR0b24+XG4gIDxidXR0b25cbiAgICAoY2xpY2spPVwic2Nyb2xsVG9TdGFydEVuZCgpXCJcbiAgICBjbGFzcz1cImV0LXNjcm9sbGFibGUtYnV0dG9uIGV0LXNjcm9sbGFibGUtYnV0dG9uLS1lbmRcIlxuICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgdGFiaW5kZXg9XCItMVwiXG4gID5cbiAgICA8ZXQtY2hldnJvbi1pY29uIC8+XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG4iXX0=
|
|
309
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsYWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL2NvbXBvbmVudHMvc2Nyb2xsYWJsZS9jb21wb25lbnRzL3Njcm9sbGFibGUvc2Nyb2xsYWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL2NvbXBvbmVudHMvc2Nyb2xsYWJsZS9jb21wb25lbnRzL3Njcm9sbGFibGUvc2Nyb2xsYWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLGdCQUFnQixFQUNoQixNQUFNLEVBQ04sU0FBUyxFQUNULGVBQWUsR0FDaEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLHlCQUF5QixFQUN6QixpQkFBaUIsRUFDakIsVUFBVSxFQUdWLFlBQVksRUFFWiwyQkFBMkIsRUFJM0IsYUFBYSxFQUNiLEtBQUssRUFDTCx1QkFBdUIsRUFDdkIsZUFBZSxHQUNoQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQWV0RCxNQUFNLE9BQU8sbUJBQW1CO0lBWmhDO1FBYW1CLGNBQVMsR0FBRyxhQUFh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QkFJUCxVQUFVO3NCQURULFNBQVM7dUJBQUMsWUFBWSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJekMsY0FBYztzQkFEYixlQUFlO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtnQkFJekQsUUFBUTtzQkFEUCxlQUFlO3VCQUFDLFVBQVUsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0NsYXNzLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBSZW5kZXJlcjIsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIGluamVjdCxcbiAgaXNEZXZNb2RlLFxuICBudW1iZXJBdHRyaWJ1dGUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ3Vyc29yRHJhZ1Njcm9sbERpcmVjdGl2ZSxcbiAgSVNfQUNUSVZFX0VMRU1FTlQsXG4gIElTX0VMRU1FTlQsXG4gIElzQWN0aXZlRWxlbWVudERpcmVjdGl2ZSxcbiAgSXNFbGVtZW50RGlyZWN0aXZlLFxuICBMZXREaXJlY3RpdmUsXG4gIE5nQ2xhc3NUeXBlLFxuICBPYnNlcnZlU2Nyb2xsU3RhdGVEaXJlY3RpdmUsXG4gIFNjcm9sbE9ic2VydmVyU2Nyb2xsU3RhdGUsXG4gIFNjcm9sbFRvRWxlbWVudE9wdGlvbnMsXG4gIFR5cGVkUXVlcnlMaXN0LFxuICBjcmVhdGVEZXN0cm95LFxuICBlcXVhbCxcbiAgZ2V0RWxlbWVudFZpc2libGVTdGF0ZXMsXG4gIHNjcm9sbFRvRWxlbWVudCxcbn0gZnJvbSAnQGV0aGxldGUvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGRlYm91bmNlVGltZSwgZnJvbUV2ZW50LCBtZXJnZSwgc3RhcnRXaXRoLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ2hldnJvbkljb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9pY29ucyc7XG5pbXBvcnQgeyBTY3JvbGxhYmxlSW50ZXJzZWN0aW9uQ2hhbmdlLCBTY3JvbGxhYmxlU2Nyb2xsTW9kZSB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZXQtc2Nyb2xsYWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9zY3JvbGxhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2Nyb2xsYWJsZS5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW0N1cnNvckRyYWdTY3JvbGxEaXJlY3RpdmUsIE9ic2VydmVTY3JvbGxTdGF0ZURpcmVjdGl2ZSwgTmdDbGFzcywgTmdJZiwgTGV0RGlyZWN0aXZlLCBDaGV2cm9uSWNvbkNvbXBvbmVudF0sXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2V0LXNjcm9sbGFibGUnLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBTY3JvbGxhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSQgPSBjcmVhdGVEZXN0cm95KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VsZW1lbnRSZWYgPSBpbmplY3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KEVsZW1lbnRSZWYpO1xuXG4gIHByaXZhdGUgX2lzQ3Vyc29yRHJhZ2dpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgQElucHV0KClcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLml0ZW0tc2l6ZScpXG4gIGl0ZW1TaXplOiAnYXV0bycgfCAnc2FtZScgPSAnYXV0byc7XG5cbiAgQElucHV0KClcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmRpcmVjdGlvbicpXG4gIGRpcmVjdGlvbjogJ2hvcml6b250YWwnIHwgJ3ZlcnRpY2FsJyA9ICdob3Jpem9udGFsJztcblxuICBASW5wdXQoKVxuICBzY3JvbGxhYmxlUm9sZT86IHN0cmluZztcblxuICBASW5wdXQoKVxuICBzY3JvbGxhYmxlQ2xhc3M/OiBOZ0NsYXNzVHlwZTtcblxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgcmVuZGVyTWFza3MgPSB0cnVlO1xuXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICByZW5kZXJCdXR0b25zID0gdHJ1ZTtcblxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnJlbmRlci1zY3JvbGxiYXJzJylcbiAgcmVuZGVyU2Nyb2xsYmFycyA9IGZhbHNlO1xuXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBASG9zdEJpbmRpbmcoJ2F0dHIuc3RpY2t5LWJ1dHRvbnMnKVxuICBzdGlja3lCdXR0b25zID0gZmFsc2U7XG5cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIGN1cnNvckRyYWdTY3JvbGwgPSB0cnVlO1xuXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBkaXNhYmxlQWN0aXZlRWxlbWVudFNjcm9sbGluZyA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHNjcm9sbE1vZGU6IFNjcm9sbGFibGVTY3JvbGxNb2RlID0gJ2NvbnRhaW5lcic7XG5cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHNuYXAgPSBmYWxzZTtcblxuICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KVxuICBzY3JvbGxNYXJnaW4gPSAwO1xuXG4gIEBPdXRwdXQoKVxuICByZWFkb25seSBzY3JvbGxTdGF0ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U2Nyb2xsT2JzZXJ2ZXJTY3JvbGxTdGF0ZT4oKTtcblxuICBAT3V0cHV0KClcbiAgcmVhZG9ubHkgaW50ZXJzZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxTY3JvbGxhYmxlSW50ZXJzZWN0aW9uQ2hhbmdlW10+KCk7XG5cbiAgQFZpZXdDaGlsZCgnc2Nyb2xsYWJsZScsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHNjcm9sbGFibGUhOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICBAQ29udGVudENoaWxkcmVuKElTX0FDVElWRV9FTEVNRU5ULCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gIGFjdGl2ZUVsZW1lbnRzOiBUeXBlZFF1ZXJ5TGlzdDxJc0FjdGl2ZUVsZW1lbnREaXJlY3RpdmU+IHwgbnVsbCA9IG51bGw7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihJU19FTEVNRU5ULCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gIGVsZW1lbnRzOiBUeXBlZFF1ZXJ5TGlzdDxJc0VsZW1lbnREaXJlY3RpdmU+IHwgbnVsbCA9IG51bGw7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNjcm9sbFN0YXRlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2Nyb2xsT2JzZXJ2ZXJTY3JvbGxTdGF0ZSB8IG51bGw+KG51bGwpO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2Nyb2xsU3RhdGUkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKChzdGF0ZSkgPT4ge1xuICAgICAgICAgIGlmICghc3RhdGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuXG4gICAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0QXR0cmlidXRlKGVsZW1lbnQsICdhdC1zdGFydCcsIHN0YXRlLmlzQXRTdGFydC50b1N0cmluZygpKTtcbiAgICAgICAgICB0aGlzLl9yZW5kZXJlci5zZXRBdHRyaWJ1dGUoZWxlbWVudCwgJ2F0LWVuZCcsIHN0YXRlLmlzQXRFbmQudG9TdHJpbmcoKSk7XG4gICAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0QXR0cmlidXRlKGVsZW1lbnQsICdjYW4tc2Nyb2xsJywgc3RhdGUuY2FuU2Nyb2xsLnRvU3RyaW5nKCkpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIHRoaXMuX3NldHVwU2Nyb2xsTGlzdGVuaW5nKCk7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmFjdGl2ZUVsZW1lbnRzIHx8ICF0aGlzLmVsZW1lbnRzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5hY3RpdmVFbGVtZW50cy5jaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgc3RhcnRXaXRoKHRoaXMuYWN0aXZlRWxlbWVudHMpLFxuICAgICAgICB0YXAoKGFjdGl2ZUVsZW1lbnRzKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuZGlzYWJsZUFjdGl2ZUVsZW1lbnRTY3JvbGxpbmcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBmaXJzdEFjdGl2ZSA9IGFjdGl2ZUVsZW1lbnRzXG4gICAgICAgICAgICAuZmlsdGVyKChhKTogYSBpcyBJc0FjdGl2ZUVsZW1lbnREaXJlY3RpdmUgPT4gISFhKVxuICAgICAgICAgICAgLmZpbmQoKGEpID0+IGEuaXNBY3RpdmVFbGVtZW50KTtcblxuICAgICAgICAgIGlmICghZmlyc3RBY3RpdmUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBzY3JvbGxUb0VsZW1lbnQoe1xuICAgICAgICAgICAgYmVoYXZpb3I6ICdhdXRvJyxcbiAgICAgICAgICAgIGNvbnRhaW5lcjogdGhpcy5zY3JvbGxhYmxlLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICBlbGVtZW50OiBmaXJzdEFjdGl2ZS5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICBzY3JvbGxJbmxpbmVNYXJnaW46IHRoaXMuZGlyZWN0aW9uID09PSAnaG9yaXpvbnRhbCcgPyB0aGlzLnNjcm9sbE1hcmdpbiA6IDAsXG4gICAgICAgICAgICBzY3JvbGxCbG9ja01hcmdpbjogdGhpcy5kaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJyA/IDAgOiB0aGlzLnNjcm9sbE1hcmdpbixcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBzY3JvbGxPbmVDb250YWluZXJTaXplKGRpcmVjdGlvbjogJ3N0YXJ0JyB8ICdlbmQnKSB7XG4gICAgY29uc3Qgc2Nyb2xsRWxlbWVudCA9IHRoaXMuc2Nyb2xsYWJsZS5uYXRpdmVFbGVtZW50O1xuICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcblxuICAgIGNvbnN0IHNjcm9sbGFibGVTaXplID0gdGhpcy5kaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJyA/IHBhcmVudC5jbGllbnRXaWR0aCA6IHBhcmVudC5jbGllbnRIZWlnaHQ7XG4gICAgY29uc3QgY3VycmVudFNjcm9sbCA9IHRoaXMuZGlyZWN0aW9uID09PSAnaG9yaXpvbnRhbCcgPyBzY3JvbGxFbGVtZW50LnNjcm9sbExlZnQgOiBzY3JvbGxFbGVtZW50LnNjcm9sbFRvcDtcblxuICAgIHNjcm9sbEVsZW1lbnQuc2Nyb2xsVG8oe1xuICAgICAgW3RoaXMuZGlyZWN0aW9uID09PSAnaG9yaXpvbnRhbCcgPyAnbGVmdCcgOiAndG9wJ106XG4gICAgICAgIGN1cnJlbnRTY3JvbGwgKyAoZGlyZWN0aW9uID09PSAnc3RhcnQnID8gLXNjcm9sbGFibGVTaXplIDogc2Nyb2xsYWJsZVNpemUpLFxuICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnLFxuICAgIH0pO1xuICB9XG5cbiAgc2Nyb2xsT25lSXRlbVNpemUoZGlyZWN0aW9uOiAnc3RhcnQnIHwgJ2VuZCcpIHtcbiAgICBjb25zdCBlbGVtZW50cyA9IHRoaXMuZWxlbWVudHM/LnRvQXJyYXkoKSA/PyBbXTtcblxuICAgIGlmICghZWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICdObyBlbGVtZW50cyBmb3VuZCB0byBzY3JvbGwgdG8uIE1ha2Ugc3VyZSB0byBhcHBseSB0aGUgaXNFbGVtZW50IGRpcmVjdGl2ZSB0byB0aGUgZWxlbWVudHMgeW91IHdhbnQgdG8gc2Nyb2xsIHRvLicsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc2Nyb2xsRWxlbWVudCA9IHRoaXMuc2Nyb2xsYWJsZS5uYXRpdmVFbGVtZW50O1xuICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcblxuICAgIGNvbnN0IGN1cnJlbnRTY3JvbGwgPSB0aGlzLmRpcmVjdGlvbiA9PT0gJ2hvcml6b250YWwnID8gc2Nyb2xsRWxlbWVudC5zY3JvbGxMZWZ0IDogc2Nyb2xsRWxlbWVudC5zY3JvbGxUb3A7XG5cbiAgICBjb25zdCBzY3JvbGxhYmxlRWxlbWVudHMgPSBlbGVtZW50cy5maWx0ZXIoKGUpID0+IHtcbiAgICAgIGlmICghZSkgcmV0dXJuIGZhbHNlO1xuXG4gICAgICBjb25zdCByZWN0ID0gZS5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgIGlmICh0aGlzLmRpcmVjdGlvbiA9PT0gJ2hvcml6b250YWwnKSB7XG4gICAgICAgIHJldHVybiBkaXJlY3Rpb24gPT09ICdzdGFydCcgPyByZWN0LmxlZnQgPCAwIDogcmVjdC5yaWdodCA+IHBhcmVudC5jbGllbnRXaWR0aDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBkaXJlY3Rpb24gPT09ICdzdGFydCcgPyByZWN0LnRvcCA8IDAgOiByZWN0LmJvdHRvbSA+IHBhcmVudC5jbGllbnRIZWlnaHQ7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoIXNjcm9sbGFibGVFbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzY3JvbGxhYmxlRWxlbWVudFJlZiA9XG4gICAgICBkaXJlY3Rpb24gPT09ICdzdGFydCcgPyBzY3JvbGxhYmxlRWxlbWVudHNbc2Nyb2xsYWJsZUVsZW1lbnRzLmxlbmd0aCAtIDFdIDogc2Nyb2xsYWJsZUVsZW1lbnRzWzBdO1xuXG4gICAgaWYgKCFzY3JvbGxhYmxlRWxlbWVudFJlZikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHNjcm9sbGFibGVFbGVtZW50ID0gc2Nyb2xsYWJsZUVsZW1lbnRSZWYuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIGNvbnN0IHNjcm9sbGFibGVFbGVtZW50UmVjdCA9IHNjcm9sbGFibGVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgY29uc3Qgc2Nyb2xsQ29udGFpbmVyU2l6ZSA9IHRoaXMuZGlyZWN0aW9uID09PSAnaG9yaXpvbnRhbCcgPyBwYXJlbnQuY2xpZW50V2lkdGggOiBwYXJlbnQuY2xpZW50SGVpZ2h0O1xuICAgIGNvbnN0IGRvY1NpemUgPSB0aGlzLmRpcmVjdGlvbiA9PT0gJ2hvcml6b250YWwnID8gZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCA6IGRvY3VtZW50LmJvZHkuY2xpZW50SGVpZ2h0O1xuXG4gICAgY29uc3Qgb2Zmc2V0U2l6ZSA9IGRvY1NpemUgLSBzY3JvbGxDb250YWluZXJTaXplO1xuICAgIGNvbnN0IG9mZnNldCA9IG9mZnNldFNpemUgPyBvZmZzZXRTaXplIC8gMiA6IDA7XG4gICAgY29uc3Qgc2Nyb2xsRm9yID0gTWF0aC5yb3VuZChjdXJyZW50U2Nyb2xsICsgc2Nyb2xsYWJsZUVsZW1lbnRSZWN0LmxlZnQgLSBvZmZzZXQpO1xuXG4gICAgc2Nyb2xsRWxlbWVudC5zY3JvbGxUbyh7XG4gICAgICBbdGhpcy5kaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJyA/ICdsZWZ0JyA6ICd0b3AnXTogc2Nyb2xsRm9yLFxuICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnLFxuICAgIH0pO1xuICB9XG5cbiAgc2Nyb2xsVG9FbGVtZW50KG9wdGlvbnM6IE9taXQ8U2Nyb2xsVG9FbGVtZW50T3B0aW9ucywgJ2NvbnRhaW5lcic+KSB7XG4gICAgY29uc3Qgc2Nyb2xsRWxlbWVudCA9IHRoaXMuc2Nyb2xsYWJsZS5uYXRpdmVFbGVtZW50O1xuXG4gICAgc2Nyb2xsVG9FbGVtZW50KHtcbiAgICAgIGNvbnRhaW5lcjogc2Nyb2xsRWxlbWVudCxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG4gIH1cblxuICBzY3JvbGxUb0VsZW1lbnRCeUluZGV4KG9wdGlvbnM6IE9taXQ8U2Nyb2xsVG9FbGVtZW50T3B0aW9ucywgJ2NvbnRhaW5lcic+ICYgeyBpbmRleDogbnVtYmVyIH0pIHtcbiAgICBjb25zdCBlbGVtZW50cyA9IHRoaXMuZWxlbWVudHM/LnRvQXJyYXkoKSA/PyBbXTtcblxuICAgIGlmICghZWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICdObyBlbGVtZW50cyBmb3VuZCB0byBzY3JvbGwgdG8uIE1ha2Ugc3VyZSB0byBhcHBseSB0aGUgaXNFbGVtZW50IGRpcmVjdGl2ZSB0byB0aGUgZWxlbWVudHMgeW91IHdhbnQgdG8gc2Nyb2xsIHRvLicsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc2Nyb2xsRWxlbWVudCA9IHRoaXMuc2Nyb2xsYWJsZS5uYXRpdmVFbGVtZW50O1xuICAgIGNvbnN0IGVsZW1lbnQgPSBlbGVtZW50c1tvcHRpb25zLmluZGV4XT8uZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuXG4gICAgc2Nyb2xsVG9FbGVtZW50KHtcbiAgICAgIGNvbnRhaW5lcjogc2Nyb2xsRWxlbWVudCxcbiAgICAgIGVsZW1lbnQsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldElzQ3Vyc29yRHJhZ2dpbmcoaXNEcmFnZ2luZzogYm9vbGVhbikge1xuICAgIHRoaXMuX2lzQ3Vyc29yRHJhZ2dpbmckLm5leHQoaXNEcmFnZ2luZyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgX3Njcm9sbFN0YXRlQ2hhbmdlZChzY3JvbGxTdGF0ZTogU2Nyb2xsT2JzZXJ2ZXJTY3JvbGxTdGF0ZSkge1xuICAgIGlmIChlcXVhbCh0aGlzLnNjcm9sbFN0YXRlJC52YWx1ZSwgc2Nyb2xsU3RhdGUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zY3JvbGxTdGF0ZSQubmV4dChzY3JvbGxTdGF0ZSk7XG4gICAgdGhpcy5zY3JvbGxTdGF0ZUNoYW5nZS5lbWl0KHNjcm9sbFN0YXRlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzY3JvbGxUb1N0YXJ0RGlyZWN0aW9uKCkge1xuICAgIGlmICh0aGlzLnNjcm9sbE1vZGUgPT09ICdjb250YWluZXInKSB7XG4gICAgICB0aGlzLnNjcm9sbE9uZUNvbnRhaW5lclNpemUoJ3N0YXJ0Jyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2Nyb2xsT25lSXRlbVNpemUoJ3N0YXJ0Jyk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHNjcm9sbFRvU3RhcnRFbmQoKSB7XG4gICAgaWYgKHRoaXMuc2Nyb2xsTW9kZSA9PT0gJ2NvbnRhaW5lcicpIHtcbiAgICAgIHRoaXMuc2Nyb2xsT25lQ29udGFpbmVyU2l6ZSgnZW5kJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2Nyb2xsT25lSXRlbVNpemUoJ2VuZCcpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3NldHVwU2Nyb2xsTGlzdGVuaW5nKCkge1xuICAgIGNvbnN0IHNjcm9sbEVsZW1lbnQgPSB0aGlzLnNjcm9sbGFibGUubmF0aXZlRWxlbWVudDtcbiAgICBsZXQgaXNTbmFwcGluZyA9IGZhbHNlO1xuICAgIGxldCBzbmFwVGltZW91dCA9IDA7XG5cbiAgICBtZXJnZShmcm9tRXZlbnQ8V2hlZWxFdmVudD4oc2Nyb2xsRWxlbWVudCwgJ3doZWVsJyksIGZyb21FdmVudDxUb3VjaEV2ZW50PihzY3JvbGxFbGVtZW50LCAndG91Y2hzdGFydCcpKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgaXNTbmFwcGluZyA9IGZhbHNlO1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIG1lcmdlKGZyb21FdmVudChzY3JvbGxFbGVtZW50LCAnc2Nyb2xsJyksIHRoaXMuX2lzQ3Vyc29yRHJhZ2dpbmckKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGRlYm91bmNlVGltZSgyNSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgZWxlbWVudHMgPVxuICAgICAgICAgICAgdGhpcy5lbGVtZW50c1xuICAgICAgICAgICAgICA/LnRvQXJyYXkoKVxuICAgICAgICAgICAgICAubWFwKChlKSA9PiBlPy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpXG4gICAgICAgICAgICAgIC5maWx0ZXIoKGUpOiBlIGlzIEhUTUxFbGVtZW50ID0+ICEhZSkgPz8gW107XG5cbiAgICAgICAgICBpZiAoIWVsZW1lbnRzLmxlbmd0aCkgcmV0dXJuO1xuXG4gICAgICAgICAgY29uc3Qgc3RhdGVzID0gZ2V0RWxlbWVudFZpc2libGVTdGF0ZXMoe1xuICAgICAgICAgICAgZWxlbWVudHMsXG4gICAgICAgICAgICBjb250YWluZXI6IHNjcm9sbEVsZW1lbnQsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBjb25zdCBwcm9wID0gdGhpcy5kaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJyA/ICdpbmxpbmVJbnRlcnNlY3Rpb24nIDogJ2Jsb2NrSW50ZXJzZWN0aW9uJztcbiAgICAgICAgICBjb25zdCBzdGF0ZUNsYXNzID0gYGV0LWVsZW1lbnQtLWlzLWludGVyc2VjdGluZ2A7XG5cbiAgICAgICAgICBmb3IgKGNvbnN0IHN0YXRlIG9mIHN0YXRlcykge1xuICAgICAgICAgICAgaWYgKHN0YXRlW3Byb3BdID09PSAxMDApIHtcbiAgICAgICAgICAgICAgc3RhdGUuZWxlbWVudC5jbGFzc0xpc3QuYWRkKHN0YXRlQ2xhc3MpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgc3RhdGUuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKHN0YXRlQ2xhc3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuaW50ZXJzZWN0aW9uQ2hhbmdlLmVtaXQoXG4gICAgICAgICAgICBzdGF0ZXMubWFwKChzLCBpKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHN0YXRlOiBTY3JvbGxhYmxlSW50ZXJzZWN0aW9uQ2hhbmdlID0ge1xuICAgICAgICAgICAgICAgIGVsZW1lbnQ6IHMuZWxlbWVudCxcbiAgICAgICAgICAgICAgICBpbnRlcnNlY3Rpb25SYXRpbzogc1twcm9wXSAvIDEwMCxcbiAgICAgICAgICAgICAgICBpc0ludGVyc2VjdGluZzogc1twcm9wXSA9PT0gMTAwLFxuICAgICAgICAgICAgICAgIGluZGV4OiBpLFxuICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBpZiAoaXNTbmFwcGluZyB8fCB0aGlzLl9pc0N1cnNvckRyYWdnaW5nJC52YWx1ZSB8fCAhdGhpcy5zbmFwKSByZXR1cm47XG5cbiAgICAgICAgICBjb25zdCBpc09ubHlPbmVQYXJ0aWFsSW50ZXJzZWN0aW9uID0gc3RhdGVzLmZpbHRlcigocykgPT4gc1twcm9wXSA8IDEwMCAmJiBzW3Byb3BdID4gMCkubGVuZ3RoID09PSAxO1xuXG4gICAgICAgICAgaWYgKGlzT25seU9uZVBhcnRpYWxJbnRlcnNlY3Rpb24pIHJldHVybjtcblxuICAgICAgICAgIGNvbnN0IGhpZ2hlc3RJbnRlcnNlY3RpbmcgPSBzdGF0ZXMucmVkdWNlKChwcmV2LCBjdXJyZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAoY3VycmVudFtwcm9wXSA+IHByZXZbcHJvcF0gJiYgY3VycmVudFtwcm9wXSA8IDEwMCkge1xuICAgICAgICAgICAgICByZXR1cm4gY3VycmVudDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHByZXY7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBjb25zdCBmdWxsSW50ZXJzZWN0aW9uSW5kZXggPSBzdGF0ZXMuZmluZEluZGV4KChzKSA9PiBzW3Byb3BdID09PSAxMDApO1xuICAgICAgICAgIGNvbnN0IGhpZ2hlc3RJbnRlcnNlY3RpbmdJbmRleCA9IHN0YXRlcy5maW5kSW5kZXgoKHMpID0+IHMgPT09IGhpZ2hlc3RJbnRlcnNlY3RpbmcpO1xuXG4gICAgICAgICAgY29uc3Qgb3JpZ2luID0gaGlnaGVzdEludGVyc2VjdGluZ0luZGV4ID4gZnVsbEludGVyc2VjdGlvbkluZGV4ID8gJ2VuZCcgOiAnc3RhcnQnO1xuXG4gICAgICAgICAgaWYgKCFoaWdoZXN0SW50ZXJzZWN0aW5nIHx8IGhpZ2hlc3RJbnRlcnNlY3RpbmdbcHJvcF0gPT09IDEwMCkgcmV0dXJuO1xuXG4gICAgICAgICAgc2Nyb2xsVG9FbGVtZW50KHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogc2Nyb2xsRWxlbWVudCxcbiAgICAgICAgICAgIGVsZW1lbnQ6IGhpZ2hlc3RJbnRlcnNlY3RpbmcuZWxlbWVudCxcbiAgICAgICAgICAgIGRpcmVjdGlvbjogdGhpcy5kaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJyA/ICdpbmxpbmUnIDogJ2Jsb2NrJyxcbiAgICAgICAgICAgIG9yaWdpbixcbiAgICAgICAgICAgIHNjcm9sbEJsb2NrTWFyZ2luOiB0aGlzLmRpcmVjdGlvbiA9PT0gJ2hvcml6b250YWwnID8gMCA6IHRoaXMuc2Nyb2xsTWFyZ2luLFxuICAgICAgICAgICAgc2Nyb2xsSW5saW5lTWFyZ2luOiB0aGlzLmRpcmVjdGlvbiA9PT0gJ2hvcml6b250YWwnID8gdGhpcy5zY3JvbGxNYXJnaW4gOiAwLFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgaXNTbmFwcGluZyA9IHRydWU7XG5cbiAgICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHNuYXBUaW1lb3V0KTtcblxuICAgICAgICAgIHNuYXBUaW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgaXNTbmFwcGluZyA9IGZhbHNlO1xuICAgICAgICAgIH0sIDEwMDApO1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIiwiPGRpdlxuICAjc2Nyb2xsYWJsZVxuICBbYXR0ci5yb2xlXT1cInNjcm9sbGFibGVSb2xlID8/IHVuZGVmaW5lZFwiXG4gIFtuZ0NsYXNzXT1cInNjcm9sbGFibGVDbGFzc1wiXG4gIFtldEN1cnNvckRyYWdTY3JvbGxdPVwiY3Vyc29yRHJhZ1Njcm9sbFwiXG4gIFthbGxvd2VkRGlyZWN0aW9uXT1cImRpcmVjdGlvblwiXG4gIChldE9ic2VydmVTY3JvbGxTdGF0ZSk9XCJfc2Nyb2xsU3RhdGVDaGFuZ2VkKCRldmVudClcIlxuICAoY3Vyc29yRHJhZ1N0YXJ0KT1cInNldElzQ3Vyc29yRHJhZ2dpbmcodHJ1ZSlcIlxuICAoY3Vyc29yRHJhZ0VuZCk9XCJzZXRJc0N1cnNvckRyYWdnaW5nKGZhbHNlKVwiXG4gIGNsYXNzPVwiZXQtc2Nyb2xsYWJsZS1jb250YWluZXJcIlxuPlxuICA8bmctY29udGVudCAvPlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCJyZW5kZXJNYXNrc1wiIGNsYXNzPVwiZXQtc2Nyb2xsYWJsZS1tYXNrc1wiPlxuICA8ZGl2IGNsYXNzPVwiZXQtc2Nyb2xsYWJsZS1tYXNrIGV0LXNjcm9sbGFibGUtbWFzay0tc3RhcnRcIj48L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImV0LXNjcm9sbGFibGUtbWFzayBldC1zY3JvbGxhYmxlLW1hc2stLWVuZFwiPjwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCJyZW5kZXJCdXR0b25zXCIgY2xhc3M9XCJldC1zY3JvbGxhYmxlLWJ1dHRvbnNcIj5cbiAgPGJ1dHRvblxuICAgIChjbGljayk9XCJzY3JvbGxUb1N0YXJ0RGlyZWN0aW9uKClcIlxuICAgIGNsYXNzPVwiZXQtc2Nyb2xsYWJsZS1idXR0b24gZXQtc2Nyb2xsYWJsZS1idXR0b24tLXN0YXJ0XCJcbiAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIHRhYmluZGV4PVwiLTFcIlxuICA+XG4gICAgPGV0LWNoZXZyb24taWNvbiAvPlxuICA8L2J1dHRvbj5cbiAgPGJ1dHRvblxuICAgIChjbGljayk9XCJzY3JvbGxUb1N0YXJ0RW5kKClcIlxuICAgIGNsYXNzPVwiZXQtc2Nyb2xsYWJsZS1idXR0b24gZXQtc2Nyb2xsYWJsZS1idXR0b24tLWVuZFwiXG4gICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICB0YWJpbmRleD1cIi0xXCJcbiAgPlxuICAgIDxldC1jaGV2cm9uLWljb24gLz5cbiAgPC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsYWJsZS50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3NyYy9saWIvY29tcG9uZW50cy9zY3JvbGxhYmxlL3R5cGVzL3Njcm9sbGFibGUudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIFNjcm9sbGFibGVTY3JvbGxNb2RlID0gJ2NvbnRhaW5lcicgfCAnZWxlbWVudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2Nyb2xsYWJsZUludGVyc2VjdGlvbkNoYW5nZSB7XG4gIGVsZW1lbnQ6IEhUTUxFbGVtZW50O1xuICBpbnRlcnNlY3Rpb25SYXRpbzogbnVtYmVyO1xuICBpc0ludGVyc2VjdGluZzogYm9vbGVhbjtcbiAgaW5kZXg6IG51bWJlcjtcbn1cbiJdfQ==
|
|
@@ -1,22 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { ChangeDetectionStrategy, Component, HostBinding, Input, ViewEncapsulation } from '@angular/core';
|
|
1
|
+
import { ChangeDetectionStrategy, Component, HostBinding, Input, ViewEncapsulation, booleanAttribute, } from '@angular/core';
|
|
3
2
|
import * as i0 from "@angular/core";
|
|
4
|
-
class SkeletonComponent {
|
|
3
|
+
export class SkeletonComponent {
|
|
5
4
|
constructor() {
|
|
6
5
|
this.loadingAllyText = 'Loading...';
|
|
7
|
-
this.
|
|
6
|
+
this.animated = true;
|
|
8
7
|
}
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}
|
|
12
|
-
set animated(value) {
|
|
13
|
-
this._animated = coerceBooleanProperty(value);
|
|
14
|
-
}
|
|
15
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.5", ngImport: i0, type: SkeletonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
16
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.5", type: SkeletonComponent, isStandalone: true, selector: "et-skeleton", inputs: { loadingAllyText: "loadingAllyText", animated: "animated" }, host: { properties: { "class.et-skeleton--animated": "this.animated" }, classAttribute: "et-skeleton" }, ngImport: i0, template: ` <span class="cdk-visually-hidden"> {{ loadingAllyText }} </span> <ng-content />`, isInline: true, styles: [":where(.et-skeleton){--et-skeleton-gradient: linear-gradient( 90deg, rgba(190, 190, 190, 0) 15%, rgba(129, 129, 129, .5) 37%, rgba(190, 190, 190, 0) 63% );--et-skeleton-animation-duration: 3s;--et-skeleton-animation-timing-function: var(--ease-3)}.et-skeleton{display:block;cursor:progress}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
8
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: SkeletonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.0", type: SkeletonComponent, isStandalone: true, selector: "et-skeleton", inputs: { loadingAllyText: "loadingAllyText", animated: ["animated", "animated", booleanAttribute] }, host: { properties: { "class.et-skeleton--animated": "this.animated" }, classAttribute: "et-skeleton" }, ngImport: i0, template: ` <span class="cdk-visually-hidden"> {{ loadingAllyText }} </span> <ng-content />`, isInline: true, styles: [":where(.et-skeleton){--et-skeleton-gradient: linear-gradient( 90deg, rgba(190, 190, 190, 0) 15%, rgba(129, 129, 129, .5) 37%, rgba(190, 190, 190, 0) 63% );--et-skeleton-animation-duration: 3s;--et-skeleton-animation-timing-function: var(--ease-3)}.et-skeleton{display:block;cursor:progress}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
17
10
|
}
|
|
18
|
-
|
|
19
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.5", ngImport: i0, type: SkeletonComponent, decorators: [{
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: SkeletonComponent, decorators: [{
|
|
20
12
|
type: Component,
|
|
21
13
|
args: [{ selector: 'et-skeleton', template: ` <span class="cdk-visually-hidden"> {{ loadingAllyText }} </span> <ng-content />`, standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
22
14
|
class: 'et-skeleton',
|
|
@@ -24,9 +16,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.5", ngImpor
|
|
|
24
16
|
}], propDecorators: { loadingAllyText: [{
|
|
25
17
|
type: Input
|
|
26
18
|
}], animated: [{
|
|
27
|
-
type: Input
|
|
19
|
+
type: Input,
|
|
20
|
+
args: [{ transform: booleanAttribute }]
|
|
28
21
|
}, {
|
|
29
22
|
type: HostBinding,
|
|
30
23
|
args: ['class.et-skeleton--animated']
|
|
31
24
|
}] } });
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2tlbGV0b24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi9jb21wb25lbnRzL3NrZWxldG9uL2NvbXBvbmVudHMvc2tlbGV0b24vc2tlbGV0b24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFdBQVcsRUFDWCxLQUFLLEVBQ0wsaUJBQWlCLEVBQ2pCLGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQzs7QUFhdkIsTUFBTSxPQUFPLGlCQUFpQjtJQVg5QjtRQWFFLG9CQUFlLEdBQUcsWUFBWSxDQUFDO1FBSS9CLGFBQVEsR0FBRyxJQUFJLENBQUM7S0FDakI7OEdBUFksaUJBQWlCO2tHQUFqQixpQkFBaUIsZ0lBSVIsZ0JBQWdCLHNJQWIxQixrRkFBa0Y7OzJGQVNqRixpQkFBaUI7a0JBWDdCLFNBQVM7K0JBQ0UsYUFBYSxZQUNiLGtGQUFrRixjQUVoRixJQUFJLG1CQUNDLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksUUFDL0I7d0JBQ0osS0FBSyxFQUFFLGFBQWE7cUJBQ3JCOzhCQUlELGVBQWU7c0JBRGQsS0FBSztnQkFLTixRQUFRO3NCQUZQLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7O3NCQUNyQyxXQUFXO3VCQUFDLDZCQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdldC1za2VsZXRvbicsXG4gIHRlbXBsYXRlOiBgIDxzcGFuIGNsYXNzPVwiY2RrLXZpc3VhbGx5LWhpZGRlblwiPiB7eyBsb2FkaW5nQWxseVRleHQgfX0gPC9zcGFuPiA8bmctY29udGVudCAvPmAsXG4gIHN0eWxlVXJsczogWydza2VsZXRvbi5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnZXQtc2tlbGV0b24nLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBTa2VsZXRvbkNvbXBvbmVudCB7XG4gIEBJbnB1dCgpXG4gIGxvYWRpbmdBbGx5VGV4dCA9ICdMb2FkaW5nLi4uJztcblxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5ldC1za2VsZXRvbi0tYW5pbWF0ZWQnKVxuICBhbmltYXRlZCA9IHRydWU7XG59XG4iXX0=
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import { ChangeDetectionStrategy, Component, HostBinding, ViewEncapsulation } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
|
-
class SkeletonItemComponent {
|
|
3
|
+
export class SkeletonItemComponent {
|
|
4
4
|
constructor() {
|
|
5
5
|
this.ariaHidden = true;
|
|
6
6
|
}
|
|
7
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0
|
|
8
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0
|
|
7
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: SkeletonItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
8
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.0", type: SkeletonItemComponent, isStandalone: true, selector: "et-skeleton-item", host: { properties: { "attr.aria-hidden": "this.ariaHidden" }, classAttribute: "et-skeleton-item" }, ngImport: i0, template: ``, isInline: true, styles: [".et-skeleton-item{display:block;overflow:hidden;position:relative}.et-skeleton--animated .et-skeleton-item:before{content:\"\";height:100%;left:0;position:absolute;right:0;top:0;transform:translate(-100%);z-index:1;background:var(--et-skeleton-gradient)}@media (prefers-reduced-motion: no-preference){.et-skeleton--animated .et-skeleton-item:before{animation:skeleton-loading var(--et-skeleton-animation-duration) infinite var(--et-skeleton-animation-timing-function)}}@keyframes skeleton-loading{0%{transform:translate(-100%)}to{transform:translate(100%)}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
9
9
|
}
|
|
10
|
-
|
|
11
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.5", ngImport: i0, type: SkeletonItemComponent, decorators: [{
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: SkeletonItemComponent, decorators: [{
|
|
12
11
|
type: Component,
|
|
13
12
|
args: [{ selector: 'et-skeleton-item', template: ``, standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
14
13
|
class: 'et-skeleton-item',
|
|
@@ -17,4 +16,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.5", ngImpor
|
|
|
17
16
|
type: HostBinding,
|
|
18
17
|
args: ['attr.aria-hidden']
|
|
19
18
|
}] } });
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2tlbGV0b24taXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL2NvbXBvbmVudHMvc2tlbGV0b24vcGFydGlhbHMvc2tlbGV0b24taXRlbS9za2VsZXRvbi1pdGVtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFhbkcsTUFBTSxPQUFPLHFCQUFxQjtJQVhsQztRQWFFLGVBQVUsR0FBRyxJQUFJLENBQUM7S0FDbkI7OEdBSFkscUJBQXFCO2tHQUFyQixxQkFBcUIsaUxBVHRCLEVBQUU7OzJGQVNELHFCQUFxQjtrQkFYakMsU0FBUzsrQkFDRSxrQkFBa0IsWUFDbEIsRUFBRSxjQUVBLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxRQUMvQjt3QkFDSixLQUFLLEVBQUUsa0JBQWtCO3FCQUMxQjs4QkFJRCxVQUFVO3NCQURULFdBQVc7dUJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2V0LXNrZWxldG9uLWl0ZW0nLFxuICB0ZW1wbGF0ZTogYGAsXG4gIHN0eWxlVXJsczogWydza2VsZXRvbi1pdGVtLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdldC1za2VsZXRvbi1pdGVtJyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgU2tlbGV0b25JdGVtQ29tcG9uZW50IHtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtaGlkZGVuJylcbiAgYXJpYUhpZGRlbiA9IHRydWU7XG59XG4iXX0=
|