UNPKG

@mui/x-charts

Version:

The community edition of MUI X Charts components.

77 lines (75 loc) 2.7 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default; Object.defineProperty(exports, "__esModule", { value: true }); exports.useChartTooltip = 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 useChartTooltip = ({ store, params }) => { (0, _useAssertModelConsistency.useAssertModelConsistency)({ warningPrefix: 'MUI X Charts', componentName: 'Chart', propName: 'tooltipItem', controlled: params.tooltipItem, defaultValue: null }); (0, _useEnhancedEffect.default)(() => { if (store.state.tooltip.item !== params.tooltipItem) { store.set('tooltip', (0, _extends2.default)({}, store.state.tooltip, { item: params.tooltipItem })); } }, [store, params.tooltipItem]); const removeTooltipItem = (0, _useEventCallback.default)(function removeTooltipItem(itemToRemove) { const prevItem = store.state.tooltip.item; if (prevItem === null) { return; // Already null, nothing to do } if (!itemToRemove || (0, _fastObjectShallowCompare.fastObjectShallowCompare)(prevItem, itemToRemove)) { // Remove the item is either // - no item provided, so we unconditionally remove it // - the provided item matches the current one params.onTooltipItemChange?.(null); if (!store.state.tooltip.itemIsControlled) { store.set('tooltip', (0, _extends2.default)({}, store.state.tooltip, { item: null })); } return; } }); const setTooltipItem = (0, _useEventCallback.default)(function setTooltipItem(newItem) { if (!(0, _fastObjectShallowCompare.fastObjectShallowCompare)(store.state.tooltip.item, newItem)) { params.onTooltipItemChange?.(newItem); if (!store.state.tooltip.itemIsControlled) { store.set('tooltip', (0, _extends2.default)({}, store.state.tooltip, { item: newItem })); } } }); return { instance: { setTooltipItem, removeTooltipItem } }; }; exports.useChartTooltip = useChartTooltip; useChartTooltip.getInitialState = params => ({ tooltip: { itemIsControlled: params.tooltipItem !== undefined, item: params.tooltipItem ?? null } }); useChartTooltip.params = { tooltipItem: true, onTooltipItemChange: true };