UNPKG

@gpa-gemstone/react-graph

Version:
98 lines (97 loc) 4.03 kB
import * as React from 'react'; export interface IGraphContext extends IHandlerRegistration, IDataRegistration { XDomain: [number, number]; XHover: number; XHoverSnap: number; YHover: number[]; YHoverSnap: number[]; YDomain: [number, number][]; CurrentMode: SelectType; Data: React.MutableRefObject<Map<string, IDataSeries>>; DataGuid: string; MassEnableCommand: { requester: string; command: "disable-others" | "enable-all" | "none"; }; XApplyPixelOffset: (x: number) => number; YApplyPixelOffset: (y: number) => number; XTransformation: (x: number) => number; YTransformation: (y: number, axis: AxisIdentifier | number) => number; UpdateFlag: number; XInverseTransformation: (p: number) => number; YInverseTransformation: (p: number, axis: AxisIdentifier | number) => number; SetXDomain: React.SetStateAction<[number, number]> | ((t: [number, number]) => void); SetYDomain: React.SetStateAction<[number, number]> | ((t: [number, number][]) => void); } export declare const GraphContext: React.Context<IGraphContext>; export interface IDataSeries { getMin: (tDomain: [number, number]) => number | undefined; getMax: (tDomain: [number, number]) => number | undefined; getPoints: (xValue: number, pointsAround?: number) => [...number[]][] | undefined; enabled: boolean; axis: AxisIdentifier | undefined; legend?: React.ReactElement; } export type LineStyle = '-' | ':' | 'solid' | 'dash' | 'short-dash' | 'long-dash'; export declare const LineMap: Map<LineStyle, string>; export type FillStyle = 'fill'; export type AxisIdentifier = 'left' | 'right'; export type SelectType = 'zoom-rectangular' | 'zoom-vertical' | 'zoom-horizontal' | 'pan' | 'select'; declare class AxisMapClass<T, U> { private mapBase; private undefinedOverride; size: number; constructor(iterable: Iterable<[T, U]>, undefinedOverride: U); get: (key: T) => U; values: () => IterableIterator<U>; keys: () => IterableIterator<T>; } export declare const AxisMap: AxisMapClass<AxisIdentifier | undefined, number>; export interface IHandlers { onClick?: (x: number, y: number) => void; onRelease?: (x: number, y: number) => void; onPlotLeave?: (x: number, y: number) => void; onMove?: (x: number, y: number) => void; axis: number | AxisIdentifier; allowSnapping: boolean; } export interface IDataRegistration { AddData: ((d: IDataSeries) => string); RemoveData: (key: string) => void; UpdateData: (key: string, d: IDataSeries) => void; SetLegend: (key: string, legend?: React.ReactElement) => void; } export interface IHandlerRegistration { RegisterSelect: (handlers: IHandlers) => string; RemoveSelect: (key: string) => void; UpdateSelect: (key: string, handlers: IHandlers) => void; } export interface IActionFunctions { setTDomain: React.SetStateAction<[number, number]>; setYDomain: React.SetStateAction<[number, number][]>; } interface IContextWrapperProps extends IHandlerRegistration, IDataRegistration { XDomain: [number, number]; MousePosition: [number, number]; MousePositionSnap: [number, number]; YDomain: [number, number][]; CurrentMode: SelectType; MouseIn: boolean; UpdateFlag: number; Data: React.MutableRefObject<Map<string, IDataSeries>>; DataGuid: string; MassEnableCommand: { requester: string; command: "disable-others" | "enable-all" | "none"; }; XApplyPixelOffset: (_: number) => number; YApplyPixelOffset: (_: number) => number; XTransform: (x: number) => number; YTransform: (y: number, axis: AxisIdentifier | number) => number; XInvTransform: (p: number) => number; YInvTransform: (p: number, axis: AxisIdentifier | number) => number; SetXDomain: (x: [number, number]) => void; SetYDomain: (y: [number, number][]) => void; } export declare const ContextWrapper: (props: React.PropsWithChildren<IContextWrapperProps>) => JSX.Element; export {};