@ember-eui/core 10.0.3 → 10.0.4
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/declarations/components/eui-accordion.d.ts +1 -1
- package/declarations/components/eui-accordion.d.ts.map +1 -1
- package/declarations/components/eui-code-block.d.ts +1 -1
- package/declarations/components/eui-code-block.d.ts.map +1 -1
- package/declarations/components/eui-combo-box.d.ts +15 -2
- package/declarations/components/eui-combo-box.d.ts.map +1 -1
- package/declarations/components/eui-comment.d.ts +2 -2
- package/declarations/components/eui-comment.d.ts.map +1 -1
- package/declarations/components/eui-empty-prompt.d.ts.map +1 -1
- package/declarations/components/eui-markdown-editor.d.ts.map +1 -1
- package/declarations/components/eui-markdown-format.d.ts +3 -3
- package/declarations/components/eui-markdown-format.d.ts.map +1 -1
- package/declarations/components/eui-notification-badge.d.ts +1 -1
- package/declarations/components/eui-notification-badge.d.ts.map +1 -1
- package/declarations/components/eui-popover.d.ts +12 -1
- package/declarations/components/eui-popover.d.ts.map +1 -1
- package/declarations/components/eui-portal.d.ts +2 -2
- package/declarations/components/eui-portal.d.ts.map +1 -1
- package/declarations/components/eui-super-date-picker/date-popover/eui-date-popover-button.d.ts +16 -3
- package/declarations/components/eui-super-date-picker/date-popover/eui-date-popover-button.d.ts.map +1 -1
- package/declarations/components/eui-super-date-picker/date-popover/eui-date-popover-content.d.ts +1 -0
- package/declarations/components/eui-super-date-picker/date-popover/eui-date-popover-content.d.ts.map +1 -1
- package/declarations/components/eui-super-date-picker/eui-quick-select-popover.d.ts +3 -0
- package/declarations/components/eui-super-date-picker/eui-quick-select-popover.d.ts.map +1 -1
- package/declarations/components/eui-super-date-picker/utils/index.d.ts +2 -2
- package/declarations/components/eui-super-date-picker/utils/index.d.ts.map +1 -1
- package/declarations/components/eui-super-date-picker/utils/pretty-duration.d.ts.map +1 -1
- package/declarations/components/eui-super-date-picker.d.ts +11 -2
- package/declarations/components/eui-super-date-picker.d.ts.map +1 -1
- package/declarations/helpers/arg-or-default.d.ts.map +1 -1
- package/declarations/helpers/cast-to.d.ts.map +1 -1
- package/declarations/helpers/class-names.d.ts.map +1 -1
- package/declarations/helpers/nullish.d.ts.map +1 -1
- package/declarations/helpers/type-of.d.ts.map +1 -1
- package/declarations/helpers/use-state.d.ts.map +1 -1
- package/declarations/modifiers/resize-observer.d.ts +1 -1
- package/declarations/modifiers/resize-observer.d.ts.map +1 -1
- package/declarations/services/eui-i18n.d.ts.map +1 -1
- package/declarations/utils/code/utils.d.ts.map +1 -1
- package/declarations/utils/color/eui_palettes.d.ts.map +1 -1
- package/declarations/utils/css-mappings/eui-avatar.d.ts +1 -1
- package/declarations/utils/markdown/markdown-actions.d.ts +1 -1
- package/declarations/utils/markdown/markdown-types.d.ts.map +1 -1
- package/declarations/utils/markdown/plugins/markdown-add-components/processor.d.ts.map +1 -1
- package/declarations/utils/markdown/plugins/markdown-default-plugins/parsing-plugins.d.ts +1 -1
- package/declarations/utils/markdown/plugins/markdown-default-plugins/parsing-plugins.d.ts.map +1 -1
- package/declarations/utils/markdown/plugins/markdown-default-plugins/plugins.d.ts +1 -1
- package/declarations/utils/markdown/plugins/markdown-default-plugins/ui-plugins.d.ts +1 -1
- package/declarations/utils/markdown/plugins/markdown-default-plugins/ui-plugins.d.ts.map +1 -1
- package/declarations/utils/maybe-unwrap-proxy.d.ts +3 -1
- package/declarations/utils/maybe-unwrap-proxy.d.ts.map +1 -1
- package/declarations/utils/popover/index.d.ts +3 -1
- package/declarations/utils/popover/index.d.ts.map +1 -1
- package/declarations/utils/predicate/common_predicates.d.ts.map +1 -1
- package/declarations/utils/predicate/lodash_predicates.d.ts.map +1 -1
- package/declarations/utils/transition.d.ts.map +1 -1
- package/dist/components/eui-accordion.js +1 -1
- package/dist/components/eui-accordion.js.map +1 -1
- package/dist/components/eui-auto-sizer.js.map +1 -1
- package/dist/components/eui-avatar.js.map +1 -1
- package/dist/components/eui-badge-group.js.map +1 -1
- package/dist/components/eui-badge.js.map +1 -1
- package/dist/components/eui-beta-badge.js.map +1 -1
- package/dist/components/eui-bottom-bar.js.map +1 -1
- package/dist/components/eui-breadcrumbs.js.map +1 -1
- package/dist/components/eui-button-content.js.map +1 -1
- package/dist/components/eui-button-empty.js.map +1 -1
- package/dist/components/eui-button-group-button.js.map +1 -1
- package/dist/components/eui-button-group.js.map +1 -1
- package/dist/components/eui-button-icon.js.map +1 -1
- package/dist/components/eui-button.js.map +1 -1
- package/dist/components/eui-call-out.js.map +1 -1
- package/dist/components/eui-card-select.js.map +1 -1
- package/dist/components/eui-card.js.map +1 -1
- package/dist/components/eui-checkable-card.js.map +1 -1
- package/dist/components/eui-checkbox-group.js.map +1 -1
- package/dist/components/eui-checkbox.js.map +1 -1
- package/dist/components/eui-code-block/controls.js.map +1 -1
- package/dist/components/eui-code-block/full-screen-display.js.map +1 -1
- package/dist/components/eui-code-block/virtualized.js.map +1 -1
- package/dist/components/eui-code-block.js.map +1 -1
- package/dist/components/eui-code.js.map +1 -1
- package/dist/components/eui-collapsible-nav-group.js.map +1 -1
- package/dist/components/eui-collapsible-nav.js.map +1 -1
- package/dist/components/eui-combo-box/create-option.js.map +1 -1
- package/dist/components/eui-combo-box/group.js.map +1 -1
- package/dist/components/eui-combo-box/no-matches-message.js.map +1 -1
- package/dist/components/eui-combo-box/options.js.map +1 -1
- package/dist/components/eui-combo-box/search-message.js.map +1 -1
- package/dist/components/eui-combo-box/trigger/input.js.map +1 -1
- package/dist/components/eui-combo-box/trigger.js.map +1 -1
- package/dist/components/eui-combo-box-pill.js.map +1 -1
- package/dist/components/eui-combo-box.js.map +1 -1
- package/dist/components/eui-comment-list.js.map +1 -1
- package/dist/components/eui-comment-timeline.js.map +1 -1
- package/dist/components/eui-comment.js.map +1 -1
- package/dist/components/eui-confirm-modal.js.map +1 -1
- package/dist/components/eui-context-menu-item.js.map +1 -1
- package/dist/components/eui-context-menu-panel.js.map +1 -1
- package/dist/components/eui-copy.js.map +1 -1
- package/dist/components/eui-described-form-group.js.map +1 -1
- package/dist/components/eui-description-list-description.js.map +1 -1
- package/dist/components/eui-description-list-title.js.map +1 -1
- package/dist/components/eui-description-list.js.map +1 -1
- package/dist/components/eui-dual-range.js.map +1 -1
- package/dist/components/eui-empty-prompt.js +1 -1
- package/dist/components/eui-empty-prompt.js.map +1 -1
- package/dist/components/eui-field-number.js.map +1 -1
- package/dist/components/eui-field-password.js.map +1 -1
- package/dist/components/eui-field-search.js.map +1 -1
- package/dist/components/eui-field-text.js.map +1 -1
- package/dist/components/eui-file-picker.js.map +1 -1
- package/dist/components/eui-flex-grid.js.map +1 -1
- package/dist/components/eui-flex-group.js.map +1 -1
- package/dist/components/eui-flex-item.js.map +1 -1
- package/dist/components/eui-flyout-body.js.map +1 -1
- package/dist/components/eui-flyout-footer.js.map +1 -1
- package/dist/components/eui-flyout-header.js.map +1 -1
- package/dist/components/eui-flyout.js.map +1 -1
- package/dist/components/eui-form-control-layout-clear-button.js.map +1 -1
- package/dist/components/eui-form-control-layout-custom-icon.js.map +1 -1
- package/dist/components/eui-form-control-layout-delimited.js.map +1 -1
- package/dist/components/eui-form-control-layout-icons.js.map +1 -1
- package/dist/components/eui-form-control-layout.js.map +1 -1
- package/dist/components/eui-form-error-text.js.map +1 -1
- package/dist/components/eui-form-fieldset.js.map +1 -1
- package/dist/components/eui-form-help-text.js.map +1 -1
- package/dist/components/eui-form-label.js.map +1 -1
- package/dist/components/eui-form-legend.js.map +1 -1
- package/dist/components/eui-form-row.js.map +1 -1
- package/dist/components/eui-form.js.map +1 -1
- package/dist/components/eui-global-toast-list.js.map +1 -1
- package/dist/components/eui-header-alert.js.map +1 -1
- package/dist/components/eui-header-breadcrumbs.js.map +1 -1
- package/dist/components/eui-header-link.js.map +1 -1
- package/dist/components/eui-header-links.js.map +1 -1
- package/dist/components/eui-header-logo.js.map +1 -1
- package/dist/components/eui-header-section-item-button.js.map +1 -1
- package/dist/components/eui-header-section-item.js.map +1 -1
- package/dist/components/eui-header-section.js.map +1 -1
- package/dist/components/eui-header.js.map +1 -1
- package/dist/components/eui-health.js.map +1 -1
- package/dist/components/eui-hide-for.js.map +1 -1
- package/dist/components/eui-horizontal-rule.js.map +1 -1
- package/dist/components/eui-i18n/render.js.map +1 -1
- package/dist/components/eui-i18n.js.map +1 -1
- package/dist/components/eui-icon-tip.js.map +1 -1
- package/dist/components/eui-icon.js.map +1 -1
- package/dist/components/eui-image.js.map +1 -1
- package/dist/components/eui-inner-text.js.map +1 -1
- package/dist/components/eui-input-popover.js.map +1 -1
- package/dist/components/eui-key-pad-menu-item.js.map +1 -1
- package/dist/components/eui-key-pad-menu.js.map +1 -1
- package/dist/components/eui-link.js.map +1 -1
- package/dist/components/eui-list-group-item.js.map +1 -1
- package/dist/components/eui-list-group.js.map +1 -1
- package/dist/components/eui-loading-content.js.map +1 -1
- package/dist/components/eui-loading-logo.js.map +1 -1
- package/dist/components/eui-loading-spinner.js.map +1 -1
- package/dist/components/eui-markdown-editor-drop-zone.js.map +1 -1
- package/dist/components/eui-markdown-editor-footer/icons/markdown-logo.js.map +1 -1
- package/dist/components/eui-markdown-editor-footer.js.map +1 -1
- package/dist/components/eui-markdown-editor-text-area.js.map +1 -1
- package/dist/components/eui-markdown-editor-toolbar/icons/markdown-checkmark.js.map +1 -1
- package/dist/components/eui-markdown-editor-toolbar.js.map +1 -1
- package/dist/components/eui-markdown-editor.js +1 -0
- package/dist/components/eui-markdown-editor.js.map +1 -1
- package/dist/components/eui-markdown-format/markdown-checkbox.js.map +1 -1
- package/dist/components/eui-markdown-format/markdown-code-block.js.map +1 -1
- package/dist/components/eui-markdown-format/markdown-code.js.map +1 -1
- package/dist/components/eui-markdown-format/markdown-tooltip.js.map +1 -1
- package/dist/components/eui-markdown-format.js +1 -0
- package/dist/components/eui-markdown-format.js.map +1 -1
- package/dist/components/eui-modal-body.js.map +1 -1
- package/dist/components/eui-modal-footer.js.map +1 -1
- package/dist/components/eui-modal-header-title.js.map +1 -1
- package/dist/components/eui-modal-header.js.map +1 -1
- package/dist/components/eui-modal.js.map +1 -1
- package/dist/components/eui-notification-badge.js.map +1 -1
- package/dist/components/eui-notification-event-messages.js.map +1 -1
- package/dist/components/eui-notification-event-meta.js.map +1 -1
- package/dist/components/eui-notification-event-read-button.js.map +1 -1
- package/dist/components/eui-notification-event-read-icon.js.map +1 -1
- package/dist/components/eui-notification-event.js.map +1 -1
- package/dist/components/eui-overlay-mask.js.map +1 -1
- package/dist/components/eui-page-body.js.map +1 -1
- package/dist/components/eui-page-content-body.js.map +1 -1
- package/dist/components/eui-page-content-header-section.js.map +1 -1
- package/dist/components/eui-page-content-header.js.map +1 -1
- package/dist/components/eui-page-content.js.map +1 -1
- package/dist/components/eui-page-header-content.js.map +1 -1
- package/dist/components/eui-page-header-section.js.map +1 -1
- package/dist/components/eui-page-header.js.map +1 -1
- package/dist/components/eui-page-side-bar.js.map +1 -1
- package/dist/components/eui-page-template.js.map +1 -1
- package/dist/components/eui-page.js.map +1 -1
- package/dist/components/eui-pagination/button-wrapper.js.map +1 -1
- package/dist/components/eui-pagination/next-button.js.map +1 -1
- package/dist/components/eui-pagination/previous-button.js.map +1 -1
- package/dist/components/eui-pagination-button.js.map +1 -1
- package/dist/components/eui-pagination.js.map +1 -1
- package/dist/components/eui-panel.js.map +1 -1
- package/dist/components/eui-popover-footer.js.map +1 -1
- package/dist/components/eui-popover-title.js.map +1 -1
- package/dist/components/eui-popover.js +34 -2
- package/dist/components/eui-popover.js.map +1 -1
- package/dist/components/eui-portal.js +2 -2
- package/dist/components/eui-portal.js.map +1 -1
- package/dist/components/eui-progress.js.map +1 -1
- package/dist/components/eui-radio-group.js.map +1 -1
- package/dist/components/eui-radio.js.map +1 -1
- package/dist/components/eui-range-highlight.js.map +1 -1
- package/dist/components/eui-range-input.js.map +1 -1
- package/dist/components/eui-range-label.js.map +1 -1
- package/dist/components/eui-range-levels.js.map +1 -1
- package/dist/components/eui-range-slider.js.map +1 -1
- package/dist/components/eui-range-thumb.js.map +1 -1
- package/dist/components/eui-range-ticks.js.map +1 -1
- package/dist/components/eui-range-tooltip.js.map +1 -1
- package/dist/components/eui-range-track.js.map +1 -1
- package/dist/components/eui-range-wrapper.js.map +1 -1
- package/dist/components/eui-range.js.map +1 -1
- package/dist/components/eui-select.js.map +1 -1
- package/dist/components/eui-selectable-list-item.js.map +1 -1
- package/dist/components/eui-show-for.js.map +1 -1
- package/dist/components/eui-side-nav-item/button.js.map +1 -1
- package/dist/components/eui-side-nav-item.js.map +1 -1
- package/dist/components/eui-side-nav.js.map +1 -1
- package/dist/components/eui-spacer.js.map +1 -1
- package/dist/components/eui-split-panel/inner.js.map +1 -1
- package/dist/components/eui-split-panel/outer.js.map +1 -1
- package/dist/components/eui-stat/description.js.map +1 -1
- package/dist/components/eui-stat/title.js.map +1 -1
- package/dist/components/eui-stat.js.map +1 -1
- package/dist/components/eui-step-horizontal.js.map +1 -1
- package/dist/components/eui-step-number.js.map +1 -1
- package/dist/components/eui-step.js.map +1 -1
- package/dist/components/eui-steps-horizontal.js.map +1 -1
- package/dist/components/eui-steps.js.map +1 -1
- package/dist/components/eui-sub-steps.js.map +1 -1
- package/dist/components/eui-super-date-picker/date-popover/absolute-tab.js.map +1 -1
- package/dist/components/eui-super-date-picker/date-popover/datetime-picker.js.map +1 -1
- package/dist/components/eui-super-date-picker/date-popover/eui-date-popover-button.js +15 -3
- package/dist/components/eui-super-date-picker/date-popover/eui-date-popover-button.js.map +1 -1
- package/dist/components/eui-super-date-picker/date-popover/eui-date-popover-content.js +5 -1
- package/dist/components/eui-super-date-picker/date-popover/eui-date-popover-content.js.map +1 -1
- package/dist/components/eui-super-date-picker/date-popover/now-tab.js.map +1 -1
- package/dist/components/eui-super-date-picker/date-popover/relative-tab.js.map +1 -1
- package/dist/components/eui-super-date-picker/eui-date-picker-range.js.map +1 -1
- package/dist/components/eui-super-date-picker/eui-quick-select-popover/eui-commonly-used-time-ranges.js.map +1 -1
- package/dist/components/eui-super-date-picker/eui-quick-select-popover/eui-quick-select.js.map +1 -1
- package/dist/components/eui-super-date-picker/eui-quick-select-popover/eui-recently-used.js.map +1 -1
- package/dist/components/eui-super-date-picker/eui-quick-select-popover.js +10 -1
- package/dist/components/eui-super-date-picker/eui-quick-select-popover.js.map +1 -1
- package/dist/components/eui-super-date-picker/eui-super-update-button.js.map +1 -1
- package/dist/components/eui-super-date-picker/utils/index.js +1 -1
- package/dist/components/eui-super-date-picker/utils/index.js.map +1 -1
- package/dist/components/eui-super-date-picker.js.map +1 -1
- package/dist/components/eui-switch.js.map +1 -1
- package/dist/components/eui-tab.js.map +1 -1
- package/dist/components/eui-tabbed-content.js.map +1 -1
- package/dist/components/eui-tabs.js.map +1 -1
- package/dist/components/eui-text-align.js.map +1 -1
- package/dist/components/eui-text-area.js.map +1 -1
- package/dist/components/eui-text-color.js.map +1 -1
- package/dist/components/eui-text.js.map +1 -1
- package/dist/components/eui-title.js.map +1 -1
- package/dist/components/eui-toast.js.map +1 -1
- package/dist/components/eui-tool-tip-popover.js.map +1 -1
- package/dist/components/eui-tool-tip.js.map +1 -1
- package/dist/components/text-block.js.map +1 -1
- package/dist/utils/popover/index.js +17 -0
- package/dist/utils/popover/index.js.map +1 -1
- package/package.json +6 -10
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eui-tool-tip-popover.js","sources":["../../src/components/eui-tool-tip-popover.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport Component from '@glimmer/component';\nimport { fn } from '@ember/helper';\nimport { action } from '@ember/object';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\nimport willDestroy from '@ember/render-modifiers/modifiers/will-destroy';\nimport type { CommonArgs } from './common.ts';\ntype EuiTooltipPopoverArgs = CommonArgs & {\n positionToolTip: () => void;\n title?: Component;\n popoverRef?: (ref: HTMLDivElement | null) => void;\n hasTitle?: boolean;\n};\nexport interface EuiTooltipPopoverSignature {\n Element: HTMLDivElement;\n Args: EuiTooltipPopoverArgs;\n Blocks: {\n default: [];\n title: [];\n content: [];\n };\n}\nexport default class EuiTooltipPopover extends Component<EuiTooltipPopoverSignature> {\n popover: HTMLDivElement | null = null;\n constructor(owner1: unknown, args1: EuiTooltipPopoverArgs){\n super(owner1, args1);\n document.body.classList.add('euiBody-hasPortalContent');\n window.addEventListener('resize', this.updateDimensions);\n window.addEventListener('scroll', this.updateDimensions, true);\n }\n willDestroy(): void {\n super.willDestroy();\n document.body.classList.remove('euiBody-hasPortalContent');\n window.removeEventListener('resize', this.updateDimensions);\n window.removeEventListener('scroll', this.updateDimensions, true);\n }\n @action\n setPopoverRef(popover1: HTMLDivElement | null): void {\n this.popover = popover1;\n if (this.args.popoverRef) {\n this.args.popoverRef(popover1);\n }\n }\n @action\n updateDimensions(): void {\n requestAnimationFrame(()=>{\n // Because of this delay, sometimes `positionToolTip` becomes unavailable.\n if (this.popover) {\n this.args.positionToolTip();\n }\n });\n }\n static{\n template(`\n <div\n class=\"euiToolTipPopover\"\n {{didInsert this.setPopoverRef}}\n {{willDestroy (fn this.setPopoverRef null)}}\n ...attributes\n >\n {{#if @hasTitle}}\n <div class=\"euiToolTip__title\">\n {{yield to=\"title\"}}\n </div>\n {{/if}}\n {{yield to=\"content\"}}\n </div>\n `, {\n component: this,\n eval () {\n return eval(arguments[0]);\n }\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
{"version":3,"file":"eui-tool-tip-popover.js","sources":["../../src/components/eui-tool-tip-popover.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport Component from '@glimmer/component';\nimport { fn } from '@ember/helper';\nimport { action } from '@ember/object';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\nimport willDestroy from '@ember/render-modifiers/modifiers/will-destroy';\nimport type { CommonArgs } from './common.ts';\ntype EuiTooltipPopoverArgs = CommonArgs & {\n positionToolTip: () => void;\n title?: Component;\n popoverRef?: (ref: HTMLDivElement | null) => void;\n hasTitle?: boolean;\n};\nexport interface EuiTooltipPopoverSignature {\n Element: HTMLDivElement;\n Args: EuiTooltipPopoverArgs;\n Blocks: {\n default: [];\n title: [];\n content: [];\n };\n}\nexport default class EuiTooltipPopover extends Component<EuiTooltipPopoverSignature> {\n popover: HTMLDivElement | null = null;\n constructor(owner1: unknown, args1: EuiTooltipPopoverArgs){\n super(owner1, args1);\n document.body.classList.add('euiBody-hasPortalContent');\n window.addEventListener('resize', this.updateDimensions);\n window.addEventListener('scroll', this.updateDimensions, true);\n }\n willDestroy(): void {\n super.willDestroy();\n document.body.classList.remove('euiBody-hasPortalContent');\n window.removeEventListener('resize', this.updateDimensions);\n window.removeEventListener('scroll', this.updateDimensions, true);\n }\n @action\n setPopoverRef(popover1: HTMLDivElement | null): void {\n this.popover = popover1;\n if (this.args.popoverRef) {\n this.args.popoverRef(popover1);\n }\n }\n @action\n updateDimensions(): void {\n requestAnimationFrame(()=>{\n // Because of this delay, sometimes `positionToolTip` becomes unavailable.\n if (this.popover) {\n this.args.positionToolTip();\n }\n });\n }\n static{\n template(`\n <div\n class=\"euiToolTipPopover\"\n {{didInsert this.setPopoverRef}}\n {{willDestroy (fn this.setPopoverRef null)}}\n ...attributes\n >\n {{#if @hasTitle}}\n <div class=\"euiToolTip__title\">\n {{yield to=\"title\"}}\n </div>\n {{/if}}\n {{yield to=\"content\"}}\n </div>\n `, {\n component: this,\n eval () {\n return eval(arguments[0]);\n }\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9iZXRvY2FudHU5My9vcGVuc291cmNlL2VtYmVyLWV1aS9wYWNrYWdlcy9jb3JlL3NyYy9jb21wb25lbnRzL2V1aS10b29sLXRpcC1wb3BvdmVyLmd0cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29tcG9uZW50IGZyb20gJ0BnbGltbWVyL2NvbXBvbmVudCc7XG5pbXBvcnQgeyBmbiB9IGZyb20gJ0BlbWJlci9oZWxwZXInO1xuaW1wb3J0IHsgYWN0aW9uIH0gZnJvbSAnQGVtYmVyL29iamVjdCc7XG5pbXBvcnQgZGlkSW5zZXJ0IGZyb20gJ0BlbWJlci9yZW5kZXItbW9kaWZpZXJzL21vZGlmaWVycy9kaWQtaW5zZXJ0JztcbmltcG9ydCB3aWxsRGVzdHJveSBmcm9tICdAZW1iZXIvcmVuZGVyLW1vZGlmaWVycy9tb2RpZmllcnMvd2lsbC1kZXN0cm95JztcblxuaW1wb3J0IHR5cGUgeyBDb21tb25BcmdzIH0gZnJvbSAnLi9jb21tb24udHMnO1xuXG50eXBlIEV1aVRvb2x0aXBQb3BvdmVyQXJncyA9IENvbW1vbkFyZ3MgJiB7XG4gICAgcG9zaXRpb25Ub29sVGlwOiAoKSA9PiB2b2lkO1xuICAgIHRpdGxlPzogQ29tcG9uZW50O1xuICAgIHBvcG92ZXJSZWY_OiAocmVmOiBIVE1MRGl2RWxlbWVudCB8IG51bGwpID0-IHZvaWQ7XG4gICAgaGFzVGl0bGU_OiBib29sZWFuO1xuICB9O1xuXG5leHBvcnQgaW50ZXJmYWNlIEV1aVRvb2x0aXBQb3BvdmVyU2lnbmF0dXJlIHtcbiAgRWxlbWVudDogSFRNTERpdkVsZW1lbnQ7XG4gIEFyZ3M6IEV1aVRvb2x0aXBQb3BvdmVyQXJncztcbiAgQmxvY2tzOiB7XG4gICAgZGVmYXVsdDogW107XG4gICAgdGl0bGU6IFtdO1xuICAgIGNvbnRlbnQ6IFtdO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFdWlUb29sdGlwUG9wb3ZlciBleHRlbmRzIENvbXBvbmVudDxFdWlUb29sdGlwUG9wb3ZlclNpZ25hdHVyZT4ge1xuICBwb3BvdmVyOiBIVE1MRGl2RWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKG93bmVyOiB1bmtub3duLCBhcmdzOiBFdWlUb29sdGlwUG9wb3ZlckFyZ3MpIHtcbiAgICBzdXBlcihvd25lciwgYXJncyk7XG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCdldWlCb2R5LWhhc1BvcnRhbENvbnRlbnQnKTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy51cGRhdGVEaW1lbnNpb25zKTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy51cGRhdGVEaW1lbnNpb25zLCB0cnVlKTtcbiAgfVxuXG4gIHdpbGxEZXN0cm95KCk6IHZvaWQge1xuICAgIHN1cGVyLndpbGxEZXN0cm95KCk7XG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCdldWlCb2R5LWhhc1BvcnRhbENvbnRlbnQnKTtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy51cGRhdGVEaW1lbnNpb25zKTtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy51cGRhdGVEaW1lbnNpb25zLCB0cnVlKTtcbiAgfVxuXG4gIEBhY3Rpb25cbiAgc2V0UG9wb3ZlclJlZihwb3BvdmVyOiBIVE1MRGl2RWxlbWVudCB8IG51bGwpOiB2b2lkIHtcbiAgICB0aGlzLnBvcG92ZXIgPSBwb3BvdmVyO1xuXG4gICAgaWYgKHRoaXMuYXJncy5wb3BvdmVyUmVmKSB7XG4gICAgICB0aGlzLmFyZ3MucG9wb3ZlclJlZihwb3BvdmVyKTtcbiAgICB9XG4gIH1cblxuICBAYWN0aW9uXG4gIHVwZGF0ZURpbWVuc2lvbnMoKTogdm9pZCB7XG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0-IHtcbiAgICAgIC8vIEJlY2F1c2Ugb2YgdGhpcyBkZWxheSwgc29tZXRpbWVzIGBwb3NpdGlvblRvb2xUaXBgIGJlY29tZXMgdW5hdmFpbGFibGUuXG4gICAgICBpZiAodGhpcy5wb3BvdmVyKSB7XG4gICAgICAgIHRoaXMuYXJncy5wb3NpdGlvblRvb2xUaXAoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIDx0ZW1wbGF0ZT5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImV1aVRvb2xUaXBQb3BvdmVyXCJcbiAgICAgIHt7ZGlkSW5zZXJ0IHRoaXMuc2V0UG9wb3ZlclJlZn19XG4gICAgICB7e3dpbGxEZXN0cm95IChmbiB0aGlzLnNldFBvcG92ZXJSZWYgbnVsbCl9fVxuICAgICAgLi4uYXR0cmlidXRlc1xuICAgID5cbiAgICAgIHt7I2lmIEBoYXNUaXRsZX19XG4gICAgICAgIDxkaXYgY2xhc3M9XCJldWlUb29sVGlwX190aXRsZVwiPlxuICAgICAgICAgIHt7eWllbGQgdG89XCJ0aXRsZVwifX1cbiAgICAgICAgPC9kaXY-XG4gICAgICB7ey9pZn19XG4gICAgICB7e3lpZWxkIHRvPVwiY29udGVudFwifX1cbiAgICA8L2Rpdj5cbiAgPC90ZW1wbGF0ZT5cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxlQUFlLHFCQUFxQjtBQUMzQyxTQUFTLEVBQUUsUUFBUSxnQkFBZ0I7QUFDbkMsU0FBUyxNQUFNLFFBQVEsZ0JBQWdCO0FBQ3ZDLE9BQU8sZUFBZSwrQ0FBK0M7QUFDckUsT0FBTyxpQkFBaUIsaURBQWlEO0FBRXpFLGNBQWMsVUFBVSxRQUFRLGNBQWM7S0FFekMsd0JBQXdCO0lBQ3pCLHVCQUF1QixJQUFJO0lBQzNCLFFBQVE7SUFDUixjQUFjLEtBQUssaUJBQWlCLElBQUksS0FBSyxJQUFJO0lBQ2pELFdBQVcsT0FBTzs7QUFHdEIsaUJBQWlCO0lBQ2YsU0FBUztJQUNULE1BQU07SUFDTjtRQUNFO1FBQ0E7UUFDQTs7O0FBSUosZUFBZSxNQUFNLDBCQUEwQixVQUFVO0lBQ3ZELFNBQVMsaUJBQWlCLElBQUksR0FBRyxLQUFLO0lBRXRDLFlBQVksUUFBTyxPQUFPLEVBQUUsT0FBTSxxQkFBcUIsQ0FBRTtRQUN2RCxLQUFLLENBQUMsUUFBTztRQUNiLFNBQVMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUM7UUFDNUIsT0FBTyxnQkFBZ0IsQ0FBQyxVQUFVLElBQUksQ0FBQyxnQkFBZ0I7UUFDdkQsT0FBTyxnQkFBZ0IsQ0FBQyxVQUFVLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtJQUMzRDtJQUVBLGVBQWUsSUFBSSxDQUFDO1FBQ2xCLEtBQUssQ0FBQztRQUNOLFNBQVMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7UUFDL0IsT0FBTyxtQkFBbUIsQ0FBQyxVQUFVLElBQUksQ0FBQyxnQkFBZ0I7UUFDMUQsT0FBTyxtQkFBbUIsQ0FBQyxVQUFVLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtJQUM5RDtJQUVBLENBQUM7SUFDRCxjQUFjLFVBQVMsaUJBQWlCLElBQUksR0FBRyxJQUFJLENBQUM7UUFDbEQsSUFBSSxDQUFDLE9BQU8sR0FBRztRQUVmLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDdkI7SUFDRjtJQUVBLENBQUM7SUFDRCxvQkFBb0IsSUFBSSxDQUFDO1FBQ3ZCLHNCQUFzQjtZQUNwQiwwRUFBMEU7WUFDMUUsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWU7WUFDM0I7UUFDRjtJQUNGO0lBRUEsTUFBQTtRQUFBLFNBQVUsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7RUFjVixDQUFBLEVBQUE7WUFBQSxXQUFBLElBQVc7WUFBWDtnQkFBQSxPQUFBLEtBQUEsU0FBQSxDQUFBLEVBQVc7WUFBRDtRQUFBO0lBQUEsQ0FkQTtBQWVaIn0"],"names":["EuiTooltipPopover","Component","popover","constructor","owner1","args1","document","body","classList","add","window","addEventListener","updateDimensions","willDestroy","remove","removeEventListener","setPopoverRef","popover1","args","popoverRef","n","this","prototype","action","requestAnimationFrame","positionToolTip","setComponentTemplate","precompileTemplate","strictMode","scope","didInsert","fn"],"mappings":";;;;;;;;;AAyBe,MAAMA,iBAAA,SAA0BC,SAAA,CAAU;AACvDC,EAAAA,OAAA,GAAiC,IAAA,CAAA;EAEjCC,WAAYC,CAAAA,MAAc,EAAEC,KAA2B,EAAE;IACvD,KAAK,CAACD,MAAA,EAAOC,KAAA,CAAA,CAAA;AACbC,IAAAA,QAAA,CAASC,IAAI,CAACC,SAAS,CAACC,GAAG,CAAC,0BAAA,CAAA,CAAA;AAC5BC,IAAAA,MAAA,CAAOC,gBAAgB,CAAC,QAAU,EAAA,IAAI,CAACC,gBAAgB,CAAA,CAAA;AACvDF,IAAAA,MAAA,CAAOC,gBAAgB,CAAC,UAAU,IAAI,CAACC,gBAAgB,EAAE,IAAA,CAAA,CAAA;AAC3D,GAAA;AAEAC,EAAAA,WAAAA,GAAoB;AAClB,IAAA,KAAK,CAACA,WAAA,EAAA,CAAA;AACNP,IAAAA,QAAA,CAASC,IAAI,CAACC,SAAS,CAACM,MAAM,CAAC,0BAAA,CAAA,CAAA;AAC/BJ,IAAAA,MAAA,CAAOK,mBAAmB,CAAC,QAAU,EAAA,IAAI,CAACH,gBAAgB,CAAA,CAAA;AAC1DF,IAAAA,MAAA,CAAOK,mBAAmB,CAAC,UAAU,IAAI,CAACH,gBAAgB,EAAE,IAAA,CAAA,CAAA;AAC9D,GAAA;AAGAI,EAAAA,aAAAA,CAAcC,QAA8B,EAAQ;IAClD,IAAI,CAACf,OAAO,GAAGe,QAAA,CAAA;AAEf,IAAA,IAAI,IAAI,CAACC,IAAI,CAACC,UAAU,EAAE;AACxB,MAAA,IAAI,CAACD,IAAI,CAACC,UAAU,CAACF,QAAA,CAAA,CAAA;AACvB,KAAA;AACF,GAAA;AAAA,EAAA;AAAAG,IAAAA,CAAA,CAAAC,IAAA,CAAAC,SAAA,oBAPCC,MAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AAUDX,EAAAA,gBAAAA,GAAyB;AACvBY,IAAAA,qBAAA,CAAsB,MAAA;AACpB;MACA,IAAI,IAAI,CAACtB,OAAO,EAAE;QAChB,IAAI,CAACgB,IAAI,CAACO,eAAe,EAAA,CAAA;AAC3B,OAAA;AACF,KAAA,CAAA,CAAA;AACF,GAAA;AAAA,EAAA;AAAAL,IAAAA,CAAA,CAAAC,IAAA,CAAAC,SAAA,uBARCC,MAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AAUD,EAAA;IAAAG,oBAAA,CAAAC,kBAAA,CAcA,0TAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,SAAA;QAAAjB,WAAA;AAAAkB,QAAAA,EAAAA;AAAA,OAAA,CAAA;AAAU,KAAA,CAAA,EAAV,IAAW,CAAA,CAAA;AAAD,GAAA;AACZ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eui-tool-tip.js","sources":["../../src/components/eui-tool-tip.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport Component from '@glimmer/component';\nimport { cached, tracked } from '@glimmer/tracking';\nimport { on } from '@ember/modifier';\nimport { action } from '@ember/object';\nimport { guidFor } from '@ember/object/internals';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\nimport didUpdate from '@ember/render-modifiers/modifiers/did-insert';\nimport { cancel, later, next, scheduleOnce } from '@ember/runloop';\nimport style from 'ember-style-modifier/modifiers/style';\nimport { and, eq, or } from 'ember-truth-helpers';\nimport argOrDefault, { argOrDefaultDecorator } from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport resizeObserver from '../modifiers/resize-observer.ts';\nimport { keys } from '../utils/keys.ts';\nimport { findPopoverPosition } from '../utils/popover/index.ts';\nimport EuiPortal from './eui-portal.gts';\nimport EuiToolTipPopover from './eui-tool-tip-popover.gts';\nimport type { EuiTooltipPopoverSignature } from './eui-tool-tip-popover';\nexport type ToolTipPositions = 'top' | 'right' | 'bottom' | 'left';\nexport type ToolTipDelay = 'regular' | 'long';\nconst delayToMsMap: {\n [key in ToolTipDelay]: number;\n} = {\n regular: 250,\n long: 250 * 5\n};\ninterface ToolTipStyles {\n top: string;\n left: string | 'auto';\n right?: string | 'auto';\n opacity?: string;\n visibility?: 'hidden';\n display?: 'inlineBlock';\n}\nconst displayToClassNameMap = {\n inlineBlock: undefined,\n block: 'euiToolTipAnchor--displayBlock'\n};\nconst DEFAULT_TOOLTIP_STYLES: ToolTipStyles = {\n // position the tooltip content near the top-left\n // corner of the window so it can't create scrollbars\n // 50,50 because who knows what negative margins, padding, etc\n top: '50px',\n left: '50px',\n // just in case, avoid any potential flicker by hiding\n // the tooltip before it is positioned\n opacity: '0',\n // prevent accidental mouse interaction while positioning\n visibility: 'hidden',\n display: 'inlineBlock'\n};\nexport type EuiTooltipArgs = {\n /**\n * Passes onto the the trigger.\n */ anchorClassName?: string;\n /**\n * Passes onto the tooltip itself, not the trigger.\n */ className?: string;\n /**\n * The main content of your tooltip.\n */ content?: string;\n /**\n * Common display alternatives for the anchor wrapper\n */ display?: keyof typeof displayToClassNameMap;\n /**\n * Delay before showing tooltip. Good for repeatable items.\n */ delay?: ToolTipDelay;\n /**\n * An optional title for your tooltip.\n */ title?: string;\n /**\n * Unless you provide one, this will be randomly generated.\n */ id?: string;\n /**\n * Suggested position. If there is not enough room for it this will be changed.\n */ position?: ToolTipPositions;\n attachTo?: undefined | HTMLElement | string | null;\n isShown?: boolean | undefined;\n /**\n * If supplied, called when mouse movement causes the tool tip to be\n * hidden.\n */ onMouseOut?: (event: MouseEvent) => void;\n onFocus?: () => void;\n onBlur?: () => void;\n hasTitle?: boolean;\n};\nexport interface EuiToolTipSignature {\n Element: EuiTooltipPopoverSignature['Element'];\n Args: EuiTooltipArgs;\n Blocks: {\n default?: [id: string];\n title?: [];\n content?: [];\n anchor?: [id: string];\n };\n}\nexport default class EuiToolTip extends Component<EuiToolTipSignature> {\n anchor: null | HTMLElement = null;\n popover: null | HTMLElement = null;\n @argOrDefaultDecorator('top')\n position: ToolTipPositions;\n @argOrDefaultDecorator('regular')\n delay: ToolTipDelay;\n //STATE\n @tracked\n visible = false;\n @tracked\n hasFocus = false;\n @tracked\n calculatedPosition: ToolTipPositions = this.position;\n @tracked\n toolTipStyles: ToolTipStyles = DEFAULT_TOOLTIP_STYLES;\n @tracked\n arrowStyles: {\n left?: string;\n top?: string;\n } = {};\n @tracked\n id: string = this.args.id || guidFor({});\n @tracked\n _attachTo: undefined | HTMLElement | string | null = null;\n private timeoutId?: ReturnType<typeof later>;\n @action\n updateAttachTo(): void {\n if (!this.args.attachTo && this._attachTo) {\n this.removeAttachToHandlers();\n this._attachTo = null;\n return;\n }\n if (this.args.attachTo && this.args.attachTo !== this._attachTo) {\n next(()=>{\n this.removeAttachToHandlers();\n this._attachTo = this.args.attachTo;\n this.setupAttachToHandlers();\n });\n }\n }\n @action\n setupAttachToHandlers(): void {\n if (this._attachTo && this.attachTo) {\n this.attachTo.addEventListener('mousemove', this.showToolTip);\n this.attachTo.addEventListener('focusin', this.onFocus);\n //@ts-expect-error\n this.attachTo.addEventListener('mouseout', this.onMouseOut);\n this.attachTo.addEventListener('focusout', this.onBlur);\n this.positionToolTip();\n }\n }\n @action\n removeAttachToHandlers(): void {\n if (this._attachTo && this.attachTo) {\n this.attachTo.removeEventListener('mousemove', this.showToolTip);\n this.attachTo.removeEventListener('focusin', this.onFocus);\n //@ts-expect-error\n this.attachTo.removeEventListener('mouseout', this.onMouseOut);\n this.attachTo.removeEventListener('focusout', this.onBlur);\n }\n }\n @action\n clearAnimationTimeout(): void {\n if (this.timeoutId) {\n cancel(this.timeoutId);\n this.timeoutId = undefined;\n }\n }\n @action\n visibleDidUpdate(value1: boolean): void {\n if (this.visible === false && value1 === true) {\n requestAnimationFrame(this.testAnchor);\n }\n }\n willDestroy(): void {\n super.willDestroy();\n this.clearAnimationTimeout();\n this.removeAttachToHandlers();\n }\n @action\n testAnchor(): void {\n // when the tooltip is visible, this checks if the anchor is still part of document\n // this fixes when the react root is removed from the dom without unmounting\n // https://github.com/elastic/eui/issues/1105\n if (document.body.contains(this._anchor) === false) {\n // the anchor is no longer part of `document`\n this.hideToolTip();\n } else {\n if (this.visible) {\n // if still visible, keep checking\n requestAnimationFrame(this.testAnchor);\n }\n }\n }\n @action\n didInsertAnchor(ref1: HTMLElement): void {\n this.anchor = ref1;\n }\n @action\n setPopoverRef(ref1: HTMLElement | null): void {\n this.popover = ref1;\n // if the popover has been unmounted, clear\n // any previous knowledge about its size\n if (ref1 === null) {\n this.toolTipStyles = DEFAULT_TOOLTIP_STYLES;\n this.arrowStyles = {};\n } else {\n this.positionToolTip();\n }\n }\n @action\n showToolTip(): void {\n if (!this.timeoutId && !this.visible) {\n const fn1 = (): void =>{\n this.visible = true;\n };\n this.timeoutId = later(this, ()=>{\n scheduleOnce('afterRender', this, fn1);\n }, delayToMsMap[this.delay]);\n }\n }\n @cached\n get attachTo(): Element | null | undefined {\n if (typeof this._attachTo === 'string') {\n return document.querySelector(this._attachTo);\n } else {\n return this._attachTo;\n }\n }\n get _anchor(): Element | null {\n return this.attachTo || this.anchor;\n }\n @action\n positionToolTip(): void {\n const requestedPosition1 = this.position;\n if (!this._anchor || !this.popover) {\n return;\n }\n const { position: position1, left: left1, top: top1, arrow: arrow1 } = findPopoverPosition({\n anchor: this._anchor as HTMLElement,\n popover: this.popover,\n position: requestedPosition1,\n offset: 16,\n arrowConfig: {\n arrowWidth: 12,\n arrowBuffer: 4\n }\n });\n const windowWidth1 = document.documentElement.clientWidth || window.innerWidth;\n const useRightValue1 = windowWidth1 / 2 < left1;\n const toolTipStyles1: ToolTipStyles = {\n top: `${top1}px`,\n left: useRightValue1 ? 'auto' : `${left1}px`,\n right: useRightValue1 ? `${windowWidth1 - left1 - this.popover.offsetWidth}px` : 'auto'\n };\n this.visible = true;\n this.calculatedPosition = position1;\n this.toolTipStyles = toolTipStyles1;\n if (arrow1) {\n this.arrowStyles = {\n left: `${arrow1.left}px`,\n top: `${arrow1?.top}px`\n };\n }\n }\n @action\n hideToolTip(): void {\n if (this.args.isShown === true) {\n return;\n }\n this.clearAnimationTimeout();\n const fn1 = (): void =>{\n if (!this.isDestroying || !this.isDestroyed) {\n this.visible = false;\n }\n };\n scheduleOnce('afterRender', this, fn1);\n }\n @action\n hasFocusMouseMoveListener(): void {\n this.hideToolTip();\n window.removeEventListener('mousemove', this.hasFocusMouseMoveListener);\n }\n @action\n onKeyUp(event1: KeyboardEvent): void {\n if (event1.key === keys.TAB) {\n window.addEventListener('mousemove', this.hasFocusMouseMoveListener);\n }\n }\n @action\n onFocus(): void {\n this.hasFocus = true;\n this.showToolTip();\n }\n @action\n onBlur(): void {\n this.hasFocus = false;\n this.hideToolTip();\n }\n @action\n onMouseOut(event1: MouseEvent): void {\n // Prevent mousing over children from hiding the tooltip by testing for whether the mouse has\n // left the anchor for a non-child.\n if (this._anchor === event1.relatedTarget || (this._anchor != null && !this._anchor.contains(event1.relatedTarget as Node))) {\n if (!this.hasFocus) {\n this.hideToolTip();\n }\n }\n if (this.args.onMouseOut) {\n this.args.onMouseOut(event1);\n }\n }\n static{\n template(`\n {{#let\n (has-block \"content\") (has-block \"title\") (has-block \"anchor\")\n as |hasContentBlock hasTitleBlock hasAnchorBlock|\n }}\n {{#if @attachTo}}\n <span\n {{didInsert this.updateAttachTo}}\n {{didUpdate this.updateAttachTo @attachTo}}\n {{didUpdate\n (if (eq @isShown true) this.onFocus this.onBlur)\n @isShown\n }}\n {{didInsert (if (eq @isShown true) this.onFocus this.onBlur)}}\n ></span>\n {{else}}\n <span\n role=\"tooltip\"\n class={{classNames\n \"euiToolTipAnchor\"\n (if (eq @display \"block\") \"euiToolTipAnchor--displayBlock\")\n @anchorClassName\n }}\n {{didInsert this.didInsertAnchor}}\n {{on \"mouseover\" this.showToolTip}}\n {{on \"focusin\" this.onFocus}}\n {{on \"focusout\" this.onBlur}}\n {{on \"mouseout\" this.onMouseOut}}\n {{didUpdate\n (if (eq @isShown true) this.onFocus this.onBlur)\n @isShown\n }}\n {{didInsert (if (eq @isShown true) this.onFocus this.onBlur)}}\n >\n {{#if hasAnchorBlock}}\n {{yield this.id to=\"anchor\"}}\n {{else}}\n {{yield this.id}}\n {{/if}}\n </span>\n {{/if}}\n {{#if\n (and this.visible (or @title @content hasContentBlock hasTitleBlock))\n }}\n <EuiPortal>\n <EuiToolTipPopover\n class={{classNames\n \"euiToolTip\"\n @className\n componentName=\"EuiToolTip\"\n position=this.calculatedPosition\n }}\n @positionToolTip={{this.positionToolTip}}\n @popoverRef={{this.setPopoverRef}}\n id={{this.id}}\n @hasTitle={{if\n (and (argOrDefault @hasTitle true) (or hasTitleBlock @title))\n true\n }}\n role=\"tooltip\"\n ...attributes\n {{style this.toolTipStyles}}\n >\n <:title>\n {{#if hasTitleBlock}}\n {{yield to=\"title\"}}\n {{else}}\n {{@title}}\n {{/if}}\n </:title>\n <:content>\n <div class=\"euiToolTip__arrow\" {{style this.arrowStyles}}></div>\n <div {{resizeObserver onResize=this.positionToolTip}}>\n {{#if hasContentBlock}}\n {{yield to=\"content\"}}\n {{else}}\n {{@content}}\n {{/if}}\n </div>\n </:content>\n </EuiToolTipPopover>\n </EuiPortal>\n {{/if}}\n {{/let}}\n `, {\n component: this,\n eval () {\n return eval(arguments[0]);\n }\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9iZXRvY2FudHU5My9wcnlzbWV4L2VtYmVyLWV1aS9wYWNrYWdlcy9jb3JlL3NyYy9jb21wb25lbnRzL2V1aS10b29sLXRpcC5ndHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENvbXBvbmVudCBmcm9tICdAZ2xpbW1lci9jb21wb25lbnQnO1xuaW1wb3J0IHsgY2FjaGVkLCB0cmFja2VkIH0gZnJvbSAnQGdsaW1tZXIvdHJhY2tpbmcnO1xuaW1wb3J0IHsgb24gfSBmcm9tICdAZW1iZXIvbW9kaWZpZXInO1xuaW1wb3J0IHsgYWN0aW9uIH0gZnJvbSAnQGVtYmVyL29iamVjdCc7XG5pbXBvcnQgeyBndWlkRm9yIH0gZnJvbSAnQGVtYmVyL29iamVjdC9pbnRlcm5hbHMnO1xuaW1wb3J0IGRpZEluc2VydCBmcm9tICdAZW1iZXIvcmVuZGVyLW1vZGlmaWVycy9tb2RpZmllcnMvZGlkLWluc2VydCc7XG5pbXBvcnQgZGlkVXBkYXRlIGZyb20gJ0BlbWJlci9yZW5kZXItbW9kaWZpZXJzL21vZGlmaWVycy9kaWQtaW5zZXJ0JztcbmltcG9ydCB7IGNhbmNlbCwgbGF0ZXIsIG5leHQsIHNjaGVkdWxlT25jZSB9IGZyb20gJ0BlbWJlci9ydW5sb29wJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJ2VtYmVyLXN0eWxlLW1vZGlmaWVyL21vZGlmaWVycy9zdHlsZSc7XG5pbXBvcnQgeyBhbmQsIGVxLCBvciB9IGZyb20gJ2VtYmVyLXRydXRoLWhlbHBlcnMnO1xuXG5pbXBvcnQgYXJnT3JEZWZhdWx0LCB7IGFyZ09yRGVmYXVsdERlY29yYXRvciB9IGZyb20gJy4uL2hlbHBlcnMvYXJnLW9yLWRlZmF1bHQudHMnO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnLi4vaGVscGVycy9jbGFzcy1uYW1lcy50cyc7XG5pbXBvcnQgcmVzaXplT2JzZXJ2ZXIgZnJvbSAnLi4vbW9kaWZpZXJzL3Jlc2l6ZS1vYnNlcnZlci50cyc7XG5pbXBvcnQgeyBrZXlzIH0gZnJvbSAnLi4vdXRpbHMva2V5cy50cyc7XG5pbXBvcnQgeyBmaW5kUG9wb3ZlclBvc2l0aW9uIH0gZnJvbSAnLi4vdXRpbHMvcG9wb3Zlci9pbmRleC50cyc7XG5pbXBvcnQgRXVpUG9ydGFsIGZyb20gJy4vZXVpLXBvcnRhbC5ndHMnO1xuaW1wb3J0IEV1aVRvb2xUaXBQb3BvdmVyIGZyb20gJy4vZXVpLXRvb2wtdGlwLXBvcG92ZXIuZ3RzJztcblxuaW1wb3J0IHR5cGUgeyBFdWlUb29sdGlwUG9wb3ZlclNpZ25hdHVyZSB9IGZyb20gJy4vZXVpLXRvb2wtdGlwLXBvcG92ZXInO1xuXG5leHBvcnQgdHlwZSBUb29sVGlwUG9zaXRpb25zID0gJ3RvcCcgfCAncmlnaHQnIHwgJ2JvdHRvbScgfCAnbGVmdCc7XG5cbmV4cG9ydCB0eXBlIFRvb2xUaXBEZWxheSA9ICdyZWd1bGFyJyB8ICdsb25nJztcblxuY29uc3QgZGVsYXlUb01zTWFwOiB7IFtrZXkgaW4gVG9vbFRpcERlbGF5XTogbnVtYmVyIH0gPSB7XG4gIHJlZ3VsYXI6IDI1MCxcbiAgbG9uZzogMjUwICogNVxufTtcblxuaW50ZXJmYWNlIFRvb2xUaXBTdHlsZXMge1xuICB0b3A6IHN0cmluZztcbiAgbGVmdDogc3RyaW5nIHwgJ2F1dG8nO1xuICByaWdodD86IHN0cmluZyB8ICdhdXRvJztcbiAgb3BhY2l0eT86IHN0cmluZztcbiAgdmlzaWJpbGl0eT86ICdoaWRkZW4nO1xuICBkaXNwbGF5PzogJ2lubGluZUJsb2NrJztcbn1cblxuY29uc3QgZGlzcGxheVRvQ2xhc3NOYW1lTWFwID0ge1xuICBpbmxpbmVCbG9jazogdW5kZWZpbmVkLFxuICBibG9jazogJ2V1aVRvb2xUaXBBbmNob3ItLWRpc3BsYXlCbG9jaydcbn07XG5cbmNvbnN0IERFRkFVTFRfVE9PTFRJUF9TVFlMRVM6IFRvb2xUaXBTdHlsZXMgPSB7XG4gIC8vIHBvc2l0aW9uIHRoZSB0b29sdGlwIGNvbnRlbnQgbmVhciB0aGUgdG9wLWxlZnRcbiAgLy8gY29ybmVyIG9mIHRoZSB3aW5kb3cgc28gaXQgY2FuJ3QgY3JlYXRlIHNjcm9sbGJhcnNcbiAgLy8gNTAsNTAgYmVjYXVzZSB3aG8ga25vd3Mgd2hhdCBuZWdhdGl2ZSBtYXJnaW5zLCBwYWRkaW5nLCBldGNcbiAgdG9wOiAnNTBweCcsXG4gIGxlZnQ6ICc1MHB4JyxcbiAgLy8ganVzdCBpbiBjYXNlLCBhdm9pZCBhbnkgcG90ZW50aWFsIGZsaWNrZXIgYnkgaGlkaW5nXG4gIC8vIHRoZSB0b29sdGlwIGJlZm9yZSBpdCBpcyBwb3NpdGlvbmVkXG4gIG9wYWNpdHk6ICcwJyxcbiAgLy8gcHJldmVudCBhY2NpZGVudGFsIG1vdXNlIGludGVyYWN0aW9uIHdoaWxlIHBvc2l0aW9uaW5nXG4gIHZpc2liaWxpdHk6ICdoaWRkZW4nLFxuICBkaXNwbGF5OiAnaW5saW5lQmxvY2snXG59O1xuXG5leHBvcnQgdHlwZSBFdWlUb29sdGlwQXJncyA9IHtcbiAgLyoqXG4gICAqIFBhc3NlcyBvbnRvIHRoZSB0aGUgdHJpZ2dlci5cbiAgICovXG4gIGFuY2hvckNsYXNzTmFtZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFBhc3NlcyBvbnRvIHRoZSB0b29sdGlwIGl0c2VsZiwgbm90IHRoZSB0cmlnZ2VyLlxuICAgKi9cbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIG1haW4gY29udGVudCBvZiB5b3VyIHRvb2x0aXAuXG4gICAqL1xuICBjb250ZW50Pzogc3RyaW5nO1xuICAvKipcbiAgICogQ29tbW9uIGRpc3BsYXkgYWx0ZXJuYXRpdmVzIGZvciB0aGUgYW5jaG9yIHdyYXBwZXJcbiAgICovXG4gIGRpc3BsYXk_OiBrZXlvZiB0eXBlb2YgZGlzcGxheVRvQ2xhc3NOYW1lTWFwO1xuICAvKipcbiAgICogRGVsYXkgYmVmb3JlIHNob3dpbmcgdG9vbHRpcC4gR29vZCBmb3IgcmVwZWF0YWJsZSBpdGVtcy5cbiAgICovXG4gIGRlbGF5PzogVG9vbFRpcERlbGF5O1xuICAvKipcbiAgICogQW4gb3B0aW9uYWwgdGl0bGUgZm9yIHlvdXIgdG9vbHRpcC5cbiAgICovXG4gIHRpdGxlPzogc3RyaW5nO1xuICAvKipcbiAgICogVW5sZXNzIHlvdSBwcm92aWRlIG9uZSwgdGhpcyB3aWxsIGJlIHJhbmRvbWx5IGdlbmVyYXRlZC5cbiAgICovXG4gIGlkPzogc3RyaW5nO1xuICAvKipcbiAgICogU3VnZ2VzdGVkIHBvc2l0aW9uLiBJZiB0aGVyZSBpcyBub3QgZW5vdWdoIHJvb20gZm9yIGl0IHRoaXMgd2lsbCBiZSBjaGFuZ2VkLlxuICAgKi9cbiAgcG9zaXRpb24_OiBUb29sVGlwUG9zaXRpb25zO1xuXG4gIGF0dGFjaFRvPzogdW5kZWZpbmVkIHwgSFRNTEVsZW1lbnQgfCBzdHJpbmcgfCBudWxsO1xuXG4gIGlzU2hvd24_OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBJZiBzdXBwbGllZCwgY2FsbGVkIHdoZW4gbW91c2UgbW92ZW1lbnQgY2F1c2VzIHRoZSB0b29sIHRpcCB0byBiZVxuICAgKiBoaWRkZW4uXG4gICAqL1xuICBvbk1vdXNlT3V0PzogKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB2b2lkO1xuICBvbkZvY3VzPzogKCkgPT4gdm9pZDtcbiAgb25CbHVyPzogKCkgPT4gdm9pZDtcblxuICBoYXNUaXRsZT86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIEV1aVRvb2xUaXBTaWduYXR1cmUge1xuICBFbGVtZW50OiBFdWlUb29sdGlwUG9wb3ZlclNpZ25hdHVyZVsnRWxlbWVudCddO1xuICBBcmdzOiBFdWlUb29sdGlwQXJncztcbiAgQmxvY2tzOiB7XG4gICAgZGVmYXVsdD86IFtpZDogc3RyaW5nXTtcbiAgICB0aXRsZT86IFtdO1xuICAgIGNvbnRlbnQ_OiBbXTtcbiAgICBhbmNob3I_OiBbaWQ6IHN0cmluZ107XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEV1aVRvb2xUaXAgZXh0ZW5kcyBDb21wb25lbnQ8RXVpVG9vbFRpcFNpZ25hdHVyZT4ge1xuICBhbmNob3I6IG51bGwgfCBIVE1MRWxlbWVudCA9IG51bGw7XG4gIHBvcG92ZXI6IG51bGwgfCBIVE1MRWxlbWVudCA9IG51bGw7XG5cbiAgQGFyZ09yRGVmYXVsdERlY29yYXRvcigndG9wJykgcG9zaXRpb24hOiBUb29sVGlwUG9zaXRpb25zO1xuICBAYXJnT3JEZWZhdWx0RGVjb3JhdG9yKCdyZWd1bGFyJykgZGVsYXkhOiBUb29sVGlwRGVsYXk7XG5cbiAgLy9TVEFURVxuICBAdHJhY2tlZCB2aXNpYmxlID0gZmFsc2U7XG4gIEB0cmFja2VkIGhhc0ZvY3VzID0gZmFsc2U7XG4gIEB0cmFja2VkIGNhbGN1bGF0ZWRQb3NpdGlvbjogVG9vbFRpcFBvc2l0aW9ucyA9IHRoaXMucG9zaXRpb247XG4gIEB0cmFja2VkIHRvb2xUaXBTdHlsZXM6IFRvb2xUaXBTdHlsZXMgPSBERUZBVUxUX1RPT0xUSVBfU1RZTEVTO1xuICBAdHJhY2tlZCBhcnJvd1N0eWxlczogeyBsZWZ0Pzogc3RyaW5nOyB0b3A_OiBzdHJpbmcgfSA9IHt9O1xuICBAdHJhY2tlZCBpZDogc3RyaW5nID0gdGhpcy5hcmdzLmlkIHx8IGd1aWRGb3Ioe30pO1xuICBAdHJhY2tlZCBfYXR0YWNoVG86IHVuZGVmaW5lZCB8IEhUTUxFbGVtZW50IHwgc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSB0aW1lb3V0SWQ_OiBSZXR1cm5UeXBlPHR5cGVvZiBsYXRlcj47XG5cbiAgQGFjdGlvblxuICB1cGRhdGVBdHRhY2hUbygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuYXJncy5hdHRhY2hUbyAmJiB0aGlzLl9hdHRhY2hUbykge1xuICAgICAgdGhpcy5yZW1vdmVBdHRhY2hUb0hhbmRsZXJzKCk7XG4gICAgICB0aGlzLl9hdHRhY2hUbyA9IG51bGw7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hcmdzLmF0dGFjaFRvICYmIHRoaXMuYXJncy5hdHRhY2hUbyAhPT0gdGhpcy5fYXR0YWNoVG8pIHtcbiAgICAgIG5leHQoKCkgPT4ge1xuICAgICAgICB0aGlzLnJlbW92ZUF0dGFjaFRvSGFuZGxlcnMoKTtcbiAgICAgICAgdGhpcy5fYXR0YWNoVG8gPSB0aGlzLmFyZ3MuYXR0YWNoVG87XG4gICAgICAgIHRoaXMuc2V0dXBBdHRhY2hUb0hhbmRsZXJzKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBAYWN0aW9uXG4gIHNldHVwQXR0YWNoVG9IYW5kbGVycygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fYXR0YWNoVG8gJiYgdGhpcy5hdHRhY2hUbykge1xuICAgICAgdGhpcy5hdHRhY2hUby5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCB0aGlzLnNob3dUb29sVGlwKTtcbiAgICAgIHRoaXMuYXR0YWNoVG8uYWRkRXZlbnRMaXN0ZW5lcignZm9jdXNpbicsIHRoaXMub25Gb2N1cyk7XG4gICAgICAvL0B0cy1leHBlY3QtZXJyb3JcbiAgICAgIHRoaXMuYXR0YWNoVG8uYWRkRXZlbnRMaXN0ZW5lcignbW91c2VvdXQnLCB0aGlzLm9uTW91c2VPdXQpO1xuICAgICAgdGhpcy5hdHRhY2hUby5hZGRFdmVudExpc3RlbmVyKCdmb2N1c291dCcsIHRoaXMub25CbHVyKTtcbiAgICAgIHRoaXMucG9zaXRpb25Ub29sVGlwKCk7XG4gICAgfVxuICB9XG5cbiAgQGFjdGlvblxuICByZW1vdmVBdHRhY2hUb0hhbmRsZXJzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9hdHRhY2hUbyAmJiB0aGlzLmF0dGFjaFRvKSB7XG4gICAgICB0aGlzLmF0dGFjaFRvLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMuc2hvd1Rvb2xUaXApO1xuICAgICAgdGhpcy5hdHRhY2hUby5yZW1vdmVFdmVudExpc3RlbmVyKCdmb2N1c2luJywgdGhpcy5vbkZvY3VzKTtcbiAgICAgIC8vQHRzLWV4cGVjdC1lcnJvclxuICAgICAgdGhpcy5hdHRhY2hUby5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW91dCcsIHRoaXMub25Nb3VzZU91dCk7XG4gICAgICB0aGlzLmF0dGFjaFRvLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2ZvY3Vzb3V0JywgdGhpcy5vbkJsdXIpO1xuICAgIH1cbiAgfVxuXG4gIEBhY3Rpb25cbiAgY2xlYXJBbmltYXRpb25UaW1lb3V0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRpbWVvdXRJZCkge1xuICAgICAgY2FuY2VsKHRoaXMudGltZW91dElkKTtcbiAgICAgIHRoaXMudGltZW91dElkID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIEBhY3Rpb25cbiAgdmlzaWJsZURpZFVwZGF0ZSh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLnZpc2libGUgPT09IGZhbHNlICYmIHZhbHVlID09PSB0cnVlKSB7XG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy50ZXN0QW5jaG9yKTtcbiAgICB9XG4gIH1cblxuICB3aWxsRGVzdHJveSgpOiB2b2lkIHtcbiAgICBzdXBlci53aWxsRGVzdHJveSgpO1xuICAgIHRoaXMuY2xlYXJBbmltYXRpb25UaW1lb3V0KCk7XG4gICAgdGhpcy5yZW1vdmVBdHRhY2hUb0hhbmRsZXJzKCk7XG4gIH1cblxuICBAYWN0aW9uXG4gIHRlc3RBbmNob3IoKTogdm9pZCB7XG4gICAgLy8gd2hlbiB0aGUgdG9vbHRpcCBpcyB2aXNpYmxlLCB0aGlzIGNoZWNrcyBpZiB0aGUgYW5jaG9yIGlzIHN0aWxsIHBhcnQgb2YgZG9jdW1lbnRcbiAgICAvLyB0aGlzIGZpeGVzIHdoZW4gdGhlIHJlYWN0IHJvb3QgaXMgcmVtb3ZlZCBmcm9tIHRoZSBkb20gd2l0aG91dCB1bm1vdW50aW5nXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2VsYXN0aWMvZXVpL2lzc3Vlcy8xMTA1XG4gICAgaWYgKGRvY3VtZW50LmJvZHkuY29udGFpbnModGhpcy5fYW5jaG9yKSA9PT0gZmFsc2UpIHtcbiAgICAgIC8vIHRoZSBhbmNob3IgaXMgbm8gbG9uZ2VyIHBhcnQgb2YgYGRvY3VtZW50YFxuICAgICAgdGhpcy5oaWRlVG9vbFRpcCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy52aXNpYmxlKSB7XG4gICAgICAgIC8vIGlmIHN0aWxsIHZpc2libGUsIGtlZXAgY2hlY2tpbmdcbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMudGVzdEFuY2hvcik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGFjdGlvblxuICBkaWRJbnNlcnRBbmNob3IocmVmOiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIHRoaXMuYW5jaG9yID0gcmVmO1xuICB9XG5cbiAgQGFjdGlvblxuICBzZXRQb3BvdmVyUmVmKHJlZjogSFRNTEVsZW1lbnQgfCBudWxsKTogdm9pZCB7XG4gICAgdGhpcy5wb3BvdmVyID0gcmVmO1xuXG4gICAgLy8gaWYgdGhlIHBvcG92ZXIgaGFzIGJlZW4gdW5tb3VudGVkLCBjbGVhclxuICAgIC8vIGFueSBwcmV2aW91cyBrbm93bGVkZ2UgYWJvdXQgaXRzIHNpemVcbiAgICBpZiAocmVmID09PSBudWxsKSB7XG4gICAgICB0aGlzLnRvb2xUaXBTdHlsZXMgPSBERUZBVUxUX1RPT0xUSVBfU1RZTEVTO1xuICAgICAgdGhpcy5hcnJvd1N0eWxlcyA9IHt9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnBvc2l0aW9uVG9vbFRpcCgpO1xuICAgIH1cbiAgfVxuXG4gIEBhY3Rpb25cbiAgc2hvd1Rvb2xUaXAoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnRpbWVvdXRJZCAmJiAhdGhpcy52aXNpYmxlKSB7XG4gICAgICBjb25zdCBmbiA9ICgpOiB2b2lkID0-IHtcbiAgICAgICAgdGhpcy52aXNpYmxlID0gdHJ1ZTtcbiAgICAgIH07XG5cbiAgICAgIHRoaXMudGltZW91dElkID0gbGF0ZXIoXG4gICAgICAgIHRoaXMsXG4gICAgICAgICgpID0-IHtcbiAgICAgICAgICBzY2hlZHVsZU9uY2UoJ2FmdGVyUmVuZGVyJywgdGhpcywgZm4pO1xuICAgICAgICB9LFxuICAgICAgICBkZWxheVRvTXNNYXBbdGhpcy5kZWxheV1cbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgQGNhY2hlZFxuICBnZXQgYXR0YWNoVG8oKTogRWxlbWVudCB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIGlmICh0eXBlb2YgdGhpcy5fYXR0YWNoVG8gPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0aGlzLl9hdHRhY2hUbyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLl9hdHRhY2hUbztcbiAgICB9XG4gIH1cblxuICBnZXQgX2FuY2hvcigpOiBFbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuYXR0YWNoVG8gfHwgdGhpcy5hbmNob3I7XG4gIH1cblxuICBAYWN0aW9uXG4gIHBvc2l0aW9uVG9vbFRpcCgpOiB2b2lkIHtcbiAgICBjb25zdCByZXF1ZXN0ZWRQb3NpdGlvbiA9IHRoaXMucG9zaXRpb247XG5cbiAgICBpZiAoIXRoaXMuX2FuY2hvciB8fCAhdGhpcy5wb3BvdmVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgeyBwb3NpdGlvbiwgbGVmdCwgdG9wLCBhcnJvdyB9ID0gZmluZFBvcG92ZXJQb3NpdGlvbih7XG4gICAgICBhbmNob3I6IHRoaXMuX2FuY2hvciBhcyBIVE1MRWxlbWVudCxcbiAgICAgIHBvcG92ZXI6IHRoaXMucG9wb3ZlcixcbiAgICAgIHBvc2l0aW9uOiByZXF1ZXN0ZWRQb3NpdGlvbixcbiAgICAgIG9mZnNldDogMTYsIC8vIG9mZnNldCBwb3BvdmVyIDE2cHggZnJvbSB0aGUgYW5jaG9yXG4gICAgICBhcnJvd0NvbmZpZzoge1xuICAgICAgICBhcnJvd1dpZHRoOiAxMixcbiAgICAgICAgYXJyb3dCdWZmZXI6IDRcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IHdpbmRvd1dpZHRoID1cbiAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCB8fCB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgICBjb25zdCB1c2VSaWdodFZhbHVlID0gd2luZG93V2lkdGggLyAyIDwgbGVmdDtcblxuICAgIGNvbnN0IHRvb2xUaXBTdHlsZXM6IFRvb2xUaXBTdHlsZXMgPSB7XG4gICAgICB0b3A6IGAke3RvcH1weGAsXG4gICAgICBsZWZ0OiB1c2VSaWdodFZhbHVlID8gJ2F1dG8nIDogYCR7bGVmdH1weGAsXG4gICAgICByaWdodDogdXNlUmlnaHRWYWx1ZVxuICAgICAgICA_IGAke3dpbmRvd1dpZHRoIC0gbGVmdCAtIHRoaXMucG9wb3Zlci5vZmZzZXRXaWR0aH1weGBcbiAgICAgICAgOiAnYXV0bydcbiAgICB9O1xuXG4gICAgdGhpcy52aXNpYmxlID0gdHJ1ZTtcbiAgICB0aGlzLmNhbGN1bGF0ZWRQb3NpdGlvbiA9IHBvc2l0aW9uO1xuICAgIHRoaXMudG9vbFRpcFN0eWxlcyA9IHRvb2xUaXBTdHlsZXM7XG5cbiAgICBpZiAoYXJyb3cpIHtcbiAgICAgIHRoaXMuYXJyb3dTdHlsZXMgPSB7XG4gICAgICAgIGxlZnQ6IGAke2Fycm93LmxlZnR9cHhgLFxuICAgICAgICB0b3A6IGAke2Fycm93Py50b3B9cHhgXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIEBhY3Rpb25cbiAgaGlkZVRvb2xUaXAoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYXJncy5pc1Nob3duID09PSB0cnVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5jbGVhckFuaW1hdGlvblRpbWVvdXQoKTtcblxuICAgIGNvbnN0IGZuID0gKCk6IHZvaWQgPT4ge1xuICAgICAgaWYgKCF0aGlzLmlzRGVzdHJveWluZyB8fCAhdGhpcy5pc0Rlc3Ryb3llZCkge1xuICAgICAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgc2NoZWR1bGVPbmNlKCdhZnRlclJlbmRlcicsIHRoaXMsIGZuKTtcbiAgfVxuXG4gIEBhY3Rpb25cbiAgaGFzRm9jdXNNb3VzZU1vdmVMaXN0ZW5lcigpOiB2b2lkIHtcbiAgICB0aGlzLmhpZGVUb29sVGlwKCk7XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMuaGFzRm9jdXNNb3VzZU1vdmVMaXN0ZW5lcik7XG4gIH1cblxuICBAYWN0aW9uXG4gIG9uS2V5VXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSBrZXlzLlRBQikge1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMuaGFzRm9jdXNNb3VzZU1vdmVMaXN0ZW5lcik7XG4gICAgfVxuICB9XG5cbiAgQGFjdGlvblxuICBvbkZvY3VzKCk6IHZvaWQge1xuICAgIHRoaXMuaGFzRm9jdXMgPSB0cnVlO1xuICAgIHRoaXMuc2hvd1Rvb2xUaXAoKTtcbiAgfVxuXG4gIEBhY3Rpb25cbiAgb25CbHVyKCk6IHZvaWQge1xuICAgIHRoaXMuaGFzRm9jdXMgPSBmYWxzZTtcbiAgICB0aGlzLmhpZGVUb29sVGlwKCk7XG4gIH1cblxuICBAYWN0aW9uXG4gIG9uTW91c2VPdXQoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAvLyBQcmV2ZW50IG1vdXNpbmcgb3ZlciBjaGlsZHJlbiBmcm9tIGhpZGluZyB0aGUgdG9vbHRpcCBieSB0ZXN0aW5nIGZvciB3aGV0aGVyIHRoZSBtb3VzZSBoYXNcbiAgICAvLyBsZWZ0IHRoZSBhbmNob3IgZm9yIGEgbm9uLWNoaWxkLlxuICAgIGlmIChcbiAgICAgIHRoaXMuX2FuY2hvciA9PT0gZXZlbnQucmVsYXRlZFRhcmdldCB8fFxuICAgICAgKHRoaXMuX2FuY2hvciAhPSBudWxsICYmXG4gICAgICAgICF0aGlzLl9hbmNob3IuY29udGFpbnMoZXZlbnQucmVsYXRlZFRhcmdldCBhcyBOb2RlKSlcbiAgICApIHtcbiAgICAgIGlmICghdGhpcy5oYXNGb2N1cykge1xuICAgICAgICB0aGlzLmhpZGVUb29sVGlwKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYXJncy5vbk1vdXNlT3V0KSB7XG4gICAgICB0aGlzLmFyZ3Mub25Nb3VzZU91dChldmVudCk7XG4gICAgfVxuICB9XG5cbiAgPHRlbXBsYXRlPlxuICAgIHt7I2xldFxuICAgICAgKGhhcy1ibG9jayBcImNvbnRlbnRcIikgKGhhcy1ibG9jayBcInRpdGxlXCIpIChoYXMtYmxvY2sgXCJhbmNob3JcIilcbiAgICAgIGFzIHxoYXNDb250ZW50QmxvY2sgaGFzVGl0bGVCbG9jayBoYXNBbmNob3JCbG9ja3xcbiAgICB9fVxuICAgICAge3sjaWYgQGF0dGFjaFRvfX1cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICB7e2RpZEluc2VydCB0aGlzLnVwZGF0ZUF0dGFjaFRvfX1cbiAgICAgICAgICB7e2RpZFVwZGF0ZSB0aGlzLnVwZGF0ZUF0dGFjaFRvIEBhdHRhY2hUb319XG4gICAgICAgICAge3tkaWRVcGRhdGVcbiAgICAgICAgICAgIChpZiAoZXEgQGlzU2hvd24gdHJ1ZSkgdGhpcy5vbkZvY3VzIHRoaXMub25CbHVyKVxuICAgICAgICAgICAgQGlzU2hvd25cbiAgICAgICAgICB9fVxuICAgICAgICAgIHt7ZGlkSW5zZXJ0IChpZiAoZXEgQGlzU2hvd24gdHJ1ZSkgdGhpcy5vbkZvY3VzIHRoaXMub25CbHVyKX19XG4gICAgICAgID48L3NwYW4-XG4gICAgICB7e2Vsc2V9fVxuICAgICAgICA8c3BhblxuICAgICAgICAgIHJvbGU9XCJ0b29sdGlwXCJcbiAgICAgICAgICBjbGFzcz17e2NsYXNzTmFtZXNcbiAgICAgICAgICAgIFwiZXVpVG9vbFRpcEFuY2hvclwiXG4gICAgICAgICAgICAoaWYgKGVxIEBkaXNwbGF5IFwiYmxvY2tcIikgXCJldWlUb29sVGlwQW5jaG9yLS1kaXNwbGF5QmxvY2tcIilcbiAgICAgICAgICAgIEBhbmNob3JDbGFzc05hbWVcbiAgICAgICAgICB9fVxuICAgICAgICAgIHt7ZGlkSW5zZXJ0IHRoaXMuZGlkSW5zZXJ0QW5jaG9yfX1cbiAgICAgICAgICB7e29uIFwibW91c2VvdmVyXCIgdGhpcy5zaG93VG9vbFRpcH19XG4gICAgICAgICAge3tvbiBcImZvY3VzaW5cIiB0aGlzLm9uRm9jdXN9fVxuICAgICAgICAgIHt7b24gXCJmb2N1c291dFwiIHRoaXMub25CbHVyfX1cbiAgICAgICAgICB7e29uIFwibW91c2VvdXRcIiB0aGlzLm9uTW91c2VPdXR9fVxuICAgICAgICAgIHt7ZGlkVXBkYXRlXG4gICAgICAgICAgICAoaWYgKGVxIEBpc1Nob3duIHRydWUpIHRoaXMub25Gb2N1cyB0aGlzLm9uQmx1cilcbiAgICAgICAgICAgIEBpc1Nob3duXG4gICAgICAgICAgfX1cbiAgICAgICAgICB7e2RpZEluc2VydCAoaWYgKGVxIEBpc1Nob3duIHRydWUpIHRoaXMub25Gb2N1cyB0aGlzLm9uQmx1cil9fVxuICAgICAgICA-XG4gICAgICAgICAge3sjaWYgaGFzQW5jaG9yQmxvY2t9fVxuICAgICAgICAgICAge3t5aWVsZCB0aGlzLmlkIHRvPVwiYW5jaG9yXCJ9fVxuICAgICAgICAgIHt7ZWxzZX19XG4gICAgICAgICAgICB7e3lpZWxkIHRoaXMuaWR9fVxuICAgICAgICAgIHt7L2lmfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAge3svaWZ9fVxuICAgICAge3sjaWZcbiAgICAgICAgKGFuZCB0aGlzLnZpc2libGUgKG9yIEB0aXRsZSBAY29udGVudCBoYXNDb250ZW50QmxvY2sgaGFzVGl0bGVCbG9jaykpXG4gICAgICB9fVxuICAgICAgICA8RXVpUG9ydGFsPlxuICAgICAgICAgIDxFdWlUb29sVGlwUG9wb3ZlclxuICAgICAgICAgICAgY2xhc3M9e3tjbGFzc05hbWVzXG4gICAgICAgICAgICAgIFwiZXVpVG9vbFRpcFwiXG4gICAgICAgICAgICAgIEBjbGFzc05hbWVcbiAgICAgICAgICAgICAgY29tcG9uZW50TmFtZT1cIkV1aVRvb2xUaXBcIlxuICAgICAgICAgICAgICBwb3NpdGlvbj10aGlzLmNhbGN1bGF0ZWRQb3NpdGlvblxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIEBwb3NpdGlvblRvb2xUaXA9e3t0aGlzLnBvc2l0aW9uVG9vbFRpcH19XG4gICAgICAgICAgICBAcG9wb3ZlclJlZj17e3RoaXMuc2V0UG9wb3ZlclJlZn19XG4gICAgICAgICAgICBpZD17e3RoaXMuaWR9fVxuICAgICAgICAgICAgQGhhc1RpdGxlPXt7aWZcbiAgICAgICAgICAgICAgKGFuZCAoYXJnT3JEZWZhdWx0IEBoYXNUaXRsZSB0cnVlKSAob3IgaGFzVGl0bGVCbG9jayBAdGl0bGUpKVxuICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgcm9sZT1cInRvb2x0aXBcIlxuICAgICAgICAgICAgLi4uYXR0cmlidXRlc1xuICAgICAgICAgICAge3tzdHlsZSB0aGlzLnRvb2xUaXBTdHlsZXN9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDw6dGl0bGU-XG4gICAgICAgICAgICAgIHt7I2lmIGhhc1RpdGxlQmxvY2t9fVxuICAgICAgICAgICAgICAgIHt7eWllbGQgdG89XCJ0aXRsZVwifX1cbiAgICAgICAgICAgICAge3tlbHNlfX1cbiAgICAgICAgICAgICAgICB7e0B0aXRsZX19XG4gICAgICAgICAgICAgIHt7L2lmfX1cbiAgICAgICAgICAgIDwvOnRpdGxlPlxuICAgICAgICAgICAgPDpjb250ZW50PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXVpVG9vbFRpcF9fYXJyb3dcIiB7e3N0eWxlIHRoaXMuYXJyb3dTdHlsZXN9fT48L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiB7e3Jlc2l6ZU9ic2VydmVyIG9uUmVzaXplPXRoaXMucG9zaXRpb25Ub29sVGlwfX0-XG4gICAgICAgICAgICAgICAge3sjaWYgaGFzQ29udGVudEJsb2NrfX1cbiAgICAgICAgICAgICAgICAgIHt7eWllbGQgdG89XCJjb250ZW50XCJ9fVxuICAgICAgICAgICAgICAgIHt7ZWxzZX19XG4gICAgICAgICAgICAgICAgICB7e0Bjb250ZW50fX1cbiAgICAgICAgICAgICAgICB7ey9pZn19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC86Y29udGVudD5cbiAgICAgICAgICA8L0V1aVRvb2xUaXBQb3BvdmVyPlxuICAgICAgICA8L0V1aVBvcnRhbD5cbiAgICAgIHt7L2lmfX1cbiAgICB7ey9sZXR9fVxuICA8L3RlbXBsYXRlPlxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLGVBQWUscUJBQXFCO0FBQzNDLFNBQVMsTUFBTSxFQUFFLE9BQU8sUUFBUSxvQkFBb0I7QUFDcEQsU0FBUyxFQUFFLFFBQVEsa0JBQWtCO0FBQ3JDLFNBQVMsTUFBTSxRQUFRLGdCQUFnQjtBQUN2QyxTQUFTLE9BQU8sUUFBUSwwQkFBMEI7QUFDbEQsT0FBTyxlQUFlLCtDQUErQztBQUNyRSxPQUFPLGVBQWUsK0NBQStDO0FBQ3JFLFNBQVMsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsWUFBWSxRQUFRLGlCQUFpQjtBQUVuRSxPQUFPLFdBQVcsdUNBQXVDO0FBQ3pELFNBQVMsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLFFBQVEsc0JBQXNCO0FBRWxELE9BQU8sZ0JBQWdCLHFCQUFxQixRQUFRLCtCQUErQjtBQUNuRixPQUFPLGdCQUFnQiw0QkFBNEI7QUFDbkQsT0FBTyxvQkFBb0Isa0NBQWtDO0FBQzdELFNBQVMsSUFBSSxRQUFRLG1CQUFtQjtBQUN4QyxTQUFTLG1CQUFtQixRQUFRLDRCQUE0QjtBQUNoRSxPQUFPLGVBQWUsbUJBQW1CO0FBQ3pDLE9BQU8sdUJBQXVCLDZCQUE2QjtBQUUzRCxjQUFjLDBCQUEwQixRQUFRLHlCQUF5QjtBQUV6RSxZQUFZLG1C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"],"names":["cached","macroCondition","dependencySatisfies","importSync","delayToMsMap","regular","long","DEFAULT_TOOLTIP_STYLES","top","left","opacity","visibility","display","EuiToolTip","Component","anchor","popover","g","this","prototype","argOrDefaultDecorator","i","void 0","tracked","position","args","id","guidFor","timeoutId","updateAttachTo","attachTo","_attachTo","removeAttachToHandlers","next","setupAttachToHandlers","n","action","addEventListener","showToolTip","onFocus","onMouseOut","onBlur","positionToolTip","removeEventListener","clearAnimationTimeout","cancel","undefined","visibleDidUpdate","value1","visible","requestAnimationFrame","testAnchor","willDestroy","document","body","contains","_anchor","hideToolTip","didInsertAnchor","ref1","setPopoverRef","toolTipStyles","arrowStyles","fn1","later","scheduleOnce","delay","querySelector","requestedPosition1","position1","left1","top1","arrow","arrow1","findPopoverPosition","offset","arrowConfig","arrowWidth","arrowBuffer","windowWidth1","documentElement","clientWidth","window","innerWidth","useRightValue1","toolTipStyles1","right","offsetWidth","calculatedPosition","isShown","isDestroying","isDestroyed","hasFocusMouseMoveListener","onKeyUp","event1","key","keys","TAB","hasFocus","relatedTarget","setComponentTemplate","precompileTemplate","strictMode","scope","didInsert","didUpdate","eq","classNames","on","and","or","EuiPortal","EuiToolTipPopover","argOrDefault","style","resizeObserver"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"eui-tool-tip.js","sources":["../../src/components/eui-tool-tip.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport Component from '@glimmer/component';\nimport { cached, tracked } from '@glimmer/tracking';\nimport { on } from '@ember/modifier';\nimport { action } from '@ember/object';\nimport { guidFor } from '@ember/object/internals';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\nimport didUpdate from '@ember/render-modifiers/modifiers/did-insert';\nimport { cancel, later, next, scheduleOnce } from '@ember/runloop';\nimport style from 'ember-style-modifier/modifiers/style';\nimport { and, eq, or } from 'ember-truth-helpers';\nimport argOrDefault, { argOrDefaultDecorator } from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport resizeObserver from '../modifiers/resize-observer.ts';\nimport { keys } from '../utils/keys.ts';\nimport { findPopoverPosition } from '../utils/popover/index.ts';\nimport EuiPortal from './eui-portal.gts';\nimport EuiToolTipPopover from './eui-tool-tip-popover.gts';\nimport type { EuiTooltipPopoverSignature } from './eui-tool-tip-popover';\nexport type ToolTipPositions = 'top' | 'right' | 'bottom' | 'left';\nexport type ToolTipDelay = 'regular' | 'long';\nconst delayToMsMap: {\n [key in ToolTipDelay]: number;\n} = {\n regular: 250,\n long: 250 * 5\n};\ninterface ToolTipStyles {\n top: string;\n left: string | 'auto';\n right?: string | 'auto';\n opacity?: string;\n visibility?: 'hidden';\n display?: 'inlineBlock';\n}\nconst displayToClassNameMap = {\n inlineBlock: undefined,\n block: 'euiToolTipAnchor--displayBlock'\n};\nconst DEFAULT_TOOLTIP_STYLES: ToolTipStyles = {\n // position the tooltip content near the top-left\n // corner of the window so it can't create scrollbars\n // 50,50 because who knows what negative margins, padding, etc\n top: '50px',\n left: '50px',\n // just in case, avoid any potential flicker by hiding\n // the tooltip before it is positioned\n opacity: '0',\n // prevent accidental mouse interaction while positioning\n visibility: 'hidden',\n display: 'inlineBlock'\n};\nexport type EuiTooltipArgs = {\n /**\n * Passes onto the the trigger.\n */ anchorClassName?: string;\n /**\n * Passes onto the tooltip itself, not the trigger.\n */ className?: string;\n /**\n * The main content of your tooltip.\n */ content?: string;\n /**\n * Common display alternatives for the anchor wrapper\n */ display?: keyof typeof displayToClassNameMap;\n /**\n * Delay before showing tooltip. Good for repeatable items.\n */ delay?: ToolTipDelay;\n /**\n * An optional title for your tooltip.\n */ title?: string;\n /**\n * Unless you provide one, this will be randomly generated.\n */ id?: string;\n /**\n * Suggested position. If there is not enough room for it this will be changed.\n */ position?: ToolTipPositions;\n attachTo?: undefined | HTMLElement | string | null;\n isShown?: boolean | undefined;\n /**\n * If supplied, called when mouse movement causes the tool tip to be\n * hidden.\n */ onMouseOut?: (event: MouseEvent) => void;\n onFocus?: () => void;\n onBlur?: () => void;\n hasTitle?: boolean;\n};\nexport interface EuiToolTipSignature {\n Element: EuiTooltipPopoverSignature['Element'];\n Args: EuiTooltipArgs;\n Blocks: {\n default?: [id: string];\n title?: [];\n content?: [];\n anchor?: [id: string];\n };\n}\nexport default class EuiToolTip extends Component<EuiToolTipSignature> {\n anchor: null | HTMLElement = null;\n popover: null | HTMLElement = null;\n @argOrDefaultDecorator('top')\n position: ToolTipPositions;\n @argOrDefaultDecorator('regular')\n delay: ToolTipDelay;\n //STATE\n @tracked\n visible = false;\n @tracked\n hasFocus = false;\n @tracked\n calculatedPosition: ToolTipPositions = this.position;\n @tracked\n toolTipStyles: ToolTipStyles = DEFAULT_TOOLTIP_STYLES;\n @tracked\n arrowStyles: {\n left?: string;\n top?: string;\n } = {};\n @tracked\n id: string = this.args.id || guidFor({});\n @tracked\n _attachTo: undefined | HTMLElement | string | null = null;\n private timeoutId?: ReturnType<typeof later>;\n @action\n updateAttachTo(): void {\n if (!this.args.attachTo && this._attachTo) {\n this.removeAttachToHandlers();\n this._attachTo = null;\n return;\n }\n if (this.args.attachTo && this.args.attachTo !== this._attachTo) {\n next(()=>{\n this.removeAttachToHandlers();\n this._attachTo = this.args.attachTo;\n this.setupAttachToHandlers();\n });\n }\n }\n @action\n setupAttachToHandlers(): void {\n if (this._attachTo && this.attachTo) {\n this.attachTo.addEventListener('mousemove', this.showToolTip);\n this.attachTo.addEventListener('focusin', this.onFocus);\n //@ts-expect-error\n this.attachTo.addEventListener('mouseout', this.onMouseOut);\n this.attachTo.addEventListener('focusout', this.onBlur);\n this.positionToolTip();\n }\n }\n @action\n removeAttachToHandlers(): void {\n if (this._attachTo && this.attachTo) {\n this.attachTo.removeEventListener('mousemove', this.showToolTip);\n this.attachTo.removeEventListener('focusin', this.onFocus);\n //@ts-expect-error\n this.attachTo.removeEventListener('mouseout', this.onMouseOut);\n this.attachTo.removeEventListener('focusout', this.onBlur);\n }\n }\n @action\n clearAnimationTimeout(): void {\n if (this.timeoutId) {\n cancel(this.timeoutId);\n this.timeoutId = undefined;\n }\n }\n @action\n visibleDidUpdate(value1: boolean): void {\n if (this.visible === false && value1 === true) {\n requestAnimationFrame(this.testAnchor);\n }\n }\n willDestroy(): void {\n super.willDestroy();\n this.clearAnimationTimeout();\n this.removeAttachToHandlers();\n }\n @action\n testAnchor(): void {\n // when the tooltip is visible, this checks if the anchor is still part of document\n // this fixes when the react root is removed from the dom without unmounting\n // https://github.com/elastic/eui/issues/1105\n if (document.body.contains(this._anchor) === false) {\n // the anchor is no longer part of `document`\n this.hideToolTip();\n } else {\n if (this.visible) {\n // if still visible, keep checking\n requestAnimationFrame(this.testAnchor);\n }\n }\n }\n @action\n didInsertAnchor(ref1: HTMLElement): void {\n this.anchor = ref1;\n }\n @action\n setPopoverRef(ref1: HTMLElement | null): void {\n this.popover = ref1;\n // if the popover has been unmounted, clear\n // any previous knowledge about its size\n if (ref1 === null) {\n this.toolTipStyles = DEFAULT_TOOLTIP_STYLES;\n this.arrowStyles = {};\n } else {\n this.positionToolTip();\n }\n }\n @action\n showToolTip(): void {\n if (!this.timeoutId && !this.visible) {\n const fn1 = (): void =>{\n this.visible = true;\n };\n this.timeoutId = later(this, ()=>{\n scheduleOnce('afterRender', this, fn1);\n }, delayToMsMap[this.delay]);\n }\n }\n @cached\n get attachTo(): Element | null | undefined {\n if (typeof this._attachTo === 'string') {\n return document.querySelector(this._attachTo);\n } else {\n return this._attachTo;\n }\n }\n get _anchor(): Element | null {\n return this.attachTo || this.anchor;\n }\n @action\n positionToolTip(): void {\n const requestedPosition1 = this.position;\n if (!this._anchor || !this.popover) {\n return;\n }\n const { position: position1, left: left1, top: top1, arrow: arrow1 } = findPopoverPosition({\n anchor: this._anchor as HTMLElement,\n popover: this.popover,\n position: requestedPosition1,\n offset: 16,\n arrowConfig: {\n arrowWidth: 12,\n arrowBuffer: 4\n }\n });\n const windowWidth1 = document.documentElement.clientWidth || window.innerWidth;\n const useRightValue1 = windowWidth1 / 2 < left1;\n const toolTipStyles1: ToolTipStyles = {\n top: `${top1}px`,\n left: useRightValue1 ? 'auto' : `${left1}px`,\n right: useRightValue1 ? `${windowWidth1 - left1 - this.popover.offsetWidth}px` : 'auto'\n };\n this.visible = true;\n this.calculatedPosition = position1;\n this.toolTipStyles = toolTipStyles1;\n if (arrow1) {\n this.arrowStyles = {\n left: `${arrow1.left}px`,\n top: `${arrow1?.top}px`\n };\n }\n }\n @action\n hideToolTip(): void {\n if (this.args.isShown === true) {\n return;\n }\n this.clearAnimationTimeout();\n const fn1 = (): void =>{\n if (!this.isDestroying || !this.isDestroyed) {\n this.visible = false;\n }\n };\n scheduleOnce('afterRender', this, fn1);\n }\n @action\n hasFocusMouseMoveListener(): void {\n this.hideToolTip();\n window.removeEventListener('mousemove', this.hasFocusMouseMoveListener);\n }\n @action\n onKeyUp(event1: KeyboardEvent): void {\n if (event1.key === keys.TAB) {\n window.addEventListener('mousemove', this.hasFocusMouseMoveListener);\n }\n }\n @action\n onFocus(): void {\n this.hasFocus = true;\n this.showToolTip();\n }\n @action\n onBlur(): void {\n this.hasFocus = false;\n this.hideToolTip();\n }\n @action\n onMouseOut(event1: MouseEvent): void {\n // Prevent mousing over children from hiding the tooltip by testing for whether the mouse has\n // left the anchor for a non-child.\n if (this._anchor === event1.relatedTarget || (this._anchor != null && !this._anchor.contains(event1.relatedTarget as Node))) {\n if (!this.hasFocus) {\n this.hideToolTip();\n }\n }\n if (this.args.onMouseOut) {\n this.args.onMouseOut(event1);\n }\n }\n static{\n template(`\n {{#let\n (has-block \"content\") (has-block \"title\") (has-block \"anchor\")\n as |hasContentBlock hasTitleBlock hasAnchorBlock|\n }}\n {{#if @attachTo}}\n <span\n {{didInsert this.updateAttachTo}}\n {{didUpdate this.updateAttachTo @attachTo}}\n {{didUpdate\n (if (eq @isShown true) this.onFocus this.onBlur)\n @isShown\n }}\n {{didInsert (if (eq @isShown true) this.onFocus this.onBlur)}}\n ></span>\n {{else}}\n <span\n role=\"tooltip\"\n class={{classNames\n \"euiToolTipAnchor\"\n (if (eq @display \"block\") \"euiToolTipAnchor--displayBlock\")\n @anchorClassName\n }}\n {{didInsert this.didInsertAnchor}}\n {{on \"mouseover\" this.showToolTip}}\n {{on \"focusin\" this.onFocus}}\n {{on \"focusout\" this.onBlur}}\n {{on \"mouseout\" this.onMouseOut}}\n {{didUpdate\n (if (eq @isShown true) this.onFocus this.onBlur)\n @isShown\n }}\n {{didInsert (if (eq @isShown true) this.onFocus this.onBlur)}}\n >\n {{#if hasAnchorBlock}}\n {{yield this.id to=\"anchor\"}}\n {{else}}\n {{yield this.id}}\n {{/if}}\n </span>\n {{/if}}\n {{#if\n (and this.visible (or @title @content hasContentBlock hasTitleBlock))\n }}\n <EuiPortal>\n <EuiToolTipPopover\n class={{classNames\n \"euiToolTip\"\n @className\n componentName=\"EuiToolTip\"\n position=this.calculatedPosition\n }}\n @positionToolTip={{this.positionToolTip}}\n @popoverRef={{this.setPopoverRef}}\n id={{this.id}}\n @hasTitle={{if\n (and (argOrDefault @hasTitle true) (or hasTitleBlock @title))\n true\n }}\n role=\"tooltip\"\n ...attributes\n {{style this.toolTipStyles}}\n >\n <:title>\n {{#if hasTitleBlock}}\n {{yield to=\"title\"}}\n {{else}}\n {{@title}}\n {{/if}}\n </:title>\n <:content>\n <div class=\"euiToolTip__arrow\" {{style this.arrowStyles}}></div>\n <div {{resizeObserver onResize=this.positionToolTip}}>\n {{#if hasContentBlock}}\n {{yield to=\"content\"}}\n {{else}}\n {{@content}}\n {{/if}}\n </div>\n </:content>\n </EuiToolTipPopover>\n </EuiPortal>\n {{/if}}\n {{/let}}\n `, {\n component: this,\n eval () {\n return eval(arguments[0]);\n }\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9iZXRvY2FudHU5My9vcGVuc291cmNlL2VtYmVyLWV1aS9wYWNrYWdlcy9jb3JlL3NyYy9jb21wb25lbnRzL2V1aS10b29sLXRpcC5ndHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENvbXBvbmVudCBmcm9tICdAZ2xpbW1lci9jb21wb25lbnQnO1xuaW1wb3J0IHsgY2FjaGVkLCB0cmFja2VkIH0gZnJvbSAnQGdsaW1tZXIvdHJhY2tpbmcnO1xuaW1wb3J0IHsgb24gfSBmcm9tICdAZW1iZXIvbW9kaWZpZXInO1xuaW1wb3J0IHsgYWN0aW9uIH0gZnJvbSAnQGVtYmVyL29iamVjdCc7XG5pbXBvcnQgeyBndWlkRm9yIH0gZnJvbSAnQGVtYmVyL29iamVjdC9pbnRlcm5hbHMnO1xuaW1wb3J0IGRpZEluc2VydCBmcm9tICdAZW1iZXIvcmVuZGVyLW1vZGlmaWVycy9tb2RpZmllcnMvZGlkLWluc2VydCc7XG5pbXBvcnQgZGlkVXBkYXRlIGZyb20gJ0BlbWJlci9yZW5kZXItbW9kaWZpZXJzL21vZGlmaWVycy9kaWQtaW5zZXJ0JztcbmltcG9ydCB7IGNhbmNlbCwgbGF0ZXIsIG5leHQsIHNjaGVkdWxlT25jZSB9IGZyb20gJ0BlbWJlci9ydW5sb29wJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJ2VtYmVyLXN0eWxlLW1vZGlmaWVyL21vZGlmaWVycy9zdHlsZSc7XG5pbXBvcnQgeyBhbmQsIGVxLCBvciB9IGZyb20gJ2VtYmVyLXRydXRoLWhlbHBlcnMnO1xuXG5pbXBvcnQgYXJnT3JEZWZhdWx0LCB7IGFyZ09yRGVmYXVsdERlY29yYXRvciB9IGZyb20gJy4uL2hlbHBlcnMvYXJnLW9yLWRlZmF1bHQudHMnO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnLi4vaGVscGVycy9jbGFzcy1uYW1lcy50cyc7XG5pbXBvcnQgcmVzaXplT2JzZXJ2ZXIgZnJvbSAnLi4vbW9kaWZpZXJzL3Jlc2l6ZS1vYnNlcnZlci50cyc7XG5pbXBvcnQgeyBrZXlzIH0gZnJvbSAnLi4vdXRpbHMva2V5cy50cyc7XG5pbXBvcnQgeyBmaW5kUG9wb3ZlclBvc2l0aW9uIH0gZnJvbSAnLi4vdXRpbHMvcG9wb3Zlci9pbmRleC50cyc7XG5pbXBvcnQgRXVpUG9ydGFsIGZyb20gJy4vZXVpLXBvcnRhbC5ndHMnO1xuaW1wb3J0IEV1aVRvb2xUaXBQb3BvdmVyIGZyb20gJy4vZXVpLXRvb2wtdGlwLXBvcG92ZXIuZ3RzJztcblxuaW1wb3J0IHR5cGUgeyBFdWlUb29sdGlwUG9wb3ZlclNpZ25hdHVyZSB9IGZyb20gJy4vZXVpLXRvb2wtdGlwLXBvcG92ZXInO1xuXG5leHBvcnQgdHlwZSBUb29sVGlwUG9zaXRpb25zID0gJ3RvcCcgfCAncmlnaHQnIHwgJ2JvdHRvbScgfCAnbGVmdCc7XG5cbmV4cG9ydCB0eXBlIFRvb2xUaXBEZWxheSA9ICdyZWd1bGFyJyB8ICdsb25nJztcblxuY29uc3QgZGVsYXlUb01zTWFwOiB7IFtrZXkgaW4gVG9vbFRpcERlbGF5XTogbnVtYmVyIH0gPSB7XG4gIHJlZ3VsYXI6IDI1MCxcbiAgbG9uZzogMjUwICogNVxufTtcblxuaW50ZXJmYWNlIFRvb2xUaXBTdHlsZXMge1xuICB0b3A6IHN0cmluZztcbiAgbGVmdDogc3RyaW5nIHwgJ2F1dG8nO1xuICByaWdodD86IHN0cmluZyB8ICdhdXRvJztcbiAgb3BhY2l0eT86IHN0cmluZztcbiAgdmlzaWJpbGl0eT86ICdoaWRkZW4nO1xuICBkaXNwbGF5PzogJ2lubGluZUJsb2NrJztcbn1cblxuY29uc3QgZGlzcGxheVRvQ2xhc3NOYW1lTWFwID0ge1xuICBpbmxpbmVCbG9jazogdW5kZWZpbmVkLFxuICBibG9jazogJ2V1aVRvb2xUaXBBbmNob3ItLWRpc3BsYXlCbG9jaydcbn07XG5cbmNvbnN0IERFRkFVTFRfVE9PTFRJUF9TVFlMRVM6IFRvb2xUaXBTdHlsZXMgPSB7XG4gIC8vIHBvc2l0aW9uIHRoZSB0b29sdGlwIGNvbnRlbnQgbmVhciB0aGUgdG9wLWxlZnRcbiAgLy8gY29ybmVyIG9mIHRoZSB3aW5kb3cgc28gaXQgY2FuJ3QgY3JlYXRlIHNjcm9sbGJhcnNcbiAgLy8gNTAsNTAgYmVjYXVzZSB3aG8ga25vd3Mgd2hhdCBuZWdhdGl2ZSBtYXJnaW5zLCBwYWRkaW5nLCBldGNcbiAgdG9wOiAnNTBweCcsXG4gIGxlZnQ6ICc1MHB4JyxcbiAgLy8ganVzdCBpbiBjYXNlLCBhdm9pZCBhbnkgcG90ZW50aWFsIGZsaWNrZXIgYnkgaGlkaW5nXG4gIC8vIHRoZSB0b29sdGlwIGJlZm9yZSBpdCBpcyBwb3NpdGlvbmVkXG4gIG9wYWNpdHk6ICcwJyxcbiAgLy8gcHJldmVudCBhY2NpZGVudGFsIG1vdXNlIGludGVyYWN0aW9uIHdoaWxlIHBvc2l0aW9uaW5nXG4gIHZpc2liaWxpdHk6ICdoaWRkZW4nLFxuICBkaXNwbGF5OiAnaW5saW5lQmxvY2snXG59O1xuXG5leHBvcnQgdHlwZSBFdWlUb29sdGlwQXJncyA9IHtcbiAgLyoqXG4gICAqIFBhc3NlcyBvbnRvIHRoZSB0aGUgdHJpZ2dlci5cbiAgICovXG4gIGFuY2hvckNsYXNzTmFtZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFBhc3NlcyBvbnRvIHRoZSB0b29sdGlwIGl0c2VsZiwgbm90IHRoZSB0cmlnZ2VyLlxuICAgKi9cbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIG1haW4gY29udGVudCBvZiB5b3VyIHRvb2x0aXAuXG4gICAqL1xuICBjb250ZW50Pzogc3RyaW5nO1xuICAvKipcbiAgICogQ29tbW9uIGRpc3BsYXkgYWx0ZXJuYXRpdmVzIGZvciB0aGUgYW5jaG9yIHdyYXBwZXJcbiAgICovXG4gIGRpc3BsYXk_OiBrZXlvZiB0eXBlb2YgZGlzcGxheVRvQ2xhc3NOYW1lTWFwO1xuICAvKipcbiAgICogRGVsYXkgYmVmb3JlIHNob3dpbmcgdG9vbHRpcC4gR29vZCBmb3IgcmVwZWF0YWJsZSBpdGVtcy5cbiAgICovXG4gIGRlbGF5PzogVG9vbFRpcERlbGF5O1xuICAvKipcbiAgICogQW4gb3B0aW9uYWwgdGl0bGUgZm9yIHlvdXIgdG9vbHRpcC5cbiAgICovXG4gIHRpdGxlPzogc3RyaW5nO1xuICAvKipcbiAgICogVW5sZXNzIHlvdSBwcm92aWRlIG9uZSwgdGhpcyB3aWxsIGJlIHJhbmRvbWx5IGdlbmVyYXRlZC5cbiAgICovXG4gIGlkPzogc3RyaW5nO1xuICAvKipcbiAgICogU3VnZ2VzdGVkIHBvc2l0aW9uLiBJZiB0aGVyZSBpcyBub3QgZW5vdWdoIHJvb20gZm9yIGl0IHRoaXMgd2lsbCBiZSBjaGFuZ2VkLlxuICAgKi9cbiAgcG9zaXRpb24_OiBUb29sVGlwUG9zaXRpb25zO1xuXG4gIGF0dGFjaFRvPzogdW5kZWZpbmVkIHwgSFRNTEVsZW1lbnQgfCBzdHJpbmcgfCBudWxsO1xuXG4gIGlzU2hvd24_OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBJZiBzdXBwbGllZCwgY2FsbGVkIHdoZW4gbW91c2UgbW92ZW1lbnQgY2F1c2VzIHRoZSB0b29sIHRpcCB0byBiZVxuICAgKiBoaWRkZW4uXG4gICAqL1xuICBvbk1vdXNlT3V0PzogKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB2b2lkO1xuICBvbkZvY3VzPzogKCkgPT4gdm9pZDtcbiAgb25CbHVyPzogKCkgPT4gdm9pZDtcblxuICBoYXNUaXRsZT86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIEV1aVRvb2xUaXBTaWduYXR1cmUge1xuICBFbGVtZW50OiBFdWlUb29sdGlwUG9wb3ZlclNpZ25hdHVyZVsnRWxlbWVudCddO1xuICBBcmdzOiBFdWlUb29sdGlwQXJncztcbiAgQmxvY2tzOiB7XG4gICAgZGVmYXVsdD86IFtpZDogc3RyaW5nXTtcbiAgICB0aXRsZT86IFtdO1xuICAgIGNvbnRlbnQ_OiBbXTtcbiAgICBhbmNob3I_OiBbaWQ6IHN0cmluZ107XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEV1aVRvb2xUaXAgZXh0ZW5kcyBDb21wb25lbnQ8RXVpVG9vbFRpcFNpZ25hdHVyZT4ge1xuICBhbmNob3I6IG51bGwgfCBIVE1MRWxlbWVudCA9IG51bGw7XG4gIHBvcG92ZXI6IG51bGwgfCBIVE1MRWxlbWVudCA9IG51bGw7XG5cbiAgQGFyZ09yRGVmYXVsdERlY29yYXRvcigndG9wJykgcG9zaXRpb24hOiBUb29sVGlwUG9zaXRpb25zO1xuICBAYXJnT3JEZWZhdWx0RGVjb3JhdG9yKCdyZWd1bGFyJykgZGVsYXkhOiBUb29sVGlwRGVsYXk7XG5cbiAgLy9TVEFURVxuICBAdHJhY2tlZCB2aXNpYmxlID0gZmFsc2U7XG4gIEB0cmFja2VkIGhhc0ZvY3VzID0gZmFsc2U7XG4gIEB0cmFja2VkIGNhbGN1bGF0ZWRQb3NpdGlvbjogVG9vbFRpcFBvc2l0aW9ucyA9IHRoaXMucG9zaXRpb247XG4gIEB0cmFja2VkIHRvb2xUaXBTdHlsZXM6IFRvb2xUaXBTdHlsZXMgPSBERUZBVUxUX1RPT0xUSVBfU1RZTEVTO1xuICBAdHJhY2tlZCBhcnJvd1N0eWxlczogeyBsZWZ0Pzogc3RyaW5nOyB0b3A_OiBzdHJpbmcgfSA9IHt9O1xuICBAdHJhY2tlZCBpZDogc3RyaW5nID0gdGhpcy5hcmdzLmlkIHx8IGd1aWRGb3Ioe30pO1xuICBAdHJhY2tlZCBfYXR0YWNoVG86IHVuZGVmaW5lZCB8IEhUTUxFbGVtZW50IHwgc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSB0aW1lb3V0SWQ_OiBSZXR1cm5UeXBlPHR5cGVvZiBsYXRlcj47XG5cbiAgQGFjdGlvblxuICB1cGRhdGVBdHRhY2hUbygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuYXJncy5hdHRhY2hUbyAmJiB0aGlzLl9hdHRhY2hUbykge1xuICAgICAgdGhpcy5yZW1vdmVBdHRhY2hUb0hhbmRsZXJzKCk7XG4gICAgICB0aGlzLl9hdHRhY2hUbyA9IG51bGw7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hcmdzLmF0dGFjaFRvICYmIHRoaXMuYXJncy5hdHRhY2hUbyAhPT0gdGhpcy5fYXR0YWNoVG8pIHtcbiAgICAgIG5leHQoKCkgPT4ge1xuICAgICAgICB0aGlzLnJlbW92ZUF0dGFjaFRvSGFuZGxlcnMoKTtcbiAgICAgICAgdGhpcy5fYXR0YWNoVG8gPSB0aGlzLmFyZ3MuYXR0YWNoVG87XG4gICAgICAgIHRoaXMuc2V0dXBBdHRhY2hUb0hhbmRsZXJzKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBAYWN0aW9uXG4gIHNldHVwQXR0YWNoVG9IYW5kbGVycygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fYXR0YWNoVG8gJiYgdGhpcy5hdHRhY2hUbykge1xuICAgICAgdGhpcy5hdHRhY2hUby5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCB0aGlzLnNob3dUb29sVGlwKTtcbiAgICAgIHRoaXMuYXR0YWNoVG8uYWRkRXZlbnRMaXN0ZW5lcignZm9jdXNpbicsIHRoaXMub25Gb2N1cyk7XG4gICAgICAvL0B0cy1leHBlY3QtZXJyb3JcbiAgICAgIHRoaXMuYXR0YWNoVG8uYWRkRXZlbnRMaXN0ZW5lcignbW91c2VvdXQnLCB0aGlzLm9uTW91c2VPdXQpO1xuICAgICAgdGhpcy5hdHRhY2hUby5hZGRFdmVudExpc3RlbmVyKCdmb2N1c291dCcsIHRoaXMub25CbHVyKTtcbiAgICAgIHRoaXMucG9zaXRpb25Ub29sVGlwKCk7XG4gICAgfVxuICB9XG5cbiAgQGFjdGlvblxuICByZW1vdmVBdHRhY2hUb0hhbmRsZXJzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9hdHRhY2hUbyAmJiB0aGlzLmF0dGFjaFRvKSB7XG4gICAgICB0aGlzLmF0dGFjaFRvLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMuc2hvd1Rvb2xUaXApO1xuICAgICAgdGhpcy5hdHRhY2hUby5yZW1vdmVFdmVudExpc3RlbmVyKCdmb2N1c2luJywgdGhpcy5vbkZvY3VzKTtcbiAgICAgIC8vQHRzLWV4cGVjdC1lcnJvclxuICAgICAgdGhpcy5hdHRhY2hUby5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW91dCcsIHRoaXMub25Nb3VzZU91dCk7XG4gICAgICB0aGlzLmF0dGFjaFRvLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2ZvY3Vzb3V0JywgdGhpcy5vbkJsdXIpO1xuICAgIH1cbiAgfVxuXG4gIEBhY3Rpb25cbiAgY2xlYXJBbmltYXRpb25UaW1lb3V0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRpbWVvdXRJZCkge1xuICAgICAgY2FuY2VsKHRoaXMudGltZW91dElkKTtcbiAgICAgIHRoaXMudGltZW91dElkID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIEBhY3Rpb25cbiAgdmlzaWJsZURpZFVwZGF0ZSh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLnZpc2libGUgPT09IGZhbHNlICYmIHZhbHVlID09PSB0cnVlKSB7XG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy50ZXN0QW5jaG9yKTtcbiAgICB9XG4gIH1cblxuICB3aWxsRGVzdHJveSgpOiB2b2lkIHtcbiAgICBzdXBlci53aWxsRGVzdHJveSgpO1xuICAgIHRoaXMuY2xlYXJBbmltYXRpb25UaW1lb3V0KCk7XG4gICAgdGhpcy5yZW1vdmVBdHRhY2hUb0hhbmRsZXJzKCk7XG4gIH1cblxuICBAYWN0aW9uXG4gIHRlc3RBbmNob3IoKTogdm9pZCB7XG4gICAgLy8gd2hlbiB0aGUgdG9vbHRpcCBpcyB2aXNpYmxlLCB0aGlzIGNoZWNrcyBpZiB0aGUgYW5jaG9yIGlzIHN0aWxsIHBhcnQgb2YgZG9jdW1lbnRcbiAgICAvLyB0aGlzIGZpeGVzIHdoZW4gdGhlIHJlYWN0IHJvb3QgaXMgcmVtb3ZlZCBmcm9tIHRoZSBkb20gd2l0aG91dCB1bm1vdW50aW5nXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2VsYXN0aWMvZXVpL2lzc3Vlcy8xMTA1XG4gICAgaWYgKGRvY3VtZW50LmJvZHkuY29udGFpbnModGhpcy5fYW5jaG9yKSA9PT0gZmFsc2UpIHtcbiAgICAgIC8vIHRoZSBhbmNob3IgaXMgbm8gbG9uZ2VyIHBhcnQgb2YgYGRvY3VtZW50YFxuICAgICAgdGhpcy5oaWRlVG9vbFRpcCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy52aXNpYmxlKSB7XG4gICAgICAgIC8vIGlmIHN0aWxsIHZpc2libGUsIGtlZXAgY2hlY2tpbmdcbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMudGVzdEFuY2hvcik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGFjdGlvblxuICBkaWRJbnNlcnRBbmNob3IocmVmOiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIHRoaXMuYW5jaG9yID0gcmVmO1xuICB9XG5cbiAgQGFjdGlvblxuICBzZXRQb3BvdmVyUmVmKHJlZjogSFRNTEVsZW1lbnQgfCBudWxsKTogdm9pZCB7XG4gICAgdGhpcy5wb3BvdmVyID0gcmVmO1xuXG4gICAgLy8gaWYgdGhlIHBvcG92ZXIgaGFzIGJlZW4gdW5tb3VudGVkLCBjbGVhclxuICAgIC8vIGFueSBwcmV2aW91cyBrbm93bGVkZ2UgYWJvdXQgaXRzIHNpemVcbiAgICBpZiAocmVmID09PSBudWxsKSB7XG4gICAgICB0aGlzLnRvb2xUaXBTdHlsZXMgPSBERUZBVUxUX1RPT0xUSVBfU1RZTEVTO1xuICAgICAgdGhpcy5hcnJvd1N0eWxlcyA9IHt9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnBvc2l0aW9uVG9vbFRpcCgpO1xuICAgIH1cbiAgfVxuXG4gIEBhY3Rpb25cbiAgc2hvd1Rvb2xUaXAoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnRpbWVvdXRJZCAmJiAhdGhpcy52aXNpYmxlKSB7XG4gICAgICBjb25zdCBmbiA9ICgpOiB2b2lkID0-IHtcbiAgICAgICAgdGhpcy52aXNpYmxlID0gdHJ1ZTtcbiAgICAgIH07XG5cbiAgICAgIHRoaXMudGltZW91dElkID0gbGF0ZXIoXG4gICAgICAgIHRoaXMsXG4gICAgICAgICgpID0-IHtcbiAgICAgICAgICBzY2hlZHVsZU9uY2UoJ2FmdGVyUmVuZGVyJywgdGhpcywgZm4pO1xuICAgICAgICB9LFxuICAgICAgICBkZWxheVRvTXNNYXBbdGhpcy5kZWxheV1cbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgQGNhY2hlZFxuICBnZXQgYXR0YWNoVG8oKTogRWxlbWVudCB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIGlmICh0eXBlb2YgdGhpcy5fYXR0YWNoVG8gPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0aGlzLl9hdHRhY2hUbyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLl9hdHRhY2hUbztcbiAgICB9XG4gIH1cblxuICBnZXQgX2FuY2hvcigpOiBFbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuYXR0YWNoVG8gfHwgdGhpcy5hbmNob3I7XG4gIH1cblxuICBAYWN0aW9uXG4gIHBvc2l0aW9uVG9vbFRpcCgpOiB2b2lkIHtcbiAgICBjb25zdCByZXF1ZXN0ZWRQb3NpdGlvbiA9IHRoaXMucG9zaXRpb247XG5cbiAgICBpZiAoIXRoaXMuX2FuY2hvciB8fCAhdGhpcy5wb3BvdmVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgeyBwb3NpdGlvbiwgbGVmdCwgdG9wLCBhcnJvdyB9ID0gZmluZFBvcG92ZXJQb3NpdGlvbih7XG4gICAgICBhbmNob3I6IHRoaXMuX2FuY2hvciBhcyBIVE1MRWxlbWVudCxcbiAgICAgIHBvcG92ZXI6IHRoaXMucG9wb3ZlcixcbiAgICAgIHBvc2l0aW9uOiByZXF1ZXN0ZWRQb3NpdGlvbixcbiAgICAgIG9mZnNldDogMTYsIC8vIG9mZnNldCBwb3BvdmVyIDE2cHggZnJvbSB0aGUgYW5jaG9yXG4gICAgICBhcnJvd0NvbmZpZzoge1xuICAgICAgICBhcnJvd1dpZHRoOiAxMixcbiAgICAgICAgYXJyb3dCdWZmZXI6IDRcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IHdpbmRvd1dpZHRoID1cbiAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCB8fCB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgICBjb25zdCB1c2VSaWdodFZhbHVlID0gd2luZG93V2lkdGggLyAyIDwgbGVmdDtcblxuICAgIGNvbnN0IHRvb2xUaXBTdHlsZXM6IFRvb2xUaXBTdHlsZXMgPSB7XG4gICAgICB0b3A6IGAke3RvcH1weGAsXG4gICAgICBsZWZ0OiB1c2VSaWdodFZhbHVlID8gJ2F1dG8nIDogYCR7bGVmdH1weGAsXG4gICAgICByaWdodDogdXNlUmlnaHRWYWx1ZVxuICAgICAgICA_IGAke3dpbmRvd1dpZHRoIC0gbGVmdCAtIHRoaXMucG9wb3Zlci5vZmZzZXRXaWR0aH1weGBcbiAgICAgICAgOiAnYXV0bydcbiAgICB9O1xuXG4gICAgdGhpcy52aXNpYmxlID0gdHJ1ZTtcbiAgICB0aGlzLmNhbGN1bGF0ZWRQb3NpdGlvbiA9IHBvc2l0aW9uO1xuICAgIHRoaXMudG9vbFRpcFN0eWxlcyA9IHRvb2xUaXBTdHlsZXM7XG5cbiAgICBpZiAoYXJyb3cpIHtcbiAgICAgIHRoaXMuYXJyb3dTdHlsZXMgPSB7XG4gICAgICAgIGxlZnQ6IGAke2Fycm93LmxlZnR9cHhgLFxuICAgICAgICB0b3A6IGAke2Fycm93Py50b3B9cHhgXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIEBhY3Rpb25cbiAgaGlkZVRvb2xUaXAoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYXJncy5pc1Nob3duID09PSB0cnVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5jbGVhckFuaW1hdGlvblRpbWVvdXQoKTtcblxuICAgIGNvbnN0IGZuID0gKCk6IHZvaWQgPT4ge1xuICAgICAgaWYgKCF0aGlzLmlzRGVzdHJveWluZyB8fCAhdGhpcy5pc0Rlc3Ryb3llZCkge1xuICAgICAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgc2NoZWR1bGVPbmNlKCdhZnRlclJlbmRlcicsIHRoaXMsIGZuKTtcbiAgfVxuXG4gIEBhY3Rpb25cbiAgaGFzRm9jdXNNb3VzZU1vdmVMaXN0ZW5lcigpOiB2b2lkIHtcbiAgICB0aGlzLmhpZGVUb29sVGlwKCk7XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMuaGFzRm9jdXNNb3VzZU1vdmVMaXN0ZW5lcik7XG4gIH1cblxuICBAYWN0aW9uXG4gIG9uS2V5VXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSBrZXlzLlRBQikge1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMuaGFzRm9jdXNNb3VzZU1vdmVMaXN0ZW5lcik7XG4gICAgfVxuICB9XG5cbiAgQGFjdGlvblxuICBvbkZvY3VzKCk6IHZvaWQge1xuICAgIHRoaXMuaGFzRm9jdXMgPSB0cnVlO1xuICAgIHRoaXMuc2hvd1Rvb2xUaXAoKTtcbiAgfVxuXG4gIEBhY3Rpb25cbiAgb25CbHVyKCk6IHZvaWQge1xuICAgIHRoaXMuaGFzRm9jdXMgPSBmYWxzZTtcbiAgICB0aGlzLmhpZGVUb29sVGlwKCk7XG4gIH1cblxuICBAYWN0aW9uXG4gIG9uTW91c2VPdXQoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAvLyBQcmV2ZW50IG1vdXNpbmcgb3ZlciBjaGlsZHJlbiBmcm9tIGhpZGluZyB0aGUgdG9vbHRpcCBieSB0ZXN0aW5nIGZvciB3aGV0aGVyIHRoZSBtb3VzZSBoYXNcbiAgICAvLyBsZWZ0IHRoZSBhbmNob3IgZm9yIGEgbm9uLWNoaWxkLlxuICAgIGlmIChcbiAgICAgIHRoaXMuX2FuY2hvciA9PT0gZXZlbnQucmVsYXRlZFRhcmdldCB8fFxuICAgICAgKHRoaXMuX2FuY2hvciAhPSBudWxsICYmXG4gICAgICAgICF0aGlzLl9hbmNob3IuY29udGFpbnMoZXZlbnQucmVsYXRlZFRhcmdldCBhcyBOb2RlKSlcbiAgICApIHtcbiAgICAgIGlmICghdGhpcy5oYXNGb2N1cykge1xuICAgICAgICB0aGlzLmhpZGVUb29sVGlwKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYXJncy5vbk1vdXNlT3V0KSB7XG4gICAgICB0aGlzLmFyZ3Mub25Nb3VzZU91dChldmVudCk7XG4gICAgfVxuICB9XG5cbiAgPHRlbXBsYXRlPlxuICAgIHt7I2xldFxuICAgICAgKGhhcy1ibG9jayBcImNvbnRlbnRcIikgKGhhcy1ibG9jayBcInRpdGxlXCIpIChoYXMtYmxvY2sgXCJhbmNob3JcIilcbiAgICAgIGFzIHxoYXNDb250ZW50QmxvY2sgaGFzVGl0bGVCbG9jayBoYXNBbmNob3JCbG9ja3xcbiAgICB9fVxuICAgICAge3sjaWYgQGF0dGFjaFRvfX1cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICB7e2RpZEluc2VydCB0aGlzLnVwZGF0ZUF0dGFjaFRvfX1cbiAgICAgICAgICB7e2RpZFVwZGF0ZSB0aGlzLnVwZGF0ZUF0dGFjaFRvIEBhdHRhY2hUb319XG4gICAgICAgICAge3tkaWRVcGRhdGVcbiAgICAgICAgICAgIChpZiAoZXEgQGlzU2hvd24gdHJ1ZSkgdGhpcy5vbkZvY3VzIHRoaXMub25CbHVyKVxuICAgICAgICAgICAgQGlzU2hvd25cbiAgICAgICAgICB9fVxuICAgICAgICAgIHt7ZGlkSW5zZXJ0IChpZiAoZXEgQGlzU2hvd24gdHJ1ZSkgdGhpcy5vbkZvY3VzIHRoaXMub25CbHVyKX19XG4gICAgICAgID48L3NwYW4-XG4gICAgICB7e2Vsc2V9fVxuICAgICAgICA8c3BhblxuICAgICAgICAgIHJvbGU9XCJ0b29sdGlwXCJcbiAgICAgICAgICBjbGFzcz17e2NsYXNzTmFtZXNcbiAgICAgICAgICAgIFwiZXVpVG9vbFRpcEFuY2hvclwiXG4gICAgICAgICAgICAoaWYgKGVxIEBkaXNwbGF5IFwiYmxvY2tcIikgXCJldWlUb29sVGlwQW5jaG9yLS1kaXNwbGF5QmxvY2tcIilcbiAgICAgICAgICAgIEBhbmNob3JDbGFzc05hbWVcbiAgICAgICAgICB9fVxuICAgICAgICAgIHt7ZGlkSW5zZXJ0IHRoaXMuZGlkSW5zZXJ0QW5jaG9yfX1cbiAgICAgICAgICB7e29uIFwibW91c2VvdmVyXCIgdGhpcy5zaG93VG9vbFRpcH19XG4gICAgICAgICAge3tvbiBcImZvY3VzaW5cIiB0aGlzLm9uRm9jdXN9fVxuICAgICAgICAgIHt7b24gXCJmb2N1c291dFwiIHRoaXMub25CbHVyfX1cbiAgICAgICAgICB7e29uIFwibW91c2VvdXRcIiB0aGlzLm9uTW91c2VPdXR9fVxuICAgICAgICAgIHt7ZGlkVXBkYXRlXG4gICAgICAgICAgICAoaWYgKGVxIEBpc1Nob3duIHRydWUpIHRoaXMub25Gb2N1cyB0aGlzLm9uQmx1cilcbiAgICAgICAgICAgIEBpc1Nob3duXG4gICAgICAgICAgfX1cbiAgICAgICAgICB7e2RpZEluc2VydCAoaWYgKGVxIEBpc1Nob3duIHRydWUpIHRoaXMub25Gb2N1cyB0aGlzLm9uQmx1cil9fVxuICAgICAgICA-XG4gICAgICAgICAge3sjaWYgaGFzQW5jaG9yQmxvY2t9fVxuICAgICAgICAgICAge3t5aWVsZCB0aGlzLmlkIHRvPVwiYW5jaG9yXCJ9fVxuICAgICAgICAgIHt7ZWxzZX19XG4gICAgICAgICAgICB7e3lpZWxkIHRoaXMuaWR9fVxuICAgICAgICAgIHt7L2lmfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAge3svaWZ9fVxuICAgICAge3sjaWZcbiAgICAgICAgKGFuZCB0aGlzLnZpc2libGUgKG9yIEB0aXRsZSBAY29udGVudCBoYXNDb250ZW50QmxvY2sgaGFzVGl0bGVCbG9jaykpXG4gICAgICB9fVxuICAgICAgICA8RXVpUG9ydGFsPlxuICAgICAgICAgIDxFdWlUb29sVGlwUG9wb3ZlclxuICAgICAgICAgICAgY2xhc3M9e3tjbGFzc05hbWVzXG4gICAgICAgICAgICAgIFwiZXVpVG9vbFRpcFwiXG4gICAgICAgICAgICAgIEBjbGFzc05hbWVcbiAgICAgICAgICAgICAgY29tcG9uZW50TmFtZT1cIkV1aVRvb2xUaXBcIlxuICAgICAgICAgICAgICBwb3NpdGlvbj10aGlzLmNhbGN1bGF0ZWRQb3NpdGlvblxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIEBwb3NpdGlvblRvb2xUaXA9e3t0aGlzLnBvc2l0aW9uVG9vbFRpcH19XG4gICAgICAgICAgICBAcG9wb3ZlclJlZj17e3RoaXMuc2V0UG9wb3ZlclJlZn19XG4gICAgICAgICAgICBpZD17e3RoaXMuaWR9fVxuICAgICAgICAgICAgQGhhc1RpdGxlPXt7aWZcbiAgICAgICAgICAgICAgKGFuZCAoYXJnT3JEZWZhdWx0IEBoYXNUaXRsZSB0cnVlKSAob3IgaGFzVGl0bGVCbG9jayBAdGl0bGUpKVxuICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgcm9sZT1cInRvb2x0aXBcIlxuICAgICAgICAgICAgLi4uYXR0cmlidXRlc1xuICAgICAgICAgICAge3tzdHlsZSB0aGlzLnRvb2xUaXBTdHlsZXN9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDw6dGl0bGU-XG4gICAgICAgICAgICAgIHt7I2lmIGhhc1RpdGxlQmxvY2t9fVxuICAgICAgICAgICAgICAgIHt7eWllbGQgdG89XCJ0aXRsZVwifX1cbiAgICAgICAgICAgICAge3tlbHNlfX1cbiAgICAgICAgICAgICAgICB7e0B0aXRsZX19XG4gICAgICAgICAgICAgIHt7L2lmfX1cbiAgICAgICAgICAgIDwvOnRpdGxlPlxuICAgICAgICAgICAgPDpjb250ZW50PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXVpVG9vbFRpcF9fYXJyb3dcIiB7e3N0eWxlIHRoaXMuYXJyb3dTdHlsZXN9fT48L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiB7e3Jlc2l6ZU9ic2VydmVyIG9uUmVzaXplPXRoaXMucG9zaXRpb25Ub29sVGlwfX0-XG4gICAgICAgICAgICAgICAge3sjaWYgaGFzQ29udGVudEJsb2NrfX1cbiAgICAgICAgICAgICAgICAgIHt7eWllbGQgdG89XCJjb250ZW50XCJ9fVxuICAgICAgICAgICAgICAgIHt7ZWxzZX19XG4gICAgICAgICAgICAgICAgICB7e0Bjb250ZW50fX1cbiAgICAgICAgICAgICAgICB7ey9pZn19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC86Y29udGVudD5cbiAgICAgICAgICA8L0V1aVRvb2xUaXBQb3BvdmVyPlxuICAgICAgICA8L0V1aVBvcnRhbD5cbiAgICAgIHt7L2lmfX1cbiAgICB7ey9sZXR9fVxuICA8L3RlbXBsYXRlPlxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLGVBQWUscUJBQXFCO0FBQzNDLFNBQVMsTUFBTSxFQUFFLE9BQU8sUUFBUSxvQkFBb0I7QUFDcEQsU0FBUyxFQUFFLFFBQVEsa0JBQWtCO0FBQ3JDLFNBQVMsTUFBTSxRQUFRLGdCQUFnQjtBQUN2QyxTQUFTLE9BQU8sUUFBUSwwQkFBMEI7QUFDbEQsT0FBTyxlQUFlLCtDQUErQztBQUNyRSxPQUFPLGVBQWUsK0NBQStDO0FBQ3JFLFNBQVMsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsWUFBWSxRQUFRLGlCQUFpQjtBQUVuRSxPQUFPLFdBQVcsdUNBQXVDO0FBQ3pELFNBQVMsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLFFBQVEsc0JBQXNCO0FBRWxELE9BQU8sZ0JBQWdCLHFCQUFxQixRQUFRLCtCQUErQjtBQUNuRixPQUFPLGdCQUFnQiw0QkFBNEI7QUFDbkQsT0FBTyxvQkFBb0Isa0NBQWtDO0FBQzdELFNBQVMsSUFBSSxRQUFRLG1CQUFtQjtBQUN4QyxTQUFTLG1CQUFtQixRQUFRLDRCQUE0QjtBQUNoRSxPQUFPLGVBQWUsbUJBQW1CO0FBQ3pDLE9BQU8sdUJBQXVCLDZCQUE2QjtBQUUzRCxjQUFjLDBCQUEwQixRQUFRLHlCQUF5QjtBQUV6RSxZQUFZLG1C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"],"names":["cached","macroCondition","dependencySatisfies","importSync","delayToMsMap","regular","long","DEFAULT_TOOLTIP_STYLES","top","left","opacity","visibility","display","EuiToolTip","Component","anchor","popover","g","this","prototype","argOrDefaultDecorator","i","void 0","tracked","position","args","id","guidFor","timeoutId","updateAttachTo","attachTo","_attachTo","removeAttachToHandlers","next","setupAttachToHandlers","n","action","addEventListener","showToolTip","onFocus","onMouseOut","onBlur","positionToolTip","removeEventListener","clearAnimationTimeout","cancel","undefined","visibleDidUpdate","value1","visible","requestAnimationFrame","testAnchor","willDestroy","document","body","contains","_anchor","hideToolTip","didInsertAnchor","ref1","setPopoverRef","toolTipStyles","arrowStyles","fn1","later","scheduleOnce","delay","querySelector","requestedPosition1","position1","left1","top1","arrow","arrow1","findPopoverPosition","offset","arrowConfig","arrowWidth","arrowBuffer","windowWidth1","documentElement","clientWidth","window","innerWidth","useRightValue1","toolTipStyles1","right","offsetWidth","calculatedPosition","isShown","isDestroying","isDestroyed","hasFocusMouseMoveListener","onKeyUp","event1","key","keys","TAB","hasFocus","relatedTarget","setComponentTemplate","precompileTemplate","strictMode","scope","didInsert","didUpdate","eq","classNames","on","and","or","EuiPortal","EuiToolTipPopover","argOrDefault","style","resizeObserver"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text-block.js","sources":["../../src/components/text-block.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport { eq } from 'ember-truth-helpers';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\nexport interface TextBlockSignature {\n Element: HTMLHeadingElement | HTMLParagraphElement | HTMLLegendElement;\n Args: {\n tagName: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p' | 'legend';\n };\n Blocks: {\n default: [];\n };\n}\nconst TextBlock: TemplateOnlyComponent<TextBlockSignature> = template(`\n {{#if (eq @tagName \"h1\")}}\n <h1 ...attributes>\n {{yield}}\n </h1>\n {{else if (eq @tagName \"h2\")}}\n <h2 ...attributes>\n {{yield}}\n </h2>\n {{else if (eq @tagName \"h3\")}}\n <h3 ...attributes>\n {{yield}}\n </h3>\n {{else if (eq @tagName \"h4\")}}\n <h4 ...attributes>\n {{yield}}\n </h4>\n {{else if (eq @tagName \"h5\")}}\n <h5 ...attributes>\n {{yield}}\n </h5>\n {{else if (eq @tagName \"h6\")}}\n <h6 ...attributes>\n {{yield}}\n </h6>\n {{else if (eq @tagName \"p\")}}\n <p ...attributes>\n {{yield}}\n </p>\n {{else if (eq @tagName \"legend\")}}\n <legend ...attributes>\n {{yield}}\n </legend>\n {{/if}}\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nexport default TextBlock;\n//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
{"version":3,"file":"text-block.js","sources":["../../src/components/text-block.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport { eq } from 'ember-truth-helpers';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\nexport interface TextBlockSignature {\n Element: HTMLHeadingElement | HTMLParagraphElement | HTMLLegendElement;\n Args: {\n tagName: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p' | 'legend';\n };\n Blocks: {\n default: [];\n };\n}\nconst TextBlock: TemplateOnlyComponent<TextBlockSignature> = template(`\n {{#if (eq @tagName \"h1\")}}\n <h1 ...attributes>\n {{yield}}\n </h1>\n {{else if (eq @tagName \"h2\")}}\n <h2 ...attributes>\n {{yield}}\n </h2>\n {{else if (eq @tagName \"h3\")}}\n <h3 ...attributes>\n {{yield}}\n </h3>\n {{else if (eq @tagName \"h4\")}}\n <h4 ...attributes>\n {{yield}}\n </h4>\n {{else if (eq @tagName \"h5\")}}\n <h5 ...attributes>\n {{yield}}\n </h5>\n {{else if (eq @tagName \"h6\")}}\n <h6 ...attributes>\n {{yield}}\n </h6>\n {{else if (eq @tagName \"p\")}}\n <p ...attributes>\n {{yield}}\n </p>\n {{else if (eq @tagName \"legend\")}}\n <legend ...attributes>\n {{yield}}\n </legend>\n {{/if}}\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nexport default TextBlock;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9iZXRvY2FudHU5My9vcGVuc291cmNlL2VtYmVyLWV1aS9wYWNrYWdlcy9jb3JlL3NyYy9jb21wb25lbnRzL3RleHQtYmxvY2suZ3RzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGVxIH0gZnJvbSAnZW1iZXItdHJ1dGgtaGVscGVycyc7XG5cbmltcG9ydCB0eXBlIHsgVGVtcGxhdGVPbmx5Q29tcG9uZW50IH0gZnJvbSAnQGVtYmVyL2NvbXBvbmVudC90ZW1wbGF0ZS1vbmx5JztcblxuZXhwb3J0IGludGVyZmFjZSBUZXh0QmxvY2tTaWduYXR1cmUge1xuICBFbGVtZW50OiBIVE1MSGVhZGluZ0VsZW1lbnQgfCBIVE1MUGFyYWdyYXBoRWxlbWVudCB8IEhUTUxMZWdlbmRFbGVtZW50O1xuICBBcmdzOiB7XG4gICAgdGFnTmFtZTogJ2gxJyB8ICdoMicgfCAnaDMnIHwgJ2g0JyB8ICdoNScgfCAnaDYnIHwgJ3AnIHwgJ2xlZ2VuZCc7XG4gIH07XG4gIEJsb2Nrczoge1xuICAgIGRlZmF1bHQ6IFtdO1xuICB9O1xufVxuXG5jb25zdCBUZXh0QmxvY2s6IFRlbXBsYXRlT25seUNvbXBvbmVudDxUZXh0QmxvY2tTaWduYXR1cmU-ID0gPHRlbXBsYXRlPlxuICB7eyNpZiAoZXEgQHRhZ05hbWUgXCJoMVwiKX19XG4gICAgPGgxIC4uLmF0dHJpYnV0ZXM-XG4gICAgICB7e3lpZWxkfX1cbiAgICA8L2gxPlxuICB7e2Vsc2UgaWYgKGVxIEB0YWdOYW1lIFwiaDJcIil9fVxuICAgIDxoMiAuLi5hdHRyaWJ1dGVzPlxuICAgICAge3t5aWVsZH19XG4gICAgPC9oMj5cbiAge3tlbHNlIGlmIChlcSBAdGFnTmFtZSBcImgzXCIpfX1cbiAgICA8aDMgLi4uYXR0cmlidXRlcz5cbiAgICAgIHt7eWllbGR9fVxuICAgIDwvaDM-XG4gIHt7ZWxzZSBpZiAoZXEgQHRhZ05hbWUgXCJoNFwiKX19XG4gICAgPGg0IC4uLmF0dHJpYnV0ZXM-XG4gICAgICB7e3lpZWxkfX1cbiAgICA8L2g0PlxuICB7e2Vsc2UgaWYgKGVxIEB0YWdOYW1lIFwiaDVcIil9fVxuICAgIDxoNSAuLi5hdHRyaWJ1dGVzPlxuICAgICAge3t5aWVsZH19XG4gICAgPC9oNT5cbiAge3tlbHNlIGlmIChlcSBAdGFnTmFtZSBcImg2XCIpfX1cbiAgICA8aDYgLi4uYXR0cmlidXRlcz5cbiAgICAgIHt7eWllbGR9fVxuICAgIDwvaDY-XG4gIHt7ZWxzZSBpZiAoZXEgQHRhZ05hbWUgXCJwXCIpfX1cbiAgICA8cCAuLi5hdHRyaWJ1dGVzPlxuICAgICAge3t5aWVsZH19XG4gICAgPC9wPlxuICB7e2Vsc2UgaWYgKGVxIEB0YWdOYW1lIFwibGVnZW5kXCIpfX1cbiAgICA8bGVnZW5kIC4uLmF0dHJpYnV0ZXM-XG4gICAgICB7e3lpZWxkfX1cbiAgICA8L2xlZ2VuZD5cbiAge3svaWZ9fVxuPC90ZW1wbGF0ZT47XG5cbmV4cG9ydCBkZWZhdWx0IFRleHRCbG9jaztcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsU0FBUyxFQUFFLFFBQVEsc0JBQXNCO0FBRXpDLGNBQWMscUJBQXFCLFFBQVEsaUNBQWlDO0FBRTVFLGlCQUFpQjtJQUNmLFNBQVMscUJBQXFCLHVCQUF1QjtJQUNyRDtRQUNFLFNBQVMsT0FBTyxPQUFPLE9BQU8sT0FBTyxPQUFPLE9BQU8sTUFBTTs7SUFFM0Q7UUFDRTs7O0FBSUosTUFBTSxXQUFXLHNCQUFzQixzQkFBc0IsU0FBVSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBa0N2RSxDQUFBLEVBQUE7SUFBQTtRQUFBLE9BQUEsS0FBQSxTQUFBLENBQUEsRUFBVztJQUFEO0FBQUE7QUFFVixlQUFlLFVBQVUifQ"],"names":["TextBlock","setComponentTemplate","precompileTemplate","strictMode","scope","eq","templateOnly"],"mappings":";;;;;AAcA,MAAMA,SAAiC,GAAAC,oBAAA,CAAsBC,kBAAA,CAkC7D,otBAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;AAAAC,IAAAA,EAAAA;AAAA,GAAA,CAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
|
|
@@ -58,6 +58,7 @@ const getBufferValues = buffer => {
|
|
|
58
58
|
* @param popover {HTMLElement} Element containing the popover content
|
|
59
59
|
* @param position {string} Position the user wants. One of ["top", "right", "bottom", "left"]
|
|
60
60
|
* @param [forcePosition] {boolean} If true, use only the provided `position` value and don't try any other position
|
|
61
|
+
* @param host {HTMLElement} Element the popover must be positioned relative to
|
|
61
62
|
* @param [align] {string} Cross-axis alignment. One of ["top", "right", "bottom", "left"]
|
|
62
63
|
* @param [buffer=16] {number} Minimum distance between the popover and the bounding container
|
|
63
64
|
* @param [offset=0] {number} Distance between the popover and the anchor
|
|
@@ -77,6 +78,7 @@ function findPopoverPosition({
|
|
|
77
78
|
align,
|
|
78
79
|
position,
|
|
79
80
|
forcePosition,
|
|
81
|
+
host,
|
|
80
82
|
buffer = 16,
|
|
81
83
|
offset = 0,
|
|
82
84
|
allowCrossAxis = true,
|
|
@@ -105,6 +107,21 @@ function findPopoverPosition({
|
|
|
105
107
|
// if no container element is given fall back to using the window viewport
|
|
106
108
|
const containerBoundingBox = container ? getElementBoundingBox(container) : windowBoundingBox;
|
|
107
109
|
|
|
110
|
+
// the anchor is positioned relative to the host element if provided
|
|
111
|
+
if (host) {
|
|
112
|
+
const hostBoundingBox = getElementBoundingBox(host);
|
|
113
|
+
const anchorBoundingRelativeToHost = {
|
|
114
|
+
top: anchorBoundingBox.top - hostBoundingBox.top,
|
|
115
|
+
left: anchorBoundingBox.left - hostBoundingBox.left,
|
|
116
|
+
right: hostBoundingBox.right - anchorBoundingBox.right,
|
|
117
|
+
bottom: hostBoundingBox.bottom - anchorBoundingBox.bottom
|
|
118
|
+
};
|
|
119
|
+
anchorBoundingBox.top = anchorBoundingRelativeToHost.top;
|
|
120
|
+
anchorBoundingBox.left = anchorBoundingRelativeToHost.left;
|
|
121
|
+
anchorBoundingBox.right = anchorBoundingRelativeToHost.right;
|
|
122
|
+
anchorBoundingBox.bottom = anchorBoundingRelativeToHost.bottom;
|
|
123
|
+
}
|
|
124
|
+
|
|
108
125
|
/**
|
|
109
126
|
* `position` was specified by the function caller and is a strong hint
|
|
110
127
|
* as to the preferred location of the popover relative to the anchor.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/utils/popover/index.ts"],"sourcesContent":["/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport type { EuiPopoverPosition } from './types';\n\ntype Dimension = 'height' | 'width';\n\nexport const POSITIONS: EuiPopoverPosition[] = [\n 'top',\n 'right',\n 'bottom',\n 'left'\n];\n\ninterface BoundingBox {\n [position: string]: number;\n top: number;\n right: number;\n bottom: number;\n left: number;\n}\n\nexport interface EuiClientRect extends BoundingBox {\n height: number;\n width: number;\n}\n\nconst relatedDimension: { [position in EuiPopoverPosition]: Dimension } = {\n top: 'height',\n right: 'width',\n bottom: 'height',\n left: 'width'\n};\n\nconst dimensionPositionAttribute: {\n [dimension in Dimension]: 'top' | 'left';\n} = {\n height: 'top',\n width: 'left'\n};\n\nconst positionComplements: {\n [position in EuiPopoverPosition]: EuiPopoverPosition;\n} = {\n top: 'bottom',\n right: 'left',\n bottom: 'top',\n left: 'right'\n};\n\n// always resolving to top/left is taken advantage of by knowing they are the\n// minimum edges of the bounding box\nconst positionSubstitutes: {\n [position in EuiPopoverPosition]: 'left' | 'top';\n} = {\n top: 'left',\n right: 'top',\n bottom: 'left',\n left: 'top'\n};\n\ninterface FindPopoverPositionArgs {\n anchor: HTMLElement;\n popover: HTMLElement;\n align?: EuiPopoverPosition;\n position: EuiPopoverPosition;\n forcePosition?: boolean;\n buffer?: number | [number, number, number, number];\n offset?: number;\n allowCrossAxis?: boolean;\n container?: HTMLElement;\n arrowConfig?: { arrowWidth: number; arrowBuffer: number };\n returnBoundingBox?: boolean;\n}\n\ninterface FindPopoverPositionResult {\n top: number;\n left: number;\n position: 'top' | 'right' | 'bottom' | 'left';\n fit: number;\n arrow?: { left: number; top: number };\n anchorBoundingBox?: EuiClientRect;\n}\n\nconst getBufferValues = (\n buffer: number | [number, number, number, number]\n): [number, number, number, number] => {\n if (Array.isArray(buffer)) {\n const [topBuffer, rightBuffer, bottomBuffer, leftBuffer] = buffer;\n\n return [topBuffer, rightBuffer, bottomBuffer, leftBuffer];\n }\n\n return [buffer, buffer, buffer, buffer];\n};\n\n/**\n * Calculates the absolute positioning (relative to document.body) to place a popover element\n *\n * @param anchor {HTMLElement} Element to anchor the popover to\n * @param popover {HTMLElement} Element containing the popover content\n * @param position {string} Position the user wants. One of [\"top\", \"right\", \"bottom\", \"left\"]\n * @param [forcePosition] {boolean} If true, use only the provided `position` value and don't try any other position\n * @param [align] {string} Cross-axis alignment. One of [\"top\", \"right\", \"bottom\", \"left\"]\n * @param [buffer=16] {number} Minimum distance between the popover and the bounding container\n * @param [offset=0] {number} Distance between the popover and the anchor\n * @param [allowCrossAxis=true] {boolean} Whether to allow the popover to be positioned on the cross-axis\n * @param [container] {HTMLElement} Element the popover must be constrained to fit within\n * @param [arrowConfig] {{arrowWidth: number, arrowBuffer: number}} If\n * present, describes the size & constraints for an arrow element, and the\n * function return value will include an `arrow` param with position details\n *\n * @returns {FindPopoverPositionResult} absolute page coordinates for the\n * popover, and the placement's relation to the anchor or undefined\n * there's no room.\n */\nexport function findPopoverPosition({\n anchor,\n popover,\n align,\n position,\n forcePosition,\n buffer = 16,\n offset = 0,\n allowCrossAxis = true,\n container,\n arrowConfig,\n returnBoundingBox\n}: FindPopoverPositionArgs): FindPopoverPositionResult {\n // find the screen-relative bounding boxes of the anchor, popover, and container\n const anchorBoundingBox = getElementBoundingBox(anchor);\n const popoverBoundingBox = getElementBoundingBox(popover);\n\n // calculate the window's bounds\n // window.(innerWidth|innerHeight) do not account for scrollbars\n // so prefer the clientWidth/clientHeight of the DOM if available\n const documentWidth =\n document.documentElement.clientWidth || window.innerWidth;\n const documentHeight =\n document.documentElement.clientHeight || window.innerHeight;\n const windowBoundingBox: EuiClientRect = {\n top: 0,\n right: documentWidth,\n bottom: documentHeight,\n left: 0,\n height: documentHeight,\n width: documentWidth\n };\n\n // if no container element is given fall back to using the window viewport\n const containerBoundingBox = container\n ? getElementBoundingBox(container)\n : windowBoundingBox;\n\n /**\n * `position` was specified by the function caller and is a strong hint\n * as to the preferred location of the popover relative to the anchor.\n * However, we strongly prefer showing all of the popover content within\n * the window+container boundary and will iterate over the four\n * possible sides until a perfect fit is located. If none of the locations\n * fully contain popover, the location with the best fit is selected.\n *\n * This approach first checks the preferred `position`, then its opposite\n * along the same axis, next a location on the cross-axis, and finally it\n * tests the remaining position.\n *\n * e.g.\n * if position = \"top\" the order is top, bottom, left right\n * if position = \"right\" the order is right, left, top, bottom\n */\n\n // Try the user-desired position first.\n const iterationPositions = [position];\n\n // keep user-defined alignment in the original positions.\n type valuekey = undefined | EuiPopoverPosition;\n\n const iterationAlignments: valuekey[] = [align];\n\n if (forcePosition !== true) {\n iterationPositions.push(positionComplements[position]); // Try the complementary position.\n iterationAlignments.push(align); // keep user-defined alignment in the complementary position.\n\n if (allowCrossAxis) {\n iterationPositions.push(\n positionSubstitutes[position], // Switch to the cross axis.\n positionComplements[positionSubstitutes[position]] // Try the complementary position on the cross axis.\n );\n iterationAlignments.push(undefined, undefined); // discard desired alignment on cross-axis\n }\n } else {\n // position is forced, if it conflicts with the alignment then reset align to `null`\n // e.g. original placement request for `downLeft` is moved to the `left` side, future calls\n // will position and align `left`, and `leftLeft` is not a valid placement\n if (\n position === align ||\n (align !== undefined && position === positionComplements[align])\n ) {\n iterationAlignments[0] = undefined;\n }\n }\n\n let bestFit: number | undefined = undefined;\n let bestPosition: FindPopoverPositionResult | null = null;\n\n for (let idx = 0; idx < iterationPositions.length; idx++) {\n const iterationPosition = iterationPositions[idx];\n\n // See if we can find a position with a better fit than we've found so far.\n const screenCoordinates = getPopoverScreenCoordinates({\n position: iterationPosition!,\n align: iterationAlignments[idx],\n anchorBoundingBox,\n popoverBoundingBox,\n windowBoundingBox,\n containerBoundingBox,\n offset,\n buffer,\n arrowConfig\n });\n\n if (bestFit === undefined || screenCoordinates.fit > bestFit) {\n bestFit = screenCoordinates.fit;\n bestPosition = {\n fit: screenCoordinates.fit,\n position: iterationPosition!,\n top: screenCoordinates.top + window.pageYOffset,\n left: screenCoordinates.left + window.pageXOffset,\n arrow: screenCoordinates.arrow\n };\n\n // If we've already found the ideal fit, use that position.\n if (bestFit === 1) {\n break;\n }\n }\n\n // If we haven't improved the fit, then continue on and try a new position.\n }\n\n if (bestPosition == null) {\n throw new Error('Failed to calculate bestPosition');\n }\n\n if (returnBoundingBox) {\n bestPosition.anchorBoundingBox = anchorBoundingBox;\n }\n\n return bestPosition;\n}\n\ninterface GetPopoverScreenCoordinatesArgs {\n position: EuiPopoverPosition;\n align?: EuiPopoverPosition;\n anchorBoundingBox: EuiClientRect;\n popoverBoundingBox: EuiClientRect;\n windowBoundingBox: EuiClientRect;\n containerBoundingBox: EuiClientRect;\n arrowConfig?: { arrowWidth: number; arrowBuffer: number };\n offset?: number;\n buffer?: number | [number, number, number, number];\n}\n\ninterface GetPopoverScreenCoordinatesResult {\n top: number;\n left: number;\n fit: number;\n arrow: { top: number; left: number } | undefined;\n}\n\n/**\n * Given a target position and the popover's surrounding context, returns either an\n * object with {top, left} screen coordinates or `null` if it's not possible to show\n * content in the target position\n * @param position {string} the target position, one of [\"top\", \"right\", \"bottom\", \"left\"]\n * @param align {string} target alignment on the cross-axis, one of [\"top\", \"right\", \"bottom\", \"left\"]\n * @param anchorBoundingBox {Object} bounding box of the anchor element\n * @param popoverBoundingBox {Object} bounding box of the popover element\n * @param windowBoundingBox {Object} bounding box of the window\n * @param containerBoundingBox {Object} bounding box of the container\n * @param [arrowConfig] {{arrowWidth: number, arrowBuffer: number}} If present, describes the size &\n * constraints for an arrow element, and the function return value will include an `arrow` param\n * with position details\n * @param [offset=0] {number} Distance between the popover and the anchor\n * @param [buffer=0] {number} Minimum distance between the popover's\n * placement and the container edge\n *\n * @returns {GetPopoverScreenCoordinatesResult}\n * object with top/left coordinates, the popover's relative position to the anchor, and how well the\n * popover fits in the location (0.0 -> 1.0) coordinates and the popover's relative position, if\n * there is no room in this placement then null\n */\nexport function getPopoverScreenCoordinates({\n position,\n align,\n anchorBoundingBox,\n popoverBoundingBox,\n windowBoundingBox,\n containerBoundingBox,\n arrowConfig,\n offset = 0,\n buffer = 0\n}: GetPopoverScreenCoordinatesArgs): GetPopoverScreenCoordinatesResult {\n /**\n * The goal is to find the best way to align the popover content\n * on the given side of the anchor element. The popover prefers\n * centering on the anchor but can shift along the cross-axis as needed.\n *\n * We return the top/left coordinates that best fit the popover inside\n * the given boundaries, and also return the `fit` value which indicates\n * what percentage of the popover is within the bounds.\n *\n * e.g. finding a location when position=top\n * the preferred location is directly over the anchor\n *\n * +----------------------+\n * | popover |\n * +----------------------+\n * v\n * +--------------+\n * | anchor |\n * +--------------+\n *\n * but if anchor doesn't have much (or any) room on its ride side\n * the popover will shift to the left\n *\n * +----------------------+\n * | popover |\n * +----------------------+\n * v\n * +--------------+\n * | anchor |\n * +--------------+\n *\n */\n\n const crossAxisFirstSide = positionSubstitutes[position]; // \"top\" -> \"left\"\n const crossAxisSecondSide = positionComplements[crossAxisFirstSide]; // \"left\" -> \"right\"\n const crossAxisDimension = relatedDimension[crossAxisFirstSide]; // \"left\" -> \"width\"\n\n const [topBuffer, rightBuffer, bottomBuffer, leftBuffer] =\n getBufferValues(buffer);\n\n const { crossAxisPosition, crossAxisArrowPosition } = getCrossAxisPosition({\n crossAxisFirstSide,\n crossAxisSecondSide,\n crossAxisDimension,\n position,\n align,\n buffer,\n offset,\n windowBoundingBox,\n containerBoundingBox,\n popoverBoundingBox,\n anchorBoundingBox,\n arrowConfig\n });\n\n const primaryAxisDimension = relatedDimension[position]; // \"top\" -> \"height\"\n const primaryAxisPositionName =\n dimensionPositionAttribute[primaryAxisDimension]; // \"height\" -> \"top\"\n\n const { primaryAxisPosition, primaryAxisArrowPosition } =\n getPrimaryAxisPosition({\n position,\n offset,\n popoverBoundingBox,\n anchorBoundingBox,\n arrowConfig\n });\n\n const popoverPlacement = {\n [crossAxisFirstSide]: crossAxisPosition,\n [primaryAxisPositionName]: primaryAxisPosition\n };\n\n // calculate the fit of the popover in this location\n // fit is in range 0.0 -> 1.0 and is the percentage of the popover which is visible in this location\n const combinedBoundingBox = intersectBoundingBoxes(\n windowBoundingBox,\n containerBoundingBox\n );\n\n // shrink the visible bounding box by `buffer`\n // to compute a fit value\n combinedBoundingBox.top += topBuffer;\n combinedBoundingBox.right -= rightBuffer;\n combinedBoundingBox.bottom -= bottomBuffer;\n combinedBoundingBox.left += leftBuffer;\n\n const fit = getVisibleFit(\n {\n top: popoverPlacement['top']!,\n right: popoverPlacement['left']! + popoverBoundingBox.width,\n bottom: popoverPlacement['top']! + popoverBoundingBox.height,\n left: popoverPlacement['left']!,\n width: popoverBoundingBox.width,\n height: popoverBoundingBox.height\n },\n combinedBoundingBox\n );\n\n const arrow = arrowConfig\n ? {\n [crossAxisFirstSide]:\n crossAxisArrowPosition! - popoverPlacement[crossAxisFirstSide]!,\n [primaryAxisPositionName]: primaryAxisArrowPosition\n }\n : undefined;\n\n return {\n fit,\n top: popoverPlacement['top']!,\n left: popoverPlacement['left']!,\n arrow: arrow ? { left: arrow['left']!, top: arrow['top']! } : undefined\n };\n}\n\ninterface GetCrossAxisPositionArgs {\n crossAxisFirstSide: EuiPopoverPosition;\n crossAxisSecondSide: EuiPopoverPosition;\n crossAxisDimension: Dimension;\n position: EuiPopoverPosition;\n align?: EuiPopoverPosition;\n buffer: number | [number, number, number, number];\n offset: number;\n windowBoundingBox: EuiClientRect;\n containerBoundingBox: EuiClientRect;\n popoverBoundingBox: EuiClientRect;\n anchorBoundingBox: EuiClientRect;\n arrowConfig?: { arrowWidth: number; arrowBuffer: number };\n}\n\ninterface CrossAxisPosition {\n crossAxisPosition: number;\n crossAxisArrowPosition: number | undefined;\n}\n\nfunction getCrossAxisPosition({\n crossAxisFirstSide,\n crossAxisSecondSide,\n crossAxisDimension,\n position,\n align,\n buffer,\n offset,\n windowBoundingBox,\n containerBoundingBox,\n popoverBoundingBox,\n anchorBoundingBox,\n arrowConfig\n}: GetCrossAxisPositionArgs): CrossAxisPosition {\n // how much of the popover overflows past either side of the anchor if its centered\n const popoverSizeOnCrossAxis = popoverBoundingBox[crossAxisDimension];\n const anchorSizeOnCrossAxis = anchorBoundingBox[crossAxisDimension];\n const anchorHalfSize = anchorSizeOnCrossAxis / 2;\n\n // the popover's original position on the cross-axis is determined by:\n const crossAxisPositionOriginal =\n anchorBoundingBox[crossAxisFirstSide] + // where the anchor is located\n anchorHalfSize - // plus half anchor dimension\n popoverSizeOnCrossAxis / 2; // less half the popover dimension\n\n // To fit the content within both the window and container,\n // compute the smaller of the two spaces along each edge\n const combinedBoundingBox = intersectBoundingBoxes(\n windowBoundingBox,\n containerBoundingBox\n );\n const availableSpace = getAvailableSpace(\n anchorBoundingBox,\n combinedBoundingBox,\n buffer,\n offset,\n position\n );\n const minimumSpace = arrowConfig ? arrowConfig.arrowBuffer : 0;\n\n const contentOverflowSize =\n (popoverSizeOnCrossAxis - anchorSizeOnCrossAxis) / 2;\n\n let alignAmount = 0;\n let alignDirection = 1;\n let amountOfShiftNeeded = 0;\n let shiftDirection = 1;\n\n if (align != null) {\n // no alignment, find how much the container boundary requires the content to shift\n alignDirection = align === 'top' || align === 'left' ? 1 : -1;\n alignAmount = contentOverflowSize;\n\n const alignedOverflowAmount = contentOverflowSize + alignAmount;\n const needsShift =\n alignedOverflowAmount > availableSpace[positionComplements[align]];\n\n amountOfShiftNeeded = needsShift\n ? alignedOverflowAmount - availableSpace[positionComplements[align]]\n : 0;\n shiftDirection = -1 * alignDirection;\n } else {\n // shifting the popover to one side may yield a better fit\n const spaceAvailableOnFirstSide = availableSpace[crossAxisFirstSide];\n const spaceAvailableOnSecondSide = availableSpace[crossAxisSecondSide];\n\n const isShiftTowardFirstSide =\n spaceAvailableOnFirstSide > spaceAvailableOnSecondSide;\n\n shiftDirection = isShiftTowardFirstSide ? -1 : 1;\n\n // determine which direction has more room and the popover should shift to\n const leastAvailableSpace = Math.min(\n spaceAvailableOnFirstSide,\n spaceAvailableOnSecondSide\n );\n\n const needsShift = contentOverflowSize > leastAvailableSpace;\n\n amountOfShiftNeeded = needsShift\n ? contentOverflowSize - leastAvailableSpace\n : 0;\n }\n\n // shift over the popover if necessary\n const shiftAmount = amountOfShiftNeeded * shiftDirection;\n let crossAxisPosition =\n crossAxisPositionOriginal + shiftAmount + alignAmount * alignDirection;\n\n // if an `arrowConfig` is specified, find where to position the arrow\n let crossAxisArrowPosition;\n\n if (arrowConfig) {\n const { arrowWidth } = arrowConfig;\n\n crossAxisArrowPosition =\n anchorBoundingBox[crossAxisFirstSide] + anchorHalfSize - arrowWidth / 2;\n\n // make sure there's enough buffer around the arrow\n // by calculating how how much the arrow would need to move\n // but instead of moving the arrow, shift the popover content\n if (crossAxisArrowPosition < crossAxisPosition + minimumSpace) {\n // arrow is too close to the minimum side\n const difference =\n crossAxisPosition + minimumSpace - crossAxisArrowPosition;\n\n crossAxisPosition -= difference;\n } else if (\n crossAxisArrowPosition + minimumSpace + arrowWidth >\n crossAxisPosition + popoverSizeOnCrossAxis\n ) {\n // arrow is too close to the maximum side\n const edge = crossAxisPosition + popoverSizeOnCrossAxis;\n const difference =\n crossAxisArrowPosition - (edge - minimumSpace - arrowWidth);\n\n crossAxisPosition += difference;\n }\n }\n\n return {\n crossAxisPosition,\n crossAxisArrowPosition\n };\n}\n\ninterface GetPrimaryAxisPositionArgs {\n position: EuiPopoverPosition;\n offset: number;\n popoverBoundingBox: BoundingBox;\n anchorBoundingBox: BoundingBox;\n arrowConfig?: { arrowWidth: number; arrowBuffer: number };\n}\n\nfunction getPrimaryAxisPosition({\n position,\n offset,\n popoverBoundingBox,\n anchorBoundingBox,\n arrowConfig\n}: GetPrimaryAxisPositionArgs): {\n primaryAxisPosition: number;\n primaryAxisArrowPosition: number | undefined;\n} {\n // if positioning to the top or left, the target position decreases\n // from the anchor's top or left, otherwise the position adds to the anchor's\n const isOffsetDecreasing = position === 'top' || position === 'left';\n\n const primaryAxisDimension = relatedDimension[position]; // \"top\" -> \"height\"\n const popoverSizeOnPrimaryAxis = popoverBoundingBox[primaryAxisDimension];\n\n // start at the top or left edge of the anchor element\n const primaryAxisPositionName =\n dimensionPositionAttribute[primaryAxisDimension]; // \"height\" -> \"top\"\n const anchorEdgeOrigin = anchorBoundingBox[primaryAxisPositionName];\n\n // find the popover position on the primary axis\n const anchorSizeOnPrimaryAxis = anchorBoundingBox[primaryAxisDimension];\n const primaryAxisOffset =\n (isOffsetDecreasing ? popoverSizeOnPrimaryAxis : anchorSizeOnPrimaryAxis) ||\n 0;\n const contentOffset =\n (offset + primaryAxisOffset) * (isOffsetDecreasing ? -1 : 1);\n const primaryAxisPosition = anchorEdgeOrigin + contentOffset;\n\n let primaryAxisArrowPosition;\n\n if (arrowConfig) {\n primaryAxisArrowPosition = isOffsetDecreasing\n ? popoverSizeOnPrimaryAxis\n : 0;\n }\n\n return {\n primaryAxisPosition,\n primaryAxisArrowPosition\n };\n}\n\n/**\n * Finds the client pixel coordinate of each edge for the element's bounding box,\n * and the bounding box's width & height\n *\n * @param {HTMLElement} element\n * @returns {{top: number, right: number, bottom: number, left: number, height: number, width: number}}\n */\nexport function getElementBoundingBox(element: HTMLElement): EuiClientRect {\n const rect = element.getBoundingClientRect();\n\n return {\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom,\n left: rect.left,\n height: rect.height,\n width: rect.width\n };\n}\n\n/**\n * Calculates the available content space between anchor and container\n *\n * @param {Object} anchorBoundingBox Client bounding box of the anchor element\n * @param {Object} containerBoundingBox Client bounding box of the container element\n * @param {number} buffer Minimum distance between the popover and the bounding container\n * @param {number} offset Distance between the popover and the anchor\n * @param {string} offsetSide Side the offset needs to be applied to, one\n * of [\"top\", \"right\", \"bottom\", \"left\"]\n * @returns {{top: number, right: number, bottom: number, left: number}}\n */\nexport function getAvailableSpace(\n anchorBoundingBox: BoundingBox,\n containerBoundingBox: BoundingBox,\n buffer: number | [number, number, number, number],\n offset: number,\n offsetSide: EuiPopoverPosition\n): BoundingBox {\n const [topBuffer, rightBuffer, bottomBuffer, leftBuffer] =\n getBufferValues(buffer);\n\n return {\n top:\n anchorBoundingBox.top -\n containerBoundingBox.top -\n topBuffer -\n (offsetSide === 'top' ? offset : 0),\n right:\n containerBoundingBox.right -\n anchorBoundingBox.right -\n rightBuffer -\n (offsetSide === 'right' ? offset : 0),\n bottom:\n containerBoundingBox.bottom -\n anchorBoundingBox.bottom -\n bottomBuffer -\n (offsetSide === 'bottom' ? offset : 0),\n left:\n anchorBoundingBox.left -\n containerBoundingBox.left -\n leftBuffer -\n (offsetSide === 'left' ? offset : 0)\n };\n}\n\n/**\n * Computes the fit (overlap) of the content within the container, fit is in range 0.0 => 1.0\n * @param contentBoundingBox bounding box of content to calculate fit for\n * @param containerBoundingBox bounding box of container\n * @returns {number}\n */\nexport function getVisibleFit(\n contentBoundingBox: BoundingBox,\n containerBoundingBox: BoundingBox\n): number {\n const intersection = intersectBoundingBoxes(\n contentBoundingBox,\n containerBoundingBox\n );\n\n if (\n intersection.left > intersection.right ||\n intersection.top > intersection.top\n ) {\n // there is no intersection, the boxes are completely separated on at least one axis\n return 0;\n }\n\n const intersectionArea =\n (intersection.right - intersection.left) *\n (intersection.bottom - intersection.top);\n const contentArea =\n (contentBoundingBox.right - contentBoundingBox.left) *\n (contentBoundingBox.bottom - contentBoundingBox.top);\n\n return intersectionArea / contentArea;\n}\n\n/**\n * Calculates the intersection space between two bounding boxes\n *\n * @param firstBox\n * @param secondBox\n * @returns {EuiClientRect}\n */\nexport function intersectBoundingBoxes(\n firstBox: BoundingBox,\n secondBox: BoundingBox\n): EuiClientRect {\n const top = Math.max(firstBox.top, secondBox.top);\n const right = Math.min(firstBox.right, secondBox.right);\n const bottom = Math.min(firstBox.bottom, secondBox.bottom);\n const left = Math.max(firstBox.left, secondBox.left);\n const height = Math.max(bottom - top, 0);\n const width = Math.max(right - left, 0);\n\n return {\n top,\n right,\n bottom,\n left,\n height,\n width\n };\n}\n\n/**\n * Returns the top-most defined z-index in the element's ancestor hierarchy\n * relative to the `target` element; if no z-index is defined, returns 0\n * @param element {HTMLElement}\n * @param cousin {HTMLElement}\n * @returns {number}\n */\nexport function getElementZIndex(\n element: HTMLElement,\n cousin: HTMLElement\n): number {\n /**\n * finding the z-index of `element` is not the full story\n * its the CSS stacking context that is important\n * take this DOM for example:\n * body\n * section[z-index: 1000]\n * p[z-index: 500]\n * button\n * div\n *\n * what z-index does the `div` need to display next to `button`?\n * the `div` and `section` are where the stacking context splits\n * so `div` needs to copy `section`'s z-index in order to\n * appear next to / over `button`\n *\n * calculate this by starting at `button` and finding its offsetParents\n * then walk the parents from top -> down until the stacking context\n * split is found, or if there is no split then a specific z-index is unimportant\n */\n\n // build the array of the element + its offset parents\n const nodesToInspect: HTMLElement[] = [];\n // eslint-disable-next-line\n while (true) {\n nodesToInspect.push(element);\n\n // AFAICT this is a valid cast - the libdefs appear wrong\n element = element.offsetParent as HTMLElement;\n\n // stop if there is no parent\n if (element == null) {\n break;\n }\n\n // stop if the parent contains the related element\n // as this is the z-index ancestor\n if (element.contains(cousin)) {\n break;\n }\n }\n\n // reverse the nodes to walk from top -> element\n nodesToInspect.reverse();\n\n for (const node of nodesToInspect) {\n // get this node's z-index css value\n const zIndex = window.document\n .defaultView!.getComputedStyle(node)\n .getPropertyValue('z-index');\n\n // if the z-index is not a number (e.g. \"auto\") return null, else the value\n const parsedZIndex = parseInt(zIndex, 10);\n\n if (!isNaN(parsedZIndex)) {\n return parsedZIndex;\n }\n }\n\n return 0;\n}\n"],"names":["POSITIONS","relatedDimension","top","right","bottom","left","dimensionPositionAttribute","height","width","positionComplements","positionSubstitutes","getBufferValues","buffer","Array","isArray","topBuffer","rightBuffer","bottomBuffer","leftBuffer","findPopoverPosition","anchor","popover","align","position","forcePosition","offset","allowCrossAxis","container","arrowConfig","returnBoundingBox","anchorBoundingBox","getElementBoundingBox","popoverBoundingBox","documentWidth","document","documentElement","clientWidth","window","innerWidth","documentHeight","clientHeight","innerHeight","windowBoundingBox","containerBoundingBox","iterationPositions","iterationAlignments","push","undefined","bestFit","bestPosition","idx","length","iterationPosition","screenCoordinates","getPopoverScreenCoordinates","fit","pageYOffset","pageXOffset","arrow","Error","crossAxisFirstSide","crossAxisSecondSide","crossAxisDimension","crossAxisPosition","crossAxisArrowPosition","getCrossAxisPosition","primaryAxisDimension","primaryAxisPositionName","primaryAxisPosition","primaryAxisArrowPosition","getPrimaryAxisPosition","popoverPlacement","combinedBoundingBox","intersectBoundingBoxes","getVisibleFit","popoverSizeOnCrossAxis","anchorSizeOnCrossAxis","anchorHalfSize","crossAxisPositionOriginal","availableSpace","getAvailableSpace","minimumSpace","arrowBuffer","contentOverflowSize","alignAmount","alignDirection","amountOfShiftNeeded","shiftDirection","alignedOverflowAmount","needsShift","spaceAvailableOnFirstSide","spaceAvailableOnSecondSide","isShiftTowardFirstSide","leastAvailableSpace","Math","min","shiftAmount","arrowWidth","difference","edge","isOffsetDecreasing","popoverSizeOnPrimaryAxis","anchorEdgeOrigin","anchorSizeOnPrimaryAxis","primaryAxisOffset","contentOffset","element","rect","getBoundingClientRect","offsetSide","contentBoundingBox","intersection","intersectionArea","contentArea","firstBox","secondBox","max","getElementZIndex","cousin","nodesToInspect","offsetParent","contains","reverse","node","zIndex","defaultView","getComputedStyle","getPropertyValue","parsedZIndex","parseInt","isNaN"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/utils/popover/index.ts"],"sourcesContent":["/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport type { EuiPopoverPosition } from './types';\n\ntype Dimension = 'height' | 'width';\n\nexport const POSITIONS: EuiPopoverPosition[] = [\n 'top',\n 'right',\n 'bottom',\n 'left'\n];\n\ninterface BoundingBox {\n [position: string]: number;\n top: number;\n right: number;\n bottom: number;\n left: number;\n}\n\nexport interface EuiClientRect extends BoundingBox {\n height: number;\n width: number;\n}\n\nconst relatedDimension: { [position in EuiPopoverPosition]: Dimension } = {\n top: 'height',\n right: 'width',\n bottom: 'height',\n left: 'width'\n};\n\nconst dimensionPositionAttribute: {\n [dimension in Dimension]: 'top' | 'left';\n} = {\n height: 'top',\n width: 'left'\n};\n\nconst positionComplements: {\n [position in EuiPopoverPosition]: EuiPopoverPosition;\n} = {\n top: 'bottom',\n right: 'left',\n bottom: 'top',\n left: 'right'\n};\n\n// always resolving to top/left is taken advantage of by knowing they are the\n// minimum edges of the bounding box\nconst positionSubstitutes: {\n [position in EuiPopoverPosition]: 'left' | 'top';\n} = {\n top: 'left',\n right: 'top',\n bottom: 'left',\n left: 'top'\n};\n\ninterface FindPopoverPositionArgs {\n anchor: HTMLElement;\n popover: HTMLElement;\n host?: HTMLElement | null;\n align?: EuiPopoverPosition;\n position: EuiPopoverPosition;\n forcePosition?: boolean;\n buffer?: number | [number, number, number, number];\n offset?: number;\n allowCrossAxis?: boolean;\n container?: HTMLElement;\n arrowConfig?: { arrowWidth: number; arrowBuffer: number };\n returnBoundingBox?: boolean;\n}\n\ninterface FindPopoverPositionResult {\n top: number;\n left: number;\n position: 'top' | 'right' | 'bottom' | 'left';\n fit: number;\n arrow?: { left: number; top: number };\n anchorBoundingBox?: EuiClientRect;\n}\n\nconst getBufferValues = (\n buffer: number | [number, number, number, number]\n): [number, number, number, number] => {\n if (Array.isArray(buffer)) {\n const [topBuffer, rightBuffer, bottomBuffer, leftBuffer] = buffer;\n\n return [topBuffer, rightBuffer, bottomBuffer, leftBuffer];\n }\n\n return [buffer, buffer, buffer, buffer];\n};\n\n/**\n * Calculates the absolute positioning (relative to document.body) to place a popover element\n *\n * @param anchor {HTMLElement} Element to anchor the popover to\n * @param popover {HTMLElement} Element containing the popover content\n * @param position {string} Position the user wants. One of [\"top\", \"right\", \"bottom\", \"left\"]\n * @param [forcePosition] {boolean} If true, use only the provided `position` value and don't try any other position\n * @param host {HTMLElement} Element the popover must be positioned relative to\n * @param [align] {string} Cross-axis alignment. One of [\"top\", \"right\", \"bottom\", \"left\"]\n * @param [buffer=16] {number} Minimum distance between the popover and the bounding container\n * @param [offset=0] {number} Distance between the popover and the anchor\n * @param [allowCrossAxis=true] {boolean} Whether to allow the popover to be positioned on the cross-axis\n * @param [container] {HTMLElement} Element the popover must be constrained to fit within\n * @param [arrowConfig] {{arrowWidth: number, arrowBuffer: number}} If\n * present, describes the size & constraints for an arrow element, and the\n * function return value will include an `arrow` param with position details\n *\n * @returns {FindPopoverPositionResult} absolute page coordinates for the\n * popover, and the placement's relation to the anchor or undefined\n * there's no room.\n */\nexport function findPopoverPosition({\n anchor,\n popover,\n align,\n position,\n forcePosition,\n host,\n buffer = 16,\n offset = 0,\n allowCrossAxis = true,\n container,\n arrowConfig,\n returnBoundingBox\n}: FindPopoverPositionArgs): FindPopoverPositionResult {\n // find the screen-relative bounding boxes of the anchor, popover, and container\n const anchorBoundingBox = getElementBoundingBox(anchor);\n const popoverBoundingBox = getElementBoundingBox(popover);\n\n // calculate the window's bounds\n // window.(innerWidth|innerHeight) do not account for scrollbars\n // so prefer the clientWidth/clientHeight of the DOM if available\n const documentWidth =\n document.documentElement.clientWidth || window.innerWidth;\n const documentHeight =\n document.documentElement.clientHeight || window.innerHeight;\n const windowBoundingBox: EuiClientRect = {\n top: 0,\n right: documentWidth,\n bottom: documentHeight,\n left: 0,\n height: documentHeight,\n width: documentWidth\n };\n\n // if no container element is given fall back to using the window viewport\n const containerBoundingBox = container\n ? getElementBoundingBox(container)\n : windowBoundingBox;\n\n // the anchor is positioned relative to the host element if provided\n if (host) {\n const hostBoundingBox = getElementBoundingBox(host);\n\n const anchorBoundingRelativeToHost = {\n top: anchorBoundingBox.top - hostBoundingBox.top,\n left: anchorBoundingBox.left - hostBoundingBox.left,\n right: hostBoundingBox.right - anchorBoundingBox.right,\n bottom: hostBoundingBox.bottom - anchorBoundingBox.bottom\n };\n\n\n anchorBoundingBox.top = anchorBoundingRelativeToHost.top;\n anchorBoundingBox.left = anchorBoundingRelativeToHost.left;\n anchorBoundingBox.right = anchorBoundingRelativeToHost.right;\n anchorBoundingBox.bottom = anchorBoundingRelativeToHost.bottom;\n }\n\n /**\n * `position` was specified by the function caller and is a strong hint\n * as to the preferred location of the popover relative to the anchor.\n * However, we strongly prefer showing all of the popover content within\n * the window+container boundary and will iterate over the four\n * possible sides until a perfect fit is located. If none of the locations\n * fully contain popover, the location with the best fit is selected.\n *\n * This approach first checks the preferred `position`, then its opposite\n * along the same axis, next a location on the cross-axis, and finally it\n * tests the remaining position.\n *\n * e.g.\n * if position = \"top\" the order is top, bottom, left right\n * if position = \"right\" the order is right, left, top, bottom\n */\n\n // Try the user-desired position first.\n const iterationPositions = [position];\n\n // keep user-defined alignment in the original positions.\n type valuekey = undefined | EuiPopoverPosition;\n\n const iterationAlignments: valuekey[] = [align];\n\n if (forcePosition !== true) {\n iterationPositions.push(positionComplements[position]); // Try the complementary position.\n iterationAlignments.push(align); // keep user-defined alignment in the complementary position.\n\n if (allowCrossAxis) {\n iterationPositions.push(\n positionSubstitutes[position], // Switch to the cross axis.\n positionComplements[positionSubstitutes[position]] // Try the complementary position on the cross axis.\n );\n iterationAlignments.push(undefined, undefined); // discard desired alignment on cross-axis\n }\n } else {\n // position is forced, if it conflicts with the alignment then reset align to `null`\n // e.g. original placement request for `downLeft` is moved to the `left` side, future calls\n // will position and align `left`, and `leftLeft` is not a valid placement\n if (\n position === align ||\n (align !== undefined && position === positionComplements[align])\n ) {\n iterationAlignments[0] = undefined;\n }\n }\n\n let bestFit: number | undefined = undefined;\n let bestPosition: FindPopoverPositionResult | null = null;\n\n for (let idx = 0; idx < iterationPositions.length; idx++) {\n const iterationPosition = iterationPositions[idx];\n\n // See if we can find a position with a better fit than we've found so far.\n const screenCoordinates = getPopoverScreenCoordinates({\n position: iterationPosition!,\n align: iterationAlignments[idx],\n anchorBoundingBox,\n popoverBoundingBox,\n windowBoundingBox,\n containerBoundingBox,\n offset,\n buffer,\n arrowConfig\n });\n\n if (bestFit === undefined || screenCoordinates.fit > bestFit) {\n bestFit = screenCoordinates.fit;\n bestPosition = {\n fit: screenCoordinates.fit,\n position: iterationPosition!,\n top: screenCoordinates.top + window.pageYOffset,\n left: screenCoordinates.left + window.pageXOffset,\n arrow: screenCoordinates.arrow\n };\n\n // If we've already found the ideal fit, use that position.\n if (bestFit === 1) {\n break;\n }\n }\n\n // If we haven't improved the fit, then continue on and try a new position.\n }\n\n if (bestPosition == null) {\n throw new Error('Failed to calculate bestPosition');\n }\n\n if (returnBoundingBox) {\n bestPosition.anchorBoundingBox = anchorBoundingBox;\n }\n\n return bestPosition;\n}\n\ninterface GetPopoverScreenCoordinatesArgs {\n position: EuiPopoverPosition;\n align?: EuiPopoverPosition;\n anchorBoundingBox: EuiClientRect;\n popoverBoundingBox: EuiClientRect;\n windowBoundingBox: EuiClientRect;\n containerBoundingBox: EuiClientRect;\n arrowConfig?: { arrowWidth: number; arrowBuffer: number };\n offset?: number;\n buffer?: number | [number, number, number, number];\n}\n\ninterface GetPopoverScreenCoordinatesResult {\n top: number;\n left: number;\n fit: number;\n arrow: { top: number; left: number } | undefined;\n}\n\n/**\n * Given a target position and the popover's surrounding context, returns either an\n * object with {top, left} screen coordinates or `null` if it's not possible to show\n * content in the target position\n * @param position {string} the target position, one of [\"top\", \"right\", \"bottom\", \"left\"]\n * @param align {string} target alignment on the cross-axis, one of [\"top\", \"right\", \"bottom\", \"left\"]\n * @param anchorBoundingBox {Object} bounding box of the anchor element\n * @param popoverBoundingBox {Object} bounding box of the popover element\n * @param windowBoundingBox {Object} bounding box of the window\n * @param containerBoundingBox {Object} bounding box of the container\n * @param [arrowConfig] {{arrowWidth: number, arrowBuffer: number}} If present, describes the size &\n * constraints for an arrow element, and the function return value will include an `arrow` param\n * with position details\n * @param [offset=0] {number} Distance between the popover and the anchor\n * @param [buffer=0] {number} Minimum distance between the popover's\n * placement and the container edge\n *\n * @returns {GetPopoverScreenCoordinatesResult}\n * object with top/left coordinates, the popover's relative position to the anchor, and how well the\n * popover fits in the location (0.0 -> 1.0) coordinates and the popover's relative position, if\n * there is no room in this placement then null\n */\nexport function getPopoverScreenCoordinates({\n position,\n align,\n anchorBoundingBox,\n popoverBoundingBox,\n windowBoundingBox,\n containerBoundingBox,\n arrowConfig,\n offset = 0,\n buffer = 0\n}: GetPopoverScreenCoordinatesArgs): GetPopoverScreenCoordinatesResult {\n /**\n * The goal is to find the best way to align the popover content\n * on the given side of the anchor element. The popover prefers\n * centering on the anchor but can shift along the cross-axis as needed.\n *\n * We return the top/left coordinates that best fit the popover inside\n * the given boundaries, and also return the `fit` value which indicates\n * what percentage of the popover is within the bounds.\n *\n * e.g. finding a location when position=top\n * the preferred location is directly over the anchor\n *\n * +----------------------+\n * | popover |\n * +----------------------+\n * v\n * +--------------+\n * | anchor |\n * +--------------+\n *\n * but if anchor doesn't have much (or any) room on its ride side\n * the popover will shift to the left\n *\n * +----------------------+\n * | popover |\n * +----------------------+\n * v\n * +--------------+\n * | anchor |\n * +--------------+\n *\n */\n\n const crossAxisFirstSide = positionSubstitutes[position]; // \"top\" -> \"left\"\n const crossAxisSecondSide = positionComplements[crossAxisFirstSide]; // \"left\" -> \"right\"\n const crossAxisDimension = relatedDimension[crossAxisFirstSide]; // \"left\" -> \"width\"\n\n const [topBuffer, rightBuffer, bottomBuffer, leftBuffer] =\n getBufferValues(buffer);\n\n const { crossAxisPosition, crossAxisArrowPosition } = getCrossAxisPosition({\n crossAxisFirstSide,\n crossAxisSecondSide,\n crossAxisDimension,\n position,\n align,\n buffer,\n offset,\n windowBoundingBox,\n containerBoundingBox,\n popoverBoundingBox,\n anchorBoundingBox,\n arrowConfig\n });\n\n const primaryAxisDimension = relatedDimension[position]; // \"top\" -> \"height\"\n const primaryAxisPositionName =\n dimensionPositionAttribute[primaryAxisDimension]; // \"height\" -> \"top\"\n\n const { primaryAxisPosition, primaryAxisArrowPosition } =\n getPrimaryAxisPosition({\n position,\n offset,\n popoverBoundingBox,\n anchorBoundingBox,\n arrowConfig\n });\n\n const popoverPlacement = {\n [crossAxisFirstSide]: crossAxisPosition,\n [primaryAxisPositionName]: primaryAxisPosition\n };\n\n // calculate the fit of the popover in this location\n // fit is in range 0.0 -> 1.0 and is the percentage of the popover which is visible in this location\n const combinedBoundingBox = intersectBoundingBoxes(\n windowBoundingBox,\n containerBoundingBox\n );\n\n // shrink the visible bounding box by `buffer`\n // to compute a fit value\n combinedBoundingBox.top += topBuffer;\n combinedBoundingBox.right -= rightBuffer;\n combinedBoundingBox.bottom -= bottomBuffer;\n combinedBoundingBox.left += leftBuffer;\n\n const fit = getVisibleFit(\n {\n top: popoverPlacement['top']!,\n right: popoverPlacement['left']! + popoverBoundingBox.width,\n bottom: popoverPlacement['top']! + popoverBoundingBox.height,\n left: popoverPlacement['left']!,\n width: popoverBoundingBox.width,\n height: popoverBoundingBox.height\n },\n combinedBoundingBox\n );\n\n const arrow = arrowConfig\n ? {\n [crossAxisFirstSide]:\n crossAxisArrowPosition! - popoverPlacement[crossAxisFirstSide]!,\n [primaryAxisPositionName]: primaryAxisArrowPosition\n }\n : undefined;\n\n return {\n fit,\n top: popoverPlacement['top']!,\n left: popoverPlacement['left']!,\n arrow: arrow ? { left: arrow['left']!, top: arrow['top']! } : undefined\n };\n}\n\ninterface GetCrossAxisPositionArgs {\n crossAxisFirstSide: EuiPopoverPosition;\n crossAxisSecondSide: EuiPopoverPosition;\n crossAxisDimension: Dimension;\n position: EuiPopoverPosition;\n align?: EuiPopoverPosition;\n buffer: number | [number, number, number, number];\n offset: number;\n windowBoundingBox: EuiClientRect;\n containerBoundingBox: EuiClientRect;\n popoverBoundingBox: EuiClientRect;\n anchorBoundingBox: EuiClientRect;\n arrowConfig?: { arrowWidth: number; arrowBuffer: number };\n}\n\ninterface CrossAxisPosition {\n crossAxisPosition: number;\n crossAxisArrowPosition: number | undefined;\n}\n\nfunction getCrossAxisPosition({\n crossAxisFirstSide,\n crossAxisSecondSide,\n crossAxisDimension,\n position,\n align,\n buffer,\n offset,\n windowBoundingBox,\n containerBoundingBox,\n popoverBoundingBox,\n anchorBoundingBox,\n arrowConfig\n}: GetCrossAxisPositionArgs): CrossAxisPosition {\n // how much of the popover overflows past either side of the anchor if its centered\n const popoverSizeOnCrossAxis = popoverBoundingBox[crossAxisDimension];\n const anchorSizeOnCrossAxis = anchorBoundingBox[crossAxisDimension];\n const anchorHalfSize = anchorSizeOnCrossAxis / 2;\n\n // the popover's original position on the cross-axis is determined by:\n const crossAxisPositionOriginal =\n anchorBoundingBox[crossAxisFirstSide] + // where the anchor is located\n anchorHalfSize - // plus half anchor dimension\n popoverSizeOnCrossAxis / 2; // less half the popover dimension\n\n // To fit the content within both the window and container,\n // compute the smaller of the two spaces along each edge\n const combinedBoundingBox = intersectBoundingBoxes(\n windowBoundingBox,\n containerBoundingBox\n );\n const availableSpace = getAvailableSpace(\n anchorBoundingBox,\n combinedBoundingBox,\n buffer,\n offset,\n position\n );\n const minimumSpace = arrowConfig ? arrowConfig.arrowBuffer : 0;\n\n const contentOverflowSize =\n (popoverSizeOnCrossAxis - anchorSizeOnCrossAxis) / 2;\n\n let alignAmount = 0;\n let alignDirection = 1;\n let amountOfShiftNeeded = 0;\n let shiftDirection = 1;\n\n if (align != null) {\n // no alignment, find how much the container boundary requires the content to shift\n alignDirection = align === 'top' || align === 'left' ? 1 : -1;\n alignAmount = contentOverflowSize;\n\n const alignedOverflowAmount = contentOverflowSize + alignAmount;\n const needsShift =\n alignedOverflowAmount > availableSpace[positionComplements[align]];\n\n amountOfShiftNeeded = needsShift\n ? alignedOverflowAmount - availableSpace[positionComplements[align]]\n : 0;\n shiftDirection = -1 * alignDirection;\n } else {\n // shifting the popover to one side may yield a better fit\n const spaceAvailableOnFirstSide = availableSpace[crossAxisFirstSide];\n const spaceAvailableOnSecondSide = availableSpace[crossAxisSecondSide];\n\n const isShiftTowardFirstSide =\n spaceAvailableOnFirstSide > spaceAvailableOnSecondSide;\n\n shiftDirection = isShiftTowardFirstSide ? -1 : 1;\n\n // determine which direction has more room and the popover should shift to\n const leastAvailableSpace = Math.min(\n spaceAvailableOnFirstSide,\n spaceAvailableOnSecondSide\n );\n\n const needsShift = contentOverflowSize > leastAvailableSpace;\n\n amountOfShiftNeeded = needsShift\n ? contentOverflowSize - leastAvailableSpace\n : 0;\n }\n\n // shift over the popover if necessary\n const shiftAmount = amountOfShiftNeeded * shiftDirection;\n let crossAxisPosition =\n crossAxisPositionOriginal + shiftAmount + alignAmount * alignDirection;\n\n // if an `arrowConfig` is specified, find where to position the arrow\n let crossAxisArrowPosition;\n\n if (arrowConfig) {\n const { arrowWidth } = arrowConfig;\n\n crossAxisArrowPosition =\n anchorBoundingBox[crossAxisFirstSide] + anchorHalfSize - arrowWidth / 2;\n\n // make sure there's enough buffer around the arrow\n // by calculating how how much the arrow would need to move\n // but instead of moving the arrow, shift the popover content\n if (crossAxisArrowPosition < crossAxisPosition + minimumSpace) {\n // arrow is too close to the minimum side\n const difference =\n crossAxisPosition + minimumSpace - crossAxisArrowPosition;\n\n crossAxisPosition -= difference;\n } else if (\n crossAxisArrowPosition + minimumSpace + arrowWidth >\n crossAxisPosition + popoverSizeOnCrossAxis\n ) {\n // arrow is too close to the maximum side\n const edge = crossAxisPosition + popoverSizeOnCrossAxis;\n const difference =\n crossAxisArrowPosition - (edge - minimumSpace - arrowWidth);\n\n crossAxisPosition += difference;\n }\n }\n\n return {\n crossAxisPosition,\n crossAxisArrowPosition\n };\n}\n\ninterface GetPrimaryAxisPositionArgs {\n position: EuiPopoverPosition;\n offset: number;\n popoverBoundingBox: BoundingBox;\n anchorBoundingBox: BoundingBox;\n arrowConfig?: { arrowWidth: number; arrowBuffer: number };\n}\n\nfunction getPrimaryAxisPosition({\n position,\n offset,\n popoverBoundingBox,\n anchorBoundingBox,\n arrowConfig\n}: GetPrimaryAxisPositionArgs): {\n primaryAxisPosition: number;\n primaryAxisArrowPosition: number | undefined;\n} {\n // if positioning to the top or left, the target position decreases\n // from the anchor's top or left, otherwise the position adds to the anchor's\n const isOffsetDecreasing = position === 'top' || position === 'left';\n\n const primaryAxisDimension = relatedDimension[position]; // \"top\" -> \"height\"\n const popoverSizeOnPrimaryAxis = popoverBoundingBox[primaryAxisDimension];\n\n // start at the top or left edge of the anchor element\n const primaryAxisPositionName =\n dimensionPositionAttribute[primaryAxisDimension]; // \"height\" -> \"top\"\n const anchorEdgeOrigin = anchorBoundingBox[primaryAxisPositionName];\n\n // find the popover position on the primary axis\n const anchorSizeOnPrimaryAxis = anchorBoundingBox[primaryAxisDimension];\n const primaryAxisOffset =\n (isOffsetDecreasing ? popoverSizeOnPrimaryAxis : anchorSizeOnPrimaryAxis) ||\n 0;\n const contentOffset =\n (offset + primaryAxisOffset) * (isOffsetDecreasing ? -1 : 1);\n const primaryAxisPosition = anchorEdgeOrigin + contentOffset;\n\n let primaryAxisArrowPosition;\n\n if (arrowConfig) {\n primaryAxisArrowPosition = isOffsetDecreasing\n ? popoverSizeOnPrimaryAxis\n : 0;\n }\n\n return {\n primaryAxisPosition,\n primaryAxisArrowPosition\n };\n}\n\n/**\n * Finds the client pixel coordinate of each edge for the element's bounding box,\n * and the bounding box's width & height\n *\n * @param {HTMLElement} element\n * @returns {{top: number, right: number, bottom: number, left: number, height: number, width: number}}\n */\nexport function getElementBoundingBox(element: HTMLElement): EuiClientRect {\n const rect = element.getBoundingClientRect();\n\n return {\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom,\n left: rect.left,\n height: rect.height,\n width: rect.width\n };\n}\n\n/**\n * Calculates the available content space between anchor and container\n *\n * @param {Object} anchorBoundingBox Client bounding box of the anchor element\n * @param {Object} containerBoundingBox Client bounding box of the container element\n * @param {number} buffer Minimum distance between the popover and the bounding container\n * @param {number} offset Distance between the popover and the anchor\n * @param {string} offsetSide Side the offset needs to be applied to, one\n * of [\"top\", \"right\", \"bottom\", \"left\"]\n * @returns {{top: number, right: number, bottom: number, left: number}}\n */\nexport function getAvailableSpace(\n anchorBoundingBox: BoundingBox,\n containerBoundingBox: BoundingBox,\n buffer: number | [number, number, number, number],\n offset: number,\n offsetSide: EuiPopoverPosition\n): BoundingBox {\n const [topBuffer, rightBuffer, bottomBuffer, leftBuffer] =\n getBufferValues(buffer);\n\n return {\n top:\n anchorBoundingBox.top -\n containerBoundingBox.top -\n topBuffer -\n (offsetSide === 'top' ? offset : 0),\n right:\n containerBoundingBox.right -\n anchorBoundingBox.right -\n rightBuffer -\n (offsetSide === 'right' ? offset : 0),\n bottom:\n containerBoundingBox.bottom -\n anchorBoundingBox.bottom -\n bottomBuffer -\n (offsetSide === 'bottom' ? offset : 0),\n left:\n anchorBoundingBox.left -\n containerBoundingBox.left -\n leftBuffer -\n (offsetSide === 'left' ? offset : 0)\n };\n}\n\n/**\n * Computes the fit (overlap) of the content within the container, fit is in range 0.0 => 1.0\n * @param contentBoundingBox bounding box of content to calculate fit for\n * @param containerBoundingBox bounding box of container\n * @returns {number}\n */\nexport function getVisibleFit(\n contentBoundingBox: BoundingBox,\n containerBoundingBox: BoundingBox\n): number {\n const intersection = intersectBoundingBoxes(\n contentBoundingBox,\n containerBoundingBox\n );\n\n if (\n intersection.left > intersection.right ||\n intersection.top > intersection.top\n ) {\n // there is no intersection, the boxes are completely separated on at least one axis\n return 0;\n }\n\n const intersectionArea =\n (intersection.right - intersection.left) *\n (intersection.bottom - intersection.top);\n const contentArea =\n (contentBoundingBox.right - contentBoundingBox.left) *\n (contentBoundingBox.bottom - contentBoundingBox.top);\n\n return intersectionArea / contentArea;\n}\n\n/**\n * Calculates the intersection space between two bounding boxes\n *\n * @param firstBox\n * @param secondBox\n * @returns {EuiClientRect}\n */\nexport function intersectBoundingBoxes(\n firstBox: BoundingBox,\n secondBox: BoundingBox\n): EuiClientRect {\n const top = Math.max(firstBox.top, secondBox.top);\n const right = Math.min(firstBox.right, secondBox.right);\n const bottom = Math.min(firstBox.bottom, secondBox.bottom);\n const left = Math.max(firstBox.left, secondBox.left);\n const height = Math.max(bottom - top, 0);\n const width = Math.max(right - left, 0);\n\n return {\n top,\n right,\n bottom,\n left,\n height,\n width\n };\n}\n\n/**\n * Returns the top-most defined z-index in the element's ancestor hierarchy\n * relative to the `target` element; if no z-index is defined, returns 0\n * @param element {HTMLElement}\n * @param cousin {HTMLElement}\n * @returns {number}\n */\nexport function getElementZIndex(\n element: HTMLElement,\n cousin: HTMLElement\n): number {\n /**\n * finding the z-index of `element` is not the full story\n * its the CSS stacking context that is important\n * take this DOM for example:\n * body\n * section[z-index: 1000]\n * p[z-index: 500]\n * button\n * div\n *\n * what z-index does the `div` need to display next to `button`?\n * the `div` and `section` are where the stacking context splits\n * so `div` needs to copy `section`'s z-index in order to\n * appear next to / over `button`\n *\n * calculate this by starting at `button` and finding its offsetParents\n * then walk the parents from top -> down until the stacking context\n * split is found, or if there is no split then a specific z-index is unimportant\n */\n\n // build the array of the element + its offset parents\n const nodesToInspect: HTMLElement[] = [];\n // eslint-disable-next-line\n while (true) {\n nodesToInspect.push(element);\n\n // AFAICT this is a valid cast - the libdefs appear wrong\n element = element.offsetParent as HTMLElement;\n\n // stop if there is no parent\n if (element == null) {\n break;\n }\n\n // stop if the parent contains the related element\n // as this is the z-index ancestor\n if (element.contains(cousin)) {\n break;\n }\n }\n\n // reverse the nodes to walk from top -> element\n nodesToInspect.reverse();\n\n for (const node of nodesToInspect) {\n // get this node's z-index css value\n const zIndex = window.document\n .defaultView!.getComputedStyle(node)\n .getPropertyValue('z-index');\n\n // if the z-index is not a number (e.g. \"auto\") return null, else the value\n const parsedZIndex = parseInt(zIndex, 10);\n\n if (!isNaN(parsedZIndex)) {\n return parsedZIndex;\n }\n }\n\n return 0;\n}\n"],"names":["POSITIONS","relatedDimension","top","right","bottom","left","dimensionPositionAttribute","height","width","positionComplements","positionSubstitutes","getBufferValues","buffer","Array","isArray","topBuffer","rightBuffer","bottomBuffer","leftBuffer","findPopoverPosition","anchor","popover","align","position","forcePosition","host","offset","allowCrossAxis","container","arrowConfig","returnBoundingBox","anchorBoundingBox","getElementBoundingBox","popoverBoundingBox","documentWidth","document","documentElement","clientWidth","window","innerWidth","documentHeight","clientHeight","innerHeight","windowBoundingBox","containerBoundingBox","hostBoundingBox","anchorBoundingRelativeToHost","iterationPositions","iterationAlignments","push","undefined","bestFit","bestPosition","idx","length","iterationPosition","screenCoordinates","getPopoverScreenCoordinates","fit","pageYOffset","pageXOffset","arrow","Error","crossAxisFirstSide","crossAxisSecondSide","crossAxisDimension","crossAxisPosition","crossAxisArrowPosition","getCrossAxisPosition","primaryAxisDimension","primaryAxisPositionName","primaryAxisPosition","primaryAxisArrowPosition","getPrimaryAxisPosition","popoverPlacement","combinedBoundingBox","intersectBoundingBoxes","getVisibleFit","popoverSizeOnCrossAxis","anchorSizeOnCrossAxis","anchorHalfSize","crossAxisPositionOriginal","availableSpace","getAvailableSpace","minimumSpace","arrowBuffer","contentOverflowSize","alignAmount","alignDirection","amountOfShiftNeeded","shiftDirection","alignedOverflowAmount","needsShift","spaceAvailableOnFirstSide","spaceAvailableOnSecondSide","isShiftTowardFirstSide","leastAvailableSpace","Math","min","shiftAmount","arrowWidth","difference","edge","isOffsetDecreasing","popoverSizeOnPrimaryAxis","anchorEdgeOrigin","anchorSizeOnPrimaryAxis","primaryAxisOffset","contentOffset","element","rect","getBoundingClientRect","offsetSide","contentBoundingBox","intersection","intersectionArea","contentArea","firstBox","secondBox","max","getElementZIndex","cousin","nodesToInspect","offsetParent","contains","reverse","node","zIndex","defaultView","getComputedStyle","getPropertyValue","parsedZIndex","parseInt","isNaN"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAMO,MAAMA,SAA+B,GAAG,CAC7C,KAAK,EACL,OAAO,EACP,QAAQ,EACR,MAAM,EACP;AAeD,MAAMC,gBAAiE,GAAG;AACxEC,EAAAA,GAAG,EAAE,QAAQ;AACbC,EAAAA,KAAK,EAAE,OAAO;AACdC,EAAAA,MAAM,EAAE,QAAQ;AAChBC,EAAAA,IAAI,EAAE,OAAA;AACR,CAAC,CAAA;AAED,MAAMC,0BAEL,GAAG;AACFC,EAAAA,MAAM,EAAE,KAAK;AACbC,EAAAA,KAAK,EAAE,MAAA;AACT,CAAC,CAAA;AAED,MAAMC,mBAEL,GAAG;AACFP,EAAAA,GAAG,EAAE,QAAQ;AACbC,EAAAA,KAAK,EAAE,MAAM;AACbC,EAAAA,MAAM,EAAE,KAAK;AACbC,EAAAA,IAAI,EAAE,OAAA;AACR,CAAC,CAAA;;AAED;AACA;AACA,MAAMK,mBAEL,GAAG;AACFR,EAAAA,GAAG,EAAE,MAAM;AACXC,EAAAA,KAAK,EAAE,KAAK;AACZC,EAAAA,MAAM,EAAE,MAAM;AACdC,EAAAA,IAAI,EAAE,KAAA;AACR,CAAC,CAAA;AA0BD,MAAMM,eAAe,GACnBC,MAAiD,IACZ;AACrC,EAAA,IAAIC,KAAK,CAACC,OAAO,CAACF,MAAM,CAAC,EAAE;IACzB,MAAM,CAACG,SAAS,EAAEC,WAAW,EAAEC,YAAY,EAAEC,UAAU,CAAC,GAAGN,MAAM,CAAA;IAEjE,OAAO,CAACG,SAAS,EAAEC,WAAW,EAAEC,YAAY,EAAEC,UAAU,CAAC,CAAA;AAC3D,GAAA;EAEA,OAAO,CAACN,MAAM,EAAEA,MAAM,EAAEA,MAAM,EAAEA,MAAM,CAAC,CAAA;AACzC,CAAC,CAAA;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASO,mBAAmBA,CAAC;EAClCC,MAAM;EACNC,OAAO;EACPC,KAAK;EACLC,QAAQ;EACRC,aAAa;EACbC,IAAI;AACJb,EAAAA,MAAM,GAAG,EAAE;AACXc,EAAAA,MAAM,GAAG,CAAC;AACVC,EAAAA,cAAc,GAAG,IAAI;EACrBC,SAAS;EACTC,WAAW;AACXC,EAAAA,iBAAAA;AACuB,CAAC,EAA6B;AACrD;AACA,EAAA,MAAMC,iBAAiB,GAAGC,qBAAqB,CAACZ,MAAM,CAAC,CAAA;AACvD,EAAA,MAAMa,kBAAkB,GAAGD,qBAAqB,CAACX,OAAO,CAAC,CAAA;;AAEzD;AACA;AACA;EACA,MAAMa,aAAa,GACjBC,QAAQ,CAACC,eAAe,CAACC,WAAW,IAAIC,MAAM,CAACC,UAAU,CAAA;EAC3D,MAAMC,cAAc,GAClBL,QAAQ,CAACC,eAAe,CAACK,YAAY,IAAIH,MAAM,CAACI,WAAW,CAAA;AAC7D,EAAA,MAAMC,iBAAgC,GAAG;AACvCzC,IAAAA,GAAG,EAAE,CAAC;AACNC,IAAAA,KAAK,EAAE+B,aAAa;AACpB9B,IAAAA,MAAM,EAAEoC,cAAc;AACtBnC,IAAAA,IAAI,EAAE,CAAC;AACPE,IAAAA,MAAM,EAAEiC,cAAc;AACtBhC,IAAAA,KAAK,EAAE0B,aAAAA;GACR,CAAA;;AAED;EACA,MAAMU,oBAAoB,GAAGhB,SAAS,GAClCI,qBAAqB,CAACJ,SAAS,CAAC,GAChCe,iBAAiB,CAAA;;AAErB;AACA,EAAA,IAAIlB,IAAI,EAAE;AACR,IAAA,MAAMoB,eAAe,GAAGb,qBAAqB,CAACP,IAAI,CAAC,CAAA;AAEnD,IAAA,MAAMqB,4BAA4B,GAAG;AACnC5C,MAAAA,GAAG,EAAE6B,iBAAiB,CAAC7B,GAAG,GAAG2C,eAAe,CAAC3C,GAAG;AAChDG,MAAAA,IAAI,EAAE0B,iBAAiB,CAAC1B,IAAI,GAAGwC,eAAe,CAACxC,IAAI;AACnDF,MAAAA,KAAK,EAAE0C,eAAe,CAAC1C,KAAK,GAAG4B,iBAAiB,CAAC5B,KAAK;AACtDC,MAAAA,MAAM,EAAEyC,eAAe,CAACzC,MAAM,GAAG2B,iBAAiB,CAAC3B,MAAAA;KACpD,CAAA;AAGD2B,IAAAA,iBAAiB,CAAC7B,GAAG,GAAG4C,4BAA4B,CAAC5C,GAAG,CAAA;AACxD6B,IAAAA,iBAAiB,CAAC1B,IAAI,GAAGyC,4BAA4B,CAACzC,IAAI,CAAA;AAC1D0B,IAAAA,iBAAiB,CAAC5B,KAAK,GAAG2C,4BAA4B,CAAC3C,KAAK,CAAA;AAC5D4B,IAAAA,iBAAiB,CAAC3B,MAAM,GAAG0C,4BAA4B,CAAC1C,MAAM,CAAA;AAChE,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEE;AACA,EAAA,MAAM2C,kBAAkB,GAAG,CAACxB,QAAQ,CAAC,CAAA;;AAErC;;AAGA,EAAA,MAAMyB,mBAA+B,GAAG,CAAC1B,KAAK,CAAC,CAAA;EAE/C,IAAIE,aAAa,KAAK,IAAI,EAAE;IAC1BuB,kBAAkB,CAACE,IAAI,CAACxC,mBAAmB,CAACc,QAAQ,CAAC,CAAC,CAAC;AACvDyB,IAAAA,mBAAmB,CAACC,IAAI,CAAC3B,KAAK,CAAC,CAAC;;AAEhC,IAAA,IAAIK,cAAc,EAAE;AAClBoB,MAAAA,kBAAkB,CAACE,IAAI,CACrBvC,mBAAmB,CAACa,QAAQ,CAAC;AAAE;AAC/Bd,MAAAA,mBAAmB,CAACC,mBAAmB,CAACa,QAAQ,CAAC,CAAC;OACnD,CAAA;MACDyB,mBAAmB,CAACC,IAAI,CAACC,SAAS,EAAEA,SAAS,CAAC,CAAC;AACjD,KAAA;AACF,GAAC,MAAM;AACL;AACA;AACA;AACA,IAAA,IACE3B,QAAQ,KAAKD,KAAK,IACjBA,KAAK,KAAK4B,SAAS,IAAI3B,QAAQ,KAAKd,mBAAmB,CAACa,KAAK,CAAE,EAChE;AACA0B,MAAAA,mBAAmB,CAAC,CAAC,CAAC,GAAGE,SAAS,CAAA;AACpC,KAAA;AACF,GAAA;EAEA,IAAIC,OAA2B,GAAGD,SAAS,CAAA;EAC3C,IAAIE,YAA8C,GAAG,IAAI,CAAA;AAEzD,EAAA,KAAK,IAAIC,GAAG,GAAG,CAAC,EAAEA,GAAG,GAAGN,kBAAkB,CAACO,MAAM,EAAED,GAAG,EAAE,EAAE;AACxD,IAAA,MAAME,iBAAiB,GAAGR,kBAAkB,CAACM,GAAG,CAAC,CAAA;;AAEjD;IACA,MAAMG,iBAAiB,GAAGC,2BAA2B,CAAC;AACpDlC,MAAAA,QAAQ,EAAEgC,iBAAkB;AAC5BjC,MAAAA,KAAK,EAAE0B,mBAAmB,CAACK,GAAG,CAAC;MAC/BtB,iBAAiB;MACjBE,kBAAkB;MAClBU,iBAAiB;MACjBC,oBAAoB;MACpBlB,MAAM;MACNd,MAAM;AACNiB,MAAAA,WAAAA;AACF,KAAC,CAAC,CAAA;IAEF,IAAIsB,OAAO,KAAKD,SAAS,IAAIM,iBAAiB,CAACE,GAAG,GAAGP,OAAO,EAAE;MAC5DA,OAAO,GAAGK,iBAAiB,CAACE,GAAG,CAAA;AAC/BN,MAAAA,YAAY,GAAG;QACbM,GAAG,EAAEF,iBAAiB,CAACE,GAAG;AAC1BnC,QAAAA,QAAQ,EAAEgC,iBAAkB;AAC5BrD,QAAAA,GAAG,EAAEsD,iBAAiB,CAACtD,GAAG,GAAGoC,MAAM,CAACqB,WAAW;AAC/CtD,QAAAA,IAAI,EAAEmD,iBAAiB,CAACnD,IAAI,GAAGiC,MAAM,CAACsB,WAAW;QACjDC,KAAK,EAAEL,iBAAiB,CAACK,KAAAA;OAC1B,CAAA;;AAED;MACA,IAAIV,OAAO,KAAK,CAAC,EAAE;AACjB,QAAA,MAAA;AACF,OAAA;AACF,KAAA;;AAEA;AACF,GAAA;EAEA,IAAIC,YAAY,IAAI,IAAI,EAAE;AACxB,IAAA,MAAM,IAAIU,KAAK,CAAC,kCAAkC,CAAC,CAAA;AACrD,GAAA;AAEA,EAAA,IAAIhC,iBAAiB,EAAE;IACrBsB,YAAY,CAACrB,iBAAiB,GAAGA,iBAAiB,CAAA;AACpD,GAAA;AAEA,EAAA,OAAOqB,YAAY,CAAA;AACrB,CAAA;AAqBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASK,2BAA2BA,CAAC;EAC1ClC,QAAQ;EACRD,KAAK;EACLS,iBAAiB;EACjBE,kBAAkB;EAClBU,iBAAiB;EACjBC,oBAAoB;EACpBf,WAAW;AACXH,EAAAA,MAAM,GAAG,CAAC;AACVd,EAAAA,MAAM,GAAG,CAAA;AACsB,CAAC,EAAqC;AACrE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEE,EAAA,MAAMmD,kBAAkB,GAAGrD,mBAAmB,CAACa,QAAQ,CAAC,CAAC;AACzD,EAAA,MAAMyC,mBAAmB,GAAGvD,mBAAmB,CAACsD,kBAAkB,CAAC,CAAC;AACpE,EAAA,MAAME,kBAAkB,GAAGhE,gBAAgB,CAAC8D,kBAAkB,CAAC,CAAC;;AAEhE,EAAA,MAAM,CAAChD,SAAS,EAAEC,WAAW,EAAEC,YAAY,EAAEC,UAAU,CAAC,GACtDP,eAAe,CAACC,MAAM,CAAC,CAAA;EAEzB,MAAM;IAAEsD,iBAAiB;AAAEC,IAAAA,sBAAAA;GAAwB,GAAGC,oBAAoB,CAAC;IACzEL,kBAAkB;IAClBC,mBAAmB;IACnBC,kBAAkB;IAClB1C,QAAQ;IACRD,KAAK;IACLV,MAAM;IACNc,MAAM;IACNiB,iBAAiB;IACjBC,oBAAoB;IACpBX,kBAAkB;IAClBF,iBAAiB;AACjBF,IAAAA,WAAAA;AACF,GAAC,CAAC,CAAA;AAEF,EAAA,MAAMwC,oBAAoB,GAAGpE,gBAAgB,CAACsB,QAAQ,CAAC,CAAC;AACxD,EAAA,MAAM+C,uBAAuB,GAC3BhE,0BAA0B,CAAC+D,oBAAoB,CAAC,CAAC;;EAEnD,MAAM;IAAEE,mBAAmB;AAAEC,IAAAA,wBAAAA;GAA0B,GACrDC,sBAAsB,CAAC;IACrBlD,QAAQ;IACRG,MAAM;IACNO,kBAAkB;IAClBF,iBAAiB;AACjBF,IAAAA,WAAAA;AACF,GAAC,CAAC,CAAA;AAEJ,EAAA,MAAM6C,gBAAgB,GAAG;IACvB,CAACX,kBAAkB,GAAGG,iBAAiB;AACvC,IAAA,CAACI,uBAAuB,GAAGC,mBAAAA;GAC5B,CAAA;;AAED;AACA;AACA,EAAA,MAAMI,mBAAmB,GAAGC,sBAAsB,CAChDjC,iBAAiB,EACjBC,oBACF,CAAC,CAAA;;AAED;AACA;EACA+B,mBAAmB,CAACzE,GAAG,IAAIa,SAAS,CAAA;EACpC4D,mBAAmB,CAACxE,KAAK,IAAIa,WAAW,CAAA;EACxC2D,mBAAmB,CAACvE,MAAM,IAAIa,YAAY,CAAA;EAC1C0D,mBAAmB,CAACtE,IAAI,IAAIa,UAAU,CAAA;EAEtC,MAAMwC,GAAG,GAAGmB,aAAa,CACvB;AACE3E,IAAAA,GAAG,EAAEwE,gBAAgB,CAAC,KAAK,CAAE;IAC7BvE,KAAK,EAAEuE,gBAAgB,CAAC,MAAM,CAAC,GAAIzC,kBAAkB,CAACzB,KAAK;IAC3DJ,MAAM,EAAEsE,gBAAgB,CAAC,KAAK,CAAC,GAAIzC,kBAAkB,CAAC1B,MAAM;AAC5DF,IAAAA,IAAI,EAAEqE,gBAAgB,CAAC,MAAM,CAAE;IAC/BlE,KAAK,EAAEyB,kBAAkB,CAACzB,KAAK;IAC/BD,MAAM,EAAE0B,kBAAkB,CAAC1B,MAAAA;GAC5B,EACDoE,mBACF,CAAC,CAAA;EAED,MAAMd,KAAK,GAAGhC,WAAW,GACrB;AACE,IAAA,CAACkC,kBAAkB,GACjBI,sBAAsB,GAAIO,gBAAgB,CAACX,kBAAkB,CAAE;AACjE,IAAA,CAACO,uBAAuB,GAAGE,wBAAAA;AAC7B,GAAC,GACDtB,SAAS,CAAA;EAEb,OAAO;IACLQ,GAAG;AACHxD,IAAAA,GAAG,EAAEwE,gBAAgB,CAAC,KAAK,CAAE;AAC7BrE,IAAAA,IAAI,EAAEqE,gBAAgB,CAAC,MAAM,CAAE;IAC/Bb,KAAK,EAAEA,KAAK,GAAG;AAAExD,MAAAA,IAAI,EAAEwD,KAAK,CAAC,MAAM,CAAE;MAAE3D,GAAG,EAAE2D,KAAK,CAAC,KAAK,CAAA;AAAG,KAAC,GAAGX,SAAAA;GAC/D,CAAA;AACH,CAAA;AAsBA,SAASkB,oBAAoBA,CAAC;EAC5BL,kBAAkB;EAClBC,mBAAmB;EACnBC,kBAAkB;EAClB1C,QAAQ;EACRD,KAAK;EACLV,MAAM;EACNc,MAAM;EACNiB,iBAAiB;EACjBC,oBAAoB;EACpBX,kBAAkB;EAClBF,iBAAiB;AACjBF,EAAAA,WAAAA;AACwB,CAAC,EAAqB;AAC9C;AACA,EAAA,MAAMiD,sBAAsB,GAAG7C,kBAAkB,CAACgC,kBAAkB,CAAC,CAAA;AACrE,EAAA,MAAMc,qBAAqB,GAAGhD,iBAAiB,CAACkC,kBAAkB,CAAC,CAAA;AACnE,EAAA,MAAMe,cAAc,GAAGD,qBAAqB,GAAG,CAAC,CAAA;;AAEhD;AACA,EAAA,MAAME,yBAAyB,GAC7BlD,iBAAiB,CAACgC,kBAAkB,CAAC;AAAG;EACxCiB,cAAc;AAAG;EACjBF,sBAAsB,GAAG,CAAC,CAAC;;AAE7B;AACA;AACA,EAAA,MAAMH,mBAAmB,GAAGC,sBAAsB,CAChDjC,iBAAiB,EACjBC,oBACF,CAAC,CAAA;AACD,EAAA,MAAMsC,cAAc,GAAGC,iBAAiB,CACtCpD,iBAAiB,EACjB4C,mBAAmB,EACnB/D,MAAM,EACNc,MAAM,EACNH,QACF,CAAC,CAAA;EACD,MAAM6D,YAAY,GAAGvD,WAAW,GAAGA,WAAW,CAACwD,WAAW,GAAG,CAAC,CAAA;AAE9D,EAAA,MAAMC,mBAAmB,GACvB,CAACR,sBAAsB,GAAGC,qBAAqB,IAAI,CAAC,CAAA;EAEtD,IAAIQ,WAAW,GAAG,CAAC,CAAA;EACnB,IAAIC,cAAc,GAAG,CAAC,CAAA;EACtB,IAAIC,mBAAmB,GAAG,CAAC,CAAA;EAC3B,IAAIC,cAAc,GAAG,CAAC,CAAA;EAEtB,IAAIpE,KAAK,IAAI,IAAI,EAAE;AACjB;AACAkE,IAAAA,cAAc,GAAGlE,KAAK,KAAK,KAAK,IAAIA,KAAK,KAAK,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;AAC7DiE,IAAAA,WAAW,GAAGD,mBAAmB,CAAA;AAEjC,IAAA,MAAMK,qBAAqB,GAAGL,mBAAmB,GAAGC,WAAW,CAAA;IAC/D,MAAMK,UAAU,GACdD,qBAAqB,GAAGT,cAAc,CAACzE,mBAAmB,CAACa,KAAK,CAAC,CAAC,CAAA;AAEpEmE,IAAAA,mBAAmB,GAAGG,UAAU,GAC5BD,qBAAqB,GAAGT,cAAc,CAACzE,mBAAmB,CAACa,KAAK,CAAC,CAAC,GAClE,CAAC,CAAA;AACLoE,IAAAA,cAAc,GAAG,CAAC,CAAC,GAAGF,cAAc,CAAA;AACtC,GAAC,MAAM;AACL;AACA,IAAA,MAAMK,yBAAyB,GAAGX,cAAc,CAACnB,kBAAkB,CAAC,CAAA;AACpE,IAAA,MAAM+B,0BAA0B,GAAGZ,cAAc,CAAClB,mBAAmB,CAAC,CAAA;AAEtE,IAAA,MAAM+B,sBAAsB,GAC1BF,yBAAyB,GAAGC,0BAA0B,CAAA;AAExDJ,IAAAA,cAAc,GAAGK,sBAAsB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;;AAEhD;IACA,MAAMC,mBAAmB,GAAGC,IAAI,CAACC,GAAG,CAClCL,yBAAyB,EACzBC,0BACF,CAAC,CAAA;AAED,IAAA,MAAMF,UAAU,GAAGN,mBAAmB,GAAGU,mBAAmB,CAAA;AAE5DP,IAAAA,mBAAmB,GAAGG,UAAU,GAC5BN,mBAAmB,GAAGU,mBAAmB,GACzC,CAAC,CAAA;AACP,GAAA;;AAEA;AACA,EAAA,MAAMG,WAAW,GAAGV,mBAAmB,GAAGC,cAAc,CAAA;EACxD,IAAIxB,iBAAiB,GACnBe,yBAAyB,GAAGkB,WAAW,GAAGZ,WAAW,GAAGC,cAAc,CAAA;;AAExE;AACA,EAAA,IAAIrB,sBAAsB,CAAA;AAE1B,EAAA,IAAItC,WAAW,EAAE;IACf,MAAM;AAAEuE,MAAAA,UAAAA;AAAW,KAAC,GAAGvE,WAAW,CAAA;IAElCsC,sBAAsB,GACpBpC,iBAAiB,CAACgC,kBAAkB,CAAC,GAAGiB,cAAc,GAAGoB,UAAU,GAAG,CAAC,CAAA;;AAEzE;AACA;AACA;AACA,IAAA,IAAIjC,sBAAsB,GAAGD,iBAAiB,GAAGkB,YAAY,EAAE;AAC7D;AACA,MAAA,MAAMiB,UAAU,GACdnC,iBAAiB,GAAGkB,YAAY,GAAGjB,sBAAsB,CAAA;AAE3DD,MAAAA,iBAAiB,IAAImC,UAAU,CAAA;KAChC,MAAM,IACLlC,sBAAsB,GAAGiB,YAAY,GAAGgB,UAAU,GAClDlC,iBAAiB,GAAGY,sBAAsB,EAC1C;AACA;AACA,MAAA,MAAMwB,IAAI,GAAGpC,iBAAiB,GAAGY,sBAAsB,CAAA;MACvD,MAAMuB,UAAU,GACdlC,sBAAsB,IAAImC,IAAI,GAAGlB,YAAY,GAAGgB,UAAU,CAAC,CAAA;AAE7DlC,MAAAA,iBAAiB,IAAImC,UAAU,CAAA;AACjC,KAAA;AACF,GAAA;EAEA,OAAO;IACLnC,iBAAiB;AACjBC,IAAAA,sBAAAA;GACD,CAAA;AACH,CAAA;AAUA,SAASM,sBAAsBA,CAAC;EAC9BlD,QAAQ;EACRG,MAAM;EACNO,kBAAkB;EAClBF,iBAAiB;AACjBF,EAAAA,WAAAA;AAC0B,CAAC,EAG3B;AACA;AACA;EACA,MAAM0E,kBAAkB,GAAGhF,QAAQ,KAAK,KAAK,IAAIA,QAAQ,KAAK,MAAM,CAAA;AAEpE,EAAA,MAAM8C,oBAAoB,GAAGpE,gBAAgB,CAACsB,QAAQ,CAAC,CAAC;AACxD,EAAA,MAAMiF,wBAAwB,GAAGvE,kBAAkB,CAACoC,oBAAoB,CAAC,CAAA;;AAEzE;AACA,EAAA,MAAMC,uBAAuB,GAC3BhE,0BAA0B,CAAC+D,oBAAoB,CAAC,CAAC;AACnD,EAAA,MAAMoC,gBAAgB,GAAG1E,iBAAiB,CAACuC,uBAAuB,CAAC,CAAA;;AAEnE;AACA,EAAA,MAAMoC,uBAAuB,GAAG3E,iBAAiB,CAACsC,oBAAoB,CAAC,CAAA;EACvE,MAAMsC,iBAAiB,GACrB,CAACJ,kBAAkB,GAAGC,wBAAwB,GAAGE,uBAAuB,KACxE,CAAC,CAAA;AACH,EAAA,MAAME,aAAa,GACjB,CAAClF,MAAM,GAAGiF,iBAAiB,KAAKJ,kBAAkB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;AAC9D,EAAA,MAAMhC,mBAAmB,GAAGkC,gBAAgB,GAAGG,aAAa,CAAA;AAE5D,EAAA,IAAIpC,wBAAwB,CAAA;AAE5B,EAAA,IAAI3C,WAAW,EAAE;AACf2C,IAAAA,wBAAwB,GAAG+B,kBAAkB,GACzCC,wBAAwB,GACxB,CAAC,CAAA;AACP,GAAA;EAEA,OAAO;IACLjC,mBAAmB;AACnBC,IAAAA,wBAAAA;GACD,CAAA;AACH,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASxC,qBAAqBA,CAAC6E,OAAoB,EAAiB;AACzE,EAAA,MAAMC,IAAI,GAAGD,OAAO,CAACE,qBAAqB,EAAE,CAAA;EAE5C,OAAO;IACL7G,GAAG,EAAE4G,IAAI,CAAC5G,GAAG;IACbC,KAAK,EAAE2G,IAAI,CAAC3G,KAAK;IACjBC,MAAM,EAAE0G,IAAI,CAAC1G,MAAM;IACnBC,IAAI,EAAEyG,IAAI,CAACzG,IAAI;IACfE,MAAM,EAAEuG,IAAI,CAACvG,MAAM;IACnBC,KAAK,EAAEsG,IAAI,CAACtG,KAAAA;GACb,CAAA;AACH,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS2E,iBAAiBA,CAC/BpD,iBAA8B,EAC9Ba,oBAAiC,EACjChC,MAAiD,EACjDc,MAAc,EACdsF,UAA8B,EACjB;AACb,EAAA,MAAM,CAACjG,SAAS,EAAEC,WAAW,EAAEC,YAAY,EAAEC,UAAU,CAAC,GACtDP,eAAe,CAACC,MAAM,CAAC,CAAA;EAEzB,OAAO;AACLV,IAAAA,GAAG,EACD6B,iBAAiB,CAAC7B,GAAG,GACrB0C,oBAAoB,CAAC1C,GAAG,GACxBa,SAAS,IACRiG,UAAU,KAAK,KAAK,GAAGtF,MAAM,GAAG,CAAC,CAAC;AACrCvB,IAAAA,KAAK,EACHyC,oBAAoB,CAACzC,KAAK,GAC1B4B,iBAAiB,CAAC5B,KAAK,GACvBa,WAAW,IACVgG,UAAU,KAAK,OAAO,GAAGtF,MAAM,GAAG,CAAC,CAAC;AACvCtB,IAAAA,MAAM,EACJwC,oBAAoB,CAACxC,MAAM,GAC3B2B,iBAAiB,CAAC3B,MAAM,GACxBa,YAAY,IACX+F,UAAU,KAAK,QAAQ,GAAGtF,MAAM,GAAG,CAAC,CAAC;AACxCrB,IAAAA,IAAI,EACF0B,iBAAiB,CAAC1B,IAAI,GACtBuC,oBAAoB,CAACvC,IAAI,GACzBa,UAAU,IACT8F,UAAU,KAAK,MAAM,GAAGtF,MAAM,GAAG,CAAC,CAAA;GACtC,CAAA;AACH,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASmD,aAAaA,CAC3BoC,kBAA+B,EAC/BrE,oBAAiC,EACzB;AACR,EAAA,MAAMsE,YAAY,GAAGtC,sBAAsB,CACzCqC,kBAAkB,EAClBrE,oBACF,CAAC,CAAA;AAED,EAAA,IACEsE,YAAY,CAAC7G,IAAI,GAAG6G,YAAY,CAAC/G,KAAK,IACtC+G,YAAY,CAAChH,GAAG,GAAGgH,YAAY,CAAChH,GAAG,EACnC;AACA;AACA,IAAA,OAAO,CAAC,CAAA;AACV,GAAA;AAEA,EAAA,MAAMiH,gBAAgB,GACpB,CAACD,YAAY,CAAC/G,KAAK,GAAG+G,YAAY,CAAC7G,IAAI,KACtC6G,YAAY,CAAC9G,MAAM,GAAG8G,YAAY,CAAChH,GAAG,CAAC,CAAA;AAC1C,EAAA,MAAMkH,WAAW,GACf,CAACH,kBAAkB,CAAC9G,KAAK,GAAG8G,kBAAkB,CAAC5G,IAAI,KAClD4G,kBAAkB,CAAC7G,MAAM,GAAG6G,kBAAkB,CAAC/G,GAAG,CAAC,CAAA;EAEtD,OAAOiH,gBAAgB,GAAGC,WAAW,CAAA;AACvC,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASxC,sBAAsBA,CACpCyC,QAAqB,EACrBC,SAAsB,EACP;AACf,EAAA,MAAMpH,GAAG,GAAG+F,IAAI,CAACsB,GAAG,CAACF,QAAQ,CAACnH,GAAG,EAAEoH,SAAS,CAACpH,GAAG,CAAC,CAAA;AACjD,EAAA,MAAMC,KAAK,GAAG8F,IAAI,CAACC,GAAG,CAACmB,QAAQ,CAAClH,KAAK,EAAEmH,SAAS,CAACnH,KAAK,CAAC,CAAA;AACvD,EAAA,MAAMC,MAAM,GAAG6F,IAAI,CAACC,GAAG,CAACmB,QAAQ,CAACjH,MAAM,EAAEkH,SAAS,CAAClH,MAAM,CAAC,CAAA;AAC1D,EAAA,MAAMC,IAAI,GAAG4F,IAAI,CAACsB,GAAG,CAACF,QAAQ,CAAChH,IAAI,EAAEiH,SAAS,CAACjH,IAAI,CAAC,CAAA;EACpD,MAAME,MAAM,GAAG0F,IAAI,CAACsB,GAAG,CAACnH,MAAM,GAAGF,GAAG,EAAE,CAAC,CAAC,CAAA;EACxC,MAAMM,KAAK,GAAGyF,IAAI,CAACsB,GAAG,CAACpH,KAAK,GAAGE,IAAI,EAAE,CAAC,CAAC,CAAA;EAEvC,OAAO;IACLH,GAAG;IACHC,KAAK;IACLC,MAAM;IACNC,IAAI;IACJE,MAAM;AACNC,IAAAA,KAAAA;GACD,CAAA;AACH,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASgH,gBAAgBA,CAC9BX,OAAoB,EACpBY,MAAmB,EACX;AACR;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEE;EACA,MAAMC,cAA6B,GAAG,EAAE,CAAA;AACxC;AACA,EAAA,OAAO,IAAI,EAAE;AACXA,IAAAA,cAAc,CAACzE,IAAI,CAAC4D,OAAO,CAAC,CAAA;;AAE5B;IACAA,OAAO,GAAGA,OAAO,CAACc,YAA2B,CAAA;;AAE7C;IACA,IAAId,OAAO,IAAI,IAAI,EAAE;AACnB,MAAA,MAAA;AACF,KAAA;;AAEA;AACA;AACA,IAAA,IAAIA,OAAO,CAACe,QAAQ,CAACH,MAAM,CAAC,EAAE;AAC5B,MAAA,MAAA;AACF,KAAA;AACF,GAAA;;AAEA;EACAC,cAAc,CAACG,OAAO,EAAE,CAAA;AAExB,EAAA,KAAK,MAAMC,IAAI,IAAIJ,cAAc,EAAE;AACjC;AACA,IAAA,MAAMK,MAAM,GAAGzF,MAAM,CAACH,QAAQ,CAC3B6F,WAAW,CAAEC,gBAAgB,CAACH,IAAI,CAAC,CACnCI,gBAAgB,CAAC,SAAS,CAAC,CAAA;;AAE9B;AACA,IAAA,MAAMC,YAAY,GAAGC,QAAQ,CAACL,MAAM,EAAE,EAAE,CAAC,CAAA;AAEzC,IAAA,IAAI,CAACM,KAAK,CAACF,YAAY,CAAC,EAAE;AACxB,MAAA,OAAOA,YAAY,CAAA;AACrB,KAAA;AACF,GAAA;AAEA,EAAA,OAAO,CAAC,CAAA;AACV;;;;"}
|