@nivo/pie
Version:
115 lines • 4.77 kB
TypeScript
import * as React from 'react';
import { Box, Dimensions, SvgDefsAndFill, MotionProps, ValueFormat, PropertyAccessor } from '@nivo/core';
import { PartialTheme } from '@nivo/theming';
import { Arc, ArcGenerator, ArcTransitionMode, ArcLabelsProps, ArcLinkLabelsProps } from '@nivo/arcs';
import { OrdinalColorScaleConfig, InheritedColorConfig } from '@nivo/colors';
import { LegendProps } from '@nivo/legends';
export type DatumId = string | number;
export interface DefaultRawDatum {
id: DatumId;
value: number;
}
export interface MayHaveLabel extends Object {
label?: string | number;
}
export interface PieArc extends Arc {
index: number;
angle: number;
angleDeg: number;
thickness: number;
padAngle: number;
}
export interface ComputedDatum<RawDatum> {
id: DatumId;
label: DatumId;
value: number;
formattedValue: string;
color: string;
fill?: string;
data: RawDatum;
arc: PieArc;
hidden: boolean;
}
export interface DataProps<RawDatum> {
data: readonly RawDatum[];
}
export interface PieTooltipProps<RawDatum> {
datum: ComputedDatum<RawDatum>;
}
export type MouseEventHandler<RawDatum, ElementType = HTMLCanvasElement> = (datum: ComputedDatum<RawDatum>, event: React.MouseEvent<ElementType>) => void;
export type PieLayerId = 'arcLinkLabels' | 'arcs' | 'arcLabels' | 'legends';
export interface PieCustomLayerProps<RawDatum> {
dataWithArc: readonly ComputedDatum<RawDatum>[];
centerX: number;
centerY: number;
radius: number;
innerRadius: number;
arcGenerator: ArcGenerator;
}
export type PieCustomLayer<RawDatum> = React.FC<PieCustomLayerProps<RawDatum>>;
export type PieLayer<RawDatum> = PieLayerId | PieCustomLayer<RawDatum>;
export type CommonPieProps<RawDatum> = {
id: PropertyAccessor<RawDatum, DatumId>;
value: PropertyAccessor<RawDatum, number>;
valueFormat?: ValueFormat<number>;
margin: Box;
sortByValue: boolean;
innerRadius: number;
padAngle: number;
cornerRadius: number;
startAngle: number;
endAngle: number;
fit: boolean;
activeInnerRadiusOffset: number;
activeOuterRadiusOffset: number;
colors: OrdinalColorScaleConfig<Omit<ComputedDatum<RawDatum>, 'color' | 'fill' | 'arc'>>;
theme: PartialTheme;
borderWidth: number;
borderColor: InheritedColorConfig<ComputedDatum<RawDatum>>;
enableArcLabels: boolean;
enableArcLinkLabels: boolean;
isInteractive: boolean;
tooltip: React.FC<PieTooltipProps<RawDatum>>;
activeId: DatumId | null;
onActiveIdChange: (id: DatumId | null) => void;
defaultActiveId: DatumId | null;
legends: readonly LegendProps[];
forwardLegendData: (data: LegendDatum<RawDatum>[]) => void;
role?: string;
renderWrapper: boolean;
} & Partial<ArcLabelsProps<ComputedDatum<RawDatum>>> & Partial<ArcLinkLabelsProps<ComputedDatum<RawDatum>>>;
export type PieHandlers<RawDatum, ElementType> = {
onClick?: MouseEventHandler<RawDatum, ElementType>;
onMouseEnter?: MouseEventHandler<RawDatum, ElementType>;
onMouseMove?: MouseEventHandler<RawDatum, ElementType>;
onMouseLeave?: MouseEventHandler<RawDatum, ElementType>;
};
export type PieSvgCustomComponents<RawDatum> = {
arcLinkLabelComponent?: ArcLinkLabelsProps<ComputedDatum<RawDatum>>['component'];
};
export interface LegendDatum<RawDatum> {
id: ComputedDatum<RawDatum>['id'];
label: ComputedDatum<RawDatum>['label'];
color: string;
hidden: boolean;
data: Omit<ComputedDatum<RawDatum>, 'fill' | 'arc'>;
}
export type PieSvgProps<RawDatum> = DataProps<RawDatum> & Dimensions & Partial<CommonPieProps<RawDatum>> & SvgDefsAndFill<ComputedDatum<RawDatum>> & PieHandlers<RawDatum, SVGPathElement> & {
layers?: readonly PieLayer<RawDatum>[];
animate?: boolean;
motionConfig?: MotionProps['motionConfig'];
transitionMode?: ArcTransitionMode;
} & PieSvgCustomComponents<RawDatum>;
export type CompletePieSvgProps<RawDatum> = DataProps<RawDatum> & Dimensions & CommonPieProps<RawDatum> & SvgDefsAndFill<ComputedDatum<RawDatum>> & PieHandlers<RawDatum, SVGPathElement> & {
layers: readonly PieLayer<RawDatum>[];
animate: boolean;
motionConfig: MotionProps['motionConfig'];
transitionMode: ArcTransitionMode;
} & PieSvgCustomComponents<RawDatum>;
export type PieCanvasProps<RawDatum> = DataProps<RawDatum> & Dimensions & Partial<CommonPieProps<RawDatum>> & Pick<PieHandlers<RawDatum, HTMLCanvasElement>, 'onClick' | 'onMouseMove'> & {
pixelRatio?: number;
};
export type CompletePieCanvasProps<RawDatum> = DataProps<RawDatum> & Dimensions & CommonPieProps<RawDatum> & Pick<PieHandlers<RawDatum, HTMLCanvasElement>, 'onClick' | 'onMouseMove'> & {
pixelRatio: number;
};
//# sourceMappingURL=types.d.ts.map