@flowmap.gl/data 8.0.0-alpha.0

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.
Files changed (56) hide show
  1. package/LICENSE +199 -0
  2. package/dist/FlowMapAggregateAccessors.d.ts +15 -0
  3. package/dist/FlowMapAggregateAccessors.d.ts.map +1 -0
  4. package/dist/FlowMapAggregateAccessors.js +43 -0
  5. package/dist/FlowMapSelectors.d.ts +156 -0
  6. package/dist/FlowMapSelectors.d.ts.map +1 -0
  7. package/dist/FlowMapSelectors.js +831 -0
  8. package/dist/FlowMapState.d.ts +24 -0
  9. package/dist/FlowMapState.d.ts.map +1 -0
  10. package/dist/FlowMapState.js +2 -0
  11. package/dist/cluster/ClusterIndex.d.ts +42 -0
  12. package/dist/cluster/ClusterIndex.d.ts.map +1 -0
  13. package/dist/cluster/ClusterIndex.js +178 -0
  14. package/dist/cluster/cluster.d.ts +31 -0
  15. package/dist/cluster/cluster.d.ts.map +1 -0
  16. package/dist/cluster/cluster.js +206 -0
  17. package/dist/colors.d.ts +103 -0
  18. package/dist/colors.d.ts.map +1 -0
  19. package/dist/colors.js +441 -0
  20. package/dist/getViewStateForLocations.d.ts +16 -0
  21. package/dist/getViewStateForLocations.d.ts.map +1 -0
  22. package/dist/getViewStateForLocations.js +30 -0
  23. package/dist/index.d.ts +11 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +10 -0
  26. package/dist/provider/FlowMapDataProvider.d.ts +16 -0
  27. package/dist/provider/FlowMapDataProvider.d.ts.map +1 -0
  28. package/dist/provider/FlowMapDataProvider.js +17 -0
  29. package/dist/provider/LocalFlowMapDataProvider.d.ts +20 -0
  30. package/dist/provider/LocalFlowMapDataProvider.d.ts.map +1 -0
  31. package/dist/provider/LocalFlowMapDataProvider.js +87 -0
  32. package/dist/time.d.ts +24 -0
  33. package/dist/time.d.ts.map +1 -0
  34. package/dist/time.js +126 -0
  35. package/dist/types.d.ts +116 -0
  36. package/dist/types.d.ts.map +1 -0
  37. package/dist/types.js +23 -0
  38. package/dist/util.d.ts +2 -0
  39. package/dist/util.d.ts.map +1 -0
  40. package/dist/util.js +4 -0
  41. package/package.json +48 -0
  42. package/src/FlowMapAggregateAccessors.ts +60 -0
  43. package/src/FlowMapSelectors.ts +1407 -0
  44. package/src/FlowMapState.ts +26 -0
  45. package/src/cluster/ClusterIndex.ts +266 -0
  46. package/src/cluster/cluster.ts +299 -0
  47. package/src/colors.ts +723 -0
  48. package/src/getViewStateForLocations.ts +64 -0
  49. package/src/index.ts +10 -0
  50. package/src/provider/FlowMapDataProvider.ts +63 -0
  51. package/src/provider/LocalFlowMapDataProvider.ts +108 -0
  52. package/src/time.ts +160 -0
  53. package/src/types.ts +162 -0
  54. package/src/util.ts +3 -0
  55. package/tsconfig.json +11 -0
  56. package/typings.d.ts +1 -0
