UNPKG

@nivo/heatmap

Version:
142 lines 6.16 kB
import { AriaAttributes, MouseEvent, FunctionComponent } from 'react'; import { AnimatedProps } from '@react-spring/web'; import { Box, Dimensions, MotionProps, PropertyAccessor, ValueFormat } from '@nivo/core'; import { PartialTheme, Theme } from '@nivo/theming'; import { AxisProps, CanvasAxisProps } from '@nivo/axes'; import { InheritedColorConfig, ContinuousColorScaleConfig } from '@nivo/colors'; import { AnchoredContinuousColorsLegendProps } from '@nivo/legends'; import { AnnotationMatcher } from '@nivo/annotations'; export interface HeatMapDatum { x: string | number; y?: number | null | undefined; } export interface DefaultHeatMapDatum { x: string; y?: number | null | undefined; } export type HeatMapSerie<Datum extends HeatMapDatum, ExtraProps extends object> = { id: string; data: Datum[]; } & ExtraProps; export interface ComputedCell<Datum extends HeatMapDatum> { id: string; serieId: string; value: number | null; formattedValue: string | null; data: Datum; x: number; y: number; width: number; height: number; color: string; opacity: number; borderColor: string; label: string; labelTextColor: string; } export interface CellAnimatedProps { x: number; y: number; width: number; height: number; scale: number; color: string; opacity: number; borderColor: string; labelTextColor: string; } export interface HeatMapDataProps<Datum extends HeatMapDatum, ExtraProps extends object> { data: HeatMapSerie<Datum, ExtraProps>[]; } export interface SizeVariationConfig { values?: [min: number, max: number]; sizes: [min: number, max: number]; } export type LayerId = 'grid' | 'axes' | 'cells' | 'legends' | 'annotations'; export interface CustomLayerProps<Datum extends HeatMapDatum> { cells: ComputedCell<Datum>[]; activeCell: ComputedCell<Datum> | null; setActiveCell: (cell: ComputedCell<Datum> | null) => void; } export type CustomLayer<Datum extends HeatMapDatum> = FunctionComponent<CustomLayerProps<Datum>>; export type CustomCanvasLayer<Datum extends HeatMapDatum> = (ctx: CanvasRenderingContext2D, props: CustomLayerProps<Datum>) => void; export interface TooltipProps<Datum extends HeatMapDatum> { cell: ComputedCell<Datum>; } export type TooltipComponent<Datum extends HeatMapDatum> = FunctionComponent<TooltipProps<Datum>>; export interface CellComponentProps<Datum extends HeatMapDatum> { cell: ComputedCell<Datum>; borderWidth: number; borderRadius: number; animatedProps: AnimatedProps<CellAnimatedProps>; onMouseEnter?: (cell: ComputedCell<Datum>) => (event: MouseEvent) => void; onMouseMove?: (cell: ComputedCell<Datum>) => (event: MouseEvent) => void; onMouseLeave?: (cell: ComputedCell<Datum>) => (event: MouseEvent) => void; onClick?: (cell: ComputedCell<Datum>) => (event: MouseEvent) => void; enableLabels: boolean; } export type CellComponent<Datum extends HeatMapDatum> = FunctionComponent<CellComponentProps<Datum>>; export interface CellCanvasRendererProps<Datum extends HeatMapDatum> { cell: ComputedCell<Datum>; borderWidth: number; enableLabels: boolean; theme: Theme; } export type CellCanvasRenderer<Datum extends HeatMapDatum> = (ctx: CanvasRenderingContext2D, props: CellCanvasRendererProps<Datum>) => void; export type CellShape = 'rect' | 'circle'; export type HeatMapCommonProps<Datum extends HeatMapDatum> = { valueFormat: ValueFormat<number>; margin: Box; forceSquare: boolean; sizeVariation: false | SizeVariationConfig; xInnerPadding: number; xOuterPadding: number; yInnerPadding: number; yOuterPadding: number; opacity: number; activeOpacity: number; inactiveOpacity: number; borderWidth: number; borderColor: InheritedColorConfig<Omit<ComputedCell<Datum>, 'borderColor'>>; enableGridX: boolean; enableGridY: boolean; theme: PartialTheme; colors: ContinuousColorScaleConfig | ((cell: Omit<ComputedCell<Datum>, 'color' | 'opacity' | 'borderColor' | 'labelTextColor'>) => string); emptyColor: string; enableLabels: boolean; label: PropertyAccessor<Omit<ComputedCell<Datum>, 'label' | 'color' | 'opacity' | 'borderColor' | 'labelTextColor'>, string>; labelTextColor: InheritedColorConfig<Omit<ComputedCell<Datum>, 'labelTextColor'>>; legends: Omit<AnchoredContinuousColorsLegendProps, 'scale' | 'containerWidth' | 'containerHeight'>[]; annotations: AnnotationMatcher<ComputedCell<Datum>>[]; isInteractive: boolean; hoverTarget: 'cell' | 'row' | 'column' | 'rowColumn'; tooltip: TooltipComponent<Datum>; onClick: (cell: ComputedCell<Datum>, event: MouseEvent) => void; renderWrapper: boolean; role: string; ariaLabel: AriaAttributes['aria-label']; ariaLabelledBy: AriaAttributes['aria-labelledby']; ariaDescribedBy: AriaAttributes['aria-describedby']; } & Required<MotionProps>; export type HeatMapSvgProps<Datum extends HeatMapDatum, ExtraProps extends object> = Partial<HeatMapCommonProps<Datum>> & HeatMapDataProps<Datum, ExtraProps> & Dimensions & Partial<{ axisTop: AxisProps | null; axisRight: AxisProps | null; axisBottom: AxisProps | null; axisLeft: AxisProps | null; borderRadius: number; layers: (LayerId | CustomLayer<Datum>)[]; cellComponent: CellShape | CellComponent<Datum>; onMouseEnter: (cell: ComputedCell<Datum>, event: MouseEvent) => void; onMouseMove: (cell: ComputedCell<Datum>, event: MouseEvent) => void; onMouseLeave: (cell: ComputedCell<Datum>, event: MouseEvent) => void; }>; export type HeatMapCanvasProps<Datum extends HeatMapDatum, ExtraProps extends object> = Partial<HeatMapCommonProps<Datum>> & HeatMapDataProps<Datum, ExtraProps> & Dimensions & Partial<{ axisTop: CanvasAxisProps<Datum['x']> | null; axisRight: CanvasAxisProps<string> | null; axisBottom: CanvasAxisProps<Datum['x']> | null; axisLeft: CanvasAxisProps<string> | null; layers: (LayerId | CustomCanvasLayer<Datum>)[]; renderCell: CellShape | CellCanvasRenderer<Datum>; pixelRatio: number; }>; //# sourceMappingURL=types.d.ts.map