@amboss/design-system 1.16.6 → 1.17.0

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.
@@ -0,0 +1,124 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+ var FocusTrap = require('focus-trap-react');
5
+ var TooltipContent = require('../Tooltip/TooltipContent.js');
6
+
7
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
8
+
9
+ var React__default = /*#__PURE__*/_interopDefault(React);
10
+ var FocusTrap__default = /*#__PURE__*/_interopDefault(FocusTrap);
11
+
12
+ const FocusTrapContent = /*#__PURE__*/React__default.default.forwardRef((_ref, ref) => {
13
+ let {
14
+ children
15
+ } = _ref;
16
+ return /*#__PURE__*/React__default.default.createElement("div", {
17
+ ref: ref
18
+ }, children);
19
+ });
20
+ function Popover(_ref2) {
21
+ let {
22
+ placement = "auto",
23
+ content,
24
+ children,
25
+ contentPadding = "m",
26
+ externalTriggerRef,
27
+ portalContainer,
28
+ isVisible: isPopoverVisible,
29
+ "data-e2e-test-id": dataE2eTestId,
30
+ onVisibilityChange
31
+ } = _ref2;
32
+ const tooltipId = React.useMemo(() => `DSTooltip_${Math.floor(Date.now() * Math.random())}`, []);
33
+ const [isVisible, setVisible] = React.useState(isPopoverVisible);
34
+ const internalTriggerRef = React.useRef(null);
35
+ const triggerRef = externalTriggerRef || internalTriggerRef;
36
+ const isOutsideClickOnTrigger = React.useRef(false);
37
+ const toggleVisibility = React.useCallback(status => {
38
+ setVisible(status);
39
+ if (onVisibilityChange) {
40
+ onVisibilityChange(status);
41
+ }
42
+ }, [onVisibilityChange]);
43
+
44
+ // Outside click is also fired when the popover is open and trigger is clicked. `isOutsideClickOnTrigger` saves this condition and we check for it so as to not toggle the popover twice.
45
+ const handleTriggerClick = React.useCallback(() => {
46
+ if (!isOutsideClickOnTrigger.current) {
47
+ toggleVisibility(!isVisible);
48
+ } else {
49
+ // reset this value so that popover can open in next click
50
+ isOutsideClickOnTrigger.current = false;
51
+ }
52
+ }, [toggleVisibility, isVisible]);
53
+ const handleClickOutsideDeactivates = React.useCallback(evt => {
54
+ if (triggerRef.current.contains(evt.target)) {
55
+ isOutsideClickOnTrigger.current = true;
56
+ }
57
+ return true;
58
+ }, [triggerRef, isOutsideClickOnTrigger]);
59
+ React.useEffect(() => {
60
+ toggleVisibility(isPopoverVisible);
61
+ }, [isPopoverVisible, toggleVisibility]);
62
+ React.useEffect(() => {
63
+ let trigger;
64
+ if (externalTriggerRef?.current && !children) {
65
+ trigger = externalTriggerRef.current;
66
+ trigger.setAttribute("tabindex", "0");
67
+ trigger.addEventListener("click", handleTriggerClick);
68
+ }
69
+ return () => {
70
+ if (trigger) {
71
+ trigger.removeEventListener("click", handleTriggerClick);
72
+ }
73
+ };
74
+ }, [externalTriggerRef, children, handleTriggerClick]);
75
+ React.useEffect(() => {
76
+ if (externalTriggerRef?.current && !children) {
77
+ const trigger = externalTriggerRef.current;
78
+ if (isVisible) {
79
+ trigger.setAttribute("aria-expanded", true);
80
+ trigger.setAttribute("aria-controls", tooltipId);
81
+ } else {
82
+ trigger.removeAttribute("aria-expanded");
83
+ trigger.removeAttribute("aria-controls");
84
+ }
85
+ }
86
+ }, [externalTriggerRef, children, tooltipId, isVisible]);
87
+ const triggerElm = children ? /*#__PURE__*/React__default.default.cloneElement(children, {
88
+ ref: triggerRef,
89
+ ...(isVisible && {
90
+ "aria-expanded": true,
91
+ "aria-controls": tooltipId
92
+ }),
93
+ tabIndex: 0,
94
+ onClick: handleTriggerClick
95
+ }) : null;
96
+ const contentElm = /*#__PURE__*/React__default.default.createElement(FocusTrap__default.default, {
97
+ focusTrapOptions: {
98
+ clickOutsideDeactivates: handleClickOutsideDeactivates,
99
+ // de-active focus trap on outside click
100
+ escapeDeactivates: true,
101
+ // de-activate focus trap on escape key
102
+ fallbackFocus: `#${tooltipId}`,
103
+ // set focus to tooltip content container if it has no focusable element
104
+ onDeactivate: () => {
105
+ toggleVisibility(false);
106
+ }
107
+ }
108
+ }, /*#__PURE__*/React__default.default.createElement(FocusTrapContent, null, content));
109
+ const tooltipElm = /*#__PURE__*/React__default.default.createElement(TooltipContent.TooltipContent, {
110
+ dataDSId: "Popover",
111
+ content: contentElm,
112
+ contentPadding: contentPadding,
113
+ placement: placement,
114
+ portalContainer: portalContainer,
115
+ dataE2eTestId: dataE2eTestId,
116
+ isVisible: isVisible,
117
+ tooltipId: tooltipId,
118
+ tabIndex: -1,
119
+ triggerRef: triggerRef
120
+ });
121
+ return /*#__PURE__*/React__default.default.createElement(React__default.default.Fragment, null, triggerElm, tooltipElm);
122
+ }
123
+
124
+ exports.Popover = Popover;
@@ -1,113 +1,15 @@
1
1
  'use strict';
2
2
 
3
- var _styled = require('@emotion/styled/base');
4
3
  var React = require('react');
5
- var react = require('@emotion/react');
6
- var ReactDOM = require('react-dom');
7
- var useDocument = require('../../shared/useDocument.js');
8
- var useWindow = require('../../shared/useWindow.js');
9
- var SubThemeProvider = require('../SubThemeProvider/SubThemeProvider.js');
10
4
  var Text = require('../Typography/Text/Text.js');
11
- var _zindex = require('../../../build-tokens/_zindex.json.js');
12
- var utils = require('./utils.js');
5
+ var TooltipContent = require('./TooltipContent.js');
13
6
 
14
7
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
15
8
 
16
- var _styled__default = /*#__PURE__*/_interopDefault(_styled);
17
9
  var React__default = /*#__PURE__*/_interopDefault(React);
18
10
 
19
- const ANIMATION_DURATION = 200;
20
11
  const SHOW_HIDE_DELAY = 200;
