@cuby-ui/core 0.0.192 → 0.0.194
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 +24 -24
- package/animations/animations.d.ts +36 -36
- package/animations/index.d.ts +1 -1
- package/classes/accessors.d.ts +17 -17
- package/classes/driver.d.ts +16 -16
- package/classes/index.d.ts +3 -3
- package/classes/vehicle.d.ts +6 -6
- package/components/accordion/accordion-item/accordion-item.component.d.ts +11 -11
- package/components/accordion/accordion.component.d.ts +5 -5
- package/components/accordion/accordion.module.d.ts +11 -11
- package/components/accordion/index.d.ts +3 -3
- package/components/alert/alert.component.d.ts +13 -13
- package/components/alert/alert.interfaces.d.ts +9 -9
- package/components/alert/alert.module.d.ts +11 -11
- package/components/alert/alert.service.d.ts +7 -7
- package/components/alert/alert.tokens.d.ts +16 -16
- package/components/alert/alert.types.d.ts +3 -3
- package/components/alert/alerts.component.d.ts +17 -17
- package/components/alert/index.d.ts +8 -8
- package/components/badge/badge.component.d.ts +10 -10
- package/components/badge/badge.module.d.ts +8 -8
- package/components/badge/badge.options.d.ts +8 -8
- package/components/badge/index.d.ts +2 -2
- package/components/banner/banner.component.d.ts +21 -21
- package/components/banner/banner.module.d.ts +11 -11
- package/components/banner/banner.options.d.ts +13 -13
- package/components/banner/index.d.ts +3 -3
- package/components/breadcrumbs/breadcrumb/breadcrumb.component.d.ts +6 -6
- package/components/breadcrumbs/breadcrumbs.component.d.ts +7 -7
- package/components/breadcrumbs/breadcrumbs.module.d.ts +10 -10
- package/components/breadcrumbs/index.d.ts +3 -3
- package/components/button/button.component.d.ts +38 -38
- package/components/button/button.module.d.ts +9 -9
- package/components/button/button.options.d.ts +9 -9
- package/components/button/index.d.ts +3 -3
- package/components/button-group/button-group.component.d.ts +5 -5
- package/components/button-group/button-group.module.d.ts +7 -7
- package/components/button-group/index.d.ts +2 -2
- package/components/checkbox/checkbox.component.d.ts +5 -5
- package/components/checkbox/checkbox.module.d.ts +7 -7
- package/components/checkbox/index.d.ts +2 -2
- package/components/context-menu/context-menu.component.d.ts +39 -39
- package/components/context-menu/context-menu.module.d.ts +9 -9
- package/components/context-menu/index.d.ts +2 -2
- package/components/dialog/dialog-actions/dialog-actions.component.d.ts +5 -5
- package/components/dialog/dialog-header/dialog-header.component.d.ts +13 -13
- package/components/dialog/dialog.component.d.ts +33 -33
- package/components/dialog/dialog.interfaces.d.ts +11 -11
- package/components/dialog/dialog.module.d.ts +14 -14
- package/components/dialog/dialog.service.d.ts +7 -7
- package/components/dialog/dialog.tokens.d.ts +8 -8
- package/components/dialog/dialogs.component.d.ts +18 -18
- package/components/dialog/index.d.ts +8 -8
- package/components/form-field/form-field.component.d.ts +5 -5
- package/components/form-field/form-field.module.d.ts +7 -7
- package/components/form-field/index.d.ts +2 -2
- package/components/hint/hint.component.d.ts +7 -7
- package/components/hint/hint.module.d.ts +7 -7
- package/components/hint/index.d.ts +2 -2
- package/components/icon-button/icon-button.component.d.ts +13 -13
- package/components/icon-button/icon-button.module.d.ts +9 -9
- package/components/icon-button/index.d.ts +2 -2
- package/components/index.d.ts +26 -26
- package/components/input-number/index.d.ts +2 -2
- package/components/input-number/input-number.component.d.ts +38 -38
- package/components/input-number/input-number.module.d.ts +12 -12
- package/components/input-password/index.d.ts +2 -2
- package/components/input-password/input-password.component.d.ts +31 -31
- package/components/input-password/input-password.module.d.ts +11 -11
- package/components/input-text/index.d.ts +2 -2
- package/components/input-text/input-text.component.d.ts +31 -31
- package/components/input-text/input-text.module.d.ts +11 -11
- package/components/input-time/index.d.ts +3 -3
- package/components/input-time/input-time.component.d.ts +36 -36
- package/components/input-time/input-time.module.d.ts +12 -12
- package/components/input-time/input-time.options.d.ts +7 -7
- package/components/label/index.d.ts +2 -2
- package/components/label/label.component.d.ts +6 -6
- package/components/label/label.module.d.ts +8 -8
- package/components/notification/index.d.ts +3 -3
- package/components/notification/notification.component.d.ts +18 -18
- package/components/notification/notification.module.d.ts +9 -9
- package/components/notification/notification.options.d.ts +17 -17
- package/components/radio/index.d.ts +2 -2
- package/components/radio/radio.component.d.ts +5 -5
- package/components/radio/radio.module.d.ts +7 -7
- package/components/root/index.d.ts +3 -3
- package/components/root/root.component.d.ts +11 -11
- package/components/root/root.module.d.ts +11 -11
- package/components/root/root.options.d.ts +1 -1
- package/components/select/index.d.ts +2 -2
- package/components/select/select.component.d.ts +53 -53
- package/components/select/select.module.d.ts +11 -11
- package/components/svg/index.d.ts +2 -2
- package/components/svg/svg.component.d.ts +16 -16
- package/components/svg/svg.module.d.ts +8 -8
- package/components/tabs/index.d.ts +3 -3
- package/components/tabs/tab/index.d.ts +1 -1
- package/components/tabs/tab/tab.component.d.ts +8 -8
- package/components/tabs/tabs.component.d.ts +16 -16
- package/components/tabs/tabs.module.d.ts +8 -8
- package/components/textarea/index.d.ts +2 -2
- package/components/textarea/textarea.component.d.ts +10 -10
- package/components/textarea/textarea.module.d.ts +7 -7
- package/components/toggle/index.d.ts +2 -2
- package/components/toggle/toggle.component.d.ts +5 -5
- package/components/toggle/toggle.module.d.ts +7 -7
- package/directives/index.d.ts +2 -2
- package/directives/text-field-controller/index.d.ts +8 -8
- package/directives/text-field-controller/text-field-controller.module.d.ts +11 -11
- package/directives/text-field-controller/text-field-controller.provider.d.ts +4 -4
- package/directives/text-field-controller/text-field-icon-left.directive.d.ts +9 -9
- package/directives/text-field-controller/text-field-id.directive.d.ts +8 -8
- package/directives/text-field-controller/text-field-is-error.directive.d.ts +8 -8
- package/directives/text-field-controller/text-field-placeholder.directive.d.ts +8 -8
- package/directives/text-field-controller/text-field-size.directive.d.ts +9 -9
- package/directives/text-field-controller/text-field.controller.d.ts +20 -20
- package/directives/tooltip/index.d.ts +16 -16
- package/directives/tooltip/tooltip-describe.directive.d.ts +16 -16
- package/directives/tooltip/tooltip-driver.directive.d.ts +7 -7
- package/directives/tooltip/tooltip-host.directive.d.ts +9 -9
- package/directives/tooltip/tooltip-hover.directive.d.ts +21 -21
- package/directives/tooltip/tooltip-manual.directive.d.ts +13 -13
- package/directives/tooltip/tooltip-options.directive.d.ts +36 -36
- package/directives/tooltip/tooltip-overflow.directive.d.ts +8 -8
- package/directives/tooltip/tooltip-pointer.directive.d.ts +10 -10
- package/directives/tooltip/tooltip-position.directive.d.ts +20 -20
- package/directives/tooltip/tooltip-unstyled.component.d.ts +17 -17
- package/directives/tooltip/tooltip.component.d.ts +33 -33
- package/directives/tooltip/tooltip.d.ts +13 -13
- package/directives/tooltip/tooltip.directive.d.ts +26 -26
- package/directives/tooltip/tooltip.providers.d.ts +5 -5
- package/directives/tooltip/tooltip.service.d.ts +13 -13
- package/directives/tooltip/tooltips.component.d.ts +12 -12
- package/esm2022/animations/animations.mjs +272 -272
- package/esm2022/animations/index.mjs +1 -1
- package/esm2022/classes/accessors.mjs +31 -31
- package/esm2022/classes/driver.mjs +35 -35
- package/esm2022/classes/index.mjs +4 -4
- package/esm2022/classes/vehicle.mjs +7 -7
- package/esm2022/components/accordion/accordion-item/accordion-item.component.mjs +28 -28
- package/esm2022/components/accordion/accordion.component.mjs +11 -11
- package/esm2022/components/accordion/accordion.module.mjs +37 -37
- package/esm2022/components/accordion/index.mjs +4 -4
- package/esm2022/components/alert/alert.component.mjs +36 -36
- package/esm2022/components/alert/alert.interfaces.mjs +2 -2
- package/esm2022/components/alert/alert.module.mjs +40 -40
- package/esm2022/components/alert/alert.service.mjs +17 -17
- package/esm2022/components/alert/alert.tokens.mjs +20 -20
- package/esm2022/components/alert/alert.types.mjs +2 -2
- package/esm2022/components/alert/alerts.component.mjs +36 -36
- package/esm2022/components/alert/index.mjs +9 -9
- package/esm2022/components/badge/badge.component.mjs +31 -31
- package/esm2022/components/badge/badge.module.mjs +18 -18
- package/esm2022/components/badge/badge.options.mjs +8 -8
- package/esm2022/components/badge/index.mjs +3 -3
- package/esm2022/components/banner/banner.component.mjs +68 -68
- package/esm2022/components/banner/banner.module.mjs +31 -31
- package/esm2022/components/banner/banner.options.mjs +6 -6
- package/esm2022/components/banner/index.mjs +4 -4
- package/esm2022/components/breadcrumbs/breadcrumb/breadcrumb.component.mjs +16 -16
- package/esm2022/components/breadcrumbs/breadcrumbs.component.mjs +17 -17
- package/esm2022/components/breadcrumbs/breadcrumbs.module.mjs +33 -33
- package/esm2022/components/breadcrumbs/index.mjs +4 -4
- package/esm2022/components/button/button.component.mjs +138 -138
- package/esm2022/components/button/button.module.mjs +24 -24
- package/esm2022/components/button/button.options.mjs +10 -10
- package/esm2022/components/button/index.mjs +4 -4
- package/esm2022/components/button-group/button-group.component.mjs +11 -11
- package/esm2022/components/button-group/button-group.module.mjs +16 -16
- package/esm2022/components/button-group/index.mjs +3 -3
- package/esm2022/components/checkbox/checkbox.component.mjs +11 -11
- package/esm2022/components/checkbox/checkbox.module.mjs +16 -16
- package/esm2022/components/checkbox/index.mjs +3 -3
- package/esm2022/components/context-menu/context-menu.component.mjs +148 -146
- package/esm2022/components/context-menu/context-menu.module.mjs +24 -24
- package/esm2022/components/context-menu/index.mjs +3 -3
- package/esm2022/components/dialog/dialog-actions/dialog-actions.component.mjs +11 -11
- package/esm2022/components/dialog/dialog-header/dialog-header.component.mjs +28 -28
- package/esm2022/components/dialog/dialog.component.mjs +67 -67
- package/esm2022/components/dialog/dialog.interfaces.mjs +2 -2
- package/esm2022/components/dialog/dialog.module.mjs +49 -49
- package/esm2022/components/dialog/dialog.service.mjs +17 -17
- package/esm2022/components/dialog/dialog.tokens.mjs +12 -12
- package/esm2022/components/dialog/dialogs.component.mjs +51 -51
- package/esm2022/components/dialog/index.mjs +9 -9
- package/esm2022/components/form-field/form-field.component.mjs +11 -11
- package/esm2022/components/form-field/form-field.module.mjs +16 -16
- package/esm2022/components/form-field/index.mjs +3 -3
- package/esm2022/components/hint/hint.component.mjs +19 -19
- package/esm2022/components/hint/hint.module.mjs +16 -16
- package/esm2022/components/hint/index.mjs +3 -3
- package/esm2022/components/icon-button/icon-button.component.mjs +32 -32
- package/esm2022/components/icon-button/icon-button.module.mjs +24 -24
- package/esm2022/components/icon-button/index.mjs +3 -3
- package/esm2022/components/index.mjs +27 -27
- package/esm2022/components/input-number/index.mjs +3 -3
- package/esm2022/components/input-number/input-number.component.mjs +113 -113
- package/esm2022/components/input-number/input-number.module.mjs +36 -36
- package/esm2022/components/input-password/index.mjs +3 -3
- package/esm2022/components/input-password/input-password.component.mjs +89 -89
- package/esm2022/components/input-password/input-password.module.mjs +33 -33
- package/esm2022/components/input-text/index.mjs +3 -3
- package/esm2022/components/input-text/input-text.component.mjs +87 -87
- package/esm2022/components/input-text/input-text.module.mjs +33 -33
- package/esm2022/components/input-time/index.mjs +4 -4
- package/esm2022/components/input-time/input-time.component.mjs +99 -99
- package/esm2022/components/input-time/input-time.module.mjs +36 -36
- package/esm2022/components/input-time/input-time.options.mjs +8 -8
- package/esm2022/components/label/index.mjs +3 -3
- package/esm2022/components/label/label.component.mjs +17 -17
- package/esm2022/components/label/label.module.mjs +18 -18
- package/esm2022/components/notification/index.mjs +4 -4
- package/esm2022/components/notification/notification.component.mjs +47 -47
- package/esm2022/components/notification/notification.module.mjs +24 -24
- package/esm2022/components/notification/notification.options.mjs +53 -53
- package/esm2022/components/radio/index.mjs +3 -3
- package/esm2022/components/radio/radio.component.mjs +11 -11
- package/esm2022/components/radio/radio.module.mjs +16 -16
- package/esm2022/components/root/index.mjs +4 -4
- package/esm2022/components/root/root.component.mjs +32 -32
- package/esm2022/components/root/root.module.mjs +31 -31
- package/esm2022/components/root/root.options.mjs +1 -1
- package/esm2022/components/select/index.mjs +3 -3
- package/esm2022/components/select/select.component.mjs +172 -172
- package/esm2022/components/select/select.module.mjs +32 -32
- package/esm2022/components/svg/index.mjs +3 -3
- package/esm2022/components/svg/svg.component.mjs +50 -50
- package/esm2022/components/svg/svg.module.mjs +18 -18
- package/esm2022/components/tabs/index.mjs +4 -4
- package/esm2022/components/tabs/tab/index.mjs +1 -1
- package/esm2022/components/tabs/tab/tab.component.mjs +21 -21
- package/esm2022/components/tabs/tabs.component.mjs +49 -49
- package/esm2022/components/tabs/tabs.module.mjs +18 -18
- package/esm2022/components/textarea/index.mjs +3 -3
- package/esm2022/components/textarea/textarea.component.mjs +35 -35
- package/esm2022/components/textarea/textarea.module.mjs +16 -16
- package/esm2022/components/toggle/index.mjs +3 -3
- package/esm2022/components/toggle/toggle.component.mjs +11 -11
- package/esm2022/components/toggle/toggle.module.mjs +16 -16
- package/esm2022/cuby-ui-core.mjs +4 -4
- package/esm2022/directives/index.mjs +3 -3
- package/esm2022/directives/text-field-controller/index.mjs +9 -9
- package/esm2022/directives/text-field-controller/text-field-controller.module.mjs +40 -40
- package/esm2022/directives/text-field-controller/text-field-controller.provider.mjs +24 -24
- package/esm2022/directives/text-field-controller/text-field-icon-left.directive.mjs +21 -21
- package/esm2022/directives/text-field-controller/text-field-id.directive.mjs +21 -21
- package/esm2022/directives/text-field-controller/text-field-is-error.directive.mjs +24 -24
- package/esm2022/directives/text-field-controller/text-field-placeholder.directive.mjs +21 -21
- package/esm2022/directives/text-field-controller/text-field-size.directive.mjs +24 -24
- package/esm2022/directives/text-field-controller/text-field.controller.mjs +25 -25
- package/esm2022/directives/tooltip/index.mjs +17 -17
- package/esm2022/directives/tooltip/tooltip-describe.directive.mjs +45 -45
- package/esm2022/directives/tooltip/tooltip-driver.directive.mjs +18 -18
- package/esm2022/directives/tooltip/tooltip-host.directive.mjs +26 -26
- package/esm2022/directives/tooltip/tooltip-hover.directive.mjs +53 -53
- package/esm2022/directives/tooltip/tooltip-manual.directive.mjs +31 -31
- package/esm2022/directives/tooltip/tooltip-options.directive.mjs +83 -83
- package/esm2022/directives/tooltip/tooltip-overflow.directive.mjs +31 -31
- package/esm2022/directives/tooltip/tooltip-pointer.directive.mjs +31 -31
- package/esm2022/directives/tooltip/tooltip-position.directive.mjs +96 -96
- package/esm2022/directives/tooltip/tooltip-unstyled.component.mjs +40 -40
- package/esm2022/directives/tooltip/tooltip.component.mjs +110 -110
- package/esm2022/directives/tooltip/tooltip.directive.mjs +92 -92
- package/esm2022/directives/tooltip/tooltip.mjs +27 -27
- package/esm2022/directives/tooltip/tooltip.providers.mjs +7 -7
- package/esm2022/directives/tooltip/tooltip.service.mjs +28 -28
- package/esm2022/directives/tooltip/tooltips.component.mjs +33 -33
- package/esm2022/index.mjs +7 -7
- package/esm2022/interfaces/context-menu-item.mjs +2 -2
- package/esm2022/interfaces/index.mjs +3 -3
- package/esm2022/interfaces/option.mjs +2 -2
- package/esm2022/services/index.mjs +5 -5
- package/esm2022/services/position.service.mjs +23 -23
- package/esm2022/services/theme.options.mjs +6 -6
- package/esm2022/services/theme.service.mjs +30 -30
- package/esm2022/services/visual-viewport.service.mjs +28 -28
- package/esm2022/tokens/animations-speed.mjs +8 -8
- package/esm2022/tokens/index.mjs +4 -4
- package/esm2022/tokens/reduced-motion.mjs +6 -6
- package/esm2022/tokens/viewport.mjs +31 -31
- package/esm2022/types/appearance.mjs +2 -2
- package/esm2022/types/hint-type.mjs +2 -2
- package/esm2022/types/index.mjs +10 -10
- package/esm2022/types/point.mjs +2 -2
- package/esm2022/types/portal-item.mjs +2 -2
- package/esm2022/types/position.mjs +2 -2
- package/esm2022/types/resizing.mjs +2 -2
- package/esm2022/types/shape.mjs +2 -2
- package/esm2022/types/size.mjs +2 -2
- package/esm2022/types/status.mjs +2 -2
- package/esm2022/utils/format/index.mjs +3 -3
- package/esm2022/utils/format/remove-spaces.mjs +4 -4
- package/esm2022/utils/format/replace.mjs +5 -5
- package/esm2022/utils/index.mjs +3 -3
- package/esm2022/utils/miscellaneous/index.mjs +4 -4
- package/esm2022/utils/miscellaneous/is-obscured.mjs +8 -8
- package/esm2022/utils/miscellaneous/override-options.mjs +11 -11
- package/esm2022/utils/miscellaneous/to-animation-options.mjs +14 -14
- package/fesm2022/cuby-ui-core.mjs +3195 -3193
- package/fesm2022/cuby-ui-core.mjs.map +1 -1
- package/fonts/Inter-Bold.svg +25443 -25443
- package/fonts/Inter-Medium.svg +25400 -25400
- package/fonts/Inter-Regular.svg +24341 -24341
- package/fonts/Inter-SemiBold.svg +25459 -25459
- package/index.d.ts +6 -6
- package/interfaces/context-menu-item.d.ts +7 -7
- package/interfaces/index.d.ts +2 -2
- package/interfaces/option.d.ts +5 -5
- package/package.json +3 -3
- package/services/index.d.ts +4 -4
- package/services/position.service.d.ts +10 -10
- package/services/theme.options.d.ts +5 -5
- package/services/theme.service.d.ts +12 -12
- package/services/visual-viewport.service.d.ts +9 -9
- package/styles/fonts.scss +51 -51
- package/styles/global.scss +9 -9
- package/styles/mixins/buttons.scss +13 -13
- package/styles/mixins/headings.scss +115 -115
- package/styles/mixins/inputs.scss +91 -91
- package/styles/mixins/lists.scss +5 -5
- package/styles/mixins/paddings.scss +35 -35
- package/styles/mixins/shadows.scss +38 -38
- package/styles/mixins/texts.scss +225 -225
- package/styles/theme.scss +385 -385
- package/styles/variables/colors.scss +253 -253
- package/tokens/animations-speed.d.ts +4 -4
- package/tokens/index.d.ts +3 -3
- package/tokens/reduced-motion.d.ts +1 -1
- package/tokens/viewport.d.ts +7 -7
- package/types/appearance.d.ts +8 -8
- package/types/hint-type.d.ts +1 -1
- package/types/index.d.ts +9 -9
- package/types/point.d.ts +1 -1
- package/types/portal-item.d.ts +9 -9
- package/types/position.d.ts +2 -2
- package/types/resizing.d.ts +2 -2
- package/types/shape.d.ts +1 -1
- package/types/size.d.ts +4 -4
- package/types/status.d.ts +1 -1
- package/utils/format/index.d.ts +2 -2
- package/utils/format/remove-spaces.d.ts +1 -1
- package/utils/format/replace.d.ts +1 -1
- package/utils/index.d.ts +2 -2
- package/utils/miscellaneous/index.d.ts +3 -3
- package/utils/miscellaneous/is-obscured.d.ts +4 -4
- package/utils/miscellaneous/override-options.d.ts +1 -1
- package/utils/miscellaneous/to-animation-options.d.ts +4 -4
|
@@ -1,83 +1,83 @@
|
|
|
1
|
-
import { Directive, inject, Input, Optional, Self, SkipSelf } from '@angular/core';
|
|
2
|
-
import { cuiCreateToken, cuiProvide } from '@cuby-ui/cdk';
|
|
3
|
-
import { cuiOverrideOptions } from '../../utils';
|
|
4
|
-
import { Subject } from 'rxjs';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export const CUI_TOOLTIP_DIRECTIONS = [
|
|
7
|
-
'top',
|
|
8
|
-
'top-left',
|
|
9
|
-
'top-right',
|
|
10
|
-
'bottom',
|
|
11
|
-
'bottom-left',
|
|
12
|
-
'bottom-right',
|
|
13
|
-
'left-top',
|
|
14
|
-
'left',
|
|
15
|
-
'left-bottom',
|
|
16
|
-
'right-top',
|
|
17
|
-
'right',
|
|
18
|
-
'right-bottom',
|
|
19
|
-
];
|
|
20
|
-
/** Default values for tooltip options */
|
|
21
|
-
export const CUI_TOOLTIP_DEFAULT_OPTIONS = {
|
|
22
|
-
direction: 'top',
|
|
23
|
-
showDelay: 500,
|
|
24
|
-
hideDelay: 200,
|
|
25
|
-
appearance: '',
|
|
26
|
-
/** TODO @deprecated use {@link CUI_TOOLTIP_OPTIONS} instead **/
|
|
27
|
-
icon: '@cui.circle-help',
|
|
28
|
-
};
|
|
29
|
-
/**
|
|
30
|
-
* Default parameters for tooltip directive
|
|
31
|
-
*/
|
|
32
|
-
export const CUI_TOOLTIP_OPTIONS = cuiCreateToken(CUI_TOOLTIP_DEFAULT_OPTIONS);
|
|
33
|
-
export const cuiTooltipOptionsProvider = (override) => ({
|
|
34
|
-
provide: CUI_TOOLTIP_OPTIONS,
|
|
35
|
-
deps: [
|
|
36
|
-
[new Optional(), new Self(), CuiTooltipOptionsDirective],
|
|
37
|
-
[new Optional(), new SkipSelf(), CUI_TOOLTIP_OPTIONS],
|
|
38
|
-
],
|
|
39
|
-
useFactory: cuiOverrideOptions(override, CUI_TOOLTIP_DEFAULT_OPTIONS),
|
|
40
|
-
});
|
|
41
|
-
/**
|
|
42
|
-
* @deprecated: drop in 5.0
|
|
43
|
-
*/
|
|
44
|
-
export class CuiTooltipOptionsDirective {
|
|
45
|
-
constructor() {
|
|
46
|
-
this.options = inject(CUI_TOOLTIP_OPTIONS, { skipSelf: true });
|
|
47
|
-
this.direction = this.options.direction;
|
|
48
|
-
this.appearance = this.options.appearance;
|
|
49
|
-
this.showDelay = this.options.showDelay;
|
|
50
|
-
this.hideDelay = this.options.hideDelay;
|
|
51
|
-
this.icon = this.options.icon;
|
|
52
|
-
this.change$ = new Subject();
|
|
53
|
-
}
|
|
54
|
-
ngOnChanges() {
|
|
55
|
-
this.change$.next();
|
|
56
|
-
}
|
|
57
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CuiTooltipOptionsDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
58
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: CuiTooltipOptionsDirective, isStandalone: true, selector: "[cuiTooltipContent]", inputs: { content: ["cuiTooltipContent", "content"], direction: ["cuiTooltipDirection", "direction"], appearance: ["cuiTooltipAppearance", "appearance"], showDelay: ["cuiTooltipShowDelay", "showDelay"], hideDelay: ["cuiTooltipHideDelay", "hideDelay"] }, providers: [cuiProvide(CUI_TOOLTIP_OPTIONS, CuiTooltipOptionsDirective)], usesOnChanges: true, ngImport: i0 }); }
|
|
59
|
-
}
|
|
60
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CuiTooltipOptionsDirective, decorators: [{
|
|
61
|
-
type: Directive,
|
|
62
|
-
args: [{
|
|
63
|
-
standalone: true,
|
|
64
|
-
selector: '[cuiTooltipContent]',
|
|
65
|
-
providers: [cuiProvide(CUI_TOOLTIP_OPTIONS, CuiTooltipOptionsDirective)],
|
|
66
|
-
}]
|
|
67
|
-
}], propDecorators: { content: [{
|
|
68
|
-
type: Input,
|
|
69
|
-
args: ['cuiTooltipContent']
|
|
70
|
-
}], direction: [{
|
|
71
|
-
type: Input,
|
|
72
|
-
args: ['cuiTooltipDirection']
|
|
73
|
-
}], appearance: [{
|
|
74
|
-
type: Input,
|
|
75
|
-
args: ['cuiTooltipAppearance']
|
|
76
|
-
}], showDelay: [{
|
|
77
|
-
type: Input,
|
|
78
|
-
args: ['cuiTooltipShowDelay']
|
|
79
|
-
}], hideDelay: [{
|
|
80
|
-
type: Input,
|
|
81
|
-
args: ['cuiTooltipHideDelay']
|
|
82
|
-
}] } });
|
|
83
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Directive, inject, Input, Optional, Self, SkipSelf } from '@angular/core';
|
|
2
|
+
import { cuiCreateToken, cuiProvide } from '@cuby-ui/cdk';
|
|
3
|
+
import { cuiOverrideOptions } from '../../utils';
|
|
4
|
+
import { Subject } from 'rxjs';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export const CUI_TOOLTIP_DIRECTIONS = [
|
|
7
|
+
'top',
|
|
8
|
+
'top-left',
|
|
9
|
+
'top-right',
|
|
10
|
+
'bottom',
|
|
11
|
+
'bottom-left',
|
|
12
|
+
'bottom-right',
|
|
13
|
+
'left-top',
|
|
14
|
+
'left',
|
|
15
|
+
'left-bottom',
|
|
16
|
+
'right-top',
|
|
17
|
+
'right',
|
|
18
|
+
'right-bottom',
|
|
19
|
+
];
|
|
20
|
+
/** Default values for tooltip options */
|
|
21
|
+
export const CUI_TOOLTIP_DEFAULT_OPTIONS = {
|
|
22
|
+
direction: 'top',
|
|
23
|
+
showDelay: 500,
|
|
24
|
+
hideDelay: 200,
|
|
25
|
+
appearance: '',
|
|
26
|
+
/** TODO @deprecated use {@link CUI_TOOLTIP_OPTIONS} instead **/
|
|
27
|
+
icon: '@cui.circle-help',
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Default parameters for tooltip directive
|
|
31
|
+
*/
|
|
32
|
+
export const CUI_TOOLTIP_OPTIONS = cuiCreateToken(CUI_TOOLTIP_DEFAULT_OPTIONS);
|
|
33
|
+
export const cuiTooltipOptionsProvider = (override) => ({
|
|
34
|
+
provide: CUI_TOOLTIP_OPTIONS,
|
|
35
|
+
deps: [
|
|
36
|
+
[new Optional(), new Self(), CuiTooltipOptionsDirective],
|
|
37
|
+
[new Optional(), new SkipSelf(), CUI_TOOLTIP_OPTIONS],
|
|
38
|
+
],
|
|
39
|
+
useFactory: cuiOverrideOptions(override, CUI_TOOLTIP_DEFAULT_OPTIONS),
|
|
40
|
+
});
|
|
41
|
+
/**
|
|
42
|
+
* @deprecated: drop in 5.0
|
|
43
|
+
*/
|
|
44
|
+
export class CuiTooltipOptionsDirective {
|
|
45
|
+
constructor() {
|
|
46
|
+
this.options = inject(CUI_TOOLTIP_OPTIONS, { skipSelf: true });
|
|
47
|
+
this.direction = this.options.direction;
|
|
48
|
+
this.appearance = this.options.appearance;
|
|
49
|
+
this.showDelay = this.options.showDelay;
|
|
50
|
+
this.hideDelay = this.options.hideDelay;
|
|
51
|
+
this.icon = this.options.icon;
|
|
52
|
+
this.change$ = new Subject();
|
|
53
|
+
}
|
|
54
|
+
ngOnChanges() {
|
|
55
|
+
this.change$.next();
|
|
56
|
+
}
|
|
57
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CuiTooltipOptionsDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
58
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: CuiTooltipOptionsDirective, isStandalone: true, selector: "[cuiTooltipContent]", inputs: { content: ["cuiTooltipContent", "content"], direction: ["cuiTooltipDirection", "direction"], appearance: ["cuiTooltipAppearance", "appearance"], showDelay: ["cuiTooltipShowDelay", "showDelay"], hideDelay: ["cuiTooltipHideDelay", "hideDelay"] }, providers: [cuiProvide(CUI_TOOLTIP_OPTIONS, CuiTooltipOptionsDirective)], usesOnChanges: true, ngImport: i0 }); }
|
|
59
|
+
}
|
|
60
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CuiTooltipOptionsDirective, decorators: [{
|
|
61
|
+
type: Directive,
|
|
62
|
+
args: [{
|
|
63
|
+
standalone: true,
|
|
64
|
+
selector: '[cuiTooltipContent]',
|
|
65
|
+
providers: [cuiProvide(CUI_TOOLTIP_OPTIONS, CuiTooltipOptionsDirective)],
|
|
66
|
+
}]
|
|
67
|
+
}], propDecorators: { content: [{
|
|
68
|
+
type: Input,
|
|
69
|
+
args: ['cuiTooltipContent']
|
|
70
|
+
}], direction: [{
|
|
71
|
+
type: Input,
|
|
72
|
+
args: ['cuiTooltipDirection']
|
|
73
|
+
}], appearance: [{
|
|
74
|
+
type: Input,
|
|
75
|
+
args: ['cuiTooltipAppearance']
|
|
76
|
+
}], showDelay: [{
|
|
77
|
+
type: Input,
|
|
78
|
+
args: ['cuiTooltipShowDelay']
|
|
79
|
+
}], hideDelay: [{
|
|
80
|
+
type: Input,
|
|
81
|
+
args: ['cuiTooltipHideDelay']
|
|
82
|
+
}] } });
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC1vcHRpb25zLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvZGlyZWN0aXZlcy90b29sdGlwL3Rvb2x0aXAtb3B0aW9ucy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzFELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUUvQyxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDOztBQWdCN0IsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQW1DO0lBQ2xFLEtBQUs7SUFDTCxVQUFVO0lBQ1YsV0FBVztJQUNYLFFBQVE7SUFDUixhQUFhO0lBQ2IsY0FBYztJQUNkLFVBQVU7SUFDVixNQUFNO0lBQ04sYUFBYTtJQUNiLFdBQVc7SUFDWCxPQUFPO0lBQ1AsY0FBYztDQUNqQixDQUFDO0FBVUYseUNBQXlDO0FBQ3pDLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFzQjtJQUMxRCxTQUFTLEVBQUUsS0FBSztJQUNoQixTQUFTLEVBQUUsR0FBRztJQUNkLFNBQVMsRUFBRSxHQUFHO0lBQ2QsVUFBVSxFQUFFLEVBQUU7SUFDZCxnRUFBZ0U7SUFDaEUsSUFBSSxFQUFFLGtCQUFrQjtDQUMzQixDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxjQUFjLENBQUMsMkJBQTJCLENBQUMsQ0FBQztBQUUvRSxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FFZixDQUFDLFFBQW9DLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDOUQsT0FBTyxFQUFFLG1CQUFtQjtJQUM1QixJQUFJLEVBQUU7UUFDRixDQUFDLElBQUksUUFBUSxFQUFFLEVBQUUsSUFBSSxJQUFJLEVBQUUsRUFBRSwwQkFBMEIsQ0FBQztRQUN4RCxDQUFDLElBQUksUUFBUSxFQUFFLEVBQUUsSUFBSSxRQUFRLEVBQUUsRUFBRSxtQkFBbUIsQ0FBQztLQUN4RDtJQUNELFVBQVUsRUFBRSxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsMkJBQTJCLENBQUM7Q0FDeEUsQ0FBQyxDQUFDO0FBRUg7O0dBRUc7QUFNSCxNQUFNLE9BQU8sMEJBQTBCO0lBTHZDO1FBTXFCLFlBQU8sR0FBRyxNQUFNLENBQUMsbUJBQW1CLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztRQU1sRSxjQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUM7UUFHbkMsZUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO1FBR3JDLGNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQztRQUduQyxjQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUM7UUFFbkMsU0FBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1FBRWhCLFlBQU8sR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0tBS2pEO0lBSFUsV0FBVztRQUNkLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDeEIsQ0FBQzsrR0F4QlEsMEJBQTBCO21HQUExQiwwQkFBMEIsZ1VBRnhCLENBQUMsVUFBVSxDQUFDLG1CQUFtQixFQUFFLDBCQUEwQixDQUFDLENBQUM7OzRGQUUvRCwwQkFBMEI7a0JBTHRDLFNBQVM7bUJBQUM7b0JBQ1AsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLFNBQVMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsNkJBQTZCLENBQUM7aUJBQzNFOzhCQUtVLE9BQU87c0JBRGIsS0FBSzt1QkFBQyxtQkFBbUI7Z0JBSW5CLFNBQVM7c0JBRGYsS0FBSzt1QkFBQyxxQkFBcUI7Z0JBSXJCLFVBQVU7c0JBRGhCLEtBQUs7dUJBQUMsc0JBQXNCO2dCQUl0QixTQUFTO3NCQURmLEtBQUs7dUJBQUMscUJBQXFCO2dCQUlyQixTQUFTO3NCQURmLEtBQUs7dUJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge0ZhY3RvcnlQcm92aWRlciwgT25DaGFuZ2VzfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtEaXJlY3RpdmUsIGluamVjdCwgSW5wdXQsIE9wdGlvbmFsLCBTZWxmLCBTa2lwU2VsZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGN1aUNyZWF0ZVRva2VuLCBjdWlQcm92aWRlIH0gZnJvbSAnQGN1YnktdWkvY2RrJztcclxuaW1wb3J0IHtjdWlPdmVycmlkZU9wdGlvbnN9IGZyb20gJy4uLy4uL3V0aWxzJztcclxuaW1wb3J0IHR5cGUge1BvbHltb3JwaGV1c0NvbnRlbnR9IGZyb20gJ0B0YWlnYS11aS9wb2x5bW9ycGhldXMnO1xyXG5pbXBvcnQge1N1YmplY3R9IGZyb20gJ3J4anMnO1xyXG5cclxuZXhwb3J0IHR5cGUgQ3VpVG9vbHRpcERpcmVjdGlvbiA9XHJcbiAgICB8ICdib3R0b20tbGVmdCdcclxuICAgIHwgJ2JvdHRvbS1yaWdodCdcclxuICAgIHwgJ2JvdHRvbSdcclxuICAgIHwgJ2xlZnQtYm90dG9tJ1xyXG4gICAgfCAnbGVmdC10b3AnXHJcbiAgICB8ICdsZWZ0J1xyXG4gICAgfCAncmlnaHQtYm90dG9tJ1xyXG4gICAgfCAncmlnaHQtdG9wJ1xyXG4gICAgfCAncmlnaHQnXHJcbiAgICB8ICd0b3AtbGVmdCdcclxuICAgIHwgJ3RvcC1yaWdodCdcclxuICAgIHwgJ3RvcCc7XHJcblxyXG5leHBvcnQgY29uc3QgQ1VJX1RPT0xUSVBfRElSRUNUSU9OUzogcmVhZG9ubHkgQ3VpVG9vbHRpcERpcmVjdGlvbltdID0gW1xyXG4gICAgJ3RvcCcsXHJcbiAgICAndG9wLWxlZnQnLFxyXG4gICAgJ3RvcC1yaWdodCcsXHJcbiAgICAnYm90dG9tJyxcclxuICAgICdib3R0b20tbGVmdCcsXHJcbiAgICAnYm90dG9tLXJpZ2h0JyxcclxuICAgICdsZWZ0LXRvcCcsXHJcbiAgICAnbGVmdCcsXHJcbiAgICAnbGVmdC1ib3R0b20nLFxyXG4gICAgJ3JpZ2h0LXRvcCcsXHJcbiAgICAncmlnaHQnLFxyXG4gICAgJ3JpZ2h0LWJvdHRvbScsXHJcbl07XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEN1aVRvb2x0aXBPcHRpb25zIHtcclxuICAgIHJlYWRvbmx5IGFwcGVhcmFuY2U6IHN0cmluZztcclxuICAgIHJlYWRvbmx5IGRpcmVjdGlvbjogQ3VpVG9vbHRpcERpcmVjdGlvbiB8IEN1aVRvb2x0aXBEaXJlY3Rpb25bXTtcclxuICAgIHJlYWRvbmx5IGhpZGVEZWxheTogbnVtYmVyO1xyXG4gICAgcmVhZG9ubHkgaWNvbjogc3RyaW5nO1xyXG4gICAgcmVhZG9ubHkgc2hvd0RlbGF5OiBudW1iZXI7XHJcbn1cclxuXHJcbi8qKiBEZWZhdWx0IHZhbHVlcyBmb3IgdG9vbHRpcCBvcHRpb25zICovXHJcbmV4cG9ydCBjb25zdCBDVUlfVE9PTFRJUF9ERUZBVUxUX09QVElPTlM6IEN1aVRvb2x0aXBPcHRpb25zID0ge1xyXG4gICAgZGlyZWN0aW9uOiAndG9wJyxcclxuICAgIHNob3dEZWxheTogNTAwLFxyXG4gICAgaGlkZURlbGF5OiAyMDAsXHJcbiAgICBhcHBlYXJhbmNlOiAnJyxcclxuICAgIC8qKiBUT0RPIEBkZXByZWNhdGVkIHVzZSB7QGxpbmsgQ1VJX1RPT0xUSVBfT1BUSU9OU30gaW5zdGVhZCAqKi9cclxuICAgIGljb246ICdAY3VpLmNpcmNsZS1oZWxwJyxcclxufTtcclxuXHJcbi8qKlxyXG4gKiBEZWZhdWx0IHBhcmFtZXRlcnMgZm9yIHRvb2x0aXAgZGlyZWN0aXZlXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgQ1VJX1RPT0xUSVBfT1BUSU9OUyA9IGN1aUNyZWF0ZVRva2VuKENVSV9UT09MVElQX0RFRkFVTFRfT1BUSU9OUyk7XHJcblxyXG5leHBvcnQgY29uc3QgY3VpVG9vbHRpcE9wdGlvbnNQcm92aWRlcjogKFxyXG4gICAgb3B0aW9uczogUGFydGlhbDxDdWlUb29sdGlwT3B0aW9ucz4sXHJcbikgPT4gRmFjdG9yeVByb3ZpZGVyID0gKG92ZXJyaWRlOiBQYXJ0aWFsPEN1aVRvb2x0aXBPcHRpb25zPikgPT4gKHtcclxuICAgIHByb3ZpZGU6IENVSV9UT09MVElQX09QVElPTlMsXHJcbiAgICBkZXBzOiBbXHJcbiAgICAgICAgW25ldyBPcHRpb25hbCgpLCBuZXcgU2VsZigpLCBDdWlUb29sdGlwT3B0aW9uc0RpcmVjdGl2ZV0sXHJcbiAgICAgICAgW25ldyBPcHRpb25hbCgpLCBuZXcgU2tpcFNlbGYoKSwgQ1VJX1RPT0xUSVBfT1BUSU9OU10sXHJcbiAgICBdLFxyXG4gICAgdXNlRmFjdG9yeTogY3VpT3ZlcnJpZGVPcHRpb25zKG92ZXJyaWRlLCBDVUlfVE9PTFRJUF9ERUZBVUxUX09QVElPTlMpLFxyXG59KTtcclxuXHJcbi8qKlxyXG4gKiBAZGVwcmVjYXRlZDogZHJvcCBpbiA1LjBcclxuICovXHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIHNlbGVjdG9yOiAnW2N1aVRvb2x0aXBDb250ZW50XScsXHJcbiAgICBwcm92aWRlcnM6IFtjdWlQcm92aWRlKENVSV9UT09MVElQX09QVElPTlMsIEN1aVRvb2x0aXBPcHRpb25zRGlyZWN0aXZlKV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDdWlUb29sdGlwT3B0aW9uc0RpcmVjdGl2ZSBpbXBsZW1lbnRzIEN1aVRvb2x0aXBPcHRpb25zLCBPbkNoYW5nZXMge1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zID0gaW5qZWN0KENVSV9UT09MVElQX09QVElPTlMsIHtza2lwU2VsZjogdHJ1ZX0pO1xyXG5cclxuICAgIEBJbnB1dCgnY3VpVG9vbHRpcENvbnRlbnQnKVxyXG4gICAgcHVibGljIGNvbnRlbnQ6IFBvbHltb3JwaGV1c0NvbnRlbnQ7XHJcblxyXG4gICAgQElucHV0KCdjdWlUb29sdGlwRGlyZWN0aW9uJylcclxuICAgIHB1YmxpYyBkaXJlY3Rpb24gPSB0aGlzLm9wdGlvbnMuZGlyZWN0aW9uO1xyXG5cclxuICAgIEBJbnB1dCgnY3VpVG9vbHRpcEFwcGVhcmFuY2UnKVxyXG4gICAgcHVibGljIGFwcGVhcmFuY2UgPSB0aGlzLm9wdGlvbnMuYXBwZWFyYW5jZTtcclxuXHJcbiAgICBASW5wdXQoJ2N1aVRvb2x0aXBTaG93RGVsYXknKVxyXG4gICAgcHVibGljIHNob3dEZWxheSA9IHRoaXMub3B0aW9ucy5zaG93RGVsYXk7XHJcblxyXG4gICAgQElucHV0KCdjdWlUb29sdGlwSGlkZURlbGF5JylcclxuICAgIHB1YmxpYyBoaWRlRGVsYXkgPSB0aGlzLm9wdGlvbnMuaGlkZURlbGF5O1xyXG5cclxuICAgIHB1YmxpYyBpY29uID0gdGhpcy5vcHRpb25zLmljb247XHJcblxyXG4gICAgcHVibGljIHJlYWRvbmx5IGNoYW5nZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICAgIHB1YmxpYyBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmNoYW5nZSQubmV4dCgpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
import { Directive, inject } from '@angular/core';
|
|
2
|
-
import { CuiTooltipDirective } from './tooltip.directive';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "./tooltip.directive";
|
|
5
|
-
export class CuiTooltipOverflow {
|
|
6
|
-
constructor() {
|
|
7
|
-
this.hint = inject(CuiTooltipDirective);
|
|
8
|
-
}
|
|
9
|
-
onMouseEnter({ scrollWidth, clientWidth, textContent }) {
|
|
10
|
-
this.hint.cuiTooltip = scrollWidth > clientWidth ? textContent : '';
|
|
11
|
-
}
|
|
12
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CuiTooltipOverflow, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
13
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: CuiTooltipOverflow, isStandalone: true, selector: "[cuiTooltipOverflow]", host: { listeners: { "mouseenter": "onMouseEnter($event.currentTarget)" } }, hostDirectives: [{ directive: i1.CuiTooltipDirective, inputs: ["cuiTooltipAppearance", "cuiTooltipAppearance"] }], ngImport: i0 }); }
|
|
14
|
-
}
|
|
15
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CuiTooltipOverflow, decorators: [{
|
|
16
|
-
type: Directive,
|
|
17
|
-
args: [{
|
|
18
|
-
standalone: true,
|
|
19
|
-
selector: '[cuiTooltipOverflow]',
|
|
20
|
-
hostDirectives: [
|
|
21
|
-
{
|
|
22
|
-
directive: CuiTooltipDirective,
|
|
23
|
-
inputs: ['cuiTooltipAppearance'],
|
|
24
|
-
},
|
|
25
|
-
],
|
|
26
|
-
host: {
|
|
27
|
-
'(mouseenter)': 'onMouseEnter($event.currentTarget)',
|
|
28
|
-
},
|
|
29
|
-
}]
|
|
30
|
-
}] });
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Directive, inject } from '@angular/core';
|
|
2
|
+
import { CuiTooltipDirective } from './tooltip.directive';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "./tooltip.directive";
|
|
5
|
+
export class CuiTooltipOverflow {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.hint = inject(CuiTooltipDirective);
|
|
8
|
+
}
|
|
9
|
+
onMouseEnter({ scrollWidth, clientWidth, textContent }) {
|
|
10
|
+
this.hint.cuiTooltip = scrollWidth > clientWidth ? textContent : '';
|
|
11
|
+
}
|
|
12
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CuiTooltipOverflow, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
13
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: CuiTooltipOverflow, isStandalone: true, selector: "[cuiTooltipOverflow]", host: { listeners: { "mouseenter": "onMouseEnter($event.currentTarget)" } }, hostDirectives: [{ directive: i1.CuiTooltipDirective, inputs: ["cuiTooltipAppearance", "cuiTooltipAppearance"] }], ngImport: i0 }); }
|
|
14
|
+
}
|
|
15
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CuiTooltipOverflow, decorators: [{
|
|
16
|
+
type: Directive,
|
|
17
|
+
args: [{
|
|
18
|
+
standalone: true,
|
|
19
|
+
selector: '[cuiTooltipOverflow]',
|
|
20
|
+
hostDirectives: [
|
|
21
|
+
{
|
|
22
|
+
directive: CuiTooltipDirective,
|
|
23
|
+
inputs: ['cuiTooltipAppearance'],
|
|
24
|
+
},
|
|
25
|
+
],
|
|
26
|
+
host: {
|
|
27
|
+
'(mouseenter)': 'onMouseEnter($event.currentTarget)',
|
|
28
|
+
},
|
|
29
|
+
}]
|
|
30
|
+
}] });
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC1vdmVyZmxvdy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2RpcmVjdGl2ZXMvdG9vbHRpcC90b29sdGlwLW92ZXJmbG93LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVoRCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBZXhELE1BQU0sT0FBTyxrQkFBa0I7SUFiL0I7UUFjcUIsU0FBSSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0tBS3ZEO0lBSGEsWUFBWSxDQUFDLEVBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQVU7UUFDbkUsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsV0FBVyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDeEUsQ0FBQzsrR0FMUSxrQkFBa0I7bUdBQWxCLGtCQUFrQjs7NEZBQWxCLGtCQUFrQjtrQkFiOUIsU0FBUzttQkFBQztvQkFDUCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLHNCQUFzQjtvQkFDaEMsY0FBYyxFQUFFO3dCQUNaOzRCQUNJLFNBQVMsRUFBRSxtQkFBbUI7NEJBQzlCLE1BQU0sRUFBRSxDQUFDLHNCQUFzQixDQUFDO3lCQUNuQztxQkFDSjtvQkFDRCxJQUFJLEVBQUU7d0JBQ0YsY0FBYyxFQUFFLG9DQUFvQztxQkFDdkQ7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RpcmVjdGl2ZSwgaW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7Q3VpVG9vbHRpcERpcmVjdGl2ZX0gZnJvbSAnLi90b29sdGlwLmRpcmVjdGl2ZSc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBzZWxlY3RvcjogJ1tjdWlUb29sdGlwT3ZlcmZsb3ddJyxcclxuICAgIGhvc3REaXJlY3RpdmVzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBkaXJlY3RpdmU6IEN1aVRvb2x0aXBEaXJlY3RpdmUsXHJcbiAgICAgICAgICAgIGlucHV0czogWydjdWlUb29sdGlwQXBwZWFyYW5jZSddLFxyXG4gICAgICAgIH0sXHJcbiAgICBdLFxyXG4gICAgaG9zdDoge1xyXG4gICAgICAgICcobW91c2VlbnRlciknOiAnb25Nb3VzZUVudGVyKCRldmVudC5jdXJyZW50VGFyZ2V0KScsXHJcbiAgICB9LFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3VpVG9vbHRpcE92ZXJmbG93IHtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgaGludCA9IGluamVjdChDdWlUb29sdGlwRGlyZWN0aXZlKTtcclxuXHJcbiAgICBwcm90ZWN0ZWQgb25Nb3VzZUVudGVyKHtzY3JvbGxXaWR0aCwgY2xpZW50V2lkdGgsIHRleHRDb250ZW50fTogRWxlbWVudCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaGludC5jdWlUb29sdGlwID0gc2Nyb2xsV2lkdGggPiBjbGllbnRXaWR0aCA/IHRleHRDb250ZW50IDogJyc7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
import { Directive } from '@angular/core';
|
|
2
|
-
import { EMPTY_CLIENT_RECT, cuiPointToClientRect } from '@cuby-ui/cdk';
|
|
3
|
-
import { cuiAsDriver, cuiAsRectAccessor } from '../../classes';
|
|
4
|
-
import { CuiTooltipHover } from './tooltip-hover.directive';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export class CuiTooltipPointer extends CuiTooltipHover {
|
|
7
|
-
constructor() {
|
|
8
|
-
super(...arguments);
|
|
9
|
-
this.currentRect = EMPTY_CLIENT_RECT;
|
|
10
|
-
}
|
|
11
|
-
getClientRect() {
|
|
12
|
-
return this.currentRect;
|
|
13
|
-
}
|
|
14
|
-
onMove({ clientX, clientY }) {
|
|
15
|
-
this.currentRect = cuiPointToClientRect(clientX, clientY);
|
|
16
|
-
}
|
|
17
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CuiTooltipPointer, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
18
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: CuiTooltipPointer, isStandalone: true, selector: "[cuiTooltip][cuiTooltipPointer]", host: { listeners: { "mousemove.silent": "onMove($event)" } }, providers: [cuiAsRectAccessor(CuiTooltipPointer), cuiAsDriver(CuiTooltipPointer)], usesInheritance: true, ngImport: i0 }); }
|
|
19
|
-
}
|
|
20
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CuiTooltipPointer, decorators: [{
|
|
21
|
-
type: Directive,
|
|
22
|
-
args: [{
|
|
23
|
-
standalone: true,
|
|
24
|
-
selector: '[cuiTooltip][cuiTooltipPointer]',
|
|
25
|
-
providers: [cuiAsRectAccessor(CuiTooltipPointer), cuiAsDriver(CuiTooltipPointer)],
|
|
26
|
-
host: {
|
|
27
|
-
'(mousemove.silent)': 'onMove($event)',
|
|
28
|
-
},
|
|
29
|
-
}]
|
|
30
|
-
}] });
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Directive } from '@angular/core';
|
|
2
|
+
import { EMPTY_CLIENT_RECT, cuiPointToClientRect } from '@cuby-ui/cdk';
|
|
3
|
+
import { cuiAsDriver, cuiAsRectAccessor } from '../../classes';
|
|
4
|
+
import { CuiTooltipHover } from './tooltip-hover.directive';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class CuiTooltipPointer extends CuiTooltipHover {
|
|
7
|
+
constructor() {
|
|
8
|
+
super(...arguments);
|
|
9
|
+
this.currentRect = EMPTY_CLIENT_RECT;
|
|
10
|
+
}
|
|
11
|
+
getClientRect() {
|
|
12
|
+
return this.currentRect;
|
|
13
|
+
}
|
|
14
|
+
onMove({ clientX, clientY }) {
|
|
15
|
+
this.currentRect = cuiPointToClientRect(clientX, clientY);
|
|
16
|
+
}
|
|
17
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CuiTooltipPointer, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
18
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: CuiTooltipPointer, isStandalone: true, selector: "[cuiTooltip][cuiTooltipPointer]", host: { listeners: { "mousemove.silent": "onMove($event)" } }, providers: [cuiAsRectAccessor(CuiTooltipPointer), cuiAsDriver(CuiTooltipPointer)], usesInheritance: true, ngImport: i0 }); }
|
|
19
|
+
}
|
|
20
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CuiTooltipPointer, decorators: [{
|
|
21
|
+
type: Directive,
|
|
22
|
+
args: [{
|
|
23
|
+
standalone: true,
|
|
24
|
+
selector: '[cuiTooltip][cuiTooltipPointer]',
|
|
25
|
+
providers: [cuiAsRectAccessor(CuiTooltipPointer), cuiAsDriver(CuiTooltipPointer)],
|
|
26
|
+
host: {
|
|
27
|
+
'(mousemove.silent)': 'onMove($event)',
|
|
28
|
+
},
|
|
29
|
+
}]
|
|
30
|
+
}] });
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC1wb2ludGVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvZGlyZWN0aXZlcy90b29sdGlwL3Rvb2x0aXAtcG9pbnRlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN4QyxPQUFPLEVBQUMsaUJBQWlCLEVBQUUsb0JBQW9CLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFFckUsT0FBTyxFQUFDLFdBQVcsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUU3RCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7O0FBVTFELE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxlQUFlO0lBUnREOztRQVNZLGdCQUFXLEdBQUcsaUJBQWlCLENBQUM7S0FTM0M7SUFQVSxhQUFhO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUM1QixDQUFDO0lBRVMsTUFBTSxDQUFDLEVBQUMsT0FBTyxFQUFFLE9BQU8sRUFBYTtRQUMzQyxJQUFJLENBQUMsV0FBVyxHQUFHLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM5RCxDQUFDOytHQVRRLGlCQUFpQjttR0FBakIsaUJBQWlCLDZJQUxmLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLENBQUMsRUFBRSxXQUFXLENBQUMsaUJBQWlCLENBQUMsQ0FBQzs7NEZBS3hFLGlCQUFpQjtrQkFSN0IsU0FBUzttQkFBQztvQkFDUCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLGlDQUFpQztvQkFDM0MsU0FBUyxFQUFFLENBQUMsaUJBQWlCLG1CQUFtQixFQUFFLFdBQVcsbUJBQW1CLENBQUM7b0JBQ2pGLElBQUksRUFBRTt3QkFDRixvQkFBb0IsRUFBRSxnQkFBZ0I7cUJBQ3pDO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0VNUFRZX0NMSUVOVF9SRUNULCBjdWlQb2ludFRvQ2xpZW50UmVjdH0gZnJvbSAnQGN1YnktdWkvY2RrJztcclxuaW1wb3J0IHR5cGUge0N1aVJlY3RBY2Nlc3Nvcn0gZnJvbSAnLi4vLi4vY2xhc3Nlcyc7XHJcbmltcG9ydCB7Y3VpQXNEcml2ZXIsIGN1aUFzUmVjdEFjY2Vzc29yfSBmcm9tICcuLi8uLi9jbGFzc2VzJztcclxuXHJcbmltcG9ydCB7Q3VpVG9vbHRpcEhvdmVyfSBmcm9tICcuL3Rvb2x0aXAtaG92ZXIuZGlyZWN0aXZlJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIHNlbGVjdG9yOiAnW2N1aVRvb2x0aXBdW2N1aVRvb2x0aXBQb2ludGVyXScsXHJcbiAgICBwcm92aWRlcnM6IFtjdWlBc1JlY3RBY2Nlc3NvcihDdWlUb29sdGlwUG9pbnRlciksIGN1aUFzRHJpdmVyKEN1aVRvb2x0aXBQb2ludGVyKV0sXHJcbiAgICBob3N0OiB7XHJcbiAgICAgICAgJyhtb3VzZW1vdmUuc2lsZW50KSc6ICdvbk1vdmUoJGV2ZW50KScsXHJcbiAgICB9LFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3VpVG9vbHRpcFBvaW50ZXIgZXh0ZW5kcyBDdWlUb29sdGlwSG92ZXIgaW1wbGVtZW50cyBDdWlSZWN0QWNjZXNzb3Ige1xyXG4gICAgcHJpdmF0ZSBjdXJyZW50UmVjdCA9IEVNUFRZX0NMSUVOVF9SRUNUO1xyXG5cclxuICAgIHB1YmxpYyBnZXRDbGllbnRSZWN0KCk6IERPTVJlY3Qge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRSZWN0O1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBvbk1vdmUoe2NsaWVudFgsIGNsaWVudFl9OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50UmVjdCA9IGN1aVBvaW50VG9DbGllbnRSZWN0KGNsaWVudFgsIGNsaWVudFkpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,96 +1,96 @@
|
|
|
1
|
-
import { __decorate } from "tslib";
|
|
2
|
-
import { Directive, EventEmitter, inject, Input, Output } from '@angular/core';
|
|
3
|
-
import { EMPTY_CLIENT_RECT, CUI_IS_MOBILE, cuiPure } from '@cuby-ui/cdk';
|
|
4
|
-
import { cuiFallbackAccessor, CuiPositionAccessor, CuiRectAccessor, } from '../../classes';
|
|
5
|
-
import { CUI_VIEWPORT } from '../../tokens';
|
|
6
|
-
import { CuiTooltipDirective } from './tooltip.directive';
|
|
7
|
-
import { CUI_TOOLTIP_DIRECTIONS, CUI_TOOLTIP_OPTIONS } from './tooltip-options.directive';
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
const GAP = 8;
|
|
10
|
-
const ARROW_OFFSET = 24;
|
|
11
|
-
const TOP = 0;
|
|
12
|
-
const LEFT = 1;
|
|
13
|
-
export class CuiTooltipPosition extends CuiPositionAccessor {
|
|
14
|
-
constructor() {
|
|
15
|
-
super(...arguments);
|
|
16
|
-
this.offset = inject(CUI_IS_MOBILE) ? 16 : 5;
|
|
17
|
-
this.viewport = inject(CUI_VIEWPORT);
|
|
18
|
-
this.accessor = cuiFallbackAccessor('hint')(inject(CuiRectAccessor), inject(CuiTooltipDirective));
|
|
19
|
-
this.points = CUI_TOOLTIP_DIRECTIONS.reduce((acc, direction) => ({ ...acc, [direction]: [0, 0] }), {});
|
|
20
|
-
this.direction = inject(CUI_TOOLTIP_OPTIONS).direction;
|
|
21
|
-
this.directionChange = new EventEmitter();
|
|
22
|
-
this.type = 'hint';
|
|
23
|
-
}
|
|
24
|
-
emitDirection(direction) {
|
|
25
|
-
this.directionChange.emit(direction);
|
|
26
|
-
}
|
|
27
|
-
getPosition(rect, el) {
|
|
28
|
-
const width = el?.clientWidth ?? rect.width;
|
|
29
|
-
const height = el?.clientHeight ?? rect.height;
|
|
30
|
-
const hostRect = this.accessor.getClientRect() ?? EMPTY_CLIENT_RECT;
|
|
31
|
-
const leftCenter = hostRect.left + hostRect.width / 2;
|
|
32
|
-
const topCenter = hostRect.top + hostRect.height / 2;
|
|
33
|
-
this.points['top-left'][TOP] = hostRect.top - height - this.offset;
|
|
34
|
-
this.points['top-left'][LEFT] = leftCenter - width + ARROW_OFFSET;
|
|
35
|
-
this.points.top[TOP] = this.points['top-left'][TOP];
|
|
36
|
-
this.points.top[LEFT] = leftCenter - width / 2;
|
|
37
|
-
this.points['top-right'][TOP] = this.points['top-left'][TOP];
|
|
38
|
-
this.points['top-right'][LEFT] = leftCenter - ARROW_OFFSET;
|
|
39
|
-
this.points['bottom-left'][TOP] = hostRect.bottom + this.offset;
|
|
40
|
-
this.points['bottom-left'][LEFT] = this.points['top-left'][LEFT];
|
|
41
|
-
this.points.bottom[TOP] = this.points['bottom-left'][TOP];
|
|
42
|
-
this.points.bottom[LEFT] = this.points.top[LEFT];
|
|
43
|
-
this.points['bottom-right'][TOP] = this.points['bottom-left'][TOP];
|
|
44
|
-
this.points['bottom-right'][LEFT] = this.points['top-right'][LEFT];
|
|
45
|
-
this.points['left-top'][TOP] = topCenter - height + ARROW_OFFSET;
|
|
46
|
-
this.points['left-top'][LEFT] = hostRect.left - width - this.offset;
|
|
47
|
-
this.points.left[TOP] = topCenter - height / 2;
|
|
48
|
-
this.points.left[LEFT] = this.points['left-top'][LEFT];
|
|
49
|
-
this.points['left-bottom'][TOP] = topCenter - ARROW_OFFSET;
|
|
50
|
-
this.points['left-bottom'][LEFT] = this.points['left-top'][LEFT];
|
|
51
|
-
this.points['right-top'][TOP] = this.points['left-top'][TOP];
|
|
52
|
-
this.points['right-top'][LEFT] = hostRect.right + this.offset;
|
|
53
|
-
this.points.right[TOP] = this.points.left[TOP];
|
|
54
|
-
this.points.right[LEFT] = this.points['right-top'][LEFT];
|
|
55
|
-
this.points['right-bottom'][TOP] = this.points['left-bottom'][TOP];
|
|
56
|
-
this.points['right-bottom'][LEFT] = this.points['right-top'][LEFT];
|
|
57
|
-
const priorityDirections = Array.isArray(this.direction)
|
|
58
|
-
? this.direction
|
|
59
|
-
: [this.direction];
|
|
60
|
-
const sortedDirections = priorityDirections.concat(CUI_TOOLTIP_DIRECTIONS);
|
|
61
|
-
const direction = sortedDirections.find((direction) => this.checkPosition(this.points[direction], width, height));
|
|
62
|
-
this.emitDirection(direction || this.fallback);
|
|
63
|
-
return this.points[direction || this.fallback];
|
|
64
|
-
}
|
|
65
|
-
get fallback() {
|
|
66
|
-
return this.points.top[TOP] >
|
|
67
|
-
this.viewport.getClientRect().bottom - this.points.bottom[TOP]
|
|
68
|
-
? 'top'
|
|
69
|
-
: 'bottom';
|
|
70
|
-
}
|
|
71
|
-
checkPosition([top, left], width, height) {
|
|
72
|
-
const viewport = this.viewport.getClientRect();
|
|
73
|
-
return (top > GAP &&
|
|
74
|
-
left > GAP &&
|
|
75
|
-
top + height < viewport.bottom - GAP &&
|
|
76
|
-
left + width < viewport.right - GAP);
|
|
77
|
-
}
|
|
78
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CuiTooltipPosition, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
79
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: CuiTooltipPosition, isStandalone: true, inputs: { direction: ["cuiTooltipDirection", "direction"] }, outputs: { directionChange: "cuiTooltipDirectionChange" }, usesInheritance: true, ngImport: i0 }); }
|
|
80
|
-
}
|
|
81
|
-
__decorate([
|
|
82
|
-
cuiPure
|
|
83
|
-
], CuiTooltipPosition.prototype, "emitDirection", null);
|
|
84
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CuiTooltipPosition, decorators: [{
|
|
85
|
-
type: Directive,
|
|
86
|
-
args: [{
|
|
87
|
-
standalone: true,
|
|
88
|
-
}]
|
|
89
|
-
}], propDecorators: { direction: [{
|
|
90
|
-
type: Input,
|
|
91
|
-
args: ['cuiTooltipDirection']
|
|
92
|
-
}], directionChange: [{
|
|
93
|
-
type: Output,
|
|
94
|
-
args: ['cuiTooltipDirectionChange']
|
|
95
|
-
}], emitDirection: [] } });
|
|
96
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC1wb3NpdGlvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2RpcmVjdGl2ZXMvdG9vbHRpcC90b29sdGlwLXBvc2l0aW9uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFDLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDeEUsT0FBTyxFQUNILG1CQUFtQixFQUNuQixtQkFBbUIsRUFDbkIsZUFBZSxHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBRzFDLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRXhELE9BQU8sRUFBQyxzQkFBc0IsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLDZCQUE2QixDQUFDOztBQUV4RixNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFDZCxNQUFNLFlBQVksR0FBRyxFQUFFLENBQUM7QUFDeEIsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQ2QsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDO0FBS2YsTUFBTSxPQUFPLGtCQUFtQixTQUFRLG1CQUFtQjtJQUgzRDs7UUFJcUIsV0FBTSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEMsYUFBUSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNoQyxhQUFRLEdBQUcsbUJBQW1CLENBQWtCLE1BQU0sQ0FBQyxDQUNwRSxNQUFNLENBQU0sZUFBZSxDQUFDLEVBQzVCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUM5QixDQUFDO1FBRWUsV0FBTSxHQUNuQixzQkFBc0IsQ0FBQyxNQUFNLENBQ3pCLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUNuRCxFQUFtRCxDQUN0RCxDQUFDO1FBR0MsY0FBUyxHQUFtQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFHekUsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUUxRCxTQUFJLEdBQUcsTUFBTSxDQUFDO0tBeUVqQztJQXRFVSxhQUFhLENBQUMsU0FBOEI7UUFDL0MsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVNLFdBQVcsQ0FBQyxJQUFhLEVBQUUsRUFBZ0I7UUFDOUMsTUFBTSxLQUFLLEdBQUcsRUFBRSxFQUFFLFdBQVcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQzVDLE1BQU0sTUFBTSxHQUFHLEVBQUUsRUFBRSxZQUFZLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMvQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxJQUFJLGlCQUFpQixDQUFDO1FBQ3BFLE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDdEQsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsR0FBRyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUVyRCxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEdBQUcsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDbkUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxVQUFVLEdBQUcsS0FBSyxHQUFHLFlBQVksQ0FBQztRQUNsRSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsR0FBRyxZQUFZLENBQUM7UUFFM0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDaEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsTUFB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QUFDO0lBRUQsSUFBWSxRQUFRO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztZQUM5RCxDQUFDLENBQUMsS0FBSztZQUNQLENBQUMsQ0FBQyxRQUFRLENBQUM7SUFDbkIsQ0FBQztJQUVPLGFBQWEsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQVcsRUFBRSxLQUFhLEVBQUUsTUFBYztRQUN0RSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRS9DLE9BQU8sQ0FDSCxHQUFHLEdBQUcsR0FBRztZQUNULElBQUksR0FBRyxHQUFHO1lBQ1YsR0FBRyxHQUFHLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTSxHQUFHLEdBQUc7WUFDcEMsSUFBSSxHQUFHLEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FDdEMsQ0FBQztJQUNOLENBQUM7K0dBNUZRLGtCQUFrQjttR0FBbEIsa0JBQWtCOztBQXVCM0I7SUFEQyxPQUFPO3VEQUdQOzRGQXpCUSxrQkFBa0I7a0JBSDlCLFNBQVM7bUJBQUM7b0JBQ1AsVUFBVSxFQUFFLElBQUk7aUJBQ25COzhCQWdCVSxTQUFTO3NCQURmLEtBQUs7dUJBQUMscUJBQXFCO2dCQUlaLGVBQWU7c0JBRDlCLE1BQU07dUJBQUMsMkJBQTJCO2dCQU01QixhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbnB1dCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RU1QVFlfQ0xJRU5UX1JFQ1QsIENVSV9JU19NT0JJTEUsIGN1aVB1cmUgfSBmcm9tICdAY3VieS11aS9jZGsnO1xuaW1wb3J0IHtcbiAgICBjdWlGYWxsYmFja0FjY2Vzc29yLFxuICAgIEN1aVBvc2l0aW9uQWNjZXNzb3IsXG4gICAgQ3VpUmVjdEFjY2Vzc29yLFxufSBmcm9tICcuLi8uLi9jbGFzc2VzJztcbmltcG9ydCB7Q1VJX1ZJRVdQT1JUfSBmcm9tICcuLi8uLi90b2tlbnMnO1xuaW1wb3J0IHR5cGUge0N1aVBvaW50fSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbmltcG9ydCB7Q3VpVG9vbHRpcERpcmVjdGl2ZX0gZnJvbSAnLi90b29sdGlwLmRpcmVjdGl2ZSc7XG5pbXBvcnQgdHlwZSB7Q3VpVG9vbHRpcERpcmVjdGlvbiwgQ3VpVG9vbHRpcE9wdGlvbnN9IGZyb20gJy4vdG9vbHRpcC1vcHRpb25zLmRpcmVjdGl2ZSc7XG5pbXBvcnQge0NVSV9UT09MVElQX0RJUkVDVElPTlMsIENVSV9UT09MVElQX09QVElPTlN9IGZyb20gJy4vdG9vbHRpcC1vcHRpb25zLmRpcmVjdGl2ZSc7XG5cbmNvbnN0IEdBUCA9IDg7XG5jb25zdCBBUlJPV19PRkZTRVQgPSAyNDtcbmNvbnN0IFRPUCA9IDA7XG5jb25zdCBMRUZUID0gMTtcblxuQERpcmVjdGl2ZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgQ3VpVG9vbHRpcFBvc2l0aW9uIGV4dGVuZHMgQ3VpUG9zaXRpb25BY2Nlc3NvciB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBvZmZzZXQgPSBpbmplY3QoQ1VJX0lTX01PQklMRSkgPyAxNiA6IDU7XG4gICAgcHJpdmF0ZSByZWFkb25seSB2aWV3cG9ydCA9IGluamVjdChDVUlfVklFV1BPUlQpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYWNjZXNzb3IgPSBjdWlGYWxsYmFja0FjY2Vzc29yPEN1aVJlY3RBY2Nlc3Nvcj4oJ2hpbnQnKShcbiAgICAgICAgaW5qZWN0PGFueT4oQ3VpUmVjdEFjY2Vzc29yKSxcbiAgICAgICAgaW5qZWN0KEN1aVRvb2x0aXBEaXJlY3RpdmUpLFxuICAgICk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IHBvaW50czogUmVjb3JkPEN1aVRvb2x0aXBEaXJlY3Rpb24sIFtudW1iZXIsIG51bWJlcl0+ID1cbiAgICAgICAgQ1VJX1RPT0xUSVBfRElSRUNUSU9OUy5yZWR1Y2UoXG4gICAgICAgICAgICAoYWNjLCBkaXJlY3Rpb24pID0+ICh7Li4uYWNjLCBbZGlyZWN0aW9uXTogWzAsIDBdfSksXG4gICAgICAgICAgICB7fSBhcyBSZWNvcmQ8Q3VpVG9vbHRpcERpcmVjdGlvbiwgW251bWJlciwgbnVtYmVyXT4sXG4gICAgICAgICk7XG5cbiAgICBASW5wdXQoJ2N1aVRvb2x0aXBEaXJlY3Rpb24nKVxuICAgIHB1YmxpYyBkaXJlY3Rpb246IEN1aVRvb2x0aXBPcHRpb25zWydkaXJlY3Rpb24nXSA9IGluamVjdChDVUlfVE9PTFRJUF9PUFRJT05TKS5kaXJlY3Rpb247XG5cbiAgICBAT3V0cHV0KCdjdWlUb29sdGlwRGlyZWN0aW9uQ2hhbmdlJylcbiAgICBwdWJsaWMgcmVhZG9ubHkgZGlyZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxDdWlUb29sdGlwRGlyZWN0aW9uPigpO1xuXG4gICAgcHVibGljIHJlYWRvbmx5IHR5cGUgPSAnaGludCc7XG5cbiAgICBAY3VpUHVyZVxuICAgIHB1YmxpYyBlbWl0RGlyZWN0aW9uKGRpcmVjdGlvbjogQ3VpVG9vbHRpcERpcmVjdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLmRpcmVjdGlvbkNoYW5nZS5lbWl0KGRpcmVjdGlvbik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFBvc2l0aW9uKHJlY3Q6IERPTVJlY3QsIGVsPzogSFRNTEVsZW1lbnQpOiBDdWlQb2ludCB7XG4gICAgICAgIGNvbnN0IHdpZHRoID0gZWw/LmNsaWVudFdpZHRoID8/IHJlY3Qud2lkdGg7XG4gICAgICAgIGNvbnN0IGhlaWdodCA9IGVsPy5jbGllbnRIZWlnaHQgPz8gcmVjdC5oZWlnaHQ7XG4gICAgICAgIGNvbnN0IGhvc3RSZWN0ID0gdGhpcy5hY2Nlc3Nvci5nZXRDbGllbnRSZWN0KCkgPz8gRU1QVFlfQ0xJRU5UX1JFQ1Q7XG4gICAgICAgIGNvbnN0IGxlZnRDZW50ZXIgPSBob3N0UmVjdC5sZWZ0ICsgaG9zdFJlY3Qud2lkdGggLyAyO1xuICAgICAgICBjb25zdCB0b3BDZW50ZXIgPSBob3N0UmVjdC50b3AgKyBob3N0UmVjdC5oZWlnaHQgLyAyO1xuXG4gICAgICAgIHRoaXMucG9pbnRzWyd0b3AtbGVmdCddW1RPUF0gPSBob3N0UmVjdC50b3AgLSBoZWlnaHQgLSB0aGlzLm9mZnNldDtcbiAgICAgICAgdGhpcy5wb2ludHNbJ3RvcC1sZWZ0J11bTEVGVF0gPSBsZWZ0Q2VudGVyIC0gd2lkdGggKyBBUlJPV19PRkZTRVQ7XG4gICAgICAgIHRoaXMucG9pbnRzLnRvcFtUT1BdID0gdGhpcy5wb2ludHNbJ3RvcC1sZWZ0J11bVE9QXTtcbiAgICAgICAgdGhpcy5wb2ludHMudG9wW0xFRlRdID0gbGVmdENlbnRlciAtIHdpZHRoIC8gMjtcbiAgICAgICAgdGhpcy5wb2ludHNbJ3RvcC1yaWdodCddW1RPUF0gPSB0aGlzLnBvaW50c1sndG9wLWxlZnQnXVtUT1BdO1xuICAgICAgICB0aGlzLnBvaW50c1sndG9wLXJpZ2h0J11bTEVGVF0gPSBsZWZ0Q2VudGVyIC0gQVJST1dfT0ZGU0VUO1xuXG4gICAgICAgIHRoaXMucG9pbnRzWydib3R0b20tbGVmdCddW1RPUF0gPSBob3N0UmVjdC5ib3R0b20gKyB0aGlzLm9mZnNldDtcbiAgICAgICAgdGhpcy5wb2ludHNbJ2JvdHRvbS1sZWZ0J11bTEVGVF0gPSB0aGlzLnBvaW50c1sndG9wLWxlZnQnXVtMRUZUXTtcbiAgICAgICAgdGhpcy5wb2ludHMuYm90dG9tW1RPUF0gPSB0aGlzLnBvaW50c1snYm90dG9tLWxlZnQnXVtUT1BdO1xuICAgICAgICB0aGlzLnBvaW50cy5ib3R0b21bTEVGVF0gPSB0aGlzLnBvaW50cy50b3BbTEVGVF07XG4gICAgICAgIHRoaXMucG9pbnRzWydib3R0b20tcmlnaHQnXVtUT1BdID0gdGhpcy5wb2ludHNbJ2JvdHRvbS1sZWZ0J11bVE9QXTtcbiAgICAgICAgdGhpcy5wb2ludHNbJ2JvdHRvbS1yaWdodCddW0xFRlRdID0gdGhpcy5wb2ludHNbJ3RvcC1yaWdodCddW0xFRlRdO1xuXG4gICAgICAgIHRoaXMucG9pbnRzWydsZWZ0LXRvcCddW1RPUF0gPSB0b3BDZW50ZXIgLSBoZWlnaHQgKyBBUlJPV19PRkZTRVQ7XG4gICAgICAgIHRoaXMucG9pbnRzWydsZWZ0LXRvcCddW0xFRlRdID0gaG9zdFJlY3QubGVmdCAtIHdpZHRoIC0gdGhpcy5vZmZzZXQ7XG4gICAgICAgIHRoaXMucG9pbnRzLmxlZnRbVE9QXSA9IHRvcENlbnRlciAtIGhlaWdodCAvIDI7XG4gICAgICAgIHRoaXMucG9pbnRzLmxlZnRbTEVGVF0gPSB0aGlzLnBvaW50c1snbGVmdC10b3AnXVtMRUZUXTtcbiAgICAgICAgdGhpcy5wb2ludHNbJ2xlZnQtYm90dG9tJ11bVE9QXSA9IHRvcENlbnRlciAtIEFSUk9XX09GRlNFVDtcbiAgICAgICAgdGhpcy5wb2ludHNbJ2xlZnQtYm90dG9tJ11bTEVGVF0gPSB0aGlzLnBvaW50c1snbGVmdC10b3AnXVtMRUZUXTtcblxuICAgICAgICB0aGlzLnBvaW50c1sncmlnaHQtdG9wJ11bVE9QXSA9IHRoaXMucG9pbnRzWydsZWZ0LXRvcCddW1RPUF07XG4gICAgICAgIHRoaXMucG9pbnRzWydyaWdodC10b3AnXVtMRUZUXSA9IGhvc3RSZWN0LnJpZ2h0ICsgdGhpcy5vZmZzZXQ7XG4gICAgICAgIHRoaXMucG9pbnRzLnJpZ2h0W1RPUF0gPSB0aGlzLnBvaW50cy5sZWZ0W1RPUF07XG4gICAgICAgIHRoaXMucG9pbnRzLnJpZ2h0W0xFRlRdID0gdGhpcy5wb2ludHNbJ3JpZ2h0LXRvcCddW0xFRlRdO1xuICAgICAgICB0aGlzLnBvaW50c1sncmlnaHQtYm90dG9tJ11bVE9QXSA9IHRoaXMucG9pbnRzWydsZWZ0LWJvdHRvbSddW1RPUF07XG4gICAgICAgIHRoaXMucG9pbnRzWydyaWdodC1ib3R0b20nXVtMRUZUXSA9IHRoaXMucG9pbnRzWydyaWdodC10b3AnXVtMRUZUXTtcblxuICAgICAgICBjb25zdCBwcmlvcml0eURpcmVjdGlvbnMgPSBBcnJheS5pc0FycmF5KHRoaXMuZGlyZWN0aW9uKVxuICAgICAgICAgICAgPyB0aGlzLmRpcmVjdGlvblxuICAgICAgICAgICAgOiBbdGhpcy5kaXJlY3Rpb25dO1xuICAgICAgICBjb25zdCBzb3J0ZWREaXJlY3Rpb25zID0gcHJpb3JpdHlEaXJlY3Rpb25zLmNvbmNhdChDVUlfVE9PTFRJUF9ESVJFQ1RJT05TKTtcblxuICAgICAgICBjb25zdCBkaXJlY3Rpb24gPSBzb3J0ZWREaXJlY3Rpb25zLmZpbmQoKGRpcmVjdGlvbikgPT5cbiAgICAgICAgICAgIHRoaXMuY2hlY2tQb3NpdGlvbih0aGlzLnBvaW50c1tkaXJlY3Rpb25dLCB3aWR0aCwgaGVpZ2h0KSxcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmVtaXREaXJlY3Rpb24oZGlyZWN0aW9uIHx8IHRoaXMuZmFsbGJhY2spO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnBvaW50c1tkaXJlY3Rpb24gfHwgdGhpcy5mYWxsYmFja107XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgZmFsbGJhY2soKTogQ3VpVG9vbHRpcERpcmVjdGlvbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnBvaW50cy50b3BbVE9QXSA+XG4gICAgICAgICAgICB0aGlzLnZpZXdwb3J0LmdldENsaWVudFJlY3QoKS5ib3R0b20gLSB0aGlzLnBvaW50cy5ib3R0b21bVE9QXVxuICAgICAgICAgICAgPyAndG9wJ1xuICAgICAgICAgICAgOiAnYm90dG9tJztcbiAgICB9XG5cbiAgICBwcml2YXRlIGNoZWNrUG9zaXRpb24oW3RvcCwgbGVmdF06IEN1aVBvaW50LCB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCB2aWV3cG9ydCA9IHRoaXMudmlld3BvcnQuZ2V0Q2xpZW50UmVjdCgpO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0b3AgPiBHQVAgJiZcbiAgICAgICAgICAgIGxlZnQgPiBHQVAgJiZcbiAgICAgICAgICAgIHRvcCArIGhlaWdodCA8IHZpZXdwb3J0LmJvdHRvbSAtIEdBUCAmJlxuICAgICAgICAgICAgbGVmdCArIHdpZHRoIDwgdmlld3BvcnQucmlnaHQgLSBHQVBcbiAgICAgICAgKTtcbiAgICB9XG59XG4iXX0=
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { Directive, EventEmitter, inject, Input, Output } from '@angular/core';
|
|
3
|
+
import { EMPTY_CLIENT_RECT, CUI_IS_MOBILE, cuiPure } from '@cuby-ui/cdk';
|
|
4
|
+
import { cuiFallbackAccessor, CuiPositionAccessor, CuiRectAccessor, } from '../../classes';
|
|
5
|
+
import { CUI_VIEWPORT } from '../../tokens';
|
|
6
|
+
import { CuiTooltipDirective } from './tooltip.directive';
|
|
7
|
+
import { CUI_TOOLTIP_DIRECTIONS, CUI_TOOLTIP_OPTIONS } from './tooltip-options.directive';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
const GAP = 8;
|
|
10
|
+
const ARROW_OFFSET = 24;
|
|
11
|
+
const TOP = 0;
|
|
12
|
+
const LEFT = 1;
|
|
13
|
+
export class CuiTooltipPosition extends CuiPositionAccessor {
|
|
14
|
+
constructor() {
|
|
15
|
+
super(...arguments);
|
|
16
|
+
this.offset = inject(CUI_IS_MOBILE) ? 16 : 5;
|
|
17
|
+
this.viewport = inject(CUI_VIEWPORT);
|
|
18
|
+
this.accessor = cuiFallbackAccessor('hint')(inject(CuiRectAccessor), inject(CuiTooltipDirective));
|
|
19
|
+
this.points = CUI_TOOLTIP_DIRECTIONS.reduce((acc, direction) => ({ ...acc, [direction]: [0, 0] }), {});
|
|
20
|
+
this.direction = inject(CUI_TOOLTIP_OPTIONS).direction;
|
|
21
|
+
this.directionChange = new EventEmitter();
|
|
22
|
+
this.type = 'hint';
|
|
23
|
+
}
|
|
24
|
+
emitDirection(direction) {
|
|
25
|
+
this.directionChange.emit(direction);
|
|
26
|
+
}
|
|
27
|
+
getPosition(rect, el) {
|
|
28
|
+
const width = el?.clientWidth ?? rect.width;
|
|
29
|
+
const height = el?.clientHeight ?? rect.height;
|
|
30
|
+
const hostRect = this.accessor.getClientRect() ?? EMPTY_CLIENT_RECT;
|
|
31
|
+
const leftCenter = hostRect.left + hostRect.width / 2;
|
|
32
|
+
const topCenter = hostRect.top + hostRect.height / 2;
|
|
33
|
+
this.points['top-left'][TOP] = hostRect.top - height - this.offset;
|
|
34
|
+
this.points['top-left'][LEFT] = leftCenter - width + ARROW_OFFSET;
|
|
35
|
+
this.points.top[TOP] = this.points['top-left'][TOP];
|
|
36
|
+
this.points.top[LEFT] = leftCenter - width / 2;
|
|
37
|
+
this.points['top-right'][TOP] = this.points['top-left'][TOP];
|
|
38
|
+
this.points['top-right'][LEFT] = leftCenter - ARROW_OFFSET;
|
|
39
|
+
this.points['bottom-left'][TOP] = hostRect.bottom + this.offset;
|
|
40
|
+
this.points['bottom-left'][LEFT] = this.points['top-left'][LEFT];
|
|
41
|
+
this.points.bottom[TOP] = this.points['bottom-left'][TOP];
|
|
42
|
+
this.points.bottom[LEFT] = this.points.top[LEFT];
|
|
43
|
+
this.points['bottom-right'][TOP] = this.points['bottom-left'][TOP];
|
|
44
|
+
this.points['bottom-right'][LEFT] = this.points['top-right'][LEFT];
|
|
45
|
+
this.points['left-top'][TOP] = topCenter - height + ARROW_OFFSET;
|
|
46
|
+
this.points['left-top'][LEFT] = hostRect.left - width - this.offset;
|
|
47
|
+
this.points.left[TOP] = topCenter - height / 2;
|
|
48
|
+
this.points.left[LEFT] = this.points['left-top'][LEFT];
|
|
49
|
+
this.points['left-bottom'][TOP] = topCenter - ARROW_OFFSET;
|
|
50
|
+
this.points['left-bottom'][LEFT] = this.points['left-top'][LEFT];
|
|
51
|
+
this.points['right-top'][TOP] = this.points['left-top'][TOP];
|
|
52
|
+
this.points['right-top'][LEFT] = hostRect.right + this.offset;
|
|
53
|
+
this.points.right[TOP] = this.points.left[TOP];
|
|
54
|
+
this.points.right[LEFT] = this.points['right-top'][LEFT];
|
|
55
|
+
this.points['right-bottom'][TOP] = this.points['left-bottom'][TOP];
|
|
56
|
+
this.points['right-bottom'][LEFT] = this.points['right-top'][LEFT];
|
|
57
|
+
const priorityDirections = Array.isArray(this.direction)
|
|
58
|
+
? this.direction
|
|
59
|
+
: [this.direction];
|
|
60
|
+
const sortedDirections = priorityDirections.concat(CUI_TOOLTIP_DIRECTIONS);
|
|
61
|
+
const direction = sortedDirections.find((direction) => this.checkPosition(this.points[direction], width, height));
|
|
62
|
+
this.emitDirection(direction || this.fallback);
|
|
63
|
+
return this.points[direction || this.fallback];
|
|
64
|
+
}
|
|
65
|
+
get fallback() {
|
|
66
|
+
return this.points.top[TOP] >
|
|
67
|
+
this.viewport.getClientRect().bottom - this.points.bottom[TOP]
|
|
68
|
+
? 'top'
|
|
69
|
+
: 'bottom';
|
|
70
|
+
}
|
|
71
|
+
checkPosition([top, left], width, height) {
|
|
72
|
+
const viewport = this.viewport.getClientRect();
|
|
73
|
+
return (top > GAP &&
|
|
74
|
+
left > GAP &&
|
|
75
|
+
top + height < viewport.bottom - GAP &&
|
|
76
|
+
left + width < viewport.right - GAP);
|
|
77
|
+
}
|
|
78
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CuiTooltipPosition, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
79
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: CuiTooltipPosition, isStandalone: true, inputs: { direction: ["cuiTooltipDirection", "direction"] }, outputs: { directionChange: "cuiTooltipDirectionChange" }, usesInheritance: true, ngImport: i0 }); }
|
|
80
|
+
}
|
|
81
|
+
__decorate([
|
|
82
|
+
cuiPure
|
|
83
|
+
], CuiTooltipPosition.prototype, "emitDirection", null);
|
|
84
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CuiTooltipPosition, decorators: [{
|
|
85
|
+
type: Directive,
|
|
86
|
+
args: [{
|
|
87
|
+
standalone: true,
|
|
88
|
+
}]
|
|
89
|
+
}], propDecorators: { direction: [{
|
|
90
|
+
type: Input,
|
|
91
|
+
args: ['cuiTooltipDirection']
|
|
92
|
+
}], directionChange: [{
|
|
93
|
+
type: Output,
|
|
94
|
+
args: ['cuiTooltipDirectionChange']
|
|
95
|
+
}], emitDirection: [] } });
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC1wb3NpdGlvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2RpcmVjdGl2ZXMvdG9vbHRpcC90b29sdGlwLXBvc2l0aW9uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFDLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDeEUsT0FBTyxFQUNILG1CQUFtQixFQUNuQixtQkFBbUIsRUFDbkIsZUFBZSxHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBRzFDLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRXhELE9BQU8sRUFBQyxzQkFBc0IsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLDZCQUE2QixDQUFDOztBQUV4RixNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFDZCxNQUFNLFlBQVksR0FBRyxFQUFFLENBQUM7QUFDeEIsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQ2QsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDO0FBS2YsTUFBTSxPQUFPLGtCQUFtQixTQUFRLG1CQUFtQjtJQUgzRDs7UUFJcUIsV0FBTSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEMsYUFBUSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNoQyxhQUFRLEdBQUcsbUJBQW1CLENBQWtCLE1BQU0sQ0FBQyxDQUNwRSxNQUFNLENBQU0sZUFBZSxDQUFDLEVBQzVCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUM5QixDQUFDO1FBRWUsV0FBTSxHQUNuQixzQkFBc0IsQ0FBQyxNQUFNLENBQ3pCLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUNuRCxFQUFtRCxDQUN0RCxDQUFDO1FBR0MsY0FBUyxHQUFtQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFHekUsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUUxRCxTQUFJLEdBQUcsTUFBTSxDQUFDO0tBeUVqQztJQXRFVSxhQUFhLENBQUMsU0FBOEI7UUFDL0MsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVNLFdBQVcsQ0FBQyxJQUFhLEVBQUUsRUFBZ0I7UUFDOUMsTUFBTSxLQUFLLEdBQUcsRUFBRSxFQUFFLFdBQVcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQzVDLE1BQU0sTUFBTSxHQUFHLEVBQUUsRUFBRSxZQUFZLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMvQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxJQUFJLGlCQUFpQixDQUFDO1FBQ3BFLE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDdEQsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsR0FBRyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUVyRCxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEdBQUcsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDbkUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxVQUFVLEdBQUcsS0FBSyxHQUFHLFlBQVksQ0FBQztRQUNsRSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsR0FBRyxZQUFZLENBQUM7UUFFM0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDaEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsTUFB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QUFDO0lBRUQsSUFBWSxRQUFRO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztZQUM5RCxDQUFDLENBQUMsS0FBSztZQUNQLENBQUMsQ0FBQyxRQUFRLENBQUM7SUFDbkIsQ0FBQztJQUVPLGFBQWEsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQVcsRUFBRSxLQUFhLEVBQUUsTUFBYztRQUN0RSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRS9DLE9BQU8sQ0FDSCxHQUFHLEdBQUcsR0FBRztZQUNULElBQUksR0FBRyxHQUFHO1lBQ1YsR0FBRyxHQUFHLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTSxHQUFHLEdBQUc7WUFDcEMsSUFBSSxHQUFHLEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FDdEMsQ0FBQztJQUNOLENBQUM7K0dBNUZRLGtCQUFrQjttR0FBbEIsa0JBQWtCOztBQXVCM0I7SUFEQyxPQUFPO3VEQUdQOzRGQXpCUSxrQkFBa0I7a0JBSDlCLFNBQVM7bUJBQUM7b0JBQ1AsVUFBVSxFQUFFLElBQUk7aUJBQ25COzhCQWdCVSxTQUFTO3NCQURmLEtBQUs7dUJBQUMscUJBQXFCO2dCQUlaLGVBQWU7c0JBRDlCLE1BQU07dUJBQUMsMkJBQTJCO2dCQU01QixhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbnB1dCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtFTVBUWV9DTElFTlRfUkVDVCwgQ1VJX0lTX01PQklMRSwgY3VpUHVyZSB9IGZyb20gJ0BjdWJ5LXVpL2Nkayc7XHJcbmltcG9ydCB7XHJcbiAgICBjdWlGYWxsYmFja0FjY2Vzc29yLFxyXG4gICAgQ3VpUG9zaXRpb25BY2Nlc3NvcixcclxuICAgIEN1aVJlY3RBY2Nlc3NvcixcclxufSBmcm9tICcuLi8uLi9jbGFzc2VzJztcclxuaW1wb3J0IHtDVUlfVklFV1BPUlR9IGZyb20gJy4uLy4uL3Rva2Vucyc7XHJcbmltcG9ydCB0eXBlIHtDdWlQb2ludH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xyXG5cclxuaW1wb3J0IHtDdWlUb29sdGlwRGlyZWN0aXZlfSBmcm9tICcuL3Rvb2x0aXAuZGlyZWN0aXZlJztcclxuaW1wb3J0IHR5cGUge0N1aVRvb2x0aXBEaXJlY3Rpb24sIEN1aVRvb2x0aXBPcHRpb25zfSBmcm9tICcuL3Rvb2x0aXAtb3B0aW9ucy5kaXJlY3RpdmUnO1xyXG5pbXBvcnQge0NVSV9UT09MVElQX0RJUkVDVElPTlMsIENVSV9UT09MVElQX09QVElPTlN9IGZyb20gJy4vdG9vbHRpcC1vcHRpb25zLmRpcmVjdGl2ZSc7XHJcblxyXG5jb25zdCBHQVAgPSA4O1xyXG5jb25zdCBBUlJPV19PRkZTRVQgPSAyNDtcclxuY29uc3QgVE9QID0gMDtcclxuY29uc3QgTEVGVCA9IDE7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDdWlUb29sdGlwUG9zaXRpb24gZXh0ZW5kcyBDdWlQb3NpdGlvbkFjY2Vzc29yIHtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgb2Zmc2V0ID0gaW5qZWN0KENVSV9JU19NT0JJTEUpID8gMTYgOiA1O1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSB2aWV3cG9ydCA9IGluamVjdChDVUlfVklFV1BPUlQpO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBhY2Nlc3NvciA9IGN1aUZhbGxiYWNrQWNjZXNzb3I8Q3VpUmVjdEFjY2Vzc29yPignaGludCcpKFxyXG4gICAgICAgIGluamVjdDxhbnk+KEN1aVJlY3RBY2Nlc3NvciksXHJcbiAgICAgICAgaW5qZWN0KEN1aVRvb2x0aXBEaXJlY3RpdmUpLFxyXG4gICAgKTtcclxuXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBvaW50czogUmVjb3JkPEN1aVRvb2x0aXBEaXJlY3Rpb24sIFtudW1iZXIsIG51bWJlcl0+ID1cclxuICAgICAgICBDVUlfVE9PTFRJUF9ESVJFQ1RJT05TLnJlZHVjZShcclxuICAgICAgICAgICAgKGFjYywgZGlyZWN0aW9uKSA9PiAoey4uLmFjYywgW2RpcmVjdGlvbl06IFswLCAwXX0pLFxyXG4gICAgICAgICAgICB7fSBhcyBSZWNvcmQ8Q3VpVG9vbHRpcERpcmVjdGlvbiwgW251bWJlciwgbnVtYmVyXT4sXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICBASW5wdXQoJ2N1aVRvb2x0aXBEaXJlY3Rpb24nKVxyXG4gICAgcHVibGljIGRpcmVjdGlvbjogQ3VpVG9vbHRpcE9wdGlvbnNbJ2RpcmVjdGlvbiddID0gaW5qZWN0KENVSV9UT09MVElQX09QVElPTlMpLmRpcmVjdGlvbjtcclxuXHJcbiAgICBAT3V0cHV0KCdjdWlUb29sdGlwRGlyZWN0aW9uQ2hhbmdlJylcclxuICAgIHB1YmxpYyByZWFkb25seSBkaXJlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEN1aVRvb2x0aXBEaXJlY3Rpb24+KCk7XHJcblxyXG4gICAgcHVibGljIHJlYWRvbmx5IHR5cGUgPSAnaGludCc7XHJcblxyXG4gICAgQGN1aVB1cmVcclxuICAgIHB1YmxpYyBlbWl0RGlyZWN0aW9uKGRpcmVjdGlvbjogQ3VpVG9vbHRpcERpcmVjdGlvbik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZGlyZWN0aW9uQ2hhbmdlLmVtaXQoZGlyZWN0aW9uKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0UG9zaXRpb24ocmVjdDogRE9NUmVjdCwgZWw/OiBIVE1MRWxlbWVudCk6IEN1aVBvaW50IHtcclxuICAgICAgICBjb25zdCB3aWR0aCA9IGVsPy5jbGllbnRXaWR0aCA/PyByZWN0LndpZHRoO1xyXG4gICAgICAgIGNvbnN0IGhlaWdodCA9IGVsPy5jbGllbnRIZWlnaHQgPz8gcmVjdC5oZWlnaHQ7XHJcbiAgICAgICAgY29uc3QgaG9zdFJlY3QgPSB0aGlzLmFjY2Vzc29yLmdldENsaWVudFJlY3QoKSA/PyBFTVBUWV9DTElFTlRfUkVDVDtcclxuICAgICAgICBjb25zdCBsZWZ0Q2VudGVyID0gaG9zdFJlY3QubGVmdCArIGhvc3RSZWN0LndpZHRoIC8gMjtcclxuICAgICAgICBjb25zdCB0b3BDZW50ZXIgPSBob3N0UmVjdC50b3AgKyBob3N0UmVjdC5oZWlnaHQgLyAyO1xyXG5cclxuICAgICAgICB0aGlzLnBvaW50c1sndG9wLWxlZnQnXVtUT1BdID0gaG9zdFJlY3QudG9wIC0gaGVpZ2h0IC0gdGhpcy5vZmZzZXQ7XHJcbiAgICAgICAgdGhpcy5wb2ludHNbJ3RvcC1sZWZ0J11bTEVGVF0gPSBsZWZ0Q2VudGVyIC0gd2lkdGggKyBBUlJPV19PRkZTRVQ7XHJcbiAgICAgICAgdGhpcy5wb2ludHMudG9wW1RPUF0gPSB0aGlzLnBvaW50c1sndG9wLWxlZnQnXVtUT1BdO1xyXG4gICAgICAgIHRoaXMucG9pbnRzLnRvcFtMRUZUXSA9IGxlZnRDZW50ZXIgLSB3aWR0aCAvIDI7XHJcbiAgICAgICAgdGhpcy5wb2ludHNbJ3RvcC1yaWdodCddW1RPUF0gPSB0aGlzLnBvaW50c1sndG9wLWxlZnQnXVtUT1BdO1xyXG4gICAgICAgIHRoaXMucG9pbnRzWyd0b3AtcmlnaHQnXVtMRUZUXSA9IGxlZnRDZW50ZXIgLSBBUlJPV19PRkZTRVQ7XHJcblxyXG4gICAgICAgIHRoaXMucG9pbnRzWydib3R0b20tbGVmdCddW1RPUF0gPSBob3N0UmVjdC5ib3R0b20gKyB0aGlzLm9mZnNldDtcclxuICAgICAgICB0aGlzLnBvaW50c1snYm90dG9tLWxlZnQnXVtMRUZUXSA9IHRoaXMucG9pbnRzWyd0b3AtbGVmdCddW0xFRlRdO1xyXG4gICAgICAgIHRoaXMucG9pbnRzLmJvdHRvbVtUT1BdID0gdGhpcy5wb2ludHNbJ2JvdHRvbS1sZWZ0J11bVE9QXTtcclxuICAgICAgICB0aGlzLnBvaW50cy5ib3R0b21bTEVGVF0gPSB0aGlzLnBvaW50cy50b3BbTEVGVF07XHJcbiAgICAgICAgdGhpcy5wb2ludHNbJ2JvdHRvbS1yaWdodCddW1RPUF0gPSB0aGlzLnBvaW50c1snYm90dG9tLWxlZnQnXVtUT1BdO1xyXG4gICAgICAgIHRoaXMucG9pbnRzWydib3R0b20tcmlnaHQnXVtMRUZUXSA9IHRoaXMucG9pbnRzWyd0b3AtcmlnaHQnXVtMRUZUXTtcclxuXHJcbiAgICAgICAgdGhpcy5wb2ludHNbJ2xlZnQtdG9wJ11bVE9QXSA9IHRvcENlbnRlciAtIGhlaWdodCArIEFSUk9XX09GRlNFVDtcclxuICAgICAgICB0aGlzLnBvaW50c1snbGVmdC10b3AnXVtMRUZUXSA9IGhvc3RSZWN0LmxlZnQgLSB3aWR0aCAtIHRoaXMub2Zmc2V0O1xyXG4gICAgICAgIHRoaXMucG9pbnRzLmxlZnRbVE9QXSA9IHRvcENlbnRlciAtIGhlaWdodCAvIDI7XHJcbiAgICAgICAgdGhpcy5wb2ludHMubGVmdFtMRUZUXSA9IHRoaXMucG9pbnRzWydsZWZ0LXRvcCddW0xFRlRdO1xyXG4gICAgICAgIHRoaXMucG9pbnRzWydsZWZ0LWJvdHRvbSddW1RPUF0gPSB0b3BDZW50ZXIgLSBBUlJPV19PRkZTRVQ7XHJcbiAgICAgICAgdGhpcy5wb2ludHNbJ2xlZnQtYm90dG9tJ11bTEVGVF0gPSB0aGlzLnBvaW50c1snbGVmdC10b3AnXVtMRUZUXTtcclxuXHJcbiAgICAgICAgdGhpcy5wb2ludHNbJ3JpZ2h0LXRvcCddW1RPUF0gPSB0aGlzLnBvaW50c1snbGVmdC10b3AnXVtUT1BdO1xyXG4gICAgICAgIHRoaXMucG9pbnRzWydyaWdodC10b3AnXVtMRUZUXSA9IGhvc3RSZWN0LnJpZ2h0ICsgdGhpcy5vZmZzZXQ7XHJcbiAgICAgICAgdGhpcy5wb2ludHMucmlnaHRbVE9QXSA9IHRoaXMucG9pbnRzLmxlZnRbVE9QXTtcclxuICAgICAgICB0aGlzLnBvaW50cy5yaWdodFtMRUZUXSA9IHRoaXMucG9pbnRzWydyaWdodC10b3AnXVtMRUZUXTtcclxuICAgICAgICB0aGlzLnBvaW50c1sncmlnaHQtYm90dG9tJ11bVE9QXSA9IHRoaXMucG9pbnRzWydsZWZ0LWJvdHRvbSddW1RPUF07XHJcbiAgICAgICAgdGhpcy5wb2ludHNbJ3JpZ2h0LWJvdHRvbSddW0xFRlRdID0gdGhpcy5wb2ludHNbJ3JpZ2h0LXRvcCddW0xFRlRdO1xyXG5cclxuICAgICAgICBjb25zdCBwcmlvcml0eURpcmVjdGlvbnMgPSBBcnJheS5pc0FycmF5KHRoaXMuZGlyZWN0aW9uKVxyXG4gICAgICAgICAgICA/IHRoaXMuZGlyZWN0aW9uXHJcbiAgICAgICAgICAgIDogW3RoaXMuZGlyZWN0aW9uXTtcclxuICAgICAgICBjb25zdCBzb3J0ZWREaXJlY3Rpb25zID0gcHJpb3JpdHlEaXJlY3Rpb25zLmNvbmNhdChDVUlfVE9PTFRJUF9ESVJFQ1RJT05TKTtcclxuXHJcbiAgICAgICAgY29uc3QgZGlyZWN0aW9uID0gc29ydGVkRGlyZWN0aW9ucy5maW5kKChkaXJlY3Rpb24pID0+XHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tQb3NpdGlvbih0aGlzLnBvaW50c1tkaXJlY3Rpb25dLCB3aWR0aCwgaGVpZ2h0KSxcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLmVtaXREaXJlY3Rpb24oZGlyZWN0aW9uIHx8IHRoaXMuZmFsbGJhY2spO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5wb2ludHNbZGlyZWN0aW9uIHx8IHRoaXMuZmFsbGJhY2tdO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0IGZhbGxiYWNrKCk6IEN1aVRvb2x0aXBEaXJlY3Rpb24ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnBvaW50cy50b3BbVE9QXSA+XHJcbiAgICAgICAgICAgIHRoaXMudmlld3BvcnQuZ2V0Q2xpZW50UmVjdCgpLmJvdHRvbSAtIHRoaXMucG9pbnRzLmJvdHRvbVtUT1BdXHJcbiAgICAgICAgICAgID8gJ3RvcCdcclxuICAgICAgICAgICAgOiAnYm90dG9tJztcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNoZWNrUG9zaXRpb24oW3RvcCwgbGVmdF06IEN1aVBvaW50LCB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IHZpZXdwb3J0ID0gdGhpcy52aWV3cG9ydC5nZXRDbGllbnRSZWN0KCk7XHJcblxyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIHRvcCA+IEdBUCAmJlxyXG4gICAgICAgICAgICBsZWZ0ID4gR0FQICYmXHJcbiAgICAgICAgICAgIHRvcCArIGhlaWdodCA8IHZpZXdwb3J0LmJvdHRvbSAtIEdBUCAmJlxyXG4gICAgICAgICAgICBsZWZ0ICsgd2lkdGggPCB2aWV3cG9ydC5yaWdodCAtIEdBUFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbn1cclxuIl19
|