@galaxy-io/dls 1.6.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (538) hide show
  1. package/README.md +47 -50
  2. package/biome/index.json +74 -0
  3. package/biome/plugins/no-hex-literal.grit +20 -0
  4. package/biome/plugins/no-inline-style.grit +13 -0
  5. package/biome/plugins/no-margin.grit +9 -0
  6. package/biome/plugins/warn/no-hex-literal.grit +23 -0
  7. package/biome/plugins/warn/no-inline-style.grit +13 -0
  8. package/biome/plugins/warn/no-margin.grit +9 -0
  9. package/dist/a11y/FocusScope.d.ts +44 -0
  10. package/dist/a11y/FocusScope.js +229 -0
  11. package/dist/a11y/VisuallyHidden.d.ts +21 -0
  12. package/dist/a11y/VisuallyHidden.js +30 -0
  13. package/dist/avatar/Avatar.d.ts +56 -14
  14. package/dist/avatar/Avatar.js +250 -96
  15. package/dist/avatar/AvatarGroup.d.ts +43 -0
  16. package/dist/avatar/AvatarGroup.js +153 -0
  17. package/dist/backgrounds/GridBackground.d.ts +48 -0
  18. package/dist/backgrounds/GridBackground.js +146 -0
  19. package/dist/beacons/Beacon.d.ts +86 -22
  20. package/dist/beacons/Beacon.js +170 -47
  21. package/dist/brand/GalaxyFilamentWordmark.d.ts +30 -0
  22. package/dist/brand/GalaxyFilamentWordmark.js +39 -0
  23. package/dist/brand/GalaxyLogomark.d.ts +26 -0
  24. package/dist/brand/GalaxyLogomark.js +41 -0
  25. package/dist/brand/GalaxyLogomarkAnimation.d.ts +36 -0
  26. package/dist/brand/GalaxyLogomarkAnimation.js +107 -0
  27. package/dist/brand/GalaxyWordmark.d.ts +30 -0
  28. package/dist/brand/GalaxyWordmark.js +63 -0
  29. package/dist/brand/assets/galaxy-logomark-animation.js +136678 -0
  30. package/dist/brand/brandMark.d.ts +26 -0
  31. package/dist/brand/brandMark.js +35 -0
  32. package/dist/buttons/Button.d.ts +148 -59
  33. package/dist/buttons/Button.js +437 -227
  34. package/dist/buttons/ButtonGroup.d.ts +38 -0
  35. package/dist/buttons/ButtonGroup.js +68 -0
  36. package/dist/buttons/CopyButton.d.ts +77 -0
  37. package/dist/buttons/CopyButton.js +65 -0
  38. package/dist/charts/AreaChart.d.ts +49 -0
  39. package/dist/charts/AreaChart.js +31 -0
  40. package/dist/charts/BarChart.d.ts +54 -67
  41. package/dist/charts/BarChart.js +136 -116
  42. package/dist/charts/ChartAxis.d.ts +35 -40
  43. package/dist/charts/ChartAxis.js +114 -90
  44. package/dist/charts/ChartCategoryTargets.d.ts +12 -26
  45. package/dist/charts/ChartCategoryTargets.js +32 -20
  46. package/dist/charts/ChartFrame.d.ts +69 -116
  47. package/dist/charts/ChartFrame.js +253 -119
  48. package/dist/charts/ChartGroupProvider.d.ts +30 -41
  49. package/dist/charts/ChartGroupProvider.js +20 -7
  50. package/dist/charts/ChartLegend.d.ts +27 -48
  51. package/dist/charts/ChartLegend.js +206 -125
  52. package/dist/charts/ChartMarkTargets.d.ts +12 -28
  53. package/dist/charts/ChartMarkTargets.js +33 -20
  54. package/dist/charts/ChartPrimitives.d.ts +50 -305
  55. package/dist/charts/ChartPrimitives.js +65 -413
  56. package/dist/charts/ChartTooltip.d.ts +20 -26
  57. package/dist/charts/ChartTooltip.js +77 -40
  58. package/dist/charts/Heatmap.d.ts +35 -0
  59. package/dist/charts/Heatmap.js +295 -0
  60. package/dist/charts/LineChart.d.ts +54 -47
  61. package/dist/charts/LineChart.js +159 -117
  62. package/dist/charts/PieChart.d.ts +32 -53
  63. package/dist/charts/PieChart.js +149 -135
  64. package/dist/charts/Sparkline.d.ts +107 -0
  65. package/dist/charts/Sparkline.js +244 -0
  66. package/dist/charts/StatChart.d.ts +37 -13
  67. package/dist/charts/StatChart.js +82 -35
  68. package/dist/charts/barChartGeometry.d.ts +138 -86
  69. package/dist/charts/barChartGeometry.js +122 -101
  70. package/dist/charts/barChartLegend.d.ts +14 -18
  71. package/dist/charts/barChartLegend.js +18 -13
  72. package/dist/charts/chartFormat.d.ts +12 -18
  73. package/dist/charts/chartFormat.js +20 -52
  74. package/dist/charts/chartPalette.d.ts +33 -0
  75. package/dist/charts/chartPalette.js +68 -0
  76. package/dist/charts/chartScales.d.ts +41 -108
  77. package/dist/charts/chartScales.js +62 -128
  78. package/dist/charts/constants.d.ts +96 -256
  79. package/dist/charts/constants.js +105 -275
  80. package/dist/charts/heatmapGeometry.d.ts +95 -0
  81. package/dist/charts/heatmapGeometry.js +155 -0
  82. package/dist/charts/lineChartGeometry.d.ts +108 -58
  83. package/dist/charts/lineChartGeometry.js +120 -78
  84. package/dist/charts/pieChartGeometry.d.ts +66 -40
  85. package/dist/charts/pieChartGeometry.js +68 -38
  86. package/dist/charts/types.d.ts +197 -466
  87. package/dist/charts/types.js +55 -144
  88. package/dist/charts/useCartesianChartLayout.d.ts +28 -59
  89. package/dist/charts/useCartesianChartLayout.js +47 -32
  90. package/dist/charts/useChartDimensions.d.ts +19 -40
  91. package/dist/charts/useChartDimensions.js +40 -56
  92. package/dist/charts/useChartFormatters.d.ts +6 -15
  93. package/dist/charts/useChartFormatters.js +4 -9
  94. package/dist/charts/useChartInteraction.d.ts +47 -116
  95. package/dist/charts/useChartInteraction.js +95 -71
  96. package/dist/charts/useChartTooltipPosition.d.ts +29 -39
  97. package/dist/charts/useChartTooltipPosition.js +14 -5
  98. package/dist/charts/useSeriesColorResolver.d.ts +11 -33
  99. package/dist/charts/useSeriesColorResolver.js +19 -12
  100. package/dist/chips/Chip.d.ts +155 -44
  101. package/dist/chips/Chip.js +329 -155
  102. package/dist/chips/ChipGroup.d.ts +53 -0
  103. package/dist/chips/ChipGroup.js +98 -0
  104. package/dist/drawer/Drawer.d.ts +81 -17
  105. package/dist/drawer/Drawer.js +370 -65
  106. package/dist/dropdown/Dropdown.d.ts +80 -63
  107. package/dist/dropdown/Dropdown.js +127 -129
  108. package/dist/editor/CodeEditor.d.ts +119 -40
  109. package/dist/editor/CodeEditor.js +490 -400
  110. package/dist/editor/CodeEditorReactWidget.d.ts +20 -17
  111. package/dist/editor/CodeEditorReactWidget.js +28 -21
  112. package/dist/feedback/Alert.d.ts +49 -0
  113. package/dist/feedback/Alert.js +172 -0
  114. package/dist/feedback/EmptyState.d.ts +39 -0
  115. package/dist/feedback/EmptyState.js +109 -0
  116. package/dist/feedback/ProgressBar.d.ts +125 -0
  117. package/dist/feedback/ProgressBar.js +183 -0
  118. package/dist/feedback/ProgressCircle.d.ts +99 -0
  119. package/dist/feedback/ProgressCircle.js +187 -0
  120. package/dist/feedback/Skeleton.d.ts +69 -0
  121. package/dist/feedback/Skeleton.js +130 -0
  122. package/dist/feedback/Spinner.d.ts +63 -0
  123. package/dist/feedback/Spinner.js +141 -0
  124. package/dist/fonts.css +70 -0
  125. package/dist/hooks/internal/useIsClient.d.ts +2 -0
  126. package/dist/hooks/internal/useIsClient.js +14 -0
  127. package/dist/hooks/useClipboard.d.ts +19 -0
  128. package/dist/hooks/useClipboard.js +45 -0
  129. package/dist/hooks/useControlledOpenState.d.ts +21 -0
  130. package/dist/hooks/useControlledOpenState.js +19 -0
  131. package/dist/hooks/useControlledState.d.ts +19 -0
  132. package/dist/hooks/useControlledState.js +22 -0
  133. package/dist/hooks/useDebouncedValue.d.ts +14 -0
  134. package/dist/hooks/useDebouncedValue.js +33 -0
  135. package/dist/hooks/useDisclosure.d.ts +26 -0
  136. package/dist/hooks/useDisclosure.js +36 -0
  137. package/dist/hooks/useDismiss.d.ts +23 -27
  138. package/dist/hooks/useDismiss.js +39 -27
  139. package/dist/hooks/useElementClientSize.d.ts +10 -10
  140. package/dist/hooks/useElementClientSize.js +8 -11
  141. package/dist/hooks/useElementWidth.d.ts +6 -13
  142. package/dist/hooks/useElementWidth.js +6 -14
  143. package/dist/hooks/useField.d.ts +47 -0
  144. package/dist/hooks/useField.js +40 -0
  145. package/dist/hooks/useHotkey.d.ts +77 -0
  146. package/dist/hooks/useHotkey.js +246 -0
  147. package/dist/hooks/useIsMac.d.ts +12 -0
  148. package/dist/hooks/useIsMac.js +27 -0
  149. package/dist/hooks/useIsomorphicLayoutEffect.d.ts +17 -0
  150. package/dist/hooks/useIsomorphicLayoutEffect.js +20 -0
  151. package/dist/hooks/useLocalStorage.d.ts +28 -0
  152. package/dist/hooks/useLocalStorage.js +145 -0
  153. package/dist/hooks/useMediaQuery.d.ts +11 -0
  154. package/dist/hooks/useMediaQuery.js +23 -0
  155. package/dist/hooks/usePrefersReducedMotion.d.ts +12 -0
  156. package/dist/hooks/usePrefersReducedMotion.js +25 -0
  157. package/dist/hooks/useResize.d.ts +42 -62
  158. package/dist/hooks/useResize.js +43 -31
  159. package/dist/icons/Icon.d.ts +64 -37
  160. package/dist/icons/Icon.js +96 -37
  161. package/dist/icons/internal/IconSlot.d.ts +10 -0
  162. package/dist/icons/internal/IconSlot.js +32 -0
  163. package/dist/inputs/CheckboxGroup.d.ts +115 -0
  164. package/dist/inputs/CheckboxGroup.js +183 -0
  165. package/dist/inputs/CheckboxInput.d.ts +98 -28
  166. package/dist/inputs/CheckboxInput.js +218 -88
  167. package/dist/inputs/ColorInput.d.ts +115 -29
  168. package/dist/inputs/ColorInput.js +748 -326
  169. package/dist/inputs/CopyInput.d.ts +49 -20
  170. package/dist/inputs/CopyInput.js +57 -49
  171. package/dist/inputs/CronInput.d.ts +94 -0
  172. package/dist/inputs/CronInput.js +618 -0
  173. package/dist/inputs/DateInput.d.ts +175 -28
  174. package/dist/inputs/DateInput.js +1109 -451
  175. package/dist/inputs/DurationInput.d.ts +101 -0
  176. package/dist/inputs/DurationInput.js +441 -0
  177. package/dist/inputs/Field.d.ts +75 -0
  178. package/dist/inputs/Field.js +247 -0
  179. package/dist/inputs/Fieldset.d.ts +53 -0
  180. package/dist/inputs/Fieldset.js +149 -0
  181. package/dist/inputs/FileInput.d.ts +110 -0
  182. package/dist/inputs/FileInput.js +476 -0
  183. package/dist/inputs/Input.d.ts +148 -187
  184. package/dist/inputs/Input.js +339 -259
  185. package/dist/inputs/KeyValueInput.d.ts +120 -0
  186. package/dist/inputs/KeyValueInput.js +383 -0
  187. package/dist/inputs/MultiSelectInput.d.ts +165 -54
  188. package/dist/inputs/MultiSelectInput.js +175 -559
  189. package/dist/inputs/NumberInput.d.ts +65 -9
  190. package/dist/inputs/NumberInput.js +197 -40
  191. package/dist/inputs/PasswordInput.d.ts +17 -12
  192. package/dist/inputs/PasswordInput.js +33 -33
  193. package/dist/inputs/PinInput.d.ts +117 -0
  194. package/dist/inputs/PinInput.js +364 -0
  195. package/dist/inputs/RadioGroup.d.ts +115 -0
  196. package/dist/inputs/RadioGroup.js +179 -0
  197. package/dist/inputs/RadioInput.d.ts +87 -24
  198. package/dist/inputs/RadioInput.js +182 -95
  199. package/dist/inputs/SearchInput.d.ts +66 -0
  200. package/dist/inputs/SearchInput.js +156 -0
  201. package/dist/inputs/SelectInput.d.ts +195 -55
  202. package/dist/inputs/SelectInput.js +1308 -446
  203. package/dist/inputs/SliderInput.d.ts +150 -30
  204. package/dist/inputs/SliderInput.js +441 -186
  205. package/dist/inputs/SwitchInput.d.ts +109 -0
  206. package/dist/inputs/SwitchInput.js +248 -0
  207. package/dist/inputs/TagInput.d.ts +117 -0
  208. package/dist/inputs/TagInput.js +408 -0
  209. package/dist/inputs/TextAreaInput.d.ts +146 -44
  210. package/dist/inputs/TextAreaInput.js +292 -198
  211. package/dist/inputs/TextInput.d.ts +4 -13
  212. package/dist/inputs/TextInput.js +13 -48
  213. package/dist/inputs/ToggleInput.d.ts +120 -22
  214. package/dist/inputs/ToggleInput.js +262 -116
  215. package/dist/inputs/internal/bareField.d.ts +18 -0
  216. package/dist/inputs/internal/bareField.js +38 -0
  217. package/dist/inputs/internal/devWarn.d.ts +7 -0
  218. package/dist/inputs/internal/devWarn.js +30 -0
  219. package/dist/inputs/internal/fieldFrame.d.ts +34 -0
  220. package/dist/inputs/internal/fieldFrame.js +64 -0
  221. package/dist/inputs/internal/fieldWiring.d.ts +50 -0
  222. package/dist/inputs/internal/fieldWiring.js +38 -0
  223. package/dist/inputs/internal/innerButton.d.ts +2 -0
  224. package/dist/inputs/internal/innerButton.js +24 -0
  225. package/dist/inputs/internal/ownField.d.ts +45 -0
  226. package/dist/inputs/internal/ownField.js +58 -0
  227. package/dist/inputs/internal/predicates.d.ts +9 -0
  228. package/dist/inputs/internal/predicates.js +11 -0
  229. package/dist/inputs/internal/useComboboxPopover.d.ts +46 -0
  230. package/dist/inputs/internal/useComboboxPopover.js +92 -0
  231. package/dist/json/JsonViewer.d.ts +62 -0
  232. package/dist/json/JsonViewer.js +483 -0
  233. package/dist/layout/Box.d.ts +87 -0
  234. package/dist/layout/Box.js +109 -0
  235. package/dist/layout/Divider.d.ts +25 -0
  236. package/dist/layout/Divider.js +70 -0
  237. package/dist/layout/Flex.d.ts +139 -0
  238. package/dist/layout/Flex.js +165 -0
  239. package/dist/layout/FlexItem.d.ts +72 -0
  240. package/dist/layout/FlexItem.js +84 -0
  241. package/dist/layout/Grid.d.ts +140 -0
  242. package/dist/layout/Grid.js +178 -0
  243. package/dist/layout/Portal.d.ts +29 -0
  244. package/dist/layout/Portal.js +27 -0
  245. package/dist/layout/ResizablePanels.d.ts +88 -0
  246. package/dist/layout/ResizablePanels.js +198 -0
  247. package/dist/layout/ResizeHandle.d.ts +48 -0
  248. package/dist/layout/ResizeHandle.js +143 -0
  249. package/dist/layout/ScrollArea.d.ts +30 -0
  250. package/dist/layout/ScrollArea.js +138 -0
  251. package/dist/links/Link.d.ts +101 -1
  252. package/dist/links/Link.js +166 -4
  253. package/dist/lists/BulletedList.d.ts +25 -7
  254. package/dist/lists/BulletedList.js +72 -27
  255. package/dist/lists/DescriptionList.d.ts +91 -0
  256. package/dist/lists/DescriptionList.js +147 -0
  257. package/dist/menu/ContextMenu.d.ts +64 -0
  258. package/dist/menu/ContextMenu.js +34 -0
  259. package/dist/menu/Menu.d.ts +280 -0
  260. package/dist/menu/Menu.js +1003 -0
  261. package/dist/modal/ConfirmDialog.d.ts +55 -0
  262. package/dist/modal/ConfirmDialog.js +151 -0
  263. package/dist/modal/Modal.d.ts +64 -14
  264. package/dist/modal/Modal.js +189 -48
  265. package/dist/navigation/Breadcrumbs.d.ts +65 -0
  266. package/dist/navigation/Breadcrumbs.js +243 -0
  267. package/dist/navigation/CommandPalette.d.ts +83 -0
  268. package/dist/navigation/CommandPalette.js +509 -0
  269. package/dist/navigation/Pagination.d.ts +87 -0
  270. package/dist/navigation/Pagination.js +300 -0
  271. package/dist/navigation/SidebarNav.d.ts +107 -0
  272. package/dist/navigation/SidebarNav.js +341 -0
  273. package/dist/navigation/Stepper.d.ts +52 -0
  274. package/dist/navigation/Stepper.js +207 -0
  275. package/dist/navigation/Tabs.d.ts +113 -0
  276. package/dist/navigation/Tabs.js +543 -0
  277. package/dist/navigation/Topbar.d.ts +20 -0
  278. package/dist/navigation/Topbar.js +62 -0
  279. package/dist/overlay/OverlayProvider.d.ts +28 -32
  280. package/dist/overlay/OverlayProvider.js +42 -93
  281. package/dist/overlay/useOverlay.d.ts +88 -12
  282. package/dist/overlay/useOverlay.js +220 -43
  283. package/dist/overlays/Popover.d.ts +114 -0
  284. package/dist/overlays/Popover.js +389 -0
  285. package/dist/shapes/Circle.d.ts +84 -8
  286. package/dist/shapes/Circle.js +122 -20
  287. package/dist/shapes/Square.d.ts +84 -8
  288. package/dist/shapes/Square.js +123 -20
  289. package/dist/styles/mixins.d.ts +35 -0
  290. package/dist/styles/mixins.js +60 -0
  291. package/dist/styles.css +1 -202
  292. package/dist/table/InfiniteSpreadsheet.d.ts +140 -10
  293. package/dist/table/InfiniteSpreadsheet.js +762 -225
  294. package/dist/table/InfiniteTable.d.ts +116 -14
  295. package/dist/table/InfiniteTable.js +287 -429
  296. package/dist/table/SpreadsheetCellEditor.d.ts +54 -6
  297. package/dist/table/SpreadsheetCellEditor.js +163 -84
  298. package/dist/table/TableCore.d.ts +252 -0
  299. package/dist/table/TableCore.js +1077 -0
  300. package/dist/table/VirtualizedInfiniteTable.d.ts +104 -14
  301. package/dist/table/VirtualizedInfiniteTable.js +280 -219
  302. package/dist/table/types.d.ts +66 -244
  303. package/dist/table/types.js +0 -51
  304. package/dist/table/useInfiniteScrollSentinel.d.ts +25 -21
  305. package/dist/table/useInfiniteScrollSentinel.js +38 -30
  306. package/dist/table/useSpreadsheetCellNavigation.d.ts +44 -0
  307. package/dist/table/useSpreadsheetCellNavigation.js +141 -0
  308. package/dist/table/useTableColumnLayout.d.ts +90 -25
  309. package/dist/table/useTableColumnLayout.js +255 -50
  310. package/dist/table/useTableKeyboardNavigation.d.ts +32 -21
  311. package/dist/table/useTableKeyboardNavigation.js +95 -71
  312. package/dist/table/useTableRowSelection.d.ts +24 -25
  313. package/dist/table/useTableRowSelection.js +57 -84
  314. package/dist/table/useTableVirtualizer.d.ts +20 -0
  315. package/dist/table/useTableVirtualizer.js +48 -0
  316. package/dist/text/Bold.d.ts +5 -6
  317. package/dist/text/Bold.js +16 -15
  318. package/dist/text/Code.d.ts +5 -6
  319. package/dist/text/Code.js +16 -25
  320. package/dist/text/CodeBlock.d.ts +77 -0
  321. package/dist/text/CodeBlock.js +373 -0
  322. package/dist/text/EditableText.d.ts +55 -15
  323. package/dist/text/EditableText.js +153 -135
  324. package/dist/text/Ellipsis.d.ts +34 -8
  325. package/dist/text/Ellipsis.js +55 -23
  326. package/dist/text/Kbd.d.ts +72 -0
  327. package/dist/text/Kbd.js +284 -0
  328. package/dist/text/MarkdownText.d.ts +27 -10
  329. package/dist/text/MarkdownText.js +317 -300
  330. package/dist/text/RequiredMarker.d.ts +17 -5
  331. package/dist/text/RequiredMarker.js +34 -36
  332. package/dist/text/Selectable.d.ts +5 -6
  333. package/dist/text/Selectable.js +16 -13
  334. package/dist/text/Span.d.ts +82 -0
  335. package/dist/text/Span.js +115 -0
  336. package/dist/text/Text.d.ts +128 -41
  337. package/dist/text/Text.js +209 -76
  338. package/dist/theme/GalaxyProvider.d.ts +75 -0
  339. package/dist/theme/GalaxyProvider.js +223 -0
  340. package/dist/theme/ThemeSwitcher.d.ts +52 -0
  341. package/dist/theme/ThemeSwitcher.js +94 -0
  342. package/dist/theme/enums.d.ts +118 -0
  343. package/dist/theme/enums.js +144 -0
  344. package/dist/theme/tokens/dark.d.ts +2 -0
  345. package/dist/theme/tokens/dark.js +275 -0
  346. package/dist/theme/tokens/generate.d.ts +15 -0
  347. package/dist/theme/tokens/generate.js +47 -0
  348. package/dist/theme/tokens/light.d.ts +2 -0
  349. package/dist/theme/tokens/light.js +274 -0
  350. package/dist/theme/tokens/palette.d.ts +14 -0
  351. package/dist/theme/tokens/palette.js +153 -0
  352. package/dist/theme/tokens/scales.d.ts +26 -0
  353. package/dist/theme/tokens/scales.js +154 -0
  354. package/dist/theme/tokens/t.d.ts +3 -0
  355. package/dist/theme/tokens/t.js +25 -0
  356. package/dist/theme/tokens/types.d.ts +189 -0
  357. package/dist/theme/tokens/types.js +0 -0
  358. package/dist/theme/useGalaxyTheme.d.ts +46 -0
  359. package/dist/theme/useGalaxyTheme.js +36 -0
  360. package/dist/theme/useInverseScope.d.ts +18 -0
  361. package/dist/theme/useInverseScope.js +33 -0
  362. package/dist/three/GalaxyLogomark3D.d.ts +46 -0
  363. package/dist/three/GalaxyLogomark3D.js +134 -0
  364. package/dist/three/assets/galaxy-logomark.js +4 -0
  365. package/dist/three/galaxyLogomark3DScene.d.ts +27 -0
  366. package/dist/three/galaxyLogomark3DScene.js +165 -0
  367. package/dist/timeline/Timeline.d.ts +99 -0
  368. package/dist/timeline/Timeline.js +269 -0
  369. package/dist/toast/Toast.d.ts +43 -19
  370. package/dist/toast/Toast.js +130 -89
  371. package/dist/toast/ToastProvider.d.ts +23 -23
  372. package/dist/toast/ToastProvider.js +298 -101
  373. package/dist/toast/ToastViewport.d.ts +12 -0
  374. package/dist/toast/ToastViewport.js +210 -0
  375. package/dist/toast/useToast.d.ts +139 -5
  376. package/dist/toast/useToast.js +15 -13
  377. package/dist/tokens.css +654 -0
  378. package/dist/tooltip/Tooltip.d.ts +64 -44
  379. package/dist/tooltip/Tooltip.js +280 -73
  380. package/dist/tooltip/internal/LazyTooltip.d.ts +7 -0
  381. package/dist/tooltip/internal/LazyTooltip.js +53 -0
  382. package/dist/transform/Fade.d.ts +33 -11
  383. package/dist/transform/Fade.js +71 -19
  384. package/dist/transform/Flasher.d.ts +25 -0
  385. package/dist/transform/Flasher.js +39 -0
  386. package/dist/transform/Rotate.d.ts +24 -12
  387. package/dist/transform/Rotate.js +36 -22
  388. package/dist/transform/ScaleFade.d.ts +36 -11
  389. package/dist/transform/ScaleFade.js +86 -28
  390. package/dist/transform/internal/CollapseMotion.d.ts +10 -0
  391. package/dist/transform/internal/CollapseMotion.js +65 -0
  392. package/dist/tree/Tree.d.ts +85 -0
  393. package/dist/tree/Tree.js +387 -0
  394. package/dist/tree/treeRow.d.ts +39 -0
  395. package/dist/tree/treeRow.js +75 -0
  396. package/dist/utils/colors.d.ts +46 -13
  397. package/dist/utils/colors.js +92 -34
  398. package/dist/utils/css.d.ts +23 -0
  399. package/dist/utils/css.js +30 -0
  400. package/dist/utils/format.d.ts +58 -0
  401. package/dist/utils/format.js +220 -0
  402. package/dist/vite/index.d.ts +16 -0
  403. package/dist/vite/index.js +52 -0
  404. package/dist/widget/Widget.d.ts +164 -48
  405. package/dist/widget/Widget.js +335 -96
  406. package/dist/widget/WidgetGroup.d.ts +36 -0
  407. package/dist/widget/WidgetGroup.js +103 -0
  408. package/package.json +851 -157
  409. package/dist/accordion/Accordion.d.ts +0 -54
  410. package/dist/accordion/Accordion.js +0 -183
  411. package/dist/assets/components/GalaxyFilamentWordmarkDark.d.ts +0 -3
  412. package/dist/assets/components/GalaxyFilamentWordmarkDark.js +0 -14
  413. package/dist/assets/components/GalaxyFilamentWordmarkLight.d.ts +0 -3
  414. package/dist/assets/components/GalaxyFilamentWordmarkLight.js +0 -14
  415. package/dist/assets/components/GalaxyLogomarkDark.d.ts +0 -3
  416. package/dist/assets/components/GalaxyLogomarkDark.js +0 -11
  417. package/dist/assets/components/GalaxyLogomarkLight.d.ts +0 -3
  418. package/dist/assets/components/GalaxyLogomarkLight.js +0 -17
  419. package/dist/assets/components/GalaxyWordmarkDark.d.ts +0 -3
  420. package/dist/assets/components/GalaxyWordmarkDark.js +0 -15
  421. package/dist/assets/components/GalaxyWordmarkLight.d.ts +0 -3
  422. package/dist/assets/components/GalaxyWordmarkLight.js +0 -28
  423. package/dist/assets/models/galaxy-animation.js +0 -136666
  424. package/dist/assets/models/galaxy-logomark.js +0 -4
  425. package/dist/avatar/AvatarShimmer.d.ts +0 -30
  426. package/dist/avatar/AvatarShimmer.js +0 -22
  427. package/dist/backgrounds/CellGridBackground.d.ts +0 -24
  428. package/dist/backgrounds/CellGridBackground.js +0 -44
  429. package/dist/backgrounds/CrossGridBackground.d.ts +0 -26
  430. package/dist/backgrounds/CrossGridBackground.js +0 -49
  431. package/dist/backgrounds/DotGridBackground.d.ts +0 -24
  432. package/dist/backgrounds/DotGridBackground.js +0 -47
  433. package/dist/badge/Badge.d.ts +0 -42
  434. package/dist/badge/Badge.js +0 -99
  435. package/dist/charts/ChartEmptyState.d.ts +0 -17
  436. package/dist/charts/ChartEmptyState.js +0 -29
  437. package/dist/charts/ProgressBar.d.ts +0 -29
  438. package/dist/charts/ProgressBar.js +0 -65
  439. package/dist/charts/chartTheme.d.ts +0 -18
  440. package/dist/charts/chartTheme.js +0 -26
  441. package/dist/containers/FlexItem.d.ts +0 -50
  442. package/dist/containers/FlexItem.js +0 -91
  443. package/dist/containers/FlexWrapper.d.ts +0 -96
  444. package/dist/containers/FlexWrapper.js +0 -143
  445. package/dist/containers/GridWrapper.d.ts +0 -79
  446. package/dist/containers/GridWrapper.js +0 -125
  447. package/dist/containers/Spacing.d.ts +0 -23
  448. package/dist/containers/Spacing.js +0 -59
  449. package/dist/containers/Wrapper.d.ts +0 -26
  450. package/dist/containers/Wrapper.js +0 -54
  451. package/dist/dividers/HorizontalDivider.d.ts +0 -7
  452. package/dist/dividers/HorizontalDivider.js +0 -39
  453. package/dist/dividers/VerticalDivider.d.ts +0 -6
  454. package/dist/dividers/VerticalDivider.js +0 -21
  455. package/dist/icons/GalaxyFilamentWordmark.d.ts +0 -11
  456. package/dist/icons/GalaxyFilamentWordmark.js +0 -25
  457. package/dist/icons/GalaxyLogomark.d.ts +0 -13
  458. package/dist/icons/GalaxyLogomark.js +0 -27
  459. package/dist/icons/GalaxyLogomark3D.d.ts +0 -56
  460. package/dist/icons/GalaxyLogomark3D.js +0 -319
  461. package/dist/icons/GalaxyLogomarkAnimation.d.ts +0 -18
  462. package/dist/icons/GalaxyLogomarkAnimation.js +0 -48
  463. package/dist/icons/GalaxyWordmark.d.ts +0 -11
  464. package/dist/icons/GalaxyWordmark.js +0 -25
  465. package/dist/inputs/MultiTextInput.d.ts +0 -32
  466. package/dist/inputs/MultiTextInput.js +0 -180
  467. package/dist/inputs/SwitcherInput.d.ts +0 -27
  468. package/dist/inputs/SwitcherInput.js +0 -64
  469. package/dist/inputs/hooks.d.ts +0 -10
  470. package/dist/inputs/hooks.js +0 -22
  471. package/dist/overlay/constants.d.ts +0 -28
  472. package/dist/overlay/constants.js +0 -37
  473. package/dist/resizable/HorizontalResizeHandle.d.ts +0 -17
  474. package/dist/resizable/HorizontalResizeHandle.js +0 -38
  475. package/dist/resizable/VerticalResizeHandle.d.ts +0 -18
  476. package/dist/resizable/VerticalResizeHandle.js +0 -39
  477. package/dist/table/SpreadsheetCell.d.ts +0 -21
  478. package/dist/table/SpreadsheetCell.js +0 -71
  479. package/dist/table/SpreadsheetHeaderCell.d.ts +0 -23
  480. package/dist/table/SpreadsheetHeaderCell.js +0 -91
  481. package/dist/table/SpreadsheetMenuItem.d.ts +0 -14
  482. package/dist/table/SpreadsheetMenuItem.js +0 -33
  483. package/dist/table/SpreadsheetPrimitives.d.ts +0 -172
  484. package/dist/table/SpreadsheetPrimitives.js +0 -105
  485. package/dist/table/SpreadsheetRow.d.ts +0 -33
  486. package/dist/table/SpreadsheetRow.js +0 -73
  487. package/dist/table/SpreadsheetRowActionCell.d.ts +0 -14
  488. package/dist/table/SpreadsheetRowActionCell.js +0 -51
  489. package/dist/table/TableExpandCell.d.ts +0 -11
  490. package/dist/table/TableExpandCell.js +0 -24
  491. package/dist/table/TableExpandedRow.d.ts +0 -16
  492. package/dist/table/TableExpandedRow.js +0 -77
  493. package/dist/table/TableHeaderCellContent.d.ts +0 -30
  494. package/dist/table/TableHeaderCellContent.js +0 -48
  495. package/dist/table/TablePrimitives.d.ts +0 -313
  496. package/dist/table/TablePrimitives.js +0 -302
  497. package/dist/table/TableSelectCell.d.ts +0 -18
  498. package/dist/table/TableSelectCell.js +0 -27
  499. package/dist/table/TableStatusRow.d.ts +0 -18
  500. package/dist/table/TableStatusRow.js +0 -50
  501. package/dist/table/useSpreadsheetEditing.d.ts +0 -13
  502. package/dist/table/useSpreadsheetEditing.js +0 -41
  503. package/dist/table/useTableColumnResize.d.ts +0 -38
  504. package/dist/table/useTableColumnResize.js +0 -155
  505. package/dist/table/useTableRowExpansion.d.ts +0 -24
  506. package/dist/table/useTableRowExpansion.js +0 -62
  507. package/dist/table/utils.d.ts +0 -50
  508. package/dist/table/utils.js +0 -78
  509. package/dist/text/HotKeys.d.ts +0 -30
  510. package/dist/text/HotKeys.js +0 -74
  511. package/dist/text/Paragraph.d.ts +0 -33
  512. package/dist/text/Paragraph.js +0 -83
  513. package/dist/text/TextShimmer.d.ts +0 -14
  514. package/dist/text/TextShimmer.js +0 -34
  515. package/dist/theme/GalaxyTheme.d.ts +0 -67
  516. package/dist/theme/GalaxyTheme.js +0 -119
  517. package/dist/theme/constants.d.ts +0 -8
  518. package/dist/theme/constants.js +0 -38
  519. package/dist/theme/index.d.ts +0 -6
  520. package/dist/theme/index.js +0 -7
  521. package/dist/theme/types.d.ts +0 -195
  522. package/dist/theme/types.js +0 -10
  523. package/dist/theme/typography.d.ts +0 -2
  524. package/dist/theme/typography.js +0 -73
  525. package/dist/theme/variants/dark.d.ts +0 -2
  526. package/dist/theme/variants/dark.js +0 -125
  527. package/dist/theme/variants/light.d.ts +0 -2
  528. package/dist/theme/variants/light.js +0 -125
  529. package/dist/toast/ToastContainer.d.ts +0 -10
  530. package/dist/toast/ToastContainer.js +0 -31
  531. package/dist/toast/ToastWrapper.d.ts +0 -6
  532. package/dist/toast/ToastWrapper.js +0 -27
  533. package/dist/transform/Flash.d.ts +0 -7
  534. package/dist/transform/Flash.js +0 -18
  535. package/dist/transform/Spin.d.ts +0 -14
  536. package/dist/transform/Spin.js +0 -25
  537. package/dist/utils/linaria.d.ts +0 -1
  538. package/dist/utils/linaria.js +0 -8
