@skbkontur/react-ui 6.0.4-46247.0 → 6.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.
Files changed (67) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/components/Gapped/Gapped.d.ts +5 -3
  3. package/components/Gapped/Gapped.js +3 -1
  4. package/components/Gapped/Gapped.js.map +1 -1
  5. package/components/Hint/Hint.d.ts +18 -23
  6. package/components/Hint/Hint.js +2 -6
  7. package/components/Hint/Hint.js.map +1 -1
  8. package/components/MenuItem/MenuItem.d.ts +1 -0
  9. package/components/MenuItem/MenuItem.js +6 -4
  10. package/components/MenuItem/MenuItem.js.map +1 -1
  11. package/components/MiniModal/MiniModal.d.ts +8 -2
  12. package/components/MiniModal/MiniModal.js +10 -4
  13. package/components/MiniModal/MiniModal.js.map +1 -1
  14. package/components/MiniModal/MiniModalBody.d.ts +1 -1
  15. package/components/MiniModal/MiniModalBody.js +1 -1
  16. package/components/MiniModal/MiniModalBody.js.map +1 -1
  17. package/components/MiniModal/MiniModalFooter.d.ts +1 -1
  18. package/components/MiniModal/MiniModalFooter.js +1 -1
  19. package/components/MiniModal/MiniModalFooter.js.map +1 -1
  20. package/components/MiniModal/MiniModalHeader.d.ts +1 -1
  21. package/components/MiniModal/MiniModalHeader.js +1 -1
  22. package/components/MiniModal/MiniModalHeader.js.map +1 -1
  23. package/components/MiniModal/MiniModalIndent.d.ts +2 -2
  24. package/components/MiniModal/MiniModalIndent.js +1 -1
  25. package/components/MiniModal/MiniModalIndent.js.map +1 -1
  26. package/components/Textarea/Textarea.js +1 -1
  27. package/components/Textarea/Textarea.js.map +1 -1
  28. package/components/Textarea/Textarea.mixins.d.ts +0 -1
  29. package/components/Textarea/Textarea.mixins.js +0 -3
  30. package/components/Textarea/Textarea.mixins.js.map +1 -1
  31. package/components/Textarea/Textarea.styles.d.ts +0 -3
  32. package/components/Textarea/Textarea.styles.js +5 -14
  33. package/components/Textarea/Textarea.styles.js.map +1 -1
  34. package/components/Textarea/TextareaCounter.d.ts +0 -2
  35. package/components/Textarea/TextareaCounter.js +11 -13
  36. package/components/Textarea/TextareaCounter.js.map +1 -1
  37. package/components/Tooltip/Tooltip.d.ts +32 -35
  38. package/components/Tooltip/Tooltip.js +13 -12
  39. package/components/Tooltip/Tooltip.js.map +1 -1
  40. package/internal/FocusTrap/FocusTrap.d.ts +0 -1
  41. package/internal/FocusTrap/FocusTrap.js +6 -6
  42. package/internal/FocusTrap/FocusTrap.js.map +1 -1
  43. package/internal/Popup/Popup.d.ts +1 -3
  44. package/internal/Popup/Popup.js +26 -55
  45. package/internal/Popup/Popup.js.map +1 -1
  46. package/internal/Popup/PopupHelper.d.ts +3 -5
  47. package/internal/Popup/PopupHelper.js +8 -14
  48. package/internal/Popup/PopupHelper.js.map +1 -1
  49. package/internal/RenderContainer/RenderContainer.d.ts +0 -8
  50. package/internal/RenderContainer/RenderContainer.js +4 -83
  51. package/internal/RenderContainer/RenderContainer.js.map +1 -1
  52. package/internal/RenderLayer/RenderLayer.d.ts +1 -2
  53. package/internal/RenderLayer/RenderLayer.js +7 -5
  54. package/internal/RenderLayer/RenderLayer.js.map +1 -1
  55. package/lib/listenFocusOutside.d.ts +1 -3
  56. package/lib/listenFocusOutside.js +2 -19
  57. package/lib/listenFocusOutside.js.map +1 -1
  58. package/lib/renderEnvironment/RenderEnvironmentContext.d.ts +0 -16
  59. package/lib/renderEnvironment/RenderEnvironmentContext.js +10 -10
  60. package/lib/renderEnvironment/RenderEnvironmentContext.js.map +1 -1
  61. package/lib/theming/Emotion.d.ts +1 -17
  62. package/lib/theming/Emotion.js +5 -16
  63. package/lib/theming/Emotion.js.map +1 -1
  64. package/package.json +1 -1
  65. package/lib/shadowDom/isShadowRoot.d.ts +0 -6
  66. package/lib/shadowDom/isShadowRoot.js +0 -17
  67. package/lib/shadowDom/isShadowRoot.js.map +0 -1
@@ -38,10 +38,10 @@ import { Popup } from '../../internal/Popup/index.js';
38
38
  import { RenderLayer } from '../../internal/RenderLayer/index.js';
39
39
  import { createPropsGetter } from '../../lib/createPropsGetter.js';
40
40
  import { isTestEnv } from '../../lib/currentEnvironment.js';