21
- const StyledContainer = /*#__PURE__*/_styled__default.default("div", process.env.NODE_ENV === "production" ? {
22
- target: "e2kei841"
23
- } : {
24
- target: "e2kei841",
25
- label: "StyledContainer"
26
- })(_ref => {
27
- let {
28
- theme,
29
- horizontalPlacement,
30
- verticalPlacement
31
- } = _ref;
32
- const animationDistance = verticalPlacement === "top" ? `${utils.ANIMATION_DISTANCE}px` : `-${utils.ANIMATION_DISTANCE}px`;
33
- const animation = react.keyframes({
34
- to: {
35
- opacity: 1,
36
- transform: horizontalPlacement === "center" ? `translate(-50%, ${animationDistance})` : `translateY(${animationDistance})`
37
- }
38
- });
39
- return {
40
- position: "absolute",
41
- zIndex: _zindex.default.tooltip.value,
42
- opacity: 0,
43
- animation: `${ANIMATION_DURATION}ms ease-out forwards ${animation}`,
44
- borderRadius: theme.variables.size.borderRadius.xs,
45
- backgroundColor: theme.values.color.background.primary.default,
46
- maxWidth: "224px",
47
- boxSizing: "border-box",
48
- padding: `${theme.variables.size.spacing.xs} ${theme.variables.size.spacing.s}`,
49
- ...(horizontalPlacement === "center" && {
50
- transform: "translate(-50%)"
51
- })
52
- };
53
- }, process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRvb2x0aXAudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXlFd0IiLCJmaWxlIjoiVG9vbHRpcC50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHtcbiAgdXNlU3RhdGUsXG4gIHVzZVJlZixcbiAgdXNlTGF5b3V0RWZmZWN0LFxuICB1c2VFZmZlY3QsXG4gIHVzZUNhbGxiYWNrLFxuICBNdXRhYmxlUmVmT2JqZWN0LFxuICB1c2VNZW1vLFxufSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZFwiO1xuaW1wb3J0IHsga2V5ZnJhbWVzIH0gZnJvbSBcIkBlbW90aW9uL3JlYWN0XCI7XG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tIFwicmVhY3QtZG9tXCI7XG5pbXBvcnQgeyB1c2VEb2N1bWVudCB9IGZyb20gXCIuLi8uLi9zaGFyZWQvdXNlRG9jdW1lbnRcIjtcbmltcG9ydCB7IHVzZVdpbmRvdyB9IGZyb20gXCIuLi8uLi9zaGFyZWQvdXNlV2luZG93XCI7XG5pbXBvcnQgeyBTdWJUaGVtZVByb3ZpZGVyIH0gZnJvbSBcIi4uL1N1YlRoZW1lUHJvdmlkZXIvU3ViVGhlbWVQcm92aWRlclwiO1xuaW1wb3J0IHsgVGV4dCB9IGZyb20gXCIuLi9UeXBvZ3JhcGh5L1RleHQvVGV4dFwiO1xuaW1wb3J0IHpJbmRpY2VzIGZyb20gXCIuLi8uLi8uLi9idWlsZC10b2tlbnMvX3ppbmRleC5qc29uXCI7XG5cbmltcG9ydCB7XG4gIEFSUk9XX1NJWkUsXG4gIEFSUk9XX09GRlNFVCxcbiAgQU5JTUFUSU9OX0RJU1RBTkNFLFxuICBnZXRUb29sdGlwUG9zaXRpb24sXG59IGZyb20gXCIuL3V0aWxzXCI7XG5cbmV4cG9ydCB0eXBlIEJhc2VQcm9wcyA9IHtcbiAgLyogVG9vbHRpcCBjb250ZW50ICovXG4gIGNvbnRlbnQ6IHN0cmluZztcbiAgLyogUGxhY2VtZW50ICovXG4gIHBsYWNlbWVudD86XG4gICAgfCBcImF1dG9cIlxuICAgIHwgXCJ0b3BcIlxuICAgIHwgXCJib3R0b21cIlxuICAgIHwgXCJ0b3AtbGVmdFwiXG4gICAgfCBcInRvcC1yaWdodFwiXG4gICAgfCBcImJvdHRvbS1sZWZ0XCJcbiAgICB8IFwiYm90dG9tLXJpZ2h0XCI7XG4gIC8qIEN1c3RvbSBwb3J0YWwgY29udGFpbmVyIHRvIHJlbmRlciB0b29sdGlwIGludG8gKi9cbiAgcG9ydGFsQ29udGFpbmVyPzogSFRNTEVsZW1lbnQ7XG4gIFwiZGF0YS1lMmUtdGVzdC1pZFwiPzogc3RyaW5nO1xuICAvKiBDYWxsZWQgd2hlbiB0b29sdGlwIGFwcGVhcnMgYW5kIGRpc2FwcGVhcnMgKi9cbiAgb25WaXNpYmlsaXR5Q2hhbmdlPzogKGlzVmlzaWJsZTogYm9vbGVhbikgPT4gdm9pZDtcbn07XG5cbmV4cG9ydCB0eXBlIENvbmRpdGlvbmFsUHJvcHMgPVxuICB8IHtcbiAgICAgIGV4dGVybmFsVHJpZ2dlclJlZj86IG5ldmVyO1xuICAgICAgLyogVHJpZ2dlciBlbGVtZW50IC0gd3JhcCB0cmlnZ2VyIGVsZW1lbnQgd2l0aGluIFRvb2x0aXAgLSB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgdHJpZ2dlciBwcm9wICovXG4gICAgICBjaGlsZHJlbjogUmVhY3QuUmVhY3RFbGVtZW50O1xuICAgIH1cbiAgfCB7XG4gICAgICBjaGlsZHJlbj86IG5ldmVyO1xuICAgICAgLyogVHJpZ2dlciBlbGVtZW50IHJlZiAtIHBhc3MgaW4gYW4gZXh0ZXJuYWwgdHJpZ2dlciBlbGVtZW50ICovXG4gICAgICBleHRlcm5hbFRyaWdnZXJSZWY6IE11dGFibGVSZWZPYmplY3Q8YW55PjtcbiAgICB9O1xuXG5leHBvcnQgdHlwZSBUb29sdGlwUHJvcHMgPSBCYXNlUHJvcHMgJiBDb25kaXRpb25hbFByb3BzO1xuXG5leHBvcnQgdHlwZSBUb29sdGlwUG9zaXRpb24gPSB7XG4gIHRvcDogbnVtYmVyO1xuICBsZWZ0OiBudW1iZXI7XG4gIGhvcml6b250YWxQbGFjZW1lbnQ6IFwibGVmdFwiIHwgXCJyaWdodFwiIHwgXCJjZW50ZXJcIjtcbiAgdmVydGljYWxQbGFjZW1lbnQ6IFwidG9wXCIgfCBcImJvdHRvbVwiO1xufTtcblxudHlwZSBTdHlsZWRDb250YWluZXJQcm9wcyA9IHtcbiAgaG9yaXpvbnRhbFBsYWNlbWVudDogVG9vbHRpcFBvc2l0aW9uW1wiaG9yaXpvbnRhbFBsYWNlbWVudFwiXTtcbiAgdmVydGljYWxQbGFjZW1lbnQ6IFRvb2x0aXBQb3NpdGlvbltcInZlcnRpY2FsUGxhY2VtZW50XCJdO1xufTtcblxuY29uc3QgQU5JTUFUSU9OX0RVUkFUSU9OID0gMjAwO1xuY29uc3QgU0hPV19ISURFX0RFTEFZID0gMjAwO1xuXG5jb25zdCBTdHlsZWRDb250YWluZXIgPSBzdHlsZWQuZGl2PFN0eWxlZENvbnRhaW5lclByb3BzPihcbiAgKHsgdGhlbWUsIGhvcml6b250YWxQbGFjZW1lbnQsIHZlcnRpY2FsUGxhY2VtZW50IH0pID0+IHtcbiAgICBjb25zdCBhbmltYXRpb25EaXN0YW5jZSA9XG4gICAgICB2ZXJ0aWNhbFBsYWNlbWVudCA9PT0gXCJ0b3BcIlxuICAgICAgICA/IGAke0FOSU1BVElPTl9ESVNUQU5DRX1weGBcbiAgICAgICAgOiBgLSR7QU5JTUFUSU9OX0RJU1RBTkNFfXB4YDtcbiAgICBjb25zdCBhbmltYXRpb24gPSBrZXlmcmFtZXMoe1xuICAgICAgdG86IHtcbiAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgdHJhbnNmb3JtOlxuICAgICAgICAgIGhvcml6b250YWxQbGFjZW1lbnQgPT09IFwiY2VudGVyXCJcbiAgICAgICAgICAgID8gYHRyYW5zbGF0ZSgtNTAlLCAke2FuaW1hdGlvbkRpc3RhbmNlfSlgXG4gICAgICAgICAgICA6IGB0cmFuc2xhdGVZKCR7YW5pbWF0aW9uRGlzdGFuY2V9KWAsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgICB6SW5kZXg6IHpJbmRpY2VzLnRvb2x0aXAudmFsdWUsXG4gICAgICBvcGFjaXR5OiAwLFxuICAgICAgYW5pbWF0aW9uOiBgJHtBTklNQVRJT05fRFVSQVRJT059bXMgZWFzZS1vdXQgZm9yd2FyZHMgJHthbmltYXRpb259YCxcbiAgICAgIGJvcmRlclJhZGl1czogdGhlbWUudmFyaWFibGVzLnNpemUuYm9yZGVyUmFkaXVzLnhzLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS52YWx1ZXMuY29sb3IuYmFja2dyb3VuZC5wcmltYXJ5LmRlZmF1bHQsXG4gICAgICBtYXhXaWR0aDogXCIyMjRweFwiLFxuICAgICAgYm94U2l6aW5nOiBcImJvcmRlci1ib3hcIixcbiAgICAgIHBhZGRpbmc6IGAke3RoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcueHN9ICR7dGhlbWUudmFyaWFibGVzLnNpemUuc3BhY2luZy5zfWAsXG5cbiAgICAgIC4uLihob3Jpem9udGFsUGxhY2VtZW50ID09PSBcImNlbnRlclwiICYmIHtcbiAgICAgICAgdHJhbnNmb3JtOiBcInRyYW5zbGF0ZSgtNTAlKVwiLFxuICAgICAgfSksXG4gICAgfTtcbiAgfVxuKTtcblxudHlwZSBTdHlsZWRBcnJvd1Byb3BzID0ge1xuICB2ZXJ0aWNhbFBsYWNlbWVudDogVG9vbHRpcFBvc2l0aW9uW1widmVydGljYWxQbGFjZW1lbnRcIl07XG4gIGhvcml6b250YWxQbGFjZW1lbnQ6IFRvb2x0aXBQb3NpdGlvbltcImhvcml6b250YWxQbGFjZW1lbnRcIl07XG59O1xuXG5jb25zdCBTdHlsZWRBcnJvdyA9IHN0eWxlZC5kaXY8U3R5bGVkQXJyb3dQcm9wcz4oXG4gICh7IHRoZW1lLCB2ZXJ0aWNhbFBsYWNlbWVudCwgaG9yaXpvbnRhbFBsYWNlbWVudCB9KSA9PiAoe1xuICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgd2lkdGg6IDAsXG4gICAgaGVpZ2h0OiAwLFxuICAgIGJvcmRlckxlZnQ6IGAke0FSUk9XX1NJWkV9cHggc29saWQgdHJhbnNwYXJlbnRgLFxuICAgIGJvcmRlclJpZ2h0OiBgJHtBUlJPV19TSVpFfXB4IHNvbGlkIHRyYW5zcGFyZW50YCxcblxuICAgIC4uLih2ZXJ0aWNhbFBsYWNlbWVudCA9PT0gXCJ0b3BcIiAmJiB7XG4gICAgICB0b3A6IFwiMTAwJVwiLFxuICAgICAgYm9yZGVyVG9wOiBgJHtBUlJPV19TSVpFfXB4IHNvbGlkICR7dGhlbWUudmFsdWVzLmNvbG9yLmJhY2tncm91bmQucHJpbWFyeS5kZWZhdWx0fWAsXG4gICAgfSksXG5cbiAgICAuLi4odmVydGljYWxQbGFjZW1lbnQgPT09IFwiYm90dG9tXCIgJiYge1xuICAgICAgdG9wOiBgLSR7QVJST1dfU0laRX1weGAsXG4gICAgICBib3JkZXJCb3R0b206IGAke0FSUk9XX1NJWkV9cHggc29saWQgJHt0aGVtZS52YWx1ZXMuY29sb3IuYmFja2dyb3VuZC5wcmltYXJ5LmRlZmF1bHR9YCxcbiAgICB9KSxcblxuICAgIC4uLihob3Jpem9udGFsUGxhY2VtZW50ID09PSBcImNlbnRlclwiICYmIHtcbiAgICAgIGxlZnQ6IFwiNTAlXCIsXG4gICAgICB0cmFuc2Zvcm06IFwidHJhbnNsYXRlKC01MCUpXCIsXG4gICAgfSksXG5cbiAgICAuLi4oaG9yaXpvbnRhbFBsYWNlbWVudCA9PT0gXCJyaWdodFwiICYmIHtcbiAgICAgIGxlZnQ6IGAke0FSUk9XX09GRlNFVH1weGAsXG4gICAgfSksXG5cbiAgICAuLi4oaG9yaXpvbnRhbFBsYWNlbWVudCA9PT0gXCJsZWZ0XCIgJiYge1xuICAgICAgcmlnaHQ6IGAke0FSUk9XX09GRlNFVH1weGAsXG4gICAgfSksXG4gIH0pXG4pO1xuXG5jb25zdCBpbml0aWFsUG9zaXRpb246IFRvb2x0aXBQb3NpdGlvbiA9IHtcbiAgdG9wOiAwLFxuICBsZWZ0OiAwLFxuICB2ZXJ0aWNhbFBsYWNlbWVudDogXCJ0b3BcIixcbiAgaG9yaXpvbnRhbFBsYWNlbWVudDogXCJjZW50ZXJcIixcbn07XG5cbmxldCBsYXN0VG9vbHRpcEhpZGVUaW1lc3RhbXAgPSAwO1xuXG4vKiBEaXNhYmxlIGFuaW1hdGlvbiBpZiB0aW1lIGJldHdlZW4gbGFzdCBjbG9zZSBhbmQgbmV3IG9wZW4gaXMgbGVzcyB0aGFuIDUwMG1zICsgU0hPV19ISURFX0RFTEFZICovXG5mdW5jdGlvbiBnZXRBbmltYXRpb25EdXJhdGlvbigpIHtcbiAgbGV0IGFuaW1hdGlvbkR1cmF0aW9uID0gYCR7QU5JTUFUSU9OX0RVUkFUSU9OfW1zYDtcblxuICBpZiAobGFzdFRvb2x0aXBIaWRlVGltZXN0YW1wKSB7XG4gICAgY29uc3QgdGltZVNpbmNlTGFzdFRvb2x0aXAgPSBEYXRlLm5vdygpIC0gbGFzdFRvb2x0aXBIaWRlVGltZXN0YW1wO1xuXG4gICAgaWYgKHRpbWVTaW5jZUxhc3RUb29sdGlwIDwgNTAwICsgU0hPV19ISURFX0RFTEFZKSB7XG4gICAgICBhbmltYXRpb25EdXJhdGlvbiA9IFwiMG1zXCI7XG4gICAgfVxuICB9XG4gIHJldHVybiBhbmltYXRpb25EdXJhdGlvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFRvb2x0aXAoe1xuICBwbGFjZW1lbnQgPSBcImF1dG9cIixcbiAgY29udGVudCxcbiAgY2hpbGRyZW4sXG4gIGV4dGVybmFsVHJpZ2dlclJlZixcbiAgcG9ydGFsQ29udGFpbmVyLFxuICBcImRhdGEtZTJlLXRlc3QtaWRcIjogZGF0YUUyZVRlc3RJZCxcbiAgb25WaXNpYmlsaXR5Q2hhbmdlLFxufTogVG9vbHRpcFByb3BzKTogUmVhY3QuUmVhY3RFbGVtZW50IHtcbiAgY29uc3QgdG9vbHRpcElkID0gdXNlTWVtbyhcbiAgICAoKSA9PiBgRFNUb29sdGlwXyR7TWF0aC5mbG9vcihEYXRlLm5vdygpICogTWF0aC5yYW5kb20oKSl9YCxcbiAgICBbXVxuICApO1xuICBjb25zdCBbcG9zaXRpb24sIHNldFBvc2l0aW9uXSA9IHVzZVN0YXRlKGluaXRpYWxQb3NpdGlvbik7XG4gIGNvbnN0IFtpc1Zpc2libGUsIHNldFZpc2libGVdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCB0cmlnZ2VyZWRCeUV2ZW50ID0gdXNlUmVmKG51bGwpOyAvLyBpbmRpY2F0ZXMgaWYgdHJpZ2dlcmVkIGJ5IGhvdmVyIG9yIGZvY3VzXG4gIGNvbnN0IGlzVG9vbHRpcEhvdmVyZWQgPSB1c2VSZWYoZmFsc2UpO1xuICBjb25zdCBpc1RyaWdnZXJIb3ZlcmVkID0gdXNlUmVmKGZhbHNlKTtcbiAgY29uc3QgaW50ZXJuYWxUcmlnZ2VyUmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCB0b29sdGlwUmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBkb2N1bWVudCA9IHVzZURvY3VtZW50KCk7XG4gIGNvbnN0IHdpbmRvdyA9IHVzZVdpbmRvdygpO1xuICBjb25zdCBoaWRlVG9vbHRpcFRpbWVvdXRJZCA9IHVzZVJlZihudWxsKTtcbiAgY29uc3Qgc2hvd1Rvb2x0aXBUaW1lb3V0SWQgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IHRyaWdnZXJSZWYgPSBleHRlcm5hbFRyaWdnZXJSZWYgfHwgaW50ZXJuYWxUcmlnZ2VyUmVmO1xuXG4gIGNvbnN0IHRvZ2dsZVZpc2liaWxpdHkgPSB1c2VDYWxsYmFjayhcbiAgICAoc3RhdHVzOiBib29sZWFuKSA9PiB7XG4gICAgICBzZXRWaXNpYmxlKHN0YXR1cyk7XG5cbiAgICAgIGlmIChvblZpc2liaWxpdHlDaGFuZ2UpIHtcbiAgICAgICAgb25WaXNpYmlsaXR5Q2hhbmdlKHN0YXR1cyk7XG4gICAgICB9XG5cbiAgICAgIC8vIGxvZyB0aW1lIHdoZW4gdG9vbHRpcCBjbG9zZXNcbiAgICAgIGlmICghc3RhdHVzKSB7XG4gICAgICAgIGxhc3RUb29sdGlwSGlkZVRpbWVzdGFtcCA9IERhdGUubm93KCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbb25WaXNpYmlsaXR5Q2hhbmdlXVxuICApO1xuXG4gIGNvbnN0IGhhbmRsZVRyaWdnZXJQb2ludGVyRW50ZXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaXNUcmlnZ2VySG92ZXJlZC5jdXJyZW50ID0gdHJ1ZTtcbiAgICBpZiAoIWlzVG9vbHRpcEhvdmVyZWQuY3VycmVudCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHNob3dUb29sdGlwVGltZW91dElkLmN1cnJlbnQpO1xuICAgICAgLy8gRGVsYXkgc2hvdyB0b29sdGlwIHRvIHByZXZlbnQgZmxpY2tlcmluZyB3aGVuIG1vdXNlIG1vdmVzIHF1aWNrbHkgb3ZlciB0cmlnZ2VyXG4gICAgICBzaG93VG9vbHRpcFRpbWVvdXRJZC5jdXJyZW50ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmIChpc1RyaWdnZXJIb3ZlcmVkLmN1cnJlbnQpIHtcbiAgICAgICAgICB0cmlnZ2VyZWRCeUV2ZW50LmN1cnJlbnQgPSBcImhvdmVyXCI7XG4gICAgICAgICAgdG9nZ2xlVmlzaWJpbGl0eSh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfSwgU0hPV19ISURFX0RFTEFZKTtcbiAgICB9XG4gIH0sIFt0b2dnbGVWaXNpYmlsaXR5XSk7XG5cbiAgY29uc3QgaGFuZGxlVHJpZ2dlclBvaW50ZXJMZWF2ZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpc1RyaWdnZXJIb3ZlcmVkLmN1cnJlbnQgPSBmYWxzZTtcbiAgICBjbGVhclRpbWVvdXQoaGlkZVRvb2x0aXBUaW1lb3V0SWQuY3VycmVudCk7XG4gICAgLy8gRGVsYXkgcmVtb3ZpbmcgdG9vbHRpcCBmcm9tIERPTSB0byBhbGxvdyBob3ZlciBvdmVyIHRvb2x0aXAgZWxlbWVudFxuICAgIGhpZGVUb29sdGlwVGltZW91dElkLmN1cnJlbnQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgIWlzVG9vbHRpcEhvdmVyZWQuY3VycmVudCAmJlxuICAgICAgICB0cmlnZ2VyZWRCeUV2ZW50LmN1cnJlbnQgPT09IFwiaG92ZXJcIiAmJlxuICAgICAgICAhaXNUcmlnZ2VySG92ZXJlZC5jdXJyZW50XG4gICAgICApIHtcbiAgICAgICAgdG9nZ2xlVmlzaWJpbGl0eShmYWxzZSk7XG4gICAgICB9XG4gICAgfSwgU0hPV19ISURFX0RFTEFZKTtcbiAgfSwgW3RvZ2dsZVZpc2liaWxpdHldKTtcblxuICBjb25zdCBoYW5kbGVUcmlnZ2VyRm9jdXMgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgdHJpZ2dlcmVkQnlFdmVudC5jdXJyZW50ID0gXCJmb2N1c1wiO1xuICAgIHRvZ2dsZVZpc2liaWxpdHkodHJ1ZSk7XG4gIH0sIFt0b2dnbGVWaXNpYmlsaXR5XSk7XG5cbiAgY29uc3QgaGFuZGxlVHJpZ2dlckJsdXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKHRyaWdnZXJlZEJ5RXZlbnQuY3VycmVudCA9PT0gXCJmb2N1c1wiKSB7XG4gICAgICB0b2dnbGVWaXNpYmlsaXR5KGZhbHNlKTtcbiAgICB9XG4gIH0sIFt0b2dnbGVWaXNpYmlsaXR5XSk7XG5cbiAgY29uc3QgaGFuZGxlVHJpZ2dlcktleURvd24gPSB1c2VDYWxsYmFjayhcbiAgICAoZXZ0KSA9PiB7XG4gICAgICBpZiAoZXZ0LmtleSA9PT0gXCJFc2NhcGVcIikge1xuICAgICAgICB0b2dnbGVWaXNpYmlsaXR5KGZhbHNlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFt0b2dnbGVWaXNpYmlsaXR5XVxuICApO1xuXG4gIGNvbnN0IGhhbmRsZVRvb2x0aXBQb2ludGVyRW50ZXIgPSAoKSA9PiB7XG4gICAgaXNUb29sdGlwSG92ZXJlZC5jdXJyZW50ID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVUb29sdGlwUG9pbnRlckxlYXZlID0gKCkgPT4ge1xuICAgIGlzVG9vbHRpcEhvdmVyZWQuY3VycmVudCA9IGZhbHNlO1xuICAgIGlmICh0cmlnZ2VyZWRCeUV2ZW50LmN1cnJlbnQgPT09IFwiaG92ZXJcIikge1xuICAgICAgdG9nZ2xlVmlzaWJpbGl0eShmYWxzZSk7XG4gICAgfVxuICB9O1xuXG4gIHVzZUVmZmVjdChcbiAgICAoKSA9PiAoKSA9PiB7XG4gICAgICAvLyBjbGVhciB0aW1lcnNcbiAgICAgIGNsZWFyVGltZW91dChzaG93VG9vbHRpcFRpbWVvdXRJZC5jdXJyZW50KTtcbiAgICAgIGNsZWFyVGltZW91dChoaWRlVG9vbHRpcFRpbWVvdXRJZC5jdXJyZW50KTtcbiAgICB9LFxuICAgIFtdXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBsZXQgdHJpZ2dlcjogSFRNTEVsZW1lbnQ7XG5cbiAgICBpZiAoZXh0ZXJuYWxUcmlnZ2VyUmVmICYmIGV4dGVybmFsVHJpZ2dlclJlZi5jdXJyZW50ICYmICFjaGlsZHJlbikge1xuICAgICAgdHJpZ2dlciA9IGV4dGVybmFsVHJpZ2dlclJlZi5jdXJyZW50O1xuXG4gICAgICB0cmlnZ2VyLnNldEF0dHJpYnV0ZShcInRhYmluZGV4XCIsIFwiMFwiKTtcbiAgICAgIHRyaWdnZXIuYWRkRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJlbnRlclwiLCBoYW5kbGVUcmlnZ2VyUG9pbnRlckVudGVyKTtcbiAgICAgIHRyaWdnZXIuYWRkRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJsZWF2ZVwiLCBoYW5kbGVUcmlnZ2VyUG9pbnRlckxlYXZlKTtcbiAgICAgIHRyaWdnZXIuYWRkRXZlbnRMaXN0ZW5lcihcImZvY3VzXCIsIGhhbmRsZVRyaWdnZXJGb2N1cyk7XG4gICAgICB0cmlnZ2VyLmFkZEV2ZW50TGlzdGVuZXIoXCJibHVyXCIsIGhhbmRsZVRyaWdnZXJCbHVyKTtcbiAgICAgIHRyaWdnZXIuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgaGFuZGxlVHJpZ2dlcktleURvd24pO1xuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAodHJpZ2dlcikge1xuICAgICAgICB0cmlnZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJwb2ludGVyZW50ZXJcIiwgaGFuZGxlVHJpZ2dlclBvaW50ZXJFbnRlcik7XG4gICAgICAgIHRyaWdnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJsZWF2ZVwiLCBoYW5kbGVUcmlnZ2VyUG9pbnRlckxlYXZlKTtcbiAgICAgICAgdHJpZ2dlci5yZW1vdmVFdmVudExpc3RlbmVyKFwiZm9jdXNcIiwgaGFuZGxlVHJpZ2dlckZvY3VzKTtcbiAgICAgICAgdHJpZ2dlci5yZW1vdmVFdmVudExpc3RlbmVyKFwiYmx1clwiLCBoYW5kbGVUcmlnZ2VyQmx1cik7XG4gICAgICAgIHRyaWdnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgaGFuZGxlVHJpZ2dlcktleURvd24pO1xuICAgICAgfVxuICAgIH07XG4gIH0sIFtcbiAgICBleHRlcm5hbFRyaWdnZXJSZWYsXG4gICAgY2hpbGRyZW4sXG4gICAgaGFuZGxlVHJpZ2dlclBvaW50ZXJFbnRlcixcbiAgICBoYW5kbGVUcmlnZ2VyUG9pbnRlckxlYXZlLFxuICAgIGhhbmRsZVRyaWdnZXJGb2N1cyxcbiAgICBoYW5kbGVUcmlnZ2VyQmx1cixcbiAgICBoYW5kbGVUcmlnZ2VyS2V5RG93bixcbiAgXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZXh0ZXJuYWxUcmlnZ2VyUmVmICYmIGV4dGVybmFsVHJpZ2dlclJlZi5jdXJyZW50ICYmICFjaGlsZHJlbikge1xuICAgICAgY29uc3QgdHJpZ2dlciA9IGV4dGVybmFsVHJpZ2dlclJlZi5jdXJyZW50O1xuXG4gICAgICBpZiAoaXNWaXNpYmxlKSB7XG4gICAgICAgIHRyaWdnZXIuc2V0QXR0cmlidXRlKFwiYXJpYS1kZXNjcmliZWRieVwiLCB0b29sdGlwSWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdHJpZ2dlci5yZW1vdmVBdHRyaWJ1dGUoXCJhcmlhLWRlc2NyaWJlZGJ5XCIpO1xuICAgICAgfVxuICAgIH1cbiAgfSwgW2V4dGVybmFsVHJpZ2dlclJlZiwgY2hpbGRyZW4sIHRvb2x0aXBJZCwgaXNWaXNpYmxlXSk7XG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNWaXNpYmxlICYmIHRyaWdnZXJSZWYuY3VycmVudCAmJiB0b29sdGlwUmVmLmN1cnJlbnQpIHtcbiAgICAgIC8vIGNhbGN1bGF0ZSB0b29sdGlwIHBvc2l0aW9uXG4gICAgICBzZXRQb3NpdGlvbihcbiAgICAgICAgZ2V0VG9vbHRpcFBvc2l0aW9uKHBsYWNlbWVudCwgdHJpZ2dlclJlZiwgdG9vbHRpcFJlZiwgZG9jdW1lbnQsIHdpbmRvdylcbiAgICAgICk7XG4gICAgfVxuICB9LCBbaXNWaXNpYmxlLCBwbGFjZW1lbnQsIHRyaWdnZXJSZWYsIGRvY3VtZW50LCB3aW5kb3ddKTtcblxuICBsZXQgcG9ydGFsO1xuXG4gIGlmIChpc1Zpc2libGUpIHtcbiAgICBjb25zdCB0b29sdGlwRWxtID0gKFxuICAgICAgPFN1YlRoZW1lUHJvdmlkZXIgbmFtZT1cImludmVydGVkXCI+XG4gICAgICAgIDxTdHlsZWRDb250YWluZXJcbiAgICAgICAgICBkYXRhLWUyZS10ZXN0LWlkPXtkYXRhRTJlVGVzdElkfVxuICAgICAgICAgIGRhdGEtZHMtaWQ9XCJUb29sdGlwXCJcbiAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgdG9wOiBwb3NpdGlvbi50b3AsXG4gICAgICAgICAgICBsZWZ0OiBwb3NpdGlvbi5sZWZ0LFxuICAgICAgICAgICAgYW5pbWF0aW9uRHVyYXRpb246IGdldEFuaW1hdGlvbkR1cmF0aW9uKCksXG4gICAgICAgICAgfX1cbiAgICAgICAgICByZWY9e3Rvb2x0aXBSZWZ9XG4gICAgICAgICAgaWQ9e3Rvb2x0aXBJZH1cbiAgICAgICAgICByb2xlPVwidG9vbHRpcFwiXG4gICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICBob3Jpem9udGFsUGxhY2VtZW50PXtwb3NpdGlvbi5ob3Jpem9udGFsUGxhY2VtZW50fVxuICAgICAgICAgIHZlcnRpY2FsUGxhY2VtZW50PXtwb3NpdGlvbi52ZXJ0aWNhbFBsYWNlbWVudH1cbiAgICAgICAgICBvblBvaW50ZXJFbnRlcj17aGFuZGxlVG9vbHRpcFBvaW50ZXJFbnRlcn1cbiAgICAgICAgICBvblBvaW50ZXJMZWF2ZT17aGFuZGxlVG9vbHRpcFBvaW50ZXJMZWF2ZX1cbiAgICAgICAgPlxuICAgICAgICAgIDxUZXh0IHNpemU9XCJzXCI+e2NvbnRlbnR9PC9UZXh0PlxuICAgICAgICAgIDxTdHlsZWRBcnJvd1xuICAgICAgICAgICAgaG9yaXpvbnRhbFBsYWNlbWVudD17cG9zaXRpb24uaG9yaXpvbnRhbFBsYWNlbWVudH1cbiAgICAgICAgICAgIHZlcnRpY2FsUGxhY2VtZW50PXtwb3NpdGlvbi52ZXJ0aWNhbFBsYWNlbWVudH1cbiAgICAgICAgICAvPlxuICAgICAgICA8L1N0eWxlZENvbnRhaW5lcj5cbiAgICAgIDwvU3ViVGhlbWVQcm92aWRlcj5cbiAgICApO1xuXG4gICAgcG9ydGFsID0gY3JlYXRlUG9ydGFsKHRvb2x0aXBFbG0sIHBvcnRhbENvbnRhaW5lciB8fCBkb2N1bWVudC5ib2R5KTtcbiAgfVxuXG4gIGNvbnN0IHRyaWdnZXJFbG0gPSBjaGlsZHJlblxuICAgID8gUmVhY3QuY2xvbmVFbGVtZW50KGNoaWxkcmVuLCB7XG4gICAgICAgIHJlZjogdHJpZ2dlclJlZixcbiAgICAgICAgLi4uKGlzVmlzaWJsZSAmJiB7XG4gICAgICAgICAgXCJhcmlhLWRlc2NyaWJlZGJ5XCI6IHRvb2x0aXBJZCxcbiAgICAgICAgfSksXG4gICAgICAgIHRhYkluZGV4OiAwLFxuICAgICAgICBvblBvaW50ZXJFbnRlcjogaGFuZGxlVHJpZ2dlclBvaW50ZXJFbnRlcixcbiAgICAgICAgb25Qb2ludGVyTGVhdmU6IGhhbmRsZVRyaWdnZXJQb2ludGVyTGVhdmUsXG4gICAgICAgIG9uRm9jdXM6IGhhbmRsZVRyaWdnZXJGb2N1cyxcbiAgICAgICAgb25CbHVyOiBoYW5kbGVUcmlnZ2VyQmx1cixcbiAgICAgICAgb25LZXlEb3duOiBoYW5kbGVUcmlnZ2VyS2V5RG93bixcbiAgICAgIH0pXG4gICAgOiBudWxsO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHt0cmlnZ2VyRWxtfVxuICAgICAge3BvcnRhbH1cbiAgICA8Lz5cbiAgKTtcbn1cbiJdfQ== */");
54
- const StyledArrow = /*#__PURE__*/_styled__default.default("div", process.env.NODE_ENV === "production" ? {
55
- target: "e2kei840"
56
- } : {
57
- target: "e2kei840",
58
- label: "StyledArrow"
59
- })(_ref2 => {
60
- let {
61
- theme,
62
- verticalPlacement,
63
- horizontalPlacement
64
- } = _ref2;
65
- return {
66
- position: "absolute",
67
- width: 0,
68
- height: 0,
69
- borderLeft: `${utils.ARROW_SIZE}px solid transparent`,
70
- borderRight: `${utils.ARROW_SIZE}px solid transparent`,
71
- ...(verticalPlacement === "top" && {
72
- top: "100%",
73
- borderTop: `${utils.ARROW_SIZE}px solid ${theme.values.color.background.primary.default}`
74
- }),
75
- ...(verticalPlacement === "bottom" && {
76
- top: `-${utils.ARROW_SIZE}px`,
77
- borderBottom: `${utils.ARROW_SIZE}px solid ${theme.values.color.background.primary.default}`
78
- }),
79
- ...(horizontalPlacement === "center" && {
80
- left: "50%",
81
- transform: "translate(-50%)"
82
- }),
83
- ...(horizontalPlacement === "right" && {
84
- left: `${utils.ARROW_OFFSET}px`
85
- }),
86
- ...(horizontalPlacement === "left" && {
87
- right: `${utils.ARROW_OFFSET}px`
88
- })
89
- };
90
- }, process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRvb2x0aXAudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWdIb0IiLCJmaWxlIjoiVG9vbHRpcC50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHtcbiAgdXNlU3RhdGUsXG4gIHVzZVJlZixcbiAgdXNlTGF5b3V0RWZmZWN0LFxuICB1c2VFZmZlY3QsXG4gIHVzZUNhbGxiYWNrLFxuICBNdXRhYmxlUmVmT2JqZWN0LFxuICB1c2VNZW1vLFxufSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZFwiO1xuaW1wb3J0IHsga2V5ZnJhbWVzIH0gZnJvbSBcIkBlbW90aW9uL3JlYWN0XCI7XG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tIFwicmVhY3QtZG9tXCI7XG5pbXBvcnQgeyB1c2VEb2N1bWVudCB9IGZyb20gXCIuLi8uLi9zaGFyZWQvdXNlRG9jdW1lbnRcIjtcbmltcG9ydCB7IHVzZVdpbmRvdyB9IGZyb20gXCIuLi8uLi9zaGFyZWQvdXNlV2luZG93XCI7XG5pbXBvcnQgeyBTdWJUaGVtZVByb3ZpZGVyIH0gZnJvbSBcIi4uL1N1YlRoZW1lUHJvdmlkZXIvU3ViVGhlbWVQcm92aWRlclwiO1xuaW1wb3J0IHsgVGV4dCB9IGZyb20gXCIuLi9UeXBvZ3JhcGh5L1RleHQvVGV4dFwiO1xuaW1wb3J0IHpJbmRpY2VzIGZyb20gXCIuLi8uLi8uLi9idWlsZC10b2tlbnMvX3ppbmRleC5qc29uXCI7XG5cbmltcG9ydCB7XG4gIEFSUk9XX1NJWkUsXG4gIEFSUk9XX09GRlNFVCxcbiAgQU5JTUFUSU9OX0RJU1RBTkNFLFxuICBnZXRUb29sdGlwUG9zaXRpb24sXG59IGZyb20gXCIuL3V0aWxzXCI7XG5cbmV4cG9ydCB0eXBlIEJhc2VQcm9wcyA9IHtcbiAgLyogVG9vbHRpcCBjb250ZW50ICovXG4gIGNvbnRlbnQ6IHN0cmluZztcbiAgLyogUGxhY2VtZW50ICovXG4gIHBsYWNlbWVudD86XG4gICAgfCBcImF1dG9cIlxuICAgIHwgXCJ0b3BcIlxuICAgIHwgXCJib3R0b21cIlxuICAgIHwgXCJ0b3AtbGVmdFwiXG4gICAgfCBcInRvcC1yaWdodFwiXG4gICAgfCBcImJvdHRvbS1sZWZ0XCJcbiAgICB8IFwiYm90dG9tLXJpZ2h0XCI7XG4gIC8qIEN1c3RvbSBwb3J0YWwgY29udGFpbmVyIHRvIHJlbmRlciB0b29sdGlwIGludG8gKi9cbiAgcG9ydGFsQ29udGFpbmVyPzogSFRNTEVsZW1lbnQ7XG4gIFwiZGF0YS1lMmUtdGVzdC1pZFwiPzogc3RyaW5nO1xuICAvKiBDYWxsZWQgd2hlbiB0b29sdGlwIGFwcGVhcnMgYW5kIGRpc2FwcGVhcnMgKi9cbiAgb25WaXNpYmlsaXR5Q2hhbmdlPzogKGlzVmlzaWJsZTogYm9vbGVhbikgPT4gdm9pZDtcbn07XG5cbmV4cG9ydCB0eXBlIENvbmRpdGlvbmFsUHJvcHMgPVxuICB8IHtcbiAgICAgIGV4dGVybmFsVHJpZ2dlclJlZj86IG5ldmVyO1xuICAgICAgLyogVHJpZ2dlciBlbGVtZW50IC0gd3JhcCB0cmlnZ2VyIGVsZW1lbnQgd2l0aGluIFRvb2x0aXAgLSB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgdHJpZ2dlciBwcm9wICovXG4gICAgICBjaGlsZHJlbjogUmVhY3QuUmVhY3RFbGVtZW50O1xuICAgIH1cbiAgfCB7XG4gICAgICBjaGlsZHJlbj86IG5ldmVyO1xuICAgICAgLyogVHJpZ2dlciBlbGVtZW50IHJlZiAtIHBhc3MgaW4gYW4gZXh0ZXJuYWwgdHJpZ2dlciBlbGVtZW50ICovXG4gICAgICBleHRlcm5hbFRyaWdnZXJSZWY6IE11dGFibGVSZWZPYmplY3Q8YW55PjtcbiAgICB9O1xuXG5leHBvcnQgdHlwZSBUb29sdGlwUHJvcHMgPSBCYXNlUHJvcHMgJiBDb25kaXRpb25hbFByb3BzO1xuXG5leHBvcnQgdHlwZSBUb29sdGlwUG9zaXRpb24gPSB7XG4gIHRvcDogbnVtYmVyO1xuICBsZWZ0OiBudW1iZXI7XG4gIGhvcml6b250YWxQbGFjZW1lbnQ6IFwibGVmdFwiIHwgXCJyaWdodFwiIHwgXCJjZW50ZXJcIjtcbiAgdmVydGljYWxQbGFjZW1lbnQ6IFwidG9wXCIgfCBcImJvdHRvbVwiO1xufTtcblxudHlwZSBTdHlsZWRDb250YWluZXJQcm9wcyA9IHtcbiAgaG9yaXpvbnRhbFBsYWNlbWVudDogVG9vbHRpcFBvc2l0aW9uW1wiaG9yaXpvbnRhbFBsYWNlbWVudFwiXTtcbiAgdmVydGljYWxQbGFjZW1lbnQ6IFRvb2x0aXBQb3NpdGlvbltcInZlcnRpY2FsUGxhY2VtZW50XCJdO1xufTtcblxuY29uc3QgQU5JTUFUSU9OX0RVUkFUSU9OID0gMjAwO1xuY29uc3QgU0hPV19ISURFX0RFTEFZID0gMjAwO1xuXG5jb25zdCBTdHlsZWRDb250YWluZXIgPSBzdHlsZWQuZGl2PFN0eWxlZENvbnRhaW5lclByb3BzPihcbiAgKHsgdGhlbWUsIGhvcml6b250YWxQbGFjZW1lbnQsIHZlcnRpY2FsUGxhY2VtZW50IH0pID0+IHtcbiAgICBjb25zdCBhbmltYXRpb25EaXN0YW5jZSA9XG4gICAgICB2ZXJ0aWNhbFBsYWNlbWVudCA9PT0gXCJ0b3BcIlxuICAgICAgICA/IGAke0FOSU1BVElPTl9ESVNUQU5DRX1weGBcbiAgICAgICAgOiBgLSR7QU5JTUFUSU9OX0RJU1RBTkNFfXB4YDtcbiAgICBjb25zdCBhbmltYXRpb24gPSBrZXlmcmFtZXMoe1xuICAgICAgdG86IHtcbiAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgdHJhbnNmb3JtOlxuICAgICAgICAgIGhvcml6b250YWxQbGFjZW1lbnQgPT09IFwiY2VudGVyXCJcbiAgICAgICAgICAgID8gYHRyYW5zbGF0ZSgtNTAlLCAke2FuaW1hdGlvbkRpc3RhbmNlfSlgXG4gICAgICAgICAgICA6IGB0cmFuc2xhdGVZKCR7YW5pbWF0aW9uRGlzdGFuY2V9KWAsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgICB6SW5kZXg6IHpJbmRpY2VzLnRvb2x0aXAudmFsdWUsXG4gICAgICBvcGFjaXR5OiAwLFxuICAgICAgYW5pbWF0aW9uOiBgJHtBTklNQVRJT05fRFVSQVRJT059bXMgZWFzZS1vdXQgZm9yd2FyZHMgJHthbmltYXRpb259YCxcbiAgICAgIGJvcmRlclJhZGl1czogdGhlbWUudmFyaWFibGVzLnNpemUuYm9yZGVyUmFkaXVzLnhzLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS52YWx1ZXMuY29sb3IuYmFja2dyb3VuZC5wcmltYXJ5LmRlZmF1bHQsXG4gICAgICBtYXhXaWR0aDogXCIyMjRweFwiLFxuICAgICAgYm94U2l6aW5nOiBcImJvcmRlci1ib3hcIixcbiAgICAgIHBhZGRpbmc6IGAke3RoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcueHN9ICR7dGhlbWUudmFyaWFibGVzLnNpemUuc3BhY2luZy5zfWAsXG5cbiAgICAgIC4uLihob3Jpem9udGFsUGxhY2VtZW50ID09PSBcImNlbnRlclwiICYmIHtcbiAgICAgICAgdHJhbnNmb3JtOiBcInRyYW5zbGF0ZSgtNTAlKVwiLFxuICAgICAgfSksXG4gICAgfTtcbiAgfVxuKTtcblxudHlwZSBTdHlsZWRBcnJvd1Byb3BzID0ge1xuICB2ZXJ0aWNhbFBsYWNlbWVudDogVG9vbHRpcFBvc2l0aW9uW1widmVydGljYWxQbGFjZW1lbnRcIl07XG4gIGhvcml6b250YWxQbGFjZW1lbnQ6IFRvb2x0aXBQb3NpdGlvbltcImhvcml6b250YWxQbGFjZW1lbnRcIl07XG59O1xuXG5jb25zdCBTdHlsZWRBcnJvdyA9IHN0eWxlZC5kaXY8U3R5bGVkQXJyb3dQcm9wcz4oXG4gICh7IHRoZW1lLCB2ZXJ0aWNhbFBsYWNlbWVudCwgaG9yaXpvbnRhbFBsYWNlbWVudCB9KSA9PiAoe1xuICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgd2lkdGg6IDAsXG4gICAgaGVpZ2h0OiAwLFxuICAgIGJvcmRlckxlZnQ6IGAke0FSUk9XX1NJWkV9cHggc29saWQgdHJhbnNwYXJlbnRgLFxuICAgIGJvcmRlclJpZ2h0OiBgJHtBUlJPV19TSVpFfXB4IHNvbGlkIHRyYW5zcGFyZW50YCxcblxuICAgIC4uLih2ZXJ0aWNhbFBsYWNlbWVudCA9PT0gXCJ0b3BcIiAmJiB7XG4gICAgICB0b3A6IFwiMTAwJVwiLFxuICAgICAgYm9yZGVyVG9wOiBgJHtBUlJPV19TSVpFfXB4IHNvbGlkICR7dGhlbWUudmFsdWVzLmNvbG9yLmJhY2tncm91bmQucHJpbWFyeS5kZWZhdWx0fWAsXG4gICAgfSksXG5cbiAgICAuLi4odmVydGljYWxQbGFjZW1lbnQgPT09IFwiYm90dG9tXCIgJiYge1xuICAgICAgdG9wOiBgLSR7QVJST1dfU0laRX1weGAsXG4gICAgICBib3JkZXJCb3R0b206IGAke0FSUk9XX1NJWkV9cHggc29saWQgJHt0aGVtZS52YWx1ZXMuY29sb3IuYmFja2dyb3VuZC5wcmltYXJ5LmRlZmF1bHR9YCxcbiAgICB9KSxcblxuICAgIC4uLihob3Jpem9udGFsUGxhY2VtZW50ID09PSBcImNlbnRlclwiICYmIHtcbiAgICAgIGxlZnQ6IFwiNTAlXCIsXG4gICAgICB0cmFuc2Zvcm06IFwidHJhbnNsYXRlKC01MCUpXCIsXG4gICAgfSksXG5cbiAgICAuLi4oaG9yaXpvbnRhbFBsYWNlbWVudCA9PT0gXCJyaWdodFwiICYmIHtcbiAgICAgIGxlZnQ6IGAke0FSUk9XX09GRlNFVH1weGAsXG4gICAgfSksXG5cbiAgICAuLi4oaG9yaXpvbnRhbFBsYWNlbWVudCA9PT0gXCJsZWZ0XCIgJiYge1xuICAgICAgcmlnaHQ6IGAke0FSUk9XX09GRlNFVH1weGAsXG4gICAgfSksXG4gIH0pXG4pO1xuXG5jb25zdCBpbml0aWFsUG9zaXRpb246IFRvb2x0aXBQb3NpdGlvbiA9IHtcbiAgdG9wOiAwLFxuICBsZWZ0OiAwLFxuICB2ZXJ0aWNhbFBsYWNlbWVudDogXCJ0b3BcIixcbiAgaG9yaXpvbnRhbFBsYWNlbWVudDogXCJjZW50ZXJcIixcbn07XG5cbmxldCBsYXN0VG9vbHRpcEhpZGVUaW1lc3RhbXAgPSAwO1xuXG4vKiBEaXNhYmxlIGFuaW1hdGlvbiBpZiB0aW1lIGJldHdlZW4gbGFzdCBjbG9zZSBhbmQgbmV3IG9wZW4gaXMgbGVzcyB0aGFuIDUwMG1zICsgU0hPV19ISURFX0RFTEFZICovXG5mdW5jdGlvbiBnZXRBbmltYXRpb25EdXJhdGlvbigpIHtcbiAgbGV0IGFuaW1hdGlvbkR1cmF0aW9uID0gYCR7QU5JTUFUSU9OX0RVUkFUSU9OfW1zYDtcblxuICBpZiAobGFzdFRvb2x0aXBIaWRlVGltZXN0YW1wKSB7XG4gICAgY29uc3QgdGltZVNpbmNlTGFzdFRvb2x0aXAgPSBEYXRlLm5vdygpIC0gbGFzdFRvb2x0aXBIaWRlVGltZXN0YW1wO1xuXG4gICAgaWYgKHRpbWVTaW5jZUxhc3RUb29sdGlwIDwgNTAwICsgU0hPV19ISURFX0RFTEFZKSB7XG4gICAgICBhbmltYXRpb25EdXJhdGlvbiA9IFwiMG1zXCI7XG4gICAgfVxuICB9XG4gIHJldHVybiBhbmltYXRpb25EdXJhdGlvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFRvb2x0aXAoe1xuICBwbGFjZW1lbnQgPSBcImF1dG9cIixcbiAgY29udGVudCxcbiAgY2hpbGRyZW4sXG4gIGV4dGVybmFsVHJpZ2dlclJlZixcbiAgcG9ydGFsQ29udGFpbmVyLFxuICBcImRhdGEtZTJlLXRlc3QtaWRcIjogZGF0YUUyZVRlc3RJZCxcbiAgb25WaXNpYmlsaXR5Q2hhbmdlLFxufTogVG9vbHRpcFByb3BzKTogUmVhY3QuUmVhY3RFbGVtZW50IHtcbiAgY29uc3QgdG9vbHRpcElkID0gdXNlTWVtbyhcbiAgICAoKSA9PiBgRFNUb29sdGlwXyR7TWF0aC5mbG9vcihEYXRlLm5vdygpICogTWF0aC5yYW5kb20oKSl9YCxcbiAgICBbXVxuICApO1xuICBjb25zdCBbcG9zaXRpb24sIHNldFBvc2l0aW9uXSA9IHVzZVN0YXRlKGluaXRpYWxQb3NpdGlvbik7XG4gIGNvbnN0IFtpc1Zpc2libGUsIHNldFZpc2libGVdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCB0cmlnZ2VyZWRCeUV2ZW50ID0gdXNlUmVmKG51bGwpOyAvLyBpbmRpY2F0ZXMgaWYgdHJpZ2dlcmVkIGJ5IGhvdmVyIG9yIGZvY3VzXG4gIGNvbnN0IGlzVG9vbHRpcEhvdmVyZWQgPSB1c2VSZWYoZmFsc2UpO1xuICBjb25zdCBpc1RyaWdnZXJIb3ZlcmVkID0gdXNlUmVmKGZhbHNlKTtcbiAgY29uc3QgaW50ZXJuYWxUcmlnZ2VyUmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCB0b29sdGlwUmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBkb2N1bWVudCA9IHVzZURvY3VtZW50KCk7XG4gIGNvbnN0IHdpbmRvdyA9IHVzZVdpbmRvdygpO1xuICBjb25zdCBoaWRlVG9vbHRpcFRpbWVvdXRJZCA9IHVzZVJlZihudWxsKTtcbiAgY29uc3Qgc2hvd1Rvb2x0aXBUaW1lb3V0SWQgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IHRyaWdnZXJSZWYgPSBleHRlcm5hbFRyaWdnZXJSZWYgfHwgaW50ZXJuYWxUcmlnZ2VyUmVmO1xuXG4gIGNvbnN0IHRvZ2dsZVZpc2liaWxpdHkgPSB1c2VDYWxsYmFjayhcbiAgICAoc3RhdHVzOiBib29sZWFuKSA9PiB7XG4gICAgICBzZXRWaXNpYmxlKHN0YXR1cyk7XG5cbiAgICAgIGlmIChvblZpc2liaWxpdHlDaGFuZ2UpIHtcbiAgICAgICAgb25WaXNpYmlsaXR5Q2hhbmdlKHN0YXR1cyk7XG4gICAgICB9XG5cbiAgICAgIC8vIGxvZyB0aW1lIHdoZW4gdG9vbHRpcCBjbG9zZXNcbiAgICAgIGlmICghc3RhdHVzKSB7XG4gICAgICAgIGxhc3RUb29sdGlwSGlkZVRpbWVzdGFtcCA9IERhdGUubm93KCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbb25WaXNpYmlsaXR5Q2hhbmdlXVxuICApO1xuXG4gIGNvbnN0IGhhbmRsZVRyaWdnZXJQb2ludGVyRW50ZXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaXNUcmlnZ2VySG92ZXJlZC5jdXJyZW50ID0gdHJ1ZTtcbiAgICBpZiAoIWlzVG9vbHRpcEhvdmVyZWQuY3VycmVudCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHNob3dUb29sdGlwVGltZW91dElkLmN1cnJlbnQpO1xuICAgICAgLy8gRGVsYXkgc2hvdyB0b29sdGlwIHRvIHByZXZlbnQgZmxpY2tlcmluZyB3aGVuIG1vdXNlIG1vdmVzIHF1aWNrbHkgb3ZlciB0cmlnZ2VyXG4gICAgICBzaG93VG9vbHRpcFRpbWVvdXRJZC5jdXJyZW50ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmIChpc1RyaWdnZXJIb3ZlcmVkLmN1cnJlbnQpIHtcbiAgICAgICAgICB0cmlnZ2VyZWRCeUV2ZW50LmN1cnJlbnQgPSBcImhvdmVyXCI7XG4gICAgICAgICAgdG9nZ2xlVmlzaWJpbGl0eSh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfSwgU0hPV19ISURFX0RFTEFZKTtcbiAgICB9XG4gIH0sIFt0b2dnbGVWaXNpYmlsaXR5XSk7XG5cbiAgY29uc3QgaGFuZGxlVHJpZ2dlclBvaW50ZXJMZWF2ZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpc1RyaWdnZXJIb3ZlcmVkLmN1cnJlbnQgPSBmYWxzZTtcbiAgICBjbGVhclRpbWVvdXQoaGlkZVRvb2x0aXBUaW1lb3V0SWQuY3VycmVudCk7XG4gICAgLy8gRGVsYXkgcmVtb3ZpbmcgdG9vbHRpcCBmcm9tIERPTSB0byBhbGxvdyBob3ZlciBvdmVyIHRvb2x0aXAgZWxlbWVudFxuICAgIGhpZGVUb29sdGlwVGltZW91dElkLmN1cnJlbnQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgIWlzVG9vbHRpcEhvdmVyZWQuY3VycmVudCAmJlxuICAgICAgICB0cmlnZ2VyZWRCeUV2ZW50LmN1cnJlbnQgPT09IFwiaG92ZXJcIiAmJlxuICAgICAgICAhaXNUcmlnZ2VySG92ZXJlZC5jdXJyZW50XG4gICAgICApIHtcbiAgICAgICAgdG9nZ2xlVmlzaWJpbGl0eShmYWxzZSk7XG4gICAgICB9XG4gICAgfSwgU0hPV19ISURFX0RFTEFZKTtcbiAgfSwgW3RvZ2dsZVZpc2liaWxpdHldKTtcblxuICBjb25zdCBoYW5kbGVUcmlnZ2VyRm9jdXMgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgdHJpZ2dlcmVkQnlFdmVudC5jdXJyZW50ID0gXCJmb2N1c1wiO1xuICAgIHRvZ2dsZVZpc2liaWxpdHkodHJ1ZSk7XG4gIH0sIFt0b2dnbGVWaXNpYmlsaXR5XSk7XG5cbiAgY29uc3QgaGFuZGxlVHJpZ2dlckJsdXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKHRyaWdnZXJlZEJ5RXZlbnQuY3VycmVudCA9PT0gXCJmb2N1c1wiKSB7XG4gICAgICB0b2dnbGVWaXNpYmlsaXR5KGZhbHNlKTtcbiAgICB9XG4gIH0sIFt0b2dnbGVWaXNpYmlsaXR5XSk7XG5cbiAgY29uc3QgaGFuZGxlVHJpZ2dlcktleURvd24gPSB1c2VDYWxsYmFjayhcbiAgICAoZXZ0KSA9PiB7XG4gICAgICBpZiAoZXZ0LmtleSA9PT0gXCJFc2NhcGVcIikge1xuICAgICAgICB0b2dnbGVWaXNpYmlsaXR5KGZhbHNlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFt0b2dnbGVWaXNpYmlsaXR5XVxuICApO1xuXG4gIGNvbnN0IGhhbmRsZVRvb2x0aXBQb2ludGVyRW50ZXIgPSAoKSA9PiB7XG4gICAgaXNUb29sdGlwSG92ZXJlZC5jdXJyZW50ID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVUb29sdGlwUG9pbnRlckxlYXZlID0gKCkgPT4ge1xuICAgIGlzVG9vbHRpcEhvdmVyZWQuY3VycmVudCA9IGZhbHNlO1xuICAgIGlmICh0cmlnZ2VyZWRCeUV2ZW50LmN1cnJlbnQgPT09IFwiaG92ZXJcIikge1xuICAgICAgdG9nZ2xlVmlzaWJpbGl0eShmYWxzZSk7XG4gICAgfVxuICB9O1xuXG4gIHVzZUVmZmVjdChcbiAgICAoKSA9PiAoKSA9PiB7XG4gICAgICAvLyBjbGVhciB0aW1lcnNcbiAgICAgIGNsZWFyVGltZW91dChzaG93VG9vbHRpcFRpbWVvdXRJZC5jdXJyZW50KTtcbiAgICAgIGNsZWFyVGltZW91dChoaWRlVG9vbHRpcFRpbWVvdXRJZC5jdXJyZW50KTtcbiAgICB9LFxuICAgIFtdXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBsZXQgdHJpZ2dlcjogSFRNTEVsZW1lbnQ7XG5cbiAgICBpZiAoZXh0ZXJuYWxUcmlnZ2VyUmVmICYmIGV4dGVybmFsVHJpZ2dlclJlZi5jdXJyZW50ICYmICFjaGlsZHJlbikge1xuICAgICAgdHJpZ2dlciA9IGV4dGVybmFsVHJpZ2dlclJlZi5jdXJyZW50O1xuXG4gICAgICB0cmlnZ2VyLnNldEF0dHJpYnV0ZShcInRhYmluZGV4XCIsIFwiMFwiKTtcbiAgICAgIHRyaWdnZXIuYWRkRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJlbnRlclwiLCBoYW5kbGVUcmlnZ2VyUG9pbnRlckVudGVyKTtcbiAgICAgIHRyaWdnZXIuYWRkRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJsZWF2ZVwiLCBoYW5kbGVUcmlnZ2VyUG9pbnRlckxlYXZlKTtcbiAgICAgIHRyaWdnZXIuYWRkRXZlbnRMaXN0ZW5lcihcImZvY3VzXCIsIGhhbmRsZVRyaWdnZXJGb2N1cyk7XG4gICAgICB0cmlnZ2VyLmFkZEV2ZW50TGlzdGVuZXIoXCJibHVyXCIsIGhhbmRsZVRyaWdnZXJCbHVyKTtcbiAgICAgIHRyaWdnZXIuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgaGFuZGxlVHJpZ2dlcktleURvd24pO1xuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAodHJpZ2dlcikge1xuICAgICAgICB0cmlnZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJwb2ludGVyZW50ZXJcIiwgaGFuZGxlVHJpZ2dlclBvaW50ZXJFbnRlcik7XG4gICAgICAgIHRyaWdnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJsZWF2ZVwiLCBoYW5kbGVUcmlnZ2VyUG9pbnRlckxlYXZlKTtcbiAgICAgICAgdHJpZ2dlci5yZW1vdmVFdmVudExpc3RlbmVyKFwiZm9jdXNcIiwgaGFuZGxlVHJpZ2dlckZvY3VzKTtcbiAgICAgICAgdHJpZ2dlci5yZW1vdmVFdmVudExpc3RlbmVyKFwiYmx1clwiLCBoYW5kbGVUcmlnZ2VyQmx1cik7XG4gICAgICAgIHRyaWdnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgaGFuZGxlVHJpZ2dlcktleURvd24pO1xuICAgICAgfVxuICAgIH07XG4gIH0sIFtcbiAgICBleHRlcm5hbFRyaWdnZXJSZWYsXG4gICAgY2hpbGRyZW4sXG4gICAgaGFuZGxlVHJpZ2dlclBvaW50ZXJFbnRlcixcbiAgICBoYW5kbGVUcmlnZ2VyUG9pbnRlckxlYXZlLFxuICAgIGhhbmRsZVRyaWdnZXJGb2N1cyxcbiAgICBoYW5kbGVUcmlnZ2VyQmx1cixcbiAgICBoYW5kbGVUcmlnZ2VyS2V5RG93bixcbiAgXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZXh0ZXJuYWxUcmlnZ2VyUmVmICYmIGV4dGVybmFsVHJpZ2dlclJlZi5jdXJyZW50ICYmICFjaGlsZHJlbikge1xuICAgICAgY29uc3QgdHJpZ2dlciA9IGV4dGVybmFsVHJpZ2dlclJlZi5jdXJyZW50O1xuXG4gICAgICBpZiAoaXNWaXNpYmxlKSB7XG4gICAgICAgIHRyaWdnZXIuc2V0QXR0cmlidXRlKFwiYXJpYS1kZXNjcmliZWRieVwiLCB0b29sdGlwSWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdHJpZ2dlci5yZW1vdmVBdHRyaWJ1dGUoXCJhcmlhLWRlc2NyaWJlZGJ5XCIpO1xuICAgICAgfVxuICAgIH1cbiAgfSwgW2V4dGVybmFsVHJpZ2dlclJlZiwgY2hpbGRyZW4sIHRvb2x0aXBJZCwgaXNWaXNpYmxlXSk7XG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNWaXNpYmxlICYmIHRyaWdnZXJSZWYuY3VycmVudCAmJiB0b29sdGlwUmVmLmN1cnJlbnQpIHtcbiAgICAgIC8vIGNhbGN1bGF0ZSB0b29sdGlwIHBvc2l0aW9uXG4gICAgICBzZXRQb3NpdGlvbihcbiAgICAgICAgZ2V0VG9vbHRpcFBvc2l0aW9uKHBsYWNlbWVudCwgdHJpZ2dlclJlZiwgdG9vbHRpcFJlZiwgZG9jdW1lbnQsIHdpbmRvdylcbiAgICAgICk7XG4gICAgfVxuICB9LCBbaXNWaXNpYmxlLCBwbGFjZW1lbnQsIHRyaWdnZXJSZWYsIGRvY3VtZW50LCB3aW5kb3ddKTtcblxuICBsZXQgcG9ydGFsO1xuXG4gIGlmIChpc1Zpc2libGUpIHtcbiAgICBjb25zdCB0b29sdGlwRWxtID0gKFxuICAgICAgPFN1YlRoZW1lUHJvdmlkZXIgbmFtZT1cImludmVydGVkXCI+XG4gICAgICAgIDxTdHlsZWRDb250YWluZXJcbiAgICAgICAgICBkYXRhLWUyZS10ZXN0LWlkPXtkYXRhRTJlVGVzdElkfVxuICAgICAgICAgIGRhdGEtZHMtaWQ9XCJUb29sdGlwXCJcbiAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgdG9wOiBwb3NpdGlvbi50b3AsXG4gICAgICAgICAgICBsZWZ0OiBwb3NpdGlvbi5sZWZ0LFxuICAgICAgICAgICAgYW5pbWF0aW9uRHVyYXRpb246IGdldEFuaW1hdGlvbkR1cmF0aW9uKCksXG4gICAgICAgICAgfX1cbiAgICAgICAgICByZWY9e3Rvb2x0aXBSZWZ9XG4gICAgICAgICAgaWQ9e3Rvb2x0aXBJZH1cbiAgICAgICAgICByb2xlPVwidG9vbHRpcFwiXG4gICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICBob3Jpem9udGFsUGxhY2VtZW50PXtwb3NpdGlvbi5ob3Jpem9udGFsUGxhY2VtZW50fVxuICAgICAgICAgIHZlcnRpY2FsUGxhY2VtZW50PXtwb3NpdGlvbi52ZXJ0aWNhbFBsYWNlbWVudH1cbiAgICAgICAgICBvblBvaW50ZXJFbnRlcj17aGFuZGxlVG9vbHRpcFBvaW50ZXJFbnRlcn1cbiAgICAgICAgICBvblBvaW50ZXJMZWF2ZT17aGFuZGxlVG9vbHRpcFBvaW50ZXJMZWF2ZX1cbiAgICAgICAgPlxuICAgICAgICAgIDxUZXh0IHNpemU9XCJzXCI+e2NvbnRlbnR9PC9UZXh0PlxuICAgICAgICAgIDxTdHlsZWRBcnJvd1xuICAgICAgICAgICAgaG9yaXpvbnRhbFBsYWNlbWVudD17cG9zaXRpb24uaG9yaXpvbnRhbFBsYWNlbWVudH1cbiAgICAgICAgICAgIHZlcnRpY2FsUGxhY2VtZW50PXtwb3NpdGlvbi52ZXJ0aWNhbFBsYWNlbWVudH1cbiAgICAgICAgICAvPlxuICAgICAgICA8L1N0eWxlZENvbnRhaW5lcj5cbiAgICAgIDwvU3ViVGhlbWVQcm92aWRlcj5cbiAgICApO1xuXG4gICAgcG9ydGFsID0gY3JlYXRlUG9ydGFsKHRvb2x0aXBFbG0sIHBvcnRhbENvbnRhaW5lciB8fCBkb2N1bWVudC5ib2R5KTtcbiAgfVxuXG4gIGNvbnN0IHRyaWdnZXJFbG0gPSBjaGlsZHJlblxuICAgID8gUmVhY3QuY2xvbmVFbGVtZW50KGNoaWxkcmVuLCB7XG4gICAgICAgIHJlZjogdHJpZ2dlclJlZixcbiAgICAgICAgLi4uKGlzVmlzaWJsZSAmJiB7XG4gICAgICAgICAgXCJhcmlhLWRlc2NyaWJlZGJ5XCI6IHRvb2x0aXBJZCxcbiAgICAgICAgfSksXG4gICAgICAgIHRhYkluZGV4OiAwLFxuICAgICAgICBvblBvaW50ZXJFbnRlcjogaGFuZGxlVHJpZ2dlclBvaW50ZXJFbnRlcixcbiAgICAgICAgb25Qb2ludGVyTGVhdmU6IGhhbmRsZVRyaWdnZXJQb2ludGVyTGVhdmUsXG4gICAgICAgIG9uRm9jdXM6IGhhbmRsZVRyaWdnZXJGb2N1cyxcbiAgICAgICAgb25CbHVyOiBoYW5kbGVUcmlnZ2VyQmx1cixcbiAgICAgICAgb25LZXlEb3duOiBoYW5kbGVUcmlnZ2VyS2V5RG93bixcbiAgICAgIH0pXG4gICAgOiBudWxsO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHt0cmlnZ2VyRWxtfVxuICAgICAge3BvcnRhbH1cbiAgICA8Lz5cbiAgKTtcbn1cbiJdfQ== */");
91
- const initialPosition = {
92
- top: 0,
93
- left: 0,
94
- verticalPlacement: "top",
95
- horizontalPlacement: "center"
96
- };
97
- let lastTooltipHideTimestamp = 0;
98
-
99
- /* Disable animation if time between last close and new open is less than 500ms + SHOW_HIDE_DELAY */
100
- function getAnimationDuration() {
101
- let animationDuration = `${ANIMATION_DURATION}ms`;
102
- if (lastTooltipHideTimestamp) {
103
- const timeSinceLastTooltip = Date.now() - lastTooltipHideTimestamp;
104
- if (timeSinceLastTooltip < 500 + SHOW_HIDE_DELAY) {
105
- animationDuration = "0ms";
106
- }
107
- }
108
- return animationDuration;
109
- }
110
- function Tooltip(_ref3) {
12
+ function Tooltip(_ref) {
111
13
  let {
112
14
  placement = "auto",
113
15
  content,
@@ -116,30 +18,21 @@ function Tooltip(_ref3) {
116
18
  portalContainer,
117
19
  "data-e2e-test-id": dataE2eTestId,
118
20
  onVisibilityChange
119
- } = _ref3;
21
+ } = _ref;
120
22
  const tooltipId = React.useMemo(() => `DSTooltip_${Math.floor(Date.now() * Math.random())}`, []);
121
- const [position, setPosition] = React.useState(initialPosition);
122
23
  const [isVisible, setVisible] = React.useState(false);
123
24
  const triggeredByEvent = React.useRef(null); // indicates if triggered by hover or focus
124
25
  const isTooltipHovered = React.useRef(false);
125
26
  const isTriggerHovered = React.useRef(false);
126
- const internalTriggerRef = React.useRef(null);
127
- const tooltipRef = React.useRef(null);
128
- const document = useDocument.useDocument();
129
- const window = useWindow.useWindow();
130
27
  const hideTooltipTimeoutId = React.useRef(null);
131
28
  const showTooltipTimeoutId = React.useRef(null);
29
+ const internalTriggerRef = React.useRef(null);
132
30
  const triggerRef = externalTriggerRef || internalTriggerRef;
133
31
  const toggleVisibility = React.useCallback(status => {
134
32
  setVisible(status);
135
33
  if (onVisibilityChange) {
136
34
  onVisibilityChange(status);
137
35
  }
138
-
139
- // log time when tooltip closes
140
- if (!status) {
141
- lastTooltipHideTimestamp = Date.now();
142
- }
143
36
  }, [onVisibilityChange]);
144
37
  const handleTriggerPointerEnter = React.useCallback(() => {
145
38
  isTriggerHovered.current = true;
@@ -194,7 +87,7 @@ function Tooltip(_ref3) {
194
87
  }, []);
195
88
  React.useEffect(() => {
196
89
  let trigger;
197
- if (externalTriggerRef && externalTriggerRef.current && !children) {
90
+ if (externalTriggerRef?.current && !children) {
198
91
  trigger = externalTriggerRef.current;
199
92
  trigger.setAttribute("tabindex", "0");
200
93
  trigger.addEventListener("pointerenter", handleTriggerPointerEnter);
@@ -214,7 +107,7 @@ function Tooltip(_ref3) {
214
107
  };
215
108
  }, [externalTriggerRef, children, handleTriggerPointerEnter, handleTriggerPointerLeave, handleTriggerFocus, handleTriggerBlur, handleTriggerKeyDown]);
216
109
  React.useEffect(() => {
217
- if (externalTriggerRef && externalTriggerRef.current && !children) {
110
+ if (externalTriggerRef?.current && !children) {
218
111
  const trigger = externalTriggerRef.current;
219
112
  if (isVisible) {
220
113
  trigger.setAttribute("aria-describedby", tooltipId);
@@ -223,40 +116,6 @@ function Tooltip(_ref3) {
223
116
  }
224
117
  }
225
118
  }, [externalTriggerRef, children, tooltipId, isVisible]);
226
- React.useLayoutEffect(() => {
227
- if (isVisible && triggerRef.current && tooltipRef.current) {
228
- // calculate tooltip position
229
- setPosition(utils.getTooltipPosition(placement, triggerRef, tooltipRef, document, window));
230
- }
231
- }, [isVisible, placement, triggerRef, document, window]);
232
- let portal;
233
- if (isVisible) {
234
- const tooltipElm = /*#__PURE__*/React__default.default.createElement(SubThemeProvider.SubThemeProvider, {
235
- name: "inverted"
236
- }, /*#__PURE__*/React__default.default.createElement(StyledContainer, {
237
- "data-e2e-test-id": dataE2eTestId,
238
- "data-ds-id": "Tooltip",
239
- style: {
240
- top: position.top,
241
- left: position.left,
242
- animationDuration: getAnimationDuration()
243
- },
244
- ref: tooltipRef,
245
- id: tooltipId,
246
- role: "tooltip",
247
- "aria-hidden": "true",
248
- horizontalPlacement: position.horizontalPlacement,
249
- verticalPlacement: position.verticalPlacement,
250
- onPointerEnter: handleTooltipPointerEnter,
251
- onPointerLeave: handleTooltipPointerLeave
252
- }, /*#__PURE__*/React__default.default.createElement(Text.Text, {
253
- size: "s"
254
- }, content), /*#__PURE__*/React__default.default.createElement(StyledArrow, {
255
- horizontalPlacement: position.horizontalPlacement,
256
- verticalPlacement: position.verticalPlacement
257
- })));
258
- portal = /*#__PURE__*/ReactDOM.createPortal(tooltipElm, portalContainer || document.body);
259
- }
260
119
  const triggerElm = children ? /*#__PURE__*/React__default.default.cloneElement(children, {
261
120
  ref: triggerRef,
262
121
  ...(isVisible && {
@@ -269,7 +128,24 @@ function Tooltip(_ref3) {
269
128
  onBlur: handleTriggerBlur,
270
129
  onKeyDown: handleTriggerKeyDown
271
130
  }) : null;
272
- return /*#__PURE__*/React__default.default.createElement(React__default.default.Fragment, null, triggerElm, portal);
131
+ const contentElm = /*#__PURE__*/React__default.default.createElement(Text.Text, {
132
+ size: "s"
133
+ }, content);
134
+ const tooltipElm = /*#__PURE__*/React__default.default.createElement(TooltipContent.TooltipContent, {
135
+ dataDSId: "Tooltip",
136
+ content: contentElm,
137
+ placement: placement,
138
+ portalContainer: portalContainer,
139
+ dataE2eTestId: dataE2eTestId,
140
+ isVisible: isVisible,
141
+ tooltipId: tooltipId,
142
+ triggerRef: triggerRef,
143
+ "aria-hidden": true,
144
+ role: "tooltip",
145
+ onTooltipPointerEnter: handleTooltipPointerEnter,
146
+ onTooltipPointerLeave: handleTooltipPointerLeave
147
+ });
148
+ return /*#__PURE__*/React__default.default.createElement(React__default.default.Fragment, null, triggerElm, tooltipElm);
273
149
  }
274
150
 
275
151
  exports.Tooltip = Tooltip;