@@ -1,285 +1,115 @@
1
- import { ChartPalette } from "./types.js";
1
+ import { RADIUS, SPACE } from "../theme/tokens/scales.js";
2
2
  //#region src/charts/constants.ts
3
3
  /**
4
- * Layout and motion tokens for the chart components.
5
- *
6
- * This module is evaluated by Linaria at build time — its constants are
7
- * interpolated statically into styled templates — so it must stay free of
8
- * component imports. Pulling React, framer-motion or Phosphor in here would
9
- * drag them into build-time evaluation.
10
- */
11
- var DEFAULT_CHART_MARGIN = {
12
- top: 12,
13
- right: 16,
14
- bottom: 36,
15
- left: 52
16
- };
17
- /**
18
- * Gap between a value-axis tick label and the plot edge.
19
- *
20
- * The label box is `margin.left - VALUE_AXIS_TICK_GAP` wide, so the axis
21
- * geometry follows the margin instead of hardcoding an offset.
22
- */
23
- var VALUE_AXIS_TICK_GAP = 12;
24
- /** Height of a value-axis tick label box in px. */
4
+ * @internal Geometry and interaction constants for the chart family.
5
+ *
6
+ * wyw evaluates this module at build time (its values are interpolated into templates), so it
7
+ * imports nothing but the token scales: no React, no d3, no component. Values equal to a scale
8
+ * step are derived from `SPACE` / `RADIUS`; the rest are literals with a one-line reason.
9
+ */
10
+ var px = (value) => Number.parseFloat(value);
11
+ /** @internal Height of one caption line (`caption` type step): every axis label and title. */
12
+ var CAPTION_LINE = px(SPACE[12]);
13
+ /** @internal Clear space between an axis label (or title) and the plot, its grid, or the next label row. */
14
+ var AXIS_LABEL_GAP = px(SPACE[8]);
15
+ /** @internal Grid lines extend this far past both plot edges: a short lead-in, clear of the labels. */
16
+ var GRID_LINE_BLEED = px(SPACE[4]);
17
+ /** @internal Space above the plot: half a value label box (its text clears the top) plus air for a dot. */
18
+ var PLOT_INSET_TOP = px(SPACE[8]);
19
+ /** @internal Space right of the plot: the grid bleed plus air for a line's end dot and cap. */
20
+ var PLOT_INSET_RIGHT = px(SPACE[8]);
21
+ /** @internal Gap between a value tick label and the plot edge: the grid bleed plus the label gap. */
22
+ var VALUE_AXIS_TICK_GAP = GRID_LINE_BLEED + AXIS_LABEL_GAP;
23
+ /** @internal Height of a value tick label box: taller than the caption line so it centers on its tick. */
25
24
  var VALUE_AXIS_LABEL_HEIGHT = 20;
