@onepercentio/one-ui 1.3.5 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (229) hide show
  1. package/WebpackConfigs/email-templates.js +99 -0
  2. package/dist/components/AdaptiveButton/AdaptiveButton.js +26 -24
  3. package/dist/components/AdaptiveButton/index.js +25 -22
  4. package/dist/components/AdaptiveContainer/AdaptiveContainer.js +140 -139
  5. package/dist/components/AdaptiveContainer/index.js +25 -22
  6. package/dist/components/AdaptiveDialog/AdaptiveDialog.js +76 -42
  7. package/dist/components/AdaptiveDialog/AdaptiveDialog.module.scss +17 -3
  8. package/dist/components/AdaptiveDialog/index.js +25 -22
  9. package/dist/components/AdaptiveSidebar/AdaptiveSidebar.js +70 -54
  10. package/dist/components/AdaptiveSidebar/AdaptiveSidebar.sample.js +10 -9
  11. package/dist/components/AdaptiveSidebar/index.js +25 -22
  12. package/dist/components/AnchoredTooltip/AnchoredTooltip.js +155 -154
  13. package/dist/components/AnchoredTooltip/AnchoredTooltip.module.scss +13 -10
  14. package/dist/components/AnchoredTooltip/index.js +25 -22
  15. package/dist/components/AnimatedEntrance/AnimatedEntrance.js +154 -121
  16. package/dist/components/AnimatedEntrance/index.js +25 -22
  17. package/dist/components/AsyncTriggerContainer/AsyncTriggerContainer.js +80 -40
  18. package/dist/components/AsyncTriggerContainer/index.js +25 -22
  19. package/dist/components/AsyncWrapper/AsyncWrapper.js +34 -16
  20. package/dist/components/AsyncWrapper/index.js +25 -22
  21. package/dist/components/Avatar/Avatar.js +33 -18
  22. package/dist/components/Avatar/index.js +25 -22
  23. package/dist/components/BucketFill/BucketFill.js +49 -36
  24. package/dist/components/BucketFill/index.js +25 -22
  25. package/dist/components/Button/Button.js +30 -22
  26. package/dist/components/Button/index.js +25 -22
  27. package/dist/components/Card/Card.js +17 -10
  28. package/dist/components/Card/index.js +25 -22
  29. package/dist/components/Chart/Chart.js +25 -22
  30. package/dist/components/Chart/Chart.logic.js +10 -9
  31. package/dist/components/Chart/Chart.types.js +5 -2
  32. package/dist/components/Chart/Chart.view.js +174 -98
  33. package/dist/components/Chart/index.js +25 -22
  34. package/dist/components/CheckBox/CheckBox.js +48 -30
  35. package/dist/components/CheckBox/CheckBox.module.scss +5 -0
  36. package/dist/components/CheckBox/index.js +25 -22
  37. package/dist/components/CodeInput/CodeInput.js +75 -93
  38. package/dist/components/CodeInput/index.js +25 -22
  39. package/dist/components/Collapsable/Collapsable.js +164 -134
  40. package/dist/components/Collapsable/index.js +25 -22
  41. package/dist/components/Countdown/Countdown.js +69 -86
  42. package/dist/components/Countdown/index.js +25 -22
  43. package/dist/components/CurrencyInput/CurrencyInput.hook.js +25 -25
  44. package/dist/components/CurrencyInput/CurrencyInput.js +48 -29
  45. package/dist/components/CurrencyInput/index.js +25 -22
  46. package/dist/components/Divider/Divider.js +16 -10
  47. package/dist/components/Divider/index.js +25 -22
  48. package/dist/components/EmailInput/EmailInput.js +37 -23
  49. package/dist/components/EmailInput/index.js +25 -22
  50. package/dist/components/FadeIn/FadeIn.js +57 -51
  51. package/dist/components/FadeIn/index.js +25 -22
  52. package/dist/components/FileInput/FileInput.js +45 -38
  53. package/dist/components/FileInput/View/BigFactory/BigFactory.js +48 -16
  54. package/dist/components/FileInput/View/BigFactory/index.js +25 -22
  55. package/dist/components/FileInput/View/Compact/Compact.js +114 -46
  56. package/dist/components/FileInput/View/Compact/index.js +25 -22
  57. package/dist/components/FileInput/View/View.types.js +5 -2
  58. package/dist/components/FileInput/index.js +25 -22
  59. package/dist/components/FlowController/FlowController.js +56 -25
  60. package/dist/components/FlowController/index.js +25 -22
  61. package/dist/components/Form/Form.hook.js +217 -202
  62. package/dist/components/Form/Form.js +103 -65
  63. package/dist/components/Form/Form.types.js +39 -53
  64. package/dist/components/Form/FormField/Extensions/DateField/DateField.js +68 -53
  65. package/dist/components/Form/FormField/Extensions/DateField/index.js +25 -22
  66. package/dist/components/Form/FormField/Extensions/PhoneField/PhoneField.js +81 -78
  67. package/dist/components/Form/FormField/Extensions/PhoneField/index.js +25 -22
  68. package/dist/components/Form/FormField/FormField.js +307 -148
  69. package/dist/components/Form/FormField/FormField.types.js +10 -7
  70. package/dist/components/Form/FormField/index.js +25 -22
  71. package/dist/components/Form/index.js +25 -22
  72. package/dist/components/Freeze/Freeze.js +13 -9
  73. package/dist/components/Freeze/index.js +25 -22
  74. package/dist/components/HSForms/HSForms.js +48 -69
  75. package/dist/components/HSForms/index.js +25 -22
  76. package/dist/components/HeaderCloseBtn/HeaderCloseBtn.js +19 -10
  77. package/dist/components/HeaderCloseBtn/index.js +25 -22
  78. package/dist/components/InfinityScroll/InfinityScroll.js +114 -94
  79. package/dist/components/InfinityScroll/index.js +25 -22
  80. package/dist/components/Input/Input.js +99 -57
  81. package/dist/components/Input/index.js +25 -22
  82. package/dist/components/InstantCounter/InstantCounter.js +49 -31
  83. package/dist/components/InstantCounter/index.js +25 -22
  84. package/dist/components/LavaLamp/LavaLamp.data.js +83 -86
  85. package/dist/components/LavaLamp/LavaLamp.js +119 -32
  86. package/dist/components/LavaLamp/index.js +25 -22
  87. package/dist/components/LavaLamp/v2/LavaLamp.js +149 -156
  88. package/dist/components/LinkToId/LinkToId.js +39 -27
  89. package/dist/components/LinkToId/index.js +25 -22
  90. package/dist/components/Loader/Loader.js +21 -22
  91. package/dist/components/Loader/index.js +25 -22
  92. package/dist/components/LoaderDotsIndicator/LoaderDotsIndicator.js +27 -15
  93. package/dist/components/LoaderDotsIndicator/index.js +25 -22
  94. package/dist/components/LoopableVideo/LoopableVideo.js +33 -25
  95. package/dist/components/LoopableVideo/index.js +25 -22
  96. package/dist/components/MainGrid/MainGrid.js +46 -23
  97. package/dist/components/MainGrid/index.js +25 -22
  98. package/dist/components/MutableHamburgerButton/MutableHamburgerButton.js +27 -23
  99. package/dist/components/MutableHamburgerButton/index.js +25 -22
  100. package/dist/components/Notification/Notification.js +18 -11
  101. package/dist/components/Notification/index.js +25 -22
  102. package/dist/components/NumberInput/NumberInput.js +43 -42
  103. package/dist/components/NumberInput/index.js +25 -22
  104. package/dist/components/OrderableList/OrderableList.js +416 -404
  105. package/dist/components/OrderableList/index.js +25 -22
  106. package/dist/components/PaginationIndicator/PaginationIndicator.js +243 -198
  107. package/dist/components/PaginationIndicator/index.js +25 -22
  108. package/dist/components/Parallax/Parallax.js +156 -130
  109. package/dist/components/Parallax/index.js +25 -22
  110. package/dist/components/Parallax/math/helpers.js +120 -216
  111. package/dist/components/PasswordInput/PasswordInput.js +88 -71
  112. package/dist/components/PasswordInput/index.js +25 -22
  113. package/dist/components/PingPongText/PingPongText.js +63 -67
  114. package/dist/components/PingPongText/index.js +25 -22
  115. package/dist/components/PixelatedScan/PixelatedScan.js +126 -74
  116. package/dist/components/PixelatedScan/index.js +25 -22
  117. package/dist/components/Portal/Portal.js +46 -43
  118. package/dist/components/Portal/index.js +25 -22
  119. package/dist/components/ProgressBar/ProgressBar.js +105 -47
  120. package/dist/components/ProgressBar/index.js +25 -22
  121. package/dist/components/ProgressTexts/ProgressTexts.js +43 -29
  122. package/dist/components/ProgressTexts/index.js +25 -22
  123. package/dist/components/Radio/Radio.js +51 -28
  124. package/dist/components/Radio/index.js +25 -22
  125. package/dist/components/Radio/variants/Checkmark/Checkmark.js +18 -12
  126. package/dist/components/Radio/variants/Checkmark/index.js +25 -22
  127. package/dist/components/Radio/variants/Generic/Generic.js +20 -12
  128. package/dist/components/Radio/variants/Generic/index.js +25 -22
  129. package/dist/components/ScrollendIndicator/ScrollendIndicator.js +118 -0
  130. package/dist/components/ScrollendIndicator/ScrollendIndicator.module.scss +76 -0
  131. package/dist/components/SectionContainer/SectionContainer.js +38 -16
  132. package/dist/components/SectionContainer/index.js +25 -22
  133. package/dist/components/Select/Select.js +128 -95
  134. package/dist/components/Select/index.js +25 -22
  135. package/dist/components/Skeleton/Skeleton.js +22 -14
  136. package/dist/components/Skeleton/index.js +25 -22
  137. package/dist/components/Slider/Slider.js +63 -59
  138. package/dist/components/Slider/index.js +25 -22
  139. package/dist/components/Spacing/Spacing.js +25 -17
  140. package/dist/components/Spacing/index.js +25 -22
  141. package/dist/components/StaticScroller/StaticScroller.js +65 -61
  142. package/dist/components/StaticScroller/index.js +25 -22
  143. package/dist/components/Switch/Switch.js +40 -26
  144. package/dist/components/Switch/index.js +25 -22
  145. package/dist/components/Table/Table.js +107 -56
  146. package/dist/components/Table/index.js +25 -22
  147. package/dist/components/Tabs/Tabs.js +59 -54
  148. package/dist/components/Tabs/index.js +25 -22
  149. package/dist/components/Text/Text.js +35 -30
  150. package/dist/components/Text/index.js +25 -22
  151. package/dist/components/Transition/MasksFactory/DiagonalReveal.js +46 -12
  152. package/dist/components/Transition/MasksFactory/DiagonalSquareToBalls.js +71 -49
  153. package/dist/components/Transition/MasksFactory/PhysicsSquares.js +89 -79
  154. package/dist/components/Transition/MasksFactory/SquareToBalls.js +60 -41
  155. package/dist/components/Transition/MasksFactory/utils.js +25 -27
  156. package/dist/components/Transition/Transition.js +298 -319
  157. package/dist/components/Transition/index.js +25 -22
  158. package/dist/components/UncontrolledTransition/UncontrolledTransition.js +101 -93
  159. package/dist/components/UncontrolledTransition/UncontrolledTransition.sample.js +27 -19
  160. package/dist/components/UncontrolledTransition/index.js +25 -22
  161. package/dist/components/WalletConnectionWrapper/WalletConnectionWrapper.js +101 -94
  162. package/dist/components/WalletConnectionWrapper/index.js +25 -22
  163. package/dist/components/utilitary/ScrollAndFocusLock/ScrollAndFocusLock.js +53 -43
  164. package/dist/components/utilitary/ScrollAndFocusLock/index.js +25 -22
  165. package/dist/context/AsyncProcess.js +68 -41
  166. package/dist/context/ContextAsyncControl.js +72 -51
  167. package/dist/context/CustomBrowserRouter.js +44 -30
  168. package/dist/context/OneUIProvider.js +102 -108
  169. package/dist/hooks/logs/useDependencyChangeDetection.js +17 -16
  170. package/dist/hooks/logs/useIsMounting.js +10 -7
  171. package/dist/hooks/persistence/useLocalStorage.js +41 -40
  172. package/dist/hooks/shims/ObjectWatchShim.js +47 -46
  173. package/dist/hooks/ui/useAdaptiveImage.js +29 -34
  174. package/dist/hooks/ui/useAlternating.js +18 -18
  175. package/dist/hooks/ui/useBreakpoint.js +19 -18
  176. package/dist/hooks/ui/useCustomScrollbar.js +26 -21
  177. package/dist/hooks/ui/useEffectIf.js +11 -9
  178. package/dist/hooks/ui/useMouseHover.js +22 -19
  179. package/dist/hooks/ui/usePaginationControls.js +129 -136
  180. package/dist/hooks/ui/useSnapToViewport.js +20 -19
  181. package/dist/hooks/ui/useTilt.js +145 -129
  182. package/dist/hooks/ui/useZoomable.js +123 -116
  183. package/dist/hooks/useAsyncControl.js +67 -52
  184. package/dist/hooks/useContainedRepositioning.js +75 -71
  185. package/dist/hooks/useCustomHistory.js +21 -12
  186. package/dist/hooks/useElementFit.js +43 -48
  187. package/dist/hooks/useFirestoreWatch.js +41 -41
  188. package/dist/hooks/useFreeze.js +10 -8
  189. package/dist/hooks/useHero.js +249 -271
  190. package/dist/hooks/useIntersection.js +32 -27
  191. package/dist/hooks/useMergeRefs.js +27 -24
  192. package/dist/hooks/useObserve.js +17 -14
  193. package/dist/hooks/usePagination.js +147 -164
  194. package/dist/hooks/usePooledOperation.js +41 -57
  195. package/dist/hooks/usePooling.js +46 -49
  196. package/dist/hooks/useRebound.js +23 -19
  197. package/dist/hooks/useShortIntl.js +72 -50
  198. package/dist/hooks/utility/useAsyncMemo.js +36 -42
  199. package/dist/hooks/utility/useDepChange.js +14 -12
  200. package/dist/hooks/utility/useEvents.js +26 -21
  201. package/dist/hooks/utility/useImmediate.js +8 -5
  202. package/dist/hooks/utility/useManualInit.js +19 -17
  203. package/dist/hooks/utility/useModule.js +12 -9
  204. package/dist/hooks/utility/useQuery.js +13 -7
  205. package/dist/hooks/utility/useUniqueEffect.js +17 -17
  206. package/dist/index.js +2159 -349
  207. package/dist/index.preprocess.js +35 -72
  208. package/dist/models/DebugLogger.js +8 -5
  209. package/dist/models/GenericContract.js +42 -13
  210. package/dist/models/ImageScales.js +13 -10
  211. package/dist/models/Orbs.js +53 -47
  212. package/dist/storybookUtils/index.js +40 -39
  213. package/dist/type-utils.js +5 -2
  214. package/dist/types.js +5 -2
  215. package/dist/utils/blockchain.js +35 -54
  216. package/dist/utils/e2e.js +21 -11
  217. package/dist/utils/flatten.js +15 -12
  218. package/dist/utils/formatters.js +48 -43
  219. package/dist/utils/html.utils.js +12 -6
  220. package/dist/utils/ownEvent.js +9 -7
  221. package/dist/utils/test.js +13 -11
  222. package/dist-ts/components/ScrollendIndicator/ScrollendIndicator.d.ts +10 -0
  223. package/dist-ts/components/ScrollendIndicator/ScrollendIndicator.js +68 -0
  224. package/dist-ts/components/ScrollendIndicator/ScrollendIndicator.js.map +1 -0
  225. package/dist-ts/components/ScrollendIndicator/ScrollendIndicator.module.scss +76 -0
  226. package/dist-ts/index.d.ts +1 -0
  227. package/dist-ts/index.js +1 -0
  228. package/dist-ts/index.js.map +1 -1
  229. package/package.json +1 -1
