react-native-chart-kit
Version:
Beautiful React Native charts for dashboards, reports, and data-rich mobile apps.
134 lines • 4.05 kB
TypeScript
import type { ComponentType, ReactNode } from "react";
import type { CircleProps, GProps, LineProps, LinearGradientProps, PathProps, RectProps, StopProps, SvgProps, TextProps } from "react-native-svg";
import type { ChartRenderLayerName } from "./layerOrder";
export type SvgTextMeasurementOptions = {
fontFamily?: TextProps["fontFamily"];
fontSize?: number;
fontWeight?: TextProps["fontWeight"];
lineHeight?: number;
letterSpacing?: number;
maxWidth?: number;
};
export type SvgMeasuredText = {
width: number;
height: number;
};
export type SvgTextMeasurer = (text: string, options?: SvgTextMeasurementOptions) => SvgMeasuredText;
export type SvgTestableProps = {
testID?: string;
};
export type SvgSurfaceProps = SvgProps & SvgTestableProps & {
width: number;
height: number;
children?: ReactNode;
};
export type SvgGroupProps = GProps & SvgTestableProps & {
children?: ReactNode;
};
export type SvgPathProps = PathProps & SvgTestableProps;
export type SvgRectProps = RectProps & SvgTestableProps;
export type SvgHitRegionProps = Omit<RectProps, "fill" | "fillOpacity"> & SvgTestableProps & {
disabled?: boolean;
fill?: RectProps["fill"];
fillOpacity?: RectProps["fillOpacity"];
height: number;
width: number;
x: number;
y: number;
};
export type SvgCircleProps = CircleProps & SvgTestableProps;
export type SvgTextProps = TextProps & SvgTestableProps;
export type SvgLineProps = LineProps & SvgTestableProps;
export type SvgSymbolShape = "circle" | "square" | "diamond" | "line";
export type SvgSymbolProps = SvgTestableProps & {
shape: SvgSymbolShape;
x: number;
y: number;
size: number;
fill?: string;
stroke?: string;
strokeWidth?: number;
opacity?: number;
strokeLinecap?: LineProps["strokeLinecap"];
cornerRadius?: number;
};
export type SvgLayerProps = SvgGroupProps & {
name: ChartRenderLayerName;
};
export type SvgDefsProps = {
children?: ReactNode;
};
export type SvgClipRectProps = SvgTestableProps & {
id: string;
x: number;
y: number;
width: number;
height: number;
};
export type SvgSpacing = number | {
bottom?: number;
left?: number;
right?: number;
top?: number;
};
export type SvgClipPolicyInput = {
enabled?: boolean;
height: number;
id: string;
inset?: SvgSpacing;
width: number;
x: number;
y: number;
};
export type SvgClipPolicy = {
clipPath: string;
clipRect: SvgClipRectProps;
enabled: true;
} | {
clipPath?: undefined;
clipRect?: undefined;
enabled: false;
};
export type SvgGradientStop = {
offset: NonNullable<StopProps["offset"]>;
color: string;
opacity?: number;
};
export type SvgLinearGradientDefProps = Omit<LinearGradientProps, "children"> & SvgTestableProps & {
id: string;
stops: SvgGradientStop[];
};
export type SvgRendererOptions = {
capabilities?: Partial<SvgRendererCapabilities>;
measureText?: SvgTextMeasurer;
textMeasurement?: SvgTextMeasurementOptions;
};
export type SvgRendererCapabilities = {
animation: "none" | "reactNative";
clipPaths: boolean;
gradients: boolean;
hitRegions: boolean;
layers: boolean;
shadows: boolean;
symbols: boolean;
testIds: boolean;
textMeasurement: "fallback" | "custom";
};
export type SvgRenderer = {
Surface: ComponentType<SvgSurfaceProps>;
Group: ComponentType<SvgGroupProps>;
Path: ComponentType<SvgPathProps>;
Rect: ComponentType<SvgRectProps>;
HitRegion: ComponentType<SvgHitRegionProps>;
Circle: ComponentType<SvgCircleProps>;
Symbol: ComponentType<SvgSymbolProps>;
Text: ComponentType<SvgTextProps>;
Line: ComponentType<SvgLineProps>;
Layer: ComponentType<SvgLayerProps>;
Defs: ComponentType<SvgDefsProps>;
ClipRect: ComponentType<SvgClipRectProps>;
LinearGradient: ComponentType<SvgLinearGradientDefProps>;
capabilities: SvgRendererCapabilities;
measureText: SvgTextMeasurer;
};
//# sourceMappingURL=types.d.ts.map