UNPKG

@mui/x-charts

Version:

The community edition of MUI X Charts components.

136 lines (131 loc) 4.07 kB
'use client'; import _extends from "@babel/runtime/helpers/esm/extends"; import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose"; const _excluded = ["id", "classes", "color", "gradientId", "slots", "slotProps", "onClick"]; import * as React from 'react'; import PropTypes from 'prop-types'; import composeClasses from '@mui/utils/composeClasses'; import useSlotProps from '@mui/utils/useSlotProps'; import generateUtilityClass from '@mui/utils/generateUtilityClass'; import generateUtilityClasses from '@mui/utils/generateUtilityClasses'; import { useInteractionItemProps } from "../hooks/useInteractionItemProps.js"; import { useItemHighlighted } from "../hooks/useItemHighlighted.js"; import { AnimatedArea } from "./AnimatedArea.js"; import { useUtilityClasses as useLineUtilityClasses } from "./lineClasses.js"; /** * @deprecated Use `LineClasses` instead. */ /** * @deprecated Use `LineClassKey` instead. */ import { jsx as _jsx } from "react/jsx-runtime"; /** * @deprecated Use `getLineUtilityClass` instead. */ export function getAreaElementUtilityClass(slot) { return generateUtilityClass('MuiAreaElement', slot); } /** * @deprecated Use `lineClasses` instead. */ export const areaElementClasses = generateUtilityClasses('MuiAreaElement', ['root', 'highlighted', 'faded', 'series']); /** * @deprecated Use `useUtilityClasses` instead. */ const useDeprecatedUtilityClasses = ownerState => { const { classes, id, isFaded, isHighlighted } = ownerState; const slots = { root: ['root', `series-${id}`, isHighlighted && 'highlighted', isFaded && 'faded'] }; return composeClasses(slots, getAreaElementUtilityClass, classes); }; /** * Demos: * * - [Lines](https://mui.com/x/react-charts/lines/) * - [Areas demonstration](https://mui.com/x/react-charts/areas-demo/) * * API: * * - [AreaElement API](https://mui.com/x/api/charts/area-element/) */ function AreaElement(props) { const { id, classes: innerClasses, color, gradientId, slots, slotProps, onClick } = props, other = _objectWithoutPropertiesLoose(props, _excluded); const interactionProps = useInteractionItemProps({ type: 'line', seriesId: id }); const { isFaded, isHighlighted } = useItemHighlighted({ seriesId: id }); const ownerState = { id, classes: innerClasses, color, gradientId, isFaded, isHighlighted }; const classes = useLineUtilityClasses(); const deprecatedClasses = useDeprecatedUtilityClasses(ownerState); const Area = slots?.area ?? AnimatedArea; const areaProps = useSlotProps({ elementType: Area, externalSlotProps: slotProps?.area, additionalProps: _extends({}, interactionProps, { onClick, cursor: onClick ? 'pointer' : 'unset', 'data-highlighted': isHighlighted || undefined, 'data-faded': isFaded || undefined, 'data-series-id': id, 'data-series': id }), className: `${classes.area} ${deprecatedClasses.root}`, ownerState }); return /*#__PURE__*/_jsx(Area, _extends({}, other, areaProps)); } process.env.NODE_ENV !== "production" ? AreaElement.propTypes = { // ----------------------------- Warning -------------------------------- // | These PropTypes are generated from the TypeScript type definitions | // | To update them edit the TypeScript types and run "pnpm proptypes" | // ---------------------------------------------------------------------- classes: PropTypes.object, color: PropTypes.string.isRequired, d: PropTypes.string.isRequired, gradientId: PropTypes.string, id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired, /** * If `true`, animations are skipped. * @default false */ skipAnimation: PropTypes.bool, /** * The props used for each component slot. * @default {} */ slotProps: PropTypes.object, /** * Overridable component slots. * @default {} */ slots: PropTypes.object } : void 0; export { AreaElement };