@flowmap.gl/data 8.0.0-alpha.13 → 8.0.0-alpha.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/FlowmapSelectors.d.ts +21 -21
- package/dist/FlowmapSelectors.d.ts.map +1 -1
- package/dist/FlowmapSelectors.js +50 -21
- package/dist/cluster/cluster.d.ts +6 -5
- package/dist/cluster/cluster.d.ts.map +1 -1
- package/dist/cluster/cluster.js +11 -9
- package/dist/getViewStateForLocations.d.ts +1 -1
- package/dist/getViewStateForLocations.d.ts.map +1 -1
- package/dist/getViewStateForLocations.js +16 -5
- package/dist/provider/LocalFlowmapDataProvider.d.ts.map +1 -1
- package/dist/provider/LocalFlowmapDataProvider.js +2 -1
- package/dist/types.d.ts +2 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -1
- package/package.json +5 -7
- package/src/FlowmapSelectors.ts +67 -49
- package/src/cluster/cluster.ts +23 -20
- package/src/getViewStateForLocations.ts +17 -7
- package/src/provider/LocalFlowmapDataProvider.ts +1 -0
- package/src/types.ts +2 -2
- package/dist-es5/FlowmapAggregateAccessors.d.ts +0 -16
- package/dist-es5/FlowmapAggregateAccessors.d.ts.map +0 -1
- package/dist-es5/FlowmapAggregateAccessors.js +0 -57
- package/dist-es5/FlowmapSelectors.d.ts +0 -188
- package/dist-es5/FlowmapSelectors.d.ts.map +0 -1
- package/dist-es5/FlowmapSelectors.js +0 -1507
- package/dist-es5/FlowmapState.d.ts +0 -27
- package/dist-es5/FlowmapState.d.ts.map +0 -1
- package/dist-es5/FlowmapState.js +0 -3
- package/dist-es5/cluster/ClusterIndex.d.ts +0 -42
- package/dist-es5/cluster/ClusterIndex.d.ts.map +0 -1
- package/dist-es5/cluster/ClusterIndex.js +0 -297
- package/dist-es5/cluster/cluster.d.ts +0 -31
- package/dist-es5/cluster/cluster.d.ts.map +0 -1
- package/dist-es5/cluster/cluster.js +0 -266
- package/dist-es5/colors.d.ts +0 -103
- package/dist-es5/colors.d.ts.map +0 -1
- package/dist-es5/colors.js +0 -510
- package/dist-es5/getViewStateForLocations.d.ts +0 -23
- package/dist-es5/getViewStateForLocations.d.ts.map +0 -1
- package/dist-es5/getViewStateForLocations.js +0 -64
- package/dist-es5/index.d.ts +0 -11
- package/dist-es5/index.d.ts.map +0 -1
- package/dist-es5/index.js +0 -28
- package/dist-es5/provider/FlowmapDataProvider.d.ts +0 -16
- package/dist-es5/provider/FlowmapDataProvider.d.ts.map +0 -1
- package/dist-es5/provider/FlowmapDataProvider.js +0 -22
- package/dist-es5/provider/LocalFlowmapDataProvider.d.ts +0 -20
- package/dist-es5/provider/LocalFlowmapDataProvider.d.ts.map +0 -1
- package/dist-es5/provider/LocalFlowmapDataProvider.js +0 -154
- package/dist-es5/time.d.ts +0 -24
- package/dist-es5/time.d.ts.map +0 -1
- package/dist-es5/time.js +0 -168
- package/dist-es5/types.d.ts +0 -118
- package/dist-es5/types.d.ts.map +0 -1
- package/dist-es5/types.js +0 -29
- package/dist-es5/util.d.ts +0 -5
- package/dist-es5/util.d.ts.map +0 -1
- package/dist-es5/util.js +0 -14
- package/tsconfig.es5.json +0 -11
package/src/cluster/cluster.ts
CHANGED
|
@@ -69,8 +69,9 @@ interface BasePoint {
|
|
|
69
69
|
parentId: number; // parent cluster id
|
|
70
70
|
}
|
|
71
71
|
|
|
72
|
-
interface LeafPoint extends BasePoint {
|
|
72
|
+
interface LeafPoint<L> extends BasePoint {
|
|
73
73
|
index: number; // index of the source feature in the original input array,
|
|
74
|
+
location: L;
|
|
74
75
|
}
|
|
75
76
|
|
|
76
77
|
interface ClusterPoint extends BasePoint {
|
|
@@ -78,14 +79,14 @@ interface ClusterPoint extends BasePoint {
|
|
|
78
79
|
numPoints: number;
|
|
79
80
|
}
|
|
80
81
|
|
|
81
|
-
type Point = LeafPoint | ClusterPoint;
|
|
82
|
+
type Point<L> = LeafPoint<L> | ClusterPoint;
|
|
82
83
|
|
|
83
|
-
export function isLeafPoint(p: Point): p is LeafPoint {
|
|
84
|
-
const {index} = p as LeafPoint
|
|
84
|
+
export function isLeafPoint<L>(p: Point<L>): p is LeafPoint<L> {
|
|
85
|
+
const {index} = p as LeafPoint<L>;
|
|
85
86
|
return index != null;
|
|
86
87
|
}
|
|
87
88
|
|
|
88
|
-
export function isClusterPoint(p: Point): p is ClusterPoint {
|
|
89
|
+
export function isClusterPoint<L>(p: Point<L>): p is ClusterPoint {
|
|
89
90
|
const {id} = p as ClusterPoint;
|
|
90
91
|
return id != null;
|
|
91
92
|
}
|
|
@@ -93,7 +94,7 @@ export function isClusterPoint(p: Point): p is ClusterPoint {
|
|
|
93
94
|
type ZoomLevelKDBush = any;
|
|
94
95
|
|
|
95
96
|
export function clusterLocations<L>(
|
|
96
|
-
locations: L
|
|
97
|
+
locations: Iterable<L>,
|
|
97
98
|
locationAccessors: LocationAccessors<L>,
|
|
98
99
|
getLocationWeight: LocationWeightGetter,
|
|
99
100
|
options?: Partial<Options>,
|
|
@@ -108,18 +109,21 @@ export function clusterLocations<L>(
|
|
|
108
109
|
const trees = new Array<ZoomLevelKDBush>(maxZoom + 1);
|
|
109
110
|
|
|
110
111
|
// generate a cluster object for each point and index input points into a KD-tree
|
|
111
|
-
let clusters = new Array<Point
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
const
|
|
112
|
+
let clusters = new Array<Point<L>>();
|
|
113
|
+
let i = 0;
|
|
114
|
+
for (const location of locations) {
|
|
115
|
+
const x = getLocationLon(location);
|
|
116
|
+
const y = getLocationLat(location);
|
|
115
117
|
clusters.push({
|
|
116
118
|
x: lngX(x), // projected point coordinates
|
|
117
119
|
y: latY(y),
|
|
118
|
-
weight: getLocationWeight(getLocationId(
|
|
120
|
+
weight: getLocationWeight(getLocationId(location)),
|
|
119
121
|
zoom: Infinity, // the last zoom the point was processed at
|
|
120
122
|
index: i, // index of the source feature in the original input array,
|
|
121
123
|
parentId: -1, // parent cluster id
|
|
124
|
+
location,
|
|
122
125
|
});
|
|
126
|
+
i++;
|
|
123
127
|
}
|
|
124
128
|
trees[maxZoom + 1] = new KDBush(clusters, getX, getY, nodeSize, Float32Array);
|
|
125
129
|
|
|
@@ -148,11 +152,11 @@ export function clusterLocations<L>(
|
|
|
148
152
|
let childrenByParent: Map<number, string[]> | undefined;
|
|
149
153
|
const tree = trees[zoom];
|
|
150
154
|
if (zoom < maxAvailZoom) {
|
|
151
|
-
childrenByParent = rollup<Point
|
|
155
|
+
childrenByParent = rollup<Point<L>, string[], number>(
|
|
152
156
|
trees[zoom + 1].points,
|
|
153
157
|
(points: any[]) =>
|
|
154
158
|
points.map((p: any) =>
|
|
155
|
-
p.id ? makeClusterId(p.id) : getLocationId(
|
|
159
|
+
p.id ? makeClusterId(p.id) : getLocationId(p.location),
|
|
156
160
|
),
|
|
157
161
|
(point: any) => point.parentId,
|
|
158
162
|
);
|
|
@@ -160,9 +164,8 @@ export function clusterLocations<L>(
|
|
|
160
164
|
|
|
161
165
|
const nodes: ClusterNode[] = [];
|
|
162
166
|
for (const point of tree.points) {
|
|
163
|
-
const {x, y, numPoints} = point;
|
|
167
|
+
const {x, y, numPoints, location} = point;
|
|
164
168
|
if (isLeafPoint(point)) {
|
|
165
|
-
const location = locations[point.index];
|
|
166
169
|
nodes.push({
|
|
167
170
|
id: getLocationId(location),
|
|
168
171
|
zoom,
|
|
@@ -211,13 +214,13 @@ function createCluster(
|
|
|
211
214
|
};
|
|
212
215
|
}
|
|
213
216
|
|
|
214
|
-
function cluster(
|
|
215
|
-
points: Point[],
|
|
217
|
+
function cluster<L>(
|
|
218
|
+
points: Point<L>[],
|
|
216
219
|
zoom: number,
|
|
217
220
|
tree: ZoomLevelKDBush,
|
|
218
221
|
options: Options,
|
|
219
222
|
) {
|
|
220
|
-
const clusters: Point[] = [];
|
|
223
|
+
const clusters: Point<L>[] = [];
|
|
221
224
|
const {radius, extent} = options;
|
|
222
225
|
const r = radius / (extent * Math.pow(2, zoom));
|
|
223
226
|
|
|
@@ -293,10 +296,10 @@ function latY(lat: number) {
|
|
|
293
296
|
return y < 0 ? 0 : y > 1 ? 1 : y;
|
|
294
297
|
}
|
|
295
298
|
|
|
296
|
-
function getX(p: Point) {
|
|
299
|
+
function getX<L>(p: Point<L>) {
|
|
297
300
|
return p.x;
|
|
298
301
|
}
|
|
299
302
|
|
|
300
|
-
function getY(p: Point) {
|
|
303
|
+
function getY<L>(p: Point<L>) {
|
|
301
304
|
return p.y;
|
|
302
305
|
}
|
|
@@ -50,19 +50,29 @@ export function getViewStateForFeatures(
|
|
|
50
50
|
};
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
-
export function getViewStateForLocations(
|
|
54
|
-
locations:
|
|
55
|
-
getLocationCoords: (location:
|
|
53
|
+
export function getViewStateForLocations<L>(
|
|
54
|
+
locations: Iterable<L>,
|
|
55
|
+
getLocationCoords: (location: L) => [number, number],
|
|
56
56
|
size: [number, number],
|
|
57
57
|
opts?: GetViewStateOptions,
|
|
58
58
|
): ViewState & {width: number; height: number} {
|
|
59
|
+
const asGeometry = (location: L) => ({
|
|
60
|
+
type: 'Point',
|
|
61
|
+
coordinates: getLocationCoords(location),
|
|
62
|
+
});
|
|
63
|
+
let geometries;
|
|
64
|
+
if (Array.isArray(locations)) {
|
|
65
|
+
geometries = locations.map(asGeometry);
|
|
66
|
+
} else {
|
|
67
|
+
geometries = [];
|
|
68
|
+
for (const location of locations) {
|
|
69
|
+
geometries.push(asGeometry(location));
|
|
70
|
+
}
|
|
71
|
+
}
|
|
59
72
|
return getViewStateForFeatures(
|
|
60
73
|
{
|
|
61
74
|
type: 'GeometryCollection',
|
|
62
|
-
geometries
|
|
63
|
-
type: 'Point',
|
|
64
|
-
coordinates: getLocationCoords(location),
|
|
65
|
-
})),
|
|
75
|
+
geometries,
|
|
66
76
|
} as any,
|
|
67
77
|
size,
|
|
68
78
|
opts,
|
|
@@ -53,6 +53,7 @@ export default class LocalFlowmapDataProvider<L, F>
|
|
|
53
53
|
return flows?.[idx];
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
+
// TODO: this is unreliable, should replace by unqiue ID
|
|
56
57
|
async getLocationByIndex(idx: number): Promise<L | ClusterNode | undefined> {
|
|
57
58
|
if (!this.flowmapState || !this.flowmapData) {
|
|
58
59
|
return undefined;
|
package/src/types.ts
CHANGED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { AggregateFlow, ClusterNode, FlowmapDataAccessors } from './types';
|
|
2
|
-
export default class FlowmapAggregateAccessors<L, F> {
|
|
3
|
-
private accessors;
|
|
4
|
-
constructor(accessors: FlowmapDataAccessors<L, F>);
|
|
5
|
-
setAccessors(accessors: FlowmapDataAccessors<L, F>): void;
|
|
6
|
-
getFlowmapDataAccessors(): FlowmapDataAccessors<L, F>;
|
|
7
|
-
getLocationId: (location: L | ClusterNode) => string;
|
|
8
|
-
getLocationName: (location: L | ClusterNode) => string;
|
|
9
|
-
getLocationLat: (location: L | ClusterNode) => number;
|
|
10
|
-
getLocationLon: (location: L | ClusterNode) => number;
|
|
11
|
-
getFlowOriginId: (f: F | AggregateFlow) => string;
|
|
12
|
-
getFlowDestId: (f: F | AggregateFlow) => string;
|
|
13
|
-
getFlowMagnitude: (f: F | AggregateFlow) => number;
|
|
14
|
-
getFlowTime: (f: F) => Date | undefined;
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=FlowmapAggregateAccessors.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FlowmapAggregateAccessors.d.ts","sourceRoot":"","sources":["../src/FlowmapAggregateAccessors.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,WAAW,EACX,oBAAoB,EAIrB,MAAM,SAAS,CAAC;AAEjB,MAAM,CAAC,OAAO,OAAO,yBAAyB,CAAC,CAAC,EAAE,CAAC;IACjD,OAAO,CAAC,SAAS,CAA6B;gBAClC,SAAS,EAAE,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC;IAIjD,YAAY,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC;IAIlD,uBAAuB;IAIvB,aAAa,aAAc,CAAC,GAAG,WAAW,KAAG,MAAM,CAGN;IAE7C,eAAe,aAAc,CAAC,GAAG,WAAW,KAAG,MAAM,CAGJ;IAMjD,cAAc,aAAc,CAAC,GAAG,WAAW,KAAG,MAAM,CAGN;IAE9C,cAAc,aAAc,CAAC,GAAG,WAAW,KAAG,MAAM,CAGN;IAE9C,eAAe,MAAO,CAAC,GAAG,aAAa,YAErC;IAEF,aAAa,MAAO,CAAC,GAAG,aAAa,YAEnC;IAEF,gBAAgB,MAAO,CAAC,GAAG,aAAa,YAEtC;IAGF,WAAW,MAAO,CAAC,sBAGjB;CACH"}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
var types_1 = require("./types");
|
|
4
|
-
var FlowmapAggregateAccessors = /** @class */ (function () {
|
|
5
|
-
function FlowmapAggregateAccessors(accessors) {
|
|
6
|
-
var _this = this;
|
|
7
|
-
this.getLocationId = function (location) {
|
|
8
|
-
return (0, types_1.isLocationClusterNode)(location)
|
|
9
|
-
? location.id
|
|
10
|
-
: _this.accessors.getLocationId(location);
|
|
11
|
-
};
|
|
12
|
-
this.getLocationName = function (location) {
|
|
13
|
-
var _a;
|
|
14
|
-
return (_a = ((0, types_1.isLocationClusterNode)(location) && (0, types_1.isCluster)(location)
|
|
15
|
-
? location.name
|
|
16
|
-
: undefined)) !== null && _a !== void 0 ? _a : _this.getLocationId(location);
|
|
17
|
-
};
|
|
18
|
-
// ? location.name // TODO getLocationName for locations and clusters
|
|
19
|
-
// : this.accessors.getLocationName
|
|
20
|
-
// ? this.accessors.getLocationName(location)
|
|
21
|
-
// : this.getLocationId(location);
|
|
22
|
-
this.getLocationLat = function (location) {
|
|
23
|
-
return (0, types_1.isLocationClusterNode)(location)
|
|
24
|
-
? location.lat
|
|
25
|
-
: _this.accessors.getLocationLat(location);
|
|
26
|
-
};
|
|
27
|
-
this.getLocationLon = function (location) {
|
|
28
|
-
return (0, types_1.isLocationClusterNode)(location)
|
|
29
|
-
? location.lon
|
|
30
|
-
: _this.accessors.getLocationLon(location);
|
|
31
|
-
};
|
|
32
|
-
this.getFlowOriginId = function (f) {
|
|
33
|
-
return (0, types_1.isAggregateFlow)(f) ? f.origin : _this.accessors.getFlowOriginId(f);
|
|
34
|
-
};
|
|
35
|
-
this.getFlowDestId = function (f) {
|
|
36
|
-
return (0, types_1.isAggregateFlow)(f) ? f.dest : _this.accessors.getFlowDestId(f);
|
|
37
|
-
};
|
|
38
|
-
this.getFlowMagnitude = function (f) {
|
|
39
|
-
return (0, types_1.isAggregateFlow)(f) ? f.count : _this.accessors.getFlowMagnitude(f);
|
|
40
|
-
};
|
|
41
|
-
// Note: Aggregate flows have no time
|
|
42
|
-
this.getFlowTime = function (f) {
|
|
43
|
-
var getFlowTime = _this.accessors.getFlowTime;
|
|
44
|
-
return getFlowTime ? getFlowTime(f) : undefined;
|
|
45
|
-
};
|
|
46
|
-
this.accessors = accessors;
|
|
47
|
-
}
|
|
48
|
-
FlowmapAggregateAccessors.prototype.setAccessors = function (accessors) {
|
|
49
|
-
this.accessors = accessors;
|
|
50
|
-
};
|
|
51
|
-
FlowmapAggregateAccessors.prototype.getFlowmapDataAccessors = function () {
|
|
52
|
-
return this.accessors;
|
|
53
|
-
};
|
|
54
|
-
return FlowmapAggregateAccessors;
|
|
55
|
-
}());
|
|
56
|
-
exports.default = FlowmapAggregateAccessors;
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmxvd21hcEFnZ3JlZ2F0ZUFjY2Vzc29ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9GbG93bWFwQWdncmVnYXRlQWNjZXNzb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsaUNBT2lCO0FBRWpCO0lBRUUsbUNBQVksU0FBcUM7UUFBakQsaUJBRUM7UUFVRCxrQkFBYSxHQUFHLFVBQUMsUUFBeUI7WUFDeEMsT0FBQSxJQUFBLDZCQUFxQixFQUFDLFFBQVEsQ0FBQztnQkFDN0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUNiLENBQUMsQ0FBQyxLQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUM7UUFGMUMsQ0FFMEMsQ0FBQztRQUU3QyxvQkFBZSxHQUFHLFVBQUMsUUFBeUI7O1lBQzFDLE9BQUEsTUFBQSxDQUFDLElBQUEsNkJBQXFCLEVBQUMsUUFBUSxDQUFDLElBQUksSUFBQSxpQkFBUyxFQUFDLFFBQVEsQ0FBQztnQkFDckQsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJO2dCQUNmLENBQUMsQ0FBQyxTQUFTLENBQUMsbUNBQUksS0FBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQTtTQUFBLENBQUM7UUFDakQscUVBQXFFO1FBQ3JFLG1DQUFtQztRQUNuQyw2Q0FBNkM7UUFDN0Msa0NBQWtDO1FBRWxDLG1CQUFjLEdBQUcsVUFBQyxRQUF5QjtZQUN6QyxPQUFBLElBQUEsNkJBQXFCLEVBQUMsUUFBUSxDQUFDO2dCQUM3QixDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUc7Z0JBQ2QsQ0FBQyxDQUFDLEtBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQztRQUYzQyxDQUUyQyxDQUFDO1FBRTlDLG1CQUFjLEdBQUcsVUFBQyxRQUF5QjtZQUN6QyxPQUFBLElBQUEsNkJBQXFCLEVBQUMsUUFBUSxDQUFDO2dCQUM3QixDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUc7Z0JBQ2QsQ0FBQyxDQUFDLEtBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQztRQUYzQyxDQUUyQyxDQUFDO1FBRTlDLG9CQUFlLEdBQUcsVUFBQyxDQUFvQjtZQUNyQyxPQUFPLElBQUEsdUJBQWUsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0UsQ0FBQyxDQUFDO1FBRUYsa0JBQWEsR0FBRyxVQUFDLENBQW9CO1lBQ25DLE9BQU8sSUFBQSx1QkFBZSxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2RSxDQUFDLENBQUM7UUFFRixxQkFBZ0IsR0FBRyxVQUFDLENBQW9CO1lBQ3RDLE9BQU8sSUFBQSx1QkFBZSxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNFLENBQUMsQ0FBQztRQUVGLHFDQUFxQztRQUNyQyxnQkFBVyxHQUFHLFVBQUMsQ0FBSTtZQUNWLElBQUEsV0FBVyxHQUFJLEtBQUksQ0FBQyxTQUFTLFlBQWxCLENBQW1CO1lBQ3JDLE9BQU8sV0FBVyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUNsRCxDQUFDLENBQUM7UUFuREEsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7SUFDN0IsQ0FBQztJQUVELGdEQUFZLEdBQVosVUFBYSxTQUFxQztRQUNoRCxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztJQUM3QixDQUFDO0lBRUQsMkRBQXVCLEdBQXZCO1FBQ0UsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUEyQ0gsZ0NBQUM7QUFBRCxDQUFDLEFBdkRELElBdURDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWdncmVnYXRlRmxvdyxcbiAgQ2x1c3Rlck5vZGUsXG4gIEZsb3dtYXBEYXRhQWNjZXNzb3JzLFxuICBpc0FnZ3JlZ2F0ZUZsb3csXG4gIGlzQ2x1c3RlcixcbiAgaXNMb2NhdGlvbkNsdXN0ZXJOb2RlLFxufSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRmxvd21hcEFnZ3JlZ2F0ZUFjY2Vzc29yczxMLCBGPiB7XG4gIHByaXZhdGUgYWNjZXNzb3JzOiBGbG93bWFwRGF0YUFjY2Vzc29yczxMLCBGPjtcbiAgY29uc3RydWN0b3IoYWNjZXNzb3JzOiBGbG93bWFwRGF0YUFjY2Vzc29yczxMLCBGPikge1xuICAgIHRoaXMuYWNjZXNzb3JzID0gYWNjZXNzb3JzO1xuICB9XG5cbiAgc2V0QWNjZXNzb3JzKGFjY2Vzc29yczogRmxvd21hcERhdGFBY2Nlc3NvcnM8TCwgRj4pIHtcbiAgICB0aGlzLmFjY2Vzc29ycyA9IGFjY2Vzc29ycztcbiAgfVxuXG4gIGdldEZsb3dtYXBEYXRhQWNjZXNzb3JzKCkge1xuICAgIHJldHVybiB0aGlzLmFjY2Vzc29ycztcbiAgfVxuXG4gIGdldExvY2F0aW9uSWQgPSAobG9jYXRpb246IEwgfCBDbHVzdGVyTm9kZSk6IHN0cmluZyA9PlxuICAgIGlzTG9jYXRpb25DbHVzdGVyTm9kZShsb2NhdGlvbilcbiAgICAgID8gbG9jYXRpb24uaWRcbiAgICAgIDogdGhpcy5hY2Nlc3NvcnMuZ2V0TG9jYXRpb25JZChsb2NhdGlvbik7XG5cbiAgZ2V0TG9jYXRpb25OYW1lID0gKGxvY2F0aW9uOiBMIHwgQ2x1c3Rlck5vZGUpOiBzdHJpbmcgPT5cbiAgICAoaXNMb2NhdGlvbkNsdXN0ZXJOb2RlKGxvY2F0aW9uKSAmJiBpc0NsdXN0ZXIobG9jYXRpb24pXG4gICAgICA/IGxvY2F0aW9uLm5hbWVcbiAgICAgIDogdW5kZWZpbmVkKSA/PyB0aGlzLmdldExvY2F0aW9uSWQobG9jYXRpb24pO1xuICAvLyA/IGxvY2F0aW9uLm5hbWUgLy8gVE9ETyBnZXRMb2NhdGlvbk5hbWUgZm9yIGxvY2F0aW9ucyBhbmQgY2x1c3RlcnNcbiAgLy8gOiB0aGlzLmFjY2Vzc29ycy5nZXRMb2NhdGlvbk5hbWVcbiAgLy8gPyB0aGlzLmFjY2Vzc29ycy5nZXRMb2NhdGlvbk5hbWUobG9jYXRpb24pXG4gIC8vIDogdGhpcy5nZXRMb2NhdGlvbklkKGxvY2F0aW9uKTtcblxuICBnZXRMb2NhdGlvbkxhdCA9IChsb2NhdGlvbjogTCB8IENsdXN0ZXJOb2RlKTogbnVtYmVyID0+XG4gICAgaXNMb2NhdGlvbkNsdXN0ZXJOb2RlKGxvY2F0aW9uKVxuICAgICAgPyBsb2NhdGlvbi5sYXRcbiAgICAgIDogdGhpcy5hY2Nlc3NvcnMuZ2V0TG9jYXRpb25MYXQobG9jYXRpb24pO1xuXG4gIGdldExvY2F0aW9uTG9uID0gKGxvY2F0aW9uOiBMIHwgQ2x1c3Rlck5vZGUpOiBudW1iZXIgPT5cbiAgICBpc0xvY2F0aW9uQ2x1c3Rlck5vZGUobG9jYXRpb24pXG4gICAgICA/IGxvY2F0aW9uLmxvblxuICAgICAgOiB0aGlzLmFjY2Vzc29ycy5nZXRMb2NhdGlvbkxvbihsb2NhdGlvbik7XG5cbiAgZ2V0Rmxvd09yaWdpbklkID0gKGY6IEYgfCBBZ2dyZWdhdGVGbG93KSA9PiB7XG4gICAgcmV0dXJuIGlzQWdncmVnYXRlRmxvdyhmKSA/IGYub3JpZ2luIDogdGhpcy5hY2Nlc3NvcnMuZ2V0Rmxvd09yaWdpbklkKGYpO1xuICB9O1xuXG4gIGdldEZsb3dEZXN0SWQgPSAoZjogRiB8IEFnZ3JlZ2F0ZUZsb3cpID0+IHtcbiAgICByZXR1cm4gaXNBZ2dyZWdhdGVGbG93KGYpID8gZi5kZXN0IDogdGhpcy5hY2Nlc3NvcnMuZ2V0Rmxvd0Rlc3RJZChmKTtcbiAgfTtcblxuICBnZXRGbG93TWFnbml0dWRlID0gKGY6IEYgfCBBZ2dyZWdhdGVGbG93KSA9PiB7XG4gICAgcmV0dXJuIGlzQWdncmVnYXRlRmxvdyhmKSA/IGYuY291bnQgOiB0aGlzLmFjY2Vzc29ycy5nZXRGbG93TWFnbml0dWRlKGYpO1xuICB9O1xuXG4gIC8vIE5vdGU6IEFnZ3JlZ2F0ZSBmbG93cyBoYXZlIG5vIHRpbWVcbiAgZ2V0Rmxvd1RpbWUgPSAoZjogRikgPT4ge1xuICAgIGNvbnN0IHtnZXRGbG93VGltZX0gPSB0aGlzLmFjY2Vzc29ycztcbiAgICByZXR1cm4gZ2V0Rmxvd1RpbWUgPyBnZXRGbG93VGltZShmKSA6IHVuZGVmaW5lZDtcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -1,188 +0,0 @@
|
|
|
1
|
-
import { ScaleLinear } from 'd3-scale';
|
|
2
|
-
import { ParametricSelector } from 'reselect';
|
|
3
|
-
import { ClusterIndex } from './cluster/ClusterIndex';
|
|
4
|
-
import { ColorsRGBA, DiffColorsRGBA } from './colors';
|
|
5
|
-
import FlowmapAggregateAccessors from './FlowmapAggregateAccessors';
|
|
6
|
-
import { FlowmapState } from './FlowmapState';
|
|
7
|
-
import { TimeGranularityKey } from './time';
|
|
8
|
-
import { AggregateFlow, Cluster, ClusterNode, CountByTime, FlowCirclesLayerAttributes, FlowLinesLayerAttributes, FlowmapData, FlowmapDataAccessors, LayersData, LocationFilterMode, LocationTotals } from './types';
|
|
9
|
-
declare type KDBushTree = any;
|
|
10
|
-
export declare type Selector<L, F, T> = ParametricSelector<FlowmapState, FlowmapData<L, F>, T>;
|
|
11
|
-
export default class FlowmapSelectors<L, F> {
|
|
12
|
-
accessors: FlowmapAggregateAccessors<L, F>;
|
|
13
|
-
constructor(accessors: FlowmapDataAccessors<L, F>);
|
|
14
|
-
setAccessors(accessors: FlowmapDataAccessors<L, F>): void;
|
|
15
|
-
getFetchedFlows: (state: FlowmapState, props: FlowmapData<L, F>) => F[] | undefined;
|
|
16
|
-
getFetchedLocations: (state: FlowmapState, props: FlowmapData<L, F>) => L[] | undefined;
|
|
17
|
-
getMaxTopFlowsDisplayNum: (state: FlowmapState, props: FlowmapData<L, F>) => number;
|
|
18
|
-
getSelectedLocations: (state: FlowmapState, props: FlowmapData<L, F>) => string[] | undefined;
|
|
19
|
-
getLocationFilterMode: (state: FlowmapState, props: FlowmapData<L, F>) => LocationFilterMode;
|
|
20
|
-
getClusteringEnabled: (state: FlowmapState, props: FlowmapData<L, F>) => boolean;
|
|
21
|
-
getLocationTotalsEnabled: (state: FlowmapState, props: FlowmapData<L, F>) => boolean;
|
|
22
|
-
getZoom: (state: FlowmapState, props: FlowmapData<L, F>) => number;
|
|
23
|
-
getViewport: (state: FlowmapState, props: FlowmapData<L, F>) => import("./types").ViewportProps;
|
|
24
|
-
getSelectedTimeRange: (state: FlowmapState, props: FlowmapData<L, F>) => [Date, Date] | undefined;
|
|
25
|
-
getColorScheme: Selector<L, F, string | string[] | undefined>;
|
|
26
|
-
getDarkMode: Selector<L, F, boolean>;
|
|
27
|
-
getFadeEnabled: Selector<L, F, boolean>;
|
|
28
|
-
getFadeOpacityEnabled: Selector<L, F, boolean>;
|
|
29
|
-
getFadeAmount: Selector<L, F, number>;
|
|
30
|
-
getAnimate: Selector<L, F, boolean>;
|
|
31
|
-
getInvalidLocationIds: Selector<L, F, string[] | undefined>;
|
|
32
|
-
getLocations: Selector<L, F, L[] | undefined>;
|
|
33
|
-
getLocationIds: Selector<L, F, Set<string> | undefined>;
|
|
34
|
-
getSelectedLocationsSet: Selector<L, F, Set<string> | undefined>;
|
|
35
|
-
getSortedFlowsForKnownLocations: Selector<L, F, F[] | undefined>;
|
|
36
|
-
getActualTimeExtent: Selector<L, F, [Date, Date] | undefined>;
|
|
37
|
-
getTimeGranularityKey: Selector<L, F, TimeGranularityKey | undefined>;
|
|
38
|
-
getTimeExtent: Selector<L, F, [Date, Date] | undefined>;
|
|
39
|
-
getSortedFlowsForKnownLocationsFilteredByTime: Selector<L, F, F[] | undefined>;
|
|
40
|
-
getLocationsHavingFlows: Selector<L, F, L[] | undefined>;
|
|
41
|
-
getLocationsById: Selector<L, F, Map<string, L> | undefined>;
|
|
42
|
-
getClusterIndex: Selector<L, F, ClusterIndex<F> | undefined>;
|
|
43
|
-
getAvailableClusterZoomLevels: ((state: {
|
|
44
|
-
filterState: import("./FlowmapState").FilterState;
|
|
45
|
-
settingsState: import("./FlowmapState").SettingsState;
|
|
46
|
-
viewport: import("./types").ViewportProps;
|
|
47
|
-
}, params_0: {
|
|
48
|
-
locations: L[] | undefined;
|
|
49
|
-
flows: F[] | undefined;
|
|
50
|
-
}, ...params_1: {}[]) => number[] | undefined) & import("reselect").OutputSelectorFields<(args_0: ClusterIndex<F> | undefined, args_1: string[] | undefined) => number[] & {
|
|
51
|
-
clearCache: () => void;
|
|
52
|
-
}> & {
|
|
53
|
-
clearCache: () => void;
|
|
54
|
-
};
|
|
55
|
-
_getClusterZoom: Selector<L, F, number | undefined>;
|
|
56
|
-
getClusterZoom: (state: FlowmapState, props: FlowmapData<L, F>) => number | undefined;
|
|
57
|
-
getLocationsForSearchBox: Selector<L, F, (L | Cluster)[] | undefined>;
|
|
58
|
-
getDiffMode: Selector<L, F, boolean>;
|
|
59
|
-
_getFlowmapColors: ((state: {
|
|
60
|
-
filterState: import("./FlowmapState").FilterState;
|
|
61
|
-
settingsState: import("./FlowmapState").SettingsState;
|
|
62
|
-
viewport: import("./types").ViewportProps;
|
|
63
|
-
}, params_0: {
|
|
64
|
-
locations: L[] | undefined;
|
|
65
|
-
flows: F[] | undefined;
|
|
66
|
-
}, ...params_1: {}[]) => import("./colors").DiffColors | import("./colors").Colors) & import("reselect").OutputSelectorFields<(args_0: boolean, args_1: string | string[] | undefined, args_2: boolean, args_3: boolean, args_4: boolean, args_5: number, args_6: boolean) => (import("./colors").DiffColors | import("./colors").Colors) & {
|
|
67
|
-
clearCache: () => void;
|
|
68
|
-
}> & {
|
|
69
|
-
clearCache: () => void;
|
|
70
|
-
};
|
|
71
|
-
getFlowmapColorsRGBA: ((state: {
|
|
72
|
-
filterState: import("./FlowmapState").FilterState;
|
|
73
|
-
settingsState: import("./FlowmapState").SettingsState;
|
|
74
|
-
viewport: import("./types").ViewportProps;
|
|
75
|
-
}, params_0: {
|
|
76
|
-
locations: L[] | undefined;
|
|
77
|
-
flows: F[] | undefined;
|
|
78
|
-
}, ...params_1: {}[]) => ColorsRGBA | DiffColorsRGBA) & import("reselect").OutputSelectorFields<(args_0: import("./colors").DiffColors | import("./colors").Colors) => (ColorsRGBA | DiffColorsRGBA) & {
|
|
79
|
-
clearCache: () => void;
|
|
80
|
-
}> & {
|
|
81
|
-
clearCache: () => void;
|
|
82
|
-
};
|
|
83
|
-
getUnknownLocations: Selector<L, F, Set<string> | undefined>;
|
|
84
|
-
getSortedAggregatedFilteredFlows: Selector<L, F, (F | AggregateFlow)[] | undefined>;
|
|
85
|
-
getExpandedSelectedLocationsSet: Selector<L, F, Set<string> | undefined>;
|
|
86
|
-
getTotalCountsByTime: Selector<L, F, CountByTime[] | undefined>;
|
|
87
|
-
getMaxLocationCircleSize: Selector<L, F, number>;
|
|
88
|
-
getViewportBoundingBox: Selector<L, F, [number, number, number, number]>;
|
|
89
|
-
getLocationsForZoom: Selector<L, F, L[] | ClusterNode[] | undefined>;
|
|
90
|
-
getLocationTotals: Selector<L, F, Map<string, LocationTotals> | undefined>;
|
|
91
|
-
getLocationsTree: Selector<L, F, KDBushTree>;
|
|
92
|
-
_getLocationIdsInViewport: Selector<L, F, Set<string> | undefined>;
|
|
93
|
-
getLocationIdsInViewport: Selector<L, F, Set<string> | undefined>;
|
|
94
|
-
getTotalUnfilteredCount: Selector<L, F, number | undefined>;
|
|
95
|
-
getTotalFilteredCount: Selector<L, F, number | undefined>;
|
|
96
|
-
_getLocationTotalsExtent: Selector<L, F, [number, number] | undefined>;
|
|
97
|
-
_getLocationTotalsForViewportExtent: Selector<L, F, [
|
|
98
|
-
number,
|
|
99
|
-
number
|
|
100
|
-
] | undefined>;
|
|
101
|
-
getLocationTotalsExtent: (state: FlowmapState, props: FlowmapData<L, F>) => [number, number] | undefined;
|
|
102
|
-
getFlowsForFlowmapLayer: Selector<L, F, (F | AggregateFlow)[] | undefined>;
|
|
103
|
-
_getFlowMagnitudeExtent: Selector<L, F, [number, number] | undefined>;
|
|
104
|
-
_getAdaptiveFlowMagnitudeExtent: Selector<L, F, [
|
|
105
|
-
number,
|
|
106
|
-
number
|
|
107
|
-
] | undefined>;
|
|
108
|
-
getFlowMagnitudeExtent: (state: FlowmapState, props: FlowmapData<L, F>) => [number, number] | undefined;
|
|
109
|
-
getLocationMaxAbsTotalGetter: ((state: {
|
|
110
|
-
filterState: import("./FlowmapState").FilterState;
|
|
111
|
-
settingsState: import("./FlowmapState").SettingsState;
|
|
112
|
-
viewport: import("./types").ViewportProps;
|
|
113
|
-
}, params_0: {
|
|
114
|
-
locations: L[] | undefined;
|
|
115
|
-
flows: F[] | undefined;
|
|
116
|
-
}, ...params_1: {}[]) => (locationId: string) => number | undefined) & import("reselect").OutputSelectorFields<(args_0: Map<string, LocationTotals> | undefined) => ((locationId: string) => number | undefined) & {
|
|
117
|
-
clearCache: () => void;
|
|
118
|
-
}> & {
|
|
119
|
-
clearCache: () => void;
|
|
120
|
-
};
|
|
121
|
-
getFlowThicknessScale: ((state: {
|
|
122
|
-
filterState: import("./FlowmapState").FilterState;
|
|
123
|
-
settingsState: import("./FlowmapState").SettingsState;
|
|
124
|
-
viewport: import("./types").ViewportProps;
|
|
125
|
-
}, params_0: {
|
|
126
|
-
locations: L[] | undefined;
|
|
127
|
-
flows: F[] | undefined;
|
|
128
|
-
}) => ScaleLinear<number, number, never> | undefined) & import("reselect").OutputSelectorFields<(args_0: [number, number] | undefined) => ScaleLinear<number, number, never> & {
|
|
129
|
-
clearCache: () => void;
|
|
130
|
-
}> & {
|
|
131
|
-
clearCache: () => void;
|
|
132
|
-
};
|
|
133
|
-
getCircleSizeScale: ((state: {
|
|
134
|
-
filterState: import("./FlowmapState").FilterState;
|
|
135
|
-
settingsState: import("./FlowmapState").SettingsState;
|
|
136
|
-
viewport: import("./types").ViewportProps;
|
|
137
|
-
}, params_0: {
|
|
138
|
-
locations: L[] | undefined;
|
|
139
|
-
flows: F[] | undefined;
|
|
140
|
-
}, ...params_1: {}[]) => import("d3-scale").ScalePower<number, number, never> | (() => number) | undefined) & import("reselect").OutputSelectorFields<(args_0: number, args_1: boolean, args_2: [number, number] | undefined) => (import("d3-scale").ScalePower<number, number, never> | (() => number) | undefined) & {
|
|
141
|
-
clearCache: () => void;
|
|
142
|
-
}> & {
|
|
143
|
-
clearCache: () => void;
|
|
144
|
-
};
|
|
145
|
-
getInCircleSizeGetter: ((state: {
|
|
146
|
-
filterState: import("./FlowmapState").FilterState;
|
|
147
|
-
settingsState: import("./FlowmapState").SettingsState;
|
|
148
|
-
viewport: import("./types").ViewportProps;
|
|
149
|
-
}, params_0: {
|
|
150
|
-
locations: L[] | undefined;
|
|
151
|
-
flows: F[] | undefined;
|
|
152
|
-
}, ...params_1: {}[]) => (locationId: string) => number) & import("reselect").OutputSelectorFields<(args_0: import("d3-scale").ScalePower<number, number, never> | (() => number) | undefined, args_1: Map<string, LocationTotals> | undefined) => ((locationId: string) => number) & {
|
|
153
|
-
clearCache: () => void;
|
|
154
|
-
}> & {
|
|
155
|
-
clearCache: () => void;
|
|
156
|
-
};
|
|
157
|
-
getOutCircleSizeGetter: ((state: {
|
|
158
|
-
filterState: import("./FlowmapState").FilterState;
|
|
159
|
-
settingsState: import("./FlowmapState").SettingsState;
|
|
160
|
-
viewport: import("./types").ViewportProps;
|
|
161
|
-
}, params_0: {
|
|
162
|
-
locations: L[] | undefined;
|
|
163
|
-
flows: F[] | undefined;
|
|
164
|
-
}, ...params_1: {}[]) => (locationId: string) => number) & import("reselect").OutputSelectorFields<(args_0: import("d3-scale").ScalePower<number, number, never> | (() => number) | undefined, args_1: Map<string, LocationTotals> | undefined) => ((locationId: string) => number) & {
|
|
165
|
-
clearCache: () => void;
|
|
166
|
-
}> & {
|
|
167
|
-
clearCache: () => void;
|
|
168
|
-
};
|
|
169
|
-
getSortedLocationsForZoom: Selector<L, F, L[] | ClusterNode[] | undefined>;
|
|
170
|
-
getLocationsForFlowmapLayer: Selector<L, F, Array<L | ClusterNode> | undefined>;
|
|
171
|
-
getLocationsForFlowmapLayerById: Selector<L, F, Map<string, L | ClusterNode> | undefined>;
|
|
172
|
-
getLayersData: Selector<L, F, LayersData>;
|
|
173
|
-
prepareLayersData(state: FlowmapState, props: FlowmapData<L, F>): LayersData;
|
|
174
|
-
_prepareLayersData(locations: (L | ClusterNode)[] | undefined, flows: (F | AggregateFlow)[] | undefined, flowmapColors: DiffColorsRGBA | ColorsRGBA, locationsById: Map<string, L | ClusterNode> | undefined, locationIdsInViewport: Set<string> | undefined, getInCircleSize: (locationId: string) => number, getOutCircleSize: (locationId: string) => number, flowThicknessScale: ScaleLinear<number, number, never> | undefined, animationEnabled: boolean): LayersData;
|
|
175
|
-
getLocationsInBbox(tree: KDBushTree, bbox: [number, number, number, number]): Array<L> | undefined;
|
|
176
|
-
_getLocationsInBboxIndices(tree: KDBushTree, bbox: [number, number, number, number]): any;
|
|
177
|
-
isFlowInSelection(flow: F | AggregateFlow, selectedLocationsSet: Set<string> | undefined, locationFilterMode: LocationFilterMode): boolean;
|
|
178
|
-
}
|
|
179
|
-
/**
|
|
180
|
-
* This is used to augment hover picking info so that we can displace location tooltip
|
|
181
|
-
* @param circleAttributes
|
|
182
|
-
* @param index
|
|
183
|
-
*/
|
|
184
|
-
export declare function getOuterCircleRadiusByIndex(circleAttributes: FlowCirclesLayerAttributes, index: number): number;
|
|
185
|
-
export declare function getLocationCoordsByIndex(circleAttributes: FlowCirclesLayerAttributes, index: number): [number, number];
|
|
186
|
-
export declare function getFlowLineAttributesByIndex(lineAttributes: FlowLinesLayerAttributes, index: number): FlowLinesLayerAttributes;
|
|
187
|
-
export {};
|
|
188
|
-
//# sourceMappingURL=FlowmapSelectors.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FlowmapSelectors.d.ts","sourceRoot":"","sources":["../src/FlowmapSelectors.ts"],"names":[],"mappings":"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"}
|