@kepler.gl/utils 3.1.0-alpha.1 → 3.1.0-alpha.2

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 (81) hide show
  1. package/dist/aggregation.d.ts +13 -0
  2. package/dist/aggregation.js +84 -0
  3. package/dist/application-config.d.ts +25 -0
  4. package/dist/application-config.js +52 -0
  5. package/dist/arrow-data-container.d.ts +62 -0
  6. package/dist/arrow-data-container.js +331 -0
  7. package/dist/color-utils.d.ts +108 -0
  8. package/dist/color-utils.js +443 -0
  9. package/dist/data-container-interface.d.ts +138 -0
  10. package/dist/data-container-interface.js +6 -0
  11. package/dist/data-container-utils.d.ts +30 -0
  12. package/dist/data-container-utils.js +74 -0
  13. package/dist/data-row.d.ts +59 -0
  14. package/dist/data-row.js +110 -0
  15. package/dist/data-scale-utils.d.ts +120 -0
  16. package/dist/data-scale-utils.js +340 -0
  17. package/dist/data-utils.d.ts +98 -0
  18. package/dist/data-utils.js +436 -0
  19. package/dist/dataset-utils.d.ts +45 -0
  20. package/dist/dataset-utils.js +313 -0
  21. package/dist/dom-to-image.d.ts +73 -0
  22. package/dist/dom-to-image.js +421 -0
  23. package/dist/dom-utils.d.ts +23 -0
  24. package/dist/dom-utils.js +349 -0
  25. package/dist/effect-utils.d.ts +24 -0
  26. package/dist/effect-utils.js +166 -0
  27. package/dist/export-map-html.d.ts +9 -0
  28. package/dist/export-map-html.js +25 -0
  29. package/dist/export-utils.d.ts +40 -0
  30. package/dist/export-utils.js +201 -0
  31. package/dist/filter-utils.d.ts +331 -0
  32. package/dist/filter-utils.js +1214 -0
  33. package/dist/format.d.ts +3 -0
  34. package/dist/format.js +38 -0
  35. package/dist/gl-utils.d.ts +1 -0
  36. package/dist/gl-utils.js +27 -0
  37. package/dist/index.d.ts +41 -0
  38. package/dist/index.js +941 -0
  39. package/dist/indexed-data-container.d.ts +34 -0
  40. package/dist/indexed-data-container.js +214 -0
  41. package/dist/locale-utils.d.ts +2 -0
  42. package/dist/locale-utils.js +39 -0
  43. package/dist/map-info-utils.d.ts +1 -0
  44. package/dist/map-info-utils.js +14 -0
  45. package/dist/map-style-utils/mapbox-gl-style-editor.d.ts +57 -0
  46. package/dist/map-style-utils/mapbox-gl-style-editor.js +188 -0
  47. package/dist/map-style-utils/mapbox-utils.d.ts +14 -0
  48. package/dist/map-style-utils/mapbox-utils.js +51 -0
  49. package/dist/map-utils.d.ts +9 -0
  50. package/dist/map-utils.js +48 -0
  51. package/dist/mapbox-utils.d.ts +7 -0
  52. package/dist/mapbox-utils.js +19 -0
  53. package/dist/noop.d.ts +1 -0
  54. package/dist/noop.js +13 -0
  55. package/dist/notifications-utils.d.ts +42 -0
  56. package/dist/notifications-utils.js +69 -0
  57. package/dist/observe-dimensions.d.ts +15 -0
  58. package/dist/observe-dimensions.js +130 -0
  59. package/dist/plot.d.ts +131 -0
  60. package/dist/plot.js +615 -0
  61. package/dist/position-utils.d.ts +6 -0
  62. package/dist/position-utils.js +26 -0
  63. package/dist/projection-utils.d.ts +22 -0
  64. package/dist/projection-utils.js +83 -0
  65. package/dist/quick-insertion-sort.d.ts +12 -0
  66. package/dist/quick-insertion-sort.js +132 -0
  67. package/dist/row-data-container.d.ts +31 -0
  68. package/dist/row-data-container.js +206 -0
  69. package/dist/searcher-utils.d.ts +1 -0
  70. package/dist/searcher-utils.js +25 -0
  71. package/dist/split-map-utils.d.ts +32 -0
  72. package/dist/split-map-utils.js +99 -0
  73. package/dist/strings.d.ts +4 -0
  74. package/dist/strings.js +16 -0
  75. package/dist/time.d.ts +54 -0
  76. package/dist/time.js +325 -0
  77. package/dist/types.d.ts +18 -0
  78. package/dist/types.js +6 -0
  79. package/dist/utils.d.ts +104 -0
  80. package/dist/utils.js +241 -0
  81. package/package.json +6 -5
