@simspace/nivo-circle-packing
Version:
[](https://www.npmjs.com/package/@nivo/circle-packing)
101 lines • 4.08 kB
TypeScript
import * as React from 'react';
import { Interpolation, SpringValue } from '@react-spring/web';
import { Box, ModernMotionProps, Theme, PropertyAccessor, ValueFormat, SvgDefsAndFill } from '@simspace/nivo-core';
import { InheritedColorConfig, OrdinalColorScaleConfig } from '@simspace/nivo-colors';
export interface ComputedDatum<RawDatum> {
id: string;
path: string[];
value: number;
percentage: number;
formattedValue: string;
x: number;
y: number;
radius: number;
color: string;
fill?: string;
data: RawDatum;
depth: number;
height: number;
parent?: ComputedDatum<RawDatum>;
}
export declare type CirclePackingLayerId = 'circles' | 'labels';
export interface CirclePackingCustomLayerProps<RawDatum> {
nodes: ComputedDatum<RawDatum>[];
}
export declare type CirclePackingCustomLayer<RawDatum> = React.FC<CirclePackingCustomLayerProps<RawDatum>>;
export declare type CirclePackingLayer<RawDatum> = CirclePackingLayerId | CirclePackingCustomLayer<RawDatum>;
export declare type MouseHandler<RawDatum> = (datum: ComputedDatum<RawDatum>, event: React.MouseEvent) => void;
export declare type MouseHandlers<RawDatum> = {
onClick?: MouseHandler<RawDatum>;
onMouseEnter?: MouseHandler<RawDatum>;
onMouseMove?: MouseHandler<RawDatum>;
onMouseLeave?: MouseHandler<RawDatum>;
};
export interface CirclePackingCommonProps<RawDatum> {
data: RawDatum;
id: PropertyAccessor<RawDatum, string>;
value: PropertyAccessor<RawDatum, number>;
valueFormat?: ValueFormat<number>;
width: number;
height: number;
margin?: Box;
padding: number;
leavesOnly: boolean;
theme?: Theme;
colors: OrdinalColorScaleConfig<Omit<ComputedDatum<RawDatum>, 'color' | 'fill'>>;
colorBy: 'id' | 'depth';
inheritColorFromParent: boolean;
childColor: InheritedColorConfig<ComputedDatum<RawDatum>>;
borderWidth: number;
borderColor: InheritedColorConfig<ComputedDatum<RawDatum>>;
circleComponent: CircleComponent<RawDatum>;
enableLabels: boolean;
label: PropertyAccessor<ComputedDatum<RawDatum>, string>;
labelsFilter?: (label: ComputedLabel<RawDatum>) => boolean;
labelsSkipRadius: number;
labelTextColor: InheritedColorConfig<ComputedDatum<RawDatum>>;
labelComponent: LabelComponent<RawDatum>;
layers: CirclePackingLayer<RawDatum>[];
isInteractive: boolean;
tooltip: (props: ComputedDatum<RawDatum>) => JSX.Element;
zoomedId?: string | null;
animate: boolean;
motionConfig: ModernMotionProps['motionConfig'];
role: string;
}
export declare type CirclePackingSvgProps<RawDatum> = CirclePackingCommonProps<RawDatum> & MouseHandlers<RawDatum> & SvgDefsAndFill<ComputedDatum<RawDatum>>;
export declare type CirclePackingHtmlProps<RawDatum> = CirclePackingCommonProps<RawDatum> & MouseHandlers<RawDatum>;
export declare type CirclePackingCanvasProps<RawDatum> = CirclePackingCommonProps<RawDatum> & Pick<MouseHandlers<RawDatum>, 'onMouseMove' | 'onClick'> & {
pixelRatio: number;
};
export declare type CircleProps<RawDatum> = {
node: ComputedDatum<RawDatum>;
style: {
x: SpringValue<number>;
y: SpringValue<number>;
radius: Interpolation<number>;
color: SpringValue<string>;
opacity: SpringValue<number>;
borderWidth: number;
borderColor: SpringValue<string>;
};
} & MouseHandlers<RawDatum>;
export declare type CircleComponent<RawDatum> = (props: CircleProps<RawDatum>) => JSX.Element;
export interface ComputedLabel<RawDatum> {
label: string | number;
textColor: string;
node: ComputedDatum<RawDatum>;
}
export interface LabelProps<RawDatum> {
node: ComputedDatum<RawDatum>;
label: string | number;
style: {
x: SpringValue<number>;
y: SpringValue<number>;
radius: Interpolation<number>;
textColor: SpringValue<string>;
opacity: SpringValue<number>;
};
}
export declare type LabelComponent<RawDatum> = (props: LabelProps<RawDatum>) => JSX.Element;
//# sourceMappingURL=types.d.ts.map