@deck.gl/carto 8.9.0-alpha.2 → 8.9.0-alpha.3

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 (149) hide show
  1. package/dist/dist.dev.js +1927 -1675
  2. package/dist/es5/api/layer-map.js +104 -9
  3. package/dist/es5/api/layer-map.js.map +1 -1
  4. package/dist/es5/api/maps-v3-client.js +10 -8
  5. package/dist/es5/api/maps-v3-client.js.map +1 -1
  6. package/dist/es5/api/parseMap.js +55 -7
  7. package/dist/es5/api/parseMap.js.map +1 -1
  8. package/dist/es5/api/types.js +2 -0
  9. package/dist/es5/api/types.js.map +1 -0
  10. package/dist/es5/index.js +0 -20
  11. package/dist/es5/index.js.map +1 -1
  12. package/dist/es5/layers/carto-layer.js +19 -2
  13. package/dist/es5/layers/carto-layer.js.map +1 -1
  14. package/dist/es5/layers/carto-tile-layer.js +33 -107
  15. package/dist/es5/layers/carto-tile-layer.js.map +1 -1
  16. package/dist/es5/layers/h3-tile-layer.js +10 -1
  17. package/dist/es5/layers/h3-tile-layer.js.map +1 -1
  18. package/dist/es5/layers/quadbin-layer.js.map +1 -1
  19. package/dist/es5/layers/quadbin-tile-layer.js +10 -1
  20. package/dist/es5/layers/quadbin-tile-layer.js.map +1 -1
  21. package/dist/es5/layers/quadbin-tileset-2d.js +13 -11
  22. package/dist/es5/layers/quadbin-tileset-2d.js.map +1 -1
  23. package/dist/es5/layers/quadbin-utils.js +6 -82
  24. package/dist/es5/layers/quadbin-utils.js.map +1 -1
  25. package/dist/es5/layers/schema/carto-spatial-tile-loader.js +16 -32
  26. package/dist/es5/layers/schema/carto-spatial-tile-loader.js.map +1 -1
  27. package/dist/es5/layers/schema/carto-tile.js +30 -6
  28. package/dist/es5/layers/schema/carto-tile.js.map +1 -1
  29. package/dist/es5/layers/schema/carto-vector-tile-loader.js +81 -0
  30. package/dist/es5/layers/schema/carto-vector-tile-loader.js.map +1 -0
  31. package/dist/es5/layers/schema/spatialjson-utils.js +4 -3
  32. package/dist/es5/layers/schema/spatialjson-utils.js.map +1 -1
  33. package/dist/es5/layers/schema/tile-loader-utils.js +34 -0
  34. package/dist/es5/layers/schema/tile-loader-utils.js.map +1 -0
  35. package/dist/es5/layers/spatial-index-tile-layer.js +40 -0
  36. package/dist/es5/layers/spatial-index-tile-layer.js.map +1 -1
  37. package/dist/esm/api/layer-map.js +85 -9
  38. package/dist/esm/api/layer-map.js.map +1 -1
  39. package/dist/esm/api/maps-v3-client.js +5 -2
  40. package/dist/esm/api/maps-v3-client.js.map +1 -1
  41. package/dist/esm/api/parseMap.js +58 -7
  42. package/dist/esm/api/parseMap.js.map +1 -1
  43. package/dist/esm/api/types.js +2 -0
  44. package/dist/esm/api/types.js.map +1 -0
  45. package/dist/esm/index.js +0 -1
  46. package/dist/esm/index.js.map +1 -1
  47. package/dist/esm/layers/carto-layer.js +18 -0
  48. package/dist/esm/layers/carto-layer.js.map +1 -1
  49. package/dist/esm/layers/carto-tile-layer.js +31 -82
  50. package/dist/esm/layers/carto-tile-layer.js.map +1 -1
  51. package/dist/esm/layers/h3-tile-layer.js +6 -1
  52. package/dist/esm/layers/h3-tile-layer.js.map +1 -1
  53. package/dist/esm/layers/quadbin-layer.js.map +1 -1
  54. package/dist/esm/layers/quadbin-tile-layer.js +6 -1
  55. package/dist/esm/layers/quadbin-tile-layer.js.map +1 -1
  56. package/dist/esm/layers/quadbin-tileset-2d.js +12 -10
  57. package/dist/esm/layers/quadbin-tileset-2d.js.map +1 -1
  58. package/dist/esm/layers/quadbin-utils.js +2 -67
  59. package/dist/esm/layers/quadbin-utils.js.map +1 -1
  60. package/dist/esm/layers/schema/carto-spatial-tile-loader.js +14 -29
  61. package/dist/esm/layers/schema/carto-spatial-tile-loader.js.map +1 -1
  62. package/dist/esm/layers/schema/carto-tile.js +22 -6
  63. package/dist/esm/layers/schema/carto-tile.js.map +1 -1
  64. package/dist/esm/layers/schema/carto-vector-tile-loader.js +40 -0
  65. package/dist/esm/layers/schema/carto-vector-tile-loader.js.map +1 -0
  66. package/dist/esm/layers/schema/spatialjson-utils.js +4 -3
  67. package/dist/esm/layers/schema/spatialjson-utils.js.map +1 -1
  68. package/dist/esm/layers/schema/tile-loader-utils.js +23 -0
  69. package/dist/esm/layers/schema/tile-loader-utils.js.map +1 -0
  70. package/dist/esm/layers/spatial-index-tile-layer.js +40 -1
  71. package/dist/esm/layers/spatial-index-tile-layer.js.map +1 -1
  72. package/dist.min.js +4 -4
  73. package/package.json +4 -3
  74. package/src/api/layer-map.ts +103 -17
  75. package/src/api/maps-v3-client.ts +5 -3
  76. package/src/api/parseMap.ts +90 -17
  77. package/src/api/types.ts +108 -0
  78. package/src/index.ts +0 -5
  79. package/src/layers/carto-layer.ts +9 -2
  80. package/src/layers/carto-tile-layer.ts +32 -82
  81. package/src/layers/h3-tile-layer.ts +7 -1
  82. package/src/layers/quadbin-layer.ts +1 -1
  83. package/src/layers/quadbin-tile-layer.ts +7 -1
  84. package/src/layers/quadbin-tileset-2d.ts +14 -12
  85. package/src/layers/quadbin-utils.ts +4 -85
  86. package/src/layers/schema/carto-spatial-tile-loader.ts +12 -29
  87. package/src/layers/schema/carto-tile.ts +31 -6
  88. package/src/layers/schema/carto-vector-tile-loader.ts +39 -0
  89. package/src/layers/schema/spatialjson-utils.ts +4 -4
  90. package/src/layers/schema/tile-loader-utils.ts +22 -0
  91. package/src/layers/spatial-index-tile-layer.ts +37 -1
  92. package/typed/api/layer-map.d.ts +10 -13
  93. package/typed/api/layer-map.d.ts.map +1 -1
  94. package/typed/api/maps-v3-client.d.ts +1 -0
  95. package/typed/api/maps-v3-client.d.ts.map +1 -1
  96. package/typed/api/parseMap.d.ts +1 -0
  97. package/typed/api/parseMap.d.ts.map +1 -1
  98. package/typed/api/types.d.ts +87 -0
  99. package/typed/api/types.d.ts.map +1 -0
  100. package/typed/index.d.ts +0 -1
  101. package/typed/index.d.ts.map +1 -1
  102. package/typed/layers/carto-layer.d.ts.map +1 -1
  103. package/typed/layers/carto-tile-layer.d.ts +2 -0
  104. package/typed/layers/carto-tile-layer.d.ts.map +1 -1
  105. package/typed/layers/h3-tile-layer.d.ts.map +1 -1
  106. package/typed/layers/quadbin-layer.d.ts +1 -1
  107. package/typed/layers/quadbin-tile-layer.d.ts.map +1 -1
  108. package/typed/layers/quadbin-tileset-2d.d.ts +6 -5
  109. package/typed/layers/quadbin-tileset-2d.d.ts.map +1 -1
  110. package/typed/layers/quadbin-utils.d.ts +2 -12
  111. package/typed/layers/quadbin-utils.d.ts.map +1 -1
  112. package/typed/layers/schema/carto-spatial-tile-loader.d.ts.map +1 -1
  113. package/typed/layers/schema/carto-tile.d.ts +4 -0
  114. package/typed/layers/schema/carto-tile.d.ts.map +1 -1
  115. package/typed/layers/schema/carto-vector-tile-loader.d.ts +4 -0
  116. package/typed/layers/schema/carto-vector-tile-loader.d.ts.map +1 -0
  117. package/typed/layers/schema/spatialjson-utils.d.ts +1 -1
  118. package/typed/layers/schema/spatialjson-utils.d.ts.map +1 -1
  119. package/typed/layers/schema/tile-loader-utils.d.ts +5 -0
  120. package/typed/layers/schema/tile-loader-utils.d.ts.map +1 -0
  121. package/typed/layers/spatial-index-tile-layer.d.ts +2 -1
  122. package/typed/layers/spatial-index-tile-layer.d.ts.map +1 -1
  123. package/typed/api/index.js +0 -3
  124. package/typed/api/layer-map.js +0 -264
  125. package/typed/api/maps-api-common.js +0 -50
  126. package/typed/api/maps-client.js +0 -125
  127. package/typed/api/maps-v3-client.js +0 -304
  128. package/typed/api/parseMap.js +0 -178
  129. package/typed/basemap.js +0 -9
  130. package/typed/config.js +0 -35
  131. package/typed/index.js +0 -10
  132. package/typed/layers/carto-layer.js +0 -173
  133. package/typed/layers/carto-tile-layer.js +0 -105
  134. package/typed/layers/h3-tile-layer.js +0 -47
  135. package/typed/layers/h3-tileset-2d.js +0 -85
  136. package/typed/layers/quadkey-tile-layer.d.ts +0 -21
  137. package/typed/layers/quadkey-tile-layer.d.ts.map +0 -1
  138. package/typed/layers/quadkey-tile-layer.js +0 -42
  139. package/typed/layers/quadkey-tileset-2d.d.ts +0 -15
  140. package/typed/layers/quadkey-tileset-2d.d.ts.map +0 -1
  141. package/typed/layers/quadkey-tileset-2d.js +0 -36
  142. package/typed/layers/schema/carto-tile.js +0 -161
  143. package/typed/layers/spatial-index-tile-layer.js +0 -40
  144. package/typed/style/color-bins-style.js +0 -12
  145. package/typed/style/color-categories-style.js +0 -16
  146. package/typed/style/color-continuous-style.js +0 -12
  147. package/typed/style/palette.js +0 -62
  148. package/typed/style/utils.js +0 -15
  149. package/typed/utils.js +0 -4
@@ -32,7 +32,8 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
32
32
 