26
- /** Height of the category-axis label box in px. */
27
- var CATEGORY_AXIS_LABEL_HEIGHT = 24;
28
- /** Gap between the plot's bottom edge and the category labels, in px. */
29
- var CATEGORY_AXIS_LABEL_GAP = 8;
30
- /** Band reserved for an axis title, in px. Sized for one CAPTION line. */
31
- var AXIS_TITLE_BAND = 18;
32
- /**
33
- * Clear space between an axis title and its tick labels, in px.
34
- *
35
- * The category axis gets this for free: its labels sit in a 24px box and its
36
- * title in an 18px band, and centring a CAPTION line in each leaves roughly this
37
- * much air between the two. The value axis has no such slack — its title band
38
- * abuts the label box exactly — so without reserving it here a wide tick number
39
- * runs straight into the rotated title, and the two axes visibly disagree.
40
- */
41
- var AXIS_TITLE_GAP = 8;
42
- /** Default approximate tick count on the value axis. */
25
+ /** @internal Gap between the plot's bottom edge and the category labels. */
26
+ var CATEGORY_AXIS_LABEL_GAP = AXIS_LABEL_GAP;
27
+ /** @internal Height of the category label box: one caption line, so the label gap is the visible gap. */
28
+ var CATEGORY_AXIS_LABEL_HEIGHT = CAPTION_LINE;
29
+ /** @internal Space below the plot: label gap + label line. */
30
+ var PLOT_INSET_BOTTOM = CATEGORY_AXIS_LABEL_GAP + CATEGORY_AXIS_LABEL_HEIGHT;
31
+ /** @internal Band reserved for an axis title: a caption line with 2px of air each side, so a rotated title stays inside the chart. */
32
+ var AXIS_TITLE_BAND = px(SPACE[16]);
33
+ /** @internal Clear space between an axis title and its tick labels. */
34
+ var AXIS_TITLE_GAP = AXIS_LABEL_GAP;
35
+ /** @internal Minimum distance between value ticks (a caption line plus the label gap): closer ticks are thinned so labels never crowd. */
36
+ var MIN_VALUE_TICK_SPACING = CAPTION_LINE + AXIS_LABEL_GAP;
37
+ /** @internal Default approximate tick count on the value axis. */
43
38
  var DEFAULT_VALUE_TICK_COUNT = 5;
