114 lines
4.7 KiB
JavaScript
114 lines
4.7 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.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; |