@@ -1,167 +1,168 @@
1
1
  "use strict";
2
- var __rest = (this && this.__rest) || function (s, e) {
3
- var t = {};
4
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
- t[p] = s[p];
6
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
- t[p[i]] = s[p[i]];
10
- }
11
- return t;
12
- };
13
- var __importDefault = (this && this.__importDefault) || function (mod) {
14
- return (mod && mod.__esModule) ? mod : { "default": mod };
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.updateTooltipPosition = exports.AnchoredTooltipAnchor = exports.AnchoredTooltipAlignment = void 0;
18
- const jsx_runtime_1 = require("react/jsx-runtime");
19
- const react_1 = require("react");
20
- const react_dom_1 = __importDefault(require("react-dom"));
21
- const OneUIProvider_1 = require("../../context/OneUIProvider");
22
- const FadeIn_1 = __importDefault(require("../FadeIn"));
23
- const AnchoredTooltip_module_scss_1 = __importDefault(require("./AnchoredTooltip.module.scss"));
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.AnchoredTooltipAnchor = exports.AnchoredTooltipAlignment = void 0;
7
+ exports.updateTooltipPosition = updateTooltipPosition;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _reactDom = _interopRequireDefault(require("react-dom"));
10
+ var _OneUIProvider = require("../../context/OneUIProvider");
11
+ var _FadeIn = _interopRequireDefault(require("../FadeIn"));
12
+ var _AnchoredTooltipModule = _interopRequireDefault(require("./AnchoredTooltip.module.scss"));
13
+ const _excluded = ["containInViewport", "alignment"];
14
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
16
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
17
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
18
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
24
19
  function getPositionOnViewport(element) {
25
- return element.getBoundingClientRect();
20
+ return element.getBoundingClientRect();
26
21
  }
27
- var AnchoredTooltipAlignment;
28
- (function (AnchoredTooltipAlignment) {
29
- AnchoredTooltipAlignment[AnchoredTooltipAlignment["LEFT"] = 0] = "LEFT";
30
- AnchoredTooltipAlignment[AnchoredTooltipAlignment["CENTER"] = 1] = "CENTER";
31
- AnchoredTooltipAlignment[AnchoredTooltipAlignment["RIGHT"] = 2] = "RIGHT";
32
- })(AnchoredTooltipAlignment || (exports.AnchoredTooltipAlignment = AnchoredTooltipAlignment = {}));
33
- var AnchoredTooltipAnchor;
34
- (function (AnchoredTooltipAnchor) {
35
- AnchoredTooltipAnchor[AnchoredTooltipAnchor["TOP"] = 0] = "TOP";
36
- AnchoredTooltipAnchor[AnchoredTooltipAnchor["BOTTOM"] = 1] = "BOTTOM";
37
- })(AnchoredTooltipAnchor || (exports.AnchoredTooltipAnchor = AnchoredTooltipAnchor = {}));
38
- function calculateTooltipFromAnchor(anchorRef, tooltipRef, containInViewport, alignTo = AnchoredTooltipAlignment.CENTER, anchorTo = AnchoredTooltipAnchor.TOP) {
39
- const anchorPosition = getPositionOnViewport(anchorRef);
40
- const shouldAnchorToBottom = anchorTo === AnchoredTooltipAnchor.BOTTOM ||
41
- tooltipRef.clientHeight > anchorPosition.top;
42
- let top = anchorPosition.top - tooltipRef.clientHeight;
43
- /**
44
- * The terms mean:
45
- * anchorPosition.left = The left to get to the left border of the anchor (visible element)
46
- * anchorPosition.width = The width of the anchor (visible element)
47
- * tooltipRef.clientWidth = The width of the content
48
- */
49
- let left = (() => {
50
- switch (alignTo) {
51
- case AnchoredTooltipAlignment.CENTER:
52
- return (anchorPosition.left +
53
- anchorPosition.width / 2 -
54
- tooltipRef.clientWidth / 2);
55
- case AnchoredTooltipAlignment.LEFT:
56
- return anchorPosition.left;
57
- case AnchoredTooltipAlignment.RIGHT:
58
- return (anchorPosition.left + anchorPosition.width - tooltipRef.clientWidth);
59
- }
60
- })();
61
- if (shouldAnchorToBottom)
62
- top += tooltipRef.clientHeight + anchorRef.clientHeight;
63
- if (containInViewport && top < 0)
64
- top = 0;
65
- const offset = top + tooltipRef.clientHeight - window.innerHeight;
66
- if (containInViewport && offset > 0) {
67
- top -= offset;
68
- }
69
- const offsetLeft = left + tooltipRef.clientWidth - window.innerWidth;
70
- if (containInViewport && offsetLeft > 0) {
71
- left -= offsetLeft;
22
+ let AnchoredTooltipAlignment = exports.AnchoredTooltipAlignment = /*#__PURE__*/function (AnchoredTooltipAlignment) {
23
+ AnchoredTooltipAlignment[AnchoredTooltipAlignment["LEFT"] = 0] = "LEFT";
24
+ AnchoredTooltipAlignment[AnchoredTooltipAlignment["CENTER"] = 1] = "CENTER";
25
+ AnchoredTooltipAlignment[AnchoredTooltipAlignment["RIGHT"] = 2] = "RIGHT";
26
+ return AnchoredTooltipAlignment;
27
+ }({});
28
+ let AnchoredTooltipAnchor = exports.AnchoredTooltipAnchor = /*#__PURE__*/function (AnchoredTooltipAnchor) {
29
+ AnchoredTooltipAnchor[AnchoredTooltipAnchor["TOP"] = 0] = "TOP";
30
+ AnchoredTooltipAnchor[AnchoredTooltipAnchor["BOTTOM"] = 1] = "BOTTOM";
31
+ return AnchoredTooltipAnchor;
32
+ }({});
33
+ function calculateTooltipFromAnchor(anchorRef, tooltipRef, containInViewport) {
34
+ let alignTo = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : AnchoredTooltipAlignment.CENTER;
35
+ let anchorTo = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : AnchoredTooltipAnchor.TOP;
36
+ const anchorPosition = getPositionOnViewport(anchorRef);
37
+ const shouldAnchorToBottom = anchorTo === AnchoredTooltipAnchor.BOTTOM || tooltipRef.clientHeight > anchorPosition.top;
38
+ let top = anchorPosition.top - tooltipRef.clientHeight;
39
+
40
+ /**
41
+ * The terms mean:
42
+ * anchorPosition.left = The left to get to the left border of the anchor (visible element)
43
+ * anchorPosition.width = The width of the anchor (visible element)
44
+ * tooltipRef.clientWidth = The width of the content
45
+ */
46
+ let left = (() => {
47
+ switch (alignTo) {
48
+ case AnchoredTooltipAlignment.CENTER:
49
+ return anchorPosition.left + anchorPosition.width / 2 - tooltipRef.clientWidth / 2;
50
+ case AnchoredTooltipAlignment.LEFT:
51
+ return anchorPosition.left;
52
+ case AnchoredTooltipAlignment.RIGHT:
53
+ return anchorPosition.left + anchorPosition.width - tooltipRef.clientWidth;
72
54
  }
73
- if (containInViewport && left < 0) {
74
- left = 0;
75
- }
76
- const maxLeftOffsetIndicator = tooltipRef.clientWidth / 2 - 60;
77
- const tooltipCenter = tooltipRef.clientWidth / 2 + left;
78
- const anchorPositionCenter = anchorPosition.left + anchorPosition.width / 2;
79
- const offsetTooltip = anchorPositionCenter - tooltipCenter;
80
- const minOffsetTooltip = -(tooltipRef.clientWidth / 2) + 60;
81
- const offsetIndicatorLeft = offsetLeft > 0
82
- ? offsetLeft > maxLeftOffsetIndicator
83
- ? maxLeftOffsetIndicator
84
- : offsetLeft
85
- : offsetTooltip < 0
86
- ? offsetTooltip < minOffsetTooltip
87
- ? minOffsetTooltip
88
- : offsetTooltip
89
- : 0;
90
- return {
91
- offset,
92
- offsetIndicatorLeft,
93
- top,
94
- left,
95
- shouldAnchorToBottom,
96
- };
55
+ })();
56
+ if (shouldAnchorToBottom) top += tooltipRef.clientHeight + anchorRef.clientHeight;
57
+ if (containInViewport && top < 0) top = 0;
58
+ const offset = top + tooltipRef.clientHeight - window.innerHeight;
59
+ if (containInViewport && offset > 0) {
60
+ top -= offset;
61
+ }
62
+ const offsetLeft = left + tooltipRef.clientWidth - window.innerWidth;
63
+ if (containInViewport && offsetLeft > 0) {
64
+ left -= offsetLeft;
65
+ }
66
+ if (containInViewport && left < 0) {
67
+ left = 0;
68
+ }
69
+ const maxLeftOffsetIndicator = tooltipRef.clientWidth / 2 - 60;
70
+ const tooltipCenter = tooltipRef.clientWidth / 2 + left;
71
+ const anchorPositionCenter = anchorPosition.left + anchorPosition.width / 2;
72
+ const offsetTooltip = anchorPositionCenter - tooltipCenter;
73
+ const minOffsetTooltip = -(tooltipRef.clientWidth / 2) + 60;
74
+ const offsetIndicatorLeft = offsetLeft > 0 ? offsetLeft > maxLeftOffsetIndicator ? maxLeftOffsetIndicator : offsetLeft : offsetTooltip < 0 ? offsetTooltip < minOffsetTooltip ? minOffsetTooltip : offsetTooltip : 0;
75
+ return {
76
+ offset,
77
+ offsetIndicatorLeft,
78
+ top,
79
+ left,
80
+ shouldAnchorToBottom
81
+ };
97
82
  }
98
- function updateTooltipPosition(tooltipRef, anchorRef, limitToViewport = true, alignment = AnchoredTooltipAlignment.CENTER, anchorTo = AnchoredTooltipAnchor.TOP) {
99
- const { top, left, shouldAnchorToBottom, offsetIndicatorLeft } = calculateTooltipFromAnchor(anchorRef, tooltipRef, limitToViewport, alignment, anchorTo);
100
- if (limitToViewport) {
101
- const maxHeight = window.innerHeight - top;
102
- tooltipRef.style.maxHeight = `${maxHeight - 32}px`;
103
- }
104
- tooltipRef.style.top = `${top}px`;
105
- tooltipRef.style.left = `${left}px`;
106
- tooltipRef.style.setProperty("--anchor-indicator-offset-left", `${offsetIndicatorLeft}px`);
107
- if (shouldAnchorToBottom) {
108
- tooltipRef.classList.remove(AnchoredTooltip_module_scss_1.default.anchoredTop);
109
- tooltipRef.classList.add(AnchoredTooltip_module_scss_1.default.anchoredBottom);
83
+ function updateTooltipPosition(tooltipRef, anchorRef) {
84
+ let limitToViewport = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
85
+ let alignment = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : AnchoredTooltipAlignment.CENTER;
86
+ let anchorTo = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : AnchoredTooltipAnchor.TOP;
87
+ const {
88
+ top,
89
+ left,
90
+ shouldAnchorToBottom,
91
+ offsetIndicatorLeft
92
+ } = calculateTooltipFromAnchor(anchorRef, tooltipRef, limitToViewport, alignment, anchorTo);
93
+ if (limitToViewport) {
94
+ const maxHeight = window.innerHeight - top;
95
+ tooltipRef.style.maxHeight = "".concat(maxHeight - 32, "px");
96
+ }
97
+ tooltipRef.style.top = "".concat(top, "px");
98
+ tooltipRef.style.left = "".concat(left, "px");
99
+ tooltipRef.style.setProperty("--anchor-indicator-offset-left", "".concat(offsetIndicatorLeft, "px"));
100
+ if (shouldAnchorToBottom) {
101
+ tooltipRef.classList.remove(_AnchoredTooltipModule.default.anchoredTop);
102
+ tooltipRef.classList.add(_AnchoredTooltipModule.default.anchoredBottom);
103
+ } else {
104
+ tooltipRef.classList.add(_AnchoredTooltipModule.default.anchoredTop);
105
+ tooltipRef.classList.remove(_AnchoredTooltipModule.default.anchoredBottom);
106
+ }
107
+ return {
108
+ shouldAnchorToBottom
109
+ };
110
+ }
111
+ function _AnchoredTooltip(_ref, ref) {
112
+ let {
113
+ containInViewport = true,
114
+ alignment
115
+ } = _ref,
116
+ props = _objectWithoutProperties(_ref, _excluded);
117
+ const {
118
+ open,
119
+ children,
120
+ anchorRef
121
+ } = props;
122
+ const tooltipRef = (0, _react.useRef)(null);
123
+ const className = (0, _OneUIProvider.useOneUIConfig)("component.tooltip.className");
124
+ const [realClosed, setRealClosed] = (0, _react.useState)(!open);
125
+ (0, _react.useEffect)(() => {
126
+ if (open) setRealClosed(false);
127
+ }, [open]);
128
+ (0, _react.useImperativeHandle)(ref, () => ({
129
+ updatePosition: () => {
130
+ updateTooltipPosition(tooltipRef.current, anchorRef.current, containInViewport, alignment);
110
131
  }
111
- else {
112
- tooltipRef.classList.add(AnchoredTooltip_module_scss_1.default.anchoredTop);
113
- tooltipRef.classList.remove(AnchoredTooltip_module_scss_1.default.anchoredBottom);
132
+ }), [containInViewport]);
133
+ (0, _react.useEffect)(() => {
134
+ if (open && !realClosed) {
135
+ if (anchorRef.current && tooltipRef.current) updateTooltipPosition(tooltipRef.current, anchorRef.current, containInViewport, alignment);
136
+ const scrollHandler = () => {
137
+ if (anchorRef.current && tooltipRef.current) updateTooltipPosition(tooltipRef.current, anchorRef.current, containInViewport, alignment);
138
+ };
139
+ window.addEventListener("scroll", scrollHandler, {
140
+ passive: true
141
+ });
142
+ return () => {
143
+ window.removeEventListener("scroll", scrollHandler);
144
+ };
114
145
  }
115
- return { shouldAnchorToBottom };
116
- }
117
- exports.updateTooltipPosition = updateTooltipPosition;
118
- function _AnchoredTooltip(_a, ref) {
119
- var { containInViewport = true, alignment } = _a, props = __rest(_a, ["containInViewport", "alignment"]);
120
- const { open, children, anchorRef } = props;
121
- const tooltipRef = (0, react_1.useRef)(null);
122
- const className = (0, OneUIProvider_1.useOneUIConfig)("component.tooltip.className");
123
- const [realClosed, setRealClosed] = (0, react_1.useState)(!open);
124
- (0, react_1.useEffect)(() => {
125
- if (open)
126
- setRealClosed(false);
127
- }, [open]);
128
- (0, react_1.useImperativeHandle)(ref, () => ({
129
- updatePosition: () => {
130
- updateTooltipPosition(tooltipRef.current, anchorRef.current, containInViewport, alignment);
131
- },
132
- }), [containInViewport]);
133
- (0, react_1.useEffect)(() => {
134
- if (open && !realClosed) {
135
- if (anchorRef.current && tooltipRef.current)
136
- updateTooltipPosition(tooltipRef.current, anchorRef.current, containInViewport, alignment);
137
- const scrollHandler = () => {
138
- if (anchorRef.current && tooltipRef.current)
139
- updateTooltipPosition(tooltipRef.current, anchorRef.current, containInViewport, alignment);
140
- };
141
- window.addEventListener("scroll", scrollHandler, {
142
- passive: true,
143
- });
144
- return () => {
145
- window.removeEventListener("scroll", scrollHandler);
146
- };
147
- }
148
- }, [open, anchorRef, realClosed]);
149
- (0, react_1.useLayoutEffect)(() => {
150
- if (!tooltipRef.current)
151
- return;
152
- if (open)
153
- tooltipRef.current.classList.add(AnchoredTooltip_module_scss_1.default.open);
154
- else
155
- tooltipRef.current.classList.remove(AnchoredTooltip_module_scss_1.default.open);
156
- }, [open]);
157
- return !realClosed || open ? ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: react_dom_1.default.createPortal((0, jsx_runtime_1.jsx)(FadeIn_1.default, { onClick: (e) => e.stopPropagation(), ref: tooltipRef, className: `${AnchoredTooltip_module_scss_1.default.tooltipContainer} ${props.className || ""} ${className}`, style: props.style, onHidden: () => setRealClosed(true), children: open && !realClosed ? (0, jsx_runtime_1.jsx)("div", { children: children }) : undefined }), document.body) })) : null;
146
+ }, [open, anchorRef, realClosed]);
147
+ (0, _react.useLayoutEffect)(() => {
148
+ if (!tooltipRef.current) return;
149
+ if (open) tooltipRef.current.classList.add(_AnchoredTooltipModule.default.open);else tooltipRef.current.classList.remove(_AnchoredTooltipModule.default.open);
150
+ }, [open]);
151
+ return !realClosed || open ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_reactDom.default.createPortal( /*#__PURE__*/_react.default.createElement(_FadeIn.default, {
152
+ onClick: e => e.stopPropagation(),
153
+ ref: tooltipRef,
154
+ className: "".concat(_AnchoredTooltipModule.default.tooltipContainer, " ").concat(props.className || "", " ").concat(className),
155
+ style: props.style,
156
+ onHidden: () => setRealClosed(true)
157
+ }, open && !realClosed ? /*#__PURE__*/_react.default.createElement("div", null, children) : undefined), document.body)) : null;
158
158
  }
159
+
159
160
  /**
160
161
  * This tooltip anchors itself to an element and handles positioning relative to the anchored element
161
- *
162
+ *
162
163
  * A simple popup that appears near another element, automatically positioning itself to stay visible
163
164
  * on the screen and adjusting its location if the page is scrolled or resized.
164
165
  */
165
- const AnchoredTooltip = (0, react_1.forwardRef)(_AnchoredTooltip);
166
- exports.default = AnchoredTooltip;
167
- //# sourceMappingURL=AnchoredTooltip.js.map
166
+ const AnchoredTooltip = /*#__PURE__*/(0, _react.forwardRef)(_AnchoredTooltip);
167
+ var _default = exports.default = AnchoredTooltip;
168
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVhY3REb20iLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX09uZVVJUHJvdmlkZXIiLCJfRmFkZUluIiwiX0FuY2hvcmVkVG9vbHRpcE1vZHVsZSIsIl9leGNsdWRlZCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwibm9kZUludGVyb3AiLCJXZWFrTWFwIiwiY2FjaGVCYWJlbEludGVyb3AiLCJjYWNoZU5vZGVJbnRlcm9wIiwiY2FjaGUiLCJoYXMiLCJnZXQiLCJuZXdPYmoiLCJoYXNQcm9wZXJ0eURlc2NyaXB0b3IiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImRlc2MiLCJzZXQiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJzb3VyY2UiLCJleGNsdWRlZCIsInRhcmdldCIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIiwiaSIsImdldE93blByb3BlcnR5U3ltYm9scyIsInNvdXJjZVN5bWJvbEtleXMiLCJsZW5ndGgiLCJpbmRleE9mIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJzb3VyY2VLZXlzIiwia2V5cyIsImdldFBvc2l0aW9uT25WaWV3cG9ydCIsImVsZW1lbnQiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJBbmNob3JlZFRvb2x0aXBBbGlnbm1lbnQiLCJleHBvcnRzIiwiQW5jaG9yZWRUb29sdGlwQW5jaG9yIiwiY2FsY3VsYXRlVG9vbHRpcEZyb21BbmNob3IiLCJhbmNob3JSZWYiLCJ0b29sdGlwUmVmIiwiY29udGFpbkluVmlld3BvcnQiLCJhbGlnblRvIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiQ0VOVEVSIiwiYW5jaG9yVG8iLCJUT1AiLCJhbmNob3JQb3NpdGlvbiIsInNob3VsZEFuY2hvclRvQm90dG9tIiwiQk9UVE9NIiwiY2xpZW50SGVpZ2h0IiwidG9wIiwibGVmdCIsIndpZHRoIiwiY2xpZW50V2lkdGgiLCJMRUZUIiwiUklHSFQiLCJvZmZzZXQiLCJ3aW5kb3ciLCJpbm5lckhlaWdodCIsIm9mZnNldExlZnQiLCJpbm5lcldpZHRoIiwibWF4TGVmdE9mZnNldEluZGljYXRvciIsInRvb2x0aXBDZW50ZXIiLCJhbmNob3JQb3NpdGlvbkNlbnRlciIsIm9mZnNldFRvb2x0aXAiLCJtaW5PZmZzZXRUb29sdGlwIiwib2Zmc2V0SW5kaWNhdG9yTGVmdCIsInVwZGF0ZVRvb2x0aXBQb3NpdGlvbiIsImxpbWl0VG9WaWV3cG9ydCIsImFsaWdubWVudCIsIm1heEhlaWdodCIsInN0eWxlIiwiY29uY2F0Iiwic2V0UHJvcGVydHkiLCJjbGFzc0xpc3QiLCJyZW1vdmUiLCJTdHlsZXMiLCJhbmNob3JlZFRvcCIsImFkZCIsImFuY2hvcmVkQm90dG9tIiwiX0FuY2hvcmVkVG9vbHRpcCIsIl9yZWYiLCJyZWYiLCJwcm9wcyIsIm9wZW4iLCJjaGlsZHJlbiIsInVzZVJlZiIsImNsYXNzTmFtZSIsInVzZU9uZVVJQ29uZmlnIiwicmVhbENsb3NlZCIsInNldFJlYWxDbG9zZWQiLCJ1c2VTdGF0ZSIsInVzZUVmZmVjdCIsInVzZUltcGVyYXRpdmVIYW5kbGUiLCJ1cGRhdGVQb3NpdGlvbiIsImN1cnJlbnQiLCJzY3JvbGxIYW5kbGVyIiwiYWRkRXZlbnRMaXN0ZW5lciIsInBhc3NpdmUiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwidXNlTGF5b3V0RWZmZWN0IiwiY3JlYXRlRWxlbWVudCIsIkZyYWdtZW50IiwiUmVhY3RET00iLCJjcmVhdGVQb3J0YWwiLCJvbkNsaWNrIiwiZSIsInN0b3BQcm9wYWdhdGlvbiIsInRvb2x0aXBDb250YWluZXIiLCJvbkhpZGRlbiIsImRvY3VtZW50IiwiYm9keSIsIkFuY2hvcmVkVG9vbHRpcCIsImZvcndhcmRSZWYiLCJfZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL0FuY2hvcmVkVG9vbHRpcC9BbmNob3JlZFRvb2x0aXAudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwge1xuICBGb3J3YXJkZWRSZWYsXG4gIGZvcndhcmRSZWYsXG4gIEpTWCxcbiAgUmVhY3ROb2RlLFxuICBSZWZPYmplY3QsXG4gIHVzZUVmZmVjdCxcbiAgdXNlSW1wZXJhdGl2ZUhhbmRsZSxcbiAgdXNlTGF5b3V0RWZmZWN0LFxuICB1c2VSZWYsXG4gIHVzZVN0YXRlLFxufSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBSZWFjdERPTSBmcm9tIFwicmVhY3QtZG9tXCI7XG5pbXBvcnQgeyB1c2VPbmVVSUNvbmZpZyB9IGZyb20gXCIuLi8uLi9jb250ZXh0L09uZVVJUHJvdmlkZXJcIjtcbmltcG9ydCBGYWRlSW4gZnJvbSBcIi4uL0ZhZGVJblwiO1xuaW1wb3J0IFN0eWxlcyBmcm9tIFwiLi9BbmNob3JlZFRvb2x0aXAubW9kdWxlLnNjc3NcIjtcblxudHlwZSBQcm9wcyA9IHtcbiAgY2hpbGRyZW46IEpTWC5FbGVtZW50O1xuICBhbmNob3JSZWY6IFJlZk9iamVjdDxIVE1MRWxlbWVudCB8IG51bGw+O1xuICBvcGVuOiBib29sZWFuO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhlIHRvb2x0aXAgc2hvdWxkIGJlIGFsd2F5cyB2aXNpYmxlIG9uIHZpZXdwb3J0XG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGNvbnRhaW5JblZpZXdwb3J0PzogYm9vbGVhbjtcblxuICBzdHlsZT86IGFueTtcbiAgYWxpZ25tZW50PzogQW5jaG9yZWRUb29sdGlwQWxpZ25tZW50O1xufTtcblxuZnVuY3Rpb24gZ2V0UG9zaXRpb25PblZpZXdwb3J0KGVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XG4gIHJldHVybiBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xufVxuXG5leHBvcnQgZW51bSBBbmNob3JlZFRvb2x0aXBBbGlnbm1lbnQge1xuICBMRUZULFxuICBDRU5URVIsXG4gIFJJR0hULFxufVxuXG5leHBvcnQgZW51bSBBbmNob3JlZFRvb2x0aXBBbmNob3Ige1xuICBUT1AsXG4gIEJPVFRPTSxcbn1cblxuZnVuY3Rpb24gY2FsY3VsYXRlVG9vbHRpcEZyb21BbmNob3IoXG4gIGFuY2hvclJlZjogSFRNTEVsZW1lbnQsXG4gIHRvb2x0aXBSZWY6IEhUTUxEaXZFbGVtZW50LFxuICBjb250YWluSW5WaWV3cG9ydDogYm9vbGVhbixcbiAgYWxpZ25UbzogQW5jaG9yZWRUb29sdGlwQWxpZ25tZW50ID0gQW5jaG9yZWRUb29sdGlwQWxpZ25tZW50LkNFTlRFUixcbiAgYW5jaG9yVG86IEFuY2hvcmVkVG9vbHRpcEFuY2hvciA9IEFuY2hvcmVkVG9vbHRpcEFuY2hvci5UT1Bcbikge1xuICBjb25zdCBhbmNob3JQb3NpdGlvbiA9IGdldFBvc2l0aW9uT25WaWV3cG9ydChhbmNob3JSZWYpO1xuXG4gIGNvbnN0IHNob3VsZEFuY2hvclRvQm90dG9tID1cbiAgICBhbmNob3JUbyA9PT0gQW5jaG9yZWRUb29sdGlwQW5jaG9yLkJPVFRPTSB8fFxuICAgIHRvb2x0aXBSZWYuY2xpZW50SGVpZ2h0ID4gYW5jaG9yUG9zaXRpb24udG9wO1xuXG4gIGxldCB0b3AgPSBhbmNob3JQb3NpdGlvbi50b3AgLSB0b29sdGlwUmVmLmNsaWVudEhlaWdodDtcblxuICAvKipcbiAgICogVGhlIHRlcm1zIG1lYW46XG4gICAqIGFuY2hvclBvc2l0aW9uLmxlZnQgICAgPSBUaGUgbGVmdCB0byBnZXQgdG8gdGhlIGxlZnQgYm9yZGVyIG9mIHRoZSBhbmNob3IgKHZpc2libGUgZWxlbWVudClcbiAgICogYW5jaG9yUG9zaXRpb24ud2lkdGggICA9IFRoZSB3aWR0aCBvZiB0aGUgYW5jaG9yICh2aXNpYmxlIGVsZW1lbnQpXG4gICAqIHRvb2x0aXBSZWYuY2xpZW50V2lkdGggPSBUaGUgd2lkdGggb2YgdGhlIGNvbnRlbnRcbiAgICovXG4gIGxldCBsZWZ0ID0gKCgpID0+IHtcbiAgICBzd2l0Y2ggKGFsaWduVG8pIHtcbiAgICAgIGNhc2UgQW5jaG9yZWRUb29sdGlwQWxpZ25tZW50LkNFTlRFUjpcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICBhbmNob3JQb3NpdGlvbi5sZWZ0ICtcbiAgICAgICAgICBhbmNob3JQb3NpdGlvbi53aWR0aCAvIDIgLVxuICAgICAgICAgIHRvb2x0aXBSZWYuY2xpZW50V2lkdGggLyAyXG4gICAgICAgICk7XG4gICAgICBjYXNlIEFuY2hvcmVkVG9vbHRpcEFsaWdubWVudC5MRUZUOlxuICAgICAgICByZXR1cm4gYW5jaG9yUG9zaXRpb24ubGVmdDtcbiAgICAgIGNhc2UgQW5jaG9yZWRUb29sdGlwQWxpZ25tZW50LlJJR0hUOlxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIGFuY2hvclBvc2l0aW9uLmxlZnQgKyBhbmNob3JQb3NpdGlvbi53aWR0aCAtIHRvb2x0aXBSZWYuY2xpZW50V2lkdGhcbiAgICAgICAgKTtcbiAgICB9XG4gIH0pKCk7XG5cbiAgaWYgKHNob3VsZEFuY2hvclRvQm90dG9tKVxuICAgIHRvcCArPSB0b29sdGlwUmVmLmNsaWVudEhlaWdodCArIGFuY2hvclJlZi5jbGllbnRIZWlnaHQ7XG5cbiAgaWYgKGNvbnRhaW5JblZpZXdwb3J0ICYmIHRvcCA8IDApIHRvcCA9IDA7XG4gIGNvbnN0IG9mZnNldCA9IHRvcCArIHRvb2x0aXBSZWYuY2xpZW50SGVpZ2h0IC0gd2luZG93LmlubmVySGVpZ2h0O1xuICBpZiAoY29udGFpbkluVmlld3BvcnQgJiYgb2Zmc2V0ID4gMCkge1xuICAgIHRvcCAtPSBvZmZzZXQ7XG4gIH1cbiAgY29uc3Qgb2Zmc2V0TGVmdCA9IGxlZnQgKyB0b29sdGlwUmVmLmNsaWVudFdpZHRoIC0gd2luZG93LmlubmVyV2lkdGg7XG4gIGlmIChjb250YWluSW5WaWV3cG9ydCAmJiBvZmZzZXRMZWZ0ID4gMCkge1xuICAgIGxlZnQgLT0gb2Zmc2V0TGVmdDtcbiAgfVxuICBpZiAoY29udGFpbkluVmlld3BvcnQgJiYgbGVmdCA8IDApIHtcbiAgICBsZWZ0ID0gMDtcbiAgfVxuXG4gIGNvbnN0IG1heExlZnRPZmZzZXRJbmRpY2F0b3IgPSB0b29sdGlwUmVmLmNsaWVudFdpZHRoIC8gMiAtIDYwO1xuICBjb25zdCB0b29sdGlwQ2VudGVyID0gdG9vbHRpcFJlZi5jbGllbnRXaWR0aCAvIDIgKyBsZWZ0O1xuICBjb25zdCBhbmNob3JQb3NpdGlvbkNlbnRlciA9IGFuY2hvclBvc2l0aW9uLmxlZnQgKyBhbmNob3JQb3NpdGlvbi53aWR0aCAvIDI7XG5cbiAgY29uc3Qgb2Zmc2V0VG9vbHRpcCA9IGFuY2hvclBvc2l0aW9uQ2VudGVyIC0gdG9vbHRpcENlbnRlcjtcbiAgY29uc3QgbWluT2Zmc2V0VG9vbHRpcCA9IC0odG9vbHRpcFJlZi5jbGllbnRXaWR0aCAvIDIpICsgNjA7XG5cbiAgY29uc3Qgb2Zmc2V0SW5kaWNhdG9yTGVmdCA9XG4gICAgb2Zmc2V0TGVmdCA+IDBcbiAgICAgID8gb2Zmc2V0TGVmdCA+IG1heExlZnRPZmZzZXRJbmRpY2F0b3JcbiAgICAgICAgPyBtYXhMZWZ0T2Zmc2V0SW5kaWNhdG9yXG4gICAgICAgIDogb2Zmc2V0TGVmdFxuICAgICAgOiBvZmZzZXRUb29sdGlwIDwgMFxuICAgICAgPyBvZmZzZXRUb29sdGlwIDwgbWluT2Zmc2V0VG9vbHRpcFxuICAgICAgICA/IG1pbk9mZnNldFRvb2x0aXBcbiAgICAgICAgOiBvZmZzZXRUb29sdGlwXG4gICAgICA6IDA7XG5cbiAgcmV0dXJuIHtcbiAgICBvZmZzZXQsXG4gICAgb2Zmc2V0SW5kaWNhdG9yTGVmdCxcbiAgICB0b3AsXG4gICAgbGVmdCxcbiAgICBzaG91bGRBbmNob3JUb0JvdHRvbSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVRvb2x0aXBQb3NpdGlvbihcbiAgdG9vbHRpcFJlZjogSFRNTERpdkVsZW1lbnQsXG4gIGFuY2hvclJlZjogSFRNTEVsZW1lbnQsXG4gIGxpbWl0VG9WaWV3cG9ydDogYm9vbGVhbiA9IHRydWUsXG4gIGFsaWdubWVudDogQW5jaG9yZWRUb29sdGlwQWxpZ25tZW50ID0gQW5jaG9yZWRUb29sdGlwQWxpZ25tZW50LkNFTlRFUixcbiAgYW5jaG9yVG86IEFuY2hvcmVkVG9vbHRpcEFuY2hvciA9IEFuY2hvcmVkVG9vbHRpcEFuY2hvci5UT1Bcbikge1xuICBjb25zdCB7IHRvcCwgbGVmdCwgc2hvdWxkQW5jaG9yVG9Cb3R0b20sIG9mZnNldEluZGljYXRvckxlZnQgfSA9XG4gICAgY2FsY3VsYXRlVG9vbHRpcEZyb21BbmNob3IoXG4gICAgICBhbmNob3JSZWYsXG4gICAgICB0b29sdGlwUmVmLFxuICAgICAgbGltaXRUb1ZpZXdwb3J0LFxuICAgICAgYWxpZ25tZW50LFxuICAgICAgYW5jaG9yVG9cbiAgICApO1xuICBpZiAobGltaXRUb1ZpZXdwb3J0KSB7XG4gICAgY29uc3QgbWF4SGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0IC0gdG9wO1xuICAgIHRvb2x0aXBSZWYuc3R5bGUubWF4SGVpZ2h0ID0gYCR7bWF4SGVpZ2h0IC0gMzJ9cHhgO1xuICB9XG4gIHRvb2x0aXBSZWYuc3R5bGUudG9wID0gYCR7dG9wfXB4YDtcbiAgdG9vbHRpcFJlZi5zdHlsZS5sZWZ0ID0gYCR7bGVmdH1weGA7XG4gIHRvb2x0aXBSZWYuc3R5bGUuc2V0UHJvcGVydHkoXG4gICAgXCItLWFuY2hvci1pbmRpY2F0b3Itb2Zmc2V0LWxlZnRcIixcbiAgICBgJHtvZmZzZXRJbmRpY2F0b3JMZWZ0fXB4YFxuICApO1xuICBpZiAoc2hvdWxkQW5jaG9yVG9Cb3R0b20pIHtcbiAgICB0b29sdGlwUmVmLmNsYXNzTGlzdC5yZW1vdmUoU3R5bGVzLmFuY2hvcmVkVG9wKTtcbiAgICB0b29sdGlwUmVmLmNsYXNzTGlzdC5hZGQoU3R5bGVzLmFuY2hvcmVkQm90dG9tKTtcbiAgfSBlbHNlIHtcbiAgICB0b29sdGlwUmVmLmNsYXNzTGlzdC5hZGQoU3R5bGVzLmFuY2hvcmVkVG9wKTtcbiAgICB0b29sdGlwUmVmLmNsYXNzTGlzdC5yZW1vdmUoU3R5bGVzLmFuY2hvcmVkQm90dG9tKTtcbiAgfVxuXG4gIHJldHVybiB7IHNob3VsZEFuY2hvclRvQm90dG9tIH07XG59XG5mdW5jdGlvbiBfQW5jaG9yZWRUb29sdGlwKFxuICB7IGNvbnRhaW5JblZpZXdwb3J0ID0gdHJ1ZSwgYWxpZ25tZW50LCAuLi5wcm9wcyB9OiBQcm9wcyxcbiAgcmVmOiBGb3J3YXJkZWRSZWY8eyB1cGRhdGVQb3NpdGlvbjogKCkgPT4gdm9pZCB9IHwgbnVsbD5cbikge1xuICBjb25zdCB7IG9wZW4sIGNoaWxkcmVuLCBhbmNob3JSZWYgfSA9IHByb3BzO1xuICBjb25zdCB0b29sdGlwUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgY29uc3QgY2xhc3NOYW1lID0gdXNlT25lVUlDb25maWcoXCJjb21wb25lbnQudG9vbHRpcC5jbGFzc05hbWVcIik7XG4gIGNvbnN0IFtyZWFsQ2xvc2VkLCBzZXRSZWFsQ2xvc2VkXSA9IHVzZVN0YXRlKCFvcGVuKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChvcGVuKSBzZXRSZWFsQ2xvc2VkKGZhbHNlKTtcbiAgfSwgW29wZW5dKTtcblxuICB1c2VJbXBlcmF0aXZlSGFuZGxlKFxuICAgIHJlZixcbiAgICAoKSA9PiAoe1xuICAgICAgdXBkYXRlUG9zaXRpb246ICgpID0+IHtcbiAgICAgICAgdXBkYXRlVG9vbHRpcFBvc2l0aW9uKFxuICAgICAgICAgIHRvb2x0aXBSZWYuY3VycmVudCEsXG4gICAgICAgICAgYW5jaG9yUmVmLmN1cnJlbnQhLFxuICAgICAgICAgIGNvbnRhaW5JblZpZXdwb3J0LFxuICAgICAgICAgIGFsaWdubWVudFxuICAgICAgICApO1xuICAgICAgfSxcbiAgICB9KSxcbiAgICBbY29udGFpbkluVmlld3BvcnRdXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAob3BlbiAmJiAhcmVhbENsb3NlZCkge1xuICAgICAgaWYgKGFuY2hvclJlZi5jdXJyZW50ICYmIHRvb2x0aXBSZWYuY3VycmVudClcbiAgICAgICAgdXBkYXRlVG9vbHRpcFBvc2l0aW9uKFxuICAgICAgICAgIHRvb2x0aXBSZWYuY3VycmVudCxcbiAgICAgICAgICBhbmNob3JSZWYuY3VycmVudCxcbiAgICAgICAgICBjb250YWluSW5WaWV3cG9ydCxcbiAgICAgICAgICBhbGlnbm1lbnRcbiAgICAgICAgKTtcbiAgICAgIGNvbnN0IHNjcm9sbEhhbmRsZXIgPSAoKSA9PiB7XG4gICAgICAgIGlmIChhbmNob3JSZWYuY3VycmVudCAmJiB0b29sdGlwUmVmLmN1cnJlbnQpXG4gICAgICAgICAgdXBkYXRlVG9vbHRpcFBvc2l0aW9uKFxuICAgICAgICAgICAgdG9vbHRpcFJlZi5jdXJyZW50LFxuICAgICAgICAgICAgYW5jaG9yUmVmLmN1cnJlbnQsXG4gICAgICAgICAgICBjb250YWluSW5WaWV3cG9ydCxcbiAgICAgICAgICAgIGFsaWdubWVudFxuICAgICAgICAgICk7XG4gICAgICB9O1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIiwgc2Nyb2xsSGFuZGxlciwge1xuICAgICAgICBwYXNzaXZlOiB0cnVlLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLCBzY3JvbGxIYW5kbGVyKTtcbiAgICAgIH07XG4gICAgfVxuICB9LCBbb3BlbiwgYW5jaG9yUmVmLCByZWFsQ2xvc2VkXSk7XG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXRvb2x0aXBSZWYuY3VycmVudCkgcmV0dXJuO1xuICAgIGlmIChvcGVuKSB0b29sdGlwUmVmLmN1cnJlbnQhLmNsYXNzTGlzdC5hZGQoU3R5bGVzLm9wZW4pO1xuICAgIGVsc2UgdG9vbHRpcFJlZi5jdXJyZW50IS5jbGFzc0xpc3QucmVtb3ZlKFN0eWxlcy5vcGVuKTtcbiAgfSwgW29wZW5dKTtcblxuICByZXR1cm4gIXJlYWxDbG9zZWQgfHwgb3BlbiA/IChcbiAgICA8PlxuICAgICAge1JlYWN0RE9NLmNyZWF0ZVBvcnRhbChcbiAgICAgICAgPEZhZGVJblxuICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiBlLnN0b3BQcm9wYWdhdGlvbigpfVxuICAgICAgICAgIHJlZj17dG9vbHRpcFJlZn1cbiAgICAgICAgICBjbGFzc05hbWU9e2Ake1N0eWxlcy50b29sdGlwQ29udGFpbmVyfSAke1xuICAgICAgICAgICAgcHJvcHMuY2xhc3NOYW1lIHx8IFwiXCJcbiAgICAgICAgICB9ICR7Y2xhc3NOYW1lfWB9XG4gICAgICAgICAgc3R5bGU9e3Byb3BzLnN0eWxlfVxuICAgICAgICAgIG9uSGlkZGVuPXsoKSA9PiBzZXRSZWFsQ2xvc2VkKHRydWUpfVxuICAgICAgICA+XG4gICAgICAgICAge29wZW4gJiYgIXJlYWxDbG9zZWQgPyA8ZGl2PntjaGlsZHJlbn08L2Rpdj4gOiB1bmRlZmluZWR9XG4gICAgICAgIDwvRmFkZUluPixcbiAgICAgICAgZG9jdW1lbnQuYm9keVxuICAgICAgKX1cbiAgICA8Lz5cbiAgKSA6IG51bGw7XG59XG5cbi8qKlxuICogVGhpcyB0b29sdGlwIGFuY2hvcnMgaXRzZWxmIHRvIGFuIGVsZW1lbnQgYW5kIGhhbmRsZXMgcG9zaXRpb25pbmcgcmVsYXRpdmUgdG8gdGhlIGFuY2hvcmVkIGVsZW1lbnRcbiAqIFxuICogQSBzaW1wbGUgcG9wdXAgdGhhdCBhcHBlYXJzIG5lYXIgYW5vdGhlciBlbGVtZW50LCBhdXRvbWF0aWNhbGx5IHBvc2l0aW9uaW5nIGl0c2VsZiB0byBzdGF5IHZpc2libGVcbiAqIG9uIHRoZSBzY3JlZW4gYW5kIGFkanVzdGluZyBpdHMgbG9jYXRpb24gaWYgdGhlIHBhZ2UgaXMgc2Nyb2xsZWQgb3IgcmVzaXplZC5cbiAqL1xuY29uc3QgQW5jaG9yZWRUb29sdGlwID0gZm9yd2FyZFJlZihfQW5jaG9yZWRUb29sdGlwKTtcbmV4cG9ydCBkZWZhdWx0IEFuY2hvcmVkVG9vbHRpcDsiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFZQSxJQUFBQyxTQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxjQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxPQUFBLEdBQUFGLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBSyxzQkFBQSxHQUFBSCxzQkFBQSxDQUFBRixPQUFBO0FBQW1ELE1BQUFNLFNBQUE7QUFBQSxTQUFBSix1QkFBQUssR0FBQSxXQUFBQSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxHQUFBRCxHQUFBLEtBQUFFLE9BQUEsRUFBQUYsR0FBQTtBQUFBLFNBQUFHLHlCQUFBQyxXQUFBLGVBQUFDLE9BQUEsa0NBQUFDLGlCQUFBLE9BQUFELE9BQUEsUUFBQUUsZ0JBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSxDQUFBQyxXQUFBLFdBQUFBLFdBQUEsR0FBQUcsZ0JBQUEsR0FBQUQsaUJBQUEsS0FBQUYsV0FBQTtBQUFBLFNBQUFaLHdCQUFBUSxHQUFBLEVBQUFJLFdBQUEsU0FBQUEsV0FBQSxJQUFBSixHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxXQUFBRCxHQUFBLFFBQUFBLEdBQUEsb0JBQUFBLEdBQUEsd0JBQUFBLEdBQUEsNEJBQUFFLE9BQUEsRUFBQUYsR0FBQSxVQUFBUSxLQUFBLEdBQUFMLHdCQUFBLENBQUFDLFdBQUEsT0FBQUksS0FBQSxJQUFBQSxLQUFBLENBQUFDLEdBQUEsQ0FBQVQsR0FBQSxZQUFBUSxLQUFBLENBQUFFLEdBQUEsQ0FBQVYsR0FBQSxTQUFBVyxNQUFBLFdBQUFDLHFCQUFBLEdBQUFDLE1BQUEsQ0FBQUMsY0FBQSxJQUFBRCxNQUFBLENBQUFFLHdCQUFBLFdBQUFDLEdBQUEsSUFB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
@@ -1,6 +1,7 @@
1
1
  @use "../../assets/styles/index.scss" as *;
2
2
 
3
- $arrowDim: 1em;
3
+ $arrowW: 22px;
4
+ $arrowH: 11px;
4
5
 
5
6
  /**
6
7
  * Some notions to take into account
@@ -32,28 +33,30 @@ $arrowDim: 1em;
32
33
  &::after,
33
34
  &::before {
34
35
  content: " ";
35
- width: 0px;
36
- height: 0px;
37
- border: $arrowDim solid $tooltipBackgroudColor;
38
- border-top-color: transparent;
39
- border-right-color: transparent;
40
- transform: translateY(-$arrowDim) rotate(-45deg);
41
36
  display: block;
37
+ width: $arrowW;
38
+ height: $arrowH;
39
+ background-color: $tooltipBackgroudColor;
42
40
  margin: auto;
43
41
  position: relative;
44
42
  left: var(--anchor-indicator-offset-left, 0px);
45
43
  z-index: -1;
46
44
  }
47
45
 
46
+ // Curved arrow head pointing down at the target (tooltip sits above it)
47
+ &::after {
48
+ clip-path: path("M 0 0 C 8 3, 8 3, 11 11 C 14 3, 14 3, 22 0 Z");
49
+ }
50
+ // Curved arrow head pointing up at the target (tooltip sits below it)
48
51
  &::before {
49
52
  display: none;
50
- transform: translateY($arrowDim) rotate(135deg);
53
+ clip-path: path("M 0 11 C 8 8, 8 8, 11 0 C 14 8, 14 8, 22 11 Z");
51
54
  }
52
55
  &.anchoredTop {
53
- transform: translateY(4px);
56
+ transform: translateY(-8px);
54
57
  }
55
58
  &.anchoredBottom {
56
- transform: translateY(-4px);
59
+ transform: translateY(8px);
57
60
  &::after {
58
61
  display: none;
59
62
  }
@@ -1,24 +1,27 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _exportNames = {};
7
+ Object.defineProperty(exports, "default", {
8
+ enumerable: true,
9
+ get: function () {
10
+ return _AnchoredTooltip.default;
11
+ }
12
+ });
13
+ var _AnchoredTooltip = _interopRequireWildcard(require("./AnchoredTooltip"));
14
+ Object.keys(_AnchoredTooltip).forEach(function (key) {
15
+ if (key === "default" || key === "__esModule") return;
16
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
17
+ if (key in exports && exports[key] === _AnchoredTooltip[key]) return;
18
+ Object.defineProperty(exports, key, {
19
+ enumerable: true,
20
+ get: function () {
21
+ return _AnchoredTooltip[key];
7
22
  }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- var __importDefault = (this && this.__importDefault) || function (mod) {
17
- return (mod && mod.__esModule) ? mod : { "default": mod };
18
- };
19
- Object.defineProperty(exports, "__esModule", { value: true });
20
- exports.default = void 0;
21
- var AnchoredTooltip_1 = require("./AnchoredTooltip");
22
- Object.defineProperty(exports, "default", { enumerable: true, get: function () { return __importDefault(AnchoredTooltip_1).default; } });
23
- __exportStar(require("./AnchoredTooltip"), exports);
24
- //# sourceMappingURL=index.js.map
23
+ });
24
+ });
25
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
26
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
27
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfQW5jaG9yZWRUb29sdGlwIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJyZXF1aXJlIiwiT2JqZWN0Iiwia2V5cyIsImZvckVhY2giLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJfZXhwb3J0TmFtZXMiLCJleHBvcnRzIiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwibm9kZUludGVyb3AiLCJXZWFrTWFwIiwiY2FjaGVCYWJlbEludGVyb3AiLCJjYWNoZU5vZGVJbnRlcm9wIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJjYWNoZSIsImhhcyIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImRlc2MiLCJzZXQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9BbmNob3JlZFRvb2x0aXAvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLi9BbmNob3JlZFRvb2x0aXBcIjtcbmV4cG9ydCAqIGZyb20gXCIuL0FuY2hvcmVkVG9vbHRpcFwiOyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsZ0JBQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBQyxNQUFBLENBQUFDLElBQUEsQ0FBQUosZ0JBQUEsRUFBQUssT0FBQSxXQUFBQyxHQUFBO0VBQUEsSUFBQUEsR0FBQSxrQkFBQUEsR0FBQTtFQUFBLElBQUFILE1BQUEsQ0FBQUksU0FBQSxDQUFBQyxjQUFBLENBQUFDLElBQUEsQ0FBQUMsWUFBQSxFQUFBSixHQUFBO0VBQUEsSUFBQUEsR0FBQSxJQUFBSyxPQUFBLElBQUFBLE9BQUEsQ0FBQUwsR0FBQSxNQUFBTixnQkFBQSxDQUFBTSxHQUFBO0VBQUFILE1BQUEsQ0FBQVMsY0FBQSxDQUFBRCxPQUFBLEVBQUFMLEdBQUE7SUFBQU8sVUFBQTtJQUFBQyxHQUFBLFdBQUFBLENBQUE7TUFBQSxPQUFBZCxnQkFBQSxDQUFBTSxHQUFBO0lBQUE7RUFBQTtBQUFBO0FBQWtDLFNBQUFTLHlCQUFBQyxXQUFBLGVBQUFDLE9BQUEsa0NBQUFDLGlCQUFBLE9BQUFELE9BQUEsUUFBQUUsZ0JBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSxDQUFBQyxXQUFBLFdBQUFBLFdBQUEsR0FBQUcsZ0JBQUEsR0FBQUQsaUJBQUEsS0FBQUYsV0FBQTtBQUFBLFNBQUFmLHdCQUFBbUIsR0FBQSxFQUFBSixXQUFBLFNBQUFBLFdBQUEsSUFBQUksR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsV0FBQUQsR0FBQSxRQUFBQSxHQUFBLG9CQUFBQSxHQUFBLHdCQUFBQSxHQUFBLDRCQUFBRSxPQUFBLEVBQUFGLEdBQUEsVUFBQUcsS0FBQSxHQUFBUix3QkFBQSxDQUFBQyxXQUFBLE9BQUFPLEtBQUEsSUFBQUEsS0FBQSxDQUFBQyxHQUFBLENBQUFKLEdBQUEsWUFBQUcsS0FBQSxDQUFBVCxHQUFBLENBQUFNLEdBQUEsU0FBQUssTUFBQSxXQUFBQyxxQkFBQSxHQUFBdkIsTUFBQSxDQUFBUyxjQUFBLElBQUFULE1BQUEsQ0FBQXdCLHdCQUFBLFdBQUFyQixHQUFBLElBQUFjLEdBQUEsUUFBQWQsR0FBQSxrQkFBQUgsTUFBQSxDQUFBSSxTQUFBLENBQUFDLGNBQUEsQ0FBQUMsSUFBQSxDQUFBVyxHQUFBLEVBQUFkLEdBQUEsU0FBQXNCLElBQUEsR0FBQUYscUJBQUEsR0FBQXZCLE1BQUEsQ0FBQXdCLHdCQUFBLENBQUFQLEdBQUEsRUFBQWQsR0FBQSxjQUFBc0IsSUFBQSxLQUFBQSxJQUFBLENBQUFkLEdBQUEsSUFBQWMsSUFBQSxDQUFBQyxHQUFBLEtBQUExQixNQUFBLENBQUFTLGNBQUEsQ0FBQWEsTUFBQSxFQUFBbkIsR0FBQSxFQUFBc0IsSUFBQSxZQUFBSCxNQUFBLENBQUFuQixHQUFBLElBQUFjLEdBQUEsQ0FBQWQsR0FBQSxTQUFBbUIsTUFBQSxDQUFBSCxPQUFBLEdBQUFGLEdBQUEsTUFBQUcsS0FBQSxJQUFBQSxLQUFBLENBQUFNLEdBQUEsQ0FBQVQsR0FBQSxFQUFBSyxNQUFBLFlBQUFBLE1BQUEifQ==