import { ReactElement, ReactNode, CSSProperties, PropsWithChildren } from 'react'; import { Margin } from '../../common/types/margin'; import * as d3 from "d3"; export interface PieChartProps extends PropsWithChildren { data: PieChartData[]; className?: string; style?: CSSProperties; width?: number; height?: number; outerRadius?: number; startAngle?: number; endAngle?: number; padAngle?: number; cornerRadius?: number; borderWidth?: number; borderColor?: string; margin?: Margin; onClick?: (data: PieChartData) => void; enableSlicesLabels?: boolean; formatSliceLabel?: PieChartFormatLabel; formatSliceTitle?: PieChartFormatLabel; formatSliceLabelName?: PieChartFormatLabel; slicesLabelsSkipAngle?: number; enableSlicesLabelsName?: boolean; backgroundColor?: string; enableRadialLabels?: boolean; radialLabelsLinkHorizontalLength?: number; radialLabelsTextXOffset?: number; formatRadialLabel?: PieChartFormatRadialLabel; radialLabelYOffset?: number; svgElements?: ReactElement; radialAngleXOffset?: number; withTooltip?: boolean; fullChartTooltip?: boolean; tooltipRoot?: Element; tooltipBind?: boolean; tooltipClassName?: string; renderTooltip?: (data: PieChartDatum[] | PieChartData[]) => ReactNode; tooltipStyle?: CSSProperties; transitionDuration?: number; } export type PieChartData = { id?: number | string; cornerRadius?: number; name?: ReactNode; color?: string; value: number; }; export type PieChartDatum = { data: PieChartData; index: number; value: number; } & d3.DefaultArcObject; export type PieChartFormatLabel = (datum: PieChartDatum) => string; export type PieChartFormatRadialLabel = (datum: PieChartDatum) => ReactNode;