@ptsecurity/mosaic 11.6.0 → 12.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_theming.scss +407 -99
- package/_visual.scss +63 -26
- package/autocomplete/autocomplete-origin.directive.d.ts +3 -0
- package/autocomplete/autocomplete-trigger.directive.d.ts +3 -0
- package/autocomplete/autocomplete.component.d.ts +3 -0
- package/autocomplete/autocomplete.module.d.ts +10 -0
- package/autocomplete/package.json +0 -1
- package/autocomplete/ptsecurity-mosaic-autocomplete.d.ts +1 -0
- package/bundles/ptsecurity-mosaic-autocomplete.umd.js +178 -114
- package/bundles/ptsecurity-mosaic-autocomplete.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-button-toggle.umd.js +107 -71
- package/bundles/ptsecurity-mosaic-button-toggle.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-button.umd.js +106 -77
- package/bundles/ptsecurity-mosaic-button.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-card.umd.js +74 -43
- package/bundles/ptsecurity-mosaic-card.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-checkbox.umd.js +114 -69
- package/bundles/ptsecurity-mosaic-checkbox.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-core.umd.js +804 -256
- package/bundles/ptsecurity-mosaic-core.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-datepicker.umd.js +599 -420
- package/bundles/ptsecurity-mosaic-datepicker.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-design-tokens.umd.js +108 -26
- package/bundles/ptsecurity-mosaic-design-tokens.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-divider.umd.js +55 -28
- package/bundles/ptsecurity-mosaic-divider.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-dropdown.umd.js +263 -187
- package/bundles/ptsecurity-mosaic-dropdown.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-form-field.umd.js +200 -125
- package/bundles/ptsecurity-mosaic-form-field.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-icon.umd.js +79 -41
- package/bundles/ptsecurity-mosaic-icon.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-input.umd.js +222 -124
- package/bundles/ptsecurity-mosaic-input.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-link.umd.js +76 -45
- package/bundles/ptsecurity-mosaic-link.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-list.umd.js +344 -200
- package/bundles/ptsecurity-mosaic-list.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-modal.umd.js +324 -220
- package/bundles/ptsecurity-mosaic-modal.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-navbar.umd.js +289 -208
- package/bundles/ptsecurity-mosaic-navbar.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-popover.umd.js +346 -640
- package/bundles/ptsecurity-mosaic-popover.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-progress-bar.umd.js +69 -40
- package/bundles/ptsecurity-mosaic-progress-bar.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-progress-spinner.umd.js +69 -40
- package/bundles/ptsecurity-mosaic-progress-spinner.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-radio.umd.js +126 -81
- package/bundles/ptsecurity-mosaic-radio.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-select.umd.js +276 -154
- package/bundles/ptsecurity-mosaic-select.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-sidebar.umd.js +105 -68
- package/bundles/ptsecurity-mosaic-sidebar.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-sidepanel.umd.js +236 -158
- package/bundles/ptsecurity-mosaic-sidepanel.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-splitter.umd.js +112 -83
- package/bundles/ptsecurity-mosaic-splitter.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-table.umd.js +77 -44
- package/bundles/ptsecurity-mosaic-table.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-tabs.umd.js +894 -687
- package/bundles/ptsecurity-mosaic-tabs.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-tags.umd.js +313 -209
- package/bundles/ptsecurity-mosaic-tags.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-textarea.umd.js +107 -53
- package/bundles/ptsecurity-mosaic-textarea.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-timepicker.umd.js +116 -71
- package/bundles/ptsecurity-mosaic-timepicker.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-toggle.umd.js +97 -58
- package/bundles/ptsecurity-mosaic-toggle.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-tooltip.umd.js +347 -615
- package/bundles/ptsecurity-mosaic-tooltip.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-tree-select.umd.js +223 -118
- package/bundles/ptsecurity-mosaic-tree-select.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-tree.umd.js +1162 -344
- package/bundles/ptsecurity-mosaic-tree.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic.umd.js +2 -2
- package/button/button.component.d.ts +7 -0
- package/button/button.module.d.ts +8 -0
- package/button/package.json +0 -1
- package/button/ptsecurity-mosaic-button.d.ts +1 -0
- package/button-toggle/button-toggle.component.d.ts +5 -0
- package/button-toggle/button-toggle.module.d.ts +7 -0
- package/button-toggle/package.json +0 -1
- package/button-toggle/ptsecurity-mosaic-button-toggle.d.ts +1 -0
- package/card/card.component.d.ts +3 -0
- package/card/card.module.d.ts +8 -0
- package/card/package.json +0 -1
- package/card/ptsecurity-mosaic-card.d.ts +1 -0
- package/checkbox/checkbox-module.d.ts +7 -0
- package/checkbox/checkbox-required-validator.d.ts +3 -0
- package/checkbox/checkbox.d.ts +3 -0
- package/checkbox/package.json +0 -1
- package/checkbox/ptsecurity-mosaic-checkbox.d.ts +1 -0
- package/core/common-behaviors/color.d.ts +3 -3
- package/core/common-behaviors/common-module.d.ts +5 -0
- package/core/common-behaviors/disabled.d.ts +4 -3
- package/core/common-behaviors/tabindex.d.ts +2 -1
- package/core/error/error-options.d.ts +5 -0
- package/core/formatters/date/formatter.d.ts +3 -0
- package/core/formatters/index.d.ts +5 -0
- package/core/formatters/number/formatter.d.ts +4 -0
- package/core/forms/forms-module.d.ts +5 -0
- package/core/forms/forms.directive.d.ts +5 -0
- package/core/highlight/highlight.pipe.d.ts +3 -0
- package/core/highlight/index.d.ts +6 -0
- package/core/line/line.d.ts +6 -0
- package/core/option/action.d.ts +42 -0
- package/core/option/index.d.ts +1 -0
- package/core/option/optgroup.d.ts +3 -0
- package/core/option/option-module.d.ts +9 -0
- package/core/option/option.d.ts +3 -0
- package/core/overlay/overlay-position-map.d.ts +0 -4
- package/core/package.json +0 -1
- package/core/pop-up/constants.d.ts +29 -0
- package/core/pop-up/index.d.ts +3 -0
- package/core/pop-up/pop-up-trigger.d.ts +70 -0
- package/core/pop-up/pop-up.d.ts +35 -0
- package/core/ptsecurity-mosaic-core.d.ts +1 -1
- package/core/public-api.d.ts +1 -0
- package/core/selection/pseudo-checkbox/pseudo-checkbox.d.ts +3 -0
- package/core/selection/pseudo-checkbox/pseudo-checkbox.module.d.ts +6 -0
- package/core/services/measure-scrollbar.service.d.ts +3 -0
- package/datepicker/calendar-body.component.d.ts +5 -6
- package/datepicker/calendar.component.d.ts +5 -0
- package/datepicker/datepicker-input.directive.d.ts +6 -2
- package/datepicker/datepicker-intl.d.ts +3 -0
- package/datepicker/datepicker-module.d.ts +18 -0
- package/datepicker/datepicker-toggle.component.d.ts +5 -0
- package/datepicker/datepicker.component.d.ts +5 -0
- package/datepicker/month-view.component.d.ts +3 -0
- package/datepicker/multi-year-view.component.d.ts +3 -0
- package/datepicker/package.json +0 -1
- package/datepicker/ptsecurity-mosaic-datepicker.d.ts +1 -0
- package/datepicker/year-view.component.d.ts +3 -0
- package/design-tokens/package.json +0 -1
- package/design-tokens/ptsecurity-mosaic-design-tokens.d.ts +1 -0
- package/design-tokens/tokens/components/list.json5 +0 -4
- package/design-tokens/tokens/components/popover.json5 +32 -4
- package/design-tokens/tokens/components/tooltip.json5 +49 -3
- package/design-tokens/tokens/components/tree.json5 +3 -3
- package/design-tokens/tokens/properties/globals.json5 +1 -1
- package/design-tokens/tokens.d.ts +56 -15
- package/divider/divider.component.d.ts +3 -0
- package/divider/divider.module.d.ts +6 -0
- package/divider/package.json +0 -1
- package/divider/ptsecurity-mosaic-divider.d.ts +1 -0
- package/dropdown/dropdown-content.directive.d.ts +3 -0
- package/dropdown/dropdown-item.component.d.ts +3 -0
- package/dropdown/dropdown-trigger.directive.d.ts +6 -8
- package/dropdown/dropdown.component.d.ts +5 -1
- package/dropdown/dropdown.module.d.ts +11 -0
- package/dropdown/package.json +0 -1
- package/dropdown/ptsecurity-mosaic-dropdown.d.ts +1 -0
- package/esm2015/autocomplete/autocomplete-origin.directive.js +11 -11
- package/esm2015/autocomplete/autocomplete-trigger.directive.js +53 -38
- package/esm2015/autocomplete/autocomplete.component.js +56 -37
- package/esm2015/autocomplete/autocomplete.module.js +25 -15
- package/esm2015/button/button.component.js +52 -56
- package/esm2015/button/button.module.js +35 -20
- package/esm2015/button-toggle/button-toggle.component.js +76 -55
- package/esm2015/button-toggle/button-toggle.module.js +13 -8
- package/esm2015/card/card.component.js +32 -30
- package/esm2015/card/card.module.js +23 -12
- package/esm2015/checkbox/checkbox-module.js +13 -8
- package/esm2015/checkbox/checkbox-required-validator.js +12 -8
- package/esm2015/checkbox/checkbox.js +61 -44
- package/esm2015/core/common-behaviors/color.js +2 -5
- package/esm2015/core/common-behaviors/common-module.js +17 -11
- package/esm2015/core/common-behaviors/disabled.js +1 -1
- package/esm2015/core/common-behaviors/tabindex.js +4 -13
- package/esm2015/core/error/error-options.js +12 -8
- package/esm2015/core/formatters/date/formatter.js +13 -10
- package/esm2015/core/formatters/index.js +13 -8
- package/esm2015/core/formatters/number/formatter.js +16 -10
- package/esm2015/core/forms/forms-module.js +20 -13
- package/esm2015/core/forms/forms.directive.js +32 -29
- package/esm2015/core/highlight/highlight.pipe.js +8 -4
- package/esm2015/core/highlight/index.js +13 -8
- package/esm2015/core/line/line.js +22 -14
- package/esm2015/core/option/action.js +131 -0
- package/esm2015/core/option/index.js +2 -1
- package/esm2015/core/option/optgroup.js +22 -19
- package/esm2015/core/option/option-module.js +14 -8
- package/esm2015/core/option/option.js +44 -35
- package/esm2015/core/overlay/overlay-position-map.js +16 -18
- package/esm2015/core/pop-up/constants.js +34 -0
- package/esm2015/core/pop-up/index.js +4 -0
- package/esm2015/core/pop-up/pop-up-trigger.js +241 -0
- package/esm2015/core/pop-up/pop-up.js +87 -0
- package/esm2015/core/ptsecurity-mosaic-core.js +1 -2
- package/esm2015/core/public-api.js +2 -1
- package/esm2015/core/selection/pseudo-checkbox/pseudo-checkbox.js +25 -21
- package/esm2015/core/selection/pseudo-checkbox/pseudo-checkbox.module.js +13 -8
- package/esm2015/core/services/measure-scrollbar.service.js +12 -12
- package/esm2015/datepicker/calendar-body.component.js +39 -32
- package/esm2015/datepicker/calendar.component.js +92 -58
- package/esm2015/datepicker/datepicker-input.directive.js +92 -61
- package/esm2015/datepicker/datepicker-intl.js +7 -5
- package/esm2015/datepicker/datepicker-module.js +89 -48
- package/esm2015/datepicker/datepicker-toggle.component.js +44 -32
- package/esm2015/datepicker/datepicker.component.js +88 -63
- package/esm2015/datepicker/month-view.component.js +48 -29
- package/esm2015/datepicker/multi-year-view.component.js +40 -27
- package/esm2015/datepicker/year-view.component.js +45 -28
- package/esm2015/design-tokens/tokens.js +57 -16
- package/esm2015/divider/divider.component.js +24 -20
- package/esm2015/divider/divider.module.js +13 -8
- package/esm2015/dropdown/dropdown-content.directive.js +13 -15
- package/esm2015/dropdown/dropdown-item.component.js +40 -30
- package/esm2015/dropdown/dropdown-trigger.directive.js +75 -67
- package/esm2015/dropdown/dropdown.component.js +63 -38
- package/esm2015/dropdown/dropdown.module.js +40 -23
- package/esm2015/form-field/cleaner.js +20 -11
- package/esm2015/form-field/form-field.js +77 -53
- package/esm2015/form-field/form-field.module.js +41 -24
- package/esm2015/form-field/hint.js +16 -13
- package/esm2015/form-field/prefix.js +10 -6
- package/esm2015/form-field/stepper.js +22 -11
- package/esm2015/form-field/suffix.js +10 -6
- package/esm2015/icon/icon.component.js +27 -22
- package/esm2015/icon/icon.module.js +31 -18
- package/esm2015/input/input-number-validators.js +48 -29
- package/esm2015/input/input-number.js +42 -28
- package/esm2015/input/input.js +94 -52
- package/esm2015/input/input.module.js +13 -8
- package/esm2015/link/link.component.js +38 -34
- package/esm2015/link/link.module.js +20 -11
- package/esm2015/list/list-selection.component.js +224 -122
- package/esm2015/list/list.component.js +35 -32
- package/esm2015/list/list.module.js +47 -25
- package/esm2015/modal/css-unit.pipe.js +10 -6
- package/esm2015/modal/modal-control.service.js +11 -8
- package/esm2015/modal/modal.component.js +107 -61
- package/esm2015/modal/modal.directive.js +43 -30
- package/esm2015/modal/modal.module.js +59 -31
- package/esm2015/modal/modal.service.js +9 -9
- package/esm2015/modal/ptsecurity-mosaic-modal.js +1 -3
- package/esm2015/navbar/navbar-item.component.js +111 -95
- package/esm2015/navbar/navbar.component.js +40 -30
- package/esm2015/navbar/navbar.module.js +66 -35
- package/esm2015/navbar/ptsecurity-mosaic-navbar.js +1 -2
- package/esm2015/navbar/vertical-navbar.component.js +68 -46
- package/esm2015/popover/popover-confirm.component.js +115 -0
- package/esm2015/popover/popover.component.js +180 -587
- package/esm2015/popover/popover.module.js +18 -12
- package/esm2015/popover/public-api.js +2 -1
- package/esm2015/progress-bar/progress-bar.component.js +26 -24
- package/esm2015/progress-bar/progress-bar.module.js +24 -15
- package/esm2015/progress-spinner/progress-spinner.component.js +26 -24
- package/esm2015/progress-spinner/progress-spinner.module.js +24 -15
- package/esm2015/radio/radio.component.js +87 -67
- package/esm2015/radio/radio.module.js +13 -8
- package/esm2015/select/select.component.js +181 -105
- package/esm2015/select/select.module.js +54 -28
- package/esm2015/sidebar/ptsecurity-mosaic-sidebar.js +1 -2
- package/esm2015/sidebar/sidebar.component.js +61 -50
- package/esm2015/sidebar/sidebar.module.js +25 -16
- package/esm2015/sidepanel/ptsecurity-mosaic-sidepanel.js +1 -2
- package/esm2015/sidepanel/sidepanel-container.component.js +46 -40
- package/esm2015/sidepanel/sidepanel-directives.js +87 -57
- package/esm2015/sidepanel/sidepanel.module.js +63 -30
- package/esm2015/sidepanel/sidepanel.service.js +20 -12
- package/esm2015/splitter/splitter.component.js +62 -64
- package/esm2015/splitter/splitter.module.js +32 -19
- package/esm2015/table/table.component.js +13 -9
- package/esm2015/table/table.module.js +23 -12
- package/esm2015/tabs/paginated-tab-header.js +20 -18
- package/esm2015/tabs/ptsecurity-mosaic-tabs.js +1 -6
- package/esm2015/tabs/tab-body.component.js +52 -42
- package/esm2015/tabs/tab-content.directive.js +8 -8
- package/esm2015/tabs/tab-group.component.js +145 -74
- package/esm2015/tabs/tab-header.component.js +50 -36
- package/esm2015/tabs/tab-label-wrapper.directive.js +30 -16
- package/esm2015/tabs/tab-label.directive.js +11 -7
- package/esm2015/tabs/tab-nav-bar/tab-nav-bar.js +46 -46
- package/esm2015/tabs/tab.component.js +67 -33
- package/esm2015/tabs/tabs.module.js +87 -45
- package/esm2015/tags/tag-input.js +48 -34
- package/esm2015/tags/tag-list.component.js +93 -56
- package/esm2015/tags/tag.component.js +90 -73
- package/esm2015/tags/tag.module.js +46 -29
- package/esm2015/textarea/textarea.component.js +70 -41
- package/esm2015/textarea/textarea.module.js +13 -8
- package/esm2015/timepicker/timepicker.directive.js +64 -52
- package/esm2015/timepicker/timepicker.module.js +26 -13
- package/esm2015/toggle/toggle.component.js +65 -47
- package/esm2015/toggle/toggle.module.js +13 -8
- package/esm2015/tooltip/tooltip.animations.js +19 -0
- package/esm2015/tooltip/tooltip.component.js +239 -555
- package/esm2015/tooltip/tooltip.module.js +38 -11
- package/esm2015/tree/control/base-tree-control.js +60 -0
- package/esm2015/tree/control/flat-tree-control.js +123 -0
- package/esm2015/tree/control/nested-tree-control.js +41 -0
- package/esm2015/tree/control/tree-control.js +2 -0
- package/esm2015/tree/data-source/flat-data-source.js +1 -1
- package/esm2015/tree/node.js +31 -0
- package/esm2015/tree/outlet.js +15 -0
- package/esm2015/tree/padding.directive.js +98 -25
- package/esm2015/tree/public-api.js +9 -2
- package/esm2015/tree/toggle.js +65 -70
- package/esm2015/tree/tree-base.js +243 -0
- package/esm2015/tree/tree-errors.js +36 -0
- package/esm2015/tree/tree-option.component.js +102 -56
- package/esm2015/tree/tree-selection.component.js +180 -115
- package/esm2015/tree/tree.js +23 -0
- package/esm2015/tree/tree.module.js +38 -12
- package/esm2015/tree-select/tree-select.component.js +153 -85
- package/esm2015/tree-select/tree-select.module.js +33 -18
- package/fesm2015/ptsecurity-mosaic-autocomplete.js +140 -102
- package/fesm2015/ptsecurity-mosaic-autocomplete.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-button-toggle.js +87 -63
- package/fesm2015/ptsecurity-mosaic-button-toggle.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-button.js +86 -76
- package/fesm2015/ptsecurity-mosaic-button.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-card.js +54 -42
- package/fesm2015/ptsecurity-mosaic-card.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-checkbox.js +82 -59
- package/fesm2015/ptsecurity-mosaic-checkbox.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-core.js +758 -239
- package/fesm2015/ptsecurity-mosaic-core.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-datepicker.js +544 -376
- package/fesm2015/ptsecurity-mosaic-datepicker.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-design-tokens.js +57 -16
- package/fesm2015/ptsecurity-mosaic-design-tokens.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-divider.js +34 -26
- package/fesm2015/ptsecurity-mosaic-divider.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-dropdown.js +219 -171
- package/fesm2015/ptsecurity-mosaic-dropdown.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-form-field.js +184 -119
- package/fesm2015/ptsecurity-mosaic-form-field.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-icon.js +56 -39
- package/fesm2015/ptsecurity-mosaic-icon.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-input.js +191 -116
- package/fesm2015/ptsecurity-mosaic-input.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-link.js +57 -45
- package/fesm2015/ptsecurity-mosaic-link.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-list.js +301 -177
- package/fesm2015/ptsecurity-mosaic-list.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-modal.js +243 -159
- package/fesm2015/ptsecurity-mosaic-modal.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-navbar.js +280 -205
- package/fesm2015/ptsecurity-mosaic-navbar.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-popover.js +297 -597
- package/fesm2015/ptsecurity-mosaic-popover.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-progress-bar.js +48 -38
- package/fesm2015/ptsecurity-mosaic-progress-bar.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-progress-spinner.js +48 -38
- package/fesm2015/ptsecurity-mosaic-progress-spinner.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-radio.js +99 -76
- package/fesm2015/ptsecurity-mosaic-radio.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-select.js +236 -136
- package/fesm2015/ptsecurity-mosaic-select.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-sidebar.js +85 -66
- package/fesm2015/ptsecurity-mosaic-sidebar.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-sidepanel.js +207 -139
- package/fesm2015/ptsecurity-mosaic-sidepanel.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-splitter.js +92 -82
- package/fesm2015/ptsecurity-mosaic-splitter.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-table.js +33 -19
- package/fesm2015/ptsecurity-mosaic-table.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-tabs.js +557 -387
- package/fesm2015/ptsecurity-mosaic-tabs.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-tags.js +273 -192
- package/fesm2015/ptsecurity-mosaic-tags.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-textarea.js +83 -50
- package/fesm2015/ptsecurity-mosaic-textarea.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-timepicker.js +87 -64
- package/fesm2015/ptsecurity-mosaic-timepicker.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-toggle.js +77 -55
- package/fesm2015/ptsecurity-mosaic-toggle.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-tooltip.js +293 -566
- package/fesm2015/ptsecurity-mosaic-tooltip.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-tree-select.js +188 -106
- package/fesm2015/ptsecurity-mosaic-tree-select.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-tree.js +1001 -279
- package/fesm2015/ptsecurity-mosaic-tree.js.map +1 -1
- package/form-field/cleaner.d.ts +5 -0
- package/form-field/form-field.d.ts +5 -0
- package/form-field/form-field.module.d.ts +12 -0
- package/form-field/hint.d.ts +3 -0
- package/form-field/package.json +0 -1
- package/form-field/prefix.d.ts +3 -0
- package/form-field/ptsecurity-mosaic-form-field.d.ts +1 -0
- package/form-field/stepper.d.ts +3 -0
- package/form-field/suffix.d.ts +3 -0
- package/icon/icon.component.d.ts +5 -0
- package/icon/icon.module.d.ts +8 -0
- package/icon/package.json +0 -1
- package/icon/ptsecurity-mosaic-icon.d.ts +1 -0
- package/input/input-number-validators.d.ts +7 -2
- package/input/input-number.d.ts +3 -0
- package/input/input.d.ts +5 -0
- package/input/input.module.d.ts +11 -0
- package/input/package.json +0 -1
- package/input/ptsecurity-mosaic-input.d.ts +1 -0
- package/link/link.component.d.ts +3 -0
- package/link/link.module.d.ts +7 -0
- package/link/package.json +0 -1
- package/link/ptsecurity-mosaic-link.d.ts +1 -0
- package/list/list-selection.component.d.ts +30 -3
- package/list/list.component.d.ts +5 -0
- package/list/list.module.d.ts +9 -0
- package/list/package.json +0 -1
- package/list/ptsecurity-mosaic-list.d.ts +1 -0
- package/modal/css-unit.pipe.d.ts +3 -0
- package/modal/modal-control.service.d.ts +3 -0
- package/modal/modal.component.d.ts +5 -0
- package/modal/modal.directive.d.ts +9 -0
- package/modal/modal.module.d.ts +12 -0
- package/modal/modal.service.d.ts +3 -0
- package/modal/package.json +0 -1
- package/modal/ptsecurity-mosaic-modal.d.ts +1 -2
- package/navbar/navbar-item.component.d.ts +13 -0
- package/navbar/navbar.component.d.ts +5 -0
- package/navbar/navbar.module.d.ts +11 -0
- package/navbar/package.json +0 -1
- package/navbar/ptsecurity-mosaic-navbar.d.ts +1 -1
- package/navbar/vertical-navbar.component.d.ts +5 -0
- package/package.json +8 -9
- package/popover/package.json +0 -1
- package/popover/popover-confirm.component.d.ts +33 -0
- package/popover/popover.component.d.ts +50 -136
- package/popover/popover.module.d.ts +9 -0
- package/popover/ptsecurity-mosaic-popover.d.ts +1 -0
- package/popover/public-api.d.ts +1 -0
- package/prebuilt-themes/dark-theme.css +1 -1
- package/prebuilt-themes/default-theme.css +1 -1
- package/prebuilt-visual/default-visual.css +1 -0
- package/progress-bar/package.json +0 -1
- package/progress-bar/progress-bar.component.d.ts +3 -0
- package/progress-bar/progress-bar.module.d.ts +7 -0
- package/progress-bar/ptsecurity-mosaic-progress-bar.d.ts +1 -0
- package/progress-spinner/package.json +0 -1
- package/progress-spinner/progress-spinner.component.d.ts +3 -0
- package/progress-spinner/progress-spinner.module.d.ts +7 -0
- package/progress-spinner/ptsecurity-mosaic-progress-spinner.d.ts +1 -0
- package/ptsecurity-mosaic.d.ts +1 -0
- package/radio/package.json +0 -1
- package/radio/ptsecurity-mosaic-radio.d.ts +1 -0
- package/radio/radio.component.d.ts +5 -0
- package/radio/radio.module.d.ts +8 -0
- package/schematics/ng-update/update-9.0.0/secondary-entry-points-migration.js +6 -3
- package/schematics/ng-update/update-9.0.0/secondary-entry-points-migration.js.map +1 -1
- package/select/package.json +0 -1
- package/select/ptsecurity-mosaic-select.d.ts +1 -0
- package/select/select.component.d.ts +11 -7
- package/select/select.module.d.ts +11 -0
- package/sidebar/package.json +0 -1
- package/sidebar/ptsecurity-mosaic-sidebar.d.ts +1 -1
- package/sidebar/sidebar.component.d.ts +7 -0
- package/sidebar/sidebar.module.d.ts +6 -0
- package/sidepanel/package.json +0 -1
- package/sidepanel/ptsecurity-mosaic-sidepanel.d.ts +1 -1
- package/sidepanel/sidepanel-container.component.d.ts +3 -0
- package/sidepanel/sidepanel-directives.d.ts +13 -0
- package/sidepanel/sidepanel.module.d.ts +13 -0
- package/sidepanel/sidepanel.service.d.ts +3 -0
- package/splitter/package.json +0 -1
- package/splitter/ptsecurity-mosaic-splitter.d.ts +1 -0
- package/splitter/splitter.component.d.ts +7 -0
- package/splitter/splitter.module.d.ts +7 -0
- package/table/package.json +0 -1
- package/table/ptsecurity-mosaic-table.d.ts +1 -0
- package/table/table.component.d.ts +3 -0
- package/table/table.module.d.ts +8 -0
- package/tabs/package.json +0 -1
- package/tabs/paginated-tab-header.d.ts +3 -0
- package/tabs/ptsecurity-mosaic-tabs.d.ts +1 -5
- package/tabs/tab-body.component.d.ts +5 -0
- package/tabs/tab-content.directive.d.ts +3 -0
- package/tabs/tab-group.component.d.ts +24 -4
- package/tabs/tab-header.component.d.ts +3 -0
- package/tabs/tab-label-wrapper.directive.d.ts +9 -0
- package/tabs/tab-label.directive.d.ts +3 -0
- package/tabs/tab-nav-bar/tab-nav-bar.d.ts +5 -0
- package/tabs/tab.component.d.ts +12 -3
- package/tabs/tabs.module.d.ts +18 -0
- package/tags/package.json +0 -1
- package/tags/ptsecurity-mosaic-tags.d.ts +1 -0
- package/tags/tag-input.d.ts +3 -0
- package/tags/tag-list.component.d.ts +3 -0
- package/tags/tag.component.d.ts +9 -0
- package/tags/tag.module.d.ts +9 -0
- package/textarea/package.json +0 -1
- package/textarea/ptsecurity-mosaic-textarea.d.ts +1 -0
- package/textarea/textarea.component.d.ts +3 -0
- package/textarea/textarea.module.d.ts +9 -0
- package/timepicker/package.json +0 -1
- package/timepicker/ptsecurity-mosaic-timepicker.d.ts +1 -0
- package/timepicker/timepicker.directive.d.ts +5 -2
- package/timepicker/timepicker.module.d.ts +9 -0
- package/toggle/package.json +0 -1
- package/toggle/ptsecurity-mosaic-toggle.d.ts +1 -0
- package/toggle/toggle.component.d.ts +3 -0
- package/toggle/toggle.module.d.ts +8 -0
- package/tooltip/package.json +0 -1
- package/tooltip/ptsecurity-mosaic-tooltip.d.ts +1 -0
- package/tooltip/tooltip.animations.d.ts +8 -0
- package/tooltip/tooltip.component.d.ts +74 -134
- package/tooltip/tooltip.module.d.ts +7 -0
- package/tree/control/base-tree-control.d.ts +40 -0
- package/tree/control/flat-tree-control.d.ts +48 -0
- package/tree/control/nested-tree-control.d.ts +19 -0
- package/tree/control/tree-control.d.ts +44 -0
- package/tree/data-source/flat-data-source.d.ts +2 -1
- package/tree/node.d.ts +34 -0
- package/tree/outlet.d.ts +9 -0
- package/tree/package.json +0 -1
- package/tree/padding.directive.d.ts +36 -5
- package/tree/ptsecurity-mosaic-tree.d.ts +1 -0
- package/tree/public-api.d.ts +8 -1
- package/tree/toggle.d.ts +20 -15
- package/tree/tree-base.d.ts +97 -0
- package/tree/tree-errors.d.ts +25 -0
- package/tree/tree-option.component.d.ts +15 -4
- package/tree/tree-selection.component.d.ts +46 -24
- package/tree/tree.d.ts +6 -0
- package/tree/tree.module.d.ts +14 -0
- package/tree-select/package.json +0 -1
- package/tree-select/ptsecurity-mosaic-tree-select.d.ts +1 -0
- package/tree-select/tree-select.component.d.ts +8 -8
- package/tree-select/tree-select.module.d.ts +11 -0
- package/autocomplete/ptsecurity-mosaic-autocomplete.metadata.json +0 -1
- package/bundles/ptsecurity-mosaic-autocomplete.umd.min.js +0 -2
- package/bundles/ptsecurity-mosaic-autocomplete.umd.min.js.map +0 -1
- package/bundles/ptsecurity-mosaic-button-toggle.umd.min.js +0 -16
- package/bundles/ptsecurity-mosaic-button-toggle.umd.min.js.map +0 -1
- package/bundles/ptsecurity-mosaic-button.umd.min.js +0 -16
- package/bundles/ptsecurity-mosaic-button.umd.min.js.map +0 -1
- package/bundles/ptsecurity-mosaic-card.umd.min.js +0 -16
- package/bundles/ptsecurity-mosaic-card.umd.min.js.map +0 -1
- package/bundles/ptsecurity-mosaic-checkbox.umd.min.js +0 -16
- package/bundles/ptsecurity-mosaic-checkbox.umd.min.js.map +0 -1
- package/bundles/ptsecurity-mosaic-core.umd.min.js +0 -17
- package/bundles/ptsecurity-mosaic-core.umd.min.js.map +0 -1
- package/bundles/ptsecurity-mosaic-datepicker.umd.min.js +0 -2
- package/bundles/ptsecurity-mosaic-datepicker.umd.min.js.map +0 -1
- package/bundles/ptsecurity-mosaic-design-tokens.umd.min.js +0 -2
- package/bundles/ptsecurity-mosaic-design-tokens.umd.min.js.map +0 -1
- package/bundles/ptsecurity-mosaic-divider.umd.min.js +0 -2
- package/bundles/ptsecurity-mosaic-divider.umd.min.js.map +0 -1
- package/bundles/ptsecurity-mosaic-dropdown.umd.min.js +0 -17
- package/bundles/ptsecurity-mosaic-dropdown.umd.min.js.map +0 -1
- package/bundles/ptsecurity-mosaic-form-field.umd.min.js +0 -17
- package/bundles/ptsecurity-mosaic-form-field.umd.min.js.map +0 -1
- package/bundles/ptsecurity-mosaic-icon.umd.min.js +0 -16
- package/bundles/ptsecurity-mosaic-icon.umd.min.js.map +0 -1
- package/bundles/ptsecurity-mosaic-input.umd.min.js +0 -16
- package/bundles/ptsecurity-mosaic-input.umd.min.js.map +0 -1
- package/bundles/ptsecurity-mosaic-link.umd.min.js +0 -16
- package/bundles/ptsecurity-mosaic-link.umd.min.js.map +0 -1
- package/bundles/ptsecurity-mosaic-list.umd.min.js +0 -16
- package/bundles/ptsecurity-mosaic-list.umd.min.js.map +0 -1
- package/bundles/ptsecurity-mosaic-modal.umd.min.js +0 -16
- package/bundles/ptsecurity-mosaic-modal.umd.min.js.map +0 -1
- package/bundles/ptsecurity-mosaic-navbar.umd.min.js +0 -16
- package/bundles/ptsecurity-mosaic-navbar.umd.min.js.map +0 -1
- package/bundles/ptsecurity-mosaic-popover.umd.min.js +0 -16
- package/bundles/ptsecurity-mosaic-popover.umd.min.js.map +0 -1
- package/bundles/ptsecurity-mosaic-progress-bar.umd.min.js +0 -16
- package/bundles/ptsecurity-mosaic-progress-bar.umd.min.js.map +0 -1
- package/bundles/ptsecurity-mosaic-progress-spinner.umd.min.js +0 -16
- package/bundles/ptsecurity-mosaic-progress-spinner.umd.min.js.map +0 -1
- package/bundles/ptsecurity-mosaic-radio.umd.min.js +0 -16
- package/bundles/ptsecurity-mosaic-radio.umd.min.js.map +0 -1
- package/bundles/ptsecurity-mosaic-select.umd.min.js +0 -16
- package/bundles/ptsecurity-mosaic-select.umd.min.js.map +0 -1
- package/bundles/ptsecurity-mosaic-sidebar.umd.min.js +0 -2
- package/bundles/ptsecurity-mosaic-sidebar.umd.min.js.map +0 -1
- package/bundles/ptsecurity-mosaic-sidepanel.umd.min.js +0 -2
- package/bundles/ptsecurity-mosaic-sidepanel.umd.min.js.map +0 -1
- package/bundles/ptsecurity-mosaic-splitter.umd.min.js +0 -2
- package/bundles/ptsecurity-mosaic-splitter.umd.min.js.map +0 -1
- package/bundles/ptsecurity-mosaic-table.umd.min.js +0 -2
- package/bundles/ptsecurity-mosaic-table.umd.min.js.map +0 -1
- package/bundles/ptsecurity-mosaic-tabs.umd.min.js +0 -16
- package/bundles/ptsecurity-mosaic-tabs.umd.min.js.map +0 -1
- package/bundles/ptsecurity-mosaic-tags.umd.min.js +0 -16
- package/bundles/ptsecurity-mosaic-tags.umd.min.js.map +0 -1
- package/bundles/ptsecurity-mosaic-textarea.umd.min.js +0 -16
- package/bundles/ptsecurity-mosaic-textarea.umd.min.js.map +0 -1
- package/bundles/ptsecurity-mosaic-timepicker.umd.min.js +0 -2
- package/bundles/ptsecurity-mosaic-timepicker.umd.min.js.map +0 -1
- package/bundles/ptsecurity-mosaic-toggle.umd.min.js +0 -16
- package/bundles/ptsecurity-mosaic-toggle.umd.min.js.map +0 -1
- package/bundles/ptsecurity-mosaic-tooltip.umd.min.js +0 -16
- package/bundles/ptsecurity-mosaic-tooltip.umd.min.js.map +0 -1
- package/bundles/ptsecurity-mosaic-tree-select.umd.min.js +0 -16
- package/bundles/ptsecurity-mosaic-tree-select.umd.min.js.map +0 -1
- package/bundles/ptsecurity-mosaic-tree.umd.min.js +0 -16
- package/bundles/ptsecurity-mosaic-tree.umd.min.js.map +0 -1
- package/bundles/ptsecurity-mosaic.umd.min.js +0 -2
- package/bundles/ptsecurity-mosaic.umd.min.js.map +0 -1
- package/button/ptsecurity-mosaic-button.metadata.json +0 -1
- package/button-toggle/ptsecurity-mosaic-button-toggle.metadata.json +0 -1
- package/card/ptsecurity-mosaic-card.metadata.json +0 -1
- package/checkbox/ptsecurity-mosaic-checkbox.metadata.json +0 -1
- package/core/ptsecurity-mosaic-core.metadata.json +0 -1
- package/datepicker/ptsecurity-mosaic-datepicker.metadata.json +0 -1
- package/design-tokens/ptsecurity-mosaic-design-tokens.metadata.json +0 -1
- package/divider/ptsecurity-mosaic-divider.metadata.json +0 -1
- package/dropdown/ptsecurity-mosaic-dropdown.metadata.json +0 -1
- package/esm2015/tree/node.directive.js +0 -15
- package/form-field/ptsecurity-mosaic-form-field.metadata.json +0 -1
- package/icon/ptsecurity-mosaic-icon.metadata.json +0 -1
- package/input/ptsecurity-mosaic-input.metadata.json +0 -1
- package/link/ptsecurity-mosaic-link.metadata.json +0 -1
- package/list/ptsecurity-mosaic-list.metadata.json +0 -1
- package/modal/ptsecurity-mosaic-modal.metadata.json +0 -1
- package/navbar/ptsecurity-mosaic-navbar.metadata.json +0 -1
- package/popover/ptsecurity-mosaic-popover.metadata.json +0 -1
- package/progress-bar/ptsecurity-mosaic-progress-bar.metadata.json +0 -1
- package/progress-spinner/ptsecurity-mosaic-progress-spinner.metadata.json +0 -1
- package/ptsecurity-mosaic.metadata.json +0 -1
- package/radio/ptsecurity-mosaic-radio.metadata.json +0 -1
- package/select/ptsecurity-mosaic-select.metadata.json +0 -1
- package/sidebar/ptsecurity-mosaic-sidebar.metadata.json +0 -1
- package/sidepanel/ptsecurity-mosaic-sidepanel.metadata.json +0 -1
- package/splitter/ptsecurity-mosaic-splitter.metadata.json +0 -1
- package/table/ptsecurity-mosaic-table.metadata.json +0 -1
- package/tabs/ptsecurity-mosaic-tabs.metadata.json +0 -1
- package/tags/ptsecurity-mosaic-tags.metadata.json +0 -1
- package/textarea/ptsecurity-mosaic-textarea.metadata.json +0 -1
- package/timepicker/ptsecurity-mosaic-timepicker.metadata.json +0 -1
- package/toggle/ptsecurity-mosaic-toggle.metadata.json +0 -1
- package/tooltip/ptsecurity-mosaic-tooltip.metadata.json +0 -1
- package/tree/node.directive.d.ts +0 -4
- package/tree/ptsecurity-mosaic-tree.metadata.json +0 -1
- package/tree-select/ptsecurity-mosaic-tree-select.metadata.json +0 -1
@@ -1,173 +1,62 @@
|
|
1
1
|
import { Directionality } from '@angular/cdk/bidi';
|
2
2
|
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
3
3
|
import { Overlay, ScrollDispatcher } from '@angular/cdk/overlay';
|
4
|
-
import {
|
5
|
-
import {
|
6
|
-
import {
|
7
|
-
import {
|
8
|
-
import
|
9
|
-
import
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
4
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Directive, ElementRef, EventEmitter, Inject, InjectionToken, Input, NgZone, Optional, Output, ViewContainerRef, ViewEncapsulation } from '@angular/core';
|
5
|
+
import { McPopUp, McPopUpTrigger, PopUpPlacements, PopUpTriggers, POSITION_TO_CSS_MAP } from '@ptsecurity/mosaic/core';
|
6
|
+
import { merge } from 'rxjs';
|
7
|
+
import { mcTooltipAnimations } from './tooltip.animations';
|
8
|
+
import * as i0 from "@angular/core";
|
9
|
+
import * as i1 from "@angular/common";
|
10
|
+
import * as i2 from "@angular/cdk/overlay";
|
11
|
+
import * as i3 from "@angular/cdk/bidi";
|
12
|
+
export var TooltipModifier;
|
13
|
+
(function (TooltipModifier) {
|
14
|
+
TooltipModifier["Default"] = "default";
|
15
|
+
TooltipModifier["Warning"] = "warning";
|
16
|
+
TooltipModifier["Extended"] = "extended";
|
17
|
+
})(TooltipModifier || (TooltipModifier = {}));
|
18
|
+
export const MC_TOOLTIP_OPEN_TIME = new InjectionToken('mc-tooltip-open-time');
|
19
|
+
/** @docs-private */
|
20
|
+
export const MC_TOOLTIP_OPEN_TIME_PROVIDER = {
|
21
|
+
provide: MC_TOOLTIP_OPEN_TIME,
|
22
|
+
useValue: { value: 0 }
|
17
23
|
};
|
18
|
-
export
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
this.
|
23
|
-
this.
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
this.
|
28
|
-
this.
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
this.availablePositions = POSITION_MAP;
|
34
|
-
this.$visible = this._mcVisible.asObservable();
|
35
|
-
}
|
36
|
-
get mcTitle() {
|
37
|
-
return this._mcTitle;
|
38
|
-
}
|
39
|
-
set mcTitle(value) {
|
40
|
-
this._mcTitle = value;
|
41
|
-
}
|
42
|
-
get mcTrigger() {
|
43
|
-
return this._mcTrigger;
|
44
|
-
}
|
45
|
-
set mcTrigger(value) {
|
46
|
-
this._mcTrigger = value;
|
47
|
-
}
|
48
|
-
get mcPlacement() {
|
49
|
-
return this._mcPlacement;
|
50
|
-
}
|
51
|
-
set mcPlacement(value) {
|
52
|
-
if (value !== this._mcPlacement) {
|
53
|
-
this._mcPlacement = value;
|
54
|
-
this.positions.unshift(POSITION_MAP[this.mcPlacement]);
|
55
|
-
}
|
56
|
-
else if (!value) {
|
57
|
-
this._mcPlacement = 'top';
|
58
|
-
}
|
59
|
-
}
|
60
|
-
get mcTooltipClass() {
|
61
|
-
return this._mcTooltipClass;
|
62
|
-
}
|
63
|
-
set mcTooltipClass(value) {
|
64
|
-
this._mcTooltipClass = value;
|
65
|
-
}
|
66
|
-
get mcVisible() {
|
67
|
-
return this._mcVisible.value;
|
68
|
-
}
|
69
|
-
set mcVisible(value) {
|
70
|
-
const visible = coerceBooleanProperty(value);
|
71
|
-
if (visible && this._mcVisible.value !== visible) {
|
72
|
-
this.show();
|
73
|
-
}
|
74
|
-
else {
|
75
|
-
this.hide();
|
76
|
-
}
|
77
|
-
}
|
78
|
-
get mcArrowPlacement() {
|
79
|
-
return this._mcArrowPlacement;
|
80
|
-
}
|
81
|
-
set mcArrowPlacement(value) {
|
82
|
-
this._mcArrowPlacement = value;
|
83
|
-
}
|
84
|
-
show() {
|
85
|
-
if (this.hideTid) {
|
86
|
-
clearTimeout(this.hideTid);
|
87
|
-
}
|
88
|
-
if (!this.isContentEmpty()) {
|
89
|
-
if (this.mcTrigger !== 'manual') {
|
90
|
-
this.closeOnInteraction = true;
|
91
|
-
}
|
92
|
-
this.showTid = setTimeout(() => {
|
93
|
-
this._mcVisible.next(true);
|
94
|
-
this.mcVisibleChange.emit(true);
|
95
|
-
// Mark for check so if any parent component has set the
|
96
|
-
// ChangeDetectionStrategy to OnPush it will be checked anyways
|
97
|
-
this.markForCheck();
|
98
|
-
}, this.mcMouseEnterDelay);
|
99
|
-
}
|
100
|
-
}
|
101
|
-
hide() {
|
102
|
-
if (this.showTid) {
|
103
|
-
clearTimeout(this.showTid);
|
104
|
-
}
|
105
|
-
this.hideTid = setTimeout(() => {
|
106
|
-
this._mcVisible.next(false);
|
107
|
-
this.mcVisibleChange.emit(false);
|
108
|
-
this.onHideSubject.next();
|
109
|
-
// Mark for check so if any parent component has set the
|
110
|
-
// ChangeDetectionStrategy to OnPush it will be checked anyways
|
111
|
-
this.markForCheck();
|
112
|
-
}, this.mcMouseLeaveDelay);
|
113
|
-
}
|
114
|
-
setClassMap() {
|
115
|
-
this.classMap = {
|
116
|
-
[`${this.prefix}-${this.mcPlacement}`]: true,
|
117
|
-
[this.mcTooltipClass]: true
|
24
|
+
export const MIN_TIME_FOR_DELAY = 2000;
|
25
|
+
export class McTooltipComponent extends McPopUp {
|
26
|
+
constructor(changeDetectorRef, openTime) {
|
27
|
+
super(changeDetectorRef);
|
28
|
+
this.openTime = openTime;
|
29
|
+
this.prefix = 'mc-tooltip';
|
30
|
+
}
|
31
|
+
show(delay) {
|
32
|
+
// tslint:disable-next-line:no-magic-numbers
|
33
|
+
super.show(Date.now() - this.openTime.value < MIN_TIME_FOR_DELAY ? 0 : delay);
|
34
|
+
this.openTime.value = Date.now();
|
35
|
+
}
|
36
|
+
updateClassMap(placement, customClass, { modifier }) {
|
37
|
+
const classMap = {
|
38
|
+
[`${this.prefix}_${modifier}`]: true
|
118
39
|
};
|
119
|
-
|
120
|
-
isContentEmpty() {
|
121
|
-
return this.isTitleString ? (this.mcTitle === '' || !this.mcTitle) : false;
|
122
|
-
}
|
123
|
-
/** Returns an observable that notifies when the tooltip has been hidden from view. */
|
124
|
-
afterHidden() {
|
125
|
-
return this.onHideSubject.asObservable();
|
126
|
-
}
|
127
|
-
markForCheck() {
|
128
|
-
this.cdr.markForCheck();
|
129
|
-
}
|
130
|
-
handleBodyInteraction() {
|
131
|
-
if (this.closeOnInteraction) {
|
132
|
-
this.hide();
|
133
|
-
}
|
134
|
-
}
|
135
|
-
get isTemplateRef() {
|
136
|
-
return this.mcTitle instanceof TemplateRef;
|
137
|
-
}
|
138
|
-
get isNonEmptyString() {
|
139
|
-
return (typeof this.mcTitle === 'string' || typeof this.mcTitle === 'number') && this._mcTitle !== '';
|
40
|
+
super.updateClassMap(placement, customClass, classMap);
|
140
41
|
}
|
141
42
|
}
|
142
|
-
McTooltipComponent
|
143
|
-
{ type:
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
]
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
];
|
160
|
-
McTooltipComponent.propDecorators = {
|
161
|
-
mcVisibleChange: [{ type: Output }],
|
162
|
-
mcMouseEnterDelay: [{ type: Input }],
|
163
|
-
mcMouseLeaveDelay: [{ type: Input }],
|
164
|
-
mcTitle: [{ type: Input }],
|
165
|
-
mcTrigger: [{ type: Input }],
|
166
|
-
mcPlacement: [{ type: Input }],
|
167
|
-
mcTooltipClass: [{ type: Input }],
|
168
|
-
mcVisible: [{ type: Input }],
|
169
|
-
mcArrowPlacement: [{ type: Input }]
|
170
|
-
};
|
43
|
+
/** @nocollapse */ McTooltipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: McTooltipComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: MC_TOOLTIP_OPEN_TIME }], target: i0.ɵɵFactoryTarget.Component });
|
44
|
+
/** @nocollapse */ McTooltipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: McTooltipComponent, selector: "mc-tooltip-component", providers: [MC_TOOLTIP_OPEN_TIME_PROVIDER], usesInheritance: true, ngImport: i0, template: "<div class=\"mc-tooltip\"\n [ngClass]=\"classMap\"\n [@state]=\"visibility\"\n (@state.start)=\"animationStart()\"\n (@state.done)=\"animationDone($event)\">\n\n <div class=\"mc-tooltip__inner\">\n <div class=\"mc-tooltip__arrow\"></div>\n\n <div class=\"mc-tooltip__header\" *ngIf=\"header\">\n <ng-container *ngIf=\"isTemplateRef(header)\" [ngTemplateOutlet]=\"$any(header)\"></ng-container>\n <ng-container *ngIf=\"!isTemplateRef(header)\">\n <div>{{ header }}</div>\n </ng-container>\n </div>\n <div class=\"mc-tooltip__content\">\n <ng-container *ngIf=\"isTemplateRef(content)\" [ngTemplateOutlet]=\"$any(content)\"></ng-container>\n <ng-container *ngIf=\"!isTemplateRef(content)\">\n <div>{{ content }}</div>\n </ng-container>\n </div>\n </div>\n</div>\n", styles: [".mc-tooltip__inner{border-radius:3px;border-radius:var(--mc-tooltip-size-border-radius, 3px)}.mc-tooltip{box-sizing:border-box;border-radius:3px;border-radius:var(--mc-tooltip-size-border-radius, 3px);z-index:1060;white-space:pre-line}.mc-tooltip.mc-tooltip_placement-top,.mc-tooltip.mc-tooltip_placement-top-left,.mc-tooltip.mc-tooltip_placement-top-right{margin-bottom:calc(9px);margin-bottom:calc(var(--mc-tooltip-size-trigger-margin, 9px))}.mc-tooltip.mc-tooltip_placement-right,.mc-tooltip.mc-tooltip_placement-right-top,.mc-tooltip.mc-tooltip_placement-right-bottom{margin-left:calc(9px);margin-left:calc(var(--mc-tooltip-size-trigger-margin, 9px))}.mc-tooltip.mc-tooltip_placement-bottom,.mc-tooltip.mc-tooltip_placement-bottom-left,.mc-tooltip.mc-tooltip_placement-bottom-right{margin-top:calc(9px);margin-top:calc(var(--mc-tooltip-size-trigger-margin, 9px))}.mc-tooltip.mc-tooltip_placement-left,.mc-tooltip.mc-tooltip_placement-left-top,.mc-tooltip.mc-tooltip_placement-left-bottom{margin-right:calc(9px);margin-right:calc(var(--mc-tooltip-size-trigger-margin, 9px))}.mc-tooltip.mc-tooltip_default,.mc-tooltip.mc-tooltip_warning{max-width:300px;max-width:var(--mc-tooltip-size-max-width, 300px)}.mc-tooltip.mc-tooltip_default .mc-tooltip__inner,.mc-tooltip.mc-tooltip_warning .mc-tooltip__inner{padding:8px 16px;padding:var(--mc-tooltip-size-padding, 8px 16px)}.mc-tooltip.mc-tooltip_extended{max-height:480px;max-height:var(--mc-extended-tooltip-size-max-height, 480px)}.mc-tooltip.mc-tooltip_extended .mc-tooltip__header{height:40px;height:var(--mc-extended-tooltip-header-size-height, 40px);padding:10px 16px;padding:var(--mc-extended-tooltip-header-size-padding, 10px 16px);border-top-left-radius:3px;border-top-left-radius:var(--mc-tooltip-size-border-radius, 3px);border-top-right-radius:3px;border-top-right-radius:var(--mc-tooltip-size-border-radius, 3px)}.mc-tooltip.mc-tooltip_extended .mc-tooltip__content{padding:8px 16px;padding:var(--mc-extended-tooltip-size-padding, 8px 16px)}.mc-tooltip__arrow{position:absolute;width:12px;width:var(--mc-tooltip-size-arrow-size, 12px);height:12px;height:var(--mc-tooltip-size-arrow-size, 12px);transform:rotate(45deg)}.mc-tooltip_placement-top .mc-tooltip__arrow{bottom:calc((12px - 1px) / -2);bottom:calc((var(--mc-tooltip-size-arrow-size, 12px) - 1px) / -2);left:50%;margin-left:calc((12px - 1px) / -2);margin-left:calc((var(--mc-tooltip-size-arrow-size, 12px) - 1px) / -2)}.mc-tooltip_placement-top-left .mc-tooltip__arrow{bottom:calc((12px - 1px) / -2);bottom:calc((var(--mc-tooltip-size-arrow-size, 12px) - 1px) / -2);left:calc(18px - 9px / 2);left:calc(18px - var(--mc-tooltip-size-trigger-margin, 9px) / 2)}.mc-tooltip_placement-top-right .mc-tooltip__arrow{bottom:calc((12px - 1px) / -2);bottom:calc((var(--mc-tooltip-size-arrow-size, 12px) - 1px) / -2);right:calc(18px - 9px / 2);right:calc(18px - var(--mc-tooltip-size-trigger-margin, 9px) / 2)}.mc-tooltip_placement-right .mc-tooltip__arrow{left:calc((12px - 1px) / -2);left:calc((var(--mc-tooltip-size-arrow-size, 12px) - 1px) / -2);top:50%;margin-top:calc((12px - 1px) / -2);margin-top:calc((var(--mc-tooltip-size-arrow-size, 12px) - 1px) / -2)}.mc-tooltip_placement-right-top .mc-tooltip__arrow{left:calc((12px - 1px) / -2);left:calc((var(--mc-tooltip-size-arrow-size, 12px) - 1px) / -2);top:calc(18px - 9px / 2);top:calc(18px - var(--mc-tooltip-size-trigger-margin, 9px) / 2)}.mc-tooltip_placement-right-bottom .mc-tooltip__arrow{left:calc((12px - 1px) / -2);left:calc((var(--mc-tooltip-size-arrow-size, 12px) - 1px) / -2);bottom:calc(18px - 9px / 2);bottom:calc(18px - var(--mc-tooltip-size-trigger-margin, 9px) / 2)}.mc-tooltip_placement-left .mc-tooltip__arrow{right:calc((12px - 1px) / -2);right:calc((var(--mc-tooltip-size-arrow-size, 12px) - 1px) / -2);top:50%;margin-top:calc((12px - 1px) / -2);margin-top:calc((var(--mc-tooltip-size-arrow-size, 12px) - 1px) / -2)}.mc-tooltip_placement-left-top .mc-tooltip__arrow{right:calc((12px - 1px) / -2);right:calc((var(--mc-tooltip-size-arrow-size, 12px) - 1px) / -2);top:calc(18px - 9px / 2);top:calc(18px - var(--mc-tooltip-size-trigger-margin, 9px) / 2)}.mc-tooltip_placement-left-bottom .mc-tooltip__arrow{right:calc((12px - 1px) / -2);right:calc((var(--mc-tooltip-size-arrow-size, 12px) - 1px) / -2);bottom:calc(18px - 9px / 2);bottom:calc(18px - var(--mc-tooltip-size-trigger-margin, 9px) / 2)}.mc-tooltip_placement-bottom .mc-tooltip__arrow{top:calc((12px - 1px) / -2);top:calc((var(--mc-tooltip-size-arrow-size, 12px) - 1px) / -2);left:50%;margin-left:calc((12px - 1px) / -2);margin-left:calc((var(--mc-tooltip-size-arrow-size, 12px) - 1px) / -2)}.mc-tooltip_placement-bottom-left .mc-tooltip__arrow{top:calc((12px - 1px) / -2);top:calc((var(--mc-tooltip-size-arrow-size, 12px) - 1px) / -2);left:calc(18px - 9px / 2);left:calc(18px - var(--mc-tooltip-size-trigger-margin, 9px) / 2)}.mc-tooltip_placement-bottom-right .mc-tooltip__arrow{top:calc((12px - 1px) / -2);top:calc((var(--mc-tooltip-size-arrow-size, 12px) - 1px) / -2);right:calc(18px - 9px / 2);right:calc(18px - var(--mc-tooltip-size-trigger-margin, 9px) / 2)}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], animations: [mcTooltipAnimations.tooltipState], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
45
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: McTooltipComponent, decorators: [{
|
46
|
+
type: Component,
|
47
|
+
args: [{
|
48
|
+
selector: 'mc-tooltip-component',
|
49
|
+
animations: [mcTooltipAnimations.tooltipState],
|
50
|
+
templateUrl: './tooltip.component.html',
|
51
|
+
styleUrls: ['./tooltip.scss'],
|
52
|
+
encapsulation: ViewEncapsulation.None,
|
53
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
54
|
+
providers: [MC_TOOLTIP_OPEN_TIME_PROVIDER]
|
55
|
+
}]
|
56
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
|
57
|
+
type: Inject,
|
58
|
+
args: [MC_TOOLTIP_OPEN_TIME]
|
59
|
+
}] }]; } });
|
171
60
|
export const MC_TOOLTIP_SCROLL_STRATEGY = new InjectionToken('mc-tooltip-scroll-strategy');
|
172
61
|
/** @docs-private */
|
173
62
|
export function mcTooltipScrollStrategyFactory(overlay) {
|
@@ -179,437 +68,232 @@ export const MC_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER = {
|
|
179
68
|
deps: [Overlay],
|
180
69
|
useFactory: mcTooltipScrollStrategyFactory
|
181
70
|
};
|
182
|
-
|
183
|
-
export function getMcTooltipInvalidPositionError(position) {
|
184
|
-
return Error(`McTooltip position "${position}" is invalid.`);
|
185
|
-
}
|
186
|
-
const VIEWPORT_MARGIN = 8;
|
187
|
-
export class McTooltip {
|
71
|
+
export class McTooltipTrigger extends McPopUpTrigger {
|
188
72
|
constructor(overlay, elementRef, ngZone, scrollDispatcher, hostView, scrollStrategy, direction) {
|
189
|
-
|
190
|
-
this.
|
191
|
-
this.
|
192
|
-
this.
|
193
|
-
this.
|
194
|
-
this.
|
195
|
-
this.
|
196
|
-
this.
|
197
|
-
|
198
|
-
|
199
|
-
this.
|
200
|
-
this.$unsubscribe = new Subject();
|
201
|
-
this._disabled = false;
|
202
|
-
this._mcTrigger = 'hover';
|
203
|
-
this._mcPlacement = 'top';
|
204
|
-
this.manualListeners = new Map();
|
205
|
-
this.destroyed = new Subject();
|
206
|
-
this.availablePositions = POSITION_MAP;
|
73
|
+
super(overlay, elementRef, ngZone, scrollDispatcher, hostView, scrollStrategy, direction);
|
74
|
+
this.enterDelay = 400;
|
75
|
+
this.leaveDelay = 0;
|
76
|
+
this._trigger = `${PopUpTriggers.Hover}, ${PopUpTriggers.Focus}`;
|
77
|
+
this.placementChange = new EventEmitter();
|
78
|
+
this.visibleChange = new EventEmitter();
|
79
|
+
this.originSelector = '.mc-tooltip';
|
80
|
+
this.overlayConfig = {
|
81
|
+
panelClass: 'mc-tooltip-panel'
|
82
|
+
};
|
83
|
+
this.modifier = TooltipModifier.Default;
|
207
84
|
}
|
208
|
-
get
|
209
|
-
return this.
|
85
|
+
get tooltipVisible() {
|
86
|
+
return this.visible;
|
210
87
|
}
|
211
|
-
set
|
212
|
-
|
213
|
-
this.updateCompValue('mcTitle', title);
|
88
|
+
set tooltipVisible(value) {
|
89
|
+
super.updateVisible(value);
|
214
90
|
}
|
215
|
-
|
216
|
-
this.
|
91
|
+
get tooltipPlacement() {
|
92
|
+
return this.placement;
|
217
93
|
}
|
218
|
-
|
219
|
-
|
220
|
-
}
|
221
|
-
set disabled(value) {
|
222
|
-
this._disabled = coerceBooleanProperty(value);
|
223
|
-
this.updateCompValue('mcTooltipDisabled', value);
|
94
|
+
set tooltipPlacement(value) {
|
95
|
+
super.updatePlacement(value);
|
224
96
|
}
|
225
|
-
get
|
226
|
-
return this.
|
97
|
+
get tooltipPlacementPriority() {
|
98
|
+
return this.placementPriority;
|
227
99
|
}
|
228
|
-
set
|
229
|
-
|
230
|
-
this.updateCompValue('mcMouseEnterDelay', value);
|
100
|
+
set tooltipPlacementPriority(value) {
|
101
|
+
super.updatePlacementPriority(value);
|
231
102
|
}
|
232
|
-
get
|
233
|
-
return this.
|
103
|
+
get content() {
|
104
|
+
return this._content;
|
234
105
|
}
|
235
|
-
set
|
236
|
-
this.
|
237
|
-
this.
|
106
|
+
set content(content) {
|
107
|
+
this._content = content;
|
108
|
+
this.updateData();
|
238
109
|
}
|
239
|
-
get
|
240
|
-
return this.
|
110
|
+
get disabled() {
|
111
|
+
return this._disabled;
|
241
112
|
}
|
242
|
-
set
|
243
|
-
|
244
|
-
this._mcTrigger = value;
|
245
|
-
this.updateCompValue('mcTrigger', value);
|
246
|
-
}
|
247
|
-
else {
|
248
|
-
this._mcTrigger = 'hover';
|
249
|
-
}
|
113
|
+
set disabled(value) {
|
114
|
+
this._disabled = coerceBooleanProperty(value);
|
250
115
|
}
|
251
|
-
get
|
252
|
-
return this.
|
116
|
+
get trigger() {
|
117
|
+
return this._trigger;
|
253
118
|
}
|
254
|
-
set
|
119
|
+
set trigger(value) {
|
255
120
|
if (value) {
|
256
|
-
this.
|
257
|
-
this.updateCompValue('mcPlacement', value);
|
121
|
+
this._trigger = value;
|
258
122
|
}
|
259
123
|
else {
|
260
|
-
this.
|
261
|
-
}
|
262
|
-
if (this.mcVisible) {
|
263
|
-
this.updatePosition();
|
124
|
+
this._trigger = `${PopUpTriggers.Hover}, ${PopUpTriggers.Focus}`;
|
264
125
|
}
|
126
|
+
this.initListeners();
|
265
127
|
}
|
266
|
-
get
|
267
|
-
return this.
|
128
|
+
get customClass() {
|
129
|
+
return this._customClass;
|
268
130
|
}
|
269
|
-
set
|
131
|
+
set customClass(value) {
|
270
132
|
if (value) {
|
271
|
-
this.
|
272
|
-
this.
|
133
|
+
this._customClass = value;
|
134
|
+
this.updateClassMap();
|
273
135
|
}
|
274
136
|
else {
|
275
|
-
this.
|
137
|
+
this._customClass = '';
|
276
138
|
}
|
277
139
|
}
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
set mcVisible(externalValue) {
|
282
|
-
const value = coerceBooleanProperty(externalValue);
|
283
|
-
if (this._mcVisible !== value) {
|
284
|
-
this._mcVisible = value;
|
285
|
-
this.updateCompValue('mcVisible', value);
|
286
|
-
if (value) {
|
287
|
-
this.show();
|
288
|
-
}
|
289
|
-
else {
|
290
|
-
this.hide();
|
291
|
-
}
|
140
|
+
updateData() {
|
141
|
+
if (!this.instance) {
|
142
|
+
return;
|
292
143
|
}
|
144
|
+
this.instance.content = this.content;
|
293
145
|
}
|
294
|
-
|
295
|
-
return this.
|
296
|
-
}
|
297
|
-
set mcArrowPlacement(value) {
|
298
|
-
this._mcArrowPlacement = value;
|
146
|
+
closingActions() {
|
147
|
+
return merge(this.overlayRef.outsidePointerEvents(), this.overlayRef.detachments());
|
299
148
|
}
|
300
|
-
|
301
|
-
|
149
|
+
getOverlayHandleComponentType() {
|
150
|
+
return McTooltipComponent;
|
302
151
|
}
|
303
|
-
|
304
|
-
if (this.
|
305
|
-
|
152
|
+
updateClassMap(newPlacement = this.placement) {
|
153
|
+
if (!this.instance) {
|
154
|
+
return;
|
306
155
|
}
|
307
|
-
this.
|
308
|
-
|
309
|
-
});
|
310
|
-
this.manualListeners.clear();
|
311
|
-
this.$unsubscribe.next();
|
312
|
-
this.$unsubscribe.complete();
|
156
|
+
this.instance.updateClassMap(POSITION_TO_CSS_MAP[newPlacement], this.customClass, { modifier: this.modifier });
|
157
|
+
this.instance.markForCheck();
|
313
158
|
}
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
159
|
+
}
|
160
|
+
/** @nocollapse */ McTooltipTrigger.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: McTooltipTrigger, deps: [{ token: i2.Overlay }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i2.ScrollDispatcher }, { token: i0.ViewContainerRef }, { token: MC_TOOLTIP_SCROLL_STRATEGY }, { token: i3.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
161
|
+
/** @nocollapse */ McTooltipTrigger.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.13", type: McTooltipTrigger, selector: "[mcTooltip]", inputs: { tooltipVisible: ["mcVisible", "tooltipVisible"], tooltipPlacement: ["mcPlacement", "tooltipPlacement"], tooltipPlacementPriority: ["mcPlacementPriority", "tooltipPlacementPriority"], content: ["mcTooltip", "content"], disabled: ["mcTooltipDisabled", "disabled"], enterDelay: ["mcEnterDelay", "enterDelay"], leaveDelay: ["mcLeaveDelay", "leaveDelay"], trigger: ["mcTrigger", "trigger"], customClass: ["mcTooltipClass", "customClass"] }, outputs: { placementChange: "mcPlacementChange", visibleChange: "mcVisibleChange" }, host: { listeners: { "keydown": "handleKeydown($event)", "touchend": "handleTouchend()" }, properties: { "class.mc-tooltip_open": "isOpen" } }, exportAs: ["mcTooltip"], usesInheritance: true, ngImport: i0 });
|
162
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: McTooltipTrigger, decorators: [{
|
163
|
+
type: Directive,
|
164
|
+
args: [{
|
165
|
+
selector: '[mcTooltip]',
|
166
|
+
exportAs: 'mcTooltip',
|
167
|
+
host: {
|
168
|
+
'[class.mc-tooltip_open]': 'isOpen',
|
169
|
+
'(keydown)': 'handleKeydown($event)',
|
170
|
+
'(touchend)': 'handleTouchend()'
|
171
|
+
}
|
172
|
+
}]
|
173
|
+
}], ctorParameters: function () { return [{ type: i2.Overlay }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i2.ScrollDispatcher }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{
|
174
|
+
type: Inject,
|
175
|
+
args: [MC_TOOLTIP_SCROLL_STRATEGY]
|
176
|
+
}] }, { type: i3.Directionality, decorators: [{
|
177
|
+
type: Optional
|
178
|
+
}] }]; }, propDecorators: { tooltipVisible: [{
|
179
|
+
type: Input,
|
180
|
+
args: ['mcVisible']
|
181
|
+
}], tooltipPlacement: [{
|
182
|
+
type: Input,
|
183
|
+
args: ['mcPlacement']
|
184
|
+
}], tooltipPlacementPriority: [{
|
185
|
+
type: Input,
|
186
|
+
args: ['mcPlacementPriority']
|
187
|
+
}], content: [{
|
188
|
+
type: Input,
|
189
|
+
args: ['mcTooltip']
|
190
|
+
}], disabled: [{
|
191
|
+
type: Input,
|
192
|
+
args: ['mcTooltipDisabled']
|
193
|
+
}], enterDelay: [{
|
194
|
+
type: Input,
|
195
|
+
args: ['mcEnterDelay']
|
196
|
+
}], leaveDelay: [{
|
197
|
+
type: Input,
|
198
|
+
args: ['mcLeaveDelay']
|
199
|
+
}], trigger: [{
|
200
|
+
type: Input,
|
201
|
+
args: ['mcTrigger']
|
202
|
+
}], customClass: [{
|
203
|
+
type: Input,
|
204
|
+
args: ['mcTooltipClass']
|
205
|
+
}], placementChange: [{
|
206
|
+
type: Output,
|
207
|
+
args: ['mcPlacementChange']
|
208
|
+
}], visibleChange: [{
|
209
|
+
type: Output,
|
210
|
+
args: ['mcVisibleChange']
|
211
|
+
}] } });
|
212
|
+
export class McWarningTooltipTrigger extends McTooltipTrigger {
|
213
|
+
constructor(overlay, elementRef, ngZone, scrollDispatcher, hostView, scrollStrategy, direction) {
|
214
|
+
super(overlay, elementRef, ngZone, scrollDispatcher, hostView, scrollStrategy, direction);
|
215
|
+
this.modifier = TooltipModifier.Warning;
|
351
216
|
}
|
352
|
-
|
353
|
-
|
354
|
-
this.overlayRef.detach();
|
355
|
-
}
|
356
|
-
this.tooltip = null;
|
217
|
+
get content() {
|
218
|
+
return this._content;
|
357
219
|
}
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
if ($event.connectionPair.originX === this.availablePositions[key].originX &&
|
362
|
-
$event.connectionPair.originY === this.availablePositions[key].originY &&
|
363
|
-
$event.connectionPair.overlayX === this.availablePositions[key].overlayX &&
|
364
|
-
$event.connectionPair.overlayY === this.availablePositions[key].overlayY) {
|
365
|
-
updatedPlacement = key;
|
366
|
-
return true;
|
367
|
-
}
|
368
|
-
return false;
|
369
|
-
});
|
370
|
-
this.updateCompValue('mcPlacement', updatedPlacement);
|
371
|
-
if (this.tooltip) {
|
372
|
-
this.tooltip.setClassMap();
|
373
|
-
this.tooltip.markForCheck();
|
374
|
-
}
|
375
|
-
this.handlePositioningUpdate();
|
220
|
+
set content(content) {
|
221
|
+
this._content = content;
|
222
|
+
this.updateData();
|
376
223
|
}
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
224
|
+
}
|
225
|
+
/** @nocollapse */ McWarningTooltipTrigger.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: McWarningTooltipTrigger, deps: [{ token: i2.Overlay }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i2.ScrollDispatcher }, { token: i0.ViewContainerRef }, { token: MC_TOOLTIP_SCROLL_STRATEGY }, { token: i3.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
226
|
+
/** @nocollapse */ McWarningTooltipTrigger.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.13", type: McWarningTooltipTrigger, selector: "[mcWarningTooltip]", inputs: { content: ["mcWarningTooltip", "content"] }, host: { listeners: { "keydown": "handleKeydown($event)", "touchend": "handleTouchend()" }, properties: { "class.mc-tooltip_open": "isOpen" } }, exportAs: ["mcWarningTooltip"], usesInheritance: true, ngImport: i0 });
|
227
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: McWarningTooltipTrigger, decorators: [{
|
228
|
+
type: Directive,
|
229
|
+
args: [{
|
230
|
+
selector: '[mcWarningTooltip]',
|
231
|
+
exportAs: 'mcWarningTooltip',
|
232
|
+
host: {
|
233
|
+
'[class.mc-tooltip_open]': 'isOpen',
|
234
|
+
'(keydown)': 'handleKeydown($event)',
|
235
|
+
'(touchend)': 'handleTouchend()'
|
236
|
+
}
|
237
|
+
}]
|
238
|
+
}], ctorParameters: function () { return [{ type: i2.Overlay }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i2.ScrollDispatcher }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{
|
239
|
+
type: Inject,
|
240
|
+
args: [MC_TOOLTIP_SCROLL_STRATEGY]
|
241
|
+
}] }, { type: i3.Directionality, decorators: [{
|
242
|
+
type: Optional
|
243
|
+
}] }]; }, propDecorators: { content: [{
|
244
|
+
type: Input,
|
245
|
+
args: ['mcWarningTooltip']
|
246
|
+
}] } });
|
247
|
+
export class McExtendedTooltipTrigger extends McTooltipTrigger {
|
248
|
+
constructor(overlay, elementRef, ngZone, scrollDispatcher, hostView, scrollStrategy, direction) {
|
249
|
+
super(overlay, elementRef, ngZone, scrollDispatcher, hostView, scrollStrategy, direction);
|
250
|
+
this.modifier = TooltipModifier.Extended;
|
399
251
|
}
|
400
|
-
|
401
|
-
|
402
|
-
if (this.isDynamicTooltip && value && this.tooltip) {
|
403
|
-
this.tooltip[key] = value;
|
404
|
-
this.tooltip.markForCheck();
|
405
|
-
}
|
252
|
+
get content() {
|
253
|
+
return this._content;
|
406
254
|
}
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
}
|
255
|
+
set content(content) {
|
256
|
+
this._content = content;
|
257
|
+
this.updateData();
|
411
258
|
}
|
412
|
-
|
413
|
-
this.
|
259
|
+
get header() {
|
260
|
+
return this._header;
|
414
261
|
}
|
415
|
-
|
416
|
-
this.
|
417
|
-
|
418
|
-
this.manualListeners
|
419
|
-
.set('mouseenter', () => this.show())
|
420
|
-
.set('mouseleave', () => this.hide())
|
421
|
-
.forEach((listener, event) => this.elementRef.nativeElement.addEventListener(event, listener));
|
422
|
-
}
|
423
|
-
if (this.mcTrigger.includes('focus')) {
|
424
|
-
this.manualListeners
|
425
|
-
.set('focus', () => this.show())
|
426
|
-
.set('blur', () => this.hide())
|
427
|
-
.forEach((listener, event) => this.elementRef.nativeElement.addEventListener(event, listener));
|
428
|
-
}
|
262
|
+
set header(header) {
|
263
|
+
this._header = header;
|
264
|
+
this.updateData();
|
429
265
|
}
|
430
|
-
|
431
|
-
this.
|
432
|
-
this.elementRef.nativeElement.removeEventListener(event, listener);
|
433
|
-
});
|
434
|
-
this.manualListeners.clear();
|
435
|
-
}
|
436
|
-
show() {
|
437
|
-
if (this.disabled) {
|
266
|
+
updateData() {
|
267
|
+
if (!this.instance) {
|
438
268
|
return;
|
439
269
|
}
|
440
|
-
|
441
|
-
|
442
|
-
this.detach();
|
443
|
-
this.portal = this.portal || new ComponentPortal(McTooltipComponent, this.hostView);
|
444
|
-
this.tooltip = this.overlayRef.attach(this.portal).instance;
|
445
|
-
this.tooltip.afterHidden()
|
446
|
-
.pipe(takeUntil(this.destroyed))
|
447
|
-
.subscribe(() => this.detach());
|
448
|
-
this.isDynamicTooltip = true;
|
449
|
-
const properties = [
|
450
|
-
'mcTitle',
|
451
|
-
'mcPlacement',
|
452
|
-
'mcTrigger',
|
453
|
-
'mcTooltipDisabled',
|
454
|
-
'mcMouseEnterDelay',
|
455
|
-
'mcMouseLeaveDelay',
|
456
|
-
'mcTooltipClass'
|
457
|
-
];
|
458
|
-
properties.forEach((property) => this.updateCompValue(property, this[property]));
|
459
|
-
this.tooltip.mcVisibleChange
|
460
|
-
.pipe(takeUntil(this.$unsubscribe), distinctUntilChanged())
|
461
|
-
.subscribe((data) => {
|
462
|
-
this.mcVisible = data;
|
463
|
-
this.mcVisibleChange.emit(data);
|
464
|
-
this.isTooltipOpen = data;
|
465
|
-
});
|
466
|
-
}
|
467
|
-
this.updatePosition();
|
468
|
-
this.tooltip.show();
|
469
|
-
}
|
470
|
-
hide() {
|
471
|
-
if (this.tooltip) {
|
472
|
-
this.tooltip.hide();
|
473
|
-
}
|
474
|
-
}
|
475
|
-
/** Updates the position of the current tooltip. */
|
476
|
-
updatePosition() {
|
477
|
-
if (!this.overlayRef) {
|
478
|
-
this.overlayRef = this.createOverlay();
|
479
|
-
}
|
480
|
-
const position = this.overlayRef.getConfig().positionStrategy;
|
481
|
-
const origin = this.getOrigin();
|
482
|
-
const overlay = this.getOverlayPosition();
|
483
|
-
position.withPositions([
|
484
|
-
Object.assign(Object.assign({}, origin.main), overlay.main),
|
485
|
-
Object.assign(Object.assign({}, origin.fallback), overlay.fallback)
|
486
|
-
]);
|
487
|
-
if (this.tooltip) {
|
488
|
-
position.apply();
|
489
|
-
window.dispatchEvent(new Event('resize'));
|
490
|
-
}
|
491
|
-
}
|
492
|
-
/**
|
493
|
-
* Returns the origin position and a fallback position based on the user's position preference.
|
494
|
-
* The fallback position is the inverse of the origin (e.g. `'below' -> 'above'`).
|
495
|
-
*/
|
496
|
-
getOrigin() {
|
497
|
-
const position = this.mcPlacement;
|
498
|
-
const isLtr = !this.direction || this.direction.value === 'ltr';
|
499
|
-
let originPosition;
|
500
|
-
if (position === 'top' || position === 'bottom') {
|
501
|
-
originPosition = { originX: 'center', originY: position === 'top' ? 'top' : 'bottom' };
|
502
|
-
}
|
503
|
-
else if (position === 'top' ||
|
504
|
-
(position === 'left' && isLtr) ||
|
505
|
-
(position === 'right' && !isLtr)) {
|
506
|
-
originPosition = { originX: 'start', originY: 'center' };
|
507
|
-
}
|
508
|
-
else if (position === 'bottom' ||
|
509
|
-
(position === 'right' && isLtr) ||
|
510
|
-
(position === 'left' && !isLtr)) {
|
511
|
-
originPosition = { originX: 'end', originY: 'center' };
|
512
|
-
}
|
513
|
-
else {
|
514
|
-
throw getMcTooltipInvalidPositionError(position);
|
515
|
-
}
|
516
|
-
const { x, y } = this.invertPosition(originPosition.originX, originPosition.originY);
|
517
|
-
return {
|
518
|
-
main: originPosition,
|
519
|
-
fallback: { originX: x, originY: y }
|
520
|
-
};
|
521
|
-
}
|
522
|
-
/** Returns the overlay position and a fallback position based on the user's preference */
|
523
|
-
getOverlayPosition() {
|
524
|
-
const position = this.mcPlacement;
|
525
|
-
const isLtr = !this.direction || this.direction.value === 'ltr';
|
526
|
-
let overlayPosition;
|
527
|
-
if (position === 'top') {
|
528
|
-
overlayPosition = { overlayX: 'center', overlayY: 'bottom' };
|
529
|
-
}
|
530
|
-
else if (position === 'bottom') {
|
531
|
-
overlayPosition = { overlayX: 'center', overlayY: 'top' };
|
532
|
-
}
|
533
|
-
else if (position === 'top' ||
|
534
|
-
(position === 'left' && isLtr) ||
|
535
|
-
(position === 'right' && !isLtr)) {
|
536
|
-
overlayPosition = { overlayX: 'end', overlayY: 'center' };
|
537
|
-
}
|
538
|
-
else if (position === 'bottom' ||
|
539
|
-
(position === 'right' && isLtr) ||
|
540
|
-
(position === 'left' && !isLtr)) {
|
541
|
-
overlayPosition = { overlayX: 'start', overlayY: 'center' };
|
542
|
-
}
|
543
|
-
else {
|
544
|
-
throw getMcTooltipInvalidPositionError(position);
|
545
|
-
}
|
546
|
-
const { x, y } = this.invertPosition(overlayPosition.overlayX, overlayPosition.overlayY);
|
547
|
-
return {
|
548
|
-
main: overlayPosition,
|
549
|
-
fallback: { overlayX: x, overlayY: y }
|
550
|
-
};
|
551
|
-
}
|
552
|
-
/** Inverts an overlay position. */
|
553
|
-
invertPosition(x, y) {
|
554
|
-
let newX = x;
|
555
|
-
let newY = y;
|
556
|
-
if (this.mcPlacement === 'top' || this.mcPlacement === 'bottom') {
|
557
|
-
if (y === 'top') {
|
558
|
-
newY = 'bottom';
|
559
|
-
}
|
560
|
-
else if (y === 'bottom') {
|
561
|
-
newY = 'top';
|
562
|
-
}
|
563
|
-
}
|
564
|
-
else {
|
565
|
-
if (x === 'end') {
|
566
|
-
newX = 'start';
|
567
|
-
}
|
568
|
-
else if (x === 'start') {
|
569
|
-
newX = 'end';
|
570
|
-
}
|
571
|
-
}
|
572
|
-
return { x: newX, y: newY };
|
573
|
-
}
|
574
|
-
getTooltipArrowElem() {
|
575
|
-
var _a;
|
576
|
-
const arrowClassName = 'mc-tooltip-arrow';
|
577
|
-
return (_a = this.overlayRef) === null || _a === void 0 ? void 0 : _a.overlayElement.getElementsByClassName(arrowClassName)[0];
|
270
|
+
super.updateData();
|
271
|
+
this.instance.header = this.header;
|
578
272
|
}
|
579
273
|
}
|
580
|
-
|
581
|
-
|
582
|
-
|
583
|
-
|
584
|
-
|
585
|
-
'[
|
586
|
-
|
587
|
-
|
588
|
-
|
589
|
-
|
590
|
-
|
591
|
-
|
592
|
-
|
593
|
-
|
594
|
-
|
595
|
-
|
596
|
-
|
597
|
-
|
598
|
-
|
599
|
-
|
600
|
-
|
601
|
-
]
|
602
|
-
|
603
|
-
|
604
|
-
|
605
|
-
setTitle: [{ type: Input, args: ['mcTitle',] }],
|
606
|
-
disabled: [{ type: Input, args: ['mcTooltipDisabled',] }],
|
607
|
-
mcMouseEnterDelay: [{ type: Input }],
|
608
|
-
mcMouseLeaveDelay: [{ type: Input }],
|
609
|
-
mcTrigger: [{ type: Input }],
|
610
|
-
mcPlacement: [{ type: Input }],
|
611
|
-
mcTooltipClass: [{ type: Input }],
|
612
|
-
mcVisible: [{ type: Input }],
|
613
|
-
mcArrowPlacement: [{ type: Input }]
|
614
|
-
};
|
615
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9tb3NhaWMvdG9vbHRpcC90b29sdGlwLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDOUQsT0FBTyxFQUdILE9BQU8sRUFFUCxnQkFBZ0IsRUFPbkIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixjQUFjLEVBQ2QsS0FBSyxFQUNMLE1BQU0sRUFHTixRQUFRLEVBQ1IsTUFBTSxFQUNOLFdBQVcsRUFDWCxnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRCxPQUFPLEVBQ0gsYUFBYSxFQUNiLG1CQUFtQixFQUNuQixZQUFZLEVBQ2YsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsZUFBZSxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFLakUsNkNBQTZDO0FBQzdDLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRztJQUMzQixHQUFHLEVBQUUsS0FBd0I7SUFDN0IsTUFBTSxFQUFFLFFBQTJCO0lBQ25DLE1BQU0sRUFBRSxRQUEyQjtJQUNuQyxLQUFLLEVBQUUsT0FBMEI7SUFDakMsSUFBSSxFQUFFLE1BQXlC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WUFDSCxJQUFJLENBQUMsS0FBSyxLQUFLLEVBQUU7Z0JBQ2IsSUFBSSxHQUFHLE9BQU8sQ0FBQzthQUNsQjtpQkFBTSxJQUFJLENBQUMsS0FBSyxPQUFPLEVBQUU7Z0JBQ3RCLElBQUksR0FBRyxLQUFLLENBQUM7YUFDaEI7U0FDSjtRQUVELE9BQU8sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRU8sbUJBQW1COztRQUN2QixNQUFNLGNBQWMsR0FBRyxrQkFBa0IsQ0FBQztRQUUxQyxhQUFPLElBQUksQ0FBQyxVQUFVLDBDQUFFLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxFQUFFO0lBQ3JGLENBQUM7OztZQXpmSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLHVDQUF1QztnQkFDakQsUUFBUSxFQUFFLFdBQVc7Z0JBQ3JCLElBQUksRUFBRTtvQkFDRix5QkFBeUIsRUFBRSxlQUFlO29CQUMxQyxrQkFBa0IsRUFBRSxnQkFBZ0I7b0JBRXBDLFdBQVcsRUFBRSx1QkFBdUI7b0JBQ3BDLFlBQVksRUFBRSxrQkFBa0I7aUJBQ25DO2FBQ0o7Ozs7WUFuUkcsT0FBTztZQWdCUCxVQUFVO1lBS1YsTUFBTTtZQW5CTixnQkFBZ0I7WUF5QmhCLGdCQUFnQjs0Q0F3WlgsTUFBTSxTQUFDLDBCQUEwQjtZQXhiakMsY0FBYyx1QkF5YmQsUUFBUTs7OzhCQXZKWixNQUFNO3NCQUdOLEtBQUssU0FBQyxXQUFXO3VCQVlqQixLQUFLLFNBQUMsU0FBUzt1QkFLZixLQUFLLFNBQUMsbUJBQW1CO2dDQVl6QixLQUFLO2dDQVlMLEtBQUs7d0JBWUwsS0FBSzswQkFnQkwsS0FBSzs2QkFvQkwsS0FBSzt3QkFnQkwsS0FBSzsrQkFzQkwsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGlvbmFsaXR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7XG4gICAgQ29ubmVjdGVkT3ZlcmxheVBvc2l0aW9uQ2hhbmdlLFxuICAgIENvbm5lY3Rpb25Qb3NpdGlvblBhaXIsXG4gICAgT3ZlcmxheSxcbiAgICBPdmVybGF5UmVmLFxuICAgIFNjcm9sbERpc3BhdGNoZXIsXG4gICAgU2Nyb2xsU3RyYXRlZ3ksXG4gICAgRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5LFxuICAgIE92ZXJsYXlDb25uZWN0aW9uUG9zaXRpb24sXG4gICAgT3JpZ2luQ29ubmVjdGlvblBvc2l0aW9uLFxuICAgIEhvcml6b250YWxDb25uZWN0aW9uUG9zLFxuICAgIFZlcnRpY2FsQ29ubmVjdGlvblBvc1xufSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbmplY3QsXG4gICAgSW5qZWN0aW9uVG9rZW4sXG4gICAgSW5wdXQsXG4gICAgTmdab25lLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDb250YWluZXJSZWYsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFU0NBUEUgfSBmcm9tICdAcHRzZWN1cml0eS9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHtcbiAgICBmYWRlQW5pbWF0aW9uLFxuICAgIERFRkFVTFRfNF9QT1NJVElPTlMsXG4gICAgUE9TSVRJT05fTUFQXG59IGZyb20gJ0BwdHNlY3VyaXR5L21vc2FpYy9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuXG5leHBvcnQgdHlwZSBBcnJvd1BsYWNlbWVudHMgPSBIb3Jpem9udGFsQ29ubmVjdGlvblBvcyB8IFZlcnRpY2FsQ29ubmVjdGlvblBvcztcblxuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5hbWluZy1jb252ZW50aW9uXG5leHBvcnQgY29uc3QgQXJyb3dQbGFjZW1lbnRzID0ge1xuICAgIFRvcDogJ3RvcCcgYXMgQXJyb3dQbGFjZW1lbnRzLFxuICAgIENlbnRlcjogJ2NlbnRlcicgYXMgQXJyb3dQbGFjZW1lbnRzLFxuICAgIEJvdHRvbTogJ2JvdHRvbScgYXMgQXJyb3dQbGFjZW1lbnRzLFxuICAgIFJpZ2h0OiAncmlnaHQnIGFzIEFycm93UGxhY2VtZW50cyxcbiAgICBMZWZ0OiAnbGVmdCcgYXMgQXJyb3dQbGFjZW1lbnRzXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ21jLXRvb2x0aXAtY29tcG9uZW50JyxcbiAgICBhbmltYXRpb25zOiBbZmFkZUFuaW1hdGlvbl0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Rvb2x0aXAuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3Rvb2x0aXAuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJlc2VydmVXaGl0ZXNwYWNlczogZmFsc2UsXG4gICAgaG9zdDoge1xuICAgICAgICAnKGJvZHk6Y2xpY2spJzogJ3RoaXMuaGFuZGxlQm9keUludGVyYWN0aW9uKCknXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBNY1Rvb2x0aXBDb21wb25lbnQge1xuICAgIHByZWZpeCA9ICdtYy10b29sdGlwX3BsYWNlbWVudCc7XG4gICAgcG9zaXRpb25zOiBDb25uZWN0aW9uUG9zaXRpb25QYWlyW10gPSBbLi4uREVGQVVMVF80X1BPU0lUSU9OU107XG4gICAgY2xhc3NNYXAgPSB7fTtcbiAgICBpc1RpdGxlU3RyaW5nOiBib29sZWFuO1xuICAgIHNob3dUaWQ6IGFueTtcbiAgICBoaWRlVGlkOiBhbnk7XG4gICAgYXZhaWxhYmxlUG9zaXRpb25zOiBhbnk7XG4gICAgJHZpc2libGU6IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgICBAT3V0cHV0KCkgbWNWaXNpYmxlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBASW5wdXQoKSBtY01vdXNlRW50ZXJEZWxheSA9IDQwMDtcblxuICAgIEBJbnB1dCgpIG1jTW91c2VMZWF2ZURlbGF5ID0gMDtcblxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IG1jVGl0bGUoKTogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tY1RpdGxlO1xuICAgIH1cblxuICAgIHNldCBtY1RpdGxlKHZhbHVlOiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+KSB7XG4gICAgICAgIHRoaXMuX21jVGl0bGUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9tY1RpdGxlOiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQElucHV0KClcbiAgICBnZXQgbWNUcmlnZ2VyKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tY1RyaWdnZXI7XG4gICAgfVxuXG4gICAgc2V0IG1jVHJpZ2dlcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX21jVHJpZ2dlciA9IHZhbHVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgX21jVHJpZ2dlcjogc3RyaW5nID0gJ2hvdmVyJztcblxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IG1jUGxhY2VtZW50KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tY1BsYWNlbWVudDtcbiAgICB9XG5cbiAgICBzZXQgbWNQbGFjZW1lbnQodmFsdWU6IHN0cmluZykge1xuICAgICAgICBpZiAodmFsdWUgIT09IHRoaXMuX21jUGxhY2VtZW50KSB7XG4gICAgICAgICAgICB0aGlzLl9tY1BsYWNlbWVudCA9IHZhbHVlO1xuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbnMudW5zaGlmdChQT1NJVElPTl9NQVBbIHRoaXMubWNQbGFjZW1lbnQgXSk7XG4gICAgICAgIH0gZWxzZSBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLl9tY1BsYWNlbWVudCA9ICd0b3AnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfbWNQbGFjZW1lbnQ6IHN0cmluZyA9ICd0b3AnO1xuXG4gICAgQElucHV0KClcbiAgICBnZXQgbWNUb29sdGlwQ2xhc3MoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21jVG9vbHRpcENsYXNzO1xuICAgIH1cblxuICAgIHNldCBtY1Rvb2x0aXBDbGFzcyh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX21jVG9vbHRpcENsYXNzID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfbWNUb29sdGlwQ2xhc3M6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IG1jVmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21jVmlzaWJsZS52YWx1ZTtcbiAgICB9XG5cbiAgICBzZXQgbWNWaXNpYmxlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIGNvbnN0IHZpc2libGUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuXG4gICAgICAgIGlmICh2aXNpYmxlICYmIHRoaXMuX21jVmlzaWJsZS52YWx1ZSAhPT0gdmlzaWJsZSkge1xuICAgICAgICAgICAgdGhpcy5zaG93KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX21jVmlzaWJsZTogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgICBASW5wdXQoKVxuICAgIGdldCBtY0Fycm93UGxhY2VtZW50KCk6IEFycm93UGxhY2VtZW50cyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tY0Fycm93UGxhY2VtZW50O1xuICAgIH1cblxuICAgIHNldCBtY0Fycm93UGxhY2VtZW50KHZhbHVlOiBBcnJvd1BsYWNlbWVudHMpIHtcbiAgICAgICAgdGhpcy5fbWNBcnJvd1BsYWNlbWVudCA9IHZhbHVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgX21jQXJyb3dQbGFjZW1lbnQ6IEFycm93UGxhY2VtZW50cztcblxuICAgIC8qKiBTdWJqZWN0IGZvciBub3RpZnlpbmcgdGhhdCB0aGUgdG9vbHRpcCBoYXMgYmVlbiBoaWRkZW4gZnJvbSB0aGUgdmlldyAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgb25IaWRlU3ViamVjdDogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3QoKTtcbiAgICBwcml2YXRlIGNsb3NlT25JbnRlcmFjdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICAgICAgdGhpcy5hdmFpbGFibGVQb3NpdGlvbnMgPSBQT1NJVElPTl9NQVA7XG4gICAgICAgIHRoaXMuJHZpc2libGUgPSB0aGlzLl9tY1Zpc2libGUuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgc2hvdygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaGlkZVRpZCkge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuaGlkZVRpZCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuaXNDb250ZW50RW1wdHkoKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMubWNUcmlnZ2VyICE9PSAnbWFudWFsJykge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VPbkludGVyYWN0aW9uID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5zaG93VGlkID0gc2V0VGltZW91dChcbiAgICAgICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX21jVmlzaWJsZS5uZXh0KHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1jVmlzaWJsZUNoYW5nZS5lbWl0KHRydWUpO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIE1hcmsgZm9yIGNoZWNrIHNvIGlmIGFueSBwYXJlbnQgY29tcG9uZW50IGhhcyBzZXQgdGhlXG4gICAgICAgICAgICAgICAgICAgIC8vIENoYW5nZURldGVjdGlvblN0cmF0ZWd5IHRvIE9uUHVzaCBpdCB3aWxsIGJlIGNoZWNrZWQgYW55d2F5c1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdGhpcy5tY01vdXNlRW50ZXJEZWxheVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhpZGUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNob3dUaWQpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnNob3dUaWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5oaWRlVGlkID0gc2V0VGltZW91dChcbiAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9tY1Zpc2libGUubmV4dChmYWxzZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5tY1Zpc2libGVDaGFuZ2UuZW1pdChmYWxzZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkhpZGVTdWJqZWN0Lm5leHQoKTtcblxuICAgICAgICAgICAgICAgIC8vIE1hcmsgZm9yIGNoZWNrIHNvIGlmIGFueSBwYXJlbnQgY29tcG9uZW50IGhhcyBzZXQgdGhlXG4gICAgICAgICAgICAgICAgLy8gQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kgdG8gT25QdXNoIGl0IHdpbGwgYmUgY2hlY2tlZCBhbnl3YXlzXG4gICAgICAgICAgICAgICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0aGlzLm1jTW91c2VMZWF2ZURlbGF5XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgc2V0Q2xhc3NNYXAoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2xhc3NNYXAgPSB7XG4gICAgICAgICAgICBbYCR7dGhpcy5wcmVmaXh9LSR7dGhpcy5tY1BsYWNlbWVudH1gXTogdHJ1ZSxcbiAgICAgICAgICAgIFt0aGlzLm1jVG9vbHRpcENsYXNzXTogdHJ1ZVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGlzQ29udGVudEVtcHR5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1RpdGxlU3RyaW5nID8gKHRoaXMubWNUaXRsZSA9PT0gJycgfHwgIXRoaXMubWNUaXRsZSkgOiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKiogUmV0dXJucyBhbiBvYnNlcnZhYmxlIHRoYXQgbm90aWZpZXMgd2hlbiB0aGUgdG9vbHRpcCBoYXMgYmVlbiBoaWRkZW4gZnJvbSB2aWV3LiAqL1xuICAgIGFmdGVySGlkZGVuKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbkhpZGVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIG1hcmtGb3JDaGVjaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgaGFuZGxlQm9keUludGVyYWN0aW9uKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jbG9zZU9uSW50ZXJhY3Rpb24pIHtcbiAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IGlzVGVtcGxhdGVSZWYoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1jVGl0bGUgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZjtcbiAgICB9XG5cbiAgICBnZXQgaXNOb25FbXB0eVN0cmluZygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICh0eXBlb2YgdGhpcy5tY1RpdGxlID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdGhpcy5tY1RpdGxlID09PSAnbnVtYmVyJykgJiYgdGhpcy5fbWNUaXRsZSAhPT0gJyc7XG4gICAgfVxufVxuXG5leHBvcnQgY29uc3QgTUNfVE9PTFRJUF9TQ1JPTExfU1RSQVRFR1kgPVxuICAgIG5ldyBJbmplY3Rpb25Ub2tlbjwoKSA9PiBTY3JvbGxTdHJhdGVneT4oJ21jLXRvb2x0aXAtc2Nyb2xsLXN0cmF0ZWd5Jyk7XG5cbi8qKiBAZG9jcy1wcml2YXRlICovXG5leHBvcnQgZnVuY3Rpb24gbWNUb29sdGlwU2Nyb2xsU3RyYXRlZ3lGYWN0b3J5KG92ZXJsYXk6IE92ZXJsYXkpOiAoKSA9PiBTY3JvbGxTdHJhdGVneSB7XG4gICAgcmV0dXJuICgpID0+IG92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKHtzY3JvbGxUaHJvdHRsZTogMjB9KTtcbn1cblxuLyoqIEBkb2NzLXByaXZhdGUgKi9cbmV4cG9ydCBjb25zdCBNQ19UT09MVElQX1NDUk9MTF9TVFJBVEVHWV9GQUNUT1JZX1BST1ZJREVSID0ge1xuICAgIHByb3ZpZGU6IE1DX1RPT0xUSVBfU0NST0xMX1NUUkFURUdZLFxuICAgIGRlcHM6IFtPdmVybGF5XSxcbiAgICB1c2VGYWN0b3J5OiBtY1Rvb2x0aXBTY3JvbGxTdHJhdGVneUZhY3Rvcnlcbn07XG5cbi8qKiBDcmVhdGVzIGFuIGVycm9yIHRvIGJlIHRocm93biBpZiB0aGUgdXNlciBzdXBwbGllZCBhbiBpbnZhbGlkIHRvb2x0aXAgcG9zaXRpb24uICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWNUb29sdGlwSW52YWxpZFBvc2l0aW9uRXJyb3IocG9zaXRpb246IHN0cmluZykge1xuICAgIHJldHVybiBFcnJvcihgTWNUb29sdGlwIHBvc2l0aW9uIFwiJHtwb3NpdGlvbn1cIiBpcyBpbnZhbGlkLmApO1xufVxuXG5jb25zdCBWSUVXUE9SVF9NQVJHSU46IG51bWJlciA9IDg7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW21jVG9vbHRpcF0sIFthdHRyaWJ1dGVePVwibWNUb29sdGlwXCJdJyxcbiAgICBleHBvcnRBczogJ21jVG9vbHRpcCcsXG4gICAgaG9zdDoge1xuICAgICAgICAnW2NsYXNzLm1jLXRvb2x0aXAtb3Blbl0nOiAnaXNUb29sdGlwT3BlbicsXG4gICAgICAgICdbY2xhc3MuZGlzYWJsZWRdJzogJ3BhcmVudERpc2FibGVkJyxcblxuICAgICAgICAnKGtleWRvd24pJzogJ2hhbmRsZUtleWRvd24oJGV2ZW50KScsXG4gICAgICAgICcodG91Y2hlbmQpJzogJ2hhbmRsZVRvdWNoZW5kKCknXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBNY1Rvb2x0aXAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgaXNUb29sdGlwT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuICAgIGlzRHluYW1pY1Rvb2x0aXAgPSBmYWxzZTtcbiAgICBwYXJlbnREaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIG92ZXJsYXlSZWY6IE92ZXJsYXlSZWYgfCBudWxsO1xuICAgIHBvcnRhbDogQ29tcG9uZW50UG9ydGFsPE1jVG9vbHRpcENvbXBvbmVudD47XG4gICAgYXZhaWxhYmxlUG9zaXRpb25zOiBhbnk7XG4gICAgdG9vbHRpcDogTWNUb29sdGlwQ29tcG9uZW50IHwgbnVsbDtcblxuICAgIEBPdXRwdXQoKSBtY1Zpc2libGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gICAgcHJpdmF0ZSAkdW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgQElucHV0KCdtY1Rvb2x0aXAnKVxuICAgIGdldCBtY1RpdGxlKCk6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWNUaXRsZTtcbiAgICB9XG5cbiAgICBzZXQgbWNUaXRsZSh0aXRsZTogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55Pikge1xuICAgICAgICB0aGlzLl9tY1RpdGxlID0gdGl0bGU7XG4gICAgICAgIHRoaXMudXBkYXRlQ29tcFZhbHVlKCdtY1RpdGxlJywgdGl0bGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX21jVGl0bGU6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBASW5wdXQoJ21jVGl0bGUnKVxuICAgIHNldCBzZXRUaXRsZSh0aXRsZTogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55Pikge1xuICAgICAgICB0aGlzLm1jVGl0bGUgPSB0aXRsZTtcbiAgICB9XG5cbiAgICBASW5wdXQoJ21jVG9vbHRpcERpc2FibGVkJylcbiAgICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgICB9XG5cbiAgICBzZXQgZGlzYWJsZWQodmFsdWUpIHtcbiAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgICAgICB0aGlzLnVwZGF0ZUNvbXBWYWx1ZSgnbWNUb29sdGlwRGlzYWJsZWQnLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IG1jTW91c2VFbnRlckRlbGF5KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tY01vdXNlRW50ZXJEZWxheTtcbiAgICB9XG5cbiAgICBzZXQgbWNNb3VzZUVudGVyRGVsYXkodmFsdWU6IG51bWJlcikge1xuICAgICAgICB0aGlzLl9tY01vdXNlRW50ZXJEZWxheSA9IHZhbHVlO1xuICAgICAgICB0aGlzLnVwZGF0ZUNvbXBWYWx1ZSgnbWNNb3VzZUVudGVyRGVsYXknLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfbWNNb3VzZUVudGVyRGVsYXk6IG51bWJlcjtcblxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IG1jTW91c2VMZWF2ZURlbGF5KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tY01vdXNlTGVhdmVEZWxheTtcbiAgICB9XG5cbiAgICBzZXQgbWNNb3VzZUxlYXZlRGVsYXkodmFsdWU6IG51bWJlcikge1xuICAgICAgICB0aGlzLl9tY01vdXNlTGVhdmVEZWxheSA9IHZhbHVlO1xuICAgICAgICB0aGlzLnVwZGF0ZUNvbXBWYWx1ZSgnbWNNb3VzZUxlYXZlRGVsYXknLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfbWNNb3VzZUxlYXZlRGVsYXk6IG51bWJlcjtcblxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IG1jVHJpZ2dlcigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWNUcmlnZ2VyO1xuICAgIH1cblxuICAgIHNldCBtY1RyaWdnZXIodmFsdWU6IHN0cmluZykge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuX21jVHJpZ2dlciA9IHZhbHVlO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVDb21wVmFsdWUoJ21jVHJpZ2dlcicsIHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX21jVHJpZ2dlciA9ICdob3Zlcic7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9tY1RyaWdnZXI6IHN0cmluZyA9ICdob3Zlcic7XG5cbiAgICBASW5wdXQoKVxuICAgIGdldCBtY1BsYWNlbWVudCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWNQbGFjZW1lbnQ7XG4gICAgfVxuXG4gICAgc2V0IG1jUGxhY2VtZW50KHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLl9tY1BsYWNlbWVudCA9IHZhbHVlO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVDb21wVmFsdWUoJ21jUGxhY2VtZW50JywgdmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fbWNQbGFjZW1lbnQgPSAndG9wJztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm1jVmlzaWJsZSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVQb3NpdGlvbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfbWNQbGFjZW1lbnQ6IHN0cmluZyA9ICd0b3AnO1xuXG4gICAgQElucHV0KClcbiAgICBnZXQgbWNUb29sdGlwQ2xhc3MoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21jVG9vbHRpcENsYXNzO1xuICAgIH1cblxuICAgIHNldCBtY1Rvb2x0aXBDbGFzcyh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5fbWNUb29sdGlwQ2xhc3MgPSB2YWx1ZTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQ29tcFZhbHVlKCdtY1Rvb2x0aXBDbGFzcycsIHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX21jVG9vbHRpcENsYXNzID0gJyc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9tY1Rvb2x0aXBDbGFzczogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBnZXQgbWNWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWNWaXNpYmxlO1xuICAgIH1cblxuICAgIHNldCBtY1Zpc2libGUoZXh0ZXJuYWxWYWx1ZTogYm9vbGVhbikge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShleHRlcm5hbFZhbHVlKTtcblxuICAgICAgICBpZiAodGhpcy5fbWNWaXNpYmxlICE9PSB2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5fbWNWaXNpYmxlID0gdmFsdWU7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUNvbXBWYWx1ZSgnbWNWaXNpYmxlJywgdmFsdWUpO1xuXG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNob3coKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9tY1Zpc2libGU6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKVxuICAgIGdldCBtY0Fycm93UGxhY2VtZW50KCk6IEFycm93UGxhY2VtZW50cyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tY0Fycm93UGxhY2VtZW50O1xuICAgIH1cblxuICAgIHNldCBtY0Fycm93UGxhY2VtZW50KHZhbHVlOiBBcnJvd1BsYWNlbWVudHMpIHtcbiAgICAgICAgdGhpcy5fbWNBcnJvd1BsYWNlbWVudCA9IHZhbHVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgX21jQXJyb3dQbGFjZW1lbnQ6IEFycm93UGxhY2VtZW50cztcblxuICAgIHByaXZhdGUgbWFudWFsTGlzdGVuZXJzID0gbmV3IE1hcDxzdHJpbmcsIEV2ZW50TGlzdGVuZXJPckV2ZW50TGlzdGVuZXJPYmplY3Q+KCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95ZWQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSxcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgICAgICBwcml2YXRlIHNjcm9sbERpc3BhdGNoZXI6IFNjcm9sbERpc3BhdGNoZXIsXG4gICAgICAgIHByaXZhdGUgaG9zdFZpZXc6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIEBJbmplY3QoTUNfVE9PTFRJUF9TQ1JPTExfU1RSQVRFR1kpIHByaXZhdGUgc2Nyb2xsU3RyYXRlZ3ksXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgZGlyZWN0aW9uOiBEaXJlY3Rpb25hbGl0eVxuICAgICkge1xuICAgICAgICB0aGlzLmF2YWlsYWJsZVBvc2l0aW9ucyA9IFBPU0lUSU9OX01BUDtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbml0RWxlbWVudFJlZkxpc3RlbmVycygpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5vdmVybGF5UmVmKSB7XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlSZWYuZGlzcG9zZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5tYW51YWxMaXN0ZW5lcnMuZm9yRWFjaCgobGlzdGVuZXIsIGV2ZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50LCBsaXN0ZW5lcik7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMubWFudWFsTGlzdGVuZXJzLmNsZWFyKCk7XG5cbiAgICAgICAgdGhpcy4kdW5zdWJzY3JpYmUubmV4dCgpO1xuICAgICAgICB0aGlzLiR1bnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIC8qKiBDcmVhdGUgdGhlIG92ZXJsYXkgY29uZmlnIGFuZCBwb3NpdGlvbiBzdHJhdGVneSAqL1xuICAgIGNyZWF0ZU92ZXJsYXkoKTogT3ZlcmxheVJlZiB7XG4gICAgICAgIGlmICh0aGlzLm92ZXJsYXlSZWYpIHsgcmV0dXJuIHRoaXMub3ZlcmxheVJlZjsgfVxuXG4gICAgICAgIC8vIENyZWF0ZSBjb25uZWN0ZWQgcG9zaXRpb24gc3RyYXRlZ3kgdGhhdCBsaXN0ZW5zIGZvciBzY3JvbGwgZXZlbnRzIHRvIHJlcG9zaXRpb24uXG4gICAgICAgIGNvbnN0IHN0cmF0ZWd5ID0gdGhpcy5vdmVybGF5LnBvc2l0aW9uKClcbiAgICAgICAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKHRoaXMuZWxlbWVudFJlZilcbiAgICAgICAgICAgIC53aXRoVHJhbnNmb3JtT3JpZ2luT24oJy5tYy10b29sdGlwJylcbiAgICAgICAgICAgIC53aXRoRmxleGlibGVEaW1lbnNpb25zKGZhbHNlKVxuICAgICAgICAgICAgLndpdGhWaWV3cG9ydE1hcmdpbihWSUVXUE9SVF9NQVJHSU4pXG4gICAgICAgICAgICAud2l0aFBvc2l0aW9ucyhbLi4uREVGQVVMVF80X1BPU0lUSU9OU10pO1xuXG4gICAgICAgIGNvbnN0IHNjcm9sbGFibGVBbmNlc3RvcnMgPSB0aGlzLnNjcm9sbERpc3BhdGNoZXIuZ2V0QW5jZXN0b3JTY3JvbGxDb250YWluZXJzKHRoaXMuZWxlbWVudFJlZik7XG5cbiAgICAgICAgc3RyYXRlZ3kud2l0aFNjcm9sbGFibGVDb250YWluZXJzKHNjcm9sbGFibGVBbmNlc3RvcnMpO1xuXG4gICAgICAgIHN0cmF0ZWd5LnBvc2l0aW9uQ2hhbmdlc1xuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGNoYW5nZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnRvb2x0aXApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vblBvc2l0aW9uQ2hhbmdlKGNoYW5nZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjaGFuZ2Uuc2Nyb2xsYWJsZVZpZXdQcm9wZXJ0aWVzLmlzT3ZlcmxheUNsaXBwZWQgJiYgdGhpcy50b29sdGlwLm1jVmlzaWJsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQWZ0ZXIgcG9zaXRpb24gY2hhbmdlcyBvY2N1ciBhbmQgdGhlIG92ZXJsYXkgaXMgY2xpcHBlZCBieVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gYSBwYXJlbnQgc2Nyb2xsYWJsZSB0aGVuIGNsb3NlIHRoZSB0b29sdGlwLlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMuaGlkZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoe1xuICAgICAgICAgICAgZGlyZWN0aW9uOiB0aGlzLmRpcmVjdGlvbixcbiAgICAgICAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IHN0cmF0ZWd5LFxuICAgICAgICAgICAgcGFuZWxDbGFzczogJ21jLXRvb2x0aXAtcGFuZWwnLFxuICAgICAgICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMuc2Nyb2xsU3RyYXRlZ3koKVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnVwZGF0ZVBvc2l0aW9uKCk7XG5cbiAgICAgICAgdGhpcy5vdmVybGF5UmVmLmRldGFjaG1lbnRzKClcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuZGV0YWNoKCkpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLm92ZXJsYXlSZWY7XG4gICAgfVxuXG4gICAgZGV0YWNoKCkge1xuICAgICAgICBpZiAodGhpcy5vdmVybGF5UmVmICYmIHRoaXMub3ZlcmxheVJlZi5oYXNBdHRhY2hlZCgpKSB7XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlSZWYuZGV0YWNoKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRvb2x0aXAgPSBudWxsO1xuICAgIH1cblxuICAgIG9uUG9zaXRpb25DaGFuZ2UoJGV2ZW50OiBDb25uZWN0ZWRPdmVybGF5UG9zaXRpb25DaGFuZ2UpOiB2b2lkIHtcbiAgICAgICAgbGV0IHVwZGF0ZWRQbGFjZW1lbnQgPSB0aGlzLm1jUGxhY2VtZW50O1xuXG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuYXZhaWxhYmxlUG9zaXRpb25zKS5zb21lKChrZXkpID0+IHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAkZXZlbnQuY29ubmVjdGlvblBhaXIub3JpZ2luWCA9PT0gdGhpcy5hdmFpbGFibGVQb3NpdGlvbnNba2V5XS5vcmlnaW5YICYmXG4gICAgICAgICAgICAgICAgJGV2ZW50LmNvbm5lY3Rpb25QYWlyLm9yaWdpblkgPT09IHRoaXMuYXZhaWxhYmxlUG9zaXRpb25zW2tleV0ub3JpZ2luWSAmJlxuICAgICAgICAgICAgICAgICRldmVudC5jb25uZWN0aW9uUGFpci5vdmVybGF5WCA9PT0gdGhpcy5hdmFpbGFibGVQb3NpdGlvbnNba2V5XS5vdmVybGF5WCAmJlxuICAgICAgICAgICAgICAgICRldmVudC5jb25uZWN0aW9uUGFpci5vdmVybGF5WSA9PT0gdGhpcy5hdmFpbGFibGVQb3NpdGlvbnNba2V5XS5vdmVybGF5WVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdXBkYXRlZFBsYWNlbWVudCA9IGtleTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMudXBkYXRlQ29tcFZhbHVlKCdtY1BsYWNlbWVudCcsIHVwZGF0ZWRQbGFjZW1lbnQpO1xuXG4gICAgICAgIGlmICh0aGlzLnRvb2x0aXApIHtcbiAgICAgICAgICAgIHRoaXMudG9vbHRpcC5zZXRDbGFzc01hcCgpO1xuICAgICAgICAgICAgdGhpcy50b29sdGlwLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5oYW5kbGVQb3NpdGlvbmluZ1VwZGF0ZSgpO1xuICAgIH1cblxuICAgIGhhbmRsZVBvc2l0aW9uaW5nVXBkYXRlKCkge1xuICAgICAgICB0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLmNyZWF0ZU92ZXJsYXkoKTtcblxuICAgICAgICBpZiAodGhpcy5tY1BsYWNlbWVudCA9PT0gJ3JpZ2h0JyB8fCB0aGlzLm1jUGxhY2VtZW50ID09PSAnbGVmdCcpIHtcbiAgICAgICAgICAgIGNvbnN0IGhhbGZEZWxpbWl0ZXIgPSAyO1xuICAgICAgICAgICAgY29uc3Qgb3ZlcmxheUVsZW1IZWlnaHQgPSB0aGlzLm92ZXJsYXlSZWYub3ZlcmxheUVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICAgICAgICAgICAgY29uc3QgY3VycmVudENvbnRhaW5lckhlaWdodCA9IHRoaXMuaG9zdFZpZXcuZWxlbWVudC5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodDtcblxuICAgICAgICAgICAgaWYgKHRoaXMubWNBcnJvd1BsYWNlbWVudCA9PT0gQXJyb3dQbGFjZW1lbnRzLkNlbnRlcikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFycm93RWxlbVJlZiA9IHRoaXMuZ2V0VG9vbHRpcEFycm93RWxlbSgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lclBvc2l0aW9uVG9wOiBudW1iZXIgPSB0aGlzLmhvc3RWaWV3LmVsZW1lbnQubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3A7XG4gICAgICAgICAgICAgICAgY29uc3QgaGFsZk9mQ29udGFpbmVySGVpZ2h0ID0gY3VycmVudENvbnRhaW5lckhlaWdodCAvIGhhbGZEZWxpbWl0ZXI7XG4gICAgICAgICAgICAgICAgY29uc3QgaGFsZk9mVG9vbHRpcEhlaWdodCA9IG92ZXJsYXlFbGVtSGVpZ2h0IC8gaGFsZkRlbGltaXRlcjtcblxuICAgICAgICAgICAgICAgIHRoaXMub3ZlcmxheVJlZi5vdmVybGF5RWxlbWVudC5zdHlsZS50b3AgPSBgJHtcbiAgICAgICAgICAgICAgICAgICAgKGNvbnRhaW5lclBvc2l0aW9uVG9wICsgaGFsZk9mQ29udGFpbmVySGVpZ2h0KSAtIGhhbGZPZlRvb2x0aXBIZWlnaHQgKyAxXG4gICAgICAgICAgICAgICAgfXB4YDtcblxuICAgICAgICAgICAgICAgIGlmIChhcnJvd0VsZW1SZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgYXJyb3dFbGVtUmVmLnNldEF0dHJpYnV0ZSgnc3R5bGUnLCBgdG9wOiAke2hhbGZPZlRvb2x0aXBIZWlnaHQgLSAxfXB4YCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwb3MgPSAob3ZlcmxheUVsZW1IZWlnaHQgLSBjdXJyZW50Q29udGFpbmVySGVpZ2h0KSAvIGhhbGZEZWxpbWl0ZXI7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVmYXVsdFRvb2x0aXBQbGFjZW1lbnRUb3AgPSBwYXJzZUludCh0aGlzLm92ZXJsYXlSZWYub3ZlcmxheUVsZW1lbnQuc3R5bGUudG9wIHx8ICcwcHgnLCAxMCk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLm92ZXJsYXlSZWYub3ZlcmxheUVsZW1lbnQuc3R5bGUudG9wID0gYCR7ZGVmYXVsdFRvb2x0aXBQbGFjZW1lbnRUb3AgKyBwb3MgLSAxfXB4YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnlcbiAgICB1cGRhdGVDb21wVmFsdWUoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNEeW5hbWljVG9vbHRpcCAmJiB2YWx1ZSAmJiB0aGlzLnRvb2x0aXApIHtcbiAgICAgICAgICAgIHRoaXMudG9vbHRpcFtrZXldID0gdmFsdWU7XG4gICAgICAgICAgICB0aGlzLnRvb2x0aXAubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoYW5kbGVLZXlkb3duKGU6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNUb29sdGlwT3BlbiAmJiBlLmtleUNvZGUgPT09IEVTQ0FQRSkgeyAvLyB0c2xpbnQ6ZGlzYWJsZS1saW5lXG4gICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhhbmRsZVRvdWNoZW5kKCkge1xuICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICB9XG5cbiAgICBpbml0RWxlbWVudFJlZkxpc3RlbmVycygpIHtcbiAgICAgICAgdGhpcy5jbGVhckxpc3RlbmVycygpO1xuXG4gICAgICAgIGlmICh0aGlzLm1jVHJpZ2dlci5pbmNsdWRlcygnaG92ZXInKSkge1xuICAgICAgICAgICAgdGhpcy5tYW51YWxMaXN0ZW5lcnNcbiAgICAgICAgICAgICAgICAuc2V0KCdtb3VzZWVudGVyJywgKCkgPT4gdGhpcy5zaG93KCkpXG4gICAgICAgICAgICAgICAgLnNldCgnbW91c2VsZWF2ZScsICgpID0+IHRoaXMuaGlkZSgpKVxuICAgICAgICAgICAgICAgIC5mb3JFYWNoKChsaXN0ZW5lciwgZXZlbnQpID0+IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnQsIGxpc3RlbmVyKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5tY1RyaWdnZXIuaW5jbHVkZXMoJ2ZvY3VzJykpIHtcbiAgICAgICAgICAgIHRoaXMubWFudWFsTGlzdGVuZXJzXG4gICAgICAgICAgICAgICAgLnNldCgnZm9jdXMnLCAoKSA9PiB0aGlzLnNob3coKSlcbiAgICAgICAgICAgICAgICAuc2V0KCdibHVyJywgKCkgPT4gdGhpcy5oaWRlKCkpXG4gICAgICAgICAgICAgICAgLmZvckVhY2goKGxpc3RlbmVyLCBldmVudCkgPT4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgbGlzdGVuZXIpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNsZWFyTGlzdGVuZXJzKCkge1xuICAgICAgICB0aGlzLm1hbnVhbExpc3RlbmVycy5mb3JFYWNoKChsaXN0ZW5lciwgZXZlbnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQsIGxpc3RlbmVyKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5tYW51YWxMaXN0ZW5lcnMuY2xlYXIoKTtcbiAgICB9XG5cbiAgICBzaG93KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkgeyByZXR1cm47IH1cblxuICAgICAgICBpZiAoIXRoaXMudG9vbHRpcCkge1xuICAgICAgICAgICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5jcmVhdGVPdmVybGF5KCk7XG4gICAgICAgICAgICB0aGlzLmRldGFjaCgpO1xuXG4gICAgICAgICAgICB0aGlzLnBvcnRhbCA9IHRoaXMucG9ydGFsIHx8IG5ldyBDb21wb25lbnRQb3J0YWwoTWNUb29sdGlwQ29tcG9uZW50LCB0aGlzLmhvc3RWaWV3KTtcblxuICAgICAgICAgICAgdGhpcy50b29sdGlwID0gdGhpcy5vdmVybGF5UmVmLmF0dGFjaCh0aGlzLnBvcnRhbCkuaW5zdGFuY2U7XG4gICAgICAgICAgICB0aGlzLnRvb2x0aXAuYWZ0ZXJIaWRkZW4oKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmRldGFjaCgpKTtcbiAgICAgICAgICAgIHRoaXMuaXNEeW5hbWljVG9vbHRpcCA9IHRydWU7XG4gICAgICAgICAgICBjb25zdCBwcm9wZXJ0aWVzID0gW1xuICAgICAgICAgICAgICAgICdtY1RpdGxlJyxcbiAgICAgICAgICAgICAgICAnbWNQbGFjZW1lbnQnLFxuICAgICAgICAgICAgICAgICdtY1RyaWdnZXInLFxuICAgICAgICAgICAgICAgICdtY1Rvb2x0aXBEaXNhYmxlZCcsXG4gICAgICAgICAgICAgICAgJ21jTW91c2VFbnRlckRlbGF5JyxcbiAgICAgICAgICAgICAgICAnbWNNb3VzZUxlYXZlRGVsYXknLFxuICAgICAgICAgICAgICAgICdtY1Rvb2x0aXBDbGFzcydcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBwcm9wZXJ0aWVzLmZvckVhY2goKHByb3BlcnR5KSA9PiB0aGlzLnVwZGF0ZUNvbXBWYWx1ZShwcm9wZXJ0eSwgdGhpc1twcm9wZXJ0eV0pKTtcblxuICAgICAgICAgICAgdGhpcy50b29sdGlwLm1jVmlzaWJsZUNoYW5nZVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiR1bnN1YnNjcmliZSksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1jVmlzaWJsZSA9IGRhdGE7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWNWaXNpYmxlQ2hhbmdlLmVtaXQoZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNUb29sdGlwT3BlbiA9IGRhdGE7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZVBvc2l0aW9uKCk7XG4gICAgICAgIHRoaXMudG9vbHRpcC5zaG93KCk7XG4gICAgfVxuXG4gICAgaGlkZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMudG9vbHRpcCkge1xuICAgICAgICAgICAgdGhpcy50b29sdGlwLmhpZGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBVcGRhdGVzIHRoZSBwb3NpdGlvbiBvZiB0aGUgY3VycmVudCB0b29sdGlwLiAqL1xuICAgIHVwZGF0ZVBvc2l0aW9uKCkge1xuICAgICAgICBpZiAoIXRoaXMub3ZlcmxheVJlZikge1xuICAgICAgICAgICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5jcmVhdGVPdmVybGF5KCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwb3NpdGlvbiA9IHRoaXMub3ZlcmxheVJlZi5nZXRDb25maWcoKS5wb3NpdGlvblN0cmF0ZWd5IGFzIEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneTtcbiAgICAgICAgY29uc3Qgb3JpZ2luID0gdGhpcy5nZXRPcmlnaW4oKTtcbiAgICAgICAgY29uc3Qgb3ZlcmxheSA9IHRoaXMuZ2V0T3ZlcmxheVBvc2l0aW9uKCk7XG5cbiAgICAgICAgcG9zaXRpb24ud2l0aFBvc2l0aW9ucyhbXG4gICAgICAgICAgICB7IC4uLm9yaWdpbi5tYWluLCAuLi5vdmVybGF5Lm1haW4gfSxcbiAgICAgICAgICAgIHsgLi4ub3JpZ2luLmZhbGxiYWNrLCAuLi5vdmVybGF5LmZhbGxiYWNrIH1cbiAgICAgICAgXSk7XG5cbiAgICAgICAgaWYgKHRoaXMudG9vbHRpcCkge1xuICAgICAgICAgICAgcG9zaXRpb24uYXBwbHkoKTtcbiAgICAgICAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgncmVzaXplJykpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgb3JpZ2luIHBvc2l0aW9uIGFuZCBhIGZhbGxiYWNrIHBvc2l0aW9uIGJhc2VkIG9uIHRoZSB1c2VyJ3MgcG9zaXRpb24gcHJlZmVyZW5jZS5cbiAgICAgKiBUaGUgZmFsbGJhY2sgcG9zaXRpb24gaXMgdGhlIGludmVyc2Ugb2YgdGhlIG9yaWdpbiAoZS5nLiBgJ2JlbG93JyAtPiAnYWJvdmUnYCkuXG4gICAgICovXG4gICAgZ2V0T3JpZ2luKCk6IHttYWluOiBPcmlnaW5Db25uZWN0aW9uUG9zaXRpb247IGZhbGxiYWNrOiBPcmlnaW5Db25uZWN0aW9uUG9zaXRpb259IHtcbiAgICAgICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLm1jUGxhY2VtZW50O1xuICAgICAgICBjb25zdCBpc0x0ciA9ICF0aGlzLmRpcmVjdGlvbiB8fCB0aGlzLmRpcmVjdGlvbi52YWx1ZSA9PT0gJ2x0cic7XG4gICAgICAgIGxldCBvcmlnaW5Qb3NpdGlvbjogT3JpZ2luQ29ubmVjdGlvblBvc2l0aW9uO1xuXG4gICAgICAgIGlmIChwb3NpdGlvbiA9PT0gJ3RvcCcgfHwgcG9zaXRpb24gPT09ICdib3R0b20nKSB7XG4gICAgICAgICAgICBvcmlnaW5Qb3NpdGlvbiA9IHsgb3JpZ2luWDogJ2NlbnRlcicsIG9yaWdpblk6IHBvc2l0aW9uID09PSAndG9wJyA/ICd0b3AnIDogJ2JvdHRvbScgfTtcbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIHBvc2l0aW9uID09PSAndG9wJyB8fFxuICAgICAgICAgICAgKHBvc2l0aW9uID09PSAnbGVmdCcgJiYgaXNMdHIpIHx8XG4gICAgICAgICAgICAocG9zaXRpb24gPT09ICdyaWdodCcgJiYgIWlzTHRyKSkge1xuICAgICAgICAgICAgb3JpZ2luUG9zaXRpb24gPSB7IG9yaWdpblg6ICdzdGFydCcsIG9yaWdpblk6ICdjZW50ZXInIH07XG4gICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBwb3NpdGlvbiA9PT0gJ2JvdHRvbScgfHxcbiAgICAgICAgICAgIChwb3NpdGlvbiA9PT0gJ3JpZ2h0JyAmJiBpc0x0cikgfHxcbiAgICAgICAgICAgIChwb3NpdGlvbiA9PT0gJ2xlZnQnICYmICFpc0x0cikpIHtcbiAgICAgICAgICAgIG9yaWdpblBvc2l0aW9uID0geyBvcmlnaW5YOiAnZW5kJywgb3JpZ2luWTogJ2NlbnRlcicgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IGdldE1jVG9vbHRpcEludmFsaWRQb3NpdGlvbkVycm9yKHBvc2l0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHt4LCB5fSA9IHRoaXMuaW52ZXJ0UG9zaXRpb24ob3JpZ2luUG9zaXRpb24ub3JpZ2luWCwgb3JpZ2luUG9zaXRpb24ub3JpZ2luWSk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG1haW46IG9yaWdpblBvc2l0aW9uLFxuICAgICAgICAgICAgZmFsbGJhY2s6IHsgb3JpZ2luWDogeCwgb3JpZ2luWTogeSB9XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqIFJldHVybnMgdGhlIG92ZXJsYXkgcG9zaXRpb24gYW5kIGEgZmFsbGJhY2sgcG9zaXRpb24gYmFzZWQgb24gdGhlIHVzZXIncyBwcmVmZXJlbmNlICovXG4gICAgZ2V0T3ZlcmxheVBvc2l0aW9uKCk6IHsgbWFpbjogT3ZlcmxheUNvbm5lY3Rpb25Qb3NpdGlvbjsgZmFsbGJhY2s6IE92ZXJsYXlDb25uZWN0aW9uUG9zaXRpb24gfSB7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5tY1BsYWNlbWVudDtcbiAgICAgICAgY29uc3QgaXNMdHIgPSAhdGhpcy5kaXJlY3Rpb24gfHwgdGhpcy5kaXJlY3Rpb24udmFsdWUgPT09ICdsdHInO1xuICAgICAgICBsZXQgb3ZlcmxheVBvc2l0aW9uOiBPdmVybGF5Q29ubmVjdGlvblBvc2l0aW9uO1xuXG4gICAgICAgIGlmIChwb3NpdGlvbiA9PT0gJ3RvcCcpIHtcbiAgICAgICAgICAgIG92ZXJsYXlQb3NpdGlvbiA9IHsgb3ZlcmxheVg6ICdjZW50ZXInLCBvdmVybGF5WTogJ2JvdHRvbScgfTtcbiAgICAgICAgfSBlbHNlIGlmIChwb3NpdGlvbiA9PT0gJ2JvdHRvbScpIHtcbiAgICAgICAgICAgIG92ZXJsYXlQb3NpdGlvbiA9IHsgb3ZlcmxheVg6ICdjZW50ZXInLCBvdmVybGF5WTogJ3RvcCcgfTtcbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIHBvc2l0aW9uID09PSAndG9wJyB8fFxuICAgICAgICAgICAgKHBvc2l0aW9uID09PSAnbGVmdCcgJiYgaXNMdHIpIHx8XG4gICAgICAgICAgICAocG9zaXRpb24gPT09ICdyaWdodCcgJiYgIWlzTHRyKSkge1xuICAgICAgICAgICAgb3ZlcmxheVBvc2l0aW9uID0geyBvdmVybGF5WDogJ2VuZCcsIG92ZXJsYXlZOiAnY2VudGVyJyB9O1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgcG9zaXRpb24gPT09ICdib3R0b20nIHx8XG4gICAgICAgICAgICAocG9zaXRpb24gPT09ICdyaWdodCcgJiYgaXNMdHIpIHx8XG4gICAgICAgICAgICAocG9zaXRpb24gPT09ICdsZWZ0JyAmJiAhaXNMdHIpKSB7XG4gICAgICAgICAgICBvdmVybGF5UG9zaXRpb24gPSB7IG92ZXJsYXlYOiAnc3RhcnQnLCBvdmVybGF5WTogJ2NlbnRlcicgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IGdldE1jVG9vbHRpcEludmFsaWRQb3NpdGlvbkVycm9yKHBvc2l0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHt4LCB5fSA9IHRoaXMuaW52ZXJ0UG9zaXRpb24ob3ZlcmxheVBvc2l0aW9uLm92ZXJsYXlYLCBvdmVybGF5UG9zaXRpb24ub3ZlcmxheVkpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBtYWluOiBvdmVybGF5UG9zaXRpb24sXG4gICAgICAgICAgICBmYWxsYmFjazogeyBvdmVybGF5WDogeCwgb3ZlcmxheVk6IHkgfVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKiBJbnZlcnRzIGFuIG92ZXJsYXkgcG9zaXRpb24uICovXG4gICAgcHJpdmF0ZSBpbnZlcnRQb3NpdGlvbih4OiBIb3Jpem9udGFsQ29ubmVjdGlvblBvcywgeTogVmVydGljYWxDb25uZWN0aW9uUG9zKSB7XG4gICAgICAgIGxldCBuZXdYOiBIb3Jpem9udGFsQ29ubmVjdGlvblBvcyA9IHg7XG4gICAgICAgIGxldCBuZXdZOiBWZXJ0aWNhbENvbm5lY3Rpb25Qb3MgPSB5O1xuICAgICAgICBpZiAodGhpcy5tY1BsYWNlbWVudCA9PT0gJ3RvcCcgfHwgdGhpcy5tY1BsYWNlbWVudCA9PT0gJ2JvdHRvbScpIHtcbiAgICAgICAgICAgIGlmICh5ID09PSAndG9wJykge1xuICAgICAgICAgICAgICAgIG5ld1kgPSAnYm90dG9tJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoeSA9PT0gJ2JvdHRvbScpIHtcbiAgICAgICAgICAgICAgICBuZXdZID0gJ3RvcCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoeCA9PT0gJ2VuZCcpIHtcbiAgICAgICAgICAgICAgICBuZXdYID0gJ3N0YXJ0JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoeCA9PT0gJ3N0YXJ0Jykge1xuICAgICAgICAgICAgICAgIG5ld1ggPSAnZW5kJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7IHg6IG5ld1gsIHk6IG5ld1kgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFRvb2x0aXBBcnJvd0VsZW0oKSB7XG4gICAgICAgIGNvbnN0IGFycm93Q2xhc3NOYW1lID0gJ21jLXRvb2x0aXAtYXJyb3cnO1xuXG4gICAgICAgIHJldHVybiB0aGlzLm92ZXJsYXlSZWY/Lm92ZXJsYXlFbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoYXJyb3dDbGFzc05hbWUpWzBdO1xuICAgIH1cbn1cbiJdfQ==
|
274
|
+
/** @nocollapse */ McExtendedTooltipTrigger.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: McExtendedTooltipTrigger, deps: [{ token: i2.Overlay }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i2.ScrollDispatcher }, { token: i0.ViewContainerRef }, { token: MC_TOOLTIP_SCROLL_STRATEGY }, { token: i3.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
275
|
+
/** @nocollapse */ McExtendedTooltipTrigger.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.13", type: McExtendedTooltipTrigger, selector: "[mcExtendedTooltip]", inputs: { content: ["mcExtendedTooltip", "content"], header: ["mcTooltipHeader", "header"] }, host: { listeners: { "keydown": "handleKeydown($event)", "touchend": "handleTouchend()" }, properties: { "class.mc-tooltip_open": "isOpen" } }, exportAs: ["mcExtendedTooltip"], usesInheritance: true, ngImport: i0 });
|
276
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: McExtendedTooltipTrigger, decorators: [{
|
277
|
+
type: Directive,
|
278
|
+
args: [{
|
279
|
+
selector: '[mcExtendedTooltip]',
|
280
|
+
exportAs: 'mcExtendedTooltip',
|
281
|
+
host: {
|
282
|
+
'[class.mc-tooltip_open]': 'isOpen',
|
283
|
+
'(keydown)': 'handleKeydown($event)',
|
284
|
+
'(touchend)': 'handleTouchend()'
|
285
|
+
}
|
286
|
+
}]
|
287
|
+
}], ctorParameters: function () { return [{ type: i2.Overlay }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i2.ScrollDispatcher }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{
|
288
|
+
type: Inject,
|
289
|
+
args: [MC_TOOLTIP_SCROLL_STRATEGY]
|
290
|
+
}] }, { type: i3.Directionality, decorators: [{
|
291
|
+
type: Optional
|
292
|
+
}] }]; }, propDecorators: { content: [{
|
293
|
+
type: Input,
|
294
|
+
args: ['mcExtendedTooltip']
|
295
|
+
}], header: [{
|
296
|
+
type: Input,
|
297
|
+
args: ['mcTooltipHeader']
|
298
|
+
}] } });
|
299
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9tb3NhaWMvdG9vbHRpcC90b29sdGlwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21vc2FpYy90b29sdGlwL3Rvb2x0aXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sRUFDSCxPQUFPLEVBQ1AsZ0JBQWdCLEVBRW5CLE1BQU0sc0JBQXNCLENBQUM7QUFFOUIsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixjQUFjLEVBQ2QsS0FBSyxFQUNMLE1BQU0sRUFDTixRQUFRLEVBQ1IsTUFBTSxFQUdOLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZILE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFN0IsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7O0FBRzNELE1BQU0sQ0FBTixJQUFZLGVBSVg7QUFKRCxXQUFZLGVBQWU7SUFDdkIsc0NBQW1CLENBQUE7SUFDbkIsc0NBQW1CLENBQUE7SUFDbkIsd0NBQXFCLENBQUE7QUFDekIsQ0FBQyxFQUpXLGVBQWUsS0FBZixlQUFlLFFBSTFCO0FBRUQsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxjQUFjLENBQXVCLHNCQUFz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S0FBSzt1QkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3Rpb25hbGl0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge1xuICAgIE92ZXJsYXksXG4gICAgU2Nyb2xsRGlzcGF0Y2hlcixcbiAgICBTY3JvbGxTdHJhdGVneVxufSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBPdmVybGF5Q29uZmlnIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXkvb3ZlcmxheS1jb25maWcnO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEluamVjdCxcbiAgICBJbmplY3Rpb25Ub2tlbixcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFR5cGUsXG4gICAgVmlld0NvbnRhaW5lclJlZixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1jUG9wVXAsIE1jUG9wVXBUcmlnZ2VyLCBQb3BVcFBsYWNlbWVudHMsIFBvcFVwVHJpZ2dlcnMsIFBPU0lUSU9OX1RPX0NTU19NQVAgfSBmcm9tICdAcHRzZWN1cml0eS9tb3NhaWMvY29yZSc7XG5pbXBvcnQgeyBtZXJnZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBtY1Rvb2x0aXBBbmltYXRpb25zIH0gZnJvbSAnLi90b29sdGlwLmFuaW1hdGlvbnMnO1xuXG5cbmV4cG9ydCBlbnVtIFRvb2x0aXBNb2RpZmllciB7XG4gICAgRGVmYXVsdCA9ICdkZWZhdWx0JyxcbiAgICBXYXJuaW5nID0gJ3dhcm5pbmcnLFxuICAgIEV4dGVuZGVkID0gJ2V4dGVuZGVkJ1xufVxuXG5leHBvcnQgY29uc3QgTUNfVE9PTFRJUF9PUEVOX1RJTUUgPSBuZXcgSW5qZWN0aW9uVG9rZW48KCkgPT4gU2Nyb2xsU3RyYXRlZ3k+KCdtYy10b29sdGlwLW9wZW4tdGltZScpO1xuXG4vKiogQGRvY3MtcHJpdmF0ZSAqL1xuZXhwb3J0IGNvbnN0IE1DX1RPT0xUSVBfT1BFTl9USU1FX1BST1ZJREVSID0ge1xuICAgIHByb3ZpZGU6IE1DX1RPT0xUSVBfT1BFTl9USU1FLFxuICAgIHVzZVZhbHVlOiB7IHZhbHVlOiAwIH1cbn07XG5cbmV4cG9ydCBjb25zdCBNSU5fVElNRV9GT1JfREVMQVkgPSAyMDAwO1xuXG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbWMtdG9vbHRpcC1jb21wb25lbnQnLFxuICAgIGFuaW1hdGlvbnM6IFttY1Rvb2x0aXBBbmltYXRpb25zLnRvb2x0aXBTdGF0ZV0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Rvb2x0aXAuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3Rvb2x0aXAuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbTUNfVE9PTFRJUF9PUEVOX1RJTUVfUFJPVklERVJdXG59KVxuZXhwb3J0IGNsYXNzIE1jVG9vbHRpcENvbXBvbmVudCBleHRlbmRzIE1jUG9wVXAge1xuICAgIHByZWZpeCA9ICdtYy10b29sdGlwJztcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIEBJbmplY3QoTUNfVE9PTFRJUF9PUEVOX1RJTUUpIHByaXZhdGUgb3BlblRpbWVcbiAgICApIHtcbiAgICAgICAgc3VwZXIoY2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgIH1cblxuICAgIHNob3coZGVsYXk6IG51bWJlcikge1xuICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tbWFnaWMtbnVtYmVyc1xuICAgICAgICBzdXBlci5zaG93KERhdGUubm93KCkgLSB0aGlzLm9wZW5UaW1lLnZhbHVlIDwgTUlOX1RJTUVfRk9SX0RFTEFZID8gMCA6IGRlbGF5KTtcblxuICAgICAgICB0aGlzLm9wZW5UaW1lLnZhbHVlID0gRGF0ZS5ub3coKTtcbiAgICB9XG5cbiAgICB1cGRhdGVDbGFzc01hcChwbGFjZW1lbnQ6IHN0cmluZywgY3VzdG9tQ2xhc3M6IHN0cmluZywgeyBtb2RpZmllciB9KSB7XG4gICAgICAgIGNvbnN0IGNsYXNzTWFwID0ge1xuICAgICAgICAgICAgW2Ake3RoaXMucHJlZml4fV8ke21vZGlmaWVyfWBdOiB0cnVlXG4gICAgICAgIH07XG5cbiAgICAgICAgc3VwZXIudXBkYXRlQ2xhc3NNYXAocGxhY2VtZW50LCBjdXN0b21DbGFzcywgY2xhc3NNYXApO1xuICAgIH1cbn1cblxuZXhwb3J0IGNvbnN0IE1DX1RPT0xUSVBfU0NST0xMX1NUUkFURUdZID1cbiAgICBuZXcgSW5qZWN0aW9uVG9rZW48KCkgPT4gU2Nyb2xsU3RyYXRlZ3k+KCdtYy10b29sdGlwLXNjcm9sbC1zdHJhdGVneScpO1xuXG4vKiogQGRvY3MtcHJpdmF0ZSAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1jVG9vbHRpcFNjcm9sbFN0cmF0ZWd5RmFjdG9yeShvdmVybGF5OiBPdmVybGF5KTogKCkgPT4gU2Nyb2xsU3RyYXRlZ3kge1xuICAgIHJldHVybiAoKSA9PiBvdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbih7IHNjcm9sbFRocm90dGxlOiAyMCB9KTtcbn1cblxuLyoqIEBkb2NzLXByaXZhdGUgKi9cbmV4cG9ydCBjb25zdCBNQ19UT09MVElQX1NDUk9MTF9TVFJBVEVHWV9GQUNUT1JZX1BST1ZJREVSID0ge1xuICAgIHByb3ZpZGU6IE1DX1RPT0xUSVBfU0NST0xMX1NUUkFURUdZLFxuICAgIGRlcHM6IFtPdmVybGF5XSxcbiAgICB1c2VGYWN0b3J5OiBtY1Rvb2x0aXBTY3JvbGxTdHJhdGVneUZhY3Rvcnlcbn07XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW21jVG9vbHRpcF0nLFxuICAgIGV4cG9ydEFzOiAnbWNUb29sdGlwJyxcbiAgICBob3N0OiB7XG4gICAgICAgICdbY2xhc3MubWMtdG9vbHRpcF9vcGVuXSc6ICdpc09wZW4nLFxuXG4gICAgICAgICcoa2V5ZG93biknOiAnaGFuZGxlS2V5ZG93bigkZXZlbnQpJyxcbiAgICAgICAgJyh0b3VjaGVuZCknOiAnaGFuZGxlVG91Y2hlbmQoKSdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIE1jVG9vbHRpcFRyaWdnZXIgZXh0ZW5kcyBNY1BvcFVwVHJpZ2dlcjxNY1Rvb2x0aXBDb21wb25lbnQ+IHtcbiAgICBASW5wdXQoJ21jVmlzaWJsZScpXG4gICAgZ2V0IHRvb2x0aXBWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy52aXNpYmxlO1xuICAgIH1cblxuICAgIHNldCB0b29sdGlwVmlzaWJsZSh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICBzdXBlci51cGRhdGVWaXNpYmxlKHZhbHVlKTtcbiAgICB9XG5cbiAgICBASW5wdXQoJ21jUGxhY2VtZW50JylcbiAgICBnZXQgdG9vbHRpcFBsYWNlbWVudCgpOiBQb3BVcFBsYWNlbWVudHMge1xuICAgICAgICByZXR1cm4gdGhpcy5wbGFjZW1lbnQ7XG4gICAgfVxuXG4gICAgc2V0IHRvb2x0aXBQbGFjZW1lbnQodmFsdWU6IFBvcFVwUGxhY2VtZW50cykge1xuICAgICAgICBzdXBlci51cGRhdGVQbGFjZW1lbnQodmFsdWUpO1xuICAgIH1cblxuICAgIEBJbnB1dCgnbWNQbGFjZW1lbnRQcmlvcml0eScpXG4gICAgZ2V0IHRvb2x0aXBQbGFjZW1lbnRQcmlvcml0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGxhY2VtZW50UHJpb3JpdHk7XG4gICAgfVxuXG4gICAgc2V0IHRvb2x0aXBQbGFjZW1lbnRQcmlvcml0eSh2YWx1ZSkge1xuICAgICAgICBzdXBlci51cGRhdGVQbGFjZW1lbnRQcmlvcml0eSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgQElucHV0KCdtY1Rvb2x0aXAnKVxuICAgIGdldCBjb250ZW50KCk6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudDtcbiAgICB9XG5cbiAgICBzZXQgY29udGVudChjb250ZW50OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+KSB7XG4gICAgICAgIHRoaXMuX2NvbnRlbnQgPSBjb250ZW50O1xuXG4gICAgICAgIHRoaXMudXBkYXRlRGF0YSgpO1xuICAgIH1cblxuICAgIEBJbnB1dCgnbWNUb29sdGlwRGlzYWJsZWQnKVxuICAgIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICAgIH1cblxuICAgIHNldCBkaXNhYmxlZCh2YWx1ZSkge1xuICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgQElucHV0KCdtY0VudGVyRGVsYXknKSBlbnRlckRlbGF5ID0gNDAwO1xuICAgIEBJbnB1dCgnbWNMZWF2ZURlbGF5JykgbGVhdmVEZWxheSA9IDA7XG5cbiAgICBASW5wdXQoJ21jVHJpZ2dlcicpXG4gICAgZ2V0IHRyaWdnZXIoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RyaWdnZXI7XG4gICAgfVxuXG4gICAgc2V0IHRyaWdnZXIodmFsdWU6IHN0cmluZykge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuX3RyaWdnZXIgPSB2YWx1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3RyaWdnZXIgPSBgJHtQb3BVcFRyaWdnZXJzLkhvdmVyfSwgJHtQb3BVcFRyaWdnZXJzLkZvY3VzfWA7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmluaXRMaXN0ZW5lcnMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF90cmlnZ2VyID0gYCR7UG9wVXBUcmlnZ2Vycy5Ib3Zlcn0sICR7UG9wVXBUcmlnZ2Vycy5Gb2N1c31gO1xuXG4gICAgQElucHV0KCdtY1Rvb2x0aXBDbGFzcycpXG4gICAgZ2V0IGN1c3RvbUNsYXNzKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jdXN0b21DbGFzcztcbiAgICB9XG5cbiAgICBzZXQgY3VzdG9tQ2xhc3ModmFsdWU6IHN0cmluZykge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuX2N1c3RvbUNsYXNzID0gdmFsdWU7XG5cbiAgICAgICAgICAgIHRoaXMudXBkYXRlQ2xhc3NNYXAoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2N1c3RvbUNsYXNzID0gJyc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAT3V0cHV0KCdtY1BsYWNlbWVudENoYW5nZScpIHBsYWNlbWVudENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoJ21jVmlzaWJsZUNoYW5nZScpIHZpc2libGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICBwcm90ZWN0ZWQgb3JpZ2luU2VsZWN0b3IgPSAnLm1jLXRvb2x0aXAnO1xuXG4gICAgcHJvdGVjdGVkIG92ZXJsYXlDb25maWc6IE92ZXJsYXlDb25maWcgPSB7XG4gICAgICAgIHBhbmVsQ2xhc3M6ICdtYy10b29sdGlwLXBhbmVsJ1xuICAgIH07XG5cbiAgICBwcm90ZWN0ZWQgbW9kaWZpZXI6IFRvb2x0aXBNb2RpZmllciA9IFRvb2x0aXBNb2RpZmllci5EZWZhdWx0O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIG92ZXJsYXk6IE92ZXJsYXksXG4gICAgICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIG5nWm9uZTogTmdab25lLFxuICAgICAgICBzY3JvbGxEaXNwYXRjaGVyOiBTY3JvbGxEaXNwYXRjaGVyLFxuICAgICAgICBob3N0VmlldzogVmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgQEluamVjdChNQ19UT09MVElQX1NDUk9MTF9TVFJBVEVHWSkgc2Nyb2xsU3RyYXRlZ3ksXG4gICAgICAgIEBPcHRpb25hbCgpIGRpcmVjdGlvbjogRGlyZWN0aW9uYWxpdHlcbiAgICApIHtcbiAgICAgICAgc3VwZXIob3ZlcmxheSwgZWxlbWVudFJlZiwgbmdab25lLCBzY3JvbGxEaXNwYXRjaGVyLCBob3N0Vmlldywgc2Nyb2xsU3RyYXRlZ3ksIGRpcmVjdGlvbik7XG4gICAgfVxuXG4gICAgdXBkYXRlRGF0YSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmluc3RhbmNlKSB7IHJldHVybjsgfVxuXG4gICAgICAgIHRoaXMuaW5zdGFuY2UuY29udGVudCA9IHRoaXMuY29udGVudDtcbiAgICB9XG5cbiAgICBjbG9zaW5nQWN0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIG1lcmdlKFxuICAgICAgICAgICAgdGhpcy5vdmVybGF5UmVmIS5vdXRzaWRlUG9pbnRlckV2ZW50cygpLFxuICAgICAgICAgICAgdGhpcy5vdmVybGF5UmVmIS5kZXRhY2htZW50cygpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0T3ZlcmxheUhhbmRsZUNvbXBvbmVudFR5cGUoKTogVHlwZTxNY1Rvb2x0aXBDb21wb25lbnQ+IHtcbiAgICAgICAgcmV0dXJuIE1jVG9vbHRpcENvbXBvbmVudDtcbiAgICB9XG5cbiAgICB1cGRhdGVDbGFzc01hcChuZXdQbGFjZW1lbnQ6IHN0cmluZyA9IHRoaXMucGxhY2VtZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5pbnN0YW5jZSkgeyByZXR1cm47IH1cblxuICAgICAgICB0aGlzLmluc3RhbmNlLnVwZGF0ZUNsYXNzTWFwKFxuICAgICAgICAgICAgUE9TSVRJT05fVE9fQ1NTX01BUFtuZXdQbGFjZW1lbnRdLFxuICAgICAgICAgICAgdGhpcy5jdXN0b21DbGFzcyxcbiAgICAgICAgICAgIHsgbW9kaWZpZXI6IHRoaXMubW9kaWZpZXIgfVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmluc3RhbmNlLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbn1cblxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1ttY1dhcm5pbmdUb29sdGlwXScsXG4gICAgZXhwb3J0QXM6ICdtY1dhcm5pbmdUb29sdGlwJyxcbiAgICBob3N0OiB7XG4gICAgICAgICdbY2xhc3MubWMtdG9vbHRpcF9vcGVuXSc6ICdpc09wZW4nLFxuXG4gICAgICAgICcoa2V5ZG93biknOiAnaGFuZGxlS2V5ZG93bigkZXZlbnQpJyxcbiAgICAgICAgJyh0b3VjaGVuZCknOiAnaGFuZGxlVG91Y2hlbmQoKSdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIE1jV2FybmluZ1Rvb2x0aXBUcmlnZ2VyIGV4dGVuZHMgTWNUb29sdGlwVHJpZ2dlciB7XG4gICAgQElucHV0KCdtY1dhcm5pbmdUb29sdGlwJylcbiAgICBnZXQgY29udGVudCgpOiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRlbnQ7XG4gICAgfVxuXG4gICAgc2V0IGNvbnRlbnQoY29udGVudDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55Pikge1xuICAgICAgICB0aGlzLl9jb250ZW50ID0gY29udGVudDtcblxuICAgICAgICB0aGlzLnVwZGF0ZURhdGEoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgbW9kaWZpZXI6IFRvb2x0aXBNb2RpZmllciA9IFRvb2x0aXBNb2RpZmllci5XYXJuaW5nO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIG92ZXJsYXk6IE92ZXJsYXksXG4gICAgICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIG5nWm9uZTogTmdab25lLFxuICAgICAgICBzY3JvbGxEaXNwYXRjaGVyOiBTY3JvbGxEaXNwYXRjaGVyLFxuICAgICAgICBob3N0VmlldzogVmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgQEluamVjdChNQ19UT09MVElQX1NDUk9MTF9TVFJBVEVHWSkgc2Nyb2xsU3RyYXRlZ3ksXG4gICAgICAgIEBPcHRpb25hbCgpIGRpcmVjdGlvbjogRGlyZWN0aW9uYWxpdHlcbiAgICApIHtcbiAgICAgICAgc3VwZXIob3ZlcmxheSwgZWxlbWVudFJlZiwgbmdab25lLCBzY3JvbGxEaXNwYXRjaGVyLCBob3N0Vmlldywgc2Nyb2xsU3RyYXRlZ3ksIGRpcmVjdGlvbik7XG4gICAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1ttY0V4dGVuZGVkVG9vbHRpcF0nLFxuICAgIGV4cG9ydEFzOiAnbWNFeHRlbmRlZFRvb2x0aXAnLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1tjbGFzcy5tYy10b29sdGlwX29wZW5dJzogJ2lzT3BlbicsXG5cbiAgICAgICAgJyhrZXlkb3duKSc6ICdoYW5kbGVLZXlkb3duKCRldmVudCknLFxuICAgICAgICAnKHRvdWNoZW5kKSc6ICdoYW5kbGVUb3VjaGVuZCgpJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgTWNFeHRlbmRlZFRvb2x0aXBUcmlnZ2VyIGV4dGVuZHMgTWNUb29sdGlwVHJpZ2dlciB7XG4gICAgQElucHV0KCdtY0V4dGVuZGVkVG9vbHRpcCcpXG4gICAgZ2V0IGNvbnRlbnQoKTogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb250ZW50O1xuICAgIH1cblxuICAgIHNldCBjb250ZW50KGNvbnRlbnQ6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4pIHtcbiAgICAgICAgdGhpcy5fY29udGVudCA9IGNvbnRlbnQ7XG5cbiAgICAgICAgdGhpcy51cGRhdGVEYXRhKCk7XG4gICAgfVxuXG4gICAgQElucHV0KCdtY1Rvb2x0aXBIZWFkZXInKVxuICAgIGdldCBoZWFkZXIoKTogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oZWFkZXI7XG4gICAgfVxuXG4gICAgc2V0IGhlYWRlcihoZWFkZXI6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4pIHtcbiAgICAgICAgdGhpcy5faGVhZGVyID0gaGVhZGVyO1xuXG4gICAgICAgIHRoaXMudXBkYXRlRGF0YSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2hlYWRlcjogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIHByb3RlY3RlZCBtb2RpZmllcjogVG9vbHRpcE1vZGlmaWVyID0gVG9vbHRpcE1vZGlmaWVyLkV4dGVuZGVkO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIG92ZXJsYXk6IE92ZXJsYXksXG4gICAgICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIG5nWm9uZTogTmdab25lLFxuICAgICAgICBzY3JvbGxEaXNwYXRjaGVyOiBTY3JvbGxEaXNwYXRjaGVyLFxuICAgICAgICBob3N0VmlldzogVmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgQEluamVjdChNQ19UT09MVElQX1NDUk9MTF9TVFJBVEVHWSkgc2Nyb2xsU3RyYXRlZ3ksXG4gICAgICAgIEBPcHRpb25hbCgpIGRpcmVjdGlvbjogRGlyZWN0aW9uYWxpdHlcbiAgICApIHtcbiAgICAgICAgc3VwZXIob3ZlcmxheSwgZWxlbWVudFJlZiwgbmdab25lLCBzY3JvbGxEaXNwYXRjaGVyLCBob3N0Vmlldywgc2Nyb2xsU3RyYXRlZ3ksIGRpcmVjdGlvbik7XG4gICAgfVxuXG4gICAgdXBkYXRlRGF0YSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmluc3RhbmNlKSB7IHJldHVybjsgfVxuXG4gICAgICAgIHN1cGVyLnVwZGF0ZURhdGEoKTtcbiAgICAgICAgdGhpcy5pbnN0YW5jZS5oZWFkZXIgPSB0aGlzLmhlYWRlcjtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibWMtdG9vbHRpcFwiXG4gICAgIFtuZ0NsYXNzXT1cImNsYXNzTWFwXCJcbiAgICAgW0BzdGF0ZV09XCJ2aXNpYmlsaXR5XCJcbiAgICAgKEBzdGF0ZS5zdGFydCk9XCJhbmltYXRpb25TdGFydCgpXCJcbiAgICAgKEBzdGF0ZS5kb25lKT1cImFuaW1hdGlvbkRvbmUoJGV2ZW50KVwiPlxuXG4gICAgPGRpdiBjbGFzcz1cIm1jLXRvb2x0aXBfX2lubmVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYy10b29sdGlwX19hcnJvd1wiPjwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYy10b29sdGlwX19oZWFkZXJcIiAqbmdJZj1cImhlYWRlclwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzVGVtcGxhdGVSZWYoaGVhZGVyKVwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIiRhbnkoaGVhZGVyKVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1RlbXBsYXRlUmVmKGhlYWRlcilcIj5cbiAgICAgICAgICAgICAgICA8ZGl2Pnt7IGhlYWRlciB9fTwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWMtdG9vbHRpcF9fY29udGVudFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzVGVtcGxhdGVSZWYoY29udGVudClcIiBbbmdUZW1wbGF0ZU91dGxldF09XCIkYW55KGNvbnRlbnQpXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzVGVtcGxhdGVSZWYoY29udGVudClcIj5cbiAgICAgICAgICAgICAgICA8ZGl2Pnt7IGNvbnRlbnQgfX08L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
|