UNPKG

@mui/x-charts

Version:

The community edition of MUI X Charts components.

71 lines (70 loc) 2.22 kB
"use strict"; 'use client'; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default; Object.defineProperty(exports, "__esModule", { value: true }); exports.getInteractionItemProps = getInteractionItemProps; exports.useInteractionItemProps = void 0; var React = _interopRequireWildcard(require("react")); var _useEventCallback = _interopRequireDefault(require("@mui/utils/useEventCallback")); var _ChartsProvider = require("../context/ChartsProvider"); function onPointerDown(event) { if ('hasPointerCapture' in event.currentTarget && event.currentTarget.hasPointerCapture(event.pointerId)) { event.currentTarget.releasePointerCapture(event.pointerId); } } const useInteractionItemProps = data => { const { instance } = (0, _ChartsProvider.useChartsContext)(); const interactionActive = React.useRef(false); const onPointerEnter = (0, _useEventCallback.default)(() => { interactionActive.current = true; instance.setLastUpdateSource('pointer'); instance.setTooltipItem(data); instance.setHighlight(data); }); const onPointerLeave = (0, _useEventCallback.default)(() => { interactionActive.current = false; instance.removeTooltipItem(data); instance.clearHighlight(); }); React.useEffect(() => { return () => { /* Clean up state if this item is unmounted while active. */ if (interactionActive.current) { onPointerLeave(); } }; }, [onPointerLeave]); return React.useMemo(() => ({ onPointerEnter, onPointerLeave, onPointerDown }), [onPointerEnter, onPointerLeave]); }; exports.useInteractionItemProps = useInteractionItemProps; function getInteractionItemProps(instance, item) { function onPointerEnter() { if (!item) { return; } instance.setLastUpdateSource('pointer'); instance.setTooltipItem(item); instance.setHighlight(item); } function onPointerLeave() { if (!item) { return; } instance.removeTooltipItem(item); instance.clearHighlight(); } return { onPointerEnter, onPointerLeave, onPointerDown }; }