UNPKG

@nivo/scatterplot

Version:
128 lines 5.72 kB
import { AriaAttributes, FunctionComponent, MouseEvent } from 'react'; import { SpringValues } from '@react-spring/web'; import { Dimensions, Box, ValueFormat, MotionProps, CssMixBlendMode, CartesianMarkerProps, PropertyAccessor } from '@nivo/core'; import { PartialTheme } from '@nivo/theming'; import { AnyScale, ScaleSpec } from '@nivo/scales'; import { OrdinalColorScaleConfig } from '@nivo/colors'; import { AxisProps, GridValues } from '@nivo/axes'; import { LegendProps } from '@nivo/legends'; import { AnnotationMatcher } from '@nivo/annotations'; export type ScatterPlotValue = number | string | Date; export interface ScatterPlotDatum { x: ScatterPlotValue; y: ScatterPlotValue; } export type ScatterPlotRawSerie<RawDatum extends ScatterPlotDatum> = { id: string | number; data: RawDatum[]; }; export interface ScatterPlotNodeData<RawDatum extends ScatterPlotDatum> { index: number; serieIndex: number; id: string; serieId: ScatterPlotRawSerie<RawDatum>['id']; x: number; xValue: RawDatum['x']; formattedX: string | number; y: number; yValue: RawDatum['y']; formattedY: string | number; size: number; color: string; data: RawDatum; } export interface ScatterPlotNodeProps<RawDatum extends ScatterPlotDatum> { node: ScatterPlotNodeData<RawDatum>; style: SpringValues<{ x: number; y: number; size: number; color: string; }>; blendMode: CssMixBlendMode; isInteractive: boolean; onMouseEnter?: ScatterPlotMouseHandler<RawDatum>; onMouseMove?: ScatterPlotMouseHandler<RawDatum>; onMouseLeave?: ScatterPlotMouseHandler<RawDatum>; onMouseDown?: ScatterPlotMouseHandler<RawDatum>; onMouseUp?: ScatterPlotMouseHandler<RawDatum>; onClick?: ScatterPlotMouseHandler<RawDatum>; onDoubleClick?: ScatterPlotMouseHandler<RawDatum>; } export type ScatterPlotNode<RawDatum extends ScatterPlotDatum> = FunctionComponent<ScatterPlotNodeProps<RawDatum>>; export interface ScatterPlotTooltipProps<RawDatum extends ScatterPlotDatum> { node: ScatterPlotNodeData<RawDatum>; } export type ScatterPlotTooltip<RawDatum extends ScatterPlotDatum> = FunctionComponent<ScatterPlotTooltipProps<RawDatum>>; export type ScatterPlotLayerId = 'grid' | 'axes' | 'nodes' | 'markers' | 'mesh' | 'legends' | 'annotations'; export interface ScatterPlotLayerProps<RawDatum extends ScatterPlotDatum> { xScale: AnyScale; yScale: AnyScale; nodes: ScatterPlotNodeData<RawDatum>[]; innerWidth: number; innerHeight: number; outerWidth: number; outerHeight: number; } export type ScatterPlotCustomSvgLayer<RawDatum extends ScatterPlotDatum> = FunctionComponent<ScatterPlotLayerProps<RawDatum>>; export type ScatterPlotCustomCanvasLayer<RawDatum extends ScatterPlotDatum> = (ctx: CanvasRenderingContext2D, props: ScatterPlotLayerProps<RawDatum>) => void; export interface ScatterPlotNodeDynamicSizeSpec { key: string; values: [number, number]; sizes: [number, number]; } export type ScatterPlotMouseHandler<RawDatum extends ScatterPlotDatum> = (node: ScatterPlotNodeData<RawDatum>, event: MouseEvent<any>) => void; export interface ScatterPlotDataProps<RawDatum extends ScatterPlotDatum> { data: ScatterPlotRawSerie<RawDatum>[]; } export type ScatterPlotCommonProps<RawDatum extends ScatterPlotDatum> = { nodeId: PropertyAccessor<Omit<ScatterPlotNodeData<RawDatum>, 'id' | 'size' | 'color'>, string>; xScale: ScaleSpec; xFormat: ValueFormat<RawDatum['x']>; yScale: ScaleSpec; yFormat: ValueFormat<RawDatum['y']>; margin: Box; enableGridX: boolean; gridXValues: GridValues<RawDatum['x']>; enableGridY: boolean; gridYValues: GridValues<RawDatum['y']>; axisTop: AxisProps | null; axisRight: AxisProps | null; axisBottom: AxisProps | null; axisLeft: AxisProps | null; theme: PartialTheme; colors: OrdinalColorScaleConfig<{ serieId: ScatterPlotRawSerie<RawDatum>['id']; }>; nodeSize: number | ScatterPlotNodeDynamicSizeSpec | PropertyAccessor<Omit<ScatterPlotNodeData<RawDatum>, 'size' | 'color'>, number>; renderWrapper?: boolean; isInteractive: boolean; useMesh: boolean; debugMesh: boolean; onMouseEnter: ScatterPlotMouseHandler<RawDatum>; onMouseMove: ScatterPlotMouseHandler<RawDatum>; onMouseLeave: ScatterPlotMouseHandler<RawDatum>; onMouseDown: ScatterPlotMouseHandler<RawDatum>; onMouseUp: ScatterPlotMouseHandler<RawDatum>; onClick: ScatterPlotMouseHandler<RawDatum>; onDoubleClick: ScatterPlotMouseHandler<RawDatum>; tooltip: ScatterPlotTooltip<RawDatum>; annotations: AnnotationMatcher<ScatterPlotNodeData<RawDatum>>[]; legends: LegendProps[]; role: string; ariaLabel: AriaAttributes['aria-label']; ariaLabelledBy: AriaAttributes['aria-labelledby']; ariaDescribedBy: AriaAttributes['aria-describedby']; }; export type ScatterPlotSvgProps<RawDatum extends ScatterPlotDatum> = Partial<ScatterPlotCommonProps<RawDatum>> & ScatterPlotDataProps<RawDatum> & Dimensions & MotionProps & { blendMode?: CssMixBlendMode; layers?: (ScatterPlotLayerId | ScatterPlotCustomSvgLayer<RawDatum>)[]; nodeComponent?: ScatterPlotNode<RawDatum>; markers?: CartesianMarkerProps<RawDatum['x'] | RawDatum['y']>[]; }; export type ScatterPlotCanvasProps<RawDatum extends ScatterPlotDatum> = Partial<ScatterPlotCommonProps<RawDatum>> & ScatterPlotDataProps<RawDatum> & Dimensions & { layers?: (ScatterPlotLayerId | ScatterPlotCustomCanvasLayer<RawDatum>)[]; pixelRatio?: number; renderNode?: (ctx: CanvasRenderingContext2D, node: ScatterPlotNodeData<RawDatum>) => void; }; //# sourceMappingURL=types.d.ts.map