44
- /** Corner radius applied to the outer end of a wide bar, in px. */
45
- var BAR_RADIUS = 4;
46
- /** Corner radius for bars narrower than {@link NARROW_BAR_WIDTH}, in px. */
47
- var BAR_RADIUS_NARROW = 2;
48
- /** Bars below this width use the smaller radius so the curve doesn't dominate. */
49
- var NARROW_BAR_WIDTH = 40;
50
- /**
51
- * Px shaved off a stacked segment's covered edge to separate it from its
52
- * neighbour.
53
- *
54
- * Keep this a whole number. The geometry snaps every stack boundary to a whole
55
- * pixel first, so an integer gap renders at exactly the same size at every seam;
56
- * a fractional one would land differently against the device pixel grid from one
57
- * boundary to the next and read as uneven.
58
- *
59
- * Applied to every segment except the one sitting on the baseline, so each seam
60
- * gets a gap and the bar still meets the axis flush.
61
- */
62
- var STACK_SEGMENT_GAP = 2;
63
- /** Minimum rendered height for a non-zero bar, in px. */
64
- var MIN_BAR_LENGTH = 2;
65
- /**
66
- * Target gaps in px between groups, and between bars within a group.
67
- *
68
- * The within-group gap must stay clearly smaller than the between-group gap —
69
- * that ratio is the only thing making a group read as a group. When the two are
70
- * close, the eye has nothing to bind a group's bars together and the chart reads
71
- * as one long row of unrelated bars.
72
- */
73
- var GROUP_GAP_COMFORTABLE = 24;
74
- var BAR_GAP_COMFORTABLE = 6;
75
- var GROUP_GAP_MEDIUM = 16;
76
- var BAR_GAP_MEDIUM = 4;
77
- var GROUP_GAP_TIGHT = 12;
78
- var BAR_GAP_TIGHT = 3;
79
- /**
80
- * Fraction of its available slot a bar actually fills.
81
- *
82
- * Bars sized to consume every last pixel of their group read as heavy, and the
83
- * chart becomes a wall of colour rather than a set of measurements. Holding them
84
- * back leaves air on both sides of each group without touching the gap between
85
- * neighbouring bars.
86
- */
87
- var BAR_WIDTH_RATIO = .8;
88
- /**
89
- * Ceiling on a single bar's thickness, in px.
90
- *
91
- * Without it a two- or three-category chart divides the whole plot between a
92
- * handful of bars and produces slabs — the width stops carrying information the
93
- * moment it exceeds what the eye needs to compare heights.
94
- */
95
- var MAX_BAR_WIDTH = 44;
96
- /** Below this many bars the chart always uses comfortable spacing. */
97
- var MIN_BARS_FOR_TIGHT_SPACING = 13;
98
- /**
99
- * Ceiling on a gap, as a share of the space it divides.
100
- *
101
- * The gaps above are absolute pixel values chosen from chart-wide density, which
102
- * says nothing about how much room a *single* category actually got. Forty
103
- * categories in a 650px plot leave a 16px step, and a 24px gap subtracted from
104
- * that goes negative — the width lands on its 1px floor and every bar renders as
105
- * a hairline. Capping the gap proportionally keeps it honest at any density: it
106
- * stays exactly as specified whenever there is room, and degrades smoothly when
107
- * there is not.
108
- */
109
- var MAX_GAP_SHARE = .3;
110
- /** Plot widths above this stay comfortable; below the tight threshold go tight. */
111
- var WIDTH_FOR_MEDIUM_SPACING = 650;
112
- var WIDTH_FOR_TIGHT_SPACING = 500;
113
- /** Grid lines extend this far past both plot edges, in px. */
114
- var GRID_LINE_BLEED = 12;
115
- var DEFAULT_LINE_STROKE_WIDTH = 1.5;
116
- /** Radius of the dot marking a point on a hovered category, in px. */
39
+ /** @internal Width of one caption character, for arithmetic label sizing (SSR-safe, no DOM). */
40
+ var CAPTION_CHAR_WIDTH_PX = 6.2;
41
+ /** @internal Floor of the auto-sized left gutter. */
42
+ var MIN_AUTO_INSET_LEFT = px(SPACE[32]);
43
+ /** @internal Ceiling of the auto-sized left gutter, so a wide formatter cannot eat the plot (no step). */
44
+ var MAX_AUTO_INSET_LEFT = 96;
45
+ /** @internal The left gutter grows in steps of this, so plots stay aligned across charts. */
46
+ var AUTO_INSET_LEFT_STEP = px(SPACE[8]);
47
+ /** @internal Minimum space between category labels before the axis thins them (rows: one caption line apart). */
48
+ var MIN_CATEGORY_LABEL_GAP = px(SPACE[8]);
49
+ /** @internal Insets around a radial plot, which draws no axes. */
50
+ var RADIAL_PLOT_INSET = px(SPACE[8]);
51
+ /** @internal Every line's stroke width (no stroke token; the 1.x weight). */
52
+ var LINE_STROKE_WIDTH = 1.5;
53
+ /** @internal Radius of a point dot (the 1.x dot; no step). */
117
54
  var LINE_POINT_RADIUS = 3.5;
