UNPKG

@mui/x-charts

Version:

The community edition of MUI X Charts components.

96 lines (95 loc) 2.75 kB
"use strict"; 'use client'; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default; Object.defineProperty(exports, "__esModule", { value: true }); exports.getInteractionItemProps = getInteractionItemProps; exports.useInteractionItemProps = exports.useInteractionAllItemProps = void 0; var React = _interopRequireWildcard(require("react")); var _ChartProvider = require("../context/ChartProvider"); function onPointerDown(event) { if ('hasPointerCapture' in event.currentTarget && event.currentTarget.hasPointerCapture(event.pointerId)) { event.currentTarget.releasePointerCapture(event.pointerId); } } const useInteractionItemProps = (data, skip) => { const { instance } = (0, _ChartProvider.useChartContext)(); const interactionActive = React.useRef(false); const onPointerEnter = React.useCallback(() => { interactionActive.current = true; instance.setItemInteraction({ type: data.type, seriesId: data.seriesId, dataIndex: data.dataIndex }); instance.setHighlight({ seriesId: data.seriesId, dataIndex: data.dataIndex }); }, [instance, data.type, data.seriesId, data.dataIndex]); const onPointerLeave = React.useCallback(() => { interactionActive.current = false; instance.removeItemInteraction({ type: data.type, seriesId: data.seriesId, dataIndex: data.dataIndex }); instance.clearHighlight(); }, [instance, data.type, data.seriesId, data.dataIndex]); React.useEffect(() => { return () => { /* Clean up state if this item is unmounted while active. */ if (interactionActive.current) { onPointerLeave(); } }; }, [onPointerLeave]); if (skip) { return {}; } return { onPointerEnter, onPointerLeave, onPointerDown }; }; exports.useInteractionItemProps = useInteractionItemProps; const useInteractionAllItemProps = (data, skip) => { const { instance } = (0, _ChartProvider.useChartContext)(); const results = React.useMemo(() => { return data.map(item => { return skip ? {} : getInteractionItemProps(instance, item); }); }, [data, instance, skip]); return results; }; exports.useInteractionAllItemProps = useInteractionAllItemProps; function getInteractionItemProps(instance, item) { function onPointerEnter() { if (!item) { return; } instance.setItemInteraction(item); instance.setHighlight({ seriesId: item.seriesId, dataIndex: item.dataIndex }); } function onPointerLeave() { if (!item) { return; } instance.removeItemInteraction(item); instance.clearHighlight(); } return { onPointerEnter, onPointerLeave, onPointerDown }; }