UNPKG

@mui/x-charts

Version:

The community edition of MUI X Charts components.

39 lines (38 loc) 2.53 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default; Object.defineProperty(exports, "__esModule", { value: true }); exports.useRadarRotationIndex = useRadarRotationIndex; var _formatErrorMessage2 = _interopRequireDefault(require("@mui/x-internals/formatErrorMessage")); var React = _interopRequireWildcard(require("react")); var _useChartPolarAxis = require("../../internals/plugins/featurePlugins/useChartPolarAxis"); var _getChartPoint = require("../../internals/getChartPoint"); var _coordinateTransformation = require("../../internals/plugins/featurePlugins/useChartPolarAxis/coordinateTransformation"); var _getAxisIndex = require("../../internals/plugins/featurePlugins/useChartPolarAxis/getAxisIndex"); var _useStore = require("../../internals/store/useStore"); var _useChartsLayerContainerRef = require("../../hooks/useChartsLayerContainerRef"); var _useAxis = require("../../hooks/useAxis"); /** * This hook provides a function that from pointer event returns the rotation index. * @return {(event: { clientX: number; clientY: number }) => number | null} rotationIndexGetter Returns the rotation data index. */ function useRadarRotationIndex() { const chartsLayerContainerRef = (0, _useChartsLayerContainerRef.useChartsLayerContainerRef)(); const store = (0, _useStore.useStore)(); const rotationAxis = (0, _useAxis.useRotationAxis)(); const center = store.use(_useChartPolarAxis.selectorChartPolarCenter); const rotationIndexGetter = React.useCallback(function rotationIndexGetter(event) { const element = chartsLayerContainerRef.current; if (!element || !rotationAxis) { // Should never append throw new Error(process.env.NODE_ENV !== "production" ? `MUI X Charts: The ${!element ? 'SVG element' : 'rotation axis'} was not found. ` + 'This is required to compute the radar chart dataIndex. ' + 'Ensure the radar chart is properly initialized with all required axes.' : (0, _formatErrorMessage2.default)(28, !element ? 'SVG element' : 'rotation axis')); } const svgPoint = (0, _getChartPoint.getChartPoint)(element, event); const rotation = (0, _coordinateTransformation.generateSvg2rotation)(center)(svgPoint.x, svgPoint.y); const rotationIndex = (0, _getAxisIndex.getAxisIndex)(rotationAxis, rotation); return rotationIndex; }, [center, rotationAxis, chartsLayerContainerRef]); return rotationIndexGetter; }