@@ -0,0 +1,331 @@
1
+ import { Field, ParsedFilter, Filter, FilterBase, PolygonFilter, FieldDomain, TimeRangeFieldDomain, Feature, FeatureValue, LineChart, TimeRangeFilter, RangeFieldDomain, FilterDatasetOpt, FilterRecord, AnimationConfig } from '@kepler.gl/types';
2
+ import { DataContainerInterface } from './data-container-interface';
3
+ import { KeplerTableModel } from './types';
4
+ export declare const durationSecond = 1000;
5
+ export declare const durationMinute: number;
6
+ export declare const durationHour: number;
7
+ export declare const durationDay: number;
8
+ export declare const durationWeek: number;
9
+ export declare const durationYear: number;
10
+ declare type VisState = any;
11
+ export declare type FilterResult = {
12
+ filteredIndexForDomain?: number[];
13
+ filteredIndex?: number[];
14
+ };
15
+ export declare type FilterChanged = {
16
+ [key in keyof FilterRecord]: {
17
+ [key: string]: 'added' | 'deleted' | 'name_changed' | 'value_changed' | 'dataId_changed';
18
+ } | null;
19
+ };
20
+ export declare type dataValueAccessor = (data: {
21
+ index: number;
22
+ }) => number | null;
23
+ export declare const TimestampStepMap: {
24
+ max: number;
25
+ step: number;
26
+ }[];
27
+ export declare const FILTER_UPDATER_PROPS: {
28
+ dataId: "dataId";
29
+ name: "name";
30
+ layerId: "layerId";
31
+ };
32
+ export declare const FILTER_COMPONENTS: {
33
+ select: string;
34
+ multiSelect: string;
35
+ timeRange: string;
36
+ range: string;
37
+ polygon: string;
38
+ };
39
+ export declare const DEFAULT_FILTER_STRUCTURE: {
40
+ dataId: never[];
41
+ id: null;
42
+ enabled: boolean;
43
+ fixedDomain: boolean;
44
+ view: "side";
45
+ isAnimating: boolean;
46
+ animationWindow: "free";
47
+ speed: number;
48
+ name: never[];
49
+ type: null;
50
+ fieldIdx: never[];
51
+ domain: null;
52
+ value: null;
53
+ plotType: {
54
+ type: "histogram";
55
+ };
56
+ yAxis: null;
57
+ gpu: boolean;
58
+ };
59
+ export declare const FILTER_ID_LENGTH = 4;
60
+ export declare const LAYER_FILTERS: "polygon"[];
61
+ /**
62
+ * Generates a filter with a dataset id as dataId
63
+ */
64
+ export declare function getDefaultFilter({ dataId, id }?: {
65
+ dataId?: string | null | string[];
66
+ id?: string;
67
+ }): FilterBase<LineChart>;
68
+ /**
69
+ * Check if a filter is valid based on the given dataId
70
+ * @param filter to validate
71
+ * @param datasetId id to validate filter against
72
+ * @return true if a filter is valid, false otherwise
73
+ */
74
+ export declare function shouldApplyFilter(filter: Filter, datasetId: string): boolean;
75
+ /**
76
+ * Validates and modifies polygon filter structure
77
+ * @param dataset
78
+ * @param filter
79
+ * @param layers
80
+ * @return - {filter, dataset}
81
+ */
82
+ export declare function validatePolygonFilter<K extends KeplerTableModel<K, L>, L extends {
83
+ id: string;
84
+ }>(dataset: K, filter: PolygonFilter, layers: L[]): {
85
+ filter: PolygonFilter | null;
86
+ dataset: K;
87
+ };
88
+ /**
89
+ * Default validate filter function
90
+ * @param dataset
91
+ * @param filter
92
+ * @return - {filter, dataset}
93
+ */
94
+ export declare function validateFilter<K extends KeplerTableModel<K, L>, L>(dataset: K, filter: ParsedFilter): {
95
+ filter: Filter | null;
96
+ dataset: K;
97
+ };
98
+ /**
99
+ * Validate saved filter config with new data
100
+ *
101
+ * @param dataset
102
+ * @param filter - filter to be validate
103
+ * @param layers - layers
104
+ * @return validated filter
105
+ */
106
+ export declare function validateFilterWithData<K extends KeplerTableModel<K, L>, L>(dataset: K, filter: ParsedFilter, layers: L[]): {
107
+ filter: Filter;
108
+ dataset: K;
109
+ };
110
+ /**
111
+ * Get default filter prop based on field type
112
+ *
113
+ * @param field
114
+ * @param fieldDomain
115
+ * @returns default filter
116
+ */
117
+ export declare function getFilterProps(field: Field, fieldDomain: FieldDomain): Partial<Filter> & {
118
+ fieldType: string;
119
+ };
120
+ export declare const getPolygonFilterFunctor: (layer: any, filter: any, dataContainer: any) => (data: any) => any;
121
+ /**
122
+ * Check if a GeoJSON feature filter can be applied to a layer
123
+ */
124
+ export declare function canApplyFeatureFilter(feature: Feature | null): boolean;
125
+ /**
126
+ * @param param An object that represents a row record.
127
+ * @param param.index Index of the row in data container.
128
+ * @returns Returns true to keep the element, or false otherwise.
129
+ */
130
+ declare type filterFunction = (data: {
131
+ index: number;
132
+ }) => boolean;
133
+ /**
134
+ * @param field dataset Field
135
+ * @param dataId Dataset id
136
+ * @param filter Filter object
137
+ * @param layers list of layers to filter upon
138
+ * @param dataContainer Data container
139
+ * @return filterFunction
140
+ */
141
+ export declare function getFilterFunction<L extends {
142
+ config: {
143
+ dataId: string | null;
144
+ };
145
+ id: string;
146
+ }>(field: Field | null, dataId: string, filter: Filter, layers: L[], dataContainer: DataContainerInterface): filterFunction;
147
+ export declare function updateFilterDataId(dataId: string | string[]): FilterBase<LineChart>;
148
+ export declare function filterDataByFilterTypes({ dynamicDomainFilters, cpuFilters, filterFuncs }: {
149
+ dynamicDomainFilters: Filter[] | null;
150
+ cpuFilters: Filter[] | null;
151
+ filterFuncs: {
152
+ [key: string]: filterFunction;
153
+ };
154
+ }, dataContainer: DataContainerInterface): FilterResult;
155
+ /**
156
+ * Get a record of filters based on domain type and gpu / cpu
157
+ */
158
+ export declare function getFilterRecord(dataId: string, filters: Filter[], opt?: FilterDatasetOpt): FilterRecord;
159
+ /**
160
+ * Compare filter records to get what has changed
161
+ */
162
+ export declare function diffFilters(filterRecord: FilterRecord, oldFilterRecord?: FilterRecord | Record<string, never>): FilterChanged;
163
+ /**
164
+ * Call by parsing filters from URL
165
+ * Check if value of filter within filter domain, if not adjust it to match
166
+ * filter domain
167
+ *
168
+ * @returns value - adjusted value to match filter or null to remove filter
169
+ */
170
+ export declare function adjustValueToFilterDomain(value: Filter['value'], { domain, type }: {
171
+ domain: any;
172
+ type: any;
173
+ }): any;
174
+ /**
175
+ * Calculate numeric domain and suitable step
176
+ */
177
+ export declare function getNumericFieldDomain(dataContainer: DataContainerInterface, valueAccessor: dataValueAccessor): RangeFieldDomain;
178
+ /**
179
+ * Calculate step size for range and timerange filter
180
+ */
181
+ export declare function getNumericStepSize(diff: number): number;
182
+ /**
183
+ * Calculate timestamp domain and suitable step
184
+ */
185
+ export declare function getTimestampFieldDomain(dataContainer: DataContainerInterface, valueAccessor: dataValueAccessor): TimeRangeFieldDomain;
186
+ /**
187
+ * round number based on step
188
+ *
189
+ * @param {Number} val
190
+ * @param {Number} step
191
+ * @param {string} bound
192
+ * @returns {Number} rounded number
193
+ */
194
+ export declare function formatNumberByStep(val: number, step: number, bound: 'floor' | 'ceil'): number;
195
+ export declare function isInRange(val: any, domain: number[]): boolean;
196
+ /**
197
+ * Determines whether a point is within the provided polygon
198
+ *
199
+ * @param point as input search [lat, lng]
200
+ * @param polygon Points must be within these (Multi)Polygon(s)
201
+ * @return {boolean}
202
+ */
203
+ export declare function isInPolygon(point: number[], polygon: any): boolean;
204
+ export declare function getTimeWidgetTitleFormatter(domain: [number, number]): string | null;
205
+ /**
206
+ * Sanity check on filters to prepare for save
207
+ * @type {typeof import('./filter-utils').isFilterValidToSave}
208
+ */
209
+ export declare function isFilterValidToSave(filter: any): boolean;
210
+ /**
211
+ * Sanity check on filters to prepare for save
212
+ * @type {typeof import('./filter-utils').isValidFilterValue}
213
+ */
214
+ export declare function isValidFilterValue(type: string | null, value: any): boolean;
215
+ export declare function getColumnFilterProps<K extends KeplerTableModel<K, L>, L>(filter: Filter, dataset: K): {
216
+ lineChart: LineChart;
217
+ yAxs: Field;
218
+ } | Record<string, any>;
219
+ export declare function updateFilterPlot<K extends KeplerTableModel<K, any>>(datasets: {
220
+ [id: string]: K;
221
+ }, filter: Filter, dataId?: string | undefined): Filter;
222
+ /**
223
+ *
224
+ * @param datasetIds list of dataset ids to be filtered
225
+ * @param datasets all datasets
226
+ * @param filters all filters to be applied to datasets
227
+ * @return datasets - new updated datasets
228
+ */
229
+ export declare function applyFiltersToDatasets<K extends KeplerTableModel<K, L>, L extends {
230
+ config: {
231
+ dataId: string | null;
232
+ };
233
+ }>(datasetIds: string[], datasets: {
234
+ [id: string]: K;
235
+ }, filters: Filter[], layers?: L[]): {
236
+ [id: string]: K;
237
+ };
238
+ /**
239
+ * Applies a new field name value to filter and update both filter and dataset
240
+ * @param filter - to be applied the new field name on
241
+ * @param dataset - dataset the field belongs to
242
+ * @param fieldName - field.name
243
+ * @param filterDatasetIndex - field.name
244
+ * @param option
245
+ * @return - {filter, datasets}
246
+ */
247
+ export declare function applyFilterFieldName<K extends KeplerTableModel<K, L>, L>(filter: Filter, dataset: K, fieldName: string, filterDatasetIndex?: number, option?: {
248
+ mergeDomain: boolean;
249
+ }): {
250
+ filter: Filter | null;
251
+ dataset: K;
252
+ };
253
+ /**
254
+ * Merge one filter with other filter prop domain
255
+ */
256
+ export declare function mergeFilterDomainStep(filter: Filter, filterProps?: Partial<Filter>): (Filter & {
257
+ step?: number;
258
+ }) | null;
259
+ /**
260
+ * Generates polygon filter
261
+ */
262
+ export declare const featureToFilterValue: (feature: Feature, filterId: string, properties?: Record<string, any>) => FeatureValue;
263
+ export declare const getFilterIdInFeature: (f: FeatureValue) => string;
264
+ /**
265
+ * Generates polygon filter
266
+ */
267
+ export declare function generatePolygonFilter<L extends {
268
+ config: {
269
+ dataId: string | null;
270
+ label: string;
271
+ };
272
+ id: string;
273
+ }>(layers: L[], feature: Feature): PolygonFilter;
274
+ /**
275
+ * Run filter entirely on CPU
276
+ */
277
+ interface StateType<K extends KeplerTableModel<K, L>, L> {
278
+ layers: L[];
279
+ filters: Filter[];
280
+ datasets: {
281
+ [id: string]: K;
282
+ };
283
+ }
284
+ export declare function filterDatasetCPU<T extends StateType<K, L>, K extends KeplerTableModel<K, L>, L>(state: T, dataId: string): T;
285
+ /**
286
+ * Validate parsed filters with datasets and add filterProps to field
287
+ */
288
+ declare type MinVisStateForFilter = Pick<VisState, 'layers' | 'datasets' | 'isMergingDatasets'>;
289
+ export declare function validateFiltersUpdateDatasets<S extends MinVisStateForFilter, K extends KeplerTableModel<K, L>, L extends {
290
+ config: {
291
+ dataId: string | null;
292
+ label: string;
293
+ };
294
+ id: string;
295
+ }>(state: S, filtersToValidate?: ParsedFilter[]): {
296
+ validated: Filter[];
297
+ failed: Filter[];
298
+ updatedDatasets: S['datasets'];
299
+ };
300
+ export declare function removeFilterPlot(filter: Filter, dataId: string): Filter;
301
+ export declare function isValidTimeDomain(domain: any): boolean;
302
+ export declare function getTimeWidgetHintFormatter(domain: [number, number]): string | undefined;
303
+ export declare function isSideFilter(filter: Filter): boolean;
304
+ export declare function mergeTimeDomains(domains: ([number, number] | null)[]): [number, number];
305
+ /**
306
+ * @param {Layer} layer
307
+ */
308
+ export declare function isLayerAnimatable(layer: any): boolean;
309
+ /**
310
+ * @param {Layer[]} layers
311
+ * @returns {Layer[]}
312
+ */
313
+ export declare function getAnimatableVisibleLayers(layers: any[]): any[];
314
+ /**
315
+ * @param {Layer[]} layers
316
+ * @param {string} type
317
+ * @returns {Layer[]}
318
+ */
319
+ export declare function getAnimatableVisibleLayersByType(layers: any[], type: string): any[];
320
+ /**
321
+ * @param {Layer[]} layers
322
+ * @returns {Layer[]}
323
+ */
324
+ export declare function getIntervalBasedAnimationLayers(layers: any[]): any[];
325
+ export declare function mergeFilterWithTimeline(filter: TimeRangeFilter, animationConfig: AnimationConfig): {
326
+ filter: TimeRangeFilter;
327
+ animationConfig: AnimationConfig;
328
+ };
329
+ export declare function scaleSourceDomainToDestination(sourceDomain: [number, number], destinationDomain: [number, number]): [number, number];
330
+ export declare function getFilterScaledTimeline(filter: any, animationConfig: any): [number, number] | [];
331
+ export {};