Files
ETB/ETB-FrontEnd/node_modules/@mui/x-charts/hooks/useInteractionItemProps.js
Iliyan Angelov 306b20e24a Frontend start
2025-09-14 00:54:48 +03:00

84 lines
2.5 KiB
JavaScript

"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 = exports.useInteractionAllItemProps = void 0;
var React = _interopRequireWildcard(require("react"));
var _useEventCallback = _interopRequireDefault(require("@mui/utils/useEventCallback"));
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 = (0, _useEventCallback.default)(() => {
interactionActive.current = true;
instance.setItemInteraction(data);
instance.setHighlight(data);
});
const onPointerLeave = (0, _useEventCallback.default)(() => {
interactionActive.current = false;
instance.removeItemInteraction(data);
instance.clearHighlight();
});
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(item);
}
function onPointerLeave() {
if (!item) {
return;
}
instance.removeItemInteraction(item);
instance.clearHighlight();
}
return {
onPointerEnter,
onPointerLeave,
onPointerDown
};
}