118
- /** Opacity of the area fill under a line. */
119
- var LINE_AREA_OPACITY = .12;
120
- /** Gap between slices, in radians. */
121
- var PIE_PAD_ANGLE = .012;
122
- /** Slice corner radius in px. */
123
- var PIE_CORNER_RADIUS = 2;
124
- /** Inner radius as a fraction of the outer radius, for donut mode. */
125
- var PIE_DONUT_INNER_RATIO = .62;
126
- /**
127
- * Share of the narrowest slice that its two inner pad insets may consume.
128
- *
129
- * d3 turns {@link PIE_PAD_ANGLE} into a *constant linear* gap, and holding that
130
- * width at radius `r` costs an angular inset of `asin(gap / 2r)` — unbounded as
131
- * `r` approaches zero. When the two insets no longer fit inside a slice's own
132
- * span, d3 collapses that slice's inner edge rather than sweeping backwards. The
133
- * collapse is what makes a hole-less pie look wrong: the gap edge stops being
134
- * radial, so gaps sit at visibly different widths and lean at slight angles, and
135
- * it bites hardest between the *narrowest* slices, where the span runs out
136
- * first.
137
- *
138
- * So the inner radius is solved for rather than guessed: pick the radius that
139
- * keeps both insets inside the narrowest slice, with this much of it spent. At
140
- * 0.7 the measured gap spread is 1.01× (against 1.46× when the inner edge is
141
- * left to collapse), and the remaining 30% is what absorbs the corner radius.
142
- */
143
- var PIE_MAX_INSET_SHARE = .7;
144
- /**
145
- * Ceiling on the auto-derived inner radius, as a share of the outer radius.
146
- *
147
- * The radius needed grows without bound as the narrowest slice shrinks, so a
148
- * single sliver would otherwise turn a pie into a donut. Past this point the
149
- * hole is doing more visual damage than the uneven gap it fixes, so the gap is
150
- * allowed to degrade instead — never worse than it renders today.
151
- */
152
- var PIE_MAX_AUTO_INNER_RATIO = .06;
153
- /** How far outside the arc the tooltip anchors, in px. */
154
- var PIE_TOOLTIP_ANCHOR_INSET = 8;
155
- /**
156
- * Default share below which a slice is folded into an "Other" bucket.
157
- *
158
- * Slivers this thin are unreadable and effectively unhoverable, so grouping
159
- * them communicates more than rendering each faithfully.
160
- */
161
- var PIE_MIN_SLICE_SHARE = .02;
162
- /** React key used for the bucket that absorbs slices below the fold threshold. */
163
- var AGGREGATED_SLICE_KEY = "__other__";
164
- /** Margin around a pie, which needs no axis gutters. */
165
- var PIE_CHART_MARGIN = {
166
- top: 8,
167
- right: 8,
168
- bottom: 8,
169
- left: 8
170
- };
171
- /**
172
- * Duration in ms for the tooltip's fade and glide.
173
- *
174
- * Sits inside the 75–150ms band the DLS uses everywhere else. Only the tooltip
175
- * transitions — mark and legend emphasis snaps, because emphasis is feedback
176
- * and feedback that eases in reads as lag.
177
- */
178
- var CHART_TRANSITION_MS = 100;
179
- /**
180
- * Opacity ramp for the mark states.
181
- *
182
- * The grammar is inherited from the reference charts and is the opposite of the
183
- * obvious one: hovering does not brighten the hovered mark, it *softens*
184
- * everything else. `MUTED` applies to marks outside the hovered category or
185
- * series.
186
- *
187
- * The step down from ACTIVE is deliberately steep. These are large filled areas
188
- * — bars and arcs — and a filled shape still reads as present at an opacity
189
- * where a hairline would have vanished, so a timid step barely registers as a
190
- * highlight at all.
191
- */
55
+ /** @internal Dash and gap of a dashed line. */
56
+ var LINE_DASH = px(SPACE[4]);
57
+ /** @internal Opacity of an area fill (1.x `LINE_AREA_OPACITY`). */
58
+ var AREA_FILL_OPACITY = .12;
59
+ /** @internal Opacity of a stacked area band: bands never overlap, so they carry a firmer fill (AreaChart). */
60
+ var AREA_STACKED_FILL_OPACITY = .24;
61
+ /** @internal Opacity of `ChartMarkState.ACTIVE`. */
192
62
  var CHART_MARK_OPACITY_ACTIVE = 1;
