@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,51 +1,40 @@
|
|
|
1
|
-
import type
|
|
2
|
-
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
import { type ChartLegendItem, ChartLegendPlacement, ChartMarkState } 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
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
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
|
+
/** RIGHT: the column is `extent` tall with its entries centered; off, it hugs the entries (a Reset follows them). @default true */
|
|
23
|
+
isFixedExtent?: boolean;
|
|
24
|
+
/** An entry's emphasis: the hovered entry, else whether the selection covers its series. */
|
|
25
|
+
getEntryState: (key: string) => ChartMarkState;
|
|
26
|
+
/** The entry's series is pinned on its own: its toggle reads pressed. */
|
|
27
|
+
isEntryPinned?: (key: string) => boolean;
|
|
28
|
+
/** Filterable charts: keep a slot after the entries for the filter chip. @default false */
|
|
29
|
+
hasFilterSlot?: boolean;
|
|
30
|
+
/** The filter chip, or `null` while nothing is pinned (the slot keeps its space). */
|
|
31
|
+
filter?: ReactNode;
|
|
32
|
+
/** Click on an entry (filterable charts); supplying it makes each inline entry a toggle button. */
|
|
33
|
+
onItemClick?: ((key: string, isAdditive: boolean) => void) | undefined;
|
|
34
|
+
/** Pointer entered an entry. */
|
|
35
|
+
onItemEnter: (key: string) => void;
|
|
36
|
+
/** Pointer left an entry. */
|
|
37
|
+
onItemLeave: () => void;
|
|
30
38
|
}
|
|
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;
|
|
39
|
+
/** @internal The chart legend. */
|
|
40
|
+
export declare function ChartLegend({ items, placement, swatch, inset, extent, isFixedExtent, hasFilterSlot, filter, getEntryState, isEntryPinned, onItemClick, onItemEnter, onItemLeave, }: ChartLegendProps): ReactNode;
|
|
@@ -1,46 +1,171 @@
|
|
|
1
|
+
import { useIsomorphicLayoutEffect } from "../hooks/useIsomorphicLayoutEffect.js";
|
|
2
|
+
import { Placement } from "../theme/enums.js";
|
|
1
3
|
import Text, { TextSize, TextVariant } from "../text/Text.js";
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import { ChartMarkState } from "./types.js";
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
4
|
+
import Flex, { AlignItems } from "../layout/Flex.js";
|
|
5
|
+
import Tooltip from "../tooltip/Tooltip.js";
|
|
6
|
+
import { ChartLegendPlacement, ChartMarkState, ChartPalette } from "./types.js";
|
|
7
|
+
import { CHART_MARK_STATE_TO_CSS_MAP } from "./ChartPrimitives.js";
|
|
8
|
+
import "./constants.js";
|
|
9
|
+
import { isAdditiveEvent } from "./chartSelection.js";
|
|
10
|
+
import Circle, { CircleSize, CircleVariant } from "../shapes/Circle.js";
|
|
11
|
+
import Square, { SquareSize, SquareVariant } from "../shapes/Square.js";
|
|
12
|
+
import { CHART_PALETTE_TO_COLOR_MAP } from "./chartPalette.js";
|
|
13
|
+
/* empty css */
|
|
14
|
+
import { styled } from "@linaria/react";
|
|
15
|
+
import { useCallback, useRef, useState } from "react";
|
|
7
16
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
17
|
+
import { cx } from "@linaria/core";
|
|
8
18
|
//#region src/charts/ChartLegend.tsx
|
|
9
19
|
/**
|
|
10
|
-
*
|
|
20
|
+
* @internal The chart legend: one line beneath the plot (`BOTTOM`) or one column beside it
|
|
21
|
+
* (`RIGHT`). Entries that do not fit collapse behind a "+N more" button whose `Tooltip` lists
|
|
22
|
+
* them. The fit is measured, not guessed: a hidden copy of every entry is laid out unconstrained
|
|
23
|
+
* and the visible count is however many real sizes fit beside the trigger.
|
|
11
24
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
* Deliberately *not* a visibility toggle: hiding a series would have to rescale
|
|
23
|
-
* the value axis to stay honest — otherwise the remaining bars sit mysteriously
|
|
24
|
-
* short — and that belongs with the geometry layer rather than bolted on here.
|
|
25
|
-
* Isolation only changes opacity, so the domain is untouched and the numbers
|
|
26
|
-
* keep meaning what they did.
|
|
25
|
+
* Entries are list items. Hovering one previews its series (a pointer enhancement; keyboard users
|
|
26
|
+
* hear every series in the announcement). On a filterable chart each entry is also a toggle button
|
|
27
|
+
* (`aria-pressed`): a click pins its series, ⌘ / Ctrl / Shift-click adds or removes it. Entries
|
|
28
|
+
* collapsed behind "+N more" stay hover-only (a tooltip holds no controls). A filterable chart's
|
|
29
|
+
* legend ends in a slot for its filter chip, right after the last entry (under the column when
|
|
30
|
+
* RIGHT): the slot always keeps its height, and a bottom legend always keeps room for the chip's
|
|
31
|
+
* width, so pinning never moves an entry. Spacing is
|
|
32
|
+
* padding on each entry (trailing in a row, split above and below in a column so the column
|
|
33
|
+
* centers), not a flex gap, so sweeping across entries never drops the isolation. Isolation changes opacity only; it never rescales the axis.
|
|
27
34
|
*/
|
|
28
|
-
|
|
29
|
-
|
|
35
|
+
/** @internal Swatch shape: a dot for line series, a square for filled series. */
|
|
36
|
+
var ChartLegendSwatch = /* @__PURE__ */ function(ChartLegendSwatch) {
|
|
37
|
+
/** `Circle SMALL`: line series. */
|
|
38
|
+
ChartLegendSwatch["CIRCLE"] = "CIRCLE";
|
|
39
|
+
/** `Square SMALL`: area, bar, arc and heatmap series. */
|
|
40
|
+
ChartLegendSwatch["SQUARE"] = "SQUARE";
|
|
41
|
+
return ChartLegendSwatch;
|
|
42
|
+
}({});
|
|
43
|
+
/**
|
|
44
|
+
* A swatch takes its slot's mark color (`CHART_PALETTE_TO_COLOR_MAP`) through `currentColor`, so
|
|
45
|
+
* the legend always matches the marks (the hue slots that stand in for the old neutrals included).
|
|
46
|
+
*/
|
|
47
|
+
var SwatchColor = /*#__PURE__*/ styled("span")({
|
|
48
|
+
name: "SwatchColor",
|
|
49
|
+
class: "gx-ChartLegend-SwatchColor-s1bx0eug",
|
|
50
|
+
propsAsIs: false
|
|
51
|
+
});
|
|
52
|
+
/** The legend box. `position: relative` anchors the measure layer. */
|
|
53
|
+
var Root = /*#__PURE__*/ styled("div")({
|
|
54
|
+
name: "Root",
|
|
55
|
+
class: "gx-ChartLegend-r1c62hgg",
|
|
56
|
+
propsAsIs: false
|
|
57
|
+
});
|
|
58
|
+
/** The visible list. Never wraps: the fit computation guarantees one line (or column). */
|
|
59
|
+
var List = /*#__PURE__*/ styled("ul")({
|
|
60
|
+
name: "List",
|
|
61
|
+
class: "gx-ChartLegend-List-l1lgbp5d",
|
|
62
|
+
propsAsIs: false
|
|
63
|
+
});
|
|
64
|
+
/** Legend placement → list layout. BOTTOM aligns the first entry with the plot's left edge. */
|
|
65
|
+
var CHART_LEGEND_PLACEMENT_TO_LIST_CSS_MAP = {
|
|
66
|
+
[ChartLegendPlacement.BOTTOM]: "gx-ChartLegend-ChartLegendPlacement_BOTTOM-c681qv5",
|
|
67
|
+
[ChartLegendPlacement.RIGHT]: "gx-ChartLegend-ChartLegendPlacement_RIGHT-c1l24ron"
|
|
68
|
+
};
|
|
69
|
+
/** Zero-size clip that stops the measure layer's max-content box from adding page overflow. */
|
|
70
|
+
var MeasureClip = /*#__PURE__*/ styled("div")({
|
|
71
|
+
name: "MeasureClip",
|
|
72
|
+
class: "gx-ChartLegend-MeasureClip-m4cjheg",
|
|
73
|
+
propsAsIs: false
|
|
74
|
+
});
|
|
75
|
+
/** Invisible copy of every entry plus the widest trigger, laid out unconstrained. */
|
|
76
|
+
var Measure = /*#__PURE__*/ styled("div")({
|
|
77
|
+
name: "Measure",
|
|
78
|
+
class: "gx-ChartLegend-Measure-m1byi1w",
|
|
79
|
+
propsAsIs: false
|
|
80
|
+
});
|
|
81
|
+
var MEASURE_PLACEMENT_TO_CSS_MAP = {
|
|
82
|
+
[ChartLegendPlacement.BOTTOM]: "gx-ChartLegend-ChartLegendPlacement_BOTTOM-cixvbm6",
|
|
83
|
+
[ChartLegendPlacement.RIGHT]: "gx-ChartLegend-ChartLegendPlacement_RIGHT-c1ehakcs"
|
|
84
|
+
};
|
|
85
|
+
/** The filter chips' slot: one or two chips, truncating at its cap, never taller than the row it sets. */
|
|
86
|
+
var FilterSlot = /*#__PURE__*/ styled("li")({
|
|
87
|
+
name: "FilterSlot",
|
|
88
|
+
class: "gx-ChartLegend-FilterSlot-fsomlsk",
|
|
89
|
+
propsAsIs: false
|
|
90
|
+
});
|
|
91
|
+
/** BOTTOM: a 20px row the chip fits; RIGHT: the chip under the column, 8px below the last entry. */
|
|
92
|
+
var FILTER_SLOT_PLACEMENT_TO_CSS_MAP = {
|
|
93
|
+
[ChartLegendPlacement.BOTTOM]: "gx-ChartLegend-ChartLegendPlacement_BOTTOM-cdc52xq",
|
|
94
|
+
[ChartLegendPlacement.RIGHT]: "gx-ChartLegend-ChartLegendPlacement_RIGHT-cme95dp"
|
|
95
|
+
};
|
|
96
|
+
/** An entry never shrinks below its content; the fit decides what shows. */
|
|
97
|
+
var ENTRY_CSS = "gx-ChartLegend-ENTRY_CSS-e1lt2566";
|
|
98
|
+
/** A filterable entry's toggle: the swatch and label as one button, ring on keyboard focus. */
|
|
99
|
+
var ENTRY_BUTTON_CSS = "gx-ChartLegend-ENTRY_BUTTON_CSS-e1btzd6s";
|
|
100
|
+
/** The "+N more" trigger: a real button, Tab-reachable. */
|
|
101
|
+
var TRIGGER_CSS = "gx-ChartLegend-TRIGGER_CSS-t1hkz6fn";
|
|
102
|
+
/** The hidden entries, listed in the trigger's tooltip. */
|
|
103
|
+
var OverflowList = /*#__PURE__*/ styled("ul")({
|
|
104
|
+
name: "OverflowList",
|
|
105
|
+
class: "gx-ChartLegend-OverflowList-o1wv3pdp",
|
|
106
|
+
propsAsIs: false
|
|
107
|
+
});
|
|
108
|
+
function Swatch({ item, swatch }) {
|
|
109
|
+
return /* @__PURE__ */ jsx(SwatchColor, {
|
|
110
|
+
style: { "--gx-chart-mark-color": item.hex ?? CHART_PALETTE_TO_COLOR_MAP[item.palette ?? ChartPalette.TERTIARY] },
|
|
111
|
+
children: swatch === "CIRCLE" ? /* @__PURE__ */ jsx(Circle, {
|
|
112
|
+
size: CircleSize.SMALL,
|
|
113
|
+
variant: CircleVariant.INHERIT
|
|
114
|
+
}) : /* @__PURE__ */ jsx(Square, {
|
|
115
|
+
size: SquareSize.SMALL,
|
|
116
|
+
variant: SquareVariant.INHERIT
|
|
117
|
+
})
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
function Entry({ item, swatch, isVertical, state, as = "li", isPinned = false, onEnter, onLeave, onClick }) {
|
|
121
|
+
const content = /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Swatch, {
|
|
122
|
+
item,
|
|
123
|
+
swatch
|
|
124
|
+
}), /* @__PURE__ */ jsx(Text, {
|
|
125
|
+
size: TextSize.BODY_SM,
|
|
126
|
+
variant: isPinned ? TextVariant.PRIMARY : TextVariant.SECONDARY,
|
|
127
|
+
lineClamp: 1,
|
|
128
|
+
children: item.label
|
|
129
|
+
})] });
|
|
130
|
+
return /* @__PURE__ */ jsx(Flex, {
|
|
131
|
+
as,
|
|
132
|
+
alignItems: AlignItems.CENTER,
|
|
133
|
+
gap: 8,
|
|
134
|
+
padding: isVertical ? [4, 0] : [
|
|
135
|
+
0,
|
|
136
|
+
16,
|
|
137
|
+
0,
|
|
138
|
+
0
|
|
139
|
+
],
|
|
140
|
+
className: cx(ENTRY_CSS, CHART_MARK_STATE_TO_CSS_MAP[state]),
|
|
141
|
+
...onEnter && { onMouseEnter: onEnter },
|
|
142
|
+
...onLeave && { onMouseLeave: onLeave },
|
|
143
|
+
children: onClick ? /* @__PURE__ */ jsx("button", {
|
|
144
|
+
type: "button",
|
|
145
|
+
"aria-pressed": isPinned,
|
|
146
|
+
className: ENTRY_BUTTON_CSS,
|
|
147
|
+
onClick: (event) => onClick(isAdditiveEvent(event)),
|
|
148
|
+
children: content
|
|
149
|
+
}) : content
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
/** @internal The chart legend. */
|
|
153
|
+
function ChartLegend({ items, placement, swatch, inset, extent = 0, isFixedExtent = true, hasFilterSlot = false, filter = null, getEntryState, isEntryPinned, onItemClick, onItemEnter, onItemLeave }) {
|
|
154
|
+
const listRef = useRef(null);
|
|
30
155
|
const measureRef = useRef(null);
|
|
31
|
-
/** How many entries fit inline. `null` until the first measurement lands. */
|
|
32
156
|
const [fitCount, setFitCount] = useState(null);
|
|
157
|
+
const isVertical = placement === ChartLegendPlacement.RIGHT;
|
|
33
158
|
const recompute = useCallback(() => {
|
|
34
|
-
const
|
|
159
|
+
const list = listRef.current;
|
|
35
160
|
const measure = measureRef.current;
|
|
36
|
-
if (!
|
|
161
|
+
if (!list || !measure) return;
|
|
37
162
|
const rendered = Array.from(measure.children);
|
|
38
163
|
const trigger = rendered.pop();
|
|
39
164
|
if (!trigger) return;
|
|
40
|
-
const available =
|
|
41
|
-
const sizeOf = (
|
|
42
|
-
const rect =
|
|
43
|
-
return Math.ceil(
|
|
165
|
+
const available = isVertical ? extent || Number.POSITIVE_INFINITY : list.clientWidth - inset - (hasFilterSlot ? 240 : 0);
|
|
166
|
+
const sizeOf = (element) => {
|
|
167
|
+
const rect = element.getBoundingClientRect();
|
|
168
|
+
return Math.ceil(isVertical ? rect.height : rect.width);
|
|
44
169
|
};
|
|
45
170
|
const sizes = rendered.map(sizeOf);
|
|
46
171
|
if (sizes.reduce((sum, size) => sum + size, 0) <= available) {
|
|
@@ -50,117 +175,110 @@ var ChartLegend = ({ items, inset, hoveredKey = null, vertical = false, vertical
|
|
|
50
175
|
const triggerSize = sizeOf(trigger);
|
|
51
176
|
let used = 0;
|
|
52
177
|
let count = 0;
|
|
53
|
-
for (const [
|
|
178
|
+
for (const [index, size] of sizes.entries()) {
|
|
54
179
|
used += size;
|
|
55
180
|
if (used + triggerSize > available) break;
|
|
56
|
-
count =
|
|
181
|
+
count = index + 1;
|
|
57
182
|
}
|
|
58
183
|
setFitCount(Math.max(1, count));
|
|
59
184
|
}, [
|
|
185
|
+
isVertical,
|
|
186
|
+
extent,
|
|
60
187
|
inset,
|
|
61
|
-
|
|
62
|
-
verticalExtent
|
|
188
|
+
hasFilterSlot
|
|
63
189
|
]);
|
|
64
|
-
|
|
190
|
+
useIsomorphicLayoutEffect(() => {
|
|
65
191
|
recompute();
|
|
66
|
-
}, [
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
]);
|
|
71
|
-
useLayoutEffect(() => {
|
|
72
|
-
const row = rowRef.current;
|
|
73
|
-
if (!row) return;
|
|
192
|
+
}, [recompute, items]);
|
|
193
|
+
useIsomorphicLayoutEffect(() => {
|
|
194
|
+
const list = listRef.current;
|
|
195
|
+
if (!list || typeof ResizeObserver === "undefined") return;
|
|
74
196
|
const observer = new ResizeObserver(() => recompute());
|
|
75
|
-
observer.observe(
|
|
197
|
+
observer.observe(list);
|
|
76
198
|
return () => observer.disconnect();
|
|
77
199
|
}, [recompute]);
|
|
78
200
|
if (items.length === 0) return null;
|
|
79
|
-
const
|
|
80
|
-
const
|
|
81
|
-
const
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
hex: item.color
|
|
86
|
-
}), /* @__PURE__ */ jsx(Text, {
|
|
87
|
-
size: TextSize.BODY_SM,
|
|
88
|
-
children: item.label
|
|
89
|
-
})] });
|
|
90
|
-
if (!isInteractive) return /* @__PURE__ */ jsx(ChartLegendItemStatic, {
|
|
91
|
-
$vertical: verticalPadding,
|
|
92
|
-
"data-state": state,
|
|
93
|
-
children: content
|
|
94
|
-
}, item.key);
|
|
95
|
-
return /* @__PURE__ */ jsx(ChartLegendItemButton, {
|
|
96
|
-
type: "button",
|
|
97
|
-
$vertical: verticalPadding,
|
|
98
|
-
"data-state": state,
|
|
99
|
-
onMouseEnter: () => onItemEnter?.(item.key),
|
|
100
|
-
onMouseLeave: () => onItemLeave?.(),
|
|
101
|
-
onFocus: () => onItemEnter?.(item.key),
|
|
102
|
-
onBlur: () => onItemLeave?.(),
|
|
103
|
-
children: content
|
|
104
|
-
}, item.key);
|
|
201
|
+
const inline = items.slice(0, fitCount ?? items.length);
|
|
202
|
+
const overflow = items.slice(inline.length);
|
|
203
|
+
const triggerState = overflow.some((item) => getEntryState(item.key) === ChartMarkState.ACTIVE) ? ChartMarkState.ACTIVE : ChartMarkState.MUTED;
|
|
204
|
+
const variables = {
|
|
205
|
+
"--gx-chart-legend-inset": `${inset}px`,
|
|
206
|
+
...isVertical && extent > 0 && isFixedExtent && { "--gx-chart-legend-extent": `${extent}px` }
|
|
105
207
|
};
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
208
|
+
return /* @__PURE__ */ jsxs(Root, { children: [/* @__PURE__ */ jsx(MeasureClip, {
|
|
209
|
+
"aria-hidden": "true",
|
|
210
|
+
children: /* @__PURE__ */ jsxs(Measure, {
|
|
211
|
+
ref: measureRef,
|
|
212
|
+
className: MEASURE_PLACEMENT_TO_CSS_MAP[placement],
|
|
213
|
+
children: [items.map((item) => /* @__PURE__ */ jsx(Entry, {
|
|
214
|
+
as: "div",
|
|
215
|
+
item,
|
|
216
|
+
swatch,
|
|
217
|
+
isVertical,
|
|
218
|
+
state: ChartMarkState.ACTIVE
|
|
219
|
+
}, item.key)), /* @__PURE__ */ jsx(Flex, {
|
|
220
|
+
as: "div",
|
|
221
|
+
padding: isVertical ? [4, 0] : [
|
|
222
|
+
0,
|
|
223
|
+
16,
|
|
224
|
+
0,
|
|
225
|
+
0
|
|
226
|
+
],
|
|
227
|
+
children: /* @__PURE__ */ jsx(Text, {
|
|
228
|
+
size: TextSize.BODY_SM,
|
|
229
|
+
variant: TextVariant.SECONDARY,
|
|
230
|
+
children: `+${items.length - 1} more`
|
|
231
|
+
})
|
|
232
|
+
})]
|
|
233
|
+
})
|
|
234
|
+
}), /* @__PURE__ */ jsxs(List, {
|
|
235
|
+
ref: listRef,
|
|
236
|
+
className: CHART_LEGEND_PLACEMENT_TO_LIST_CSS_MAP[placement],
|
|
237
|
+
style: variables,
|
|
122
238
|
children: [
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
size: TextSize.BODY_SM,
|
|
157
|
-
variant: TextVariant.SECONDARY,
|
|
158
|
-
children: `+${overflowItems.length} more`
|
|
239
|
+
inline.map((item) => /* @__PURE__ */ jsx(Entry, {
|
|
240
|
+
item,
|
|
241
|
+
swatch,
|
|
242
|
+
isVertical,
|
|
243
|
+
state: getEntryState(item.key),
|
|
244
|
+
isPinned: isEntryPinned?.(item.key) ?? false,
|
|
245
|
+
onEnter: () => onItemEnter(item.key),
|
|
246
|
+
onLeave: onItemLeave,
|
|
247
|
+
onClick: onItemClick && ((isAdditive) => onItemClick(item.key, isAdditive))
|
|
248
|
+
}, item.key)),
|
|
249
|
+
overflow.length > 0 && /* @__PURE__ */ jsx(Flex, {
|
|
250
|
+
as: "li",
|
|
251
|
+
alignItems: AlignItems.CENTER,
|
|
252
|
+
className: cx(ENTRY_CSS, CHART_MARK_STATE_TO_CSS_MAP[triggerState]),
|
|
253
|
+
children: /* @__PURE__ */ jsx(Tooltip, {
|
|
254
|
+
placement: isVertical ? Placement.RIGHT : Placement.TOP,
|
|
255
|
+
body: /* @__PURE__ */ jsx(OverflowList, { children: overflow.map((item) => /* @__PURE__ */ jsx(Entry, {
|
|
256
|
+
item,
|
|
257
|
+
swatch,
|
|
258
|
+
isVertical: true,
|
|
259
|
+
state: getEntryState(item.key),
|
|
260
|
+
isPinned: isEntryPinned?.(item.key) ?? false,
|
|
261
|
+
onEnter: () => onItemEnter(item.key),
|
|
262
|
+
onLeave: onItemLeave
|
|
263
|
+
}, item.key)) }),
|
|
264
|
+
children: /* @__PURE__ */ jsx("button", {
|
|
265
|
+
type: "button",
|
|
266
|
+
className: TRIGGER_CSS,
|
|
267
|
+
children: /* @__PURE__ */ jsx(Text, {
|
|
268
|
+
size: TextSize.BODY_SM,
|
|
269
|
+
variant: TextVariant.SECONDARY,
|
|
270
|
+
children: `+${overflow.length} more`
|
|
271
|
+
})
|
|
159
272
|
})
|
|
160
273
|
})
|
|
274
|
+
}),
|
|
275
|
+
hasFilterSlot && /* @__PURE__ */ jsx(FilterSlot, {
|
|
276
|
+
className: FILTER_SLOT_PLACEMENT_TO_CSS_MAP[placement],
|
|
277
|
+
"aria-hidden": filter === null || void 0,
|
|
278
|
+
children: filter
|
|
161
279
|
})
|
|
162
280
|
]
|
|
163
|
-
});
|
|
164
|
-
}
|
|
281
|
+
})] });
|
|
282
|
+
}
|
|
165
283
|
//#endregion
|
|
166
|
-
export { ChartLegend
|
|
284
|
+
export { ChartLegend, ChartLegendSwatch };
|
|
@@ -1,30 +1,14 @@
|
|
|
1
|
-
import type
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
* category targets.
|
|
6
|
-
*
|
|
7
|
-
* Exists so a click can name a single segment — the red block of the 00:00 bar
|
|
8
|
-
* — where the category layer beneath can only name the column. Rendered by the
|
|
9
|
-
* charts that have marks worth distinguishing: BarChart does, LineChart has no
|
|
10
|
-
* segments to hit, and PieChart's category targets already *are* its arcs.
|
|
11
|
-
*
|
|
12
|
-
* **Hover is not refined here.** Each target reports its own category on enter,
|
|
13
|
-
* exactly as the band underneath would, so the tooltip reads the same index
|
|
14
|
-
* whichever layer the pointer is over and holds still while crossing a stack.
|
|
15
|
-
* The banded hover is deliberate — it makes a two-pixel segment as easy to
|
|
16
|
-
* hover as a two-hundred-pixel one — and this layer only adds a finer *click*.
|
|
17
|
-
*
|
|
18
|
-
* Anything the marks do not cover falls through to the category target: the
|
|
19
|
-
* gutters, the plot above a short bar, and the hairline gaps between stack
|
|
20
|
-
* segments. That is the documented fallback, and it is why a segment too small
|
|
21
|
-
* to hit still selects something sensible.
|
|
22
|
-
*/
|
|
23
|
-
interface ChartMarkTargetsProps {
|
|
1
|
+
import { type ChartMarkTarget } from "./types.js";
|
|
2
|
+
/** @internal Props of `ChartMarkTargets`. */
|
|
3
|
+
export interface ChartMarkTargetsProps {
|
|
4
|
+
/** One target per mark. */
|
|
24
5
|
targets: ChartMarkTarget[];
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
6
|
+
/** Pointer entered a mark: engages its category. */
|
|
7
|
+
onEnter: (categoryIndex: number) => void;
|
|
8
|
+
/** Pointer left the target layers (moving between targets is not leaving). */
|
|
9
|
+
onLeave: () => void;
|
|
10
|
+
/** Click on a mark, by its index in `targets` (additive with ⌘ / Ctrl / Shift). */
|
|
11
|
+
onSelect: (markIndex: number, isAdditive: boolean) => void;
|
|
28
12
|
}
|
|
29
|
-
|
|
30
|
-
export
|
|
13
|
+
/** @internal The mark hit layer. */
|
|
14
|
+
export declare function ChartMarkTargets({ targets, onEnter, onLeave, onSelect }: ChartMarkTargetsProps): import("react").JSX.Element;
|
|
@@ -1,24 +1,38 @@
|
|
|
1
1
|
import { ChartTargetShape } from "./types.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { CHART_HIT_TARGET_CLICKABLE_CSS, CHART_HIT_TARGET_CSS, leaveUnlessTarget } from "./ChartPrimitives.js";
|
|
3
|
+
import { isAdditiveEvent } from "./chartSelection.js";
|
|
4
4
|
import { Fragment, jsx } from "react/jsx-runtime";
|
|
5
|
+
import { cx } from "@linaria/core";
|
|
5
6
|
//#region src/charts/ChartMarkTargets.tsx
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
7
|
+
/**
|
|
8
|
+
* @internal The mark hit layer: one transparent target per rendered mark, above the category
|
|
9
|
+
* targets, so a click can name one segment where the band beneath names only its column. Hover is
|
|
10
|
+
* not refined: each target reports its own category on enter, exactly as the band would. Anything
|
|
11
|
+
* the marks do not cover falls through to the category target. Rendered only when the chart has
|
|
12
|
+
* a click handler (BarChart); LineChart has no per-category segment to hit.
|
|
13
|
+
*/
|
|
14
|
+
/** @internal The mark hit layer. */
|
|
15
|
+
function ChartMarkTargets({ targets, onEnter, onLeave, onSelect }) {
|
|
16
|
+
const className = cx(CHART_HIT_TARGET_CSS, CHART_HIT_TARGET_CLICKABLE_CSS);
|
|
17
|
+
return /* @__PURE__ */ jsx(Fragment, { children: targets.map((target, index) => {
|
|
18
|
+
const handlers = {
|
|
19
|
+
onMouseEnter: () => onEnter(target.categoryIndex),
|
|
20
|
+
onMouseLeave: (event) => leaveUnlessTarget(event, onLeave),
|
|
21
|
+
onClick: (event) => onSelect(index, isAdditiveEvent(event))
|
|
22
|
+
};
|
|
23
|
+
return target.shape === ChartTargetShape.RECT ? /* @__PURE__ */ jsx("rect", {
|
|
24
|
+
x: target.x,
|
|
25
|
+
y: target.y,
|
|
26
|
+
width: Math.max(0, target.width),
|
|
27
|
+
height: Math.max(0, target.height),
|
|
28
|
+
className,
|
|
29
|
+
...handlers
|
|
30
|
+
}, target.key) : /* @__PURE__ */ jsx("path", {
|
|
31
|
+
d: target.d,
|
|
32
|
+
className,
|
|
33
|
+
...handlers
|
|
34
|
+
}, target.key);
|
|
35
|
+
}) });
|
|
36
|
+
}
|
|
23
37
|
//#endregion
|
|
24
|
-
export { ChartMarkTargets
|
|
38
|
+
export { ChartMarkTargets };
|