@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,83 +1,107 @@
|
|
|
1
1
|
import { useCallback, useEffect, useRef, useState } from "react";
|
|
2
2
|
//#region src/table/useTableKeyboardNavigation.ts
|
|
3
|
-
/** Body rows carry this attribute so focus can be moved without a ref per row. */
|
|
4
|
-
var ROW_INDEX_ATTRIBUTE = "data-row-index";
|
|
5
3
|
/**
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* @internal Shared by the table components; apps use InfiniteTable, VirtualizedInfiniteTable or
|
|
5
|
+
* InfiniteSpreadsheet.
|
|
6
|
+
*
|
|
7
|
+
* Roving row focus over a table body: one row is the tab stop (`tabIndex` 0), the rest -1.
|
|
8
|
+
* ArrowUp / ArrowDown, Home / End and PageUp / PageDown move focus; a virtual body passes
|
|
9
|
+
* `scrollToIndex` so the target row is scrolled into the window before it is focused. Every other
|
|
10
|
+
* key (Enter, Space, ArrowLeft / ArrowRight, Shift+F10) goes to the host's `onKeyDown`.
|
|
8
11
|
*/
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
12
|
+
/** Frames to wait for a virtual row to mount after `scrollToIndex`. */
|
|
13
|
+
var MOUNT_RETRY_FRAMES = 4;
|
|
14
|
+
/** @internal Roving focus over the rows of a table body. */
|
|
15
|
+
function useTableKeyboardNavigation({ rowCount, getPageSize, scrollToIndex, onKeyDown }) {
|
|
16
|
+
const [tabStop, setTabStop] = useState(0);
|
|
17
|
+
const tabStopIndex = rowCount === 0 ? 0 : Math.min(tabStop, rowCount - 1);
|
|
18
|
+
const rowsRef = useRef(/* @__PURE__ */ new Map());
|
|
19
|
+
const frameRef = useRef(null);
|
|
20
|
+
const optionsRef = useRef({
|
|
21
|
+
rowCount,
|
|
22
|
+
getPageSize,
|
|
23
|
+
scrollToIndex,
|
|
24
|
+
onKeyDown
|
|
19
25
|
});
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
const moveFocusTo = useCallback((rowIndex) => {
|
|
29
|
-
shouldMoveFocusRef.current = true;
|
|
30
|
-
scrollToIndexRef.current?.(rowIndex);
|
|
31
|
-
setFocusedRowIndex(rowIndex);
|
|
26
|
+
optionsRef.current = {
|
|
27
|
+
rowCount,
|
|
28
|
+
getPageSize,
|
|
29
|
+
scrollToIndex,
|
|
30
|
+
onKeyDown
|
|
31
|
+
};
|
|
32
|
+
useEffect(() => () => {
|
|
33
|
+
if (frameRef.current !== null) cancelAnimationFrame(frameRef.current);
|
|
32
34
|
}, []);
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
return;
|
|
41
|
-
case "ArrowUp":
|
|
42
|
-
event.preventDefault();
|
|
43
|
-
moveFocusTo(Math.max(0, rowIndex - 1));
|
|
44
|
-
return;
|
|
45
|
-
case "Home":
|
|
46
|
-
event.preventDefault();
|
|
47
|
-
moveFocusTo(0);
|
|
48
|
-
return;
|
|
49
|
-
case "End":
|
|
50
|
-
event.preventDefault();
|
|
51
|
-
moveFocusTo(rowCount - 1);
|
|
52
|
-
return;
|
|
53
|
-
case "Enter":
|
|
54
|
-
event.preventDefault();
|
|
55
|
-
onActivateRef.current?.(rowIndex, event);
|
|
56
|
-
return;
|
|
57
|
-
case " ":
|
|
58
|
-
case "Spacebar":
|
|
59
|
-
event.preventDefault();
|
|
60
|
-
onToggleSelectRef.current?.(rowIndex, event);
|
|
61
|
-
return;
|
|
62
|
-
default:
|
|
35
|
+
const focusedIndexRef = useRef(null);
|
|
36
|
+
const listenedRef = useRef(/* @__PURE__ */ new WeakSet());
|
|
37
|
+
const registerRow = useCallback((rowIndex, element) => {
|
|
38
|
+
const rows = rowsRef.current;
|
|
39
|
+
if (element === null) {
|
|
40
|
+
if (rows.get(rowIndex) !== void 0 && !rows.get(rowIndex)?.isConnected) rows.delete(rowIndex);
|
|
41
|
+
return;
|
|
63
42
|
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
43
|
+
const previous = rows.get(rowIndex);
|
|
44
|
+
rows.set(rowIndex, element);
|
|
45
|
+
if (!listenedRef.current.has(element)) {
|
|
46
|
+
listenedRef.current.add(element);
|
|
47
|
+
element.addEventListener("focusout", (event) => {
|
|
48
|
+
const next = event.relatedTarget;
|
|
49
|
+
if (next instanceof Node && element.contains(next)) return;
|
|
50
|
+
queueMicrotask(() => {
|
|
51
|
+
if (element.isConnected && focusedIndexRef.current === rowIndex) focusedIndexRef.current = null;
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
const active = element.ownerDocument.activeElement;
|
|
56
|
+
const isFocusLost = active === null || active === element.ownerDocument.body || !active.isConnected;
|
|
57
|
+
if (previous !== void 0 && previous !== element && !previous.isConnected && focusedIndexRef.current === rowIndex && isFocusLost) element.focus({ preventScroll: true });
|
|
58
|
+
}, []);
|
|
59
|
+
const focusRow = useCallback((rowIndex) => {
|
|
60
|
+
setTabStop(rowIndex);
|
|
61
|
+
optionsRef.current.scrollToIndex?.(rowIndex);
|
|
62
|
+
if (frameRef.current !== null) cancelAnimationFrame(frameRef.current);
|
|
63
|
+
let attempts = 0;
|
|
64
|
+
const tryFocus = () => {
|
|
65
|
+
frameRef.current = null;
|
|
66
|
+
const element = rowsRef.current.get(rowIndex);
|
|
67
|
+
if (element?.isConnected) {
|
|
68
|
+
element.focus();
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
attempts += 1;
|
|
72
|
+
if (attempts <= MOUNT_RETRY_FRAMES) frameRef.current = requestAnimationFrame(tryFocus);
|
|
73
|
+
};
|
|
74
|
+
tryFocus();
|
|
71
75
|
}, []);
|
|
72
76
|
return {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
77
|
+
tabStopIndex,
|
|
78
|
+
registerRow,
|
|
79
|
+
handleRowKeyDown: useCallback((rowIndex, event) => {
|
|
80
|
+
const { rowCount: count, getPageSize: pageSize, onKeyDown: hostKeyDown } = optionsRef.current;
|
|
81
|
+
if (count === 0) return;
|
|
82
|
+
const hasModifier = event.altKey || event.ctrlKey || event.metaKey;
|
|
83
|
+
let next;
|
|
84
|
+
if (!hasModifier) {
|
|
85
|
+
if (event.key === "ArrowDown") next = rowIndex + 1;
|
|
86
|
+
else if (event.key === "ArrowUp") next = rowIndex - 1;
|
|
87
|
+
else if (event.key === "Home") next = 0;
|
|
88
|
+
else if (event.key === "End") next = count - 1;
|
|
89
|
+
else if (event.key === "PageDown") next = rowIndex + Math.max(1, pageSize());
|
|
90
|
+
else if (event.key === "PageUp") next = rowIndex - Math.max(1, pageSize());
|
|
91
|
+
}
|
|
92
|
+
if (next === void 0) {
|
|
93
|
+
hostKeyDown(rowIndex, event);
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
event.preventDefault();
|
|
97
|
+
focusRow(Math.min(Math.max(next, 0), count - 1));
|
|
98
|
+
}, [focusRow]),
|
|
99
|
+
handleRowFocus: useCallback((rowIndex) => {
|
|
100
|
+
focusedIndexRef.current = rowIndex;
|
|
101
|
+
setTabStop(rowIndex);
|
|
102
|
+
}, []),
|
|
103
|
+
focusRow
|
|
80
104
|
};
|
|
81
105
|
}
|
|
82
106
|
//#endregion
|
|
83
|
-
export {
|
|
107
|
+
export { useTableKeyboardNavigation };
|
|
@@ -1,27 +1,26 @@
|
|
|
1
|
-
|
|
2
|
-
interface UseTableRowSelectionOptions
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
/** @internal Options for `useTableRowSelection`. */
|
|
2
|
+
export interface UseTableRowSelectionOptions {
|
|
3
|
+
/** Controlled selected ids. */
|
|
4
|
+
value: string[] | undefined;
|
|
5
|
+
/** Initial selected ids while uncontrolled. */
|
|
6
|
+
defaultValue: string[];
|
|
7
|
+
/** Called with the next selected ids, in row order. */
|
|
8
|
+
onChange: ((value: string[]) => void) | undefined;
|
|
9
|
+
/** Ids of the loaded rows in display order. */
|
|
10
|
+
rowIds: string[];
|
|
9
11
|
}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
/** @internal What `useTableRowSelection` returns. */
|
|
13
|
+
export interface TableRowSelection {
|
|
14
|
+
/** The selected ids. */
|
|
15
|
+
selectedIds: ReadonlySet<string>;
|
|
16
|
+
/** Every loaded row is selected (and there is at least one). */
|
|
17
|
+
isAllSelected: boolean;
|
|
18
|
+
/** Some, not all, loaded rows are selected. */
|
|
19
|
+
isSomeSelected: boolean;
|
|
20
|
+
/** Toggles one row; with `isRange`, selects every row from the last toggled one to it. */
|
|
21
|
+
toggleRow: (rowId: string, isRange: boolean) => void;
|
|
22
|
+
/** Selects every loaded row, or clears the selection when all are selected. */
|
|
23
|
+
toggleAll: () => void;
|
|
17
24
|
}
|
|
18
|
-
/**
|
|
19
|
-
|
|
20
|
-
*
|
|
21
|
-
* TanStack replaces its default updater as soon as `onRowSelectionChange` is
|
|
22
|
-
* supplied, so passing that callback without also passing `state.rowSelection`
|
|
23
|
-
* silently freezes selection. Holding the state here means there is one code
|
|
24
|
-
* path and selection always sticks.
|
|
25
|
-
*/
|
|
26
|
-
export declare function useTableRowSelection<TData>({ rowSelection, defaultRowSelection, onRowSelectionChange, enableMultiRowSelection, enableSelectionRange, onSelectedRowsChange, }: UseTableRowSelectionOptions<TData>): TableRowSelection<TData>;
|
|
27
|
-
export {};
|
|
25
|
+
/** @internal Selection state for a table's rows. */
|
|
26
|
+
export declare function useTableRowSelection({ value, defaultValue, onChange, rowIds, }: UseTableRowSelectionOptions): TableRowSelection;
|
|
@@ -1,94 +1,67 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { useControlledState } from "../hooks/useControlledState.js";
|
|
2
|
+
import { useCallback, useMemo, useRef } from "react";
|
|
2
3
|
//#region src/table/useTableRowSelection.ts
|
|
3
4
|
/**
|
|
4
|
-
*
|
|
5
|
+
* @internal Shared by the table components; apps use InfiniteTable, VirtualizedInfiniteTable or
|
|
6
|
+
* InfiniteSpreadsheet.
|
|
5
7
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* path and selection always sticks.
|
|
8
|
+
* Row selection over string ids: the `value` / `defaultValue` / `onChange` triple, the
|
|
9
|
+
* shift-range anchor (the last toggled row) and select-all over the loaded rows. Reported ids
|
|
10
|
+
* are in row order. Only InfiniteTable selects rows.
|
|
10
11
|
*/
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
const onSelectedRowsChangeRef = useRef(onSelectedRowsChange);
|
|
18
|
-
useEffect(() => {
|
|
19
|
-
selectionRef.current = resolvedSelection;
|
|
20
|
-
onChangeRef.current = onRowSelectionChange;
|
|
21
|
-
onSelectedRowsChangeRef.current = onSelectedRowsChange;
|
|
12
|
+
/** @internal Selection state for a table's rows. */
|
|
13
|
+
function useTableRowSelection({ value, defaultValue, onChange, rowIds }) {
|
|
14
|
+
const [selected, setSelected] = useControlledState({
|
|
15
|
+
value,
|
|
16
|
+
defaultValue,
|
|
17
|
+
onChange
|
|
22
18
|
});
|
|
23
|
-
|
|
24
|
-
const
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
return;
|
|
40
|
-
}
|
|
41
|
-
const anchorRowId = anchorRowIdRef.current;
|
|
42
|
-
if (!(isShiftKey && enableSelectionRange && anchorRowId !== null)) {
|
|
43
|
-
const next = { ...selectionRef.current };
|
|
44
|
-
if (isSelected) next[row.id] = true;
|
|
45
|
-
else delete next[row.id];
|
|
46
|
-
applySelection(next);
|
|
47
|
-
anchorRowIdRef.current = row.id;
|
|
48
|
-
return;
|
|
49
|
-
}
|
|
50
|
-
const anchorIndex = rows.findIndex((candidate) => candidate.id === anchorRowId);
|
|
51
|
-
const targetIndex = rows.findIndex((candidate) => candidate.id === row.id);
|
|
52
|
-
if (anchorIndex === -1 || targetIndex === -1) return;
|
|
53
|
-
const [from, to] = anchorIndex <= targetIndex ? [anchorIndex, targetIndex] : [targetIndex, anchorIndex];
|
|
54
|
-
const next = { ...selectionRef.current };
|
|
55
|
-
rows.slice(from, to + 1).forEach((candidate) => {
|
|
56
|
-
if (candidate.getCanSelect()) next[candidate.id] = true;
|
|
57
|
-
});
|
|
58
|
-
applySelection(next);
|
|
59
|
-
}, [
|
|
60
|
-
applySelection,
|
|
61
|
-
enableMultiRowSelection,
|
|
62
|
-
enableSelectionRange
|
|
63
|
-
]);
|
|
64
|
-
const toggleAll = useCallback((rows, isSelected) => {
|
|
65
|
-
if (!isSelected) {
|
|
66
|
-
applySelection({});
|
|
67
|
-
anchorRowIdRef.current = null;
|
|
68
|
-
return;
|
|
69
|
-
}
|
|
70
|
-
const next = { ...selectionRef.current };
|
|
71
|
-
rows.forEach((row) => {
|
|
72
|
-
if (row.getCanSelect()) next[row.id] = true;
|
|
73
|
-
});
|
|
74
|
-
applySelection(next);
|
|
75
|
-
}, [applySelection]);
|
|
76
|
-
const notifySelectedRows = useCallback((rows) => {
|
|
77
|
-
onSelectedRowsChangeRef.current?.(rows);
|
|
19
|
+
const selectedIds = useMemo(() => new Set(selected), [selected]);
|
|
20
|
+
const anchorRef = useRef(null);
|
|
21
|
+
const stateRef = useRef({
|
|
22
|
+
selectedIds,
|
|
23
|
+
rowIds
|
|
24
|
+
});
|
|
25
|
+
stateRef.current = {
|
|
26
|
+
selectedIds,
|
|
27
|
+
rowIds
|
|
28
|
+
};
|
|
29
|
+
/** Ids in row order; ids no longer loaded keep their place at the end. */
|
|
30
|
+
const ordered = useCallback((ids) => {
|
|
31
|
+
const { rowIds: rows } = stateRef.current;
|
|
32
|
+
const inRows = rows.filter((id) => ids.has(id));
|
|
33
|
+
const rowSet = new Set(rows);
|
|
34
|
+
return [...inRows, ...[...ids].filter((id) => !rowSet.has(id))];
|
|
78
35
|
}, []);
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
36
|
+
const toggleRow = useCallback((rowId, isRange) => {
|
|
37
|
+
const { selectedIds: current, rowIds: rows } = stateRef.current;
|
|
38
|
+
const next = new Set(current);
|
|
39
|
+
const anchor = anchorRef.current;
|
|
40
|
+
const from = anchor === null ? -1 : rows.indexOf(anchor);
|
|
41
|
+
const to = rows.indexOf(rowId);
|
|
42
|
+
if (isRange && from !== -1 && to !== -1) {
|
|
43
|
+
const [start, end] = from < to ? [from, to] : [to, from];
|
|
44
|
+
for (const id of rows.slice(start, end + 1)) next.add(id);
|
|
45
|
+
} else if (next.has(rowId)) next.delete(rowId);
|
|
46
|
+
else next.add(rowId);
|
|
47
|
+
anchorRef.current = rowId;
|
|
48
|
+
setSelected(ordered(next));
|
|
49
|
+
}, [ordered, setSelected]);
|
|
50
|
+
const isAllSelected = rowIds.length > 0 && rowIds.every((id) => selectedIds.has(id));
|
|
51
|
+
return {
|
|
52
|
+
selectedIds,
|
|
53
|
+
isAllSelected,
|
|
54
|
+
isSomeSelected: !isAllSelected && rowIds.some((id) => selectedIds.has(id)),
|
|
88
55
|
toggleRow,
|
|
89
|
-
toggleAll
|
|
90
|
-
|
|
91
|
-
|
|
56
|
+
toggleAll: useCallback(() => {
|
|
57
|
+
const { selectedIds: current, rowIds: rows } = stateRef.current;
|
|
58
|
+
const isAll = rows.length > 0 && rows.every((id) => current.has(id));
|
|
59
|
+
const next = new Set(current);
|
|
60
|
+
for (const id of rows) if (isAll) next.delete(id);
|
|
61
|
+
else next.add(id);
|
|
62
|
+
setSelected(ordered(next));
|
|
63
|
+
}, [ordered, setSelected])
|
|
64
|
+
};
|
|
92
65
|
}
|
|
93
66
|
//#endregion
|
|
94
67
|
export { useTableRowSelection };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type RefObject } from "react";
|
|
2
|
+
/** @internal Options for `useTableVirtualizer`. */
|
|
3
|
+
export interface UseTableVirtualizerOptions {
|
|
4
|
+
/** Rows the body can show, loaded or not. */
|
|
5
|
+
count: number;
|
|
6
|
+
/** The table's scroll container. */
|
|
7
|
+
scrollRef: RefObject<HTMLDivElement | null>;
|
|
8
|
+
/** The exact row height in pixels. */
|
|
9
|
+
rowHeightPx: number;
|
|
10
|
+
/** The sticky header's height: the body starts this far down the scroll container. */
|
|
11
|
+
headerHeightPx: number;
|
|
12
|
+
/** The sticky footer's height (0 without a footer), kept clear when scrolling a row into view. */
|
|
13
|
+
footerHeightPx: number;
|
|
14
|
+
/** A row's key: its id when loaded, its index otherwise. */
|
|
15
|
+
getItemKey: (index: number) => string | number;
|
|
16
|
+
/** Indexes that stay rendered outside the window. */
|
|
17
|
+
keepIndexes: number[];
|
|
18
|
+
}
|
|
19
|
+
/** @internal A table-body virtualizer with exact row sizes. */
|
|
20
|
+
export declare function useTableVirtualizer({ count, scrollRef, rowHeightPx, headerHeightPx, footerHeightPx, getItemKey, keepIndexes, }: UseTableVirtualizerOptions): import("@tanstack/react-virtual").ReactVirtualizer<HTMLDivElement, HTMLTableRowElement>;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { useIsomorphicLayoutEffect } from "../hooks/useIsomorphicLayoutEffect.js";
|
|
2
|
+
import "./TableCore.js";
|
|
3
|
+
import { useCallback } from "react";
|
|
4
|
+
import { defaultRangeExtractor, useVirtualizer } from "@tanstack/react-virtual";
|
|
5
|
+
//#region src/table/useTableVirtualizer.ts
|
|
6
|
+
/**
|
|
7
|
+
* @internal Shared by the table components; apps use InfiniteTable, VirtualizedInfiniteTable or
|
|
8
|
+
* InfiniteSpreadsheet.
|
|
9
|
+
*
|
|
10
|
+
* `useVirtualizer` (`@tanstack/react-virtual`, an optional peer) set up for a table body: every
|
|
11
|
+
* row is exactly the rung's height (no measuring), items are keyed by row id when loaded and by
|
|
12
|
+
* index otherwise, the rows in `keepIndexes` (the focused row, an editing row) stay mounted
|
|
13
|
+
* whatever the scroll position, and the body starts below the sticky header. Only the virtual
|
|
14
|
+
* table components import this module; `TableCore` imports no peer.
|
|
15
|
+
*/
|
|
16
|
+
/** @internal A table-body virtualizer with exact row sizes. */
|
|
17
|
+
function useTableVirtualizer({ count, scrollRef, rowHeightPx, headerHeightPx, footerHeightPx, getItemKey, keepIndexes }) {
|
|
18
|
+
const keepKey = keepIndexes.join(",");
|
|
19
|
+
const rangeExtractor = useCallback((range) => {
|
|
20
|
+
const indexes = new Set(defaultRangeExtractor(range));
|
|
21
|
+
for (const entry of keepKey === "" ? [] : keepKey.split(",")) {
|
|
22
|
+
const index = Number(entry);
|
|
23
|
+
if (index >= 0 && index < range.count) indexes.add(index);
|
|
24
|
+
}
|
|
25
|
+
return [...indexes].sort((a, b) => a - b);
|
|
26
|
+
}, [keepKey]);
|
|
27
|
+
const virtualizer = useVirtualizer({
|
|
28
|
+
count,
|
|
29
|
+
getScrollElement: () => scrollRef.current,
|
|
30
|
+
estimateSize: useCallback(() => rowHeightPx, [rowHeightPx]),
|
|
31
|
+
overscan: 10,
|
|
32
|
+
getItemKey,
|
|
33
|
+
rangeExtractor,
|
|
34
|
+
scrollMargin: headerHeightPx,
|
|
35
|
+
scrollPaddingStart: headerHeightPx,
|
|
36
|
+
scrollPaddingEnd: footerHeightPx
|
|
37
|
+
});
|
|
38
|
+
useIsomorphicLayoutEffect(() => {
|
|
39
|
+
virtualizer.measure();
|
|
40
|
+
}, [
|
|
41
|
+
virtualizer,
|
|
42
|
+
rowHeightPx,
|
|
43
|
+
headerHeightPx
|
|
44
|
+
]);
|
|
45
|
+
return virtualizer;
|
|
46
|
+
}
|
|
47
|
+
//#endregion
|
|
48
|
+
export { useTableVirtualizer };
|
package/dist/text/Bold.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import type
|
|
2
|
-
/**
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
declare const Bold: ({ children }: PropsWithChildren) => import("react").JSX.Element;
|
|
1
|
+
import { type SpanProps } from "./Span.js";
|
|
2
|
+
/** `Span` props without `weight`: a `Bold` is always `TextWeight.MEDIUM`. */
|
|
3
|
+
export type BoldProps = Omit<SpanProps, "weight">;
|
|
4
|
+
/** Medium-weight inline emphasis inside a `Text`; a `Span` preset. */
|
|
5
|
+
declare const Bold: import("react").ForwardRefExoticComponent<BoldProps & import("react").RefAttributes<HTMLSpanElement>>;
|
|
7
6
|
export default Bold;
|
package/dist/text/Bold.js
CHANGED
|
@@ -1,21 +1,22 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
import {
|
|
1
|
+
import { TextWeight } from "./Text.js";
|
|
2
|
+
import Span from "./Span.js";
|
|
3
|
+
import { forwardRef } from "react";
|
|
4
4
|
import { jsx } from "react/jsx-runtime";
|
|
5
5
|
//#region src/text/Bold.tsx
|
|
6
|
-
var _exp = () => ({ theme }) => theme.font.sans.weight.medium;
|
|
7
|
-
var StyledBoldText = withTheme(/*#__PURE__*/ styled("span")({
|
|
8
|
-
name: "StyledBoldText",
|
|
9
|
-
class: "s10i74tu",
|
|
10
|
-
propsAsIs: false,
|
|
11
|
-
vars: { "s10i74tu-0": [_exp()] }
|
|
12
|
-
}));
|
|
13
6
|
/**
|
|
14
|
-
*
|
|
15
|
-
*
|
|
7
|
+
* Medium-weight emphasis for part of a string inside a `Text`. A thin preset over `Span`:
|
|
8
|
+
* `<Span weight={TextWeight.MEDIUM}>`. It takes every other `Span` prop and inherits everything
|
|
9
|
+
* else (size, family, line height, color) from the enclosing `Text`. DLS has two weights, so this
|
|
10
|
+
* is as bold as type gets. No own styles, no own enums.
|
|
16
11
|
*/
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
12
|
+
/** Medium-weight inline emphasis inside a `Text`; a `Span` preset. */
|
|
13
|
+
var Bold = forwardRef(function Bold(props, ref) {
|
|
14
|
+
return /* @__PURE__ */ jsx(Span, {
|
|
15
|
+
weight: TextWeight.MEDIUM,
|
|
16
|
+
...props,
|
|
17
|
+
ref
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
Bold.displayName = "Bold";
|
|
20
21
|
//#endregion
|
|
21
22
|
export { Bold as default };
|
package/dist/text/Code.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import type
|
|
2
|
-
/**
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
declare const Code: ({ children }: PropsWithChildren) => import("react").JSX.Element;
|
|
1
|
+
import { type SpanProps } from "./Span.js";
|
|
2
|
+
/** `Span` props without `isCode` and `family`: a `Code` is always inline code in mono. */
|
|
3
|
+
export type CodeProps = Omit<SpanProps, "isCode" | "family">;
|
|
4
|
+
/** Inline code inside a `Text`; a `Span` preset. */
|
|
5
|
+
declare const Code: import("react").ForwardRefExoticComponent<CodeProps & import("react").RefAttributes<HTMLSpanElement>>;
|
|
7
6
|
export default Code;
|
package/dist/text/Code.js
CHANGED
|
@@ -1,31 +1,22 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
import { styled } from "@linaria/react";
|
|
1
|
+
import Span from "./Span.js";
|
|
2
|
+
import { forwardRef } from "react";
|
|
4
3
|
import { jsx } from "react/jsx-runtime";
|
|
5
4
|
//#region src/text/Code.tsx
|
|
6
|
-
var _exp = () => ({ theme }) => theme.font.mono.family;
|
|
7
|
-
var _exp2 = () => ({ theme }) => theme.font.mono.weight.regular;
|
|
8
|
-
var _exp3 = () => ({ theme }) => theme.font.mono.size.body_sm;
|
|
9
|
-
var _exp4 = () => ({ theme }) => theme.color.border.primary;
|
|
10
|
-
var _exp5 = () => ({ theme }) => theme.color.background.tertiary;
|
|
11
|
-
var StyledCodeText = withTheme(/*#__PURE__*/ styled("span")({
|
|
12
|
-
name: "StyledCodeText",
|
|
13
|
-
class: "sdpyy92",
|
|
14
|
-
propsAsIs: false,
|
|
15
|
-
vars: {
|
|
16
|
-
"sdpyy92-0": [_exp()],
|
|
17
|
-
"sdpyy92-1": [_exp2()],
|
|
18
|
-
"sdpyy92-2": [_exp3()],
|
|
19
|
-
"sdpyy92-3": [_exp4()],
|
|
20
|
-
"sdpyy92-4": [_exp5()]
|
|
21
|
-
}
|
|
22
|
-
}));
|
|
23
5
|
/**
|
|
24
|
-
* Inline code —
|
|
25
|
-
*
|
|
6
|
+
* Inline code — an identifier, literal or path inside a `Text`. A thin preset over `Span`:
|
|
7
|
+
* `<Span isCode>`: mono at the enclosing `Text`'s step (~0.92×), hairline border,
|
|
8
|
+
* `background.tertiary`, `radius.sm`, `2px 4px` padding. It takes every other `Span` prop and
|
|
9
|
+
* inherits size, line height and color from the enclosing `Text`. Multi-line code is `CodeBlock`,
|
|
10
|
+
* not this. No own styles, no own enums.
|
|
26
11
|
*/
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
12
|
+
/** Inline code inside a `Text`; a `Span` preset. */
|
|
13
|
+
var Code = forwardRef(function Code(props, ref) {
|
|
14
|
+
return /* @__PURE__ */ jsx(Span, {
|
|
15
|
+
isCode: true,
|
|
16
|
+
...props,
|
|
17
|
+
ref
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
Code.displayName = "Code";
|
|
30
21
|
//#endregion
|
|
31
22
|
export { Code as default };
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { type AriaAttributes, type CSSProperties } from "react";
|
|
2
|
+
/** Grammar used to highlight `content`. Values equal member names. */
|
|
3
|
+
export declare enum CodeBlockLanguage {
|
|
4
|
+
/** No highlighting. */
|
|
5
|
+
PLAIN = "PLAIN",
|
|
6
|
+
/** Shell scripts and commands. */
|
|
7
|
+
BASH = "BASH",
|
|
8
|
+
/** CSS. */
|
|
9
|
+
CSS = "CSS",
|
|
10
|
+
/** Go. */
|
|
11
|
+
GO = "GO",
|
|
12
|
+
/** GraphQL. */
|
|
13
|
+
GRAPHQL = "GRAPHQL",
|
|
14
|
+
/** HTML (and XML / SVG markup). */
|
|
15
|
+
HTML = "HTML",
|
|
16
|
+
/** JavaScript. */
|
|
17
|
+
JAVASCRIPT = "JAVASCRIPT",
|
|
18
|
+
/** JSON. */
|
|
19
|
+
JSON = "JSON",
|
|
20
|
+
/** JavaScript with JSX. */
|
|
21
|
+
JSX = "JSX",
|
|
22
|
+
/** Markdown. */
|
|
23
|
+
MARKDOWN = "MARKDOWN",
|
|
24
|
+
/** Protocol Buffers. */
|
|
25
|
+
PROTOBUF = "PROTOBUF",
|
|
26
|
+
/** Python. */
|
|
27
|
+
PYTHON = "PYTHON",
|
|
28
|
+
/** Rust. */
|
|
29
|
+
RUST = "RUST",
|
|
30
|
+
/** SQL. */
|
|
31
|
+
SQL = "SQL",
|
|
32
|
+
/** TOML. */
|
|
33
|
+
TOML = "TOML",
|
|
34
|
+
/** TypeScript with JSX. */
|
|
35
|
+
TSX = "TSX",
|
|
36
|
+
/** TypeScript. */
|
|
37
|
+
TYPESCRIPT = "TYPESCRIPT",
|
|
38
|
+
/** YAML. */
|
|
39
|
+
YAML = "YAML"
|
|
40
|
+
}
|
|
41
|
+
export interface CodeBlockProps extends AriaAttributes {
|
|
42
|
+
/** The code. Rendered verbatim; a single trailing newline is dropped. */
|
|
43
|
+
content: string;
|
|
44
|
+
/**
|
|
45
|
+
* Grammar for highlighting. `PLAIN` shows the code unhighlighted.
|
|
46
|
+
* @default CodeBlockLanguage.PLAIN
|
|
47
|
+
*/
|
|
48
|
+
language?: CodeBlockLanguage;
|
|
49
|
+
/** Header text, such as a file name (`pipeline.yaml`). Defaults to the language's display name; there is none for `PLAIN`. */
|
|
50
|
+
label?: string;
|
|
51
|
+
/**
|
|
52
|
+
* Show a copy button in the header that copies `content` exactly as passed.
|
|
53
|
+
* @default false
|
|
54
|
+
*/
|
|
55
|
+
canCopy?: boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Show a line-number gutter. Numbers are not selected or copied.
|
|
58
|
+
* @default false
|
|
59
|
+
*/
|
|
60
|
+
hasLineNumbers?: boolean;
|
|
61
|
+
/**
|
|
62
|
+
* Treat `content` as a unified diff: lines starting with `+` / `-` are tinted as added / removed, `@@` lines as hunk headers. The rest of each line is highlighted with `language`.
|
|
63
|
+
* @default false
|
|
64
|
+
*/
|
|
65
|
+
isDiff?: boolean;
|
|
66
|
+
/** DOM id on the root `<div>`. */
|
|
67
|
+
id?: string;
|
|
68
|
+
/** Any `data-*` attribute, forwarded to the root `<div>`. */
|
|
69
|
+
[dataAttribute: `data-${string}`]: string | number | boolean | undefined;
|
|
70
|
+
/** Extra class on the root `<div>`. */
|
|
71
|
+
className?: string;
|
|
72
|
+
/** Inline style on the root `<div>`; only for setting CSS custom properties. */
|
|
73
|
+
style?: CSSProperties;
|
|
74
|
+
}
|
|
75
|
+
/** Read-only code with lazy syntax highlighting, copy, line numbers and diff mode. */
|
|
76
|
+
declare const CodeBlock: import("react").ForwardRefExoticComponent<CodeBlockProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
77
|
+
export default CodeBlock;
|