@amboss/design-system 1.15.2 → 1.15.3

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 (344) hide show
  1. package/build/cjs/build-tokens/_breakpoints.json.js +10 -0
  2. package/build/cjs/build-tokens/_icon_sizes_map.json.js +5 -0
  3. package/build/cjs/build-tokens/_zindex.json.js +10 -0
  4. package/build/cjs/build-tokens/assets/icons.json.js +82 -0
  5. package/build/cjs/build-tokens/assets/icons16.json.js +87 -0
  6. package/build/cjs/build-tokens/assets/logo.json.js +7 -0
  7. package/build/cjs/build-tokens/visualConfig.js +1329 -0
  8. package/build/cjs/scss/themes/dark.scss +111 -0
  9. package/build/cjs/scss/themes/light.scss +111 -0
  10. package/build/cjs/src/components/Badge/Badge.js +63 -0
  11. package/build/cjs/src/components/Box/Box.js +89 -0
  12. package/build/cjs/src/components/Button/Button.js +290 -0
  13. package/build/cjs/src/components/Callout/Callout.js +102 -0
  14. package/build/cjs/src/components/Card/Card.js +69 -0
  15. package/build/cjs/src/components/Card/CardBox.js +23 -0
  16. package/build/cjs/src/components/Card/CardHeader/CardHeader.js +59 -0
  17. package/build/cjs/src/components/Collapsible/Collapsible.js +117 -0
  18. package/build/cjs/src/components/Column/Columns.js +147 -0
  19. package/build/cjs/src/components/Container/Container.js +63 -0
  20. package/build/cjs/src/components/DataTable/DataTable.js +187 -0
  21. package/build/cjs/src/components/DataTable/TableBody.js +161 -0
  22. package/build/cjs/src/components/DataTable/TableCell.js +45 -0
  23. package/build/cjs/src/components/DataTable/TableHeader.js +194 -0
  24. package/build/cjs/src/components/DataTable/useDataTableSort.js +42 -0
  25. package/build/cjs/src/components/Divider/Divider.js +68 -0
  26. package/build/cjs/src/components/DropdownMenu/DropdownMenu.js +227 -0
  27. package/build/cjs/src/components/DropdownMenu/MenuItem.js +103 -0
  28. package/build/cjs/src/components/Form/Checkbox/Checkbox.js +147 -0
  29. package/build/cjs/src/components/Form/FormErrorMessages/FormErrorMessages.js +27 -0
  30. package/build/cjs/src/components/Form/FormField/FormField.js +58 -0
  31. package/build/cjs/src/components/Form/FormFieldGroup/FormFieldGroup.js +55 -0
  32. package/build/cjs/src/components/Form/FormLabelText/FormLabelText.js +42 -0
  33. package/build/cjs/src/components/Form/Input/Input.js +186 -0
  34. package/build/cjs/src/components/Form/PasswordInput/PasswordInput.js +226 -0
  35. package/build/cjs/src/components/Form/Radio/Radio.js +138 -0
  36. package/build/cjs/src/components/Form/RadioButton/RadioButton.js +124 -0
  37. package/build/cjs/src/components/Form/SegmentedControl/SegmentedControl.js +131 -0
  38. package/build/cjs/src/components/Form/SegmentedControl/SegmentedControlOption.js +216 -0
  39. package/build/cjs/src/components/Form/Select/Select.js +291 -0
  40. package/build/cjs/src/components/Form/Textarea/Textarea.js +93 -0
  41. package/build/cjs/src/components/Form/Toggle/Toggle.js +179 -0
  42. package/build/cjs/src/components/Form/ToggleButton/ToggleButton.js +143 -0
  43. package/build/cjs/src/components/Icon/Icon.js +110 -0
  44. package/build/cjs/src/components/Inline/Inline.js +113 -0
  45. package/build/cjs/src/components/Link/Link.js +77 -0
  46. package/build/cjs/src/components/LoadingSpinner/LoadingSpinner.js +84 -0
  47. package/build/cjs/src/components/Logo/Logo.js +44 -0
  48. package/build/cjs/src/components/MediaItem/MediaItem.js +120 -0
  49. package/build/cjs/src/components/MediaViewerBar/MediaViewerBar.js +73 -0
  50. package/build/cjs/src/components/Notification/Notification.js +108 -0
  51. package/build/cjs/src/components/Pagination/Pagination.js +91 -0
  52. package/build/cjs/src/components/Patterns/ButtonGroup/ButtonGroup.js +52 -0
  53. package/build/cjs/src/components/Patterns/Modal/Modal.js +221 -0
  54. package/build/cjs/src/components/PictogramButton/PictogramButton.js +150 -0
  55. package/build/cjs/src/components/Portal/Portal.js +22 -0
  56. package/build/cjs/src/components/ProgressBar/ProgressBar.js +38 -0
  57. package/build/cjs/src/components/RoundButton/RoundButton.js +140 -0
  58. package/build/cjs/src/components/SearchResult/SearchResult.js +184 -0
  59. package/build/cjs/src/components/SegmentedProgressBar/SegmentedProgressBar.js +110 -0
  60. package/build/cjs/src/components/SegmentedProgressBar/SegmentedProgressBarUtil.js +42 -0
  61. package/build/cjs/src/components/Stack/Stack.js +80 -0
  62. package/build/cjs/src/components/SubThemeProvider/SubThemeProvider.js +55 -0
  63. package/build/cjs/src/components/Tabs/Tabs.js +137 -0
  64. package/build/cjs/src/components/Tag/Tag.js +90 -0
  65. package/build/cjs/src/components/Tooltip/Tooltip.js +275 -0
  66. package/build/cjs/src/components/Tooltip/utils.js +81 -0
  67. package/build/cjs/src/components/Typography/Header/Header.js +132 -0
  68. package/build/cjs/src/components/Typography/StyledText/StyledText.js +168 -0
  69. package/build/cjs/src/components/Typography/Text/Text.js +71 -0
  70. package/build/cjs/src/components/Typography/TextClamped/TextClamped.js +54 -0
  71. package/build/cjs/src/components/VirtualScrollList/VirtualScrollList.js +116 -0
  72. package/build/cjs/src/components/VirtualScrollList/VirtualScrollListReducer.js +131 -0
  73. package/build/cjs/src/index.js +136 -0
  74. package/build/cjs/src/shared/ScreenReaderText.js +26 -0
  75. package/build/cjs/src/shared/flattenChildren.js +33 -0
  76. package/build/cjs/src/shared/informDeprecation.js +12 -0
  77. package/build/cjs/src/shared/mediaQueries.js +68 -0
  78. package/build/cjs/src/shared/useAutoPosition.js +42 -0
  79. package/build/cjs/src/shared/useDocument.js +7 -0
  80. package/build/cjs/src/shared/useHover.js +26 -0
  81. package/build/cjs/src/shared/useKeyboard.js +43 -0
  82. package/build/cjs/src/shared/useOnEscapePress.js +52 -0
  83. package/build/cjs/src/shared/useOutsideClick.js +33 -0
  84. package/build/cjs/src/shared/useWindow.js +7 -0
  85. package/build/esm/build-tokens/_breakpoints.json +17 -0
  86. package/build/esm/build-tokens/_breakpoints.json.js +4 -0
  87. package/build/esm/build-tokens/_breakpoints.json.js.map +1 -0
  88. package/build/esm/build-tokens/_colors.json +918 -0
  89. package/build/esm/build-tokens/_icon_sizes_map.json +7 -0
  90. package/build/esm/build-tokens/_icon_sizes_map.json.js +4 -0
  91. package/build/esm/build-tokens/_icon_sizes_map.json.js.map +1 -0
  92. package/build/esm/build-tokens/_sizes.json +782 -0
  93. package/build/esm/build-tokens/_subThemeType.d.ts +1 -0
  94. package/build/esm/build-tokens/_zindex.json +17 -0
  95. package/build/esm/build-tokens/_zindex.json.js +4 -0
  96. package/build/esm/build-tokens/_zindex.json.js.map +1 -0
  97. package/build/esm/build-tokens/assets/icons.json +141 -0
  98. package/build/esm/build-tokens/assets/icons.json.js +4 -0
  99. package/build/esm/build-tokens/assets/icons.json.js.map +1 -0
  100. package/build/esm/build-tokens/assets/icons16.json +153 -0
  101. package/build/esm/build-tokens/assets/icons16.json.js +4 -0
  102. package/build/esm/build-tokens/assets/icons16.json.js.map +1 -0
  103. package/build/esm/build-tokens/assets/logo.json +3 -0
  104. package/build/esm/build-tokens/assets/logo.json.js +4 -0
  105. package/build/esm/build-tokens/assets/logo.json.js.map +1 -0
  106. package/build/esm/build-tokens/visualConfig.d.ts +767 -0
  107. package/build/esm/build-tokens/visualConfig.js +1328 -0
  108. package/build/esm/build-tokens/visualConfig.js.map +1 -0
  109. package/build/esm/scss/themes/dark.scss +111 -0
  110. package/build/esm/scss/themes/light.scss +111 -0
  111. package/build/esm/src/components/Badge/Badge.d.ts +11 -0
  112. package/build/esm/src/components/Badge/Badge.js +57 -0
  113. package/build/esm/src/components/Badge/Badge.js.map +1 -0
  114. package/build/esm/src/components/Box/Box.d.ts +35 -0
  115. package/build/esm/src/components/Box/Box.js +82 -0
  116. package/build/esm/src/components/Box/Box.js.map +1 -0
  117. package/build/esm/src/components/Button/Button.d.ts +33 -0
  118. package/build/esm/src/components/Button/Button.js +282 -0
  119. package/build/esm/src/components/Button/Button.js.map +1 -0
  120. package/build/esm/src/components/Callout/Callout.d.ts +14 -0
  121. package/build/esm/src/components/Callout/Callout.js +96 -0
  122. package/build/esm/src/components/Callout/Callout.js.map +1 -0
  123. package/build/esm/src/components/Card/Card.d.ts +16 -0
  124. package/build/esm/src/components/Card/Card.js +63 -0
  125. package/build/esm/src/components/Card/Card.js.map +1 -0
  126. package/build/esm/src/components/Card/CardBox.d.ts +6 -0
  127. package/build/esm/src/components/Card/CardBox.js +18 -0
  128. package/build/esm/src/components/Card/CardBox.js.map +1 -0
  129. package/build/esm/src/components/Card/CardHeader/CardHeader.d.ts +12 -0
  130. package/build/esm/src/components/Card/CardHeader/CardHeader.js +52 -0
  131. package/build/esm/src/components/Card/CardHeader/CardHeader.js.map +1 -0
  132. package/build/esm/src/components/Collapsible/Collapsible.d.ts +15 -0
  133. package/build/esm/src/components/Collapsible/Collapsible.js +110 -0
  134. package/build/esm/src/components/Collapsible/Collapsible.js.map +1 -0
  135. package/build/esm/src/components/Column/Columns.d.ts +45 -0
  136. package/build/esm/src/components/Column/Columns.js +141 -0
  137. package/build/esm/src/components/Column/Columns.js.map +1 -0
  138. package/build/esm/src/components/Container/Container.d.ts +11 -0
  139. package/build/esm/src/components/Container/Container.js +57 -0
  140. package/build/esm/src/components/Container/Container.js.map +1 -0
  141. package/build/esm/src/components/DataTable/DataTable.d.ts +58 -0
  142. package/build/esm/src/components/DataTable/DataTable.js +180 -0
  143. package/build/esm/src/components/DataTable/DataTable.js.map +1 -0
  144. package/build/esm/src/components/DataTable/TableBody.d.ts +9 -0
  145. package/build/esm/src/components/DataTable/TableBody.js +153 -0
  146. package/build/esm/src/components/DataTable/TableBody.js.map +1 -0
  147. package/build/esm/src/components/DataTable/TableCell.d.ts +15 -0
  148. package/build/esm/src/components/DataTable/TableCell.js +38 -0
  149. package/build/esm/src/components/DataTable/TableCell.js.map +1 -0
  150. package/build/esm/src/components/DataTable/TableHeader.d.ts +9 -0
  151. package/build/esm/src/components/DataTable/TableHeader.js +185 -0
  152. package/build/esm/src/components/DataTable/TableHeader.js.map +1 -0
  153. package/build/esm/src/components/DataTable/index.d.ts +4 -0
  154. package/build/esm/src/components/DataTable/types.d.ts +15 -0
  155. package/build/esm/src/components/DataTable/useDataTableSort.d.ts +14 -0
  156. package/build/esm/src/components/DataTable/useDataTableSort.js +41 -0
  157. package/build/esm/src/components/DataTable/useDataTableSort.js.map +1 -0
  158. package/build/esm/src/components/Divider/Divider.d.ts +6 -0
  159. package/build/esm/src/components/Divider/Divider.js +62 -0
  160. package/build/esm/src/components/Divider/Divider.js.map +1 -0
  161. package/build/esm/src/components/DropdownMenu/DropdownMenu.d.ts +35 -0
  162. package/build/esm/src/components/DropdownMenu/DropdownMenu.js +221 -0
  163. package/build/esm/src/components/DropdownMenu/DropdownMenu.js.map +1 -0
  164. package/build/esm/src/components/DropdownMenu/MenuItem.d.ts +19 -0
  165. package/build/esm/src/components/DropdownMenu/MenuItem.js +97 -0
  166. package/build/esm/src/components/DropdownMenu/MenuItem.js.map +1 -0
  167. package/build/esm/src/components/Form/Checkbox/Checkbox.d.ts +15 -0
  168. package/build/esm/src/components/Form/Checkbox/Checkbox.js +140 -0
  169. package/build/esm/src/components/Form/Checkbox/Checkbox.js.map +1 -0
  170. package/build/esm/src/components/Form/FormErrorMessages/FormErrorMessages.d.ts +6 -0
  171. package/build/esm/src/components/Form/FormErrorMessages/FormErrorMessages.js +22 -0
  172. package/build/esm/src/components/Form/FormErrorMessages/FormErrorMessages.js.map +1 -0
  173. package/build/esm/src/components/Form/FormField/FormField.d.ts +15 -0
  174. package/build/esm/src/components/Form/FormField/FormField.js +52 -0
  175. package/build/esm/src/components/Form/FormField/FormField.js.map +1 -0
  176. package/build/esm/src/components/Form/FormFieldGroup/FormFieldGroup.d.ts +11 -0
  177. package/build/esm/src/components/Form/FormFieldGroup/FormFieldGroup.js +49 -0
  178. package/build/esm/src/components/Form/FormFieldGroup/FormFieldGroup.js.map +1 -0
  179. package/build/esm/src/components/Form/FormLabelText/FormLabelText.d.ts +7 -0
  180. package/build/esm/src/components/Form/FormLabelText/FormLabelText.js +36 -0
  181. package/build/esm/src/components/Form/FormLabelText/FormLabelText.js.map +1 -0
  182. package/build/esm/src/components/Form/Input/Input.d.ts +54 -0
  183. package/build/esm/src/components/Form/Input/Input.js +178 -0
  184. package/build/esm/src/components/Form/Input/Input.js.map +1 -0
  185. package/build/esm/src/components/Form/Input/index.d.ts +2 -0
  186. package/build/esm/src/components/Form/PasswordInput/PasswordInput.d.ts +53 -0
  187. package/build/esm/src/components/Form/PasswordInput/PasswordInput.js +218 -0
  188. package/build/esm/src/components/Form/PasswordInput/PasswordInput.js.map +1 -0
  189. package/build/esm/src/components/Form/PasswordInput/index.d.ts +2 -0
  190. package/build/esm/src/components/Form/Radio/Radio.d.ts +14 -0
  191. package/build/esm/src/components/Form/Radio/Radio.js +131 -0
  192. package/build/esm/src/components/Form/Radio/Radio.js.map +1 -0
  193. package/build/esm/src/components/Form/RadioButton/RadioButton.d.ts +17 -0
  194. package/build/esm/src/components/Form/RadioButton/RadioButton.js +117 -0
  195. package/build/esm/src/components/Form/RadioButton/RadioButton.js.map +1 -0
  196. package/build/esm/src/components/Form/SegmentedControl/SegmentedControl.d.ts +31 -0
  197. package/build/esm/src/components/Form/SegmentedControl/SegmentedControl.js +124 -0
  198. package/build/esm/src/components/Form/SegmentedControl/SegmentedControl.js.map +1 -0
  199. package/build/esm/src/components/Form/SegmentedControl/SegmentedControlOption.d.ts +8 -0
  200. package/build/esm/src/components/Form/SegmentedControl/SegmentedControlOption.js +210 -0
  201. package/build/esm/src/components/Form/SegmentedControl/SegmentedControlOption.js.map +1 -0
  202. package/build/esm/src/components/Form/Select/Select.d.ts +23 -0
  203. package/build/esm/src/components/Form/Select/Select.js +284 -0
  204. package/build/esm/src/components/Form/Select/Select.js.map +1 -0
  205. package/build/esm/src/components/Form/Textarea/Textarea.d.ts +26 -0
  206. package/build/esm/src/components/Form/Textarea/Textarea.js +86 -0
  207. package/build/esm/src/components/Form/Textarea/Textarea.js.map +1 -0
  208. package/build/esm/src/components/Form/Toggle/Toggle.d.ts +18 -0
  209. package/build/esm/src/components/Form/Toggle/Toggle.js +172 -0
  210. package/build/esm/src/components/Form/Toggle/Toggle.js.map +1 -0
  211. package/build/esm/src/components/Form/ToggleButton/ToggleButton.d.ts +15 -0
  212. package/build/esm/src/components/Form/ToggleButton/ToggleButton.js +136 -0
  213. package/build/esm/src/components/Form/ToggleButton/ToggleButton.js.map +1 -0
  214. package/build/esm/src/components/Icon/Icon.d.ts +22 -0
  215. package/build/esm/src/components/Icon/Icon.js +104 -0
  216. package/build/esm/src/components/Icon/Icon.js.map +1 -0
  217. package/build/esm/src/components/Inline/Inline.d.ts +30 -0
  218. package/build/esm/src/components/Inline/Inline.js +107 -0
  219. package/build/esm/src/components/Inline/Inline.js.map +1 -0
  220. package/build/esm/src/components/Link/Link.d.ts +14 -0
  221. package/build/esm/src/components/Link/Link.js +70 -0
  222. package/build/esm/src/components/Link/Link.js.map +1 -0
  223. package/build/esm/src/components/LoadingSpinner/LoadingSpinner.d.ts +11 -0
  224. package/build/esm/src/components/LoadingSpinner/LoadingSpinner.js +78 -0
  225. package/build/esm/src/components/LoadingSpinner/LoadingSpinner.js.map +1 -0
  226. package/build/esm/src/components/Logo/Logo.d.ts +8 -0
  227. package/build/esm/src/components/Logo/Logo.js +38 -0
  228. package/build/esm/src/components/Logo/Logo.js.map +1 -0
  229. package/build/esm/src/components/MediaItem/MediaItem.d.ts +14 -0
  230. package/build/esm/src/components/MediaItem/MediaItem.js +114 -0
  231. package/build/esm/src/components/MediaItem/MediaItem.js.map +1 -0
  232. package/build/esm/src/components/MediaViewerBar/MediaViewerBar.d.ts +7 -0
  233. package/build/esm/src/components/MediaViewerBar/MediaViewerBar.js +67 -0
  234. package/build/esm/src/components/MediaViewerBar/MediaViewerBar.js.map +1 -0
  235. package/build/esm/src/components/Notification/ExpandedContent.d.ts +2 -0
  236. package/build/esm/src/components/Notification/Notification.d.ts +16 -0
  237. package/build/esm/src/components/Notification/Notification.js +102 -0
  238. package/build/esm/src/components/Notification/Notification.js.map +1 -0
  239. package/build/esm/src/components/Pagination/Pagination.d.ts +17 -0
  240. package/build/esm/src/components/Pagination/Pagination.js +86 -0
  241. package/build/esm/src/components/Pagination/Pagination.js.map +1 -0
  242. package/build/esm/src/components/Patterns/ButtonGroup/ButtonGroup.d.ts +14 -0
  243. package/build/esm/src/components/Patterns/ButtonGroup/ButtonGroup.js +46 -0
  244. package/build/esm/src/components/Patterns/ButtonGroup/ButtonGroup.js.map +1 -0
  245. package/build/esm/src/components/Patterns/Modal/Modal.d.ts +28 -0
  246. package/build/esm/src/components/Patterns/Modal/Modal.js +214 -0
  247. package/build/esm/src/components/Patterns/Modal/Modal.js.map +1 -0
  248. package/build/esm/src/components/PictogramButton/PictogramButton.d.ts +15 -0
  249. package/build/esm/src/components/PictogramButton/PictogramButton.js +143 -0
  250. package/build/esm/src/components/PictogramButton/PictogramButton.js.map +1 -0
  251. package/build/esm/src/components/Portal/Portal.d.ts +7 -0
  252. package/build/esm/src/components/Portal/Portal.js +16 -0
  253. package/build/esm/src/components/Portal/Portal.js.map +1 -0
  254. package/build/esm/src/components/ProgressBar/ProgressBar.d.ts +15 -0
  255. package/build/esm/src/components/ProgressBar/ProgressBar.js +33 -0
  256. package/build/esm/src/components/ProgressBar/ProgressBar.js.map +1 -0
  257. package/build/esm/src/components/RoundButton/RoundButton.d.ts +12 -0
  258. package/build/esm/src/components/RoundButton/RoundButton.js +133 -0
  259. package/build/esm/src/components/RoundButton/RoundButton.js.map +1 -0
  260. package/build/esm/src/components/SearchResult/SearchResult.d.ts +43 -0
  261. package/build/esm/src/components/SearchResult/SearchResult.js +178 -0
  262. package/build/esm/src/components/SearchResult/SearchResult.js.map +1 -0
  263. package/build/esm/src/components/SegmentedProgressBar/SegmentedProgressBar.d.ts +28 -0
  264. package/build/esm/src/components/SegmentedProgressBar/SegmentedProgressBar.js +104 -0
  265. package/build/esm/src/components/SegmentedProgressBar/SegmentedProgressBar.js.map +1 -0
  266. package/build/esm/src/components/SegmentedProgressBar/SegmentedProgressBarUtil.d.ts +10 -0
  267. package/build/esm/src/components/SegmentedProgressBar/SegmentedProgressBarUtil.js +40 -0
  268. package/build/esm/src/components/SegmentedProgressBar/SegmentedProgressBarUtil.js.map +1 -0
  269. package/build/esm/src/components/ShadowWebComponent/ShadowWebComponent.d.ts +13 -0
  270. package/build/esm/src/components/Stack/Stack.d.ts +20 -0
  271. package/build/esm/src/components/Stack/Stack.js +74 -0
  272. package/build/esm/src/components/Stack/Stack.js.map +1 -0
  273. package/build/esm/src/components/SubThemeProvider/SubThemeProvider.d.ts +8 -0
  274. package/build/esm/src/components/SubThemeProvider/SubThemeProvider.js +50 -0
  275. package/build/esm/src/components/SubThemeProvider/SubThemeProvider.js.map +1 -0
  276. package/build/esm/src/components/Tabs/Tabs.d.ts +28 -0
  277. package/build/esm/src/components/Tabs/Tabs.js +130 -0
  278. package/build/esm/src/components/Tabs/Tabs.js.map +1 -0
  279. package/build/esm/src/components/Tag/Tag.d.ts +18 -0
  280. package/build/esm/src/components/Tag/Tag.js +84 -0
  281. package/build/esm/src/components/Tag/Tag.js.map +1 -0
  282. package/build/esm/src/components/Tooltip/Tooltip.d.ts +23 -0
  283. package/build/esm/src/components/Tooltip/Tooltip.js +269 -0
  284. package/build/esm/src/components/Tooltip/Tooltip.js.map +1 -0
  285. package/build/esm/src/components/Tooltip/utils.d.ts +11 -0
  286. package/build/esm/src/components/Tooltip/utils.js +75 -0
  287. package/build/esm/src/components/Tooltip/utils.js.map +1 -0
  288. package/build/esm/src/components/Typography/Header/Header.d.ts +34 -0
  289. package/build/esm/src/components/Typography/Header/Header.js +122 -0
  290. package/build/esm/src/components/Typography/Header/Header.js.map +1 -0
  291. package/build/esm/src/components/Typography/StyledText/StyledText.d.ts +11 -0
  292. package/build/esm/src/components/Typography/StyledText/StyledText.js +161 -0
  293. package/build/esm/src/components/Typography/StyledText/StyledText.js.map +1 -0
  294. package/build/esm/src/components/Typography/Text/Text.d.ts +21 -0
  295. package/build/esm/src/components/Typography/Text/Text.js +65 -0
  296. package/build/esm/src/components/Typography/Text/Text.js.map +1 -0
  297. package/build/esm/src/components/Typography/TextClamped/TextClamped.d.ts +10 -0
  298. package/build/esm/src/components/Typography/TextClamped/TextClamped.js +47 -0
  299. package/build/esm/src/components/Typography/TextClamped/TextClamped.js.map +1 -0
  300. package/build/esm/src/components/VirtualScrollList/VirtualScrollList.d.ts +11 -0
  301. package/build/esm/src/components/VirtualScrollList/VirtualScrollList.js +110 -0
  302. package/build/esm/src/components/VirtualScrollList/VirtualScrollList.js.map +1 -0
  303. package/build/esm/src/components/VirtualScrollList/VirtualScrollListReducer.d.ts +36 -0
  304. package/build/esm/src/components/VirtualScrollList/VirtualScrollListReducer.js +130 -0
  305. package/build/esm/src/components/VirtualScrollList/VirtualScrollListReducer.js.map +1 -0
  306. package/build/esm/src/index.d.ts +53 -0
  307. package/build/esm/src/index.js +60 -0
  308. package/build/esm/src/index.js.map +1 -0
  309. package/build/esm/src/shared/ScreenReaderText.d.ts +5 -0
  310. package/build/esm/src/shared/ScreenReaderText.js +21 -0
  311. package/build/esm/src/shared/ScreenReaderText.js.map +1 -0
  312. package/build/esm/src/shared/flattenChildren.d.ts +11 -0
  313. package/build/esm/src/shared/flattenChildren.js +32 -0
  314. package/build/esm/src/shared/flattenChildren.js.map +1 -0
  315. package/build/esm/src/shared/informDeprecation.d.ts +1 -0
  316. package/build/esm/src/shared/informDeprecation.js +11 -0
  317. package/build/esm/src/shared/informDeprecation.js.map +1 -0
  318. package/build/esm/src/shared/mediaQueries.d.ts +14 -0
  319. package/build/esm/src/shared/mediaQueries.js +66 -0
  320. package/build/esm/src/shared/mediaQueries.js.map +1 -0
  321. package/build/esm/src/shared/replaceDeprecated.d.ts +1 -0
  322. package/build/esm/src/shared/useAutoPosition.d.ts +5 -0
  323. package/build/esm/src/shared/useAutoPosition.js +41 -0
  324. package/build/esm/src/shared/useAutoPosition.js.map +1 -0
  325. package/build/esm/src/shared/useDocument.d.ts +1 -0
  326. package/build/esm/src/shared/useDocument.js +6 -0
  327. package/build/esm/src/shared/useDocument.js.map +1 -0
  328. package/build/esm/src/shared/useHover.d.ts +2 -0
  329. package/build/esm/src/shared/useHover.js +25 -0
  330. package/build/esm/src/shared/useHover.js.map +1 -0
  331. package/build/esm/src/shared/useKeyboard.d.ts +17 -0
  332. package/build/esm/src/shared/useKeyboard.js +42 -0
  333. package/build/esm/src/shared/useKeyboard.js.map +1 -0
  334. package/build/esm/src/shared/useOnEscapePress.d.ts +2 -0
  335. package/build/esm/src/shared/useOnEscapePress.js +51 -0
  336. package/build/esm/src/shared/useOnEscapePress.js.map +1 -0
  337. package/build/esm/src/shared/useOutsideClick.d.ts +11 -0
  338. package/build/esm/src/shared/useOutsideClick.js +32 -0
  339. package/build/esm/src/shared/useOutsideClick.js.map +1 -0
  340. package/build/esm/src/shared/useWindow.d.ts +1 -0
  341. package/build/esm/src/shared/useWindow.js +6 -0
  342. package/build/esm/src/shared/useWindow.js.map +1 -0
  343. package/build/esm/src/types/index.d.ts +57 -0
  344. package/package.json +2 -2
