@angular/material 13.0.0-next.4 → 13.0.0-next.8
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/autocomplete/autocomplete-module.d.ts +11 -7
- package/autocomplete/autocomplete-origin.d.ts +5 -0
- package/autocomplete/autocomplete-trigger.d.ts +5 -0
- package/autocomplete/autocomplete.d.ts +6 -1
- package/autocomplete/package.json +5 -5
- package/autocomplete/testing/package.json +5 -5
- package/badge/badge-module.d.ts +7 -7
- package/badge/badge.d.ts +19 -15
- package/badge/package.json +5 -5
- package/badge/testing/package.json +5 -5
- package/bottom-sheet/bottom-sheet-container.d.ts +6 -3
- package/bottom-sheet/bottom-sheet-module.d.ts +8 -7
- package/bottom-sheet/bottom-sheet.d.ts +3 -7
- package/bottom-sheet/package.json +5 -5
- package/bottom-sheet/testing/package.json +5 -5
- package/button/button-module.d.ts +6 -7
- package/button/button.d.ts +6 -1
- package/button/package.json +5 -5
- package/button/testing/package.json +5 -5
- package/button-toggle/button-toggle-module.d.ts +6 -7
- package/button-toggle/button-toggle.d.ts +6 -1
- package/button-toggle/package.json +5 -5
- package/button-toggle/testing/package.json +5 -5
- package/card/card-module.d.ts +6 -7
- package/card/card.d.ts +29 -7
- package/card/package.json +5 -5
- package/card/testing/package.json +5 -5
- package/checkbox/checkbox-module.d.ts +11 -7
- package/checkbox/checkbox-required-validator.d.ts +3 -0
- package/checkbox/checkbox.d.ts +4 -1
- package/checkbox/package.json +5 -5
- package/checkbox/testing/package.json +5 -5
- package/chips/chip-input.d.ts +3 -0
- package/chips/chip-list.d.ts +4 -1
- package/chips/chip.d.ts +10 -1
- package/chips/chips-module.d.ts +8 -7
- package/chips/package.json +5 -5
- package/chips/testing/package.json +5 -5
- package/core/common-behaviors/color.d.ts +2 -6
- package/core/common-behaviors/common-module.d.ts +5 -4
- package/core/common-behaviors/disable-ripple.d.ts +2 -6
- package/core/common-behaviors/disabled.d.ts +2 -6
- package/core/common-behaviors/error-state.d.ts +2 -6
- package/core/common-behaviors/index.d.ts +7 -6
- package/core/common-behaviors/initialized.d.ts +2 -6
- package/core/common-behaviors/tabindex.d.ts +2 -6
- package/core/datetime/index.d.ts +8 -7
- package/core/datetime/native-date-adapter.d.ts +3 -0
- package/core/error/error-options.d.ts +5 -7
- package/core/index.d.ts +0 -1
- package/core/line/line.d.ts +7 -0
- package/core/option/index.d.ts +10 -7
- package/core/option/optgroup.d.ts +6 -1
- package/core/option/option.d.ts +5 -0
- package/core/package.json +5 -5
- package/core/ripple/index.d.ts +7 -7
- package/core/ripple/ripple.d.ts +3 -0
- package/core/selection/index.d.ts +6 -7
- package/core/selection/pseudo-checkbox/pseudo-checkbox.d.ts +3 -7
- package/core/testing/package.json +5 -5
- package/core/typography/_typography.scss +7 -2
- package/datepicker/_datepicker-theme.scss +1 -4
- package/datepicker/calendar-body.d.ts +3 -0
- package/datepicker/calendar.d.ts +5 -0
- package/datepicker/date-range-input-parts.d.ts +8 -1
- package/datepicker/date-range-input.d.ts +3 -0
- package/datepicker/date-range-picker.d.ts +3 -7
- package/datepicker/date-range-selection-strategy.d.ts +3 -0
- package/datepicker/date-selection-model.d.ts +7 -0
- package/datepicker/datepicker-actions.d.ts +7 -0
- package/datepicker/datepicker-base.d.ts +7 -12
- package/datepicker/datepicker-input-base.d.ts +3 -0
- package/datepicker/datepicker-input.d.ts +3 -0
- package/datepicker/datepicker-intl.d.ts +3 -7
- package/datepicker/datepicker-module.d.ts +24 -7
- package/datepicker/datepicker-toggle.d.ts +5 -0
- package/datepicker/datepicker.d.ts +3 -7
- package/datepicker/index.d.ts +0 -4
- package/datepicker/month-view.d.ts +3 -7
- package/datepicker/multi-year-view.d.ts +3 -7
- package/datepicker/package.json +5 -5
- package/datepicker/testing/package.json +5 -5
- package/datepicker/year-view.d.ts +3 -7
- package/dialog/dialog-container.d.ts +5 -0
- package/dialog/dialog-content-directives.d.ts +9 -0
- package/dialog/dialog-module.d.ts +9 -7
- package/dialog/dialog.d.ts +5 -7
- package/dialog/package.json +5 -5
- package/dialog/testing/dialog-harness.d.ts +14 -11
- package/dialog/testing/package.json +5 -5
- package/divider/divider-module.d.ts +6 -7
- package/divider/divider.d.ts +3 -7
- package/divider/package.json +5 -5
- package/divider/testing/package.json +5 -5
- package/esm2020/autocomplete/autocomplete-module.mjs +58 -0
- package/esm2020/autocomplete/autocomplete-origin.mjs +38 -0
- package/esm2020/autocomplete/autocomplete-trigger.mjs +651 -0
- package/esm2020/autocomplete/autocomplete.mjs +216 -0
- package/{esm2015/autocomplete/index.js → esm2020/autocomplete/index.mjs} +0 -0
- package/{esm2015/autocomplete/public-api.js → esm2020/autocomplete/public-api.mjs} +0 -0
- package/{esm2015/autocomplete/testing/autocomplete-harness-filters.js → esm2020/autocomplete/testing/autocomplete-harness-filters.mjs} +0 -0
- package/esm2020/autocomplete/testing/autocomplete-harness.mjs +101 -0
- package/{esm2015/autocomplete/testing/index.js → esm2020/autocomplete/testing/index.mjs} +0 -0
- package/{esm2015/autocomplete/testing/public-api.js → esm2020/autocomplete/testing/public-api.mjs} +0 -0
- package/esm2020/badge/badge-module.mjs +33 -0
- package/esm2020/badge/badge.mjs +228 -0
- package/{esm2015/badge/index.js → esm2020/badge/index.mjs} +0 -0
- package/{esm2015/badge/public-api.js → esm2020/badge/public-api.mjs} +0 -0
- package/{esm2015/badge/testing/badge-harness-filters.js → esm2020/badge/testing/badge-harness-filters.mjs} +0 -0
- package/esm2020/badge/testing/badge-harness.mjs +72 -0
- package/{esm2015/badge/testing/index.js → esm2020/badge/testing/index.mjs} +0 -0
- package/{esm2015/badge/testing/public-api.js → esm2020/badge/testing/public-api.mjs} +0 -0
- package/{esm2015/bottom-sheet/bottom-sheet-animations.js → esm2020/bottom-sheet/bottom-sheet-animations.mjs} +0 -0
- package/{esm2015/bottom-sheet/bottom-sheet-config.js → esm2020/bottom-sheet/bottom-sheet-config.mjs} +0 -0
- package/esm2020/bottom-sheet/bottom-sheet-container.mjs +230 -0
- package/esm2020/bottom-sheet/bottom-sheet-module.mjs +38 -0
- package/esm2020/bottom-sheet/bottom-sheet-ref.mjs +91 -0
- package/esm2020/bottom-sheet/bottom-sheet.mjs +172 -0
- package/{esm2015/bottom-sheet/index.js → esm2020/bottom-sheet/index.mjs} +0 -0
- package/{esm2015/bottom-sheet/public-api.js → esm2020/bottom-sheet/public-api.mjs} +0 -0
- package/{esm2015/bottom-sheet/testing/bottom-sheet-harness-filters.js → esm2020/bottom-sheet/testing/bottom-sheet-harness-filters.mjs} +0 -0
- package/esm2020/bottom-sheet/testing/bottom-sheet-harness.mjs +35 -0
- package/{esm2015/bottom-sheet/testing/index.js → esm2020/bottom-sheet/testing/index.mjs} +0 -0
- package/{esm2015/bottom-sheet/testing/public-api.js → esm2020/bottom-sheet/testing/public-api.mjs} +0 -0
- package/esm2020/button/button-module.mjs +42 -0
- package/esm2020/button/button.mjs +153 -0
- package/{esm2015/button/index.js → esm2020/button/index.mjs} +0 -0
- package/{esm2015/button/public-api.js → esm2020/button/public-api.mjs} +0 -0
- package/{esm2015/button/testing/button-harness-filters.js → esm2020/button/testing/button-harness-filters.mjs} +0 -0
- package/esm2020/button/testing/button-harness.mjs +51 -0
- package/{esm2015/button/testing/index.js → esm2020/button/testing/index.mjs} +0 -0
- package/{esm2015/button/testing/public-api.js → esm2020/button/testing/public-api.mjs} +0 -0
- package/esm2020/button-toggle/button-toggle-module.mjs +25 -0
- package/esm2020/button-toggle/button-toggle.mjs +470 -0
- package/{esm2015/button-toggle/index.js → esm2020/button-toggle/index.mjs} +0 -0
- package/{esm2015/button-toggle/public-api.js → esm2020/button-toggle/public-api.mjs} +0 -0
- package/{esm2015/button-toggle/testing/button-toggle-group-harness-filters.js → esm2020/button-toggle/testing/button-toggle-group-harness-filters.mjs} +0 -0
- package/esm2020/button-toggle/testing/button-toggle-group-harness.mjs +45 -0
- package/{esm2015/button-toggle/testing/button-toggle-harness-filters.js → esm2020/button-toggle/testing/button-toggle-harness-filters.mjs} +0 -0
- package/esm2020/button-toggle/testing/button-toggle-harness.mjs +98 -0
- package/{esm2015/button-toggle/testing/index.js → esm2020/button-toggle/testing/index.mjs} +0 -0
- package/{esm2015/button-toggle/testing/public-api.js → esm2020/button-toggle/testing/public-api.mjs} +0 -0
- package/esm2020/card/card-module.mjs +61 -0
- package/esm2020/card/card.mjs +247 -0
- package/{esm2015/card/index.js → esm2020/card/index.mjs} +0 -0
- package/{esm2015/card/public-api.js → esm2020/card/public-api.mjs} +0 -0
- package/{esm2015/card/testing/card-harness-filters.js → esm2020/card/testing/card-harness-filters.mjs} +0 -0
- package/esm2020/card/testing/card-harness.mjs +43 -0
- package/{esm2015/card/testing/index.js → esm2020/card/testing/index.mjs} +0 -0
- package/{esm2015/card/testing/public-api.js → esm2020/card/testing/public-api.mjs} +0 -0
- package/{esm2015/checkbox/checkbox-config.js → esm2020/checkbox/checkbox-config.mjs} +0 -0
- package/esm2020/checkbox/checkbox-module.mjs +46 -0
- package/esm2020/checkbox/checkbox-required-validator.mjs +33 -0
- package/esm2020/checkbox/checkbox.mjs +403 -0
- package/{esm2015/checkbox/index.js → esm2020/checkbox/index.mjs} +0 -0
- package/{esm2015/checkbox/public-api.js → esm2020/checkbox/public-api.mjs} +0 -0
- package/{esm2015/checkbox/testing/checkbox-harness-filters.js → esm2020/checkbox/testing/checkbox-harness-filters.mjs} +0 -0
- package/esm2020/checkbox/testing/checkbox-harness.mjs +123 -0
- package/{esm2015/checkbox/testing/index.js → esm2020/checkbox/testing/index.mjs} +0 -0
- package/{esm2015/checkbox/testing/public-api.js → esm2020/checkbox/testing/public-api.mjs} +0 -0
- package/{esm2015/chips/chip-default-options.js → esm2020/chips/chip-default-options.mjs} +0 -0
- package/esm2020/chips/chip-input.mjs +192 -0
- package/esm2020/chips/chip-list.mjs +673 -0
- package/{esm2015/chips/chip-text-control.js → esm2020/chips/chip-text-control.mjs} +0 -0
- package/esm2020/chips/chip.mjs +415 -0
- package/esm2020/chips/chips-module.mjs +64 -0
- package/{esm2015/chips/index.js → esm2020/chips/index.mjs} +0 -0
- package/{esm2015/chips/public-api.js → esm2020/chips/public-api.mjs} +0 -0
- package/{esm2015/chips/testing/chip-avatar-harness.js → esm2020/chips/testing/chip-avatar-harness.mjs} +0 -0
- package/{esm2015/chips/testing/chip-harness-filters.js → esm2020/chips/testing/chip-harness-filters.mjs} +0 -0
- package/esm2020/chips/testing/chip-harness.mjs +91 -0
- package/esm2020/chips/testing/chip-input-harness.mjs +82 -0
- package/esm2020/chips/testing/chip-list-harness.mjs +82 -0
- package/esm2020/chips/testing/chip-listbox-harness.mjs +44 -0
- package/esm2020/chips/testing/chip-option-harness.mjs +45 -0
- package/esm2020/chips/testing/chip-remove-harness.mjs +26 -0
- package/{esm2015/chips/testing/index.js → esm2020/chips/testing/index.mjs} +0 -0
- package/{esm2015/chips/testing/public-api.js → esm2020/chips/testing/public-api.mjs} +0 -0
- package/{esm2015/core/animation/animation.js → esm2020/core/animation/animation.mjs} +0 -0
- package/esm2020/core/common-behaviors/color.mjs +31 -0
- package/esm2020/core/common-behaviors/common-module.mjs +122 -0
- package/{esm2015/core/common-behaviors/constructor.js → esm2020/core/common-behaviors/constructor.mjs} +0 -0
- package/esm2020/core/common-behaviors/disable-ripple.mjs +20 -0
- package/esm2020/core/common-behaviors/disabled.mjs +19 -0
- package/esm2020/core/common-behaviors/error-state.mjs +36 -0
- package/esm2020/core/common-behaviors/index.mjs +15 -0
- package/esm2020/core/common-behaviors/initialized.mjs +58 -0
- package/esm2020/core/common-behaviors/tabindex.mjs +23 -0
- package/{esm2015/core/datetime/date-adapter.js → esm2020/core/datetime/date-adapter.mjs} +0 -0
- package/{esm2015/core/datetime/date-formats.js → esm2020/core/datetime/date-formats.mjs} +0 -0
- package/esm2020/core/datetime/index.mjs +47 -0
- package/esm2020/core/datetime/native-date-adapter.mjs +218 -0
- package/{esm2015/core/datetime/native-date-formats.js → esm2020/core/datetime/native-date-formats.mjs} +0 -0
- package/esm2020/core/error/error-options.mjs +33 -0
- package/esm2020/core/index.mjs +5 -0
- package/esm2020/core/line/line.mjs +64 -0
- package/esm2020/core/option/index.mjs +32 -0
- package/esm2020/core/option/optgroup.mjs +73 -0
- package/{esm2015/core/option/option-parent.js → esm2020/core/option/option-parent.mjs} +0 -0
- package/esm2020/core/option/option.mjs +276 -0
- package/{esm2015/core/public-api.js → esm2020/core/public-api.mjs} +0 -0
- package/esm2020/core/ripple/index.mjs +29 -0
- package/{esm2015/core/ripple/ripple-ref.js → esm2020/core/ripple/ripple-ref.mjs} +0 -0
- package/esm2020/core/ripple/ripple-renderer.mjs +261 -0
- package/esm2020/core/ripple/ripple.mjs +152 -0
- package/esm2020/core/selection/index.mjs +26 -0
- package/esm2020/core/selection/pseudo-checkbox/pseudo-checkbox.mjs +54 -0
- package/{esm2015/core/testing/index.js → esm2020/core/testing/index.mjs} +0 -0
- package/{esm2015/core/testing/optgroup-harness-filters.js → esm2020/core/testing/optgroup-harness-filters.mjs} +0 -0
- package/esm2020/core/testing/optgroup-harness.mjs +44 -0
- package/{esm2015/core/testing/option-harness-filters.js → esm2020/core/testing/option-harness-filters.mjs} +0 -0
- package/esm2020/core/testing/option-harness.mjs +54 -0
- package/{esm2015/core/testing/public-api.js → esm2020/core/testing/public-api.mjs} +0 -0
- package/esm2020/core/version.mjs +11 -0
- package/esm2020/datepicker/calendar-body.mjs +298 -0
- package/esm2020/datepicker/calendar.mjs +354 -0
- package/esm2020/datepicker/date-range-input-parts.mjs +342 -0
- package/esm2020/datepicker/date-range-input.mjs +331 -0
- package/esm2020/datepicker/date-range-picker.mjs +48 -0
- package/esm2020/datepicker/date-range-selection-strategy.mjs +59 -0
- package/esm2020/datepicker/date-selection-model.mjs +187 -0
- package/esm2020/datepicker/datepicker-actions.mjs +89 -0
- package/{esm2015/datepicker/datepicker-animations.js → esm2020/datepicker/datepicker-animations.mjs} +0 -0
- package/esm2020/datepicker/datepicker-base.mjs +549 -0
- package/{esm2015/datepicker/datepicker-errors.js → esm2020/datepicker/datepicker-errors.mjs} +0 -0
- package/esm2020/datepicker/datepicker-input-base.mjs +298 -0
- package/esm2020/datepicker/datepicker-input.mjs +183 -0
- package/esm2020/datepicker/datepicker-intl.mjs +53 -0
- package/esm2020/datepicker/datepicker-module.mjs +148 -0
- package/esm2020/datepicker/datepicker-toggle.mjs +113 -0
- package/esm2020/datepicker/datepicker.mjs +37 -0
- package/esm2020/datepicker/index.mjs +5 -0
- package/esm2020/datepicker/month-view.mjs +364 -0
- package/esm2020/datepicker/multi-year-view.mjs +289 -0
- package/{esm2015/datepicker/public-api.js → esm2020/datepicker/public-api.mjs} +0 -0
- package/esm2020/datepicker/testing/calendar-cell-harness.mjs +138 -0
- package/esm2020/datepicker/testing/calendar-harness.mjs +76 -0
- package/esm2020/datepicker/testing/date-range-input-harness.mjs +99 -0
- package/{esm2015/datepicker/testing/datepicker-harness-filters.js → esm2020/datepicker/testing/datepicker-harness-filters.mjs} +0 -0
- package/esm2020/datepicker/testing/datepicker-input-harness-base.mjs +81 -0
- package/esm2020/datepicker/testing/datepicker-input-harness.mjs +58 -0
- package/esm2020/datepicker/testing/datepicker-toggle-harness.mjs +41 -0
- package/esm2020/datepicker/testing/datepicker-trigger-harness-base.mjs +65 -0
- package/{esm2015/datepicker/testing/index.js → esm2020/datepicker/testing/index.mjs} +0 -0
- package/{esm2015/datepicker/testing/public-api.js → esm2020/datepicker/testing/public-api.mjs} +0 -0
- package/esm2020/datepicker/year-view.mjs +281 -0
- package/{esm2015/dialog/dialog-animations.js → esm2020/dialog/dialog-animations.mjs} +0 -0
- package/{esm2015/dialog/dialog-config.js → esm2020/dialog/dialog-config.mjs} +0 -0
- package/esm2020/dialog/dialog-container.mjs +282 -0
- package/esm2020/dialog/dialog-content-directives.mjs +172 -0
- package/esm2020/dialog/dialog-module.mjs +69 -0
- package/esm2020/dialog/dialog-ref.mjs +196 -0
- package/esm2020/dialog/dialog.mjs +358 -0
- package/{esm2015/dialog/index.js → esm2020/dialog/index.mjs} +0 -0
- package/{esm2015/dialog/public-api.js → esm2020/dialog/public-api.mjs} +0 -0
- package/{esm2015/dialog/testing/dialog-harness-filters.js → esm2020/dialog/testing/dialog-harness-filters.mjs} +0 -0
- package/esm2020/dialog/testing/dialog-harness.mjs +83 -0
- package/{esm2015/dialog/testing/index.js → esm2020/dialog/testing/index.mjs} +0 -0
- package/{esm2015/dialog/testing/public-api.js → esm2020/dialog/testing/public-api.mjs} +0 -0
- package/esm2020/divider/divider-module.mjs +25 -0
- package/esm2020/divider/divider.mjs +40 -0
- package/{esm2015/divider/index.js → esm2020/divider/index.mjs} +0 -0
- package/{esm2015/divider/public-api.js → esm2020/divider/public-api.mjs} +0 -0
- package/{esm2015/divider/testing/divider-harness-filters.js → esm2020/divider/testing/divider-harness-filters.mjs} +0 -0
- package/esm2020/divider/testing/divider-harness.mjs +22 -0
- package/{esm2015/divider/testing/index.js → esm2020/divider/testing/index.mjs} +0 -0
- package/{esm2015/divider/testing/public-api.js → esm2020/divider/testing/public-api.mjs} +0 -0
- package/{esm2015/expansion/accordion-base.js → esm2020/expansion/accordion-base.mjs} +0 -0
- package/esm2020/expansion/accordion.mjs +93 -0
- package/{esm2015/expansion/expansion-animations.js → esm2020/expansion/expansion-animations.mjs} +0 -0
- package/esm2020/expansion/expansion-module.mjs +59 -0
- package/esm2020/expansion/expansion-panel-content.mjs +27 -0
- package/esm2020/expansion/expansion-panel-header.mjs +226 -0
- package/esm2020/expansion/expansion-panel.mjs +195 -0
- package/{esm2015/expansion/index.js → esm2020/expansion/index.mjs} +0 -0
- package/{esm2015/expansion/public-api.js → esm2020/expansion/public-api.mjs} +0 -0
- package/esm2020/expansion/testing/accordion-harness.mjs +31 -0
- package/{esm2015/expansion/testing/expansion-harness-filters.js → esm2020/expansion/testing/expansion-harness-filters.mjs} +0 -0
- package/esm2020/expansion/testing/expansion-harness.mjs +120 -0
- package/{esm2015/expansion/testing/index.js → esm2020/expansion/testing/index.mjs} +0 -0
- package/{esm2015/expansion/testing/public-api.js → esm2020/expansion/testing/public-api.mjs} +0 -0
- package/esm2020/form-field/error.mjs +47 -0
- package/{esm2015/form-field/form-field-animations.js → esm2020/form-field/form-field-animations.mjs} +0 -0
- package/esm2020/form-field/form-field-control.mjs +11 -0
- package/{esm2015/form-field/form-field-errors.js → esm2020/form-field/form-field-errors.mjs} +0 -0
- package/esm2020/form-field/form-field-module.mjs +73 -0
- package/esm2020/form-field/form-field.mjs +510 -0
- package/esm2020/form-field/hint.mjs +49 -0
- package/{esm2015/form-field/index.js → esm2020/form-field/index.mjs} +0 -0
- package/esm2020/form-field/label.mjs +21 -0
- package/esm2020/form-field/placeholder.mjs +26 -0
- package/esm2020/form-field/prefix.mjs +28 -0
- package/{esm2015/form-field/public-api.js → esm2020/form-field/public-api.mjs} +0 -0
- package/esm2020/form-field/suffix.mjs +28 -0
- package/{esm2015/form-field/testing/control/form-field-control-harness.js → esm2020/form-field/testing/control/form-field-control-harness.mjs} +0 -0
- package/{esm2015/form-field/testing/control/index.js → esm2020/form-field/testing/control/index.mjs} +0 -0
- package/{esm2015/form-field/testing/form-field-harness-filters.js → esm2020/form-field/testing/form-field-harness-filters.mjs} +0 -0
- package/esm2020/form-field/testing/form-field-harness.mjs +181 -0
- package/{esm2015/form-field/testing/index.js → esm2020/form-field/testing/index.mjs} +0 -0
- package/{esm2015/form-field/testing/public-api.js → esm2020/form-field/testing/public-api.mjs} +0 -0
- package/{esm2015/grid-list/grid-list-base.js → esm2020/grid-list/grid-list-base.mjs} +0 -0
- package/esm2020/grid-list/grid-list-module.mjs +55 -0
- package/esm2020/grid-list/grid-list.mjs +135 -0
- package/esm2020/grid-list/grid-tile.mjs +117 -0
- package/esm2020/grid-list/index.mjs +5 -0
- package/{esm2015/grid-list/public-api.js → esm2020/grid-list/public-api.mjs} +0 -0
- package/{esm2015/grid-list/testing/grid-list-harness-filters.js → esm2020/grid-list/testing/grid-list-harness-filters.mjs} +0 -0
- package/esm2020/grid-list/testing/grid-list-harness.mjs +72 -0
- package/esm2020/grid-list/testing/grid-tile-harness.mjs +65 -0
- package/{esm2015/grid-list/testing/index.js → esm2020/grid-list/testing/index.mjs} +0 -0
- package/{esm2015/grid-list/testing/public-api.js → esm2020/grid-list/testing/public-api.mjs} +0 -0
- package/{esm2015/grid-list/tile-coordinator.js → esm2020/grid-list/tile-coordinator.mjs} +0 -0
- package/{esm2015/grid-list/tile-styler.js → esm2020/grid-list/tile-styler.mjs} +0 -0
- package/{esm2015/icon/fake-svgs.js → esm2020/icon/fake-svgs.mjs} +0 -0
- package/esm2020/icon/icon-module.mjs +25 -0
- package/esm2020/icon/icon-registry.mjs +582 -0
- package/esm2020/icon/icon.mjs +357 -0
- package/{esm2015/icon/index.js → esm2020/icon/index.mjs} +0 -0
- package/{esm2015/icon/public-api.js → esm2020/icon/public-api.mjs} +0 -0
- package/esm2020/icon/testing/fake-icon-registry.mjs +92 -0
- package/{esm2015/icon/testing/icon-harness-filters.js → esm2020/icon/testing/icon-harness-filters.mjs} +0 -0
- package/esm2020/icon/testing/icon-harness.mjs +54 -0
- package/{esm2015/icon/testing/index.js → esm2020/icon/testing/index.mjs} +0 -0
- package/{esm2015/icon/testing/public-api.js → esm2020/icon/testing/public-api.mjs} +0 -0
- package/esm2020/icon/trusted-types.mjs +43 -0
- package/{esm2015/index.js → esm2020/index.mjs} +0 -0
- package/{esm2015/input/index.js → esm2020/input/index.mjs} +0 -0
- package/{esm2015/input/input-errors.js → esm2020/input/input-errors.mjs} +0 -0
- package/esm2020/input/input-module.mjs +51 -0
- package/{esm2015/input/input-value-accessor.js → esm2020/input/input-value-accessor.mjs} +0 -0
- package/esm2020/input/input.mjs +428 -0
- package/esm2020/input/public-api.mjs +12 -0
- package/{esm2015/input/testing/index.js → esm2020/input/testing/index.mjs} +0 -0
- package/{esm2015/input/testing/input-harness-filters.js → esm2020/input/testing/input-harness-filters.mjs} +0 -0
- package/esm2020/input/testing/input-harness.mjs +113 -0
- package/esm2020/input/testing/native-option-harness.mjs +42 -0
- package/{esm2015/input/testing/native-select-harness-filters.js → esm2020/input/testing/native-select-harness-filters.mjs} +0 -0
- package/esm2020/input/testing/native-select-harness.mjs +79 -0
- package/{esm2015/input/testing/public-api.js → esm2020/input/testing/public-api.mjs} +0 -0
- package/{esm2015/list/index.js → esm2020/list/index.mjs} +0 -0
- package/esm2020/list/list-module.mjs +71 -0
- package/esm2020/list/list.mjs +216 -0
- package/{esm2015/list/public-api.js → esm2020/list/public-api.mjs} +0 -0
- package/esm2020/list/selection-list.mjs +612 -0
- package/esm2020/list/testing/action-list-harness.mjs +59 -0
- package/{esm2015/list/testing/index.js → esm2020/list/testing/index.mjs} +0 -0
- package/esm2020/list/testing/list-harness-base.mjs +88 -0
- package/{esm2015/list/testing/list-harness-filters.js → esm2020/list/testing/list-harness-filters.mjs} +0 -0
- package/{esm2015/list/testing/list-harness.js → esm2020/list/testing/list-harness.mjs} +0 -0
- package/esm2020/list/testing/list-item-harness-base.mjs +72 -0
- package/esm2020/list/testing/nav-list-harness.mjs +64 -0
- package/{esm2015/list/testing/public-api.js → esm2020/list/testing/public-api.mjs} +0 -0
- package/esm2020/list/testing/selection-list-harness.mjs +125 -0
- package/esm2020/menu/index.mjs +5 -0
- package/{esm2015/menu/menu-animations.js → esm2020/menu/menu-animations.mjs} +0 -0
- package/esm2020/menu/menu-content.mjs +97 -0
- package/{esm2015/menu/menu-errors.js → esm2020/menu/menu-errors.mjs} +0 -0
- package/esm2020/menu/menu-item.mjs +164 -0
- package/esm2020/menu/menu-module.mjs +58 -0
- package/{esm2015/menu/menu-panel.js → esm2020/menu/menu-panel.mjs} +0 -0
- package/{esm2015/menu/menu-positions.js → esm2020/menu/menu-positions.mjs} +0 -0
- package/esm2020/menu/menu-trigger.mjs +540 -0
- package/esm2020/menu/menu.mjs +401 -0
- package/esm2020/menu/public-api.mjs +16 -0
- package/{esm2015/menu/testing/index.js → esm2020/menu/testing/index.mjs} +0 -0
- package/{esm2015/menu/testing/menu-harness-filters.js → esm2020/menu/testing/menu-harness-filters.mjs} +0 -0
- package/esm2020/menu/testing/menu-harness.mjs +183 -0
- package/{esm2015/menu/testing/public-api.js → esm2020/menu/testing/public-api.mjs} +0 -0
- package/{esm2015/paginator/index.js → esm2020/paginator/index.mjs} +0 -0
- package/esm2020/paginator/paginator-intl.mjs +64 -0
- package/esm2020/paginator/paginator-module.mjs +47 -0
- package/esm2020/paginator/paginator.mjs +268 -0
- package/{esm2015/paginator/public-api.js → esm2020/paginator/public-api.mjs} +0 -0
- package/{esm2015/paginator/testing/index.js → esm2020/paginator/testing/index.mjs} +0 -0
- package/{esm2015/paginator/testing/paginator-harness-filters.js → esm2020/paginator/testing/paginator-harness-filters.mjs} +0 -0
- package/esm2020/paginator/testing/paginator-harness.mjs +91 -0
- package/{esm2015/paginator/testing/public-api.js → esm2020/paginator/testing/public-api.mjs} +0 -0
- package/{esm2015/progress-bar/index.js → esm2020/progress-bar/index.mjs} +0 -0
- package/esm2020/progress-bar/progress-bar-module.mjs +26 -0
- package/esm2020/progress-bar/progress-bar.mjs +187 -0
- package/{esm2015/progress-bar/public-api.js → esm2020/progress-bar/public-api.mjs} +0 -0
- package/{esm2015/progress-bar/testing/index.js → esm2020/progress-bar/testing/index.mjs} +0 -0
- package/{esm2015/progress-bar/testing/progress-bar-harness-filters.js → esm2020/progress-bar/testing/progress-bar-harness-filters.mjs} +0 -0
- package/esm2020/progress-bar/testing/progress-bar-harness.mjs +34 -0
- package/{esm2015/progress-bar/testing/public-api.js → esm2020/progress-bar/testing/public-api.mjs} +0 -0
- package/{esm2015/progress-spinner/index.js → esm2020/progress-spinner/index.mjs} +0 -0
- package/esm2020/progress-spinner/progress-spinner-module.mjs +36 -0
- package/esm2020/progress-spinner/progress-spinner.mjs +280 -0
- package/{esm2015/progress-spinner/public-api.js → esm2020/progress-spinner/public-api.mjs} +0 -0
- package/{esm2015/progress-spinner/testing/index.js → esm2020/progress-spinner/testing/index.mjs} +0 -0
- package/{esm2015/progress-spinner/testing/progress-spinner-harness-filters.js → esm2020/progress-spinner/testing/progress-spinner-harness-filters.mjs} +0 -0
- package/esm2020/progress-spinner/testing/progress-spinner-harness.mjs +35 -0
- package/{esm2015/progress-spinner/testing/public-api.js → esm2020/progress-spinner/testing/public-api.mjs} +0 -0
- package/{esm2015/radio/index.js → esm2020/radio/index.mjs} +0 -0
- package/{esm2015/radio/public-api.js → esm2020/radio/public-api.mjs} +0 -0
- package/esm2020/radio/radio-module.mjs +25 -0
- package/esm2020/radio/radio.mjs +570 -0
- package/{esm2015/radio/testing/index.js → esm2020/radio/testing/index.mjs} +0 -0
- package/{esm2015/radio/testing/public-api.js → esm2020/radio/testing/public-api.mjs} +0 -0
- package/{esm2015/radio/testing/radio-harness-filters.js → esm2020/radio/testing/radio-harness-filters.mjs} +0 -0
- package/esm2020/radio/testing/radio-harness.mjs +231 -0
- package/{esm2015/select/index.js → esm2020/select/index.mjs} +0 -0
- package/{esm2015/select/public-api.js → esm2020/select/public-api.mjs} +0 -0
- package/{esm2015/select/select-animations.js → esm2020/select/select-animations.mjs} +0 -0
- package/{esm2015/select/select-errors.js → esm2020/select/select-errors.mjs} +0 -0
- package/esm2020/select/select-module.mjs +58 -0
- package/esm2020/select/select.mjs +1188 -0
- package/{esm2015/select/testing/index.js → esm2020/select/testing/index.mjs} +0 -0
- package/{esm2015/select/testing/public-api.js → esm2020/select/testing/public-api.mjs} +0 -0
- package/{esm2015/select/testing/select-harness-filters.js → esm2020/select/testing/select-harness-filters.mjs} +0 -0
- package/esm2020/select/testing/select-harness.mjs +130 -0
- package/{esm2015/sidenav/drawer-animations.js → esm2020/sidenav/drawer-animations.mjs} +0 -0
- package/esm2020/sidenav/drawer.mjs +788 -0
- package/esm2020/sidenav/index.mjs +5 -0
- package/{esm2015/sidenav/public-api.js → esm2020/sidenav/public-api.mjs} +0 -0
- package/esm2020/sidenav/sidenav-module.mjs +71 -0
- package/esm2020/sidenav/sidenav.mjs +115 -0
- package/esm2020/sidenav/testing/drawer-container-harness.mjs +36 -0
- package/{esm2015/sidenav/testing/drawer-content-harness.js → esm2020/sidenav/testing/drawer-content-harness.mjs} +0 -0
- package/{esm2015/sidenav/testing/drawer-harness-filters.js → esm2020/sidenav/testing/drawer-harness-filters.mjs} +0 -0
- package/esm2020/sidenav/testing/drawer-harness.mjs +50 -0
- package/{esm2015/sidenav/testing/index.js → esm2020/sidenav/testing/index.mjs} +0 -0
- package/{esm2015/sidenav/testing/public-api.js → esm2020/sidenav/testing/public-api.mjs} +0 -0
- package/esm2020/sidenav/testing/sidenav-container-harness.mjs +36 -0
- package/{esm2015/sidenav/testing/sidenav-content-harness.js → esm2020/sidenav/testing/sidenav-content-harness.mjs} +0 -0
- package/esm2020/sidenav/testing/sidenav-harness.mjs +29 -0
- package/{esm2015/slide-toggle/index.js → esm2020/slide-toggle/index.mjs} +0 -0
- package/{esm2015/slide-toggle/public-api.js → esm2020/slide-toggle/public-api.mjs} +0 -0
- package/{esm2015/slide-toggle/slide-toggle-config.js → esm2020/slide-toggle/slide-toggle-config.mjs} +0 -0
- package/esm2020/slide-toggle/slide-toggle-module.mjs +57 -0
- package/esm2020/slide-toggle/slide-toggle-required-validator.mjs +36 -0
- package/esm2020/slide-toggle/slide-toggle.mjs +253 -0
- package/{esm2015/slide-toggle/testing/index.js → esm2020/slide-toggle/testing/index.mjs} +0 -0
- package/{esm2015/slide-toggle/testing/public-api.js → esm2020/slide-toggle/testing/public-api.mjs} +0 -0
- package/{esm2015/slide-toggle/testing/slide-toggle-harness-filters.js → esm2020/slide-toggle/testing/slide-toggle-harness-filters.mjs} +0 -0
- package/esm2020/slide-toggle/testing/slide-toggle-harness.mjs +110 -0
- package/{esm2015/slider/index.js → esm2020/slider/index.mjs} +0 -0
- package/{esm2015/slider/public-api.js → esm2020/slider/public-api.mjs} +0 -0
- package/esm2020/slider/slider-module.mjs +26 -0
- package/esm2020/slider/slider.mjs +801 -0
- package/{esm2015/slider/testing/index.js → esm2020/slider/testing/index.mjs} +0 -0
- package/{esm2015/slider/testing/public-api.js → esm2020/slider/testing/public-api.mjs} +0 -0
- package/{esm2015/slider/testing/slider-harness-filters.js → esm2020/slider/testing/slider-harness-filters.mjs} +0 -0
- package/esm2020/slider/testing/slider-harness.mjs +114 -0
- package/{esm2015/snack-bar/index.js → esm2020/snack-bar/index.mjs} +0 -0
- package/{esm2015/snack-bar/public-api.js → esm2020/snack-bar/public-api.mjs} +0 -0
- package/esm2020/snack-bar/simple-snack-bar.mjs +44 -0
- package/{esm2015/snack-bar/snack-bar-animations.js → esm2020/snack-bar/snack-bar-animations.mjs} +0 -0
- package/{esm2015/snack-bar/snack-bar-config.js → esm2020/snack-bar/snack-bar-config.mjs} +0 -0
- package/esm2020/snack-bar/snack-bar-container.mjs +205 -0
- package/esm2020/snack-bar/snack-bar-module.mjs +47 -0
- package/esm2020/snack-bar/snack-bar-ref.mjs +90 -0
- package/esm2020/snack-bar/snack-bar.mjs +265 -0
- package/{esm2015/snack-bar/testing/index.js → esm2020/snack-bar/testing/index.mjs} +0 -0
- package/{esm2015/snack-bar/testing/public-api.js → esm2020/snack-bar/testing/public-api.mjs} +0 -0
- package/{esm2015/snack-bar/testing/snack-bar-harness-filters.js → esm2020/snack-bar/testing/snack-bar-harness-filters.mjs} +0 -0
- package/esm2020/snack-bar/testing/snack-bar-harness.mjs +118 -0
- package/{esm2015/sort/index.js → esm2020/sort/index.mjs} +0 -0
- package/{esm2015/sort/public-api.js → esm2020/sort/public-api.mjs} +0 -0
- package/{esm2015/sort/sort-animations.js → esm2020/sort/sort-animations.mjs} +0 -0
- package/{esm2015/sort/sort-direction.js → esm2020/sort/sort-direction.mjs} +0 -0
- package/{esm2015/sort/sort-errors.js → esm2020/sort/sort-errors.mjs} +0 -0
- package/esm2020/sort/sort-header-intl.mjs +43 -0
- package/esm2020/sort/sort-header.mjs +275 -0
- package/esm2020/sort/sort-module.mjs +29 -0
- package/esm2020/sort/sort.mjs +154 -0
- package/{esm2015/sort/testing/index.js → esm2020/sort/testing/index.mjs} +0 -0
- package/{esm2015/sort/testing/public-api.js → esm2020/sort/testing/public-api.mjs} +0 -0
- package/{esm2015/sort/testing/sort-harness-filters.js → esm2020/sort/testing/sort-harness-filters.mjs} +0 -0
- package/esm2020/sort/testing/sort-harness.mjs +36 -0
- package/esm2020/sort/testing/sort-header-harness.mjs +56 -0
- package/{esm2015/stepper/index.js → esm2020/stepper/index.mjs} +0 -0
- package/{esm2015/stepper/public-api.js → esm2020/stepper/public-api.mjs} +0 -0
- package/esm2020/stepper/step-content.mjs +26 -0
- package/esm2020/stepper/step-header.mjs +110 -0
- package/esm2020/stepper/step-label.mjs +21 -0
- package/{esm2015/stepper/stepper-animations.js → esm2020/stepper/stepper-animations.mjs} +0 -0
- package/esm2020/stepper/stepper-button.mjs +43 -0
- package/esm2020/stepper/stepper-icon.mjs +29 -0
- package/esm2020/stepper/stepper-intl.mjs +43 -0
- package/esm2020/stepper/stepper-module.mjs +97 -0
- package/esm2020/stepper/stepper.mjs +213 -0
- package/{esm2015/stepper/testing/index.js → esm2020/stepper/testing/index.mjs} +0 -0
- package/{esm2015/stepper/testing/public-api.js → esm2020/stepper/testing/public-api.mjs} +0 -0
- package/{esm2015/stepper/testing/step-harness-filters.js → esm2020/stepper/testing/step-harness-filters.mjs} +0 -0
- package/esm2020/stepper/testing/step-harness.mjs +90 -0
- package/esm2020/stepper/testing/stepper-button-harnesses.mjs +50 -0
- package/esm2020/stepper/testing/stepper-harness.mjs +50 -0
- package/esm2020/table/cell.mjs +139 -0
- package/{esm2015/table/index.js → esm2020/table/index.mjs} +0 -0
- package/{esm2015/table/public-api.js → esm2020/table/public-api.mjs} +0 -0
- package/esm2020/table/row.mjs +139 -0
- package/esm2020/table/table-data-source.mjs +310 -0
- package/esm2020/table/table-module.mjs +101 -0
- package/esm2020/table/table.mjs +71 -0
- package/esm2020/table/testing/cell-harness.mjs +72 -0
- package/{esm2015/table/testing/index.js → esm2020/table/testing/index.mjs} +0 -0
- package/{esm2015/table/testing/public-api.js → esm2020/table/testing/public-api.mjs} +0 -0
- package/esm2020/table/testing/row-harness.mjs +84 -0
- package/{esm2015/table/testing/table-harness-filters.js → esm2020/table/testing/table-harness-filters.mjs} +0 -0
- package/esm2020/table/testing/table-harness.mjs +88 -0
- package/esm2020/table/text-column.mjs +58 -0
- package/esm2020/tabs/index.mjs +5 -0
- package/esm2020/tabs/ink-bar.mjs +93 -0
- package/esm2020/tabs/paginated-tab-header.mjs +480 -0
- package/esm2020/tabs/public-api.mjs +20 -0
- package/esm2020/tabs/tab-body.mjs +214 -0
- package/{esm2015/tabs/tab-config.js → esm2020/tabs/tab-config.mjs} +0 -0
- package/esm2020/tabs/tab-content.mjs +32 -0
- package/esm2020/tabs/tab-group.mjs +382 -0
- package/esm2020/tabs/tab-header.mjs +101 -0
- package/esm2020/tabs/tab-label-wrapper.mjs +41 -0
- package/esm2020/tabs/tab-label.mjs +43 -0
- package/{esm2015/tabs/tab-nav-bar/index.js → esm2020/tabs/tab-nav-bar/index.mjs} +0 -0
- package/esm2020/tabs/tab-nav-bar/tab-nav-bar.mjs +263 -0
- package/esm2020/tabs/tab.mjs +106 -0
- package/{esm2015/tabs/tabs-animations.js → esm2020/tabs/tabs-animations.mjs} +0 -0
- package/esm2020/tabs/tabs-module.mjs +93 -0
- package/{esm2015/tabs/testing/index.js → esm2020/tabs/testing/index.mjs} +0 -0
- package/{esm2015/tabs/testing/public-api.js → esm2020/tabs/testing/public-api.mjs} +0 -0
- package/esm2020/tabs/testing/tab-group-harness.mjs +58 -0
- package/{esm2015/tabs/testing/tab-harness-filters.js → esm2020/tabs/testing/tab-harness-filters.mjs} +0 -0
- package/esm2020/tabs/testing/tab-harness.mjs +66 -0
- package/esm2020/tabs/testing/tab-link-harness.mjs +42 -0
- package/esm2020/tabs/testing/tab-nav-bar-harness.mjs +54 -0
- package/{esm2015/toolbar/index.js → esm2020/toolbar/index.mjs} +0 -0
- package/{esm2015/toolbar/public-api.js → esm2020/toolbar/public-api.mjs} +0 -0
- package/{esm2015/toolbar/testing/index.js → esm2020/toolbar/testing/index.mjs} +0 -0
- package/{esm2015/toolbar/testing/public-api.js → esm2020/toolbar/testing/public-api.mjs} +0 -0
- package/{esm2015/toolbar/testing/toolbar-harness-filters.js → esm2020/toolbar/testing/toolbar-harness-filters.mjs} +0 -0
- package/esm2020/toolbar/testing/toolbar-harness.mjs +40 -0
- package/esm2020/toolbar/toolbar-module.mjs +25 -0
- package/esm2020/toolbar/toolbar.mjs +88 -0
- package/{esm2015/tooltip/index.js → esm2020/tooltip/index.mjs} +0 -0
- package/{esm2015/tooltip/public-api.js → esm2020/tooltip/public-api.mjs} +0 -0
- package/{esm2015/tooltip/testing/index.js → esm2020/tooltip/testing/index.mjs} +0 -0
- package/{esm2015/tooltip/testing/public-api.js → esm2020/tooltip/testing/public-api.mjs} +0 -0
- package/{esm2015/tooltip/testing/tooltip-harness-filters.js → esm2020/tooltip/testing/tooltip-harness-filters.mjs} +0 -0
- package/esm2020/tooltip/testing/tooltip-harness.mjs +57 -0
- package/{esm2015/tooltip/tooltip-animations.js → esm2020/tooltip/tooltip-animations.mjs} +0 -0
- package/esm2020/tooltip/tooltip-module.mjs +44 -0
- package/esm2020/tooltip/tooltip.mjs +739 -0
- package/{esm2015/tree/data-source/flat-data-source.js → esm2020/tree/data-source/flat-data-source.mjs} +0 -0
- package/{esm2015/tree/data-source/nested-data-source.js → esm2020/tree/data-source/nested-data-source.mjs} +0 -0
- package/{esm2015/tree/index.js → esm2020/tree/index.mjs} +0 -0
- package/esm2020/tree/node.mjs +143 -0
- package/esm2020/tree/outlet.mjs +41 -0
- package/esm2020/tree/padding.mjs +37 -0
- package/{esm2015/tree/public-api.js → esm2020/tree/public-api.mjs} +0 -0
- package/{esm2015/tree/testing/index.js → esm2020/tree/testing/index.mjs} +0 -0
- package/esm2020/tree/testing/node-harness.mjs +69 -0
- package/{esm2015/tree/testing/public-api.js → esm2020/tree/testing/public-api.mjs} +0 -0
- package/{esm2015/tree/testing/tree-harness-filters.js → esm2020/tree/testing/tree-harness-filters.mjs} +0 -0
- package/esm2020/tree/testing/tree-harness.mjs +123 -0
- package/esm2020/tree/toggle.mjs +36 -0
- package/esm2020/tree/tree-module.mjs +51 -0
- package/esm2020/tree/tree.mjs +37 -0
- package/expansion/accordion.d.ts +3 -0
- package/expansion/expansion-module.d.ts +12 -7
- package/expansion/expansion-panel-content.d.ts +3 -0
- package/expansion/expansion-panel-header.d.ts +8 -1
- package/expansion/expansion-panel.d.ts +5 -0
- package/expansion/package.json +5 -5
- package/expansion/testing/package.json +5 -5
- package/fesm2015/autocomplete/testing.mjs +132 -0
- package/fesm2015/autocomplete/testing.mjs.map +1 -0
- package/fesm2015/autocomplete.mjs +958 -0
- package/fesm2015/autocomplete.mjs.map +1 -0
- package/fesm2015/badge/testing.mjs +97 -0
- package/fesm2015/badge/testing.mjs.map +1 -0
- package/fesm2015/badge.mjs +266 -0
- package/fesm2015/badge.mjs.map +1 -0
- package/fesm2015/bottom-sheet/testing.mjs +52 -0
- package/fesm2015/bottom-sheet/testing.mjs.map +1 -0
- package/fesm2015/bottom-sheet.mjs +596 -0
- package/fesm2015/bottom-sheet.mjs.map +1 -0
- package/fesm2015/button/testing.mjs +76 -0
- package/fesm2015/button/testing.mjs.map +1 -0
- package/fesm2015/button-toggle/testing.mjs +181 -0
- package/fesm2015/button-toggle/testing.mjs.map +1 -0
- package/fesm2015/button-toggle.mjs +502 -0
- package/fesm2015/button-toggle.mjs.map +1 -0
- package/fesm2015/button.mjs +202 -0
- package/fesm2015/button.mjs.map +1 -0
- package/fesm2015/card/testing.mjs +64 -0
- package/fesm2015/card/testing.mjs.map +1 -0
- package/fesm2015/card.mjs +322 -0
- package/fesm2015/card.mjs.map +1 -0
- package/fesm2015/checkbox/testing.mjs +168 -0
- package/fesm2015/checkbox/testing.mjs.map +1 -0
- package/fesm2015/checkbox.mjs +503 -0
- package/fesm2015/checkbox.mjs.map +1 -0
- package/fesm2015/chips/testing.mjs +423 -0
- package/fesm2015/chips/testing.mjs.map +1 -0
- package/fesm2015/chips.mjs +1354 -0
- package/fesm2015/chips.mjs.map +1 -0
- package/fesm2015/core/testing.mjs +120 -0
- package/fesm2015/core/testing.mjs.map +1 -0
- package/fesm2015/core.mjs +1719 -0
- package/fesm2015/core.mjs.map +1 -0
- package/fesm2015/datepicker/testing.mjs +635 -0
- package/fesm2015/datepicker/testing.mjs.map +1 -0
- package/fesm2015/datepicker.mjs +3948 -0
- package/fesm2015/datepicker.mjs.map +1 -0
- package/fesm2015/dialog/testing.mjs +119 -0
- package/fesm2015/dialog/testing.mjs.map +1 -0
- package/fesm2015/dialog.mjs +1155 -0
- package/fesm2015/dialog.mjs.map +1 -0
- package/fesm2015/divider/testing.mjs +39 -0
- package/fesm2015/divider/testing.mjs.map +1 -0
- package/fesm2015/divider.mjs +77 -0
- package/fesm2015/divider.mjs.map +1 -0
- package/fesm2015/expansion/testing.mjs +187 -0
- package/fesm2015/expansion/testing.mjs.map +1 -0
- package/fesm2015/expansion.mjs +641 -0
- package/fesm2015/expansion.mjs.map +1 -0
- package/fesm2015/form-field/testing/control.mjs +26 -0
- package/fesm2015/form-field/testing/control.mjs.map +1 -0
- package/fesm2015/form-field/testing.mjs +231 -0
- package/fesm2015/form-field/testing.mjs.map +1 -0
- package/fesm2015/form-field.mjs +814 -0
- package/fesm2015/form-field.mjs.map +1 -0
- package/fesm2015/grid-list/testing.mjs +161 -0
- package/fesm2015/grid-list/testing.mjs.map +1 -0
- package/fesm2015/grid-list.mjs +700 -0
- package/fesm2015/grid-list.mjs.map +1 -0
- package/fesm2015/icon/testing.mjs +163 -0
- package/fesm2015/icon/testing.mjs.map +1 -0
- package/fesm2015/icon.mjs +1016 -0
- package/fesm2015/icon.mjs.map +1 -0
- package/fesm2015/input/testing.mjs +281 -0
- package/fesm2015/input/testing.mjs.map +1 -0
- package/fesm2015/input.mjs +515 -0
- package/fesm2015/input.mjs.map +1 -0
- package/fesm2015/list/testing.mjs +486 -0
- package/fesm2015/list/testing.mjs.map +1 -0
- package/fesm2015/list.mjs +908 -0
- package/fesm2015/list.mjs.map +1 -0
- package/fesm2015/material.mjs +16 -0
- package/fesm2015/material.mjs.map +1 -0
- package/fesm2015/menu/testing.mjs +235 -0
- package/fesm2015/menu/testing.mjs.map +1 -0
- package/fesm2015/menu.mjs +1363 -0
- package/fesm2015/menu.mjs.map +1 -0
- package/fesm2015/paginator/testing.mjs +118 -0
- package/fesm2015/paginator/testing.mjs.map +1 -0
- package/fesm2015/paginator.mjs +387 -0
- package/fesm2015/paginator.mjs.map +1 -0
- package/fesm2015/progress-bar/testing.mjs +51 -0
- package/fesm2015/progress-bar/testing.mjs.map +1 -0
- package/fesm2015/progress-bar.mjs +225 -0
- package/fesm2015/progress-bar.mjs.map +1 -0
- package/fesm2015/progress-spinner/testing.mjs +52 -0
- package/fesm2015/progress-spinner/testing.mjs.map +1 -0
- package/fesm2015/progress-spinner.mjs +330 -0
- package/fesm2015/progress-spinner.mjs.map +1 -0
- package/fesm2015/radio/testing.mjs +284 -0
- package/fesm2015/radio/testing.mjs.map +1 -0
- package/fesm2015/radio.mjs +599 -0
- package/fesm2015/radio.mjs.map +1 -0
- package/fesm2015/select/testing.mjs +169 -0
- package/fesm2015/select/testing.mjs.map +1 -0
- package/fesm2015/select.mjs +1346 -0
- package/fesm2015/select.mjs.map +1 -0
- package/fesm2015/sidenav/testing.mjs +195 -0
- package/fesm2015/sidenav/testing.mjs.map +1 -0
- package/fesm2015/sidenav.mjs +1013 -0
- package/fesm2015/sidenav.mjs.map +1 -0
- package/fesm2015/slide-toggle/testing.mjs +151 -0
- package/fesm2015/slide-toggle/testing.mjs.map +1 -0
- package/fesm2015/slide-toggle.mjs +359 -0
- package/fesm2015/slide-toggle.mjs.map +1 -0
- package/fesm2015/slider/testing.mjs +153 -0
- package/fesm2015/slider/testing.mjs.map +1 -0
- package/fesm2015/slider.mjs +830 -0
- package/fesm2015/slider.mjs.map +1 -0
- package/fesm2015/snack-bar/testing.mjs +153 -0
- package/fesm2015/snack-bar/testing.mjs.map +1 -0
- package/fesm2015/snack-bar.mjs +698 -0
- package/fesm2015/snack-bar.mjs.map +1 -0
- package/fesm2015/sort/testing.mjs +110 -0
- package/fesm2015/sort/testing.mjs.map +1 -0
- package/fesm2015/sort.mjs +605 -0
- package/fesm2015/sort.mjs.map +1 -0
- package/fesm2015/stepper/testing.mjs +216 -0
- package/fesm2015/stepper/testing.mjs.map +1 -0
- package/fesm2015/stepper.mjs +579 -0
- package/fesm2015/stepper.mjs.map +1 -0
- package/fesm2015/table/testing.mjs +259 -0
- package/fesm2015/table/testing.mjs.map +1 -0
- package/fesm2015/table.mjs +817 -0
- package/fesm2015/table.mjs.map +1 -0
- package/fesm2015/tabs/testing.mjs +245 -0
- package/fesm2015/tabs/testing.mjs.map +1 -0
- package/fesm2015/tabs.mjs +1846 -0
- package/fesm2015/tabs.mjs.map +1 -0
- package/fesm2015/toolbar/testing.mjs +59 -0
- package/fesm2015/toolbar/testing.mjs.map +1 -0
- package/fesm2015/toolbar.mjs +118 -0
- package/fesm2015/toolbar.mjs.map +1 -0
- package/fesm2015/tooltip/testing.mjs +80 -0
- package/fesm2015/tooltip/testing.mjs.map +1 -0
- package/fesm2015/tooltip.mjs +820 -0
- package/fesm2015/tooltip.mjs.map +1 -0
- package/fesm2015/tree/testing.mjs +215 -0
- package/fesm2015/tree/testing.mjs.map +1 -0
- package/fesm2015/tree.mjs +520 -0
- package/fesm2015/tree.mjs.map +1 -0
- package/fesm2020/autocomplete/testing.mjs +128 -0
- package/fesm2020/autocomplete/testing.mjs.map +1 -0
- package/fesm2020/autocomplete.mjs +958 -0
- package/fesm2020/autocomplete.mjs.map +1 -0
- package/fesm2020/badge/testing.mjs +99 -0
- package/fesm2020/badge/testing.mjs.map +1 -0
- package/fesm2020/badge.mjs +271 -0
- package/fesm2020/badge.mjs.map +1 -0
- package/fesm2020/bottom-sheet/testing.mjs +62 -0
- package/fesm2020/bottom-sheet/testing.mjs.map +1 -0
- package/fesm2020/bottom-sheet.mjs +592 -0
- package/fesm2020/bottom-sheet.mjs.map +1 -0
- package/fesm2020/button/testing.mjs +78 -0
- package/fesm2020/button/testing.mjs.map +1 -0
- package/fesm2020/button-toggle/testing.mjs +176 -0
- package/fesm2020/button-toggle/testing.mjs.map +1 -0
- package/fesm2020/button-toggle.mjs +505 -0
- package/fesm2020/button-toggle.mjs.map +1 -0
- package/fesm2020/button.mjs +205 -0
- package/fesm2020/button.mjs.map +1 -0
- package/fesm2020/card/testing.mjs +70 -0
- package/fesm2020/card/testing.mjs.map +1 -0
- package/fesm2020/card.mjs +320 -0
- package/fesm2020/card.mjs.map +1 -0
- package/fesm2020/checkbox/testing.mjs +150 -0
- package/fesm2020/checkbox/testing.mjs.map +1 -0
- package/fesm2020/checkbox.mjs +507 -0
- package/fesm2020/checkbox.mjs.map +1 -0
- package/fesm2020/chips/testing.mjs +398 -0
- package/fesm2020/chips/testing.mjs.map +1 -0
- package/fesm2020/chips.mjs +1346 -0
- package/fesm2020/chips.mjs.map +1 -0
- package/fesm2020/core/testing.mjs +131 -0
- package/fesm2020/core/testing.mjs.map +1 -0
- package/fesm2020/core.mjs +1731 -0
- package/fesm2020/core.mjs.map +1 -0
- package/fesm2020/datepicker/testing.mjs +572 -0
- package/fesm2020/datepicker/testing.mjs.map +1 -0
- package/fesm2020/datepicker.mjs +3921 -0
- package/fesm2020/datepicker.mjs.map +1 -0
- package/fesm2020/dialog/testing.mjs +110 -0
- package/fesm2020/dialog/testing.mjs.map +1 -0
- package/fesm2020/dialog.mjs +1147 -0
- package/fesm2020/dialog.mjs.map +1 -0
- package/fesm2020/divider/testing.mjs +49 -0
- package/fesm2020/divider/testing.mjs.map +1 -0
- package/fesm2020/divider.mjs +77 -0
- package/fesm2020/divider.mjs.map +1 -0
- package/fesm2020/expansion/testing.mjs +176 -0
- package/fesm2020/expansion/testing.mjs.map +1 -0
- package/fesm2020/expansion.mjs +644 -0
- package/fesm2020/expansion.mjs.map +1 -0
- package/fesm2020/form-field/testing/control.mjs +26 -0
- package/fesm2020/form-field/testing/control.mjs.map +1 -0
- package/fesm2020/form-field/testing.mjs +209 -0
- package/fesm2020/form-field/testing.mjs.map +1 -0
- package/fesm2020/form-field.mjs +817 -0
- package/fesm2020/form-field.mjs.map +1 -0
- package/fesm2020/grid-list/testing.mjs +162 -0
- package/fesm2020/grid-list/testing.mjs.map +1 -0
- package/fesm2020/grid-list.mjs +696 -0
- package/fesm2020/grid-list.mjs.map +1 -0
- package/fesm2020/icon/testing.mjs +169 -0
- package/fesm2020/icon/testing.mjs.map +1 -0
- package/fesm2020/icon.mjs +1010 -0
- package/fesm2020/icon.mjs.map +1 -0
- package/fesm2020/input/testing.mjs +265 -0
- package/fesm2020/input/testing.mjs.map +1 -0
- package/fesm2020/input.mjs +512 -0
- package/fesm2020/input.mjs.map +1 -0
- package/fesm2020/list/testing.mjs +464 -0
- package/fesm2020/list/testing.mjs.map +1 -0
- package/fesm2020/list.mjs +901 -0
- package/fesm2020/list.mjs.map +1 -0
- package/fesm2020/material.mjs +16 -0
- package/fesm2020/material.mjs.map +1 -0
- package/fesm2020/menu/testing.mjs +210 -0
- package/fesm2020/menu/testing.mjs.map +1 -0
- package/fesm2020/menu.mjs +1365 -0
- package/fesm2020/menu.mjs.map +1 -0
- package/fesm2020/paginator/testing.mjs +118 -0
- package/fesm2020/paginator/testing.mjs.map +1 -0
- package/fesm2020/paginator.mjs +385 -0
- package/fesm2020/paginator.mjs.map +1 -0
- package/fesm2020/progress-bar/testing.mjs +61 -0
- package/fesm2020/progress-bar/testing.mjs.map +1 -0
- package/fesm2020/progress-bar.mjs +223 -0
- package/fesm2020/progress-bar.mjs.map +1 -0
- package/fesm2020/progress-spinner/testing.mjs +62 -0
- package/fesm2020/progress-spinner/testing.mjs.map +1 -0
- package/fesm2020/progress-spinner.mjs +326 -0
- package/fesm2020/progress-spinner.mjs.map +1 -0
- package/fesm2020/radio/testing.mjs +258 -0
- package/fesm2020/radio/testing.mjs.map +1 -0
- package/fesm2020/radio.mjs +604 -0
- package/fesm2020/radio.mjs.map +1 -0
- package/fesm2020/select/testing.mjs +157 -0
- package/fesm2020/select/testing.mjs.map +1 -0
- package/fesm2020/select.mjs +1338 -0
- package/fesm2020/select.mjs.map +1 -0
- package/fesm2020/sidenav/testing.mjs +214 -0
- package/fesm2020/sidenav/testing.mjs.map +1 -0
- package/fesm2020/sidenav.mjs +1004 -0
- package/fesm2020/sidenav.mjs.map +1 -0
- package/fesm2020/slide-toggle/testing.mjs +137 -0
- package/fesm2020/slide-toggle/testing.mjs.map +1 -0
- package/fesm2020/slide-toggle.mjs +364 -0
- package/fesm2020/slide-toggle.mjs.map +1 -0
- package/fesm2020/slider/testing.mjs +133 -0
- package/fesm2020/slider/testing.mjs.map +1 -0
- package/fesm2020/slider.mjs +835 -0
- package/fesm2020/slider.mjs.map +1 -0
- package/fesm2020/snack-bar/testing.mjs +145 -0
- package/fesm2020/snack-bar/testing.mjs.map +1 -0
- package/fesm2020/snack-bar.mjs +701 -0
- package/fesm2020/snack-bar.mjs.map +1 -0
- package/fesm2020/sort/testing.mjs +109 -0
- package/fesm2020/sort/testing.mjs.map +1 -0
- package/fesm2020/sort.mjs +609 -0
- package/fesm2020/sort.mjs.map +1 -0
- package/fesm2020/stepper/testing.mjs +206 -0
- package/fesm2020/stepper/testing.mjs.map +1 -0
- package/fesm2020/stepper.mjs +589 -0
- package/fesm2020/stepper.mjs.map +1 -0
- package/fesm2020/table/testing.mjs +259 -0
- package/fesm2020/table/testing.mjs.map +1 -0
- package/fesm2020/table.mjs +814 -0
- package/fesm2020/table.mjs.map +1 -0
- package/fesm2020/tabs/testing.mjs +234 -0
- package/fesm2020/tabs/testing.mjs.map +1 -0
- package/fesm2020/tabs.mjs +1829 -0
- package/fesm2020/tabs.mjs.map +1 -0
- package/fesm2020/toolbar/testing.mjs +67 -0
- package/fesm2020/toolbar/testing.mjs.map +1 -0
- package/fesm2020/toolbar.mjs +123 -0
- package/fesm2020/toolbar.mjs.map +1 -0
- package/fesm2020/tooltip/testing.mjs +84 -0
- package/fesm2020/tooltip/testing.mjs.map +1 -0
- package/fesm2020/tooltip.mjs +815 -0
- package/fesm2020/tooltip.mjs.map +1 -0
- package/fesm2020/tree/testing.mjs +217 -0
- package/fesm2020/tree/testing.mjs.map +1 -0
- package/fesm2020/tree.mjs +514 -0
- package/fesm2020/tree.mjs.map +1 -0
- package/form-field/error.d.ts +3 -0
- package/form-field/form-field-control.d.ts +3 -0
- package/form-field/form-field-module.d.ts +14 -7
- package/form-field/form-field.d.ts +4 -1
- package/form-field/hint.d.ts +3 -0
- package/form-field/label.d.ts +3 -7
- package/form-field/package.json +5 -5
- package/form-field/placeholder.d.ts +3 -7
- package/form-field/prefix.d.ts +3 -0
- package/form-field/suffix.d.ts +3 -0
- package/form-field/testing/control/package.json +5 -5
- package/form-field/testing/package.json +5 -5
- package/grid-list/grid-list-module.d.ts +7 -7
- package/grid-list/grid-list.d.ts +3 -0
- package/grid-list/grid-tile.d.ts +11 -0
- package/grid-list/index.d.ts +0 -1
- package/grid-list/package.json +5 -5
- package/grid-list/testing/package.json +5 -5
- package/icon/icon-module.d.ts +6 -7
- package/icon/icon-registry.d.ts +3 -7
- package/icon/icon.d.ts +4 -1
- package/icon/package.json +5 -5
- package/icon/testing/fake-icon-registry.d.ts +6 -0
- package/icon/testing/package.json +5 -5
- package/input/input-module.d.ts +8 -7
- package/input/input.d.ts +4 -1
- package/input/package.json +5 -5
- package/input/public-api.d.ts +0 -1
- package/input/testing/package.json +5 -5
- package/list/list-module.d.ts +9 -7
- package/list/list.d.ts +15 -2
- package/list/package.json +5 -5
- package/list/selection-list.d.ts +7 -2
- package/list/testing/package.json +5 -5
- package/menu/index.d.ts +0 -2
- package/menu/menu-content.d.ts +11 -11
- package/menu/menu-item.d.ts +4 -1
- package/menu/menu-module.d.ts +12 -13
- package/menu/menu-trigger.d.ts +12 -2
- package/menu/menu.d.ts +5 -0
- package/menu/package.json +5 -5
- package/menu/public-api.d.ts +1 -1
- package/menu/testing/package.json +5 -5
- package/package.json +612 -8
- package/paginator/package.json +5 -5
- package/paginator/paginator-intl.d.ts +3 -0
- package/paginator/paginator-module.d.ts +10 -7
- package/paginator/paginator.d.ts +6 -1
- package/paginator/testing/package.json +5 -5
- 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/package.json +5 -5
- package/progress-bar/progress-bar-module.d.ts +7 -7
- package/progress-bar/progress-bar.d.ts +4 -1
- package/progress-bar/testing/package.json +5 -5
- package/progress-spinner/package.json +5 -5
- package/progress-spinner/progress-spinner-module.d.ts +7 -0
- package/progress-spinner/progress-spinner.d.ts +6 -1
- package/progress-spinner/testing/package.json +5 -5
- package/radio/package.json +5 -5
- package/radio/radio-module.d.ts +6 -7
- package/radio/radio.d.ts +10 -1
- package/radio/testing/package.json +5 -5
- package/schematics/ng-add/fonts/material-fonts.js +8 -17
- package/schematics/ng-add/fonts/material-fonts.mjs +8 -17
- package/schematics/ng-add/index.js +8 -8
- package/schematics/ng-add/index.mjs +8 -8
- package/schematics/ng-add/setup-project.js +23 -32
- package/schematics/ng-add/setup-project.mjs +23 -32
- package/schematics/ng-add/theming/create-custom-theme.js +2 -2
- package/schematics/ng-add/theming/create-custom-theme.mjs +2 -2
- package/schematics/ng-add/theming/theming.js +35 -46
- package/schematics/ng-add/theming/theming.mjs +35 -46
- package/schematics/ng-generate/address-form/index.js +13 -22
- package/schematics/ng-generate/address-form/index.mjs +13 -22
- package/schematics/ng-generate/dashboard/index.js +13 -22
- package/schematics/ng-generate/dashboard/index.mjs +13 -22
- package/schematics/ng-generate/navigation/index.js +13 -22
- package/schematics/ng-generate/navigation/index.mjs +13 -22
- package/schematics/ng-generate/table/index.js +10 -19
- package/schematics/ng-generate/table/index.mjs +10 -19
- package/schematics/ng-generate/tree/index.js +10 -19
- package/schematics/ng-generate/tree/index.mjs +10 -19
- package/schematics/ng-update/data/constructor-checks.js +5 -1
- package/schematics/ng-update/data/constructor-checks.mjs +5 -1
- package/schematics/ng-update/index.js +9 -9
- package/schematics/ng-update/index.mjs +9 -9
- package/schematics/ng-update/migrations/hammer-gestures-v9/hammer-gestures-migration.js +24 -24
- package/schematics/ng-update/migrations/hammer-gestures-v9/hammer-gestures-migration.mjs +24 -24
- package/schematics/ng-update/migrations/hammer-gestures-v9/import-manager.js +5 -5
- package/schematics/ng-update/migrations/hammer-gestures-v9/import-manager.mjs +5 -5
- package/schematics/ng-update/migrations/misc-checks/misc-class-inheritance.js +2 -2
- package/schematics/ng-update/migrations/misc-checks/misc-class-inheritance.mjs +2 -2
- package/schematics/ng-update/migrations/misc-checks/misc-imports.js +2 -2
- package/schematics/ng-update/migrations/misc-checks/misc-imports.mjs +2 -2
- package/schematics/ng-update/migrations/misc-checks/misc-template.js +4 -4
- package/schematics/ng-update/migrations/misc-checks/misc-template.mjs +4 -4
- package/schematics/ng-update/migrations/misc-ripples-v7/ripple-speed-factor-migration.js +7 -7
- package/schematics/ng-update/migrations/misc-ripples-v7/ripple-speed-factor-migration.mjs +7 -7
- package/schematics/ng-update/migrations/package-imports-v8/secondary-entry-points-migration.js +2 -3
- package/schematics/ng-update/migrations/package-imports-v8/secondary-entry-points-migration.mjs +2 -3
- package/schematics/ng-update/migrations/theming-api-v12/migration.d.ts +6 -6
- package/schematics/ng-update/migrations/theming-api-v12/migration.js +12 -12
- package/schematics/ng-update/migrations/theming-api-v12/migration.mjs +12 -12
- package/schematics/ng-update/migrations/theming-api-v12/theming-api-migration.js +3 -3
- package/schematics/ng-update/migrations/theming-api-v12/theming-api-migration.mjs +3 -3
- package/schematics/ng-update/typescript/module-specifiers.js +3 -3
- package/schematics/ng-update/typescript/module-specifiers.mjs +3 -3
- package/schematics/package.json +3 -0
- package/schematics/paths.js +3 -3
- package/schematics/paths.mjs +3 -3
- package/select/package.json +5 -5
- package/select/select-module.d.ts +10 -7
- package/select/select.d.ts +8 -1
- package/select/testing/package.json +5 -5
- package/sidenav/drawer.d.ts +7 -0
- package/sidenav/index.d.ts +0 -1
- package/sidenav/package.json +5 -5
- package/sidenav/sidenav-module.d.ts +10 -0
- package/sidenav/sidenav.d.ts +7 -0
- package/sidenav/testing/package.json +5 -5
- package/slide-toggle/package.json +5 -5
- package/slide-toggle/slide-toggle-module.d.ts +11 -7
- package/slide-toggle/slide-toggle-required-validator.d.ts +3 -0
- package/slide-toggle/slide-toggle.d.ts +4 -1
- package/slide-toggle/testing/package.json +5 -5
- package/slider/package.json +5 -5
- package/slider/slider-module.d.ts +7 -7
- package/slider/slider.d.ts +4 -1
- package/slider/testing/package.json +5 -5
- package/snack-bar/package.json +5 -5
- package/snack-bar/simple-snack-bar.d.ts +3 -7
- package/snack-bar/snack-bar-container.d.ts +3 -0
- package/snack-bar/snack-bar-module.d.ts +11 -7
- package/snack-bar/snack-bar.d.ts +3 -0
- package/snack-bar/testing/package.json +5 -5
- package/snack-bar/testing/snack-bar-harness.d.ts +8 -9
- package/sort/package.json +5 -5
- package/sort/sort-header-intl.d.ts +3 -0
- package/sort/sort-header.d.ts +4 -1
- package/sort/sort-module.d.ts +8 -7
- package/sort/sort.d.ts +4 -1
- package/sort/testing/package.json +5 -5
- package/stepper/package.json +5 -5
- package/stepper/step-content.d.ts +3 -0
- package/stepper/step-header.d.ts +6 -1
- package/stepper/step-label.d.ts +3 -7
- package/stepper/stepper-button.d.ts +5 -0
- package/stepper/stepper-icon.d.ts +3 -0
- package/stepper/stepper-intl.d.ts +7 -0
- package/stepper/stepper-module.d.ts +16 -7
- package/stepper/stepper.d.ts +11 -0
- package/stepper/testing/package.json +5 -5
- package/table/cell.d.ts +15 -7
- package/table/package.json +5 -5
- package/table/row.d.ts +15 -0
- package/table/table-module.d.ts +10 -7
- package/table/table.d.ts +5 -0
- package/table/testing/package.json +5 -5
- package/table/text-column.d.ts +3 -0
- package/tabs/index.d.ts +0 -4
- package/tabs/ink-bar.d.ts +3 -0
- package/tabs/package.json +5 -5
- package/tabs/paginated-tab-header.d.ts +3 -0
- package/tabs/public-api.d.ts +1 -1
- package/tabs/tab-body.d.ts +7 -0
- package/tabs/tab-content.d.ts +3 -0
- package/tabs/tab-group.d.ts +6 -1
- package/tabs/tab-header.d.ts +5 -0
- package/tabs/tab-label-wrapper.d.ts +4 -1
- package/tabs/tab-label.d.ts +11 -1
- package/tabs/tab-nav-bar/tab-nav-bar.d.ts +10 -1
- package/tabs/tab.d.ts +5 -2
- package/tabs/tabs-module.d.ts +18 -7
- package/tabs/testing/package.json +5 -5
- package/toolbar/package.json +5 -5
- package/toolbar/testing/package.json +5 -5
- package/toolbar/toolbar-module.d.ts +6 -7
- package/toolbar/toolbar.d.ts +6 -1
- package/tooltip/package.json +5 -5
- package/tooltip/testing/package.json +5 -5
- package/tooltip/tooltip-module.d.ts +10 -7
- package/tooltip/tooltip.d.ts +11 -2
- package/tree/node.d.ts +8 -1
- package/tree/outlet.d.ts +3 -0
- package/tree/package.json +5 -5
- package/tree/padding.d.ts +3 -0
- package/tree/testing/package.json +5 -5
- package/tree/toggle.d.ts +3 -7
- package/tree/tree-module.d.ts +11 -7
- package/tree/tree.d.ts +3 -0
- package/autocomplete/index.metadata.json +0 -1
- package/badge/index.metadata.json +0 -1
- package/bottom-sheet/index.metadata.json +0 -1
- package/bundles/material-autocomplete-testing.umd.js +0 -564
- package/bundles/material-autocomplete-testing.umd.js.map +0 -1
- package/bundles/material-autocomplete.umd.js +0 -1266
- package/bundles/material-autocomplete.umd.js.map +0 -1
- package/bundles/material-badge-testing.umd.js +0 -474
- package/bundles/material-badge-testing.umd.js.map +0 -1
- package/bundles/material-badge.umd.js +0 -606
- package/bundles/material-badge.umd.js.map +0 -1
- package/bundles/material-bottom-sheet-testing.umd.js +0 -396
- package/bundles/material-bottom-sheet-testing.umd.js.map +0 -1
- package/bundles/material-bottom-sheet.umd.js +0 -955
- package/bundles/material-bottom-sheet.umd.js.map +0 -1
- package/bundles/material-button-testing.umd.js +0 -444
- package/bundles/material-button-testing.umd.js.map +0 -1
- package/bundles/material-button-toggle-testing.umd.js +0 -628
- package/bundles/material-button-toggle-testing.umd.js.map +0 -1
- package/bundles/material-button-toggle.umd.js +0 -850
- package/bundles/material-button-toggle.umd.js.map +0 -1
- package/bundles/material-button.umd.js +0 -545
- package/bundles/material-button.umd.js.map +0 -1
- package/bundles/material-card-testing.umd.js +0 -408
- package/bundles/material-card-testing.umd.js.map +0 -1
- package/bundles/material-card.umd.js +0 -337
- package/bundles/material-card.umd.js.map +0 -1
- package/bundles/material-checkbox-testing.umd.js +0 -615
- package/bundles/material-checkbox-testing.umd.js.map +0 -1
- package/bundles/material-checkbox.umd.js +0 -829
- package/bundles/material-checkbox.umd.js.map +0 -1
- package/bundles/material-chips-testing.umd.js +0 -1023
- package/bundles/material-chips-testing.umd.js.map +0 -1
- package/bundles/material-chips.umd.js +0 -1753
- package/bundles/material-chips.umd.js.map +0 -1
- package/bundles/material-core-testing.umd.js +0 -518
- package/bundles/material-core-testing.umd.js.map +0 -1
- package/bundles/material-core.umd.js +0 -2186
- package/bundles/material-core.umd.js.map +0 -1
- package/bundles/material-datepicker-testing.umd.js +0 -1366
- package/bundles/material-datepicker-testing.umd.js.map +0 -1
- package/bundles/material-datepicker.umd.js +0 -4344
- package/bundles/material-datepicker.umd.js.map +0 -1
- package/bundles/material-dialog-testing.umd.js +0 -500
- package/bundles/material-dialog-testing.umd.js.map +0 -1
- package/bundles/material-dialog.umd.js +0 -1487
- package/bundles/material-dialog.umd.js.map +0 -1
- package/bundles/material-divider-testing.umd.js +0 -380
- package/bundles/material-divider-testing.umd.js.map +0 -1
- package/bundles/material-divider.umd.js +0 -95
- package/bundles/material-divider.umd.js.map +0 -1
- package/bundles/material-expansion-testing.umd.js +0 -627
- package/bundles/material-expansion-testing.umd.js.map +0 -1
- package/bundles/material-expansion.umd.js +0 -949
- package/bundles/material-expansion.umd.js.map +0 -1
- package/bundles/material-form-field-testing-control.umd.js +0 -350
- package/bundles/material-form-field-testing-control.umd.js.map +0 -1
- package/bundles/material-form-field-testing.umd.js +0 -708
- package/bundles/material-form-field-testing.umd.js.map +0 -1
- package/bundles/material-form-field.umd.js +0 -1131
- package/bundles/material-form-field.umd.js.map +0 -1
- package/bundles/material-grid-list-testing.umd.js +0 -566
- package/bundles/material-grid-list-testing.umd.js.map +0 -1
- package/bundles/material-grid-list.umd.js +0 -1070
- package/bundles/material-grid-list.umd.js.map +0 -1
- package/bundles/material-icon-testing.umd.js +0 -527
- package/bundles/material-icon-testing.umd.js.map +0 -1
- package/bundles/material-icon.umd.js +0 -1391
- package/bundles/material-icon.umd.js.map +0 -1
- package/bundles/material-input-testing.umd.js +0 -806
- package/bundles/material-input-testing.umd.js.map +0 -1
- package/bundles/material-input.umd.js +0 -875
- package/bundles/material-input.umd.js.map +0 -1
- package/bundles/material-list-testing.umd.js +0 -1092
- package/bundles/material-list-testing.umd.js.map +0 -1
- package/bundles/material-list.umd.js +0 -1284
- package/bundles/material-list.umd.js.map +0 -1
- package/bundles/material-menu-testing.umd.js +0 -722
- package/bundles/material-menu-testing.umd.js.map +0 -1
- package/bundles/material-menu.umd.js +0 -1661
- package/bundles/material-menu.umd.js.map +0 -1
- package/bundles/material-paginator-testing.umd.js +0 -504
- package/bundles/material-paginator-testing.umd.js.map +0 -1
- package/bundles/material-paginator.umd.js +0 -746
- package/bundles/material-paginator.umd.js.map +0 -1
- package/bundles/material-progress-bar-testing.umd.js +0 -395
- package/bundles/material-progress-bar-testing.umd.js.map +0 -1
- package/bundles/material-progress-bar.umd.js +0 -546
- package/bundles/material-progress-bar.umd.js.map +0 -1
- package/bundles/material-progress-spinner-testing.umd.js +0 -399
- package/bundles/material-progress-spinner-testing.umd.js.map +0 -1
- package/bundles/material-progress-spinner.umd.js +0 -631
- package/bundles/material-progress-spinner.umd.js.map +0 -1
- package/bundles/material-radio-testing.umd.js +0 -812
- package/bundles/material-radio-testing.umd.js.map +0 -1
- package/bundles/material-radio.umd.js +0 -971
- package/bundles/material-radio.umd.js.map +0 -1
- package/bundles/material-select-testing.umd.js +0 -620
- package/bundles/material-select-testing.umd.js.map +0 -1
- package/bundles/material-select.umd.js +0 -1665
- package/bundles/material-select.umd.js.map +0 -1
- package/bundles/material-sidenav-testing.umd.js +0 -603
- package/bundles/material-sidenav-testing.umd.js.map +0 -1
- package/bundles/material-sidenav.umd.js +0 -1368
- package/bundles/material-sidenav.umd.js.map +0 -1
- package/bundles/material-slide-toggle-testing.umd.js +0 -582
- package/bundles/material-slide-toggle-testing.umd.js.map +0 -1
- package/bundles/material-slide-toggle.umd.js +0 -670
- package/bundles/material-slide-toggle.umd.js.map +0 -1
- package/bundles/material-slider-testing.umd.js +0 -587
- package/bundles/material-slider-testing.umd.js.map +0 -1
- package/bundles/material-slider.umd.js +0 -1186
- package/bundles/material-slider.umd.js.map +0 -1
- package/bundles/material-snack-bar-testing.umd.js +0 -554
- package/bundles/material-snack-bar-testing.umd.js.map +0 -1
- package/bundles/material-snack-bar.umd.js +0 -1076
- package/bundles/material-snack-bar.umd.js.map +0 -1
- package/bundles/material-sort-testing.umd.js +0 -493
- package/bundles/material-sort-testing.umd.js.map +0 -1
- package/bundles/material-sort.umd.js +0 -943
- package/bundles/material-sort.umd.js.map +0 -1
- package/bundles/material-stepper-testing.umd.js +0 -703
- package/bundles/material-stepper-testing.umd.js.map +0 -1
- package/bundles/material-stepper.umd.js +0 -893
- package/bundles/material-stepper.umd.js.map +0 -1
- package/bundles/material-table-testing.umd.js +0 -700
- package/bundles/material-table-testing.umd.js.map +0 -1
- package/bundles/material-table.umd.js +0 -1121
- package/bundles/material-table.umd.js.map +0 -1
- package/bundles/material-tabs-testing.umd.js +0 -744
- package/bundles/material-tabs-testing.umd.js.map +0 -1
- package/bundles/material-tabs.umd.js +0 -2169
- package/bundles/material-tabs.umd.js.map +0 -1
- package/bundles/material-toolbar-testing.umd.js +0 -406
- package/bundles/material-toolbar-testing.umd.js.map +0 -1
- package/bundles/material-toolbar.umd.js +0 -454
- package/bundles/material-toolbar.umd.js.map +0 -1
- package/bundles/material-tooltip-testing.umd.js +0 -460
- package/bundles/material-tooltip-testing.umd.js.map +0 -1
- package/bundles/material-tooltip.umd.js +0 -1170
- package/bundles/material-tooltip.umd.js.map +0 -1
- package/bundles/material-tree-testing.umd.js +0 -636
- package/bundles/material-tree-testing.umd.js.map +0 -1
- package/bundles/material-tree.umd.js +0 -837
- package/bundles/material-tree.umd.js.map +0 -1
- package/bundles/material.umd.js +0 -26
- package/bundles/material.umd.js.map +0 -1
- package/button/index.metadata.json +0 -1
- package/button-toggle/index.metadata.json +0 -1
- package/card/index.metadata.json +0 -1
- package/checkbox/index.metadata.json +0 -1
- package/chips/index.metadata.json +0 -1
- package/core/index.metadata.json +0 -1
- package/datepicker/index.metadata.json +0 -1
- package/dialog/index.metadata.json +0 -1
- package/divider/index.metadata.json +0 -1
- package/esm2015/autocomplete/autocomplete-module.js +0 -38
- package/esm2015/autocomplete/autocomplete-origin.js +0 -35
- package/esm2015/autocomplete/autocomplete-trigger.js +0 -627
- package/esm2015/autocomplete/autocomplete.externs.js +0 -6
- package/esm2015/autocomplete/autocomplete.js +0 -202
- package/esm2015/autocomplete/testing/autocomplete-harness.js +0 -120
- package/esm2015/autocomplete/testing/testing.externs.js +0 -0
- package/esm2015/badge/badge-module.js +0 -24
- package/esm2015/badge/badge.externs.js +0 -6
- package/esm2015/badge/badge.js +0 -230
- package/esm2015/badge/testing/badge-harness.js +0 -85
- package/esm2015/badge/testing/testing.externs.js +0 -0
- package/esm2015/bottom-sheet/bottom-sheet-container.js +0 -253
- package/esm2015/bottom-sheet/bottom-sheet-module.js +0 -27
- package/esm2015/bottom-sheet/bottom-sheet-ref.js +0 -91
- package/esm2015/bottom-sheet/bottom-sheet.externs.js +0 -6
- package/esm2015/bottom-sheet/bottom-sheet.js +0 -167
- package/esm2015/bottom-sheet/testing/bottom-sheet-harness.js +0 -40
- package/esm2015/bottom-sheet/testing/testing.externs.js +0 -0
- package/esm2015/button/button-module.js +0 -30
- package/esm2015/button/button.externs.js +0 -6
- package/esm2015/button/button.js +0 -163
- package/esm2015/button/testing/button-harness.js +0 -64
- package/esm2015/button/testing/testing.externs.js +0 -0
- package/esm2015/button-toggle/button-toggle-module.js +0 -20
- package/esm2015/button-toggle/button-toggle.externs.js +0 -6
- package/esm2015/button-toggle/button-toggle.js +0 -441
- package/esm2015/button-toggle/testing/button-toggle-group-harness.js +0 -54
- package/esm2015/button-toggle/testing/button-toggle-harness.js +0 -125
- package/esm2015/button-toggle/testing/testing.externs.js +0 -0
- package/esm2015/card/card-module.js +0 -40
- package/esm2015/card/card.externs.js +0 -6
- package/esm2015/card/card.js +0 -223
- package/esm2015/card/testing/card-harness.js +0 -52
- package/esm2015/card/testing/testing.externs.js +0 -0
- package/esm2015/checkbox/checkbox-module.js +0 -34
- package/esm2015/checkbox/checkbox-required-validator.js +0 -29
- package/esm2015/checkbox/checkbox.externs.js +0 -6
- package/esm2015/checkbox/checkbox.js +0 -385
- package/esm2015/checkbox/testing/checkbox-harness.js +0 -156
- package/esm2015/checkbox/testing/testing.externs.js +0 -0
- package/esm2015/chips/chip-input.js +0 -180
- package/esm2015/chips/chip-list.js +0 -663
- package/esm2015/chips/chip.js +0 -394
- package/esm2015/chips/chips-module.js +0 -43
- package/esm2015/chips/chips.externs.js +0 -6
- package/esm2015/chips/testing/chip-harness.js +0 -110
- package/esm2015/chips/testing/chip-input-harness.js +0 -101
- package/esm2015/chips/testing/chip-list-harness.js +0 -99
- package/esm2015/chips/testing/chip-listbox-harness.js +0 -49
- package/esm2015/chips/testing/chip-option-harness.js +0 -54
- package/esm2015/chips/testing/chip-remove-harness.js +0 -29
- package/esm2015/chips/testing/testing.externs.js +0 -0
- package/esm2015/core/common-behaviors/color.js +0 -31
- package/esm2015/core/common-behaviors/common-module.js +0 -122
- package/esm2015/core/common-behaviors/disable-ripple.js +0 -20
- package/esm2015/core/common-behaviors/disabled.js +0 -19
- package/esm2015/core/common-behaviors/error-state.js +0 -36
- package/esm2015/core/common-behaviors/index.js +0 -15
- package/esm2015/core/common-behaviors/initialized.js +0 -58
- package/esm2015/core/common-behaviors/tabindex.js +0 -23
- package/esm2015/core/core.externs.js +0 -6
- package/esm2015/core/datetime/index.js +0 -38
- package/esm2015/core/datetime/native-date-adapter.js +0 -213
- package/esm2015/core/error/error-options.js +0 -29
- package/esm2015/core/index.js +0 -6
- package/esm2015/core/line/line.js +0 -57
- package/esm2015/core/option/index.js +0 -27
- package/esm2015/core/option/optgroup.js +0 -84
- package/esm2015/core/option/option.js +0 -274
- package/esm2015/core/ripple/index.js +0 -24
- package/esm2015/core/ripple/ripple-renderer.js +0 -261
- package/esm2015/core/ripple/ripple.js +0 -128
- package/esm2015/core/selection/index.js +0 -21
- package/esm2015/core/selection/pseudo-checkbox/pseudo-checkbox.js +0 -55
- package/esm2015/core/testing/optgroup-harness.js +0 -51
- package/esm2015/core/testing/option-harness.js +0 -67
- package/esm2015/core/testing/testing.externs.js +0 -0
- package/esm2015/core/version.js +0 -11
- package/esm2015/datepicker/calendar-body.js +0 -291
- package/esm2015/datepicker/calendar.js +0 -330
- package/esm2015/datepicker/date-range-input-parts.js +0 -315
- package/esm2015/datepicker/date-range-input.js +0 -316
- package/esm2015/datepicker/date-range-picker.js +0 -40
- package/esm2015/datepicker/date-range-selection-strategy.js +0 -58
- package/esm2015/datepicker/date-selection-model.js +0 -189
- package/esm2015/datepicker/datepicker-actions.js +0 -89
- package/esm2015/datepicker/datepicker-base.js +0 -542
- package/esm2015/datepicker/datepicker-input-base.js +0 -290
- package/esm2015/datepicker/datepicker-input.js +0 -164
- package/esm2015/datepicker/datepicker-intl.js +0 -51
- package/esm2015/datepicker/datepicker-module.js +0 -93
- package/esm2015/datepicker/datepicker-toggle.js +0 -104
- package/esm2015/datepicker/datepicker.externs.js +0 -6
- package/esm2015/datepicker/datepicker.js +0 -30
- package/esm2015/datepicker/index.js +0 -9
- package/esm2015/datepicker/month-view.js +0 -344
- package/esm2015/datepicker/multi-year-view.js +0 -280
- package/esm2015/datepicker/testing/calendar-cell-harness.js +0 -181
- package/esm2015/datepicker/testing/calendar-harness.js +0 -91
- package/esm2015/datepicker/testing/date-range-input-harness.js +0 -116
- package/esm2015/datepicker/testing/datepicker-input-harness-base.js +0 -102
- package/esm2015/datepicker/testing/datepicker-input-harness.js +0 -69
- package/esm2015/datepicker/testing/datepicker-toggle-harness.js +0 -48
- package/esm2015/datepicker/testing/datepicker-trigger-harness-base.js +0 -77
- package/esm2015/datepicker/testing/testing.externs.js +0 -0
- package/esm2015/datepicker/year-view.js +0 -268
- package/esm2015/dialog/dialog-container.js +0 -295
- package/esm2015/dialog/dialog-content-directives.js +0 -159
- package/esm2015/dialog/dialog-module.js +0 -46
- package/esm2015/dialog/dialog-ref.js +0 -196
- package/esm2015/dialog/dialog.externs.js +0 -6
- package/esm2015/dialog/dialog.js +0 -353
- package/esm2015/dialog/testing/dialog-harness.js +0 -103
- package/esm2015/dialog/testing/testing.externs.js +0 -0
- package/esm2015/divider/divider-module.js +0 -20
- package/esm2015/divider/divider.externs.js +0 -6
- package/esm2015/divider/divider.js +0 -43
- package/esm2015/divider/testing/divider-harness.js +0 -27
- package/esm2015/divider/testing/testing.externs.js +0 -0
- package/esm2015/expansion/accordion.js +0 -83
- package/esm2015/expansion/expansion-module.js +0 -42
- package/esm2015/expansion/expansion-panel-content.js +0 -26
- package/esm2015/expansion/expansion-panel-header.js +0 -214
- package/esm2015/expansion/expansion-panel.js +0 -186
- package/esm2015/expansion/expansion.externs.js +0 -6
- package/esm2015/expansion/testing/accordion-harness.js +0 -36
- package/esm2015/expansion/testing/expansion-harness.js +0 -149
- package/esm2015/expansion/testing/testing.externs.js +0 -0
- package/esm2015/form-field/error.js +0 -45
- package/esm2015/form-field/form-field-control.js +0 -15
- package/esm2015/form-field/form-field-module.js +0 -49
- package/esm2015/form-field/form-field.externs.js +0 -6
- package/esm2015/form-field/form-field.js +0 -482
- package/esm2015/form-field/hint.js +0 -45
- package/esm2015/form-field/label.js +0 -17
- package/esm2015/form-field/placeholder.js +0 -22
- package/esm2015/form-field/prefix.js +0 -24
- package/esm2015/form-field/suffix.js +0 -24
- package/esm2015/form-field/testing/control/control.externs.js +0 -0
- package/esm2015/form-field/testing/form-field-harness.js +0 -218
- package/esm2015/form-field/testing/testing.externs.js +0 -0
- package/esm2015/grid-list/grid-list-module.js +0 -37
- package/esm2015/grid-list/grid-list.externs.js +0 -6
- package/esm2015/grid-list/grid-list.js +0 -135
- package/esm2015/grid-list/grid-tile.js +0 -116
- package/esm2015/grid-list/index.js +0 -6
- package/esm2015/grid-list/testing/grid-list-harness.js +0 -79
- package/esm2015/grid-list/testing/grid-tile-harness.js +0 -80
- package/esm2015/grid-list/testing/testing.externs.js +0 -0
- package/esm2015/icon/icon-module.js +0 -20
- package/esm2015/icon/icon-registry.js +0 -581
- package/esm2015/icon/icon.externs.js +0 -6
- package/esm2015/icon/icon.js +0 -362
- package/esm2015/icon/testing/fake-icon-registry.js +0 -85
- package/esm2015/icon/testing/icon-harness.js +0 -63
- package/esm2015/icon/testing/testing.externs.js +0 -6
- package/esm2015/icon/trusted-types.js +0 -44
- package/esm2015/input/autosize.js +0 -44
- package/esm2015/input/input-module.js +0 -35
- package/esm2015/input/input.externs.js +0 -6
- package/esm2015/input/input.js +0 -395
- package/esm2015/input/public-api.js +0 -13
- package/esm2015/input/testing/input-harness.js +0 -138
- package/esm2015/input/testing/native-option-harness.js +0 -51
- package/esm2015/input/testing/native-select-harness.js +0 -100
- package/esm2015/input/testing/testing.externs.js +0 -0
- package/esm2015/list/list-module.js +0 -45
- package/esm2015/list/list.externs.js +0 -6
- package/esm2015/list/list.js +0 -218
- package/esm2015/list/selection-list.js +0 -608
- package/esm2015/list/testing/action-list-harness.js +0 -68
- package/esm2015/list/testing/list-harness-base.js +0 -97
- package/esm2015/list/testing/list-item-harness-base.js +0 -85
- package/esm2015/list/testing/nav-list-harness.js +0 -75
- package/esm2015/list/testing/selection-list-harness.js +0 -152
- package/esm2015/list/testing/testing.externs.js +0 -0
- package/esm2015/material.externs.js +0 -0
- package/esm2015/menu/index.js +0 -7
- package/esm2015/menu/menu-content.js +0 -92
- package/esm2015/menu/menu-item.js +0 -164
- package/esm2015/menu/menu-module.js +0 -49
- package/esm2015/menu/menu-trigger.js +0 -493
- package/esm2015/menu/menu.externs.js +0 -6
- package/esm2015/menu/menu.js +0 -381
- package/esm2015/menu/public-api.js +0 -16
- package/esm2015/menu/testing/menu-harness.js +0 -223
- package/esm2015/menu/testing/testing.externs.js +0 -0
- package/esm2015/paginator/paginator-intl.js +0 -62
- package/esm2015/paginator/paginator-module.js +0 -32
- package/esm2015/paginator/paginator.externs.js +0 -6
- package/esm2015/paginator/paginator.js +0 -263
- package/esm2015/paginator/testing/paginator-harness.js +0 -106
- package/esm2015/paginator/testing/testing.externs.js +0 -0
- package/esm2015/progress-bar/progress-bar-module.js +0 -21
- package/esm2015/progress-bar/progress-bar.externs.js +0 -6
- package/esm2015/progress-bar/progress-bar.js +0 -179
- package/esm2015/progress-bar/testing/progress-bar-harness.js +0 -39
- package/esm2015/progress-bar/testing/testing.externs.js +0 -0
- package/esm2015/progress-spinner/progress-spinner-module.js +0 -28
- package/esm2015/progress-spinner/progress-spinner.externs.js +0 -6
- package/esm2015/progress-spinner/progress-spinner.js +0 -274
- package/esm2015/progress-spinner/testing/progress-spinner-harness.js +0 -40
- package/esm2015/progress-spinner/testing/testing.externs.js +0 -0
- package/esm2015/radio/radio-module.js +0 -20
- package/esm2015/radio/radio.externs.js +0 -6
- package/esm2015/radio/radio.js +0 -546
- package/esm2015/radio/testing/radio-harness.js +0 -272
- package/esm2015/radio/testing/testing.externs.js +0 -0
- package/esm2015/select/select-module.js +0 -37
- package/esm2015/select/select.externs.js +0 -6
- package/esm2015/select/select.js +0 -1138
- package/esm2015/select/testing/select-harness.js +0 -157
- package/esm2015/select/testing/testing.externs.js +0 -0
- package/esm2015/sidenav/drawer.js +0 -766
- package/esm2015/sidenav/index.js +0 -6
- package/esm2015/sidenav/sidenav-module.js +0 -45
- package/esm2015/sidenav/sidenav.externs.js +0 -6
- package/esm2015/sidenav/sidenav.js +0 -118
- package/esm2015/sidenav/testing/drawer-container-harness.js +0 -41
- package/esm2015/sidenav/testing/drawer-harness.js +0 -57
- package/esm2015/sidenav/testing/sidenav-container-harness.js +0 -41
- package/esm2015/sidenav/testing/sidenav-harness.js +0 -32
- package/esm2015/sidenav/testing/testing.externs.js +0 -0
- package/esm2015/slide-toggle/slide-toggle-module.js +0 -40
- package/esm2015/slide-toggle/slide-toggle-required-validator.js +0 -32
- package/esm2015/slide-toggle/slide-toggle.externs.js +0 -6
- package/esm2015/slide-toggle/slide-toggle.js +0 -236
- package/esm2015/slide-toggle/testing/slide-toggle-harness.js +0 -139
- package/esm2015/slide-toggle/testing/testing.externs.js +0 -0
- package/esm2015/slider/slider-module.js +0 -21
- package/esm2015/slider/slider.externs.js +0 -6
- package/esm2015/slider/slider.js +0 -788
- package/esm2015/slider/testing/slider-harness.js +0 -141
- package/esm2015/slider/testing/testing.externs.js +0 -0
- package/esm2015/snack-bar/simple-snack-bar.js +0 -45
- package/esm2015/snack-bar/snack-bar-container.js +0 -224
- package/esm2015/snack-bar/snack-bar-module.js +0 -32
- package/esm2015/snack-bar/snack-bar-ref.js +0 -90
- package/esm2015/snack-bar/snack-bar.externs.js +0 -6
- package/esm2015/snack-bar/snack-bar.js +0 -265
- package/esm2015/snack-bar/testing/snack-bar-harness.js +0 -142
- package/esm2015/snack-bar/testing/testing.externs.js +0 -0
- package/esm2015/sort/sort-header-intl.js +0 -41
- package/esm2015/sort/sort-header.js +0 -268
- package/esm2015/sort/sort-module.js +0 -24
- package/esm2015/sort/sort.externs.js +0 -6
- package/esm2015/sort/sort.js +0 -140
- package/esm2015/sort/testing/sort-harness.js +0 -41
- package/esm2015/sort/testing/sort-header-harness.js +0 -67
- package/esm2015/sort/testing/testing.externs.js +0 -0
- package/esm2015/stepper/step-content.js +0 -25
- package/esm2015/stepper/step-header.js +0 -108
- package/esm2015/stepper/step-label.js +0 -17
- package/esm2015/stepper/stepper-button.js +0 -36
- package/esm2015/stepper/stepper-icon.js +0 -28
- package/esm2015/stepper/stepper-intl.js +0 -37
- package/esm2015/stepper/stepper-module.js +0 -61
- package/esm2015/stepper/stepper.externs.js +0 -6
- package/esm2015/stepper/stepper.js +0 -187
- package/esm2015/stepper/testing/step-harness.js +0 -111
- package/esm2015/stepper/testing/stepper-button-harnesses.js +0 -55
- package/esm2015/stepper/testing/stepper-harness.js +0 -57
- package/esm2015/stepper/testing/testing.externs.js +0 -0
- package/esm2015/table/cell.js +0 -114
- package/esm2015/table/row.js +0 -116
- package/esm2015/table/table-data-source.js +0 -312
- package/esm2015/table/table-module.js +0 -50
- package/esm2015/table/table.externs.js +0 -6
- package/esm2015/table/table.js +0 -63
- package/esm2015/table/testing/cell-harness.js +0 -77
- package/esm2015/table/testing/row-harness.js +0 -91
- package/esm2015/table/testing/table-harness.js +0 -99
- package/esm2015/table/testing/testing.externs.js +0 -0
- package/esm2015/table/text-column.js +0 -44
- package/esm2015/tabs/index.js +0 -9
- package/esm2015/tabs/ink-bar.js +0 -87
- package/esm2015/tabs/paginated-tab-header.js +0 -477
- package/esm2015/tabs/public-api.js +0 -20
- package/esm2015/tabs/tab-body.js +0 -212
- package/esm2015/tabs/tab-content.js +0 -31
- package/esm2015/tabs/tab-group.js +0 -357
- package/esm2015/tabs/tab-header.js +0 -94
- package/esm2015/tabs/tab-label-wrapper.js +0 -47
- package/esm2015/tabs/tab-label.js +0 -25
- package/esm2015/tabs/tab-nav-bar/tab-nav-bar.js +0 -241
- package/esm2015/tabs/tab.js +0 -106
- package/esm2015/tabs/tabs-module.js +0 -60
- package/esm2015/tabs/tabs.externs.js +0 -6
- package/esm2015/tabs/testing/tab-group-harness.js +0 -65
- package/esm2015/tabs/testing/tab-harness.js +0 -85
- package/esm2015/tabs/testing/tab-link-harness.js +0 -51
- package/esm2015/tabs/testing/tab-nav-bar-harness.js +0 -61
- package/esm2015/tabs/testing/testing.externs.js +0 -0
- package/esm2015/toolbar/testing/testing.externs.js +0 -0
- package/esm2015/toolbar/testing/toolbar-harness.js +0 -47
- package/esm2015/toolbar/toolbar-module.js +0 -20
- package/esm2015/toolbar/toolbar.externs.js +0 -6
- package/esm2015/toolbar/toolbar.js +0 -91
- package/esm2015/tooltip/testing/testing.externs.js +0 -0
- package/esm2015/tooltip/testing/tooltip-harness.js +0 -68
- package/esm2015/tooltip/tooltip-module.js +0 -31
- package/esm2015/tooltip/tooltip.externs.js +0 -6
- package/esm2015/tooltip/tooltip.js +0 -737
- package/esm2015/tree/node.js +0 -131
- package/esm2015/tree/outlet.js +0 -33
- package/esm2015/tree/padding.js +0 -31
- package/esm2015/tree/testing/node-harness.js +0 -84
- package/esm2015/tree/testing/testing.externs.js +0 -0
- package/esm2015/tree/testing/tree-harness.js +0 -129
- package/esm2015/tree/toggle.js +0 -32
- package/esm2015/tree/tree-module.js +0 -34
- package/esm2015/tree/tree.externs.js +0 -6
- package/esm2015/tree/tree.js +0 -43
- package/expansion/index.metadata.json +0 -1
- package/fesm2015/autocomplete/testing.js +0 -147
- package/fesm2015/autocomplete/testing.js.map +0 -1
- package/fesm2015/autocomplete.js +0 -901
- package/fesm2015/autocomplete.js.map +0 -1
- package/fesm2015/badge/testing.js +0 -112
- package/fesm2015/badge/testing.js.map +0 -1
- package/fesm2015/badge.js +0 -265
- package/fesm2015/badge.js.map +0 -1
- package/fesm2015/bottom-sheet/testing.js +0 -67
- package/fesm2015/bottom-sheet/testing.js.map +0 -1
- package/fesm2015/bottom-sheet.js +0 -603
- package/fesm2015/bottom-sheet.js.map +0 -1
- package/fesm2015/button/testing.js +0 -91
- package/fesm2015/button/testing.js.map +0 -1
- package/fesm2015/button-toggle/testing.js +0 -211
- package/fesm2015/button-toggle/testing.js.map +0 -1
- package/fesm2015/button-toggle.js +0 -473
- package/fesm2015/button-toggle.js.map +0 -1
- package/fesm2015/button.js +0 -205
- package/fesm2015/button.js.map +0 -1
- package/fesm2015/card/testing.js +0 -79
- package/fesm2015/card/testing.js.map +0 -1
- package/fesm2015/card.js +0 -276
- package/fesm2015/card.js.map +0 -1
- package/fesm2015/checkbox/testing.js +0 -183
- package/fesm2015/checkbox/testing.js.map +0 -1
- package/fesm2015/checkbox.js +0 -476
- package/fesm2015/checkbox.js.map +0 -1
- package/fesm2015/chips/testing.js +0 -465
- package/fesm2015/chips/testing.js.map +0 -1
- package/fesm2015/chips.js +0 -1286
- package/fesm2015/chips.js.map +0 -1
- package/fesm2015/core/testing.js +0 -150
- package/fesm2015/core/testing.js.map +0 -1
- package/fesm2015/core.js +0 -1692
- package/fesm2015/core.js.map +0 -1
- package/fesm2015/datepicker/testing.js +0 -692
- package/fesm2015/datepicker/testing.js.map +0 -1
- package/fesm2015/datepicker.js +0 -3745
- package/fesm2015/datepicker.js.map +0 -1
- package/fesm2015/dialog/testing.js +0 -130
- package/fesm2015/dialog/testing.js.map +0 -1
- package/fesm2015/dialog.js +0 -1127
- package/fesm2015/dialog.js.map +0 -1
- package/fesm2015/divider/testing.js +0 -54
- package/fesm2015/divider/testing.js.map +0 -1
- package/fesm2015/divider.js +0 -76
- package/fesm2015/divider.js.map +0 -1
- package/fesm2015/expansion/testing.js +0 -209
- package/fesm2015/expansion/testing.js.map +0 -1
- package/fesm2015/expansion.js +0 -600
- package/fesm2015/expansion.js.map +0 -1
- package/fesm2015/form-field/testing/control.js +0 -26
- package/fesm2015/form-field/testing/control.js.map +0 -1
- package/fesm2015/form-field/testing.js +0 -246
- package/fesm2015/form-field/testing.js.map +0 -1
- package/fesm2015/form-field.js +0 -757
- package/fesm2015/form-field.js.map +0 -1
- package/fesm2015/grid-list/testing.js +0 -183
- package/fesm2015/grid-list/testing.js.map +0 -1
- package/fesm2015/grid-list.js +0 -680
- package/fesm2015/grid-list.js.map +0 -1
- package/fesm2015/icon/testing.js +0 -171
- package/fesm2015/icon/testing.js.map +0 -1
- package/fesm2015/icon.js +0 -1012
- package/fesm2015/icon.js.map +0 -1
- package/fesm2015/input/testing.js +0 -318
- package/fesm2015/input/testing.js.map +0 -1
- package/fesm2015/input.js +0 -506
- package/fesm2015/input.js.map +0 -1
- package/fesm2015/list/testing.js +0 -529
- package/fesm2015/list/testing.js.map +0 -1
- package/fesm2015/list.js +0 -876
- package/fesm2015/list.js.map +0 -1
- package/fesm2015/material.js +0 -16
- package/fesm2015/material.js.map +0 -1
- package/fesm2015/menu/testing.js +0 -250
- package/fesm2015/menu/testing.js.map +0 -1
- package/fesm2015/menu.js +0 -1292
- package/fesm2015/menu.js.map +0 -1
- package/fesm2015/paginator/testing.js +0 -133
- package/fesm2015/paginator/testing.js.map +0 -1
- package/fesm2015/paginator.js +0 -366
- package/fesm2015/paginator.js.map +0 -1
- package/fesm2015/progress-bar/testing.js +0 -66
- package/fesm2015/progress-bar/testing.js.map +0 -1
- package/fesm2015/progress-bar.js +0 -211
- package/fesm2015/progress-bar.js.map +0 -1
- package/fesm2015/progress-spinner/testing.js +0 -67
- package/fesm2015/progress-spinner/testing.js.map +0 -1
- package/fesm2015/progress-spinner.js +0 -313
- package/fesm2015/progress-spinner.js.map +0 -1
- package/fesm2015/radio/testing.js +0 -299
- package/fesm2015/radio/testing.js.map +0 -1
- package/fesm2015/radio.js +0 -578
- package/fesm2015/radio.js.map +0 -1
- package/fesm2015/select/testing.js +0 -184
- package/fesm2015/select/testing.js.map +0 -1
- package/fesm2015/select.js +0 -1269
- package/fesm2015/select.js.map +0 -1
- package/fesm2015/sidenav/testing.js +0 -231
- package/fesm2015/sidenav/testing.js.map +0 -1
- package/fesm2015/sidenav.js +0 -965
- package/fesm2015/sidenav.js.map +0 -1
- package/fesm2015/slide-toggle/testing.js +0 -166
- package/fesm2015/slide-toggle/testing.js.map +0 -1
- package/fesm2015/slide-toggle.js +0 -329
- package/fesm2015/slide-toggle.js.map +0 -1
- package/fesm2015/slider/testing.js +0 -160
- package/fesm2015/slider/testing.js.map +0 -1
- package/fesm2015/slider.js +0 -820
- package/fesm2015/slider.js.map +0 -1
- package/fesm2015/snack-bar/testing.js +0 -169
- package/fesm2015/snack-bar/testing.js.map +0 -1
- package/fesm2015/snack-bar.js +0 -713
- package/fesm2015/snack-bar.js.map +0 -1
- package/fesm2015/sort/testing.js +0 -124
- package/fesm2015/sort/testing.js.map +0 -1
- package/fesm2015/sort.js +0 -587
- package/fesm2015/sort.js.map +0 -1
- package/fesm2015/stepper/testing.js +0 -237
- package/fesm2015/stepper/testing.js.map +0 -1
- package/fesm2015/stepper.js +0 -519
- package/fesm2015/stepper.js.map +0 -1
- package/fesm2015/table/testing.js +0 -280
- package/fesm2015/table/testing.js.map +0 -1
- package/fesm2015/table.js +0 -701
- package/fesm2015/table.js.map +0 -1
- package/fesm2015/tabs/testing.js +0 -273
- package/fesm2015/tabs/testing.js.map +0 -1
- package/fesm2015/tabs.js +0 -1746
- package/fesm2015/tabs.js.map +0 -1
- package/fesm2015/toolbar/testing.js +0 -74
- package/fesm2015/toolbar/testing.js.map +0 -1
- package/fesm2015/toolbar.js +0 -123
- package/fesm2015/toolbar.js.map +0 -1
- package/fesm2015/tooltip/testing.js +0 -95
- package/fesm2015/tooltip/testing.js.map +0 -1
- package/fesm2015/tooltip.js +0 -802
- package/fesm2015/tooltip.js.map +0 -1
- package/fesm2015/tree/testing.js +0 -237
- package/fesm2015/tree/testing.js.map +0 -1
- package/fesm2015/tree.js +0 -479
- package/fesm2015/tree.js.map +0 -1
- package/form-field/index.metadata.json +0 -1
- package/grid-list/index.metadata.json +0 -1
- package/icon/index.metadata.json +0 -1
- package/icon/testing/index.metadata.json +0 -1
- package/input/autosize.d.ts +0 -23
- package/input/index.metadata.json +0 -1
- package/list/index.metadata.json +0 -1
- package/menu/index.metadata.json +0 -1
- package/paginator/index.metadata.json +0 -1
- package/progress-bar/index.metadata.json +0 -1
- package/progress-spinner/index.metadata.json +0 -1
- package/radio/index.metadata.json +0 -1
- package/select/index.metadata.json +0 -1
- package/sidenav/index.metadata.json +0 -1
- package/slide-toggle/index.metadata.json +0 -1
- package/slider/index.metadata.json +0 -1
- package/snack-bar/index.metadata.json +0 -1
- package/sort/index.metadata.json +0 -1
- package/stepper/index.metadata.json +0 -1
- package/table/index.metadata.json +0 -1
- package/tabs/index.metadata.json +0 -1
- package/toolbar/index.metadata.json +0 -1
- package/tooltip/index.metadata.json +0 -1
- package/tree/index.metadata.json +0 -1
|
@@ -1,482 +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 { Directionality } from '@angular/cdk/bidi';
|
|
9
|
-
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
10
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ContentChildren, ElementRef, Inject, InjectionToken, Input, NgZone, Optional, QueryList, ViewChild, ViewEncapsulation, } from '@angular/core';
|
|
11
|
-
import { mixinColor, } from '@angular/material/core';
|
|
12
|
-
import { fromEvent, merge, Subject } from 'rxjs';
|
|
13
|
-
import { startWith, take, takeUntil } from 'rxjs/operators';
|
|
14
|
-
import { MAT_ERROR } from './error';
|
|
15
|
-
import { matFormFieldAnimations } from './form-field-animations';
|
|
16
|
-
import { MatFormFieldControl } from './form-field-control';
|
|
17
|
-
import { getMatFormFieldDuplicatedHintError, getMatFormFieldMissingControlError, getMatFormFieldPlaceholderConflictError, } from './form-field-errors';
|
|
18
|
-
import { _MAT_HINT } from './hint';
|
|
19
|
-
import { MatLabel } from './label';
|
|
20
|
-
import { MatPlaceholder } from './placeholder';
|
|
21
|
-
import { MAT_PREFIX } from './prefix';
|
|
22
|
-
import { MAT_SUFFIX } from './suffix';
|
|
23
|
-
import { Platform } from '@angular/cdk/platform';
|
|
24
|
-
import { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';
|
|
25
|
-
let nextUniqueId = 0;
|
|
26
|
-
const floatingLabelScale = 0.75;
|
|
27
|
-
const outlineGapPadding = 5;
|
|
28
|
-
/**
|
|
29
|
-
* Boilerplate for applying mixins to MatFormField.
|
|
30
|
-
* @docs-private
|
|
31
|
-
*/
|
|
32
|
-
const _MatFormFieldBase = mixinColor(class {
|
|
33
|
-
constructor(_elementRef) {
|
|
34
|
-
this._elementRef = _elementRef;
|
|
35
|
-
}
|
|
36
|
-
}, 'primary');
|
|
37
|
-
/**
|
|
38
|
-
* Injection token that can be used to configure the
|
|
39
|
-
* default options for all form field within an app.
|
|
40
|
-
*/
|
|
41
|
-
export const MAT_FORM_FIELD_DEFAULT_OPTIONS = new InjectionToken('MAT_FORM_FIELD_DEFAULT_OPTIONS');
|
|
42
|
-
/**
|
|
43
|
-
* Injection token that can be used to inject an instances of `MatFormField`. It serves
|
|
44
|
-
* as alternative token to the actual `MatFormField` class which would cause unnecessary
|
|
45
|
-
* retention of the `MatFormField` class and its component metadata.
|
|
46
|
-
*/
|
|
47
|
-
export const MAT_FORM_FIELD = new InjectionToken('MatFormField');
|
|
48
|
-
/** Container for form controls that applies Material Design styling and behavior. */
|
|
49
|
-
export class MatFormField extends _MatFormFieldBase {
|
|
50
|
-
constructor(elementRef, _changeDetectorRef, _dir, _defaults, _platform, _ngZone, _animationMode) {
|
|
51
|
-
super(elementRef);
|
|
52
|
-
this._changeDetectorRef = _changeDetectorRef;
|
|
53
|
-
this._dir = _dir;
|
|
54
|
-
this._defaults = _defaults;
|
|
55
|
-
this._platform = _platform;
|
|
56
|
-
this._ngZone = _ngZone;
|
|
57
|
-
/**
|
|
58
|
-
* Whether the outline gap needs to be calculated
|
|
59
|
-
* immediately on the next change detection run.
|
|
60
|
-
*/
|
|
61
|
-
this._outlineGapCalculationNeededImmediately = false;
|
|
62
|
-
/** Whether the outline gap needs to be calculated next time the zone has stabilized. */
|
|
63
|
-
this._outlineGapCalculationNeededOnStable = false;
|
|
64
|
-
this._destroyed = new Subject();
|
|
65
|
-
/** Override for the logic that disables the label animation in certain cases. */
|
|
66
|
-
this._showAlwaysAnimate = false;
|
|
67
|
-
/** State of the mat-hint and mat-error animations. */
|
|
68
|
-
this._subscriptAnimationState = '';
|
|
69
|
-
this._hintLabel = '';
|
|
70
|
-
// Unique id for the hint label.
|
|
71
|
-
this._hintLabelId = `mat-hint-${nextUniqueId++}`;
|
|
72
|
-
// Unique id for the label element.
|
|
73
|
-
this._labelId = `mat-form-field-label-${nextUniqueId++}`;
|
|
74
|
-
this.floatLabel = this._getDefaultFloatLabelState();
|
|
75
|
-
this._animationsEnabled = _animationMode !== 'NoopAnimations';
|
|
76
|
-
// Set the default through here so we invoke the setter on the first run.
|
|
77
|
-
this.appearance = (_defaults && _defaults.appearance) ? _defaults.appearance : 'legacy';
|
|
78
|
-
this._hideRequiredMarker = (_defaults && _defaults.hideRequiredMarker != null) ?
|
|
79
|
-
_defaults.hideRequiredMarker : false;
|
|
80
|
-
}
|
|
81
|
-
/** The form-field appearance style. */
|
|
82
|
-
get appearance() { return this._appearance; }
|
|
83
|
-
set appearance(value) {
|
|
84
|
-
const oldValue = this._appearance;
|
|
85
|
-
this._appearance = value || (this._defaults && this._defaults.appearance) || 'legacy';
|
|
86
|
-
if (this._appearance === 'outline' && oldValue !== value) {
|
|
87
|
-
this._outlineGapCalculationNeededOnStable = true;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
/** Whether the required marker should be hidden. */
|
|
91
|
-
get hideRequiredMarker() { return this._hideRequiredMarker; }
|
|
92
|
-
set hideRequiredMarker(value) {
|
|
93
|
-
this._hideRequiredMarker = coerceBooleanProperty(value);
|
|
94
|
-
}
|
|
95
|
-
/** Whether the floating label should always float or not. */
|
|
96
|
-
_shouldAlwaysFloat() {
|
|
97
|
-
return this.floatLabel === 'always' && !this._showAlwaysAnimate;
|
|
98
|
-
}
|
|
99
|
-
/** Whether the label can float or not. */
|
|
100
|
-
_canLabelFloat() { return this.floatLabel !== 'never'; }
|
|
101
|
-
/** Text for the form field hint. */
|
|
102
|
-
get hintLabel() { return this._hintLabel; }
|
|
103
|
-
set hintLabel(value) {
|
|
104
|
-
this._hintLabel = value;
|
|
105
|
-
this._processHints();
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* Whether the label should always float, never float or float as the user types.
|
|
109
|
-
*
|
|
110
|
-
* Note: only the legacy appearance supports the `never` option. `never` was originally added as a
|
|
111
|
-
* way to make the floating label emulate the behavior of a standard input placeholder. However
|
|
112
|
-
* the form field now supports both floating labels and placeholders. Therefore in the non-legacy
|
|
113
|
-
* appearances the `never` option has been disabled in favor of just using the placeholder.
|
|
114
|
-
*/
|
|
115
|
-
get floatLabel() {
|
|
116
|
-
return this.appearance !== 'legacy' && this._floatLabel === 'never' ? 'auto' : this._floatLabel;
|
|
117
|
-
}
|
|
118
|
-
set floatLabel(value) {
|
|
119
|
-
if (value !== this._floatLabel) {
|
|
120
|
-
this._floatLabel = value || this._getDefaultFloatLabelState();
|
|
121
|
-
this._changeDetectorRef.markForCheck();
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
get _control() {
|
|
125
|
-
// TODO(crisbeto): we need this workaround in order to support both Ivy and ViewEngine.
|
|
126
|
-
// We should clean this up once Ivy is the default renderer.
|
|
127
|
-
return this._explicitFormFieldControl || this._controlNonStatic || this._controlStatic;
|
|
128
|
-
}
|
|
129
|
-
set _control(value) {
|
|
130
|
-
this._explicitFormFieldControl = value;
|
|
131
|
-
}
|
|
132
|
-
/**
|
|
133
|
-
* Gets the id of the label element. If no label is present, returns `null`.
|
|
134
|
-
*/
|
|
135
|
-
getLabelId() {
|
|
136
|
-
return this._hasFloatingLabel() ? this._labelId : null;
|
|
137
|
-
}
|
|
138
|
-
/**
|
|
139
|
-
* Gets an ElementRef for the element that a overlay attached to the form-field should be
|
|
140
|
-
* positioned relative to.
|
|
141
|
-
*/
|
|
142
|
-
getConnectedOverlayOrigin() {
|
|
143
|
-
return this._connectionContainerRef || this._elementRef;
|
|
144
|
-
}
|
|
145
|
-
ngAfterContentInit() {
|
|
146
|
-
this._validateControlChild();
|
|
147
|
-
const control = this._control;
|
|
148
|
-
if (control.controlType) {
|
|
149
|
-
this._elementRef.nativeElement.classList.add(`mat-form-field-type-${control.controlType}`);
|
|
150
|
-
}
|
|
151
|
-
// Subscribe to changes in the child control state in order to update the form field UI.
|
|
152
|
-
control.stateChanges.pipe(startWith(null)).subscribe(() => {
|
|
153
|
-
this._validatePlaceholders();
|
|
154
|
-
this._syncDescribedByIds();
|
|
155
|
-
this._changeDetectorRef.markForCheck();
|
|
156
|
-
});
|
|
157
|
-
// Run change detection if the value changes.
|
|
158
|
-
if (control.ngControl && control.ngControl.valueChanges) {
|
|
159
|
-
control.ngControl.valueChanges
|
|
160
|
-
.pipe(takeUntil(this._destroyed))
|
|
161
|
-
.subscribe(() => this._changeDetectorRef.markForCheck());
|
|
162
|
-
}
|
|
163
|
-
// Note that we have to run outside of the `NgZone` explicitly,
|
|
164
|
-
// in order to avoid throwing users into an infinite loop
|
|
165
|
-
// if `zone-patch-rxjs` is included.
|
|
166
|
-
this._ngZone.runOutsideAngular(() => {
|
|
167
|
-
this._ngZone.onStable.pipe(takeUntil(this._destroyed)).subscribe(() => {
|
|
168
|
-
if (this._outlineGapCalculationNeededOnStable) {
|
|
169
|
-
this.updateOutlineGap();
|
|
170
|
-
}
|
|
171
|
-
});
|
|
172
|
-
});
|
|
173
|
-
// Run change detection and update the outline if the suffix or prefix changes.
|
|
174
|
-
merge(this._prefixChildren.changes, this._suffixChildren.changes).subscribe(() => {
|
|
175
|
-
this._outlineGapCalculationNeededOnStable = true;
|
|
176
|
-
this._changeDetectorRef.markForCheck();
|
|
177
|
-
});
|
|
178
|
-
// Re-validate when the number of hints changes.
|
|
179
|
-
this._hintChildren.changes.pipe(startWith(null)).subscribe(() => {
|
|
180
|
-
this._processHints();
|
|
181
|
-
this._changeDetectorRef.markForCheck();
|
|
182
|
-
});
|
|
183
|
-
// Update the aria-described by when the number of errors changes.
|
|
184
|
-
this._errorChildren.changes.pipe(startWith(null)).subscribe(() => {
|
|
185
|
-
this._syncDescribedByIds();
|
|
186
|
-
this._changeDetectorRef.markForCheck();
|
|
187
|
-
});
|
|
188
|
-
if (this._dir) {
|
|
189
|
-
this._dir.change.pipe(takeUntil(this._destroyed)).subscribe(() => {
|
|
190
|
-
if (typeof requestAnimationFrame === 'function') {
|
|
191
|
-
this._ngZone.runOutsideAngular(() => {
|
|
192
|
-
requestAnimationFrame(() => this.updateOutlineGap());
|
|
193
|
-
});
|
|
194
|
-
}
|
|
195
|
-
else {
|
|
196
|
-
this.updateOutlineGap();
|
|
197
|
-
}
|
|
198
|
-
});
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
ngAfterContentChecked() {
|
|
202
|
-
this._validateControlChild();
|
|
203
|
-
if (this._outlineGapCalculationNeededImmediately) {
|
|
204
|
-
this.updateOutlineGap();
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
ngAfterViewInit() {
|
|
208
|
-
// Avoid animations on load.
|
|
209
|
-
this._subscriptAnimationState = 'enter';
|
|
210
|
-
this._changeDetectorRef.detectChanges();
|
|
211
|
-
}
|
|
212
|
-
ngOnDestroy() {
|
|
213
|
-
this._destroyed.next();
|
|
214
|
-
this._destroyed.complete();
|
|
215
|
-
}
|
|
216
|
-
/** Determines whether a class from the NgControl should be forwarded to the host element. */
|
|
217
|
-
_shouldForward(prop) {
|
|
218
|
-
const ngControl = this._control ? this._control.ngControl : null;
|
|
219
|
-
return ngControl && ngControl[prop];
|
|
220
|
-
}
|
|
221
|
-
_hasPlaceholder() {
|
|
222
|
-
return !!(this._control && this._control.placeholder || this._placeholderChild);
|
|
223
|
-
}
|
|
224
|
-
_hasLabel() {
|
|
225
|
-
return !!(this._labelChildNonStatic || this._labelChildStatic);
|
|
226
|
-
}
|
|
227
|
-
_shouldLabelFloat() {
|
|
228
|
-
return this._canLabelFloat() &&
|
|
229
|
-
((this._control && this._control.shouldLabelFloat) || this._shouldAlwaysFloat());
|
|
230
|
-
}
|
|
231
|
-
_hideControlPlaceholder() {
|
|
232
|
-
// In the legacy appearance the placeholder is promoted to a label if no label is given.
|
|
233
|
-
return this.appearance === 'legacy' && !this._hasLabel() ||
|
|
234
|
-
this._hasLabel() && !this._shouldLabelFloat();
|
|
235
|
-
}
|
|
236
|
-
_hasFloatingLabel() {
|
|
237
|
-
// In the legacy appearance the placeholder is promoted to a label if no label is given.
|
|
238
|
-
return this._hasLabel() || this.appearance === 'legacy' && this._hasPlaceholder();
|
|
239
|
-
}
|
|
240
|
-
/** Determines whether to display hints or errors. */
|
|
241
|
-
_getDisplayedMessages() {
|
|
242
|
-
return (this._errorChildren && this._errorChildren.length > 0 &&
|
|
243
|
-
this._control.errorState) ? 'error' : 'hint';
|
|
244
|
-
}
|
|
245
|
-
/** Animates the placeholder up and locks it in position. */
|
|
246
|
-
_animateAndLockLabel() {
|
|
247
|
-
if (this._hasFloatingLabel() && this._canLabelFloat()) {
|
|
248
|
-
// If animations are disabled, we shouldn't go in here,
|
|
249
|
-
// because the `transitionend` will never fire.
|
|
250
|
-
if (this._animationsEnabled && this._label) {
|
|
251
|
-
this._showAlwaysAnimate = true;
|
|
252
|
-
fromEvent(this._label.nativeElement, 'transitionend').pipe(take(1)).subscribe(() => {
|
|
253
|
-
this._showAlwaysAnimate = false;
|
|
254
|
-
});
|
|
255
|
-
}
|
|
256
|
-
this.floatLabel = 'always';
|
|
257
|
-
this._changeDetectorRef.markForCheck();
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
/**
|
|
261
|
-
* Ensure that there is only one placeholder (either `placeholder` attribute on the child control
|
|
262
|
-
* or child element with the `mat-placeholder` directive).
|
|
263
|
-
*/
|
|
264
|
-
_validatePlaceholders() {
|
|
265
|
-
if (this._control.placeholder && this._placeholderChild &&
|
|
266
|
-
(typeof ngDevMode === 'undefined' || ngDevMode)) {
|
|
267
|
-
throw getMatFormFieldPlaceholderConflictError();
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
/** Does any extra processing that is required when handling the hints. */
|
|
271
|
-
_processHints() {
|
|
272
|
-
this._validateHints();
|
|
273
|
-
this._syncDescribedByIds();
|
|
274
|
-
}
|
|
275
|
-
/**
|
|
276
|
-
* Ensure that there is a maximum of one of each `<mat-hint>` alignment specified, with the
|
|
277
|
-
* attribute being considered as `align="start"`.
|
|
278
|
-
*/
|
|
279
|
-
_validateHints() {
|
|
280
|
-
if (this._hintChildren && (typeof ngDevMode === 'undefined' || ngDevMode)) {
|
|
281
|
-
let startHint;
|
|
282
|
-
let endHint;
|
|
283
|
-
this._hintChildren.forEach((hint) => {
|
|
284
|
-
if (hint.align === 'start') {
|
|
285
|
-
if (startHint || this.hintLabel) {
|
|
286
|
-
throw getMatFormFieldDuplicatedHintError('start');
|
|
287
|
-
}
|
|
288
|
-
startHint = hint;
|
|
289
|
-
}
|
|
290
|
-
else if (hint.align === 'end') {
|
|
291
|
-
if (endHint) {
|
|
292
|
-
throw getMatFormFieldDuplicatedHintError('end');
|
|
293
|
-
}
|
|
294
|
-
endHint = hint;
|
|
295
|
-
}
|
|
296
|
-
});
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
/** Gets the default float label state. */
|
|
300
|
-
_getDefaultFloatLabelState() {
|
|
301
|
-
return (this._defaults && this._defaults.floatLabel) || 'auto';
|
|
302
|
-
}
|
|
303
|
-
/**
|
|
304
|
-
* Sets the list of element IDs that describe the child control. This allows the control to update
|
|
305
|
-
* its `aria-describedby` attribute accordingly.
|
|
306
|
-
*/
|
|
307
|
-
_syncDescribedByIds() {
|
|
308
|
-
if (this._control) {
|
|
309
|
-
let ids = [];
|
|
310
|
-
// TODO(wagnermaciel): Remove the type check when we find the root cause of this bug.
|
|
311
|
-
if (this._control.userAriaDescribedBy &&
|
|
312
|
-
typeof this._control.userAriaDescribedBy === 'string') {
|
|
313
|
-
ids.push(...this._control.userAriaDescribedBy.split(' '));
|
|
314
|
-
}
|
|
315
|
-
if (this._getDisplayedMessages() === 'hint') {
|
|
316
|
-
const startHint = this._hintChildren ?
|
|
317
|
-
this._hintChildren.find(hint => hint.align === 'start') : null;
|
|
318
|
-
const endHint = this._hintChildren ?
|
|
319
|
-
this._hintChildren.find(hint => hint.align === 'end') : null;
|
|
320
|
-
if (startHint) {
|
|
321
|
-
ids.push(startHint.id);
|
|
322
|
-
}
|
|
323
|
-
else if (this._hintLabel) {
|
|
324
|
-
ids.push(this._hintLabelId);
|
|
325
|
-
}
|
|
326
|
-
if (endHint) {
|
|
327
|
-
ids.push(endHint.id);
|
|
328
|
-
}
|
|
329
|
-
}
|
|
330
|
-
else if (this._errorChildren) {
|
|
331
|
-
ids.push(...this._errorChildren.map(error => error.id));
|
|
332
|
-
}
|
|
333
|
-
this._control.setDescribedByIds(ids);
|
|
334
|
-
}
|
|
335
|
-
}
|
|
336
|
-
/** Throws an error if the form field's control is missing. */
|
|
337
|
-
_validateControlChild() {
|
|
338
|
-
if (!this._control && (typeof ngDevMode === 'undefined' || ngDevMode)) {
|
|
339
|
-
throw getMatFormFieldMissingControlError();
|
|
340
|
-
}
|
|
341
|
-
}
|
|
342
|
-
/**
|
|
343
|
-
* Updates the width and position of the gap in the outline. Only relevant for the outline
|
|
344
|
-
* appearance.
|
|
345
|
-
*/
|
|
346
|
-
updateOutlineGap() {
|
|
347
|
-
const labelEl = this._label ? this._label.nativeElement : null;
|
|
348
|
-
if (this.appearance !== 'outline' || !labelEl || !labelEl.children.length ||
|
|
349
|
-
!labelEl.textContent.trim()) {
|
|
350
|
-
return;
|
|
351
|
-
}
|
|
352
|
-
if (!this._platform.isBrowser) {
|
|
353
|
-
// getBoundingClientRect isn't available on the server.
|
|
354
|
-
return;
|
|
355
|
-
}
|
|
356
|
-
// If the element is not present in the DOM, the outline gap will need to be calculated
|
|
357
|
-
// the next time it is checked and in the DOM.
|
|
358
|
-
if (!this._isAttachedToDOM()) {
|
|
359
|
-
this._outlineGapCalculationNeededImmediately = true;
|
|
360
|
-
return;
|
|
361
|
-
}
|
|
362
|
-
let startWidth = 0;
|
|
363
|
-
let gapWidth = 0;
|
|
364
|
-
const container = this._connectionContainerRef.nativeElement;
|
|
365
|
-
const startEls = container.querySelectorAll('.mat-form-field-outline-start');
|
|
366
|
-
const gapEls = container.querySelectorAll('.mat-form-field-outline-gap');
|
|
367
|
-
if (this._label && this._label.nativeElement.children.length) {
|
|
368
|
-
const containerRect = container.getBoundingClientRect();
|
|
369
|
-
// If the container's width and height are zero, it means that the element is
|
|
370
|
-
// invisible and we can't calculate the outline gap. Mark the element as needing
|
|
371
|
-
// to be checked the next time the zone stabilizes. We can't do this immediately
|
|
372
|
-
// on the next change detection, because even if the element becomes visible,
|
|
373
|
-
// the `ClientRect` won't be reclaculated immediately. We reset the
|
|
374
|
-
// `_outlineGapCalculationNeededImmediately` flag some we don't run the checks twice.
|
|
375
|
-
if (containerRect.width === 0 && containerRect.height === 0) {
|
|
376
|
-
this._outlineGapCalculationNeededOnStable = true;
|
|
377
|
-
this._outlineGapCalculationNeededImmediately = false;
|
|
378
|
-
return;
|
|
379
|
-
}
|
|
380
|
-
const containerStart = this._getStartEnd(containerRect);
|
|
381
|
-
const labelChildren = labelEl.children;
|
|
382
|
-
const labelStart = this._getStartEnd(labelChildren[0].getBoundingClientRect());
|
|
383
|
-
let labelWidth = 0;
|
|
384
|
-
for (let i = 0; i < labelChildren.length; i++) {
|
|
385
|
-
labelWidth += labelChildren[i].offsetWidth;
|
|
386
|
-
}
|
|
387
|
-
startWidth = Math.abs(labelStart - containerStart) - outlineGapPadding;
|
|
388
|
-
gapWidth = labelWidth > 0 ? labelWidth * floatingLabelScale + outlineGapPadding * 2 : 0;
|
|
389
|
-
}
|
|
390
|
-
for (let i = 0; i < startEls.length; i++) {
|
|
391
|
-
startEls[i].style.width = `${startWidth}px`;
|
|
392
|
-
}
|
|
393
|
-
for (let i = 0; i < gapEls.length; i++) {
|
|
394
|
-
gapEls[i].style.width = `${gapWidth}px`;
|
|
395
|
-
}
|
|
396
|
-
this._outlineGapCalculationNeededOnStable =
|
|
397
|
-
this._outlineGapCalculationNeededImmediately = false;
|
|
398
|
-
}
|
|
399
|
-
/** Gets the start end of the rect considering the current directionality. */
|
|
400
|
-
_getStartEnd(rect) {
|
|
401
|
-
return (this._dir && this._dir.value === 'rtl') ? rect.right : rect.left;
|
|
402
|
-
}
|
|
403
|
-
/** Checks whether the form field is attached to the DOM. */
|
|
404
|
-
_isAttachedToDOM() {
|
|
405
|
-
const element = this._elementRef.nativeElement;
|
|
406
|
-
if (element.getRootNode) {
|
|
407
|
-
const rootNode = element.getRootNode();
|
|
408
|
-
// If the element is inside the DOM the root node will be either the document
|
|
409
|
-
// or the closest shadow root, otherwise it'll be the element itself.
|
|
410
|
-
return rootNode && rootNode !== element;
|
|
411
|
-
}
|
|
412
|
-
// Otherwise fall back to checking if it's in the document. This doesn't account for
|
|
413
|
-
// shadow DOM, however browser that support shadow DOM should support `getRootNode` as well.
|
|
414
|
-
return document.documentElement.contains(element);
|
|
415
|
-
}
|
|
416
|
-
}
|
|
417
|
-
MatFormField.decorators = [
|
|
418
|
-
{ type: Component, args: [{
|
|
419
|
-
selector: 'mat-form-field',
|
|
420
|
-
exportAs: 'matFormField',
|
|
421
|
-
template: "<div class=\"mat-form-field-wrapper\">\n <div class=\"mat-form-field-flex\" #connectionContainer\n (click)=\"_control.onContainerClick && _control.onContainerClick($event)\">\n\n <!-- Outline used for outline appearance. -->\n <ng-container *ngIf=\"appearance == 'outline'\">\n <div class=\"mat-form-field-outline\">\n <div class=\"mat-form-field-outline-start\"></div>\n <div class=\"mat-form-field-outline-gap\"></div>\n <div class=\"mat-form-field-outline-end\"></div>\n </div>\n <div class=\"mat-form-field-outline mat-form-field-outline-thick\">\n <div class=\"mat-form-field-outline-start\"></div>\n <div class=\"mat-form-field-outline-gap\"></div>\n <div class=\"mat-form-field-outline-end\"></div>\n </div>\n </ng-container>\n\n <div class=\"mat-form-field-prefix\" *ngIf=\"_prefixChildren.length\">\n <ng-content select=\"[matPrefix]\"></ng-content>\n </div>\n\n <div class=\"mat-form-field-infix\" #inputContainer>\n <ng-content></ng-content>\n\n <span class=\"mat-form-field-label-wrapper\">\n <!-- We add aria-owns as a workaround for an issue in JAWS & NVDA where the label isn't\n read if it comes before the control in the DOM. -->\n <label class=\"mat-form-field-label\"\n (cdkObserveContent)=\"updateOutlineGap()\"\n [cdkObserveContentDisabled]=\"appearance != 'outline'\"\n [id]=\"_labelId\"\n [attr.for]=\"_control.id\"\n [attr.aria-owns]=\"_control.id\"\n [class.mat-empty]=\"_control.empty && !_shouldAlwaysFloat()\"\n [class.mat-form-field-empty]=\"_control.empty && !_shouldAlwaysFloat()\"\n [class.mat-accent]=\"color == 'accent'\"\n [class.mat-warn]=\"color == 'warn'\"\n #label\n *ngIf=\"_hasFloatingLabel()\"\n [ngSwitch]=\"_hasLabel()\">\n\n <!-- @breaking-change 8.0.0 remove in favor of mat-label element an placeholder attr. -->\n <ng-container *ngSwitchCase=\"false\">\n <ng-content select=\"mat-placeholder\"></ng-content>\n <span>{{_control.placeholder}}</span>\n </ng-container>\n\n <ng-content select=\"mat-label\" *ngSwitchCase=\"true\"></ng-content>\n\n <!-- @breaking-change 8.0.0 remove `mat-placeholder-required` class -->\n <span\n class=\"mat-placeholder-required mat-form-field-required-marker\"\n aria-hidden=\"true\"\n *ngIf=\"!hideRequiredMarker && _control.required && !_control.disabled\"> *</span>\n </label>\n </span>\n </div>\n\n <div class=\"mat-form-field-suffix\" *ngIf=\"_suffixChildren.length\">\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </div>\n\n <!-- Underline used for legacy, standard, and box appearances. -->\n <div class=\"mat-form-field-underline\"\n *ngIf=\"appearance != 'outline'\">\n <span class=\"mat-form-field-ripple\"\n [class.mat-accent]=\"color == 'accent'\"\n [class.mat-warn]=\"color == 'warn'\"></span>\n </div>\n\n <div class=\"mat-form-field-subscript-wrapper\"\n [ngSwitch]=\"_getDisplayedMessages()\">\n <div *ngSwitchCase=\"'error'\" [@transitionMessages]=\"_subscriptAnimationState\">\n <ng-content select=\"mat-error\"></ng-content>\n </div>\n\n <div class=\"mat-form-field-hint-wrapper\" *ngSwitchCase=\"'hint'\"\n [@transitionMessages]=\"_subscriptAnimationState\">\n <!-- TODO(mmalerba): use an actual <mat-hint> once all selectors are switched to mat-* -->\n <div *ngIf=\"hintLabel\" [id]=\"_hintLabelId\" class=\"mat-hint\">{{hintLabel}}</div>\n <ng-content select=\"mat-hint:not([align='end'])\"></ng-content>\n <div class=\"mat-form-field-hint-spacer\"></div>\n <ng-content select=\"mat-hint[align='end']\"></ng-content>\n </div>\n </div>\n</div>\n",
|
|
422
|
-
animations: [matFormFieldAnimations.transitionMessages],
|
|
423
|
-
host: {
|
|
424
|
-
'class': 'mat-form-field',
|
|
425
|
-
'[class.mat-form-field-appearance-standard]': 'appearance == "standard"',
|
|
426
|
-
'[class.mat-form-field-appearance-fill]': 'appearance == "fill"',
|
|
427
|
-
'[class.mat-form-field-appearance-outline]': 'appearance == "outline"',
|
|
428
|
-
'[class.mat-form-field-appearance-legacy]': 'appearance == "legacy"',
|
|
429
|
-
'[class.mat-form-field-invalid]': '_control.errorState',
|
|
430
|
-
'[class.mat-form-field-can-float]': '_canLabelFloat()',
|
|
431
|
-
'[class.mat-form-field-should-float]': '_shouldLabelFloat()',
|
|
432
|
-
'[class.mat-form-field-has-label]': '_hasFloatingLabel()',
|
|
433
|
-
'[class.mat-form-field-hide-placeholder]': '_hideControlPlaceholder()',
|
|
434
|
-
'[class.mat-form-field-disabled]': '_control.disabled',
|
|
435
|
-
'[class.mat-form-field-autofilled]': '_control.autofilled',
|
|
436
|
-
'[class.mat-focused]': '_control.focused',
|
|
437
|
-
'[class.ng-untouched]': '_shouldForward("untouched")',
|
|
438
|
-
'[class.ng-touched]': '_shouldForward("touched")',
|
|
439
|
-
'[class.ng-pristine]': '_shouldForward("pristine")',
|
|
440
|
-
'[class.ng-dirty]': '_shouldForward("dirty")',
|
|
441
|
-
'[class.ng-valid]': '_shouldForward("valid")',
|
|
442
|
-
'[class.ng-invalid]': '_shouldForward("invalid")',
|
|
443
|
-
'[class.ng-pending]': '_shouldForward("pending")',
|
|
444
|
-
'[class._mat-animation-noopable]': '!_animationsEnabled',
|
|
445
|
-
},
|
|
446
|
-
inputs: ['color'],
|
|
447
|
-
encapsulation: ViewEncapsulation.None,
|
|
448
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
449
|
-
providers: [
|
|
450
|
-
{ provide: MAT_FORM_FIELD, useExisting: MatFormField },
|
|
451
|
-
],
|
|
452
|
-
styles: [".mat-form-field{display:inline-block;position:relative;text-align:left}[dir=rtl] .mat-form-field{text-align:right}.mat-form-field-wrapper{position:relative}.mat-form-field-flex{display:inline-flex;align-items:baseline;box-sizing:border-box;width:100%}.mat-form-field-prefix,.mat-form-field-suffix{white-space:nowrap;flex:none;position:relative}.mat-form-field-infix{display:block;position:relative;flex:auto;min-width:0;width:180px}.cdk-high-contrast-active .mat-form-field-infix{border-image:linear-gradient(transparent, transparent)}.mat-form-field-label-wrapper{position:absolute;left:0;box-sizing:content-box;width:100%;height:100%;overflow:hidden;pointer-events:none}[dir=rtl] .mat-form-field-label-wrapper{left:auto;right:0}.mat-form-field-label{position:absolute;left:0;font:inherit;pointer-events:none;width:100%;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;transform-origin:0 0;transition:transform 400ms cubic-bezier(0.25, 0.8, 0.25, 1),color 400ms cubic-bezier(0.25, 0.8, 0.25, 1),width 400ms cubic-bezier(0.25, 0.8, 0.25, 1);display:none}[dir=rtl] .mat-form-field-label{transform-origin:100% 0;left:auto;right:0}.mat-form-field-empty.mat-form-field-label,.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label{display:block}.mat-form-field-autofill-control:-webkit-autofill+.mat-form-field-label-wrapper .mat-form-field-label{display:none}.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill+.mat-form-field-label-wrapper .mat-form-field-label{display:block;transition:none}.mat-input-server:focus+.mat-form-field-label-wrapper .mat-form-field-label,.mat-input-server[placeholder]:not(:placeholder-shown)+.mat-form-field-label-wrapper .mat-form-field-label{display:none}.mat-form-field-can-float .mat-input-server:focus+.mat-form-field-label-wrapper .mat-form-field-label,.mat-form-field-can-float .mat-input-server[placeholder]:not(:placeholder-shown)+.mat-form-field-label-wrapper .mat-form-field-label{display:block}.mat-form-field-label:not(.mat-form-field-empty){transition:none}.mat-form-field-underline{position:absolute;width:100%;pointer-events:none;transform:scale3d(1, 1.0001, 1)}.mat-form-field-ripple{position:absolute;left:0;width:100%;transform-origin:50%;transform:scaleX(0.5);opacity:0;transition:background-color 300ms cubic-bezier(0.55, 0, 0.55, 0.2)}.mat-form-field.mat-focused .mat-form-field-ripple,.mat-form-field.mat-form-field-invalid .mat-form-field-ripple{opacity:1;transform:none;transition:transform 300ms cubic-bezier(0.25, 0.8, 0.25, 1),opacity 100ms cubic-bezier(0.25, 0.8, 0.25, 1),background-color 300ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-form-field-subscript-wrapper{position:absolute;box-sizing:border-box;width:100%;overflow:hidden}.mat-form-field-subscript-wrapper .mat-icon,.mat-form-field-label-wrapper .mat-icon{width:1em;height:1em;font-size:inherit;vertical-align:baseline}.mat-form-field-hint-wrapper{display:flex}.mat-form-field-hint-spacer{flex:1 0 1em}.mat-error{display:block}.mat-form-field-control-wrapper{position:relative}.mat-form-field-hint-end{order:1}.mat-form-field._mat-animation-noopable .mat-form-field-label,.mat-form-field._mat-animation-noopable .mat-form-field-ripple{transition:none}\n", ".mat-form-field-appearance-fill .mat-form-field-flex{border-radius:4px 4px 0 0;padding:.75em .75em 0 .75em}.cdk-high-contrast-active .mat-form-field-appearance-fill .mat-form-field-flex{outline:solid 1px}.cdk-high-contrast-active .mat-form-field-appearance-fill.mat-focused .mat-form-field-flex{outline:dashed 3px}.mat-form-field-appearance-fill .mat-form-field-underline::before{content:\"\";display:block;position:absolute;bottom:0;height:1px;width:100%}.mat-form-field-appearance-fill .mat-form-field-ripple{bottom:0;height:2px}.cdk-high-contrast-active .mat-form-field-appearance-fill .mat-form-field-ripple{height:0}.mat-form-field-appearance-fill:not(.mat-form-field-disabled) .mat-form-field-flex:hover~.mat-form-field-underline .mat-form-field-ripple{opacity:1;transform:none;transition:opacity 600ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-form-field-appearance-fill._mat-animation-noopable:not(.mat-form-field-disabled) .mat-form-field-flex:hover~.mat-form-field-underline .mat-form-field-ripple{transition:none}.mat-form-field-appearance-fill .mat-form-field-subscript-wrapper{padding:0 1em}\n", ".mat-input-element{font:inherit;background:transparent;color:currentColor;border:none;outline:none;padding:0;margin:0;width:100%;max-width:100%;vertical-align:bottom;text-align:inherit;box-sizing:content-box}.mat-input-element:-moz-ui-invalid{box-shadow:none}.mat-input-element,.mat-input-element::-webkit-search-cancel-button,.mat-input-element::-webkit-search-decoration,.mat-input-element::-webkit-search-results-button,.mat-input-element::-webkit-search-results-decoration{-webkit-appearance:none}.mat-input-element::-webkit-contacts-auto-fill-button,.mat-input-element::-webkit-caps-lock-indicator,.mat-input-element::-webkit-credentials-auto-fill-button{visibility:hidden}.mat-input-element[type=date],.mat-input-element[type=datetime],.mat-input-element[type=datetime-local],.mat-input-element[type=month],.mat-input-element[type=week],.mat-input-element[type=time]{line-height:1}.mat-input-element[type=date]::after,.mat-input-element[type=datetime]::after,.mat-input-element[type=datetime-local]::after,.mat-input-element[type=month]::after,.mat-input-element[type=week]::after,.mat-input-element[type=time]::after{content:\" \";white-space:pre;width:1px}.mat-input-element::-webkit-inner-spin-button,.mat-input-element::-webkit-calendar-picker-indicator,.mat-input-element::-webkit-clear-button{font-size:.75em}.mat-input-element::placeholder{-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-input-element::-moz-placeholder{-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-input-element::-webkit-input-placeholder{-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-input-element:-ms-input-placeholder{-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-form-field-hide-placeholder .mat-input-element::placeholder{color:transparent !important;-webkit-text-fill-color:transparent;transition:none}.cdk-high-contrast-active .mat-form-field-hide-placeholder .mat-input-element::placeholder{opacity:0}.mat-form-field-hide-placeholder .mat-input-element::-moz-placeholder{color:transparent !important;-webkit-text-fill-color:transparent;transition:none}.cdk-high-contrast-active .mat-form-field-hide-placeholder .mat-input-element::-moz-placeholder{opacity:0}.mat-form-field-hide-placeholder .mat-input-element::-webkit-input-placeholder{color:transparent !important;-webkit-text-fill-color:transparent;transition:none}.cdk-high-contrast-active .mat-form-field-hide-placeholder .mat-input-element::-webkit-input-placeholder{opacity:0}.mat-form-field-hide-placeholder .mat-input-element:-ms-input-placeholder{color:transparent !important;-webkit-text-fill-color:transparent;transition:none}.cdk-high-contrast-active .mat-form-field-hide-placeholder .mat-input-element:-ms-input-placeholder{opacity:0}textarea.mat-input-element{resize:vertical;overflow:auto}textarea.mat-input-element.cdk-textarea-autosize{resize:none}textarea.mat-input-element{padding:2px 0;margin:-2px 0}select.mat-input-element{-moz-appearance:none;-webkit-appearance:none;position:relative;background-color:transparent;display:inline-flex;box-sizing:border-box;padding-top:1em;top:-1em;margin-bottom:-1em}select.mat-input-element::-moz-focus-inner{border:0}select.mat-input-element:not(:disabled){cursor:pointer}.mat-form-field-type-mat-native-select .mat-form-field-infix::after{content:\"\";width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid;position:absolute;top:50%;right:0;margin-top:-2.5px;pointer-events:none}[dir=rtl] .mat-form-field-type-mat-native-select .mat-form-field-infix::after{right:auto;left:0}.mat-form-field-type-mat-native-select .mat-input-element{padding-right:15px}[dir=rtl] .mat-form-field-type-mat-native-select .mat-input-element{padding-right:0;padding-left:15px}.mat-form-field-type-mat-native-select .mat-form-field-label-wrapper{max-width:calc(100% - 10px)}.mat-form-field-type-mat-native-select.mat-form-field-appearance-outline .mat-form-field-infix::after{margin-top:-5px}.mat-form-field-type-mat-native-select.mat-form-field-appearance-fill .mat-form-field-infix::after{margin-top:-10px}\n", ".mat-form-field-appearance-legacy .mat-form-field-label{transform:perspective(100px)}.mat-form-field-appearance-legacy .mat-form-field-prefix .mat-icon,.mat-form-field-appearance-legacy .mat-form-field-suffix .mat-icon{width:1em}.mat-form-field-appearance-legacy .mat-form-field-prefix .mat-icon-button,.mat-form-field-appearance-legacy .mat-form-field-suffix .mat-icon-button{font:inherit;vertical-align:baseline}.mat-form-field-appearance-legacy .mat-form-field-prefix .mat-icon-button .mat-icon,.mat-form-field-appearance-legacy .mat-form-field-suffix .mat-icon-button .mat-icon{font-size:inherit}.mat-form-field-appearance-legacy .mat-form-field-underline{height:1px}.cdk-high-contrast-active .mat-form-field-appearance-legacy .mat-form-field-underline{height:0;border-top:solid 1px}.mat-form-field-appearance-legacy .mat-form-field-ripple{top:0;height:2px;overflow:hidden}.cdk-high-contrast-active .mat-form-field-appearance-legacy .mat-form-field-ripple{height:0;border-top:solid 2px}.mat-form-field-appearance-legacy.mat-form-field-disabled .mat-form-field-underline{background-position:0;background-color:transparent}.cdk-high-contrast-active .mat-form-field-appearance-legacy.mat-form-field-disabled .mat-form-field-underline{border-top-style:dotted;border-top-width:2px}.mat-form-field-appearance-legacy.mat-form-field-invalid:not(.mat-focused) .mat-form-field-ripple{height:1px}\n", ".mat-form-field-appearance-outline .mat-form-field-wrapper{margin:.25em 0}.mat-form-field-appearance-outline .mat-form-field-flex{padding:0 .75em 0 .75em;margin-top:-0.25em;position:relative}.mat-form-field-appearance-outline .mat-form-field-prefix,.mat-form-field-appearance-outline .mat-form-field-suffix{top:.25em}.mat-form-field-appearance-outline .mat-form-field-outline{display:flex;position:absolute;top:.25em;left:0;right:0;bottom:0;pointer-events:none}.mat-form-field-appearance-outline .mat-form-field-outline-start,.mat-form-field-appearance-outline .mat-form-field-outline-end{border:1px solid currentColor;min-width:5px}.mat-form-field-appearance-outline .mat-form-field-outline-start{border-radius:5px 0 0 5px;border-right-style:none}[dir=rtl] .mat-form-field-appearance-outline .mat-form-field-outline-start{border-right-style:solid;border-left-style:none;border-radius:0 5px 5px 0}.mat-form-field-appearance-outline .mat-form-field-outline-end{border-radius:0 5px 5px 0;border-left-style:none;flex-grow:1}[dir=rtl] .mat-form-field-appearance-outline .mat-form-field-outline-end{border-left-style:solid;border-right-style:none;border-radius:5px 0 0 5px}.mat-form-field-appearance-outline .mat-form-field-outline-gap{border-radius:.000001px;border:1px solid currentColor;border-left-style:none;border-right-style:none}.mat-form-field-appearance-outline.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-outline-gap{border-top-color:transparent}.mat-form-field-appearance-outline .mat-form-field-outline-thick{opacity:0}.mat-form-field-appearance-outline .mat-form-field-outline-thick .mat-form-field-outline-start,.mat-form-field-appearance-outline .mat-form-field-outline-thick .mat-form-field-outline-end,.mat-form-field-appearance-outline .mat-form-field-outline-thick .mat-form-field-outline-gap{border-width:2px}.mat-form-field-appearance-outline.mat-focused .mat-form-field-outline,.mat-form-field-appearance-outline.mat-form-field-invalid .mat-form-field-outline{opacity:0;transition:opacity 100ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-form-field-appearance-outline.mat-focused .mat-form-field-outline-thick,.mat-form-field-appearance-outline.mat-form-field-invalid .mat-form-field-outline-thick{opacity:1}.cdk-high-contrast-active .mat-form-field-appearance-outline.mat-focused .mat-form-field-outline-thick{border:3px dashed}.mat-form-field-appearance-outline:not(.mat-form-field-disabled) .mat-form-field-flex:hover .mat-form-field-outline{opacity:0;transition:opacity 600ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-form-field-appearance-outline:not(.mat-form-field-disabled) .mat-form-field-flex:hover .mat-form-field-outline-thick{opacity:1}.mat-form-field-appearance-outline .mat-form-field-subscript-wrapper{padding:0 1em}.mat-form-field-appearance-outline._mat-animation-noopable:not(.mat-form-field-disabled) .mat-form-field-flex:hover~.mat-form-field-outline,.mat-form-field-appearance-outline._mat-animation-noopable .mat-form-field-outline,.mat-form-field-appearance-outline._mat-animation-noopable .mat-form-field-outline-start,.mat-form-field-appearance-outline._mat-animation-noopable .mat-form-field-outline-end,.mat-form-field-appearance-outline._mat-animation-noopable .mat-form-field-outline-gap{transition:none}\n", ".mat-form-field-appearance-standard .mat-form-field-flex{padding-top:.75em}.mat-form-field-appearance-standard .mat-form-field-underline{height:1px}.cdk-high-contrast-active .mat-form-field-appearance-standard .mat-form-field-underline{height:0;border-top:solid 1px}.mat-form-field-appearance-standard .mat-form-field-ripple{bottom:0;height:2px}.cdk-high-contrast-active .mat-form-field-appearance-standard .mat-form-field-ripple{height:0;border-top:solid 2px}.mat-form-field-appearance-standard.mat-form-field-disabled .mat-form-field-underline{background-position:0;background-color:transparent}.cdk-high-contrast-active .mat-form-field-appearance-standard.mat-form-field-disabled .mat-form-field-underline{border-top-style:dotted;border-top-width:2px}.mat-form-field-appearance-standard:not(.mat-form-field-disabled) .mat-form-field-flex:hover~.mat-form-field-underline .mat-form-field-ripple{opacity:1;transform:none;transition:opacity 600ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-form-field-appearance-standard._mat-animation-noopable:not(.mat-form-field-disabled) .mat-form-field-flex:hover~.mat-form-field-underline .mat-form-field-ripple{transition:none}\n"]
|
|
453
|
-
},] }
|
|
454
|
-
];
|
|
455
|
-
MatFormField.ctorParameters = () => [
|
|
456
|
-
{ type: ElementRef },
|
|
457
|
-
{ type: ChangeDetectorRef },
|
|
458
|
-
{ type: Directionality, decorators: [{ type: Optional }] },
|
|
459
|
-
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [MAT_FORM_FIELD_DEFAULT_OPTIONS,] }] },
|
|
460
|
-
{ type: Platform },
|
|
461
|
-
{ type: NgZone },
|
|
462
|
-
{ type: String, decorators: [{ type: Optional }, { type: Inject, args: [ANIMATION_MODULE_TYPE,] }] }
|
|
463
|
-
];
|
|
464
|
-
MatFormField.propDecorators = {
|
|
465
|
-
appearance: [{ type: Input }],
|
|
466
|
-
hideRequiredMarker: [{ type: Input }],
|
|
467
|
-
hintLabel: [{ type: Input }],
|
|
468
|
-
floatLabel: [{ type: Input }],
|
|
469
|
-
_connectionContainerRef: [{ type: ViewChild, args: ['connectionContainer', { static: true },] }],
|
|
470
|
-
_inputContainerRef: [{ type: ViewChild, args: ['inputContainer',] }],
|
|
471
|
-
_label: [{ type: ViewChild, args: ['label',] }],
|
|
472
|
-
_controlNonStatic: [{ type: ContentChild, args: [MatFormFieldControl,] }],
|
|
473
|
-
_controlStatic: [{ type: ContentChild, args: [MatFormFieldControl, { static: true },] }],
|
|
474
|
-
_labelChildNonStatic: [{ type: ContentChild, args: [MatLabel,] }],
|
|
475
|
-
_labelChildStatic: [{ type: ContentChild, args: [MatLabel, { static: true },] }],
|
|
476
|
-
_placeholderChild: [{ type: ContentChild, args: [MatPlaceholder,] }],
|
|
477
|
-
_errorChildren: [{ type: ContentChildren, args: [MAT_ERROR, { descendants: true },] }],
|
|
478
|
-
_hintChildren: [{ type: ContentChildren, args: [_MAT_HINT, { descendants: true },] }],
|
|
479
|
-
_prefixChildren: [{ type: ContentChildren, args: [MAT_PREFIX, { descendants: true },] }],
|
|
480
|
-
_suffixChildren: [{ type: ContentChildren, args: [MAT_SUFFIX, { descendants: true },] }]
|
|
481
|
-
};
|
|
482
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC9mb3JtLWZpZWxkL2Zvcm0tZmllbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBZSxxQkFBcUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQzFFLE9BQU8sRUFJTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLFVBQVUsRUFDVixNQUFNLEVBQ04sY0FBYyxFQUNkLEtBQUssRUFDTCxNQUFNLEVBQ04sUUFBUSxFQUNSLFNBQVMsRUFDVCxTQUFTLEVBQ1QsaUJBQWlCLEdBRWxCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFFTCxVQUFVLEdBQ1gsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUQsT0FBTyxFQUFDLFNBQVMsRUFBVyxNQUFNLFNBQVMsQ0FBQztBQUM1QyxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUMvRCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQ0wsa0NBQWtDLEVBQ2xDLGtDQUFrQyxFQUNsQyx1Q0FBdUMsR0FDeEMsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUMsU0FBUyxFQUFVLE1BQU0sUUFBUSxDQUFDO0FBQzFDLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxTQUFTLENBQUM7QUFDakMsT0FBTyxFQUFDLGNBQWMs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QyxNQUFNO2dCQUMvQyxTQUFTLEVBQUU7b0JBQ1QsRUFBQyxPQUFPLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUM7aUJBQ3JEOzthQUNGOzs7WUFoSUMsVUFBVTtZQUpWLGlCQUFpQjtZQVBYLGNBQWMsdUJBZ1FmLFFBQVE7NENBQ1IsUUFBUSxZQUFJLE1BQU0sU0FBQyw4QkFBOEI7WUF4TmhELFFBQVE7WUExQmQsTUFBTTt5Q0FvUEQsUUFBUSxZQUFJLE1BQU0sU0FBQyxxQkFBcUI7Ozt5QkF2RzVDLEtBQUs7aUNBY0wsS0FBSzt3QkFzQkwsS0FBSzt5QkFzQkwsS0FBSztzQ0FlTCxTQUFTLFNBQUMscUJBQXFCLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDO2lDQUMvQyxTQUFTLFNBQUMsZ0JBQWdCO3FCQUMxQixTQUFTLFNBQUMsT0FBTztnQ0FFakIsWUFBWSxTQUFDLG1CQUFtQjs2QkFDaEMsWUFBWSxTQUFDLG1CQUFtQixFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQzttQ0FXaEQsWUFBWSxTQUFDLFFBQVE7Z0NBQ3JCLFlBQVksU0FBQyxRQUFRLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDO2dDQUNyQyxZQUFZLFNBQUMsY0FBYzs2QkFFM0IsZUFBZSxTQUFDLFNBQVMsRUFBRSxFQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUM7NEJBQzlDLGVBQWUsU0FBQyxTQUFTLEVBQUUsRUFBQyxXQUFXLEVBQUUsSUFBSSxFQUFDOzhCQUM5QyxlQUFlLFNBQUMsVUFBVSxFQUFFLEVBQUMsV0FBVyxFQUFFLElBQUksRUFBQzs4QkFDL0MsZUFBZSxTQUFDLFVBQVUsRUFBRSxFQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtEaXJlY3Rpb25hbGl0eX0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xuaW1wb3J0IHtCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eX0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7XG4gIEFmdGVyQ29udGVudENoZWNrZWQsXG4gIEFmdGVyQ29udGVudEluaXQsXG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRWxlbWVudFJlZixcbiAgSW5qZWN0LFxuICBJbmplY3Rpb25Ub2tlbixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT3B0aW9uYWwsXG4gIFF1ZXJ5TGlzdCxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgT25EZXN0cm95LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENhbkNvbG9yLFxuICBtaXhpbkNvbG9yLFxufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7ZnJvbUV2ZW50LCBtZXJnZSwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge3N0YXJ0V2l0aCwgdGFrZSwgdGFrZVVudGlsfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge01BVF9FUlJPUiwgTWF0RXJyb3J9IGZyb20gJy4vZXJyb3InO1xuaW1wb3J0IHttYXRGb3JtRmllbGRBbmltYXRpb25zfSBmcm9tICcuL2Zvcm0tZmllbGQtYW5pbWF0aW9ucyc7XG5pbXBvcnQge01hdEZvcm1GaWVsZENvbnRyb2x9IGZyb20gJy4vZm9ybS1maWVsZC1jb250cm9sJztcbmltcG9ydCB7XG4gIGdldE1hdEZvcm1GaWVsZER1cGxpY2F0ZWRIaW50RXJyb3IsXG4gIGdldE1hdEZvcm1GaWVsZE1pc3NpbmdDb250cm9sRXJyb3IsXG4gIGdldE1hdEZvcm1GaWVsZFBsYWNlaG9sZGVyQ29uZmxpY3RFcnJvcixcbn0gZnJvbSAnLi9mb3JtLWZpZWxkLWVycm9ycyc7XG5pbXBvcnQge19NQVRfSElOVCwgTWF0SGludH0gZnJvbSAnLi9oaW50JztcbmltcG9ydCB7TWF0TGFiZWx9IGZyb20gJy4vbGFiZWwnO1xuaW1wb3J0IHtNYXRQbGFjZWhvbGRlcn0gZnJvbSAnLi9wbGFjZWhvbGRlcic7XG5pbXBvcnQge01BVF9QUkVGSVgsIE1hdFByZWZpeH0gZnJvbSAnLi9wcmVmaXgnO1xuaW1wb3J0IHtNQVRfU1VGRklYLCBNYXRTdWZmaXh9IGZyb20gJy4vc3VmZml4JztcbmltcG9ydCB7UGxhdGZvcm19IGZyb20gJ0Bhbmd1bGFyL2Nkay9wbGF0Zm9ybSc7XG5pbXBvcnQge05nQ29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtBTklNQVRJT05fTU9EVUxFX1RZUEV9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXIvYW5pbWF0aW9ucyc7XG5cblxubGV0IG5leHRVbmlxdWVJZCA9IDA7XG5jb25zdCBmbG9hdGluZ0xhYmVsU2NhbGUgPSAwLjc1O1xuY29uc3Qgb3V0bGluZUdhcFBhZGRpbmcgPSA1O1xuXG5cbi8qKlxuICogQm9pbGVycGxhdGUgZm9yIGFwcGx5aW5nIG1peGlucyB0byBNYXRGb3JtRmllbGQuXG4gKiBAZG9jcy1wcml2YXRlXG4gKi9cbmNvbnN0IF9NYXRGb3JtRmllbGRCYXNlID0gbWl4aW5Db2xvcihjbGFzcyB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBfZWxlbWVudFJlZjogRWxlbWVudFJlZikge31cbn0sICdwcmltYXJ5Jyk7XG5cbi8qKiBQb3NzaWJsZSBhcHBlYXJhbmNlIHN0eWxlcyBmb3IgdGhlIGZvcm0gZmllbGQuICovXG5leHBvcnQgdHlwZSBNYXRGb3JtRmllbGRBcHBlYXJhbmNlID0gJ2xlZ2FjeScgfCAnc3RhbmRhcmQnIHwgJ2ZpbGwnIHwgJ291dGxpbmUnO1xuXG4vKiogUG9zc2libGUgdmFsdWVzIGZvciB0aGUgXCJmbG9hdExhYmVsXCIgZm9ybS1maWVsZCBpbnB1dC4gKi9cbmV4cG9ydCB0eXBlIEZsb2F0TGFiZWxUeXBlID0gJ2Fsd2F5cycgfCAnbmV2ZXInIHwgJ2F1dG8nO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIGRlZmF1bHQgb3B0aW9ucyBmb3IgdGhlIGZvcm0gZmllbGQgdGhhdCBjYW4gYmUgY29uZmlndXJlZFxuICogdXNpbmcgdGhlIGBNQVRfRk9STV9GSUVMRF9ERUZBVUxUX09QVElPTlNgIGluamVjdGlvbiB0b2tlbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNYXRGb3JtRmllbGREZWZhdWx0T3B0aW9ucyB7XG4gIGFwcGVhcmFuY2U/OiBNYXRGb3JtRmllbGRBcHBlYXJhbmNlO1xuICBoaWRlUmVxdWlyZWRNYXJrZXI/OiBib29sZWFuO1xuICAvKipcbiAgICogV2hldGhlciB0aGUgbGFiZWwgZm9yIGZvcm0tZmllbGRzIHNob3VsZCBieSBkZWZhdWx0IGZsb2F0IGBhbHdheXNgLFxuICAgKiBgbmV2ZXJgLCBvciBgYXV0b2AgKG9ubHkgd2hlbiBuZWNlc3NhcnkpLlxuICAgKi9cbiAgZmxvYXRMYWJlbD86IEZsb2F0TGFiZWxUeXBlO1xufVxuXG4vKipcbiAqIEluamVjdGlvbiB0b2tlbiB0aGF0IGNhbiBiZSB1c2VkIHRvIGNvbmZpZ3VyZSB0aGVcbiAqIGRlZmF1bHQgb3B0aW9ucyBmb3IgYWxsIGZvcm0gZmllbGQgd2l0aGluIGFuIGFwcC5cbiAqL1xuZXhwb3J0IGNvbnN0IE1BVF9GT1JNX0ZJRUxEX0RFRkFVTFRfT1BUSU9OUyA9XG4gICAgbmV3IEluamVjdGlvblRva2VuPE1hdEZvcm1GaWVsZERlZmF1bHRPcHRpb25zPignTUFUX0ZPUk1fRklFTERfREVGQVVMVF9PUFRJT05TJyk7XG5cbi8qKlxuICogSW5qZWN0aW9uIHRva2VuIHRoYXQgY2FuIGJlIHVzZWQgdG8gaW5qZWN0IGFuIGluc3RhbmNlcyBvZiBgTWF0Rm9ybUZpZWxkYC4gSXQgc2VydmVzXG4gKiBhcyBhbHRlcm5hdGl2ZSB0b2tlbiB0byB0aGUgYWN0dWFsIGBNYXRGb3JtRmllbGRgIGNsYXNzIHdoaWNoIHdvdWxkIGNhdXNlIHVubmVjZXNzYXJ5XG4gKiByZXRlbnRpb24gb2YgdGhlIGBNYXRGb3JtRmllbGRgIGNsYXNzIGFuZCBpdHMgY29tcG9uZW50IG1ldGFkYXRhLlxuICovXG5leHBvcnQgY29uc3QgTUFUX0ZPUk1fRklFTEQgPSBuZXcgSW5qZWN0aW9uVG9rZW48TWF0Rm9ybUZpZWxkPignTWF0Rm9ybUZpZWxkJyk7XG5cbi8qKiBDb250YWluZXIgZm9yIGZvcm0gY29udHJvbHMgdGhhdCBhcHBsaWVzIE1hdGVyaWFsIERlc2lnbiBzdHlsaW5nIGFuZCBiZWhhdmlvci4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21hdC1mb3JtLWZpZWxkJyxcbiAgZXhwb3J0QXM6ICdtYXRGb3JtRmllbGQnLFxuICB0ZW1wbGF0ZVVybDogJ2Zvcm0tZmllbGQuaHRtbCcsXG4gIC8vIE1hdElucHV0IGlzIGEgZGlyZWN0aXZlIGFuZCBjYW4ndCBoYXZlIHN0eWxlcywgc28gd2UgbmVlZCB0byBpbmNsdWRlIGl0cyBzdHlsZXMgaGVyZVxuICAvLyBpbiBmb3JtLWZpZWxkLWlucHV0LmNzcy4gVGhlIE1hdElucHV0IHN0eWxlcyBhcmUgZmFpcmx5IG1pbmltYWwgc28gaXQgc2hvdWxkbid0IGJlIGFcbiAgLy8gYmlnIGRlYWwgZm9yIHBlb3BsZSB3aG8gYXJlbid0IHVzaW5nIE1hdElucHV0LlxuICBzdHlsZVVybHM6IFtcbiAgICAnZm9ybS1maWVsZC5jc3MnLFxuICAgICdmb3JtLWZpZWxkLWZpbGwuY3NzJyxcbiAgICAnZm9ybS1maWVsZC1pbnB1dC5jc3MnLFxuICAgICdmb3JtLWZpZWxkLWxlZ2FjeS5jc3MnLFxuICAgICdmb3JtLWZpZWxkLW91dGxpbmUuY3NzJyxcbiAgICAnZm9ybS1maWVsZC1zdGFuZGFyZC5jc3MnLFxuICBdLFxuICBhbmltYXRpb25zOiBbbWF0Rm9ybUZpZWxkQW5pbWF0aW9ucy50cmFuc2l0aW9uTWVzc2FnZXNdLFxuICBob3N0OiB7XG4gICAgJ2NsYXNzJzogJ21hdC1mb3JtLWZpZWxkJyxcbiAgICAnW2NsYXNzLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmRdJzogJ2FwcGVhcmFuY2UgPT0gXCJzdGFuZGFyZFwiJyxcbiAgICAnW2NsYXNzLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbF0nOiAnYXBwZWFyYW5jZSA9PSBcImZpbGxcIicsXG4gICAgJ1tjbGFzcy5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVdJzogJ2FwcGVhcmFuY2UgPT0gXCJvdXRsaW5lXCInLFxuICAgICdbY2xhc3MubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3ldJzogJ2FwcGVhcmFuY2UgPT0gXCJsZWdhY3lcIicsXG4gICAgJ1tjbGFzcy5tYXQtZm9ybS1maWVsZC1pbnZhbGlkXSc6ICdfY29udHJvbC5lcnJvclN0YXRlJyxcbiAgICAnW2NsYXNzLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdF0nOiAnX2NhbkxhYmVsRmxvYXQoKScsXG4gICAgJ1tjbGFzcy5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRdJzogJ19zaG91bGRMYWJlbEZsb2F0KCknLFxuICAgICdbY2xhc3MubWF0LWZvcm0tZmllbGQtaGFzLWxhYmVsXSc6ICdfaGFzRmxvYXRpbmdMYWJlbCgpJyxcbiAgICAnW2NsYXNzLm1hdC1mb3JtLWZpZWxkLWhpZGUtcGxhY2Vob2xkZXJdJzogJ19oaWRlQ29udHJvbFBsYWNlaG9sZGVyKCknLFxuICAgICdbY2xhc3MubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRdJzogJ19jb250cm9sLmRpc2FibGVkJyxcbiAgICAnW2NsYXNzLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsZWRdJzogJ19jb250cm9sLmF1dG9maWxsZWQnLFxuICAgICdbY2xhc3MubWF0LWZvY3VzZWRdJzogJ19jb250cm9sLmZvY3VzZWQnLFxuICAgICdbY2xhc3MubmctdW50b3VjaGVkXSc6ICdfc2hvdWxkRm9yd2FyZChcInVudG91Y2hlZFwiKScsXG4gICAgJ1tjbGFzcy5uZy10b3VjaGVkXSc6ICdfc2hvdWxkRm9yd2FyZChcInRvdWNoZWRcIiknLFxuICAgICdbY2xhc3MubmctcHJpc3RpbmVdJzogJ19zaG91bGRGb3J3YXJkKFwicHJpc3RpbmVcIiknLFxuICAgICdbY2xhc3MubmctZGlydHldJzogJ19zaG91bGRGb3J3YXJkKFwiZGlydHlcIiknLFxuICAgICdbY2xhc3MubmctdmFsaWRdJzogJ19zaG91bGRGb3J3YXJkKFwidmFsaWRcIiknLFxuICAgICdbY2xhc3MubmctaW52YWxpZF0nOiAnX3Nob3VsZEZvcndhcmQoXCJpbnZhbGlkXCIpJyxcbiAgICAnW2NsYXNzLm5nLXBlbmRpbmddJzogJ19zaG91bGRGb3J3YXJkKFwicGVuZGluZ1wiKScsXG4gICAgJ1tjbGFzcy5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZV0nOiAnIV9hbmltYXRpb25zRW5hYmxlZCcsXG4gIH0sXG4gIGlucHV0czogWydjb2xvciddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbXG4gICAge3Byb3ZpZGU6IE1BVF9GT1JNX0ZJRUxELCB1c2VFeGlzdGluZzogTWF0Rm9ybUZpZWxkfSxcbiAgXVxufSlcblxuZXhwb3J0IGNsYXNzIE1hdEZvcm1GaWVsZCBleHRlbmRzIF9NYXRGb3JtRmllbGRCYXNlXG4gICAgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBBZnRlckNvbnRlbnRDaGVja2VkLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIENhbkNvbG9yIHtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgb3V0bGluZSBnYXAgbmVlZHMgdG8gYmUgY2FsY3VsYXRlZFxuICAgKiBpbW1lZGlhdGVseSBvbiB0aGUgbmV4dCBjaGFuZ2UgZGV0ZWN0aW9uIHJ1bi5cbiAgICovXG4gIHByaXZhdGUgX291dGxpbmVHYXBDYWxjdWxhdGlvbk5lZWRlZEltbWVkaWF0ZWx5ID0gZmFsc2U7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIG91dGxpbmUgZ2FwIG5lZWRzIHRvIGJlIGNhbGN1bGF0ZWQgbmV4dCB0aW1lIHRoZSB6b25lIGhhcyBzdGFiaWxpemVkLiAqL1xuICBwcml2YXRlIF9vdXRsaW5lR2FwQ2FsY3VsYXRpb25OZWVkZWRPblN0YWJsZSA9IGZhbHNlO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3llZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgLyoqIFRoZSBmb3JtLWZpZWxkIGFwcGVhcmFuY2Ugc3R5bGUuICovXG4gIEBJbnB1dCgpXG4gIGdldCBhcHBlYXJhbmNlKCk6IE1hdEZvcm1GaWVsZEFwcGVhcmFuY2UgeyByZXR1cm4gdGhpcy5fYXBwZWFyYW5jZTsgfVxuICBzZXQgYXBwZWFyYW5jZSh2YWx1ZTogTWF0Rm9ybUZpZWxkQXBwZWFyYW5jZSkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy5fYXBwZWFyYW5jZTtcblxuICAgIHRoaXMuX2FwcGVhcmFuY2UgPSB2YWx1ZSB8fCAodGhpcy5fZGVmYXVsdHMgJiYgdGhpcy5fZGVmYXVsdHMuYXBwZWFyYW5jZSkgfHwgJ2xlZ2FjeSc7XG5cbiAgICBpZiAodGhpcy5fYXBwZWFyYW5jZSA9PT0gJ291dGxpbmUnICYmIG9sZFZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgdGhpcy5fb3V0bGluZUdhcENhbGN1bGF0aW9uTmVlZGVkT25TdGFibGUgPSB0cnVlO1xuICAgIH1cbiAgfVxuICBfYXBwZWFyYW5jZTogTWF0Rm9ybUZpZWxkQXBwZWFyYW5jZTtcblxuICAvKiogV2hldGhlciB0aGUgcmVxdWlyZWQgbWFya2VyIHNob3VsZCBiZSBoaWRkZW4uICovXG4gIEBJbnB1dCgpXG4gIGdldCBoaWRlUmVxdWlyZWRNYXJrZXIoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9oaWRlUmVxdWlyZWRNYXJrZXI7IH1cbiAgc2V0IGhpZGVSZXF1aXJlZE1hcmtlcih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2hpZGVSZXF1aXJlZE1hcmtlciA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cbiAgcHJpdmF0ZSBfaGlkZVJlcXVpcmVkTWFya2VyOiBib29sZWFuO1xuXG4gIC8qKiBPdmVycmlkZSBmb3IgdGhlIGxvZ2ljIHRoYXQgZGlzYWJsZXMgdGhlIGxhYmVsIGFuaW1hdGlvbiBpbiBjZXJ0YWluIGNhc2VzLiAqL1xuICBwcml2YXRlIF9zaG93QWx3YXlzQW5pbWF0ZSA9IGZhbHNlO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBmbG9hdGluZyBsYWJlbCBzaG91bGQgYWx3YXlzIGZsb2F0IG9yIG5vdC4gKi9cbiAgX3Nob3VsZEFsd2F5c0Zsb2F0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmZsb2F0TGFiZWwgPT09ICdhbHdheXMnICYmICF0aGlzLl9zaG93QWx3YXlzQW5pbWF0ZTtcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBsYWJlbCBjYW4gZmxvYXQgb3Igbm90LiAqL1xuICBfY2FuTGFiZWxGbG9hdCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuZmxvYXRMYWJlbCAhPT0gJ25ldmVyJzsgfVxuXG4gIC8qKiBTdGF0ZSBvZiB0aGUgbWF0LWhpbnQgYW5kIG1hdC1lcnJvciBhbmltYXRpb25zLiAqL1xuICBfc3Vic2NyaXB0QW5pbWF0aW9uU3RhdGU6IHN0cmluZyA9ICcnO1xuXG4gIC8qKiBUZXh0IGZvciB0aGUgZm9ybSBmaWVsZCBoaW50LiAqL1xuICBASW5wdXQoKVxuICBnZXQgaGludExhYmVsKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLl9oaW50TGFiZWw7IH1cbiAgc2V0IGhpbnRMYWJlbCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5faGludExhYmVsID0gdmFsdWU7XG4gICAgdGhpcy5fcHJvY2Vzc0hpbnRzKCk7XG4gIH1cbiAgcHJpdmF0ZSBfaGludExhYmVsID0gJyc7XG5cbiAgLy8gVW5pcXVlIGlkIGZvciB0aGUgaGludCBsYWJlbC5cbiAgcmVhZG9ubHkgX2hpbnRMYWJlbElkOiBzdHJpbmcgPSBgbWF0LWhpbnQtJHtuZXh0VW5pcXVlSWQrK31gO1xuXG4gIC8vIFVuaXF1ZSBpZCBmb3IgdGhlIGxhYmVsIGVsZW1lbnQuXG4gIHJlYWRvbmx5IF9sYWJlbElkID0gYG1hdC1mb3JtLWZpZWxkLWxhYmVsLSR7bmV4dFVuaXF1ZUlkKyt9YDtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgbGFiZWwgc2hvdWxkIGFsd2F5cyBmbG9hdCwgbmV2ZXIgZmxvYXQgb3IgZmxvYXQgYXMgdGhlIHVzZXIgdHlwZXMuXG4gICAqXG4gICAqIE5vdGU6IG9ubHkgdGhlIGxlZ2FjeSBhcHBlYXJhbmNlIHN1cHBvcnRzIHRoZSBgbmV2ZXJgIG9wdGlvbi4gYG5ldmVyYCB3YXMgb3JpZ2luYWxseSBhZGRlZCBhcyBhXG4gICAqIHdheSB0byBtYWtlIHRoZSBmbG9hdGluZyBsYWJlbCBlbXVsYXRlIHRoZSBiZWhhdmlvciBvZiBhIHN0YW5kYXJkIGlucHV0IHBsYWNlaG9sZGVyLiBIb3dldmVyXG4gICAqIHRoZSBmb3JtIGZpZWxkIG5vdyBzdXBwb3J0cyBib3RoIGZsb2F0aW5nIGxhYmVscyBhbmQgcGxhY2Vob2xkZXJzLiBUaGVyZWZvcmUgaW4gdGhlIG5vbi1sZWdhY3lcbiAgICogYXBwZWFyYW5jZXMgdGhlIGBuZXZlcmAgb3B0aW9uIGhhcyBiZWVuIGRpc2FibGVkIGluIGZhdm9yIG9mIGp1c3QgdXNpbmcgdGhlIHBsYWNlaG9sZGVyLlxuICAgKi9cbiAgQElucHV0KClcbiAgZ2V0IGZsb2F0TGFiZWwoKTogRmxvYXRMYWJlbFR5cGUge1xuICAgIHJldHVybiB0aGlzLmFwcGVhcmFuY2UgIT09ICdsZWdhY3knICYmIHRoaXMuX2Zsb2F0TGFiZWwgPT09ICduZXZlcicgPyAnYXV0bycgOiB0aGlzLl9mbG9hdExhYmVsO1xuICB9XG4gIHNldCBmbG9hdExhYmVsKHZhbHVlOiBGbG9hdExhYmVsVHlwZSkge1xuICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5fZmxvYXRMYWJlbCkge1xuICAgICAgdGhpcy5fZmxvYXRMYWJlbCA9IHZhbHVlIHx8IHRoaXMuX2dldERlZmF1bHRGbG9hdExhYmVsU3RhdGUoKTtcbiAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIF9mbG9hdExhYmVsOiBGbG9hdExhYmVsVHlwZTtcblxuICAvKiogV2hldGhlciB0aGUgQW5ndWxhciBhbmltYXRpb25zIGFyZSBlbmFibGVkLiAqL1xuICBfYW5pbWF0aW9uc0VuYWJsZWQ6IGJvb2xlYW47XG5cbiAgQFZpZXdDaGlsZCgnY29ubmVjdGlvbkNvbnRhaW5lcicsIHtzdGF0aWM6IHRydWV9KSBfY29ubmVjdGlvbkNvbnRhaW5lclJlZjogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnaW5wdXRDb250YWluZXInKSBfaW5wdXRDb250YWluZXJSZWY6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2xhYmVsJykgcHJpdmF0ZSBfbGFiZWw6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIEBDb250ZW50Q2hpbGQoTWF0Rm9ybUZpZWxkQ29udHJvbCkgX2NvbnRyb2xOb25TdGF0aWM6IE1hdEZvcm1GaWVsZENvbnRyb2w8YW55PjtcbiAgQENvbnRlbnRDaGlsZChNYXRGb3JtRmllbGRDb250cm9sLCB7c3RhdGljOiB0cnVlfSkgX2NvbnRyb2xTdGF0aWM6IE1hdEZvcm1GaWVsZENvbnRyb2w8YW55PjtcbiAgZ2V0IF9jb250cm9sKCkge1xuICAgIC8vIFRPRE8oY3Jpc2JldG8pOiB3ZSBuZWVkIHRoaXMgd29ya2Fyb3VuZCBpbiBvcmRlciB0byBzdXBwb3J0IGJvdGggSXZ5IGFuZCBWaWV3RW5naW5lLlxuICAgIC8vICBXZSBzaG91bGQgY2xlYW4gdGhpcyB1cCBvbmNlIEl2eSBpcyB0aGUgZGVmYXVsdCByZW5kZXJlci5cbiAgICByZXR1cm4gdGhpcy5fZXhwbGljaXRGb3JtRmllbGRDb250cm9sIHx8IHRoaXMuX2NvbnRyb2xOb25TdGF0aWMgfHwgdGhpcy5fY29udHJvbFN0YXRpYztcbiAgfVxuICBzZXQgX2NvbnRyb2wodmFsdWUpIHtcbiAgICB0aGlzLl9leHBsaWNpdEZvcm1GaWVsZENvbnRyb2wgPSB2YWx1ZTtcbiAgfVxuICBwcml2YXRlIF9leHBsaWNpdEZvcm1GaWVsZENvbnRyb2w6IE1hdEZvcm1GaWVsZENvbnRyb2w8YW55PjtcblxuICBAQ29udGVudENoaWxkKE1hdExhYmVsKSBfbGFiZWxDaGlsZE5vblN0YXRpYzogTWF0TGFiZWw7XG4gIEBDb250ZW50Q2hpbGQoTWF0TGFiZWwsIHtzdGF0aWM6IHRydWV9KSBfbGFiZWxDaGlsZFN0YXRpYzogTWF0TGFiZWw7XG4gIEBDb250ZW50Q2hpbGQoTWF0UGxhY2Vob2xkZXIpIF9wbGFjZWhvbGRlckNoaWxkOiBNYXRQbGFjZWhvbGRlcjtcblxuICBAQ29udGVudENoaWxkcmVuKE1BVF9FUlJPUiwge2Rlc2NlbmRhbnRzOiB0cnVlfSkgX2Vycm9yQ2hpbGRyZW46IFF1ZXJ5TGlzdDxNYXRFcnJvcj47XG4gIEBDb250ZW50Q2hpbGRyZW4oX01BVF9ISU5ULCB7ZGVzY2VuZGFudHM6IHRydWV9KSBfaGludENoaWxkcmVuOiBRdWVyeUxpc3Q8TWF0SGludD47XG4gIEBDb250ZW50Q2hpbGRyZW4oTUFUX1BSRUZJWCwge2Rlc2NlbmRhbnRzOiB0cnVlfSkgX3ByZWZpeENoaWxkcmVuOiBRdWVyeUxpc3Q8TWF0UHJlZml4PjtcbiAgQENvbnRlbnRDaGlsZHJlbihNQVRfU1VGRklYLCB7ZGVzY2VuZGFudHM6IHRydWV9KSBfc3VmZml4Q2hpbGRyZW46IFF1ZXJ5TGlzdDxNYXRTdWZmaXg+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgICAgZWxlbWVudFJlZjogRWxlbWVudFJlZiwgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfZGlyOiBEaXJlY3Rpb25hbGl0eSxcbiAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTUFUX0ZPUk1fRklFTERfREVGQVVMVF9PUFRJT05TKSBwcml2YXRlIF9kZWZhdWx0czpcbiAgICAgICAgICBNYXRGb3JtRmllbGREZWZhdWx0T3B0aW9ucywgcHJpdmF0ZSBfcGxhdGZvcm06IFBsYXRmb3JtLCBwcml2YXRlIF9uZ1pvbmU6IE5nWm9uZSxcbiAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoQU5JTUFUSU9OX01PRFVMRV9UWVBFKSBfYW5pbWF0aW9uTW9kZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoZWxlbWVudFJlZik7XG5cbiAgICB0aGlzLmZsb2F0TGFiZWwgPSB0aGlzLl9nZXREZWZhdWx0RmxvYXRMYWJlbFN0YXRlKCk7XG4gICAgdGhpcy5fYW5pbWF0aW9uc0VuYWJsZWQgPSBfYW5pbWF0aW9uTW9kZSAhPT0gJ05vb3BBbmltYXRpb25zJztcblxuICAgIC8vIFNldCB0aGUgZGVmYXVsdCB0aHJvdWdoIGhlcmUgc28gd2UgaW52b2tlIHRoZSBzZXR0ZXIgb24gdGhlIGZpcnN0IHJ1bi5cbiAgICB0aGlzLmFwcGVhcmFuY2UgPSAoX2RlZmF1bHRzICYmIF9kZWZhdWx0cy5hcHBlYXJhbmNlKSA/IF9kZWZhdWx0cy5hcHBlYXJhbmNlIDogJ2xlZ2FjeSc7XG4gICAgdGhpcy5faGlkZVJlcXVpcmVkTWFya2VyID0gKF9kZWZhdWx0cyAmJiBfZGVmYXVsdHMuaGlkZVJlcXVpcmVkTWFya2VyICE9IG51bGwpID9cbiAgICAgICAgX2RlZmF1bHRzLmhpZGVSZXF1aXJlZE1hcmtlciA6IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGlkIG9mIHRoZSBsYWJlbCBlbGVtZW50LiBJZiBubyBsYWJlbCBpcyBwcmVzZW50LCByZXR1cm5zIGBudWxsYC5cbiAgICovXG4gIGdldExhYmVsSWQoKTogc3RyaW5nfG51bGwge1xuICAgIHJldHVybiB0aGlzLl9oYXNGbG9hdGluZ0xhYmVsKCkgPyB0aGlzLl9sYWJlbElkIDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGFuIEVsZW1lbnRSZWYgZm9yIHRoZSBlbGVtZW50IHRoYXQgYSBvdmVybGF5IGF0dGFjaGVkIHRvIHRoZSBmb3JtLWZpZWxkIHNob3VsZCBiZVxuICAgKiBwb3NpdGlvbmVkIHJlbGF0aXZlIHRvLlxuICAgKi9cbiAgZ2V0Q29ubmVjdGVkT3ZlcmxheU9yaWdpbigpOiBFbGVtZW50UmVmIHtcbiAgICByZXR1cm4gdGhpcy5fY29ubmVjdGlvbkNvbnRhaW5lclJlZiB8fCB0aGlzLl9lbGVtZW50UmVmO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIHRoaXMuX3ZhbGlkYXRlQ29udHJvbENoaWxkKCk7XG5cbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5fY29udHJvbDtcblxuICAgIGlmIChjb250cm9sLmNvbnRyb2xUeXBlKSB7XG4gICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZChgbWF0LWZvcm0tZmllbGQtdHlwZS0ke2NvbnRyb2wuY29udHJvbFR5cGV9YCk7XG4gICAgfVxuXG4gICAgLy8gU3Vic2NyaWJlIHRvIGNoYW5nZXMgaW4gdGhlIGNoaWxkIGNvbnRyb2wgc3RhdGUgaW4gb3JkZXIgdG8gdXBkYXRlIHRoZSBmb3JtIGZpZWxkIFVJLlxuICAgIGNvbnRyb2wuc3RhdGVDaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKG51bGwpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5fdmFsaWRhdGVQbGFjZWhvbGRlcnMoKTtcbiAgICAgIHRoaXMuX3N5bmNEZXNjcmliZWRCeUlkcygpO1xuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG5cbiAgICAvLyBSdW4gY2hhbmdlIGRldGVjdGlvbiBpZiB0aGUgdmFsdWUgY2hhbmdlcy5cbiAgICBpZiAoY29udHJvbC5uZ0NvbnRyb2wgJiYgY29udHJvbC5uZ0NvbnRyb2wudmFsdWVDaGFuZ2VzKSB7XG4gICAgICBjb250cm9sLm5nQ29udHJvbC52YWx1ZUNoYW5nZXNcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpO1xuICAgIH1cblxuICAgIC8vIE5vdGUgdGhhdCB3ZSBoYXZlIHRvIHJ1biBvdXRzaWRlIG9mIHRoZSBgTmdab25lYCBleHBsaWNpdGx5LFxuICAgIC8vIGluIG9yZGVyIHRvIGF2b2lkIHRocm93aW5nIHVzZXJzIGludG8gYW4gaW5maW5pdGUgbG9vcFxuICAgIC8vIGlmIGB6b25lLXBhdGNoLXJ4anNgIGlzIGluY2x1ZGVkLlxuICAgIHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICB0aGlzLl9uZ1pvbmUub25TdGFibGUucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX291dGxpbmVHYXBDYWxjdWxhdGlvbk5lZWRlZE9uU3RhYmxlKSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVPdXRsaW5lR2FwKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgLy8gUnVuIGNoYW5nZSBkZXRlY3Rpb24gYW5kIHVwZGF0ZSB0aGUgb3V0bGluZSBpZiB0aGUgc3VmZml4IG9yIHByZWZpeCBjaGFuZ2VzLlxuICAgIG1lcmdlKHRoaXMuX3ByZWZpeENoaWxkcmVuLmNoYW5nZXMsIHRoaXMuX3N1ZmZpeENoaWxkcmVuLmNoYW5nZXMpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLl9vdXRsaW5lR2FwQ2FsY3VsYXRpb25OZWVkZWRPblN0YWJsZSA9IHRydWU7XG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcblxuICAgIC8vIFJlLXZhbGlkYXRlIHdoZW4gdGhlIG51bWJlciBvZiBoaW50cyBjaGFuZ2VzLlxuICAgIHRoaXMuX2hpbnRDaGlsZHJlbi5jaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKG51bGwpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5fcHJvY2Vzc0hpbnRzKCk7XG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcblxuICAgIC8vIFVwZGF0ZSB0aGUgYXJpYS1kZXNjcmliZWQgYnkgd2hlbiB0aGUgbnVtYmVyIG9mIGVycm9ycyBjaGFuZ2VzLlxuICAgIHRoaXMuX2Vycm9yQ2hpbGRyZW4uY2hhbmdlcy5waXBlKHN0YXJ0V2l0aChudWxsKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuX3N5bmNEZXNjcmliZWRCeUlkcygpO1xuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5fZGlyKSB7XG4gICAgICB0aGlzLl9kaXIuY2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgcmVxdWVzdEFuaW1hdGlvbkZyYW1lID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB0aGlzLnVwZGF0ZU91dGxpbmVHYXAoKSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVPdXRsaW5lR2FwKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpIHtcbiAgICB0aGlzLl92YWxpZGF0ZUNvbnRyb2xDaGlsZCgpO1xuICAgIGlmICh0aGlzLl9vdXRsaW5lR2FwQ2FsY3VsYXRpb25OZWVkZWRJbW1lZGlhdGVseSkge1xuICAgICAgdGhpcy51cGRhdGVPdXRsaW5lR2FwKCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIC8vIEF2b2lkIGFuaW1hdGlvbnMgb24gbG9hZC5cbiAgICB0aGlzLl9zdWJzY3JpcHRBbmltYXRpb25TdGF0ZSA9ICdlbnRlcic7XG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fZGVzdHJveWVkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95ZWQuY29tcGxldGUoKTtcbiAgfVxuXG4gIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgYSBjbGFzcyBmcm9tIHRoZSBOZ0NvbnRyb2wgc2hvdWxkIGJlIGZvcndhcmRlZCB0byB0aGUgaG9zdCBlbGVtZW50LiAqL1xuICBfc2hvdWxkRm9yd2FyZChwcm9wOiBrZXlvZiBOZ0NvbnRyb2wpOiBib29sZWFuIHtcbiAgICBjb25zdCBuZ0NvbnRyb2wgPSB0aGlzLl9jb250cm9sID8gdGhpcy5fY29udHJvbC5uZ0NvbnRyb2wgOiBudWxsO1xuICAgIHJldHVybiBuZ0NvbnRyb2wgJiYgbmdDb250cm9sW3Byb3BdO1xuICB9XG5cbiAgX2hhc1BsYWNlaG9sZGVyKCkge1xuICAgIHJldHVybiAhISh0aGlzLl9jb250cm9sICYmIHRoaXMuX2NvbnRyb2wucGxhY2Vob2xkZXIgfHwgdGhpcy5fcGxhY2Vob2xkZXJDaGlsZCk7XG4gIH1cblxuICBfaGFzTGFiZWwoKSB7XG4gICAgcmV0dXJuICEhKHRoaXMuX2xhYmVsQ2hpbGROb25TdGF0aWMgfHwgdGhpcy5fbGFiZWxDaGlsZFN0YXRpYyk7XG4gIH1cblxuICBfc2hvdWxkTGFiZWxGbG9hdCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY2FuTGFiZWxGbG9hdCgpICYmXG4gICAgICAgICgodGhpcy5fY29udHJvbCAmJiB0aGlzLl9jb250cm9sLnNob3VsZExhYmVsRmxvYXQpIHx8IHRoaXMuX3Nob3VsZEFsd2F5c0Zsb2F0KCkpO1xuICB9XG5cbiAgX2hpZGVDb250cm9sUGxhY2Vob2xkZXIoKSB7XG4gICAgLy8gSW4gdGhlIGxlZ2FjeSBhcHBlYXJhbmNlIHRoZSBwbGFjZWhvbGRlciBpcyBwcm9tb3RlZCB0byBhIGxhYmVsIGlmIG5vIGxhYmVsIGlzIGdpdmVuLlxuICAgIHJldHVybiB0aGlzLmFwcGVhcmFuY2UgPT09ICdsZWdhY3knICYmICF0aGlzLl9oYXNMYWJlbCgpIHx8XG4gICAgICAgIHRoaXMuX2hhc0xhYmVsKCkgJiYgIXRoaXMuX3Nob3VsZExhYmVsRmxvYXQoKTtcbiAgfVxuXG4gIF9oYXNGbG9hdGluZ0xhYmVsKCkge1xuICAgIC8vIEluIHRoZSBsZWdhY3kgYXBwZWFyYW5jZSB0aGUgcGxhY2Vob2xkZXIgaXMgcHJvbW90ZWQgdG8gYSBsYWJlbCBpZiBubyBsYWJlbCBpcyBnaXZlbi5cbiAgICByZXR1cm4gdGhpcy5faGFzTGFiZWwoKSB8fCB0aGlzLmFwcGVhcmFuY2UgPT09ICdsZWdhY3knICYmIHRoaXMuX2hhc1BsYWNlaG9sZGVyKCk7XG4gIH1cblxuICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIGRpc3BsYXkgaGludHMgb3IgZXJyb3JzLiAqL1xuICBfZ2V0RGlzcGxheWVkTWVzc2FnZXMoKTogJ2Vycm9yJyB8ICdoaW50JyB7XG4gICAgcmV0dXJuICh0aGlzLl9lcnJvckNoaWxkcmVuICYmIHRoaXMuX2Vycm9yQ2hpbGRyZW4ubGVuZ3RoID4gMCAmJlxuICAgICAgICB0aGlzLl9jb250cm9sLmVycm9yU3RhdGUpID8gJ2Vycm9yJyA6ICdoaW50JztcbiAgfVxuXG4gIC8qKiBBbmltYXRlcyB0aGUgcGxhY2Vob2xkZXIgdXAgYW5kIGxvY2tzIGl0IGluIHBvc2l0aW9uLiAqL1xuICBfYW5pbWF0ZUFuZExvY2tMYWJlbCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5faGFzRmxvYXRpbmdMYWJlbCgpICYmIHRoaXMuX2NhbkxhYmVsRmxvYXQoKSkge1xuICAgICAgLy8gSWYgYW5pbWF0aW9ucyBhcmUgZGlzYWJsZWQsIHdlIHNob3VsZG4ndCBnbyBpbiBoZXJlLFxuICAgICAgLy8gYmVjYXVzZSB0aGUgYHRyYW5zaXRpb25lbmRgIHdpbGwgbmV2ZXIgZmlyZS5cbiAgICAgIGlmICh0aGlzLl9hbmltYXRpb25zRW5hYmxlZCAmJiB0aGlzLl9sYWJlbCkge1xuICAgICAgICB0aGlzLl9zaG93QWx3YXlzQW5pbWF0ZSA9IHRydWU7XG5cbiAgICAgICAgZnJvbUV2ZW50KHRoaXMuX2xhYmVsLm5hdGl2ZUVsZW1lbnQsICd0cmFuc2l0aW9uZW5kJykucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX3Nob3dBbHdheXNBbmltYXRlID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmZsb2F0TGFiZWwgPSAnYWx3YXlzJztcbiAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFbnN1cmUgdGhhdCB0aGVyZSBpcyBvbmx5IG9uZSBwbGFjZWhvbGRlciAoZWl0aGVyIGBwbGFjZWhvbGRlcmAgYXR0cmlidXRlIG9uIHRoZSBjaGlsZCBjb250cm9sXG4gICAqIG9yIGNoaWxkIGVsZW1lbnQgd2l0aCB0aGUgYG1hdC1wbGFjZWhvbGRlcmAgZGlyZWN0aXZlKS5cbiAgICovXG4gIHByaXZhdGUgX3ZhbGlkYXRlUGxhY2Vob2xkZXJzKCkge1xuICAgIGlmICh0aGlzLl9jb250cm9sLnBsYWNlaG9sZGVyICYmIHRoaXMuX3BsYWNlaG9sZGVyQ2hpbGQgJiZcbiAgICAgICh0eXBlb2YgbmdEZXZNb2RlID09PSAndW5kZWZpbmVkJyB8fCBuZ0Rldk1vZGUpKSB7XG4gICAgICB0aHJvdyBnZXRNYXRGb3JtRmllbGRQbGFjZWhvbGRlckNvbmZsaWN0RXJyb3IoKTtcbiAgICB9XG4gIH1cblxuICAvKiogRG9lcyBhbnkgZXh0cmEgcHJvY2Vzc2luZyB0aGF0IGlzIHJlcXVpcmVkIHdoZW4gaGFuZGxpbmcgdGhlIGhpbnRzLiAqL1xuICBwcml2YXRlIF9wcm9jZXNzSGludHMoKSB7XG4gICAgdGhpcy5fdmFsaWRhdGVIaW50cygpO1xuICAgIHRoaXMuX3N5bmNEZXNjcmliZWRCeUlkcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuc3VyZSB0aGF0IHRoZXJlIGlzIGEgbWF4aW11bSBvZiBvbmUgb2YgZWFjaCBgPG1hdC1oaW50PmAgYWxpZ25tZW50IHNwZWNpZmllZCwgd2l0aCB0aGVcbiAgICogYXR0cmlidXRlIGJlaW5nIGNvbnNpZGVyZWQgYXMgYGFsaWduPVwic3RhcnRcImAuXG4gICAqL1xuICBwcml2YXRlIF92YWxpZGF0ZUhpbnRzKCkge1xuICAgIGlmICh0aGlzLl9oaW50Q2hpbGRyZW4gJiYgKHR5cGVvZiBuZ0Rldk1vZGUgPT09ICd1bmRlZmluZWQnIHx8IG5nRGV2TW9kZSkpIHtcbiAgICAgIGxldCBzdGFydEhpbnQ6IE1hdEhpbnQ7XG4gICAgICBsZXQgZW5kSGludDogTWF0SGludDtcbiAgICAgIHRoaXMuX2hpbnRDaGlsZHJlbi5mb3JFYWNoKChoaW50OiBNYXRIaW50KSA9PiB7XG4gICAgICAgIGlmIChoaW50LmFsaWduID09PSAnc3RhcnQnKSB7XG4gICAgICAgICAgaWYgKHN0YXJ0SGludCB8fCB0aGlzLmhpbnRMYWJlbCkge1xuICAgICAgICAgICAgdGhyb3cgZ2V0TWF0Rm9ybUZpZWxkRHVwbGljYXRlZEhpbnRFcnJvcignc3RhcnQnKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgc3RhcnRIaW50ID0gaGludDtcbiAgICAgICAgfSBlbHNlIGlmIChoaW50LmFsaWduID09PSAnZW5kJykge1xuICAgICAgICAgIGlmIChlbmRIaW50KSB7XG4gICAgICAgICAgICB0aHJvdyBnZXRNYXRGb3JtRmllbGREdXBsaWNhdGVkSGludEVycm9yKCdlbmQnKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZW5kSGludCA9IGhpbnQ7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBHZXRzIHRoZSBkZWZhdWx0IGZsb2F0IGxhYmVsIHN0YXRlLiAqL1xuICBwcml2YXRlIF9nZXREZWZhdWx0RmxvYXRMYWJlbFN0YXRlKCk6IEZsb2F0TGFiZWxUeXBlIHtcbiAgICByZXR1cm4gKHRoaXMuX2RlZmF1bHRzICYmIHRoaXMuX2RlZmF1bHRzLmZsb2F0TGFiZWwpIHx8ICdhdXRvJztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBsaXN0IG9mIGVsZW1lbnQgSURzIHRoYXQgZGVzY3JpYmUgdGhlIGNoaWxkIGNvbnRyb2wuIFRoaXMgYWxsb3dzIHRoZSBjb250cm9sIHRvIHVwZGF0ZVxuICAgKiBpdHMgYGFyaWEtZGVzY3JpYmVkYnlgIGF0dHJpYnV0ZSBhY2NvcmRpbmdseS5cbiAgICovXG4gIHByaXZhdGUgX3N5bmNEZXNjcmliZWRCeUlkcygpIHtcbiAgICBpZiAodGhpcy5fY29udHJvbCkge1xuICAgICAgbGV0IGlkczogc3RyaW5nW10gPSBbXTtcblxuICAgICAgLy8gVE9ETyh3YWduZXJtYWNpZWwpOiBSZW1vdmUgdGhlIHR5cGUgY2hlY2sgd2hlbiB3ZSBmaW5kIHRoZSByb290IGNhdXNlIG9mIHRoaXMgYnVnLlxuICAgICAgaWYgKHRoaXMuX2NvbnRyb2wudXNlckFyaWFEZXNjcmliZWRCeSAmJlxuICAgICAgICB0eXBlb2YgdGhpcy5fY29udHJvbC51c2VyQXJpYURlc2NyaWJlZEJ5ID09PSAnc3RyaW5nJykge1xuICAgICAgICBpZHMucHVzaCguLi50aGlzLl9jb250cm9sLnVzZXJBcmlhRGVzY3JpYmVkQnkuc3BsaXQoJyAnKSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLl9nZXREaXNwbGF5ZWRNZXNzYWdlcygpID09PSAnaGludCcpIHtcbiAgICAgICAgY29uc3Qgc3RhcnRIaW50ID0gdGhpcy5faGludENoaWxkcmVuID9cbiAgICAgICAgICAgIHRoaXMuX2hpbnRDaGlsZHJlbi5maW5kKGhpbnQgPT4gaGludC5hbGlnbiA9PT0gJ3N0YXJ0JykgOiBudWxsO1xuICAgICAgICBjb25zdCBlbmRIaW50ID0gdGhpcy5faGludENoaWxkcmVuID9cbiAgICAgICAgICAgIHRoaXMuX2hpbnRDaGlsZHJlbi5maW5kKGhpbnQgPT4gaGludC5hbGlnbiA9PT0gJ2VuZCcpIDogbnVsbDtcblxuICAgICAgICBpZiAoc3RhcnRIaW50KSB7XG4gICAgICAgICAgaWRzLnB1c2goc3RhcnRIaW50LmlkKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9oaW50TGFiZWwpIHtcbiAgICAgICAgICBpZHMucHVzaCh0aGlzLl9oaW50TGFiZWxJZCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZW5kSGludCkge1xuICAgICAgICAgIGlkcy5wdXNoKGVuZEhpbnQuaWQpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuX2Vycm9yQ2hpbGRyZW4pIHtcbiAgICAgICAgaWRzLnB1c2goLi4udGhpcy5fZXJyb3JDaGlsZHJlbi5tYXAoZXJyb3IgPT4gZXJyb3IuaWQpKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fY29udHJvbC5zZXREZXNjcmliZWRCeUlkcyhpZHMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBUaHJvd3MgYW4gZXJyb3IgaWYgdGhlIGZvcm0gZmllbGQncyBjb250cm9sIGlzIG1pc3NpbmcuICovXG4gIHByb3RlY3RlZCBfdmFsaWRhdGVDb250cm9sQ2hpbGQoKSB7XG4gICAgaWYgKCF0aGlzLl9jb250cm9sICYmICh0eXBlb2YgbmdEZXZNb2RlID09PSAndW5kZWZpbmVkJyB8fCBuZ0Rldk1vZGUpKSB7XG4gICAgICB0aHJvdyBnZXRNYXRGb3JtRmllbGRNaXNzaW5nQ29udHJvbEVycm9yKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIHdpZHRoIGFuZCBwb3NpdGlvbiBvZiB0aGUgZ2FwIGluIHRoZSBvdXRsaW5lLiBPbmx5IHJlbGV2YW50IGZvciB0aGUgb3V0bGluZVxuICAgKiBhcHBlYXJhbmNlLlxuICAgKi9cbiAgdXBkYXRlT3V0bGluZUdhcCgpIHtcbiAgICBjb25zdCBsYWJlbEVsID0gdGhpcy5fbGFiZWwgPyB0aGlzLl9sYWJlbC5uYXRpdmVFbGVtZW50IDogbnVsbDtcblxuICAgIGlmICh0aGlzLmFwcGVhcmFuY2UgIT09ICdvdXRsaW5lJyB8fCAhbGFiZWxFbCB8fCAhbGFiZWxFbC5jaGlsZHJlbi5sZW5ndGggfHxcbiAgICAgICAgIWxhYmVsRWwudGV4dENvbnRlbnQhLnRyaW0oKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyKSB7XG4gICAgICAvLyBnZXRCb3VuZGluZ0NsaWVudFJlY3QgaXNuJ3QgYXZhaWxhYmxlIG9uIHRoZSBzZXJ2ZXIuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIElmIHRoZSBlbGVtZW50IGlzIG5vdCBwcmVzZW50IGluIHRoZSBET00sIHRoZSBvdXRsaW5lIGdhcCB3aWxsIG5lZWQgdG8gYmUgY2FsY3VsYXRlZFxuICAgIC8vIHRoZSBuZXh0IHRpbWUgaXQgaXMgY2hlY2tlZCBhbmQgaW4gdGhlIERPTS5cbiAgICBpZiAoIXRoaXMuX2lzQXR0YWNoZWRUb0RPTSgpKSB7XG4gICAgICB0aGlzLl9vdXRsaW5lR2FwQ2FsY3VsYXRpb25OZWVkZWRJbW1lZGlhdGVseSA9IHRydWU7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IHN0YXJ0V2lkdGggPSAwO1xuICAgIGxldCBnYXBXaWR0aCA9IDA7XG5cbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLl9jb25uZWN0aW9uQ29udGFpbmVyUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3Qgc3RhcnRFbHMgPSBjb250YWluZXIucXVlcnlTZWxlY3RvckFsbCgnLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtc3RhcnQnKTtcbiAgICBjb25zdCBnYXBFbHMgPSBjb250YWluZXIucXVlcnlTZWxlY3RvckFsbCgnLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtZ2FwJyk7XG5cbiAgICBpZiAodGhpcy5fbGFiZWwgJiYgdGhpcy5fbGFiZWwubmF0aXZlRWxlbWVudC5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IGNvbnRhaW5lclJlY3QgPSBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgIC8vIElmIHRoZSBjb250YWluZXIncyB3aWR0aCBhbmQgaGVpZ2h0IGFyZSB6ZXJvLCBpdCBtZWFucyB0aGF0IHRoZSBlbGVtZW50IGlzXG4gICAgICAvLyBpbnZpc2libGUgYW5kIHdlIGNhbid0IGNhbGN1bGF0ZSB0aGUgb3V0bGluZSBnYXAuIE1hcmsgdGhlIGVsZW1lbnQgYXMgbmVlZGluZ1xuICAgICAgLy8gdG8gYmUgY2hlY2tlZCB0aGUgbmV4dCB0aW1lIHRoZSB6b25lIHN0YWJpbGl6ZXMuIFdlIGNhbid0IGRvIHRoaXMgaW1tZWRpYXRlbHlcbiAgICAgIC8vIG9uIHRoZSBuZXh0IGNoYW5nZSBkZXRlY3Rpb24sIGJlY2F1c2UgZXZlbiBpZiB0aGUgZWxlbWVudCBiZWNvbWVzIHZpc2libGUsXG4gICAgICAvLyB0aGUgYENsaWVudFJlY3RgIHdvbid0IGJlIHJlY2xhY3VsYXRlZCBpbW1lZGlhdGVseS4gV2UgcmVzZXQgdGhlXG4gICAgICAvLyBgX291dGxpbmVHYXBDYWxjdWxhdGlvbk5lZWRlZEltbWVkaWF0ZWx5YCBmbGFnIHNvbWUgd2UgZG9uJ3QgcnVuIHRoZSBjaGVja3MgdHdpY2UuXG4gICAgICBpZiAoY29udGFpbmVyUmVjdC53aWR0aCA9PT0gMCAmJiBjb250YWluZXJSZWN0LmhlaWdodCA9PT0gMCkge1xuICAgICAgICB0aGlzLl9vdXRsaW5lR2FwQ2FsY3VsYXRpb25OZWVkZWRPblN0YWJsZSA9IHRydWU7XG4gICAgICAgIHRoaXMuX291dGxpbmVHYXBDYWxjdWxhdGlvbk5lZWRlZEltbWVkaWF0ZWx5ID0gZmFsc2U7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY29udGFpbmVyU3RhcnQgPSB0aGlzLl9nZXRTdGFydEVuZChjb250YWluZXJSZWN0KTtcbiAgICAgIGNvbnN0IGxhYmVsQ2hpbGRyZW4gPSBsYWJlbEVsLmNoaWxkcmVuO1xuICAgICAgY29uc3QgbGFiZWxTdGFydCA9IHRoaXMuX2dldFN0YXJ0RW5kKGxhYmVsQ2hpbGRyZW5bMF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpO1xuICAgICAgbGV0IGxhYmVsV2lkdGggPSAwO1xuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxhYmVsQ2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbGFiZWxXaWR0aCArPSAobGFiZWxDaGlsZHJlbltpXSBhcyBIVE1MRWxlbWVudCkub2Zmc2V0V2lkdGg7XG4gICAgICB9XG4gICAgICBzdGFydFdpZHRoID0gTWF0aC5hYnMobGFiZWxTdGFydCAtIGNvbnRhaW5lclN0YXJ0KSAtIG91dGxpbmVHYXBQYWRkaW5nO1xuICAgICAgZ2FwV2lkdGggPSBsYWJlbFdpZHRoID4gMCA/IGxhYmVsV2lkdGggKiBmbG9hdGluZ0xhYmVsU2NhbGUgKyBvdXRsaW5lR2FwUGFkZGluZyAqIDIgOiAwO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RhcnRFbHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHN0YXJ0RWxzW2ldLnN0eWxlLndpZHRoID0gYCR7c3RhcnRXaWR0aH1weGA7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZ2FwRWxzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBnYXBFbHNbaV0uc3R5bGUud2lkdGggPSBgJHtnYXBXaWR0aH1weGA7XG4gICAgfVxuXG4gICAgdGhpcy5fb3V0bGluZUdhcENhbGN1bGF0aW9uTmVlZGVkT25TdGFibGUgPVxuICAgICAgICB0aGlzLl9vdXRsaW5lR2FwQ2FsY3VsYXRpb25OZWVkZWRJbW1lZGlhdGVseSA9IGZhbHNlO1xuICB9XG5cbiAgLyoqIEdldHMgdGhlIHN0YXJ0IGVuZCBvZiB0aGUgcmVjdCBjb25zaWRlcmluZyB0aGUgY3VycmVudCBkaXJlY3Rpb25hbGl0eS4gKi9cbiAgcHJpdmF0ZSBfZ2V0U3RhcnRFbmQocmVjdDogQ2xpZW50UmVjdCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLl9kaXIgJiYgdGhpcy5fZGlyLnZhbHVlID09PSAncnRsJykgPyByZWN0LnJpZ2h0IDogcmVjdC5sZWZ0O1xuICB9XG5cbiAgLyoqIENoZWNrcyB3aGV0aGVyIHRoZSBmb3JtIGZpZWxkIGlzIGF0dGFjaGVkIHRvIHRoZSBET00uICovXG4gIHByaXZhdGUgX2lzQXR0YWNoZWRUb0RPTSgpOiBib29sZWFuIHtcbiAgICBjb25zdCBlbGVtZW50OiBIVE1MRWxlbWVudCA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcblxuICAgIGlmIChlbGVtZW50LmdldFJvb3ROb2RlKSB7XG4gICAgICBjb25zdCByb290Tm9kZSA9IGVsZW1lbnQuZ2V0Um9vdE5vZGUoKTtcbiAgICAgIC8vIElmIHRoZSBlbGVtZW50IGlzIGluc2lkZSB0aGUgRE9NIHRoZSByb290IG5vZGUgd2lsbCBiZSBlaXRoZXIgdGhlIGRvY3VtZW50XG4gICAgICAvLyBvciB0aGUgY2xvc2VzdCBzaGFkb3cgcm9vdCwgb3RoZXJ3aXNlIGl0J2xsIGJlIHRoZSBlbGVtZW50IGl0c2VsZi5cbiAgICAgIHJldHVybiByb290Tm9kZSAmJiByb290Tm9kZSAhPT0gZWxlbWVudDtcbiAgICB9XG5cbiAgICAvLyBPdGhlcndpc2UgZmFsbCBiYWNrIHRvIGNoZWNraW5nIGlmIGl0J3MgaW4gdGhlIGRvY3VtZW50LiBUaGlzIGRvZXNuJ3QgYWNjb3VudCBmb3JcbiAgICAvLyBzaGFkb3cgRE9NLCBob3dldmVyIGJyb3dzZXIgdGhhdCBzdXBwb3J0IHNoYWRvdyBET00gc2hvdWxkIHN1cHBvcnQgYGdldFJvb3ROb2RlYCBhcyB3ZWxsLlxuICAgIHJldHVybiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQhLmNvbnRhaW5zKGVsZW1lbnQpO1xuICB9XG5cbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2hpZGVSZXF1aXJlZE1hcmtlcjogQm9vbGVhbklucHV0O1xufVxuIl19
|