/** @jsxImportSource react */ import { Container, StyledContainerConfig } from "../ui/Container"; import { BoundedObject, BoundedObjectConfig, BoundedObjectInstance } from "../svg/BoundedObject"; import { Rect } from "../svg/util/Rect"; import { Selection, SimpleSelection } from "../ui/selection/Selection"; import type { KeySelection } from "../ui/selection/KeySelection"; import type { PropertySelection } from "../ui/selection/PropertySelection"; import { TooltipParentInstance } from "../widgets/overlay/tooltip-ops"; import { Instance } from "../ui/Instance"; import { RenderingContext } from "../ui/RenderingContext"; import { NumberProp, BooleanProp, StringProp, Prop } from "../ui/Prop"; import { CreateConfig } from "../util/Component"; export interface PieChartConfig extends BoundedObjectConfig { /** Total angle of the pie chart in degrees. Default is `360`. */ angle?: NumberProp; /** Starting angle in degrees. Default is `0`. */ startAngle?: NumberProp; /** Set to `true` for clockwise direction. */ clockwise?: BooleanProp; /** Gap between slices in pixels. Default is `0`. */ gap?: NumberProp; } export interface PieChartInstance extends BoundedObjectInstance { pie: PieCalculator; } export declare class PieChart extends BoundedObject { angle: number; startAngle: number; gap: number; constructor(config: PieChartConfig); declareData(...args: any[]): void; explore(context: RenderingContext, instance: PieChartInstance): void; exploreCleanup(context: RenderingContext, instance: PieChartInstance): void; prepare(context: RenderingContext, instance: PieChartInstance): void; } interface PieStack { total: number; r0s: number[] | null; r0ps: number[] | null; gap: number; angleFactor: number; lastAngle: number; } export interface PieSegment { startAngle: number; endAngle: number; angle: number; midAngle: number; gap: number; cx: number; cy: number; R: number; ox?: number; oy?: number; radiusMultiplier?: number; } declare class PieCalculator { angleTotal: number; startAngle: number; clockwise: boolean; gap: number; stacks: Record; cx: number; cy: number; R: number; shouldUpdate: boolean; reset(angle: number, startAngle: number, clockwise: boolean, gap: number): void; acknowledge(stack: string, value: number, r: number, r0: number, percentageRadius: boolean): void; hash(): Record; measure(rect: Rect): void; map(stack: string, value: number, r: number, r0: number, percentageRadius: boolean): PieSegment; } export interface PieSliceConfig extends StyledContainerConfig { /** Used to indicate if a slice is active or not. Inactive slices are not rendered. */ active?: BooleanProp; /** Inner radius of the slice. Default is `0`. */ r0?: NumberProp; /** Outer radius of the slice. Default is `50`. */ r?: NumberProp; /** Index of a color from the standard palette of colors. 0-15. */ colorIndex?: NumberProp; /** Used to automatically assign a color based on the `name` and the contextual `ColorMap` widget. */ colorMap?: StringProp; /** Name used to resolve the color. If not provided, `name` is used instead. */ colorName?: StringProp; /** Offset of the slice from the center. */ offset?: NumberProp; /** Value represented by the slice. */ value?: NumberProp; /** Set to `true` to disable the slice. */ disabled?: BooleanProp; /** Inner radius for point calculations. */ innerPointRadius?: NumberProp; /** Outer radius for point calculations. */ outerPointRadius?: NumberProp; /** Name of the item as it will appear in the legend. */ name?: StringProp; /** Stack name. Default is `stack`. */ stack?: StringProp; /** Name of the legend to be used. Default is `legend`. Set to `false` to hide the legend entry. */ legend?: Prop; /** ID used for hover synchronization. */ hoverId?: StringProp | NumberProp; /** Border radius for rounded corners. */ br?: NumberProp; /** Alias for br (border radius). */ borderRadius?: NumberProp; /** Text to display in the legend. */ legendDisplayText?: StringProp; /** Set to `true` to use percentage-based radius. Default is `true`. */ percentageRadius?: boolean; /** Shape to use in legend. Default is `circle`. */ legendShape?: string; /** Action to perform on legend item click. Default is `auto`. */ legendAction?: string; /** Hover channel for hover synchronization. Default is `default`. */ hoverChannel?: string; /** Selection configuration. */ selection?: CreateConfig | CreateConfig | CreateConfig | CreateConfig; /** Tooltip configuration. */ tooltip?: any; } export interface PieSliceInstance extends Instance, TooltipParentInstance { pie: PieCalculator; valid: boolean; colorMap: any; hoverSync: any; segment: PieSegment; bounds: Rect; } export declare class PieSlice extends Container { baseClass: string; offset: number; r0: number; r: number; percentageRadius: boolean; legend: string; active: boolean; stack: string; legendAction: string; legendShape: string; hoverChannel: string; br: number; borderRadius: number; selection: Selection; tooltip: any; constructor(config: PieSliceConfig); init(): void; declareData(...args: any[]): void; prepareData(context: RenderingContext, instance: PieSliceInstance): void; explore(context: RenderingContext, instance: PieSliceInstance): void; prepare(context: RenderingContext, instance: PieSliceInstance): void; prepareCleanup(context: RenderingContext, instance: PieSliceInstance): void; onLegendClick(e: MouseEvent | React.MouseEvent, instance: PieSliceInstance): void; render(context: RenderingContext, instance: PieSliceInstance, key: string): React.ReactNode; handleClick(e: React.MouseEvent, instance: PieSliceInstance): void; } export {}; //# sourceMappingURL=PieChart.d.ts.map