UNPKG

@mui/x-charts

Version:

The community edition of MUI X Charts components.

114 lines (113 loc) 4.45 kB
"use strict"; 'use client'; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default; Object.defineProperty(exports, "__esModule", { value: true }); exports.BatchBarPlot = BatchBarPlot; var React = _interopRequireWildcard(require("react")); var _barClasses = require("../barClasses"); var _useChartsContext = require("../../context/ChartsProvider/useChartsContext"); var _useChartHighlight = require("../../internals/plugins/featurePlugins/useChartHighlight"); var _useRegisterItemClickHandlers = require("../useRegisterItemClickHandlers"); var _useCreateBarPaths = require("./useCreateBarPaths"); var _BarGroup = require("./BarGroup"); var _jsxRuntime = require("react/jsx-runtime"); function BatchBarPlot({ completedData, borderRadius = 0, onItemClick, skipAnimation = false }) { (0, _useRegisterItemClickHandlers.useRegisterItemClickHandlers)(onItemClick); return /*#__PURE__*/(0, _jsxRuntime.jsx)(React.Fragment, { children: completedData.map(series => /*#__PURE__*/(0, _jsxRuntime.jsx)(SeriesBatchPlot, { series: series, borderRadius: borderRadius, skipAnimation: skipAnimation }, series.seriesId)) }); } const MemoFadedHighlightedBars = /*#__PURE__*/React.memo(FadedHighlightedBars); if (process.env.NODE_ENV !== "production") MemoFadedHighlightedBars.displayName = "MemoFadedHighlightedBars"; function SeriesBatchPlot({ series, borderRadius, skipAnimation }) { const classes = (0, _barClasses.useUtilityClasses)(); const { store } = (0, _useChartsContext.useChartsContext)(); const isSeriesHighlighted = store.use(_useChartHighlight.selectorChartIsSeriesHighlighted, series.seriesId); const isSeriesFaded = store.use(_useChartHighlight.selectorChartIsSeriesFaded, series.seriesId); return /*#__PURE__*/(0, _jsxRuntime.jsxs)(React.Fragment, { children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_BarGroup.BarGroup, { className: classes.series, "data-series": series.seriesId, layout: series.layout, xOrigin: series.xOrigin, yOrigin: series.yOrigin, skipAnimation: skipAnimation, "data-faded": isSeriesFaded || undefined, "data-highlighted": isSeriesHighlighted || undefined, children: /*#__PURE__*/(0, _jsxRuntime.jsx)(BatchBarSeriesPlot, { processedSeries: series, borderRadius: borderRadius }) }), /*#__PURE__*/(0, _jsxRuntime.jsx)(MemoFadedHighlightedBars, { processedSeries: series, borderRadius: borderRadius })] }); } function BatchBarSeriesPlot({ processedSeries, borderRadius }) { const paths = (0, _useCreateBarPaths.useCreateBarPaths)(processedSeries, borderRadius); const children = []; let i = 0; for (const [fill, dArray] of paths.entries()) { for (const d of dArray) { children.push(/*#__PURE__*/(0, _jsxRuntime.jsx)("path", { fill: fill, d: d }, i)); i += 1; } } return /*#__PURE__*/(0, _jsxRuntime.jsx)(React.Fragment, { children: children }); } function FadedHighlightedBars({ processedSeries, borderRadius }) { const { store } = (0, _useChartsContext.useChartsContext)(); const seriesHighlightedDataIndex = store.use(_useChartHighlight.selectorChartSeriesHighlightedItem, processedSeries.seriesId); const seriesUnfadedDataIndex = store.use(_useChartHighlight.selectorChartSeriesUnfadedItem, processedSeries.seriesId); const seriesHighlightedItem = seriesHighlightedDataIndex != null ? processedSeries.data.find(v => v.dataIndex === seriesHighlightedDataIndex) || null : null; const seriesUnfadedItem = seriesUnfadedDataIndex != null ? processedSeries.data.find(v => v.dataIndex === seriesUnfadedDataIndex) || null : null; const siblings = []; if (seriesHighlightedItem != null) { siblings.push(/*#__PURE__*/(0, _jsxRuntime.jsx)("path", { fill: seriesHighlightedItem.color, filter: "brightness(120%)", "data-highlighted": true, d: (0, _useCreateBarPaths.createPath)(seriesHighlightedItem, borderRadius) }, `highlighted-${processedSeries.seriesId}`)); } if (seriesUnfadedItem != null) { siblings.push(/*#__PURE__*/(0, _jsxRuntime.jsx)("path", { fill: seriesUnfadedItem.color, d: (0, _useCreateBarPaths.createPath)(seriesUnfadedItem, borderRadius) }, `unfaded-${seriesUnfadedItem.seriesId}`)); } return /*#__PURE__*/(0, _jsxRuntime.jsx)(React.Fragment, { children: siblings }); }