@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
|
@@ -0,0 +1,483 @@
|
|
|
1
|
+
import VisuallyHidden from "../a11y/VisuallyHidden.js";
|
|
2
|
+
import { FontFamily } from "../theme/enums.js";
|
|
3
|
+
import Text, { TextSize, TextVariant } from "../text/Text.js";
|
|
4
|
+
import Icon, { IconVariant } from "../icons/Icon.js";
|
|
5
|
+
import Rotate from "../transform/Rotate.js";
|
|
6
|
+
import { ButtonSize, ButtonVariant } from "../buttons/Button.js";
|
|
7
|
+
import CopyButton from "../buttons/CopyButton.js";
|
|
8
|
+
import Span, { SpanVariant } from "../text/Span.js";
|
|
9
|
+
import { InputSize, InputVariant } from "../inputs/Input.js";
|
|
10
|
+
import SearchInput from "../inputs/SearchInput.js";
|
|
11
|
+
import CollapseMotion from "../transform/internal/CollapseMotion.js";
|
|
12
|
+
import { TREE_ROW_CSS, TREE_ROW_LABEL_CSS, TREE_ROW_LEVEL_VARIABLE, TREE_ROW_SIZE_TO_CARET_PX_MAP, TREE_ROW_SIZE_TO_CSS_MAP, TREE_ROW_SIZE_TO_TEXT_SIZE_MAP, TreeRowCaretSlot, TreeRowSize } from "../tree/treeRow.js";
|
|
13
|
+
/* empty css */
|
|
14
|
+
import { styled } from "@linaria/react";
|
|
15
|
+
import { Fragment, forwardRef, useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
16
|
+
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
17
|
+
import { cx } from "@linaria/core";
|
|
18
|
+
import { CaretRightIcon } from "@phosphor-icons/react";
|
|
19
|
+
//#region src/json/JsonViewer.tsx
|
|
20
|
+
/**
|
|
21
|
+
* A JSON value as an explorable tree: one row per key or array item, objects and arrays expand
|
|
22
|
+
* and collapse, primitive values are colored by type (strings green, numbers orange, booleans and
|
|
23
|
+
* `null` purple, structure tertiary), an optional search field highlights matching keys and values
|
|
24
|
+
* and opens their ancestors, and an optional footer shows the focused row's JSONPath with buttons
|
|
25
|
+
* to copy the path or the value as JSON.
|
|
26
|
+
*
|
|
27
|
+
* Its rows are Tree's rows: one shared geometry module (`tree/treeRow.ts`: height, padding,
|
|
28
|
+
* indent, caret slot and size, type step), the same roles and keys (flat `role="treeitem"` rows,
|
|
29
|
+
* roving tab stop, arrows / Home / End / Enter / type-ahead), without composing Tree. It has no
|
|
30
|
+
* selection: the footer follows focus. Read-only. Raw JSON to copy whole is `CodeBlock`; editing is `CodeEditor`.
|
|
31
|
+
*/
|
|
32
|
+
/** Row rung: the same two rungs, with the same row geometry, as `TreeSize`. */
|
|
33
|
+
var JsonViewerSize = /* @__PURE__ */ function(JsonViewerSize) {
|
|
34
|
+
/** Tree's SMALL row: 24px, mono `body_sm`, 10px caret, 14px per level; `SMALL` search field, `X_SMALL` copy buttons. */
|
|
35
|
+
JsonViewerSize["SMALL"] = "SMALL";
|
|
36
|
+
/** Tree's MEDIUM row: 28px, mono `body_md`, 12px caret, 16px per level; `MEDIUM` search field, `SMALL` copy buttons. The default. */
|
|
37
|
+
JsonViewerSize["MEDIUM"] = "MEDIUM";
|
|
38
|
+
return JsonViewerSize;
|
|
39
|
+
}({});
|
|
40
|
+
/**
|
|
41
|
+
* Tones per JSON type: CodeBlock's token hues for the same kinds (spec Decision 3). A typed css map
|
|
42
|
+
* on an `INHERIT` `Span`, since Span's `variant` carries meaning only and has no palette members.
|
|
43
|
+
*/
|
|
44
|
+
var JSON_VALUE_KIND_TO_CSS_MAP = {
|
|
45
|
+
["OBJECT"]: "gx-JsonViewer-OBJECT-o12kbvy5",
|
|
46
|
+
["ARRAY"]: "gx-JsonViewer-ARRAY-auj7crq",
|
|
47
|
+
["STRING"]: "gx-JsonViewer-STRING-sd1e3sf",
|
|
48
|
+
["NUMBER"]: "gx-JsonViewer-NUMBER-nyuj9qk",
|
|
49
|
+
["BOOLEAN"]: "gx-JsonViewer-BOOLEAN-b977xl5",
|
|
50
|
+
["NULL"]: "gx-JsonViewer-NULL-nv25tp1"
|
|
51
|
+
};
|
|
52
|
+
/** Identity: the viewer's rungs are Tree's row rungs (`tree/treeRow.ts`), so the rows match exactly. */
|
|
53
|
+
var JSON_VIEWER_SIZE_TO_ROW_SIZE_MAP = {
|
|
54
|
+
["SMALL"]: TreeRowSize.SMALL,
|
|
55
|
+
["MEDIUM"]: TreeRowSize.MEDIUM
|
|
56
|
+
};
|
|
57
|
+
var JSON_VIEWER_SIZE_TO_INPUT_SIZE_MAP = {
|
|
58
|
+
["SMALL"]: InputSize.SMALL,
|
|
59
|
+
["MEDIUM"]: InputSize.MEDIUM
|
|
60
|
+
};
|
|
61
|
+
var JSON_VIEWER_SIZE_TO_BUTTON_SIZE_MAP = {
|
|
62
|
+
["SMALL"]: ButtonSize.X_SMALL,
|
|
63
|
+
["MEDIUM"]: ButtonSize.SMALL
|
|
64
|
+
};
|
|
65
|
+
/** Printable keys typed within this window build one type-ahead query (logic, not motion). */
|
|
66
|
+
var TYPEAHEAD_TIMEOUT_MS = 500;
|
|
67
|
+
/** Keys that need no bracket notation in a JSONPath. */
|
|
68
|
+
var IDENTIFIER = /^[A-Za-z_$][A-Za-z0-9_$]*$/;
|
|
69
|
+
/** The viewer: search field, rows, footer, stacked. No surface of its own (spec Decision 7). */
|
|
70
|
+
var Root = /*#__PURE__*/ styled("div")({
|
|
71
|
+
name: "Root",
|
|
72
|
+
class: "gx-JsonViewer-rv7ru98",
|
|
73
|
+
propsAsIs: false
|
|
74
|
+
});
|
|
75
|
+
/** The `role="tree"` column of rows. */
|
|
76
|
+
var TREE_CSS = "gx-JsonViewer-TREE_CSS-texbj7a";
|
|
77
|
+
/** Hover and press fills on top of Tree's shared row (`TREE_ROW_CSS`); the viewer has no selection. */
|
|
78
|
+
var ROW_INTERACTIVE_CSS = "gx-JsonViewer-ROW_INTERACTIVE_CSS-rrsy1zk";
|
|
79
|
+
/** A search match: a categorical highlight, not selection (so not `background.selected`). */
|
|
80
|
+
var MARK_CSS = "gx-JsonViewer-MARK_CSS-me67haa";
|
|
81
|
+
/** The footer: the focused path and the two copy buttons, under a hairline rule. */
|
|
82
|
+
var FOOTER_CSS = "gx-JsonViewer-FOOTER_CSS-f1rapjox";
|
|
83
|
+
/** The footer's path takes the free width and truncates. */
|
|
84
|
+
var FOOTER_PATH_CSS = "gx-JsonViewer-FOOTER_PATH_CSS-f3yxl0";
|
|
85
|
+
var kindOf = (value) => {
|
|
86
|
+
if (value === null) return "NULL";
|
|
87
|
+
if (Array.isArray(value)) return "ARRAY";
|
|
88
|
+
switch (typeof value) {
|
|
89
|
+
case "string": return "STRING";
|
|
90
|
+
case "number": return "NUMBER";
|
|
91
|
+
case "boolean": return "BOOLEAN";
|
|
92
|
+
default: return "OBJECT";
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
/** The entries of a container as `[key, value]` pairs, in order. */
|
|
96
|
+
var entriesOf = (value) => {
|
|
97
|
+
if (Array.isArray(value)) return value.map((item, index) => [index, item]);
|
|
98
|
+
if (value !== null && typeof value === "object") return Object.entries(value);
|
|
99
|
+
return [];
|
|
100
|
+
};
|
|
101
|
+
var childPath = (parent, key) => typeof key === "number" ? `${parent}[${key}]` : IDENTIFIER.test(key) ? `${parent}.${key}` : `${parent}[${JSON.stringify(key)}]`;
|
|
102
|
+
var plural = (count, one, many) => `${count} ${count === 1 ? one : many}`;
|
|
103
|
+
/** What a value shows on its row: a primitive as JSON, a container as a summary. */
|
|
104
|
+
var displayOf = (value, kind) => {
|
|
105
|
+
switch (kind) {
|
|
106
|
+
case "OBJECT": {
|
|
107
|
+
const count = entriesOf(value).length;
|
|
108
|
+
return count === 0 ? "{}" : `{${plural(count, "key", "keys")}}`;
|
|
109
|
+
}
|
|
110
|
+
case "ARRAY": {
|
|
111
|
+
const count = entriesOf(value).length;
|
|
112
|
+
return count === 0 ? "[]" : `[${plural(count, "item", "items")}]`;
|
|
113
|
+
}
|
|
114
|
+
case "STRING": return JSON.stringify(value);
|
|
115
|
+
default: return String(value);
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
/** The rows of `data` under its root: the root's entries, or one row for a primitive / empty root. */
|
|
119
|
+
function getRootNodes(data) {
|
|
120
|
+
const kind = kindOf(data);
|
|
121
|
+
const entries = entriesOf(data);
|
|
122
|
+
if (entries.length === 0) return [{
|
|
123
|
+
path: "$",
|
|
124
|
+
key: null,
|
|
125
|
+
value: data,
|
|
126
|
+
kind,
|
|
127
|
+
isContainer: false,
|
|
128
|
+
level: 1,
|
|
129
|
+
parentPath: null
|
|
130
|
+
}];
|
|
131
|
+
return entries.map(([key, value]) => toNode(key, value, "$", 1, null));
|
|
132
|
+
}
|
|
133
|
+
function toNode(key, value, parent, level, parentPath) {
|
|
134
|
+
const kind = kindOf(value);
|
|
135
|
+
return {
|
|
136
|
+
path: childPath(parent, key),
|
|
137
|
+
key,
|
|
138
|
+
value,
|
|
139
|
+
kind,
|
|
140
|
+
isContainer: entriesOf(value).length > 0,
|
|
141
|
+
level,
|
|
142
|
+
parentPath
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
var childrenOf = (node) => entriesOf(node.value).map(([key, value]) => toNode(key, value, node.path, node.level + 1, node.path));
|
|
146
|
+
/** Every node, depth first (for paths, values, search and the initial expansion). */
|
|
147
|
+
function getAllNodes(data) {
|
|
148
|
+
const nodes = [];
|
|
149
|
+
const walk = (list) => {
|
|
150
|
+
for (const node of list) {
|
|
151
|
+
nodes.push(node);
|
|
152
|
+
if (node.isContainer) walk(childrenOf(node));
|
|
153
|
+
}
|
|
154
|
+
};
|
|
155
|
+
walk(getRootNodes(data));
|
|
156
|
+
return nodes;
|
|
157
|
+
}
|
|
158
|
+
/** The searchable text of a node's value: a primitive's display without quotes; containers none. */
|
|
159
|
+
var searchTextOf = (node) => {
|
|
160
|
+
if (node.kind === "OBJECT" || node.kind === "ARRAY") return null;
|
|
161
|
+
const display = displayOf(node.value, node.kind);
|
|
162
|
+
return node.kind === "STRING" ? display.slice(1, -1) : display;
|
|
163
|
+
};
|
|
164
|
+
/** Whether a node's key (not an index) or primitive value contains the lower-cased term. */
|
|
165
|
+
var isMatch = (node, term) => typeof node.key === "string" && node.key.toLowerCase().includes(term) || (searchTextOf(node)?.toLowerCase().includes(term) ?? false);
|
|
166
|
+
/** Splits `text` around case-insensitive occurrences of `term`, marking each. */
|
|
167
|
+
function highlight(text, term) {
|
|
168
|
+
if (term === "") return text;
|
|
169
|
+
const lower = text.toLowerCase();
|
|
170
|
+
const parts = [];
|
|
171
|
+
let from = 0;
|
|
172
|
+
let at = lower.indexOf(term, from);
|
|
173
|
+
if (at === -1) return text;
|
|
174
|
+
while (at !== -1) {
|
|
175
|
+
if (at > from) parts.push(text.slice(from, at));
|
|
176
|
+
parts.push(/* @__PURE__ */ jsx("mark", {
|
|
177
|
+
className: MARK_CSS,
|
|
178
|
+
children: text.slice(at, at + term.length)
|
|
179
|
+
}, `m${at}`));
|
|
180
|
+
from = at + term.length;
|
|
181
|
+
at = lower.indexOf(term, from);
|
|
182
|
+
}
|
|
183
|
+
if (from < text.length) parts.push(text.slice(from));
|
|
184
|
+
return parts;
|
|
185
|
+
}
|
|
186
|
+
var matchLabelOf = (count) => count === 0 ? "No matches" : plural(count, "match", "matches");
|
|
187
|
+
/** A row's depth as the `--gx-json-viewer-level` custom property (0 at the top level). */
|
|
188
|
+
var levelStyle = (level) => ({ [TREE_ROW_LEVEL_VARIABLE]: String(level - 1) });
|
|
189
|
+
/** Collapsible, type-colored JSON with search and path copy. */
|
|
190
|
+
var JsonViewer = forwardRef(function JsonViewer(props, ref) {
|
|
191
|
+
const { data, defaultExpandedDepth = 1, canSearch = false, canCopy = false, size = "MEDIUM", ariaLabel, "aria-label": ariaLabelAttribute, "aria-labelledby": labelledBy, id, className, style, ...rest } = props;
|
|
192
|
+
const rowSize = JSON_VIEWER_SIZE_TO_ROW_SIZE_MAP[size];
|
|
193
|
+
const textSize = TREE_ROW_SIZE_TO_TEXT_SIZE_MAP[rowSize];
|
|
194
|
+
const caretPx = TREE_ROW_SIZE_TO_CARET_PX_MAP[rowSize];
|
|
195
|
+
const treeName = ariaLabel ?? ariaLabelAttribute;
|
|
196
|
+
const allNodes = useMemo(() => getAllNodes(data), [data]);
|
|
197
|
+
const nodeByPath = useMemo(() => new Map(allNodes.map((node) => [node.path, node])), [allNodes]);
|
|
198
|
+
const [expanded, setExpanded] = useState(() => new Set(allNodes.filter((node) => node.isContainer && node.level <= defaultExpandedDepth).map((node) => node.path)));
|
|
199
|
+
const [term, setTerm] = useState("");
|
|
200
|
+
const preSearchExpanded = useRef(null);
|
|
201
|
+
const lowerTerm = term.toLowerCase();
|
|
202
|
+
const matchCount = useMemo(() => lowerTerm === "" ? 0 : allNodes.filter((node) => isMatch(node, lowerTerm)).length, [allNodes, lowerTerm]);
|
|
203
|
+
/** Search drives expansion: the ancestors of every match open; clearing restores the set. */
|
|
204
|
+
const handleSearch = (next) => {
|
|
205
|
+
const lower = next.toLowerCase();
|
|
206
|
+
if (lower === "") {
|
|
207
|
+
if (preSearchExpanded.current !== null) setExpanded(preSearchExpanded.current);
|
|
208
|
+
preSearchExpanded.current = null;
|
|
209
|
+
setTerm("");
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
if (preSearchExpanded.current === null) preSearchExpanded.current = expanded;
|
|
213
|
+
const ancestors = /* @__PURE__ */ new Set();
|
|
214
|
+
for (const node of allNodes) {
|
|
215
|
+
if (!isMatch(node, lower)) continue;
|
|
216
|
+
let parent = node.parentPath;
|
|
217
|
+
while (parent !== null && !ancestors.has(parent)) {
|
|
218
|
+
ancestors.add(parent);
|
|
219
|
+
parent = nodeByPath.get(parent)?.parentPath ?? null;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
setExpanded(ancestors);
|
|
223
|
+
setTerm(next);
|
|
224
|
+
};
|
|
225
|
+
const visible = useMemo(() => {
|
|
226
|
+
const rows = [];
|
|
227
|
+
const walk = (list) => {
|
|
228
|
+
for (const node of list) {
|
|
229
|
+
rows.push(node);
|
|
230
|
+
if (node.isContainer && expanded.has(node.path)) walk(childrenOf(node));
|
|
231
|
+
}
|
|
232
|
+
};
|
|
233
|
+
walk(getRootNodes(data));
|
|
234
|
+
return rows;
|
|
235
|
+
}, [data, expanded]);
|
|
236
|
+
const visibleIndex = useMemo(() => new Map(visible.map((node, index) => [node.path, index])), [visible]);
|
|
237
|
+
const [focusedPath, setFocusedPath] = useState(null);
|
|
238
|
+
/** The roving tab stop: the last focused row, its nearest visible ancestor, else the first row. */
|
|
239
|
+
const tabStopPath = useMemo(() => {
|
|
240
|
+
let path = focusedPath;
|
|
241
|
+
while (path !== null) {
|
|
242
|
+
if (visibleIndex.has(path)) return path;
|
|
243
|
+
path = nodeByPath.get(path)?.parentPath ?? null;
|
|
244
|
+
}
|
|
245
|
+
return visible[0]?.path ?? null;
|
|
246
|
+
}, [
|
|
247
|
+
focusedPath,
|
|
248
|
+
visible,
|
|
249
|
+
visibleIndex,
|
|
250
|
+
nodeByPath
|
|
251
|
+
]);
|
|
252
|
+
const rowElements = useRef(/* @__PURE__ */ new Map());
|
|
253
|
+
const rowRefCallbacks = useRef(/* @__PURE__ */ new Map());
|
|
254
|
+
const shouldRestoreFocus = useRef(false);
|
|
255
|
+
const setRowElement = (path) => {
|
|
256
|
+
let callback = rowRefCallbacks.current.get(path);
|
|
257
|
+
if (callback === void 0) {
|
|
258
|
+
callback = (element) => {
|
|
259
|
+
if (element) {
|
|
260
|
+
rowElements.current.set(path, element);
|
|
261
|
+
return;
|
|
262
|
+
}
|
|
263
|
+
const previous = rowElements.current.get(path);
|
|
264
|
+
if (previous !== void 0 && previous === previous.ownerDocument.activeElement) shouldRestoreFocus.current = true;
|
|
265
|
+
rowElements.current.delete(path);
|
|
266
|
+
rowRefCallbacks.current.delete(path);
|
|
267
|
+
};
|
|
268
|
+
rowRefCallbacks.current.set(path, callback);
|
|
269
|
+
}
|
|
270
|
+
return callback;
|
|
271
|
+
};
|
|
272
|
+
useEffect(() => {
|
|
273
|
+
if (!shouldRestoreFocus.current) return;
|
|
274
|
+
shouldRestoreFocus.current = false;
|
|
275
|
+
if (tabStopPath !== null) rowElements.current.get(tabStopPath)?.focus();
|
|
276
|
+
});
|
|
277
|
+
const typeahead = useRef({
|
|
278
|
+
query: "",
|
|
279
|
+
timer: void 0
|
|
280
|
+
});
|
|
281
|
+
useEffect(() => {
|
|
282
|
+
const state = typeahead.current;
|
|
283
|
+
return () => clearTimeout(state.timer);
|
|
284
|
+
}, []);
|
|
285
|
+
const focusRow = useCallback((path) => {
|
|
286
|
+
if (path === null || path === void 0) return;
|
|
287
|
+
rowElements.current.get(path)?.focus();
|
|
288
|
+
}, []);
|
|
289
|
+
const toggle = (path) => {
|
|
290
|
+
const next = new Set(expanded);
|
|
291
|
+
if (next.has(path)) next.delete(path);
|
|
292
|
+
else next.add(path);
|
|
293
|
+
setExpanded(next);
|
|
294
|
+
};
|
|
295
|
+
/** Moves focus to the next visible row whose key text starts with the typed query. */
|
|
296
|
+
const handleTypeahead = (fromIndex, character) => {
|
|
297
|
+
const state = typeahead.current;
|
|
298
|
+
clearTimeout(state.timer);
|
|
299
|
+
state.query += character.toLowerCase();
|
|
300
|
+
state.timer = setTimeout(() => {
|
|
301
|
+
state.query = "";
|
|
302
|
+
}, TYPEAHEAD_TIMEOUT_MS);
|
|
303
|
+
const isRepeat = [...state.query].every((entry) => entry === state.query[0]);
|
|
304
|
+
const query = isRepeat ? state.query.charAt(0) : state.query;
|
|
305
|
+
const start = isRepeat ? fromIndex + 1 : fromIndex;
|
|
306
|
+
for (let offset = 0; offset < visible.length; offset += 1) {
|
|
307
|
+
const node = visible[(start + offset) % visible.length];
|
|
308
|
+
if (node !== void 0 && node.key !== null && String(node.key).toLowerCase().startsWith(query)) {
|
|
309
|
+
focusRow(node.path);
|
|
310
|
+
return;
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
};
|
|
314
|
+
const handleKeyDown = (event, node) => {
|
|
315
|
+
if (event.target !== event.currentTarget) return;
|
|
316
|
+
const index = visibleIndex.get(node.path) ?? 0;
|
|
317
|
+
const isExpanded = node.isContainer && expanded.has(node.path);
|
|
318
|
+
let isHandled = true;
|
|
319
|
+
switch (event.key) {
|
|
320
|
+
case "ArrowDown":
|
|
321
|
+
focusRow(visible[index + 1]?.path);
|
|
322
|
+
break;
|
|
323
|
+
case "ArrowUp":
|
|
324
|
+
focusRow(visible[index - 1]?.path);
|
|
325
|
+
break;
|
|
326
|
+
case "Home":
|
|
327
|
+
focusRow(visible[0]?.path);
|
|
328
|
+
break;
|
|
329
|
+
case "End":
|
|
330
|
+
focusRow(visible[visible.length - 1]?.path);
|
|
331
|
+
break;
|
|
332
|
+
case "ArrowRight":
|
|
333
|
+
if (node.isContainer) if (!isExpanded) toggle(node.path);
|
|
334
|
+
else focusRow(visible[index + 1]?.path);
|
|
335
|
+
break;
|
|
336
|
+
case "ArrowLeft":
|
|
337
|
+
if (isExpanded) toggle(node.path);
|
|
338
|
+
else focusRow(node.parentPath);
|
|
339
|
+
break;
|
|
340
|
+
case "Enter":
|
|
341
|
+
if (node.isContainer) toggle(node.path);
|
|
342
|
+
break;
|
|
343
|
+
case " ": break;
|
|
344
|
+
default: if (event.key.length === 1 && !event.ctrlKey && !event.metaKey && !event.altKey) handleTypeahead(index, event.key);
|
|
345
|
+
else isHandled = false;
|
|
346
|
+
}
|
|
347
|
+
if (isHandled) event.preventDefault();
|
|
348
|
+
};
|
|
349
|
+
/** One level of rows, each container followed by its animated group. */
|
|
350
|
+
const renderNodes = (list) => list.map((node, position) => {
|
|
351
|
+
const isExpanded = node.isContainer && expanded.has(node.path);
|
|
352
|
+
const display = displayOf(node.value, node.kind);
|
|
353
|
+
const isContainerKind = node.kind === "OBJECT" || node.kind === "ARRAY";
|
|
354
|
+
const valueText = node.kind === "STRING" ? /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
355
|
+
"\"",
|
|
356
|
+
highlight(display.slice(1, -1), lowerTerm),
|
|
357
|
+
"\""
|
|
358
|
+
] }) : isContainerKind ? display : highlight(display, lowerTerm);
|
|
359
|
+
const handleCaretClick = (event) => {
|
|
360
|
+
event.stopPropagation();
|
|
361
|
+
rowElements.current.get(node.path)?.focus();
|
|
362
|
+
toggle(node.path);
|
|
363
|
+
};
|
|
364
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs("div", {
|
|
365
|
+
ref: setRowElement(node.path),
|
|
366
|
+
role: "treeitem",
|
|
367
|
+
"aria-level": node.level,
|
|
368
|
+
"aria-setsize": list.length,
|
|
369
|
+
"aria-posinset": position + 1,
|
|
370
|
+
"aria-expanded": node.isContainer ? isExpanded : void 0,
|
|
371
|
+
tabIndex: tabStopPath === node.path ? 0 : -1,
|
|
372
|
+
className: cx(TREE_ROW_CSS, TREE_ROW_SIZE_TO_CSS_MAP[rowSize], ROW_INTERACTIVE_CSS),
|
|
373
|
+
style: levelStyle(node.level),
|
|
374
|
+
onFocus: () => setFocusedPath(node.path),
|
|
375
|
+
onClick: () => {
|
|
376
|
+
if (node.isContainer) toggle(node.path);
|
|
377
|
+
},
|
|
378
|
+
onKeyDown: (event) => handleKeyDown(event, node),
|
|
379
|
+
children: [/* @__PURE__ */ jsx(TreeRowCaretSlot, {
|
|
380
|
+
"aria-hidden": true,
|
|
381
|
+
onClick: node.isContainer ? handleCaretClick : void 0,
|
|
382
|
+
children: node.isContainer && /* @__PURE__ */ jsx(Rotate, {
|
|
383
|
+
isRotated: isExpanded,
|
|
384
|
+
deg: 90,
|
|
385
|
+
children: /* @__PURE__ */ jsx(Icon, {
|
|
386
|
+
component: CaretRightIcon,
|
|
387
|
+
size: caretPx,
|
|
388
|
+
variant: IconVariant.TERTIARY
|
|
389
|
+
})
|
|
390
|
+
})
|
|
391
|
+
}), /* @__PURE__ */ jsxs(Text, {
|
|
392
|
+
as: "span",
|
|
393
|
+
family: FontFamily.MONO,
|
|
394
|
+
size: textSize,
|
|
395
|
+
lineClamp: 1,
|
|
396
|
+
shouldTooltipOnOverflow: true,
|
|
397
|
+
className: TREE_ROW_LABEL_CSS,
|
|
398
|
+
children: [node.key !== null && /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Span, {
|
|
399
|
+
variant: typeof node.key === "number" ? SpanVariant.TERTIARY : SpanVariant.PRIMARY,
|
|
400
|
+
children: typeof node.key === "number" ? String(node.key) : highlight(node.key, lowerTerm)
|
|
401
|
+
}), /* @__PURE__ */ jsx(Span, {
|
|
402
|
+
variant: SpanVariant.SECONDARY,
|
|
403
|
+
children: ": "
|
|
404
|
+
})] }), /* @__PURE__ */ jsx(Span, {
|
|
405
|
+
variant: SpanVariant.INHERIT,
|
|
406
|
+
className: JSON_VALUE_KIND_TO_CSS_MAP[node.kind],
|
|
407
|
+
children: valueText
|
|
408
|
+
})]
|
|
409
|
+
})]
|
|
410
|
+
}), node.isContainer && /* @__PURE__ */ jsx(CollapseMotion, {
|
|
411
|
+
isOpen: isExpanded,
|
|
412
|
+
children: isExpanded && renderNodes(childrenOf(node))
|
|
413
|
+
})] }, node.path);
|
|
414
|
+
});
|
|
415
|
+
const footerNode = nodeByPath.get(focusedPath ?? "$");
|
|
416
|
+
const footerPath = focusedPath ?? "$";
|
|
417
|
+
const footerValue = JSON.stringify(footerNode?.value ?? data, null, 2);
|
|
418
|
+
const matchLabel = matchLabelOf(matchCount);
|
|
419
|
+
const buttonSize = JSON_VIEWER_SIZE_TO_BUTTON_SIZE_MAP[size];
|
|
420
|
+
return /* @__PURE__ */ jsxs(Root, {
|
|
421
|
+
...rest,
|
|
422
|
+
ref,
|
|
423
|
+
id,
|
|
424
|
+
className,
|
|
425
|
+
style,
|
|
426
|
+
children: [
|
|
427
|
+
canSearch && /* @__PURE__ */ jsx(SearchInput, {
|
|
428
|
+
size: JSON_VIEWER_SIZE_TO_INPUT_SIZE_MAP[size],
|
|
429
|
+
variant: InputVariant.PRIMARY,
|
|
430
|
+
fillWidth: true,
|
|
431
|
+
ariaLabel: `Search ${treeName ?? "JSON"}`,
|
|
432
|
+
onSearch: handleSearch,
|
|
433
|
+
trailing: term !== "" && /* @__PURE__ */ jsx(Text, {
|
|
434
|
+
as: "span",
|
|
435
|
+
size: TextSize.BODY_SM,
|
|
436
|
+
variant: TextVariant.TERTIARY,
|
|
437
|
+
children: matchLabel
|
|
438
|
+
})
|
|
439
|
+
}),
|
|
440
|
+
/* @__PURE__ */ jsx("div", {
|
|
441
|
+
role: "tree",
|
|
442
|
+
"aria-label": treeName,
|
|
443
|
+
"aria-labelledby": labelledBy,
|
|
444
|
+
className: TREE_CSS,
|
|
445
|
+
children: renderNodes(getRootNodes(data))
|
|
446
|
+
}),
|
|
447
|
+
canCopy && /* @__PURE__ */ jsxs("div", {
|
|
448
|
+
className: FOOTER_CSS,
|
|
449
|
+
children: [
|
|
450
|
+
/* @__PURE__ */ jsx(Text, {
|
|
451
|
+
as: "span",
|
|
452
|
+
family: FontFamily.MONO,
|
|
453
|
+
size: textSize,
|
|
454
|
+
variant: TextVariant.SECONDARY,
|
|
455
|
+
lineClamp: 1,
|
|
456
|
+
shouldTooltipOnOverflow: true,
|
|
457
|
+
className: FOOTER_PATH_CSS,
|
|
458
|
+
children: footerPath
|
|
459
|
+
}),
|
|
460
|
+
/* @__PURE__ */ jsx(CopyButton, {
|
|
461
|
+
value: footerPath,
|
|
462
|
+
label: "Copy path",
|
|
463
|
+
size: buttonSize,
|
|
464
|
+
variant: ButtonVariant.TERTIARY
|
|
465
|
+
}),
|
|
466
|
+
/* @__PURE__ */ jsx(CopyButton, {
|
|
467
|
+
value: footerValue,
|
|
468
|
+
label: "Copy value",
|
|
469
|
+
size: buttonSize,
|
|
470
|
+
variant: ButtonVariant.TERTIARY
|
|
471
|
+
})
|
|
472
|
+
]
|
|
473
|
+
}),
|
|
474
|
+
/* @__PURE__ */ jsx(VisuallyHidden, {
|
|
475
|
+
"aria-live": "polite",
|
|
476
|
+
children: term === "" ? "" : matchLabel
|
|
477
|
+
})
|
|
478
|
+
]
|
|
479
|
+
});
|
|
480
|
+
});
|
|
481
|
+
JsonViewer.displayName = "JsonViewer";
|
|
482
|
+
//#endregion
|
|
483
|
+
export { JsonViewerSize, JsonViewer as default };
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { type AriaAttributes, type CSSProperties, type ElementType, type ReactNode } from "react";
|
|
2
|
+
import { Radius, type SpaceShorthand } from "../theme/enums.js";
|
|
3
|
+
/** Surface step the box fills with (surface set, Constitution V-A). Leave `variant` unset for no fill. */
|
|
4
|
+
export declare enum BoxVariant {
|
|
5
|
+
/** The canvas, `background.base`. */
|
|
6
|
+
BASE = "BASE",
|
|
7
|
+
/** A panel, `background.primary`. */
|
|
8
|
+
PRIMARY = "PRIMARY",
|
|
9
|
+
/** A raised surface, `background.secondary`. */
|
|
10
|
+
SECONDARY = "SECONDARY",
|
|
11
|
+
/** The most elevated surface, `background.tertiary`. */
|
|
12
|
+
TERTIARY = "TERTIARY"
|
|
13
|
+
}
|
|
14
|
+
/** Offsets for a positioned box. A number is px; a string is any CSS length. */
|
|
15
|
+
export type BoxInset = {
|
|
16
|
+
/** CSS `top`. */
|
|
17
|
+
top?: number | string;
|
|
18
|
+
/** CSS `right`. */
|
|
19
|
+
right?: number | string;
|
|
20
|
+
/** CSS `bottom`. */
|
|
21
|
+
bottom?: number | string;
|
|
22
|
+
/** CSS `left`. */
|
|
23
|
+
left?: number | string;
|
|
24
|
+
};
|
|
25
|
+
export interface BoxProps extends AriaAttributes {
|
|
26
|
+
/** Content of the box. */
|
|
27
|
+
children?: ReactNode;
|
|
28
|
+
/**
|
|
29
|
+
* Surface step the box fills with. Unset draws no fill: the parent shows through.
|
|
30
|
+
* @default undefined (no fill)
|
|
31
|
+
*/
|
|
32
|
+
variant?: BoxVariant;
|
|
33
|
+
/**
|
|
34
|
+
* Draw the `0.5px` hairline border (`border.primary`).
|
|
35
|
+
* @default false
|
|
36
|
+
*/
|
|
37
|
+
hasBorder?: boolean;
|
|
38
|
+
/** Corner radius from the scale. Square corners when omitted. */
|
|
39
|
+
radius?: Radius;
|
|
40
|
+
/** Padding from the space scale: one value, or 2–4 in CSS shorthand order (`[12, 16]`). */
|
|
41
|
+
padding?: SpaceShorthand;
|
|
42
|
+
/** CSS `width`. A number is px. `fillWidth` wins over it. */
|
|
43
|
+
width?: number | string;
|
|
44
|
+
/** CSS `height`. A number is px. Use `"100%"` to fill the parent (1.x `fillHeight`). */
|
|
45
|
+
height?: number | string;
|
|
46
|
+
/** CSS `min-width`. A number is px. */
|
|
47
|
+
minWidth?: number | string;
|
|
48
|
+
/** CSS `max-width`. A number is px. (1.x `Wrapper maxWidth` set `width`; use `width` for that.) */
|
|
49
|
+
maxWidth?: number | string;
|
|
50
|
+
/** CSS `min-height`. A number is px. */
|
|
51
|
+
minHeight?: number | string;
|
|
52
|
+
/** CSS `max-height`. A number is px. */
|
|
53
|
+
maxHeight?: number | string;
|
|
54
|
+
/**
|
|
55
|
+
* Stretch to the parent's full width (`width: 100%`). Wins over `width`.
|
|
56
|
+
* @default false
|
|
57
|
+
*/
|
|
58
|
+
fillWidth?: boolean;
|
|
59
|
+
/**
|
|
60
|
+
* CSS `overflow`.
|
|
61
|
+
* @default "visible"
|
|
62
|
+
*/
|
|
63
|
+
overflow?: CSSProperties["overflow"];
|
|
64
|
+
/**
|
|
65
|
+
* CSS `position`.
|
|
66
|
+
* @default static
|
|
67
|
+
*/
|
|
68
|
+
position?: CSSProperties["position"];
|
|
69
|
+
/** `top` / `right` / `bottom` / `left` offsets; they apply once `position` is not `static`. */
|
|
70
|
+
inset?: BoxInset;
|
|
71
|
+
/**
|
|
72
|
+
* Element or component to render (`"section"`, `"aside"`, a router link).
|
|
73
|
+
* @default "div"
|
|
74
|
+
*/
|
|
75
|
+
as?: ElementType;
|
|
76
|
+
/** DOM id on the root element. */
|
|
77
|
+
id?: string;
|
|
78
|
+
/** Any `data-*` attribute, forwarded to the root element. */
|
|
79
|
+
[dataAttribute: `data-${string}`]: string | number | boolean | undefined;
|
|
80
|
+
/** Extra class on the root element. */
|
|
81
|
+
className?: string;
|
|
82
|
+
/** Inline style on the root element; only for setting CSS custom properties. */
|
|
83
|
+
style?: CSSProperties;
|
|
84
|
+
}
|
|
85
|
+
/** A block container with a surface, an optional hairline border, a radius and padding. */
|
|
86
|
+
declare const Box: import("react").ForwardRefExoticComponent<BoxProps & import("react").RefAttributes<HTMLElement>>;
|
|
87
|
+
export default Box;
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { Radius } from "../theme/enums.js";
|
|
2
|
+
import { getCssSizeValue, spaceToCss } from "../utils/css.js";
|
|
3
|
+
/* empty css */
|
|
4
|
+
import { styled } from "@linaria/react";
|
|
5
|
+
import { forwardRef } from "react";
|
|
6
|
+
import { jsx } from "react/jsx-runtime";
|
|
7
|
+
import { cx } from "@linaria/core";
|
|
8
|
+
//#region src/layout/Box.tsx
|
|
9
|
+
/**
|
|
10
|
+
* The generic block container: a surface step, an optional hairline border, a radius, padding,
|
|
11
|
+
* and the sizing / positioning props a layout component may carry (Constitution V). Replaces 1.x
|
|
12
|
+
* `Wrapper` (the positioning box) and `Spacing` (margins are gone; use the parent's `gap` or
|
|
13
|
+
* `padding`).
|
|
14
|
+
*
|
|
15
|
+
* Continuous values (`padding`, sizes, `overflow`, `position`, `inset`) are set as `--gx-box-*`
|
|
16
|
+
* custom properties on the root, and a block that reads each one is switched on only when its prop
|
|
17
|
+
* is set. So a nested `Box` never inherits its parent's values, and nothing extra reaches a custom
|
|
18
|
+
* `as` component (Linaria forwards `$`-props to one).
|
|
19
|
+
*/
|
|
20
|
+
/** Surface step the box fills with (surface set, Constitution V-A). Leave `variant` unset for no fill. */
|
|
21
|
+
var BoxVariant = /* @__PURE__ */ function(BoxVariant) {
|
|
22
|
+
/** The canvas, `background.base`. */
|
|
23
|
+
BoxVariant["BASE"] = "BASE";
|
|
24
|
+
/** A panel, `background.primary`. */
|
|
25
|
+
BoxVariant["PRIMARY"] = "PRIMARY";
|
|
26
|
+
/** A raised surface, `background.secondary`. */
|
|
27
|
+
BoxVariant["SECONDARY"] = "SECONDARY";
|
|
28
|
+
/** The most elevated surface, `background.tertiary`. */
|
|
29
|
+
BoxVariant["TERTIARY"] = "TERTIARY";
|
|
30
|
+
return BoxVariant;
|
|
31
|
+
}({});
|
|
32
|
+
var Root = /*#__PURE__*/ styled("div")({
|
|
33
|
+
name: "Root",
|
|
34
|
+
class: "gx-Box-rcu11uw",
|
|
35
|
+
propsAsIs: false
|
|
36
|
+
});
|
|
37
|
+
var BOX_VARIANT_TO_CSS_MAP = {
|
|
38
|
+
["BASE"]: "gx-Box-BASE-bn7d3r",
|
|
39
|
+
["PRIMARY"]: "gx-Box-PRIMARY-p1tb0t1s",
|
|
40
|
+
["SECONDARY"]: "gx-Box-SECONDARY-sngj0ew",
|
|
41
|
+
["TERTIARY"]: "gx-Box-TERTIARY-t1vd7izj"
|
|
42
|
+
};
|
|
43
|
+
var RADIUS_TO_CSS_MAP = {
|
|
44
|
+
[Radius.SM]: "gx-Box-Radius_SM-r1duzr06",
|
|
45
|
+
[Radius.MD]: "gx-Box-Radius_MD-r501792",
|
|
46
|
+
[Radius.LG]: "gx-Box-Radius_LG-rxydgx9",
|
|
47
|
+
[Radius.PILL]: "gx-Box-Radius_PILL-rrn38q3"
|
|
48
|
+
};
|
|
49
|
+
var BORDER_CSS = "gx-Box-BORDER_CSS-b1aq7688";
|
|
50
|
+
var FILL_WIDTH_CSS = "gx-Box-FILL_WIDTH_CSS-f1nw7r38";
|
|
51
|
+
/** Each block reads the `--gx-box-<property>` custom property the component sets beside it. */
|
|
52
|
+
var BOX_CSS_PROPERTY_TO_CSS_MAP = {
|
|
53
|
+
padding: "gx-Box-padding-poq987s",
|
|
54
|
+
width: "gx-Box-width-w1dvt2z3",
|
|
55
|
+
height: "gx-Box-height-hpkzdg3",
|
|
56
|
+
"min-width": "gx-Box-min-width-m1w4kn1o",
|
|
57
|
+
"max-width": "gx-Box-max-width-morpz05",
|
|
58
|
+
"min-height": "gx-Box-min-height-mwtkiw3",
|
|
59
|
+
"max-height": "gx-Box-max-height-mz7b6w6",
|
|
60
|
+
overflow: "gx-Box-overflow-o1d5jyby",
|
|
61
|
+
position: "gx-Box-position-p1cr9tw3",
|
|
62
|
+
top: "gx-Box-top-t176ib3h",
|
|
63
|
+
right: "gx-Box-right-rjk68mc",
|
|
64
|
+
bottom: "gx-Box-bottom-bqrxdfn",
|
|
65
|
+
left: "gx-Box-left-l1xu1nwn"
|
|
66
|
+
};
|
|
67
|
+
/** A length prop as CSS (number → px), or `undefined` when unset. */
|
|
68
|
+
var toLength = (value) => value === void 0 ? void 0 : getCssSizeValue(value);
|
|
69
|
+
/** A block container with a surface, an optional hairline border, a radius and padding. */
|
|
70
|
+
var Box = forwardRef(function Box({ children, variant, hasBorder = false, radius, padding, width, height, minWidth, maxWidth, minHeight, maxHeight, fillWidth = false, overflow, position, inset, as = "div", id, className, style, ...rest }, ref) {
|
|
71
|
+
const values = {
|
|
72
|
+
padding: padding === void 0 ? void 0 : spaceToCss(padding),
|
|
73
|
+
width: fillWidth ? void 0 : toLength(width),
|
|
74
|
+
height: toLength(height),
|
|
75
|
+
"min-width": toLength(minWidth),
|
|
76
|
+
"max-width": toLength(maxWidth),
|
|
77
|
+
"min-height": toLength(minHeight),
|
|
78
|
+
"max-height": toLength(maxHeight),
|
|
79
|
+
overflow,
|
|
80
|
+
position,
|
|
81
|
+
top: toLength(inset?.top),
|
|
82
|
+
right: toLength(inset?.right),
|
|
83
|
+
bottom: toLength(inset?.bottom),
|
|
84
|
+
left: toLength(inset?.left)
|
|
85
|
+
};
|
|
86
|
+
const classNames = [];
|
|
87
|
+
const variables = {};
|
|
88
|
+
for (const property of Object.keys(values)) {
|
|
89
|
+
const value = values[property];
|
|
90
|
+
if (value === void 0) continue;
|
|
91
|
+
classNames.push(BOX_CSS_PROPERTY_TO_CSS_MAP[property]);
|
|
92
|
+
variables[`--gx-box-${property}`] = value;
|
|
93
|
+
}
|
|
94
|
+
return /* @__PURE__ */ jsx(Root, {
|
|
95
|
+
...rest,
|
|
96
|
+
as,
|
|
97
|
+
ref,
|
|
98
|
+
id,
|
|
99
|
+
className: cx(variant !== void 0 && BOX_VARIANT_TO_CSS_MAP[variant], hasBorder && BORDER_CSS, radius !== void 0 && RADIUS_TO_CSS_MAP[radius], fillWidth && FILL_WIDTH_CSS, ...classNames, className),
|
|
100
|
+
style: {
|
|
101
|
+
...variables,
|
|
102
|
+
...style
|
|
103
|
+
},
|
|
104
|
+
children
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
Box.displayName = "Box";
|
|
108
|
+
//#endregion
|
|
109
|
+
export { BoxVariant, Box as default };
|