@deck.gl/carto 8.9.6 → 8.9.8

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 (150) hide show
  1. package/dist/dist.dev.js +774 -114
  2. package/dist/es5/api/layer-map.js +9 -15
  3. package/dist/es5/api/layer-map.js.map +1 -1
  4. package/dist/es5/api/maps-api-common.js +2 -1
  5. package/dist/es5/api/maps-api-common.js.map +1 -1
  6. package/dist/es5/api/maps-v3-client.js +17 -6
  7. package/dist/es5/api/maps-v3-client.js.map +1 -1
  8. package/dist/es5/api/parseMap.js +1 -1
  9. package/dist/es5/api/parseMap.js.map +1 -1
  10. package/dist/es5/index.js +8 -0
  11. package/dist/es5/index.js.map +1 -1
  12. package/dist/es5/layers/carto-layer.js +1 -1
  13. package/dist/es5/layers/carto-layer.js.map +1 -1
  14. package/dist/es5/layers/h3-tile-layer.js +2 -1
  15. package/dist/es5/layers/h3-tile-layer.js.map +1 -1
  16. package/dist/es5/layers/quadbin-tile-layer.js +2 -1
  17. package/dist/es5/layers/quadbin-tile-layer.js.map +1 -1
  18. package/dist/es5/layers/quadbin-utils.js +14 -4
  19. package/dist/es5/layers/quadbin-utils.js.map +1 -1
  20. package/dist/es5/layers/raster-layer-vertex.glsl.js +9 -0
  21. package/dist/es5/layers/raster-layer-vertex.glsl.js.map +1 -0
  22. package/dist/es5/layers/raster-layer.js +176 -0
  23. package/dist/es5/layers/raster-layer.js.map +1 -0
  24. package/dist/es5/layers/raster-tile-layer.js +114 -0
  25. package/dist/es5/layers/raster-tile-layer.js.map +1 -0
  26. package/dist/es5/layers/schema/carto-raster-tile-loader.js +80 -0
  27. package/dist/es5/layers/schema/carto-raster-tile-loader.js.map +1 -0
  28. package/dist/es5/layers/schema/carto-raster-tile.js +87 -0
  29. package/dist/es5/layers/schema/carto-raster-tile.js.map +1 -0
  30. package/dist/es5/layers/schema/carto-spatial-tile.js +1 -1
  31. package/dist/es5/layers/schema/carto-spatial-tile.js.map +1 -1
  32. package/dist/es5/layers/schema/carto-tile.js +2 -2
  33. package/dist/es5/layers/schema/carto-tile.js.map +1 -1
  34. package/dist/es5/layers/schema/fast-pbf.js +3 -11
  35. package/dist/es5/layers/schema/fast-pbf.js.map +1 -1
  36. package/dist/es5/layers/spatial-index-tile-layer.js +3 -41
  37. package/dist/es5/layers/spatial-index-tile-layer.js.map +1 -1
  38. package/dist/es5/utils.js +18 -0
  39. package/dist/es5/utils.js.map +1 -1
  40. package/dist/esm/api/layer-map.js +9 -21
  41. package/dist/esm/api/layer-map.js.map +1 -1
  42. package/dist/esm/api/maps-api-common.js +2 -1
  43. package/dist/esm/api/maps-api-common.js.map +1 -1
  44. package/dist/esm/api/maps-v3-client.js +9 -1
  45. package/dist/esm/api/maps-v3-client.js.map +1 -1
  46. package/dist/esm/api/parseMap.js +1 -1
  47. package/dist/esm/api/parseMap.js.map +1 -1
  48. package/dist/esm/index.js +1 -0
  49. package/dist/esm/index.js.map +1 -1
  50. package/dist/esm/layers/carto-layer.js +1 -1
  51. package/dist/esm/layers/carto-layer.js.map +1 -1
  52. package/dist/esm/layers/h3-tile-layer.js +2 -1
  53. package/dist/esm/layers/h3-tile-layer.js.map +1 -1
  54. package/dist/esm/layers/quadbin-tile-layer.js +2 -1
  55. package/dist/esm/layers/quadbin-tile-layer.js.map +1 -1
  56. package/dist/esm/layers/quadbin-utils.js +7 -4
  57. package/dist/esm/layers/quadbin-utils.js.map +1 -1
  58. package/dist/esm/layers/raster-layer-vertex.glsl.js +2 -0
  59. package/dist/esm/layers/raster-layer-vertex.glsl.js.map +1 -0
  60. package/dist/esm/layers/raster-layer.js +111 -0
  61. package/dist/esm/layers/raster-layer.js.map +1 -0
  62. package/dist/esm/layers/raster-tile-layer.js +67 -0
  63. package/dist/esm/layers/raster-tile-layer.js.map +1 -0
  64. package/dist/esm/layers/schema/carto-raster-tile-loader.js +46 -0
  65. package/dist/esm/layers/schema/carto-raster-tile-loader.js.map +1 -0
  66. package/dist/esm/layers/schema/carto-raster-tile.js +51 -0
  67. package/dist/esm/layers/schema/carto-raster-tile.js.map +1 -0
  68. package/dist/esm/layers/schema/carto-spatial-tile.js +2 -2
  69. package/dist/esm/layers/schema/carto-spatial-tile.js.map +1 -1
  70. package/dist/esm/layers/schema/carto-tile.js +3 -3
  71. package/dist/esm/layers/schema/carto-tile.js.map +1 -1
  72. package/dist/esm/layers/schema/fast-pbf.js +2 -8
  73. package/dist/esm/layers/schema/fast-pbf.js.map +1 -1
  74. package/dist/esm/layers/spatial-index-tile-layer.js +3 -41
  75. package/dist/esm/layers/spatial-index-tile-layer.js.map +1 -1
  76. package/dist/esm/utils.js +20 -0
  77. package/dist/esm/utils.js.map +1 -1
  78. package/dist.min.js +100 -23
  79. package/package.json +3 -3
  80. package/src/api/layer-map.ts +12 -19
  81. package/src/api/maps-api-common.ts +2 -1
  82. package/src/api/maps-v3-client.ts +6 -1
  83. package/src/api/parseMap.ts +1 -1
  84. package/src/index.ts +1 -0
  85. package/src/layers/carto-layer.ts +1 -1
  86. package/src/layers/h3-tile-layer.ts +2 -3
  87. package/src/layers/quadbin-tile-layer.ts +2 -3
  88. package/src/layers/quadbin-utils.ts +9 -5
  89. package/src/layers/raster-layer-vertex.glsl.ts +98 -0
  90. package/src/layers/raster-layer.ts +146 -0
  91. package/src/layers/raster-tile-layer.ts +63 -0
  92. package/src/layers/schema/carto-raster-tile-loader.ts +42 -0
  93. package/src/layers/schema/carto-raster-tile.ts +46 -0
  94. package/src/layers/schema/carto-spatial-tile.ts +2 -2
  95. package/src/layers/schema/carto-tile.ts +3 -3
  96. package/src/layers/schema/fast-pbf.ts +3 -9
  97. package/src/layers/spatial-index-tile-layer.ts +3 -38
  98. package/src/utils.ts +22 -0
  99. package/typed/api/layer-map.d.ts +2 -1
  100. package/typed/api/layer-map.d.ts.map +1 -1
  101. package/typed/api/maps-api-common.d.ts +1 -0
  102. package/typed/api/maps-api-common.d.ts.map +1 -1
  103. package/typed/api/maps-v3-client.d.ts.map +1 -1
  104. package/typed/index.d.ts +1 -0
  105. package/typed/index.d.ts.map +1 -1
  106. package/typed/layers/h3-tile-layer.d.ts.map +1 -1
  107. package/typed/layers/quadbin-tile-layer.d.ts.map +1 -1
  108. package/typed/layers/quadbin-utils.d.ts +1 -0
  109. package/typed/layers/quadbin-utils.d.ts.map +1 -1
  110. package/typed/layers/raster-layer-vertex.glsl.d.ts +3 -0
  111. package/typed/layers/raster-layer-vertex.glsl.d.ts.map +1 -0
  112. package/typed/layers/raster-layer.d.ts +19 -0
  113. package/typed/layers/raster-layer.d.ts.map +1 -0
  114. package/typed/layers/raster-tile-layer.d.ts +24 -0
  115. package/typed/layers/raster-tile-layer.d.ts.map +1 -0
  116. package/typed/layers/schema/carto-raster-tile-loader.d.ts +13 -0
  117. package/typed/layers/schema/carto-raster-tile-loader.d.ts.map +1 -0
  118. package/typed/layers/schema/carto-raster-tile.d.ts +9 -0
  119. package/typed/layers/schema/carto-raster-tile.d.ts.map +1 -0
  120. package/typed/layers/schema/carto-spa-tile.d.ts +57 -0
  121. package/typed/layers/schema/carto-spa-tile.d.ts.map +1 -0
  122. package/typed/layers/schema/fast-pbf.d.ts +1 -2
  123. package/typed/layers/schema/fast-pbf.d.ts.map +1 -1
  124. package/typed/layers/spatial-index-tile-layer.d.ts +1 -2
  125. package/typed/layers/spatial-index-tile-layer.d.ts.map +1 -1
  126. package/typed/utils.d.ts +5 -0
  127. package/typed/utils.d.ts.map +1 -1
  128. package/typed/api/index.js +0 -3
  129. package/typed/api/layer-map.js +0 -264
  130. package/typed/api/maps-api-common.js +0 -50
  131. package/typed/api/maps-client.js +0 -125
  132. package/typed/api/maps-v3-client.js +0 -304
  133. package/typed/api/parseMap.js +0 -178
  134. package/typed/basemap.js +0 -9
  135. package/typed/config.js +0 -35
  136. package/typed/index.js +0 -10
  137. package/typed/layers/carto-layer.js +0 -173
  138. package/typed/layers/carto-tile-layer.js +0 -105
  139. package/typed/layers/h3-tile-layer.js +0 -47
  140. package/typed/layers/h3-tileset-2d.js +0 -85
  141. package/typed/layers/quadkey-tile-layer.js +0 -42
  142. package/typed/layers/quadkey-tileset-2d.js +0 -36
  143. package/typed/layers/schema/carto-tile.js +0 -161
  144. package/typed/layers/spatial-index-tile-layer.js +0 -40
  145. package/typed/style/color-bins-style.js +0 -12
  146. package/typed/style/color-categories-style.js +0 -16
  147. package/typed/style/color-continuous-style.js +0 -12
  148. package/typed/style/palette.js +0 -62
  149. package/typed/style/utils.js +0 -15
  150. package/typed/utils.js +0 -4