63
+ /** @internal Opacity of `ChartMarkState.MUTED`: steep, so a filled mark visibly recedes. */
193
64
  var CHART_MARK_OPACITY_MUTED = .1;
194
- /**
195
- * The whisper tier, for `ChartMarkState.DIMMED`.
196
- *
197
- * Deliberately far gentler than MUTED: it is used where another affordance —
198
- * BarChart's cursor band — already marks the hovered category, so the
199
- * off-category marks only need to step back, not disappear.
200
- */
65
+ /** @internal Opacity of `ChartMarkState.DIMMED`: a whisper, where a cursor band already highlights. */
201
66
  var CHART_MARK_OPACITY_DIMMED = .4;
202
- /** Distance in px between the tooltip and its anchor. */
203
- var CHART_TOOLTIP_OFFSET = 10;
204
- /** Minimum width of the tooltip, in px. */
205
- var CHART_TOOLTIP_MIN_WIDTH = 200;
206
- /** Maximum width of the tooltip, in px. */
207
- var CHART_TOOLTIP_MAX_WIDTH = 320;
208
- /** Gap in px between the plot box and a side-placed legend. */
209
- var CHART_LEGEND_SIDE_GAP = 16;
210
- /**
211
- * Spacing in px between entries in a horizontal legend.
212
- *
213
- * Applied as each entry's *trailing padding*, not a flex gap on the row: a gap
214
- * is dead space between hover targets, and sweeping across it drops the series
215
- * isolation between every pair of entries. Because the padding lives inside
216
- * the entries, measured entry sizes already include the spacing and the fit
217
- * computation needs no separate gap term.
218
- */
219
- var CHART_LEGEND_COLUMN_GAP = 16;
220
- /** Spacing in px between entries in a vertical legend. Same contract as
221
- * {@link CHART_LEGEND_COLUMN_GAP}: trailing padding on the entry, no flex gap. */
222
- var CHART_LEGEND_VERTICAL_GAP = 8;
223
- /**
224
- * Ceiling on the collapsed-legend popover's height, in px.
225
- *
226
- * Roughly eight entries. Past that the list scrolls rather than growing into a
227
- * popover taller than the chart it annotates — the cap on *visible* entries is
228
- * the caller's `legendMaxItems`; this one only bounds the overflow list itself.
229
- */
67
+ /** @internal Corner radius on the outer end of a wide bar. */
68
+ var BAR_RADIUS = px(RADIUS.md);
69
+ /** @internal Corner radius of a bar narrower than `NARROW_BAR_WIDTH`. */
70
+ var BAR_RADIUS_NARROW = px(RADIUS.sm);
71
+ /** @internal Bars below this width use the smaller radius (1.x). */
72
+ var NARROW_BAR_WIDTH = 40;
73
+ /** @internal Seam between stacked segments; whole pixels so every seam renders alike. */
74
+ var STACK_SEGMENT_GAP = px(SPACE[2]);
75
+ /** @internal Minimum drawn length of a non-zero bar. */
76
+ var MIN_BAR_LENGTH = px(SPACE[2]);
77
+ /**
78
+ * @internal The gap between categories as a share of the category band. Gaps are proportional so
79
+ * a narrow chart keeps its bars; this share and the in-group one below reproduce the 1.x look at
80
+ * 480px and up, where the bars also hit their 44px ceiling or the gaps hit theirs.
81
+ */
82
+ var CATEGORY_GAP_RATIO = .35;
83
+ /** @internal Floor of the category gap, so neighbouring categories never touch. */
84
+ var MIN_CATEGORY_GAP = px(SPACE[2]);
85
+ /**
86
+ * @internal Ceiling of the category gap. 1.x drew 24px plus 20% of each bar slot as air, so a wide
87
+ * grouped chart showed ~40px between groups; this ceiling keeps that look.
88
+ */
89
+ var MAX_CATEGORY_GAP = px(SPACE[48]);
90
+ /** @internal The gap between bars in a group as a share of one bar's slot (the group gap binds a group). */
91
+ var BAR_GAP_RATIO = .2;
92
+ /** @internal Floor of the in-group gap: one hairline of air (no step). */
93
+ var MIN_BAR_GAP = 1;
94
+ /** @internal Ceiling of the in-group gap (the 1.x gap). */
95
+ var MAX_BAR_GAP = px(SPACE[4]);
96
+ /** @internal Gap between heatmap cells as a share of a cell's step: proportional, like the bar gaps. */
97
+ var HEATMAP_CELL_GAP_RATIO = .1;
98
+ /** @internal Floor of the heatmap cell gap: one hairline of air (no step). */
99
+ var MIN_HEATMAP_CELL_GAP = 1;
100
+ /** @internal Ceiling of the heatmap cell gap (the 1.x gap). */
101
+ var MAX_HEATMAP_CELL_GAP = px(SPACE[2]);
102
+ /** @internal Width of the seam between pie slices, constant in pixels at any radius (the stack seam). */
103
+ var PIE_SLICE_GAP = STACK_SEGMENT_GAP;
104
+ /** @internal Distance between the tooltip and its anchor. */
105
+ var CHART_TOOLTIP_OFFSET = px(SPACE[8]);
106
+ /** @internal Rows the built-in tooltip body shows before "+N more". */
107
+ var CHART_TOOLTIP_MAX_ROWS = 8;
108
+ /** @internal Gap between the plot box and a side-placed legend. */
109
+ var CHART_LEGEND_SIDE_GAP = px(SPACE[16]);
110
+ /** @internal Height cap of the "+N more" legend list (about eight entries) before it scrolls. */
230
111
  var CHART_LEGEND_OVERFLOW_MAX_HEIGHT = 208;
231
- /**
232
- * Floor on the collapsed-legend popover's width, in px, measured as the full
233
- * popover box — the list inside subtracts the Tooltip's 8px inset per side.
234
- * Without one, a couple of short labels shrink-wrap into a scrunched box.
235
- */
236
- var CHART_LEGEND_OVERFLOW_MIN_WIDTH = 160;
237
- /**
238
- * Approximate width of one CAPTION-size character.
239
- *
240
- * Axis sizing estimates label widths arithmetically rather than measuring the
241
- * DOM, so it stays correct during build-time evaluation and server rendering.
242
- */
243
- var CAPTION_CHAR_WIDTH_PX = 6.2;
244
- /** Ceiling for an auto-sized left margin, so a wide formatter can't eat the plot. */
245
- var MAX_AUTO_MARGIN_LEFT = 96;
246
- /**
247
- * Floor for an auto-sized left margin.
248
- *
249
- * Enough for a two- or three-character tick plus {@link VALUE_AXIS_TICK_GAP}, so
250
- * an axis labelled `0`–`5` still has its numbers clear of the container edge
251
- * rather than jammed against it.
252
- */
253
- var MIN_AUTO_MARGIN_LEFT = 32;
254
- /**
255
- * Quantum for an auto-sized left margin, in px.
256
- *
257
- * Sizing the gutter to the widest tick means the plot origin moves whenever that
258
- * label's width changes — live data crossing 999 → 1000 gains a digit and would
259
- * shift every mark sideways. Rounding up to a step absorbs that: the margin only
260
- * moves when a label crosses a real threshold, and two charts with similar ticks
261
- * land on the *same* value, so stacked charts in a dashboard keep their plots
262
- * aligned instead of each choosing its own origin.
263
- */
264
- var AUTO_MARGIN_LEFT_STEP = 8;
265
- /** Minimum px between category labels before AUTO mode starts skipping them. */
266
- var MIN_CATEGORY_LABEL_GAP = 8;
267
- /**
268
- * Default assignment order for series colors.
269
- *
270
- * Purple leads to match the Galaxy brand. Galaxy blue is deliberately absent —
271
- * it is structural only, reserved for primary actions and selection.
272
- */
273
- var CHART_PALETTE_ORDER = [
274
- ChartPalette.PURPLE,
275
- ChartPalette.PINK,
276
- ChartPalette.BLUE,
277
- ChartPalette.TEAL,
278
- ChartPalette.LIME,
279
- ChartPalette.ORANGE,
280
- ChartPalette.YELLOW,
281
- ChartPalette.GREEN,
282
- ChartPalette.RED
283
- ];
112
+ /** @internal 2:1, the aspect-ratio fallback of cartesian charts and PieChart. */
113
+ var CHART_DEFAULT_ASPECT_RATIO = 2;
284
114
  //#endregion
