@flowmap.gl/data 8.0.0-alpha.2 → 8.0.0-alpha.20
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/FlowmapAggregateAccessors.d.ts +16 -0
- package/dist/FlowmapAggregateAccessors.d.ts.map +1 -0
- package/dist/FlowmapAggregateAccessors.js +46 -0
- package/dist/{FlowMapSelectors.d.ts → FlowmapSelectors.d.ts} +87 -70
- package/dist/FlowmapSelectors.d.ts.map +1 -0
- package/dist/FlowmapSelectors.js +888 -0
- package/dist/{FlowMapState.d.ts → FlowmapState.d.ts} +11 -8
- package/dist/FlowmapState.d.ts.map +1 -0
- package/dist/FlowmapState.js +2 -0
- package/dist/cluster/cluster.d.ts +6 -5
- package/dist/cluster/cluster.d.ts.map +1 -1
- package/dist/cluster/cluster.js +76 -20
- package/dist/colors.d.ts +7 -7
- package/dist/colors.d.ts.map +1 -1
- package/dist/colors.js +55 -20
- package/dist/getViewStateForLocations.d.ts +18 -11
- package/dist/getViewStateForLocations.d.ts.map +1 -1
- package/dist/getViewStateForLocations.js +37 -23
- package/dist/index.d.ts +9 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -6
- package/dist/provider/FlowmapDataProvider.d.ts +21 -0
- package/dist/provider/FlowmapDataProvider.d.ts.map +1 -0
- package/dist/provider/FlowmapDataProvider.js +17 -0
- package/dist/provider/LocalFlowmapDataProvider.d.ts +21 -0
- package/dist/provider/LocalFlowmapDataProvider.d.ts.map +1 -0
- package/dist/provider/LocalFlowmapDataProvider.js +104 -0
- package/dist/selector-functions.d.ts +4 -0
- package/dist/selector-functions.d.ts.map +1 -0
- package/dist/selector-functions.js +20 -0
- package/dist/types.d.ts +12 -9
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +4 -4
- package/dist/util.d.ts +0 -1
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +1 -4
- package/package.json +10 -12
- package/src/{FlowMapAggregateAccessors.ts → FlowmapAggregateAccessors.ts} +14 -9
- package/src/{FlowMapSelectors.ts → FlowmapSelectors.ts} +349 -282
- package/src/{FlowMapState.ts → FlowmapState.ts} +10 -7
- package/src/cluster/cluster.ts +95 -34
- package/src/colors.ts +70 -28
- package/src/getViewStateForLocations.ts +56 -40
- package/src/index.ts +9 -6
- package/src/provider/{FlowMapDataProvider.ts → FlowmapDataProvider.ts} +27 -17
- package/src/provider/LocalFlowmapDataProvider.ts +129 -0
- package/src/selector-functions.ts +34 -0
- package/src/types.ts +15 -12
- package/src/util.ts +0 -4
- package/dist/FlowMapAggregateAccessors.d.ts +0 -15
- package/dist/FlowMapAggregateAccessors.d.ts.map +0 -1
- package/dist/FlowMapAggregateAccessors.js +0 -43
- package/dist/FlowMapSelectors.d.ts.map +0 -1
- package/dist/FlowMapSelectors.js +0 -834
- package/dist/FlowMapState.d.ts.map +0 -1
- package/dist/FlowMapState.js +0 -2
- package/dist/provider/FlowMapDataProvider.d.ts +0 -16
- package/dist/provider/FlowMapDataProvider.d.ts.map +0 -1
- package/dist/provider/FlowMapDataProvider.js +0 -17
- package/dist/provider/LocalFlowMapDataProvider.d.ts +0 -20
- package/dist/provider/LocalFlowMapDataProvider.d.ts.map +0 -1
- package/dist/provider/LocalFlowMapDataProvider.js +0 -87
- package/src/provider/LocalFlowMapDataProvider.ts +0 -105
|
@@ -1,21 +1,23 @@
|
|
|
1
1
|
import {AggregateFlow, Cluster, LocationAccessors, LocationTotals} from '..';
|
|
2
|
-
import {
|
|
2
|
+
import {FlowmapState} from '../FlowmapState';
|
|
3
3
|
import {
|
|
4
4
|
ClusterNode,
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
FlowmapData,
|
|
6
|
+
FlowmapDataAccessors,
|
|
7
7
|
LayersData,
|
|
8
8
|
ViewportProps,
|
|
9
9
|
} from '../types';
|
|
10
10
|
|
|
11
|
-
export default interface
|
|
12
|
-
setAccessors(accessors:
|
|
11
|
+
export default interface FlowmapDataProvider<L, F> {
|
|
12
|
+
setAccessors(accessors: FlowmapDataAccessors<L, F>): void;
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
setFlowmapState(flowmapState: FlowmapState): Promise<void>;
|
|
15
15
|
|
|
16
16
|
// clearData(): void;
|
|
17
17
|
|
|
18
|
-
getViewportForLocations(
|
|
18
|
+
getViewportForLocations(
|
|
19
|
+
dims: [number, number],
|
|
20
|
+
): Promise<ViewportProps | undefined>;
|
|
19
21
|
|
|
20
22
|
// getFlowTotals(): Promise<FlowTotals>;
|
|
21
23
|
|
|
@@ -34,26 +36,34 @@ export default interface FlowMapDataProvider<L, F> {
|
|
|
34
36
|
// getLocationsForSearchBox(): Promise<(FlowLocation | ClusterNode)[] | undefined>;
|
|
35
37
|
|
|
36
38
|
getLayersData(): Promise<LayersData | undefined>;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* This is to give the data provider control over when/how often layersData
|
|
42
|
+
* is updated which leads to the flowmap being redrawn.
|
|
43
|
+
*/
|
|
44
|
+
updateLayersData(
|
|
45
|
+
setLayersData: (layersData: LayersData | undefined) => void,
|
|
46
|
+
changeFlags: Record<string, boolean>,
|
|
47
|
+
): Promise<void>;
|
|
37
48
|
}
|
|
38
49
|
|
|
39
|
-
export function
|
|
50
|
+
export function isFlowmapData<L, F>(
|
|
40
51
|
data: Record<string, any>,
|
|
41
|
-
): data is
|
|
52
|
+
): data is FlowmapData<L, F> {
|
|
42
53
|
return (
|
|
43
|
-
data &&
|
|
44
|
-
|
|
45
|
-
data.
|
|
46
|
-
Array.isArray(data.
|
|
47
|
-
Array.isArray(data.flows)
|
|
54
|
+
data && data.locations && data.flows
|
|
55
|
+
// TODO: test that they are iterable
|
|
56
|
+
// Array.isArray(data.locations) &&
|
|
57
|
+
// Array.isArray(data.flows)
|
|
48
58
|
);
|
|
49
59
|
}
|
|
50
60
|
|
|
51
|
-
export function
|
|
61
|
+
export function isFlowmapDataProvider<L, F>(
|
|
52
62
|
dataProvider: Record<string, any>,
|
|
53
|
-
): dataProvider is
|
|
63
|
+
): dataProvider is FlowmapDataProvider<L, F> {
|
|
54
64
|
return (
|
|
55
65
|
dataProvider &&
|
|
56
|
-
typeof dataProvider.
|
|
66
|
+
typeof dataProvider.setFlowmapState === 'function' &&
|
|
57
67
|
typeof dataProvider.getViewportForLocations === 'function' &&
|
|
58
68
|
typeof dataProvider.getFlowByIndex === 'function' &&
|
|
59
69
|
typeof dataProvider.getLocationById === 'function' &&
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import type FlowmapDataProvider from './FlowmapDataProvider';
|
|
2
|
+
import type {
|
|
3
|
+
Cluster,
|
|
4
|
+
ClusterNode,
|
|
5
|
+
FlowmapData,
|
|
6
|
+
FlowmapDataAccessors,
|
|
7
|
+
LayersData,
|
|
8
|
+
LocationTotals,
|
|
9
|
+
ViewportProps,
|
|
10
|
+
AggregateFlow,
|
|
11
|
+
} from '../types';
|
|
12
|
+
import {FlowmapState} from '../FlowmapState';
|
|
13
|
+
import FlowmapSelectors from '../FlowmapSelectors';
|
|
14
|
+
import {
|
|
15
|
+
GetViewStateOptions,
|
|
16
|
+
getViewStateForLocations,
|
|
17
|
+
} from '../getViewStateForLocations';
|
|
18
|
+
|
|
19
|
+
export default class LocalFlowmapDataProvider<L, F>
|
|
20
|
+
implements FlowmapDataProvider<L, F>
|
|
21
|
+
{
|
|
22
|
+
private selectors: FlowmapSelectors<L, F>;
|
|
23
|
+
private flowmapData: FlowmapData<L, F> | undefined;
|
|
24
|
+
private flowmapState: FlowmapState | undefined;
|
|
25
|
+
|
|
26
|
+
constructor(accessors: FlowmapDataAccessors<L, F>) {
|
|
27
|
+
// scope selectors to the concrete instance of FlowmapDataProvider
|
|
28
|
+
this.selectors = new FlowmapSelectors<L, F>(accessors);
|
|
29
|
+
this.flowmapData = undefined;
|
|
30
|
+
this.flowmapState = undefined;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
setAccessors(accessors: FlowmapDataAccessors<L, F>) {
|
|
34
|
+
this.selectors.setAccessors(accessors);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
async setFlowmapData(flowmapData: FlowmapData<L, F>): Promise<void> {
|
|
38
|
+
this.flowmapData = flowmapData;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
async setFlowmapState(flowmapState: FlowmapState): Promise<void> {
|
|
42
|
+
this.flowmapState = flowmapState;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
async getFlowByIndex(idx: number): Promise<F | AggregateFlow | undefined> {
|
|
46
|
+
if (!this.flowmapState || !this.flowmapData) {
|
|
47
|
+
return undefined;
|
|
48
|
+
}
|
|
49
|
+
const flows = this.selectors.getFlowsForFlowmapLayer(
|
|
50
|
+
this.flowmapState,
|
|
51
|
+
this.flowmapData,
|
|
52
|
+
);
|
|
53
|
+
return flows?.[idx];
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// TODO: this is unreliable, should replace by unqiue ID
|
|
57
|
+
async getLocationByIndex(idx: number): Promise<L | ClusterNode | undefined> {
|
|
58
|
+
if (!this.flowmapState || !this.flowmapData) {
|
|
59
|
+
return undefined;
|
|
60
|
+
}
|
|
61
|
+
const locations = this.selectors.getLocationsForFlowmapLayer(
|
|
62
|
+
this.flowmapState,
|
|
63
|
+
this.flowmapData,
|
|
64
|
+
);
|
|
65
|
+
return locations?.[idx];
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
async getLayersData(): Promise<LayersData | undefined> {
|
|
69
|
+
if (!this.flowmapState || !this.flowmapData) {
|
|
70
|
+
return undefined;
|
|
71
|
+
}
|
|
72
|
+
return this.selectors.getLayersData(this.flowmapState, this.flowmapData);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
async getLocationById(id: string): Promise<L | Cluster | undefined> {
|
|
76
|
+
if (!this.flowmapState || !this.flowmapData) {
|
|
77
|
+
return undefined;
|
|
78
|
+
}
|
|
79
|
+
const clusterIndex = this.selectors.getClusterIndex(
|
|
80
|
+
this.flowmapState,
|
|
81
|
+
this.flowmapData,
|
|
82
|
+
);
|
|
83
|
+
if (clusterIndex) {
|
|
84
|
+
const cluster = clusterIndex.getClusterById(id);
|
|
85
|
+
if (cluster) {
|
|
86
|
+
return cluster;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
const locationsById = this.selectors.getLocationsById(
|
|
90
|
+
this.flowmapState,
|
|
91
|
+
this.flowmapData,
|
|
92
|
+
);
|
|
93
|
+
return locationsById?.get(id);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
async getTotalsForLocation(id: string): Promise<LocationTotals | undefined> {
|
|
97
|
+
if (!this.flowmapState || !this.flowmapData) {
|
|
98
|
+
return undefined;
|
|
99
|
+
}
|
|
100
|
+
return this.selectors
|
|
101
|
+
.getLocationTotals(this.flowmapState, this.flowmapData)
|
|
102
|
+
?.get(id);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
async getViewportForLocations(
|
|
106
|
+
dims: [number, number],
|
|
107
|
+
opts?: GetViewStateOptions,
|
|
108
|
+
): Promise<ViewportProps | undefined> {
|
|
109
|
+
if (!this.flowmapData?.locations) {
|
|
110
|
+
return undefined;
|
|
111
|
+
}
|
|
112
|
+
// @ts-ignore
|
|
113
|
+
return getViewStateForLocations(
|
|
114
|
+
this.flowmapData.locations,
|
|
115
|
+
(loc) => [
|
|
116
|
+
this.selectors.accessors.getLocationLon(loc),
|
|
117
|
+
this.selectors.accessors.getLocationLat(loc),
|
|
118
|
+
],
|
|
119
|
+
dims,
|
|
120
|
+
opts,
|
|
121
|
+
);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
async updateLayersData(
|
|
125
|
+
setLayersData: (layersData: LayersData | undefined) => void,
|
|
126
|
+
) {
|
|
127
|
+
setLayersData(await this.getLayersData());
|
|
128
|
+
}
|
|
129
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import {WebMercatorViewport} from '@math.gl/web-mercator';
|
|
2
|
+
import {ViewportProps} from './types';
|
|
3
|
+
import {scaleLinear} from 'd3-scale';
|
|
4
|
+
|
|
5
|
+
// TODO: use re-reselect
|
|
6
|
+
|
|
7
|
+
export const getViewportBoundingBox = (
|
|
8
|
+
viewport: ViewportProps,
|
|
9
|
+
maxLocationCircleSize = 0,
|
|
10
|
+
): [number, number, number, number] => {
|
|
11
|
+
const pad = maxLocationCircleSize;
|
|
12
|
+
const bounds = new WebMercatorViewport({
|
|
13
|
+
...viewport,
|
|
14
|
+
width: viewport.width + pad * 2,
|
|
15
|
+
height: viewport.height + pad * 2,
|
|
16
|
+
}).getBounds();
|
|
17
|
+
return [bounds[0][0], bounds[0][1], bounds[1][0], bounds[1][1]];
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export const getFlowThicknessScale = (
|
|
21
|
+
magnitudeExtent: [number, number] | undefined,
|
|
22
|
+
) => {
|
|
23
|
+
if (!magnitudeExtent) return undefined;
|
|
24
|
+
return scaleLinear()
|
|
25
|
+
.range([0.025, 0.5])
|
|
26
|
+
.domain([
|
|
27
|
+
0,
|
|
28
|
+
// should support diff mode too
|
|
29
|
+
Math.max.apply(
|
|
30
|
+
null,
|
|
31
|
+
magnitudeExtent.map((x: number | undefined) => Math.abs(x || 0)),
|
|
32
|
+
),
|
|
33
|
+
]);
|
|
34
|
+
};
|
package/src/types.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
export type
|
|
2
|
-
locations: L
|
|
3
|
-
flows: F
|
|
1
|
+
export type FlowmapData<L, F> = {
|
|
2
|
+
locations: Iterable<L> | undefined;
|
|
3
|
+
flows: Iterable<F> | undefined;
|
|
4
|
+
clusterLevels?: ClusterLevels;
|
|
4
5
|
};
|
|
5
6
|
|
|
6
7
|
export interface ViewState {
|
|
@@ -26,14 +27,15 @@ export interface FlowAccessors<F> {
|
|
|
26
27
|
export interface LocationAccessors<L> {
|
|
27
28
|
getLocationId: LocationAccessor<L, string>;
|
|
28
29
|
getLocationName?: LocationAccessor<L, string>;
|
|
29
|
-
|
|
30
|
+
getLocationLat: LocationAccessor<L, number>;
|
|
31
|
+
getLocationLon: LocationAccessor<L, number>;
|
|
30
32
|
getLocationClusterName?: (locationIds: string[]) => string;
|
|
31
33
|
// getLocationTotalIn?: LocationAccessor<number>;
|
|
32
34
|
// getLocationTotalOut?: LocationAccessor<number>;
|
|
33
35
|
// getLocationTotalInternal?: LocationAccessor<number>;
|
|
34
36
|
}
|
|
35
37
|
|
|
36
|
-
export type
|
|
38
|
+
export type FlowmapDataAccessors<L, F> = LocationAccessors<L> &
|
|
37
39
|
FlowAccessors<F>;
|
|
38
40
|
|
|
39
41
|
export interface LocationTotals {
|
|
@@ -58,9 +60,9 @@ export interface ViewportProps {
|
|
|
58
60
|
height: number;
|
|
59
61
|
latitude: number;
|
|
60
62
|
longitude: number;
|
|
61
|
-
zoom
|
|
62
|
-
bearing
|
|
63
|
-
pitch
|
|
63
|
+
zoom?: number;
|
|
64
|
+
bearing?: number;
|
|
65
|
+
pitch?: number;
|
|
64
66
|
altitude?: number;
|
|
65
67
|
maxZoom?: number;
|
|
66
68
|
minZoom?: number;
|
|
@@ -75,7 +77,8 @@ export interface ViewportProps {
|
|
|
75
77
|
export interface ClusterNode {
|
|
76
78
|
id: string;
|
|
77
79
|
zoom: number;
|
|
78
|
-
|
|
80
|
+
lat: number;
|
|
81
|
+
lon: number;
|
|
79
82
|
}
|
|
80
83
|
|
|
81
84
|
export interface ClusterLevel {
|
|
@@ -113,9 +116,9 @@ export function isAggregateFlow(
|
|
|
113
116
|
): flow is AggregateFlow {
|
|
114
117
|
return (
|
|
115
118
|
flow &&
|
|
116
|
-
flow.origin !== undefined &&
|
|
117
|
-
flow.dest !== undefined &&
|
|
118
|
-
flow.count !== undefined &&
|
|
119
|
+
// flow.origin !== undefined &&
|
|
120
|
+
// flow.dest !== undefined &&
|
|
121
|
+
// flow.count !== undefined &&
|
|
119
122
|
(flow.aggregate ? true : false)
|
|
120
123
|
);
|
|
121
124
|
}
|
package/src/util.ts
CHANGED
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
import {createSelectorCreator, defaultMemoize} from 'reselect';
|
|
2
2
|
|
|
3
|
-
export function flatMap<S, T>(xs: S[], f: (item: S) => T | T[]): T[] {
|
|
4
|
-
return xs.reduce((acc: T[], x: S) => acc.concat(f(x)), []);
|
|
5
|
-
}
|
|
6
|
-
|
|
7
3
|
export const createDebugSelector = createSelectorCreator(defaultMemoize, {
|
|
8
4
|
equalityCheck: (previousVal: any, currentVal: any) => {
|
|
9
5
|
const rv = currentVal === previousVal;
|
|
@@ -1,15 +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
|
-
getLocationCentroid: (location: L | ClusterNode) => [number, number];
|
|
10
|
-
getFlowOriginId: (f: F | AggregateFlow) => string;
|
|
11
|
-
getFlowDestId: (f: F | AggregateFlow) => string;
|
|
12
|
-
getFlowMagnitude: (f: F | AggregateFlow) => number;
|
|
13
|
-
getFlowTime: (f: F) => Date | undefined;
|
|
14
|
-
}
|
|
15
|
-
//# 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,mBAAmB,aAAc,CAAC,GAAG,WAAW,KAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAGhB;IAEnD,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,43 +0,0 @@
|
|
|
1
|
-
import { isAggregateFlow, isCluster, isLocationClusterNode, } from './types';
|
|
2
|
-
export default class FlowMapAggregateAccessors {
|
|
3
|
-
constructor(accessors) {
|
|
4
|
-
this.getLocationId = (location) => isLocationClusterNode(location)
|
|
5
|
-
? location.id
|
|
6
|
-
: this.accessors.getLocationId(location);
|
|
7
|
-
this.getLocationName = (location) => {
|
|
8
|
-
var _a;
|
|
9
|
-
return (_a = (isLocationClusterNode(location) && isCluster(location)
|
|
10
|
-
? location.name
|
|
11
|
-
: undefined)) !== null && _a !== void 0 ? _a : this.getLocationId(location);
|
|
12
|
-
};
|
|
13
|
-
// ? location.name // TODO getLocationName for locations and clusters
|
|
14
|
-
// : this.accessors.getLocationName
|
|
15
|
-
// ? this.accessors.getLocationName(location)
|
|
16
|
-
// : this.getLocationId(location);
|
|
17
|
-
this.getLocationCentroid = (location) => isLocationClusterNode(location)
|
|
18
|
-
? location.centroid
|
|
19
|
-
: this.accessors.getLocationCentroid(location);
|
|
20
|
-
this.getFlowOriginId = (f) => {
|
|
21
|
-
return isAggregateFlow(f) ? f.origin : this.accessors.getFlowOriginId(f);
|
|
22
|
-
};
|
|
23
|
-
this.getFlowDestId = (f) => {
|
|
24
|
-
return isAggregateFlow(f) ? f.dest : this.accessors.getFlowDestId(f);
|
|
25
|
-
};
|
|
26
|
-
this.getFlowMagnitude = (f) => {
|
|
27
|
-
return isAggregateFlow(f) ? f.count : this.accessors.getFlowMagnitude(f);
|
|
28
|
-
};
|
|
29
|
-
// Note: Aggregate flows have no time
|
|
30
|
-
this.getFlowTime = (f) => {
|
|
31
|
-
const { getFlowTime } = this.accessors;
|
|
32
|
-
return getFlowTime ? getFlowTime(f) : undefined;
|
|
33
|
-
};
|
|
34
|
-
this.accessors = accessors;
|
|
35
|
-
}
|
|
36
|
-
setAccessors(accessors) {
|
|
37
|
-
this.accessors = accessors;
|
|
38
|
-
}
|
|
39
|
-
getFlowMapDataAccessors() {
|
|
40
|
-
return this.accessors;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmxvd01hcEFnZ3JlZ2F0ZUFjY2Vzc29ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9GbG93TWFwQWdncmVnYXRlQWNjZXNzb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFJTCxlQUFlLEVBQ2YsU0FBUyxFQUNULHFCQUFxQixHQUN0QixNQUFNLFNBQVMsQ0FBQztBQUVqQixNQUFNLENBQUMsT0FBTyxPQUFPLHlCQUF5QjtJQUU1QyxZQUFZLFNBQXFDO1FBWWpELGtCQUFhLEdBQUcsQ0FBQyxRQUF5QixFQUFVLEVBQUUsQ0FDcEQscUJBQXFCLENBQUMsUUFBUSxDQUFDO1lBQzdCLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNiLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUU3QyxvQkFBZSxHQUFHLENBQUMsUUFBeUIsRUFBVSxFQUFFOztZQUN0RCxPQUFBLE1BQUEsQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDO2dCQUNyRCxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUk7Z0JBQ2YsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxtQ0FBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1NBQUEsQ0FBQztRQUNqRCxxRUFBcUU7UUFDckUsbUNBQW1DO1FBQ25DLDZDQUE2QztRQUM3QyxrQ0FBa0M7UUFFbEMsd0JBQW1CLEdBQUcsQ0FBQyxRQUF5QixFQUFvQixFQUFFLENBQ3BFLHFCQUFxQixDQUFDLFFBQVEsQ0FBQztZQUM3QixDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVE7WUFDbkIsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFbkQsb0JBQWUsR0FBRyxDQUFDLENBQW9CLEVBQUUsRUFBRTtZQUN6QyxPQUFPLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0UsQ0FBQyxDQUFDO1FBRUYsa0JBQWEsR0FBRyxDQUFDLENBQW9CLEVBQUUsRUFBRTtZQUN2QyxPQUFPLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkUsQ0FBQyxDQUFDO1FBRUYscUJBQWdCLEdBQUcsQ0FBQyxDQUFvQixFQUFFLEVBQUU7WUFDMUMsT0FBTyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0UsQ0FBQyxDQUFDO1FBRUYscUNBQXFDO1FBQ3JDLGdCQUFXLEdBQUcsQ0FBQyxDQUFJLEVBQUUsRUFBRTtZQUNyQixNQUFNLEVBQUMsV0FBVyxFQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNyQyxPQUFPLFdBQVcsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDbEQsQ0FBQyxDQUFDO1FBOUNBLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO0lBQzdCLENBQUM7SUFFRCxZQUFZLENBQUMsU0FBcUM7UUFDaEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7SUFDN0IsQ0FBQztJQUVELHVCQUF1QjtRQUNyQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztDQXNDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFnZ3JlZ2F0ZUZsb3csXG4gIENsdXN0ZXJOb2RlLFxuICBGbG93TWFwRGF0YUFjY2Vzc29ycyxcbiAgaXNBZ2dyZWdhdGVGbG93LFxuICBpc0NsdXN0ZXIsXG4gIGlzTG9jYXRpb25DbHVzdGVyTm9kZSxcbn0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZsb3dNYXBBZ2dyZWdhdGVBY2Nlc3NvcnM8TCwgRj4ge1xuICBwcml2YXRlIGFjY2Vzc29yczogRmxvd01hcERhdGFBY2Nlc3NvcnM8TCwgRj47XG4gIGNvbnN0cnVjdG9yKGFjY2Vzc29yczogRmxvd01hcERhdGFBY2Nlc3NvcnM8TCwgRj4pIHtcbiAgICB0aGlzLmFjY2Vzc29ycyA9IGFjY2Vzc29ycztcbiAgfVxuXG4gIHNldEFjY2Vzc29ycyhhY2Nlc3NvcnM6IEZsb3dNYXBEYXRhQWNjZXNzb3JzPEwsIEY+KSB7XG4gICAgdGhpcy5hY2Nlc3NvcnMgPSBhY2Nlc3NvcnM7XG4gIH1cblxuICBnZXRGbG93TWFwRGF0YUFjY2Vzc29ycygpIHtcbiAgICByZXR1cm4gdGhpcy5hY2Nlc3NvcnM7XG4gIH1cblxuICBnZXRMb2NhdGlvbklkID0gKGxvY2F0aW9uOiBMIHwgQ2x1c3Rlck5vZGUpOiBzdHJpbmcgPT5cbiAgICBpc0xvY2F0aW9uQ2x1c3Rlck5vZGUobG9jYXRpb24pXG4gICAgICA/IGxvY2F0aW9uLmlkXG4gICAgICA6IHRoaXMuYWNjZXNzb3JzLmdldExvY2F0aW9uSWQobG9jYXRpb24pO1xuXG4gIGdldExvY2F0aW9uTmFtZSA9IChsb2NhdGlvbjogTCB8IENsdXN0ZXJOb2RlKTogc3RyaW5nID0+XG4gICAgKGlzTG9jYXRpb25DbHVzdGVyTm9kZShsb2NhdGlvbikgJiYgaXNDbHVzdGVyKGxvY2F0aW9uKVxuICAgICAgPyBsb2NhdGlvbi5uYW1lXG4gICAgICA6IHVuZGVmaW5lZCkgPz8gdGhpcy5nZXRMb2NhdGlvbklkKGxvY2F0aW9uKTtcbiAgLy8gPyBsb2NhdGlvbi5uYW1lIC8vIFRPRE8gZ2V0TG9jYXRpb25OYW1lIGZvciBsb2NhdGlvbnMgYW5kIGNsdXN0ZXJzXG4gIC8vIDogdGhpcy5hY2Nlc3NvcnMuZ2V0TG9jYXRpb25OYW1lXG4gIC8vID8gdGhpcy5hY2Nlc3NvcnMuZ2V0TG9jYXRpb25OYW1lKGxvY2F0aW9uKVxuICAvLyA6IHRoaXMuZ2V0TG9jYXRpb25JZChsb2NhdGlvbik7XG5cbiAgZ2V0TG9jYXRpb25DZW50cm9pZCA9IChsb2NhdGlvbjogTCB8IENsdXN0ZXJOb2RlKTogW251bWJlciwgbnVtYmVyXSA9PlxuICAgIGlzTG9jYXRpb25DbHVzdGVyTm9kZShsb2NhdGlvbilcbiAgICAgID8gbG9jYXRpb24uY2VudHJvaWRcbiAgICAgIDogdGhpcy5hY2Nlc3NvcnMuZ2V0TG9jYXRpb25DZW50cm9pZChsb2NhdGlvbik7XG5cbiAgZ2V0Rmxvd09yaWdpbklkID0gKGY6IEYgfCBBZ2dyZWdhdGVGbG93KSA9PiB7XG4gICAgcmV0dXJuIGlzQWdncmVnYXRlRmxvdyhmKSA/IGYub3JpZ2luIDogdGhpcy5hY2Nlc3NvcnMuZ2V0Rmxvd09yaWdpbklkKGYpO1xuICB9O1xuXG4gIGdldEZsb3dEZXN0SWQgPSAoZjogRiB8IEFnZ3JlZ2F0ZUZsb3cpID0+IHtcbiAgICByZXR1cm4gaXNBZ2dyZWdhdGVGbG93KGYpID8gZi5kZXN0IDogdGhpcy5hY2Nlc3NvcnMuZ2V0Rmxvd0Rlc3RJZChmKTtcbiAgfTtcblxuICBnZXRGbG93TWFnbml0dWRlID0gKGY6IEYgfCBBZ2dyZWdhdGVGbG93KSA9PiB7XG4gICAgcmV0dXJuIGlzQWdncmVnYXRlRmxvdyhmKSA/IGYuY291bnQgOiB0aGlzLmFjY2Vzc29ycy5nZXRGbG93TWFnbml0dWRlKGYpO1xuICB9O1xuXG4gIC8vIE5vdGU6IEFnZ3JlZ2F0ZSBmbG93cyBoYXZlIG5vIHRpbWVcbiAgZ2V0Rmxvd1RpbWUgPSAoZjogRikgPT4ge1xuICAgIGNvbnN0IHtnZXRGbG93VGltZX0gPSB0aGlzLmFjY2Vzc29ycztcbiAgICByZXR1cm4gZ2V0Rmxvd1RpbWUgPyBnZXRGbG93VGltZShmKSA6IHVuZGVmaW5lZDtcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FlowMapSelectors.d.ts","sourceRoot":"","sources":["../src/FlowMapSelectors.ts"],"names":[],"mappings":"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"}
|