@plumile/ui 0.1.55 → 0.1.57

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 (465) hide show
  1. package/lib/atomic/atoms/button/Button.d.ts.map +1 -1
  2. package/lib/atomic/atoms/button/Button.js +5 -2
  3. package/lib/atomic/atoms/formatted-date/FormattedDate.d.ts +14 -0
  4. package/lib/atomic/atoms/formatted-date/FormattedDate.d.ts.map +1 -0
  5. package/lib/atomic/atoms/formatted-date/FormattedDate.js +29 -0
  6. package/lib/atomic/atoms/icon-button/IconMenuButton.d.ts +8 -0
  7. package/lib/atomic/atoms/icon-button/IconMenuButton.d.ts.map +1 -0
  8. package/lib/atomic/atoms/icon-button/IconMenuButton.js +10 -0
  9. package/lib/atomic/molecules/breadcrumb_navigation/BreadcrumbMenuDropdown.d.ts +14 -0
  10. package/lib/atomic/molecules/breadcrumb_navigation/BreadcrumbMenuDropdown.d.ts.map +1 -0
  11. package/lib/atomic/molecules/breadcrumb_navigation/BreadcrumbMenuDropdown.js +16 -0
  12. package/lib/atomic/molecules/breadcrumb_navigation/BreadcrumbMenuPopover.d.ts +13 -0
  13. package/lib/atomic/molecules/breadcrumb_navigation/BreadcrumbMenuPopover.d.ts.map +1 -0
  14. package/lib/atomic/molecules/breadcrumb_navigation/BreadcrumbMenuPopover.js +42 -0
  15. package/lib/atomic/molecules/breadcrumb_navigation/BreadcrumbNavigation.d.ts +13 -0
  16. package/lib/atomic/molecules/breadcrumb_navigation/BreadcrumbNavigation.d.ts.map +1 -0
  17. package/lib/atomic/molecules/breadcrumb_navigation/BreadcrumbNavigation.js +37 -0
  18. package/lib/atomic/molecules/breadcrumb_navigation/breadcrumbNavigation.css.d.ts +25 -0
  19. package/lib/atomic/molecules/breadcrumb_navigation/breadcrumbNavigation.css.d.ts.map +1 -0
  20. package/lib/atomic/molecules/breadcrumb_navigation/breadcrumbNavigation.css.js +221 -0
  21. package/lib/atomic/molecules/breadcrumb_navigation/types.d.ts +15 -0
  22. package/lib/atomic/molecules/breadcrumb_navigation/types.d.ts.map +1 -0
  23. package/lib/atomic/molecules/breadcrumb_navigation/types.js +2 -0
  24. package/lib/atomic/molecules/dropdown/Dropdown.d.ts +26 -0
  25. package/lib/atomic/molecules/dropdown/Dropdown.d.ts.map +1 -0
  26. package/lib/atomic/molecules/dropdown/Dropdown.js +271 -0
  27. package/lib/atomic/molecules/dropdown/dropdown.css.d.ts +8 -0
  28. package/lib/atomic/molecules/dropdown/dropdown.css.d.ts.map +1 -0
  29. package/lib/atomic/molecules/dropdown/dropdown.css.js +30 -0
  30. package/lib/atomic/molecules/form-actions/FormActions.d.ts +16 -0
  31. package/lib/atomic/molecules/form-actions/FormActions.d.ts.map +1 -0
  32. package/lib/atomic/molecules/form-actions/FormActions.js +27 -0
  33. package/lib/atomic/molecules/toast/ToastProvider.d.ts +19 -0
  34. package/lib/atomic/molecules/toast/ToastProvider.d.ts.map +1 -0
  35. package/lib/atomic/molecules/toast/ToastProvider.js +113 -0
  36. package/lib/atomic/molecules/toast/ToastViewport.d.ts +24 -0
  37. package/lib/atomic/molecules/toast/ToastViewport.d.ts.map +1 -0
  38. package/lib/atomic/molecules/toast/ToastViewport.js +40 -0
  39. package/lib/atomic/molecules/toast/constants.d.ts +2 -0
  40. package/lib/atomic/molecules/toast/constants.d.ts.map +1 -0
  41. package/lib/atomic/molecules/toast/constants.js +2 -0
  42. package/lib/atomic/molecules/toast/toast.css.d.ts +25 -0
  43. package/lib/atomic/molecules/toast/toast.css.d.ts.map +1 -0
  44. package/lib/atomic/molecules/toast/toast.css.js +106 -0
  45. package/lib/components/data-table/DataTable.css.d.ts +61 -0
  46. package/lib/components/data-table/DataTable.css.d.ts.map +1 -0
  47. package/lib/components/data-table/DataTable.css.js +285 -0
  48. package/lib/components/data-table/DataTable.d.ts +32 -0
  49. package/lib/components/data-table/DataTable.d.ts.map +1 -0
  50. package/lib/components/data-table/DataTable.js +95 -0
  51. package/lib/components/data-table/TableCell.css.d.ts +26 -0
  52. package/lib/components/data-table/TableCell.css.d.ts.map +1 -0
  53. package/lib/components/data-table/TableCell.css.js +45 -0
  54. package/lib/components/data-table/TableCell.d.ts +46 -0
  55. package/lib/components/data-table/TableCell.d.ts.map +1 -0
  56. package/lib/components/data-table/TableCell.js +72 -0
  57. package/lib/components/data-table/TableCellBase.d.ts +13 -0
  58. package/lib/components/data-table/TableCellBase.d.ts.map +1 -0
  59. package/lib/components/data-table/TableCellBase.js +11 -0
  60. package/lib/components/data-table/VirtualizedConnectionTable.css.d.ts +5 -0
  61. package/lib/components/data-table/VirtualizedConnectionTable.css.d.ts.map +1 -0
  62. package/lib/components/data-table/VirtualizedConnectionTable.css.js +18 -0
  63. package/lib/components/data-table/VirtualizedConnectionTable.d.ts +32 -0
  64. package/lib/components/data-table/VirtualizedConnectionTable.d.ts.map +1 -0
  65. package/lib/components/data-table/VirtualizedConnectionTable.js +304 -0
  66. package/lib/components/data-table/tableBreakpoints.d.ts +9 -0
  67. package/lib/components/data-table/tableBreakpoints.d.ts.map +1 -0
  68. package/lib/components/data-table/tableBreakpoints.js +34 -0
  69. package/lib/components/select/SimpleSelect.css.d.ts +23 -0
  70. package/lib/components/select/SimpleSelect.css.d.ts.map +1 -0
  71. package/lib/components/select/SimpleSelect.css.js +175 -0
  72. package/lib/components/select/SimpleSelect.d.ts +22 -0
  73. package/lib/components/select/SimpleSelect.d.ts.map +1 -0
  74. package/lib/components/select/SimpleSelect.js +218 -0
  75. package/lib/components/subscriptions/RefetchNeededBanner.css.d.ts +5 -0
  76. package/lib/components/subscriptions/RefetchNeededBanner.css.d.ts.map +1 -0
  77. package/lib/components/subscriptions/RefetchNeededBanner.css.js +32 -0
  78. package/lib/components/subscriptions/RefetchNeededBanner.d.ts +9 -0
  79. package/lib/components/subscriptions/RefetchNeededBanner.d.ts.map +1 -0
  80. package/lib/components/subscriptions/RefetchNeededBanner.js +17 -0
  81. package/lib/esm/atomic/atoms/badge/Badge.js +17 -16
  82. package/lib/esm/atomic/atoms/badge/Badge.js.map +1 -1
  83. package/lib/esm/atomic/atoms/badge/badge.css.js +30 -8
  84. package/lib/esm/atomic/atoms/badge/badge.css.js.map +1 -1
  85. package/lib/esm/atomic/atoms/button/Button.js +46 -56
  86. package/lib/esm/atomic/atoms/button/Button.js.map +1 -1
  87. package/lib/esm/atomic/atoms/button/LinkButton.js +48 -62
  88. package/lib/esm/atomic/atoms/button/LinkButton.js.map +1 -1
  89. package/lib/esm/atomic/atoms/button/button.css.js +95 -16
  90. package/lib/esm/atomic/atoms/button/button.css.js.map +1 -1
  91. package/lib/esm/atomic/atoms/checkbox/Checkbox.js +37 -40
  92. package/lib/esm/atomic/atoms/checkbox/Checkbox.js.map +1 -1
  93. package/lib/esm/atomic/atoms/checkbox/checkbox.css.js +26 -11
  94. package/lib/esm/atomic/atoms/checkbox/checkbox.css.js.map +1 -1
  95. package/lib/esm/atomic/atoms/formatted-date/FormattedDate.js +33 -0
  96. package/lib/esm/atomic/atoms/formatted-date/FormattedDate.js.map +1 -0
  97. package/lib/esm/atomic/atoms/icon-button/IconMenuButton.js +19 -0
  98. package/lib/esm/atomic/atoms/icon-button/IconMenuButton.js.map +1 -0
  99. package/lib/esm/atomic/atoms/input/Input.js +46 -40
  100. package/lib/esm/atomic/atoms/input/Input.js.map +1 -1
  101. package/lib/esm/atomic/atoms/input/input.css.js +32 -14
  102. package/lib/esm/atomic/atoms/input/input.css.js.map +1 -1
  103. package/lib/esm/atomic/atoms/label/Label.js +23 -16
  104. package/lib/esm/atomic/atoms/label/Label.js.map +1 -1
  105. package/lib/esm/atomic/atoms/label/label.css.js +27 -9
  106. package/lib/esm/atomic/atoms/label/label.css.js.map +1 -1
  107. package/lib/esm/atomic/atoms/textarea/Textarea.js +19 -18
  108. package/lib/esm/atomic/atoms/textarea/Textarea.js.map +1 -1
  109. package/lib/esm/atomic/atoms/textarea/textarea.css.js +32 -8
  110. package/lib/esm/atomic/atoms/textarea/textarea.css.js.map +1 -1
  111. package/lib/esm/atomic/molecules/breadcrumb_navigation/BreadcrumbMenuDropdown.js +48 -0
  112. package/lib/esm/atomic/molecules/breadcrumb_navigation/BreadcrumbMenuDropdown.js.map +1 -0
  113. package/lib/esm/atomic/molecules/breadcrumb_navigation/BreadcrumbMenuPopover.js +54 -0
  114. package/lib/esm/atomic/molecules/breadcrumb_navigation/BreadcrumbMenuPopover.js.map +1 -0
  115. package/lib/esm/atomic/molecules/breadcrumb_navigation/BreadcrumbNavigation.js +63 -0
  116. package/lib/esm/atomic/molecules/breadcrumb_navigation/BreadcrumbNavigation.js.map +1 -0
  117. package/lib/esm/atomic/molecules/breadcrumb_navigation/breadcrumbNavigation.css.js +8 -0
  118. package/lib/esm/atomic/molecules/breadcrumb_navigation/breadcrumbNavigation.css.js.map +1 -0
  119. package/lib/esm/atomic/molecules/card/Card.css.js +8 -10
  120. package/lib/esm/atomic/molecules/card/Card.css.js.map +1 -1
  121. package/lib/esm/atomic/molecules/card/Card.js +24 -17
  122. package/lib/esm/atomic/molecules/card/Card.js.map +1 -1
  123. package/lib/esm/atomic/molecules/dropdown/Dropdown.js +149 -0
  124. package/lib/esm/atomic/molecules/dropdown/Dropdown.js.map +1 -0
  125. package/lib/esm/atomic/molecules/dropdown/dropdown.css.js +8 -0
  126. package/lib/esm/atomic/molecules/dropdown/dropdown.css.js.map +1 -0
  127. package/lib/esm/atomic/molecules/form-actions/FormActions.js +32 -0
  128. package/lib/esm/atomic/molecules/form-actions/FormActions.js.map +1 -0
  129. package/lib/esm/atomic/molecules/tabs/Tabs.js +34 -33
  130. package/lib/esm/atomic/molecules/tabs/Tabs.js.map +1 -1
  131. package/lib/esm/atomic/molecules/tabs/tabs.css.js +18 -9
  132. package/lib/esm/atomic/molecules/tabs/tabs.css.js.map +1 -1
  133. package/lib/esm/atomic/molecules/toast/ToastProvider.js +83 -0
  134. package/lib/esm/atomic/molecules/toast/ToastProvider.js.map +1 -0
  135. package/lib/esm/atomic/molecules/toast/ToastViewport.js +76 -0
  136. package/lib/esm/atomic/molecules/toast/ToastViewport.js.map +1 -0
  137. package/lib/esm/atomic/molecules/toast/constants.js +6 -0
  138. package/lib/esm/atomic/molecules/toast/constants.js.map +1 -0
  139. package/lib/esm/atomic/molecules/toast/toast.css.js +18 -0
  140. package/lib/esm/atomic/molecules/toast/toast.css.js.map +1 -0
  141. package/lib/esm/components/charts/BillingUsageLineChart.js +140 -173
  142. package/lib/esm/components/charts/BillingUsageLineChart.js.map +1 -1
  143. package/lib/esm/components/charts/billingUsageLineChart.css.js +8 -12
  144. package/lib/esm/components/charts/billingUsageLineChart.css.js.map +1 -1
  145. package/lib/esm/components/data-table/DataTable.css.js +84 -0
  146. package/lib/esm/components/data-table/DataTable.css.js.map +1 -0
  147. package/lib/esm/components/data-table/DataTable.js +74 -0
  148. package/lib/esm/components/data-table/DataTable.js.map +1 -0
  149. package/lib/esm/components/data-table/TableCell.css.js +18 -0
  150. package/lib/esm/components/data-table/TableCell.css.js.map +1 -0
  151. package/lib/esm/components/data-table/TableCell.js +75 -0
  152. package/lib/esm/components/data-table/TableCell.js.map +1 -0
  153. package/lib/esm/components/data-table/TableCellBase.js +19 -0
  154. package/lib/esm/components/data-table/TableCellBase.js.map +1 -0
  155. package/lib/esm/components/data-table/VirtualizedConnectionTable.css.js +8 -0
  156. package/lib/esm/components/data-table/VirtualizedConnectionTable.css.js.map +1 -0
  157. package/lib/esm/components/data-table/VirtualizedConnectionTable.js +191 -0
  158. package/lib/esm/components/data-table/VirtualizedConnectionTable.js.map +1 -0
  159. package/lib/esm/components/data-table/tableBreakpoints.js +31 -0
  160. package/lib/esm/components/data-table/tableBreakpoints.js.map +1 -0
  161. package/lib/esm/components/layout/ContentLayout.css.js +8 -18
  162. package/lib/esm/components/layout/ContentLayout.css.js.map +1 -1
  163. package/lib/esm/components/layout/ContentLayout.js +68 -78
  164. package/lib/esm/components/layout/ContentLayout.js.map +1 -1
  165. package/lib/esm/components/layout/TabsContentLayout.css.js +8 -11
  166. package/lib/esm/components/layout/TabsContentLayout.css.js.map +1 -1
  167. package/lib/esm/components/layout/TabsContentLayout.js +30 -13
  168. package/lib/esm/components/layout/TabsContentLayout.js.map +1 -1
  169. package/lib/esm/components/select/SimpleSelect.css.js +17 -0
  170. package/lib/esm/components/select/SimpleSelect.css.js.map +1 -0
  171. package/lib/esm/components/select/SimpleSelect.js +185 -0
  172. package/lib/esm/components/select/SimpleSelect.js.map +1 -0
  173. package/lib/esm/components/subscriptions/RefetchNeededBanner.css.js +8 -0
  174. package/lib/esm/components/subscriptions/RefetchNeededBanner.css.js.map +1 -0
  175. package/lib/esm/components/subscriptions/RefetchNeededBanner.js +32 -0
  176. package/lib/esm/components/subscriptions/RefetchNeededBanner.js.map +1 -0
  177. package/lib/esm/components/tile/InfoTile.css.js +8 -18
  178. package/lib/esm/components/tile/InfoTile.css.js.map +1 -1
  179. package/lib/esm/components/tile/InfoTile.js +62 -67
  180. package/lib/esm/components/tile/InfoTile.js.map +1 -1
  181. package/lib/esm/i18n/useUiTranslation.js +9 -0
  182. package/lib/esm/i18n/useUiTranslation.js.map +1 -0
  183. package/lib/esm/icons/BanSvg.js +29 -44
  184. package/lib/esm/icons/BanSvg.js.map +1 -1
  185. package/lib/esm/icons/ButtonLoadingSpinnerSvg.js +26 -41
  186. package/lib/esm/icons/ButtonLoadingSpinnerSvg.js.map +1 -1
  187. package/lib/esm/icons/ChatCheckSvg.js +27 -42
  188. package/lib/esm/icons/ChatCheckSvg.js.map +1 -1
  189. package/lib/esm/icons/ChatSizeLargeSvg.js +49 -70
  190. package/lib/esm/icons/ChatSizeLargeSvg.js.map +1 -1
  191. package/lib/esm/icons/ChatSizeMediumSvg.js +43 -61
  192. package/lib/esm/icons/ChatSizeMediumSvg.js.map +1 -1
  193. package/lib/esm/icons/ChatSizeSmallSvg.js +37 -52
  194. package/lib/esm/icons/ChatSizeSmallSvg.js.map +1 -1
  195. package/lib/esm/icons/ChatXSvg.js +27 -42
  196. package/lib/esm/icons/ChatXSvg.js.map +1 -1
  197. package/lib/esm/icons/CheckSvg.js +21 -30
  198. package/lib/esm/icons/CheckSvg.js.map +1 -1
  199. package/lib/esm/icons/ChevronDownSvg.js +21 -30
  200. package/lib/esm/icons/ChevronDownSvg.js.map +1 -1
  201. package/lib/esm/icons/ChevronLeftSvg.js +21 -30
  202. package/lib/esm/icons/ChevronLeftSvg.js.map +1 -1
  203. package/lib/esm/icons/ChevronRightSvg.js +21 -30
  204. package/lib/esm/icons/ChevronRightSvg.js.map +1 -1
  205. package/lib/esm/icons/ClockSvg.js +29 -44
  206. package/lib/esm/icons/ClockSvg.js.map +1 -1
  207. package/lib/esm/icons/CoinOffSvg.js +47 -65
  208. package/lib/esm/icons/CoinOffSvg.js.map +1 -1
  209. package/lib/esm/icons/CoinSvg.js +40 -55
  210. package/lib/esm/icons/CoinSvg.js.map +1 -1
  211. package/lib/esm/icons/DatabaseCheckSvg.js +47 -65
  212. package/lib/esm/icons/DatabaseCheckSvg.js.map +1 -1
  213. package/lib/esm/icons/DatabaseXSvg.js +47 -65
  214. package/lib/esm/icons/DatabaseXSvg.js.map +1 -1
  215. package/lib/esm/icons/DevModeSvg.js +21 -30
  216. package/lib/esm/icons/DevModeSvg.js.map +1 -1
  217. package/lib/esm/icons/EyeSvg.js +27 -33
  218. package/lib/esm/icons/EyeSvg.js.map +1 -1
  219. package/lib/esm/icons/FormErrorAlertSvg.js +37 -29
  220. package/lib/esm/icons/FormErrorAlertSvg.js.map +1 -1
  221. package/lib/esm/icons/GlobeSvg.js +18 -27
  222. package/lib/esm/icons/GlobeSvg.js.map +1 -1
  223. package/lib/esm/icons/GripDotsSvg.js +52 -29
  224. package/lib/esm/icons/GripDotsSvg.js.map +1 -1
  225. package/lib/esm/icons/HomeActivityAssignUserSvg.js +44 -62
  226. package/lib/esm/icons/HomeActivityAssignUserSvg.js.map +1 -1
  227. package/lib/esm/icons/HomeStatsCheckBadgeSvg.js +27 -42
  228. package/lib/esm/icons/HomeStatsCheckBadgeSvg.js.map +1 -1
  229. package/lib/esm/icons/HomeStatsClipboardSvg.js +27 -42
  230. package/lib/esm/icons/HomeStatsClipboardSvg.js.map +1 -1
  231. package/lib/esm/icons/HomeStatsClockSvg.js +27 -42
  232. package/lib/esm/icons/HomeStatsClockSvg.js.map +1 -1
  233. package/lib/esm/icons/KeyOffSvg.js +39 -54
  234. package/lib/esm/icons/KeyOffSvg.js.map +1 -1
  235. package/lib/esm/icons/KeySvg.js +39 -54
  236. package/lib/esm/icons/KeySvg.js.map +1 -1
  237. package/lib/esm/icons/KronexSvg.js +28 -43
  238. package/lib/esm/icons/KronexSvg.js.map +1 -1
  239. package/lib/esm/icons/LinkCheckSvg.js +37 -52
  240. package/lib/esm/icons/LinkCheckSvg.js.map +1 -1
  241. package/lib/esm/icons/LinkSvg.js +27 -42
  242. package/lib/esm/icons/LinkSvg.js.map +1 -1
  243. package/lib/esm/icons/LinkXSvg.js +37 -52
  244. package/lib/esm/icons/LinkXSvg.js.map +1 -1
  245. package/lib/esm/icons/LockOpenSvg.js +31 -46
  246. package/lib/esm/icons/LockOpenSvg.js.map +1 -1
  247. package/lib/esm/icons/LockSvg.js +31 -46
  248. package/lib/esm/icons/LockSvg.js.map +1 -1
  249. package/lib/esm/icons/MailCheckSvg.js +41 -56
  250. package/lib/esm/icons/MailCheckSvg.js.map +1 -1
  251. package/lib/esm/icons/MailSvg.js +31 -46
  252. package/lib/esm/icons/MailSvg.js.map +1 -1
  253. package/lib/esm/icons/MailXSvg.js +41 -56
  254. package/lib/esm/icons/MailXSvg.js.map +1 -1
  255. package/lib/esm/icons/ModalCloseSvg.js +27 -42
  256. package/lib/esm/icons/ModalCloseSvg.js.map +1 -1
  257. package/lib/esm/icons/PencilSvg.js +14 -20
  258. package/lib/esm/icons/PencilSvg.js.map +1 -1
  259. package/lib/esm/icons/PinFilledSvg.js +24 -40
  260. package/lib/esm/icons/PinFilledSvg.js.map +1 -1
  261. package/lib/esm/icons/PinSvg.js +27 -43
  262. package/lib/esm/icons/PinSvg.js.map +1 -1
  263. package/lib/esm/icons/ProfileDropdownLogoutSvg.js +37 -52
  264. package/lib/esm/icons/ProfileDropdownLogoutSvg.js.map +1 -1
  265. package/lib/esm/icons/ProfileDropdownOrganizationSvg.js +27 -42
  266. package/lib/esm/icons/ProfileDropdownOrganizationSvg.js.map +1 -1
  267. package/lib/esm/icons/ProjectsFolderSvg.js +21 -30
  268. package/lib/esm/icons/ProjectsFolderSvg.js.map +1 -1
  269. package/lib/esm/icons/RobotCheckSvg.js +60 -68
  270. package/lib/esm/icons/RobotCheckSvg.js.map +1 -1
  271. package/lib/esm/icons/RobotSvg.js +53 -58
  272. package/lib/esm/icons/RobotSvg.js.map +1 -1
  273. package/lib/esm/icons/RobotXSvg.js +60 -68
  274. package/lib/esm/icons/RobotXSvg.js.map +1 -1
  275. package/lib/esm/icons/RocketOffSvg.js +58 -83
  276. package/lib/esm/icons/RocketOffSvg.js.map +1 -1
  277. package/lib/esm/icons/RocketSvg.js +51 -73
  278. package/lib/esm/icons/RocketSvg.js.map +1 -1
  279. package/lib/esm/icons/SendCheckSvg.js +40 -55
  280. package/lib/esm/icons/SendCheckSvg.js.map +1 -1
  281. package/lib/esm/icons/SendMessageSvg.js +30 -45
  282. package/lib/esm/icons/SendMessageSvg.js.map +1 -1
  283. package/lib/esm/icons/SendXSvg.js +40 -55
  284. package/lib/esm/icons/SendXSvg.js.map +1 -1
  285. package/lib/esm/icons/SettingsCheckSvg.js +37 -52
  286. package/lib/esm/icons/SettingsCheckSvg.js.map +1 -1
  287. package/lib/esm/icons/SettingsXSvg.js +37 -52
  288. package/lib/esm/icons/SettingsXSvg.js.map +1 -1
  289. package/lib/esm/icons/ShieldLockSvg.js +41 -56
  290. package/lib/esm/icons/ShieldLockSvg.js.map +1 -1
  291. package/lib/esm/icons/ShieldOffSvg.js +27 -42
  292. package/lib/esm/icons/ShieldOffSvg.js.map +1 -1
  293. package/lib/esm/icons/SidebarHomeSvg.js +27 -42
  294. package/lib/esm/icons/SidebarHomeSvg.js.map +1 -1
  295. package/lib/esm/icons/SidebarInitiativesSvg.js +37 -52
  296. package/lib/esm/icons/SidebarInitiativesSvg.js.map +1 -1
  297. package/lib/esm/icons/SidebarPlusSvg.js +27 -42
  298. package/lib/esm/icons/SidebarPlusSvg.js.map +1 -1
  299. package/lib/esm/icons/SidebarSearchSvg.js +27 -42
  300. package/lib/esm/icons/SidebarSearchSvg.js.map +1 -1
  301. package/lib/esm/icons/SidebarSettingsSvg.js +27 -42
  302. package/lib/esm/icons/SidebarSettingsSvg.js.map +1 -1
  303. package/lib/esm/icons/SidebarTasksSvg.js +27 -42
  304. package/lib/esm/icons/SidebarTasksSvg.js.map +1 -1
  305. package/lib/esm/icons/SidebarTeamSvg.js +44 -62
  306. package/lib/esm/icons/SidebarTeamSvg.js.map +1 -1
  307. package/lib/esm/icons/TaskAttachmentSvg.js +21 -30
  308. package/lib/esm/icons/TaskAttachmentSvg.js.map +1 -1
  309. package/lib/esm/icons/TaskCalendarSvg.js +44 -62
  310. package/lib/esm/icons/TaskCalendarSvg.js.map +1 -1
  311. package/lib/esm/icons/TaskCommentBubbleSvg.js +21 -30
  312. package/lib/esm/icons/TaskCommentBubbleSvg.js.map +1 -1
  313. package/lib/esm/icons/TaskDeleteSvg.js +27 -42
  314. package/lib/esm/icons/TaskDeleteSvg.js.map +1 -1
  315. package/lib/esm/icons/TaskDependencyBlockedSvg.js +27 -43
  316. package/lib/esm/icons/TaskDependencyBlockedSvg.js.map +1 -1
  317. package/lib/esm/icons/TaskDependencyReadySvg.js +27 -43
  318. package/lib/esm/icons/TaskDependencyReadySvg.js.map +1 -1
  319. package/lib/esm/icons/TaskMenuDotsSvg.js +37 -52
  320. package/lib/esm/icons/TaskMenuDotsSvg.js.map +1 -1
  321. package/lib/esm/icons/TaskTagSvg.js +27 -42
  322. package/lib/esm/icons/TaskTagSvg.js.map +1 -1
  323. package/lib/esm/icons/TeamMemberEmailSvg.js +27 -42
  324. package/lib/esm/icons/TeamMemberEmailSvg.js.map +1 -1
  325. package/lib/esm/icons/TeamMemberLocationSvg.js +27 -42
  326. package/lib/esm/icons/TeamMemberLocationSvg.js.map +1 -1
  327. package/lib/esm/icons/WrenchSvg.js +21 -30
  328. package/lib/esm/icons/WrenchSvg.js.map +1 -1
  329. package/lib/esm/icons/XBadgeSvg.js +27 -42
  330. package/lib/esm/icons/XBadgeSvg.js.map +1 -1
  331. package/lib/esm/icons/markdown/MarkdownCheckboxCheckedSvg.js +30 -42
  332. package/lib/esm/icons/markdown/MarkdownCheckboxCheckedSvg.js.map +1 -1
  333. package/lib/esm/icons/markdown/MarkdownCheckboxUncheckedSvg.js +22 -28
  334. package/lib/esm/icons/markdown/MarkdownCheckboxUncheckedSvg.js.map +1 -1
  335. package/lib/esm/icons/markdown/MarkdownCopySuccessSvg.js +41 -53
  336. package/lib/esm/icons/markdown/MarkdownCopySuccessSvg.js.map +1 -1
  337. package/lib/esm/icons/markdown/MarkdownCopySvg.js +30 -42
  338. package/lib/esm/icons/markdown/MarkdownCopySvg.js.map +1 -1
  339. package/lib/esm/icons/markdown/MarkdownExternalLinkSvg.js +39 -51
  340. package/lib/esm/icons/markdown/MarkdownExternalLinkSvg.js.map +1 -1
  341. package/lib/esm/index.js +33 -55
  342. package/lib/esm/style.css +2 -0
  343. package/lib/esm/style.js +4 -0
  344. package/lib/esm/styles/slots.js +0 -0
  345. package/lib/esm/svg/ChevronDownIcon.js +11 -10
  346. package/lib/esm/svg/ChevronDownIcon.js.map +1 -1
  347. package/lib/esm/svg/ChevronRightIcon.js +11 -9
  348. package/lib/esm/svg/ChevronRightIcon.js.map +1 -1
  349. package/lib/esm/svg/GlobeIcon.js +11 -6
  350. package/lib/esm/svg/GlobeIcon.js.map +1 -1
  351. package/lib/esm/theme/ThemeProvider.js +33 -37
  352. package/lib/esm/theme/ThemeProvider.js.map +1 -1
  353. package/lib/esm/theme/VisuallyHidden.js +12 -8
  354. package/lib/esm/theme/VisuallyHidden.js.map +1 -1
  355. package/lib/esm/theme/accessibility.css.js +7 -8
  356. package/lib/esm/theme/accessibility.css.js.map +1 -1
  357. package/lib/esm/theme/colors.js +101 -100
  358. package/lib/esm/theme/colors.js.map +1 -1
  359. package/lib/esm/theme/common.js +122 -123
  360. package/lib/esm/theme/common.js.map +1 -1
  361. package/lib/esm/theme/containerQueries.js +14 -13
  362. package/lib/esm/theme/containerQueries.js.map +1 -1
  363. package/lib/esm/theme/global.css.js +1 -2
  364. package/lib/esm/theme/index.js +9 -28
  365. package/lib/esm/theme/sprinkles.css.js +68484 -9
  366. package/lib/esm/theme/sprinkles.css.js.map +1 -1
  367. package/lib/esm/theme/theme.css.js +1 -2
  368. package/lib/esm/theme/themeContract.js +1025 -1035
  369. package/lib/esm/theme/themeContract.js.map +1 -1
  370. package/lib/esm/theme/tools.js +16 -19
  371. package/lib/esm/theme/tools.js.map +1 -1
  372. package/lib/i18n/useUiTranslation.d.ts +3 -0
  373. package/lib/i18n/useUiTranslation.d.ts.map +1 -0
  374. package/lib/i18n/useUiTranslation.js +5 -0
  375. package/lib/index.d.ts +10 -0
  376. package/lib/index.d.ts.map +1 -1
  377. package/lib/index.js +11 -1
  378. package/lib/style.d.ts +5 -0
  379. package/lib/style.d.ts.map +1 -0
  380. package/lib/style.js +5 -0
  381. package/lib/styles/slots.d.ts +2 -0
  382. package/lib/styles/slots.d.ts.map +1 -0
  383. package/lib/styles/slots.js +2 -0
  384. package/lib/types/atomic/atoms/button/Button.d.ts.map +1 -1
  385. package/lib/types/atomic/atoms/formatted-date/FormattedDate.d.ts +14 -0
  386. package/lib/types/atomic/atoms/formatted-date/FormattedDate.d.ts.map +1 -0
  387. package/lib/types/atomic/atoms/icon-button/IconMenuButton.d.ts +8 -0
  388. package/lib/types/atomic/atoms/icon-button/IconMenuButton.d.ts.map +1 -0
  389. package/lib/types/atomic/molecules/breadcrumb_navigation/BreadcrumbMenuDropdown.d.ts +14 -0
  390. package/lib/types/atomic/molecules/breadcrumb_navigation/BreadcrumbMenuDropdown.d.ts.map +1 -0
  391. package/lib/types/atomic/molecules/breadcrumb_navigation/BreadcrumbMenuPopover.d.ts +13 -0
  392. package/lib/types/atomic/molecules/breadcrumb_navigation/BreadcrumbMenuPopover.d.ts.map +1 -0
  393. package/lib/types/atomic/molecules/breadcrumb_navigation/BreadcrumbNavigation.d.ts +13 -0
  394. package/lib/types/atomic/molecules/breadcrumb_navigation/BreadcrumbNavigation.d.ts.map +1 -0
  395. package/lib/types/atomic/molecules/breadcrumb_navigation/breadcrumbNavigation.css.d.ts +25 -0
  396. package/lib/types/atomic/molecules/breadcrumb_navigation/breadcrumbNavigation.css.d.ts.map +1 -0
  397. package/lib/types/atomic/molecules/breadcrumb_navigation/types.d.ts +15 -0
  398. package/lib/types/atomic/molecules/breadcrumb_navigation/types.d.ts.map +1 -0
  399. package/lib/types/atomic/molecules/dropdown/Dropdown.d.ts +26 -0
  400. package/lib/types/atomic/molecules/dropdown/Dropdown.d.ts.map +1 -0
  401. package/lib/types/atomic/molecules/dropdown/dropdown.css.d.ts +8 -0
  402. package/lib/types/atomic/molecules/dropdown/dropdown.css.d.ts.map +1 -0
  403. package/lib/types/atomic/molecules/form-actions/FormActions.d.ts +16 -0
  404. package/lib/types/atomic/molecules/form-actions/FormActions.d.ts.map +1 -0
  405. package/lib/types/atomic/molecules/toast/ToastProvider.d.ts +19 -0
  406. package/lib/types/atomic/molecules/toast/ToastProvider.d.ts.map +1 -0
  407. package/lib/types/atomic/molecules/toast/ToastViewport.d.ts +24 -0
  408. package/lib/types/atomic/molecules/toast/ToastViewport.d.ts.map +1 -0
  409. package/lib/types/atomic/molecules/toast/constants.d.ts +2 -0
  410. package/lib/types/atomic/molecules/toast/constants.d.ts.map +1 -0
  411. package/lib/types/atomic/molecules/toast/toast.css.d.ts +25 -0
  412. package/lib/types/atomic/molecules/toast/toast.css.d.ts.map +1 -0
  413. package/lib/types/components/data-table/DataTable.css.d.ts +61 -0
  414. package/lib/types/components/data-table/DataTable.css.d.ts.map +1 -0
  415. package/lib/types/components/data-table/DataTable.d.ts +32 -0
  416. package/lib/types/components/data-table/DataTable.d.ts.map +1 -0
  417. package/lib/types/components/data-table/TableCell.css.d.ts +26 -0
  418. package/lib/types/components/data-table/TableCell.css.d.ts.map +1 -0
  419. package/lib/types/components/data-table/TableCell.d.ts +46 -0
  420. package/lib/types/components/data-table/TableCell.d.ts.map +1 -0
  421. package/lib/types/components/data-table/TableCellBase.d.ts +13 -0
  422. package/lib/types/components/data-table/TableCellBase.d.ts.map +1 -0
  423. package/lib/types/components/data-table/VirtualizedConnectionTable.css.d.ts +5 -0
  424. package/lib/types/components/data-table/VirtualizedConnectionTable.css.d.ts.map +1 -0
  425. package/lib/types/components/data-table/VirtualizedConnectionTable.d.ts +32 -0
  426. package/lib/types/components/data-table/VirtualizedConnectionTable.d.ts.map +1 -0
  427. package/lib/types/components/data-table/tableBreakpoints.d.ts +9 -0
  428. package/lib/types/components/data-table/tableBreakpoints.d.ts.map +1 -0
  429. package/lib/types/components/select/SimpleSelect.css.d.ts +23 -0
  430. package/lib/types/components/select/SimpleSelect.css.d.ts.map +1 -0
  431. package/lib/types/components/select/SimpleSelect.d.ts +22 -0
  432. package/lib/types/components/select/SimpleSelect.d.ts.map +1 -0
  433. package/lib/types/components/subscriptions/RefetchNeededBanner.css.d.ts +5 -0
  434. package/lib/types/components/subscriptions/RefetchNeededBanner.css.d.ts.map +1 -0
  435. package/lib/types/components/subscriptions/RefetchNeededBanner.d.ts +9 -0
  436. package/lib/types/components/subscriptions/RefetchNeededBanner.d.ts.map +1 -0
  437. package/lib/types/i18n/useUiTranslation.d.ts +3 -0
  438. package/lib/types/i18n/useUiTranslation.d.ts.map +1 -0
  439. package/lib/types/index.d.ts +10 -0
  440. package/lib/types/index.d.ts.map +1 -1
  441. package/lib/types/style.d.ts +5 -0
  442. package/lib/types/style.d.ts.map +1 -0
  443. package/lib/types/styles/slots.d.ts +2 -0
  444. package/lib/types/styles/slots.d.ts.map +1 -0
  445. package/package.json +12 -4
  446. package/src/i18n/locales/en/ui.json +53 -0
  447. package/src/i18n/locales/fr/ui.json +53 -0
  448. package/src/i18n/useUiTranslation.ts +6 -0
  449. package/lib/esm/atomic/atoms/badge/badge.css.ts.vanilla-BxMgYgcH.css +0 -1
  450. package/lib/esm/atomic/atoms/button/button.css.ts.vanilla-BYFxDZro.css +0 -1
  451. package/lib/esm/atomic/atoms/checkbox/checkbox.css.ts.vanilla-D6TvWxlo.css +0 -1
  452. package/lib/esm/atomic/atoms/input/input.css.ts.vanilla-D_X5_tcn.css +0 -1
  453. package/lib/esm/atomic/atoms/textarea/textarea.css.ts.vanilla-IrvNTQEt.css +0 -1
  454. package/lib/esm/atomic/molecules/tabs/tabs.css.ts.vanilla-DQm5wO0K.css +0 -1
  455. package/lib/esm/components/charts/billingUsageLineChart.css.ts.vanilla-7e3dy1Dj.css +0 -1
  456. package/lib/esm/components/tile/InfoTile.css.ts.vanilla-ByCg4UKz.css +0 -1
  457. package/lib/esm/index.js.map +0 -1
  458. package/lib/esm/theme/accessibility.css.ts.vanilla-D6gfeWvf.css +0 -1
  459. package/lib/esm/theme/global.css.js.map +0 -1
  460. package/lib/esm/theme/global.css.ts.vanilla-ClXnHnoy.css +0 -1
  461. package/lib/esm/theme/index.js.map +0 -1
  462. package/lib/esm/theme/sprinkles.css.ts.vanilla-DOI5FNoi.css +0 -1
  463. package/lib/esm/theme/theme.css.js.map +0 -1
  464. package/lib/esm/theme/theme.css.ts.vanilla-a3SsXff5.css +0 -1
  465. /package/lib/esm/{components/layout/TabsContentLayout.css.ts.vanilla-tn0RQdqM.css → atomic/molecules/breadcrumb_navigation/types.js} +0 -0
