UNPKG

react-native-chart-kit

Version:

Beautiful React Native charts for dashboards, reports, and data-rich mobile apps.

371 lines 14.5 kB
import type { ElementType, ReactNode } from "react"; import type { ChartBoxes, ChartViewportInitialIndex, ChartXValue, LayoutDebugModel, LineCurve, NumericDomainInput, ProjectedLinePoint } from "../../../core/index"; import type { CartesianChartPresetValue, CartesianChartTheme, ChartKitThemeMode, ResolvedCartesianChartTheme } from "../../theme"; import type { LineChartInteraction } from "./interaction"; import type { LineChartCrosshairConfig, LineChartAreaFillConfig, LineChartDecimationConfig, LineChartDotConfig, LineChartStrokeLinecap, LineChartStrokeLinejoin, LineChartThresholdStyleConfig, LineChartTooltipConfig, ResolvedLineChartCrosshairConfig, ResolvedLineChartDotConfig } from "./options"; import type { LineChartSelectedSeriesItem as BaseLineChartSelectedSeriesItem } from "./selection"; import type { LineChartTooltipRenderProps as BaseLineChartTooltipRenderProps, LineChartTooltipSeriesItem as BaseLineChartTooltipSeriesItem } from "./tooltip"; import type { LineChartAxisLabelAnimationConfig } from "./axisLabels"; import type { LineChartYAxisLabelWidth } from "./axisLabels"; export type { LineChartInteraction, LineChartInteractionConfig, LineChartInteractionMode, LineChartDeselectEvent, LineChartSelectEvent } from "./interaction"; export type { LineChartAreaFillConfig, LineChartCrosshairConfig, LineChartDotColor, LineChartDotConfig, LineChartDotShape, LineChartDecimationConfig, LineChartStrokeLinecap, LineChartStrokeLinejoin, LineChartStrokeStyleConfig, LineChartThresholdStyleConfig, LineChartTooltipConfig, ResolvedLineChartCrosshairConfig, ResolvedLineChartAreaFillConfig, ResolvedLineChartDecimationConfig, ResolvedLineChartDotConfig, ResolvedLineChartStrokeStyle, ResolvedLineChartThresholdStyle, ResolvedLineChartTooltipConfig } from "./options"; export type { LineChartAxisLabelAnimationConfig, LineChartAxisLabelAnimationStrategy, LineChartYAxisLabelWidth, LineChartYAxisLabelModel, ResolvedLineChartAxisLabelAnimationConfig } from "./axisLabels"; export type LineChartSeries<TData extends Record<string, unknown>> = { yKey: keyof TData & string; key?: string; label?: string; color?: string; strokeWidth?: number; strokeDasharray?: readonly number[] | undefined; strokeLinecap?: LineChartStrokeLinecap; strokeLinejoin?: LineChartStrokeLinejoin; strokeOpacity?: number; dot?: boolean | LineChartDotConfig; threshold?: LineChartThresholdStyleConfig; area?: boolean; areaFill?: LineChartAreaFillConfig; curve?: LineCurve; }; export type LineChartDotRenderProps<TData = unknown> = { point: ProjectedLinePoint<TData>; seriesKey: string; seriesLabel: string; color: string; x: number; y: number; value: number | null | undefined; dataIndex: number; config: ResolvedLineChartDotConfig; theme: ResolvedCartesianChartTheme; }; export type LineChartTooltipSeriesItem<TData = unknown> = BaseLineChartTooltipSeriesItem<ProjectedLinePoint<TData>>; export type LineChartTooltipRenderProps<TData = unknown> = BaseLineChartTooltipRenderProps<ProjectedLinePoint<TData>, ResolvedCartesianChartTheme>; export type LineChartCrosshairRenderProps<TData = unknown> = { chartHeight: number; chartWidth: number; config: ResolvedLineChartCrosshairConfig; plot: ChartBoxes["plot"]; series: Array<LineChartSelectedSeriesItem<TData>>; theme: ResolvedCartesianChartTheme; x: number; xLabel: string; y: number; }; export type LineChartLegendPosition = "top" | "bottom"; export type LineChartLegendAlign = "start" | "center" | "end"; export type LineChartLegendMarker = "square" | "circle" | "line"; export type LineChartLabelStrategy = "auto" | "show" | "skip" | "rotate" | "stagger" | "hide"; export type LineChartResolvedLabelStrategy = Exclude<LineChartLabelStrategy, "auto">; export type LineChartEdgeLabelPolicy = "shift" | "hide" | "show"; export type LineChartInitialIndex = ChartViewportInitialIndex; export type LineChartReferenceLabelPosition = "start" | "center" | "end"; export type LineChartReferenceLabelPlacement = "auto" | "above" | "below"; export type LineChartReferenceLabelContainerConfig = { backgroundColor?: string; borderRadius?: number; opacity?: number; paddingX?: number; paddingY?: number; }; export type LineChartReferenceLineConfig = { y: number; label?: string; labelColor?: string; labelContainer?: boolean | LineChartReferenceLabelContainerConfig; labelFontSize?: number; labelOffset?: number; labelPlacement?: LineChartReferenceLabelPlacement; labelPosition?: LineChartReferenceLabelPosition; color?: string; opacity?: number; strokeDasharray?: readonly number[]; strokeWidth?: number; }; export type LineChartReferenceBandConfig = { y1: number; y2: number; label?: string; labelColor?: string; labelContainer?: boolean | LineChartReferenceLabelContainerConfig; labelFontSize?: number; labelPosition?: LineChartReferenceLabelPosition; color?: string; opacity?: number; }; export type LineChartViewportConfig = { startIndex?: number; endIndex?: number; visiblePoints?: number; initialIndex?: ChartViewportInitialIndex; }; export type LineChartRangeSelectorSeriesStyle = { color?: string; opacity?: number; strokeDasharray?: readonly number[] | undefined; strokeWidth?: number; }; export type LineChartRangeSelectorWindowRenderProps = { x: number; y: number; width: number; height: number; radius: number; fill: string; opacity: number; stroke: string; strokeOpacity: number; strokeWidth: number; theme: ResolvedCartesianChartTheme; }; export type LineChartRangeSelectorLineRenderProps = { color: string; index: number; key: string; label: string; opacity: number; path: string; strokeDasharray?: readonly number[] | undefined; strokeWidth: number; theme: ResolvedCartesianChartTheme; }; export type LineChartRangeSelectorHandleRenderProps = { side: "start" | "end"; x: number; y: number; width: number; height: number; radius: number; color: string; opacity: number; theme: ResolvedCartesianChartTheme; window: LineChartRangeSelectorWindowRenderProps; }; export type LineChartRangeSelectorInteraction = "move" | "resizeStart" | "resizeEnd"; export type LineChartRangeSelectorGestureEvent = { interaction: LineChartRangeSelectorInteraction; }; export type LineChartViewportPanInteraction = "pan"; export type LineChartViewportPinchZoomInteraction = "pinchZoom"; export type LineChartViewportInteractionType = LineChartViewportPanInteraction | LineChartViewportPinchZoomInteraction; export type LineChartViewportInteractionGestureEvent = { interaction: LineChartViewportInteractionType; }; export type LineChartViewportInteractionConfig = { pan?: boolean; pinchZoom?: boolean; minPanDistance?: number; minVisiblePoints?: number; maxVisiblePoints?: number; pinchSensitivity?: number; lockParentScroll?: boolean; onGestureEnd?: (event: LineChartViewportInteractionGestureEvent) => void; onGestureStart?: (event: LineChartViewportInteractionGestureEvent) => void; }; export type LineChartRangeSelectorConfig = { visible?: boolean; height?: number; gap?: number; interactive?: boolean; minVisiblePoints?: number; backgroundFill?: string; plotFill?: string; plotRadius?: number; lineMinStrokeWidth?: number; lineStrokeWidth?: number; lineStrokeWidthScale?: number; series?: Record<string, LineChartRangeSelectorSeriesStyle>; outsideFill?: string; outsideOpacity?: number; windowFill?: string; windowOpacity?: number; windowRadius?: number; windowStroke?: string; windowStrokeOpacity?: number; windowStrokeWidth?: number; lineOpacity?: number; handleColor?: string; handleHeight?: number; handleHitSlop?: number; handleInset?: number; handleOpacity?: number; handleRadius?: number; handleWidth?: number; renderHandle?: (props: LineChartRangeSelectorHandleRenderProps) => ReactNode; renderLine?: (props: LineChartRangeSelectorLineRenderProps) => ReactNode; renderWindow?: (props: LineChartRangeSelectorWindowRenderProps) => ReactNode; onGestureEnd?: (event: LineChartRangeSelectorGestureEvent) => void; onGestureStart?: (event: LineChartRangeSelectorGestureEvent) => void; }; export type LineChartViewportChangeEvent = { viewport: LineChartViewportConfig; startIndex: number; endIndex: number; visibleCount: number; itemCount: number; isWindowed: boolean; source: "mainPlot" | "rangeSelector"; interaction: LineChartRangeSelectorInteraction | LineChartViewportInteractionType; }; export type LineChartLegendRenderItem = { index: number; key: string; label: string; color: string; x: number; y: number; width: number; height: number; contentX: number; contentY: number; contentWidth: number; contentHeight: number; markerSize: number; marker: LineChartLegendMarker; fontSize: number; fontFamily?: string; labelColor: string; labelGap: number; paddingHorizontal: number; paddingVertical: number; strokeDasharray?: readonly number[] | undefined; strokeLinecap: LineChartStrokeLinecap; strokeOpacity: number; strokeWidth: number; }; export type LineChartLegendRenderProps = { items: LineChartLegendRenderItem[]; x: number; y: number; width: number; height: number; position: LineChartLegendPosition; align: LineChartLegendAlign; theme: ResolvedCartesianChartTheme; }; export type LineChartLegendConfig = { visible?: boolean; position?: LineChartLegendPosition; align?: LineChartLegendAlign; wrap?: boolean; itemGap?: number; rowGap?: number; padding?: number; labelGap?: number; itemPaddingHorizontal?: number; itemPaddingVertical?: number; markerSize?: number; marker?: LineChartLegendMarker; labelColor?: string; fontSize?: number; fontFamily?: string; renderItem?: (item: LineChartLegendRenderItem) => ReactNode; renderLegend?: (props: LineChartLegendRenderProps) => ReactNode; }; export type ResolvedLineChartLegendConfig = { visible: boolean; position: LineChartLegendPosition; align: LineChartLegendAlign; wrap: boolean; itemGap: number; rowGap: number; padding: number; labelGap: number; itemPaddingHorizontal: number; itemPaddingVertical: number; markerSize: number; marker: LineChartLegendMarker; labelColor: string; fontSize: number; fontFamily: string | undefined; renderItem: LineChartLegendConfig["renderItem"] | undefined; renderLegend: LineChartLegendConfig["renderLegend"] | undefined; }; export type LineChartProps<TData extends Record<string, unknown>> = { data: TData[]; xKey: keyof TData & string; yKey?: keyof TData & string; yKeys?: Array<keyof TData & string>; series?: Array<LineChartSeries<TData>>; width: number; height: number; theme?: ChartKitThemeMode | CartesianChartTheme; preset?: CartesianChartPresetValue; scrollable?: boolean; visiblePoints?: number; initialIndex?: ChartViewportInitialIndex; viewport?: LineChartViewportConfig; onViewportChange?: (event: LineChartViewportChangeEvent) => void; viewportInteraction?: boolean | LineChartViewportInteractionConfig; rangeSelector?: boolean | LineChartRangeSelectorConfig; decimation?: false | "auto" | number | LineChartDecimationConfig; curve?: LineCurve; connectNulls?: boolean; area?: boolean; areaFill?: LineChartAreaFillConfig; showDots?: boolean; dots?: boolean | LineChartDotConfig; renderDot?: (props: LineChartDotRenderProps<TData>) => ReactNode; selectedIndex?: number; defaultSelectedIndex?: number; activeDot?: boolean | LineChartDotConfig; renderActiveDot?: (props: LineChartDotRenderProps<TData>) => ReactNode; interaction?: LineChartInteraction<TData>; crosshair?: boolean | LineChartCrosshairConfig; renderCrosshair?: (props: LineChartCrosshairRenderProps<TData>) => ReactNode; tooltip?: boolean | LineChartTooltipConfig; renderTooltip?: (props: LineChartTooltipRenderProps<TData>) => ReactNode; referenceLines?: LineChartReferenceLineConfig[]; referenceBands?: LineChartReferenceBandConfig[]; showHorizontalGridLines?: boolean; showVerticalGridLines?: boolean; legend?: boolean | LineChartLegendConfig; labelStrategy?: LineChartLabelStrategy; labelRotation?: number; labelMinGap?: number; edgeLabelPolicy?: LineChartEdgeLabelPolicy; yDomain?: NumericDomainInput; yAxisLabelWidth?: LineChartYAxisLabelWidth; axisLabelAnimation?: boolean | LineChartAxisLabelAnimationConfig; formatXLabel?: (value: ChartXValue, index: number) => string; formatYLabel?: (value: number) => string; renderer?: LineChartRenderer; id?: string; debugLayout?: boolean; onLayoutDebug?: (model: LayoutDebugModel) => void; accessibilityLabel?: string; testID?: string; }; export type LineChartSelectedSeriesItem<TData = unknown> = BaseLineChartSelectedSeriesItem<ProjectedLinePoint<TData>>; export type LineChartRendererComponent = ElementType; export type LineChartRenderer = { ClipRect?: LineChartRendererComponent | undefined; Circle: LineChartRendererComponent; Defs: LineChartRendererComponent; Group: LineChartRendererComponent; Layer?: LineChartRendererComponent | undefined; Line: LineChartRendererComponent; LinearGradient?: LineChartRendererComponent | undefined; Path: LineChartRendererComponent; Rect: LineChartRendererComponent; Surface: LineChartRendererComponent; Text: LineChartRendererComponent; capabilities?: { clipPaths?: boolean; gradients?: boolean; maxSurfaceWidth?: number; pathGradients?: boolean; rectClips?: boolean; text?: boolean; viewportWindowing?: boolean; }; name?: string; }; export type LineChartSelectionModel<TData = unknown> = { index: number; x: number; y: number; xLabel: string; series: Array<LineChartSelectedSeriesItem<TData>>; tooltip: LineChartTooltipRenderProps<TData> | undefined; }; //# sourceMappingURL=types.d.ts.map