@@ -0,0 +1,30 @@
1
+ import { viewport } from '@mapbox/geo-viewport';
2
+ import { geoBounds } from 'd3-geo';
3
+ export function getViewStateForFeatures(featureCollection, size, opts) {
4
+ const { pad = 0.05, tileSize = 512, minZoom = 0, maxZoom = 100 } = opts || {};
5
+ const [[x1, y1], [x2, y2]] = geoBounds(featureCollection);
6
+ const bounds = [
7
+ x1 - pad * (x2 - x1),
8
+ y1 - pad * (y2 - y1),
9
+ x2 + pad * (x2 - x1),
10
+ y2 + pad * (y2 - y1),
11
+ ];
12
+ const { center: [longitude, latitude], zoom, } = viewport(bounds, size, undefined, undefined, tileSize, true);
13
+ return {
14
+ longitude,
15
+ latitude,
16
+ zoom: Math.max(Math.min(maxZoom, zoom), minZoom),
17
+ bearing: 0,
18
+ pitch: 0,
19
+ };
20
+ }
21
+ export function getViewStateForLocations(locations, getLocationCentroid, size, opts) {
22
+ return getViewStateForFeatures({
23
+ type: 'GeometryCollection',
24
+ geometries: locations.map((location) => ({
25
+ type: 'Point',
26
+ coordinates: getLocationCentroid(location),
27
+ })),
28
+ }, size, opts);
29
+ }
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0Vmlld1N0YXRlRm9yTG9jYXRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2dldFZpZXdTdGF0ZUZvckxvY2F0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsUUFBUSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDM0QsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLFFBQVEsQ0FBQztBQU1qQyxNQUFNLFVBQVUsdUJBQXVCLENBQ3JDLGlCQUVzQixFQUN0QixJQUFzQixFQUN0QixJQUtDO0lBRUQsTUFBTSxFQUFDLEdBQUcsR0FBRyxJQUFJLEVBQUUsUUFBUSxHQUFHLEdBQUcsRUFBRSxPQUFPLEdBQUcsQ0FBQyxFQUFFLE9BQU8sR0FBRyxHQUFHLEVBQUMsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO0lBQzVFLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxpQkFBd0IsQ0FBQyxDQUFDO0lBQ2pFLE1BQU0sTUFBTSxHQUFnQjtRQUMxQixFQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUNwQixFQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUNwQixFQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUNwQixFQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztLQUNyQixDQUFDO0lBQ0YsTUFBTSxFQUNKLE1BQU0sRUFBRSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsRUFDN0IsSUFBSSxHQUNMLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFFakUsT0FBTztRQUNMLFNBQVM7UUFDVCxRQUFRO1FBQ1IsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUUsT0FBTyxDQUFDO1FBQ2hELE9BQU8sRUFBRSxDQUFDO1FBQ1YsS0FBSyxFQUFFLENBQUM7S0FDVCxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSx3QkFBd0IsQ0FDdEMsU0FBZ0IsRUFDaEIsbUJBQXdELEVBQ3hELElBQXNCLEVBQ3RCLElBS0M7SUFFRCxPQUFPLHVCQUF1QixDQUM1QjtRQUNFLElBQUksRUFBRSxvQkFBb0I7UUFDMUIsVUFBVSxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDdkMsSUFBSSxFQUFFLE9BQU87WUFDYixXQUFXLEVBQUUsbUJBQW1CLENBQUMsUUFBUSxDQUFDO1NBQzNDLENBQUMsQ0FBQztLQUNHLEVBQ1IsSUFBSSxFQUNKLElBQUksQ0FDTCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Qm91bmRpbmdCb3gsIHZpZXdwb3J0fSBmcm9tICdAbWFwYm94L2dlby12aWV3cG9ydCc7XG5pbXBvcnQge2dlb0JvdW5kc30gZnJvbSAnZDMtZ2VvJztcbmltcG9ydCB7RmVhdHVyZUNvbGxlY3Rpb24sIEdlb21ldHJ5Q29sbGVjdGlvbiwgR2VvbWV0cnlPYmplY3R9IGZyb20gJ2dlb2pzb24nO1xuaW1wb3J0IHtWaWV3U3RhdGV9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgdHlwZSBMb2NhdGlvblByb3BlcnRpZXMgPSBhbnk7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRWaWV3U3RhdGVGb3JGZWF0dXJlcyhcbiAgZmVhdHVyZUNvbGxlY3Rpb246XG4gICAgfCBGZWF0dXJlQ29sbGVjdGlvbjxHZW9tZXRyeU9iamVjdCwgTG9jYXRpb25Qcm9wZXJ0aWVzPlxuICAgIHwgR2VvbWV0cnlDb2xsZWN0aW9uLFxuICBzaXplOiBbbnVtYmVyLCBudW1iZXJdLFxuICBvcHRzPzoge1xuICAgIHBhZD86IG51bWJlcjtcbiAgICB0aWxlU2l6ZT86IG51bWJlcjtcbiAgICBtaW5ab29tPzogbnVtYmVyO1xuICAgIG1heFpvb20/OiBudW1iZXI7XG4gIH0sXG4pOiBWaWV3U3RhdGUge1xuICBjb25zdCB7cGFkID0gMC4wNSwgdGlsZVNpemUgPSA1MTIsIG1pblpvb20gPSAwLCBtYXhab29tID0gMTAwfSA9IG9wdHMgfHwge307XG4gIGNvbnN0IFtbeDEsIHkxXSwgW3gyLCB5Ml1dID0gZ2VvQm91bmRzKGZlYXR1cmVDb2xsZWN0aW9uIGFzIGFueSk7XG4gIGNvbnN0IGJvdW5kczogQm91bmRpbmdCb3ggPSBbXG4gICAgeDEgLSBwYWQgKiAoeDIgLSB4MSksXG4gICAgeTEgLSBwYWQgKiAoeTIgLSB5MSksXG4gICAgeDIgKyBwYWQgKiAoeDIgLSB4MSksXG4gICAgeTIgKyBwYWQgKiAoeTIgLSB5MSksXG4gIF07XG4gIGNvbnN0IHtcbiAgICBjZW50ZXI6IFtsb25naXR1ZGUsIGxhdGl0dWRlXSxcbiAgICB6b29tLFxuICB9ID0gdmlld3BvcnQoYm91bmRzLCBzaXplLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdGlsZVNpemUsIHRydWUpO1xuXG4gIHJldHVybiB7XG4gICAgbG9uZ2l0dWRlLFxuICAgIGxhdGl0dWRlLFxuICAgIHpvb206IE1hdGgubWF4KE1hdGgubWluKG1heFpvb20sIHpvb20pLCBtaW5ab29tKSxcbiAgICBiZWFyaW5nOiAwLFxuICAgIHBpdGNoOiAwLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Vmlld1N0YXRlRm9yTG9jYXRpb25zKFxuICBsb2NhdGlvbnM6IGFueVtdLFxuICBnZXRMb2NhdGlvbkNlbnRyb2lkOiAobG9jYXRpb246IGFueSkgPT4gW251bWJlciwgbnVtYmVyXSxcbiAgc2l6ZTogW251bWJlciwgbnVtYmVyXSxcbiAgb3B0cz86IHtcbiAgICBwYWQ/OiBudW1iZXI7XG4gICAgdGlsZVNpemU/OiBudW1iZXI7XG4gICAgbWluWm9vbT86IG51bWJlcjtcbiAgICBtYXhab29tPzogbnVtYmVyO1xuICB9LFxuKTogVmlld1N0YXRlIHtcbiAgcmV0dXJuIGdldFZpZXdTdGF0ZUZvckZlYXR1cmVzKFxuICAgIHtcbiAgICAgIHR5cGU6ICdHZW9tZXRyeUNvbGxlY3Rpb24nLFxuICAgICAgZ2VvbWV0cmllczogbG9jYXRpb25zLm1hcCgobG9jYXRpb24pID0+ICh7XG4gICAgICAgIHR5cGU6ICdQb2ludCcsXG4gICAgICAgIGNvb3JkaW5hdGVzOiBnZXRMb2NhdGlvbkNlbnRyb2lkKGxvY2F0aW9uKSxcbiAgICAgIH0pKSxcbiAgICB9IGFzIGFueSxcbiAgICBzaXplLFxuICAgIG9wdHMsXG4gICk7XG59XG4iXX0=
@@ -0,0 +1,11 @@
1
+ export * from './types';
2
+ export * from './colors';
3
+ export * from './FlowMapState';
4
+ export * from './FlowMapSelectors';
5
+ export * from './time';
6
+ export * from './getViewStateForLocations';
7
+ export * from './provider/FlowMapDataProvider';
8
+ export { default as FlowMapAggregateAccessors } from './FlowMapAggregateAccessors';
9
+ export type { default as FlowMapDataProvider } from './provider/FlowMapDataProvider';
10
+ export { default as LocalFlowMapDataProvider } from './provider/LocalFlowMapDataProvider';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,QAAQ,CAAC;AACvB,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,OAAO,EAAC,OAAO,IAAI,yBAAyB,EAAC,MAAM,6BAA6B,CAAC;AACjF,YAAY,EAAC,OAAO,IAAI,mBAAmB,EAAC,MAAM,gCAAgC,CAAC;AACnF,OAAO,EAAC,OAAO,IAAI,wBAAwB,EAAC,MAAM,qCAAqC,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,10 @@
1
+ export * from './types';
2
+ export * from './colors';
3
+ export * from './FlowMapState';
4
+ export * from './FlowMapSelectors';
5
+ export * from './time';
6
+ export * from './getViewStateForLocations';
7
+ export * from './provider/FlowMapDataProvider';
8
+ export { default as FlowMapAggregateAccessors } from './FlowMapAggregateAccessors';
9
+ export { default as LocalFlowMapDataProvider } from './provider/LocalFlowMapDataProvider';
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxPQUFPLEVBQUMsT0FBTyxJQUFJLHlCQUF5QixFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFFakYsT0FBTyxFQUFDLE9BQU8sSUFBSSx3QkFBd0IsRUFBQyxNQUFNLHFDQUFxQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi90eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbG9ycyc7XG5leHBvcnQgKiBmcm9tICcuL0Zsb3dNYXBTdGF0ZSc7XG5leHBvcnQgKiBmcm9tICcuL0Zsb3dNYXBTZWxlY3RvcnMnO1xuZXhwb3J0ICogZnJvbSAnLi90aW1lJztcbmV4cG9ydCAqIGZyb20gJy4vZ2V0Vmlld1N0YXRlRm9yTG9jYXRpb25zJztcbmV4cG9ydCAqIGZyb20gJy4vcHJvdmlkZXIvRmxvd01hcERhdGFQcm92aWRlcic7XG5leHBvcnQge2RlZmF1bHQgYXMgRmxvd01hcEFnZ3JlZ2F0ZUFjY2Vzc29yc30gZnJvbSAnLi9GbG93TWFwQWdncmVnYXRlQWNjZXNzb3JzJztcbmV4cG9ydCB0eXBlIHtkZWZhdWx0IGFzIEZsb3dNYXBEYXRhUHJvdmlkZXJ9IGZyb20gJy4vcHJvdmlkZXIvRmxvd01hcERhdGFQcm92aWRlcic7XG5leHBvcnQge2RlZmF1bHQgYXMgTG9jYWxGbG93TWFwRGF0YVByb3ZpZGVyfSBmcm9tICcuL3Byb3ZpZGVyL0xvY2FsRmxvd01hcERhdGFQcm92aWRlcic7XG4iXX0=
@@ -0,0 +1,16 @@
1
+ import { AggregateFlow, Cluster, LocationTotals } from '..';
2
+ import { FlowMapState } from '../FlowMapState';
3
+ import { ClusterNode, FlowMapData, FlowMapDataAccessors, LayersData, ViewportProps } from '../types';
4
+ export default interface FlowMapDataProvider<L, F> {
5
+ setAccessors(accessors: FlowMapDataAccessors<L, F>): void;
6
+ setFlowMapState(flowMapState: FlowMapState): Promise<void>;
7
+ getViewportForLocations(dims: [number, number]): Promise<ViewportProps>;
8
+ getFlowByIndex(index: number): Promise<F | AggregateFlow | undefined>;
9
+ getLocationById(id: string): Promise<L | Cluster | undefined>;
10
+ getLocationByIndex(idx: number): Promise<L | ClusterNode | undefined>;
11
+ getTotalsForLocation(id: string): Promise<LocationTotals | undefined>;
12
+ getLayersData(): Promise<LayersData | undefined>;
13
+ }
14
+ export declare function isFlowMapData<L, F>(data: Record<string, any>): data is FlowMapData<L, F>;
15
+ export declare function isFlowMapDataProvider<L, F>(dataProvider: Record<string, any>): dataProvider is FlowMapDataProvider<L, F>;
16
+ //# sourceMappingURL=FlowMapDataProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FlowMapDataProvider.d.ts","sourceRoot":"","sources":["../../src/provider/FlowMapDataProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAE,OAAO,EAAqB,cAAc,EAAC,MAAM,IAAI,CAAC;AAC7E,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EACL,WAAW,EACX,WAAW,EACX,oBAAoB,EACpB,UAAU,EACV,aAAa,EACd,MAAM,UAAU,CAAC;AAElB,MAAM,CAAC,OAAO,WAAW,mBAAmB,CAAC,CAAC,EAAE,CAAC;IAC/C,YAAY,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;IAE1D,eAAe,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAI3D,uBAAuB,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAIxE,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,aAAa,GAAG,SAAS,CAAC,CAAC;IAEtE,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;IAE9D,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,WAAW,GAAG,SAAS,CAAC,CAAC;IAEtE,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC;IAQtE,aAAa,IAAI,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;CAClD;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,CAAC,EAChC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACxB,IAAI,IAAI,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAQ3B;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,CAAC,EACxC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAChC,YAAY,IAAI,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAU3C"}
@@ -0,0 +1,17 @@
1
+ export function isFlowMapData(data) {
2
+ return (data &&
3
+ data.locations &&
4
+ data.flows &&
5
+ Array.isArray(data.locations) &&
6
+ Array.isArray(data.flows));
7
+ }
8
+ export function isFlowMapDataProvider(dataProvider) {
9
+ return (dataProvider &&
10
+ typeof dataProvider.setFlowMapState === 'function' &&
11
+ typeof dataProvider.getViewportForLocations === 'function' &&
12
+ typeof dataProvider.getFlowByIndex === 'function' &&
13
+ typeof dataProvider.getLocationById === 'function' &&
14
+ typeof dataProvider.getLocationByIndex === 'function' &&
15
+ typeof dataProvider.getLayersData === 'function');
16
+ }
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmxvd01hcERhdGFQcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm92aWRlci9GbG93TWFwRGF0YVByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXNDQSxNQUFNLFVBQVUsYUFBYSxDQUMzQixJQUF5QjtJQUV6QixPQUFPLENBQ0wsSUFBSTtRQUNKLElBQUksQ0FBQyxTQUFTO1FBQ2QsSUFBSSxDQUFDLEtBQUs7UUFDVixLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDN0IsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQzFCLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLHFCQUFxQixDQUNuQyxZQUFpQztJQUVqQyxPQUFPLENBQ0wsWUFBWTtRQUNaLE9BQU8sWUFBWSxDQUFDLGVBQWUsS0FBSyxVQUFVO1FBQ2xELE9BQU8sWUFBWSxDQUFDLHVCQUF1QixLQUFLLFVBQVU7UUFDMUQsT0FBTyxZQUFZLENBQUMsY0FBYyxLQUFLLFVBQVU7UUFDakQsT0FBTyxZQUFZLENBQUMsZUFBZSxLQUFLLFVBQVU7UUFDbEQsT0FBTyxZQUFZLENBQUMsa0JBQWtCLEtBQUssVUFBVTtRQUNyRCxPQUFPLFlBQVksQ0FBQyxhQUFhLEtBQUssVUFBVSxDQUNqRCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWdncmVnYXRlRmxvdywgQ2x1c3RlciwgTG9jYXRpb25BY2Nlc3NvcnMsIExvY2F0aW9uVG90YWxzfSBmcm9tICcuLic7XG5pbXBvcnQge0Zsb3dNYXBTdGF0ZX0gZnJvbSAnLi4vRmxvd01hcFN0YXRlJztcbmltcG9ydCB7XG4gIENsdXN0ZXJOb2RlLFxuICBGbG93TWFwRGF0YSxcbiAgRmxvd01hcERhdGFBY2Nlc3NvcnMsXG4gIExheWVyc0RhdGEsXG4gIFZpZXdwb3J0UHJvcHMsXG59IGZyb20gJy4uL3R5cGVzJztcblxuZXhwb3J0IGRlZmF1bHQgaW50ZXJmYWNlIEZsb3dNYXBEYXRhUHJvdmlkZXI8TCwgRj4ge1xuICBzZXRBY2Nlc3NvcnMoYWNjZXNzb3JzOiBGbG93TWFwRGF0YUFjY2Vzc29yczxMLCBGPik6IHZvaWQ7XG5cbiAgc2V0Rmxvd01hcFN0YXRlKGZsb3dNYXBTdGF0ZTogRmxvd01hcFN0YXRlKTogUHJvbWlzZTx2b2lkPjtcblxuICAvLyBjbGVhckRhdGEoKTogdm9pZDtcblxuICBnZXRWaWV3cG9ydEZvckxvY2F0aW9ucyhkaW1zOiBbbnVtYmVyLCBudW1iZXJdKTogUHJvbWlzZTxWaWV3cG9ydFByb3BzPjtcblxuICAvLyBnZXRGbG93VG90YWxzKCk6IFByb21pc2U8Rmxvd1RvdGFscz47XG5cbiAgZ2V0Rmxvd0J5SW5kZXgoaW5kZXg6IG51bWJlcik6IFByb21pc2U8RiB8IEFnZ3JlZ2F0ZUZsb3cgfCB1bmRlZmluZWQ+O1xuXG4gIGdldExvY2F0aW9uQnlJZChpZDogc3RyaW5nKTogUHJvbWlzZTxMIHwgQ2x1c3RlciB8IHVuZGVmaW5lZD47XG5cbiAgZ2V0TG9jYXRpb25CeUluZGV4KGlkeDogbnVtYmVyKTogUHJvbWlzZTxMIHwgQ2x1c3Rlck5vZGUgfCB1bmRlZmluZWQ+O1xuXG4gIGdldFRvdGFsc0ZvckxvY2F0aW9uKGlkOiBzdHJpbmcpOiBQcm9taXNlPExvY2F0aW9uVG90YWxzIHwgdW5kZWZpbmVkPjtcblxuICAvLyBnZXRMb2NhdGlvbnNJbkJib3goXG4gIC8vICAgYmJveDogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl0sXG4gIC8vICk6IFByb21pc2U8QXJyYXk8Rmxvd0xvY2F0aW9uIHwgQ2x1c3Rlck5vZGU+IHwgdW5kZWZpbmVkPjtcblxuICAvLyBnZXRMb2NhdGlvbnNGb3JTZWFyY2hCb3goKTogUHJvbWlzZTwoRmxvd0xvY2F0aW9uIHwgQ2x1c3Rlck5vZGUpW10gfCB1bmRlZmluZWQ+O1xuXG4gIGdldExheWVyc0RhdGEoKTogUHJvbWlzZTxMYXllcnNEYXRhIHwgdW5kZWZpbmVkPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRmxvd01hcERhdGE8TCwgRj4oXG4gIGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4pOiBkYXRhIGlzIEZsb3dNYXBEYXRhPEwsIEY+IHtcbiAgcmV0dXJuIChcbiAgICBkYXRhICYmXG4gICAgZGF0YS5sb2NhdGlvbnMgJiZcbiAgICBkYXRhLmZsb3dzICYmXG4gICAgQXJyYXkuaXNBcnJheShkYXRhLmxvY2F0aW9ucykgJiZcbiAgICBBcnJheS5pc0FycmF5KGRhdGEuZmxvd3MpXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0Zsb3dNYXBEYXRhUHJvdmlkZXI8TCwgRj4oXG4gIGRhdGFQcm92aWRlcjogUmVjb3JkPHN0cmluZywgYW55Pixcbik6IGRhdGFQcm92aWRlciBpcyBGbG93TWFwRGF0YVByb3ZpZGVyPEwsIEY+IHtcbiAgcmV0dXJuIChcbiAgICBkYXRhUHJvdmlkZXIgJiZcbiAgICB0eXBlb2YgZGF0YVByb3ZpZGVyLnNldEZsb3dNYXBTdGF0ZSA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgIHR5cGVvZiBkYXRhUHJvdmlkZXIuZ2V0Vmlld3BvcnRGb3JMb2NhdGlvbnMgPT09ICdmdW5jdGlvbicgJiZcbiAgICB0eXBlb2YgZGF0YVByb3ZpZGVyLmdldEZsb3dCeUluZGV4ID09PSAnZnVuY3Rpb24nICYmXG4gICAgdHlwZW9mIGRhdGFQcm92aWRlci5nZXRMb2NhdGlvbkJ5SWQgPT09ICdmdW5jdGlvbicgJiZcbiAgICB0eXBlb2YgZGF0YVByb3ZpZGVyLmdldExvY2F0aW9uQnlJbmRleCA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgIHR5cGVvZiBkYXRhUHJvdmlkZXIuZ2V0TGF5ZXJzRGF0YSA9PT0gJ2Z1bmN0aW9uJ1xuICApO1xufVxuIl19
@@ -0,0 +1,20 @@
1
+ import FlowMapDataProvider from './FlowMapDataProvider';
2
+ import { Cluster, ClusterNode, FlowMapData, FlowMapDataAccessors, LayersData, LocationTotals, ViewportProps } from '../types';
3
+ import { FlowMapState } from '../FlowMapState';
4
+ import { AggregateFlow } from '..';
5
+ export default class LocalFlowMapDataProvider<L, F> implements FlowMapDataProvider<L, F> {
6
+ private selectors;
7
+ private flowMapData;
8
+ private flowMapState;
9
+ constructor(accessors: FlowMapDataAccessors<L, F>);
10
+ setAccessors(accessors: FlowMapDataAccessors<L, F>): void;
11
+ setFlowMapData(flowMapData: FlowMapData<L, F>): Promise<void>;
12
+ setFlowMapState(flowMapState: FlowMapState): Promise<void>;
13
+ getFlowByIndex(idx: number): Promise<F | AggregateFlow | undefined>;
14
+ getLocationByIndex(idx: number): Promise<L | ClusterNode | undefined>;
15
+ getLayersData(): Promise<LayersData | undefined>;
16
+ getLocationById(id: string): Promise<L | Cluster | undefined>;
17
+ getTotalsForLocation(id: string): Promise<LocationTotals | undefined>;
18
+ getViewportForLocations(dims: [number, number]): Promise<ViewportProps>;
19
+ }
20
+ //# sourceMappingURL=LocalFlowMapDataProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LocalFlowMapDataProvider.d.ts","sourceRoot":"","sources":["../../src/provider/LocalFlowMapDataProvider.ts"],"names":[],"mappings":"AAAA,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AACxD,OAAO,EACL,OAAO,EACP,WAAW,EAEX,WAAW,EACX,oBAAoB,EACpB,UAAU,EAEV,cAAc,EACd,aAAa,EACd,MAAM,UAAU,CAAC;AAClB,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAC,aAAa,EAAC,MAAM,IAAI,CAAC;AAEjC,MAAM,CAAC,OAAO,OAAO,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAChD,YAAW,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC;IAEpC,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,WAAW,CAAgC;IACnD,OAAO,CAAC,YAAY,CAA2B;gBAEnC,SAAS,EAAE,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC;IAOjD,YAAY,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC;IAI5C,cAAc,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7D,eAAe,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1D,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,aAAa,GAAG,SAAS,CAAC;IAWnE,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,WAAW,GAAG,SAAS,CAAC;IAWrE,aAAa,IAAI,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAUhD,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,OAAO,GAAG,SAAS,CAAC;IAqB7D,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;IAS3E,uBAAuB,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC;CAGxE"}
@@ -0,0 +1,87 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import FlowMapSelectors from '../FlowMapSelectors';
11
+ export default class LocalFlowMapDataProvider {
12
+ constructor(accessors) {
13
+ // scope selectors to the concrete instance of FlowMapDataProvider
14
+ this.selectors = new FlowMapSelectors(accessors);
15
+ this.flowMapData = undefined;
16
+ this.flowMapState = undefined;
17
+ }
18
+ setAccessors(accessors) {
19
+ this.selectors.setAccessors(accessors);
20
+ }
21
+ setFlowMapData(flowMapData) {
22
+ return __awaiter(this, void 0, void 0, function* () {
23
+ this.flowMapData = flowMapData;
24
+ });
25
+ }
26
+ setFlowMapState(flowMapState) {
27
+ return __awaiter(this, void 0, void 0, function* () {
28
+ this.flowMapState = flowMapState;
29
+ });
30
+ }
31
+ getFlowByIndex(idx) {
32
+ return __awaiter(this, void 0, void 0, function* () {
33
+ if (!this.flowMapState || !this.flowMapData) {
34
+ return undefined;
35
+ }
36
+ const flows = this.selectors.getFlowsForFlowMapLayer(this.flowMapState, this.flowMapData);
37
+ return flows === null || flows === void 0 ? void 0 : flows[idx];
38
+ });
39
+ }
40
+ getLocationByIndex(idx) {
41
+ return __awaiter(this, void 0, void 0, function* () {
42
+ if (!this.flowMapState || !this.flowMapData) {
43
+ return undefined;
44
+ }
45
+ const locations = this.selectors.getLocationsForFlowMapLayer(this.flowMapState, this.flowMapData);
46
+ return locations === null || locations === void 0 ? void 0 : locations[idx];
47
+ });
48
+ }
49
+ getLayersData() {
50
+ return __awaiter(this, void 0, void 0, function* () {
51
+ if (!this.flowMapState || !this.flowMapData) {
52
+ return undefined;
53
+ }
54
+ return this.selectors.prepareLayersData(this.flowMapState, this.flowMapData);
55
+ });
56
+ }
57
+ getLocationById(id) {
58
+ return __awaiter(this, void 0, void 0, function* () {
59
+ if (!this.flowMapState || !this.flowMapData) {
60
+ return undefined;
61
+ }
62
+ const clusterIndex = this.selectors.getClusterIndex(this.flowMapState, this.flowMapData);
63
+ if (clusterIndex) {
64
+ const cluster = clusterIndex.getClusterById(id);
65
+ if (cluster) {
66
+ return cluster;
67
+ }
68
+ }
69
+ const locationsById = this.selectors.getLocationsById(this.flowMapState, this.flowMapData);
70
+ return locationsById === null || locationsById === void 0 ? void 0 : locationsById.get(id);
71
+ });
72
+ }
73
+ getTotalsForLocation(id) {
74
+ var _a;
75
+ return __awaiter(this, void 0, void 0, function* () {
76
+ if (!this.flowMapState || !this.flowMapData) {
77
+ return undefined;
78
+ }
79
+ return (_a = this.selectors
80
+ .getLocationTotals(this.flowMapState, this.flowMapData)) === null || _a === void 0 ? void 0 : _a.get(id);
81
+ });
82
+ }
83
+ getViewportForLocations(dims) {
84
+ return Promise.resolve({});
85
+ }
86
+ }
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9jYWxGbG93TWFwRGF0YVByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb3ZpZGVyL0xvY2FsRmxvd01hcERhdGFQcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFhQSxPQUFPLGdCQUFnQixNQUFNLHFCQUFxQixDQUFDO0FBR25ELE1BQU0sQ0FBQyxPQUFPLE9BQU8sd0JBQXdCO0lBTzNDLFlBQVksU0FBcUM7UUFDL0Msa0VBQWtFO1FBQ2xFLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBTyxTQUFTLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQztRQUM3QixJQUFJLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsWUFBWSxDQUFDLFNBQXFDO1FBQ2hELElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFSyxjQUFjLENBQUMsV0FBOEI7O1lBQ2pELElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQ2pDLENBQUM7S0FBQTtJQUVLLGVBQWUsQ0FBQyxZQUEwQjs7WUFDOUMsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDbkMsQ0FBQztLQUFBO0lBRUssY0FBYyxDQUFDLEdBQVc7O1lBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDM0MsT0FBTyxTQUFTLENBQUM7YUFDbEI7WUFDRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLHVCQUF1QixDQUNsRCxJQUFJLENBQUMsWUFBWSxFQUNqQixJQUFJLENBQUMsV0FBVyxDQUNqQixDQUFDO1lBQ0YsT0FBTyxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUcsR0FBRyxDQUFDLENBQUM7UUFDdEIsQ0FBQztLQUFBO0lBRUssa0JBQWtCLENBQUMsR0FBVzs7WUFDbEMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUMzQyxPQUFPLFNBQVMsQ0FBQzthQUNsQjtZQUNELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsMkJBQTJCLENBQzFELElBQUksQ0FBQyxZQUFZLEVBQ2pCLElBQUksQ0FBQyxXQUFXLENBQ2pCLENBQUM7WUFDRixPQUFPLFNBQVMsYUFBVCxTQUFTLHVCQUFULFNBQVMsQ0FBRyxHQUFHLENBQUMsQ0FBQztRQUMxQixDQUFDO0tBQUE7SUFFSyxhQUFhOztZQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQzNDLE9BQU8sU0FBUyxDQUFDO2FBQ2xCO1lBQ0QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUNyQyxJQUFJLENBQUMsWUFBWSxFQUNqQixJQUFJLENBQUMsV0FBVyxDQUNqQixDQUFDO1FBQ0osQ0FBQztLQUFBO0lBRUssZUFBZSxDQUFDLEVBQVU7O1lBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDM0MsT0FBTyxTQUFTLENBQUM7YUFDbEI7WUFDRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FDakQsSUFBSSxDQUFDLFlBQVksRUFDakIsSUFBSSxDQUFDLFdBQVcsQ0FDakIsQ0FBQztZQUNGLElBQUksWUFBWSxFQUFFO2dCQUNoQixNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNoRCxJQUFJLE9BQU8sRUFBRTtvQkFDWCxPQUFPLE9BQU8sQ0FBQztpQkFDaEI7YUFDRjtZQUNELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQ25ELElBQUksQ0FBQyxZQUFZLEVBQ2pCLElBQUksQ0FBQyxXQUFXLENBQ2pCLENBQUM7WUFDRixPQUFPLGFBQWEsYUFBYixhQUFhLHVCQUFiLGFBQWEsQ0FBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDaEMsQ0FBQztLQUFBO0lBRUssb0JBQW9CLENBQUMsRUFBVTs7O1lBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDM0MsT0FBTyxTQUFTLENBQUM7YUFDbEI7WUFDRCxPQUFPLE1BQUEsSUFBSSxDQUFDLFNBQVM7aUJBQ2xCLGlCQUFpQixDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQywwQ0FDckQsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDOztLQUNiO0lBRUQsdUJBQXVCLENBQUMsSUFBc0I7UUFDNUMsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQW1CLENBQUMsQ0FBQztJQUM5QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRmxvd01hcERhdGFQcm92aWRlciBmcm9tICcuL0Zsb3dNYXBEYXRhUHJvdmlkZXInO1xuaW1wb3J0IHtcbiAgQ2x1c3RlcixcbiAgQ2x1c3Rlck5vZGUsXG4gIEZsb3dBY2Nlc3NvcnMsXG4gIEZsb3dNYXBEYXRhLFxuICBGbG93TWFwRGF0YUFjY2Vzc29ycyxcbiAgTGF5ZXJzRGF0YSxcbiAgTG9jYXRpb25BY2Nlc3NvcnMsXG4gIExvY2F0aW9uVG90YWxzLFxuICBWaWV3cG9ydFByb3BzLFxufSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge0Zsb3dNYXBTdGF0ZX0gZnJvbSAnLi4vRmxvd01hcFN0YXRlJztcbmltcG9ydCBGbG93TWFwU2VsZWN0b3JzIGZyb20gJy4uL0Zsb3dNYXBTZWxlY3RvcnMnO1xuaW1wb3J0IHtBZ2dyZWdhdGVGbG93fSBmcm9tICcuLic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExvY2FsRmxvd01hcERhdGFQcm92aWRlcjxMLCBGPlxuICBpbXBsZW1lbnRzIEZsb3dNYXBEYXRhUHJvdmlkZXI8TCwgRj5cbntcbiAgcHJpdmF0ZSBzZWxlY3RvcnM6IEZsb3dNYXBTZWxlY3RvcnM8TCwgRj47XG4gIHByaXZhdGUgZmxvd01hcERhdGE6IEZsb3dNYXBEYXRhPEwsIEY+IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGZsb3dNYXBTdGF0ZTogRmxvd01hcFN0YXRlIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKGFjY2Vzc29yczogRmxvd01hcERhdGFBY2Nlc3NvcnM8TCwgRj4pIHtcbiAgICAvLyBzY29wZSBzZWxlY3RvcnMgdG8gdGhlIGNvbmNyZXRlIGluc3RhbmNlIG9mIEZsb3dNYXBEYXRhUHJvdmlkZXJcbiAgICB0aGlzLnNlbGVjdG9ycyA9IG5ldyBGbG93TWFwU2VsZWN0b3JzPEwsIEY+KGFjY2Vzc29ycyk7XG4gICAgdGhpcy5mbG93TWFwRGF0YSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmZsb3dNYXBTdGF0ZSA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHNldEFjY2Vzc29ycyhhY2Nlc3NvcnM6IEZsb3dNYXBEYXRhQWNjZXNzb3JzPEwsIEY+KSB7XG4gICAgdGhpcy5zZWxlY3RvcnMuc2V0QWNjZXNzb3JzKGFjY2Vzc29ycyk7XG4gIH1cblxuICBhc3luYyBzZXRGbG93TWFwRGF0YShmbG93TWFwRGF0YTogRmxvd01hcERhdGE8TCwgRj4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmZsb3dNYXBEYXRhID0gZmxvd01hcERhdGE7XG4gIH1cblxuICBhc3luYyBzZXRGbG93TWFwU3RhdGUoZmxvd01hcFN0YXRlOiBGbG93TWFwU3RhdGUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmZsb3dNYXBTdGF0ZSA9IGZsb3dNYXBTdGF0ZTtcbiAgfVxuXG4gIGFzeW5jIGdldEZsb3dCeUluZGV4KGlkeDogbnVtYmVyKTogUHJvbWlzZTxGIHwgQWdncmVnYXRlRmxvdyB8IHVuZGVmaW5lZD4ge1xuICAgIGlmICghdGhpcy5mbG93TWFwU3RhdGUgfHwgIXRoaXMuZmxvd01hcERhdGEpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGNvbnN0IGZsb3dzID0gdGhpcy5zZWxlY3RvcnMuZ2V0Rmxvd3NGb3JGbG93TWFwTGF5ZXIoXG4gICAgICB0aGlzLmZsb3dNYXBTdGF0ZSxcbiAgICAgIHRoaXMuZmxvd01hcERhdGEsXG4gICAgKTtcbiAgICByZXR1cm4gZmxvd3M/LltpZHhdO1xuICB9XG5cbiAgYXN5bmMgZ2V0TG9jYXRpb25CeUluZGV4KGlkeDogbnVtYmVyKTogUHJvbWlzZTxMIHwgQ2x1c3Rlck5vZGUgfCB1bmRlZmluZWQ+IHtcbiAgICBpZiAoIXRoaXMuZmxvd01hcFN0YXRlIHx8ICF0aGlzLmZsb3dNYXBEYXRhKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBjb25zdCBsb2NhdGlvbnMgPSB0aGlzLnNlbGVjdG9ycy5nZXRMb2NhdGlvbnNGb3JGbG93TWFwTGF5ZXIoXG4gICAgICB0aGlzLmZsb3dNYXBTdGF0ZSxcbiAgICAgIHRoaXMuZmxvd01hcERhdGEsXG4gICAgKTtcbiAgICByZXR1cm4gbG9jYXRpb25zPy5baWR4XTtcbiAgfVxuXG4gIGFzeW5jIGdldExheWVyc0RhdGEoKTogUHJvbWlzZTxMYXllcnNEYXRhIHwgdW5kZWZpbmVkPiB7XG4gICAgaWYgKCF0aGlzLmZsb3dNYXBTdGF0ZSB8fCAhdGhpcy5mbG93TWFwRGF0YSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0b3JzLnByZXBhcmVMYXllcnNEYXRhKFxuICAgICAgdGhpcy5mbG93TWFwU3RhdGUsXG4gICAgICB0aGlzLmZsb3dNYXBEYXRhLFxuICAgICk7XG4gIH1cblxuICBhc3luYyBnZXRMb2NhdGlvbkJ5SWQoaWQ6IHN0cmluZyk6IFByb21pc2U8TCB8IENsdXN0ZXIgfCB1bmRlZmluZWQ+IHtcbiAgICBpZiAoIXRoaXMuZmxvd01hcFN0YXRlIHx8ICF0aGlzLmZsb3dNYXBEYXRhKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBjb25zdCBjbHVzdGVySW5kZXggPSB0aGlzLnNlbGVjdG9ycy5nZXRDbHVzdGVySW5kZXgoXG4gICAgICB0aGlzLmZsb3dNYXBTdGF0ZSxcbiAgICAgIHRoaXMuZmxvd01hcERhdGEsXG4gICAgKTtcbiAgICBpZiAoY2x1c3RlckluZGV4KSB7XG4gICAgICBjb25zdCBjbHVzdGVyID0gY2x1c3RlckluZGV4LmdldENsdXN0ZXJCeUlkKGlkKTtcbiAgICAgIGlmIChjbHVzdGVyKSB7XG4gICAgICAgIHJldHVybiBjbHVzdGVyO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBsb2NhdGlvbnNCeUlkID0gdGhpcy5zZWxlY3RvcnMuZ2V0TG9jYXRpb25zQnlJZChcbiAgICAgIHRoaXMuZmxvd01hcFN0YXRlLFxuICAgICAgdGhpcy5mbG93TWFwRGF0YSxcbiAgICApO1xuICAgIHJldHVybiBsb2NhdGlvbnNCeUlkPy5nZXQoaWQpO1xuICB9XG5cbiAgYXN5bmMgZ2V0VG90YWxzRm9yTG9jYXRpb24oaWQ6IHN0cmluZyk6IFByb21pc2U8TG9jYXRpb25Ub3RhbHMgfCB1bmRlZmluZWQ+IHtcbiAgICBpZiAoIXRoaXMuZmxvd01hcFN0YXRlIHx8ICF0aGlzLmZsb3dNYXBEYXRhKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zZWxlY3RvcnNcbiAgICAgIC5nZXRMb2NhdGlvblRvdGFscyh0aGlzLmZsb3dNYXBTdGF0ZSwgdGhpcy5mbG93TWFwRGF0YSlcbiAgICAgID8uZ2V0KGlkKTtcbiAgfVxuXG4gIGdldFZpZXdwb3J0Rm9yTG9jYXRpb25zKGRpbXM6IFtudW1iZXIsIG51bWJlcl0pOiBQcm9taXNlPFZpZXdwb3J0UHJvcHM+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHt9IGFzIFZpZXdwb3J0UHJvcHMpO1xuICB9XG59XG4iXX0=
package/dist/time.d.ts ADDED
@@ -0,0 +1,24 @@
1
+ import { TimeInterval } from 'd3-time';
2
+ export declare function parseTime(input: string | Date | undefined): Date | undefined;
3
+ export declare enum TimeGranularityKey {
4
+ SECOND = "SECOND",
5
+ MINUTE = "MINUTE",
6
+ HOUR = "HOUR",
7
+ DAY = "DAY",
8
+ MONTH = "MONTH",
9
+ YEAR = "YEAR"
10
+ }
11
+ export interface TimeGranularity {
12
+ key: TimeGranularityKey;
13
+ order: number;
14
+ interval: TimeInterval;
15
+ format: (date: Date) => string;
16
+ formatFull: (date: Date) => string;
17
+ }
18
+ export declare function tickMultiFormat(date: Date): string;
19
+ export declare const TIME_GRANULARITIES: TimeGranularity[];
20
+ export declare function getTimeGranularityByKey(key: TimeGranularityKey): TimeGranularity | undefined;
21
+ export declare function getTimeGranularityByOrder(order: number): TimeGranularity | undefined;
22
+ export declare function getTimeGranularityForDate(date: Date): TimeGranularity;
23
+ export declare function areRangesEqual(a: [Date, Date] | undefined, b: [Date, Date] | undefined): boolean;
24
+ //# sourceMappingURL=time.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../src/time.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,YAAY,EAMb,MAAM,SAAS,CAAC;AAUjB,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,CAa5E;AAED,oBAAY,kBAAkB;IAC5B,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,KAAK,UAAU;IACf,IAAI,SAAS;CACd;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,kBAAkB,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,YAAY,CAAC;IACvB,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC;IAC/B,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC;CACpC;AAcD,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,UAkBzC;AAED,eAAO,MAAM,kBAAkB,EAAE,eAAe,EA4C/C,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,kBAAkB,+BAE9D;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,+BAEtD;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,IAAI,GAAG,eAAe,CAYrE;AAED,wBAAgB,cAAc,CAC5B,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,SAAS,EAC3B,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,SAAS,GAC1B,OAAO,CAIT"}
package/dist/time.js ADDED
@@ -0,0 +1,126 @@
1
+ import { timeFormat, timeParse } from 'd3-time-format';
2
+ import { timeDay, timeHour, timeMinute, timeMonth, timeSecond, timeWeek, timeYear, } from 'd3-time';
3
+ const dateParsers = [
4
+ timeParse('%Y-%m-%d'),
5
+ timeParse('%Y-%m-%d %H:%M'),
6
+ timeParse('%Y-%m-%d %H:%M:%S'),
7
+ timeParse('%Y'),
8
+ timeParse('%Y-%m'),
9
+ ];
10
+ export function parseTime(input) {
11
+ if (input != null) {
12
+ if (input instanceof Date) {
13
+ return input;
14
+ }
15
+ for (const parse of dateParsers) {
16
+ const date = parse(input);
17
+ if (date) {
18
+ return date;
19
+ }
20
+ }
21
+ }
22
+ return undefined;
23
+ }
24
+ export var TimeGranularityKey;
25
+ (function (TimeGranularityKey) {
26
+ TimeGranularityKey["SECOND"] = "SECOND";
27
+ TimeGranularityKey["MINUTE"] = "MINUTE";
28
+ TimeGranularityKey["HOUR"] = "HOUR";
29
+ TimeGranularityKey["DAY"] = "DAY";
30
+ TimeGranularityKey["MONTH"] = "MONTH";
31
+ TimeGranularityKey["YEAR"] = "YEAR";
32
+ })(TimeGranularityKey || (TimeGranularityKey = {}));
33
+ // const preferredLocale = navigator.languages ? navigator.languages[0] : 'en';
34
+ const formatMillisecond = timeFormat('.%L'), formatSecond = timeFormat(':%S'), formatMinute = timeFormat('%I:%M'),
35
+ // formatHour = (d: Date) => d.toLocaleString(preferredLocale, { hour: 'numeric' }),
36
+ formatHour = timeFormat('%I %p'), formatDay = timeFormat('%a %d'), formatWeek = timeFormat('%b %d'), formatMonth = timeFormat('%b'), formatYear = timeFormat('%Y');
37
+ export function tickMultiFormat(date) {
38
+ return (timeSecond(date) < date
39
+ ? formatMillisecond
40
+ : timeMinute(date) < date
41
+ ? formatSecond
42
+ : timeHour(date) < date
43
+ ? formatMinute
44
+ : timeDay(date) < date
45
+ ? formatHour
46
+ : timeMonth(date) < date
47
+ ? timeWeek(date) < date
48
+ ? formatDay
49
+ : formatWeek
50
+ : timeYear(date) < date
51
+ ? formatMonth
52
+ : formatYear)(date);
53
+ }
54
+ export const TIME_GRANULARITIES = [
55
+ {
56
+ order: 0,
57
+ key: TimeGranularityKey.SECOND,
58
+ interval: timeSecond,
59
+ format: formatSecond,
60
+ formatFull: timeFormat('%Y-%m-%d %H:%M:%S'),
61
+ },
62
+ {
63
+ order: 1,
64
+ key: TimeGranularityKey.MINUTE,
65
+ interval: timeMinute,
66
+ format: formatMinute,
67
+ formatFull: timeFormat('%Y-%m-%d %H:%M'),
68
+ },
69
+ {
70
+ order: 2,
71
+ key: TimeGranularityKey.HOUR,
72
+ interval: timeHour,
73
+ // format: (d: Date) => d.toLocaleString(preferredLocale, { hour: 'numeric', minute: '2-digit' }),
74
+ format: formatHour,
75
+ formatFull: timeFormat('%a %d %b %Y, %I %p'),
76
+ },
77
+ {
78
+ order: 3,
79
+ key: TimeGranularityKey.DAY,
80
+ interval: timeDay,
81
+ format: formatDay,
82
+ formatFull: timeFormat('%a %d %b %Y'),
83
+ },
84
+ {
85
+ order: 4,
86
+ key: TimeGranularityKey.MONTH,
87
+ interval: timeMonth,
88
+ format: formatMonth,
89
+ formatFull: timeFormat('%b %Y'),
90
+ },
91
+ {
92
+ order: 5,
93
+ key: TimeGranularityKey.YEAR,
94
+ interval: timeYear,
95
+ format: formatYear,
96
+ formatFull: timeFormat('%Y'),
97
+ },
98
+ ];
99
+ export function getTimeGranularityByKey(key) {
100
+ return TIME_GRANULARITIES.find((s) => s.key === key);
101
+ }
102
+ export function getTimeGranularityByOrder(order) {
103
+ return TIME_GRANULARITIES.find((s) => s.order === order);
104
+ }
105
+ export function getTimeGranularityForDate(date) {
106
+ let prev = undefined;
107
+ for (const current of TIME_GRANULARITIES) {
108
+ const { interval } = current;
109
+ const floored = interval(date);
110
+ if (floored < date) {
111
+ if (!prev)
112
+ return current;
113
+ return prev;
114
+ }
115
+ prev = current;
116
+ }
117
+ return TIME_GRANULARITIES[TIME_GRANULARITIES.length - 1];
118
+ }
119
+ export function areRangesEqual(a, b) {
120
+ if (!a && !b)
121
+ return true;
122
+ if (!a || !b)
123
+ return false;
124
+ return a[0] === b[0] && a[1] === b[1];
125
+ }
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90aW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUNMLE9BQU8sRUFDUCxRQUFRLEVBRVIsVUFBVSxFQUNWLFNBQVMsRUFDVCxVQUFVLEVBQ1YsUUFBUSxFQUNSLFFBQVEsR0FDVCxNQUFNLFNBQVMsQ0FBQztBQUVqQixNQUFNLFdBQVcsR0FBRztJQUNsQixTQUFTLENBQUMsVUFBVSxDQUFDO0lBQ3JCLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQztJQUMzQixTQUFTLENBQUMsbUJBQW1CLENBQUM7SUFDOUIsU0FBUyxDQUFDLElBQUksQ0FBQztJQUNmLFNBQVMsQ0FBQyxPQUFPLENBQUM7Q0FDbkIsQ0FBQztBQUVGLE1BQU0sVUFBVSxTQUFTLENBQUMsS0FBZ0M7SUFDeEQsSUFBSSxLQUFLLElBQUksSUFBSSxFQUFFO1FBQ2pCLElBQUksS0FBSyxZQUFZLElBQUksRUFBRTtZQUN6QixPQUFPLEtBQUssQ0FBQztTQUNkO1FBQ0QsS0FBSyxNQUFNLEtBQUssSUFBSSxXQUFXLEVBQUU7WUFDL0IsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFCLElBQUksSUFBSSxFQUFFO2dCQUNSLE9BQU8sSUFBSSxDQUFDO2FBQ2I7U0FDRjtLQUNGO0lBQ0QsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUVELE1BQU0sQ0FBTixJQUFZLGtCQU9YO0FBUEQsV0FBWSxrQkFBa0I7SUFDNUIsdUNBQWlCLENBQUE7SUFDakIsdUNBQWlCLENBQUE7SUFDakIsbUNBQWEsQ0FBQTtJQUNiLGlDQUFXLENBQUE7SUFDWCxxQ0FBZSxDQUFBO0lBQ2YsbUNBQWEsQ0FBQTtBQUNmLENBQUMsRUFQVyxrQkFBa0IsS0FBbEIsa0JBQWtCLFFBTzdCO0FBVUQsK0VBQStF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QUMsQ0FBQyxDQUFDO0FBQ3hDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3RpbWVGb3JtYXQsIHRpbWVQYXJzZX0gZnJvbSAnZDMtdGltZS1mb3JtYXQnO1xuaW1wb3J0IHtcbiAgdGltZURheSxcbiAgdGltZUhvdXIsXG4gIFRpbWVJbnRlcnZhbCxcbiAgdGltZU1pbnV0ZSxcbiAgdGltZU1vbnRoLFxuICB0aW1lU2Vjb25kLFxuICB0aW1lV2VlayxcbiAgdGltZVllYXIsXG59IGZyb20gJ2QzLXRpbWUnO1xuXG5jb25zdCBkYXRlUGFyc2VycyA9IFtcbiAgdGltZVBhcnNlKCclWS0lbS0lZCcpLFxuICB0aW1lUGFyc2UoJyVZLSVtLSVkICVIOiVNJyksXG4gIHRpbWVQYXJzZSgnJVktJW0tJWQgJUg6JU06JVMnKSxcbiAgdGltZVBhcnNlKCclWScpLFxuICB0aW1lUGFyc2UoJyVZLSVtJyksXG5dO1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VUaW1lKGlucHV0OiBzdHJpbmcgfCBEYXRlIHwgdW5kZWZpbmVkKTogRGF0ZSB8IHVuZGVmaW5lZCB7XG4gIGlmIChpbnB1dCAhPSBudWxsKSB7XG4gICAgaWYgKGlucHV0IGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIGlucHV0O1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IHBhcnNlIG9mIGRhdGVQYXJzZXJzKSB7XG4gICAgICBjb25zdCBkYXRlID0gcGFyc2UoaW5wdXQpO1xuICAgICAgaWYgKGRhdGUpIHtcbiAgICAgICAgcmV0dXJuIGRhdGU7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBlbnVtIFRpbWVHcmFudWxhcml0eUtleSB7XG4gIFNFQ09ORCA9ICdTRUNPTkQnLFxuICBNSU5VVEUgPSAnTUlOVVRFJyxcbiAgSE9VUiA9ICdIT1VSJyxcbiAgREFZID0gJ0RBWScsXG4gIE1PTlRIID0gJ01PTlRIJyxcbiAgWUVBUiA9ICdZRUFSJyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUaW1lR3JhbnVsYXJpdHkge1xuICBrZXk6IFRpbWVHcmFudWxhcml0eUtleTtcbiAgb3JkZXI6IG51bWJlcjtcbiAgaW50ZXJ2YWw6IFRpbWVJbnRlcnZhbDtcbiAgZm9ybWF0OiAoZGF0ZTogRGF0ZSkgPT4gc3RyaW5nO1xuICBmb3JtYXRGdWxsOiAoZGF0ZTogRGF0ZSkgPT4gc3RyaW5nO1xufVxuXG4vLyBjb25zdCBwcmVmZXJyZWRMb2NhbGUgPSBuYXZpZ2F0b3IubGFuZ3VhZ2VzID8gbmF2aWdhdG9yLmxhbmd1YWdlc1swXSA6ICdlbic7XG5cbmNvbnN0IGZvcm1hdE1pbGxpc2Vjb25kID0gdGltZUZvcm1hdCgnLiVMJyksXG4gIGZvcm1hdFNlY29uZCA9IHRpbWVGb3JtYXQoJzolUycpLFxuICBmb3JtYXRNaW51dGUgPSB0aW1lRm9ybWF0KCclSTolTScpLFxuICAvLyBmb3JtYXRIb3VyID0gKGQ6IERhdGUpID0+IGQudG9Mb2NhbGVTdHJpbmcocHJlZmVycmVkTG9jYWxlLCB7IGhvdXI6ICdudW1lcmljJyB9KSxcbiAgZm9ybWF0SG91ciA9IHRpbWVGb3JtYXQoJyVJICVwJyksXG4gIGZvcm1hdERheSA9IHRpbWVGb3JtYXQoJyVhICVkJyksXG4gIGZvcm1hdFdlZWsgPSB0aW1lRm9ybWF0KCclYiAlZCcpLFxuICBmb3JtYXRNb250aCA9IHRpbWVGb3JtYXQoJyViJyksXG4gIGZvcm1hdFllYXIgPSB0aW1lRm9ybWF0KCclWScpO1xuXG5leHBvcnQgZnVuY3Rpb24gdGlja011bHRpRm9ybWF0KGRhdGU6IERhdGUpIHtcbiAgcmV0dXJuIChcbiAgICB0aW1lU2Vjb25kKGRhdGUpIDwgZGF0ZVxuICAgICAgPyBmb3JtYXRNaWxsaXNlY29uZFxuICAgICAgOiB0aW1lTWludXRlKGRhdGUpIDwgZGF0ZVxuICAgICAgPyBmb3JtYXRTZWNvbmRcbiAgICAgIDogdGltZUhvdXIoZGF0ZSkgPCBkYXRlXG4gICAgICA/IGZvcm1hdE1pbnV0ZVxuICAgICAgOiB0aW1lRGF5KGRhdGUpIDwgZGF0ZVxuICAgICAgPyBmb3JtYXRIb3VyXG4gICAgICA6IHRpbWVNb250aChkYXRlKSA8IGRhdGVcbiAgICAgID8gdGltZVdlZWsoZGF0ZSkgPCBkYXRlXG4gICAgICAgID8gZm9ybWF0RGF5XG4gICAgICAgIDogZm9ybWF0V2Vla1xuICAgICAgOiB0aW1lWWVhcihkYXRlKSA8IGRhdGVcbiAgICAgID8gZm9ybWF0TW9udGhcbiAgICAgIDogZm9ybWF0WWVhclxuICApKGRhdGUpO1xufVxuXG5leHBvcnQgY29uc3QgVElNRV9HUkFOVUxBUklUSUVTOiBUaW1lR3JhbnVsYXJpdHlbXSA9IFtcbiAge1xuICAgIG9yZGVyOiAwLFxuICAgIGtleTogVGltZUdyYW51bGFyaXR5S2V5LlNFQ09ORCxcbiAgICBpbnRlcnZhbDogdGltZVNlY29uZCxcbiAgICBmb3JtYXQ6IGZvcm1hdFNlY29uZCxcbiAgICBmb3JtYXRGdWxsOiB0aW1lRm9ybWF0KCclWS0lbS0lZCAlSDolTTolUycpLFxuICB9LFxuICB7XG4gICAgb3JkZXI6IDEsXG4gICAga2V5OiBUaW1lR3JhbnVsYXJpdHlLZXkuTUlOVVRFLFxuICAgIGludGVydmFsOiB0aW1lTWludXRlLFxuICAgIGZvcm1hdDogZm9ybWF0TWludXRlLFxuICAgIGZvcm1hdEZ1bGw6IHRpbWVGb3JtYXQoJyVZLSVtLSVkICVIOiVNJyksXG4gIH0sXG4gIHtcbiAgICBvcmRlcjogMixcbiAgICBrZXk6IFRpbWVHcmFudWxhcml0eUtleS5IT1VSLFxuICAgIGludGVydmFsOiB0aW1lSG91cixcbiAgICAvLyBmb3JtYXQ6IChkOiBEYXRlKSA9PiBkLnRvTG9jYWxlU3RyaW5nKHByZWZlcnJlZExvY2FsZSwgeyBob3VyOiAnbnVtZXJpYycsIG1pbnV0ZTogJzItZGlnaXQnIH0pLFxuICAgIGZvcm1hdDogZm9ybWF0SG91cixcbiAgICBmb3JtYXRGdWxsOiB0aW1lRm9ybWF0KCclYSAlZCAlYiAlWSwgJUkgJXAnKSxcbiAgfSxcbiAge1xuICAgIG9yZGVyOiAzLFxuICAgIGtleTogVGltZUdyYW51bGFyaXR5S2V5LkRBWSxcbiAgICBpbnRlcnZhbDogdGltZURheSxcbiAgICBmb3JtYXQ6IGZvcm1hdERheSxcbiAgICBmb3JtYXRGdWxsOiB0aW1lRm9ybWF0KCclYSAlZCAlYiAlWScpLFxuICB9LFxuICB7XG4gICAgb3JkZXI6IDQsXG4gICAga2V5OiBUaW1lR3JhbnVsYXJpdHlLZXkuTU9OVEgsXG4gICAgaW50ZXJ2YWw6IHRpbWVNb250aCxcbiAgICBmb3JtYXQ6IGZvcm1hdE1vbnRoLFxuICAgIGZvcm1hdEZ1bGw6IHRpbWVGb3JtYXQoJyViICVZJyksXG4gIH0sXG4gIHtcbiAgICBvcmRlcjogNSxcbiAgICBrZXk6IFRpbWVHcmFudWxhcml0eUtleS5ZRUFSLFxuICAgIGludGVydmFsOiB0aW1lWWVhcixcbiAgICBmb3JtYXQ6IGZvcm1hdFllYXIsXG4gICAgZm9ybWF0RnVsbDogdGltZUZvcm1hdCgnJVknKSxcbiAgfSxcbl07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUaW1lR3JhbnVsYXJpdHlCeUtleShrZXk6IFRpbWVHcmFudWxhcml0eUtleSkge1xuICByZXR1cm4gVElNRV9HUkFOVUxBUklUSUVTLmZpbmQoKHMpID0+IHMua2V5ID09PSBrZXkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGltZUdyYW51bGFyaXR5QnlPcmRlcihvcmRlcjogbnVtYmVyKSB7XG4gIHJldHVybiBUSU1FX0dSQU5VTEFSSVRJRVMuZmluZCgocykgPT4gcy5vcmRlciA9PT0gb3JkZXIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGltZUdyYW51bGFyaXR5Rm9yRGF0ZShkYXRlOiBEYXRlKTogVGltZUdyYW51bGFyaXR5IHtcbiAgbGV0IHByZXYgPSB1bmRlZmluZWQ7XG4gIGZvciAoY29uc3QgY3VycmVudCBvZiBUSU1FX0dSQU5VTEFSSVRJRVMpIHtcbiAgICBjb25zdCB7aW50ZXJ2YWx9ID0gY3VycmVudDtcbiAgICBjb25zdCBmbG9vcmVkID0gaW50ZXJ2YWwoZGF0ZSk7XG4gICAgaWYgKGZsb29yZWQgPCBkYXRlKSB7XG4gICAgICBpZiAoIXByZXYpIHJldHVybiBjdXJyZW50O1xuICAgICAgcmV0dXJuIHByZXY7XG4gICAgfVxuICAgIHByZXYgPSBjdXJyZW50O1xuICB9XG4gIHJldHVybiBUSU1FX0dSQU5VTEFSSVRJRVNbVElNRV9HUkFOVUxBUklUSUVTLmxlbmd0aCAtIDFdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXJlUmFuZ2VzRXF1YWwoXG4gIGE6IFtEYXRlLCBEYXRlXSB8IHVuZGVmaW5lZCxcbiAgYjogW0RhdGUsIERhdGVdIHwgdW5kZWZpbmVkLFxuKTogYm9vbGVhbiB7XG4gIGlmICghYSAmJiAhYikgcmV0dXJuIHRydWU7XG4gIGlmICghYSB8fCAhYikgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gYVswXSA9PT0gYlswXSAmJiBhWzFdID09PSBiWzFdO1xufVxuIl19
@@ -0,0 +1,116 @@
1
+ export declare type FlowMapData<L, F> = {
2
+ locations: L[] | undefined;
3
+ flows: F[] | undefined;
4
+ };
5
+ export interface ViewState {
6
+ latitude: number;
7
+ longitude: number;
8
+ zoom: number;
9
+ bearing?: number;
10
+ pitch?: number;
11
+ altitude?: number;
12
+ }
13
+ export declare type FlowAccessor<F, T> = (flow: F) => T;
14
+ export declare type LocationAccessor<L, T> = (location: L) => T;
15
+ export interface FlowAccessors<F> {
16
+ getFlowOriginId: FlowAccessor<F, string>;
17
+ getFlowDestId: FlowAccessor<F, string>;
18
+ getFlowMagnitude: FlowAccessor<F, number>;
19
+ getFlowTime?: FlowAccessor<F, Date>;
20
+ }
21
+ export interface LocationAccessors<L> {
22
+ getLocationId: LocationAccessor<L, string>;
23
+ getLocationName?: LocationAccessor<L, string>;
24
+ getLocationCentroid: LocationAccessor<L, [number, number]>;
25
+ getLocationClusterName?: (locationIds: string[]) => string;
26
+ }
27
+ export declare type FlowMapDataAccessors<L, F> = LocationAccessors<L> & FlowAccessors<F>;
28
+ export interface LocationTotals {
29
+ incomingCount: number;
30
+ outgoingCount: number;
31
+ internalCount: number;
32
+ }
33
+ export interface CountByTime {
34
+ time: Date;
35
+ count: number;
36
+ }
37
+ export interface ViewportProps {
38
+ width: number;
39
+ height: number;
40
+ latitude: number;
41
+ longitude: number;
42
+ zoom: number;
43
+ bearing: number;
44
+ pitch: number;
45
+ altitude?: number;
46
+ maxZoom?: number;
47
+ minZoom?: number;
48
+ maxPitch?: number;
49
+ minPitch?: number;
50
+ transitionDuration?: number | 'auto';
51
+ transitionInterpolator?: any;
52
+ transitionInterruption?: any;
53
+ transitionEasing?: any;
54
+ }
55
+ export interface ClusterNode {
56
+ id: string;
57
+ zoom: number;
58
+ centroid: [number, number];
59
+ }
60
+ export interface ClusterLevel {
61
+ zoom: number;
62
+ nodes: ClusterNode[];
63
+ }
64
+ export declare type ClusterLevels = ClusterLevel[];
65
+ export interface Cluster extends ClusterNode {
66
+ name?: string;
67
+ children: string[];
68
+ }
69
+ export declare function isCluster(c: ClusterNode): c is Cluster;
70
+ export declare function isLocationClusterNode<L>(l: L | ClusterNode): l is ClusterNode;
71
+ export interface AggregateFlow {
72
+ origin: string;
73
+ dest: string;
74
+ count: number;
75
+ aggregate: true;
76
+ }
77
+ export declare function isAggregateFlow(flow: Record<string, any>): flow is AggregateFlow;
78
+ export interface FlowCountsMapReduce<F, T = any> {
79
+ map: (flow: F) => T;
80
+ reduce: (accumulated: T, val: T) => T;
81
+ }
82
+ export declare enum LocationFilterMode {
83
+ ALL = "ALL",
84
+ INCOMING = "INCOMING",
85
+ OUTGOING = "OUTGOING",
86
+ BETWEEN = "BETWEEN"
87
+ }
88
+ export interface FlowCirclesLayerAttributes {
89
+ length: number;
90
+ attributes: {
91
+ getPosition: LayersDataAttrValues<Float32Array>;
92
+ getColor: LayersDataAttrValues<Uint8Array>;
93
+ getInRadius: LayersDataAttrValues<Float32Array>;
94
+ getOutRadius: LayersDataAttrValues<Float32Array>;
95
+ };
96
+ }
97
+ export interface FlowLinesLayerAttributes {
98
+ length: number;
99
+ attributes: {
100
+ getSourcePosition: LayersDataAttrValues<Float32Array>;
101
+ getTargetPosition: LayersDataAttrValues<Float32Array>;
102
+ getThickness: LayersDataAttrValues<Float32Array>;
103
+ getColor: LayersDataAttrValues<Uint8Array>;
104
+ getEndpointOffsets: LayersDataAttrValues<Float32Array>;
105
+ getStaggering?: LayersDataAttrValues<Float32Array>;
106
+ };
107
+ }
108
+ export interface LayersData {
109
+ circleAttributes: FlowCirclesLayerAttributes;
110
+ lineAttributes: FlowLinesLayerAttributes;
111
+ }
112
+ export declare type LayersDataAttrValues<T> = {
113
+ value: T;
114
+ size: number;
115
+ };
116
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,oBAAY,WAAW,CAAC,CAAC,EAAE,CAAC,IAAI;IAC9B,SAAS,EAAE,CAAC,EAAE,GAAG,SAAS,CAAC;IAC3B,KAAK,EAAE,CAAC,EAAE,GAAG,SAAS,CAAC;CACxB,CAAC;AAEF,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,oBAAY,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC;AAChD,oBAAY,gBAAgB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC;AAExD,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,eAAe,EAAE,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACzC,aAAa,EAAE,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACvC,gBAAgB,EAAE,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC1C,WAAW,CAAC,EAAE,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;CAErC;AAED,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,aAAa,EAAE,gBAAgB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC3C,eAAe,CAAC,EAAE,gBAAgB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC9C,mBAAmB,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3D,sBAAsB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,MAAM,CAAC;CAI5D;AAED,oBAAY,oBAAoB,CAAC,CAAC,EAAE,CAAC,IAAI,iBAAiB,CAAC,CAAC,CAAC,GAC3D,aAAa,CAAC,CAAC,CAAC,CAAC;AAEnB,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACvB;AAQD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kBAAkB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrC,sBAAsB,CAAC,EAAE,GAAG,CAAC;IAC7B,sBAAsB,CAAC,EAAE,GAAG,CAAC;IAC7B,gBAAgB,CAAC,EAAE,GAAG,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5B;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AAED,oBAAY,aAAa,GAAG,YAAY,EAAE,CAAC;AAG3C,MAAM,WAAW,OAAQ,SAAQ,WAAW;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,WAAW,GAAG,CAAC,IAAI,OAAO,CAGtD;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,WAAW,GAAG,CAAC,IAAI,WAAW,CAG7E;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACxB,IAAI,IAAI,aAAa,CAQvB;AAED,MAAM,WAAW,mBAAmB,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;IAC7C,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC;IACpB,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;CACvC;AAED,oBAAY,kBAAkB;IAC5B,GAAG,QAAQ;IACX,QAAQ,aAAa;IACrB,QAAQ,aAAa;IACrB,OAAO,YAAY;CACpB;AAED,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE;QACV,WAAW,EAAE,oBAAoB,CAAC,YAAY,CAAC,CAAC;QAChD,QAAQ,EAAE,oBAAoB,CAAC,UAAU,CAAC,CAAC;QAC3C,WAAW,EAAE,oBAAoB,CAAC,YAAY,CAAC,CAAC;QAChD,YAAY,EAAE,oBAAoB,CAAC,YAAY,CAAC,CAAC;KAClD,CAAC;CACH;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE;QACV,iBAAiB,EAAE,oBAAoB,CAAC,YAAY,CAAC,CAAC;QACtD,iBAAiB,EAAE,oBAAoB,CAAC,YAAY,CAAC,CAAC;QACtD,YAAY,EAAE,oBAAoB,CAAC,YAAY,CAAC,CAAC;QACjD,QAAQ,EAAE,oBAAoB,CAAC,UAAU,CAAC,CAAC;QAC3C,kBAAkB,EAAE,oBAAoB,CAAC,YAAY,CAAC,CAAC;QACvD,aAAa,CAAC,EAAE,oBAAoB,CAAC,YAAY,CAAC,CAAC;KACpD,CAAC;CACH;AAED,MAAM,WAAW,UAAU;IACzB,gBAAgB,EAAE,0BAA0B,CAAC;IAC7C,cAAc,EAAE,wBAAwB,CAAC;CAC1C;AAED,oBAAY,oBAAoB,CAAC,CAAC,IAAI;IAAC,KAAK,EAAE,CAAC,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAC,CAAC"}
package/dist/types.js ADDED
@@ -0,0 +1,23 @@
1
+ export function isCluster(c) {
2
+ const { children } = c;
3
+ return children && children.length > 0;
4
+ }
5
+ export function isLocationClusterNode(l) {
6
+ const { zoom } = l;
7
+ return zoom !== undefined;
8
+ }
9
+ export function isAggregateFlow(flow) {
10
+ return (flow &&
11
+ flow.origin !== undefined &&
12
+ flow.dest !== undefined &&
13
+ flow.count !== undefined &&
14
+ (flow.aggregate ? true : false));
15
+ }
16
+ export var LocationFilterMode;
17
+ (function (LocationFilterMode) {
18
+ LocationFilterMode["ALL"] = "ALL";
19
+ LocationFilterMode["INCOMING"] = "INCOMING";
20
+ LocationFilterMode["OUTGOING"] = "OUTGOING";
21
+ LocationFilterMode["BETWEEN"] = "BETWEEN";
22
+ })(LocationFilterMode || (LocationFilterMode = {}));
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBNkZBLE1BQU0sVUFBVSxTQUFTLENBQUMsQ0FBYztJQUN0QyxNQUFNLEVBQUMsUUFBUSxFQUFDLEdBQUcsQ0FBWSxDQUFDO0lBQ2hDLE9BQU8sUUFBUSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFFRCxNQUFNLFVBQVUscUJBQXFCLENBQUksQ0FBa0I7SUFDekQsTUFBTSxFQUFDLElBQUksRUFBQyxHQUFHLENBQWdCLENBQUM7SUFDaEMsT0FBTyxJQUFJLEtBQUssU0FBUyxDQUFDO0FBQzVCLENBQUM7QUFTRCxNQUFNLFVBQVUsZUFBZSxDQUM3QixJQUF5QjtJQUV6QixPQUFPLENBQ0wsSUFBSTtRQUNKLElBQUksQ0FBQyxNQUFNLEtBQUssU0FBUztRQUN6QixJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVM7UUFDdkIsSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTO1FBQ3hCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FDaEMsQ0FBQztBQUNKLENBQUM7QUFPRCxNQUFNLENBQU4sSUFBWSxrQkFLWDtBQUxELFdBQVksa0JBQWtCO0lBQzVCLGlDQUFXLENBQUE7SUFDWCwyQ0FBcUIsQ0FBQTtJQUNyQiwyQ0FBcUIsQ0FBQTtJQUNyQix5Q0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBTFcsa0JBQWtCLEtBQWxCLGtCQUFrQixRQUs3QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEZsb3dNYXBEYXRhPEwsIEY+ID0ge1xuICBsb2NhdGlvbnM6IExbXSB8IHVuZGVmaW5lZDtcbiAgZmxvd3M6IEZbXSB8IHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmlld1N0YXRlIHtcbiAgbGF0aXR1ZGU6IG51bWJlcjtcbiAgbG9uZ2l0dWRlOiBudW1iZXI7XG4gIHpvb206IG51bWJlcjtcbiAgYmVhcmluZz86IG51bWJlcjtcbiAgcGl0Y2g/OiBudW1iZXI7XG4gIGFsdGl0dWRlPzogbnVtYmVyO1xufVxuXG5leHBvcnQgdHlwZSBGbG93QWNjZXNzb3I8RiwgVD4gPSAoZmxvdzogRikgPT4gVDsgLy8gb2JqZWN0SW5mbz86IEFjY2Vzc29yT2JqZWN0SW5mbyxcbmV4cG9ydCB0eXBlIExvY2F0aW9uQWNjZXNzb3I8TCwgVD4gPSAobG9jYXRpb246IEwpID0+IFQ7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd0FjY2Vzc29yczxGPiB7XG4gIGdldEZsb3dPcmlnaW5JZDogRmxvd0FjY2Vzc29yPEYsIHN0cmluZz47XG4gIGdldEZsb3dEZXN0SWQ6IEZsb3dBY2Nlc3NvcjxGLCBzdHJpbmc+O1xuICBnZXRGbG93TWFnbml0dWRlOiBGbG93QWNjZXNzb3I8RiwgbnVtYmVyPjtcbiAgZ2V0Rmxvd1RpbWU/OiBGbG93QWNjZXNzb3I8RiwgRGF0ZT47IC8vIFRPRE86IHVzZSBudW1iZXIgaW5zdGVhZCBvZiBEYXRlXG4gIC8vIGdldEZsb3dDb2xvcj86IEZsb3dBY2Nlc3NvcjxzdHJpbmcgfCB1bmRlZmluZWQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvY2F0aW9uQWNjZXNzb3JzPEw+IHtcbiAgZ2V0TG9jYXRpb25JZDogTG9jYXRpb25BY2Nlc3NvcjxMLCBzdHJpbmc+O1xuICBnZXRMb2NhdGlvbk5hbWU/OiBMb2NhdGlvbkFjY2Vzc29yPEwsIHN0cmluZz47XG4gIGdldExvY2F0aW9uQ2VudHJvaWQ6IExvY2F0aW9uQWNjZXNzb3I8TCwgW251bWJlciwgbnVtYmVyXT47XG4gIGdldExvY2F0aW9uQ2x1c3Rlck5hbWU/OiAobG9jYXRpb25JZHM6IHN0cmluZ1tdKSA9PiBzdHJpbmc7XG4gIC8vIGdldExvY2F0aW9uVG90YWxJbj86IExvY2F0aW9uQWNjZXNzb3I8bnVtYmVyPjtcbiAgLy8gZ2V0TG9jYXRpb25Ub3RhbE91dD86IExvY2F0aW9uQWNjZXNzb3I8bnVtYmVyPjtcbiAgLy8gZ2V0TG9jYXRpb25Ub3RhbEludGVybmFsPzogTG9jYXRpb25BY2Nlc3NvcjxudW1iZXI+O1xufVxuXG5leHBvcnQgdHlwZSBGbG93TWFwRGF0YUFjY2Vzc29yczxMLCBGPiA9IExvY2F0aW9uQWNjZXNzb3JzPEw+ICZcbiAgRmxvd0FjY2Vzc29yczxGPjtcblxuZXhwb3J0IGludGVyZmFjZSBMb2NhdGlvblRvdGFscyB7XG4gIGluY29taW5nQ291bnQ6IG51bWJlcjtcbiAgb3V0Z29pbmdDb3VudDogbnVtYmVyO1xuICBpbnRlcm5hbENvdW50OiBudW1iZXI7XG59XG5cbi8vIGV4cG9ydCBpbnRlcmZhY2UgTG9jYXRpb25zVG90YWxzIHtcbi8vICAgaW5jb21pbmc6IHtbaWQ6IHN0cmluZ106IG51bWJlcn07XG4vLyAgIG91dGdvaW5nOiB7W2lkOiBzdHJpbmddOiBudW1iZXJ9O1xuLy8gICBpbnRlcm5hbDoge1tpZDogc3RyaW5nXTogbnVtYmVyfTtcbi8vIH1cblxuZXhwb3J0IGludGVyZmFjZSBDb3VudEJ5VGltZSB7XG4gIHRpbWU6IERhdGU7XG4gIGNvdW50OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmlld3BvcnRQcm9wcyB7XG4gIHdpZHRoOiBudW1iZXI7XG4gIGhlaWdodDogbnVtYmVyO1xuICBsYXRpdHVkZTogbnVtYmVyO1xuICBsb25naXR1ZGU6IG51bWJlcjtcbiAgem9vbTogbnVtYmVyO1xuICBiZWFyaW5nOiBudW1iZXI7XG4gIHBpdGNoOiBudW1iZXI7XG4gIGFsdGl0dWRlPzogbnVtYmVyO1xuICBtYXhab29tPzogbnVtYmVyO1xuICBtaW5ab29tPzogbnVtYmVyO1xuICBtYXhQaXRjaD86IG51bWJlcjtcbiAgbWluUGl0Y2g/OiBudW1iZXI7XG4gIHRyYW5zaXRpb25EdXJhdGlvbj86IG51bWJlciB8ICdhdXRvJztcbiAgdHJhbnNpdGlvbkludGVycG9sYXRvcj86IGFueTtcbiAgdHJhbnNpdGlvbkludGVycnVwdGlvbj86IGFueTtcbiAgdHJhbnNpdGlvbkVhc2luZz86IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDbHVzdGVyTm9kZSB7XG4gIGlkOiBzdHJpbmc7XG4gIHpvb206IG51bWJlcjtcbiAgY2VudHJvaWQ6IFtudW1iZXIsIG51bWJlcl07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2x1c3RlckxldmVsIHtcbiAgem9vbTogbnVtYmVyO1xuICBub2RlczogQ2x1c3Rlck5vZGVbXTtcbn1cblxuZXhwb3J0IHR5cGUgQ2x1c3RlckxldmVscyA9IENsdXN0ZXJMZXZlbFtdO1xuXG4vLyBub24tbGVhZiBjbHVzdGVyIG5vZGVcbmV4cG9ydCBpbnRlcmZhY2UgQ2x1c3RlciBleHRlbmRzIENsdXN0ZXJOb2RlIHtcbiAgbmFtZT86IHN0cmluZztcbiAgY2hpbGRyZW46IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNDbHVzdGVyKGM6IENsdXN0ZXJOb2RlKTogYyBpcyBDbHVzdGVyIHtcbiAgY29uc3Qge2NoaWxkcmVufSA9IGMgYXMgQ2x1c3RlcjtcbiAgcmV0dXJuIGNoaWxkcmVuICYmIGNoaWxkcmVuLmxlbmd0aCA+IDA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0xvY2F0aW9uQ2x1c3Rlck5vZGU8TD4obDogTCB8IENsdXN0ZXJOb2RlKTogbCBpcyBDbHVzdGVyTm9kZSB7XG4gIGNvbnN0IHt6b29tfSA9IGwgYXMgQ2x1c3Rlck5vZGU7XG4gIHJldHVybiB6b29tICE9PSB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWdncmVnYXRlRmxvdyB7XG4gIG9yaWdpbjogc3RyaW5nO1xuICBkZXN0OiBzdHJpbmc7XG4gIGNvdW50OiBudW1iZXI7XG4gIGFnZ3JlZ2F0ZTogdHJ1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQWdncmVnYXRlRmxvdyhcbiAgZmxvdzogUmVjb3JkPHN0cmluZywgYW55Pixcbik6IGZsb3cgaXMgQWdncmVnYXRlRmxvdyB7XG4gIHJldHVybiAoXG4gICAgZmxvdyAmJlxuICAgIGZsb3cub3JpZ2luICE9PSB1bmRlZmluZWQgJiZcbiAgICBmbG93LmRlc3QgIT09IHVuZGVmaW5lZCAmJlxuICAgIGZsb3cuY291bnQgIT09IHVuZGVmaW5lZCAmJlxuICAgIChmbG93LmFnZ3JlZ2F0ZSA/IHRydWUgOiBmYWxzZSlcbiAgKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGbG93Q291bnRzTWFwUmVkdWNlPEYsIFQgPSBhbnk+IHtcbiAgbWFwOiAoZmxvdzogRikgPT4gVDtcbiAgcmVkdWNlOiAoYWNjdW11bGF0ZWQ6IFQsIHZhbDogVCkgPT4gVDtcbn1cblxuZXhwb3J0IGVudW0gTG9jYXRpb25GaWx0ZXJNb2RlIHtcbiAgQUxMID0gJ0FMTCcsXG4gIElOQ09NSU5HID0gJ0lOQ09NSU5HJyxcbiAgT1VUR09JTkcgPSAnT1VUR09JTkcnLFxuICBCRVRXRUVOID0gJ0JFVFdFRU4nLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dDaXJjbGVzTGF5ZXJBdHRyaWJ1dGVzIHtcbiAgbGVuZ3RoOiBudW1iZXI7XG4gIGF0dHJpYnV0ZXM6IHtcbiAgICBnZXRQb3NpdGlvbjogTGF5ZXJzRGF0YUF0dHJWYWx1ZXM8RmxvYXQzMkFycmF5PjtcbiAgICBnZXRDb2xvcjogTGF5ZXJzRGF0YUF0dHJWYWx1ZXM8VWludDhBcnJheT47XG4gICAgZ2V0SW5SYWRpdXM6IExheWVyc0RhdGFBdHRyVmFsdWVzPEZsb2F0MzJBcnJheT47XG4gICAgZ2V0T3V0UmFkaXVzOiBMYXllcnNEYXRhQXR0clZhbHVlczxGbG9hdDMyQXJyYXk+O1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dMaW5lc0xheWVyQXR0cmlidXRlcyB7XG4gIGxlbmd0aDogbnVtYmVyO1xuICBhdHRyaWJ1dGVzOiB7XG4gICAgZ2V0U291cmNlUG9zaXRpb246IExheWVyc0RhdGFBdHRyVmFsdWVzPEZsb2F0MzJBcnJheT47XG4gICAgZ2V0VGFyZ2V0UG9zaXRpb246IExheWVyc0RhdGFBdHRyVmFsdWVzPEZsb2F0MzJBcnJheT47XG4gICAgZ2V0VGhpY2tuZXNzOiBMYXllcnNEYXRhQXR0clZhbHVlczxGbG9hdDMyQXJyYXk+O1xuICAgIGdldENvbG9yOiBMYXllcnNEYXRhQXR0clZhbHVlczxVaW50OEFycmF5PjtcbiAgICBnZXRFbmRwb2ludE9mZnNldHM6IExheWVyc0RhdGFBdHRyVmFsdWVzPEZsb2F0MzJBcnJheT47XG4gICAgZ2V0U3RhZ2dlcmluZz86IExheWVyc0RhdGFBdHRyVmFsdWVzPEZsb2F0MzJBcnJheT47XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGF5ZXJzRGF0YSB7XG4gIGNpcmNsZUF0dHJpYnV0ZXM6IEZsb3dDaXJjbGVzTGF5ZXJBdHRyaWJ1dGVzO1xuICBsaW5lQXR0cmlidXRlczogRmxvd0xpbmVzTGF5ZXJBdHRyaWJ1dGVzO1xufVxuXG5leHBvcnQgdHlwZSBMYXllcnNEYXRhQXR0clZhbHVlczxUPiA9IHt2YWx1ZTogVDsgc2l6ZTogbnVtYmVyfTtcbiJdfQ==
package/dist/util.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export declare function flatMap<S, T>(xs: S[], f: (item: S) => T | T[]): T[];
2
+ //# sourceMappingURL=util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,wBAAgB,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAEnE"}
package/dist/util.js ADDED
@@ -0,0 +1,4 @@
1
+ export function flatMap(xs, f) {
2
+ return xs.reduce((acc, x) => acc.concat(f(x)), []);
3
+ }
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxPQUFPLENBQU8sRUFBTyxFQUFFLENBQXVCO0lBQzVELE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQVEsRUFBRSxDQUFJLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDN0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBmbGF0TWFwPFMsIFQ+KHhzOiBTW10sIGY6IChpdGVtOiBTKSA9PiBUIHwgVFtdKTogVFtdIHtcbiAgcmV0dXJuIHhzLnJlZHVjZSgoYWNjOiBUW10sIHg6IFMpID0+IGFjYy5jb25jYXQoZih4KSksIFtdKTtcbn1cbiJdfQ==