@amboss/design-system 1.19.1 → 1.20.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/cjs/src/components/Popover/Popover.js +22 -0
- package/build/cjs/src/components/Toggletip/BasePopover.js +144 -0
- package/build/cjs/src/components/Toggletip/Toggletip.js +8 -121
- package/build/cjs/src/components/Tooltip/TooltipContent.js +55 -26
- package/build/cjs/src/components/Tooltip/utils.js +23 -13
- package/build/cjs/src/components/UserHighlightTooltip/UserHighlightTooltip.js +6 -0
- package/build/cjs/src/index.js +2 -0
- package/build/esm/src/components/Popover/Popover.d.ts +6 -0
- package/build/esm/src/components/Popover/Popover.js +16 -0
- package/build/esm/src/components/Popover/Popover.js.map +1 -0
- package/build/esm/src/components/Toggletip/BasePopover.d.ts +16 -0
- package/build/esm/src/components/Toggletip/BasePopover.js +137 -0
- package/build/esm/src/components/Toggletip/BasePopover.js.map +1 -0
- package/build/esm/src/components/Toggletip/Toggletip.d.ts +5 -13
- package/build/esm/src/components/Toggletip/Toggletip.js +8 -121
- package/build/esm/src/components/Toggletip/Toggletip.js.map +1 -1
- package/build/esm/src/components/Tooltip/TooltipContent.d.ts +6 -1
- package/build/esm/src/components/Tooltip/TooltipContent.js +57 -28
- package/build/esm/src/components/Tooltip/TooltipContent.js.map +1 -1
- package/build/esm/src/components/Tooltip/utils.d.ts +3 -3
- package/build/esm/src/components/Tooltip/utils.js +22 -12
- package/build/esm/src/components/Tooltip/utils.js.map +1 -1
- package/build/esm/src/components/UserHighlightTooltip/UserHighlightTooltip.js +6 -0
- package/build/esm/src/components/UserHighlightTooltip/UserHighlightTooltip.js.map +1 -1
- package/build/esm/src/index.d.ts +1 -0
- package/build/esm/src/index.js +1 -0
- package/build/esm/src/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import _styled from '@emotion/styled/base';
|
|
2
|
-
import React, { useState, useRef, useCallback, useLayoutEffect, useEffect } from 'react';
|
|
2
|
+
import React, { useState, useRef, useMemo, useCallback, useLayoutEffect, useEffect } from 'react';
|
|
3
3
|
import { keyframes } from '@emotion/react';
|
|
4
4
|
import { createPortal } from 'react-dom';
|
|
5
5
|
import { useDocument } from '../../shared/useDocument.js';
|
|
6
6
|
import { useWindow } from '../../shared/useWindow.js';
|
|
7
7
|
import { SubThemeProvider } from '../SubThemeProvider/SubThemeProvider.js';
|
|
8
8
|
import zIndices from '../../../build-tokens/_zindex.json.js';
|
|
9
|
-
import { ARROW_SIZE,
|
|
9
|
+
import { ARROW_SIZE, ARROW_SIZE_BIG, getTooltipStyle, ANIMATION_DISTANCE, getArrowOffset } from './utils.js';
|
|
10
|
+
import { Container } from '../Container/Container.js';
|
|
10
11
|
|
|
11
12
|
const ANIMATION_DURATION = 200;
|
|
12
13
|
const SHOW_HIDE_DELAY = 200;
|
|
@@ -21,8 +22,9 @@ const StyledContainer = /*#__PURE__*/_styled("div", process.env.NODE_ENV === "pr
|
|
|
21
22
|
theme,
|
|
22
23
|
horizontalPlacement,
|
|
23
24
|
verticalPlacement,
|
|
25
|
+
maxWidth,
|
|
24
26
|
contentPadding,
|
|
25
|
-
|
|
27
|
+
hasInvertedSubTheme = true
|
|
26
28
|
} = _ref;
|
|
27
29
|
const animationDistance = verticalPlacement === "top" ? `${ANIMATION_DISTANCE}px` : `-${ANIMATION_DISTANCE}px`;
|
|
28
30
|
const animation = keyframes({
|
|
@@ -35,25 +37,28 @@ const StyledContainer = /*#__PURE__*/_styled("div", process.env.NODE_ENV === "pr
|
|
|
35
37
|
s: theme.variables.size.spacing.xxs,
|
|
36
38
|
m: theme.variables.size.spacing.s
|
|
37
39
|
};
|
|
40
|
+
const invertedSubThemeStyles = {
|
|
41
|
+
padding: `${theme.variables.size.spacing.xs} ${theme.variables.size.spacing.s}`,
|
|
42
|
+
...(contentPadding && {
|
|
43
|
+
padding: contentPaddingMap[contentPadding]
|
|
44
|
+
}),
|
|
45
|
+
borderRadius: theme.variables.size.borderRadius.xs,
|
|
46
|
+
backgroundColor: theme.values.color.background.primary.default
|
|
47
|
+
};
|
|
38
48
|
return {
|
|
39
49
|
position: "absolute",
|
|
40
50
|
zIndex: zIndices.tooltip.value,
|
|
41
51
|
opacity: 0,
|
|
42
52
|
animation: `${ANIMATION_DURATION}ms ease-out forwards ${animation}`,
|
|
43
|
-
borderRadius: theme.variables.size.borderRadius.xs,
|
|
44
|
-
backgroundColor: theme.values.color.background.primary.default,
|
|
45
53
|
maxWidth,
|
|
46
54
|
width: "initial",
|
|
47
55
|
boxSizing: "border-box",
|
|
48
|
-
|
|
49
|
-
...(contentPadding && {
|
|
50
|
-
padding: contentPaddingMap[contentPadding]
|
|
51
|
-
}),
|
|
56
|
+
...(hasInvertedSubTheme && invertedSubThemeStyles),
|
|
52
57
|
...(horizontalPlacement === "center" && {
|
|
53
58
|
transform: "translate(-50%)"
|
|
54
59
|
})
|
|
55
60
|
};
|
|
56
|
-
}, process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRvb2x0aXBDb250ZW50LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF1RXdCIiwiZmlsZSI6IlRvb2x0aXBDb250ZW50LnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwge1xuICB1c2VTdGF0ZSxcbiAgdXNlUmVmLFxuICB1c2VMYXlvdXRFZmZlY3QsXG4gIHVzZUVmZmVjdCxcbiAgTXV0YWJsZVJlZk9iamVjdCxcbiAgUmVhY3RFbGVtZW50LFxuICB1c2VDYWxsYmFjayxcbn0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWRcIjtcbmltcG9ydCB7IGtleWZyYW1lcyB9IGZyb20gXCJAZW1vdGlvbi9yZWFjdFwiO1xuaW1wb3J0IHsgY3JlYXRlUG9ydGFsIH0gZnJvbSBcInJlYWN0LWRvbVwiO1xuaW1wb3J0IHsgdXNlRG9jdW1lbnQgfSBmcm9tIFwiLi4vLi4vc2hhcmVkL3VzZURvY3VtZW50XCI7XG5pbXBvcnQgeyB1c2VXaW5kb3cgfSBmcm9tIFwiLi4vLi4vc2hhcmVkL3VzZVdpbmRvd1wiO1xuaW1wb3J0IHsgU3ViVGhlbWVQcm92aWRlciB9IGZyb20gXCIuLi9TdWJUaGVtZVByb3ZpZGVyL1N1YlRoZW1lUHJvdmlkZXJcIjtcbmltcG9ydCB6SW5kaWNlcyBmcm9tIFwiLi4vLi4vLi4vYnVpbGQtdG9rZW5zL196aW5kZXguanNvblwiO1xuXG5pbXBvcnQge1xuICBBUlJPV19TSVpFLFxuICBBUlJPV19PRkZTRVQsXG4gIEFOSU1BVElPTl9ESVNUQU5DRSxcbiAgZ2V0VG9vbHRpcFN0eWxlLFxufSBmcm9tIFwiLi91dGlsc1wiO1xuXG5leHBvcnQgdHlwZSBUb29sdGlwQ29udGVudFByb3BzID0ge1xuICBjb250ZW50OiBSZWFjdEVsZW1lbnQ7XG4gIHRyaWdnZXJSZWY6IE11dGFibGVSZWZPYmplY3Q8YW55PjtcbiAgLyogUGxhY2VtZW50ICovXG4gIHBsYWNlbWVudD86XG4gICAgfCBcImF1dG9cIlxuICAgIHwgXCJ0b3BcIlxuICAgIHwgXCJib3R0b21cIlxuICAgIHwgXCJ0b3AtbGVmdFwiXG4gICAgfCBcInRvcC1yaWdodFwiXG4gICAgfCBcImJvdHRvbS1sZWZ0XCJcbiAgICB8IFwiYm90dG9tLXJpZ2h0XCI7XG4gIC8qIEN1c3RvbSBwb3J0YWwgY29udGFpbmVyIHRvIHJlbmRlciB0b29sdGlwIGludG8gKi9cbiAgcG9ydGFsQ29udGFpbmVyPzogSFRNTEVsZW1lbnQ7XG4gIGRhdGFFMmVUZXN0SWQ/OiBzdHJpbmc7XG4gIGRhdGFEU0lkOiBzdHJpbmc7XG4gIGlzVmlzaWJsZT86IGJvb2xlYW47XG4gIHRvb2x0aXBJZD86IHN0cmluZztcbiAgXCJhcmlhLWhpZGRlblwiPzogYm9vbGVhbjtcbiAgcm9sZT86IHN0cmluZztcbiAgdGFiSW5kZXg/OiBudW1iZXI7XG4gIC8vIENvbnRlbnQgcGFkZGluZ1xuICBjb250ZW50UGFkZGluZz86IFwic1wiIHwgXCJtXCI7XG4gIG1heFdpZHRoPzogbnVtYmVyO1xuICBvblRvb2x0aXBQb2ludGVyRW50ZXI/OiBSZWFjdC5Qb2ludGVyRXZlbnRIYW5kbGVyPEhUTUxEaXZFbGVtZW50PjtcbiAgb25Ub29sdGlwUG9pbnRlckxlYXZlPzogUmVhY3QuUG9pbnRlckV2ZW50SGFuZGxlcjxIVE1MRGl2RWxlbWVudD47XG59O1xuXG5leHBvcnQgdHlwZSBUb29sdGlwU3R5bGUgPSB7XG4gIHRvcDogbnVtYmVyO1xuICBsZWZ0OiBudW1iZXI7XG4gIGhvcml6b250YWxQbGFjZW1lbnQ6IFwibGVmdFwiIHwgXCJyaWdodFwiIHwgXCJjZW50ZXJcIjtcbiAgdmVydGljYWxQbGFjZW1lbnQ6IFwidG9wXCIgfCBcImJvdHRvbVwiO1xufTtcblxudHlwZSBTdHlsZWRDb250YWluZXJQcm9wcyA9IFBpY2s8XG4gIFRvb2x0aXBDb250ZW50UHJvcHMsXG4gIFwiY29udGVudFBhZGRpbmdcIiB8IFwibWF4V2lkdGhcIlxuPiAmIHtcbiAgaG9yaXpvbnRhbFBsYWNlbWVudDogVG9vbHRpcFN0eWxlW1wiaG9yaXpvbnRhbFBsYWNlbWVudFwiXTtcbiAgdmVydGljYWxQbGFjZW1lbnQ6IFRvb2x0aXBTdHlsZVtcInZlcnRpY2FsUGxhY2VtZW50XCJdO1xufTtcblxuY29uc3QgQU5JTUFUSU9OX0RVUkFUSU9OID0gMjAwO1xuY29uc3QgU0hPV19ISURFX0RFTEFZID0gMjAwO1xuY29uc3QgTUFYX0NPTlRFTlRfV0lEVEggPSAyMjQ7XG5cbmNvbnN0IFN0eWxlZENvbnRhaW5lciA9IHN0eWxlZC5kaXY8U3R5bGVkQ29udGFpbmVyUHJvcHM+KFxuICAoe1xuICAgIHRoZW1lLFxuICAgIGhvcml6b250YWxQbGFjZW1lbnQsXG4gICAgdmVydGljYWxQbGFjZW1lbnQsXG4gICAgY29udGVudFBhZGRpbmcsXG4gICAgbWF4V2lkdGgsXG4gIH0pID0+IHtcbiAgICBjb25zdCBhbmltYXRpb25EaXN0YW5jZSA9XG4gICAgICB2ZXJ0aWNhbFBsYWNlbWVudCA9PT0gXCJ0b3BcIlxuICAgICAgICA/IGAke0FOSU1BVElPTl9ESVNUQU5DRX1weGBcbiAgICAgICAgOiBgLSR7QU5JTUFUSU9OX0RJU1RBTkNFfXB4YDtcbiAgICBjb25zdCBhbmltYXRpb24gPSBrZXlmcmFtZXMoe1xuICAgICAgdG86IHtcbiAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgdHJhbnNmb3JtOlxuICAgICAgICAgIGhvcml6b250YWxQbGFjZW1lbnQgPT09IFwiY2VudGVyXCJcbiAgICAgICAgICAgID8gYHRyYW5zbGF0ZSgtNTAlLCAke2FuaW1hdGlvbkRpc3RhbmNlfSlgXG4gICAgICAgICAgICA6IGB0cmFuc2xhdGVZKCR7YW5pbWF0aW9uRGlzdGFuY2V9KWAsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgY29uc3QgY29udGVudFBhZGRpbmdNYXAgPSB7XG4gICAgICBzOiB0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLnh4cyxcbiAgICAgIG06IHRoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcucyxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgICB6SW5kZXg6IHpJbmRpY2VzLnRvb2x0aXAudmFsdWUsXG4gICAgICBvcGFjaXR5OiAwLFxuICAgICAgYW5pbWF0aW9uOiBgJHtBTklNQVRJT05fRFVSQVRJT059bXMgZWFzZS1vdXQgZm9yd2FyZHMgJHthbmltYXRpb259YCxcbiAgICAgIGJvcmRlclJhZGl1czogdGhlbWUudmFyaWFibGVzLnNpemUuYm9yZGVyUmFkaXVzLnhzLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS52YWx1ZXMuY29sb3IuYmFja2dyb3VuZC5wcmltYXJ5LmRlZmF1bHQsXG4gICAgICBtYXhXaWR0aCxcbiAgICAgIHdpZHRoOiBcImluaXRpYWxcIixcbiAgICAgIGJveFNpemluZzogXCJib3JkZXItYm94XCIsXG4gICAgICBwYWRkaW5nOiBgJHt0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLnhzfSAke3RoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcuc31gLFxuXG4gICAgICAuLi4oY29udGVudFBhZGRpbmcgJiYge1xuICAgICAgICBwYWRkaW5nOiBjb250ZW50UGFkZGluZ01hcFtjb250ZW50UGFkZGluZ10sXG4gICAgICB9KSxcbiAgICAgIC4uLihob3Jpem9udGFsUGxhY2VtZW50ID09PSBcImNlbnRlclwiICYmIHtcbiAgICAgICAgdHJhbnNmb3JtOiBcInRyYW5zbGF0ZSgtNTAlKVwiLFxuICAgICAgfSksXG4gICAgfTtcbiAgfVxuKTtcblxudHlwZSBTdHlsZWRBcnJvd1Byb3BzID0ge1xuICB2ZXJ0aWNhbFBsYWNlbWVudDogVG9vbHRpcFN0eWxlW1widmVydGljYWxQbGFjZW1lbnRcIl07XG4gIGhvcml6b250YWxQbGFjZW1lbnQ6IFRvb2x0aXBTdHlsZVtcImhvcml6b250YWxQbGFjZW1lbnRcIl07XG59O1xuXG5jb25zdCBTdHlsZWRBcnJvdyA9IHN0eWxlZC5kaXY8U3R5bGVkQXJyb3dQcm9wcz4oXG4gICh7IHRoZW1lLCB2ZXJ0aWNhbFBsYWNlbWVudCwgaG9yaXpvbnRhbFBsYWNlbWVudCB9KSA9PiAoe1xuICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgd2lkdGg6IDAsXG4gICAgaGVpZ2h0OiAwLFxuICAgIGJvcmRlckxlZnQ6IGAke0FSUk9XX1NJWkV9cHggc29saWQgdHJhbnNwYXJlbnRgLFxuICAgIGJvcmRlclJpZ2h0OiBgJHtBUlJPV19TSVpFfXB4IHNvbGlkIHRyYW5zcGFyZW50YCxcblxuICAgIC4uLih2ZXJ0aWNhbFBsYWNlbWVudCA9PT0gXCJ0b3BcIiAmJiB7XG4gICAgICB0b3A6IFwiMTAwJVwiLFxuICAgICAgYm9yZGVyVG9wOiBgJHtBUlJPV19TSVpFfXB4IHNvbGlkICR7dGhlbWUudmFsdWVzLmNvbG9yLmJhY2tncm91bmQucHJpbWFyeS5kZWZhdWx0fWAsXG4gICAgfSksXG5cbiAgICAuLi4odmVydGljYWxQbGFjZW1lbnQgPT09IFwiYm90dG9tXCIgJiYge1xuICAgICAgdG9wOiBgLSR7QVJST1dfU0laRX1weGAsXG4gICAgICBib3JkZXJCb3R0b206IGAke0FSUk9XX1NJWkV9cHggc29saWQgJHt0aGVtZS52YWx1ZXMuY29sb3IuYmFja2dyb3VuZC5wcmltYXJ5LmRlZmF1bHR9YCxcbiAgICB9KSxcblxuICAgIC4uLihob3Jpem9udGFsUGxhY2VtZW50ID09PSBcImNlbnRlclwiICYmIHtcbiAgICAgIGxlZnQ6IFwiNTAlXCIsXG4gICAgICB0cmFuc2Zvcm06IFwidHJhbnNsYXRlKC01MCUpXCIsXG4gICAgfSksXG5cbiAgICAuLi4oaG9yaXpvbnRhbFBsYWNlbWVudCA9PT0gXCJyaWdodFwiICYmIHtcbiAgICAgIGxlZnQ6IGAke0FSUk9XX09GRlNFVH1weGAsXG4gICAgfSksXG5cbiAgICAuLi4oaG9yaXpvbnRhbFBsYWNlbWVudCA9PT0gXCJsZWZ0XCIgJiYge1xuICAgICAgcmlnaHQ6IGAke0FSUk9XX09GRlNFVH1weGAsXG4gICAgfSksXG4gIH0pXG4pO1xuXG5jb25zdCBpbml0aWFsU3R5bGU6IFRvb2x0aXBTdHlsZSA9IHtcbiAgdG9wOiAwLFxuICBsZWZ0OiAwLFxuICB2ZXJ0aWNhbFBsYWNlbWVudDogXCJ0b3BcIixcbiAgaG9yaXpvbnRhbFBsYWNlbWVudDogXCJjZW50ZXJcIixcbn07XG5cbmxldCBsYXN0VG9vbHRpcEhpZGVUaW1lc3RhbXAgPSAwO1xuXG4vKiBEaXNhYmxlIGFuaW1hdGlvbiBpZiB0aW1lIGJldHdlZW4gbGFzdCBjbG9zZSBhbmQgbmV3IG9wZW4gaXMgbGVzcyB0aGFuIDUwMG1zICsgU0hPV19ISURFX0RFTEFZICovXG5mdW5jdGlvbiBnZXRBbmltYXRpb25EdXJhdGlvbigpIHtcbiAgbGV0IGFuaW1hdGlvbkR1cmF0aW9uID0gYCR7QU5JTUFUSU9OX0RVUkFUSU9OfW1zYDtcblxuICBpZiAobGFzdFRvb2x0aXBIaWRlVGltZXN0YW1wKSB7XG4gICAgY29uc3QgdGltZVNpbmNlTGFzdFRvb2x0aXAgPSBEYXRlLm5vdygpIC0gbGFzdFRvb2x0aXBIaWRlVGltZXN0YW1wO1xuXG4gICAgaWYgKHRpbWVTaW5jZUxhc3RUb29sdGlwIDwgNTAwICsgU0hPV19ISURFX0RFTEFZKSB7XG4gICAgICBhbmltYXRpb25EdXJhdGlvbiA9IFwiMG1zXCI7XG4gICAgfVxuICB9XG4gIHJldHVybiBhbmltYXRpb25EdXJhdGlvbjtcbn1cblxuLyoqIFRoaXMgY29tcG9uZW50IGlzIHVzZWQgdG8gZGlzcGxheSB0aGUgb3ZlcmxheSBmb3IgYm90aCBUb2dnbGV0aXAgYW5kIFRvb2x0aXAgY29tcG9uZW50cyAqL1xuZXhwb3J0IGZ1bmN0aW9uIFRvb2x0aXBDb250ZW50KHtcbiAgcGxhY2VtZW50ID0gXCJhdXRvXCIsXG4gIGNvbnRlbnQsXG4gIHRvb2x0aXBJZCxcbiAgdHJpZ2dlclJlZixcbiAgcG9ydGFsQ29udGFpbmVyLFxuICBkYXRhRTJlVGVzdElkLFxuICBkYXRhRFNJZCxcbiAgaXNWaXNpYmxlLFxuICBcImFyaWEtaGlkZGVuXCI6IGFyaWFIaWRkZW4sXG4gIHJvbGUsXG4gIHRhYkluZGV4LFxuICBjb250ZW50UGFkZGluZyxcbiAgbWF4V2lkdGggPSBNQVhfQ09OVEVOVF9XSURUSCxcbiAgb25Ub29sdGlwUG9pbnRlckVudGVyLFxuICBvblRvb2x0aXBQb2ludGVyTGVhdmUsXG59OiBUb29sdGlwQ29udGVudFByb3BzKTogUmVhY3QuUmVhY3RFbGVtZW50IHtcbiAgY29uc3QgW3N0eWxlLCBzZXRTdHlsZV0gPSB1c2VTdGF0ZShpbml0aWFsU3R5bGUpO1xuICBjb25zdCB0b29sdGlwUmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBkb2N1bWVudCA9IHVzZURvY3VtZW50KCk7XG4gIGNvbnN0IHdpbmRvdyA9IHVzZVdpbmRvdygpO1xuICBjb25zdCBkZWJvdW5jZVRpbWVvdXRJZCA9IHVzZVJlZihudWxsKTtcblxuICBjb25zdCBjYWxjdWxhdGVTdHlsZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAodHJpZ2dlclJlZi5jdXJyZW50ICYmIHRvb2x0aXBSZWYuY3VycmVudCkge1xuICAgICAgLy8gY2FsY3VsYXRlIHRvb2x0aXAgc3R5bGVcbiAgICAgIHNldFN0eWxlKFxuICAgICAgICBnZXRUb29sdGlwU3R5bGUocGxhY2VtZW50LCB0cmlnZ2VyUmVmLCB0b29sdGlwUmVmLCBkb2N1bWVudCwgd2luZG93KVxuICAgICAgKTtcbiAgICAgIGRlYm91bmNlVGltZW91dElkLmN1cnJlbnQgPSBudWxsO1xuICAgIH1cbiAgfSwgW3RyaWdnZXJSZWYsIHRvb2x0aXBSZWYsIGRvY3VtZW50LCB3aW5kb3csIHBsYWNlbWVudF0pO1xuXG4gIGNvbnN0IGRlYm91bmNlZENhbGN1bGF0ZVN0eWxlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmICghZGVib3VuY2VUaW1lb3V0SWQuY3VycmVudCkge1xuICAgICAgZGVib3VuY2VUaW1lb3V0SWQuY3VycmVudCA9IHNldFRpbWVvdXQoY2FsY3VsYXRlU3R5bGUsIDIwMCk7XG4gICAgfVxuICB9LCBbY2FsY3VsYXRlU3R5bGVdKTtcblxuICAvLyBUaGlzIGxheW91dCBlZmZlY3QgdG8gcmUtcmVuZGVyIHdpdGggdXBkYXRlZCBwb3NpdGlvbiBhZnRlciBkZXRlcm1pbmluZyBjb250ZW50IHdpZHRoXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzVmlzaWJsZSkge1xuICAgICAgY2FsY3VsYXRlU3R5bGUoKTtcbiAgICB9XG4gIH0sIFtpc1Zpc2libGUsIGNhbGN1bGF0ZVN0eWxlLCBjb250ZW50UGFkZGluZywgY29udGVudF0pO1xuXG4gIC8vIFJlLXBvc2l0aW9uIHRvb2x0aXAgaWYgaXQgbW92ZXMgb3V0IG9mIHRoZSB2aWV3cG9ydCBieSAxMCUgYW5kIG9uIHdpbmRvdyByZXNpemVcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBsZXQgb2JzZXJ2ZXI6IEludGVyc2VjdGlvbk9ic2VydmVyO1xuXG4gICAgaWYgKFxuICAgICAgdHlwZW9mIEludGVyc2VjdGlvbk9ic2VydmVyICE9PSBcInVuZGVmaW5lZFwiICYmXG4gICAgICBpc1Zpc2libGUgJiZcbiAgICAgIHRvb2x0aXBSZWYuY3VycmVudFxuICAgICkge1xuICAgICAgb2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoXG4gICAgICAgIChlbnRyaWVzKSA9PiB7XG4gICAgICAgICAgZW50cmllcy5mb3JFYWNoKCgpID0+IHtcbiAgICAgICAgICAgIGNhbGN1bGF0ZVN0eWxlKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0aHJlc2hvbGQ6IDAuOSxcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZSh0b29sdGlwUmVmLmN1cnJlbnQpO1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIiwgZGVib3VuY2VkQ2FsY3VsYXRlU3R5bGUpO1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIiwgZGVib3VuY2VkQ2FsY3VsYXRlU3R5bGUsIHRydWUpOyAvLyB1c2UgY2FwdHVyZSBoZXJlIHRvIGRldGVjdCBzY3JvbGwgb24gYW55IHBhcmVudFxuICAgIH0gZWxzZSBpZiAoIWlzVmlzaWJsZSkge1xuICAgICAgLy8gbG9nIHRpbWUgd2hlbiB0b29sdGlwIGNsb3Nlc1xuICAgICAgbGFzdFRvb2x0aXBIaWRlVGltZXN0YW1wID0gRGF0ZS5ub3coKTtcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKG9ic2VydmVyKSB7XG4gICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgIH1cbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwicmVzaXplXCIsIGRlYm91bmNlZENhbGN1bGF0ZVN0eWxlKTtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwic2Nyb2xsXCIsIGRlYm91bmNlZENhbGN1bGF0ZVN0eWxlKTtcbiAgICAgIGNsZWFyVGltZW91dChkZWJvdW5jZVRpbWVvdXRJZC5jdXJyZW50KTtcbiAgICB9O1xuICB9LCBbaXNWaXNpYmxlLCBjYWxjdWxhdGVTdHlsZSwgZGVib3VuY2VkQ2FsY3VsYXRlU3R5bGUsIHdpbmRvdywgdG9vbHRpcFJlZl0pO1xuXG4gIGxldCBwb3J0YWwgPSBudWxsO1xuXG4gIGlmIChpc1Zpc2libGUpIHtcbiAgICBjb25zdCB0b29sdGlwRWxtID0gKFxuICAgICAgPFN1YlRoZW1lUHJvdmlkZXIgbmFtZT1cImludmVydGVkXCI+XG4gICAgICAgIDxTdHlsZWRDb250YWluZXJcbiAgICAgICAgICBkYXRhLWUyZS10ZXN0LWlkPXtkYXRhRTJlVGVzdElkfVxuICAgICAgICAgIGRhdGEtZHMtaWQ9e2RhdGFEU0lkfVxuICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICB0b3A6IHN0eWxlLnRvcCxcbiAgICAgICAgICAgIGxlZnQ6IHN0eWxlLmxlZnQsXG4gICAgICAgICAgICBhbmltYXRpb25EdXJhdGlvbjogZ2V0QW5pbWF0aW9uRHVyYXRpb24oKSxcbiAgICAgICAgICB9fVxuICAgICAgICAgIHJlZj17dG9vbHRpcFJlZn1cbiAgICAgICAgICBpZD17dG9vbHRpcElkfVxuICAgICAgICAgIHJvbGU9e3JvbGV9XG4gICAgICAgICAgYXJpYS1oaWRkZW49e2FyaWFIaWRkZW59XG4gICAgICAgICAgdGFiSW5kZXg9e3RhYkluZGV4fVxuICAgICAgICAgIGhvcml6b250YWxQbGFjZW1lbnQ9e3N0eWxlLmhvcml6b250YWxQbGFjZW1lbnR9XG4gICAgICAgICAgdmVydGljYWxQbGFjZW1lbnQ9e3N0eWxlLnZlcnRpY2FsUGxhY2VtZW50fVxuICAgICAgICAgIGNvbnRlbnRQYWRkaW5nPXtjb250ZW50UGFkZGluZ31cbiAgICAgICAgICBtYXhXaWR0aD17bWF4V2lkdGh9XG4gICAgICAgICAgb25Qb2ludGVyRW50ZXI9e29uVG9vbHRpcFBvaW50ZXJFbnRlcn1cbiAgICAgICAgICBvblBvaW50ZXJMZWF2ZT17b25Ub29sdGlwUG9pbnRlckxlYXZlfVxuICAgICAgICA+XG4gICAgICAgICAge2NvbnRlbnR9XG4gICAgICAgICAgPFN0eWxlZEFycm93XG4gICAgICAgICAgICBob3Jpem9udGFsUGxhY2VtZW50PXtzdHlsZS5ob3Jpem9udGFsUGxhY2VtZW50fVxuICAgICAgICAgICAgdmVydGljYWxQbGFjZW1lbnQ9e3N0eWxlLnZlcnRpY2FsUGxhY2VtZW50fVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvU3R5bGVkQ29udGFpbmVyPlxuICAgICAgPC9TdWJUaGVtZVByb3ZpZGVyPlxuICAgICk7XG5cbiAgICBwb3J0YWwgPSBjcmVhdGVQb3J0YWwodG9vbHRpcEVsbSwgcG9ydGFsQ29udGFpbmVyIHx8IGRvY3VtZW50LmJvZHkpO1xuICB9XG5cbiAgcmV0dXJuIHBvcnRhbDtcbn1cbiJdfQ== */");
|
|
61
|
+
}, process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRvb2x0aXBDb250ZW50LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUErRXdCIiwiZmlsZSI6IlRvb2x0aXBDb250ZW50LnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwge1xuICBNdXRhYmxlUmVmT2JqZWN0LFxuICBSZWFjdEVsZW1lbnQsXG4gIHVzZUNhbGxiYWNrLFxuICB1c2VFZmZlY3QsXG4gIHVzZUxheW91dEVmZmVjdCxcbiAgdXNlTWVtbyxcbiAgdXNlUmVmLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWRcIjtcbmltcG9ydCB7IGtleWZyYW1lcyB9IGZyb20gXCJAZW1vdGlvbi9yZWFjdFwiO1xuaW1wb3J0IHsgY3JlYXRlUG9ydGFsIH0gZnJvbSBcInJlYWN0LWRvbVwiO1xuaW1wb3J0IHsgdXNlRG9jdW1lbnQgfSBmcm9tIFwiLi4vLi4vc2hhcmVkL3VzZURvY3VtZW50XCI7XG5pbXBvcnQgeyB1c2VXaW5kb3cgfSBmcm9tIFwiLi4vLi4vc2hhcmVkL3VzZVdpbmRvd1wiO1xuaW1wb3J0IHsgU3ViVGhlbWVQcm92aWRlciB9IGZyb20gXCIuLi9TdWJUaGVtZVByb3ZpZGVyL1N1YlRoZW1lUHJvdmlkZXJcIjtcbmltcG9ydCB6SW5kaWNlcyBmcm9tIFwiLi4vLi4vLi4vYnVpbGQtdG9rZW5zL196aW5kZXguanNvblwiO1xuXG5pbXBvcnQge1xuICBBTklNQVRJT05fRElTVEFOQ0UsXG4gIEFSUk9XX1NJWkUsXG4gIEFSUk9XX1NJWkVfQklHLFxuICBnZXRBcnJvd09mZnNldCxcbiAgZ2V0VG9vbHRpcFN0eWxlLFxufSBmcm9tIFwiLi91dGlsc1wiO1xuaW1wb3J0IHsgQ29udGFpbmVyIH0gZnJvbSBcIi4uL0NvbnRhaW5lci9Db250YWluZXJcIjtcbmltcG9ydCB7IEJvcmRlclJhZGl1cyB9IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuXG5leHBvcnQgdHlwZSBUb29sdGlwQ29udGVudFByb3BzID0ge1xuICBjb250ZW50OiBSZWFjdEVsZW1lbnQ7XG4gIHRyaWdnZXJSZWY6IE11dGFibGVSZWZPYmplY3Q8YW55PjtcbiAgLyogUGxhY2VtZW50ICovXG4gIHBsYWNlbWVudD86XG4gICAgfCBcImF1dG9cIlxuICAgIHwgXCJ0b3BcIlxuICAgIHwgXCJib3R0b21cIlxuICAgIHwgXCJ0b3AtbGVmdFwiXG4gICAgfCBcInRvcC1yaWdodFwiXG4gICAgfCBcImJvdHRvbS1sZWZ0XCJcbiAgICB8IFwiYm90dG9tLXJpZ2h0XCI7XG4gIC8qIEN1c3RvbSBwb3J0YWwgY29udGFpbmVyIHRvIHJlbmRlciB0b29sdGlwIGludG8gKi9cbiAgcG9ydGFsQ29udGFpbmVyPzogSFRNTEVsZW1lbnQ7XG4gIGRhdGFFMmVUZXN0SWQ/OiBzdHJpbmc7XG4gIGRhdGFEU0lkOiBzdHJpbmc7XG4gIGlzVmlzaWJsZT86IGJvb2xlYW47XG4gIHRvb2x0aXBJZD86IHN0cmluZztcbiAgXCJhcmlhLWhpZGRlblwiPzogYm9vbGVhbjtcbiAgcm9sZT86IHN0cmluZztcbiAgdGFiSW5kZXg/OiBudW1iZXI7XG4gIC8vIENvbnRlbnQgcGFkZGluZ1xuICBjb250ZW50UGFkZGluZz86IFwic1wiIHwgXCJtXCI7XG4gIGhhc0ludmVydGVkU3ViVGhlbWU/OiBib29sZWFuO1xuICBtYXhXaWR0aD86IG51bWJlcjtcbiAgZGVmYXVsdFZlcnRpY2FsUGxhY2VtZW50PzogVG9vbHRpcFN0eWxlW1widmVydGljYWxQbGFjZW1lbnRcIl07XG4gIG9uVG9vbHRpcFBvaW50ZXJFbnRlcj86IFJlYWN0LlBvaW50ZXJFdmVudEhhbmRsZXI8SFRNTERpdkVsZW1lbnQ+O1xuICBvblRvb2x0aXBQb2ludGVyTGVhdmU/OiBSZWFjdC5Qb2ludGVyRXZlbnRIYW5kbGVyPEhUTUxEaXZFbGVtZW50PjtcbiAgaGlkZUFycm93PzogYm9vbGVhbjtcbiAgYm9yZGVyUmFkaXVzPzogQm9yZGVyUmFkaXVzO1xufTtcblxuZXhwb3J0IHR5cGUgVG9vbHRpcFN0eWxlID0ge1xuICB0b3A6IG51bWJlcjtcbiAgbGVmdDogbnVtYmVyO1xuICBob3Jpem9udGFsUGxhY2VtZW50OiBcImxlZnRcIiB8IFwicmlnaHRcIiB8IFwiY2VudGVyXCI7XG4gIHZlcnRpY2FsUGxhY2VtZW50OiBcInRvcFwiIHwgXCJib3R0b21cIjtcbn07XG5cbnR5cGUgU3R5bGVkQ29udGFpbmVyUHJvcHMgPSBQaWNrPFxuICBUb29sdGlwQ29udGVudFByb3BzLFxuICBcImNvbnRlbnRQYWRkaW5nXCIgfCBcIm1heFdpZHRoXCIgfCBcImhhc0ludmVydGVkU3ViVGhlbWVcIlxuPiAmIHtcbiAgaG9yaXpvbnRhbFBsYWNlbWVudDogVG9vbHRpcFN0eWxlW1wiaG9yaXpvbnRhbFBsYWNlbWVudFwiXTtcbiAgdmVydGljYWxQbGFjZW1lbnQ6IFRvb2x0aXBTdHlsZVtcInZlcnRpY2FsUGxhY2VtZW50XCJdO1xufTtcblxuY29uc3QgQU5JTUFUSU9OX0RVUkFUSU9OID0gMjAwO1xuY29uc3QgU0hPV19ISURFX0RFTEFZID0gMjAwO1xuY29uc3QgTUFYX0NPTlRFTlRfV0lEVEggPSAyMjQ7XG5cbmNvbnN0IFN0eWxlZENvbnRhaW5lciA9IHN0eWxlZC5kaXY8U3R5bGVkQ29udGFpbmVyUHJvcHM+KFxuICAoe1xuICAgIHRoZW1lLFxuICAgIGhvcml6b250YWxQbGFjZW1lbnQsXG4gICAgdmVydGljYWxQbGFjZW1lbnQsXG4gICAgbWF4V2lkdGgsXG4gICAgY29udGVudFBhZGRpbmcsXG4gICAgaGFzSW52ZXJ0ZWRTdWJUaGVtZSA9IHRydWUsXG4gIH0pID0+IHtcbiAgICBjb25zdCBhbmltYXRpb25EaXN0YW5jZSA9XG4gICAgICB2ZXJ0aWNhbFBsYWNlbWVudCA9PT0gXCJ0b3BcIlxuICAgICAgICA/IGAke0FOSU1BVElPTl9ESVNUQU5DRX1weGBcbiAgICAgICAgOiBgLSR7QU5JTUFUSU9OX0RJU1RBTkNFfXB4YDtcbiAgICBjb25zdCBhbmltYXRpb24gPSBrZXlmcmFtZXMoe1xuICAgICAgdG86IHtcbiAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgdHJhbnNmb3JtOlxuICAgICAgICAgIGhvcml6b250YWxQbGFjZW1lbnQgPT09IFwiY2VudGVyXCJcbiAgICAgICAgICAgID8gYHRyYW5zbGF0ZSgtNTAlLCAke2FuaW1hdGlvbkRpc3RhbmNlfSlgXG4gICAgICAgICAgICA6IGB0cmFuc2xhdGVZKCR7YW5pbWF0aW9uRGlzdGFuY2V9KWAsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgY29uc3QgY29udGVudFBhZGRpbmdNYXAgPSB7XG4gICAgICBzOiB0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLnh4cyxcbiAgICAgIG06IHRoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcucyxcbiAgICB9O1xuXG4gICAgY29uc3QgaW52ZXJ0ZWRTdWJUaGVtZVN0eWxlcyA9IHtcbiAgICAgIHBhZGRpbmc6IGAke3RoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcueHN9ICR7dGhlbWUudmFyaWFibGVzLnNpemUuc3BhY2luZy5zfWAsXG4gICAgICAuLi4oY29udGVudFBhZGRpbmcgJiYge1xuICAgICAgICBwYWRkaW5nOiBjb250ZW50UGFkZGluZ01hcFtjb250ZW50UGFkZGluZ10sXG4gICAgICB9KSxcbiAgICAgIGJvcmRlclJhZGl1czogdGhlbWUudmFyaWFibGVzLnNpemUuYm9yZGVyUmFkaXVzLnhzLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS52YWx1ZXMuY29sb3IuYmFja2dyb3VuZC5wcmltYXJ5LmRlZmF1bHQsXG4gICAgfTtcblxuICAgIHJldHVybiB7XG4gICAgICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICAgICAgekluZGV4OiB6SW5kaWNlcy50b29sdGlwLnZhbHVlLFxuICAgICAgb3BhY2l0eTogMCxcbiAgICAgIGFuaW1hdGlvbjogYCR7QU5JTUFUSU9OX0RVUkFUSU9OfW1zIGVhc2Utb3V0IGZvcndhcmRzICR7YW5pbWF0aW9ufWAsXG4gICAgICBtYXhXaWR0aCxcbiAgICAgIHdpZHRoOiBcImluaXRpYWxcIixcbiAgICAgIGJveFNpemluZzogXCJib3JkZXItYm94XCIsXG4gICAgICAuLi4oaGFzSW52ZXJ0ZWRTdWJUaGVtZSAmJiBpbnZlcnRlZFN1YlRoZW1lU3R5bGVzKSxcbiAgICAgIC4uLihob3Jpem9udGFsUGxhY2VtZW50ID09PSBcImNlbnRlclwiICYmIHtcbiAgICAgICAgdHJhbnNmb3JtOiBcInRyYW5zbGF0ZSgtNTAlKVwiLFxuICAgICAgfSksXG4gICAgfTtcbiAgfVxuKTtcblxudHlwZSBTdHlsZWRBcnJvd1Byb3BzID0ge1xuICB2ZXJ0aWNhbFBsYWNlbWVudDogVG9vbHRpcFN0eWxlW1widmVydGljYWxQbGFjZW1lbnRcIl07XG4gIGhvcml6b250YWxQbGFjZW1lbnQ6IFRvb2x0aXBTdHlsZVtcImhvcml6b250YWxQbGFjZW1lbnRcIl07XG4gIHNpemU/OiAwIHwgdHlwZW9mIEFSUk9XX1NJWkUgfCB0eXBlb2YgQVJST1dfU0laRV9CSUc7XG59O1xuXG5jb25zdCBTdHlsZWRBcnJvdyA9IHN0eWxlZC5kaXY8U3R5bGVkQXJyb3dQcm9wcz4oXG4gICh7IHRoZW1lLCB2ZXJ0aWNhbFBsYWNlbWVudCwgaG9yaXpvbnRhbFBsYWNlbWVudCwgc2l6ZSA9IEFSUk9XX1NJWkUgfSkgPT4ge1xuICAgIGNvbnN0IG9mZnNldCA9IGdldEFycm93T2Zmc2V0KHNpemUpO1xuICAgIHJldHVybiB7XG4gICAgICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICAgICAgd2lkdGg6IDAsXG4gICAgICBoZWlnaHQ6IDAsXG4gICAgICBib3JkZXJMZWZ0OiBgJHtzaXplfXB4IHNvbGlkIHRyYW5zcGFyZW50YCxcbiAgICAgIGJvcmRlclJpZ2h0OiBgJHtzaXplfXB4IHNvbGlkIHRyYW5zcGFyZW50YCxcblxuICAgICAgLi4uKHZlcnRpY2FsUGxhY2VtZW50ID09PSBcInRvcFwiICYmIHtcbiAgICAgICAgdG9wOiBcIjEwMCVcIixcbiAgICAgICAgYm9yZGVyVG9wOiBgJHtzaXplfXB4IHNvbGlkICR7dGhlbWUudmFsdWVzLmNvbG9yLmJhY2tncm91bmQucHJpbWFyeS5kZWZhdWx0fWAsXG4gICAgICB9KSxcblxuICAgICAgLi4uKHZlcnRpY2FsUGxhY2VtZW50ID09PSBcImJvdHRvbVwiICYmIHtcbiAgICAgICAgdG9wOiBgLSR7c2l6ZX1weGAsXG4gICAgICAgIGJvcmRlckJvdHRvbTogYCR7c2l6ZX1weCBzb2xpZCAke3RoZW1lLnZhbHVlcy5jb2xvci5iYWNrZ3JvdW5kLnByaW1hcnkuZGVmYXVsdH1gLFxuICAgICAgfSksXG5cbiAgICAgIC4uLihob3Jpem9udGFsUGxhY2VtZW50ID09PSBcImNlbnRlclwiICYmIHtcbiAgICAgICAgbGVmdDogXCI1MCVcIixcbiAgICAgICAgdHJhbnNmb3JtOiBcInRyYW5zbGF0ZSgtNTAlKVwiLFxuICAgICAgfSksXG5cbiAgICAgIC4uLihob3Jpem9udGFsUGxhY2VtZW50ID09PSBcInJpZ2h0XCIgJiYge1xuICAgICAgICBsZWZ0OiBgJHtvZmZzZXR9cHhgLFxuICAgICAgfSksXG5cbiAgICAgIC4uLihob3Jpem9udGFsUGxhY2VtZW50ID09PSBcImxlZnRcIiAmJiB7XG4gICAgICAgIHJpZ2h0OiBgJHtvZmZzZXR9cHhgLFxuICAgICAgfSksXG4gICAgfTtcbiAgfVxuKTtcblxuY29uc3QgaW5pdGlhbFN0eWxlOiBUb29sdGlwU3R5bGUgPSB7XG4gIHRvcDogMCxcbiAgbGVmdDogMCxcbiAgdmVydGljYWxQbGFjZW1lbnQ6IFwidG9wXCIsXG4gIGhvcml6b250YWxQbGFjZW1lbnQ6IFwiY2VudGVyXCIsXG59O1xuXG5sZXQgbGFzdFRvb2x0aXBIaWRlVGltZXN0YW1wID0gMDtcblxuLyogRGlzYWJsZSBhbmltYXRpb24gaWYgdGltZSBiZXR3ZWVuIGxhc3QgY2xvc2UgYW5kIG5ldyBvcGVuIGlzIGxlc3MgdGhhbiA1MDBtcyArIFNIT1dfSElERV9ERUxBWSAqL1xuZnVuY3Rpb24gZ2V0QW5pbWF0aW9uRHVyYXRpb24oKSB7XG4gIGxldCBhbmltYXRpb25EdXJhdGlvbiA9IGAke0FOSU1BVElPTl9EVVJBVElPTn1tc2A7XG5cbiAgaWYgKGxhc3RUb29sdGlwSGlkZVRpbWVzdGFtcCkge1xuICAgIGNvbnN0IHRpbWVTaW5jZUxhc3RUb29sdGlwID0gRGF0ZS5ub3coKSAtIGxhc3RUb29sdGlwSGlkZVRpbWVzdGFtcDtcblxuICAgIGlmICh0aW1lU2luY2VMYXN0VG9vbHRpcCA8IDUwMCArIFNIT1dfSElERV9ERUxBWSkge1xuICAgICAgYW5pbWF0aW9uRHVyYXRpb24gPSBcIjBtc1wiO1xuICAgIH1cbiAgfVxuICByZXR1cm4gYW5pbWF0aW9uRHVyYXRpb247XG59XG5cbi8qKiBUaGlzIGNvbXBvbmVudCBpcyB1c2VkIHRvIGRpc3BsYXkgdGhlIG92ZXJsYXkgZm9yIGJvdGggVG9nZ2xldGlwIGFuZCBUb29sdGlwIGNvbXBvbmVudHMgKi9cbmV4cG9ydCBmdW5jdGlvbiBUb29sdGlwQ29udGVudCh7XG4gIHBsYWNlbWVudCA9IFwiYXV0b1wiLFxuICBjb250ZW50LFxuICB0b29sdGlwSWQsXG4gIHRyaWdnZXJSZWYsXG4gIHBvcnRhbENvbnRhaW5lcixcbiAgZGF0YUUyZVRlc3RJZCxcbiAgZGF0YURTSWQsXG4gIGlzVmlzaWJsZSxcbiAgXCJhcmlhLWhpZGRlblwiOiBhcmlhSGlkZGVuLFxuICByb2xlLFxuICB0YWJJbmRleCxcbiAgY29udGVudFBhZGRpbmcsXG4gIG1heFdpZHRoID0gTUFYX0NPTlRFTlRfV0lEVEgsXG4gIGhhc0ludmVydGVkU3ViVGhlbWUgPSB0cnVlLFxuICBkZWZhdWx0VmVydGljYWxQbGFjZW1lbnQsXG4gIG9uVG9vbHRpcFBvaW50ZXJFbnRlcixcbiAgb25Ub29sdGlwUG9pbnRlckxlYXZlLFxuICBoaWRlQXJyb3cgPSBmYWxzZSxcbiAgYm9yZGVyUmFkaXVzID0gXCJ4c1wiLFxufTogVG9vbHRpcENvbnRlbnRQcm9wcyk6IFJlYWN0LlJlYWN0RWxlbWVudCB7XG4gIGNvbnN0IFtzdHlsZSwgc2V0U3R5bGVdID0gdXNlU3RhdGUoaW5pdGlhbFN0eWxlKTtcbiAgY29uc3QgdG9vbHRpcFJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgZG9jdW1lbnQgPSB1c2VEb2N1bWVudCgpO1xuICBjb25zdCB3aW5kb3cgPSB1c2VXaW5kb3coKTtcbiAgY29uc3QgZGVib3VuY2VUaW1lb3V0SWQgPSB1c2VSZWYobnVsbCk7XG5cbiAgY29uc3QgYXJyb3dTaXplID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKGhpZGVBcnJvdykge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIHJldHVybiBoYXNJbnZlcnRlZFN1YlRoZW1lID8gQVJST1dfU0laRSA6IEFSUk9XX1NJWkVfQklHO1xuICB9LCBbaGFzSW52ZXJ0ZWRTdWJUaGVtZSwgaGlkZUFycm93XSk7XG5cbiAgY29uc3QgY2FsY3VsYXRlU3R5bGUgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKHRyaWdnZXJSZWYuY3VycmVudCAmJiB0b29sdGlwUmVmLmN1cnJlbnQpIHtcbiAgICAgIC8vIGNhbGN1bGF0ZSB0b29sdGlwIHN0eWxlXG4gICAgICBzZXRTdHlsZShcbiAgICAgICAgZ2V0VG9vbHRpcFN0eWxlKFxuICAgICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgICBkZWZhdWx0VmVydGljYWxQbGFjZW1lbnQsXG4gICAgICAgICAgdHJpZ2dlclJlZixcbiAgICAgICAgICB0b29sdGlwUmVmLFxuICAgICAgICAgIGRvY3VtZW50LFxuICAgICAgICAgIHdpbmRvdyxcbiAgICAgICAgICBhcnJvd1NpemVcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIGRlYm91bmNlVGltZW91dElkLmN1cnJlbnQgPSBudWxsO1xuICAgIH1cbiAgfSwgW1xuICAgIHRyaWdnZXJSZWYsXG4gICAgdG9vbHRpcFJlZixcbiAgICBkb2N1bWVudCxcbiAgICB3aW5kb3csXG4gICAgcGxhY2VtZW50LFxuICAgIGFycm93U2l6ZSxcbiAgICBkZWZhdWx0VmVydGljYWxQbGFjZW1lbnQsXG4gIF0pO1xuXG4gIGNvbnN0IGRlYm91bmNlZENhbGN1bGF0ZVN0eWxlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmICghZGVib3VuY2VUaW1lb3V0SWQuY3VycmVudCkge1xuICAgICAgZGVib3VuY2VUaW1lb3V0SWQuY3VycmVudCA9IHNldFRpbWVvdXQoY2FsY3VsYXRlU3R5bGUsIDIwMCk7XG4gICAgfVxuICB9LCBbY2FsY3VsYXRlU3R5bGVdKTtcblxuICAvLyBUaGlzIGxheW91dCBlZmZlY3QgdG8gcmUtcmVuZGVyIHdpdGggdXBkYXRlZCBwb3NpdGlvbiBhZnRlciBkZXRlcm1pbmluZyBjb250ZW50IHdpZHRoXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzVmlzaWJsZSkge1xuICAgICAgY2FsY3VsYXRlU3R5bGUoKTtcbiAgICB9XG4gIH0sIFtpc1Zpc2libGUsIGNhbGN1bGF0ZVN0eWxlLCBjb250ZW50UGFkZGluZywgY29udGVudF0pO1xuXG4gIC8vIFJlLXBvc2l0aW9uIHRvb2x0aXAgaWYgaXQgbW92ZXMgb3V0IG9mIHRoZSB2aWV3cG9ydCBieSAxMCUgYW5kIG9uIHdpbmRvdyByZXNpemVcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBsZXQgb2JzZXJ2ZXI6IEludGVyc2VjdGlvbk9ic2VydmVyO1xuXG4gICAgaWYgKFxuICAgICAgdHlwZW9mIEludGVyc2VjdGlvbk9ic2VydmVyICE9PSBcInVuZGVmaW5lZFwiICYmXG4gICAgICBpc1Zpc2libGUgJiZcbiAgICAgIHRvb2x0aXBSZWYuY3VycmVudFxuICAgICkge1xuICAgICAgb2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoXG4gICAgICAgIChlbnRyaWVzKSA9PiB7XG4gICAgICAgICAgZW50cmllcy5mb3JFYWNoKCgpID0+IHtcbiAgICAgICAgICAgIGNhbGN1bGF0ZVN0eWxlKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0aHJlc2hvbGQ6IDAuOSxcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZSh0b29sdGlwUmVmLmN1cnJlbnQpO1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIiwgZGVib3VuY2VkQ2FsY3VsYXRlU3R5bGUpO1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIiwgZGVib3VuY2VkQ2FsY3VsYXRlU3R5bGUsIHRydWUpOyAvLyB1c2UgY2FwdHVyZSBoZXJlIHRvIGRldGVjdCBzY3JvbGwgb24gYW55IHBhcmVudFxuICAgIH0gZWxzZSBpZiAoIWlzVmlzaWJsZSkge1xuICAgICAgLy8gbG9nIHRpbWUgd2hlbiB0b29sdGlwIGNsb3Nlc1xuICAgICAgbGFzdFRvb2x0aXBIaWRlVGltZXN0YW1wID0gRGF0ZS5ub3coKTtcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKG9ic2VydmVyKSB7XG4gICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgIH1cbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwicmVzaXplXCIsIGRlYm91bmNlZENhbGN1bGF0ZVN0eWxlKTtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwic2Nyb2xsXCIsIGRlYm91bmNlZENhbGN1bGF0ZVN0eWxlKTtcbiAgICAgIGNsZWFyVGltZW91dChkZWJvdW5jZVRpbWVvdXRJZC5jdXJyZW50KTtcbiAgICB9O1xuICB9LCBbaXNWaXNpYmxlLCBjYWxjdWxhdGVTdHlsZSwgZGVib3VuY2VkQ2FsY3VsYXRlU3R5bGUsIHdpbmRvdywgdG9vbHRpcFJlZl0pO1xuXG4gIGxldCBwb3J0YWwgPSBudWxsO1xuXG4gIGNvbnN0IE91dGVyV3JhcHBlciA9IHVzZU1lbW8oXG4gICAgKCkgPT5cbiAgICAgICh7IGNoaWxkcmVuIH06IHsgY2hpbGRyZW46IFJlYWN0RWxlbWVudCB9KSA9PlxuICAgICAgICBoYXNJbnZlcnRlZFN1YlRoZW1lID8gKFxuICAgICAgICAgIDxTdWJUaGVtZVByb3ZpZGVyIG5hbWU9XCJpbnZlcnRlZFwiPntjaGlsZHJlbn08L1N1YlRoZW1lUHJvdmlkZXI+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPD57Y2hpbGRyZW59PC8+XG4gICAgICAgICksXG4gICAgW2hhc0ludmVydGVkU3ViVGhlbWVdXG4gICk7XG5cbiAgaWYgKGlzVmlzaWJsZSkge1xuICAgIGNvbnN0IHRvb2x0aXBFbG0gPSAoXG4gICAgICA8T3V0ZXJXcmFwcGVyPlxuICAgICAgICA8U3R5bGVkQ29udGFpbmVyXG4gICAgICAgICAgZGF0YS1lMmUtdGVzdC1pZD17ZGF0YUUyZVRlc3RJZH1cbiAgICAgICAgICBkYXRhLWRzLWlkPXtkYXRhRFNJZH1cbiAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgdG9wOiBzdHlsZS50b3AsXG4gICAgICAgICAgICBsZWZ0OiBzdHlsZS5sZWZ0LFxuICAgICAgICAgICAgYW5pbWF0aW9uRHVyYXRpb246IGdldEFuaW1hdGlvbkR1cmF0aW9uKCksXG4gICAgICAgICAgfX1cbiAgICAgICAgICByZWY9e3Rvb2x0aXBSZWZ9XG4gICAgICAgICAgaWQ9e3Rvb2x0aXBJZH1cbiAgICAgICAgICByb2xlPXtyb2xlfVxuICAgICAgICAgIGFyaWEtaGlkZGVuPXthcmlhSGlkZGVufVxuICAgICAgICAgIGhhc0ludmVydGVkU3ViVGhlbWU9e2hhc0ludmVydGVkU3ViVGhlbWV9XG4gICAgICAgICAgdGFiSW5kZXg9e3RhYkluZGV4fVxuICAgICAgICAgIGhvcml6b250YWxQbGFjZW1lbnQ9e3N0eWxlLmhvcml6b250YWxQbGFjZW1lbnR9XG4gICAgICAgICAgdmVydGljYWxQbGFjZW1lbnQ9e3N0eWxlLnZlcnRpY2FsUGxhY2VtZW50fVxuICAgICAgICAgIG1heFdpZHRoPXttYXhXaWR0aH1cbiAgICAgICAgICBjb250ZW50UGFkZGluZz17Y29udGVudFBhZGRpbmd9XG4gICAgICAgICAgb25Qb2ludGVyRW50ZXI9e29uVG9vbHRpcFBvaW50ZXJFbnRlcn1cbiAgICAgICAgICBvblBvaW50ZXJMZWF2ZT17b25Ub29sdGlwUG9pbnRlckxlYXZlfVxuICAgICAgICA+XG4gICAgICAgICAge2hhc0ludmVydGVkU3ViVGhlbWUgPyAoXG4gICAgICAgICAgICBjb250ZW50XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxDb250YWluZXIgZWxldmF0aW9uPXszfSBib3JkZXJSYWRpdXM9e2JvcmRlclJhZGl1c30+XG4gICAgICAgICAgICAgIHtjb250ZW50fVxuICAgICAgICAgICAgPC9Db250YWluZXI+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7IWhpZGVBcnJvdyAmJiAoXG4gICAgICAgICAgICA8U3R5bGVkQXJyb3dcbiAgICAgICAgICAgICAgZGF0YS1lMmUtdGVzdC1pZD17YCR7ZGF0YUUyZVRlc3RJZH1fYXJyb3dgfVxuICAgICAgICAgICAgICBob3Jpem9udGFsUGxhY2VtZW50PXtzdHlsZS5ob3Jpem9udGFsUGxhY2VtZW50fVxuICAgICAgICAgICAgICB2ZXJ0aWNhbFBsYWNlbWVudD17c3R5bGUudmVydGljYWxQbGFjZW1lbnR9XG4gICAgICAgICAgICAgIHNpemU9e2Fycm93U2l6ZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9TdHlsZWRDb250YWluZXI+XG4gICAgICA8L091dGVyV3JhcHBlcj5cbiAgICApO1xuXG4gICAgcG9ydGFsID0gY3JlYXRlUG9ydGFsKHRvb2x0aXBFbG0sIHBvcnRhbENvbnRhaW5lciB8fCBkb2N1bWVudC5ib2R5KTtcbiAgfVxuXG4gIHJldHVybiBwb3J0YWw7XG59XG4iXX0= */");
|
|
57
62
|
const StyledArrow = /*#__PURE__*/_styled("div", process.env.NODE_ENV === "production" ? {
|
|
58
63
|
target: "e1k814k40"
|
|
59
64
|
} : {
|
|
@@ -63,34 +68,36 @@ const StyledArrow = /*#__PURE__*/_styled("div", process.env.NODE_ENV === "produc
|
|
|
63
68
|
let {
|
|
64
69
|
theme,
|
|
65
70
|
verticalPlacement,
|
|
66
|
-
horizontalPlacement
|
|
71
|
+
horizontalPlacement,
|
|
72
|
+
size = ARROW_SIZE
|
|
67
73
|
} = _ref2;
|
|
74
|
+
const offset = getArrowOffset(size);
|
|
68
75
|
return {
|
|
69
76
|
position: "absolute",
|
|
70
77
|
width: 0,
|
|
71
78
|
height: 0,
|
|
72
|
-
borderLeft: `${
|
|
73
|
-
borderRight: `${
|
|
79
|
+
borderLeft: `${size}px solid transparent`,
|
|
80
|
+
borderRight: `${size}px solid transparent`,
|
|
74
81
|
...(verticalPlacement === "top" && {
|
|
75
82
|
top: "100%",
|
|
76
|
-
borderTop: `${
|
|
83
|
+
borderTop: `${size}px solid ${theme.values.color.background.primary.default}`
|
|
77
84
|
}),
|
|
78
85
|
...(verticalPlacement === "bottom" && {
|
|
79
|
-
top: `-${
|
|
80
|
-
borderBottom: `${
|
|
86
|
+
top: `-${size}px`,
|
|
87
|
+
borderBottom: `${size}px solid ${theme.values.color.background.primary.default}`
|
|
81
88
|
}),
|
|
82
89
|
...(horizontalPlacement === "center" && {
|
|
83
90
|
left: "50%",
|
|
84
91
|
transform: "translate(-50%)"
|
|
85
92
|
}),
|
|
86
93
|
...(horizontalPlacement === "right" && {
|
|
87
|
-
left: `${
|
|
94
|
+
left: `${offset}px`
|
|
88
95
|
}),
|
|
89
96
|
...(horizontalPlacement === "left" && {
|
|
90
|
-
right: `${
|
|
97
|
+
right: `${offset}px`
|
|
91
98
|
})
|
|
92
99
|
};
|
|
93
|
-
}, process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRvb2x0aXBDb250ZW50LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE2SG9CIiwiZmlsZSI6IlRvb2x0aXBDb250ZW50LnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwge1xuICB1c2VTdGF0ZSxcbiAgdXNlUmVmLFxuICB1c2VMYXlvdXRFZmZlY3QsXG4gIHVzZUVmZmVjdCxcbiAgTXV0YWJsZVJlZk9iamVjdCxcbiAgUmVhY3RFbGVtZW50LFxuICB1c2VDYWxsYmFjayxcbn0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWRcIjtcbmltcG9ydCB7IGtleWZyYW1lcyB9IGZyb20gXCJAZW1vdGlvbi9yZWFjdFwiO1xuaW1wb3J0IHsgY3JlYXRlUG9ydGFsIH0gZnJvbSBcInJlYWN0LWRvbVwiO1xuaW1wb3J0IHsgdXNlRG9jdW1lbnQgfSBmcm9tIFwiLi4vLi4vc2hhcmVkL3VzZURvY3VtZW50XCI7XG5pbXBvcnQgeyB1c2VXaW5kb3cgfSBmcm9tIFwiLi4vLi4vc2hhcmVkL3VzZVdpbmRvd1wiO1xuaW1wb3J0IHsgU3ViVGhlbWVQcm92aWRlciB9IGZyb20gXCIuLi9TdWJUaGVtZVByb3ZpZGVyL1N1YlRoZW1lUHJvdmlkZXJcIjtcbmltcG9ydCB6SW5kaWNlcyBmcm9tIFwiLi4vLi4vLi4vYnVpbGQtdG9rZW5zL196aW5kZXguanNvblwiO1xuXG5pbXBvcnQge1xuICBBUlJPV19TSVpFLFxuICBBUlJPV19PRkZTRVQsXG4gIEFOSU1BVElPTl9ESVNUQU5DRSxcbiAgZ2V0VG9vbHRpcFN0eWxlLFxufSBmcm9tIFwiLi91dGlsc1wiO1xuXG5leHBvcnQgdHlwZSBUb29sdGlwQ29udGVudFByb3BzID0ge1xuICBjb250ZW50OiBSZWFjdEVsZW1lbnQ7XG4gIHRyaWdnZXJSZWY6IE11dGFibGVSZWZPYmplY3Q8YW55PjtcbiAgLyogUGxhY2VtZW50ICovXG4gIHBsYWNlbWVudD86XG4gICAgfCBcImF1dG9cIlxuICAgIHwgXCJ0b3BcIlxuICAgIHwgXCJib3R0b21cIlxuICAgIHwgXCJ0b3AtbGVmdFwiXG4gICAgfCBcInRvcC1yaWdodFwiXG4gICAgfCBcImJvdHRvbS1sZWZ0XCJcbiAgICB8IFwiYm90dG9tLXJpZ2h0XCI7XG4gIC8qIEN1c3RvbSBwb3J0YWwgY29udGFpbmVyIHRvIHJlbmRlciB0b29sdGlwIGludG8gKi9cbiAgcG9ydGFsQ29udGFpbmVyPzogSFRNTEVsZW1lbnQ7XG4gIGRhdGFFMmVUZXN0SWQ/OiBzdHJpbmc7XG4gIGRhdGFEU0lkOiBzdHJpbmc7XG4gIGlzVmlzaWJsZT86IGJvb2xlYW47XG4gIHRvb2x0aXBJZD86IHN0cmluZztcbiAgXCJhcmlhLWhpZGRlblwiPzogYm9vbGVhbjtcbiAgcm9sZT86IHN0cmluZztcbiAgdGFiSW5kZXg/OiBudW1iZXI7XG4gIC8vIENvbnRlbnQgcGFkZGluZ1xuICBjb250ZW50UGFkZGluZz86IFwic1wiIHwgXCJtXCI7XG4gIG1heFdpZHRoPzogbnVtYmVyO1xuICBvblRvb2x0aXBQb2ludGVyRW50ZXI/OiBSZWFjdC5Qb2ludGVyRXZlbnRIYW5kbGVyPEhUTUxEaXZFbGVtZW50PjtcbiAgb25Ub29sdGlwUG9pbnRlckxlYXZlPzogUmVhY3QuUG9pbnRlckV2ZW50SGFuZGxlcjxIVE1MRGl2RWxlbWVudD47XG59O1xuXG5leHBvcnQgdHlwZSBUb29sdGlwU3R5bGUgPSB7XG4gIHRvcDogbnVtYmVyO1xuICBsZWZ0OiBudW1iZXI7XG4gIGhvcml6b250YWxQbGFjZW1lbnQ6IFwibGVmdFwiIHwgXCJyaWdodFwiIHwgXCJjZW50ZXJcIjtcbiAgdmVydGljYWxQbGFjZW1lbnQ6IFwidG9wXCIgfCBcImJvdHRvbVwiO1xufTtcblxudHlwZSBTdHlsZWRDb250YWluZXJQcm9wcyA9IFBpY2s8XG4gIFRvb2x0aXBDb250ZW50UHJvcHMsXG4gIFwiY29udGVudFBhZGRpbmdcIiB8IFwibWF4V2lkdGhcIlxuPiAmIHtcbiAgaG9yaXpvbnRhbFBsYWNlbWVudDogVG9vbHRpcFN0eWxlW1wiaG9yaXpvbnRhbFBsYWNlbWVudFwiXTtcbiAgdmVydGljYWxQbGFjZW1lbnQ6IFRvb2x0aXBTdHlsZVtcInZlcnRpY2FsUGxhY2VtZW50XCJdO1xufTtcblxuY29uc3QgQU5JTUFUSU9OX0RVUkFUSU9OID0gMjAwO1xuY29uc3QgU0hPV19ISURFX0RFTEFZID0gMjAwO1xuY29uc3QgTUFYX0NPTlRFTlRfV0lEVEggPSAyMjQ7XG5cbmNvbnN0IFN0eWxlZENvbnRhaW5lciA9IHN0eWxlZC5kaXY8U3R5bGVkQ29udGFpbmVyUHJvcHM+KFxuICAoe1xuICAgIHRoZW1lLFxuICAgIGhvcml6b250YWxQbGFjZW1lbnQsXG4gICAgdmVydGljYWxQbGFjZW1lbnQsXG4gICAgY29udGVudFBhZGRpbmcsXG4gICAgbWF4V2lkdGgsXG4gIH0pID0+IHtcbiAgICBjb25zdCBhbmltYXRpb25EaXN0YW5jZSA9XG4gICAgICB2ZXJ0aWNhbFBsYWNlbWVudCA9PT0gXCJ0b3BcIlxuICAgICAgICA/IGAke0FOSU1BVElPTl9ESVNUQU5DRX1weGBcbiAgICAgICAgOiBgLSR7QU5JTUFUSU9OX0RJU1RBTkNFfXB4YDtcbiAgICBjb25zdCBhbmltYXRpb24gPSBrZXlmcmFtZXMoe1xuICAgICAgdG86IHtcbiAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgdHJhbnNmb3JtOlxuICAgICAgICAgIGhvcml6b250YWxQbGFjZW1lbnQgPT09IFwiY2VudGVyXCJcbiAgICAgICAgICAgID8gYHRyYW5zbGF0ZSgtNTAlLCAke2FuaW1hdGlvbkRpc3RhbmNlfSlgXG4gICAgICAgICAgICA6IGB0cmFuc2xhdGVZKCR7YW5pbWF0aW9uRGlzdGFuY2V9KWAsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgY29uc3QgY29udGVudFBhZGRpbmdNYXAgPSB7XG4gICAgICBzOiB0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLnh4cyxcbiAgICAgIG06IHRoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcucyxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgICB6SW5kZXg6IHpJbmRpY2VzLnRvb2x0aXAudmFsdWUsXG4gICAgICBvcGFjaXR5OiAwLFxuICAgICAgYW5pbWF0aW9uOiBgJHtBTklNQVRJT05fRFVSQVRJT059bXMgZWFzZS1vdXQgZm9yd2FyZHMgJHthbmltYXRpb259YCxcbiAgICAgIGJvcmRlclJhZGl1czogdGhlbWUudmFyaWFibGVzLnNpemUuYm9yZGVyUmFkaXVzLnhzLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS52YWx1ZXMuY29sb3IuYmFja2dyb3VuZC5wcmltYXJ5LmRlZmF1bHQsXG4gICAgICBtYXhXaWR0aCxcbiAgICAgIHdpZHRoOiBcImluaXRpYWxcIixcbiAgICAgIGJveFNpemluZzogXCJib3JkZXItYm94XCIsXG4gICAgICBwYWRkaW5nOiBgJHt0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLnhzfSAke3RoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcuc31gLFxuXG4gICAgICAuLi4oY29udGVudFBhZGRpbmcgJiYge1xuICAgICAgICBwYWRkaW5nOiBjb250ZW50UGFkZGluZ01hcFtjb250ZW50UGFkZGluZ10sXG4gICAgICB9KSxcbiAgICAgIC4uLihob3Jpem9udGFsUGxhY2VtZW50ID09PSBcImNlbnRlclwiICYmIHtcbiAgICAgICAgdHJhbnNmb3JtOiBcInRyYW5zbGF0ZSgtNTAlKVwiLFxuICAgICAgfSksXG4gICAgfTtcbiAgfVxuKTtcblxudHlwZSBTdHlsZWRBcnJvd1Byb3BzID0ge1xuICB2ZXJ0aWNhbFBsYWNlbWVudDogVG9vbHRpcFN0eWxlW1widmVydGljYWxQbGFjZW1lbnRcIl07XG4gIGhvcml6b250YWxQbGFjZW1lbnQ6IFRvb2x0aXBTdHlsZVtcImhvcml6b250YWxQbGFjZW1lbnRcIl07XG59O1xuXG5jb25zdCBTdHlsZWRBcnJvdyA9IHN0eWxlZC5kaXY8U3R5bGVkQXJyb3dQcm9wcz4oXG4gICh7IHRoZW1lLCB2ZXJ0aWNhbFBsYWNlbWVudCwgaG9yaXpvbnRhbFBsYWNlbWVudCB9KSA9PiAoe1xuICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgd2lkdGg6IDAsXG4gICAgaGVpZ2h0OiAwLFxuICAgIGJvcmRlckxlZnQ6IGAke0FSUk9XX1NJWkV9cHggc29saWQgdHJhbnNwYXJlbnRgLFxuICAgIGJvcmRlclJpZ2h0OiBgJHtBUlJPV19TSVpFfXB4IHNvbGlkIHRyYW5zcGFyZW50YCxcblxuICAgIC4uLih2ZXJ0aWNhbFBsYWNlbWVudCA9PT0gXCJ0b3BcIiAmJiB7XG4gICAgICB0b3A6IFwiMTAwJVwiLFxuICAgICAgYm9yZGVyVG9wOiBgJHtBUlJPV19TSVpFfXB4IHNvbGlkICR7dGhlbWUudmFsdWVzLmNvbG9yLmJhY2tncm91bmQucHJpbWFyeS5kZWZhdWx0fWAsXG4gICAgfSksXG5cbiAgICAuLi4odmVydGljYWxQbGFjZW1lbnQgPT09IFwiYm90dG9tXCIgJiYge1xuICAgICAgdG9wOiBgLSR7QVJST1dfU0laRX1weGAsXG4gICAgICBib3JkZXJCb3R0b206IGAke0FSUk9XX1NJWkV9cHggc29saWQgJHt0aGVtZS52YWx1ZXMuY29sb3IuYmFja2dyb3VuZC5wcmltYXJ5LmRlZmF1bHR9YCxcbiAgICB9KSxcblxuICAgIC4uLihob3Jpem9udGFsUGxhY2VtZW50ID09PSBcImNlbnRlclwiICYmIHtcbiAgICAgIGxlZnQ6IFwiNTAlXCIsXG4gICAgICB0cmFuc2Zvcm06IFwidHJhbnNsYXRlKC01MCUpXCIsXG4gICAgfSksXG5cbiAgICAuLi4oaG9yaXpvbnRhbFBsYWNlbWVudCA9PT0gXCJyaWdodFwiICYmIHtcbiAgICAgIGxlZnQ6IGAke0FSUk9XX09GRlNFVH1weGAsXG4gICAgfSksXG5cbiAgICAuLi4oaG9yaXpvbnRhbFBsYWNlbWVudCA9PT0gXCJsZWZ0XCIgJiYge1xuICAgICAgcmlnaHQ6IGAke0FSUk9XX09GRlNFVH1weGAsXG4gICAgfSksXG4gIH0pXG4pO1xuXG5jb25zdCBpbml0aWFsU3R5bGU6IFRvb2x0aXBTdHlsZSA9IHtcbiAgdG9wOiAwLFxuICBsZWZ0OiAwLFxuICB2ZXJ0aWNhbFBsYWNlbWVudDogXCJ0b3BcIixcbiAgaG9yaXpvbnRhbFBsYWNlbWVudDogXCJjZW50ZXJcIixcbn07XG5cbmxldCBsYXN0VG9vbHRpcEhpZGVUaW1lc3RhbXAgPSAwO1xuXG4vKiBEaXNhYmxlIGFuaW1hdGlvbiBpZiB0aW1lIGJldHdlZW4gbGFzdCBjbG9zZSBhbmQgbmV3IG9wZW4gaXMgbGVzcyB0aGFuIDUwMG1zICsgU0hPV19ISURFX0RFTEFZICovXG5mdW5jdGlvbiBnZXRBbmltYXRpb25EdXJhdGlvbigpIHtcbiAgbGV0IGFuaW1hdGlvbkR1cmF0aW9uID0gYCR7QU5JTUFUSU9OX0RVUkFUSU9OfW1zYDtcblxuICBpZiAobGFzdFRvb2x0aXBIaWRlVGltZXN0YW1wKSB7XG4gICAgY29uc3QgdGltZVNpbmNlTGFzdFRvb2x0aXAgPSBEYXRlLm5vdygpIC0gbGFzdFRvb2x0aXBIaWRlVGltZXN0YW1wO1xuXG4gICAgaWYgKHRpbWVTaW5jZUxhc3RUb29sdGlwIDwgNTAwICsgU0hPV19ISURFX0RFTEFZKSB7XG4gICAgICBhbmltYXRpb25EdXJhdGlvbiA9IFwiMG1zXCI7XG4gICAgfVxuICB9XG4gIHJldHVybiBhbmltYXRpb25EdXJhdGlvbjtcbn1cblxuLyoqIFRoaXMgY29tcG9uZW50IGlzIHVzZWQgdG8gZGlzcGxheSB0aGUgb3ZlcmxheSBmb3IgYm90aCBUb2dnbGV0aXAgYW5kIFRvb2x0aXAgY29tcG9uZW50cyAqL1xuZXhwb3J0IGZ1bmN0aW9uIFRvb2x0aXBDb250ZW50KHtcbiAgcGxhY2VtZW50ID0gXCJhdXRvXCIsXG4gIGNvbnRlbnQsXG4gIHRvb2x0aXBJZCxcbiAgdHJpZ2dlclJlZixcbiAgcG9ydGFsQ29udGFpbmVyLFxuICBkYXRhRTJlVGVzdElkLFxuICBkYXRhRFNJZCxcbiAgaXNWaXNpYmxlLFxuICBcImFyaWEtaGlkZGVuXCI6IGFyaWFIaWRkZW4sXG4gIHJvbGUsXG4gIHRhYkluZGV4LFxuICBjb250ZW50UGFkZGluZyxcbiAgbWF4V2lkdGggPSBNQVhfQ09OVEVOVF9XSURUSCxcbiAgb25Ub29sdGlwUG9pbnRlckVudGVyLFxuICBvblRvb2x0aXBQb2ludGVyTGVhdmUsXG59OiBUb29sdGlwQ29udGVudFByb3BzKTogUmVhY3QuUmVhY3RFbGVtZW50IHtcbiAgY29uc3QgW3N0eWxlLCBzZXRTdHlsZV0gPSB1c2VTdGF0ZShpbml0aWFsU3R5bGUpO1xuICBjb25zdCB0b29sdGlwUmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBkb2N1bWVudCA9IHVzZURvY3VtZW50KCk7XG4gIGNvbnN0IHdpbmRvdyA9IHVzZVdpbmRvdygpO1xuICBjb25zdCBkZWJvdW5jZVRpbWVvdXRJZCA9IHVzZVJlZihudWxsKTtcblxuICBjb25zdCBjYWxjdWxhdGVTdHlsZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAodHJpZ2dlclJlZi5jdXJyZW50ICYmIHRvb2x0aXBSZWYuY3VycmVudCkge1xuICAgICAgLy8gY2FsY3VsYXRlIHRvb2x0aXAgc3R5bGVcbiAgICAgIHNldFN0eWxlKFxuICAgICAgICBnZXRUb29sdGlwU3R5bGUocGxhY2VtZW50LCB0cmlnZ2VyUmVmLCB0b29sdGlwUmVmLCBkb2N1bWVudCwgd2luZG93KVxuICAgICAgKTtcbiAgICAgIGRlYm91bmNlVGltZW91dElkLmN1cnJlbnQgPSBudWxsO1xuICAgIH1cbiAgfSwgW3RyaWdnZXJSZWYsIHRvb2x0aXBSZWYsIGRvY3VtZW50LCB3aW5kb3csIHBsYWNlbWVudF0pO1xuXG4gIGNvbnN0IGRlYm91bmNlZENhbGN1bGF0ZVN0eWxlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmICghZGVib3VuY2VUaW1lb3V0SWQuY3VycmVudCkge1xuICAgICAgZGVib3VuY2VUaW1lb3V0SWQuY3VycmVudCA9IHNldFRpbWVvdXQoY2FsY3VsYXRlU3R5bGUsIDIwMCk7XG4gICAgfVxuICB9LCBbY2FsY3VsYXRlU3R5bGVdKTtcblxuICAvLyBUaGlzIGxheW91dCBlZmZlY3QgdG8gcmUtcmVuZGVyIHdpdGggdXBkYXRlZCBwb3NpdGlvbiBhZnRlciBkZXRlcm1pbmluZyBjb250ZW50IHdpZHRoXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzVmlzaWJsZSkge1xuICAgICAgY2FsY3VsYXRlU3R5bGUoKTtcbiAgICB9XG4gIH0sIFtpc1Zpc2libGUsIGNhbGN1bGF0ZVN0eWxlLCBjb250ZW50UGFkZGluZywgY29udGVudF0pO1xuXG4gIC8vIFJlLXBvc2l0aW9uIHRvb2x0aXAgaWYgaXQgbW92ZXMgb3V0IG9mIHRoZSB2aWV3cG9ydCBieSAxMCUgYW5kIG9uIHdpbmRvdyByZXNpemVcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBsZXQgb2JzZXJ2ZXI6IEludGVyc2VjdGlvbk9ic2VydmVyO1xuXG4gICAgaWYgKFxuICAgICAgdHlwZW9mIEludGVyc2VjdGlvbk9ic2VydmVyICE9PSBcInVuZGVmaW5lZFwiICYmXG4gICAgICBpc1Zpc2libGUgJiZcbiAgICAgIHRvb2x0aXBSZWYuY3VycmVudFxuICAgICkge1xuICAgICAgb2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoXG4gICAgICAgIChlbnRyaWVzKSA9PiB7XG4gICAgICAgICAgZW50cmllcy5mb3JFYWNoKCgpID0+IHtcbiAgICAgICAgICAgIGNhbGN1bGF0ZVN0eWxlKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0aHJlc2hvbGQ6IDAuOSxcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZSh0b29sdGlwUmVmLmN1cnJlbnQpO1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIiwgZGVib3VuY2VkQ2FsY3VsYXRlU3R5bGUpO1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIiwgZGVib3VuY2VkQ2FsY3VsYXRlU3R5bGUsIHRydWUpOyAvLyB1c2UgY2FwdHVyZSBoZXJlIHRvIGRldGVjdCBzY3JvbGwgb24gYW55IHBhcmVudFxuICAgIH0gZWxzZSBpZiAoIWlzVmlzaWJsZSkge1xuICAgICAgLy8gbG9nIHRpbWUgd2hlbiB0b29sdGlwIGNsb3Nlc1xuICAgICAgbGFzdFRvb2x0aXBIaWRlVGltZXN0YW1wID0gRGF0ZS5ub3coKTtcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKG9ic2VydmVyKSB7XG4gICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgIH1cbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwicmVzaXplXCIsIGRlYm91bmNlZENhbGN1bGF0ZVN0eWxlKTtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwic2Nyb2xsXCIsIGRlYm91bmNlZENhbGN1bGF0ZVN0eWxlKTtcbiAgICAgIGNsZWFyVGltZW91dChkZWJvdW5jZVRpbWVvdXRJZC5jdXJyZW50KTtcbiAgICB9O1xuICB9LCBbaXNWaXNpYmxlLCBjYWxjdWxhdGVTdHlsZSwgZGVib3VuY2VkQ2FsY3VsYXRlU3R5bGUsIHdpbmRvdywgdG9vbHRpcFJlZl0pO1xuXG4gIGxldCBwb3J0YWwgPSBudWxsO1xuXG4gIGlmIChpc1Zpc2libGUpIHtcbiAgICBjb25zdCB0b29sdGlwRWxtID0gKFxuICAgICAgPFN1YlRoZW1lUHJvdmlkZXIgbmFtZT1cImludmVydGVkXCI+XG4gICAgICAgIDxTdHlsZWRDb250YWluZXJcbiAgICAgICAgICBkYXRhLWUyZS10ZXN0LWlkPXtkYXRhRTJlVGVzdElkfVxuICAgICAgICAgIGRhdGEtZHMtaWQ9e2RhdGFEU0lkfVxuICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICB0b3A6IHN0eWxlLnRvcCxcbiAgICAgICAgICAgIGxlZnQ6IHN0eWxlLmxlZnQsXG4gICAgICAgICAgICBhbmltYXRpb25EdXJhdGlvbjogZ2V0QW5pbWF0aW9uRHVyYXRpb24oKSxcbiAgICAgICAgICB9fVxuICAgICAgICAgIHJlZj17dG9vbHRpcFJlZn1cbiAgICAgICAgICBpZD17dG9vbHRpcElkfVxuICAgICAgICAgIHJvbGU9e3JvbGV9XG4gICAgICAgICAgYXJpYS1oaWRkZW49e2FyaWFIaWRkZW59XG4gICAgICAgICAgdGFiSW5kZXg9e3RhYkluZGV4fVxuICAgICAgICAgIGhvcml6b250YWxQbGFjZW1lbnQ9e3N0eWxlLmhvcml6b250YWxQbGFjZW1lbnR9XG4gICAgICAgICAgdmVydGljYWxQbGFjZW1lbnQ9e3N0eWxlLnZlcnRpY2FsUGxhY2VtZW50fVxuICAgICAgICAgIGNvbnRlbnRQYWRkaW5nPXtjb250ZW50UGFkZGluZ31cbiAgICAgICAgICBtYXhXaWR0aD17bWF4V2lkdGh9XG4gICAgICAgICAgb25Qb2ludGVyRW50ZXI9e29uVG9vbHRpcFBvaW50ZXJFbnRlcn1cbiAgICAgICAgICBvblBvaW50ZXJMZWF2ZT17b25Ub29sdGlwUG9pbnRlckxlYXZlfVxuICAgICAgICA+XG4gICAgICAgICAge2NvbnRlbnR9XG4gICAgICAgICAgPFN0eWxlZEFycm93XG4gICAgICAgICAgICBob3Jpem9udGFsUGxhY2VtZW50PXtzdHlsZS5ob3Jpem9udGFsUGxhY2VtZW50fVxuICAgICAgICAgICAgdmVydGljYWxQbGFjZW1lbnQ9e3N0eWxlLnZlcnRpY2FsUGxhY2VtZW50fVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvU3R5bGVkQ29udGFpbmVyPlxuICAgICAgPC9TdWJUaGVtZVByb3ZpZGVyPlxuICAgICk7XG5cbiAgICBwb3J0YWwgPSBjcmVhdGVQb3J0YWwodG9vbHRpcEVsbSwgcG9ydGFsQ29udGFpbmVyIHx8IGRvY3VtZW50LmJvZHkpO1xuICB9XG5cbiAgcmV0dXJuIHBvcnRhbDtcbn1cbiJdfQ== */");
|
|
100
|
+
}, process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRvb2x0aXBDb250ZW50LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUEwSW9CIiwiZmlsZSI6IlRvb2x0aXBDb250ZW50LnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwge1xuICBNdXRhYmxlUmVmT2JqZWN0LFxuICBSZWFjdEVsZW1lbnQsXG4gIHVzZUNhbGxiYWNrLFxuICB1c2VFZmZlY3QsXG4gIHVzZUxheW91dEVmZmVjdCxcbiAgdXNlTWVtbyxcbiAgdXNlUmVmLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWRcIjtcbmltcG9ydCB7IGtleWZyYW1lcyB9IGZyb20gXCJAZW1vdGlvbi9yZWFjdFwiO1xuaW1wb3J0IHsgY3JlYXRlUG9ydGFsIH0gZnJvbSBcInJlYWN0LWRvbVwiO1xuaW1wb3J0IHsgdXNlRG9jdW1lbnQgfSBmcm9tIFwiLi4vLi4vc2hhcmVkL3VzZURvY3VtZW50XCI7XG5pbXBvcnQgeyB1c2VXaW5kb3cgfSBmcm9tIFwiLi4vLi4vc2hhcmVkL3VzZVdpbmRvd1wiO1xuaW1wb3J0IHsgU3ViVGhlbWVQcm92aWRlciB9IGZyb20gXCIuLi9TdWJUaGVtZVByb3ZpZGVyL1N1YlRoZW1lUHJvdmlkZXJcIjtcbmltcG9ydCB6SW5kaWNlcyBmcm9tIFwiLi4vLi4vLi4vYnVpbGQtdG9rZW5zL196aW5kZXguanNvblwiO1xuXG5pbXBvcnQge1xuICBBTklNQVRJT05fRElTVEFOQ0UsXG4gIEFSUk9XX1NJWkUsXG4gIEFSUk9XX1NJWkVfQklHLFxuICBnZXRBcnJvd09mZnNldCxcbiAgZ2V0VG9vbHRpcFN0eWxlLFxufSBmcm9tIFwiLi91dGlsc1wiO1xuaW1wb3J0IHsgQ29udGFpbmVyIH0gZnJvbSBcIi4uL0NvbnRhaW5lci9Db250YWluZXJcIjtcbmltcG9ydCB7IEJvcmRlclJhZGl1cyB9IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuXG5leHBvcnQgdHlwZSBUb29sdGlwQ29udGVudFByb3BzID0ge1xuICBjb250ZW50OiBSZWFjdEVsZW1lbnQ7XG4gIHRyaWdnZXJSZWY6IE11dGFibGVSZWZPYmplY3Q8YW55PjtcbiAgLyogUGxhY2VtZW50ICovXG4gIHBsYWNlbWVudD86XG4gICAgfCBcImF1dG9cIlxuICAgIHwgXCJ0b3BcIlxuICAgIHwgXCJib3R0b21cIlxuICAgIHwgXCJ0b3AtbGVmdFwiXG4gICAgfCBcInRvcC1yaWdodFwiXG4gICAgfCBcImJvdHRvbS1sZWZ0XCJcbiAgICB8IFwiYm90dG9tLXJpZ2h0XCI7XG4gIC8qIEN1c3RvbSBwb3J0YWwgY29udGFpbmVyIHRvIHJlbmRlciB0b29sdGlwIGludG8gKi9cbiAgcG9ydGFsQ29udGFpbmVyPzogSFRNTEVsZW1lbnQ7XG4gIGRhdGFFMmVUZXN0SWQ/OiBzdHJpbmc7XG4gIGRhdGFEU0lkOiBzdHJpbmc7XG4gIGlzVmlzaWJsZT86IGJvb2xlYW47XG4gIHRvb2x0aXBJZD86IHN0cmluZztcbiAgXCJhcmlhLWhpZGRlblwiPzogYm9vbGVhbjtcbiAgcm9sZT86IHN0cmluZztcbiAgdGFiSW5kZXg/OiBudW1iZXI7XG4gIC8vIENvbnRlbnQgcGFkZGluZ1xuICBjb250ZW50UGFkZGluZz86IFwic1wiIHwgXCJtXCI7XG4gIGhhc0ludmVydGVkU3ViVGhlbWU/OiBib29sZWFuO1xuICBtYXhXaWR0aD86IG51bWJlcjtcbiAgZGVmYXVsdFZlcnRpY2FsUGxhY2VtZW50PzogVG9vbHRpcFN0eWxlW1widmVydGljYWxQbGFjZW1lbnRcIl07XG4gIG9uVG9vbHRpcFBvaW50ZXJFbnRlcj86IFJlYWN0LlBvaW50ZXJFdmVudEhhbmRsZXI8SFRNTERpdkVsZW1lbnQ+O1xuICBvblRvb2x0aXBQb2ludGVyTGVhdmU/OiBSZWFjdC5Qb2ludGVyRXZlbnRIYW5kbGVyPEhUTUxEaXZFbGVtZW50PjtcbiAgaGlkZUFycm93PzogYm9vbGVhbjtcbiAgYm9yZGVyUmFkaXVzPzogQm9yZGVyUmFkaXVzO1xufTtcblxuZXhwb3J0IHR5cGUgVG9vbHRpcFN0eWxlID0ge1xuICB0b3A6IG51bWJlcjtcbiAgbGVmdDogbnVtYmVyO1xuICBob3Jpem9udGFsUGxhY2VtZW50OiBcImxlZnRcIiB8IFwicmlnaHRcIiB8IFwiY2VudGVyXCI7XG4gIHZlcnRpY2FsUGxhY2VtZW50OiBcInRvcFwiIHwgXCJib3R0b21cIjtcbn07XG5cbnR5cGUgU3R5bGVkQ29udGFpbmVyUHJvcHMgPSBQaWNrPFxuICBUb29sdGlwQ29udGVudFByb3BzLFxuICBcImNvbnRlbnRQYWRkaW5nXCIgfCBcIm1heFdpZHRoXCIgfCBcImhhc0ludmVydGVkU3ViVGhlbWVcIlxuPiAmIHtcbiAgaG9yaXpvbnRhbFBsYWNlbWVudDogVG9vbHRpcFN0eWxlW1wiaG9yaXpvbnRhbFBsYWNlbWVudFwiXTtcbiAgdmVydGljYWxQbGFjZW1lbnQ6IFRvb2x0aXBTdHlsZVtcInZlcnRpY2FsUGxhY2VtZW50XCJdO1xufTtcblxuY29uc3QgQU5JTUFUSU9OX0RVUkFUSU9OID0gMjAwO1xuY29uc3QgU0hPV19ISURFX0RFTEFZID0gMjAwO1xuY29uc3QgTUFYX0NPTlRFTlRfV0lEVEggPSAyMjQ7XG5cbmNvbnN0IFN0eWxlZENvbnRhaW5lciA9IHN0eWxlZC5kaXY8U3R5bGVkQ29udGFpbmVyUHJvcHM+KFxuICAoe1xuICAgIHRoZW1lLFxuICAgIGhvcml6b250YWxQbGFjZW1lbnQsXG4gICAgdmVydGljYWxQbGFjZW1lbnQsXG4gICAgbWF4V2lkdGgsXG4gICAgY29udGVudFBhZGRpbmcsXG4gICAgaGFzSW52ZXJ0ZWRTdWJUaGVtZSA9IHRydWUsXG4gIH0pID0+IHtcbiAgICBjb25zdCBhbmltYXRpb25EaXN0YW5jZSA9XG4gICAgICB2ZXJ0aWNhbFBsYWNlbWVudCA9PT0gXCJ0b3BcIlxuICAgICAgICA/IGAke0FOSU1BVElPTl9ESVNUQU5DRX1weGBcbiAgICAgICAgOiBgLSR7QU5JTUFUSU9OX0RJU1RBTkNFfXB4YDtcbiAgICBjb25zdCBhbmltYXRpb24gPSBrZXlmcmFtZXMoe1xuICAgICAgdG86IHtcbiAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgdHJhbnNmb3JtOlxuICAgICAgICAgIGhvcml6b250YWxQbGFjZW1lbnQgPT09IFwiY2VudGVyXCJcbiAgICAgICAgICAgID8gYHRyYW5zbGF0ZSgtNTAlLCAke2FuaW1hdGlvbkRpc3RhbmNlfSlgXG4gICAgICAgICAgICA6IGB0cmFuc2xhdGVZKCR7YW5pbWF0aW9uRGlzdGFuY2V9KWAsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgY29uc3QgY29udGVudFBhZGRpbmdNYXAgPSB7XG4gICAgICBzOiB0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLnh4cyxcbiAgICAgIG06IHRoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcucyxcbiAgICB9O1xuXG4gICAgY29uc3QgaW52ZXJ0ZWRTdWJUaGVtZVN0eWxlcyA9IHtcbiAgICAgIHBhZGRpbmc6IGAke3RoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcueHN9ICR7dGhlbWUudmFyaWFibGVzLnNpemUuc3BhY2luZy5zfWAsXG4gICAgICAuLi4oY29udGVudFBhZGRpbmcgJiYge1xuICAgICAgICBwYWRkaW5nOiBjb250ZW50UGFkZGluZ01hcFtjb250ZW50UGFkZGluZ10sXG4gICAgICB9KSxcbiAgICAgIGJvcmRlclJhZGl1czogdGhlbWUudmFyaWFibGVzLnNpemUuYm9yZGVyUmFkaXVzLnhzLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS52YWx1ZXMuY29sb3IuYmFja2dyb3VuZC5wcmltYXJ5LmRlZmF1bHQsXG4gICAgfTtcblxuICAgIHJldHVybiB7XG4gICAgICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICAgICAgekluZGV4OiB6SW5kaWNlcy50b29sdGlwLnZhbHVlLFxuICAgICAgb3BhY2l0eTogMCxcbiAgICAgIGFuaW1hdGlvbjogYCR7QU5JTUFUSU9OX0RVUkFUSU9OfW1zIGVhc2Utb3V0IGZvcndhcmRzICR7YW5pbWF0aW9ufWAsXG4gICAgICBtYXhXaWR0aCxcbiAgICAgIHdpZHRoOiBcImluaXRpYWxcIixcbiAgICAgIGJveFNpemluZzogXCJib3JkZXItYm94XCIsXG4gICAgICAuLi4oaGFzSW52ZXJ0ZWRTdWJUaGVtZSAmJiBpbnZlcnRlZFN1YlRoZW1lU3R5bGVzKSxcbiAgICAgIC4uLihob3Jpem9udGFsUGxhY2VtZW50ID09PSBcImNlbnRlclwiICYmIHtcbiAgICAgICAgdHJhbnNmb3JtOiBcInRyYW5zbGF0ZSgtNTAlKVwiLFxuICAgICAgfSksXG4gICAgfTtcbiAgfVxuKTtcblxudHlwZSBTdHlsZWRBcnJvd1Byb3BzID0ge1xuICB2ZXJ0aWNhbFBsYWNlbWVudDogVG9vbHRpcFN0eWxlW1widmVydGljYWxQbGFjZW1lbnRcIl07XG4gIGhvcml6b250YWxQbGFjZW1lbnQ6IFRvb2x0aXBTdHlsZVtcImhvcml6b250YWxQbGFjZW1lbnRcIl07XG4gIHNpemU/OiAwIHwgdHlwZW9mIEFSUk9XX1NJWkUgfCB0eXBlb2YgQVJST1dfU0laRV9CSUc7XG59O1xuXG5jb25zdCBTdHlsZWRBcnJvdyA9IHN0eWxlZC5kaXY8U3R5bGVkQXJyb3dQcm9wcz4oXG4gICh7IHRoZW1lLCB2ZXJ0aWNhbFBsYWNlbWVudCwgaG9yaXpvbnRhbFBsYWNlbWVudCwgc2l6ZSA9IEFSUk9XX1NJWkUgfSkgPT4ge1xuICAgIGNvbnN0IG9mZnNldCA9IGdldEFycm93T2Zmc2V0KHNpemUpO1xuICAgIHJldHVybiB7XG4gICAgICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICAgICAgd2lkdGg6IDAsXG4gICAgICBoZWlnaHQ6IDAsXG4gICAgICBib3JkZXJMZWZ0OiBgJHtzaXplfXB4IHNvbGlkIHRyYW5zcGFyZW50YCxcbiAgICAgIGJvcmRlclJpZ2h0OiBgJHtzaXplfXB4IHNvbGlkIHRyYW5zcGFyZW50YCxcblxuICAgICAgLi4uKHZlcnRpY2FsUGxhY2VtZW50ID09PSBcInRvcFwiICYmIHtcbiAgICAgICAgdG9wOiBcIjEwMCVcIixcbiAgICAgICAgYm9yZGVyVG9wOiBgJHtzaXplfXB4IHNvbGlkICR7dGhlbWUudmFsdWVzLmNvbG9yLmJhY2tncm91bmQucHJpbWFyeS5kZWZhdWx0fWAsXG4gICAgICB9KSxcblxuICAgICAgLi4uKHZlcnRpY2FsUGxhY2VtZW50ID09PSBcImJvdHRvbVwiICYmIHtcbiAgICAgICAgdG9wOiBgLSR7c2l6ZX1weGAsXG4gICAgICAgIGJvcmRlckJvdHRvbTogYCR7c2l6ZX1weCBzb2xpZCAke3RoZW1lLnZhbHVlcy5jb2xvci5iYWNrZ3JvdW5kLnByaW1hcnkuZGVmYXVsdH1gLFxuICAgICAgfSksXG5cbiAgICAgIC4uLihob3Jpem9udGFsUGxhY2VtZW50ID09PSBcImNlbnRlclwiICYmIHtcbiAgICAgICAgbGVmdDogXCI1MCVcIixcbiAgICAgICAgdHJhbnNmb3JtOiBcInRyYW5zbGF0ZSgtNTAlKVwiLFxuICAgICAgfSksXG5cbiAgICAgIC4uLihob3Jpem9udGFsUGxhY2VtZW50ID09PSBcInJpZ2h0XCIgJiYge1xuICAgICAgICBsZWZ0OiBgJHtvZmZzZXR9cHhgLFxuICAgICAgfSksXG5cbiAgICAgIC4uLihob3Jpem9udGFsUGxhY2VtZW50ID09PSBcImxlZnRcIiAmJiB7XG4gICAgICAgIHJpZ2h0OiBgJHtvZmZzZXR9cHhgLFxuICAgICAgfSksXG4gICAgfTtcbiAgfVxuKTtcblxuY29uc3QgaW5pdGlhbFN0eWxlOiBUb29sdGlwU3R5bGUgPSB7XG4gIHRvcDogMCxcbiAgbGVmdDogMCxcbiAgdmVydGljYWxQbGFjZW1lbnQ6IFwidG9wXCIsXG4gIGhvcml6b250YWxQbGFjZW1lbnQ6IFwiY2VudGVyXCIsXG59O1xuXG5sZXQgbGFzdFRvb2x0aXBIaWRlVGltZXN0YW1wID0gMDtcblxuLyogRGlzYWJsZSBhbmltYXRpb24gaWYgdGltZSBiZXR3ZWVuIGxhc3QgY2xvc2UgYW5kIG5ldyBvcGVuIGlzIGxlc3MgdGhhbiA1MDBtcyArIFNIT1dfSElERV9ERUxBWSAqL1xuZnVuY3Rpb24gZ2V0QW5pbWF0aW9uRHVyYXRpb24oKSB7XG4gIGxldCBhbmltYXRpb25EdXJhdGlvbiA9IGAke0FOSU1BVElPTl9EVVJBVElPTn1tc2A7XG5cbiAgaWYgKGxhc3RUb29sdGlwSGlkZVRpbWVzdGFtcCkge1xuICAgIGNvbnN0IHRpbWVTaW5jZUxhc3RUb29sdGlwID0gRGF0ZS5ub3coKSAtIGxhc3RUb29sdGlwSGlkZVRpbWVzdGFtcDtcblxuICAgIGlmICh0aW1lU2luY2VMYXN0VG9vbHRpcCA8IDUwMCArIFNIT1dfSElERV9ERUxBWSkge1xuICAgICAgYW5pbWF0aW9uRHVyYXRpb24gPSBcIjBtc1wiO1xuICAgIH1cbiAgfVxuICByZXR1cm4gYW5pbWF0aW9uRHVyYXRpb247XG59XG5cbi8qKiBUaGlzIGNvbXBvbmVudCBpcyB1c2VkIHRvIGRpc3BsYXkgdGhlIG92ZXJsYXkgZm9yIGJvdGggVG9nZ2xldGlwIGFuZCBUb29sdGlwIGNvbXBvbmVudHMgKi9cbmV4cG9ydCBmdW5jdGlvbiBUb29sdGlwQ29udGVudCh7XG4gIHBsYWNlbWVudCA9IFwiYXV0b1wiLFxuICBjb250ZW50LFxuICB0b29sdGlwSWQsXG4gIHRyaWdnZXJSZWYsXG4gIHBvcnRhbENvbnRhaW5lcixcbiAgZGF0YUUyZVRlc3RJZCxcbiAgZGF0YURTSWQsXG4gIGlzVmlzaWJsZSxcbiAgXCJhcmlhLWhpZGRlblwiOiBhcmlhSGlkZGVuLFxuICByb2xlLFxuICB0YWJJbmRleCxcbiAgY29udGVudFBhZGRpbmcsXG4gIG1heFdpZHRoID0gTUFYX0NPTlRFTlRfV0lEVEgsXG4gIGhhc0ludmVydGVkU3ViVGhlbWUgPSB0cnVlLFxuICBkZWZhdWx0VmVydGljYWxQbGFjZW1lbnQsXG4gIG9uVG9vbHRpcFBvaW50ZXJFbnRlcixcbiAgb25Ub29sdGlwUG9pbnRlckxlYXZlLFxuICBoaWRlQXJyb3cgPSBmYWxzZSxcbiAgYm9yZGVyUmFkaXVzID0gXCJ4c1wiLFxufTogVG9vbHRpcENvbnRlbnRQcm9wcyk6IFJlYWN0LlJlYWN0RWxlbWVudCB7XG4gIGNvbnN0IFtzdHlsZSwgc2V0U3R5bGVdID0gdXNlU3RhdGUoaW5pdGlhbFN0eWxlKTtcbiAgY29uc3QgdG9vbHRpcFJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgZG9jdW1lbnQgPSB1c2VEb2N1bWVudCgpO1xuICBjb25zdCB3aW5kb3cgPSB1c2VXaW5kb3coKTtcbiAgY29uc3QgZGVib3VuY2VUaW1lb3V0SWQgPSB1c2VSZWYobnVsbCk7XG5cbiAgY29uc3QgYXJyb3dTaXplID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKGhpZGVBcnJvdykge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIHJldHVybiBoYXNJbnZlcnRlZFN1YlRoZW1lID8gQVJST1dfU0laRSA6IEFSUk9XX1NJWkVfQklHO1xuICB9LCBbaGFzSW52ZXJ0ZWRTdWJUaGVtZSwgaGlkZUFycm93XSk7XG5cbiAgY29uc3QgY2FsY3VsYXRlU3R5bGUgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKHRyaWdnZXJSZWYuY3VycmVudCAmJiB0b29sdGlwUmVmLmN1cnJlbnQpIHtcbiAgICAgIC8vIGNhbGN1bGF0ZSB0b29sdGlwIHN0eWxlXG4gICAgICBzZXRTdHlsZShcbiAgICAgICAgZ2V0VG9vbHRpcFN0eWxlKFxuICAgICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgICBkZWZhdWx0VmVydGljYWxQbGFjZW1lbnQsXG4gICAgICAgICAgdHJpZ2dlclJlZixcbiAgICAgICAgICB0b29sdGlwUmVmLFxuICAgICAgICAgIGRvY3VtZW50LFxuICAgICAgICAgIHdpbmRvdyxcbiAgICAgICAgICBhcnJvd1NpemVcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIGRlYm91bmNlVGltZW91dElkLmN1cnJlbnQgPSBudWxsO1xuICAgIH1cbiAgfSwgW1xuICAgIHRyaWdnZXJSZWYsXG4gICAgdG9vbHRpcFJlZixcbiAgICBkb2N1bWVudCxcbiAgICB3aW5kb3csXG4gICAgcGxhY2VtZW50LFxuICAgIGFycm93U2l6ZSxcbiAgICBkZWZhdWx0VmVydGljYWxQbGFjZW1lbnQsXG4gIF0pO1xuXG4gIGNvbnN0IGRlYm91bmNlZENhbGN1bGF0ZVN0eWxlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmICghZGVib3VuY2VUaW1lb3V0SWQuY3VycmVudCkge1xuICAgICAgZGVib3VuY2VUaW1lb3V0SWQuY3VycmVudCA9IHNldFRpbWVvdXQoY2FsY3VsYXRlU3R5bGUsIDIwMCk7XG4gICAgfVxuICB9LCBbY2FsY3VsYXRlU3R5bGVdKTtcblxuICAvLyBUaGlzIGxheW91dCBlZmZlY3QgdG8gcmUtcmVuZGVyIHdpdGggdXBkYXRlZCBwb3NpdGlvbiBhZnRlciBkZXRlcm1pbmluZyBjb250ZW50IHdpZHRoXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzVmlzaWJsZSkge1xuICAgICAgY2FsY3VsYXRlU3R5bGUoKTtcbiAgICB9XG4gIH0sIFtpc1Zpc2libGUsIGNhbGN1bGF0ZVN0eWxlLCBjb250ZW50UGFkZGluZywgY29udGVudF0pO1xuXG4gIC8vIFJlLXBvc2l0aW9uIHRvb2x0aXAgaWYgaXQgbW92ZXMgb3V0IG9mIHRoZSB2aWV3cG9ydCBieSAxMCUgYW5kIG9uIHdpbmRvdyByZXNpemVcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBsZXQgb2JzZXJ2ZXI6IEludGVyc2VjdGlvbk9ic2VydmVyO1xuXG4gICAgaWYgKFxuICAgICAgdHlwZW9mIEludGVyc2VjdGlvbk9ic2VydmVyICE9PSBcInVuZGVmaW5lZFwiICYmXG4gICAgICBpc1Zpc2libGUgJiZcbiAgICAgIHRvb2x0aXBSZWYuY3VycmVudFxuICAgICkge1xuICAgICAgb2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoXG4gICAgICAgIChlbnRyaWVzKSA9PiB7XG4gICAgICAgICAgZW50cmllcy5mb3JFYWNoKCgpID0+IHtcbiAgICAgICAgICAgIGNhbGN1bGF0ZVN0eWxlKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0aHJlc2hvbGQ6IDAuOSxcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZSh0b29sdGlwUmVmLmN1cnJlbnQpO1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIiwgZGVib3VuY2VkQ2FsY3VsYXRlU3R5bGUpO1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIiwgZGVib3VuY2VkQ2FsY3VsYXRlU3R5bGUsIHRydWUpOyAvLyB1c2UgY2FwdHVyZSBoZXJlIHRvIGRldGVjdCBzY3JvbGwgb24gYW55IHBhcmVudFxuICAgIH0gZWxzZSBpZiAoIWlzVmlzaWJsZSkge1xuICAgICAgLy8gbG9nIHRpbWUgd2hlbiB0b29sdGlwIGNsb3Nlc1xuICAgICAgbGFzdFRvb2x0aXBIaWRlVGltZXN0YW1wID0gRGF0ZS5ub3coKTtcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKG9ic2VydmVyKSB7XG4gICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgIH1cbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwicmVzaXplXCIsIGRlYm91bmNlZENhbGN1bGF0ZVN0eWxlKTtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwic2Nyb2xsXCIsIGRlYm91bmNlZENhbGN1bGF0ZVN0eWxlKTtcbiAgICAgIGNsZWFyVGltZW91dChkZWJvdW5jZVRpbWVvdXRJZC5jdXJyZW50KTtcbiAgICB9O1xuICB9LCBbaXNWaXNpYmxlLCBjYWxjdWxhdGVTdHlsZSwgZGVib3VuY2VkQ2FsY3VsYXRlU3R5bGUsIHdpbmRvdywgdG9vbHRpcFJlZl0pO1xuXG4gIGxldCBwb3J0YWwgPSBudWxsO1xuXG4gIGNvbnN0IE91dGVyV3JhcHBlciA9IHVzZU1lbW8oXG4gICAgKCkgPT5cbiAgICAgICh7IGNoaWxkcmVuIH06IHsgY2hpbGRyZW46IFJlYWN0RWxlbWVudCB9KSA9PlxuICAgICAgICBoYXNJbnZlcnRlZFN1YlRoZW1lID8gKFxuICAgICAgICAgIDxTdWJUaGVtZVByb3ZpZGVyIG5hbWU9XCJpbnZlcnRlZFwiPntjaGlsZHJlbn08L1N1YlRoZW1lUHJvdmlkZXI+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPD57Y2hpbGRyZW59PC8+XG4gICAgICAgICksXG4gICAgW2hhc0ludmVydGVkU3ViVGhlbWVdXG4gICk7XG5cbiAgaWYgKGlzVmlzaWJsZSkge1xuICAgIGNvbnN0IHRvb2x0aXBFbG0gPSAoXG4gICAgICA8T3V0ZXJXcmFwcGVyPlxuICAgICAgICA8U3R5bGVkQ29udGFpbmVyXG4gICAgICAgICAgZGF0YS1lMmUtdGVzdC1pZD17ZGF0YUUyZVRlc3RJZH1cbiAgICAgICAgICBkYXRhLWRzLWlkPXtkYXRhRFNJZH1cbiAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgdG9wOiBzdHlsZS50b3AsXG4gICAgICAgICAgICBsZWZ0OiBzdHlsZS5sZWZ0LFxuICAgICAgICAgICAgYW5pbWF0aW9uRHVyYXRpb246IGdldEFuaW1hdGlvbkR1cmF0aW9uKCksXG4gICAgICAgICAgfX1cbiAgICAgICAgICByZWY9e3Rvb2x0aXBSZWZ9XG4gICAgICAgICAgaWQ9e3Rvb2x0aXBJZH1cbiAgICAgICAgICByb2xlPXtyb2xlfVxuICAgICAgICAgIGFyaWEtaGlkZGVuPXthcmlhSGlkZGVufVxuICAgICAgICAgIGhhc0ludmVydGVkU3ViVGhlbWU9e2hhc0ludmVydGVkU3ViVGhlbWV9XG4gICAgICAgICAgdGFiSW5kZXg9e3RhYkluZGV4fVxuICAgICAgICAgIGhvcml6b250YWxQbGFjZW1lbnQ9e3N0eWxlLmhvcml6b250YWxQbGFjZW1lbnR9XG4gICAgICAgICAgdmVydGljYWxQbGFjZW1lbnQ9e3N0eWxlLnZlcnRpY2FsUGxhY2VtZW50fVxuICAgICAgICAgIG1heFdpZHRoPXttYXhXaWR0aH1cbiAgICAgICAgICBjb250ZW50UGFkZGluZz17Y29udGVudFBhZGRpbmd9XG4gICAgICAgICAgb25Qb2ludGVyRW50ZXI9e29uVG9vbHRpcFBvaW50ZXJFbnRlcn1cbiAgICAgICAgICBvblBvaW50ZXJMZWF2ZT17b25Ub29sdGlwUG9pbnRlckxlYXZlfVxuICAgICAgICA+XG4gICAgICAgICAge2hhc0ludmVydGVkU3ViVGhlbWUgPyAoXG4gICAgICAgICAgICBjb250ZW50XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxDb250YWluZXIgZWxldmF0aW9uPXszfSBib3JkZXJSYWRpdXM9e2JvcmRlclJhZGl1c30+XG4gICAgICAgICAgICAgIHtjb250ZW50fVxuICAgICAgICAgICAgPC9Db250YWluZXI+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7IWhpZGVBcnJvdyAmJiAoXG4gICAgICAgICAgICA8U3R5bGVkQXJyb3dcbiAgICAgICAgICAgICAgZGF0YS1lMmUtdGVzdC1pZD17YCR7ZGF0YUUyZVRlc3RJZH1fYXJyb3dgfVxuICAgICAgICAgICAgICBob3Jpem9udGFsUGxhY2VtZW50PXtzdHlsZS5ob3Jpem9udGFsUGxhY2VtZW50fVxuICAgICAgICAgICAgICB2ZXJ0aWNhbFBsYWNlbWVudD17c3R5bGUudmVydGljYWxQbGFjZW1lbnR9XG4gICAgICAgICAgICAgIHNpemU9e2Fycm93U2l6ZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9TdHlsZWRDb250YWluZXI+XG4gICAgICA8L091dGVyV3JhcHBlcj5cbiAgICApO1xuXG4gICAgcG9ydGFsID0gY3JlYXRlUG9ydGFsKHRvb2x0aXBFbG0sIHBvcnRhbENvbnRhaW5lciB8fCBkb2N1bWVudC5ib2R5KTtcbiAgfVxuXG4gIHJldHVybiBwb3J0YWw7XG59XG4iXX0= */");
|
|
94
101
|
const initialStyle = {
|
|
95
102
|
top: 0,
|
|
96
103
|
left: 0,
|
|
@@ -127,21 +134,31 @@ function TooltipContent(_ref3) {
|
|
|
127
134
|
tabIndex,
|
|
128
135
|
contentPadding,
|
|
129
136
|
maxWidth = MAX_CONTENT_WIDTH,
|
|
137
|
+
hasInvertedSubTheme = true,
|
|
138
|
+
defaultVerticalPlacement,
|
|
130
139
|
onTooltipPointerEnter,
|
|
131
|
-
onTooltipPointerLeave
|
|
140
|
+
onTooltipPointerLeave,
|
|
141
|
+
hideArrow = false,
|
|
142
|
+
borderRadius = "xs"
|
|
132
143
|
} = _ref3;
|
|
133
144
|
const [style, setStyle] = useState(initialStyle);
|
|
134
145
|
const tooltipRef = useRef(null);
|
|
135
146
|
const document = useDocument();
|
|
136
147
|
const window = useWindow();
|
|
137
148
|
const debounceTimeoutId = useRef(null);
|
|
149
|
+
const arrowSize = useMemo(() => {
|
|
150
|
+
if (hideArrow) {
|
|
151
|
+
return 0;
|
|
152
|
+
}
|
|
153
|
+
return hasInvertedSubTheme ? ARROW_SIZE : ARROW_SIZE_BIG;
|
|
154
|
+
}, [hasInvertedSubTheme, hideArrow]);
|
|
138
155
|
const calculateStyle = useCallback(() => {
|
|
139
156
|
if (triggerRef.current && tooltipRef.current) {
|
|
140
157
|
// calculate tooltip style
|
|
141
|
-
setStyle(getTooltipStyle(placement, triggerRef, tooltipRef, document, window));
|
|
158
|
+
setStyle(getTooltipStyle(placement, defaultVerticalPlacement, triggerRef, tooltipRef, document, window, arrowSize));
|
|
142
159
|
debounceTimeoutId.current = null;
|
|
143
160
|
}
|
|
144
|
-
}, [triggerRef, tooltipRef, document, window, placement]);
|
|
161
|
+
}, [triggerRef, tooltipRef, document, window, placement, arrowSize, defaultVerticalPlacement]);
|
|
145
162
|
const debouncedCalculateStyle = useCallback(() => {
|
|
146
163
|
if (!debounceTimeoutId.current) {
|
|
147
164
|
debounceTimeoutId.current = setTimeout(calculateStyle, 200);
|
|
@@ -183,10 +200,16 @@ function TooltipContent(_ref3) {
|
|
|
183
200
|
};
|
|
184
201
|
}, [isVisible, calculateStyle, debouncedCalculateStyle, window, tooltipRef]);
|
|
185
202
|
let portal = null;
|
|
186
|
-
|
|
187
|
-
|
|
203
|
+
const OuterWrapper = useMemo(() => _ref4 => {
|
|
204
|
+
let {
|
|
205
|
+
children
|
|
206
|
+
} = _ref4;
|
|
207
|
+
return hasInvertedSubTheme ? /*#__PURE__*/React.createElement(SubThemeProvider, {
|
|
188
208
|
name: "inverted"
|
|
189
|
-
}, /*#__PURE__*/React.createElement(
|
|
209
|
+
}, children) : /*#__PURE__*/React.createElement(React.Fragment, null, children);
|
|
210
|
+
}, [hasInvertedSubTheme]);
|
|
211
|
+
if (isVisible) {
|
|
212
|
+
const tooltipElm = /*#__PURE__*/React.createElement(OuterWrapper, null, /*#__PURE__*/React.createElement(StyledContainer, {
|
|
190
213
|
"data-e2e-test-id": dataE2eTestId,
|
|
191
214
|
"data-ds-id": dataDSId,
|
|
192
215
|
style: {
|
|
@@ -198,16 +221,22 @@ function TooltipContent(_ref3) {
|
|
|
198
221
|
id: tooltipId,
|
|
199
222
|
role: role,
|
|
200
223
|
"aria-hidden": ariaHidden,
|
|
224
|
+
hasInvertedSubTheme: hasInvertedSubTheme,
|
|
201
225
|
tabIndex: tabIndex,
|
|
202
226
|
horizontalPlacement: style.horizontalPlacement,
|
|
203
227
|
verticalPlacement: style.verticalPlacement,
|
|
204
|
-
contentPadding: contentPadding,
|
|
205
228
|
maxWidth: maxWidth,
|
|
229
|
+
contentPadding: contentPadding,
|
|
206
230
|
onPointerEnter: onTooltipPointerEnter,
|
|
207
231
|
onPointerLeave: onTooltipPointerLeave
|
|
208
|
-
}, content
|
|
232
|
+
}, hasInvertedSubTheme ? content : /*#__PURE__*/React.createElement(Container, {
|
|
233
|
+
elevation: 3,
|
|
234
|
+
borderRadius: borderRadius
|
|
235
|
+
}, content), !hideArrow && /*#__PURE__*/React.createElement(StyledArrow, {
|
|
236
|
+
"data-e2e-test-id": `${dataE2eTestId}_arrow`,
|
|
209
237
|
horizontalPlacement: style.horizontalPlacement,
|
|
210
|
-
verticalPlacement: style.verticalPlacement
|
|
238
|
+
verticalPlacement: style.verticalPlacement,
|
|
239
|
+
size: arrowSize
|
|
211
240
|
})));
|
|
212
241
|
portal = /*#__PURE__*/createPortal(tooltipElm, portalContainer || document.body);
|
|
213
242
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TooltipContent.js","sources":["../../../../../src/components/Tooltip/TooltipContent.tsx"],"sourcesContent":["import React, {\n useState,\n useRef,\n useLayoutEffect,\n useEffect,\n MutableRefObject,\n ReactElement,\n useCallback,\n} from \"react\";\nimport styled from \"@emotion/styled\";\nimport { keyframes } from \"@emotion/react\";\nimport { createPortal } from \"react-dom\";\nimport { useDocument } from \"../../shared/useDocument\";\nimport { useWindow } from \"../../shared/useWindow\";\nimport { SubThemeProvider } from \"../SubThemeProvider/SubThemeProvider\";\nimport zIndices from \"../../../build-tokens/_zindex.json\";\n\nimport {\n ARROW_SIZE,\n ARROW_OFFSET,\n ANIMATION_DISTANCE,\n getTooltipStyle,\n} from \"./utils\";\n\nexport type TooltipContentProps = {\n content: ReactElement;\n triggerRef: MutableRefObject<any>;\n /* Placement */\n placement?:\n | \"auto\"\n | \"top\"\n | \"bottom\"\n | \"top-left\"\n | \"top-right\"\n | \"bottom-left\"\n | \"bottom-right\";\n /* Custom portal container to render tooltip into */\n portalContainer?: HTMLElement;\n dataE2eTestId?: string;\n dataDSId: string;\n isVisible?: boolean;\n tooltipId?: string;\n \"aria-hidden\"?: boolean;\n role?: string;\n tabIndex?: number;\n // Content padding\n contentPadding?: \"s\" | \"m\";\n maxWidth?: number;\n onTooltipPointerEnter?: React.PointerEventHandler<HTMLDivElement>;\n onTooltipPointerLeave?: React.PointerEventHandler<HTMLDivElement>;\n};\n\nexport type TooltipStyle = {\n top: number;\n left: number;\n horizontalPlacement: \"left\" | \"right\" | \"center\";\n verticalPlacement: \"top\" | \"bottom\";\n};\n\ntype StyledContainerProps = Pick<\n TooltipContentProps,\n \"contentPadding\" | \"maxWidth\"\n> & {\n horizontalPlacement: TooltipStyle[\"horizontalPlacement\"];\n verticalPlacement: TooltipStyle[\"verticalPlacement\"];\n};\n\nconst ANIMATION_DURATION = 200;\nconst SHOW_HIDE_DELAY = 200;\nconst MAX_CONTENT_WIDTH = 224;\n\nconst StyledContainer = styled.div<StyledContainerProps>(\n ({\n theme,\n horizontalPlacement,\n verticalPlacement,\n contentPadding,\n maxWidth,\n }) => {\n const animationDistance =\n verticalPlacement === \"top\"\n ? `${ANIMATION_DISTANCE}px`\n : `-${ANIMATION_DISTANCE}px`;\n const animation = keyframes({\n to: {\n opacity: 1,\n transform:\n horizontalPlacement === \"center\"\n ? `translate(-50%, ${animationDistance})`\n : `translateY(${animationDistance})`,\n },\n });\n\n const contentPaddingMap = {\n s: theme.variables.size.spacing.xxs,\n m: theme.variables.size.spacing.s,\n };\n\n return {\n position: \"absolute\",\n zIndex: zIndices.tooltip.value,\n opacity: 0,\n animation: `${ANIMATION_DURATION}ms ease-out forwards ${animation}`,\n borderRadius: theme.variables.size.borderRadius.xs,\n backgroundColor: theme.values.color.background.primary.default,\n maxWidth,\n width: \"initial\",\n boxSizing: \"border-box\",\n padding: `${theme.variables.size.spacing.xs} ${theme.variables.size.spacing.s}`,\n\n ...(contentPadding && {\n padding: contentPaddingMap[contentPadding],\n }),\n ...(horizontalPlacement === \"center\" && {\n transform: \"translate(-50%)\",\n }),\n };\n }\n);\n\ntype StyledArrowProps = {\n verticalPlacement: TooltipStyle[\"verticalPlacement\"];\n horizontalPlacement: TooltipStyle[\"horizontalPlacement\"];\n};\n\nconst StyledArrow = styled.div<StyledArrowProps>(\n ({ theme, verticalPlacement, horizontalPlacement }) => ({\n position: \"absolute\",\n width: 0,\n height: 0,\n borderLeft: `${ARROW_SIZE}px solid transparent`,\n borderRight: `${ARROW_SIZE}px solid transparent`,\n\n ...(verticalPlacement === \"top\" && {\n top: \"100%\",\n borderTop: `${ARROW_SIZE}px solid ${theme.values.color.background.primary.default}`,\n }),\n\n ...(verticalPlacement === \"bottom\" && {\n top: `-${ARROW_SIZE}px`,\n borderBottom: `${ARROW_SIZE}px solid ${theme.values.color.background.primary.default}`,\n }),\n\n ...(horizontalPlacement === \"center\" && {\n left: \"50%\",\n transform: \"translate(-50%)\",\n }),\n\n ...(horizontalPlacement === \"right\" && {\n left: `${ARROW_OFFSET}px`,\n }),\n\n ...(horizontalPlacement === \"left\" && {\n right: `${ARROW_OFFSET}px`,\n }),\n })\n);\n\nconst initialStyle: TooltipStyle = {\n top: 0,\n left: 0,\n verticalPlacement: \"top\",\n horizontalPlacement: \"center\",\n};\n\nlet lastTooltipHideTimestamp = 0;\n\n/* Disable animation if time between last close and new open is less than 500ms + SHOW_HIDE_DELAY */\nfunction getAnimationDuration() {\n let animationDuration = `${ANIMATION_DURATION}ms`;\n\n if (lastTooltipHideTimestamp) {\n const timeSinceLastTooltip = Date.now() - lastTooltipHideTimestamp;\n\n if (timeSinceLastTooltip < 500 + SHOW_HIDE_DELAY) {\n animationDuration = \"0ms\";\n }\n }\n return animationDuration;\n}\n\n/** This component is used to display the overlay for both Toggletip and Tooltip components */\nexport function TooltipContent({\n placement = \"auto\",\n content,\n tooltipId,\n triggerRef,\n portalContainer,\n dataE2eTestId,\n dataDSId,\n isVisible,\n \"aria-hidden\": ariaHidden,\n role,\n tabIndex,\n contentPadding,\n maxWidth = MAX_CONTENT_WIDTH,\n onTooltipPointerEnter,\n onTooltipPointerLeave,\n}: TooltipContentProps): React.ReactElement {\n const [style, setStyle] = useState(initialStyle);\n const tooltipRef = useRef(null);\n const document = useDocument();\n const window = useWindow();\n const debounceTimeoutId = useRef(null);\n\n const calculateStyle = useCallback(() => {\n if (triggerRef.current && tooltipRef.current) {\n // calculate tooltip style\n setStyle(\n getTooltipStyle(placement, triggerRef, tooltipRef, document, window)\n );\n debounceTimeoutId.current = null;\n }\n }, [triggerRef, tooltipRef, document, window, placement]);\n\n const debouncedCalculateStyle = useCallback(() => {\n if (!debounceTimeoutId.current) {\n debounceTimeoutId.current = setTimeout(calculateStyle, 200);\n }\n }, [calculateStyle]);\n\n // This layout effect to re-render with updated position after determining content width\n useLayoutEffect(() => {\n if (isVisible) {\n calculateStyle();\n }\n }, [isVisible, calculateStyle, contentPadding, content]);\n\n // Re-position tooltip if it moves out of the viewport by 10% and on window resize\n useEffect(() => {\n let observer: IntersectionObserver;\n\n if (\n typeof IntersectionObserver !== \"undefined\" &&\n isVisible &&\n tooltipRef.current\n ) {\n observer = new IntersectionObserver(\n (entries) => {\n entries.forEach(() => {\n calculateStyle();\n });\n },\n {\n threshold: 0.9,\n }\n );\n\n observer.observe(tooltipRef.current);\n window.addEventListener(\"resize\", debouncedCalculateStyle);\n window.addEventListener(\"scroll\", debouncedCalculateStyle, true); // use capture here to detect scroll on any parent\n } else if (!isVisible) {\n // log time when tooltip closes\n lastTooltipHideTimestamp = Date.now();\n }\n\n return () => {\n if (observer) {\n observer.disconnect();\n }\n window.removeEventListener(\"resize\", debouncedCalculateStyle);\n window.removeEventListener(\"scroll\", debouncedCalculateStyle);\n clearTimeout(debounceTimeoutId.current);\n };\n }, [isVisible, calculateStyle, debouncedCalculateStyle, window, tooltipRef]);\n\n let portal = null;\n\n if (isVisible) {\n const tooltipElm = (\n <SubThemeProvider name=\"inverted\">\n <StyledContainer\n data-e2e-test-id={dataE2eTestId}\n data-ds-id={dataDSId}\n style={{\n top: style.top,\n left: style.left,\n animationDuration: getAnimationDuration(),\n }}\n ref={tooltipRef}\n id={tooltipId}\n role={role}\n aria-hidden={ariaHidden}\n tabIndex={tabIndex}\n horizontalPlacement={style.horizontalPlacement}\n verticalPlacement={style.verticalPlacement}\n contentPadding={contentPadding}\n maxWidth={maxWidth}\n onPointerEnter={onTooltipPointerEnter}\n onPointerLeave={onTooltipPointerLeave}\n >\n {content}\n <StyledArrow\n horizontalPlacement={style.horizontalPlacement}\n verticalPlacement={style.verticalPlacement}\n />\n </StyledContainer>\n </SubThemeProvider>\n );\n\n portal = createPortal(tooltipElm, portalContainer || document.body);\n }\n\n return portal;\n}\n"],"names":["ANIMATION_DURATION","SHOW_HIDE_DELAY","MAX_CONTENT_WIDTH","StyledContainer","_styled","process","env","NODE_ENV","target","label","_ref","theme","horizontalPlacement","verticalPlacement","contentPadding","maxWidth","animationDistance","ANIMATION_DISTANCE","animation","keyframes","to","opacity","transform","contentPaddingMap","s","variables","size","spacing","xxs","m","position","zIndex","zIndices","tooltip","value","borderRadius","xs","backgroundColor","values","color","background","primary","default","width","boxSizing","padding","StyledArrow","_ref2","height","borderLeft","ARROW_SIZE","borderRight","top","borderTop","borderBottom","left","ARROW_OFFSET","right","initialStyle","lastTooltipHideTimestamp","getAnimationDuration","animationDuration","timeSinceLastTooltip","Date","now","TooltipContent","_ref3","placement","content","tooltipId","triggerRef","portalContainer","dataE2eTestId","dataDSId","isVisible","ariaHidden","role","tabIndex","onTooltipPointerEnter","onTooltipPointerLeave","style","setStyle","useState","tooltipRef","useRef","document","useDocument","window","useWindow","debounceTimeoutId","calculateStyle","useCallback","current","getTooltipStyle","debouncedCalculateStyle","setTimeout","useLayoutEffect","useEffect","observer","IntersectionObserver","entries","forEach","threshold","observe","addEventListener","disconnect","removeEventListener","clearTimeout","portal","tooltipElm","React","createElement","SubThemeProvider","name","ref","id","onPointerEnter","onPointerLeave","createPortal","body"],"mappings":";;;;;;;;;;AAmEA,MAAMA,kBAAkB,GAAG,GAAG,CAAA;AAC9B,MAAMC,eAAe,GAAG,GAAG,CAAA;AAC3B,MAAMC,iBAAiB,GAAG,GAAG,CAAA;AAE7B,MAAMC,eAAe,gBAAGC,OAAA,CAAA,KAAA,EAAAC,OAAA,CAAAC,GAAA,CAAAC,QAAA,KAAA,YAAA,GAAA;EAAAC,MAAA,EAAA,WAAA;AAAA,CAAA,GAAA;EAAAA,MAAA,EAAA,WAAA;EAAAC,KAAA,EAAA,iBAAA;AAAA,CAAA,CAAA,CACtBC,IAAA,IAMM;EAAA,IANL;IACCC,KAAK;IACLC,mBAAmB;IACnBC,iBAAiB;IACjBC,cAAc;AACdC,IAAAA,QAAAA;AACF,GAAC,GAAAL,IAAA,CAAA;AACC,EAAA,MAAMM,iBAAiB,GACrBH,iBAAiB,KAAK,KAAK,GACtB,CAAEI,EAAAA,kBAAmB,CAAG,EAAA,CAAA,GACxB,CAAGA,CAAAA,EAAAA,kBAAmB,CAAG,EAAA,CAAA,CAAA;EAChC,MAAMC,SAAS,GAAGC,SAAS,CAAC;AAC1BC,IAAAA,EAAE,EAAE;AACFC,MAAAA,OAAO,EAAE,CAAC;MACVC,SAAS,EACPV,mBAAmB,KAAK,QAAQ,GAC3B,mBAAkBI,iBAAkB,CAAA,CAAA,CAAE,GACtC,CAAA,WAAA,EAAaA,iBAAkB,CAAA,CAAA,CAAA;AACxC,KAAA;AACF,GAAC,CAAC,CAAA;AAEF,EAAA,MAAMO,iBAAiB,GAAG;IACxBC,CAAC,EAAEb,KAAK,CAACc,SAAS,CAACC,IAAI,CAACC,OAAO,CAACC,GAAG;IACnCC,CAAC,EAAElB,KAAK,CAACc,SAAS,CAACC,IAAI,CAACC,OAAO,CAACH,CAAAA;GACjC,CAAA;EAED,OAAO;AACLM,IAAAA,QAAQ,EAAE,UAAU;AACpBC,IAAAA,MAAM,EAAEC,QAAQ,CAACC,OAAO,CAACC,KAAK;AAC9Bb,IAAAA,OAAO,EAAE,CAAC;AACVH,IAAAA,SAAS,EAAG,CAAA,EAAElB,kBAAmB,CAAA,qBAAA,EAAuBkB,SAAU,CAAC,CAAA;IACnEiB,YAAY,EAAExB,KAAK,CAACc,SAAS,CAACC,IAAI,CAACS,YAAY,CAACC,EAAE;IAClDC,eAAe,EAAE1B,KAAK,CAAC2B,MAAM,CAACC,KAAK,CAACC,UAAU,CAACC,OAAO,CAACC,OAAO;IAC9D3B,QAAQ;AACR4B,IAAAA,KAAK,EAAE,SAAS;AAChBC,IAAAA,SAAS,EAAE,YAAY;IACvBC,OAAO,EAAG,GAAElC,KAAK,CAACc,SAAS,CAACC,IAAI,CAACC,OAAO,CAACS,EAAG,CAAGzB,CAAAA,EAAAA,KAAK,CAACc,SAAS,CAACC,IAAI,CAACC,OAAO,CAACH,CAAE,CAAC,CAAA;AAE/E,IAAA,IAAIV,cAAc,IAAI;MACpB+B,OAAO,EAAEtB,iBAAiB,CAACT,cAAc,CAAA;AAC3C,KAAC,CAAC;IACF,IAAIF,mBAAmB,KAAK,QAAQ,IAAI;AACtCU,MAAAA,SAAS,EAAE,iBAAA;KACZ,CAAA;GACF,CAAA;AACH,CAAC,EAAAjB,OAAA,CAAAC,GAAA,CAAAC,QAAA,8xXACH,CAAC,CAAA;AAOD,MAAMuC,WAAW,gBAAG1C,OAAA,CAAA,KAAA,EAAAC,OAAA,CAAAC,GAAA,CAAAC,QAAA,KAAA,YAAA,GAAA;EAAAC,MAAA,EAAA,WAAA;AAAA,CAAA,GAAA;EAAAA,MAAA,EAAA,WAAA;EAAAC,KAAA,EAAA,aAAA;AAAA,CAAA,CAAA,CAClBsC,KAAA,IAAA;EAAA,IAAC;IAAEpC,KAAK;IAAEE,iBAAiB;AAAED,IAAAA,mBAAAA;AAAoB,GAAC,GAAAmC,KAAA,CAAA;EAAA,OAAM;AACtDjB,IAAAA,QAAQ,EAAE,UAAU;AACpBa,IAAAA,KAAK,EAAE,CAAC;AACRK,IAAAA,MAAM,EAAE,CAAC;IACTC,UAAU,EAAG,CAAEC,EAAAA,UAAW,CAAqB,oBAAA,CAAA;IAC/CC,WAAW,EAAG,CAAED,EAAAA,UAAW,CAAqB,oBAAA,CAAA;IAEhD,IAAIrC,iBAAiB,KAAK,KAAK,IAAI;AACjCuC,MAAAA,GAAG,EAAE,MAAM;AACXC,MAAAA,SAAS,EAAG,CAAA,EAAEH,UAAW,CAAA,SAAA,EAAWvC,KAAK,CAAC2B,MAAM,CAACC,KAAK,CAACC,UAAU,CAACC,OAAO,CAACC,OAAQ,CAAA,CAAA;AACpF,KAAC,CAAC;IAEF,IAAI7B,iBAAiB,KAAK,QAAQ,IAAI;MACpCuC,GAAG,EAAG,CAAGF,CAAAA,EAAAA,UAAW,CAAG,EAAA,CAAA;AACvBI,MAAAA,YAAY,EAAG,CAAA,EAAEJ,UAAW,CAAA,SAAA,EAAWvC,KAAK,CAAC2B,MAAM,CAACC,KAAK,CAACC,UAAU,CAACC,OAAO,CAACC,OAAQ,CAAA,CAAA;AACvF,KAAC,CAAC;IAEF,IAAI9B,mBAAmB,KAAK,QAAQ,IAAI;AACtC2C,MAAAA,IAAI,EAAE,KAAK;AACXjC,MAAAA,SAAS,EAAE,iBAAA;AACb,KAAC,CAAC;IAEF,IAAIV,mBAAmB,KAAK,OAAO,IAAI;MACrC2C,IAAI,EAAG,GAAEC,YAAa,CAAA,EAAA,CAAA;AACxB,KAAC,CAAC;IAEF,IAAI5C,mBAAmB,KAAK,MAAM,IAAI;MACpC6C,KAAK,EAAG,GAAED,YAAa,CAAA,EAAA,CAAA;KACxB,CAAA;GACF,CAAA;AAAA,CAAC,EAAAnD,OAAA,CAAAC,GAAA,CAAAC,QAAA,8xXACJ,CAAC,CAAA;AAED,MAAMmD,YAA0B,GAAG;AACjCN,EAAAA,GAAG,EAAE,CAAC;AACNG,EAAAA,IAAI,EAAE,CAAC;AACP1C,EAAAA,iBAAiB,EAAE,KAAK;AACxBD,EAAAA,mBAAmB,EAAE,QAAA;AACvB,CAAC,CAAA;AAED,IAAI+C,wBAAwB,GAAG,CAAC,CAAA;;AAEhC;AACA,SAASC,oBAAoBA,GAAG;AAC9B,EAAA,IAAIC,iBAAiB,GAAI,CAAE7D,EAAAA,kBAAmB,CAAG,EAAA,CAAA,CAAA;AAEjD,EAAA,IAAI2D,wBAAwB,EAAE;IAC5B,MAAMG,oBAAoB,GAAGC,IAAI,CAACC,GAAG,EAAE,GAAGL,wBAAwB,CAAA;AAElE,IAAA,IAAIG,oBAAoB,GAAG,GAAG,GAAG7D,eAAe,EAAE;AAChD4D,MAAAA,iBAAiB,GAAG,KAAK,CAAA;AAC3B,KAAA;AACF,GAAA;AACA,EAAA,OAAOA,iBAAiB,CAAA;AAC1B,CAAA;;AAEA;AACO,SAASI,cAAcA,CAAAC,KAAA,EAgBc;EAAA,IAhBb;AAC7BC,IAAAA,SAAS,GAAG,MAAM;IAClBC,OAAO;IACPC,SAAS;IACTC,UAAU;IACVC,eAAe;IACfC,aAAa;IACbC,QAAQ;IACRC,SAAS;AACT,IAAA,aAAa,EAAEC,UAAU;IACzBC,IAAI;IACJC,QAAQ;IACR/D,cAAc;AACdC,IAAAA,QAAQ,GAAGb,iBAAiB;IAC5B4E,qBAAqB;AACrBC,IAAAA,qBAAAA;AACmB,GAAC,GAAAb,KAAA,CAAA;EACpB,MAAM,CAACc,KAAK,EAAEC,QAAQ,CAAC,GAAGC,QAAQ,CAACxB,YAAY,CAAC,CAAA;AAChD,EAAA,MAAMyB,UAAU,GAAGC,MAAM,CAAC,IAAI,CAAC,CAAA;AAC/B,EAAA,MAAMC,QAAQ,GAAGC,WAAW,EAAE,CAAA;AAC9B,EAAA,MAAMC,MAAM,GAAGC,SAAS,EAAE,CAAA;AAC1B,EAAA,MAAMC,iBAAiB,GAAGL,MAAM,CAAC,IAAI,CAAC,CAAA;AAEtC,EAAA,MAAMM,cAAc,GAAGC,WAAW,CAAC,MAAM;AACvC,IAAA,IAAIrB,UAAU,CAACsB,OAAO,IAAIT,UAAU,CAACS,OAAO,EAAE;AAC5C;AACAX,MAAAA,QAAQ,CACNY,eAAe,CAAC1B,SAAS,EAAEG,UAAU,EAAEa,UAAU,EAAEE,QAAQ,EAAEE,MAAM,CACrE,CAAC,CAAA;MACDE,iBAAiB,CAACG,OAAO,GAAG,IAAI,CAAA;AAClC,KAAA;AACF,GAAC,EAAE,CAACtB,UAAU,EAAEa,UAAU,EAAEE,QAAQ,EAAEE,MAAM,EAAEpB,SAAS,CAAC,CAAC,CAAA;AAEzD,EAAA,MAAM2B,uBAAuB,GAAGH,WAAW,CAAC,MAAM;AAChD,IAAA,IAAI,CAACF,iBAAiB,CAACG,OAAO,EAAE;MAC9BH,iBAAiB,CAACG,OAAO,GAAGG,UAAU,CAACL,cAAc,EAAE,GAAG,CAAC,CAAA;AAC7D,KAAA;AACF,GAAC,EAAE,CAACA,cAAc,CAAC,CAAC,CAAA;;AAEpB;AACAM,EAAAA,eAAe,CAAC,MAAM;AACpB,IAAA,IAAItB,SAAS,EAAE;AACbgB,MAAAA,cAAc,EAAE,CAAA;AAClB,KAAA;GACD,EAAE,CAAChB,SAAS,EAAEgB,cAAc,EAAE5E,cAAc,EAAEsD,OAAO,CAAC,CAAC,CAAA;;AAExD;AACA6B,EAAAA,SAAS,CAAC,MAAM;AACd,IAAA,IAAIC,QAA8B,CAAA;IAElC,IACE,OAAOC,oBAAoB,KAAK,WAAW,IAC3CzB,SAAS,IACTS,UAAU,CAACS,OAAO,EAClB;AACAM,MAAAA,QAAQ,GAAG,IAAIC,oBAAoB,CAChCC,OAAO,IAAK;QACXA,OAAO,CAACC,OAAO,CAAC,MAAM;AACpBX,UAAAA,cAAc,EAAE,CAAA;AAClB,SAAC,CAAC,CAAA;AACJ,OAAC,EACD;AACEY,QAAAA,SAAS,EAAE,GAAA;AACb,OACF,CAAC,CAAA;AAEDJ,MAAAA,QAAQ,CAACK,OAAO,CAACpB,UAAU,CAACS,OAAO,CAAC,CAAA;AACpCL,MAAAA,MAAM,CAACiB,gBAAgB,CAAC,QAAQ,EAAEV,uBAAuB,CAAC,CAAA;MAC1DP,MAAM,CAACiB,gBAAgB,CAAC,QAAQ,EAAEV,uBAAuB,EAAE,IAAI,CAAC,CAAC;AACnE,KAAC,MAAM,IAAI,CAACpB,SAAS,EAAE;AACrB;AACAf,MAAAA,wBAAwB,GAAGI,IAAI,CAACC,GAAG,EAAE,CAAA;AACvC,KAAA;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,IAAIkC,QAAQ,EAAE;QACZA,QAAQ,CAACO,UAAU,EAAE,CAAA;AACvB,OAAA;AACAlB,MAAAA,MAAM,CAACmB,mBAAmB,CAAC,QAAQ,EAAEZ,uBAAuB,CAAC,CAAA;AAC7DP,MAAAA,MAAM,CAACmB,mBAAmB,CAAC,QAAQ,EAAEZ,uBAAuB,CAAC,CAAA;AAC7Da,MAAAA,YAAY,CAAClB,iBAAiB,CAACG,OAAO,CAAC,CAAA;KACxC,CAAA;AACH,GAAC,EAAE,CAAClB,SAAS,EAAEgB,cAAc,EAAEI,uBAAuB,EAAEP,MAAM,EAAEJ,UAAU,CAAC,CAAC,CAAA;EAE5E,IAAIyB,MAAM,GAAG,IAAI,CAAA;AAEjB,EAAA,IAAIlC,SAAS,EAAE;AACb,IAAA,MAAMmC,UAAU,gBACdC,KAAA,CAAAC,aAAA,CAACC,gBAAgB,EAAA;AAACC,MAAAA,IAAI,EAAC,UAAA;AAAU,KAAA,eAC/BH,KAAA,CAAAC,aAAA,CAAC5G,eAAe,EAAA;AACd,MAAA,kBAAA,EAAkBqE,aAAc;AAChC,MAAA,YAAA,EAAYC,QAAS;AACrBO,MAAAA,KAAK,EAAE;QACL5B,GAAG,EAAE4B,KAAK,CAAC5B,GAAG;QACdG,IAAI,EAAEyB,KAAK,CAACzB,IAAI;QAChBM,iBAAiB,EAAED,oBAAoB,EAAC;OACxC;AACFsD,MAAAA,GAAG,EAAE/B,UAAW;AAChBgC,MAAAA,EAAE,EAAE9C,SAAU;AACdO,MAAAA,IAAI,EAAEA,IAAK;AACX,MAAA,aAAA,EAAaD,UAAW;AACxBE,MAAAA,QAAQ,EAAEA,QAAS;MACnBjE,mBAAmB,EAAEoE,KAAK,CAACpE,mBAAoB;MAC/CC,iBAAiB,EAAEmE,KAAK,CAACnE,iBAAkB;AAC3CC,MAAAA,cAAc,EAAEA,cAAe;AAC/BC,MAAAA,QAAQ,EAAEA,QAAS;AACnBqG,MAAAA,cAAc,EAAEtC,qBAAsB;AACtCuC,MAAAA,cAAc,EAAEtC,qBAAAA;AAAsB,KAAA,EAErCX,OAAO,eACR0C,KAAA,CAAAC,aAAA,CAACjE,WAAW,EAAA;MACVlC,mBAAmB,EAAEoE,KAAK,CAACpE,mBAAoB;MAC/CC,iBAAiB,EAAEmE,KAAK,CAACnE,iBAAAA;KAC1B,CACc,CACD,CACnB,CAAA;IAED+F,MAAM,gBAAGU,YAAY,CAACT,UAAU,EAAEtC,eAAe,IAAIc,QAAQ,CAACkC,IAAI,CAAC,CAAA;AACrE,GAAA;AAEA,EAAA,OAAOX,MAAM,CAAA;AACf;;;;"}
|
|
1
|
+
{"version":3,"file":"TooltipContent.js","sources":["../../../../../src/components/Tooltip/TooltipContent.tsx"],"sourcesContent":["import React, {\n MutableRefObject,\n ReactElement,\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport styled from \"@emotion/styled\";\nimport { keyframes } from \"@emotion/react\";\nimport { createPortal } from \"react-dom\";\nimport { useDocument } from \"../../shared/useDocument\";\nimport { useWindow } from \"../../shared/useWindow\";\nimport { SubThemeProvider } from \"../SubThemeProvider/SubThemeProvider\";\nimport zIndices from \"../../../build-tokens/_zindex.json\";\n\nimport {\n ANIMATION_DISTANCE,\n ARROW_SIZE,\n ARROW_SIZE_BIG,\n getArrowOffset,\n getTooltipStyle,\n} from \"./utils\";\nimport { Container } from \"../Container/Container\";\nimport { BorderRadius } from \"../../types\";\n\nexport type TooltipContentProps = {\n content: ReactElement;\n triggerRef: MutableRefObject<any>;\n /* Placement */\n placement?:\n | \"auto\"\n | \"top\"\n | \"bottom\"\n | \"top-left\"\n | \"top-right\"\n | \"bottom-left\"\n | \"bottom-right\";\n /* Custom portal container to render tooltip into */\n portalContainer?: HTMLElement;\n dataE2eTestId?: string;\n dataDSId: string;\n isVisible?: boolean;\n tooltipId?: string;\n \"aria-hidden\"?: boolean;\n role?: string;\n tabIndex?: number;\n // Content padding\n contentPadding?: \"s\" | \"m\";\n hasInvertedSubTheme?: boolean;\n maxWidth?: number;\n defaultVerticalPlacement?: TooltipStyle[\"verticalPlacement\"];\n onTooltipPointerEnter?: React.PointerEventHandler<HTMLDivElement>;\n onTooltipPointerLeave?: React.PointerEventHandler<HTMLDivElement>;\n hideArrow?: boolean;\n borderRadius?: BorderRadius;\n};\n\nexport type TooltipStyle = {\n top: number;\n left: number;\n horizontalPlacement: \"left\" | \"right\" | \"center\";\n verticalPlacement: \"top\" | \"bottom\";\n};\n\ntype StyledContainerProps = Pick<\n TooltipContentProps,\n \"contentPadding\" | \"maxWidth\" | \"hasInvertedSubTheme\"\n> & {\n horizontalPlacement: TooltipStyle[\"horizontalPlacement\"];\n verticalPlacement: TooltipStyle[\"verticalPlacement\"];\n};\n\nconst ANIMATION_DURATION = 200;\nconst SHOW_HIDE_DELAY = 200;\nconst MAX_CONTENT_WIDTH = 224;\n\nconst StyledContainer = styled.div<StyledContainerProps>(\n ({\n theme,\n horizontalPlacement,\n verticalPlacement,\n maxWidth,\n contentPadding,\n hasInvertedSubTheme = true,\n }) => {\n const animationDistance =\n verticalPlacement === \"top\"\n ? `${ANIMATION_DISTANCE}px`\n : `-${ANIMATION_DISTANCE}px`;\n const animation = keyframes({\n to: {\n opacity: 1,\n transform:\n horizontalPlacement === \"center\"\n ? `translate(-50%, ${animationDistance})`\n : `translateY(${animationDistance})`,\n },\n });\n\n const contentPaddingMap = {\n s: theme.variables.size.spacing.xxs,\n m: theme.variables.size.spacing.s,\n };\n\n const invertedSubThemeStyles = {\n padding: `${theme.variables.size.spacing.xs} ${theme.variables.size.spacing.s}`,\n ...(contentPadding && {\n padding: contentPaddingMap[contentPadding],\n }),\n borderRadius: theme.variables.size.borderRadius.xs,\n backgroundColor: theme.values.color.background.primary.default,\n };\n\n return {\n position: \"absolute\",\n zIndex: zIndices.tooltip.value,\n opacity: 0,\n animation: `${ANIMATION_DURATION}ms ease-out forwards ${animation}`,\n maxWidth,\n width: \"initial\",\n boxSizing: \"border-box\",\n ...(hasInvertedSubTheme && invertedSubThemeStyles),\n ...(horizontalPlacement === \"center\" && {\n transform: \"translate(-50%)\",\n }),\n };\n }\n);\n\ntype StyledArrowProps = {\n verticalPlacement: TooltipStyle[\"verticalPlacement\"];\n horizontalPlacement: TooltipStyle[\"horizontalPlacement\"];\n size?: 0 | typeof ARROW_SIZE | typeof ARROW_SIZE_BIG;\n};\n\nconst StyledArrow = styled.div<StyledArrowProps>(\n ({ theme, verticalPlacement, horizontalPlacement, size = ARROW_SIZE }) => {\n const offset = getArrowOffset(size);\n return {\n position: \"absolute\",\n width: 0,\n height: 0,\n borderLeft: `${size}px solid transparent`,\n borderRight: `${size}px solid transparent`,\n\n ...(verticalPlacement === \"top\" && {\n top: \"100%\",\n borderTop: `${size}px solid ${theme.values.color.background.primary.default}`,\n }),\n\n ...(verticalPlacement === \"bottom\" && {\n top: `-${size}px`,\n borderBottom: `${size}px solid ${theme.values.color.background.primary.default}`,\n }),\n\n ...(horizontalPlacement === \"center\" && {\n left: \"50%\",\n transform: \"translate(-50%)\",\n }),\n\n ...(horizontalPlacement === \"right\" && {\n left: `${offset}px`,\n }),\n\n ...(horizontalPlacement === \"left\" && {\n right: `${offset}px`,\n }),\n };\n }\n);\n\nconst initialStyle: TooltipStyle = {\n top: 0,\n left: 0,\n verticalPlacement: \"top\",\n horizontalPlacement: \"center\",\n};\n\nlet lastTooltipHideTimestamp = 0;\n\n/* Disable animation if time between last close and new open is less than 500ms + SHOW_HIDE_DELAY */\nfunction getAnimationDuration() {\n let animationDuration = `${ANIMATION_DURATION}ms`;\n\n if (lastTooltipHideTimestamp) {\n const timeSinceLastTooltip = Date.now() - lastTooltipHideTimestamp;\n\n if (timeSinceLastTooltip < 500 + SHOW_HIDE_DELAY) {\n animationDuration = \"0ms\";\n }\n }\n return animationDuration;\n}\n\n/** This component is used to display the overlay for both Toggletip and Tooltip components */\nexport function TooltipContent({\n placement = \"auto\",\n content,\n tooltipId,\n triggerRef,\n portalContainer,\n dataE2eTestId,\n dataDSId,\n isVisible,\n \"aria-hidden\": ariaHidden,\n role,\n tabIndex,\n contentPadding,\n maxWidth = MAX_CONTENT_WIDTH,\n hasInvertedSubTheme = true,\n defaultVerticalPlacement,\n onTooltipPointerEnter,\n onTooltipPointerLeave,\n hideArrow = false,\n borderRadius = \"xs\",\n}: TooltipContentProps): React.ReactElement {\n const [style, setStyle] = useState(initialStyle);\n const tooltipRef = useRef(null);\n const document = useDocument();\n const window = useWindow();\n const debounceTimeoutId = useRef(null);\n\n const arrowSize = useMemo(() => {\n if (hideArrow) {\n return 0;\n }\n return hasInvertedSubTheme ? ARROW_SIZE : ARROW_SIZE_BIG;\n }, [hasInvertedSubTheme, hideArrow]);\n\n const calculateStyle = useCallback(() => {\n if (triggerRef.current && tooltipRef.current) {\n // calculate tooltip style\n setStyle(\n getTooltipStyle(\n placement,\n defaultVerticalPlacement,\n triggerRef,\n tooltipRef,\n document,\n window,\n arrowSize\n )\n );\n debounceTimeoutId.current = null;\n }\n }, [\n triggerRef,\n tooltipRef,\n document,\n window,\n placement,\n arrowSize,\n defaultVerticalPlacement,\n ]);\n\n const debouncedCalculateStyle = useCallback(() => {\n if (!debounceTimeoutId.current) {\n debounceTimeoutId.current = setTimeout(calculateStyle, 200);\n }\n }, [calculateStyle]);\n\n // This layout effect to re-render with updated position after determining content width\n useLayoutEffect(() => {\n if (isVisible) {\n calculateStyle();\n }\n }, [isVisible, calculateStyle, contentPadding, content]);\n\n // Re-position tooltip if it moves out of the viewport by 10% and on window resize\n useEffect(() => {\n let observer: IntersectionObserver;\n\n if (\n typeof IntersectionObserver !== \"undefined\" &&\n isVisible &&\n tooltipRef.current\n ) {\n observer = new IntersectionObserver(\n (entries) => {\n entries.forEach(() => {\n calculateStyle();\n });\n },\n {\n threshold: 0.9,\n }\n );\n\n observer.observe(tooltipRef.current);\n window.addEventListener(\"resize\", debouncedCalculateStyle);\n window.addEventListener(\"scroll\", debouncedCalculateStyle, true); // use capture here to detect scroll on any parent\n } else if (!isVisible) {\n // log time when tooltip closes\n lastTooltipHideTimestamp = Date.now();\n }\n\n return () => {\n if (observer) {\n observer.disconnect();\n }\n window.removeEventListener(\"resize\", debouncedCalculateStyle);\n window.removeEventListener(\"scroll\", debouncedCalculateStyle);\n clearTimeout(debounceTimeoutId.current);\n };\n }, [isVisible, calculateStyle, debouncedCalculateStyle, window, tooltipRef]);\n\n let portal = null;\n\n const OuterWrapper = useMemo(\n () =>\n ({ children }: { children: ReactElement }) =>\n hasInvertedSubTheme ? (\n <SubThemeProvider name=\"inverted\">{children}</SubThemeProvider>\n ) : (\n <>{children}</>\n ),\n [hasInvertedSubTheme]\n );\n\n if (isVisible) {\n const tooltipElm = (\n <OuterWrapper>\n <StyledContainer\n data-e2e-test-id={dataE2eTestId}\n data-ds-id={dataDSId}\n style={{\n top: style.top,\n left: style.left,\n animationDuration: getAnimationDuration(),\n }}\n ref={tooltipRef}\n id={tooltipId}\n role={role}\n aria-hidden={ariaHidden}\n hasInvertedSubTheme={hasInvertedSubTheme}\n tabIndex={tabIndex}\n horizontalPlacement={style.horizontalPlacement}\n verticalPlacement={style.verticalPlacement}\n maxWidth={maxWidth}\n contentPadding={contentPadding}\n onPointerEnter={onTooltipPointerEnter}\n onPointerLeave={onTooltipPointerLeave}\n >\n {hasInvertedSubTheme ? (\n content\n ) : (\n <Container elevation={3} borderRadius={borderRadius}>\n {content}\n </Container>\n )}\n {!hideArrow && (\n <StyledArrow\n data-e2e-test-id={`${dataE2eTestId}_arrow`}\n horizontalPlacement={style.horizontalPlacement}\n verticalPlacement={style.verticalPlacement}\n size={arrowSize}\n />\n )}\n </StyledContainer>\n </OuterWrapper>\n );\n\n portal = createPortal(tooltipElm, portalContainer || document.body);\n }\n\n return portal;\n}\n"],"names":["ANIMATION_DURATION","SHOW_HIDE_DELAY","MAX_CONTENT_WIDTH","StyledContainer","_styled","process","env","NODE_ENV","target","label","_ref","theme","horizontalPlacement","verticalPlacement","maxWidth","contentPadding","hasInvertedSubTheme","animationDistance","ANIMATION_DISTANCE","animation","keyframes","to","opacity","transform","contentPaddingMap","s","variables","size","spacing","xxs","m","invertedSubThemeStyles","padding","xs","borderRadius","backgroundColor","values","color","background","primary","default","position","zIndex","zIndices","tooltip","value","width","boxSizing","StyledArrow","_ref2","ARROW_SIZE","offset","getArrowOffset","height","borderLeft","borderRight","top","borderTop","borderBottom","left","right","initialStyle","lastTooltipHideTimestamp","getAnimationDuration","animationDuration","timeSinceLastTooltip","Date","now","TooltipContent","_ref3","placement","content","tooltipId","triggerRef","portalContainer","dataE2eTestId","dataDSId","isVisible","ariaHidden","role","tabIndex","defaultVerticalPlacement","onTooltipPointerEnter","onTooltipPointerLeave","hideArrow","style","setStyle","useState","tooltipRef","useRef","document","useDocument","window","useWindow","debounceTimeoutId","arrowSize","useMemo","ARROW_SIZE_BIG","calculateStyle","useCallback","current","getTooltipStyle","debouncedCalculateStyle","setTimeout","useLayoutEffect","useEffect","observer","IntersectionObserver","entries","forEach","threshold","observe","addEventListener","disconnect","removeEventListener","clearTimeout","portal","OuterWrapper","_ref4","children","React","createElement","SubThemeProvider","name","Fragment","tooltipElm","ref","id","onPointerEnter","onPointerLeave","Container","elevation","createPortal","body"],"mappings":";;;;;;;;;;;AA2EA,MAAMA,kBAAkB,GAAG,GAAG,CAAA;AAC9B,MAAMC,eAAe,GAAG,GAAG,CAAA;AAC3B,MAAMC,iBAAiB,GAAG,GAAG,CAAA;AAE7B,MAAMC,eAAe,gBAAGC,OAAA,CAAA,KAAA,EAAAC,OAAA,CAAAC,GAAA,CAAAC,QAAA,KAAA,YAAA,GAAA;EAAAC,MAAA,EAAA,WAAA;AAAA,CAAA,GAAA;EAAAA,MAAA,EAAA,WAAA;EAAAC,KAAA,EAAA,iBAAA;AAAA,CAAA,CAAA,CACtBC,IAAA,IAOM;EAAA,IAPL;IACCC,KAAK;IACLC,mBAAmB;IACnBC,iBAAiB;IACjBC,QAAQ;IACRC,cAAc;AACdC,IAAAA,mBAAmB,GAAG,IAAA;AACxB,GAAC,GAAAN,IAAA,CAAA;AACC,EAAA,MAAMO,iBAAiB,GACrBJ,iBAAiB,KAAK,KAAK,GACtB,CAAEK,EAAAA,kBAAmB,CAAG,EAAA,CAAA,GACxB,CAAGA,CAAAA,EAAAA,kBAAmB,CAAG,EAAA,CAAA,CAAA;EAChC,MAAMC,SAAS,GAAGC,SAAS,CAAC;AAC1BC,IAAAA,EAAE,EAAE;AACFC,MAAAA,OAAO,EAAE,CAAC;MACVC,SAAS,EACPX,mBAAmB,KAAK,QAAQ,GAC3B,mBAAkBK,iBAAkB,CAAA,CAAA,CAAE,GACtC,CAAA,WAAA,EAAaA,iBAAkB,CAAA,CAAA,CAAA;AACxC,KAAA;AACF,GAAC,CAAC,CAAA;AAEF,EAAA,MAAMO,iBAAiB,GAAG;IACxBC,CAAC,EAAEd,KAAK,CAACe,SAAS,CAACC,IAAI,CAACC,OAAO,CAACC,GAAG;IACnCC,CAAC,EAAEnB,KAAK,CAACe,SAAS,CAACC,IAAI,CAACC,OAAO,CAACH,CAAAA;GACjC,CAAA;AAED,EAAA,MAAMM,sBAAsB,GAAG;IAC7BC,OAAO,EAAG,GAAErB,KAAK,CAACe,SAAS,CAACC,IAAI,CAACC,OAAO,CAACK,EAAG,CAAGtB,CAAAA,EAAAA,KAAK,CAACe,SAAS,CAACC,IAAI,CAACC,OAAO,CAACH,CAAE,CAAC,CAAA;AAC/E,IAAA,IAAIV,cAAc,IAAI;MACpBiB,OAAO,EAAER,iBAAiB,CAACT,cAAc,CAAA;AAC3C,KAAC,CAAC;IACFmB,YAAY,EAAEvB,KAAK,CAACe,SAAS,CAACC,IAAI,CAACO,YAAY,CAACD,EAAE;IAClDE,eAAe,EAAExB,KAAK,CAACyB,MAAM,CAACC,KAAK,CAACC,UAAU,CAACC,OAAO,CAACC,OAAAA;GACxD,CAAA;EAED,OAAO;AACLC,IAAAA,QAAQ,EAAE,UAAU;AACpBC,IAAAA,MAAM,EAAEC,QAAQ,CAACC,OAAO,CAACC,KAAK;AAC9BvB,IAAAA,OAAO,EAAE,CAAC;AACVH,IAAAA,SAAS,EAAG,CAAA,EAAEnB,kBAAmB,CAAA,qBAAA,EAAuBmB,SAAU,CAAC,CAAA;IACnEL,QAAQ;AACRgC,IAAAA,KAAK,EAAE,SAAS;AAChBC,IAAAA,SAAS,EAAE,YAAY;IACvB,IAAI/B,mBAAmB,IAAIe,sBAAsB,CAAC;IAClD,IAAInB,mBAAmB,KAAK,QAAQ,IAAI;AACtCW,MAAAA,SAAS,EAAE,iBAAA;KACZ,CAAA;GACF,CAAA;AACH,CAAC,EAAAlB,OAAA,CAAAC,GAAA,CAAAC,QAAA,sjcACH,CAAC,CAAA;AAQD,MAAMyC,WAAW,gBAAG5C,OAAA,CAAA,KAAA,EAAAC,OAAA,CAAAC,GAAA,CAAAC,QAAA,KAAA,YAAA,GAAA;EAAAC,MAAA,EAAA,WAAA;AAAA,CAAA,GAAA;EAAAA,MAAA,EAAA,WAAA;EAAAC,KAAA,EAAA,aAAA;AAAA,CAAA,CAAA,CAClBwC,KAAA,IAA0E;EAAA,IAAzE;IAAEtC,KAAK;IAAEE,iBAAiB;IAAED,mBAAmB;AAAEe,IAAAA,IAAI,GAAGuB,UAAAA;AAAW,GAAC,GAAAD,KAAA,CAAA;AACnE,EAAA,MAAME,MAAM,GAAGC,cAAc,CAACzB,IAAI,CAAC,CAAA;EACnC,OAAO;AACLc,IAAAA,QAAQ,EAAE,UAAU;AACpBK,IAAAA,KAAK,EAAE,CAAC;AACRO,IAAAA,MAAM,EAAE,CAAC;IACTC,UAAU,EAAG,CAAE3B,EAAAA,IAAK,CAAqB,oBAAA,CAAA;IACzC4B,WAAW,EAAG,CAAE5B,EAAAA,IAAK,CAAqB,oBAAA,CAAA;IAE1C,IAAId,iBAAiB,KAAK,KAAK,IAAI;AACjC2C,MAAAA,GAAG,EAAE,MAAM;AACXC,MAAAA,SAAS,EAAG,CAAA,EAAE9B,IAAK,CAAA,SAAA,EAAWhB,KAAK,CAACyB,MAAM,CAACC,KAAK,CAACC,UAAU,CAACC,OAAO,CAACC,OAAQ,CAAA,CAAA;AAC9E,KAAC,CAAC;IAEF,IAAI3B,iBAAiB,KAAK,QAAQ,IAAI;MACpC2C,GAAG,EAAG,CAAG7B,CAAAA,EAAAA,IAAK,CAAG,EAAA,CAAA;AACjB+B,MAAAA,YAAY,EAAG,CAAA,EAAE/B,IAAK,CAAA,SAAA,EAAWhB,KAAK,CAACyB,MAAM,CAACC,KAAK,CAACC,UAAU,CAACC,OAAO,CAACC,OAAQ,CAAA,CAAA;AACjF,KAAC,CAAC;IAEF,IAAI5B,mBAAmB,KAAK,QAAQ,IAAI;AACtC+C,MAAAA,IAAI,EAAE,KAAK;AACXpC,MAAAA,SAAS,EAAE,iBAAA;AACb,KAAC,CAAC;IAEF,IAAIX,mBAAmB,KAAK,OAAO,IAAI;MACrC+C,IAAI,EAAG,GAAER,MAAO,CAAA,EAAA,CAAA;AAClB,KAAC,CAAC;IAEF,IAAIvC,mBAAmB,KAAK,MAAM,IAAI;MACpCgD,KAAK,EAAG,GAAET,MAAO,CAAA,EAAA,CAAA;KAClB,CAAA;GACF,CAAA;AACH,CAAC,EAAA9C,OAAA,CAAAC,GAAA,CAAAC,QAAA,sjcACH,CAAC,CAAA;AAED,MAAMsD,YAA0B,GAAG;AACjCL,EAAAA,GAAG,EAAE,CAAC;AACNG,EAAAA,IAAI,EAAE,CAAC;AACP9C,EAAAA,iBAAiB,EAAE,KAAK;AACxBD,EAAAA,mBAAmB,EAAE,QAAA;AACvB,CAAC,CAAA;AAED,IAAIkD,wBAAwB,GAAG,CAAC,CAAA;;AAEhC;AACA,SAASC,oBAAoBA,GAAG;AAC9B,EAAA,IAAIC,iBAAiB,GAAI,CAAEhE,EAAAA,kBAAmB,CAAG,EAAA,CAAA,CAAA;AAEjD,EAAA,IAAI8D,wBAAwB,EAAE;IAC5B,MAAMG,oBAAoB,GAAGC,IAAI,CAACC,GAAG,EAAE,GAAGL,wBAAwB,CAAA;AAElE,IAAA,IAAIG,oBAAoB,GAAG,GAAG,GAAGhE,eAAe,EAAE;AAChD+D,MAAAA,iBAAiB,GAAG,KAAK,CAAA;AAC3B,KAAA;AACF,GAAA;AACA,EAAA,OAAOA,iBAAiB,CAAA;AAC1B,CAAA;;AAEA;AACO,SAASI,cAAcA,CAAAC,KAAA,EAoBc;EAAA,IApBb;AAC7BC,IAAAA,SAAS,GAAG,MAAM;IAClBC,OAAO;IACPC,SAAS;IACTC,UAAU;IACVC,eAAe;IACfC,aAAa;IACbC,QAAQ;IACRC,SAAS;AACT,IAAA,aAAa,EAAEC,UAAU;IACzBC,IAAI;IACJC,QAAQ;IACRjE,cAAc;AACdD,IAAAA,QAAQ,GAAGZ,iBAAiB;AAC5Bc,IAAAA,mBAAmB,GAAG,IAAI;IAC1BiE,wBAAwB;IACxBC,qBAAqB;IACrBC,qBAAqB;AACrBC,IAAAA,SAAS,GAAG,KAAK;AACjBlD,IAAAA,YAAY,GAAG,IAAA;AACI,GAAC,GAAAmC,KAAA,CAAA;EACpB,MAAM,CAACgB,KAAK,EAAEC,QAAQ,CAAC,GAAGC,QAAQ,CAAC1B,YAAY,CAAC,CAAA;AAChD,EAAA,MAAM2B,UAAU,GAAGC,MAAM,CAAC,IAAI,CAAC,CAAA;AAC/B,EAAA,MAAMC,QAAQ,GAAGC,WAAW,EAAE,CAAA;AAC9B,EAAA,MAAMC,MAAM,GAAGC,SAAS,EAAE,CAAA;AAC1B,EAAA,MAAMC,iBAAiB,GAAGL,MAAM,CAAC,IAAI,CAAC,CAAA;AAEtC,EAAA,MAAMM,SAAS,GAAGC,OAAO,CAAC,MAAM;AAC9B,IAAA,IAAIZ,SAAS,EAAE;AACb,MAAA,OAAO,CAAC,CAAA;AACV,KAAA;AACA,IAAA,OAAOpE,mBAAmB,GAAGkC,UAAU,GAAG+C,cAAc,CAAA;AAC1D,GAAC,EAAE,CAACjF,mBAAmB,EAAEoE,SAAS,CAAC,CAAC,CAAA;AAEpC,EAAA,MAAMc,cAAc,GAAGC,WAAW,CAAC,MAAM;AACvC,IAAA,IAAI1B,UAAU,CAAC2B,OAAO,IAAIZ,UAAU,CAACY,OAAO,EAAE;AAC5C;AACAd,MAAAA,QAAQ,CACNe,eAAe,CACb/B,SAAS,EACTW,wBAAwB,EACxBR,UAAU,EACVe,UAAU,EACVE,QAAQ,EACRE,MAAM,EACNG,SACF,CACF,CAAC,CAAA;MACDD,iBAAiB,CAACM,OAAO,GAAG,IAAI,CAAA;AAClC,KAAA;AACF,GAAC,EAAE,CACD3B,UAAU,EACVe,UAAU,EACVE,QAAQ,EACRE,MAAM,EACNtB,SAAS,EACTyB,SAAS,EACTd,wBAAwB,CACzB,CAAC,CAAA;AAEF,EAAA,MAAMqB,uBAAuB,GAAGH,WAAW,CAAC,MAAM;AAChD,IAAA,IAAI,CAACL,iBAAiB,CAACM,OAAO,EAAE;MAC9BN,iBAAiB,CAACM,OAAO,GAAGG,UAAU,CAACL,cAAc,EAAE,GAAG,CAAC,CAAA;AAC7D,KAAA;AACF,GAAC,EAAE,CAACA,cAAc,CAAC,CAAC,CAAA;;AAEpB;AACAM,EAAAA,eAAe,CAAC,MAAM;AACpB,IAAA,IAAI3B,SAAS,EAAE;AACbqB,MAAAA,cAAc,EAAE,CAAA;AAClB,KAAA;GACD,EAAE,CAACrB,SAAS,EAAEqB,cAAc,EAAEnF,cAAc,EAAEwD,OAAO,CAAC,CAAC,CAAA;;AAExD;AACAkC,EAAAA,SAAS,CAAC,MAAM;AACd,IAAA,IAAIC,QAA8B,CAAA;IAElC,IACE,OAAOC,oBAAoB,KAAK,WAAW,IAC3C9B,SAAS,IACTW,UAAU,CAACY,OAAO,EAClB;AACAM,MAAAA,QAAQ,GAAG,IAAIC,oBAAoB,CAChCC,OAAO,IAAK;QACXA,OAAO,CAACC,OAAO,CAAC,MAAM;AACpBX,UAAAA,cAAc,EAAE,CAAA;AAClB,SAAC,CAAC,CAAA;AACJ,OAAC,EACD;AACEY,QAAAA,SAAS,EAAE,GAAA;AACb,OACF,CAAC,CAAA;AAEDJ,MAAAA,QAAQ,CAACK,OAAO,CAACvB,UAAU,CAACY,OAAO,CAAC,CAAA;AACpCR,MAAAA,MAAM,CAACoB,gBAAgB,CAAC,QAAQ,EAAEV,uBAAuB,CAAC,CAAA;MAC1DV,MAAM,CAACoB,gBAAgB,CAAC,QAAQ,EAAEV,uBAAuB,EAAE,IAAI,CAAC,CAAC;AACnE,KAAC,MAAM,IAAI,CAACzB,SAAS,EAAE;AACrB;AACAf,MAAAA,wBAAwB,GAAGI,IAAI,CAACC,GAAG,EAAE,CAAA;AACvC,KAAA;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,IAAIuC,QAAQ,EAAE;QACZA,QAAQ,CAACO,UAAU,EAAE,CAAA;AACvB,OAAA;AACArB,MAAAA,MAAM,CAACsB,mBAAmB,CAAC,QAAQ,EAAEZ,uBAAuB,CAAC,CAAA;AAC7DV,MAAAA,MAAM,CAACsB,mBAAmB,CAAC,QAAQ,EAAEZ,uBAAuB,CAAC,CAAA;AAC7Da,MAAAA,YAAY,CAACrB,iBAAiB,CAACM,OAAO,CAAC,CAAA;KACxC,CAAA;AACH,GAAC,EAAE,CAACvB,SAAS,EAAEqB,cAAc,EAAEI,uBAAuB,EAAEV,MAAM,EAAEJ,UAAU,CAAC,CAAC,CAAA;EAE5E,IAAI4B,MAAM,GAAG,IAAI,CAAA;AAEjB,EAAA,MAAMC,YAAY,GAAGrB,OAAO,CAC1B,MACEsB,KAAA,IAAA;IAAA,IAAC;AAAEC,MAAAA,QAAAA;AAAqC,KAAC,GAAAD,KAAA,CAAA;AAAA,IAAA,OACvCtG,mBAAmB,gBACjBwG,KAAA,CAAAC,aAAA,CAACC,gBAAgB,EAAA;AAACC,MAAAA,IAAI,EAAC,UAAA;AAAU,KAAA,EAAEJ,QAA2B,CAAC,gBAE/DC,KAAA,CAAAC,aAAA,CAAAD,KAAA,CAAAI,QAAA,EAAGL,IAAAA,EAAAA,QAAW,CACf,CAAA;GACL,EAAA,CAACvG,mBAAmB,CACtB,CAAC,CAAA;AAED,EAAA,IAAI6D,SAAS,EAAE;AACb,IAAA,MAAMgD,UAAU,gBACdL,KAAA,CAAAC,aAAA,CAACJ,YAAY,EAAA,IAAA,eACXG,KAAA,CAAAC,aAAA,CAACtH,eAAe,EAAA;AACd,MAAA,kBAAA,EAAkBwE,aAAc;AAChC,MAAA,YAAA,EAAYC,QAAS;AACrBS,MAAAA,KAAK,EAAE;QACL7B,GAAG,EAAE6B,KAAK,CAAC7B,GAAG;QACdG,IAAI,EAAE0B,KAAK,CAAC1B,IAAI;QAChBK,iBAAiB,EAAED,oBAAoB,EAAC;OACxC;AACF+D,MAAAA,GAAG,EAAEtC,UAAW;AAChBuC,MAAAA,EAAE,EAAEvD,SAAU;AACdO,MAAAA,IAAI,EAAEA,IAAK;AACX,MAAA,aAAA,EAAaD,UAAW;AACxB9D,MAAAA,mBAAmB,EAAEA,mBAAoB;AACzCgE,MAAAA,QAAQ,EAAEA,QAAS;MACnBpE,mBAAmB,EAAEyE,KAAK,CAACzE,mBAAoB;MAC/CC,iBAAiB,EAAEwE,KAAK,CAACxE,iBAAkB;AAC3CC,MAAAA,QAAQ,EAAEA,QAAS;AACnBC,MAAAA,cAAc,EAAEA,cAAe;AAC/BiH,MAAAA,cAAc,EAAE9C,qBAAsB;AACtC+C,MAAAA,cAAc,EAAE9C,qBAAAA;KAEfnE,EAAAA,mBAAmB,GAClBuD,OAAO,gBAEPiD,KAAA,CAAAC,aAAA,CAACS,SAAS,EAAA;AAACC,MAAAA,SAAS,EAAE,CAAE;AAACjG,MAAAA,YAAY,EAAEA,YAAAA;KACpCqC,EAAAA,OACQ,CACZ,EACA,CAACa,SAAS,iBACToC,KAAA,CAAAC,aAAA,CAACzE,WAAW,EAAA;MACV,kBAAmB,EAAA,CAAA,EAAE2B,aAAc,CAAQ,MAAA,CAAA;MAC3C/D,mBAAmB,EAAEyE,KAAK,CAACzE,mBAAoB;MAC/CC,iBAAiB,EAAEwE,KAAK,CAACxE,iBAAkB;AAC3Cc,MAAAA,IAAI,EAAEoE,SAAAA;KACP,CAEY,CACL,CACf,CAAA;IAEDqB,MAAM,gBAAGgB,YAAY,CAACP,UAAU,EAAEnD,eAAe,IAAIgB,QAAQ,CAAC2C,IAAI,CAAC,CAAA;AACrE,GAAA;AAEA,EAAA,OAAOjB,MAAM,CAAA;AACf;;;;"}
|
|
@@ -4,9 +4,9 @@ import type { TooltipStyle } from "./TooltipContent";
|
|
|
4
4
|
export declare const DISTANCE_FROM_TRIGGER = 4;
|
|
5
5
|
export declare const ANIMATION_DISTANCE = 8;
|
|
6
6
|
export declare const ARROW_SIZE = 6;
|
|
7
|
-
export declare const
|
|
8
|
-
export declare const
|
|
7
|
+
export declare const ARROW_SIZE_BIG = 8;
|
|
8
|
+
export declare const getArrowOffset: (size: number) => number;
|
|
9
9
|
/**
|
|
10
10
|
* Get tooltip position and width
|
|
11
11
|
*/
|
|
12
|
-
export declare function getTooltipStyle(placement: TooltipProps["placement"], triggerRef: RefObject<any>, tooltipRef: RefObject<any>, document: Document, window: Window): TooltipStyle;
|
|
12
|
+
export declare function getTooltipStyle(placement: TooltipProps["placement"], defaultVerticalPlacement: TooltipStyle["verticalPlacement"], triggerRef: RefObject<any>, tooltipRef: RefObject<any>, document: Document, window: Window, arrowSize: number): TooltipStyle;
|
|
@@ -1,20 +1,28 @@
|
|
|
1
1
|
const DISTANCE_FROM_TRIGGER = 4;
|
|
2
2
|
const ANIMATION_DISTANCE = 8;
|
|
3
3
|
const ARROW_SIZE = 6;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
|
|
4
|
+
const ARROW_SIZE_BIG = 8;
|
|
5
|
+
const getArrowOffset = size => size * 2;
|
|
7
6
|
/**
|
|
8
7
|
* Get tooltip position and width
|
|
9
8
|
*/
|
|
10
|
-
function getTooltipStyle(placement
|
|
9
|
+
function getTooltipStyle(placement) {
|
|
10
|
+
let defaultVerticalPlacement = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "top";
|
|
11
|
+
let triggerRef = arguments.length > 2 ? arguments[2] : undefined;
|
|
12
|
+
let tooltipRef = arguments.length > 3 ? arguments[3] : undefined;
|
|
13
|
+
let document = arguments.length > 4 ? arguments[4] : undefined;
|
|
14
|
+
let window = arguments.length > 5 ? arguments[5] : undefined;
|
|
15
|
+
let arrowSize = arguments.length > 6 ? arguments[6] : undefined;
|
|
11
16
|
const triggerRect = triggerRef.current.getBoundingClientRect();
|
|
12
17
|
const tooltipRect = tooltipRef.current.getBoundingClientRect();
|
|
13
18
|
const viewportWidth = document.documentElement.clientWidth;
|
|
19
|
+
const viewportHeight = document.documentElement.clientHeight;
|
|
14
20
|
let top = 0;
|
|
15
21
|
let left = 0;
|
|
16
|
-
let verticalPlacement =
|
|
22
|
+
let verticalPlacement = defaultVerticalPlacement;
|
|
17
23
|
let horizontalPlacement = "center";
|
|
24
|
+
const arrowOffset = getArrowOffset(arrowSize);
|
|
25
|
+
const tooltipMargin = arrowSize + ANIMATION_DISTANCE + DISTANCE_FROM_TRIGGER;
|
|
18
26
|
switch (placement) {
|
|
19
27
|
case "top":
|
|
20
28
|
case "bottom":
|
|
@@ -31,9 +39,11 @@ function getTooltipStyle(placement, triggerRef, tooltipRef, document, window) {
|
|
|
31
39
|
break;
|
|
32
40
|
}
|
|
33
41
|
default:
|
|
34
|
-
// If there is no space
|
|
35
|
-
if (triggerRect.top < tooltipRect.height) {
|
|
42
|
+
// If there is no space for the default vertical position of the trigger place it on the opposite side
|
|
43
|
+
if (verticalPlacement === "top" && triggerRect.top < tooltipRect.height) {
|
|
36
44
|
verticalPlacement = "bottom";
|
|
45
|
+
} else if (verticalPlacement === "bottom" && triggerRect.bottom + tooltipRect.height > viewportHeight) {
|
|
46
|
+
verticalPlacement = "top";
|
|
37
47
|
}
|
|
38
48
|
|
|
39
49
|
// Check if we have space on the left for half of the tooltip width
|
|
@@ -49,16 +59,16 @@ function getTooltipStyle(placement, triggerRef, tooltipRef, document, window) {
|
|
|
49
59
|
}
|
|
50
60
|
}
|
|
51
61
|
if (verticalPlacement === "top") {
|
|
52
|
-
top = triggerRect.top - tooltipRect.height -
|
|
62
|
+
top = triggerRect.top - tooltipRect.height - tooltipMargin;
|
|
53
63
|
} else {
|
|
54
|
-
top = triggerRect.bottom +
|
|
64
|
+
top = triggerRect.bottom + tooltipMargin;
|
|
55
65
|
}
|
|
56
66
|
switch (horizontalPlacement) {
|
|
57
67
|
case "left":
|
|
58
|
-
left = triggerRect.left + triggerRect.width / 2 - tooltipRect.width +
|
|
68
|
+
left = triggerRect.left + triggerRect.width / 2 - tooltipRect.width + arrowOffset + arrowSize;
|
|
59
69
|
break;
|
|
60
70
|
case "right":
|
|
61
|
-
left = triggerRect.left + triggerRect.width / 2 -
|
|
71
|
+
left = triggerRect.left + triggerRect.width / 2 - arrowOffset - arrowSize;
|
|
62
72
|
break;
|
|
63
73
|
default:
|
|
64
74
|
left = triggerRect.left + triggerRect.width / 2;
|
|
@@ -71,5 +81,5 @@ function getTooltipStyle(placement, triggerRef, tooltipRef, document, window) {
|
|
|
71
81
|
};
|
|
72
82
|
}
|
|
73
83
|
|
|
74
|
-
export { ANIMATION_DISTANCE,
|
|
84
|
+
export { ANIMATION_DISTANCE, ARROW_SIZE, ARROW_SIZE_BIG, DISTANCE_FROM_TRIGGER, getArrowOffset, getTooltipStyle };
|
|
75
85
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../../../../src/components/Tooltip/utils.ts"],"sourcesContent":["import { RefObject } from \"react\";\nimport type { TooltipProps } from \"./Tooltip\";\nimport type { TooltipStyle } from \"./TooltipContent\";\n\nexport const DISTANCE_FROM_TRIGGER = 4;\nexport const ANIMATION_DISTANCE = 8;\nexport const ARROW_SIZE = 6;\nexport const
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../../../src/components/Tooltip/utils.ts"],"sourcesContent":["import { RefObject } from \"react\";\nimport type { TooltipProps } from \"./Tooltip\";\nimport type { TooltipStyle } from \"./TooltipContent\";\n\nexport const DISTANCE_FROM_TRIGGER = 4;\nexport const ANIMATION_DISTANCE = 8;\nexport const ARROW_SIZE = 6;\nexport const ARROW_SIZE_BIG = 8;\n\nexport const getArrowOffset = (size: number): number => size * 2;\n/**\n * Get tooltip position and width\n */\nexport function getTooltipStyle(\n placement: TooltipProps[\"placement\"],\n defaultVerticalPlacement: TooltipStyle[\"verticalPlacement\"] = \"top\",\n triggerRef: RefObject<any>,\n tooltipRef: RefObject<any>,\n document: Document,\n window: Window,\n arrowSize: number\n): TooltipStyle {\n const triggerRect = triggerRef.current.getBoundingClientRect();\n const tooltipRect = tooltipRef.current.getBoundingClientRect();\n const viewportWidth = document.documentElement.clientWidth;\n const viewportHeight = document.documentElement.clientHeight;\n let top = 0;\n let left = 0;\n let verticalPlacement: TooltipStyle[\"verticalPlacement\"] =\n defaultVerticalPlacement;\n let horizontalPlacement: TooltipStyle[\"horizontalPlacement\"] = \"center\";\n\n const arrowOffset = getArrowOffset(arrowSize);\n const tooltipMargin = arrowSize + ANIMATION_DISTANCE + DISTANCE_FROM_TRIGGER;\n\n switch (placement) {\n case \"top\":\n case \"bottom\":\n verticalPlacement = placement;\n break;\n case \"top-left\":\n case \"top-right\":\n case \"bottom-left\":\n case \"bottom-right\": {\n const placements = placement.split(\"-\");\n\n verticalPlacement = placements[0] as TooltipStyle[\"verticalPlacement\"];\n horizontalPlacement =\n placements[1] as TooltipStyle[\"horizontalPlacement\"];\n break;\n }\n default:\n // If there is no space for the default vertical position of the trigger place it on the opposite side\n if (verticalPlacement === \"top\" && triggerRect.top < tooltipRect.height) {\n verticalPlacement = \"bottom\";\n } else if (\n verticalPlacement === \"bottom\" &&\n triggerRect.bottom + tooltipRect.height > viewportHeight\n ) {\n verticalPlacement = \"top\";\n }\n\n // Check if we have space on the left for half of the tooltip width\n if (triggerRect.left >= tooltipRect.width / 2) {\n // Check if we have space on the right for half of the tooltip width\n if (\n triggerRect.left + triggerRect.width / 2 + tooltipRect.width / 2 >\n viewportWidth\n ) {\n // no space on the right\n horizontalPlacement = \"left\";\n }\n } else {\n // We don't have space on the left\n horizontalPlacement = \"right\";\n }\n }\n\n if (verticalPlacement === \"top\") {\n top = triggerRect.top - tooltipRect.height - tooltipMargin;\n } else {\n top = triggerRect.bottom + tooltipMargin;\n }\n\n switch (horizontalPlacement) {\n case \"left\":\n left =\n triggerRect.left +\n triggerRect.width / 2 -\n tooltipRect.width +\n arrowOffset +\n arrowSize;\n break;\n case \"right\":\n left = triggerRect.left + triggerRect.width / 2 - arrowOffset - arrowSize;\n break;\n default:\n left = triggerRect.left + triggerRect.width / 2;\n }\n\n return {\n top: top + window.scrollY,\n left: left + window.scrollX,\n horizontalPlacement,\n verticalPlacement,\n };\n}\n"],"names":["DISTANCE_FROM_TRIGGER","ANIMATION_DISTANCE","ARROW_SIZE","ARROW_SIZE_BIG","getArrowOffset","size","getTooltipStyle","placement","defaultVerticalPlacement","arguments","length","undefined","triggerRef","tooltipRef","document","window","arrowSize","triggerRect","current","getBoundingClientRect","tooltipRect","viewportWidth","documentElement","clientWidth","viewportHeight","clientHeight","top","left","verticalPlacement","horizontalPlacement","arrowOffset","tooltipMargin","placements","split","height","bottom","width","scrollY","scrollX"],"mappings":"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"}
|
|
@@ -37,6 +37,12 @@ function UserHighlightTooltip(_ref) {
|
|
|
37
37
|
onVisibilityChange(status);
|
|
38
38
|
}
|
|
39
39
|
}, [onVisibilityChange]);
|
|
40
|
+
useEffect(() => {
|
|
41
|
+
if (selectedRange) {
|
|
42
|
+
toggleVisibility(true);
|
|
43
|
+
}
|
|
44
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
45
|
+
}, []);
|
|
40
46
|
const handleTooltipPointerEnter = () => {
|
|
41
47
|
isTooltipHovered.current = true;
|
|
42
48
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserHighlightTooltip.js","sources":["../../../../../src/components/UserHighlightTooltip/UserHighlightTooltip.tsx"],"sourcesContent":["import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport type { TooltipContentProps } from \"../Tooltip/TooltipContent\";\nimport { TooltipContent } from \"../Tooltip/TooltipContent\";\n\nexport type UserHighlightTooltipProps = Pick<\n TooltipContentProps,\n \"content\" | \"placement\" | \"portalContainer\" | \"contentPadding\" | \"maxWidth\"\n> & {\n \"data-e2e-test-id\"?: string;\n onVisibilityChange?: (isVisible: boolean) => void;\n triggerElements: HTMLElement[];\n selectedRange?: Range;\n};\n\nconst SHOW_HIDE_DELAY = 200;\n\nexport function UserHighlightTooltip({\n content,\n contentPadding = \"m\",\n placement = \"auto\",\n maxWidth,\n portalContainer,\n \"data-e2e-test-id\": dataE2eTestId,\n triggerElements,\n selectedRange,\n onVisibilityChange,\n}: UserHighlightTooltipProps): React.ReactElement {\n const tooltipId = useMemo(\n () => `DSUserHighlightTooltip_${Math.floor(Date.now() * Math.random())}`,\n []\n );\n\n const isTooltipHovered = useRef(false);\n const showTooltipTimeoutId = useRef(null);\n const hideTooltipTimeoutId = useRef(null);\n const triggerHovered = useRef(false);\n const rangeRef = useRef<Range>(null);\n\n useEffect(() => {\n if (selectedRange) {\n rangeRef.current = selectedRange;\n } else {\n const range = document.createRange();\n range.setStart(triggerElements[0], 0);\n range.setEnd(triggerElements[triggerElements.length - 1], 1);\n rangeRef.current = range;\n }\n }, [triggerElements, selectedRange]);\n\n const [tooltipVisible, setTooltipVisible] = useState(false);\n\n const toggleVisibility = useCallback(\n (status: boolean) => {\n setTooltipVisible(status);\n\n if (onVisibilityChange) {\n onVisibilityChange(status);\n }\n },\n [onVisibilityChange]\n );\n\n const handleTooltipPointerEnter = () => {\n isTooltipHovered.current = true;\n };\n\n const hideTooltipAfterDelay = useCallback(() => {\n // Delay removing tooltip from DOM to allow hover over highlight element || tooltip element\n hideTooltipTimeoutId.current = setTimeout(() => {\n if (\n !triggerHovered.current &&\n !isTooltipHovered.current &&\n tooltipVisible\n ) {\n toggleVisibility(false);\n }\n }, SHOW_HIDE_DELAY);\n }, [toggleVisibility, tooltipVisible]);\n\n const handleTooltipPointerLeave = () => {\n clearTimeout(hideTooltipTimeoutId.current);\n isTooltipHovered.current = false;\n\n hideTooltipAfterDelay();\n };\n\n const handleTriggerPointerEnter = useCallback(() => {\n triggerHovered.current = true;\n if (!tooltipVisible) {\n clearTimeout(showTooltipTimeoutId.current);\n // Delay show tooltip to prevent flickering when mouse moves quickly over trigger\n showTooltipTimeoutId.current = setTimeout(() => {\n if (!tooltipVisible && triggerHovered.current) {\n toggleVisibility(true);\n }\n }, SHOW_HIDE_DELAY);\n }\n }, [toggleVisibility, tooltipVisible]);\n\n const handleTriggerPointerLeave = useCallback(() => {\n clearTimeout(hideTooltipTimeoutId.current);\n triggerHovered.current = false;\n\n hideTooltipAfterDelay();\n }, [hideTooltipAfterDelay]);\n\n useEffect(\n () => () => {\n // clear timers\n clearTimeout(showTooltipTimeoutId.current);\n clearTimeout(hideTooltipTimeoutId.current);\n },\n []\n );\n\n // event listeners\n useEffect(() => {\n triggerElements.forEach((node) => {\n node.addEventListener(\"pointerenter\", handleTriggerPointerEnter);\n node.addEventListener(\"pointerleave\", handleTriggerPointerLeave);\n });\n return () => {\n triggerElements.forEach((node) => {\n node.removeEventListener(\"pointerenter\", handleTriggerPointerEnter);\n node.removeEventListener(\"pointerleave\", handleTriggerPointerLeave);\n });\n };\n }, [handleTriggerPointerEnter, handleTriggerPointerLeave, triggerElements]);\n\n useEffect(() => {\n triggerElements.forEach((node) => {\n if (tooltipVisible) {\n node.setAttribute(\"aria-describedby\", tooltipId);\n } else {\n node.removeAttribute(\"aria-describedby\");\n }\n });\n }, [tooltipId, tooltipVisible, triggerElements]);\n\n if (!rangeRef.current) return null;\n\n return (\n <TooltipContent\n dataDSId=\"UserHighlightTooltip\"\n content={content}\n placement={placement}\n portalContainer={portalContainer}\n dataE2eTestId={dataE2eTestId}\n isVisible={tooltipVisible}\n tooltipId={tooltipId}\n triggerRef={rangeRef}\n aria-hidden\n role=\"tooltip\"\n contentPadding={contentPadding}\n maxWidth={maxWidth}\n onTooltipPointerEnter={handleTooltipPointerEnter}\n onTooltipPointerLeave={handleTooltipPointerLeave}\n />\n );\n}\n"],"names":["SHOW_HIDE_DELAY","UserHighlightTooltip","_ref","content","contentPadding","placement","maxWidth","portalContainer","dataE2eTestId","triggerElements","selectedRange","onVisibilityChange","tooltipId","useMemo","Math","floor","Date","now","random","isTooltipHovered","useRef","showTooltipTimeoutId","hideTooltipTimeoutId","triggerHovered","rangeRef","useEffect","current","range","document","createRange","setStart","setEnd","length","tooltipVisible","setTooltipVisible","useState","toggleVisibility","useCallback","status","handleTooltipPointerEnter","hideTooltipAfterDelay","setTimeout","handleTooltipPointerLeave","clearTimeout","handleTriggerPointerEnter","handleTriggerPointerLeave","forEach","node","addEventListener","removeEventListener","setAttribute","removeAttribute","React","createElement","TooltipContent","dataDSId","isVisible","triggerRef","role","onTooltipPointerEnter","onTooltipPointerLeave"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"UserHighlightTooltip.js","sources":["../../../../../src/components/UserHighlightTooltip/UserHighlightTooltip.tsx"],"sourcesContent":["import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport type { TooltipContentProps } from \"../Tooltip/TooltipContent\";\nimport { TooltipContent } from \"../Tooltip/TooltipContent\";\n\nexport type UserHighlightTooltipProps = Pick<\n TooltipContentProps,\n \"content\" | \"placement\" | \"portalContainer\" | \"contentPadding\" | \"maxWidth\"\n> & {\n \"data-e2e-test-id\"?: string;\n onVisibilityChange?: (isVisible: boolean) => void;\n triggerElements: HTMLElement[];\n selectedRange?: Range;\n};\n\nconst SHOW_HIDE_DELAY = 200;\n\nexport function UserHighlightTooltip({\n content,\n contentPadding = \"m\",\n placement = \"auto\",\n maxWidth,\n portalContainer,\n \"data-e2e-test-id\": dataE2eTestId,\n triggerElements,\n selectedRange,\n onVisibilityChange,\n}: UserHighlightTooltipProps): React.ReactElement {\n const tooltipId = useMemo(\n () => `DSUserHighlightTooltip_${Math.floor(Date.now() * Math.random())}`,\n []\n );\n\n const isTooltipHovered = useRef(false);\n const showTooltipTimeoutId = useRef(null);\n const hideTooltipTimeoutId = useRef(null);\n const triggerHovered = useRef(false);\n const rangeRef = useRef<Range>(null);\n\n useEffect(() => {\n if (selectedRange) {\n rangeRef.current = selectedRange;\n } else {\n const range = document.createRange();\n range.setStart(triggerElements[0], 0);\n range.setEnd(triggerElements[triggerElements.length - 1], 1);\n rangeRef.current = range;\n }\n }, [triggerElements, selectedRange]);\n\n const [tooltipVisible, setTooltipVisible] = useState(false);\n\n const toggleVisibility = useCallback(\n (status: boolean) => {\n setTooltipVisible(status);\n\n if (onVisibilityChange) {\n onVisibilityChange(status);\n }\n },\n [onVisibilityChange]\n );\n\n useEffect(() => {\n if (selectedRange) {\n toggleVisibility(true);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const handleTooltipPointerEnter = () => {\n isTooltipHovered.current = true;\n };\n\n const hideTooltipAfterDelay = useCallback(() => {\n // Delay removing tooltip from DOM to allow hover over highlight element || tooltip element\n hideTooltipTimeoutId.current = setTimeout(() => {\n if (\n !triggerHovered.current &&\n !isTooltipHovered.current &&\n tooltipVisible\n ) {\n toggleVisibility(false);\n }\n }, SHOW_HIDE_DELAY);\n }, [toggleVisibility, tooltipVisible]);\n\n const handleTooltipPointerLeave = () => {\n clearTimeout(hideTooltipTimeoutId.current);\n isTooltipHovered.current = false;\n\n hideTooltipAfterDelay();\n };\n\n const handleTriggerPointerEnter = useCallback(() => {\n triggerHovered.current = true;\n if (!tooltipVisible) {\n clearTimeout(showTooltipTimeoutId.current);\n // Delay show tooltip to prevent flickering when mouse moves quickly over trigger\n showTooltipTimeoutId.current = setTimeout(() => {\n if (!tooltipVisible && triggerHovered.current) {\n toggleVisibility(true);\n }\n }, SHOW_HIDE_DELAY);\n }\n }, [toggleVisibility, tooltipVisible]);\n\n const handleTriggerPointerLeave = useCallback(() => {\n clearTimeout(hideTooltipTimeoutId.current);\n triggerHovered.current = false;\n\n hideTooltipAfterDelay();\n }, [hideTooltipAfterDelay]);\n\n useEffect(\n () => () => {\n // clear timers\n clearTimeout(showTooltipTimeoutId.current);\n clearTimeout(hideTooltipTimeoutId.current);\n },\n []\n );\n\n // event listeners\n useEffect(() => {\n triggerElements.forEach((node) => {\n node.addEventListener(\"pointerenter\", handleTriggerPointerEnter);\n node.addEventListener(\"pointerleave\", handleTriggerPointerLeave);\n });\n return () => {\n triggerElements.forEach((node) => {\n node.removeEventListener(\"pointerenter\", handleTriggerPointerEnter);\n node.removeEventListener(\"pointerleave\", handleTriggerPointerLeave);\n });\n };\n }, [handleTriggerPointerEnter, handleTriggerPointerLeave, triggerElements]);\n\n useEffect(() => {\n triggerElements.forEach((node) => {\n if (tooltipVisible) {\n node.setAttribute(\"aria-describedby\", tooltipId);\n } else {\n node.removeAttribute(\"aria-describedby\");\n }\n });\n }, [tooltipId, tooltipVisible, triggerElements]);\n\n if (!rangeRef.current) return null;\n\n return (\n <TooltipContent\n dataDSId=\"UserHighlightTooltip\"\n content={content}\n placement={placement}\n portalContainer={portalContainer}\n dataE2eTestId={dataE2eTestId}\n isVisible={tooltipVisible}\n tooltipId={tooltipId}\n triggerRef={rangeRef}\n aria-hidden\n role=\"tooltip\"\n contentPadding={contentPadding}\n maxWidth={maxWidth}\n onTooltipPointerEnter={handleTooltipPointerEnter}\n onTooltipPointerLeave={handleTooltipPointerLeave}\n />\n );\n}\n"],"names":["SHOW_HIDE_DELAY","UserHighlightTooltip","_ref","content","contentPadding","placement","maxWidth","portalContainer","dataE2eTestId","triggerElements","selectedRange","onVisibilityChange","tooltipId","useMemo","Math","floor","Date","now","random","isTooltipHovered","useRef","showTooltipTimeoutId","hideTooltipTimeoutId","triggerHovered","rangeRef","useEffect","current","range","document","createRange","setStart","setEnd","length","tooltipVisible","setTooltipVisible","useState","toggleVisibility","useCallback","status","handleTooltipPointerEnter","hideTooltipAfterDelay","setTimeout","handleTooltipPointerLeave","clearTimeout","handleTriggerPointerEnter","handleTriggerPointerLeave","forEach","node","addEventListener","removeEventListener","setAttribute","removeAttribute","React","createElement","TooltipContent","dataDSId","isVisible","triggerRef","role","onTooltipPointerEnter","onTooltipPointerLeave"],"mappings":"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"}
|
package/build/esm/src/index.d.ts
CHANGED
|
@@ -53,4 +53,5 @@ export * from "./components/Tooltip/Tooltip";
|
|
|
53
53
|
export * from "./components/Tag/Tag";
|
|
54
54
|
export * from "./components/TagGroup/TagGroup";
|
|
55
55
|
export * from "./components/Toggletip/Toggletip";
|
|
56
|
+
export * from "./components/Popover/Popover";
|
|
56
57
|
export * from "./components/UserHighlightTooltip/UserHighlightTooltip";
|