@ptsecurity/mosaic 13.5.0 → 13.6.2
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/LICENSE +21 -21
- package/README.md +6 -6
- package/_theming.scss +7141 -7091
- package/_visual.scss +2695 -2690
- package/autocomplete/autocomplete-origin.directive.d.ts +12 -12
- package/autocomplete/autocomplete-trigger.directive.d.ts +167 -167
- package/autocomplete/autocomplete.component.d.ts +73 -73
- package/autocomplete/autocomplete.module.d.ts +12 -12
- package/autocomplete/index.d.ts +1 -1
- package/autocomplete/ptsecurity-mosaic-autocomplete.d.ts +5 -5
- package/autocomplete/public-api.d.ts +4 -4
- package/button/button.component.d.ts +40 -40
- package/button/button.module.d.ts +10 -10
- package/button/index.d.ts +1 -1
- package/button/ptsecurity-mosaic-button.d.ts +5 -5
- package/button/public-api.d.ts +2 -2
- package/button-toggle/button-toggle.component.d.ts +141 -141
- package/button-toggle/button-toggle.module.d.ts +9 -9
- package/button-toggle/index.d.ts +1 -1
- package/button-toggle/ptsecurity-mosaic-button-toggle.d.ts +5 -5
- package/button-toggle/public-api.d.ts +2 -2
- package/card/card.component.d.ts +26 -26
- package/card/card.module.d.ts +10 -10
- package/card/index.d.ts +1 -1
- package/card/ptsecurity-mosaic-card.d.ts +5 -5
- package/card/public-api.d.ts +2 -2
- package/checkbox/README.md +1 -1
- package/checkbox/checkbox-config.d.ts +13 -13
- package/checkbox/checkbox-module.d.ts +9 -9
- package/checkbox/checkbox-required-validator.d.ts +13 -13
- package/checkbox/checkbox.d.ts +140 -140
- package/checkbox/index.d.ts +1 -1
- package/checkbox/ptsecurity-mosaic-checkbox.d.ts +5 -5
- package/checkbox/public-api.d.ts +4 -4
- package/core/animation/animation.d.ts +6 -6
- package/core/animation/fade-animations.d.ts +2 -2
- package/core/animation/index.d.ts +3 -3
- package/core/animation/select-animations.d.ts +12 -12
- package/core/common-behaviors/color.d.ts +19 -19
- package/core/common-behaviors/common-module.d.ts +25 -25
- package/core/common-behaviors/constructor.d.ts +9 -9
- package/core/common-behaviors/disabled.d.ts +8 -8
- package/core/common-behaviors/error-state.d.ts +25 -25
- package/core/common-behaviors/index.d.ts +5 -5
- package/core/common-behaviors/tabindex.d.ts +8 -8
- package/core/error/error-options.d.ts +14 -14
- package/core/formatters/date/formatter.d.ts +203 -203
- package/core/formatters/date/templates/en-US.d.ts +74 -74
- package/core/formatters/date/templates/ru-RU.d.ts +74 -74
- package/core/formatters/index.d.ts +9 -9
- package/core/formatters/number/formatter.d.ts +27 -27
- package/core/forms/forms-module.d.ts +7 -7
- package/core/forms/forms.directive.d.ts +22 -22
- package/core/forms/index.d.ts +2 -2
- package/core/highlight/highlight.pipe.d.ts +7 -7
- package/core/highlight/index.d.ts +9 -9
- package/core/index.d.ts +1 -1
- package/core/label/label-options.d.ts +13 -13
- package/core/line/line.d.ts +28 -28
- package/core/option/action.d.ts +42 -42
- package/core/option/index.d.ts +4 -4
- package/core/option/optgroup.d.ts +16 -16
- package/core/option/option-module.d.ts +11 -11
- package/core/option/option.d.ts +115 -115
- package/core/overlay/overlay-position-map.d.ts +34 -34
- package/core/pop-up/constants.d.ts +29 -29
- package/core/pop-up/index.d.ts +3 -3
- package/core/pop-up/pop-up-trigger.d.ts +70 -70
- package/core/pop-up/pop-up.d.ts +36 -36
- package/core/ptsecurity-mosaic-core.d.ts +5 -5
- package/core/public-api.d.ts +17 -17
- package/core/select/constants.d.ts +23 -23
- package/core/select/errors.d.ts +19 -19
- package/core/select/events.d.ts +1 -1
- package/core/select/index.d.ts +3 -3
- package/core/selection/constants.d.ts +4 -4
- package/core/selection/index.d.ts +3 -3
- package/core/selection/pseudo-checkbox/pseudo-checkbox.d.ts +30 -21
- package/core/selection/pseudo-checkbox/pseudo-checkbox.module.d.ts +8 -8
- package/core/services/measure-scrollbar.service.d.ts +11 -11
- package/core/utils/index.d.ts +1 -1
- package/core/utils/public-api.d.ts +1 -1
- package/core/utils/utils.d.ts +2 -2
- package/core/validation/index.d.ts +1 -1
- package/core/validation/validation.d.ts +18 -18
- package/core/version.d.ts +2 -2
- package/datepicker/calendar-body.component.d.ts +63 -63
- package/datepicker/calendar.component.d.ts +151 -151
- package/datepicker/datepicker-animations.d.ts +9 -9
- package/datepicker/datepicker-errors.d.ts +2 -2
- package/datepicker/datepicker-input.directive.d.ts +178 -178
- package/datepicker/datepicker-intl.d.ts +32 -32
- package/datepicker/datepicker-module.d.ts +20 -20
- package/datepicker/datepicker-toggle.component.d.ts +35 -35
- package/datepicker/datepicker.component.d.ts +158 -158
- package/datepicker/index.d.ts +1 -1
- package/datepicker/month-view.component.d.ts +93 -93
- package/datepicker/multi-year-view.component.d.ts +72 -72
- package/datepicker/ptsecurity-mosaic-datepicker.d.ts +5 -5
- package/datepicker/public-api.d.ts +11 -11
- package/datepicker/year-view.component.d.ts +90 -90
- package/design-tokens/index.d.ts +1 -1
- package/design-tokens/legacy-2017/tokens/components/alert.json5 +83 -83
- package/design-tokens/legacy-2017/tokens/components/autocomplete.json5 +11 -11
- package/design-tokens/legacy-2017/tokens/components/badge.json5 +174 -174
- package/design-tokens/legacy-2017/tokens/components/button-toggle.json5 +10 -10
- package/design-tokens/legacy-2017/tokens/components/button.json5 +142 -142
- package/design-tokens/legacy-2017/tokens/components/card.json5 +51 -51
- package/design-tokens/legacy-2017/tokens/components/checkbox.json5 +97 -97
- package/design-tokens/legacy-2017/tokens/components/datepicker.json5 +64 -64
- package/design-tokens/legacy-2017/tokens/components/divider.json5 +14 -8
- package/design-tokens/legacy-2017/tokens/components/dl.json5 +38 -38
- package/design-tokens/legacy-2017/tokens/components/dropdown.json5 +48 -48
- package/design-tokens/legacy-2017/tokens/components/form-field.json5 +92 -92
- package/design-tokens/legacy-2017/tokens/components/forms.json5 +52 -52
- package/design-tokens/legacy-2017/tokens/components/icon.json5 +104 -104
- package/design-tokens/legacy-2017/tokens/components/input.json5 +12 -12
- package/design-tokens/legacy-2017/tokens/components/link.json5 +50 -50
- package/design-tokens/legacy-2017/tokens/components/list.json5 +13 -13
- package/design-tokens/legacy-2017/tokens/components/modal.json5 +81 -81
- package/design-tokens/legacy-2017/tokens/components/navbar.json5 +70 -70
- package/design-tokens/legacy-2017/tokens/components/optgroup.json5 +10 -10
- package/design-tokens/legacy-2017/tokens/components/option.json5 +12 -12
- package/design-tokens/legacy-2017/tokens/components/popover.json5 +68 -68
- package/design-tokens/legacy-2017/tokens/components/popup.json5 +16 -18
- package/design-tokens/legacy-2017/tokens/components/progress-bar.json5 +13 -13
- package/design-tokens/legacy-2017/tokens/components/progress-spinner.json5 +7 -7
- package/design-tokens/legacy-2017/tokens/components/radio.json5 +45 -44
- package/design-tokens/legacy-2017/tokens/components/select.json5 +24 -24
- package/design-tokens/legacy-2017/tokens/components/sidepanel.json5 +44 -32
- package/design-tokens/legacy-2017/tokens/components/table.json5 +15 -15
- package/design-tokens/legacy-2017/tokens/components/tabs.json5 +101 -101
- package/design-tokens/legacy-2017/tokens/components/tags.json5 +134 -134
- package/design-tokens/legacy-2017/tokens/components/textarea.json5 +12 -12
- package/design-tokens/legacy-2017/tokens/components/timepicker.json5 +7 -7
- package/design-tokens/legacy-2017/tokens/components/toggle.json5 +79 -79
- package/design-tokens/legacy-2017/tokens/components/tooltip.json5 +83 -83
- package/design-tokens/legacy-2017/tokens/components/tree.json5 +15 -15
- package/design-tokens/legacy-2017/tokens/properties/aliases.json5 +3 -3
- package/design-tokens/legacy-2017/tokens/properties/colors.json5 +119 -118
- package/design-tokens/legacy-2017/tokens/properties/font.json5 +12 -12
- package/design-tokens/legacy-2017/tokens/properties/globals.json5 +49 -49
- package/design-tokens/legacy-2017/tokens/properties/padding.json5 +3 -3
- package/design-tokens/legacy-2017/tokens/properties/palette.json5 +163 -163
- package/design-tokens/legacy-2017/tokens/properties/typography.json5 +175 -175
- package/design-tokens/legacy-2017/tokens.d.ts +7844 -7839
- package/design-tokens/pt-2022/tokens/components/alert.json5 +83 -83
- package/design-tokens/pt-2022/tokens/components/autocomplete.json5 +11 -11
- package/design-tokens/pt-2022/tokens/components/badge.json5 +174 -174
- package/design-tokens/pt-2022/tokens/components/button-toggle.json5 +10 -10
- package/design-tokens/pt-2022/tokens/components/button.json5 +142 -142
- package/design-tokens/pt-2022/tokens/components/card.json5 +51 -51
- package/design-tokens/pt-2022/tokens/components/checkbox.json5 +97 -97
- package/design-tokens/pt-2022/tokens/components/datepicker.json5 +64 -64
- package/design-tokens/pt-2022/tokens/components/divider.json5 +14 -8
- package/design-tokens/pt-2022/tokens/components/dl.json5 +38 -38
- package/design-tokens/pt-2022/tokens/components/dropdown.json5 +48 -48
- package/design-tokens/pt-2022/tokens/components/form-field.json5 +92 -92
- package/design-tokens/pt-2022/tokens/components/forms.json5 +52 -52
- package/design-tokens/pt-2022/tokens/components/icon.json5 +104 -104
- package/design-tokens/pt-2022/tokens/components/input.json5 +12 -12
- package/design-tokens/pt-2022/tokens/components/link.json5 +50 -50
- package/design-tokens/pt-2022/tokens/components/list.json5 +13 -13
- package/design-tokens/pt-2022/tokens/components/modal.json5 +81 -81
- package/design-tokens/pt-2022/tokens/components/navbar.json5 +70 -70
- package/design-tokens/pt-2022/tokens/components/optgroup.json5 +10 -10
- package/design-tokens/pt-2022/tokens/components/option.json5 +12 -12
- package/design-tokens/pt-2022/tokens/components/popover.json5 +68 -68
- package/design-tokens/pt-2022/tokens/components/popup.json5 +16 -18
- package/design-tokens/pt-2022/tokens/components/progress-bar.json5 +13 -13
- package/design-tokens/pt-2022/tokens/components/progress-spinner.json5 +7 -7
- package/design-tokens/pt-2022/tokens/components/radio.json5 +45 -44
- package/design-tokens/pt-2022/tokens/components/select.json5 +24 -24
- package/design-tokens/pt-2022/tokens/components/sidepanel.json5 +44 -32
- package/design-tokens/pt-2022/tokens/components/table.json5 +15 -15
- package/design-tokens/pt-2022/tokens/components/tabs.json5 +101 -101
- package/design-tokens/pt-2022/tokens/components/tags.json5 +137 -137
- package/design-tokens/pt-2022/tokens/components/textarea.json5 +12 -12
- package/design-tokens/pt-2022/tokens/components/timepicker.json5 +7 -7
- package/design-tokens/pt-2022/tokens/components/toggle.json5 +79 -79
- package/design-tokens/pt-2022/tokens/components/tooltip.json5 +83 -83
- package/design-tokens/pt-2022/tokens/components/tree.json5 +15 -15
- package/design-tokens/pt-2022/tokens/properties/aliases.json5 +3 -3
- package/design-tokens/pt-2022/tokens/properties/colors.json5 +122 -120
- package/design-tokens/pt-2022/tokens/properties/font.json5 +15 -15
- package/design-tokens/pt-2022/tokens/properties/globals.json5 +49 -49
- package/design-tokens/pt-2022/tokens/properties/padding.json5 +3 -3
- package/design-tokens/pt-2022/tokens/properties/palette.json5 +232 -232
- package/design-tokens/pt-2022/tokens/properties/typography.json5 +175 -175
- package/design-tokens/pt-2022/tokens.d.ts +9176 -9171
- package/design-tokens/ptsecurity-mosaic-design-tokens.d.ts +5 -5
- package/design-tokens/public-api.d.ts +3 -3
- package/design-tokens/style-dictionary/build.js +63 -63
- package/design-tokens/style-dictionary/configs/css.js +13 -13
- package/design-tokens/style-dictionary/configs/index.js +48 -48
- package/design-tokens/style-dictionary/configs/js.js +9 -9
- package/design-tokens/style-dictionary/configs/scss.js +23 -23
- package/design-tokens/style-dictionary/filters/color.js +7 -7
- package/design-tokens/style-dictionary/filters/palette.js +7 -7
- package/design-tokens/style-dictionary/filters/size.js +7 -7
- package/design-tokens/style-dictionary/filters/typography.js +7 -7
- package/design-tokens/style-dictionary/formats/palette.js +25 -25
- package/design-tokens/style-dictionary/formats/typography.js +52 -52
- package/design-tokens/style-dictionary/transformGroups/css.js +13 -13
- package/design-tokens/style-dictionary/transformGroups/scss.js +12 -12
- package/design-tokens/style-dictionary/transformGroups/ts.js +11 -11
- package/design-tokens/style-dictionary/transforms/attribute/palette.js +9 -9
- package/design-tokens/style-dictionary/transforms/attribute/prefix.js +11 -11
- package/design-tokens/style-dictionary/transforms/attribute/size.js +8 -8
- package/design-tokens/style-dictionary/transforms/attribute/typography.js +9 -9
- package/divider/divider.component.d.ts +11 -11
- package/divider/divider.module.d.ts +8 -8
- package/divider/index.d.ts +1 -1
- package/divider/ptsecurity-mosaic-divider.d.ts +5 -5
- package/divider/public-api.d.ts +2 -2
- package/dl/dl.component.d.ts +26 -26
- package/dl/dl.module.d.ts +10 -10
- package/dl/index.d.ts +1 -1
- package/dl/ptsecurity-mosaic-dl.d.ts +5 -5
- package/dl/public-api.d.ts +2 -2
- package/dropdown/dropdown-animations.d.ts +11 -11
- package/dropdown/dropdown-content.directive.d.ts +32 -32
- package/dropdown/dropdown-errors.d.ts +17 -17
- package/dropdown/dropdown-item.component.d.ts +50 -50
- package/dropdown/dropdown-trigger.directive.d.ts +136 -136
- package/dropdown/dropdown.component.d.ts +121 -121
- package/dropdown/dropdown.module.d.ts +13 -13
- package/dropdown/dropdown.types.d.ts +53 -53
- package/dropdown/index.d.ts +1 -1
- package/dropdown/ptsecurity-mosaic-dropdown.d.ts +5 -5
- package/dropdown/public-api.d.ts +8 -8
- package/esm2020/autocomplete/autocomplete-origin.directive.mjs +21 -21
- package/esm2020/autocomplete/autocomplete-trigger.directive.mjs +555 -555
- package/esm2020/autocomplete/autocomplete.component.mjs +154 -154
- package/esm2020/autocomplete/autocomplete.module.mjs +34 -34
- package/esm2020/autocomplete/index.mjs +2 -2
- package/esm2020/autocomplete/ptsecurity-mosaic-autocomplete.mjs +4 -4
- package/esm2020/autocomplete/public-api.mjs +5 -5
- package/esm2020/button/button.component.mjs +137 -137
- package/esm2020/button/button.module.mjs +38 -38
- package/esm2020/button/index.mjs +2 -2
- package/esm2020/button/ptsecurity-mosaic-button.mjs +4 -4
- package/esm2020/button/public-api.mjs +3 -3
- package/esm2020/button-toggle/button-toggle.component.mjs +362 -362
- package/esm2020/button-toggle/button-toggle.module.mjs +19 -19
- package/esm2020/button-toggle/index.mjs +2 -2
- package/esm2020/button-toggle/ptsecurity-mosaic-button-toggle.mjs +4 -4
- package/esm2020/button-toggle/public-api.mjs +3 -3
- package/esm2020/card/card.component.mjs +80 -80
- package/esm2020/card/card.module.mjs +30 -30
- package/esm2020/card/index.mjs +2 -2
- package/esm2020/card/ptsecurity-mosaic-card.mjs +4 -4
- package/esm2020/card/public-api.mjs +3 -3
- package/esm2020/checkbox/checkbox-config.mjs +6 -6
- package/esm2020/checkbox/checkbox-module.mjs +19 -19
- package/esm2020/checkbox/checkbox-required-validator.mjs +27 -27
- package/esm2020/checkbox/checkbox.mjs +316 -316
- package/esm2020/checkbox/index.mjs +2 -2
- package/esm2020/checkbox/ptsecurity-mosaic-checkbox.mjs +4 -4
- package/esm2020/checkbox/public-api.mjs +5 -5
- package/esm2020/core/animation/animation.mjs +8 -8
- package/esm2020/core/animation/fade-animations.mjs +9 -9
- package/esm2020/core/animation/index.mjs +4 -4
- package/esm2020/core/animation/select-animations.mjs +45 -45
- package/esm2020/core/common-behaviors/color.mjs +30 -30
- package/esm2020/core/common-behaviors/common-module.mjs +83 -83
- package/esm2020/core/common-behaviors/constructor.mjs +2 -2
- package/esm2020/core/common-behaviors/disabled.mjs +17 -17
- package/esm2020/core/common-behaviors/error-state.mjs +31 -31
- package/esm2020/core/common-behaviors/index.mjs +6 -6
- package/esm2020/core/common-behaviors/tabindex.mjs +18 -18
- package/esm2020/core/error/error-options.mjs +26 -26
- package/esm2020/core/formatters/date/formatter.mjs +359 -359
- package/esm2020/core/formatters/date/templates/en-US.mjs +281 -281
- package/esm2020/core/formatters/date/templates/ru-RU.mjs +281 -281
- package/esm2020/core/formatters/index.mjs +20 -20
- package/esm2020/core/formatters/number/formatter.mjs +105 -105
- package/esm2020/core/forms/forms-module.mjs +24 -24
- package/esm2020/core/forms/forms.directive.mjs +66 -66
- package/esm2020/core/forms/index.mjs +3 -3
- package/esm2020/core/highlight/highlight.pipe.mjs +17 -17
- package/esm2020/core/highlight/index.mjs +19 -19
- package/esm2020/core/index.mjs +2 -2
- package/esm2020/core/label/label-options.mjs +4 -4
- package/esm2020/core/line/line.mjs +70 -70
- package/esm2020/core/option/action.mjs +121 -121
- package/esm2020/core/option/index.mjs +5 -5
- package/esm2020/core/option/optgroup.mjs +31 -31
- package/esm2020/core/option/option-module.mjs +21 -21
- package/esm2020/core/option/option.mjs +257 -257
- package/esm2020/core/overlay/overlay-position-map.mjs +244 -244
- package/esm2020/core/pop-up/constants.mjs +34 -34
- package/esm2020/core/pop-up/index.mjs +4 -4
- package/esm2020/core/pop-up/pop-up-trigger.mjs +239 -239
- package/esm2020/core/pop-up/pop-up.mjs +94 -94
- package/esm2020/core/ptsecurity-mosaic-core.mjs +4 -4
- package/esm2020/core/public-api.mjs +18 -18
- package/esm2020/core/select/constants.mjs +27 -27
- package/esm2020/core/select/errors.mjs +26 -26
- package/esm2020/core/select/events.mjs +2 -2
- package/esm2020/core/select/index.mjs +4 -4
- package/esm2020/core/selection/constants.mjs +6 -6
- package/esm2020/core/selection/index.mjs +4 -4
- package/esm2020/core/selection/pseudo-checkbox/pseudo-checkbox.mjs +49 -37
- package/esm2020/core/selection/pseudo-checkbox/pseudo-checkbox.module.mjs +18 -18
- package/esm2020/core/services/measure-scrollbar.service.mjs +48 -48
- package/esm2020/core/utils/index.mjs +2 -2
- package/esm2020/core/utils/public-api.mjs +2 -2
- package/esm2020/core/utils/utils.mjs +5 -5
- package/esm2020/core/validation/index.mjs +2 -2
- package/esm2020/core/validation/validation.mjs +118 -118
- package/esm2020/core/version.mjs +3 -3
- package/esm2020/datepicker/calendar-body.component.mjs +106 -106
- package/esm2020/datepicker/calendar.component.mjs +362 -362
- package/esm2020/datepicker/datepicker-animations.mjs +32 -32
- package/esm2020/datepicker/datepicker-errors.mjs +6 -6
- package/esm2020/datepicker/datepicker-input.directive.mjs +938 -936
- package/esm2020/datepicker/datepicker-intl.mjs +40 -40
- package/esm2020/datepicker/datepicker-module.mjs +107 -107
- package/esm2020/datepicker/datepicker-toggle.component.mjs +86 -86
- package/esm2020/datepicker/datepicker.component.mjs +404 -408
- package/esm2020/datepicker/index.mjs +2 -2
- package/esm2020/datepicker/month-view.component.mjs +257 -257
- package/esm2020/datepicker/multi-year-view.component.mjs +218 -218
- package/esm2020/datepicker/ptsecurity-mosaic-datepicker.mjs +4 -4
- package/esm2020/datepicker/public-api.mjs +12 -12
- package/esm2020/datepicker/year-view.component.mjs +253 -253
- package/esm2020/design-tokens/index.mjs +2 -2
- package/esm2020/design-tokens/legacy-2017/tokens.mjs +1138 -1133
- package/esm2020/design-tokens/pt-2022/tokens.mjs +1208 -1203
- package/esm2020/design-tokens/ptsecurity-mosaic-design-tokens.mjs +4 -4
- package/esm2020/design-tokens/public-api.mjs +4 -4
- package/esm2020/divider/divider.component.mjs +39 -39
- package/esm2020/divider/divider.module.mjs +18 -18
- package/esm2020/divider/index.mjs +2 -2
- package/esm2020/divider/ptsecurity-mosaic-divider.mjs +4 -4
- package/esm2020/divider/public-api.mjs +3 -3
- package/esm2020/dl/dl.component.mjs +78 -78
- package/esm2020/dl/dl.module.mjs +42 -42
- package/esm2020/dl/index.mjs +2 -2
- package/esm2020/dl/ptsecurity-mosaic-dl.mjs +4 -4
- package/esm2020/dl/public-api.mjs +3 -3
- package/esm2020/dropdown/dropdown-animations.mjs +41 -41
- package/esm2020/dropdown/dropdown-content.directive.mjs +64 -64
- package/esm2020/dropdown/dropdown-errors.mjs +29 -29
- package/esm2020/dropdown/dropdown-item.component.mjs +139 -139
- package/esm2020/dropdown/dropdown-trigger.directive.mjs +489 -489
- package/esm2020/dropdown/dropdown.component.mjs +292 -292
- package/esm2020/dropdown/dropdown.module.mjs +50 -50
- package/esm2020/dropdown/dropdown.types.mjs +24 -24
- package/esm2020/dropdown/index.mjs +2 -2
- package/esm2020/dropdown/ptsecurity-mosaic-dropdown.mjs +4 -4
- package/esm2020/dropdown/public-api.mjs +9 -9
- package/esm2020/form-field/cleaner.mjs +23 -23
- package/esm2020/form-field/form-field-control.mjs +5 -5
- package/esm2020/form-field/form-field-errors.mjs +7 -7
- package/esm2020/form-field/form-field.mjs +225 -225
- package/esm2020/form-field/form-field.module.mjs +57 -57
- package/esm2020/form-field/hint.mjs +23 -23
- package/esm2020/form-field/index.mjs +2 -2
- package/esm2020/form-field/password-hint.mjs +139 -134
- package/esm2020/form-field/prefix.mjs +13 -13
- package/esm2020/form-field/ptsecurity-mosaic-form-field.mjs +4 -4
- package/esm2020/form-field/public-api.mjs +11 -11
- package/esm2020/form-field/stepper.mjs +55 -55
- package/esm2020/form-field/suffix.mjs +13 -13
- package/esm2020/icon/icon.component.mjs +44 -44
- package/esm2020/icon/icon.module.mjs +38 -38
- package/esm2020/icon/index.mjs +2 -2
- package/esm2020/icon/ptsecurity-mosaic-icon.mjs +4 -4
- package/esm2020/icon/public-api.mjs +3 -3
- package/esm2020/index.mjs +2 -2
- package/esm2020/input/index.mjs +2 -2
- package/esm2020/input/input-errors.mjs +4 -4
- package/esm2020/input/input-number-validators.mjs +92 -92
- package/esm2020/input/input-number.mjs +163 -163
- package/esm2020/input/input-password.mjs +372 -368
- package/esm2020/input/input-value-accessor.mjs +3 -3
- package/esm2020/input/input.mjs +334 -334
- package/esm2020/input/input.module.mjs +65 -65
- package/esm2020/input/ptsecurity-mosaic-input.mjs +4 -4
- package/esm2020/input/public-api.mjs +7 -7
- package/esm2020/link/index.mjs +2 -2
- package/esm2020/link/link.component.mjs +107 -107
- package/esm2020/link/link.module.mjs +26 -26
- package/esm2020/link/ptsecurity-mosaic-link.mjs +4 -4
- package/esm2020/link/public-api.mjs +3 -3
- package/esm2020/list/index.mjs +2 -2
- package/esm2020/list/list-selection.component.mjs +686 -686
- package/esm2020/list/list.component.mjs +44 -44
- package/esm2020/list/list.module.mjs +55 -55
- package/esm2020/list/ptsecurity-mosaic-list.mjs +4 -4
- package/esm2020/list/public-api.mjs +4 -4
- package/esm2020/modal/css-unit.pipe.mjs +17 -17
- package/esm2020/modal/index.mjs +2 -2
- package/esm2020/modal/modal-control.service.mjs +85 -85
- package/esm2020/modal/modal-ref.class.mjs +8 -8
- package/esm2020/modal/modal-util.mjs +17 -17
- package/esm2020/modal/modal.component.mjs +501 -501
- package/esm2020/modal/modal.directive.mjs +52 -52
- package/esm2020/modal/modal.module.mjs +72 -72
- package/esm2020/modal/modal.service.mjs +124 -124
- package/esm2020/modal/modal.type.mjs +7 -7
- package/esm2020/modal/ptsecurity-mosaic-modal.mjs +4 -4
- package/esm2020/modal/public-api.mjs +7 -7
- package/esm2020/navbar/index.mjs +2 -2
- package/esm2020/navbar/navbar-item.component.mjs +582 -582
- package/esm2020/navbar/navbar.component.mjs +237 -237
- package/esm2020/navbar/navbar.module.mjs +92 -92
- package/esm2020/navbar/ptsecurity-mosaic-navbar.mjs +4 -4
- package/esm2020/navbar/public-api.mjs +5 -5
- package/esm2020/navbar/vertical-navbar.animation.mjs +10 -10
- package/esm2020/navbar/vertical-navbar.component.mjs +114 -114
- package/esm2020/popover/index.mjs +2 -2
- package/esm2020/popover/popover-animations.mjs +16 -16
- package/esm2020/popover/popover-confirm.component.mjs +108 -108
- package/esm2020/popover/popover.component.mjs +253 -253
- package/esm2020/popover/popover.module.mjs +24 -24
- package/esm2020/popover/ptsecurity-mosaic-popover.mjs +4 -4
- package/esm2020/popover/public-api.mjs +5 -5
- package/esm2020/progress-bar/index.mjs +2 -2
- package/esm2020/progress-bar/progress-bar.component.mjs +42 -42
- package/esm2020/progress-bar/progress-bar.module.mjs +30 -30
- package/esm2020/progress-bar/ptsecurity-mosaic-progress-bar.mjs +4 -4
- package/esm2020/progress-bar/public-api.mjs +3 -3
- package/esm2020/progress-spinner/index.mjs +2 -2
- package/esm2020/progress-spinner/progress-spinner.component.mjs +46 -46
- package/esm2020/progress-spinner/progress-spinner.module.mjs +30 -30
- package/esm2020/progress-spinner/ptsecurity-mosaic-progress-spinner.mjs +4 -4
- package/esm2020/progress-spinner/public-api.mjs +3 -3
- package/esm2020/ptsecurity-mosaic.mjs +4 -4
- package/esm2020/public-api.mjs +2 -2
- package/esm2020/radio/index.mjs +2 -2
- package/esm2020/radio/ptsecurity-mosaic-radio.mjs +4 -4
- package/esm2020/radio/public-api.mjs +3 -3
- package/esm2020/radio/radio.component.mjs +458 -458
- package/esm2020/radio/radio.module.mjs +20 -20
- package/esm2020/select/index.mjs +2 -2
- package/esm2020/select/ptsecurity-mosaic-select.mjs +4 -4
- package/esm2020/select/public-api.mjs +4 -4
- package/esm2020/select/select-option.directive.mjs +65 -65
- package/esm2020/select/select.component.mjs +1117 -1107
- package/esm2020/select/select.module.mjs +73 -73
- package/esm2020/sidebar/index.mjs +2 -2
- package/esm2020/sidebar/ptsecurity-mosaic-sidebar.mjs +4 -4
- package/esm2020/sidebar/public-api.mjs +3 -3
- package/esm2020/sidebar/sidebar-animations.mjs +23 -23
- package/esm2020/sidebar/sidebar.component.mjs +146 -146
- package/esm2020/sidebar/sidebar.module.mjs +30 -30
- package/esm2020/sidepanel/index.mjs +2 -2
- package/esm2020/sidepanel/ptsecurity-mosaic-sidepanel.mjs +4 -4
- package/esm2020/sidepanel/public-api.mjs +7 -7
- package/esm2020/sidepanel/sidepanel-animations.mjs +26 -26
- package/esm2020/sidepanel/sidepanel-config.mjs +26 -26
- package/esm2020/sidepanel/sidepanel-container.component.mjs +106 -106
- package/esm2020/sidepanel/sidepanel-directives.mjs +159 -159
- package/esm2020/sidepanel/sidepanel-ref.mjs +53 -53
- package/esm2020/sidepanel/sidepanel.module.mjs +74 -74
- package/esm2020/sidepanel/sidepanel.service.mjs +167 -167
- package/esm2020/splitter/index.mjs +2 -2
- package/esm2020/splitter/ptsecurity-mosaic-splitter.mjs +4 -4
- package/esm2020/splitter/public-api.mjs +3 -3
- package/esm2020/splitter/splitter.component.mjs +482 -482
- package/esm2020/splitter/splitter.module.mjs +40 -40
- package/esm2020/table/index.mjs +2 -2
- package/esm2020/table/ptsecurity-mosaic-table.mjs +4 -4
- package/esm2020/table/public-api.mjs +3 -3
- package/esm2020/table/table.component.mjs +16 -16
- package/esm2020/table/table.module.mjs +30 -30
- package/esm2020/tabs/index.mjs +2 -2
- package/esm2020/tabs/paginated-tab-header.mjs +479 -479
- package/esm2020/tabs/ptsecurity-mosaic-tabs.mjs +4 -4
- package/esm2020/tabs/public-api.mjs +11 -11
- package/esm2020/tabs/tab-body.component.mjs +178 -178
- package/esm2020/tabs/tab-content.directive.mjs +15 -15
- package/esm2020/tabs/tab-group.component.mjs +350 -350
- package/esm2020/tabs/tab-header.component.mjs +67 -67
- package/esm2020/tabs/tab-label-wrapper.directive.mjs +78 -78
- package/esm2020/tabs/tab-label.directive.mjs +17 -17
- package/esm2020/tabs/tab-nav-bar/index.mjs +2 -2
- package/esm2020/tabs/tab-nav-bar/tab-nav-bar.mjs +110 -110
- package/esm2020/tabs/tab.component.mjs +133 -133
- package/esm2020/tabs/tabs-animations.mjs +24 -24
- package/esm2020/tabs/tabs.module.mjs +104 -104
- package/esm2020/tags/index.mjs +2 -2
- package/esm2020/tags/ptsecurity-mosaic-tags.mjs +4 -4
- package/esm2020/tags/public-api.mjs +6 -6
- package/esm2020/tags/tag-default-options.mjs +4 -4
- package/esm2020/tags/tag-input.mjs +229 -229
- package/esm2020/tags/tag-list.component.mjs +722 -722
- package/esm2020/tags/tag-text-control.mjs +2 -2
- package/esm2020/tags/tag.component.mjs +375 -375
- package/esm2020/tags/tag.module.mjs +56 -56
- package/esm2020/textarea/index.mjs +2 -2
- package/esm2020/textarea/ptsecurity-mosaic-textarea.mjs +4 -4
- package/esm2020/textarea/public-api.mjs +3 -3
- package/esm2020/textarea/textarea.component.mjs +269 -269
- package/esm2020/textarea/textarea.module.mjs +21 -21
- package/esm2020/timepicker/index.mjs +2 -2
- package/esm2020/timepicker/ptsecurity-mosaic-timepicker.mjs +4 -4
- package/esm2020/timepicker/public-api.mjs +4 -4
- package/esm2020/timepicker/timepicker.constants.mjs +25 -25
- package/esm2020/timepicker/timepicker.directive.mjs +665 -676
- package/esm2020/timepicker/timepicker.module.mjs +34 -34
- package/esm2020/toggle/index.mjs +2 -2
- package/esm2020/toggle/ptsecurity-mosaic-toggle.mjs +4 -4
- package/esm2020/toggle/public-api.mjs +3 -3
- package/esm2020/toggle/toggle.component.mjs +158 -158
- package/esm2020/toggle/toggle.module.mjs +20 -20
- package/esm2020/tooltip/index.mjs +2 -2
- package/esm2020/tooltip/ptsecurity-mosaic-tooltip.mjs +4 -4
- package/esm2020/tooltip/public-api.mjs +3 -3
- package/esm2020/tooltip/tooltip.animations.mjs +19 -19
- package/esm2020/tooltip/tooltip.component.mjs +295 -295
- package/esm2020/tooltip/tooltip.module.mjs +43 -43
- package/esm2020/tree/control/base-tree-control.mjs +60 -60
- package/esm2020/tree/control/flat-tree-control.mjs +126 -123
- package/esm2020/tree/control/nested-tree-control.mjs +41 -41
- package/esm2020/tree/control/tree-control.mjs +2 -2
- package/esm2020/tree/data-source/flat-data-source.mjs +162 -162
- package/esm2020/tree/data-source/nested-data-source.mjs +30 -30
- package/esm2020/tree/index.mjs +2 -2
- package/esm2020/tree/node.mjs +31 -31
- package/esm2020/tree/outlet.mjs +15 -15
- package/esm2020/tree/padding.directive.mjs +113 -110
- package/esm2020/tree/ptsecurity-mosaic-tree.mjs +4 -4
- package/esm2020/tree/public-api.mjs +16 -16
- package/esm2020/tree/toggle.mjs +80 -80
- package/esm2020/tree/tree-base.mjs +243 -243
- package/esm2020/tree/tree-errors.mjs +36 -36
- package/esm2020/tree/tree-option.component.mjs +248 -236
- package/esm2020/tree/tree-selection.component.mjs +540 -540
- package/esm2020/tree/tree.mjs +15 -15
- package/esm2020/tree/tree.module.mjs +57 -57
- package/esm2020/tree-select/index.mjs +2 -2
- package/esm2020/tree-select/ptsecurity-mosaic-tree-select.mjs +4 -4
- package/esm2020/tree-select/public-api.mjs +3 -3
- package/esm2020/tree-select/tree-select.component.mjs +939 -924
- package/esm2020/tree-select/tree-select.module.mjs +47 -47
- package/fesm2015/ptsecurity-mosaic-autocomplete.mjs +726 -726
- package/fesm2015/ptsecurity-mosaic-autocomplete.mjs.map +1 -1
- package/fesm2015/ptsecurity-mosaic-button-toggle.mjs +367 -367
- package/fesm2015/ptsecurity-mosaic-button-toggle.mjs.map +1 -1
- package/fesm2015/ptsecurity-mosaic-button.mjs +160 -160
- package/fesm2015/ptsecurity-mosaic-button.mjs.map +1 -1
- package/fesm2015/ptsecurity-mosaic-card.mjs +96 -96
- package/fesm2015/ptsecurity-mosaic-card.mjs.map +1 -1
- package/fesm2015/ptsecurity-mosaic-checkbox.mjs +348 -348
- package/fesm2015/ptsecurity-mosaic-checkbox.mjs.map +1 -1
- package/fesm2015/ptsecurity-mosaic-core.mjs +2653 -2642
- package/fesm2015/ptsecurity-mosaic-core.mjs.map +1 -1
- package/fesm2015/ptsecurity-mosaic-datepicker.mjs +2682 -2684
- package/fesm2015/ptsecurity-mosaic-datepicker.mjs.map +1 -1
- package/fesm2015/ptsecurity-mosaic-design-tokens.mjs +2370 -2355
- package/fesm2015/ptsecurity-mosaic-design-tokens.mjs.map +1 -1
- package/fesm2015/ptsecurity-mosaic-divider.mjs +48 -48
- package/fesm2015/ptsecurity-mosaic-divider.mjs.map +1 -1
- package/fesm2015/ptsecurity-mosaic-dl.mjs +108 -108
- package/fesm2015/ptsecurity-mosaic-dl.mjs.map +1 -1
- package/fesm2015/ptsecurity-mosaic-dropdown.mjs +1069 -1069
- package/fesm2015/ptsecurity-mosaic-dropdown.mjs.map +1 -1
- package/fesm2015/ptsecurity-mosaic-form-field.mjs +511 -506
- package/fesm2015/ptsecurity-mosaic-form-field.mjs.map +1 -1
- package/fesm2015/ptsecurity-mosaic-icon.mjs +73 -73
- package/fesm2015/ptsecurity-mosaic-icon.mjs.map +1 -1
- package/fesm2015/ptsecurity-mosaic-input.mjs +979 -975
- package/fesm2015/ptsecurity-mosaic-input.mjs.map +1 -1
- package/fesm2015/ptsecurity-mosaic-link.mjs +121 -121
- package/fesm2015/ptsecurity-mosaic-link.mjs.map +1 -1
- package/fesm2015/ptsecurity-mosaic-list.mjs +762 -762
- package/fesm2015/ptsecurity-mosaic-list.mjs.map +1 -1
- package/fesm2015/ptsecurity-mosaic-modal.mjs +824 -824
- package/fesm2015/ptsecurity-mosaic-modal.mjs.map +1 -1
- package/fesm2015/ptsecurity-mosaic-navbar.mjs +993 -993
- package/fesm2015/ptsecurity-mosaic-navbar.mjs.map +1 -1
- package/fesm2015/ptsecurity-mosaic-popover.mjs +364 -364
- package/fesm2015/ptsecurity-mosaic-popover.mjs.map +1 -1
- package/fesm2015/ptsecurity-mosaic-progress-bar.mjs +61 -61
- package/fesm2015/ptsecurity-mosaic-progress-bar.mjs.map +1 -1
- package/fesm2015/ptsecurity-mosaic-progress-spinner.mjs +65 -65
- package/fesm2015/ptsecurity-mosaic-progress-spinner.mjs.map +1 -1
- package/fesm2015/ptsecurity-mosaic-radio.mjs +464 -464
- package/fesm2015/ptsecurity-mosaic-radio.mjs.map +1 -1
- package/fesm2015/ptsecurity-mosaic-select.mjs +1213 -1203
- package/fesm2015/ptsecurity-mosaic-select.mjs.map +1 -1
- package/fesm2015/ptsecurity-mosaic-sidebar.mjs +185 -185
- package/fesm2015/ptsecurity-mosaic-sidebar.mjs.map +1 -1
- package/fesm2015/ptsecurity-mosaic-sidepanel.mjs +555 -555
- package/fesm2015/ptsecurity-mosaic-sidepanel.mjs.map +1 -1
- package/fesm2015/ptsecurity-mosaic-splitter.mjs +511 -511
- package/fesm2015/ptsecurity-mosaic-splitter.mjs.map +1 -1
- package/fesm2015/ptsecurity-mosaic-table.mjs +36 -36
- package/fesm2015/ptsecurity-mosaic-table.mjs.map +1 -1
- package/fesm2015/ptsecurity-mosaic-tabs.mjs +1460 -1460
- package/fesm2015/ptsecurity-mosaic-tabs.mjs.map +1 -1
- package/fesm2015/ptsecurity-mosaic-tags.mjs +1342 -1342
- package/fesm2015/ptsecurity-mosaic-tags.mjs.map +1 -1
- package/fesm2015/ptsecurity-mosaic-textarea.mjs +274 -274
- package/fesm2015/ptsecurity-mosaic-textarea.mjs.map +1 -1
- package/fesm2015/ptsecurity-mosaic-timepicker.mjs +703 -714
- package/fesm2015/ptsecurity-mosaic-timepicker.mjs.map +1 -1
- package/fesm2015/ptsecurity-mosaic-toggle.mjs +163 -163
- package/fesm2015/ptsecurity-mosaic-toggle.mjs.map +1 -1
- package/fesm2015/ptsecurity-mosaic-tooltip.mjs +344 -344
- package/fesm2015/ptsecurity-mosaic-tooltip.mjs.map +1 -1
- package/fesm2015/ptsecurity-mosaic-tree-select.mjs +954 -939
- package/fesm2015/ptsecurity-mosaic-tree-select.mjs.map +1 -1
- package/fesm2015/ptsecurity-mosaic-tree.mjs +1695 -1679
- package/fesm2015/ptsecurity-mosaic-tree.mjs.map +1 -1
- package/fesm2015/ptsecurity-mosaic.mjs +2 -2
- package/fesm2020/ptsecurity-mosaic-autocomplete.mjs +722 -722
- package/fesm2020/ptsecurity-mosaic-autocomplete.mjs.map +1 -1
- package/fesm2020/ptsecurity-mosaic-button-toggle.mjs +365 -365
- package/fesm2020/ptsecurity-mosaic-button-toggle.mjs.map +1 -1
- package/fesm2020/ptsecurity-mosaic-button.mjs +160 -160
- package/fesm2020/ptsecurity-mosaic-button.mjs.map +1 -1
- package/fesm2020/ptsecurity-mosaic-card.mjs +96 -96
- package/fesm2020/ptsecurity-mosaic-card.mjs.map +1 -1
- package/fesm2020/ptsecurity-mosaic-checkbox.mjs +346 -346
- package/fesm2020/ptsecurity-mosaic-checkbox.mjs.map +1 -1
- package/fesm2020/ptsecurity-mosaic-core.mjs +2682 -2671
- package/fesm2020/ptsecurity-mosaic-core.mjs.map +1 -1
- package/fesm2020/ptsecurity-mosaic-datepicker.mjs +2667 -2669
- package/fesm2020/ptsecurity-mosaic-datepicker.mjs.map +1 -1
- package/fesm2020/ptsecurity-mosaic-design-tokens.mjs +2370 -2355
- package/fesm2020/ptsecurity-mosaic-design-tokens.mjs.map +1 -1
- package/fesm2020/ptsecurity-mosaic-divider.mjs +48 -48
- package/fesm2020/ptsecurity-mosaic-divider.mjs.map +1 -1
- package/fesm2020/ptsecurity-mosaic-dl.mjs +108 -108
- package/fesm2020/ptsecurity-mosaic-dl.mjs.map +1 -1
- package/fesm2020/ptsecurity-mosaic-dropdown.mjs +1056 -1056
- package/fesm2020/ptsecurity-mosaic-dropdown.mjs.map +1 -1
- package/fesm2020/ptsecurity-mosaic-form-field.mjs +496 -491
- package/fesm2020/ptsecurity-mosaic-form-field.mjs.map +1 -1
- package/fesm2020/ptsecurity-mosaic-icon.mjs +71 -71
- package/fesm2020/ptsecurity-mosaic-icon.mjs.map +1 -1
- package/fesm2020/ptsecurity-mosaic-input.mjs +968 -964
- package/fesm2020/ptsecurity-mosaic-input.mjs.map +1 -1
- package/fesm2020/ptsecurity-mosaic-link.mjs +120 -120
- package/fesm2020/ptsecurity-mosaic-link.mjs.map +1 -1
- package/fesm2020/ptsecurity-mosaic-list.mjs +755 -755
- package/fesm2020/ptsecurity-mosaic-list.mjs.map +1 -1
- package/fesm2020/ptsecurity-mosaic-modal.mjs +820 -820
- package/fesm2020/ptsecurity-mosaic-modal.mjs.map +1 -1
- package/fesm2020/ptsecurity-mosaic-navbar.mjs +977 -977
- package/fesm2020/ptsecurity-mosaic-navbar.mjs.map +1 -1
- package/fesm2020/ptsecurity-mosaic-popover.mjs +360 -360
- package/fesm2020/ptsecurity-mosaic-popover.mjs.map +1 -1
- package/fesm2020/ptsecurity-mosaic-progress-bar.mjs +61 -61
- package/fesm2020/ptsecurity-mosaic-progress-bar.mjs.map +1 -1
- package/fesm2020/ptsecurity-mosaic-progress-spinner.mjs +65 -65
- package/fesm2020/ptsecurity-mosaic-progress-spinner.mjs.map +1 -1
- package/fesm2020/ptsecurity-mosaic-radio.mjs +462 -462
- package/fesm2020/ptsecurity-mosaic-radio.mjs.map +1 -1
- package/fesm2020/ptsecurity-mosaic-select.mjs +1208 -1198
- package/fesm2020/ptsecurity-mosaic-select.mjs.map +1 -1
- package/fesm2020/ptsecurity-mosaic-sidebar.mjs +185 -185
- package/fesm2020/ptsecurity-mosaic-sidebar.mjs.map +1 -1
- package/fesm2020/ptsecurity-mosaic-sidepanel.mjs +552 -552
- package/fesm2020/ptsecurity-mosaic-sidepanel.mjs.map +1 -1
- package/fesm2020/ptsecurity-mosaic-splitter.mjs +511 -511
- package/fesm2020/ptsecurity-mosaic-splitter.mjs.map +1 -1
- package/fesm2020/ptsecurity-mosaic-table.mjs +36 -36
- package/fesm2020/ptsecurity-mosaic-table.mjs.map +1 -1
- package/fesm2020/ptsecurity-mosaic-tabs.mjs +1445 -1445
- package/fesm2020/ptsecurity-mosaic-tabs.mjs.map +1 -1
- package/fesm2020/ptsecurity-mosaic-tags.mjs +1335 -1335
- package/fesm2020/ptsecurity-mosaic-tags.mjs.map +1 -1
- package/fesm2020/ptsecurity-mosaic-textarea.mjs +272 -272
- package/fesm2020/ptsecurity-mosaic-textarea.mjs.map +1 -1
- package/fesm2020/ptsecurity-mosaic-timepicker.mjs +700 -711
- package/fesm2020/ptsecurity-mosaic-timepicker.mjs.map +1 -1
- package/fesm2020/ptsecurity-mosaic-toggle.mjs +163 -163
- package/fesm2020/ptsecurity-mosaic-toggle.mjs.map +1 -1
- package/fesm2020/ptsecurity-mosaic-tooltip.mjs +336 -336
- package/fesm2020/ptsecurity-mosaic-tooltip.mjs.map +1 -1
- package/fesm2020/ptsecurity-mosaic-tree-select.mjs +951 -936
- package/fesm2020/ptsecurity-mosaic-tree-select.mjs.map +1 -1
- package/fesm2020/ptsecurity-mosaic-tree.mjs +1682 -1666
- package/fesm2020/ptsecurity-mosaic-tree.mjs.map +1 -1
- package/fesm2020/ptsecurity-mosaic.mjs +2 -2
- package/form-field/cleaner.d.ts +7 -7
- package/form-field/form-field-control.d.ts +37 -37
- package/form-field/form-field-errors.d.ts +2 -2
- package/form-field/form-field.d.ts +69 -69
- package/form-field/form-field.module.d.ts +15 -15
- package/form-field/hint.d.ts +6 -6
- package/form-field/index.d.ts +1 -1
- package/form-field/password-hint.d.ts +40 -40
- package/form-field/prefix.d.ts +5 -5
- package/form-field/ptsecurity-mosaic-form-field.d.ts +5 -5
- package/form-field/public-api.d.ts +10 -10
- package/form-field/stepper.d.ts +11 -11
- package/form-field/suffix.d.ts +5 -5
- package/icon/icon.component.d.ts +18 -18
- package/icon/icon.module.d.ts +10 -10
- package/icon/index.d.ts +1 -1
- package/icon/ptsecurity-mosaic-icon.d.ts +5 -5
- package/icon/public-api.d.ts +2 -2
- package/index.d.ts +1 -1
- package/input/index.d.ts +1 -1
- package/input/input-errors.d.ts +1 -1
- package/input/input-number-validators.d.ts +39 -39
- package/input/input-number.d.ts +33 -33
- package/input/input-password.d.ts +123 -121
- package/input/input-value-accessor.d.ts +4 -4
- package/input/input.d.ts +116 -116
- package/input/input.module.d.ts +14 -14
- package/input/ptsecurity-mosaic-input.d.ts +5 -5
- package/input/public-api.d.ts +6 -6
- package/link/index.d.ts +1 -1
- package/link/link.component.d.ts +38 -38
- package/link/link.module.d.ts +9 -9
- package/link/ptsecurity-mosaic-link.d.ts +5 -5
- package/link/public-api.d.ts +2 -2
- package/list/index.d.ts +1 -1
- package/list/list-selection.component.d.ts +168 -168
- package/list/list.component.d.ts +18 -18
- package/list/list.module.d.ts +11 -11
- package/list/ptsecurity-mosaic-list.d.ts +5 -5
- package/list/public-api.d.ts +3 -3
- package/modal/README.md +33 -33
- package/modal/css-unit.pipe.d.ts +7 -7
- package/modal/index.d.ts +1 -1
- package/modal/modal-control.service.d.ts +20 -20
- package/modal/modal-ref.class.d.ts +36 -36
- package/modal/modal-util.d.ts +12 -12
- package/modal/modal.component.d.ts +126 -126
- package/modal/modal.directive.d.ts +17 -17
- package/modal/modal.module.d.ts +14 -14
- package/modal/modal.service.d.ts +33 -33
- package/modal/modal.type.d.ts +59 -59
- package/modal/ptsecurity-mosaic-modal.d.ts +5 -5
- package/modal/public-api.d.ts +6 -6
- package/navbar/README.md +41 -41
- package/navbar/index.d.ts +1 -1
- package/navbar/navbar-item.component.d.ts +161 -161
- package/navbar/navbar.component.d.ts +58 -58
- package/navbar/navbar.module.d.ts +14 -14
- package/navbar/ptsecurity-mosaic-navbar.d.ts +5 -5
- package/navbar/public-api.d.ts +4 -4
- package/navbar/vertical-navbar.animation.d.ts +2 -2
- package/navbar/vertical-navbar.component.d.ts +23 -23
- package/package.json +4 -4
- package/popover/README.md +32 -32
- package/popover/index.d.ts +1 -1
- package/popover/popover-animations.d.ts +4 -4
- package/popover/popover-confirm.component.d.ts +33 -33
- package/popover/popover.component.d.ts +74 -74
- package/popover/popover.module.d.ts +12 -12
- package/popover/ptsecurity-mosaic-popover.d.ts +5 -5
- package/popover/public-api.d.ts +4 -4
- package/prebuilt-themes/dark-theme.css +1 -1
- package/prebuilt-themes/default-theme.css +1 -1
- package/progress-bar/index.d.ts +1 -1
- package/progress-bar/progress-bar.component.d.ts +18 -18
- package/progress-bar/progress-bar.module.d.ts +9 -9
- package/progress-bar/ptsecurity-mosaic-progress-bar.d.ts +5 -5
- package/progress-bar/public-api.d.ts +2 -2
- package/progress-spinner/index.d.ts +1 -1
- package/progress-spinner/progress-spinner.component.d.ts +19 -19
- package/progress-spinner/progress-spinner.module.d.ts +9 -9
- package/progress-spinner/ptsecurity-mosaic-progress-spinner.d.ts +5 -5
- package/progress-spinner/public-api.d.ts +2 -2
- package/ptsecurity-mosaic.d.ts +5 -5
- package/public-api.d.ts +1 -1
- package/radio/index.d.ts +1 -1
- package/radio/ptsecurity-mosaic-radio.d.ts +5 -5
- package/radio/public-api.d.ts +2 -2
- package/radio/radio.component.d.ts +207 -207
- package/radio/radio.module.d.ts +10 -10
- package/schematics/README.md +35 -35
- package/schematics/collection.json +4 -0
- package/schematics/migration.json +10 -0
- package/schematics/ng-update/data/attribute-selectors.d.ts +2 -0
- package/schematics/ng-update/data/attribute-selectors.js +5 -0
- package/schematics/ng-update/data/attribute-selectors.js.map +1 -0
- package/schematics/ng-update/data/class-names.d.ts +2 -0
- package/schematics/ng-update/data/class-names.js +5 -0
- package/schematics/ng-update/data/class-names.js.map +1 -0
- package/schematics/ng-update/data/constructor-checks.d.ts +2 -0
- package/schematics/ng-update/data/constructor-checks.js +5 -0
- package/schematics/ng-update/data/constructor-checks.js.map +1 -0
- package/schematics/ng-update/data/css-selectors.d.ts +2 -0
- package/schematics/ng-update/data/css-selectors.js +5 -0
- package/schematics/ng-update/data/css-selectors.js.map +1 -0
- package/schematics/ng-update/data/element-selectors.d.ts +2 -0
- package/schematics/ng-update/data/element-selectors.js +5 -0
- package/schematics/ng-update/data/element-selectors.js.map +1 -0
- package/schematics/ng-update/data/index.d.ts +10 -0
- package/schematics/ng-update/data/index.js +14 -0
- package/schematics/ng-update/data/index.js.map +1 -0
- package/schematics/ng-update/data/input-names.d.ts +2 -0
- package/schematics/ng-update/data/input-names.js +35 -0
- package/schematics/ng-update/data/input-names.js.map +1 -0
- package/schematics/ng-update/data/method-call-checks.d.ts +2 -0
- package/schematics/ng-update/data/method-call-checks.js +5 -0
- package/schematics/ng-update/data/method-call-checks.js.map +1 -0
- package/schematics/ng-update/data/output-names.d.ts +2 -0
- package/schematics/ng-update/data/output-names.js +5 -0
- package/schematics/ng-update/data/output-names.js.map +1 -0
- package/schematics/ng-update/data/property-names.d.ts +2 -0
- package/schematics/ng-update/data/property-names.js +5 -0
- package/schematics/ng-update/data/property-names.js.map +1 -0
- package/schematics/ng-update/data/symbol-removal.d.ts +2 -0
- package/schematics/ng-update/data/symbol-removal.js +5 -0
- package/schematics/ng-update/data/symbol-removal.js.map +1 -0
- package/schematics/ng-update/index.d.ts +2 -0
- package/schematics/ng-update/index.js +23 -0
- package/schematics/ng-update/index.js.map +1 -0
- package/schematics/ng-update/update-9.0.0/mosaic-symbols.json +255 -0
- package/schematics/ng-update/update-9.0.0/secondary-entry-points-migration.d.ts +7 -0
- package/schematics/ng-update/update-9.0.0/secondary-entry-points-migration.js +154 -0
- package/schematics/ng-update/update-9.0.0/secondary-entry-points-migration.js.map +1 -0
- package/schematics/ng-update/upgrade-data.d.ts +2 -0
- package/schematics/ng-update/upgrade-data.js +17 -0
- package/schematics/ng-update/upgrade-data.js.map +1 -0
- package/schematics/tsconfig.json +29 -0
- package/schematics/tsconfig.lib-test.json +8 -0
- package/schematics/tsconfig.lib.json +17 -0
- package/select/index.d.ts +1 -1
- package/select/ptsecurity-mosaic-select.d.ts +5 -5
- package/select/public-api.d.ts +3 -3
- package/select/select-option.directive.d.ts +20 -20
- package/select/select.component.d.ts +310 -307
- package/select/select.module.d.ts +15 -15
- package/sidebar/index.d.ts +1 -1
- package/sidebar/ptsecurity-mosaic-sidebar.d.ts +5 -5
- package/sidebar/public-api.d.ts +2 -2
- package/sidebar/sidebar-animations.d.ts +8 -8
- package/sidebar/sidebar.component.d.ts +53 -53
- package/sidebar/sidebar.module.d.ts +8 -8
- package/sidepanel/index.d.ts +1 -1
- package/sidepanel/ptsecurity-mosaic-sidepanel.d.ts +5 -5
- package/sidepanel/public-api.d.ts +6 -6
- package/sidepanel/sidepanel-animations.d.ts +14 -14
- package/sidepanel/sidepanel-config.d.ts +25 -25
- package/sidepanel/sidepanel-container.component.d.ts +45 -45
- package/sidepanel/sidepanel-directives.d.ts +50 -50
- package/sidepanel/sidepanel-ref.d.ts +24 -24
- package/sidepanel/sidepanel.module.d.ts +15 -15
- package/sidepanel/sidepanel.service.d.ts +57 -57
- package/splitter/index.d.ts +1 -1
- package/splitter/ptsecurity-mosaic-splitter.d.ts +5 -5
- package/splitter/public-api.d.ts +2 -2
- package/splitter/splitter.component.d.ts +130 -130
- package/splitter/splitter.module.d.ts +9 -9
- package/table/index.d.ts +1 -1
- package/table/ptsecurity-mosaic-table.d.ts +5 -5
- package/table/public-api.d.ts +2 -2
- package/table/table.component.d.ts +5 -5
- package/table/table.module.d.ts +10 -10
- package/tabs/index.d.ts +1 -1
- package/tabs/paginated-tab-header.d.ts +179 -179
- package/tabs/ptsecurity-mosaic-tabs.d.ts +5 -5
- package/tabs/public-api.d.ts +10 -10
- package/tabs/tab-body.component.d.ts +95 -95
- package/tabs/tab-content.directive.d.ts +9 -9
- package/tabs/tab-group.component.d.ts +133 -133
- package/tabs/tab-header.component.d.ts +35 -35
- package/tabs/tab-label-wrapper.directive.d.ts +30 -30
- package/tabs/tab-label.directive.d.ts +9 -9
- package/tabs/tab-nav-bar/index.d.ts +1 -1
- package/tabs/tab-nav-bar/tab-nav-bar.d.ts +38 -38
- package/tabs/tab.component.d.ts +66 -66
- package/tabs/tabs-animations.d.ts +4 -4
- package/tabs/tabs.module.d.ts +20 -20
- package/tags/index.d.ts +1 -1
- package/tags/ptsecurity-mosaic-tags.d.ts +5 -5
- package/tags/public-api.d.ts +5 -5
- package/tags/tag-default-options.d.ts +8 -8
- package/tags/tag-input.d.ts +77 -77
- package/tags/tag-list.component.d.ts +240 -240
- package/tags/tag-text-control.d.ts +10 -10
- package/tags/tag.component.d.ts +135 -135
- package/tags/tag.module.d.ts +11 -11
- package/textarea/index.d.ts +1 -1
- package/textarea/ptsecurity-mosaic-textarea.d.ts +5 -5
- package/textarea/public-api.d.ts +2 -2
- package/textarea/textarea.component.d.ts +111 -111
- package/textarea/textarea.module.d.ts +11 -11
- package/timepicker/index.d.ts +1 -1
- package/timepicker/ptsecurity-mosaic-timepicker.d.ts +5 -5
- package/timepicker/public-api.d.ts +3 -3
- package/timepicker/timepicker.constants.d.ts +20 -20
- package/timepicker/timepicker.directive.d.ts +146 -147
- package/timepicker/timepicker.module.d.ts +11 -11
- package/toggle/index.d.ts +1 -1
- package/toggle/ptsecurity-mosaic-toggle.d.ts +5 -5
- package/toggle/public-api.d.ts +2 -2
- package/toggle/toggle.component.d.ts +54 -54
- package/toggle/toggle.module.d.ts +10 -10
- package/tooltip/index.d.ts +1 -1
- package/tooltip/ptsecurity-mosaic-tooltip.d.ts +5 -5
- package/tooltip/public-api.d.ts +2 -2
- package/tooltip/tooltip.animations.d.ts +8 -8
- package/tooltip/tooltip.component.d.ts +91 -91
- package/tooltip/tooltip.module.d.ts +9 -9
- package/tree/control/base-tree-control.d.ts +40 -40
- package/tree/control/flat-tree-control.d.ts +52 -48
- package/tree/control/nested-tree-control.d.ts +19 -19
- package/tree/control/tree-control.d.ts +44 -44
- package/tree/data-source/flat-data-source.d.ts +80 -80
- package/tree/data-source/nested-data-source.d.ts +15 -15
- package/tree/index.d.ts +1 -1
- package/tree/node.d.ts +34 -34
- package/tree/outlet.d.ts +9 -9
- package/tree/padding.directive.d.ts +47 -45
- package/tree/ptsecurity-mosaic-tree.d.ts +5 -5
- package/tree/public-api.d.ts +15 -15
- package/tree/toggle.d.ts +28 -28
- package/tree/tree-base.d.ts +97 -97
- package/tree/tree-errors.d.ts +25 -25
- package/tree/tree-option.component.d.ts +72 -68
- package/tree/tree-selection.component.d.ts +132 -132
- package/tree/tree.d.ts +6 -6
- package/tree/tree.module.d.ts +16 -16
- package/tree-select/index.d.ts +1 -1
- package/tree-select/ptsecurity-mosaic-tree-select.d.ts +5 -5
- package/tree-select/public-api.d.ts +2 -2
- package/tree-select/tree-select.component.d.ts +277 -269
- package/tree-select/tree-select.module.d.ts +14 -14
- package/toggle/README.md +0 -0
@@ -1,368 +1,372 @@
|
|
1
|
-
import { FocusMonitor } from '@angular/cdk/a11y';
|
2
|
-
import { Directionality } from '@angular/cdk/bidi';
|
3
|
-
import { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';
|
4
|
-
import { Overlay, ScrollDispatcher } from '@angular/cdk/overlay';
|
5
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Directive, ElementRef, Inject, Input, NgZone, Optional, Self, ViewContainerRef, ViewEncapsulation } from '@angular/core';
|
6
|
-
import { FormControlName, FormGroupDirective, NG_VALIDATORS, NgControl, NgForm, NgModel } from '@angular/forms';
|
7
|
-
import { ErrorStateMatcher, MC_VALIDATION, PopUpTriggers, setMosaicValidation } from '@ptsecurity/mosaic/core';
|
8
|
-
import { McFormField, McFormFieldControl } from '@ptsecurity/mosaic/form-field';
|
9
|
-
import { MC_TOOLTIP_SCROLL_STRATEGY, McTooltipTrigger } from '@ptsecurity/mosaic/tooltip';
|
10
|
-
import { Subject } from 'rxjs';
|
11
|
-
import { McInputMixinBase } from './input';
|
12
|
-
import { MC_INPUT_VALUE_ACCESSOR } from './input-value-accessor';
|
13
|
-
import * as i0 from "@angular/core";
|
14
|
-
import * as i1 from "@angular/cdk/overlay";
|
15
|
-
import * as i2 from "@angular/cdk/bidi";
|
16
|
-
import * as i3 from "@angular/cdk/a11y";
|
17
|
-
import * as i4 from "@ptsecurity/mosaic/form-field";
|
18
|
-
import * as i5 from "@angular/forms";
|
19
|
-
import * as i6 from "@ptsecurity/mosaic/core";
|
20
|
-
let nextUniqueId = 0;
|
21
|
-
export class McPasswordToggle extends McTooltipTrigger {
|
22
|
-
constructor(overlay, elementRef, ngZone, scrollDispatcher, hostView, scrollStrategy, direction, focusMonitor, formField) {
|
23
|
-
super(overlay, elementRef, ngZone, scrollDispatcher, hostView, scrollStrategy, direction);
|
24
|
-
this.focusMonitor = focusMonitor;
|
25
|
-
this.formField = formField;
|
26
|
-
this._tabIndex = 0;
|
27
|
-
this.trigger = `${PopUpTriggers.Hover}`;
|
28
|
-
this.runFocusMonitor();
|
29
|
-
}
|
30
|
-
get content() {
|
31
|
-
return this.formField.control.elementType === 'password' ?
|
32
|
-
this.mcTooltipHidden :
|
33
|
-
this._content;
|
34
|
-
}
|
35
|
-
set content(content) {
|
36
|
-
this._content = content;
|
37
|
-
this.updateData();
|
38
|
-
}
|
39
|
-
get disabled() {
|
40
|
-
return this._disabled === undefined ? this.formField.disabled : this._disabled;
|
41
|
-
}
|
42
|
-
set disabled(value) {
|
43
|
-
this._disabled = coerceBooleanProperty(value);
|
44
|
-
this._disabled ? this.stopFocusMonitor() : this.runFocusMonitor();
|
45
|
-
}
|
46
|
-
get tabIndex() {
|
47
|
-
return this.disabled ? -1 : this._tabIndex;
|
48
|
-
}
|
49
|
-
set tabIndex(value) {
|
50
|
-
// If the specified tabIndex value is null or undefined, fall back to the default value.
|
51
|
-
this._tabIndex = value != null ? coerceNumberProperty(value) : 0;
|
52
|
-
}
|
53
|
-
get hidden() {
|
54
|
-
return this.formField.control.elementType === 'password';
|
55
|
-
}
|
56
|
-
ngOnDestroy() {
|
57
|
-
this.stopFocusMonitor();
|
58
|
-
}
|
59
|
-
toggle() {
|
60
|
-
if (this.disabled) {
|
61
|
-
return;
|
62
|
-
}
|
63
|
-
this.hide();
|
64
|
-
const input = this.formField.control;
|
65
|
-
input.toggleType();
|
66
|
-
this.updateData();
|
67
|
-
}
|
68
|
-
runFocusMonitor() {
|
69
|
-
this.focusMonitor.monitor(this.elementRef)
|
70
|
-
.subscribe((origin) => {
|
71
|
-
if (origin === 'keyboard') {
|
72
|
-
this.show();
|
73
|
-
}
|
74
|
-
else if (origin === null) {
|
75
|
-
this.hide();
|
76
|
-
}
|
77
|
-
});
|
78
|
-
}
|
79
|
-
stopFocusMonitor() {
|
80
|
-
this.focusMonitor.stopMonitoring(this.elementRef);
|
81
|
-
}
|
82
|
-
}
|
83
|
-
/** @nocollapse */ /** @nocollapse */ McPasswordToggle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.
|
84
|
-
/** @nocollapse */ /** @nocollapse */ McPasswordToggle.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.
|
85
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.
|
86
|
-
type: Component,
|
87
|
-
args: [{
|
88
|
-
selector: `mc-password-toggle`,
|
89
|
-
exportAs: 'mcPasswordToggle',
|
90
|
-
template: '<ng-content></ng-content>',
|
91
|
-
host: {
|
92
|
-
class: 'mc-password-toggle mc',
|
93
|
-
'[class.mc-eye_16]': 'hidden',
|
94
|
-
'[class.mc-eye-crossed_16]': '!hidden',
|
95
|
-
'[attr.tabindex]': 'disabled ? null : tabIndex',
|
96
|
-
'[attr.disabled]': 'disabled || null',
|
97
|
-
'(click)': 'toggle()',
|
98
|
-
'(keydown.ENTER)': 'toggle()',
|
99
|
-
'(keydown.SPACE)': 'toggle()'
|
100
|
-
},
|
101
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
102
|
-
encapsulation: ViewEncapsulation.None
|
103
|
-
}]
|
104
|
-
}], ctorParameters: function () { return [{ type: i1.Overlay }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i1.ScrollDispatcher }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{
|
105
|
-
type: Inject,
|
106
|
-
args: [MC_TOOLTIP_SCROLL_STRATEGY]
|
107
|
-
}] }, { type: i2.Directionality, decorators: [{
|
108
|
-
type: Optional
|
109
|
-
}] }, { type: i3.FocusMonitor }, { type: i4.McFormField }]; }, propDecorators: { content: [{
|
110
|
-
type: Input,
|
111
|
-
args: ['mcTooltipNotHidden']
|
112
|
-
}], mcTooltipHidden: [{
|
113
|
-
type: Input
|
114
|
-
}], disabled: [{
|
115
|
-
type: Input
|
116
|
-
}], tabIndex: [{
|
117
|
-
type: Input
|
118
|
-
}] } });
|
119
|
-
export class McInputPassword extends McInputMixinBase {
|
120
|
-
// tslint:disable-next-line: naming-convention
|
121
|
-
constructor(elementRef, rawValidators, mcValidation, ngControl, ngModel, formControlName, parentForm, parentFormGroup, defaultErrorStateMatcher, inputValueAccessor, changeDetectorRef) {
|
122
|
-
super(defaultErrorStateMatcher, parentForm, parentFormGroup, ngControl);
|
123
|
-
this.elementRef = elementRef;
|
124
|
-
this.rawValidators = rawValidators;
|
125
|
-
this.mcValidation = mcValidation;
|
126
|
-
this.ngModel = ngModel;
|
127
|
-
this.formControlName = formControlName;
|
128
|
-
this.changeDetectorRef = changeDetectorRef;
|
129
|
-
/**
|
130
|
-
* Implemented as part of McFormFieldControl.
|
131
|
-
* @docs-private
|
132
|
-
*/
|
133
|
-
this.focused = false;
|
134
|
-
/**
|
135
|
-
* Implemented as part of McFormFieldControl.
|
136
|
-
* @docs-private
|
137
|
-
*/
|
138
|
-
this.stateChanges = new Subject();
|
139
|
-
|
140
|
-
|
141
|
-
*
|
142
|
-
|
143
|
-
|
144
|
-
this.
|
145
|
-
this.
|
146
|
-
this.
|
147
|
-
this.
|
148
|
-
|
149
|
-
// accessor
|
150
|
-
|
151
|
-
this.
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
*
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
//
|
169
|
-
|
170
|
-
|
171
|
-
this.
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
*
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
*
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
*
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
this.
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
}
|
217
|
-
|
218
|
-
this.
|
219
|
-
|
220
|
-
|
221
|
-
this.
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
i0.ɵɵ
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
'[
|
312
|
-
'
|
313
|
-
'
|
314
|
-
'
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
type:
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
}] }, { type: i5.
|
337
|
-
type: Optional
|
338
|
-
}, {
|
339
|
-
type: Self
|
340
|
-
}] }, { type: i5.
|
341
|
-
type: Optional
|
342
|
-
}, {
|
343
|
-
type: Self
|
344
|
-
}] }, { type: i5.
|
345
|
-
type: Optional
|
346
|
-
}
|
347
|
-
type:
|
348
|
-
}] }, { type:
|
349
|
-
type: Optional
|
350
|
-
}, {
|
351
|
-
type:
|
352
|
-
}, {
|
353
|
-
type:
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
type: Input
|
361
|
-
}],
|
362
|
-
type: Input
|
363
|
-
}],
|
364
|
-
type: Input
|
365
|
-
}],
|
366
|
-
type: Input
|
367
|
-
}]
|
368
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtcGFzc3dvcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9tb3NhaWMvaW5wdXQvaW5wdXQtcGFzc3dvcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRixPQUFPLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDakUsT0FBTyxFQUVILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFNBQVMsRUFFVCxVQUFVLEVBRVYsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBR04sUUFBUSxFQUNSLElBQUksRUFFSixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDSCxlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLGFBQWEsRUFDYixTQUFTLEVBQ1QsTUFBTSxFQUNOLE9BQU8sRUFFVixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFFSCxpQkFBaUIsRUFDakIsYUFBYSxFQUViLGFBQWEsRUFDYixtQkFBbUIsRUFDdEIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDM0MsT0FBTyxFQUFFLHVCQUF1QixF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b250ZW50IjpbImltcG9ydCB7IEZvY3VzTW9uaXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcclxuaW1wb3J0IHsgRGlyZWN0aW9uYWxpdHkgfSBmcm9tICdAYW5ndWxhci9jZGsvYmlkaSc7XHJcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgY29lcmNlTnVtYmVyUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xyXG5pbXBvcnQgeyBPdmVybGF5LCBTY3JvbGxEaXNwYXRjaGVyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xyXG5pbXBvcnQge1xyXG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcclxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBEaXJlY3RpdmUsXHJcbiAgICBEb0NoZWNrLFxyXG4gICAgRWxlbWVudFJlZixcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIEluamVjdCxcclxuICAgIElucHV0LFxyXG4gICAgTmdab25lLFxyXG4gICAgT25DaGFuZ2VzLFxyXG4gICAgT25EZXN0cm95LFxyXG4gICAgT3B0aW9uYWwsXHJcbiAgICBTZWxmLFxyXG4gICAgVGVtcGxhdGVSZWYsXHJcbiAgICBWaWV3Q29udGFpbmVyUmVmLFxyXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICAgIEZvcm1Db250cm9sTmFtZSxcclxuICAgIEZvcm1Hcm91cERpcmVjdGl2ZSxcclxuICAgIE5HX1ZBTElEQVRPUlMsXHJcbiAgICBOZ0NvbnRyb2wsXHJcbiAgICBOZ0Zvcm0sXHJcbiAgICBOZ01vZGVsLFxyXG4gICAgVmFsaWRhdG9yXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQge1xyXG4gICAgQ2FuVXBkYXRlRXJyb3JTdGF0ZSxcclxuICAgIEVycm9yU3RhdGVNYXRjaGVyLFxyXG4gICAgTUNfVkFMSURBVElPTixcclxuICAgIE1jVmFsaWRhdGlvbk9wdGlvbnMsXHJcbiAgICBQb3BVcFRyaWdnZXJzLFxyXG4gICAgc2V0TW9zYWljVmFsaWRhdGlvblxyXG59IGZyb20gJ0BwdHNlY3VyaXR5L21vc2FpYy9jb3JlJztcclxuaW1wb3J0IHsgTWNGb3JtRmllbGQsIE1jRm9ybUZpZWxkQ29udHJvbCB9IGZyb20gJ0BwdHNlY3VyaXR5L21vc2FpYy9mb3JtLWZpZWxkJztcclxuaW1wb3J0IHsgTUNfVE9PTFRJUF9TQ1JPTExfU1RSQVRFR1ksIE1jVG9vbHRpcFRyaWdnZXIgfSBmcm9tICdAcHRzZWN1cml0eS9tb3NhaWMvdG9vbHRpcCc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IE1jSW5wdXRNaXhpbkJhc2UgfSBmcm9tICcuL2lucHV0JztcclxuaW1wb3J0IHsgTUNfSU5QVVRfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICcuL2lucHV0LXZhbHVlLWFjY2Vzc29yJztcclxuXHJcblxyXG5sZXQgbmV4dFVuaXF1ZUlkID0gMDtcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBgbWMtcGFzc3dvcmQtdG9nZ2xlYCxcclxuICAgIGV4cG9ydEFzOiAnbWNQYXNzd29yZFRvZ2dsZScsXHJcbiAgICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxyXG4gICAgaG9zdDoge1xyXG4gICAgICAgIGNsYXNzOiAnbWMtcGFzc3dvcmQtdG9nZ2xlIG1jJyxcclxuICAgICAgICAnW2NsYXNzLm1jLWV5ZV8xNl0nOiAnaGlkZGVuJyxcclxuICAgICAgICAnW2NsYXNzLm1jLWV5ZS1jcm9zc2VkXzE2XSc6ICchaGlkZGVuJyxcclxuXHJcbiAgICAgICAgJ1thdHRyLnRhYmluZGV4XSc6ICdkaXNhYmxlZCA/IG51bGwgOiB0YWJJbmRleCcsXHJcbiAgICAgICAgJ1thdHRyLmRpc2FibGVkXSc6ICdkaXNhYmxlZCB8fCBudWxsJyxcclxuXHJcbiAgICAgICAgJyhjbGljayknOiAndG9nZ2xlKCknLFxyXG4gICAgICAgICcoa2V5ZG93bi5FTlRFUiknOiAndG9nZ2xlKCknLFxyXG4gICAgICAgICcoa2V5ZG93bi5TUEFDRSknOiAndG9nZ2xlKCknXHJcbiAgICB9LFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNY1Bhc3N3b3JkVG9nZ2xlIGV4dGVuZHMgTWNUb29sdGlwVHJpZ2dlciBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgICBASW5wdXQoJ21jVG9vbHRpcE5vdEhpZGRlbicpXHJcbiAgICBnZXQgY29udGVudCgpOiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+IHtcclxuICAgICAgICByZXR1cm4gKHRoaXMuZm9ybUZpZWxkLmNvbnRyb2wgYXMgTWNJbnB1dFBhc3N3b3JkKS5lbGVtZW50VHlwZSA9PT0gJ3Bhc3N3b3JkJyA/XHJcbiAgICAgICAgICAgIHRoaXMubWNUb29sdGlwSGlkZGVuIDpcclxuICAgICAgICAgICAgdGhpcy5fY29udGVudDtcclxuICAgIH1cclxuXHJcbiAgICBzZXQgY29udGVudChjb250ZW50OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+KSB7XHJcbiAgICAgICAgdGhpcy5fY29udGVudCA9IGNvbnRlbnQ7XHJcblxyXG4gICAgICAgIHRoaXMudXBkYXRlRGF0YSgpO1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpIG1jVG9vbHRpcEhpZGRlbjogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IGRpc2FibGVkKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZCA9PT0gdW5kZWZpbmVkID8gdGhpcy5mb3JtRmllbGQuZGlzYWJsZWQgOiB0aGlzLl9kaXNhYmxlZDtcclxuICAgIH1cclxuXHJcbiAgICBzZXQgZGlzYWJsZWQodmFsdWU6IGFueSkge1xyXG4gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcclxuXHJcbiAgICAgICAgdGhpcy5fZGlzYWJsZWQgPyB0aGlzLnN0b3BGb2N1c01vbml0b3IoKSA6IHRoaXMucnVuRm9jdXNNb25pdG9yKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5hbWluZy1jb252ZW50aW9uXHJcbiAgICBwcm90ZWN0ZWQgX2Rpc2FibGVkOiBib29sZWFuO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgdGFiSW5kZXgoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kaXNhYmxlZCA/IC0xIDogdGhpcy5fdGFiSW5kZXg7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0IHRhYkluZGV4KHZhbHVlOiBudW1iZXIpIHtcclxuICAgICAgICAvLyBJZiB0aGUgc3BlY2lmaWVkIHRhYkluZGV4IHZhbHVlIGlzIG51bGwgb3IgdW5kZWZpbmVkLCBmYWxsIGJhY2sgdG8gdGhlIGRlZmF1bHQgdmFsdWUuXHJcbiAgICAgICAgdGhpcy5fdGFiSW5kZXggPSB2YWx1ZSAhPSBudWxsID8gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUpIDogMDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF90YWJJbmRleDogbnVtYmVyID0gMDtcclxuXHJcbiAgICBnZXQgaGlkZGVuKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAodGhpcy5mb3JtRmllbGQuY29udHJvbCBhcyBNY0lucHV0UGFzc3dvcmQpLmVsZW1lbnRUeXBlID09PSAncGFzc3dvcmQnO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIG92ZXJsYXk6IE92ZXJsYXksXHJcbiAgICAgICAgZWxlbWVudFJlZjogRWxlbWVudFJlZixcclxuICAgICAgICBuZ1pvbmU6IE5nWm9uZSxcclxuICAgICAgICBzY3JvbGxEaXNwYXRjaGVyOiBTY3JvbGxEaXNwYXRjaGVyLFxyXG4gICAgICAgIGhvc3RWaWV3OiBWaWV3Q29udGFpbmVyUmVmLFxyXG4gICAgICAgIEBJbmplY3QoTUNfVE9PTFRJUF9TQ1JPTExfU1RSQVRFR1kpIHNjcm9sbFN0cmF0ZWd5LFxyXG4gICAgICAgIEBPcHRpb25hbCgpIGRpcmVjdGlvbjogRGlyZWN0aW9uYWxpdHksXHJcblxyXG4gICAgICAgIHByaXZhdGUgZm9jdXNNb25pdG9yOiBGb2N1c01vbml0b3IsXHJcbiAgICAgICAgcHJpdmF0ZSBmb3JtRmllbGQ6IE1jRm9ybUZpZWxkXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcihvdmVybGF5LCBlbGVtZW50UmVmLCBuZ1pvbmUsIHNjcm9sbERpc3BhdGNoZXIsIGhvc3RWaWV3LCBzY3JvbGxTdHJhdGVneSwgZGlyZWN0aW9uKTtcclxuXHJcbiAgICAgICAgdGhpcy50cmlnZ2VyID0gYCR7UG9wVXBUcmlnZ2Vycy5Ib3Zlcn1gO1xyXG5cclxuICAgICAgICB0aGlzLnJ1bkZvY3VzTW9uaXRvcigpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHRoaXMuc3RvcEZvY3VzTW9uaXRvcigpO1xyXG4gICAgfVxyXG5cclxuICAgIHRvZ2dsZSgpIHtcclxuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkgeyByZXR1cm47IH1cclxuXHJcbiAgICAgICAgdGhpcy5oaWRlKCk7XHJcblxyXG4gICAgICAgIGNvbnN0IGlucHV0ID0gdGhpcy5mb3JtRmllbGQuY29udHJvbCBhcyBNY0lucHV0UGFzc3dvcmQ7XHJcblxyXG4gICAgICAgIGlucHV0LnRvZ2dsZVR5cGUoKTtcclxuXHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXRhKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBydW5Gb2N1c01vbml0b3IoKSB7XHJcbiAgICAgICAgdGhpcy5mb2N1c01vbml0b3IubW9uaXRvcih0aGlzLmVsZW1lbnRSZWYpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKG9yaWdpbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKG9yaWdpbiA9PT0gJ2tleWJvYXJkJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvdygpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChvcmlnaW4gPT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzdG9wRm9jdXNNb25pdG9yKCkge1xyXG4gICAgICAgIHRoaXMuZm9jdXNNb25pdG9yLnN0b3BNb25pdG9yaW5nKHRoaXMuZWxlbWVudFJlZik7XHJcbiAgICB9XHJcbn1cclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgc2VsZWN0b3I6IGBpbnB1dFttY0lucHV0UGFzc3dvcmRdYCxcclxuICAgIGV4cG9ydEFzOiAnbWNJbnB1dFBhc3N3b3JkJyxcclxuICAgIGhvc3Q6IHtcclxuICAgICAgICBjbGFzczogJ21jLWlucHV0IG1jLWlucHV0LXBhc3N3b3JkJyxcclxuICAgICAgICAvLyBOYXRpdmUgaW5wdXQgcHJvcGVydGllcyB0aGF0IGFyZSBvdmVyd3JpdHRlbiBieSBBbmd1bGFyIGlucHV0cyBuZWVkIHRvIGJlIHN5bmNlZCB3aXRoXHJcbiAgICAgICAgLy8gdGhlIG5hdGl2ZSBpbnB1dCBlbGVtZW50LiBPdGhlcndpc2UgcHJvcGVydHkgYmluZGluZ3MgZm9yIHRob3NlIGRvbid0IHdvcmsuXHJcbiAgICAgICAgJ1thdHRyLmlkXSc6ICdpZCcsXHJcbiAgICAgICAgJ1thdHRyLnR5cGVdJzogJ2VsZW1lbnRUeXBlJyxcclxuICAgICAgICAnW2F0dHIucGxhY2Vob2xkZXJdJzogJ3BsYWNlaG9sZGVyJyxcclxuICAgICAgICAnW2F0dHIuZGlzYWJsZWRdJzogJ2Rpc2FibGVkIHx8IG51bGwnLFxyXG4gICAgICAgICdbcmVxdWlyZWRdJzogJ3JlcXVpcmVkJyxcclxuXHJcbiAgICAgICAgJyhibHVyKSc6ICdvbkJsdXIoKScsXHJcbiAgICAgICAgJyhmb2N1cyknOiAnZm9jdXNDaGFuZ2VkKHRydWUpJyxcclxuICAgICAgICAnKGlucHV0KSc6ICdvbklucHV0KCknXHJcbiAgICB9LFxyXG4gICAgcHJvdmlkZXJzOiBbe1xyXG4gICAgICAgIHByb3ZpZGU6IE1jRm9ybUZpZWxkQ29udHJvbCwgdXNlRXhpc3Rpbmc6IE1jSW5wdXRQYXNzd29yZFxyXG4gICAgfV1cclxufSlcclxuZXhwb3J0IGNsYXNzIE1jSW5wdXRQYXNzd29yZCBleHRlbmRzIE1jSW5wdXRNaXhpbkJhc2UgaW1wbGVtZW50cyBNY0Zvcm1GaWVsZENvbnRyb2w8YW55PiwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIERvQ2hlY2ssXHJcbiAgICBDYW5VcGRhdGVFcnJvclN0YXRlLCBBZnRlckNvbnRlbnRJbml0LCBPbkNoYW5nZXMge1xyXG5cclxuICAgIC8qKiBBbiBvYmplY3QgdXNlZCB0byBjb250cm9sIHdoZW4gZXJyb3IgbWVzc2FnZXMgYXJlIHNob3duLiAqL1xyXG4gICAgQElucHV0KCkgZXJyb3JTdGF0ZU1hdGNoZXI6IEVycm9yU3RhdGVNYXRjaGVyO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBNY0Zvcm1GaWVsZENvbnRyb2wuXHJcbiAgICAgKiBAZG9jcy1wcml2YXRlXHJcbiAgICAgKi9cclxuICAgIGZvY3VzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgTWNGb3JtRmllbGRDb250cm9sLlxyXG4gICAgICogQGRvY3MtcHJpdmF0ZVxyXG4gICAgICovXHJcbiAgICByZWFkb25seSBzdGF0ZUNoYW5nZXM6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0PGFueT4oKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgTWNGb3JtRmllbGRDb250cm9sLlxyXG4gICAgICogQGRvY3MtcHJpdmF0ZVxyXG4gICAgICovXHJcbiAgICBjb250cm9sVHlwZTogc3RyaW5nID0gJ2lucHV0LXBhc3N3b3JkJztcclxuXHJcbiAgICBlbGVtZW50VHlwZTogc3RyaW5nID0gJ3Bhc3N3b3JkJztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgTWNGb3JtRmllbGRDb250cm9sLlxyXG4gICAgICogQGRvY3MtcHJpdmF0ZVxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nO1xyXG5cclxuICAgIHByb3RlY3RlZCB1aWQgPSBgbWMtaW5wdXQtJHtuZXh0VW5pcXVlSWQrK31gO1xyXG4gICAgcHJvdGVjdGVkIHByZXZpb3VzTmF0aXZlVmFsdWU6IGFueTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgTWNGb3JtRmllbGRDb250cm9sLlxyXG4gICAgICogQGRvY3MtcHJpdmF0ZVxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbD8uZGlzYWJsZWQgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubmdDb250cm9sLmRpc2FibGVkO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xyXG4gICAgfVxyXG5cclxuICAgIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcclxuXHJcbiAgICAgICAgLy8gQnJvd3NlcnMgbWF5IG5vdCBmaXJlIHRoZSBibHVyIGV2ZW50IGlmIHRoZSBpbnB1dCBpcyBkaXNhYmxlZCB0b28gcXVpY2tseS5cclxuICAgICAgICAvLyBSZXNldCBmcm9tIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIGVsZW1lbnQgZG9lc24ndCBiZWNvbWUgc3R1Y2suXHJcbiAgICAgICAgaWYgKHRoaXMuZm9jdXNlZCkge1xyXG4gICAgICAgICAgICB0aGlzLmZvY3VzZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBNY0Zvcm1GaWVsZENvbnRyb2wuXHJcbiAgICAgKiBAZG9jcy1wcml2YXRlXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgaWQoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faWQ7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0IGlkKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLl9pZCA9IHZhbHVlIHx8IHRoaXMudWlkO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX2lkOiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIE1jRm9ybUZpZWxkQ29udHJvbC5cclxuICAgICAqIEBkb2NzLXByaXZhdGVcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fcmVxdWlyZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0IHJlcXVpcmVkKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5fcmVxdWlyZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX3JlcXVpcmVkID0gZmFsc2U7XHJcblxyXG4gICAgLy8gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudHlwZSA9IHRoaXMuX3R5cGU7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIE1jRm9ybUZpZWxkQ29udHJvbC5cclxuICAgICAqIEBkb2NzLXByaXZhdGVcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIGdldCB2YWx1ZSgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9pbnB1dFZhbHVlQWNjZXNzb3IudmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0IHZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgICAgICBpZiAodmFsdWUgPT09IHRoaXMudmFsdWUpIHsgcmV0dXJuOyB9XHJcblxyXG4gICAgICAgIHRoaXMuX2lucHV0VmFsdWVBY2Nlc3Nvci52YWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG9ydGhvZG94LWdldHRlci1hbmQtc2V0dGVyXHJcbiAgICBwcml2YXRlIF9pbnB1dFZhbHVlQWNjZXNzb3I6IHsgdmFsdWU6IGFueSB9O1xyXG5cclxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbmFtaW5nLWNvbnZlbnRpb25cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByb3RlY3RlZCBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgQEluamVjdChOR19WQUxJREFUT1JTKSBwdWJsaWMgcmF3VmFsaWRhdG9yczogVmFsaWRhdG9yW10sXHJcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChNQ19WQUxJREFUSU9OKSBwcml2YXRlIG1jVmFsaWRhdGlvbjogTWNWYWxpZGF0aW9uT3B0aW9ucyxcclxuICAgICAgICBAT3B0aW9uYWwoKSBAU2VsZigpIG5nQ29udHJvbDogTmdDb250cm9sLFxyXG4gICAgICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgcHVibGljIG5nTW9kZWw6IE5nTW9kZWwsXHJcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBwdWJsaWMgZm9ybUNvbnRyb2xOYW1lOiBGb3JtQ29udHJvbE5hbWUsXHJcbiAgICAgICAgQE9wdGlvbmFsKCkgcGFyZW50Rm9ybTogTmdGb3JtLFxyXG4gICAgICAgIEBPcHRpb25hbCgpIHBhcmVudEZvcm1Hcm91cDogRm9ybUdyb3VwRGlyZWN0aXZlLFxyXG4gICAgICAgIGRlZmF1bHRFcnJvclN0YXRlTWF0Y2hlcjogRXJyb3JTdGF0ZU1hdGNoZXIsXHJcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBASW5qZWN0KE1DX0lOUFVUX1ZBTFVFX0FDQ0VTU09SKSBpbnB1dFZhbHVlQWNjZXNzb3I6IGFueSxcclxuICAgICAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIoZGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyLCBwYXJlbnRGb3JtLCBwYXJlbnRGb3JtR3JvdXAsIG5nQ29udHJvbCk7XHJcblxyXG4gICAgICAgIC8vIElmIG5vIGlucHV0IHZhbHVlIGFjY2Vzc29yIHdhcyBleHBsaWNpdGx5IHNwZWNpZmllZCwgdXNlIHRoZSBlbGVtZW50IGFzIHRoZSBpbnB1dCB2YWx1ZVxyXG4gICAgICAgIC8vIGFjY2Vzc29yLlxyXG4gICAgICAgIHRoaXMuX2lucHV0VmFsdWVBY2Nlc3NvciA9IGlucHV0VmFsdWVBY2Nlc3NvciB8fCB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcclxuXHJcbiAgICAgICAgdGhpcy5wcmV2aW91c05hdGl2ZVZhbHVlID0gdGhpcy52YWx1ZTtcclxuXHJcbiAgICAgICAgLy8gRm9yY2Ugc2V0dGVyIHRvIGJlIGNhbGxlZCBpbiBjYXNlIGlkIHdhcyBub3Qgc3BlY2lmaWVkLlxyXG4gICAgICAgIHRoaXMuaWQgPSB0aGlzLmlkO1xyXG4gICAgfVxyXG5cclxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMubmdDb250cm9sKSB7IHJldHVybjsgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5tY1ZhbGlkYXRpb24udXNlVmFsaWRhdGlvbikge1xyXG4gICAgICAgICAgICBzZXRNb3NhaWNWYWxpZGF0aW9uKHRoaXMsIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBuZ09uQ2hhbmdlcygpIHtcclxuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMuY29tcGxldGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ0RvQ2hlY2soKSB7XHJcbiAgICAgICAgaWYgKHRoaXMubmdDb250cm9sKSB7XHJcbiAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gcmUtZXZhbHVhdGUgdGhpcyBvbiBldmVyeSBjaGFuZ2UgZGV0ZWN0aW9uIGN5Y2xlLCBiZWNhdXNlIHRoZXJlIGFyZSBzb21lXHJcbiAgICAgICAgICAgIC8vIGVycm9yIHRyaWdnZXJzIHRoYXQgd2UgY2FuJ3Qgc3Vic2NyaWJlIHRvIChlLmcuIHBhcmVudCBmb3JtIHN1Ym1pc3Npb25zKS4gVGhpcyBtZWFuc1xyXG4gICAgICAgICAgICAvLyB0aGF0IHdoYXRldmVyIGxvZ2ljIGlzIGluIGhlcmUgaGFzIHRvIGJlIHN1cGVyIGxlYW4gb3Igd2UgcmlzayBkZXN0cm95aW5nIHRoZSBwZXJmb3JtYW5jZS5cclxuICAgICAgICAgICAgdGhpcy51cGRhdGVFcnJvclN0YXRlKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBXZSBuZWVkIHRvIGRpcnR5LWNoZWNrIHRoZSBuYXRpdmUgZWxlbWVudCdzIHZhbHVlLCBiZWNhdXNlIHRoZXJlIGFyZSBzb21lIGNhc2VzIHdoZXJlXHJcbiAgICAgICAgLy8gd2Ugd29uJ3QgYmUgbm90aWZpZWQgd2hlbiBpdCBjaGFuZ2VzIChlLmcuIHRoZSBjb25zdW1lciBpc24ndCB1c2luZyBmb3JtcyBvciB0aGV5J3JlXHJcbiAgICAgICAgLy8gdXBkYXRpbmcgdGhlIHZhbHVlIHVzaW5nIGBlbWl0RXZlbnQ6IGZhbHNlYCkuXHJcbiAgICAgICAgdGhpcy5kaXJ0eUNoZWNrTmF0aXZlVmFsdWUoKTtcclxuICAgIH1cclxuXHJcbiAgICB0b2dnbGVUeXBlKCkge1xyXG4gICAgICAgIHRoaXMuZWxlbWVudFR5cGUgPSB0aGlzLmVsZW1lbnRUeXBlID09PSAncGFzc3dvcmQnID8gJ3RleHQnIDogJ3Bhc3N3b3JkJztcclxuICAgIH1cclxuXHJcbiAgICAvKiogRm9jdXNlcyB0aGUgaW5wdXQuICovXHJcbiAgICBmb2N1cygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQmx1cigpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2wpIHtcclxuICAgICAgICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMubmdDb250cm9sLmNvbnRyb2w7XHJcblxyXG4gICAgICAgICAgICBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICAoY29udHJvbC5zdGF0dXNDaGFuZ2VzIGFzIEV2ZW50RW1pdHRlcjxzdHJpbmc+KS5lbWl0KGNvbnRyb2wuc3RhdHVzKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZm9jdXNDaGFuZ2VkKGZhbHNlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogQ2FsbGJhY2sgZm9yIHRoZSBjYXNlcyB3aGVyZSB0aGUgZm9jdXNlZCBzdGF0ZSBvZiB0aGUgaW5wdXQgY2hhbmdlcy4gKi9cclxuICAgIGZvY3VzQ2hhbmdlZChpc0ZvY3VzZWQ6IGJvb2xlYW4pIHtcclxuICAgICAgICBpZiAoaXNGb2N1c2VkID09PSB0aGlzLmZvY3VzZWQpIHsgcmV0dXJuOyB9XHJcblxyXG4gICAgICAgIHRoaXMuZm9jdXNlZCA9IGlzRm9jdXNlZDtcclxuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KHsgZm9jdXNlZDogdGhpcy5mb2N1c2VkIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG9uSW5wdXQoKSB7XHJcbiAgICAgICAgLy8gVGhpcyBpcyBhIG5vb3AgZnVuY3Rpb24gYW5kIGlzIHVzZWQgdG8gbGV0IEFuZ3VsYXIga25vdyB3aGVuZXZlciB0aGUgdmFsdWUgY2hhbmdlcy5cclxuICAgICAgICAvLyBBbmd1bGFyIHdpbGwgcnVuIGEgbmV3IGNoYW5nZSBkZXRlY3Rpb24gZWFjaCB0aW1lIHRoZSBgaW5wdXRgIGV2ZW50IGhhcyBiZWVuIGRpc3BhdGNoZWQuXHJcbiAgICAgICAgLy8gSXQncyBuZWNlc3NhcnkgdGhhdCBBbmd1bGFyIHJlY29nbml6ZXMgdGhlIHZhbHVlIGNoYW5nZSwgYmVjYXVzZSB3aGVuIGZsb2F0aW5nTGFiZWxcclxuICAgICAgICAvLyBpcyBzZXQgdG8gZmFsc2UgYW5kIEFuZ3VsYXIgZm9ybXMgYXJlbid0IHVzZWQsIHRoZSBwbGFjZWhvbGRlciB3b24ndCByZWNvZ25pemUgdGhlXHJcbiAgICAgICAgLy8gdmFsdWUgY2hhbmdlcyBhbmQgd2lsbCBub3QgZGlzYXBwZWFyLlxyXG4gICAgICAgIC8vIExpc3RlbmluZyB0byB0aGUgaW5wdXQgZXZlbnQgd291bGRuJ3QgYmUgbmVjZXNzYXJ5IHdoZW4gdGhlIGlucHV0IGlzIHVzaW5nIHRoZVxyXG4gICAgICAgIC8vIEZvcm1zTW9kdWxlIG9yIFJlYWN0aXZlRm9ybXNNb2R1bGUsIGJlY2F1c2UgQW5ndWxhciBmb3JtcyBhbHNvIGxpc3RlbnMgdG8gaW5wdXQgZXZlbnRzLlxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBNY0Zvcm1GaWVsZENvbnRyb2wuXHJcbiAgICAgKiBAZG9jcy1wcml2YXRlXHJcbiAgICAgKi9cclxuICAgIGdldCBlbXB0eSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gIXRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnZhbHVlICYmICF0aGlzLmlzQmFkSW5wdXQoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgTWNGb3JtRmllbGRDb250cm9sLlxyXG4gICAgICogQGRvY3MtcHJpdmF0ZVxyXG4gICAgICovXHJcbiAgICBvbkNvbnRhaW5lckNsaWNrKCkge1xyXG4gICAgICAgIHRoaXMuZm9jdXMoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogRG9lcyBzb21lIG1hbnVhbCBkaXJ0eSBjaGVja2luZyBvbiB0aGUgbmF0aXZlIGlucHV0IGB2YWx1ZWAgcHJvcGVydHkuICovXHJcbiAgICBwcm90ZWN0ZWQgZGlydHlDaGVja05hdGl2ZVZhbHVlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnByZXZpb3VzTmF0aXZlVmFsdWUgIT09IHRoaXMudmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5wcmV2aW91c05hdGl2ZVZhbHVlID0gdGhpcy52YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKiogQ2hlY2tzIHdoZXRoZXIgdGhlIGlucHV0IGlzIGludmFsaWQgYmFzZWQgb24gdGhlIG5hdGl2ZSB2YWxpZGF0aW9uLiAqL1xyXG4gICAgcHJvdGVjdGVkIGlzQmFkSW5wdXQoKSB7XHJcbiAgICAgICAgLy8gVGhlIGB2YWxpZGl0eWAgcHJvcGVydHkgd29uJ3QgYmUgcHJlc2VudCBvbiBwbGF0Zm9ybS1zZXJ2ZXIuXHJcbiAgICAgICAgcmV0dXJuICh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWxpZGl0eT8uYmFkSW5wdXQ7XHJcbiAgICB9XHJcbn1cclxuIl19
|
1
|
+
import { FocusMonitor } from '@angular/cdk/a11y';
|
2
|
+
import { Directionality } from '@angular/cdk/bidi';
|
3
|
+
import { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';
|
4
|
+
import { Overlay, ScrollDispatcher } from '@angular/cdk/overlay';
|
5
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Directive, ElementRef, Inject, Input, NgZone, Optional, Self, ViewContainerRef, ViewEncapsulation } from '@angular/core';
|
6
|
+
import { FormControlName, FormGroupDirective, NG_VALIDATORS, NgControl, NgForm, NgModel } from '@angular/forms';
|
7
|
+
import { ErrorStateMatcher, MC_VALIDATION, PopUpTriggers, setMosaicValidation } from '@ptsecurity/mosaic/core';
|
8
|
+
import { McFormField, McFormFieldControl } from '@ptsecurity/mosaic/form-field';
|
9
|
+
import { MC_TOOLTIP_SCROLL_STRATEGY, McTooltipTrigger } from '@ptsecurity/mosaic/tooltip';
|
10
|
+
import { Subject } from 'rxjs';
|
11
|
+
import { McInputMixinBase } from './input';
|
12
|
+
import { MC_INPUT_VALUE_ACCESSOR } from './input-value-accessor';
|
13
|
+
import * as i0 from "@angular/core";
|
14
|
+
import * as i1 from "@angular/cdk/overlay";
|
15
|
+
import * as i2 from "@angular/cdk/bidi";
|
16
|
+
import * as i3 from "@angular/cdk/a11y";
|
17
|
+
import * as i4 from "@ptsecurity/mosaic/form-field";
|
18
|
+
import * as i5 from "@angular/forms";
|
19
|
+
import * as i6 from "@ptsecurity/mosaic/core";
|
20
|
+
let nextUniqueId = 0;
|
21
|
+
export class McPasswordToggle extends McTooltipTrigger {
|
22
|
+
constructor(overlay, elementRef, ngZone, scrollDispatcher, hostView, scrollStrategy, direction, focusMonitor, formField) {
|
23
|
+
super(overlay, elementRef, ngZone, scrollDispatcher, hostView, scrollStrategy, direction);
|
24
|
+
this.focusMonitor = focusMonitor;
|
25
|
+
this.formField = formField;
|
26
|
+
this._tabIndex = 0;
|
27
|
+
this.trigger = `${PopUpTriggers.Hover}`;
|
28
|
+
this.runFocusMonitor();
|
29
|
+
}
|
30
|
+
get content() {
|
31
|
+
return this.formField.control.elementType === 'password' ?
|
32
|
+
this.mcTooltipHidden :
|
33
|
+
this._content;
|
34
|
+
}
|
35
|
+
set content(content) {
|
36
|
+
this._content = content;
|
37
|
+
this.updateData();
|
38
|
+
}
|
39
|
+
get disabled() {
|
40
|
+
return this._disabled === undefined ? this.formField.disabled : this._disabled;
|
41
|
+
}
|
42
|
+
set disabled(value) {
|
43
|
+
this._disabled = coerceBooleanProperty(value);
|
44
|
+
this._disabled ? this.stopFocusMonitor() : this.runFocusMonitor();
|
45
|
+
}
|
46
|
+
get tabIndex() {
|
47
|
+
return this.disabled ? -1 : this._tabIndex;
|
48
|
+
}
|
49
|
+
set tabIndex(value) {
|
50
|
+
// If the specified tabIndex value is null or undefined, fall back to the default value.
|
51
|
+
this._tabIndex = value != null ? coerceNumberProperty(value) : 0;
|
52
|
+
}
|
53
|
+
get hidden() {
|
54
|
+
return this.formField.control.elementType === 'password';
|
55
|
+
}
|
56
|
+
ngOnDestroy() {
|
57
|
+
this.stopFocusMonitor();
|
58
|
+
}
|
59
|
+
toggle() {
|
60
|
+
if (this.disabled) {
|
61
|
+
return;
|
62
|
+
}
|
63
|
+
this.hide();
|
64
|
+
const input = this.formField.control;
|
65
|
+
input.toggleType();
|
66
|
+
this.updateData();
|
67
|
+
}
|
68
|
+
runFocusMonitor() {
|
69
|
+
this.focusMonitor.monitor(this.elementRef)
|
70
|
+
.subscribe((origin) => {
|
71
|
+
if (origin === 'keyboard') {
|
72
|
+
this.show();
|
73
|
+
}
|
74
|
+
else if (origin === null) {
|
75
|
+
this.hide();
|
76
|
+
}
|
77
|
+
});
|
78
|
+
}
|
79
|
+
stopFocusMonitor() {
|
80
|
+
this.focusMonitor.stopMonitoring(this.elementRef);
|
81
|
+
}
|
82
|
+
}
|
83
|
+
/** @nocollapse */ /** @nocollapse */ McPasswordToggle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: McPasswordToggle, deps: [{ token: i1.Overlay }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.ScrollDispatcher }, { token: i0.ViewContainerRef }, { token: MC_TOOLTIP_SCROLL_STRATEGY }, { token: i2.Directionality, optional: true }, { token: i3.FocusMonitor }, { token: i4.McFormField }], target: i0.ɵɵFactoryTarget.Component });
|
84
|
+
/** @nocollapse */ /** @nocollapse */ McPasswordToggle.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: McPasswordToggle, selector: "mc-password-toggle", inputs: { content: ["mcTooltipNotHidden", "content"], mcTooltipHidden: "mcTooltipHidden", disabled: "disabled", tabIndex: "tabIndex" }, host: { listeners: { "click": "toggle()", "keydown.ENTER": "toggle()", "keydown.SPACE": "toggle()" }, properties: { "class.mc-eye_16": "hidden", "class.mc-eye-crossed_16": "!hidden", "attr.tabindex": "disabled ? null : tabIndex", "attr.disabled": "disabled || null" }, classAttribute: "mc-password-toggle mc" }, exportAs: ["mcPasswordToggle"], usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
85
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: McPasswordToggle, decorators: [{
|
86
|
+
type: Component,
|
87
|
+
args: [{
|
88
|
+
selector: `mc-password-toggle`,
|
89
|
+
exportAs: 'mcPasswordToggle',
|
90
|
+
template: '<ng-content></ng-content>',
|
91
|
+
host: {
|
92
|
+
class: 'mc-password-toggle mc',
|
93
|
+
'[class.mc-eye_16]': 'hidden',
|
94
|
+
'[class.mc-eye-crossed_16]': '!hidden',
|
95
|
+
'[attr.tabindex]': 'disabled ? null : tabIndex',
|
96
|
+
'[attr.disabled]': 'disabled || null',
|
97
|
+
'(click)': 'toggle()',
|
98
|
+
'(keydown.ENTER)': 'toggle()',
|
99
|
+
'(keydown.SPACE)': 'toggle()'
|
100
|
+
},
|
101
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
102
|
+
encapsulation: ViewEncapsulation.None
|
103
|
+
}]
|
104
|
+
}], ctorParameters: function () { return [{ type: i1.Overlay }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i1.ScrollDispatcher }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{
|
105
|
+
type: Inject,
|
106
|
+
args: [MC_TOOLTIP_SCROLL_STRATEGY]
|
107
|
+
}] }, { type: i2.Directionality, decorators: [{
|
108
|
+
type: Optional
|
109
|
+
}] }, { type: i3.FocusMonitor }, { type: i4.McFormField }]; }, propDecorators: { content: [{
|
110
|
+
type: Input,
|
111
|
+
args: ['mcTooltipNotHidden']
|
112
|
+
}], mcTooltipHidden: [{
|
113
|
+
type: Input
|
114
|
+
}], disabled: [{
|
115
|
+
type: Input
|
116
|
+
}], tabIndex: [{
|
117
|
+
type: Input
|
118
|
+
}] } });
|
119
|
+
export class McInputPassword extends McInputMixinBase {
|
120
|
+
// tslint:disable-next-line: naming-convention
|
121
|
+
constructor(elementRef, rawValidators, mcValidation, ngControl, ngModel, formControlName, parentForm, parentFormGroup, defaultErrorStateMatcher, inputValueAccessor, changeDetectorRef) {
|
122
|
+
super(defaultErrorStateMatcher, parentForm, parentFormGroup, ngControl);
|
123
|
+
this.elementRef = elementRef;
|
124
|
+
this.rawValidators = rawValidators;
|
125
|
+
this.mcValidation = mcValidation;
|
126
|
+
this.ngModel = ngModel;
|
127
|
+
this.formControlName = formControlName;
|
128
|
+
this.changeDetectorRef = changeDetectorRef;
|
129
|
+
/**
|
130
|
+
* Implemented as part of McFormFieldControl.
|
131
|
+
* @docs-private
|
132
|
+
*/
|
133
|
+
this.focused = false;
|
134
|
+
/**
|
135
|
+
* Implemented as part of McFormFieldControl.
|
136
|
+
* @docs-private
|
137
|
+
*/
|
138
|
+
this.stateChanges = new Subject();
|
139
|
+
this.checkRule = new Subject();
|
140
|
+
/**
|
141
|
+
* Implemented as part of McFormFieldControl.
|
142
|
+
* @docs-private
|
143
|
+
*/
|
144
|
+
this.controlType = 'input-password';
|
145
|
+
this.elementType = 'password';
|
146
|
+
this.uid = `mc-input-${nextUniqueId++}`;
|
147
|
+
this._disabled = false;
|
148
|
+
this._required = false;
|
149
|
+
// If no input value accessor was explicitly specified, use the element as the input value
|
150
|
+
// accessor.
|
151
|
+
this._inputValueAccessor = inputValueAccessor || this.elementRef.nativeElement;
|
152
|
+
this.previousNativeValue = this.value;
|
153
|
+
// Force setter to be called in case id was not specified.
|
154
|
+
this.id = this.id;
|
155
|
+
}
|
156
|
+
/**
|
157
|
+
* Implemented as part of McFormFieldControl.
|
158
|
+
* @docs-private
|
159
|
+
*/
|
160
|
+
get disabled() {
|
161
|
+
if (this.ngControl?.disabled !== null) {
|
162
|
+
return this.ngControl.disabled;
|
163
|
+
}
|
164
|
+
return this._disabled;
|
165
|
+
}
|
166
|
+
set disabled(value) {
|
167
|
+
this._disabled = coerceBooleanProperty(value);
|
168
|
+
// Browsers may not fire the blur event if the input is disabled too quickly.
|
169
|
+
// Reset from here to ensure that the element doesn't become stuck.
|
170
|
+
if (this.focused) {
|
171
|
+
this.focused = false;
|
172
|
+
this.stateChanges.next();
|
173
|
+
}
|
174
|
+
}
|
175
|
+
/**
|
176
|
+
* Implemented as part of McFormFieldControl.
|
177
|
+
* @docs-private
|
178
|
+
*/
|
179
|
+
get id() {
|
180
|
+
return this._id;
|
181
|
+
}
|
182
|
+
set id(value) {
|
183
|
+
this._id = value || this.uid;
|
184
|
+
}
|
185
|
+
/**
|
186
|
+
* Implemented as part of McFormFieldControl.
|
187
|
+
* @docs-private
|
188
|
+
*/
|
189
|
+
get required() {
|
190
|
+
return this._required;
|
191
|
+
}
|
192
|
+
set required(value) {
|
193
|
+
this._required = coerceBooleanProperty(value);
|
194
|
+
}
|
195
|
+
// this.elementRef.nativeElement.type = this._type;
|
196
|
+
/**
|
197
|
+
* Implemented as part of McFormFieldControl.
|
198
|
+
* @docs-private
|
199
|
+
*/
|
200
|
+
get value() {
|
201
|
+
return this._inputValueAccessor.value;
|
202
|
+
}
|
203
|
+
set value(value) {
|
204
|
+
if (value === this.value) {
|
205
|
+
return;
|
206
|
+
}
|
207
|
+
this._inputValueAccessor.value = value;
|
208
|
+
this.stateChanges.next();
|
209
|
+
}
|
210
|
+
/**
|
211
|
+
* Implemented as part of McFormFieldControl.
|
212
|
+
* @docs-private
|
213
|
+
*/
|
214
|
+
get empty() {
|
215
|
+
return !this.elementRef.nativeElement.value && !this.isBadInput();
|
216
|
+
}
|
217
|
+
ngAfterContentInit() {
|
218
|
+
if (!this.ngControl) {
|
219
|
+
return;
|
220
|
+
}
|
221
|
+
if (this.mcValidation.useValidation) {
|
222
|
+
setMosaicValidation(this, this.changeDetectorRef);
|
223
|
+
}
|
224
|
+
}
|
225
|
+
ngOnChanges() {
|
226
|
+
this.stateChanges.next();
|
227
|
+
}
|
228
|
+
ngOnDestroy() {
|
229
|
+
this.stateChanges.complete();
|
230
|
+
}
|
231
|
+
ngDoCheck() {
|
232
|
+
if (this.ngControl) {
|
233
|
+
// We need to re-evaluate this on every change detection cycle, because there are some
|
234
|
+
// error triggers that we can't subscribe to (e.g. parent form submissions). This means
|
235
|
+
// that whatever logic is in here has to be super lean or we risk destroying the performance.
|
236
|
+
this.updateErrorState();
|
237
|
+
}
|
238
|
+
// We need to dirty-check the native element's value, because there are some cases where
|
239
|
+
// we won't be notified when it changes (e.g. the consumer isn't using forms or they're
|
240
|
+
// updating the value using `emitEvent: false`).
|
241
|
+
this.dirtyCheckNativeValue();
|
242
|
+
}
|
243
|
+
checkRules() {
|
244
|
+
this.checkRule.next();
|
245
|
+
}
|
246
|
+
toggleType() {
|
247
|
+
this.elementType = this.elementType === 'password' ? 'text' : 'password';
|
248
|
+
}
|
249
|
+
/** Focuses the input. */
|
250
|
+
focus() {
|
251
|
+
this.elementRef.nativeElement.focus();
|
252
|
+
}
|
253
|
+
onBlur() {
|
254
|
+
if (this.ngControl?.control) {
|
255
|
+
const control = this.ngControl.control;
|
256
|
+
control.updateValueAndValidity({ emitEvent: false });
|
257
|
+
control.statusChanges.emit(control.status);
|
258
|
+
}
|
259
|
+
this.focusChanged(false);
|
260
|
+
}
|
261
|
+
/** Callback for the cases where the focused state of the input changes. */
|
262
|
+
focusChanged(isFocused) {
|
263
|
+
if (isFocused === this.focused) {
|
264
|
+
return;
|
265
|
+
}
|
266
|
+
this.focused = isFocused;
|
267
|
+
this.stateChanges.next({ focused: this.focused });
|
268
|
+
}
|
269
|
+
onInput() {
|
270
|
+
// This is a noop function and is used to let Angular know whenever the value changes.
|
271
|
+
// Angular will run a new change detection each time the `input` event has been dispatched.
|
272
|
+
// It's necessary that Angular recognizes the value change, because when floatingLabel
|
273
|
+
// is set to false and Angular forms aren't used, the placeholder won't recognize the
|
274
|
+
// value changes and will not disappear.
|
275
|
+
// Listening to the input event wouldn't be necessary when the input is using the
|
276
|
+
// FormsModule or ReactiveFormsModule, because Angular forms also listens to input events.
|
277
|
+
}
|
278
|
+
/**
|
279
|
+
* Implemented as part of McFormFieldControl.
|
280
|
+
* @docs-private
|
281
|
+
*/
|
282
|
+
onContainerClick() {
|
283
|
+
this.focus();
|
284
|
+
}
|
285
|
+
/** Does some manual dirty checking on the native input `value` property. */
|
286
|
+
dirtyCheckNativeValue() {
|
287
|
+
if (this.previousNativeValue !== this.value) {
|
288
|
+
this.previousNativeValue = this.value;
|
289
|
+
this.stateChanges.next();
|
290
|
+
}
|
291
|
+
}
|
292
|
+
/** Checks whether the input is invalid based on the native validation. */
|
293
|
+
isBadInput() {
|
294
|
+
// The `validity` property won't be present on platform-server.
|
295
|
+
return this.elementRef.nativeElement.validity?.badInput;
|
296
|
+
}
|
297
|
+
}
|
298
|
+
/** @nocollapse */ /** @nocollapse */ McInputPassword.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: McInputPassword, deps: [{ token: i0.ElementRef }, { token: NG_VALIDATORS, optional: true, self: true }, { token: MC_VALIDATION, optional: true }, { token: i5.NgControl, optional: true, self: true }, { token: i5.NgModel, optional: true, self: true }, { token: i5.FormControlName, optional: true, self: true }, { token: i5.NgForm, optional: true }, { token: i5.FormGroupDirective, optional: true }, { token: i6.ErrorStateMatcher }, { token: MC_INPUT_VALUE_ACCESSOR, optional: true, self: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
|
299
|
+
/** @nocollapse */ /** @nocollapse */ McInputPassword.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.11", type: McInputPassword, selector: "input[mcInputPassword]", inputs: { errorStateMatcher: "errorStateMatcher", placeholder: "placeholder", disabled: "disabled", id: "id", required: "required", value: "value" }, host: { listeners: { "blur": "onBlur()", "focus": "focusChanged(true)", "input": "onInput()" }, properties: { "attr.id": "id", "attr.type": "elementType", "attr.placeholder": "placeholder", "attr.disabled": "disabled || null", "required": "required" }, classAttribute: "mc-input mc-input-password" }, providers: [{
|
300
|
+
provide: McFormFieldControl, useExisting: McInputPassword
|
301
|
+
}], exportAs: ["mcInputPassword"], usesInheritance: true, usesOnChanges: true, ngImport: i0 });
|
302
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: McInputPassword, decorators: [{
|
303
|
+
type: Directive,
|
304
|
+
args: [{
|
305
|
+
selector: `input[mcInputPassword]`,
|
306
|
+
exportAs: 'mcInputPassword',
|
307
|
+
host: {
|
308
|
+
class: 'mc-input mc-input-password',
|
309
|
+
// Native input properties that are overwritten by Angular inputs need to be synced with
|
310
|
+
// the native input element. Otherwise property bindings for those don't work.
|
311
|
+
'[attr.id]': 'id',
|
312
|
+
'[attr.type]': 'elementType',
|
313
|
+
'[attr.placeholder]': 'placeholder',
|
314
|
+
'[attr.disabled]': 'disabled || null',
|
315
|
+
'[required]': 'required',
|
316
|
+
'(blur)': 'onBlur()',
|
317
|
+
'(focus)': 'focusChanged(true)',
|
318
|
+
'(input)': 'onInput()'
|
319
|
+
},
|
320
|
+
providers: [{
|
321
|
+
provide: McFormFieldControl, useExisting: McInputPassword
|
322
|
+
}]
|
323
|
+
}]
|
324
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: undefined, decorators: [{
|
325
|
+
type: Optional
|
326
|
+
}, {
|
327
|
+
type: Self
|
328
|
+
}, {
|
329
|
+
type: Inject,
|
330
|
+
args: [NG_VALIDATORS]
|
331
|
+
}] }, { type: undefined, decorators: [{
|
332
|
+
type: Optional
|
333
|
+
}, {
|
334
|
+
type: Inject,
|
335
|
+
args: [MC_VALIDATION]
|
336
|
+
}] }, { type: i5.NgControl, decorators: [{
|
337
|
+
type: Optional
|
338
|
+
}, {
|
339
|
+
type: Self
|
340
|
+
}] }, { type: i5.NgModel, decorators: [{
|
341
|
+
type: Optional
|
342
|
+
}, {
|
343
|
+
type: Self
|
344
|
+
}] }, { type: i5.FormControlName, decorators: [{
|
345
|
+
type: Optional
|
346
|
+
}, {
|
347
|
+
type: Self
|
348
|
+
}] }, { type: i5.NgForm, decorators: [{
|
349
|
+
type: Optional
|
350
|
+
}] }, { type: i5.FormGroupDirective, decorators: [{
|
351
|
+
type: Optional
|
352
|
+
}] }, { type: i6.ErrorStateMatcher }, { type: undefined, decorators: [{
|
353
|
+
type: Optional
|
354
|
+
}, {
|
355
|
+
type: Self
|
356
|
+
}, {
|
357
|
+
type: Inject,
|
358
|
+
args: [MC_INPUT_VALUE_ACCESSOR]
|
359
|
+
}] }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { errorStateMatcher: [{
|
360
|
+
type: Input
|
361
|
+
}], placeholder: [{
|
362
|
+
type: Input
|
363
|
+
}], disabled: [{
|
364
|
+
type: Input
|
365
|
+
}], id: [{
|
366
|
+
type: Input
|
367
|
+
}], required: [{
|
368
|
+
type: Input
|
369
|
+
}], value: [{
|
370
|
+
type: Input
|
371
|
+
}] } });
|
372
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtcGFzc3dvcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9tb3NhaWMvaW5wdXQvaW5wdXQtcGFzc3dvcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRixPQUFPLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDakUsT0FBTyxFQUVILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFNBQVMsRUFFVCxVQUFVLEVBRVYsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBR04sUUFBUSxFQUNSLElBQUksRUFFSixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDSCxlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLGFBQWEsRUFDYixTQUFTLEVBQ1QsTUFBTSxFQUNOLE9BQU8sRUFFVixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFFSCxpQkFBaUIsRUFDakIsYUFBYSxFQUViLGFBQWEsRUFDYixtQkFBbUIsRUFDdEIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDM0MsT0FBTyxFQUFFLHVCQUF1QixF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VUYsUUFBUTtzQkFEWCxLQUFLO2dCQTJCRixFQUFFO3NCQURMLEtBQUs7Z0JBZ0JGLFFBQVE7c0JBRFgsS0FBSztnQkFrQkYsS0FBSztzQkFEUixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9jdXNNb25pdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgRGlyZWN0aW9uYWxpdHkgfSBmcm9tICdAYW5ndWxhci9jZGsvYmlkaSc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHksIGNvZXJjZU51bWJlclByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IE92ZXJsYXksIFNjcm9sbERpc3BhdGNoZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIERpcmVjdGl2ZSxcbiAgICBEb0NoZWNrLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPcHRpb25hbCxcbiAgICBTZWxmLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDb250YWluZXJSZWYsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIEZvcm1Db250cm9sTmFtZSxcbiAgICBGb3JtR3JvdXBEaXJlY3RpdmUsXG4gICAgTkdfVkFMSURBVE9SUyxcbiAgICBOZ0NvbnRyb2wsXG4gICAgTmdGb3JtLFxuICAgIE5nTW9kZWwsXG4gICAgVmFsaWRhdG9yXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gICAgQ2FuVXBkYXRlRXJyb3JTdGF0ZSxcbiAgICBFcnJvclN0YXRlTWF0Y2hlcixcbiAgICBNQ19WQUxJREFUSU9OLFxuICAgIE1jVmFsaWRhdGlvbk9wdGlvbnMsXG4gICAgUG9wVXBUcmlnZ2VycyxcbiAgICBzZXRNb3NhaWNWYWxpZGF0aW9uXG59IGZyb20gJ0BwdHNlY3VyaXR5L21vc2FpYy9jb3JlJztcbmltcG9ydCB7IE1jRm9ybUZpZWxkLCBNY0Zvcm1GaWVsZENvbnRyb2wgfSBmcm9tICdAcHRzZWN1cml0eS9tb3NhaWMvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNQ19UT09MVElQX1NDUk9MTF9TVFJBVEVHWSwgTWNUb29sdGlwVHJpZ2dlciB9IGZyb20gJ0BwdHNlY3VyaXR5L21vc2FpYy90b29sdGlwJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgTWNJbnB1dE1peGluQmFzZSB9IGZyb20gJy4vaW5wdXQnO1xuaW1wb3J0IHsgTUNfSU5QVVRfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICcuL2lucHV0LXZhbHVlLWFjY2Vzc29yJztcblxuXG5sZXQgbmV4dFVuaXF1ZUlkID0gMDtcblxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogYG1jLXBhc3N3b3JkLXRvZ2dsZWAsXG4gICAgZXhwb3J0QXM6ICdtY1Bhc3N3b3JkVG9nZ2xlJyxcbiAgICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdtYy1wYXNzd29yZC10b2dnbGUgbWMnLFxuICAgICAgICAnW2NsYXNzLm1jLWV5ZV8xNl0nOiAnaGlkZGVuJyxcbiAgICAgICAgJ1tjbGFzcy5tYy1leWUtY3Jvc3NlZF8xNl0nOiAnIWhpZGRlbicsXG5cbiAgICAgICAgJ1thdHRyLnRhYmluZGV4XSc6ICdkaXNhYmxlZCA/IG51bGwgOiB0YWJJbmRleCcsXG4gICAgICAgICdbYXR0ci5kaXNhYmxlZF0nOiAnZGlzYWJsZWQgfHwgbnVsbCcsXG5cbiAgICAgICAgJyhjbGljayknOiAndG9nZ2xlKCknLFxuICAgICAgICAnKGtleWRvd24uRU5URVIpJzogJ3RvZ2dsZSgpJyxcbiAgICAgICAgJyhrZXlkb3duLlNQQUNFKSc6ICd0b2dnbGUoKSdcbiAgICB9LFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgTWNQYXNzd29yZFRvZ2dsZSBleHRlbmRzIE1jVG9vbHRpcFRyaWdnZXIgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIEBJbnB1dCgnbWNUb29sdGlwTm90SGlkZGVuJylcbiAgICBnZXQgY29udGVudCgpOiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+IHtcbiAgICAgICAgcmV0dXJuICh0aGlzLmZvcm1GaWVsZC5jb250cm9sIGFzIE1jSW5wdXRQYXNzd29yZCkuZWxlbWVudFR5cGUgPT09ICdwYXNzd29yZCcgP1xuICAgICAgICAgICAgdGhpcy5tY1Rvb2x0aXBIaWRkZW4gOlxuICAgICAgICAgICAgdGhpcy5fY29udGVudDtcbiAgICB9XG5cbiAgICBzZXQgY29udGVudChjb250ZW50OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+KSB7XG4gICAgICAgIHRoaXMuX2NvbnRlbnQgPSBjb250ZW50O1xuXG4gICAgICAgIHRoaXMudXBkYXRlRGF0YSgpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIG1jVG9vbHRpcEhpZGRlbjogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGRpc2FibGVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQgPT09IHVuZGVmaW5lZCA/IHRoaXMuZm9ybUZpZWxkLmRpc2FibGVkIDogdGhpcy5fZGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgc2V0IGRpc2FibGVkKHZhbHVlOiBhbnkpIHtcbiAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuXG4gICAgICAgIHRoaXMuX2Rpc2FibGVkID8gdGhpcy5zdG9wRm9jdXNNb25pdG9yKCkgOiB0aGlzLnJ1bkZvY3VzTW9uaXRvcigpO1xuICAgIH1cblxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuYW1pbmctY29udmVudGlvblxuICAgIHByb3RlY3RlZCBfZGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKVxuICAgIGdldCB0YWJJbmRleCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5kaXNhYmxlZCA/IC0xIDogdGhpcy5fdGFiSW5kZXg7XG4gICAgfVxuXG4gICAgc2V0IHRhYkluZGV4KHZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgLy8gSWYgdGhlIHNwZWNpZmllZCB0YWJJbmRleCB2YWx1ZSBpcyBudWxsIG9yIHVuZGVmaW5lZCwgZmFsbCBiYWNrIHRvIHRoZSBkZWZhdWx0IHZhbHVlLlxuICAgICAgICB0aGlzLl90YWJJbmRleCA9IHZhbHVlICE9IG51bGwgPyBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSkgOiAwO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3RhYkluZGV4OiBudW1iZXIgPSAwO1xuXG4gICAgZ2V0IGhpZGRlbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLmZvcm1GaWVsZC5jb250cm9sIGFzIE1jSW5wdXRQYXNzd29yZCkuZWxlbWVudFR5cGUgPT09ICdwYXNzd29yZCc7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIG92ZXJsYXk6IE92ZXJsYXksXG4gICAgICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIG5nWm9uZTogTmdab25lLFxuICAgICAgICBzY3JvbGxEaXNwYXRjaGVyOiBTY3JvbGxEaXNwYXRjaGVyLFxuICAgICAgICBob3N0VmlldzogVmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgQEluamVjdChNQ19UT09MVElQX1NDUk9MTF9TVFJBVEVHWSkgc2Nyb2xsU3RyYXRlZ3ksXG4gICAgICAgIEBPcHRpb25hbCgpIGRpcmVjdGlvbjogRGlyZWN0aW9uYWxpdHksXG5cbiAgICAgICAgcHJpdmF0ZSBmb2N1c01vbml0b3I6IEZvY3VzTW9uaXRvcixcbiAgICAgICAgcHJpdmF0ZSBmb3JtRmllbGQ6IE1jRm9ybUZpZWxkXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKG92ZXJsYXksIGVsZW1lbnRSZWYsIG5nWm9uZSwgc2Nyb2xsRGlzcGF0Y2hlciwgaG9zdFZpZXcsIHNjcm9sbFN0cmF0ZWd5LCBkaXJlY3Rpb24pO1xuXG4gICAgICAgIHRoaXMudHJpZ2dlciA9IGAke1BvcFVwVHJpZ2dlcnMuSG92ZXJ9YDtcblxuICAgICAgICB0aGlzLnJ1bkZvY3VzTW9uaXRvcigpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLnN0b3BGb2N1c01vbml0b3IoKTtcbiAgICB9XG5cbiAgICB0b2dnbGUoKSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7IHJldHVybjsgfVxuXG4gICAgICAgIHRoaXMuaGlkZSgpO1xuXG4gICAgICAgIGNvbnN0IGlucHV0ID0gdGhpcy5mb3JtRmllbGQuY29udHJvbCBhcyBNY0lucHV0UGFzc3dvcmQ7XG5cbiAgICAgICAgaW5wdXQudG9nZ2xlVHlwZSgpO1xuXG4gICAgICAgIHRoaXMudXBkYXRlRGF0YSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcnVuRm9jdXNNb25pdG9yKCkge1xuICAgICAgICB0aGlzLmZvY3VzTW9uaXRvci5tb25pdG9yKHRoaXMuZWxlbWVudFJlZilcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKG9yaWdpbikgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChvcmlnaW4gPT09ICdrZXlib2FyZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93KCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChvcmlnaW4gPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdG9wRm9jdXNNb25pdG9yKCkge1xuICAgICAgICB0aGlzLmZvY3VzTW9uaXRvci5zdG9wTW9uaXRvcmluZyh0aGlzLmVsZW1lbnRSZWYpO1xuICAgIH1cbn1cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6IGBpbnB1dFttY0lucHV0UGFzc3dvcmRdYCxcbiAgICBleHBvcnRBczogJ21jSW5wdXRQYXNzd29yZCcsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ21jLWlucHV0IG1jLWlucHV0LXBhc3N3b3JkJyxcbiAgICAgICAgLy8gTmF0aXZlIGlucHV0IHByb3BlcnRpZXMgdGhhdCBhcmUgb3ZlcndyaXR0ZW4gYnkgQW5ndWxhciBpbnB1dHMgbmVlZCB0byBiZSBzeW5jZWQgd2l0aFxuICAgICAgICAvLyB0aGUgbmF0aXZlIGlucHV0IGVsZW1lbnQuIE90aGVyd2lzZSBwcm9wZXJ0eSBiaW5kaW5ncyBmb3IgdGhvc2UgZG9uJ3Qgd29yay5cbiAgICAgICAgJ1thdHRyLmlkXSc6ICdpZCcsXG4gICAgICAgICdbYXR0ci50eXBlXSc6ICdlbGVtZW50VHlwZScsXG4gICAgICAgICdbYXR0ci5wbGFjZWhvbGRlcl0nOiAncGxhY2Vob2xkZXInLFxuICAgICAgICAnW2F0dHIuZGlzYWJsZWRdJzogJ2Rpc2FibGVkIHx8IG51bGwnLFxuICAgICAgICAnW3JlcXVpcmVkXSc6ICdyZXF1aXJlZCcsXG5cbiAgICAgICAgJyhibHVyKSc6ICdvbkJsdXIoKScsXG4gICAgICAgICcoZm9jdXMpJzogJ2ZvY3VzQ2hhbmdlZCh0cnVlKScsXG4gICAgICAgICcoaW5wdXQpJzogJ29uSW5wdXQoKSdcbiAgICB9LFxuICAgIHByb3ZpZGVyczogW3tcbiAgICAgICAgcHJvdmlkZTogTWNGb3JtRmllbGRDb250cm9sLCB1c2VFeGlzdGluZzogTWNJbnB1dFBhc3N3b3JkXG4gICAgfV1cbn0pXG5leHBvcnQgY2xhc3MgTWNJbnB1dFBhc3N3b3JkIGV4dGVuZHMgTWNJbnB1dE1peGluQmFzZSBpbXBsZW1lbnRzIE1jRm9ybUZpZWxkQ29udHJvbDxhbnk+LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgRG9DaGVjayxcbiAgICBDYW5VcGRhdGVFcnJvclN0YXRlLCBBZnRlckNvbnRlbnRJbml0LCBPbkNoYW5nZXMge1xuXG4gICAgLyoqIEFuIG9iamVjdCB1c2VkIHRvIGNvbnRyb2wgd2hlbiBlcnJvciBtZXNzYWdlcyBhcmUgc2hvd24uICovXG4gICAgQElucHV0KCkgZXJyb3JTdGF0ZU1hdGNoZXI6IEVycm9yU3RhdGVNYXRjaGVyO1xuXG4gICAgLyoqXG4gICAgICogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBNY0Zvcm1GaWVsZENvbnRyb2wuXG4gICAgICogQGRvY3MtcHJpdmF0ZVxuICAgICAqL1xuICAgIGZvY3VzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgTWNGb3JtRmllbGRDb250cm9sLlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICByZWFkb25seSBzdGF0ZUNoYW5nZXM6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0PGFueT4oKTtcblxuICAgIHJlYWRvbmx5IGNoZWNrUnVsZTogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3Q8YW55PigpO1xuXG4gICAgLyoqXG4gICAgICogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBNY0Zvcm1GaWVsZENvbnRyb2wuXG4gICAgICogQGRvY3MtcHJpdmF0ZVxuICAgICAqL1xuICAgIGNvbnRyb2xUeXBlOiBzdHJpbmcgPSAnaW5wdXQtcGFzc3dvcmQnO1xuXG4gICAgZWxlbWVudFR5cGU6IHN0cmluZyA9ICdwYXNzd29yZCc7XG5cbiAgICAvKipcbiAgICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIE1jRm9ybUZpZWxkQ29udHJvbC5cbiAgICAgKiBAZG9jcy1wcml2YXRlXG4gICAgICovXG4gICAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZztcblxuICAgIHByb3RlY3RlZCB1aWQgPSBgbWMtaW5wdXQtJHtuZXh0VW5pcXVlSWQrK31gO1xuICAgIHByb3RlY3RlZCBwcmV2aW91c05hdGl2ZVZhbHVlOiBhbnk7XG5cbiAgICAvKipcbiAgICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIE1jRm9ybUZpZWxkQ29udHJvbC5cbiAgICAgKiBAZG9jcy1wcml2YXRlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbD8uZGlzYWJsZWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm5nQ29udHJvbC5kaXNhYmxlZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgICB9XG5cbiAgICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuXG4gICAgICAgIC8vIEJyb3dzZXJzIG1heSBub3QgZmlyZSB0aGUgYmx1ciBldmVudCBpZiB0aGUgaW5wdXQgaXMgZGlzYWJsZWQgdG9vIHF1aWNrbHkuXG4gICAgICAgIC8vIFJlc2V0IGZyb20gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgZWxlbWVudCBkb2Vzbid0IGJlY29tZSBzdHVjay5cbiAgICAgICAgaWYgKHRoaXMuZm9jdXNlZCkge1xuICAgICAgICAgICAgdGhpcy5mb2N1c2VkID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBNY0Zvcm1GaWVsZENvbnRyb2wuXG4gICAgICogQGRvY3MtcHJpdmF0ZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGlkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pZDtcbiAgICB9XG5cbiAgICBzZXQgaWQodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9pZCA9IHZhbHVlIHx8IHRoaXMudWlkO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2lkOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIE1jRm9ybUZpZWxkQ29udHJvbC5cbiAgICAgKiBAZG9jcy1wcml2YXRlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBnZXQgcmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZDtcbiAgICB9XG5cbiAgICBzZXQgcmVxdWlyZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fcmVxdWlyZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3JlcXVpcmVkID0gZmFsc2U7XG5cbiAgICAvLyB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC50eXBlID0gdGhpcy5fdHlwZTtcblxuICAgIC8qKlxuICAgICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgTWNGb3JtRmllbGRDb250cm9sLlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGdldCB2YWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5faW5wdXRWYWx1ZUFjY2Vzc29yLnZhbHVlO1xuICAgIH1cblxuICAgIHNldCB2YWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdGhpcy52YWx1ZSkgeyByZXR1cm47IH1cblxuICAgICAgICB0aGlzLl9pbnB1dFZhbHVlQWNjZXNzb3IudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgTWNGb3JtRmllbGRDb250cm9sLlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBnZXQgZW1wdHkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudmFsdWUgJiYgIXRoaXMuaXNCYWRJbnB1dCgpO1xuICAgIH1cblxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogb3J0aG9kb3gtZ2V0dGVyLWFuZC1zZXR0ZXJcbiAgICBwcml2YXRlIF9pbnB1dFZhbHVlQWNjZXNzb3I6IHsgdmFsdWU6IGFueSB9O1xuXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuYW1pbmctY29udmVudGlvblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBASW5qZWN0KE5HX1ZBTElEQVRPUlMpIHB1YmxpYyByYXdWYWxpZGF0b3JzOiBWYWxpZGF0b3JbXSxcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChNQ19WQUxJREFUSU9OKSBwcml2YXRlIG1jVmFsaWRhdGlvbjogTWNWYWxpZGF0aW9uT3B0aW9ucyxcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBwdWJsaWMgbmdNb2RlbDogTmdNb2RlbCxcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBwdWJsaWMgZm9ybUNvbnRyb2xOYW1lOiBGb3JtQ29udHJvbE5hbWUsXG4gICAgICAgIEBPcHRpb25hbCgpIHBhcmVudEZvcm06IE5nRm9ybSxcbiAgICAgICAgQE9wdGlvbmFsKCkgcGFyZW50Rm9ybUdyb3VwOiBGb3JtR3JvdXBEaXJlY3RpdmUsXG4gICAgICAgIGRlZmF1bHRFcnJvclN0YXRlTWF0Y2hlcjogRXJyb3JTdGF0ZU1hdGNoZXIsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgQEluamVjdChNQ19JTlBVVF9WQUxVRV9BQ0NFU1NPUikgaW5wdXRWYWx1ZUFjY2Vzc29yOiBhbnksXG4gICAgICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGRlZmF1bHRFcnJvclN0YXRlTWF0Y2hlciwgcGFyZW50Rm9ybSwgcGFyZW50Rm9ybUdyb3VwLCBuZ0NvbnRyb2wpO1xuXG4gICAgICAgIC8vIElmIG5vIGlucHV0IHZhbHVlIGFjY2Vzc29yIHdhcyBleHBsaWNpdGx5IHNwZWNpZmllZCwgdXNlIHRoZSBlbGVtZW50IGFzIHRoZSBpbnB1dCB2YWx1ZVxuICAgICAgICAvLyBhY2Nlc3Nvci5cbiAgICAgICAgdGhpcy5faW5wdXRWYWx1ZUFjY2Vzc29yID0gaW5wdXRWYWx1ZUFjY2Vzc29yIHx8IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuXG4gICAgICAgIHRoaXMucHJldmlvdXNOYXRpdmVWYWx1ZSA9IHRoaXMudmFsdWU7XG5cbiAgICAgICAgLy8gRm9yY2Ugc2V0dGVyIHRvIGJlIGNhbGxlZCBpbiBjYXNlIGlkIHdhcyBub3Qgc3BlY2lmaWVkLlxuICAgICAgICB0aGlzLmlkID0gdGhpcy5pZDtcbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5uZ0NvbnRyb2wpIHsgcmV0dXJuOyB9XG5cbiAgICAgICAgaWYgKHRoaXMubWNWYWxpZGF0aW9uLnVzZVZhbGlkYXRpb24pIHtcbiAgICAgICAgICAgIHNldE1vc2FpY1ZhbGlkYXRpb24odGhpcywgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcygpIHtcbiAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIG5nRG9DaGVjaygpIHtcbiAgICAgICAgaWYgKHRoaXMubmdDb250cm9sKSB7XG4gICAgICAgICAgICAvLyBXZSBuZWVkIHRvIHJlLWV2YWx1YXRlIHRoaXMgb24gZXZlcnkgY2hhbmdlIGRldGVjdGlvbiBjeWNsZSwgYmVjYXVzZSB0aGVyZSBhcmUgc29tZVxuICAgICAgICAgICAgLy8gZXJyb3IgdHJpZ2dlcnMgdGhhdCB3ZSBjYW4ndCBzdWJzY3JpYmUgdG8gKGUuZy4gcGFyZW50IGZvcm0gc3VibWlzc2lvbnMpLiBUaGlzIG1lYW5zXG4gICAgICAgICAgICAvLyB0aGF0IHdoYXRldmVyIGxvZ2ljIGlzIGluIGhlcmUgaGFzIHRvIGJlIHN1cGVyIGxlYW4gb3Igd2UgcmlzayBkZXN0cm95aW5nIHRoZSBwZXJmb3JtYW5jZS5cbiAgICAgICAgICAgIHRoaXMudXBkYXRlRXJyb3JTdGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gV2UgbmVlZCB0byBkaXJ0eS1jaGVjayB0aGUgbmF0aXZlIGVsZW1lbnQncyB2YWx1ZSwgYmVjYXVzZSB0aGVyZSBhcmUgc29tZSBjYXNlcyB3aGVyZVxuICAgICAgICAvLyB3ZSB3b24ndCBiZSBub3RpZmllZCB3aGVuIGl0IGNoYW5nZXMgKGUuZy4gdGhlIGNvbnN1bWVyIGlzbid0IHVzaW5nIGZvcm1zIG9yIHRoZXkncmVcbiAgICAgICAgLy8gdXBkYXRpbmcgdGhlIHZhbHVlIHVzaW5nIGBlbWl0RXZlbnQ6IGZhbHNlYCkuXG4gICAgICAgIHRoaXMuZGlydHlDaGVja05hdGl2ZVZhbHVlKCk7XG4gICAgfVxuXG4gICAgY2hlY2tSdWxlcygpIHtcbiAgICAgICAgdGhpcy5jaGVja1J1bGUubmV4dCgpO1xuICAgIH1cblxuICAgIHRvZ2dsZVR5cGUoKSB7XG4gICAgICAgIHRoaXMuZWxlbWVudFR5cGUgPSB0aGlzLmVsZW1lbnRUeXBlID09PSAncGFzc3dvcmQnID8gJ3RleHQnIDogJ3Bhc3N3b3JkJztcbiAgICB9XG5cbiAgICAvKiogRm9jdXNlcyB0aGUgaW5wdXQuICovXG4gICAgZm9jdXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgb25CbHVyKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2wpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLm5nQ29udHJvbC5jb250cm9sO1xuXG4gICAgICAgICAgICBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgKGNvbnRyb2wuc3RhdHVzQ2hhbmdlcyBhcyBFdmVudEVtaXR0ZXI8c3RyaW5nPikuZW1pdChjb250cm9sLnN0YXR1cyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmZvY3VzQ2hhbmdlZChmYWxzZSk7XG4gICAgfVxuXG4gICAgLyoqIENhbGxiYWNrIGZvciB0aGUgY2FzZXMgd2hlcmUgdGhlIGZvY3VzZWQgc3RhdGUgb2YgdGhlIGlucHV0IGNoYW5nZXMuICovXG4gICAgZm9jdXNDaGFuZ2VkKGlzRm9jdXNlZDogYm9vbGVhbikge1xuICAgICAgICBpZiAoaXNGb2N1c2VkID09PSB0aGlzLmZvY3VzZWQpIHsgcmV0dXJuOyB9XG5cbiAgICAgICAgdGhpcy5mb2N1c2VkID0gaXNGb2N1c2VkO1xuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KHsgZm9jdXNlZDogdGhpcy5mb2N1c2VkIH0pO1xuICAgIH1cblxuICAgIG9uSW5wdXQoKSB7XG4gICAgICAgIC8vIFRoaXMgaXMgYSBub29wIGZ1bmN0aW9uIGFuZCBpcyB1c2VkIHRvIGxldCBBbmd1bGFyIGtub3cgd2hlbmV2ZXIgdGhlIHZhbHVlIGNoYW5nZXMuXG4gICAgICAgIC8vIEFuZ3VsYXIgd2lsbCBydW4gYSBuZXcgY2hhbmdlIGRldGVjdGlvbiBlYWNoIHRpbWUgdGhlIGBpbnB1dGAgZXZlbnQgaGFzIGJlZW4gZGlzcGF0Y2hlZC5cbiAgICAgICAgLy8gSXQncyBuZWNlc3NhcnkgdGhhdCBBbmd1bGFyIHJlY29nbml6ZXMgdGhlIHZhbHVlIGNoYW5nZSwgYmVjYXVzZSB3aGVuIGZsb2F0aW5nTGFiZWxcbiAgICAgICAgLy8gaXMgc2V0IHRvIGZhbHNlIGFuZCBBbmd1bGFyIGZvcm1zIGFyZW4ndCB1c2VkLCB0aGUgcGxhY2Vob2xkZXIgd29uJ3QgcmVjb2duaXplIHRoZVxuICAgICAgICAvLyB2YWx1ZSBjaGFuZ2VzIGFuZCB3aWxsIG5vdCBkaXNhcHBlYXIuXG4gICAgICAgIC8vIExpc3RlbmluZyB0byB0aGUgaW5wdXQgZXZlbnQgd291bGRuJ3QgYmUgbmVjZXNzYXJ5IHdoZW4gdGhlIGlucHV0IGlzIHVzaW5nIHRoZVxuICAgICAgICAvLyBGb3Jtc01vZHVsZSBvciBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBiZWNhdXNlIEFuZ3VsYXIgZm9ybXMgYWxzbyBsaXN0ZW5zIHRvIGlucHV0IGV2ZW50cy5cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIE1jRm9ybUZpZWxkQ29udHJvbC5cbiAgICAgKiBAZG9jcy1wcml2YXRlXG4gICAgICovXG4gICAgb25Db250YWluZXJDbGljaygpIHtcbiAgICAgICAgdGhpcy5mb2N1cygpO1xuICAgIH1cblxuICAgIC8qKiBEb2VzIHNvbWUgbWFudWFsIGRpcnR5IGNoZWNraW5nIG9uIHRoZSBuYXRpdmUgaW5wdXQgYHZhbHVlYCBwcm9wZXJ0eS4gKi9cbiAgICBwcm90ZWN0ZWQgZGlydHlDaGVja05hdGl2ZVZhbHVlKCkge1xuICAgICAgICBpZiAodGhpcy5wcmV2aW91c05hdGl2ZVZhbHVlICE9PSB0aGlzLnZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnByZXZpb3VzTmF0aXZlVmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIENoZWNrcyB3aGV0aGVyIHRoZSBpbnB1dCBpcyBpbnZhbGlkIGJhc2VkIG9uIHRoZSBuYXRpdmUgdmFsaWRhdGlvbi4gKi9cbiAgICBwcm90ZWN0ZWQgaXNCYWRJbnB1dCgpIHtcbiAgICAgICAgLy8gVGhlIGB2YWxpZGl0eWAgcHJvcGVydHkgd29uJ3QgYmUgcHJlc2VudCBvbiBwbGF0Zm9ybS1zZXJ2ZXIuXG4gICAgICAgIHJldHVybiAodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsaWRpdHk/LmJhZElucHV0O1xuICAgIH1cbn1cbiJdfQ==
|