@ethlete/cdk 4.48.0 → 4.49.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/fesm2022/ethlete-cdk.mjs +964 -880
- package/fesm2022/ethlete-cdk.mjs.map +1 -1
- package/lib/components/bracket/components/new-bracket/bracket-new.d.ts +1620 -0
- package/lib/components/bracket/stories/dummy-data/ET_DUMMY_DATA_DOUBLE_SYNC.d.ts +149 -0
- package/lib/components/bracket/stories/dummy-data/ET_DUMMY_DATA_SINGLE.d.ts +184 -0
- package/lib/components/bracket/stories/dummy-data/ET_DUMMY_DATA_SWISS.d.ts +214 -0
- package/lib/components/bracket/stories/dummy-data/ET_DUMMY_DATE_DOUBLE_ASYNC.d.ts +149 -0
- package/lib/components/bracket/stories/dummy-data/FIFA_DUMMY_DATA_DOUBLE.d.ts +1640 -0
- package/lib/components/bracket/stories/dummy-data/FIFA_DUMMY_DATA_SINGLE.d.ts +2388 -0
- package/lib/components/bracket/stories/dummy-data/index.d.ts +6 -0
- 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/overlay/components/bottom-sheet/services/bottom-sheet-base.service.d.ts +1 -1
- package/lib/components/overlay/components/dialog/services/dialog-base.service.d.ts +1 -1
- package/lib/components/query-error/directives/query-error/query-error.directive.d.ts +1 -1
- package/lib/components/tabs/utils/paginated-tab-header.directive.d.ts +1 -1
- package/package.json +8 -10
- package/esm2022/ethlete-cdk.mjs +0 -5
- package/esm2022/index.mjs +0 -24
- package/esm2022/lib/components/accordion/accordion.imports.mjs +0 -15
- package/esm2022/lib/components/accordion/components/accordion/accordion.component.animations.mjs +0 -9
- package/esm2022/lib/components/accordion/components/accordion/accordion.component.constants.mjs +0 -3
- package/esm2022/lib/components/accordion/components/accordion/accordion.component.mjs +0 -76
- package/esm2022/lib/components/accordion/components/accordion/index.mjs +0 -4
- package/esm2022/lib/components/accordion/components/accordion-group/accordion-group.component.mjs +0 -53
- package/esm2022/lib/components/accordion/components/accordion-group/index.mjs +0 -2
- package/esm2022/lib/components/accordion/partials/accordion-hint/accordion-hint.directive.mjs +0 -17
- package/esm2022/lib/components/accordion/partials/accordion-hint/index.mjs +0 -2
- package/esm2022/lib/components/accordion/partials/accordion-hint-wrapper/accordion-hint-wrapper.directive.constants.mjs +0 -3
- package/esm2022/lib/components/accordion/partials/accordion-hint-wrapper/accordion-hint-wrapper.directive.mjs +0 -20
- package/esm2022/lib/components/accordion/partials/accordion-hint-wrapper/index.mjs +0 -3
- package/esm2022/lib/components/accordion/partials/accordion-label/accordion-label.directive.mjs +0 -17
- package/esm2022/lib/components/accordion/partials/accordion-label/index.mjs +0 -2
- package/esm2022/lib/components/accordion/partials/accordion-label-wrapper/accordion-label-wrapper.directive.constants.mjs +0 -3
- package/esm2022/lib/components/accordion/partials/accordion-label-wrapper/accordion-label-wrapper.directive.mjs +0 -20
- package/esm2022/lib/components/accordion/partials/accordion-label-wrapper/index.mjs +0 -3
- package/esm2022/lib/components/accordion/public-api/index.mjs +0 -8
- package/esm2022/lib/components/bracket/bracket.imports.mjs +0 -5
- package/esm2022/lib/components/bracket/components/bracket/bracket.component.mjs +0 -333
- package/esm2022/lib/components/bracket/components/bracket/bracket.component.types.mjs +0 -2
- package/esm2022/lib/components/bracket/components/bracket/index.mjs +0 -3
- package/esm2022/lib/components/bracket/components/new-bracket/bracket-new.mjs +0 -942
- package/esm2022/lib/components/bracket/components/new-bracket/draw-man.mjs +0 -197
- package/esm2022/lib/components/bracket/components/new-bracket/grid-definitions.mjs +0 -47
- package/esm2022/lib/components/bracket/components/new-bracket/grid-placements.mjs +0 -105
- package/esm2022/lib/components/bracket/components/new-bracket/index.mjs +0 -8
- package/esm2022/lib/components/bracket/components/new-bracket/journey-highlight.mjs +0 -18
- package/esm2022/lib/components/bracket/components/new-bracket/new-bracket-default-match.component.mjs +0 -17
- package/esm2022/lib/components/bracket/components/new-bracket/new-bracket-default-round-header.component.mjs +0 -16
- package/esm2022/lib/components/bracket/components/new-bracket/new-bracket.component.mjs +0 -107
- package/esm2022/lib/components/bracket/constants/bracket.constants.mjs +0 -12
- package/esm2022/lib/components/bracket/constants/index.mjs +0 -2
- package/esm2022/lib/components/bracket/directives/bracket-match/bracket-match.directive.mjs +0 -19
- package/esm2022/lib/components/bracket/directives/bracket-match/index.mjs +0 -2
- package/esm2022/lib/components/bracket/directives/bracket-round/bracket-round.directive.mjs +0 -19
- package/esm2022/lib/components/bracket/directives/bracket-round/index.mjs +0 -2
- package/esm2022/lib/components/bracket/partials/bracket-match/bracket-match.component.mjs +0 -19
- package/esm2022/lib/components/bracket/partials/bracket-match/index.mjs +0 -2
- package/esm2022/lib/components/bracket/partials/bracket-round-header/bracket-round-header.component.mjs +0 -19
- package/esm2022/lib/components/bracket/partials/bracket-round-header/index.mjs +0 -2
- package/esm2022/lib/components/bracket/public-api/index.mjs +0 -14
- package/esm2022/lib/components/bracket/types/bracket-config.types.mjs +0 -2
- package/esm2022/lib/components/bracket/types/bracket.types.mjs +0 -2
- package/esm2022/lib/components/bracket/types/index.mjs +0 -3
- package/esm2022/lib/components/bracket/utils/bracket-config.utils.mjs +0 -13
- package/esm2022/lib/components/bracket/utils/bracket.utils.mjs +0 -339
- package/esm2022/lib/components/bracket/utils/index.mjs +0 -3
- package/esm2022/lib/components/button/button.imports.mjs +0 -4
- package/esm2022/lib/components/button/components/button/button.component.mjs +0 -18
- package/esm2022/lib/components/button/components/button/index.mjs +0 -2
- package/esm2022/lib/components/button/components/query-button/index.mjs +0 -2
- package/esm2022/lib/components/button/components/query-button/query-button.component.mjs +0 -26
- package/esm2022/lib/components/button/directives/button/button.directive.mjs +0 -69
- package/esm2022/lib/components/button/directives/button/index.mjs +0 -2
- package/esm2022/lib/components/button/directives/query-button/index.mjs +0 -2
- package/esm2022/lib/components/button/directives/query-button/query-button.directive.mjs +0 -136
- package/esm2022/lib/components/button/public-api/index.mjs +0 -6
- package/esm2022/lib/components/carousel/carousel.component.mjs +0 -51
- package/esm2022/lib/components/carousel/carousel.directive.mjs +0 -150
- package/esm2022/lib/components/carousel/carousel.imports.mjs +0 -12
- package/esm2022/lib/components/carousel/controls/carousel-item-nav.component.mjs +0 -64
- package/esm2022/lib/components/carousel/controls/carousel-item-nav.directive.mjs +0 -34
- package/esm2022/lib/components/carousel/controls/carousel-next-button.directive.mjs +0 -45
- package/esm2022/lib/components/carousel/controls/carousel-previous-button.directive.mjs +0 -45
- package/esm2022/lib/components/carousel/controls/carousel-toggle-auto-play-button.directive.mjs +0 -43
- package/esm2022/lib/components/carousel/controls/index.mjs +0 -6
- package/esm2022/lib/components/carousel/et-carousel-item.component.mjs +0 -24
- package/esm2022/lib/components/carousel/et-carousel-item.directive.mjs +0 -46
- package/esm2022/lib/components/carousel/public-api/index.mjs +0 -7
- package/esm2022/lib/components/filter/public-api/index.mjs +0 -7
- package/esm2022/lib/components/filter/rich-filter/components/rich-filter-host/index.mjs +0 -2
- package/esm2022/lib/components/filter/rich-filter/components/rich-filter-host/rich-filter-host.component.mjs +0 -70
- package/esm2022/lib/components/filter/rich-filter/directives/rich-filter-button/index.mjs +0 -2
- package/esm2022/lib/components/filter/rich-filter/directives/rich-filter-button/rich-filter-button.directive.mjs +0 -32
- package/esm2022/lib/components/filter/rich-filter/directives/rich-filter-button-slot/index.mjs +0 -2
- package/esm2022/lib/components/filter/rich-filter/directives/rich-filter-button-slot/rich-filter-button-slot.directive.mjs +0 -32
- package/esm2022/lib/components/filter/rich-filter/directives/rich-filter-content/index.mjs +0 -2
- package/esm2022/lib/components/filter/rich-filter/directives/rich-filter-content/rich-filter-content.directive.mjs +0 -32
- package/esm2022/lib/components/filter/rich-filter/directives/rich-filter-top/index.mjs +0 -2
- package/esm2022/lib/components/filter/rich-filter/directives/rich-filter-top/rich-filter-top.directive.mjs +0 -29
- package/esm2022/lib/components/filter/rich-filter/rich-filter.imports.mjs +0 -13
- package/esm2022/lib/components/forms/components/checkbox/checkbox.imports.mjs +0 -13
- package/esm2022/lib/components/forms/components/checkbox/components/checkbox/checkbox.component.mjs +0 -24
- package/esm2022/lib/components/forms/components/checkbox/components/checkbox/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/checkbox/components/checkbox-field/checkbox-field.component.mjs +0 -47
- package/esm2022/lib/components/forms/components/checkbox/components/checkbox-field/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/checkbox/components/checkbox-group/checkbox-group.component.mjs +0 -17
- package/esm2022/lib/components/forms/components/checkbox/components/checkbox-group/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/checkbox/directives/checkbox/checkbox.directive.mjs +0 -40
- package/esm2022/lib/components/forms/components/checkbox/directives/checkbox/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/checkbox/directives/checkbox-field/checkbox-field.directive.mjs +0 -39
- package/esm2022/lib/components/forms/components/checkbox/directives/checkbox-field/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/checkbox/directives/checkbox-group/checkbox-group.directive.mjs +0 -83
- package/esm2022/lib/components/forms/components/checkbox/directives/checkbox-group/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/checkbox/directives/checkbox-group-control/checkbox-group-control.directive.mjs +0 -31
- package/esm2022/lib/components/forms/components/checkbox/directives/checkbox-group-control/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/error/components/error/error.component.mjs +0 -55
- package/esm2022/lib/components/forms/components/error/components/error/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/input/components/color-input/color-input.component.mjs +0 -24
- package/esm2022/lib/components/forms/components/input/components/color-input/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/input/components/date-input/date-input.component.mjs +0 -27
- package/esm2022/lib/components/forms/components/input/components/date-input/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/input/components/date-time-input/date-time-input.component.mjs +0 -27
- package/esm2022/lib/components/forms/components/input/components/date-time-input/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/input/components/email-input/email-input.component.mjs +0 -24
- package/esm2022/lib/components/forms/components/input/components/email-input/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/input/components/input-field/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/input/components/input-field/input-field.component.mjs +0 -55
- package/esm2022/lib/components/forms/components/input/components/number-input/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/input/components/number-input/number-input.component.mjs +0 -27
- package/esm2022/lib/components/forms/components/input/components/password-input/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/input/components/password-input/password-input.component.mjs +0 -24
- package/esm2022/lib/components/forms/components/input/components/search-input/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/input/components/search-input/search-input.component.mjs +0 -24
- package/esm2022/lib/components/forms/components/input/components/tel-input/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/input/components/tel-input/tel-input.component.mjs +0 -24
- package/esm2022/lib/components/forms/components/input/components/text-input/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/input/components/text-input/text-input.component.mjs +0 -24
- package/esm2022/lib/components/forms/components/input/components/textarea-input/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/input/components/textarea-input/textarea-input.component.mjs +0 -32
- package/esm2022/lib/components/forms/components/input/components/time-input/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/input/components/time-input/time-input.component.mjs +0 -24
- package/esm2022/lib/components/forms/components/input/directives/autosize-textarea/autosize-textarea.directive.mjs +0 -51
- package/esm2022/lib/components/forms/components/input/directives/autosize-textarea/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/input/directives/color-input/color-input.directive.mjs +0 -50
- package/esm2022/lib/components/forms/components/input/directives/color-input/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/input/directives/date-input/date-input.directive.mjs +0 -61
- package/esm2022/lib/components/forms/components/input/directives/date-input/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/input/directives/date-time-input/date-time-input.directive.mjs +0 -61
- package/esm2022/lib/components/forms/components/input/directives/date-time-input/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/input/directives/email-input/email-input.directive.mjs +0 -50
- package/esm2022/lib/components/forms/components/input/directives/email-input/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/input/directives/if-supports-show-picker/if-supports-show-picker.directive.mjs +0 -78
- package/esm2022/lib/components/forms/components/input/directives/if-supports-show-picker/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/input/directives/number-input/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/input/directives/number-input/number-input.directive.mjs +0 -51
- package/esm2022/lib/components/forms/components/input/directives/password-input/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/input/directives/password-input/password-input.directive.mjs +0 -54
- package/esm2022/lib/components/forms/components/input/directives/search-input/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/input/directives/search-input/search-input.directive.mjs +0 -58
- package/esm2022/lib/components/forms/components/input/directives/show-picker-trigger/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/input/directives/show-picker-trigger/show-picker-trigger.directive.mjs +0 -42
- package/esm2022/lib/components/forms/components/input/directives/tel-input/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/input/directives/tel-input/tel-input.directive.mjs +0 -50
- package/esm2022/lib/components/forms/components/input/directives/text-input/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/input/directives/text-input/text-input.directive.mjs +0 -50
- package/esm2022/lib/components/forms/components/input/directives/textarea-input/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/input/directives/textarea-input/textarea-input.directive.mjs +0 -50
- package/esm2022/lib/components/forms/components/input/directives/time-input/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/input/directives/time-input/time-input.directive.mjs +0 -61
- package/esm2022/lib/components/forms/components/input/input.imports.mjs +0 -47
- package/esm2022/lib/components/forms/components/input/partials/password-input-toggle/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/input/partials/password-input-toggle/password-input-toggle.component.mjs +0 -22
- package/esm2022/lib/components/forms/components/input/partials/search-input-clear/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/input/partials/search-input-clear/search-input-clear.component.mjs +0 -22
- package/esm2022/lib/components/forms/components/label/components/label/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/label/components/label/label.component.mjs +0 -51
- package/esm2022/lib/components/forms/components/label/directives/label-suffix/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/label/directives/label-suffix/label-suffix.directive.mjs +0 -27
- package/esm2022/lib/components/forms/components/label/label.imports.mjs +0 -4
- package/esm2022/lib/components/forms/components/radio/components/radio/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/radio/components/radio/radio.component.mjs +0 -29
- package/esm2022/lib/components/forms/components/radio/components/radio-field/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/radio/components/radio-field/radio-field.component.mjs +0 -27
- package/esm2022/lib/components/forms/components/radio/components/radio-group/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/radio/components/radio-group/radio-group.component.mjs +0 -45
- package/esm2022/lib/components/forms/components/radio/directives/radio/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/radio/directives/radio/radio.directive.mjs +0 -60
- package/esm2022/lib/components/forms/components/radio/directives/radio-field/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/radio/directives/radio-field/radio-field.directive.mjs +0 -36
- package/esm2022/lib/components/forms/components/radio/directives/radio-group/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/radio/directives/radio-group/radio-group.directive.mjs +0 -30
- package/esm2022/lib/components/forms/components/radio/radio.imports.mjs +0 -6
- package/esm2022/lib/components/forms/components/radio/types/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/radio/types/radio.types.mjs +0 -2
- package/esm2022/lib/components/forms/components/segmented-button/components/segmented-button/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/segmented-button/components/segmented-button/segmented-button.component.mjs +0 -38
- package/esm2022/lib/components/forms/components/segmented-button/components/segmented-button-field/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/segmented-button/components/segmented-button-field/segmented-button-field.component.mjs +0 -25
- package/esm2022/lib/components/forms/components/segmented-button/components/segmented-button-group/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/segmented-button/components/segmented-button-group/segmented-button-group.component.mjs +0 -51
- package/esm2022/lib/components/forms/components/segmented-button/directives/segmented-button/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/segmented-button/directives/segmented-button/segmented-button.directive.mjs +0 -70
- package/esm2022/lib/components/forms/components/segmented-button/directives/segmented-button-field/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/segmented-button/directives/segmented-button-field/segmented-button-field.directive.mjs +0 -36
- package/esm2022/lib/components/forms/components/segmented-button/directives/segmented-button-group/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/segmented-button/directives/segmented-button-group/segmented-button-group.directive.mjs +0 -63
- package/esm2022/lib/components/forms/components/segmented-button/segmented-button.imports.mjs +0 -9
- package/esm2022/lib/components/forms/components/select/components/combobox/combobox.imports.mjs +0 -23
- package/esm2022/lib/components/forms/components/select/components/combobox/components/combobox/combobox.component.mjs +0 -78
- package/esm2022/lib/components/forms/components/select/components/combobox/components/combobox/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/select/components/combobox/constants/combobox.constants.mjs +0 -6
- package/esm2022/lib/components/forms/components/select/components/combobox/constants/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox/combobox.directive.mjs +0 -658
- package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-body-empty-template/combobox-body-empty-template.directive.mjs +0 -30
- package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-body-empty-template/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-body-error-template/combobox-body-error-template.directive.mjs +0 -30
- package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-body-error-template/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-body-loading-template/combobox-body-loading-template.directive.mjs +0 -30
- package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-body-loading-template/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-body-more-items-hint-template/combobox-body-more-items-hint-template.directive.mjs +0 -30
- package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-body-more-items-hint-template/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-option-template/combobox-option-template.directive.mjs +0 -30
- package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-option-template/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-selected-option-template/combobox-selected-option-template.directive.mjs +0 -30
- package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-selected-option-template/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/select/components/combobox/partials/combobox-body/combobox-body.component.mjs +0 -78
- package/esm2022/lib/components/forms/components/select/components/combobox/partials/combobox-body/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/select/components/combobox/partials/combobox-option/combobox-option.component.mjs +0 -71
- package/esm2022/lib/components/forms/components/select/components/combobox/partials/combobox-option/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/select/components/combobox/private/combobox.private.errors.mjs +0 -22
- package/esm2022/lib/components/forms/components/select/components/combobox/private/combobox.private.types.mjs +0 -5
- package/esm2022/lib/components/forms/components/select/components/combobox/private/index.mjs +0 -3
- package/esm2022/lib/components/forms/components/select/components/combobox/types/combobox.types.mjs +0 -2
- package/esm2022/lib/components/forms/components/select/components/combobox/types/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/select/components/combobox/utils/combobox-config.utils.mjs +0 -13
- package/esm2022/lib/components/forms/components/select/components/combobox/utils/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/select/components/native-select/components/native-select/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/select/components/native-select/components/native-select/native-select.component.mjs +0 -24
- package/esm2022/lib/components/forms/components/select/components/native-select/directives/native-select-input/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/select/components/native-select/directives/native-select-input/native-select-input.directive.mjs +0 -58
- package/esm2022/lib/components/forms/components/select/components/native-select/directives/native-select-option/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/select/components/native-select/directives/native-select-option/native-select-option.directive.mjs +0 -45
- package/esm2022/lib/components/forms/components/select/components/native-select/native-select.imports.mjs +0 -19
- package/esm2022/lib/components/forms/components/select/components/native-select/partials/native-select-option/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/select/components/native-select/partials/native-select-option/native-select-option.component.mjs +0 -32
- package/esm2022/lib/components/forms/components/select/components/native-select/types/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/select/components/native-select/types/select.types.mjs +0 -2
- package/esm2022/lib/components/forms/components/select/components/select/components/select/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/select/components/select/components/select/select.component.mjs +0 -37
- package/esm2022/lib/components/forms/components/select/components/select/directives/select/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/select/components/select/directives/select/select.directive.mjs +0 -303
- package/esm2022/lib/components/forms/components/select/components/select/directives/select-body/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/select/components/select/directives/select-body/select-body.directive.mjs +0 -53
- package/esm2022/lib/components/forms/components/select/components/select/directives/select-option/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/select/components/select/directives/select-option/select-option.directive.mjs +0 -106
- package/esm2022/lib/components/forms/components/select/components/select/partials/select-body/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/select/components/select/partials/select-body/select-body.component.mjs +0 -41
- package/esm2022/lib/components/forms/components/select/components/select/partials/select-option/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/select/components/select/partials/select-option/select-option.component.mjs +0 -28
- package/esm2022/lib/components/forms/components/select/components/select/private/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/select/components/select/private/select.private.types.mjs +0 -2
- package/esm2022/lib/components/forms/components/select/components/select/select.imports.mjs +0 -15
- package/esm2022/lib/components/forms/components/select/components/select-field/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/select/components/select-field/select-field.component.mjs +0 -58
- package/esm2022/lib/components/forms/components/select/directives/select-field/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/select/directives/select-field/select-field.directive.mjs +0 -19
- package/esm2022/lib/components/forms/components/selection-list/components/selection-list-field/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/selection-list/components/selection-list-field/selection-list-field.component.mjs +0 -40
- package/esm2022/lib/components/forms/components/selection-list/components/selection-list-option/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/selection-list/components/selection-list-option/selection-list-option.component.mjs +0 -29
- package/esm2022/lib/components/forms/components/selection-list/directives/selection-list-field/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/selection-list/directives/selection-list-field/selection-list-field.directive.mjs +0 -125
- package/esm2022/lib/components/forms/components/selection-list/directives/selection-list-option/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/selection-list/directives/selection-list-option/selection-list-option.directive.mjs +0 -110
- package/esm2022/lib/components/forms/components/selection-list/selection-list.imports.mjs +0 -4
- package/esm2022/lib/components/forms/components/slide-toggle/components/slide-toggle/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/slide-toggle/components/slide-toggle/slide-toggle.component.mjs +0 -24
- package/esm2022/lib/components/forms/components/slide-toggle/components/slide-toggle-field/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/slide-toggle/components/slide-toggle-field/slide-toggle-field.component.mjs +0 -53
- package/esm2022/lib/components/forms/components/slide-toggle/directives/slide-toggle/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/slide-toggle/directives/slide-toggle/slide-toggle.directive.mjs +0 -38
- package/esm2022/lib/components/forms/components/slide-toggle/slide-toggle.imports.mjs +0 -5
- package/esm2022/lib/components/forms/components/slider/components/slider/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/slider/components/slider/slider.component.mjs +0 -331
- package/esm2022/lib/components/forms/components/slider/components/slider-field/index.mjs +0 -2
- package/esm2022/lib/components/forms/components/slider/components/slider-field/slider-field.component.mjs +0 -53
- package/esm2022/lib/components/forms/components/slider/slider.imports.mjs +0 -5
- package/esm2022/lib/components/forms/directives/dynamic-form-field/dynamic-form-field.directive.mjs +0 -41
- package/esm2022/lib/components/forms/directives/dynamic-form-field/index.mjs +0 -2
- package/esm2022/lib/components/forms/directives/dynamic-form-group/dynamic-form-group.directive.mjs +0 -41
- package/esm2022/lib/components/forms/directives/dynamic-form-group/index.mjs +0 -2
- package/esm2022/lib/components/forms/directives/expose-input-vars/expose-input-vars.directive.mjs +0 -83
- package/esm2022/lib/components/forms/directives/expose-input-vars/index.mjs +0 -2
- package/esm2022/lib/components/forms/directives/if-input-empty/if-input-empty.directive.mjs +0 -40
- package/esm2022/lib/components/forms/directives/if-input-empty/index.mjs +0 -2
- package/esm2022/lib/components/forms/directives/if-input-filled/if-input-filled.directive.mjs +0 -40
- package/esm2022/lib/components/forms/directives/if-input-filled/index.mjs +0 -2
- package/esm2022/lib/components/forms/directives/input/index.mjs +0 -2
- package/esm2022/lib/components/forms/directives/input/input.directive.mjs +0 -314
- package/esm2022/lib/components/forms/directives/input-prefix/index.mjs +0 -2
- package/esm2022/lib/components/forms/directives/input-prefix/input-prefix.directive.mjs +0 -30
- package/esm2022/lib/components/forms/directives/input-suffix/index.mjs +0 -2
- package/esm2022/lib/components/forms/directives/input-suffix/input-suffix.directive.mjs +0 -30
- package/esm2022/lib/components/forms/directives/native-input-ref/index.mjs +0 -2
- package/esm2022/lib/components/forms/directives/native-input-ref/native-input-ref.directive.mjs +0 -19
- package/esm2022/lib/components/forms/directives/static-form-field/index.mjs +0 -2
- package/esm2022/lib/components/forms/directives/static-form-field/static-form-field.directive.mjs +0 -76
- package/esm2022/lib/components/forms/directives/static-form-group/index.mjs +0 -2
- package/esm2022/lib/components/forms/directives/static-form-group/static-form-group.directive.mjs +0 -29
- package/esm2022/lib/components/forms/directives/writeable-input/index.mjs +0 -2
- package/esm2022/lib/components/forms/directives/writeable-input/writeable-input.directive.mjs +0 -57
- package/esm2022/lib/components/forms/public-api/index.mjs +0 -113
- package/esm2022/lib/components/forms/services/default-validator-errors.service.mjs +0 -54
- package/esm2022/lib/components/forms/services/form-field-state.service.mjs +0 -32
- package/esm2022/lib/components/forms/services/form-group-state.service.mjs +0 -21
- package/esm2022/lib/components/forms/services/index.mjs +0 -5
- package/esm2022/lib/components/forms/services/input-state.service.mjs +0 -72
- package/esm2022/lib/components/forms/types/index.mjs +0 -2
- package/esm2022/lib/components/forms/types/input.types.mjs +0 -2
- package/esm2022/lib/components/forms/utils/decorated-form-field.base.mjs +0 -19
- package/esm2022/lib/components/forms/utils/decorated-input.base.mjs +0 -48
- package/esm2022/lib/components/forms/utils/form-changes-tracker.util.mjs +0 -31
- package/esm2022/lib/components/forms/utils/index.mjs +0 -5
- package/esm2022/lib/components/forms/utils/input.base.mjs +0 -27
- package/esm2022/lib/components/icons/chevron-icon/chevron-icon.component.mjs +0 -37
- package/esm2022/lib/components/icons/chevron-icon/index.mjs +0 -2
- package/esm2022/lib/components/icons/icon.imports.mjs +0 -4
- package/esm2022/lib/components/icons/public-api/index.mjs +0 -4
- package/esm2022/lib/components/icons/times-icon/index.mjs +0 -2
- package/esm2022/lib/components/icons/times-icon/times-icon.component.mjs +0 -37
- package/esm2022/lib/components/masonry/components/masonry/index.mjs +0 -2
- package/esm2022/lib/components/masonry/components/masonry/masonry.component.mjs +0 -213
- package/esm2022/lib/components/masonry/masonry.imports.mjs +0 -4
- package/esm2022/lib/components/masonry/partials/masonry-item/index.mjs +0 -2
- package/esm2022/lib/components/masonry/partials/masonry-item/masonry-item.component.mjs +0 -74
- package/esm2022/lib/components/masonry/public-api/index.mjs +0 -5
- package/esm2022/lib/components/masonry/types/index.mjs +0 -2
- package/esm2022/lib/components/masonry/types/masonry.types.mjs +0 -2
- package/esm2022/lib/components/overlay/components/bottom-sheet/bottom-sheet.imports.mjs +0 -21
- package/esm2022/lib/components/overlay/components/bottom-sheet/components/bottom-sheet-container/bottom-sheet-container.component.mjs +0 -54
- package/esm2022/lib/components/overlay/components/bottom-sheet/components/bottom-sheet-container/index.mjs +0 -2
- package/esm2022/lib/components/overlay/components/bottom-sheet/constants/bottom-sheet.constants.mjs +0 -56
- package/esm2022/lib/components/overlay/components/bottom-sheet/constants/index.mjs +0 -2
- package/esm2022/lib/components/overlay/components/bottom-sheet/partials/bottom-sheet-container-base/bottom-sheet-container-base.component.mjs +0 -46
- package/esm2022/lib/components/overlay/components/bottom-sheet/partials/bottom-sheet-container-base/index.mjs +0 -2
- package/esm2022/lib/components/overlay/components/bottom-sheet/partials/bottom-sheet-drag-handle/bottom-sheet-drag-handle.component.mjs +0 -115
- package/esm2022/lib/components/overlay/components/bottom-sheet/partials/bottom-sheet-drag-handle/index.mjs +0 -2
- package/esm2022/lib/components/overlay/components/bottom-sheet/partials/bottom-sheet-title/bottom-sheet-title.directive.mjs +0 -42
- package/esm2022/lib/components/overlay/components/bottom-sheet/partials/bottom-sheet-title/index.mjs +0 -2
- package/esm2022/lib/components/overlay/components/bottom-sheet/services/bottom-sheet-base.service.mjs +0 -117
- package/esm2022/lib/components/overlay/components/bottom-sheet/services/bottom-sheet-swipe-handler.service.mjs +0 -57
- package/esm2022/lib/components/overlay/components/bottom-sheet/services/bottom-sheet.service.mjs +0 -34
- package/esm2022/lib/components/overlay/components/bottom-sheet/services/index.mjs +0 -4
- package/esm2022/lib/components/overlay/components/bottom-sheet/types/bottom-sheet.types.mjs +0 -2
- package/esm2022/lib/components/overlay/components/bottom-sheet/types/index.mjs +0 -2
- package/esm2022/lib/components/overlay/components/bottom-sheet/utils/bottom-sheet-config.mjs +0 -10
- package/esm2022/lib/components/overlay/components/bottom-sheet/utils/bottom-sheet-ref.mjs +0 -96
- package/esm2022/lib/components/overlay/components/bottom-sheet/utils/bottom-sheet.utils.mjs +0 -22
- package/esm2022/lib/components/overlay/components/bottom-sheet/utils/index.mjs +0 -4
- package/esm2022/lib/components/overlay/components/dialog/components/dialog-container/dialog-container.component.mjs +0 -54
- package/esm2022/lib/components/overlay/components/dialog/components/dialog-container/index.mjs +0 -2
- package/esm2022/lib/components/overlay/components/dialog/constants/dialog.constants.mjs +0 -52
- package/esm2022/lib/components/overlay/components/dialog/constants/index.mjs +0 -2
- package/esm2022/lib/components/overlay/components/dialog/dialog.imports.mjs +0 -17
- package/esm2022/lib/components/overlay/components/dialog/partials/dialog-close/dialog-close.directive.mjs +0 -67
- package/esm2022/lib/components/overlay/components/dialog/partials/dialog-close/index.mjs +0 -2
- package/esm2022/lib/components/overlay/components/dialog/partials/dialog-container-base/dialog-container-base.component.mjs +0 -46
- package/esm2022/lib/components/overlay/components/dialog/partials/dialog-container-base/index.mjs +0 -2
- package/esm2022/lib/components/overlay/components/dialog/partials/dialog-title/dialog-title.directive.mjs +0 -42
- package/esm2022/lib/components/overlay/components/dialog/partials/dialog-title/index.mjs +0 -2
- package/esm2022/lib/components/overlay/components/dialog/services/dialog-base.service.mjs +0 -112
- package/esm2022/lib/components/overlay/components/dialog/services/dialog.service.mjs +0 -34
- package/esm2022/lib/components/overlay/components/dialog/services/index.mjs +0 -3
- package/esm2022/lib/components/overlay/components/dialog/types/dialog.types.mjs +0 -2
- package/esm2022/lib/components/overlay/components/dialog/types/index.mjs +0 -2
- package/esm2022/lib/components/overlay/components/dialog/utils/dialog-config.mjs +0 -10
- package/esm2022/lib/components/overlay/components/dialog/utils/dialog-ref.mjs +0 -127
- package/esm2022/lib/components/overlay/components/dialog/utils/dialog.utils.mjs +0 -22
- package/esm2022/lib/components/overlay/components/dialog/utils/index.mjs +0 -4
- package/esm2022/lib/components/overlay/components/menu/components/menu/index.mjs +0 -2
- package/esm2022/lib/components/overlay/components/menu/components/menu/menu.component.mjs +0 -202
- package/esm2022/lib/components/overlay/components/menu/components/menu-checkbox-item/index.mjs +0 -2
- package/esm2022/lib/components/overlay/components/menu/components/menu-checkbox-item/menu-checkbox-item.component.mjs +0 -86
- package/esm2022/lib/components/overlay/components/menu/components/menu-container/index.mjs +0 -2
- package/esm2022/lib/components/overlay/components/menu/components/menu-container/menu-container.component.mjs +0 -47
- package/esm2022/lib/components/overlay/components/menu/components/menu-radio-item/index.mjs +0 -2
- package/esm2022/lib/components/overlay/components/menu/components/menu-radio-item/menu-radio-item.component.mjs +0 -77
- package/esm2022/lib/components/overlay/components/menu/directives/menu-checkbox-group/index.mjs +0 -2
- package/esm2022/lib/components/overlay/components/menu/directives/menu-checkbox-group/menu-checkbox-group.directive.mjs +0 -31
- package/esm2022/lib/components/overlay/components/menu/directives/menu-group/index.mjs +0 -2
- package/esm2022/lib/components/overlay/components/menu/directives/menu-group/menu-group.directive.mjs +0 -43
- package/esm2022/lib/components/overlay/components/menu/directives/menu-group-title/index.mjs +0 -2
- package/esm2022/lib/components/overlay/components/menu/directives/menu-group-title/menu-group-title.directive.mjs +0 -41
- package/esm2022/lib/components/overlay/components/menu/directives/menu-item/index.mjs +0 -2
- package/esm2022/lib/components/overlay/components/menu/directives/menu-item/menu-item.directive.mjs +0 -98
- package/esm2022/lib/components/overlay/components/menu/directives/menu-radio-group/index.mjs +0 -2
- package/esm2022/lib/components/overlay/components/menu/directives/menu-radio-group/menu-radio-group.directive.mjs +0 -45
- package/esm2022/lib/components/overlay/components/menu/directives/menu-search-template/index.mjs +0 -2
- package/esm2022/lib/components/overlay/components/menu/directives/menu-search-template/menu-search-template.directive.mjs +0 -29
- package/esm2022/lib/components/overlay/components/menu/directives/menu-trigger/index.mjs +0 -2
- package/esm2022/lib/components/overlay/components/menu/directives/menu-trigger/menu-trigger.directive.mjs +0 -183
- package/esm2022/lib/components/overlay/components/menu/menu.imports.mjs +0 -23
- package/esm2022/lib/components/overlay/components/menu-deprecated/context-menu-trigger.mjs +0 -165
- package/esm2022/lib/components/overlay/components/menu-deprecated/index.mjs +0 -17
- package/esm2022/lib/components/overlay/components/menu-deprecated/menu-aim.mjs +0 -136
- package/esm2022/lib/components/overlay/components/menu-deprecated/menu-bar.mjs +0 -112
- package/esm2022/lib/components/overlay/components/menu-deprecated/menu-base.mjs +0 -171
- package/esm2022/lib/components/overlay/components/menu-deprecated/menu-errors.mjs +0 -7
- package/esm2022/lib/components/overlay/components/menu-deprecated/menu-group.mjs +0 -25
- package/esm2022/lib/components/overlay/components/menu-deprecated/menu-interface.mjs +0 -3
- package/esm2022/lib/components/overlay/components/menu-deprecated/menu-item-checkbox.mjs +0 -38
- package/esm2022/lib/components/overlay/components/menu-deprecated/menu-item-radio.mjs +0 -55
- package/esm2022/lib/components/overlay/components/menu-deprecated/menu-item-selectable.mjs +0 -38
- package/esm2022/lib/components/overlay/components/menu-deprecated/menu-item.mjs +0 -212
- package/esm2022/lib/components/overlay/components/menu-deprecated/menu-module.mjs +0 -58
- package/esm2022/lib/components/overlay/components/menu-deprecated/menu-stack.mjs +0 -99
- package/esm2022/lib/components/overlay/components/menu-deprecated/menu-trigger-base.mjs +0 -80
- package/esm2022/lib/components/overlay/components/menu-deprecated/menu-trigger.mjs +0 -250
- package/esm2022/lib/components/overlay/components/menu-deprecated/menu.mjs +0 -115
- package/esm2022/lib/components/overlay/components/menu-deprecated/pointer-focus-tracker.mjs +0 -29
- package/esm2022/lib/components/overlay/components/overlay/components/overlay-container/index.mjs +0 -2
- package/esm2022/lib/components/overlay/components/overlay/components/overlay-container/overlay-container.component.mjs +0 -287
- package/esm2022/lib/components/overlay/components/overlay/constants/index.mjs +0 -2
- package/esm2022/lib/components/overlay/components/overlay/constants/overlay.constants.mjs +0 -26
- package/esm2022/lib/components/overlay/components/overlay/overlay.imports.mjs +0 -40
- package/esm2022/lib/components/overlay/components/overlay/partials/overlay-back-or-close/index.mjs +0 -2
- package/esm2022/lib/components/overlay/components/overlay/partials/overlay-back-or-close/overlay-back-or-close.directive.mjs +0 -43
- package/esm2022/lib/components/overlay/components/overlay/partials/overlay-body/index.mjs +0 -2
- package/esm2022/lib/components/overlay/components/overlay/partials/overlay-body/overlay-body.component.mjs +0 -134
- package/esm2022/lib/components/overlay/components/overlay/partials/overlay-close/index.mjs +0 -2
- package/esm2022/lib/components/overlay/components/overlay/partials/overlay-close/overlay-close.directive.mjs +0 -61
- package/esm2022/lib/components/overlay/components/overlay/partials/overlay-footer/index.mjs +0 -2
- package/esm2022/lib/components/overlay/components/overlay/partials/overlay-footer/overlay-footer.directive.mjs +0 -45
- package/esm2022/lib/components/overlay/components/overlay/partials/overlay-header/index.mjs +0 -2
- package/esm2022/lib/components/overlay/components/overlay/partials/overlay-header/overlay-header.directive.mjs +0 -45
- package/esm2022/lib/components/overlay/components/overlay/partials/overlay-header-template/index.mjs +0 -2
- package/esm2022/lib/components/overlay/components/overlay/partials/overlay-header-template/overlay-header-template.directive.mjs +0 -50
- package/esm2022/lib/components/overlay/components/overlay/partials/overlay-main/index.mjs +0 -2
- package/esm2022/lib/components/overlay/components/overlay/partials/overlay-main/overlay-main.directive.mjs +0 -53
- package/esm2022/lib/components/overlay/components/overlay/partials/overlay-route-header-template-outlet/index.mjs +0 -2
- package/esm2022/lib/components/overlay/components/overlay/partials/overlay-route-header-template-outlet/overlay-route-header-template-outlet.component.mjs +0 -41
- package/esm2022/lib/components/overlay/components/overlay/partials/overlay-router-link/index.mjs +0 -2
- package/esm2022/lib/components/overlay/components/overlay/partials/overlay-router-link/overlay-router-link.directive.mjs +0 -46
- package/esm2022/lib/components/overlay/components/overlay/partials/overlay-router-outlet/index.mjs +0 -2
- package/esm2022/lib/components/overlay/components/overlay/partials/overlay-router-outlet/overlay-router-outlet.component.mjs +0 -137
- package/esm2022/lib/components/overlay/components/overlay/partials/overlay-router-outlet-disabled-template/index.mjs +0 -2
- package/esm2022/lib/components/overlay/components/overlay/partials/overlay-router-outlet-disabled-template/overlay-router-outlet-disabled-template.directive.mjs +0 -26
- package/esm2022/lib/components/overlay/components/overlay/partials/overlay-shared-route-template/index.mjs +0 -2
- package/esm2022/lib/components/overlay/components/overlay/partials/overlay-shared-route-template/overlay-shared-route-template.directive.mjs +0 -26
- package/esm2022/lib/components/overlay/components/overlay/partials/overlay-shared-route-template-outlet/index.mjs +0 -2
- package/esm2022/lib/components/overlay/components/overlay/partials/overlay-shared-route-template-outlet/overlay-shared-route-template-outlet.component.mjs +0 -26
- package/esm2022/lib/components/overlay/components/overlay/partials/overlay-sidebar/index.mjs +0 -2
- package/esm2022/lib/components/overlay/components/overlay/partials/overlay-sidebar/overlay-sidebar.component.mjs +0 -54
- package/esm2022/lib/components/overlay/components/overlay/partials/overlay-sidebar-page/index.mjs +0 -2
- package/esm2022/lib/components/overlay/components/overlay/partials/overlay-sidebar-page/overlay-sidebar-page.component.mjs +0 -52
- package/esm2022/lib/components/overlay/components/overlay/partials/overlay-title/index.mjs +0 -2
- package/esm2022/lib/components/overlay/components/overlay/partials/overlay-title/overlay-title.directive.mjs +0 -39
- package/esm2022/lib/components/overlay/components/overlay/services/index.mjs +0 -2
- package/esm2022/lib/components/overlay/components/overlay/services/overlay.service.mjs +0 -313
- package/esm2022/lib/components/overlay/components/overlay/types/index.mjs +0 -2
- package/esm2022/lib/components/overlay/components/overlay/types/overlay.types.mjs +0 -6
- package/esm2022/lib/components/overlay/components/overlay/utils/filter-overlay.mjs +0 -124
- package/esm2022/lib/components/overlay/components/overlay/utils/index.mjs +0 -10
- package/esm2022/lib/components/overlay/components/overlay/utils/overlay-config.mjs +0 -7
- package/esm2022/lib/components/overlay/components/overlay/utils/overlay-handler-link.directive.mjs +0 -33
- package/esm2022/lib/components/overlay/components/overlay/utils/overlay-handler.mjs +0 -159
- package/esm2022/lib/components/overlay/components/overlay/utils/overlay-position-builder.mjs +0 -224
- package/esm2022/lib/components/overlay/components/overlay/utils/overlay-ref.mjs +0 -173
- package/esm2022/lib/components/overlay/components/overlay/utils/overlay-router.mjs +0 -190
- package/esm2022/lib/components/overlay/components/overlay/utils/overlay.utils.mjs +0 -13
- package/esm2022/lib/components/overlay/components/overlay/utils/sidebar-overlay.mjs +0 -54
- package/esm2022/lib/components/overlay/components/toggletip/components/toggletip/index.mjs +0 -2
- package/esm2022/lib/components/overlay/components/toggletip/components/toggletip/toggletip.component.mjs +0 -69
- package/esm2022/lib/components/overlay/components/toggletip/constants/index.mjs +0 -2
- package/esm2022/lib/components/overlay/components/toggletip/constants/toggletip.constants.mjs +0 -12
- package/esm2022/lib/components/overlay/components/toggletip/directives/toggletip/index.mjs +0 -2
- package/esm2022/lib/components/overlay/components/toggletip/directives/toggletip/toggletip.directive.mjs +0 -136
- package/esm2022/lib/components/overlay/components/toggletip/partials/toggletip-close/index.mjs +0 -2
- package/esm2022/lib/components/overlay/components/toggletip/partials/toggletip-close/toggletip-close.directive.mjs +0 -25
- package/esm2022/lib/components/overlay/components/toggletip/toggletip.imports.mjs +0 -3
- package/esm2022/lib/components/overlay/components/toggletip/types/index.mjs +0 -2
- package/esm2022/lib/components/overlay/components/toggletip/types/toggletip.types.mjs +0 -2
- package/esm2022/lib/components/overlay/components/toggletip/utils/index.mjs +0 -3
- package/esm2022/lib/components/overlay/components/toggletip/utils/toggletip-config.mjs +0 -6
- package/esm2022/lib/components/overlay/components/toggletip/utils/toggletip.util.mjs +0 -6
- package/esm2022/lib/components/overlay/components/tooltip/components/tooltip/index.mjs +0 -2
- package/esm2022/lib/components/overlay/components/tooltip/components/tooltip/tooltip.component.mjs +0 -67
- package/esm2022/lib/components/overlay/components/tooltip/constants/index.mjs +0 -2
- package/esm2022/lib/components/overlay/components/tooltip/constants/tooltip.constants.mjs +0 -12
- package/esm2022/lib/components/overlay/components/tooltip/directives/tooltip/index.mjs +0 -2
- package/esm2022/lib/components/overlay/components/tooltip/directives/tooltip/tooltip.directive.mjs +0 -171
- package/esm2022/lib/components/overlay/components/tooltip/tooltip.imports.mjs +0 -3
- package/esm2022/lib/components/overlay/components/tooltip/types/index.mjs +0 -2
- package/esm2022/lib/components/overlay/components/tooltip/types/tooltip.types.mjs +0 -2
- package/esm2022/lib/components/overlay/components/tooltip/utils/index.mjs +0 -3
- package/esm2022/lib/components/overlay/components/tooltip/utils/tooltip-config.mjs +0 -6
- package/esm2022/lib/components/overlay/components/tooltip/utils/tooltip.util.mjs +0 -6
- package/esm2022/lib/components/overlay/directives/dynamic-overlay-title/dynamic-overlay-title.directive.mjs +0 -49
- package/esm2022/lib/components/overlay/directives/dynamic-overlay-title/index.mjs +0 -2
- package/esm2022/lib/components/overlay/directives/overlay-close-auto-blocker/index.mjs +0 -2
- package/esm2022/lib/components/overlay/directives/overlay-close-auto-blocker/overlay-close-auto-blocker.directive.mjs +0 -51
- package/esm2022/lib/components/overlay/public-api/index.mjs +0 -72
- package/esm2022/lib/components/overlay/services/dynamic-overlay.service.mjs +0 -31
- package/esm2022/lib/components/overlay/services/index.mjs +0 -2
- package/esm2022/lib/components/overlay/types/dynamic-overlay.types.mjs +0 -2
- package/esm2022/lib/components/overlay/types/index.mjs +0 -2
- package/esm2022/lib/components/overlay/utils/index.mjs +0 -2
- package/esm2022/lib/components/overlay/utils/overlay-dismiss-checker.util.mjs +0 -105
- package/esm2022/lib/components/pagination/components/pagination/index.mjs +0 -2
- package/esm2022/lib/components/pagination/components/pagination/pagination.component.mjs +0 -110
- package/esm2022/lib/components/pagination/pagination.imports.mjs +0 -3
- package/esm2022/lib/components/pagination/partials/pagination-link/index.mjs +0 -2
- package/esm2022/lib/components/pagination/partials/pagination-link/pagination-link.directive.mjs +0 -32
- package/esm2022/lib/components/pagination/public-api/index.mjs +0 -7
- package/esm2022/lib/components/pagination/services/index.mjs +0 -2
- package/esm2022/lib/components/pagination/services/pagination-head.service.mjs +0 -74
- package/esm2022/lib/components/pagination/types/index.mjs +0 -2
- package/esm2022/lib/components/pagination/types/pagination.types.mjs +0 -2
- package/esm2022/lib/components/pagination/utils/index.mjs +0 -2
- package/esm2022/lib/components/pagination/utils/pagination.util.mjs +0 -98
- package/esm2022/lib/components/picture/components/picture/index.mjs +0 -2
- package/esm2022/lib/components/picture/components/picture/picture.component.mjs +0 -56
- package/esm2022/lib/components/picture/public-api/index.mjs +0 -4
- package/esm2022/lib/components/picture/types/picture.types.mjs +0 -2
- package/esm2022/lib/components/picture/utils/picture.utils.mjs +0 -31
- package/esm2022/lib/components/progress-spinner/index.mjs +0 -2
- package/esm2022/lib/components/progress-spinner/progress-spinner.component.mjs +0 -94
- package/esm2022/lib/components/query-error/components/query-error/index.mjs +0 -2
- package/esm2022/lib/components/query-error/components/query-error/query-error.component.mjs +0 -27
- package/esm2022/lib/components/query-error/directives/query-error/index.mjs +0 -2
- package/esm2022/lib/components/query-error/directives/query-error/query-error.directive.mjs +0 -432
- package/esm2022/lib/components/query-error/public-api/index.mjs +0 -4
- package/esm2022/lib/components/query-error/types/index.mjs +0 -2
- package/esm2022/lib/components/query-error/types/query-error.types.mjs +0 -2
- package/esm2022/lib/components/scrollable/components/scrollable/index.mjs +0 -2
- package/esm2022/lib/components/scrollable/components/scrollable/scrollable.component.mjs +0 -510
- package/esm2022/lib/components/scrollable/components/scrollable-placeholder/index.mjs +0 -2
- package/esm2022/lib/components/scrollable/components/scrollable-placeholder/scrollable-placeholder.component.mjs +0 -26
- package/esm2022/lib/components/scrollable/directives/scrollable-ignore-child/index.mjs +0 -2
- package/esm2022/lib/components/scrollable/directives/scrollable-ignore-child/scrollable-ignore-child.directive.mjs +0 -44
- package/esm2022/lib/components/scrollable/directives/scrollable-is-active-child/index.mjs +0 -2
- package/esm2022/lib/components/scrollable/directives/scrollable-is-active-child/scrollable-is-active-child.directive.mjs +0 -45
- package/esm2022/lib/components/scrollable/directives/scrollable-loading-template/index.mjs +0 -2
- package/esm2022/lib/components/scrollable/directives/scrollable-loading-template/scrollable-loading-template.directive.mjs +0 -31
- package/esm2022/lib/components/scrollable/directives/scrollable-placeholder-item-template/index.mjs +0 -2
- package/esm2022/lib/components/scrollable/directives/scrollable-placeholder-item-template/scrollable-placeholder-item-template.directive.mjs +0 -26
- package/esm2022/lib/components/scrollable/directives/scrollable-placeholder-overlay-template/index.mjs +0 -2
- package/esm2022/lib/components/scrollable/directives/scrollable-placeholder-overlay-template/scrollable-placeholder-overlay-template.directive.mjs +0 -26
- package/esm2022/lib/components/scrollable/public-api/index.mjs +0 -10
- package/esm2022/lib/components/scrollable/scrollable.imports.mjs +0 -17
- package/esm2022/lib/components/scrollable/types/index.mjs +0 -2
- package/esm2022/lib/components/scrollable/types/scrollable.types.mjs +0 -2
- package/esm2022/lib/components/skeleton/components/skeleton/index.mjs +0 -2
- package/esm2022/lib/components/skeleton/components/skeleton/skeleton.component.mjs +0 -25
- package/esm2022/lib/components/skeleton/partials/skeleton-item/index.mjs +0 -2
- package/esm2022/lib/components/skeleton/partials/skeleton-item/skeleton-item.component.mjs +0 -19
- package/esm2022/lib/components/skeleton/public-api/index.mjs +0 -4
- package/esm2022/lib/components/skeleton/skeleton.imports.mjs +0 -4
- package/esm2022/lib/components/sort/components/sort-header/index.mjs +0 -3
- package/esm2022/lib/components/sort/components/sort-header/sort-header.component.mjs +0 -198
- package/esm2022/lib/components/sort/components/sort-header/sort-header.types.mjs +0 -2
- package/esm2022/lib/components/sort/partials/sort/index.mjs +0 -3
- package/esm2022/lib/components/sort/partials/sort/sort.directive.mjs +0 -184
- package/esm2022/lib/components/sort/partials/sort/sort.types.mjs +0 -2
- package/esm2022/lib/components/sort/public-api/index.mjs +0 -6
- package/esm2022/lib/components/sort/services/index.mjs +0 -2
- package/esm2022/lib/components/sort/services/sort-header-intl.mjs +0 -23
- package/esm2022/lib/components/sort/sort.imports.mjs +0 -8
- package/esm2022/lib/components/sort/types/index.mjs +0 -2
- package/esm2022/lib/components/sort/types/sort-direction.mjs +0 -2
- package/esm2022/lib/components/table/components/table/index.mjs +0 -2
- package/esm2022/lib/components/table/components/table/table.component.mjs +0 -145
- package/esm2022/lib/components/table/constants/index.mjs +0 -2
- package/esm2022/lib/components/table/constants/table-data-source.constants.mjs +0 -2
- package/esm2022/lib/components/table/partials/cells/cell/cell.directive.mjs +0 -18
- package/esm2022/lib/components/table/partials/cells/cell/index.mjs +0 -2
- package/esm2022/lib/components/table/partials/cells/cell-def/cell-def.directive.mjs +0 -16
- package/esm2022/lib/components/table/partials/cells/cell-def/index.mjs +0 -2
- package/esm2022/lib/components/table/partials/cells/column-def/column-def.directive.mjs +0 -44
- package/esm2022/lib/components/table/partials/cells/column-def/index.mjs +0 -2
- package/esm2022/lib/components/table/partials/cells/footer-cell/footer-cell.directive.mjs +0 -18
- package/esm2022/lib/components/table/partials/cells/footer-cell/index.mjs +0 -2
- package/esm2022/lib/components/table/partials/cells/footer-cell-def/footer-cell-def.directive.mjs +0 -16
- package/esm2022/lib/components/table/partials/cells/footer-cell-def/index.mjs +0 -2
- package/esm2022/lib/components/table/partials/cells/header-cell/header-cell.directive.mjs +0 -19
- package/esm2022/lib/components/table/partials/cells/header-cell/index.mjs +0 -2
- package/esm2022/lib/components/table/partials/cells/header-cell-def/header-cell-def.directive.mjs +0 -16
- package/esm2022/lib/components/table/partials/cells/header-cell-def/index.mjs +0 -2
- package/esm2022/lib/components/table/partials/cells/text-column/index.mjs +0 -2
- package/esm2022/lib/components/table/partials/cells/text-column/text-column.component.mjs +0 -53
- package/esm2022/lib/components/table/partials/rows/footer-row/footer-row.component.mjs +0 -26
- package/esm2022/lib/components/table/partials/rows/footer-row/index.mjs +0 -2
- package/esm2022/lib/components/table/partials/rows/footer-row-def/footer-row-def.directive.mjs +0 -26
- package/esm2022/lib/components/table/partials/rows/footer-row-def/index.mjs +0 -2
- package/esm2022/lib/components/table/partials/rows/header-row/header-row.component.mjs +0 -26
- package/esm2022/lib/components/table/partials/rows/header-row/index.mjs +0 -2
- package/esm2022/lib/components/table/partials/rows/header-row-def/header-row-def.directive.mjs +0 -26
- package/esm2022/lib/components/table/partials/rows/header-row-def/index.mjs +0 -2
- package/esm2022/lib/components/table/partials/rows/no-data-row/index.mjs +0 -2
- package/esm2022/lib/components/table/partials/rows/no-data-row/no-data-row.directive.mjs +0 -20
- package/esm2022/lib/components/table/partials/rows/recycle-rows/index.mjs +0 -2
- package/esm2022/lib/components/table/partials/rows/recycle-rows/recycle-rows.directive.mjs +0 -16
- package/esm2022/lib/components/table/partials/rows/row/index.mjs +0 -2
- package/esm2022/lib/components/table/partials/rows/row/row.component.mjs +0 -26
- package/esm2022/lib/components/table/partials/rows/row-def/index.mjs +0 -2
- package/esm2022/lib/components/table/partials/rows/row-def/row-def.directive.mjs +0 -26
- package/esm2022/lib/components/table/partials/table-busy/index.mjs +0 -2
- package/esm2022/lib/components/table/partials/table-busy/table-busy.directive.mjs +0 -18
- package/esm2022/lib/components/table/partials/table-busy-outlet/index.mjs +0 -2
- package/esm2022/lib/components/table/partials/table-busy-outlet/table-busy-outlet.directive.mjs +0 -15
- package/esm2022/lib/components/table/public-api/index.mjs +0 -24
- package/esm2022/lib/components/table/table.imports.mjs +0 -39
- package/esm2022/lib/components/table/types/index.mjs +0 -2
- package/esm2022/lib/components/table/types/table-data-source.types.mjs +0 -2
- package/esm2022/lib/components/table/utils/index.mjs +0 -2
- package/esm2022/lib/components/table/utils/table-data-source.mjs +0 -168
- package/esm2022/lib/components/tabs/animations/index.mjs +0 -2
- package/esm2022/lib/components/tabs/animations/tabs.animations.mjs +0 -26
- package/esm2022/lib/components/tabs/components/inline-tabs/index.mjs +0 -2
- package/esm2022/lib/components/tabs/components/inline-tabs/inline-tabs.component.mjs +0 -257
- package/esm2022/lib/components/tabs/components/nav-tabs/index.mjs +0 -2
- package/esm2022/lib/components/tabs/components/nav-tabs/nav-tabs.component.mjs +0 -82
- package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab/index.mjs +0 -2
- package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab/inline-tab.component.mjs +0 -88
- package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-body/index.mjs +0 -2
- package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-body/inline-tab-body.component.mjs +0 -133
- package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-body-host/index.mjs +0 -2
- package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-body-host/inline-tab-body-host.directive.mjs +0 -25
- package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-content/index.mjs +0 -2
- package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-content/inline-tab-content.directive.mjs +0 -22
- package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-header/index.mjs +0 -2
- package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-header/inline-tab-header.component.mjs +0 -34
- package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-label/index.mjs +0 -2
- package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-label/inline-tab-label.directive.mjs +0 -30
- package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-label-wrapper/index.mjs +0 -2
- package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-label-wrapper/inline-tab-label-wrapper.directive.mjs +0 -42
- package/esm2022/lib/components/tabs/partials/nav-tabs/nav-tab-link/index.mjs +0 -2
- package/esm2022/lib/components/tabs/partials/nav-tabs/nav-tab-link/nav-tab-link.directive.mjs +0 -177
- package/esm2022/lib/components/tabs/partials/nav-tabs/nav-tabs-outlet/index.mjs +0 -2
- package/esm2022/lib/components/tabs/partials/nav-tabs/nav-tabs-outlet/nav-tabs-outlet.component.mjs +0 -37
- package/esm2022/lib/components/tabs/public-api/index.mjs +0 -16
- package/esm2022/lib/components/tabs/tab.imports.mjs +0 -25
- package/esm2022/lib/components/tabs/types/index.mjs +0 -2
- package/esm2022/lib/components/tabs/types/tab-config.types.mjs +0 -3
- package/esm2022/lib/components/tabs/utils/active-tab-underline.util.mjs +0 -112
- package/esm2022/lib/components/tabs/utils/index.mjs +0 -3
- package/esm2022/lib/components/tabs/utils/paginated-tab-header.directive.mjs +0 -272
- package/esm2022/lib/services/index.mjs +0 -2
- package/esm2022/lib/services/swipe-handler.service.mjs +0 -102
- package/esm2022/lib/types/index.mjs +0 -2
- package/esm2022/lib/types/swipe.types.mjs +0 -2
- package/esm2022/lib/utils/floating-ui.utils.mjs +0 -15
- package/esm2022/lib/utils/index.mjs +0 -2
|
@@ -1,658 +0,0 @@
|
|
|
1
|
-
import { A, BACKSPACE, ENTER, ESCAPE, TAB } from '@angular/cdk/keycodes';
|
|
2
|
-
import { ContentChild, Directive, EventEmitter, InjectionToken, Input, Output, TemplateRef, booleanAttribute, inject, input, isDevMode, } from '@angular/core';
|
|
3
|
-
import { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';
|
|
4
|
-
import { ActiveSelectionModel, AnimatedOverlayDirective, KeyPressManager, SelectionModel, createDestroy, isEmptyArray, isObjectArray, isPrimitiveArray, scrollToElement, signalClasses, signalHostClasses, } from '@ethlete/core';
|
|
5
|
-
import { THEME_PROVIDER } from '@ethlete/theming';
|
|
6
|
-
import { BehaviorSubject, catchError, combineLatest, debounceTime, distinctUntilChanged, map, of, skip, skipWhile, startWith, switchMap, takeUntil, tap, throwError, } from 'rxjs';
|
|
7
|
-
import { INPUT_TOKEN } from '../../../../../../directives/input';
|
|
8
|
-
import { SELECT_FIELD_TOKEN } from '../../../../directives/select-field';
|
|
9
|
-
import { COMBOBOX_CONFIG_TOKEN, COMBOBOX_DEFAULT_CONFIG } from '../../constants';
|
|
10
|
-
import { ComboboxOptionType, assetComboboxBodyComponentSet, comboboxError, } from '../../private';
|
|
11
|
-
import { COMBOBOX_BODY_EMPTY_TEMPLATE_TOKEN } from '../combobox-body-empty-template';
|
|
12
|
-
import { COMBOBOX_BODY_ERROR_TEMPLATE_TOKEN } from '../combobox-body-error-template';
|
|
13
|
-
import { COMBOBOX_BODY_LOADING_TEMPLATE_TOKEN } from '../combobox-body-loading-template';
|
|
14
|
-
import { COMBOBOX_BODY_MORE_ITEMS_HINT_TEMPLATE_TOKEN } from '../combobox-body-more-items-hint-template';
|
|
15
|
-
import { COMBOBOX_OPTION_TEMPLATE_TOKEN } from '../combobox-option-template';
|
|
16
|
-
import { COMBOBOX_SELECTED_OPTION_TEMPLATE_TOKEN } from '../combobox-selected-option-template';
|
|
17
|
-
import * as i0 from "@angular/core";
|
|
18
|
-
export const COMBOBOX_TOKEN = new InjectionToken('ET_COMBOBOX_INPUT_TOKEN');
|
|
19
|
-
export class ComboboxDirective {
|
|
20
|
-
//#region Inputs
|
|
21
|
-
get options() {
|
|
22
|
-
return this._selectionModel.getFilteredOptions();
|
|
23
|
-
}
|
|
24
|
-
set options(value) {
|
|
25
|
-
this._selectionModel.setOptions(value);
|
|
26
|
-
}
|
|
27
|
-
set initialValue(value) {
|
|
28
|
-
this._selectionModel.setSelection(value);
|
|
29
|
-
this._initialValue$.next(value);
|
|
30
|
-
}
|
|
31
|
-
get filterInternal() {
|
|
32
|
-
return this._filterInternal$.value;
|
|
33
|
-
}
|
|
34
|
-
set filterInternal(value) {
|
|
35
|
-
const val = booleanAttribute(value);
|
|
36
|
-
this._filterInternal$.next(val);
|
|
37
|
-
if (!val) {
|
|
38
|
-
this._selectionModel.setFilter('');
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
this._selectionModel.setFilter(this.currentFilter);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
get loading() {
|
|
45
|
-
return this._loading$.value;
|
|
46
|
-
}
|
|
47
|
-
set loading(value) {
|
|
48
|
-
this._loading$.next(booleanAttribute(value));
|
|
49
|
-
}
|
|
50
|
-
get error() {
|
|
51
|
-
return this._error$.value;
|
|
52
|
-
}
|
|
53
|
-
set error(value) {
|
|
54
|
-
this._error$.next(value);
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* To be removed in v5.
|
|
58
|
-
*/
|
|
59
|
-
get _tempEmptyText() {
|
|
60
|
-
return (this.emptyText ??
|
|
61
|
-
this.bodyEmptyText ??
|
|
62
|
-
this._comboboxConfig?.bodyEmptyText ??
|
|
63
|
-
this._comboboxConfig?.emptyText ??
|
|
64
|
-
COMBOBOX_DEFAULT_CONFIG.bodyEmptyText);
|
|
65
|
-
}
|
|
66
|
-
get placeholder() {
|
|
67
|
-
return this._placeholder$.value;
|
|
68
|
-
}
|
|
69
|
-
set placeholder(value) {
|
|
70
|
-
this._placeholder$.next(value);
|
|
71
|
-
}
|
|
72
|
-
set multiple(value) {
|
|
73
|
-
this._selectionModel.setAllowMultiple(booleanAttribute(value));
|
|
74
|
-
}
|
|
75
|
-
set bindLabel(value) {
|
|
76
|
-
this._selectionModel.setLabelBinding(value);
|
|
77
|
-
}
|
|
78
|
-
set bindValue(value) {
|
|
79
|
-
this._selectionModel.setValueBinding(value);
|
|
80
|
-
}
|
|
81
|
-
set bindKey(value) {
|
|
82
|
-
this._selectionModel.setKeyBinding(value);
|
|
83
|
-
}
|
|
84
|
-
set bindDisabled(value) {
|
|
85
|
-
this._selectionModel.setDisabledBinding(value);
|
|
86
|
-
}
|
|
87
|
-
get allowCustomValues() {
|
|
88
|
-
return this._allowCustomValues$.value;
|
|
89
|
-
}
|
|
90
|
-
set allowCustomValues(value) {
|
|
91
|
-
this._allowCustomValues$.next(booleanAttribute(value));
|
|
92
|
-
}
|
|
93
|
-
get showBodyMoreItemsHint() {
|
|
94
|
-
return this._showBodyMoreItemsHint$.value;
|
|
95
|
-
}
|
|
96
|
-
set showBodyMoreItemsHint(value) {
|
|
97
|
-
this._showBodyMoreItemsHint$.next(value);
|
|
98
|
-
}
|
|
99
|
-
get currentFilter() {
|
|
100
|
-
return this._currentFilter$.value;
|
|
101
|
-
}
|
|
102
|
-
get _isOpen() {
|
|
103
|
-
return this._animatedOverlay.isMounted;
|
|
104
|
-
}
|
|
105
|
-
set optionTemplate(value) {
|
|
106
|
-
this._optionTemplate$.next(value ?? null);
|
|
107
|
-
}
|
|
108
|
-
set selectedOptionTemplate(value) {
|
|
109
|
-
this._selectedOptionTemplate$.next(value ?? null);
|
|
110
|
-
}
|
|
111
|
-
set bodyLoadingTemplate(value) {
|
|
112
|
-
this._bodyLoadingTemplate$.next(value ?? null);
|
|
113
|
-
}
|
|
114
|
-
set bodyErrorTemplate(value) {
|
|
115
|
-
this._bodyErrorTemplate$.next(value ?? null);
|
|
116
|
-
}
|
|
117
|
-
set bodyEmptyTemplate(value) {
|
|
118
|
-
this._bodyEmptyTemplate$.next(value ?? null);
|
|
119
|
-
}
|
|
120
|
-
set bodyMoreItemsHintTemplate(value) {
|
|
121
|
-
this._bodyMoreItemsHintTemplate$.next(value ?? null);
|
|
122
|
-
}
|
|
123
|
-
//#endregion
|
|
124
|
-
//#region Lifecycle
|
|
125
|
-
constructor() {
|
|
126
|
-
//#region Injects
|
|
127
|
-
this._destroy$ = createDestroy();
|
|
128
|
-
this._input = inject(INPUT_TOKEN);
|
|
129
|
-
this._selectField = inject(SELECT_FIELD_TOKEN);
|
|
130
|
-
this._animatedOverlay = inject(AnimatedOverlayDirective);
|
|
131
|
-
this._comboboxConfig = inject(COMBOBOX_CONFIG_TOKEN, { optional: true });
|
|
132
|
-
this._themeProvider = inject(THEME_PROVIDER, { optional: true });
|
|
133
|
-
this._initialValue$ = new BehaviorSubject(null);
|
|
134
|
-
this._filterInternal$ = new BehaviorSubject(false);
|
|
135
|
-
this._loading$ = new BehaviorSubject(false);
|
|
136
|
-
this.loading$ = this._loading$.asObservable();
|
|
137
|
-
this._error$ = new BehaviorSubject(null);
|
|
138
|
-
this.error$ = this._error$.asObservable();
|
|
139
|
-
this._placeholder$ = new BehaviorSubject(null);
|
|
140
|
-
this._allowCustomValues$ = new BehaviorSubject(false);
|
|
141
|
-
this._showBodyMoreItemsHint$ = new BehaviorSubject(false);
|
|
142
|
-
this.optionComponent = input();
|
|
143
|
-
this.optionComponentInputs = input();
|
|
144
|
-
this.selectedOptionComponent = input();
|
|
145
|
-
this.bodyErrorComponentInputs = input();
|
|
146
|
-
this.bodyErrorComponent = input();
|
|
147
|
-
this.selectedOptionComponentInputs = input();
|
|
148
|
-
this.bodyLoadingComponent = input();
|
|
149
|
-
this.bodyLoadingComponentInputs = input();
|
|
150
|
-
this.bodyEmptyComponent = input();
|
|
151
|
-
this.bodyEmptyComponentInputs = input();
|
|
152
|
-
this.bodyMoreItemsHintComponent = input();
|
|
153
|
-
this.bodyMoreItemsHintComponentInputs = input();
|
|
154
|
-
//#endregion
|
|
155
|
-
//#region Outputs
|
|
156
|
-
this.filterChange = new EventEmitter();
|
|
157
|
-
//#endregion
|
|
158
|
-
//#region Members
|
|
159
|
-
this._shouldIgnoreNextBlurEvent = false;
|
|
160
|
-
this._deletedSearchWithKeyPress = false;
|
|
161
|
-
this.selectBodyId$ = new BehaviorSubject(null);
|
|
162
|
-
this.activeOptionId$ = new BehaviorSubject(null);
|
|
163
|
-
this._currentFilter$ = new BehaviorSubject('');
|
|
164
|
-
this.isOpen$ = this._animatedOverlay.isMounted$;
|
|
165
|
-
this.isOpen = toSignal(this.isOpen$);
|
|
166
|
-
this._selectionModel = new SelectionModel();
|
|
167
|
-
this._activeSelectionModel = new ActiveSelectionModel();
|
|
168
|
-
this._backspaceKeyPressManager = new KeyPressManager(BACKSPACE);
|
|
169
|
-
this.selectedOptions$ = this._selectionModel.selection$;
|
|
170
|
-
this.multiple$ = this._selectionModel.allowMultiple$;
|
|
171
|
-
this.multipleSignal = toSignal(this.multiple$, { requireSync: true });
|
|
172
|
-
this.options$ = this._selectionModel.filteredOptions$;
|
|
173
|
-
this.rawOptions$ = this._selectionModel.options$;
|
|
174
|
-
this._optionTemplate$ = new BehaviorSubject(null);
|
|
175
|
-
this._selectedOptionTemplate$ = new BehaviorSubject(null);
|
|
176
|
-
this._bodyLoadingTemplate$ = new BehaviorSubject(null);
|
|
177
|
-
this._bodyErrorTemplate$ = new BehaviorSubject(null);
|
|
178
|
-
this._bodyEmptyTemplate$ = new BehaviorSubject(null);
|
|
179
|
-
this._bodyMoreItemsHintTemplate$ = new BehaviorSubject(null);
|
|
180
|
-
this.hostClassBindings = signalHostClasses({
|
|
181
|
-
'et-combobox--loading': toSignal(this._loading$),
|
|
182
|
-
'et-combobox--error': toSignal(this._error$.pipe(map((v) => !!v))),
|
|
183
|
-
'et-combobox--open': toSignal(this.isOpen$),
|
|
184
|
-
'et-select-field--multiple': toSignal(this.multiple$),
|
|
185
|
-
'et-select-field--open': this.isOpen,
|
|
186
|
-
});
|
|
187
|
-
this.fieldHostClassBindings = signalClasses(this._selectField.elementRef, {
|
|
188
|
-
'et-select-field--open': toSignal(this.isOpen$),
|
|
189
|
-
'et-select-field--multiple': toSignal(this.multiple$),
|
|
190
|
-
});
|
|
191
|
-
this._comboboxBodyComponent = null;
|
|
192
|
-
//#endregion
|
|
193
|
-
//#region Computes
|
|
194
|
-
this.customOptionTpl$ = this._optionTemplate$.asObservable();
|
|
195
|
-
this.customSelectedOptionTpl$ = this._selectedOptionTemplate$.asObservable();
|
|
196
|
-
this.customBodyLoadingTpl$ = this._bodyLoadingTemplate$.asObservable();
|
|
197
|
-
this.customBodyErrorTpl$ = this._bodyErrorTemplate$.asObservable();
|
|
198
|
-
this.customBodyEmptyTpl$ = this._bodyEmptyTemplate$.asObservable();
|
|
199
|
-
this.customBodyMoreItemsHintTpl$ = this._bodyMoreItemsHintTemplate$.asObservable();
|
|
200
|
-
this.trackByOptionKeyFn = (index, item) => this._selectionModel.getKey(item);
|
|
201
|
-
this._selectionModel.setDisabledBinding('disabled');
|
|
202
|
-
this._activeSelectionModel.setSelectionModel(this._selectionModel);
|
|
203
|
-
this._animatedOverlay.placement = 'bottom';
|
|
204
|
-
this._animatedOverlay.fallbackPlacements = ['bottom', 'top'];
|
|
205
|
-
this._animatedOverlay.autoResize = true;
|
|
206
|
-
this._selectionModel.allowMultiple$
|
|
207
|
-
.pipe(takeUntilDestroyed(), tap((allowMultiple) => {
|
|
208
|
-
if (allowMultiple) {
|
|
209
|
-
this._updateFilter('');
|
|
210
|
-
}
|
|
211
|
-
}))
|
|
212
|
-
.subscribe();
|
|
213
|
-
this._input._setEmptyHelper(this._currentFilter$);
|
|
214
|
-
}
|
|
215
|
-
ngOnInit() {
|
|
216
|
-
this._initDispatchFilterChanges();
|
|
217
|
-
this._closeBodyOnDisable();
|
|
218
|
-
if (isDevMode()) {
|
|
219
|
-
this._debugValidateComboboxConfig();
|
|
220
|
-
this._debugValidateOptionAndInitialValueSchema();
|
|
221
|
-
}
|
|
222
|
-
this._selectionModel.setSelectionFromValue$(this._input.value);
|
|
223
|
-
this._selectionModel.value$
|
|
224
|
-
.pipe(takeUntil(this._destroy$), tap((value) => {
|
|
225
|
-
this._input._updateValue(value);
|
|
226
|
-
this._setFilterFromInputValue();
|
|
227
|
-
}))
|
|
228
|
-
.subscribe();
|
|
229
|
-
this._input.onExternalUpdate$
|
|
230
|
-
.pipe(takeUntil(this._destroy$), tap(() => this._selectionModel.setSelectionFromValue$(this._input.value)))
|
|
231
|
-
.subscribe();
|
|
232
|
-
}
|
|
233
|
-
//#endregion
|
|
234
|
-
//#region Public Methods
|
|
235
|
-
setBodyComponent(component) {
|
|
236
|
-
this._comboboxBodyComponent = component;
|
|
237
|
-
}
|
|
238
|
-
getOptionLabel(option) {
|
|
239
|
-
return this._selectionModel.getLabel$(option);
|
|
240
|
-
}
|
|
241
|
-
getOptionValue(option) {
|
|
242
|
-
return this._selectionModel.getValue$(option);
|
|
243
|
-
}
|
|
244
|
-
combineSelectedOptionWithComponentInputs(option) {
|
|
245
|
-
return {
|
|
246
|
-
...(this.selectedOptionComponentInputs() ?? {}),
|
|
247
|
-
option,
|
|
248
|
-
};
|
|
249
|
-
}
|
|
250
|
-
removeSelectedOption(option) {
|
|
251
|
-
this._selectionModel.removeSelectedOption(option);
|
|
252
|
-
this._input._markAsTouched();
|
|
253
|
-
}
|
|
254
|
-
open() {
|
|
255
|
-
assetComboboxBodyComponentSet(this._comboboxBodyComponent);
|
|
256
|
-
if (this._isOpen || this._input.disabled || this._animatedOverlay.isMounting)
|
|
257
|
-
return;
|
|
258
|
-
const bodyRef = this._animatedOverlay.mount({
|
|
259
|
-
component: this._comboboxBodyComponent,
|
|
260
|
-
mirrorWidth: true,
|
|
261
|
-
themeProvider: this._themeProvider,
|
|
262
|
-
});
|
|
263
|
-
if (!bodyRef)
|
|
264
|
-
return;
|
|
265
|
-
this.selectBodyId$.next(bodyRef.id);
|
|
266
|
-
bodyRef._options$
|
|
267
|
-
.pipe(switchMap((queryList) => combineLatest([
|
|
268
|
-
queryList?.changes.pipe(startWith(queryList), map((l) => l.toArray())) ?? of([]),
|
|
269
|
-
this._activeSelectionModel.activeOption$,
|
|
270
|
-
])), tap(([options, activeOptionData]) => {
|
|
271
|
-
const optionRef = options.find((o) => o.option() === activeOptionData);
|
|
272
|
-
if (!optionRef?.elementRef?.nativeElement)
|
|
273
|
-
return;
|
|
274
|
-
scrollToElement({
|
|
275
|
-
behavior: 'instant',
|
|
276
|
-
element: optionRef.elementRef.nativeElement,
|
|
277
|
-
container: bodyRef._containerElementRef?.nativeElement,
|
|
278
|
-
});
|
|
279
|
-
this.activeOptionId$.next(optionRef.id);
|
|
280
|
-
}), takeUntil(this._destroy$), takeUntil(this._animatedOverlay.afterClosed()))
|
|
281
|
-
.subscribe();
|
|
282
|
-
this._animatedOverlay
|
|
283
|
-
.afterClosed()
|
|
284
|
-
.pipe(takeUntil(this._destroy$), tap(() => {
|
|
285
|
-
this.selectBodyId$.next(null);
|
|
286
|
-
this.activeOptionId$.next(null);
|
|
287
|
-
}))
|
|
288
|
-
.subscribe();
|
|
289
|
-
}
|
|
290
|
-
close() {
|
|
291
|
-
if (!this._isOpen || this._animatedOverlay.isUnmounting)
|
|
292
|
-
return;
|
|
293
|
-
this._animatedOverlay.unmount();
|
|
294
|
-
}
|
|
295
|
-
focus() {
|
|
296
|
-
this._input.nativeInputRef?.element.nativeElement.focus();
|
|
297
|
-
}
|
|
298
|
-
selectInputAndOpen() {
|
|
299
|
-
if (this._input.disabled)
|
|
300
|
-
return;
|
|
301
|
-
this._input.nativeInputRef?.element.nativeElement.select();
|
|
302
|
-
this.open();
|
|
303
|
-
}
|
|
304
|
-
writeValueFromOption(option) {
|
|
305
|
-
this._input._markAsTouched();
|
|
306
|
-
if (this._selectionModel.allowMultiple) {
|
|
307
|
-
this._selectionModel.toggleSelectedOption(option);
|
|
308
|
-
}
|
|
309
|
-
else {
|
|
310
|
-
this._selectionModel.addSelectedOption(option);
|
|
311
|
-
}
|
|
312
|
-
if (!this._selectionModel.allowMultiple) {
|
|
313
|
-
this.close();
|
|
314
|
-
this._setFilterFromInputValue();
|
|
315
|
-
}
|
|
316
|
-
else {
|
|
317
|
-
this._updateFilter('');
|
|
318
|
-
}
|
|
319
|
-
}
|
|
320
|
-
clearValue() {
|
|
321
|
-
this._selectionModel.clearSelectedOptions();
|
|
322
|
-
this._input._markAsTouched();
|
|
323
|
-
this._updateFilter('');
|
|
324
|
-
}
|
|
325
|
-
isOptionSelected(option) {
|
|
326
|
-
return this._selectionModel.isSelected$(option);
|
|
327
|
-
}
|
|
328
|
-
isOptionActive(option) {
|
|
329
|
-
return this._activeSelectionModel.isOptionActive$(option);
|
|
330
|
-
}
|
|
331
|
-
isOptionDisabled(option) {
|
|
332
|
-
return this._selectionModel.isDisabled$(option);
|
|
333
|
-
}
|
|
334
|
-
//#endregion
|
|
335
|
-
//#region Private Methods
|
|
336
|
-
_ignoreNextBlurEvent() {
|
|
337
|
-
this._shouldIgnoreNextBlurEvent = true;
|
|
338
|
-
}
|
|
339
|
-
_processKeydownEvent(event) {
|
|
340
|
-
const keyCode = event.keyCode;
|
|
341
|
-
const isOpen = this._isOpen;
|
|
342
|
-
const isMultiple = this._selectionModel.allowMultiple;
|
|
343
|
-
const canAddCustomValue = this.allowCustomValues;
|
|
344
|
-
const value = event.target.value;
|
|
345
|
-
const hasFilterValue = !!value;
|
|
346
|
-
const selection = this._selectionModel.selection;
|
|
347
|
-
const isBackspacePressed = this._backspaceKeyPressManager.isPressed(event);
|
|
348
|
-
const result = {};
|
|
349
|
-
if (keyCode === ENTER) {
|
|
350
|
-
event.preventDefault();
|
|
351
|
-
event.stopPropagation();
|
|
352
|
-
// The user typed a custom value and pressed enter. Add it to the selected options.
|
|
353
|
-
// FIXME: Currently it is impossible to select the active option with the keyboard if canAddCustomValue is true.
|
|
354
|
-
// To fix this, the active option should also include the origin it got active from (keyboard or programmatic).
|
|
355
|
-
// The "value" changing should put the combobox into a "use the custom input on enter" mode.
|
|
356
|
-
// The "active option" changing via keyboard should put the combobox into a "use the active option on enter" mode.
|
|
357
|
-
if (canAddCustomValue && hasFilterValue) {
|
|
358
|
-
result.optionAction = { type: 'add', option: value };
|
|
359
|
-
}
|
|
360
|
-
else {
|
|
361
|
-
const activeOption = this._activeSelectionModel.activeOption;
|
|
362
|
-
if (activeOption) {
|
|
363
|
-
if (isMultiple) {
|
|
364
|
-
result.optionAction = { type: 'toggle', option: activeOption };
|
|
365
|
-
}
|
|
366
|
-
else {
|
|
367
|
-
result.optionAction = { type: 'add', option: activeOption };
|
|
368
|
-
}
|
|
369
|
-
}
|
|
370
|
-
}
|
|
371
|
-
if (isMultiple) {
|
|
372
|
-
result.setFilter = '';
|
|
373
|
-
}
|
|
374
|
-
else {
|
|
375
|
-
result.overlayOperation = 'close';
|
|
376
|
-
}
|
|
377
|
-
return this._interpretKeyHandlerResult(result);
|
|
378
|
-
}
|
|
379
|
-
if (keyCode === ESCAPE) {
|
|
380
|
-
if (isOpen) {
|
|
381
|
-
result.overlayOperation = 'close';
|
|
382
|
-
event.preventDefault();
|
|
383
|
-
event.stopPropagation();
|
|
384
|
-
}
|
|
385
|
-
else if (!isMultiple) {
|
|
386
|
-
if (this.currentFilter) {
|
|
387
|
-
event.preventDefault();
|
|
388
|
-
event.stopPropagation();
|
|
389
|
-
}
|
|
390
|
-
result.setFilter = '';
|
|
391
|
-
result.optionAction = 'clear';
|
|
392
|
-
}
|
|
393
|
-
return this._interpretKeyHandlerResult(result);
|
|
394
|
-
}
|
|
395
|
-
if (keyCode === TAB) {
|
|
396
|
-
result.overlayOperation = 'close';
|
|
397
|
-
return this._interpretKeyHandlerResult(result);
|
|
398
|
-
}
|
|
399
|
-
if (keyCode === BACKSPACE) {
|
|
400
|
-
if (isBackspacePressed && value) {
|
|
401
|
-
this._deletedSearchWithKeyPress = true;
|
|
402
|
-
}
|
|
403
|
-
if (!hasFilterValue && isMultiple && selection.length && !this._deletedSearchWithKeyPress) {
|
|
404
|
-
result.optionAction = { type: 'remove', option: selection[selection.length - 1] };
|
|
405
|
-
return this._interpretKeyHandlerResult(result);
|
|
406
|
-
}
|
|
407
|
-
if (!isBackspacePressed) {
|
|
408
|
-
this._deletedSearchWithKeyPress = false;
|
|
409
|
-
}
|
|
410
|
-
}
|
|
411
|
-
else {
|
|
412
|
-
this._deletedSearchWithKeyPress = false;
|
|
413
|
-
}
|
|
414
|
-
if (!isOpen) {
|
|
415
|
-
result.overlayOperation = 'open';
|
|
416
|
-
}
|
|
417
|
-
this._activeSelectionModel.evaluateKeyboardEvent(event);
|
|
418
|
-
if (keyCode === A && event.ctrlKey && isMultiple) {
|
|
419
|
-
result.optionAction = 'toggleAll';
|
|
420
|
-
event.preventDefault();
|
|
421
|
-
}
|
|
422
|
-
return this._interpretKeyHandlerResult(result);
|
|
423
|
-
}
|
|
424
|
-
_processKeyupEvent() {
|
|
425
|
-
this._backspaceKeyPressManager.clear();
|
|
426
|
-
}
|
|
427
|
-
_processInputEvent(event) {
|
|
428
|
-
const value = event.target.value;
|
|
429
|
-
this._updateFilter(value);
|
|
430
|
-
}
|
|
431
|
-
_handleBlurEvent() {
|
|
432
|
-
if (this._shouldIgnoreNextBlurEvent) {
|
|
433
|
-
this._shouldIgnoreNextBlurEvent = false;
|
|
434
|
-
return;
|
|
435
|
-
}
|
|
436
|
-
this._input._markAsTouched();
|
|
437
|
-
this._input._setShouldDisplayError(true);
|
|
438
|
-
if (this._selectionModel.allowMultiple) {
|
|
439
|
-
this._updateFilter('');
|
|
440
|
-
return;
|
|
441
|
-
}
|
|
442
|
-
if (this.currentFilter === '') {
|
|
443
|
-
this._selectionModel.clearSelectedOptions();
|
|
444
|
-
return;
|
|
445
|
-
}
|
|
446
|
-
this._setFilterFromInputValue();
|
|
447
|
-
}
|
|
448
|
-
_updateFilter(value) {
|
|
449
|
-
if (this._input.nativeInputRef && this._input.nativeInputRef.element.nativeElement.value !== value) {
|
|
450
|
-
this._input.nativeInputRef.element.nativeElement.value = value;
|
|
451
|
-
}
|
|
452
|
-
if (this.currentFilter === value)
|
|
453
|
-
return;
|
|
454
|
-
this._currentFilter$.next(value);
|
|
455
|
-
if (this.filterInternal) {
|
|
456
|
-
this._selectionModel.setFilter(value);
|
|
457
|
-
}
|
|
458
|
-
}
|
|
459
|
-
_setFilterFromInputValue() {
|
|
460
|
-
if (this._selectionModel.allowMultiple)
|
|
461
|
-
return;
|
|
462
|
-
const value = this._input.value;
|
|
463
|
-
if (!value || Array.isArray(value)) {
|
|
464
|
-
this._updateFilter('');
|
|
465
|
-
return;
|
|
466
|
-
}
|
|
467
|
-
const option = this._selectionModel.getOptionByValue(value);
|
|
468
|
-
if (!option)
|
|
469
|
-
return;
|
|
470
|
-
const label = this._selectionModel.getLabel(option);
|
|
471
|
-
if (typeof label !== 'string')
|
|
472
|
-
return;
|
|
473
|
-
this._updateFilter(label);
|
|
474
|
-
}
|
|
475
|
-
_interpretKeyHandlerResult(result) {
|
|
476
|
-
if (result.overlayOperation === 'close') {
|
|
477
|
-
this.close();
|
|
478
|
-
}
|
|
479
|
-
else if (result.overlayOperation === 'open') {
|
|
480
|
-
this.open();
|
|
481
|
-
}
|
|
482
|
-
if (result.setFilter !== undefined) {
|
|
483
|
-
this._updateFilter(result.setFilter);
|
|
484
|
-
}
|
|
485
|
-
if (result.optionAction) {
|
|
486
|
-
if (typeof result.optionAction === 'string') {
|
|
487
|
-
if (result.optionAction === 'clear') {
|
|
488
|
-
this._selectionModel.clearSelectedOptions();
|
|
489
|
-
}
|
|
490
|
-
else if (result.optionAction === 'toggleAll') {
|
|
491
|
-
this._selectionModel.toggleAllSelectedOptions();
|
|
492
|
-
}
|
|
493
|
-
}
|
|
494
|
-
else {
|
|
495
|
-
const { type, option } = result.optionAction;
|
|
496
|
-
if (this._selectionModel.isDisabled(option))
|
|
497
|
-
return;
|
|
498
|
-
if (type === 'add') {
|
|
499
|
-
this._selectionModel.addSelectedOption(option);
|
|
500
|
-
}
|
|
501
|
-
if (type === 'remove') {
|
|
502
|
-
this._selectionModel.removeSelectedOption(option);
|
|
503
|
-
}
|
|
504
|
-
if (type === 'toggle') {
|
|
505
|
-
this._selectionModel.toggleSelectedOption(option);
|
|
506
|
-
}
|
|
507
|
-
}
|
|
508
|
-
}
|
|
509
|
-
}
|
|
510
|
-
_initDispatchFilterChanges() {
|
|
511
|
-
this._currentFilter$
|
|
512
|
-
.pipe(skipWhile(() => this.filterInternal), debounceTime(300), distinctUntilChanged(), takeUntil(this._destroy$), tap((v) => this.filterChange.emit(v)))
|
|
513
|
-
.subscribe();
|
|
514
|
-
}
|
|
515
|
-
_closeBodyOnDisable() {
|
|
516
|
-
this._input.disabled$
|
|
517
|
-
.pipe(tap((disabled) => {
|
|
518
|
-
if (!disabled)
|
|
519
|
-
return;
|
|
520
|
-
this.close();
|
|
521
|
-
}), takeUntil(this._destroy$))
|
|
522
|
-
.subscribe();
|
|
523
|
-
}
|
|
524
|
-
//#endregion
|
|
525
|
-
//#region Dev mode
|
|
526
|
-
_debugValidateComboboxConfig(isRetry = false) {
|
|
527
|
-
combineLatest([this._selectionModel.labelBinding$, this._selectionModel.valueBinding$, this._allowCustomValues$])
|
|
528
|
-
.pipe(skip(isRetry ? 1 : 0), // Skip if retrying to avoid infinite loop
|
|
529
|
-
debounceTime(0), takeUntil(this._destroy$), map(([bindLabel, bindValue, allowCustomValues]) => {
|
|
530
|
-
const shouldBeObjects = bindLabel && bindValue && !allowCustomValues;
|
|
531
|
-
if (shouldBeObjects) {
|
|
532
|
-
return ComboboxOptionType.Object;
|
|
533
|
-
}
|
|
534
|
-
return ComboboxOptionType.Primitive;
|
|
535
|
-
}), tap((expectedOptionType) => {
|
|
536
|
-
const options = this._selectionModel.options;
|
|
537
|
-
if (isEmptyArray(options)) {
|
|
538
|
-
return;
|
|
539
|
-
}
|
|
540
|
-
if (expectedOptionType === ComboboxOptionType.Object) {
|
|
541
|
-
if (!isObjectArray(options)) {
|
|
542
|
-
throw comboboxError('options_object_mismatch', true, options);
|
|
543
|
-
}
|
|
544
|
-
}
|
|
545
|
-
else if (expectedOptionType === ComboboxOptionType.Primitive) {
|
|
546
|
-
if (!isPrimitiveArray(options)) {
|
|
547
|
-
throw comboboxError('options_primitive_mismatch', true, options);
|
|
548
|
-
}
|
|
549
|
-
}
|
|
550
|
-
}), catchError((e) => {
|
|
551
|
-
this._debugValidateComboboxConfig(true);
|
|
552
|
-
return throwError(() => e);
|
|
553
|
-
}))
|
|
554
|
-
.subscribe();
|
|
555
|
-
}
|
|
556
|
-
_debugValidateOptionAndInitialValueSchema(isRetry = false) {
|
|
557
|
-
combineLatest([this.options$, this._initialValue$])
|
|
558
|
-
.pipe(skip(isRetry ? 1 : 0), // Skip if retrying to avoid infinite loop
|
|
559
|
-
takeUntil(this._destroy$), tap(([options, initialValue]) => {
|
|
560
|
-
if (initialValue === null || initialValue === undefined)
|
|
561
|
-
return;
|
|
562
|
-
if (!this.multiple)
|
|
563
|
-
return;
|
|
564
|
-
const isPrimitive = isPrimitiveArray(options);
|
|
565
|
-
const initialValueIsPrimitive = this.multiple
|
|
566
|
-
? isPrimitiveArray(initialValue)
|
|
567
|
-
: typeof initialValue !== 'object';
|
|
568
|
-
if (isPrimitive) {
|
|
569
|
-
if (!initialValueIsPrimitive) {
|
|
570
|
-
throw comboboxError('init_val_primitive_mismatch', true, { initialValue, options });
|
|
571
|
-
}
|
|
572
|
-
}
|
|
573
|
-
else {
|
|
574
|
-
if (initialValueIsPrimitive) {
|
|
575
|
-
throw comboboxError('init_val_object_mismatch', true, { initialValue, options });
|
|
576
|
-
}
|
|
577
|
-
}
|
|
578
|
-
}), catchError((e) => {
|
|
579
|
-
this._debugValidateOptionAndInitialValueSchema(true);
|
|
580
|
-
return throwError(() => e);
|
|
581
|
-
}))
|
|
582
|
-
.subscribe();
|
|
583
|
-
}
|
|
584
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ComboboxDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
585
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.12", type: ComboboxDirective, isStandalone: true, inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: false, isRequired: true, transformFunction: null }, initialValue: { classPropertyName: "initialValue", publicName: "initialValue", isSignal: false, isRequired: false, transformFunction: null }, filterInternal: { classPropertyName: "filterInternal", publicName: "filterInternal", isSignal: false, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: false, isRequired: false, transformFunction: null }, error: { classPropertyName: "error", publicName: "error", isSignal: false, isRequired: false, transformFunction: null }, emptyText: { classPropertyName: "emptyText", publicName: "emptyText", isSignal: false, isRequired: false, transformFunction: null }, bodyEmptyText: { classPropertyName: "bodyEmptyText", publicName: "bodyEmptyText", isSignal: false, isRequired: false, transformFunction: null }, bodyMoreItemsHintText: { classPropertyName: "bodyMoreItemsHintText", publicName: "bodyMoreItemsHintText", isSignal: false, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: false, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: false, isRequired: false, transformFunction: null }, bindLabel: { classPropertyName: "bindLabel", publicName: "bindLabel", isSignal: false, isRequired: false, transformFunction: null }, bindValue: { classPropertyName: "bindValue", publicName: "bindValue", isSignal: false, isRequired: false, transformFunction: null }, bindKey: { classPropertyName: "bindKey", publicName: "bindKey", isSignal: false, isRequired: false, transformFunction: null }, bindDisabled: { classPropertyName: "bindDisabled", publicName: "bindDisabled", isSignal: false, isRequired: false, transformFunction: null }, allowCustomValues: { classPropertyName: "allowCustomValues", publicName: "allowCustomValues", isSignal: false, isRequired: false, transformFunction: null }, showBodyMoreItemsHint: { classPropertyName: "showBodyMoreItemsHint", publicName: "showBodyMoreItemsHint", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, optionComponent: { classPropertyName: "optionComponent", publicName: "optionComponent", isSignal: true, isRequired: false, transformFunction: null }, optionComponentInputs: { classPropertyName: "optionComponentInputs", publicName: "optionComponentInputs", isSignal: true, isRequired: false, transformFunction: null }, selectedOptionComponent: { classPropertyName: "selectedOptionComponent", publicName: "selectedOptionComponent", isSignal: true, isRequired: false, transformFunction: null }, bodyErrorComponentInputs: { classPropertyName: "bodyErrorComponentInputs", publicName: "bodyErrorComponentInputs", isSignal: true, isRequired: false, transformFunction: null }, bodyErrorComponent: { classPropertyName: "bodyErrorComponent", publicName: "bodyErrorComponent", isSignal: true, isRequired: false, transformFunction: null }, selectedOptionComponentInputs: { classPropertyName: "selectedOptionComponentInputs", publicName: "selectedOptionComponentInputs", isSignal: true, isRequired: false, transformFunction: null }, bodyLoadingComponent: { classPropertyName: "bodyLoadingComponent", publicName: "bodyLoadingComponent", isSignal: true, isRequired: false, transformFunction: null }, bodyLoadingComponentInputs: { classPropertyName: "bodyLoadingComponentInputs", publicName: "bodyLoadingComponentInputs", isSignal: true, isRequired: false, transformFunction: null }, bodyEmptyComponent: { classPropertyName: "bodyEmptyComponent", publicName: "bodyEmptyComponent", isSignal: true, isRequired: false, transformFunction: null }, bodyEmptyComponentInputs: { classPropertyName: "bodyEmptyComponentInputs", publicName: "bodyEmptyComponentInputs", isSignal: true, isRequired: false, transformFunction: null }, bodyMoreItemsHintComponent: { classPropertyName: "bodyMoreItemsHintComponent", publicName: "bodyMoreItemsHintComponent", isSignal: true, isRequired: false, transformFunction: null }, bodyMoreItemsHintComponentInputs: { classPropertyName: "bodyMoreItemsHintComponentInputs", publicName: "bodyMoreItemsHintComponentInputs", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { filterChange: "filterChange" }, providers: [
|
|
586
|
-
{
|
|
587
|
-
provide: COMBOBOX_TOKEN,
|
|
588
|
-
useExisting: ComboboxDirective,
|
|
589
|
-
},
|
|
590
|
-
], queries: [{ propertyName: "optionTemplate", first: true, predicate: COMBOBOX_OPTION_TEMPLATE_TOKEN, descendants: true, read: TemplateRef }, { propertyName: "selectedOptionTemplate", first: true, predicate: COMBOBOX_SELECTED_OPTION_TEMPLATE_TOKEN, descendants: true, read: TemplateRef }, { propertyName: "bodyLoadingTemplate", first: true, predicate: COMBOBOX_BODY_LOADING_TEMPLATE_TOKEN, descendants: true, read: TemplateRef }, { propertyName: "bodyErrorTemplate", first: true, predicate: COMBOBOX_BODY_ERROR_TEMPLATE_TOKEN, descendants: true, read: TemplateRef }, { propertyName: "bodyEmptyTemplate", first: true, predicate: COMBOBOX_BODY_EMPTY_TEMPLATE_TOKEN, descendants: true, read: TemplateRef }, { propertyName: "bodyMoreItemsHintTemplate", first: true, predicate: COMBOBOX_BODY_MORE_ITEMS_HINT_TEMPLATE_TOKEN, descendants: true, read: TemplateRef }], ngImport: i0 }); }
|
|
591
|
-
}
|
|
592
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ComboboxDirective, decorators: [{
|
|
593
|
-
type: Directive,
|
|
594
|
-
args: [{
|
|
595
|
-
standalone: true,
|
|
596
|
-
providers: [
|
|
597
|
-
{
|
|
598
|
-
provide: COMBOBOX_TOKEN,
|
|
599
|
-
useExisting: ComboboxDirective,
|
|
600
|
-
},
|
|
601
|
-
],
|
|
602
|
-
}]
|
|
603
|
-
}], ctorParameters: () => [], propDecorators: { options: [{
|
|
604
|
-
type: Input,
|
|
605
|
-
args: [{ required: true }]
|
|
606
|
-
}], initialValue: [{
|
|
607
|
-
type: Input
|
|
608
|
-
}], filterInternal: [{
|
|
609
|
-
type: Input
|
|
610
|
-
}], loading: [{
|
|
611
|
-
type: Input
|
|
612
|
-
}], error: [{
|
|
613
|
-
type: Input
|
|
614
|
-
}], emptyText: [{
|
|
615
|
-
type: Input
|
|
616
|
-
}], bodyEmptyText: [{
|
|
617
|
-
type: Input
|
|
618
|
-
}], bodyMoreItemsHintText: [{
|
|
619
|
-
type: Input
|
|
620
|
-
}], placeholder: [{
|
|
621
|
-
type: Input
|
|
622
|
-
}], multiple: [{
|
|
623
|
-
type: Input
|
|
624
|
-
}], bindLabel: [{
|
|
625
|
-
type: Input
|
|
626
|
-
}], bindValue: [{
|
|
627
|
-
type: Input
|
|
628
|
-
}], bindKey: [{
|
|
629
|
-
type: Input
|
|
630
|
-
}], bindDisabled: [{
|
|
631
|
-
type: Input
|
|
632
|
-
}], allowCustomValues: [{
|
|
633
|
-
type: Input
|
|
634
|
-
}], showBodyMoreItemsHint: [{
|
|
635
|
-
type: Input,
|
|
636
|
-
args: [{ transform: booleanAttribute }]
|
|
637
|
-
}], filterChange: [{
|
|
638
|
-
type: Output
|
|
639
|
-
}], optionTemplate: [{
|
|
640
|
-
type: ContentChild,
|
|
641
|
-
args: [COMBOBOX_OPTION_TEMPLATE_TOKEN, { read: TemplateRef }]
|
|
642
|
-
}], selectedOptionTemplate: [{
|
|
643
|
-
type: ContentChild,
|
|
644
|
-
args: [COMBOBOX_SELECTED_OPTION_TEMPLATE_TOKEN, { read: TemplateRef }]
|
|
645
|
-
}], bodyLoadingTemplate: [{
|
|
646
|
-
type: ContentChild,
|
|
647
|
-
args: [COMBOBOX_BODY_LOADING_TEMPLATE_TOKEN, { read: TemplateRef }]
|
|
648
|
-
}], bodyErrorTemplate: [{
|
|
649
|
-
type: ContentChild,
|
|
650
|
-
args: [COMBOBOX_BODY_ERROR_TEMPLATE_TOKEN, { read: TemplateRef }]
|
|
651
|
-
}], bodyEmptyTemplate: [{
|
|
652
|
-
type: ContentChild,
|
|
653
|
-
args: [COMBOBOX_BODY_EMPTY_TEMPLATE_TOKEN, { read: TemplateRef }]
|
|
654
|
-
}], bodyMoreItemsHintTemplate: [{
|
|
655
|
-
type: ContentChild,
|
|
656
|
-
args: [COMBOBOX_BODY_MORE_ITEMS_HINT_TEMPLATE_TOKEN, { read: TemplateRef }]
|
|
657
|
-
}] } });
|
|
658
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYm9ib3guZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm1zL2NvbXBvbmVudHMvc2VsZWN0L2NvbXBvbmVudHMvY29tYm9ib3gvZGlyZWN0aXZlcy9jb21ib2JveC9jb21ib2JveC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV6RSxPQUFPLEVBQ0wsWUFBWSxFQUNaLFNBQVMsRUFFVCxZQUFZLEVBQ1osY0FBYyxFQUNkLEtBQUssRUFHTCxNQUFNLEVBQ04sV0FBVyxFQUVYLGdCQUFnQixFQUNoQixNQUFNLEVBQ04sS0FBSyxFQUNMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUUsT0FBTyxFQUNMLG9CQUFvQixFQUVwQix3QkFBd0IsRUFDeEIsZUFBZSxFQUNmLGNBQWMsRUFHZCxhQUFhLEVBQ2IsWUFBWSxFQUNaLGFBQWEsRUFDYixnQkFBZ0IsRUFDaEIsZUFBZSxFQUNmLGFBQWEsRUFDYixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFDTCxlQUFlLEVBQ2YsVUFBVSxFQUNWLGFBQWEsRUFDYixZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLEdBQUcsRUFDSCxFQUFFLEVBQ0YsSUFBSSxFQUNKLFNBQVMsRUFDVCxTQUFTLEVBQ1QsU0FBUyxFQUNULFNBQVMsRUFDVCxHQUFHLEVBQ0gsVUFBVSxHQUNYLE1BQU0sTUFBTSxDQUFD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Q0FBa0MsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBT25FLHlCQUF5QjtzQkFENUIsWUFBWTt1QkFBQyw0Q0FBNEMsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBLCBCQUNLU1BBQ0UsIEVOVEVSLCBFU0NBUEUsIFRBQiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQgeyBDb21wb25lbnRUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHtcbiAgQ29udGVudENoaWxkLFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0aW9uVG9rZW4sXG4gIElucHV0LFxuICBJbnB1dFNpZ25hbCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBUcmFja0J5RnVuY3Rpb24sXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIGlzRGV2TW9kZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQsIHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtcbiAgQWN0aXZlU2VsZWN0aW9uTW9kZWwsXG4gIEFuaW1hdGVkT3ZlcmxheUNvbXBvbmVudEJhc2UsXG4gIEFuaW1hdGVkT3ZlcmxheURpcmVjdGl2ZSxcbiAgS2V5UHJlc3NNYW5hZ2VyLFxuICBTZWxlY3Rpb25Nb2RlbCxcbiAgU2VsZWN0aW9uTW9kZWxCaW5kaW5nLFxuICBUeXBlZFF1ZXJ5TGlzdCxcbiAgY3JlYXRlRGVzdHJveSxcbiAgaXNFbXB0eUFycmF5LFxuICBpc09iamVjdEFycmF5LFxuICBpc1ByaW1pdGl2ZUFycmF5LFxuICBzY3JvbGxUb0VsZW1lbnQsXG4gIHNpZ25hbENsYXNzZXMsXG4gIHNpZ25hbEhvc3RDbGFzc2VzLFxufSBmcm9tICdAZXRobGV0ZS9jb3JlJztcbmltcG9ydCB7IFRIRU1FX1BST1ZJREVSIH0gZnJvbSAnQGV0aGxldGUvdGhlbWluZyc7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIGNhdGNoRXJyb3IsXG4gIGNvbWJpbmVMYXRlc3QsXG4gIGRlYm91bmNlVGltZSxcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gIG1hcCxcbiAgb2YsXG4gIHNraXAsXG4gIHNraXBXaGlsZSxcbiAgc3RhcnRXaXRoLFxuICBzd2l0Y2hNYXAsXG4gIHRha2VVbnRpbCxcbiAgdGFwLFxuICB0aHJvd0Vycm9yLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IElOUFVUX1RPS0VOLCBJbnB1dERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2RpcmVjdGl2ZXMvaW5wdXQnO1xuaW1wb3J0IHsgU0VMRUNUX0ZJRUxEX1RPS0VOIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGlyZWN0aXZlcy9zZWxlY3QtZmllbGQnO1xuaW1wb3J0IHsgQ09NQk9CT1hfQ09ORklHX1RPS0VOLCBDT01CT0JPWF9ERUZBVUxUX0NPTkZJRyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICBDb21ib2JveEtleUhhbmRsZXJSZXN1bHQsXG4gIENvbWJvYm94T3B0aW9uVHlwZSxcbiAgQ29tcG9uZW50V2l0aEVycm9yLFxuICBDb21wb25lbnRXaXRoT3B0aW9uLFxuICBUZW1wbGF0ZVJlZldpdGhFcnJvcixcbiAgVGVtcGxhdGVSZWZXaXRoT3B0aW9uLFxuICBhc3NldENvbWJvYm94Qm9keUNvbXBvbmVudFNldCxcbiAgY29tYm9ib3hFcnJvcixcbn0gZnJvbSAnLi4vLi4vcHJpdmF0ZSc7XG5pbXBvcnQgeyBDT01CT0JPWF9CT0RZX0VNUFRZX1RFTVBMQVRFX1RPS0VOIH0gZnJvbSAnLi4vY29tYm9ib3gtYm9keS1lbXB0eS10ZW1wbGF0ZSc7XG5pbXBvcnQgeyBDT01CT0JPWF9CT0RZX0VSUk9SX1RFTVBMQVRFX1RPS0VOIH0gZnJvbSAnLi4vY29tYm9ib3gtYm9keS1lcnJvci10ZW1wbGF0ZSc7XG5pbXBvcnQgeyBDT01CT0JPWF9CT0RZX0xPQURJTkdfVEVNUExBVEVfVE9LRU4gfSBmcm9tICcuLi9jb21ib2JveC1ib2R5LWxvYWRpbmctdGVtcGxhdGUnO1xuaW1wb3J0IHsgQ09NQk9CT1hfQk9EWV9NT1JFX0lURU1TX0hJTlRfVEVNUExBVEVfVE9LRU4gfSBmcm9tICcuLi9jb21ib2JveC1ib2R5LW1vcmUtaXRlbXMtaGludC10ZW1wbGF0ZSc7XG5pbXBvcnQgeyBDT01CT0JPWF9PUFRJT05fVEVNUExBVEVfVE9LRU4gfSBmcm9tICcuLi9jb21ib2JveC1vcHRpb24tdGVtcGxhdGUnO1xuaW1wb3J0IHsgQ09NQk9CT1hfU0VMRUNURURfT1BUSU9OX1RFTVBMQVRFX1RPS0VOIH0gZnJvbSAnLi4vY29tYm9ib3gtc2VsZWN0ZWQtb3B0aW9uLXRlbXBsYXRlJztcblxuZXhwb3J0IGNvbnN0IENPTUJPQk9YX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPENvbWJvYm94RGlyZWN0aXZlPignRVRfQ09NQk9CT1hfSU5QVVRfVE9LRU4nKTtcblxuZXhwb3J0IHR5cGUgQWJzdHJhY3RDb21ib2JveEJvZHkgPSBBbmltYXRlZE92ZXJsYXlDb21wb25lbnRCYXNlICYge1xuICBfb3B0aW9ucyQ6IEJlaGF2aW9yU3ViamVjdDxUeXBlZFF1ZXJ5TGlzdDxBYnN0cmFjdENvbWJvYm94T3B0aW9uPiB8IG51bGw+O1xuICBfY29udGFpbmVyRWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4gfCB1bmRlZmluZWQ7XG4gIGlkOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBBYnN0cmFjdENvbWJvYm94T3B0aW9uID0ge1xuICBvcHRpb246IElucHV0U2lnbmFsPHVua25vd24+O1xuICBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgaWQ6IHN0cmluZztcbn07XG5cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBDT01CT0JPWF9UT0tFTixcbiAgICAgIHVzZUV4aXN0aW5nOiBDb21ib2JveERpcmVjdGl2ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDb21ib2JveERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8vI3JlZ2lvbiBJbmplY3RzXG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSQgPSBjcmVhdGVEZXN0cm95KCk7XG4gIHJlYWRvbmx5IF9pbnB1dCA9IGluamVjdDxJbnB1dERpcmVjdGl2ZTx1bmtub3duLCBIVE1MSW5wdXRFbGVtZW50Pj4oSU5QVVRfVE9LRU4pO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zZWxlY3RGaWVsZCA9IGluamVjdChTRUxFQ1RfRklFTERfVE9LRU4pO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hbmltYXRlZE92ZXJsYXkgPSBpbmplY3Q8QW5pbWF0ZWRPdmVybGF5RGlyZWN0aXZlPEFic3RyYWN0Q29tYm9ib3hCb2R5Pj4oQW5pbWF0ZWRPdmVybGF5RGlyZWN0aXZlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfY29tYm9ib3hDb25maWcgPSBpbmplY3QoQ09NQk9CT1hfQ09ORklHX1RPS0VOLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcml2YXRlIHJlYWRvbmx5IF90aGVtZVByb3ZpZGVyID0gaW5qZWN0KFRIRU1FX1BST1ZJREVSLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gIC8vI3JlZ2lvbiBJbnB1dHNcblxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICBnZXQgb3B0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0aW9uTW9kZWwuZ2V0RmlsdGVyZWRPcHRpb25zKCk7XG4gIH1cbiAgc2V0IG9wdGlvbnModmFsdWU6IHVua25vd25bXSkge1xuICAgIHRoaXMuX3NlbGVjdGlvbk1vZGVsLnNldE9wdGlvbnModmFsdWUpO1xuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IGluaXRpYWxWYWx1ZSh2YWx1ZTogdW5rbm93bikge1xuICAgIHRoaXMuX3NlbGVjdGlvbk1vZGVsLnNldFNlbGVjdGlvbih2YWx1ZSk7XG4gICAgdGhpcy5faW5pdGlhbFZhbHVlJC5uZXh0KHZhbHVlKTtcbiAgfVxuICBwcml2YXRlIF9pbml0aWFsVmFsdWUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDx1bmtub3duPihudWxsKTtcblxuICBASW5wdXQoKVxuICBnZXQgZmlsdGVySW50ZXJuYWwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlckludGVybmFsJC52YWx1ZTtcbiAgfVxuICBzZXQgZmlsdGVySW50ZXJuYWwodmFsdWU6IHVua25vd24pIHtcbiAgICBjb25zdCB2YWwgPSBib29sZWFuQXR0cmlidXRlKHZhbHVlKTtcbiAgICB0aGlzLl9maWx0ZXJJbnRlcm5hbCQubmV4dCh2YWwpO1xuXG4gICAgaWYgKCF2YWwpIHtcbiAgICAgIHRoaXMuX3NlbGVjdGlvbk1vZGVsLnNldEZpbHRlcignJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3NlbGVjdGlvbk1vZGVsLnNldEZpbHRlcih0aGlzLmN1cnJlbnRGaWx0ZXIpO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIF9maWx0ZXJJbnRlcm5hbCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICBASW5wdXQoKVxuICBnZXQgbG9hZGluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbG9hZGluZyQudmFsdWU7XG4gIH1cbiAgc2V0IGxvYWRpbmcodmFsdWU6IHVua25vd24pIHtcbiAgICB0aGlzLl9sb2FkaW5nJC5uZXh0KGJvb2xlYW5BdHRyaWJ1dGUodmFsdWUpKTtcbiAgfVxuICBwcml2YXRlIF9sb2FkaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICByZWFkb25seSBsb2FkaW5nJCA9IHRoaXMuX2xvYWRpbmckLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBlcnJvcigpIHtcbiAgICByZXR1cm4gdGhpcy5fZXJyb3IkLnZhbHVlO1xuICB9XG4gIHNldCBlcnJvcih2YWx1ZTogdW5rbm93bikge1xuICAgIHRoaXMuX2Vycm9yJC5uZXh0KHZhbHVlKTtcbiAgfVxuICBwcml2YXRlIF9lcnJvciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHVua25vd24+KG51bGwpO1xuICByZWFkb25seSBlcnJvciQgPSB0aGlzLl9lcnJvciQuYXNPYnNlcnZhYmxlKCk7XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgYm9keUVtcHR5VGV4dGAgaW5zdGVhZC4gV2lsbCBiZSByZW1vdmVkIGluIHY1LlxuICAgKi9cbiAgQElucHV0KClcbiAgZW1wdHlUZXh0Pzogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIGJvZHlFbXB0eVRleHQ/OiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgYm9keU1vcmVJdGVtc0hpbnRUZXh0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUbyBiZSByZW1vdmVkIGluIHY1LlxuICAgKi9cbiAgZ2V0IF90ZW1wRW1wdHlUZXh0KCkge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmVtcHR5VGV4dCA/P1xuICAgICAgdGhpcy5ib2R5RW1wdHlUZXh0ID8/XG4gICAgICB0aGlzLl9jb21ib2JveENvbmZpZz8uYm9keUVtcHR5VGV4dCA/P1xuICAgICAgdGhpcy5fY29tYm9ib3hDb25maWc/LmVtcHR5VGV4dCA/P1xuICAgICAgQ09NQk9CT1hfREVGQVVMVF9DT05GSUcuYm9keUVtcHR5VGV4dFxuICAgICk7XG4gIH1cblxuICBASW5wdXQoKVxuICBnZXQgcGxhY2Vob2xkZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BsYWNlaG9sZGVyJC52YWx1ZTtcbiAgfVxuICBzZXQgcGxhY2Vob2xkZXIodmFsdWU6IHN0cmluZyB8IG51bGwpIHtcbiAgICB0aGlzLl9wbGFjZWhvbGRlciQubmV4dCh2YWx1ZSk7XG4gIH1cbiAgcHJpdmF0ZSBfcGxhY2Vob2xkZXIkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmcgfCBudWxsPihudWxsKTtcblxuICBASW5wdXQoKVxuICBzZXQgbXVsdGlwbGUodmFsdWU6IHVua25vd24pIHtcbiAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZXRBbGxvd011bHRpcGxlKGJvb2xlYW5BdHRyaWJ1dGUodmFsdWUpKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBiaW5kTGFiZWwodmFsdWU6IFNlbGVjdGlvbk1vZGVsQmluZGluZyB8IG51bGwpIHtcbiAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZXRMYWJlbEJpbmRpbmcodmFsdWUpO1xuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IGJpbmRWYWx1ZSh2YWx1ZTogU2VsZWN0aW9uTW9kZWxCaW5kaW5nIHwgbnVsbCkge1xuICAgIHRoaXMuX3NlbGVjdGlvbk1vZGVsLnNldFZhbHVlQmluZGluZyh2YWx1ZSk7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgYmluZEtleSh2YWx1ZTogU2VsZWN0aW9uTW9kZWxCaW5kaW5nIHwgbnVsbCkge1xuICAgIHRoaXMuX3NlbGVjdGlvbk1vZGVsLnNldEtleUJpbmRpbmcodmFsdWUpO1xuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IGJpbmREaXNhYmxlZCh2YWx1ZTogU2VsZWN0aW9uTW9kZWxCaW5kaW5nIHwgbnVsbCkge1xuICAgIHRoaXMuX3NlbGVjdGlvbk1vZGVsLnNldERpc2FibGVkQmluZGluZyh2YWx1ZSk7XG4gIH1cblxuICBASW5wdXQoKVxuICBnZXQgYWxsb3dDdXN0b21WYWx1ZXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2FsbG93Q3VzdG9tVmFsdWVzJC52YWx1ZTtcbiAgfVxuICBzZXQgYWxsb3dDdXN0b21WYWx1ZXModmFsdWU6IHVua25vd24pIHtcbiAgICB0aGlzLl9hbGxvd0N1c3RvbVZhbHVlcyQubmV4dChib29sZWFuQXR0cmlidXRlKHZhbHVlKSk7XG4gIH1cbiAgcHJpdmF0ZSBfYWxsb3dDdXN0b21WYWx1ZXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIGdldCBzaG93Qm9keU1vcmVJdGVtc0hpbnQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3Nob3dCb2R5TW9yZUl0ZW1zSGludCQudmFsdWU7XG4gIH1cbiAgc2V0IHNob3dCb2R5TW9yZUl0ZW1zSGludCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3Nob3dCb2R5TW9yZUl0ZW1zSGludCQubmV4dCh2YWx1ZSk7XG4gIH1cbiAgcHJpdmF0ZSBfc2hvd0JvZHlNb3JlSXRlbXNIaW50JCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gIG9wdGlvbkNvbXBvbmVudCA9IGlucHV0PENvbXBvbmVudFdpdGhPcHRpb24gfCBudWxsPigpO1xuICBvcHRpb25Db21wb25lbnRJbnB1dHMgPSBpbnB1dDxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IG51bGwgfCB1bmRlZmluZWQ+KCk7XG5cbiAgc2VsZWN0ZWRPcHRpb25Db21wb25lbnQgPSBpbnB1dDxDb21wb25lbnRXaXRoT3B0aW9uIHwgbnVsbD4oKTtcbiAgYm9keUVycm9yQ29tcG9uZW50SW5wdXRzID0gaW5wdXQ8UmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCBudWxsIHwgdW5kZWZpbmVkPigpO1xuXG4gIGJvZHlFcnJvckNvbXBvbmVudCA9IGlucHV0PENvbXBvbmVudFdpdGhFcnJvciB8IG51bGw+KCk7XG4gIHNlbGVjdGVkT3B0aW9uQ29tcG9uZW50SW5wdXRzID0gaW5wdXQ8UmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCBudWxsIHwgdW5kZWZpbmVkPigpO1xuXG4gIGJvZHlMb2FkaW5nQ29tcG9uZW50ID0gaW5wdXQ8Q29tcG9uZW50VHlwZTx1bmtub3duPiB8IG51bGw+KCk7XG4gIGJvZHlMb2FkaW5nQ29tcG9uZW50SW5wdXRzID0gaW5wdXQ8UmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCBudWxsIHwgdW5kZWZpbmVkPigpO1xuXG4gIGJvZHlFbXB0eUNvbXBvbmVudCA9IGlucHV0PENvbXBvbmVudFR5cGU8dW5rbm93bj4gfCBudWxsPigpO1xuICBib2R5RW1wdHlDb21wb25lbnRJbnB1dHMgPSBpbnB1dDxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IG51bGwgfCB1bmRlZmluZWQ+KCk7XG5cbiAgYm9keU1vcmVJdGVtc0hpbnRDb21wb25lbnQgPSBpbnB1dDxDb21wb25lbnRUeXBlPHVua25vd24+IHwgbnVsbD4oKTtcbiAgYm9keU1vcmVJdGVtc0hpbnRDb21wb25lbnRJbnB1dHMgPSBpbnB1dDxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IG51bGwgfCB1bmRlZmluZWQ+KCk7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIE91dHB1dHNcblxuICBAT3V0cHV0KClcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGZpbHRlckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiBNZW1iZXJzXG5cbiAgcHJpdmF0ZSBfc2hvdWxkSWdub3JlTmV4dEJsdXJFdmVudCA9IGZhbHNlO1xuICBwcml2YXRlIF9kZWxldGVkU2VhcmNoV2l0aEtleVByZXNzID0gZmFsc2U7XG5cbiAgcmVhZG9ubHkgc2VsZWN0Qm9keUlkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gIHJlYWRvbmx5IGFjdGl2ZU9wdGlvbklkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgZ2V0IGN1cnJlbnRGaWx0ZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRGaWx0ZXIkLnZhbHVlO1xuICB9XG4gIHByaXZhdGUgcmVhZG9ubHkgX2N1cnJlbnRGaWx0ZXIkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcblxuICBwcml2YXRlIGdldCBfaXNPcGVuKCkge1xuICAgIHJldHVybiB0aGlzLl9hbmltYXRlZE92ZXJsYXkuaXNNb3VudGVkO1xuICB9XG4gIHJlYWRvbmx5IGlzT3BlbiQgPSB0aGlzLl9hbmltYXRlZE92ZXJsYXkuaXNNb3VudGVkJDtcbiAgcmVhZG9ubHkgaXNPcGVuID0gdG9TaWduYWwodGhpcy5pc09wZW4kKTtcblxuICByZWFkb25seSBfc2VsZWN0aW9uTW9kZWwgPSBuZXcgU2VsZWN0aW9uTW9kZWwoKTtcbiAgcmVhZG9ubHkgX2FjdGl2ZVNlbGVjdGlvbk1vZGVsID0gbmV3IEFjdGl2ZVNlbGVjdGlvbk1vZGVsKCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2JhY2tzcGFjZUtleVByZXNzTWFuYWdlciA9IG5ldyBLZXlQcmVzc01hbmFnZXIoQkFDS1NQQUNFKTtcblxuICByZWFkb25seSBzZWxlY3RlZE9wdGlvbnMkID0gdGhpcy5fc2VsZWN0aW9uTW9kZWwuc2VsZWN0aW9uJDtcbiAgcmVhZG9ubHkgbXVsdGlwbGUkID0gdGhpcy5fc2VsZWN0aW9uTW9kZWwuYWxsb3dNdWx0aXBsZSQ7XG4gIHJlYWRvbmx5IG11bHRpcGxlU2lnbmFsID0gdG9TaWduYWwodGhpcy5tdWx0aXBsZSQsIHsgcmVxdWlyZVN5bmM6IHRydWUgfSk7XG4gIHJlYWRvbmx5IG9wdGlvbnMkID0gdGhpcy5fc2VsZWN0aW9uTW9kZWwuZmlsdGVyZWRPcHRpb25zJDtcbiAgcmVhZG9ubHkgcmF3T3B0aW9ucyQgPSB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5vcHRpb25zJDtcblxuICBAQ29udGVudENoaWxkKENPTUJPQk9YX09QVElPTl9URU1QTEFURV9UT0tFTiwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICBzZXQgb3B0aW9uVGVtcGxhdGUodmFsdWU6IFRlbXBsYXRlUmVmV2l0aE9wdGlvbiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX29wdGlvblRlbXBsYXRlJC5uZXh0KHZhbHVlID8/IG51bGwpO1xuICB9XG4gIHByaXZhdGUgcmVhZG9ubHkgX29wdGlvblRlbXBsYXRlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGVtcGxhdGVSZWZXaXRoT3B0aW9uIHwgbnVsbD4obnVsbCk7XG5cbiAgQENvbnRlbnRDaGlsZChDT01CT0JPWF9TRUxFQ1RFRF9PUFRJT05fVEVNUExBVEVfVE9LRU4sIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgc2V0IHNlbGVjdGVkT3B0aW9uVGVtcGxhdGUodmFsdWU6IFRlbXBsYXRlUmVmV2l0aE9wdGlvbiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX3NlbGVjdGVkT3B0aW9uVGVtcGxhdGUkLm5leHQodmFsdWUgPz8gbnVsbCk7XG4gIH1cbiAgcHJpdmF0ZSByZWFkb25seSBfc2VsZWN0ZWRPcHRpb25UZW1wbGF0ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRlbXBsYXRlUmVmV2l0aE9wdGlvbiB8IG51bGw+KG51bGwpO1xuXG4gIEBDb250ZW50Q2hpbGQoQ09NQk9CT1hfQk9EWV9MT0FESU5HX1RFTVBMQVRFX1RPS0VOLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIHNldCBib2R5TG9hZGluZ1RlbXBsYXRlKHZhbHVlOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX2JvZHlMb2FkaW5nVGVtcGxhdGUkLm5leHQodmFsdWUgPz8gbnVsbCk7XG4gIH1cbiAgcHJpdmF0ZSByZWFkb25seSBfYm9keUxvYWRpbmdUZW1wbGF0ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRlbXBsYXRlUmVmPHVua25vd24+IHwgbnVsbD4obnVsbCk7XG5cbiAgQENvbnRlbnRDaGlsZChDT01CT0JPWF9CT0RZX0VSUk9SX1RFTVBMQVRFX1RPS0VOLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIHNldCBib2R5RXJyb3JUZW1wbGF0ZSh2YWx1ZTogVGVtcGxhdGVSZWZXaXRoRXJyb3IgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9ib2R5RXJyb3JUZW1wbGF0ZSQubmV4dCh2YWx1ZSA/PyBudWxsKTtcbiAgfVxuICBwcml2YXRlIHJlYWRvbmx5IF9ib2R5RXJyb3JUZW1wbGF0ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRlbXBsYXRlUmVmV2l0aEVycm9yIHwgbnVsbD4obnVsbCk7XG5cbiAgQENvbnRlbnRDaGlsZChDT01CT0JPWF9CT0RZX0VNUFRZX1RFTVBMQVRFX1RPS0VOLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIHNldCBib2R5RW1wdHlUZW1wbGF0ZSh2YWx1ZTogVGVtcGxhdGVSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9ib2R5RW1wdHlUZW1wbGF0ZSQubmV4dCh2YWx1ZSA/PyBudWxsKTtcbiAgfVxuICBwcml2YXRlIHJlYWRvbmx5IF9ib2R5RW1wdHlUZW1wbGF0ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRlbXBsYXRlUmVmPHVua25vd24+IHwgbnVsbD4obnVsbCk7XG5cbiAgQENvbnRlbnRDaGlsZChDT01CT0JPWF9CT0RZX01PUkVfSVRFTVNfSElOVF9URU1QTEFURV9UT0tFTiwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICBzZXQgYm9keU1vcmVJdGVtc0hpbnRUZW1wbGF0ZSh2YWx1ZTogVGVtcGxhdGVSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9ib2R5TW9yZUl0ZW1zSGludFRlbXBsYXRlJC5uZXh0KHZhbHVlID8/IG51bGwpO1xuICB9XG4gIHByaXZhdGUgcmVhZG9ubHkgX2JvZHlNb3JlSXRlbXNIaW50VGVtcGxhdGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUZW1wbGF0ZVJlZjx1bmtub3duPiB8IG51bGw+KG51bGwpO1xuXG4gIHJlYWRvbmx5IGhvc3RDbGFzc0JpbmRpbmdzID0gc2lnbmFsSG9zdENsYXNzZXMoe1xuICAgICdldC1jb21ib2JveC0tbG9hZGluZyc6IHRvU2lnbmFsKHRoaXMuX2xvYWRpbmckKSxcbiAgICAnZXQtY29tYm9ib3gtLWVycm9yJzogdG9TaWduYWwodGhpcy5fZXJyb3IkLnBpcGUobWFwKCh2KSA9PiAhIXYpKSksXG4gICAgJ2V0LWNvbWJvYm94LS1vcGVuJzogdG9TaWduYWwodGhpcy5pc09wZW4kKSxcbiAgICAnZXQtc2VsZWN0LWZpZWxkLS1tdWx0aXBsZSc6IHRvU2lnbmFsKHRoaXMubXVsdGlwbGUkKSxcbiAgICAnZXQtc2VsZWN0LWZpZWxkLS1vcGVuJzogdGhpcy5pc09wZW4sXG4gIH0pO1xuXG4gIHJlYWRvbmx5IGZpZWxkSG9zdENsYXNzQmluZGluZ3MgPSBzaWduYWxDbGFzc2VzKHRoaXMuX3NlbGVjdEZpZWxkLmVsZW1lbnRSZWYsIHtcbiAgICAnZXQtc2VsZWN0LWZpZWxkLS1vcGVuJzogdG9TaWduYWwodGhpcy5pc09wZW4kKSxcbiAgICAnZXQtc2VsZWN0LWZpZWxkLS1tdWx0aXBsZSc6IHRvU2lnbmFsKHRoaXMubXVsdGlwbGUkKSxcbiAgfSk7XG5cbiAgcHJpdmF0ZSBfY29tYm9ib3hCb2R5Q29tcG9uZW50OiBDb21wb25lbnRUeXBlPEFic3RyYWN0Q29tYm9ib3hCb2R5PiB8IG51bGwgPSBudWxsO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiBDb21wdXRlc1xuXG4gIHJlYWRvbmx5IGN1c3RvbU9wdGlvblRwbCQgPSB0aGlzLl9vcHRpb25UZW1wbGF0ZSQuYXNPYnNlcnZhYmxlKCk7XG4gIHJlYWRvbmx5IGN1c3RvbVNlbGVjdGVkT3B0aW9uVHBsJCA9IHRoaXMuX3NlbGVjdGVkT3B0aW9uVGVtcGxhdGUkLmFzT2JzZXJ2YWJsZSgpO1xuICByZWFkb25seSBjdXN0b21Cb2R5TG9hZGluZ1RwbCQgPSB0aGlzLl9ib2R5TG9hZGluZ1RlbXBsYXRlJC5hc09ic2VydmFibGUoKTtcbiAgcmVhZG9ubHkgY3VzdG9tQm9keUVycm9yVHBsJCA9IHRoaXMuX2JvZHlFcnJvclRlbXBsYXRlJC5hc09ic2VydmFibGUoKTtcbiAgcmVhZG9ubHkgY3VzdG9tQm9keUVtcHR5VHBsJCA9IHRoaXMuX2JvZHlFbXB0eVRlbXBsYXRlJC5hc09ic2VydmFibGUoKTtcbiAgcmVhZG9ubHkgY3VzdG9tQm9keU1vcmVJdGVtc0hpbnRUcGwkID0gdGhpcy5fYm9keU1vcmVJdGVtc0hpbnRUZW1wbGF0ZSQuYXNPYnNlcnZhYmxlKCk7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIExpZmVjeWNsZVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuX3NlbGVjdGlvbk1vZGVsLnNldERpc2FibGVkQmluZGluZygnZGlzYWJsZWQnKTtcblxuICAgIHRoaXMuX2FjdGl2ZVNlbGVjdGlvbk1vZGVsLnNldFNlbGVjdGlvbk1vZGVsKHRoaXMuX3NlbGVjdGlvbk1vZGVsKTtcblxuICAgIHRoaXMuX2FuaW1hdGVkT3ZlcmxheS5wbGFjZW1lbnQgPSAnYm90dG9tJztcbiAgICB0aGlzLl9hbmltYXRlZE92ZXJsYXkuZmFsbGJhY2tQbGFjZW1lbnRzID0gWydib3R0b20nLCAndG9wJ107XG4gICAgdGhpcy5fYW5pbWF0ZWRPdmVybGF5LmF1dG9SZXNpemUgPSB0cnVlO1xuXG4gICAgdGhpcy5fc2VsZWN0aW9uTW9kZWwuYWxsb3dNdWx0aXBsZSRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgICAgICAgdGFwKChhbGxvd011bHRpcGxlKSA9PiB7XG4gICAgICAgICAgaWYgKGFsbG93TXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUZpbHRlcignJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIHRoaXMuX2lucHV0Ll9zZXRFbXB0eUhlbHBlcih0aGlzLl9jdXJyZW50RmlsdGVyJCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9pbml0RGlzcGF0Y2hGaWx0ZXJDaGFuZ2VzKCk7XG4gICAgdGhpcy5fY2xvc2VCb2R5T25EaXNhYmxlKCk7XG5cbiAgICBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgIHRoaXMuX2RlYnVnVmFsaWRhdGVDb21ib2JveENvbmZpZygpO1xuICAgICAgdGhpcy5fZGVidWdWYWxpZGF0ZU9wdGlvbkFuZEluaXRpYWxWYWx1ZVNjaGVtYSgpO1xuICAgIH1cblxuICAgIHRoaXMuX3NlbGVjdGlvbk1vZGVsLnNldFNlbGVjdGlvbkZyb21WYWx1ZSQodGhpcy5faW5wdXQudmFsdWUpO1xuXG4gICAgdGhpcy5fc2VsZWN0aW9uTW9kZWwudmFsdWUkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgdGFwKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHRoaXMuX2lucHV0Ll91cGRhdGVWYWx1ZSh2YWx1ZSk7XG4gICAgICAgICAgdGhpcy5fc2V0RmlsdGVyRnJvbUlucHV0VmFsdWUoKTtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLl9pbnB1dC5vbkV4dGVybmFsVXBkYXRlJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZXRTZWxlY3Rpb25Gcm9tVmFsdWUkKHRoaXMuX2lucHV0LnZhbHVlKSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gUHVibGljIE1ldGhvZHNcblxuICBzZXRCb2R5Q29tcG9uZW50KGNvbXBvbmVudDogQ29tcG9uZW50VHlwZTxBYnN0cmFjdENvbWJvYm94Qm9keT4pIHtcbiAgICB0aGlzLl9jb21ib2JveEJvZHlDb21wb25lbnQgPSBjb21wb25lbnQ7XG4gIH1cblxuICBnZXRPcHRpb25MYWJlbChvcHRpb246IHVua25vd24pIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0aW9uTW9kZWwuZ2V0TGFiZWwkKG9wdGlvbik7XG4gIH1cblxuICBnZXRPcHRpb25WYWx1ZShvcHRpb246IHVua25vd24pIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0aW9uTW9kZWwuZ2V0VmFsdWUkKG9wdGlvbik7XG4gIH1cblxuICBjb21iaW5lU2VsZWN0ZWRPcHRpb25XaXRoQ29tcG9uZW50SW5wdXRzKG9wdGlvbjogdW5rbm93bikge1xuICAgIHJldHVybiB7XG4gICAgICAuLi4odGhpcy5zZWxlY3RlZE9wdGlvbkNvbXBvbmVudElucHV0cygpID8/IHt9KSxcbiAgICAgIG9wdGlvbixcbiAgICB9O1xuICB9XG5cbiAgcmVtb3ZlU2VsZWN0ZWRPcHRpb24ob3B0aW9uOiB1bmtub3duKSB7XG4gICAgdGhpcy5fc2VsZWN0aW9uTW9kZWwucmVtb3ZlU2VsZWN0ZWRPcHRpb24ob3B0aW9uKTtcblxuICAgIHRoaXMuX2lucHV0Ll9tYXJrQXNUb3VjaGVkKCk7XG4gIH1cblxuICBvcGVuKCkge1xuICAgIGFzc2V0Q29tYm9ib3hCb2R5Q29tcG9uZW50U2V0KHRoaXMuX2NvbWJvYm94Qm9keUNvbXBvbmVudCk7XG5cbiAgICBpZiAodGhpcy5faXNPcGVuIHx8IHRoaXMuX2lucHV0LmRpc2FibGVkIHx8IHRoaXMuX2FuaW1hdGVkT3ZlcmxheS5pc01vdW50aW5nKSByZXR1cm47XG5cbiAgICBjb25zdCBib2R5UmVmID0gdGhpcy5fYW5pbWF0ZWRPdmVybGF5Lm1vdW50KHtcbiAgICAgIGNvbXBvbmVudDogdGhpcy5fY29tYm9ib3hCb2R5Q29tcG9uZW50LFxuICAgICAgbWlycm9yV2lkdGg6IHRydWUsXG4gICAgICB0aGVtZVByb3ZpZGVyOiB0aGlzLl90aGVtZVByb3ZpZGVyLFxuICAgIH0pO1xuXG4gICAgaWYgKCFib2R5UmVmKSByZXR1cm47XG5cbiAgICB0aGlzLnNlbGVjdEJvZHlJZCQubmV4dChib2R5UmVmLmlkKTtcblxuICAgIGJvZHlSZWYuX29wdGlvbnMkXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKChxdWVyeUxpc3QpID0+XG4gICAgICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICBxdWVyeUxpc3Q/LmNoYW5nZXMucGlwZShcbiAgICAgICAgICAgICAgc3RhcnRXaXRoKHF1ZXJ5TGlzdCksXG4gICAgICAgICAgICAgIG1hcCgobCkgPT4gbC50b0FycmF5KCkpLFxuICAgICAgICAgICAgKSA/PyBvZihbXSBhcyBBYnN0cmFjdENvbWJvYm94T3B0aW9uW10pLFxuICAgICAgICAgICAgdGhpcy5fYWN0aXZlU2VsZWN0aW9uTW9kZWwuYWN0aXZlT3B0aW9uJCxcbiAgICAgICAgICBdKSxcbiAgICAgICAgKSxcbiAgICAgICAgdGFwKChbb3B0aW9ucywgYWN0aXZlT3B0aW9uRGF0YV0pID0+IHtcbiAgICAgICAgICBjb25zdCBvcHRpb25SZWYgPSBvcHRpb25zLmZpbmQoKG8pID0+IG8ub3B0aW9uKCkgPT09IGFjdGl2ZU9wdGlvbkRhdGEpO1xuXG4gICAgICAgICAgaWYgKCFvcHRpb25SZWY/LmVsZW1lbnRSZWY/Lm5hdGl2ZUVsZW1lbnQpIHJldHVybjtcblxuICAgICAgICAgIHNjcm9sbFRvRWxlbWVudCh7XG4gICAgICAgICAgICBiZWhhdmlvcjogJ2luc3RhbnQnLFxuICAgICAgICAgICAgZWxlbWVudDogb3B0aW9uUmVmLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgIGNvbnRhaW5lcjogYm9keVJlZi5fY29udGFpbmVyRWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHRoaXMuYWN0aXZlT3B0aW9uSWQkLm5leHQob3B0aW9uUmVmLmlkKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9hbmltYXRlZE92ZXJsYXkuYWZ0ZXJDbG9zZWQoKSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLl9hbmltYXRlZE92ZXJsYXlcbiAgICAgIC5hZnRlckNsb3NlZCgpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnNlbGVjdEJvZHlJZCQubmV4dChudWxsKTtcbiAgICAgICAgICB0aGlzLmFjdGl2ZU9wdGlvbklkJC5uZXh0KG51bGwpO1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGNsb3NlKCkge1xuICAgIGlmICghdGhpcy5faXNPcGVuIHx8IHRoaXMuX2FuaW1hdGVkT3ZlcmxheS5pc1VubW91bnRpbmcpIHJldHVybjtcblxuICAgIHRoaXMuX2FuaW1hdGVkT3ZlcmxheS51bm1vdW50KCk7XG4gIH1cblxuICBmb2N1cygpIHtcbiAgICB0aGlzLl9pbnB1dC5uYXRpdmVJbnB1dFJlZj8uZWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICBzZWxlY3RJbnB1dEFuZE9wZW4oKSB7XG4gICAgaWYgKHRoaXMuX2lucHV0LmRpc2FibGVkKSByZXR1cm47XG5cbiAgICB0aGlzLl9pbnB1dC5uYXRpdmVJbnB1dFJlZj8uZWxlbWVudC5uYXRpdmVFbGVtZW50LnNlbGVjdCgpO1xuICAgIHRoaXMub3BlbigpO1xuICB9XG5cbiAgd3JpdGVWYWx1ZUZyb21PcHRpb24ob3B0aW9uOiB1bmtub3duKSB7XG4gICAgdGhpcy5faW5wdXQuX21hcmtBc1RvdWNoZWQoKTtcblxuICAgIGlmICh0aGlzLl9zZWxlY3Rpb25Nb2RlbC5hbGxvd011bHRpcGxlKSB7XG4gICAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlbC50b2dnbGVTZWxlY3RlZE9wdGlvbihvcHRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5hZGRTZWxlY3RlZE9wdGlvbihvcHRpb24pO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5fc2VsZWN0aW9uTW9kZWwuYWxsb3dNdWx0aXBsZSkge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgdGhpcy5fc2V0RmlsdGVyRnJvbUlucHV0VmFsdWUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fdXBkYXRlRmlsdGVyKCcnKTtcbiAgICB9XG4gIH1cblxuICBjbGVhclZhbHVlKCkge1xuICAgIHRoaXMuX3NlbGVjdGlvbk1vZGVsLmNsZWFyU2VsZWN0ZWRPcHRpb25zKCk7XG4gICAgdGhpcy5faW5wdXQuX21hcmtBc1RvdWNoZWQoKTtcbiAgICB0aGlzLl91cGRhdGVGaWx0ZXIoJycpO1xuICB9XG5cbiAgaXNPcHRpb25TZWxlY3RlZChvcHRpb246IHVua25vd24pIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0aW9uTW9kZWwuaXNTZWxlY3RlZCQob3B0aW9uKTtcbiAgfVxuXG4gIGlzT3B0aW9uQWN0aXZlKG9wdGlvbjogdW5rbm93bikge1xuICAgIHJldHVybiB0aGlzLl9hY3RpdmVTZWxlY3Rpb25Nb2RlbC5pc09wdGlvbkFjdGl2ZSQob3B0aW9uKTtcbiAgfVxuXG4gIGlzT3B0aW9uRGlzYWJsZWQob3B0aW9uOiB1bmtub3duKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGlvbk1vZGVsLmlzRGlzYWJsZWQkKG9wdGlvbik7XG4gIH1cblxuICB0cmFja0J5T3B0aW9uS2V5Rm46IFRyYWNrQnlGdW5jdGlvbjx1bmtub3duPiA9IChpbmRleCwgaXRlbSkgPT4gdGhpcy5fc2VsZWN0aW9uTW9kZWwuZ2V0S2V5KGl0ZW0pO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiBQcml2YXRlIE1ldGhvZHNcblxuICBfaWdub3JlTmV4dEJsdXJFdmVudCgpIHtcbiAgICB0aGlzLl9zaG91bGRJZ25vcmVOZXh0Qmx1ckV2ZW50ID0gdHJ1ZTtcbiAgfVxuXG4gIF9wcm9jZXNzS2V5ZG93bkV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgY29uc3Qga2V5Q29kZSA9IGV2ZW50LmtleUNvZGU7XG4gICAgY29uc3QgaXNPcGVuID0gdGhpcy5faXNPcGVuO1xuICAgIGNvbnN0IGlzTXVsdGlwbGUgPSB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5hbGxvd011bHRpcGxlO1xuICAgIGNvbnN0IGNhbkFkZEN1c3RvbVZhbHVlID0gdGhpcy5hbGxvd0N1c3RvbVZhbHVlcztcbiAgICBjb25zdCB2YWx1ZSA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XG4gICAgY29uc3QgaGFzRmlsdGVyVmFsdWUgPSAhIXZhbHVlO1xuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHRoaXMuX3NlbGVjdGlvbk1vZGVsLnNlbGVjdGlvbjtcbiAgICBjb25zdCBpc0JhY2tzcGFjZVByZXNzZWQgPSB0aGlzLl9iYWNrc3BhY2VLZXlQcmVzc01hbmFnZXIuaXNQcmVzc2VkKGV2ZW50KTtcblxuICAgIGNvbnN0IHJlc3VsdDogQ29tYm9ib3hLZXlIYW5kbGVyUmVzdWx0ID0ge307XG5cbiAgICBpZiAoa2V5Q29kZSA9PT0gRU5URVIpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgLy8gVGhlIHVzZXIgdHlwZWQgYSBjdXN0b20gdmFsdWUgYW5kIHByZXNzZWQgZW50ZXIuIEFkZCBpdCB0byB0aGUgc2VsZWN0ZWQgb3B0aW9ucy5cbiAgICAgIC8vIEZJWE1FOiBDdXJyZW50bHkgaXQgaXMgaW1wb3NzaWJsZSB0byBzZWxlY3QgdGhlIGFjdGl2ZSBvcHRpb24gd2l0aCB0aGUga2V5Ym9hcmQgaWYgY2FuQWRkQ3VzdG9tVmFsdWUgaXMgdHJ1ZS5cbiAgICAgIC8vIFRvIGZpeCB0aGlzLCB0aGUgYWN0aXZlIG9wdGlvbiBzaG91bGQgYWxzbyBpbmNsdWRlIHRoZSBvcmlnaW4gaXQgZ290IGFjdGl2ZSBmcm9tIChrZXlib2FyZCBvciBwcm9ncmFtbWF0aWMpLlxuICAgICAgLy8gVGhlIFwidmFsdWVcIiBjaGFuZ2luZyBzaG91bGQgcHV0IHRoZSBjb21ib2JveCBpbnRvIGEgXCJ1c2UgdGhlIGN1c3RvbSBpbnB1dCBvbiBlbnRlclwiIG1vZGUuXG4gICAgICAvLyBUaGUgXCJhY3RpdmUgb3B0aW9uXCIgY2hhbmdpbmcgdmlhIGtleWJvYXJkIHNob3VsZCBwdXQgdGhlIGNvbWJvYm94IGludG8gYSBcInVzZSB0aGUgYWN0aXZlIG9wdGlvbiBvbiBlbnRlclwiIG1vZGUuXG4gICAgICBpZiAoY2FuQWRkQ3VzdG9tVmFsdWUgJiYgaGFzRmlsdGVyVmFsdWUpIHtcbiAgICAgICAgcmVzdWx0Lm9wdGlvbkFjdGlvbiA9IHsgdHlwZTogJ2FkZCcsIG9wdGlvbjogdmFsdWUgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGFjdGl2ZU9wdGlvbiA9IHRoaXMuX2FjdGl2ZVNlbGVjdGlvbk1vZGVsLmFjdGl2ZU9wdGlvbjtcblxuICAgICAgICBpZiAoYWN0aXZlT3B0aW9uKSB7XG4gICAgICAgICAgaWYgKGlzTXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHJlc3VsdC5vcHRpb25BY3Rpb24gPSB7IHR5cGU6ICd0b2dnbGUnLCBvcHRpb246IGFjdGl2ZU9wdGlvbiB9O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXN1bHQub3B0aW9uQWN0aW9uID0geyB0eXBlOiAnYWRkJywgb3B0aW9uOiBhY3RpdmVPcHRpb24gfTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGlzTXVsdGlwbGUpIHtcbiAgICAgICAgcmVzdWx0LnNldEZpbHRlciA9ICcnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0Lm92ZXJsYXlPcGVyYXRpb24gPSAnY2xvc2UnO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5faW50ZXJwcmV0S2V5SGFuZGxlclJlc3VsdChyZXN1bHQpO1xuICAgIH1cblxuICAgIGlmIChrZXlDb2RlID09PSBFU0NBUEUpIHtcbiAgICAgIGlmIChpc09wZW4pIHtcbiAgICAgICAgcmVzdWx0Lm92ZXJsYXlPcGVyYXRpb24gPSAnY2xvc2UnO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIH0gZWxzZSBpZiAoIWlzTXVsdGlwbGUpIHtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudEZpbHRlcikge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXN1bHQuc2V0RmlsdGVyID0gJyc7XG4gICAgICAgIHJlc3VsdC5vcHRpb25BY3Rpb24gPSAnY2xlYXInO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5faW50ZXJwcmV0S2V5SGFuZGxlclJlc3VsdChyZXN1bHQpO1xuICAgIH1cblxuICAgIGlmIChrZXlDb2RlID09PSBUQUIpIHtcbiAgICAgIHJlc3VsdC5vdmVybGF5T3BlcmF0aW9uID0gJ2Nsb3NlJztcbiAgICAgIHJldHVybiB0aGlzLl9pbnRlcnByZXRLZXlIYW5kbGVyUmVzdWx0KHJlc3VsdCk7XG4gICAgfVxuXG4gICAgaWYgKGtleUNvZGUgPT09IEJBQ0tTUEFDRSkge1xuICAgICAgaWYgKGlzQmFja3NwYWNlUHJlc3NlZCAmJiB2YWx1ZSkge1xuICAgICAgICB0aGlzLl9kZWxldGVkU2VhcmNoV2l0aEtleVByZXNzID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFoYXNGaWx0ZXJWYWx1ZSAmJiBpc011bHRpcGxlICYmIHNlbGVjdGlvbi5sZW5ndGggJiYgIXRoaXMuX2RlbGV0ZWRTZWFyY2hXaXRoS2V5UHJlc3MpIHtcbiAgICAgICAgcmVzdWx0Lm9wdGlvbkFjdGlvbiA9IHsgdHlwZTogJ3JlbW92ZScsIG9wdGlvbjogc2VsZWN0aW9uW3NlbGVjdGlvbi5sZW5ndGggLSAxXSB9O1xuICAgICAgICByZXR1cm4gdGhpcy5faW50ZXJwcmV0S2V5SGFuZGxlclJlc3VsdChyZXN1bHQpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWlzQmFja3NwYWNlUHJlc3NlZCkge1xuICAgICAgICB0aGlzLl9kZWxldGVkU2VhcmNoV2l0aEtleVByZXNzID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2RlbGV0ZWRTZWFyY2hXaXRoS2V5UHJlc3MgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIWlzT3Blbikge1xuICAgICAgcmVzdWx0Lm92ZXJsYXlPcGVyYXRpb24gPSAnb3Blbic7XG4gICAgfVxuXG4gICAgdGhpcy5fYWN0aXZlU2VsZWN0aW9uTW9kZWwuZXZhbHVhdGVLZXlib2FyZEV2ZW50KGV2ZW50KTtcblxuICAgIGlmIChrZXlDb2RlID09PSBBICYmIGV2ZW50LmN0cmxLZXkgJiYgaXNNdWx0aXBsZSkge1xuICAgICAgcmVzdWx0Lm9wdGlvbkFjdGlvbiA9ICd0b2dnbGVBbGwnO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5faW50ZXJwcmV0S2V5SGFuZGxlclJlc3VsdChyZXN1bHQpO1xuICB9XG5cbiAgX3Byb2Nlc3NLZXl1cEV2ZW50KCkge1xuICAgIHRoaXMuX2JhY2tzcGFjZUtleVByZXNzTWFuYWdlci5jbGVhcigpO1xuICB9XG5cbiAgX3Byb2Nlc3NJbnB1dEV2ZW50KGV2ZW50OiBFdmVudCkge1xuICAgIGNvbnN0IHZhbHVlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcblxuICAgIHRoaXMuX3VwZGF0ZUZpbHRlcih2YWx1ZSk7XG4gIH1cblxuICBfaGFuZGxlQmx1ckV2ZW50KCkge1xuICAgIGlmICh0aGlzLl9zaG91bGRJZ25vcmVOZXh0Qmx1ckV2ZW50KSB7XG4gICAgICB0aGlzLl9zaG91bGRJZ25vcmVOZXh0Qmx1ckV2ZW50ID0gZmFsc2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5faW5wdXQuX21hcmtBc1RvdWNoZWQoKTtcbiAgICB0aGlzLl9pbnB1dC5fc2V0U2hvdWxkRGlzcGxheUVycm9yKHRydWUpO1xuXG4gICAgaWYgKHRoaXMuX3NlbGVjdGlvbk1vZGVsLmFsbG93TXVsdGlwbGUpIHtcbiAgICAgIHRoaXMuX3VwZGF0ZUZpbHRlcignJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY3VycmVudEZpbHRlciA9PT0gJycpIHtcbiAgICAgIHRoaXMuX3NlbGVjdGlvbk1vZGVsLmNsZWFyU2VsZWN0ZWRPcHRpb25zKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fc2V0RmlsdGVyRnJvbUlucHV0VmFsdWUoKTtcbiAgfVxuXG4gIF91cGRhdGVGaWx0ZXIodmFsdWU6IHN0cmluZykge1xuICAgIGlmICh0aGlzLl9pbnB1dC5uYXRpdmVJbnB1dFJlZiAmJiB0aGlzLl9pbnB1dC5uYXRpdmVJbnB1dFJlZi5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQudmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICB0aGlzLl9pbnB1dC5uYXRpdmVJbnB1dFJlZi5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jdXJyZW50RmlsdGVyID09PSB2YWx1ZSkgcmV0dXJuO1xuXG4gICAgdGhpcy5fY3VycmVudEZpbHRlciQubmV4dCh2YWx1ZSk7XG5cbiAgICBpZiAodGhpcy5maWx0ZXJJbnRlcm5hbCkge1xuICAgICAgdGhpcy5fc2VsZWN0aW9uTW9kZWwuc2V0RmlsdGVyKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBfc2V0RmlsdGVyRnJvbUlucHV0VmFsdWUoKSB7XG4gICAgaWYgKHRoaXMuX3NlbGVjdGlvbk1vZGVsLmFsbG93TXVsdGlwbGUpIHJldHVybjtcblxuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5faW5wdXQudmFsdWU7XG5cbiAgICBpZiAoIXZhbHVlIHx8IEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB0aGlzLl91cGRhdGVGaWx0ZXIoJycpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG9wdGlvbiA9IHRoaXMuX3NlbGVjdGlvbk1vZGVsLmdldE9wdGlvbkJ5VmFsdWUodmFsdWUpO1xuXG4gICAgaWYgKCFvcHRpb24pIHJldHVybjtcblxuICAgIGNvbnN0IGxhYmVsID0gdGhpcy5fc2VsZWN0aW9uTW9kZWwuZ2V0TGFiZWwob3B0aW9uKTtcblxuICAgIGlmICh0eXBlb2YgbGFiZWwgIT09ICdzdHJpbmcnKSByZXR1cm47XG5cbiAgICB0aGlzLl91cGRhdGVGaWx0ZXIobGFiZWwpO1xuICB9XG5cbiAgX2ludGVycHJldEtleUhhbmRsZXJSZXN1bHQocmVzdWx0OiBDb21ib2JveEtleUhhbmRsZXJSZXN1bHQpIHtcbiAgICBpZiAocmVzdWx0Lm92ZXJsYXlPcGVyYXRpb24gPT09ICdjbG9zZScpIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9IGVsc2UgaWYgKHJlc3VsdC5vdmVybGF5T3BlcmF0aW9uID09PSAnb3BlbicpIHtcbiAgICAgIHRoaXMub3BlbigpO1xuICAgIH1cblxuICAgIGlmIChyZXN1bHQuc2V0RmlsdGVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuX3VwZGF0ZUZpbHRlcihyZXN1bHQuc2V0RmlsdGVyKTtcbiAgICB9XG5cbiAgICBpZiAocmVzdWx0Lm9wdGlvbkFjdGlvbikge1xuICAgICAgaWYgKHR5cGVvZiByZXN1bHQub3B0aW9uQWN0aW9uID09PSAnc3RyaW5nJykge1xuICAgICAgICBpZiAocmVzdWx0Lm9wdGlvbkFjdGlvbiA9PT0gJ2NsZWFyJykge1xuICAgICAgICAgIHRoaXMuX3NlbGVjdGlvbk1vZGVsLmNsZWFyU2VsZWN0ZWRPcHRpb25zKCk7XG4gICAgICAgIH0gZWxzZSBpZiAocmVzdWx0Lm9wdGlvbkFjdGlvbiA9PT0gJ3RvZ2dsZUFsbCcpIHtcbiAgICAgICAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlbC50b2dnbGVBbGxTZWxlY3RlZE9wdGlvbnMoKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgeyB0eXBlLCBvcHRpb24gfSA9IHJlc3VsdC5vcHRpb25BY3Rpb247XG5cbiAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGlvbk1vZGVsLmlzRGlzYWJsZWQob3B0aW9uKSkgcmV0dXJuO1xuXG4gICAgICAgIGlmICh0eXBlID09PSAnYWRkJykge1xuICAgICAgICAgIHRoaXMuX3NlbGVjdGlvbk1vZGVsLmFkZFNlbGVjdGVkT3B0aW9uKG9wdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZSA9PT0gJ3JlbW92ZScpIHtcbiAgICAgICAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5yZW1vdmVTZWxlY3RlZE9wdGlvbihvcHRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGUgPT09ICd0b2dnbGUnKSB7XG4gICAgICAgICAgdGhpcy5fc2VsZWN0aW9uTW9kZWwudG9nZ2xlU2VsZWN0ZWRPcHRpb24ob3B0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2luaXREaXNwYXRjaEZpbHRlckNoYW5nZXMoKSB7XG4gICAgdGhpcy5fY3VycmVudEZpbHRlciRcbiAgICAgIC5waXBlKFxuICAgICAgICBza2lwV2hpbGUoKCkgPT4gdGhpcy5maWx0ZXJJbnRlcm5hbCksXG4gICAgICAgIGRlYm91bmNlVGltZSgzMDApLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICB0YXAoKHYpID0+IHRoaXMuZmlsdGVyQ2hhbmdlLmVtaXQodikpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2xvc2VCb2R5T25EaXNhYmxlKCkge1xuICAgIHRoaXMuX2lucHV0LmRpc2FibGVkJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoZGlzYWJsZWQpID0+IHtcbiAgICAgICAgICBpZiAoIWRpc2FibGVkKSByZXR1cm47XG5cbiAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIERldiBtb2RlXG5cbiAgcHJpdmF0ZSBfZGVidWdWYWxpZGF0ZUNvbWJvYm94Q29uZmlnKGlzUmV0cnkgPSBmYWxzZSkge1xuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuX3NlbGVjdGlvbk1vZGVsLmxhYmVsQmluZGluZyQsIHRoaXMuX3NlbGVjdGlvbk1vZGVsLnZhbHVlQmluZGluZyQsIHRoaXMuX2FsbG93Q3VzdG9tVmFsdWVzJF0pXG4gICAgICAucGlwZShcbiAgICAgICAgc2tpcChpc1JldHJ5ID8gMSA6IDApLCAvLyBTa2lwIGlmIHJldHJ5aW5nIHRvIGF2b2lkIGluZmluaXRlIGxvb3BcbiAgICAgICAgZGVib3VuY2VUaW1lKDApLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICBtYXAoKFtiaW5kTGFiZWwsIGJpbmRWYWx1ZSwgYWxsb3dDdXN0b21WYWx1ZXNdKSA9PiB7XG4gICAgICAgICAgY29uc3Qgc2hvdWxkQmVPYmplY3RzID0gYmluZExhYmVsICYmIGJpbmRWYWx1ZSAmJiAhYWxsb3dDdXN0b21WYWx1ZXM7XG5cbiAgICAgICAgICBpZiAoc2hvdWxkQmVPYmplY3RzKSB7XG4gICAgICAgICAgICByZXR1cm4gQ29tYm9ib3hPcHRpb25UeXBlLk9iamVjdDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gQ29tYm9ib3hPcHRpb25UeXBlLlByaW1pdGl2ZTtcbiAgICAgICAgfSksXG4gICAgICAgIHRhcCgoZXhwZWN0ZWRPcHRpb25UeXBlKSA9PiB7XG4gICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuX3NlbGVjdGlvbk1vZGVsLm9wdGlvbnM7XG5cbiAgICAgICAgICBpZiAoaXNFbXB0eUFycmF5KG9wdGlvbnMpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGV4cGVjdGVkT3B0aW9uVHlwZSA9PT0gQ29tYm9ib3hPcHRpb25UeXBlLk9iamVjdCkge1xuICAgICAgICAgICAgaWYgKCFpc09iamVjdEFycmF5KG9wdGlvbnMpKSB7XG4gICAgICAgICAgICAgIHRocm93IGNvbWJvYm94RXJyb3IoJ29wdGlvbnNfb2JqZWN0X21pc21hdGNoJywgdHJ1ZSwgb3B0aW9ucyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmIChleHBlY3RlZE9wdGlvblR5cGUgPT09IENvbWJvYm94T3B0aW9uVHlwZS5QcmltaXRpdmUpIHtcbiAgICAgICAgICAgIGlmICghaXNQcmltaXRpdmVBcnJheShvcHRpb25zKSkge1xuICAgICAgICAgICAgICB0aHJvdyBjb21ib2JveEVycm9yKCdvcHRpb25zX3ByaW1pdGl2ZV9taXNtYXRjaCcsIHRydWUsIG9wdGlvbnMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGUpID0+IHtcbiAgICAgICAgICB0aGlzLl9kZWJ1Z1ZhbGlkYXRlQ29tYm9ib3hDb25maWcodHJ1ZSk7XG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZSk7XG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZGVidWdWYWxpZGF0ZU9wdGlvbkFuZEluaXRpYWxWYWx1ZVNjaGVtYShpc1JldHJ5ID0gZmFsc2UpIHtcbiAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLm9wdGlvbnMkLCB0aGlzLl9pbml0aWFsVmFsdWUkXSlcbiAgICAgIC5waXBlKFxuICAgICAgICBza2lwKGlzUmV0cnkgPyAxIDogMCksIC8vIFNraXAgaWYgcmV0cnlpbmcgdG8gYXZvaWQgaW5maW5pdGUgbG9vcFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICB0YXAoKFtvcHRpb25zLCBpbml0aWFsVmFsdWVdKSA9PiB7XG4gICAgICAgICAgaWYgKGluaXRpYWxWYWx1ZSA9PT0gbnVsbCB8fCBpbml0aWFsVmFsdWUgPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuXG4gICAgICAgICAgaWYgKCF0aGlzLm11bHRpcGxlKSByZXR1cm47XG5cbiAgICAgICAgICBjb25zdCBpc1ByaW1pdGl2ZSA9IGlzUHJpbWl0aXZlQXJyYXkob3B0aW9ucyk7XG4gICAgICAgICAgY29uc3QgaW5pdGlhbFZhbHVlSXNQcmltaXRpdmUgPSB0aGlzLm11bHRpcGxlXG4gICAgICAgICAgICA/IGlzUHJpbWl0aXZlQXJyYXkoaW5pdGlhbFZhbHVlKVxuICAgICAgICAgICAgOiB0eXBlb2YgaW5pdGlhbFZhbHVlICE9PSAnb2JqZWN0JztcblxuICAgICAgICAgIGlmIChpc1ByaW1pdGl2ZSkge1xuICAgICAgICAgICAgaWYgKCFpbml0aWFsVmFsdWVJc1ByaW1pdGl2ZSkge1xuICAgICAgICAgICAgICB0aHJvdyBjb21ib2JveEVycm9yKCdpbml0X3ZhbF9wcmltaXRpdmVfbWlzbWF0Y2gnLCB0cnVlLCB7IGluaXRpYWxWYWx1ZSwgb3B0aW9ucyB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGluaXRpYWxWYWx1ZUlzUHJpbWl0aXZlKSB7XG4gICAgICAgICAgICAgIHRocm93IGNvbWJvYm94RXJyb3IoJ2luaXRfdmFsX29iamVjdF9taXNtYXRjaCcsIHRydWUsIHsgaW5pdGlhbFZhbHVlLCBvcHRpb25zIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGUpID0+IHtcbiAgICAgICAgICB0aGlzLl9kZWJ1Z1ZhbGlkYXRlT3B0aW9uQW5kSW5pdGlhbFZhbHVlU2NoZW1hKHRydWUpO1xuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGUpO1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxufVxuIl19
|