UNPKG

@nivo/annotations

Version:
87 lines 2.74 kB
import { Theme } from '@nivo/theming'; import { ReactElement } from 'react'; type PartialShallow<T> = { [P in keyof T]?: T[P] extends object ? object : T[P]; }; type PropertyName = string | number | symbol; type IterateeShorthand<T> = PropertyName | [PropertyName, any] | PartialShallow<T>; type ListIterator<T, TResult> = (value: T, index: number, collection: ArrayLike<T>) => TResult; type ListIterateeCustom<T, TResult> = ListIterator<T, TResult> | IterateeShorthand<T>; export type RelativeOrAbsolutePosition = number | { abs: number; }; export type AnnotationPositionGetter<Datum> = (datum: Datum) => { x: number; y: number; }; export type AnnotationDimensionsGetter<Datum> = (datum: Datum) => { size: number; width: number; height: number; }; export type NoteComponent<Datum> = (props: { datum: Datum; x: number; y: number; }) => JSX.Element; export type NoteSvg<Datum> = string | ReactElement | NoteComponent<Datum>; export type NoteCanvasRenderer<Datum> = (ctx: CanvasRenderingContext2D, props: { datum: Datum; x: number; y: number; theme: Theme; }) => void; export type NoteCanvas<Datum> = string | NoteCanvasRenderer<Datum>; export type Note<Datum> = NoteSvg<Datum> | NoteCanvas<Datum>; export interface BaseAnnotationSpec<Datum> { x?: number; y?: number; note: Note<Datum>; noteX: RelativeOrAbsolutePosition; noteY: RelativeOrAbsolutePosition; noteWidth?: number; noteTextOffset?: number; } export type CircleAnnotationSpec<Datum> = BaseAnnotationSpec<Datum> & { type: 'circle'; size?: number; offset?: number; height?: never; width?: never; }; export type DotAnnotationSpec<Datum> = BaseAnnotationSpec<Datum> & { type: 'dot'; size: number; offset?: number; height?: never; width?: never; }; export type RectAnnotationSpec<Datum> = BaseAnnotationSpec<Datum> & { type: 'rect'; width?: number; height?: number; offset?: number; size?: never; borderRadius?: number; }; export type AnnotationSpec<Datum> = CircleAnnotationSpec<Datum> | DotAnnotationSpec<Datum> | RectAnnotationSpec<Datum>; export type AnnotationType = AnnotationSpec<unknown>['type']; export type AnnotationMatcher<Datum> = AnnotationSpec<Datum> & { match: ListIterateeCustom<Datum, boolean>; offset?: number; }; export type BoundAnnotation<Datum> = Required<AnnotationSpec<Datum>> & { x: number; y: number; datum: Datum; }; export interface AnnotationInstructions { points: [number, number][]; text: [number, number]; angle: number; } export type ComputedAnnotation<Datum> = BoundAnnotation<Datum> & { computed: AnnotationInstructions; }; export {}; //# sourceMappingURL=types.d.ts.map