From 86baab4f5488a27554a85539751623bfe6b69b26 Mon Sep 17 00:00:00 2001 From: Tom Wanzek Date: Sat, 20 Aug 2016 13:06:14 -0400 Subject: [PATCH 1/5] d3-selection and version numbers. * d3-selection: Templated `Local` to allow generic parameter for datum type. Added additonal signatures to `Selection.property(...)` to accept `Local` as first argument. (Thanks to @gustavderdrache for catching these enhancements) * Updated version numbers header comments to be current. --- d3-array/index.d.ts | 2 +- d3-axis/index.d.ts | 2 +- d3-brush/index.d.ts | 2 +- d3-chord/index.d.ts | 2 +- d3-collection/index.d.ts | 2 +- d3-color/index.d.ts | 2 +- d3-dispatch/index.d.ts | 2 +- d3-drag/index.d.ts | 2 +- d3-ease/index.d.ts | 2 +- d3-force/index.d.ts | 2 +- d3-format/index.d.ts | 2 +- d3-geo/index.d.ts | 2 +- d3-hierarchy/index.d.ts | 2 +- d3-hsv/index.d.ts | 2 +- d3-interpolate/index.d.ts | 2 +- d3-path/index.d.ts | 2 +- d3-polygon/index.d.ts | 2 +- d3-quadtree/index.d.ts | 2 +- d3-queue/index.d.ts | 2 +- d3-random/index.d.ts | 2 +- d3-scale/index.d.ts | 2 +- d3-selection-multi/index.d.ts | 2 +- d3-selection/d3-selection-tests.ts | 14 ++++++++--- d3-selection/index.d.ts | 39 ++++++++++++++++++++++++++---- d3-shape/index.d.ts | 2 +- d3-time-format/index.d.ts | 2 +- d3-time/index.d.ts | 2 +- d3-timer/index.d.ts | 2 +- d3-transition/index.d.ts | 2 +- d3-voronoi/index.d.ts | 2 +- d3-zoom/index.d.ts | 2 +- 31 files changed, 73 insertions(+), 38 deletions(-) diff --git a/d3-array/index.d.ts b/d3-array/index.d.ts index 933f59e5a6..998058dbf4 100644 --- a/d3-array/index.d.ts +++ b/d3-array/index.d.ts @@ -1,4 +1,4 @@ -// Type definitions for D3JS d3-array module 1.0.0 +// Type definitions for D3JS d3-array module v1.0.1 // Project: https://github.com/d3/d3-array // Definitions by: Alex Ford , Boris Yankov , Tom Wanzek // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped diff --git a/d3-axis/index.d.ts b/d3-axis/index.d.ts index 233dd5f40d..e663743d44 100644 --- a/d3-axis/index.d.ts +++ b/d3-axis/index.d.ts @@ -1,4 +1,4 @@ -// Type definitions for D3JS d3-axis module 1.0.0 +// Type definitions for D3JS d3-axis module v1.0.3 // Project: https://github.com/d3/d3-axis/ // Definitions by: Tom Wanzek , Alex Ford , Boris Yankov // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped diff --git a/d3-brush/index.d.ts b/d3-brush/index.d.ts index bfca8da856..c1fd783668 100644 --- a/d3-brush/index.d.ts +++ b/d3-brush/index.d.ts @@ -1,4 +1,4 @@ -// Type definitions for D3JS d3-brush module 1.0.1 +// Type definitions for D3JS d3-brush module v1.0.2 // Project: https://github.com/d3/d3-brush/ // Definitions by: Tom Wanzek , Alex Ford , Boris Yankov // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped diff --git a/d3-chord/index.d.ts b/d3-chord/index.d.ts index f78cb62b78..727ec0bea8 100644 --- a/d3-chord/index.d.ts +++ b/d3-chord/index.d.ts @@ -1,4 +1,4 @@ -// Type definitions for D3JS d3-chord module 1.0.0 +// Type definitions for D3JS d3-chord module v1.0.2 // Project: https://github.com/d3/d3-chord/ // Definitions by: Tom Wanzek , Alex Ford , Boris Yankov // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped diff --git a/d3-collection/index.d.ts b/d3-collection/index.d.ts index 889879681f..396d871767 100644 --- a/d3-collection/index.d.ts +++ b/d3-collection/index.d.ts @@ -1,4 +1,4 @@ -// Type definitions for D3JS d3-collection module 1.0.0 +// Type definitions for D3JS d3-collection module v1.0.1 // Project: https://github.com/d3/d3-collection/ // Definitions by: Tom Wanzek , Alex Ford , Boris Yankov // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped diff --git a/d3-color/index.d.ts b/d3-color/index.d.ts index 36124b3a03..ed9c706667 100644 --- a/d3-color/index.d.ts +++ b/d3-color/index.d.ts @@ -1,4 +1,4 @@ -// Type definitions for D3JS d3-color module 1.0.0 +// Type definitions for D3JS d3-color module v1.0.1 // Project: https://github.com/d3/d3-color/ // Definitions by: Tom Wanzek , Alex Ford , Boris Yankov // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped diff --git a/d3-dispatch/index.d.ts b/d3-dispatch/index.d.ts index 00f63de565..71d77da9f7 100644 --- a/d3-dispatch/index.d.ts +++ b/d3-dispatch/index.d.ts @@ -1,4 +1,4 @@ -// Type definitions for D3JS d3-dispatch module 1.0.0 +// Type definitions for D3JS d3-dispatch module v1.0.1 // Project: https://github.com/d3/d3-dispatch/ // Definitions by: Tom Wanzek , Alex Ford , Boris Yankov // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped diff --git a/d3-drag/index.d.ts b/d3-drag/index.d.ts index 698dcad238..9ec6605753 100644 --- a/d3-drag/index.d.ts +++ b/d3-drag/index.d.ts @@ -1,4 +1,4 @@ -// Type definitions for D3JS d3-drag module 1.0.0 +// Type definitions for D3JS d3-drag module v1.0.1 // Project: https://github.com/d3/d3-drag/ // Definitions by: Tom Wanzek , Alex Ford , Boris Yankov // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped diff --git a/d3-ease/index.d.ts b/d3-ease/index.d.ts index b971cc9c14..c1138145d5 100644 --- a/d3-ease/index.d.ts +++ b/d3-ease/index.d.ts @@ -1,4 +1,4 @@ -// Type definitions for D3JS d3-ease module 1.0.0 +// Type definitions for D3JS d3-ease module v1.0.1 // Project: https://github.com/d3/d3-ease/ // Definitions by: Tom Wanzek , Alex Ford , Boris Yankov // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped diff --git a/d3-force/index.d.ts b/d3-force/index.d.ts index 2e296368be..007e6adf90 100644 --- a/d3-force/index.d.ts +++ b/d3-force/index.d.ts @@ -1,4 +1,4 @@ -// Type definitions for D3JS d3-force module 1.0.0 +// Type definitions for D3JS d3-force module v1.0.2 // Project: https://github.com/d3/d3-force/ // Definitions by: Tom Wanzek , Alex Ford , Boris Yankov // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped diff --git a/d3-format/index.d.ts b/d3-format/index.d.ts index 31c63f7fdf..c4936242b0 100644 --- a/d3-format/index.d.ts +++ b/d3-format/index.d.ts @@ -1,4 +1,4 @@ -// Type definitions for D3JS d3-format module 1.0.0 +// Type definitions for D3JS d3-format module v1.0.2 // Project: https://github.com/d3/d3-format/ // Definitions by: Tom Wanzek , Alex Ford , Boris Yankov // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped diff --git a/d3-geo/index.d.ts b/d3-geo/index.d.ts index beac52518d..94e48bd810 100644 --- a/d3-geo/index.d.ts +++ b/d3-geo/index.d.ts @@ -1,4 +1,4 @@ -// Type definitions for D3JS d3-geo module 1.2.0 +// Type definitions for D3JS d3-geo module v1.2.4 // Project: https://github.com/d3/d3-geo/ // Definitions by: Hugues Stefanski , Tom Wanzek , Alex Ford , Boris Yankov // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped diff --git a/d3-hierarchy/index.d.ts b/d3-hierarchy/index.d.ts index 2009406c82..7eef444875 100644 --- a/d3-hierarchy/index.d.ts +++ b/d3-hierarchy/index.d.ts @@ -1,4 +1,4 @@ -// Type definitions for D3JS d3-hierarchy module 1.0.0 +// Type definitions for D3JS d3-hierarchy module v1.0.2 // Project: https://github.com/d3/d3-hierarchy/ // Definitions by: Tom Wanzek , Alex Ford , Boris Yankov // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped diff --git a/d3-hsv/index.d.ts b/d3-hsv/index.d.ts index bc1b775498..a7501b60c7 100644 --- a/d3-hsv/index.d.ts +++ b/d3-hsv/index.d.ts @@ -1,4 +1,4 @@ -// Type definitions for D3JS d3-hsv module 0.0.3 +// Type definitions for D3JS d3-hsv module v0.0.3 // Project: https://github.com/d3/d3-hsv/ // Definitions by: Yuri Feldman // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped diff --git a/d3-interpolate/index.d.ts b/d3-interpolate/index.d.ts index 0b065fe104..a4d145d2b8 100644 --- a/d3-interpolate/index.d.ts +++ b/d3-interpolate/index.d.ts @@ -1,4 +1,4 @@ -// Type definitions for D3JS d3-interpolate module 1.1.0 +// Type definitions for D3JS d3-interpolate module v1.1.1 // Project: https://github.com/d3/d3-interpolate/ // Definitions by: Tom Wanzek , Alex Ford , Boris Yankov // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped diff --git a/d3-path/index.d.ts b/d3-path/index.d.ts index 6949affa95..b1e7752267 100644 --- a/d3-path/index.d.ts +++ b/d3-path/index.d.ts @@ -1,4 +1,4 @@ -// Type definitions for D3JS d3-path module 1.0.0 +// Type definitions for D3JS d3-path module v1.0.1 // Project: https://github.com/d3/d3-path/ // Definitions by: Tom Wanzek , Alex Ford , Boris Yankov // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped diff --git a/d3-polygon/index.d.ts b/d3-polygon/index.d.ts index ae7e8dfd45..40dbaa4f4f 100644 --- a/d3-polygon/index.d.ts +++ b/d3-polygon/index.d.ts @@ -1,4 +1,4 @@ -// Type definitions for D3JS d3-polygon module 1.0.0 +// Type definitions for D3JS d3-polygon module v1.0.1 // Project: https://github.com/d3/d3-polygon/ // Definitions by: Tom Wanzek , Alex Ford , Boris Yankov // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped diff --git a/d3-quadtree/index.d.ts b/d3-quadtree/index.d.ts index db21e4c920..5607060fd5 100644 --- a/d3-quadtree/index.d.ts +++ b/d3-quadtree/index.d.ts @@ -1,4 +1,4 @@ -// Type definitions for D3JS d3-quadtree module 1.0.0 +// Type definitions for D3JS d3-quadtree module v1.0.1 // Project: https://github.com/d3/d3-quadtree/ // Definitions by: Tom Wanzek , Alex Ford , Boris Yankov // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped diff --git a/d3-queue/index.d.ts b/d3-queue/index.d.ts index 75f7324d04..0ca41b698f 100644 --- a/d3-queue/index.d.ts +++ b/d3-queue/index.d.ts @@ -1,4 +1,4 @@ -// Type definitions for D3JS d3-queue module 3.0.1 +// Type definitions for D3JS d3-queue module v3.0.2 // Project: https://github.com/d3/d3-queue/ // Definitions by: Tom Wanzek , Alex Ford , Boris Yankov // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped diff --git a/d3-random/index.d.ts b/d3-random/index.d.ts index 807d217bdb..ac2f7557da 100644 --- a/d3-random/index.d.ts +++ b/d3-random/index.d.ts @@ -1,4 +1,4 @@ -// Type definitions for D3JS d3-random module 1.0.0 +// Type definitions for D3JS d3-random module v1.0.1 // Project: https://github.com/d3/d3-random/ // Definitions by: Tom Wanzek , Alex Ford , Boris Yankov // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped diff --git a/d3-scale/index.d.ts b/d3-scale/index.d.ts index 26db326b00..5ad7cf395f 100644 --- a/d3-scale/index.d.ts +++ b/d3-scale/index.d.ts @@ -1,4 +1,4 @@ -// Type definitions for D3JS d3-scale module 1.0.1 +// Type definitions for D3JS d3-scale module v1.0.3 // Project: https://github.com/d3/d3-scale/ // Definitions by: Tom Wanzek , Alex Ford , Boris Yankov // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped diff --git a/d3-selection-multi/index.d.ts b/d3-selection-multi/index.d.ts index 455fe8e91a..6e106d6dc3 100644 --- a/d3-selection-multi/index.d.ts +++ b/d3-selection-multi/index.d.ts @@ -1,4 +1,4 @@ -// Type definitions for D3JS d3-selection-multi module 1.0.0 +// Type definitions for D3JS d3-selection-multi module v1.0.0 // Project: https://github.com/d3/d3-selection-multi/ // Definitions by: Alex Ford , Boris Yankov // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped diff --git a/d3-selection/d3-selection-tests.ts b/d3-selection/d3-selection-tests.ts index dfcecd457a..21043a23af 100644 --- a/d3-selection/d3-selection-tests.ts +++ b/d3-selection/d3-selection-tests.ts @@ -894,14 +894,20 @@ positions = d3Selection.touches(h, changedTouches); // --------------------------------------------------------------------------------------- let xElement: Element; -let foo: d3Selection.Local = d3Selection.local(); +let foo: d3Selection.Local = d3Selection.local(); let propName: string = foo.toString(); -console.log('Local Property Name: %s', propName); +// direct set & get on Local object +xElement = foo.set(xElement, [1, 2, 3]); +let array: number[] = foo.get(xElement); -xElement = foo.set(xElement, 'test'); +// test read & write of .property() access to locals +array = d3Selection.select(xElement) + .property(foo, [3, 2, 1]) + .property(foo, () => [999]) + .property(foo); -// TODO: complete remaing tests for Local +foo.remove(xElement); // --------------------------------------------------------------------------------------- // Tests of Namespace diff --git a/d3-selection/index.d.ts b/d3-selection/index.d.ts index d63ef95d15..42c9b2f112 100644 --- a/d3-selection/index.d.ts +++ b/d3-selection/index.d.ts @@ -1,4 +1,4 @@ -// Type definitions for D3JS d3-selection module 1.0.0 +// Type definitions for D3JS d3-selection module v1.0.2 // Project: https://github.com/d3/d3-selection/ // Definitions by: Tom Wanzek , Alex Ford , Boris Yankov // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped @@ -129,9 +129,29 @@ interface Selection, priority?: null | 'important'): this; property(name: string): any; + /** + * Look up a local variable on the first node of this selection. Note that this is not equivalent to `local.get(selection.node())` in that it will not look up locals set on the parent node(s). + * + * @param name The `d3.local` variable to look up. + */ + property(name: Local): T | undefined; property(name: string, value: ValueFn): this; property(name: string, value: null): this; property(name: string, value: any): this; + /** + * Store a value in a `d3.local` variable. This is equivalent to `selection.each(function (d, i, g) { name.set(this, value.call(this, d, i, g)); })` but more concise. + * + * @param name A `d3.local` variable + * @param value A callback that returns the value to store + */ + property(name: Local, value: ValueFn): this; + /** + * Store a value in a `d3.local` variable for each node in the selection. This is equivalent to `selection.each(function () { name.set(this, value); })` but more concise. + * + * @param name A `d3.local` variable + * @param value A callback that returns the value to store + */ + property(name: Local, value: T): this; text(): string; text(value: string | number | boolean): this; @@ -262,10 +282,19 @@ export function touches(container: ContainerElement, touches?: TouchList): Array // --------------------------------------------------------------------------- -export interface Local { - get(node: Element): any; +export interface Local { + /** + * Retrieves a local variable stored on the node (or one of its parents). + */ + get(node: Element): T | undefined; + /** + * + */ remove(node: Element): boolean; - set(node: Element, value: any): Element; + /** + * Store a value for this local variable. Calling `.get()` on children of this node will also retrieve the variable's value. + */ + set(node: Element, value: T): Element; /** * Obtain a string with the internally assigned property name for the local * which is used to store the value on a node @@ -276,7 +305,7 @@ export interface Local { /** * Obtain a new local variable */ -export function local(): Local; +export function local(): Local; // --------------------------------------------------------------------------- // namespace.js related diff --git a/d3-shape/index.d.ts b/d3-shape/index.d.ts index b7b22d0900..01a2302bf9 100644 --- a/d3-shape/index.d.ts +++ b/d3-shape/index.d.ts @@ -1,4 +1,4 @@ -// Type definitions for D3JS d3-shape module 1.0.0 +// Type definitions for D3JS d3-shape module v1.0.3 // Project: https://github.com/d3/d3-shape/ // Definitions by: Tom Wanzek , Alex Ford , Boris Yankov // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped diff --git a/d3-time-format/index.d.ts b/d3-time-format/index.d.ts index 3615911cbd..4533d69dbb 100644 --- a/d3-time-format/index.d.ts +++ b/d3-time-format/index.d.ts @@ -1,4 +1,4 @@ -// Type definitions for d3JS d3-time-format module 2.0.0 +// Type definitions for d3JS d3-time-format module v2.0.2 // Project: https://github.com/d3/d3-time-format/ // Definitions by: Tom Wanzek , Alex Ford , Boris Yankov // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped diff --git a/d3-time/index.d.ts b/d3-time/index.d.ts index 99d0ed9d40..526d0fb43e 100644 --- a/d3-time/index.d.ts +++ b/d3-time/index.d.ts @@ -1,4 +1,4 @@ -// Type definitions for D3JS d3-time module 1.0.0 +// Type definitions for D3JS d3-time module v1.0.2 // Project: https://github.com/d3/d3-time/ // Definitions by: Tom Wanzek , Alex Ford , Boris Yankov // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped diff --git a/d3-timer/index.d.ts b/d3-timer/index.d.ts index c5eded7606..e55b7d864f 100644 --- a/d3-timer/index.d.ts +++ b/d3-timer/index.d.ts @@ -1,4 +1,4 @@ -// Type definitions for d3JS d3-timer module 1.0.1 +// Type definitions for d3JS d3-timer module v1.0.2 // Project: https://github.com/d3/d3-timer/ // Definitions by: Tom Wanzek , Alex Ford , Boris Yankov // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped diff --git a/d3-transition/index.d.ts b/d3-transition/index.d.ts index 1f51884f1d..10b40cc12a 100644 --- a/d3-transition/index.d.ts +++ b/d3-transition/index.d.ts @@ -1,4 +1,4 @@ -// Type definitions for D3JS d3-transition module 1.0.0 +// Type definitions for D3JS d3-transition module v1.0.1 // Project: https://github.com/d3/d3-transition/ // Definitions by: Tom Wanzek , Alex Ford , Boris Yankov // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped diff --git a/d3-voronoi/index.d.ts b/d3-voronoi/index.d.ts index 29482438c1..e16a780c82 100644 --- a/d3-voronoi/index.d.ts +++ b/d3-voronoi/index.d.ts @@ -1,4 +1,4 @@ -// Type definitions for D3JS d3-voronoi module 1.0.1 +// Type definitions for D3JS d3-voronoi module v1.0.2 // Project: https://github.com/d3/d3-voronoi/ // Definitions by: Tom Wanzek , Alex Ford , Boris Yankov // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped diff --git a/d3-zoom/index.d.ts b/d3-zoom/index.d.ts index ad48cb80fa..9d0e6473c0 100644 --- a/d3-zoom/index.d.ts +++ b/d3-zoom/index.d.ts @@ -1,4 +1,4 @@ -// Type definitions for d3JS d3-zoom module 1.0.2 +// Type definitions for d3JS d3-zoom module v1.0.3 // Project: https://github.com/d3/d3-zoom/ // Definitions by: Tom Wanzek , Alex Ford , Boris Yankov // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped From 3575365f13fac1904be48d84ca867dfbe3dcd258 Mon Sep 17 00:00:00 2001 From: Tom Wanzek Date: Sat, 20 Aug 2016 14:53:42 -0400 Subject: [PATCH 2/5] d3-voronoi and d3-shape: * d3-voronoi: Changed VoronoiPoint and VoronoiPointPair from type alias to interface with mandatory first and second elements * d3-shape: Added mandatory first and second element to SeriesPoint interface. Thanks to @gustavderdrache for the suggestion. --- d3-shape/index.d.ts | 4 +++- d3-voronoi/d3-voronoi-tests.ts | 10 ++++++++++ d3-voronoi/index.d.ts | 16 +++++++++++----- 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/d3-shape/index.d.ts b/d3-shape/index.d.ts index 01a2302bf9..cf3f0a5c21 100644 --- a/d3-shape/index.d.ts +++ b/d3-shape/index.d.ts @@ -326,10 +326,12 @@ export var symbolWye: SymbolType; // ----------------------------------------------------------------------------------- -// HACK: SeriesPoint is a [number, number] two-element Array with added +// SeriesPoint is a [number, number] two-element Array with added // data and index properties related to the data element which formed the basis for the // SeriesPoint export interface SeriesPoint extends Array { + 0: number; + 1: number; index: number; data: Datum; } diff --git a/d3-voronoi/d3-voronoi-tests.ts b/d3-voronoi/d3-voronoi-tests.ts index 87617519c3..2255d75b74 100644 --- a/d3-voronoi/d3-voronoi-tests.ts +++ b/d3-voronoi/d3-voronoi-tests.ts @@ -65,6 +65,9 @@ let point: d3Voronoi.VoronoiPoint; point[0] = 10; // x-coordinate point[1] = 10; // y-coordinate +point = [10, 10]; +// point = [10]; // fails, second element for y-coordinate missing +// point = ['a', 'b']; // fails, wrong element type // VoronoiPointPair --------------------------------------------------- @@ -75,6 +78,13 @@ pointPair[0][1] = 10; // y-coordinate of first point pointPair[1][0] = 20; // x-coordinate of second point pointPair[1][1] = 10; // y-coordinate of second point +pointPair = [[10, 10], [50, 50]]; + +// pointPair = [[10, 10]]; // fails, second point coordinates missing +// pointPair = [[10, 10], [50]]; // fails, one element is not of type [number, number] +// pointPair = [[10], [50, 50]]; // fails, one element is not of type [number, number] +// pointPair = [['a', 10], [50, 50]]; // fails, one element is not of type [number, number] + // VoronoiPolygon ------------------------------------------------------- let voronoiPolygon: d3Voronoi.VoronoiPolygon; diff --git a/d3-voronoi/index.d.ts b/d3-voronoi/index.d.ts index e16a780c82..0265019451 100644 --- a/d3-voronoi/index.d.ts +++ b/d3-voronoi/index.d.ts @@ -9,18 +9,24 @@ /** - * The Point type is defined as a cue that the array is strictly of type [number, number] with two elements + * The VoronoiPoint interface is defined as a cue that the array is strictly of type [number, number] with two elements * for x and y coordinates. However, it is used as a base for interface definitions, and [number, number] * cannot be extended. */ -export type VoronoiPoint = Array; +export interface VoronoiPoint extends Array { + 0: number; + 1: number; +} /** - * The PointPair type is defined as a cue that the array is strictly of type [[number, number], [number, number]] with two elements, one + * The VoronoiPointPair interface is defined as a cue that the array is strictly of type [[number, number], [number, number]] with two elements, one * for each point containing the respective x and y coordinates. However, it is used as a base for interface definitions, and - * [[number, number], [number, number]]cannot be extended. + * [[number, number], [number, number]] cannot be extended. */ -export type VoronoiPointPair = Array<[number, number]> // [Point, Point]; +export interface VoronoiPointPair extends Array<[number, number]> { + 0: [number, number]; + 1: [number, number]; +} export interface VoronoiPolygon extends Array<[number, number]> { data: T; From f3cc8644d9dde15973b26fd5855bc74a43c86594 Mon Sep 17 00:00:00 2001 From: Tom Wanzek Date: Tue, 23 Aug 2016 11:07:04 -0400 Subject: [PATCH 3/5] d3-transition * Relaxed type constraint on existing transition which can be used to create a new transition on a selection. This allows a more general pattern for inheriting /synchronizing e.g. transition timing across multiple different selections. Updated corresponding tests. --- d3-transition/d3-transition-tests.ts | 11 ++++++----- d3-transition/index.d.ts | 2 +- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/d3-transition/d3-transition-tests.ts b/d3-transition/d3-transition-tests.ts index e02fc19fdc..dbfc221254 100644 --- a/d3-transition/d3-transition-tests.ts +++ b/d3-transition/d3-transition-tests.ts @@ -103,12 +103,13 @@ exitTransition = exitCircles.transition('exit'); let newEnterTransition: d3Transition.Transition; newEnterTransition = enterCircles.transition(enterTransition); -let wrongElementTypeTransition: d3Transition.Transition; -let wrongDatumTypeTransition: d3Transition.Transition; +let differentElementTypeTransition: d3Transition.Transition; +let differentDatumTypeTransition: d3Transition.Transition; -newEnterTransition = enterCircles.transition(enterTransition); -// newEnterTransition = enterCircles.transition(wrongElementTypeTransition);// fails, wrong group element type -// newEnterTransition = enterCircles.transition(wrongDatumTypeTransition);// fails, wrong datum type +// Comparable use cases arise e.g. when using an existing transition to generate a new transition +// on a different selection to synchronize them (see e.g. Mike Bostock's Brush & Zoom II Example https://bl.ocks.org/mbostock/f48fcdb929a620ed97877e4678ab15e6) +newEnterTransition = enterCircles.transition(differentElementTypeTransition); +newEnterTransition = enterCircles.transition(differentDatumTypeTransition); // -------------------------------------------------------------------------- // Test Transition Configuration (Timing) diff --git a/d3-transition/index.d.ts b/d3-transition/index.d.ts index 10b40cc12a..ec169dcc49 100644 --- a/d3-transition/index.d.ts +++ b/d3-transition/index.d.ts @@ -12,7 +12,7 @@ declare module 'd3-selection' { export interface Selection { interrupt(name?: string): Transition; transition(name?: string): Transition; - transition(transition: Transition): Transition; + transition(transition: Transition): Transition; } } From f156343557e8df4e50707eae786fa7049e53dfcd Mon Sep 17 00:00:00 2001 From: Tom Wanzek Date: Wed, 24 Aug 2016 09:45:33 -0400 Subject: [PATCH 4/5] d3-selection * Complete JSDoc comment for `Local.remove(...)`. Thanks @gustavderdrache --- d3-selection/index.d.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/d3-selection/index.d.ts b/d3-selection/index.d.ts index 42c9b2f112..95a9e2ad56 100644 --- a/d3-selection/index.d.ts +++ b/d3-selection/index.d.ts @@ -288,7 +288,9 @@ export interface Local { */ get(node: Element): T | undefined; /** + * Deletes the value associated with the given node. Values stored on ancestors are not affected, meaning that child nodes will still see inherited values. * + * This function returns true if there was a value stored directly on the node, and false otherwise. */ remove(node: Element): boolean; /** From af4a0bddab032c0cc72243480ae5428dec39df42 Mon Sep 17 00:00:00 2001 From: Tom Wanzek Date: Thu, 1 Sep 2016 21:49:49 -0400 Subject: [PATCH 5/5] d3 legacy * Added version number 3.5.17 to legacy definitions, so they are identifiable as v3 related for now. --- d3/index.d.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/d3/index.d.ts b/d3/index.d.ts index 4aac203696..b96791c7d9 100644 --- a/d3/index.d.ts +++ b/d3/index.d.ts @@ -1,4 +1,4 @@ -// Type definitions for d3JS +// Type definitions for d3JS v3.5.17 // Project: http://d3js.org/ // Definitions by: Alex Ford , Boris Yankov // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped @@ -418,7 +418,7 @@ declare namespace d3 { select(name: (datum: Datum, index: number, outerIndex: number) => EventTarget): Selection; call(func: (selection: Enter, ...args: any[]) => any, ...args: any[]): Enter; - + empty(): boolean; size(): number; }