package/dist/dist.dev.js CHANGED
@@ -6105,6 +6105,332 @@ var __exports__ = (() => {
6105
6105
  }
6106
6106
  });
6107
6107
 
6108
+ // ../../node_modules/tilebelt/index.js
6109
+ var require_tilebelt = __commonJS({
6110
+ "../../node_modules/tilebelt/index.js"(exports, module) {
6111
+ var d2r = Math.PI / 180;
6112
+ var r2d = 180 / Math.PI;
6113
+ function tileToBBOX(tile) {
6114
+ var e = tile2lon(tile[0] + 1, tile[2]);
6115
+ var w = tile2lon(tile[0], tile[2]);
6116
+ var s = tile2lat(tile[1] + 1, tile[2]);
6117
+ var n = tile2lat(tile[1], tile[2]);
6118
+ return [w, s, e, n];
6119
+ }
6120
+ function tileToGeoJSON(tile) {
6121
+ var bbox = tileToBBOX(tile);
6122
+ var poly = {
6123
+ type: "Polygon",
6124
+ coordinates: [
6125
+ [
6126
+ [bbox[0], bbox[1]],
6127
+ [bbox[0], bbox[3]],
6128
+ [bbox[2], bbox[3]],
6129
+ [bbox[2], bbox[1]],
6130
+ [bbox[0], bbox[1]]
6131
+ ]
6132
+ ]
6133
+ };
6134
+ return poly;
6135
+ }
6136
+ function tile2lon(x, z) {
6137
+ return x / Math.pow(2, z) * 360 - 180;
6138
+ }
6139
+ function tile2lat(y, z) {
6140
+ var n = Math.PI - 2 * Math.PI * y / Math.pow(2, z);
6141
+ return r2d * Math.atan(0.5 * (Math.exp(n) - Math.exp(-n)));
6142
+ }
6143
+ function pointToTile(lon, lat, z) {
6144
+ var tile = pointToTileFraction(lon, lat, z);
6145
+ tile[0] = Math.floor(tile[0]);
6146
+ tile[1] = Math.floor(tile[1]);
6147
+ return tile;
6148
+ }
6149
+ function getChildren(tile) {
6150
+ return [
6151
+ [tile[0] * 2, tile[1] * 2, tile[2] + 1],
6152
+ [tile[0] * 2 + 1, tile[1] * 2, tile[2] + 1],
6153
+ [tile[0] * 2 + 1, tile[1] * 2 + 1, tile[2] + 1],
6154
+ [tile[0] * 2, tile[1] * 2 + 1, tile[2] + 1]
6155
+ ];
6156
+ }
6157
+ function getParent(tile) {
6158
+ if (tile[0] % 2 === 0 && tile[1] % 2 === 0) {
6159
+ return [tile[0] / 2, tile[1] / 2, tile[2] - 1];
6160
+ } else if (tile[0] % 2 === 0 && !tile[1] % 2 === 0) {
6161
+ return [tile[0] / 2, (tile[1] - 1) / 2, tile[2] - 1];
6162
+ } else if (!tile[0] % 2 === 0 && tile[1] % 2 === 0) {
6163
+ return [(tile[0] - 1) / 2, tile[1] / 2, tile[2] - 1];
6164
+ } else {
6165
+ return [(tile[0] - 1) / 2, (tile[1] - 1) / 2, tile[2] - 1];
6166
+ }
6167
+ }
6168
+ function getSiblings(tile) {
6169
+ return getChildren(getParent(tile));
6170
+ }
6171
+ function hasSiblings(tile, tiles2) {
6172
+ var siblings = getSiblings(tile);
6173
+ for (var i = 0; i < siblings.length; i++) {
6174
+ if (!hasTile(tiles2, siblings[i]))
6175
+ return false;
6176
+ }
6177
+ return true;
6178
+ }
6179
+ function hasTile(tiles2, tile) {
6180
+ for (var i = 0; i < tiles2.length; i++) {
6181
+ if (tilesEqual(tiles2[i], tile))
6182
+ return true;
6183
+ }
6184
+ return false;
6185
+ }
6186
+ function tilesEqual(tile1, tile2) {
6187
+ return tile1[0] === tile2[0] && tile1[1] === tile2[1] && tile1[2] === tile2[2];
6188
+ }
6189
+ function tileToQuadkey(tile) {
6190
+ var index = "";
6191
+ for (var z = tile[2]; z > 0; z--) {
6192
+ var b = 0;
6193
+ var mask = 1 << z - 1;
6194
+ if ((tile[0] & mask) !== 0)
6195
+ b++;
6196
+ if ((tile[1] & mask) !== 0)
6197
+ b += 2;
6198
+ index += b.toString();
6199
+ }
6200
+ return index;
6201
+ }
6202
+ function quadkeyToTile(quadkey) {
6203
+ var x = 0;
6204
+ var y = 0;
6205
+ var z = quadkey.length;
6206
+ for (var i = z; i > 0; i--) {
6207
+ var mask = 1 << i - 1;
6208
+ switch (quadkey[z - i]) {
6209
+ case "0":
6210
+ break;
6211
+ case "1":
6212
+ x |= mask;
6213
+ break;
6214
+ case "2":
6215
+ y |= mask;
6216
+ break;
6217
+ case "3":
6218
+ x |= mask;
6219
+ y |= mask;
6220
+ break;
6221
+ }
6222
+ }
6223
+ return [x, y, z];
6224
+ }
6225
+ function bboxToTile(bboxCoords) {
6226
+ var min2 = pointToTile(bboxCoords[0], bboxCoords[1], 32);
6227
+ var max2 = pointToTile(bboxCoords[2], bboxCoords[3], 32);
6228
+ var bbox = [min2[0], min2[1], max2[0], max2[1]];
6229
+ var z = getBboxZoom(bbox);
6230
+ if (z === 0)
6231
+ return [0, 0, 0];
6232
+ var x = bbox[0] >>> 32 - z;
6233
+ var y = bbox[1] >>> 32 - z;
6234
+ return [x, y, z];
6235
+ }
6236
+ function getBboxZoom(bbox) {
6237
+ var MAX_ZOOM = 28;
6238
+ for (var z = 0; z < MAX_ZOOM; z++) {
6239
+ var mask = 1 << 32 - (z + 1);
6240
+ if ((bbox[0] & mask) != (bbox[2] & mask) || (bbox[1] & mask) != (bbox[3] & mask)) {
6241
+ return z;
6242
+ }
6243
+ }
6244
+ return MAX_ZOOM;
6245
+ }
6246
+ function pointToTileFraction(lon, lat, z) {
6247
+ var sin = Math.sin(lat * d2r), z2 = Math.pow(2, z), x = z2 * (lon / 360 + 0.5), y = z2 * (0.5 - 0.25 * Math.log((1 + sin) / (1 - sin)) / Math.PI);
6248
+ return [x, y, z];
6249
+ }
6250
+ module.exports = {
6251
+ tileToGeoJSON,
6252
+ tileToBBOX,
6253
+ getChildren,
6254
+ getParent,
6255
+ getSiblings,
6256
+ hasTile,
6257
+ hasSiblings,
6258
+ tilesEqual,
6259
+ tileToQuadkey,
6260
+ quadkeyToTile,
6261
+ pointToTile,
6262
+ bboxToTile,
6263
+ pointToTileFraction
6264
+ };
6265
+ }
6266
+ });
6267
+
6268
+ // ../../node_modules/@mapbox/tile-cover/index.js
6269
+ var require_tile_cover = __commonJS({
6270
+ "../../node_modules/@mapbox/tile-cover/index.js"(exports) {
6271
+ var tilebelt = require_tilebelt();
6272
+ exports.geojson = function(geom, limits) {
6273
+ return {
6274
+ type: "FeatureCollection",
6275
+ features: getTiles(geom, limits).map(tileToFeature)
6276
+ };
6277
+ };
6278
+ function tileToFeature(t) {
6279
+ return {
6280
+ type: "Feature",
6281
+ geometry: tilebelt.tileToGeoJSON(t),
6282
+ properties: {}
6283
+ };
6284
+ }
6285
+ exports.tiles = getTiles;
6286
+ exports.indexes = function(geom, limits) {
6287
+ return getTiles(geom, limits).map(tilebelt.tileToQuadkey);
6288
+ };
6289
+ function getTiles(geom, limits) {
6290
+ var i, tile, coords = geom.coordinates, maxZoom = limits.max_zoom, tileHash = {}, tiles2 = [];
6291
+ if (geom.type === "Point") {
6292
+ return [tilebelt.pointToTile(coords[0], coords[1], maxZoom)];
6293
+ } else if (geom.type === "MultiPoint") {
6294
+ for (i = 0; i < coords.length; i++) {
6295
+ tile = tilebelt.pointToTile(coords[i][0], coords[i][1], maxZoom);
6296
+ tileHash[toID(tile[0], tile[1], tile[2])] = true;
6297
+ }
6298
+ } else if (geom.type === "LineString") {
6299
+ lineCover(tileHash, coords, maxZoom);
6300
+ } else if (geom.type === "MultiLineString") {
6301
+ for (i = 0; i < coords.length; i++) {
6302
+ lineCover(tileHash, coords[i], maxZoom);
6303
+ }
6304
+ } else if (geom.type === "Polygon") {
6305
+ polygonCover(tileHash, tiles2, coords, maxZoom);
6306
+ } else if (geom.type === "MultiPolygon") {
6307
+ for (i = 0; i < coords.length; i++) {
6308
+ polygonCover(tileHash, tiles2, coords[i], maxZoom);
6309
+ }
6310
+ } else {
6311
+ throw new Error("Geometry type not implemented");
6312
+ }
6313
+ if (limits.min_zoom !== maxZoom) {
6314
+ var len = tiles2.length;
6315
+ appendHashTiles(tileHash, tiles2);
6316
+ for (i = 0; i < len; i++) {
6317
+ var t = tiles2[i];
6318
+ tileHash[toID(t[0], t[1], t[2])] = true;
6319
+ }
6320
+ return mergeTiles(tileHash, tiles2, limits);
6321
+ }
6322
+ appendHashTiles(tileHash, tiles2);
6323
+ return tiles2;
6324
+ }
6325
+ function mergeTiles(tileHash, tiles2, limits) {
6326
+ var mergedTiles = [];
6327
+ for (var z = limits.max_zoom; z > limits.min_zoom; z--) {
6328
+ var parentTileHash = {};
6329
+ var parentTiles = [];
6330
+ for (var i = 0; i < tiles2.length; i++) {
6331
+ var t = tiles2[i];
6332
+ if (t[0] % 2 === 0 && t[1] % 2 === 0) {
6333
+ var id2 = toID(t[0] + 1, t[1], z), id3 = toID(t[0], t[1] + 1, z), id4 = toID(t[0] + 1, t[1] + 1, z);
6334
+ if (tileHash[id2] && tileHash[id3] && tileHash[id4]) {
6335
+ tileHash[toID(t[0], t[1], t[2])] = false;
6336
+ tileHash[id2] = false;
6337
+ tileHash[id3] = false;
6338
+ tileHash[id4] = false;
6339
+ var parentTile = [t[0] / 2, t[1] / 2, z - 1];
6340
+ if (z - 1 === limits.min_zoom)
6341
+ mergedTiles.push(parentTile);
6342
+ else {
6343
+ parentTileHash[toID(t[0] / 2, t[1] / 2, z - 1)] = true;
6344
+ parentTiles.push(parentTile);
6345
+ }
6346
+ }
6347
+ }
6348
+ }
6349
+ for (i = 0; i < tiles2.length; i++) {
6350
+ t = tiles2[i];
6351
+ if (tileHash[toID(t[0], t[1], t[2])])
6352
+ mergedTiles.push(t);
6353
+ }
6354
+ tileHash = parentTileHash;
6355
+ tiles2 = parentTiles;
6356
+ }
6357
+ return mergedTiles;
6358
+ }
6359
+ function polygonCover(tileHash, tileArray, geom, zoom) {
6360
+ var intersections = [];
6361
+ for (var i = 0; i < geom.length; i++) {
6362
+ var ring = [];
6363
+ lineCover(tileHash, geom[i], zoom, ring);
6364
+ for (var j = 0, len = ring.length, k = len - 1; j < len; k = j++) {
6365
+ var m = (j + 1) % len;
6366
+ var y = ring[j][1];
6367
+ if ((y > ring[k][1] || y > ring[m][1]) && (y < ring[k][1] || y < ring[m][1]) && y !== ring[m][1])
6368
+ intersections.push(ring[j]);
6369
+ }
6370
+ }
6371
+ intersections.sort(compareTiles);
6372
+ for (i = 0; i < intersections.length; i += 2) {
6373
+ y = intersections[i][1];
6374
+ for (var x = intersections[i][0] + 1; x < intersections[i + 1][0]; x++) {
6375
+ var id = toID(x, y, zoom);
6376
+ if (!tileHash[id]) {
6377
+ tileArray.push([x, y, zoom]);
6378
+ }
6379
+ }
6380
+ }
6381
+ }
6382
+ function compareTiles(a, b) {
6383
+ return a[1] - b[1] || a[0] - b[0];
6384
+ }
6385
+ function lineCover(tileHash, coords, maxZoom, ring) {
6386
+ var prevX, prevY;
6387
+ for (var i = 0; i < coords.length - 1; i++) {
6388
+ var start = tilebelt.pointToTileFraction(coords[i][0], coords[i][1], maxZoom), stop = tilebelt.pointToTileFraction(coords[i + 1][0], coords[i + 1][1], maxZoom), x0 = start[0], y0 = start[1], x1 = stop[0], y1 = stop[1], dx = x1 - x0, dy = y1 - y0;
6389
+ if (dy === 0 && dx === 0)
6390
+ continue;
6391
+ var sx = dx > 0 ? 1 : -1, sy = dy > 0 ? 1 : -1, x = Math.floor(x0), y = Math.floor(y0), tMaxX = dx === 0 ? Infinity : Math.abs(((dx > 0 ? 1 : 0) + x - x0) / dx), tMaxY = dy === 0 ? Infinity : Math.abs(((dy > 0 ? 1 : 0) + y - y0) / dy), tdx = Math.abs(sx / dx), tdy = Math.abs(sy / dy);
6392
+ if (x !== prevX || y !== prevY) {
6393
+ tileHash[toID(x, y, maxZoom)] = true;
6394
+ if (ring && y !== prevY)
6395
+ ring.push([x, y]);
6396
+ prevX = x;
6397
+ prevY = y;
6398
+ }
6399
+ while (tMaxX < 1 || tMaxY < 1) {
6400
+ if (tMaxX < tMaxY) {
6401
+ tMaxX += tdx;
6402
+ x += sx;
6403
+ } else {
6404
+ tMaxY += tdy;
6405
+ y += sy;
6406
+ }
6407
+ tileHash[toID(x, y, maxZoom)] = true;
6408
+ if (ring && y !== prevY)
6409
+ ring.push([x, y]);
6410
+ prevX = x;
6411
+ prevY = y;
6412
+ }
6413
+ }
6414
+ if (ring && y === ring[0][1])
6415
+ ring.pop();
6416
+ }
6417
+ function appendHashTiles(hash, tiles2) {
6418
+ var keys = Object.keys(hash);
6419
+ for (var i = 0; i < keys.length; i++) {
6420
+ tiles2.push(fromID(+keys[i]));
6421
+ }
6422
+ }
6423
+ function toID(x, y, z) {
6424
+ var dim = 2 * (1 << z);
6425
+ return (dim * y + x) * 32 + z;
6426
+ }
6427
+ function fromID(id) {
6428
+ var z = id % 32, dim = 2 * (1 << z), xy = (id - z) / 32, x = xy % dim, y = (xy - x) / dim % dim;
6429
+ return [x, y, z];
6430
+ }
6431
+ }
6432
+ });
6433
+
6108
6434
  // ../../node_modules/colorbrewer/colorbrewer.js
