@yamada-ui/react 2.2.1-dev-20260428143650 → 2.2.1-dev-20260428150301
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/dist/cjs/components/chart/use-chart.cjs +6 -16
- package/dist/cjs/components/chart/use-chart.cjs.map +1 -1
- package/dist/cjs/components/tabs/use-tabs.cjs +10 -18
- package/dist/cjs/components/tabs/use-tabs.cjs.map +1 -1
- package/dist/esm/components/chart/use-chart.js +6 -16
- package/dist/esm/components/chart/use-chart.js.map +1 -1
- package/dist/esm/components/tabs/use-tabs.js +10 -18
- package/dist/esm/components/tabs/use-tabs.js.map +1 -1
- package/dist/types/components/accordion/accordion.d.ts +2 -2
- package/dist/types/components/accordion/accordion.style.d.ts +1 -1
- package/dist/types/components/accordion/use-accordion.d.ts +11 -11
- package/dist/types/components/action-bar/action-bar.d.ts +2 -2
- package/dist/types/components/airy/airy.d.ts +2 -2
- package/dist/types/components/alert/alert.d.ts +2 -2
- package/dist/types/components/alert/alert.style.d.ts +1 -1
- package/dist/types/components/alpha-slider/alpha-slider.d.ts +2 -2
- package/dist/types/components/aspect-ratio/aspect-ratio.d.ts +2 -2
- package/dist/types/components/autocomplete/autocomplete.d.ts +2 -2
- package/dist/types/components/autocomplete/autocomplete.style.d.ts +1 -1
- package/dist/types/components/autocomplete/use-autocomplete.d.ts +5 -5
- package/dist/types/components/avatar/avatar.d.ts +5 -5
- package/dist/types/components/avatar/use-avatar-group.d.ts +2 -2
- package/dist/types/components/badge/badge.d.ts +2 -2
- package/dist/types/components/bleed/bleed.d.ts +2 -2
- package/dist/types/components/blockquote/blockquote.d.ts +2 -2
- package/dist/types/components/breadcrumb/breadcrumb.d.ts +2 -2
- package/dist/types/components/breadcrumb/breadcrumb.style.d.ts +1 -1
- package/dist/types/components/breadcrumb/use-breadcrumb.d.ts +2 -2
- package/dist/types/components/button/button.d.ts +2 -2
- package/dist/types/components/button/icon-button.d.ts +2 -2
- package/dist/types/components/calendar/calendar.d.ts +2 -2
- package/dist/types/components/calendar/calendar.style.d.ts +2 -2
- package/dist/types/components/calendar/use-calendar.d.ts +8 -8
- package/dist/types/components/card/card.d.ts +2 -2
- package/dist/types/components/carousel/carousel.d.ts +2 -2
- package/dist/types/components/carousel/carousel.style.d.ts +2 -2
- package/dist/types/components/carousel/use-carousel.d.ts +3 -3
- package/dist/types/components/center/center.d.ts +2 -2
- package/dist/types/components/chart/chart.d.ts +5 -5
- package/dist/types/components/chart/composed-chart.d.ts +2 -2
- package/dist/types/components/chart/donut-chart.d.ts +2 -2
- package/dist/types/components/chart/pie-chart.d.ts +2 -2
- package/dist/types/components/chart/radar-chart.d.ts +2 -2
- package/dist/types/components/chart/radial-chart.d.ts +2 -2
- package/dist/types/components/chart/use-chart.d.ts +2 -2
- package/dist/types/components/checkbox/checkbox.d.ts +4 -4
- package/dist/types/components/checkbox/checkbox.style.d.ts +1 -1
- package/dist/types/components/checkbox/use-checkbox-group.d.ts +2 -2
- package/dist/types/components/checkbox-card/checkbox-card.d.ts +5 -5
- package/dist/types/components/checkbox-card/checkbox-card.style.d.ts +1 -1
- package/dist/types/components/circle-progress/circle-progress.d.ts +2 -2
- package/dist/types/components/close-button/close-button.d.ts +2 -2
- package/dist/types/components/code/code.d.ts +2 -2
- package/dist/types/components/collapse/collapse.d.ts +2 -2
- package/dist/types/components/color-picker/color-picker.d.ts +2 -2
- package/dist/types/components/color-picker/use-color-picker.d.ts +2 -2
- package/dist/types/components/color-selector/color-selector.d.ts +2 -2
- package/dist/types/components/color-selector/color-selector.style.d.ts +2 -2
- package/dist/types/components/color-selector/use-color-selector.d.ts +3 -3
- package/dist/types/components/color-swatch/color-swatch.d.ts +2 -2
- package/dist/types/components/container/container.d.ts +2 -2
- package/dist/types/components/data-list/data-list.d.ts +2 -2
- package/dist/types/components/data-list/data-list.style.d.ts +1 -1
- package/dist/types/components/date-picker/date-picker.d.ts +2 -2
- package/dist/types/components/date-picker/use-date-picker.d.ts +4 -4
- package/dist/types/components/drawer/drawer.d.ts +2 -2
- package/dist/types/components/dropzone/dropzone.d.ts +5 -5
- package/dist/types/components/dropzone/dropzone.style.d.ts +1 -1
- package/dist/types/components/editable/editable.d.ts +4 -4
- package/dist/types/components/editable/use-editable.d.ts +2 -2
- package/dist/types/components/em/em.d.ts +2 -2
- package/dist/types/components/empty-state/empty-state.d.ts +2 -2
- package/dist/types/components/empty-state/empty-state.style.d.ts +2 -2
- package/dist/types/components/fade/fade.d.ts +2 -2
- package/dist/types/components/field/field.d.ts +3 -3
- package/dist/types/components/field/use-field-props.d.ts +3 -3
- package/dist/types/components/fieldset/fieldset.d.ts +3 -3
- package/dist/types/components/file-button/file-button.d.ts +2 -2
- package/dist/types/components/file-button/use-file-button.d.ts +18 -18
- package/dist/types/components/file-input/file-input.d.ts +2 -2
- package/dist/types/components/file-input/use-file-input.d.ts +15 -15
- package/dist/types/components/flex/flex.d.ts +2 -2
- package/dist/types/components/flip/flip.d.ts +4 -4
- package/dist/types/components/flip/flip.style.d.ts +1 -1
- package/dist/types/components/float/float.d.ts +2 -2
- package/dist/types/components/form/form.d.ts +3 -3
- package/dist/types/components/form/form.style.d.ts +1 -1
- package/dist/types/components/format/format-byte.d.ts +4 -4
- package/dist/types/components/format/format-date-time.d.ts +4 -4
- package/dist/types/components/format/format-number.d.ts +2 -2
- package/dist/types/components/grid/grid-item.d.ts +2 -2
- package/dist/types/components/grid/grid.d.ts +2 -2
- package/dist/types/components/group/group.d.ts +2 -2
- package/dist/types/components/group/use-group.d.ts +2 -2
- package/dist/types/components/heading/heading.d.ts +2 -2
- package/dist/types/components/hue-slider/hue-slider.d.ts +3 -3
- package/dist/types/components/icon/icon.d.ts +5 -5
- package/dist/types/components/image/image.d.ts +2 -2
- package/dist/types/components/indicator/indicator.d.ts +4 -4
- package/dist/types/components/infinite-scroll-area/infinite-scroll-area.d.ts +2 -2
- package/dist/types/components/input/input-addon.d.ts +2 -2
- package/dist/types/components/input/input-element.d.ts +2 -2
- package/dist/types/components/input/input.d.ts +2 -2
- package/dist/types/components/kbd/kbd.d.ts +2 -2
- package/dist/types/components/link/link.d.ts +2 -2
- package/dist/types/components/link-box/link-box.d.ts +2 -2
- package/dist/types/components/list/list.d.ts +2 -2
- package/dist/types/components/list/list.style.d.ts +2 -2
- package/dist/types/components/loading/loading-provider.d.ts +2 -2
- package/dist/types/components/loading/loading.d.ts +3 -3
- package/dist/types/components/mark/mark.d.ts +2 -2
- package/dist/types/components/menu/menu.d.ts +2 -2
- package/dist/types/components/menu/menu.style.d.ts +2 -2
- package/dist/types/components/menu/use-menu.d.ts +11 -11
- package/dist/types/components/modal/modal.d.ts +2 -2
- package/dist/types/components/native-accordion/native-accordion.d.ts +2 -2
- package/dist/types/components/native-accordion/native-accordion.style.d.ts +2 -2
- package/dist/types/components/native-accordion/use-native-accordion.d.ts +2 -2
- package/dist/types/components/native-popover/native-popover.d.ts +2 -2
- package/dist/types/components/native-select/native-select.d.ts +2 -2
- package/dist/types/components/native-table/native-table.d.ts +4 -4
- package/dist/types/components/notice/notice.style.d.ts +1 -1
- package/dist/types/components/number-input/number-input.d.ts +2 -2
- package/dist/types/components/pagination/pagination.d.ts +2 -2
- package/dist/types/components/pagination/pagination.style.d.ts +1 -1
- package/dist/types/components/pagination/use-pagination.d.ts +2 -2
- package/dist/types/components/password-input/password-input.d.ts +2 -2
- package/dist/types/components/password-input/strength-meter.d.ts +2 -2
- package/dist/types/components/password-input/strength-meter.style.d.ts +1 -1
- package/dist/types/components/password-input/use-password-input.d.ts +2 -2
- package/dist/types/components/pin-input/pin-input.d.ts +2 -2
- package/dist/types/components/pin-input/use-pin-input.d.ts +7 -7
- package/dist/types/components/popover/popover.d.ts +2 -2
- package/dist/types/components/progress/progress.d.ts +4 -4
- package/dist/types/components/progress/use-progress.d.ts +706 -706
- package/dist/types/components/qr-code/qr-code.d.ts +2 -2
- package/dist/types/components/radio/radio.d.ts +5 -5
- package/dist/types/components/radio/radio.style.d.ts +1 -1
- package/dist/types/components/radio/use-radio-group.d.ts +2 -2
- package/dist/types/components/radio-card/radio-card.d.ts +5 -5
- package/dist/types/components/radio-card/radio-card.style.d.ts +1 -1
- package/dist/types/components/rating/rating.style.d.ts +2 -2
- package/dist/types/components/rating/use-rating.d.ts +7 -7
- package/dist/types/components/reorder/reorder.d.ts +2 -2
- package/dist/types/components/reorder/reorder.style.d.ts +1 -1
- package/dist/types/components/reorder/use-reorder.d.ts +3 -3
- package/dist/types/components/resizable/resizable.d.ts +2 -2
- package/dist/types/components/resizable/resizable.style.d.ts +2 -2
- package/dist/types/components/resizable/use-resizable.d.ts +2 -2
- package/dist/types/components/ripple/ripple.d.ts +2 -2
- package/dist/types/components/ripple/use-ripple.d.ts +2 -2
- package/dist/types/components/rotate/rotate.d.ts +2 -2
- package/dist/types/components/saturation-slider/saturation-slider.d.ts +2 -2
- package/dist/types/components/saturation-slider/use-saturation-slider.d.ts +2 -2
- package/dist/types/components/scroll-area/scroll-area.d.ts +2 -2
- package/dist/types/components/segmented-control/segmented-control.d.ts +2 -2
- package/dist/types/components/segmented-control/segmented-control.style.d.ts +2 -2
- package/dist/types/components/segmented-control/use-segmented-control.d.ts +9 -9
- package/dist/types/components/select/select.d.ts +2 -2
- package/dist/types/components/select/select.style.d.ts +1 -1
- package/dist/types/components/select/use-select.d.ts +4 -4
- package/dist/types/components/separator/separator.d.ts +2 -2
- package/dist/types/components/sidebar/sidebar.d.ts +2 -2
- package/dist/types/components/sidebar/use-sidebar.d.ts +9 -9
- package/dist/types/components/simple-grid/simple-grid.d.ts +2 -2
- package/dist/types/components/skeleton/skeleton.d.ts +2 -2
- package/dist/types/components/slide/slide.d.ts +2 -2
- package/dist/types/components/slide-fade/slide-fade.d.ts +2 -2
- package/dist/types/components/slider/slider.d.ts +2 -2
- package/dist/types/components/slider/use-slider.d.ts +2 -2
- package/dist/types/components/stack/h-stack.d.ts +2 -2
- package/dist/types/components/stack/stack.d.ts +2 -2
- package/dist/types/components/stack/v-stack.d.ts +2 -2
- package/dist/types/components/stack/z-stack.d.ts +2 -2
- package/dist/types/components/stat/stat.d.ts +2 -2
- package/dist/types/components/stat/stat.style.d.ts +2 -2
- package/dist/types/components/status/status.d.ts +2 -2
- package/dist/types/components/status/status.style.d.ts +2 -2
- package/dist/types/components/steps/steps.d.ts +2 -2
- package/dist/types/components/steps/steps.style.d.ts +1 -1
- package/dist/types/components/steps/use-steps.d.ts +10 -10
- package/dist/types/components/switch/switch.d.ts +2 -2
- package/dist/types/components/table/table.d.ts +2 -2
- package/dist/types/components/tabs/tabs.d.ts +2 -2
- package/dist/types/components/tabs/use-tabs.d.ts +16 -16
- package/dist/types/components/tag/tag.d.ts +2 -2
- package/dist/types/components/tag/tag.style.d.ts +1 -1
- package/dist/types/components/text/text.d.ts +2 -2
- package/dist/types/components/textarea/textarea.d.ts +2 -2
- package/dist/types/components/textarea/use-autosize.d.ts +2 -2
- package/dist/types/components/timeline/timeline.d.ts +5 -5
- package/dist/types/components/timeline/timeline.style.d.ts +1 -1
- package/dist/types/components/toggle/toggle.d.ts +5 -5
- package/dist/types/components/toggle/use-toggle-group.d.ts +2 -2
- package/dist/types/components/toggle/use-toggle.d.ts +2 -2
- package/dist/types/components/tooltip/tooltip.d.ts +2 -2
- package/dist/types/components/tree/tree.d.ts +2 -2
- package/dist/types/components/tree/tree.style.d.ts +1 -1
- package/dist/types/components/tree/use-tree.d.ts +182 -182
- package/dist/types/components/visually-hidden/visually-hidden.d.ts +2 -2
- package/dist/types/components/wrap/wrap.d.ts +2 -2
- package/dist/types/core/components/create-component.d.ts +7 -7
- package/dist/types/core/system/color-mode-provider.d.ts +2 -2
- package/dist/types/core/system/storage-script.d.ts +3 -3
- package/dist/types/core/system/styled.d.ts +2 -2
- package/dist/types/core/system/system-provider.d.ts +2 -2
- package/dist/types/hooks/use-breakpoint/use-breakpoint-state.d.ts +2 -2
- package/dist/types/hooks/use-clickable/index.d.ts +7 -7
- package/dist/types/hooks/use-clipboard/index.d.ts +2 -2
- package/dist/types/hooks/use-counter/index.d.ts +2 -2
- package/dist/types/hooks/use-descendants/index.d.ts +2 -2
- package/dist/types/providers/i18n-provider/i18n-provider.d.ts +3 -3
- package/dist/types/providers/ui-provider/ui-provider.d.ts +2 -2
- package/dist/types/utils/children.d.ts +2 -2
- package/package.json +2 -2
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
|
|
4
4
|
const require_context = require('../../utils/context.cjs');
|
|
5
5
|
const require_utils_index = require('../../utils/index.cjs');
|
|
6
|
+
const require_props = require('../../core/components/props.cjs');
|
|
7
|
+
require('../../core/index.cjs');
|
|
6
8
|
let react = require("react");
|
|
7
9
|
|
|
8
10
|
//#region src/components/chart/use-chart.ts
|
|
@@ -76,10 +78,7 @@ const useChart = () => {
|
|
|
76
78
|
};
|
|
77
79
|
const useChartLegend = ({ placement = "start-end", align = PLACEMENT_MAP[placement].align, content, formatter, itemSorter, layout = placement.startsWith("center") ? "vertical" : "horizontal", payloadUniqBy, portal, verticalAlign = PLACEMENT_MAP[placement].verticalAlign, onBBoxUpdate, onClick, onMouseEnter, onMouseLeave, ...rest } = {}) => {
|
|
78
80
|
const { highlightedDataKey, onHighlight } = useChartContext();
|
|
79
|
-
const getRootProps = (0, react.useCallback)((props) => (
|
|
80
|
-
...rest,
|
|
81
|
-
...props
|
|
82
|
-
}), [rest]);
|
|
81
|
+
const getRootProps = (0, react.useCallback)((props) => require_props.mergeProps(rest, props)(), [rest]);
|
|
83
82
|
const getLegendProps = (0, react.useCallback)((props) => ({
|
|
84
83
|
align,
|
|
85
84
|
content,
|
|
@@ -180,18 +179,12 @@ const useChartTooltip = ({ active, allowEscapeViewBox, animationDuration = 0, an
|
|
|
180
179
|
useTranslate3d
|
|
181
180
|
]);
|
|
182
181
|
return {
|
|
183
|
-
getContentProps: (0, react.useCallback)((props) => (
|
|
184
|
-
...rest,
|
|
185
|
-
...props
|
|
186
|
-
}), [rest]),
|
|
182
|
+
getContentProps: (0, react.useCallback)((props) => require_props.mergeProps(rest, props)(), [rest]),
|
|
187
183
|
getRootProps
|
|
188
184
|
};
|
|
189
185
|
};
|
|
190
186
|
const useChartLabelList = ({ angle, clockWise, content, dataKey, formatter, offset = 12, position = "top", textBreakAll, valueAccessor, zIndex, ...rest } = {}) => {
|
|
191
|
-
const getRootProps = (0, react.useCallback)((props) => (
|
|
192
|
-
...rest,
|
|
193
|
-
...props
|
|
194
|
-
}), [rest]);
|
|
187
|
+
const getRootProps = (0, react.useCallback)((props) => require_props.mergeProps(rest, props)(), [rest]);
|
|
195
188
|
return {
|
|
196
189
|
getLabelListProps: (0, react.useCallback)((props) => ({
|
|
197
190
|
angle,
|
|
@@ -222,10 +215,7 @@ const useChartLabelList = ({ angle, clockWise, content, dataKey, formatter, offs
|
|
|
222
215
|
};
|
|
223
216
|
};
|
|
224
217
|
const useChartLabel = ({ angle, children, content, formatter, labelRef, offset, parentViewBox, position, value, viewBox, zIndex, ...rest } = {}) => {
|
|
225
|
-
const getRootProps = (0, react.useCallback)((props) => (
|
|
226
|
-
...rest,
|
|
227
|
-
...props
|
|
228
|
-
}), [rest]);
|
|
218
|
+
const getRootProps = (0, react.useCallback)((props) => require_props.mergeProps(rest, props)(), [rest]);
|
|
229
219
|
return {
|
|
230
220
|
getLabelProps: (0, react.useCallback)((props) => ({
|
|
231
221
|
angle,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-chart.cjs","names":["PLACEMENT_MAP: {\n [key in Direction]: {\n align: LegendProps[\"align\"]\n verticalAlign: LegendProps[\"verticalAlign\"]\n }\n}","createContext","getRootProps: PropGetter","getLegendProps: PropGetter<LegendProps>","getRootProps: PropGetter<TooltipProps<Y, M>>","getRootProps: PropGetter<\"text\">"],"sources":["../../../../src/components/chart/use-chart.ts"],"sourcesContent":["\"use client\"\n\nimport type {\n LabelListProps,\n LabelProps,\n LegendProps,\n TooltipProps,\n} from \"recharts\"\nimport type {\n Direction,\n HTMLProps,\n PropGetter,\n RequiredPropGetter,\n} from \"../../core\"\nimport type { Merge } from \"../../utils\"\nimport { useCallback, useState } from \"react\"\nimport { createContext, dataAttr, handlerAll, isUndefined } from \"../../utils\"\n\nconst PLACEMENT_MAP: {\n [key in Direction]: {\n align: LegendProps[\"align\"]\n verticalAlign: LegendProps[\"verticalAlign\"]\n }\n} = {\n \"center-end\": { align: \"right\", verticalAlign: \"middle\" },\n \"center-end-end\": { align: \"right\", verticalAlign: \"bottom\" },\n \"center-end-start\": { align: \"right\", verticalAlign: \"top\" },\n \"center-start\": { align: \"left\", verticalAlign: \"middle\" },\n \"center-start-end\": { align: \"left\", verticalAlign: \"bottom\" },\n \"center-start-start\": { align: \"left\", verticalAlign: \"top\" },\n end: { align: \"center\", verticalAlign: \"bottom\" },\n \"end-center\": { align: \"center\", verticalAlign: \"bottom\" },\n \"end-end\": { align: \"right\", verticalAlign: \"bottom\" },\n \"end-start\": { align: \"left\", verticalAlign: \"bottom\" },\n start: { align: \"center\", verticalAlign: \"top\" },\n \"start-center\": { align: \"center\", verticalAlign: \"top\" },\n \"start-end\": { align: \"right\", verticalAlign: \"top\" },\n \"start-start\": { align: \"left\", verticalAlign: \"top\" },\n}\n\ninterface ChartContext extends UseChartReturn {}\n\nconst [ChartContext, useChartContext] = createContext<ChartContext>({\n name: \"ChartContext\",\n})\n\nexport { ChartContext, useChartContext }\n\nexport const useChart = () => {\n const [highlightedDataKey, setHighlightedDataKey] = useState<\n number | string | undefined\n >(undefined)\n\n const onHighlight = useCallback((dataKey?: number | string) => {\n setHighlightedDataKey(dataKey)\n }, [])\n\n return { highlightedDataKey, onHighlight }\n}\n\nexport type UseChartReturn = ReturnType<typeof useChart>\n\nexport interface UseChartLegendProps extends Merge<\n HTMLProps,\n Pick<\n LegendProps,\n | \"align\"\n | \"content\"\n | \"formatter\"\n | \"itemSorter\"\n | \"layout\"\n | \"onBBoxUpdate\"\n | \"onClick\"\n | \"onMouseEnter\"\n | \"onMouseLeave\"\n | \"payloadUniqBy\"\n | \"portal\"\n | \"verticalAlign\"\n >\n> {\n /**\n * The placement of the legend.\n *\n * @default 'start-end'\n */\n placement?: Direction\n}\n\nexport const useChartLegend = ({\n placement = \"start-end\",\n align = PLACEMENT_MAP[placement].align,\n content,\n formatter,\n itemSorter,\n layout = placement.startsWith(\"center\") ? \"vertical\" : \"horizontal\",\n payloadUniqBy,\n portal,\n verticalAlign = PLACEMENT_MAP[placement].verticalAlign,\n onBBoxUpdate,\n onClick,\n onMouseEnter,\n onMouseLeave,\n ...rest\n}: UseChartLegendProps = {}) => {\n const { highlightedDataKey, onHighlight } = useChartContext()\n\n const getRootProps: PropGetter = useCallback(\n (props) => ({ ...rest, ...props }),\n [rest],\n )\n\n const getLegendProps: PropGetter<LegendProps> = useCallback(\n (props) => ({\n align,\n content,\n formatter,\n itemSorter,\n layout,\n payloadUniqBy,\n portal,\n verticalAlign,\n onBBoxUpdate,\n onClick,\n onMouseEnter,\n onMouseLeave,\n ...props,\n }),\n [\n align,\n content,\n formatter,\n itemSorter,\n layout,\n onBBoxUpdate,\n onClick,\n onMouseEnter,\n onMouseLeave,\n payloadUniqBy,\n portal,\n verticalAlign,\n ],\n )\n\n const getLegendContentProps: PropGetter = useCallback(\n (props) => ({\n \"data-align\": align,\n \"data-orientation\": layout,\n \"data-vertical-align\": verticalAlign,\n ...props,\n }),\n [align, layout, verticalAlign],\n )\n\n const getLegendItemProps: RequiredPropGetter<\n \"div\",\n { dataKey?: number | string }\n > = useCallback(\n ({ dataKey, ...props }) => ({\n ...props,\n \"data-active\": dataAttr(\n !isUndefined(highlightedDataKey) && highlightedDataKey === dataKey,\n ),\n \"data-inactive\": dataAttr(\n !isUndefined(highlightedDataKey) && highlightedDataKey !== dataKey,\n ),\n onMouseEnter: handlerAll(props.onMouseEnter, () => onHighlight(dataKey)),\n onMouseLeave: handlerAll(props.onMouseLeave, () => onHighlight()),\n }),\n [highlightedDataKey, onHighlight],\n )\n\n return {\n getLegendContentProps,\n getLegendItemProps,\n getLegendProps,\n getRootProps,\n }\n}\n\nexport type UseChartLegendReturn = ReturnType<typeof useChartLegend>\n\nexport interface UseChartTooltipProps<\n Y extends (number | string)[] | number | string,\n M extends number | string,\n> extends Merge<\n HTMLProps,\n Omit<\n TooltipProps<Y, M>,\n | \"contentStyle\"\n | \"itemStyle\"\n | \"labelClassName\"\n | \"labelStyle\"\n | \"separator\"\n | \"wrapperClassName\"\n | \"wrapperStyle\"\n >\n> {}\n\nexport const useChartTooltip = <\n Y extends (number | string)[] | number | string,\n M extends number | string,\n>({\n active,\n allowEscapeViewBox,\n animationDuration = 0,\n animationEasing,\n axisId,\n content,\n cursor,\n defaultIndex,\n filterNull,\n formatter,\n includeHidden,\n isAnimationActive = (animationDuration || 0) > 0,\n itemSorter,\n labelFormatter,\n offset,\n payloadUniqBy,\n portal,\n position,\n reverseDirection,\n shared,\n trigger,\n useTranslate3d,\n ...rest\n}: UseChartTooltipProps<Y, M> = {}) => {\n const getRootProps: PropGetter<TooltipProps<Y, M>> = useCallback(\n (props) => ({\n active,\n allowEscapeViewBox,\n animationDuration,\n animationEasing,\n axisId,\n content,\n cursor,\n defaultIndex,\n filterNull,\n formatter,\n includeHidden,\n isAnimationActive,\n itemSorter,\n labelFormatter,\n offset,\n payloadUniqBy,\n portal,\n position,\n reverseDirection,\n shared,\n trigger,\n useTranslate3d,\n ...props,\n }),\n [\n active,\n allowEscapeViewBox,\n animationDuration,\n animationEasing,\n axisId,\n content,\n cursor,\n defaultIndex,\n filterNull,\n formatter,\n includeHidden,\n isAnimationActive,\n itemSorter,\n labelFormatter,\n offset,\n payloadUniqBy,\n portal,\n position,\n reverseDirection,\n shared,\n trigger,\n useTranslate3d,\n ],\n )\n\n const getContentProps: PropGetter = useCallback(\n (props) => ({\n ...rest,\n ...props,\n }),\n [rest],\n )\n\n return { getContentProps, getRootProps }\n}\n\nexport type UseChartTooltipReturn<\n Y extends (number | string)[] | number | string,\n M extends number | string,\n> = ReturnType<typeof useChartTooltip<Y, M>>\n\nexport interface UseChartLabelListProps extends Merge<\n HTMLProps<\"text\">,\n Pick<\n LabelListProps,\n | \"angle\"\n | \"clockWise\"\n | \"content\"\n | \"dataKey\"\n | \"formatter\"\n | \"offset\"\n | \"position\"\n | \"textBreakAll\"\n | \"valueAccessor\"\n | \"zIndex\"\n >\n> {}\n\nexport const useChartLabelList = ({\n angle,\n clockWise,\n content,\n dataKey,\n formatter,\n offset = 12,\n position = \"top\",\n textBreakAll,\n valueAccessor,\n zIndex,\n ...rest\n}: UseChartLabelListProps = {}) => {\n const getRootProps: PropGetter<\"text\"> = useCallback(\n (props) => ({ ...rest, ...props }),\n [rest],\n )\n\n const getLabelListProps: PropGetter<LabelListProps> = useCallback(\n (props) => ({\n angle,\n clockWise,\n content,\n dataKey,\n fill: \"\",\n formatter,\n offset,\n position,\n textBreakAll,\n valueAccessor,\n zIndex,\n ...props,\n }),\n [\n angle,\n clockWise,\n content,\n dataKey,\n formatter,\n offset,\n position,\n textBreakAll,\n valueAccessor,\n zIndex,\n ],\n )\n\n return { getLabelListProps, getRootProps }\n}\n\nexport type UseChartLabelListReturn = ReturnType<typeof useChartLabelList>\n\nexport interface UseChartLabelProps extends Merge<\n HTMLProps<\"text\">,\n Pick<\n LabelProps,\n | \"angle\"\n | \"children\"\n | \"content\"\n | \"formatter\"\n | \"labelRef\"\n | \"offset\"\n | \"parentViewBox\"\n | \"position\"\n | \"value\"\n | \"viewBox\"\n | \"zIndex\"\n >\n> {}\n\nexport const useChartLabel = ({\n angle,\n children,\n content,\n formatter,\n labelRef,\n offset,\n parentViewBox,\n position,\n value,\n viewBox,\n zIndex,\n ...rest\n}: UseChartLabelProps = {}) => {\n const getRootProps: PropGetter<\"text\"> = useCallback(\n (props) => ({ ...rest, ...props }),\n [rest],\n )\n\n const getLabelProps: PropGetter<LabelProps> = useCallback(\n (props) => ({\n angle,\n children,\n content,\n fill: \"\",\n formatter,\n labelRef,\n offset,\n parentViewBox,\n position,\n value,\n viewBox,\n zIndex,\n ...props,\n }),\n [\n angle,\n children,\n content,\n formatter,\n labelRef,\n offset,\n parentViewBox,\n position,\n value,\n viewBox,\n zIndex,\n ],\n )\n\n return { getLabelProps, getRootProps }\n}\n\nexport type UseChartLabelReturn = ReturnType<typeof useChartLabel>\n"],"mappings":";;;;;;;;AAkBA,MAAMA,gBAKF;CACF,cAAc;EAAE,OAAO;EAAS,eAAe;EAAU;CACzD,kBAAkB;EAAE,OAAO;EAAS,eAAe;EAAU;CAC7D,oBAAoB;EAAE,OAAO;EAAS,eAAe;EAAO;CAC5D,gBAAgB;EAAE,OAAO;EAAQ,eAAe;EAAU;CAC1D,oBAAoB;EAAE,OAAO;EAAQ,eAAe;EAAU;CAC9D,sBAAsB;EAAE,OAAO;EAAQ,eAAe;EAAO;CAC7D,KAAK;EAAE,OAAO;EAAU,eAAe;EAAU;CACjD,cAAc;EAAE,OAAO;EAAU,eAAe;EAAU;CAC1D,WAAW;EAAE,OAAO;EAAS,eAAe;EAAU;CACtD,aAAa;EAAE,OAAO;EAAQ,eAAe;EAAU;CACvD,OAAO;EAAE,OAAO;EAAU,eAAe;EAAO;CAChD,gBAAgB;EAAE,OAAO;EAAU,eAAe;EAAO;CACzD,aAAa;EAAE,OAAO;EAAS,eAAe;EAAO;CACrD,eAAe;EAAE,OAAO;EAAQ,eAAe;EAAO;CACvD;AAID,MAAM,CAAC,cAAc,mBAAmBC,8BAA4B,EAClE,MAAM,gBACP,CAAC;AAIF,MAAa,iBAAiB;CAC5B,MAAM,CAAC,oBAAoB,6CAEzB,OAAU;AAMZ,QAAO;EAAE;EAAoB,qCAJI,YAA8B;AAC7D,yBAAsB,QAAQ;KAC7B,EAAE,CAAC;EAEoC;;AA+B5C,MAAa,kBAAkB,EAC7B,YAAY,aACZ,QAAQ,cAAc,WAAW,OACjC,SACA,WACA,YACA,SAAS,UAAU,WAAW,SAAS,GAAG,aAAa,cACvD,eACA,QACA,gBAAgB,cAAc,WAAW,eACzC,cACA,SACA,cACA,cACA,GAAG,SACoB,EAAE,KAAK;CAC9B,MAAM,EAAE,oBAAoB,gBAAgB,iBAAiB;CAE7D,MAAMC,uCACH,WAAW;EAAE,GAAG;EAAM,GAAG;EAAO,GACjC,CAAC,KAAK,CACP;CAED,MAAMC,yCACH,WAAW;EACV;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,GAAG;EACJ,GACD;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CACF;AA8BD,QAAO;EACL,+CA5BC,WAAW;GACV,cAAc;GACd,oBAAoB;GACpB,uBAAuB;GACvB,GAAG;GACJ,GACD;GAAC;GAAO;GAAQ;GAAc,CAC/B;EAsBC,4CAhBC,EAAE,SAAS,GAAG,aAAa;GAC1B,GAAG;GACH,+DACE,oDAAa,mBAAmB,IAAI,uBAAuB,QAC5D;GACD,iEACE,oDAAa,mBAAmB,IAAI,uBAAuB,QAC5D;GACD,gEAAyB,MAAM,oBAAoB,YAAY,QAAQ,CAAC;GACxE,gEAAyB,MAAM,oBAAoB,aAAa,CAAC;GAClE,GACD,CAAC,oBAAoB,YAAY,CAClC;EAKC;EACA;EACD;;AAsBH,MAAa,mBAGX,EACA,QACA,oBACA,oBAAoB,GACpB,iBACA,QACA,SACA,QACA,cACA,YACA,WACA,eACA,qBAAqB,qBAAqB,KAAK,GAC/C,YACA,gBACA,QACA,eACA,QACA,UACA,kBACA,QACA,SACA,gBACA,GAAG,SAC2B,EAAE,KAAK;CACrC,MAAMC,uCACH,WAAW;EACV;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,GAAG;EACJ,GACD;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CACF;AAUD,QAAO;EAAE,yCAPN,WAAW;GACV,GAAG;GACH,GAAG;GACJ,GACD,CAAC,KAAK,CACP;EAEyB;EAAc;;AAyB1C,MAAa,qBAAqB,EAChC,OACA,WACA,SACA,SACA,WACA,SAAS,IACT,WAAW,OACX,cACA,eACA,QACA,GAAG,SACuB,EAAE,KAAK;CACjC,MAAMC,uCACH,WAAW;EAAE,GAAG;EAAM,GAAG;EAAO,GACjC,CAAC,KAAK,CACP;AA+BD,QAAO;EAAE,2CA5BN,WAAW;GACV;GACA;GACA;GACA;GACA,MAAM;GACN;GACA;GACA;GACA;GACA;GACA;GACA,GAAG;GACJ,GACD;GACE;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACD,CACF;EAE2B;EAAc;;AAuB5C,MAAa,iBAAiB,EAC5B,OACA,UACA,SACA,WACA,UACA,QACA,eACA,UACA,OACA,SACA,QACA,GAAG,SACmB,EAAE,KAAK;CAC7B,MAAMA,uCACH,WAAW;EAAE,GAAG;EAAM,GAAG;EAAO,GACjC,CAAC,KAAK,CACP;AAiCD,QAAO;EAAE,uCA9BN,WAAW;GACV;GACA;GACA;GACA,MAAM;GACN;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA,GAAG;GACJ,GACD;GACE;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACD,CACF;EAEuB;EAAc"}
|
|
1
|
+
{"version":3,"file":"use-chart.cjs","names":["PLACEMENT_MAP: {\n [key in Direction]: {\n align: LegendProps[\"align\"]\n verticalAlign: LegendProps[\"verticalAlign\"]\n }\n}","createContext","getRootProps: PropGetter","mergeProps","getLegendProps: PropGetter<LegendProps>","getRootProps: PropGetter<TooltipProps<Y, M>>","getRootProps: PropGetter<\"text\">"],"sources":["../../../../src/components/chart/use-chart.ts"],"sourcesContent":["\"use client\"\n\nimport type {\n LabelListProps,\n LabelProps,\n LegendProps,\n TooltipProps,\n} from \"recharts\"\nimport type {\n Direction,\n HTMLProps,\n PropGetter,\n RequiredPropGetter,\n} from \"../../core\"\nimport type { Merge } from \"../../utils\"\nimport { useCallback, useState } from \"react\"\nimport { mergeProps } from \"../../core\"\nimport { createContext, dataAttr, handlerAll, isUndefined } from \"../../utils\"\n\nconst PLACEMENT_MAP: {\n [key in Direction]: {\n align: LegendProps[\"align\"]\n verticalAlign: LegendProps[\"verticalAlign\"]\n }\n} = {\n \"center-end\": { align: \"right\", verticalAlign: \"middle\" },\n \"center-end-end\": { align: \"right\", verticalAlign: \"bottom\" },\n \"center-end-start\": { align: \"right\", verticalAlign: \"top\" },\n \"center-start\": { align: \"left\", verticalAlign: \"middle\" },\n \"center-start-end\": { align: \"left\", verticalAlign: \"bottom\" },\n \"center-start-start\": { align: \"left\", verticalAlign: \"top\" },\n end: { align: \"center\", verticalAlign: \"bottom\" },\n \"end-center\": { align: \"center\", verticalAlign: \"bottom\" },\n \"end-end\": { align: \"right\", verticalAlign: \"bottom\" },\n \"end-start\": { align: \"left\", verticalAlign: \"bottom\" },\n start: { align: \"center\", verticalAlign: \"top\" },\n \"start-center\": { align: \"center\", verticalAlign: \"top\" },\n \"start-end\": { align: \"right\", verticalAlign: \"top\" },\n \"start-start\": { align: \"left\", verticalAlign: \"top\" },\n}\n\ninterface ChartContext extends UseChartReturn {}\n\nconst [ChartContext, useChartContext] = createContext<ChartContext>({\n name: \"ChartContext\",\n})\n\nexport { ChartContext, useChartContext }\n\nexport const useChart = () => {\n const [highlightedDataKey, setHighlightedDataKey] = useState<\n number | string | undefined\n >(undefined)\n\n const onHighlight = useCallback((dataKey?: number | string) => {\n setHighlightedDataKey(dataKey)\n }, [])\n\n return { highlightedDataKey, onHighlight }\n}\n\nexport type UseChartReturn = ReturnType<typeof useChart>\n\nexport interface UseChartLegendProps extends Merge<\n HTMLProps,\n Pick<\n LegendProps,\n | \"align\"\n | \"content\"\n | \"formatter\"\n | \"itemSorter\"\n | \"layout\"\n | \"onBBoxUpdate\"\n | \"onClick\"\n | \"onMouseEnter\"\n | \"onMouseLeave\"\n | \"payloadUniqBy\"\n | \"portal\"\n | \"verticalAlign\"\n >\n> {\n /**\n * The placement of the legend.\n *\n * @default 'start-end'\n */\n placement?: Direction\n}\n\nexport const useChartLegend = ({\n placement = \"start-end\",\n align = PLACEMENT_MAP[placement].align,\n content,\n formatter,\n itemSorter,\n layout = placement.startsWith(\"center\") ? \"vertical\" : \"horizontal\",\n payloadUniqBy,\n portal,\n verticalAlign = PLACEMENT_MAP[placement].verticalAlign,\n onBBoxUpdate,\n onClick,\n onMouseEnter,\n onMouseLeave,\n ...rest\n}: UseChartLegendProps = {}) => {\n const { highlightedDataKey, onHighlight } = useChartContext()\n\n const getRootProps: PropGetter = useCallback(\n (props) => mergeProps(rest, props)(),\n [rest],\n )\n\n const getLegendProps: PropGetter<LegendProps> = useCallback(\n (props) => ({\n align,\n content,\n formatter,\n itemSorter,\n layout,\n payloadUniqBy,\n portal,\n verticalAlign,\n onBBoxUpdate,\n onClick,\n onMouseEnter,\n onMouseLeave,\n ...props,\n }),\n [\n align,\n content,\n formatter,\n itemSorter,\n layout,\n onBBoxUpdate,\n onClick,\n onMouseEnter,\n onMouseLeave,\n payloadUniqBy,\n portal,\n verticalAlign,\n ],\n )\n\n const getLegendContentProps: PropGetter = useCallback(\n (props) => ({\n \"data-align\": align,\n \"data-orientation\": layout,\n \"data-vertical-align\": verticalAlign,\n ...props,\n }),\n [align, layout, verticalAlign],\n )\n\n const getLegendItemProps: RequiredPropGetter<\n \"div\",\n { dataKey?: number | string }\n > = useCallback(\n ({ dataKey, ...props }) => ({\n ...props,\n \"data-active\": dataAttr(\n !isUndefined(highlightedDataKey) && highlightedDataKey === dataKey,\n ),\n \"data-inactive\": dataAttr(\n !isUndefined(highlightedDataKey) && highlightedDataKey !== dataKey,\n ),\n onMouseEnter: handlerAll(props.onMouseEnter, () => onHighlight(dataKey)),\n onMouseLeave: handlerAll(props.onMouseLeave, () => onHighlight()),\n }),\n [highlightedDataKey, onHighlight],\n )\n\n return {\n getLegendContentProps,\n getLegendItemProps,\n getLegendProps,\n getRootProps,\n }\n}\n\nexport type UseChartLegendReturn = ReturnType<typeof useChartLegend>\n\nexport interface UseChartTooltipProps<\n Y extends (number | string)[] | number | string,\n M extends number | string,\n> extends Merge<\n HTMLProps,\n Omit<\n TooltipProps<Y, M>,\n | \"contentStyle\"\n | \"itemStyle\"\n | \"labelClassName\"\n | \"labelStyle\"\n | \"separator\"\n | \"wrapperClassName\"\n | \"wrapperStyle\"\n >\n> {}\n\nexport const useChartTooltip = <\n Y extends (number | string)[] | number | string,\n M extends number | string,\n>({\n active,\n allowEscapeViewBox,\n animationDuration = 0,\n animationEasing,\n axisId,\n content,\n cursor,\n defaultIndex,\n filterNull,\n formatter,\n includeHidden,\n isAnimationActive = (animationDuration || 0) > 0,\n itemSorter,\n labelFormatter,\n offset,\n payloadUniqBy,\n portal,\n position,\n reverseDirection,\n shared,\n trigger,\n useTranslate3d,\n ...rest\n}: UseChartTooltipProps<Y, M> = {}) => {\n const getRootProps: PropGetter<TooltipProps<Y, M>> = useCallback(\n (props) => ({\n active,\n allowEscapeViewBox,\n animationDuration,\n animationEasing,\n axisId,\n content,\n cursor,\n defaultIndex,\n filterNull,\n formatter,\n includeHidden,\n isAnimationActive,\n itemSorter,\n labelFormatter,\n offset,\n payloadUniqBy,\n portal,\n position,\n reverseDirection,\n shared,\n trigger,\n useTranslate3d,\n ...props,\n }),\n [\n active,\n allowEscapeViewBox,\n animationDuration,\n animationEasing,\n axisId,\n content,\n cursor,\n defaultIndex,\n filterNull,\n formatter,\n includeHidden,\n isAnimationActive,\n itemSorter,\n labelFormatter,\n offset,\n payloadUniqBy,\n portal,\n position,\n reverseDirection,\n shared,\n trigger,\n useTranslate3d,\n ],\n )\n\n const getContentProps: PropGetter = useCallback(\n (props) => mergeProps(rest, props)(),\n [rest],\n )\n\n return { getContentProps, getRootProps }\n}\n\nexport type UseChartTooltipReturn<\n Y extends (number | string)[] | number | string,\n M extends number | string,\n> = ReturnType<typeof useChartTooltip<Y, M>>\n\nexport interface UseChartLabelListProps extends Merge<\n HTMLProps<\"text\">,\n Pick<\n LabelListProps,\n | \"angle\"\n | \"clockWise\"\n | \"content\"\n | \"dataKey\"\n | \"formatter\"\n | \"offset\"\n | \"position\"\n | \"textBreakAll\"\n | \"valueAccessor\"\n | \"zIndex\"\n >\n> {}\n\nexport const useChartLabelList = ({\n angle,\n clockWise,\n content,\n dataKey,\n formatter,\n offset = 12,\n position = \"top\",\n textBreakAll,\n valueAccessor,\n zIndex,\n ...rest\n}: UseChartLabelListProps = {}) => {\n const getRootProps: PropGetter<\"text\"> = useCallback(\n (props) => mergeProps(rest, props)(),\n [rest],\n )\n\n const getLabelListProps: PropGetter<LabelListProps> = useCallback(\n (props) => ({\n angle,\n clockWise,\n content,\n dataKey,\n fill: \"\",\n formatter,\n offset,\n position,\n textBreakAll,\n valueAccessor,\n zIndex,\n ...props,\n }),\n [\n angle,\n clockWise,\n content,\n dataKey,\n formatter,\n offset,\n position,\n textBreakAll,\n valueAccessor,\n zIndex,\n ],\n )\n\n return { getLabelListProps, getRootProps }\n}\n\nexport type UseChartLabelListReturn = ReturnType<typeof useChartLabelList>\n\nexport interface UseChartLabelProps extends Merge<\n HTMLProps<\"text\">,\n Pick<\n LabelProps,\n | \"angle\"\n | \"children\"\n | \"content\"\n | \"formatter\"\n | \"labelRef\"\n | \"offset\"\n | \"parentViewBox\"\n | \"position\"\n | \"value\"\n | \"viewBox\"\n | \"zIndex\"\n >\n> {}\n\nexport const useChartLabel = ({\n angle,\n children,\n content,\n formatter,\n labelRef,\n offset,\n parentViewBox,\n position,\n value,\n viewBox,\n zIndex,\n ...rest\n}: UseChartLabelProps = {}) => {\n const getRootProps: PropGetter<\"text\"> = useCallback(\n (props) => mergeProps(rest, props)(),\n [rest],\n )\n\n const getLabelProps: PropGetter<LabelProps> = useCallback(\n (props) => ({\n angle,\n children,\n content,\n fill: \"\",\n formatter,\n labelRef,\n offset,\n parentViewBox,\n position,\n value,\n viewBox,\n zIndex,\n ...props,\n }),\n [\n angle,\n children,\n content,\n formatter,\n labelRef,\n offset,\n parentViewBox,\n position,\n value,\n viewBox,\n zIndex,\n ],\n )\n\n return { getLabelProps, getRootProps }\n}\n\nexport type UseChartLabelReturn = ReturnType<typeof useChartLabel>\n"],"mappings":";;;;;;;;;;AAmBA,MAAMA,gBAKF;CACF,cAAc;EAAE,OAAO;EAAS,eAAe;EAAU;CACzD,kBAAkB;EAAE,OAAO;EAAS,eAAe;EAAU;CAC7D,oBAAoB;EAAE,OAAO;EAAS,eAAe;EAAO;CAC5D,gBAAgB;EAAE,OAAO;EAAQ,eAAe;EAAU;CAC1D,oBAAoB;EAAE,OAAO;EAAQ,eAAe;EAAU;CAC9D,sBAAsB;EAAE,OAAO;EAAQ,eAAe;EAAO;CAC7D,KAAK;EAAE,OAAO;EAAU,eAAe;EAAU;CACjD,cAAc;EAAE,OAAO;EAAU,eAAe;EAAU;CAC1D,WAAW;EAAE,OAAO;EAAS,eAAe;EAAU;CACtD,aAAa;EAAE,OAAO;EAAQ,eAAe;EAAU;CACvD,OAAO;EAAE,OAAO;EAAU,eAAe;EAAO;CAChD,gBAAgB;EAAE,OAAO;EAAU,eAAe;EAAO;CACzD,aAAa;EAAE,OAAO;EAAS,eAAe;EAAO;CACrD,eAAe;EAAE,OAAO;EAAQ,eAAe;EAAO;CACvD;AAID,MAAM,CAAC,cAAc,mBAAmBC,8BAA4B,EAClE,MAAM,gBACP,CAAC;AAIF,MAAa,iBAAiB;CAC5B,MAAM,CAAC,oBAAoB,6CAEzB,OAAU;AAMZ,QAAO;EAAE;EAAoB,qCAJI,YAA8B;AAC7D,yBAAsB,QAAQ;KAC7B,EAAE,CAAC;EAEoC;;AA+B5C,MAAa,kBAAkB,EAC7B,YAAY,aACZ,QAAQ,cAAc,WAAW,OACjC,SACA,WACA,YACA,SAAS,UAAU,WAAW,SAAS,GAAG,aAAa,cACvD,eACA,QACA,gBAAgB,cAAc,WAAW,eACzC,cACA,SACA,cACA,cACA,GAAG,SACoB,EAAE,KAAK;CAC9B,MAAM,EAAE,oBAAoB,gBAAgB,iBAAiB;CAE7D,MAAMC,uCACH,UAAUC,yBAAW,MAAM,MAAM,EAAE,EACpC,CAAC,KAAK,CACP;CAED,MAAMC,yCACH,WAAW;EACV;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,GAAG;EACJ,GACD;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CACF;AA8BD,QAAO;EACL,+CA5BC,WAAW;GACV,cAAc;GACd,oBAAoB;GACpB,uBAAuB;GACvB,GAAG;GACJ,GACD;GAAC;GAAO;GAAQ;GAAc,CAC/B;EAsBC,4CAhBC,EAAE,SAAS,GAAG,aAAa;GAC1B,GAAG;GACH,+DACE,oDAAa,mBAAmB,IAAI,uBAAuB,QAC5D;GACD,iEACE,oDAAa,mBAAmB,IAAI,uBAAuB,QAC5D;GACD,gEAAyB,MAAM,oBAAoB,YAAY,QAAQ,CAAC;GACxE,gEAAyB,MAAM,oBAAoB,aAAa,CAAC;GAClE,GACD,CAAC,oBAAoB,YAAY,CAClC;EAKC;EACA;EACD;;AAsBH,MAAa,mBAGX,EACA,QACA,oBACA,oBAAoB,GACpB,iBACA,QACA,SACA,QACA,cACA,YACA,WACA,eACA,qBAAqB,qBAAqB,KAAK,GAC/C,YACA,gBACA,QACA,eACA,QACA,UACA,kBACA,QACA,SACA,gBACA,GAAG,SAC2B,EAAE,KAAK;CACrC,MAAMC,uCACH,WAAW;EACV;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,GAAG;EACJ,GACD;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CACF;AAOD,QAAO;EAAE,yCAJN,UAAUF,yBAAW,MAAM,MAAM,EAAE,EACpC,CAAC,KAAK,CACP;EAEyB;EAAc;;AAyB1C,MAAa,qBAAqB,EAChC,OACA,WACA,SACA,SACA,WACA,SAAS,IACT,WAAW,OACX,cACA,eACA,QACA,GAAG,SACuB,EAAE,KAAK;CACjC,MAAMG,uCACH,UAAUH,yBAAW,MAAM,MAAM,EAAE,EACpC,CAAC,KAAK,CACP;AA+BD,QAAO;EAAE,2CA5BN,WAAW;GACV;GACA;GACA;GACA;GACA,MAAM;GACN;GACA;GACA;GACA;GACA;GACA;GACA,GAAG;GACJ,GACD;GACE;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACD,CACF;EAE2B;EAAc;;AAuB5C,MAAa,iBAAiB,EAC5B,OACA,UACA,SACA,WACA,UACA,QACA,eACA,UACA,OACA,SACA,QACA,GAAG,SACmB,EAAE,KAAK;CAC7B,MAAMG,uCACH,UAAUH,yBAAW,MAAM,MAAM,EAAE,EACpC,CAAC,KAAK,CACP;AAiCD,QAAO;EAAE,uCA9BN,WAAW;GACV;GACA;GACA;GACA,MAAM;GACN;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA,GAAG;GACJ,GACD;GACE;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACD,CACF;EAEuB;EAAc"}
|
|
@@ -6,6 +6,8 @@ const require_dom = require('../../utils/dom.cjs');
|
|
|
6
6
|
const require_effect = require('../../utils/effect.cjs');
|
|
7
7
|
const require_ref = require('../../utils/ref.cjs');
|
|
8
8
|
const require_utils_index = require('../../utils/index.cjs');
|
|
9
|
+
const require_props = require('../../core/components/props.cjs');
|
|
10
|
+
require('../../core/index.cjs');
|
|
9
11
|
const require_hooks_use_controllable_state_index = require('../../hooks/use-controllable-state/index.cjs');
|
|
10
12
|
const require_hooks_use_descendants_index = require('../../hooks/use-descendants/index.cjs');
|
|
11
13
|
let react = require("react");
|
|
@@ -63,12 +65,7 @@ const useTabs = ({ id, defaultIndex = 0, index: indexProp, manual = false, orien
|
|
|
63
65
|
setIndex(indexProp);
|
|
64
66
|
setFocusedIndex(indexProp);
|
|
65
67
|
}, [indexProp]);
|
|
66
|
-
const getRootProps = (0, react.useCallback)(({ ref, ...props } = {}) => ({
|
|
67
|
-
"data-orientation": orientation,
|
|
68
|
-
...rest,
|
|
69
|
-
...props,
|
|
70
|
-
ref: require_ref.mergeRefs(ref, rest.ref)
|
|
71
|
-
}), [orientation, rest]);
|
|
68
|
+
const getRootProps = (0, react.useCallback)(({ ref, ...props } = {}) => require_props.mergeProps({ "data-orientation": orientation }, rest, props, { ref })(), [orientation, rest]);
|
|
72
69
|
const getListProps = (0, react.useCallback)((props = {}) => ({
|
|
73
70
|
"aria-orientation": orientation,
|
|
74
71
|
role: "tablist",
|
|
@@ -116,7 +113,7 @@ const useTab = ({ id, disabled, index, ...rest }) => {
|
|
|
116
113
|
return {
|
|
117
114
|
index,
|
|
118
115
|
selected,
|
|
119
|
-
getRootProps: (0, react.useCallback)(({ ref, ...props } = {}) => ({
|
|
116
|
+
getRootProps: (0, react.useCallback)(({ ref, ...props } = {}) => require_props.mergeProps({
|
|
120
117
|
id,
|
|
121
118
|
type: "button",
|
|
122
119
|
"aria-controls": tabPanelId,
|
|
@@ -124,13 +121,11 @@ const useTab = ({ id, disabled, index, ...rest }) => {
|
|
|
124
121
|
"data-orientation": orientation,
|
|
125
122
|
disabled,
|
|
126
123
|
role: "tab",
|
|
127
|
-
tabIndex: selected ? 0 : -1
|
|
128
|
-
|
|
129
|
-
...props,
|
|
130
|
-
ref: require_ref.mergeRefs(ref, register),
|
|
124
|
+
tabIndex: selected ? 0 : -1
|
|
125
|
+
}, rest, props, { ref: require_ref.mergeRefs(ref, register) }, {
|
|
131
126
|
onClick: (0, require_utils_index.utils_exports.handlerAll)(props.onClick, rest.onClick, onClick),
|
|
132
127
|
onFocus: (0, require_utils_index.utils_exports.handlerAll)(props.onFocus, rest.onFocus, onFocus)
|
|
133
|
-
}), [
|
|
128
|
+
})({ mergeEvent: false }), [
|
|
134
129
|
disabled,
|
|
135
130
|
id,
|
|
136
131
|
onClick,
|
|
@@ -152,17 +147,14 @@ const useTabPanel = ({ id, "aria-labelledby": ariaLabelledbyProp, index, ...rest
|
|
|
152
147
|
return {
|
|
153
148
|
index,
|
|
154
149
|
selected,
|
|
155
|
-
getRootProps: (0, react.useCallback)(({ ref, "aria-labelledby": ariaLabelledby, ...props } = {}) => ({
|
|
150
|
+
getRootProps: (0, react.useCallback)(({ ref, "aria-labelledby": ariaLabelledby, ...props } = {}) => require_props.mergeProps({
|
|
156
151
|
id,
|
|
157
152
|
"aria-labelledby": (0, require_utils_index.utils_exports.cx)(ariaLabelledbyProp, ariaLabelledby, tabId),
|
|
158
153
|
"data-orientation": orientation,
|
|
159
154
|
hidden: !selected,
|
|
160
155
|
role: "tabpanel",
|
|
161
|
-
tabIndex: selected ? 0 : -1
|
|
162
|
-
|
|
163
|
-
...props,
|
|
164
|
-
ref: require_ref.mergeRefs(ref, register)
|
|
165
|
-
}), [
|
|
156
|
+
tabIndex: selected ? 0 : -1
|
|
157
|
+
}, rest, props, { ref: require_ref.mergeRefs(ref, register) })(), [
|
|
166
158
|
id,
|
|
167
159
|
ariaLabelledbyProp,
|
|
168
160
|
orientation,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-tabs.cjs","names":["createDescendants","createContext","useControllableState","getRootProps: PropGetter","mergeRefs","getListProps: PropGetter"],"sources":["../../../../src/components/tabs/use-tabs.ts"],"sourcesContent":["\"use client\"\n\nimport type { KeyboardEvent } from \"react\"\nimport type { HTMLProps, Orientation, PropGetter } from \"../../core\"\nimport { useCallback, useId, useState } from \"react\"\nimport { useControllableState } from \"../../hooks/use-controllable-state\"\nimport { createDescendants } from \"../../hooks/use-descendants\"\nimport {\n createContext,\n cx,\n handlerAll,\n isUndefined,\n mergeRefs,\n runKeyAction,\n useUpdateEffect,\n} from \"../../utils\"\n\nconst {\n DescendantsContext: TabDescendantsContext,\n useDescendant: useTabDescendant,\n useDescendants: useTabDescendants,\n} = createDescendants<HTMLButtonElement>()\n\nexport { TabDescendantsContext, useTabDescendant, useTabDescendants }\n\nconst {\n DescendantsContext: TabPanelDescendantsContext,\n useDescendant: useTabPanelDescendant,\n useDescendants: useTabPanelDescendants,\n} = createDescendants<HTMLDivElement>()\n\nexport {\n TabPanelDescendantsContext,\n useTabPanelDescendant,\n useTabPanelDescendants,\n}\n\ninterface TabsContext extends Omit<\n UseTabsReturn,\n \"getRootProps\" | \"tabDescendants\" | \"tabPanelDescendants\"\n> {}\n\nconst [TabsContext, useTabsContext] = createContext<TabsContext>({\n name: \"TabsContext\",\n})\n\nexport { TabsContext, useTabsContext }\n\nexport interface UseTabsProps extends Omit<HTMLProps, \"onChange\"> {\n /**\n * The index of the selected tab.\n */\n defaultIndex?: number\n /**\n * The index of the selected tab.\n */\n index?: number\n /**\n * If `true`, the tabs will be manually activated and display its panel by pressing Space or Enter.\n *\n * If `false`, the tabs will be automatically activated and their panel is displayed when they receive focus.\n *\n * @default false\n */\n manual?: boolean\n /**\n * The orientation of the tabs.\n *\n * @default 'horizontal'\n */\n orientation?: Orientation\n /**\n * The callback invoked when the index changes.\n */\n onChange?: (index: number) => void\n}\n\nexport const useTabs = ({\n id,\n defaultIndex = 0,\n index: indexProp,\n manual = false,\n orientation = \"horizontal\",\n onChange,\n ...rest\n}: UseTabsProps = {}) => {\n const uuid = useId()\n const tabDescendants = useTabDescendants()\n const tabPanelDescendants = useTabPanelDescendants()\n const [index, setIndex] = useControllableState({\n defaultValue: defaultIndex,\n value: indexProp,\n onChange,\n })\n const [focusedIndex, setFocusedIndex] = useState<number>(index)\n const horizontal = orientation === \"horizontal\"\n\n id ??= uuid\n\n const onFocusFirstTab = useCallback(() => {\n const first = tabDescendants.enabledFirstValue()\n\n if (first) first.node.focus()\n }, [tabDescendants])\n\n const onFocusLastTab = useCallback(() => {\n const last = tabDescendants.enabledLastValue()\n\n if (last) last.node.focus()\n }, [tabDescendants])\n\n const onFocusNextTab = useCallback(() => {\n const next = tabDescendants.enabledNextValue(focusedIndex)\n\n if (next) next.node.focus()\n }, [tabDescendants, focusedIndex])\n\n const onFocusPrevTab = useCallback(() => {\n const prev = tabDescendants.enabledPrevValue(focusedIndex)\n\n if (prev) prev.node.focus()\n }, [tabDescendants, focusedIndex])\n\n const onKeyDown = useCallback(\n (ev: KeyboardEvent<HTMLDivElement>) => {\n runKeyAction(ev, {\n ArrowDown: !horizontal ? onFocusNextTab : undefined,\n ArrowLeft: horizontal ? onFocusPrevTab : undefined,\n ArrowRight: horizontal ? onFocusNextTab : undefined,\n ArrowUp: !horizontal ? onFocusPrevTab : undefined,\n End: onFocusLastTab,\n Home: onFocusFirstTab,\n })\n },\n [\n horizontal,\n onFocusNextTab,\n onFocusPrevTab,\n onFocusLastTab,\n onFocusFirstTab,\n ],\n )\n\n useUpdateEffect(() => {\n if (isUndefined(indexProp)) return\n\n setIndex(indexProp)\n setFocusedIndex(indexProp)\n }, [indexProp])\n\n const getRootProps: PropGetter = useCallback(\n ({ ref, ...props } = {}) => ({\n \"data-orientation\": orientation,\n ...rest,\n ...props,\n ref: mergeRefs(ref, rest.ref),\n }),\n [orientation, rest],\n )\n\n const getListProps: PropGetter = useCallback(\n (props = {}) => ({\n \"aria-orientation\": orientation,\n role: \"tablist\",\n ...props,\n onKeyDown: handlerAll(props.onKeyDown, onKeyDown),\n }),\n [orientation, onKeyDown],\n )\n\n return {\n id,\n focusedIndex,\n index,\n manual,\n orientation,\n setFocusedIndex,\n setIndex,\n tabDescendants,\n tabPanelDescendants,\n getListProps,\n getRootProps,\n }\n}\n\nexport type UseTabsReturn = ReturnType<typeof useTabs>\n\nexport interface UseTabProps extends HTMLProps<\"button\"> {\n /**\n * The index of the tab.\n */\n index: number\n}\n\nexport const useTab = ({ id, disabled, index, ...rest }: UseTabProps) => {\n const {\n id: rootId,\n index: selectedIndex,\n manual,\n orientation,\n setFocusedIndex,\n setIndex,\n } = useTabsContext()\n const { register } = useTabDescendant({ disabled })\n const tabPanelId = `${rootId}-panel-${index}`\n const selected = index === selectedIndex\n\n id ??= `${rootId}-tab-${index}`\n\n const onClick = useCallback(() => {\n if (!disabled) setIndex(index)\n }, [index, setIndex, disabled])\n\n const onFocus = useCallback(() => {\n if (disabled) return\n\n setFocusedIndex(index)\n\n if (!manual) setIndex(index)\n }, [setFocusedIndex, index, manual, disabled, setIndex])\n\n const getRootProps: PropGetter<\"button\"> = useCallback(\n ({ ref, ...props } = {}) => ({\n id,\n type: \"button\",\n \"aria-controls\": tabPanelId,\n \"aria-selected\": selected,\n \"data-orientation\": orientation,\n disabled,\n role: \"tab\",\n tabIndex: selected ? 0 : -1,\n ...rest,\n ...props,\n ref: mergeRefs(ref, register),\n onClick: handlerAll(props.onClick, rest.onClick, onClick),\n onFocus: handlerAll(props.onFocus, rest.onFocus, onFocus),\n }),\n [\n disabled,\n id,\n onClick,\n onFocus,\n orientation,\n register,\n rest,\n selected,\n tabPanelId,\n ],\n )\n\n return { index, selected, getRootProps }\n}\n\nexport type UseTabReturn = ReturnType<typeof useTab>\n\nexport interface UseTabPanelProps extends HTMLProps {\n /**\n * The index of the tab panel.\n */\n index: number\n}\n\nexport const useTabPanel = ({\n id,\n \"aria-labelledby\": ariaLabelledbyProp,\n index,\n ...rest\n}: UseTabPanelProps) => {\n const { id: rootId, index: selectedIndex, orientation } = useTabsContext()\n const { register } = useTabPanelDescendant()\n const tabId = `${rootId}-tab-${index}`\n const selected = index === selectedIndex\n\n id ??= `${rootId}-panel-${index}`\n\n const getRootProps: PropGetter = useCallback(\n ({ ref, \"aria-labelledby\": ariaLabelledby, ...props } = {}) => ({\n id,\n \"aria-labelledby\": cx(ariaLabelledbyProp, ariaLabelledby, tabId),\n \"data-orientation\": orientation,\n hidden: !selected,\n role: \"tabpanel\",\n tabIndex: selected ? 0 : -1,\n ...rest,\n ...props,\n ref: mergeRefs(ref, register),\n }),\n [id, ariaLabelledbyProp, orientation, register, rest, selected, tabId],\n )\n\n return { index, selected, getRootProps }\n}\n\nexport type UseTabPanelReturn = ReturnType<typeof useTabPanel>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"use-tabs.cjs","names":["createDescendants","createContext","useControllableState","getRootProps: PropGetter","mergeProps","getListProps: PropGetter","mergeRefs"],"sources":["../../../../src/components/tabs/use-tabs.ts"],"sourcesContent":["\"use client\"\n\nimport type { KeyboardEvent } from \"react\"\nimport type { HTMLProps, Orientation, PropGetter } from \"../../core\"\nimport { useCallback, useId, useState } from \"react\"\nimport { mergeProps } from \"../../core\"\nimport { useControllableState } from \"../../hooks/use-controllable-state\"\nimport { createDescendants } from \"../../hooks/use-descendants\"\nimport {\n createContext,\n cx,\n handlerAll,\n isUndefined,\n mergeRefs,\n runKeyAction,\n useUpdateEffect,\n} from \"../../utils\"\n\nconst {\n DescendantsContext: TabDescendantsContext,\n useDescendant: useTabDescendant,\n useDescendants: useTabDescendants,\n} = createDescendants<HTMLButtonElement>()\n\nexport { TabDescendantsContext, useTabDescendant, useTabDescendants }\n\nconst {\n DescendantsContext: TabPanelDescendantsContext,\n useDescendant: useTabPanelDescendant,\n useDescendants: useTabPanelDescendants,\n} = createDescendants<HTMLDivElement>()\n\nexport {\n TabPanelDescendantsContext,\n useTabPanelDescendant,\n useTabPanelDescendants,\n}\n\ninterface TabsContext extends Omit<\n UseTabsReturn,\n \"getRootProps\" | \"tabDescendants\" | \"tabPanelDescendants\"\n> {}\n\nconst [TabsContext, useTabsContext] = createContext<TabsContext>({\n name: \"TabsContext\",\n})\n\nexport { TabsContext, useTabsContext }\n\nexport interface UseTabsProps extends Omit<HTMLProps, \"onChange\"> {\n /**\n * The index of the selected tab.\n */\n defaultIndex?: number\n /**\n * The index of the selected tab.\n */\n index?: number\n /**\n * If `true`, the tabs will be manually activated and display its panel by pressing Space or Enter.\n *\n * If `false`, the tabs will be automatically activated and their panel is displayed when they receive focus.\n *\n * @default false\n */\n manual?: boolean\n /**\n * The orientation of the tabs.\n *\n * @default 'horizontal'\n */\n orientation?: Orientation\n /**\n * The callback invoked when the index changes.\n */\n onChange?: (index: number) => void\n}\n\nexport const useTabs = ({\n id,\n defaultIndex = 0,\n index: indexProp,\n manual = false,\n orientation = \"horizontal\",\n onChange,\n ...rest\n}: UseTabsProps = {}) => {\n const uuid = useId()\n const tabDescendants = useTabDescendants()\n const tabPanelDescendants = useTabPanelDescendants()\n const [index, setIndex] = useControllableState({\n defaultValue: defaultIndex,\n value: indexProp,\n onChange,\n })\n const [focusedIndex, setFocusedIndex] = useState<number>(index)\n const horizontal = orientation === \"horizontal\"\n\n id ??= uuid\n\n const onFocusFirstTab = useCallback(() => {\n const first = tabDescendants.enabledFirstValue()\n\n if (first) first.node.focus()\n }, [tabDescendants])\n\n const onFocusLastTab = useCallback(() => {\n const last = tabDescendants.enabledLastValue()\n\n if (last) last.node.focus()\n }, [tabDescendants])\n\n const onFocusNextTab = useCallback(() => {\n const next = tabDescendants.enabledNextValue(focusedIndex)\n\n if (next) next.node.focus()\n }, [tabDescendants, focusedIndex])\n\n const onFocusPrevTab = useCallback(() => {\n const prev = tabDescendants.enabledPrevValue(focusedIndex)\n\n if (prev) prev.node.focus()\n }, [tabDescendants, focusedIndex])\n\n const onKeyDown = useCallback(\n (ev: KeyboardEvent<HTMLDivElement>) => {\n runKeyAction(ev, {\n ArrowDown: !horizontal ? onFocusNextTab : undefined,\n ArrowLeft: horizontal ? onFocusPrevTab : undefined,\n ArrowRight: horizontal ? onFocusNextTab : undefined,\n ArrowUp: !horizontal ? onFocusPrevTab : undefined,\n End: onFocusLastTab,\n Home: onFocusFirstTab,\n })\n },\n [\n horizontal,\n onFocusNextTab,\n onFocusPrevTab,\n onFocusLastTab,\n onFocusFirstTab,\n ],\n )\n\n useUpdateEffect(() => {\n if (isUndefined(indexProp)) return\n\n setIndex(indexProp)\n setFocusedIndex(indexProp)\n }, [indexProp])\n\n const getRootProps: PropGetter = useCallback(\n ({ ref, ...props } = {}) =>\n mergeProps({ \"data-orientation\": orientation }, rest, props, { ref })(),\n [orientation, rest],\n )\n\n const getListProps: PropGetter = useCallback(\n (props = {}) => ({\n \"aria-orientation\": orientation,\n role: \"tablist\",\n ...props,\n onKeyDown: handlerAll(props.onKeyDown, onKeyDown),\n }),\n [orientation, onKeyDown],\n )\n\n return {\n id,\n focusedIndex,\n index,\n manual,\n orientation,\n setFocusedIndex,\n setIndex,\n tabDescendants,\n tabPanelDescendants,\n getListProps,\n getRootProps,\n }\n}\n\nexport type UseTabsReturn = ReturnType<typeof useTabs>\n\nexport interface UseTabProps extends HTMLProps<\"button\"> {\n /**\n * The index of the tab.\n */\n index: number\n}\n\nexport const useTab = ({ id, disabled, index, ...rest }: UseTabProps) => {\n const {\n id: rootId,\n index: selectedIndex,\n manual,\n orientation,\n setFocusedIndex,\n setIndex,\n } = useTabsContext()\n const { register } = useTabDescendant({ disabled })\n const tabPanelId = `${rootId}-panel-${index}`\n const selected = index === selectedIndex\n\n id ??= `${rootId}-tab-${index}`\n\n const onClick = useCallback(() => {\n if (!disabled) setIndex(index)\n }, [index, setIndex, disabled])\n\n const onFocus = useCallback(() => {\n if (disabled) return\n\n setFocusedIndex(index)\n\n if (!manual) setIndex(index)\n }, [setFocusedIndex, index, manual, disabled, setIndex])\n\n const getRootProps: PropGetter<\"button\"> = useCallback(\n ({ ref, ...props } = {}) =>\n mergeProps(\n {\n id,\n type: \"button\",\n \"aria-controls\": tabPanelId,\n \"aria-selected\": selected,\n \"data-orientation\": orientation,\n disabled,\n role: \"tab\",\n tabIndex: selected ? 0 : -1,\n },\n rest,\n props,\n { ref: mergeRefs(ref, register) },\n {\n onClick: handlerAll(props.onClick, rest.onClick, onClick),\n onFocus: handlerAll(props.onFocus, rest.onFocus, onFocus),\n },\n )({ mergeEvent: false }),\n [\n disabled,\n id,\n onClick,\n onFocus,\n orientation,\n register,\n rest,\n selected,\n tabPanelId,\n ],\n )\n\n return { index, selected, getRootProps }\n}\n\nexport type UseTabReturn = ReturnType<typeof useTab>\n\nexport interface UseTabPanelProps extends HTMLProps {\n /**\n * The index of the tab panel.\n */\n index: number\n}\n\nexport const useTabPanel = ({\n id,\n \"aria-labelledby\": ariaLabelledbyProp,\n index,\n ...rest\n}: UseTabPanelProps) => {\n const { id: rootId, index: selectedIndex, orientation } = useTabsContext()\n const { register } = useTabPanelDescendant()\n const tabId = `${rootId}-tab-${index}`\n const selected = index === selectedIndex\n\n id ??= `${rootId}-panel-${index}`\n\n const getRootProps: PropGetter = useCallback(\n ({ ref, \"aria-labelledby\": ariaLabelledby, ...props } = {}) =>\n mergeProps(\n {\n id,\n \"aria-labelledby\": cx(ariaLabelledbyProp, ariaLabelledby, tabId),\n \"data-orientation\": orientation,\n hidden: !selected,\n role: \"tabpanel\",\n tabIndex: selected ? 0 : -1,\n },\n rest,\n props,\n { ref: mergeRefs(ref, register) },\n )(),\n [id, ariaLabelledbyProp, orientation, register, rest, selected, tabId],\n )\n\n return { index, selected, getRootProps }\n}\n\nexport type UseTabPanelReturn = ReturnType<typeof useTabPanel>\n"],"mappings":"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"}
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
import { createContext as createContext$1 } from "../../utils/context.js";
|
|
4
4
|
import { utils_exports } from "../../utils/index.js";
|
|
5
|
+
import { mergeProps } from "../../core/components/props.js";
|
|
6
|
+
import "../../core/index.js";
|
|
5
7
|
import { useCallback, useState } from "react";
|
|
6
8
|
|
|
7
9
|
//#region src/components/chart/use-chart.ts
|
|
@@ -75,10 +77,7 @@ const useChart = () => {
|
|
|
75
77
|
};
|
|
76
78
|
const useChartLegend = ({ placement = "start-end", align = PLACEMENT_MAP[placement].align, content, formatter, itemSorter, layout = placement.startsWith("center") ? "vertical" : "horizontal", payloadUniqBy, portal, verticalAlign = PLACEMENT_MAP[placement].verticalAlign, onBBoxUpdate, onClick, onMouseEnter, onMouseLeave, ...rest } = {}) => {
|
|
77
79
|
const { highlightedDataKey, onHighlight } = useChartContext();
|
|
78
|
-
const getRootProps = useCallback((props) => (
|
|
79
|
-
...rest,
|
|
80
|
-
...props
|
|
81
|
-
}), [rest]);
|
|
80
|
+
const getRootProps = useCallback((props) => mergeProps(rest, props)(), [rest]);
|
|
82
81
|
const getLegendProps = useCallback((props) => ({
|
|
83
82
|
align,
|
|
84
83
|
content,
|
|
@@ -179,18 +178,12 @@ const useChartTooltip = ({ active, allowEscapeViewBox, animationDuration = 0, an
|
|
|
179
178
|
useTranslate3d
|
|
180
179
|
]);
|
|
181
180
|
return {
|
|
182
|
-
getContentProps: useCallback((props) => (
|
|
183
|
-
...rest,
|
|
184
|
-
...props
|
|
185
|
-
}), [rest]),
|
|
181
|
+
getContentProps: useCallback((props) => mergeProps(rest, props)(), [rest]),
|
|
186
182
|
getRootProps
|
|
187
183
|
};
|
|
188
184
|
};
|
|
189
185
|
const useChartLabelList = ({ angle, clockWise, content, dataKey, formatter, offset = 12, position = "top", textBreakAll, valueAccessor, zIndex, ...rest } = {}) => {
|
|
190
|
-
const getRootProps = useCallback((props) => (
|
|
191
|
-
...rest,
|
|
192
|
-
...props
|
|
193
|
-
}), [rest]);
|
|
186
|
+
const getRootProps = useCallback((props) => mergeProps(rest, props)(), [rest]);
|
|
194
187
|
return {
|
|
195
188
|
getLabelListProps: useCallback((props) => ({
|
|
196
189
|
angle,
|
|
@@ -221,10 +214,7 @@ const useChartLabelList = ({ angle, clockWise, content, dataKey, formatter, offs
|
|
|
221
214
|
};
|
|
222
215
|
};
|
|
223
216
|
const useChartLabel = ({ angle, children, content, formatter, labelRef, offset, parentViewBox, position, value, viewBox, zIndex, ...rest } = {}) => {
|
|
224
|
-
const getRootProps = useCallback((props) => (
|
|
225
|
-
...rest,
|
|
226
|
-
...props
|
|
227
|
-
}), [rest]);
|
|
217
|
+
const getRootProps = useCallback((props) => mergeProps(rest, props)(), [rest]);
|
|
228
218
|
return {
|
|
229
219
|
getLabelProps: useCallback((props) => ({
|
|
230
220
|
angle,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-chart.js","names":["PLACEMENT_MAP: {\n [key in Direction]: {\n align: LegendProps[\"align\"]\n verticalAlign: LegendProps[\"verticalAlign\"]\n }\n}","createContext","getRootProps: PropGetter","getLegendProps: PropGetter<LegendProps>","getRootProps: PropGetter<TooltipProps<Y, M>>","getRootProps: PropGetter<\"text\">"],"sources":["../../../../src/components/chart/use-chart.ts"],"sourcesContent":["\"use client\"\n\nimport type {\n LabelListProps,\n LabelProps,\n LegendProps,\n TooltipProps,\n} from \"recharts\"\nimport type {\n Direction,\n HTMLProps,\n PropGetter,\n RequiredPropGetter,\n} from \"../../core\"\nimport type { Merge } from \"../../utils\"\nimport { useCallback, useState } from \"react\"\nimport { createContext, dataAttr, handlerAll, isUndefined } from \"../../utils\"\n\nconst PLACEMENT_MAP: {\n [key in Direction]: {\n align: LegendProps[\"align\"]\n verticalAlign: LegendProps[\"verticalAlign\"]\n }\n} = {\n \"center-end\": { align: \"right\", verticalAlign: \"middle\" },\n \"center-end-end\": { align: \"right\", verticalAlign: \"bottom\" },\n \"center-end-start\": { align: \"right\", verticalAlign: \"top\" },\n \"center-start\": { align: \"left\", verticalAlign: \"middle\" },\n \"center-start-end\": { align: \"left\", verticalAlign: \"bottom\" },\n \"center-start-start\": { align: \"left\", verticalAlign: \"top\" },\n end: { align: \"center\", verticalAlign: \"bottom\" },\n \"end-center\": { align: \"center\", verticalAlign: \"bottom\" },\n \"end-end\": { align: \"right\", verticalAlign: \"bottom\" },\n \"end-start\": { align: \"left\", verticalAlign: \"bottom\" },\n start: { align: \"center\", verticalAlign: \"top\" },\n \"start-center\": { align: \"center\", verticalAlign: \"top\" },\n \"start-end\": { align: \"right\", verticalAlign: \"top\" },\n \"start-start\": { align: \"left\", verticalAlign: \"top\" },\n}\n\ninterface ChartContext extends UseChartReturn {}\n\nconst [ChartContext, useChartContext] = createContext<ChartContext>({\n name: \"ChartContext\",\n})\n\nexport { ChartContext, useChartContext }\n\nexport const useChart = () => {\n const [highlightedDataKey, setHighlightedDataKey] = useState<\n number | string | undefined\n >(undefined)\n\n const onHighlight = useCallback((dataKey?: number | string) => {\n setHighlightedDataKey(dataKey)\n }, [])\n\n return { highlightedDataKey, onHighlight }\n}\n\nexport type UseChartReturn = ReturnType<typeof useChart>\n\nexport interface UseChartLegendProps extends Merge<\n HTMLProps,\n Pick<\n LegendProps,\n | \"align\"\n | \"content\"\n | \"formatter\"\n | \"itemSorter\"\n | \"layout\"\n | \"onBBoxUpdate\"\n | \"onClick\"\n | \"onMouseEnter\"\n | \"onMouseLeave\"\n | \"payloadUniqBy\"\n | \"portal\"\n | \"verticalAlign\"\n >\n> {\n /**\n * The placement of the legend.\n *\n * @default 'start-end'\n */\n placement?: Direction\n}\n\nexport const useChartLegend = ({\n placement = \"start-end\",\n align = PLACEMENT_MAP[placement].align,\n content,\n formatter,\n itemSorter,\n layout = placement.startsWith(\"center\") ? \"vertical\" : \"horizontal\",\n payloadUniqBy,\n portal,\n verticalAlign = PLACEMENT_MAP[placement].verticalAlign,\n onBBoxUpdate,\n onClick,\n onMouseEnter,\n onMouseLeave,\n ...rest\n}: UseChartLegendProps = {}) => {\n const { highlightedDataKey, onHighlight } = useChartContext()\n\n const getRootProps: PropGetter = useCallback(\n (props) => ({ ...rest, ...props }),\n [rest],\n )\n\n const getLegendProps: PropGetter<LegendProps> = useCallback(\n (props) => ({\n align,\n content,\n formatter,\n itemSorter,\n layout,\n payloadUniqBy,\n portal,\n verticalAlign,\n onBBoxUpdate,\n onClick,\n onMouseEnter,\n onMouseLeave,\n ...props,\n }),\n [\n align,\n content,\n formatter,\n itemSorter,\n layout,\n onBBoxUpdate,\n onClick,\n onMouseEnter,\n onMouseLeave,\n payloadUniqBy,\n portal,\n verticalAlign,\n ],\n )\n\n const getLegendContentProps: PropGetter = useCallback(\n (props) => ({\n \"data-align\": align,\n \"data-orientation\": layout,\n \"data-vertical-align\": verticalAlign,\n ...props,\n }),\n [align, layout, verticalAlign],\n )\n\n const getLegendItemProps: RequiredPropGetter<\n \"div\",\n { dataKey?: number | string }\n > = useCallback(\n ({ dataKey, ...props }) => ({\n ...props,\n \"data-active\": dataAttr(\n !isUndefined(highlightedDataKey) && highlightedDataKey === dataKey,\n ),\n \"data-inactive\": dataAttr(\n !isUndefined(highlightedDataKey) && highlightedDataKey !== dataKey,\n ),\n onMouseEnter: handlerAll(props.onMouseEnter, () => onHighlight(dataKey)),\n onMouseLeave: handlerAll(props.onMouseLeave, () => onHighlight()),\n }),\n [highlightedDataKey, onHighlight],\n )\n\n return {\n getLegendContentProps,\n getLegendItemProps,\n getLegendProps,\n getRootProps,\n }\n}\n\nexport type UseChartLegendReturn = ReturnType<typeof useChartLegend>\n\nexport interface UseChartTooltipProps<\n Y extends (number | string)[] | number | string,\n M extends number | string,\n> extends Merge<\n HTMLProps,\n Omit<\n TooltipProps<Y, M>,\n | \"contentStyle\"\n | \"itemStyle\"\n | \"labelClassName\"\n | \"labelStyle\"\n | \"separator\"\n | \"wrapperClassName\"\n | \"wrapperStyle\"\n >\n> {}\n\nexport const useChartTooltip = <\n Y extends (number | string)[] | number | string,\n M extends number | string,\n>({\n active,\n allowEscapeViewBox,\n animationDuration = 0,\n animationEasing,\n axisId,\n content,\n cursor,\n defaultIndex,\n filterNull,\n formatter,\n includeHidden,\n isAnimationActive = (animationDuration || 0) > 0,\n itemSorter,\n labelFormatter,\n offset,\n payloadUniqBy,\n portal,\n position,\n reverseDirection,\n shared,\n trigger,\n useTranslate3d,\n ...rest\n}: UseChartTooltipProps<Y, M> = {}) => {\n const getRootProps: PropGetter<TooltipProps<Y, M>> = useCallback(\n (props) => ({\n active,\n allowEscapeViewBox,\n animationDuration,\n animationEasing,\n axisId,\n content,\n cursor,\n defaultIndex,\n filterNull,\n formatter,\n includeHidden,\n isAnimationActive,\n itemSorter,\n labelFormatter,\n offset,\n payloadUniqBy,\n portal,\n position,\n reverseDirection,\n shared,\n trigger,\n useTranslate3d,\n ...props,\n }),\n [\n active,\n allowEscapeViewBox,\n animationDuration,\n animationEasing,\n axisId,\n content,\n cursor,\n defaultIndex,\n filterNull,\n formatter,\n includeHidden,\n isAnimationActive,\n itemSorter,\n labelFormatter,\n offset,\n payloadUniqBy,\n portal,\n position,\n reverseDirection,\n shared,\n trigger,\n useTranslate3d,\n ],\n )\n\n const getContentProps: PropGetter = useCallback(\n (props) => ({\n ...rest,\n ...props,\n }),\n [rest],\n )\n\n return { getContentProps, getRootProps }\n}\n\nexport type UseChartTooltipReturn<\n Y extends (number | string)[] | number | string,\n M extends number | string,\n> = ReturnType<typeof useChartTooltip<Y, M>>\n\nexport interface UseChartLabelListProps extends Merge<\n HTMLProps<\"text\">,\n Pick<\n LabelListProps,\n | \"angle\"\n | \"clockWise\"\n | \"content\"\n | \"dataKey\"\n | \"formatter\"\n | \"offset\"\n | \"position\"\n | \"textBreakAll\"\n | \"valueAccessor\"\n | \"zIndex\"\n >\n> {}\n\nexport const useChartLabelList = ({\n angle,\n clockWise,\n content,\n dataKey,\n formatter,\n offset = 12,\n position = \"top\",\n textBreakAll,\n valueAccessor,\n zIndex,\n ...rest\n}: UseChartLabelListProps = {}) => {\n const getRootProps: PropGetter<\"text\"> = useCallback(\n (props) => ({ ...rest, ...props }),\n [rest],\n )\n\n const getLabelListProps: PropGetter<LabelListProps> = useCallback(\n (props) => ({\n angle,\n clockWise,\n content,\n dataKey,\n fill: \"\",\n formatter,\n offset,\n position,\n textBreakAll,\n valueAccessor,\n zIndex,\n ...props,\n }),\n [\n angle,\n clockWise,\n content,\n dataKey,\n formatter,\n offset,\n position,\n textBreakAll,\n valueAccessor,\n zIndex,\n ],\n )\n\n return { getLabelListProps, getRootProps }\n}\n\nexport type UseChartLabelListReturn = ReturnType<typeof useChartLabelList>\n\nexport interface UseChartLabelProps extends Merge<\n HTMLProps<\"text\">,\n Pick<\n LabelProps,\n | \"angle\"\n | \"children\"\n | \"content\"\n | \"formatter\"\n | \"labelRef\"\n | \"offset\"\n | \"parentViewBox\"\n | \"position\"\n | \"value\"\n | \"viewBox\"\n | \"zIndex\"\n >\n> {}\n\nexport const useChartLabel = ({\n angle,\n children,\n content,\n formatter,\n labelRef,\n offset,\n parentViewBox,\n position,\n value,\n viewBox,\n zIndex,\n ...rest\n}: UseChartLabelProps = {}) => {\n const getRootProps: PropGetter<\"text\"> = useCallback(\n (props) => ({ ...rest, ...props }),\n [rest],\n )\n\n const getLabelProps: PropGetter<LabelProps> = useCallback(\n (props) => ({\n angle,\n children,\n content,\n fill: \"\",\n formatter,\n labelRef,\n offset,\n parentViewBox,\n position,\n value,\n viewBox,\n zIndex,\n ...props,\n }),\n [\n angle,\n children,\n content,\n formatter,\n labelRef,\n offset,\n parentViewBox,\n position,\n value,\n viewBox,\n zIndex,\n ],\n )\n\n return { getLabelProps, getRootProps }\n}\n\nexport type UseChartLabelReturn = ReturnType<typeof useChartLabel>\n"],"mappings":";;;;;;;AAkBA,MAAMA,gBAKF;CACF,cAAc;EAAE,OAAO;EAAS,eAAe;EAAU;CACzD,kBAAkB;EAAE,OAAO;EAAS,eAAe;EAAU;CAC7D,oBAAoB;EAAE,OAAO;EAAS,eAAe;EAAO;CAC5D,gBAAgB;EAAE,OAAO;EAAQ,eAAe;EAAU;CAC1D,oBAAoB;EAAE,OAAO;EAAQ,eAAe;EAAU;CAC9D,sBAAsB;EAAE,OAAO;EAAQ,eAAe;EAAO;CAC7D,KAAK;EAAE,OAAO;EAAU,eAAe;EAAU;CACjD,cAAc;EAAE,OAAO;EAAU,eAAe;EAAU;CAC1D,WAAW;EAAE,OAAO;EAAS,eAAe;EAAU;CACtD,aAAa;EAAE,OAAO;EAAQ,eAAe;EAAU;CACvD,OAAO;EAAE,OAAO;EAAU,eAAe;EAAO;CAChD,gBAAgB;EAAE,OAAO;EAAU,eAAe;EAAO;CACzD,aAAa;EAAE,OAAO;EAAS,eAAe;EAAO;CACrD,eAAe;EAAE,OAAO;EAAQ,eAAe;EAAO;CACvD;AAID,MAAM,CAAC,cAAc,mBAAmBC,gBAA4B,EAClE,MAAM,gBACP,CAAC;AAIF,MAAa,iBAAiB;CAC5B,MAAM,CAAC,oBAAoB,yBAAyB,SAElD,OAAU;AAMZ,QAAO;EAAE;EAAoB,aAJT,aAAa,YAA8B;AAC7D,yBAAsB,QAAQ;KAC7B,EAAE,CAAC;EAEoC;;AA+B5C,MAAa,kBAAkB,EAC7B,YAAY,aACZ,QAAQ,cAAc,WAAW,OACjC,SACA,WACA,YACA,SAAS,UAAU,WAAW,SAAS,GAAG,aAAa,cACvD,eACA,QACA,gBAAgB,cAAc,WAAW,eACzC,cACA,SACA,cACA,cACA,GAAG,SACoB,EAAE,KAAK;CAC9B,MAAM,EAAE,oBAAoB,gBAAgB,iBAAiB;CAE7D,MAAMC,eAA2B,aAC9B,WAAW;EAAE,GAAG;EAAM,GAAG;EAAO,GACjC,CAAC,KAAK,CACP;CAED,MAAMC,iBAA0C,aAC7C,WAAW;EACV;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,GAAG;EACJ,GACD;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CACF;AA8BD,QAAO;EACL,uBA7BwC,aACvC,WAAW;GACV,cAAc;GACd,oBAAoB;GACpB,uBAAuB;GACvB,GAAG;GACJ,GACD;GAAC;GAAO;GAAQ;GAAc,CAC/B;EAsBC,oBAjBE,aACD,EAAE,SAAS,GAAG,aAAa;GAC1B,GAAG;GACH,2CACE,gCAAa,mBAAmB,IAAI,uBAAuB,QAC5D;GACD,6CACE,gCAAa,mBAAmB,IAAI,uBAAuB,QAC5D;GACD,4CAAyB,MAAM,oBAAoB,YAAY,QAAQ,CAAC;GACxE,4CAAyB,MAAM,oBAAoB,aAAa,CAAC;GAClE,GACD,CAAC,oBAAoB,YAAY,CAClC;EAKC;EACA;EACD;;AAsBH,MAAa,mBAGX,EACA,QACA,oBACA,oBAAoB,GACpB,iBACA,QACA,SACA,QACA,cACA,YACA,WACA,eACA,qBAAqB,qBAAqB,KAAK,GAC/C,YACA,gBACA,QACA,eACA,QACA,UACA,kBACA,QACA,SACA,gBACA,GAAG,SAC2B,EAAE,KAAK;CACrC,MAAMC,eAA+C,aAClD,WAAW;EACV;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,GAAG;EACJ,GACD;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CACF;AAUD,QAAO;EAAE,iBAR2B,aACjC,WAAW;GACV,GAAG;GACH,GAAG;GACJ,GACD,CAAC,KAAK,CACP;EAEyB;EAAc;;AAyB1C,MAAa,qBAAqB,EAChC,OACA,WACA,SACA,SACA,WACA,SAAS,IACT,WAAW,OACX,cACA,eACA,QACA,GAAG,SACuB,EAAE,KAAK;CACjC,MAAMC,eAAmC,aACtC,WAAW;EAAE,GAAG;EAAM,GAAG;EAAO,GACjC,CAAC,KAAK,CACP;AA+BD,QAAO;EAAE,mBA7B6C,aACnD,WAAW;GACV;GACA;GACA;GACA;GACA,MAAM;GACN;GACA;GACA;GACA;GACA;GACA;GACA,GAAG;GACJ,GACD;GACE;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACD,CACF;EAE2B;EAAc;;AAuB5C,MAAa,iBAAiB,EAC5B,OACA,UACA,SACA,WACA,UACA,QACA,eACA,UACA,OACA,SACA,QACA,GAAG,SACmB,EAAE,KAAK;CAC7B,MAAMA,eAAmC,aACtC,WAAW;EAAE,GAAG;EAAM,GAAG;EAAO,GACjC,CAAC,KAAK,CACP;AAiCD,QAAO;EAAE,eA/BqC,aAC3C,WAAW;GACV;GACA;GACA;GACA,MAAM;GACN;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA,GAAG;GACJ,GACD;GACE;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACD,CACF;EAEuB;EAAc"}
|
|
1
|
+
{"version":3,"file":"use-chart.js","names":["PLACEMENT_MAP: {\n [key in Direction]: {\n align: LegendProps[\"align\"]\n verticalAlign: LegendProps[\"verticalAlign\"]\n }\n}","createContext","getRootProps: PropGetter","getLegendProps: PropGetter<LegendProps>","getRootProps: PropGetter<TooltipProps<Y, M>>","getRootProps: PropGetter<\"text\">"],"sources":["../../../../src/components/chart/use-chart.ts"],"sourcesContent":["\"use client\"\n\nimport type {\n LabelListProps,\n LabelProps,\n LegendProps,\n TooltipProps,\n} from \"recharts\"\nimport type {\n Direction,\n HTMLProps,\n PropGetter,\n RequiredPropGetter,\n} from \"../../core\"\nimport type { Merge } from \"../../utils\"\nimport { useCallback, useState } from \"react\"\nimport { mergeProps } from \"../../core\"\nimport { createContext, dataAttr, handlerAll, isUndefined } from \"../../utils\"\n\nconst PLACEMENT_MAP: {\n [key in Direction]: {\n align: LegendProps[\"align\"]\n verticalAlign: LegendProps[\"verticalAlign\"]\n }\n} = {\n \"center-end\": { align: \"right\", verticalAlign: \"middle\" },\n \"center-end-end\": { align: \"right\", verticalAlign: \"bottom\" },\n \"center-end-start\": { align: \"right\", verticalAlign: \"top\" },\n \"center-start\": { align: \"left\", verticalAlign: \"middle\" },\n \"center-start-end\": { align: \"left\", verticalAlign: \"bottom\" },\n \"center-start-start\": { align: \"left\", verticalAlign: \"top\" },\n end: { align: \"center\", verticalAlign: \"bottom\" },\n \"end-center\": { align: \"center\", verticalAlign: \"bottom\" },\n \"end-end\": { align: \"right\", verticalAlign: \"bottom\" },\n \"end-start\": { align: \"left\", verticalAlign: \"bottom\" },\n start: { align: \"center\", verticalAlign: \"top\" },\n \"start-center\": { align: \"center\", verticalAlign: \"top\" },\n \"start-end\": { align: \"right\", verticalAlign: \"top\" },\n \"start-start\": { align: \"left\", verticalAlign: \"top\" },\n}\n\ninterface ChartContext extends UseChartReturn {}\n\nconst [ChartContext, useChartContext] = createContext<ChartContext>({\n name: \"ChartContext\",\n})\n\nexport { ChartContext, useChartContext }\n\nexport const useChart = () => {\n const [highlightedDataKey, setHighlightedDataKey] = useState<\n number | string | undefined\n >(undefined)\n\n const onHighlight = useCallback((dataKey?: number | string) => {\n setHighlightedDataKey(dataKey)\n }, [])\n\n return { highlightedDataKey, onHighlight }\n}\n\nexport type UseChartReturn = ReturnType<typeof useChart>\n\nexport interface UseChartLegendProps extends Merge<\n HTMLProps,\n Pick<\n LegendProps,\n | \"align\"\n | \"content\"\n | \"formatter\"\n | \"itemSorter\"\n | \"layout\"\n | \"onBBoxUpdate\"\n | \"onClick\"\n | \"onMouseEnter\"\n | \"onMouseLeave\"\n | \"payloadUniqBy\"\n | \"portal\"\n | \"verticalAlign\"\n >\n> {\n /**\n * The placement of the legend.\n *\n * @default 'start-end'\n */\n placement?: Direction\n}\n\nexport const useChartLegend = ({\n placement = \"start-end\",\n align = PLACEMENT_MAP[placement].align,\n content,\n formatter,\n itemSorter,\n layout = placement.startsWith(\"center\") ? \"vertical\" : \"horizontal\",\n payloadUniqBy,\n portal,\n verticalAlign = PLACEMENT_MAP[placement].verticalAlign,\n onBBoxUpdate,\n onClick,\n onMouseEnter,\n onMouseLeave,\n ...rest\n}: UseChartLegendProps = {}) => {\n const { highlightedDataKey, onHighlight } = useChartContext()\n\n const getRootProps: PropGetter = useCallback(\n (props) => mergeProps(rest, props)(),\n [rest],\n )\n\n const getLegendProps: PropGetter<LegendProps> = useCallback(\n (props) => ({\n align,\n content,\n formatter,\n itemSorter,\n layout,\n payloadUniqBy,\n portal,\n verticalAlign,\n onBBoxUpdate,\n onClick,\n onMouseEnter,\n onMouseLeave,\n ...props,\n }),\n [\n align,\n content,\n formatter,\n itemSorter,\n layout,\n onBBoxUpdate,\n onClick,\n onMouseEnter,\n onMouseLeave,\n payloadUniqBy,\n portal,\n verticalAlign,\n ],\n )\n\n const getLegendContentProps: PropGetter = useCallback(\n (props) => ({\n \"data-align\": align,\n \"data-orientation\": layout,\n \"data-vertical-align\": verticalAlign,\n ...props,\n }),\n [align, layout, verticalAlign],\n )\n\n const getLegendItemProps: RequiredPropGetter<\n \"div\",\n { dataKey?: number | string }\n > = useCallback(\n ({ dataKey, ...props }) => ({\n ...props,\n \"data-active\": dataAttr(\n !isUndefined(highlightedDataKey) && highlightedDataKey === dataKey,\n ),\n \"data-inactive\": dataAttr(\n !isUndefined(highlightedDataKey) && highlightedDataKey !== dataKey,\n ),\n onMouseEnter: handlerAll(props.onMouseEnter, () => onHighlight(dataKey)),\n onMouseLeave: handlerAll(props.onMouseLeave, () => onHighlight()),\n }),\n [highlightedDataKey, onHighlight],\n )\n\n return {\n getLegendContentProps,\n getLegendItemProps,\n getLegendProps,\n getRootProps,\n }\n}\n\nexport type UseChartLegendReturn = ReturnType<typeof useChartLegend>\n\nexport interface UseChartTooltipProps<\n Y extends (number | string)[] | number | string,\n M extends number | string,\n> extends Merge<\n HTMLProps,\n Omit<\n TooltipProps<Y, M>,\n | \"contentStyle\"\n | \"itemStyle\"\n | \"labelClassName\"\n | \"labelStyle\"\n | \"separator\"\n | \"wrapperClassName\"\n | \"wrapperStyle\"\n >\n> {}\n\nexport const useChartTooltip = <\n Y extends (number | string)[] | number | string,\n M extends number | string,\n>({\n active,\n allowEscapeViewBox,\n animationDuration = 0,\n animationEasing,\n axisId,\n content,\n cursor,\n defaultIndex,\n filterNull,\n formatter,\n includeHidden,\n isAnimationActive = (animationDuration || 0) > 0,\n itemSorter,\n labelFormatter,\n offset,\n payloadUniqBy,\n portal,\n position,\n reverseDirection,\n shared,\n trigger,\n useTranslate3d,\n ...rest\n}: UseChartTooltipProps<Y, M> = {}) => {\n const getRootProps: PropGetter<TooltipProps<Y, M>> = useCallback(\n (props) => ({\n active,\n allowEscapeViewBox,\n animationDuration,\n animationEasing,\n axisId,\n content,\n cursor,\n defaultIndex,\n filterNull,\n formatter,\n includeHidden,\n isAnimationActive,\n itemSorter,\n labelFormatter,\n offset,\n payloadUniqBy,\n portal,\n position,\n reverseDirection,\n shared,\n trigger,\n useTranslate3d,\n ...props,\n }),\n [\n active,\n allowEscapeViewBox,\n animationDuration,\n animationEasing,\n axisId,\n content,\n cursor,\n defaultIndex,\n filterNull,\n formatter,\n includeHidden,\n isAnimationActive,\n itemSorter,\n labelFormatter,\n offset,\n payloadUniqBy,\n portal,\n position,\n reverseDirection,\n shared,\n trigger,\n useTranslate3d,\n ],\n )\n\n const getContentProps: PropGetter = useCallback(\n (props) => mergeProps(rest, props)(),\n [rest],\n )\n\n return { getContentProps, getRootProps }\n}\n\nexport type UseChartTooltipReturn<\n Y extends (number | string)[] | number | string,\n M extends number | string,\n> = ReturnType<typeof useChartTooltip<Y, M>>\n\nexport interface UseChartLabelListProps extends Merge<\n HTMLProps<\"text\">,\n Pick<\n LabelListProps,\n | \"angle\"\n | \"clockWise\"\n | \"content\"\n | \"dataKey\"\n | \"formatter\"\n | \"offset\"\n | \"position\"\n | \"textBreakAll\"\n | \"valueAccessor\"\n | \"zIndex\"\n >\n> {}\n\nexport const useChartLabelList = ({\n angle,\n clockWise,\n content,\n dataKey,\n formatter,\n offset = 12,\n position = \"top\",\n textBreakAll,\n valueAccessor,\n zIndex,\n ...rest\n}: UseChartLabelListProps = {}) => {\n const getRootProps: PropGetter<\"text\"> = useCallback(\n (props) => mergeProps(rest, props)(),\n [rest],\n )\n\n const getLabelListProps: PropGetter<LabelListProps> = useCallback(\n (props) => ({\n angle,\n clockWise,\n content,\n dataKey,\n fill: \"\",\n formatter,\n offset,\n position,\n textBreakAll,\n valueAccessor,\n zIndex,\n ...props,\n }),\n [\n angle,\n clockWise,\n content,\n dataKey,\n formatter,\n offset,\n position,\n textBreakAll,\n valueAccessor,\n zIndex,\n ],\n )\n\n return { getLabelListProps, getRootProps }\n}\n\nexport type UseChartLabelListReturn = ReturnType<typeof useChartLabelList>\n\nexport interface UseChartLabelProps extends Merge<\n HTMLProps<\"text\">,\n Pick<\n LabelProps,\n | \"angle\"\n | \"children\"\n | \"content\"\n | \"formatter\"\n | \"labelRef\"\n | \"offset\"\n | \"parentViewBox\"\n | \"position\"\n | \"value\"\n | \"viewBox\"\n | \"zIndex\"\n >\n> {}\n\nexport const useChartLabel = ({\n angle,\n children,\n content,\n formatter,\n labelRef,\n offset,\n parentViewBox,\n position,\n value,\n viewBox,\n zIndex,\n ...rest\n}: UseChartLabelProps = {}) => {\n const getRootProps: PropGetter<\"text\"> = useCallback(\n (props) => mergeProps(rest, props)(),\n [rest],\n )\n\n const getLabelProps: PropGetter<LabelProps> = useCallback(\n (props) => ({\n angle,\n children,\n content,\n fill: \"\",\n formatter,\n labelRef,\n offset,\n parentViewBox,\n position,\n value,\n viewBox,\n zIndex,\n ...props,\n }),\n [\n angle,\n children,\n content,\n formatter,\n labelRef,\n offset,\n parentViewBox,\n position,\n value,\n viewBox,\n zIndex,\n ],\n )\n\n return { getLabelProps, getRootProps }\n}\n\nexport type UseChartLabelReturn = ReturnType<typeof useChartLabel>\n"],"mappings":";;;;;;;;;AAmBA,MAAMA,gBAKF;CACF,cAAc;EAAE,OAAO;EAAS,eAAe;EAAU;CACzD,kBAAkB;EAAE,OAAO;EAAS,eAAe;EAAU;CAC7D,oBAAoB;EAAE,OAAO;EAAS,eAAe;EAAO;CAC5D,gBAAgB;EAAE,OAAO;EAAQ,eAAe;EAAU;CAC1D,oBAAoB;EAAE,OAAO;EAAQ,eAAe;EAAU;CAC9D,sBAAsB;EAAE,OAAO;EAAQ,eAAe;EAAO;CAC7D,KAAK;EAAE,OAAO;EAAU,eAAe;EAAU;CACjD,cAAc;EAAE,OAAO;EAAU,eAAe;EAAU;CAC1D,WAAW;EAAE,OAAO;EAAS,eAAe;EAAU;CACtD,aAAa;EAAE,OAAO;EAAQ,eAAe;EAAU;CACvD,OAAO;EAAE,OAAO;EAAU,eAAe;EAAO;CAChD,gBAAgB;EAAE,OAAO;EAAU,eAAe;EAAO;CACzD,aAAa;EAAE,OAAO;EAAS,eAAe;EAAO;CACrD,eAAe;EAAE,OAAO;EAAQ,eAAe;EAAO;CACvD;AAID,MAAM,CAAC,cAAc,mBAAmBC,gBAA4B,EAClE,MAAM,gBACP,CAAC;AAIF,MAAa,iBAAiB;CAC5B,MAAM,CAAC,oBAAoB,yBAAyB,SAElD,OAAU;AAMZ,QAAO;EAAE;EAAoB,aAJT,aAAa,YAA8B;AAC7D,yBAAsB,QAAQ;KAC7B,EAAE,CAAC;EAEoC;;AA+B5C,MAAa,kBAAkB,EAC7B,YAAY,aACZ,QAAQ,cAAc,WAAW,OACjC,SACA,WACA,YACA,SAAS,UAAU,WAAW,SAAS,GAAG,aAAa,cACvD,eACA,QACA,gBAAgB,cAAc,WAAW,eACzC,cACA,SACA,cACA,cACA,GAAG,SACoB,EAAE,KAAK;CAC9B,MAAM,EAAE,oBAAoB,gBAAgB,iBAAiB;CAE7D,MAAMC,eAA2B,aAC9B,UAAU,WAAW,MAAM,MAAM,EAAE,EACpC,CAAC,KAAK,CACP;CAED,MAAMC,iBAA0C,aAC7C,WAAW;EACV;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,GAAG;EACJ,GACD;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CACF;AA8BD,QAAO;EACL,uBA7BwC,aACvC,WAAW;GACV,cAAc;GACd,oBAAoB;GACpB,uBAAuB;GACvB,GAAG;GACJ,GACD;GAAC;GAAO;GAAQ;GAAc,CAC/B;EAsBC,oBAjBE,aACD,EAAE,SAAS,GAAG,aAAa;GAC1B,GAAG;GACH,2CACE,gCAAa,mBAAmB,IAAI,uBAAuB,QAC5D;GACD,6CACE,gCAAa,mBAAmB,IAAI,uBAAuB,QAC5D;GACD,4CAAyB,MAAM,oBAAoB,YAAY,QAAQ,CAAC;GACxE,4CAAyB,MAAM,oBAAoB,aAAa,CAAC;GAClE,GACD,CAAC,oBAAoB,YAAY,CAClC;EAKC;EACA;EACD;;AAsBH,MAAa,mBAGX,EACA,QACA,oBACA,oBAAoB,GACpB,iBACA,QACA,SACA,QACA,cACA,YACA,WACA,eACA,qBAAqB,qBAAqB,KAAK,GAC/C,YACA,gBACA,QACA,eACA,QACA,UACA,kBACA,QACA,SACA,gBACA,GAAG,SAC2B,EAAE,KAAK;CACrC,MAAMC,eAA+C,aAClD,WAAW;EACV;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,GAAG;EACJ,GACD;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CACF;AAOD,QAAO;EAAE,iBAL2B,aACjC,UAAU,WAAW,MAAM,MAAM,EAAE,EACpC,CAAC,KAAK,CACP;EAEyB;EAAc;;AAyB1C,MAAa,qBAAqB,EAChC,OACA,WACA,SACA,SACA,WACA,SAAS,IACT,WAAW,OACX,cACA,eACA,QACA,GAAG,SACuB,EAAE,KAAK;CACjC,MAAMC,eAAmC,aACtC,UAAU,WAAW,MAAM,MAAM,EAAE,EACpC,CAAC,KAAK,CACP;AA+BD,QAAO;EAAE,mBA7B6C,aACnD,WAAW;GACV;GACA;GACA;GACA;GACA,MAAM;GACN;GACA;GACA;GACA;GACA;GACA;GACA,GAAG;GACJ,GACD;GACE;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACD,CACF;EAE2B;EAAc;;AAuB5C,MAAa,iBAAiB,EAC5B,OACA,UACA,SACA,WACA,UACA,QACA,eACA,UACA,OACA,SACA,QACA,GAAG,SACmB,EAAE,KAAK;CAC7B,MAAMA,eAAmC,aACtC,UAAU,WAAW,MAAM,MAAM,EAAE,EACpC,CAAC,KAAK,CACP;AAiCD,QAAO;EAAE,eA/BqC,aAC3C,WAAW;GACV;GACA;GACA;GACA,MAAM;GACN;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA,GAAG;GACJ,GACD;GACE;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACD,CACF;EAEuB;EAAc"}
|
|
@@ -5,6 +5,8 @@ import { runKeyAction } from "../../utils/dom.js";
|
|
|
5
5
|
import { useUpdateEffect } from "../../utils/effect.js";
|
|
6
6
|
import { mergeRefs } from "../../utils/ref.js";
|
|
7
7
|
import { utils_exports } from "../../utils/index.js";
|
|
8
|
+
import { mergeProps } from "../../core/components/props.js";
|
|
9
|
+
import "../../core/index.js";
|
|
8
10
|
import { useControllableState } from "../../hooks/use-controllable-state/index.js";
|
|
9
11
|
import { createDescendants } from "../../hooks/use-descendants/index.js";
|
|
10
12
|
import { useCallback, useId, useState } from "react";
|
|
@@ -62,12 +64,7 @@ const useTabs = ({ id, defaultIndex = 0, index: indexProp, manual = false, orien
|
|
|
62
64
|
setIndex(indexProp);
|
|
63
65
|
setFocusedIndex(indexProp);
|
|
64
66
|
}, [indexProp]);
|
|
65
|
-
const getRootProps = useCallback(({ ref, ...props } = {}) => ({
|
|
66
|
-
"data-orientation": orientation,
|
|
67
|
-
...rest,
|
|
68
|
-
...props,
|
|
69
|
-
ref: mergeRefs(ref, rest.ref)
|
|
70
|
-
}), [orientation, rest]);
|
|
67
|
+
const getRootProps = useCallback(({ ref, ...props } = {}) => mergeProps({ "data-orientation": orientation }, rest, props, { ref })(), [orientation, rest]);
|
|
71
68
|
const getListProps = useCallback((props = {}) => ({
|
|
72
69
|
"aria-orientation": orientation,
|
|
73
70
|
role: "tablist",
|
|
@@ -115,7 +112,7 @@ const useTab = ({ id, disabled, index, ...rest }) => {
|
|
|
115
112
|
return {
|
|
116
113
|
index,
|
|
117
114
|
selected,
|
|
118
|
-
getRootProps: useCallback(({ ref, ...props } = {}) => ({
|
|
115
|
+
getRootProps: useCallback(({ ref, ...props } = {}) => mergeProps({
|
|
119
116
|
id,
|
|
120
117
|
type: "button",
|
|
121
118
|
"aria-controls": tabPanelId,
|
|
@@ -123,13 +120,11 @@ const useTab = ({ id, disabled, index, ...rest }) => {
|
|
|
123
120
|
"data-orientation": orientation,
|
|
124
121
|
disabled,
|
|
125
122
|
role: "tab",
|
|
126
|
-
tabIndex: selected ? 0 : -1
|
|
127
|
-
|
|
128
|
-
...props,
|
|
129
|
-
ref: mergeRefs(ref, register),
|
|
123
|
+
tabIndex: selected ? 0 : -1
|
|
124
|
+
}, rest, props, { ref: mergeRefs(ref, register) }, {
|
|
130
125
|
onClick: (0, utils_exports.handlerAll)(props.onClick, rest.onClick, onClick),
|
|
131
126
|
onFocus: (0, utils_exports.handlerAll)(props.onFocus, rest.onFocus, onFocus)
|
|
132
|
-
}), [
|
|
127
|
+
})({ mergeEvent: false }), [
|
|
133
128
|
disabled,
|
|
134
129
|
id,
|
|
135
130
|
onClick,
|
|
@@ -151,17 +146,14 @@ const useTabPanel = ({ id, "aria-labelledby": ariaLabelledbyProp, index, ...rest
|
|
|
151
146
|
return {
|
|
152
147
|
index,
|
|
153
148
|
selected,
|
|
154
|
-
getRootProps: useCallback(({ ref, "aria-labelledby": ariaLabelledby, ...props } = {}) => ({
|
|
149
|
+
getRootProps: useCallback(({ ref, "aria-labelledby": ariaLabelledby, ...props } = {}) => mergeProps({
|
|
155
150
|
id,
|
|
156
151
|
"aria-labelledby": (0, utils_exports.cx)(ariaLabelledbyProp, ariaLabelledby, tabId),
|
|
157
152
|
"data-orientation": orientation,
|
|
158
153
|
hidden: !selected,
|
|
159
154
|
role: "tabpanel",
|
|
160
|
-
tabIndex: selected ? 0 : -1
|
|
161
|
-
|
|
162
|
-
...props,
|
|
163
|
-
ref: mergeRefs(ref, register)
|
|
164
|
-
}), [
|
|
155
|
+
tabIndex: selected ? 0 : -1
|
|
156
|
+
}, rest, props, { ref: mergeRefs(ref, register) })(), [
|
|
165
157
|
id,
|
|
166
158
|
ariaLabelledbyProp,
|
|
167
159
|
orientation,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-tabs.js","names":["createContext","getRootProps: PropGetter","getListProps: PropGetter"],"sources":["../../../../src/components/tabs/use-tabs.ts"],"sourcesContent":["\"use client\"\n\nimport type { KeyboardEvent } from \"react\"\nimport type { HTMLProps, Orientation, PropGetter } from \"../../core\"\nimport { useCallback, useId, useState } from \"react\"\nimport { useControllableState } from \"../../hooks/use-controllable-state\"\nimport { createDescendants } from \"../../hooks/use-descendants\"\nimport {\n createContext,\n cx,\n handlerAll,\n isUndefined,\n mergeRefs,\n runKeyAction,\n useUpdateEffect,\n} from \"../../utils\"\n\nconst {\n DescendantsContext: TabDescendantsContext,\n useDescendant: useTabDescendant,\n useDescendants: useTabDescendants,\n} = createDescendants<HTMLButtonElement>()\n\nexport { TabDescendantsContext, useTabDescendant, useTabDescendants }\n\nconst {\n DescendantsContext: TabPanelDescendantsContext,\n useDescendant: useTabPanelDescendant,\n useDescendants: useTabPanelDescendants,\n} = createDescendants<HTMLDivElement>()\n\nexport {\n TabPanelDescendantsContext,\n useTabPanelDescendant,\n useTabPanelDescendants,\n}\n\ninterface TabsContext extends Omit<\n UseTabsReturn,\n \"getRootProps\" | \"tabDescendants\" | \"tabPanelDescendants\"\n> {}\n\nconst [TabsContext, useTabsContext] = createContext<TabsContext>({\n name: \"TabsContext\",\n})\n\nexport { TabsContext, useTabsContext }\n\nexport interface UseTabsProps extends Omit<HTMLProps, \"onChange\"> {\n /**\n * The index of the selected tab.\n */\n defaultIndex?: number\n /**\n * The index of the selected tab.\n */\n index?: number\n /**\n * If `true`, the tabs will be manually activated and display its panel by pressing Space or Enter.\n *\n * If `false`, the tabs will be automatically activated and their panel is displayed when they receive focus.\n *\n * @default false\n */\n manual?: boolean\n /**\n * The orientation of the tabs.\n *\n * @default 'horizontal'\n */\n orientation?: Orientation\n /**\n * The callback invoked when the index changes.\n */\n onChange?: (index: number) => void\n}\n\nexport const useTabs = ({\n id,\n defaultIndex = 0,\n index: indexProp,\n manual = false,\n orientation = \"horizontal\",\n onChange,\n ...rest\n}: UseTabsProps = {}) => {\n const uuid = useId()\n const tabDescendants = useTabDescendants()\n const tabPanelDescendants = useTabPanelDescendants()\n const [index, setIndex] = useControllableState({\n defaultValue: defaultIndex,\n value: indexProp,\n onChange,\n })\n const [focusedIndex, setFocusedIndex] = useState<number>(index)\n const horizontal = orientation === \"horizontal\"\n\n id ??= uuid\n\n const onFocusFirstTab = useCallback(() => {\n const first = tabDescendants.enabledFirstValue()\n\n if (first) first.node.focus()\n }, [tabDescendants])\n\n const onFocusLastTab = useCallback(() => {\n const last = tabDescendants.enabledLastValue()\n\n if (last) last.node.focus()\n }, [tabDescendants])\n\n const onFocusNextTab = useCallback(() => {\n const next = tabDescendants.enabledNextValue(focusedIndex)\n\n if (next) next.node.focus()\n }, [tabDescendants, focusedIndex])\n\n const onFocusPrevTab = useCallback(() => {\n const prev = tabDescendants.enabledPrevValue(focusedIndex)\n\n if (prev) prev.node.focus()\n }, [tabDescendants, focusedIndex])\n\n const onKeyDown = useCallback(\n (ev: KeyboardEvent<HTMLDivElement>) => {\n runKeyAction(ev, {\n ArrowDown: !horizontal ? onFocusNextTab : undefined,\n ArrowLeft: horizontal ? onFocusPrevTab : undefined,\n ArrowRight: horizontal ? onFocusNextTab : undefined,\n ArrowUp: !horizontal ? onFocusPrevTab : undefined,\n End: onFocusLastTab,\n Home: onFocusFirstTab,\n })\n },\n [\n horizontal,\n onFocusNextTab,\n onFocusPrevTab,\n onFocusLastTab,\n onFocusFirstTab,\n ],\n )\n\n useUpdateEffect(() => {\n if (isUndefined(indexProp)) return\n\n setIndex(indexProp)\n setFocusedIndex(indexProp)\n }, [indexProp])\n\n const getRootProps: PropGetter = useCallback(\n ({ ref, ...props } = {}) => ({\n \"data-orientation\": orientation,\n ...rest,\n ...props,\n ref: mergeRefs(ref, rest.ref),\n }),\n [orientation, rest],\n )\n\n const getListProps: PropGetter = useCallback(\n (props = {}) => ({\n \"aria-orientation\": orientation,\n role: \"tablist\",\n ...props,\n onKeyDown: handlerAll(props.onKeyDown, onKeyDown),\n }),\n [orientation, onKeyDown],\n )\n\n return {\n id,\n focusedIndex,\n index,\n manual,\n orientation,\n setFocusedIndex,\n setIndex,\n tabDescendants,\n tabPanelDescendants,\n getListProps,\n getRootProps,\n }\n}\n\nexport type UseTabsReturn = ReturnType<typeof useTabs>\n\nexport interface UseTabProps extends HTMLProps<\"button\"> {\n /**\n * The index of the tab.\n */\n index: number\n}\n\nexport const useTab = ({ id, disabled, index, ...rest }: UseTabProps) => {\n const {\n id: rootId,\n index: selectedIndex,\n manual,\n orientation,\n setFocusedIndex,\n setIndex,\n } = useTabsContext()\n const { register } = useTabDescendant({ disabled })\n const tabPanelId = `${rootId}-panel-${index}`\n const selected = index === selectedIndex\n\n id ??= `${rootId}-tab-${index}`\n\n const onClick = useCallback(() => {\n if (!disabled) setIndex(index)\n }, [index, setIndex, disabled])\n\n const onFocus = useCallback(() => {\n if (disabled) return\n\n setFocusedIndex(index)\n\n if (!manual) setIndex(index)\n }, [setFocusedIndex, index, manual, disabled, setIndex])\n\n const getRootProps: PropGetter<\"button\"> = useCallback(\n ({ ref, ...props } = {}) => ({\n id,\n type: \"button\",\n \"aria-controls\": tabPanelId,\n \"aria-selected\": selected,\n \"data-orientation\": orientation,\n disabled,\n role: \"tab\",\n tabIndex: selected ? 0 : -1,\n ...rest,\n ...props,\n ref: mergeRefs(ref, register),\n onClick: handlerAll(props.onClick, rest.onClick, onClick),\n onFocus: handlerAll(props.onFocus, rest.onFocus, onFocus),\n }),\n [\n disabled,\n id,\n onClick,\n onFocus,\n orientation,\n register,\n rest,\n selected,\n tabPanelId,\n ],\n )\n\n return { index, selected, getRootProps }\n}\n\nexport type UseTabReturn = ReturnType<typeof useTab>\n\nexport interface UseTabPanelProps extends HTMLProps {\n /**\n * The index of the tab panel.\n */\n index: number\n}\n\nexport const useTabPanel = ({\n id,\n \"aria-labelledby\": ariaLabelledbyProp,\n index,\n ...rest\n}: UseTabPanelProps) => {\n const { id: rootId, index: selectedIndex, orientation } = useTabsContext()\n const { register } = useTabPanelDescendant()\n const tabId = `${rootId}-tab-${index}`\n const selected = index === selectedIndex\n\n id ??= `${rootId}-panel-${index}`\n\n const getRootProps: PropGetter = useCallback(\n ({ ref, \"aria-labelledby\": ariaLabelledby, ...props } = {}) => ({\n id,\n \"aria-labelledby\": cx(ariaLabelledbyProp, ariaLabelledby, tabId),\n \"data-orientation\": orientation,\n hidden: !selected,\n role: \"tabpanel\",\n tabIndex: selected ? 0 : -1,\n ...rest,\n ...props,\n ref: mergeRefs(ref, register),\n }),\n [id, ariaLabelledbyProp, orientation, register, rest, selected, tabId],\n )\n\n return { index, selected, getRootProps }\n}\n\nexport type UseTabPanelReturn = ReturnType<typeof useTabPanel>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"use-tabs.js","names":["createContext","getRootProps: PropGetter","getListProps: PropGetter"],"sources":["../../../../src/components/tabs/use-tabs.ts"],"sourcesContent":["\"use client\"\n\nimport type { KeyboardEvent } from \"react\"\nimport type { HTMLProps, Orientation, PropGetter } from \"../../core\"\nimport { useCallback, useId, useState } from \"react\"\nimport { mergeProps } from \"../../core\"\nimport { useControllableState } from \"../../hooks/use-controllable-state\"\nimport { createDescendants } from \"../../hooks/use-descendants\"\nimport {\n createContext,\n cx,\n handlerAll,\n isUndefined,\n mergeRefs,\n runKeyAction,\n useUpdateEffect,\n} from \"../../utils\"\n\nconst {\n DescendantsContext: TabDescendantsContext,\n useDescendant: useTabDescendant,\n useDescendants: useTabDescendants,\n} = createDescendants<HTMLButtonElement>()\n\nexport { TabDescendantsContext, useTabDescendant, useTabDescendants }\n\nconst {\n DescendantsContext: TabPanelDescendantsContext,\n useDescendant: useTabPanelDescendant,\n useDescendants: useTabPanelDescendants,\n} = createDescendants<HTMLDivElement>()\n\nexport {\n TabPanelDescendantsContext,\n useTabPanelDescendant,\n useTabPanelDescendants,\n}\n\ninterface TabsContext extends Omit<\n UseTabsReturn,\n \"getRootProps\" | \"tabDescendants\" | \"tabPanelDescendants\"\n> {}\n\nconst [TabsContext, useTabsContext] = createContext<TabsContext>({\n name: \"TabsContext\",\n})\n\nexport { TabsContext, useTabsContext }\n\nexport interface UseTabsProps extends Omit<HTMLProps, \"onChange\"> {\n /**\n * The index of the selected tab.\n */\n defaultIndex?: number\n /**\n * The index of the selected tab.\n */\n index?: number\n /**\n * If `true`, the tabs will be manually activated and display its panel by pressing Space or Enter.\n *\n * If `false`, the tabs will be automatically activated and their panel is displayed when they receive focus.\n *\n * @default false\n */\n manual?: boolean\n /**\n * The orientation of the tabs.\n *\n * @default 'horizontal'\n */\n orientation?: Orientation\n /**\n * The callback invoked when the index changes.\n */\n onChange?: (index: number) => void\n}\n\nexport const useTabs = ({\n id,\n defaultIndex = 0,\n index: indexProp,\n manual = false,\n orientation = \"horizontal\",\n onChange,\n ...rest\n}: UseTabsProps = {}) => {\n const uuid = useId()\n const tabDescendants = useTabDescendants()\n const tabPanelDescendants = useTabPanelDescendants()\n const [index, setIndex] = useControllableState({\n defaultValue: defaultIndex,\n value: indexProp,\n onChange,\n })\n const [focusedIndex, setFocusedIndex] = useState<number>(index)\n const horizontal = orientation === \"horizontal\"\n\n id ??= uuid\n\n const onFocusFirstTab = useCallback(() => {\n const first = tabDescendants.enabledFirstValue()\n\n if (first) first.node.focus()\n }, [tabDescendants])\n\n const onFocusLastTab = useCallback(() => {\n const last = tabDescendants.enabledLastValue()\n\n if (last) last.node.focus()\n }, [tabDescendants])\n\n const onFocusNextTab = useCallback(() => {\n const next = tabDescendants.enabledNextValue(focusedIndex)\n\n if (next) next.node.focus()\n }, [tabDescendants, focusedIndex])\n\n const onFocusPrevTab = useCallback(() => {\n const prev = tabDescendants.enabledPrevValue(focusedIndex)\n\n if (prev) prev.node.focus()\n }, [tabDescendants, focusedIndex])\n\n const onKeyDown = useCallback(\n (ev: KeyboardEvent<HTMLDivElement>) => {\n runKeyAction(ev, {\n ArrowDown: !horizontal ? onFocusNextTab : undefined,\n ArrowLeft: horizontal ? onFocusPrevTab : undefined,\n ArrowRight: horizontal ? onFocusNextTab : undefined,\n ArrowUp: !horizontal ? onFocusPrevTab : undefined,\n End: onFocusLastTab,\n Home: onFocusFirstTab,\n })\n },\n [\n horizontal,\n onFocusNextTab,\n onFocusPrevTab,\n onFocusLastTab,\n onFocusFirstTab,\n ],\n )\n\n useUpdateEffect(() => {\n if (isUndefined(indexProp)) return\n\n setIndex(indexProp)\n setFocusedIndex(indexProp)\n }, [indexProp])\n\n const getRootProps: PropGetter = useCallback(\n ({ ref, ...props } = {}) =>\n mergeProps({ \"data-orientation\": orientation }, rest, props, { ref })(),\n [orientation, rest],\n )\n\n const getListProps: PropGetter = useCallback(\n (props = {}) => ({\n \"aria-orientation\": orientation,\n role: \"tablist\",\n ...props,\n onKeyDown: handlerAll(props.onKeyDown, onKeyDown),\n }),\n [orientation, onKeyDown],\n )\n\n return {\n id,\n focusedIndex,\n index,\n manual,\n orientation,\n setFocusedIndex,\n setIndex,\n tabDescendants,\n tabPanelDescendants,\n getListProps,\n getRootProps,\n }\n}\n\nexport type UseTabsReturn = ReturnType<typeof useTabs>\n\nexport interface UseTabProps extends HTMLProps<\"button\"> {\n /**\n * The index of the tab.\n */\n index: number\n}\n\nexport const useTab = ({ id, disabled, index, ...rest }: UseTabProps) => {\n const {\n id: rootId,\n index: selectedIndex,\n manual,\n orientation,\n setFocusedIndex,\n setIndex,\n } = useTabsContext()\n const { register } = useTabDescendant({ disabled })\n const tabPanelId = `${rootId}-panel-${index}`\n const selected = index === selectedIndex\n\n id ??= `${rootId}-tab-${index}`\n\n const onClick = useCallback(() => {\n if (!disabled) setIndex(index)\n }, [index, setIndex, disabled])\n\n const onFocus = useCallback(() => {\n if (disabled) return\n\n setFocusedIndex(index)\n\n if (!manual) setIndex(index)\n }, [setFocusedIndex, index, manual, disabled, setIndex])\n\n const getRootProps: PropGetter<\"button\"> = useCallback(\n ({ ref, ...props } = {}) =>\n mergeProps(\n {\n id,\n type: \"button\",\n \"aria-controls\": tabPanelId,\n \"aria-selected\": selected,\n \"data-orientation\": orientation,\n disabled,\n role: \"tab\",\n tabIndex: selected ? 0 : -1,\n },\n rest,\n props,\n { ref: mergeRefs(ref, register) },\n {\n onClick: handlerAll(props.onClick, rest.onClick, onClick),\n onFocus: handlerAll(props.onFocus, rest.onFocus, onFocus),\n },\n )({ mergeEvent: false }),\n [\n disabled,\n id,\n onClick,\n onFocus,\n orientation,\n register,\n rest,\n selected,\n tabPanelId,\n ],\n )\n\n return { index, selected, getRootProps }\n}\n\nexport type UseTabReturn = ReturnType<typeof useTab>\n\nexport interface UseTabPanelProps extends HTMLProps {\n /**\n * The index of the tab panel.\n */\n index: number\n}\n\nexport const useTabPanel = ({\n id,\n \"aria-labelledby\": ariaLabelledbyProp,\n index,\n ...rest\n}: UseTabPanelProps) => {\n const { id: rootId, index: selectedIndex, orientation } = useTabsContext()\n const { register } = useTabPanelDescendant()\n const tabId = `${rootId}-tab-${index}`\n const selected = index === selectedIndex\n\n id ??= `${rootId}-panel-${index}`\n\n const getRootProps: PropGetter = useCallback(\n ({ ref, \"aria-labelledby\": ariaLabelledby, ...props } = {}) =>\n mergeProps(\n {\n id,\n \"aria-labelledby\": cx(ariaLabelledbyProp, ariaLabelledby, tabId),\n \"data-orientation\": orientation,\n hidden: !selected,\n role: \"tabpanel\",\n tabIndex: selected ? 0 : -1,\n },\n rest,\n props,\n { ref: mergeRefs(ref, register) },\n )(),\n [id, ariaLabelledbyProp, orientation, register, rest, selected, tabId],\n )\n\n return { index, selected, getRootProps }\n}\n\nexport type UseTabPanelReturn = ReturnType<typeof useTabPanel>\n"],"mappings":";;;;;;;;;;;;;;AAkBA,MAAM,EACJ,oBAAoB,uBACpB,eAAe,kBACf,gBAAgB,sBACd,mBAAsC;AAI1C,MAAM,EACJ,oBAAoB,4BACpB,eAAe,uBACf,gBAAgB,2BACd,mBAAmC;AAavC,MAAM,CAAC,aAAa,kBAAkBA,gBAA2B,EAC/D,MAAM,eACP,CAAC;AAiCF,MAAa,WAAW,EACtB,IACA,eAAe,GACf,OAAO,WACP,SAAS,OACT,cAAc,cACd,UACA,GAAG,SACa,EAAE,KAAK;CACvB,MAAM,OAAO,OAAO;CACpB,MAAM,iBAAiB,mBAAmB;CAC1C,MAAM,sBAAsB,wBAAwB;CACpD,MAAM,CAAC,OAAO,YAAY,qBAAqB;EAC7C,cAAc;EACd,OAAO;EACP;EACD,CAAC;CACF,MAAM,CAAC,cAAc,mBAAmB,SAAiB,MAAM;CAC/D,MAAM,aAAa,gBAAgB;AAEnC,QAAO;CAEP,MAAM,kBAAkB,kBAAkB;EACxC,MAAM,QAAQ,eAAe,mBAAmB;AAEhD,MAAI,MAAO,OAAM,KAAK,OAAO;IAC5B,CAAC,eAAe,CAAC;CAEpB,MAAM,iBAAiB,kBAAkB;EACvC,MAAM,OAAO,eAAe,kBAAkB;AAE9C,MAAI,KAAM,MAAK,KAAK,OAAO;IAC1B,CAAC,eAAe,CAAC;CAEpB,MAAM,iBAAiB,kBAAkB;EACvC,MAAM,OAAO,eAAe,iBAAiB,aAAa;AAE1D,MAAI,KAAM,MAAK,KAAK,OAAO;IAC1B,CAAC,gBAAgB,aAAa,CAAC;CAElC,MAAM,iBAAiB,kBAAkB;EACvC,MAAM,OAAO,eAAe,iBAAiB,aAAa;AAE1D,MAAI,KAAM,MAAK,KAAK,OAAO;IAC1B,CAAC,gBAAgB,aAAa,CAAC;CAElC,MAAM,YAAY,aACf,OAAsC;AACrC,eAAa,IAAI;GACf,WAAW,CAAC,aAAa,iBAAiB;GAC1C,WAAW,aAAa,iBAAiB;GACzC,YAAY,aAAa,iBAAiB;GAC1C,SAAS,CAAC,aAAa,iBAAiB;GACxC,KAAK;GACL,MAAM;GACP,CAAC;IAEJ;EACE;EACA;EACA;EACA;EACA;EACD,CACF;AAED,uBAAsB;AACpB,qCAAgB,UAAU,CAAE;AAE5B,WAAS,UAAU;AACnB,kBAAgB,UAAU;IACzB,CAAC,UAAU,CAAC;CAEf,MAAMC,eAA2B,aAC9B,EAAE,KAAK,GAAG,UAAU,EAAE,KACrB,WAAW,EAAE,oBAAoB,aAAa,EAAE,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,EACzE,CAAC,aAAa,KAAK,CACpB;CAED,MAAMC,eAA2B,aAC9B,QAAQ,EAAE,MAAM;EACf,oBAAoB;EACpB,MAAM;EACN,GAAG;EACH,yCAAsB,MAAM,WAAW,UAAU;EAClD,GACD,CAAC,aAAa,UAAU,CACzB;AAED,QAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD;;AAYH,MAAa,UAAU,EAAE,IAAI,UAAU,OAAO,GAAG,WAAwB;CACvE,MAAM,EACJ,IAAI,QACJ,OAAO,eACP,QACA,aACA,iBACA,aACE,gBAAgB;CACpB,MAAM,EAAE,aAAa,iBAAiB,EAAE,UAAU,CAAC;CACnD,MAAM,aAAa,GAAG,OAAO,SAAS;CACtC,MAAM,WAAW,UAAU;AAE3B,QAAO,GAAG,OAAO,OAAO;CAExB,MAAM,UAAU,kBAAkB;AAChC,MAAI,CAAC,SAAU,UAAS,MAAM;IAC7B;EAAC;EAAO;EAAU;EAAS,CAAC;CAE/B,MAAM,UAAU,kBAAkB;AAChC,MAAI,SAAU;AAEd,kBAAgB,MAAM;AAEtB,MAAI,CAAC,OAAQ,UAAS,MAAM;IAC3B;EAAC;EAAiB;EAAO;EAAQ;EAAU;EAAS,CAAC;AAoCxD,QAAO;EAAE;EAAO;EAAU,cAlCiB,aACxC,EAAE,KAAK,GAAG,UAAU,EAAE,KACrB,WACE;GACE;GACA,MAAM;GACN,iBAAiB;GACjB,iBAAiB;GACjB,oBAAoB;GACpB;GACA,MAAM;GACN,UAAU,WAAW,IAAI;GAC1B,EACD,MACA,OACA,EAAE,KAAK,UAAU,KAAK,SAAS,EAAE,EACjC;GACE,uCAAoB,MAAM,SAAS,KAAK,SAAS,QAAQ;GACzD,uCAAoB,MAAM,SAAS,KAAK,SAAS,QAAQ;GAC1D,CACF,CAAC,EAAE,YAAY,OAAO,CAAC,EAC1B;GACE;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACD,CACF;EAEuC;;AAY1C,MAAa,eAAe,EAC1B,IACA,mBAAmB,oBACnB,OACA,GAAG,WACmB;CACtB,MAAM,EAAE,IAAI,QAAQ,OAAO,eAAe,gBAAgB,gBAAgB;CAC1E,MAAM,EAAE,aAAa,uBAAuB;CAC5C,MAAM,QAAQ,GAAG,OAAO,OAAO;CAC/B,MAAM,WAAW,UAAU;AAE3B,QAAO,GAAG,OAAO,SAAS;AAoB1B,QAAO;EAAE;EAAO;EAAU,cAlBO,aAC9B,EAAE,KAAK,mBAAmB,gBAAgB,GAAG,UAAU,EAAE,KACxD,WACE;GACE;GACA,yCAAsB,oBAAoB,gBAAgB,MAAM;GAChE,oBAAoB;GACpB,QAAQ,CAAC;GACT,MAAM;GACN,UAAU,WAAW,IAAI;GAC1B,EACD,MACA,OACA,EAAE,KAAK,UAAU,KAAK,SAAS,EAAE,CAClC,EAAE,EACL;GAAC;GAAI;GAAoB;GAAa;GAAU;GAAM;GAAU;GAAM,CACvE;EAEuC"}
|
|
@@ -9,7 +9,7 @@ import "../collapse/index.js";
|
|
|
9
9
|
import "../../index.js";
|
|
10
10
|
import { AccordionStyle } from "./accordion.style.js";
|
|
11
11
|
import { UseAccordionItemProps, UseAccordionProps } from "./use-accordion.js";
|
|
12
|
-
import * as
|
|
12
|
+
import * as react99 from "react";
|
|
13
13
|
|
|
14
14
|
//#region src/components/accordion/accordion.d.ts
|
|
15
15
|
interface AccordionCallBackProps {
|
|
@@ -33,7 +33,7 @@ interface AccordionRootProps extends Omit<HTMLStyledProps, "onChange">, ThemePro
|
|
|
33
33
|
*/
|
|
34
34
|
items?: AccordionItem[];
|
|
35
35
|
}
|
|
36
|
-
declare const AccordionPropsContext:
|
|
36
|
+
declare const AccordionPropsContext: react99.Context<Partial<AccordionRootProps> | undefined>, useAccordionPropsContext: () => Partial<AccordionRootProps> | undefined;
|
|
37
37
|
/**
|
|
38
38
|
* `Accordion` is a component for a list that displays information in an expandable or collapsible manner.
|
|
39
39
|
*
|
|
@@ -3,7 +3,7 @@ import { CSSModifierObject, CSSPropObject, CSSSlotObject } from "../../core/css/
|
|
|
3
3
|
import "../../index.js";
|
|
4
4
|
|
|
5
5
|
//#region src/components/accordion/accordion.style.d.ts
|
|
6
|
-
declare const accordionStyle: ComponentSlotStyle<"button" | "panel" | "icon" | "
|
|
6
|
+
declare const accordionStyle: ComponentSlotStyle<"button" | "panel" | "icon" | "item" | "root", CSSPropObject<CSSSlotObject<"button" | "panel" | "icon" | "item" | "root">>, CSSModifierObject<CSSSlotObject<"button" | "panel" | "icon" | "item" | "root">>, {
|
|
7
7
|
panel: {
|
|
8
8
|
button: {
|
|
9
9
|
rounded: "l2";
|
|
@@ -2,10 +2,10 @@ import { HTMLProps, PropGetter } from "../../core/components/index.types.js";
|
|
|
2
2
|
import "../../core/index.js";
|
|
3
3
|
import { Descendant } from "../../hooks/use-descendants/index.js";
|
|
4
4
|
import "../../index.js";
|
|
5
|
-
import * as
|
|
5
|
+
import * as react87 from "react";
|
|
6
6
|
|
|
7
7
|
//#region src/components/accordion/use-accordion.d.ts
|
|
8
|
-
declare const AccordionDescendantsContext:
|
|
8
|
+
declare const AccordionDescendantsContext: react87.Context<{
|
|
9
9
|
active: (target?: HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null | undefined, options?: FocusOptions) => void;
|
|
10
10
|
count: (props?: Partial<{}> | undefined) => number;
|
|
11
11
|
destroy: () => void;
|
|
@@ -24,7 +24,7 @@ declare const AccordionDescendantsContext: react814.Context<{
|
|
|
24
24
|
prevValue: (indexOrNode: number | HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null, loop?: boolean, props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}> | undefined;
|
|
25
25
|
register: (props?: {
|
|
26
26
|
disabled?: boolean | ((node: HTMLButtonElement) => boolean) | undefined;
|
|
27
|
-
} | undefined) =>
|
|
27
|
+
} | undefined) => react87.RefCallback<HTMLButtonElement>;
|
|
28
28
|
unregister: (node?: HTMLButtonElement | null | undefined) => void;
|
|
29
29
|
value: (indexOrNode: number | HTMLButtonElement | null) => Descendant<HTMLButtonElement, {}> | undefined;
|
|
30
30
|
values: (props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}>[];
|
|
@@ -50,12 +50,12 @@ declare const AccordionDescendantsContext: react814.Context<{
|
|
|
50
50
|
prevValue: (indexOrNode: number | HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null, loop?: boolean, props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}> | undefined;
|
|
51
51
|
register: (props?: {
|
|
52
52
|
disabled?: boolean | ((node: HTMLButtonElement) => boolean) | undefined;
|
|
53
|
-
} | undefined) =>
|
|
53
|
+
} | undefined) => react87.RefCallback<HTMLButtonElement>;
|
|
54
54
|
unregister: (node?: HTMLButtonElement | null | undefined) => void;
|
|
55
55
|
value: (indexOrNode: number | HTMLButtonElement | null) => Descendant<HTMLButtonElement, {}> | undefined;
|
|
56
56
|
values: (props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}>[];
|
|
57
57
|
};
|
|
58
|
-
register:
|
|
58
|
+
register: react87.RefCallback<HTMLButtonElement>;
|
|
59
59
|
}, useAccordionDescendants: () => {
|
|
60
60
|
active: (target?: HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null | undefined, options?: FocusOptions) => void;
|
|
61
61
|
count: (props?: Partial<{}> | undefined) => number;
|
|
@@ -75,15 +75,15 @@ declare const AccordionDescendantsContext: react814.Context<{
|
|
|
75
75
|
prevValue: (indexOrNode: number | HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null, loop?: boolean, props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}> | undefined;
|
|
76
76
|
register: (props?: {
|
|
77
77
|
disabled?: boolean | ((node: HTMLButtonElement) => boolean) | undefined;
|
|
78
|
-
} | undefined) =>
|
|
78
|
+
} | undefined) => react87.RefCallback<HTMLButtonElement>;
|
|
79
79
|
unregister: (node?: HTMLButtonElement | null | undefined) => void;
|
|
80
80
|
value: (indexOrNode: number | HTMLButtonElement | null) => Descendant<HTMLButtonElement, {}> | undefined;
|
|
81
81
|
values: (props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}>[];
|
|
82
82
|
};
|
|
83
83
|
interface AccordionContext extends Omit<UseAccordionReturn, "descendants" | "getRootProps"> {}
|
|
84
|
-
declare const AccordionContext:
|
|
84
|
+
declare const AccordionContext: react87.Context<AccordionContext>, useAccordionContext: () => AccordionContext;
|
|
85
85
|
interface AccordionItemContext extends Omit<UseAccordionItemReturn, "getItemProps"> {}
|
|
86
|
-
declare const AccordionItemContext:
|
|
86
|
+
declare const AccordionItemContext: react87.Context<AccordionItemContext>, useAccordionItemContext: () => AccordionItemContext;
|
|
87
87
|
interface UseAccordionProps extends Omit<HTMLProps, "onChange"> {
|
|
88
88
|
/**
|
|
89
89
|
* The initial index(es) of the accordion item to expand.
|
|
@@ -137,7 +137,7 @@ declare const useAccordion: ({
|
|
|
137
137
|
prevValue: (indexOrNode: number | HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null, loop?: boolean, props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}> | undefined;
|
|
138
138
|
register: (props?: {
|
|
139
139
|
disabled?: boolean | ((node: HTMLButtonElement) => boolean) | undefined;
|
|
140
|
-
} | undefined) =>
|
|
140
|
+
} | undefined) => react87.RefCallback<HTMLButtonElement>;
|
|
141
141
|
unregister: (node?: HTMLButtonElement | null | undefined) => void;
|
|
142
142
|
value: (indexOrNode: number | HTMLButtonElement | null) => Descendant<HTMLButtonElement, {}> | undefined;
|
|
143
143
|
values: (props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}>[];
|
|
@@ -145,8 +145,8 @@ declare const useAccordion: ({
|
|
|
145
145
|
focusedIndex: number;
|
|
146
146
|
index: number | number[];
|
|
147
147
|
multiple: boolean | undefined;
|
|
148
|
-
setFocusedIndex:
|
|
149
|
-
setIndex:
|
|
148
|
+
setFocusedIndex: react87.Dispatch<react87.SetStateAction<number>>;
|
|
149
|
+
setIndex: react87.Dispatch<react87.SetStateAction<number | number[]>>;
|
|
150
150
|
toggle: boolean | undefined;
|
|
151
151
|
getRootProps: PropGetter<"div", undefined, undefined>;
|
|
152
152
|
};
|
|
@@ -7,7 +7,7 @@ import { UsePopupAnimationProps } from "../popover/popover.js";
|
|
|
7
7
|
import "../popover/index.js";
|
|
8
8
|
import { UseActionBarProps } from "./use-action-bar.js";
|
|
9
9
|
import "../../index.js";
|
|
10
|
-
import * as
|
|
10
|
+
import * as react86 from "react";
|
|
11
11
|
import { PropsWithChildren, ReactNode } from "react";
|
|
12
12
|
|
|
13
13
|
//#region src/components/action-bar/action-bar.d.ts
|
|
@@ -29,7 +29,7 @@ interface ActionBarRootProps extends Omit<HTMLStyledProps, "content">, ThemeProp
|
|
|
29
29
|
*/
|
|
30
30
|
onCloseComplete?: () => void;
|
|
31
31
|
}
|
|
32
|
-
declare const ActionBarPropsContext:
|
|
32
|
+
declare const ActionBarPropsContext: react86.Context<Partial<ActionBarRootProps> | undefined>, useActionBarPropsContext: () => Partial<ActionBarRootProps> | undefined;
|
|
33
33
|
/**
|
|
34
34
|
* `ActionBar` is a component that is used to display a bottom action bar with a set of actions.
|
|
35
35
|
*
|