33
33
  function parseMap(json) {
34
34
  var keplerMapConfig = json.keplerMapConfig,
35
- datasets = json.datasets;
35
+ datasets = json.datasets,
36
+ token = json.token;
36
37
  (0, _utils.assert)(keplerMapConfig.version === 'v1', 'Only support Kepler v1');
37
38
  var _keplerMapConfig$conf = keplerMapConfig.config,
38
39
  mapState = _keplerMapConfig$conf.mapState,
@@ -49,6 +50,7 @@ function parseMap(json) {
49
50
  updatedAt: json.updatedAt,
50
51
  initialViewState: mapState,
51
52
  mapStyle: mapStyle,
53
+ token: token,
52
54
  layers: extractTextLayers(layers.reverse()).map(function (_ref) {
53
55
  var id = _ref.id,
54
56
  type = _ref.type,
@@ -69,10 +71,10 @@ function parseMap(json) {
69
71
  propMap = _getLayer.propMap,
70
72
  defaultProps = _getLayer.defaultProps;
71
73
 
72
- return new Layer(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
74
+ return new Layer(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
73
75
  id: id,
74
76
  data: data
75
- }, defaultProps), createBlendingProps(layerBlending)), !config.textLabel && createInteractionProps(interactionConfig)), createStyleProps(config, propMap)), createChannelProps(visualChannels, type, config, data)));
77
+ }, defaultProps), createBlendingProps(layerBlending)), !config.textLabel && createInteractionProps(interactionConfig)), createStyleProps(config, propMap)), createChannelProps(visualChannels, type, config, data)), createLoadOptions(token)));
76
78
  } catch (e) {
77
79
  _core.log.error(e.message)();
78
80
 
@@ -186,6 +188,8 @@ function createStyleProps(config, mapping) {
186
188
  function createChannelProps(visualChannels, type, config, data) {
187
189
  var colorField = visualChannels.colorField,
188
190
  colorScale = visualChannels.colorScale,
191
+ radiusField = visualChannels.radiusField,
192
+ radiusScale = visualChannels.radiusScale,
189
193
  sizeField = visualChannels.sizeField,
190
194
  sizeScale = visualChannels.sizeScale,
191
195
  strokeColorField = visualChannels.strokeColorField,
@@ -226,6 +230,10 @@ function createChannelProps(visualChannels, type, config, data) {
226
230
  }, visConfig.opacity, data);
227
231
  }
228
232
 
233
+ if (radiusField || sizeField) {
234
+ result.getPointRadius = (0, _layerMap.getSizeAccessor)(radiusField || sizeField, radiusScale || sizeScale, visConfig.sizeAggregation, visConfig.radiusRange || visConfig.sizeRange, data);
235
+ }
236
+
229
237
  if (strokeColorField) {
230
238
  var fallbackOpacity = type === 'point' ? visConfig.opacity : 1;
231
239
  var opacity = visConfig.strokeOpacity !== undefined ? visConfig.strokeOpacity : fallbackOpacity;
@@ -241,17 +249,57 @@ function createChannelProps(visualChannels, type, config, data) {
241
249
  result.getElevation = (0, _layerMap.getSizeAccessor)(heightField, heightScale, visConfig.heightAggregation, visConfig.heightRange || visConfig.sizeRange, data);
242
250
  }
243
251
 
244
- if (sizeField) {
245
- result.getPointRadius = (0, _layerMap.getSizeAccessor)(sizeField, sizeScale, visConfig.sizeAggregation, visConfig.radiusRange || visConfig.sizeRange, data);
246
- }
247
-
248
252
  if (textLabelField) {
249
253
  result.getText = (0, _layerMap.getTextAccessor)(textLabelField, data);
250
254
  result.pointType = 'text';
251
255
  var radius = result.getPointRadius || visConfig.radius;
252
256
  result.getTextPixelOffset = (0, _layerMap.getTextPixelOffsetAccessor)(textLabel, radius);
257
+ } else if (visConfig.customMarkers) {
258
+ var maxIconSize = (0, _layerMap.getMaxMarkerSize)(visConfig, visualChannels);
259
+ var getPointRadius = result.getPointRadius,
260
+ getFillColor = result.getFillColor;
261
+ result.pointType = 'icon';
262
+ result.getIcon = (0, _layerMap.getIconUrlAccessor)(visualChannels.customMarkersField, visConfig.customMarkersUrl, visConfig.customMarkersRange, maxIconSize, data);
263
+ result._subLayerProps = {
264
+ 'points-icon': {
265
+ loadOptions: {
266
+ image: {
267
+ type: 'imagebitmap'
268
+ },
269
+ imagebitmap: {
270
+ resizeWidth: maxIconSize,
271
+ resizeHeight: maxIconSize,
272
+ resizeQuality: 'high'
273
+ }
274
+ }
275
+ }
276
+ };
277
+
278
+ if (getFillColor) {
279
+ result.getIconColor = getFillColor;
280
+ }
281
+
282
+ if (getPointRadius) {
283
+ result.getIconSize = getPointRadius;
284
+ }
285
+
286
+ if (visualChannels.rotationField) {
287
+ result.getIconAngle = (0, _layerMap.negateAccessor)((0, _layerMap.getSizeAccessor)(visualChannels.rotationField, undefined, null, undefined, data));
288
+ }
253
289
  }
254
290
 
255
291
  return result;
256
292
  }
293
+
294
+ function createLoadOptions(accessToken) {
295
+ return {
296
+ loadOptions: {
297
+ fetch: {
298
+ headers: {
299
+ Authorization: "Bearer ".concat(accessToken)
300
+ }
301
+ }
302
+ }
303
+ };
304
+ }
257
305
  //# sourceMappingURL=parseMap.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/api/parseMap.ts"],"names":["parseMap","json","keplerMapConfig","datasets","version","config","mapState","mapStyle","visState","layers","layerBlending","interactionConfig","id","title","description","createdAt","updatedAt","initialViewState","extractTextLayers","reverse","map","type","visualChannels","dataId","dataset","find","d","data","Layer","propMap","defaultProps","createBlendingProps","textLabel","createInteractionProps","createStyleProps","createChannelProps","e","log","error","message","undefined","rest","configRest","filter","t","field","name","label","visConfig","opacity","parameters","blendFunc","blendEquation","pickable","tooltip","enabled","autoHighlight","mapProps","source","target","mapping","sourceKey","sourceValue","targetKey","Object","entries","key","value","result","stroked","getLineColor","getFillColor","colorAccessor","OPACITY_MAP","Array","isArray","color","opacityKey","highlightColor","enable3d","colorField","colorScale","sizeField","sizeScale","strokeColorField","strokeColorScale","heightField","heightScale","textLabelField","colorScaleType","colorAggregation","AGGREGATION","getColorValue","getColorWeight","aggregation","range","colorRange","fallbackOpacity","strokeOpacity","strokeColorAggregation","strokeColorRange","getElevation","heightAggregation","heightRange","sizeRange","getPointRadius","sizeAggregation","radiusRange","getText","pointType","radius","getTextPixelOffset"],"mappings":";;;;;;;;;;;;;;;;;;;AACA;;AAWA;;AACA;;;;;;;;;AAEO,SAASA,QAAT,CAAkBC,IAAlB,EAAwB;AAC7B,MAAOC,eAAP,GAAoCD,IAApC,CAAOC,eAAP;AAAA,MAAwBC,QAAxB,GAAoCF,IAApC,CAAwBE,QAAxB;AACA,qBAAOD,eAAe,CAACE,OAAhB,KAA4B,IAAnC,EAAyC,wBAAzC;AACA,8BAA6BF,eAAe,CAACG,MAA7C;AAAA,MAAOC,QAAP,yBAAOA,QAAP;AAAA,MAAiBC,QAAjB,yBAAiBA,QAAjB;AACA,+BAAmDL,eAAe,CAACG,MAAhB,CAAuBG,QAA1E;AAAA,MAAOC,MAAP,0BAAOA,MAAP;AAAA,MAAeC,aAAf,0BAAeA,aAAf;AAAA,MAA8BC,iBAA9B,0BAA8BA,iBAA9B;AAEA,SAAO;AACLC,IAAAA,EAAE,EAAEX,IAAI,CAACW,EADJ;AAELC,IAAAA,KAAK,EAAEZ,IAAI,CAACY,KAFP;AAGLC,IAAAA,WAAW,EAAEb,IAAI,CAACa,WAHb;AAILC,IAAAA,SAAS,EAAEd,IAAI,CAACc,SAJX;AAKLC,IAAAA,SAAS,EAAEf,IAAI,CAACe,SALX;AAMLC,IAAAA,gBAAgB,EAAEX,QANb;AAOLC,IAAAA,QAAQ,EAARA,QAPK;AAQLE,IAAAA,MAAM,EAAES,iBAAiB,CAACT,MAAM,CAACU,OAAP,EAAD,CAAjB,CAAoCC,GAApC,CAAwC,gBAAwC;AAAA,UAAtCR,EAAsC,QAAtCA,EAAsC;AAAA,UAAlCS,IAAkC,QAAlCA,IAAkC;AAAA,UAA5BhB,MAA4B,QAA5BA,MAA4B;AAAA,UAApBiB,cAAoB,QAApBA,cAAoB;;AACtF,UAAI;AACF,YAAOC,MAAP,GAAiBlB,MAAjB,CAAOkB,MAAP;AACA,YAAMC,OAAO,GAAGrB,QAAQ,CAACsB,IAAT,CAAc,UAAAC,CAAC;AAAA,iBAAIA,CAAC,CAACd,EAAF,KAASW,MAAb;AAAA,SAAf,CAAhB;AACA,2BAAOC,OAAP,wCAA+CD,MAA/C;AACA,YAAOI,IAAP,GAAeH,OAAf,CAAOG,IAAP;AACA,2BAAOA,IAAP,uCAA2CJ,MAA3C;;AACA,wBAAuC,wBAASF,IAAT,EAAehB,MAAf,EAAuBmB,OAAvB,CAAvC;AAAA,YAAOI,KAAP,aAAOA,KAAP;AAAA,YAAcC,OAAd,aAAcA,OAAd;AAAA,YAAuBC,YAAvB,aAAuBA,YAAvB;;AACA,eAAO,IAAIF,KAAJ;AACLhB,UAAAA,EAAE,EAAFA,EADK;AAELe,UAAAA,IAAI,EAAJA;AAFK,WAGFG,YAHE,GAIFC,mBAAmB,CAACrB,aAAD,CAJjB,GAKD,CAACL,MAAM,CAAC2B,SAAR,IAAqBC,sBAAsB,CAACtB,iBAAD,CAL1C,GAMFuB,gBAAgB,CAAC7B,MAAD,EAASwB,OAAT,CANd,GAOFM,kBAAkB,CAACb,cAAD,EAAiBD,IAAjB,EAAuBhB,MAAvB,EAA+BsB,IAA/B,CAPhB,EAAP;AASD,OAhBD,CAgBE,OAAOS,CAAP,EAAe;AACfC,kBAAIC,KAAJ,CAAUF,CAAC,CAACG,OAAZ;;AACA,eAAOC,SAAP;AACD;AACF,KArBO;AARH,GAAP;AA+BD;;AAED,SAAStB,iBAAT,CAA2BT,MAA3B,EAAmC;AACjC,SAAO,oBACLA,MAAM,CAACW,GAAP,CAAW,iBAA2B;AAAA,QAAzBR,EAAyB,SAAzBA,EAAyB;AAAA,QAArBP,MAAqB,SAArBA,MAAqB;AAAA,QAAVoC,IAAU;AACpC,QAAOT,SAAP,GAAmC3B,MAAnC,CAAO2B,SAAP;AAAA,QAAqBU,UAArB,0CAAmCrC,MAAnC;AACA;AAEGO,MAAAA,EAAE,EAAFA,EAFH;AAEOP,MAAAA,MAAM,EAAEqC;AAFf,OAE8BD,IAF9B,2CAKKT,SAAS,CACTW,MADA,CACO,UAAAC,CAAC;AAAA,aAAIA,CAAC,CAACC,KAAN;AAAA,KADR,EAEAzB,GAFA,CAEI,UAAAwB,CAAC,EAAI;AACR;AACEhC,QAAAA,EAAE,YAAKA,EAAL,oBAAiBgC,CAAC,CAACC,KAAF,CAAQC,IAAzB,CADJ;AAEEzC,QAAAA,MAAM;AACJ2B,UAAAA,SAAS,EAAEY;AADP,WAEDF,UAFC;AAGJK,UAAAA,KAAK,YAAK1C,MAAM,CAAC0C,KAAZ,oBAA2BH,CAAC,CAACC,KAAF,CAAQC,IAAnC,CAHD;AAIJE,UAAAA,SAAS,kCAAMN,UAAU,CAACM,SAAjB;AAA4BC,YAAAA,OAAO,EAAE;AAArC;AAJL;AAFR,SAQKR,IARL;AAUD,KAbA,CALL;AAoBD,GAtBD,CADK,CAAP;AAyBD;;AAED,SAASV,mBAAT,CAA6BrB,aAA7B,EAA4C;AAC1C,MAAIA,aAAa,KAAK,UAAtB,EAAkC;AAChC,WAAO;AACLwC,MAAAA,UAAU,EAAE;AACVC,QAAAA,SAAS,EAAE,UADD;AAEVC,QAAAA,aAAa;AAFH;AADP,KAAP;AAMD,GAPD,MAOO,IAAI1C,aAAa,KAAK,aAAtB,EAAqC;AAC1C,WAAO;AACLwC,MAAAA,UAAU,EAAE;AACVC,QAAAA,SAAS,EAAE,kBADD;AAEVC,QAAAA,aAAa,EAAE;AAFL;AADP,KAAP;AAMD;;AAED,SAAO,EAAP;AACD;;AAED,SAASnB,sBAAT,CAAgCtB,iBAAhC,EAAmD;AACjD,MAAM0C,QAAQ,GAAG1C,iBAAiB,IAAIA,iBAAiB,CAAC2C,OAAlB,CAA0BC,OAAhE;AACA,SAAO;AACLC,IAAAA,aAAa,EAAEH,QADV;AAELA,IAAAA,QAAQ,EAARA;AAFK,GAAP;AAID;;AAED,SAASI,QAAT,CAAkBC,MAAlB,EAA0BC,MAA1B,EAAkCC,OAAlC,EAA2C;AACzC,OAAK,IAAMC,SAAX,IAAwBD,OAAxB,EAAiC;AAC/B,QAAME,WAAW,GAAGJ,MAAM,CAACG,SAAD,CAA1B;AACA,QAAME,SAAS,GAAGH,OAAO,CAACC,SAAD,CAAzB;;AACA,QAAIC,WAAW,KAAKtB,SAApB,EAA+B;AAE7B;AACD;;AACD,QAAI,OAAOuB,SAAP,KAAqB,QAAzB,EAAmC;AACjCJ,MAAAA,MAAM,CAACI,SAAD,CAAN,GAAoBD,WAApB;AACD,KAFD,MAEO,IAAI,OAAOC,SAAP,KAAqB,UAAzB,EAAqC;AAC1C,0DAAqBC,MAAM,CAACC,OAAP,CAAeF,SAAS,CAACD,WAAD,CAAxB,EAAuC,CAAvC,CAArB;AAAA,UAAOI,GAAP;AAAA,UAAYC,KAAZ;;AACAR,MAAAA,MAAM,CAACO,GAAD,CAAN,GAAcC,KAAd;AACD,KAHM,MAGA,IAAI,sBAAOJ,SAAP,MAAqB,QAAzB,EAAmC;AAExCN,MAAAA,QAAQ,CAACK,WAAD,EAAcH,MAAd,EAAsBI,SAAtB,CAAR;AACD;AACF;AACF;;AAED,SAAS7B,gBAAT,CAA0B7B,MAA1B,EAAkCuD,OAAlC,EAA2C;AACzC,MAAMQ,MAA2B,GAAG,EAApC;AACAX,EAAAA,QAAQ,CAACpD,MAAD,EAAS+D,MAAT,EAAiBR,OAAjB,CAAR;;AAIA,MAAIQ,MAAM,CAACC,OAAP,IAAkB,CAACD,MAAM,CAACE,YAA9B,EAA4C;AAC1CF,IAAAA,MAAM,CAACE,YAAP,GAAsBF,MAAM,CAACG,YAA7B;AACD;;AAED,OAAK,IAAMC,aAAX,IAA4BC,qBAA5B,EAAyC;AACvC,QAAIC,KAAK,CAACC,OAAN,CAAcP,MAAM,CAACI,aAAD,CAApB,CAAJ,EAA0C;AACxC,UAAMI,KAAK,oCAAOR,MAAM,CAACI,aAAD,CAAb,CAAX;AACA,UAAMK,UAAU,GAAGJ,sBAAYD,aAAZ,CAAnB;AACA,UAAMvB,OAAO,GAAG5C,MAAM,CAAC2C,SAAP,CAAiB6B,UAAjB,CAAhB;AACAD,MAAAA,KAAK,CAAC,CAAD,CAAL,GAAW,8BAAe3B,OAAf,CAAX;AACAmB,MAAAA,MAAM,CAACI,aAAD,CAAN,GAAwBI,KAAxB;AACD;AACF;;AAEDR,EAAAA,MAAM,CAACU,cAAP,GAAwBzE,MAAM,CAAC2C,SAAP,CAAiB+B,QAAjB,GAA4B,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,EAAhB,CAA5B,GAAkD,CAAC,GAAD,EAAM,GAAN,EAAW,EAAX,EAAe,GAAf,CAA1E;AACA,SAAOX,MAAP;AACD;;AAGD,SAASjC,kBAAT,CAA4Bb,cAA5B,EAA4CD,IAA5C,EAAkDhB,MAAlD,EAA0DsB,IAA1D,EAAgE;AAC9D,MAAOqD,UAAP,GACE1D,cADF,CAAO0D,UAAP;AAAA,MAAmBC,UAAnB,GACE3D,cADF,CAAmB2D,UAAnB;AAAA,MAA+BC,SAA/B,GACE5D,cADF,CAA+B4D,SAA/B;AAAA,MAA0CC,SAA1C,GACE7D,cADF,CAA0C6D,SAA1C;AAAA,MAAqDC,gBAArD,GACE9D,cADF,CAAqD8D,gBAArD;AAAA,MAAuEC,gBAAvE,GACE/D,cADF,CAAuE+D,gBAAvE;AAEA,MAAKC,WAAL,GAAiChE,cAAjC,CAAKgE,WAAL;AAAA,MAAkBC,WAAlB,GAAiCjE,cAAjC,CAAkBiE,WAAlB;;AACA,MAAIlE,IAAI,KAAK,WAAb,EAA0B;AACxBiE,IAAAA,WAAW,GAAGJ,SAAd;AACAK,IAAAA,WAAW,GAAGJ,SAAd;AACD;;AACD,MAAOnD,SAAP,GAA+B3B,MAA/B,CAAO2B,SAAP;AAAA,MAAkBgB,SAAlB,GAA+B3C,MAA/B,CAAkB2C,SAAlB;AACA,MAAMoB,MAA2B,GAAG,EAApC;AACA,MAAMoB,cAAc,GAAGxD,SAAS,IAAIA,SAAS,CAACa,KAA9C;;AAEA,MAAIxB,IAAI,KAAK,MAAT,IAAmBA,IAAI,KAAK,SAAhC,EAA2C;AACzC+C,IAAAA,MAAM,CAACqB,cAAP,GAAwBR,UAAxB;;AACA,QAAID,UAAJ,EAAgB;AACd,UAAOU,gBAAP,GAA2BrF,MAAM,CAAC2C,SAAlC,CAAO0C,gBAAP;;AACA,UAAI,CAACC,sBAAYD,gBAAZ,CAAL,EAAoC;AAClCtB,QAAAA,MAAM,CAACwB,aAAP,GAAuB,qCAAsBZ,UAAtB,EAAkCU,gBAAlC,EAAoD/D,IAApD,CAAvB;AACD,OAFD,MAEO;AACLyC,QAAAA,MAAM,CAACyB,cAAP,GAAwB,UAAAnE,CAAC;AAAA,iBAAIA,CAAC,CAACsD,UAAU,CAAClC,IAAZ,CAAL;AAAA,SAAzB;AACD;AACF;AACF,GAVD,MAUO,IAAIkC,UAAJ,EAAgB;AACrB,QAAyBc,WAAzB,GAA2D9C,SAA3D,CAAO0C,gBAAP;AAAA,QAAkDK,KAAlD,GAA2D/C,SAA3D,CAAsCgD,UAAtC;AACA5B,IAAAA,MAAM,CAACG,YAAP,GAAsB,gCACpBS,UADoB,EAEpBC,UAFoB,EAGpB;AAACa,MAAAA,WAAW,EAAXA,WAAD;AAAcC,MAAAA,KAAK,EAALA;AAAd,KAHoB,EAIpB/C,SAAS,CAACC,OAJU,EAKpBtB,IALoB,CAAtB;AAOD;;AAED,MAAIyD,gBAAJ,EAAsB;AACpB,QAAMa,eAAe,GAAG5E,IAAI,KAAK,OAAT,GAAmB2B,SAAS,CAACC,OAA7B,GAAuC,CAA/D;AACA,QAAMA,OAAO,GACXD,SAAS,CAACkD,aAAV,KAA4B1D,SAA5B,GAAwCQ,SAAS,CAACkD,aAAlD,GAAkED,eADpE;AAEA,QAA+BH,YAA/B,GAAuE9C,SAAvE,CAAOmD,sBAAP;AAAA,QAA8DJ,MAA9D,GAAuE/C,SAAvE,CAA4CoD,gBAA5C;AACAhC,IAAAA,MAAM,CAACE,YAAP,GAAsB,gCACpBc,gBADoB,EAEpBC,gBAFoB,EAGpB;AAACS,MAAAA,WAAW,EAAXA,YAAD;AAAcC,MAAAA,KAAK,EAALA;AAAd,KAHoB,EAIpB9C,OAJoB,EAKpBtB,IALoB,CAAtB;AAOD;;AACD,MAAI2D,WAAJ,EAAiB;AACflB,IAAAA,MAAM,CAACiC,YAAP,GAAsB,+BACpBf,WADoB,EAEpBC,WAFoB,EAGpBvC,SAAS,CAACsD,iBAHU,EAIpBtD,SAAS,CAACuD,WAAV,IAAyBvD,SAAS,CAACwD,SAJf,EAKpB7E,IALoB,CAAtB;AAOD;;AACD,MAAIuD,SAAJ,EAAe;AACbd,IAAAA,MAAM,CAACqC,cAAP,GAAwB,+BACtBvB,SADsB,EAEtBC,SAFsB,EAGtBnC,SAAS,CAAC0D,eAHY,EAItB1D,SAAS,CAAC2D,WAAV,IAAyB3D,SAAS,CAACwD,SAJb,EAKtB7E,IALsB,CAAxB;AAOD;;AACD,MAAI6D,cAAJ,EAAoB;AAClBpB,IAAAA,MAAM,CAACwC,OAAP,GAAiB,+BAAgBpB,cAAhB,EAAgC7D,IAAhC,CAAjB;AACAyC,IAAAA,MAAM,CAACyC,SAAP,GAAmB,MAAnB;AACA,QAAMC,MAAM,GAAG1C,MAAM,CAACqC,cAAP,IAAyBzD,SAAS,CAAC8D,MAAlD;AACA1C,IAAAA,MAAM,CAAC2C,kBAAP,GAA4B,0CAA2B/E,SAA3B,EAAsC8E,MAAtC,CAA5B;AACD;;AAED,SAAO1C,MAAP;AACD","sourcesContent":["import GL from '@luma.gl/constants';\nimport {\n AGGREGATION,\n getLayer,\n getColorAccessor,\n getColorValueAccessor,\n getSizeAccessor,\n getTextAccessor,\n getTextPixelOffsetAccessor,\n OPACITY_MAP,\n opacityToAlpha\n} from './layer-map';\nimport {_flatten as flatten, log} from '@deck.gl/core';\nimport {assert} from '../utils';\n\nexport function parseMap(json) {\n const {keplerMapConfig, datasets} = json;\n 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 try {\n const {dataId} = config;\n const dataset = datasets.find(d => d.id === dataId);\n assert(dataset, `No dataset matching dataId: ${dataId}`);\n const {data} = dataset;\n assert(data, `No data loaded for dataId: ${dataId}`);\n const {Layer, propMap, defaultProps} = getLayer(type, config, dataset);\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 } catch (e: any) {\n log.error(e.message)();\n return undefined;\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 === 'function') {\n const [key, value] = Object.entries(targetKey(sourceValue))[0];\n target[key] = value;\n } else if (typeof targetKey === 'object') {\n // Nested definition, recurse down one level (also handles arrays)\n mapProps(sourceValue, target, targetKey);\n }\n }\n}\n\nfunction createStyleProps(config, mapping) {\n const result: Record<string, any> = {};\n mapProps(config, result, mapping);\n\n // Kepler format sometimes omits strokeColor. TODO: remove once we can rely on\n // `strokeColor` always being set when `stroke: true`.\n if (result.stroked && !result.getLineColor) {\n result.getLineColor = result.getFillColor;\n }\n\n for (const colorAccessor in OPACITY_MAP) {\n if (Array.isArray(result[colorAccessor])) {\n const color = [...result[colorAccessor]];\n const opacityKey = OPACITY_MAP[colorAccessor];\n const opacity = config.visConfig[opacityKey];\n color[3] = opacityToAlpha(opacity);\n result[colorAccessor] = color;\n }\n }\n\n result.highlightColor = config.visConfig.enable3d ? [255, 255, 255, 60] : [252, 242, 26, 255];\n return result;\n}\n\n/* eslint-disable complexity, max-statements */\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: Record<string, any> = {};\n const textLabelField = textLabel && textLabel.field;\n\n if (type === 'grid' || type === 'hexagon') {\n result.colorScaleType = colorScale;\n if (colorField) {\n const {colorAggregation} = config.visConfig;\n if (!AGGREGATION[colorAggregation]) {\n result.getColorValue = getColorValueAccessor(colorField, colorAggregation, data);\n } else {\n result.getColorWeight = d => d[colorField.name];\n }\n }\n } else if (colorField) {\n const {colorAggregation: aggregation, colorRange: range} = visConfig;\n result.getFillColor = getColorAccessor(\n colorField,\n colorScale,\n {aggregation, range},\n visConfig.opacity,\n data\n );\n }\n\n if (strokeColorField) {\n const fallbackOpacity = type === 'point' ? visConfig.opacity : 1;\n const opacity =\n visConfig.strokeOpacity !== undefined ? visConfig.strokeOpacity : fallbackOpacity;\n const {strokeColorAggregation: aggregation, strokeColorRange: range} = visConfig;\n result.getLineColor = getColorAccessor(\n strokeColorField,\n strokeColorScale,\n {aggregation, range},\n opacity,\n data\n );\n }\n if (heightField) {\n result.getElevation = getSizeAccessor(\n heightField,\n heightScale,\n visConfig.heightAggregation,\n visConfig.heightRange || visConfig.sizeRange,\n data\n );\n }\n if (sizeField) {\n result.getPointRadius = getSizeAccessor(\n sizeField,\n sizeScale,\n visConfig.sizeAggregation,\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"}
1
+ {"version":3,"sources":["../../../src/api/parseMap.ts"],"names":["parseMap","json","keplerMapConfig","datasets","token","version","config","mapState","mapStyle","visState","layers","layerBlending","interactionConfig","id","title","description","createdAt","updatedAt","initialViewState","extractTextLayers","reverse","map","type","visualChannels","dataId","dataset","find","d","data","Layer","propMap","defaultProps","createBlendingProps","textLabel","createInteractionProps","createStyleProps","createChannelProps","createLoadOptions","e","log","error","message","undefined","rest","configRest","filter","t","field","name","label","visConfig","opacity","parameters","blendFunc","blendEquation","pickable","tooltip","enabled","autoHighlight","mapProps","source","target","mapping","sourceKey","sourceValue","targetKey","Object","entries","key","value","result","stroked","getLineColor","getFillColor","colorAccessor","OPACITY_MAP","Array","isArray","color","opacityKey","highlightColor","enable3d","colorField","colorScale","radiusField","radiusScale","sizeField","sizeScale","strokeColorField","strokeColorScale","heightField","heightScale","textLabelField","colorScaleType","colorAggregation","AGGREGATION","getColorValue","getColorWeight","aggregation","range","colorRange","getPointRadius","sizeAggregation","radiusRange","sizeRange","fallbackOpacity","strokeOpacity","strokeColorAggregation","strokeColorRange","getElevation","heightAggregation","heightRange","getText","pointType","radius","getTextPixelOffset","customMarkers","maxIconSize","getIcon","customMarkersField","customMarkersUrl","customMarkersRange","_subLayerProps","loadOptions","image","imagebitmap","resizeWidth","resizeHeight","resizeQuality","getIconColor","getIconSize","rotationField","getIconAngle","accessToken","fetch","headers","Authorization"],"mappings":"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","sourcesContent":["import GL from '@luma.gl/constants';\nimport {\n AGGREGATION,\n getLayer,\n getColorAccessor,\n getColorValueAccessor,\n getSizeAccessor,\n getTextAccessor,\n getTextPixelOffsetAccessor,\n OPACITY_MAP,\n opacityToAlpha,\n getIconUrlAccessor,\n negateAccessor,\n getMaxMarkerSize\n} from './layer-map';\nimport {_flatten as flatten, log} from '@deck.gl/core';\nimport {assert} from '../utils';\nimport {MapDataset, MapTextSubLayerConfig, VisualChannels} from './types';\n\nexport function parseMap(json) {\n const {keplerMapConfig, datasets, token} = json;\n 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 token,\n layers: extractTextLayers(layers.reverse()).map(({id, type, config, visualChannels}) => {\n try {\n const {dataId} = config;\n const dataset: MapDataset | null = datasets.find(d => d.id === dataId);\n assert(dataset, `No dataset matching dataId: ${dataId}`);\n const {data} = dataset;\n assert(data, `No data loaded for dataId: ${dataId}`);\n const {Layer, propMap, defaultProps} = getLayer(type, config, dataset);\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 ...createLoadOptions(token)\n });\n } catch (e: any) {\n log.error(e.message)();\n return undefined;\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 === 'function') {\n const [key, value] = Object.entries(targetKey(sourceValue))[0];\n target[key] = value;\n } else if (typeof targetKey === 'object') {\n // Nested definition, recurse down one level (also handles arrays)\n mapProps(sourceValue, target, targetKey);\n }\n }\n}\n\nfunction createStyleProps(config: MapTextSubLayerConfig, mapping) {\n const result: Record<string, any> = {};\n mapProps(config, result, mapping);\n\n // Kepler format sometimes omits strokeColor. TODO: remove once we can rely on\n // `strokeColor` always being set when `stroke: true`.\n if (result.stroked && !result.getLineColor) {\n result.getLineColor = result.getFillColor;\n }\n\n for (const colorAccessor in OPACITY_MAP) {\n if (Array.isArray(result[colorAccessor])) {\n const color = [...result[colorAccessor]];\n const opacityKey = OPACITY_MAP[colorAccessor];\n const opacity = config.visConfig[opacityKey];\n color[3] = opacityToAlpha(opacity);\n result[colorAccessor] = color;\n }\n }\n\n result.highlightColor = config.visConfig.enable3d ? [255, 255, 255, 60] : [252, 242, 26, 255];\n return result;\n}\n\n/* eslint-disable complexity, max-statements */\nfunction createChannelProps(\n visualChannels: VisualChannels,\n type: string,\n config: MapTextSubLayerConfig,\n data\n) {\n const {\n colorField,\n colorScale,\n radiusField,\n radiusScale,\n sizeField,\n sizeScale,\n strokeColorField,\n 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: Record<string, any> = {};\n const textLabelField = textLabel && textLabel.field;\n\n if (type === 'grid' || type === 'hexagon') {\n result.colorScaleType = colorScale;\n if (colorField) {\n const {colorAggregation} = config.visConfig;\n if (!AGGREGATION[colorAggregation]) {\n result.getColorValue = getColorValueAccessor(colorField, colorAggregation, data);\n } else {\n result.getColorWeight = d => d[colorField.name];\n }\n }\n } else if (colorField) {\n const {colorAggregation: aggregation, colorRange: range} = visConfig;\n result.getFillColor = getColorAccessor(\n colorField,\n // @ts-ignore\n colorScale,\n {aggregation, range},\n visConfig.opacity,\n data\n );\n }\n\n if (radiusField || sizeField) {\n result.getPointRadius = getSizeAccessor(\n // @ts-ignore\n radiusField || sizeField,\n // @ts-ignore\n radiusScale || sizeScale,\n visConfig.sizeAggregation,\n visConfig.radiusRange || visConfig.sizeRange,\n data\n );\n }\n\n if (strokeColorField) {\n const fallbackOpacity = type === 'point' ? visConfig.opacity : 1;\n const opacity =\n visConfig.strokeOpacity !== undefined ? visConfig.strokeOpacity : fallbackOpacity;\n const {strokeColorAggregation: aggregation, strokeColorRange: range} = visConfig;\n result.getLineColor = getColorAccessor(\n strokeColorField,\n // @ts-ignore\n strokeColorScale,\n // @ts-ignore\n {aggregation, range},\n opacity,\n data\n );\n }\n\n if (heightField) {\n result.getElevation = getSizeAccessor(\n heightField,\n // @ts-ignore\n heightScale,\n visConfig.heightAggregation,\n visConfig.heightRange || visConfig.sizeRange,\n data\n );\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 } else if (visConfig.customMarkers) {\n const maxIconSize = getMaxMarkerSize(visConfig, visualChannels);\n const {getPointRadius, getFillColor} = result;\n result.pointType = 'icon';\n result.getIcon = getIconUrlAccessor(\n visualChannels.customMarkersField,\n visConfig.customMarkersUrl,\n visConfig.customMarkersRange,\n maxIconSize,\n data\n );\n result._subLayerProps = {\n 'points-icon': {\n loadOptions: {\n image: {\n type: 'imagebitmap'\n },\n imagebitmap: {\n resizeWidth: maxIconSize,\n resizeHeight: maxIconSize,\n resizeQuality: 'high'\n }\n }\n }\n };\n\n if (getFillColor) {\n result.getIconColor = getFillColor;\n }\n\n if (getPointRadius) {\n result.getIconSize = getPointRadius;\n }\n\n if (visualChannels.rotationField) {\n result.getIconAngle = negateAccessor(\n getSizeAccessor(visualChannels.rotationField, undefined, null, undefined, data)\n );\n }\n }\n\n return result;\n}\n\nfunction createLoadOptions(accessToken: string) {\n return {\n loadOptions: {fetch: {headers: {Authorization: `Bearer ${accessToken}`}}}\n };\n}\n"],"file":"parseMap.js"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[],"file":"types.js"}
package/dist/es5/index.js CHANGED
@@ -41,24 +41,6 @@ Object.defineProperty(exports, "_QuadbinTileLayer", {
41
41
  return _quadbinTileLayer.default;
42
42
  }
43
43
  });
