@amboss/design-system 1.13.4 → 1.13.6
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/build-tokens/_zindex.json.js +10 -0
- package/build/cjs/build-tokens/visualConfig.js +150 -4
- package/build/cjs/scss/themes/dark.scss +5 -4
- package/build/cjs/scss/themes/light.scss +3 -2
- package/build/cjs/src/components/Button/Button.js +18 -32
- package/build/cjs/src/components/Link/Link.js +5 -4
- package/build/cjs/src/components/Tooltip/Tooltip.js +275 -0
- package/build/cjs/src/components/Tooltip/utils.js +81 -0
- package/build/cjs/src/index.js +2 -0
- package/build/esm/build-tokens/_subThemeType.d.ts +1 -1
- package/build/esm/build-tokens/_zindex.json.js +4 -0
- package/build/esm/build-tokens/_zindex.json.js.map +1 -0
- package/build/esm/build-tokens/visualConfig.d.ts +74 -0
- package/build/esm/build-tokens/visualConfig.js +150 -4
- package/build/esm/build-tokens/visualConfig.js.map +1 -1
- package/build/esm/scss/themes/dark.scss +5 -4
- package/build/esm/scss/themes/light.scss +3 -2
- package/build/esm/src/components/Button/Button.d.ts +0 -1
- package/build/esm/src/components/Button/Button.js +18 -32
- package/build/esm/src/components/Button/Button.js.map +1 -1
- package/build/esm/src/components/Link/Link.d.ts +4 -5
- package/build/esm/src/components/Link/Link.js +5 -4
- package/build/esm/src/components/Link/Link.js.map +1 -1
- package/build/esm/src/components/Tooltip/Tooltip.d.ts +23 -0
- package/build/esm/src/components/Tooltip/Tooltip.js +269 -0
- package/build/esm/src/components/Tooltip/Tooltip.js.map +1 -0
- package/build/esm/src/components/Tooltip/utils.d.ts +11 -0
- package/build/esm/src/components/Tooltip/utils.js +75 -0
- package/build/esm/src/components/Tooltip/utils.js.map +1 -0
- 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 +2 -1
- package/build/esm/src/components/Button/mock.d.ts +0 -326
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
import _styled from '@emotion/styled/base';
|
|
2
|
+
import React, { useMemo, useState, useRef, useCallback, useEffect, useLayoutEffect } from 'react';
|
|
3
|
+
import { keyframes } from '@emotion/react';
|
|
4
|
+
import { createPortal } from 'react-dom';
|
|
5
|
+
import { useDocument } from '../../shared/useDocument.js';
|
|
6
|
+
import { useWindow } from '../../shared/useWindow.js';
|
|
7
|
+
import { SubThemeProvider } from '../SubThemeProvider/SubThemeProvider.js';
|
|
8
|
+
import { Text } from '../Typography/Text/Text.js';
|
|
9
|
+
import zIndices from '../../../build-tokens/_zindex.json.js';
|
|
10
|
+
import { ARROW_SIZE, ARROW_OFFSET, getTooltipPosition, ANIMATION_DISTANCE } from './utils.js';
|
|
11
|
+
|
|
12
|
+
const ANIMATION_DURATION = 200;
|
|
13
|
+
const SHOW_HIDE_DELAY = 200;
|
|
14
|
+
const StyledContainer = /*#__PURE__*/_styled("div", process.env.NODE_ENV === "production" ? {
|
|
15
|
+
target: "e2kei841"
|
|
16
|
+
} : {
|
|
17
|
+
target: "e2kei841",
|
|
18
|
+
label: "StyledContainer"
|
|
19
|
+
})(_ref => {
|
|
20
|
+
let {
|
|
21
|
+
theme,
|
|
22
|
+
horizontalPlacement,
|
|
23
|
+
verticalPlacement
|
|
24
|
+
} = _ref;
|
|
25
|
+
const animationDistance = verticalPlacement === "top" ? `${ANIMATION_DISTANCE}px` : `-${ANIMATION_DISTANCE}px`;
|
|
26
|
+
const animation = keyframes({
|
|
27
|
+
to: {
|
|
28
|
+
opacity: 1,
|
|
29
|
+
transform: horizontalPlacement === "center" ? `translate(-50%, ${animationDistance})` : `translateY(${animationDistance})`
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
return {
|
|
33
|
+
position: "absolute",
|
|
34
|
+
zIndex: zIndices.tooltip.value,
|
|
35
|
+
opacity: 0,
|
|
36
|
+
animation: `${ANIMATION_DURATION}ms ease-out forwards ${animation}`,
|
|
37
|
+
borderRadius: theme.variables.size.borderRadius.xs,
|
|
38
|
+
backgroundColor: theme.values.color.background.primary.default,
|
|
39
|
+
maxWidth: "224px",
|
|
40
|
+
boxSizing: "border-box",
|
|
41
|
+
padding: `${theme.variables.size.spacing.xs} ${theme.variables.size.spacing.s}`,
|
|
42
|
+
...(horizontalPlacement === "center" && {
|
|
43
|
+
transform: "translate(-50%)"
|
|
44
|
+
})
|
|
45
|
+
};
|
|
46
|
+
}, process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRvb2x0aXAudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXlFd0IiLCJmaWxlIjoiVG9vbHRpcC50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHtcbiAgdXNlU3RhdGUsXG4gIHVzZVJlZixcbiAgdXNlTGF5b3V0RWZmZWN0LFxuICB1c2VFZmZlY3QsXG4gIHVzZUNhbGxiYWNrLFxuICBNdXRhYmxlUmVmT2JqZWN0LFxuICB1c2VNZW1vLFxufSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZFwiO1xuaW1wb3J0IHsga2V5ZnJhbWVzIH0gZnJvbSBcIkBlbW90aW9uL3JlYWN0XCI7XG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tIFwicmVhY3QtZG9tXCI7XG5pbXBvcnQgeyB1c2VEb2N1bWVudCB9IGZyb20gXCIuLi8uLi9zaGFyZWQvdXNlRG9jdW1lbnRcIjtcbmltcG9ydCB7IHVzZVdpbmRvdyB9IGZyb20gXCIuLi8uLi9zaGFyZWQvdXNlV2luZG93XCI7XG5pbXBvcnQgeyBTdWJUaGVtZVByb3ZpZGVyIH0gZnJvbSBcIi4uL1N1YlRoZW1lUHJvdmlkZXIvU3ViVGhlbWVQcm92aWRlclwiO1xuaW1wb3J0IHsgVGV4dCB9IGZyb20gXCIuLi9UeXBvZ3JhcGh5L1RleHQvVGV4dFwiO1xuaW1wb3J0IHpJbmRpY2VzIGZyb20gXCIuLi8uLi8uLi9idWlsZC10b2tlbnMvX3ppbmRleC5qc29uXCI7XG5cbmltcG9ydCB7XG4gIEFSUk9XX1NJWkUsXG4gIEFSUk9XX09GRlNFVCxcbiAgQU5JTUFUSU9OX0RJU1RBTkNFLFxuICBnZXRUb29sdGlwUG9zaXRpb24sXG59IGZyb20gXCIuL3V0aWxzXCI7XG5cbmV4cG9ydCB0eXBlIEJhc2VQcm9wcyA9IHtcbiAgLyogVG9vbHRpcCBjb250ZW50ICovXG4gIGNvbnRlbnQ6IHN0cmluZztcbiAgLyogUGxhY2VtZW50ICovXG4gIHBsYWNlbWVudD86XG4gICAgfCBcImF1dG9cIlxuICAgIHwgXCJ0b3BcIlxuICAgIHwgXCJib3R0b21cIlxuICAgIHwgXCJ0b3AtbGVmdFwiXG4gICAgfCBcInRvcC1yaWdodFwiXG4gICAgfCBcImJvdHRvbS1sZWZ0XCJcbiAgICB8IFwiYm90dG9tLXJpZ2h0XCI7XG4gIC8qIEN1c3RvbSBwb3J0YWwgY29udGFpbmVyIHRvIHJlbmRlciB0b29sdGlwIGludG8gKi9cbiAgcG9ydGFsQ29udGFpbmVyPzogSFRNTEVsZW1lbnQ7XG4gIFwiZGF0YS1lMmUtdGVzdC1pZFwiPzogc3RyaW5nO1xuICAvKiBDYWxsZWQgd2hlbiB0b29sdGlwIGFwcGVhcnMgYW5kIGRpc2FwcGVhcnMgKi9cbiAgb25WaXNpYmlsaXR5Q2hhbmdlPzogKGlzVmlzaWJsZTogYm9vbGVhbikgPT4gdm9pZDtcbn07XG5cbmV4cG9ydCB0eXBlIENvbmRpdGlvbmFsUHJvcHMgPVxuICB8IHtcbiAgICAgIGV4dGVybmFsVHJpZ2dlclJlZj86IG5ldmVyO1xuICAgICAgLyogVHJpZ2dlciBlbGVtZW50IC0gd3JhcCB0cmlnZ2VyIGVsZW1lbnQgd2l0aGluIFRvb2x0aXAgLSB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgdHJpZ2dlciBwcm9wICovXG4gICAgICBjaGlsZHJlbjogUmVhY3QuUmVhY3RFbGVtZW50O1xuICAgIH1cbiAgfCB7XG4gICAgICBjaGlsZHJlbj86IG5ldmVyO1xuICAgICAgLyogVHJpZ2dlciBlbGVtZW50IHJlZiAtIHBhc3MgaW4gYW4gZXh0ZXJuYWwgdHJpZ2dlciBlbGVtZW50ICovXG4gICAgICBleHRlcm5hbFRyaWdnZXJSZWY6IE11dGFibGVSZWZPYmplY3Q8YW55PjtcbiAgICB9O1xuXG5leHBvcnQgdHlwZSBUb29sdGlwUHJvcHMgPSBCYXNlUHJvcHMgJiBDb25kaXRpb25hbFByb3BzO1xuXG5leHBvcnQgdHlwZSBUb29sdGlwUG9zaXRpb24gPSB7XG4gIHRvcDogbnVtYmVyO1xuICBsZWZ0OiBudW1iZXI7XG4gIGhvcml6b250YWxQbGFjZW1lbnQ6IFwibGVmdFwiIHwgXCJyaWdodFwiIHwgXCJjZW50ZXJcIjtcbiAgdmVydGljYWxQbGFjZW1lbnQ6IFwidG9wXCIgfCBcImJvdHRvbVwiO1xufTtcblxudHlwZSBTdHlsZWRDb250YWluZXJQcm9wcyA9IHtcbiAgaG9yaXpvbnRhbFBsYWNlbWVudDogVG9vbHRpcFBvc2l0aW9uW1wiaG9yaXpvbnRhbFBsYWNlbWVudFwiXTtcbiAgdmVydGljYWxQbGFjZW1lbnQ6IFRvb2x0aXBQb3NpdGlvbltcInZlcnRpY2FsUGxhY2VtZW50XCJdO1xufTtcblxuY29uc3QgQU5JTUFUSU9OX0RVUkFUSU9OID0gMjAwO1xuY29uc3QgU0hPV19ISURFX0RFTEFZID0gMjAwO1xuXG5jb25zdCBTdHlsZWRDb250YWluZXIgPSBzdHlsZWQuZGl2PFN0eWxlZENvbnRhaW5lclByb3BzPihcbiAgKHsgdGhlbWUsIGhvcml6b250YWxQbGFjZW1lbnQsIHZlcnRpY2FsUGxhY2VtZW50IH0pID0+IHtcbiAgICBjb25zdCBhbmltYXRpb25EaXN0YW5jZSA9XG4gICAgICB2ZXJ0aWNhbFBsYWNlbWVudCA9PT0gXCJ0b3BcIlxuICAgICAgICA/IGAke0FOSU1BVElPTl9ESVNUQU5DRX1weGBcbiAgICAgICAgOiBgLSR7QU5JTUFUSU9OX0RJU1RBTkNFfXB4YDtcbiAgICBjb25zdCBhbmltYXRpb24gPSBrZXlmcmFtZXMoe1xuICAgICAgdG86IHtcbiAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgdHJhbnNmb3JtOlxuICAgICAgICAgIGhvcml6b250YWxQbGFjZW1lbnQgPT09IFwiY2VudGVyXCJcbiAgICAgICAgICAgID8gYHRyYW5zbGF0ZSgtNTAlLCAke2FuaW1hdGlvbkRpc3RhbmNlfSlgXG4gICAgICAgICAgICA6IGB0cmFuc2xhdGVZKCR7YW5pbWF0aW9uRGlzdGFuY2V9KWAsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgICB6SW5kZXg6IHpJbmRpY2VzLnRvb2x0aXAudmFsdWUsXG4gICAgICBvcGFjaXR5OiAwLFxuICAgICAgYW5pbWF0aW9uOiBgJHtBTklNQVRJT05fRFVSQVRJT059bXMgZWFzZS1vdXQgZm9yd2FyZHMgJHthbmltYXRpb259YCxcbiAgICAgIGJvcmRlclJhZGl1czogdGhlbWUudmFyaWFibGVzLnNpemUuYm9yZGVyUmFkaXVzLnhzLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS52YWx1ZXMuY29sb3IuYmFja2dyb3VuZC5wcmltYXJ5LmRlZmF1bHQsXG4gICAgICBtYXhXaWR0aDogXCIyMjRweFwiLFxuICAgICAgYm94U2l6aW5nOiBcImJvcmRlci1ib3hcIixcbiAgICAgIHBhZGRpbmc6IGAke3RoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcueHN9ICR7dGhlbWUudmFyaWFibGVzLnNpemUuc3BhY2luZy5zfWAsXG5cbiAgICAgIC4uLihob3Jpem9udGFsUGxhY2VtZW50ID09PSBcImNlbnRlclwiICYmIHtcbiAgICAgICAgdHJhbnNmb3JtOiBcInRyYW5zbGF0ZSgtNTAlKVwiLFxuICAgICAgfSksXG4gICAgfTtcbiAgfVxuKTtcblxudHlwZSBTdHlsZWRBcnJvd1Byb3BzID0ge1xuICB2ZXJ0aWNhbFBsYWNlbWVudDogVG9vbHRpcFBvc2l0aW9uW1widmVydGljYWxQbGFjZW1lbnRcIl07XG4gIGhvcml6b250YWxQbGFjZW1lbnQ6IFRvb2x0aXBQb3NpdGlvbltcImhvcml6b250YWxQbGFjZW1lbnRcIl07XG59O1xuXG5jb25zdCBTdHlsZWRBcnJvdyA9IHN0eWxlZC5kaXY8U3R5bGVkQXJyb3dQcm9wcz4oXG4gICh7IHRoZW1lLCB2ZXJ0aWNhbFBsYWNlbWVudCwgaG9yaXpvbnRhbFBsYWNlbWVudCB9KSA9PiAoe1xuICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgd2lkdGg6IDAsXG4gICAgaGVpZ2h0OiAwLFxuICAgIGJvcmRlckxlZnQ6IGAke0FSUk9XX1NJWkV9cHggc29saWQgdHJhbnNwYXJlbnRgLFxuICAgIGJvcmRlclJpZ2h0OiBgJHtBUlJPV19TSVpFfXB4IHNvbGlkIHRyYW5zcGFyZW50YCxcblxuICAgIC4uLih2ZXJ0aWNhbFBsYWNlbWVudCA9PT0gXCJ0b3BcIiAmJiB7XG4gICAgICB0b3A6IFwiMTAwJVwiLFxuICAgICAgYm9yZGVyVG9wOiBgJHtBUlJPV19TSVpFfXB4IHNvbGlkICR7dGhlbWUudmFsdWVzLmNvbG9yLmJhY2tncm91bmQucHJpbWFyeS5kZWZhdWx0fWAsXG4gICAgfSksXG5cbiAgICAuLi4odmVydGljYWxQbGFjZW1lbnQgPT09IFwiYm90dG9tXCIgJiYge1xuICAgICAgdG9wOiBgLSR7QVJST1dfU0laRX1weGAsXG4gICAgICBib3JkZXJCb3R0b206IGAke0FSUk9XX1NJWkV9cHggc29saWQgJHt0aGVtZS52YWx1ZXMuY29sb3IuYmFja2dyb3VuZC5wcmltYXJ5LmRlZmF1bHR9YCxcbiAgICB9KSxcblxuICAgIC4uLihob3Jpem9udGFsUGxhY2VtZW50ID09PSBcImNlbnRlclwiICYmIHtcbiAgICAgIGxlZnQ6IFwiNTAlXCIsXG4gICAgICB0cmFuc2Zvcm06IFwidHJhbnNsYXRlKC01MCUpXCIsXG4gICAgfSksXG5cbiAgICAuLi4oaG9yaXpvbnRhbFBsYWNlbWVudCA9PT0gXCJyaWdodFwiICYmIHtcbiAgICAgIGxlZnQ6IGAke0FSUk9XX09GRlNFVH1weGAsXG4gICAgfSksXG5cbiAgICAuLi4oaG9yaXpvbnRhbFBsYWNlbWVudCA9PT0gXCJsZWZ0XCIgJiYge1xuICAgICAgcmlnaHQ6IGAke0FSUk9XX09GRlNFVH1weGAsXG4gICAgfSksXG4gIH0pXG4pO1xuXG5jb25zdCBpbml0aWFsUG9zaXRpb246IFRvb2x0aXBQb3NpdGlvbiA9IHtcbiAgdG9wOiAwLFxuICBsZWZ0OiAwLFxuICB2ZXJ0aWNhbFBsYWNlbWVudDogXCJ0b3BcIixcbiAgaG9yaXpvbnRhbFBsYWNlbWVudDogXCJjZW50ZXJcIixcbn07XG5cbmxldCBsYXN0VG9vbHRpcEhpZGVUaW1lc3RhbXAgPSAwO1xuXG4vKiBEaXNhYmxlIGFuaW1hdGlvbiBpZiB0aW1lIGJldHdlZW4gbGFzdCBjbG9zZSBhbmQgbmV3IG9wZW4gaXMgbGVzcyB0aGFuIDUwMG1zICsgU0hPV19ISURFX0RFTEFZICovXG5mdW5jdGlvbiBnZXRBbmltYXRpb25EdXJhdGlvbigpIHtcbiAgbGV0IGFuaW1hdGlvbkR1cmF0aW9uID0gYCR7QU5JTUFUSU9OX0RVUkFUSU9OfW1zYDtcblxuICBpZiAobGFzdFRvb2x0aXBIaWRlVGltZXN0YW1wKSB7XG4gICAgY29uc3QgdGltZVNpbmNlTGFzdFRvb2x0aXAgPSBEYXRlLm5vdygpIC0gbGFzdFRvb2x0aXBIaWRlVGltZXN0YW1wO1xuXG4gICAgaWYgKHRpbWVTaW5jZUxhc3RUb29sdGlwIDwgNTAwICsgU0hPV19ISURFX0RFTEFZKSB7XG4gICAgICBhbmltYXRpb25EdXJhdGlvbiA9IFwiMG1zXCI7XG4gICAgfVxuICB9XG4gIHJldHVybiBhbmltYXRpb25EdXJhdGlvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFRvb2x0aXAoe1xuICBwbGFjZW1lbnQgPSBcImF1dG9cIixcbiAgY29udGVudCxcbiAgY2hpbGRyZW4sXG4gIGV4dGVybmFsVHJpZ2dlclJlZixcbiAgcG9ydGFsQ29udGFpbmVyLFxuICBcImRhdGEtZTJlLXRlc3QtaWRcIjogZGF0YUUyZVRlc3RJZCxcbiAgb25WaXNpYmlsaXR5Q2hhbmdlLFxufTogVG9vbHRpcFByb3BzKTogUmVhY3QuUmVhY3RFbGVtZW50IHtcbiAgY29uc3QgdG9vbHRpcElkID0gdXNlTWVtbyhcbiAgICAoKSA9PiBgRFNUb29sdGlwXyR7TWF0aC5mbG9vcihEYXRlLm5vdygpICogTWF0aC5yYW5kb20oKSl9YCxcbiAgICBbXVxuICApO1xuICBjb25zdCBbcG9zaXRpb24sIHNldFBvc2l0aW9uXSA9IHVzZVN0YXRlKGluaXRpYWxQb3NpdGlvbik7XG4gIGNvbnN0IFtpc1Zpc2libGUsIHNldFZpc2libGVdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCB0cmlnZ2VyZWRCeUV2ZW50ID0gdXNlUmVmKG51bGwpOyAvLyBpbmRpY2F0ZXMgaWYgdHJpZ2dlcmVkIGJ5IGhvdmVyIG9yIGZvY3VzXG4gIGNvbnN0IGlzVG9vbHRpcEhvdmVyZWQgPSB1c2VSZWYoZmFsc2UpO1xuICBjb25zdCBpc1RyaWdnZXJIb3ZlcmVkID0gdXNlUmVmKGZhbHNlKTtcbiAgY29uc3QgaW50ZXJuYWxUcmlnZ2VyUmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCB0b29sdGlwUmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBkb2N1bWVudCA9IHVzZURvY3VtZW50KCk7XG4gIGNvbnN0IHdpbmRvdyA9IHVzZVdpbmRvdygpO1xuICBjb25zdCBoaWRlVG9vbHRpcFRpbWVvdXRJZCA9IHVzZVJlZihudWxsKTtcbiAgY29uc3Qgc2hvd1Rvb2x0aXBUaW1lb3V0SWQgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IHRyaWdnZXJSZWYgPSBleHRlcm5hbFRyaWdnZXJSZWYgfHwgaW50ZXJuYWxUcmlnZ2VyUmVmO1xuXG4gIGNvbnN0IHRvZ2dsZVZpc2liaWxpdHkgPSB1c2VDYWxsYmFjayhcbiAgICAoc3RhdHVzOiBib29sZWFuKSA9PiB7XG4gICAgICBzZXRWaXNpYmxlKHN0YXR1cyk7XG5cbiAgICAgIGlmIChvblZpc2liaWxpdHlDaGFuZ2UpIHtcbiAgICAgICAgb25WaXNpYmlsaXR5Q2hhbmdlKHN0YXR1cyk7XG4gICAgICB9XG5cbiAgICAgIC8vIGxvZyB0aW1lIHdoZW4gdG9vbHRpcCBjbG9zZXNcbiAgICAgIGlmICghc3RhdHVzKSB7XG4gICAgICAgIGxhc3RUb29sdGlwSGlkZVRpbWVzdGFtcCA9IERhdGUubm93KCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbb25WaXNpYmlsaXR5Q2hhbmdlXVxuICApO1xuXG4gIGNvbnN0IGhhbmRsZVRyaWdnZXJQb2ludGVyRW50ZXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaXNUcmlnZ2VySG92ZXJlZC5jdXJyZW50ID0gdHJ1ZTtcbiAgICBpZiAoIWlzVG9vbHRpcEhvdmVyZWQuY3VycmVudCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHNob3dUb29sdGlwVGltZW91dElkLmN1cnJlbnQpO1xuICAgICAgLy8gRGVsYXkgc2hvdyB0b29sdGlwIHRvIHByZXZlbnQgZmxpY2tlcmluZyB3aGVuIG1vdXNlIG1vdmVzIHF1aWNrbHkgb3ZlciB0cmlnZ2VyXG4gICAgICBzaG93VG9vbHRpcFRpbWVvdXRJZC5jdXJyZW50ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmIChpc1RyaWdnZXJIb3ZlcmVkLmN1cnJlbnQpIHtcbiAgICAgICAgICB0cmlnZ2VyZWRCeUV2ZW50LmN1cnJlbnQgPSBcImhvdmVyXCI7XG4gICAgICAgICAgdG9nZ2xlVmlzaWJpbGl0eSh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfSwgU0hPV19ISURFX0RFTEFZKTtcbiAgICB9XG4gIH0sIFt0b2dnbGVWaXNpYmlsaXR5XSk7XG5cbiAgY29uc3QgaGFuZGxlVHJpZ2dlclBvaW50ZXJMZWF2ZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpc1RyaWdnZXJIb3ZlcmVkLmN1cnJlbnQgPSBmYWxzZTtcbiAgICBjbGVhclRpbWVvdXQoaGlkZVRvb2x0aXBUaW1lb3V0SWQuY3VycmVudCk7XG4gICAgLy8gRGVsYXkgcmVtb3ZpbmcgdG9vbHRpcCBmcm9tIERPTSB0byBhbGxvdyBob3ZlciBvdmVyIHRvb2x0aXAgZWxlbWVudFxuICAgIGhpZGVUb29sdGlwVGltZW91dElkLmN1cnJlbnQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgIWlzVG9vbHRpcEhvdmVyZWQuY3VycmVudCAmJlxuICAgICAgICB0cmlnZ2VyZWRCeUV2ZW50LmN1cnJlbnQgPT09IFwiaG92ZXJcIiAmJlxuICAgICAgICAhaXNUcmlnZ2VySG92ZXJlZC5jdXJyZW50XG4gICAgICApIHtcbiAgICAgICAgdG9nZ2xlVmlzaWJpbGl0eShmYWxzZSk7XG4gICAgICB9XG4gICAgfSwgU0hPV19ISURFX0RFTEFZKTtcbiAgfSwgW3RvZ2dsZVZpc2liaWxpdHldKTtcblxuICBjb25zdCBoYW5kbGVUcmlnZ2VyRm9jdXMgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgdHJpZ2dlcmVkQnlFdmVudC5jdXJyZW50ID0gXCJmb2N1c1wiO1xuICAgIHRvZ2dsZVZpc2liaWxpdHkodHJ1ZSk7XG4gIH0sIFt0b2dnbGVWaXNpYmlsaXR5XSk7XG5cbiAgY29uc3QgaGFuZGxlVHJpZ2dlckJsdXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKHRyaWdnZXJlZEJ5RXZlbnQuY3VycmVudCA9PT0gXCJmb2N1c1wiKSB7XG4gICAgICB0b2dnbGVWaXNpYmlsaXR5KGZhbHNlKTtcbiAgICB9XG4gIH0sIFt0b2dnbGVWaXNpYmlsaXR5XSk7XG5cbiAgY29uc3QgaGFuZGxlVHJpZ2dlcktleURvd24gPSB1c2VDYWxsYmFjayhcbiAgICAoZXZ0KSA9PiB7XG4gICAgICBpZiAoZXZ0LmtleSA9PT0gXCJFc2NhcGVcIikge1xuICAgICAgICB0b2dnbGVWaXNpYmlsaXR5KGZhbHNlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFt0b2dnbGVWaXNpYmlsaXR5XVxuICApO1xuXG4gIGNvbnN0IGhhbmRsZVRvb2x0aXBQb2ludGVyRW50ZXIgPSAoKSA9PiB7XG4gICAgaXNUb29sdGlwSG92ZXJlZC5jdXJyZW50ID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVUb29sdGlwUG9pbnRlckxlYXZlID0gKCkgPT4ge1xuICAgIGlzVG9vbHRpcEhvdmVyZWQuY3VycmVudCA9IGZhbHNlO1xuICAgIGlmICh0cmlnZ2VyZWRCeUV2ZW50LmN1cnJlbnQgPT09IFwiaG92ZXJcIikge1xuICAgICAgdG9nZ2xlVmlzaWJpbGl0eShmYWxzZSk7XG4gICAgfVxuICB9O1xuXG4gIHVzZUVmZmVjdChcbiAgICAoKSA9PiAoKSA9PiB7XG4gICAgICAvLyBjbGVhciB0aW1lcnNcbiAgICAgIGNsZWFyVGltZW91dChzaG93VG9vbHRpcFRpbWVvdXRJZC5jdXJyZW50KTtcbiAgICAgIGNsZWFyVGltZW91dChoaWRlVG9vbHRpcFRpbWVvdXRJZC5jdXJyZW50KTtcbiAgICB9LFxuICAgIFtdXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBsZXQgdHJpZ2dlcjogSFRNTEVsZW1lbnQ7XG5cbiAgICBpZiAoZXh0ZXJuYWxUcmlnZ2VyUmVmICYmIGV4dGVybmFsVHJpZ2dlclJlZi5jdXJyZW50ICYmICFjaGlsZHJlbikge1xuICAgICAgdHJpZ2dlciA9IGV4dGVybmFsVHJpZ2dlclJlZi5jdXJyZW50O1xuXG4gICAgICB0cmlnZ2VyLnNldEF0dHJpYnV0ZShcInRhYmluZGV4XCIsIFwiMFwiKTtcbiAgICAgIHRyaWdnZXIuYWRkRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJlbnRlclwiLCBoYW5kbGVUcmlnZ2VyUG9pbnRlckVudGVyKTtcbiAgICAgIHRyaWdnZXIuYWRkRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJsZWF2ZVwiLCBoYW5kbGVUcmlnZ2VyUG9pbnRlckxlYXZlKTtcbiAgICAgIHRyaWdnZXIuYWRkRXZlbnRMaXN0ZW5lcihcImZvY3VzXCIsIGhhbmRsZVRyaWdnZXJGb2N1cyk7XG4gICAgICB0cmlnZ2VyLmFkZEV2ZW50TGlzdGVuZXIoXCJibHVyXCIsIGhhbmRsZVRyaWdnZXJCbHVyKTtcbiAgICAgIHRyaWdnZXIuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgaGFuZGxlVHJpZ2dlcktleURvd24pO1xuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAodHJpZ2dlcikge1xuICAgICAgICB0cmlnZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJwb2ludGVyZW50ZXJcIiwgaGFuZGxlVHJpZ2dlclBvaW50ZXJFbnRlcik7XG4gICAgICAgIHRyaWdnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJsZWF2ZVwiLCBoYW5kbGVUcmlnZ2VyUG9pbnRlckxlYXZlKTtcbiAgICAgICAgdHJpZ2dlci5yZW1vdmVFdmVudExpc3RlbmVyKFwiZm9jdXNcIiwgaGFuZGxlVHJpZ2dlckZvY3VzKTtcbiAgICAgICAgdHJpZ2dlci5yZW1vdmVFdmVudExpc3RlbmVyKFwiYmx1clwiLCBoYW5kbGVUcmlnZ2VyQmx1cik7XG4gICAgICAgIHRyaWdnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgaGFuZGxlVHJpZ2dlcktleURvd24pO1xuICAgICAgfVxuICAgIH07XG4gIH0sIFtcbiAgICBleHRlcm5hbFRyaWdnZXJSZWYsXG4gICAgY2hpbGRyZW4sXG4gICAgaGFuZGxlVHJpZ2dlclBvaW50ZXJFbnRlcixcbiAgICBoYW5kbGVUcmlnZ2VyUG9pbnRlckxlYXZlLFxuICAgIGhhbmRsZVRyaWdnZXJGb2N1cyxcbiAgICBoYW5kbGVUcmlnZ2VyQmx1cixcbiAgICBoYW5kbGVUcmlnZ2VyS2V5RG93bixcbiAgXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZXh0ZXJuYWxUcmlnZ2VyUmVmICYmIGV4dGVybmFsVHJpZ2dlclJlZi5jdXJyZW50ICYmICFjaGlsZHJlbikge1xuICAgICAgY29uc3QgdHJpZ2dlciA9IGV4dGVybmFsVHJpZ2dlclJlZi5jdXJyZW50O1xuXG4gICAgICBpZiAoaXNWaXNpYmxlKSB7XG4gICAgICAgIHRyaWdnZXIuc2V0QXR0cmlidXRlKFwiYXJpYS1kZXNjcmliZWRieVwiLCB0b29sdGlwSWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdHJpZ2dlci5yZW1vdmVBdHRyaWJ1dGUoXCJhcmlhLWRlc2NyaWJlZGJ5XCIpO1xuICAgICAgfVxuICAgIH1cbiAgfSwgW2V4dGVybmFsVHJpZ2dlclJlZiwgY2hpbGRyZW4sIHRvb2x0aXBJZCwgaXNWaXNpYmxlXSk7XG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNWaXNpYmxlICYmIHRyaWdnZXJSZWYuY3VycmVudCAmJiB0b29sdGlwUmVmLmN1cnJlbnQpIHtcbiAgICAgIC8vIGNhbGN1bGF0ZSB0b29sdGlwIHBvc2l0aW9uXG4gICAgICBzZXRQb3NpdGlvbihcbiAgICAgICAgZ2V0VG9vbHRpcFBvc2l0aW9uKHBsYWNlbWVudCwgdHJpZ2dlclJlZiwgdG9vbHRpcFJlZiwgZG9jdW1lbnQsIHdpbmRvdylcbiAgICAgICk7XG4gICAgfVxuICB9LCBbaXNWaXNpYmxlLCBwbGFjZW1lbnQsIHRyaWdnZXJSZWYsIGRvY3VtZW50LCB3aW5kb3ddKTtcblxuICBsZXQgcG9ydGFsO1xuXG4gIGlmIChpc1Zpc2libGUpIHtcbiAgICBjb25zdCB0b29sdGlwRWxtID0gKFxuICAgICAgPFN1YlRoZW1lUHJvdmlkZXIgbmFtZT1cImludmVydGVkXCI+XG4gICAgICAgIDxTdHlsZWRDb250YWluZXJcbiAgICAgICAgICBkYXRhLWUyZS10ZXN0LWlkPXtkYXRhRTJlVGVzdElkfVxuICAgICAgICAgIGRhdGEtZHMtaWQ9XCJUb29sdGlwXCJcbiAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgdG9wOiBwb3NpdGlvbi50b3AsXG4gICAgICAgICAgICBsZWZ0OiBwb3NpdGlvbi5sZWZ0LFxuICAgICAgICAgICAgYW5pbWF0aW9uRHVyYXRpb246IGdldEFuaW1hdGlvbkR1cmF0aW9uKCksXG4gICAgICAgICAgfX1cbiAgICAgICAgICByZWY9e3Rvb2x0aXBSZWZ9XG4gICAgICAgICAgaWQ9e3Rvb2x0aXBJZH1cbiAgICAgICAgICByb2xlPVwidG9vbHRpcFwiXG4gICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICBob3Jpem9udGFsUGxhY2VtZW50PXtwb3NpdGlvbi5ob3Jpem9udGFsUGxhY2VtZW50fVxuICAgICAgICAgIHZlcnRpY2FsUGxhY2VtZW50PXtwb3NpdGlvbi52ZXJ0aWNhbFBsYWNlbWVudH1cbiAgICAgICAgICBvblBvaW50ZXJFbnRlcj17aGFuZGxlVG9vbHRpcFBvaW50ZXJFbnRlcn1cbiAgICAgICAgICBvblBvaW50ZXJMZWF2ZT17aGFuZGxlVG9vbHRpcFBvaW50ZXJMZWF2ZX1cbiAgICAgICAgPlxuICAgICAgICAgIDxUZXh0IHNpemU9XCJzXCI+e2NvbnRlbnR9PC9UZXh0PlxuICAgICAgICAgIDxTdHlsZWRBcnJvd1xuICAgICAgICAgICAgaG9yaXpvbnRhbFBsYWNlbWVudD17cG9zaXRpb24uaG9yaXpvbnRhbFBsYWNlbWVudH1cbiAgICAgICAgICAgIHZlcnRpY2FsUGxhY2VtZW50PXtwb3NpdGlvbi52ZXJ0aWNhbFBsYWNlbWVudH1cbiAgICAgICAgICAvPlxuICAgICAgICA8L1N0eWxlZENvbnRhaW5lcj5cbiAgICAgIDwvU3ViVGhlbWVQcm92aWRlcj5cbiAgICApO1xuXG4gICAgcG9ydGFsID0gY3JlYXRlUG9ydGFsKHRvb2x0aXBFbG0sIHBvcnRhbENvbnRhaW5lciB8fCBkb2N1bWVudC5ib2R5KTtcbiAgfVxuXG4gIGNvbnN0IHRyaWdnZXJFbG0gPSBjaGlsZHJlblxuICAgID8gUmVhY3QuY2xvbmVFbGVtZW50KGNoaWxkcmVuLCB7XG4gICAgICAgIHJlZjogdHJpZ2dlclJlZixcbiAgICAgICAgLi4uKGlzVmlzaWJsZSAmJiB7XG4gICAgICAgICAgXCJhcmlhLWRlc2NyaWJlZGJ5XCI6IHRvb2x0aXBJZCxcbiAgICAgICAgfSksXG4gICAgICAgIHRhYkluZGV4OiAwLFxuICAgICAgICBvblBvaW50ZXJFbnRlcjogaGFuZGxlVHJpZ2dlclBvaW50ZXJFbnRlcixcbiAgICAgICAgb25Qb2ludGVyTGVhdmU6IGhhbmRsZVRyaWdnZXJQb2ludGVyTGVhdmUsXG4gICAgICAgIG9uRm9jdXM6IGhhbmRsZVRyaWdnZXJGb2N1cyxcbiAgICAgICAgb25CbHVyOiBoYW5kbGVUcmlnZ2VyQmx1cixcbiAgICAgICAgb25LZXlEb3duOiBoYW5kbGVUcmlnZ2VyS2V5RG93bixcbiAgICAgIH0pXG4gICAgOiBudWxsO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHt0cmlnZ2VyRWxtfVxuICAgICAge3BvcnRhbH1cbiAgICA8Lz5cbiAgKTtcbn1cbiJdfQ== */");
|
|
47
|
+
const StyledArrow = /*#__PURE__*/_styled("div", process.env.NODE_ENV === "production" ? {
|
|
48
|
+
target: "e2kei840"
|
|
49
|
+
} : {
|
|
50
|
+
target: "e2kei840",
|
|
51
|
+
label: "StyledArrow"
|
|
52
|
+
})(_ref2 => {
|
|
53
|
+
let {
|
|
54
|
+
theme,
|
|
55
|
+
verticalPlacement,
|
|
56
|
+
horizontalPlacement
|
|
57
|
+
} = _ref2;
|
|
58
|
+
return {
|
|
59
|
+
position: "absolute",
|
|
60
|
+
width: 0,
|
|
61
|
+
height: 0,
|
|
62
|
+
borderLeft: `${ARROW_SIZE}px solid transparent`,
|
|
63
|
+
borderRight: `${ARROW_SIZE}px solid transparent`,
|
|
64
|
+
...(verticalPlacement === "top" && {
|
|
65
|
+
top: "100%",
|
|
66
|
+
borderTop: `${ARROW_SIZE}px solid ${theme.values.color.background.primary.default}`
|
|
67
|
+
}),
|
|
68
|
+
...(verticalPlacement === "bottom" && {
|
|
69
|
+
top: `-${ARROW_SIZE}px`,
|
|
70
|
+
borderBottom: `${ARROW_SIZE}px solid ${theme.values.color.background.primary.default}`
|
|
71
|
+
}),
|
|
72
|
+
...(horizontalPlacement === "center" && {
|
|
73
|
+
left: "50%",
|
|
74
|
+
transform: "translate(-50%)"
|
|
75
|
+
}),
|
|
76
|
+
...(horizontalPlacement === "right" && {
|
|
77
|
+
left: `${ARROW_OFFSET}px`
|
|
78
|
+
}),
|
|
79
|
+
...(horizontalPlacement === "left" && {
|
|
80
|
+
right: `${ARROW_OFFSET}px`
|
|
81
|
+
})
|
|
82
|
+
};
|
|
83
|
+
}, process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRvb2x0aXAudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWdIb0IiLCJmaWxlIjoiVG9vbHRpcC50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHtcbiAgdXNlU3RhdGUsXG4gIHVzZVJlZixcbiAgdXNlTGF5b3V0RWZmZWN0LFxuICB1c2VFZmZlY3QsXG4gIHVzZUNhbGxiYWNrLFxuICBNdXRhYmxlUmVmT2JqZWN0LFxuICB1c2VNZW1vLFxufSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZFwiO1xuaW1wb3J0IHsga2V5ZnJhbWVzIH0gZnJvbSBcIkBlbW90aW9uL3JlYWN0XCI7XG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tIFwicmVhY3QtZG9tXCI7XG5pbXBvcnQgeyB1c2VEb2N1bWVudCB9IGZyb20gXCIuLi8uLi9zaGFyZWQvdXNlRG9jdW1lbnRcIjtcbmltcG9ydCB7IHVzZVdpbmRvdyB9IGZyb20gXCIuLi8uLi9zaGFyZWQvdXNlV2luZG93XCI7XG5pbXBvcnQgeyBTdWJUaGVtZVByb3ZpZGVyIH0gZnJvbSBcIi4uL1N1YlRoZW1lUHJvdmlkZXIvU3ViVGhlbWVQcm92aWRlclwiO1xuaW1wb3J0IHsgVGV4dCB9IGZyb20gXCIuLi9UeXBvZ3JhcGh5L1RleHQvVGV4dFwiO1xuaW1wb3J0IHpJbmRpY2VzIGZyb20gXCIuLi8uLi8uLi9idWlsZC10b2tlbnMvX3ppbmRleC5qc29uXCI7XG5cbmltcG9ydCB7XG4gIEFSUk9XX1NJWkUsXG4gIEFSUk9XX09GRlNFVCxcbiAgQU5JTUFUSU9OX0RJU1RBTkNFLFxuICBnZXRUb29sdGlwUG9zaXRpb24sXG59IGZyb20gXCIuL3V0aWxzXCI7XG5cbmV4cG9ydCB0eXBlIEJhc2VQcm9wcyA9IHtcbiAgLyogVG9vbHRpcCBjb250ZW50ICovXG4gIGNvbnRlbnQ6IHN0cmluZztcbiAgLyogUGxhY2VtZW50ICovXG4gIHBsYWNlbWVudD86XG4gICAgfCBcImF1dG9cIlxuICAgIHwgXCJ0b3BcIlxuICAgIHwgXCJib3R0b21cIlxuICAgIHwgXCJ0b3AtbGVmdFwiXG4gICAgfCBcInRvcC1yaWdodFwiXG4gICAgfCBcImJvdHRvbS1sZWZ0XCJcbiAgICB8IFwiYm90dG9tLXJpZ2h0XCI7XG4gIC8qIEN1c3RvbSBwb3J0YWwgY29udGFpbmVyIHRvIHJlbmRlciB0b29sdGlwIGludG8gKi9cbiAgcG9ydGFsQ29udGFpbmVyPzogSFRNTEVsZW1lbnQ7XG4gIFwiZGF0YS1lMmUtdGVzdC1pZFwiPzogc3RyaW5nO1xuICAvKiBDYWxsZWQgd2hlbiB0b29sdGlwIGFwcGVhcnMgYW5kIGRpc2FwcGVhcnMgKi9cbiAgb25WaXNpYmlsaXR5Q2hhbmdlPzogKGlzVmlzaWJsZTogYm9vbGVhbikgPT4gdm9pZDtcbn07XG5cbmV4cG9ydCB0eXBlIENvbmRpdGlvbmFsUHJvcHMgPVxuICB8IHtcbiAgICAgIGV4dGVybmFsVHJpZ2dlclJlZj86IG5ldmVyO1xuICAgICAgLyogVHJpZ2dlciBlbGVtZW50IC0gd3JhcCB0cmlnZ2VyIGVsZW1lbnQgd2l0aGluIFRvb2x0aXAgLSB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgdHJpZ2dlciBwcm9wICovXG4gICAgICBjaGlsZHJlbjogUmVhY3QuUmVhY3RFbGVtZW50O1xuICAgIH1cbiAgfCB7XG4gICAgICBjaGlsZHJlbj86IG5ldmVyO1xuICAgICAgLyogVHJpZ2dlciBlbGVtZW50IHJlZiAtIHBhc3MgaW4gYW4gZXh0ZXJuYWwgdHJpZ2dlciBlbGVtZW50ICovXG4gICAgICBleHRlcm5hbFRyaWdnZXJSZWY6IE11dGFibGVSZWZPYmplY3Q8YW55PjtcbiAgICB9O1xuXG5leHBvcnQgdHlwZSBUb29sdGlwUHJvcHMgPSBCYXNlUHJvcHMgJiBDb25kaXRpb25hbFByb3BzO1xuXG5leHBvcnQgdHlwZSBUb29sdGlwUG9zaXRpb24gPSB7XG4gIHRvcDogbnVtYmVyO1xuICBsZWZ0OiBudW1iZXI7XG4gIGhvcml6b250YWxQbGFjZW1lbnQ6IFwibGVmdFwiIHwgXCJyaWdodFwiIHwgXCJjZW50ZXJcIjtcbiAgdmVydGljYWxQbGFjZW1lbnQ6IFwidG9wXCIgfCBcImJvdHRvbVwiO1xufTtcblxudHlwZSBTdHlsZWRDb250YWluZXJQcm9wcyA9IHtcbiAgaG9yaXpvbnRhbFBsYWNlbWVudDogVG9vbHRpcFBvc2l0aW9uW1wiaG9yaXpvbnRhbFBsYWNlbWVudFwiXTtcbiAgdmVydGljYWxQbGFjZW1lbnQ6IFRvb2x0aXBQb3NpdGlvbltcInZlcnRpY2FsUGxhY2VtZW50XCJdO1xufTtcblxuY29uc3QgQU5JTUFUSU9OX0RVUkFUSU9OID0gMjAwO1xuY29uc3QgU0hPV19ISURFX0RFTEFZID0gMjAwO1xuXG5jb25zdCBTdHlsZWRDb250YWluZXIgPSBzdHlsZWQuZGl2PFN0eWxlZENvbnRhaW5lclByb3BzPihcbiAgKHsgdGhlbWUsIGhvcml6b250YWxQbGFjZW1lbnQsIHZlcnRpY2FsUGxhY2VtZW50IH0pID0+IHtcbiAgICBjb25zdCBhbmltYXRpb25EaXN0YW5jZSA9XG4gICAgICB2ZXJ0aWNhbFBsYWNlbWVudCA9PT0gXCJ0b3BcIlxuICAgICAgICA/IGAke0FOSU1BVElPTl9ESVNUQU5DRX1weGBcbiAgICAgICAgOiBgLSR7QU5JTUFUSU9OX0RJU1RBTkNFfXB4YDtcbiAgICBjb25zdCBhbmltYXRpb24gPSBrZXlmcmFtZXMoe1xuICAgICAgdG86IHtcbiAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgdHJhbnNmb3JtOlxuICAgICAgICAgIGhvcml6b250YWxQbGFjZW1lbnQgPT09IFwiY2VudGVyXCJcbiAgICAgICAgICAgID8gYHRyYW5zbGF0ZSgtNTAlLCAke2FuaW1hdGlvbkRpc3RhbmNlfSlgXG4gICAgICAgICAgICA6IGB0cmFuc2xhdGVZKCR7YW5pbWF0aW9uRGlzdGFuY2V9KWAsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgICB6SW5kZXg6IHpJbmRpY2VzLnRvb2x0aXAudmFsdWUsXG4gICAgICBvcGFjaXR5OiAwLFxuICAgICAgYW5pbWF0aW9uOiBgJHtBTklNQVRJT05fRFVSQVRJT059bXMgZWFzZS1vdXQgZm9yd2FyZHMgJHthbmltYXRpb259YCxcbiAgICAgIGJvcmRlclJhZGl1czogdGhlbWUudmFyaWFibGVzLnNpemUuYm9yZGVyUmFkaXVzLnhzLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS52YWx1ZXMuY29sb3IuYmFja2dyb3VuZC5wcmltYXJ5LmRlZmF1bHQsXG4gICAgICBtYXhXaWR0aDogXCIyMjRweFwiLFxuICAgICAgYm94U2l6aW5nOiBcImJvcmRlci1ib3hcIixcbiAgICAgIHBhZGRpbmc6IGAke3RoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcueHN9ICR7dGhlbWUudmFyaWFibGVzLnNpemUuc3BhY2luZy5zfWAsXG5cbiAgICAgIC4uLihob3Jpem9udGFsUGxhY2VtZW50ID09PSBcImNlbnRlclwiICYmIHtcbiAgICAgICAgdHJhbnNmb3JtOiBcInRyYW5zbGF0ZSgtNTAlKVwiLFxuICAgICAgfSksXG4gICAgfTtcbiAgfVxuKTtcblxudHlwZSBTdHlsZWRBcnJvd1Byb3BzID0ge1xuICB2ZXJ0aWNhbFBsYWNlbWVudDogVG9vbHRpcFBvc2l0aW9uW1widmVydGljYWxQbGFjZW1lbnRcIl07XG4gIGhvcml6b250YWxQbGFjZW1lbnQ6IFRvb2x0aXBQb3NpdGlvbltcImhvcml6b250YWxQbGFjZW1lbnRcIl07XG59O1xuXG5jb25zdCBTdHlsZWRBcnJvdyA9IHN0eWxlZC5kaXY8U3R5bGVkQXJyb3dQcm9wcz4oXG4gICh7IHRoZW1lLCB2ZXJ0aWNhbFBsYWNlbWVudCwgaG9yaXpvbnRhbFBsYWNlbWVudCB9KSA9PiAoe1xuICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgd2lkdGg6IDAsXG4gICAgaGVpZ2h0OiAwLFxuICAgIGJvcmRlckxlZnQ6IGAke0FSUk9XX1NJWkV9cHggc29saWQgdHJhbnNwYXJlbnRgLFxuICAgIGJvcmRlclJpZ2h0OiBgJHtBUlJPV19TSVpFfXB4IHNvbGlkIHRyYW5zcGFyZW50YCxcblxuICAgIC4uLih2ZXJ0aWNhbFBsYWNlbWVudCA9PT0gXCJ0b3BcIiAmJiB7XG4gICAgICB0b3A6IFwiMTAwJVwiLFxuICAgICAgYm9yZGVyVG9wOiBgJHtBUlJPV19TSVpFfXB4IHNvbGlkICR7dGhlbWUudmFsdWVzLmNvbG9yLmJhY2tncm91bmQucHJpbWFyeS5kZWZhdWx0fWAsXG4gICAgfSksXG5cbiAgICAuLi4odmVydGljYWxQbGFjZW1lbnQgPT09IFwiYm90dG9tXCIgJiYge1xuICAgICAgdG9wOiBgLSR7QVJST1dfU0laRX1weGAsXG4gICAgICBib3JkZXJCb3R0b206IGAke0FSUk9XX1NJWkV9cHggc29saWQgJHt0aGVtZS52YWx1ZXMuY29sb3IuYmFja2dyb3VuZC5wcmltYXJ5LmRlZmF1bHR9YCxcbiAgICB9KSxcblxuICAgIC4uLihob3Jpem9udGFsUGxhY2VtZW50ID09PSBcImNlbnRlclwiICYmIHtcbiAgICAgIGxlZnQ6IFwiNTAlXCIsXG4gICAgICB0cmFuc2Zvcm06IFwidHJhbnNsYXRlKC01MCUpXCIsXG4gICAgfSksXG5cbiAgICAuLi4oaG9yaXpvbnRhbFBsYWNlbWVudCA9PT0gXCJyaWdodFwiICYmIHtcbiAgICAgIGxlZnQ6IGAke0FSUk9XX09GRlNFVH1weGAsXG4gICAgfSksXG5cbiAgICAuLi4oaG9yaXpvbnRhbFBsYWNlbWVudCA9PT0gXCJsZWZ0XCIgJiYge1xuICAgICAgcmlnaHQ6IGAke0FSUk9XX09GRlNFVH1weGAsXG4gICAgfSksXG4gIH0pXG4pO1xuXG5jb25zdCBpbml0aWFsUG9zaXRpb246IFRvb2x0aXBQb3NpdGlvbiA9IHtcbiAgdG9wOiAwLFxuICBsZWZ0OiAwLFxuICB2ZXJ0aWNhbFBsYWNlbWVudDogXCJ0b3BcIixcbiAgaG9yaXpvbnRhbFBsYWNlbWVudDogXCJjZW50ZXJcIixcbn07XG5cbmxldCBsYXN0VG9vbHRpcEhpZGVUaW1lc3RhbXAgPSAwO1xuXG4vKiBEaXNhYmxlIGFuaW1hdGlvbiBpZiB0aW1lIGJldHdlZW4gbGFzdCBjbG9zZSBhbmQgbmV3IG9wZW4gaXMgbGVzcyB0aGFuIDUwMG1zICsgU0hPV19ISURFX0RFTEFZICovXG5mdW5jdGlvbiBnZXRBbmltYXRpb25EdXJhdGlvbigpIHtcbiAgbGV0IGFuaW1hdGlvbkR1cmF0aW9uID0gYCR7QU5JTUFUSU9OX0RVUkFUSU9OfW1zYDtcblxuICBpZiAobGFzdFRvb2x0aXBIaWRlVGltZXN0YW1wKSB7XG4gICAgY29uc3QgdGltZVNpbmNlTGFzdFRvb2x0aXAgPSBEYXRlLm5vdygpIC0gbGFzdFRvb2x0aXBIaWRlVGltZXN0YW1wO1xuXG4gICAgaWYgKHRpbWVTaW5jZUxhc3RUb29sdGlwIDwgNTAwICsgU0hPV19ISURFX0RFTEFZKSB7XG4gICAgICBhbmltYXRpb25EdXJhdGlvbiA9IFwiMG1zXCI7XG4gICAgfVxuICB9XG4gIHJldHVybiBhbmltYXRpb25EdXJhdGlvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFRvb2x0aXAoe1xuICBwbGFjZW1lbnQgPSBcImF1dG9cIixcbiAgY29udGVudCxcbiAgY2hpbGRyZW4sXG4gIGV4dGVybmFsVHJpZ2dlclJlZixcbiAgcG9ydGFsQ29udGFpbmVyLFxuICBcImRhdGEtZTJlLXRlc3QtaWRcIjogZGF0YUUyZVRlc3RJZCxcbiAgb25WaXNpYmlsaXR5Q2hhbmdlLFxufTogVG9vbHRpcFByb3BzKTogUmVhY3QuUmVhY3RFbGVtZW50IHtcbiAgY29uc3QgdG9vbHRpcElkID0gdXNlTWVtbyhcbiAgICAoKSA9PiBgRFNUb29sdGlwXyR7TWF0aC5mbG9vcihEYXRlLm5vdygpICogTWF0aC5yYW5kb20oKSl9YCxcbiAgICBbXVxuICApO1xuICBjb25zdCBbcG9zaXRpb24sIHNldFBvc2l0aW9uXSA9IHVzZVN0YXRlKGluaXRpYWxQb3NpdGlvbik7XG4gIGNvbnN0IFtpc1Zpc2libGUsIHNldFZpc2libGVdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCB0cmlnZ2VyZWRCeUV2ZW50ID0gdXNlUmVmKG51bGwpOyAvLyBpbmRpY2F0ZXMgaWYgdHJpZ2dlcmVkIGJ5IGhvdmVyIG9yIGZvY3VzXG4gIGNvbnN0IGlzVG9vbHRpcEhvdmVyZWQgPSB1c2VSZWYoZmFsc2UpO1xuICBjb25zdCBpc1RyaWdnZXJIb3ZlcmVkID0gdXNlUmVmKGZhbHNlKTtcbiAgY29uc3QgaW50ZXJuYWxUcmlnZ2VyUmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCB0b29sdGlwUmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBkb2N1bWVudCA9IHVzZURvY3VtZW50KCk7XG4gIGNvbnN0IHdpbmRvdyA9IHVzZVdpbmRvdygpO1xuICBjb25zdCBoaWRlVG9vbHRpcFRpbWVvdXRJZCA9IHVzZVJlZihudWxsKTtcbiAgY29uc3Qgc2hvd1Rvb2x0aXBUaW1lb3V0SWQgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IHRyaWdnZXJSZWYgPSBleHRlcm5hbFRyaWdnZXJSZWYgfHwgaW50ZXJuYWxUcmlnZ2VyUmVmO1xuXG4gIGNvbnN0IHRvZ2dsZVZpc2liaWxpdHkgPSB1c2VDYWxsYmFjayhcbiAgICAoc3RhdHVzOiBib29sZWFuKSA9PiB7XG4gICAgICBzZXRWaXNpYmxlKHN0YXR1cyk7XG5cbiAgICAgIGlmIChvblZpc2liaWxpdHlDaGFuZ2UpIHtcbiAgICAgICAgb25WaXNpYmlsaXR5Q2hhbmdlKHN0YXR1cyk7XG4gICAgICB9XG5cbiAgICAgIC8vIGxvZyB0aW1lIHdoZW4gdG9vbHRpcCBjbG9zZXNcbiAgICAgIGlmICghc3RhdHVzKSB7XG4gICAgICAgIGxhc3RUb29sdGlwSGlkZVRpbWVzdGFtcCA9IERhdGUubm93KCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbb25WaXNpYmlsaXR5Q2hhbmdlXVxuICApO1xuXG4gIGNvbnN0IGhhbmRsZVRyaWdnZXJQb2ludGVyRW50ZXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaXNUcmlnZ2VySG92ZXJlZC5jdXJyZW50ID0gdHJ1ZTtcbiAgICBpZiAoIWlzVG9vbHRpcEhvdmVyZWQuY3VycmVudCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHNob3dUb29sdGlwVGltZW91dElkLmN1cnJlbnQpO1xuICAgICAgLy8gRGVsYXkgc2hvdyB0b29sdGlwIHRvIHByZXZlbnQgZmxpY2tlcmluZyB3aGVuIG1vdXNlIG1vdmVzIHF1aWNrbHkgb3ZlciB0cmlnZ2VyXG4gICAgICBzaG93VG9vbHRpcFRpbWVvdXRJZC5jdXJyZW50ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmIChpc1RyaWdnZXJIb3ZlcmVkLmN1cnJlbnQpIHtcbiAgICAgICAgICB0cmlnZ2VyZWRCeUV2ZW50LmN1cnJlbnQgPSBcImhvdmVyXCI7XG4gICAgICAgICAgdG9nZ2xlVmlzaWJpbGl0eSh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfSwgU0hPV19ISURFX0RFTEFZKTtcbiAgICB9XG4gIH0sIFt0b2dnbGVWaXNpYmlsaXR5XSk7XG5cbiAgY29uc3QgaGFuZGxlVHJpZ2dlclBvaW50ZXJMZWF2ZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpc1RyaWdnZXJIb3ZlcmVkLmN1cnJlbnQgPSBmYWxzZTtcbiAgICBjbGVhclRpbWVvdXQoaGlkZVRvb2x0aXBUaW1lb3V0SWQuY3VycmVudCk7XG4gICAgLy8gRGVsYXkgcmVtb3ZpbmcgdG9vbHRpcCBmcm9tIERPTSB0byBhbGxvdyBob3ZlciBvdmVyIHRvb2x0aXAgZWxlbWVudFxuICAgIGhpZGVUb29sdGlwVGltZW91dElkLmN1cnJlbnQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgIWlzVG9vbHRpcEhvdmVyZWQuY3VycmVudCAmJlxuICAgICAgICB0cmlnZ2VyZWRCeUV2ZW50LmN1cnJlbnQgPT09IFwiaG92ZXJcIiAmJlxuICAgICAgICAhaXNUcmlnZ2VySG92ZXJlZC5jdXJyZW50XG4gICAgICApIHtcbiAgICAgICAgdG9nZ2xlVmlzaWJpbGl0eShmYWxzZSk7XG4gICAgICB9XG4gICAgfSwgU0hPV19ISURFX0RFTEFZKTtcbiAgfSwgW3RvZ2dsZVZpc2liaWxpdHldKTtcblxuICBjb25zdCBoYW5kbGVUcmlnZ2VyRm9jdXMgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgdHJpZ2dlcmVkQnlFdmVudC5jdXJyZW50ID0gXCJmb2N1c1wiO1xuICAgIHRvZ2dsZVZpc2liaWxpdHkodHJ1ZSk7XG4gIH0sIFt0b2dnbGVWaXNpYmlsaXR5XSk7XG5cbiAgY29uc3QgaGFuZGxlVHJpZ2dlckJsdXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKHRyaWdnZXJlZEJ5RXZlbnQuY3VycmVudCA9PT0gXCJmb2N1c1wiKSB7XG4gICAgICB0b2dnbGVWaXNpYmlsaXR5KGZhbHNlKTtcbiAgICB9XG4gIH0sIFt0b2dnbGVWaXNpYmlsaXR5XSk7XG5cbiAgY29uc3QgaGFuZGxlVHJpZ2dlcktleURvd24gPSB1c2VDYWxsYmFjayhcbiAgICAoZXZ0KSA9PiB7XG4gICAgICBpZiAoZXZ0LmtleSA9PT0gXCJFc2NhcGVcIikge1xuICAgICAgICB0b2dnbGVWaXNpYmlsaXR5KGZhbHNlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFt0b2dnbGVWaXNpYmlsaXR5XVxuICApO1xuXG4gIGNvbnN0IGhhbmRsZVRvb2x0aXBQb2ludGVyRW50ZXIgPSAoKSA9PiB7XG4gICAgaXNUb29sdGlwSG92ZXJlZC5jdXJyZW50ID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVUb29sdGlwUG9pbnRlckxlYXZlID0gKCkgPT4ge1xuICAgIGlzVG9vbHRpcEhvdmVyZWQuY3VycmVudCA9IGZhbHNlO1xuICAgIGlmICh0cmlnZ2VyZWRCeUV2ZW50LmN1cnJlbnQgPT09IFwiaG92ZXJcIikge1xuICAgICAgdG9nZ2xlVmlzaWJpbGl0eShmYWxzZSk7XG4gICAgfVxuICB9O1xuXG4gIHVzZUVmZmVjdChcbiAgICAoKSA9PiAoKSA9PiB7XG4gICAgICAvLyBjbGVhciB0aW1lcnNcbiAgICAgIGNsZWFyVGltZW91dChzaG93VG9vbHRpcFRpbWVvdXRJZC5jdXJyZW50KTtcbiAgICAgIGNsZWFyVGltZW91dChoaWRlVG9vbHRpcFRpbWVvdXRJZC5jdXJyZW50KTtcbiAgICB9LFxuICAgIFtdXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBsZXQgdHJpZ2dlcjogSFRNTEVsZW1lbnQ7XG5cbiAgICBpZiAoZXh0ZXJuYWxUcmlnZ2VyUmVmICYmIGV4dGVybmFsVHJpZ2dlclJlZi5jdXJyZW50ICYmICFjaGlsZHJlbikge1xuICAgICAgdHJpZ2dlciA9IGV4dGVybmFsVHJpZ2dlclJlZi5jdXJyZW50O1xuXG4gICAgICB0cmlnZ2VyLnNldEF0dHJpYnV0ZShcInRhYmluZGV4XCIsIFwiMFwiKTtcbiAgICAgIHRyaWdnZXIuYWRkRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJlbnRlclwiLCBoYW5kbGVUcmlnZ2VyUG9pbnRlckVudGVyKTtcbiAgICAgIHRyaWdnZXIuYWRkRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJsZWF2ZVwiLCBoYW5kbGVUcmlnZ2VyUG9pbnRlckxlYXZlKTtcbiAgICAgIHRyaWdnZXIuYWRkRXZlbnRMaXN0ZW5lcihcImZvY3VzXCIsIGhhbmRsZVRyaWdnZXJGb2N1cyk7XG4gICAgICB0cmlnZ2VyLmFkZEV2ZW50TGlzdGVuZXIoXCJibHVyXCIsIGhhbmRsZVRyaWdnZXJCbHVyKTtcbiAgICAgIHRyaWdnZXIuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgaGFuZGxlVHJpZ2dlcktleURvd24pO1xuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAodHJpZ2dlcikge1xuICAgICAgICB0cmlnZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJwb2ludGVyZW50ZXJcIiwgaGFuZGxlVHJpZ2dlclBvaW50ZXJFbnRlcik7XG4gICAgICAgIHRyaWdnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJsZWF2ZVwiLCBoYW5kbGVUcmlnZ2VyUG9pbnRlckxlYXZlKTtcbiAgICAgICAgdHJpZ2dlci5yZW1vdmVFdmVudExpc3RlbmVyKFwiZm9jdXNcIiwgaGFuZGxlVHJpZ2dlckZvY3VzKTtcbiAgICAgICAgdHJpZ2dlci5yZW1vdmVFdmVudExpc3RlbmVyKFwiYmx1clwiLCBoYW5kbGVUcmlnZ2VyQmx1cik7XG4gICAgICAgIHRyaWdnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgaGFuZGxlVHJpZ2dlcktleURvd24pO1xuICAgICAgfVxuICAgIH07XG4gIH0sIFtcbiAgICBleHRlcm5hbFRyaWdnZXJSZWYsXG4gICAgY2hpbGRyZW4sXG4gICAgaGFuZGxlVHJpZ2dlclBvaW50ZXJFbnRlcixcbiAgICBoYW5kbGVUcmlnZ2VyUG9pbnRlckxlYXZlLFxuICAgIGhhbmRsZVRyaWdnZXJGb2N1cyxcbiAgICBoYW5kbGVUcmlnZ2VyQmx1cixcbiAgICBoYW5kbGVUcmlnZ2VyS2V5RG93bixcbiAgXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZXh0ZXJuYWxUcmlnZ2VyUmVmICYmIGV4dGVybmFsVHJpZ2dlclJlZi5jdXJyZW50ICYmICFjaGlsZHJlbikge1xuICAgICAgY29uc3QgdHJpZ2dlciA9IGV4dGVybmFsVHJpZ2dlclJlZi5jdXJyZW50O1xuXG4gICAgICBpZiAoaXNWaXNpYmxlKSB7XG4gICAgICAgIHRyaWdnZXIuc2V0QXR0cmlidXRlKFwiYXJpYS1kZXNjcmliZWRieVwiLCB0b29sdGlwSWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdHJpZ2dlci5yZW1vdmVBdHRyaWJ1dGUoXCJhcmlhLWRlc2NyaWJlZGJ5XCIpO1xuICAgICAgfVxuICAgIH1cbiAgfSwgW2V4dGVybmFsVHJpZ2dlclJlZiwgY2hpbGRyZW4sIHRvb2x0aXBJZCwgaXNWaXNpYmxlXSk7XG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNWaXNpYmxlICYmIHRyaWdnZXJSZWYuY3VycmVudCAmJiB0b29sdGlwUmVmLmN1cnJlbnQpIHtcbiAgICAgIC8vIGNhbGN1bGF0ZSB0b29sdGlwIHBvc2l0aW9uXG4gICAgICBzZXRQb3NpdGlvbihcbiAgICAgICAgZ2V0VG9vbHRpcFBvc2l0aW9uKHBsYWNlbWVudCwgdHJpZ2dlclJlZiwgdG9vbHRpcFJlZiwgZG9jdW1lbnQsIHdpbmRvdylcbiAgICAgICk7XG4gICAgfVxuICB9LCBbaXNWaXNpYmxlLCBwbGFjZW1lbnQsIHRyaWdnZXJSZWYsIGRvY3VtZW50LCB3aW5kb3ddKTtcblxuICBsZXQgcG9ydGFsO1xuXG4gIGlmIChpc1Zpc2libGUpIHtcbiAgICBjb25zdCB0b29sdGlwRWxtID0gKFxuICAgICAgPFN1YlRoZW1lUHJvdmlkZXIgbmFtZT1cImludmVydGVkXCI+XG4gICAgICAgIDxTdHlsZWRDb250YWluZXJcbiAgICAgICAgICBkYXRhLWUyZS10ZXN0LWlkPXtkYXRhRTJlVGVzdElkfVxuICAgICAgICAgIGRhdGEtZHMtaWQ9XCJUb29sdGlwXCJcbiAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgdG9wOiBwb3NpdGlvbi50b3AsXG4gICAgICAgICAgICBsZWZ0OiBwb3NpdGlvbi5sZWZ0LFxuICAgICAgICAgICAgYW5pbWF0aW9uRHVyYXRpb246IGdldEFuaW1hdGlvbkR1cmF0aW9uKCksXG4gICAgICAgICAgfX1cbiAgICAgICAgICByZWY9e3Rvb2x0aXBSZWZ9XG4gICAgICAgICAgaWQ9e3Rvb2x0aXBJZH1cbiAgICAgICAgICByb2xlPVwidG9vbHRpcFwiXG4gICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICBob3Jpem9udGFsUGxhY2VtZW50PXtwb3NpdGlvbi5ob3Jpem9udGFsUGxhY2VtZW50fVxuICAgICAgICAgIHZlcnRpY2FsUGxhY2VtZW50PXtwb3NpdGlvbi52ZXJ0aWNhbFBsYWNlbWVudH1cbiAgICAgICAgICBvblBvaW50ZXJFbnRlcj17aGFuZGxlVG9vbHRpcFBvaW50ZXJFbnRlcn1cbiAgICAgICAgICBvblBvaW50ZXJMZWF2ZT17aGFuZGxlVG9vbHRpcFBvaW50ZXJMZWF2ZX1cbiAgICAgICAgPlxuICAgICAgICAgIDxUZXh0IHNpemU9XCJzXCI+e2NvbnRlbnR9PC9UZXh0PlxuICAgICAgICAgIDxTdHlsZWRBcnJvd1xuICAgICAgICAgICAgaG9yaXpvbnRhbFBsYWNlbWVudD17cG9zaXRpb24uaG9yaXpvbnRhbFBsYWNlbWVudH1cbiAgICAgICAgICAgIHZlcnRpY2FsUGxhY2VtZW50PXtwb3NpdGlvbi52ZXJ0aWNhbFBsYWNlbWVudH1cbiAgICAgICAgICAvPlxuICAgICAgICA8L1N0eWxlZENvbnRhaW5lcj5cbiAgICAgIDwvU3ViVGhlbWVQcm92aWRlcj5cbiAgICApO1xuXG4gICAgcG9ydGFsID0gY3JlYXRlUG9ydGFsKHRvb2x0aXBFbG0sIHBvcnRhbENvbnRhaW5lciB8fCBkb2N1bWVudC5ib2R5KTtcbiAgfVxuXG4gIGNvbnN0IHRyaWdnZXJFbG0gPSBjaGlsZHJlblxuICAgID8gUmVhY3QuY2xvbmVFbGVtZW50KGNoaWxkcmVuLCB7XG4gICAgICAgIHJlZjogdHJpZ2dlclJlZixcbiAgICAgICAgLi4uKGlzVmlzaWJsZSAmJiB7XG4gICAgICAgICAgXCJhcmlhLWRlc2NyaWJlZGJ5XCI6IHRvb2x0aXBJZCxcbiAgICAgICAgfSksXG4gICAgICAgIHRhYkluZGV4OiAwLFxuICAgICAgICBvblBvaW50ZXJFbnRlcjogaGFuZGxlVHJpZ2dlclBvaW50ZXJFbnRlcixcbiAgICAgICAgb25Qb2ludGVyTGVhdmU6IGhhbmRsZVRyaWdnZXJQb2ludGVyTGVhdmUsXG4gICAgICAgIG9uRm9jdXM6IGhhbmRsZVRyaWdnZXJGb2N1cyxcbiAgICAgICAgb25CbHVyOiBoYW5kbGVUcmlnZ2VyQmx1cixcbiAgICAgICAgb25LZXlEb3duOiBoYW5kbGVUcmlnZ2VyS2V5RG93bixcbiAgICAgIH0pXG4gICAgOiBudWxsO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHt0cmlnZ2VyRWxtfVxuICAgICAge3BvcnRhbH1cbiAgICA8Lz5cbiAgKTtcbn1cbiJdfQ== */");
|
|
84
|
+
const initialPosition = {
|
|
85
|
+
top: 0,
|
|
86
|
+
left: 0,
|
|
87
|
+
verticalPlacement: "top",
|
|
88
|
+
horizontalPlacement: "center"
|
|
89
|
+
};
|
|
90
|
+
let lastTooltipHideTimestamp = 0;
|
|
91
|
+
|
|
92
|
+
/* Disable animation if time between last close and new open is less than 500ms + SHOW_HIDE_DELAY */
|
|
93
|
+
function getAnimationDuration() {
|
|
94
|
+
let animationDuration = `${ANIMATION_DURATION}ms`;
|
|
95
|
+
if (lastTooltipHideTimestamp) {
|
|
96
|
+
const timeSinceLastTooltip = Date.now() - lastTooltipHideTimestamp;
|
|
97
|
+
if (timeSinceLastTooltip < 500 + SHOW_HIDE_DELAY) {
|
|
98
|
+
animationDuration = "0ms";
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return animationDuration;
|
|
102
|
+
}
|
|
103
|
+
function Tooltip(_ref3) {
|
|
104
|
+
let {
|
|
105
|
+
placement = "auto",
|
|
106
|
+
content,
|
|
107
|
+
children,
|
|
108
|
+
externalTriggerRef,
|
|
109
|
+
portalContainer,
|
|
110
|
+
"data-e2e-test-id": dataE2eTestId,
|
|
111
|
+
onVisibilityChange
|
|
112
|
+
} = _ref3;
|
|
113
|
+
const tooltipId = useMemo(() => `DSTooltip_${Math.floor(Date.now() * Math.random())}`, []);
|
|
114
|
+
const [position, setPosition] = useState(initialPosition);
|
|
115
|
+
const [isVisible, setVisible] = useState(false);
|
|
116
|
+
const triggeredByEvent = useRef(null); // indicates if triggered by hover or focus
|
|
117
|
+
const isTooltipHovered = useRef(false);
|
|
118
|
+
const isTriggerHovered = useRef(false);
|
|
119
|
+
const internalTriggerRef = useRef(null);
|
|
120
|
+
const tooltipRef = useRef(null);
|
|
121
|
+
const document = useDocument();
|
|
122
|
+
const window = useWindow();
|
|
123
|
+
const hideTooltipTimeoutId = useRef(null);
|
|
124
|
+
const showTooltipTimeoutId = useRef(null);
|
|
125
|
+
const triggerRef = externalTriggerRef || internalTriggerRef;
|
|
126
|
+
const toggleVisibility = useCallback(status => {
|
|
127
|
+
setVisible(status);
|
|
128
|
+
if (onVisibilityChange) {
|
|
129
|
+
onVisibilityChange(status);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
// log time when tooltip closes
|
|
133
|
+
if (!status) {
|
|
134
|
+
lastTooltipHideTimestamp = Date.now();
|
|
135
|
+
}
|
|
136
|
+
}, [onVisibilityChange]);
|
|
137
|
+
const handleTriggerPointerEnter = useCallback(() => {
|
|
138
|
+
isTriggerHovered.current = true;
|
|
139
|
+
if (!isTooltipHovered.current) {
|
|
140
|
+
clearTimeout(showTooltipTimeoutId.current);
|
|
141
|
+
// Delay show tooltip to prevent flickering when mouse moves quickly over trigger
|
|
142
|
+
showTooltipTimeoutId.current = setTimeout(() => {
|
|
143
|
+
if (isTriggerHovered.current) {
|
|
144
|
+
triggeredByEvent.current = "hover";
|
|
145
|
+
toggleVisibility(true);
|
|
146
|
+
}
|
|
147
|
+
}, SHOW_HIDE_DELAY);
|
|
148
|
+
}
|
|
149
|
+
}, [toggleVisibility]);
|
|
150
|
+
const handleTriggerPointerLeave = useCallback(() => {
|
|
151
|
+
isTriggerHovered.current = false;
|
|
152
|
+
clearTimeout(hideTooltipTimeoutId.current);
|
|
153
|
+
// Delay removing tooltip from DOM to allow hover over tooltip element
|
|
154
|
+
hideTooltipTimeoutId.current = setTimeout(() => {
|
|
155
|
+
if (!isTooltipHovered.current && triggeredByEvent.current === "hover" && !isTriggerHovered.current) {
|
|
156
|
+
toggleVisibility(false);
|
|
157
|
+
}
|
|
158
|
+
}, SHOW_HIDE_DELAY);
|
|
159
|
+
}, [toggleVisibility]);
|
|
160
|
+
const handleTriggerFocus = useCallback(() => {
|
|
161
|
+
triggeredByEvent.current = "focus";
|
|
162
|
+
toggleVisibility(true);
|
|
163
|
+
}, [toggleVisibility]);
|
|
164
|
+
const handleTriggerBlur = useCallback(() => {
|
|
165
|
+
if (triggeredByEvent.current === "focus") {
|
|
166
|
+
toggleVisibility(false);
|
|
167
|
+
}
|
|
168
|
+
}, [toggleVisibility]);
|
|
169
|
+
const handleTriggerKeyDown = useCallback(evt => {
|
|
170
|
+
if (evt.key === "Escape") {
|
|
171
|
+
toggleVisibility(false);
|
|
172
|
+
}
|
|
173
|
+
}, [toggleVisibility]);
|
|
174
|
+
const handleTooltipPointerEnter = () => {
|
|
175
|
+
isTooltipHovered.current = true;
|
|
176
|
+
};
|
|
177
|
+
const handleTooltipPointerLeave = () => {
|
|
178
|
+
isTooltipHovered.current = false;
|
|
179
|
+
if (triggeredByEvent.current === "hover") {
|
|
180
|
+
toggleVisibility(false);
|
|
181
|
+
}
|
|
182
|
+
};
|
|
183
|
+
useEffect(() => () => {
|
|
184
|
+
// clear timers
|
|
185
|
+
clearTimeout(showTooltipTimeoutId.current);
|
|
186
|
+
clearTimeout(hideTooltipTimeoutId.current);
|
|
187
|
+
}, []);
|
|
188
|
+
useEffect(() => {
|
|
189
|
+
let trigger;
|
|
190
|
+
if (externalTriggerRef && externalTriggerRef.current && !children) {
|
|
191
|
+
trigger = externalTriggerRef.current;
|
|
192
|
+
trigger.setAttribute("tabindex", "0");
|
|
193
|
+
trigger.addEventListener("pointerenter", handleTriggerPointerEnter);
|
|
194
|
+
trigger.addEventListener("pointerleave", handleTriggerPointerLeave);
|
|
195
|
+
trigger.addEventListener("focus", handleTriggerFocus);
|
|
196
|
+
trigger.addEventListener("blur", handleTriggerBlur);
|
|
197
|
+
trigger.addEventListener("keydown", handleTriggerKeyDown);
|
|
198
|
+
}
|
|
199
|
+
return () => {
|
|
200
|
+
if (trigger) {
|
|
201
|
+
trigger.removeEventListener("pointerenter", handleTriggerPointerEnter);
|
|
202
|
+
trigger.removeEventListener("pointerleave", handleTriggerPointerLeave);
|
|
203
|
+
trigger.removeEventListener("focus", handleTriggerFocus);
|
|
204
|
+
trigger.removeEventListener("blur", handleTriggerBlur);
|
|
205
|
+
trigger.removeEventListener("keydown", handleTriggerKeyDown);
|
|
206
|
+
}
|
|
207
|
+
};
|
|
208
|
+
}, [externalTriggerRef, children, handleTriggerPointerEnter, handleTriggerPointerLeave, handleTriggerFocus, handleTriggerBlur, handleTriggerKeyDown]);
|
|
209
|
+
useEffect(() => {
|
|
210
|
+
if (externalTriggerRef && externalTriggerRef.current && !children) {
|
|
211
|
+
const trigger = externalTriggerRef.current;
|
|
212
|
+
if (isVisible) {
|
|
213
|
+
trigger.setAttribute("aria-describedby", tooltipId);
|
|
214
|
+
} else {
|
|
215
|
+
trigger.removeAttribute("aria-describedby");
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
}, [externalTriggerRef, children, tooltipId, isVisible]);
|
|
219
|
+
useLayoutEffect(() => {
|
|
220
|
+
if (isVisible && triggerRef.current && tooltipRef.current) {
|
|
221
|
+
// calculate tooltip position
|
|
222
|
+
setPosition(getTooltipPosition(placement, triggerRef, tooltipRef, document, window));
|
|
223
|
+
}
|
|
224
|
+
}, [isVisible, placement, triggerRef, document, window]);
|
|
225
|
+
let portal;
|
|
226
|
+
if (isVisible) {
|
|
227
|
+
const tooltipElm = /*#__PURE__*/React.createElement(SubThemeProvider, {
|
|
228
|
+
name: "inverted"
|
|
229
|
+
}, /*#__PURE__*/React.createElement(StyledContainer, {
|
|
230
|
+
"data-e2e-test-id": dataE2eTestId,
|
|
231
|
+
"data-ds-id": "Tooltip",
|
|
232
|
+
style: {
|
|
233
|
+
top: position.top,
|
|
234
|
+
left: position.left,
|
|
235
|
+
animationDuration: getAnimationDuration()
|
|
236
|
+
},
|
|
237
|
+
ref: tooltipRef,
|
|
238
|
+
id: tooltipId,
|
|
239
|
+
role: "tooltip",
|
|
240
|
+
"aria-hidden": "true",
|
|
241
|
+
horizontalPlacement: position.horizontalPlacement,
|
|
242
|
+
verticalPlacement: position.verticalPlacement,
|
|
243
|
+
onPointerEnter: handleTooltipPointerEnter,
|
|
244
|
+
onPointerLeave: handleTooltipPointerLeave
|
|
245
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
246
|
+
size: "s"
|
|
247
|
+
}, content), /*#__PURE__*/React.createElement(StyledArrow, {
|
|
248
|
+
horizontalPlacement: position.horizontalPlacement,
|
|
249
|
+
verticalPlacement: position.verticalPlacement
|
|
250
|
+
})));
|
|
251
|
+
portal = /*#__PURE__*/createPortal(tooltipElm, portalContainer || document.body);
|
|
252
|
+
}
|
|
253
|
+
const triggerElm = children ? /*#__PURE__*/React.cloneElement(children, {
|
|
254
|
+
ref: triggerRef,
|
|
255
|
+
...(isVisible && {
|
|
256
|
+
"aria-describedby": tooltipId
|
|
257
|
+
}),
|
|
258
|
+
tabIndex: 0,
|
|
259
|
+
onPointerEnter: handleTriggerPointerEnter,
|
|
260
|
+
onPointerLeave: handleTriggerPointerLeave,
|
|
261
|
+
onFocus: handleTriggerFocus,
|
|
262
|
+
onBlur: handleTriggerBlur,
|
|
263
|
+
onKeyDown: handleTriggerKeyDown
|
|
264
|
+
}) : null;
|
|
265
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, triggerElm, portal);
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
export { Tooltip };
|
|
269
|
+
//# sourceMappingURL=Tooltip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tooltip.js","sources":["../../../../../src/components/Tooltip/Tooltip.tsx"],"sourcesContent":["import React, {\n useState,\n useRef,\n useLayoutEffect,\n useEffect,\n useCallback,\n MutableRefObject,\n useMemo,\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 { Text } from \"../Typography/Text/Text\";\nimport zIndices from \"../../../build-tokens/_zindex.json\";\n\nimport {\n ARROW_SIZE,\n ARROW_OFFSET,\n ANIMATION_DISTANCE,\n getTooltipPosition,\n} from \"./utils\";\n\nexport type BaseProps = {\n /* Tooltip content */\n content: string;\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 \"data-e2e-test-id\"?: string;\n /* Called when tooltip appears and disappears */\n onVisibilityChange?: (isVisible: boolean) => void;\n};\n\nexport type ConditionalProps =\n | {\n externalTriggerRef?: never;\n /* Trigger element - wrap trigger element within Tooltip - takes precedence over trigger prop */\n children: React.ReactElement;\n }\n | {\n children?: never;\n /* Trigger element ref - pass in an external trigger element */\n externalTriggerRef: MutableRefObject<any>;\n };\n\nexport type TooltipProps = BaseProps & ConditionalProps;\n\nexport type TooltipPosition = {\n top: number;\n left: number;\n horizontalPlacement: \"left\" | \"right\" | \"center\";\n verticalPlacement: \"top\" | \"bottom\";\n};\n\ntype StyledContainerProps = {\n horizontalPlacement: TooltipPosition[\"horizontalPlacement\"];\n verticalPlacement: TooltipPosition[\"verticalPlacement\"];\n};\n\nconst ANIMATION_DURATION = 200;\nconst SHOW_HIDE_DELAY = 200;\n\nconst StyledContainer = styled.div<StyledContainerProps>(\n ({ theme, horizontalPlacement, verticalPlacement }) => {\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 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: \"224px\",\n boxSizing: \"border-box\",\n padding: `${theme.variables.size.spacing.xs} ${theme.variables.size.spacing.s}`,\n\n ...(horizontalPlacement === \"center\" && {\n transform: \"translate(-50%)\",\n }),\n };\n }\n);\n\ntype StyledArrowProps = {\n verticalPlacement: TooltipPosition[\"verticalPlacement\"];\n horizontalPlacement: TooltipPosition[\"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 initialPosition: TooltipPosition = {\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\nexport function Tooltip({\n placement = \"auto\",\n content,\n children,\n externalTriggerRef,\n portalContainer,\n \"data-e2e-test-id\": dataE2eTestId,\n onVisibilityChange,\n}: TooltipProps): React.ReactElement {\n const tooltipId = useMemo(\n () => `DSTooltip_${Math.floor(Date.now() * Math.random())}`,\n []\n );\n const [position, setPosition] = useState(initialPosition);\n const [isVisible, setVisible] = useState(false);\n const triggeredByEvent = useRef(null); // indicates if triggered by hover or focus\n const isTooltipHovered = useRef(false);\n const isTriggerHovered = useRef(false);\n const internalTriggerRef = useRef(null);\n const tooltipRef = useRef(null);\n const document = useDocument();\n const window = useWindow();\n const hideTooltipTimeoutId = useRef(null);\n const showTooltipTimeoutId = useRef(null);\n const triggerRef = externalTriggerRef || internalTriggerRef;\n\n const toggleVisibility = useCallback(\n (status: boolean) => {\n setVisible(status);\n\n if (onVisibilityChange) {\n onVisibilityChange(status);\n }\n\n // log time when tooltip closes\n if (!status) {\n lastTooltipHideTimestamp = Date.now();\n }\n },\n [onVisibilityChange]\n );\n\n const handleTriggerPointerEnter = useCallback(() => {\n isTriggerHovered.current = true;\n if (!isTooltipHovered.current) {\n clearTimeout(showTooltipTimeoutId.current);\n // Delay show tooltip to prevent flickering when mouse moves quickly over trigger\n showTooltipTimeoutId.current = setTimeout(() => {\n if (isTriggerHovered.current) {\n triggeredByEvent.current = \"hover\";\n toggleVisibility(true);\n }\n }, SHOW_HIDE_DELAY);\n }\n }, [toggleVisibility]);\n\n const handleTriggerPointerLeave = useCallback(() => {\n isTriggerHovered.current = false;\n clearTimeout(hideTooltipTimeoutId.current);\n // Delay removing tooltip from DOM to allow hover over tooltip element\n hideTooltipTimeoutId.current = setTimeout(() => {\n if (\n !isTooltipHovered.current &&\n triggeredByEvent.current === \"hover\" &&\n !isTriggerHovered.current\n ) {\n toggleVisibility(false);\n }\n }, SHOW_HIDE_DELAY);\n }, [toggleVisibility]);\n\n const handleTriggerFocus = useCallback(() => {\n triggeredByEvent.current = \"focus\";\n toggleVisibility(true);\n }, [toggleVisibility]);\n\n const handleTriggerBlur = useCallback(() => {\n if (triggeredByEvent.current === \"focus\") {\n toggleVisibility(false);\n }\n }, [toggleVisibility]);\n\n const handleTriggerKeyDown = useCallback(\n (evt) => {\n if (evt.key === \"Escape\") {\n toggleVisibility(false);\n }\n },\n [toggleVisibility]\n );\n\n const handleTooltipPointerEnter = () => {\n isTooltipHovered.current = true;\n };\n\n const handleTooltipPointerLeave = () => {\n isTooltipHovered.current = false;\n if (triggeredByEvent.current === \"hover\") {\n toggleVisibility(false);\n }\n };\n\n useEffect(\n () => () => {\n // clear timers\n clearTimeout(showTooltipTimeoutId.current);\n clearTimeout(hideTooltipTimeoutId.current);\n },\n []\n );\n\n useEffect(() => {\n let trigger: HTMLElement;\n\n if (externalTriggerRef && externalTriggerRef.current && !children) {\n trigger = externalTriggerRef.current;\n\n trigger.setAttribute(\"tabindex\", \"0\");\n trigger.addEventListener(\"pointerenter\", handleTriggerPointerEnter);\n trigger.addEventListener(\"pointerleave\", handleTriggerPointerLeave);\n trigger.addEventListener(\"focus\", handleTriggerFocus);\n trigger.addEventListener(\"blur\", handleTriggerBlur);\n trigger.addEventListener(\"keydown\", handleTriggerKeyDown);\n }\n\n return () => {\n if (trigger) {\n trigger.removeEventListener(\"pointerenter\", handleTriggerPointerEnter);\n trigger.removeEventListener(\"pointerleave\", handleTriggerPointerLeave);\n trigger.removeEventListener(\"focus\", handleTriggerFocus);\n trigger.removeEventListener(\"blur\", handleTriggerBlur);\n trigger.removeEventListener(\"keydown\", handleTriggerKeyDown);\n }\n };\n }, [\n externalTriggerRef,\n children,\n handleTriggerPointerEnter,\n handleTriggerPointerLeave,\n handleTriggerFocus,\n handleTriggerBlur,\n handleTriggerKeyDown,\n ]);\n\n useEffect(() => {\n if (externalTriggerRef && externalTriggerRef.current && !children) {\n const trigger = externalTriggerRef.current;\n\n if (isVisible) {\n trigger.setAttribute(\"aria-describedby\", tooltipId);\n } else {\n trigger.removeAttribute(\"aria-describedby\");\n }\n }\n }, [externalTriggerRef, children, tooltipId, isVisible]);\n\n useLayoutEffect(() => {\n if (isVisible && triggerRef.current && tooltipRef.current) {\n // calculate tooltip position\n setPosition(\n getTooltipPosition(placement, triggerRef, tooltipRef, document, window)\n );\n }\n }, [isVisible, placement, triggerRef, document, window]);\n\n let portal;\n\n if (isVisible) {\n const tooltipElm = (\n <SubThemeProvider name=\"inverted\">\n <StyledContainer\n data-e2e-test-id={dataE2eTestId}\n data-ds-id=\"Tooltip\"\n style={{\n top: position.top,\n left: position.left,\n animationDuration: getAnimationDuration(),\n }}\n ref={tooltipRef}\n id={tooltipId}\n role=\"tooltip\"\n aria-hidden=\"true\"\n horizontalPlacement={position.horizontalPlacement}\n verticalPlacement={position.verticalPlacement}\n onPointerEnter={handleTooltipPointerEnter}\n onPointerLeave={handleTooltipPointerLeave}\n >\n <Text size=\"s\">{content}</Text>\n <StyledArrow\n horizontalPlacement={position.horizontalPlacement}\n verticalPlacement={position.verticalPlacement}\n />\n </StyledContainer>\n </SubThemeProvider>\n );\n\n portal = createPortal(tooltipElm, portalContainer || document.body);\n }\n\n const triggerElm = children\n ? React.cloneElement(children, {\n ref: triggerRef,\n ...(isVisible && {\n \"aria-describedby\": tooltipId,\n }),\n tabIndex: 0,\n onPointerEnter: handleTriggerPointerEnter,\n onPointerLeave: handleTriggerPointerLeave,\n onFocus: handleTriggerFocus,\n onBlur: handleTriggerBlur,\n onKeyDown: handleTriggerKeyDown,\n })\n : null;\n\n return (\n <>\n {triggerElm}\n {portal}\n </>\n );\n}\n"],"names":["ANIMATION_DURATION","SHOW_HIDE_DELAY","StyledContainer","_styled","process","env","NODE_ENV","target","label","_ref","theme","horizontalPlacement","verticalPlacement","animationDistance","ANIMATION_DISTANCE","animation","keyframes","to","opacity","transform","position","zIndex","zIndices","tooltip","value","borderRadius","variables","size","xs","backgroundColor","values","color","background","primary","default","maxWidth","boxSizing","padding","spacing","s","StyledArrow","_ref2","width","height","borderLeft","ARROW_SIZE","borderRight","top","borderTop","borderBottom","left","ARROW_OFFSET","right","initialPosition","lastTooltipHideTimestamp","getAnimationDuration","animationDuration","timeSinceLastTooltip","Date","now","Tooltip","_ref3","placement","content","children","externalTriggerRef","portalContainer","dataE2eTestId","onVisibilityChange","tooltipId","useMemo","Math","floor","random","setPosition","useState","isVisible","setVisible","triggeredByEvent","useRef","isTooltipHovered","isTriggerHovered","internalTriggerRef","tooltipRef","document","useDocument","window","useWindow","hideTooltipTimeoutId","showTooltipTimeoutId","triggerRef","toggleVisibility","useCallback","status","handleTriggerPointerEnter","current","clearTimeout","setTimeout","handleTriggerPointerLeave","handleTriggerFocus","handleTriggerBlur","handleTriggerKeyDown","evt","key","handleTooltipPointerEnter","handleTooltipPointerLeave","useEffect","trigger","setAttribute","addEventListener","removeEventListener","removeAttribute","useLayoutEffect","getTooltipPosition","portal","tooltipElm","React","createElement","SubThemeProvider","name","style","ref","id","role","onPointerEnter","onPointerLeave","Text","createPortal","body","triggerElm","cloneElement","tabIndex","onFocus","onBlur","onKeyDown","Fragment"],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { RefObject } from "react";
|
|
2
|
+
import type { TooltipProps, TooltipPosition } from "./Tooltip";
|
|
3
|
+
export declare const DISTANCE_FROM_TRIGGER = 4;
|
|
4
|
+
export declare const ANIMATION_DISTANCE = 8;
|
|
5
|
+
export declare const ARROW_SIZE = 6;
|
|
6
|
+
export declare const TOOLTIP_MARGIN: number;
|
|
7
|
+
export declare const ARROW_OFFSET = 8;
|
|
8
|
+
/**
|
|
9
|
+
* Get tooltip position
|
|
10
|
+
*/
|
|
11
|
+
export declare function getTooltipPosition(placement: TooltipProps["placement"], triggerRef: RefObject<any>, tooltipRef: RefObject<any>, document: Document, window: Window): TooltipPosition;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
const DISTANCE_FROM_TRIGGER = 4;
|
|
2
|
+
const ANIMATION_DISTANCE = 8;
|
|
3
|
+
const ARROW_SIZE = 6;
|
|
4
|
+
const TOOLTIP_MARGIN = ARROW_SIZE + ANIMATION_DISTANCE + DISTANCE_FROM_TRIGGER;
|
|
5
|
+
const ARROW_OFFSET = 8;
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Get tooltip position
|
|
9
|
+
*/
|
|
10
|
+
function getTooltipPosition(placement, triggerRef, tooltipRef, document, window) {
|
|
11
|
+
const triggerRect = triggerRef.current.getBoundingClientRect();
|
|
12
|
+
const tooltipRect = tooltipRef.current.getBoundingClientRect();
|
|
13
|
+
const viewportWidth = document.documentElement.clientWidth;
|
|
14
|
+
let top = 0;
|
|
15
|
+
let left = 0;
|
|
16
|
+
let verticalPlacement = "top";
|
|
17
|
+
let horizontalPlacement = "center";
|
|
18
|
+
switch (placement) {
|
|
19
|
+
case "top":
|
|
20
|
+
case "bottom":
|
|
21
|
+
verticalPlacement = placement;
|
|
22
|
+
break;
|
|
23
|
+
case "top-left":
|
|
24
|
+
case "top-right":
|
|
25
|
+
case "bottom-left":
|
|
26
|
+
case "bottom-right":
|
|
27
|
+
{
|
|
28
|
+
const placements = placement.split("-");
|
|
29
|
+
verticalPlacement = placements[0];
|
|
30
|
+
horizontalPlacement = placements[1];
|
|
31
|
+
break;
|
|
32
|
+
}
|
|
33
|
+
default:
|
|
34
|
+
// If there is no space on the top of trigger, then place it at the bottom
|
|
35
|
+
if (triggerRect.top < tooltipRect.height) {
|
|
36
|
+
verticalPlacement = "bottom";
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// Check if we have space on the left for half of the tooltip width
|
|
40
|
+
if (triggerRect.left >= tooltipRect.width / 2) {
|
|
41
|
+
// Check if we have space on the right for half of the tooltip width
|
|
42
|
+
if (triggerRect.left + triggerRect.width / 2 + tooltipRect.width / 2 > viewportWidth) {
|
|
43
|
+
// no space on the right
|
|
44
|
+
horizontalPlacement = "left";
|
|
45
|
+
}
|
|
46
|
+
} else {
|
|
47
|
+
// We don't have space on the left
|
|
48
|
+
horizontalPlacement = "right";
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
if (verticalPlacement === "top") {
|
|
52
|
+
top = triggerRect.top - tooltipRect.height - TOOLTIP_MARGIN;
|
|
53
|
+
} else {
|
|
54
|
+
top = triggerRect.bottom + TOOLTIP_MARGIN;
|
|
55
|
+
}
|
|
56
|
+
switch (horizontalPlacement) {
|
|
57
|
+
case "left":
|
|
58
|
+
left = triggerRect.left + triggerRect.width / 2 - tooltipRect.width + ARROW_OFFSET + ARROW_SIZE;
|
|
59
|
+
break;
|
|
60
|
+
case "right":
|
|
61
|
+
left = triggerRect.left + triggerRect.width / 2 - ARROW_OFFSET - ARROW_SIZE;
|
|
62
|
+
break;
|
|
63
|
+
default:
|
|
64
|
+
left = triggerRect.left + triggerRect.width / 2;
|
|
65
|
+
}
|
|
66
|
+
return {
|
|
67
|
+
top: top + window.scrollY,
|
|
68
|
+
left: left + window.scrollX,
|
|
69
|
+
horizontalPlacement,
|
|
70
|
+
verticalPlacement
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export { ANIMATION_DISTANCE, ARROW_OFFSET, ARROW_SIZE, DISTANCE_FROM_TRIGGER, TOOLTIP_MARGIN, getTooltipPosition };
|
|
75
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../../../src/components/Tooltip/utils.ts"],"sourcesContent":["import { RefObject } from \"react\";\nimport type { TooltipProps, TooltipPosition } from \"./Tooltip\";\n\nexport const DISTANCE_FROM_TRIGGER = 4;\nexport const ANIMATION_DISTANCE = 8;\nexport const ARROW_SIZE = 6;\nexport const TOOLTIP_MARGIN =\n ARROW_SIZE + ANIMATION_DISTANCE + DISTANCE_FROM_TRIGGER;\nexport const ARROW_OFFSET = 8;\n\n/**\n * Get tooltip position\n */\nexport function getTooltipPosition(\n placement: TooltipProps[\"placement\"],\n triggerRef: RefObject<any>,\n tooltipRef: RefObject<any>,\n document: Document,\n window: Window\n): TooltipPosition {\n const triggerRect = triggerRef.current.getBoundingClientRect();\n const tooltipRect = tooltipRef.current.getBoundingClientRect();\n const viewportWidth = document.documentElement.clientWidth;\n let top = 0;\n let left = 0;\n let verticalPlacement: TooltipPosition[\"verticalPlacement\"] = \"top\";\n let horizontalPlacement: TooltipPosition[\"horizontalPlacement\"] = \"center\";\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 TooltipPosition[\"verticalPlacement\"];\n horizontalPlacement =\n placements[1] as TooltipPosition[\"horizontalPlacement\"];\n break;\n }\n default:\n // If there is no space on the top of trigger, then place it at the bottom\n if (triggerRect.top < tooltipRect.height) {\n verticalPlacement = \"bottom\";\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 - TOOLTIP_MARGIN;\n } else {\n top = triggerRect.bottom + TOOLTIP_MARGIN;\n }\n\n switch (horizontalPlacement) {\n case \"left\":\n left =\n triggerRect.left +\n triggerRect.width / 2 -\n tooltipRect.width +\n ARROW_OFFSET +\n ARROW_SIZE;\n break;\n case \"right\":\n left =\n triggerRect.left + triggerRect.width / 2 - ARROW_OFFSET - ARROW_SIZE;\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","TOOLTIP_MARGIN","ARROW_OFFSET","getTooltipPosition","placement","triggerRef","tooltipRef","document","window","triggerRect","current","getBoundingClientRect","tooltipRect","viewportWidth","documentElement","clientWidth","top","left","verticalPlacement","horizontalPlacement","placements","split","height","width","bottom","scrollY","scrollX"],"mappings":"AAGO,MAAMA,qBAAqB,GAAG,EAAC;AAC/B,MAAMC,kBAAkB,GAAG,EAAC;AAC5B,MAAMC,UAAU,GAAG,EAAC;MACdC,cAAc,GACzBD,UAAU,GAAGD,kBAAkB,GAAGD,sBAAqB;AAClD,MAAMI,YAAY,GAAG,EAAC;;AAE7B;AACA;AACA;AACO,SAASC,kBAAkBA,CAChCC,SAAoC,EACpCC,UAA0B,EAC1BC,UAA0B,EAC1BC,QAAkB,EAClBC,MAAc,EACG;EACjB,MAAMC,WAAW,GAAGJ,UAAU,CAACK,OAAO,CAACC,qBAAqB,EAAE,CAAA;EAC9D,MAAMC,WAAW,GAAGN,UAAU,CAACI,OAAO,CAACC,qBAAqB,EAAE,CAAA;AAC9D,EAAA,MAAME,aAAa,GAAGN,QAAQ,CAACO,eAAe,CAACC,WAAW,CAAA;EAC1D,IAAIC,GAAG,GAAG,CAAC,CAAA;EACX,IAAIC,IAAI,GAAG,CAAC,CAAA;EACZ,IAAIC,iBAAuD,GAAG,KAAK,CAAA;EACnE,IAAIC,mBAA2D,GAAG,QAAQ,CAAA;AAE1E,EAAA,QAAQf,SAAS;AACf,IAAA,KAAK,KAAK,CAAA;AACV,IAAA,KAAK,QAAQ;AACXc,MAAAA,iBAAiB,GAAGd,SAAS,CAAA;AAC7B,MAAA,MAAA;AACF,IAAA,KAAK,UAAU,CAAA;AACf,IAAA,KAAK,WAAW,CAAA;AAChB,IAAA,KAAK,aAAa,CAAA;AAClB,IAAA,KAAK,cAAc;AAAE,MAAA;AACnB,QAAA,MAAMgB,UAAU,GAAGhB,SAAS,CAACiB,KAAK,CAAC,GAAG,CAAC,CAAA;AAEvCH,QAAAA,iBAAiB,GAAGE,UAAU,CAAC,CAAC,CAAyC,CAAA;AACzED,QAAAA,mBAAmB,GACjBC,UAAU,CAAC,CAAC,CAA2C,CAAA;AACzD,QAAA,MAAA;AACF,OAAA;AACA,IAAA;AACE;AACA,MAAA,IAAIX,WAAW,CAACO,GAAG,GAAGJ,WAAW,CAACU,MAAM,EAAE;AACxCJ,QAAAA,iBAAiB,GAAG,QAAQ,CAAA;AAC9B,OAAA;;AAEA;MACA,IAAIT,WAAW,CAACQ,IAAI,IAAIL,WAAW,CAACW,KAAK,GAAG,CAAC,EAAE;AAC7C;AACA,QAAA,IACEd,WAAW,CAACQ,IAAI,GAAGR,WAAW,CAACc,KAAK,GAAG,CAAC,GAAGX,WAAW,CAACW,KAAK,GAAG,CAAC,GAChEV,aAAa,EACb;AACA;AACAM,UAAAA,mBAAmB,GAAG,MAAM,CAAA;AAC9B,SAAA;AACF,OAAC,MAAM;AACL;AACAA,QAAAA,mBAAmB,GAAG,OAAO,CAAA;AAC/B,OAAA;AACJ,GAAA;EAEA,IAAID,iBAAiB,KAAK,KAAK,EAAE;IAC/BF,GAAG,GAAGP,WAAW,CAACO,GAAG,GAAGJ,WAAW,CAACU,MAAM,GAAGrB,cAAc,CAAA;AAC7D,GAAC,MAAM;AACLe,IAAAA,GAAG,GAAGP,WAAW,CAACe,MAAM,GAAGvB,cAAc,CAAA;AAC3C,GAAA;AAEA,EAAA,QAAQkB,mBAAmB;AACzB,IAAA,KAAK,MAAM;AACTF,MAAAA,IAAI,GACFR,WAAW,CAACQ,IAAI,GAChBR,WAAW,CAACc,KAAK,GAAG,CAAC,GACrBX,WAAW,CAACW,KAAK,GACjBrB,YAAY,GACZF,UAAU,CAAA;AACZ,MAAA,MAAA;AACF,IAAA,KAAK,OAAO;AACViB,MAAAA,IAAI,GACFR,WAAW,CAACQ,IAAI,GAAGR,WAAW,CAACc,KAAK,GAAG,CAAC,GAAGrB,YAAY,GAAGF,UAAU,CAAA;AACtE,MAAA,MAAA;AACF,IAAA;MACEiB,IAAI,GAAGR,WAAW,CAACQ,IAAI,GAAGR,WAAW,CAACc,KAAK,GAAG,CAAC,CAAA;AACnD,GAAA;EAEA,OAAO;AACLP,IAAAA,GAAG,EAAEA,GAAG,GAAGR,MAAM,CAACiB,OAAO;AACzBR,IAAAA,IAAI,EAAEA,IAAI,GAAGT,MAAM,CAACkB,OAAO;IAC3BP,mBAAmB;AACnBD,IAAAA,iBAAAA;GACD,CAAA;AACH;;;;"}
|
package/build/esm/src/index.d.ts
CHANGED
|
@@ -49,3 +49,4 @@ export * from "./components/LoadingSpinner/LoadingSpinner";
|
|
|
49
49
|
export * from "./components/Pagination/Pagination";
|
|
50
50
|
export * from "./components/DataTable";
|
|
51
51
|
export * from "./components/Form/SegmentedControl/SegmentedControl";
|
|
52
|
+
export * from "./components/Tooltip/Tooltip";
|
package/build/esm/src/index.js
CHANGED
|
@@ -44,6 +44,7 @@ export { Collapsible, CollapsibleHeader } from './components/Collapsible/Collaps
|
|
|
44
44
|
export { LoadingSpinner } from './components/LoadingSpinner/LoadingSpinner.js';
|
|
45
45
|
export { Pagination } from './components/Pagination/Pagination.js';
|
|
46
46
|
export { SegmentedControl } from './components/Form/SegmentedControl/SegmentedControl.js';
|
|
47
|
+
export { Tooltip } from './components/Tooltip/Tooltip.js';
|
|
47
48
|
export { Input } from './components/Form/Input/Input.js';
|
|
48
49
|
export { PasswordInput } from './components/Form/PasswordInput/PasswordInput.js';
|
|
49
50
|
export { BaseDataTable, DataTable } from './components/DataTable/DataTable.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/index.ts"],"sourcesContent":["import {\n ambossVisualConfiguration,\n VisualConfig,\n} from \"../build-tokens/visualConfig\";\n\nexport type { VisualConfig };\nexport const { dark, light } = ambossVisualConfiguration;\nexport { ThemeProvider, CacheProvider } from \"@emotion/react\";\nexport { default as createCache } from \"@emotion/cache\";\nexport * from \"./components/Card/Card\";\nexport * from \"./components/Card/CardBox\";\nexport * from \"./components/Box/Box\";\nexport * from \"./components/Inline/Inline\";\nexport * from \"./components/Stack/Stack\";\nexport * from \"./components/Typography/Header/Header\";\nexport * from \"./components/Typography/Text/Text\";\nexport * from \"./components/Typography/TextClamped/TextClamped\";\nexport * from \"./components/Typography/StyledText/StyledText\";\nexport * from \"./components/Link/Link\";\nexport * from \"./components/Icon/Icon\";\nexport * from \"./components/Button/Button\";\nexport * from \"./components/Divider/Divider\";\nexport * from \"./components/Column/Columns\";\nexport * from \"./components/Tabs/Tabs\";\nexport * from \"./components/Badge/Badge\";\nexport * from \"./components/SearchResult/SearchResult\";\nexport * from \"./components/Form/ToggleButton/ToggleButton\";\nexport * from \"./components/DropdownMenu/DropdownMenu\";\nexport * from \"./components/Form/FormFieldGroup/FormFieldGroup\";\nexport * from \"./components/Form/Input\";\nexport * from \"./components/Form/Checkbox/Checkbox\";\nexport * from \"./components/Form/Toggle/Toggle\";\nexport * from \"./components/Form/Radio/Radio\";\nexport * from \"./components/Form/RadioButton/RadioButton\";\nexport * from \"./components/Form/Textarea/Textarea\";\nexport * from \"./components/Form/Select/Select\";\nexport * from \"./components/SubThemeProvider/SubThemeProvider\";\nexport * from \"./components/PictogramButton/PictogramButton\";\nexport * from \"./components/MediaViewerBar/MediaViewerBar\";\nexport * from \"./components/SegmentedProgressBar/SegmentedProgressBar\";\nexport * from \"./components/ProgressBar/ProgressBar\";\nexport * from \"./components/Container/Container\";\nexport * from \"./components/Form/PasswordInput\";\nexport * from \"./components/RoundButton/RoundButton\";\nexport * from \"./components/Notification/Notification\";\nexport * from \"./components/Logo/Logo\";\nexport * from \"./components/MediaItem/MediaItem\";\nexport * from \"./components/Callout/Callout\";\nexport * from \"./components/Patterns/Modal/Modal\";\nexport * from \"./components/Patterns/ButtonGroup/ButtonGroup\";\nexport * from \"./components/Collapsible/Collapsible\";\nexport * from \"./components/LoadingSpinner/LoadingSpinner\";\nexport * from \"./components/Pagination/Pagination\";\nexport * from \"./components/DataTable\";\nexport * from \"./components/Form/SegmentedControl/SegmentedControl\";\n"],"names":["dark","light","ambossVisualConfiguration"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/index.ts"],"sourcesContent":["import {\n ambossVisualConfiguration,\n VisualConfig,\n} from \"../build-tokens/visualConfig\";\n\nexport type { VisualConfig };\nexport const { dark, light } = ambossVisualConfiguration;\nexport { ThemeProvider, CacheProvider } from \"@emotion/react\";\nexport { default as createCache } from \"@emotion/cache\";\nexport * from \"./components/Card/Card\";\nexport * from \"./components/Card/CardBox\";\nexport * from \"./components/Box/Box\";\nexport * from \"./components/Inline/Inline\";\nexport * from \"./components/Stack/Stack\";\nexport * from \"./components/Typography/Header/Header\";\nexport * from \"./components/Typography/Text/Text\";\nexport * from \"./components/Typography/TextClamped/TextClamped\";\nexport * from \"./components/Typography/StyledText/StyledText\";\nexport * from \"./components/Link/Link\";\nexport * from \"./components/Icon/Icon\";\nexport * from \"./components/Button/Button\";\nexport * from \"./components/Divider/Divider\";\nexport * from \"./components/Column/Columns\";\nexport * from \"./components/Tabs/Tabs\";\nexport * from \"./components/Badge/Badge\";\nexport * from \"./components/SearchResult/SearchResult\";\nexport * from \"./components/Form/ToggleButton/ToggleButton\";\nexport * from \"./components/DropdownMenu/DropdownMenu\";\nexport * from \"./components/Form/FormFieldGroup/FormFieldGroup\";\nexport * from \"./components/Form/Input\";\nexport * from \"./components/Form/Checkbox/Checkbox\";\nexport * from \"./components/Form/Toggle/Toggle\";\nexport * from \"./components/Form/Radio/Radio\";\nexport * from \"./components/Form/RadioButton/RadioButton\";\nexport * from \"./components/Form/Textarea/Textarea\";\nexport * from \"./components/Form/Select/Select\";\nexport * from \"./components/SubThemeProvider/SubThemeProvider\";\nexport * from \"./components/PictogramButton/PictogramButton\";\nexport * from \"./components/MediaViewerBar/MediaViewerBar\";\nexport * from \"./components/SegmentedProgressBar/SegmentedProgressBar\";\nexport * from \"./components/ProgressBar/ProgressBar\";\nexport * from \"./components/Container/Container\";\nexport * from \"./components/Form/PasswordInput\";\nexport * from \"./components/RoundButton/RoundButton\";\nexport * from \"./components/Notification/Notification\";\nexport * from \"./components/Logo/Logo\";\nexport * from \"./components/MediaItem/MediaItem\";\nexport * from \"./components/Callout/Callout\";\nexport * from \"./components/Patterns/Modal/Modal\";\nexport * from \"./components/Patterns/ButtonGroup/ButtonGroup\";\nexport * from \"./components/Collapsible/Collapsible\";\nexport * from \"./components/LoadingSpinner/LoadingSpinner\";\nexport * from \"./components/Pagination/Pagination\";\nexport * from \"./components/DataTable\";\nexport * from \"./components/Form/SegmentedControl/SegmentedControl\";\nexport * from \"./components/Tooltip/Tooltip\";\n"],"names":["dark","light","ambossVisualConfiguration"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMa,MAAA;EAAEA,IAAI;AAAEC,EAAAA,KAAAA;AAAM,CAAC,GAAGC;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@amboss/design-system",
|
|
3
|
-
"version": "1.13.
|
|
3
|
+
"version": "1.13.6",
|
|
4
4
|
"description": "the design system for AMBOSS products",
|
|
5
5
|
"author": "Bagrat Gobedashvili",
|
|
6
6
|
"license": "ISC",
|
|
@@ -119,6 +119,7 @@
|
|
|
119
119
|
"@babel/preset-react": "^7.14.5",
|
|
120
120
|
"@babel/preset-typescript": "^7.15.0",
|
|
121
121
|
"@emotion/babel-plugin": "^11.3.0",
|
|
122
|
+
"@emotion/jest": "^11.11.0",
|
|
122
123
|
"@geometricpanda/storybook-addon-badges": "2.0.0",
|
|
123
124
|
"@rollup/plugin-babel": "^6.0.3",
|
|
124
125
|
"@rollup/plugin-commonjs": "^24.0.1",
|