@@ -0,0 +1,72 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useMemo } from 'react';
3
+ import { Badge } from '../../atomic/atoms/badge/Badge.js';
4
+ import { FormattedDate } from '../../atomic/atoms/formatted-date/FormattedDate.js';
5
+ import * as styles from './TableCell.css.js';
6
+ import { TableCellBase } from './TableCellBase.js';
7
+ import { cx } from '../../theme/tools.js';
8
+ const FALLBACK_REFERENCE = '—';
9
+ const DEFAULT_TEXT_FALLBACK = FALLBACK_REFERENCE;
10
+ const DefaultNumberFormat = {
11
+ maximumFractionDigits: 2,
12
+ };
13
+ const DefaultDateOptions = {
14
+ dateStyle: 'medium',
15
+ timeStyle: 'short',
16
+ };
17
+ const Text = ({ value, fallback = DEFAULT_TEXT_FALLBACK, children, ellipsis = false, className, }) => {
18
+ let content = children ?? value;
19
+ if (content == null) {
20
+ content = fallback;
21
+ }
22
+ else if (typeof content === 'string') {
23
+ const trimmed = content.trim();
24
+ if (trimmed.length === 0) {
25
+ content = fallback;
26
+ }
27
+ else {
28
+ content = trimmed;
29
+ }
30
+ }
31
+ return (_jsx(TableCellBase, { ellipsis: ellipsis, className: cx(styles.text, className), children: content }));
32
+ };
33
+ const NumberCell = ({ value, fallback = DEFAULT_TEXT_FALLBACK, locale, formatOptions = DefaultNumberFormat, }) => {
34
+ const formatted = useMemo(() => {
35
+ if (value == null || Number.isNaN(Number(value))) {
36
+ return fallback;
37
+ }
38
+ try {
39
+ return new Intl.NumberFormat(locale, formatOptions).format(value);
40
+ }
41
+ catch {
42
+ return String(value);
43
+ }
44
+ }, [value, fallback, locale, formatOptions]);
45
+ return (_jsx(TableCellBase, { align: "end", className: styles.number, children: formatted }));
46
+ };
47
+ const Status = ({ label, tone, isLoading = false, }) => {
48
+ return (_jsx(TableCellBase, { children: _jsx(Badge, { tone: tone, loading: isLoading, children: label }) }));
49
+ };
50
+ const DateCell = ({ value, fallback = FALLBACK_REFERENCE, locale, options = DefaultDateOptions, }) => {
51
+ return (_jsx(TableCellBase, { className: styles.date, children: _jsx(FormattedDate, { value: value, fallback: fallback, locale: locale, options: options }) }));
52
+ };
53
+ const BadgeCell = ({ label, tone }) => {
54
+ return (_jsx(TableCellBase, { children: _jsx(Badge, { tone: tone, children: label }) }));
55
+ };
56
+ const Actions = ({ children, className }) => {
57
+ return (_jsx(TableCellBase, { align: "end", className: className, children: children }));
58
+ };
59
+ const Muted = ({ children }) => {
60
+ return _jsx("span", { className: styles.muted, children: children });
61
+ };
62
+ export const TableCell = {
63
+ Base: TableCellBase,
64
+ Text,
65
+ Number: NumberCell,
66
+ Status,
67
+ Date: DateCell,
68
+ Badge: BadgeCell,
69
+ Actions,
70
+ Muted,
71
+ };
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGFibGVDZWxsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvZGF0YS10YWJsZS9UYWJsZUNlbGwudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQTRCLE9BQU8sRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUUxRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBRW5GLE9BQU8sS0FBSyxNQUFNLE1BQU0sb0JBQW9CLENBQUM7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBMkIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUE2QzFDLE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxDQUFDO0FBQy9CLE1BQU0scUJBQXFCLEdBQUcsa0JBQWtCLENBQUM7QUFFakQsTUFBTSxtQkFBbUIsR0FBNkI7SUFDcEQscUJBQXFCLEVBQUUsQ0FBQztDQUN6QixDQUFDO0FBRUYsTUFBTSxrQkFBa0IsR0FBK0I7SUFDckQsU0FBUyxFQUFFLFFBQVE7SUFDbkIsU0FBUyxFQUFFLE9BQU87Q0FDbkIsQ0FBQztBQUVGLE1BQU0sSUFBSSxHQUFHLENBQUMsRUFDWixLQUFLLEVBQ0wsUUFBUSxHQUFHLHFCQUFxQixFQUNoQyxRQUFRLEVBQ1IsUUFBUSxHQUFHLEtBQUssRUFDaEIsU0FBUyxHQUNLLEVBQWUsRUFBRTtJQUMvQixJQUFJLE9BQU8sR0FBYyxRQUFRLElBQUksS0FBSyxDQUFDO0lBRTNDLElBQUksT0FBTyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3BCLE9BQU8sR0FBRyxRQUFRLENBQUM7SUFDckIsQ0FBQztTQUFNLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDdkMsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksRUFB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ZSxFQUFFO0lBQ25FLE9BQU8sZUFBTSxTQUFTLEVBQUUsTUFBTSxDQUFDLEtBQUssWUFBRyxRQUFRLEdBQVEsQ0FBQztBQUMxRCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUc7SUFDdkIsSUFBSSxFQUFFLGFBQWE7SUFDbkIsSUFBSTtJQUNKLE1BQU0sRUFBRSxVQUFVO0lBQ2xCLE1BQU07SUFDTixJQUFJLEVBQUUsUUFBUTtJQUNkLEtBQUssRUFBRSxTQUFTO0lBQ2hCLE9BQU87SUFDUCxLQUFLO0NBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgSlNYLCB0eXBlIFJlYWN0Tm9kZSwgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHsgQmFkZ2UgfSBmcm9tICcuLi8uLi9hdG9taWMvYXRvbXMvYmFkZ2UvQmFkZ2UuanMnO1xuaW1wb3J0IHsgRm9ybWF0dGVkRGF0ZSB9IGZyb20gJy4uLy4uL2F0b21pYy9hdG9tcy9mb3JtYXR0ZWQtZGF0ZS9Gb3JtYXR0ZWREYXRlLmpzJztcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gJy4vVGFibGVDZWxsLmNzcy5qcyc7XG5pbXBvcnQgeyBUYWJsZUNlbGxCYXNlLCB0eXBlIFRhYmxlQ2VsbEJhc2VQcm9wcyB9IGZyb20gJy4vVGFibGVDZWxsQmFzZS5qcyc7XG5pbXBvcnQgeyBjeCB9IGZyb20gJy4uLy4uL3RoZW1lL3Rvb2xzLmpzJztcblxudHlwZSBCYWRnZVRvbmUgPVxuICB8ICduZXV0cmFsJ1xuICB8ICdpbmZvJ1xuICB8ICdzdWNjZXNzJ1xuICB8ICd3YXJuaW5nJ1xuICB8ICdkYW5nZXInXG4gIHwgJ2FjY2VudCc7XG5cbnR5cGUgVGV4dENlbGxQcm9wcyA9IHtcbiAgdmFsdWU/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBmYWxsYmFjaz86IHN0cmluZztcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG4gIGVsbGlwc2lzPzogYm9vbGVhbjtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xufTtcblxudHlwZSBOdW1iZXJDZWxsUHJvcHMgPSB7XG4gIHZhbHVlOiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBmYWxsYmFjaz86IHN0cmluZztcbiAgbG9jYWxlPzogc3RyaW5nO1xuICBmb3JtYXRPcHRpb25zPzogSW50bC5OdW1iZXJGb3JtYXRPcHRpb25zO1xufTtcblxudHlwZSBTdGF0dXNDZWxsUHJvcHMgPSB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHRvbmU6IEJhZGdlVG9uZTtcbiAgaXNMb2FkaW5nPzogYm9vbGVhbjtcbn07XG5cbnR5cGUgRGF0ZUNlbGxQcm9wcyA9IHtcbiAgdmFsdWU6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGZhbGxiYWNrPzogc3RyaW5nO1xuICBsb2NhbGU/OiBzdHJpbmc7XG4gIG9wdGlvbnM/OiBJbnRsLkRhdGVUaW1lRm9ybWF0T3B0aW9ucztcbn07XG5cbnR5cGUgQmFkZ2VDZWxsUHJvcHMgPSB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHRvbmU6IEJhZGdlVG9uZTtcbn07XG5cbnR5cGUgQWN0aW9uc0NlbGxQcm9wcyA9IFRhYmxlQ2VsbEJhc2VQcm9wcztcblxuY29uc3QgRkFMTEJBQ0tfUkVGRVJFTkNFID0gJ+KAlCc7XG5jb25zdCBERUZBVUxUX1RFWFRfRkFMTEJBQ0sgPSBGQUxMQkFDS19SRUZFUkVOQ0U7XG5cbmNvbnN0IERlZmF1bHROdW1iZXJGb3JtYXQ6IEludGwuTnVtYmVyRm9ybWF0T3B0aW9ucyA9IHtcbiAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyLFxufTtcblxuY29uc3QgRGVmYXVsdERhdGVPcHRpb25zOiBJbnRsLkRhdGVUaW1lRm9ybWF0T3B0aW9ucyA9IHtcbiAgZGF0ZVN0eWxlOiAnbWVkaXVtJyxcbiAgdGltZVN0eWxlOiAnc2hvcnQnLFxufTtcblxuY29uc3QgVGV4dCA9ICh7XG4gIHZhbHVlLFxuICBmYWxsYmFjayA9IERFRkFVTFRfVEVYVF9GQUxMQkFDSyxcbiAgY2hpbGRyZW4sXG4gIGVsbGlwc2lzID0gZmFsc2UsXG4gIGNsYXNzTmFtZSxcbn06IFRleHRDZWxsUHJvcHMpOiBKU1guRWxlbWVudCA9PiB7XG4gIGxldCBjb250ZW50OiBSZWFjdE5vZGUgPSBjaGlsZHJlbiA/PyB2YWx1ZTtcblxuICBpZiAoY29udGVudCA9PSBudWxsKSB7XG4gICAgY29udGVudCA9IGZhbGxiYWNrO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykge1xuICAgIGNvbnN0IHRyaW1tZWQgPSBjb250ZW50LnRyaW0oKTtcbiAgICBpZiAodHJpbW1lZC5sZW5ndGggPT09IDApIHtcbiAgICAgIGNvbnRlbnQgPSBmYWxsYmFjaztcbiAgICB9IGVsc2Uge1xuICAgICAgY29udGVudCA9IHRyaW1tZWQ7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8VGFibGVDZWxsQmFzZSBlbGxpcHNpcz17ZWxsaXBzaXN9IGNsYXNzTmFtZT17Y3goc3R5bGVzLnRleHQsIGNsYXNzTmFtZSl9PlxuICAgICAge2NvbnRlbnR9XG4gICAgPC9UYWJsZUNlbGxCYXNlPlxuICApO1xufTtcblxuY29uc3QgTnVtYmVyQ2VsbCA9ICh7XG4gIHZhbHVlLFxuICBmYWxsYmFjayA9IERFRkFVTFRfVEVYVF9GQUxMQkFDSyxcbiAgbG9jYWxlLFxuICBmb3JtYXRPcHRpb25zID0gRGVmYXVsdE51bWJlckZvcm1hdCxcbn06IE51bWJlckNlbGxQcm9wcyk6IEpTWC5FbGVtZW50ID0+IHtcbiAgY29uc3QgZm9ybWF0dGVkID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKHZhbHVlID09IG51bGwgfHwgTnVtYmVyLmlzTmFOKE51bWJlcih2YWx1ZSkpKSB7XG4gICAgICByZXR1cm4gZmFsbGJhY2s7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgSW50bC5OdW1iZXJGb3JtYXQobG9jYWxlLCBmb3JtYXRPcHRpb25zKS5mb3JtYXQodmFsdWUpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gICAgfVxuICB9LCBbdmFsdWUsIGZhbGxiYWNrLCBsb2NhbGUsIGZvcm1hdE9wdGlvbnNdKTtcblxuICByZXR1cm4gKFxuICAgIDxUYWJsZUNlbGxCYXNlIGFsaWduPVwiZW5kXCIgY2xhc3NOYW1lPXtzdHlsZXMubnVtYmVyfT5cbiAgICAgIHtmb3JtYXR0ZWR9XG4gICAgPC9UYWJsZUNlbGxCYXNlPlxuICApO1xufTtcblxuY29uc3QgU3RhdHVzID0gKHtcbiAgbGFiZWwsXG4gIHRvbmUsXG4gIGlzTG9hZGluZyA9IGZhbHNlLFxufTogU3RhdHVzQ2VsbFByb3BzKTogSlNYLkVsZW1lbnQgPT4ge1xuICByZXR1cm4gKFxuICAgIDxUYWJsZUNlbGxCYXNlPlxuICAgICAgPEJhZGdlIHRvbmU9e3RvbmV9IGxvYWRpbmc9e2lzTG9hZGluZ30+XG4gICAgICAgIHtsYWJlbH1cbiAgICAgIDwvQmFkZ2U+XG4gICAgPC9UYWJsZUNlbGxCYXNlPlxuICApO1xufTtcblxuY29uc3QgRGF0ZUNlbGwgPSAoe1xuICB2YWx1ZSxcbiAgZmFsbGJhY2sgPSBGQUxMQkFDS19SRUZFUkVOQ0UsXG4gIGxvY2FsZSxcbiAgb3B0aW9ucyA9IERlZmF1bHREYXRlT3B0aW9ucyxcbn06IERhdGVDZWxsUHJvcHMpOiBKU1guRWxlbWVudCA9PiB7XG4gIHJldHVybiAoXG4gICAgPFRhYmxlQ2VsbEJhc2UgY2xhc3NOYW1lPXtzdHlsZXMuZGF0ZX0+XG4gICAgICA8Rm9ybWF0dGVkRGF0ZVxuICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgIGZhbGxiYWNrPXtmYWxsYmFja31cbiAgICAgICAgbG9jYWxlPXtsb2NhbGV9XG4gICAgICAgIG9wdGlvbnM9e29wdGlvbnN9XG4gICAgICAvPlxuICAgIDwvVGFibGVDZWxsQmFzZT5cbiAgKTtcbn07XG5cbmNvbnN0IEJhZGdlQ2VsbCA9ICh7IGxhYmVsLCB0b25lIH06IEJhZGdlQ2VsbFByb3BzKTogSlNYLkVsZW1lbnQgPT4ge1xuICByZXR1cm4gKFxuICAgIDxUYWJsZUNlbGxCYXNlPlxuICAgICAgPEJhZGdlIHRvbmU9e3RvbmV9PntsYWJlbH08L0JhZGdlPlxuICAgIDwvVGFibGVDZWxsQmFzZT5cbiAgKTtcbn07XG5cbmNvbnN0IEFjdGlvbnMgPSAoeyBjaGlsZHJlbiwgY2xhc3NOYW1lIH06IEFjdGlvbnNDZWxsUHJvcHMpOiBKU1guRWxlbWVudCA9PiB7XG4gIHJldHVybiAoXG4gICAgPFRhYmxlQ2VsbEJhc2UgYWxpZ249XCJlbmRcIiBjbGFzc05hbWU9e2NsYXNzTmFtZX0+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9UYWJsZUNlbGxCYXNlPlxuICApO1xufTtcblxuY29uc3QgTXV0ZWQgPSAoeyBjaGlsZHJlbiB9OiB7IGNoaWxkcmVuOiBSZWFjdE5vZGUgfSk6IEpTWC5FbGVtZW50ID0+IHtcbiAgcmV0dXJuIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLm11dGVkfT57Y2hpbGRyZW59PC9zcGFuPjtcbn07XG5cbmV4cG9ydCBjb25zdCBUYWJsZUNlbGwgPSB7XG4gIEJhc2U6IFRhYmxlQ2VsbEJhc2UsXG4gIFRleHQsXG4gIE51bWJlcjogTnVtYmVyQ2VsbCxcbiAgU3RhdHVzLFxuICBEYXRlOiBEYXRlQ2VsbCxcbiAgQmFkZ2U6IEJhZGdlQ2VsbCxcbiAgQWN0aW9ucyxcbiAgTXV0ZWQsXG59O1xuXG5leHBvcnQgdHlwZSB7IFRleHRDZWxsUHJvcHMsIE51bWJlckNlbGxQcm9wcywgU3RhdHVzQ2VsbFByb3BzLCBEYXRlQ2VsbFByb3BzIH07XG4iXX0=
@@ -0,0 +1,13 @@
1
+ import { type JSX, type ReactNode } from 'react';
2
+ import * as styles from './TableCell.css.js';
3
+ import type { RecipeVariants } from '@vanilla-extract/recipes';
4
+ type Alignment = NonNullable<NonNullable<RecipeVariants<typeof styles.alignRecipe>>['align']>;
5
+ export type TableCellBaseProps = {
6
+ children: ReactNode;
7
+ className?: string;
8
+ align?: Alignment;
9
+ ellipsis?: boolean;
10
+ };
11
+ export declare const TableCellBase: ({ children, className, align, ellipsis, }: TableCellBaseProps) => JSX.Element;
12
+ export {};
13
+ //# sourceMappingURL=TableCellBase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableCellBase.d.ts","sourceRoot":"","sources":["../../../src/components/data-table/TableCellBase.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEjD,OAAO,KAAK,MAAM,MAAM,oBAAoB,CAAC;AAE7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE/D,KAAK,SAAS,GAAG,WAAW,CAC1B,WAAW,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAChE,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,2CAK3B,kBAAkB,KAAG,GAAG,CAAC,OAQ3B,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as styles from './TableCell.css.js';
3
+ import { cx } from '../../theme/tools.js';
4
+ export const TableCellBase = ({ children, className, align = 'start', ellipsis = false, }) => {
5
+ const classNames = [styles.base, styles.alignRecipe({ align }), className];
6
+ if (ellipsis) {
7
+ classNames.push(styles.ellipsis);
8
+ }
9
+ return _jsx("div", { className: cx(...classNames), children: children });
10
+ };
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGFibGVDZWxsQmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2RhdGEtdGFibGUvVGFibGVDZWxsQmFzZS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUVBLE9BQU8sS0FBSyxNQUFNLE1BQU0sb0JBQW9CLENBQUM7QUFDN0MsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBYzFDLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLEVBQzVCLFFBQVEsRUFDUixTQUFTLEVBQ1QsS0FBSyxHQUFHLE9BQU8sRUFDZixRQUFRLEdBQUcsS0FBSyxHQUNHLEVBQWUsRUFBRTtJQUNwQyxNQUFNLFVBQVUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFFM0UsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUNiLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxPQUFPLGNBQUssU0FBUyxFQUFFLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxZQUFHLFFBQVEsR0FBTyxDQUFDO0FBQzdELENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgSlNYLCB0eXBlIFJlYWN0Tm9kZSB9IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gJy4vVGFibGVDZWxsLmNzcy5qcyc7XG5pbXBvcnQgeyBjeCB9IGZyb20gJy4uLy4uL3RoZW1lL3Rvb2xzLmpzJztcbmltcG9ydCB0eXBlIHsgUmVjaXBlVmFyaWFudHMgfSBmcm9tICdAdmFuaWxsYS1leHRyYWN0L3JlY2lwZXMnO1xuXG50eXBlIEFsaWdubWVudCA9IE5vbk51bGxhYmxlPFxuICBOb25OdWxsYWJsZTxSZWNpcGVWYXJpYW50czx0eXBlb2Ygc3R5bGVzLmFsaWduUmVjaXBlPj5bJ2FsaWduJ11cbj47XG5cbmV4cG9ydCB0eXBlIFRhYmxlQ2VsbEJhc2VQcm9wcyA9IHtcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZTtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBhbGlnbj86IEFsaWdubWVudDtcbiAgZWxsaXBzaXM/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IGNvbnN0IFRhYmxlQ2VsbEJhc2UgPSAoe1xuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lLFxuICBhbGlnbiA9ICdzdGFydCcsXG4gIGVsbGlwc2lzID0gZmFsc2UsXG59OiBUYWJsZUNlbGxCYXNlUHJvcHMpOiBKU1guRWxlbWVudCA9PiB7XG4gIGNvbnN0IGNsYXNzTmFtZXMgPSBbc3R5bGVzLmJhc2UsIHN0eWxlcy5hbGlnblJlY2lwZSh7IGFsaWduIH0pLCBjbGFzc05hbWVdO1xuXG4gIGlmIChlbGxpcHNpcykge1xuICAgIGNsYXNzTmFtZXMucHVzaChzdHlsZXMuZWxsaXBzaXMpO1xuICB9XG5cbiAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPXtjeCguLi5jbGFzc05hbWVzKX0+e2NoaWxkcmVufTwvZGl2Pjtcbn07XG4iXX0=
@@ -0,0 +1,5 @@
1
+ export declare const singleLineCell: string;
2
+ export declare const bodyViewport: string;
3
+ export declare const spacer: string;
4
+ export declare const sentinel: string;
5
+ //# sourceMappingURL=VirtualizedConnectionTable.css.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VirtualizedConnectionTable.css.d.ts","sourceRoot":"","sources":["../../../src/components/data-table/VirtualizedConnectionTable.css.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,cAAc,QAKzB,CAAC;AAEH,eAAO,MAAM,YAAY,QAEvB,CAAC;AAEH,eAAO,MAAM,MAAM,QAEjB,CAAC;AAEH,eAAO,MAAM,QAAQ,QAGnB,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { sprinkles } from '../../theme/sprinkles.css.js';
2
+ export const singleLineCell = sprinkles({
3
+ whiteSpace: 'nowrap',
4
+ overflow: 'hidden',
5
+ textOverflow: 'ellipsis',
6
+ minWidth: 0,
7
+ });
8
+ export const bodyViewport = sprinkles({
9
+ position: 'relative',
10
+ });
11
+ export const spacer = sprinkles({
12
+ width: 'full',
13
+ });
14
+ export const sentinel = sprinkles({
15
+ width: 'full',
16
+ height: 1,
17
+ });
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmlydHVhbGl6ZWRDb25uZWN0aW9uVGFibGUuY3NzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvZGF0YS10YWJsZS9WaXJ0dWFsaXplZENvbm5lY3Rpb25UYWJsZS5jc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRXpELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxTQUFTLENBQUM7SUFDdEMsVUFBVSxFQUFFLFFBQVE7SUFDcEIsUUFBUSxFQUFFLFFBQVE7SUFDbEIsWUFBWSxFQUFFLFVBQVU7SUFDeEIsUUFBUSxFQUFFLENBQUM7Q0FDWixDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsU0FBUyxDQUFDO0lBQ3BDLFFBQVEsRUFBRSxVQUFVO0NBQ3JCLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUM7SUFDOUIsS0FBSyxFQUFFLE1BQU07Q0FDZCxDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDO0lBQ2hDLEtBQUssRUFBRSxNQUFNO0lBQ2IsTUFBTSxFQUFFLENBQUM7Q0FDVixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzcHJpbmtsZXMgfSBmcm9tICcuLi8uLi90aGVtZS9zcHJpbmtsZXMuY3NzLmpzJztcblxuZXhwb3J0IGNvbnN0IHNpbmdsZUxpbmVDZWxsID0gc3ByaW5rbGVzKHtcbiAgd2hpdGVTcGFjZTogJ25vd3JhcCcsXG4gIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgdGV4dE92ZXJmbG93OiAnZWxsaXBzaXMnLFxuICBtaW5XaWR0aDogMCxcbn0pO1xuXG5leHBvcnQgY29uc3QgYm9keVZpZXdwb3J0ID0gc3ByaW5rbGVzKHtcbiAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG59KTtcblxuZXhwb3J0IGNvbnN0IHNwYWNlciA9IHNwcmlua2xlcyh7XG4gIHdpZHRoOiAnZnVsbCcsXG59KTtcblxuZXhwb3J0IGNvbnN0IHNlbnRpbmVsID0gc3ByaW5rbGVzKHtcbiAgd2lkdGg6ICdmdWxsJyxcbiAgaGVpZ2h0OiAxLFxufSk7XG4iXX0=
@@ -0,0 +1,32 @@
1
+ import { type JSX } from 'react';
2
+ import type { DataTableColumn, DataTableKind, GetRowId } from './DataTable.js';
3
+ import type { SlotClasses } from '../../styles/slots.js';
4
+ export type VirtualizationConfig = {
5
+ enabled: boolean;
6
+ rowHeightPx: number;
7
+ overscan: number;
8
+ };
9
+ export type InfiniteScrollConfig = {
10
+ enabled: boolean;
11
+ thresholdPx?: number;
12
+ autoLoad?: boolean;
13
+ };
14
+ type DataTableSlot = 'container' | 'header' | 'headerRow' | 'headerCell' | 'primaryHeaderCell' | 'body' | 'row' | 'rowEven' | 'rowOdd' | 'cell' | 'primaryCell' | 'emptyRow' | 'emptyCell';
15
+ export type VirtualizedConnectionTableProps<Row> = {
16
+ columns: readonly DataTableColumn<Row>[];
17
+ rows: readonly Row[];
18
+ getRowId: GetRowId<Row>;
19
+ emptyState?: JSX.Element;
20
+ className?: string;
21
+ gridTemplateColumns?: string;
22
+ kind?: DataTableKind;
23
+ classes?: SlotClasses<DataTableSlot>;
24
+ virtualization?: VirtualizationConfig;
25
+ infiniteScroll?: InfiniteScrollConfig;
26
+ hasNextPage?: boolean;
27
+ isLoadingMore?: boolean;
28
+ onLoadMore?: () => void;
29
+ };
30
+ export declare const VirtualizedConnectionTable: <Row>({ columns, rows, getRowId, emptyState, className, gridTemplateColumns, kind, classes, virtualization, infiniteScroll, hasNextPage, isLoadingMore, onLoadMore, }: VirtualizedConnectionTableProps<Row>) => JSX.Element;
31
+ export {};
32
+ //# sourceMappingURL=VirtualizedConnectionTable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VirtualizedConnectionTable.d.ts","sourceRoot":"","sources":["../../../src/components/data-table/VirtualizedConnectionTable.tsx"],"names":[],"mappings":"AAAA,OAAO,EAQL,KAAK,GAAG,EACT,MAAM,OAAO,CAAC;AAGf,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAM/E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,KAAK,aAAa,GACd,WAAW,GACX,QAAQ,GACR,WAAW,GACX,YAAY,GACZ,mBAAmB,GACnB,MAAM,GACN,KAAK,GACL,SAAS,GACT,QAAQ,GACR,MAAM,GACN,aAAa,GACb,UAAU,GACV,WAAW,CAAC;AAEhB,MAAM,MAAM,+BAA+B,CAAC,GAAG,IAAI;IACjD,OAAO,EAAE,SAAS,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;IACzC,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC;IACrB,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;IACxB,UAAU,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,OAAO,CAAC,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC;IAErC,cAAc,CAAC,EAAE,oBAAoB,CAAC;IAEtC,cAAc,CAAC,EAAE,oBAAoB,CAAC;IACtC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB,CAAC;AAiDF,eAAO,MAAM,0BAA0B,GAAI,GAAG,EAAG,iKAc9C,+BAA+B,CAAC,GAAG,CAAC,KAAG,GAAG,CAAC,OAkZ7C,CAAC"}
@@ -0,0 +1,304 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState, } from 'react';
3
+ import * as dataTableStyles from './DataTable.css.js';
4
+ import * as styles from './VirtualizedConnectionTable.css.js';
5
+ import { cx } from '../../theme/tools.js';
6
+ import { useUiTranslation } from '../../i18n/useUiTranslation.js';
7
+ const DEFAULT_TEMPLATE_CELL = 'minmax(0, 1fr)';
8
+ const buildInlineTemplate = (columnCount, gridTemplateColumns) => {
9
+ if (typeof gridTemplateColumns === 'string' && gridTemplateColumns !== '') {
10
+ return { gridTemplateColumns };
11
+ }
12
+ return {
13
+ gridTemplateColumns: `repeat(${columnCount}, ${DEFAULT_TEMPLATE_CELL})`,
14
+ };
15
+ };
16
+ const getVisibilityClass = (minVisibleAt) => {
17
+ if (minVisibleAt == null) {
18
+ return null;
19
+ }
20
+ return dataTableStyles.hideBelowRecipe({ minVisibleAt });
21
+ };
22
+ const findScrollParent = (el) => {
23
+ let current = el;
24
+ while (current != null) {
25
+ const style = window.getComputedStyle(current);
26
+ const { overflowY } = style;
27
+ if (overflowY === 'auto' ||
28
+ overflowY === 'scroll' ||
29
+ overflowY === 'overlay') {
30
+ return current;
31
+ }
32
+ current = current.parentElement;
33
+ }
34
+ return null;
35
+ };
36
+ const clamp = (value, min, max) => {
37
+ return Math.min(max, Math.max(min, value));
38
+ };
39
+ export const VirtualizedConnectionTable = ({ columns, rows, getRowId, emptyState, className, gridTemplateColumns, kind, classes, virtualization, infiniteScroll, hasNextPage = false, isLoadingMore = false, onLoadMore, }) => {
40
+ const { t } = useUiTranslation();
41
+ const resolvedKind = kind ?? 'default';
42
+ const containerRef = useRef(null);
43
+ const bodyRef = useRef(null);
44
+ const sentinelRef = useRef(null);
45
+ const scrollParentRef = useRef(null);
46
+ const rafRef = useRef(null);
47
+ const loadMoreCooldownRef = useRef(false);
48
+ const isVirtualized = virtualization?.enabled === true;
49
+ const rowHeightPx = useMemo(() => {
50
+ if (!isVirtualized) {
51
+ return null;
52
+ }
53
+ const configuredRowHeight = virtualization.rowHeightPx;
54
+ if (typeof configuredRowHeight === 'number' &&
55
+ Number.isFinite(configuredRowHeight) &&
56
+ configuredRowHeight > 0) {
57
+ return configuredRowHeight;
58
+ }
59
+ return 56;
60
+ }, [isVirtualized, virtualization]);
61
+ const overscan = useMemo(() => {
62
+ if (!isVirtualized) {
63
+ return 0;
64
+ }
65
+ let nextOverscan = 10;
66
+ const configuredOverscan = virtualization.overscan;
67
+ if (typeof configuredOverscan === 'number' &&
68
+ Number.isFinite(configuredOverscan)) {
69
+ nextOverscan = configuredOverscan;
70
+ }
71
+ return Math.max(0, nextOverscan);
72
+ }, [isVirtualized, virtualization]);
73
+ const thresholdPx = infiniteScroll?.thresholdPx ?? 800;
74
+ const autoLoad = infiniteScroll?.autoLoad ?? true;
75
+ const infiniteEnabled = infiniteScroll?.enabled === true;
76
+ const canLoadMore = infiniteEnabled && hasNextPage && !isLoadingMore && onLoadMore != null;
77
+ const triggerLoadMore = useCallback(() => {
78
+ if (onLoadMore == null) {
79
+ return;
80
+ }
81
+ onLoadMore();
82
+ }, [onLoadMore]);
83
+ const [windowState, setWindowState] = useState(() => {
84
+ return { startIndex: 0, endIndex: Math.min(rows.length, 50) };
85
+ });
86
+ const inlineTemplateStyle = useMemo(() => {
87
+ return buildInlineTemplate(columns.length, gridTemplateColumns);
88
+ }, [columns.length, gridTemplateColumns]);
89
+ const renderRow = useCallback((row, index, heightPx) => {
90
+ const rowId = getRowId(row, index);
91
+ const rowClasses = [
92
+ dataTableStyles.row({ kind: resolvedKind }),
93
+ classes?.row,
94
+ ];
95
+ if (index % 2 === 0) {
96
+ rowClasses.push(dataTableStyles.rowEven({ kind: resolvedKind }), classes?.rowEven);
97
+ }
98
+ else {
99
+ rowClasses.push(dataTableStyles.rowOdd({ kind: resolvedKind }), classes?.rowOdd);
100
+ }
101
+ const rowStyle = { ...inlineTemplateStyle };
102
+ if (typeof heightPx === 'number') {
103
+ rowStyle.height = heightPx;
104
+ }
105
+ return (_jsx("div", { role: "row", className: cx(...rowClasses), style: rowStyle, children: columns.map((column) => {
106
+ const cellClasses = [
107
+ dataTableStyles.cell({ kind: resolvedKind }),
108
+ styles.singleLineCell,
109
+ classes?.cell,
110
+ ];
111
+ const visibilityClass = getVisibilityClass(column.minVisibleAt);
112
+ if (visibilityClass != null) {
113
+ cellClasses.push(visibilityClass);
114
+ }
115
+ if (column.className != null) {
116
+ cellClasses.push(column.className);
117
+ }
118
+ if (column.isPrimary) {
119
+ cellClasses.push(dataTableStyles.primaryCell, classes?.primaryCell);
120
+ }
121
+ return (_jsx("div", { role: "cell", className: cx(...cellClasses), children: column.cell(row) }, column.id));
122
+ }) }, rowId));
123
+ }, [classes, columns, getRowId, inlineTemplateStyle, resolvedKind]);
124
+ const computeVirtualWindow = useCallback(() => {
125
+ if (!isVirtualized) {
126
+ return;
127
+ }
128
+ const height = rowHeightPx;
129
+ if (height == null) {
130
+ return;
131
+ }
132
+ const bodyEl = bodyRef.current;
133
+ if (bodyEl == null) {
134
+ return;
135
+ }
136
+ const scrollParent = scrollParentRef.current;
137
+ const viewportHeight = scrollParent?.clientHeight ?? window.innerHeight;
138
+ const parentRectTop = scrollParent?.getBoundingClientRect().top ?? 0;
139
+ const bodyRectTop = bodyEl.getBoundingClientRect().top;
140
+ const relativeTop = bodyRectTop - parentRectTop;
141
+ const visibleTop = Math.max(0, -relativeTop);
142
+ const visibleBottom = visibleTop + viewportHeight;
143
+ const totalHeight = rows.length * height;
144
+ const clampedBottom = clamp(visibleBottom, 0, totalHeight);
145
+ const clampedTop = clamp(visibleTop, 0, totalHeight);
146
+ const rawStart = Math.floor(clampedTop / height) - overscan;
147
+ const rawEnd = Math.ceil(clampedBottom / height) + overscan;
148
+ const startIndex = clamp(rawStart, 0, rows.length);
149
+ const endIndex = clamp(rawEnd, startIndex, rows.length);
150
+ setWindowState((prev) => {
151
+ if (prev.startIndex === startIndex && prev.endIndex === endIndex) {
152
+ return prev;
153
+ }
154
+ return { startIndex, endIndex };
155
+ });
156
+ if (autoLoad &&
157
+ canLoadMore &&
158
+ totalHeight - clampedBottom <= thresholdPx &&
159
+ !loadMoreCooldownRef.current) {
160
+ loadMoreCooldownRef.current = true;
161
+ triggerLoadMore();
162
+ window.setTimeout(() => {
163
+ loadMoreCooldownRef.current = false;
164
+ }, 250);
165
+ }
166
+ }, [
167
+ autoLoad,
168
+ canLoadMore,
169
+ isVirtualized,
170
+ overscan,
171
+ rowHeightPx,
172
+ rows.length,
173
+ thresholdPx,
174
+ triggerLoadMore,
175
+ ]);
176
+ const scheduleCompute = useCallback(() => {
177
+ if (rafRef.current != null) {
178
+ return;
179
+ }
180
+ rafRef.current = window.requestAnimationFrame(() => {
181
+ rafRef.current = null;
182
+ computeVirtualWindow();
183
+ });
184
+ }, [computeVirtualWindow]);
185
+ useLayoutEffect(() => {
186
+ if (!isVirtualized) {
187
+ return;
188
+ }
189
+ const container = containerRef.current;
190
+ if (container == null) {
191
+ return;
192
+ }
193
+ scrollParentRef.current = findScrollParent(container);
194
+ scheduleCompute();
195
+ }, [isVirtualized, scheduleCompute]);
196
+ useEffect(() => {
197
+ if (!isVirtualized) {
198
+ return undefined;
199
+ }
200
+ const scrollParent = scrollParentRef.current;
201
+ const target = scrollParent ?? window;
202
+ const handler = () => {
203
+ scheduleCompute();
204
+ };
205
+ target.addEventListener('scroll', handler, { passive: true });
206
+ window.addEventListener('resize', handler);
207
+ return () => {
208
+ target.removeEventListener('scroll', handler);
209
+ window.removeEventListener('resize', handler);
210
+ };
211
+ }, [isVirtualized, scheduleCompute]);
212
+ useEffect(() => {
213
+ if (isVirtualized) {
214
+ return undefined;
215
+ }
216
+ if (!infiniteEnabled || !autoLoad || !canLoadMore) {
217
+ return undefined;
218
+ }
219
+ const sentinel = sentinelRef.current;
220
+ if (sentinel == null) {
221
+ return undefined;
222
+ }
223
+ const scrollParent = scrollParentRef.current;
224
+ const observer = new IntersectionObserver((entries) => {
225
+ const [entry] = entries;
226
+ if (entry == null) {
227
+ return;
228
+ }
229
+ if (entry.isIntersecting && !loadMoreCooldownRef.current) {
230
+ loadMoreCooldownRef.current = true;
231
+ triggerLoadMore();
232
+ window.setTimeout(() => {
233
+ loadMoreCooldownRef.current = false;
234
+ }, 250);
235
+ }
236
+ }, {
237
+ root: scrollParent,
238
+ rootMargin: `0px 0px ${thresholdPx}px 0px`,
239
+ });
240
+ observer.observe(sentinel);
241
+ return () => {
242
+ observer.disconnect();
243
+ };
244
+ }, [
245
+ autoLoad,
246
+ canLoadMore,
247
+ infiniteEnabled,
248
+ isVirtualized,
249
+ thresholdPx,
250
+ triggerLoadMore,
251
+ ]);
252
+ useLayoutEffect(() => {
253
+ if (isVirtualized) {
254
+ return;
255
+ }
256
+ const container = containerRef.current;
257
+ if (container == null) {
258
+ return;
259
+ }
260
+ scrollParentRef.current = findScrollParent(container);
261
+ }, [isVirtualized]);
262
+ const headerRow = (_jsx("div", { className: cx(dataTableStyles.header({ kind: resolvedKind }), classes?.header), role: "rowgroup", children: _jsx("div", { className: cx(dataTableStyles.headerRow, classes?.headerRow), role: "row", style: inlineTemplateStyle, children: columns.map((column) => {
263
+ const headerClasses = [
264
+ dataTableStyles.headerCell({ kind: resolvedKind }),
265
+ classes?.headerCell,
266
+ ];
267
+ const visibilityClass = getVisibilityClass(column.minVisibleAt);
268
+ if (visibilityClass != null) {
269
+ headerClasses.push(visibilityClass);
270
+ }
271
+ if (column.className != null) {
272
+ headerClasses.push(column.className);
273
+ }
274
+ if (column.isPrimary) {
275
+ headerClasses.push(dataTableStyles.primaryHeaderCell, classes?.primaryHeaderCell);
276
+ }
277
+ return (_jsx("div", { role: "columnheader", className: cx(...headerClasses), children: column.header }, column.id));
278
+ }) }) }));
279
+ let bodyRows;
280
+ if (rows.length === 0) {
281
+ bodyRows = (_jsx("div", { className: cx(dataTableStyles.emptyRow, classes?.emptyRow), role: "row", children: _jsx("div", { role: "cell", children: emptyState ?? (_jsx("div", { className: cx(dataTableStyles.emptyCell, classes?.emptyCell), children: t('common.table.empty') })) }) }));
282
+ }
283
+ else if (isVirtualized && rowHeightPx != null) {
284
+ const { startIndex, endIndex } = windowState;
285
+ const topSpacerHeight = startIndex * rowHeightPx;
286
+ const bottomSpacerHeight = (rows.length - endIndex) * rowHeightPx;
287
+ const slice = rows.slice(startIndex, endIndex);
288
+ bodyRows = (_jsxs("div", { className: styles.bodyViewport, ref: bodyRef, children: [_jsx("div", { className: styles.spacer, style: { height: topSpacerHeight } }), slice.map((row, sliceIndex) => {
289
+ const absoluteIndex = startIndex + sliceIndex;
290
+ return renderRow(row, absoluteIndex, rowHeightPx);
291
+ }), _jsx("div", { className: styles.spacer, style: { height: bottomSpacerHeight } })] }));
292
+ }
293
+ else {
294
+ bodyRows = (_jsx("div", { ref: bodyRef, children: rows.map((row, index) => {
295
+ return renderRow(row, index, null);
296
+ }) }));
297
+ }
298
+ let sentinelNode = null;
299
+ if (!isVirtualized && infiniteEnabled && autoLoad) {
300
+ sentinelNode = _jsx("div", { ref: sentinelRef, className: styles.sentinel });
301
+ }
302
+ return (_jsxs("div", { ref: containerRef, className: cx(dataTableStyles.container({ kind: resolvedKind }), classes?.container, className), role: "table", children: [headerRow, _jsxs("div", { className: cx(dataTableStyles.body({ kind: resolvedKind }), classes?.body), role: "rowgroup", children: [bodyRows, sentinelNode] })] }));
303
+ };
304
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmlydHVhbGl6ZWRDb25uZWN0aW9uVGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9kYXRhLXRhYmxlL1ZpcnR1YWxpemVkQ29ubmVjdGlvblRhYmxlLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLFdBQVcsRUFDWCxTQUFTLEVBQ1QsZUFBZSxFQUNmLE9BQU8sRUFDUCxNQUFNLEVBQ04sUUFBUSxHQUdULE1BQU0sT0FBTyxDQUFDO0FBSWYsT0FBTyxLQUFLLGVBQWUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RCxPQUFPLEtBQUssTUFBTSxNQUFNLHFDQUFxQyxDQUFDO0FBRTlELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMxQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQWdEbEUsTUFBTSxxQkFBcUIsR0FBRyxnQkFBZ0IsQ0FBQztBQUUvQyxNQUFNLG1CQUFtQixHQUFHLENBQzFCLFdBQW1CLEVBQ25CLG1CQUE0QixFQUNiLEVBQUU7SUFDakIsSUFBSSxPQUFPLG1CQUFtQixLQUFLLFFBQVEsSUFBSSxtQkFBbUIsS0FBSyxFQUFFLEVBQUUsQ0FBQztRQUMxRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBQ0QsT0FBTztRQUNMLG1CQUFtQixFQUFFLFVBQVUsV0FBVyxLQUFLLHFCQUFxQixHQUFHO0tBQ3hFLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixNQUFNLGtCQUFrQixHQUFHLENBQUMsWUFBa0MsRUFBRSxFQUFFO0lBQ2hFLElBQUksWUFBWSxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3pCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELE9BQU8sZUFBZSxDQUFDLGVBQWUsQ0FBQyxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUM7QUFDM0QsQ0FBQyxDQUFDO0FBRUYsTUFBTSxn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LE1BQU0sQ0FBQyxRQUFRLEdBQUksQ0FBQztJQUN2RSxDQUFDO0lBRUQsT0FBTyxDQUNMLGVBQ0UsR0FBRyxFQUFFLFlBQVksRUFDakIsU0FBUyxFQUFFLEVBQUUsQ0FDWCxlQUFlLENBQUMsU0FBUyxDQUFDLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxDQUFDLEVBQ2pELE9BQU8sRUFBRSxTQUFTLEVBQ2xCLFNBQVMsQ0FDVixFQUNELElBQUksRUFBQyxPQUFPLGFBRVgsU0FBUyxFQUNWLGVBQ0UsU0FBUyxFQUFFLEVBQUUsQ0FDWCxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxDQUFDLEVBQzVDLE9BQU8sRUFBRSxJQUFJLENBQ2QsRUFDRCxJQUFJLEVBQUMsVUFBVSxhQUVkLFFBQVEsRUFDUixZQUFZLElBQ1QsSUFDRixDQUNQLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICB1c2VDYWxsYmFjayxcbiAgdXNlRWZmZWN0LFxuICB1c2VMYXlvdXRFZmZlY3QsXG4gIHVzZU1lbW8sXG4gIHVzZVJlZixcbiAgdXNlU3RhdGUsXG4gIHR5cGUgQ1NTUHJvcGVydGllcyxcbiAgdHlwZSBKU1gsXG59IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHR5cGUgeyBEYXRhVGFibGVCcmVha3BvaW50IH0gZnJvbSAnLi90YWJsZUJyZWFrcG9pbnRzLmpzJztcbmltcG9ydCB0eXBlIHsgRGF0YVRhYmxlQ29sdW1uLCBEYXRhVGFibGVLaW5kLCBHZXRSb3dJZCB9IGZyb20gJy4vRGF0YVRhYmxlLmpzJztcbmltcG9ydCAqIGFzIGRhdGFUYWJsZVN0eWxlcyBmcm9tICcuL0RhdGFUYWJsZS5jc3MuanMnO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gJy4vVmlydHVhbGl6ZWRDb25uZWN0aW9uVGFibGUuY3NzLmpzJztcblxuaW1wb3J0IHsgY3ggfSBmcm9tICcuLi8uLi90aGVtZS90b29scy5qcyc7XG5pbXBvcnQgeyB1c2VVaVRyYW5zbGF0aW9uIH0gZnJvbSAnLi4vLi4vaTE4bi91c2VVaVRyYW5zbGF0aW9uLmpzJztcbmltcG9ydCB0eXBlIHsgU2xvdENsYXNzZXMgfSBmcm9tICcuLi8uLi9zdHlsZXMvc2xvdHMuanMnO1xuXG5leHBvcnQgdHlwZSBWaXJ0dWFsaXphdGlvbkNvbmZpZyA9IHtcbiAgZW5hYmxlZDogYm9vbGVhbjtcbiAgcm93SGVpZ2h0UHg6IG51bWJlcjtcbiAgb3ZlcnNjYW46IG51bWJlcjtcbn07XG5cbmV4cG9ydCB0eXBlIEluZmluaXRlU2Nyb2xsQ29uZmlnID0ge1xuICBlbmFibGVkOiBib29sZWFuO1xuICB0aHJlc2hvbGRQeD86IG51bWJlcjtcbiAgYXV0b0xvYWQ/OiBib29sZWFuO1xufTtcblxudHlwZSBEYXRhVGFibGVTbG90ID1cbiAgfCAnY29udGFpbmVyJ1xuICB8ICdoZWFkZXInXG4gIHwgJ2hlYWRlclJvdydcbiAgfCAnaGVhZGVyQ2VsbCdcbiAgfCAncHJpbWFyeUhlYWRlckNlbGwnXG4gIHwgJ2JvZHknXG4gIHwgJ3JvdydcbiAgfCAncm93RXZlbidcbiAgfCAncm93T2RkJ1xuICB8ICdjZWxsJ1xuICB8ICdwcmltYXJ5Q2VsbCdcbiAgfCAnZW1wdHlSb3cnXG4gIHwgJ2VtcHR5Q2VsbCc7XG5cbmV4cG9ydCB0eXBlIFZpcnR1YWxpemVkQ29ubmVjdGlvblRhYmxlUHJvcHM8Um93PiA9IHtcbiAgY29sdW1uczogcmVhZG9ubHkgRGF0YVRhYmxlQ29sdW1uPFJvdz5bXTtcbiAgcm93czogcmVhZG9ubHkgUm93W107XG4gIGdldFJvd0lkOiBHZXRSb3dJZDxSb3c+O1xuICBlbXB0eVN0YXRlPzogSlNYLkVsZW1lbnQ7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgZ3JpZFRlbXBsYXRlQ29sdW1ucz86IHN0cmluZztcbiAga2luZD86IERhdGFUYWJsZUtpbmQ7XG4gIGNsYXNzZXM/OiBTbG90Q2xhc3NlczxEYXRhVGFibGVTbG90PjtcblxuICB2aXJ0dWFsaXphdGlvbj86IFZpcnR1YWxpemF0aW9uQ29uZmlnO1xuXG4gIGluZmluaXRlU2Nyb2xsPzogSW5maW5pdGVTY3JvbGxDb25maWc7XG4gIGhhc05leHRQYWdlPzogYm9vbGVhbjtcbiAgaXNMb2FkaW5nTW9yZT86IGJvb2xlYW47XG4gIG9uTG9hZE1vcmU/OiAoKSA9PiB2b2lkO1xufTtcblxuY29uc3QgREVGQVVMVF9URU1QTEFURV9DRUxMID0gJ21pbm1heCgwLCAxZnIpJztcblxuY29uc3QgYnVpbGRJbmxpbmVUZW1wbGF0ZSA9IChcbiAgY29sdW1uQ291bnQ6IG51bWJlcixcbiAgZ3JpZFRlbXBsYXRlQ29sdW1ucz86IHN0cmluZyxcbik6IENTU1Byb3BlcnRpZXMgPT4ge1xuICBpZiAodHlwZW9mIGdyaWRUZW1wbGF0ZUNvbHVtbnMgPT09ICdzdHJpbmcnICYmIGdyaWRUZW1wbGF0ZUNvbHVtbnMgIT09ICcnKSB7XG4gICAgcmV0dXJuIHsgZ3JpZFRlbXBsYXRlQ29sdW1ucyB9O1xuICB9XG4gIHJldHVybiB7XG4gICAgZ3JpZFRlbXBsYXRlQ29sdW1uczogYHJlcGVhdCgke2NvbHVtbkNvdW50fSwgJHtERUZBVUxUX1RFTVBMQVRFX0NFTEx9KWAsXG4gIH07XG59O1xuXG5jb25zdCBnZXRWaXNpYmlsaXR5Q2xhc3MgPSAobWluVmlzaWJsZUF0PzogRGF0YVRhYmxlQnJlYWtwb2ludCkgPT4ge1xuICBpZiAobWluVmlzaWJsZUF0ID09IG51bGwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4gZGF0YVRhYmxlU3R5bGVzLmhpZGVCZWxvd1JlY2lwZSh7IG1pblZpc2libGVBdCB9KTtcbn07XG5cbmNvbnN0IGZpbmRTY3JvbGxQYXJlbnQgPSAoZWw6IEhUTUxFbGVtZW50IHwgbnVsbCk6IEhUTUxFbGVtZW50IHwgbnVsbCA9PiB7XG4gIGxldCBjdXJyZW50OiBIVE1MRWxlbWVudCB8IG51bGwgPSBlbDtcbiAgd2hpbGUgKGN1cnJlbnQgIT0gbnVsbCkge1xuICAgIGNvbnN0IHN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoY3VycmVudCk7XG4gICAgY29uc3QgeyBvdmVyZmxvd1kgfSA9IHN0eWxlO1xuICAgIGlmIChcbiAgICAgIG92ZXJmbG93WSA9PT0gJ2F1dG8nIHx8XG4gICAgICBvdmVyZmxvd1kgPT09ICdzY3JvbGwnIHx8XG4gICAgICBvdmVyZmxvd1kgPT09ICdvdmVybGF5J1xuICAgICkge1xuICAgICAgcmV0dXJuIGN1cnJlbnQ7XG4gICAgfVxuICAgIGN1cnJlbnQgPSBjdXJyZW50LnBhcmVudEVsZW1lbnQ7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59O1xuXG50eXBlIFZpcnR1YWxXaW5kb3cgPSB7XG4gIHN0YXJ0SW5kZXg6IG51bWJlcjtcbiAgZW5kSW5kZXg6IG51bWJlcjtcbn07XG5cbmNvbnN0IGNsYW1wID0gKHZhbHVlOiBudW1iZXIsIG1pbjogbnVtYmVyLCBtYXg6IG51bWJlcik6IG51bWJlciA9PiB7XG4gIHJldHVybiBNYXRoLm1pbihtYXgsIE1hdGgubWF4KG1pbiwgdmFsdWUpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBWaXJ0dWFsaXplZENvbm5lY3Rpb25UYWJsZSA9IDxSb3csPih7XG4gIGNvbHVtbnMsXG4gIHJvd3MsXG4gIGdldFJvd0lkLFxuICBlbXB0eVN0YXRlLFxuICBjbGFzc05hbWUsXG4gIGdyaWRUZW1wbGF0ZUNvbHVtbnMsXG4gIGtpbmQsXG4gIGNsYXNzZXMsXG4gIHZpcnR1YWxpemF0aW9uLFxuICBpbmZpbml0ZVNjcm9sbCxcbiAgaGFzTmV4dFBhZ2UgPSBmYWxzZSxcbiAgaXNMb2FkaW5nTW9yZSA9IGZhbHNlLFxuICBvbkxvYWRNb3JlLFxufTogVmlydHVhbGl6ZWRDb25uZWN0aW9uVGFibGVQcm9wczxSb3c+KTogSlNYLkVsZW1lbnQgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVVpVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgcmVzb2x2ZWRLaW5kOiBEYXRhVGFibGVLaW5kID0ga2luZCA/PyAnZGVmYXVsdCc7XG4gIGNvbnN0IGNvbnRhaW5lclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IGJvZHlSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuICBjb25zdCBzZW50aW5lbFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IHNjcm9sbFBhcmVudFJlZiA9IHVzZVJlZjxIVE1MRWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCByYWZSZWYgPSB1c2VSZWY8bnVtYmVyIHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IGxvYWRNb3JlQ29vbGRvd25SZWYgPSB1c2VSZWYoZmFsc2UpO1xuXG4gIGNvbnN0IGlzVmlydHVhbGl6ZWQgPSB2aXJ0dWFsaXphdGlvbj8uZW5hYmxlZCA9PT0gdHJ1ZTtcbiAgY29uc3Qgcm93SGVpZ2h0UHggPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoIWlzVmlydHVhbGl6ZWQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbmZpZ3VyZWRSb3dIZWlnaHQgPSB2aXJ0dWFsaXphdGlvbi5yb3dIZWlnaHRQeDtcbiAgICBpZiAoXG4gICAgICB0eXBlb2YgY29uZmlndXJlZFJvd0hlaWdodCA9PT0gJ251bWJlcicgJiZcbiAgICAgIE51bWJlci5pc0Zpbml0ZShjb25maWd1cmVkUm93SGVpZ2h0KSAmJlxuICAgICAgY29uZmlndXJlZFJvd0hlaWdodCA+IDBcbiAgICApIHtcbiAgICAgIHJldHVybiBjb25maWd1cmVkUm93SGVpZ2h0O1xuICAgIH1cblxuICAgIHJldHVybiA1NjtcbiAgfSwgW2lzVmlydHVhbGl6ZWQsIHZpcnR1YWxpemF0aW9uXSk7XG5cbiAgY29uc3Qgb3ZlcnNjYW4gPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoIWlzVmlydHVhbGl6ZWQpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIGxldCBuZXh0T3ZlcnNjYW4gPSAxMDtcbiAgICBjb25zdCBjb25maWd1cmVkT3ZlcnNjYW4gPSB2aXJ0dWFsaXphdGlvbi5vdmVyc2NhbjtcbiAgICBpZiAoXG4gICAgICB0eXBlb2YgY29uZmlndXJlZE92ZXJzY2FuID09PSAnbnVtYmVyJyAmJlxuICAgICAgTnVtYmVyLmlzRmluaXRlKGNvbmZpZ3VyZWRPdmVyc2NhbilcbiAgICApIHtcbiAgICAgIG5leHRPdmVyc2NhbiA9IGNvbmZpZ3VyZWRPdmVyc2NhbjtcbiAgICB9XG4gICAgcmV0dXJuIE1hdGgubWF4KDAsIG5leHRPdmVyc2Nhbik7XG4gIH0sIFtpc1ZpcnR1YWxpemVkLCB2aXJ0dWFsaXphdGlvbl0pO1xuXG4gIGNvbnN0IHRocmVzaG9sZFB4ID0gaW5maW5pdGVTY3JvbGw/LnRocmVzaG9sZFB4ID8/IDgwMDtcbiAgY29uc3QgYXV0b0xvYWQgPSBpbmZpbml0ZVNjcm9sbD8uYXV0b0xvYWQgPz8gdHJ1ZTtcbiAgY29uc3QgaW5maW5pdGVFbmFibGVkID0gaW5maW5pdGVTY3JvbGw/LmVuYWJsZWQgPT09IHRydWU7XG5cbiAgY29uc3QgY2FuTG9hZE1vcmUgPVxuICAgIGluZmluaXRlRW5hYmxlZCAmJiBoYXNOZXh0UGFnZSAmJiAhaXNMb2FkaW5nTW9yZSAmJiBvbkxvYWRNb3JlICE9IG51bGw7XG5cbiAgY29uc3QgdHJpZ2dlckxvYWRNb3JlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChvbkxvYWRNb3JlID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgb25Mb2FkTW9yZSgpO1xuICB9LCBbb25Mb2FkTW9yZV0pO1xuXG4gIGNvbnN0IFt3aW5kb3dTdGF0ZSwgc2V0V2luZG93U3RhdGVdID0gdXNlU3RhdGU8VmlydHVhbFdpbmRvdz4oKCkgPT4ge1xuICAgIHJldHVybiB7IHN0YXJ0SW5kZXg6IDAsIGVuZEluZGV4OiBNYXRoLm1pbihyb3dzLmxlbmd0aCwgNTApIH07XG4gIH0pO1xuXG4gIGNvbnN0IGlubGluZVRlbXBsYXRlU3R5bGUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gYnVpbGRJbmxpbmVUZW1wbGF0ZShjb2x1bW5zLmxlbmd0aCwgZ3JpZFRlbXBsYXRlQ29sdW1ucyk7XG4gIH0sIFtjb2x1bW5zLmxlbmd0aCwgZ3JpZFRlbXBsYXRlQ29sdW1uc10pO1xuXG4gIGNvbnN0IHJlbmRlclJvdyA9IHVzZUNhbGxiYWNrKFxuICAgIChyb3c6IFJvdywgaW5kZXg6IG51bWJlciwgaGVpZ2h0UHg/OiBudW1iZXIgfCBudWxsKTogSlNYLkVsZW1lbnQgPT4ge1xuICAgICAgY29uc3Qgcm93SWQgPSBnZXRSb3dJZChyb3csIGluZGV4KTtcbiAgICAgIGNvbnN0IHJvd0NsYXNzZXMgPSBbXG4gICAgICAgIGRhdGFUYWJsZVN0eWxlcy5yb3coeyBraW5kOiByZXNvbHZlZEtpbmQgfSksXG4gICAgICAgIGNsYXNzZXM/LnJvdyxcbiAgICAgIF07XG4gICAgICBpZiAoaW5kZXggJSAyID09PSAwKSB7XG4gICAgICAgIHJvd0NsYXNzZXMucHVzaChcbiAgICAgICAgICBkYXRhVGFibGVTdHlsZXMucm93RXZlbih7IGtpbmQ6IHJlc29sdmVkS2luZCB9KSxcbiAgICAgICAgICBjbGFzc2VzPy5yb3dFdmVuLFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcm93Q2xhc3Nlcy5wdXNoKFxuICAgICAgICAgIGRhdGFUYWJsZVN0eWxlcy5yb3dPZGQoeyBraW5kOiByZXNvbHZlZEtpbmQgfSksXG4gICAgICAgICAgY2xhc3Nlcz8ucm93T2RkLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgY29uc3Qgcm93U3R5bGU6IENTU1Byb3BlcnRpZXMgPSB7IC4uLmlubGluZVRlbXBsYXRlU3R5bGUgfTtcbiAgICAgIGlmICh0eXBlb2YgaGVpZ2h0UHggPT09ICdudW1iZXInKSB7XG4gICAgICAgIHJvd1N0eWxlLmhlaWdodCA9IGhlaWdodFB4O1xuICAgICAgfVxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPGRpdlxuICAgICAgICAgIGtleT17cm93SWR9XG4gICAgICAgICAgcm9sZT1cInJvd1wiXG4gICAgICAgICAgY2xhc3NOYW1lPXtjeCguLi5yb3dDbGFzc2VzKX1cbiAgICAgICAgICBzdHlsZT17cm93U3R5bGV9XG4gICAgICAgID5cbiAgICAgICAgICB7Y29sdW1ucy5tYXAoKGNvbHVtbikgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2VsbENsYXNzZXMgPSBbXG4gICAgICAgICAgICAgIGRhdGFUYWJsZVN0eWxlcy5jZWxsKHsga2luZDogcmVzb2x2ZWRLaW5kIH0pLFxuICAgICAgICAgICAgICBzdHlsZXMuc2luZ2xlTGluZUNlbGwsXG4gICAgICAgICAgICAgIGNsYXNzZXM/LmNlbGwsXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgY29uc3QgdmlzaWJpbGl0eUNsYXNzID0gZ2V0VmlzaWJpbGl0eUNsYXNzKGNvbHVtbi5taW5WaXNpYmxlQXQpO1xuICAgICAgICAgICAgaWYgKHZpc2liaWxpdHlDbGFzcyAhPSBudWxsKSB7XG4gICAgICAgICAgICAgIGNlbGxDbGFzc2VzLnB1c2godmlzaWJpbGl0eUNsYXNzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjb2x1bW4uY2xhc3NOYW1lICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgY2VsbENsYXNzZXMucHVzaChjb2x1bW4uY2xhc3NOYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjb2x1bW4uaXNQcmltYXJ5KSB7XG4gICAgICAgICAgICAgIGNlbGxDbGFzc2VzLnB1c2goXG4gICAgICAgICAgICAgICAgZGF0YVRhYmxlU3R5bGVzLnByaW1hcnlDZWxsLFxuICAgICAgICAgICAgICAgIGNsYXNzZXM/LnByaW1hcnlDZWxsLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPGRpdiBrZXk9e2NvbHVtbi5pZH0gcm9sZT1cImNlbGxcIiBjbGFzc05hbWU9e2N4KC4uLmNlbGxDbGFzc2VzKX0+XG4gICAgICAgICAgICAgICAge2NvbHVtbi5jZWxsKHJvdyl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KX1cbiAgICAgICAgPC9kaXY+XG4gICAgICApO1xuICAgIH0sXG4gICAgW2NsYXNzZXMsIGNvbHVtbnMsIGdldFJvd0lkLCBpbmxpbmVUZW1wbGF0ZVN0eWxlLCByZXNvbHZlZEtpbmRdLFxuICApO1xuXG4gIGNvbnN0IGNvbXB1dGVWaXJ0dWFsV2luZG93ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmICghaXNWaXJ0dWFsaXplZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBoZWlnaHQgPSByb3dIZWlnaHRQeDtcbiAgICBpZiAoaGVpZ2h0ID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgYm9keUVsID0gYm9keVJlZi5jdXJyZW50O1xuICAgIGlmIChib2R5RWwgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHNjcm9sbFBhcmVudCA9IHNjcm9sbFBhcmVudFJlZi5jdXJyZW50O1xuICAgIGNvbnN0IHZpZXdwb3J0SGVpZ2h0ID0gc2Nyb2xsUGFyZW50Py5jbGllbnRIZWlnaHQgPz8gd2luZG93LmlubmVySGVpZ2h0O1xuICAgIGNvbnN0IHBhcmVudFJlY3RUb3AgPSBzY3JvbGxQYXJlbnQ/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCA/PyAwO1xuICAgIGNvbnN0IGJvZHlSZWN0VG9wID0gYm9keUVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDtcbiAgICBjb25zdCByZWxhdGl2ZVRvcCA9IGJvZHlSZWN0VG9wIC0gcGFyZW50UmVjdFRvcDtcbiAgICBjb25zdCB2aXNpYmxlVG9wID0gTWF0aC5tYXgoMCwgLXJlbGF0aXZlVG9wKTtcbiAgICBjb25zdCB2aXNpYmxlQm90dG9tID0gdmlzaWJsZVRvcCArIHZpZXdwb3J0SGVpZ2h0O1xuXG4gICAgY29uc3QgdG90YWxIZWlnaHQgPSByb3dzLmxlbmd0aCAqIGhlaWdodDtcbiAgICBjb25zdCBjbGFtcGVkQm90dG9tID0gY2xhbXAodmlzaWJsZUJvdHRvbSwgMCwgdG90YWxIZWlnaHQpO1xuICAgIGNvbnN0IGNsYW1wZWRUb3AgPSBjbGFtcCh2aXNpYmxlVG9wLCAwLCB0b3RhbEhlaWdodCk7XG5cbiAgICBjb25zdCByYXdTdGFydCA9IE1hdGguZmxvb3IoY2xhbXBlZFRvcCAvIGhlaWdodCkgLSBvdmVyc2NhbjtcbiAgICBjb25zdCByYXdFbmQgPSBNYXRoLmNlaWwoY2xhbXBlZEJvdHRvbSAvIGhlaWdodCkgKyBvdmVyc2NhbjtcblxuICAgIGNvbnN0IHN0YXJ0SW5kZXggPSBjbGFtcChyYXdTdGFydCwgMCwgcm93cy5sZW5ndGgpO1xuICAgIGNvbnN0IGVuZEluZGV4ID0gY2xhbXAocmF3RW5kLCBzdGFydEluZGV4LCByb3dzLmxlbmd0aCk7XG5cbiAgICBzZXRXaW5kb3dTdGF0ZSgocHJldikgPT4ge1xuICAgICAgaWYgKHByZXYuc3RhcnRJbmRleCA9PT0gc3RhcnRJbmRleCAmJiBwcmV2LmVuZEluZGV4ID09PSBlbmRJbmRleCkge1xuICAgICAgICByZXR1cm4gcHJldjtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7IHN0YXJ0SW5kZXgsIGVuZEluZGV4IH07XG4gICAgfSk7XG5cbiAgICBpZiAoXG4gICAgICBhdXRvTG9hZCAmJlxuICAgICAgY2FuTG9hZE1vcmUgJiZcbiAgICAgIHRvdGFsSGVpZ2h0IC0gY2xhbXBlZEJvdHRvbSA8PSB0aHJlc2hvbGRQeCAmJlxuICAgICAgIWxvYWRNb3JlQ29vbGRvd25SZWYuY3VycmVudFxuICAgICkge1xuICAgICAgbG9hZE1vcmVDb29sZG93blJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgIHRyaWdnZXJMb2FkTW9yZSgpO1xuICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBsb2FkTW9yZUNvb2xkb3duUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgIH0sIDI1MCk7XG4gICAgfVxuICB9LCBbXG4gICAgYXV0b0xvYWQsXG4gICAgY2FuTG9hZE1vcmUsXG4gICAgaXNWaXJ0dWFsaXplZCxcbiAgICBvdmVyc2NhbixcbiAgICByb3dIZWlnaHRQeCxcbiAgICByb3dzLmxlbmd0aCxcbiAgICB0aHJlc2hvbGRQeCxcbiAgICB0cmlnZ2VyTG9hZE1vcmUsXG4gIF0pO1xuXG4gIGNvbnN0IHNjaGVkdWxlQ29tcHV0ZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAocmFmUmVmLmN1cnJlbnQgIT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICByYWZSZWYuY3VycmVudCA9IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgcmFmUmVmLmN1cnJlbnQgPSBudWxsO1xuICAgICAgY29tcHV0ZVZpcnR1YWxXaW5kb3coKTtcbiAgICB9KTtcbiAgfSwgW2NvbXB1dGVWaXJ0dWFsV2luZG93XSk7XG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzVmlydHVhbGl6ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY29udGFpbmVyID0gY29udGFpbmVyUmVmLmN1cnJlbnQ7XG4gICAgaWYgKGNvbnRhaW5lciA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHNjcm9sbFBhcmVudFJlZi5jdXJyZW50ID0gZmluZFNjcm9sbFBhcmVudChjb250YWluZXIpO1xuICAgIHNjaGVkdWxlQ29tcHV0ZSgpO1xuICB9LCBbaXNWaXJ0dWFsaXplZCwgc2NoZWR1bGVDb21wdXRlXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzVmlydHVhbGl6ZWQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGNvbnN0IHNjcm9sbFBhcmVudCA9IHNjcm9sbFBhcmVudFJlZi5jdXJyZW50O1xuICAgIGNvbnN0IHRhcmdldDogSFRNTEVsZW1lbnQgfCBXaW5kb3cgPSBzY3JvbGxQYXJlbnQgPz8gd2luZG93O1xuXG4gICAgY29uc3QgaGFuZGxlciA9ICgpID0+IHtcbiAgICAgIHNjaGVkdWxlQ29tcHV0ZSgpO1xuICAgIH07XG5cbiAgICB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlciwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBoYW5kbGVyKTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB0YXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlcik7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaGFuZGxlcik7XG4gICAgfTtcbiAgfSwgW2lzVmlydHVhbGl6ZWQsIHNjaGVkdWxlQ29tcHV0ZV0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzVmlydHVhbGl6ZWQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmICghaW5maW5pdGVFbmFibGVkIHx8ICFhdXRvTG9hZCB8fCAhY2FuTG9hZE1vcmUpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGNvbnN0IHNlbnRpbmVsID0gc2VudGluZWxSZWYuY3VycmVudDtcbiAgICBpZiAoc2VudGluZWwgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBjb25zdCBzY3JvbGxQYXJlbnQgPSBzY3JvbGxQYXJlbnRSZWYuY3VycmVudDtcblxuICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKFxuICAgICAgKGVudHJpZXMpID0+IHtcbiAgICAgICAgY29uc3QgW2VudHJ5XSA9IGVudHJpZXM7XG4gICAgICAgIGlmIChlbnRyeSA9PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVudHJ5LmlzSW50ZXJzZWN0aW5nICYmICFsb2FkTW9yZUNvb2xkb3duUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICBsb2FkTW9yZUNvb2xkb3duUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICAgIHRyaWdnZXJMb2FkTW9yZSgpO1xuICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGxvYWRNb3JlQ29vbGRvd25SZWYuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICAgIH0sIDI1MCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHJvb3Q6IHNjcm9sbFBhcmVudCxcbiAgICAgICAgcm9vdE1hcmdpbjogYDBweCAwcHggJHt0aHJlc2hvbGRQeH1weCAwcHhgLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgb2JzZXJ2ZXIub2JzZXJ2ZShzZW50aW5lbCk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICB9O1xuICB9LCBbXG4gICAgYXV0b0xvYWQsXG4gICAgY2FuTG9hZE1vcmUsXG4gICAgaW5maW5pdGVFbmFibGVkLFxuICAgIGlzVmlydHVhbGl6ZWQsXG4gICAgdGhyZXNob2xkUHgsXG4gICAgdHJpZ2dlckxvYWRNb3JlLFxuICBdKTtcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc1ZpcnR1YWxpemVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGNvbnRhaW5lciA9IGNvbnRhaW5lclJlZi5jdXJyZW50O1xuICAgIGlmIChjb250YWluZXIgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzY3JvbGxQYXJlbnRSZWYuY3VycmVudCA9IGZpbmRTY3JvbGxQYXJlbnQoY29udGFpbmVyKTtcbiAgfSwgW2lzVmlydHVhbGl6ZWRdKTtcblxuICBjb25zdCBoZWFkZXJSb3cgPSAoXG4gICAgPGRpdlxuICAgICAgY2xhc3NOYW1lPXtjeChcbiAgICAgICAgZGF0YVRhYmxlU3R5bGVzLmhlYWRlcih7IGtpbmQ6IHJlc29sdmVkS2luZCB9KSxcbiAgICAgICAgY2xhc3Nlcz8uaGVhZGVyLFxuICAgICAgKX1cbiAgICAgIHJvbGU9XCJyb3dncm91cFwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9e2N4KGRhdGFUYWJsZVN0eWxlcy5oZWFkZXJSb3csIGNsYXNzZXM/LmhlYWRlclJvdyl9XG4gICAgICAgIHJvbGU9XCJyb3dcIlxuICAgICAgICBzdHlsZT17aW5saW5lVGVtcGxhdGVTdHlsZX1cbiAgICAgID5cbiAgICAgICAge2NvbHVtbnMubWFwKChjb2x1bW4pID0+IHtcbiAgICAgICAgICBjb25zdCBoZWFkZXJDbGFzc2VzID0gW1xuICAgICAgICAgICAgZGF0YVRhYmxlU3R5bGVzLmhlYWRlckNlbGwoeyBraW5kOiByZXNvbHZlZEtpbmQgfSksXG4gICAgICAgICAgICBjbGFzc2VzPy5oZWFkZXJDZWxsLFxuICAgICAgICAgIF07XG4gICAgICAgICAgY29uc3QgdmlzaWJpbGl0eUNsYXNzID0gZ2V0VmlzaWJpbGl0eUNsYXNzKGNvbHVtbi5taW5WaXNpYmxlQXQpO1xuICAgICAgICAgIGlmICh2aXNpYmlsaXR5Q2xhc3MgIT0gbnVsbCkge1xuICAgICAgICAgICAgaGVhZGVyQ2xhc3Nlcy5wdXNoKHZpc2liaWxpdHlDbGFzcyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChjb2x1bW4uY2xhc3NOYW1lICE9IG51bGwpIHtcbiAgICAgICAgICAgIGhlYWRlckNsYXNzZXMucHVzaChjb2x1bW4uY2xhc3NOYW1lKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGNvbHVtbi5pc1ByaW1hcnkpIHtcbiAgICAgICAgICAgIGhlYWRlckNsYXNzZXMucHVzaChcbiAgICAgICAgICAgICAgZGF0YVRhYmxlU3R5bGVzLnByaW1hcnlIZWFkZXJDZWxsLFxuICAgICAgICAgICAgICBjbGFzc2VzPy5wcmltYXJ5SGVhZGVyQ2VsbCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGtleT17Y29sdW1uLmlkfVxuICAgICAgICAgICAgICByb2xlPVwiY29sdW1uaGVhZGVyXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjeCguLi5oZWFkZXJDbGFzc2VzKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge2NvbHVtbi5oZWFkZXJ9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApO1xuICAgICAgICB9KX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xuXG4gIGxldCBib2R5Um93czogSlNYLkVsZW1lbnQ7XG4gIGlmIChyb3dzLmxlbmd0aCA9PT0gMCkge1xuICAgIGJvZHlSb3dzID0gKFxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9e2N4KGRhdGFUYWJsZVN0eWxlcy5lbXB0eVJvdywgY2xhc3Nlcz8uZW1wdHlSb3cpfVxuICAgICAgICByb2xlPVwicm93XCJcbiAgICAgID5cbiAgICAgICAgPGRpdiByb2xlPVwiY2VsbFwiPlxuICAgICAgICAgIHtlbXB0eVN0YXRlID8/IChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjeChkYXRhVGFibGVTdHlsZXMuZW1wdHlDZWxsLCBjbGFzc2VzPy5lbXB0eUNlbGwpfT5cbiAgICAgICAgICAgICAge3QoJ2NvbW1vbi50YWJsZS5lbXB0eScpfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9IGVsc2UgaWYgKGlzVmlydHVhbGl6ZWQgJiYgcm93SGVpZ2h0UHggIT0gbnVsbCkge1xuICAgIGNvbnN0IHsgc3RhcnRJbmRleCwgZW5kSW5kZXggfSA9IHdpbmRvd1N0YXRlO1xuICAgIGNvbnN0IHRvcFNwYWNlckhlaWdodCA9IHN0YXJ0SW5kZXggKiByb3dIZWlnaHRQeDtcbiAgICBjb25zdCBib3R0b21TcGFjZXJIZWlnaHQgPSAocm93cy5sZW5ndGggLSBlbmRJbmRleCkgKiByb3dIZWlnaHRQeDtcbiAgICBjb25zdCBzbGljZSA9IHJvd3Muc2xpY2Uoc3RhcnRJbmRleCwgZW5kSW5kZXgpO1xuICAgIGJvZHlSb3dzID0gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5ib2R5Vmlld3BvcnR9IHJlZj17Ym9keVJlZn0+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMuc3BhY2VyfSBzdHlsZT17eyBoZWlnaHQ6IHRvcFNwYWNlckhlaWdodCB9fSAvPlxuICAgICAgICB7c2xpY2UubWFwKChyb3csIHNsaWNlSW5kZXgpID0+IHtcbiAgICAgICAgICBjb25zdCBhYnNvbHV0ZUluZGV4ID0gc3RhcnRJbmRleCArIHNsaWNlSW5kZXg7XG4gICAgICAgICAgcmV0dXJuIHJlbmRlclJvdyhyb3csIGFic29sdXRlSW5kZXgsIHJvd0hlaWdodFB4KTtcbiAgICAgICAgfSl9XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMuc3BhY2VyfSBzdHlsZT17eyBoZWlnaHQ6IGJvdHRvbVNwYWNlckhlaWdodCB9fSAvPlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICBib2R5Um93cyA9IChcbiAgICAgIDxkaXYgcmVmPXtib2R5UmVmfT5cbiAgICAgICAge3Jvd3MubWFwKChyb3csIGluZGV4KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHJlbmRlclJvdyhyb3csIGluZGV4LCBudWxsKTtcbiAgICAgICAgfSl9XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG5cbiAgbGV0IHNlbnRpbmVsTm9kZTogSlNYLkVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgaWYgKCFpc1ZpcnR1YWxpemVkICYmIGluZmluaXRlRW5hYmxlZCAmJiBhdXRvTG9hZCkge1xuICAgIHNlbnRpbmVsTm9kZSA9IDxkaXYgcmVmPXtzZW50aW5lbFJlZn0gY2xhc3NOYW1lPXtzdHlsZXMuc2VudGluZWx9IC8+O1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICByZWY9e2NvbnRhaW5lclJlZn1cbiAgICAgIGNsYXNzTmFtZT17Y3goXG4gICAgICAgIGRhdGFUYWJsZVN0eWxlcy5jb250YWluZXIoeyBraW5kOiByZXNvbHZlZEtpbmQgfSksXG4gICAgICAgIGNsYXNzZXM/LmNvbnRhaW5lcixcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHJvbGU9XCJ0YWJsZVwiXG4gICAgPlxuICAgICAge2hlYWRlclJvd31cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPXtjeChcbiAgICAgICAgICBkYXRhVGFibGVTdHlsZXMuYm9keSh7IGtpbmQ6IHJlc29sdmVkS2luZCB9KSxcbiAgICAgICAgICBjbGFzc2VzPy5ib2R5LFxuICAgICAgICApfVxuICAgICAgICByb2xlPVwicm93Z3JvdXBcIlxuICAgICAgPlxuICAgICAgICB7Ym9keVJvd3N9XG4gICAgICAgIHtzZW50aW5lbE5vZGV9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG4iXX0=
@@ -0,0 +1,9 @@
1
+ declare const DATA_TABLE_BREAKPOINT_KEYS: readonly ["sm", "md", "lg", "xl", "xxl"];
2
+ export type DataTableBreakpoint = (typeof DATA_TABLE_BREAKPOINT_KEYS)[number];
3
+ export declare const DATA_TABLE_BREAKPOINTS: Readonly<Record<"sm" | "md" | "lg" | "xl" | "xxl", number>>;
4
+ export declare const DATA_TABLE_BREAKPOINT_ENTRIES: readonly [
5
+ DataTableBreakpoint,
6
+ number
7
+ ][];
8
+ export {};
9
+ //# sourceMappingURL=tableBreakpoints.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tableBreakpoints.d.ts","sourceRoot":"","sources":["../../../src/components/data-table/tableBreakpoints.ts"],"names":[],"mappings":"AAWA,QAAA,MAAM,0BAA0B,0CAA2C,CAAC;AAE5E,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,0BAA0B,CAAC,CAAC,MAAM,CAAC,CAAC;AAoD9E,eAAO,MAAM,sBAAsB,6DAAsC,CAAC;AAE1E,eAAO,MAAM,6BAA6B,EAAE,SAAS;IACnD,mBAAmB;IACnB,MAAM;CACP,EAEC,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { containerQueries } from '../../theme/containerQueries.js';
2
+ const MIN_WIDTH_REGEX = /\(min-width:\s*(\d+(?:\.\d+)?)px\)/i;
3
+ const DATA_TABLE_BREAKPOINT_KEYS = ['sm', 'md', 'lg', 'xl', 'xxl'];
4
+ function parseMinWidth(key, query) {
5
+ const match = MIN_WIDTH_REGEX.exec(query);
6
+ if (match == null) {
7
+ throw new Error(`[DataTable] Format de media query inattendu pour le point de rupture « ${key} » : ${query}`);
8
+ }
9
+ const [, value] = match;
10
+ if (value == null) {
11
+ throw new Error(`[DataTable] Impossible d'extraire la valeur numérique pour le point de rupture « ${key} » à partir de la media query : ${query}`);
12
+ }
13
+ return Number.parseFloat(value);
14
+ }
15
+ function requireContainerQuery(key) {
16
+ const query = containerQueries[key];
17
+ if (query == null) {
18
+ throw new Error(`[DataTable] Aucun container query défini pour le point de rupture « ${key} ».`);
19
+ }
20
+ return query;
21
+ }
22
+ function computeBreakpoints() {
23
+ const result = {};
24
+ for (const key of DATA_TABLE_BREAKPOINT_KEYS) {
25
+ const query = requireContainerQuery(key);
26
+ result[key] = parseMinWidth(key, query);
27
+ }
28
+ return result;
29
+ }
30
+ export const DATA_TABLE_BREAKPOINTS = Object.freeze(computeBreakpoints());
31
+ export const DATA_TABLE_BREAKPOINT_ENTRIES = Object.entries(DATA_TABLE_BREAKPOINTS).map(([key, value]) => {
32
+ return [key, value];
33
+ });
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGVCcmVha3BvaW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2RhdGEtdGFibGUvdGFibGVCcmVha3BvaW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQVNuRSxNQUFNLGVBQWUsR0FBRyxxQ0FBcUMsQ0FBQztBQUU5RCxNQUFNLDBCQUEwQixHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBVSxDQUFDO0FBTzVFLFNBQVMsYUFBYSxDQUFDLEdBQXdCLEVBQUUsS0FBYTtJQUM1RCxNQUFNLEtBQUssR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFDLElBQUksS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ2xCLE1BQU0sSUFBSSxLQUFLLENBQ2IsMEVBQTBFLEdBQUcsUUFBUSxLQUFLLEVBQUUsQ0FDN0YsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDeEIsSUFBSSxLQUFLLElBQUksSUFBSSxFQUFFLENBQUM7UUFDbEIsTUFBTSxJQUFJLEtBQUssQ0FDYixvRkFBb0YsR0FBRyxtQ0FBbUMsS0FBSyxFQUFFLENBQ2xJLENBQUM7SUFDSixDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2xDLENBQUM7QUFNRCxTQUFTLHFCQUFxQixDQUFDLEdBQXdCO0lBQ3JELE1BQU0sS0FBSyxHQUFHLGdCQUFnQixDQUFDLEdBQUcsQ0FBdUIsQ0FBQztJQUMxRCxJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNsQixNQUFNLElBQUksS0FBSyxDQUNiLHVFQUF1RSxHQUFHLEtBQUssQ0FDaEYsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFNRCxTQUFTLGtCQUFrQjtJQUN6QixNQUFNLE1BQU0sR0FBRyxFQUF5QyxDQUFDO0lBRXpELEtBQUssTUFBTSxHQUFHLElBQUksMEJBQTBCLEVBQUUsQ0FBQztRQUM3QyxNQUFNLEtBQUssR0FBRyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsYUFBYSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO0FBRTFFLE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUdwQyxNQUFNLENBQUMsT0FBTyxDQUFDLHNCQUFzQixDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtJQUNoRSxPQUFPLENBQUMsR0FBMEIsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUM3QyxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbnRhaW5lclF1ZXJpZXMgfSBmcm9tICcuLi8uLi90aGVtZS9jb250YWluZXJRdWVyaWVzLmpzJztcblxuLyoqXG4gKiBMZXMgdGFibGVhdXggcmVwb3NlbnQgc3VyIGxlcyBtw6ptZXMgbGFyZ2V1cnMgbWluaW1hbGVzIHF1ZSBsZXMgY29udGFpbmVyIHF1ZXJpZXNcbiAqIGdsb2JhbGVzLiBPbiBkw6lyaXZlIGRvbmMgbGVzIHZhbGV1cnMgZHluYW1pcXVlbWVudCBhZmluIGQnw6l2aXRlciB0b3V0IGTDqWNhbGFnZVxuICogZW50cmUgbGEgdmlzaWJpbGl0w6kgZGVzIGNvbG9ubmVzIChtaW5WaXNpYmxlQXQpIGV0IGxhIGdyaWxsZSBDU1MgZGVzIGNvbXBvc2FudHNcbiAqIHF1aSBjb25zb21tZW50IERhdGFUYWJsZS5cbiAqL1xuXG5jb25zdCBNSU5fV0lEVEhfUkVHRVggPSAvXFwobWluLXdpZHRoOlxccyooXFxkKyg/OlxcLlxcZCspPylweFxcKS9pO1xuXG5jb25zdCBEQVRBX1RBQkxFX0JSRUFLUE9JTlRfS0VZUyA9IFsnc20nLCAnbWQnLCAnbGcnLCAneGwnLCAneHhsJ10gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIERhdGFUYWJsZUJyZWFrcG9pbnQgPSAodHlwZW9mIERBVEFfVEFCTEVfQlJFQUtQT0lOVF9LRVlTKVtudW1iZXJdO1xuXG4vKipcbiAqIEV4dHJhaXQgbGEgdmFsZXVyIG51bcOpcmlxdWUgZCd1bmUgbWVkaWEgcXVlcnkgYChtaW4td2lkdGg6IFhYWHB4KWAuXG4gKi9cbmZ1bmN0aW9uIHBhcnNlTWluV2lkdGgoa2V5OiBEYXRhVGFibGVCcmVha3BvaW50LCBxdWVyeTogc3RyaW5nKTogbnVtYmVyIHtcbiAgY29uc3QgbWF0Y2ggPSBNSU5fV0lEVEhfUkVHRVguZXhlYyhxdWVyeSk7XG4gIGlmIChtYXRjaCA9PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYFtEYXRhVGFibGVdIEZvcm1hdCBkZSBtZWRpYSBxdWVyeSBpbmF0dGVuZHUgcG91ciBsZSBwb2ludCBkZSBydXB0dXJlIMKrICR7a2V5fSDCuyA6ICR7cXVlcnl9YCxcbiAgICApO1xuICB9XG5cbiAgY29uc3QgWywgdmFsdWVdID0gbWF0Y2g7XG4gIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYFtEYXRhVGFibGVdIEltcG9zc2libGUgZCdleHRyYWlyZSBsYSB2YWxldXIgbnVtw6lyaXF1ZSBwb3VyIGxlIHBvaW50IGRlIHJ1cHR1cmUgwqsgJHtrZXl9IMK7IMOgIHBhcnRpciBkZSBsYSBtZWRpYSBxdWVyeSA6ICR7cXVlcnl9YCxcbiAgICApO1xuICB9XG4gIHJldHVybiBOdW1iZXIucGFyc2VGbG9hdCh2YWx1ZSk7XG59XG5cbi8qKlxuICogUmV0b3VybmUgbGEgbWVkaWEgcXVlcnkgZMOpY2xhcsOpZSBwb3VyIHVuIHBvaW50IGRlIHJ1cHR1cmUgZG9ubsOpLCBhdmVjXG4gKiBkaWFnbm9zdGljIGV4cGxpY2l0ZSBzaSBlbGxlIGVzdCBhYnNlbnRlLlxuICovXG5mdW5jdGlvbiByZXF1aXJlQ29udGFpbmVyUXVlcnkoa2V5OiBEYXRhVGFibGVCcmVha3BvaW50KTogc3RyaW5nIHtcbiAgY29uc3QgcXVlcnkgPSBjb250YWluZXJRdWVyaWVzW2tleV0gYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBpZiAocXVlcnkgPT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBbRGF0YVRhYmxlXSBBdWN1biBjb250YWluZXIgcXVlcnkgZMOpZmluaSBwb3VyIGxlIHBvaW50IGRlIHJ1cHR1cmUgwqsgJHtrZXl9IMK7LmAsXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBxdWVyeTtcbn1cblxuLyoqXG4gKiBDb25zdHJ1aXQgbGUgbWFwcGluZyBkZXMgYnJlYWtwb2ludHMgRGF0YVRhYmxlIGVuIHNlIHN5bmNocm9uaXNhbnQgc3VyIGxlc1xuICogY29udGFpbmVyIHF1ZXJpZXMgZ2xvYmFsZXMuXG4gKi9cbmZ1bmN0aW9uIGNvbXB1dGVCcmVha3BvaW50cygpOiBSZWNvcmQ8RGF0YVRhYmxlQnJlYWtwb2ludCwgbnVtYmVyPiB7XG4gIGNvbnN0IHJlc3VsdCA9IHt9IGFzIFJlY29yZDxEYXRhVGFibGVCcmVha3BvaW50LCBudW1iZXI+O1xuXG4gIGZvciAoY29uc3Qga2V5IG9mIERBVEFfVEFCTEVfQlJFQUtQT0lOVF9LRVlTKSB7XG4gICAgY29uc3QgcXVlcnkgPSByZXF1aXJlQ29udGFpbmVyUXVlcnkoa2V5KTtcbiAgICByZXN1bHRba2V5XSA9IHBhcnNlTWluV2lkdGgoa2V5LCBxdWVyeSk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgY29uc3QgREFUQV9UQUJMRV9CUkVBS1BPSU5UUyA9IE9iamVjdC5mcmVlemUoY29tcHV0ZUJyZWFrcG9pbnRzKCkpO1xuXG5leHBvcnQgY29uc3QgREFUQV9UQUJMRV9CUkVBS1BPSU5UX0VOVFJJRVM6IHJlYWRvbmx5IFtcbiAgRGF0YVRhYmxlQnJlYWtwb2ludCxcbiAgbnVtYmVyLFxuXVtdID0gT2JqZWN0LmVudHJpZXMoREFUQV9UQUJMRV9CUkVBS1BPSU5UUykubWFwKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgcmV0dXJuIFtrZXkgYXMgRGF0YVRhYmxlQnJlYWtwb2ludCwgdmFsdWVdO1xufSk7XG4iXX0=