285
- export { AGGREGATED_SLICE_KEY, AUTO_MARGIN_LEFT_STEP, AXIS_TITLE_BAND, AXIS_TITLE_GAP, BAR_GAP_COMFORTABLE, BAR_GAP_MEDIUM, BAR_GAP_TIGHT, BAR_RADIUS, BAR_RADIUS_NARROW, BAR_WIDTH_RATIO, CAPTION_CHAR_WIDTH_PX, CATEGORY_AXIS_LABEL_GAP, CATEGORY_AXIS_LABEL_HEIGHT, CHART_LEGEND_COLUMN_GAP, CHART_LEGEND_OVERFLOW_MAX_HEIGHT, CHART_LEGEND_OVERFLOW_MIN_WIDTH, CHART_LEGEND_SIDE_GAP, CHART_LEGEND_VERTICAL_GAP, CHART_MARK_OPACITY_ACTIVE, CHART_MARK_OPACITY_DIMMED, CHART_MARK_OPACITY_MUTED, CHART_PALETTE_ORDER, CHART_TOOLTIP_MAX_WIDTH, CHART_TOOLTIP_MIN_WIDTH, CHART_TOOLTIP_OFFSET, CHART_TRANSITION_MS, DEFAULT_CHART_MARGIN, DEFAULT_LINE_STROKE_WIDTH, DEFAULT_VALUE_TICK_COUNT, GRID_LINE_BLEED, GROUP_GAP_COMFORTABLE, GROUP_GAP_MEDIUM, GROUP_GAP_TIGHT, LINE_AREA_OPACITY, LINE_POINT_RADIUS, MAX_AUTO_MARGIN_LEFT, MAX_BAR_WIDTH, MAX_GAP_SHARE, MIN_AUTO_MARGIN_LEFT, MIN_BARS_FOR_TIGHT_SPACING, MIN_BAR_LENGTH, MIN_CATEGORY_LABEL_GAP, NARROW_BAR_WIDTH, PIE_CHART_MARGIN, PIE_CORNER_RADIUS, PIE_DONUT_INNER_RATIO, PIE_MAX_AUTO_INNER_RATIO, PIE_MAX_INSET_SHARE, PIE_MIN_SLICE_SHARE, PIE_PAD_ANGLE, PIE_TOOLTIP_ANCHOR_INSET, STACK_SEGMENT_GAP, VALUE_AXIS_LABEL_HEIGHT, VALUE_AXIS_TICK_GAP, WIDTH_FOR_MEDIUM_SPACING, WIDTH_FOR_TIGHT_SPACING };
115
+ export { AREA_FILL_OPACITY, AREA_STACKED_FILL_OPACITY, AUTO_INSET_LEFT_STEP, AXIS_LABEL_GAP, AXIS_TITLE_BAND, AXIS_TITLE_GAP, BAR_GAP_RATIO, BAR_RADIUS, BAR_RADIUS_NARROW, CAPTION_CHAR_WIDTH_PX, CAPTION_LINE, CATEGORY_AXIS_LABEL_GAP, CATEGORY_AXIS_LABEL_HEIGHT, CATEGORY_GAP_RATIO, CHART_DEFAULT_ASPECT_RATIO, CHART_LEGEND_OVERFLOW_MAX_HEIGHT, CHART_LEGEND_SIDE_GAP, CHART_MARK_OPACITY_ACTIVE, CHART_MARK_OPACITY_DIMMED, CHART_MARK_OPACITY_MUTED, CHART_TOOLTIP_MAX_ROWS, CHART_TOOLTIP_OFFSET, DEFAULT_VALUE_TICK_COUNT, GRID_LINE_BLEED, HEATMAP_CELL_GAP_RATIO, LINE_DASH, LINE_POINT_RADIUS, LINE_STROKE_WIDTH, MAX_AUTO_INSET_LEFT, MAX_BAR_GAP, MAX_CATEGORY_GAP, MAX_HEATMAP_CELL_GAP, MIN_AUTO_INSET_LEFT, MIN_BAR_GAP, MIN_BAR_LENGTH, MIN_CATEGORY_GAP, MIN_CATEGORY_LABEL_GAP, MIN_HEATMAP_CELL_GAP, MIN_VALUE_TICK_SPACING, NARROW_BAR_WIDTH, PIE_SLICE_GAP, PLOT_INSET_BOTTOM, PLOT_INSET_RIGHT, PLOT_INSET_TOP, RADIAL_PLOT_INSET, STACK_SEGMENT_GAP, VALUE_AXIS_LABEL_HEIGHT, VALUE_AXIS_TICK_GAP };
@@ -0,0 +1,95 @@
1
+ import { ChartPalette } from "./types.js";
2
+ /** @internal Cell corner radius: `radius.sm`. */
3
+ export declare const HEATMAP_CELL_RADIUS: number;
4
+ /** @internal Number of ramp steps. */
5
+ export declare const HEATMAP_STEP_COUNT = 5;
6
+ /** @internal The aspect-ratio fallback is clamped to these, so cells stay near-square. */
7
+ export declare const HEATMAP_MIN_ASPECT_RATIO = 1;
8
+ /** @internal Upper bound of the aspect-ratio fallback. */
9
+ export declare const HEATMAP_MAX_ASPECT_RATIO = 4;
10
+ /** @internal Five ramp steps, lowest first. */
11
+ export type HeatmapRamp = readonly [string, string, string, string, string];
12
+ /** @internal Palette slot → its five-step ramp (`PRIMARY` / `SECONDARY` / `TERTIARY` → hues, never gray). */
13
+ export declare const HEATMAP_STEP_TO_TOKEN_MAP: Record<ChartPalette, HeatmapRamp>;
14
+ /** @internal The data a cell needs (Heatmap's `HeatmapCellDatum`, structurally). */
15
+ export interface HeatmapGeometryCell {
16
+ /** Column label. */
17
+ column: string;
18
+ /** Row label. */
19
+ row: string;
20
+ /** Reading, or `null` for none. */
21
+ value: number | null;
22
+ }
23
+ /** @internal Labels in first-seen order, unless given. */
24
+ export declare function getHeatmapLabels(cells: HeatmapGeometryCell[], explicitColumns?: string[], explicitRows?: string[]): {
25
+ columns: string[];
26
+ rows: string[];
27
+ };
28
+ /** @internal `[min, max]` of the ramp: the non-null extent, overridden by `valueDomain`. */
29
+ export declare function getHeatmapDomain(cells: HeatmapGeometryCell[], override?: {
30
+ min?: number | undefined;
31
+ max?: number | undefined;
32
+ }): [number, number];
33
+ /**
34
+ * @internal The ramp step of a value: equal intervals over `[min, max]`, clamped to 0–4; every
35
+ * value is step 2 when the domain has no width.
36
+ */
37
+ export declare function getHeatmapStep(value: number, [min, max]: [number, number]): number;
38
+ /**
39
+ * @internal Left gutter that fits the widest row label (the value gutter's rule, plus one
40
+ * character: row labels are words, whose capitals run wider than the digit estimate).
41
+ */
42
+ export declare function estimateRowLabelInset(labels: string[]): number;
43
+ /** @internal One cell, resolved to pixels. Flat index = `rowIndex * columns + columnIndex`. */
44
+ export interface HeatmapCell {
45
+ /** React key. */
46
+ id: string;
47
+ /** Column index. */
48
+ columnIndex: number;
49
+ /** Row index. */
50
+ rowIndex: number;
51
+ /** Column label. */
52
+ column: string;
53
+ /** Row label. */
54
+ row: string;
55
+ /** Reading, or `null` (no entry, or `value: null`). */
56
+ value: number | null;
57
+ /** Ramp step 0–4 (`null` for an empty cell). */
58
+ step: number | null;
59
+ /** Left edge. */
60
+ x: number;
61
+ /** Top edge. */
62
+ y: number;
63
+ /** Width. */
64
+ width: number;
65
+ /** Height. */
66
+ height: number;
67
+ }
68
+ /** @internal The finished geometry. */
69
+ export interface HeatmapGeometry {
70
+ /** Every cell, row-major. */
71
+ cells: HeatmapCell[];
72
+ /** Column step (cell width + gap). */
73
+ columnStep: number;
74
+ /** Row step (cell height + gap). */
75
+ rowStep: number;
76
+ /** Leading edge of each column's slot (cell x − half a gap), for the axis. */
77
+ columnPositions: number[];
78
+ /** Leading edge of each row's slot, for the axis. */
79
+ rowPositions: number[];
80
+ /** Gap between neighbouring columns, px (whole). */
81
+ gapX: number;
82
+ /** Gap between neighbouring rows, px (whole). */
83
+ gapY: number;
84
+ /** Any cell without a reading. */
85
+ hasEmptyCells: boolean;
86
+ }
87
+ /** @internal Builds a heatmap's cells. */
88
+ export declare function buildHeatmapGeometry({ cells, columns, rows, domain, plotWidth, plotHeight, }: {
89
+ cells: HeatmapGeometryCell[];
90
+ columns: string[];
91
+ rows: string[];
92
+ domain: [number, number];
93
+ plotWidth: number;
94
+ plotHeight: number;
95
+ }): HeatmapGeometry;
@@ -0,0 +1,155 @@
1
+ import { RADIUS } from "../theme/tokens/scales.js";
2
+ import { t } from "../theme/tokens/t.js";
3
+ import { ChartPalette } from "./types.js";
4
+ import { AUTO_INSET_LEFT_STEP, CAPTION_CHAR_WIDTH_PX, HEATMAP_CELL_GAP_RATIO, MAX_HEATMAP_CELL_GAP, MIN_AUTO_INSET_LEFT, VALUE_AXIS_TICK_GAP } from "./constants.js";
5
+ import { clamp, sanitizeValue } from "./chartScales.js";
6
+ import { CHART_PALETTE_TO_HUE_MAP } from "./chartPalette.js";
7
+ //#region src/charts/heatmapGeometry.ts
8
+ /**
9
+ * @internal Heatmap geometry and color ramp (Heatmap). Cells sit on whole pixels with a
10
+ * proportional gap (about 10% of a cell's step, 1–2px); each filled cell takes one of five token steps of its hue's ramp, quantized at
11
+ * equal intervals over the value domain. Pure: no React. The ramp is `t.*` strings
12
+ * (`var(--gx-…)`, one `color-mix` of two), so it follows the theme.
13
+ */
14
+ /** @internal Cell corner radius: `radius.sm`. */
15
+ var HEATMAP_CELL_RADIUS = Number.parseFloat(RADIUS.sm);
16
+ /** @internal Number of ramp steps. */
17
+ var HEATMAP_STEP_COUNT = 5;
18
+ /** @internal The aspect-ratio fallback is clamped to these, so cells stay near-square. */
19
+ var HEATMAP_MIN_ASPECT_RATIO = 1;
20
+ /** @internal Upper bound of the aspect-ratio fallback. */
21
+ var HEATMAP_MAX_ASPECT_RATIO = 4;
22
+ /**
23
+ * The five token steps of one ramp, monotonic away from the canvas in both themes: the soft
24
+ * tint, halfway to the border, the border, the solid fill, and the solid fill a quarter of the way
25
+ * to `text.primary` (away from the canvas: lighter in dark, darker in light). Not the solid's
26
+ * `hovered`, which moves away from its own text color and so toward the canvas for some hues.
27
+ */
28
+ function rampOf(hue) {
29
+ return [
30
+ t.color.background[hue],
31
+ `color-mix(in srgb, ${t.color.background[hue]}, ${t.color.border[hue]})`,
32
+ t.color.border[hue],
33
+ t.color.solid[hue].background,
34
+ `color-mix(in oklch, ${t.color.solid[hue].background}, ${t.color.text.primary} 25%)`
35
+ ];
36
+ }
37
+ /** @internal Palette slot → its five-step ramp (`PRIMARY` / `SECONDARY` / `TERTIARY` → hues, never gray). */
38
+ var HEATMAP_STEP_TO_TOKEN_MAP = Object.fromEntries(Object.values(ChartPalette).map((palette) => [palette, rampOf(CHART_PALETTE_TO_HUE_MAP[palette])]));
39
+ /** @internal Labels in first-seen order, unless given. */
40
+ function getHeatmapLabels(cells, explicitColumns, explicitRows) {
41
+ const firstSeen = (pick) => {
42
+ const seen = /* @__PURE__ */ new Set();
43
+ for (const cell of cells) seen.add(pick(cell));
44
+ return [...seen];
45
+ };
46
+ return {
47
+ columns: explicitColumns ?? firstSeen((cell) => cell.column),
48
+ rows: explicitRows ?? firstSeen((cell) => cell.row)
49
+ };
50
+ }
51
+ /** @internal `[min, max]` of the ramp: the non-null extent, overridden by `valueDomain`. */
52
+ function getHeatmapDomain(cells, override) {
53
+ let min = Number.POSITIVE_INFINITY;
54
+ let max = Number.NEGATIVE_INFINITY;
55
+ for (const cell of cells) {
56
+ if (cell.value === null || !Number.isFinite(cell.value)) continue;
57
+ min = Math.min(min, cell.value);
58
+ max = Math.max(max, cell.value);
59
+ }
60
+ if (min > max) {
61
+ min = 0;
62
+ max = 0;
63
+ }
64
+ return [override?.min ?? min, override?.max ?? max];
65
+ }
66
+ /**
67
+ * @internal The ramp step of a value: equal intervals over `[min, max]`, clamped to 0–4; every
68
+ * value is step 2 when the domain has no width.
69
+ */
70
+ function getHeatmapStep(value, [min, max]) {
71
+ if (max === min) return 2;
72
+ return clamp(Math.floor((value - min) / (max - min) * 5), 0, 4);
73
+ }
74
+ /**
75
+ * @internal Left gutter that fits the widest row label (the value gutter's rule, plus one
76
+ * character: row labels are words, whose capitals run wider than the digit estimate).
77
+ */
78
+ function estimateRowLabelInset(labels) {
79
+ let widest = 0;
80
+ for (const label of labels) widest = Math.max(widest, (label.length + 1) * CAPTION_CHAR_WIDTH_PX);
81
+ const needed = Math.ceil(widest) + VALUE_AXIS_TICK_GAP;
82
+ return clamp(Math.ceil(needed / AUTO_INSET_LEFT_STEP) * AUTO_INSET_LEFT_STEP, MIN_AUTO_INSET_LEFT, 96);
83
+ }
84
+ /**
85
+ * `count` cells across `length` px: the gap is `HEATMAP_CELL_GAP_RATIO` of the step, rounded and
86
+ * clamped to 1–2px (0 when a cell would drop under 1px); every edge snaps to a whole pixel and the
87
+ * gaps stay equal, so the grid reads as even rules.
88
+ */
89
+ function layoutCellTrack(count, length) {
90
+ const step = length / count;
91
+ let gap = count > 1 ? clamp(Math.round(step * HEATMAP_CELL_GAP_RATIO), 1, MAX_HEATMAP_CELL_GAP) : 0;
92
+ if (step - gap < 1) gap = 0;
93
+ const pitch = (length + gap) / count;
94
+ const starts = [];
95
+ const sizes = [];
96
+ for (let index = 0; index < count; index += 1) {
97
+ const start = Math.round(index * pitch);
98
+ const end = Math.round((index + 1) * pitch) - gap;
99
+ starts.push(start);
100
+ sizes.push(Math.max(1, end - start));
101
+ }
102
+ return {
103
+ starts,
104
+ sizes,
105
+ step: pitch,
106
+ gap
107
+ };
108
+ }
109
+ /** @internal Builds a heatmap's cells. */
110
+ function buildHeatmapGeometry({ cells, columns, rows, domain, plotWidth, plotHeight }) {
111
+ const values = /* @__PURE__ */ new Map();
112
+ for (const cell of cells) values.set(`${cell.column}\u0000${cell.row}`, cell.value === null ? null : sanitizeValue(cell.value));
113
+ let hasEmptyCells = false;
114
+ for (const row of rows) for (const column of columns) if ((values.get(`${column}\u0000${row}`) ?? null) === null) hasEmptyCells = true;
115
+ const geometry = {
116
+ cells: [],
117
+ columnStep: 0,
118
+ rowStep: 0,
119
+ columnPositions: [],
120
+ rowPositions: [],
121
+ gapX: 0,
122
+ gapY: 0,
123
+ hasEmptyCells
124
+ };
125
+ if (columns.length === 0 || rows.length === 0 || plotWidth <= 0 || plotHeight <= 0) return geometry;
126
+ const x = layoutCellTrack(columns.length, plotWidth);
127
+ const y = layoutCellTrack(rows.length, plotHeight);
128
+ geometry.columnStep = x.step;
129
+ geometry.rowStep = y.step;
130
+ geometry.gapX = x.gap;
131
+ geometry.gapY = y.gap;
132
+ geometry.columnPositions = x.starts.map((start) => start - x.gap / 2);
133
+ geometry.rowPositions = y.starts.map((start) => start - y.gap / 2);
134
+ rows.forEach((row, rowIndex) => {
135
+ columns.forEach((column, columnIndex) => {
136
+ const value = values.get(`${column}\u0000${row}`) ?? null;
137
+ geometry.cells.push({
138
+ id: `${rowIndex}:${columnIndex}`,
139
+ columnIndex,
140
+ rowIndex,
141
+ column,
142
+ row,
143
+ value,
144
+ step: value === null ? null : getHeatmapStep(value, domain),
145
+ x: x.starts[columnIndex] ?? 0,
146
+ y: y.starts[rowIndex] ?? 0,
147
+ width: x.sizes[columnIndex] ?? 0,
148
+ height: y.sizes[rowIndex] ?? 0
149
+ });
150
+ });
151
+ });
152
+ return geometry;
153
+ }
154
+ //#endregion
155
+ export { HEATMAP_CELL_RADIUS, HEATMAP_MAX_ASPECT_RATIO, HEATMAP_MIN_ASPECT_RATIO, HEATMAP_STEP_COUNT, HEATMAP_STEP_TO_TOKEN_MAP, buildHeatmapGeometry, estimateRowLabelInset, getHeatmapDomain, getHeatmapLabels, getHeatmapStep };