@galaxy-io/dls 1.6.1 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +47 -50
- package/biome/index.json +74 -0
- package/biome/plugins/no-hex-literal.grit +20 -0
- package/biome/plugins/no-inline-style.grit +13 -0
- package/biome/plugins/no-margin.grit +9 -0
- package/biome/plugins/warn/no-hex-literal.grit +23 -0
- package/biome/plugins/warn/no-inline-style.grit +13 -0
- package/biome/plugins/warn/no-margin.grit +9 -0
- package/dist/a11y/FocusScope.d.ts +44 -0
- package/dist/a11y/FocusScope.js +229 -0
- package/dist/a11y/VisuallyHidden.d.ts +21 -0
- package/dist/a11y/VisuallyHidden.js +30 -0
- package/dist/avatar/Avatar.d.ts +56 -14
- package/dist/avatar/Avatar.js +250 -96
- package/dist/avatar/AvatarGroup.d.ts +43 -0
- package/dist/avatar/AvatarGroup.js +153 -0
- package/dist/backgrounds/GridBackground.d.ts +48 -0
- package/dist/backgrounds/GridBackground.js +146 -0
- package/dist/beacons/Beacon.d.ts +86 -22
- package/dist/beacons/Beacon.js +170 -47
- package/dist/brand/GalaxyFilamentWordmark.d.ts +30 -0
- package/dist/brand/GalaxyFilamentWordmark.js +39 -0
- package/dist/brand/GalaxyLogomark.d.ts +26 -0
- package/dist/brand/GalaxyLogomark.js +41 -0
- package/dist/brand/GalaxyLogomarkAnimation.d.ts +36 -0
- package/dist/brand/GalaxyLogomarkAnimation.js +107 -0
- package/dist/brand/GalaxyWordmark.d.ts +30 -0
- package/dist/brand/GalaxyWordmark.js +63 -0
- package/dist/brand/assets/galaxy-logomark-animation.js +136678 -0
- package/dist/brand/brandMark.d.ts +26 -0
- package/dist/brand/brandMark.js +35 -0
- package/dist/buttons/Button.d.ts +148 -59
- package/dist/buttons/Button.js +437 -227
- package/dist/buttons/ButtonGroup.d.ts +38 -0
- package/dist/buttons/ButtonGroup.js +68 -0
- package/dist/buttons/CopyButton.d.ts +77 -0
- package/dist/buttons/CopyButton.js +65 -0
- package/dist/charts/AreaChart.d.ts +49 -0
- package/dist/charts/AreaChart.js +31 -0
- package/dist/charts/BarChart.d.ts +54 -67
- package/dist/charts/BarChart.js +160 -124
- package/dist/charts/ChartAxis.d.ts +35 -40
- package/dist/charts/ChartAxis.js +114 -90
- package/dist/charts/ChartCategoryTargets.d.ts +12 -26
- package/dist/charts/ChartCategoryTargets.js +33 -20
- package/dist/charts/ChartFrame.d.ts +71 -116
- package/dist/charts/ChartFrame.js +306 -97
- package/dist/charts/ChartGroupProvider.d.ts +30 -41
- package/dist/charts/ChartGroupProvider.js +20 -7
- package/dist/charts/ChartLegend.d.ts +37 -48
- package/dist/charts/ChartLegend.js +243 -125
- package/dist/charts/ChartMarkTargets.d.ts +12 -28
- package/dist/charts/ChartMarkTargets.js +34 -20
- package/dist/charts/ChartPrimitives.d.ts +50 -305
- package/dist/charts/ChartPrimitives.js +65 -413
- package/dist/charts/ChartTooltip.d.ts +20 -26
- package/dist/charts/ChartTooltip.js +77 -40
- package/dist/charts/Heatmap.d.ts +35 -0
- package/dist/charts/Heatmap.js +307 -0
- package/dist/charts/LineChart.d.ts +54 -47
- package/dist/charts/LineChart.js +174 -121
- package/dist/charts/PieChart.d.ts +32 -53
- package/dist/charts/PieChart.js +159 -136
- package/dist/charts/Sparkline.d.ts +107 -0
- package/dist/charts/Sparkline.js +244 -0
- package/dist/charts/StatChart.d.ts +37 -13
- package/dist/charts/StatChart.js +82 -35
- package/dist/charts/barChartGeometry.d.ts +138 -86
- package/dist/charts/barChartGeometry.js +122 -101
- package/dist/charts/barChartLegend.d.ts +14 -18
- package/dist/charts/barChartLegend.js +18 -13
- package/dist/charts/chartFormat.d.ts +12 -18
- package/dist/charts/chartFormat.js +20 -52
- package/dist/charts/chartPalette.d.ts +33 -0
- package/dist/charts/chartPalette.js +68 -0
- package/dist/charts/chartScales.d.ts +41 -108
- package/dist/charts/chartScales.js +62 -128
- package/dist/charts/chartSelection.d.ts +15 -0
- package/dist/charts/chartSelection.js +22 -0
- package/dist/charts/constants.d.ts +100 -256
- package/dist/charts/constants.js +109 -275
- package/dist/charts/heatmapGeometry.d.ts +95 -0
- package/dist/charts/heatmapGeometry.js +155 -0
- package/dist/charts/lineChartGeometry.d.ts +108 -58
- package/dist/charts/lineChartGeometry.js +120 -78
- package/dist/charts/pieChartGeometry.d.ts +66 -40
- package/dist/charts/pieChartGeometry.js +68 -38
- package/dist/charts/types.d.ts +206 -466
- package/dist/charts/types.js +55 -144
- package/dist/charts/useCartesianChartLayout.d.ts +28 -59
- package/dist/charts/useCartesianChartLayout.js +47 -32
- package/dist/charts/useChartDimensions.d.ts +19 -40
- package/dist/charts/useChartDimensions.js +40 -56
- package/dist/charts/useChartFormatters.d.ts +6 -15
- package/dist/charts/useChartFormatters.js +4 -9
- package/dist/charts/useChartInteraction.d.ts +69 -116
- package/dist/charts/useChartInteraction.js +148 -78
- package/dist/charts/useChartTooltipPosition.d.ts +29 -39
- package/dist/charts/useChartTooltipPosition.js +14 -5
- package/dist/charts/useSeriesColorResolver.d.ts +11 -33
- package/dist/charts/useSeriesColorResolver.js +19 -12
- package/dist/chips/Chip.d.ts +155 -44
- package/dist/chips/Chip.js +329 -155
- package/dist/chips/ChipGroup.d.ts +53 -0
- package/dist/chips/ChipGroup.js +98 -0
- package/dist/drawer/Drawer.d.ts +83 -17
- package/dist/drawer/Drawer.js +399 -65
- package/dist/dropdown/Dropdown.d.ts +80 -63
- package/dist/dropdown/Dropdown.js +127 -129
- package/dist/editor/CodeEditor.d.ts +119 -40
- package/dist/editor/CodeEditor.js +490 -400
- package/dist/editor/CodeEditorReactWidget.d.ts +20 -17
- package/dist/editor/CodeEditorReactWidget.js +28 -21
- package/dist/feedback/Alert.d.ts +49 -0
- package/dist/feedback/Alert.js +172 -0
- package/dist/feedback/EmptyState.d.ts +39 -0
- package/dist/feedback/EmptyState.js +109 -0
- package/dist/feedback/ProgressBar.d.ts +125 -0
- package/dist/feedback/ProgressBar.js +183 -0
- package/dist/feedback/ProgressCircle.d.ts +99 -0
- package/dist/feedback/ProgressCircle.js +187 -0
- package/dist/feedback/Skeleton.d.ts +69 -0
- package/dist/feedback/Skeleton.js +130 -0
- package/dist/feedback/Spinner.d.ts +63 -0
- package/dist/feedback/Spinner.js +141 -0
- package/dist/fonts.css +70 -0
- package/dist/hooks/internal/useIsClient.d.ts +2 -0
- package/dist/hooks/internal/useIsClient.js +14 -0
- package/dist/hooks/useClipboard.d.ts +19 -0
- package/dist/hooks/useClipboard.js +45 -0
- package/dist/hooks/useControlledOpenState.d.ts +21 -0
- package/dist/hooks/useControlledOpenState.js +19 -0
- package/dist/hooks/useControlledState.d.ts +19 -0
- package/dist/hooks/useControlledState.js +22 -0
- package/dist/hooks/useDebouncedValue.d.ts +14 -0
- package/dist/hooks/useDebouncedValue.js +33 -0
- package/dist/hooks/useDisclosure.d.ts +26 -0
- package/dist/hooks/useDisclosure.js +36 -0
- package/dist/hooks/useDismiss.d.ts +23 -27
- package/dist/hooks/useDismiss.js +39 -27
- package/dist/hooks/useElementClientSize.d.ts +10 -10
- package/dist/hooks/useElementClientSize.js +8 -11
- package/dist/hooks/useElementWidth.d.ts +6 -13
- package/dist/hooks/useElementWidth.js +6 -14
- package/dist/hooks/useField.d.ts +47 -0
- package/dist/hooks/useField.js +40 -0
- package/dist/hooks/useHotkey.d.ts +77 -0
- package/dist/hooks/useHotkey.js +246 -0
- package/dist/hooks/useIsMac.d.ts +12 -0
- package/dist/hooks/useIsMac.js +27 -0
- package/dist/hooks/useIsomorphicLayoutEffect.d.ts +17 -0
- package/dist/hooks/useIsomorphicLayoutEffect.js +20 -0
- package/dist/hooks/useLocalStorage.d.ts +28 -0
- package/dist/hooks/useLocalStorage.js +145 -0
- package/dist/hooks/useMediaQuery.d.ts +11 -0
- package/dist/hooks/useMediaQuery.js +23 -0
- package/dist/hooks/usePrefersReducedMotion.d.ts +12 -0
- package/dist/hooks/usePrefersReducedMotion.js +25 -0
- package/dist/hooks/useResize.d.ts +42 -62
- package/dist/hooks/useResize.js +43 -31
- package/dist/icons/Icon.d.ts +64 -37
- package/dist/icons/Icon.js +96 -37
- package/dist/icons/internal/IconSlot.d.ts +10 -0
- package/dist/icons/internal/IconSlot.js +32 -0
- package/dist/inputs/CheckboxGroup.d.ts +115 -0
- package/dist/inputs/CheckboxGroup.js +183 -0
- package/dist/inputs/CheckboxInput.d.ts +98 -28
- package/dist/inputs/CheckboxInput.js +218 -88
- package/dist/inputs/ColorInput.d.ts +115 -29
- package/dist/inputs/ColorInput.js +748 -326
- package/dist/inputs/CopyInput.d.ts +49 -20
- package/dist/inputs/CopyInput.js +57 -49
- package/dist/inputs/CronInput.d.ts +94 -0
- package/dist/inputs/CronInput.js +618 -0
- package/dist/inputs/DateInput.d.ts +175 -28
- package/dist/inputs/DateInput.js +1109 -451
- package/dist/inputs/DurationInput.d.ts +101 -0
- package/dist/inputs/DurationInput.js +441 -0
- package/dist/inputs/Field.d.ts +75 -0
- package/dist/inputs/Field.js +247 -0
- package/dist/inputs/Fieldset.d.ts +53 -0
- package/dist/inputs/Fieldset.js +149 -0
- package/dist/inputs/FileInput.d.ts +110 -0
- package/dist/inputs/FileInput.js +476 -0
- package/dist/inputs/Input.d.ts +148 -187
- package/dist/inputs/Input.js +339 -259
- package/dist/inputs/KeyValueInput.d.ts +120 -0
- package/dist/inputs/KeyValueInput.js +383 -0
- package/dist/inputs/MultiSelectInput.d.ts +165 -54
- package/dist/inputs/MultiSelectInput.js +175 -559
- package/dist/inputs/NumberInput.d.ts +65 -9
- package/dist/inputs/NumberInput.js +197 -40
- package/dist/inputs/PasswordInput.d.ts +17 -12
- package/dist/inputs/PasswordInput.js +33 -33
- package/dist/inputs/PinInput.d.ts +117 -0
- package/dist/inputs/PinInput.js +364 -0
- package/dist/inputs/RadioGroup.d.ts +115 -0
- package/dist/inputs/RadioGroup.js +179 -0
- package/dist/inputs/RadioInput.d.ts +87 -24
- package/dist/inputs/RadioInput.js +182 -95
- package/dist/inputs/SearchInput.d.ts +66 -0
- package/dist/inputs/SearchInput.js +156 -0
- package/dist/inputs/SelectInput.d.ts +195 -55
- package/dist/inputs/SelectInput.js +1308 -446
- package/dist/inputs/SliderInput.d.ts +150 -30
- package/dist/inputs/SliderInput.js +441 -186
- package/dist/inputs/SwitchInput.d.ts +109 -0
- package/dist/inputs/SwitchInput.js +248 -0
- package/dist/inputs/TagInput.d.ts +117 -0
- package/dist/inputs/TagInput.js +408 -0
- package/dist/inputs/TextAreaInput.d.ts +146 -44
- package/dist/inputs/TextAreaInput.js +298 -198
- package/dist/inputs/TextInput.d.ts +4 -13
- package/dist/inputs/TextInput.js +13 -48
- package/dist/inputs/ToggleInput.d.ts +120 -22
- package/dist/inputs/ToggleInput.js +262 -116
- package/dist/inputs/internal/bareField.d.ts +18 -0
- package/dist/inputs/internal/bareField.js +38 -0
- package/dist/inputs/internal/devWarn.d.ts +7 -0
- package/dist/inputs/internal/devWarn.js +30 -0
- package/dist/inputs/internal/fieldFrame.d.ts +34 -0
- package/dist/inputs/internal/fieldFrame.js +64 -0
- package/dist/inputs/internal/fieldWiring.d.ts +50 -0
- package/dist/inputs/internal/fieldWiring.js +38 -0
- package/dist/inputs/internal/innerButton.d.ts +2 -0
- package/dist/inputs/internal/innerButton.js +24 -0
- package/dist/inputs/internal/ownField.d.ts +45 -0
- package/dist/inputs/internal/ownField.js +58 -0
- package/dist/inputs/internal/predicates.d.ts +9 -0
- package/dist/inputs/internal/predicates.js +11 -0
- package/dist/inputs/internal/useComboboxPopover.d.ts +46 -0
- package/dist/inputs/internal/useComboboxPopover.js +92 -0
- package/dist/json/JsonViewer.d.ts +62 -0
- package/dist/json/JsonViewer.js +483 -0
- package/dist/layout/Box.d.ts +87 -0
- package/dist/layout/Box.js +109 -0
- package/dist/layout/Divider.d.ts +25 -0
- package/dist/layout/Divider.js +70 -0
- package/dist/layout/Flex.d.ts +139 -0
- package/dist/layout/Flex.js +165 -0
- package/dist/layout/FlexItem.d.ts +72 -0
- package/dist/layout/FlexItem.js +84 -0
- package/dist/layout/Grid.d.ts +140 -0
- package/dist/layout/Grid.js +178 -0
- package/dist/layout/Portal.d.ts +29 -0
- package/dist/layout/Portal.js +27 -0
- package/dist/layout/ResizablePanels.d.ts +88 -0
- package/dist/layout/ResizablePanels.js +198 -0
- package/dist/layout/ResizeHandle.d.ts +48 -0
- package/dist/layout/ResizeHandle.js +143 -0
- package/dist/layout/ScrollArea.d.ts +30 -0
- package/dist/layout/ScrollArea.js +138 -0
- package/dist/links/Link.d.ts +101 -1
- package/dist/links/Link.js +166 -4
- package/dist/lists/BulletedList.d.ts +25 -7
- package/dist/lists/BulletedList.js +72 -27
- package/dist/lists/DescriptionList.d.ts +91 -0
- package/dist/lists/DescriptionList.js +147 -0
- package/dist/menu/ContextMenu.d.ts +64 -0
- package/dist/menu/ContextMenu.js +34 -0
- package/dist/menu/Menu.d.ts +280 -0
- package/dist/menu/Menu.js +1003 -0
- package/dist/modal/ConfirmDialog.d.ts +55 -0
- package/dist/modal/ConfirmDialog.js +151 -0
- package/dist/modal/Modal.d.ts +64 -14
- package/dist/modal/Modal.js +189 -48
- package/dist/navigation/Breadcrumbs.d.ts +65 -0
- package/dist/navigation/Breadcrumbs.js +243 -0
- package/dist/navigation/CommandPalette.d.ts +83 -0
- package/dist/navigation/CommandPalette.js +509 -0
- package/dist/navigation/Pagination.d.ts +87 -0
- package/dist/navigation/Pagination.js +300 -0
- package/dist/navigation/SidebarNav.d.ts +107 -0
- package/dist/navigation/SidebarNav.js +341 -0
- package/dist/navigation/Stepper.d.ts +52 -0
- package/dist/navigation/Stepper.js +207 -0
- package/dist/navigation/Tabs.d.ts +113 -0
- package/dist/navigation/Tabs.js +543 -0
- package/dist/navigation/Topbar.d.ts +20 -0
- package/dist/navigation/Topbar.js +62 -0
- package/dist/overlay/OverlayProvider.d.ts +28 -32
- package/dist/overlay/OverlayProvider.js +42 -93
- package/dist/overlay/useOverlay.d.ts +88 -12
- package/dist/overlay/useOverlay.js +220 -43
- package/dist/overlays/Popover.d.ts +114 -0
- package/dist/overlays/Popover.js +389 -0
- package/dist/shapes/Circle.d.ts +84 -8
- package/dist/shapes/Circle.js +122 -20
- package/dist/shapes/Square.d.ts +84 -8
- package/dist/shapes/Square.js +123 -20
- package/dist/styles/mixins.d.ts +35 -0
- package/dist/styles/mixins.js +60 -0
- package/dist/styles.css +1 -202
- package/dist/table/InfiniteSpreadsheet.d.ts +140 -10
- package/dist/table/InfiniteSpreadsheet.js +762 -225
- package/dist/table/InfiniteTable.d.ts +116 -14
- package/dist/table/InfiniteTable.js +287 -429
- package/dist/table/SpreadsheetCellEditor.d.ts +54 -6
- package/dist/table/SpreadsheetCellEditor.js +163 -84
- package/dist/table/TableCore.d.ts +252 -0
- package/dist/table/TableCore.js +1082 -0
- package/dist/table/VirtualizedInfiniteTable.d.ts +104 -14
- package/dist/table/VirtualizedInfiniteTable.js +280 -219
- package/dist/table/types.d.ts +66 -244
- package/dist/table/types.js +0 -51
- package/dist/table/useInfiniteScrollSentinel.d.ts +25 -21
- package/dist/table/useInfiniteScrollSentinel.js +38 -30
- package/dist/table/useSpreadsheetCellNavigation.d.ts +44 -0
- package/dist/table/useSpreadsheetCellNavigation.js +141 -0
- package/dist/table/useTableColumnLayout.d.ts +90 -25
- package/dist/table/useTableColumnLayout.js +255 -50
- package/dist/table/useTableKeyboardNavigation.d.ts +32 -21
- package/dist/table/useTableKeyboardNavigation.js +95 -71
- package/dist/table/useTableRowSelection.d.ts +24 -25
- package/dist/table/useTableRowSelection.js +57 -84
- package/dist/table/useTableVirtualizer.d.ts +20 -0
- package/dist/table/useTableVirtualizer.js +48 -0
- package/dist/text/Bold.d.ts +5 -6
- package/dist/text/Bold.js +16 -15
- package/dist/text/Code.d.ts +5 -6
- package/dist/text/Code.js +16 -25
- package/dist/text/CodeBlock.d.ts +77 -0
- package/dist/text/CodeBlock.js +373 -0
- package/dist/text/EditableText.d.ts +55 -15
- package/dist/text/EditableText.js +153 -135
- package/dist/text/Ellipsis.d.ts +34 -8
- package/dist/text/Ellipsis.js +55 -23
- package/dist/text/Kbd.d.ts +72 -0
- package/dist/text/Kbd.js +284 -0
- package/dist/text/MarkdownText.d.ts +27 -10
- package/dist/text/MarkdownText.js +317 -300
- package/dist/text/RequiredMarker.d.ts +17 -5
- package/dist/text/RequiredMarker.js +34 -36
- package/dist/text/Selectable.d.ts +5 -6
- package/dist/text/Selectable.js +16 -13
- package/dist/text/Span.d.ts +82 -0
- package/dist/text/Span.js +115 -0
- package/dist/text/Text.d.ts +128 -41
- package/dist/text/Text.js +209 -76
- package/dist/theme/GalaxyProvider.d.ts +75 -0
- package/dist/theme/GalaxyProvider.js +223 -0
- package/dist/theme/ThemeSwitcher.d.ts +52 -0
- package/dist/theme/ThemeSwitcher.js +94 -0
- package/dist/theme/enums.d.ts +118 -0
- package/dist/theme/enums.js +144 -0
- package/dist/theme/tokens/dark.d.ts +2 -0
- package/dist/theme/tokens/dark.js +275 -0
- package/dist/theme/tokens/generate.d.ts +15 -0
- package/dist/theme/tokens/generate.js +47 -0
- package/dist/theme/tokens/light.d.ts +2 -0
- package/dist/theme/tokens/light.js +274 -0
- package/dist/theme/tokens/palette.d.ts +14 -0
- package/dist/theme/tokens/palette.js +153 -0
- package/dist/theme/tokens/scales.d.ts +26 -0
- package/dist/theme/tokens/scales.js +154 -0
- package/dist/theme/tokens/t.d.ts +3 -0
- package/dist/theme/tokens/t.js +25 -0
- package/dist/theme/tokens/types.d.ts +189 -0
- package/dist/theme/tokens/types.js +0 -0
- package/dist/theme/useGalaxyTheme.d.ts +46 -0
- package/dist/theme/useGalaxyTheme.js +36 -0
- package/dist/theme/useInverseScope.d.ts +18 -0
- package/dist/theme/useInverseScope.js +33 -0
- package/dist/three/GalaxyLogomark3D.d.ts +46 -0
- package/dist/three/GalaxyLogomark3D.js +134 -0
- package/dist/three/assets/galaxy-logomark.js +4 -0
- package/dist/three/galaxyLogomark3DScene.d.ts +27 -0
- package/dist/three/galaxyLogomark3DScene.js +165 -0
- package/dist/timeline/Timeline.d.ts +120 -0
- package/dist/timeline/Timeline.js +301 -0
- package/dist/toast/Toast.d.ts +43 -19
- package/dist/toast/Toast.js +130 -89
- package/dist/toast/ToastProvider.d.ts +23 -23
- package/dist/toast/ToastProvider.js +298 -101
- package/dist/toast/ToastViewport.d.ts +12 -0
- package/dist/toast/ToastViewport.js +210 -0
- package/dist/toast/useToast.d.ts +139 -5
- package/dist/toast/useToast.js +15 -13
- package/dist/tokens.css +654 -0
- package/dist/tooltip/Tooltip.d.ts +64 -44
- package/dist/tooltip/Tooltip.js +280 -73
- package/dist/tooltip/internal/LazyTooltip.d.ts +7 -0
- package/dist/tooltip/internal/LazyTooltip.js +53 -0
- package/dist/transform/Fade.d.ts +33 -11
- package/dist/transform/Fade.js +71 -19
- package/dist/transform/Flasher.d.ts +25 -0
- package/dist/transform/Flasher.js +39 -0
- package/dist/transform/Rotate.d.ts +24 -12
- package/dist/transform/Rotate.js +36 -22
- package/dist/transform/ScaleFade.d.ts +36 -11
- package/dist/transform/ScaleFade.js +86 -28
- package/dist/transform/internal/CollapseMotion.d.ts +10 -0
- package/dist/transform/internal/CollapseMotion.js +65 -0
- package/dist/tree/Tree.d.ts +85 -0
- package/dist/tree/Tree.js +387 -0
- package/dist/tree/treeRow.d.ts +39 -0
- package/dist/tree/treeRow.js +75 -0
- package/dist/utils/colors.d.ts +46 -13
- package/dist/utils/colors.js +92 -34
- package/dist/utils/css.d.ts +23 -0
- package/dist/utils/css.js +30 -0
- package/dist/utils/format.d.ts +58 -0
- package/dist/utils/format.js +220 -0
- package/dist/vite/index.d.ts +16 -0
- package/dist/vite/index.js +52 -0
- package/dist/widget/Widget.d.ts +164 -48
- package/dist/widget/Widget.js +335 -96
- package/dist/widget/WidgetGroup.d.ts +36 -0
- package/dist/widget/WidgetGroup.js +103 -0
- package/package.json +855 -157
- package/dist/accordion/Accordion.d.ts +0 -54
- package/dist/accordion/Accordion.js +0 -183
- package/dist/assets/components/GalaxyFilamentWordmarkDark.d.ts +0 -3
- package/dist/assets/components/GalaxyFilamentWordmarkDark.js +0 -14
- package/dist/assets/components/GalaxyFilamentWordmarkLight.d.ts +0 -3
- package/dist/assets/components/GalaxyFilamentWordmarkLight.js +0 -14
- package/dist/assets/components/GalaxyLogomarkDark.d.ts +0 -3
- package/dist/assets/components/GalaxyLogomarkDark.js +0 -11
- package/dist/assets/components/GalaxyLogomarkLight.d.ts +0 -3
- package/dist/assets/components/GalaxyLogomarkLight.js +0 -17
- package/dist/assets/components/GalaxyWordmarkDark.d.ts +0 -3
- package/dist/assets/components/GalaxyWordmarkDark.js +0 -15
- package/dist/assets/components/GalaxyWordmarkLight.d.ts +0 -3
- package/dist/assets/components/GalaxyWordmarkLight.js +0 -28
- package/dist/assets/models/galaxy-animation.js +0 -136666
- package/dist/assets/models/galaxy-logomark.js +0 -4
- package/dist/avatar/AvatarShimmer.d.ts +0 -30
- package/dist/avatar/AvatarShimmer.js +0 -22
- package/dist/backgrounds/CellGridBackground.d.ts +0 -24
- package/dist/backgrounds/CellGridBackground.js +0 -44
- package/dist/backgrounds/CrossGridBackground.d.ts +0 -26
- package/dist/backgrounds/CrossGridBackground.js +0 -49
- package/dist/backgrounds/DotGridBackground.d.ts +0 -24
- package/dist/backgrounds/DotGridBackground.js +0 -47
- package/dist/badge/Badge.d.ts +0 -42
- package/dist/badge/Badge.js +0 -99
- package/dist/charts/ChartEmptyState.d.ts +0 -17
- package/dist/charts/ChartEmptyState.js +0 -29
- package/dist/charts/ProgressBar.d.ts +0 -29
- package/dist/charts/ProgressBar.js +0 -65
- package/dist/charts/chartTheme.d.ts +0 -18
- package/dist/charts/chartTheme.js +0 -26
- package/dist/containers/FlexItem.d.ts +0 -50
- package/dist/containers/FlexItem.js +0 -91
- package/dist/containers/FlexWrapper.d.ts +0 -96
- package/dist/containers/FlexWrapper.js +0 -143
- package/dist/containers/GridWrapper.d.ts +0 -79
- package/dist/containers/GridWrapper.js +0 -125
- package/dist/containers/Spacing.d.ts +0 -23
- package/dist/containers/Spacing.js +0 -59
- package/dist/containers/Wrapper.d.ts +0 -26
- package/dist/containers/Wrapper.js +0 -54
- package/dist/dividers/HorizontalDivider.d.ts +0 -7
- package/dist/dividers/HorizontalDivider.js +0 -39
- package/dist/dividers/VerticalDivider.d.ts +0 -6
- package/dist/dividers/VerticalDivider.js +0 -21
- package/dist/icons/GalaxyFilamentWordmark.d.ts +0 -11
- package/dist/icons/GalaxyFilamentWordmark.js +0 -25
- package/dist/icons/GalaxyLogomark.d.ts +0 -13
- package/dist/icons/GalaxyLogomark.js +0 -27
- package/dist/icons/GalaxyLogomark3D.d.ts +0 -56
- package/dist/icons/GalaxyLogomark3D.js +0 -319
- package/dist/icons/GalaxyLogomarkAnimation.d.ts +0 -18
- package/dist/icons/GalaxyLogomarkAnimation.js +0 -48
- package/dist/icons/GalaxyWordmark.d.ts +0 -11
- package/dist/icons/GalaxyWordmark.js +0 -25
- package/dist/inputs/MultiTextInput.d.ts +0 -32
- package/dist/inputs/MultiTextInput.js +0 -180
- package/dist/inputs/SwitcherInput.d.ts +0 -30
- package/dist/inputs/SwitcherInput.js +0 -81
- package/dist/inputs/hooks.d.ts +0 -10
- package/dist/inputs/hooks.js +0 -22
- package/dist/overlay/constants.d.ts +0 -28
- package/dist/overlay/constants.js +0 -37
- package/dist/resizable/HorizontalResizeHandle.d.ts +0 -17
- package/dist/resizable/HorizontalResizeHandle.js +0 -38
- package/dist/resizable/VerticalResizeHandle.d.ts +0 -18
- package/dist/resizable/VerticalResizeHandle.js +0 -39
- package/dist/table/SpreadsheetCell.d.ts +0 -21
- package/dist/table/SpreadsheetCell.js +0 -71
- package/dist/table/SpreadsheetHeaderCell.d.ts +0 -23
- package/dist/table/SpreadsheetHeaderCell.js +0 -91
- package/dist/table/SpreadsheetMenuItem.d.ts +0 -14
- package/dist/table/SpreadsheetMenuItem.js +0 -33
- package/dist/table/SpreadsheetPrimitives.d.ts +0 -172
- package/dist/table/SpreadsheetPrimitives.js +0 -105
- package/dist/table/SpreadsheetRow.d.ts +0 -33
- package/dist/table/SpreadsheetRow.js +0 -73
- package/dist/table/SpreadsheetRowActionCell.d.ts +0 -14
- package/dist/table/SpreadsheetRowActionCell.js +0 -51
- package/dist/table/TableExpandCell.d.ts +0 -11
- package/dist/table/TableExpandCell.js +0 -24
- package/dist/table/TableExpandedRow.d.ts +0 -16
- package/dist/table/TableExpandedRow.js +0 -77
- package/dist/table/TableHeaderCellContent.d.ts +0 -30
- package/dist/table/TableHeaderCellContent.js +0 -48
- package/dist/table/TablePrimitives.d.ts +0 -313
- package/dist/table/TablePrimitives.js +0 -302
- package/dist/table/TableSelectCell.d.ts +0 -18
- package/dist/table/TableSelectCell.js +0 -27
- package/dist/table/TableStatusRow.d.ts +0 -18
- package/dist/table/TableStatusRow.js +0 -50
- package/dist/table/useSpreadsheetEditing.d.ts +0 -13
- package/dist/table/useSpreadsheetEditing.js +0 -41
- package/dist/table/useTableColumnResize.d.ts +0 -38
- package/dist/table/useTableColumnResize.js +0 -155
- package/dist/table/useTableRowExpansion.d.ts +0 -24
- package/dist/table/useTableRowExpansion.js +0 -62
- package/dist/table/utils.d.ts +0 -50
- package/dist/table/utils.js +0 -78
- package/dist/text/HotKeys.d.ts +0 -30
- package/dist/text/HotKeys.js +0 -74
- package/dist/text/Paragraph.d.ts +0 -33
- package/dist/text/Paragraph.js +0 -83
- package/dist/text/TextShimmer.d.ts +0 -14
- package/dist/text/TextShimmer.js +0 -34
- package/dist/theme/GalaxyTheme.d.ts +0 -67
- package/dist/theme/GalaxyTheme.js +0 -119
- package/dist/theme/constants.d.ts +0 -8
- package/dist/theme/constants.js +0 -38
- package/dist/theme/index.d.ts +0 -6
- package/dist/theme/index.js +0 -7
- package/dist/theme/types.d.ts +0 -195
- package/dist/theme/types.js +0 -10
- package/dist/theme/typography.d.ts +0 -2
- package/dist/theme/typography.js +0 -73
- package/dist/theme/variants/dark.d.ts +0 -2
- package/dist/theme/variants/dark.js +0 -125
- package/dist/theme/variants/light.d.ts +0 -2
- package/dist/theme/variants/light.js +0 -125
- package/dist/toast/ToastContainer.d.ts +0 -10
- package/dist/toast/ToastContainer.js +0 -31
- package/dist/toast/ToastWrapper.d.ts +0 -6
- package/dist/toast/ToastWrapper.js +0 -27
- package/dist/transform/Flash.d.ts +0 -7
- package/dist/transform/Flash.js +0 -18
- package/dist/transform/Spin.d.ts +0 -14
- package/dist/transform/Spin.js +0 -25
- package/dist/utils/linaria.d.ts +0 -1
- package/dist/utils/linaria.js +0 -8
|
@@ -1,92 +1,142 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
/**
|
|
2
|
+
* @internal Line chart geometry (LineChart, AreaChart; `resolveCurve` and the path builders are
|
|
3
|
+
* reused by Sparkline). Turns lines and points into SVG paths plus one hit column per category, so
|
|
4
|
+
* the component body maps over finished data. Pure: no React; colors arrive through a resolver.
|
|
5
|
+
*/
|
|
6
|
+
import { type CurveFactory } from "d3-shape";
|
|
7
|
+
import type { ChartSeriesColor } from "./chartPalette.js";
|
|
8
|
+
import { ChartCurve } from "./types.js";
|
|
9
|
+
/** @internal The data a line needs (LineChart's `LineChartLineDatum`, structurally). */
|
|
10
|
+
export interface LineGeometryInput<TMetric extends string> {
|
|
11
|
+
/** Series key. */
|
|
12
|
+
metric: TMetric;
|
|
13
|
+
/** Readings by category. */
|
|
14
|
+
points: {
|
|
15
|
+
x: string;
|
|
16
|
+
y: number | null;
|
|
17
|
+
}[];
|
|
18
|
+
/** Dashed stroke. */
|
|
19
|
+
isDashed?: boolean | undefined;
|
|
20
|
+
}
|
|
21
|
+
/** @internal A point in pixel space (`undefined` y = gap). */
|
|
22
|
+
export interface PlotPoint {
|
|
23
|
+
/** x in plot coordinates. */
|
|
24
|
+
x: number;
|
|
25
|
+
/** y in plot coordinates, or `null` for a gap. */
|
|
26
|
+
y: number | null;
|
|
27
|
+
}
|
|
28
|
+
/** @internal `ChartCurve` → the d3 curve factory. */
|
|
29
|
+
export declare function resolveCurve(curve: ChartCurve): CurveFactory;
|
|
30
|
+
/** @internal A line path through `points`, broken at gaps (`y === null`). Empty when nothing plots. */
|
|
31
|
+
export declare function buildLinePath(points: PlotPoint[], curve: ChartCurve): string;
|
|
32
|
+
/** @internal An area path from `y0` (a baseline, or each point's lower edge) to each point, broken at gaps. */
|
|
33
|
+
export declare function buildAreaPath(points: PlotPoint[], y0: number | ((index: number) => number), curve: ChartCurve): string;
|
|
34
|
+
/**
|
|
35
|
+
* @internal The category axis: an explicit list, else the union of every line's `x` in
|
|
36
|
+
* first-seen order (worth passing `categories` whenever lines are sparse).
|
|
37
|
+
*/
|
|
38
|
+
export declare function getLineCategories(lines: LineGeometryInput<string>[], explicit?: string[]): string[];
|
|
39
|
+
/** @internal Signed extent across every reading, ignoring gaps, always including 0. */
|
|
40
|
+
export declare function getLineValueDomain(lines: LineGeometryInput<string>[]): [number, number];
|
|
41
|
+
/**
|
|
42
|
+
* @internal Each line's readings densified onto the category axis: a missing category or a `null`
|
|
43
|
+
* reading is `null`, never zero.
|
|
44
|
+
*/
|
|
45
|
+
export declare function densifyLineValues(lines: LineGeometryInput<string>[], categories: string[]): (number | null)[][];
|
|
46
|
+
/**
|
|
47
|
+
* @internal Stack offsets (AreaChart `isStacked`): for every line and category, the running total
|
|
48
|
+
* of the lines before it, in array order (`d3-shape` `stack()`). A gap contributes 0, so the stack
|
|
49
|
+
* stays a total; only the gapped line's own top edge breaks.
|
|
50
|
+
*/
|
|
51
|
+
export declare function getStackOffsets(values: (number | null)[][]): number[][];
|
|
52
|
+
/** @internal Extent of the stacked totals (every band's lower and upper edge), always including 0. */
|
|
53
|
+
export declare function getStackedLineValueDomain(lines: LineGeometryInput<string>[], explicitCategories?: string[]): [number, number];
|
|
54
|
+
/** @internal `true` when no line has a single reading. */
|
|
55
|
+
export declare function hasNoReadings(lines: LineGeometryInput<string>[]): boolean;
|
|
56
|
+
/** @internal One line, resolved to paths. */
|
|
7
57
|
export interface LineChartPath<TMetric extends string> {
|
|
8
|
-
/** React key
|
|
58
|
+
/** React key (the metric). */
|
|
9
59
|
id: string;
|
|
60
|
+
/** Series key. */
|
|
10
61
|
metric: TMetric;
|
|
11
|
-
/** `d
|
|
62
|
+
/** Stroke `d`; empty when nothing plots. */
|
|
12
63
|
path: string;
|
|
13
|
-
/** `d`
|
|
64
|
+
/** Area `d` (fill `AREA` only). */
|
|
14
65
|
areaPath?: string;
|
|
15
|
-
/**
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
color:
|
|
66
|
+
/** Dashed stroke. */
|
|
67
|
+
isDashed: boolean;
|
|
68
|
+
/** Series color. */
|
|
69
|
+
color: ChartSeriesColor;
|
|
19
70
|
}
|
|
20
|
-
/** One
|
|
71
|
+
/** @internal One reading, resolved to pixels. */
|
|
21
72
|
export interface LineChartPoint<TMetric extends string> {
|
|
22
|
-
/** React key
|
|
73
|
+
/** React key: `${metric}:${categoryIndex}`. */
|
|
23
74
|
id: string;
|
|
75
|
+
/** Series key. */
|
|
24
76
|
metric: TMetric;
|
|
77
|
+
/** The reading. */
|
|
25
78
|
value: number;
|
|
79
|
+
/** x in plot coordinates. */
|
|
26
80
|
x: number;
|
|
81
|
+
/** y in plot coordinates. */
|
|
27
82
|
y: number;
|
|
28
|
-
color
|
|
83
|
+
/** Series color. */
|
|
84
|
+
color: ChartSeriesColor;
|
|
29
85
|
}
|
|
30
|
-
/**
|
|
31
|
-
* One category column: the hit target and everything the tooltip needs.
|
|
32
|
-
*
|
|
33
|
-
* Line charts hit-test by column rather than by proximity to a stroke, so the
|
|
34
|
-
* whole vertical band is a target and the tooltip reports every line at once.
|
|
35
|
-
*/
|
|
86
|
+
/** @internal One category column: the hit band and everything the tooltip needs. */
|
|
36
87
|
export interface LineChartColumn<TMetric extends string> {
|
|
88
|
+
/** Position on the axis. */
|
|
37
89
|
categoryIndex: number;
|
|
90
|
+
/** Raw label. */
|
|
38
91
|
label: string;
|
|
39
92
|
/** x of the category tick. */
|
|
40
93
|
x: number;
|
|
41
|
-
/**
|
|
94
|
+
/** Left edge of the hit band (bands tile the plot). */
|
|
42
95
|
bandX: number;
|
|
96
|
+
/** Width of the hit band. */
|
|
43
97
|
bandWidth: number;
|
|
44
|
-
/**
|
|
98
|
+
/** Readings at this category, one per line that has one. */
|
|
45
99
|
points: LineChartPoint<TMetric>[];
|
|
46
|
-
/**
|
|
100
|
+
/** Lines with no reading at this category. */
|
|
101
|
+
gaps: TMetric[];
|
|
102
|
+
/** Topmost point: where the tooltip anchors. */
|
|
47
103
|
anchorY: number;
|
|
48
104
|
}
|
|
105
|
+
/** @internal The finished geometry. */
|
|
49
106
|
export interface LineChartGeometry<TMetric extends string> {
|
|
107
|
+
/** One per line. */
|
|
50
108
|
paths: LineChartPath<TMetric>[];
|
|
109
|
+
/** One per category. */
|
|
51
110
|
columns: LineChartColumn<TMetric>[];
|
|
52
|
-
/**
|
|
53
|
-
* Points with no defined neighbour on either side.
|
|
54
|
-
*
|
|
55
|
-
* A lone reading has nothing to connect to, so it produces a zero-length path
|
|
56
|
-
* segment and renders as nothing at all — a silent hole in sparse data. These
|
|
57
|
-
* are drawn as explicit dots so the value is visible without hovering.
|
|
58
|
-
*/
|
|
111
|
+
/** Readings with no neighbour on either side: drawn as dots so they do not vanish. */
|
|
59
112
|
isolatedPoints: LineChartPoint<TMetric>[];
|
|
113
|
+
/** Category labels in axis order. */
|
|
60
114
|
categories: string[];
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
*
|
|
65
|
-
* Exposed because axis labels must be centred on their tick, which is not the
|
|
66
|
-
* same as being centred on the hit band: the first and last bands are clipped
|
|
67
|
-
* to the plot edge, and centring a label inside a half-width band pushes it
|
|
68
|
-
* off its tick.
|
|
69
|
-
*/
|
|
115
|
+
/** Value → y. */
|
|
116
|
+
valueScale: (value: number) => number;
|
|
117
|
+
/** Distance between category ticks. */
|
|
70
118
|
step: number;
|
|
71
119
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
120
|
+
/** @internal Inputs of `buildLineChartGeometry`. */
|
|
121
|
+
export interface BuildLineChartGeometryArgs<TMetric extends string> {
|
|
122
|
+
/** The lines. */
|
|
123
|
+
lines: LineGeometryInput<TMetric>[];
|
|
124
|
+
/** Explicit category order. */
|
|
125
|
+
categories?: string[] | undefined;
|
|
126
|
+
/** Plot width. */
|
|
75
127
|
plotWidth: number;
|
|
128
|
+
/** Plot height. */
|
|
76
129
|
plotHeight: number;
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
*
|
|
81
|
-
* Resolved by the caller rather than here, because the left gutter is sized
|
|
82
|
-
* from the tick labels and therefore needs the domain before the plot — and
|
|
83
|
-
* hence this builder — exists.
|
|
84
|
-
*/
|
|
130
|
+
/** Segment shape. */
|
|
131
|
+
curve: ChartCurve;
|
|
132
|
+
/** The resolved value domain. */
|
|
85
133
|
domain: [number, number];
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
134
|
+
/** Draw each line's area to the zero baseline (or, stacked, to the band below). */
|
|
135
|
+
hasArea: boolean;
|
|
136
|
+
/** Stack the lines in array order (AreaChart `isStacked`): each top edge is the running total. */
|
|
137
|
+
isStacked?: boolean | undefined;
|
|
138
|
+
/** Series color by metric. */
|
|
139
|
+
resolveColor: (metric: TMetric) => ChartSeriesColor;
|
|
90
140
|
}
|
|
91
|
-
|
|
92
|
-
export {}
|
|
141
|
+
/** @internal Builds a line chart's paths, columns and isolated points. */
|
|
142
|
+
export declare function buildLineChartGeometry<TMetric extends string>({ lines, categories: explicitCategories, plotWidth, plotHeight, curve, domain, hasArea, isStacked, resolveColor, }: BuildLineChartGeometryArgs<TMetric>): LineChartGeometry<TMetric>;
|
|
@@ -1,19 +1,28 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { DEFAULT_LINE_STROKE_WIDTH } from "./constants.js";
|
|
1
|
+
import { ChartCurve } from "./types.js";
|
|
3
2
|
import { buildCategoryPointScale, buildValueScale, sanitizeValue } from "./chartScales.js";
|
|
4
3
|
import { match } from "ts-pattern";
|
|
5
|
-
import { area, curveLinear, curveMonotoneX, curveStepAfter, line } from "d3-shape";
|
|
4
|
+
import { area, curveLinear, curveMonotoneX, curveStepAfter, line, stack } from "d3-shape";
|
|
6
5
|
//#region src/charts/lineChartGeometry.ts
|
|
6
|
+
/**
|
|
7
|
+
* @internal Line chart geometry (LineChart, AreaChart; `resolveCurve` and the path builders are
|
|
8
|
+
* reused by Sparkline). Turns lines and points into SVG paths plus one hit column per category, so
|
|
9
|
+
* the component body maps over finished data. Pure: no React; colors arrive through a resolver.
|
|
10
|
+
*/
|
|
11
|
+
/** @internal `ChartCurve` → the d3 curve factory. */
|
|
7
12
|
function resolveCurve(curve) {
|
|
8
|
-
return match(curve).with(
|
|
13
|
+
return match(curve).with(ChartCurve.LINEAR, () => curveLinear).with(ChartCurve.SMOOTH, () => curveMonotoneX).with(ChartCurve.STEP, () => curveStepAfter).exhaustive();
|
|
14
|
+
}
|
|
15
|
+
/** @internal A line path through `points`, broken at gaps (`y === null`). Empty when nothing plots. */
|
|
16
|
+
function buildLinePath(points, curve) {
|
|
17
|
+
return line().defined((point) => point.y !== null).x((point) => point.x).y((point) => point.y ?? 0).curve(resolveCurve(curve))(points) ?? "";
|
|
18
|
+
}
|
|
19
|
+
/** @internal An area path from `y0` (a baseline, or each point's lower edge) to each point, broken at gaps. */
|
|
20
|
+
function buildAreaPath(points, y0, curve) {
|
|
21
|
+
return area().defined((point) => point.y !== null).x((point) => point.x).y0((_, index) => typeof y0 === "number" ? y0 : y0(index)).y1((point) => point.y ?? 0).curve(resolveCurve(curve))(points) ?? "";
|
|
9
22
|
}
|
|
10
23
|
/**
|
|
11
|
-
* The union of every line's
|
|
12
|
-
*
|
|
13
|
-
* Lines are allowed to be sparse, so the axis cannot come from any single one
|
|
14
|
-
* of them. An explicit `categories` list wins, and is worth supplying whenever
|
|
15
|
-
* the data is gappy — inferring order from a union of incomplete series is
|
|
16
|
-
* guesswork, and guessing wrong reorders time.
|
|
24
|
+
* @internal The category axis: an explicit list, else the union of every line's `x` in
|
|
25
|
+
* first-seen order (worth passing `categories` whenever lines are sparse).
|
|
17
26
|
*/
|
|
18
27
|
function getLineCategories(lines, explicit) {
|
|
19
28
|
if (explicit) return explicit;
|
|
@@ -25,110 +34,143 @@ function getLineCategories(lines, explicit) {
|
|
|
25
34
|
}
|
|
26
35
|
return seen;
|
|
27
36
|
}
|
|
28
|
-
/** Signed
|
|
37
|
+
/** @internal Signed extent across every reading, ignoring gaps, always including 0. */
|
|
29
38
|
function getLineValueDomain(lines) {
|
|
30
39
|
let min = 0;
|
|
31
40
|
let max = 0;
|
|
32
|
-
let hasValue = false;
|
|
33
41
|
for (const lineDatum of lines) for (const point of lineDatum.points) {
|
|
34
42
|
if (point.y === null || point.y === void 0) continue;
|
|
35
43
|
const value = sanitizeValue(point.y);
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
max = value;
|
|
39
|
-
hasValue = true;
|
|
40
|
-
continue;
|
|
41
|
-
}
|
|
42
|
-
if (value < min) min = value;
|
|
43
|
-
if (value > max) max = value;
|
|
44
|
+
min = Math.min(min, value);
|
|
45
|
+
max = Math.max(max, value);
|
|
44
46
|
}
|
|
45
|
-
return [
|
|
47
|
+
return [min, max];
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* @internal Each line's readings densified onto the category axis: a missing category or a `null`
|
|
51
|
+
* reading is `null`, never zero.
|
|
52
|
+
*/
|
|
53
|
+
function densifyLineValues(lines, categories) {
|
|
54
|
+
const indexOf = new Map(categories.map((label, index) => [label, index]));
|
|
55
|
+
return lines.map((lineDatum) => {
|
|
56
|
+
const values = categories.map(() => null);
|
|
57
|
+
for (const point of lineDatum.points) {
|
|
58
|
+
const index = indexOf.get(point.x);
|
|
59
|
+
if (index === void 0) continue;
|
|
60
|
+
values[index] = point.y === null || point.y === void 0 ? null : sanitizeValue(point.y);
|
|
61
|
+
}
|
|
62
|
+
return values;
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* @internal Stack offsets (AreaChart `isStacked`): for every line and category, the running total
|
|
67
|
+
* of the lines before it, in array order (`d3-shape` `stack()`). A gap contributes 0, so the stack
|
|
68
|
+
* stays a total; only the gapped line's own top edge breaks.
|
|
69
|
+
*/
|
|
70
|
+
function getStackOffsets(values) {
|
|
71
|
+
const categoryCount = values[0]?.length ?? 0;
|
|
72
|
+
const keys = values.map((_, index) => index);
|
|
73
|
+
const rows = Array.from({ length: categoryCount }, (_, category) => category);
|
|
74
|
+
const series = stack().keys(keys).value((category, key) => values[key]?.[category] ?? 0)(rows);
|
|
75
|
+
return values.map((_, index) => rows.map((category) => series[index]?.[category]?.[0] ?? 0));
|
|
76
|
+
}
|
|
77
|
+
/** @internal Extent of the stacked totals (every band's lower and upper edge), always including 0. */
|
|
78
|
+
function getStackedLineValueDomain(lines, explicitCategories) {
|
|
79
|
+
const values = densifyLineValues(lines, getLineCategories(lines, explicitCategories));
|
|
80
|
+
const offsets = getStackOffsets(values);
|
|
81
|
+
let min = 0;
|
|
82
|
+
let max = 0;
|
|
83
|
+
values.forEach((row, lineIndex) => {
|
|
84
|
+
row.forEach((value, category) => {
|
|
85
|
+
const base = offsets[lineIndex]?.[category] ?? 0;
|
|
86
|
+
const top = base + (value ?? 0);
|
|
87
|
+
min = Math.min(min, base, top);
|
|
88
|
+
max = Math.max(max, base, top);
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
return [min, max];
|
|
46
92
|
}
|
|
47
|
-
|
|
93
|
+
/** @internal `true` when no line has a single reading. */
|
|
94
|
+
function hasNoReadings(lines) {
|
|
95
|
+
return lines.every((lineDatum) => lineDatum.points.every((point) => point.y === null));
|
|
96
|
+
}
|
|
97
|
+
/** @internal Builds a line chart's paths, columns and isolated points. */
|
|
98
|
+
function buildLineChartGeometry({ lines, categories: explicitCategories, plotWidth, plotHeight, curve, domain, hasArea, isStacked = false, resolveColor }) {
|
|
48
99
|
const categories = getLineCategories(lines, explicitCategories);
|
|
49
|
-
const
|
|
50
|
-
const
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
if (categories.length === 0 || plotWidth <= 0 || plotHeight <= 0) return {
|
|
56
|
-
paths,
|
|
57
|
-
columns,
|
|
58
|
-
isolatedPoints,
|
|
100
|
+
const scale = buildValueScale(domain, [plotHeight, 0]);
|
|
101
|
+
const valueScale = (value) => scale(value);
|
|
102
|
+
const geometry = {
|
|
103
|
+
paths: [],
|
|
104
|
+
columns: [],
|
|
105
|
+
isolatedPoints: [],
|
|
59
106
|
categories,
|
|
60
107
|
valueScale,
|
|
61
108
|
step: 0
|
|
62
109
|
};
|
|
63
|
-
|
|
64
|
-
const
|
|
65
|
-
const xAt = (index) => categoryScale(categories[index]) ?? 0;
|
|
110
|
+
if (categories.length === 0 || plotWidth <= 0 || plotHeight <= 0) return geometry;
|
|
111
|
+
const categoryScale = buildCategoryPointScale(categories, [0, plotWidth]);
|
|
112
|
+
const xAt = (index) => categoryScale(categories[index] ?? "") ?? 0;
|
|
113
|
+
const baselineY = valueScale(0);
|
|
66
114
|
const pointsByCategory = categories.map(() => []);
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
115
|
+
const gapsByCategory = categories.map(() => []);
|
|
116
|
+
const valuesByLine = densifyLineValues(lines, categories);
|
|
117
|
+
const offsets = isStacked ? getStackOffsets(valuesByLine) : null;
|
|
118
|
+
lines.forEach((lineDatum, lineIndex) => {
|
|
119
|
+
const color = resolveColor(lineDatum.metric);
|
|
120
|
+
const values = valuesByLine[lineIndex] ?? [];
|
|
121
|
+
const lineOffsets = offsets?.[lineIndex];
|
|
122
|
+
const offsetAt = (index) => lineOffsets?.[index] ?? 0;
|
|
123
|
+
const plotted = values.map((value, index) => ({
|
|
124
|
+
x: xAt(index),
|
|
125
|
+
y: value === null ? null : valueScale(offsetAt(index) + value)
|
|
73
126
|
}));
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
if (index === void 0) continue;
|
|
77
|
-
plotted[index].value = point.y === null || point.y === void 0 ? null : sanitizeValue(point.y);
|
|
78
|
-
}
|
|
79
|
-
const isDefined = (p) => p.value !== null;
|
|
80
|
-
const strokePath = line().defined(isDefined).x((p) => xAt(p.categoryIndex)).y((p) => valueScale(p.value)).curve(curveFactory)(plotted) ?? "";
|
|
81
|
-
const areaPath = lineDatum.showArea ? area().defined(isDefined).x((p) => xAt(p.categoryIndex)).y0(baselineY).y1((p) => valueScale(p.value)).curve(curveFactory)(plotted) ?? void 0 : void 0;
|
|
82
|
-
paths.push({
|
|
127
|
+
const areaBase = lineOffsets ? (index) => valueScale(offsetAt(index)) : baselineY;
|
|
128
|
+
geometry.paths.push({
|
|
83
129
|
id: lineDatum.metric,
|
|
84
130
|
metric: lineDatum.metric,
|
|
85
|
-
path:
|
|
86
|
-
areaPath,
|
|
87
|
-
|
|
88
|
-
strokeWidth: stroke,
|
|
131
|
+
path: buildLinePath(plotted, curve),
|
|
132
|
+
...hasArea && { areaPath: buildAreaPath(plotted, areaBase, curve) },
|
|
133
|
+
isDashed: lineDatum.isDashed ?? false,
|
|
89
134
|
color
|
|
90
135
|
});
|
|
91
|
-
|
|
92
|
-
if (
|
|
136
|
+
values.forEach((value, index) => {
|
|
137
|
+
if (value === null) {
|
|
138
|
+
gapsByCategory[index]?.push(lineDatum.metric);
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
93
141
|
const point = {
|
|
94
|
-
id: `${lineDatum.metric}:${
|
|
142
|
+
id: `${lineDatum.metric}:${index}`,
|
|
95
143
|
metric: lineDatum.metric,
|
|
96
|
-
value
|
|
97
|
-
x: xAt(
|
|
98
|
-
y: valueScale(
|
|
144
|
+
value,
|
|
145
|
+
x: xAt(index),
|
|
146
|
+
y: valueScale(offsetAt(index) + value),
|
|
99
147
|
color
|
|
100
148
|
};
|
|
101
|
-
pointsByCategory[
|
|
102
|
-
const hasPrev = index > 0 &&
|
|
103
|
-
const hasNext = index <
|
|
104
|
-
if (!hasPrev && !hasNext) isolatedPoints.push(point);
|
|
149
|
+
pointsByCategory[index]?.push(point);
|
|
150
|
+
const hasPrev = index > 0 && values[index - 1] !== null;
|
|
151
|
+
const hasNext = index < values.length - 1 && values[index + 1] !== null;
|
|
152
|
+
if (!hasPrev && !hasNext) geometry.isolatedPoints.push(point);
|
|
105
153
|
});
|
|
106
154
|
});
|
|
107
155
|
const step = categories.length > 1 ? categoryScale.step() : plotWidth;
|
|
156
|
+
geometry.step = step;
|
|
108
157
|
categories.forEach((label, index) => {
|
|
109
158
|
const x = xAt(index);
|
|
110
|
-
const points = pointsByCategory[index];
|
|
159
|
+
const points = pointsByCategory[index] ?? [];
|
|
111
160
|
const rawBandX = x - step / 2;
|
|
112
161
|
const bandX = Math.max(0, rawBandX);
|
|
113
|
-
|
|
114
|
-
columns.push({
|
|
162
|
+
geometry.columns.push({
|
|
115
163
|
categoryIndex: index,
|
|
116
164
|
label,
|
|
117
165
|
x,
|
|
118
166
|
bandX,
|
|
119
|
-
bandWidth,
|
|
167
|
+
bandWidth: Math.min(plotWidth, rawBandX + step) - bandX,
|
|
120
168
|
points,
|
|
121
|
-
|
|
169
|
+
gaps: gapsByCategory[index] ?? [],
|
|
170
|
+
anchorY: points.length > 0 ? Math.min(...points.map((point) => point.y)) : baselineY
|
|
122
171
|
});
|
|
123
172
|
});
|
|
124
|
-
return
|
|
125
|
-
paths,
|
|
126
|
-
columns,
|
|
127
|
-
isolatedPoints,
|
|
128
|
-
categories,
|
|
129
|
-
valueScale,
|
|
130
|
-
step
|
|
131
|
-
};
|
|
173
|
+
return geometry;
|
|
132
174
|
}
|
|
133
175
|
//#endregion
|
|
134
|
-
export { buildLineChartGeometry, getLineValueDomain };
|
|
176
|
+
export { buildAreaPath, buildLineChartGeometry, buildLinePath, densifyLineValues, getLineCategories, getLineValueDomain, getStackOffsets, getStackedLineValueDomain, hasNoReadings, resolveCurve };
|
|
@@ -1,60 +1,86 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ChartSeriesColor } from "./chartPalette.js";
|
|
2
|
+
/** @internal Key of the folded "Other" slice in events, selection and the legend. */
|
|
3
|
+
export declare const AGGREGATED_SLICE_KEY = "__other__";
|
|
4
|
+
/** @internal Default share below which a slice folds into "Other" (1.x). */
|
|
5
|
+
export declare const PIE_MIN_SLICE_SHARE = 0.02;
|
|
6
|
+
/** @internal Donut hole as a fraction of the outer radius (1.x). */
|
|
7
|
+
export declare const PIE_DONUT_INNER_RATIO = 0.62;
|
|
8
|
+
/** @internal Slice corner radius: `radius.sm`. */
|
|
9
|
+
export declare const PIE_CORNER_RADIUS: number;
|
|
2
10
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* Produces a flat array of finished arcs — path, anchor, colour and share all
|
|
6
|
-
* resolved — so the component body is a `.map()`.
|
|
7
|
-
*
|
|
8
|
-
* Pure: no React, no theme access. Colours arrive through a resolver callback.
|
|
11
|
+
* @internal Share of the narrowest slice its two inner pad insets may consume (1.x). A solid pie
|
|
12
|
+
* keeps a tiny hole so every gap stays radial instead of collapsing at the center.
|
|
9
13
|
*/
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
14
|
+
export declare const PIE_MAX_INSET_SHARE = 0.7;
|
|
15
|
+
/** @internal Ceiling on that auto inner radius, as a share of the outer radius (1.x). */
|
|
16
|
+
export declare const PIE_MAX_AUTO_INNER_RATIO = 0.06;
|
|
17
|
+
/** @internal One slice after clamping and folding: everything that comes from the data alone. */
|
|
18
|
+
export interface PieChartSlice {
|
|
19
|
+
/** The slice key, or `AGGREGATED_SLICE_KEY` for the folded slice. */
|
|
13
20
|
id: string;
|
|
21
|
+
/** Slice label. */
|
|
14
22
|
label: string;
|
|
15
|
-
/**
|
|
23
|
+
/** The slice's value (the folded slice: the sum). */
|
|
16
24
|
value: number;
|
|
17
25
|
/** Share of the total, 0–1. */
|
|
18
26
|
share: number;
|
|
19
|
-
/**
|
|
27
|
+
/** Resolved color. */
|
|
28
|
+
color: ChartSeriesColor;
|
|
29
|
+
}
|
|
30
|
+
/** @internal One rendered arc: a slice plus the parts that depend on the measured plot. */
|
|
31
|
+
export interface PieChartArc extends PieChartSlice {
|
|
32
|
+
/** Arc `d`, around the origin. */
|
|
20
33
|
path: string;
|
|
21
|
-
/**
|
|
34
|
+
/** Tooltip anchor just outside the arc's bisector, plot coordinates. */
|
|
22
35
|
anchorX: number;
|
|
36
|
+
/** Tooltip anchor y. */
|
|
23
37
|
anchorY: number;
|
|
24
|
-
color: string;
|
|
25
38
|
}
|
|
39
|
+
/** @internal The finished geometry. */
|
|
26
40
|
export interface PieChartGeometry {
|
|
41
|
+
/** Arcs clockwise from 12 o'clock, index-aligned with the slices; empty until measured. */
|
|
27
42
|
arcs: PieChartArc[];
|
|
28
|
-
/**
|
|
43
|
+
/** Center x, plot coordinates. */
|
|
29
44
|
centerX: number;
|
|
45
|
+
/** Center y. */
|
|
30
46
|
centerY: number;
|
|
47
|
+
/** The hole's radius (0-ish for a solid pie). */
|
|
31
48
|
innerRadius: number;
|
|
49
|
+
/** The outer radius. */
|
|
50
|
+
outerRadius: number;
|
|
51
|
+
}
|
|
52
|
+
/** @internal Inputs of `resolvePieChartSlices`. */
|
|
53
|
+
export interface ResolvePieChartSlicesArgs<TSlice extends string> {
|
|
54
|
+
/** Slices in array order. */
|
|
55
|
+
slices: {
|
|
56
|
+
key: TSlice;
|
|
57
|
+
value: number;
|
|
58
|
+
}[];
|
|
59
|
+
/** Fold slices under this share; 0 draws every slice. */
|
|
60
|
+
minSliceShare: number;
|
|
61
|
+
/** Label of the folded slice. */
|
|
62
|
+
aggregatedLabel: string;
|
|
63
|
+
/** Color of a slice; `null` is the folded slice. */
|
|
64
|
+
resolveColor: (sliceKey: TSlice | null) => ChartSeriesColor;
|
|
65
|
+
/** Label of a slice. */
|
|
66
|
+
getSliceLabel: (sliceKey: TSlice) => string;
|
|
32
67
|
}
|
|
33
|
-
|
|
34
|
-
|
|
68
|
+
/**
|
|
69
|
+
* @internal The size-free half: clamps negatives to 0, folds the tail under `minSliceShare` into
|
|
70
|
+
* one slice (last), drops zero slices, and resolves labels, shares and colors. Runs from data
|
|
71
|
+
* alone, so the server render already knows the slice count and the legend.
|
|
72
|
+
*/
|
|
73
|
+
export declare function resolvePieChartSlices<TSlice extends string>({ slices, minSliceShare, aggregatedLabel, resolveColor, getSliceLabel, }: ResolvePieChartSlicesArgs<TSlice>): PieChartSlice[];
|
|
74
|
+
/** @internal Inputs of `buildPieChartGeometry`. */
|
|
75
|
+
export interface BuildPieChartGeometryArgs {
|
|
76
|
+
/** The resolved slices (`resolvePieChartSlices`). */
|
|
77
|
+
slices: PieChartSlice[];
|
|
78
|
+
/** Plot width. */
|
|
35
79
|
plotWidth: number;
|
|
80
|
+
/** Plot height. */
|
|
36
81
|
plotHeight: number;
|
|
37
|
-
/**
|
|
38
|
-
|
|
39
|
-
padAngle?: number;
|
|
40
|
-
cornerRadius?: number;
|
|
41
|
-
/**
|
|
42
|
-
* Slices below this share of the total are folded into one bucket.
|
|
43
|
-
*
|
|
44
|
-
* `0` disables folding. A donut with forty slivers communicates nothing, and
|
|
45
|
-
* the slivers are individually unhoverable, so a modest default is kinder
|
|
46
|
-
* than faithfully rendering every one.
|
|
47
|
-
*/
|
|
48
|
-
minSliceShare?: number;
|
|
49
|
-
/** Label for the folded bucket. */
|
|
50
|
-
aggregatedLabel?: string;
|
|
51
|
-
resolveColor: (args: {
|
|
52
|
-
sliceKey: TSlice | null;
|
|
53
|
-
explicit?: ChartPalette;
|
|
54
|
-
}) => string;
|
|
55
|
-
/** Palette override declared by the caller for a given slice. */
|
|
56
|
-
getSliceColor?: (sliceKey: TSlice) => ChartPalette | undefined;
|
|
57
|
-
getSliceLabel: (sliceKey: TSlice) => string;
|
|
82
|
+
/** Solid pie instead of a donut. */
|
|
83
|
+
isSolid: boolean;
|
|
58
84
|
}
|
|
59
|
-
|
|
60
|
-
export {};
|
|
85
|
+
/** @internal The size-bound half: radii, center, arc paths and tooltip anchors. */
|
|
86
|
+
export declare function buildPieChartGeometry({ slices, plotWidth, plotHeight, isSolid, }: BuildPieChartGeometryArgs): PieChartGeometry;
|