@deck.gl/carto 8.6.4 → 8.7.0-alpha.11
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/dist.dev.js +49068 -6661
- package/dist/es5/api/index.js +14 -8
- package/dist/es5/api/index.js.map +1 -1
- package/dist/es5/api/layer-map.js +256 -0
- package/dist/es5/api/layer-map.js.map +1 -0
- package/dist/es5/api/maps-api-common.js +13 -9
- package/dist/es5/api/maps-api-common.js.map +1 -1
- package/dist/es5/api/maps-client.js +157 -98
- package/dist/es5/api/maps-client.js.map +1 -1
- package/dist/es5/api/maps-v3-client.js +549 -190
- package/dist/es5/api/maps-v3-client.js.map +1 -1
- package/dist/es5/api/parseMap.js +207 -0
- package/dist/es5/api/parseMap.js.map +1 -0
- package/dist/es5/basemap.js +1 -1
- package/dist/es5/basemap.js.map +1 -1
- package/dist/es5/config.js +30 -37
- package/dist/es5/config.js.map +1 -1
- package/dist/es5/index.js +20 -30
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/layers/carto-dynamic-tile-layer.js +166 -0
- package/dist/es5/layers/carto-dynamic-tile-layer.js.map +1 -0
- package/dist/es5/layers/carto-layer.js +217 -131
- package/dist/es5/layers/carto-layer.js.map +1 -1
- package/dist/es5/style/color-bins-style.js +16 -11
- package/dist/es5/style/color-bins-style.js.map +1 -1
- package/dist/es5/style/color-categories-style.js +43 -14
- package/dist/es5/style/color-categories-style.js.map +1 -1
- package/dist/es5/style/color-continuous-style.js +16 -11
- package/dist/es5/style/color-continuous-style.js.map +1 -1
- package/dist/es5/style/palette.js +24 -12
- package/dist/es5/style/palette.js.map +1 -1
- package/dist/es5/style/utils.js +13 -6
- package/dist/es5/style/utils.js.map +1 -1
- package/dist/esm/api/index.js +1 -1
- package/dist/esm/api/index.js.map +1 -1
- package/dist/esm/api/layer-map.js +220 -0
- package/dist/esm/api/layer-map.js.map +1 -0
- package/dist/esm/api/maps-client.js +1 -1
- package/dist/esm/api/maps-client.js.map +1 -1
- package/dist/esm/api/maps-v3-client.js +166 -25
- package/dist/esm/api/maps-v3-client.js.map +1 -1
- package/dist/esm/api/parseMap.js +195 -0
- package/dist/esm/api/parseMap.js.map +1 -0
- package/dist/esm/config.js +11 -26
- package/dist/esm/config.js.map +1 -1
- package/dist/esm/index.js +1 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/layers/carto-dynamic-tile-layer.js +97 -0
- package/dist/esm/layers/carto-dynamic-tile-layer.js.map +1 -0
- package/dist/esm/layers/carto-layer.js +35 -28
- package/dist/esm/layers/carto-layer.js.map +1 -1
- package/dist/esm/style/color-bins-style.js +1 -1
- package/dist/esm/style/color-bins-style.js.map +1 -1
- package/dist/esm/style/color-continuous-style.js +1 -1
- package/dist/esm/style/color-continuous-style.js.map +1 -1
- package/dist.min.js +278 -1
- package/package.json +13 -8
- package/src/api/index.js +1 -1
- package/src/api/layer-map.js +195 -0
- package/src/api/maps-client.js +3 -7
- package/src/api/maps-v3-client.js +140 -20
- package/src/api/parseMap.js +183 -0
- package/src/config.js +8 -39
- package/src/index.js +1 -2
- package/src/layers/carto-dynamic-tile-layer.js +86 -0
- package/src/layers/carto-layer.js +25 -25
- package/src/style/color-bins-style.js +2 -4
- package/src/style/color-continuous-style.js +2 -4
- package/dist/es5/layers/carto-bqtiler-layer.js +0 -32
- package/dist/es5/layers/carto-bqtiler-layer.js.map +0 -1
- package/dist/es5/layers/carto-sql-layer.js +0 -33
- package/dist/es5/layers/carto-sql-layer.js.map +0 -1
- package/dist/esm/layers/carto-bqtiler-layer.js +0 -16
- package/dist/esm/layers/carto-bqtiler-layer.js.map +0 -1
- package/dist/esm/layers/carto-sql-layer.js +0 -17
- package/dist/esm/layers/carto-sql-layer.js.map +0 -1
- package/src/layers/carto-bqtiler-layer.js +0 -21
- package/src/layers/carto-sql-layer.js +0 -22
|
@@ -51,7 +51,7 @@ export async function getDataV2({
|
|
|
51
51
|
});
|
|
52
52
|
|
|
53
53
|
default:
|
|
54
|
-
throw new Error("Invalid maps API version. It
|
|
54
|
+
throw new Error("Invalid maps API version. It should be ".concat(API_VERSIONS.V1, " or ").concat(API_VERSIONS.V2));
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
57
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/api/maps-client.js"],"names":["defaultClassicCredentials","getDefaultCredentials","API_VERSIONS","DEFAULT_MAPS_URL_FORMAT","DEFAULT_REGION_COMPONENT_IN_URL","DEFAULT_USER_COMPONENT_IN_URL","encodeParameter","MAP_TYPES","CONNECTIONS","BIGQUERY","CARTO","BUFFER_SIZE","TILE_EXTENT","getDataV2","type","source","credentials","defaultCredentials","apiVersion","localCreds","mapsUrl","url","connection","V1","mapConfig","createMapConfig","buildURLMapsAPIv1","layergroup","request","metadata","tilejson","vector","V2","buildURLMapsAPIv2","Error","response","fetch","headers","Accept","error","json","ok","dealWithError","status","username","apiKey","e","JSON","stringify","errors","initURLParameters","encodedApiKey","encodedClient","parameters","cfg","join","mapsApiType","QUERY","replace","region","sql","version","buffersize","mvt","layers","options","vector_extent"],"mappings":"AAGA,SAAQA,yBAAR,EAAmCC,qBAAnC,QAA+D,WAA/D;AACA,SACEC,YADF,EAEEC,uBAFF,EAGEC,+BAHF,EAIEC,6BAJF,EAKEC,eALF,EAMEC,SANF,QAOO,mBAPP;AASA,OAAO,MAAMC,WAAW,GAAG;AACzBC,EAAAA,QAAQ,EAAE,UADe;AAEzBC,EAAAA,KAAK,EAAE;AAFkB,CAApB;AAKP,MAAMC,WAAW,GAAG,EAApB;AACA,MAAMC,WAAW,GAAG,IAApB;AAKA,OAAO,eAAeC,SAAf,CAAyB;AAACC,EAAAA,IAAD;AAAOC,EAAAA,MAAP;AAAeC,EAAAA;AAAf,CAAzB,EAAsD;AAC3D,QAAMC,kBAAkB,GAAGhB,qBAAqB,EAAhD;AACA,QAAMiB,UAAU,GAAIF,WAAW,IAAIA,WAAW,CAACE,UAA5B,IAA2CD,kBAAkB,CAACC,UAAjF;AAGA,QAAMC,UAAU,GAAG,EACjB,GAAGnB,yBADc;AAEjB,QAAIiB,kBAAkB,CAACC,UAAnB,KAAkCA,UAAlC,IAAgDD,kBAApD,CAFiB;AAGjB,OAAGD;AAHc,GAAnB;;AAMA,MAAI,CAACG,UAAU,CAACC,OAAhB,EAAyB;AACvBD,IAAAA,UAAU,CAACC,OAAX,GAAqBjB,uBAAuB,CAACe,UAAD,CAA5C;AACD;;AAED,MAAIG,GAAJ;AAEA,QAAMC,UAAU,GAAGR,IAAI,KAAK,SAAT,GAAqBN,WAAW,CAACC,QAAjC,GAA4CD,WAAW,CAACE,KAA3E;;AAEA,UAAQQ,UAAR;AACE,SAAKhB,YAAY,CAACqB,EAAlB;AAEE,YAAMC,SAAS,GAAGC,eAAe,CAACV,MAAD,CAAjC;AACAM,MAAAA,GAAG,GAAGK,iBAAiB,CAAC;AAACF,QAAAA,SAAD;AAAYR,QAAAA,WAAW,EAAEG;AAAzB,OAAD,CAAvB;AACA,YAAMQ,UAAU,GAAG,MAAMC,OAAO,CAAC;AAACP,QAAAA,GAAD;AAAML,QAAAA,WAAW,EAAEG;AAAnB,OAAD,CAAhC;AACA,aAAOQ,UAAU,CAACE,QAAX,CAAoBC,QAApB,CAA6BC,MAApC;;AAEF,SAAK7B,YAAY,CAAC8B,EAAlB;AAEEX,MAAAA,GAAG,GAAGY,iBAAiB,CAAC;AAACX,QAAAA,UAAD;AAAaR,QAAAA,IAAb;AAAmBC,QAAAA,MAAnB;AAA2BC,QAAAA,WAAW,EAAEG;AAAxC,OAAD,CAAvB;AACA,aAAO,MAAMS,OAAO,CAAC;AAACP,QAAAA,GAAD;AAAML,QAAAA,WAAW,EAAEG;AAAnB,OAAD,CAApB;;AAEF;AACE,YAAM,IAAIe,KAAJ,
|
|
1
|
+
{"version":3,"sources":["../../../src/api/maps-client.js"],"names":["defaultClassicCredentials","getDefaultCredentials","API_VERSIONS","DEFAULT_MAPS_URL_FORMAT","DEFAULT_REGION_COMPONENT_IN_URL","DEFAULT_USER_COMPONENT_IN_URL","encodeParameter","MAP_TYPES","CONNECTIONS","BIGQUERY","CARTO","BUFFER_SIZE","TILE_EXTENT","getDataV2","type","source","credentials","defaultCredentials","apiVersion","localCreds","mapsUrl","url","connection","V1","mapConfig","createMapConfig","buildURLMapsAPIv1","layergroup","request","metadata","tilejson","vector","V2","buildURLMapsAPIv2","Error","response","fetch","headers","Accept","error","json","ok","dealWithError","status","username","apiKey","e","JSON","stringify","errors","initURLParameters","encodedApiKey","encodedClient","parameters","cfg","join","mapsApiType","QUERY","replace","region","sql","version","buffersize","mvt","layers","options","vector_extent"],"mappings":"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","sourcesContent":["/**\n * Maps API Client for Maps API v1 and Maps API v2\n */\nimport {defaultClassicCredentials, getDefaultCredentials} from '../config';\nimport {\n API_VERSIONS,\n DEFAULT_MAPS_URL_FORMAT,\n DEFAULT_REGION_COMPONENT_IN_URL,\n DEFAULT_USER_COMPONENT_IN_URL,\n encodeParameter,\n MAP_TYPES\n} from './maps-api-common';\n\nexport const CONNECTIONS = {\n BIGQUERY: 'bigquery',\n CARTO: 'carto'\n};\n\nconst BUFFER_SIZE = 16;\nconst TILE_EXTENT = 4096;\n\n/**\n * Obtain a TileJson from Maps API v1 and v2\n */\nexport async function getDataV2({type, source, credentials}) {\n const defaultCredentials = getDefaultCredentials();\n const apiVersion = (credentials && credentials.apiVersion) || defaultCredentials.apiVersion;\n // Only pick up default credentials if they have been defined for\n // correct API version\n const localCreds = {\n ...defaultClassicCredentials,\n ...(defaultCredentials.apiVersion === apiVersion && defaultCredentials),\n ...credentials\n };\n\n if (!localCreds.mapsUrl) {\n localCreds.mapsUrl = DEFAULT_MAPS_URL_FORMAT[apiVersion];\n }\n\n let url;\n\n const connection = type === 'tileset' ? CONNECTIONS.BIGQUERY : CONNECTIONS.CARTO;\n\n switch (apiVersion) {\n case API_VERSIONS.V1:\n // Maps API v1\n const mapConfig = createMapConfig(source);\n url = buildURLMapsAPIv1({mapConfig, credentials: localCreds});\n const layergroup = await request({url, credentials: localCreds});\n return layergroup.metadata.tilejson.vector;\n\n case API_VERSIONS.V2:\n // Maps API v2\n url = buildURLMapsAPIv2({connection, type, source, credentials: localCreds});\n return await request({url, credentials: localCreds});\n\n default:\n throw new Error(\n `Invalid maps API version. It should be ${API_VERSIONS.V1} or ${API_VERSIONS.V2}`\n );\n }\n}\n\n/**\n * Request against Maps API\n */\nasync function request({url, credentials}) {\n let response;\n\n try {\n /* global fetch */\n /* eslint no-undef: \"error\" */\n response = await fetch(url, {\n headers: {\n Accept: 'application/json'\n }\n });\n } catch (error) {\n throw new Error(`Failed to connect to Maps API: ${error}`);\n }\n\n const json = await response.json();\n\n if (!response.ok) {\n dealWithError({response, json, credentials});\n }\n\n return json;\n}\n\n/**\n * Display proper message from Maps API error\n */\nfunction dealWithError({response, json, credentials}) {\n switch (response.status) {\n case 401:\n throw new Error(\n `Unauthorized access to Maps API: invalid combination of user ('${credentials.username}') and apiKey ('${credentials.apiKey}')`\n );\n case 403:\n throw new Error(\n `Unauthorized access to dataset: the provided apiKey('${credentials.apiKey}') doesn't provide access to the requested data`\n );\n\n default:\n const e =\n credentials.apiVersion === API_VERSIONS.V1 ? JSON.stringify(json.errors) : json.error;\n throw new Error(e);\n }\n}\n\nfunction initURLParameters(credentials) {\n const encodedApiKey = encodeParameter('api_key', credentials.apiKey);\n const encodedClient = encodeParameter('client', `deck-gl-carto`);\n return [encodedApiKey, encodedClient];\n}\n\n/**\n * Build a URL with all required parameters\n */\nfunction buildURLMapsAPIv1({mapConfig, credentials}) {\n const parameters = initURLParameters(credentials);\n const cfg = JSON.stringify(mapConfig);\n return `${mapsUrl(credentials)}?${parameters.join('&')}&${encodeParameter('config', cfg)}`;\n}\n\nfunction buildURLMapsAPIv2({connection, type, source, credentials}) {\n const parameters = initURLParameters(credentials);\n // Query type is mapped to 'sql' at maps api v1\n const mapsApiType = type === MAP_TYPES.QUERY ? 'sql' : type;\n let url = `${mapsUrl(credentials)}/${connection}/${mapsApiType}?`;\n url += `${encodeParameter('source', source)}&format=tilejson&${parameters.join('&')}`;\n return url;\n}\n\n/**\n * Prepare a url valid for the specified user\n */\nfunction mapsUrl(credentials) {\n return credentials.mapsUrl\n .replace(DEFAULT_USER_COMPONENT_IN_URL, credentials.username)\n .replace(DEFAULT_REGION_COMPONENT_IN_URL, credentials.region);\n}\n\nfunction createMapConfig(sql) {\n return {\n version: '1.3.1',\n buffersize: {\n mvt: BUFFER_SIZE\n },\n layers: [\n {\n type: 'mapnik',\n options: {\n sql,\n vector_extent: TILE_EXTENT\n }\n }\n ]\n };\n}\n"],"file":"maps-client.js"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { getDefaultCredentials, buildMapsUrlFromBase } from '../config';
|
|
2
2
|
import { API_VERSIONS, encodeParameter, FORMATS, MAP_TYPES } from './maps-api-common';
|
|
3
|
+
import { parseMap } from './parseMap';
|
|
3
4
|
import { log } from '@deck.gl/core';
|
|
4
5
|
const MAX_GET_LENGTH = 2048;
|
|
6
|
+
const DEFAULT_CLIENT = 'deck-gl-carto';
|
|
5
7
|
|
|
6
8
|
async function request({
|
|
7
9
|
method,
|
|
@@ -71,9 +73,10 @@ function getParameters({
|
|
|
71
73
|
source,
|
|
72
74
|
geoColumn,
|
|
73
75
|
columns,
|
|
74
|
-
schema
|
|
76
|
+
schema,
|
|
77
|
+
clientId
|
|
75
78
|
}) {
|
|
76
|
-
const parameters = [encodeParameter('client',
|
|
79
|
+
const parameters = [encodeParameter('client', clientId || DEFAULT_CLIENT)];
|
|
77
80
|
|
|
78
81
|
if (schema) {
|
|
79
82
|
parameters.push(encodeParameter('schema', true));
|
|
@@ -102,7 +105,8 @@ export async function mapInstantiation({
|
|
|
102
105
|
credentials,
|
|
103
106
|
geoColumn,
|
|
104
107
|
columns,
|
|
105
|
-
schema
|
|
108
|
+
schema,
|
|
109
|
+
clientId
|
|
106
110
|
}) {
|
|
107
111
|
const baseUrl = "".concat(credentials.mapsUrl, "/").concat(connection, "/").concat(type);
|
|
108
112
|
const url = "".concat(baseUrl, "?").concat(getParameters({
|
|
@@ -110,7 +114,8 @@ export async function mapInstantiation({
|
|
|
110
114
|
source,
|
|
111
115
|
geoColumn,
|
|
112
116
|
columns,
|
|
113
|
-
schema
|
|
117
|
+
schema,
|
|
118
|
+
clientId
|
|
114
119
|
}));
|
|
115
120
|
const {
|
|
116
121
|
accessToken
|
|
@@ -120,7 +125,7 @@ export async function mapInstantiation({
|
|
|
120
125
|
if (url.length > MAX_GET_LENGTH && type === MAP_TYPES.QUERY) {
|
|
121
126
|
const body = JSON.stringify({
|
|
122
127
|
q: source,
|
|
123
|
-
client:
|
|
128
|
+
client: clientId || DEFAULT_CLIENT
|
|
124
129
|
});
|
|
125
130
|
return await request({
|
|
126
131
|
method: 'POST',
|
|
@@ -148,7 +153,7 @@ function getUrlFromMetadata(metadata, format) {
|
|
|
148
153
|
return null;
|
|
149
154
|
}
|
|
150
155
|
|
|
151
|
-
function
|
|
156
|
+
function checkFetchLayerDataParameters({
|
|
152
157
|
type,
|
|
153
158
|
source,
|
|
154
159
|
connection,
|
|
@@ -170,13 +175,58 @@ export async function fetchLayerData({
|
|
|
170
175
|
geoColumn,
|
|
171
176
|
columns,
|
|
172
177
|
format,
|
|
173
|
-
schema
|
|
178
|
+
schema,
|
|
179
|
+
clientId
|
|
180
|
+
}) {
|
|
181
|
+
const {
|
|
182
|
+
url,
|
|
183
|
+
accessToken,
|
|
184
|
+
mapFormat,
|
|
185
|
+
metadata
|
|
186
|
+
} = await _fetchDataUrl({
|
|
187
|
+
type,
|
|
188
|
+
source,
|
|
189
|
+
connection,
|
|
190
|
+
credentials,
|
|
191
|
+
geoColumn,
|
|
192
|
+
columns,
|
|
193
|
+
format,
|
|
194
|
+
schema,
|
|
195
|
+
clientId
|
|
196
|
+
});
|
|
197
|
+
const data = await request({
|
|
198
|
+
url,
|
|
199
|
+
format: mapFormat,
|
|
200
|
+
accessToken
|
|
201
|
+
});
|
|
202
|
+
const result = {
|
|
203
|
+
data,
|
|
204
|
+
format: mapFormat
|
|
205
|
+
};
|
|
206
|
+
|
|
207
|
+
if (schema) {
|
|
208
|
+
result.schema = metadata.schema;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
return result;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
async function _fetchDataUrl({
|
|
215
|
+
type,
|
|
216
|
+
source,
|
|
217
|
+
connection,
|
|
218
|
+
credentials,
|
|
219
|
+
geoColumn,
|
|
220
|
+
columns,
|
|
221
|
+
format,
|
|
222
|
+
schema,
|
|
223
|
+
clientId
|
|
174
224
|
}) {
|
|
175
225
|
const defaultCredentials = getDefaultCredentials();
|
|
176
226
|
const localCreds = { ...(defaultCredentials.apiVersion === API_VERSIONS.V3 && defaultCredentials),
|
|
177
227
|
...credentials
|
|
178
228
|
};
|
|
179
|
-
|
|
229
|
+
checkFetchLayerDataParameters({
|
|
180
230
|
type,
|
|
181
231
|
source,
|
|
182
232
|
connection,
|
|
@@ -194,7 +244,8 @@ export async function fetchLayerData({
|
|
|
194
244
|
credentials: localCreds,
|
|
195
245
|
geoColumn,
|
|
196
246
|
columns,
|
|
197
|
-
schema
|
|
247
|
+
schema,
|
|
248
|
+
clientId
|
|
198
249
|
});
|
|
199
250
|
let url;
|
|
200
251
|
let mapFormat;
|
|
@@ -204,7 +255,7 @@ export async function fetchLayerData({
|
|
|
204
255
|
url = getUrlFromMetadata(metadata, format);
|
|
205
256
|
log.assert(url, "Format ".concat(format, " not available"));
|
|
206
257
|
} else {
|
|
207
|
-
const prioritizedFormats = [FORMATS.GEOJSON, FORMATS.NDJSON, FORMATS.TILEJSON];
|
|
258
|
+
const prioritizedFormats = [FORMATS.GEOJSON, FORMATS.JSON, FORMATS.NDJSON, FORMATS.TILEJSON];
|
|
208
259
|
|
|
209
260
|
for (const f of prioritizedFormats) {
|
|
210
261
|
url = getUrlFromMetadata(metadata, f);
|
|
@@ -219,22 +270,14 @@ export async function fetchLayerData({
|
|
|
219
270
|
const {
|
|
220
271
|
accessToken
|
|
221
272
|
} = localCreds;
|
|
222
|
-
|
|
273
|
+
return {
|
|
223
274
|
url,
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
const result = {
|
|
228
|
-
data,
|
|
229
|
-
format: mapFormat
|
|
275
|
+
accessToken,
|
|
276
|
+
mapFormat,
|
|
277
|
+
metadata
|
|
230
278
|
};
|
|
231
|
-
|
|
232
|
-
if (schema) {
|
|
233
|
-
result.schema = metadata.schema;
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
return result;
|
|
237
279
|
}
|
|
280
|
+
|
|
238
281
|
export async function getData({
|
|
239
282
|
type,
|
|
240
283
|
source,
|
|
@@ -242,8 +285,10 @@ export async function getData({
|
|
|
242
285
|
credentials,
|
|
243
286
|
geoColumn,
|
|
244
287
|
columns,
|
|
245
|
-
format
|
|
288
|
+
format,
|
|
289
|
+
clientId
|
|
246
290
|
}) {
|
|
291
|
+
log.deprecated('getData', 'fetchLayerData')();
|
|
247
292
|
const layerData = await fetchLayerData({
|
|
248
293
|
type,
|
|
249
294
|
source,
|
|
@@ -252,8 +297,104 @@ export async function getData({
|
|
|
252
297
|
geoColumn,
|
|
253
298
|
columns,
|
|
254
299
|
format,
|
|
255
|
-
schema: false
|
|
300
|
+
schema: false,
|
|
301
|
+
clientId
|
|
256
302
|
});
|
|
257
303
|
return layerData.data;
|
|
258
304
|
}
|
|
305
|
+
|
|
306
|
+
async function _fetchMapDataset(dataset, accessToken, credentials, clientId) {
|
|
307
|
+
const {
|
|
308
|
+
connectionName: connection,
|
|
309
|
+
source,
|
|
310
|
+
type
|
|
311
|
+
} = dataset;
|
|
312
|
+
const {
|
|
313
|
+
url,
|
|
314
|
+
mapFormat
|
|
315
|
+
} = await _fetchDataUrl({
|
|
316
|
+
credentials: { ...credentials,
|
|
317
|
+
accessToken
|
|
318
|
+
},
|
|
319
|
+
connection,
|
|
320
|
+
source,
|
|
321
|
+
type,
|
|
322
|
+
clientId
|
|
323
|
+
});
|
|
324
|
+
const cache = parseInt(new URLSearchParams(url).get('cache'), 10);
|
|
325
|
+
|
|
326
|
+
if (cache && dataset.cache === cache) {
|
|
327
|
+
return false;
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
dataset.cache = cache;
|
|
331
|
+
const data = await request({
|
|
332
|
+
url,
|
|
333
|
+
format: mapFormat,
|
|
334
|
+
accessToken
|
|
335
|
+
});
|
|
336
|
+
dataset.data = data;
|
|
337
|
+
return true;
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
async function fillInMapDatasets({
|
|
341
|
+
datasets,
|
|
342
|
+
token
|
|
343
|
+
}, clientId, credentials) {
|
|
344
|
+
const promises = datasets.map(dataset => _fetchMapDataset(dataset, token, credentials, clientId));
|
|
345
|
+
return await Promise.all(promises);
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
export async function fetchMap({
|
|
349
|
+
cartoMapId,
|
|
350
|
+
clientId,
|
|
351
|
+
credentials,
|
|
352
|
+
autoRefresh,
|
|
353
|
+
onNewData
|
|
354
|
+
}) {
|
|
355
|
+
const defaultCredentials = getDefaultCredentials();
|
|
356
|
+
const localCreds = { ...(defaultCredentials.apiVersion === API_VERSIONS.V3 && defaultCredentials),
|
|
357
|
+
...credentials
|
|
358
|
+
};
|
|
359
|
+
log.assert(cartoMapId, "Must define CARTO map id: fetchMap({cartoMapId: 'XXXX-XXXX-XXXX'})");
|
|
360
|
+
log.assert(localCreds.apiVersion === API_VERSIONS.V3, 'Method only available for v3');
|
|
361
|
+
log.assert(localCreds.apiBaseUrl, 'Must define apiBaseUrl');
|
|
362
|
+
|
|
363
|
+
if (!localCreds.mapsUrl) {
|
|
364
|
+
localCreds.mapsUrl = buildMapsUrlFromBase(localCreds.apiBaseUrl);
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
if (autoRefresh || onNewData) {
|
|
368
|
+
log.assert(onNewData, 'Must define `onNewData` when using autoRefresh');
|
|
369
|
+
log.assert(typeof onNewData === 'function', '`onNewData` must be a function');
|
|
370
|
+
log.assert(autoRefresh > 0, '`autoRefresh` must be a positive number');
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
const url = "".concat(localCreds.mapsUrl, "/public/").concat(cartoMapId);
|
|
374
|
+
const map = await request({
|
|
375
|
+
url
|
|
376
|
+
});
|
|
377
|
+
let stopAutoRefresh;
|
|
378
|
+
|
|
379
|
+
if (autoRefresh) {
|
|
380
|
+
const intervalId = setInterval(async () => {
|
|
381
|
+
const changed = await fillInMapDatasets(map, clientId, credentials);
|
|
382
|
+
|
|
383
|
+
if (changed.some(v => v === true)) {
|
|
384
|
+
onNewData(parseMap(map));
|
|
385
|
+
}
|
|
386
|
+
}, autoRefresh * 1000);
|
|
387
|
+
|
|
388
|
+
stopAutoRefresh = () => {
|
|
389
|
+
clearInterval(intervalId);
|
|
390
|
+
};
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
await fillInMapDatasets(map, clientId, credentials);
|
|
394
|
+
return { ...parseMap(map),
|
|
395
|
+
...{
|
|
396
|
+
stopAutoRefresh
|
|
397
|
+
}
|
|
398
|
+
};
|
|
399
|
+
}
|
|
259
400
|
//# sourceMappingURL=maps-v3-client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/api/maps-v3-client.js"],"names":["getDefaultCredentials","buildMapsUrlFromBase","API_VERSIONS","encodeParameter","FORMATS","MAP_TYPES","log","MAX_GET_LENGTH","request","method","url","format","accessToken","body","response","headers","Accept","Authorization","fetch","error","Error","NDJSON","json","ok","dealWithError","rows","status","getParameters","type","source","geoColumn","columns","schema","parameters","push","sourceName","QUERY","TABLE","join","mapInstantiation","connection","credentials","baseUrl","mapsUrl","length","JSON","stringify","q","client","getUrlFromMetadata","metadata","m","checkGetLayerDataParameters","localCreds","assert","apiVersion","V3","apiBaseUrl","fetchLayerData","defaultCredentials","mapFormat","prioritizedFormats","GEOJSON","TILEJSON","f","data","result","getData","layerData"],"mappings":"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","sourcesContent":["/**\n * Maps API Client for Carto 3\n */\nimport {getDefaultCredentials, buildMapsUrlFromBase} from '../config';\nimport {API_VERSIONS, encodeParameter, FORMATS, MAP_TYPES} from './maps-api-common';\nimport {log} from '@deck.gl/core';\n\nconst MAX_GET_LENGTH = 2048;\n\n/**\n * Request against Maps API\n */\nasync function request({method, url, format, accessToken, body}) {\n let response;\n\n const headers = {\n Accept: 'application/json'\n };\n\n if (accessToken) {\n headers.Authorization = `Bearer ${accessToken}`;\n }\n\n if (method === 'POST') {\n headers['Content-Type'] = 'application/json';\n }\n\n try {\n /* global fetch */\n /* eslint no-undef: \"error\" */\n response = await fetch(url, {\n method,\n headers,\n body\n });\n } catch (error) {\n throw new Error(`Failed to connect to Maps API: ${error}`);\n }\n\n if (format === FORMATS.NDJSON) {\n return response;\n }\n\n const json = await response.json();\n\n if (!response.ok) {\n dealWithError({response, error: json.error});\n }\n\n return json.rows ? json.rows : json;\n}\n\n/**\n * Display proper message from Maps API error\n */\nfunction dealWithError({response, error}) {\n switch (response.status) {\n case 400:\n throw new Error(`Bad request. ${error}`);\n case 401:\n case 403:\n throw new Error(`Unauthorized access. ${error}`);\n default:\n throw new Error(error);\n }\n}\n\n/**\n * Build a URL with all required parameters\n */\nfunction getParameters({type, source, geoColumn, columns, schema}) {\n const parameters = [encodeParameter('client', 'deck-gl-carto')];\n if (schema) {\n parameters.push(encodeParameter('schema', true));\n }\n\n const sourceName = type === MAP_TYPES.QUERY ? 'q' : 'name';\n parameters.push(encodeParameter(sourceName, source));\n\n if (type === MAP_TYPES.TABLE) {\n if (geoColumn) {\n parameters.push(encodeParameter('geo_column', geoColumn));\n }\n if (columns) {\n parameters.push(encodeParameter('columns', columns.join(',')));\n }\n }\n\n return parameters.join('&');\n}\n\nexport async function mapInstantiation({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n schema\n}) {\n const baseUrl = `${credentials.mapsUrl}/${connection}/${type}`;\n const url = `${baseUrl}?${getParameters({type, source, geoColumn, columns, schema})}`;\n const {accessToken} = credentials;\n\n const format = 'json';\n\n if (url.length > MAX_GET_LENGTH && type === MAP_TYPES.QUERY) {\n // need to be a POST request\n const body = JSON.stringify({\n q: source,\n client: 'deck-gl-carto'\n });\n return await request({method: 'POST', url: baseUrl, format, accessToken, body});\n }\n\n return await request({url, format, accessToken});\n}\n\nfunction getUrlFromMetadata(metadata, format) {\n const m = metadata[format];\n\n if (m && !m.error && m.url) {\n return m.url[0];\n }\n\n return null;\n}\n\nfunction checkGetLayerDataParameters({type, source, connection, localCreds}) {\n log.assert(connection, 'Must define connection');\n log.assert(type, 'Must define a type');\n log.assert(source, 'Must define a source');\n\n log.assert(localCreds.apiVersion === API_VERSIONS.V3, 'Method only available for v3');\n log.assert(localCreds.apiBaseUrl, 'Must define apiBaseUrl');\n log.assert(localCreds.accessToken, 'Must define an accessToken');\n}\n\nexport async function fetchLayerData({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n schema\n}) {\n const defaultCredentials = getDefaultCredentials();\n // Only pick up default credentials if they have been defined for\n // correct API version\n const localCreds = {\n ...(defaultCredentials.apiVersion === API_VERSIONS.V3 && defaultCredentials),\n ...credentials\n };\n checkGetLayerDataParameters({type, source, connection, localCreds});\n\n if (!localCreds.mapsUrl) {\n localCreds.mapsUrl = buildMapsUrlFromBase(localCreds.apiBaseUrl);\n }\n\n const metadata = await mapInstantiation({\n type,\n source,\n connection,\n credentials: localCreds,\n geoColumn,\n columns,\n schema\n });\n let url;\n let mapFormat;\n\n if (format) {\n mapFormat = format;\n url = getUrlFromMetadata(metadata, format);\n log.assert(url, `Format ${format} not available`);\n } else {\n // guess map format\n const prioritizedFormats = [FORMATS.GEOJSON, FORMATS.NDJSON, FORMATS.TILEJSON];\n for (const f of prioritizedFormats) {\n url = getUrlFromMetadata(metadata, f);\n if (url) {\n mapFormat = f;\n break;\n }\n }\n }\n\n const {accessToken} = localCreds;\n\n const data = await request({url, format: mapFormat, accessToken});\n const result = {data, format: mapFormat};\n if (schema) {\n result.schema = metadata.schema;\n }\n\n return result;\n}\n\nexport async function getData({type, source, connection, credentials, geoColumn, columns, format}) {\n const layerData = await fetchLayerData({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n schema: false\n });\n return layerData.data;\n}\n"],"file":"maps-v3-client.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/api/maps-v3-client.js"],"names":["getDefaultCredentials","buildMapsUrlFromBase","API_VERSIONS","encodeParameter","FORMATS","MAP_TYPES","parseMap","log","MAX_GET_LENGTH","DEFAULT_CLIENT","request","method","url","format","accessToken","body","response","headers","Accept","Authorization","fetch","error","Error","NDJSON","json","ok","dealWithError","rows","status","getParameters","type","source","geoColumn","columns","schema","clientId","parameters","push","sourceName","QUERY","TABLE","join","mapInstantiation","connection","credentials","baseUrl","mapsUrl","length","JSON","stringify","q","client","getUrlFromMetadata","metadata","m","checkFetchLayerDataParameters","localCreds","assert","apiVersion","V3","apiBaseUrl","fetchLayerData","mapFormat","_fetchDataUrl","data","result","defaultCredentials","prioritizedFormats","GEOJSON","TILEJSON","f","getData","deprecated","layerData","_fetchMapDataset","dataset","connectionName","cache","parseInt","URLSearchParams","get","fillInMapDatasets","datasets","token","promises","map","Promise","all","fetchMap","cartoMapId","autoRefresh","onNewData","stopAutoRefresh","intervalId","setInterval","changed","some","v","clearInterval"],"mappings":"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","sourcesContent":["/**\n * Maps API Client for Carto 3\n */\nimport {getDefaultCredentials, buildMapsUrlFromBase} from '../config';\nimport {API_VERSIONS, encodeParameter, FORMATS, MAP_TYPES} from './maps-api-common';\nimport {parseMap} from './parseMap';\nimport {log} from '@deck.gl/core';\n\nconst MAX_GET_LENGTH = 2048;\nconst DEFAULT_CLIENT = 'deck-gl-carto';\n\n/**\n * Request against Maps API\n */\nasync function request({method, url, format, accessToken, body}) {\n let response;\n\n const headers = {\n Accept: 'application/json'\n };\n\n if (accessToken) {\n headers.Authorization = `Bearer ${accessToken}`;\n }\n\n if (method === 'POST') {\n headers['Content-Type'] = 'application/json';\n }\n\n try {\n /* global fetch */\n /* eslint no-undef: \"error\" */\n response = await fetch(url, {\n method,\n headers,\n body\n });\n } catch (error) {\n throw new Error(`Failed to connect to Maps API: ${error}`);\n }\n\n if (format === FORMATS.NDJSON) {\n return response;\n }\n\n const json = await response.json();\n\n if (!response.ok) {\n dealWithError({response, error: json.error});\n }\n\n return json.rows ? json.rows : json;\n}\n\n/**\n * Display proper message from Maps API error\n */\nfunction dealWithError({response, error}) {\n switch (response.status) {\n case 400:\n throw new Error(`Bad request. ${error}`);\n case 401:\n case 403:\n throw new Error(`Unauthorized access. ${error}`);\n default:\n throw new Error(error);\n }\n}\n\n/**\n * Build a URL with all required parameters\n */\nfunction getParameters({type, source, geoColumn, columns, schema, clientId}) {\n const parameters = [encodeParameter('client', clientId || DEFAULT_CLIENT)];\n if (schema) {\n parameters.push(encodeParameter('schema', true));\n }\n\n const sourceName = type === MAP_TYPES.QUERY ? 'q' : 'name';\n parameters.push(encodeParameter(sourceName, source));\n\n if (type === MAP_TYPES.TABLE) {\n if (geoColumn) {\n parameters.push(encodeParameter('geo_column', geoColumn));\n }\n if (columns) {\n parameters.push(encodeParameter('columns', columns.join(',')));\n }\n }\n\n return parameters.join('&');\n}\n\nexport async function mapInstantiation({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n schema,\n clientId\n}) {\n const baseUrl = `${credentials.mapsUrl}/${connection}/${type}`;\n const url = `${baseUrl}?${getParameters({type, source, geoColumn, columns, schema, clientId})}`;\n const {accessToken} = credentials;\n\n const format = 'json';\n\n if (url.length > MAX_GET_LENGTH && type === MAP_TYPES.QUERY) {\n // need to be a POST request\n const body = JSON.stringify({\n q: source,\n client: clientId || DEFAULT_CLIENT\n });\n return await request({method: 'POST', url: baseUrl, format, accessToken, body});\n }\n\n return await request({url, format, accessToken});\n}\n\nfunction getUrlFromMetadata(metadata, format) {\n const m = metadata[format];\n\n if (m && !m.error && m.url) {\n return m.url[0];\n }\n\n return null;\n}\n\nfunction checkFetchLayerDataParameters({type, source, connection, localCreds}) {\n log.assert(connection, 'Must define connection');\n log.assert(type, 'Must define a type');\n log.assert(source, 'Must define a source');\n\n log.assert(localCreds.apiVersion === API_VERSIONS.V3, 'Method only available for v3');\n log.assert(localCreds.apiBaseUrl, 'Must define apiBaseUrl');\n log.assert(localCreds.accessToken, 'Must define an accessToken');\n}\n\nexport async function fetchLayerData({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n schema,\n clientId\n}) {\n // Internally we split data fetching into two parts to allow us to\n // conditionally fetch the actual data, depending on the metadata state\n const {url, accessToken, mapFormat, metadata} = await _fetchDataUrl({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n schema,\n clientId\n });\n\n const data = await request({url, format: mapFormat, accessToken});\n const result = {data, format: mapFormat};\n if (schema) {\n result.schema = metadata.schema;\n }\n\n return result;\n}\n\nasync function _fetchDataUrl({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n schema,\n clientId\n}) {\n const defaultCredentials = getDefaultCredentials();\n // Only pick up default credentials if they have been defined for\n // correct API version\n const localCreds = {\n ...(defaultCredentials.apiVersion === API_VERSIONS.V3 && defaultCredentials),\n ...credentials\n };\n checkFetchLayerDataParameters({type, source, connection, localCreds});\n\n if (!localCreds.mapsUrl) {\n localCreds.mapsUrl = buildMapsUrlFromBase(localCreds.apiBaseUrl);\n }\n\n const metadata = await mapInstantiation({\n type,\n source,\n connection,\n credentials: localCreds,\n geoColumn,\n columns,\n schema,\n clientId\n });\n let url;\n let mapFormat;\n\n if (format) {\n mapFormat = format;\n url = getUrlFromMetadata(metadata, format);\n log.assert(url, `Format ${format} not available`);\n } else {\n // guess map format\n const prioritizedFormats = [FORMATS.GEOJSON, FORMATS.JSON, FORMATS.NDJSON, FORMATS.TILEJSON];\n for (const f of prioritizedFormats) {\n url = getUrlFromMetadata(metadata, f);\n if (url) {\n mapFormat = f;\n break;\n }\n }\n }\n\n const {accessToken} = localCreds;\n return {url, accessToken, mapFormat, metadata};\n}\n\nexport async function getData({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n clientId\n}) {\n log.deprecated('getData', 'fetchLayerData')();\n const layerData = await fetchLayerData({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n schema: false,\n clientId\n });\n return layerData.data;\n}\n\n/* global clearInterval, setInterval, URLSearchParams */\nasync function _fetchMapDataset(dataset, accessToken, credentials, clientId) {\n // First fetch metadata\n const {connectionName: connection, source, type} = dataset;\n const {url, mapFormat} = await _fetchDataUrl({\n credentials: {...credentials, accessToken},\n connection,\n source,\n type,\n clientId\n });\n\n // Extract the last time the data changed\n const cache = parseInt(new URLSearchParams(url).get('cache'), 10);\n if (cache && dataset.cache === cache) {\n return false;\n }\n dataset.cache = cache;\n\n // Only fetch if the data has changed\n const data = await request({url, format: mapFormat, accessToken});\n dataset.data = data;\n return true;\n}\n\nasync function fillInMapDatasets({datasets, token}, clientId, credentials) {\n const promises = datasets.map(dataset => _fetchMapDataset(dataset, token, credentials, clientId));\n return await Promise.all(promises);\n}\n\nexport async function fetchMap({cartoMapId, clientId, credentials, autoRefresh, onNewData}) {\n const defaultCredentials = getDefaultCredentials();\n const localCreds = {\n ...(defaultCredentials.apiVersion === API_VERSIONS.V3 && defaultCredentials),\n ...credentials\n };\n\n log.assert(cartoMapId, `Must define CARTO map id: fetchMap({cartoMapId: 'XXXX-XXXX-XXXX'})`);\n\n log.assert(localCreds.apiVersion === API_VERSIONS.V3, 'Method only available for v3');\n log.assert(localCreds.apiBaseUrl, 'Must define apiBaseUrl');\n if (!localCreds.mapsUrl) {\n localCreds.mapsUrl = buildMapsUrlFromBase(localCreds.apiBaseUrl);\n }\n\n if (autoRefresh || onNewData) {\n log.assert(onNewData, 'Must define `onNewData` when using autoRefresh');\n log.assert(typeof onNewData === 'function', '`onNewData` must be a function');\n log.assert(autoRefresh > 0, '`autoRefresh` must be a positive number');\n }\n\n const url = `${localCreds.mapsUrl}/public/${cartoMapId}`;\n const map = await request({url});\n\n // Periodically check if the data has changed. Note that this\n // will not update when a map is published.\n let stopAutoRefresh;\n if (autoRefresh) {\n const intervalId = setInterval(async () => {\n const changed = await fillInMapDatasets(map, clientId, credentials);\n if (changed.some(v => v === true)) {\n onNewData(parseMap(map));\n }\n }, autoRefresh * 1000);\n stopAutoRefresh = () => {\n clearInterval(intervalId);\n };\n }\n\n // Mutates map.datasets so that dataset.data contains data\n await fillInMapDatasets(map, clientId, credentials);\n return {\n ...parseMap(map),\n ...{stopAutoRefresh}\n };\n}\n"],"file":"maps-v3-client.js"}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
import { LAYER_MAP, getColorAccessor, getSizeAccessor, getTextAccessor, getTextPixelOffsetAccessor } from './layer-map';
|
|
2
|
+
import { _flatten as flatten, log } from '@deck.gl/core';
|
|
3
|
+
export function parseMap(json) {
|
|
4
|
+
const {
|
|
5
|
+
keplerMapConfig,
|
|
6
|
+
datasets
|
|
7
|
+
} = json;
|
|
8
|
+
log.assert(keplerMapConfig.version === 'v1', 'Only support Kepler v1');
|
|
9
|
+
const {
|
|
10
|
+
mapState,
|
|
11
|
+
mapStyle
|
|
12
|
+
} = keplerMapConfig.config;
|
|
13
|
+
const {
|
|
14
|
+
layers,
|
|
15
|
+
layerBlending,
|
|
16
|
+
interactionConfig
|
|
17
|
+
} = keplerMapConfig.config.visState;
|
|
18
|
+
return {
|
|
19
|
+
id: json.id,
|
|
20
|
+
title: json.title,
|
|
21
|
+
description: json.description,
|
|
22
|
+
createdAt: json.createdAt,
|
|
23
|
+
updatedAt: json.updatedAt,
|
|
24
|
+
initialViewState: mapState,
|
|
25
|
+
mapStyle,
|
|
26
|
+
layers: extractTextLayers(layers.reverse()).map(({
|
|
27
|
+
id,
|
|
28
|
+
type,
|
|
29
|
+
config,
|
|
30
|
+
visualChannels
|
|
31
|
+
}) => {
|
|
32
|
+
log.assert(type in LAYER_MAP, "Unsupported layer type: ".concat(type));
|
|
33
|
+
const {
|
|
34
|
+
Layer,
|
|
35
|
+
propMap,
|
|
36
|
+
defaultProps
|
|
37
|
+
} = LAYER_MAP[type];
|
|
38
|
+
const {
|
|
39
|
+
dataId
|
|
40
|
+
} = config;
|
|
41
|
+
const dataset = datasets.find(d => d.id === dataId);
|
|
42
|
+
log.assert(dataset, "No dataset matching dataId: ".concat(dataId));
|
|
43
|
+
const {
|
|
44
|
+
data
|
|
45
|
+
} = dataset;
|
|
46
|
+
log.assert(data, "No data loaded for dataId: ".concat(dataId));
|
|
47
|
+
return new Layer({
|
|
48
|
+
id,
|
|
49
|
+
data,
|
|
50
|
+
...defaultProps,
|
|
51
|
+
...createBlendingProps(layerBlending),
|
|
52
|
+
...(!config.textLabel && createInteractionProps(interactionConfig)),
|
|
53
|
+
...createStyleProps(config, propMap),
|
|
54
|
+
...createChannelProps(visualChannels, type, config, data)
|
|
55
|
+
});
|
|
56
|
+
})
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
function extractTextLayers(layers) {
|
|
61
|
+
return flatten(layers.map(({
|
|
62
|
+
id,
|
|
63
|
+
config,
|
|
64
|
+
...rest
|
|
65
|
+
}) => {
|
|
66
|
+
const {
|
|
67
|
+
textLabel,
|
|
68
|
+
...configRest
|
|
69
|
+
} = config;
|
|
70
|
+
return [{
|
|
71
|
+
id,
|
|
72
|
+
config: configRest,
|
|
73
|
+
...rest
|
|
74
|
+
}, ...textLabel.filter(t => t.field).map(t => {
|
|
75
|
+
return {
|
|
76
|
+
id: "".concat(id, "-label-").concat(t.field.name),
|
|
77
|
+
config: {
|
|
78
|
+
textLabel: t,
|
|
79
|
+
...configRest,
|
|
80
|
+
label: "".concat(config.label, "-label-").concat(t.field.name),
|
|
81
|
+
visConfig: { ...configRest.visConfig,
|
|
82
|
+
opacity: 1
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
...rest
|
|
86
|
+
};
|
|
87
|
+
})];
|
|
88
|
+
}));
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
function createBlendingProps(layerBlending) {
|
|
92
|
+
if (layerBlending === 'additive') {
|
|
93
|
+
return {
|
|
94
|
+
parameters: {
|
|
95
|
+
blendFunc: [770, 772],
|
|
96
|
+
blendEquation: 32774
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
} else if (layerBlending === 'subtractive') {
|
|
100
|
+
return {
|
|
101
|
+
parameters: {
|
|
102
|
+
blendFunc: [1, 775, 770, 772],
|
|
103
|
+
blendEquation: [32778, 32774]
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
return {};
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
function createInteractionProps(interactionConfig) {
|
|
112
|
+
const pickable = interactionConfig && interactionConfig.tooltip.enabled;
|
|
113
|
+
return {
|
|
114
|
+
autoHighlight: pickable,
|
|
115
|
+
pickable
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
function mapProps(source, target, mapping) {
|
|
120
|
+
for (const sourceKey in mapping) {
|
|
121
|
+
const sourceValue = source[sourceKey];
|
|
122
|
+
const targetKey = mapping[sourceKey];
|
|
123
|
+
|
|
124
|
+
if (sourceValue === undefined) {
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
if (typeof targetKey === 'string') {
|
|
129
|
+
target[targetKey] = sourceValue;
|
|
130
|
+
} else if (typeof targetKey === 'object') {
|
|
131
|
+
mapProps(sourceValue, target, targetKey);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
function createStyleProps(config, mapping) {
|
|
137
|
+
const result = {};
|
|
138
|
+
mapProps(config, result, mapping);
|
|
139
|
+
result.highlightColor = config.visConfig.enable3d ? [255, 255, 255, 60] : [252, 242, 26, 255];
|
|
140
|
+
return result;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
function createChannelProps(visualChannels, type, config, data) {
|
|
144
|
+
const {
|
|
145
|
+
colorField,
|
|
146
|
+
colorScale,
|
|
147
|
+
sizeField,
|
|
148
|
+
sizeScale,
|
|
149
|
+
strokeColorField,
|
|
150
|
+
strokeColorScale
|
|
151
|
+
} = visualChannels;
|
|
152
|
+
let {
|
|
153
|
+
heightField,
|
|
154
|
+
heightScale
|
|
155
|
+
} = visualChannels;
|
|
156
|
+
|
|
157
|
+
if (type === 'hexagonId') {
|
|
158
|
+
heightField = sizeField;
|
|
159
|
+
heightScale = sizeScale;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
const {
|
|
163
|
+
textLabel,
|
|
164
|
+
visConfig
|
|
165
|
+
} = config;
|
|
166
|
+
const result = {};
|
|
167
|
+
const textLabelField = textLabel && textLabel.field;
|
|
168
|
+
|
|
169
|
+
if (colorField) {
|
|
170
|
+
result.getFillColor = getColorAccessor(colorField, colorScale, visConfig.colorRange, 1, data);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
if (strokeColorField) {
|
|
174
|
+
const opacity = visConfig.strokeOpacity !== undefined ? visConfig.strokeOpacity / visConfig.opacity : 1;
|
|
175
|
+
result.getLineColor = getColorAccessor(strokeColorField, strokeColorScale, visConfig.colorRange, opacity, data);
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
if (heightField) {
|
|
179
|
+
result.getElevation = getSizeAccessor(heightField, heightScale, visConfig.heightRange || visConfig.sizeRange, data);
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
if (sizeField) {
|
|
183
|
+
result.getPointRadius = getSizeAccessor(sizeField, sizeScale, visConfig.radiusRange || visConfig.sizeRange, data);
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
if (textLabelField) {
|
|
187
|
+
result.getText = getTextAccessor(textLabelField, data);
|
|
188
|
+
result.pointType = 'text';
|
|
189
|
+
const radius = result.getPointRadius || visConfig.radius;
|
|
190
|
+
result.getTextPixelOffset = getTextPixelOffsetAccessor(textLabel, radius);
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
return result;
|
|
194
|
+
}
|
|
195
|
+
//# sourceMappingURL=parseMap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/api/parseMap.js"],"names":["LAYER_MAP","getColorAccessor","getSizeAccessor","getTextAccessor","getTextPixelOffsetAccessor","_flatten","flatten","log","parseMap","json","keplerMapConfig","datasets","assert","version","mapState","mapStyle","config","layers","layerBlending","interactionConfig","visState","id","title","description","createdAt","updatedAt","initialViewState","extractTextLayers","reverse","map","type","visualChannels","Layer","propMap","defaultProps","dataId","dataset","find","d","data","createBlendingProps","textLabel","createInteractionProps","createStyleProps","createChannelProps","rest","configRest","filter","t","field","name","label","visConfig","opacity","parameters","blendFunc","blendEquation","pickable","tooltip","enabled","autoHighlight","mapProps","source","target","mapping","sourceKey","sourceValue","targetKey","undefined","result","highlightColor","enable3d","colorField","colorScale","sizeField","sizeScale","strokeColorField","strokeColorScale","heightField","heightScale","textLabelField","getFillColor","colorRange","strokeOpacity","getLineColor","getElevation","heightRange","sizeRange","getPointRadius","radiusRange","getText","pointType","radius","getTextPixelOffset"],"mappings":"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","sourcesContent":["import GL from '@luma.gl/constants';\nimport {\n LAYER_MAP,\n getColorAccessor,\n getSizeAccessor,\n getTextAccessor,\n getTextPixelOffsetAccessor\n} from './layer-map';\nimport {_flatten as flatten, log} from '@deck.gl/core';\n\nexport function parseMap(json) {\n const {keplerMapConfig, datasets} = json;\n log.assert(keplerMapConfig.version === 'v1', 'Only support Kepler v1');\n const {mapState, mapStyle} = keplerMapConfig.config;\n const {layers, layerBlending, interactionConfig} = keplerMapConfig.config.visState;\n\n return {\n id: json.id,\n title: json.title,\n description: json.description,\n createdAt: json.createdAt,\n updatedAt: json.updatedAt,\n initialViewState: mapState,\n mapStyle,\n layers: extractTextLayers(layers.reverse()).map(({id, type, config, visualChannels}) => {\n log.assert(type in LAYER_MAP, `Unsupported layer type: ${type}`);\n const {Layer, propMap, defaultProps} = LAYER_MAP[type];\n\n const {dataId} = config;\n const dataset = datasets.find(d => d.id === dataId);\n log.assert(dataset, `No dataset matching dataId: ${dataId}`);\n const {data} = dataset;\n log.assert(data, `No data loaded for dataId: ${dataId}`);\n return new Layer({\n id,\n data,\n ...defaultProps,\n ...createBlendingProps(layerBlending),\n ...(!config.textLabel && createInteractionProps(interactionConfig)),\n ...createStyleProps(config, propMap),\n ...createChannelProps(visualChannels, type, config, data) // Must come after style\n });\n })\n };\n}\n\nfunction extractTextLayers(layers) {\n return flatten(\n layers.map(({id, config, ...rest}) => {\n const {textLabel, ...configRest} = config;\n return [\n // Original layer without textLabel\n {id, config: configRest, ...rest},\n\n // One layer per valid text label, with full opacity\n ...textLabel\n .filter(t => t.field)\n .map(t => {\n return {\n id: `${id}-label-${t.field.name}`,\n config: {\n textLabel: t,\n ...configRest,\n label: `${config.label}-label-${t.field.name}`,\n visConfig: {...configRest.visConfig, opacity: 1}\n },\n ...rest\n };\n })\n ];\n })\n );\n}\n\nfunction createBlendingProps(layerBlending) {\n if (layerBlending === 'additive') {\n return {\n parameters: {\n blendFunc: [GL.SRC_ALPHA, GL.DST_ALPHA],\n blendEquation: GL.FUNC_ADD\n }\n };\n } else if (layerBlending === 'subtractive') {\n return {\n parameters: {\n blendFunc: [GL.ONE, GL.ONE_MINUS_DST_COLOR, GL.SRC_ALPHA, GL.DST_ALPHA],\n blendEquation: [GL.FUNC_SUBTRACT, GL.FUNC_ADD]\n }\n };\n }\n\n return {};\n}\n\nfunction createInteractionProps(interactionConfig) {\n const pickable = interactionConfig && interactionConfig.tooltip.enabled;\n return {\n autoHighlight: pickable,\n pickable\n };\n}\n\nfunction mapProps(source, target, mapping) {\n for (const sourceKey in mapping) {\n const sourceValue = source[sourceKey];\n const targetKey = mapping[sourceKey];\n if (sourceValue === undefined) {\n // eslint-disable-next-line no-continue\n continue;\n }\n if (typeof targetKey === 'string') {\n target[targetKey] = sourceValue;\n } else if (typeof targetKey === 'object') {\n // Nested definition, recurse down one level\n mapProps(sourceValue, target, targetKey);\n }\n }\n}\n\nfunction createStyleProps(config, mapping) {\n const result = {};\n mapProps(config, result, mapping);\n result.highlightColor = config.visConfig.enable3d ? [255, 255, 255, 60] : [252, 242, 26, 255];\n return result;\n}\n\n/* eslint-disable complexity */\nfunction createChannelProps(visualChannels, type, config, data) {\n const {colorField, colorScale, sizeField, sizeScale, strokeColorField, strokeColorScale} =\n visualChannels;\n let {heightField, heightScale} = visualChannels;\n if (type === 'hexagonId') {\n heightField = sizeField;\n heightScale = sizeScale;\n }\n const {textLabel, visConfig} = config;\n const result = {};\n const textLabelField = textLabel && textLabel.field;\n if (colorField) {\n result.getFillColor = getColorAccessor(\n colorField,\n colorScale,\n visConfig.colorRange,\n 1, // Rely on layer opacity\n data\n );\n }\n if (strokeColorField) {\n const opacity =\n visConfig.strokeOpacity !== undefined ? visConfig.strokeOpacity / visConfig.opacity : 1;\n result.getLineColor = getColorAccessor(\n strokeColorField,\n strokeColorScale,\n visConfig.colorRange,\n opacity,\n data\n );\n }\n if (heightField) {\n result.getElevation = getSizeAccessor(\n heightField,\n heightScale,\n visConfig.heightRange || visConfig.sizeRange,\n data\n );\n }\n if (sizeField) {\n result.getPointRadius = getSizeAccessor(\n sizeField,\n sizeScale,\n visConfig.radiusRange || visConfig.sizeRange,\n data\n );\n }\n if (textLabelField) {\n result.getText = getTextAccessor(textLabelField, data);\n result.pointType = 'text';\n const radius = result.getPointRadius || visConfig.radius;\n result.getTextPixelOffset = getTextPixelOffsetAccessor(textLabel, radius);\n }\n\n return result;\n}\n"],"file":"parseMap.js"}
|