@mui/x-charts
Version:
The community edition of the Charts components (MUI X).
44 lines • 1.17 kB
JavaScript
import _extends from "@babel/runtime/helpers/esm/extends";
import useEventCallback from '@mui/utils/useEventCallback';
import useEnhancedEffect from '@mui/utils/useEnhancedEffect';
export const useChartHighlight = ({
store,
params,
models
}) => {
useEnhancedEffect(() => {
store.update(prevState => _extends({}, prevState, {
highlight: _extends({}, prevState.highlight, {
item: models.highlightedItem.value
})
}));
}, [store, models.highlightedItem.value]);
const clearHighlight = useEventCallback(() => {
params.onHighlightChange?.(null);
models.highlightedItem.setControlledValue(null);
});
const setHighlight = useEventCallback(newItem => {
params.onHighlightChange?.(newItem);
models.highlightedItem.setControlledValue(newItem);
});
return {
instance: {
clearHighlight,
setHighlight
}
};
};
useChartHighlight.models = {
highlightedItem: {
getDefaultValue: () => null
}
};
useChartHighlight.getInitialState = params => ({
highlight: {
item: params.highlightedItem ?? null
}
});
useChartHighlight.params = {
highlightedItem: true,
onHighlightChange: true
};