@angular/material 16.2.1 → 17.0.0-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_index.scss +19 -63
- package/autocomplete/index.d.ts +41 -72
- package/autocomplete/testing/index.d.ts +5 -23
- package/button/_fab-theme.scss +12 -0
- package/card/_card-theme.scss +86 -44
- package/checkbox/_checkbox-theme.scss +78 -43
- package/checkbox/index.d.ts +22 -42
- package/checkbox/testing/index.d.ts +6 -12
- package/core/index.d.ts +17 -28
- package/core/style/_validation.scss +43 -0
- package/core/theming/_inspection.scss +229 -0
- package/core/theming/_theming.scss +110 -10
- package/core/tokens/m2/mat/_form-field.scss +34 -1
- package/core/tokens/m2/mat/_slider.scss +43 -0
- package/core/tokens/m2/mdc/_filled-text-field.scss +1 -1
- package/core/tokens/m2/mdc/_outlined-text-field.scss +1 -1
- package/core/tokens/m2/mdc/_slider.scss +154 -0
- package/dialog/index.d.ts +44 -86
- package/dialog/testing/index.d.ts +6 -18
- package/esm2022/autocomplete/autocomplete-origin.mjs +9 -17
- package/esm2022/autocomplete/autocomplete-trigger.mjs +32 -41
- package/esm2022/autocomplete/autocomplete.mjs +59 -72
- package/esm2022/autocomplete/testing/autocomplete-harness.mjs +20 -33
- package/esm2022/button/fab.mjs +8 -8
- package/esm2022/card/card.mjs +2 -2
- package/esm2022/checkbox/checkbox.mjs +72 -79
- package/esm2022/checkbox/testing/checkbox-harness.mjs +41 -36
- package/esm2022/core/datetime/native-date-adapter.mjs +14 -11
- package/esm2022/core/option/optgroup.mjs +19 -26
- package/esm2022/core/option/option.mjs +25 -35
- package/esm2022/core/version.mjs +1 -1
- package/esm2022/dialog/dialog-container.mjs +50 -75
- package/esm2022/dialog/dialog-ref.mjs +1 -1
- package/esm2022/dialog/dialog.mjs +16 -46
- package/esm2022/dialog/public-api.mjs +2 -2
- package/esm2022/dialog/testing/dialog-harness.mjs +13 -16
- package/esm2022/dialog/testing/dialog-opener.mjs +17 -27
- package/esm2022/dialog/testing/index.mjs +2 -2
- package/esm2022/form-field/form-field.mjs +3 -3
- package/esm2022/form-field/testing/error-harness.mjs +10 -12
- package/esm2022/form-field/testing/form-field-harness.mjs +45 -48
- package/esm2022/list/action-list.mjs +2 -2
- package/esm2022/list/list.mjs +2 -2
- package/esm2022/list/nav-list.mjs +2 -2
- package/esm2022/list/selection-list.mjs +2 -2
- package/esm2022/menu/menu-content.mjs +9 -16
- package/esm2022/menu/menu-trigger.mjs +14 -25
- package/esm2022/menu/menu.mjs +15 -29
- package/esm2022/menu/public-api.mjs +3 -3
- package/esm2022/menu/testing/menu-harness.mjs +29 -43
- package/esm2022/paginator/paginator.mjs +24 -38
- package/esm2022/paginator/testing/paginator-harness.mjs +25 -27
- package/esm2022/progress-bar/progress-bar.mjs +2 -2
- package/esm2022/progress-spinner/progress-spinner.mjs +2 -2
- package/esm2022/radio/radio.mjs +58 -83
- package/esm2022/radio/testing/radio-harness.mjs +31 -38
- package/esm2022/select/select.mjs +194 -212
- package/esm2022/select/testing/select-harness.mjs +18 -23
- package/esm2022/slide-toggle/slide-toggle.mjs +43 -53
- package/esm2022/slide-toggle/testing/slide-toggle-harness.mjs +33 -40
- package/esm2022/slider/slider.mjs +2 -2
- package/esm2022/snack-bar/snack-bar-container.mjs +17 -32
- package/esm2022/snack-bar/snack-bar-ref.mjs +1 -1
- package/esm2022/snack-bar/snack-bar.mjs +11 -25
- package/esm2022/snack-bar/testing/snack-bar-harness.mjs +18 -31
- package/esm2022/table/table-data-source.mjs +15 -18
- package/esm2022/table/testing/cell-harness.mjs +4 -4
- package/esm2022/table/testing/row-harness.mjs +4 -4
- package/esm2022/table/testing/table-harness.mjs +22 -24
- package/esm2022/tabs/public-api.mjs +7 -8
- package/esm2022/tabs/tab-body.mjs +13 -29
- package/esm2022/tabs/tab-group.mjs +55 -79
- package/esm2022/tabs/tab-header.mjs +13 -34
- package/esm2022/tabs/tab-label-wrapper.mjs +6 -18
- package/esm2022/tabs/tab-nav-bar/tab-nav-bar.mjs +119 -168
- package/esm2022/tabs/tab.mjs +25 -37
- package/esm2022/tooltip/testing/tooltip-harness.mjs +21 -23
- package/esm2022/tooltip/tooltip.mjs +68 -101
- package/fesm2022/autocomplete/testing.mjs +20 -33
- package/fesm2022/autocomplete/testing.mjs.map +1 -1
- package/fesm2022/autocomplete.mjs +97 -127
- package/fesm2022/autocomplete.mjs.map +1 -1
- package/fesm2022/button.mjs +8 -8
- package/fesm2022/button.mjs.map +1 -1
- package/fesm2022/card.mjs +2 -2
- package/fesm2022/card.mjs.map +1 -1
- package/fesm2022/checkbox/testing.mjs +41 -36
- package/fesm2022/checkbox/testing.mjs.map +1 -1
- package/fesm2022/checkbox.mjs +72 -79
- package/fesm2022/checkbox.mjs.map +1 -1
- package/fesm2022/core.mjs +49 -61
- package/fesm2022/core.mjs.map +1 -1
- package/fesm2022/dialog/testing.mjs +30 -43
- package/fesm2022/dialog/testing.mjs.map +1 -1
- package/fesm2022/dialog.mjs +65 -120
- package/fesm2022/dialog.mjs.map +1 -1
- package/fesm2022/form-field/testing.mjs +54 -59
- package/fesm2022/form-field/testing.mjs.map +1 -1
- package/fesm2022/form-field.mjs +2 -2
- package/fesm2022/form-field.mjs.map +1 -1
- package/fesm2022/list.mjs +8 -8
- package/fesm2022/list.mjs.map +1 -1
- package/fesm2022/menu/testing.mjs +30 -44
- package/fesm2022/menu/testing.mjs.map +1 -1
- package/fesm2022/menu.mjs +34 -66
- package/fesm2022/menu.mjs.map +1 -1
- package/fesm2022/paginator/testing.mjs +25 -27
- package/fesm2022/paginator/testing.mjs.map +1 -1
- package/fesm2022/paginator.mjs +24 -38
- package/fesm2022/paginator.mjs.map +1 -1
- package/fesm2022/progress-bar.mjs +2 -2
- package/fesm2022/progress-bar.mjs.map +1 -1
- package/fesm2022/progress-spinner.mjs +2 -2
- package/fesm2022/progress-spinner.mjs.map +1 -1
- package/fesm2022/radio/testing.mjs +31 -38
- package/fesm2022/radio/testing.mjs.map +1 -1
- package/fesm2022/radio.mjs +59 -84
- package/fesm2022/radio.mjs.map +1 -1
- package/fesm2022/select/testing.mjs +18 -23
- package/fesm2022/select/testing.mjs.map +1 -1
- package/fesm2022/select.mjs +196 -214
- package/fesm2022/select.mjs.map +1 -1
- package/fesm2022/slide-toggle/testing.mjs +33 -40
- package/fesm2022/slide-toggle/testing.mjs.map +1 -1
- package/fesm2022/slide-toggle.mjs +43 -53
- package/fesm2022/slide-toggle.mjs.map +1 -1
- package/fesm2022/slider.mjs +2 -2
- package/fesm2022/slider.mjs.map +1 -1
- package/fesm2022/snack-bar/testing.mjs +19 -32
- package/fesm2022/snack-bar/testing.mjs.map +1 -1
- package/fesm2022/snack-bar.mjs +26 -55
- package/fesm2022/snack-bar.mjs.map +1 -1
- package/fesm2022/table/testing.mjs +28 -30
- package/fesm2022/table/testing.mjs.map +1 -1
- package/fesm2022/table.mjs +15 -18
- package/fesm2022/table.mjs.map +1 -1
- package/fesm2022/tabs.mjs +234 -368
- package/fesm2022/tabs.mjs.map +1 -1
- package/fesm2022/tooltip/testing.mjs +21 -23
- package/fesm2022/tooltip/testing.mjs.map +1 -1
- package/fesm2022/tooltip.mjs +69 -102
- package/fesm2022/tooltip.mjs.map +1 -1
- package/form-field/_form-field-focus-overlay.scss +13 -18
- package/form-field/_form-field-native-select.scss +30 -67
- package/form-field/_form-field-subscript.scss +4 -8
- package/form-field/_form-field-theme.scss +15 -48
- package/form-field/_mdc-text-field-structure-overrides.scss +20 -0
- package/form-field/testing/index.d.ts +14 -44
- package/list/_list-theme.scss +9 -0
- package/menu/index.d.ts +22 -44
- package/menu/testing/index.d.ts +6 -23
- package/package.json +7 -286
- package/paginator/index.d.ts +6 -22
- package/paginator/testing/index.d.ts +9 -22
- package/prebuilt-themes/deeppurple-amber.css +1 -1
- package/prebuilt-themes/indigo-pink.css +1 -1
- package/prebuilt-themes/pink-bluegrey.css +1 -1
- package/prebuilt-themes/purple-green.css +1 -1
- package/progress-bar/_progress-bar-theme.scss +9 -0
- package/progress-spinner/_progress-spinner-theme.scss +11 -0
- package/radio/index.d.ts +22 -45
- package/radio/testing/index.d.ts +7 -23
- package/schematics/migration.json +4 -4
- package/schematics/ng-add/index.js +2 -2
- package/schematics/ng-add/index.mjs +2 -2
- package/schematics/ng-generate/mdc-migration/index_bundled.js +2 -2
- package/schematics/ng-generate/mdc-migration/index_bundled.js.map +2 -2
- package/schematics/ng-update/index_bundled.js +4 -4
- package/schematics/ng-update/index_bundled.js.map +1 -1
- package/select/index.d.ts +47 -68
- package/select/testing/index.d.ts +9 -22
- package/slide-toggle/index.d.ts +17 -27
- package/slide-toggle/testing/index.d.ts +6 -13
- package/slider/_slider-theme.scss +64 -64
- package/snack-bar/_snack-bar-theme.scss +8 -0
- package/snack-bar/index.d.ts +40 -62
- package/snack-bar/testing/index.d.ts +5 -20
- package/table/index.d.ts +2 -31
- package/table/testing/index.d.ts +17 -34
- package/tabs/index.d.ts +60 -144
- package/tooltip/_tooltip-theme.scss +12 -3
- package/tooltip/index.d.ts +26 -49
- package/tooltip/testing/index.d.ts +7 -17
- package/_theming.scss +0 -43
- package/_token-theming.scss +0 -2
- package/autocomplete/_autocomplete-theme.import.scss +0 -1
- package/badge/_badge-legacy-index.scss +0 -3
- package/badge/_badge-theme.import.scss +0 -11
- package/bottom-sheet/_bottom-sheet-legacy-index.scss +0 -2
- package/bottom-sheet/_bottom-sheet-theme.import.scss +0 -10
- package/button/_button-base.import.scss +0 -4
- package/button/_button-theme.import.scss +0 -13
- package/button-toggle/_button-toggle-legacy-index.scss +0 -2
- package/button-toggle/_button-toggle-theme.import.scss +0 -15
- package/button-toggle/_button-toggle-variables.import.scss +0 -1
- package/card/_card-theme.import.scss +0 -3
- package/checkbox/_checkbox-theme.import.scss +0 -10
- package/chips/_chips-theme.import.scss +0 -4
- package/core/_core-legacy-index.scss +0 -16
- package/core/_core.import.scss +0 -60
- package/core/color/_all-color.import.scss +0 -53
- package/core/color/_color-legacy-index.scss +0 -1
- package/core/density/private/_all-density.import.scss +0 -15
- package/core/density/private/_compatibility.import.scss +0 -4
- package/core/density/private/_density-legacy-index.scss +0 -5
- package/core/focus-indicators/_focus-indicators-legacy-index.scss +0 -5
- package/core/focus-indicators/_focus-indicators.import.scss +0 -23
- package/core/mdc-helpers/_mdc-helpers.import.scss +0 -9
- package/core/option/_optgroup-theme.import.scss +0 -4
- package/core/option/_option-legacy-index.scss +0 -5
- package/core/option/_option-theme.import.scss +0 -4
- package/core/ripple/_ripple-legacy-index.scss +0 -3
- package/core/ripple/_ripple.import.scss +0 -20
- package/core/selection/pseudo-checkbox/_pseudo-checkbox-legacy-index.scss +0 -2
- package/core/selection/pseudo-checkbox/_pseudo-checkbox-theme.import.scss +0 -17
- package/core/style/_button-common.import.scss +0 -4
- package/core/style/_checkbox-common.import.scss +0 -11
- package/core/style/_elevation.import.scss +0 -17
- package/core/style/_form-common.import.scss +0 -16
- package/core/style/_layout-common.import.scss +0 -1
- package/core/style/_list-common.import.scss +0 -2
- package/core/style/_menu-common.import.scss +0 -18
- package/core/style/_private.import.scss +0 -15
- package/core/style/_style-legacy-index.scss +0 -24
- package/core/style/_variables.import.scss +0 -8
- package/core/style/_vendor-prefixes.import.scss +0 -1
- package/core/theming/_all-theme.import.scss +0 -86
- package/core/theming/_palette.import.scss +0 -12
- package/core/theming/_theming-legacy-index.scss +0 -22
- package/core/theming/_theming.import.scss +0 -24
- package/core/typography/_all-typography.import.scss +0 -76
- package/core/typography/_typography-legacy-index.scss +0 -18
- package/core/typography/_typography-utils.import.scss +0 -9
- package/core/typography/_typography.import.scss +0 -14
- package/datepicker/_datepicker-legacy-index.scss +0 -9
- package/datepicker/_datepicker-theme.import.scss +0 -17
- package/dialog/_dialog-legacy-padding.import.scss +0 -1
- package/dialog/_dialog-theme.import.scss +0 -1
- package/dialog/_mdc-dialog-structure-overrides.import.scss +0 -1
- package/divider/_divider-legacy-index.scss +0 -3
- package/divider/_divider-offset.import.scss +0 -1
- package/divider/_divider-theme.import.scss +0 -6
- package/esm2022/legacy-autocomplete/autocomplete-module.mjs +0 -51
- package/esm2022/legacy-autocomplete/autocomplete-origin.mjs +0 -28
- package/esm2022/legacy-autocomplete/autocomplete-trigger.mjs +0 -60
- package/esm2022/legacy-autocomplete/autocomplete.mjs +0 -40
- package/esm2022/legacy-autocomplete/index.mjs +0 -9
- package/esm2022/legacy-autocomplete/legacy-autocomplete_public_index.mjs +0 -5
- package/esm2022/legacy-autocomplete/public-api.mjs +0 -48
- package/esm2022/legacy-autocomplete/testing/autocomplete-harness-filters.mjs +0 -9
- package/esm2022/legacy-autocomplete/testing/autocomplete-harness.mjs +0 -39
- package/esm2022/legacy-autocomplete/testing/index.mjs +0 -9
- package/esm2022/legacy-autocomplete/testing/public-api.mjs +0 -9
- package/esm2022/legacy-button/button-module.mjs +0 -29
- package/esm2022/legacy-button/button.mjs +0 -177
- package/esm2022/legacy-button/index.mjs +0 -9
- package/esm2022/legacy-button/legacy-button_public_index.mjs +0 -5
- package/esm2022/legacy-button/public-api.mjs +0 -10
- package/esm2022/legacy-button/testing/button-harness.mjs +0 -82
- package/esm2022/legacy-button/testing/index.mjs +0 -9
- package/esm2022/legacy-button/testing/public-api.mjs +0 -9
- package/esm2022/legacy-card/card-module.mjs +0 -87
- package/esm2022/legacy-card/card.mjs +0 -276
- package/esm2022/legacy-card/index.mjs +0 -9
- package/esm2022/legacy-card/legacy-card_public_index.mjs +0 -5
- package/esm2022/legacy-card/public-api.mjs +0 -10
- package/esm2022/legacy-card/testing/card-harness-filters.mjs +0 -9
- package/esm2022/legacy-card/testing/card-harness.mjs +0 -47
- package/esm2022/legacy-card/testing/index.mjs +0 -9
- package/esm2022/legacy-card/testing/public-api.mjs +0 -9
- package/esm2022/legacy-checkbox/checkbox-module.mjs +0 -31
- package/esm2022/legacy-checkbox/checkbox.mjs +0 -137
- package/esm2022/legacy-checkbox/index.mjs +0 -9
- package/esm2022/legacy-checkbox/legacy-checkbox_public_index.mjs +0 -5
- package/esm2022/legacy-checkbox/public-api.mjs +0 -36
- package/esm2022/legacy-checkbox/testing/checkbox-harness.mjs +0 -46
- package/esm2022/legacy-checkbox/testing/index.mjs +0 -9
- package/esm2022/legacy-checkbox/testing/public-api.mjs +0 -9
- package/esm2022/legacy-chips/chip-default-options.mjs +0 -15
- package/esm2022/legacy-chips/chip-input.mjs +0 -198
- package/esm2022/legacy-chips/chip-list.mjs +0 -718
- package/esm2022/legacy-chips/chip-text-control.mjs +0 -9
- package/esm2022/legacy-chips/chip.mjs +0 -445
- package/esm2022/legacy-chips/chips-module.mjs +0 -68
- package/esm2022/legacy-chips/index.mjs +0 -9
- package/esm2022/legacy-chips/legacy-chips_public_index.mjs +0 -5
- package/esm2022/legacy-chips/public-api.mjs +0 -13
- package/esm2022/legacy-chips/testing/chip-avatar-harness.mjs +0 -26
- package/esm2022/legacy-chips/testing/chip-harness-filters.mjs +0 -2
- package/esm2022/legacy-chips/testing/chip-harness.mjs +0 -95
- package/esm2022/legacy-chips/testing/chip-input-harness.mjs +0 -86
- package/esm2022/legacy-chips/testing/chip-list-harness.mjs +0 -90
- package/esm2022/legacy-chips/testing/chip-listbox-harness.mjs +0 -48
- package/esm2022/legacy-chips/testing/chip-option-harness.mjs +0 -49
- package/esm2022/legacy-chips/testing/chip-remove-harness.mjs +0 -30
- package/esm2022/legacy-chips/testing/index.mjs +0 -9
- package/esm2022/legacy-chips/testing/public-api.mjs +0 -14
- package/esm2022/legacy-core/index.mjs +0 -9
- package/esm2022/legacy-core/legacy-core_public_index.mjs +0 -5
- package/esm2022/legacy-core/option/index.mjs +0 -69
- package/esm2022/legacy-core/option/optgroup.mjs +0 -30
- package/esm2022/legacy-core/option/option.mjs +0 -54
- package/esm2022/legacy-core/public-api.mjs +0 -170
- package/esm2022/legacy-core/testing/index.mjs +0 -9
- package/esm2022/legacy-core/testing/optgroup-harness-filters.mjs +0 -9
- package/esm2022/legacy-core/testing/optgroup-harness.mjs +0 -47
- package/esm2022/legacy-core/testing/option-harness-filters.mjs +0 -9
- package/esm2022/legacy-core/testing/option-harness.mjs +0 -58
- package/esm2022/legacy-core/testing/public-api.mjs +0 -12
- package/esm2022/legacy-dialog/dialog-animations.mjs +0 -17
- package/esm2022/legacy-dialog/dialog-config.mjs +0 -22
- package/esm2022/legacy-dialog/dialog-container.mjs +0 -85
- package/esm2022/legacy-dialog/dialog-content-directives.mjs +0 -209
- package/esm2022/legacy-dialog/dialog-module.mjs +0 -57
- package/esm2022/legacy-dialog/dialog-ref.mjs +0 -16
- package/esm2022/legacy-dialog/dialog.mjs +0 -106
- package/esm2022/legacy-dialog/index.mjs +0 -9
- package/esm2022/legacy-dialog/legacy-dialog_public_index.mjs +0 -5
- package/esm2022/legacy-dialog/public-api.mjs +0 -40
- package/esm2022/legacy-dialog/testing/dialog-harness.mjs +0 -36
- package/esm2022/legacy-dialog/testing/dialog-opener.mjs +0 -56
- package/esm2022/legacy-dialog/testing/index.mjs +0 -9
- package/esm2022/legacy-dialog/testing/public-api.mjs +0 -10
- package/esm2022/legacy-form-field/error.mjs +0 -46
- package/esm2022/legacy-form-field/form-field-module.mjs +0 -67
- package/esm2022/legacy-form-field/form-field.mjs +0 -530
- package/esm2022/legacy-form-field/hint.mjs +0 -56
- package/esm2022/legacy-form-field/index.mjs +0 -9
- package/esm2022/legacy-form-field/label.mjs +0 -25
- package/esm2022/legacy-form-field/legacy-form-field_public_index.mjs +0 -5
- package/esm2022/legacy-form-field/placeholder.mjs +0 -26
- package/esm2022/legacy-form-field/prefix.mjs +0 -27
- package/esm2022/legacy-form-field/public-api.mjs +0 -62
- package/esm2022/legacy-form-field/suffix.mjs +0 -27
- package/esm2022/legacy-form-field/testing/error-harness.mjs +0 -26
- package/esm2022/legacy-form-field/testing/form-field-harness.mjs +0 -73
- package/esm2022/legacy-form-field/testing/index.mjs +0 -9
- package/esm2022/legacy-form-field/testing/public-api.mjs +0 -19
- package/esm2022/legacy-input/index.mjs +0 -9
- package/esm2022/legacy-input/input-module.mjs +0 -45
- package/esm2022/legacy-input/input.mjs +0 -62
- package/esm2022/legacy-input/legacy-input_public_index.mjs +0 -5
- package/esm2022/legacy-input/public-api.mjs +0 -21
- package/esm2022/legacy-input/testing/index.mjs +0 -9
- package/esm2022/legacy-input/testing/public-api.mjs +0 -24
- package/esm2022/legacy-list/index.mjs +0 -9
- package/esm2022/legacy-list/legacy-list_public_index.mjs +0 -5
- package/esm2022/legacy-list/list-module.mjs +0 -75
- package/esm2022/legacy-list/list.mjs +0 -223
- package/esm2022/legacy-list/public-api.mjs +0 -22
- package/esm2022/legacy-list/selection-list.mjs +0 -619
- package/esm2022/legacy-list/testing/action-list-harness.mjs +0 -67
- package/esm2022/legacy-list/testing/index.mjs +0 -9
- package/esm2022/legacy-list/testing/list-harness-base.mjs +0 -97
- package/esm2022/legacy-list/testing/list-harness-filters.mjs +0 -9
- package/esm2022/legacy-list/testing/list-harness.mjs +0 -51
- package/esm2022/legacy-list/testing/list-item-harness-base.mjs +0 -74
- package/esm2022/legacy-list/testing/nav-list-harness.mjs +0 -71
- package/esm2022/legacy-list/testing/public-api.mjs +0 -12
- package/esm2022/legacy-list/testing/selection-list-harness.mjs +0 -129
- package/esm2022/legacy-menu/index.mjs +0 -9
- package/esm2022/legacy-menu/legacy-menu_public_index.mjs +0 -5
- package/esm2022/legacy-menu/menu-content.mjs +0 -27
- package/esm2022/legacy-menu/menu-item.mjs +0 -41
- package/esm2022/legacy-menu/menu-module.mjs +0 -50
- package/esm2022/legacy-menu/menu-trigger.mjs +0 -31
- package/esm2022/legacy-menu/menu.mjs +0 -40
- package/esm2022/legacy-menu/public-api.mjs +0 -49
- package/esm2022/legacy-menu/testing/index.mjs +0 -9
- package/esm2022/legacy-menu/testing/menu-harness.mjs +0 -56
- package/esm2022/legacy-menu/testing/public-api.mjs +0 -9
- package/esm2022/legacy-paginator/index.mjs +0 -9
- package/esm2022/legacy-paginator/legacy-paginator_public_index.mjs +0 -5
- package/esm2022/legacy-paginator/paginator-module.mjs +0 -49
- package/esm2022/legacy-paginator/paginator.mjs +0 -53
- package/esm2022/legacy-paginator/public-api.mjs +0 -36
- package/esm2022/legacy-paginator/testing/index.mjs +0 -9
- package/esm2022/legacy-paginator/testing/paginator-harness.mjs +0 -41
- package/esm2022/legacy-paginator/testing/public-api.mjs +0 -15
- package/esm2022/legacy-progress-bar/index.mjs +0 -9
- package/esm2022/legacy-progress-bar/legacy-progress-bar_public_index.mjs +0 -5
- package/esm2022/legacy-progress-bar/progress-bar-module.mjs +0 -30
- package/esm2022/legacy-progress-bar/progress-bar.mjs +0 -190
- package/esm2022/legacy-progress-bar/public-api.mjs +0 -11
- package/esm2022/legacy-progress-bar/testing/index.mjs +0 -9
- package/esm2022/legacy-progress-bar/testing/progress-bar-harness.mjs +0 -38
- package/esm2022/legacy-progress-bar/testing/public-api.mjs +0 -9
- package/esm2022/legacy-progress-spinner/index.mjs +0 -9
- package/esm2022/legacy-progress-spinner/legacy-progress-spinner_public_index.mjs +0 -5
- package/esm2022/legacy-progress-spinner/progress-spinner-module.mjs +0 -30
- package/esm2022/legacy-progress-spinner/progress-spinner.mjs +0 -286
- package/esm2022/legacy-progress-spinner/public-api.mjs +0 -19
- package/esm2022/legacy-progress-spinner/testing/index.mjs +0 -9
- package/esm2022/legacy-progress-spinner/testing/progress-spinner-harness.mjs +0 -39
- package/esm2022/legacy-progress-spinner/testing/public-api.mjs +0 -9
- package/esm2022/legacy-radio/index.mjs +0 -9
- package/esm2022/legacy-radio/legacy-radio_public_index.mjs +0 -5
- package/esm2022/legacy-radio/public-api.mjs +0 -31
- package/esm2022/legacy-radio/radio-module.mjs +0 -29
- package/esm2022/legacy-radio/radio.mjs +0 -112
- package/esm2022/legacy-radio/testing/index.mjs +0 -9
- package/esm2022/legacy-radio/testing/public-api.mjs +0 -9
- package/esm2022/legacy-radio/testing/radio-harness.mjs +0 -58
- package/esm2022/legacy-select/index.mjs +0 -9
- package/esm2022/legacy-select/legacy-select_public_index.mjs +0 -5
- package/esm2022/legacy-select/public-api.mjs +0 -37
- package/esm2022/legacy-select/select-animations.mjs +0 -56
- package/esm2022/legacy-select/select-errors.mjs +0 -39
- package/esm2022/legacy-select/select-module.mjs +0 -51
- package/esm2022/legacy-select/select.mjs +0 -447
- package/esm2022/legacy-select/testing/index.mjs +0 -9
- package/esm2022/legacy-select/testing/public-api.mjs +0 -9
- package/esm2022/legacy-select/testing/select-harness-filters.mjs +0 -9
- package/esm2022/legacy-select/testing/select-harness.mjs +0 -36
- package/esm2022/legacy-slide-toggle/index.mjs +0 -9
- package/esm2022/legacy-slide-toggle/legacy-slide-toggle_public_index.mjs +0 -5
- package/esm2022/legacy-slide-toggle/public-api.mjs +0 -32
- package/esm2022/legacy-slide-toggle/slide-toggle-config.mjs +0 -18
- package/esm2022/legacy-slide-toggle/slide-toggle-module.mjs +0 -42
- package/esm2022/legacy-slide-toggle/slide-toggle.mjs +0 -137
- package/esm2022/legacy-slide-toggle/testing/index.mjs +0 -9
- package/esm2022/legacy-slide-toggle/testing/public-api.mjs +0 -15
- package/esm2022/legacy-slide-toggle/testing/slide-toggle-harness.mjs +0 -50
- package/esm2022/legacy-slider/index.mjs +0 -9
- package/esm2022/legacy-slider/legacy-slider_public_index.mjs +0 -5
- package/esm2022/legacy-slider/public-api.mjs +0 -10
- package/esm2022/legacy-slider/slider-module.mjs +0 -30
- package/esm2022/legacy-slider/slider.mjs +0 -847
- package/esm2022/legacy-slider/testing/index.mjs +0 -9
- package/esm2022/legacy-slider/testing/public-api.mjs +0 -9
- package/esm2022/legacy-slider/testing/slider-harness-filters.mjs +0 -2
- package/esm2022/legacy-slider/testing/slider-harness.mjs +0 -122
- package/esm2022/legacy-snack-bar/index.mjs +0 -9
- package/esm2022/legacy-snack-bar/legacy-snack-bar_public_index.mjs +0 -5
- package/esm2022/legacy-snack-bar/public-api.mjs +0 -53
- package/esm2022/legacy-snack-bar/simple-snack-bar.mjs +0 -45
- package/esm2022/legacy-snack-bar/snack-bar-container.mjs +0 -39
- package/esm2022/legacy-snack-bar/snack-bar-module.mjs +0 -34
- package/esm2022/legacy-snack-bar/snack-bar.mjs +0 -47
- package/esm2022/legacy-snack-bar/testing/index.mjs +0 -9
- package/esm2022/legacy-snack-bar/testing/public-api.mjs +0 -9
- package/esm2022/legacy-snack-bar/testing/snack-bar-harness.mjs +0 -46
- package/esm2022/legacy-table/cell.mjs +0 -163
- package/esm2022/legacy-table/index.mjs +0 -9
- package/esm2022/legacy-table/legacy-table_public_index.mjs +0 -5
- package/esm2022/legacy-table/public-api.mjs +0 -20
- package/esm2022/legacy-table/row.mjs +0 -165
- package/esm2022/legacy-table/table-data-source.mjs +0 -27
- package/esm2022/legacy-table/table-module.mjs +0 -98
- package/esm2022/legacy-table/table.mjs +0 -72
- package/esm2022/legacy-table/testing/cell-harness.mjs +0 -62
- package/esm2022/legacy-table/testing/index.mjs +0 -9
- package/esm2022/legacy-table/testing/public-api.mjs +0 -27
- package/esm2022/legacy-table/testing/row-harness.mjs +0 -76
- package/esm2022/legacy-table/testing/table-harness.mjs +0 -34
- package/esm2022/legacy-table/text-column.mjs +0 -65
- package/esm2022/legacy-tabs/index.mjs +0 -9
- package/esm2022/legacy-tabs/ink-bar.mjs +0 -73
- package/esm2022/legacy-tabs/legacy-tabs_public_index.mjs +0 -5
- package/esm2022/legacy-tabs/public-api.mjs +0 -94
- package/esm2022/legacy-tabs/tab-body.mjs +0 -64
- package/esm2022/legacy-tabs/tab-content.mjs +0 -27
- package/esm2022/legacy-tabs/tab-group.mjs +0 -72
- package/esm2022/legacy-tabs/tab-header.mjs +0 -75
- package/esm2022/legacy-tabs/tab-label-wrapper.mjs +0 -30
- package/esm2022/legacy-tabs/tab-label.mjs +0 -27
- package/esm2022/legacy-tabs/tab-nav-bar/index.mjs +0 -9
- package/esm2022/legacy-tabs/tab-nav-bar/tab-nav-bar.mjs +0 -164
- package/esm2022/legacy-tabs/tab.mjs +0 -46
- package/esm2022/legacy-tabs/tabs-module.mjs +0 -99
- package/esm2022/legacy-tabs/testing/index.mjs +0 -9
- package/esm2022/legacy-tabs/testing/public-api.mjs +0 -12
- package/esm2022/legacy-tabs/testing/tab-group-harness.mjs +0 -61
- package/esm2022/legacy-tabs/testing/tab-harness-filters.mjs +0 -2
- package/esm2022/legacy-tabs/testing/tab-harness.mjs +0 -71
- package/esm2022/legacy-tabs/testing/tab-link-harness.mjs +0 -45
- package/esm2022/legacy-tabs/testing/tab-nav-bar-harness.mjs +0 -70
- package/esm2022/legacy-tabs/testing/tab-nav-panel-harness.mjs +0 -31
- package/esm2022/legacy-tooltip/index.mjs +0 -9
- package/esm2022/legacy-tooltip/legacy-tooltip_public_index.mjs +0 -5
- package/esm2022/legacy-tooltip/public-api.mjs +0 -47
- package/esm2022/legacy-tooltip/testing/index.mjs +0 -9
- package/esm2022/legacy-tooltip/testing/public-api.mjs +0 -9
- package/esm2022/legacy-tooltip/testing/tooltip-harness.mjs +0 -35
- package/esm2022/legacy-tooltip/tooltip-animations.mjs +0 -28
- package/esm2022/legacy-tooltip/tooltip-module.mjs +0 -35
- package/esm2022/legacy-tooltip/tooltip.mjs +0 -108
- package/expansion/_expansion-legacy-index.scss +0 -2
- package/expansion/_expansion-theme.import.scss +0 -12
- package/expansion/_expansion-variables.import.scss +0 -1
- package/fesm2022/legacy-autocomplete/testing.mjs +0 -35
- package/fesm2022/legacy-autocomplete/testing.mjs.map +0 -1
- package/fesm2022/legacy-autocomplete.mjs +0 -146
- package/fesm2022/legacy-autocomplete.mjs.map +0 -1
- package/fesm2022/legacy-button/testing.mjs +0 -78
- package/fesm2022/legacy-button/testing.mjs.map +0 -1
- package/fesm2022/legacy-button.mjs +0 -194
- package/fesm2022/legacy-button.mjs.map +0 -1
- package/fesm2022/legacy-card/testing.mjs +0 -43
- package/fesm2022/legacy-card/testing.mjs.map +0 -1
- package/fesm2022/legacy-card.mjs +0 -353
- package/fesm2022/legacy-card.mjs.map +0 -1
- package/fesm2022/legacy-checkbox/testing.mjs +0 -42
- package/fesm2022/legacy-checkbox/testing.mjs.map +0 -1
- package/fesm2022/legacy-checkbox.mjs +0 -157
- package/fesm2022/legacy-checkbox.mjs.map +0 -1
- package/fesm2022/legacy-chips/testing.mjs +0 -365
- package/fesm2022/legacy-chips/testing.mjs.map +0 -1
- package/fesm2022/legacy-chips.mjs +0 -1399
- package/fesm2022/legacy-chips.mjs.map +0 -1
- package/fesm2022/legacy-core/testing.mjs +0 -92
- package/fesm2022/legacy-core/testing.mjs.map +0 -1
- package/fesm2022/legacy-core.mjs +0 -92
- package/fesm2022/legacy-core.mjs.map +0 -1
- package/fesm2022/legacy-dialog/testing.mjs +0 -80
- package/fesm2022/legacy-dialog/testing.mjs.map +0 -1
- package/fesm2022/legacy-dialog.mjs +0 -449
- package/fesm2022/legacy-dialog.mjs.map +0 -1
- package/fesm2022/legacy-form-field/testing.mjs +0 -87
- package/fesm2022/legacy-form-field/testing.mjs.map +0 -1
- package/fesm2022/legacy-form-field.mjs +0 -726
- package/fesm2022/legacy-form-field.mjs.map +0 -1
- package/fesm2022/legacy-input/testing.mjs +0 -2
- package/fesm2022/legacy-input/testing.mjs.map +0 -1
- package/fesm2022/legacy-input.mjs +0 -97
- package/fesm2022/legacy-input.mjs.map +0 -1
- package/fesm2022/legacy-list/testing.mjs +0 -436
- package/fesm2022/legacy-list/testing.mjs.map +0 -1
- package/fesm2022/legacy-list.mjs +0 -891
- package/fesm2022/legacy-list.mjs.map +0 -1
- package/fesm2022/legacy-menu/testing.mjs +0 -52
- package/fesm2022/legacy-menu/testing.mjs.map +0 -1
- package/fesm2022/legacy-menu.mjs +0 -145
- package/fesm2022/legacy-menu.mjs.map +0 -1
- package/fesm2022/legacy-paginator/testing.mjs +0 -38
- package/fesm2022/legacy-paginator/testing.mjs.map +0 -1
- package/fesm2022/legacy-paginator.mjs +0 -92
- package/fesm2022/legacy-paginator.mjs.map +0 -1
- package/fesm2022/legacy-progress-bar/testing.mjs +0 -34
- package/fesm2022/legacy-progress-bar/testing.mjs.map +0 -1
- package/fesm2022/legacy-progress-bar.mjs +0 -210
- package/fesm2022/legacy-progress-bar.mjs.map +0 -1
- package/fesm2022/legacy-progress-spinner/testing.mjs +0 -35
- package/fesm2022/legacy-progress-spinner/testing.mjs.map +0 -1
- package/fesm2022/legacy-progress-spinner.mjs +0 -312
- package/fesm2022/legacy-progress-spinner.mjs.map +0 -1
- package/fesm2022/legacy-radio/testing.mjs +0 -54
- package/fesm2022/legacy-radio/testing.mjs.map +0 -1
- package/fesm2022/legacy-radio.mjs +0 -130
- package/fesm2022/legacy-radio.mjs.map +0 -1
- package/fesm2022/legacy-select/testing.mjs +0 -32
- package/fesm2022/legacy-select/testing.mjs.map +0 -1
- package/fesm2022/legacy-select.mjs +0 -541
- package/fesm2022/legacy-select.mjs.map +0 -1
- package/fesm2022/legacy-slide-toggle/testing.mjs +0 -47
- package/fesm2022/legacy-slide-toggle/testing.mjs.map +0 -1
- package/fesm2022/legacy-slide-toggle.mjs +0 -177
- package/fesm2022/legacy-slide-toggle.mjs.map +0 -1
- package/fesm2022/legacy-slider/testing.mjs +0 -118
- package/fesm2022/legacy-slider/testing.mjs.map +0 -1
- package/fesm2022/legacy-slider.mjs +0 -863
- package/fesm2022/legacy-slider.mjs.map +0 -1
- package/fesm2022/legacy-snack-bar/testing.mjs +0 -42
- package/fesm2022/legacy-snack-bar/testing.mjs.map +0 -1
- package/fesm2022/legacy-snack-bar.mjs +0 -128
- package/fesm2022/legacy-snack-bar.mjs.map +0 -1
- package/fesm2022/legacy-table/testing.mjs +0 -150
- package/fesm2022/legacy-table/testing.mjs.map +0 -1
- package/fesm2022/legacy-table.mjs +0 -538
- package/fesm2022/legacy-table.mjs.map +0 -1
- package/fesm2022/legacy-tabs/testing.mjs +0 -239
- package/fesm2022/legacy-tabs/testing.mjs.map +0 -1
- package/fesm2022/legacy-tabs.mjs +0 -549
- package/fesm2022/legacy-tabs.mjs.map +0 -1
- package/fesm2022/legacy-tooltip/testing.mjs +0 -31
- package/fesm2022/legacy-tooltip/testing.mjs.map +0 -1
- package/fesm2022/legacy-tooltip.mjs +0 -148
- package/fesm2022/legacy-tooltip.mjs.map +0 -1
- package/form-field/_form-field-theme.import.scss +0 -29
- package/form-field/_mdc-text-field-theme-variable-refresh.scss +0 -88
- package/grid-list/_grid-list-legacy-index.scss +0 -2
- package/grid-list/_grid-list-theme.import.scss +0 -10
- package/icon/_icon-legacy-index.scss +0 -2
- package/icon/_icon-theme.import.scss +0 -5
- package/input/_input-theme.import.scss +0 -1
- package/legacy-autocomplete/_autocomplete-legacy-index.scss +0 -2
- package/legacy-autocomplete/_autocomplete-theme.import.scss +0 -7
- package/legacy-autocomplete/_autocomplete-theme.scss +0 -57
- package/legacy-autocomplete/index.d.ts +0 -115
- package/legacy-autocomplete/testing/index.d.ts +0 -41
- package/legacy-button/_button-base.import.scss +0 -21
- package/legacy-button/_button-base.scss +0 -114
- package/legacy-button/_button-legacy-index.scss +0 -22
- package/legacy-button/_button-theme.import.scss +0 -11
- package/legacy-button/_button-theme.scss +0 -223
- package/legacy-button/index.d.ts +0 -87
- package/legacy-button/testing/index.d.ts +0 -49
- package/legacy-card/_card-legacy-index.scss +0 -2
- package/legacy-card/_card-theme.import.scss +0 -10
- package/legacy-card/_card-theme.scss +0 -78
- package/legacy-card/index.d.ts +0 -201
- package/legacy-card/testing/index.d.ts +0 -56
- package/legacy-checkbox/_checkbox-legacy-index.scss +0 -2
- package/legacy-checkbox/_checkbox-theme.import.scss +0 -7
- package/legacy-checkbox/_checkbox-theme.scss +0 -138
- package/legacy-checkbox/index.d.ts +0 -116
- package/legacy-checkbox/testing/index.d.ts +0 -30
- package/legacy-chips/_chips-legacy-index.scss +0 -7
- package/legacy-chips/_chips-theme.import.scss +0 -14
- package/legacy-chips/_chips-theme.scss +0 -133
- package/legacy-chips/index.d.ts +0 -705
- package/legacy-chips/testing/index.d.ts +0 -316
- package/legacy-core/_core-theme.scss +0 -65
- package/legacy-core/_core.import.scss +0 -5
- package/legacy-core/_core.scss +0 -18
- package/legacy-core/color/_all-color.import.scss +0 -4
- package/legacy-core/color/_all-color.scss +0 -28
- package/legacy-core/density/private/_all-density.import.scss +0 -3
- package/legacy-core/density/private/_all-density.scss +0 -46
- package/legacy-core/density/private/_compatibility.import.scss +0 -4
- package/legacy-core/density/private/_compatibility.scss +0 -74
- package/legacy-core/index.d.ts +0 -218
- package/legacy-core/option/_optgroup-theme.import.scss +0 -27
- package/legacy-core/option/_optgroup-theme.scss +0 -52
- package/legacy-core/option/_option-legacy-index.scss +0 -5
- package/legacy-core/option/_option-theme.import.scss +0 -27
- package/legacy-core/option/_option-theme.scss +0 -86
- package/legacy-core/testing/index.d.ts +0 -80
- package/legacy-core/theming/_all-theme.import.scss +0 -3
- package/legacy-core/theming/_all-theme.scss +0 -89
- package/legacy-core/typography/_all-typography.import.scss +0 -4
- package/legacy-core/typography/_all-typography.scss +0 -105
- package/legacy-dialog/_dialog-legacy-index.scss +0 -2
- package/legacy-dialog/_dialog-theme.import.scss +0 -10
- package/legacy-dialog/_dialog-theme.scss +0 -53
- package/legacy-dialog/index.d.ts +0 -271
- package/legacy-dialog/testing/index.d.ts +0 -63
- package/legacy-form-field/_form-field-fill-theme.import.scss +0 -13
- package/legacy-form-field/_form-field-fill-theme.scss +0 -136
- package/legacy-form-field/_form-field-legacy-index.scss +0 -29
- package/legacy-form-field/_form-field-legacy-theme.import.scss +0 -14
- package/legacy-form-field/_form-field-legacy-theme.scss +0 -204
- package/legacy-form-field/_form-field-outline-theme.import.scss +0 -13
- package/legacy-form-field/_form-field-outline-theme.scss +0 -167
- package/legacy-form-field/_form-field-standard-theme.import.scss +0 -11
- package/legacy-form-field/_form-field-standard-theme.scss +0 -55
- package/legacy-form-field/_form-field-theme.import.scss +0 -29
- package/legacy-form-field/_form-field-theme.scss +0 -278
- package/legacy-form-field/index.d.ts +0 -370
- package/legacy-form-field/testing/index.d.ts +0 -76
- package/legacy-input/_input-legacy-index.scss +0 -2
- package/legacy-input/_input-theme.import.scss +0 -11
- package/legacy-input/_input-theme.scss +0 -115
- package/legacy-input/index.d.ts +0 -41
- package/legacy-input/testing/index.d.ts +0 -20
- package/legacy-list/_list-legacy-index.scss +0 -2
- package/legacy-list/_list-theme.import.scss +0 -10
- package/legacy-list/_list-theme.scss +0 -124
- package/legacy-list/index.d.ts +0 -396
- package/legacy-list/testing/index.d.ts +0 -419
- package/legacy-menu/_menu-legacy-index.scss +0 -2
- package/legacy-menu/_menu-theme.import.scss +0 -10
- package/legacy-menu/_menu-theme.scss +0 -84
- package/legacy-menu/index.d.ts +0 -127
- package/legacy-menu/testing/index.d.ts +0 -47
- package/legacy-paginator/_paginator-legacy-index.scss +0 -2
- package/legacy-paginator/_paginator-theme.import.scss +0 -11
- package/legacy-paginator/_paginator-theme.scss +0 -92
- package/legacy-paginator/_paginator-variables.import.scss +0 -1
- package/legacy-paginator/_paginator-variables.scss +0 -13
- package/legacy-paginator/index.d.ts +0 -87
- package/legacy-paginator/testing/index.d.ts +0 -36
- package/legacy-prebuilt-themes/legacy-deeppurple-amber.css +0 -1
- package/legacy-prebuilt-themes/legacy-indigo-pink.css +0 -1
- package/legacy-prebuilt-themes/legacy-pink-bluegrey.css +0 -1
- package/legacy-prebuilt-themes/legacy-purple-green.css +0 -1
- package/legacy-progress-bar/_progress-bar-legacy-index.scss +0 -2
- package/legacy-progress-bar/_progress-bar-theme.import.scss +0 -6
- package/legacy-progress-bar/_progress-bar-theme.scss +0 -93
- package/legacy-progress-bar/index.d.ts +0 -131
- package/legacy-progress-bar/testing/index.d.ts +0 -28
- package/legacy-progress-spinner/_progress-spinner-legacy-index.scss +0 -3
- package/legacy-progress-spinner/_progress-spinner-theme.import.scss +0 -7
- package/legacy-progress-spinner/_progress-spinner-theme.scss +0 -52
- package/legacy-progress-spinner/index.d.ts +0 -129
- package/legacy-progress-spinner/testing/index.d.ts +0 -29
- package/legacy-radio/_radio-legacy-index.scss +0 -2
- package/legacy-radio/_radio-theme.import.scss +0 -8
- package/legacy-radio/_radio-theme.scss +0 -104
- package/legacy-radio/index.d.ts +0 -75
- package/legacy-radio/testing/index.d.ts +0 -50
- package/legacy-select/_select-legacy-index.scss +0 -2
- package/legacy-select/_select-theme.import.scss +0 -11
- package/legacy-select/_select-theme.scss +0 -107
- package/legacy-select/index.d.ts +0 -230
- package/legacy-select/testing/index.d.ts +0 -38
- package/legacy-slide-toggle/_slide-toggle-legacy-index.scss +0 -3
- package/legacy-slide-toggle/_slide-toggle-theme.import.scss +0 -11
- package/legacy-slide-toggle/_slide-toggle-theme.scss +0 -111
- package/legacy-slide-toggle/index.d.ts +0 -113
- package/legacy-slide-toggle/testing/index.d.ts +0 -34
- package/legacy-slider/_slider-legacy-index.scss +0 -3
- package/legacy-slider/_slider-theme.import.scss +0 -8
- package/legacy-slider/_slider-theme.scss +0 -210
- package/legacy-slider/index.d.ts +0 -303
- package/legacy-slider/testing/index.d.ts +0 -68
- package/legacy-snack-bar/_snack-bar-legacy-index.scss +0 -2
- package/legacy-snack-bar/_snack-bar-theme.import.scss +0 -11
- package/legacy-snack-bar/_snack-bar-theme.scss +0 -72
- package/legacy-snack-bar/index.d.ts +0 -118
- package/legacy-snack-bar/testing/index.d.ts +0 -28
- package/legacy-table/_table-legacy-index.scss +0 -3
- package/legacy-table/_table-theme.import.scss +0 -8
- package/legacy-table/_table-theme.scss +0 -78
- package/legacy-table/index.d.ts +0 -298
- package/legacy-table/testing/index.d.ts +0 -149
- package/legacy-tabs/_tabs-common.import.scss +0 -11
- package/legacy-tabs/_tabs-common.scss +0 -173
- package/legacy-tabs/_tabs-legacy-index.scss +0 -6
- package/legacy-tabs/_tabs-theme.import.scss +0 -9
- package/legacy-tabs/_tabs-theme.scss +0 -188
- package/legacy-tabs/index.d.ts +0 -338
- package/legacy-tabs/testing/index.d.ts +0 -195
- package/legacy-tooltip/_tooltip-legacy-index.scss +0 -3
- package/legacy-tooltip/_tooltip-theme.import.scss +0 -9
- package/legacy-tooltip/_tooltip-theme.scss +0 -67
- package/legacy-tooltip/index.d.ts +0 -117
- package/legacy-tooltip/testing/index.d.ts +0 -30
- package/list/_list-theme.import.scss +0 -1
- package/menu/_menu-theme.import.scss +0 -2
- package/paginator/_paginator-theme.import.scss +0 -6
- package/paginator/_paginator-variables.import.scss +0 -1
- package/progress-bar/_progress-bar-theme.import.scss +0 -3
- package/progress-spinner/_progress-spinner-theme.import.scss +0 -3
- package/radio/_radio-theme.import.scss +0 -4
- package/select/_select-theme.import.scss +0 -7
- package/sidenav/_sidenav-legacy-index.scss +0 -2
- package/sidenav/_sidenav-theme.import.scss +0 -8
- package/slide-toggle/_slide-toggle-theme.import.scss +0 -7
- package/slider/_slider-theme.import.scss +0 -2
- package/snack-bar/_snack-bar-theme.import.scss +0 -5
- package/sort/_sort-legacy-index.scss +0 -2
- package/sort/_sort-theme.import.scss +0 -5
- package/stepper/_stepper-legacy-index.scss +0 -7
- package/stepper/_stepper-theme.import.scss +0 -16
- package/stepper/_stepper-variables.import.scss +0 -6
- package/table/_table-flex-styles.import.scss +0 -1
- package/table/_table-theme.import.scss +0 -8
- package/tabs/_tabs-common.import.scss +0 -11
- package/tabs/_tabs-theme.import.scss +0 -5
- package/toolbar/_toolbar-legacy-index.scss +0 -4
- package/toolbar/_toolbar-theme.import.scss +0 -14
- package/toolbar/_toolbar-variables.import.scss +0 -1
- package/tooltip/_tooltip-theme.import.scss +0 -2
- package/tree/_tree-legacy-index.scss +0 -2
- package/tree/_tree-theme.import.scss +0 -9
- package/tree/_tree-variables.import.scss +0 -1
|
@@ -1,619 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright Google LLC All Rights Reserved.
|
|
4
|
-
*
|
|
5
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
-
* found in the LICENSE file at https://angular.io/license
|
|
7
|
-
*/
|
|
8
|
-
import { FocusKeyManager, FocusMonitor } from '@angular/cdk/a11y';
|
|
9
|
-
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
10
|
-
import { SelectionModel } from '@angular/cdk/collections';
|
|
11
|
-
import { A, DOWN_ARROW, ENTER, hasModifierKey, SPACE, UP_ARROW } from '@angular/cdk/keycodes';
|
|
12
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ContentChildren, ElementRef, EventEmitter, forwardRef, Inject, Input, Output, QueryList, ViewChild, ViewEncapsulation, } from '@angular/core';
|
|
13
|
-
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
14
|
-
import { MatLine, mixinDisableRipple, setLines, } from '@angular/material/core';
|
|
15
|
-
import { Subject } from 'rxjs';
|
|
16
|
-
import { startWith, takeUntil } from 'rxjs/operators';
|
|
17
|
-
import { MatLegacyListAvatarCssMatStyler, MatLegacyListIconCssMatStyler } from './list';
|
|
18
|
-
import * as i0 from "@angular/core";
|
|
19
|
-
import * as i1 from "@angular/material/core";
|
|
20
|
-
import * as i2 from "@angular/common";
|
|
21
|
-
import * as i3 from "@angular/cdk/a11y";
|
|
22
|
-
const _MatSelectionListBase = mixinDisableRipple(class {
|
|
23
|
-
});
|
|
24
|
-
const _MatListOptionBase = mixinDisableRipple(class {
|
|
25
|
-
});
|
|
26
|
-
/**
|
|
27
|
-
* @docs-private
|
|
28
|
-
* @deprecated Use `MAT_SELECTION_LIST_VALUE_ACCESSOR` from `@angular/material/list` instead. See https://material.angular.io/guide/mdc-migration for information about migrating.
|
|
29
|
-
* @breaking-change 17.0.0
|
|
30
|
-
*/
|
|
31
|
-
export const MAT_LEGACY_SELECTION_LIST_VALUE_ACCESSOR = {
|
|
32
|
-
provide: NG_VALUE_ACCESSOR,
|
|
33
|
-
useExisting: forwardRef(() => MatLegacySelectionList),
|
|
34
|
-
multi: true,
|
|
35
|
-
};
|
|
36
|
-
/**
|
|
37
|
-
* Change event that is being fired whenever the selected state of an option changes.
|
|
38
|
-
* @deprecated Use `MatSelectionListChange` from `@angular/material/list` instead. See https://material.angular.io/guide/mdc-migration for information about migrating.
|
|
39
|
-
* @breaking-change 17.0.0
|
|
40
|
-
*/
|
|
41
|
-
export class MatLegacySelectionListChange {
|
|
42
|
-
constructor(
|
|
43
|
-
/** Reference to the selection list that emitted the event. */
|
|
44
|
-
source,
|
|
45
|
-
/** Reference to the options that have been changed. */
|
|
46
|
-
options) {
|
|
47
|
-
this.source = source;
|
|
48
|
-
this.options = options;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Component for list-options of selection-list. Each list-option can automatically
|
|
53
|
-
* generate a checkbox and can put current item into the selectionModel of selection-list
|
|
54
|
-
* if the current item is selected.
|
|
55
|
-
* @deprecated Use `MatListOption` from `@angular/material/list` instead. See https://material.angular.io/guide/mdc-migration for information about migrating.
|
|
56
|
-
* @breaking-change 17.0.0
|
|
57
|
-
*/
|
|
58
|
-
export class MatLegacyListOption extends _MatListOptionBase {
|
|
59
|
-
/** Theme color of the list option. This sets the color of the checkbox. */
|
|
60
|
-
get color() {
|
|
61
|
-
return this._color || this.selectionList.color;
|
|
62
|
-
}
|
|
63
|
-
set color(newValue) {
|
|
64
|
-
this._color = newValue;
|
|
65
|
-
}
|
|
66
|
-
/** Value of the option */
|
|
67
|
-
get value() {
|
|
68
|
-
return this._value;
|
|
69
|
-
}
|
|
70
|
-
set value(newValue) {
|
|
71
|
-
if (this.selected &&
|
|
72
|
-
!this.selectionList.compareWith(newValue, this.value) &&
|
|
73
|
-
this._inputsInitialized) {
|
|
74
|
-
this.selected = false;
|
|
75
|
-
}
|
|
76
|
-
this._value = newValue;
|
|
77
|
-
}
|
|
78
|
-
/** Whether the option is disabled. */
|
|
79
|
-
get disabled() {
|
|
80
|
-
return this._disabled || (this.selectionList && this.selectionList.disabled);
|
|
81
|
-
}
|
|
82
|
-
set disabled(value) {
|
|
83
|
-
const newValue = coerceBooleanProperty(value);
|
|
84
|
-
if (newValue !== this._disabled) {
|
|
85
|
-
this._disabled = newValue;
|
|
86
|
-
this._changeDetector.markForCheck();
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
/** Whether the option is selected. */
|
|
90
|
-
get selected() {
|
|
91
|
-
return this.selectionList.selectedOptions.isSelected(this);
|
|
92
|
-
}
|
|
93
|
-
set selected(value) {
|
|
94
|
-
const isSelected = coerceBooleanProperty(value);
|
|
95
|
-
if (isSelected !== this._selected) {
|
|
96
|
-
this._setSelected(isSelected);
|
|
97
|
-
if (isSelected || this.selectionList.multiple) {
|
|
98
|
-
this.selectionList._reportValueChange();
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
constructor(_element, _changeDetector,
|
|
103
|
-
/** @docs-private */
|
|
104
|
-
selectionList) {
|
|
105
|
-
super();
|
|
106
|
-
this._element = _element;
|
|
107
|
-
this._changeDetector = _changeDetector;
|
|
108
|
-
this.selectionList = selectionList;
|
|
109
|
-
this._selected = false;
|
|
110
|
-
this._disabled = false;
|
|
111
|
-
this._hasFocus = false;
|
|
112
|
-
/**
|
|
113
|
-
* Emits when the selected state of the option has changed.
|
|
114
|
-
* Use to facilitate two-data binding to the `selected` property.
|
|
115
|
-
* @docs-private
|
|
116
|
-
*/
|
|
117
|
-
this.selectedChange = new EventEmitter();
|
|
118
|
-
/** Whether the label should appear before or after the checkbox. Defaults to 'after' */
|
|
119
|
-
this.checkboxPosition = 'after';
|
|
120
|
-
/**
|
|
121
|
-
* This is set to true after the first OnChanges cycle so we don't clear the value of `selected`
|
|
122
|
-
* in the first cycle.
|
|
123
|
-
*/
|
|
124
|
-
this._inputsInitialized = false;
|
|
125
|
-
}
|
|
126
|
-
ngOnInit() {
|
|
127
|
-
const list = this.selectionList;
|
|
128
|
-
if (list._value && list._value.some(value => list.compareWith(this._value, value))) {
|
|
129
|
-
this._setSelected(true);
|
|
130
|
-
}
|
|
131
|
-
const wasSelected = this._selected;
|
|
132
|
-
// List options that are selected at initialization can't be reported properly to the form
|
|
133
|
-
// control. This is because it takes some time until the selection-list knows about all
|
|
134
|
-
// available options. Also it can happen that the ControlValueAccessor has an initial value
|
|
135
|
-
// that should be used instead. Deferring the value change report to the next tick ensures
|
|
136
|
-
// that the form control value is not being overwritten.
|
|
137
|
-
Promise.resolve().then(() => {
|
|
138
|
-
if (this._selected || wasSelected) {
|
|
139
|
-
this.selected = true;
|
|
140
|
-
this._changeDetector.markForCheck();
|
|
141
|
-
}
|
|
142
|
-
});
|
|
143
|
-
this._inputsInitialized = true;
|
|
144
|
-
}
|
|
145
|
-
ngAfterContentInit() {
|
|
146
|
-
setLines(this._lines, this._element);
|
|
147
|
-
}
|
|
148
|
-
ngOnDestroy() {
|
|
149
|
-
if (this.selected) {
|
|
150
|
-
// We have to delay this until the next tick in order
|
|
151
|
-
// to avoid changed after checked errors.
|
|
152
|
-
Promise.resolve().then(() => {
|
|
153
|
-
this.selected = false;
|
|
154
|
-
});
|
|
155
|
-
}
|
|
156
|
-
const hadFocus = this._hasFocus;
|
|
157
|
-
const newActiveItem = this.selectionList._removeOptionFromList(this);
|
|
158
|
-
// Only move focus if this option was focused at the time it was destroyed.
|
|
159
|
-
if (hadFocus && newActiveItem) {
|
|
160
|
-
newActiveItem.focus();
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
/** Toggles the selection state of the option. */
|
|
164
|
-
toggle() {
|
|
165
|
-
this.selected = !this.selected;
|
|
166
|
-
}
|
|
167
|
-
/** Allows for programmatic focusing of the option. */
|
|
168
|
-
focus() {
|
|
169
|
-
this._element.nativeElement.focus();
|
|
170
|
-
}
|
|
171
|
-
/**
|
|
172
|
-
* Returns the list item's text label. Implemented as a part of the FocusKeyManager.
|
|
173
|
-
* @docs-private
|
|
174
|
-
*/
|
|
175
|
-
getLabel() {
|
|
176
|
-
return this._text ? this._text.nativeElement.textContent || '' : '';
|
|
177
|
-
}
|
|
178
|
-
/** Whether this list item should show a ripple effect when clicked. */
|
|
179
|
-
_isRippleDisabled() {
|
|
180
|
-
return this.disabled || this.disableRipple || this.selectionList.disableRipple;
|
|
181
|
-
}
|
|
182
|
-
_handleClick() {
|
|
183
|
-
if (!this.disabled && (this.selectionList.multiple || !this.selected)) {
|
|
184
|
-
this.toggle();
|
|
185
|
-
// Emit a change event if the selected state of the option changed through user interaction.
|
|
186
|
-
this.selectionList._emitChangeEvent([this]);
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
_handleFocus() {
|
|
190
|
-
this.selectionList._setFocusedOption(this);
|
|
191
|
-
this._hasFocus = true;
|
|
192
|
-
}
|
|
193
|
-
_handleBlur() {
|
|
194
|
-
this.selectionList._onTouched();
|
|
195
|
-
this._hasFocus = false;
|
|
196
|
-
}
|
|
197
|
-
/** Retrieves the DOM element of the component host. */
|
|
198
|
-
_getHostElement() {
|
|
199
|
-
return this._element.nativeElement;
|
|
200
|
-
}
|
|
201
|
-
/** Sets the selected state of the option. Returns whether the value has changed. */
|
|
202
|
-
_setSelected(selected) {
|
|
203
|
-
if (selected === this._selected) {
|
|
204
|
-
return false;
|
|
205
|
-
}
|
|
206
|
-
this._selected = selected;
|
|
207
|
-
if (selected) {
|
|
208
|
-
this.selectionList.selectedOptions.select(this);
|
|
209
|
-
}
|
|
210
|
-
else {
|
|
211
|
-
this.selectionList.selectedOptions.deselect(this);
|
|
212
|
-
}
|
|
213
|
-
this.selectedChange.emit(selected);
|
|
214
|
-
this._changeDetector.markForCheck();
|
|
215
|
-
return true;
|
|
216
|
-
}
|
|
217
|
-
/**
|
|
218
|
-
* Notifies Angular that the option needs to be checked in the next change detection run. Mainly
|
|
219
|
-
* used to trigger an update of the list option if the disabled state of the selection list
|
|
220
|
-
* changed.
|
|
221
|
-
*/
|
|
222
|
-
_markForCheck() {
|
|
223
|
-
this._changeDetector.markForCheck();
|
|
224
|
-
}
|
|
225
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: MatLegacyListOption, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: forwardRef(() => MatLegacySelectionList) }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
226
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.1", type: MatLegacyListOption, selector: "mat-list-option", inputs: { disableRipple: "disableRipple", checkboxPosition: "checkboxPosition", color: "color", value: "value", disabled: "disabled", selected: "selected" }, outputs: { selectedChange: "selectedChange" }, host: { attributes: { "role": "option" }, listeners: { "focus": "_handleFocus()", "blur": "_handleBlur()", "click": "_handleClick()" }, properties: { "class.mat-list-item-disabled": "disabled", "class.mat-list-item-with-avatar": "_avatar || _icon", "class.mat-primary": "color === \"primary\"", "class.mat-accent": "color !== \"primary\" && color !== \"warn\"", "class.mat-warn": "color === \"warn\"", "class.mat-list-single-selected-option": "selected && !selectionList.multiple", "attr.aria-selected": "selected", "attr.aria-disabled": "disabled", "attr.tabindex": "-1" }, classAttribute: "mat-list-item mat-list-option mat-focus-indicator" }, queries: [{ propertyName: "_avatar", first: true, predicate: MatLegacyListAvatarCssMatStyler, descendants: true }, { propertyName: "_icon", first: true, predicate: MatLegacyListIconCssMatStyler, descendants: true }, { propertyName: "_lines", predicate: MatLine, descendants: true }], viewQueries: [{ propertyName: "_text", first: true, predicate: ["text"], descendants: true }], exportAs: ["matListOption"], usesInheritance: true, ngImport: i0, template: "<div class=\"mat-list-item-content\"\n [class.mat-list-item-content-reverse]=\"checkboxPosition == 'after'\">\n\n <div mat-ripple\n class=\"mat-list-item-ripple\"\n [matRippleTrigger]=\"_getHostElement()\"\n [matRippleDisabled]=\"_isRippleDisabled()\"></div>\n\n <mat-pseudo-checkbox\n *ngIf=\"selectionList.multiple\"\n [state]=\"selected ? 'checked' : 'unchecked'\"\n [disabled]=\"disabled\"></mat-pseudo-checkbox>\n\n <div class=\"mat-list-text\" #text><ng-content></ng-content></div>\n\n <ng-content select=\"[mat-list-avatar], [mat-list-icon], [matListAvatar], [matListIcon]\">\n </ng-content>\n\n</div>\n", dependencies: [{ kind: "directive", type: i1.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "component", type: i1.MatPseudoCheckbox, selector: "mat-pseudo-checkbox", inputs: ["state", "disabled", "appearance"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
227
|
-
}
|
|
228
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: MatLegacyListOption, decorators: [{
|
|
229
|
-
type: Component,
|
|
230
|
-
args: [{ selector: 'mat-list-option', exportAs: 'matListOption', inputs: ['disableRipple'], host: {
|
|
231
|
-
'role': 'option',
|
|
232
|
-
'class': 'mat-list-item mat-list-option mat-focus-indicator',
|
|
233
|
-
'(focus)': '_handleFocus()',
|
|
234
|
-
'(blur)': '_handleBlur()',
|
|
235
|
-
'(click)': '_handleClick()',
|
|
236
|
-
'[class.mat-list-item-disabled]': 'disabled',
|
|
237
|
-
'[class.mat-list-item-with-avatar]': '_avatar || _icon',
|
|
238
|
-
// Manually set the "primary" or "warn" class if the color has been explicitly
|
|
239
|
-
// set to "primary" or "warn". The pseudo checkbox picks up these classes for
|
|
240
|
-
// its theme.
|
|
241
|
-
'[class.mat-primary]': 'color === "primary"',
|
|
242
|
-
// Even though accent is the default, we need to set this class anyway, because the list might
|
|
243
|
-
// be placed inside a parent that has one of the other colors with a higher specificity.
|
|
244
|
-
'[class.mat-accent]': 'color !== "primary" && color !== "warn"',
|
|
245
|
-
'[class.mat-warn]': 'color === "warn"',
|
|
246
|
-
'[class.mat-list-single-selected-option]': 'selected && !selectionList.multiple',
|
|
247
|
-
'[attr.aria-selected]': 'selected',
|
|
248
|
-
'[attr.aria-disabled]': 'disabled',
|
|
249
|
-
'[attr.tabindex]': '-1',
|
|
250
|
-
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"mat-list-item-content\"\n [class.mat-list-item-content-reverse]=\"checkboxPosition == 'after'\">\n\n <div mat-ripple\n class=\"mat-list-item-ripple\"\n [matRippleTrigger]=\"_getHostElement()\"\n [matRippleDisabled]=\"_isRippleDisabled()\"></div>\n\n <mat-pseudo-checkbox\n *ngIf=\"selectionList.multiple\"\n [state]=\"selected ? 'checked' : 'unchecked'\"\n [disabled]=\"disabled\"></mat-pseudo-checkbox>\n\n <div class=\"mat-list-text\" #text><ng-content></ng-content></div>\n\n <ng-content select=\"[mat-list-avatar], [mat-list-icon], [matListAvatar], [matListIcon]\">\n </ng-content>\n\n</div>\n" }]
|
|
251
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: MatLegacySelectionList, decorators: [{
|
|
252
|
-
type: Inject,
|
|
253
|
-
args: [forwardRef(() => MatLegacySelectionList)]
|
|
254
|
-
}] }]; }, propDecorators: { _avatar: [{
|
|
255
|
-
type: ContentChild,
|
|
256
|
-
args: [MatLegacyListAvatarCssMatStyler]
|
|
257
|
-
}], _icon: [{
|
|
258
|
-
type: ContentChild,
|
|
259
|
-
args: [MatLegacyListIconCssMatStyler]
|
|
260
|
-
}], _lines: [{
|
|
261
|
-
type: ContentChildren,
|
|
262
|
-
args: [MatLine, { descendants: true }]
|
|
263
|
-
}], selectedChange: [{
|
|
264
|
-
type: Output
|
|
265
|
-
}], _text: [{
|
|
266
|
-
type: ViewChild,
|
|
267
|
-
args: ['text']
|
|
268
|
-
}], checkboxPosition: [{
|
|
269
|
-
type: Input
|
|
270
|
-
}], color: [{
|
|
271
|
-
type: Input
|
|
272
|
-
}], value: [{
|
|
273
|
-
type: Input
|
|
274
|
-
}], disabled: [{
|
|
275
|
-
type: Input
|
|
276
|
-
}], selected: [{
|
|
277
|
-
type: Input
|
|
278
|
-
}] } });
|
|
279
|
-
/**
|
|
280
|
-
* Material Design list component where each item is a selectable option. Behaves as a listbox.
|
|
281
|
-
* @deprecated Use `MatSelectionList` from `@angular/material/list` instead. See https://material.angular.io/guide/mdc-migration for information about migrating.
|
|
282
|
-
* @breaking-change 17.0.0
|
|
283
|
-
*/
|
|
284
|
-
export class MatLegacySelectionList extends _MatSelectionListBase {
|
|
285
|
-
/** Whether the selection list is disabled. */
|
|
286
|
-
get disabled() {
|
|
287
|
-
return this._disabled;
|
|
288
|
-
}
|
|
289
|
-
set disabled(value) {
|
|
290
|
-
this._disabled = coerceBooleanProperty(value);
|
|
291
|
-
// The `MatSelectionList` and `MatListOption` are using the `OnPush` change detection
|
|
292
|
-
// strategy. Therefore the options will not check for any changes if the `MatSelectionList`
|
|
293
|
-
// changed its state. Since we know that a change to `disabled` property of the list affects
|
|
294
|
-
// the state of the options, we manually mark each option for check.
|
|
295
|
-
this._markOptionsForCheck();
|
|
296
|
-
}
|
|
297
|
-
/** Whether selection is limited to one or multiple items (default multiple). */
|
|
298
|
-
get multiple() {
|
|
299
|
-
return this._multiple;
|
|
300
|
-
}
|
|
301
|
-
set multiple(value) {
|
|
302
|
-
const newValue = coerceBooleanProperty(value);
|
|
303
|
-
if (newValue !== this._multiple) {
|
|
304
|
-
if (this._contentInitialized && (typeof ngDevMode === 'undefined' || ngDevMode)) {
|
|
305
|
-
throw new Error('Cannot change `multiple` mode of mat-selection-list after initialization.');
|
|
306
|
-
}
|
|
307
|
-
this._multiple = newValue;
|
|
308
|
-
this.selectedOptions = new SelectionModel(this._multiple, this.selectedOptions.selected);
|
|
309
|
-
}
|
|
310
|
-
}
|
|
311
|
-
constructor(_element, _changeDetector, _focusMonitor) {
|
|
312
|
-
super();
|
|
313
|
-
this._element = _element;
|
|
314
|
-
this._changeDetector = _changeDetector;
|
|
315
|
-
this._focusMonitor = _focusMonitor;
|
|
316
|
-
this._multiple = true;
|
|
317
|
-
this._contentInitialized = false;
|
|
318
|
-
/** Emits a change event whenever the selected state of an option changes. */
|
|
319
|
-
this.selectionChange = new EventEmitter();
|
|
320
|
-
/** Theme color of the selection list. This sets the checkbox color for all list options. */
|
|
321
|
-
this.color = 'accent';
|
|
322
|
-
/**
|
|
323
|
-
* Function used for comparing an option against the selected value when determining which
|
|
324
|
-
* options should appear as selected. The first argument is the value of an options. The second
|
|
325
|
-
* one is a value from the selected value. A boolean must be returned.
|
|
326
|
-
*/
|
|
327
|
-
this.compareWith = (a1, a2) => a1 === a2;
|
|
328
|
-
this._disabled = false;
|
|
329
|
-
/** The currently selected options. */
|
|
330
|
-
this.selectedOptions = new SelectionModel(this._multiple);
|
|
331
|
-
/** The tabindex of the selection list. */
|
|
332
|
-
this._tabIndex = -1;
|
|
333
|
-
/** View to model callback that should be called whenever the selected options change. */
|
|
334
|
-
this._onChange = (_) => { };
|
|
335
|
-
/** Emits when the list has been destroyed. */
|
|
336
|
-
this._destroyed = new Subject();
|
|
337
|
-
/** View to model callback that should be called if the list or its options lost focus. */
|
|
338
|
-
this._onTouched = () => { };
|
|
339
|
-
}
|
|
340
|
-
ngAfterContentInit() {
|
|
341
|
-
this._contentInitialized = true;
|
|
342
|
-
this._keyManager = new FocusKeyManager(this.options)
|
|
343
|
-
.withWrap()
|
|
344
|
-
.withTypeAhead()
|
|
345
|
-
.withHomeAndEnd()
|
|
346
|
-
// Allow disabled items to be focusable. For accessibility reasons, there must be a way for
|
|
347
|
-
// screen reader users, that allows reading the different options of the list.
|
|
348
|
-
.skipPredicate(() => false)
|
|
349
|
-
.withAllowedModifierKeys(['shiftKey']);
|
|
350
|
-
if (this._value) {
|
|
351
|
-
this._setOptionsFromValues(this._value);
|
|
352
|
-
}
|
|
353
|
-
// If the user attempts to tab out of the selection list, allow focus to escape.
|
|
354
|
-
this._keyManager.tabOut.subscribe(() => this._allowFocusEscape());
|
|
355
|
-
// When the number of options change, update the tabindex of the selection list.
|
|
356
|
-
this.options.changes.pipe(startWith(null), takeUntil(this._destroyed)).subscribe(() => {
|
|
357
|
-
this._updateTabIndex();
|
|
358
|
-
});
|
|
359
|
-
// Sync external changes to the model back to the options.
|
|
360
|
-
this.selectedOptions.changed.pipe(takeUntil(this._destroyed)).subscribe(event => {
|
|
361
|
-
if (event.added) {
|
|
362
|
-
for (let item of event.added) {
|
|
363
|
-
item.selected = true;
|
|
364
|
-
}
|
|
365
|
-
}
|
|
366
|
-
if (event.removed) {
|
|
367
|
-
for (let item of event.removed) {
|
|
368
|
-
item.selected = false;
|
|
369
|
-
}
|
|
370
|
-
}
|
|
371
|
-
});
|
|
372
|
-
this._focusMonitor
|
|
373
|
-
.monitor(this._element)
|
|
374
|
-
.pipe(takeUntil(this._destroyed))
|
|
375
|
-
.subscribe(origin => {
|
|
376
|
-
if (origin === 'keyboard' || origin === 'program') {
|
|
377
|
-
let toFocus = 0;
|
|
378
|
-
for (let i = 0; i < this.options.length; i++) {
|
|
379
|
-
if (this.options.get(i)?.selected) {
|
|
380
|
-
toFocus = i;
|
|
381
|
-
break;
|
|
382
|
-
}
|
|
383
|
-
}
|
|
384
|
-
this._keyManager.setActiveItem(toFocus);
|
|
385
|
-
}
|
|
386
|
-
});
|
|
387
|
-
}
|
|
388
|
-
ngOnChanges(changes) {
|
|
389
|
-
const disableRippleChanges = changes['disableRipple'];
|
|
390
|
-
const colorChanges = changes['color'];
|
|
391
|
-
if ((disableRippleChanges && !disableRippleChanges.firstChange) ||
|
|
392
|
-
(colorChanges && !colorChanges.firstChange)) {
|
|
393
|
-
this._markOptionsForCheck();
|
|
394
|
-
}
|
|
395
|
-
}
|
|
396
|
-
ngOnDestroy() {
|
|
397
|
-
this._keyManager?.destroy();
|
|
398
|
-
this._focusMonitor.stopMonitoring(this._element);
|
|
399
|
-
this._destroyed.next();
|
|
400
|
-
this._destroyed.complete();
|
|
401
|
-
this._isDestroyed = true;
|
|
402
|
-
}
|
|
403
|
-
/** Focuses the selection list. */
|
|
404
|
-
focus(options) {
|
|
405
|
-
this._element.nativeElement.focus(options);
|
|
406
|
-
}
|
|
407
|
-
/** Selects all of the options. Returns the options that changed as a result. */
|
|
408
|
-
selectAll() {
|
|
409
|
-
return this._setAllOptionsSelected(true);
|
|
410
|
-
}
|
|
411
|
-
/** Deselects all of the options. Returns the options that changed as a result. */
|
|
412
|
-
deselectAll() {
|
|
413
|
-
return this._setAllOptionsSelected(false);
|
|
414
|
-
}
|
|
415
|
-
/** Sets the focused option of the selection-list. */
|
|
416
|
-
_setFocusedOption(option) {
|
|
417
|
-
this._keyManager.updateActiveItem(option);
|
|
418
|
-
}
|
|
419
|
-
/**
|
|
420
|
-
* Removes an option from the selection list and updates the active item.
|
|
421
|
-
* @returns Currently-active item.
|
|
422
|
-
*/
|
|
423
|
-
_removeOptionFromList(option) {
|
|
424
|
-
const optionIndex = this._getOptionIndex(option);
|
|
425
|
-
if (optionIndex > -1 && this._keyManager.activeItemIndex === optionIndex) {
|
|
426
|
-
// Check whether the option is the last item
|
|
427
|
-
if (optionIndex > 0) {
|
|
428
|
-
this._keyManager.updateActiveItem(optionIndex - 1);
|
|
429
|
-
}
|
|
430
|
-
else if (optionIndex === 0 && this.options.length > 1) {
|
|
431
|
-
this._keyManager.updateActiveItem(Math.min(optionIndex + 1, this.options.length - 1));
|
|
432
|
-
}
|
|
433
|
-
}
|
|
434
|
-
return this._keyManager.activeItem;
|
|
435
|
-
}
|
|
436
|
-
/** Passes relevant key presses to our key manager. */
|
|
437
|
-
_keydown(event) {
|
|
438
|
-
const keyCode = event.keyCode;
|
|
439
|
-
const manager = this._keyManager;
|
|
440
|
-
const previousFocusIndex = manager.activeItemIndex;
|
|
441
|
-
const hasModifier = hasModifierKey(event);
|
|
442
|
-
switch (keyCode) {
|
|
443
|
-
case SPACE:
|
|
444
|
-
case ENTER:
|
|
445
|
-
if (!hasModifier && !manager.isTyping()) {
|
|
446
|
-
this._toggleFocusedOption();
|
|
447
|
-
// Always prevent space from scrolling the page since the list has focus
|
|
448
|
-
event.preventDefault();
|
|
449
|
-
}
|
|
450
|
-
break;
|
|
451
|
-
default:
|
|
452
|
-
// The "A" key gets special treatment, because it's used for the "select all" functionality.
|
|
453
|
-
if (keyCode === A &&
|
|
454
|
-
this.multiple &&
|
|
455
|
-
hasModifierKey(event, 'ctrlKey') &&
|
|
456
|
-
!manager.isTyping()) {
|
|
457
|
-
const shouldSelect = this.options.some(option => !option.disabled && !option.selected);
|
|
458
|
-
this._setAllOptionsSelected(shouldSelect, true, true);
|
|
459
|
-
event.preventDefault();
|
|
460
|
-
}
|
|
461
|
-
else {
|
|
462
|
-
manager.onKeydown(event);
|
|
463
|
-
}
|
|
464
|
-
}
|
|
465
|
-
if (this.multiple &&
|
|
466
|
-
(keyCode === UP_ARROW || keyCode === DOWN_ARROW) &&
|
|
467
|
-
event.shiftKey &&
|
|
468
|
-
manager.activeItemIndex !== previousFocusIndex) {
|
|
469
|
-
this._toggleFocusedOption();
|
|
470
|
-
}
|
|
471
|
-
}
|
|
472
|
-
/** Reports a value change to the ControlValueAccessor */
|
|
473
|
-
_reportValueChange() {
|
|
474
|
-
// Stop reporting value changes after the list has been destroyed. This avoids
|
|
475
|
-
// cases where the list might wrongly reset its value once it is removed, but
|
|
476
|
-
// the form control is still live.
|
|
477
|
-
if (this.options && !this._isDestroyed) {
|
|
478
|
-
const value = this._getSelectedOptionValues();
|
|
479
|
-
this._onChange(value);
|
|
480
|
-
this._value = value;
|
|
481
|
-
}
|
|
482
|
-
}
|
|
483
|
-
/** Emits a change event if the selected state of an option changed. */
|
|
484
|
-
_emitChangeEvent(options) {
|
|
485
|
-
this.selectionChange.emit(new MatLegacySelectionListChange(this, options));
|
|
486
|
-
}
|
|
487
|
-
/** Implemented as part of ControlValueAccessor. */
|
|
488
|
-
writeValue(values) {
|
|
489
|
-
this._value = values;
|
|
490
|
-
if (this.options) {
|
|
491
|
-
this._setOptionsFromValues(values || []);
|
|
492
|
-
}
|
|
493
|
-
}
|
|
494
|
-
/** Implemented as a part of ControlValueAccessor. */
|
|
495
|
-
setDisabledState(isDisabled) {
|
|
496
|
-
this.disabled = isDisabled;
|
|
497
|
-
}
|
|
498
|
-
/** Implemented as part of ControlValueAccessor. */
|
|
499
|
-
registerOnChange(fn) {
|
|
500
|
-
this._onChange = fn;
|
|
501
|
-
}
|
|
502
|
-
/** Implemented as part of ControlValueAccessor. */
|
|
503
|
-
registerOnTouched(fn) {
|
|
504
|
-
this._onTouched = fn;
|
|
505
|
-
}
|
|
506
|
-
/** Sets the selected options based on the specified values. */
|
|
507
|
-
_setOptionsFromValues(values) {
|
|
508
|
-
this.options.forEach(option => option._setSelected(false));
|
|
509
|
-
values.forEach(value => {
|
|
510
|
-
const correspondingOption = this.options.find(option => {
|
|
511
|
-
// Skip options that are already in the model. This allows us to handle cases
|
|
512
|
-
// where the same primitive value is selected multiple times.
|
|
513
|
-
return option.selected ? false : this.compareWith(option.value, value);
|
|
514
|
-
});
|
|
515
|
-
if (correspondingOption) {
|
|
516
|
-
correspondingOption._setSelected(true);
|
|
517
|
-
}
|
|
518
|
-
});
|
|
519
|
-
}
|
|
520
|
-
/** Returns the values of the selected options. */
|
|
521
|
-
_getSelectedOptionValues() {
|
|
522
|
-
return this.options.filter(option => option.selected).map(option => option.value);
|
|
523
|
-
}
|
|
524
|
-
/** Toggles the state of the currently focused option if enabled. */
|
|
525
|
-
_toggleFocusedOption() {
|
|
526
|
-
let focusedIndex = this._keyManager.activeItemIndex;
|
|
527
|
-
if (focusedIndex != null && this._isValidIndex(focusedIndex)) {
|
|
528
|
-
let focusedOption = this.options.toArray()[focusedIndex];
|
|
529
|
-
if (focusedOption && !focusedOption.disabled && (this._multiple || !focusedOption.selected)) {
|
|
530
|
-
focusedOption.toggle();
|
|
531
|
-
// Emit a change event because the focused option changed its state through user
|
|
532
|
-
// interaction.
|
|
533
|
-
this._emitChangeEvent([focusedOption]);
|
|
534
|
-
}
|
|
535
|
-
}
|
|
536
|
-
}
|
|
537
|
-
/**
|
|
538
|
-
* Sets the selected state on all of the options
|
|
539
|
-
* and emits an event if anything changed.
|
|
540
|
-
*/
|
|
541
|
-
_setAllOptionsSelected(isSelected, skipDisabled, isUserInput) {
|
|
542
|
-
// Keep track of whether anything changed, because we only want to
|
|
543
|
-
// emit the changed event when something actually changed.
|
|
544
|
-
const changedOptions = [];
|
|
545
|
-
this.options.forEach(option => {
|
|
546
|
-
if ((!skipDisabled || !option.disabled) && option._setSelected(isSelected)) {
|
|
547
|
-
changedOptions.push(option);
|
|
548
|
-
}
|
|
549
|
-
});
|
|
550
|
-
if (changedOptions.length) {
|
|
551
|
-
this._reportValueChange();
|
|
552
|
-
if (isUserInput) {
|
|
553
|
-
this._emitChangeEvent(changedOptions);
|
|
554
|
-
}
|
|
555
|
-
}
|
|
556
|
-
return changedOptions;
|
|
557
|
-
}
|
|
558
|
-
/**
|
|
559
|
-
* Utility to ensure all indexes are valid.
|
|
560
|
-
* @param index The index to be checked.
|
|
561
|
-
* @returns True if the index is valid for our list of options.
|
|
562
|
-
*/
|
|
563
|
-
_isValidIndex(index) {
|
|
564
|
-
return index >= 0 && index < this.options.length;
|
|
565
|
-
}
|
|
566
|
-
/** Returns the index of the specified list option. */
|
|
567
|
-
_getOptionIndex(option) {
|
|
568
|
-
return this.options.toArray().indexOf(option);
|
|
569
|
-
}
|
|
570
|
-
/** Marks all the options to be checked in the next change detection run. */
|
|
571
|
-
_markOptionsForCheck() {
|
|
572
|
-
if (this.options) {
|
|
573
|
-
this.options.forEach(option => option._markForCheck());
|
|
574
|
-
}
|
|
575
|
-
}
|
|
576
|
-
/**
|
|
577
|
-
* Removes the tabindex from the selection list and resets it back afterwards, allowing the user
|
|
578
|
-
* to tab out of it. This prevents the list from capturing focus and redirecting it back within
|
|
579
|
-
* the list, creating a focus trap if it user tries to tab away.
|
|
580
|
-
*/
|
|
581
|
-
_allowFocusEscape() {
|
|
582
|
-
this._tabIndex = -1;
|
|
583
|
-
setTimeout(() => {
|
|
584
|
-
this._tabIndex = 0;
|
|
585
|
-
this._changeDetector.markForCheck();
|
|
586
|
-
});
|
|
587
|
-
}
|
|
588
|
-
/** Updates the tabindex based upon if the selection list is empty. */
|
|
589
|
-
_updateTabIndex() {
|
|
590
|
-
this._tabIndex = this.options.length === 0 ? -1 : 0;
|
|
591
|
-
}
|
|
592
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: MatLegacySelectionList, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i3.FocusMonitor }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
593
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.1", type: MatLegacySelectionList, selector: "mat-selection-list", inputs: { disableRipple: "disableRipple", color: "color", compareWith: "compareWith", disabled: "disabled", multiple: "multiple" }, outputs: { selectionChange: "selectionChange" }, host: { attributes: { "role": "listbox" }, listeners: { "keydown": "_keydown($event)" }, properties: { "attr.aria-multiselectable": "multiple", "attr.aria-disabled": "disabled.toString()", "attr.tabindex": "_tabIndex" }, classAttribute: "mat-selection-list mat-list-base" }, providers: [MAT_LEGACY_SELECTION_LIST_VALUE_ACCESSOR], queries: [{ propertyName: "options", predicate: MatLegacyListOption, descendants: true }], exportAs: ["matSelectionList"], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: [".mat-subheader{display:flex;box-sizing:border-box;padding:16px;align-items:center}.mat-list-base .mat-subheader{margin:0}button.mat-list-item,button.mat-list-option{padding:0;width:100%;background:none;color:inherit;border:none;outline:inherit;-webkit-tap-highlight-color:rgba(0,0,0,0);text-align:left}[dir=rtl] button.mat-list-item,[dir=rtl] button.mat-list-option{text-align:right}button.mat-list-item::-moz-focus-inner,button.mat-list-option::-moz-focus-inner{border:0}.mat-list-base{padding-top:8px;display:block;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-list-base .mat-subheader{height:48px;line-height:16px}.mat-list-base .mat-subheader:first-child{margin-top:-8px}.mat-list-base .mat-list-item,.mat-list-base .mat-list-option{display:block;height:48px;-webkit-tap-highlight-color:rgba(0,0,0,0);width:100%;padding:0}.mat-list-base .mat-list-item .mat-list-item-content,.mat-list-base .mat-list-option .mat-list-item-content{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;padding:0 16px;position:relative;height:inherit}.mat-list-base .mat-list-item .mat-list-item-content-reverse,.mat-list-base .mat-list-option .mat-list-item-content-reverse{display:flex;align-items:center;padding:0 16px;flex-direction:row-reverse;justify-content:space-around}.mat-list-base .mat-list-item .mat-list-item-ripple,.mat-list-base .mat-list-option .mat-list-item-ripple{display:block;top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-list-base .mat-list-item.mat-list-item-with-avatar,.mat-list-base .mat-list-option.mat-list-item-with-avatar{height:56px}.mat-list-base .mat-list-item.mat-2-line,.mat-list-base .mat-list-option.mat-2-line{height:72px}.mat-list-base .mat-list-item.mat-3-line,.mat-list-base .mat-list-option.mat-3-line{height:88px}.mat-list-base .mat-list-item.mat-multi-line,.mat-list-base .mat-list-option.mat-multi-line{height:auto}.mat-list-base .mat-list-item.mat-multi-line .mat-list-item-content,.mat-list-base .mat-list-option.mat-multi-line .mat-list-item-content{padding-top:16px;padding-bottom:16px}.mat-list-base .mat-list-item .mat-list-text,.mat-list-base .mat-list-option .mat-list-text{display:flex;flex-direction:column;flex:auto;box-sizing:border-box;overflow:hidden;padding:0}.mat-list-base .mat-list-item .mat-list-text>*,.mat-list-base .mat-list-option .mat-list-text>*{margin:0;padding:0;font-weight:normal;font-size:inherit}.mat-list-base .mat-list-item .mat-list-text:empty,.mat-list-base .mat-list-option .mat-list-text:empty{display:none}.mat-list-base .mat-list-item.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,.mat-list-base .mat-list-item.mat-list-option .mat-list-item-content .mat-list-text,.mat-list-base .mat-list-option.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,.mat-list-base .mat-list-option.mat-list-option .mat-list-item-content .mat-list-text{padding-right:0;padding-left:16px}[dir=rtl] .mat-list-base .mat-list-item.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,[dir=rtl] .mat-list-base .mat-list-item.mat-list-option .mat-list-item-content .mat-list-text,[dir=rtl] .mat-list-base .mat-list-option.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,[dir=rtl] .mat-list-base .mat-list-option.mat-list-option .mat-list-item-content .mat-list-text{padding-right:16px;padding-left:0}.mat-list-base .mat-list-item.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,.mat-list-base .mat-list-item.mat-list-option .mat-list-item-content-reverse .mat-list-text,.mat-list-base .mat-list-option.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,.mat-list-base .mat-list-option.mat-list-option .mat-list-item-content-reverse .mat-list-text{padding-left:0;padding-right:16px}[dir=rtl] .mat-list-base .mat-list-item.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,[dir=rtl] .mat-list-base .mat-list-item.mat-list-option .mat-list-item-content-reverse .mat-list-text,[dir=rtl] .mat-list-base .mat-list-option.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,[dir=rtl] .mat-list-base .mat-list-option.mat-list-option .mat-list-item-content-reverse .mat-list-text{padding-right:0;padding-left:16px}.mat-list-base .mat-list-item.mat-list-item-with-avatar.mat-list-option .mat-list-item-content-reverse .mat-list-text,.mat-list-base .mat-list-item.mat-list-item-with-avatar.mat-list-option .mat-list-item-content .mat-list-text,.mat-list-base .mat-list-option.mat-list-item-with-avatar.mat-list-option .mat-list-item-content-reverse .mat-list-text,.mat-list-base .mat-list-option.mat-list-item-with-avatar.mat-list-option .mat-list-item-content .mat-list-text{padding-right:16px;padding-left:16px}.mat-list-base .mat-list-item .mat-list-avatar,.mat-list-base .mat-list-option .mat-list-avatar{flex-shrink:0;width:40px;height:40px;border-radius:50%;object-fit:cover}.mat-list-base .mat-list-item .mat-list-avatar~.mat-divider-inset,.mat-list-base .mat-list-option .mat-list-avatar~.mat-divider-inset{margin-left:72px;width:calc(100% - 72px)}[dir=rtl] .mat-list-base .mat-list-item .mat-list-avatar~.mat-divider-inset,[dir=rtl] .mat-list-base .mat-list-option .mat-list-avatar~.mat-divider-inset{margin-left:auto;margin-right:72px}.mat-list-base .mat-list-item .mat-list-icon,.mat-list-base .mat-list-option .mat-list-icon{flex-shrink:0;width:24px;height:24px;font-size:24px;box-sizing:content-box;border-radius:50%;padding:4px}.mat-list-base .mat-list-item .mat-list-icon~.mat-divider-inset,.mat-list-base .mat-list-option .mat-list-icon~.mat-divider-inset{margin-left:64px;width:calc(100% - 64px)}[dir=rtl] .mat-list-base .mat-list-item .mat-list-icon~.mat-divider-inset,[dir=rtl] .mat-list-base .mat-list-option .mat-list-icon~.mat-divider-inset{margin-left:auto;margin-right:64px}.mat-list-base .mat-list-item .mat-divider,.mat-list-base .mat-list-option .mat-divider{position:absolute;bottom:0;left:0;width:100%;margin:0}[dir=rtl] .mat-list-base .mat-list-item .mat-divider,[dir=rtl] .mat-list-base .mat-list-option .mat-divider{margin-left:auto;margin-right:0}.mat-list-base .mat-list-item .mat-divider.mat-divider-inset,.mat-list-base .mat-list-option .mat-divider.mat-divider-inset{position:absolute}.mat-list-base[dense]{padding-top:4px;display:block}.mat-list-base[dense] .mat-subheader{height:40px;line-height:8px}.mat-list-base[dense] .mat-subheader:first-child{margin-top:-4px}.mat-list-base[dense] .mat-list-item,.mat-list-base[dense] .mat-list-option{display:block;height:40px;-webkit-tap-highlight-color:rgba(0,0,0,0);width:100%;padding:0}.mat-list-base[dense] .mat-list-item .mat-list-item-content,.mat-list-base[dense] .mat-list-option .mat-list-item-content{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;padding:0 16px;position:relative;height:inherit}.mat-list-base[dense] .mat-list-item .mat-list-item-content-reverse,.mat-list-base[dense] .mat-list-option .mat-list-item-content-reverse{display:flex;align-items:center;padding:0 16px;flex-direction:row-reverse;justify-content:space-around}.mat-list-base[dense] .mat-list-item .mat-list-item-ripple,.mat-list-base[dense] .mat-list-option .mat-list-item-ripple{display:block;top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-list-base[dense] .mat-list-item.mat-list-item-with-avatar,.mat-list-base[dense] .mat-list-option.mat-list-item-with-avatar{height:48px}.mat-list-base[dense] .mat-list-item.mat-2-line,.mat-list-base[dense] .mat-list-option.mat-2-line{height:60px}.mat-list-base[dense] .mat-list-item.mat-3-line,.mat-list-base[dense] .mat-list-option.mat-3-line{height:76px}.mat-list-base[dense] .mat-list-item.mat-multi-line,.mat-list-base[dense] .mat-list-option.mat-multi-line{height:auto}.mat-list-base[dense] .mat-list-item.mat-multi-line .mat-list-item-content,.mat-list-base[dense] .mat-list-option.mat-multi-line .mat-list-item-content{padding-top:16px;padding-bottom:16px}.mat-list-base[dense] .mat-list-item .mat-list-text,.mat-list-base[dense] .mat-list-option .mat-list-text{display:flex;flex-direction:column;flex:auto;box-sizing:border-box;overflow:hidden;padding:0}.mat-list-base[dense] .mat-list-item .mat-list-text>*,.mat-list-base[dense] .mat-list-option .mat-list-text>*{margin:0;padding:0;font-weight:normal;font-size:inherit}.mat-list-base[dense] .mat-list-item .mat-list-text:empty,.mat-list-base[dense] .mat-list-option .mat-list-text:empty{display:none}.mat-list-base[dense] .mat-list-item.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,.mat-list-base[dense] .mat-list-item.mat-list-option .mat-list-item-content .mat-list-text,.mat-list-base[dense] .mat-list-option.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,.mat-list-base[dense] .mat-list-option.mat-list-option .mat-list-item-content .mat-list-text{padding-right:0;padding-left:16px}[dir=rtl] .mat-list-base[dense] .mat-list-item.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,[dir=rtl] .mat-list-base[dense] .mat-list-item.mat-list-option .mat-list-item-content .mat-list-text,[dir=rtl] .mat-list-base[dense] .mat-list-option.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,[dir=rtl] .mat-list-base[dense] .mat-list-option.mat-list-option .mat-list-item-content .mat-list-text{padding-right:16px;padding-left:0}.mat-list-base[dense] .mat-list-item.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,.mat-list-base[dense] .mat-list-item.mat-list-option .mat-list-item-content-reverse .mat-list-text,.mat-list-base[dense] .mat-list-option.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,.mat-list-base[dense] .mat-list-option.mat-list-option .mat-list-item-content-reverse .mat-list-text{padding-left:0;padding-right:16px}[dir=rtl] .mat-list-base[dense] .mat-list-item.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,[dir=rtl] .mat-list-base[dense] .mat-list-item.mat-list-option .mat-list-item-content-reverse .mat-list-text,[dir=rtl] .mat-list-base[dense] .mat-list-option.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,[dir=rtl] .mat-list-base[dense] .mat-list-option.mat-list-option .mat-list-item-content-reverse .mat-list-text{padding-right:0;padding-left:16px}.mat-list-base[dense] .mat-list-item.mat-list-item-with-avatar.mat-list-option .mat-list-item-content-reverse .mat-list-text,.mat-list-base[dense] .mat-list-item.mat-list-item-with-avatar.mat-list-option .mat-list-item-content .mat-list-text,.mat-list-base[dense] .mat-list-option.mat-list-item-with-avatar.mat-list-option .mat-list-item-content-reverse .mat-list-text,.mat-list-base[dense] .mat-list-option.mat-list-item-with-avatar.mat-list-option .mat-list-item-content .mat-list-text{padding-right:16px;padding-left:16px}.mat-list-base[dense] .mat-list-item .mat-list-avatar,.mat-list-base[dense] .mat-list-option .mat-list-avatar{flex-shrink:0;width:36px;height:36px;border-radius:50%;object-fit:cover}.mat-list-base[dense] .mat-list-item .mat-list-avatar~.mat-divider-inset,.mat-list-base[dense] .mat-list-option .mat-list-avatar~.mat-divider-inset{margin-left:68px;width:calc(100% - 68px)}[dir=rtl] .mat-list-base[dense] .mat-list-item .mat-list-avatar~.mat-divider-inset,[dir=rtl] .mat-list-base[dense] .mat-list-option .mat-list-avatar~.mat-divider-inset{margin-left:auto;margin-right:68px}.mat-list-base[dense] .mat-list-item .mat-list-icon,.mat-list-base[dense] .mat-list-option .mat-list-icon{flex-shrink:0;width:20px;height:20px;font-size:20px;box-sizing:content-box;border-radius:50%;padding:4px}.mat-list-base[dense] .mat-list-item .mat-list-icon~.mat-divider-inset,.mat-list-base[dense] .mat-list-option .mat-list-icon~.mat-divider-inset{margin-left:60px;width:calc(100% - 60px)}[dir=rtl] .mat-list-base[dense] .mat-list-item .mat-list-icon~.mat-divider-inset,[dir=rtl] .mat-list-base[dense] .mat-list-option .mat-list-icon~.mat-divider-inset{margin-left:auto;margin-right:60px}.mat-list-base[dense] .mat-list-item .mat-divider,.mat-list-base[dense] .mat-list-option .mat-divider{position:absolute;bottom:0;left:0;width:100%;margin:0}[dir=rtl] .mat-list-base[dense] .mat-list-item .mat-divider,[dir=rtl] .mat-list-base[dense] .mat-list-option .mat-divider{margin-left:auto;margin-right:0}.mat-list-base[dense] .mat-list-item .mat-divider.mat-divider-inset,.mat-list-base[dense] .mat-list-option .mat-divider.mat-divider-inset{position:absolute}.mat-nav-list a{text-decoration:none;color:inherit}.mat-nav-list .mat-list-item{cursor:pointer;outline:none}mat-action-list .mat-list-item{cursor:pointer;outline:inherit}.mat-list-option:not(.mat-list-item-disabled){cursor:pointer;outline:none}.mat-list-item-disabled{pointer-events:none}.cdk-high-contrast-active .mat-list-item-disabled{opacity:.5}.cdk-high-contrast-active :host .mat-list-item-disabled{opacity:.5}.cdk-high-contrast-active .mat-list-option:hover,.cdk-high-contrast-active .mat-nav-list .mat-list-item:hover,.cdk-high-contrast-active mat-action-list .mat-list-item:hover{outline:dotted 1px;z-index:1}.cdk-high-contrast-active .mat-list-single-selected-option::after{content:\"\";position:absolute;top:50%;right:16px;transform:translateY(-50%);width:10px;height:0;border-bottom:solid 10px;border-radius:10px}.cdk-high-contrast-active [dir=rtl] .mat-list-single-selected-option::after{right:auto;left:16px}@media(hover: none){.mat-list-option:not(.mat-list-single-selected-option):not(.mat-list-item-disabled):hover,.mat-nav-list .mat-list-item:not(.mat-list-item-disabled):hover,.mat-action-list .mat-list-item:not(.mat-list-item-disabled):hover{background:none}}"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
594
|
-
}
|
|
595
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: MatLegacySelectionList, decorators: [{
|
|
596
|
-
type: Component,
|
|
597
|
-
args: [{ selector: 'mat-selection-list', exportAs: 'matSelectionList', inputs: ['disableRipple'], host: {
|
|
598
|
-
'role': 'listbox',
|
|
599
|
-
'class': 'mat-selection-list mat-list-base',
|
|
600
|
-
'(keydown)': '_keydown($event)',
|
|
601
|
-
'[attr.aria-multiselectable]': 'multiple',
|
|
602
|
-
'[attr.aria-disabled]': 'disabled.toString()',
|
|
603
|
-
'[attr.tabindex]': '_tabIndex',
|
|
604
|
-
}, template: '<ng-content></ng-content>', encapsulation: ViewEncapsulation.None, providers: [MAT_LEGACY_SELECTION_LIST_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, styles: [".mat-subheader{display:flex;box-sizing:border-box;padding:16px;align-items:center}.mat-list-base .mat-subheader{margin:0}button.mat-list-item,button.mat-list-option{padding:0;width:100%;background:none;color:inherit;border:none;outline:inherit;-webkit-tap-highlight-color:rgba(0,0,0,0);text-align:left}[dir=rtl] button.mat-list-item,[dir=rtl] button.mat-list-option{text-align:right}button.mat-list-item::-moz-focus-inner,button.mat-list-option::-moz-focus-inner{border:0}.mat-list-base{padding-top:8px;display:block;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-list-base .mat-subheader{height:48px;line-height:16px}.mat-list-base .mat-subheader:first-child{margin-top:-8px}.mat-list-base .mat-list-item,.mat-list-base .mat-list-option{display:block;height:48px;-webkit-tap-highlight-color:rgba(0,0,0,0);width:100%;padding:0}.mat-list-base .mat-list-item .mat-list-item-content,.mat-list-base .mat-list-option .mat-list-item-content{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;padding:0 16px;position:relative;height:inherit}.mat-list-base .mat-list-item .mat-list-item-content-reverse,.mat-list-base .mat-list-option .mat-list-item-content-reverse{display:flex;align-items:center;padding:0 16px;flex-direction:row-reverse;justify-content:space-around}.mat-list-base .mat-list-item .mat-list-item-ripple,.mat-list-base .mat-list-option .mat-list-item-ripple{display:block;top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-list-base .mat-list-item.mat-list-item-with-avatar,.mat-list-base .mat-list-option.mat-list-item-with-avatar{height:56px}.mat-list-base .mat-list-item.mat-2-line,.mat-list-base .mat-list-option.mat-2-line{height:72px}.mat-list-base .mat-list-item.mat-3-line,.mat-list-base .mat-list-option.mat-3-line{height:88px}.mat-list-base .mat-list-item.mat-multi-line,.mat-list-base .mat-list-option.mat-multi-line{height:auto}.mat-list-base .mat-list-item.mat-multi-line .mat-list-item-content,.mat-list-base .mat-list-option.mat-multi-line .mat-list-item-content{padding-top:16px;padding-bottom:16px}.mat-list-base .mat-list-item .mat-list-text,.mat-list-base .mat-list-option .mat-list-text{display:flex;flex-direction:column;flex:auto;box-sizing:border-box;overflow:hidden;padding:0}.mat-list-base .mat-list-item .mat-list-text>*,.mat-list-base .mat-list-option .mat-list-text>*{margin:0;padding:0;font-weight:normal;font-size:inherit}.mat-list-base .mat-list-item .mat-list-text:empty,.mat-list-base .mat-list-option .mat-list-text:empty{display:none}.mat-list-base .mat-list-item.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,.mat-list-base .mat-list-item.mat-list-option .mat-list-item-content .mat-list-text,.mat-list-base .mat-list-option.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,.mat-list-base .mat-list-option.mat-list-option .mat-list-item-content .mat-list-text{padding-right:0;padding-left:16px}[dir=rtl] .mat-list-base .mat-list-item.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,[dir=rtl] .mat-list-base .mat-list-item.mat-list-option .mat-list-item-content .mat-list-text,[dir=rtl] .mat-list-base .mat-list-option.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,[dir=rtl] .mat-list-base .mat-list-option.mat-list-option .mat-list-item-content .mat-list-text{padding-right:16px;padding-left:0}.mat-list-base .mat-list-item.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,.mat-list-base .mat-list-item.mat-list-option .mat-list-item-content-reverse .mat-list-text,.mat-list-base .mat-list-option.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,.mat-list-base .mat-list-option.mat-list-option .mat-list-item-content-reverse .mat-list-text{padding-left:0;padding-right:16px}[dir=rtl] .mat-list-base .mat-list-item.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,[dir=rtl] .mat-list-base .mat-list-item.mat-list-option .mat-list-item-content-reverse .mat-list-text,[dir=rtl] .mat-list-base .mat-list-option.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,[dir=rtl] .mat-list-base .mat-list-option.mat-list-option .mat-list-item-content-reverse .mat-list-text{padding-right:0;padding-left:16px}.mat-list-base .mat-list-item.mat-list-item-with-avatar.mat-list-option .mat-list-item-content-reverse .mat-list-text,.mat-list-base .mat-list-item.mat-list-item-with-avatar.mat-list-option .mat-list-item-content .mat-list-text,.mat-list-base .mat-list-option.mat-list-item-with-avatar.mat-list-option .mat-list-item-content-reverse .mat-list-text,.mat-list-base .mat-list-option.mat-list-item-with-avatar.mat-list-option .mat-list-item-content .mat-list-text{padding-right:16px;padding-left:16px}.mat-list-base .mat-list-item .mat-list-avatar,.mat-list-base .mat-list-option .mat-list-avatar{flex-shrink:0;width:40px;height:40px;border-radius:50%;object-fit:cover}.mat-list-base .mat-list-item .mat-list-avatar~.mat-divider-inset,.mat-list-base .mat-list-option .mat-list-avatar~.mat-divider-inset{margin-left:72px;width:calc(100% - 72px)}[dir=rtl] .mat-list-base .mat-list-item .mat-list-avatar~.mat-divider-inset,[dir=rtl] .mat-list-base .mat-list-option .mat-list-avatar~.mat-divider-inset{margin-left:auto;margin-right:72px}.mat-list-base .mat-list-item .mat-list-icon,.mat-list-base .mat-list-option .mat-list-icon{flex-shrink:0;width:24px;height:24px;font-size:24px;box-sizing:content-box;border-radius:50%;padding:4px}.mat-list-base .mat-list-item .mat-list-icon~.mat-divider-inset,.mat-list-base .mat-list-option .mat-list-icon~.mat-divider-inset{margin-left:64px;width:calc(100% - 64px)}[dir=rtl] .mat-list-base .mat-list-item .mat-list-icon~.mat-divider-inset,[dir=rtl] .mat-list-base .mat-list-option .mat-list-icon~.mat-divider-inset{margin-left:auto;margin-right:64px}.mat-list-base .mat-list-item .mat-divider,.mat-list-base .mat-list-option .mat-divider{position:absolute;bottom:0;left:0;width:100%;margin:0}[dir=rtl] .mat-list-base .mat-list-item .mat-divider,[dir=rtl] .mat-list-base .mat-list-option .mat-divider{margin-left:auto;margin-right:0}.mat-list-base .mat-list-item .mat-divider.mat-divider-inset,.mat-list-base .mat-list-option .mat-divider.mat-divider-inset{position:absolute}.mat-list-base[dense]{padding-top:4px;display:block}.mat-list-base[dense] .mat-subheader{height:40px;line-height:8px}.mat-list-base[dense] .mat-subheader:first-child{margin-top:-4px}.mat-list-base[dense] .mat-list-item,.mat-list-base[dense] .mat-list-option{display:block;height:40px;-webkit-tap-highlight-color:rgba(0,0,0,0);width:100%;padding:0}.mat-list-base[dense] .mat-list-item .mat-list-item-content,.mat-list-base[dense] .mat-list-option .mat-list-item-content{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;padding:0 16px;position:relative;height:inherit}.mat-list-base[dense] .mat-list-item .mat-list-item-content-reverse,.mat-list-base[dense] .mat-list-option .mat-list-item-content-reverse{display:flex;align-items:center;padding:0 16px;flex-direction:row-reverse;justify-content:space-around}.mat-list-base[dense] .mat-list-item .mat-list-item-ripple,.mat-list-base[dense] .mat-list-option .mat-list-item-ripple{display:block;top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-list-base[dense] .mat-list-item.mat-list-item-with-avatar,.mat-list-base[dense] .mat-list-option.mat-list-item-with-avatar{height:48px}.mat-list-base[dense] .mat-list-item.mat-2-line,.mat-list-base[dense] .mat-list-option.mat-2-line{height:60px}.mat-list-base[dense] .mat-list-item.mat-3-line,.mat-list-base[dense] .mat-list-option.mat-3-line{height:76px}.mat-list-base[dense] .mat-list-item.mat-multi-line,.mat-list-base[dense] .mat-list-option.mat-multi-line{height:auto}.mat-list-base[dense] .mat-list-item.mat-multi-line .mat-list-item-content,.mat-list-base[dense] .mat-list-option.mat-multi-line .mat-list-item-content{padding-top:16px;padding-bottom:16px}.mat-list-base[dense] .mat-list-item .mat-list-text,.mat-list-base[dense] .mat-list-option .mat-list-text{display:flex;flex-direction:column;flex:auto;box-sizing:border-box;overflow:hidden;padding:0}.mat-list-base[dense] .mat-list-item .mat-list-text>*,.mat-list-base[dense] .mat-list-option .mat-list-text>*{margin:0;padding:0;font-weight:normal;font-size:inherit}.mat-list-base[dense] .mat-list-item .mat-list-text:empty,.mat-list-base[dense] .mat-list-option .mat-list-text:empty{display:none}.mat-list-base[dense] .mat-list-item.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,.mat-list-base[dense] .mat-list-item.mat-list-option .mat-list-item-content .mat-list-text,.mat-list-base[dense] .mat-list-option.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,.mat-list-base[dense] .mat-list-option.mat-list-option .mat-list-item-content .mat-list-text{padding-right:0;padding-left:16px}[dir=rtl] .mat-list-base[dense] .mat-list-item.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,[dir=rtl] .mat-list-base[dense] .mat-list-item.mat-list-option .mat-list-item-content .mat-list-text,[dir=rtl] .mat-list-base[dense] .mat-list-option.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,[dir=rtl] .mat-list-base[dense] .mat-list-option.mat-list-option .mat-list-item-content .mat-list-text{padding-right:16px;padding-left:0}.mat-list-base[dense] .mat-list-item.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,.mat-list-base[dense] .mat-list-item.mat-list-option .mat-list-item-content-reverse .mat-list-text,.mat-list-base[dense] .mat-list-option.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,.mat-list-base[dense] .mat-list-option.mat-list-option .mat-list-item-content-reverse .mat-list-text{padding-left:0;padding-right:16px}[dir=rtl] .mat-list-base[dense] .mat-list-item.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,[dir=rtl] .mat-list-base[dense] .mat-list-item.mat-list-option .mat-list-item-content-reverse .mat-list-text,[dir=rtl] .mat-list-base[dense] .mat-list-option.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,[dir=rtl] .mat-list-base[dense] .mat-list-option.mat-list-option .mat-list-item-content-reverse .mat-list-text{padding-right:0;padding-left:16px}.mat-list-base[dense] .mat-list-item.mat-list-item-with-avatar.mat-list-option .mat-list-item-content-reverse .mat-list-text,.mat-list-base[dense] .mat-list-item.mat-list-item-with-avatar.mat-list-option .mat-list-item-content .mat-list-text,.mat-list-base[dense] .mat-list-option.mat-list-item-with-avatar.mat-list-option .mat-list-item-content-reverse .mat-list-text,.mat-list-base[dense] .mat-list-option.mat-list-item-with-avatar.mat-list-option .mat-list-item-content .mat-list-text{padding-right:16px;padding-left:16px}.mat-list-base[dense] .mat-list-item .mat-list-avatar,.mat-list-base[dense] .mat-list-option .mat-list-avatar{flex-shrink:0;width:36px;height:36px;border-radius:50%;object-fit:cover}.mat-list-base[dense] .mat-list-item .mat-list-avatar~.mat-divider-inset,.mat-list-base[dense] .mat-list-option .mat-list-avatar~.mat-divider-inset{margin-left:68px;width:calc(100% - 68px)}[dir=rtl] .mat-list-base[dense] .mat-list-item .mat-list-avatar~.mat-divider-inset,[dir=rtl] .mat-list-base[dense] .mat-list-option .mat-list-avatar~.mat-divider-inset{margin-left:auto;margin-right:68px}.mat-list-base[dense] .mat-list-item .mat-list-icon,.mat-list-base[dense] .mat-list-option .mat-list-icon{flex-shrink:0;width:20px;height:20px;font-size:20px;box-sizing:content-box;border-radius:50%;padding:4px}.mat-list-base[dense] .mat-list-item .mat-list-icon~.mat-divider-inset,.mat-list-base[dense] .mat-list-option .mat-list-icon~.mat-divider-inset{margin-left:60px;width:calc(100% - 60px)}[dir=rtl] .mat-list-base[dense] .mat-list-item .mat-list-icon~.mat-divider-inset,[dir=rtl] .mat-list-base[dense] .mat-list-option .mat-list-icon~.mat-divider-inset{margin-left:auto;margin-right:60px}.mat-list-base[dense] .mat-list-item .mat-divider,.mat-list-base[dense] .mat-list-option .mat-divider{position:absolute;bottom:0;left:0;width:100%;margin:0}[dir=rtl] .mat-list-base[dense] .mat-list-item .mat-divider,[dir=rtl] .mat-list-base[dense] .mat-list-option .mat-divider{margin-left:auto;margin-right:0}.mat-list-base[dense] .mat-list-item .mat-divider.mat-divider-inset,.mat-list-base[dense] .mat-list-option .mat-divider.mat-divider-inset{position:absolute}.mat-nav-list a{text-decoration:none;color:inherit}.mat-nav-list .mat-list-item{cursor:pointer;outline:none}mat-action-list .mat-list-item{cursor:pointer;outline:inherit}.mat-list-option:not(.mat-list-item-disabled){cursor:pointer;outline:none}.mat-list-item-disabled{pointer-events:none}.cdk-high-contrast-active .mat-list-item-disabled{opacity:.5}.cdk-high-contrast-active :host .mat-list-item-disabled{opacity:.5}.cdk-high-contrast-active .mat-list-option:hover,.cdk-high-contrast-active .mat-nav-list .mat-list-item:hover,.cdk-high-contrast-active mat-action-list .mat-list-item:hover{outline:dotted 1px;z-index:1}.cdk-high-contrast-active .mat-list-single-selected-option::after{content:\"\";position:absolute;top:50%;right:16px;transform:translateY(-50%);width:10px;height:0;border-bottom:solid 10px;border-radius:10px}.cdk-high-contrast-active [dir=rtl] .mat-list-single-selected-option::after{right:auto;left:16px}@media(hover: none){.mat-list-option:not(.mat-list-single-selected-option):not(.mat-list-item-disabled):hover,.mat-nav-list .mat-list-item:not(.mat-list-item-disabled):hover,.mat-action-list .mat-list-item:not(.mat-list-item-disabled):hover{background:none}}"] }]
|
|
605
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i3.FocusMonitor }]; }, propDecorators: { options: [{
|
|
606
|
-
type: ContentChildren,
|
|
607
|
-
args: [MatLegacyListOption, { descendants: true }]
|
|
608
|
-
}], selectionChange: [{
|
|
609
|
-
type: Output
|
|
610
|
-
}], color: [{
|
|
611
|
-
type: Input
|
|
612
|
-
}], compareWith: [{
|
|
613
|
-
type: Input
|
|
614
|
-
}], disabled: [{
|
|
615
|
-
type: Input
|
|
616
|
-
}], multiple: [{
|
|
617
|
-
type: Input
|
|
618
|
-
}] } });
|
|
619
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLWxpc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwvbGVnYWN5LWxpc3Qvc2VsZWN0aW9uLWxpc3QudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwvbGVnYWN5LWxpc3QvbGlzdC1vcHRpb24uaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQWtCLGVBQWUsRUFBRSxZQUFZLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRixPQUFPLEVBQWUscUJBQXFCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRSxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDeEQsT0FBTyxFQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDNUYsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFJTCxNQUFNLEVBQ04sU0FBUyxFQUVULFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF1QixpQkFBaUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZFLE9BQU8sRUFFTCxPQUFPLEVBQ1Asa0JBQWtCLEVBQ2xCLFFBQVEsR0FFVCxNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRCxPQUFPLEVBQUMsK0JBQStCLEVBQUUsNkJBQTZCLEVBQUMsTUFBTSxRQUFR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LEVBQUUsa0NBQWtDO3dCQUMzQyxXQUFXLEVBQUUsa0JBQWtCO3dCQUMvQiw2QkFBNkIsRUFBRSxVQUFVO3dCQUN6QyxzQkFBc0IsRUFBRSxxQkFBcUI7d0JBQzdDLGlCQUFpQixFQUFFLFdBQVc7cUJBQy9CLFlBQ1MsMkJBQTJCLGlCQUV0QixpQkFBaUIsQ0FBQyxJQUFJLGFBQzFCLENBQUMsd0NBQXdDLENBQUMsbUJBQ3BDLHVCQUF1QixDQUFDLE1BQU07NEpBYy9DLE9BQU87c0JBRE4sZUFBZTt1QkFBQyxtQkFBbUIsRUFBRSxFQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUM7Z0JBSXRDLGVBQWU7c0JBQWpDLE1BQU07Z0JBSUUsS0FBSztzQkFBYixLQUFLO2dCQU9HLFdBQVc7c0JBQW5CLEtBQUs7Z0JBSUYsUUFBUTtzQkFEWCxLQUFLO2dCQWlCRixRQUFRO3NCQURYLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtGb2N1c2FibGVPcHRpb24sIEZvY3VzS2V5TWFuYWdlciwgRm9jdXNNb25pdG9yfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQge0Jvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5fSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtTZWxlY3Rpb25Nb2RlbH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcbmltcG9ydCB7QSwgRE9XTl9BUlJPVywgRU5URVIsIGhhc01vZGlmaWVyS2V5LCBTUEFDRSwgVVBfQVJST1d9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1J9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIENhbkRpc2FibGVSaXBwbGUsXG4gIE1hdExpbmUsXG4gIG1peGluRGlzYWJsZVJpcHBsZSxcbiAgc2V0TGluZXMsXG4gIFRoZW1lUGFsZXR0ZSxcbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQge1N1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtzdGFydFdpdGgsIHRha2VVbnRpbH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtNYXRMZWdhY3lMaXN0QXZhdGFyQ3NzTWF0U3R5bGVyLCBNYXRMZWdhY3lMaXN0SWNvbkNzc01hdFN0eWxlcn0gZnJvbSAnLi9saXN0JztcblxuY29uc3QgX01hdFNlbGVjdGlvbkxpc3RCYXNlID0gbWl4aW5EaXNhYmxlUmlwcGxlKGNsYXNzIHt9KTtcbmNvbnN0IF9NYXRMaXN0T3B0aW9uQmFzZSA9IG1peGluRGlzYWJsZVJpcHBsZShjbGFzcyB7fSk7XG5cbi8qKlxuICogQGRvY3MtcHJpdmF0ZVxuICogQGRlcHJlY2F0ZWQgVXNlIGBNQVRfU0VMRUNUSU9OX0xJU1RfVkFMVUVfQUNDRVNTT1JgIGZyb20gYEBhbmd1bGFyL21hdGVyaWFsL2xpc3RgIGluc3RlYWQuIFNlZSBodHRwczovL21hdGVyaWFsLmFuZ3VsYXIuaW8vZ3VpZGUvbWRjLW1pZ3JhdGlvbiBmb3IgaW5mb3JtYXRpb24gYWJvdXQgbWlncmF0aW5nLlxuICogQGJyZWFraW5nLWNoYW5nZSAxNy4wLjBcbiAqL1xuZXhwb3J0IGNvbnN0IE1BVF9MRUdBQ1lfU0VMRUNUSU9OX0xJU1RfVkFMVUVfQUNDRVNTT1I6IGFueSA9IHtcbiAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE1hdExlZ2FjeVNlbGVjdGlvbkxpc3QpLFxuICBtdWx0aTogdHJ1ZSxcbn07XG5cbi8qKlxuICogQ2hhbmdlIGV2ZW50IHRoYXQgaXMgYmVpbmcgZmlyZWQgd2hlbmV2ZXIgdGhlIHNlbGVjdGVkIHN0YXRlIG9mIGFuIG9wdGlvbiBjaGFuZ2VzLlxuICogQGRlcHJlY2F0ZWQgVXNlIGBNYXRTZWxlY3Rpb25MaXN0Q2hhbmdlYCBmcm9tIGBAYW5ndWxhci9tYXRlcmlhbC9saXN0YCBpbnN0ZWFkLiBTZWUgaHR0cHM6Ly9tYXRlcmlhbC5hbmd1bGFyLmlvL2d1aWRlL21kYy1taWdyYXRpb24gZm9yIGluZm9ybWF0aW9uIGFib3V0IG1pZ3JhdGluZy5cbiAqIEBicmVha2luZy1jaGFuZ2UgMTcuMC4wXG4gKi9cbmV4cG9ydCBjbGFzcyBNYXRMZWdhY3lTZWxlY3Rpb25MaXN0Q2hhbmdlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgLyoqIFJlZmVyZW5jZSB0byB0aGUgc2VsZWN0aW9uIGxpc3QgdGhhdCBlbWl0dGVkIHRoZSBldmVudC4gKi9cbiAgICBwdWJsaWMgc291cmNlOiBNYXRMZWdhY3lTZWxlY3Rpb25MaXN0LFxuICAgIC8qKiBSZWZlcmVuY2UgdG8gdGhlIG9wdGlvbnMgdGhhdCBoYXZlIGJlZW4gY2hhbmdlZC4gKi9cbiAgICBwdWJsaWMgb3B0aW9uczogTWF0TGVnYWN5TGlzdE9wdGlvbltdLFxuICApIHt9XG59XG5cbi8qKlxuICogVHlwZSBkZXNjcmliaW5nIHBvc3NpYmxlIHBvc2l0aW9ucyBvZiBhIGNoZWNrYm94IGluIGEgbGlzdCBvcHRpb25cbiAqIHdpdGggcmVzcGVjdCB0byB0aGUgbGlzdCBpdGVtJ3MgdGV4dC5cbiAqIEBkZXByZWNhdGVkIFVzZSBgTWF0TGlzdE9wdGlvblRvZ2dsZVBvc2l0aW9uYCBmcm9tIGBAYW5ndWxhci9tYXRlcmlhbC9saXN0YCBpbnN0ZWFkLiBTZWUgaHR0cHM6Ly9tYXRlcmlhbC5hbmd1bGFyLmlvL2d1aWRlL21kYy1taWdyYXRpb24gZm9yIGluZm9ybWF0aW9uIGFib3V0IG1pZ3JhdGluZy5cbiAqIEBicmVha2luZy1jaGFuZ2UgMTcuMC4wXG4gKi9cbmV4cG9ydCB0eXBlIE1hdExlZ2FjeUxpc3RPcHRpb25DaGVja2JveFBvc2l0aW9uID0gJ2JlZm9yZScgfCAnYWZ0ZXInO1xuXG4vKipcbiAqIENvbXBvbmVudCBmb3IgbGlzdC1vcHRpb25zIG9mIHNlbGVjdGlvbi1saXN0LiBFYWNoIGxpc3Qtb3B0aW9uIGNhbiBhdXRvbWF0aWNhbGx5XG4gKiBnZW5lcmF0ZSBhIGNoZWNrYm94IGFuZCBjYW4gcHV0IGN1cnJlbnQgaXRlbSBpbnRvIHRoZSBzZWxlY3Rpb25Nb2RlbCBvZiBzZWxlY3Rpb24tbGlzdFxuICogaWYgdGhlIGN1cnJlbnQgaXRlbSBpcyBzZWxlY3RlZC5cbiAqIEBkZXByZWNhdGVkIFVzZSBgTWF0TGlzdE9wdGlvbmAgZnJvbSBgQGFuZ3VsYXIvbWF0ZXJpYWwvbGlzdGAgaW5zdGVhZC4gU2VlIGh0dHBzOi8vbWF0ZXJpYWwuYW5ndWxhci5pby9ndWlkZS9tZGMtbWlncmF0aW9uIGZvciBpbmZvcm1hdGlvbiBhYm91dCBtaWdyYXRpbmcuXG4gKiBAYnJlYWtpbmctY2hhbmdlIDE3LjAuMFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtYXQtbGlzdC1vcHRpb24nLFxuICBleHBvcnRBczogJ21hdExpc3RPcHRpb24nLFxuICBpbnB1dHM6IFsnZGlzYWJsZVJpcHBsZSddLFxuICBob3N0OiB7XG4gICAgJ3JvbGUnOiAnb3B0aW9uJyxcbiAgICAnY2xhc3MnOiAnbWF0LWxpc3QtaXRlbSBtYXQtbGlzdC1vcHRpb24gbWF0LWZvY3VzLWluZGljYXRvcicsXG4gICAgJyhmb2N1cyknOiAnX2hhbmRsZUZvY3VzKCknLFxuICAgICcoYmx1ciknOiAnX2hhbmRsZUJsdXIoKScsXG4gICAgJyhjbGljayknOiAnX2hhbmRsZUNsaWNrKCknLFxuICAgICdbY2xhc3MubWF0LWxpc3QtaXRlbS1kaXNhYmxlZF0nOiAnZGlzYWJsZWQnLFxuICAgICdbY2xhc3MubWF0LWxpc3QtaXRlbS13aXRoLWF2YXRhcl0nOiAnX2F2YXRhciB8fCBfaWNvbicsXG4gICAgLy8gTWFudWFsbHkgc2V0IHRoZSBcInByaW1hcnlcIiBvciBcIndhcm5cIiBjbGFzcyBpZiB0aGUgY29sb3IgaGFzIGJlZW4gZXhwbGljaXRseVxuICAgIC8vIHNldCB0byBcInByaW1hcnlcIiBvciBcIndhcm5cIi4gVGhlIHBzZXVkbyBjaGVja2JveCBwaWNrcyB1cCB0aGVzZSBjbGFzc2VzIGZvclxuICAgIC8vIGl0cyB0aGVtZS5cbiAgICAnW2NsYXNzLm1hdC1wcmltYXJ5XSc6ICdjb2xvciA9PT0gXCJwcmltYXJ5XCInLFxuICAgIC8vIEV2ZW4gdGhvdWdoIGFjY2VudCBpcyB0aGUgZGVmYXVsdCwgd2UgbmVlZCB0byBzZXQgdGhpcyBjbGFzcyBhbnl3YXksIGJlY2F1c2UgdGhlICBsaXN0IG1pZ2h0XG4gICAgLy8gYmUgcGxhY2VkIGluc2lkZSBhIHBhcmVudCB0aGF0IGhhcyBvbmUgb2YgdGhlIG90aGVyIGNvbG9ycyB3aXRoIGEgaGlnaGVyIHNwZWNpZmljaXR5LlxuICAgICdbY2xhc3MubWF0LWFjY2VudF0nOiAnY29sb3IgIT09IFwicHJpbWFyeVwiICYmIGNvbG9yICE9PSBcIndhcm5cIicsXG4gICAgJ1tjbGFzcy5tYXQtd2Fybl0nOiAnY29sb3IgPT09IFwid2FyblwiJyxcbiAgICAnW2NsYXNzLm1hdC1saXN0LXNpbmdsZS1zZWxlY3RlZC1vcHRpb25dJzogJ3NlbGVjdGVkICYmICFzZWxlY3Rpb25MaXN0Lm11bHRpcGxlJyxcbiAgICAnW2F0dHIuYXJpYS1zZWxlY3RlZF0nOiAnc2VsZWN0ZWQnLFxuICAgICdbYXR0ci5hcmlhLWRpc2FibGVkXSc6ICdkaXNhYmxlZCcsXG4gICAgJ1thdHRyLnRhYmluZGV4XSc6ICctMScsXG4gIH0sXG4gIHRlbXBsYXRlVXJsOiAnbGlzdC1vcHRpb24uaHRtbCcsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBNYXRMZWdhY3lMaXN0T3B0aW9uXG4gIGV4dGVuZHMgX01hdExpc3RPcHRpb25CYXNlXG4gIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95LCBPbkluaXQsIEZvY3VzYWJsZU9wdGlvbiwgQ2FuRGlzYWJsZVJpcHBsZVxue1xuICBwcml2YXRlIF9zZWxlY3RlZCA9IGZhbHNlO1xuICBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xuICBwcml2YXRlIF9oYXNGb2N1cyA9IGZhbHNlO1xuXG4gIEBDb250ZW50Q2hpbGQoTWF0TGVnYWN5TGlzdEF2YXRhckNzc01hdFN0eWxlcikgX2F2YXRhcjogTWF0TGVnYWN5TGlzdEF2YXRhckNzc01hdFN0eWxlcjtcbiAgQENvbnRlbnRDaGlsZChNYXRMZWdhY3lMaXN0SWNvbkNzc01hdFN0eWxlcikgX2ljb246IE1hdExlZ2FjeUxpc3RJY29uQ3NzTWF0U3R5bGVyO1xuICBAQ29udGVudENoaWxkcmVuKE1hdExpbmUsIHtkZXNjZW5kYW50czogdHJ1ZX0pIF9saW5lczogUXVlcnlMaXN0PE1hdExpbmU+O1xuXG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSBzZWxlY3RlZCBzdGF0ZSBvZiB0aGUgb3B0aW9uIGhhcyBjaGFuZ2VkLlxuICAgKiBVc2UgdG8gZmFjaWxpdGF0ZSB0d28tZGF0YSBiaW5kaW5nIHRvIHRoZSBgc2VsZWN0ZWRgIHByb3BlcnR5LlxuICAgKiBAZG9jcy1wcml2YXRlXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcmVhZG9ubHkgc2VsZWN0ZWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAvKiogRE9NIGVsZW1lbnQgY29udGFpbmluZyB0aGUgaXRlbSdzIHRleHQuICovXG4gIEBWaWV3Q2hpbGQoJ3RleHQnKSBfdGV4dDogRWxlbWVudFJlZjtcblxuICAvKiogV2hldGhlciB0aGUgbGFiZWwgc2hvdWxkIGFwcGVhciBiZWZvcmUgb3IgYWZ0ZXIgdGhlIGNoZWNrYm94LiBEZWZhdWx0cyB0byAnYWZ0ZXInICovXG4gIEBJbnB1dCgpIGNoZWNrYm94UG9zaXRpb246IE1hdExlZ2FjeUxpc3RPcHRpb25DaGVja2JveFBvc2l0aW9uID0gJ2FmdGVyJztcblxuICAvKiogVGhlbWUgY29sb3Igb2YgdGhlIGxpc3Qgb3B0aW9uLiBUaGlzIHNldHMgdGhlIGNvbG9yIG9mIHRoZSBjaGVja2JveC4gKi9cbiAgQElucHV0KClcbiAgZ2V0IGNvbG9yKCk6IFRoZW1lUGFsZXR0ZSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbG9yIHx8IHRoaXMuc2VsZWN0aW9uTGlzdC5jb2xvcjtcbiAgfVxuICBzZXQgY29sb3IobmV3VmFsdWU6IFRoZW1lUGFsZXR0ZSkge1xuICAgIHRoaXMuX2NvbG9yID0gbmV3VmFsdWU7XG4gIH1cbiAgcHJpdmF0ZSBfY29sb3I6IFRoZW1lUGFsZXR0ZTtcblxuICAvKipcbiAgICogVGhpcyBpcyBzZXQgdG8gdHJ1ZSBhZnRlciB0aGUgZmlyc3QgT25DaGFuZ2VzIGN5Y2xlIHNvIHdlIGRvbid0IGNsZWFyIHRoZSB2YWx1ZSBvZiBgc2VsZWN0ZWRgXG4gICAqIGluIHRoZSBmaXJzdCBjeWNsZS5cbiAgICovXG4gIHByaXZhdGUgX2lucHV0c0luaXRpYWxpemVkID0gZmFsc2U7XG4gIC8qKiBWYWx1ZSBvZiB0aGUgb3B0aW9uICovXG4gIEBJbnB1dCgpXG4gIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuICBzZXQgdmFsdWUobmV3VmFsdWU6IGFueSkge1xuICAgIGlmIChcbiAgICAgIHRoaXMuc2VsZWN0ZWQgJiZcbiAgICAgICF0aGlzLnNlbGVjdGlvbkxpc3QuY29tcGFyZVdpdGgobmV3VmFsdWUsIHRoaXMudmFsdWUpICYmXG4gICAgICB0aGlzLl9pbnB1dHNJbml0aWFsaXplZFxuICAgICkge1xuICAgICAgdGhpcy5zZWxlY3RlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHRoaXMuX3ZhbHVlID0gbmV3VmFsdWU7XG4gIH1cbiAgcHJpdmF0ZSBfdmFsdWU6IGFueTtcblxuICAvKiogV2hldGhlciB0aGUgb3B0aW9uIGlzIGRpc2FibGVkLiAqL1xuICBASW5wdXQoKVxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkIHx8ICh0aGlzLnNlbGVjdGlvbkxpc3QgJiYgdGhpcy5zZWxlY3Rpb25MaXN0LmRpc2FibGVkKTtcbiAgfVxuICBzZXQgZGlzYWJsZWQodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcblxuICAgIGlmIChuZXdWYWx1ZSAhPT0gdGhpcy5fZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuX2Rpc2FibGVkID0gbmV3VmFsdWU7XG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgb3B0aW9uIGlzIHNlbGVjdGVkLiAqL1xuICBASW5wdXQoKVxuICBnZXQgc2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uTGlzdC5zZWxlY3RlZE9wdGlvbnMuaXNTZWxlY3RlZCh0aGlzKTtcbiAgfVxuICBzZXQgc2VsZWN0ZWQodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuXG4gICAgaWYgKGlzU2VsZWN0ZWQgIT09IHRoaXMuX3NlbGVjdGVkKSB7XG4gICAgICB0aGlzLl9zZXRTZWxlY3RlZChpc1NlbGVjdGVkKTtcblxuICAgICAgaWYgKGlzU2VsZWN0ZWQgfHwgdGhpcy5zZWxlY3Rpb25MaXN0Lm11bHRpcGxlKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uTGlzdC5fcmVwb3J0VmFsdWVDaGFuZ2UoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9lbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBASW5qZWN0KGZvcndhcmRSZWYoKCkgPT4gTWF0TGVnYWN5U2VsZWN0aW9uTGlzdCkpIHB1YmxpYyBzZWxlY3Rpb25MaXN0OiBNYXRMZWdhY3lTZWxlY3Rpb25MaXN0LFxuICApIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgY29uc3QgbGlzdCA9IHRoaXMuc2VsZWN0aW9uTGlzdDtcblxuICAgIGlmIChsaXN0Ll92YWx1ZSAmJiBsaXN0Ll92YWx1ZS5zb21lKHZhbHVlID0+IGxpc3QuY29tcGFyZVdpdGgodGhpcy5fdmFsdWUsIHZhbHVlKSkpIHtcbiAgICAgIHRoaXMuX3NldFNlbGVjdGVkKHRydWUpO1xuICAgIH1cblxuICAgIGNvbnN0IHdhc1NlbGVjdGVkID0gdGhpcy5fc2VsZWN0ZWQ7XG5cbiAgICAvLyBMaXN0IG9wdGlvbnMgdGhhdCBhcmUgc2VsZWN0ZWQgYXQgaW5pdGlhbGl6YXRpb24gY2FuJ3QgYmUgcmVwb3J0ZWQgcHJvcGVybHkgdG8gdGhlIGZvcm1cbiAgICAvLyBjb250cm9sLiBUaGlzIGlzIGJlY2F1c2UgaXQgdGFrZXMgc29tZSB0aW1lIHVudGlsIHRoZSBzZWxlY3Rpb24tbGlzdCBrbm93cyBhYm91dCBhbGxcbiAgICAvLyBhdmFpbGFibGUgb3B0aW9ucy4gQWxzbyBpdCBjYW4gaGFwcGVuIHRoYXQgdGhlIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGhhcyBhbiBpbml0aWFsIHZhbHVlXG4gICAgLy8gdGhhdCBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLiBEZWZlcnJpbmcgdGhlIHZhbHVlIGNoYW5nZSByZXBvcnQgdG8gdGhlIG5leHQgdGljayBlbnN1cmVzXG4gICAgLy8gdGhhdCB0aGUgZm9ybSBjb250cm9sIHZhbHVlIGlzIG5vdCBiZWluZyBvdmVyd3JpdHRlbi5cbiAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLl9zZWxlY3RlZCB8fCB3YXNTZWxlY3RlZCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5faW5wdXRzSW5pdGlhbGl6ZWQgPSB0cnVlO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIHNldExpbmVzKHRoaXMuX2xpbmVzLCB0aGlzLl9lbGVtZW50KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkKSB7XG4gICAgICAvLyBXZSBoYXZlIHRvIGRlbGF5IHRoaXMgdW50aWwgdGhlIG5leHQgdGljayBpbiBvcmRlclxuICAgICAgLy8gdG8gYXZvaWQgY2hhbmdlZCBhZnRlciBjaGVja2VkIGVycm9ycy5cbiAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLnNlbGVjdGVkID0gZmFsc2U7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBoYWRGb2N1cyA9IHRoaXMuX2hhc0ZvY3VzO1xuICAgIGNvbnN0IG5ld0FjdGl2ZUl0ZW0gPSB0aGlzLnNlbGVjdGlvbkxpc3QuX3JlbW92ZU9wdGlvbkZyb21MaXN0KHRoaXMpO1xuXG4gICAgLy8gT25seSBtb3ZlIGZvY3VzIGlmIHRoaXMgb3B0aW9uIHdhcyBmb2N1c2VkIGF0IHRoZSB0aW1lIGl0IHdhcyBkZXN0cm95ZWQuXG4gICAgaWYgKGhhZEZvY3VzICYmIG5ld0FjdGl2ZUl0ZW0pIHtcbiAgICAgIG5ld0FjdGl2ZUl0ZW0uZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICAvKiogVG9nZ2xlcyB0aGUgc2VsZWN0aW9uIHN0YXRlIG9mIHRoZSBvcHRpb24uICovXG4gIHRvZ2dsZSgpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkID0gIXRoaXMuc2VsZWN0ZWQ7XG4gIH1cblxuICAvKiogQWxsb3dzIGZvciBwcm9ncmFtbWF0aWMgZm9jdXNpbmcgb2YgdGhlIG9wdGlvbi4gKi9cbiAgZm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgbGlzdCBpdGVtJ3MgdGV4dCBsYWJlbC4gSW1wbGVtZW50ZWQgYXMgYSBwYXJ0IG9mIHRoZSBGb2N1c0tleU1hbmFnZXIuXG4gICAqIEBkb2NzLXByaXZhdGVcbiAgICovXG4gIGdldExhYmVsKCkge1xuICAgIHJldHVybiB0aGlzLl90ZXh0ID8gdGhpcy5fdGV4dC5uYXRpdmVFbGVtZW50LnRleHRDb250ZW50IHx8ICcnIDogJyc7XG4gIH1cblxuICAvKiogV2hldGhlciB0aGlzIGxpc3QgaXRlbSBzaG91bGQgc2hvdyBhIHJpcHBsZSBlZmZlY3Qgd2hlbiBjbGlja2VkLiAqL1xuICBfaXNSaXBwbGVEaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5kaXNhYmxlZCB8fCB0aGlzLmRpc2FibGVSaXBwbGUgfHwgdGhpcy5zZWxlY3Rpb25MaXN0LmRpc2FibGVSaXBwbGU7XG4gIH1cblxuICBfaGFuZGxlQ2xpY2soKSB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkICYmICh0aGlzLnNlbGVjdGlvbkxpc3QubXVsdGlwbGUgfHwgIXRoaXMuc2VsZWN0ZWQpKSB7XG4gICAgICB0aGlzLnRvZ2dsZSgpO1xuXG4gICAgICAvLyBFbWl0IGEgY2hhbmdlIGV2ZW50IGlmIHRoZSBzZWxlY3RlZCBzdGF0ZSBvZiB0aGUgb3B0aW9uIGNoYW5nZWQgdGhyb3VnaCB1c2VyIGludGVyYWN0aW9uLlxuICAgICAgdGhpcy5zZWxlY3Rpb25MaXN0Ll9lbWl0Q2hhbmdlRXZlbnQoW3RoaXNdKTtcbiAgICB9XG4gIH1cblxuICBfaGFuZGxlRm9jdXMoKSB7XG4gICAgdGhpcy5zZWxlY3Rpb25MaXN0Ll9zZXRGb2N1c2VkT3B0aW9uKHRoaXMpO1xuICAgIHRoaXMuX2hhc0ZvY3VzID0gdHJ1ZTtcbiAgfVxuXG4gIF9oYW5kbGVCbHVyKCkge1xuICAgIHRoaXMuc2VsZWN0aW9uTGlzdC5fb25Ub3VjaGVkKCk7XG4gICAgdGhpcy5faGFzRm9jdXMgPSBmYWxzZTtcbiAgfVxuXG4gIC8qKiBSZXRyaWV2ZXMgdGhlIERPTSBlbGVtZW50IG9mIHRoZSBjb21wb25lbnQgaG9zdC4gKi9cbiAgX2dldEhvc3RFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICB9XG5cbiAgLyoqIFNldHMgdGhlIHNlbGVjdGVkIHN0YXRlIG9mIHRoZSBvcHRpb24uIFJldHVybnMgd2hldGhlciB0aGUgdmFsdWUgaGFzIGNoYW5nZWQuICovXG4gIF9zZXRTZWxlY3RlZChzZWxlY3RlZDogYm9vbGVhbik6IGJvb2xlYW4ge1xuICAgIGlmIChzZWxlY3RlZCA9PT0gdGhpcy5fc2VsZWN0ZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB0aGlzLl9zZWxlY3RlZCA9IHNlbGVjdGVkO1xuXG4gICAgaWYgKHNlbGVjdGVkKSB7XG4gICAgICB0aGlzLnNlbGVjdGlvbkxpc3Quc2VsZWN0ZWRPcHRpb25zLnNlbGVjdCh0aGlzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3Rpb25MaXN0LnNlbGVjdGVkT3B0aW9ucy5kZXNlbGVjdCh0aGlzKTtcbiAgICB9XG5cbiAgICB0aGlzLnNlbGVjdGVkQ2hhbmdlLmVtaXQoc2VsZWN0ZWQpO1xuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIE5vdGlmaWVzIEFuZ3VsYXIgdGhhdCB0aGUgb3B0aW9uIG5lZWRzIHRvIGJlIGNoZWNrZWQgaW4gdGhlIG5leHQgY2hhbmdlIGRldGVjdGlvbiBydW4uIE1haW5seVxuICAgKiB1c2VkIHRvIHRyaWdnZXIgYW4gdXBkYXRlIG9mIHRoZSBsaXN0IG9wdGlvbiBpZiB0aGUgZGlzYWJsZWQgc3RhdGUgb2YgdGhlIHNlbGVjdGlvbiBsaXN0XG4gICAqIGNoYW5nZWQuXG4gICAqL1xuICBfbWFya0ZvckNoZWNrKCkge1xuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG59XG5cbi8qKlxuICogTWF0ZXJpYWwgRGVzaWduIGxpc3QgY29tcG9uZW50IHdoZXJlIGVhY2ggaXRlbSBpcyBhIHNlbGVjdGFibGUgb3B0aW9uLiBCZWhhdmVzIGFzIGEgbGlzdGJveC5cbiAqIEBkZXByZWNhdGVkIFVzZSBgTWF0U2VsZWN0aW9uTGlzdGAgZnJvbSBgQGFuZ3VsYXIvbWF0ZXJpYWwvbGlzdGAgaW5zdGVhZC4gU2VlIGh0dHBzOi8vbWF0ZXJpYWwuYW5ndWxhci5pby9ndWlkZS9tZGMtbWlncmF0aW9uIGZvciBpbmZvcm1hdGlvbiBhYm91dCBtaWdyYXRpbmcuXG4gKiBAYnJlYWtpbmctY2hhbmdlIDE3LjAuMFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtYXQtc2VsZWN0aW9uLWxpc3QnLFxuICBleHBvcnRBczogJ21hdFNlbGVjdGlvbkxpc3QnLFxuICBpbnB1dHM6IFsnZGlzYWJsZVJpcHBsZSddLFxuICBob3N0OiB7XG4gICAgJ3JvbGUnOiAnbGlzdGJveCcsXG4gICAgJ2NsYXNzJzogJ21hdC1zZWxlY3Rpb24tbGlzdCBtYXQtbGlzdC1iYXNlJyxcbiAgICAnKGtleWRvd24pJzogJ19rZXlkb3duKCRldmVudCknLFxuICAgICdbYXR0ci5hcmlhLW11bHRpc2VsZWN0YWJsZV0nOiAnbXVsdGlwbGUnLFxuICAgICdbYXR0ci5hcmlhLWRpc2FibGVkXSc6ICdkaXNhYmxlZC50b1N0cmluZygpJyxcbiAgICAnW2F0dHIudGFiaW5kZXhdJzogJ190YWJJbmRleCcsXG4gIH0sXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIHN0eWxlVXJsczogWydsaXN0LmNzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBwcm92aWRlcnM6IFtNQVRfTEVHQUNZX1NFTEVDVElPTl9MSVNUX1ZBTFVFX0FDQ0VTU09SXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE1hdExlZ2FjeVNlbGVjdGlvbkxpc3RcbiAgZXh0ZW5kcyBfTWF0U2VsZWN0aW9uTGlzdEJhc2VcbiAgaW1wbGVtZW50cyBDYW5EaXNhYmxlUmlwcGxlLCBBZnRlckNvbnRlbnRJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25EZXN0cm95LCBPbkNoYW5nZXNcbntcbiAgcHJpdmF0ZSBfbXVsdGlwbGUgPSB0cnVlO1xuICBwcml2YXRlIF9jb250ZW50SW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICAvKiogVGhlIEZvY3VzS2V5TWFuYWdlciB3aGljaCBoYW5kbGVzIGZvY3VzLiAqL1xuICBfa2V5TWFuYWdlcjogRm9jdXNLZXlNYW5hZ2VyPE1hdExlZ2FjeUxpc3RPcHRpb24+O1xuXG4gIC8qKiBUaGUgb3B0aW9uIGNvbXBvbmVudHMgY29udGFpbmVkIHdpdGhpbiB0aGlzIHNlbGVjdGlvbi1saXN0LiAqL1xuICBAQ29udGVudENoaWxkcmVuKE1hdExlZ2FjeUxpc3RPcHRpb24sIHtkZXNjZW5kYW50czogdHJ1ZX0pXG4gIG9wdGlvbnM6IFF1ZXJ5TGlzdDxNYXRMZWdhY3lMaXN0T3B0aW9uPjtcblxuICAvKiogRW1pdHMgYSBjaGFuZ2UgZXZlbnQgd2hlbmV2ZXIgdGhlIHNlbGVjdGVkIHN0YXRlIG9mIGFuIG9wdGlvbiBjaGFuZ2VzLiAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgc2VsZWN0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8TWF0TGVnYWN5U2VsZWN0aW9uTGlzdENoYW5nZT4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8TWF0TGVnYWN5U2VsZWN0aW9uTGlzdENoYW5nZT4oKTtcblxuICAvKiogVGhlbWUgY29sb3Igb2YgdGhlIHNlbGVjdGlvbiBsaXN0LiBUaGlzIHNldHMgdGhlIGNoZWNrYm94IGNvbG9yIGZvciBhbGwgbGlzdCBvcHRpb25zLiAqL1xuICBASW5wdXQoKSBjb2xvcjogVGhlbWVQYWxldHRlID0gJ2FjY2VudCc7XG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uIHVzZWQgZm9yIGNvbXBhcmluZyBhbiBvcHRpb24gYWdhaW5zdCB0aGUgc2VsZWN0ZWQgdmFsdWUgd2hlbiBkZXRlcm1pbmluZyB3aGljaFxuICAgKiBvcHRpb25zIHNob3VsZCBhcHBlYXIgYXMgc2VsZWN0ZWQuIFRoZSBmaXJzdCBhcmd1bWVudCBpcyB0aGUgdmFsdWUgb2YgYW4gb3B0aW9ucy4gVGhlIHNlY29uZFxuICAgKiBvbmUgaXMgYSB2YWx1ZSBmcm9tIHRoZSBzZWxlY3RlZCB2YWx1ZS4gQSBib29sZWFuIG11c3QgYmUgcmV0dXJuZWQuXG4gICAqL1xuICBASW5wdXQoKSBjb21wYXJlV2l0aDogKG8xOiBhbnksIG8yOiBhbnkpID0+IGJvb2xlYW4gPSAoYTEsIGEyKSA9PiBhMSA9PT0gYTI7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIHNlbGVjdGlvbiBsaXN0IGlzIGRpc2FibGVkLiAqL1xuICBASW5wdXQoKVxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICB9XG4gIHNldCBkaXNhYmxlZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuXG4gICAgLy8gVGhlIGBNYXRTZWxlY3Rpb25MaXN0YCBhbmQgYE1hdExpc3RPcHRpb25gIGFyZSB1c2luZyB0aGUgYE9uUHVzaGAgY2hhbmdlIGRldGVjdGlvblxuICAgIC8vIHN0cmF0ZWd5LiBUaGVyZWZvcmUgdGhlIG9wdGlvbnMgd2lsbCBub3QgY2hlY2sgZm9yIGFueSBjaGFuZ2VzIGlmIHRoZSBgTWF0U2VsZWN0aW9uTGlzdGBcbiAgICAvLyBjaGFuZ2VkIGl0cyBzdGF0ZS4gU2luY2Ugd2Uga25vdyB0aGF0IGEgY2hhbmdlIHRvIGBkaXNhYmxlZGAgcHJvcGVydHkgb2YgdGhlIGxpc3QgYWZmZWN0c1xuICAgIC8vIHRoZSBzdGF0ZSBvZiB0aGUgb3B0aW9ucywgd2UgbWFudWFsbHkgbWFyayBlYWNoIG9wdGlvbiBmb3IgY2hlY2suXG4gICAgdGhpcy5fbWFya09wdGlvbnNGb3JDaGVjaygpO1xuICB9XG4gIHByaXZhdGUgX2Rpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIFdoZXRoZXIgc2VsZWN0aW9uIGlzIGxpbWl0ZWQgdG8gb25lIG9yIG11bHRpcGxlIGl0ZW1zIChkZWZhdWx0IG11bHRpcGxlKS4gKi9cbiAgQElucHV0KClcbiAgZ2V0IG11bHRpcGxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9tdWx0aXBsZTtcbiAgfVxuICBzZXQgbXVsdGlwbGUodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcblxuICAgIGlmIChuZXdWYWx1ZSAhPT0gdGhpcy5fbXVsdGlwbGUpIHtcbiAgICAgIGlmICh0aGlzLl9jb250ZW50SW5pdGlhbGl6ZWQgJiYgKHR5cGVvZiBuZ0Rldk1vZGUgPT09ICd1bmRlZmluZWQnIHx8IG5nRGV2TW9kZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICdDYW5ub3QgY2hhbmdlIGBtdWx0aXBsZWAgbW9kZSBvZiBtYXQtc2VsZWN0aW9uLWxpc3QgYWZ0ZXIgaW5pdGlhbGl6YXRpb24uJyxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fbXVsdGlwbGUgPSBuZXdWYWx1ZTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zID0gbmV3IFNlbGVjdGlvbk1vZGVsKHRoaXMuX211bHRpcGxlLCB0aGlzLnNlbGVjdGVkT3B0aW9ucy5zZWxlY3RlZCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgb3B0aW9ucy4gKi9cbiAgc2VsZWN0ZWRPcHRpb25zID0gbmV3IFNlbGVjdGlvbk1vZGVsPE1hdExlZ2FjeUxpc3RPcHRpb24+KHRoaXMuX211bHRpcGxlKTtcblxuICAvKiogVGhlIHRhYmluZGV4IG9mIHRoZSBzZWxlY3Rpb24gbGlzdC4gKi9cbiAgX3RhYkluZGV4ID0gLTE7XG5cbiAgLyoqIFZpZXcgdG8gbW9kZWwgY2FsbGJhY2sgdGhhdCBzaG91bGQgYmUgY2FsbGVkIHdoZW5ldmVyIHRoZSBzZWxlY3RlZCBvcHRpb25zIGNoYW5nZS4gKi9cbiAgcHJpdmF0ZSBfb25DaGFuZ2U6ICh2YWx1ZTogYW55KSA9PiB2b2lkID0gKF86IGFueSkgPT4ge307XG5cbiAgLyoqIEtlZXBzIHRyYWNrIG9mIHRoZSBjdXJyZW50bHktc2VsZWN0ZWQgdmFsdWUuICovXG4gIF92YWx1ZTogc3RyaW5nW10gfCBudWxsO1xuXG4gIC8qKiBFbWl0cyB3aGVuIHRoZSBsaXN0IGhhcyBiZWVuIGRlc3Ryb3llZC4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveWVkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAvKiogVmlldyB0byBtb2RlbCBjYWxsYmFjayB0aGF0IHNob3VsZCBiZSBjYWxsZWQgaWYgdGhlIGxpc3Qgb3IgaXRzIG9wdGlvbnMgbG9zdCBmb2N1cy4gKi9cbiAgX29uVG91Y2hlZDogKCkgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBsaXN0IGhhcyBiZWVuIGRlc3Ryb3llZC4gKi9cbiAgcHJpdmF0ZSBfaXNEZXN0cm95ZWQ6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgX2ZvY3VzTW9uaXRvcjogRm9jdXNNb25pdG9yLFxuICApIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX2NvbnRlbnRJbml0aWFsaXplZCA9IHRydWU7XG5cbiAgICB0aGlzLl9rZXlNYW5hZ2VyID0gbmV3IEZvY3VzS2V5TWFuYWdlcjxNYXRMZWdhY3lMaXN0T3B0aW9uPih0aGlzLm9wdGlvbnMpXG4gICAgICAud2l0aFdyYXAoKVxuICAgICAgLndpdGhUeXBlQWhlYWQoKVxuICAgICAgLndpdGhIb21lQW5kRW5kKClcbiAgICAgIC8vIEFsbG93IGRpc2FibGVkIGl0ZW1zIHRvIGJlIGZvY3VzYWJsZS4gRm9yIGFjY2Vzc2liaWxpdHkgcmVhc29ucywgdGhlcmUgbXVzdCBiZSBhIHdheSBmb3JcbiAgICAgIC8vIHNjcmVlbiByZWFkZXIgdXNlcnMsIHRoYXQgYWxsb3dzIHJlYWRpbmcgdGhlIGRpZmZlcmVudCBvcHRpb25zIG9mIHRoZSBsaXN0LlxuICAgICAgLnNraXBQcmVkaWNhdGUoKCkgPT4gZmFsc2UpXG4gICAgICAud2l0aEFsbG93ZWRNb2RpZmllcktleXMoWydzaGlmdEtleSddKTtcblxuICAgIGlmICh0aGlzLl92YWx1ZSkge1xuICAgICAgdGhpcy5fc2V0T3B0aW9uc0Zyb21WYWx1ZXModGhpcy5fdmFsdWUpO1xuICAgIH1cblxuICAgIC8vIElmIHRoZSB1c2VyIGF0dGVtcHRzIHRvIHRhYiBvdXQgb2YgdGhlIHNlbGVjdGlvbiBsaXN0LCBhbGxvdyBmb2N1cyB0byBlc2NhcGUuXG4gICAgdGhpcy5fa2V5TWFuYWdlci50YWJPdXQuc3Vic2NyaWJlKCgpID0+IHRoaXMuX2FsbG93Rm9jdXNFc2NhcGUoKSk7XG5cbiAgICAvLyBXaGVuIHRoZSBudW1iZXIgb2Ygb3B0aW9ucyBjaGFuZ2UsIHVwZGF0ZSB0aGUgdGFiaW5kZXggb2YgdGhlIHNlbGVjdGlvbiBsaXN0LlxuICAgIHRoaXMub3B0aW9ucy5jaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKG51bGwpLCB0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuX3VwZGF0ZVRhYkluZGV4KCk7XG4gICAgfSk7XG5cbiAgICAvLyBTeW5jIGV4dGVybmFsIGNoYW5nZXMgdG8gdGhlIG1vZGVsIGJhY2sgdG8gdGhlIG9wdGlvbnMuXG4gICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMuY2hhbmdlZC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgaWYgKGV2ZW50LmFkZGVkKSB7XG4gICAgICAgIGZvciAobGV0IGl0ZW0gb2YgZXZlbnQuYWRkZWQpIHtcbiAgICAgICAgICBpdGVtLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZXZlbnQucmVtb3ZlZCkge1xuICAgICAgICBmb3IgKGxldCBpdGVtIG9mIGV2ZW50LnJlbW92ZWQpIHtcbiAgICAgICAgICBpdGVtLnNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuX2ZvY3VzTW9uaXRvclxuICAgICAgLm1vbml0b3IodGhpcy5fZWxlbWVudClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQpKVxuICAgICAgLnN1YnNjcmliZShvcmlnaW4gPT4ge1xuICAgICAgICBpZiAob3JpZ2luID09PSAna2V5Ym9hcmQnIHx8IG9yaWdpbiA9PT0gJ3Byb2dyYW0nKSB7XG4gICAgICAgICAgbGV0IHRvRm9jdXMgPSAwO1xuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5vcHRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLmdldChpKT8uc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgdG9Gb2N1cyA9IGk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLl9rZXlNYW5hZ2VyLnNldEFjdGl2ZUl0ZW0odG9Gb2N1cyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGNvbnN0IGRpc2FibGVSaXBwbGVDaGFuZ2VzID0gY2hhbmdlc1snZGlzYWJsZVJpcHBsZSddO1xuICAgIGNvbnN0IGNvbG9yQ2hhbmdlcyA9IGNoYW5nZXNbJ2NvbG9yJ107XG5cbiAgICBpZiAoXG4gICAgICAoZGlzYWJsZVJpcHBsZUNoYW5nZXMgJiYgIWRpc2FibGVSaXBwbGVDaGFuZ2VzLmZpcnN0Q2hhbmdlKSB8fFxuICAgICAgKGNvbG9yQ2hhbmdlcyAmJiAhY29sb3JDaGFuZ2VzLmZpcnN0Q2hhbmdlKVxuICAgICkge1xuICAgICAgdGhpcy5fbWFya09wdGlvbnNGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX2tleU1hbmFnZXI/LmRlc3Ryb3koKTtcbiAgICB0aGlzLl9mb2N1c01vbml0b3Iuc3RvcE1vbml0b3JpbmcodGhpcy5fZWxlbWVudCk7XG4gICAgdGhpcy5fZGVzdHJveWVkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95ZWQuY29tcGxldGUoKTtcbiAgICB0aGlzLl9pc0Rlc3Ryb3llZCA9IHRydWU7XG4gIH1cblxuICAvKiogRm9jdXNlcyB0aGUgc2VsZWN0aW9uIGxpc3QuICovXG4gIGZvY3VzKG9wdGlvbnM/OiBGb2N1c09wdGlvbnMpIHtcbiAgICB0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMob3B0aW9ucyk7XG4gIH1cblxuICAvKiogU2VsZWN0cyBhbGwgb2YgdGhlIG9wdGlvbnMuIFJldHVybnMgdGhlIG9wdGlvbnMgdGhhdCBjaGFuZ2VkIGFzIGEgcmVzdWx0LiAqL1xuICBzZWxlY3RBbGwoKTogTWF0TGVnYWN5TGlzdE9wdGlvbltdIHtcbiAgICByZXR1cm4gdGhpcy5fc2V0QWxsT3B0aW9uc1NlbGVjdGVkKHRydWUpO1xuICB9XG5cbiAgLyoqIERlc2VsZWN0cyBhbGwgb2YgdGhlIG9wdGlvbnMuIFJldHVybnMgdGhlIG9wdGlvbnMgdGhhdCBjaGFuZ2VkIGFzIGEgcmVzdWx0LiAqL1xuICBkZXNlbGVjdEFsbCgpOiBNYXRMZWdhY3lMaXN0T3B0aW9uW10ge1xuICAgIHJldHVybiB0aGlzLl9zZXRBbGxPcHRpb25zU2VsZWN0ZWQoZmFsc2UpO1xuICB9XG5cbiAgLyoqIFNldHMgdGhlIGZvY3VzZWQgb3B0aW9uIG9mIHRoZSBzZWxlY3Rpb24tbGlzdC4gKi9cbiAgX3NldEZvY3VzZWRPcHRpb24ob3B0aW9uOiBNYXRMZWdhY3lMaXN0T3B0aW9uKSB7XG4gICAgdGhpcy5fa2V5TWFuYWdlci51cGRhdGVBY3RpdmVJdGVtKG9wdGlvbik7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyBhbiBvcHRpb24gZnJvbSB0aGUgc2VsZWN0aW9uIGxpc3QgYW5kIHVwZGF0ZXMgdGhlIGFjdGl2ZSBpdGVtLlxuICAgKiBAcmV0dXJucyBDdXJyZW50bHktYWN0aXZlIGl0ZW0uXG4gICAqL1xuICBfcmVtb3ZlT3B0aW9uRnJvbUxpc3Qob3B0aW9uOiBNYXRMZWdhY3lMaXN0T3B0aW9uKTogTWF0TGVnYWN5TGlzdE9wdGlvbiB8IG51bGwge1xuICAgIGNvbnN0IG9wdGlvbkluZGV4ID0gdGhpcy5fZ2V0T3B0aW9uSW5kZXgob3B0aW9uKTtcblxuICAgIGlmIChvcHRpb25JbmRleCA+IC0xICYmIHRoaXMuX2tleU1hbmFnZXIuYWN0aXZlSXRlbUluZGV4ID09PSBvcHRpb25JbmRleCkge1xuICAgICAgLy8gQ2hlY2sgd2hldGhlciB0aGUgb3B0aW9uIGlzIHRoZSBsYXN0IGl0ZW1cbiAgICAgIGlmIChvcHRpb25JbmRleCA+IDApIHtcbiAgICAgICAgdGhpcy5fa2V5TWFuYWdlci51cGRhdGVBY3RpdmVJdGVtKG9wdGlvbkluZGV4IC0gMSk7XG4gICAgICB9IGVsc2UgaWYgKG9wdGlvbkluZGV4ID09PSAwICYmIHRoaXMub3B0aW9ucy5sZW5ndGggPiAxKSB7XG4gICAgICAgIHRoaXMuX2tleU1hbmFnZXIudXBkYXRlQWN0aXZlSXRlbShNYXRoLm1pbihvcHRpb25JbmRleCArIDEsIHRoaXMub3B0aW9ucy5sZW5ndGggLSAxKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2tleU1hbmFnZXIuYWN0aXZlSXRlbTtcbiAgfVxuXG4gIC8qKiBQYXNzZXMgcmVsZXZhbnQga2V5IHByZXNzZXMgdG8gb3VyIGtleSBtYW5hZ2VyLiAqL1xuICBfa2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGNvbnN0IGtleUNvZGUgPSBldmVudC5rZXlDb2RlO1xuICAgIGNvbnN0IG1hbmFnZXIgPSB0aGlzLl9rZXlNYW5hZ2VyO1xuICAgIGNvbnN0IHByZXZpb3VzRm9jdXNJbmRleCA9IG1hbmFnZXIuYWN0aXZlSXRlbUluZGV4O1xuICAgIGNvbnN0IGhhc01vZGlmaWVyID0gaGFzTW9kaWZpZXJLZXkoZXZlbnQpO1xuXG4gICAgc3dpdGNoIChrZXlDb2RlKSB7XG4gICAgICBjYXNlIFNQQUNFOlxuICAgICAgY2FzZSBFTlRFUjpcbiAgICAgICAgaWYgKCFoYXNNb2RpZmllciAmJiAhbWFuYWdlci5pc1R5cGluZygpKSB7XG4gICAgICAgICAgdGhpcy5fdG9nZ2xlRm9jdXNlZE9wdGlvbigpO1xuICAgICAgICAgIC8vIEFsd2F5cyBwcmV2ZW50IHNwYWNlIGZyb20gc2Nyb2xsaW5nIHRoZSBwYWdlIHNpbmNlIHRoZSBsaXN0IGhhcyBmb2N1c1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICAvLyBUaGUgXCJBXCIga2V5IGdldHMgc3BlY2lhbCB0cmVhdG1lbnQsIGJlY2F1c2UgaXQncyB1c2VkIGZvciB0aGUgXCJzZWxlY3QgYWxsXCIgZnVuY3Rpb25hbGl0eS5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIGtleUNvZGUgPT09IEEgJiZcbiAgICAgICAgICB0aGlzLm11bHRpcGxlICYmXG4gICAgICAgICAgaGFzTW9kaWZpZXJLZXkoZXZlbnQsICdjdHJsS2V5JykgJiZcbiAgICAgICAgICAhbWFuYWdlci5pc1R5cGluZygpXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnN0IHNob3VsZFNlbGVjdCA9IHRoaXMub3B0aW9ucy5zb21lKG9wdGlvbiA9PiAhb3B0aW9uLmRpc2FibGVkICYmICFvcHRpb24uc2VsZWN0ZWQpO1xuICAgICAgICAgIHRoaXMuX3NldEFsbE9wdGlvbnNTZWxlY3RlZChzaG91bGRTZWxlY3QsIHRydWUsIHRydWUpO1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbWFuYWdlci5vbktleWRvd24oZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgdGhpcy5tdWx0aXBsZSAmJlxuICAgICAgKGtleUNvZGUgPT09IFVQX0FSUk9XIHx8IGtleUNvZGUgPT09IERPV05fQVJST1cpICYmXG4gICAgICBldmVudC5zaGlmdEtleSAmJlxuICAgICAgbWFuYWdlci5hY3RpdmVJdGVtSW5kZXggIT09IHByZXZpb3VzRm9jdXNJbmRleFxuICAgICkge1xuICAgICAgdGhpcy5fdG9nZ2xlRm9jdXNlZE9wdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBSZXBvcnRzIGEgdmFsdWUgY2hhbmdlIHRvIHRoZSBDb250cm9sVmFsdWVBY2Nlc3NvciAqL1xuICBfcmVwb3J0VmFsdWVDaGFuZ2UoKSB7XG4gICAgLy8gU3RvcCByZXBvcnRpbmcgdmFsdWUgY2hhbmdlcyBhZnRlciB0aGUgbGlzdCBoYXMgYmVlbiBkZXN0cm95ZWQuIFRoaXMgYXZvaWRzXG4gICAgLy8gY2FzZXMgd2hlcmUgdGhlIGxpc3QgbWlnaHQgd3JvbmdseSByZXNldCBpdHMgdmFsdWUgb25jZSBpdCBpcyByZW1vdmVkLCBidXRcbiAgICAvLyB0aGUgZm9ybSBjb250cm9sIGlzIHN0aWxsIGxpdmUuXG4gICAgaWYgKHRoaXMub3B0aW9ucyAmJiAhdGhpcy5faXNEZXN0cm95ZWQpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5fZ2V0U2VsZWN0ZWRPcHRpb25WYWx1ZXMoKTtcbiAgICAgIHRoaXMuX29uQ2hhbmdlKHZhbHVlKTtcbiAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgLyoqIEVtaXRzIGEgY2hhbmdlIGV2ZW50IGlmIHRoZSBzZWxlY3RlZCBzdGF0ZSBvZiBhbiBvcHRpb24gY2hhbmdlZC4gKi9cbiAgX2VtaXRDaGFuZ2VFdmVudChvcHRpb25zOiBNYXRMZWdhY3lMaXN0T3B0aW9uW10pIHtcbiAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KG5ldyBNYXRMZWdhY3lTZWxlY3Rpb25MaXN0Q2hhbmdlKHRoaXMsIG9wdGlvbnMpKTtcbiAgfVxuXG4gIC8qKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLiAqL1xuICB3cml0ZVZhbHVlKHZhbHVlczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlcztcblxuICAgIGlmICh0aGlzLm9wdGlvbnMpIHtcbiAgICAgIHRoaXMuX3NldE9wdGlvbnNGcm9tVmFsdWVzKHZhbHVlcyB8fCBbXSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEltcGxlbWVudGVkIGFzIGEgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci4gKi9cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICAvKiogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci4gKi9cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLl9vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgLyoqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuICovXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5fb25Ub3VjaGVkID0gZm47XG4gIH1cblxuICAvKiogU2V0cyB0aGUgc2VsZWN0ZWQgb3B0aW9ucyBiYXNlZCBvbiB0aGUgc3BlY2lmaWVkIHZhbHVlcy4gKi9cbiAgcHJpdmF0ZSBfc2V0T3B0aW9uc0Zyb21WYWx1ZXModmFsdWVzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMub3B0aW9ucy5mb3JFYWNoKG9wdGlvbiA9PiBvcHRpb24uX3NldFNlbGVjdGVkKGZhbHNlKSk7XG5cbiAgICB2YWx1ZXMuZm9yRWFjaCh2YWx1ZSA9PiB7XG4gICAgICBjb25zdCBjb3JyZXNwb25kaW5nT3B0aW9uID0gdGhpcy5vcHRpb25zLmZpbmQob3B0aW9uID0+IHtcbiAgICAgICAgLy8gU2tpcCBvcHRpb25zIHRoYXQgYXJlIGFscmVhZHkgaW4gdGhlIG1vZGVsLiBUaGlzIGFsbG93cyB1cyB0byBoYW5kbGUgY2FzZXNcbiAgICAgICAgLy8gd2hlcmUgdGhlIHNhbWUgcHJpbWl0aXZlIHZhbHVlIGlzIHNlbGVjdGVkIG11bHRpcGxlIHRpbWVzLlxuICAgICAgICByZXR1cm4gb3B0aW9uLnNlbGVjdGVkID8gZmFsc2UgOiB0aGlzLmNvbXBhcmVXaXRoKG9wdGlvbi52YWx1ZSwgdmFsdWUpO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChjb3JyZXNwb25kaW5nT3B0aW9uKSB7XG4gICAgICAgIGNvcnJlc3BvbmRpbmdPcHRpb24uX3NldFNlbGVjdGVkKHRydWUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqIFJldHVybnMgdGhlIHZhbHVlcyBvZiB0aGUgc2VsZWN0ZWQgb3B0aW9ucy4gKi9cbiAgcHJpdmF0ZSBfZ2V0U2VsZWN0ZWRPcHRpb25WYWx1ZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZmlsdGVyKG9wdGlvbiA9PiBvcHRpb24uc2VsZWN0ZWQpLm1hcChvcHRpb24gPT4gb3B0aW9uLnZhbHVlKTtcbiAgfVxuXG4gIC8qKiBUb2dnbGVzIHRoZSBzdGF0ZSBvZiB0aGUgY3VycmVudGx5IGZvY3VzZWQgb3B0aW9uIGlmIGVuYWJsZWQuICovXG4gIHByaXZhdGUgX3RvZ2dsZUZvY3VzZWRPcHRpb24oKTogdm9pZCB7XG4gICAgbGV0IGZvY3VzZWRJbmRleCA9IHRoaXMuX2tleU1hbmFnZXIuYWN0aXZlSXRlbUluZGV4O1xuXG4gICAgaWYgKGZvY3VzZWRJbmRleCAhPSBudWxsICYmIHRoaXMuX2lzVmFsaWRJbmRleChmb2N1c2VkSW5kZXgpKSB7XG4gICAgICBsZXQgZm9jdXNlZE9wdGlvbjogTWF0TGVnYWN5TGlzdE9wdGlvbiA9IHRoaXMub3B0aW9ucy50b0FycmF5KClbZm9jdXNlZEluZGV4XTtcblxuICAgICAgaWYgKGZvY3VzZWRPcHRpb24gJiYgIWZvY3VzZWRPcHRpb24uZGlzYWJsZWQgJiYgKHRoaXMuX211bHRpcGxlIHx8ICFmb2N1c2VkT3B0aW9uLnNlbGVjdGVkKSkge1xuICAgICAgICBmb2N1c2VkT3B0aW9uLnRvZ2dsZSgpO1xuXG4gICAgICAgIC8vIEVtaXQgYSBjaGFuZ2UgZXZlbnQgYmVjYXVzZSB0aGUgZm9jdXNlZCBvcHRpb24gY2hhbmdlZCBpdHMgc3RhdGUgdGhyb3VnaCB1c2VyXG4gICAgICAgIC8vIGludGVyYWN0aW9uLlxuICAgICAgICB0aGlzLl9lbWl0Q2hhbmdlRXZlbnQoW2ZvY3VzZWRPcHRpb25dKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgc2VsZWN0ZWQgc3RhdGUgb24gYWxsIG9mIHRoZSBvcHRpb25zXG4gICAqIGFuZCBlbWl0cyBhbiBldmVudCBpZiBhbnl0aGluZyBjaGFuZ2VkLlxuICAgKi9cbiAgcHJpdmF0ZSBfc2V0QWxsT3B0aW9uc1NlbGVjdGVkKFxuICAgIGlzU2VsZWN0ZWQ6IGJvb2xlYW4sXG4gICAgc2tpcERpc2FibGVkPzogYm9vbGVhbixcbiAgICBpc1VzZXJJbnB1dD86IGJvb2xlYW4sXG4gICk6IE1hdExlZ2FjeUxpc3RPcHRpb25bXSB7XG4gICAgLy8gS2VlcCB0cmFjayBvZiB3aGV0aGVyIGFueXRoaW5nIGNoYW5nZWQsIGJlY2F1c2Ugd2Ugb25seSB3YW50IHRvXG4gICAgLy8gZW1pdCB0aGUgY2hhbmdlZCBldmVudCB3aGVuIHNvbWV0aGluZyBhY3R1YWxseSBjaGFuZ2VkLlxuICAgIGNvbnN0IGNoYW5nZWRPcHRpb25zOiBNYXRMZWdhY3lMaXN0T3B0aW9uW10gPSBbXTtcblxuICAgIHRoaXMub3B0aW9ucy5mb3JFYWNoKG9wdGlvbiA9PiB7XG4gICAgICBpZiAoKCFza2lwRGlzYWJsZWQgfHwgIW9wdGlvbi5kaXNhYmxlZCkgJiYgb3B0aW9uLl9zZXRTZWxlY3RlZChpc1NlbGVjdGVkKSkge1xuICAgICAgICBjaGFuZ2VkT3B0aW9ucy5wdXNoKG9wdGlvbik7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoY2hhbmdlZE9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICB0aGlzLl9yZXBvcnRWYWx1ZUNoYW5nZSgpO1xuXG4gICAgICBpZiAoaXNVc2VySW5wdXQpIHtcbiAgICAgICAgdGhpcy5fZW1pdENoYW5nZUV2ZW50KGNoYW5nZWRPcHRpb25zKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY2hhbmdlZE9wdGlvbnM7XG4gIH1cblxuICAvKipcbiAgICogVXRpbGl0eSB0byBlbnN1cmUgYWxsIGluZGV4ZXMgYXJlIHZhbGlkLlxuICAgKiBAcGFyYW0gaW5kZXggVGhlIGluZGV4IHRvIGJlIGNoZWNrZWQuXG4gICAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGluZGV4IGlzIHZhbGlkIGZvciBvdXIgbGlzdCBvZiBvcHRpb25zLlxuICAgKi9cbiAgcHJpdmF0ZSBfaXNWYWxpZEluZGV4KGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaW5kZXggPj0gMCAmJiBpbmRleCA8IHRoaXMub3B0aW9ucy5sZW5ndGg7XG4gIH1cblxuICAvKiogUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIHNwZWNpZmllZCBsaXN0IG9wdGlvbi4gKi9cbiAgcHJpdmF0ZSBfZ2V0T3B0aW9uSW5kZXgob3B0aW9uOiBNYXRMZWdhY3lMaXN0T3B0aW9uKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnRvQXJyYXkoKS5pbmRleE9mKG9wdGlvbik7XG4gIH1cblxuICAvKiogTWFya3MgYWxsIHRoZSBvcHRpb25zIHRvIGJlIGNoZWNrZWQgaW4gdGhlIG5leHQgY2hhbmdlIGRldGVjdGlvbiBydW4uICovXG4gIHByaXZhdGUgX21hcmtPcHRpb25zRm9yQ2hlY2soKSB7XG4gICAgaWYgKHRoaXMub3B0aW9ucykge1xuICAgICAgdGhpcy5vcHRpb25zLmZvckVhY2gob3B0aW9uID0+IG9wdGlvbi5fbWFya0ZvckNoZWNrKCkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIHRoZSB0YWJpbmRleCBmcm9tIHRoZSBzZWxlY3Rpb24gbGlzdCBhbmQgcmVzZXRzIGl0IGJhY2sgYWZ0ZXJ3YXJkcywgYWxsb3dpbmcgdGhlIHVzZXJcbiAgICogdG8gdGFiIG91dCBvZiBpdC4gVGhpcyBwcmV2ZW50cyB0aGUgbGlzdCBmcm9tIGNhcHR1cmluZyBmb2N1cyBhbmQgcmVkaXJlY3RpbmcgaXQgYmFjayB3aXRoaW5cbiAgICogdGhlIGxpc3QsIGNyZWF0aW5nIGEgZm9jdXMgdHJhcCBpZiBpdCB1c2VyIHRyaWVzIHRvIHRhYiBhd2F5LlxuICAgKi9cbiAgcHJpdmF0ZSBfYWxsb3dGb2N1c0VzY2FwZSgpIHtcbiAgICB0aGlzLl90YWJJbmRleCA9IC0xO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLl90YWJJbmRleCA9IDA7XG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBVcGRhdGVzIHRoZSB0YWJpbmRleCBiYXNlZCB1cG9uIGlmIHRoZSBzZWxlY3Rpb24gbGlzdCBpcyBlbXB0eS4gKi9cbiAgcHJpdmF0ZSBfdXBkYXRlVGFiSW5kZXgoKTogdm9pZCB7XG4gICAgdGhpcy5fdGFiSW5kZXggPSB0aGlzLm9wdGlvbnMubGVuZ3RoID09PSAwID8gLTEgOiAwO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibWF0LWxpc3QtaXRlbS1jb250ZW50XCJcbiAgW2NsYXNzLm1hdC1saXN0LWl0ZW0tY29udGVudC1yZXZlcnNlXT1cImNoZWNrYm94UG9zaXRpb24gPT0gJ2FmdGVyJ1wiPlxuXG4gIDxkaXYgbWF0LXJpcHBsZVxuICAgIGNsYXNzPVwibWF0LWxpc3QtaXRlbS1yaXBwbGVcIlxuICAgIFttYXRSaXBwbGVUcmlnZ2VyXT1cIl9nZXRIb3N0RWxlbWVudCgpXCJcbiAgICBbbWF0UmlwcGxlRGlzYWJsZWRdPVwiX2lzUmlwcGxlRGlzYWJsZWQoKVwiPjwvZGl2PlxuXG4gIDxtYXQtcHNldWRvLWNoZWNrYm94XG4gICAgKm5nSWY9XCJzZWxlY3Rpb25MaXN0Lm11bHRpcGxlXCJcbiAgICBbc3RhdGVdPVwic2VsZWN0ZWQgPyAnY2hlY2tlZCcgOiAndW5jaGVja2VkJ1wiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCI+PC9tYXQtcHNldWRvLWNoZWNrYm94PlxuXG4gIDxkaXYgY2xhc3M9XCJtYXQtbGlzdC10ZXh0XCIgI3RleHQ+PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PjwvZGl2PlxuXG4gIDxuZy1jb250ZW50IHNlbGVjdD1cIlttYXQtbGlzdC1hdmF0YXJdLCBbbWF0LWxpc3QtaWNvbl0sIFttYXRMaXN0QXZhdGFyXSwgW21hdExpc3RJY29uXVwiPlxuICA8L25nLWNvbnRlbnQ+XG5cbjwvZGl2PlxuIl19
|