@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.
- 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 +136 -116
- 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 +32 -20
- package/dist/charts/ChartFrame.d.ts +69 -116
- package/dist/charts/ChartFrame.js +253 -119
- package/dist/charts/ChartGroupProvider.d.ts +30 -41
- package/dist/charts/ChartGroupProvider.js +20 -7
- package/dist/charts/ChartLegend.d.ts +27 -48
- package/dist/charts/ChartLegend.js +206 -125
- package/dist/charts/ChartMarkTargets.d.ts +12 -28
- package/dist/charts/ChartMarkTargets.js +33 -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 +295 -0
- package/dist/charts/LineChart.d.ts +54 -47
- package/dist/charts/LineChart.js +159 -117
- package/dist/charts/PieChart.d.ts +32 -53
- package/dist/charts/PieChart.js +149 -135
- 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/constants.d.ts +96 -256
- package/dist/charts/constants.js +105 -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 +197 -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 +47 -116
- package/dist/charts/useChartInteraction.js +95 -71
- 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 +81 -17
- package/dist/drawer/Drawer.js +370 -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 +292 -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 +1077 -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 +99 -0
- package/dist/timeline/Timeline.js +269 -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 +851 -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 -27
- package/dist/inputs/SwitcherInput.js +0 -64
- 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,129 +1,263 @@
|
|
|
1
|
+
import Skeleton, { SkeletonVariant } from "../feedback/Skeleton.js";
|
|
1
2
|
import { ChartKind, ChartLegendPlacement } from "./types.js";
|
|
2
|
-
import "./constants.js";
|
|
3
|
-
import
|
|
4
|
-
import ChartCategoryTargets from "./ChartCategoryTargets.js";
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
3
|
+
import { CHART_LEGEND_SIDE_GAP } from "./constants.js";
|
|
4
|
+
import EmptyState, { EmptyStateSize } from "../feedback/EmptyState.js";
|
|
5
|
+
import { ChartCategoryTargets } from "./ChartCategoryTargets.js";
|
|
6
|
+
import { ChartLegend } from "./ChartLegend.js";
|
|
7
|
+
import { ChartMarkTargets } from "./ChartMarkTargets.js";
|
|
8
|
+
import { ChartTooltip } from "./ChartTooltip.js";
|
|
9
|
+
/* empty css */
|
|
10
|
+
import { styled } from "@linaria/react";
|
|
11
|
+
import { useCallback, useMemo, useState } from "react";
|
|
11
12
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
13
|
+
import { cx } from "@linaria/core";
|
|
12
14
|
//#region src/charts/ChartFrame.tsx
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
15
|
+
/**
|
|
16
|
+
* @internal The shell every chart renders into: the root (sizing, legend placement, passthrough),
|
|
17
|
+
* the measured plot box (one tab stop when interactive), the SVG and its inset translate, axes,
|
|
18
|
+
* marks, hit targets, the in-chart tooltip, the empty and loading overlays, the live region and
|
|
19
|
+
* the legend. It knows nothing about scales or geometry: axes and marks arrive as nodes, and every
|
|
20
|
+
* coordinate handed to it is in plot space (the frame adds the insets once).
|
|
21
|
+
*
|
|
22
|
+
* Sizing: the root fills its parent (`width` / `height: 100%`); against a parent of indefinite
|
|
23
|
+
* height the percentage computes to `auto` and `aspect-ratio: var(--gx-chart-aspect-ratio)`
|
|
24
|
+
* applies, so a chart never needs a size prop and never collapses to 0×0.
|
|
25
|
+
*/
|
|
26
|
+
var Root = /*#__PURE__*/ styled("div")({
|
|
27
|
+
name: "Root",
|
|
28
|
+
class: "gx-ChartFrame-rd05unv",
|
|
29
|
+
propsAsIs: false
|
|
30
|
+
});
|
|
31
|
+
/** @internal Legend placement → root layout. */
|
|
32
|
+
var CHART_LEGEND_PLACEMENT_TO_CSS_MAP = {
|
|
33
|
+
[ChartLegendPlacement.BOTTOM]: "gx-ChartFrame-ChartLegendPlacement_BOTTOM-c1m9ui7b",
|
|
34
|
+
[ChartLegendPlacement.RIGHT]: "gx-ChartFrame-ChartLegendPlacement_RIGHT-cq532vv"
|
|
35
|
+
};
|
|
36
|
+
/** The measured element; anchors the SVG, overlays and tooltip. */
|
|
37
|
+
var PlotBox = /*#__PURE__*/ styled("div")({
|
|
38
|
+
name: "PlotBox",
|
|
39
|
+
class: "gx-ChartFrame-PlotBox-pl7aabu",
|
|
40
|
+
propsAsIs: false
|
|
41
|
+
});
|
|
42
|
+
/** The plot box as one tab stop: the focus ring draws around the plot, not the whole chart. */
|
|
43
|
+
var PLOT_INTERACTIVE_CSS = "gx-ChartFrame-PLOT_INTERACTIVE_CSS-p27fgao";
|
|
44
|
+
var ChartSvg = /*#__PURE__*/ styled("svg")({
|
|
45
|
+
name: "ChartSvg",
|
|
46
|
+
class: "gx-ChartFrame-ChartSvg-c1n7y3iq",
|
|
47
|
+
propsAsIs: false
|
|
48
|
+
});
|
|
49
|
+
/** The empty-state overlay: over the plot box only, so the axes keep their size. */
|
|
50
|
+
var Overlay = /*#__PURE__*/ styled("div")({
|
|
51
|
+
name: "Overlay",
|
|
52
|
+
class: "gx-ChartFrame-Overlay-o1itt7vl",
|
|
53
|
+
propsAsIs: false
|
|
54
|
+
});
|
|
55
|
+
/** A standalone `Skeleton RECT` that takes the whole plot box. */
|
|
56
|
+
var LOADING_SKELETON_CSS = "gx-ChartFrame-LOADING_SKELETON_CSS-l1oi7u1q";
|
|
57
|
+
var LiveRegion = /*#__PURE__*/ styled("div")({
|
|
58
|
+
name: "LiveRegion",
|
|
59
|
+
class: "gx-ChartFrame-LiveRegion-l1jrxj0u",
|
|
60
|
+
propsAsIs: false
|
|
61
|
+
});
|
|
62
|
+
/** The default accessible name, phrased once so the charts cannot drift. */
|
|
63
|
+
function deriveAriaLabel(kind, categories, series) {
|
|
64
|
+
switch (kind) {
|
|
65
|
+
case ChartKind.LINE: return `Line chart, ${categories} categories, ${series} series`;
|
|
66
|
+
case ChartKind.AREA: return `Area chart, ${categories} categories, ${series} series`;
|
|
67
|
+
case ChartKind.BAR: return `Bar chart, ${categories} categories, ${series} series`;
|
|
68
|
+
case ChartKind.PIE: return `Pie chart, ${categories} slices`;
|
|
69
|
+
case ChartKind.HEATMAP: return `Heatmap, ${categories} cells`;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/** The live-region sentence for a category: "Q2. Revenue 1,200. Cost 800." */
|
|
73
|
+
function describeTooltip(model) {
|
|
74
|
+
if (model === null) return "";
|
|
75
|
+
if (model.rows.length === 0) return `${model.label}. No data.`;
|
|
76
|
+
const rows = model.rows.map((row) => `${row.label} ${row.value === null ? "no data" : row.formattedValue}.`);
|
|
77
|
+
return `${model.label}. ${rows.join(" ")}`;
|
|
78
|
+
}
|
|
79
|
+
var NAVIGATION_KEYS = new Set([
|
|
80
|
+
"ArrowRight",
|
|
81
|
+
"ArrowLeft",
|
|
82
|
+
"ArrowUp",
|
|
83
|
+
"ArrowDown",
|
|
84
|
+
"Home",
|
|
85
|
+
"End"
|
|
86
|
+
]);
|
|
87
|
+
/** @internal The chart shell. */
|
|
88
|
+
function ChartFrame({ rootRef, plotRef, id, className, style, rest, dimensions, interaction, kind, categoryCount, ariaLabel, aspectRatio, axes, children, plotOverlay, plotClassName, describeCategory, hasTooltip, buildCategoryTooltip, renderTooltip, categoryTargets, markTargets, targetsTransform, onCategorySelect, onMarkSelect, anchorHalfWidth, placeAwayFromX, verticalAlign, isEmpty, isLoading, placeholder, hasLegend, legendItems, legendPlacement, legendSwatch, tooltipSwatch, legend }) {
|
|
89
|
+
const { width, height, insets, isMeasured } = dimensions;
|
|
90
|
+
const [announcement, setAnnouncement] = useState("");
|
|
91
|
+
const { rootPassthrough, plotAria } = useMemo(() => {
|
|
92
|
+
const root = {};
|
|
93
|
+
const aria = {};
|
|
94
|
+
for (const [key, value] of Object.entries(rest)) if (key.startsWith("aria-")) aria[key] = value;
|
|
95
|
+
else root[key] = value;
|
|
96
|
+
return {
|
|
97
|
+
rootPassthrough: root,
|
|
98
|
+
plotAria: aria
|
|
99
|
+
};
|
|
100
|
+
}, [rest]);
|
|
101
|
+
const { "aria-label": passedAriaLabel, ...plotAriaRest } = plotAria;
|
|
102
|
+
const resolvedAriaLabel = ariaLabel ?? (typeof passedAriaLabel === "string" ? passedAriaLabel : void 0) ?? deriveAriaLabel(kind, categoryCount, legendItems.length);
|
|
103
|
+
const isInteractive = (hasTooltip || onCategorySelect !== void 0) && !isLoading && !isEmpty;
|
|
27
104
|
const tooltipModel = useMemo(() => {
|
|
28
|
-
if (
|
|
105
|
+
if (!hasTooltip || isLoading || !interaction.showTooltip || interaction.activeIndex === null) return null;
|
|
29
106
|
const model = buildCategoryTooltip(interaction.activeIndex);
|
|
30
|
-
if (model === null) return null;
|
|
31
|
-
|
|
32
|
-
|
|
107
|
+
if (model === null || model.rows.length === 0 && renderTooltip !== void 0) return null;
|
|
108
|
+
return {
|
|
109
|
+
...model,
|
|
110
|
+
anchorX: model.anchorX + insets.left,
|
|
111
|
+
anchorY: model.anchorY + insets.top
|
|
112
|
+
};
|
|
33
113
|
}, [
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
interaction.activeIndex,
|
|
114
|
+
hasTooltip,
|
|
115
|
+
isLoading,
|
|
37
116
|
interaction.showTooltip,
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
* Memoized for correctness, not arithmetic cost. `ChartTooltip` retains the
|
|
44
|
-
* last model by *identity* so it can keep its content while fading out, and
|
|
45
|
-
* adjusts that state during render when the identity changes. A fresh object
|
|
46
|
-
* on every parent render would therefore trigger an extra render pass on
|
|
47
|
-
* every render — including every pointer move — without ever looping or
|
|
48
|
-
* visibly breaking.
|
|
49
|
-
*/
|
|
50
|
-
const positionedTooltip = useMemo(() => tooltipModel === null ? null : {
|
|
51
|
-
...tooltipModel,
|
|
52
|
-
anchorX: tooltipModel.anchorX + margin.left,
|
|
53
|
-
anchorY: tooltipModel.anchorY + margin.top
|
|
54
|
-
}, [
|
|
55
|
-
tooltipModel,
|
|
56
|
-
margin.left,
|
|
57
|
-
margin.top
|
|
117
|
+
interaction.activeIndex,
|
|
118
|
+
buildCategoryTooltip,
|
|
119
|
+
renderTooltip,
|
|
120
|
+
insets.left,
|
|
121
|
+
insets.top
|
|
58
122
|
]);
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
123
|
+
const announce = useCallback((index) => {
|
|
124
|
+
if (index === null) setAnnouncement("");
|
|
125
|
+
else if (describeCategory) setAnnouncement(describeCategory(index));
|
|
126
|
+
else setAnnouncement(describeTooltip(buildCategoryTooltip(index)));
|
|
127
|
+
}, [buildCategoryTooltip, describeCategory]);
|
|
128
|
+
const handleKeyDown = (event) => {
|
|
129
|
+
if (event.target !== event.currentTarget) return;
|
|
130
|
+
if (NAVIGATION_KEYS.has(event.key)) {
|
|
131
|
+
const next = interaction.onKeyboardMove(event.key);
|
|
132
|
+
if (next === null) return;
|
|
133
|
+
event.preventDefault();
|
|
134
|
+
announce(next);
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
if (event.key === "Enter" || event.key === " ") {
|
|
138
|
+
if (event.key === " ") event.preventDefault();
|
|
139
|
+
if (onCategorySelect && interaction.activeIndex !== null) {
|
|
140
|
+
event.preventDefault();
|
|
141
|
+
onCategorySelect(interaction.activeIndex);
|
|
142
|
+
}
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
if (event.key === "Escape" && interaction.activeIndex !== null) {
|
|
146
|
+
event.preventDefault();
|
|
147
|
+
event.stopPropagation();
|
|
148
|
+
interaction.onKeyboardClear();
|
|
149
|
+
setAnnouncement("");
|
|
150
|
+
}
|
|
151
|
+
};
|
|
152
|
+
const handleFocus = (event) => {
|
|
153
|
+
if (event.target !== event.currentTarget) return;
|
|
154
|
+
let isKeyboardFocus = true;
|
|
155
|
+
try {
|
|
156
|
+
isKeyboardFocus = event.currentTarget.matches(":focus-visible");
|
|
157
|
+
} catch {}
|
|
158
|
+
if (isKeyboardFocus) announce(interaction.onKeyboardFocus());
|
|
159
|
+
};
|
|
160
|
+
const handleBlur = (event) => {
|
|
161
|
+
if (event.target !== event.currentTarget) return;
|
|
162
|
+
interaction.onKeyboardBlur();
|
|
163
|
+
};
|
|
164
|
+
const plotA11yProps = isInteractive ? {
|
|
165
|
+
tabIndex: 0,
|
|
166
|
+
role: "group",
|
|
167
|
+
"aria-roledescription": "chart",
|
|
168
|
+
"aria-label": resolvedAriaLabel,
|
|
169
|
+
onKeyDown: handleKeyDown,
|
|
170
|
+
onFocus: handleFocus,
|
|
171
|
+
onBlur: handleBlur
|
|
172
|
+
} : {
|
|
173
|
+
role: "img",
|
|
174
|
+
"aria-label": resolvedAriaLabel
|
|
175
|
+
};
|
|
176
|
+
const isSkeleton = isLoading && isEmpty;
|
|
177
|
+
const hasTargets = isMeasured && isInteractive && categoryTargets.length > 0;
|
|
178
|
+
const rootStyle = {
|
|
179
|
+
"--gx-chart-aspect-ratio": aspectRatio,
|
|
180
|
+
...style
|
|
181
|
+
};
|
|
182
|
+
return /* @__PURE__ */ jsxs(Root, {
|
|
183
|
+
...rootPassthrough,
|
|
184
|
+
ref: rootRef,
|
|
185
|
+
id,
|
|
186
|
+
"aria-busy": isLoading || void 0,
|
|
187
|
+
className: cx(CHART_LEGEND_PLACEMENT_TO_CSS_MAP[legendPlacement], className),
|
|
188
|
+
style: rootStyle,
|
|
189
|
+
children: [
|
|
190
|
+
/* @__PURE__ */ jsxs(PlotBox, {
|
|
191
|
+
...plotAriaRest,
|
|
192
|
+
...plotA11yProps,
|
|
193
|
+
ref: plotRef,
|
|
194
|
+
className: cx(isInteractive && PLOT_INTERACTIVE_CSS, plotClassName),
|
|
195
|
+
children: [
|
|
196
|
+
isMeasured && !isSkeleton && /* @__PURE__ */ jsx(ChartSvg, {
|
|
197
|
+
"aria-hidden": "true",
|
|
198
|
+
width,
|
|
199
|
+
height,
|
|
200
|
+
children: /* @__PURE__ */ jsxs("g", {
|
|
201
|
+
transform: `translate(${insets.left}, ${insets.top})`,
|
|
202
|
+
children: [
|
|
203
|
+
axes,
|
|
204
|
+
/* @__PURE__ */ jsx("g", { children }),
|
|
205
|
+
hasTargets && /* @__PURE__ */ jsxs("g", {
|
|
206
|
+
transform: targetsTransform,
|
|
207
|
+
children: [/* @__PURE__ */ jsx(ChartCategoryTargets, {
|
|
208
|
+
targets: categoryTargets,
|
|
209
|
+
onEnter: interaction.onCategoryEnter,
|
|
210
|
+
onLeave: interaction.onCategoryLeave,
|
|
211
|
+
onSelect: onCategorySelect
|
|
212
|
+
}), onMarkSelect && markTargets && markTargets.length > 0 && /* @__PURE__ */ jsx(ChartMarkTargets, {
|
|
213
|
+
targets: markTargets,
|
|
214
|
+
onEnter: interaction.onCategoryEnter,
|
|
215
|
+
onLeave: interaction.onCategoryLeave,
|
|
216
|
+
onSelect: onMarkSelect
|
|
217
|
+
})]
|
|
218
|
+
})
|
|
219
|
+
]
|
|
220
|
+
})
|
|
221
|
+
}),
|
|
222
|
+
isMeasured && !isSkeleton && plotOverlay,
|
|
223
|
+
isMeasured && isEmpty && !isLoading && /* @__PURE__ */ jsx(Overlay, { children: /* @__PURE__ */ jsx(EmptyState, {
|
|
224
|
+
size: EmptyStateSize.SMALL,
|
|
225
|
+
header: placeholder,
|
|
226
|
+
role: "status"
|
|
227
|
+
}) }),
|
|
228
|
+
isSkeleton && /* @__PURE__ */ jsx(Skeleton, {
|
|
229
|
+
variant: SkeletonVariant.RECT,
|
|
230
|
+
className: LOADING_SKELETON_CSS
|
|
231
|
+
}),
|
|
232
|
+
isMeasured && hasTooltip && !isSkeleton && /* @__PURE__ */ jsx(ChartTooltip, {
|
|
233
|
+
model: tooltipModel,
|
|
234
|
+
containerWidth: width,
|
|
235
|
+
containerHeight: height,
|
|
236
|
+
anchorHalfWidth,
|
|
237
|
+
placeAwayFromX: placeAwayFromX === void 0 ? void 0 : placeAwayFromX + insets.left,
|
|
238
|
+
verticalAlign,
|
|
239
|
+
renderTooltip,
|
|
240
|
+
swatch: tooltipSwatch
|
|
241
|
+
}),
|
|
242
|
+
/* @__PURE__ */ jsx(LiveRegion, {
|
|
243
|
+
"aria-live": "polite",
|
|
244
|
+
children: announcement
|
|
245
|
+
})
|
|
246
|
+
]
|
|
247
|
+
}),
|
|
248
|
+
hasLegend && !isSkeleton && legend,
|
|
249
|
+
hasLegend && !isSkeleton && legend === void 0 && /* @__PURE__ */ jsx(ChartLegend, {
|
|
250
|
+
items: legendItems,
|
|
251
|
+
placement: legendPlacement,
|
|
252
|
+
swatch: legendSwatch,
|
|
253
|
+
inset: legendPlacement === ChartLegendPlacement.RIGHT ? CHART_LEGEND_SIDE_GAP : insets.left,
|
|
254
|
+
extent: legendPlacement === ChartLegendPlacement.RIGHT ? height : 0,
|
|
255
|
+
hoveredKey: interaction.hoveredSeriesKey,
|
|
256
|
+
onItemEnter: interaction.onSeriesEnter,
|
|
257
|
+
onItemLeave: interaction.onSeriesLeave
|
|
258
|
+
})
|
|
259
|
+
]
|
|
126
260
|
});
|
|
127
|
-
}
|
|
261
|
+
}
|
|
128
262
|
//#endregion
|
|
129
|
-
export { ChartFrame
|
|
263
|
+
export { ChartFrame };
|
|
@@ -1,57 +1,46 @@
|
|
|
1
|
-
import { type PropsWithChildren } from "react";
|
|
2
1
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* ChartGroupProvider links the cartesian charts inside it: hovering or arrowing to a category in
|
|
3
|
+
* one chart shows the same category in every sibling, matched by raw category label. It renders
|
|
4
|
+
* no DOM. Only `LineChart`, `AreaChart` and `BarChart` join; each syncs with its nearest provider,
|
|
5
|
+
* so a nested provider isolates a subset. Series (legend) hover stays local, and `PieChart` never
|
|
6
|
+
* syncs (it has no category axis).
|
|
7
|
+
*
|
|
8
|
+
* Plain context state is the right transport: entries change once per category crossed, not per
|
|
9
|
+
* pointer move, so a sweep across a chart re-renders the group a handful of times.
|
|
5
10
|
*/
|
|
11
|
+
import { type ReactNode } from "react";
|
|
12
|
+
/** @internal The category one chart is engaging (hover or keyboard), broadcast to its siblings. */
|
|
6
13
|
export interface ChartGroupSyncEntry {
|
|
7
|
-
/** `useId` of the chart
|
|
14
|
+
/** `useId` of the chart that produced this entry. */
|
|
8
15
|
sourceId: string;
|
|
9
|
-
/**
|
|
10
|
-
* The raw category label under the pointer — never `labelFormatter` output,
|
|
11
|
-
* so two charts formatting the same label differently still match.
|
|
12
|
-
*/
|
|
16
|
+
/** The raw category label, never `labelFormatter` output, so differently formatted charts still match. */
|
|
13
17
|
categoryKey: string;
|
|
14
18
|
}
|
|
19
|
+
/** @internal What the provider shares with its charts. */
|
|
15
20
|
export interface ChartGroupContextValue {
|
|
21
|
+
/** The engaged category, or `null`. */
|
|
16
22
|
activeEntry: ChartGroupSyncEntry | null;
|
|
23
|
+
/** Publishes an entry (deduplicated by value). */
|
|
17
24
|
setActive: (entry: ChartGroupSyncEntry) => void;
|
|
18
|
-
/** Clears only if
|
|
25
|
+
/** Clears the entry only if it belongs to `sourceId`. */
|
|
19
26
|
clearActive: (sourceId: string) => void;
|
|
20
27
|
/** Followers open their own tooltip at the synced category. */
|
|
21
|
-
|
|
28
|
+
shouldShareTooltip: boolean;
|
|
22
29
|
}
|
|
30
|
+
/** @internal Read by the chart modules; apps never read it. */
|
|
23
31
|
export declare const ChartGroupContext: import("react").Context<ChartGroupContextValue | null>;
|
|
24
|
-
/**
|
|
25
|
-
* Shares the hovered category between the cartesian charts inside it.
|
|
26
|
-
*
|
|
27
|
-
* Hovering a category in one chart shows the same category emphasized in every
|
|
28
|
-
* sibling — matched by raw category label, so charts whose category sets only
|
|
29
|
-
* partially overlap simply show nothing for the labels they lack. By default
|
|
30
|
-
* the tooltip stays local to the chart under the pointer; siblings get the
|
|
31
|
-
* quiet emphasis only (LineChart its cursor line and dots, BarChart its band
|
|
32
|
-
* tint and gentle dim). `sharedTooltip` opts every synced chart into opening its
|
|
33
|
-
* own tooltip at the shared category — the tooltip anchors to the category's
|
|
34
|
-
* geometry, not the pointer, so a follower's opens exactly where a local
|
|
35
|
-
* hover's would.
|
|
36
|
-
*
|
|
37
|
-
* Scope, deliberately narrow:
|
|
38
|
-
* - Only the category axis syncs. Legend (series) hover stays local.
|
|
39
|
-
* - PieChart never participates — it has no category axis.
|
|
40
|
-
* - There is no per-chart opt-out prop. The opt-out is rendering the chart
|
|
41
|
-
* outside the provider, and nesting a second provider isolates a subset —
|
|
42
|
-
* charts sync with their nearest ancestor.
|
|
43
|
-
*
|
|
44
|
-
* Renders no DOM and holds no layout opinion — unlike `OverlayProvider` it is
|
|
45
|
-
* not a page-root singleton, and several can coexist on a page.
|
|
46
|
-
*
|
|
47
|
-
* Plain context state is the right transport here: entries change at category
|
|
48
|
-
* granularity (once per hit band crossed, not per mousemove), so a sweep
|
|
49
|
-
* across a chart re-renders the group a handful of times. No subscription or
|
|
50
|
-
* selector machinery is warranted.
|
|
51
|
-
*/
|
|
52
32
|
export interface ChartGroupProviderProps {
|
|
53
|
-
/**
|
|
54
|
-
|
|
33
|
+
/**
|
|
34
|
+
* Every synced chart opens its own tooltip at the shared category. Off: siblings show only the quiet emphasis (cursor, band).
|
|
35
|
+
* @default false
|
|
36
|
+
*/
|
|
37
|
+
shouldShareTooltip?: boolean;
|
|
38
|
+
/** The charts (and any layout around them). Only `LineChart`, `AreaChart` and `BarChart` join the sync; they sync with their nearest provider. */
|
|
39
|
+
children?: ReactNode;
|
|
40
|
+
}
|
|
41
|
+
/** Syncs the hovered or focused category across the cartesian charts inside it. */
|
|
42
|
+
declare function ChartGroupProvider({ shouldShareTooltip, children }: ChartGroupProviderProps): import("react").JSX.Element;
|
|
43
|
+
declare namespace ChartGroupProvider {
|
|
44
|
+
var displayName: string;
|
|
55
45
|
}
|
|
56
|
-
export declare const ChartGroupProvider: ({ sharedTooltip, children, }: PropsWithChildren<ChartGroupProviderProps>) => import("react").JSX.Element;
|
|
57
46
|
export default ChartGroupProvider;
|
|
@@ -1,8 +1,20 @@
|
|
|
1
1
|
import { createContext, useCallback, useMemo, useState } from "react";
|
|
2
2
|
import { jsx } from "react/jsx-runtime";
|
|
3
3
|
//#region src/charts/ChartGroupProvider.tsx
|
|
4
|
+
/**
|
|
5
|
+
* ChartGroupProvider links the cartesian charts inside it: hovering or arrowing to a category in
|
|
6
|
+
* one chart shows the same category in every sibling, matched by raw category label. It renders
|
|
7
|
+
* no DOM. Only `LineChart`, `AreaChart` and `BarChart` join; each syncs with its nearest provider,
|
|
8
|
+
* so a nested provider isolates a subset. Series (legend) hover stays local, and `PieChart` never
|
|
9
|
+
* syncs (it has no category axis).
|
|
10
|
+
*
|
|
11
|
+
* Plain context state is the right transport: entries change once per category crossed, not per
|
|
12
|
+
* pointer move, so a sweep across a chart re-renders the group a handful of times.
|
|
13
|
+
*/
|
|
14
|
+
/** @internal Read by the chart modules; apps never read it. */
|
|
4
15
|
var ChartGroupContext = createContext(null);
|
|
5
|
-
|
|
16
|
+
/** Syncs the hovered or focused category across the cartesian charts inside it. */
|
|
17
|
+
function ChartGroupProvider({ shouldShareTooltip = false, children }) {
|
|
6
18
|
const [activeEntry, setActiveEntry] = useState(null);
|
|
7
19
|
const setActive = useCallback((entry) => {
|
|
8
20
|
setActiveEntry((prev) => prev !== null && prev.sourceId === entry.sourceId && prev.categoryKey === entry.categoryKey ? prev : entry);
|
|
@@ -10,21 +22,22 @@ var ChartGroupProvider = ({ sharedTooltip = false, children }) => {
|
|
|
10
22
|
const clearActive = useCallback((sourceId) => {
|
|
11
23
|
setActiveEntry((prev) => prev !== null && prev.sourceId === sourceId ? null : prev);
|
|
12
24
|
}, []);
|
|
13
|
-
const
|
|
25
|
+
const value = useMemo(() => ({
|
|
14
26
|
activeEntry,
|
|
15
27
|
setActive,
|
|
16
28
|
clearActive,
|
|
17
|
-
|
|
29
|
+
shouldShareTooltip
|
|
18
30
|
}), [
|
|
19
31
|
activeEntry,
|
|
20
32
|
setActive,
|
|
21
33
|
clearActive,
|
|
22
|
-
|
|
34
|
+
shouldShareTooltip
|
|
23
35
|
]);
|
|
24
36
|
return /* @__PURE__ */ jsx(ChartGroupContext.Provider, {
|
|
25
|
-
value
|
|
37
|
+
value,
|
|
26
38
|
children
|
|
27
39
|
});
|
|
28
|
-
}
|
|
40
|
+
}
|
|
41
|
+
ChartGroupProvider.displayName = "ChartGroupProvider";
|
|
29
42
|
//#endregion
|
|
30
|
-
export { ChartGroupContext, ChartGroupProvider
|
|
43
|
+
export { ChartGroupContext, ChartGroupProvider as default };
|
|
@@ -1,51 +1,30 @@
|
|
|
1
|
-
import type
|
|
2
|
-
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
import { type ChartLegendItem, ChartLegendPlacement } from "./types.js";
|
|
3
|
+
/** @internal Swatch shape: a dot for line series, a square for filled series. */
|
|
4
|
+
export declare enum ChartLegendSwatch {
|
|
5
|
+
/** `Circle SMALL`: line series. */
|
|
6
|
+
CIRCLE = "CIRCLE",
|
|
7
|
+
/** `Square SMALL`: area, bar, arc and heatmap series. */
|
|
8
|
+
SQUARE = "SQUARE"
|
|
9
|
+
}
|
|
10
|
+
/** @internal Props of `ChartLegend`. */
|
|
11
|
+
export interface ChartLegendProps {
|
|
12
|
+
/** Entries in series order. */
|
|
3
13
|
items: ChartLegendItem[];
|
|
4
|
-
/**
|
|
14
|
+
/** Line (BOTTOM) or column (RIGHT). */
|
|
15
|
+
placement: ChartLegendPlacement;
|
|
16
|
+
/** Swatch shape. */
|
|
17
|
+
swatch: ChartLegendSwatch;
|
|
18
|
+
/** BOTTOM: left padding that aligns the legend with the plot. */
|
|
5
19
|
inset: number;
|
|
6
|
-
/**
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
* unmeasured plot) there is no height constraint and every entry renders.
|
|
15
|
-
*/
|
|
16
|
-
verticalExtent?: number;
|
|
17
|
-
/**
|
|
18
|
-
* Stricter cap on inline entries, on top of the automatic fit. The legend
|
|
19
|
-
* already collapses whatever won't fit inside the plot's extent — width for
|
|
20
|
-
* the horizontal layout, height for the side-placed one — behind the
|
|
21
|
-
* "+N more" trigger; this only lowers that number further.
|
|
22
|
-
*/
|
|
23
|
-
maxItems?: number;
|
|
24
|
-
/**
|
|
25
|
-
* Supplying these makes the legend interactive. Omit them and it renders as
|
|
26
|
-
* inert text, with no button semantics for a screen reader to announce.
|
|
27
|
-
*/
|
|
28
|
-
onItemEnter?: (key: string) => void;
|
|
29
|
-
onItemLeave?: () => void;
|
|
20
|
+
/** RIGHT: the plot height the column fits into (0 = unconstrained). */
|
|
21
|
+
extent?: number;
|
|
22
|
+
/** The series key being isolated. */
|
|
23
|
+
hoveredKey: string | null;
|
|
24
|
+
/** Pointer entered an entry. */
|
|
25
|
+
onItemEnter: (key: string) => void;
|
|
26
|
+
/** Pointer left an entry. */
|
|
27
|
+
onItemLeave: () => void;
|
|
30
28
|
}
|
|
31
|
-
/**
|
|
32
|
-
|
|
33
|
-
*
|
|
34
|
-
* Hovering or focusing an entry isolates its series; leaving releases it.
|
|
35
|
-
*
|
|
36
|
-
* The legend never outgrows the plot. A horizontal legend holds exactly one
|
|
37
|
-
* line of the plot's width; a side-placed legend holds one column of the
|
|
38
|
-
* plot's height. Entries that would not fit collapse behind a "+N more"
|
|
39
|
-
* trigger whose tooltip lists them — still hoverable, so a collapsed series
|
|
40
|
-
* isolates exactly like a visible one. The fit is measured, not guessed: a
|
|
41
|
-
* hidden copy of every entry is laid out unconstrained, and the visible count
|
|
42
|
-
* is however many real sizes fit beside the trigger.
|
|
43
|
-
*
|
|
44
|
-
* Deliberately *not* a visibility toggle: hiding a series would have to rescale
|
|
45
|
-
* the value axis to stay honest — otherwise the remaining bars sit mysteriously
|
|
46
|
-
* short — and that belongs with the geometry layer rather than bolted on here.
|
|
47
|
-
* Isolation only changes opacity, so the domain is untouched and the numbers
|
|
48
|
-
* keep meaning what they did.
|
|
49
|
-
*/
|
|
50
|
-
declare const ChartLegend: ({ items, inset, hoveredKey, vertical, verticalExtent, maxItems, onItemEnter, onItemLeave, }: ChartLegendProps) => import("react").JSX.Element | null;
|
|
51
|
-
export default ChartLegend;
|
|
29
|
+
/** @internal The chart legend. */
|
|
30
|
+
export declare function ChartLegend({ items, placement, swatch, inset, extent, hoveredKey, onItemEnter, onItemLeave, }: ChartLegendProps): ReactNode;
|