From 2129d190fc29763481a197138ab04771eb2f8cfc Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Mon, 24 Oct 2016 20:04:09 -0400 Subject: [PATCH 1/3] Modernize Vega Definitions Add universal module form so it can be used with the vega headless module, also adds some types for the vega headless mode views. --- vega/index.d.ts | 45 +++++++++++++++++++++++++++++++-------------- 1 file changed, 31 insertions(+), 14 deletions(-) diff --git a/vega/index.d.ts b/vega/index.d.ts index 37f9bb9f35..d22ac569c0 100644 --- a/vega/index.d.ts +++ b/vega/index.d.ts @@ -5,16 +5,22 @@ declare namespace Vega { + 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 { @@ -541,3 +555,6 @@ declare namespace vg { // TODO: classes for View, Model, etc. } + +export = vg; +export as namespace vg; From 6b867a59e38786874b530ab5c3037f440c35590d Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Tue, 25 Oct 2016 16:04:24 -0400 Subject: [PATCH 2/3] Make 'Vega' name globally visible in script context This should fix the failing test --- vega/index.d.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/vega/index.d.ts b/vega/index.d.ts index d22ac569c0..29716e098a 100644 --- a/vega/index.d.ts +++ b/vega/index.d.ts @@ -558,3 +558,4 @@ declare namespace vg { export = vg; export as namespace vg; +export as namespace Vega; From 9b1ab64b399f6d99ec32ebcfc08ba5e36ec49edf Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Mon, 31 Oct 2016 17:07:33 -0400 Subject: [PATCH 3/3] Merge namespaces But keep both `export as` global names for backwards compatibility This introduces the `vg` members onto the Vega namespace, which is incorrect, however it leaves existing code which depends on this dts as functional while making allowing module consumers to have all Vega types available. --- vega/index.d.ts | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/vega/index.d.ts b/vega/index.d.ts index 29716e098a..57de502144 100644 --- a/vega/index.d.ts +++ b/vega/index.d.ts @@ -3,7 +3,7 @@ // Definitions by: Tom Crockett // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -declare namespace Vega { +declare namespace vg { export type ChartViewConstructor = { (args: {renderer: 'svg'} & ViewArgs): SvgView; @@ -525,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;