@taiga-ui/core 4.66.0 → 5.0.0-canary.8b64ec1
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/README.md +1 -1
- package/classes/accessors.d.ts +2 -2
- package/classes/driver.d.ts +1 -1
- package/components/button/button.directive.d.ts +2 -3
- package/components/button/button.options.d.ts +1 -1
- package/components/calendar/calendar-sheet.component.d.ts +2 -7
- package/components/calendar/calendar-sheet.options.d.ts +1 -3
- package/{pipes/calendar-sheet → components/calendar}/calendar-sheet.pipe.d.ts +2 -2
- package/components/calendar/calendar-spin.component.d.ts +1 -0
- package/components/calendar/calendar-year.component.d.ts +1 -1
- package/components/calendar/calendar.options.d.ts +9 -0
- package/components/calendar/index.d.ts +3 -0
- package/{pipes/order-week-days → components/calendar}/order-week-days.pipe.d.ts +1 -1
- package/components/cell/cell.directive.d.ts +9 -0
- package/components/cell/cell.options.d.ts +6 -0
- package/components/cell/index.d.ts +2 -0
- package/components/data-list/data-list.component.d.ts +8 -12
- package/components/data-list/data-list.d.ts +3 -4
- package/components/data-list/data-list.tokens.d.ts +1 -20
- package/components/data-list/index.d.ts +3 -4
- package/components/data-list/opt-group.directive.d.ts +2 -2
- package/components/data-list/option-content.directive.d.ts +14 -0
- package/components/data-list/option-with-value.directive.d.ts +9 -0
- package/components/data-list/option.directive.d.ts +19 -0
- package/components/error/error.component.d.ts +6 -8
- package/components/error/error.d.ts +4 -0
- package/components/error/error.directive.d.ts +19 -0
- package/components/error/error.pipe.d.ts +10 -0
- package/components/error/index.d.ts +3 -0
- package/components/expand/expand.component.d.ts +9 -28
- package/components/expand/index.d.ts +0 -2
- package/components/icon/icon.component.d.ts +6 -11
- package/components/index.d.ts +3 -3
- package/components/input/index.d.ts +2 -0
- package/components/input/input.d.ts +5 -0
- package/components/input/input.directive.d.ts +29 -0
- package/components/label/label.directive.d.ts +1 -1
- package/components/link/index.d.ts +0 -1
- package/components/link/link.directive.d.ts +8 -6
- package/components/loader/loader.component.d.ts +7 -7
- package/components/loader/loader.options.d.ts +1 -3
- package/components/notification/index.d.ts +3 -0
- package/components/notification/notification.component.d.ts +14 -0
- package/components/notification/notification.d.ts +3 -0
- package/components/notification/notification.directive.d.ts +7 -12
- package/components/notification/notification.options.d.ts +10 -7
- package/components/notification/notification.service.d.ts +17 -0
- package/components/root/root.component.d.ts +4 -7
- package/components/scrollbar/scroll-into-view.directive.d.ts +3 -2
- package/components/scrollbar/scroll-ref.directive.d.ts +2 -0
- package/components/scrollbar/scrollbar.component.d.ts +1 -5
- package/components/scrollbar/scrollbar.directive.d.ts +2 -2
- package/components/scrollbar/scrollbar.options.d.ts +1 -1
- package/components/spin-button/spin-button.component.d.ts +9 -10
- package/components/textfield/index.d.ts +1 -4
- package/components/textfield/textfield-content.directive.d.ts +3 -2
- package/components/textfield/textfield-icon.d.ts +3 -3
- package/components/textfield/textfield-multi/textfield-item.component.d.ts +3 -2
- package/components/textfield/textfield-multi/textfield-multi.component.d.ts +9 -15
- package/components/textfield/textfield.component.d.ts +20 -35
- package/components/textfield/textfield.d.ts +2 -4
- package/components/textfield/textfield.options.d.ts +8 -11
- package/{directives → components}/title/title.directive.d.ts +2 -3
- package/directives/appearance/appearance.directive.d.ts +5 -13
- package/directives/appearance/appearance.options.d.ts +1 -2
- package/directives/button-x/button-x.directive.d.ts +6 -0
- package/directives/button-x/index.d.ts +1 -0
- package/directives/date-format/date-format.directive.d.ts +3 -7
- package/directives/group/group.directive.d.ts +7 -7
- package/directives/group/group.options.d.ts +1 -3
- package/directives/icons/icons.bindings.d.ts +5 -0
- package/directives/icons/icons.directive.d.ts +8 -16
- package/directives/icons/index.d.ts +1 -0
- package/directives/index.d.ts +1 -5
- package/directives/items-handlers/items-handlers.directive.d.ts +5 -9
- package/directives/items-handlers/items-handlers.tokens.d.ts +4 -4
- package/directives/number-format/number-format.directive.d.ts +3 -7
- package/fesm2022/taiga-ui-core-classes.mjs +9 -11
- package/fesm2022/taiga-ui-core-classes.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-button.mjs +13 -21
- package/fesm2022/taiga-ui-core-components-button.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-calendar.mjs +144 -47
- package/fesm2022/taiga-ui-core-components-calendar.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-cell.mjs +45 -0
- package/fesm2022/taiga-ui-core-components-cell.mjs.map +1 -0
- package/fesm2022/taiga-ui-core-components-data-list.mjs +113 -284
- package/fesm2022/taiga-ui-core-components-data-list.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-error.mjs +110 -26
- package/fesm2022/taiga-ui-core-components-error.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-expand.mjs +34 -132
- package/fesm2022/taiga-ui-core-components-expand.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-icon.mjs +22 -40
- package/fesm2022/taiga-ui-core-components-icon.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-input.mjs +100 -0
- package/fesm2022/taiga-ui-core-components-input.mjs.map +1 -0
- package/fesm2022/taiga-ui-core-components-label.mjs +13 -18
- package/fesm2022/taiga-ui-core-components-label.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-link.mjs +16 -36
- package/fesm2022/taiga-ui-core-components-link.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-loader.mjs +20 -40
- package/fesm2022/taiga-ui-core-components-loader.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-notification.mjs +107 -66
- package/fesm2022/taiga-ui-core-components-notification.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-root.mjs +23 -60
- package/fesm2022/taiga-ui-core-components-root.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-scrollbar.mjs +73 -87
- package/fesm2022/taiga-ui-core-components-scrollbar.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-spin-button.mjs +18 -31
- package/fesm2022/taiga-ui-core-components-spin-button.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-textfield.mjs +136 -435
- package/fesm2022/taiga-ui-core-components-textfield.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-title.mjs +37 -0
- package/fesm2022/taiga-ui-core-components-title.mjs.map +1 -0
- package/fesm2022/taiga-ui-core-components.mjs +3 -3
- package/fesm2022/taiga-ui-core-directives-appearance.mjs +32 -69
- package/fesm2022/taiga-ui-core-directives-appearance.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-directives-button-x.mjs +51 -0
- package/fesm2022/taiga-ui-core-directives-button-x.mjs.map +1 -0
- package/fesm2022/taiga-ui-core-directives-date-format.mjs +26 -20
- package/fesm2022/taiga-ui-core-directives-date-format.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-directives-group.mjs +25 -40
- package/fesm2022/taiga-ui-core-directives-group.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-directives-icons.mjs +35 -45
- package/fesm2022/taiga-ui-core-directives-icons.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-directives-items-handlers.mjs +18 -42
- package/fesm2022/taiga-ui-core-directives-items-handlers.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-directives-number-format.mjs +32 -20
- package/fesm2022/taiga-ui-core-directives-number-format.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-directives.mjs +1 -5
- package/fesm2022/taiga-ui-core-directives.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-pipes-format-number.mjs +21 -15
- package/fesm2022/taiga-ui-core-pipes-format-number.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-pipes.mjs +0 -8
- package/fesm2022/taiga-ui-core-pipes.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-portals-alert.mjs +73 -0
- package/fesm2022/taiga-ui-core-portals-alert.mjs.map +1 -0
- package/fesm2022/taiga-ui-core-portals-dialog.mjs +159 -0
- package/fesm2022/taiga-ui-core-portals-dialog.mjs.map +1 -0
- package/fesm2022/{taiga-ui-core-directives-dropdown.mjs → taiga-ui-core-portals-dropdown.mjs} +249 -414
- package/fesm2022/taiga-ui-core-portals-dropdown.mjs.map +1 -0
- package/fesm2022/taiga-ui-core-portals-hint.mjs +552 -0
- package/fesm2022/taiga-ui-core-portals-hint.mjs.map +1 -0
- package/fesm2022/taiga-ui-core-portals-modal.mjs +89 -0
- package/fesm2022/taiga-ui-core-portals-modal.mjs.map +1 -0
- package/fesm2022/taiga-ui-core-portals-popup.mjs +56 -0
- package/fesm2022/taiga-ui-core-portals-popup.mjs.map +1 -0
- package/fesm2022/taiga-ui-core-portals.mjs +11 -0
- package/fesm2022/taiga-ui-core-portals.mjs.map +1 -0
- package/fesm2022/taiga-ui-core-services.mjs +17 -81
- package/fesm2022/taiga-ui-core-services.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-tokens.mjs +62 -81
- package/fesm2022/taiga-ui-core-tokens.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-utils-dom.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-utils-format.mjs +1 -22
- package/fesm2022/taiga-ui-core-utils-format.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-utils-miscellaneous.mjs +55 -19
- package/fesm2022/taiga-ui-core-utils-miscellaneous.mjs.map +1 -1
- package/fesm2022/taiga-ui-core.mjs +1 -1
- package/index.d.ts +1 -1
- package/package.json +61 -182
- package/pipes/format-number/format-number.pipe.d.ts +6 -4
- package/pipes/index.d.ts +0 -8
- package/portals/alert/alert.directive.d.ts +11 -0
- package/portals/alert/alert.service.d.ts +12 -0
- package/portals/alert/index.d.ts +2 -0
- package/portals/dialog/dialog.component.d.ts +14 -0
- package/portals/dialog/dialog.directive.d.ts +8 -0
- package/{components → portals}/dialog/dialog.factory.d.ts +1 -1
- package/portals/dialog/dialog.options.d.ts +25 -0
- package/{components/dialog/dialog-close.service.d.ts → portals/dialog/dialog.providers.d.ts} +2 -0
- package/portals/dialog/dialog.service.d.ts +10 -0
- package/portals/dialog/index.d.ts +6 -0
- package/portals/dropdown/dropdown-close.directive.d.ts +15 -0
- package/portals/dropdown/dropdown-content.directive.d.ts +9 -0
- package/{directives → portals}/dropdown/dropdown-context.directive.d.ts +0 -1
- package/{directives → portals}/dropdown/dropdown-hover.directive.d.ts +5 -10
- package/{directives → portals}/dropdown/dropdown-hover.options.d.ts +1 -3
- package/{directives → portals}/dropdown/dropdown-manual.directive.d.ts +2 -2
- package/portals/dropdown/dropdown-open.directive.d.ts +29 -0
- package/{directives → portals}/dropdown/dropdown-options.directive.d.ts +1 -5
- package/{directives → portals}/dropdown/dropdown-position-sided.directive.d.ts +3 -3
- package/{directives → portals}/dropdown/dropdown-position.directive.d.ts +6 -6
- package/{directives → portals}/dropdown/dropdown-selection.directive.d.ts +4 -5
- package/{directives → portals}/dropdown/dropdown.bindings.d.ts +0 -1
- package/{directives → portals}/dropdown/dropdown.d.ts +2 -3
- package/{directives → portals}/dropdown/dropdown.directive.d.ts +6 -8
- package/{directives → portals}/dropdown/index.d.ts +2 -4
- package/{directives → portals}/hint/hint-describe.directive.d.ts +4 -6
- package/{directives → portals}/hint/hint-host.directive.d.ts +2 -2
- package/{directives → portals}/hint/hint-hover.directive.d.ts +3 -4
- package/{directives → portals}/hint/hint-manual.directive.d.ts +2 -2
- package/portals/hint/hint-options.directive.d.ts +17 -0
- package/{directives → portals}/hint/hint-overflow.directive.d.ts +2 -2
- package/{directives → portals}/hint/hint-position.directive.d.ts +7 -8
- package/{directives → portals}/hint/hint-unstyled.component.d.ts +2 -7
- package/portals/hint/hint.component.d.ts +29 -0
- package/{directives → portals}/hint/hint.d.ts +1 -2
- package/portals/hint/hint.directive.d.ts +24 -0
- package/{directives → portals}/hint/index.d.ts +0 -2
- package/portals/index.d.ts +6 -0
- package/portals/modal/index.d.ts +2 -0
- package/portals/modal/modal.component.d.ts +17 -0
- package/portals/modal/modal.service.d.ts +13 -0
- package/portals/popup/popup.directive.d.ts +12 -0
- package/{directives → portals}/popup/popup.service.d.ts +1 -1
- package/{directives → portals}/popup/popups.component.d.ts +2 -2
- package/services/index.d.ts +0 -3
- package/styles/components/appearance.less +5 -0
- package/styles/components/button.less +10 -22
- package/styles/components/icon.less +42 -21
- package/styles/components/icons.less +18 -13
- package/styles/components/label.less +3 -12
- package/styles/components/link.less +8 -27
- package/styles/components/notification.less +31 -65
- package/styles/components/textfield.less +128 -213
- package/styles/components/title.less +8 -8
- package/styles/mixins/appearance.less +11 -26
- package/styles/mixins/appearance.scss +9 -24
- package/styles/mixins/date-picker.less +1 -1
- package/styles/mixins/mixins.less +1 -7
- package/styles/mixins/mixins.scss +1 -7
- package/styles/mixins/picker.less +1 -1
- package/styles/mixins/picker.scss +1 -1
- package/styles/mixins/slider.less +28 -24
- package/styles/mixins/slider.scss +23 -22
- package/styles/taiga-ui-local.less +0 -1
- package/styles/taiga-ui-local.scss +0 -1
- package/styles/taiga-ui-theme.less +0 -1
- package/styles/theme/appearance/outline.less +9 -18
- package/styles/theme/appearance/primary.less +2 -4
- package/styles/theme/appearance/secondary.less +6 -14
- package/styles/theme/appearance/status.less +0 -4
- package/styles/theme/appearance/table.less +36 -35
- package/styles/theme/appearance/textfield.less +27 -28
- package/styles/theme/appearance.less +0 -1
- package/styles/theme/variables.less +16 -19
- package/styles/variables/media.less +13 -18
- package/styles/variables/media.scss +13 -13
- package/tokens/breakpoint.d.ts +4 -0
- package/tokens/common-icons.d.ts +3 -3
- package/tokens/date-format.d.ts +2 -3
- package/tokens/i18n.d.ts +7 -7
- package/tokens/icon-resolver.d.ts +1 -5
- package/tokens/icons.d.ts +0 -4
- package/tokens/index.d.ts +2 -4
- package/tokens/number-format.d.ts +2 -3
- package/tokens/validation-errors.d.ts +4 -0
- package/types/direction.d.ts +1 -1
- package/types/index.d.ts +0 -3
- package/types/point.d.ts +1 -1
- package/types/size.d.ts +0 -11
- package/utils/format/index.d.ts +0 -1
- package/utils/miscellaneous/get-duration.d.ts +2 -0
- package/utils/miscellaneous/index.d.ts +2 -1
- package/utils/miscellaneous/provide-taiga.d.ts +13 -0
- package/animations/animations.d.ts +0 -109
- package/animations/index.d.ts +0 -1
- package/components/alert/alert.component.d.ts +0 -15
- package/components/alert/alert.directive.d.ts +0 -7
- package/components/alert/alert.interfaces.d.ts +0 -12
- package/components/alert/alert.service.d.ts +0 -7
- package/components/alert/alert.tokens.d.ts +0 -12
- package/components/alert/alerts.component.d.ts +0 -12
- package/components/alert/index.d.ts +0 -6
- package/components/data-list/data-list.directive.d.ts +0 -7
- package/components/data-list/option/option-content.d.ts +0 -16
- package/components/data-list/option/option-legacy.component.d.ts +0 -24
- package/components/data-list/option/option.directive.d.ts +0 -27
- package/components/dialog/active-zone-adapter.directive.d.ts +0 -11
- package/components/dialog/dialog.component.d.ts +0 -20
- package/components/dialog/dialog.directive.d.ts +0 -7
- package/components/dialog/dialog.interfaces.d.ts +0 -34
- package/components/dialog/dialog.service.d.ts +0 -7
- package/components/dialog/dialog.tokens.d.ts +0 -15
- package/components/dialog/dialogs.component.d.ts +0 -8
- package/components/dialog/index.d.ts +0 -8
- package/components/expand/expand-content.directive.d.ts +0 -8
- package/components/expand/expand.d.ts +0 -6
- package/components/fullscreen/fullscreen.component.d.ts +0 -14
- package/components/fullscreen/index.d.ts +0 -1
- package/components/link/link.options.d.ts +0 -12
- package/components/textfield/select.directive.d.ts +0 -19
- package/components/textfield/textfield-dropdown.directive.d.ts +0 -16
- package/components/textfield/textfield.directive.d.ts +0 -38
- package/directives/dropdown/dropdown-open-legacy.directive.d.ts +0 -12
- package/directives/dropdown/dropdown-open.directive.d.ts +0 -33
- package/directives/dropdown/dropdown-portal.directive.d.ts +0 -14
- package/directives/dropdown/dropdown.service.d.ts +0 -6
- package/directives/dropdown/dropdowns.component.d.ts +0 -9
- package/directives/hint/hint-options.directive.d.ts +0 -36
- package/directives/hint/hint.component.d.ts +0 -30
- package/directives/hint/hint.directive.d.ts +0 -26
- package/directives/hint/hint.service.d.ts +0 -13
- package/directives/hint/hints.component.d.ts +0 -12
- package/directives/popup/popup.directive.d.ts +0 -11
- package/directives/surface/index.d.ts +0 -1
- package/directives/surface/surface.directive.d.ts +0 -8
- package/esm2022/animations/animations.mjs +0 -363
- package/esm2022/animations/index.mjs +0 -2
- package/esm2022/animations/taiga-ui-core-animations.mjs +0 -5
- package/esm2022/classes/accessors.mjs +0 -31
- package/esm2022/classes/driver.mjs +0 -36
- package/esm2022/classes/index.mjs +0 -4
- package/esm2022/classes/taiga-ui-core-classes.mjs +0 -5
- package/esm2022/classes/vehicle.mjs +0 -7
- package/esm2022/components/alert/alert.component.mjs +0 -43
- package/esm2022/components/alert/alert.directive.mjs +0 -21
- package/esm2022/components/alert/alert.interfaces.mjs +0 -2
- package/esm2022/components/alert/alert.service.mjs +0 -18
- package/esm2022/components/alert/alert.tokens.mjs +0 -51
- package/esm2022/components/alert/alerts.component.mjs +0 -33
- package/esm2022/components/alert/index.mjs +0 -6
- package/esm2022/components/alert/taiga-ui-core-components-alert.mjs +0 -5
- package/esm2022/components/button/button.directive.mjs +0 -43
- package/esm2022/components/button/button.options.mjs +0 -7
- package/esm2022/components/button/index.mjs +0 -3
- package/esm2022/components/button/taiga-ui-core-components-button.mjs +0 -5
- package/esm2022/components/calendar/calendar-sheet.component.mjs +0 -168
- package/esm2022/components/calendar/calendar-sheet.options.mjs +0 -12
- package/esm2022/components/calendar/calendar-spin.component.mjs +0 -53
- package/esm2022/components/calendar/calendar-year.component.mjs +0 -128
- package/esm2022/components/calendar/calendar.component.mjs +0 -147
- package/esm2022/components/calendar/index.mjs +0 -6
- package/esm2022/components/calendar/taiga-ui-core-components-calendar.mjs +0 -5
- package/esm2022/components/data-list/data-list.component.mjs +0 -139
- package/esm2022/components/data-list/data-list.directive.mjs +0 -19
- package/esm2022/components/data-list/data-list.mjs +0 -14
- package/esm2022/components/data-list/data-list.tokens.mjs +0 -18
- package/esm2022/components/data-list/index.mjs +0 -9
- package/esm2022/components/data-list/opt-group.directive.mjs +0 -21
- package/esm2022/components/data-list/option/option-content.mjs +0 -36
- package/esm2022/components/data-list/option/option-legacy.component.mjs +0 -90
- package/esm2022/components/data-list/option/option.directive.mjs +0 -109
- package/esm2022/components/data-list/taiga-ui-core-components-data-list.mjs +0 -5
- package/esm2022/components/dialog/active-zone-adapter.directive.mjs +0 -37
- package/esm2022/components/dialog/dialog-close.service.mjs +0 -41
- package/esm2022/components/dialog/dialog.component.mjs +0 -63
- package/esm2022/components/dialog/dialog.directive.mjs +0 -21
- package/esm2022/components/dialog/dialog.factory.mjs +0 -15
- package/esm2022/components/dialog/dialog.interfaces.mjs +0 -2
- package/esm2022/components/dialog/dialog.service.mjs +0 -18
- package/esm2022/components/dialog/dialog.tokens.mjs +0 -33
- package/esm2022/components/dialog/dialogs.component.mjs +0 -31
- package/esm2022/components/dialog/index.mjs +0 -8
- package/esm2022/components/dialog/taiga-ui-core-components-dialog.mjs +0 -5
- package/esm2022/components/error/error.component.mjs +0 -34
- package/esm2022/components/error/index.mjs +0 -2
- package/esm2022/components/error/taiga-ui-core-components-error.mjs +0 -5
- package/esm2022/components/expand/expand-content.directive.mjs +0 -18
- package/esm2022/components/expand/expand.component.mjs +0 -124
- package/esm2022/components/expand/expand.mjs +0 -7
- package/esm2022/components/expand/index.mjs +0 -4
- package/esm2022/components/expand/taiga-ui-core-components-expand.mjs +0 -5
- package/esm2022/components/fullscreen/fullscreen.component.mjs +0 -71
- package/esm2022/components/fullscreen/index.mjs +0 -2
- package/esm2022/components/fullscreen/taiga-ui-core-components-fullscreen.mjs +0 -5
- package/esm2022/components/icon/icon.component.mjs +0 -44
- package/esm2022/components/icon/icon.pipe.mjs +0 -19
- package/esm2022/components/icon/index.mjs +0 -3
- package/esm2022/components/icon/taiga-ui-core-components-icon.mjs +0 -5
- package/esm2022/components/index.mjs +0 -18
- package/esm2022/components/label/index.mjs +0 -2
- package/esm2022/components/label/label.directive.mjs +0 -41
- package/esm2022/components/label/taiga-ui-core-components-label.mjs +0 -5
- package/esm2022/components/link/index.mjs +0 -3
- package/esm2022/components/link/link.directive.mjs +0 -47
- package/esm2022/components/link/link.options.mjs +0 -13
- package/esm2022/components/link/taiga-ui-core-components-link.mjs +0 -5
- package/esm2022/components/loader/index.mjs +0 -3
- package/esm2022/components/loader/loader.component.mjs +0 -46
- package/esm2022/components/loader/loader.options.mjs +0 -18
- package/esm2022/components/loader/taiga-ui-core-components-loader.mjs +0 -5
- package/esm2022/components/notification/index.mjs +0 -3
- package/esm2022/components/notification/notification.directive.mjs +0 -81
- package/esm2022/components/notification/notification.options.mjs +0 -23
- package/esm2022/components/notification/taiga-ui-core-components-notification.mjs +0 -5
- package/esm2022/components/root/index.mjs +0 -2
- package/esm2022/components/root/root.component.mjs +0 -87
- package/esm2022/components/root/taiga-ui-core-components-root.mjs +0 -5
- package/esm2022/components/scrollbar/index.mjs +0 -9
- package/esm2022/components/scrollbar/scroll-controls.component.mjs +0 -32
- package/esm2022/components/scrollbar/scroll-into-view.directive.mjs +0 -43
- package/esm2022/components/scrollbar/scroll-ref.directive.mjs +0 -19
- package/esm2022/components/scrollbar/scrollable.directive.mjs +0 -26
- package/esm2022/components/scrollbar/scrollbar.component.mjs +0 -72
- package/esm2022/components/scrollbar/scrollbar.directive.mjs +0 -93
- package/esm2022/components/scrollbar/scrollbar.options.mjs +0 -6
- package/esm2022/components/scrollbar/scrollbar.service.mjs +0 -46
- package/esm2022/components/scrollbar/taiga-ui-core-components-scrollbar.mjs +0 -5
- package/esm2022/components/spin-button/index.mjs +0 -2
- package/esm2022/components/spin-button/spin-button.component.mjs +0 -51
- package/esm2022/components/spin-button/taiga-ui-core-components-spin-button.mjs +0 -5
- package/esm2022/components/taiga-ui-core-components.mjs +0 -5
- package/esm2022/components/textfield/index.mjs +0 -16
- package/esm2022/components/textfield/select-like.directive.mjs +0 -44
- package/esm2022/components/textfield/select.directive.mjs +0 -64
- package/esm2022/components/textfield/taiga-ui-core-components-textfield.mjs +0 -5
- package/esm2022/components/textfield/textfield-accessor.mjs +0 -7
- package/esm2022/components/textfield/textfield-auxiliary.mjs +0 -7
- package/esm2022/components/textfield/textfield-content.directive.mjs +0 -22
- package/esm2022/components/textfield/textfield-dropdown.directive.mjs +0 -43
- package/esm2022/components/textfield/textfield-icon.mjs +0 -10
- package/esm2022/components/textfield/textfield-multi/textfield-item.component.mjs +0 -34
- package/esm2022/components/textfield/textfield-multi/textfield-multi.component.mjs +0 -137
- package/esm2022/components/textfield/textfield.component.mjs +0 -183
- package/esm2022/components/textfield/textfield.directive.mjs +0 -134
- package/esm2022/components/textfield/textfield.mjs +0 -19
- package/esm2022/components/textfield/textfield.options.mjs +0 -63
- package/esm2022/components/textfield/with-native-picker.directive.mjs +0 -24
- package/esm2022/directives/appearance/appearance.bindings.mjs +0 -15
- package/esm2022/directives/appearance/appearance.directive.mjs +0 -79
- package/esm2022/directives/appearance/appearance.options.mjs +0 -12
- package/esm2022/directives/appearance/index.mjs +0 -5
- package/esm2022/directives/appearance/taiga-ui-core-directives-appearance.mjs +0 -5
- package/esm2022/directives/appearance/with-appearance.mjs +0 -27
- package/esm2022/directives/date-format/date-format.directive.mjs +0 -31
- package/esm2022/directives/date-format/index.mjs +0 -2
- package/esm2022/directives/date-format/taiga-ui-core-directives-date-format.mjs +0 -5
- package/esm2022/directives/dropdown/dropdown-context.directive.mjs +0 -76
- package/esm2022/directives/dropdown/dropdown-hover.directive.mjs +0 -70
- package/esm2022/directives/dropdown/dropdown-hover.options.mjs +0 -17
- package/esm2022/directives/dropdown/dropdown-limit-width.mjs +0 -37
- package/esm2022/directives/dropdown/dropdown-manual.directive.mjs +0 -27
- package/esm2022/directives/dropdown/dropdown-open-legacy.directive.mjs +0 -33
- package/esm2022/directives/dropdown/dropdown-open.directive.mjs +0 -169
- package/esm2022/directives/dropdown/dropdown-options.directive.mjs +0 -73
- package/esm2022/directives/dropdown/dropdown-portal.directive.mjs +0 -34
- package/esm2022/directives/dropdown/dropdown-position-sided.directive.mjs +0 -69
- package/esm2022/directives/dropdown/dropdown-position.directive.mjs +0 -88
- package/esm2022/directives/dropdown/dropdown-selection.directive.mjs +0 -159
- package/esm2022/directives/dropdown/dropdown.bindings.mjs +0 -19
- package/esm2022/directives/dropdown/dropdown.component.mjs +0 -92
- package/esm2022/directives/dropdown/dropdown.directive.mjs +0 -110
- package/esm2022/directives/dropdown/dropdown.driver.mjs +0 -32
- package/esm2022/directives/dropdown/dropdown.mjs +0 -29
- package/esm2022/directives/dropdown/dropdown.providers.mjs +0 -10
- package/esm2022/directives/dropdown/dropdown.service.mjs +0 -15
- package/esm2022/directives/dropdown/dropdowns.component.mjs +0 -24
- package/esm2022/directives/dropdown/index.mjs +0 -22
- package/esm2022/directives/dropdown/taiga-ui-core-directives-dropdown.mjs +0 -5
- package/esm2022/directives/dropdown/with-dropdown-open.directive.mjs +0 -23
- package/esm2022/directives/group/group.directive.mjs +0 -53
- package/esm2022/directives/group/group.options.mjs +0 -15
- package/esm2022/directives/group/index.mjs +0 -3
- package/esm2022/directives/group/taiga-ui-core-directives-group.mjs +0 -5
- package/esm2022/directives/hint/hint-describe.directive.mjs +0 -50
- package/esm2022/directives/hint/hint-driver.directive.mjs +0 -19
- package/esm2022/directives/hint/hint-host.directive.mjs +0 -27
- package/esm2022/directives/hint/hint-hover.directive.mjs +0 -59
- package/esm2022/directives/hint/hint-manual.directive.mjs +0 -33
- package/esm2022/directives/hint/hint-options.directive.mjs +0 -86
- package/esm2022/directives/hint/hint-overflow.directive.mjs +0 -38
- package/esm2022/directives/hint/hint-pointer.directive.mjs +0 -33
- package/esm2022/directives/hint/hint-position.directive.mjs +0 -115
- package/esm2022/directives/hint/hint-unstyled.component.mjs +0 -39
- package/esm2022/directives/hint/hint.component.mjs +0 -127
- package/esm2022/directives/hint/hint.directive.mjs +0 -99
- package/esm2022/directives/hint/hint.mjs +0 -27
- package/esm2022/directives/hint/hint.providers.mjs +0 -9
- package/esm2022/directives/hint/hint.service.mjs +0 -29
- package/esm2022/directives/hint/hints.component.mjs +0 -34
- package/esm2022/directives/hint/index.mjs +0 -17
- package/esm2022/directives/hint/taiga-ui-core-directives-hint.mjs +0 -5
- package/esm2022/directives/icons/icons.directive.mjs +0 -66
- package/esm2022/directives/icons/index.mjs +0 -3
- package/esm2022/directives/icons/taiga-ui-core-directives-icons.mjs +0 -5
- package/esm2022/directives/icons/with-icons.mjs +0 -22
- package/esm2022/directives/index.mjs +0 -12
- package/esm2022/directives/items-handlers/index.mjs +0 -4
- package/esm2022/directives/items-handlers/items-handlers.directive.mjs +0 -63
- package/esm2022/directives/items-handlers/items-handlers.tokens.mjs +0 -27
- package/esm2022/directives/items-handlers/items-handlers.validator.mjs +0 -32
- package/esm2022/directives/items-handlers/taiga-ui-core-directives-items-handlers.mjs +0 -5
- package/esm2022/directives/number-format/index.mjs +0 -2
- package/esm2022/directives/number-format/number-format.directive.mjs +0 -31
- package/esm2022/directives/number-format/taiga-ui-core-directives-number-format.mjs +0 -5
- package/esm2022/directives/popup/index.mjs +0 -4
- package/esm2022/directives/popup/popup.directive.mjs +0 -31
- package/esm2022/directives/popup/popup.service.mjs +0 -15
- package/esm2022/directives/popup/popups.component.mjs +0 -20
- package/esm2022/directives/popup/taiga-ui-core-directives-popup.mjs +0 -5
- package/esm2022/directives/surface/index.mjs +0 -2
- package/esm2022/directives/surface/surface.directive.mjs +0 -44
- package/esm2022/directives/surface/taiga-ui-core-directives-surface.mjs +0 -5
- package/esm2022/directives/taiga-ui-core-directives.mjs +0 -5
- package/esm2022/directives/title/index.mjs +0 -2
- package/esm2022/directives/title/taiga-ui-core-directives-title.mjs +0 -5
- package/esm2022/directives/title/title.directive.mjs +0 -37
- package/esm2022/index.mjs +0 -9
- package/esm2022/pipes/auto-color/auto-color.pipe.mjs +0 -19
- package/esm2022/pipes/auto-color/index.mjs +0 -2
- package/esm2022/pipes/auto-color/taiga-ui-core-pipes-auto-color.mjs +0 -5
- package/esm2022/pipes/calendar-sheet/calendar-sheet.pipe.mjs +0 -54
- package/esm2022/pipes/calendar-sheet/index.mjs +0 -2
- package/esm2022/pipes/calendar-sheet/taiga-ui-core-pipes-calendar-sheet.mjs +0 -5
- package/esm2022/pipes/calendar-sheet/utils.mjs +0 -36
- package/esm2022/pipes/fallback-src/fallback-src.pipe.mjs +0 -23
- package/esm2022/pipes/fallback-src/index.mjs +0 -2
- package/esm2022/pipes/fallback-src/taiga-ui-core-pipes-fallback-src.mjs +0 -5
- package/esm2022/pipes/flag/flag.pipe.mjs +0 -26
- package/esm2022/pipes/flag/index.mjs +0 -2
- package/esm2022/pipes/flag/taiga-ui-core-pipes-flag.mjs +0 -5
- package/esm2022/pipes/format-date/format-date.pipe.mjs +0 -22
- package/esm2022/pipes/format-date/index.mjs +0 -2
- package/esm2022/pipes/format-date/taiga-ui-core-pipes-format-date.mjs +0 -5
- package/esm2022/pipes/format-number/format-number.pipe.mjs +0 -36
- package/esm2022/pipes/format-number/index.mjs +0 -2
- package/esm2022/pipes/format-number/taiga-ui-core-pipes-format-number.mjs +0 -5
- package/esm2022/pipes/index.mjs +0 -10
- package/esm2022/pipes/initials/index.mjs +0 -2
- package/esm2022/pipes/initials/initials.pipe.mjs +0 -23
- package/esm2022/pipes/initials/taiga-ui-core-pipes-initials.mjs +0 -5
- package/esm2022/pipes/month/index.mjs +0 -2
- package/esm2022/pipes/month/month.pipe.mjs +0 -23
- package/esm2022/pipes/month/taiga-ui-core-pipes-month.mjs +0 -5
- package/esm2022/pipes/order-week-days/index.mjs +0 -2
- package/esm2022/pipes/order-week-days/order-week-days.pipe.mjs +0 -30
- package/esm2022/pipes/order-week-days/taiga-ui-core-pipes-order-week-days.mjs +0 -5
- package/esm2022/pipes/taiga-ui-core-pipes.mjs +0 -5
- package/esm2022/services/breakpoint.service.mjs +0 -31
- package/esm2022/services/dark-theme.service.mjs +0 -24
- package/esm2022/services/format-date.service.mjs +0 -24
- package/esm2022/services/index.mjs +0 -6
- package/esm2022/services/position.service.mjs +0 -26
- package/esm2022/services/taiga-ui-core-services.mjs +0 -5
- package/esm2022/services/visual-viewport.service.mjs +0 -29
- package/esm2022/taiga-ui-core.mjs +0 -5
- package/esm2022/tokens/animations-speed.mjs +0 -9
- package/esm2022/tokens/assets-path.mjs +0 -11
- package/esm2022/tokens/auxiliary.mjs +0 -9
- package/esm2022/tokens/common-icons.mjs +0 -18
- package/esm2022/tokens/dark-mode.mjs +0 -43
- package/esm2022/tokens/date-format.mjs +0 -20
- package/esm2022/tokens/day-type-handler.mjs +0 -8
- package/esm2022/tokens/first-day-of-week.mjs +0 -9
- package/esm2022/tokens/i18n.mjs +0 -45
- package/esm2022/tokens/icon-resolver.mjs +0 -44
- package/esm2022/tokens/icon.mjs +0 -8
- package/esm2022/tokens/icons.mjs +0 -21
- package/esm2022/tokens/index.mjs +0 -21
- package/esm2022/tokens/media.mjs +0 -12
- package/esm2022/tokens/number-format.mjs +0 -24
- package/esm2022/tokens/reduced-motion.mjs +0 -7
- package/esm2022/tokens/scroll-ref.mjs +0 -6
- package/esm2022/tokens/selection-stream.mjs +0 -14
- package/esm2022/tokens/spin-icons.mjs +0 -8
- package/esm2022/tokens/taiga-ui-core-tokens.mjs +0 -5
- package/esm2022/tokens/theme.mjs +0 -5
- package/esm2022/tokens/viewport.mjs +0 -35
- package/esm2022/types/direction.mjs +0 -2
- package/esm2022/types/index.mjs +0 -2
- package/esm2022/types/interactive-state.mjs +0 -2
- package/esm2022/types/orientation.mjs +0 -2
- package/esm2022/types/point.mjs +0 -2
- package/esm2022/types/portal-item.mjs +0 -2
- package/esm2022/types/range-state.mjs +0 -2
- package/esm2022/types/size.mjs +0 -13
- package/esm2022/types/taiga-ui-core-types.mjs +0 -5
- package/esm2022/types/value-content-context.mjs +0 -2
- package/esm2022/utils/dom/check-fixed-position.mjs +0 -9
- package/esm2022/utils/dom/get-viewport.mjs +0 -24
- package/esm2022/utils/dom/get-word-range.mjs +0 -51
- package/esm2022/utils/dom/index.mjs +0 -4
- package/esm2022/utils/dom/taiga-ui-core-utils-dom.mjs +0 -5
- package/esm2022/utils/format/format-number.mjs +0 -47
- package/esm2022/utils/format/get-fractional-part-padded.mjs +0 -16
- package/esm2022/utils/format/index.mjs +0 -5
- package/esm2022/utils/format/number-to-string-without-exp.mjs +0 -18
- package/esm2022/utils/format/string-hash-to-hsl.mjs +0 -21
- package/esm2022/utils/format/taiga-ui-core-utils-format.mjs +0 -5
- package/esm2022/utils/index.mjs +0 -4
- package/esm2022/utils/miscellaneous/font-scaling.mjs +0 -21
- package/esm2022/utils/miscellaneous/index.mjs +0 -7
- package/esm2022/utils/miscellaneous/is-editing-key.mjs +0 -18
- package/esm2022/utils/miscellaneous/is-obscured.mjs +0 -8
- package/esm2022/utils/miscellaneous/override-options.mjs +0 -11
- package/esm2022/utils/miscellaneous/size-bigger.mjs +0 -19
- package/esm2022/utils/miscellaneous/taiga-ui-core-utils-miscellaneous.mjs +0 -5
- package/esm2022/utils/miscellaneous/to-animation-options.mjs +0 -16
- package/esm2022/utils/taiga-ui-core-utils.mjs +0 -5
- package/fesm2022/taiga-ui-core-animations.mjs +0 -370
- package/fesm2022/taiga-ui-core-animations.mjs.map +0 -1
- package/fesm2022/taiga-ui-core-components-alert.mjs +0 -149
- package/fesm2022/taiga-ui-core-components-alert.mjs.map +0 -1
- package/fesm2022/taiga-ui-core-components-dialog.mjs +0 -230
- package/fesm2022/taiga-ui-core-components-dialog.mjs.map +0 -1
- package/fesm2022/taiga-ui-core-components-fullscreen.mjs +0 -77
- package/fesm2022/taiga-ui-core-components-fullscreen.mjs.map +0 -1
- package/fesm2022/taiga-ui-core-directives-dropdown.mjs.map +0 -1
- package/fesm2022/taiga-ui-core-directives-hint.mjs +0 -713
- package/fesm2022/taiga-ui-core-directives-hint.mjs.map +0 -1
- package/fesm2022/taiga-ui-core-directives-popup.mjs +0 -63
- package/fesm2022/taiga-ui-core-directives-popup.mjs.map +0 -1
- package/fesm2022/taiga-ui-core-directives-surface.mjs +0 -50
- package/fesm2022/taiga-ui-core-directives-surface.mjs.map +0 -1
- package/fesm2022/taiga-ui-core-directives-title.mjs +0 -43
- package/fesm2022/taiga-ui-core-directives-title.mjs.map +0 -1
- package/fesm2022/taiga-ui-core-pipes-auto-color.mjs +0 -25
- package/fesm2022/taiga-ui-core-pipes-auto-color.mjs.map +0 -1
- package/fesm2022/taiga-ui-core-pipes-calendar-sheet.mjs +0 -94
- package/fesm2022/taiga-ui-core-pipes-calendar-sheet.mjs.map +0 -1
- package/fesm2022/taiga-ui-core-pipes-fallback-src.mjs +0 -29
- package/fesm2022/taiga-ui-core-pipes-fallback-src.mjs.map +0 -1
- package/fesm2022/taiga-ui-core-pipes-flag.mjs +0 -32
- package/fesm2022/taiga-ui-core-pipes-flag.mjs.map +0 -1
- package/fesm2022/taiga-ui-core-pipes-format-date.mjs +0 -28
- package/fesm2022/taiga-ui-core-pipes-format-date.mjs.map +0 -1
- package/fesm2022/taiga-ui-core-pipes-initials.mjs +0 -29
- package/fesm2022/taiga-ui-core-pipes-initials.mjs.map +0 -1
- package/fesm2022/taiga-ui-core-pipes-month.mjs +0 -29
- package/fesm2022/taiga-ui-core-pipes-month.mjs.map +0 -1
- package/fesm2022/taiga-ui-core-pipes-order-week-days.mjs +0 -36
- package/fesm2022/taiga-ui-core-pipes-order-week-days.mjs.map +0 -1
- package/pipes/auto-color/auto-color.pipe.d.ts +0 -7
- package/pipes/auto-color/index.d.ts +0 -1
- package/pipes/calendar-sheet/index.d.ts +0 -1
- package/pipes/calendar-sheet/utils.d.ts +0 -20
- package/pipes/fallback-src/fallback-src.pipe.d.ts +0 -9
- package/pipes/fallback-src/index.d.ts +0 -1
- package/pipes/flag/flag.pipe.d.ts +0 -14
- package/pipes/flag/index.d.ts +0 -1
- package/pipes/format-date/format-date.pipe.d.ts +0 -9
- package/pipes/format-date/index.d.ts +0 -1
- package/pipes/initials/index.d.ts +0 -1
- package/pipes/initials/initials.pipe.d.ts +0 -7
- package/pipes/month/index.d.ts +0 -1
- package/pipes/month/month.pipe.d.ts +0 -10
- package/pipes/order-week-days/index.d.ts +0 -1
- package/services/breakpoint.service.d.ts +0 -16
- package/services/dark-theme.service.d.ts +0 -10
- package/services/format-date.service.d.ts +0 -8
- package/styles/mixins/wrapper.less +0 -64
- package/styles/mixins/wrapper.scss +0 -61
- package/styles/theme/appearance/opposite.less +0 -17
- package/styles/theme/wrapper.less +0 -211
- package/tokens/day-type-handler.d.ts +0 -7
- package/tokens/first-day-of-week.d.ts +0 -5
- package/tokens/scroll-ref.d.ts +0 -2
- package/tokens/spin-icons.d.ts +0 -6
- package/types/portal-item.d.ts +0 -9
- package/types/range-state.d.ts +0 -4
- package/types/value-content-context.d.ts +0 -4
- package/utils/format/string-hash-to-hsl.d.ts +0 -6
- package/utils/miscellaneous/to-animation-options.d.ts +0 -4
- /package/{directives → components}/title/index.d.ts +0 -0
- /package/{directives → portals}/dropdown/dropdown-limit-width.d.ts +0 -0
- /package/{directives → portals}/dropdown/dropdown.component.d.ts +0 -0
- /package/{directives → portals}/dropdown/dropdown.driver.d.ts +0 -0
- /package/{directives → portals}/dropdown/dropdown.providers.d.ts +0 -0
- /package/{directives → portals}/dropdown/with-dropdown-open.directive.d.ts +0 -0
- /package/{directives → portals}/hint/hint-driver.directive.d.ts +0 -0
- /package/{directives → portals}/hint/hint-pointer.directive.d.ts +0 -0
- /package/{directives → portals}/hint/hint.providers.d.ts +0 -0
- /package/{directives → portals}/popup/index.d.ts +0 -0
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import { Directive, inject, Input } from '@angular/core';
|
|
2
|
-
import { EMPTY_CLIENT_RECT } from '@taiga-ui/cdk/constants';
|
|
3
|
-
import { tuiAsPositionAccessor, TuiPositionAccessor } from '@taiga-ui/core/classes';
|
|
4
|
-
import { TUI_VIEWPORT } from '@taiga-ui/core/tokens';
|
|
5
|
-
import { TUI_DROPDOWN_OPTIONS } from './dropdown-options.directive';
|
|
6
|
-
import { TuiDropdownPosition } from './dropdown-position.directive';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
class TuiDropdownPositionSided extends TuiPositionAccessor {
|
|
9
|
-
constructor() {
|
|
10
|
-
super(...arguments);
|
|
11
|
-
this.options = inject(TUI_DROPDOWN_OPTIONS);
|
|
12
|
-
this.viewport = inject(TUI_VIEWPORT);
|
|
13
|
-
this.vertical = inject(TuiDropdownPosition);
|
|
14
|
-
this.previous = this.options.direction || 'bottom';
|
|
15
|
-
this.tuiDropdownSided = '';
|
|
16
|
-
this.tuiDropdownSidedOffset = 4;
|
|
17
|
-
this.type = 'dropdown';
|
|
18
|
-
}
|
|
19
|
-
getPosition(rect) {
|
|
20
|
-
if (this.tuiDropdownSided === false) {
|
|
21
|
-
return this.vertical.getPosition(rect);
|
|
22
|
-
}
|
|
23
|
-
const { height, width } = rect;
|
|
24
|
-
const hostRect = this.vertical.accessor?.getClientRect() ?? EMPTY_CLIENT_RECT;
|
|
25
|
-
const viewport = this.viewport.getClientRect();
|
|
26
|
-
const { direction, offset } = this.options;
|
|
27
|
-
const adjusted = this.vertical.getAlign(this.options.align);
|
|
28
|
-
const align = adjusted === 'center' ? 'left' : adjusted;
|
|
29
|
-
const available = {
|
|
30
|
-
top: hostRect.bottom - viewport.top,
|
|
31
|
-
left: hostRect.left - offset - viewport.left,
|
|
32
|
-
right: viewport.right - hostRect.right - offset,
|
|
33
|
-
bottom: viewport.bottom - hostRect.top,
|
|
34
|
-
};
|
|
35
|
-
const position = {
|
|
36
|
-
top: hostRect.bottom - height + this.tuiDropdownSidedOffset + 1,
|
|
37
|
-
left: hostRect.left - width - offset,
|
|
38
|
-
right: hostRect.right + offset,
|
|
39
|
-
bottom: hostRect.top - this.tuiDropdownSidedOffset - 1, // 1 for border
|
|
40
|
-
};
|
|
41
|
-
const better = available.top > available.bottom ? 'top' : 'bottom';
|
|
42
|
-
const maxLeft = available.left > available.right ? position.left : position.right;
|
|
43
|
-
const left = available[align] > width ? position[align] : maxLeft;
|
|
44
|
-
if ((available[this.previous] > height && direction) ||
|
|
45
|
-
this.previous === better) {
|
|
46
|
-
this.vertical.emitDirection(this.previous);
|
|
47
|
-
return [position[this.previous], left];
|
|
48
|
-
}
|
|
49
|
-
this.previous = better;
|
|
50
|
-
this.vertical.emitDirection(better);
|
|
51
|
-
return [position[better], left];
|
|
52
|
-
}
|
|
53
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownPositionSided, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
54
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiDropdownPositionSided, isStandalone: true, selector: "[tuiDropdownSided]", inputs: { tuiDropdownSided: "tuiDropdownSided", tuiDropdownSidedOffset: "tuiDropdownSidedOffset" }, providers: [TuiDropdownPosition, tuiAsPositionAccessor(TuiDropdownPositionSided)], usesInheritance: true, ngImport: i0 }); }
|
|
55
|
-
}
|
|
56
|
-
export { TuiDropdownPositionSided };
|
|
57
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownPositionSided, decorators: [{
|
|
58
|
-
type: Directive,
|
|
59
|
-
args: [{
|
|
60
|
-
standalone: true,
|
|
61
|
-
selector: '[tuiDropdownSided]',
|
|
62
|
-
providers: [TuiDropdownPosition, tuiAsPositionAccessor(TuiDropdownPositionSided)],
|
|
63
|
-
}]
|
|
64
|
-
}], propDecorators: { tuiDropdownSided: [{
|
|
65
|
-
type: Input
|
|
66
|
-
}], tuiDropdownSidedOffset: [{
|
|
67
|
-
type: Input
|
|
68
|
-
}] } });
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tcG9zaXRpb24tc2lkZWQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9kaXJlY3RpdmVzL2Ryb3Bkb3duL2Ryb3Bkb3duLXBvc2l0aW9uLXNpZGVkLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDMUQsT0FBTyxFQUFDLHFCQUFxQixFQUFFLG1CQUFtQixFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDbEYsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBR25ELE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLCtCQUErQixDQUFDOztBQUVsRSxNQUthLHdCQUF5QixTQUFRLG1CQUFtQjtJQUxqRTs7UUFNcUIsWUFBTyxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3ZDLGFBQVEsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDaEMsYUFBUSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ2hELGFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsSUFBSSxRQUFRLENBQUM7UUFHL0MscUJBQWdCLEdBQXFCLEVBQUUsQ0FBQztRQUd4QywyQkFBc0IsR0FBRyxDQUFDLENBQUM7UUFFbEIsU0FBSSxHQUFHLFVBQVUsQ0FBQztLQTJDckM7SUF6Q1UsV0FBVyxDQUFDLElBQWE7UUFDNUIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEtBQUssS0FBSyxFQUFFO1lBQ2pDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxX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QkFMcEMsU0FBUzttQkFBQztvQkFDUCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLG9CQUFvQjtvQkFDOUIsU0FBUyxFQUFFLENBQUMsbUJBQW1CLEVBQUUscUJBQXFCLDBCQUEwQixDQUFDO2lCQUNwRjs4QkFRVSxnQkFBZ0I7c0JBRHRCLEtBQUs7Z0JBSUMsc0JBQXNCO3NCQUQ1QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIGluamVjdCwgSW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtFTVBUWV9DTElFTlRfUkVDVH0gZnJvbSAnQHRhaWdhLXVpL2Nkay9jb25zdGFudHMnO1xuaW1wb3J0IHt0dWlBc1Bvc2l0aW9uQWNjZXNzb3IsIFR1aVBvc2l0aW9uQWNjZXNzb3J9IGZyb20gJ0B0YWlnYS11aS9jb3JlL2NsYXNzZXMnO1xuaW1wb3J0IHtUVUlfVklFV1BPUlR9IGZyb20gJ0B0YWlnYS11aS9jb3JlL3Rva2Vucyc7XG5pbXBvcnQge3R5cGUgVHVpUG9pbnR9IGZyb20gJ0B0YWlnYS11aS9jb3JlL3R5cGVzJztcblxuaW1wb3J0IHtUVUlfRFJPUERPV05fT1BUSU9OU30gZnJvbSAnLi9kcm9wZG93bi1vcHRpb25zLmRpcmVjdGl2ZSc7XG5pbXBvcnQge1R1aURyb3Bkb3duUG9zaXRpb259IGZyb20gJy4vZHJvcGRvd24tcG9zaXRpb24uZGlyZWN0aXZlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ1t0dWlEcm9wZG93blNpZGVkXScsXG4gICAgcHJvdmlkZXJzOiBbVHVpRHJvcGRvd25Qb3NpdGlvbiwgdHVpQXNQb3NpdGlvbkFjY2Vzc29yKFR1aURyb3Bkb3duUG9zaXRpb25TaWRlZCldLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlEcm9wZG93blBvc2l0aW9uU2lkZWQgZXh0ZW5kcyBUdWlQb3NpdGlvbkFjY2Vzc29yIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnMgPSBpbmplY3QoVFVJX0RST1BET1dOX09QVElPTlMpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdmlld3BvcnQgPSBpbmplY3QoVFVJX1ZJRVdQT1JUKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHZlcnRpY2FsID0gaW5qZWN0KFR1aURyb3Bkb3duUG9zaXRpb24pO1xuICAgIHByaXZhdGUgcHJldmlvdXMgPSB0aGlzLm9wdGlvbnMuZGlyZWN0aW9uIHx8ICdib3R0b20nO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdHVpRHJvcGRvd25TaWRlZDogYm9vbGVhbiB8IHN0cmluZyA9ICcnO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdHVpRHJvcGRvd25TaWRlZE9mZnNldCA9IDQ7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgdHlwZSA9ICdkcm9wZG93bic7XG5cbiAgICBwdWJsaWMgZ2V0UG9zaXRpb24ocmVjdDogRE9NUmVjdCk6IFR1aVBvaW50IHtcbiAgICAgICAgaWYgKHRoaXMudHVpRHJvcGRvd25TaWRlZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnZlcnRpY2FsLmdldFBvc2l0aW9uKHJlY3QpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qge2hlaWdodCwgd2lkdGh9ID0gcmVjdDtcbiAgICAgICAgY29uc3QgaG9zdFJlY3QgPSB0aGlzLnZlcnRpY2FsLmFjY2Vzc29yPy5nZXRDbGllbnRSZWN0KCkgPz8gRU1QVFlfQ0xJRU5UX1JFQ1Q7XG4gICAgICAgIGNvbnN0IHZpZXdwb3J0ID0gdGhpcy52aWV3cG9ydC5nZXRDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IHtkaXJlY3Rpb24sIG9mZnNldH0gPSB0aGlzLm9wdGlvbnM7XG4gICAgICAgIGNvbnN0IGFkanVzdGVkID0gdGhpcy52ZXJ0aWNhbC5nZXRBbGlnbih0aGlzLm9wdGlvbnMuYWxpZ24pO1xuICAgICAgICBjb25zdCBhbGlnbiA9IGFkanVzdGVkID09PSAnY2VudGVyJyA/ICdsZWZ0JyA6IGFkanVzdGVkO1xuICAgICAgICBjb25zdCBhdmFpbGFibGUgPSB7XG4gICAgICAgICAgICB0b3A6IGhvc3RSZWN0LmJvdHRvbSAtIHZpZXdwb3J0LnRvcCxcbiAgICAgICAgICAgIGxlZnQ6IGhvc3RSZWN0LmxlZnQgLSBvZmZzZXQgLSB2aWV3cG9ydC5sZWZ0LFxuICAgICAgICAgICAgcmlnaHQ6IHZpZXdwb3J0LnJpZ2h0IC0gaG9zdFJlY3QucmlnaHQgLSBvZmZzZXQsXG4gICAgICAgICAgICBib3R0b206IHZpZXdwb3J0LmJvdHRvbSAtIGhvc3RSZWN0LnRvcCxcbiAgICAgICAgfSBhcyBjb25zdDtcbiAgICAgICAgY29uc3QgcG9zaXRpb24gPSB7XG4gICAgICAgICAgICB0b3A6IGhvc3RSZWN0LmJvdHRvbSAtIGhlaWdodCArIHRoaXMudHVpRHJvcGRvd25TaWRlZE9mZnNldCArIDEsIC8vIDEgZm9yIGJvcmRlclxuICAgICAgICAgICAgbGVmdDogaG9zdFJlY3QubGVmdCAtIHdpZHRoIC0gb2Zmc2V0LFxuICAgICAgICAgICAgcmlnaHQ6IGhvc3RSZWN0LnJpZ2h0ICsgb2Zmc2V0LFxuICAgICAgICAgICAgYm90dG9tOiBob3N0UmVjdC50b3AgLSB0aGlzLnR1aURyb3Bkb3duU2lkZWRPZmZzZXQgLSAxLCAvLyAxIGZvciBib3JkZXJcbiAgICAgICAgfSBhcyBjb25zdDtcbiAgICAgICAgY29uc3QgYmV0dGVyID0gYXZhaWxhYmxlLnRvcCA+IGF2YWlsYWJsZS5ib3R0b20gPyAndG9wJyA6ICdib3R0b20nO1xuICAgICAgICBjb25zdCBtYXhMZWZ0ID0gYXZhaWxhYmxlLmxlZnQgPiBhdmFpbGFibGUucmlnaHQgPyBwb3NpdGlvbi5sZWZ0IDogcG9zaXRpb24ucmlnaHQ7XG4gICAgICAgIGNvbnN0IGxlZnQgPSBhdmFpbGFibGVbYWxpZ25dID4gd2lkdGggPyBwb3NpdGlvblthbGlnbl0gOiBtYXhMZWZ0O1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIChhdmFpbGFibGVbdGhpcy5wcmV2aW91c10gPiBoZWlnaHQgJiYgZGlyZWN0aW9uKSB8fFxuICAgICAgICAgICAgdGhpcy5wcmV2aW91cyA9PT0gYmV0dGVyXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy52ZXJ0aWNhbC5lbWl0RGlyZWN0aW9uKHRoaXMucHJldmlvdXMpO1xuXG4gICAgICAgICAgICByZXR1cm4gW3Bvc2l0aW9uW3RoaXMucHJldmlvdXNdLCBsZWZ0XTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucHJldmlvdXMgPSBiZXR0ZXI7XG4gICAgICAgIHRoaXMudmVydGljYWwuZW1pdERpcmVjdGlvbihiZXR0ZXIpO1xuXG4gICAgICAgIHJldHVybiBbcG9zaXRpb25bYmV0dGVyXSwgbGVmdF07XG4gICAgfVxufVxuIl19
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
import { __decorate } from "tslib";
|
|
2
|
-
import { Directive, EventEmitter, inject, Output } from '@angular/core';
|
|
3
|
-
import { EMPTY_CLIENT_RECT } from '@taiga-ui/cdk/constants';
|
|
4
|
-
import { tuiInjectElement } from '@taiga-ui/cdk/utils/dom';
|
|
5
|
-
import { tuiPure } from '@taiga-ui/cdk/utils/miscellaneous';
|
|
6
|
-
import { tuiFallbackAccessor, TuiPositionAccessor, TuiRectAccessor, } from '@taiga-ui/core/classes';
|
|
7
|
-
import { TUI_VIEWPORT } from '@taiga-ui/core/tokens';
|
|
8
|
-
import { TuiDropdownDirective } from './dropdown.directive';
|
|
9
|
-
import { TUI_DROPDOWN_OPTIONS } from './dropdown-options.directive';
|
|
10
|
-
import * as i0 from "@angular/core";
|
|
11
|
-
class TuiDropdownPosition extends TuiPositionAccessor {
|
|
12
|
-
constructor() {
|
|
13
|
-
super(...arguments);
|
|
14
|
-
this.el = tuiInjectElement();
|
|
15
|
-
this.options = inject(TUI_DROPDOWN_OPTIONS);
|
|
16
|
-
this.viewport = inject(TUI_VIEWPORT);
|
|
17
|
-
this.directionChange = new EventEmitter();
|
|
18
|
-
this.type = 'dropdown';
|
|
19
|
-
this.accessor = tuiFallbackAccessor('dropdown')(inject(TuiRectAccessor), inject(TuiDropdownDirective, { optional: true }));
|
|
20
|
-
}
|
|
21
|
-
emitDirection(direction) {
|
|
22
|
-
this.directionChange.emit(direction);
|
|
23
|
-
}
|
|
24
|
-
getPosition({ width, height }) {
|
|
25
|
-
if (!width && !height) {
|
|
26
|
-
this.previous = undefined;
|
|
27
|
-
}
|
|
28
|
-
const hostRect = this.accessor?.getClientRect() ?? EMPTY_CLIENT_RECT;
|
|
29
|
-
const viewportRect = this.viewport.getClientRect();
|
|
30
|
-
const { minHeight, direction, offset, limitWidth } = this.options;
|
|
31
|
-
const align = this.getAlign(this.options.align);
|
|
32
|
-
const viewport = {
|
|
33
|
-
top: viewportRect.top - offset,
|
|
34
|
-
bottom: viewportRect.bottom + offset,
|
|
35
|
-
right: viewportRect.right - offset,
|
|
36
|
-
left: viewportRect.left + offset,
|
|
37
|
-
};
|
|
38
|
-
const previous = this.previous || direction || 'bottom';
|
|
39
|
-
const available = {
|
|
40
|
-
top: hostRect.top - 2 * offset - viewport.top,
|
|
41
|
-
bottom: viewport.bottom - hostRect.bottom - 2 * offset,
|
|
42
|
-
};
|
|
43
|
-
const rectWidth = limitWidth === 'fixed' ? hostRect.width : width;
|
|
44
|
-
const right = Math.max(hostRect.right - rectWidth, offset);
|
|
45
|
-
const left = hostRect.left + width < viewport.right ? hostRect.left : right;
|
|
46
|
-
const position = {
|
|
47
|
-
top: hostRect.top - offset - height,
|
|
48
|
-
bottom: hostRect.bottom + offset,
|
|
49
|
-
right: Math.max(viewport.left, right),
|
|
50
|
-
center: hostRect.left + hostRect.width / 2 + width / 2 < viewport.right
|
|
51
|
-
? hostRect.left + hostRect.width / 2 - width / 2
|
|
52
|
-
: right,
|
|
53
|
-
left: Math.max(viewport.left, left),
|
|
54
|
-
};
|
|
55
|
-
const better = available.top > available.bottom ? 'top' : 'bottom';
|
|
56
|
-
if ((available[previous] > minHeight && direction) ||
|
|
57
|
-
available[previous] > height) {
|
|
58
|
-
this.emitDirection(previous);
|
|
59
|
-
return [position[previous], position[align]];
|
|
60
|
-
}
|
|
61
|
-
this.previous = better;
|
|
62
|
-
this.emitDirection(better);
|
|
63
|
-
return [position[better], position[align]];
|
|
64
|
-
}
|
|
65
|
-
getAlign(align) {
|
|
66
|
-
const rtl = this.el.matches('[dir="rtl"] :scope');
|
|
67
|
-
if (rtl && align === 'left') {
|
|
68
|
-
return 'right';
|
|
69
|
-
}
|
|
70
|
-
return rtl && align === 'right' ? 'left' : align;
|
|
71
|
-
}
|
|
72
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownPosition, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
73
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiDropdownPosition, isStandalone: true, outputs: { directionChange: "tuiDropdownDirectionChange" }, usesInheritance: true, ngImport: i0 }); }
|
|
74
|
-
}
|
|
75
|
-
__decorate([
|
|
76
|
-
tuiPure
|
|
77
|
-
], TuiDropdownPosition.prototype, "emitDirection", null);
|
|
78
|
-
export { TuiDropdownPosition };
|
|
79
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownPosition, decorators: [{
|
|
80
|
-
type: Directive,
|
|
81
|
-
args: [{
|
|
82
|
-
standalone: true,
|
|
83
|
-
}]
|
|
84
|
-
}], propDecorators: { directionChange: [{
|
|
85
|
-
type: Output,
|
|
86
|
-
args: ['tuiDropdownDirectionChange']
|
|
87
|
-
}], emitDirection: [] } });
|
|
88
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tcG9zaXRpb24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9kaXJlY3RpdmVzL2Ryb3Bkb3duL2Ryb3Bkb3duLXBvc2l0aW9uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUMxRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDMUQsT0FBTyxFQUNILG1CQUFtQixFQUNuQixtQkFBbUIsRUFDbkIsZUFBZSxHQUNsQixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUduRCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRCxPQUFPLEVBQUMsb0JBQW9CLEVBQXdCLE1BQU0sOEJBQThCLENBQUM7O0FBRXpGLE1BR2EsbUJBQW9CLFNBQVEsbUJBQW1CO0lBSDVEOztRQUlxQixPQUFFLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztRQUN4QixZQUFPLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDdkMsYUFBUSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUtqQyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUF3QixDQUFDO1FBRTNELFNBQUksR0FBRyxVQUFVLENBQUM7UUFDbEIsYUFBUSxHQUNwQixtQkFBbUIsQ0FBa0IsVUFBVSxDQUFDLENBQzVDLE1BQU0sQ0FBTSxlQUFlLENBQUMsRUFDNUIsTUFBTSxDQUFDLG9CQUFv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Q0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1FBRXhELElBQ0ksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsU0FBUyxJQUFJLFNBQVMsQ0FBQztZQUM5QyxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsTUFBTSxFQUM5QjtZQUNFLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFN0IsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztTQUNoRDtRQUVELElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFM0IsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRU0sUUFBUSxDQUFDLEtBQXVCO1FBQ25DLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFFbEQsSUFBSSxHQUFHLElBQUksS0FBSyxLQUFLLE1BQU0sRUFBRTtZQUN6QixPQUFPLE9BQU8sQ0FBQztTQUNsQjtRQUVELE9BQU8sR0FBRyxJQUFJLEtBQUssS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ3JELENBQUM7K0dBakZRLG1CQUFtQjttR0FBbkIsbUJBQW1COztBQWtCckI7SUFETixPQUFPO3dEQUdQO1NBcEJRLG1CQUFtQjs0RkFBbkIsbUJBQW1CO2tCQUgvQixTQUFTO21CQUFDO29CQUNQLFVBQVUsRUFBRSxJQUFJO2lCQUNuQjs4QkFTbUIsZUFBZTtzQkFEOUIsTUFBTTt1QkFBQyw0QkFBNEI7Z0JBVzdCLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RpcmVjdGl2ZSwgRXZlbnRFbWl0dGVyLCBpbmplY3QsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0VNUFRZX0NMSUVOVF9SRUNUfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2NvbnN0YW50cyc7XG5pbXBvcnQge3R1aUluamVjdEVsZW1lbnR9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvZG9tJztcbmltcG9ydCB7dHVpUHVyZX0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9taXNjZWxsYW5lb3VzJztcbmltcG9ydCB7XG4gICAgdHVpRmFsbGJhY2tBY2Nlc3NvcixcbiAgICBUdWlQb3NpdGlvbkFjY2Vzc29yLFxuICAgIFR1aVJlY3RBY2Nlc3Nvcixcbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvY2xhc3Nlcyc7XG5pbXBvcnQge1RVSV9WSUVXUE9SVH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvdG9rZW5zJztcbmltcG9ydCB7dHlwZSBUdWlQb2ludCwgdHlwZSBUdWlWZXJ0aWNhbERpcmVjdGlvbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvdHlwZXMnO1xuXG5pbXBvcnQge1R1aURyb3Bkb3duRGlyZWN0aXZlfSBmcm9tICcuL2Ryb3Bkb3duLmRpcmVjdGl2ZSc7XG5pbXBvcnQge1RVSV9EUk9QRE9XTl9PUFRJT05TLCB0eXBlIFR1aURyb3Bkb3duQWxpZ259IGZyb20gJy4vZHJvcGRvd24tb3B0aW9ucy5kaXJlY3RpdmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlEcm9wZG93blBvc2l0aW9uIGV4dGVuZHMgVHVpUG9zaXRpb25BY2Nlc3NvciB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBlbCA9IHR1aUluamVjdEVsZW1lbnQoKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnMgPSBpbmplY3QoVFVJX0RST1BET1dOX09QVElPTlMpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdmlld3BvcnQgPSBpbmplY3QoVFVJX1ZJRVdQT1JUKTtcblxuICAgIHByaXZhdGUgcHJldmlvdXM/OiBUdWlWZXJ0aWNhbERpcmVjdGlvbjtcblxuICAgIEBPdXRwdXQoJ3R1aURyb3Bkb3duRGlyZWN0aW9uQ2hhbmdlJylcbiAgICBwdWJsaWMgcmVhZG9ubHkgZGlyZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxUdWlWZXJ0aWNhbERpcmVjdGlvbj4oKTtcblxuICAgIHB1YmxpYyByZWFkb25seSB0eXBlID0gJ2Ryb3Bkb3duJztcbiAgICBwdWJsaWMgcmVhZG9ubHkgYWNjZXNzb3I6IFR1aVJlY3RBY2Nlc3NvciB8IG51bGwgPVxuICAgICAgICB0dWlGYWxsYmFja0FjY2Vzc29yPFR1aVJlY3RBY2Nlc3Nvcj4oJ2Ryb3Bkb3duJykoXG4gICAgICAgICAgICBpbmplY3Q8YW55PihUdWlSZWN0QWNjZXNzb3IpLFxuICAgICAgICAgICAgaW5qZWN0KFR1aURyb3Bkb3duRGlyZWN0aXZlLCB7b3B0aW9uYWw6IHRydWV9KSEsXG4gICAgICAgICk7XG5cbiAgICBAdHVpUHVyZVxuICAgIHB1YmxpYyBlbWl0RGlyZWN0aW9uKGRpcmVjdGlvbjogVHVpVmVydGljYWxEaXJlY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXJlY3Rpb25DaGFuZ2UuZW1pdChkaXJlY3Rpb24pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRQb3NpdGlvbih7d2lkdGgsIGhlaWdodH06IERPTVJlY3QpOiBUdWlQb2ludCB7XG4gICAgICAgIGlmICghd2lkdGggJiYgIWhlaWdodCkge1xuICAgICAgICAgICAgdGhpcy5wcmV2aW91cyA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGhvc3RSZWN0ID0gdGhpcy5hY2Nlc3Nvcj8uZ2V0Q2xpZW50UmVjdCgpID8/IEVNUFRZX0NMSUVOVF9SRUNUO1xuICAgICAgICBjb25zdCB2aWV3cG9ydFJlY3QgPSB0aGlzLnZpZXdwb3J0LmdldENsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3Qge21pbkhlaWdodCwgZGlyZWN0aW9uLCBvZmZzZXQsIGxpbWl0V2lkdGh9ID0gdGhpcy5vcHRpb25zO1xuICAgICAgICBjb25zdCBhbGlnbiA9IHRoaXMuZ2V0QWxpZ24odGhpcy5vcHRpb25zLmFsaWduKTtcbiAgICAgICAgY29uc3Qgdmlld3BvcnQgPSB7XG4gICAgICAgICAgICB0b3A6IHZpZXdwb3J0UmVjdC50b3AgLSBvZmZzZXQsXG4gICAgICAgICAgICBib3R0b206IHZpZXdwb3J0UmVjdC5ib3R0b20gKyBvZmZzZXQsXG4gICAgICAgICAgICByaWdodDogdmlld3BvcnRSZWN0LnJpZ2h0IC0gb2Zmc2V0LFxuICAgICAgICAgICAgbGVmdDogdmlld3BvcnRSZWN0LmxlZnQgKyBvZmZzZXQsXG4gICAgICAgIH0gYXMgY29uc3Q7XG4gICAgICAgIGNvbnN0IHByZXZpb3VzID0gdGhpcy5wcmV2aW91cyB8fCBkaXJlY3Rpb24gfHwgJ2JvdHRvbSc7XG4gICAgICAgIGNvbnN0IGF2YWlsYWJsZSA9IHtcbiAgICAgICAgICAgIHRvcDogaG9zdFJlY3QudG9wIC0gMiAqIG9mZnNldCAtIHZpZXdwb3J0LnRvcCxcbiAgICAgICAgICAgIGJvdHRvbTogdmlld3BvcnQuYm90dG9tIC0gaG9zdFJlY3QuYm90dG9tIC0gMiAqIG9mZnNldCxcbiAgICAgICAgfSBhcyBjb25zdDtcbiAgICAgICAgY29uc3QgcmVjdFdpZHRoID0gbGltaXRXaWR0aCA9PT0gJ2ZpeGVkJyA/IGhvc3RSZWN0LndpZHRoIDogd2lkdGg7XG4gICAgICAgIGNvbnN0IHJpZ2h0ID0gTWF0aC5tYXgoaG9zdFJlY3QucmlnaHQgLSByZWN0V2lkdGgsIG9mZnNldCk7XG4gICAgICAgIGNvbnN0IGxlZnQgPSBob3N0UmVjdC5sZWZ0ICsgd2lkdGggPCB2aWV3cG9ydC5yaWdodCA/IGhvc3RSZWN0LmxlZnQgOiByaWdodDtcbiAgICAgICAgY29uc3QgcG9zaXRpb24gPSB7XG4gICAgICAgICAgICB0b3A6IGhvc3RSZWN0LnRvcCAtIG9mZnNldCAtIGhlaWdodCxcbiAgICAgICAgICAgIGJvdHRvbTogaG9zdFJlY3QuYm90dG9tICsgb2Zmc2V0LFxuICAgICAgICAgICAgcmlnaHQ6IE1hdGgubWF4KHZpZXdwb3J0LmxlZnQsIHJpZ2h0KSxcbiAgICAgICAgICAgIGNlbnRlcjpcbiAgICAgICAgICAgICAgICBob3N0UmVjdC5sZWZ0ICsgaG9zdFJlY3Qud2lkdGggLyAyICsgd2lkdGggLyAyIDwgdmlld3BvcnQucmlnaHRcbiAgICAgICAgICAgICAgICAgICAgPyBob3N0UmVjdC5sZWZ0ICsgaG9zdFJlY3Qud2lkdGggLyAyIC0gd2lkdGggLyAyXG4gICAgICAgICAgICAgICAgICAgIDogcmlnaHQsXG4gICAgICAgICAgICBsZWZ0OiBNYXRoLm1heCh2aWV3cG9ydC5sZWZ0LCBsZWZ0KSxcbiAgICAgICAgfSBhcyBjb25zdDtcbiAgICAgICAgY29uc3QgYmV0dGVyOiBUdWlWZXJ0aWNhbERpcmVjdGlvbiA9XG4gICAgICAgICAgICBhdmFpbGFibGUudG9wID4gYXZhaWxhYmxlLmJvdHRvbSA/ICd0b3AnIDogJ2JvdHRvbSc7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgKGF2YWlsYWJsZVtwcmV2aW91c10gPiBtaW5IZWlnaHQgJiYgZGlyZWN0aW9uKSB8fFxuICAgICAgICAgICAgYXZhaWxhYmxlW3ByZXZpb3VzXSA+IGhlaWdodFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuZW1pdERpcmVjdGlvbihwcmV2aW91cyk7XG5cbiAgICAgICAgICAgIHJldHVybiBbcG9zaXRpb25bcHJldmlvdXNdLCBwb3NpdGlvblthbGlnbl1dO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wcmV2aW91cyA9IGJldHRlcjtcbiAgICAgICAgdGhpcy5lbWl0RGlyZWN0aW9uKGJldHRlcik7XG5cbiAgICAgICAgcmV0dXJuIFtwb3NpdGlvbltiZXR0ZXJdLCBwb3NpdGlvblthbGlnbl1dO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRBbGlnbihhbGlnbjogVHVpRHJvcGRvd25BbGlnbik6IFR1aURyb3Bkb3duQWxpZ24ge1xuICAgICAgICBjb25zdCBydGwgPSB0aGlzLmVsLm1hdGNoZXMoJ1tkaXI9XCJydGxcIl0gOnNjb3BlJyk7XG5cbiAgICAgICAgaWYgKHJ0bCAmJiBhbGlnbiA9PT0gJ2xlZnQnKSB7XG4gICAgICAgICAgICByZXR1cm4gJ3JpZ2h0JztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBydGwgJiYgYWxpZ24gPT09ICdyaWdodCcgPyAnbGVmdCcgOiBhbGlnbjtcbiAgICB9XG59XG4iXX0=
|
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
import { DOCUMENT } from '@angular/common';
|
|
2
|
-
import { Directive, inject, Input, ViewContainerRef } from '@angular/core';
|
|
3
|
-
import { CHAR_NO_BREAK_SPACE, CHAR_ZERO_WIDTH_SPACE, EMPTY_CLIENT_RECT, TUI_TRUE_HANDLER, } from '@taiga-ui/cdk/constants';
|
|
4
|
-
import { TUI_RANGE } from '@taiga-ui/cdk/tokens';
|
|
5
|
-
import { tuiInjectElement, tuiIsElement, tuiIsTextfield, tuiIsTextNode, } from '@taiga-ui/cdk/utils/dom';
|
|
6
|
-
import { tuiGetNativeFocused } from '@taiga-ui/cdk/utils/focus';
|
|
7
|
-
import { tuiIsString, tuiPx } from '@taiga-ui/cdk/utils/miscellaneous';
|
|
8
|
-
import { tuiAsDriver, tuiAsRectAccessor, TuiDriver, } from '@taiga-ui/core/classes';
|
|
9
|
-
import { TUI_SELECTION_STREAM } from '@taiga-ui/core/tokens';
|
|
10
|
-
import { tuiGetWordRange } from '@taiga-ui/core/utils';
|
|
11
|
-
import { BehaviorSubject, combineLatest, distinctUntilChanged, filter, map } from 'rxjs';
|
|
12
|
-
import { TuiDropdownDirective } from './dropdown.directive';
|
|
13
|
-
import * as i0 from "@angular/core";
|
|
14
|
-
class TuiDropdownSelection extends TuiDriver {
|
|
15
|
-
constructor() {
|
|
16
|
-
super((subscriber) => this.stream$.subscribe(subscriber));
|
|
17
|
-
this.doc = inject(DOCUMENT);
|
|
18
|
-
this.vcr = inject(ViewContainerRef);
|
|
19
|
-
this.dropdown = inject(TuiDropdownDirective);
|
|
20
|
-
this.el = tuiInjectElement();
|
|
21
|
-
this.handler$ = new BehaviorSubject(TUI_TRUE_HANDLER);
|
|
22
|
-
this.stream$ = combineLatest([
|
|
23
|
-
this.handler$,
|
|
24
|
-
inject(TUI_SELECTION_STREAM).pipe(map(() => this.getRange()), filter((range) => this.isValid(range)), distinctUntilChanged((x, y) => x.startOffset === y.startOffset &&
|
|
25
|
-
x.endOffset === y.endOffset &&
|
|
26
|
-
x.commonAncestorContainer === y.commonAncestorContainer)),
|
|
27
|
-
]).pipe(map(([handler, range]) => {
|
|
28
|
-
const contained = this.el.contains(range.commonAncestorContainer);
|
|
29
|
-
this.range =
|
|
30
|
-
contained && tuiIsTextNode(range.commonAncestorContainer)
|
|
31
|
-
? range
|
|
32
|
-
: this.range;
|
|
33
|
-
return (contained && handler(this.range)) || this.inDropdown(range);
|
|
34
|
-
}));
|
|
35
|
-
this.range = inject(TUI_RANGE);
|
|
36
|
-
this.position = 'selection';
|
|
37
|
-
this.type = 'dropdown';
|
|
38
|
-
}
|
|
39
|
-
set tuiDropdownSelection(visible) {
|
|
40
|
-
if (!tuiIsString(visible)) {
|
|
41
|
-
this.handler$.next(visible);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
getClientRect() {
|
|
45
|
-
switch (this.position) {
|
|
46
|
-
case 'tag': {
|
|
47
|
-
const { commonAncestorContainer } = this.range;
|
|
48
|
-
const element = tuiIsElement(commonAncestorContainer)
|
|
49
|
-
? commonAncestorContainer
|
|
50
|
-
: commonAncestorContainer.parentNode;
|
|
51
|
-
return element && tuiIsElement(element)
|
|
52
|
-
? element.getBoundingClientRect()
|
|
53
|
-
: EMPTY_CLIENT_RECT;
|
|
54
|
-
}
|
|
55
|
-
case 'word':
|
|
56
|
-
return tuiGetWordRange(this.range).getBoundingClientRect();
|
|
57
|
-
default:
|
|
58
|
-
return this.range.getBoundingClientRect();
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
ngOnDestroy() {
|
|
62
|
-
if (this.ghost) {
|
|
63
|
-
this.ghostHost.removeChild(this.ghost);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
get ghostHost() {
|
|
67
|
-
return this.el.querySelector('tui-textfield .t-ghost') || this.el;
|
|
68
|
-
}
|
|
69
|
-
getRange() {
|
|
70
|
-
const active = tuiGetNativeFocused(this.doc);
|
|
71
|
-
const selection = this.doc.getSelection();
|
|
72
|
-
const range = active && tuiIsTextfield(active) && this.el.contains(active)
|
|
73
|
-
? this.veryVerySadInputFix(active)
|
|
74
|
-
: (selection?.rangeCount && selection.getRangeAt(0)) || this.range;
|
|
75
|
-
return range.cloneRange();
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Check if given range is at least partially inside dropdown
|
|
79
|
-
*/
|
|
80
|
-
inDropdown(range) {
|
|
81
|
-
const { startContainer, endContainer } = range;
|
|
82
|
-
const inDropdown = this.boxContains(range.commonAncestorContainer);
|
|
83
|
-
const hostToDropdown = this.boxContains(endContainer) && this.el.contains(startContainer);
|
|
84
|
-
const dropdownToHost = this.boxContains(startContainer) && this.el.contains(endContainer);
|
|
85
|
-
return inDropdown || hostToDropdown || dropdownToHost;
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Check if Node is inside dropdown
|
|
89
|
-
*/
|
|
90
|
-
boxContains(node) {
|
|
91
|
-
return !!this.dropdown.ref()?.location.nativeElement.contains(node);
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Check if range is not inside tui-textfield's DOM elements
|
|
95
|
-
*/
|
|
96
|
-
isValid(range) {
|
|
97
|
-
return (!this.el.contains(range.commonAncestorContainer) ||
|
|
98
|
-
!this.el.closest('tui-textfield') ||
|
|
99
|
-
range.intersectsNode(this.ghost || this.el));
|
|
100
|
-
}
|
|
101
|
-
veryVerySadInputFix(element) {
|
|
102
|
-
const { ghost = this.initGhost(this.ghostHost) } = this;
|
|
103
|
-
const { top, left, width, height } = this.ghostHost.getBoundingClientRect();
|
|
104
|
-
const { selectionStart, selectionEnd, value } = element;
|
|
105
|
-
const range = this.doc.createRange();
|
|
106
|
-
const hostRect = this.ghostHost.getBoundingClientRect();
|
|
107
|
-
ghost.style.top = tuiPx(top - hostRect.top);
|
|
108
|
-
ghost.style.left = tuiPx(left - hostRect.left);
|
|
109
|
-
ghost.style.width = tuiPx(width);
|
|
110
|
-
ghost.style.height = tuiPx(height);
|
|
111
|
-
ghost.textContent = CHAR_ZERO_WIDTH_SPACE + value + CHAR_NO_BREAK_SPACE;
|
|
112
|
-
range.setStart(ghost.firstChild, selectionStart || 0);
|
|
113
|
-
range.setEnd(ghost.firstChild, selectionEnd || 0);
|
|
114
|
-
return range;
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* Create an invisible DIV styled exactly like input/textarea element inside directive
|
|
118
|
-
*/
|
|
119
|
-
initGhost(element) {
|
|
120
|
-
const ghost = this.doc.createElement('div');
|
|
121
|
-
const { font, letterSpacing, textTransform, padding, borderTop } = getComputedStyle(element);
|
|
122
|
-
ghost.style.position = 'absolute';
|
|
123
|
-
ghost.style.pointerEvents = 'none';
|
|
124
|
-
ghost.style.opacity = '0';
|
|
125
|
-
ghost.style.whiteSpace = 'pre-wrap';
|
|
126
|
-
ghost.style.boxSizing = 'border-box';
|
|
127
|
-
ghost.style.borderTop = borderTop;
|
|
128
|
-
ghost.style.font = font;
|
|
129
|
-
ghost.style.letterSpacing = letterSpacing;
|
|
130
|
-
ghost.style.textTransform = textTransform;
|
|
131
|
-
ghost.style.padding = padding;
|
|
132
|
-
this.ghostHost.appendChild(ghost);
|
|
133
|
-
this.ghost = ghost;
|
|
134
|
-
return ghost;
|
|
135
|
-
}
|
|
136
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownSelection, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
137
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiDropdownSelection, isStandalone: true, selector: "[tuiDropdownSelection]", inputs: { position: ["tuiDropdownSelectionPosition", "position"], tuiDropdownSelection: "tuiDropdownSelection" }, providers: [
|
|
138
|
-
tuiAsDriver(TuiDropdownSelection),
|
|
139
|
-
tuiAsRectAccessor(TuiDropdownSelection),
|
|
140
|
-
], usesInheritance: true, ngImport: i0 }); }
|
|
141
|
-
}
|
|
142
|
-
export { TuiDropdownSelection };
|
|
143
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownSelection, decorators: [{
|
|
144
|
-
type: Directive,
|
|
145
|
-
args: [{
|
|
146
|
-
standalone: true,
|
|
147
|
-
selector: '[tuiDropdownSelection]',
|
|
148
|
-
providers: [
|
|
149
|
-
tuiAsDriver(TuiDropdownSelection),
|
|
150
|
-
tuiAsRectAccessor(TuiDropdownSelection),
|
|
151
|
-
],
|
|
152
|
-
}]
|
|
153
|
-
}], ctorParameters: function () { return []; }, propDecorators: { position: [{
|
|
154
|
-
type: Input,
|
|
155
|
-
args: ['tuiDropdownSelectionPosition']
|
|
156
|
-
}], tuiDropdownSelection: [{
|
|
157
|
-
type: Input
|
|
158
|
-
}] } });
|
|
159
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tc2VsZWN0aW9uLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvZGlyZWN0aXZlcy9kcm9wZG93bi9kcm9wZG93bi1zZWxlY3Rpb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQWtCLGdCQUFnQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pGLE9BQU8sRUFDSCxtQkFBbUIsRUFDbkIscUJBQXFCLEVBQ3JCLGlCQUFpQixFQUNqQixnQkFBZ0IsR0FDbkIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFFL0MsT0FBTyxFQUNILGdCQUFnQixFQUNoQixZQUFZLEVBQ1osY0FBYyxFQUNkLGFBQWEsR0FDaEIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsV0FBVyxFQUFFLEtBQUssRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JFLE9BQU8sRUFDSCxXQUFXLEVBQ1gsaUJBQWlCLEVBQ2pCLFNBQVMsR0FFWixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQzNELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUMsZUFBZSxFQUFFLGFBQWEsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRXZGLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDOztBQUUxRCxNQVFh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S0FBSyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7UUFDMUIsS0FBSyxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQ3BDLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLFlBQVksQ0FBQztRQUNyQyxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDbEMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLEtBQUssQ0FBQyxLQUFLLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUMxQyxLQUFLLENBQUMsS0FBSyxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFDMUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBRTlCLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBRW5CLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7K0dBN0tRLG9CQUFvQjttR0FBcEIsb0JBQW9CLHVMQUxsQjtZQUNQLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQztZQUNqQyxpQkFBaUIsQ0FBQyxvQkFBb0IsQ0FBQztTQUMxQzs7U0FFUSxvQkFBb0I7NEZBQXBCLG9CQUFvQjtrQkFSaEMsU0FBUzttQkFBQztvQkFDUCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLHdCQUF3QjtvQkFDbEMsU0FBUyxFQUFFO3dCQUNQLFdBQVcsc0JBQXNCO3dCQUNqQyxpQkFBaUIsc0JBQXNCO3FCQUMxQztpQkFDSjswRUEyQ1UsUUFBUTtzQkFEZCxLQUFLO3VCQUFDLDhCQUE4QjtnQkFVMUIsb0JBQW9CO3NCQUQ5QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtET0NVTUVOVH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7RGlyZWN0aXZlLCBpbmplY3QsIElucHV0LCB0eXBlIE9uRGVzdHJveSwgVmlld0NvbnRhaW5lclJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIENIQVJfTk9fQlJFQUtfU1BBQ0UsXG4gICAgQ0hBUl9aRVJPX1dJRFRIX1NQQUNFLFxuICAgIEVNUFRZX0NMSUVOVF9SRUNULFxuICAgIFRVSV9UUlVFX0hBTkRMRVIsXG59IGZyb20gJ0B0YWlnYS11aS9jZGsvY29uc3RhbnRzJztcbmltcG9ydCB7VFVJX1JBTkdFfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3Rva2Vucyc7XG5pbXBvcnQge3R5cGUgVHVpQm9vbGVhbkhhbmRsZXJ9IGZyb20gJ0B0YWlnYS11aS9jZGsvdHlwZXMnO1xuaW1wb3J0IHtcbiAgICB0dWlJbmplY3RFbGVtZW50LFxuICAgIHR1aUlzRWxlbWVudCxcbiAgICB0dWlJc1RleHRmaWVsZCxcbiAgICB0dWlJc1RleHROb2RlLFxufSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL2RvbSc7XG5pbXBvcnQge3R1aUdldE5hdGl2ZUZvY3VzZWR9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvZm9jdXMnO1xuaW1wb3J0IHt0dWlJc1N0cmluZywgdHVpUHh9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvbWlzY2VsbGFuZW91cyc7XG5pbXBvcnQge1xuICAgIHR1aUFzRHJpdmVyLFxuICAgIHR1aUFzUmVjdEFjY2Vzc29yLFxuICAgIFR1aURyaXZlcixcbiAgICB0eXBlIFR1aVJlY3RBY2Nlc3Nvcixcbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvY2xhc3Nlcyc7XG5pbXBvcnQge1RVSV9TRUxFQ1RJT05fU1RSRUFNfSBmcm9tICdAdGFpZ2EtdWkvY29yZS90b2tlbnMnO1xuaW1wb3J0IHt0dWlHZXRXb3JkUmFuZ2V9IGZyb20gJ0B0YWlnYS11aS9jb3JlL3V0aWxzJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1R1aURyb3Bkb3duRGlyZWN0aXZlfSBmcm9tICcuL2Ryb3Bkb3duLmRpcmVjdGl2ZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdbdHVpRHJvcGRvd25TZWxlY3Rpb25dJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgdHVpQXNEcml2ZXIoVHVpRHJvcGRvd25TZWxlY3Rpb24pLFxuICAgICAgICB0dWlBc1JlY3RBY2Nlc3NvcihUdWlEcm9wZG93blNlbGVjdGlvbiksXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpRHJvcGRvd25TZWxlY3Rpb25cbiAgICBleHRlbmRzIFR1aURyaXZlclxuICAgIGltcGxlbWVudHMgVHVpUmVjdEFjY2Vzc29yLCBPbkRlc3Ryb3lcbntcbiAgICBwcml2YXRlIGdob3N0PzogSFRNTEVsZW1lbnQ7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZG9jID0gaW5qZWN0KERPQ1VNRU5UKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdmNyID0gaW5qZWN0KFZpZXdDb250YWluZXJSZWYpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBkcm9wZG93biA9IGluamVjdChUdWlEcm9wZG93bkRpcmVjdGl2ZSk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGVsID0gdHVpSW5qZWN0RWxlbWVudCgpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBoYW5kbGVyJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VHVpQm9vbGVhbkhhbmRsZXI8UmFuZ2U+PihcbiAgICAgICAgVFVJX1RSVUVfSEFORExFUixcbiAgICApO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHN0cmVhbSQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgdGhpcy5oYW5kbGVyJCxcbiAgICAgICAgaW5qZWN0KFRVSV9TRUxFQ1RJT05fU1RSRUFNKS5waXBlKFxuICAgICAgICAgICAgbWFwKCgpID0+IHRoaXMuZ2V0UmFuZ2UoKSksXG4gICAgICAgICAgICBmaWx0ZXIoKHJhbmdlKSA9PiB0aGlzLmlzVmFsaWQocmFuZ2UpKSxcbiAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKFxuICAgICAgICAgICAgICAgICh4LCB5KSA9PlxuICAgICAgICAgICAgICAgICAgICB4LnN0YXJ0T2Zmc2V0ID09PSB5LnN0YXJ0T2Zmc2V0ICYmXG4gICAgICAgICAgICAgICAgICAgIHguZW5kT2Zmc2V0ID09PSB5LmVuZE9mZnNldCAmJlxuICAgICAgICAgICAgICAgICAgICB4LmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyID09PSB5LmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICBdKS5waXBlKFxuICAgICAgICBtYXAoKFtoYW5kbGVyLCByYW5nZV0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lZCA9IHRoaXMuZWwuY29udGFpbnMocmFuZ2UuY29tbW9uQW5jZXN0b3JDb250YWluZXIpO1xuXG4gICAgICAgICAgICB0aGlzLnJhbmdlID1cbiAgICAgICAgICAgICAgICBjb250YWluZWQgJiYgdHVpSXNUZXh0Tm9kZShyYW5nZS5jb21tb25BbmNlc3RvckNvbnRhaW5lcilcbiAgICAgICAgICAgICAgICAgICAgPyByYW5nZVxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMucmFuZ2U7XG5cbiAgICAgICAgICAgIHJldHVybiAoY29udGFpbmVkICYmIGhhbmRsZXIodGhpcy5yYW5nZSkpIHx8IHRoaXMuaW5Ecm9wZG93bihyYW5nZSk7XG4gICAgICAgIH0pLFxuICAgICk7XG5cbiAgICBwcm90ZWN0ZWQgcmFuZ2UgPSBpbmplY3QoVFVJX1JBTkdFKTtcblxuICAgIEBJbnB1dCgndHVpRHJvcGRvd25TZWxlY3Rpb25Qb3NpdGlvbicpXG4gICAgcHVibGljIHBvc2l0aW9uOiAnc2VsZWN0aW9uJyB8ICd0YWcnIHwgJ3dvcmQnID0gJ3NlbGVjdGlvbic7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgdHlwZSA9ICdkcm9wZG93bic7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKHN1YnNjcmliZXIpID0+IHRoaXMuc3RyZWFtJC5zdWJzY3JpYmUoc3Vic2NyaWJlcikpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCB0dWlEcm9wZG93blNlbGVjdGlvbih2aXNpYmxlOiBUdWlCb29sZWFuSGFuZGxlcjxSYW5nZT4gfCBzdHJpbmcpIHtcbiAgICAgICAgaWYgKCF0dWlJc1N0cmluZyh2aXNpYmxlKSkge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVyJC5uZXh0KHZpc2libGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldENsaWVudFJlY3QoKTogRE9NUmVjdCB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5wb3NpdGlvbikge1xuICAgICAgICAgICAgY2FzZSAndGFnJzoge1xuICAgICAgICAgICAgICAgIGNvbnN0IHtjb21tb25BbmNlc3RvckNvbnRhaW5lcn0gPSB0aGlzLnJhbmdlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0dWlJc0VsZW1lbnQoY29tbW9uQW5jZXN0b3JDb250YWluZXIpXG4gICAgICAgICAgICAgICAgICAgID8gY29tbW9uQW5jZXN0b3JDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgOiBjb21tb25BbmNlc3RvckNvbnRhaW5lci5wYXJlbnROb2RlO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQgJiYgdHVpSXNFbGVtZW50KGVsZW1lbnQpXG4gICAgICAgICAgICAgICAgICAgID8gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgICAgICAgICAgICAgICAgICA6IEVNUFRZX0NMSUVOVF9SRUNUO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnd29yZCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHR1aUdldFdvcmRSYW5nZSh0aGlzLnJhbmdlKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmFuZ2UuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmdob3N0KSB7XG4gICAgICAgICAgICB0aGlzLmdob3N0SG9zdC5yZW1vdmVDaGlsZCh0aGlzLmdob3N0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IGdob3N0SG9zdCgpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsLnF1ZXJ5U2VsZWN0b3IoJ3R1aS10ZXh0ZmllbGQgLnQtZ2hvc3QnKSB8fCB0aGlzLmVsO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UmFuZ2UoKTogUmFuZ2Uge1xuICAgICAgICBjb25zdCBhY3RpdmUgPSB0dWlHZXROYXRpdmVGb2N1c2VkKHRoaXMuZG9jKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0aW9uID0gdGhpcy5kb2MuZ2V0U2VsZWN0aW9uKCk7XG4gICAgICAgIGNvbnN0IHJhbmdlID1cbiAgICAgICAgICAgIGFjdGl2ZSAmJiB0dWlJc1RleHRmaWVsZChhY3RpdmUpICYmIHRoaXMuZWwuY29udGFpbnMoYWN0aXZlKVxuICAgICAgICAgICAgICAgID8gdGhpcy52ZXJ5VmVyeVNhZElucHV0Rml4KGFjdGl2ZSlcbiAgICAgICAgICAgICAgICA6IChzZWxlY3Rpb24/LnJhbmdlQ291bnQgJiYgc2VsZWN0aW9uLmdldFJhbmdlQXQoMCkpIHx8IHRoaXMucmFuZ2U7XG5cbiAgICAgICAgcmV0dXJuIHJhbmdlLmNsb25lUmFuZ2UoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiBnaXZlbiByYW5nZSBpcyBhdCBsZWFzdCBwYXJ0aWFsbHkgaW5zaWRlIGRyb3Bkb3duXG4gICAgICovXG4gICAgcHJpdmF0ZSBpbkRyb3Bkb3duKHJhbmdlOiBSYW5nZSk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCB7c3RhcnRDb250YWluZXIsIGVuZENvbnRhaW5lcn0gPSByYW5nZTtcbiAgICAgICAgY29uc3QgaW5Ecm9wZG93biA9IHRoaXMuYm94Q29udGFpbnMocmFuZ2UuY29tbW9uQW5jZXN0b3JDb250YWluZXIpO1xuICAgICAgICBjb25zdCBob3N0VG9Ecm9wZG93biA9XG4gICAgICAgICAgICB0aGlzLmJveENvbnRhaW5zKGVuZENvbnRhaW5lcikgJiYgdGhpcy5lbC5jb250YWlucyhzdGFydENvbnRhaW5lcik7XG4gICAgICAgIGNvbnN0IGRyb3Bkb3duVG9Ib3N0ID1cbiAgICAgICAgICAgIHRoaXMuYm94Q29udGFpbnMoc3RhcnRDb250YWluZXIpICYmIHRoaXMuZWwuY29udGFpbnMoZW5kQ29udGFpbmVyKTtcblxuICAgICAgICByZXR1cm4gaW5Ecm9wZG93biB8fCBob3N0VG9Ecm9wZG93biB8fCBkcm9wZG93blRvSG9zdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiBOb2RlIGlzIGluc2lkZSBkcm9wZG93blxuICAgICAqL1xuICAgIHByaXZhdGUgYm94Q29udGFpbnMobm9kZTogTm9kZSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLmRyb3Bkb3duLnJlZigpPy5sb2NhdGlvbi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKG5vZGUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrIGlmIHJhbmdlIGlzIG5vdCBpbnNpZGUgdHVpLXRleHRmaWVsZCdzIERPTSBlbGVtZW50c1xuICAgICAqL1xuICAgIHByaXZhdGUgaXNWYWxpZChyYW5nZTogUmFuZ2UpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICF0aGlzLmVsLmNvbnRhaW5zKHJhbmdlLmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyKSB8fFxuICAgICAgICAgICAgIXRoaXMuZWwuY2xvc2VzdCgndHVpLXRleHRmaWVsZCcpIHx8XG4gICAgICAgICAgICByYW5nZS5pbnRlcnNlY3RzTm9kZSh0aGlzLmdob3N0IHx8IHRoaXMuZWwpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB2ZXJ5VmVyeVNhZElucHV0Rml4KGVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQgfCBIVE1MVGV4dEFyZWFFbGVtZW50KTogUmFuZ2Uge1xuICAgICAgICBjb25zdCB7Z2hvc3QgPSB0aGlzLmluaXRHaG9zdCh0aGlzLmdob3N0SG9zdCl9ID0gdGhpcztcbiAgICAgICAgY29uc3Qge3RvcCwgbGVmdCwgd2lkdGgsIGhlaWdodH0gPSB0aGlzLmdob3N0SG9zdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3Qge3NlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQsIHZhbHVlfSA9IGVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHJhbmdlID0gdGhpcy5kb2MuY3JlYXRlUmFuZ2UoKTtcbiAgICAgICAgY29uc3QgaG9zdFJlY3QgPSB0aGlzLmdob3N0SG9zdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgICBnaG9zdC5zdHlsZS50b3AgPSB0dWlQeCh0b3AgLSBob3N0UmVjdC50b3ApO1xuICAgICAgICBnaG9zdC5zdHlsZS5sZWZ0ID0gdHVpUHgobGVmdCAtIGhvc3RSZWN0LmxlZnQpO1xuICAgICAgICBnaG9zdC5zdHlsZS53aWR0aCA9IHR1aVB4KHdpZHRoKTtcbiAgICAgICAgZ2hvc3Quc3R5bGUuaGVpZ2h0ID0gdHVpUHgoaGVpZ2h0KTtcbiAgICAgICAgZ2hvc3QudGV4dENvbnRlbnQgPSBDSEFSX1pFUk9fV0lEVEhfU1BBQ0UgKyB2YWx1ZSArIENIQVJfTk9fQlJFQUtfU1BBQ0U7XG5cbiAgICAgICAgcmFuZ2Uuc2V0U3RhcnQoZ2hvc3QuZmlyc3RDaGlsZCBhcyBOb2RlLCBzZWxlY3Rpb25TdGFydCB8fCAwKTtcbiAgICAgICAgcmFuZ2Uuc2V0RW5kKGdob3N0LmZpcnN0Q2hpbGQgYXMgTm9kZSwgc2VsZWN0aW9uRW5kIHx8IDApO1xuXG4gICAgICAgIHJldHVybiByYW5nZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGUgYW4gaW52aXNpYmxlIERJViBzdHlsZWQgZXhhY3RseSBsaWtlIGlucHV0L3RleHRhcmVhIGVsZW1lbnQgaW5zaWRlIGRpcmVjdGl2ZVxuICAgICAqL1xuICAgIHByaXZhdGUgaW5pdEdob3N0KFxuICAgICAgICBlbGVtZW50OiBIVE1MRWxlbWVudCB8IEhUTUxJbnB1dEVsZW1lbnQgfCBIVE1MVGV4dEFyZWFFbGVtZW50LFxuICAgICk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgY29uc3QgZ2hvc3QgPSB0aGlzLmRvYy5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgY29uc3Qge2ZvbnQsIGxldHRlclNwYWNpbmcsIHRleHRUcmFuc2Zvcm0sIHBhZGRpbmcsIGJvcmRlclRvcH0gPVxuICAgICAgICAgICAgZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcblxuICAgICAgICBnaG9zdC5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gICAgICAgIGdob3N0LnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnbm9uZSc7XG4gICAgICAgIGdob3N0LnN0eWxlLm9wYWNpdHkgPSAnMCc7XG4gICAgICAgIGdob3N0LnN0eWxlLndoaXRlU3BhY2UgPSAncHJlLXdyYXAnO1xuICAgICAgICBnaG9zdC5zdHlsZS5ib3hTaXppbmcgPSAnYm9yZGVyLWJveCc7XG4gICAgICAgIGdob3N0LnN0eWxlLmJvcmRlclRvcCA9IGJvcmRlclRvcDtcbiAgICAgICAgZ2hvc3Quc3R5bGUuZm9udCA9IGZvbnQ7XG4gICAgICAgIGdob3N0LnN0eWxlLmxldHRlclNwYWNpbmcgPSBsZXR0ZXJTcGFjaW5nO1xuICAgICAgICBnaG9zdC5zdHlsZS50ZXh0VHJhbnNmb3JtID0gdGV4dFRyYW5zZm9ybTtcbiAgICAgICAgZ2hvc3Quc3R5bGUucGFkZGluZyA9IHBhZGRpbmc7XG5cbiAgICAgICAgdGhpcy5naG9zdEhvc3QuYXBwZW5kQ2hpbGQoZ2hvc3QpO1xuICAgICAgICB0aGlzLmdob3N0ID0gZ2hvc3Q7XG5cbiAgICAgICAgcmV0dXJuIGdob3N0O1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { inject } from '@angular/core';
|
|
2
|
-
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
3
|
-
import { tuiDirectiveBinding } from '@taiga-ui/cdk/utils/miscellaneous';
|
|
4
|
-
import { TuiDropdownDirective } from './dropdown.directive';
|
|
5
|
-
import { TuiDropdownOpen } from './dropdown-open.directive';
|
|
6
|
-
export function tuiDropdown(value) {
|
|
7
|
-
return tuiDirectiveBinding(TuiDropdownDirective, 'tuiDropdown', value, {});
|
|
8
|
-
}
|
|
9
|
-
export function tuiDropdownEnabled(value) {
|
|
10
|
-
return tuiDirectiveBinding(TuiDropdownOpen, 'tuiDropdownEnabled', value, {});
|
|
11
|
-
}
|
|
12
|
-
export function tuiDropdownOpen() {
|
|
13
|
-
const open = tuiDirectiveBinding(TuiDropdownOpen, 'tuiDropdownOpen', false, {});
|
|
14
|
-
inject(TuiDropdownOpen)
|
|
15
|
-
.tuiDropdownOpenChange.pipe(takeUntilDestroyed())
|
|
16
|
-
.subscribe((value) => open.set(value));
|
|
17
|
-
return open;
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uYmluZGluZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2RpcmVjdGl2ZXMvZHJvcGRvd24vZHJvcGRvd24uYmluZGluZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBbUMsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFHdEUsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDMUQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBTTFELE1BQU0sVUFBVSxXQUFXLENBQUMsS0FBb0I7SUFDNUMsT0FBTyxtQkFBbUIsQ0FBQyxvQkFBb0IsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQy9FLENBQUM7QUFNRCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsS0FBZ0M7SUFDL0QsT0FBTyxtQkFBbUIsQ0FBQyxlQUFlLEVBQUUsb0JBQW9CLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ2pGLENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZTtJQUMzQixNQUFNLElBQUksR0FBNEIsbUJBQW1CLENBQ3JELGVBQWUsRUFDZixpQkFBaUIsRUFDakIsS0FBSyxFQUNMLEVBQUUsQ0FDTCxDQUFDO0lBRUYsTUFBTSxDQUFDLGVBQWUsQ0FBQztTQUNsQixxQkFBcUIsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztTQUNoRCxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUUzQyxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpbmplY3QsIHR5cGUgU2lnbmFsLCB0eXBlIFdyaXRhYmxlU2lnbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dGFrZVVudGlsRGVzdHJveWVkfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQge3R1aURpcmVjdGl2ZUJpbmRpbmd9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvbWlzY2VsbGFuZW91cyc7XG5pbXBvcnQge3R5cGUgUG9seW1vcnBoZXVzQ29udGVudH0gZnJvbSAnQHRhaWdhLXVpL3BvbHltb3JwaGV1cyc7XG5cbmltcG9ydCB7VHVpRHJvcGRvd25EaXJlY3RpdmV9IGZyb20gJy4vZHJvcGRvd24uZGlyZWN0aXZlJztcbmltcG9ydCB7VHVpRHJvcGRvd25PcGVufSBmcm9tICcuL2Ryb3Bkb3duLW9wZW4uZGlyZWN0aXZlJztcblxudHlwZSBDID0gUG9seW1vcnBoZXVzQ29udGVudDtcblxuZXhwb3J0IGZ1bmN0aW9uIHR1aURyb3Bkb3duKHZhbHVlOiBDIHwgV3JpdGFibGVTaWduYWw8Qz4pOiBXcml0YWJsZVNpZ25hbDxDPjtcbmV4cG9ydCBmdW5jdGlvbiB0dWlEcm9wZG93bih2YWx1ZTogU2lnbmFsPEM+KTogU2lnbmFsPEM+O1xuZXhwb3J0IGZ1bmN0aW9uIHR1aURyb3Bkb3duKHZhbHVlOiBDIHwgU2lnbmFsPEM+KTogU2lnbmFsPEM+IHtcbiAgICByZXR1cm4gdHVpRGlyZWN0aXZlQmluZGluZyhUdWlEcm9wZG93bkRpcmVjdGl2ZSwgJ3R1aURyb3Bkb3duJywgdmFsdWUsIHt9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR1aURyb3Bkb3duRW5hYmxlZChcbiAgICB2YWx1ZTogV3JpdGFibGVTaWduYWw8Ym9vbGVhbj4gfCBib29sZWFuLFxuKTogV3JpdGFibGVTaWduYWw8Ym9vbGVhbj47XG5leHBvcnQgZnVuY3Rpb24gdHVpRHJvcGRvd25FbmFibGVkKHZhbHVlOiBTaWduYWw8Ym9vbGVhbj4pOiBTaWduYWw8Ym9vbGVhbj47XG5leHBvcnQgZnVuY3Rpb24gdHVpRHJvcGRvd25FbmFibGVkKHZhbHVlOiBTaWduYWw8Ym9vbGVhbj4gfCBib29sZWFuKTogU2lnbmFsPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdHVpRGlyZWN0aXZlQmluZGluZyhUdWlEcm9wZG93bk9wZW4sICd0dWlEcm9wZG93bkVuYWJsZWQnLCB2YWx1ZSwge30pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHVpRHJvcGRvd25PcGVuKCk6IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+IHtcbiAgICBjb25zdCBvcGVuOiBXcml0YWJsZVNpZ25hbDxib29sZWFuPiA9IHR1aURpcmVjdGl2ZUJpbmRpbmcoXG4gICAgICAgIFR1aURyb3Bkb3duT3BlbixcbiAgICAgICAgJ3R1aURyb3Bkb3duT3BlbicsXG4gICAgICAgIGZhbHNlLFxuICAgICAgICB7fSxcbiAgICApO1xuXG4gICAgaW5qZWN0KFR1aURyb3Bkb3duT3BlbilcbiAgICAgICAgLnR1aURyb3Bkb3duT3BlbkNoYW5nZS5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKVxuICAgICAgICAuc3Vic2NyaWJlKCh2YWx1ZSkgPT4gb3Blbi5zZXQodmFsdWUpKTtcblxuICAgIHJldHVybiBvcGVuO1xufVxuIl19
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, computed, inject, } from '@angular/core';
|
|
2
|
-
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
3
|
-
import { EMPTY_CLIENT_RECT } from '@taiga-ui/cdk/constants';
|
|
4
|
-
import { TuiActiveZone } from '@taiga-ui/cdk/directives/active-zone';
|
|
5
|
-
import { TuiAnimated } from '@taiga-ui/cdk/directives/animated';
|
|
6
|
-
import { tuiInjectElement } from '@taiga-ui/cdk/utils/dom';
|
|
7
|
-
import { tuiClamp } from '@taiga-ui/cdk/utils/math';
|
|
8
|
-
import { tuiPx } from '@taiga-ui/cdk/utils/miscellaneous';
|
|
9
|
-
import { tuiPositionAccessorFor, TuiRectAccessor, tuiRectAccessorFor, } from '@taiga-ui/core/classes';
|
|
10
|
-
import { TuiScrollbar } from '@taiga-ui/core/components/scrollbar';
|
|
11
|
-
import { TuiPositionService, TuiVisualViewportService } from '@taiga-ui/core/services';
|
|
12
|
-
import { TUI_DARK_MODE, TUI_VIEWPORT } from '@taiga-ui/core/tokens';
|
|
13
|
-
import { PolymorpheusOutlet } from '@taiga-ui/polymorpheus';
|
|
14
|
-
import { map, takeWhile } from 'rxjs';
|
|
15
|
-
import { TuiDropdownDirective } from './dropdown.directive';
|
|
16
|
-
import { TUI_DROPDOWN_CONTEXT } from './dropdown.providers';
|
|
17
|
-
import { TUI_DROPDOWN_OPTIONS } from './dropdown-options.directive';
|
|
18
|
-
import { TuiDropdownPosition } from './dropdown-position.directive';
|
|
19
|
-
import * as i0 from "@angular/core";
|
|
20
|
-
import * as i1 from "@taiga-ui/cdk/directives/active-zone";
|
|
21
|
-
import * as i2 from "@taiga-ui/cdk/directives/animated";
|
|
22
|
-
/**
|
|
23
|
-
* @description:
|
|
24
|
-
* This component is used to show template in a portal
|
|
25
|
-
* using default style of white rounded box with a shadow
|
|
26
|
-
*/
|
|
27
|
-
class TuiDropdownComponent {
|
|
28
|
-
constructor() {
|
|
29
|
-
this.el = tuiInjectElement();
|
|
30
|
-
this.accessor = inject(TuiRectAccessor);
|
|
31
|
-
this.viewport = inject(TUI_VIEWPORT);
|
|
32
|
-
this.vvs = inject(TuiVisualViewportService);
|
|
33
|
-
this.styles$ = inject(TuiPositionService).pipe(takeWhile(() => this.directive.el.isConnected &&
|
|
34
|
-
!!this.directive.el.getBoundingClientRect().height), map((v) => (this.position === 'fixed' ? this.vvs.correct(v) : v)), map(([top, left]) => this.getStyles(left, top)), takeUntilDestroyed());
|
|
35
|
-
this.options = inject(TUI_DROPDOWN_OPTIONS);
|
|
36
|
-
this.directive = inject(TuiDropdownDirective);
|
|
37
|
-
this.context = inject(TUI_DROPDOWN_CONTEXT, { optional: true });
|
|
38
|
-
this.darkMode = inject(TUI_DARK_MODE);
|
|
39
|
-
this.position = this.directive.position;
|
|
40
|
-
this.theme = computed((_ = this.darkMode()) => this.directive.el.closest('[tuiTheme]')?.getAttribute('tuiTheme'));
|
|
41
|
-
this.close = () => this.directive.toggle(false);
|
|
42
|
-
}
|
|
43
|
-
ngAfterViewInit() {
|
|
44
|
-
this.styles$.subscribe({
|
|
45
|
-
next: (styles) => Object.assign(this.el.style, styles),
|
|
46
|
-
complete: () => this.close?.(),
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
getStyles(x, y) {
|
|
50
|
-
const { maxHeight, minHeight, offset, limitWidth } = this.options;
|
|
51
|
-
const parent = this.el.offsetParent?.getBoundingClientRect() || EMPTY_CLIENT_RECT;
|
|
52
|
-
const { left = 0, top = 0 } = this.position === 'fixed' ? {} : parent;
|
|
53
|
-
const rect = this.accessor.getClientRect();
|
|
54
|
-
const viewport = this.viewport.getClientRect();
|
|
55
|
-
const above = rect.top - viewport.top - 2 * offset;
|
|
56
|
-
const below = viewport.top + viewport.height - y - offset;
|
|
57
|
-
const available = y > rect.bottom ? below : above;
|
|
58
|
-
const height = this.el.getBoundingClientRect().right <= rect.left || x >= rect.right
|
|
59
|
-
? maxHeight
|
|
60
|
-
: tuiClamp(available, minHeight, maxHeight);
|
|
61
|
-
y -= top;
|
|
62
|
-
x -= left;
|
|
63
|
-
return {
|
|
64
|
-
position: this.position,
|
|
65
|
-
top: tuiPx(Math.round(Math.max(y, offset - top))),
|
|
66
|
-
left: tuiPx(Math.round(x)),
|
|
67
|
-
maxHeight: tuiPx(Math.round(height)),
|
|
68
|
-
width: limitWidth === 'fixed' ? tuiPx(Math.round(rect.width)) : '',
|
|
69
|
-
minWidth: limitWidth === 'min' ? tuiPx(Math.round(rect.width)) : '',
|
|
70
|
-
maxWidth: tuiPx(Math.round(viewport.width) - 16), // 8px min gap from each side
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
74
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiDropdownComponent, isStandalone: true, selector: "tui-dropdown", host: { properties: { "attr.data-appearance": "options.appearance", "attr.tuiTheme": "theme()" } }, providers: [
|
|
75
|
-
TuiPositionService,
|
|
76
|
-
tuiPositionAccessorFor('dropdown', TuiDropdownPosition),
|
|
77
|
-
tuiRectAccessorFor('dropdown', TuiDropdownDirective),
|
|
78
|
-
], hostDirectives: [{ directive: i1.TuiActiveZone }, { directive: i2.TuiAnimated }], ngImport: i0, template: "<tui-scrollbar class=\"t-scroll\">\n <div\n *polymorpheusOutlet=\"directive._content() as text; context: {$implicit: close}\"\n class=\"t-primitive\"\n >\n {{ text }}\n </div>\n</tui-scrollbar>\n", styles: [":host{position:absolute;display:flex;box-shadow:var(--tui-shadow-medium);color:var(--tui-text-primary);background:var(--tui-background-elevation-3);border-radius:var(--tui-radius-m);overflow:hidden;border:1px solid var(--tui-border-normal);box-sizing:border-box;isolation:isolate;pointer-events:auto;--tui-from: translateY(-1rem)}:host.tui-enter,:host.tui-leave{animation-name:tuiFade,tuiSlide}:host:not([style*=top]){visibility:hidden}.t-scroll{flex-grow:1;max-inline-size:100%;inline-size:-webkit-max-content;inline-size:max-content;overscroll-behavior:none}.t-primitive{padding:1rem}\n"], dependencies: [{ kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "component", type: TuiScrollbar, selector: "tui-scrollbar", inputs: ["hidden"] }], changeDetection: i0.ChangeDetectionStrategy.Default }); }
|
|
79
|
-
}
|
|
80
|
-
export { TuiDropdownComponent };
|
|
81
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownComponent, decorators: [{
|
|
82
|
-
type: Component,
|
|
83
|
-
args: [{ standalone: true, selector: 'tui-dropdown', imports: [PolymorpheusOutlet, TuiScrollbar], changeDetection: ChangeDetectionStrategy.Default, providers: [
|
|
84
|
-
TuiPositionService,
|
|
85
|
-
tuiPositionAccessorFor('dropdown', TuiDropdownPosition),
|
|
86
|
-
tuiRectAccessorFor('dropdown', TuiDropdownDirective),
|
|
87
|
-
], hostDirectives: [TuiActiveZone, TuiAnimated], host: {
|
|
88
|
-
'[attr.data-appearance]': 'options.appearance',
|
|
89
|
-
'[attr.tuiTheme]': 'theme()',
|
|
90
|
-
}, template: "<tui-scrollbar class=\"t-scroll\">\n <div\n *polymorpheusOutlet=\"directive._content() as text; context: {$implicit: close}\"\n class=\"t-primitive\"\n >\n {{ text }}\n </div>\n</tui-scrollbar>\n", styles: [":host{position:absolute;display:flex;box-shadow:var(--tui-shadow-medium);color:var(--tui-text-primary);background:var(--tui-background-elevation-3);border-radius:var(--tui-radius-m);overflow:hidden;border:1px solid var(--tui-border-normal);box-sizing:border-box;isolation:isolate;pointer-events:auto;--tui-from: translateY(-1rem)}:host.tui-enter,:host.tui-leave{animation-name:tuiFade,tuiSlide}:host:not([style*=top]){visibility:hidden}.t-scroll{flex-grow:1;max-inline-size:100%;inline-size:-webkit-max-content;inline-size:max-content;overscroll-behavior:none}.t-primitive{padding:1rem}\n"] }]
|
|
91
|
-
}] });
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9kaXJlY3RpdmVzL2Ryb3Bkb3duL2Ryb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvZGlyZWN0aXZlcy9kcm9wZG93bi9kcm9wZG93bi50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixNQUFNLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDMUQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ25FLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUM5RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDbEQsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQ3hELE9BQU8sRUFDSCxzQkFBc0IsRUFDdEIsZUFBZSxFQUNmLGtCQUFrQixHQUNyQixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUNqRSxPQUFPLEVBQUMsa0JBQWtCLEVBQUUsd0JBQXdCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRixPQUFPLEVBQUMsYUFBYSxFQUFFLFlBQVksRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ2xFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBQyxHQUFHLEVBQUUsU0FBUyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRXBDLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzFELE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzFELE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLCtCQUErQixDQUFDOzs7O0FBRWxFOzs7O0dBSUc7QUFDSCxNQW9CYSxvQkFBb0I7SUFwQmpDO1FBcUJxQixPQUFFLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztRQUN4QixhQUFRLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ25DLGFBQVEsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDaEMsUUFBRyxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBRXZDLFlBQU8sR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxJQUFJLENBQ3RELFNBQVMsQ0FDTCxHQUFHLEVBQUUsQ0FDRCxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxXQUFXO1lBQzdCLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLE1BQU0sQ0FDekQsRUFDRCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUNqRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFDL0Msa0JBQWtCLEVBQUUsQ0FDdkIsQ0FBQztRQUVpQixZQUFPLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDdkMsY0FBUyxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3pDLFlBQU8sR0FBRyxNQUFNLENBQUMsb0JBQW9CLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztRQUN6RCxhQUFRLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2pDLGFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQztRQUNuQyxVQUFLLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQ3hELElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxZQUFZLENBQUMsVUFBVSxDQUFDLENBQ3BFLENBQUM7UUFTaUIsVUFBSyxHQUFHLEdBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBNkJ2RTtJQXBDVSxlQUFlO1FBQ2xCLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDO1lBQ25CLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUM7WUFDdEQsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRTtTQUNqQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBSU8sU0FBUyxDQUFDLENBQVMsRUFBRSxDQUFTO1FBQ2xDLE1BQU0sRUFBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ2hFLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLHFCQUFxQixFQUFFLElBQUksaUJBQWlCLENBQUM7UUFDbEYsTUFBTSxFQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBQyxHQUFHLElBQUksQ0FBQyxRQUFRLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUNwRSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzNDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDL0MsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxRQUFRLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUM7UUFDbkQsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLEdBQUcsR0FBRyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUM7UUFDMUQsTUFBTSxTQUFTLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ2xELE1BQU0sTUFBTSxHQUNSLElBQUksQ0FBQyxFQUFFLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUs7WUFDakUsQ0FBQyxDQUFDLFNBQVM7WUFDWCxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFFcEQsQ0FBQyxJQUFJLEdBQUcsQ0FBQztRQUNULENBQUMsSUFBSSxJQUFJLENBQUM7UUFFVixPQUFPO1lBQ0gsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNqRCxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDMUIsU0FBUyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3BDLEtBQUssRUFBRSxVQUFVLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNsRSxRQUFRLEVBQUUsVUFBVSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDbkUsUUFBUSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSw2QkFBNkI7U0FDbEYsQ0FBQztJQUNOLENBQUM7K0dBN0RRLG9CQUFvQjttR0FBcEIsb0JBQW9CLCtKQVhsQjtZQUNQLGtCQUFrQjtZQUNsQixzQkFBc0IsQ0FBQyxVQUFVLEVBQUUsbUJBQW1CLENBQUM7WUFDdkQsa0JBQWtCLENBQUMsVUFBVSxFQUFFLG9CQUFvQixDQUFDO1NBQ3ZELDRHQ2hETCxtT0FRQSxzb0JEOEJjLGtCQUFrQiw4SEFBRSxZQUFZOztTQWlCakMsb0JBQW9COzRGQUFwQixvQkFBb0I7a0JBcEJoQyxTQUFTO2lDQUNNLElBQUksWUFDTixjQUFjLFdBQ2YsQ0FBQyxrQkFBa0IsRUFBRSxZQUFZLENBQUMsbUJBSzFCLHVCQUF1QixDQUFDLE9BQU8sYUFDckM7d0JBQ1Asa0JBQWtCO3dCQUNsQixzQkFBc0IsQ0FBQyxVQUFVLEVBQUUsbUJBQW1CLENBQUM7d0JBQ3ZELGtCQUFrQixDQUFDLFVBQVUsRUFBRSxvQkFBb0IsQ0FBQztxQkFDdkQsa0JBQ2UsQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDLFFBQ3RDO3dCQUNGLHdCQUF3QixFQUFFLG9CQUFvQjt3QkFDOUMsaUJBQWlCLEVBQUUsU0FBUztxQkFDL0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIHR5cGUgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgY29tcHV0ZWQsXG4gICAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dGFrZVVudGlsRGVzdHJveWVkfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQge0VNUFRZX0NMSUVOVF9SRUNUfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2NvbnN0YW50cyc7XG5pbXBvcnQge1R1aUFjdGl2ZVpvbmV9IGZyb20gJ0B0YWlnYS11aS9jZGsvZGlyZWN0aXZlcy9hY3RpdmUtem9uZSc7XG5pbXBvcnQge1R1aUFuaW1hdGVkfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2RpcmVjdGl2ZXMvYW5pbWF0ZWQnO1xuaW1wb3J0IHt0dWlJbmplY3RFbGVtZW50fSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL2RvbSc7XG5pbXBvcnQge3R1aUNsYW1wfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL21hdGgnO1xuaW1wb3J0IHt0dWlQeH0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9taXNjZWxsYW5lb3VzJztcbmltcG9ydCB7XG4gICAgdHVpUG9zaXRpb25BY2Nlc3NvckZvcixcbiAgICBUdWlSZWN0QWNjZXNzb3IsXG4gICAgdHVpUmVjdEFjY2Vzc29yRm9yLFxufSBmcm9tICdAdGFpZ2EtdWkvY29yZS9jbGFzc2VzJztcbmltcG9ydCB7VHVpU2Nyb2xsYmFyfSBmcm9tICdAdGFpZ2EtdWkvY29yZS9jb21wb25lbnRzL3Njcm9sbGJhcic7XG5pbXBvcnQge1R1aVBvc2l0aW9uU2VydmljZSwgVHVpVmlzdWFsVmlld3BvcnRTZXJ2aWNlfSBmcm9tICdAdGFpZ2EtdWkvY29yZS9zZXJ2aWNlcyc7XG5pbXBvcnQge1RVSV9EQVJLX01PREUsIFRVSV9WSUVXUE9SVH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvdG9rZW5zJztcbmltcG9ydCB7UG9seW1vcnBoZXVzT3V0bGV0fSBmcm9tICdAdGFpZ2EtdWkvcG9seW1vcnBoZXVzJztcbmltcG9ydCB7bWFwLCB0YWtlV2hpbGV9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1R1aURyb3Bkb3duRGlyZWN0aXZlfSBmcm9tICcuL2Ryb3Bkb3duLmRpcmVjdGl2ZSc7XG5pbXBvcnQge1RVSV9EUk9QRE9XTl9DT05URVhUfSBmcm9tICcuL2Ryb3Bkb3duLnByb3ZpZGVycyc7XG5pbXBvcnQge1RVSV9EUk9QRE9XTl9PUFRJT05TfSBmcm9tICcuL2Ryb3Bkb3duLW9wdGlvbnMuZGlyZWN0aXZlJztcbmltcG9ydCB7VHVpRHJvcGRvd25Qb3NpdGlvbn0gZnJvbSAnLi9kcm9wZG93bi1wb3NpdGlvbi5kaXJlY3RpdmUnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbjpcbiAqIFRoaXMgY29tcG9uZW50IGlzIHVzZWQgdG8gc2hvdyB0ZW1wbGF0ZSBpbiBhIHBvcnRhbFxuICogdXNpbmcgZGVmYXVsdCBzdHlsZSBvZiB3aGl0ZSByb3VuZGVkIGJveCB3aXRoIGEgc2hhZG93XG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICd0dWktZHJvcGRvd24nLFxuICAgIGltcG9ydHM6IFtQb2x5bW9ycGhldXNPdXRsZXQsIFR1aVNjcm9sbGJhcl0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Ryb3Bkb3duLnRlbXBsYXRlLmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2Ryb3Bkb3duLnN0eWxlLmxlc3MnXSxcbiAgICAvLyBAYmFkIFRPRE86IE9uUHVzaFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvcHJlZmVyLW9uLXB1c2gtY29tcG9uZW50LWNoYW5nZS1kZXRlY3Rpb25cbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHQsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIFR1aVBvc2l0aW9uU2VydmljZSxcbiAgICAgICAgdHVpUG9zaXRpb25BY2Nlc3NvckZvcignZHJvcGRvd24nLCBUdWlEcm9wZG93blBvc2l0aW9uKSxcbiAgICAgICAgdHVpUmVjdEFjY2Vzc29yRm9yKCdkcm9wZG93bicsIFR1aURyb3Bkb3duRGlyZWN0aXZlKSxcbiAgICBdLFxuICAgIGhvc3REaXJlY3RpdmVzOiBbVHVpQWN0aXZlWm9uZSwgVHVpQW5pbWF0ZWRdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1thdHRyLmRhdGEtYXBwZWFyYW5jZV0nOiAnb3B0aW9ucy5hcHBlYXJhbmNlJyxcbiAgICAgICAgJ1thdHRyLnR1aVRoZW1lXSc6ICd0aGVtZSgpJyxcbiAgICB9LFxufSlcbmV4cG9ydCBjbGFzcyBUdWlEcm9wZG93bkNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZWwgPSB0dWlJbmplY3RFbGVtZW50KCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBhY2Nlc3NvciA9IGluamVjdChUdWlSZWN0QWNjZXNzb3IpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdmlld3BvcnQgPSBpbmplY3QoVFVJX1ZJRVdQT1JUKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHZ2cyA9IGluamVjdChUdWlWaXN1YWxWaWV3cG9ydFNlcnZpY2UpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdHlsZXMkID0gaW5qZWN0KFR1aVBvc2l0aW9uU2VydmljZSkucGlwZShcbiAgICAgICAgdGFrZVdoaWxlKFxuICAgICAgICAgICAgKCkgPT5cbiAgICAgICAgICAgICAgICB0aGlzLmRpcmVjdGl2ZS5lbC5pc0Nvbm5lY3RlZCAmJlxuICAgICAgICAgICAgICAgICEhdGhpcy5kaXJlY3RpdmUuZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0LFxuICAgICAgICApLFxuICAgICAgICBtYXAoKHYpID0+ICh0aGlzLnBvc2l0aW9uID09PSAnZml4ZWQnID8gdGhpcy52dnMuY29ycmVjdCh2KSA6IHYpKSxcbiAgICAgICAgbWFwKChbdG9wLCBsZWZ0XSkgPT4gdGhpcy5nZXRTdHlsZXMobGVmdCwgdG9wKSksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICAgICk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgb3B0aW9ucyA9IGluamVjdChUVUlfRFJPUERPV05fT1BUSU9OUyk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGRpcmVjdGl2ZSA9IGluamVjdChUdWlEcm9wZG93bkRpcmVjdGl2ZSk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbnRleHQgPSBpbmplY3QoVFVJX0RST1BET1dOX0NPTlRFWFQsIHtvcHRpb25hbDogdHJ1ZX0pO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBkYXJrTW9kZSA9IGluamVjdChUVUlfREFSS19NT0RFKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcG9zaXRpb24gPSB0aGlzLmRpcmVjdGl2ZS5wb3NpdGlvbjtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdGhlbWUgPSBjb21wdXRlZCgoXyA9IHRoaXMuZGFya01vZGUoKSkgPT5cbiAgICAgICAgdGhpcy5kaXJlY3RpdmUuZWwuY2xvc2VzdCgnW3R1aVRoZW1lXScpPy5nZXRBdHRyaWJ1dGUoJ3R1aVRoZW1lJyksXG4gICAgKTtcblxuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3R5bGVzJC5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgbmV4dDogKHN0eWxlcykgPT4gT2JqZWN0LmFzc2lnbih0aGlzLmVsLnN0eWxlLCBzdHlsZXMpLFxuICAgICAgICAgICAgY29tcGxldGU6ICgpID0+IHRoaXMuY2xvc2U/LigpLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2xvc2UgPSAoKTogdm9pZCA9PiB0aGlzLmRpcmVjdGl2ZS50b2dnbGUoZmFsc2UpO1xuXG4gICAgcHJpdmF0ZSBnZXRTdHlsZXMoeDogbnVtYmVyLCB5OiBudW1iZXIpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICAgICAgY29uc3Qge21heEhlaWdodCwgbWluSGVpZ2h0LCBvZmZzZXQsIGxpbWl0V2lkdGh9ID0gdGhpcy5vcHRpb25zO1xuICAgICAgICBjb25zdCBwYXJlbnQgPSB0aGlzLmVsLm9mZnNldFBhcmVudD8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkgfHwgRU1QVFlfQ0xJRU5UX1JFQ1Q7XG4gICAgICAgIGNvbnN0IHtsZWZ0ID0gMCwgdG9wID0gMH0gPSB0aGlzLnBvc2l0aW9uID09PSAnZml4ZWQnID8ge30gOiBwYXJlbnQ7XG4gICAgICAgIGNvbnN0IHJlY3QgPSB0aGlzLmFjY2Vzc29yLmdldENsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3Qgdmlld3BvcnQgPSB0aGlzLnZpZXdwb3J0LmdldENsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3QgYWJvdmUgPSByZWN0LnRvcCAtIHZpZXdwb3J0LnRvcCAtIDIgKiBvZmZzZXQ7XG4gICAgICAgIGNvbnN0IGJlbG93ID0gdmlld3BvcnQudG9wICsgdmlld3BvcnQuaGVpZ2h0IC0geSAtIG9mZnNldDtcbiAgICAgICAgY29uc3QgYXZhaWxhYmxlID0geSA+IHJlY3QuYm90dG9tID8gYmVsb3cgOiBhYm92ZTtcbiAgICAgICAgY29uc3QgaGVpZ2h0ID1cbiAgICAgICAgICAgIHRoaXMuZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkucmlnaHQgPD0gcmVjdC5sZWZ0IHx8IHggPj0gcmVjdC5yaWdodFxuICAgICAgICAgICAgICAgID8gbWF4SGVpZ2h0XG4gICAgICAgICAgICAgICAgOiB0dWlDbGFtcChhdmFpbGFibGUsIG1pbkhlaWdodCwgbWF4SGVpZ2h0KTtcblxuICAgICAgICB5IC09IHRvcDtcbiAgICAgICAgeCAtPSBsZWZ0O1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwb3NpdGlvbjogdGhpcy5wb3NpdGlvbixcbiAgICAgICAgICAgIHRvcDogdHVpUHgoTWF0aC5yb3VuZChNYXRoLm1heCh5LCBvZmZzZXQgLSB0b3ApKSksXG4gICAgICAgICAgICBsZWZ0OiB0dWlQeChNYXRoLnJvdW5kKHgpKSxcbiAgICAgICAgICAgIG1heEhlaWdodDogdHVpUHgoTWF0aC5yb3VuZChoZWlnaHQpKSxcbiAgICAgICAgICAgIHdpZHRoOiBsaW1pdFdpZHRoID09PSAnZml4ZWQnID8gdHVpUHgoTWF0aC5yb3VuZChyZWN0LndpZHRoKSkgOiAnJyxcbiAgICAgICAgICAgIG1pbldpZHRoOiBsaW1pdFdpZHRoID09PSAnbWluJyA/IHR1aVB4KE1hdGgucm91bmQocmVjdC53aWR0aCkpIDogJycsXG4gICAgICAgICAgICBtYXhXaWR0aDogdHVpUHgoTWF0aC5yb3VuZCh2aWV3cG9ydC53aWR0aCkgLSAxNiksIC8vIDhweCBtaW4gZ2FwIGZyb20gZWFjaCBzaWRlXG4gICAgICAgIH07XG4gICAgfVxufVxuIiwiPHR1aS1zY3JvbGxiYXIgY2xhc3M9XCJ0LXNjcm9sbFwiPlxuICAgIDxkaXZcbiAgICAgICAgKnBvbHltb3JwaGV1c091dGxldD1cImRpcmVjdGl2ZS5fY29udGVudCgpIGFzIHRleHQ7IGNvbnRleHQ6IHskaW1wbGljaXQ6IGNsb3NlfVwiXG4gICAgICAgIGNsYXNzPVwidC1wcmltaXRpdmVcIlxuICAgID5cbiAgICAgICAge3sgdGV4dCB9fVxuICAgIDwvZGl2PlxuPC90dWktc2Nyb2xsYmFyPlxuIl19
|