UNPKG

@mui/x-charts

Version:

The community edition of MUI X Charts components.

64 lines 1.84 kB
import _extends from "@babel/runtime/helpers/esm/extends"; import { useAssertModelConsistency } from '@mui/x-internals/useAssertModelConsistency'; import useEventCallback from '@mui/utils/useEventCallback'; import useEnhancedEffect from '@mui/utils/useEnhancedEffect'; import { fastObjectShallowCompare } from '@mui/x-internals/fastObjectShallowCompare'; export const useChartHighlight = ({ store, params }) => { useAssertModelConsistency({ warningPrefix: 'MUI X Charts', componentName: 'Chart', propName: 'highlightedItem', controlled: params.highlightedItem, defaultValue: null }); useEnhancedEffect(() => { store.update(prevState => prevState.highlight.item === params.highlightedItem ? prevState : _extends({}, prevState, { highlight: _extends({}, prevState.highlight, { item: params.highlightedItem }) })); }, [store, params.highlightedItem]); const clearHighlight = useEventCallback(() => { params.onHighlightChange?.(null); store.update(prev => _extends({}, prev, { highlight: { item: null } })); }); const setHighlight = useEventCallback(newItem => { const prevItem = store.getSnapshot().highlight.item; if (fastObjectShallowCompare(prevItem, newItem)) { return; } params.onHighlightChange?.(newItem); store.update(prev => _extends({}, prev, { highlight: { item: newItem } })); }); return { instance: { clearHighlight, setHighlight } }; }; useChartHighlight.getDefaultizedParams = ({ params }) => _extends({}, params, { highlightedItem: params.highlightedItem ?? null }); useChartHighlight.getInitialState = params => ({ highlight: { item: params.highlightedItem } }); useChartHighlight.params = { highlightedItem: true, onHighlightChange: true };