This repository has been archived by the owner on Jul 16, 2023. It is now read-only.
/
index.d.ts
50 lines (46 loc) · 2.05 KB
/
index.d.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
// Type definitions for D3JS d3-quadtree module v1.0.1
// 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
/**
* 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: Array<T>): this;
remove(datum: T): this;
removeAll(data: Array<T>): this;
copy(): Quadtree<T>;
root(): QuadtreeInternalNode<T> | QuadtreeLeaf<T>;
data(): Array<T>;
size(): number;
find(x: number, y: number, radius?: number): T | undefined;
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: Array<T>, x?: (d: T) => number, y?: (d: T) => number): Quadtree<T>;