diff --git a/vega/index.d.ts b/vega/index.d.ts index 37f9bb9f35..57de502144 100644 --- a/vega/index.d.ts +++ b/vega/index.d.ts @@ -3,18 +3,24 @@ // Definitions by: Tom Crockett // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -declare namespace Vega { +declare namespace vg { + + export type ChartViewConstructor = { + (args: {renderer: 'svg'} & ViewArgs): SvgView; + (args: {renderer: 'canvas'} & ViewArgs): CanvasView; + (args: ViewArgs): View; + }; export interface Parse { - spec(url: string, callback: (chart: (args: ViewArgs) => View) => void): void; - spec(spec: Spec, callback: (chart: (args: ViewArgs) => View) => void): void; + spec(url: string, callback: (chart: ChartViewConstructor) => void): void; + spec(spec: Spec, callback: (chart: ChartViewConstructor) => void): void; data(dataSet: Data[], callback: () => void): void; // TODO all the other stuff } export interface ViewArgs { // TODO docs - el: any; + el?: any; data?: any; hover?: boolean; renderer?: string; @@ -23,33 +29,41 @@ declare namespace Vega { export interface View { // TODO docs width(): number; - width(w: number): View; + width(w: number): this; height(): number; - height(h: number): View; + height(h: number): this; padding(): Padding; - padding(p: Padding): View; + padding(p: Padding): this; viewport(): number[]; - viewport(v: number[]): View; + viewport(v: number[]): this; - renderer(r: string): View; + renderer(r: string): this; data(): Runtime.DataSets; - data(d: any/*TODO*/): View; + data(d: any/*TODO*/): this; - initialize(selector: string): View; - initialize(node: Element): View; + initialize(selector: string): this; + initialize(node: Element): this; - render(r?: any[]): View; + render(r?: any[]): this; - update(options?: UpdateOptions): View; + update(options?: UpdateOptions): this; model(): Vega.Model; defs(): Defs; - defs(defs: Defs): View; + defs(defs: Defs): this; + } + + export interface SvgView extends View { + svg(): string; + } + + export interface CanvasView extends View { + canvas(): any; // Returns a node-canvas instance } export interface Padding { @@ -511,15 +525,13 @@ declare namespace Vega { offset?: number; band?: boolean; } -} -declare namespace vg { - export var parse: Vega.Parse; + export var parse: Parse; export namespace scene { - export function item(mark: Vega.Node): Vega.Node; + export function item(mark: Node): Node; } - export class Bounds implements Vega.Bounds { + export class Bounds implements Bounds { x1: number; y1: number; x2: number; @@ -541,3 +553,7 @@ declare namespace vg { // TODO: classes for View, Model, etc. } + +export = vg; +export as namespace vg; +export as namespace Vega;