44
- Object.defineProperty(exports, "_tileToQuadbin", {
45
- enumerable: true,
46
- get: function get() {
47
- return _quadbinUtils.tileToQuadbin;
48
- }
49
- });
50
- Object.defineProperty(exports, "_quadbinToTile", {
51
- enumerable: true,
52
- get: function get() {
53
- return _quadbinUtils.quadbinToTile;
54
- }
55
- });
56
- Object.defineProperty(exports, "_quadbinZoom", {
57
- enumerable: true,
58
- get: function get() {
59
- return _quadbinUtils.quadbinZoom;
60
- }
61
- });
62
44
  Object.defineProperty(exports, "BASEMAP", {
63
45
  enumerable: true,
64
46
  get: function get() {
@@ -142,8 +124,6 @@ var _h3TileLayer = _interopRequireDefault(require("./layers/h3-tile-layer"));
142
124
 
143
125
  var _quadbinTileLayer = _interopRequireDefault(require("./layers/quadbin-tile-layer"));
144
126
 
145
- var _quadbinUtils = require("./layers/quadbin-utils");
146
-
147
127
  var _basemap = _interopRequireDefault(require("./basemap"));
148
128
 
149
129
  var _colorBinsStyle = _interopRequireDefault(require("./style/color-bins-style"));
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAKA;;AACA;;AACA;;AACA;;AACA","sourcesContent":["export {getDefaultCredentials, setDefaultCredentials} from './config';\nexport {default as CartoLayer} from './layers/carto-layer';\nexport {default as _CartoTileLayer} from './layers/carto-tile-layer';\nexport {default as _H3TileLayer} from './layers/h3-tile-layer';\nexport {default as _QuadbinTileLayer} from './layers/quadbin-tile-layer';\nexport {\n tileToQuadbin as _tileToQuadbin,\n quadbinToTile as _quadbinToTile,\n quadbinZoom as _quadbinZoom\n} from './layers/quadbin-utils';\nexport {default as BASEMAP} from './basemap';\nexport {default as colorBins} from './style/color-bins-style';\nexport {default as colorCategories} from './style/color-categories-style';\nexport {default as colorContinuous} from './style/color-continuous-style';\nexport {\n FORMATS,\n TILE_FORMATS,\n MAP_TYPES,\n API_VERSIONS,\n fetchLayerData,\n fetchMap,\n getDataV2 as _getDataV2,\n mapInstantiation as _mapInstantiation\n} from './api';\nexport type {QueryParameters} from './api';\nexport type {CartoLayerProps} from './layers/carto-layer';\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA","sourcesContent":["export {getDefaultCredentials, setDefaultCredentials} from './config';\nexport {default as CartoLayer} from './layers/carto-layer';\nexport {default as _CartoTileLayer} from './layers/carto-tile-layer';\nexport {default as _H3TileLayer} from './layers/h3-tile-layer';\nexport {default as _QuadbinTileLayer} from './layers/quadbin-tile-layer';\nexport {default as BASEMAP} from './basemap';\nexport {default as colorBins} from './style/color-bins-style';\nexport {default as colorCategories} from './style/color-categories-style';\nexport {default as colorContinuous} from './style/color-continuous-style';\nexport {\n FORMATS,\n TILE_FORMATS,\n MAP_TYPES,\n API_VERSIONS,\n fetchLayerData,\n fetchMap,\n getDataV2 as _getDataV2,\n mapInstantiation as _mapInstantiation\n} from './api';\nexport type {QueryParameters} from './api';\nexport type {CartoLayerProps} from './layers/carto-layer';\n"],"file":"index.js"}
@@ -291,9 +291,25 @@ var CartoLayer = function (_CompositeLayer) {
291
291
  key: "renderLayers",
292
292
  value: function renderLayers() {
293
293
  (0, _utils.assert)(this.state);
294
- var data = this.state.data;
294
+ var _this$state2 = this.state,
295
+ apiVersion = _this$state2.apiVersion,
296
+ data = _this$state2.data;
295
297
  if (!data) return null;
296
- var updateTriggers = this.props.updateTriggers;
298
+ var _this$props4 = this.props,
299
+ credentials = _this$props4.credentials,
300
+ updateTriggers = _this$props4.updateTriggers;
301
+ var loadOptions = {};
302
+
303
+ if (apiVersion === _api.API_VERSIONS.V3) {
304
+ var localConfig = _objectSpread(_objectSpread({}, (0, _config.getDefaultCredentials)()), credentials);
305
+
306
+ var accessToken = localConfig.accessToken;
307
+ loadOptions.fetch = {
308
+ headers: {
309
+ Authorization: "Bearer ".concat(accessToken)
310
+ }
311
+ };
312
+ }
297
313
 
298
314
  var _this$_getSubLayerAnd = this._getSubLayerAndProps(),
299
315
  _this$_getSubLayerAnd2 = (0, _slicedToArray2.default)(_this$_getSubLayerAnd, 2),
@@ -303,6 +319,7 @@ var CartoLayer = function (_CompositeLayer) {
303
319
  return new layer(props, this.getSubLayerProps({
304
320
  id: "carto-".concat(layer.layerName),
305
321
  data: data,
322
+ loadOptions: loadOptions,
306
323
  updateTriggers: updateTriggers
307
324
  }));
308
325
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/layers/carto-layer.ts"],"names":["defaultProps","data","type","onDataLoad","value","compare","onDataError","optional","uniqueIdProperty","credentials","connection","format","formatTiles","clientId","geoColumn","columns","headers","aggregationExp","aggregationResLevel","queryParameters","CartoLayer","state","apiVersion","getSubLayers","length","props","localCreds","log","assert","Object","values","API_VERSIONS","includes","V1","V2","MAP_TYPES","QUERY","TILESET","V3","COLUMNS_SUPPORT","join","GEO_COLUMN_SUPPORT","Array","isArray","oldProps","changeFlags","_checkProps","shouldUpdateData","dataChanged","JSON","stringify","setState","_updateData","source","rest","localConfig","result","FORMATS","TILEJSON","propName","layer","_notUsed","propsNoData","MVTLayer","tileUrl","URL","tiles","searchParams","get","scheme","updateTriggers","_getSubLayerAndProps","getSubLayerProps","id","layerName","CompositeLayer"],"mappings":"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","sourcesContent":["import {\n CompositeLayer,\n CompositeLayerProps,\n Layer,\n LayerProps,\n log,\n UpdateParameters\n} from '@deck.gl/core';\n\nimport {MVTLayer} from '@deck.gl/geo-layers';\nimport {fetchLayerData, getDataV2, API_VERSIONS} from '../api';\nimport {layerFromTileDataset} from '../api/layer-map';\nimport {\n COLUMNS_SUPPORT,\n FORMATS,\n GEO_COLUMN_SUPPORT,\n MapType,\n MAP_TYPES,\n TileFormat,\n QueryParameters\n} from '../api/maps-api-common';\nimport {\n ClassicCredentials,\n CloudNativeCredentials,\n Credentials,\n getDefaultCredentials\n} from '../config';\nimport {FetchLayerDataResult, Headers} from '../api/maps-v3-client';\nimport {assert} from '../utils';\n\nconst defaultProps = {\n // (String, required): data resource to load. table name, sql query or tileset name.\n data: null,\n // (Enum (MAP_TYPES), required)\n type: null,\n onDataLoad: {type: 'function', value: data => {}, compare: false},\n onDataError: {type: 'function', value: null, compare: false, optional: true},\n uniqueIdProperty: 'cartodb_id',\n\n // override carto credentials for the layer, set to null to read from default\n credentials: null,\n\n /*********************/\n /* API v3 PARAMETERS */\n /**********************/\n // (String, required): connection name at CARTO platform\n connection: null,\n\n // (String, optional): format of data\n format: null,\n\n // (String, optional): force format of data for tiles\n formatTiles: null,\n\n // (String, optional): clientId identifier used for internal tracing, place here a string to identify the client who is doing the request.\n clientId: null,\n\n // (String, optional): name of the `geo_column` in the CARTO platform. Use this override the default column ('geom'), from which the geometry information should be fetched.\n geoColumn: null,\n\n // (Array<String>, optional): names of columns to fetch. By default, all columns are fetched.\n columns: {type: 'array', value: null},\n\n // (Headers, optional): Custom headers to include in the map instantiation request.\n headers: {type: 'object', value: {}, optional: true},\n\n // (String, optional): aggregation SQL expression. Only used for spatial index datasets\n aggregationExp: null,\n\n // (Number, optional): aggregation resolution level. Only used for spatial index datasets, defaults to 6 for quadbins, 4 for h3\n aggregationResLevel: null,\n\n // (QueryParameters, optional): query parameters to be sent to the server.\n queryParameters: null\n};\n\n/** All properties supported by CartoLayer. */\nexport type CartoLayerProps<DataT = any> = _CartoLayerProps & CompositeLayerProps<DataT>;\n\n/** Properties added by CartoLayer. */\ntype _CartoLayerProps = {\n /**\n * Either a SQL query or a name of dataset/tileset.\n */\n data: string;\n\n /**\n * Data type.\n *\n * Possible values are:\n * * `MAP_TYPES.QUERY`, if data is a SQL query.\n * * `MAP_TYPES.TILESET`, if data is a tileset name.\n * * `MAP_TYPES.TABLE`, if data is a dataset name. Only supported with API v3.\n */\n type: MapType;\n\n /**\n * Name of the connection registered in the CARTO workspace.\n *\n * Required when apiVersion is `API_VERSIONS.V3`.\n */\n connection?: string;\n\n /**\n * Use to override the default tile data format.\n *\n * Only supported when apiVersion is `API_VERSIONS.V3`.\n *\n * Possible values are: `TILE_FORMATS.BINARY`, `TILE_FORMATS.GEOJSON` and `TILE_FORMATS.MVT`.\n */\n formatTiles?: TileFormat;\n\n /**\n * Name of the geo_column in the CARTO platform.\n *\n * Use this override the default column (`'geom'`), from which the geometry information should be fetched.\n *\n * Only supported when apiVersion is `API_VERSIONS.V3` and type is `MAP_TYPES.TABLE`.\n */\n geoColumn?: string;\n\n /**\n * Names of columns to fetch.\n *\n * By default, all columns are fetched\n *\n * Only supported when apiVersion is `API_VERSIONS.V3` and type is `MAP_TYPES.TABLE`.\n */\n columns?: string[];\n\n /**\n * A string pointing to a unique attribute at the result of the query.\n *\n * A unique attribute is needed for highlighting with vector tiles when a feature is split across two or more tiles.\n */\n uniqueIdProperty?: string;\n\n /**\n * Optional. Overrides the configuration to connect with CARTO.\n *\n * @see Credentials\n */\n credentials?: Credentials;\n\n /**\n * Called when the request to the CARTO Maps API failed.\n *\n * By default the Error is thrown.\n */\n onDataError?: (err: unknown) => void;\n\n clientId?: string;\n\n /** Custom headers to include in the map instantiation request **/\n headers?: Headers;\n\n /** Aggregation SQL expression. Only used for spatial index datasets **/\n aggregationExp?: string;\n\n /** Aggregation resolution level. Only used for spatial index datasets, defaults to 6 for quadbins, 4 for h3. **/\n aggregationResLevel?: number;\n\n /** Query parameters to be sent to the server. **/\n queryParameters?: QueryParameters;\n};\n\nexport default class CartoLayer<ExtraProps = {}> extends CompositeLayer<\n Required<_CartoLayerProps> & ExtraProps\n> {\n static layerName = 'CartoLayer';\n static defaultProps = defaultProps as any;\n\n initializeState(): void {\n this.state = {\n data: null,\n apiVersion: null\n };\n }\n\n get isLoaded(): boolean {\n return this.getSubLayers().length > 0 && super.isLoaded;\n }\n\n _checkProps(props: CartoLayerProps): void {\n const {type, credentials, connection, geoColumn, columns} = props;\n const localCreds = {...getDefaultCredentials(), ...credentials};\n const {apiVersion} = localCreds;\n\n log.assert(\n Object.values(API_VERSIONS).includes(apiVersion),\n `Invalid apiVersion ${apiVersion}. Use API_VERSIONS enum.`\n );\n\n if (apiVersion === API_VERSIONS.V1 || apiVersion === API_VERSIONS.V2) {\n log.assert(\n type === MAP_TYPES.QUERY || type === MAP_TYPES.TILESET,\n `Invalid type ${type}. Use type MAP_TYPES.QUERY or MAP_TYPES.TILESET for apiVersion ${apiVersion}`\n );\n log.assert(!connection, `Connection prop is not supported for apiVersion ${apiVersion}`);\n log.assert(!geoColumn, `geoColumn prop is not supported for apiVersion ${apiVersion}`);\n log.assert(!columns, `columns prop is not supported for apiVersion ${apiVersion}`);\n } else if (apiVersion === API_VERSIONS.V3) {\n log.assert(connection, 'Missing mandatory connection parameter');\n log.assert(\n Object.values(MAP_TYPES).includes(type),\n `Invalid type ${type}. Use MAP_TYPES enum.`\n );\n if (!COLUMNS_SUPPORT.includes(type)) {\n log.assert(!columns, `columns prop is only supported for types: ${COLUMNS_SUPPORT.join()}`);\n }\n if (!GEO_COLUMN_SUPPORT.includes(type)) {\n log.assert(\n !geoColumn,\n `geoColumn prop is only supported for types: ${GEO_COLUMN_SUPPORT.join()}`\n );\n }\n if (columns) {\n log.assert(Array.isArray(columns), 'columns prop must be an Array');\n }\n }\n }\n\n updateState({props, oldProps, changeFlags}: UpdateParameters<this>) {\n this._checkProps(props);\n const shouldUpdateData =\n changeFlags.dataChanged ||\n props.aggregationExp !== oldProps.aggregationExp ||\n props.aggregationResLevel !== oldProps.aggregationResLevel ||\n props.connection !== oldProps.connection ||\n props.geoColumn !== oldProps.geoColumn ||\n props.formatTiles !== oldProps.formatTiles ||\n props.type !== oldProps.type ||\n JSON.stringify(props.columns) !== JSON.stringify(oldProps.columns) ||\n JSON.stringify(props.credentials) !== JSON.stringify(oldProps.credentials) ||\n JSON.stringify(props.queryParameters) !== JSON.stringify(oldProps.queryParameters);\n\n if (shouldUpdateData) {\n this.setState({data: null, apiVersion: null});\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._updateData();\n }\n }\n\n async _updateData(): Promise<void> {\n try {\n const {type, data: source, credentials, connection, ...rest} = this.props;\n const localConfig = {...getDefaultCredentials(), ...credentials};\n const {apiVersion} = localConfig;\n\n let result: Partial<FetchLayerDataResult>;\n if (apiVersion === API_VERSIONS.V1 || apiVersion === API_VERSIONS.V2) {\n result = {\n data: await getDataV2({type, source, credentials: credentials as ClassicCredentials})\n };\n } else {\n result = await fetchLayerData({\n type,\n source,\n credentials: credentials as CloudNativeCredentials,\n connection,\n ...rest,\n // CartoLayer only supports tiled output from v8.8, force data format\n format: FORMATS.TILEJSON\n });\n }\n\n this.setState({...result, apiVersion});\n\n this.props.onDataLoad?.(result.data, {\n propName: 'data',\n layer: this\n });\n } catch (err) {\n if (this.props.onDataError) {\n this.props.onDataError(err as Error);\n } else {\n throw err;\n }\n }\n }\n\n _getSubLayerAndProps(): [any, LayerProps] {\n assert(this.state);\n\n const {data, apiVersion} = this.state;\n\n const {uniqueIdProperty} = defaultProps;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const {data: _notUsed, ...propsNoData} = this.props;\n // @ts-expect-error 'uniqueIdProperty' is specified more than once, so this usage will be overwritten.\n const props = {uniqueIdProperty, ...propsNoData};\n\n if (apiVersion === API_VERSIONS.V1 || apiVersion === API_VERSIONS.V2) {\n return [MVTLayer, props];\n }\n\n /* global URL */\n const tileUrl = new URL(data.tiles[0]);\n props.formatTiles =\n props.formatTiles || (tileUrl.searchParams.get('formatTiles') as TileFormat);\n\n return [layerFromTileDataset(props.formatTiles, data.scheme), props];\n }\n\n renderLayers(): Layer | null {\n assert(this.state);\n\n const {data} = this.state;\n\n if (!data) return null;\n\n const {updateTriggers} = this.props;\n\n const [layer, props] = this._getSubLayerAndProps();\n\n // eslint-disable-next-line new-cap\n return new layer(\n props,\n this.getSubLayerProps({\n id: `carto-${layer.layerName}`,\n data,\n updateTriggers\n })\n );\n }\n}\n"],"file":"carto-layer.js"}
1
+ {"version":3,"sources":["../../../src/layers/carto-layer.ts"],"names":["defaultProps","data","type","onDataLoad","value","compare","onDataError","optional","uniqueIdProperty","credentials","connection","format","formatTiles","clientId","geoColumn","columns","headers","aggregationExp","aggregationResLevel","queryParameters","CartoLayer","state","apiVersion","getSubLayers","length","props","localCreds","log","assert","Object","values","API_VERSIONS","includes","V1","V2","MAP_TYPES","QUERY","TILESET","V3","COLUMNS_SUPPORT","join","GEO_COLUMN_SUPPORT","Array","isArray","oldProps","changeFlags","_checkProps","shouldUpdateData","dataChanged","JSON","stringify","setState","_updateData","source","rest","localConfig","result","FORMATS","TILEJSON","propName","layer","_notUsed","propsNoData","MVTLayer","tileUrl","URL","tiles","searchParams","get","scheme","updateTriggers","loadOptions","accessToken","fetch","Authorization","_getSubLayerAndProps","getSubLayerProps","id","layerName","CompositeLayer"],"mappings":"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","sourcesContent":["import {\n CompositeLayer,\n CompositeLayerProps,\n Layer,\n LayerProps,\n log,\n UpdateParameters\n} from '@deck.gl/core';\n\nimport {MVTLayer} from '@deck.gl/geo-layers';\nimport {fetchLayerData, getDataV2, API_VERSIONS} from '../api';\nimport {layerFromTileDataset} from '../api/layer-map';\nimport {\n COLUMNS_SUPPORT,\n FORMATS,\n GEO_COLUMN_SUPPORT,\n MapType,\n MAP_TYPES,\n TileFormat,\n QueryParameters\n} from '../api/maps-api-common';\nimport {\n ClassicCredentials,\n CloudNativeCredentials,\n Credentials,\n getDefaultCredentials\n} from '../config';\nimport {FetchLayerDataResult, Headers} from '../api/maps-v3-client';\nimport {assert} from '../utils';\n\nconst defaultProps = {\n // (String, required): data resource to load. table name, sql query or tileset name.\n data: null,\n // (Enum (MAP_TYPES), required)\n type: null,\n onDataLoad: {type: 'function', value: data => {}, compare: false},\n onDataError: {type: 'function', value: null, compare: false, optional: true},\n uniqueIdProperty: 'cartodb_id',\n\n // override carto credentials for the layer, set to null to read from default\n credentials: null,\n\n /*********************/\n /* API v3 PARAMETERS */\n /**********************/\n // (String, required): connection name at CARTO platform\n connection: null,\n\n // (String, optional): format of data\n format: null,\n\n // (String, optional): force format of data for tiles\n formatTiles: null,\n\n // (String, optional): clientId identifier used for internal tracing, place here a string to identify the client who is doing the request.\n clientId: null,\n\n // (String, optional): name of the `geo_column` in the CARTO platform. Use this override the default column ('geom'), from which the geometry information should be fetched.\n geoColumn: null,\n\n // (Array<String>, optional): names of columns to fetch. By default, all columns are fetched.\n columns: {type: 'array', value: null},\n\n // (Headers, optional): Custom headers to include in the map instantiation request.\n headers: {type: 'object', value: {}, optional: true},\n\n // (String, optional): aggregation SQL expression. Only used for spatial index datasets\n aggregationExp: null,\n\n // (Number, optional): aggregation resolution level. Only used for spatial index datasets, defaults to 6 for quadbins, 4 for h3\n aggregationResLevel: null,\n\n // (QueryParameters, optional): query parameters to be sent to the server.\n queryParameters: null\n};\n\n/** All properties supported by CartoLayer. */\nexport type CartoLayerProps<DataT = any> = _CartoLayerProps & CompositeLayerProps<DataT>;\n\n/** Properties added by CartoLayer. */\ntype _CartoLayerProps = {\n /**\n * Either a SQL query or a name of dataset/tileset.\n */\n data: string;\n\n /**\n * Data type.\n *\n * Possible values are:\n * * `MAP_TYPES.QUERY`, if data is a SQL query.\n * * `MAP_TYPES.TILESET`, if data is a tileset name.\n * * `MAP_TYPES.TABLE`, if data is a dataset name. Only supported with API v3.\n */\n type: MapType;\n\n /**\n * Name of the connection registered in the CARTO workspace.\n *\n * Required when apiVersion is `API_VERSIONS.V3`.\n */\n connection?: string;\n\n /**\n * Use to override the default tile data format.\n *\n * Only supported when apiVersion is `API_VERSIONS.V3`.\n *\n * Possible values are: `TILE_FORMATS.BINARY`, `TILE_FORMATS.GEOJSON` and `TILE_FORMATS.MVT`.\n */\n formatTiles?: TileFormat;\n\n /**\n * Name of the geo_column in the CARTO platform.\n *\n * Use this override the default column (`'geom'`), from which the geometry information should be fetched.\n *\n * Only supported when apiVersion is `API_VERSIONS.V3` and type is `MAP_TYPES.TABLE`.\n */\n geoColumn?: string;\n\n /**\n * Names of columns to fetch.\n *\n * By default, all columns are fetched\n *\n * Only supported when apiVersion is `API_VERSIONS.V3` and type is `MAP_TYPES.TABLE`.\n */\n columns?: string[];\n\n /**\n * A string pointing to a unique attribute at the result of the query.\n *\n * A unique attribute is needed for highlighting with vector tiles when a feature is split across two or more tiles.\n */\n uniqueIdProperty?: string;\n\n /**\n * Optional. Overrides the configuration to connect with CARTO.\n *\n * @see Credentials\n */\n credentials?: Credentials;\n\n /**\n * Called when the request to the CARTO Maps API failed.\n *\n * By default the Error is thrown.\n */\n onDataError?: (err: unknown) => void;\n\n clientId?: string;\n\n /** Custom headers to include in the map instantiation request **/\n headers?: Headers;\n\n /** Aggregation SQL expression. Only used for spatial index datasets **/\n aggregationExp?: string;\n\n /** Aggregation resolution level. Only used for spatial index datasets, defaults to 6 for quadbins, 4 for h3. **/\n aggregationResLevel?: number;\n\n /** Query parameters to be sent to the server. **/\n queryParameters?: QueryParameters;\n};\n\nexport default class CartoLayer<ExtraProps = {}> extends CompositeLayer<\n Required<_CartoLayerProps> & ExtraProps\n> {\n static layerName = 'CartoLayer';\n static defaultProps = defaultProps as any;\n\n initializeState(): void {\n this.state = {\n data: null,\n apiVersion: null\n };\n }\n\n get isLoaded(): boolean {\n return this.getSubLayers().length > 0 && super.isLoaded;\n }\n\n _checkProps(props: CartoLayerProps): void {\n const {type, credentials, connection, geoColumn, columns} = props;\n const localCreds = {...getDefaultCredentials(), ...credentials};\n const {apiVersion} = localCreds;\n\n log.assert(\n Object.values(API_VERSIONS).includes(apiVersion),\n `Invalid apiVersion ${apiVersion}. Use API_VERSIONS enum.`\n );\n\n if (apiVersion === API_VERSIONS.V1 || apiVersion === API_VERSIONS.V2) {\n log.assert(\n type === MAP_TYPES.QUERY || type === MAP_TYPES.TILESET,\n `Invalid type ${type}. Use type MAP_TYPES.QUERY or MAP_TYPES.TILESET for apiVersion ${apiVersion}`\n );\n log.assert(!connection, `Connection prop is not supported for apiVersion ${apiVersion}`);\n log.assert(!geoColumn, `geoColumn prop is not supported for apiVersion ${apiVersion}`);\n log.assert(!columns, `columns prop is not supported for apiVersion ${apiVersion}`);\n } else if (apiVersion === API_VERSIONS.V3) {\n log.assert(connection, 'Missing mandatory connection parameter');\n log.assert(\n Object.values(MAP_TYPES).includes(type),\n `Invalid type ${type}. Use MAP_TYPES enum.`\n );\n if (!COLUMNS_SUPPORT.includes(type)) {\n log.assert(!columns, `columns prop is only supported for types: ${COLUMNS_SUPPORT.join()}`);\n }\n if (!GEO_COLUMN_SUPPORT.includes(type)) {\n log.assert(\n !geoColumn,\n `geoColumn prop is only supported for types: ${GEO_COLUMN_SUPPORT.join()}`\n );\n }\n if (columns) {\n log.assert(Array.isArray(columns), 'columns prop must be an Array');\n }\n }\n }\n\n updateState({props, oldProps, changeFlags}: UpdateParameters<this>) {\n this._checkProps(props);\n const shouldUpdateData =\n changeFlags.dataChanged ||\n props.aggregationExp !== oldProps.aggregationExp ||\n props.aggregationResLevel !== oldProps.aggregationResLevel ||\n props.connection !== oldProps.connection ||\n props.geoColumn !== oldProps.geoColumn ||\n props.formatTiles !== oldProps.formatTiles ||\n props.type !== oldProps.type ||\n JSON.stringify(props.columns) !== JSON.stringify(oldProps.columns) ||\n JSON.stringify(props.credentials) !== JSON.stringify(oldProps.credentials) ||\n JSON.stringify(props.queryParameters) !== JSON.stringify(oldProps.queryParameters);\n\n if (shouldUpdateData) {\n this.setState({data: null, apiVersion: null});\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._updateData();\n }\n }\n\n async _updateData(): Promise<void> {\n try {\n const {type, data: source, credentials, connection, ...rest} = this.props;\n const localConfig = {...getDefaultCredentials(), ...credentials};\n const {apiVersion} = localConfig;\n\n let result: Partial<FetchLayerDataResult>;\n if (apiVersion === API_VERSIONS.V1 || apiVersion === API_VERSIONS.V2) {\n result = {\n data: await getDataV2({type, source, credentials: credentials as ClassicCredentials})\n };\n } else {\n result = await fetchLayerData({\n type,\n source,\n credentials: credentials as CloudNativeCredentials,\n connection,\n ...rest,\n // CartoLayer only supports tiled output from v8.8, force data format\n format: FORMATS.TILEJSON\n });\n }\n\n this.setState({...result, apiVersion});\n\n this.props.onDataLoad?.(result.data, {\n propName: 'data',\n layer: this\n });\n } catch (err) {\n if (this.props.onDataError) {\n this.props.onDataError(err as Error);\n } else {\n throw err;\n }\n }\n }\n\n _getSubLayerAndProps(): [any, LayerProps] {\n assert(this.state);\n\n const {data, apiVersion} = this.state;\n\n const {uniqueIdProperty} = defaultProps;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const {data: _notUsed, ...propsNoData} = this.props;\n // @ts-expect-error 'uniqueIdProperty' is specified more than once, so this usage will be overwritten.\n const props = {uniqueIdProperty, ...propsNoData};\n\n if (apiVersion === API_VERSIONS.V1 || apiVersion === API_VERSIONS.V2) {\n return [MVTLayer, props];\n }\n\n /* global URL */\n const tileUrl = new URL(data.tiles[0]);\n props.formatTiles =\n props.formatTiles || (tileUrl.searchParams.get('formatTiles') as TileFormat);\n\n return [layerFromTileDataset(props.formatTiles, data.scheme), props];\n }\n\n renderLayers(): Layer | null {\n assert(this.state);\n\n const {apiVersion, data} = this.state;\n\n if (!data) return null;\n\n const {credentials, updateTriggers} = this.props;\n const loadOptions: any = {};\n if (apiVersion === API_VERSIONS.V3) {\n const localConfig = {...getDefaultCredentials(), ...credentials} as CloudNativeCredentials;\n const {accessToken} = localConfig;\n loadOptions.fetch = {headers: {Authorization: `Bearer ${accessToken}`}};\n }\n\n const [layer, props] = this._getSubLayerAndProps();\n\n // eslint-disable-next-line new-cap\n return new layer(\n props,\n this.getSubLayerProps({\n id: `carto-${layer.layerName}`,\n data,\n loadOptions,\n updateTriggers\n })\n );\n }\n}\n"],"file":"carto-layer.js"}
@@ -7,27 +7,25 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
 
10
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
-
12
10
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
13
11
 
14
12
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
15
13
 
16
14
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
17
15
 
16
+ var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
17
+
18
18
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
19
19
 
20
20
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
21
21
 
22
22
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
23
23
 
24
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
25
-
26
24
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
27
25
 
28
- var _pbf = _interopRequireDefault(require("pbf"));
26
+ var _core = require("@loaders.gl/core");
29
27
 
30
- var _core = require("@deck.gl/core");
28
+ var _cartoVectorTileLoader = _interopRequireDefault(require("./schema/carto-vector-tile-loader"));
31
29
 
32
30
  var _extensions = require("@deck.gl/extensions");
33
31
 
@@ -37,8 +35,6 @@ var _layers = require("@deck.gl/layers");
37
35
 
38
36
  var _gis = require("@loaders.gl/gis");
39
37
 
40
- var _cartoTile = require("./schema/carto-tile");
41
-
42
38
  var _mapsApiCommon = require("../api/maps-api-common");
43
39
 
44
40
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
@@ -49,99 +45,11 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
49
45
 
50
46
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
51
47
 
52
- function parseJSON(arrayBuffer) {
53
- return JSON.parse(new TextDecoder().decode(arrayBuffer));
54
- }
55
-
56
- function parsePbf(buffer) {
57
- var pbf = new _pbf.default(buffer);
58
-
59
- var tile = _cartoTile.TileReader.read(pbf);
60
-
61
- return tile;
62
- }
63
-
64
- function unpackProperties(properties) {
65
- if (!properties || !properties.length) {
66
- return [];
67
- }
68
-
69
- return properties.map(function (item) {
70
- var currentRecord = {};
71
- item.data.forEach(function (_ref) {
72
- var key = _ref.key,
73
- value = _ref.value;
74
- currentRecord[key] = value;
75
- });
76
- return currentRecord;
77
- });
78
- }
79
-
80
- function parseCartoTile(arrayBuffer, options) {
81
- if (!arrayBuffer) return null;
82
- var formatTiles = options && options.cartoTile && options.cartoTile.formatTiles;
83
- if (formatTiles === _mapsApiCommon.TILE_FORMATS.GEOJSON) return (0, _gis.geojsonToBinary)(parseJSON(arrayBuffer).features);
84
- var tile = parsePbf(arrayBuffer);
85
- var points = tile.points,
86
- lines = tile.lines,
87
- polygons = tile.polygons;
88
- var data = {
89
- points: _objectSpread(_objectSpread({}, points), {}, {
90
- properties: unpackProperties(points.properties)
91
- }),
92
- lines: _objectSpread(_objectSpread({}, lines), {}, {
93
- properties: unpackProperties(lines.properties)
94
- }),
95
- polygons: _objectSpread(_objectSpread({}, polygons), {}, {
96
- properties: unpackProperties(polygons.properties)
97
- })
98
- };
99
- return data;
100
- }
101
-
48
+ (0, _core.registerLoaders)([_cartoVectorTileLoader.default]);
102
49
  var defaultTileFormat = _mapsApiCommon.TILE_FORMATS.BINARY;
103
- var CartoTileLoader = {
104
- name: 'CARTO Tile',
105
- version: '1',
106
- id: 'cartoTile',
107
- module: 'carto',
108
- extensions: ['pbf'],
109
- mimeTypes: ['application/vnd.carto-vector-tile', 'application/x-protobuf'],
110
- category: 'geometry',
111
- worker: false,
112
- parse: function () {
113
- var _parse = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(arrayBuffer, options) {
114
- return _regenerator.default.wrap(function _callee$(_context) {
115
- while (1) {
116
- switch (_context.prev = _context.next) {
117
- case 0:
118
- return _context.abrupt("return", parseCartoTile(arrayBuffer, options));
119
-
120
- case 1:
121
- case "end":
122
- return _context.stop();
123
- }
124
- }
125
- }, _callee);
126
- }));
127
-
128
- function parse(_x, _x2) {
129
- return _parse.apply(this, arguments);
130
- }
131
-
132
- return parse;
133
- }(),
134
- parseSync: parseCartoTile,
135
- options: {
136
- cartoTile: {
137
- formatTiles: defaultTileFormat
138
- }
139
- }
140
- };
141
50
 
142
51
  var defaultProps = _objectSpread(_objectSpread({}, _geoLayers.MVTLayer.defaultProps), {}, {
143
- formatTiles: defaultTileFormat,
144
- loaders: [CartoTileLoader]
52
+ formatTiles: defaultTileFormat
145
53
  });
146
54
 
147
55
  var CartoTileLayer = function (_MVTLayer) {
@@ -155,6 +63,15 @@ var CartoTileLayer = function (_MVTLayer) {
155
63
  }
156
64
 
157
65
  (0, _createClass2.default)(CartoTileLayer, [{
66
+ key: "initializeState",
67
+ value: function initializeState() {
68
+ (0, _get2.default)((0, _getPrototypeOf2.default)(CartoTileLayer.prototype), "initializeState", this).call(this);
69
+ var binary = this.props.formatTiles === _mapsApiCommon.TILE_FORMATS.BINARY;
70
+ this.setState({
71
+ binary: binary
72
+ });
73
+ }
74
+ }, {
158
75
  key: "getTileData",
159
76
  value: function getTileData(tile) {
160
77
  var url = (0, _geoLayers._getURLFromTemplate)(this.state.data, tile);
@@ -168,16 +85,11 @@ var CartoTileLayer = function (_MVTLayer) {
168
85
  fetch = _this$props.fetch,
169
86
  formatTiles = _this$props.formatTiles;
170
87
  var signal = tile.signal;
171
- loadOptions = _objectSpread(_objectSpread({}, loadOptions), {}, {
172
- mimeType: 'application/x-protobuf'
173
- });
174
-
175
- if (formatTiles) {
176
- _core.log.assert(Object.values(_mapsApiCommon.TILE_FORMATS).includes(formatTiles), "Invalid value for formatTiles: ".concat(formatTiles, ". Use value from TILE_FORMATS"));
177
88
 
178
- loadOptions.cartoTile = {
179
- formatTiles: formatTiles
180
- };
89
+ if (formatTiles === _mapsApiCommon.TILE_FORMATS.BINARY) {
90
+ loadOptions = _objectSpread(_objectSpread({}, loadOptions), {}, {
91
+ mimeType: 'application/vnd.carto-vector-tile'
92
+ });
181
93
  }
182
94
 
183
95
  return fetch(url, {
@@ -209,6 +121,20 @@ var CartoTileLayer = function (_MVTLayer) {
209
121
  var subLayer = new _layers.GeoJsonLayer(subLayerProps);
210
122
  return subLayer;
211
123
  }
124
+ }, {
125
+ key: "getPickingInfo",
126
+ value: function getPickingInfo(params) {
127
+ var info = (0, _get2.default)((0, _getPrototypeOf2.default)(CartoTileLayer.prototype), "getPickingInfo", this).call(this, params);
128
+
129
+ if (this.state.binary && info.index !== -1) {
130
+ var data = params.sourceLayer.props.data;
131
+ info.object = (0, _gis.binaryToGeojson)(data, {
132
+ globalFeatureId: info.index
133
+ });
134
+ }
135
+
136
+ return info;
137
+ }
212
138
  }]);
213
139
  return CartoTileLayer;
214
140
  }(_geoLayers.MVTLayer);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/layers/carto-tile-layer.ts"],"names":["parseJSON","arrayBuffer","JSON","parse","TextDecoder","decode","parsePbf","buffer","pbf","Protobuf","tile","TileReader","read","unpackProperties","properties","length","map","item","currentRecord","data","forEach","key","value","parseCartoTile","options","formatTiles","cartoTile","TILE_FORMATS","GEOJSON","features","points","lines","polygons","defaultTileFormat","BINARY","CartoTileLoader","name","version","id","module","extensions","mimeTypes","category","worker","parseSync","defaultProps","MVTLayer","loaders","CartoTileLayer","url","state","Promise","reject","loadOptions","getLoadOptions","props","fetch","signal","mimeType","log","assert","Object","values","includes","propName","layer","tileBbox","bbox","west","south","east","north","subLayerProps","autoHighlight","ClipExtension","clipBounds","subLayer","GeoJsonLayer"],"mappings":"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","sourcesContent":["/* global TextDecoder */\nimport Protobuf from 'pbf';\nimport {log, DefaultProps} from '@deck.gl/core';\nimport {ClipExtension} from '@deck.gl/extensions';\nimport {\n MVTLayer,\n MVTLayerProps,\n TileLayer,\n _getURLFromTemplate,\n _Tile2DHeader,\n _TileLoadProps as TileLoadProps\n} from '@deck.gl/geo-layers';\nimport {GeoJsonLayer} from '@deck.gl/layers';\nimport {geojsonToBinary} from '@loaders.gl/gis';\nimport {KeyValueProperties, Tile, TileReader} from './schema/carto-tile';\nimport {TileFormat, TILE_FORMATS} from '../api/maps-api-common';\nimport {LoaderOptions, LoaderWithParser} from '@loaders.gl/loader-utils';\nimport type {BinaryFeatures} from '@loaders.gl/schema';\nimport type {Feature} from 'geojson';\n\nfunction parseJSON(arrayBuffer: ArrayBuffer): any {\n return JSON.parse(new TextDecoder().decode(arrayBuffer));\n}\n\nfunction parsePbf(buffer: ArrayBuffer): Tile {\n const pbf = new Protobuf(buffer);\n const tile = TileReader.read(pbf);\n return tile;\n}\n\nfunction unpackProperties(properties: KeyValueProperties[]) {\n if (!properties || !properties.length) {\n return [];\n }\n return properties.map(item => {\n const currentRecord: Record<string, unknown> = {};\n item.data.forEach(({key, value}) => {\n currentRecord[key] = value;\n });\n return currentRecord;\n });\n}\n\nfunction parseCartoTile(arrayBuffer: ArrayBuffer, options?: LoaderOptions): BinaryFeatures | null {\n if (!arrayBuffer) return null;\n const formatTiles = options && options.cartoTile && options.cartoTile.formatTiles;\n if (formatTiles === TILE_FORMATS.GEOJSON) return geojsonToBinary(parseJSON(arrayBuffer).features);\n\n const tile = parsePbf(arrayBuffer);\n\n const {points, lines, polygons} = tile;\n const data = {\n points: {...points, properties: unpackProperties(points.properties)},\n lines: {...lines, properties: unpackProperties(lines.properties)},\n polygons: {...polygons, properties: unpackProperties(polygons.properties)}\n };\n\n // Note: there is slight, difference in `numericProps` type, however geojson/mvtlayer can cope with this\n return data as unknown as BinaryFeatures;\n}\n\nconst defaultTileFormat = TILE_FORMATS.BINARY;\n\nconst CartoTileLoader: LoaderWithParser = {\n name: 'CARTO Tile',\n version: '1',\n id: 'cartoTile',\n module: 'carto',\n extensions: ['pbf'],\n mimeTypes: [\n 'application/vnd.carto-vector-tile',\n 'application/x-protobuf' // Back-compatibility\n ],\n category: 'geometry',\n worker: false,\n parse: async (arrayBuffer, options) => parseCartoTile(arrayBuffer, options),\n parseSync: parseCartoTile,\n options: {\n cartoTile: {\n formatTiles: defaultTileFormat\n }\n }\n};\n\nconst defaultProps: DefaultProps<CartoTileLayerProps> = {\n ...MVTLayer.defaultProps,\n formatTiles: defaultTileFormat,\n loaders: [CartoTileLoader]\n};\n\n/** All properties supported by CartoTileLayer. */\nexport type CartoTileLayerProps<DataT extends Feature = Feature> = _CartoTileLayerProps &\n MVTLayerProps<DataT>;\n\n/** Properties added by CartoTileLayer. */\ntype _CartoTileLayerProps = {\n /** Use to override the default tile data format.\n *\n * Possible values are: `TILE_FORMATS.BINARY`, `TILE_FORMATS.GEOJSON` and `TILE_FORMATS.MVT`.\n *\n * Only supported when `apiVersion` is `API_VERSIONS.V3` and `format` is `FORMATS.TILEJSON`.\n */\n formatTiles?: TileFormat;\n};\n\nexport default class CartoTileLayer<\n DataT extends Feature = Feature,\n ExtraProps = {}\n> extends MVTLayer<DataT, Required<_CartoTileLayerProps> & ExtraProps> {\n static layerName = 'CartoTileLayer';\n static defaultProps = defaultProps;\n\n getTileData(tile: TileLoadProps) {\n const url = _getURLFromTemplate(this.state.data, tile);\n if (!url) {\n return Promise.reject('Invalid URL');\n }\n\n let loadOptions = this.getLoadOptions();\n const {fetch, formatTiles} = this.props;\n const {signal} = tile;\n\n loadOptions = {\n ...loadOptions,\n mimeType: 'application/x-protobuf'\n };\n\n if (formatTiles) {\n log.assert(\n Object.values(TILE_FORMATS).includes(formatTiles),\n `Invalid value for formatTiles: ${formatTiles}. Use value from TILE_FORMATS`\n );\n loadOptions.cartoTile = {formatTiles};\n }\n\n return fetch(url, {propName: 'data', layer: this, loadOptions, signal});\n }\n\n renderSubLayers(\n props: TileLayer['props'] & {\n id: string;\n data: any;\n _offset: number;\n tile: _Tile2DHeader;\n }\n ): GeoJsonLayer | null {\n if (props.data === null) {\n return null;\n }\n\n const tileBbox = props.tile.bbox as any;\n const {west, south, east, north} = tileBbox;\n\n const subLayerProps = {\n ...props,\n autoHighlight: false,\n extensions: [new ClipExtension(), ...(props.extensions || [])],\n clipBounds: [west, south, east, north]\n };\n\n const subLayer = new GeoJsonLayer(subLayerProps);\n return subLayer;\n }\n}\n"],"file":"carto-tile-layer.js"}
1
+ {"version":3,"sources":["../../../src/layers/carto-tile-layer.ts"],"names":["CartoVectorTileLoader","defaultTileFormat","TILE_FORMATS","BINARY","defaultProps","MVTLayer","formatTiles","CartoTileLayer","binary","props","setState","tile","url","state","data","Promise","reject","loadOptions","getLoadOptions","fetch","signal","mimeType","propName","layer","tileBbox","bbox","west","south","east","north","subLayerProps","autoHighlight","extensions","ClipExtension","clipBounds","subLayer","GeoJsonLayer","params","info","index","sourceLayer","object","globalFeatureId"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AAIA;;AACA;;AAQA;;AACA;;AAEA;;;;;;;;;;AAfA,2BAAgB,CAACA,8BAAD,CAAhB;AAkBA,IAAMC,iBAAiB,GAAGC,4BAAaC,MAAvC;;AAEA,IAAMC,YAA+C,mCAChDC,oBAASD,YADuC;AAEnDE,EAAAA,WAAW,EAAEL;AAFsC,EAArD;;IAoBqBM,c;;;;;;;;;;;;WAOnB,2BAAwB;AACtB;AACA,UAAMC,MAAM,GAAG,KAAKC,KAAL,CAAWH,WAAX,KAA2BJ,4BAAaC,MAAvD;AACA,WAAKO,QAAL,CAAc;AAACF,QAAAA,MAAM,EAANA;AAAD,OAAd;AACD;;;WAED,qBAAYG,IAAZ,EAAiC;AAC/B,UAAMC,GAAG,GAAG,oCAAoB,KAAKC,KAAL,CAAWC,IAA/B,EAAqCH,IAArC,CAAZ;;AACA,UAAI,CAACC,GAAL,EAAU;AACR,eAAOG,OAAO,CAACC,MAAR,CAAe,aAAf,CAAP;AACD;;AAED,UAAIC,WAAW,GAAG,KAAKC,cAAL,EAAlB;AACA,wBAA6B,KAAKT,KAAlC;AAAA,UAAOU,KAAP,eAAOA,KAAP;AAAA,UAAcb,WAAd,eAAcA,WAAd;AACA,UAAOc,MAAP,GAAiBT,IAAjB,CAAOS,MAAP;;AAIA,UAAId,WAAW,KAAKJ,4BAAaC,MAAjC,EAAyC;AACvCc,QAAAA,WAAW,mCACNA,WADM;AAETI,UAAAA,QAAQ,EAAE;AAFD,UAAX;AAID;;AAED,aAAOF,KAAK,CAACP,GAAD,EAAM;AAACU,QAAAA,QAAQ,EAAE,MAAX;AAAmBC,QAAAA,KAAK,EAAE,IAA1B;AAAgCN,QAAAA,WAAW,EAAXA,WAAhC;AAA6CG,QAAAA,MAAM,EAANA;AAA7C,OAAN,CAAZ;AACD;;;WAED,yBACEX,KADF,EAOuB;AACrB,UAAIA,KAAK,CAACK,IAAN,KAAe,IAAnB,EAAyB;AACvB,eAAO,IAAP;AACD;;AAED,UAAMU,QAAQ,GAAGf,KAAK,CAACE,IAAN,CAAWc,IAA5B;AACA,UAAOC,IAAP,GAAmCF,QAAnC,CAAOE,IAAP;AAAA,UAAaC,KAAb,GAAmCH,QAAnC,CAAaG,KAAb;AAAA,UAAoBC,IAApB,GAAmCJ,QAAnC,CAAoBI,IAApB;AAAA,UAA0BC,KAA1B,GAAmCL,QAAnC,CAA0BK,KAA1B;;AAEA,UAAMC,aAAa,mCACdrB,KADc;AAEjBsB,QAAAA,aAAa,EAAE,KAFE;AAGjBC,QAAAA,UAAU,GAAG,IAAIC,yBAAJ,EAAH,0CAA4BxB,KAAK,CAACuB,UAAN,IAAoB,EAAhD,EAHO;AAIjBE,QAAAA,UAAU,EAAE,CAACR,IAAD,EAAOC,KAAP,EAAcC,IAAd,EAAoBC,KAApB;AAJK,QAAnB;;AAOA,UAAMM,QAAQ,GAAG,IAAIC,oBAAJ,CAAiBN,aAAjB,CAAjB;AACA,aAAOK,QAAP;AACD;;;WAED,wBAAeE,MAAf,EAAuB;AACrB,UAAMC,IAAI,kHAAwBD,MAAxB,CAAV;;AAEA,UAAI,KAAKxB,KAAL,CAAWL,MAAX,IAAqB8B,IAAI,CAACC,KAAL,KAAe,CAAC,CAAzC,EAA4C;AAC1C,YAAOzB,IAAP,GAAeuB,MAAM,CAACG,WAAP,CAAoB/B,KAAnC,CAAOK,IAAP;AACAwB,QAAAA,IAAI,CAACG,MAAL,GAAc,0BAAgB3B,IAAhB,EAAwC;AAAC4B,UAAAA,eAAe,EAAEJ,IAAI,CAACC;AAAvB,SAAxC,CAAd;AACD;;AAED,aAAOD,IAAP;AACD;;;EAnEOjC,mB;;;8BAHWE,c,eAIA,gB;8BAJAA,c,kBAKGH,Y","sourcesContent":["import {registerLoaders} from '@loaders.gl/core';\nimport CartoVectorTileLoader from './schema/carto-vector-tile-loader';\nregisterLoaders([CartoVectorTileLoader]);\n\nimport {DefaultProps} from '@deck.gl/core';\nimport {ClipExtension} from '@deck.gl/extensions';\nimport {\n MVTLayer,\n MVTLayerProps,\n TileLayer,\n _getURLFromTemplate,\n _Tile2DHeader,\n _TileLoadProps as TileLoadProps\n} from '@deck.gl/geo-layers';\nimport {GeoJsonLayer} from '@deck.gl/layers';\nimport {binaryToGeojson, geojsonToBinary} from '@loaders.gl/gis';\nimport type {BinaryFeatures} from '@loaders.gl/schema';\nimport {TileFormat, TILE_FORMATS} from '../api/maps-api-common';\nimport type {Feature} from 'geojson';\n\nconst defaultTileFormat = TILE_FORMATS.BINARY;\n\nconst defaultProps: DefaultProps<CartoTileLayerProps> = {\n ...MVTLayer.defaultProps,\n formatTiles: defaultTileFormat\n};\n\n/** All properties supported by CartoTileLayer. */\nexport type CartoTileLayerProps<DataT extends Feature = Feature> = _CartoTileLayerProps &\n MVTLayerProps<DataT>;\n\n/** Properties added by CartoTileLayer. */\ntype _CartoTileLayerProps = {\n /** Use to override the default tile data format.\n *\n * Possible values are: `TILE_FORMATS.BINARY`, `TILE_FORMATS.GEOJSON` and `TILE_FORMATS.MVT`.\n *\n * Only supported when `apiVersion` is `API_VERSIONS.V3` and `format` is `FORMATS.TILEJSON`.\n */\n formatTiles?: TileFormat;\n};\n\nexport default class CartoTileLayer<\n DataT extends Feature = Feature,\n ExtraProps = {}\n> extends MVTLayer<DataT, Required<_CartoTileLayerProps> & ExtraProps> {\n static layerName = 'CartoTileLayer';\n static defaultProps = defaultProps;\n\n initializeState(): void {\n super.initializeState();\n const binary = this.props.formatTiles === TILE_FORMATS.BINARY;\n this.setState({binary});\n }\n\n getTileData(tile: TileLoadProps) {\n const url = _getURLFromTemplate(this.state.data, tile);\n if (!url) {\n return Promise.reject('Invalid URL');\n }\n\n let loadOptions = this.getLoadOptions();\n const {fetch, formatTiles} = this.props;\n const {signal} = tile;\n\n // The backend doesn't yet support our custom mime-type, so force it here\n // TODO remove once backend sends the correct mime-type\n if (formatTiles === TILE_FORMATS.BINARY) {\n loadOptions = {\n ...loadOptions,\n mimeType: 'application/vnd.carto-vector-tile'\n };\n }\n\n return fetch(url, {propName: 'data', layer: this, loadOptions, signal});\n }\n\n renderSubLayers(\n props: TileLayer['props'] & {\n id: string;\n data: any;\n _offset: number;\n tile: _Tile2DHeader;\n }\n ): GeoJsonLayer | null {\n if (props.data === null) {\n return null;\n }\n\n const tileBbox = props.tile.bbox as any;\n const {west, south, east, north} = tileBbox;\n\n const subLayerProps = {\n ...props,\n autoHighlight: false,\n extensions: [new ClipExtension(), ...(props.extensions || [])],\n clipBounds: [west, south, east, north]\n };\n\n const subLayer = new GeoJsonLayer(subLayerProps);\n return subLayer;\n }\n\n getPickingInfo(params) {\n const info = super.getPickingInfo(params);\n\n if (this.state.binary && info.index !== -1) {\n const {data} = params.sourceLayer!.props;\n info.object = binaryToGeojson(data as BinaryFeatures, {globalFeatureId: info.index}) as DataT;\n }\n\n return info;\n }\n}\n"],"file":"carto-tile-layer.js"}