41
- import { clickOutsideContent } from '../../lib/listenFocusOutside.js';
41
+ import { isInstanceOf } from '../../lib/isInstanceOf.js';
42
+ import { containsTargetOrRenderContainer } from '../../lib/listenFocusOutside.js';
42
43
  import { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';
43
44
  import { rootNode } from '../../lib/rootNode/index.js';
44
- import { isShadowRoot } from '../../lib/shadowDom/isShadowRoot.js';
45
45
  import { withSize } from '../../lib/size/SizeDecorator.js';
46
46
  import { ThemeContext } from '../../lib/theming/ThemeContext.js';
47
47
  import { ThemeFactory } from '../../lib/theming/ThemeFactory.js';
@@ -68,10 +68,10 @@ var DefaultPositions = [
68
68
  'bottom right',
69
69
  ];
70
70
  /**
71
- * `Tooltip` — это подсказка, которая объясняет состояние контрола или даёт контекстную справку.
71
+ * Подсказка, которая объясняет состояние контрола или даёт контекстную справку.
72
72
  *
73
- * Открывается по клику, фокусом на элемент или по наведению. В отличие от `Hint`, `Tooltip` может содержать
74
- * изображения, кнопки, ссылки и прочие интерактивные элементы.
73
+ * Открывается по клику, фокусу на элемент или наведению.
74
+ * Может содержать изображения, кнопки, ссылки и прочие интерактивные элементы.
75
75
  */
76
76
  var Tooltip = /** @class */ (function (_super) {
77
77
  __extends(Tooltip, _super);
@@ -262,8 +262,8 @@ var Tooltip = /** @class */ (function (_super) {
262
262
  return (React.createElement("div", { className: this.cx(this.styles.closeButton(this.theme), this.sizeVariables.closeButtonStyle), onClick: this.handleCloseButtonClick, "data-tid": TooltipDataTids.crossIcon }, icon));
263
263
  };
264
264
  /**
265
- * Программно открывает тултип.
266
- * <p>Не действует если проп *trigger* `'opened'` или `'closed'`.</p>
265
+ * Открывает тултип.
266
+ * <p>Не работает при `trigger` = "opened" | "closed"`.</p>
267
267
  * @public
268
268
  */
269
269
  Tooltip.prototype.show = function () {
@@ -278,8 +278,8 @@ var Tooltip = /** @class */ (function (_super) {
278
278
  this.open();
279
279
  };
280
280
  /**
281
- * Программно закрывает тултип.
282
- * <p>Не действует если проп *trigger* `'opened'` или `'closed'`.</p>
281
+ * Закрывает тултип.
282
+ * <p>Не работает при `trigger` = "opened" | "closed"`.</p>
283
283
  * @public
284
284
  */
285
285
  Tooltip.prototype.hide = function () {
@@ -387,9 +387,10 @@ var Tooltip = /** @class */ (function (_super) {
387
387
  }
388
388
  };
389
389
  Tooltip.prototype.isClickOutsideContent = function (event) {
390
- var node = this.contentElement;
391
- var isShadowRootElement = isShadowRoot(this.emotion.sheet.container.getRootNode());
392
- return clickOutsideContent(event, node, isShadowRootElement, this.globalObject);
390
+ if (this.contentElement && isInstanceOf(event.target, this.globalObject.Element)) {
391
+ return !containsTargetOrRenderContainer(event.target)(this.contentElement);
392
+ }
393
+ return true;
393
394
  };
394
395
  var Tooltip_1;
395
396
  Tooltip.__KONTUR_REACT_UI__ = 'Tooltip';
@@ -1 +1 @@
1
- {"version":3,"file":"Tooltip.js","sourceRoot":"","sources":["../../../components/Tooltip/Tooltip.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\nimport React, { type JSX } from 'react';\nimport warning from 'warning';\n\nimport { CloseButtonIcon } from '../../internal/CloseButtonIcon/CloseButtonIcon.js';\nimport type { CommonProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport type { PopupPositionsType, PopupProps, ShortPopupPositionsType } from '../../internal/Popup/index.js';\nimport { Popup } from '../../internal/Popup/index.js';\nimport { RenderLayer } from '../../internal/RenderLayer/index.js';\nimport type { RenderLayerProps } from '../../internal/RenderLayer/index.js';\nimport { createPropsGetter } from '../../lib/createPropsGetter.js';\nimport { isTestEnv } from '../../lib/currentEnvironment.js';\nimport type { GlobalObject, SafeTimer } from '../../lib/globalObject.js';\nimport type { InstanceWithAnchorElement } from '../../lib/InstanceWithAnchorElement.js';\nimport { clickOutsideContent } from '../../lib/listenFocusOutside.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { rootNode } from '../../lib/rootNode/index.js';\nimport { isShadowRoot } from '../../lib/shadowDom/isShadowRoot.js';\nimport { withSize } from '../../lib/size/SizeDecorator.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport { isNullable } from '../../lib/utils.js';\nimport type { MouseEventType } from '../../typings/event-types.js';\nimport type { Nullable } from '../../typings/utility-types.js';\nimport { getStyles } from './Tooltip.styles.js';\n\nexport type TooltipTrigger =\n /** Наведение на children и на тултип */\n | 'hover'\n /** Клик на children */\n | 'click'\n /** Фокус на children */\n | 'focus'\n /** Наведение на children и на тултип и фокус на children */\n | 'hover&focus'\n /** Просто открыт */\n | 'opened'\n /** Просто закрыт */\n | 'closed'\n /** Наведение ТОЛЬКО на children, а не на тултип */\n | 'hoverAnchor'\n /** Управление через публичные функции show и hide */\n | 'manual';\n\nexport interface TooltipProps extends CommonProps {\n /** Указывает элемент, относительно которого позиционировать тултип. */\n anchorElement?: HTMLElement;\n\n /** @ignore */\n children?: React.ReactNode;\n\n /** Задает HTML-атрибут class. */\n className?: string;\n\n /** Отображает крестик для закрытия тултипа. По умолчанию крестик виден, если проп *trigger* не равен `hover` или `focus`. */\n closeButton?: boolean;\n\n /** Задает функцию, которая возвращает содержимое тултипа. Если функция вернула `null`, то тултип не показывается. */\n render?: Nullable<() => React.ReactNode>;\n\n /** Задает приоритетное расположение подсказки относительно текста. */\n pos?: ShortPopupPositionsType | PopupPositionsType;\n\n /** Задает размер тултипа.\n * @default 'small' */\n size?: SizeProp;\n\n /** Задает триггер открытия тултипа. */\n trigger?: TooltipTrigger;\n\n /** Задает хендлер, который вызывается при клике по крестику. */\n onCloseClick?: React.MouseEventHandler<HTMLElement>;\n\n /** Задает хендлер, который вызывается при клике по крестику или снаружи тултипа. */\n onCloseRequest?: (event?: Event | React.MouseEvent) => void;\n\n /** Задает хендлер, который вызывается при закрытии тултипа. */\n onClose?: () => void;\n\n /** Задает хендлер, который вызывается при открытии тултипа. */\n onOpen?: () => void;\n\n /** Задает список позиций, которые тултип будет занимать.\n * Если положение тултипа в определенной позиции будет выходить за край экрана, то будет выбрана следующая позиция.\n * Обязательно должен включать позицию указанную в `pos`. */\n allowedPositions?: PopupPositionsType[];\n\n /** Отключает анимацию.\n * @default false */\n disableAnimations?: boolean;\n\n /** Явно указывает, что вложенные элементы должны быть обёрнуты в `<span/>`.\n * Используется для корректного позиционирования тултипа при двух и более вложенных элементах.\n * _Примечание_: при **двух и более** вложенных элементах обёртка будет добавлена автоматически. */\n useWrapper?: boolean;\n\n /** Устанавливает задержку в миллисекундах до появления лоадера. */\n delayBeforeShow?: number;\n}\n\nconst DEFAULT_DELAY = 100;\n\nexport interface TooltipState {\n opened: boolean;\n focused: boolean;\n}\n\nexport const TooltipDataTids = {\n root: 'Tooltip__root',\n content: 'Tooltip__content',\n crossIcon: 'Tooltip__crossIcon',\n} as const;\n\nconst DefaultPositions: PopupPositionsType[] = [\n 'right bottom',\n 'right middle',\n 'right top',\n 'top right',\n 'top center',\n 'top left',\n 'left top',\n 'left middle',\n 'left bottom',\n 'bottom left',\n 'bottom center',\n 'bottom right',\n];\n\ninterface TooltipSizeVariables {\n closeButtonStyle: string;\n contentStyle: string;\n borderRadius: string;\n pinSize: string;\n pinOffsetX: string;\n pinOffsetY: string;\n margin: string;\n}\n\ntype DefaultProps = Required<Pick<TooltipProps, 'trigger' | 'disableAnimations' | 'useWrapper' | 'delayBeforeShow'>>;\n\n/**\n * `Tooltip` — это подсказка, которая объясняет состояние контрола или даёт контекстную справку.\n *\n * Открывается по клику, фокусом на элемент или по наведению. В отличие от `Hint`, `Tooltip` может содержать\n * изображения, кнопки, ссылки и прочие интерактивные элементы.\n */\n@withRenderEnvironment\n@rootNode\n@withSize\nexport class Tooltip extends React.PureComponent<TooltipProps, TooltipState> implements InstanceWithAnchorElement {\n public static __KONTUR_REACT_UI__ = 'Tooltip';\n public static displayName = 'Tooltip';\n\n public static defaultProps: DefaultProps = {\n trigger: 'hover',\n disableAnimations: isTestEnv,\n useWrapper: false,\n delayBeforeShow: DEFAULT_DELAY,\n };\n\n private getProps = createPropsGetter(Tooltip.defaultProps);\n private validateProps(props: TooltipProps): void {\n warning(\n props.children || props.anchorElement,\n `[Tooltip]: you must provide either 'children' or 'anchorElement' prop for Tooltip to work properly`,\n );\n }\n\n public static delay = DEFAULT_DELAY;\n private static triggersWithoutCloseButton: TooltipTrigger[] = ['hover', 'hoverAnchor', 'focus', 'hover&focus'];\n\n public state: TooltipState = { opened: false, focused: false };\n private globalObject!: GlobalObject;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n private theme!: Theme;\n private size!: SizeProp;\n private sizeVariables!: TooltipSizeVariables;\n private hoverTimeout: SafeTimer;\n private contentElement: Nullable<HTMLElement> = null;\n private clickedOutside = true;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n private popupRef = React.createRef<Popup>();\n\n public getAllowedPositions(): string[] {\n return this.props.allowedPositions ? this.props.allowedPositions : DefaultPositions;\n }\n\n public componentDidMount(): void {\n this.validateProps(this.getProps());\n }\n\n public componentDidUpdate() {\n const { trigger } = this.getProps();\n\n this.validateProps(this.getProps());\n if (trigger === 'closed' && this.state.opened) {\n this.close();\n }\n }\n\n public componentWillUnmount() {\n this.clearHoverTimeout();\n }\n\n public render(): React.JSX.Element {\n this.styles = getStyles(this.emotion);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n this.sizeVariables = this.getSizeVariables();\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupBackground: theme.tooltipBg,\n popupBorder: theme.tooltipBorder,\n popupBorderRadius: this.sizeVariables.borderRadius,\n popupPinSize: this.sizeVariables.pinSize,\n popupPinOffsetX: this.sizeVariables.pinOffsetX,\n popupPinOffsetY: this.sizeVariables.pinOffsetY,\n popupMargin: this.sizeVariables.margin,\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderContent = (): React.JSX.Element | null => {\n const content = this.props.render ? this.props.render() : null;\n if (isNullable(content)) {\n return null;\n }\n\n return (\n <div\n ref={this.refContent}\n className={this.cx(this.styles.tooltipContent(this.theme), this.sizeVariables.contentStyle)}\n data-tid={TooltipDataTids.content}\n >\n {content}\n {this.renderCloseButton()}\n </div>\n );\n };\n\n public renderCloseButton(): React.JSX.Element | null {\n const hasCross =\n this.props.closeButton === undefined\n ? !Tooltip.triggersWithoutCloseButton.includes(this.getProps().trigger)\n : this.props.closeButton;\n\n if (!hasCross) {\n return null;\n }\n\n const icon = (\n <CloseButtonIcon\n tabbable={false}\n side={parseInt(this.theme.tooltipCloseBtnSide)}\n color={this.theme.tooltipCloseBtnColor}\n colorHover={this.theme.tooltipCloseBtnHoverColor}\n />\n );\n\n return (\n <div\n className={this.cx(this.styles.closeButton(this.theme), this.sizeVariables.closeButtonStyle)}\n onClick={this.handleCloseButtonClick}\n data-tid={TooltipDataTids.crossIcon}\n >\n {icon}\n </div>\n );\n }\n\n public getAnchorElement = (): Nullable<Element> => {\n return this.popupRef.current?.anchorElement;\n };\n\n /**\n * Программно открывает тултип.\n * <p>Не действует если проп *trigger* `'opened'` или `'closed'`.</p>\n * @public\n */\n public show(): void {\n if (this.state.opened) {\n return;\n }\n const trigger = this.getProps().trigger;\n if (trigger === 'opened' || trigger === 'closed') {\n warning(false, `Function 'show' is not supported with trigger specified '${trigger}'`);\n return;\n }\n this.open();\n }\n\n /**\n * Программно закрывает тултип.\n * <p>Не действует если проп *trigger* `'opened'` или `'closed'`.</p>\n * @public\n */\n public hide(): void {\n const trigger = this.getProps().trigger;\n if (trigger === 'opened' || trigger === 'closed') {\n warning(false, `Function 'hide' is not supported with trigger specified '${trigger}'`);\n return;\n }\n this.close();\n }\n\n private renderMain() {\n const props = this.props;\n const content = this.renderContent();\n const { popupProps, layerProps = { active: false } } = this.getPopupAndLayerProps();\n const anchorElement = props.children || props.anchorElement;\n const popup = this.renderPopup(anchorElement, popupProps, content);\n\n return (\n <RenderLayer {...layerProps} getAnchorElement={this.getAnchorElement}>\n {popup}\n </RenderLayer>\n );\n }\n\n private renderPopup(\n anchorElement: React.ReactNode | HTMLElement,\n popupProps: Partial<PopupProps>,\n content: JSX.Element | null,\n ) {\n const { disableAnimations, trigger } = this.getProps();\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <Popup\n data-tid={TooltipDataTids.root}\n anchorElement={anchorElement}\n hasPin\n hasShadow\n maxWidth=\"none\"\n opened={this.state.opened}\n disableAnimations={disableAnimations}\n positions={this.getPositions()}\n pos={this.props.pos}\n ignoreHover={trigger === 'hoverAnchor'}\n onOpen={this.props.onOpen}\n onClose={this.props.onClose}\n tryPreserveFirstRenderedPosition\n ref={this.popupRef}\n withoutMobile\n {...popupProps}\n >\n {content}\n </Popup>\n </CommonWrapper>\n );\n }\n\n private getPositions = (): PopupPositionsType[] =>\n this.props.allowedPositions\n ? this.props.allowedPositions.filter((item) => DefaultPositions.includes(item))\n : DefaultPositions;\n\n private refContent = (node: HTMLElement | null) => {\n this.contentElement = node;\n };\n\n private getPopupAndLayerProps(): {\n layerProps?: Partial<RenderLayerProps>;\n popupProps: Partial<PopupProps>;\n } {\n const props = this.props;\n const useWrapper = !!props.children && this.getProps().useWrapper;\n const trigger = this.getProps().trigger;\n\n const defaultPopupAndLayerProps: ReturnType<typeof this.getPopupAndLayerProps> = {\n popupProps: {\n onMouseEnter: this.handleMouseEnter,\n onMouseLeave: this.handleMouseLeave,\n useWrapper,\n },\n };\n\n switch (trigger) {\n case 'opened':\n return {\n layerProps: {\n active: true,\n onClickOutside: this.handleClickOutsideAnchor,\n },\n popupProps: {\n opened: true,\n useWrapper,\n },\n };\n\n case 'closed':\n return {\n popupProps: {\n opened: false,\n useWrapper,\n },\n };\n\n case 'manual':\n return {\n popupProps: {\n useWrapper,\n },\n };\n case 'click':\n return {\n layerProps: {\n active: this.state.opened,\n onClickOutside: this.handleClickOutsideAnchor,\n },\n popupProps: {\n onClick: this.handleClick,\n useWrapper,\n },\n };\n\n case 'focus':\n return {\n popupProps: {\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n useWrapper,\n },\n };\n\n case 'hover&focus':\n return {\n layerProps: {\n active: this.state.opened,\n onClickOutside: this.handleClickOutsideAnchor,\n },\n popupProps: {\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n onMouseEnter: this.handleMouseEnter,\n onMouseLeave: this.handleMouseLeave,\n useWrapper,\n },\n };\n\n case 'hoverAnchor':\n case 'hover':\n return defaultPopupAndLayerProps;\n default:\n warning(false, `Unknown trigger specified: ${trigger}. Returning default value.`);\n return defaultPopupAndLayerProps;\n }\n }\n\n private open = () => this.setState({ opened: true });\n\n private close = () => this.setState({ opened: false });\n\n private clearHoverTimeout() {\n if (this.hoverTimeout) {\n clearTimeout(this.hoverTimeout);\n this.hoverTimeout = null;\n }\n }\n\n private handleMouseEnter = (event: MouseEventType) => {\n const isHoverAnchor = this.getProps().trigger === 'hoverAnchor';\n if (isHoverAnchor && event.target === this.contentElement) {\n return;\n }\n\n this.clearHoverTimeout();\n this.hoverTimeout = setTimeout(this.open, this.getProps().delayBeforeShow);\n };\n\n private handleMouseLeave = (event: MouseEventType) => {\n const trigger = this.getProps().trigger;\n if (\n (trigger === 'hover&focus' && this.state.focused) ||\n (trigger === 'hover' && event.relatedTarget === this.contentElement)\n ) {\n return;\n }\n\n this.clearHoverTimeout();\n\n if (trigger === 'hoverAnchor') {\n this.close();\n } else {\n this.hoverTimeout = setTimeout(this.close, Tooltip.delay);\n }\n };\n\n private handleClick = () => {\n this.open();\n };\n\n private handleClickOutsideAnchor = (event: Event) => {\n this.clickedOutside = this.isClickOutsideContent(event);\n if (this.clickedOutside) {\n if (this.props.onCloseRequest) {\n this.props.onCloseRequest(event);\n }\n this.close();\n }\n };\n\n private isClickOutsideContent(event: Event) {\n const node = this.contentElement;\n const isShadowRootElement = isShadowRoot(this.emotion.sheet.container.getRootNode());\n return clickOutsideContent(event, node, isShadowRootElement, this.globalObject);\n }\n\n private handleFocus = () => {\n this.setState({ focused: true });\n this.open();\n };\n\n private handleBlur = () => {\n const trigger = this.getProps().trigger;\n if (trigger === 'hover&focus' && this.clickedOutside) {\n this.close();\n }\n\n if (trigger === 'focus') {\n this.close();\n }\n\n this.clickedOutside = true;\n this.setState({ focused: false });\n };\n\n private handleCloseButtonClick = (event: React.MouseEvent<HTMLElement>) => {\n event.stopPropagation();\n\n if (this.props.onCloseClick) {\n this.props.onCloseClick(event);\n }\n\n if (event.defaultPrevented) {\n return;\n }\n\n if (this.props.onCloseRequest) {\n this.props.onCloseRequest(event);\n }\n\n this.close();\n };\n\n private getSizeVariables = (): TooltipSizeVariables => {\n switch (this.size) {\n case 'small':\n return {\n closeButtonStyle: this.styles.closeButtonSmall(this.theme),\n contentStyle: this.styles.tooltipContentSmall(this.theme),\n borderRadius: this.theme.tooltipBorderRadiusSmall,\n pinSize: this.theme.tooltipPinSizeSmall,\n pinOffsetX: this.theme.tooltipPinOffsetXSmall,\n pinOffsetY: this.theme.tooltipPinOffsetYSmall,\n margin: this.theme.tooltipMarginSmall,\n };\n case 'medium':\n return {\n closeButtonStyle: this.styles.closeButtonMedium(this.theme),\n contentStyle: this.styles.tooltipContentMedium(this.theme),\n borderRadius: this.theme.tooltipBorderRadiusMedium,\n pinSize: this.theme.tooltipPinSizeMedium,\n pinOffsetX: this.theme.tooltipPinOffsetXMedium,\n pinOffsetY: this.theme.tooltipPinOffsetYMedium,\n margin: this.theme.tooltipMarginMedium,\n };\n case 'large':\n return {\n closeButtonStyle: this.styles.closeButtonLarge(this.theme),\n contentStyle: this.styles.tooltipContentLarge(this.theme),\n borderRadius: this.theme.tooltipBorderRadiusLarge,\n pinSize: this.theme.tooltipPinSizeLarge,\n pinOffsetX: this.theme.tooltipPinOffsetXLarge,\n pinOffsetY: this.theme.tooltipPinOffsetYLarge,\n margin: this.theme.tooltipMarginLarge,\n };\n default:\n warning(false, `Can't get size variables: invalid value in size prop '${this.props.size}'. Returning default`);\n return {\n closeButtonStyle: this.styles.closeButtonSmall(this.theme),\n contentStyle: this.styles.tooltipContentSmall(this.theme),\n borderRadius: this.theme.tooltipBorderRadiusSmall,\n pinSize: this.theme.tooltipPinSizeSmall,\n pinOffsetX: this.theme.tooltipPinOffsetXSmall,\n pinOffsetY: this.theme.tooltipPinOffsetYSmall,\n margin: this.theme.tooltipMarginSmall,\n };\n }\n };\n}\n"]}
1
+ {"version":3,"file":"Tooltip.js","sourceRoot":"","sources":["../../../components/Tooltip/Tooltip.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,OAAO,KAAmB,MAAM,OAAO,CAAC;AACxC,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,OAAO,EAAE,eAAe,EAAE,MAAM,mDAAmD,CAAC;AAEpF,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAEtE,OAAO,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAElE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAG5D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,+BAA+B,EAAE,MAAM,iCAAiC,CAAC;AAClF,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAE7E,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAE3D,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAEjE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAwEhD,IAAM,aAAa,GAAG,GAAG,CAAC;AAO1B,MAAM,CAAC,IAAM,eAAe,GAAG;IAC7B,IAAI,EAAE,eAAe;IACrB,OAAO,EAAE,kBAAkB;IAC3B,SAAS,EAAE,oBAAoB;CACvB,CAAC;AAEX,IAAM,gBAAgB,GAAyB;IAC7C,cAAc;IACd,cAAc;IACd,WAAW;IACX,WAAW;IACX,YAAY;IACZ,UAAU;IACV,UAAU;IACV,aAAa;IACb,aAAa;IACb,aAAa;IACb,eAAe;IACf,cAAc;CACf,CAAC;AAcF;;;;;GAKG;AAIH;IAA6B,2BAA+C;IAA5E;;QAWU,cAAQ,GAAG,iBAAiB,CAAC,SAAO,CAAC,YAAY,CAAC,CAAC;QAWpD,WAAK,GAAiB,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QASvD,oBAAc,GAA0B,IAAI,CAAC;QAC7C,oBAAc,GAAG,IAAI,CAAC;QAItB,cAAQ,GAAG,KAAK,CAAC,SAAS,EAAS,CAAC;QAsDrC,mBAAa,GAAG;YACrB,IAAM,OAAO,GAAG,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YAC/D,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxB,OAAO,IAAI,CAAC;YACd,CAAC;YAED,OAAO,CACL,6BACE,GAAG,EAAE,KAAI,CAAC,UAAU,EACpB,SAAS,EAAE,KAAI,CAAC,EAAE,CAAC,KAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAI,CAAC,KAAK,CAAC,EAAE,KAAI,CAAC,aAAa,CAAC,YAAY,CAAC,cACjF,eAAe,CAAC,OAAO;gBAEhC,OAAO;gBACP,KAAI,CAAC,iBAAiB,EAAE,CACrB,CACP,CAAC;QACJ,CAAC,CAAC;QAgCK,sBAAgB,GAAG;;YACxB,OAAO,MAAA,KAAI,CAAC,QAAQ,CAAC,OAAO,0CAAE,aAAa,CAAC;QAC9C,CAAC,CAAC;QA+EM,kBAAY,GAAG;YACrB,OAAA,KAAI,CAAC,KAAK,CAAC,gBAAgB;gBACzB,CAAC,CAAC,KAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,UAAC,IAAI,IAAK,OAAA,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAA/B,CAA+B,CAAC;gBAC/E,CAAC,CAAC,gBAAgB;QAFpB,CAEoB,CAAC;QAEf,gBAAU,GAAG,UAAC,IAAwB;YAC5C,KAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC7B,CAAC,CAAC;QA0FM,UAAI,GAAG,cAAM,OAAA,KAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAA/B,CAA+B,CAAC;QAE7C,WAAK,GAAG,cAAM,OAAA,KAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAhC,CAAgC,CAAC;QAS/C,sBAAgB,GAAG,UAAC,KAAqB;YAC/C,IAAM,aAAa,GAAG,KAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,KAAK,aAAa,CAAC;YAChE,IAAI,aAAa,IAAI,KAAK,CAAC,MAAM,KAAK,KAAI,CAAC,cAAc,EAAE,CAAC;gBAC1D,OAAO;YACT,CAAC;YAED,KAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,KAAI,CAAC,YAAY,GAAG,UAAU,CAAC,KAAI,CAAC,IAAI,EAAE,KAAI,CAAC,QAAQ,EAAE,CAAC,eAAe,CAAC,CAAC;QAC7E,CAAC,CAAC;QAEM,sBAAgB,GAAG,UAAC,KAAqB;YAC/C,IAAM,OAAO,GAAG,KAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC;YACxC,IACE,CAAC,OAAO,KAAK,aAAa,IAAI,KAAI,CAAC,KAAK,CAAC,OAAO,CAAC;gBACjD,CAAC,OAAO,KAAK,OAAO,IAAI,KAAK,CAAC,aAAa,KAAK,KAAI,CAAC,cAAc,CAAC,EACpE,CAAC;gBACD,OAAO;YACT,CAAC;YAED,KAAI,CAAC,iBAAiB,EAAE,CAAC;YAEzB,IAAI,OAAO,KAAK,aAAa,EAAE,CAAC;gBAC9B,KAAI,CAAC,KAAK,EAAE,CAAC;YACf,CAAC;iBAAM,CAAC;gBACN,KAAI,CAAC,YAAY,GAAG,UAAU,CAAC,KAAI,CAAC,KAAK,EAAE,SAAO,CAAC,KAAK,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC,CAAC;QAEM,iBAAW,GAAG;YACpB,KAAI,CAAC,IAAI,EAAE,CAAC;QACd,CAAC,CAAC;QAEM,8BAAwB,GAAG,UAAC,KAAY;YAC9C,KAAI,CAAC,cAAc,GAAG,KAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;YACxD,IAAI,KAAI,CAAC,cAAc,EAAE,CAAC;gBACxB,IAAI,KAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;oBAC9B,KAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;gBACnC,CAAC;gBACD,KAAI,CAAC,KAAK,EAAE,CAAC;YACf,CAAC;QACH,CAAC,CAAC;QAUM,iBAAW,GAAG;YACpB,KAAI,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YACjC,KAAI,CAAC,IAAI,EAAE,CAAC;QACd,CAAC,CAAC;QAEM,gBAAU,GAAG;YACnB,IAAM,OAAO,GAAG,KAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC;YACxC,IAAI,OAAO,KAAK,aAAa,IAAI,KAAI,CAAC,cAAc,EAAE,CAAC;gBACrD,KAAI,CAAC,KAAK,EAAE,CAAC;YACf,CAAC;YAED,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;gBACxB,KAAI,CAAC,KAAK,EAAE,CAAC;YACf,CAAC;YAED,KAAI,CAAC,cAAc,GAAG,IAAI,CAAC;YAC3B,KAAI,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QACpC,CAAC,CAAC;QAEM,4BAAsB,GAAG,UAAC,KAAoC;YACpE,KAAK,CAAC,eAAe,EAAE,CAAC;YAExB,IAAI,KAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;gBAC5B,KAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YACjC,CAAC;YAED,IAAI,KAAK,CAAC,gBAAgB,EAAE,CAAC;gBAC3B,OAAO;YACT,CAAC;YAED,IAAI,KAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;gBAC9B,KAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YACnC,CAAC;YAED,KAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC,CAAC;QAEM,sBAAgB,GAAG;YACzB,QAAQ,KAAI,CAAC,IAAI,EAAE,CAAC;gBAClB,KAAK,OAAO;oBACV,OAAO;wBACL,gBAAgB,EAAE,KAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAI,CAAC,KAAK,CAAC;wBAC1D,YAAY,EAAE,KAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,KAAI,CAAC,KAAK,CAAC;wBACzD,YAAY,EAAE,KAAI,CAAC,KAAK,CAAC,wBAAwB;wBACjD,OAAO,EAAE,KAAI,CAAC,KAAK,CAAC,mBAAmB;wBACvC,UAAU,EAAE,KAAI,CAAC,KAAK,CAAC,sBAAsB;wBAC7C,UAAU,EAAE,KAAI,CAAC,KAAK,CAAC,sBAAsB;wBAC7C,MAAM,EAAE,KAAI,CAAC,KAAK,CAAC,kBAAkB;qBACtC,CAAC;gBACJ,KAAK,QAAQ;oBACX,OAAO;wBACL,gBAAgB,EAAE,KAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAI,CAAC,KAAK,CAAC;wBAC3D,YAAY,EAAE,KAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,KAAI,CAAC,KAAK,CAAC;wBAC1D,YAAY,EAAE,KAAI,CAAC,KAAK,CAAC,yBAAyB;wBAClD,OAAO,EAAE,KAAI,CAAC,KAAK,CAAC,oBAAoB;wBACxC,UAAU,EAAE,KAAI,CAAC,KAAK,CAAC,uBAAuB;wBAC9C,UAAU,EAAE,KAAI,CAAC,KAAK,CAAC,uBAAuB;wBAC9C,MAAM,EAAE,KAAI,CAAC,KAAK,CAAC,mBAAmB;qBACvC,CAAC;gBACJ,KAAK,OAAO;oBACV,OAAO;wBACL,gBAAgB,EAAE,KAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAI,CAAC,KAAK,CAAC;wBAC1D,YAAY,EAAE,KAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,KAAI,CAAC,KAAK,CAAC;wBACzD,YAAY,EAAE,KAAI,CAAC,KAAK,CAAC,wBAAwB;wBACjD,OAAO,EAAE,KAAI,CAAC,KAAK,CAAC,mBAAmB;wBACvC,UAAU,EAAE,KAAI,CAAC,KAAK,CAAC,sBAAsB;wBAC7C,UAAU,EAAE,KAAI,CAAC,KAAK,CAAC,sBAAsB;wBAC7C,MAAM,EAAE,KAAI,CAAC,KAAK,CAAC,kBAAkB;qBACtC,CAAC;gBACJ;oBACE,OAAO,CAAC,KAAK,EAAE,gEAAyD,KAAI,CAAC,KAAK,CAAC,IAAI,yBAAsB,CAAC,CAAC;oBAC/G,OAAO;wBACL,gBAAgB,EAAE,KAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAI,CAAC,KAAK,CAAC;wBAC1D,YAAY,EAAE,KAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,KAAI,CAAC,KAAK,CAAC;wBACzD,YAAY,EAAE,KAAI,CAAC,KAAK,CAAC,wBAAwB;wBACjD,OAAO,EAAE,KAAI,CAAC,KAAK,CAAC,mBAAmB;wBACvC,UAAU,EAAE,KAAI,CAAC,KAAK,CAAC,sBAAsB;wBAC7C,UAAU,EAAE,KAAI,CAAC,KAAK,CAAC,sBAAsB;wBAC7C,MAAM,EAAE,KAAI,CAAC,KAAK,CAAC,kBAAkB;qBACtC,CAAC;YACN,CAAC;QACH,CAAC,CAAC;;IACJ,CAAC;gBA3cY,OAAO;IAYV,+BAAa,GAArB,UAAsB,KAAmB;QACvC,OAAO,CACL,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,aAAa,EACrC,oGAAoG,CACrG,CAAC;IACJ,CAAC;IAqBM,qCAAmB,GAA1B;QACE,OAAO,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC;IACtF,CAAC;IAEM,mCAAiB,GAAxB;QACE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACtC,CAAC;IAEM,oCAAkB,GAAzB;QACU,IAAA,OAAO,GAAK,IAAI,CAAC,QAAQ,EAAE,QAApB,CAAqB;QAEpC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACpC,IAAI,OAAO,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAC9C,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC;IACH,CAAC;IAEM,sCAAoB,GAA3B;QACE,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IAEM,wBAAM,GAAb;QAAA,iBA6BC;QA5BC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEtC,OAAO,CACL,oBAAC,YAAY,CAAC,QAAQ,QACnB,UAAC,KAAK;YACL,KAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,KAAI,CAAC,aAAa,GAAG,KAAI,CAAC,gBAAgB,EAAE,CAAC;YAC7C,OAAO,CACL,oBAAC,YAAY,CAAC,QAAQ,IACpB,KAAK,EAAE,YAAY,CAAC,MAAM,CACxB;oBACE,eAAe,EAAE,KAAK,CAAC,SAAS;oBAChC,WAAW,EAAE,KAAK,CAAC,aAAa;oBAChC,iBAAiB,EAAE,KAAI,CAAC,aAAa,CAAC,YAAY;oBAClD,YAAY,EAAE,KAAI,CAAC,aAAa,CAAC,OAAO;oBACxC,eAAe,EAAE,KAAI,CAAC,aAAa,CAAC,UAAU;oBAC9C,eAAe,EAAE,KAAI,CAAC,aAAa,CAAC,UAAU;oBAC9C,WAAW,EAAE,KAAI,CAAC,aAAa,CAAC,MAAM;iBACvC,EACD,KAAK,CACN,IAEA,KAAI,CAAC,UAAU,EAAE,CACI,CACzB,CAAC;QACJ,CAAC,CACqB,CACzB,CAAC;IACJ,CAAC;IAoBM,mCAAiB,GAAxB;QACE,IAAM,QAAQ,GACZ,IAAI,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS;YAClC,CAAC,CAAC,CAAC,SAAO,CAAC,0BAA0B,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC;YACvE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;QAE7B,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAM,IAAI,GAAG,CACX,oBAAC,eAAe,IACd,QAAQ,EAAE,KAAK,EACf,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAC9C,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,oBAAoB,EACtC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,yBAAyB,GAChD,CACH,CAAC;QAEF,OAAO,CACL,6BACE,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,EAC5F,OAAO,EAAE,IAAI,CAAC,sBAAsB,cAC1B,eAAe,CAAC,SAAS,IAElC,IAAI,CACD,CACP,CAAC;IACJ,CAAC;IAMD;;;;OAIG;IACI,sBAAI,GAAX;QACE,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QACD,IAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC;QACxC,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;YACjD,OAAO,CAAC,KAAK,EAAE,mEAA4D,OAAO,MAAG,CAAC,CAAC;YACvF,OAAO;QACT,CAAC;QACD,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAED;;;;OAIG;IACI,sBAAI,GAAX;QACE,IAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC;QACxC,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;YACjD,OAAO,CAAC,KAAK,EAAE,mEAA4D,OAAO,MAAG,CAAC,CAAC;YACvF,OAAO;QACT,CAAC;QACD,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAEO,4BAAU,GAAlB;QACE,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAC/B,IAAA,KAAiD,IAAI,CAAC,qBAAqB,EAAE,EAA3E,UAAU,gBAAA,EAAE,kBAA8B,EAA9B,UAAU,mBAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAiC,CAAC;QACpF,IAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,aAAa,CAAC;QAC5D,IAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QAEnE,OAAO,CACL,oBAAC,WAAW,eAAK,UAAU,IAAE,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,KACjE,KAAK,CACM,CACf,CAAC;IACJ,CAAC;IAEO,6BAAW,GAAnB,UACE,aAA4C,EAC5C,UAA+B,EAC/B,OAA2B;QAErB,IAAA,KAAiC,IAAI,CAAC,QAAQ,EAAE,EAA9C,iBAAiB,uBAAA,EAAE,OAAO,aAAoB,CAAC;QACvD,OAAO,CACL,oBAAC,aAAa,aAAC,WAAW,EAAE,IAAI,CAAC,WAAW,IAAM,IAAI,CAAC,KAAK;YAC1D,oBAAC,KAAK,yBACM,eAAe,CAAC,IAAI,EAC9B,aAAa,EAAE,aAAa,EAC5B,MAAM,QACN,SAAS,QACT,QAAQ,EAAC,MAAM,EACf,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EACzB,iBAAiB,EAAE,iBAAiB,EACpC,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE,EAC9B,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EACnB,WAAW,EAAE,OAAO,KAAK,aAAa,EACtC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EACzB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAC3B,gCAAgC,QAChC,GAAG,EAAE,IAAI,CAAC,QAAQ,EAClB,aAAa,UACT,UAAU,GAEb,OAAO,CACF,CACM,CACjB,CAAC;IACJ,CAAC;IAWO,uCAAqB,GAA7B;QAIE,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC;QAClE,IAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC;QAExC,IAAM,yBAAyB,GAAkD;YAC/E,UAAU,EAAE;gBACV,YAAY,EAAE,IAAI,CAAC,gBAAgB;gBACnC,YAAY,EAAE,IAAI,CAAC,gBAAgB;gBACnC,UAAU,YAAA;aACX;SACF,CAAC;QAEF,QAAQ,OAAO,EAAE,CAAC;YAChB,KAAK,QAAQ;gBACX,OAAO;oBACL,UAAU,EAAE;wBACV,MAAM,EAAE,IAAI;wBACZ,cAAc,EAAE,IAAI,CAAC,wBAAwB;qBAC9C;oBACD,UAAU,EAAE;wBACV,MAAM,EAAE,IAAI;wBACZ,UAAU,YAAA;qBACX;iBACF,CAAC;YAEJ,KAAK,QAAQ;gBACX,OAAO;oBACL,UAAU,EAAE;wBACV,MAAM,EAAE,KAAK;wBACb,UAAU,YAAA;qBACX;iBACF,CAAC;YAEJ,KAAK,QAAQ;gBACX,OAAO;oBACL,UAAU,EAAE;wBACV,UAAU,YAAA;qBACX;iBACF,CAAC;YACJ,KAAK,OAAO;gBACV,OAAO;oBACL,UAAU,EAAE;wBACV,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;wBACzB,cAAc,EAAE,IAAI,CAAC,wBAAwB;qBAC9C;oBACD,UAAU,EAAE;wBACV,OAAO,EAAE,IAAI,CAAC,WAAW;wBACzB,UAAU,YAAA;qBACX;iBACF,CAAC;YAEJ,KAAK,OAAO;gBACV,OAAO;oBACL,UAAU,EAAE;wBACV,OAAO,EAAE,IAAI,CAAC,WAAW;wBACzB,MAAM,EAAE,IAAI,CAAC,UAAU;wBACvB,UAAU,YAAA;qBACX;iBACF,CAAC;YAEJ,KAAK,aAAa;gBAChB,OAAO;oBACL,UAAU,EAAE;wBACV,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;wBACzB,cAAc,EAAE,IAAI,CAAC,wBAAwB;qBAC9C;oBACD,UAAU,EAAE;wBACV,OAAO,EAAE,IAAI,CAAC,WAAW;wBACzB,MAAM,EAAE,IAAI,CAAC,UAAU;wBACvB,YAAY,EAAE,IAAI,CAAC,gBAAgB;wBACnC,YAAY,EAAE,IAAI,CAAC,gBAAgB;wBACnC,UAAU,YAAA;qBACX;iBACF,CAAC;YAEJ,KAAK,aAAa,CAAC;YACnB,KAAK,OAAO;gBACV,OAAO,yBAAyB,CAAC;YACnC;gBACE,OAAO,CAAC,KAAK,EAAE,qCAA8B,OAAO,+BAA4B,CAAC,CAAC;gBAClF,OAAO,yBAAyB,CAAC;QACrC,CAAC;IACH,CAAC;IAMO,mCAAiB,GAAzB;QACE,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAChC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAC3B,CAAC;IACH,CAAC;IA4CO,uCAAqB,GAA7B,UAA8B,KAAY;QACxC,IAAI,IAAI,CAAC,cAAc,IAAI,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;YACjF,OAAO,CAAC,+BAA+B,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC7E,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;;IAtXa,2BAAmB,GAAG,SAAS,AAAZ,CAAa;IAChC,mBAAW,GAAG,SAAS,AAAZ,CAAa;IAExB,oBAAY,GAAiB;QACzC,OAAO,EAAE,OAAO;QAChB,iBAAiB,EAAE,SAAS;QAC5B,UAAU,EAAE,KAAK;QACjB,eAAe,EAAE,aAAa;KAC/B,AALyB,CAKxB;IAUY,aAAK,GAAG,aAAa,AAAhB,CAAiB;IACrB,kCAA0B,GAAqB,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,CAAC,AAArE,CAAsE;IApBpG,OAAO;QAHnB,qBAAqB;QACrB,QAAQ;QACR,QAAQ;OACI,OAAO,CA2cnB;IAAD,cAAC;CAAA,AA3cD,CAA6B,KAAK,CAAC,aAAa,GA2c/C;SA3cY,OAAO","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\nimport React, { type JSX } from 'react';\nimport warning from 'warning';\n\nimport { CloseButtonIcon } from '../../internal/CloseButtonIcon/CloseButtonIcon.js';\nimport type { CommonProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport type { PopupPositionsType, PopupProps, ShortPopupPositionsType } from '../../internal/Popup/index.js';\nimport { Popup } from '../../internal/Popup/index.js';\nimport { RenderLayer } from '../../internal/RenderLayer/index.js';\nimport type { RenderLayerProps } from '../../internal/RenderLayer/index.js';\nimport { createPropsGetter } from '../../lib/createPropsGetter.js';\nimport { isTestEnv } from '../../lib/currentEnvironment.js';\nimport type { GlobalObject, SafeTimer } from '../../lib/globalObject.js';\nimport type { InstanceWithAnchorElement } from '../../lib/InstanceWithAnchorElement.js';\nimport { isInstanceOf } from '../../lib/isInstanceOf.js';\nimport { containsTargetOrRenderContainer } from '../../lib/listenFocusOutside.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { rootNode } from '../../lib/rootNode/index.js';\nimport { withSize } from '../../lib/size/SizeDecorator.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport { isNullable } from '../../lib/utils.js';\nimport type { MouseEventType } from '../../typings/event-types.js';\nimport type { Nullable } from '../../typings/utility-types.js';\nimport { getStyles } from './Tooltip.styles.js';\n\nexport type TooltipTrigger =\n /** Наведение на children и на тултип */\n | 'hover'\n /** Клик на children */\n | 'click'\n /** Фокус на children */\n | 'focus'\n /** Наведение на children и на тултип и фокус на children */\n | 'hover&focus'\n /** Просто открыт */\n | 'opened'\n /** Просто закрыт */\n | 'closed'\n /** Наведение ТОЛЬКО на children, а не на тултип */\n | 'hoverAnchor'\n /** Управление через публичные функции show и hide */\n | 'manual';\n\nexport interface TooltipProps extends CommonProps {\n /** @ignore */\n children?: React.ReactNode;\n\n /** Функция, возвращающая содержимое тултипа. При возврате `null` тултип не показывается. */\n render?: Nullable<() => React.ReactNode>;\n\n /** Размер тултипа.\n * @default small */\n size?: SizeProp;\n\n /** Приоритетное расположение тултипа относительно элемента. */\n pos?: ShortPopupPositionsType | PopupPositionsType;\n\n /** Список позиций, которые может занимать тултип. В списке обязательно должна быть позиция из пропа `pos`. */\n allowedPositions?: PopupPositionsType[];\n\n /** Триггер открытия тултипа. */\n trigger?: TooltipTrigger;\n\n /** Показывает крестик для закрытия тултипа.\n * По умолчанию крестик показывается, если проп `trigger` не равен `hover` или `focus`. */\n closeButton?: boolean;\n\n /** Элемент, относительно которого позиционируется тултип. */\n anchorElement?: HTMLElement;\n\n /** Отключает анимацию.\n * @default false */\n disableAnimations?: boolean;\n\n /** Оборачивает вложенные элементы в `<span />`.\n *\n * _Примечание_: при двух и более вложенных элементах обёртка будет добавлена автоматически. */\n useWrapper?: boolean;\n\n /** Задержка в миллисекундах до появления тултипа. */\n delayBeforeShow?: number;\n\n /** Вызывается при клике по крестику. */\n onCloseClick?: React.MouseEventHandler<HTMLElement>;\n\n /** Вызывается при клике по крестику или снаружи тултипа. */\n onCloseRequest?: (event?: Event | React.MouseEvent) => void;\n\n /** Вызывается при закрытии тултипа. */\n onClose?: () => void;\n\n /** Вызывается при открытии тултипа. */\n onOpen?: () => void;\n}\n\nconst DEFAULT_DELAY = 100;\n\nexport interface TooltipState {\n opened: boolean;\n focused: boolean;\n}\n\nexport const TooltipDataTids = {\n root: 'Tooltip__root',\n content: 'Tooltip__content',\n crossIcon: 'Tooltip__crossIcon',\n} as const;\n\nconst DefaultPositions: PopupPositionsType[] = [\n 'right bottom',\n 'right middle',\n 'right top',\n 'top right',\n 'top center',\n 'top left',\n 'left top',\n 'left middle',\n 'left bottom',\n 'bottom left',\n 'bottom center',\n 'bottom right',\n];\n\ninterface TooltipSizeVariables {\n closeButtonStyle: string;\n contentStyle: string;\n borderRadius: string;\n pinSize: string;\n pinOffsetX: string;\n pinOffsetY: string;\n margin: string;\n}\n\ntype DefaultProps = Required<Pick<TooltipProps, 'trigger' | 'disableAnimations' | 'useWrapper' | 'delayBeforeShow'>>;\n\n/**\n * Подсказка, которая объясняет состояние контрола или даёт контекстную справку.\n *\n * Открывается по клику, фокусу на элемент или наведению.\n * Может содержать изображения, кнопки, ссылки и прочие интерактивные элементы.\n */\n@withRenderEnvironment\n@rootNode\n@withSize\nexport class Tooltip extends React.PureComponent<TooltipProps, TooltipState> implements InstanceWithAnchorElement {\n public static __KONTUR_REACT_UI__ = 'Tooltip';\n public static displayName = 'Tooltip';\n\n public static defaultProps: DefaultProps = {\n trigger: 'hover',\n disableAnimations: isTestEnv,\n useWrapper: false,\n delayBeforeShow: DEFAULT_DELAY,\n };\n\n private getProps = createPropsGetter(Tooltip.defaultProps);\n private validateProps(props: TooltipProps): void {\n warning(\n props.children || props.anchorElement,\n `[Tooltip]: you must provide either 'children' or 'anchorElement' prop for Tooltip to work properly`,\n );\n }\n\n public static delay = DEFAULT_DELAY;\n private static triggersWithoutCloseButton: TooltipTrigger[] = ['hover', 'hoverAnchor', 'focus', 'hover&focus'];\n\n public state: TooltipState = { opened: false, focused: false };\n private globalObject!: GlobalObject;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n private theme!: Theme;\n private size!: SizeProp;\n private sizeVariables!: TooltipSizeVariables;\n private hoverTimeout: SafeTimer;\n private contentElement: Nullable<HTMLElement> = null;\n private clickedOutside = true;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n private popupRef = React.createRef<Popup>();\n\n public getAllowedPositions(): string[] {\n return this.props.allowedPositions ? this.props.allowedPositions : DefaultPositions;\n }\n\n public componentDidMount(): void {\n this.validateProps(this.getProps());\n }\n\n public componentDidUpdate() {\n const { trigger } = this.getProps();\n\n this.validateProps(this.getProps());\n if (trigger === 'closed' && this.state.opened) {\n this.close();\n }\n }\n\n public componentWillUnmount() {\n this.clearHoverTimeout();\n }\n\n public render(): React.JSX.Element {\n this.styles = getStyles(this.emotion);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n this.sizeVariables = this.getSizeVariables();\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupBackground: theme.tooltipBg,\n popupBorder: theme.tooltipBorder,\n popupBorderRadius: this.sizeVariables.borderRadius,\n popupPinSize: this.sizeVariables.pinSize,\n popupPinOffsetX: this.sizeVariables.pinOffsetX,\n popupPinOffsetY: this.sizeVariables.pinOffsetY,\n popupMargin: this.sizeVariables.margin,\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderContent = (): React.JSX.Element | null => {\n const content = this.props.render ? this.props.render() : null;\n if (isNullable(content)) {\n return null;\n }\n\n return (\n <div\n ref={this.refContent}\n className={this.cx(this.styles.tooltipContent(this.theme), this.sizeVariables.contentStyle)}\n data-tid={TooltipDataTids.content}\n >\n {content}\n {this.renderCloseButton()}\n </div>\n );\n };\n\n public renderCloseButton(): React.JSX.Element | null {\n const hasCross =\n this.props.closeButton === undefined\n ? !Tooltip.triggersWithoutCloseButton.includes(this.getProps().trigger)\n : this.props.closeButton;\n\n if (!hasCross) {\n return null;\n }\n\n const icon = (\n <CloseButtonIcon\n tabbable={false}\n side={parseInt(this.theme.tooltipCloseBtnSide)}\n color={this.theme.tooltipCloseBtnColor}\n colorHover={this.theme.tooltipCloseBtnHoverColor}\n />\n );\n\n return (\n <div\n className={this.cx(this.styles.closeButton(this.theme), this.sizeVariables.closeButtonStyle)}\n onClick={this.handleCloseButtonClick}\n data-tid={TooltipDataTids.crossIcon}\n >\n {icon}\n </div>\n );\n }\n\n public getAnchorElement = (): Nullable<Element> => {\n return this.popupRef.current?.anchorElement;\n };\n\n /**\n * Открывает тултип.\n * <p>Не работает при `trigger` = \"opened\" | \"closed\"`.</p>\n * @public\n */\n public show(): void {\n if (this.state.opened) {\n return;\n }\n const trigger = this.getProps().trigger;\n if (trigger === 'opened' || trigger === 'closed') {\n warning(false, `Function 'show' is not supported with trigger specified '${trigger}'`);\n return;\n }\n this.open();\n }\n\n /**\n * Закрывает тултип.\n * <p>Не работает при `trigger` = \"opened\" | \"closed\"`.</p>\n * @public\n */\n public hide(): void {\n const trigger = this.getProps().trigger;\n if (trigger === 'opened' || trigger === 'closed') {\n warning(false, `Function 'hide' is not supported with trigger specified '${trigger}'`);\n return;\n }\n this.close();\n }\n\n private renderMain() {\n const props = this.props;\n const content = this.renderContent();\n const { popupProps, layerProps = { active: false } } = this.getPopupAndLayerProps();\n const anchorElement = props.children || props.anchorElement;\n const popup = this.renderPopup(anchorElement, popupProps, content);\n\n return (\n <RenderLayer {...layerProps} getAnchorElement={this.getAnchorElement}>\n {popup}\n </RenderLayer>\n );\n }\n\n private renderPopup(\n anchorElement: React.ReactNode | HTMLElement,\n popupProps: Partial<PopupProps>,\n content: JSX.Element | null,\n ) {\n const { disableAnimations, trigger } = this.getProps();\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <Popup\n data-tid={TooltipDataTids.root}\n anchorElement={anchorElement}\n hasPin\n hasShadow\n maxWidth=\"none\"\n opened={this.state.opened}\n disableAnimations={disableAnimations}\n positions={this.getPositions()}\n pos={this.props.pos}\n ignoreHover={trigger === 'hoverAnchor'}\n onOpen={this.props.onOpen}\n onClose={this.props.onClose}\n tryPreserveFirstRenderedPosition\n ref={this.popupRef}\n withoutMobile\n {...popupProps}\n >\n {content}\n </Popup>\n </CommonWrapper>\n );\n }\n\n private getPositions = (): PopupPositionsType[] =>\n this.props.allowedPositions\n ? this.props.allowedPositions.filter((item) => DefaultPositions.includes(item))\n : DefaultPositions;\n\n private refContent = (node: HTMLElement | null) => {\n this.contentElement = node;\n };\n\n private getPopupAndLayerProps(): {\n layerProps?: Partial<RenderLayerProps>;\n popupProps: Partial<PopupProps>;\n } {\n const props = this.props;\n const useWrapper = !!props.children && this.getProps().useWrapper;\n const trigger = this.getProps().trigger;\n\n const defaultPopupAndLayerProps: ReturnType<typeof this.getPopupAndLayerProps> = {\n popupProps: {\n onMouseEnter: this.handleMouseEnter,\n onMouseLeave: this.handleMouseLeave,\n useWrapper,\n },\n };\n\n switch (trigger) {\n case 'opened':\n return {\n layerProps: {\n active: true,\n onClickOutside: this.handleClickOutsideAnchor,\n },\n popupProps: {\n opened: true,\n useWrapper,\n },\n };\n\n case 'closed':\n return {\n popupProps: {\n opened: false,\n useWrapper,\n },\n };\n\n case 'manual':\n return {\n popupProps: {\n useWrapper,\n },\n };\n case 'click':\n return {\n layerProps: {\n active: this.state.opened,\n onClickOutside: this.handleClickOutsideAnchor,\n },\n popupProps: {\n onClick: this.handleClick,\n useWrapper,\n },\n };\n\n case 'focus':\n return {\n popupProps: {\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n useWrapper,\n },\n };\n\n case 'hover&focus':\n return {\n layerProps: {\n active: this.state.opened,\n onClickOutside: this.handleClickOutsideAnchor,\n },\n popupProps: {\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n onMouseEnter: this.handleMouseEnter,\n onMouseLeave: this.handleMouseLeave,\n useWrapper,\n },\n };\n\n case 'hoverAnchor':\n case 'hover':\n return defaultPopupAndLayerProps;\n default:\n warning(false, `Unknown trigger specified: ${trigger}. Returning default value.`);\n return defaultPopupAndLayerProps;\n }\n }\n\n private open = () => this.setState({ opened: true });\n\n private close = () => this.setState({ opened: false });\n\n private clearHoverTimeout() {\n if (this.hoverTimeout) {\n clearTimeout(this.hoverTimeout);\n this.hoverTimeout = null;\n }\n }\n\n private handleMouseEnter = (event: MouseEventType) => {\n const isHoverAnchor = this.getProps().trigger === 'hoverAnchor';\n if (isHoverAnchor && event.target === this.contentElement) {\n return;\n }\n\n this.clearHoverTimeout();\n this.hoverTimeout = setTimeout(this.open, this.getProps().delayBeforeShow);\n };\n\n private handleMouseLeave = (event: MouseEventType) => {\n const trigger = this.getProps().trigger;\n if (\n (trigger === 'hover&focus' && this.state.focused) ||\n (trigger === 'hover' && event.relatedTarget === this.contentElement)\n ) {\n return;\n }\n\n this.clearHoverTimeout();\n\n if (trigger === 'hoverAnchor') {\n this.close();\n } else {\n this.hoverTimeout = setTimeout(this.close, Tooltip.delay);\n }\n };\n\n private handleClick = () => {\n this.open();\n };\n\n private handleClickOutsideAnchor = (event: Event) => {\n this.clickedOutside = this.isClickOutsideContent(event);\n if (this.clickedOutside) {\n if (this.props.onCloseRequest) {\n this.props.onCloseRequest(event);\n }\n this.close();\n }\n };\n\n private isClickOutsideContent(event: Event) {\n if (this.contentElement && isInstanceOf(event.target, this.globalObject.Element)) {\n return !containsTargetOrRenderContainer(event.target)(this.contentElement);\n }\n\n return true;\n }\n\n private handleFocus = () => {\n this.setState({ focused: true });\n this.open();\n };\n\n private handleBlur = () => {\n const trigger = this.getProps().trigger;\n if (trigger === 'hover&focus' && this.clickedOutside) {\n this.close();\n }\n\n if (trigger === 'focus') {\n this.close();\n }\n\n this.clickedOutside = true;\n this.setState({ focused: false });\n };\n\n private handleCloseButtonClick = (event: React.MouseEvent<HTMLElement>) => {\n event.stopPropagation();\n\n if (this.props.onCloseClick) {\n this.props.onCloseClick(event);\n }\n\n if (event.defaultPrevented) {\n return;\n }\n\n if (this.props.onCloseRequest) {\n this.props.onCloseRequest(event);\n }\n\n this.close();\n };\n\n private getSizeVariables = (): TooltipSizeVariables => {\n switch (this.size) {\n case 'small':\n return {\n closeButtonStyle: this.styles.closeButtonSmall(this.theme),\n contentStyle: this.styles.tooltipContentSmall(this.theme),\n borderRadius: this.theme.tooltipBorderRadiusSmall,\n pinSize: this.theme.tooltipPinSizeSmall,\n pinOffsetX: this.theme.tooltipPinOffsetXSmall,\n pinOffsetY: this.theme.tooltipPinOffsetYSmall,\n margin: this.theme.tooltipMarginSmall,\n };\n case 'medium':\n return {\n closeButtonStyle: this.styles.closeButtonMedium(this.theme),\n contentStyle: this.styles.tooltipContentMedium(this.theme),\n borderRadius: this.theme.tooltipBorderRadiusMedium,\n pinSize: this.theme.tooltipPinSizeMedium,\n pinOffsetX: this.theme.tooltipPinOffsetXMedium,\n pinOffsetY: this.theme.tooltipPinOffsetYMedium,\n margin: this.theme.tooltipMarginMedium,\n };\n case 'large':\n return {\n closeButtonStyle: this.styles.closeButtonLarge(this.theme),\n contentStyle: this.styles.tooltipContentLarge(this.theme),\n borderRadius: this.theme.tooltipBorderRadiusLarge,\n pinSize: this.theme.tooltipPinSizeLarge,\n pinOffsetX: this.theme.tooltipPinOffsetXLarge,\n pinOffsetY: this.theme.tooltipPinOffsetYLarge,\n margin: this.theme.tooltipMarginLarge,\n };\n default:\n warning(false, `Can't get size variables: invalid value in size prop '${this.props.size}'. Returning default`);\n return {\n closeButtonStyle: this.styles.closeButtonSmall(this.theme),\n contentStyle: this.styles.tooltipContentSmall(this.theme),\n borderRadius: this.theme.tooltipBorderRadiusSmall,\n pinSize: this.theme.tooltipPinSizeSmall,\n pinOffsetX: this.theme.tooltipPinOffsetXSmall,\n pinOffsetY: this.theme.tooltipPinOffsetYSmall,\n margin: this.theme.tooltipMarginSmall,\n };\n }\n };\n}\n"]}
@@ -11,7 +11,6 @@ export declare class FocusTrap extends React.PureComponent<FocusTrapProps> {
11
11
  getRootNode: TGetRootNode;
12
12
  private setRootNode;
13
13
  private globalObject;
14
- private emotion;
15
14
  private focusOutsideListenerToken;
16
15
  componentWillUnmount(): void;
17
16
  render(): React.JSX.Element;
@@ -32,10 +32,10 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
32
32
  };
33
33
  import React from 'react';
34
34
  import { CommonWrapper } from '../../internal/CommonWrapper/index.js';
35
- import { clickOutsideContent, listen as listenFocusOutside } from '../../lib/listenFocusOutside.js';
35
+ import { isInstanceOf } from '../../lib/isInstanceOf.js';
36
+ import { containsTargetOrRenderContainer, listen as listenFocusOutside } from '../../lib/listenFocusOutside.js';
36
37
  import { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';
37
38
  import { getRootNode, rootNode } from '../../lib/rootNode/index.js';
38
- import { isShadowRoot } from '../../lib/shadowDom/isShadowRoot.js';
39
39
  var FocusTrap = /** @class */ (function (_super) {
40
40
  __extends(FocusTrap, _super);
41
41
  function FocusTrap() {
@@ -56,12 +56,12 @@ var FocusTrap = /** @class */ (function (_super) {
56
56
  }
57
57
  };
58
58
  _this.handleNativeDocClick = function (event) {
59
+ var target = event.target || event.srcElement;
59
60
  var node = getRootNode(_this);
60
- var isShadowRootElement = isShadowRoot(_this.emotion.sheet.container.getRootNode());
61
- var clickOutsideOfContent = clickOutsideContent(event, node, isShadowRootElement, _this.globalObject);
62
- if (clickOutsideOfContent) {
63
- _this.onClickOutside(event);
61
+ if (node && isInstanceOf(target, _this.globalObject.Element) && containsTargetOrRenderContainer(target)(node)) {
62
+ return;
64
63
  }
64
+ _this.onClickOutside(event);
65
65
  };
66
66
  return _this;
67
67
  }
@@ -1 +1 @@
1
- {"version":3,"file":"FocusTrap.js","sourceRoot":"","sources":["../../../internal/FocusTrap/FocusTrap.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\nimport React from 'react';\n\nimport type { CommonProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport type { GlobalObject } from '../../lib/globalObject.js';\nimport { clickOutsideContent, listen as listenFocusOutside } from '../../lib/listenFocusOutside.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { getRootNode, rootNode } from '../../lib/rootNode/index.js';\nimport { isShadowRoot } from '../../lib/shadowDom/isShadowRoot.js';\n\nexport interface FocusTrapProps extends CommonProps {\n children: React.ReactElement<any>;\n onBlur?: (event: FocusEvent) => void;\n}\n\n@withRenderEnvironment\n@rootNode\nexport class FocusTrap extends React.PureComponent<FocusTrapProps> {\n public static __KONTUR_REACT_UI__ = 'FocusTrap';\n public static displayName = 'FocusTrap';\n\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private globalObject!: GlobalObject;\n private emotion!: Emotion;\n\n private focusOutsideListenerToken: {\n remove: () => void;\n } | null = null;\n\n public componentWillUnmount() {\n if (this.focusOutsideListenerToken) {\n this.detachListeners();\n }\n }\n\n public render() {\n const { children, onBlur } = this.props;\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {React.cloneElement(React.Children.only(children), {\n onFocus: (...args: any[]) => {\n if (onBlur) {\n this.attachListeners();\n }\n if (children.props && children.props.onFocus) {\n children.props.onFocus(...args);\n }\n },\n })}\n </CommonWrapper>\n );\n }\n\n private onClickOutside = (e: Event) => {\n if (this.props.onBlur) {\n this.props.onBlur(e as FocusEvent);\n }\n this.detachListeners();\n };\n\n private attachListeners = () => {\n const rootNode = getRootNode(this);\n if (!this.focusOutsideListenerToken && rootNode) {\n this.focusOutsideListenerToken = listenFocusOutside([rootNode], this.onClickOutside, this.globalObject);\n\n this.globalObject.document?.addEventListener(\n 'ontouchstart' in this.globalObject.document.documentElement ? 'touchstart' : 'mousedown',\n this.handleNativeDocClick,\n );\n }\n };\n\n private detachListeners() {\n if (this.focusOutsideListenerToken) {\n this.focusOutsideListenerToken.remove();\n this.focusOutsideListenerToken = null;\n\n this.globalObject.document?.removeEventListener(\n 'ontouchstart' in this.globalObject.document.documentElement ? 'touchstart' : 'mousedown',\n this.handleNativeDocClick,\n );\n }\n }\n\n private handleNativeDocClick = (event: Event) => {\n const node = getRootNode(this);\n const isShadowRootElement = isShadowRoot(this.emotion.sheet.container.getRootNode());\n const clickOutsideOfContent = clickOutsideContent(event, node, isShadowRootElement, this.globalObject);\n if (clickOutsideOfContent) {\n this.onClickOutside(event);\n }\n };\n}\n"]}
1
+ {"version":3,"file":"FocusTrap.js","sourceRoot":"","sources":["../../../internal/FocusTrap/FocusTrap.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport type { CommonProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport type { GlobalObject } from '../../lib/globalObject.js';\nimport { isInstanceOf } from '../../lib/isInstanceOf.js';\nimport { containsTargetOrRenderContainer, listen as listenFocusOutside } from '../../lib/listenFocusOutside.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { getRootNode, rootNode } from '../../lib/rootNode/index.js';\n\nexport interface FocusTrapProps extends CommonProps {\n children: React.ReactElement<any>;\n onBlur?: (event: FocusEvent) => void;\n}\n\n@withRenderEnvironment\n@rootNode\nexport class FocusTrap extends React.PureComponent<FocusTrapProps> {\n public static __KONTUR_REACT_UI__ = 'FocusTrap';\n public static displayName = 'FocusTrap';\n\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private globalObject!: GlobalObject;\n\n private focusOutsideListenerToken: {\n remove: () => void;\n } | null = null;\n\n public componentWillUnmount() {\n if (this.focusOutsideListenerToken) {\n this.detachListeners();\n }\n }\n\n public render() {\n const { children, onBlur } = this.props;\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {React.cloneElement(React.Children.only(children), {\n onFocus: (...args: any[]) => {\n if (onBlur) {\n this.attachListeners();\n }\n if (children.props && children.props.onFocus) {\n children.props.onFocus(...args);\n }\n },\n })}\n </CommonWrapper>\n );\n }\n\n private onClickOutside = (e: Event) => {\n if (this.props.onBlur) {\n this.props.onBlur(e as FocusEvent);\n }\n this.detachListeners();\n };\n\n private attachListeners = () => {\n const rootNode = getRootNode(this);\n if (!this.focusOutsideListenerToken && rootNode) {\n this.focusOutsideListenerToken = listenFocusOutside([rootNode], this.onClickOutside, this.globalObject);\n\n this.globalObject.document?.addEventListener(\n 'ontouchstart' in this.globalObject.document.documentElement ? 'touchstart' : 'mousedown',\n this.handleNativeDocClick,\n );\n }\n };\n\n private detachListeners() {\n if (this.focusOutsideListenerToken) {\n this.focusOutsideListenerToken.remove();\n this.focusOutsideListenerToken = null;\n\n this.globalObject.document?.removeEventListener(\n 'ontouchstart' in this.globalObject.document.documentElement ? 'touchstart' : 'mousedown',\n this.handleNativeDocClick,\n );\n }\n }\n\n private handleNativeDocClick = (event: Event) => {\n const target = event.target || event.srcElement;\n const node = getRootNode(this);\n\n if (node && isInstanceOf(target, this.globalObject.Element) && containsTargetOrRenderContainer(target)(node)) {\n return;\n }\n\n this.onClickOutside(event);\n };\n}\n"]}
@@ -4,7 +4,7 @@ import type { TGetRootNode } from '../../lib/rootNode/index.js';
4
4
  import type { FocusEventType, MouseEventType } from '../../typings/event-types.js';
5
5
  import type { Nullable } from '../../typings/utility-types.js';
6
6
  import type { CommonProps } from '../CommonWrapper/index.js';
7
- import { type Priority } from '../ZIndex/index.js';
7
+ import type { Priority } from '../ZIndex/index.js';
8
8
  export declare const PopupNonPinnablePositions: string[];
9
9
  export declare const PopupPinnablePositions: string[];
10
10
  export declare const PopupPositions: readonly string[];
@@ -151,7 +151,6 @@ export declare class Popup extends React.Component<PopupProps, PopupState> {
151
151
  private refForTransition;
152
152
  private hasAnchorElementListeners;
153
153
  private rootId;
154
- private getOffsetParent;
155
154
  anchorElement: Nullable<Element>;
156
155
  private absoluteParent;
157
156
  componentDidMount(): void;
@@ -186,7 +185,6 @@ export declare class Popup extends React.Component<PopupProps, PopupState> {
186
185
  private updateLocation;
187
186
  private locationEquals;
188
187
  private getOrderedPositions;
189
- private getRelativePos;
190
188
  private getLocation;
191
189
  private tryReuseCurrentLocation;
192
190
  private tryGetFirstFullyVisibleLocation;
@@ -53,14 +53,12 @@ import * as LayoutEvents from '../../lib/LayoutEvents.js';
53
53
  import { mergeRefs } from '../../lib/mergeRefs.js';
54
54
  import { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';
55
55
  import { getRootNode, rootNode } from '../../lib/rootNode/index.js';
56
- import { isShadowRoot } from '../../lib/shadowDom/isShadowRoot.js';
57
- import { PopupConsumer } from '../../lib/theming/Emotion.js';
58
56
  import { ThemeContext } from '../../lib/theming/ThemeContext.js';
59
57
  import { getRandomID, isFunction, isNonNullable, isNullable, isRefableElement } from '../../lib/utils.js';
60
58
  import { CommonWrapper } from '../CommonWrapper/index.js';
61
59
  import { getVisualStateDataAttributes } from '../CommonWrapper/utils/getVisualStateDataAttributes.js';
62
60
  import { MobilePopup } from '../MobilePopup/index.js';
63
- import { RenderContainer } from '../RenderContainer/RenderContainer.js';
61
+ import { RenderContainer } from '../RenderContainer/index.js';
64
62
  import { ZIndex } from '../ZIndex/index.js';
65
63
  import { getStyles } from './Popup.styles.js';
66
64
  import { PopupHelper } from './PopupHelper.js';
@@ -212,7 +210,6 @@ var Popup = /** @class */ (function (_super) {
212
210
  }
213
211
  };
214
212
  _this.getRelativeShift = function () {
215
- var _a;
216
213
  var absoluteParent = _this.absoluteParent;
217
214
  if (!_this.props.disablePortal || !absoluteParent) {
218
215
  return {
@@ -221,10 +218,9 @@ var Popup = /** @class */ (function (_super) {
221
218
  };
222
219
  }
223
220
  var rect = PopupHelper.getElementAbsoluteRect(absoluteParent);
224
- var deltaParentPosition = _this.getRelativePos(_this.emotion.sheet.container.getRootNode(), (_a = _this.getOffsetParent) === null || _a === void 0 ? void 0 : _a.call(_this, _this.emotion.sheet.container.getRootNode()));
225
221
  return {
226
- top: -(rect.top - deltaParentPosition.top),
227
- left: -(rect.left - deltaParentPosition.left),
222
+ top: -rect.top,
223
+ left: -rect.left,
228
224
  };
229
225
  };
230
226
  return _this;
@@ -284,13 +280,9 @@ var Popup = /** @class */ (function (_super) {
284
280
  Popup.prototype.render = function () {
285
281
  var _this = this;
286
282
  this.styles = getStyles(this.emotion);
287
- return (React.createElement(PopupConsumer, null, function (_a) {
288
- var getOffsetParent = _a.getOffsetParent;
289
- return (React.createElement(ThemeContext.Consumer, null, function (theme) {
290
- _this.theme = theme;
291
- _this.getOffsetParent = getOffsetParent;
292
- return _this.renderMain();
293
- }));
283
+ return (React.createElement(ThemeContext.Consumer, null, function (theme) {
284
+ _this.theme = theme;
285
+ return _this.renderMain();
294
286
  }));
295
287
  };
296
288
  Popup.prototype.renderMobile = function () {
@@ -430,26 +422,7 @@ var Popup = /** @class */ (function (_super) {
430
422
  }
431
423
  return __spreadArray(__spreadArray([], positions.slice(index), true), positions.slice(0, index), true);
432
424
  };
433
- Popup.prototype.getRelativePos = function (root, offsetParent) {
434
- var relativePos = {
435
- top: 0,
436
- left: 0,
437
- };
438
- if (isShadowRoot(root) && this.globalObject.document) {
439
- var childPos = PopupHelper.convertRectToAbsolute(root.host.getBoundingClientRect(), this.globalObject);
440
- relativePos.top = childPos.top;
441
- relativePos.left = childPos.left;
442
- if (offsetParent === null || offsetParent === void 0 ? void 0 : offsetParent.scrollTop) {
443
- relativePos.top += offsetParent.scrollTop;
444
- }
445
- if (offsetParent === null || offsetParent === void 0 ? void 0 : offsetParent.scrollLeft) {
446
- relativePos.left += offsetParent.scrollLeft;
447
- }
448
- }
449
- return relativePos;
450
- };
451
425
  Popup.prototype.getLocation = function (popupElement, location) {
452
- var _a;
453
426
  var tryBestFallbackPosition = this.getProps().tryBestFallbackPosition;
454
427
  var positions = this.getOrderedPositions();
455
428
  var anchorElement = this.anchorElement;
@@ -457,27 +430,26 @@ var Popup = /** @class */ (function (_super) {
457
430
  if (!(anchorElement && isInstanceOf(anchorElement, this.globalObject.Element))) {
458
431
  return location;
459
432
  }
460
- var deltaParentPosition = this.getRelativePos(this.emotion.sheet.container.getRootNode(), (_a = this.getOffsetParent) === null || _a === void 0 ? void 0 : _a.call(this, this.emotion.sheet.container.getRootNode()));
461
- var anchorRect = PopupHelper.getElementAbsoluteRect(anchorElement, deltaParentPosition);
462
- var popupRect = PopupHelper.getElementAbsoluteRect(popupElement, deltaParentPosition);
463
- var reusedLocation = this.tryReuseCurrentLocation(location, positions, anchorRect, popupRect, deltaParentPosition);
433
+ var anchorRect = PopupHelper.getElementAbsoluteRect(anchorElement);
434
+ var popupRect = PopupHelper.getElementAbsoluteRect(popupElement);
435
+ var reusedLocation = this.tryReuseCurrentLocation(location, positions, anchorRect, popupRect);
464
436
  if (reusedLocation) {
465
437
  return reusedLocation;
466
438
  }
467
- var fullyVisibleLocation = this.tryGetFirstFullyVisibleLocation(positions, anchorRect, popupRect, deltaParentPosition);
439
+ var fullyVisibleLocation = this.tryGetFirstFullyVisibleLocation(positions, anchorRect, popupRect);
468
440
  if (fullyVisibleLocation) {
469
441
  return fullyVisibleLocation;
470
442
  }
471
- return this.getFallbackLocation(positions, anchorRect, popupRect, Boolean(tryBestFallbackPosition), deltaParentPosition);
443
+ return this.getFallbackLocation(positions, anchorRect, popupRect, Boolean(tryBestFallbackPosition));
472
444
  };
473
- Popup.prototype.tryReuseCurrentLocation = function (location, positions, anchorRect, popupRect, deltaParentPosition) {
445
+ Popup.prototype.tryReuseCurrentLocation = function (location, positions, anchorRect, popupRect) {
474
446
  var tryPreserveFirstRenderedPosition = this.getProps().tryPreserveFirstRenderedPosition;
475
447
  if (!(location && location !== DUMMY_LOCATION && location.position)) {
476
448
  return null;
477
449
  }
478
450
  var position = location.position;
479
451
  var coordinates = this.getCoordinates(anchorRect, popupRect, position);
480
- var isFullyVisible = PopupHelper.isFullyVisible(coordinates, popupRect, this.globalObject, deltaParentPosition);
452
+ var isFullyVisible = PopupHelper.isFullyVisible(coordinates, popupRect, this.globalObject);
481
453
  var canBecomeVisible = !isFullyVisible && PopupHelper.canBecomeFullyVisible(position, coordinates, this.globalObject);
482
454
  var shouldReuseCurrentLocation =
483
455
  // если нужно сохранить первоначальную позицию и Попап целиком
@@ -491,40 +463,39 @@ var Popup = /** @class */ (function (_super) {
491
463
  }
492
464
  return { coordinates: coordinates, position: position, isFullyVisible: true };
493
465
  };
494
- Popup.prototype.tryGetFirstFullyVisibleLocation = function (positions, anchorRect, popupRect, deltaParentPosition) {
466
+ Popup.prototype.tryGetFirstFullyVisibleLocation = function (positions, anchorRect, popupRect) {
495
467
  for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {
496
468
  var position = positions_1[_i];
497
469
  var coordinates = this.getCoordinates(anchorRect, popupRect, position);
498
- if (PopupHelper.isFullyVisible(coordinates, popupRect, this.globalObject, deltaParentPosition)) {
470
+ if (PopupHelper.isFullyVisible(coordinates, popupRect, this.globalObject)) {
499
471
  return { coordinates: coordinates, position: position, isFullyVisible: true };
500
472
  }
501
473
  }
502
474
  return null;
503
475
  };
504
- Popup.prototype.getFallbackLocation = function (positions, anchorRect, popupRect, tryBestFallbackPosition, deltaParentPosition) {
476
+ Popup.prototype.getFallbackLocation = function (positions, anchorRect, popupRect, tryBestFallbackPosition) {
505
477
  var position = tryBestFallbackPosition
506
- ? this.pickBestFallbackPosition(positions, anchorRect, popupRect, deltaParentPosition)
478
+ ? this.pickBestFallbackPosition(positions, anchorRect, popupRect)
507
479
  : positions[0];
508
480
  var coordinates = this.getCoordinates(anchorRect, popupRect, position);
509
481
  return {
510
482
  coordinates: coordinates,
511
483
  position: position,
512
- isFullyVisible: PopupHelper.isFullyVisible(coordinates, popupRect, this.globalObject, deltaParentPosition),
484
+ isFullyVisible: PopupHelper.isFullyVisible(coordinates, popupRect, this.globalObject),
513
485
  };
514
486
  };
515
- Popup.prototype.pickBestFallbackPosition = function (positions, anchorRect, popupRect, deltaParentPosition) {
487
+ Popup.prototype.pickBestFallbackPosition = function (positions, anchorRect, popupRect) {
516
488
  var _this = this;
517
- if (deltaParentPosition === void 0) { deltaParentPosition = { top: 0, left: 0 }; }
518
489
  var defaultPosition = positions[0];
519
490
  var coords = this.getCoordinates(anchorRect, popupRect, defaultPosition);
520
- var overflow = PopupHelper.getOverflowEdges(coords, popupRect, this.globalObject, deltaParentPosition);
521
- var viewport = PopupHelper.getViewportAbsoluteRect(this.globalObject);
491
+ var overflow = PopupHelper.getOverflowEdges(coords, popupRect, this.globalObject);
522
492
  var preferredDirection = PopupHelper.getPreferredDirection(overflow, defaultPosition);
523
493
  var preferredAlignOrder = overflow.left || overflow.right ? ['right', 'center', 'left'] : ['center', 'left', 'right'];
524
494
  var candidates = PopupHelper.getOrderedFallbackCandidates(positions, overflow, preferredDirection, preferredAlignOrder, PopupPinnablePositions);
525
495
  var positionsSet = new Set(positions);
496
+ var viewport = PopupHelper.getViewportAbsoluteRect(this.globalObject);
526
497
  var evaluatedCandidates = candidates.map(function (position) {
527
- return _this.evaluateFallbackCandidate(position, anchorRect, popupRect, viewport, deltaParentPosition);
498
+ return _this.evaluateFallbackCandidate(position, anchorRect, popupRect, viewport);
528
499
  });
529
500
  var bestAreaCandidate = this.pickBestAreaCandidate(evaluatedCandidates, positionsSet);
530
501
  var bestOverflowCandidate = this.pickBestOverflowCandidate(evaluatedCandidates, positionsSet);
@@ -535,11 +506,11 @@ var Popup = /** @class */ (function (_super) {
535
506
  ? bestAreaCandidate.position
536
507
  : bestOverflowCandidate.position;
537
508
  };
538
- Popup.prototype.evaluateFallbackCandidate = function (position, anchorRect, popupRect, viewport, deltaParentPosition) {
509
+ Popup.prototype.evaluateFallbackCandidate = function (position, anchorRect, popupRect, viewport) {
539
510
  var coordinates = this.getCoordinates(anchorRect, popupRect, position);
540
511
  var popupAbsolute = {
541
- top: coordinates.top + deltaParentPosition.top,
542
- left: coordinates.left + deltaParentPosition.left,
512
+ top: coordinates.top,
513
+ left: coordinates.left,
543
514
  width: popupRect.width,
544
515
  height: popupRect.height,
545
516
  };
@@ -549,7 +520,7 @@ var Popup = /** @class */ (function (_super) {
549
520
  Math.max(popupAbsolute.top, viewport.top);
550
521
  var visibleWidth = Math.max(0, overlapWidth);
551
522
  var visibleHeight = Math.max(0, overlapHeight);
552
- var overflow = PopupHelper.getOverflowEdges(coordinates, popupRect, this.globalObject, deltaParentPosition);
523
+ var overflow = PopupHelper.getOverflowEdges(coordinates, popupRect, this.globalObject);
553
524
  var isFullyVisible = visibleWidth === popupAbsolute.width && visibleHeight === popupAbsolute.height;
554
525
  var isAreaEligible = PopupHelper.getPositionObject(position).direction !== 'left' || isFullyVisible;
555
526
  return {