UNPKG

d3-svg-annotation

Version:

Full documentation: [http://d3-annotation.susielu.com](http://d3-annotation.susielu.com)

182 lines (145 loc) 4.21 kB
import { Dispatch } from 'd3-dispatch'; import { BaseType, Selection } from 'd3-selection'; type Accessors = { [k: string]: () => number }; // TODO figure out what these actually are. type Components = any[]; type Orientation = 'topBottom' | 'leftRight' | 'fixed'; type Align = 'dynamic' | 'left' | 'right' | 'top' | 'bottom' | 'middle'; type LineType = 'horizontal' | 'vertical' | 'none'; type BBox = { x: number, y: number, width: number, height: number }; export default class Annotation<T> { className: string; x: number; y: number; dx: number; dy: number; offset: { x: number; y: number; }; position: { x: number; y: number; }; readonly translation: { x: number; y: number; }; readonly json: { x: number; y: number; dx: number; dy: number; }; constructor({ x, y, dy, dx, data, type, subject, connector, note, disable, id, className }: { x?: number; y?: number; dy?: number; dx?: number; data: any; type: any; subject: any; connector: any; note: any; disable: any; id: any; className: string; }); annotations(anotations: any[]): Annotation<T>; accessors(accessors: { x?: (datum: T) => any, y?: (datum: T) => any }): Annotation<T>; accessorsInverse(accessors: any): Annotation<T>; editMode(editMode: boolean): Annotation<T>; notePadding(padding: number): Annotation<T>; type(type: any): Annotation<T>; updatePosition(): void; updateOffset(): void; update(): void; updatedAccessors(): void; } export class Type<T> { a: Selection<BaseType, any, any, any>; note: Selection<Element, any, any, any> | false; noteContent: Selection<Element, any, any, any> | false; connector: Selection<Element, any, any, any> | false; subject: Selection<Element, any, any, any> | false; annotation: Annotation<T>; editMode: boolean; notePadding: number; offsetCornerX: number; offsetCornerY: number; constructor(args: { a: Selection<any, any, any, any>, annotation: Annotation<T>, editMode?: boolean, dispatcher?: Dispatch<Element>, notePadding?: number, accessors?: Accessors }); init(accessors: Accessors): void; mapY(accessors: Accessors): void; mapX(accessors: Accessors): void; updateEditMode(): void; drawOnSVG( component: Selection<Element, any, any, any>, builders: Array< { type: string, className: string, attributes: {}, handles?: any[] }>): void; getNoteBBox(): BBox; getNoteBBoxOffset(): BBox; drawSubject(context?: { type: string }): Components; drawConnector(context?: { type: string, end: string }): Components; drawNote(context: { orientation: Orientation, align: Align, lineType: LineType, bbox: BBox, }): Components; drawNoteContent(context: { orientation: Orientation, lineType: LineType, align: Align, bbox: BBox, }): Array<void>; drawOnScreen(component: any, drawFunction: () => any): void; redrawSubmit(): void; redrawConnector(bbox?: BBox): void; redrawNote(bbox?: BBox): void; setPosition(): void; setOffset(): void; setPositionWithAccessors(accessors?: Accessors): void; setClassName(): void; draw(): void; dragstarted(): void; drawended(): void; dragSubject(): void; dragNode(): void; mapHandler(handles: Array<{}>): { start: () => void, end: () => void }; } // TODO define these export class annotationLabel<T> extends Type<T> { } export class annotationCallout<T> extends Type<T> { } export class annotationCalloutElbow<T> extends Type<T> { } export class annotationCalloutCurve<T> extends Type<T> { } export class annotationCalloutCircle<T> extends Type<T> { } export class annotationCalloutRect<T> extends Type<T> { } export class annotationXYThreshold<T> extends Type<T> { } export class annotationBadge<T> extends Type<T> { } interface CustomAnnotationSettings { disable?: string[]; className?: string; subject?: any; connector?: any; note?: any; } export class annotationCustomType<T> extends Type<T> { constructor(type: typeof Type, settings: CustomAnnotationSettings); } export function annotation<T>(): Annotation<T>; export as namespace d3;