@@ -0,0 +1,18 @@
1
+ import React from "react";
2
+ declare type BaseTagProps = {
3
+ label: string;
4
+ colorVariant?: "gray" | "blue";
5
+ "data-e2e-test-id"?: string;
6
+ };
7
+ declare type ConditionalTagProps = {
8
+ isRemovable?: false;
9
+ onClear?: never;
10
+ clearBtnAriaLabel?: never;
11
+ } | {
12
+ isRemovable: true;
13
+ onClear: () => void;
14
+ clearBtnAriaLabel?: string;
15
+ };
16
+ export declare type TagProps = BaseTagProps & ConditionalTagProps;
17
+ export declare function Tag({ label, colorVariant, isRemovable, onClear, clearBtnAriaLabel, "data-e2e-test-id": dataE2eTestId, }: TagProps): React.ReactElement;
18
+ export {};
@@ -0,0 +1,84 @@
1
+ import _styled from '@emotion/styled/base';
2
+ import React from 'react';
3
+ import { PictogramButton } from '../PictogramButton/PictogramButton.js';
4
+
5
+ const TagContainer = /*#__PURE__*/_styled("span", process.env.NODE_ENV === "production" ? {
6
+ target: "e1i6narj2"
7
+ } : {
8
+ target: "e1i6narj2",
9
+ label: "TagContainer"
10
+ })(_ref => {
11
+ let {
12
+ theme,
13
+ colorVariant,
14
+ isRemovable
15
+ } = _ref;
16
+ return {
17
+ display: "inline-flex",
18
+ alignItems: "center",
19
+ maxWidth: "200px",
20
+ paddingLeft: theme.variables.size.spacing.xs,
21
+ paddingRight: isRemovable ? theme.variables.size.spacing.zero : theme.variables.size.spacing.xs,
22
+ paddingTop: isRemovable ? theme.variables.size.spacing.zero : theme.variables.size.spacing.xxs,
23
+ paddingBottom: isRemovable ? theme.variables.size.spacing.zero : theme.variables.size.spacing.xxs,
24
+ borderRadius: theme.variables.size.borderRadius.xs,
25
+ backgroundColor: theme.values.color.tag.background[colorVariant],
26
+ color: theme.values.color.tag.text[colorVariant],
27
+ fontFamily: theme.variables.fontFamily.lato,
28
+ fontSize: theme.variables.size.font.text.s,
29
+ lineHeight: theme.variables.size.lineHeight.text.xs
30
+ };
31
+ }, process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRhZy50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBdUJxQiIsImZpbGUiOiJUYWcudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCI7XG5pbXBvcnQgeyBQaWN0b2dyYW1CdXR0b24gfSBmcm9tIFwiLi4vUGljdG9ncmFtQnV0dG9uL1BpY3RvZ3JhbUJ1dHRvblwiO1xuXG50eXBlIEJhc2VUYWdQcm9wcyA9IHtcbiAgbGFiZWw6IHN0cmluZztcbiAgY29sb3JWYXJpYW50PzogXCJncmF5XCIgfCBcImJsdWVcIjtcbiAgXCJkYXRhLWUyZS10ZXN0LWlkXCI/OiBzdHJpbmc7XG59O1xudHlwZSBDb25kaXRpb25hbFRhZ1Byb3BzID1cbiAgfCB7XG4gICAgICBpc1JlbW92YWJsZT86IGZhbHNlO1xuICAgICAgb25DbGVhcj86IG5ldmVyO1xuICAgICAgY2xlYXJCdG5BcmlhTGFiZWw/OiBuZXZlcjtcbiAgICB9XG4gIHwge1xuICAgICAgaXNSZW1vdmFibGU6IHRydWU7XG4gICAgICBvbkNsZWFyOiAoKSA9PiB2b2lkO1xuICAgICAgY2xlYXJCdG5BcmlhTGFiZWw/OiBzdHJpbmc7XG4gICAgfTtcblxuZXhwb3J0IHR5cGUgVGFnUHJvcHMgPSBCYXNlVGFnUHJvcHMgJiBDb25kaXRpb25hbFRhZ1Byb3BzO1xuXG5jb25zdCBUYWdDb250YWluZXIgPSBzdHlsZWQuc3BhbjxQYXJ0aWFsPFRhZ1Byb3BzPj4oXG4gICh7IHRoZW1lLCBjb2xvclZhcmlhbnQsIGlzUmVtb3ZhYmxlIH0pID0+ICh7XG4gICAgZGlzcGxheTogXCJpbmxpbmUtZmxleFwiLFxuICAgIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gICAgbWF4V2lkdGg6IFwiMjAwcHhcIixcbiAgICBwYWRkaW5nTGVmdDogdGhlbWUudmFyaWFibGVzLnNpemUuc3BhY2luZy54cyxcbiAgICBwYWRkaW5nUmlnaHQ6IGlzUmVtb3ZhYmxlXG4gICAgICA/IHRoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcuemVyb1xuICAgICAgOiB0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLnhzLFxuICAgIHBhZGRpbmdUb3A6IGlzUmVtb3ZhYmxlXG4gICAgICA/IHRoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcuemVyb1xuICAgICAgOiB0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLnh4cyxcbiAgICBwYWRkaW5nQm90dG9tOiBpc1JlbW92YWJsZVxuICAgICAgPyB0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLnplcm9cbiAgICAgIDogdGhlbWUudmFyaWFibGVzLnNpemUuc3BhY2luZy54eHMsXG4gICAgYm9yZGVyUmFkaXVzOiB0aGVtZS52YXJpYWJsZXMuc2l6ZS5ib3JkZXJSYWRpdXMueHMsXG4gICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS52YWx1ZXMuY29sb3IudGFnLmJhY2tncm91bmRbY29sb3JWYXJpYW50XSxcbiAgICBjb2xvcjogdGhlbWUudmFsdWVzLmNvbG9yLnRhZy50ZXh0W2NvbG9yVmFyaWFudF0sXG4gICAgZm9udEZhbWlseTogdGhlbWUudmFyaWFibGVzLmZvbnRGYW1pbHkubGF0byxcbiAgICBmb250U2l6ZTogdGhlbWUudmFyaWFibGVzLnNpemUuZm9udC50ZXh0LnMsXG4gICAgbGluZUhlaWdodDogdGhlbWUudmFyaWFibGVzLnNpemUubGluZUhlaWdodC50ZXh0LnhzLFxuICB9KVxuKTtcblxuY29uc3QgVGFnTGFiZWwgPSBzdHlsZWQuc3BhbigoKSA9PiAoe1xuICBvdmVyZmxvdzogXCJoaWRkZW5cIixcbiAgdGV4dE92ZXJmbG93OiBcImVsbGlwc2lzXCIsXG4gIHdoaXRlU3BhY2U6IFwibm93cmFwXCIsXG59KSk7XG5cbmNvbnN0IENsZWFyQnV0dG9uID0gc3R5bGVkKFBpY3RvZ3JhbUJ1dHRvbik8UGFydGlhbDxUYWdQcm9wcz4+KFxuICAoeyB0aGVtZSwgY29sb3JWYXJpYW50IH0pID0+ICh7XG4gICAgYmFja2dyb3VuZENvbG9yOiBcInRyYW5zcGFyZW50XCIsXG4gICAgY29sb3I6IHRoZW1lLnZhbHVlcy5jb2xvci50YWcudGV4dFtjb2xvclZhcmlhbnRdLFxuICAgIFwiJjpob3ZlclwiOiB7XG4gICAgICBjb2xvcjogdGhlbWUudmFsdWVzLmNvbG9yLnRhZy50ZXh0W2NvbG9yVmFyaWFudF0sXG4gICAgfSxcbiAgfSlcbik7XG5cbmV4cG9ydCBmdW5jdGlvbiBUYWcoe1xuICBsYWJlbCxcbiAgY29sb3JWYXJpYW50ID0gXCJncmF5XCIsXG4gIGlzUmVtb3ZhYmxlID0gZmFsc2UsXG4gIG9uQ2xlYXIsXG4gIGNsZWFyQnRuQXJpYUxhYmVsLFxuICBcImRhdGEtZTJlLXRlc3QtaWRcIjogZGF0YUUyZVRlc3RJZCxcbn06IFRhZ1Byb3BzKTogUmVhY3QuUmVhY3RFbGVtZW50IHtcbiAgcmV0dXJuIChcbiAgICA8VGFnQ29udGFpbmVyXG4gICAgICBkYXRhLWUyZS10ZXN0LWlkPXtkYXRhRTJlVGVzdElkfVxuICAgICAgZGF0YS1kcy1pZD1cIlRhZ1wiXG4gICAgICBjb2xvclZhcmlhbnQ9e2NvbG9yVmFyaWFudH1cbiAgICAgIGlzUmVtb3ZhYmxlPXtpc1JlbW92YWJsZX1cbiAgICA+XG4gICAgICA8VGFnTGFiZWw+e2xhYmVsfTwvVGFnTGFiZWw+XG5cbiAgICAgIHtpc1JlbW92YWJsZSAmJiAoXG4gICAgICAgIDxDbGVhckJ1dHRvblxuICAgICAgICAgIGljb249XCJ4XCJcbiAgICAgICAgICBzaXplPVwieHNcIlxuICAgICAgICAgIGFyaWEtbGFiZWw9e2NsZWFyQnRuQXJpYUxhYmVsfVxuICAgICAgICAgIG9uQ2xpY2s9e29uQ2xlYXJ9XG4gICAgICAgICAgY29sb3JWYXJpYW50PXtjb2xvclZhcmlhbnR9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgIDwvVGFnQ29udGFpbmVyPlxuICApO1xufVxuIl19 */");
32
+ const TagLabel = /*#__PURE__*/_styled("span", process.env.NODE_ENV === "production" ? {
33
+ target: "e1i6narj1"
34
+ } : {
35
+ target: "e1i6narj1",
36
+ label: "TagLabel"
37
+ })(() => ({
38
+ overflow: "hidden",
39
+ textOverflow: "ellipsis",
40
+ whiteSpace: "nowrap"
41
+ }), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRhZy50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBK0NpQiIsImZpbGUiOiJUYWcudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCI7XG5pbXBvcnQgeyBQaWN0b2dyYW1CdXR0b24gfSBmcm9tIFwiLi4vUGljdG9ncmFtQnV0dG9uL1BpY3RvZ3JhbUJ1dHRvblwiO1xuXG50eXBlIEJhc2VUYWdQcm9wcyA9IHtcbiAgbGFiZWw6IHN0cmluZztcbiAgY29sb3JWYXJpYW50PzogXCJncmF5XCIgfCBcImJsdWVcIjtcbiAgXCJkYXRhLWUyZS10ZXN0LWlkXCI/OiBzdHJpbmc7XG59O1xudHlwZSBDb25kaXRpb25hbFRhZ1Byb3BzID1cbiAgfCB7XG4gICAgICBpc1JlbW92YWJsZT86IGZhbHNlO1xuICAgICAgb25DbGVhcj86IG5ldmVyO1xuICAgICAgY2xlYXJCdG5BcmlhTGFiZWw/OiBuZXZlcjtcbiAgICB9XG4gIHwge1xuICAgICAgaXNSZW1vdmFibGU6IHRydWU7XG4gICAgICBvbkNsZWFyOiAoKSA9PiB2b2lkO1xuICAgICAgY2xlYXJCdG5BcmlhTGFiZWw/OiBzdHJpbmc7XG4gICAgfTtcblxuZXhwb3J0IHR5cGUgVGFnUHJvcHMgPSBCYXNlVGFnUHJvcHMgJiBDb25kaXRpb25hbFRhZ1Byb3BzO1xuXG5jb25zdCBUYWdDb250YWluZXIgPSBzdHlsZWQuc3BhbjxQYXJ0aWFsPFRhZ1Byb3BzPj4oXG4gICh7IHRoZW1lLCBjb2xvclZhcmlhbnQsIGlzUmVtb3ZhYmxlIH0pID0+ICh7XG4gICAgZGlzcGxheTogXCJpbmxpbmUtZmxleFwiLFxuICAgIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gICAgbWF4V2lkdGg6IFwiMjAwcHhcIixcbiAgICBwYWRkaW5nTGVmdDogdGhlbWUudmFyaWFibGVzLnNpemUuc3BhY2luZy54cyxcbiAgICBwYWRkaW5nUmlnaHQ6IGlzUmVtb3ZhYmxlXG4gICAgICA/IHRoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcuemVyb1xuICAgICAgOiB0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLnhzLFxuICAgIHBhZGRpbmdUb3A6IGlzUmVtb3ZhYmxlXG4gICAgICA/IHRoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcuemVyb1xuICAgICAgOiB0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLnh4cyxcbiAgICBwYWRkaW5nQm90dG9tOiBpc1JlbW92YWJsZVxuICAgICAgPyB0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLnplcm9cbiAgICAgIDogdGhlbWUudmFyaWFibGVzLnNpemUuc3BhY2luZy54eHMsXG4gICAgYm9yZGVyUmFkaXVzOiB0aGVtZS52YXJpYWJsZXMuc2l6ZS5ib3JkZXJSYWRpdXMueHMsXG4gICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS52YWx1ZXMuY29sb3IudGFnLmJhY2tncm91bmRbY29sb3JWYXJpYW50XSxcbiAgICBjb2xvcjogdGhlbWUudmFsdWVzLmNvbG9yLnRhZy50ZXh0W2NvbG9yVmFyaWFudF0sXG4gICAgZm9udEZhbWlseTogdGhlbWUudmFyaWFibGVzLmZvbnRGYW1pbHkubGF0byxcbiAgICBmb250U2l6ZTogdGhlbWUudmFyaWFibGVzLnNpemUuZm9udC50ZXh0LnMsXG4gICAgbGluZUhlaWdodDogdGhlbWUudmFyaWFibGVzLnNpemUubGluZUhlaWdodC50ZXh0LnhzLFxuICB9KVxuKTtcblxuY29uc3QgVGFnTGFiZWwgPSBzdHlsZWQuc3BhbigoKSA9PiAoe1xuICBvdmVyZmxvdzogXCJoaWRkZW5cIixcbiAgdGV4dE92ZXJmbG93OiBcImVsbGlwc2lzXCIsXG4gIHdoaXRlU3BhY2U6IFwibm93cmFwXCIsXG59KSk7XG5cbmNvbnN0IENsZWFyQnV0dG9uID0gc3R5bGVkKFBpY3RvZ3JhbUJ1dHRvbik8UGFydGlhbDxUYWdQcm9wcz4+KFxuICAoeyB0aGVtZSwgY29sb3JWYXJpYW50IH0pID0+ICh7XG4gICAgYmFja2dyb3VuZENvbG9yOiBcInRyYW5zcGFyZW50XCIsXG4gICAgY29sb3I6IHRoZW1lLnZhbHVlcy5jb2xvci50YWcudGV4dFtjb2xvclZhcmlhbnRdLFxuICAgIFwiJjpob3ZlclwiOiB7XG4gICAgICBjb2xvcjogdGhlbWUudmFsdWVzLmNvbG9yLnRhZy50ZXh0W2NvbG9yVmFyaWFudF0sXG4gICAgfSxcbiAgfSlcbik7XG5cbmV4cG9ydCBmdW5jdGlvbiBUYWcoe1xuICBsYWJlbCxcbiAgY29sb3JWYXJpYW50ID0gXCJncmF5XCIsXG4gIGlzUmVtb3ZhYmxlID0gZmFsc2UsXG4gIG9uQ2xlYXIsXG4gIGNsZWFyQnRuQXJpYUxhYmVsLFxuICBcImRhdGEtZTJlLXRlc3QtaWRcIjogZGF0YUUyZVRlc3RJZCxcbn06IFRhZ1Byb3BzKTogUmVhY3QuUmVhY3RFbGVtZW50IHtcbiAgcmV0dXJuIChcbiAgICA8VGFnQ29udGFpbmVyXG4gICAgICBkYXRhLWUyZS10ZXN0LWlkPXtkYXRhRTJlVGVzdElkfVxuICAgICAgZGF0YS1kcy1pZD1cIlRhZ1wiXG4gICAgICBjb2xvclZhcmlhbnQ9e2NvbG9yVmFyaWFudH1cbiAgICAgIGlzUmVtb3ZhYmxlPXtpc1JlbW92YWJsZX1cbiAgICA+XG4gICAgICA8VGFnTGFiZWw+e2xhYmVsfTwvVGFnTGFiZWw+XG5cbiAgICAgIHtpc1JlbW92YWJsZSAmJiAoXG4gICAgICAgIDxDbGVhckJ1dHRvblxuICAgICAgICAgIGljb249XCJ4XCJcbiAgICAgICAgICBzaXplPVwieHNcIlxuICAgICAgICAgIGFyaWEtbGFiZWw9e2NsZWFyQnRuQXJpYUxhYmVsfVxuICAgICAgICAgIG9uQ2xpY2s9e29uQ2xlYXJ9XG4gICAgICAgICAgY29sb3JWYXJpYW50PXtjb2xvclZhcmlhbnR9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgIDwvVGFnQ29udGFpbmVyPlxuICApO1xufVxuIl19 */");
42
+ const ClearButton = /*#__PURE__*/_styled(PictogramButton, process.env.NODE_ENV === "production" ? {
43
+ target: "e1i6narj0"
44
+ } : {
45
+ target: "e1i6narj0",
46
+ label: "ClearButton"
47
+ })(_ref2 => {
48
+ let {
49
+ theme,
50
+ colorVariant
51
+ } = _ref2;
52
+ return {
53
+ backgroundColor: "transparent",
54
+ color: theme.values.color.tag.text[colorVariant],
55
+ "&:hover": {
56
+ color: theme.values.color.tag.text[colorVariant]
57
+ }
58
+ };
59
+ }, process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRhZy50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBcURvQiIsImZpbGUiOiJUYWcudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCI7XG5pbXBvcnQgeyBQaWN0b2dyYW1CdXR0b24gfSBmcm9tIFwiLi4vUGljdG9ncmFtQnV0dG9uL1BpY3RvZ3JhbUJ1dHRvblwiO1xuXG50eXBlIEJhc2VUYWdQcm9wcyA9IHtcbiAgbGFiZWw6IHN0cmluZztcbiAgY29sb3JWYXJpYW50PzogXCJncmF5XCIgfCBcImJsdWVcIjtcbiAgXCJkYXRhLWUyZS10ZXN0LWlkXCI/OiBzdHJpbmc7XG59O1xudHlwZSBDb25kaXRpb25hbFRhZ1Byb3BzID1cbiAgfCB7XG4gICAgICBpc1JlbW92YWJsZT86IGZhbHNlO1xuICAgICAgb25DbGVhcj86IG5ldmVyO1xuICAgICAgY2xlYXJCdG5BcmlhTGFiZWw/OiBuZXZlcjtcbiAgICB9XG4gIHwge1xuICAgICAgaXNSZW1vdmFibGU6IHRydWU7XG4gICAgICBvbkNsZWFyOiAoKSA9PiB2b2lkO1xuICAgICAgY2xlYXJCdG5BcmlhTGFiZWw/OiBzdHJpbmc7XG4gICAgfTtcblxuZXhwb3J0IHR5cGUgVGFnUHJvcHMgPSBCYXNlVGFnUHJvcHMgJiBDb25kaXRpb25hbFRhZ1Byb3BzO1xuXG5jb25zdCBUYWdDb250YWluZXIgPSBzdHlsZWQuc3BhbjxQYXJ0aWFsPFRhZ1Byb3BzPj4oXG4gICh7IHRoZW1lLCBjb2xvclZhcmlhbnQsIGlzUmVtb3ZhYmxlIH0pID0+ICh7XG4gICAgZGlzcGxheTogXCJpbmxpbmUtZmxleFwiLFxuICAgIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gICAgbWF4V2lkdGg6IFwiMjAwcHhcIixcbiAgICBwYWRkaW5nTGVmdDogdGhlbWUudmFyaWFibGVzLnNpemUuc3BhY2luZy54cyxcbiAgICBwYWRkaW5nUmlnaHQ6IGlzUmVtb3ZhYmxlXG4gICAgICA/IHRoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcuemVyb1xuICAgICAgOiB0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLnhzLFxuICAgIHBhZGRpbmdUb3A6IGlzUmVtb3ZhYmxlXG4gICAgICA/IHRoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcuemVyb1xuICAgICAgOiB0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLnh4cyxcbiAgICBwYWRkaW5nQm90dG9tOiBpc1JlbW92YWJsZVxuICAgICAgPyB0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLnplcm9cbiAgICAgIDogdGhlbWUudmFyaWFibGVzLnNpemUuc3BhY2luZy54eHMsXG4gICAgYm9yZGVyUmFkaXVzOiB0aGVtZS52YXJpYWJsZXMuc2l6ZS5ib3JkZXJSYWRpdXMueHMsXG4gICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS52YWx1ZXMuY29sb3IudGFnLmJhY2tncm91bmRbY29sb3JWYXJpYW50XSxcbiAgICBjb2xvcjogdGhlbWUudmFsdWVzLmNvbG9yLnRhZy50ZXh0W2NvbG9yVmFyaWFudF0sXG4gICAgZm9udEZhbWlseTogdGhlbWUudmFyaWFibGVzLmZvbnRGYW1pbHkubGF0byxcbiAgICBmb250U2l6ZTogdGhlbWUudmFyaWFibGVzLnNpemUuZm9udC50ZXh0LnMsXG4gICAgbGluZUhlaWdodDogdGhlbWUudmFyaWFibGVzLnNpemUubGluZUhlaWdodC50ZXh0LnhzLFxuICB9KVxuKTtcblxuY29uc3QgVGFnTGFiZWwgPSBzdHlsZWQuc3BhbigoKSA9PiAoe1xuICBvdmVyZmxvdzogXCJoaWRkZW5cIixcbiAgdGV4dE92ZXJmbG93OiBcImVsbGlwc2lzXCIsXG4gIHdoaXRlU3BhY2U6IFwibm93cmFwXCIsXG59KSk7XG5cbmNvbnN0IENsZWFyQnV0dG9uID0gc3R5bGVkKFBpY3RvZ3JhbUJ1dHRvbik8UGFydGlhbDxUYWdQcm9wcz4+KFxuICAoeyB0aGVtZSwgY29sb3JWYXJpYW50IH0pID0+ICh7XG4gICAgYmFja2dyb3VuZENvbG9yOiBcInRyYW5zcGFyZW50XCIsXG4gICAgY29sb3I6IHRoZW1lLnZhbHVlcy5jb2xvci50YWcudGV4dFtjb2xvclZhcmlhbnRdLFxuICAgIFwiJjpob3ZlclwiOiB7XG4gICAgICBjb2xvcjogdGhlbWUudmFsdWVzLmNvbG9yLnRhZy50ZXh0W2NvbG9yVmFyaWFudF0sXG4gICAgfSxcbiAgfSlcbik7XG5cbmV4cG9ydCBmdW5jdGlvbiBUYWcoe1xuICBsYWJlbCxcbiAgY29sb3JWYXJpYW50ID0gXCJncmF5XCIsXG4gIGlzUmVtb3ZhYmxlID0gZmFsc2UsXG4gIG9uQ2xlYXIsXG4gIGNsZWFyQnRuQXJpYUxhYmVsLFxuICBcImRhdGEtZTJlLXRlc3QtaWRcIjogZGF0YUUyZVRlc3RJZCxcbn06IFRhZ1Byb3BzKTogUmVhY3QuUmVhY3RFbGVtZW50IHtcbiAgcmV0dXJuIChcbiAgICA8VGFnQ29udGFpbmVyXG4gICAgICBkYXRhLWUyZS10ZXN0LWlkPXtkYXRhRTJlVGVzdElkfVxuICAgICAgZGF0YS1kcy1pZD1cIlRhZ1wiXG4gICAgICBjb2xvclZhcmlhbnQ9e2NvbG9yVmFyaWFudH1cbiAgICAgIGlzUmVtb3ZhYmxlPXtpc1JlbW92YWJsZX1cbiAgICA+XG4gICAgICA8VGFnTGFiZWw+e2xhYmVsfTwvVGFnTGFiZWw+XG5cbiAgICAgIHtpc1JlbW92YWJsZSAmJiAoXG4gICAgICAgIDxDbGVhckJ1dHRvblxuICAgICAgICAgIGljb249XCJ4XCJcbiAgICAgICAgICBzaXplPVwieHNcIlxuICAgICAgICAgIGFyaWEtbGFiZWw9e2NsZWFyQnRuQXJpYUxhYmVsfVxuICAgICAgICAgIG9uQ2xpY2s9e29uQ2xlYXJ9XG4gICAgICAgICAgY29sb3JWYXJpYW50PXtjb2xvclZhcmlhbnR9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgIDwvVGFnQ29udGFpbmVyPlxuICApO1xufVxuIl19 */");
60
+ function Tag(_ref3) {
61
+ let {
62
+ label,
63
+ colorVariant = "gray",
64
+ isRemovable = false,
65
+ onClear,
66
+ clearBtnAriaLabel,
67
+ "data-e2e-test-id": dataE2eTestId
68
+ } = _ref3;
69
+ return /*#__PURE__*/React.createElement(TagContainer, {
70
+ "data-e2e-test-id": dataE2eTestId,
71
+ "data-ds-id": "Tag",
72
+ colorVariant: colorVariant,
73
+ isRemovable: isRemovable
74
+ }, /*#__PURE__*/React.createElement(TagLabel, null, label), isRemovable && /*#__PURE__*/React.createElement(ClearButton, {
75
+ icon: "x",
76
+ size: "xs",
77
+ "aria-label": clearBtnAriaLabel,
78
+ onClick: onClear,
79
+ colorVariant: colorVariant
80
+ }));
81
+ }
82
+
83
+ export { Tag };
84
+ //# sourceMappingURL=Tag.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tag.js","sources":["../../../../../src/components/Tag/Tag.tsx"],"sourcesContent":["import React from \"react\";\nimport styled from \"@emotion/styled\";\nimport { PictogramButton } from \"../PictogramButton/PictogramButton\";\n\ntype BaseTagProps = {\n label: string;\n colorVariant?: \"gray\" | \"blue\";\n \"data-e2e-test-id\"?: string;\n};\ntype ConditionalTagProps =\n | {\n isRemovable?: false;\n onClear?: never;\n clearBtnAriaLabel?: never;\n }\n | {\n isRemovable: true;\n onClear: () => void;\n clearBtnAriaLabel?: string;\n };\n\nexport type TagProps = BaseTagProps & ConditionalTagProps;\n\nconst TagContainer = styled.span<Partial<TagProps>>(\n ({ theme, colorVariant, isRemovable }) => ({\n display: \"inline-flex\",\n alignItems: \"center\",\n maxWidth: \"200px\",\n paddingLeft: theme.variables.size.spacing.xs,\n paddingRight: isRemovable\n ? theme.variables.size.spacing.zero\n : theme.variables.size.spacing.xs,\n paddingTop: isRemovable\n ? theme.variables.size.spacing.zero\n : theme.variables.size.spacing.xxs,\n paddingBottom: isRemovable\n ? theme.variables.size.spacing.zero\n : theme.variables.size.spacing.xxs,\n borderRadius: theme.variables.size.borderRadius.xs,\n backgroundColor: theme.values.color.tag.background[colorVariant],\n color: theme.values.color.tag.text[colorVariant],\n fontFamily: theme.variables.fontFamily.lato,\n fontSize: theme.variables.size.font.text.s,\n lineHeight: theme.variables.size.lineHeight.text.xs,\n })\n);\n\nconst TagLabel = styled.span(() => ({\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n}));\n\nconst ClearButton = styled(PictogramButton)<Partial<TagProps>>(\n ({ theme, colorVariant }) => ({\n backgroundColor: \"transparent\",\n color: theme.values.color.tag.text[colorVariant],\n \"&:hover\": {\n color: theme.values.color.tag.text[colorVariant],\n },\n })\n);\n\nexport function Tag({\n label,\n colorVariant = \"gray\",\n isRemovable = false,\n onClear,\n clearBtnAriaLabel,\n \"data-e2e-test-id\": dataE2eTestId,\n}: TagProps): React.ReactElement {\n return (\n <TagContainer\n data-e2e-test-id={dataE2eTestId}\n data-ds-id=\"Tag\"\n colorVariant={colorVariant}\n isRemovable={isRemovable}\n >\n <TagLabel>{label}</TagLabel>\n\n {isRemovable && (\n <ClearButton\n icon=\"x\"\n size=\"xs\"\n aria-label={clearBtnAriaLabel}\n onClick={onClear}\n colorVariant={colorVariant}\n />\n )}\n </TagContainer>\n );\n}\n"],"names":["TagContainer","_styled","process","env","NODE_ENV","target","label","_ref","theme","colorVariant","isRemovable","display","alignItems","maxWidth","paddingLeft","variables","size","spacing","xs","paddingRight","zero","paddingTop","xxs","paddingBottom","borderRadius","backgroundColor","values","color","tag","background","text","fontFamily","lato","fontSize","font","s","lineHeight","TagLabel","overflow","textOverflow","whiteSpace","ClearButton","PictogramButton","_ref2","Tag","_ref3","onClear","clearBtnAriaLabel","dataE2eTestId","React","createElement","icon","onClick"],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import React, { MutableRefObject } from "react";
2
+ export declare type BaseProps = {
3
+ content: string;
4
+ placement?: "auto" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right";
5
+ portalContainer?: HTMLElement;
6
+ "data-e2e-test-id"?: string;
7
+ onVisibilityChange?: (isVisible: boolean) => void;
8
+ };
9
+ export declare type ConditionalProps = {
10
+ externalTriggerRef?: never;
11
+ children: React.ReactElement;
12
+ } | {
13
+ children?: never;
14
+ externalTriggerRef: MutableRefObject<any>;
15
+ };
16
+ export declare type TooltipProps = BaseProps & ConditionalProps;
17
+ export declare type TooltipPosition = {
18
+ top: number;
19
+ left: number;
20
+ horizontalPlacement: "left" | "right" | "center";
21
+ verticalPlacement: "top" | "bottom";
22
+ };
23
+ export declare function Tooltip({ placement, content, children, externalTriggerRef, portalContainer, "data-e2e-test-id": dataE2eTestId, onVisibilityChange, }: TooltipProps): React.ReactElement;
@@ -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