// Type definitions for plotly.js 1.44 // Project: https://plot.ly/javascript/, https://github.com/plotly/plotly.js // Definitions by: Chris Gervang // Martin Duparc // Frederik Aalund // taoqf // Dadstart // Jared Szechy // Drew Diamantoukos // Sooraj Pudiyadath // Jon Freedman // Megan Riel-Mehan // Takafumi Yamaguchi // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.3 import * as _d3 from "d3"; export as namespace Plotly; export interface StaticPlots { resize(root: Root): void; } export const Plots: StaticPlots; export interface Point { x: number; y: number; z: number; } export interface PlotScatterDataPoint { curveNumber: number; data: PlotData; pointIndex: number; pointNumber: number; x: number; xaxis: LayoutAxis; y: number; yaxis: LayoutAxis; } export interface PlotDatum { curveNumber: number; data: PlotData; pointIndex: number; pointNumber: number; x: Datum; xaxis: LayoutAxis; y: Datum; yaxis: LayoutAxis; } export interface PlotMouseEvent { points: PlotDatum[]; event: MouseEvent; } export interface PlotCoordinate { x: number; y: number; pointNumber: number; } export interface SelectionRange { x: number[]; y: number[]; } export type PlotSelectedData = Partial; export interface PlotSelectionEvent { points: PlotDatum[]; range?: SelectionRange; lassoPoints?: SelectionRange; } export type PlotRestyleEvent = [ any, // update object -- attribute updated: new value number[] // array of traces updated ]; export interface PlotAxis { range: [number, number]; autorange: boolean; } export interface PlotScene { center: Point; eye: Point; up: Point; } export interface PlotRelayoutEvent { xaxis: PlotAxis; yaxis: PlotAxis; scene: PlotScene; } export interface ClickAnnotationEvent { index: number; annotation: Annotations; fullAnnotation: Annotations; event: MouseEvent; } export interface FrameAnimationEvent { name: string; frame: Frame; animation: { frame: { duration: number; redraw: boolean; }; transition: Transition; }; } export interface LegendClickEvent { event: MouseEvent; node: PlotlyHTMLElement; curveNumber: number; expandedIndex: number; data: Data[]; layout: Partial; frames: Frame[]; config: Partial; fullData: Data[]; fullLayout: Partial; } export interface SliderChangeEvent { slider: Slider; step: SliderStep; interaction: boolean; previousActive: number; } export interface SliderStartEvent { slider: Slider; } export interface SliderEndEvent { slider: Slider; step: SliderStep; } export interface BeforePlotEvent { data: Data[]; layout: Partial; config: Partial; } export interface PlotlyHTMLElement extends HTMLElement { on(event: 'plotly_click' | 'plotly_hover' | 'plotly_unhover', callback: (event: PlotMouseEvent) => void): void; on(event: 'plotly_selecting' | 'plotly_selected', callback: (event: PlotSelectionEvent) => void): void; on(event: 'plotly_restyle', callback: (data: PlotRestyleEvent) => void): void; on(event: 'plotly_relayout', callback: (event: PlotRelayoutEvent) => void): void; on(event: 'plotly_clickannotation', callback: (event: ClickAnnotationEvent) => void): void; on(event: 'plotly_animatingframe', callback: (event: FrameAnimationEvent) => void): void; on(event: 'plotly_legendclick' | 'plotly_legenddoubleclick', callback: (event: LegendClickEvent) => boolean): void; on(event: 'plotly_sliderchange', callback: (event: SliderChangeEvent) => void): void; on(event: 'plotly_sliderend', callback: (event: SliderEndEvent) => void): void; on(event: 'plotly_sliderstart', callback: (event: SliderStartEvent) => void): void; on(event: 'plotly_event', callback: (data: any) => void): void; on(event: 'plotly_beforeplot', callback: (event: BeforePlotEvent) => boolean): void; on(event: 'plotly_afterexport' | 'plotly_afterplot' | 'plotly_animated' | 'plotly_animationinterrupted' | 'plotly_autosize' | 'plotly_beforeexport' | 'plotly_deselect' | 'plotly_doubleclick' | 'plotly_framework' | 'plotly_redraw' | 'plotly_transitioning' | 'plotly_transitioninterrupted', callback: () => void): void; removeAllListeners: (handler: string) => void; } export interface ToImgopts { format: 'jpeg' | 'png' | 'webp' | 'svg'; width: number; height: number; } export interface DownloadImgopts { format: 'jpeg' | 'png' | 'webp' | 'svg'; width: number; height: number; filename: string; } export type Root = string | HTMLElement; export function newPlot(root: Root, data: Data[], layout?: Partial, config?: Partial): Promise; export function plot(root: Root, data: Data[], layout?: Partial, config?: Partial): Promise; export function relayout(root: Root, layout: Partial): Promise; export function redraw(root: Root): Promise; export function purge(root: Root): void; export const d3: typeof _d3; export function restyle(root: Root, aobj: Data, traces?: number[] | number): Promise; export function update(root: Root, traceUpdate: Data, layoutUpdate: Partial, traces?: number[] | number): Promise; export function addTraces(root: Root, traces: Data | Data[], newIndices?: number[] | number): Promise; export function deleteTraces(root: Root, indices: number[] | number): Promise; export function moveTraces(root: Root, currentIndices: number[] | number, newIndices?: number[] | number): Promise; export function extendTraces(root: Root, update: Data | Data[], indices: number | number[]): Promise; export function prependTraces(root: Root, update: Data | Data[], indices: number | number[]): Promise; export function toImage(root: Root, opts: ToImgopts): Promise; export function downloadImage(root: Root, opts: DownloadImgopts): Promise; export function react(root: Root, data: Data[], layout?: Partial, config?: Partial): Promise; export function addFrames(root: Root, frames: Array>): Promise; export function deleteFrames(root: Root, frames: number[]): Promise; // Layout export interface Layout { title: string | Partial<{ text: string; font: Partial; xref: 'container' | 'paper'; yref: 'container' | 'paper'; x: number; y: number; xanchor: 'auto' | 'left' | 'center' | 'right'; yanchor: 'auto' | 'top' | 'middle' | 'bottom'; pad: Partial }>; titlefont: Partial; autosize: boolean; showlegend: boolean; paper_bgcolor: Color; plot_bgcolor: Color; separators: string; hidesources: boolean; xaxis: Partial; xaxis2: Partial; xaxis3: Partial; xaxis4: Partial; xaxis5: Partial; xaxis6: Partial; xaxis7: Partial; xaxis8: Partial; xaxis9: Partial; yaxis: Partial; yaxis2: Partial; yaxis3: Partial; yaxis4: Partial; yaxis5: Partial; yaxis6: Partial; yaxis7: Partial; yaxis8: Partial; yaxis9: Partial; margin: Partial; height: number; width: number; hovermode: 'closest' | 'x' | 'y' | false; hoverlabel: Partial