UNPKG

@mui/x-charts

Version:

The community edition of MUI X Charts components.

114 lines (113 loc) 4.82 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.Scatter = Scatter; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose")); var React = _interopRequireWildcard(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _useSlotProps2 = _interopRequireDefault(require("@mui/utils/useSlotProps")); var _useInteractionItemProps = require("../hooks/useInteractionItemProps"); var _useStore = require("../internals/store/useStore"); var _useSelector = require("../internals/store/useSelector"); var _useItemHighlightedGetter = require("../hooks/useItemHighlightedGetter"); var _useChartVoronoi = require("../internals/plugins/featurePlugins/useChartVoronoi"); var _ScatterMarker = require("./ScatterMarker"); var _scatterClasses = require("./scatterClasses"); var _useScatterPlotData = require("./useScatterPlotData"); var _ChartProvider = require("../context/ChartProvider"); var _jsxRuntime = require("react/jsx-runtime"); const _excluded = ["ownerState"]; /** * Demos: * * - [Scatter](https://mui.com/x/react-charts/scatter/) * - [Scatter demonstration](https://mui.com/x/react-charts/scatter-demo/) * * API: * * - [Scatter API](https://mui.com/x/api/charts/scatter/) */ function Scatter(props) { const { series, xScale, yScale, color, colorGetter, onItemClick, classes: inClasses, slots, slotProps } = props; const { instance } = (0, _ChartProvider.useChartContext)(); const store = (0, _useStore.useStore)(); const isVoronoiEnabled = (0, _useSelector.useSelector)(store, _useChartVoronoi.selectorChartsVoronoiIsVoronoiEnabled); const skipInteractionHandlers = isVoronoiEnabled || series.disableHover; const { isFaded, isHighlighted } = (0, _useItemHighlightedGetter.useItemHighlightedGetter)(); const scatterPlotData = (0, _useScatterPlotData.useScatterPlotData)(series, xScale, yScale, instance.isPointInside); const Marker = slots?.marker ?? _ScatterMarker.ScatterMarker; const _useSlotProps = (0, _useSlotProps2.default)({ elementType: Marker, externalSlotProps: slotProps?.marker, additionalProps: { seriesId: series.id, size: series.markerSize }, ownerState: {} }), markerProps = (0, _objectWithoutPropertiesLoose2.default)(_useSlotProps, _excluded); const classes = (0, _scatterClasses.useUtilityClasses)(inClasses); return /*#__PURE__*/(0, _jsxRuntime.jsx)("g", { "data-series": series.id, className: classes.root, children: scatterPlotData.map((dataPoint, i) => { const isItemHighlighted = isHighlighted(dataPoint); const isItemFaded = !isItemHighlighted && isFaded(dataPoint); return /*#__PURE__*/(0, _jsxRuntime.jsx)(Marker, (0, _extends2.default)({ dataIndex: dataPoint.dataIndex, color: colorGetter ? colorGetter(i) : color, isHighlighted: isItemHighlighted, isFaded: isItemFaded, x: dataPoint.x, y: dataPoint.y, onClick: onItemClick && (event => onItemClick(event, { type: 'scatter', seriesId: series.id, dataIndex: dataPoint.dataIndex })), "data-highlighted": isItemHighlighted || undefined, "data-faded": isItemFaded || undefined }, skipInteractionHandlers ? undefined : (0, _useInteractionItemProps.getInteractionItemProps)(instance, dataPoint), markerProps), dataPoint.id ?? dataPoint.dataIndex); }) }); } process.env.NODE_ENV !== "production" ? Scatter.propTypes = { // ----------------------------- Warning -------------------------------- // | These PropTypes are generated from the TypeScript type definitions | // | To update them edit the TypeScript types and run "pnpm proptypes" | // ---------------------------------------------------------------------- classes: _propTypes.default.object, color: _propTypes.default.string.isRequired, colorGetter: _propTypes.default.func, /** * Callback fired when clicking on a scatter item. * @param {MouseEvent} event Mouse event recorded on the `<svg/>` element. * @param {ScatterItemIdentifier} scatterItemIdentifier The scatter item identifier. */ onItemClick: _propTypes.default.func, series: _propTypes.default.object.isRequired, slotProps: _propTypes.default.object, slots: _propTypes.default.object, xScale: _propTypes.default.func.isRequired, yScale: _propTypes.default.func.isRequired } : void 0;