6109
6435
  var require_colorbrewer = __commonJS({
6110
6436
  "../../node_modules/colorbrewer/colorbrewer.js"(exports, module) {
@@ -8332,6 +8658,7 @@ var __exports__ = (() => {
8332
8658
  _H3TileLayer: () => H3TileLayer,
8333
8659
  _PointLabelLayer: () => PointLabelLayer,
8334
8660
  _QuadbinTileLayer: () => QuadbinTileLayer,
8661
+ _RasterTileLayer: () => RasterTileLayer,
8335
8662
  _getDataV2: () => getDataV2,
8336
8663
  _mapInstantiation: () => mapInstantiation,
8337
8664
  colorBins: () => colorBins,
@@ -8358,7 +8685,8 @@ var __exports__ = (() => {
8358
8685
  var MAP_TYPES = {
8359
8686
  QUERY: "query",
8360
8687
  TABLE: "table",
8361
- TILESET: "tileset"
8688
+ TILESET: "tileset",
8689
+ RASTER: "raster"
8362
8690
  };
8363
8691
  var COLUMNS_SUPPORT = [MAP_TYPES.TABLE];
8364
8692
  var GEO_COLUMN_SUPPORT = [MAP_TYPES.QUERY, MAP_TYPES.TABLE];
@@ -8450,7 +8778,7 @@ var __exports__ = (() => {
8450
8778
  }
8451
8779
 
8452
8780
  // src/layers/carto-layer.ts
8453
- var import_core9 = __toESM(require_core());
8781
+ var import_core11 = __toESM(require_core());
8454
8782
  var import_geo_layers8 = __toESM(require_geo_layers());
8455
8783
 
8456
8784
  // src/api/carto-api-error.ts
@@ -11135,22 +11463,16 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
11135
11463
  // src/api/layer-map.ts
11136
11464
  var import_moment_timezone = __toESM(require_moment_timezone2());
11137
11465
  var import_aggregation_layers = __toESM(require_aggregation_layers());
11138
- var import_layers2 = __toESM(require_layers());
11466
+ var import_layers3 = __toESM(require_layers());
11139
11467
  var import_geo_layers7 = __toESM(require_geo_layers());
11140
11468
 
11141
11469
  // src/layers/carto-tile-layer.ts
11142
11470
  var import_core = __toESM(require_core2());
11143
11471
 
11144
11472
  // src/layers/schema/fast-pbf.ts
11145
- function readPackedDouble(pbf, obj) {
11146
- const end = pbf.type === 2 ? pbf.readVarint() + pbf.pos : pbf.pos + 1;
11147
- obj.value = new Float64Array(pbf.buf.buffer.slice(pbf.pos, end));
11148
- pbf.pos = end;
11149
- return obj.value;
11150
- }
11151
- function readPackedFixed64(pbf, obj) {
11473
+ function readPackedTypedArray(TypedArray, pbf, obj) {
11152
11474
  const end = pbf.type === 2 ? pbf.readVarint() + pbf.pos : pbf.pos + 1;
11153
- obj.value = new BigUint64Array(pbf.buf.buffer.slice(pbf.pos, end));
11475
+ obj.value = new TypedArray(pbf.buf.buffer.slice(pbf.pos, end));
11154
11476
  pbf.pos = end;
11155
11477
  return obj.value;
11156
11478
  }
@@ -11200,7 +11522,7 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
11200
11522
  }
11201
11523
  static _readField(tag, obj, pbf) {
11202
11524
  if (tag === 1)
11203
- readPackedDouble(pbf, obj);
11525
+ readPackedTypedArray(Float64Array, pbf, obj);
11204
11526
  else if (tag === 2)
11205
11527
  obj.size = pbf.readVarint(true);
11206
11528
  }
@@ -11245,7 +11567,7 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
11245
11567
  }
11246
11568
  static _readField(tag, obj, pbf) {
11247
11569
  if (tag === 1)
11248
- readPackedDouble(pbf, obj);
11570
+ readPackedTypedArray(Float64Array, pbf, obj);
11249
11571
  }
11250
11572
  };
11251
11573
  var NumericPropKeyValueReader = class {
@@ -11375,9 +11697,9 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
11375
11697
 
11376
11698
  // src/layers/schema/tile-loader-utils.ts
11377
11699
  var import_pbf = __toESM(require_pbf());
11378
- function parsePbf(buffer, TileReader3) {
11700
+ function parsePbf(buffer, TileReader4) {
11379
11701
  const pbf = new import_pbf.default(buffer);
11380
- const tile = TileReader3.read(pbf);
11702
+ const tile = TileReader4.read(pbf);
11381
11703
  return tile;
11382
11704
  }
11383
11705
 
@@ -11809,6 +12131,102 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
11809
12131
  // src/layers/spatial-index-tile-layer.ts
11810
12132
  var import_core2 = __toESM(require_core2());
11811
12133
 
12134
+ // src/layers/schema/carto-raster-tile.ts
12135
+ var ARRAY_TYPES = {
12136
+ uint8: Uint8Array,
12137
+ uint16: Uint16Array,
12138
+ uint32: Uint32Array,
12139
+ uint64: BigUint64Array,
12140
+ int8: Int8Array,
12141
+ int16: Int16Array,
12142
+ int32: Int32Array,
12143
+ int64: BigInt64Array,
12144
+ float32: Float32Array,
12145
+ float64: Float64Array
12146
+ };
12147
+ var BandReader = class {
12148
+ static read(pbf, end) {
12149
+ return pbf.readFields(BandReader._readField, {
12150
+ name: "",
12151
+ type: "",
12152
+ data: null
12153
+ }, end);
12154
+ }
12155
+ static _readField(tag, obj, pbf) {
12156
+ if (tag === 1)
12157
+ obj.name = pbf.readString();
12158
+ else if (tag === 2)
12159
+ obj.type = pbf.readString();
12160
+ else if (tag === 3) {
12161
+ const TypedArray = ARRAY_TYPES[obj.type];
12162
+ if (!TypedArray) {
12163
+ throw Error(`Invalid data type: ${obj.type}`);
12164
+ }
12165
+ obj.data = {};
12166
+ readPackedTypedArray(TypedArray, pbf, obj.data);
12167
+ }
12168
+ }
12169
+ };
12170
+ var TileReader2 = class {
12171
+ static read(pbf, end) {
12172
+ return pbf.readFields(TileReader2._readField, {
12173
+ blockWidth: 0,
12174
+ blockHeight: 0,
12175
+ bands: []
12176
+ }, end);
12177
+ }
12178
+ static _readField(tag, obj, pbf) {
12179
+ if (tag === 1)
12180
+ obj.blockWidth = pbf.readVarint();
12181
+ else if (tag === 2)
12182
+ obj.blockHeight = pbf.readVarint();
12183
+ else if (tag === 3)
12184
+ obj.bands.push(BandReader.read(pbf, pbf.readVarint() + pbf.pos));
12185
+ }
12186
+ };
12187
+
12188
+ // src/layers/schema/carto-raster-tile-loader.ts
12189
+ var CartoRasterTileLoader = {
12190
+ name: "CARTO Raster Tile",
12191
+ version: "1",
12192
+ id: "cartoRasterTile",
12193
+ module: "carto",
12194
+ extensions: ["pbf"],
12195
+ mimeTypes: ["application/vnd.carto-raster-tile"],
12196
+ category: "geometry",
12197
+ worker: false,
12198
+ parse: async (arrayBuffer, options) => parseCartoRasterTile(arrayBuffer, options),
12199
+ parseSync: parseCartoRasterTile,
12200
+ options: {}
12201
+ };
12202
+ function parseCartoRasterTile(arrayBuffer, options) {
12203
+ if (!arrayBuffer)
12204
+ return null;
12205
+ const tile = parsePbf(arrayBuffer, TileReader2);
12206
+ const {
12207
+ bands,
12208
+ blockHeight,
12209
+ blockWidth
12210
+ } = tile;
12211
+ const numericProps = {};
12212
+ for (let i = 0; i < bands.length; i++) {
12213
+ const {
12214
+ name,
12215
+ data
12216
+ } = bands[i];
12217
+ numericProps[name] = data;
12218
+ }
12219
+ return {
12220
+ blockWidth,
12221
+ blockHeight,
12222
+ cells: {
12223
+ numericProps,
12224
+ properties: []
12225
+ }
12226
+ };
12227
+ }
12228
+ var carto_raster_tile_loader_default = CartoRasterTileLoader;
12229
+
11812
12230
  // src/layers/schema/carto-spatial-tile.ts
11813
12231
  var IndicesReader = class {
11814
12232
  static read(pbf, end) {
@@ -11818,7 +12236,7 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
11818
12236
  }
11819
12237
  static _readField(tag, obj, pbf) {
11820
12238
  if (tag === 1)
11821
- readPackedFixed64(pbf, obj);
12239
+ readPackedTypedArray(BigUint64Array, pbf, obj);
11822
12240
  }
11823
12241
  };
11824
12242
  var CellsReader = class {
@@ -11840,9 +12258,9 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
11840
12258
  }
11841
12259
  }
11842
12260
  };
11843
- var TileReader2 = class {
12261
+ var TileReader3 = class {
11844
12262
  static read(pbf, end) {
11845
- return pbf.readFields(TileReader2._readField, {
12263
+ return pbf.readFields(TileReader3._readField, {
11846
12264
  scheme: 0,
11847
12265
  cells: null
11848
12266
  }, end);
@@ -11856,6 +12274,7 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
11856
12274
  };
11857
12275
 
11858
12276
  // ../../node_modules/quadbin/dist/esm/index.js
12277
+ var import_tile_cover = __toESM(require_tile_cover());
11859
12278
  var B = [
11860
12279
  0x5555555555555555n,
11861
12280
  0x3333333333333333n,
@@ -11961,7 +12380,7 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
11961
12380
  function parseCartoSpatialTile(arrayBuffer, options) {
11962
12381
  if (!arrayBuffer)
11963
12382
  return null;
11964
- const tile = parsePbf(arrayBuffer, TileReader2);
12383
+ const tile = parsePbf(arrayBuffer, TileReader3);
11965
12384
  const {
11966
12385
  cells
11967
12386
  } = tile;
@@ -11976,7 +12395,7 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
11976
12395
 
11977
12396
  // src/layers/spatial-index-tile-layer.ts
11978
12397
  var import_geo_layers3 = __toESM(require_geo_layers());
11979
- (0, import_core2.registerLoaders)([carto_spatial_tile_loader_default]);
12398
+ (0, import_core2.registerLoaders)([carto_raster_tile_loader_default, carto_spatial_tile_loader_default]);
11980
12399
  function isFeatureIdDefined(value) {
11981
12400
  return value !== void 0 && value !== null && value !== "";
11982
12401
  }
@@ -11984,39 +12403,6 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
11984
12403
  aggregationResLevel: 4
11985
12404
  };
11986
12405
  var SpatialIndexTileLayer = class extends import_geo_layers3.TileLayer {
11987
- getTileData(tile) {
11988
- const {
11989
- data,
11990
- getTileData,
11991
- fetch: fetch2
11992
- } = this.props;
11993
- const {
11994
- signal
11995
- } = tile;
11996
- tile.url = typeof data === "string" || Array.isArray(data) ? (0, import_geo_layers3._getURLFromTemplate)(data, tile) : null;
11997
- if (!tile.url) {
11998
- return Promise.reject("Invalid URL");
11999
- }
12000
- if (getTileData) {
12001
- return getTileData(tile);
12002
- }
12003
- let loadOptions = this.getLoadOptions();
12004
- const {
12005
- formatTiles
12006
- } = this.props;
12007
- if (formatTiles === TILE_FORMATS.BINARY) {
12008
- loadOptions = {
12009
- ...loadOptions,
12010
- mimeType: "application/vnd.carto-spatial-tile"
12011
- };
12012
- }
12013
- return fetch2(tile.url, {
12014
- propName: "data",
12015
- layer: this,
12016
- loadOptions,
12017
- signal
12018
- });
12019
- }
12020
12406
  updateState(params) {
12021
12407
  const {
12022
12408
  props,
@@ -12161,7 +12547,8 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
12161
12547
  ...this.getLoadOptions(),
12162
12548
  cartoSpatialTile: {
12163
12549
  scheme: "h3"
12164
- }
12550
+ },
12551
+ mimeType: "application/vnd.carto-spatial-tile"
12165
12552
  }
12166
12553
  })];
12167
12554
  }
@@ -12193,15 +12580,18 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
12193
12580
 
12194
12581
  // src/layers/quadbin-utils.ts
12195
12582
  var TILE_SIZE2 = 512;
12196
- function quadbinToWorldBounds(quadbin, coverage) {
12583
+ function quadbinToOffset(quadbin) {
12197
12584
  const {
12198
12585
  x,
12199
12586
  y,
12200
12587
  z
12201
12588
  } = cellToTile(quadbin);
12202
- const mask = 1 << z;
12203
- const scale = mask / TILE_SIZE2;
12204
- return [[x / scale, TILE_SIZE2 - y / scale], [(x + coverage) / scale, TILE_SIZE2 - (y + coverage) / scale]];
12589
+ const scale = TILE_SIZE2 / (1 << z);
12590
+ return [x * scale, TILE_SIZE2 - y * scale, scale];
12591
+ }
12592
+ function quadbinToWorldBounds(quadbin, coverage) {
12593
+ const [xOffset, yOffset, scale] = quadbinToOffset(quadbin);
12594
+ return [[xOffset, yOffset], [xOffset + coverage * scale, yOffset - coverage * scale]];
12205
12595
  }
12206
12596
  function getQuadbinPolygon(quadbin, coverage = 1) {
12207
12597
  const [topLeft, bottomRight] = quadbinToWorldBounds(quadbin, coverage);
@@ -12323,7 +12713,8 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
12323
12713
  ...this.getLoadOptions(),
12324
12714
  cartoSpatialTile: {
12325
12715
  scheme: "quadbin"
12326
- }
12716
+ },
12717
+ mimeType: "application/vnd.carto-spatial-tile"
12327
12718
  }
12328
12719
  })];
12329
12720
  }
@@ -12331,11 +12722,284 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
12331
12722
  __publicField(QuadbinTileLayer, "layerName", "QuadbinTileLayer");
12332
12723
  __publicField(QuadbinTileLayer, "defaultProps", defaultProps5);
12333
12724
 
12725
+ // src/layers/raster-tile-layer.ts
12726
+ var import_core7 = __toESM(require_core());
12727
+
12728
+ // src/layers/raster-layer.ts
12729
+ var import_core6 = __toESM(require_core());
12730
+ var import_layers2 = __toESM(require_layers());
12731
+
12732
+ // src/layers/raster-layer-vertex.glsl.ts
12733
+ var raster_layer_vertex_glsl_default = `#version 300 es
12734
+ #define SHADER_NAME raster-layer-vertex-shader
12735
+
12736
+ in vec3 positions;
12737
+ in vec3 normals;
12738
+
12739
+ in float instanceElevations;
12740
+ in vec4 instanceFillColors;
12741
+ in vec4 instanceLineColors;
12742
+
12743
+ in vec3 instancePickingColors;
12744
+
12745
+ // Custom uniforms
12746
+ uniform float opacity;
12747
+ uniform bool extruded;
12748
+ uniform bool stroked;
12749
+ uniform bool isStroke;
12750
+ uniform float coverage;
12751
+ uniform float elevationScale;
12752
+ uniform float widthScale;
12753
+ uniform vec3 offset;
12754
+
12755
+ // Result
12756
+ out vec4 vColor;
12757
+ #ifdef FLAT_SHADING
12758
+ out vec4 position_commonspace;
12759
+ #endif
12760
+
12761
+ void main(void) {
12762
+ // Rather than positioning using attribute, layout pixel grid using gl_InstanceID
12763
+ vec2 common_position = offset.xy;
12764
+ float scale = offset.z;
12765
+
12766
+ int yIndex = - (gl_InstanceID / 256);
12767
+ int xIndex = gl_InstanceID + (yIndex * 256);
12768
+ common_position += scale * vec2(float(xIndex), float(yIndex));
12769
+
12770
+ vec4 color = isStroke ? instanceLineColors : instanceFillColors;
12771
+
12772
+ // if alpha == 0.0 or z < 0.0, do not render element
12773
+ float shouldRender = float(color.a > 0.0 && instanceElevations >= 0.0);
12774
+ float cellWidth = coverage * scale;
12775
+
12776
+ // Get position directly from quadbin, rather than projecting
12777
+ // Important to set geometry.position before using project_ methods below
12778
+ // as geometry.worldPosition is not set (we don't know our lat/long)
12779
+ geometry.position = vec4(common_position, 0.0, 1.0);
12780
+ if (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR_AUTO_OFFSET) {
12781
+ geometry.position.xyz -= project_uCommonOrigin;
12782
+ }
12783
+
12784
+ // calculate elevation, if 3d not enabled set to 0
12785
+ // cylindar geometry height are between -1.0 to 1.0, transform it to between 0, 1
12786
+ float elevation = 0.0;
12787
+ // calculate stroke offset
12788
+ float strokeOffsetRatio = 1.0;
12789
+
12790
+ if (extruded) {
12791
+ elevation = instanceElevations * (positions.z + 1.0) / 2.0 * elevationScale;
12792
+ } else if (stroked) {
12793
+ float halfOffset = project_pixel_size(widthScale) / cellWidth;
12794
+ if (isStroke) {
12795
+ strokeOffsetRatio -= sign(positions.z) * halfOffset;
12796
+ } else {
12797
+ strokeOffsetRatio -= halfOffset;
12798
+ }
12799
+ }
12800
+
12801
+ geometry.pickingColor = instancePickingColors;
12802
+
12803
+ // project center of column
12804
+ vec2 offset = (vec2(0.5) + positions.xy * strokeOffsetRatio) * cellWidth * shouldRender;
12805
+ vec3 pos = vec3(offset, project_size(elevation));
12806
+ DECKGL_FILTER_SIZE(pos, geometry);
12807
+
12808
+ geometry.position.xyz += pos;
12809
+ gl_Position = project_common_position_to_clipspace(geometry.position);
12810
+
12811
+ geometry.normal = project_normal(normals);
12812
+ DECKGL_FILTER_GL_POSITION(gl_Position, geometry);
12813
+
12814
+ // Light calculations
12815
+ if (extruded && !isStroke) {
12816
+ #ifdef FLAT_SHADING
12817
+ position_commonspace = geometry.position;
12818
+ vColor = vec4(color.rgb, color.a * opacity);
12819
+ #else
12820
+ vec3 lightColor = lighting_getLightColor(color.rgb, project_uCameraPosition, geometry.position.xyz, geometry.normal);
12821
+ vColor = vec4(lightColor, color.a * opacity);
12822
+ #endif
12823
+ } else {
12824
+ vColor = vec4(color.rgb, color.a * opacity);
12825
+ }
12826
+
12827
+ DECKGL_FILTER_COLOR(vColor, geometry);
12828
+ }
12829
+ `;
12830
+
12334
12831
  // src/utils.ts
12335
12832
  var import_core5 = __toESM(require_core());
12336
12833
  function assert2(condition, message) {
12337
12834
  import_core5.log.assert(condition, message);
12338
12835
  }
12836
+ function createBinaryProxy(data, index) {
12837
+ const {
12838
+ properties,
12839
+ numericProps
12840
+ } = data;
12841
+ return new Proxy(properties[index] || {}, {
12842
+ get(target, property, receiver) {
12843
+ if (property in numericProps) {
12844
+ return numericProps[property].value[index];
12845
+ }
12846
+ return target[property];
12847
+ },
12848
+ has(target, property) {
12849
+ return property in numericProps || property in target;
12850
+ }
12851
+ });
12852
+ }
12853
+
12854
+ // src/layers/raster-layer.ts
12855
+ var defaultProps6 = {
12856
+ ...import_layers2.ColumnLayer.defaultProps,
12857
+ extruded: false,
12858
+ diskResolution: 4,
12859
+ vertices: [[-0.5, -0.5], [0.5, -0.5], [0.5, 0.5], [-0.5, 0.5]]
12860
+ };
12861
+ var RasterColumnLayer = class extends import_layers2.ColumnLayer {
12862
+ getShaders() {
12863
+ const shaders = super.getShaders();
12864
+ return {
12865
+ ...shaders,
12866
+ vs: raster_layer_vertex_glsl_default
12867
+ };
12868
+ }
12869
+ initializeState() {
12870
+ const attributeManager = this.getAttributeManager();
12871
+ attributeManager.addInstanced({
12872
+ instanceElevations: {
12873
+ size: 1,
12874
+ transition: true,
12875
+ accessor: "getElevation"
12876
+ },
12877
+ instanceFillColors: {
12878
+ size: this.props.colorFormat.length,
12879
+ type: esm_default.UNSIGNED_BYTE,
12880
+ normalized: true,
12881
+ transition: true,
12882
+ accessor: "getFillColor",
12883
+ defaultValue: [0, 0, 0, 255]
12884
+ },
12885
+ instanceLineColors: {
12886
+ size: this.props.colorFormat.length,
12887
+ type: esm_default.UNSIGNED_BYTE,
12888
+ normalized: true,
12889
+ transition: true,
12890
+ accessor: "getLineColor",
12891
+ defaultValue: [255, 255, 255, 255]
12892
+ }
12893
+ });
12894
+ }
12895
+ };
12896
+ __publicField(RasterColumnLayer, "layerName", "RasterColumnLayer");
12897
+ var RasterLayer = class extends import_core6.CompositeLayer {
12898
+ renderLayers() {
12899
+ const {
12900
+ data,
12901
+ getElevation,
12902
+ getFillColor,
12903
+ getLineColor,
12904
+ getLineWidth,
12905
+ tileIndex,
12906
+ updateTriggers
12907
+ } = this.props;
12908
+ if (!data || !tileIndex)
12909
+ return null;
12910
+ const {
12911
+ blockWidth,
12912
+ blockHeight
12913
+ } = data;
12914
+ assert2(blockWidth === blockHeight, `blockWidth (${blockWidth}) must equal blockHeight (${blockHeight})`);
12915
+ const [xOffset, yOffset, scale] = quadbinToOffset(tileIndex);
12916
+ const offset = [xOffset, yOffset, scale / blockWidth];
12917
+ const CellLayer = this.getSubLayerClass("column", RasterColumnLayer);
12918
+ return new CellLayer(this.props, this.getSubLayerProps({
12919
+ id: "cell",
12920
+ updateTriggers,
12921
+ getElevation: this.getSubLayerAccessor(getElevation),
12922
+ getFillColor: this.getSubLayerAccessor(getFillColor),
12923
+ getLineColor: this.getSubLayerAccessor(getLineColor),
12924
+ getLineWidth: this.getSubLayerAccessor(getLineWidth)
12925
+ }), {
12926
+ data: {
12927
+ data,
12928
+ length: blockWidth * blockHeight
12929
+ },
12930
+ offset
12931
+ });
12932
+ }
12933
+ getSubLayerAccessor(accessor) {
12934
+ if (typeof accessor !== "function") {
12935
+ return super.getSubLayerAccessor(accessor);
12936
+ }
12937
+ return (object, info) => {
12938
+ const {
12939
+ data,
12940
+ index
12941
+ } = info;
12942
+ const binaryData = data.data;
12943
+ const proxy = createBinaryProxy(binaryData.cells, index);
12944
+ return accessor({
12945
+ properties: proxy
12946
+ }, info);
12947
+ };
12948
+ }
12949
+ };
12950
+ __publicField(RasterLayer, "layerName", "RasterLayer");
12951
+ __publicField(RasterLayer, "defaultProps", defaultProps6);
12952
+
12953
+ // src/layers/raster-tile-layer.ts
12954
+ var renderSubLayers3 = (props) => {
12955
+ const tileIndex = props.tile?.index?.q;
12956
+ if (!tileIndex)
12957
+ return null;
12958
+ return new RasterLayer(props, {
12959
+ tileIndex
12960
+ });
12961
+ };
12962
+ var RasterTileLayer = class extends import_core7.CompositeLayer {
12963
+ initializeState() {
12964
+ this.setState({
12965
+ data: null,
12966
+ tileJSON: null
12967
+ });
12968
+ }
12969
+ updateState({
12970
+ changeFlags
12971
+ }) {
12972
+ if (changeFlags.dataChanged) {
12973
+ let {
12974
+ data
12975
+ } = this.props;
12976
+ const tileJSON = data;
12977
+ data = tileJSON.tiles;
12978
+ this.setState({
12979
+ data,
12980
+ tileJSON
12981
+ });
12982
+ }
12983
+ }
12984
+ renderLayers() {
12985
+ const {
12986
+ data,
12987
+ tileJSON
12988
+ } = this.state;
12989
+ const minZoom = parseInt(tileJSON?.minzoom);
12990
+ const maxZoom = parseInt(tileJSON?.maxzoom);
12991
+ return [new SpatialIndexTileLayer(this.props, {
12992
+ id: `raster-tile-layer-${this.props.id}`,
12993
+ data,
12994
+ TilesetClass: QuadbinTileset2D,
12995
+ renderSubLayers: renderSubLayers3,
12996
+ minZoom,
12997
+ maxZoom
12998
+ })];
12999
+ }
13000
+ };
13001
+ __publicField(RasterTileLayer, "layerName", "RasterTileLayer");
13002
+ __publicField(RasterTileLayer, "defaultProps", {});
12339
13003
 
12340
13004
  // src/api/layer-map.ts
12341
13005
  var SCALE_FUNCS = {
@@ -12417,7 +13081,7 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
12417
13081
  elevationPercentile: ["elevationLowerPercentile", "elevationUpperPercentile"],
12418
13082
  percentile: ["lowerPercentile", "upperPercentile"]
12419
13083
  };
12420
- var defaultProps6 = {
13084
+ var defaultProps7 = {
12421
13085
  lineMiterLimit: 2,
12422
13086
  lineWidthUnits: "pixels",
12423
13087
  pointRadiusUnits: "pixels",
@@ -12447,7 +13111,7 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
12447
13111
  const hexagonId = config.columns?.hex_id;
12448
13112
  const layerTypeDefs = {
12449
13113
  point: {
12450
- Layer: import_layers2.GeoJsonLayer,
13114
+ Layer: import_layers3.GeoJsonLayer,
12451
13115
  propMap: {
12452
13116
  columns: {
12453
13117
  altitude: (x) => ({
@@ -12462,7 +13126,7 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
12462
13126
  }
12463
13127
  },
12464
13128
  geojson: {
12465
- Layer: import_layers2.GeoJsonLayer
13129
+ Layer: import_layers3.GeoJsonLayer
12466
13130
  },
12467
13131
  grid: {
12468
13132
  Layer: import_aggregation_layers.CPUGridLayer,
@@ -12523,19 +13187,22 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
12523
13187
  ...layer,
12524
13188
  propMap: mergePropMaps(basePropMap, layer.propMap),
12525
13189
  defaultProps: {
12526
- ...defaultProps6,
13190
+ ...defaultProps7,
12527
13191
  ...layer.defaultProps
12528
13192
  }
12529
13193
  };
12530
13194
  }
12531
- function layerFromTileDataset(formatTiles = TILE_FORMATS.MVT, scheme) {
13195
+ function layerFromTileDataset(formatTiles = TILE_FORMATS.MVT, scheme, type) {
13196
+ if (type === "raster") {
13197
+ return RasterTileLayer;
13198
+ }
12532
13199
  if (scheme === "h3") {
12533
13200
  return H3TileLayer;
12534
13201
  }
12535
13202
  if (scheme === "quadbin") {
12536
13203
  return QuadbinTileLayer;
12537
13204
  }
12538
- if (formatTiles === TILE_FORMATS.MVT) {
13205
+ if (formatTiles === "mvt") {
12539
13206
  return import_geo_layers7.MVTLayer;
12540
13207
  }
12541
13208
  return CartoTileLayer;
@@ -12554,7 +13221,7 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
12554
13221
  Layer: layerFromTileDataset(formatTiles, scheme),
12555
13222
  propMap: basePropMap,
12556
13223
  defaultProps: {
12557
- ...defaultProps6,
13224
+ ...defaultProps7,
12558
13225
  ...aggregationExp && {
12559
13226
  aggregationExp
12560
13227
  },
@@ -12620,21 +13287,7 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
12620
13287
  data: data2,
12621
13288
  index
12622
13289
  } = info;
12623
- const {
12624
- properties,
12625
- numericProps
12626
- } = data2;
12627
- const proxy = new Proxy(properties[index] || {}, {
12628
- get(target, property, receiver) {
12629
- if (property in numericProps) {
12630
- return numericProps[property].value[index];
12631
- }
12632
- return target[property];
12633
- },
12634
- has(target, property) {
12635
- return property in numericProps || property in target;
12636
- }
12637
- });
13290
+ const proxy = createBinaryProxy(data2, index);
12638
13291
  return accessor(proxy);
12639
13292
  };
12640
13293
  }
@@ -12798,10 +13451,10 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
12798
13451
  }
12799
13452
 
12800
13453
  // src/layers/point-label-layer.ts
12801
- var import_core6 = __toESM(require_core());
12802
- var import_layers3 = __toESM(require_layers());
13454
+ var import_core8 = __toESM(require_core());
13455
+ var import_layers4 = __toESM(require_layers());
12803
13456
  var [LEFT, TOP, RIGHT, BOTTOM] = [0, 1, 2, 3];
12804
- var EnhancedTextBackgroundLayer = class extends import_layers3._TextBackgroundLayer {
13457
+ var EnhancedTextBackgroundLayer = class extends import_layers4._TextBackgroundLayer {
12805
13458
  getShaders() {
12806
13459
  const shaders = super.getShaders();
12807
13460
  let vs = shaders.vs;
@@ -12814,7 +13467,7 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
12814
13467
  }
12815
13468
  };
12816
13469
  __publicField(EnhancedTextBackgroundLayer, "layerName", "EnhancedTextBackgroundLayer");
12817
- var EnhancedTextLayer = class extends import_layers3.TextLayer {
13470
+ var EnhancedTextLayer = class extends import_layers4.TextLayer {
12818
13471
  filterSubLayer({
12819
13472
  layer,
12820
13473
  renderPass
@@ -12827,8 +13480,8 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
12827
13480
  }
12828
13481
  };
12829
13482
  __publicField(EnhancedTextLayer, "layerName", "EnhancedTextLayer");
12830
- var defaultProps7 = {
12831
- ...import_layers3.TextLayer.defaultProps,
13483
+ var defaultProps8 = {
13484
+ ...import_layers4.TextLayer.defaultProps,
12832
13485
  getRadius: {
12833
13486
  type: "accessor",
12834
13487
  value: 1
@@ -12839,7 +13492,7 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
12839
13492
  value: 1
12840
13493
  }
12841
13494
  };
12842
- var PointLabelLayer = class extends import_core6.CompositeLayer {
13495
+ var PointLabelLayer = class extends import_core8.CompositeLayer {
12843
13496
  calculatePixelOffset(secondary) {
12844
13497
  const {
12845
13498
  getTextAnchor: anchor,
@@ -12979,10 +13632,10 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
12979
13632
  }
12980
13633
  };
12981
13634
  __publicField(PointLabelLayer, "layerName", "PointLabelLayer");
12982
- __publicField(PointLabelLayer, "defaultProps", defaultProps7);
13635
+ __publicField(PointLabelLayer, "defaultProps", defaultProps8);
12983
13636
 
12984
13637
  // src/api/parseMap.ts
12985
- var import_core7 = __toESM(require_core());
13638
+ var import_core9 = __toESM(require_core());
12986
13639
  var import_extensions2 = __toESM(require_extensions());
12987
13640
  var collisionFilterExtension = new import_extensions2.CollisionFilterExtension();
12988
13641
  function parseMap(json) {
@@ -13029,13 +13682,13 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
13029
13682
  const {
13030
13683
  Layer,
13031
13684
  propMap,
13032
- defaultProps: defaultProps9
13685
+ defaultProps: defaultProps10
13033
13686
  } = getLayer(type, config, dataset);
13034
13687
  const styleProps = createStyleProps(config, propMap);
13035
13688
  return new Layer({
13036
13689
  id,
13037
13690
  data,
13038
- ...defaultProps9,
13691
+ ...defaultProps10,
13039
13692
  ...createInteractionProps(interactionConfig),
13040
13693
  ...styleProps,
13041
13694
  ...createChannelProps(id, type, config, visualChannels, data),
@@ -13043,7 +13696,7 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
13043
13696
  ...createLoadOptions(token)
13044
13697
  });
13045
13698
  } catch (e) {
13046
- import_core7.log.error(e.message)();
13699
+ import_core9.log.error(e.message)();
13047
13700
  return void 0;
13048
13701
  }
13049
13702
  })
@@ -13202,7 +13855,7 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
13202
13855
  data
13203
13856
  );
13204
13857
  }
13205
- if (heightField) {
13858
+ if (heightField && visConfig.enable3d) {
13206
13859
  result.getElevation = getSizeAccessor(
13207
13860
  heightField,
13208
13861
  heightScale,
@@ -13316,7 +13969,7 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
13316
13969
  }
13317
13970
 
13318
13971
  // src/api/maps-v3-client.ts
13319
- var import_core8 = __toESM(require_core());
13972
+ var import_core10 = __toESM(require_core());
13320
13973
  var MAX_GET_LENGTH = 8192;
13321
13974
  var DEFAULT_CLIENT = "deck-gl-carto";
13322
13975
  var V3_MINOR_VERSION = "3.1";
@@ -13364,7 +14017,14 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
13364
14017
  body,
13365
14018
  errorContext
13366
14019
  });
13367
- const json = await response.json();
14020
+ let json;
14021
+ try {
14022
+ json = await response.json();
14023
+ } catch (error) {
14024
+ json = {
14025
+ error: ""
14026
+ };
14027
+ }
13368
14028
  if (!response.ok) {
13369
14029
  throw new CartoAPIError(json.error, errorContext, response);
13370
14030
  }
@@ -13643,7 +14303,7 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
13643
14303
  assert2(url && mapFormat, "Unsupported data formats received from backend.");
13644
14304
  }
13645
14305
  if (format2 === FORMATS.TILEJSON && formatTiles) {
13646
- import_core8.log.assert(Object.values(TILE_FORMATS).includes(formatTiles), `Invalid value for formatTiles: ${formatTiles}. Use value from TILE_FORMATS`);
14306
+ import_core10.log.assert(Object.values(TILE_FORMATS).includes(formatTiles), `Invalid value for formatTiles: ${formatTiles}. Use value from TILE_FORMATS`);
13647
14307
  url += `&${encodeParameter("formatTiles", formatTiles)}`;
13648
14308
  }
13649
14309
  const {
@@ -13873,7 +14533,7 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
13873
14533
  }
13874
14534
 
13875
14535
  // src/layers/carto-layer.ts
13876
- var defaultProps8 = {
14536
+ var defaultProps9 = {
13877
14537
  data: null,
13878
14538
  type: null,
13879
14539
  onDataLoad: {
@@ -13906,7 +14566,7 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
13906
14566
  aggregationResLevel: null,
13907
14567
  queryParameters: null
13908
14568
  };
13909
- var CartoLayer = class extends import_core9.CompositeLayer {
14569
+ var CartoLayer = class extends import_core11.CompositeLayer {
13910
14570
  initializeState() {
13911
14571
  this.state = {
13912
14572
  data: null,
@@ -13931,23 +14591,23 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
13931
14591
  const {
13932
14592
  apiVersion
13933
14593
  } = localCreds;
13934
- import_core9.log.assert(Object.values(API_VERSIONS).includes(apiVersion), `Invalid apiVersion ${apiVersion}. Use API_VERSIONS enum.`);
14594
+ import_core11.log.assert(Object.values(API_VERSIONS).includes(apiVersion), `Invalid apiVersion ${apiVersion}. Use API_VERSIONS enum.`);
13935
14595
  if (apiVersion === API_VERSIONS.V1 || apiVersion === API_VERSIONS.V2) {
13936
- import_core9.log.assert(type === MAP_TYPES.QUERY || type === MAP_TYPES.TILESET, `Invalid type ${type}. Use type MAP_TYPES.QUERY or MAP_TYPES.TILESET for apiVersion ${apiVersion}`);
13937
- import_core9.log.assert(!connection, `Connection prop is not supported for apiVersion ${apiVersion}`);
13938
- import_core9.log.assert(!geoColumn, `geoColumn prop is not supported for apiVersion ${apiVersion}`);
13939
- import_core9.log.assert(!columns, `columns prop is not supported for apiVersion ${apiVersion}`);
14596
+ import_core11.log.assert(type === MAP_TYPES.QUERY || type === MAP_TYPES.TILESET, `Invalid type ${type}. Use type MAP_TYPES.QUERY or MAP_TYPES.TILESET for apiVersion ${apiVersion}`);
14597
+ import_core11.log.assert(!connection, `Connection prop is not supported for apiVersion ${apiVersion}`);
14598
+ import_core11.log.assert(!geoColumn, `geoColumn prop is not supported for apiVersion ${apiVersion}`);
14599
+ import_core11.log.assert(!columns, `columns prop is not supported for apiVersion ${apiVersion}`);
13940
14600
  } else if (apiVersion === API_VERSIONS.V3) {
13941
- import_core9.log.assert(connection, "Missing mandatory connection parameter");
13942
- import_core9.log.assert(Object.values(MAP_TYPES).includes(type), `Invalid type ${type}. Use MAP_TYPES enum.`);
14601
+ import_core11.log.assert(connection, "Missing mandatory connection parameter");
14602
+ import_core11.log.assert(Object.values(MAP_TYPES).includes(type), `Invalid type ${type}. Use MAP_TYPES enum.`);
13943
14603
  if (!COLUMNS_SUPPORT.includes(type)) {
13944
- import_core9.log.assert(!columns, `columns prop is only supported for types: ${COLUMNS_SUPPORT.join()}`);
14604
+ import_core11.log.assert(!columns, `columns prop is only supported for types: ${COLUMNS_SUPPORT.join()}`);
13945
14605
  }
13946
14606
  if (!GEO_COLUMN_SUPPORT.includes(type)) {
13947
- import_core9.log.assert(!geoColumn, `geoColumn prop is only supported for types: ${GEO_COLUMN_SUPPORT.join()}`);
14607
+ import_core11.log.assert(!geoColumn, `geoColumn prop is only supported for types: ${GEO_COLUMN_SUPPORT.join()}`);
13948
14608
  }
13949
14609
  if (columns) {
13950
- import_core9.log.assert(Array.isArray(columns), "columns prop must be an Array");
14610
+ import_core11.log.assert(Array.isArray(columns), "columns prop must be an Array");
13951
14611
  }
13952
14612
  }
13953
14613
  }
@@ -14025,7 +14685,7 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
14025
14685
  } = this.state;
14026
14686
  const {
14027
14687
  uniqueIdProperty
14028
- } = defaultProps8;
14688
+ } = defaultProps9;
14029
14689
  const {
14030
14690
  data: _notUsed,
14031
14691
  ...propsNoData
@@ -14039,7 +14699,7 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
14039
14699
  }
14040
14700
  const tileUrl = new URL(data.tiles[0]);
14041
14701
  props.formatTiles = props.formatTiles || tileUrl.searchParams.get("formatTiles");
14042
- return [layerFromTileDataset(props.formatTiles, data.scheme), props];
14702
+ return [layerFromTileDataset(props.formatTiles, data.scheme, props.type), props];
14043
14703
  }
14044
14704
  renderLayers() {
14045
14705
  assert2(this.state);
@@ -14078,7 +14738,7 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
14078
14738
  }
14079
14739
  };
14080
14740
  __publicField(CartoLayer, "layerName", "CartoLayer");
14081
- __publicField(CartoLayer, "defaultProps", defaultProps8);
14741
+ __publicField(CartoLayer, "defaultProps", defaultProps9);
14082
14742
 
14083
14743
  // src/basemap.ts
14084
14744
  var baseUrl = "https://basemaps.cartocdn.com/gl/{basemap}-gl-style/style.json";
@@ -14204,9 +14864,9 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
14204
14864
 
14205
14865
  // ../layers/bundle/peer-dependency.ts
14206
14866
  var peer_dependency_exports = {};
14207
- var import_layers4 = __toESM(require_layers());
14867
+ var import_layers5 = __toESM(require_layers());
14208
14868
  __reExport(peer_dependency_exports, __toESM(require_layers()));
14209
- if (!import_layers4.GeoJsonLayer) {
14869
+ if (!import_layers5.GeoJsonLayer) {
14210
14870
  throw new Error("@deck.gl/layers is not found");
14211
14871
  }
14212
14872