@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,40 +1,40 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, Directive, inject, TemplateRef, } from '@angular/core';
|
|
2
|
-
import { cuiParentAnimation } from '../../animations';
|
|
3
|
-
import { injectContext, PolymorpheusComponent, PolymorpheusOutlet, } from '@taiga-ui/polymorpheus';
|
|
4
|
-
import { CuiTooltipDirective } from './tooltip.directive';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export class CuiTooltipUnstyledComponent {
|
|
7
|
-
constructor() {
|
|
8
|
-
this.context = injectContext();
|
|
9
|
-
}
|
|
10
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CuiTooltipUnstyledComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
11
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CuiTooltipUnstyledComponent, isStandalone: true, selector: "ng-component", host: { properties: { "@cuiParentAnimation": "" } }, ngImport: i0, template: '<ng-container *polymorpheusOutlet="context.$implicit.content()" />', isInline: true, dependencies: [{ kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }], animations: [cuiParentAnimation], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
12
|
-
}
|
|
13
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CuiTooltipUnstyledComponent, decorators: [{
|
|
14
|
-
type: Component,
|
|
15
|
-
args: [{
|
|
16
|
-
standalone: true,
|
|
17
|
-
imports: [PolymorpheusOutlet],
|
|
18
|
-
template: '<ng-container *polymorpheusOutlet="context.$implicit.content()" />',
|
|
19
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
20
|
-
animations: [cuiParentAnimation],
|
|
21
|
-
host: { '[@cuiParentAnimation]': '' },
|
|
22
|
-
}]
|
|
23
|
-
}] });
|
|
24
|
-
export class CuiTooltipUnstyled {
|
|
25
|
-
constructor() {
|
|
26
|
-
const hint = inject((CuiTooltipDirective));
|
|
27
|
-
hint.component = new PolymorpheusComponent(CuiTooltipUnstyledComponent);
|
|
28
|
-
hint.content.set(inject((TemplateRef)));
|
|
29
|
-
}
|
|
30
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CuiTooltipUnstyled, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
31
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: CuiTooltipUnstyled, isStandalone: true, selector: "ng-template[cuiTooltip]", ngImport: i0 }); }
|
|
32
|
-
}
|
|
33
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CuiTooltipUnstyled, decorators: [{
|
|
34
|
-
type: Directive,
|
|
35
|
-
args: [{
|
|
36
|
-
standalone: true,
|
|
37
|
-
selector: 'ng-template[cuiTooltip]',
|
|
38
|
-
}]
|
|
39
|
-
}], ctorParameters: function () { return []; } });
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Directive, inject, TemplateRef, } from '@angular/core';
|
|
2
|
+
import { cuiParentAnimation } from '../../animations';
|
|
3
|
+
import { injectContext, PolymorpheusComponent, PolymorpheusOutlet, } from '@taiga-ui/polymorpheus';
|
|
4
|
+
import { CuiTooltipDirective } from './tooltip.directive';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class CuiTooltipUnstyledComponent {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.context = injectContext();
|
|
9
|
+
}
|
|
10
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CuiTooltipUnstyledComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
11
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CuiTooltipUnstyledComponent, isStandalone: true, selector: "ng-component", host: { properties: { "@cuiParentAnimation": "" } }, ngImport: i0, template: '<ng-container *polymorpheusOutlet="context.$implicit.content()" />', isInline: true, dependencies: [{ kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }], animations: [cuiParentAnimation], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
12
|
+
}
|
|
13
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CuiTooltipUnstyledComponent, decorators: [{
|
|
14
|
+
type: Component,
|
|
15
|
+
args: [{
|
|
16
|
+
standalone: true,
|
|
17
|
+
imports: [PolymorpheusOutlet],
|
|
18
|
+
template: '<ng-container *polymorpheusOutlet="context.$implicit.content()" />',
|
|
19
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
20
|
+
animations: [cuiParentAnimation],
|
|
21
|
+
host: { '[@cuiParentAnimation]': '' },
|
|
22
|
+
}]
|
|
23
|
+
}] });
|
|
24
|
+
export class CuiTooltipUnstyled {
|
|
25
|
+
constructor() {
|
|
26
|
+
const hint = inject((CuiTooltipDirective));
|
|
27
|
+
hint.component = new PolymorpheusComponent(CuiTooltipUnstyledComponent);
|
|
28
|
+
hint.content.set(inject((TemplateRef)));
|
|
29
|
+
}
|
|
30
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CuiTooltipUnstyled, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
31
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: CuiTooltipUnstyled, isStandalone: true, selector: "ng-template[cuiTooltip]", ngImport: i0 }); }
|
|
32
|
+
}
|
|
33
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CuiTooltipUnstyled, decorators: [{
|
|
34
|
+
type: Directive,
|
|
35
|
+
args: [{
|
|
36
|
+
standalone: true,
|
|
37
|
+
selector: 'ng-template[cuiTooltip]',
|
|
38
|
+
}]
|
|
39
|
+
}], ctorParameters: function () { return []; } });
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC11bnN0eWxlZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2RpcmVjdGl2ZXMvdG9vbHRpcC90b29sdGlwLXVuc3R5bGVkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxTQUFTLEVBQ1QsTUFBTSxFQUNOLFdBQVcsR0FDZCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUdwRCxPQUFPLEVBQ0gsYUFBYSxFQUNiLHFCQUFxQixFQUNyQixrQkFBa0IsR0FDckIsTUFBTSx3QkFBd0IsQ0FBQztBQUVoQyxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQzs7QUFVeEQsTUFBTSxPQUFPLDJCQUEyQjtJQVJ4QztRQVN1QixZQUFPLEdBQ3RCLGFBQWEsRUFFVixDQUFDO0tBQ1g7K0dBTFksMkJBQTJCO21HQUEzQiwyQkFBMkIsNkhBTDFCLG9FQUFvRSw0REFEcEUsa0JBQWtCLGdIQUdoQixDQUFDLGtCQUFrQixDQUFDOzs0RkFHdkIsMkJBQTJCO2tCQVJ2QyxTQUFTO21CQUFDO29CQUNQLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztvQkFDN0IsUUFBUSxFQUFFLG9FQUFvRTtvQkFDOUUsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLFVBQVUsRUFBRSxDQUFDLGtCQUFrQixDQUFDO29CQUNoQyxJQUFJLEVBQUUsRUFBQyx1QkFBdUIsRUFBRSxFQUFFLEVBQUM7aUJBQ3RDOztBQVlELE1BQU0sT0FBTyxrQkFBa0I7SUFDM0I7UUFDSSxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsQ0FBQSxtQkFBc0IsQ0FBQSxDQUFDLENBQUM7UUFFNUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLHFCQUFxQixDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFDeEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUEsV0FBYyxDQUFBLENBQUMsQ0FBQyxDQUFDO0lBQzdDLENBQUM7K0dBTlEsa0JBQWtCO21HQUFsQixrQkFBa0I7OzRGQUFsQixrQkFBa0I7a0JBSjlCLFNBQVM7bUJBQUM7b0JBQ1AsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSx5QkFBeUI7aUJBQ3RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1dyaXRhYmxlU2lnbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgRGlyZWN0aXZlLFxyXG4gICAgaW5qZWN0LFxyXG4gICAgVGVtcGxhdGVSZWYsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB0eXBlIHtDdWlDb250ZXh0fSBmcm9tICdAY3VieS11aS9jZGsnO1xyXG5pbXBvcnQge2N1aVBhcmVudEFuaW1hdGlvbn0gZnJvbSAnLi4vLi4vYW5pbWF0aW9ucyc7XHJcbmltcG9ydCB0eXBlIHtDdWlQb3J0YWxJdGVtfSBmcm9tICcuLi8uLi90eXBlcyc7XHJcbmltcG9ydCB0eXBlIHtQb2x5bW9ycGhldXNDb250ZW50fSBmcm9tICdAdGFpZ2EtdWkvcG9seW1vcnBoZXVzJztcclxuaW1wb3J0IHtcclxuICAgIGluamVjdENvbnRleHQsXHJcbiAgICBQb2x5bW9ycGhldXNDb21wb25lbnQsXHJcbiAgICBQb2x5bW9ycGhldXNPdXRsZXQsXHJcbn0gZnJvbSAnQHRhaWdhLXVpL3BvbHltb3JwaGV1cyc7XHJcblxyXG5pbXBvcnQge0N1aVRvb2x0aXBEaXJlY3RpdmV9IGZyb20gJy4vdG9vbHRpcC5kaXJlY3RpdmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgaW1wb3J0czogW1BvbHltb3JwaGV1c091dGxldF0sXHJcbiAgICB0ZW1wbGF0ZTogJzxuZy1jb250YWluZXIgKnBvbHltb3JwaGV1c091dGxldD1cImNvbnRleHQuJGltcGxpY2l0LmNvbnRlbnQoKVwiIC8+JyxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgYW5pbWF0aW9uczogW2N1aVBhcmVudEFuaW1hdGlvbl0sXHJcbiAgICBob3N0OiB7J1tAY3VpUGFyZW50QW5pbWF0aW9uXSc6ICcnfSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEN1aVRvb2x0aXBVbnN0eWxlZENvbXBvbmVudCB7XHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29udGV4dCA9XHJcbiAgICAgICAgaW5qZWN0Q29udGV4dDxcclxuICAgICAgICAgIEN1aUNvbnRleHQ8Q3VpUG9ydGFsSXRlbSAmIHtjb250ZW50OiBXcml0YWJsZVNpZ25hbDxQb2x5bW9ycGhldXNDb250ZW50Pn0+XHJcbiAgICAgICAgPigpO1xyXG59XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBzZWxlY3RvcjogJ25nLXRlbXBsYXRlW2N1aVRvb2x0aXBdJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEN1aVRvb2x0aXBVbnN0eWxlZDxDPiB7XHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICBjb25zdCBoaW50ID0gaW5qZWN0KEN1aVRvb2x0aXBEaXJlY3RpdmU8Qz4pO1xyXG5cclxuICAgICAgICBoaW50LmNvbXBvbmVudCA9IG5ldyBQb2x5bW9ycGhldXNDb21wb25lbnQoQ3VpVG9vbHRpcFVuc3R5bGVkQ29tcG9uZW50KTtcclxuICAgICAgICBoaW50LmNvbnRlbnQuc2V0KGluamVjdChUZW1wbGF0ZVJlZjxDPikpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,110 +1,110 @@
|
|
|
1
|
-
import { __decorate } from "tslib";
|
|
2
|
-
import { ChangeDetectionStrategy, Component, forwardRef, inject, signal } from '@angular/core';
|
|
3
|
-
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
4
|
-
import { EMPTY_CLIENT_RECT, CuiHoveredService } from '@cuby-ui/cdk';
|
|
5
|
-
import { cuiFadeIn, cuiScaleIn } from '../../animations';
|
|
6
|
-
import { cuiPositionAccessorFor, CuiRectAccessor, cuiRectAccessorFor, } from '../../classes';
|
|
7
|
-
import { CuiPositionService, CuiVisualViewportService } from '../../services';
|
|
8
|
-
import { CUI_ANIMATIONS_SPEED, CUI_VIEWPORT } from '../../tokens';
|
|
9
|
-
import { cuiIsObscured, cuiToAnimationOptions } from '../../utils';
|
|
10
|
-
import { injectContext, PolymorpheusOutlet } from '@taiga-ui/polymorpheus';
|
|
11
|
-
import { map, takeWhile } from 'rxjs';
|
|
12
|
-
import { CuiTooltipDirective } from './tooltip.directive';
|
|
13
|
-
import { CuiTooltipHover } from './tooltip-hover.directive';
|
|
14
|
-
import { CuiTooltipPointer } from './tooltip-pointer.directive';
|
|
15
|
-
import { CuiTooltipPosition } from './tooltip-position.directive';
|
|
16
|
-
import { CuiTooltipUnstyledComponent } from './tooltip-unstyled.component';
|
|
17
|
-
import { CUI_IS_MOBILE, cuiClamp, cuiInjectElement, cuiPure, cuiPx } from '@cuby-ui/cdk';
|
|
18
|
-
import * as i0 from "@angular/core";
|
|
19
|
-
const GAP = 8;
|
|
20
|
-
export const CUI_TOOLTIP_PROVIDERS = [
|
|
21
|
-
CuiPositionService,
|
|
22
|
-
CuiHoveredService,
|
|
23
|
-
cuiPositionAccessorFor('hint', CuiTooltipPosition),
|
|
24
|
-
cuiRectAccessorFor('hint', forwardRef(() => CuiTooltipDirective)),
|
|
25
|
-
];
|
|
26
|
-
export class CuiTooltipComponent {
|
|
27
|
-
constructor() {
|
|
28
|
-
this.el = cuiInjectElement();
|
|
29
|
-
this.hover = inject(CuiTooltipHover);
|
|
30
|
-
this.vvs = inject(CuiVisualViewportService);
|
|
31
|
-
this.viewport = inject(CUI_VIEWPORT);
|
|
32
|
-
this.desktop = { value: '', params: { end: 1, start: 1 } };
|
|
33
|
-
this.options = cuiToAnimationOptions(inject(CUI_ANIMATIONS_SPEED), 'cubic-bezier(0.35, 1.3, 0.25, 1)');
|
|
34
|
-
this.pointer = inject(CuiTooltipPointer, { optional: true });
|
|
35
|
-
this.accessor = inject(CuiRectAccessor);
|
|
36
|
-
this.hint = injectContext().$implicit;
|
|
37
|
-
this.isMobile = inject(CUI_IS_MOBILE);
|
|
38
|
-
this.content = this.hint.component.component === CuiTooltipUnstyledComponent
|
|
39
|
-
? signal('')
|
|
40
|
-
: this.hint.content;
|
|
41
|
-
this.appearance = this.hint.appearance ||
|
|
42
|
-
this.hint.el.closest('[cuiTheme]')?.getAttribute('cuiTheme');
|
|
43
|
-
inject(CuiPositionService)
|
|
44
|
-
.pipe(takeWhile(() => this.hint.el.isConnected), map((point) => this.vvs.correct(point)), takeUntilDestroyed())
|
|
45
|
-
.subscribe({
|
|
46
|
-
next: ([top, left]) => this.update(top, left),
|
|
47
|
-
complete: () => this.hover.toggle(false),
|
|
48
|
-
});
|
|
49
|
-
inject(CuiHoveredService)
|
|
50
|
-
.pipe(takeUntilDestroyed())
|
|
51
|
-
.subscribe((hover) => this.hover.toggle(hover));
|
|
52
|
-
}
|
|
53
|
-
onClick(target) {
|
|
54
|
-
if ((!target.closest('cui-hint') && !this.hint.el.contains(target)) ||
|
|
55
|
-
cuiIsObscured(this.hint.el)) {
|
|
56
|
-
this.hover.toggle(false);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
apply(top, left, beakTop, beakLeft) {
|
|
60
|
-
this.el.style.top = top;
|
|
61
|
-
this.el.style.left = left;
|
|
62
|
-
this.el.style.setProperty('--top', `${beakTop}%`);
|
|
63
|
-
this.el.style.setProperty('--left', `${beakLeft}%`);
|
|
64
|
-
this.el.style.setProperty('--rotate', !beakLeft || Math.ceil(beakLeft) === 100 ? '90deg' : '0deg');
|
|
65
|
-
}
|
|
66
|
-
update(top, left) {
|
|
67
|
-
const { clientHeight, clientWidth } = this.el;
|
|
68
|
-
const rect = this.accessor.getClientRect();
|
|
69
|
-
const viewport = this.viewport.getClientRect();
|
|
70
|
-
if (rect === EMPTY_CLIENT_RECT || !clientHeight || !clientWidth) {
|
|
71
|
-
return;
|
|
72
|
-
}
|
|
73
|
-
const safeLeft = cuiClamp(left, GAP, viewport.width - clientWidth - GAP);
|
|
74
|
-
const [beakTop, beakLeft] = this.vvs.correct([
|
|
75
|
-
rect.top + rect.height / 2 - top,
|
|
76
|
-
rect.left + rect.width / 2 - safeLeft,
|
|
77
|
-
]);
|
|
78
|
-
this.apply(cuiPx(Math.round(top)), cuiPx(Math.round(safeLeft)), Math.round((cuiClamp(beakTop, 0, clientHeight) / clientHeight) * 100), Math.round((cuiClamp(beakLeft, 0, clientWidth) / clientWidth) * 100));
|
|
79
|
-
}
|
|
80
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CuiTooltipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
81
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CuiTooltipComponent, isStandalone: true, selector: "cui-tooltip", host: { listeners: { "document:click": "onClick($event.target)" }, properties: { "@cuiScaleIn": "isMobile ? options : desktop", "@cuiFadeIn": "options", "class._untouchable": "pointer", "class._mobile": "isMobile", "attr.data-appearance": "appearance", "attr.cuiTheme": "appearance" } }, providers: CUI_TOOLTIP_PROVIDERS, ngImport: i0, template: `
|
|
82
|
-
<ng-content />
|
|
83
|
-
<span
|
|
84
|
-
*polymorpheusOutlet="content() as text; context: hint.context"
|
|
85
|
-
[innerHTML]="text"
|
|
86
|
-
></span>
|
|
87
|
-
`, isInline: true, styles: [":host{padding:4px 8px;font-weight:400;font-size:14px;line-height:20px;position:absolute;max-inline-size:
|
|
88
|
-
}
|
|
89
|
-
__decorate([
|
|
90
|
-
cuiPure
|
|
91
|
-
], CuiTooltipComponent.prototype, "apply", null);
|
|
92
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CuiTooltipComponent, decorators: [{
|
|
93
|
-
type: Component,
|
|
94
|
-
args: [{ standalone: true, selector: 'cui-tooltip', imports: [PolymorpheusOutlet], template: `
|
|
95
|
-
<ng-content />
|
|
96
|
-
<span
|
|
97
|
-
*polymorpheusOutlet="content() as text; context: hint.context"
|
|
98
|
-
[innerHTML]="text"
|
|
99
|
-
></span>
|
|
100
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, providers: CUI_TOOLTIP_PROVIDERS, animations: [cuiFadeIn, cuiScaleIn], host: {
|
|
101
|
-
'[@cuiScaleIn]': 'isMobile ? options : desktop',
|
|
102
|
-
'[@cuiFadeIn]': 'options',
|
|
103
|
-
'[class._untouchable]': 'pointer',
|
|
104
|
-
'[class._mobile]': 'isMobile',
|
|
105
|
-
'[attr.data-appearance]': 'appearance',
|
|
106
|
-
'[attr.cuiTheme]': 'appearance',
|
|
107
|
-
'(document:click)': 'onClick($event.target)',
|
|
108
|
-
}, styles: [":host{padding:4px 8px;font-weight:400;font-size:14px;line-height:20px;position:absolute;max-inline-size:
|
|
109
|
-
}], ctorParameters: function () { return []; }, propDecorators: { apply: [] } });
|
|
110
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2RpcmVjdGl2ZXMvdG9vbHRpcC90b29sdGlwLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsaUJBQWlCLEVBQWEsTUFBTSxjQUFjLENBQUM7QUFDN0UsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUN2RCxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLGVBQWUsRUFDZixrQkFBa0IsR0FDbkIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGtCQUFrQixFQUFFLHdCQUF3QixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUUsT0FBTyxFQUFDLG9CQUFvQixFQUFFLFlBQVksRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUNoRSxPQUFPLEVBQUMsYUFBYSxFQUFFLHFCQUFxQixFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQ2pFLE9BQU8sRUFBQyxhQUFhLEVBQUUsa0JBQWtCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RSxPQUFPLEVBQUMsR0FBRyxFQUFFLFNBQVMsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUVwQyxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDOUQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1B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O2tCQXpCL0IsU0FBUztpQ0FDSSxJQUFJLFlBQ04sYUFBYSxXQUNkLENBQUMsa0JBQWtCLENBQUMsWUFDbkI7Ozs7OztHQU1ULG1CQUVnQix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDLHFCQUFxQixjQUNwQixDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsUUFDN0I7d0JBQ0osZUFBZSxFQUFFLDhCQUE4Qjt3QkFDL0MsY0FBYyxFQUFFLFNBQVM7d0JBQ3pCLHNCQUFzQixFQUFFLFNBQVM7d0JBQ2pDLGlCQUFpQixFQUFFLFVBQVU7d0JBQzdCLHdCQUF3QixFQUFFLFlBQVk7d0JBQ3RDLGlCQUFpQixFQUFFLFlBQVk7d0JBQy9CLGtCQUFrQixFQUFFLHdCQUF3QjtxQkFDN0M7MEVBdURPLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBmb3J3YXJkUmVmLCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7RU1QVFlfQ0xJRU5UX1JFQ1QsQ3VpSG92ZXJlZFNlcnZpY2UsIEN1aUNvbnRleHR9IGZyb20gJ0BjdWJ5LXVpL2Nkayc7XG5pbXBvcnQge2N1aUZhZGVJbiwgY3VpU2NhbGVJbn0gZnJvbSAnLi4vLi4vYW5pbWF0aW9ucyc7XG5pbXBvcnQge1xuICBjdWlQb3NpdGlvbkFjY2Vzc29yRm9yLFxuICBDdWlSZWN0QWNjZXNzb3IsXG4gIGN1aVJlY3RBY2Nlc3NvckZvcixcbn0gZnJvbSAnLi4vLi4vY2xhc3Nlcyc7XG5pbXBvcnQge0N1aVBvc2l0aW9uU2VydmljZSwgQ3VpVmlzdWFsVmlld3BvcnRTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQge0NVSV9BTklNQVRJT05TX1NQRUVELCBDVUlfVklFV1BPUlR9IGZyb20gJy4uLy4uL3Rva2Vucyc7XG5pbXBvcnQge2N1aUlzT2JzY3VyZWQsIGN1aVRvQW5pbWF0aW9uT3B0aW9uc30gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHtpbmplY3RDb250ZXh0LCBQb2x5bW9ycGhldXNPdXRsZXR9IGZyb20gJ0B0YWlnYS11aS9wb2x5bW9ycGhldXMnO1xuaW1wb3J0IHttYXAsIHRha2VXaGlsZX0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7Q3VpVG9vbHRpcERpcmVjdGl2ZX0gZnJvbSAnLi90b29sdGlwLmRpcmVjdGl2ZSc7XG5pbXBvcnQge0N1aVRvb2x0aXBIb3Zlcn0gZnJvbSAnLi90b29sdGlwLWhvdmVyLmRpcmVjdGl2ZSc7XG5pbXBvcnQge0N1aVRvb2x0aXBQb2ludGVyfSBmcm9tICcuL3Rvb2x0aXAtcG9pbnRlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHtDdWlUb29sdGlwUG9zaXRpb259IGZyb20gJy4vdG9vbHRpcC1wb3NpdGlvbi5kaXJlY3RpdmUnO1xuaW1wb3J0IHtDdWlUb29sdGlwVW5zdHlsZWRDb21wb25lbnR9IGZyb20gJy4vdG9vbHRpcC11bnN0eWxlZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ1VJX0lTX01PQklMRSwgY3VpQ2xhbXAsIGN1aUluamVjdEVsZW1lbnQsIGN1aVB1cmUsIGN1aVB4IH0gZnJvbSAnQGN1YnktdWkvY2RrJztcblxuY29uc3QgR0FQID0gODtcblxuZXhwb3J0IGNvbnN0IENVSV9UT09MVElQX1BST1ZJREVSUyA9IFtcbiAgQ3VpUG9zaXRpb25TZXJ2aWNlLFxuICBDdWlIb3ZlcmVkU2VydmljZSxcbiAgY3VpUG9zaXRpb25BY2Nlc3NvckZvcignaGludCcsIEN1aVRvb2x0aXBQb3NpdGlvbiksXG4gIGN1aVJlY3RBY2Nlc3NvckZvcignaGludCcsIGZvcndhcmRSZWYoKCkgPT4gQ3VpVG9vbHRpcERpcmVjdGl2ZSkpLFxuXTtcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnY3VpLXRvb2x0aXAnLFxuICBpbXBvcnRzOiBbUG9seW1vcnBoZXVzT3V0bGV0XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctY29udGVudCAvPlxuICAgIDxzcGFuXG4gICAgICAqcG9seW1vcnBoZXVzT3V0bGV0PVwiY29udGVudCgpIGFzIHRleHQ7IGNvbnRleHQ6IGhpbnQuY29udGV4dFwiXG4gICAgICBbaW5uZXJIVE1MXT1cInRleHRcIlxuICAgID48L3NwYW4+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL3Rvb2x0aXAuc3R5bGUuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBDVUlfVE9PTFRJUF9QUk9WSURFUlMsXG4gIGFuaW1hdGlvbnM6IFtjdWlGYWRlSW4sIGN1aVNjYWxlSW5dLFxuICBob3N0OiB7XG4gICAgJ1tAY3VpU2NhbGVJbl0nOiAnaXNNb2JpbGUgPyBvcHRpb25zIDogZGVza3RvcCcsXG4gICAgJ1tAY3VpRmFkZUluXSc6ICdvcHRpb25zJyxcbiAgICAnW2NsYXNzLl91bnRvdWNoYWJsZV0nOiAncG9pbnRlcicsXG4gICAgJ1tjbGFzcy5fbW9iaWxlXSc6ICdpc01vYmlsZScsXG4gICAgJ1thdHRyLmRhdGEtYXBwZWFyYW5jZV0nOiAnYXBwZWFyYW5jZScsXG4gICAgJ1thdHRyLmN1aVRoZW1lXSc6ICdhcHBlYXJhbmNlJyxcbiAgICAnKGRvY3VtZW50OmNsaWNrKSc6ICdvbkNsaWNrKCRldmVudC50YXJnZXQpJyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgQ3VpVG9vbHRpcENvbXBvbmVudDxDID0gYW55PiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZWwgPSBjdWlJbmplY3RFbGVtZW50KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaG92ZXIgPSBpbmplY3QoQ3VpVG9vbHRpcEhvdmVyKTtcbiAgcHJpdmF0ZSByZWFkb25seSB2dnMgPSBpbmplY3QoQ3VpVmlzdWFsVmlld3BvcnRTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSB2aWV3cG9ydCA9IGluamVjdChDVUlfVklFV1BPUlQpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBkZXNrdG9wID0ge3ZhbHVlOiAnJywgcGFyYW1zOiB7ZW5kOiAxLCBzdGFydDogMX19O1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgb3B0aW9ucyA9IGN1aVRvQW5pbWF0aW9uT3B0aW9ucyhcbiAgICBpbmplY3QoQ1VJX0FOSU1BVElPTlNfU1BFRUQpLFxuICAgICdjdWJpYy1iZXppZXIoMC4zNSwgMS4zLCAwLjI1LCAxKScsXG4gICk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHBvaW50ZXIgPSBpbmplY3QoQ3VpVG9vbHRpcFBvaW50ZXIsIHtvcHRpb25hbDogdHJ1ZX0pO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYWNjZXNzb3IgPSBpbmplY3QoQ3VpUmVjdEFjY2Vzc29yKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGhpbnQgPSBpbmplY3RDb250ZXh0PEN1aUNvbnRleHQ8Q3VpVG9vbHRpcERpcmVjdGl2ZTxDPj4+KCkuJGltcGxpY2l0O1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNNb2JpbGUgPSBpbmplY3QoQ1VJX0lTX01PQklMRSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbnRlbnQgPVxuICAgIHRoaXMuaGludC5jb21wb25lbnQuY29tcG9uZW50ID09PSBDdWlUb29sdGlwVW5zdHlsZWRDb21wb25lbnRcbiAgICAgID8gc2lnbmFsKCcnKVxuICAgICAgOiB0aGlzLmhpbnQuY29udGVudDtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXBwZWFyYW5jZSA9XG4gICAgdGhpcy5oaW50LmFwcGVhcmFuY2UgfHxcbiAgICB0aGlzLmhpbnQuZWwuY2xvc2VzdCgnW2N1aVRoZW1lXScpPy5nZXRBdHRyaWJ1dGUoJ2N1aVRoZW1lJyk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgaW5qZWN0KEN1aVBvc2l0aW9uU2VydmljZSlcbiAgICAucGlwZShcbiAgICAgIHRha2VXaGlsZSgoKSA9PiB0aGlzLmhpbnQuZWwuaXNDb25uZWN0ZWQpLFxuICAgICAgbWFwKChwb2ludCkgPT4gdGhpcy52dnMuY29ycmVjdChwb2ludCkpLFxuICAgICAgdGFrZVVudGlsRGVzdHJveWVkKCksXG4gICAgKVxuICAgIC5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKFt0b3AsIGxlZnRdKSA9PiB0aGlzLnVwZGF0ZSh0b3AsIGxlZnQpLFxuICAgICAgY29tcGxldGU6ICgpID0+IHRoaXMuaG92ZXIudG9nZ2xlKGZhbHNlKSxcbiAgICB9KTtcblxuICAgIGluamVjdChDdWlIb3ZlcmVkU2VydmljZSlcbiAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSlcbiAgICAuc3Vic2NyaWJlKChob3ZlcikgPT4gdGhpcy5ob3Zlci50b2dnbGUoaG92ZXIpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbkNsaWNrKHRhcmdldDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICAoIXRhcmdldC5jbG9zZXN0KCdjdWktaGludCcpICYmICF0aGlzLmhpbnQuZWwuY29udGFpbnModGFyZ2V0KSkgfHxcbiAgICAgIGN1aUlzT2JzY3VyZWQodGhpcy5oaW50LmVsKVxuICAgICkge1xuICAgICAgdGhpcy5ob3Zlci50b2dnbGUoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIEBjdWlQdXJlXG4gIHByaXZhdGUgYXBwbHkodG9wOiBzdHJpbmcsIGxlZnQ6IHN0cmluZywgYmVha1RvcDogbnVtYmVyLCBiZWFrTGVmdDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5lbC5zdHlsZS50b3AgPSB0b3A7XG4gICAgdGhpcy5lbC5zdHlsZS5sZWZ0ID0gbGVmdDtcbiAgICB0aGlzLmVsLnN0eWxlLnNldFByb3BlcnR5KCctLXRvcCcsIGAke2JlYWtUb3B9JWApO1xuICAgIHRoaXMuZWwuc3R5bGUuc2V0UHJvcGVydHkoJy0tbGVmdCcsIGAke2JlYWtMZWZ0fSVgKTtcbiAgICB0aGlzLmVsLnN0eWxlLnNldFByb3BlcnR5KFxuICAgICAgJy0tcm90YXRlJyxcbiAgICAgICFiZWFrTGVmdCB8fCBNYXRoLmNlaWwoYmVha0xlZnQpID09PSAxMDAgPyAnOTBkZWcnIDogJzBkZWcnLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZSh0b3A6IG51bWJlciwgbGVmdDogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3Qge2NsaWVudEhlaWdodCwgY2xpZW50V2lkdGh9ID0gdGhpcy5lbDtcbiAgICBjb25zdCByZWN0ID0gdGhpcy5hY2Nlc3Nvci5nZXRDbGllbnRSZWN0KCk7XG4gICAgY29uc3Qgdmlld3BvcnQgPSB0aGlzLnZpZXdwb3J0LmdldENsaWVudFJlY3QoKTtcblxuICAgIGlmIChyZWN0ID09PSBFTVBUWV9DTElFTlRfUkVDVCB8fCAhY2xpZW50SGVpZ2h0IHx8ICFjbGllbnRXaWR0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHNhZmVMZWZ0ID0gY3VpQ2xhbXAobGVmdCwgR0FQLCB2aWV3cG9ydC53aWR0aCAtIGNsaWVudFdpZHRoIC0gR0FQKTtcbiAgICBjb25zdCBbYmVha1RvcCwgYmVha0xlZnRdID0gdGhpcy52dnMuY29ycmVjdChbXG4gICAgICByZWN0LnRvcCArIHJlY3QuaGVpZ2h0IC8gMiAtIHRvcCxcbiAgICAgIHJlY3QubGVmdCArIHJlY3Qud2lkdGggLyAyIC0gc2FmZUxlZnQsXG4gICAgXSk7XG5cbiAgICB0aGlzLmFwcGx5KFxuICAgICAgY3VpUHgoTWF0aC5yb3VuZCh0b3ApKSxcbiAgICAgIGN1aVB4KE1hdGgucm91bmQoc2FmZUxlZnQpKSxcbiAgICAgIE1hdGgucm91bmQoKGN1aUNsYW1wKGJlYWtUb3AsIDAsIGNsaWVudEhlaWdodCkgLyBjbGllbnRIZWlnaHQpICogMTAwKSxcbiAgICAgIE1hdGgucm91bmQoKGN1aUNsYW1wKGJlYWtMZWZ0LCAwLCBjbGllbnRXaWR0aCkgLyBjbGllbnRXaWR0aCkgKiAxMDApLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { ChangeDetectionStrategy, Component, forwardRef, inject, signal } from '@angular/core';
|
|
3
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
4
|
+
import { EMPTY_CLIENT_RECT, CuiHoveredService } from '@cuby-ui/cdk';
|
|
5
|
+
import { cuiFadeIn, cuiScaleIn } from '../../animations';
|
|
6
|
+
import { cuiPositionAccessorFor, CuiRectAccessor, cuiRectAccessorFor, } from '../../classes';
|
|
7
|
+
import { CuiPositionService, CuiVisualViewportService } from '../../services';
|
|
8
|
+
import { CUI_ANIMATIONS_SPEED, CUI_VIEWPORT } from '../../tokens';
|
|
9
|
+
import { cuiIsObscured, cuiToAnimationOptions } from '../../utils';
|
|
10
|
+
import { injectContext, PolymorpheusOutlet } from '@taiga-ui/polymorpheus';
|
|
11
|
+
import { map, takeWhile } from 'rxjs';
|
|
12
|
+
import { CuiTooltipDirective } from './tooltip.directive';
|
|
13
|
+
import { CuiTooltipHover } from './tooltip-hover.directive';
|
|
14
|
+
import { CuiTooltipPointer } from './tooltip-pointer.directive';
|
|
15
|
+
import { CuiTooltipPosition } from './tooltip-position.directive';
|
|
16
|
+
import { CuiTooltipUnstyledComponent } from './tooltip-unstyled.component';
|
|
17
|
+
import { CUI_IS_MOBILE, cuiClamp, cuiInjectElement, cuiPure, cuiPx } from '@cuby-ui/cdk';
|
|
18
|
+
import * as i0 from "@angular/core";
|
|
19
|
+
const GAP = 8;
|
|
20
|
+
export const CUI_TOOLTIP_PROVIDERS = [
|
|
21
|
+
CuiPositionService,
|
|
22
|
+
CuiHoveredService,
|
|
23
|
+
cuiPositionAccessorFor('hint', CuiTooltipPosition),
|
|
24
|
+
cuiRectAccessorFor('hint', forwardRef(() => CuiTooltipDirective)),
|
|
25
|
+
];
|
|
26
|
+
export class CuiTooltipComponent {
|
|
27
|
+
constructor() {
|
|
28
|
+
this.el = cuiInjectElement();
|
|
29
|
+
this.hover = inject(CuiTooltipHover);
|
|
30
|
+
this.vvs = inject(CuiVisualViewportService);
|
|
31
|
+
this.viewport = inject(CUI_VIEWPORT);
|
|
32
|
+
this.desktop = { value: '', params: { end: 1, start: 1 } };
|
|
33
|
+
this.options = cuiToAnimationOptions(inject(CUI_ANIMATIONS_SPEED), 'cubic-bezier(0.35, 1.3, 0.25, 1)');
|
|
34
|
+
this.pointer = inject(CuiTooltipPointer, { optional: true });
|
|
35
|
+
this.accessor = inject(CuiRectAccessor);
|
|
36
|
+
this.hint = injectContext().$implicit;
|
|
37
|
+
this.isMobile = inject(CUI_IS_MOBILE);
|
|
38
|
+
this.content = this.hint.component.component === CuiTooltipUnstyledComponent
|
|
39
|
+
? signal('')
|
|
40
|
+
: this.hint.content;
|
|
41
|
+
this.appearance = this.hint.appearance ||
|
|
42
|
+
this.hint.el.closest('[cuiTheme]')?.getAttribute('cuiTheme');
|
|
43
|
+
inject(CuiPositionService)
|
|
44
|
+
.pipe(takeWhile(() => this.hint.el.isConnected), map((point) => this.vvs.correct(point)), takeUntilDestroyed())
|
|
45
|
+
.subscribe({
|
|
46
|
+
next: ([top, left]) => this.update(top, left),
|
|
47
|
+
complete: () => this.hover.toggle(false),
|
|
48
|
+
});
|
|
49
|
+
inject(CuiHoveredService)
|
|
50
|
+
.pipe(takeUntilDestroyed())
|
|
51
|
+
.subscribe((hover) => this.hover.toggle(hover));
|
|
52
|
+
}
|
|
53
|
+
onClick(target) {
|
|
54
|
+
if ((!target.closest('cui-hint') && !this.hint.el.contains(target)) ||
|
|
55
|
+
cuiIsObscured(this.hint.el)) {
|
|
56
|
+
this.hover.toggle(false);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
apply(top, left, beakTop, beakLeft) {
|
|
60
|
+
this.el.style.top = top;
|
|
61
|
+
this.el.style.left = left;
|
|
62
|
+
this.el.style.setProperty('--top', `${beakTop}%`);
|
|
63
|
+
this.el.style.setProperty('--left', `${beakLeft}%`);
|
|
64
|
+
this.el.style.setProperty('--rotate', !beakLeft || Math.ceil(beakLeft) === 100 ? '90deg' : '0deg');
|
|
65
|
+
}
|
|
66
|
+
update(top, left) {
|
|
67
|
+
const { clientHeight, clientWidth } = this.el;
|
|
68
|
+
const rect = this.accessor.getClientRect();
|
|
69
|
+
const viewport = this.viewport.getClientRect();
|
|
70
|
+
if (rect === EMPTY_CLIENT_RECT || !clientHeight || !clientWidth) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
const safeLeft = cuiClamp(left, GAP, viewport.width - clientWidth - GAP);
|
|
74
|
+
const [beakTop, beakLeft] = this.vvs.correct([
|
|
75
|
+
rect.top + rect.height / 2 - top,
|
|
76
|
+
rect.left + rect.width / 2 - safeLeft,
|
|
77
|
+
]);
|
|
78
|
+
this.apply(cuiPx(Math.round(top)), cuiPx(Math.round(safeLeft)), Math.round((cuiClamp(beakTop, 0, clientHeight) / clientHeight) * 100), Math.round((cuiClamp(beakLeft, 0, clientWidth) / clientWidth) * 100));
|
|
79
|
+
}
|
|
80
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CuiTooltipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
81
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CuiTooltipComponent, isStandalone: true, selector: "cui-tooltip", host: { listeners: { "document:click": "onClick($event.target)" }, properties: { "@cuiScaleIn": "isMobile ? options : desktop", "@cuiFadeIn": "options", "class._untouchable": "pointer", "class._mobile": "isMobile", "attr.data-appearance": "appearance", "attr.cuiTheme": "appearance" } }, providers: CUI_TOOLTIP_PROVIDERS, ngImport: i0, template: `
|
|
82
|
+
<ng-content />
|
|
83
|
+
<span
|
|
84
|
+
*polymorpheusOutlet="content() as text; context: hint.context"
|
|
85
|
+
[innerHTML]="text"
|
|
86
|
+
></span>
|
|
87
|
+
`, isInline: true, styles: [":host{padding:4px 8px;font-weight:400;font-size:14px;line-height:20px;overflow-y:auto;position:absolute;max-inline-size:375px;max-block-size:375px;background:var(--cui-gray-900);border-radius:6px;color:var(--cui-gray-0);box-sizing:border-box;font-family:var(--cui-main-font);white-space:pre-line;overflow-wrap:break-word;transform-origin:var(--left) var(--top)}:host:not([style*=top]){visibility:hidden}:host._untouchable{pointer-events:none}\n"], dependencies: [{ kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }], animations: [cuiFadeIn, cuiScaleIn], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
88
|
+
}
|
|
89
|
+
__decorate([
|
|
90
|
+
cuiPure
|
|
91
|
+
], CuiTooltipComponent.prototype, "apply", null);
|
|
92
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CuiTooltipComponent, decorators: [{
|
|
93
|
+
type: Component,
|
|
94
|
+
args: [{ standalone: true, selector: 'cui-tooltip', imports: [PolymorpheusOutlet], template: `
|
|
95
|
+
<ng-content />
|
|
96
|
+
<span
|
|
97
|
+
*polymorpheusOutlet="content() as text; context: hint.context"
|
|
98
|
+
[innerHTML]="text"
|
|
99
|
+
></span>
|
|
100
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, providers: CUI_TOOLTIP_PROVIDERS, animations: [cuiFadeIn, cuiScaleIn], host: {
|
|
101
|
+
'[@cuiScaleIn]': 'isMobile ? options : desktop',
|
|
102
|
+
'[@cuiFadeIn]': 'options',
|
|
103
|
+
'[class._untouchable]': 'pointer',
|
|
104
|
+
'[class._mobile]': 'isMobile',
|
|
105
|
+
'[attr.data-appearance]': 'appearance',
|
|
106
|
+
'[attr.cuiTheme]': 'appearance',
|
|
107
|
+
'(document:click)': 'onClick($event.target)',
|
|
108
|
+
}, styles: [":host{padding:4px 8px;font-weight:400;font-size:14px;line-height:20px;overflow-y:auto;position:absolute;max-inline-size:375px;max-block-size:375px;background:var(--cui-gray-900);border-radius:6px;color:var(--cui-gray-0);box-sizing:border-box;font-family:var(--cui-main-font);white-space:pre-line;overflow-wrap:break-word;transform-origin:var(--left) var(--top)}:host:not([style*=top]){visibility:hidden}:host._untouchable{pointer-events:none}\n"] }]
|
|
109
|
+
}], ctorParameters: function () { return []; }, propDecorators: { apply: [] } });
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2RpcmVjdGl2ZXMvdG9vbHRpcC90b29sdGlwLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsaUJBQWlCLEVBQWEsTUFBTSxjQUFjLENBQUM7QUFDN0UsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUN2RCxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLGVBQWUsRUFDZixrQkFBa0IsR0FDbkIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGtCQUFrQixFQUFFLHdCQUF3QixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUUsT0FBTyxFQUFDLG9CQUFvQixFQUFFLFlBQVksRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUNoRSxPQUFPLEVBQUMsYUFBYSxFQUFFLHFCQUFxQixFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQ2pFLE9BQU8sRUFBQyxhQUFhLEVBQUUsa0JBQWtCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RSxPQUFPLEVBQUMsR0FBRyxFQUFFLFNBQVMsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUVwQyxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDOUQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDekUsT0FBTyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFFekYsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBRWQsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUc7SUFDbkMsa0JBQWtCO0lBQ2xCLGlCQUFpQjtJQUNqQixzQkFBc0IsQ0FBQyxNQUFNLEVBQUUsa0JBQWtCLENBQUM7SUFDbEQsa0JBQWtCLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0NBQ2xFLENBQUM7QUEyQkYsTUFBTSxPQUFPLG1CQUFtQjtJQTBCOUI7UUF6QmlCLE9BQUUsR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLFVBQUssR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDaEMsUUFBRyxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ3ZDLGFBQVEsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFOUIsWUFBTyxHQUFHLEVBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUMsRUFBQyxDQUFDO1FBQ2xELFlBQU8sR0FBRyxxQkFBcUIsQ0FDaEQsTUFBTSxDQUFDLG9CQUFvQixDQUFDLEVBQzVCLGtDQUFrQyxDQUNuQyxDQUFDO1FBRWlCLFlBQU8sR0FBRyxNQUFNLENBQUMsaUJBQWlCLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztRQUN0RCxhQUFRLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ25DLFNBQUksR0FBRyxhQUFhLEVBQXNDLENBQUMsU0FBUyxDQUFDO1FBQ3JFLGFBQVEsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFakMsWUFBTyxHQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEtBQUssMkJBQTJCO1lBQzNELENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ1osQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBRUwsZUFBVSxHQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVU7WUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUc3RCxNQUFNLENBQUMsa0JBQWtCLENBQUM7YUFDekIsSUFBSSxDQUNILFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFDekMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUN2QyxrQkFBa0IsRUFBRSxDQUNyQjthQUNBLFNBQVMsQ0FBQztZQUNULElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUM7WUFDN0MsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztTQUN6QyxDQUFDLENBQUM7UUFFSCxNQUFNLENBQUMsaUJBQWlCLENBQUM7YUFDeEIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7YUFDMUIsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFUyxPQUFPLENBQUMsTUFBbUI7UUFDbkMsSUFDRSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMvRCxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFDM0I7WUFDQSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUMxQjtJQUNILENBQUM7SUFHTyxLQUFLLENBQUMsR0FBVyxFQUFFLElBQVksRUFBRSxPQUFlLEVBQUUsUUFBZ0I7UUFDeEUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUN4QixJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQzFCLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxPQUFPLEdBQUcsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxRQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FDdkIsVUFBVSxFQUNWLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FDNUQsQ0FBQztJQUNKLENBQUM7SUFFTyxNQUFNLENBQUMsR0FBVyxFQUFFLElBQVk7UUFDdEMsTUFBTSxFQUFDLFlBQVksRUFBRSxXQUFXLEVBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQzVDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDM0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUUvQyxJQUFJLElBQUksS0FBSyxpQkFBaUIsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUMvRCxPQUFPO1NBQ1I7UUFFRCxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxRQUFRLENBQUMsS0FBSyxHQUFHLFdBQVcsR0FBRyxHQUFHLENBQUMsQ0FBQztRQUN6RSxNQUFNLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDO1lBQzNDLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsR0FBRztZQUNoQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLFFBQVE7U0FDdEMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLEtBQUssQ0FDUixLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUN0QixLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUMzQixJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsWUFBWSxDQUFDLEdBQUcsWUFBWSxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQ3JFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxXQUFXLENBQUMsR0FBRyxXQUFXLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FDckUsQ0FBQztJQUNKLENBQUM7K0dBckZVLG1CQUFtQjttR0FBbkIsbUJBQW1CLDBWQVpuQixxQkFBcUIsMEJBVHRCOzs7Ozs7R0FNVCxzZ0JBUFMsa0JBQWtCLGdIQVdoQixDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUM7O0FBZ0VuQztJQURDLE9BQU87Z0RBVVA7NEZBOURVLG1CQUFtQjtrQkF6Qi9CLFNBQVM7aUNBQ0ksSUFBSSxZQUNOLGFBQWEsV0FDZCxDQUFDLGtCQUFrQixDQUFDLFlBQ25COzs7Ozs7R0FNVCxtQkFFZ0IsdUJBQXVCLENBQUMsTUFBTSxhQUNwQyxxQkFBcUIsY0FDcEIsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLFFBQzdCO3dCQUNKLGVBQWUsRUFBRSw4QkFBOEI7d0JBQy9DLGNBQWMsRUFBRSxTQUFTO3dCQUN6QixzQkFBc0IsRUFBRSxTQUFTO3dCQUNqQyxpQkFBaUIsRUFBRSxVQUFVO3dCQUM3Qix3QkFBd0IsRUFBRSxZQUFZO3dCQUN0QyxpQkFBaUIsRUFBRSxZQUFZO3dCQUMvQixrQkFBa0IsRUFBRSx3QkFBd0I7cUJBQzdDOzBFQXVETyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgZm9yd2FyZFJlZiwgaW5qZWN0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcclxuaW1wb3J0IHtFTVBUWV9DTElFTlRfUkVDVCxDdWlIb3ZlcmVkU2VydmljZSwgQ3VpQ29udGV4dH0gZnJvbSAnQGN1YnktdWkvY2RrJztcclxuaW1wb3J0IHtjdWlGYWRlSW4sIGN1aVNjYWxlSW59IGZyb20gJy4uLy4uL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQge1xyXG4gIGN1aVBvc2l0aW9uQWNjZXNzb3JGb3IsXHJcbiAgQ3VpUmVjdEFjY2Vzc29yLFxyXG4gIGN1aVJlY3RBY2Nlc3NvckZvcixcclxufSBmcm9tICcuLi8uLi9jbGFzc2VzJztcclxuaW1wb3J0IHtDdWlQb3NpdGlvblNlcnZpY2UsIEN1aVZpc3VhbFZpZXdwb3J0U2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xyXG5pbXBvcnQge0NVSV9BTklNQVRJT05TX1NQRUVELCBDVUlfVklFV1BPUlR9IGZyb20gJy4uLy4uL3Rva2Vucyc7XHJcbmltcG9ydCB7Y3VpSXNPYnNjdXJlZCwgY3VpVG9BbmltYXRpb25PcHRpb25zfSBmcm9tICcuLi8uLi91dGlscyc7XHJcbmltcG9ydCB7aW5qZWN0Q29udGV4dCwgUG9seW1vcnBoZXVzT3V0bGV0fSBmcm9tICdAdGFpZ2EtdWkvcG9seW1vcnBoZXVzJztcclxuaW1wb3J0IHttYXAsIHRha2VXaGlsZX0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQge0N1aVRvb2x0aXBEaXJlY3RpdmV9IGZyb20gJy4vdG9vbHRpcC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQge0N1aVRvb2x0aXBIb3Zlcn0gZnJvbSAnLi90b29sdGlwLWhvdmVyLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7Q3VpVG9vbHRpcFBvaW50ZXJ9IGZyb20gJy4vdG9vbHRpcC1wb2ludGVyLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7Q3VpVG9vbHRpcFBvc2l0aW9ufSBmcm9tICcuL3Rvb2x0aXAtcG9zaXRpb24uZGlyZWN0aXZlJztcclxuaW1wb3J0IHtDdWlUb29sdGlwVW5zdHlsZWRDb21wb25lbnR9IGZyb20gJy4vdG9vbHRpcC11bnN0eWxlZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDVUlfSVNfTU9CSUxFLCBjdWlDbGFtcCwgY3VpSW5qZWN0RWxlbWVudCwgY3VpUHVyZSwgY3VpUHggfSBmcm9tICdAY3VieS11aS9jZGsnO1xyXG5cclxuY29uc3QgR0FQID0gODtcclxuXHJcbmV4cG9ydCBjb25zdCBDVUlfVE9PTFRJUF9QUk9WSURFUlMgPSBbXHJcbiAgQ3VpUG9zaXRpb25TZXJ2aWNlLFxyXG4gIEN1aUhvdmVyZWRTZXJ2aWNlLFxyXG4gIGN1aVBvc2l0aW9uQWNjZXNzb3JGb3IoJ2hpbnQnLCBDdWlUb29sdGlwUG9zaXRpb24pLFxyXG4gIGN1aVJlY3RBY2Nlc3NvckZvcignaGludCcsIGZvcndhcmRSZWYoKCkgPT4gQ3VpVG9vbHRpcERpcmVjdGl2ZSkpLFxyXG5dO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBzZWxlY3RvcjogJ2N1aS10b29sdGlwJyxcclxuICBpbXBvcnRzOiBbUG9seW1vcnBoZXVzT3V0bGV0XSxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPG5nLWNvbnRlbnQgLz5cclxuICAgIDxzcGFuXHJcbiAgICAgICpwb2x5bW9ycGhldXNPdXRsZXQ9XCJjb250ZW50KCkgYXMgdGV4dDsgY29udGV4dDogaGludC5jb250ZXh0XCJcclxuICAgICAgW2lubmVySFRNTF09XCJ0ZXh0XCJcclxuICAgID48L3NwYW4+XHJcbiAgYCxcclxuICBzdHlsZVVybHM6IFsnLi90b29sdGlwLnN0eWxlLnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBwcm92aWRlcnM6IENVSV9UT09MVElQX1BST1ZJREVSUyxcclxuICBhbmltYXRpb25zOiBbY3VpRmFkZUluLCBjdWlTY2FsZUluXSxcclxuICBob3N0OiB7XHJcbiAgICAnW0BjdWlTY2FsZUluXSc6ICdpc01vYmlsZSA/IG9wdGlvbnMgOiBkZXNrdG9wJyxcclxuICAgICdbQGN1aUZhZGVJbl0nOiAnb3B0aW9ucycsXHJcbiAgICAnW2NsYXNzLl91bnRvdWNoYWJsZV0nOiAncG9pbnRlcicsXHJcbiAgICAnW2NsYXNzLl9tb2JpbGVdJzogJ2lzTW9iaWxlJyxcclxuICAgICdbYXR0ci5kYXRhLWFwcGVhcmFuY2VdJzogJ2FwcGVhcmFuY2UnLFxyXG4gICAgJ1thdHRyLmN1aVRoZW1lXSc6ICdhcHBlYXJhbmNlJyxcclxuICAgICcoZG9jdW1lbnQ6Y2xpY2spJzogJ29uQ2xpY2soJGV2ZW50LnRhcmdldCknLFxyXG4gIH0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDdWlUb29sdGlwQ29tcG9uZW50PEMgPSBhbnk+IHtcclxuICBwcml2YXRlIHJlYWRvbmx5IGVsID0gY3VpSW5qZWN0RWxlbWVudCgpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgaG92ZXIgPSBpbmplY3QoQ3VpVG9vbHRpcEhvdmVyKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IHZ2cyA9IGluamVjdChDdWlWaXN1YWxWaWV3cG9ydFNlcnZpY2UpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgdmlld3BvcnQgPSBpbmplY3QoQ1VJX1ZJRVdQT1JUKTtcclxuXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRlc2t0b3AgPSB7dmFsdWU6ICcnLCBwYXJhbXM6IHtlbmQ6IDEsIHN0YXJ0OiAxfX07XHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG9wdGlvbnMgPSBjdWlUb0FuaW1hdGlvbk9wdGlvbnMoXHJcbiAgICBpbmplY3QoQ1VJX0FOSU1BVElPTlNfU1BFRUQpLFxyXG4gICAgJ2N1YmljLWJlemllcigwLjM1LCAxLjMsIDAuMjUsIDEpJyxcclxuICApO1xyXG5cclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcG9pbnRlciA9IGluamVjdChDdWlUb29sdGlwUG9pbnRlciwge29wdGlvbmFsOiB0cnVlfSk7XHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFjY2Vzc29yID0gaW5qZWN0KEN1aVJlY3RBY2Nlc3Nvcik7XHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGhpbnQgPSBpbmplY3RDb250ZXh0PEN1aUNvbnRleHQ8Q3VpVG9vbHRpcERpcmVjdGl2ZTxDPj4+KCkuJGltcGxpY2l0O1xyXG4gIHByb3RlY3RlZCByZWFkb25seSBpc01vYmlsZSA9IGluamVjdChDVUlfSVNfTU9CSUxFKTtcclxuXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbnRlbnQgPVxyXG4gICAgdGhpcy5oaW50LmNvbXBvbmVudC5jb21wb25lbnQgPT09IEN1aVRvb2x0aXBVbnN0eWxlZENvbXBvbmVudFxyXG4gICAgICA/IHNpZ25hbCgnJylcclxuICAgICAgOiB0aGlzLmhpbnQuY29udGVudDtcclxuXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFwcGVhcmFuY2UgPVxyXG4gICAgdGhpcy5oaW50LmFwcGVhcmFuY2UgfHxcclxuICAgIHRoaXMuaGludC5lbC5jbG9zZXN0KCdbY3VpVGhlbWVdJyk/LmdldEF0dHJpYnV0ZSgnY3VpVGhlbWUnKTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBpbmplY3QoQ3VpUG9zaXRpb25TZXJ2aWNlKVxyXG4gICAgLnBpcGUoXHJcbiAgICAgIHRha2VXaGlsZSgoKSA9PiB0aGlzLmhpbnQuZWwuaXNDb25uZWN0ZWQpLFxyXG4gICAgICBtYXAoKHBvaW50KSA9PiB0aGlzLnZ2cy5jb3JyZWN0KHBvaW50KSksXHJcbiAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxyXG4gICAgKVxyXG4gICAgLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChbdG9wLCBsZWZ0XSkgPT4gdGhpcy51cGRhdGUodG9wLCBsZWZ0KSxcclxuICAgICAgY29tcGxldGU6ICgpID0+IHRoaXMuaG92ZXIudG9nZ2xlKGZhbHNlKSxcclxuICAgIH0pO1xyXG5cclxuICAgIGluamVjdChDdWlIb3ZlcmVkU2VydmljZSlcclxuICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKVxyXG4gICAgLnN1YnNjcmliZSgoaG92ZXIpID0+IHRoaXMuaG92ZXIudG9nZ2xlKGhvdmVyKSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgb25DbGljayh0YXJnZXQ6IEhUTUxFbGVtZW50KTogdm9pZCB7XHJcbiAgICBpZiAoXHJcbiAgICAgICghdGFyZ2V0LmNsb3Nlc3QoJ2N1aS1oaW50JykgJiYgIXRoaXMuaGludC5lbC5jb250YWlucyh0YXJnZXQpKSB8fFxyXG4gICAgICBjdWlJc09ic2N1cmVkKHRoaXMuaGludC5lbClcclxuICAgICkge1xyXG4gICAgICB0aGlzLmhvdmVyLnRvZ2dsZShmYWxzZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAY3VpUHVyZVxyXG4gIHByaXZhdGUgYXBwbHkodG9wOiBzdHJpbmcsIGxlZnQ6IHN0cmluZywgYmVha1RvcDogbnVtYmVyLCBiZWFrTGVmdDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLmVsLnN0eWxlLnRvcCA9IHRvcDtcclxuICAgIHRoaXMuZWwuc3R5bGUubGVmdCA9IGxlZnQ7XHJcbiAgICB0aGlzLmVsLnN0eWxlLnNldFByb3BlcnR5KCctLXRvcCcsIGAke2JlYWtUb3B9JWApO1xyXG4gICAgdGhpcy5lbC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1sZWZ0JywgYCR7YmVha0xlZnR9JWApO1xyXG4gICAgdGhpcy5lbC5zdHlsZS5zZXRQcm9wZXJ0eShcclxuICAgICAgJy0tcm90YXRlJyxcclxuICAgICAgIWJlYWtMZWZ0IHx8IE1hdGguY2VpbChiZWFrTGVmdCkgPT09IDEwMCA/ICc5MGRlZycgOiAnMGRlZycsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGUodG9wOiBudW1iZXIsIGxlZnQ6IG51bWJlcik6IHZvaWQge1xyXG4gICAgY29uc3Qge2NsaWVudEhlaWdodCwgY2xpZW50V2lkdGh9ID0gdGhpcy5lbDtcclxuICAgIGNvbnN0IHJlY3QgPSB0aGlzLmFjY2Vzc29yLmdldENsaWVudFJlY3QoKTtcclxuICAgIGNvbnN0IHZpZXdwb3J0ID0gdGhpcy52aWV3cG9ydC5nZXRDbGllbnRSZWN0KCk7XHJcblxyXG4gICAgaWYgKHJlY3QgPT09IEVNUFRZX0NMSUVOVF9SRUNUIHx8ICFjbGllbnRIZWlnaHQgfHwgIWNsaWVudFdpZHRoKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzYWZlTGVmdCA9IGN1aUNsYW1wKGxlZnQsIEdBUCwgdmlld3BvcnQud2lkdGggLSBjbGllbnRXaWR0aCAtIEdBUCk7XHJcbiAgICBjb25zdCBbYmVha1RvcCwgYmVha0xlZnRdID0gdGhpcy52dnMuY29ycmVjdChbXHJcbiAgICAgIHJlY3QudG9wICsgcmVjdC5oZWlnaHQgLyAyIC0gdG9wLFxyXG4gICAgICByZWN0LmxlZnQgKyByZWN0LndpZHRoIC8gMiAtIHNhZmVMZWZ0LFxyXG4gICAgXSk7XHJcblxyXG4gICAgdGhpcy5hcHBseShcclxuICAgICAgY3VpUHgoTWF0aC5yb3VuZCh0b3ApKSxcclxuICAgICAgY3VpUHgoTWF0aC5yb3VuZChzYWZlTGVmdCkpLFxyXG4gICAgICBNYXRoLnJvdW5kKChjdWlDbGFtcChiZWFrVG9wLCAwLCBjbGllbnRIZWlnaHQpIC8gY2xpZW50SGVpZ2h0KSAqIDEwMCksXHJcbiAgICAgIE1hdGgucm91bmQoKGN1aUNsYW1wKGJlYWtMZWZ0LCAwLCBjbGllbnRXaWR0aCkgLyBjbGllbnRXaWR0aCkgKiAxMDApLFxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -1,92 +1,92 @@
|
|
|
1
|
-
import { Directive, inject, INJECTOR, Input, signal } from '@angular/core';
|
|
2
|
-
import { cuiInjectElement, CuiActiveZone } from '@cuby-ui/cdk';
|
|
3
|
-
import { cuiAsRectAccessor, cuiAsVehicle } from '../../classes';
|
|
4
|
-
import { PolymorpheusComponent } from '@taiga-ui/polymorpheus';
|
|
5
|
-
import { CUI_TOOLTIP_COMPONENT } from './tooltip.providers';
|
|
6
|
-
import { CuiTooltipService } from './tooltip.service';
|
|
7
|
-
import { CuiTooltipDriver } from './tooltip-driver.directive';
|
|
8
|
-
import { CuiTooltipHover } from './tooltip-hover.directive';
|
|
9
|
-
import { CUI_TOOLTIP_OPTIONS } from './tooltip-options.directive';
|
|
10
|
-
import { CuiTooltipPosition } from './tooltip-position.directive';
|
|
11
|
-
import * as i0 from "@angular/core";
|
|
12
|
-
import * as i1 from "./tooltip-driver.directive";
|
|
13
|
-
import * as i2 from "./tooltip-hover.directive";
|
|
14
|
-
import * as i3 from "./tooltip-position.directive";
|
|
15
|
-
export class CuiTooltipDirective {
|
|
16
|
-
constructor() {
|
|
17
|
-
this.service = inject(CuiTooltipService);
|
|
18
|
-
this.appearance = inject(CUI_TOOLTIP_OPTIONS).appearance;
|
|
19
|
-
this.content = signal(null);
|
|
20
|
-
this.component = inject((PolymorpheusComponent));
|
|
21
|
-
this.el = cuiInjectElement();
|
|
22
|
-
this.activeZone = inject(CuiActiveZone, { optional: true });
|
|
23
|
-
this.type = 'hint';
|
|
24
|
-
}
|
|
25
|
-
set cuiTooltip(content) {
|
|
26
|
-
this.content.set(content);
|
|
27
|
-
if (!content) {
|
|
28
|
-
this.toggle(false);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
ngOnDestroy() {
|
|
32
|
-
this.toggle(false);
|
|
33
|
-
}
|
|
34
|
-
getClientRect() {
|
|
35
|
-
return this.el.getBoundingClientRect();
|
|
36
|
-
}
|
|
37
|
-
toggle(show) {
|
|
38
|
-
if (show && this.content()) {
|
|
39
|
-
this.service.add(this);
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
this.service.remove(this);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CuiTooltipDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
46
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: CuiTooltipDirective, isStandalone: true, selector: "[cuiTooltip]:not(ng-container):not(ng-template)", inputs: { context: ["cuiTooltipContext", "context"], appearance: ["cuiTooltipAppearance", "appearance"], cuiTooltip: "cuiTooltip" }, providers: [
|
|
47
|
-
cuiAsRectAccessor(CuiTooltipDirective),
|
|
48
|
-
cuiAsVehicle(CuiTooltipDirective),
|
|
49
|
-
{
|
|
50
|
-
provide: PolymorpheusComponent,
|
|
51
|
-
deps: [CUI_TOOLTIP_COMPONENT, INJECTOR],
|
|
52
|
-
useClass: PolymorpheusComponent,
|
|
53
|
-
},
|
|
54
|
-
], hostDirectives: [{ directive: i1.CuiTooltipDriver }, { directive: i2.CuiTooltipHover, inputs: ["cuiTooltipHideDelay", "cuiTooltipHideDelay", "cuiTooltipShowDelay", "cuiTooltipShowDelay"] }, { directive: i3.CuiTooltipPosition, inputs: ["cuiTooltipDirection", "cuiTooltipDirection"], outputs: ["cuiTooltipDirectionChange", "cuiTooltipDirectionChange"] }], ngImport: i0 }); }
|
|
55
|
-
}
|
|
56
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CuiTooltipDirective, decorators: [{
|
|
57
|
-
type: Directive,
|
|
58
|
-
args: [{
|
|
59
|
-
standalone: true,
|
|
60
|
-
selector: '[cuiTooltip]:not(ng-container):not(ng-template)',
|
|
61
|
-
providers: [
|
|
62
|
-
cuiAsRectAccessor(CuiTooltipDirective),
|
|
63
|
-
cuiAsVehicle(CuiTooltipDirective),
|
|
64
|
-
{
|
|
65
|
-
provide: PolymorpheusComponent,
|
|
66
|
-
deps: [CUI_TOOLTIP_COMPONENT, INJECTOR],
|
|
67
|
-
useClass: PolymorpheusComponent,
|
|
68
|
-
},
|
|
69
|
-
],
|
|
70
|
-
hostDirectives: [
|
|
71
|
-
CuiTooltipDriver,
|
|
72
|
-
{
|
|
73
|
-
directive: CuiTooltipHover,
|
|
74
|
-
inputs: ['cuiTooltipHideDelay', 'cuiTooltipShowDelay'],
|
|
75
|
-
},
|
|
76
|
-
{
|
|
77
|
-
directive: CuiTooltipPosition,
|
|
78
|
-
inputs: ['cuiTooltipDirection'],
|
|
79
|
-
outputs: ['cuiTooltipDirectionChange'],
|
|
80
|
-
},
|
|
81
|
-
],
|
|
82
|
-
}]
|
|
83
|
-
}], propDecorators: { context: [{
|
|
84
|
-
type: Input,
|
|
85
|
-
args: ['cuiTooltipContext']
|
|
86
|
-
}], appearance: [{
|
|
87
|
-
type: Input,
|
|
88
|
-
args: ['cuiTooltipAppearance']
|
|
89
|
-
}], cuiTooltip: [{
|
|
90
|
-
type: Input
|
|
91
|
-
}] } });
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Directive, inject, INJECTOR, Input, signal } from '@angular/core';
|
|
2
|
+
import { cuiInjectElement, CuiActiveZone } from '@cuby-ui/cdk';
|
|
3
|
+
import { cuiAsRectAccessor, cuiAsVehicle } from '../../classes';
|
|
4
|
+
import { PolymorpheusComponent } from '@taiga-ui/polymorpheus';
|
|
5
|
+
import { CUI_TOOLTIP_COMPONENT } from './tooltip.providers';
|
|
6
|
+
import { CuiTooltipService } from './tooltip.service';
|
|
7
|
+
import { CuiTooltipDriver } from './tooltip-driver.directive';
|
|
8
|
+
import { CuiTooltipHover } from './tooltip-hover.directive';
|
|
9
|
+
import { CUI_TOOLTIP_OPTIONS } from './tooltip-options.directive';
|
|
10
|
+
import { CuiTooltipPosition } from './tooltip-position.directive';
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
import * as i1 from "./tooltip-driver.directive";
|
|
13
|
+
import * as i2 from "./tooltip-hover.directive";
|
|
14
|
+
import * as i3 from "./tooltip-position.directive";
|
|
15
|
+
export class CuiTooltipDirective {
|
|
16
|
+
constructor() {
|
|
17
|
+
this.service = inject(CuiTooltipService);
|
|
18
|
+
this.appearance = inject(CUI_TOOLTIP_OPTIONS).appearance;
|
|
19
|
+
this.content = signal(null);
|
|
20
|
+
this.component = inject((PolymorpheusComponent));
|
|
21
|
+
this.el = cuiInjectElement();
|
|
22
|
+
this.activeZone = inject(CuiActiveZone, { optional: true });
|
|
23
|
+
this.type = 'hint';
|
|
24
|
+
}
|
|
25
|
+
set cuiTooltip(content) {
|
|
26
|
+
this.content.set(content);
|
|
27
|
+
if (!content) {
|
|
28
|
+
this.toggle(false);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
ngOnDestroy() {
|
|
32
|
+
this.toggle(false);
|
|
33
|
+
}
|
|
34
|
+
getClientRect() {
|
|
35
|
+
return this.el.getBoundingClientRect();
|
|
36
|
+
}
|
|
37
|
+
toggle(show) {
|
|
38
|
+
if (show && this.content()) {
|
|
39
|
+
this.service.add(this);
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
this.service.remove(this);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CuiTooltipDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
46
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: CuiTooltipDirective, isStandalone: true, selector: "[cuiTooltip]:not(ng-container):not(ng-template)", inputs: { context: ["cuiTooltipContext", "context"], appearance: ["cuiTooltipAppearance", "appearance"], cuiTooltip: "cuiTooltip" }, providers: [
|
|
47
|
+
cuiAsRectAccessor(CuiTooltipDirective),
|
|
48
|
+
cuiAsVehicle(CuiTooltipDirective),
|
|
49
|
+
{
|
|
50
|
+
provide: PolymorpheusComponent,
|
|
51
|
+
deps: [CUI_TOOLTIP_COMPONENT, INJECTOR],
|
|
52
|
+
useClass: PolymorpheusComponent,
|
|
53
|
+
},
|
|
54
|
+
], hostDirectives: [{ directive: i1.CuiTooltipDriver }, { directive: i2.CuiTooltipHover, inputs: ["cuiTooltipHideDelay", "cuiTooltipHideDelay", "cuiTooltipShowDelay", "cuiTooltipShowDelay"] }, { directive: i3.CuiTooltipPosition, inputs: ["cuiTooltipDirection", "cuiTooltipDirection"], outputs: ["cuiTooltipDirectionChange", "cuiTooltipDirectionChange"] }], ngImport: i0 }); }
|
|
55
|
+
}
|
|
56
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CuiTooltipDirective, decorators: [{
|
|
57
|
+
type: Directive,
|
|
58
|
+
args: [{
|
|
59
|
+
standalone: true,
|
|
60
|
+
selector: '[cuiTooltip]:not(ng-container):not(ng-template)',
|
|
61
|
+
providers: [
|
|
62
|
+
cuiAsRectAccessor(CuiTooltipDirective),
|
|
63
|
+
cuiAsVehicle(CuiTooltipDirective),
|
|
64
|
+
{
|
|
65
|
+
provide: PolymorpheusComponent,
|
|
66
|
+
deps: [CUI_TOOLTIP_COMPONENT, INJECTOR],
|
|
67
|
+
useClass: PolymorpheusComponent,
|
|
68
|
+
},
|
|
69
|
+
],
|
|
70
|
+
hostDirectives: [
|
|
71
|
+
CuiTooltipDriver,
|
|
72
|
+
{
|
|
73
|
+
directive: CuiTooltipHover,
|
|
74
|
+
inputs: ['cuiTooltipHideDelay', 'cuiTooltipShowDelay'],
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
directive: CuiTooltipPosition,
|
|
78
|
+
inputs: ['cuiTooltipDirection'],
|
|
79
|
+
outputs: ['cuiTooltipDirectionChange'],
|
|
80
|
+
},
|
|
81
|
+
],
|
|
82
|
+
}]
|
|
83
|
+
}], propDecorators: { context: [{
|
|
84
|
+
type: Input,
|
|
85
|
+
args: ['cuiTooltipContext']
|
|
86
|
+
}], appearance: [{
|
|
87
|
+
type: Input,
|
|
88
|
+
args: ['cuiTooltipAppearance']
|
|
89
|
+
}], cuiTooltip: [{
|
|
90
|
+
type: Input
|
|
91
|
+
}] } });
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2RpcmVjdGl2ZXMvdG9vbHRpcC90b29sdGlwLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6RSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUUsYUFBYSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBRTdELE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0QsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFFN0QsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDMUQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQzFELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDhCQUE4QixDQUFDOzs7OztBQTJCaEUsTUFBTSxPQUFPLG1CQUFtQjtJQXpCaEM7UUE0QnFCLFlBQU8sR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQU05QyxlQUFVLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUMsVUFBVSxDQUFDO1FBRXBELFlBQU8sR0FBRyxNQUFNLENBQXlCLElBQUksQ0FBQyxDQUFDO1FBQy9DLGNBQVMsR0FBRyxNQUFNLENBQUMsQ0FBQSxxQkFBOEIsQ0FBQSxDQUFDLENBQUM7UUFDMUMsT0FBRSxHQUFHLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsZUFBVSxHQUFJLE1BQU0sQ0FBQyxhQUFhLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztRQUN0RCxTQUFJLEdBQUcsTUFBTSxDQUFDO0tBMEJqQztJQXhCRyxJQUNXLFVBQVUsQ0FBQyxPQUErQjtRQUNqRCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUUxQixJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN0QjtJQUNMLENBQUM7SUFFTSxXQUFXO1FBQ2QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRU0sYUFBYTtRQUNoQixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRU0sTUFBTSxDQUFDLElBQWE7UUFDdkIsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzFCO2FBQU07WUFDSCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM3QjtJQUNMLENBQUM7K0dBeENRLG1CQUFtQjttR0FBbkIsbUJBQW1CLG1PQXRCakI7WUFDUCxpQkFBaUIsQ0FBQyxtQkFBbUIsQ0FBQztZQUN0QyxZQUFZLENBQUMsbUJBQW1CLENBQUM7WUFDakM7Z0JBQ0ksT0FBTyxFQUFFLHFCQUFxQjtnQkFDOUIsSUFBSSxFQUFFLENBQUMscUJBQXFCLEVBQUUsUUFBUSxDQUFDO2dCQUN2QyxRQUFRLEVBQUUscUJBQXFCO2FBQ2xDO1NBQ0o7OzRGQWNRLG1CQUFtQjtrQkF6Qi9CLFNBQVM7bUJBQUM7b0JBQ1AsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSxpREFBaUQ7b0JBQzNELFNBQVMsRUFBRTt3QkFDUCxpQkFBaUIscUJBQXFCO3dCQUN0QyxZQUFZLHFCQUFxQjt3QkFDakM7NEJBQ0ksT0FBTyxFQUFFLHFCQUFxQjs0QkFDOUIsSUFBSSxFQUFFLENBQUMscUJBQXFCLEVBQUUsUUFBUSxDQUFDOzRCQUN2QyxRQUFRLEVBQUUscUJBQXFCO3lCQUNsQztxQkFDSjtvQkFDRCxjQUFjLEVBQUU7d0JBQ1osZ0JBQWdCO3dCQUNoQjs0QkFDSSxTQUFTLEVBQUUsZUFBZTs0QkFDMUIsTUFBTSxFQUFFLENBQUMscUJBQXFCLEVBQUUscUJBQXFCLENBQUM7eUJBQ3pEO3dCQUNEOzRCQUNJLFNBQVMsRUFBRSxrQkFBa0I7NEJBQzdCLE1BQU0sRUFBRSxDQUFDLHFCQUFxQixDQUFDOzRCQUMvQixPQUFPLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQzt5QkFDekM7cUJBQ0o7aUJBQ0o7OEJBT1UsT0FBTztzQkFEYixLQUFLO3VCQUFDLG1CQUFtQjtnQkFJbkIsVUFBVTtzQkFEaEIsS0FBSzt1QkFBQyxzQkFBc0I7Z0JBVWxCLFVBQVU7c0JBRHBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7T25EZXN0cm95fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtEaXJlY3RpdmUsIGluamVjdCwgSU5KRUNUT1IsIElucHV0LCBzaWduYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge2N1aUluamVjdEVsZW1lbnQsIEN1aUFjdGl2ZVpvbmV9IGZyb20gJ0BjdWJ5LXVpL2Nkayc7XHJcbmltcG9ydCB0eXBlIHtDdWlSZWN0QWNjZXNzb3IsIEN1aVZlaGljbGUgfSBmcm9tICcuLi8uLi9jbGFzc2VzJztcclxuaW1wb3J0IHtjdWlBc1JlY3RBY2Nlc3NvciwgY3VpQXNWZWhpY2xlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcyc7XHJcbmltcG9ydCB0eXBlIHtDdWlQb3J0YWxJdGVtfSBmcm9tICcuLi8uLi90eXBlcyc7XHJcbmltcG9ydCB0eXBlIHtQb2x5bW9ycGhldXNDb250ZW50fSBmcm9tICdAdGFpZ2EtdWkvcG9seW1vcnBoZXVzJztcclxuaW1wb3J0IHtQb2x5bW9ycGhldXNDb21wb25lbnR9IGZyb20gJ0B0YWlnYS11aS9wb2x5bW9ycGhldXMnO1xyXG5cclxuaW1wb3J0IHtDVUlfVE9PTFRJUF9DT01QT05FTlR9IGZyb20gJy4vdG9vbHRpcC5wcm92aWRlcnMnO1xyXG5pbXBvcnQge0N1aVRvb2x0aXBTZXJ2aWNlfSBmcm9tICcuL3Rvb2x0aXAuc2VydmljZSc7XHJcbmltcG9ydCB7Q3VpVG9vbHRpcERyaXZlcn0gZnJvbSAnLi90b29sdGlwLWRyaXZlci5kaXJlY3RpdmUnO1xyXG5pbXBvcnQge0N1aVRvb2x0aXBIb3Zlcn0gZnJvbSAnLi90b29sdGlwLWhvdmVyLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7Q1VJX1RPT0xUSVBfT1BUSU9OU30gZnJvbSAnLi90b29sdGlwLW9wdGlvbnMuZGlyZWN0aXZlJztcclxuaW1wb3J0IHtDdWlUb29sdGlwUG9zaXRpb259IGZyb20gJy4vdG9vbHRpcC1wb3NpdGlvbi5kaXJlY3RpdmUnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgc2VsZWN0b3I6ICdbY3VpVG9vbHRpcF06bm90KG5nLWNvbnRhaW5lcik6bm90KG5nLXRlbXBsYXRlKScsXHJcbiAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICBjdWlBc1JlY3RBY2Nlc3NvcihDdWlUb29sdGlwRGlyZWN0aXZlKSxcclxuICAgICAgICBjdWlBc1ZlaGljbGUoQ3VpVG9vbHRpcERpcmVjdGl2ZSksXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBwcm92aWRlOiBQb2x5bW9ycGhldXNDb21wb25lbnQsXHJcbiAgICAgICAgICAgIGRlcHM6IFtDVUlfVE9PTFRJUF9DT01QT05FTlQsIElOSkVDVE9SXSxcclxuICAgICAgICAgICAgdXNlQ2xhc3M6IFBvbHltb3JwaGV1c0NvbXBvbmVudCxcclxuICAgICAgICB9LFxyXG4gICAgXSxcclxuICAgIGhvc3REaXJlY3RpdmVzOiBbXHJcbiAgICAgICAgQ3VpVG9vbHRpcERyaXZlcixcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGRpcmVjdGl2ZTogQ3VpVG9vbHRpcEhvdmVyLFxyXG4gICAgICAgICAgICBpbnB1dHM6IFsnY3VpVG9vbHRpcEhpZGVEZWxheScsICdjdWlUb29sdGlwU2hvd0RlbGF5J10sXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGRpcmVjdGl2ZTogQ3VpVG9vbHRpcFBvc2l0aW9uLFxyXG4gICAgICAgICAgICBpbnB1dHM6IFsnY3VpVG9vbHRpcERpcmVjdGlvbiddLFxyXG4gICAgICAgICAgICBvdXRwdXRzOiBbJ2N1aVRvb2x0aXBEaXJlY3Rpb25DaGFuZ2UnXSxcclxuICAgICAgICB9LFxyXG4gICAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEN1aVRvb2x0aXBEaXJlY3RpdmU8Qz5cclxuICAgIGltcGxlbWVudHMgT25EZXN0cm95LCBDdWlQb3J0YWxJdGVtPEM+LCBDdWlSZWN0QWNjZXNzb3IsIEN1aVZlaGljbGVcclxue1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBzZXJ2aWNlID0gaW5qZWN0KEN1aVRvb2x0aXBTZXJ2aWNlKTtcclxuXHJcbiAgICBASW5wdXQoJ2N1aVRvb2x0aXBDb250ZXh0JylcclxuICAgIHB1YmxpYyBjb250ZXh0PzogQztcclxuXHJcbiAgICBASW5wdXQoJ2N1aVRvb2x0aXBBcHBlYXJhbmNlJylcclxuICAgIHB1YmxpYyBhcHBlYXJhbmNlID0gaW5qZWN0KENVSV9UT09MVElQX09QVElPTlMpLmFwcGVhcmFuY2U7XHJcblxyXG4gICAgcHVibGljIGNvbnRlbnQgPSBzaWduYWw8UG9seW1vcnBoZXVzQ29udGVudDxDPj4obnVsbCk7XHJcbiAgICBwdWJsaWMgY29tcG9uZW50ID0gaW5qZWN0KFBvbHltb3JwaGV1c0NvbXBvbmVudDx1bmtub3duPik7XHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgZWwgPSBjdWlJbmplY3RFbGVtZW50KCk7XHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgYWN0aXZlWm9uZT8gPSBpbmplY3QoQ3VpQWN0aXZlWm9uZSwge29wdGlvbmFsOiB0cnVlfSk7XHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgdHlwZSA9ICdoaW50JztcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNldCBjdWlUb29sdGlwKGNvbnRlbnQ6IFBvbHltb3JwaGV1c0NvbnRlbnQ8Qz4pIHtcclxuICAgICAgICB0aGlzLmNvbnRlbnQuc2V0KGNvbnRlbnQpO1xyXG5cclxuICAgICAgICBpZiAoIWNvbnRlbnQpIHtcclxuICAgICAgICAgICAgdGhpcy50b2dnbGUoZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy50b2dnbGUoZmFsc2UpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRDbGllbnRSZWN0KCk6IERPTVJlY3Qge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB0b2dnbGUoc2hvdzogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIGlmIChzaG93ICYmIHRoaXMuY29udGVudCgpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VydmljZS5hZGQodGhpcyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLnJlbW92ZSh0aGlzKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19
|