UNPKG

@mui/x-charts

Version:

The community edition of MUI X Charts components.

72 lines (71 loc) 2.35 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default; Object.defineProperty(exports, "__esModule", { value: true }); exports.useChartHighlight = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _useAssertModelConsistency = require("@mui/x-internals/useAssertModelConsistency"); var _useEventCallback = _interopRequireDefault(require("@mui/utils/useEventCallback")); var _useEnhancedEffect = _interopRequireDefault(require("@mui/utils/useEnhancedEffect")); var _fastObjectShallowCompare = require("@mui/x-internals/fastObjectShallowCompare"); const useChartHighlight = ({ store, params }) => { (0, _useAssertModelConsistency.useAssertModelConsistency)({ warningPrefix: 'MUI X Charts', componentName: 'Chart', propName: 'highlightedItem', controlled: params.highlightedItem, defaultValue: null }); (0, _useEnhancedEffect.default)(() => { store.update(prevState => prevState.highlight.item === params.highlightedItem ? prevState : (0, _extends2.default)({}, prevState, { highlight: (0, _extends2.default)({}, prevState.highlight, { item: params.highlightedItem }) })); }, [store, params.highlightedItem]); const clearHighlight = (0, _useEventCallback.default)(() => { params.onHighlightChange?.(null); store.update(prev => (0, _extends2.default)({}, prev, { highlight: { item: null } })); }); const setHighlight = (0, _useEventCallback.default)(newItem => { const prevItem = store.getSnapshot().highlight.item; if ((0, _fastObjectShallowCompare.fastObjectShallowCompare)(prevItem, newItem)) { return; } params.onHighlightChange?.(newItem); store.update(prev => (0, _extends2.default)({}, prev, { highlight: { item: newItem } })); }); return { instance: { clearHighlight, setHighlight } }; }; exports.useChartHighlight = useChartHighlight; useChartHighlight.getDefaultizedParams = ({ params }) => (0, _extends2.default)({}, params, { highlightedItem: params.highlightedItem ?? null }); useChartHighlight.getInitialState = params => ({ highlight: { item: params.highlightedItem } }); useChartHighlight.params = { highlightedItem: true, onHighlightChange: true };