import * as React from 'react'; import { PureComponent, ReactElement, ReactNode, SVGProps } from 'react'; import { Props as SectorProps } from '../shape/Sector'; import { ActiveShape, AnimationDuration, AnimationTiming, ChartOffset, Coordinate, DataKey, GeometrySector, LegendType, PresentationAttributesAdaptChildEvent, TooltipType } from '../util/types'; import { TooltipPayload } from '../state/tooltipSlice'; interface PieDef { /** The abscissa of pole in polar coordinate */ cx?: number | string; /** The ordinate of pole in polar coordinate */ cy?: number | string; /** The start angle of first sector */ startAngle?: number; /** The end angle of last sector */ endAngle?: number; paddingAngle?: number; /** The inner radius of sectors */ innerRadius?: number | string; /** The outer radius of sectors */ outerRadius?: number | string | ((dataPoint: any) => number); cornerRadius?: number | string; } type PieLabelLine = ReactElement | ((props: any) => ReactElement) | SVGProps | boolean; export type PieLabelProps = PieSectorData & GeometrySector & { tooltipPayload?: any; } & PieLabelRenderProps; export type PieLabel

= ReactElement | ((props: P) => ReactNode | ReactElement) | (SVGProps & { offsetRadius?: number; }) | boolean; export type PieSectorData = { percent?: number; name?: string | number; midAngle?: number; middleRadius?: number; tooltipPosition?: Coordinate; value?: number; paddingAngle?: number; dataKey?: string; payload?: any; tooltipPayload?: ReadonlyArray; }; export type PieSectorDataItem = SectorProps & PieSectorData; interface PieProps extends PieDef { id?: string; className?: string; dataKey: DataKey; nameKey?: DataKey; /** The minimum angle for no-zero element */ minAngle?: number; legendType?: LegendType; tooltipType?: TooltipType; /** TODO: review this as an external prop - it seems to have no effect */ /** the max radius of pie */ maxRadius?: number; hide?: boolean; /** the input data */ data?: any[]; activeShape?: ActiveShape; inactiveShape?: ActiveShape; labelLine?: PieLabelLine; label?: PieLabel; animationEasing?: AnimationTiming; isAnimationActive?: boolean; animationBegin?: number; animationDuration?: AnimationDuration; onAnimationStart?: () => void; onAnimationEnd?: () => void; onMouseEnter?: (data: any, index: number, e: React.MouseEvent) => void; onMouseLeave?: (data: any, index: number, e: React.MouseEvent) => void; onClick?: (data: any, index: number, e: React.MouseEvent) => void; rootTabIndex?: number; } export interface PieLabelRenderProps extends PieDef { name: string; percent?: number; stroke: string; index?: number; textAnchor: string; x: number; y: number; [key: string]: any; } interface State { prevIsAnimationActive?: boolean; prevSectors?: PieSectorDataItem[]; curSectors?: PieSectorDataItem[]; } type PieSvgAttributes = Omit, 'ref'>; export type Props = PieSvgAttributes & PieProps; type RealPieData = any; export type PieCoordinate = { cx: number; cy: number; innerRadius: number; outerRadius: number; maxRadius: number; }; export declare function computePieSectors({ pieSettings, displayedData, cells, offset, }: { displayedData: ReadonlyArray; cells: ReadonlyArray | undefined; pieSettings: { dataKey: DataKey | undefined; tooltipType?: TooltipType; name?: string | number; nameKey?: DataKey; cx?: number | string; cy?: number | string; startAngle?: number; endAngle?: number; paddingAngle?: number; minAngle?: number; innerRadius?: number | string; outerRadius?: number | string | ((dataPoint: any) => number); cornerRadius?: number | string; presentationProps?: Record; }; offset: ChartOffset; }): ReadonlyArray; export declare class Pie extends PureComponent { static displayName: string; static defaultProps: { readonly stroke: "#fff"; readonly fill: "#808080"; readonly legendType: "rect"; readonly cx: "50%"; readonly cy: "50%"; readonly startAngle: 0; readonly endAngle: 360; readonly innerRadius: 0; readonly outerRadius: "80%"; readonly paddingAngle: 0; readonly labelLine: true; readonly hide: false; readonly minAngle: 0; readonly isAnimationActive: boolean; readonly animationBegin: 400; readonly animationDuration: 1500; readonly animationEasing: "ease"; readonly nameKey: "name"; readonly rootTabIndex: 0; }; id: string; render(): React.JSX.Element; } export {};