react-native-chart-kit
Version:
Beautiful React Native charts for dashboards, reports, and data-rich mobile apps.
165 lines • 5.32 kB
TypeScript
import type { ReactNode } from "react";
import type { ViewStyle } from "react-native";
import type { PieArcModel } from "../../../core/index";
import type { CartesianChartPresetValue, CartesianChartTheme, ResolvedCartesianChartTheme } from "../../theme";
import type { LineChartRenderer } from "../line/types";
export type PieChartRenderer = LineChartRenderer;
export type PieChartDeselectEvent = {
reason: "outsidePress" | "programmatic";
};
export type PieChartSelectEvent<TData = unknown> = {
index: number;
label: string;
value: number | null;
percentage: number;
color?: string;
raw?: TData;
};
export type PieChartInteractionMode = "none" | "tap";
export type PieChartInteractionConfig<TData = unknown> = {
mode?: PieChartInteractionMode;
deselectOnOutsidePress?: boolean;
onDeselect?: (event: PieChartDeselectEvent) => void;
onSelect?: (event: PieChartSelectEvent<TData>) => void;
};
export type PieChartInteraction<TData = unknown> = PieChartInteractionMode | PieChartInteractionConfig<TData>;
export type PieChartActiveSliceConfig = {
strokeColor?: string;
strokeWidth?: number;
activeOpacity?: number;
inactiveOpacity?: number;
activeOffset?: number;
activeScale?: number;
};
export type PieChartSliceSeparatorConfig = {
visible?: boolean;
color?: string;
opacity?: number;
width?: number;
};
export type ResolvedPieChartSliceSeparatorConfig = {
visible: boolean;
color: string;
opacity: number;
width: number;
};
export type PieChartSelectionAnimationConfig = {
duration?: number;
};
export type PieChartCenterLabelRenderProps<TData = unknown> = {
total: number;
arcs: Array<PieArcModel<TData>>;
theme: ResolvedCartesianChartTheme;
selectedArc?: PieArcModel<TData>;
selectedIndex?: number;
};
export type PieChartLegendRenderProps<TData = unknown> = {
index: number;
item: PieChartLegendItem<TData>;
selected: boolean;
theme: ResolvedCartesianChartTheme;
};
export type PieChartArcLabelRenderProps<TData = unknown> = {
arc: PieArcModel<TData>;
color: string;
index: number;
label: string;
percentageLabel: string;
selected: boolean;
theme: ResolvedCartesianChartTheme;
valueLabel: string;
};
export type PieChartArcLabelsConfig<TData = unknown> = {
visible?: boolean;
connectorColor?: string;
connectorLines?: boolean;
connectorLength?: number;
connectorOpacity?: number;
connectorWidth?: number;
fontSize?: number;
minPercentage?: number;
offset?: number;
reservedWidth?: number;
formatLabel?: (props: PieChartArcLabelRenderProps<TData>) => string | null;
};
export type PieChartLegendConfig<TData = unknown> = {
visible?: boolean;
reservedHeight?: number;
itemGap?: number;
maxItemWidth?: ViewStyle["maxWidth"];
renderItem?: (props: PieChartLegendRenderProps<TData>) => ReactNode;
};
export type PieChartProps<TData extends Record<string, unknown>> = {
data: TData[];
valueKey: keyof TData & string;
labelKey?: keyof TData & string;
colorKey?: keyof TData & string;
colors?: string[];
width: number;
height: number;
theme?: "light" | "dark" | "system" | CartesianChartTheme;
preset?: CartesianChartPresetValue;
innerRadius?: number;
innerRadiusRatio?: number;
legend?: boolean | PieChartLegendConfig<TData>;
arcLabels?: boolean | PieChartArcLabelsConfig<TData>;
sliceSeparator?: boolean | PieChartSliceSeparatorConfig;
selectedIndex?: number;
defaultSelectedIndex?: number;
activeSlice?: PieChartActiveSliceConfig;
selectionAnimation?: boolean | PieChartSelectionAnimationConfig;
interaction?: PieChartInteraction<TData>;
centerLabel?: string | ReactNode | ((props: PieChartCenterLabelRenderProps<TData>) => ReactNode);
renderer?: PieChartRenderer;
accessibilityLabel?: string;
id?: string;
testID?: string;
formatValue?: (value: number) => string;
formatPercentage?: (percentage: number) => string;
};
export type PieChartLegendItem<TData = unknown> = {
index: number;
key: string;
label: string;
valueLabel: string;
percentageLabel: string;
color: string;
arc: PieArcModel<TData>;
};
export type PieChartArcLabelModel<TData = unknown> = {
index: number;
key: string;
text: string;
color: string;
fontSize: number;
textAnchor: "start" | "end";
x: number;
y: number;
connectorStartX: number;
connectorStartY: number;
connectorColor: string;
connectorBendX: number;
connectorBendY: number;
connectorEndX: number;
connectorEndY: number;
connectorOpacity: number;
connectorVisible: boolean;
connectorWidth: number;
arc: PieArcModel<TData>;
};
export type PieChartModel<TData = unknown> = {
arcLabels: Array<PieChartArcLabelModel<TData>>;
arcLabelsVisible: boolean;
arcs: Array<PieArcModel<TData>>;
centerX: number;
centerY: number;
chartHeight: number;
innerRadius: number;
legendItems: Array<PieChartLegendItem<TData>>;
legendVisible: boolean;
radius: number;
resolvedTheme: ResolvedCartesianChartTheme;
sliceSeparator: ResolvedPieChartSliceSeparatorConfig;
total: number;
};
//# sourceMappingURL=types.d.ts.map