Skip to content

Commit 8eaa277

Browse files
committed
use generics
1 parent 0cecc53 commit 8eaa277

22 files changed

Lines changed: 157 additions & 98 deletions

File tree

packages/x-charts-pro/src/ChartZoomSlider/internals/ChartAxisZoomSlider.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ interface ChartZoomSliderProps {
3333
export function ChartAxisZoomSlider({ axisDirection, axisId }: ChartZoomSliderProps) {
3434
const store = useStore();
3535
const drawingArea = useDrawingArea();
36-
const zoomData = useSelector(store, selectorChartAxisZoomData, axisId);
36+
const zoomData = useSelector(store, selectorChartAxisZoomData, [axisId]);
3737
const [showTooltip, setShowTooltip] = React.useState(false);
3838
const { xAxis } = useXAxes();
3939
const { yAxis } = useYAxes();

packages/x-charts-pro/src/ChartZoomSlider/internals/ChartAxisZoomSliderActiveTrack.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ export function ChartAxisZoomSliderActiveTrack({
6262
}: ChartAxisZoomSliderActiveTrackProps) {
6363
const { instance, svgRef } = useChartContext<[UseChartProZoomSignature]>();
6464
const store = useStore<[UseChartProZoomSignature]>();
65-
const axis = useSelector(store, selectorChartAxis, axisId);
65+
const axis = useSelector(store, selectorChartAxis, [axisId]);
6666
const drawingArea = useDrawingArea();
6767
const activePreviewRectRef = React.useRef<SVGRectElement>(null);
6868
const [startThumbEl, setStartThumbEl] = React.useState<SVGRectElement | null>(null);

packages/x-charts-pro/src/ChartsToolbarPro/ChartsToolbarPro.tsx

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
import { Toolbar, ChartsToolbarProps, ToolbarButton } from '@mui/x-charts/Toolbar';
22
import * as React from 'react';
3-
import { useChartContext, useSelector, useChartsSlots } from '@mui/x-charts/internals';
3+
import {
4+
useChartContext,
5+
useSelector,
6+
useChartsSlots,
7+
UseChartCartesianAxisSignature,
8+
} from '@mui/x-charts/internals';
49
import { useChartsLocalization } from '@mui/x-charts/hooks';
510
import { selectorChartZoomIsEnabled } from '../internals/plugins/useChartProZoom';
611
import { ChartsToolbarZoomInTrigger } from './ChartsToolbarZoomInTrigger';
@@ -14,7 +19,7 @@ export interface ChartsToolbarProProps extends ChartsToolbarProps {}
1419
*/
1520
export function ChartsToolbarPro(props: ChartsToolbarProProps) {
1621
const { slots, slotProps } = useChartsSlots<ChartsSlotsPro>();
17-
const { store } = useChartContext();
22+
const { store } = useChartContext<[UseChartCartesianAxisSignature]>();
1823
const { localeText } = useChartsLocalization();
1924
const isZoomEnabled = useSelector(store, selectorChartZoomIsEnabled);
2025

packages/x-charts-pro/src/ChartsToolbarPro/ChartsToolbarZoomInTrigger.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import {
77
ChartsSlotProps,
88
useSelector,
99
useChartsSlots,
10+
UseChartCartesianAxisSignature,
1011
} from '@mui/x-charts/internals';
1112
import { RenderProp, useComponentRenderer } from '@mui/x-internals/useComponentRenderer';
1213
import {
@@ -30,7 +31,8 @@ const ChartsToolbarZoomInTrigger = React.forwardRef<
3031
React.PropsWithChildren<ChartsToolbarZoomInTriggerProps>
3132
>(function ChartsToolbarZoomInTrigger({ render, ...other }, ref) {
3233
const { slots, slotProps } = useChartsSlots();
33-
const { instance, store } = useChartContext<[UseChartProZoomSignature]>();
34+
const { instance, store } =
35+
useChartContext<[UseChartCartesianAxisSignature, UseChartProZoomSignature]>();
3436
const disabled = useSelector(store, selectorChartCanZoomIn);
3537

3638
const element = useComponentRenderer(slots.baseButton, render, {

packages/x-charts-pro/src/ChartsToolbarPro/ChartsToolbarZoomOutTrigger.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import {
77
ChartsSlotProps,
88
useSelector,
99
useChartsSlots,
10+
UseChartCartesianAxisSignature,
1011
} from '@mui/x-charts/internals';
1112
import { RenderProp, useComponentRenderer } from '@mui/x-internals/useComponentRenderer';
1213
import {
@@ -30,7 +31,8 @@ const ChartsToolbarZoomOutTrigger = React.forwardRef<
3031
React.PropsWithChildren<ChartsToolbarZoomOutTriggerProps>
3132
>(function ChartsToolbarZoomOutTrigger({ render, ...other }, ref) {
3233
const { slots, slotProps } = useChartsSlots();
33-
const { instance, store } = useChartContext<[UseChartProZoomSignature]>();
34+
const { instance, store } =
35+
useChartContext<[UseChartCartesianAxisSignature, UseChartProZoomSignature]>();
3436
const disabled = useSelector(store, selectorChartCanZoomOut);
3537

3638
const element = useComponentRenderer(slots.baseButton, render, {

packages/x-charts-pro/src/internals/plugins/useChartProZoom/useChartProZoom.selectors.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@ export const selectorChartZoomState: ChartRootSelector<UseChartProZoomSignature>
1111
state.zoom;
1212

1313
export const selectorChartZoomIsInteracting = createSelector(
14-
selectorChartZoomState,
14+
[selectorChartZoomState],
1515
(zoom) => zoom.isInteracting,
1616
);
1717

1818
export const selectorChartZoomIsEnabled = createSelector(
19-
selectorChartZoomOptionsLookup,
19+
[selectorChartZoomOptionsLookup],
2020
(optionsLookup) => Object.keys(optionsLookup).length > 0,
2121
);
2222

packages/x-charts/src/LineChart/MarkPlot.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import { MarkElement, MarkElementProps } from './MarkElement';
1515
import { useChartContext } from '../context/ChartProvider';
1616
import { useItemHighlightedGetter, useXAxes, useYAxes } from '../hooks';
1717
import { useInternalIsZoomInteracting } from '../internals/plugins/featurePlugins/useChartCartesianAxis/useInternalIsZoomInteracting';
18+
import { UseChartCartesianAxisSignature } from '../internals/plugins/featurePlugins/useChartCartesianAxis';
1819
import { useSelector } from '../internals/store/useSelector';
1920

2021
export interface MarkPlotSlots {
@@ -69,7 +70,7 @@ function MarkPlot(props: MarkPlotProps) {
6970
const { yAxis, yAxisIds } = useYAxes();
7071

7172
const chartId = useChartId();
72-
const { instance, store } = useChartContext();
73+
const { instance, store } = useChartContext<[UseChartCartesianAxisSignature]>();
7374
const { isFaded, isHighlighted } = useItemHighlightedGetter();
7475
const xAxisInteractionIndex = useSelector(store, selectorChartsInteractionXAxisIndex);
7576

packages/x-charts/src/hooks/useAxis.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
'use client';
2+
import { UseChartCartesianAxisSignature } from '../internals/plugins/featurePlugins/useChartCartesianAxis';
23
import {
34
selectorChartXAxis,
45
selectorChartYAxis,
@@ -29,7 +30,7 @@ import {
2930
* @returns `{ xAxis, xAxisIds }` - The x-axes and their IDs.
3031
*/
3132
export function useXAxes() {
32-
const store = useStore();
33+
const store = useStore<[UseChartCartesianAxisSignature]>();
3334
const { axis: xAxis, axisIds: xAxisIds } = useSelector(store, selectorChartXAxis);
3435

3536
return { xAxis, xAxisIds };
@@ -46,7 +47,7 @@ export function useXAxes() {
4647
* @returns `{ yAxis, yAxisIds }` - The y-axes and their IDs.
4748
*/
4849
export function useYAxes() {
49-
const store = useStore();
50+
const store = useStore<[UseChartCartesianAxisSignature]>();
5051
const { axis: yAxis, axisIds: yAxisIds } = useSelector(store, selectorChartYAxis);
5152

5253
return { yAxis, yAxisIds };
@@ -58,7 +59,7 @@ export function useYAxes() {
5859
* @returns The X axis.
5960
*/
6061
export function useXAxis(axisId?: AxisId) {
61-
const store = useStore();
62+
const store = useStore<[UseChartCartesianAxisSignature]>();
6263
const { axis: xAxis, axisIds: xAxisIds } = useSelector(store, selectorChartXAxis);
6364

6465
const id = axisId ?? xAxisIds[0];
@@ -72,7 +73,7 @@ export function useXAxis(axisId?: AxisId) {
7273
* @returns The Y axis.
7374
*/
7475
export function useYAxis(axisId?: AxisId) {
75-
const store = useStore();
76+
const store = useStore<[UseChartCartesianAxisSignature]>();
7677
const { axis: yAxis, axisIds: yAxisIds } = useSelector(store, selectorChartYAxis);
7778

7879
const id = axisId ?? yAxisIds[0];

packages/x-charts/src/hooks/useItemHighlighted.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ type UseItemHighlightedParams = HighlightItemData | null;
3636
export function useItemHighlighted(item: UseItemHighlightedParams): UseItemHighlightedReturnType {
3737
const store = useStore<[UseChartHighlightSignature]>();
3838

39-
const isHighlighted = useSelector(store, selectorChartsIsHighlighted, item);
40-
const isFaded = useSelector(store, selectorChartsIsFaded, item);
39+
const isHighlighted = useSelector(store, selectorChartsIsHighlighted, [item]);
40+
const isFaded = useSelector(store, selectorChartsIsFaded, [item]);
4141

4242
return { isHighlighted, isFaded: !isHighlighted && isFaded };
4343
}

packages/x-charts/src/internals/createSeriesSelectorOfType.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,13 +48,13 @@ export function createSeriesSelectorsOfType<T extends keyof ChartsSeriesConfig>(
4848
return (ids?: SeriesId | SeriesId[]) => {
4949
const store = useStore();
5050

51-
return useSelector(store, selectorSeriesWithIds, ids, fastArrayCompare);
51+
return useSelector(store, selectorSeriesWithIds, [ids], fastArrayCompare);
5252
};
5353
}
5454

5555
export function createAllSeriesSelectorOfType<T extends keyof ChartsSeriesConfig>(seriesType: T) {
5656
const selectorSeries = createSelector(
57-
selectorChartSeriesProcessed,
57+
[selectorChartSeriesProcessed],
5858
(processedSeries) => processedSeries[seriesType],
5959
);
6060

0 commit comments

Comments
 (0)