mirror of
https://github.com/zhigang1992/DefinitelyTyped.git
synced 2026-04-23 04:49:15 +08:00
* [d3-collection] Linted * Added and completed linting * Replaced `Object` with `any` adding TODO to change to proper `object` type when publishing the definitions to use TS 2.2+ * [d3-color] Linted * [d3-dispatch] Linted * [d3-hsv] Linted * [d3-interpolate] Linted. `Object` to `any` * Replace use of `Object` as extension basis with `any` for now. Added TODO to change it to use the `object` type, when updating the definitions to formally use TS2.2+ * [d3-path] Linted. * [d3-polygon] Linted. * [d3-quadtree] Linted. * [d3-queue] Linted. * [d3-request] Linted. * [d3-scale-chromatic] Linted. * [d3-time-format] Linted. * [d3-time] Linted. * [d3-timer] Linted. * [d3-voronoi] Linted. * [d3-scale] Move callable-type lint deactivation to tslint.json * line level deactivation was ignored.
54 lines
2.2 KiB
TypeScript
54 lines
2.2 KiB
TypeScript
// Type definitions for D3JS d3-quadtree module 1.0
|
|
// Project: https://github.com/d3/d3-quadtree/
|
|
// Definitions by: Tom Wanzek <https://github.com/tomwanzek>, Alex Ford <https://github.com/gustavderdrache>, Boris Yankov <https://github.com/borisyankov>
|
|
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
|
|
|
// Last module patch version validated against: 1.0.1
|
|
|
|
/**
|
|
* Leaf node of the quadtree.
|
|
*/
|
|
export interface QuadtreeLeaf<T> {
|
|
data: T;
|
|
next?: QuadtreeLeaf<T>;
|
|
}
|
|
/**
|
|
* Internal nodes of the quadtree are represented as four-element arrays in left-to-right, top-to-bottom order:
|
|
*
|
|
* 0 - the top-left quadrant, if any.
|
|
* 1 - the top-right quadrant, if any.
|
|
* 2 - the bottom-left quadrant, if any.
|
|
* 3 - the bottom-right quadrant, if any.
|
|
*
|
|
* A child quadrant may be undefined if it is empty.
|
|
*/
|
|
export interface QuadtreeInternalNode<T> extends Array<QuadtreeInternalNode<T> | QuadtreeLeaf<T> | undefined> { }
|
|
|
|
export interface Quadtree<T> {
|
|
x(): (d: T) => number;
|
|
x(x: (d: T) => number): this;
|
|
y(): (d: T) => number;
|
|
y(y: (d: T) => number): this;
|
|
extent(): [[number, number], [number, number]] | undefined;
|
|
extent(extend: [[number, number], [number, number]]): this;
|
|
cover(x: number, y: number): this;
|
|
add(datum: T): this;
|
|
addAll(data: T[]): this;
|
|
remove(datum: T): this;
|
|
removeAll(data: T[]): this;
|
|
copy(): Quadtree<T>;
|
|
root(): QuadtreeInternalNode<T> | QuadtreeLeaf<T>;
|
|
data(): T[];
|
|
size(): number;
|
|
find(x: number, y: number, radius?: number): T | undefined;
|
|
// TODO: Review below, when validating to strictNullChecks.
|
|
// tslint:disable-next-line:void-return
|
|
visit(callback: (node: QuadtreeInternalNode<T> | QuadtreeLeaf<T>, x0: number, y0: number, x1: number, y1: number) => (void | boolean)): this;
|
|
visitAfter(callback: (node: QuadtreeInternalNode<T> | QuadtreeLeaf<T>, x0: number, y0: number, x1: number, y1: number) => void): this;
|
|
}
|
|
|
|
export function quadtree(): Quadtree<[number, number]>;
|
|
export function quadtree(data: Array<[number, number]>): Quadtree<[number, number]>;
|
|
export function quadtree<T>(): Quadtree<T>;
|
|
export function quadtree<T>(data: T[], x?: (d: T) => number, y?: (d: T) => number): Quadtree<T>;
|