@carto/api-client 0.5.0-alpha.11 → 0.5.0-alpha.13
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/build/api-client.cjs +6 -7
- package/build/api-client.cjs.map +1 -1
- package/build/api-client.d.cts +15 -5
- package/build/api-client.d.ts +15 -5
- package/build/api-client.js +6 -7
- package/build/api-client.js.map +1 -1
- package/package.json +3 -3
- package/src/deck/get-data-filter-extension-props.ts +27 -9
- package/src/widget-sources/widget-tileset-source.ts +2 -3
package/package.json
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"homepage": "https://github.com/CartoDB/carto-api-client#readme",
|
|
9
9
|
"author": "Don McCurdy <donmccurdy@carto.com>",
|
|
10
10
|
"packageManager": "yarn@4.3.1",
|
|
11
|
-
"version": "0.5.0-alpha.
|
|
11
|
+
"version": "0.5.0-alpha.13",
|
|
12
12
|
"license": "MIT",
|
|
13
13
|
"publishConfig": {
|
|
14
14
|
"access": "public"
|
|
@@ -109,10 +109,10 @@
|
|
|
109
109
|
"thenby": "^1.3.4",
|
|
110
110
|
"tinybench": "^3.1.1",
|
|
111
111
|
"tsup": "^8.3.6",
|
|
112
|
-
"typescript": "~5.
|
|
112
|
+
"typescript": "~5.8.2",
|
|
113
113
|
"typescript-eslint": "^8.24.0",
|
|
114
114
|
"vite": "^6.1.0",
|
|
115
|
-
"vitest": "3.0.
|
|
115
|
+
"vitest": "3.0.7"
|
|
116
116
|
},
|
|
117
117
|
"stableVersion": "0.4.6"
|
|
118
118
|
}
|
|
@@ -8,6 +8,16 @@ type TimeFilter = Filters['string'][FilterType.TIME] & {
|
|
|
8
8
|
params?: {offsetBy?: number};
|
|
9
9
|
};
|
|
10
10
|
|
|
11
|
+
/**
|
|
12
|
+
* deck.gl's DataFilterExtension supports GPU filtering with 1–4 values. We
|
|
13
|
+
* allocate filters[0] to generic filters and filters[1] to time filters.
|
|
14
|
+
*
|
|
15
|
+
* getFilterValue() _must_ return an array of the same size as the filterSize
|
|
16
|
+
* used to initialize the DataFilterExtension. We document that users must use
|
|
17
|
+
* filterSize=4 for compatibility with @link {getDataFilterExtensionProps}.
|
|
18
|
+
*/
|
|
19
|
+
const DEFAULT_FILTER_SIZE = 4;
|
|
20
|
+
|
|
11
21
|
/** @experimental Prefer type definition from deck.gl. */
|
|
12
22
|
export type _DataFilterExtensionProps = {
|
|
13
23
|
filterRange: number[][];
|
|
@@ -17,22 +27,30 @@ export type _DataFilterExtensionProps = {
|
|
|
17
27
|
|
|
18
28
|
/**
|
|
19
29
|
* Creates props for DataFilterExtension, from `@deck.gl/extensions`, given
|
|
20
|
-
* a set of filters.
|
|
30
|
+
* a set of filters. Requires that DataFilterExtension is initialized with
|
|
31
|
+
* filterSize=4, where the CARTO filters will occupy the first two slots.
|
|
32
|
+
*
|
|
33
|
+
* @example To create a deck.gl layer with GPU data filtering:
|
|
34
|
+
* ```typescript
|
|
35
|
+
* import {DataFilterExtension} from '@deck.gl/extensions';
|
|
36
|
+
* import {VectorTileLayer} from '@deck.gl/layers';
|
|
37
|
+
* import {getDataFilterExtensionProps} from '@carto/api-client';
|
|
21
38
|
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
39
|
+
* const layer = new VectorTileLayer({
|
|
40
|
+
* data: data,
|
|
41
|
+
* extensions: [new DataFilterExtension({filterSize: 4})],
|
|
42
|
+
* ...getDataFilterExtensionProps(filters),
|
|
43
|
+
* });
|
|
44
|
+
* ```
|
|
25
45
|
*/
|
|
26
46
|
export function getDataFilterExtensionProps(
|
|
27
47
|
filters: Filters,
|
|
28
|
-
filtersLogicalOperator?: FilterLogicalOperator
|
|
29
|
-
filterSize?: 0 | 1 | 2 | 3 | 4
|
|
48
|
+
filtersLogicalOperator?: FilterLogicalOperator
|
|
30
49
|
): _DataFilterExtensionProps {
|
|
31
|
-
filterSize ??= 4;
|
|
32
50
|
const {filtersWithoutTimeType, timeColumn, timeFilter} =
|
|
33
51
|
getFiltersByType(filters);
|
|
34
52
|
return {
|
|
35
|
-
filterRange: getFilterRange(timeFilter,
|
|
53
|
+
filterRange: getFilterRange(timeFilter, DEFAULT_FILTER_SIZE),
|
|
36
54
|
updateTriggers: getUpdateTriggers(
|
|
37
55
|
filtersWithoutTimeType,
|
|
38
56
|
timeColumn,
|
|
@@ -42,7 +60,7 @@ export function getDataFilterExtensionProps(
|
|
|
42
60
|
filtersWithoutTimeType,
|
|
43
61
|
timeColumn,
|
|
44
62
|
timeFilter,
|
|
45
|
-
|
|
63
|
+
DEFAULT_FILTER_SIZE,
|
|
46
64
|
filtersLogicalOperator
|
|
47
65
|
),
|
|
48
66
|
};
|
|
@@ -145,10 +145,9 @@ export class WidgetTilesetSource extends WidgetSource<WidgetTilesetSourceProps>
|
|
|
145
145
|
function onMessage(e: MessageEvent) {
|
|
146
146
|
const response = e.data as WorkerResponse;
|
|
147
147
|
if (response.requestId !== requestId) return;
|
|
148
|
+
if (signal?.aborted) return; // handled by 'abort' listener
|
|
148
149
|
|
|
149
|
-
if (
|
|
150
|
-
reject!(new Error(signal.reason));
|
|
151
|
-
} else if (response.ok) {
|
|
150
|
+
if (response.ok) {
|
|
152
151
|
resolve!(response.result as T);
|
|
153
152
|
} else {
|
|
154
153
|
reject!(new Error(response.error));
|