@deck.gl/carto 9.0.34 → 9.0.35

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 (37) hide show
  1. package/dist/cartoRasterTile-worker.js +1 -1
  2. package/dist/cartoSpatialTile-worker.js +1 -1
  3. package/dist/cartoVectorTile-worker.js +1 -1
  4. package/dist/dist.dev.js +115 -112
  5. package/dist/index.cjs +110 -105
  6. package/dist/index.cjs.map +3 -3
  7. package/dist/index.d.ts +13 -0
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +7 -0
  10. package/dist/layers/h3-tile-layer.d.ts +3 -3
  11. package/dist/layers/h3-tile-layer.d.ts.map +1 -1
  12. package/dist/layers/h3-tile-layer.js +12 -14
  13. package/dist/layers/heatmap-tile-layer.d.ts +11 -1
  14. package/dist/layers/heatmap-tile-layer.d.ts.map +1 -1
  15. package/dist/layers/heatmap-tile-layer.js +62 -2
  16. package/dist/layers/heatmap.d.ts +69 -22
  17. package/dist/layers/heatmap.d.ts.map +1 -1
  18. package/dist/layers/heatmap.js +20 -69
  19. package/dist/layers/quadbin-tile-layer.d.ts +3 -3
  20. package/dist/layers/quadbin-tile-layer.d.ts.map +1 -1
  21. package/dist/layers/quadbin-tile-layer.js +10 -12
  22. package/dist/layers/raster-layer-vertex.glsl.d.ts +1 -1
  23. package/dist/layers/raster-layer-vertex.glsl.js +1 -1
  24. package/dist/layers/raster-tile-layer.d.ts.map +1 -1
  25. package/dist/layers/raster-tile-layer.js +11 -13
  26. package/dist/layers/schema/carto-raster-tile-loader.js +1 -1
  27. package/dist/layers/schema/carto-spatial-tile-loader.js +1 -1
  28. package/dist/layers/schema/carto-vector-tile-loader.js +1 -1
  29. package/dist.min.js +13 -39
  30. package/package.json +2 -2
  31. package/src/index.ts +21 -0
  32. package/src/layers/h3-tile-layer.ts +13 -15
  33. package/src/layers/heatmap-tile-layer.ts +86 -3
  34. package/src/layers/heatmap.ts +33 -97
  35. package/src/layers/quadbin-tile-layer.ts +11 -13
  36. package/src/layers/raster-layer-vertex.glsl.ts +1 -1
  37. package/src/layers/raster-tile-layer.ts +11 -13
package/dist/index.cjs CHANGED
@@ -39,7 +39,10 @@ __export(dist_exports, {
39
39
  VectorTileLayer: () => vector_tile_layer_default,
40
40
  _GOOGLE_BASEMAPS: () => GOOGLE_BASEMAPS,
41
41
  _PointLabelLayer: () => point_label_layer_default,
42
+ _QuadbinLayer: () => quadbin_layer_default,
43
+ _RasterLayer: () => raster_layer_default,
42
44
  _STYLE_LAYER_GROUPS: () => STYLE_LAYER_GROUPS,
45
+ _SpatialIndexTileLayer: () => spatial_index_tile_layer_default,
43
46
  _applyLayerGroupFilters: () => applyLayerGroupFilters,
44
47
  _fetchStyle: () => fetchStyle,
45
48
  _getStyleUrl: () => getStyleUrl,
@@ -548,7 +551,7 @@ function binaryToSpatialjson(binary) {
548
551
  }
549
552
 
550
553
  // dist/layers/schema/carto-spatial-tile-loader.js
551
- var VERSION = true ? "9.0.34" : "latest";
554
+ var VERSION = true ? "9.0.35" : "latest";
552
555
  var id = "cartoSpatialTile";
553
556
  var DEFAULT_OPTIONS = {
554
557
  cartoSpatialTile: {
@@ -913,7 +916,7 @@ var TileReader3 = class {
913
916
  };
914
917
 
915
918
  // dist/layers/schema/carto-raster-tile-loader.js
916
- var VERSION2 = true ? "9.0.34" : "latest";
919
+ var VERSION2 = true ? "9.0.35" : "latest";
917
920
  var id2 = "cartoRasterTile";
918
921
  var DEFAULT_OPTIONS2 = {
919
922
  cartoRasterTile: {
@@ -1045,17 +1048,16 @@ var H3TileLayer = class extends import_core8.CompositeLayer {
1045
1048
  if (this.props.maxZoom) {
1046
1049
  maxresolution = Math.min(maxresolution, getHexagonResolution({ zoom: this.props.maxZoom, latitude: 0 }, this.props.tileSize));
1047
1050
  }
1048
- return [
1049
- new spatial_index_tile_layer_default(this.props, {
1050
- id: `h3-tile-layer-${this.props.id}`,
1051
- data,
1052
- TilesetClass: H3Tileset2D,
1053
- renderSubLayers,
1054
- minZoom: minresolution,
1055
- maxZoom: maxresolution,
1056
- loadOptions: this.getLoadOptions()
1057
- })
1058
- ];
1051
+ const SubLayerClass = this.getSubLayerClass("spatial-index-tile", spatial_index_tile_layer_default);
1052
+ return new SubLayerClass(this.props, {
1053
+ id: `h3-tile-layer-${this.props.id}`,
1054
+ data,
1055
+ TilesetClass: H3Tileset2D,
1056
+ renderSubLayers,
1057
+ minZoom: minresolution,
1058
+ maxZoom: maxresolution,
1059
+ loadOptions: this.getLoadOptions()
1060
+ });
1059
1061
  }
1060
1062
  };
1061
1063
  H3TileLayer.layerName = "H3TileLayer";
@@ -1069,41 +1071,15 @@ var import_layers2 = require("@deck.gl/layers");
1069
1071
 
1070
1072
  // dist/layers/heatmap.js
1071
1073
  var fs = `uniform heatmapUniforms {
1072
- vec2 delta;
1073
- float radiusPixels;
1074
1074
  vec2 colorDomain;
1075
- vec3 color1;
1076
- vec3 color2;
1077
- vec3 color3;
1078
- vec3 color4;
1079
- vec3 color5;
1080
- vec3 color6;
1075
+ vec2 delta;
1081
1076
  float intensity;
1082
1077
  float opacity;
1078
+ float radiusPixels;
1083
1079
  } heatmap;
1084
- const vec4 STOPS = vec4(0.2, 0.4, 0.6, 0.8);
1080
+ uniform sampler2D colorTexture;
1085
1081
  vec3 colorGradient(float value) {
1086
- vec3 c1;
1087
- vec3 c2;
1088
- vec2 range;
1089
- if (value < STOPS.x) {
1090
- range = vec2(0.0, STOPS.x);
1091
- c1 = heatmap.color1; c2 = heatmap.color2;
1092
- } else if (value < STOPS.y) {
1093
- range = STOPS.xy;
1094
- c1 = heatmap.color2; c2 = heatmap.color3;
1095
- } else if (value < STOPS.z) {
1096
- range = STOPS.yz;
1097
- c1 = heatmap.color3; c2 = heatmap.color4;
1098
- } else if (value < STOPS.w) {
1099
- range = STOPS.zw;
1100
- c1 = heatmap.color4; c2 = heatmap.color5;
1101
- } else {
1102
- range = vec2(STOPS.w, 1.0);
1103
- c1 = heatmap.color5; c2 = heatmap.color6;
1104
- }
1105
- float f = (clamp(value, 0.0, 1.0) - range.x) / (range.y - range.x);
1106
- return mix(c1, c2, f) / 255.0;
1082
+ return texture(colorTexture, vec2(value, 0.5)).rgb;
1107
1083
  }
1108
1084
  const vec3 SHIFT = vec3(1.0, 256.0, 256.0 * 256.0);
1109
1085
  const float MAX_VAL = SHIFT.z * 255.0;
@@ -1143,57 +1119,33 @@ color.a *= heatmap.opacity;
1143
1119
  return color;
1144
1120
  }
1145
1121
  `;
1146
- var defaultColorRange = [
1147
- [255, 255, 178],
1148
- [254, 217, 118],
1149
- [254, 178, 76],
1150
- [253, 141, 60],
1151
- [240, 59, 32],
1152
- [189, 0, 38]
1153
- ];
1154
1122
  var heatmap = {
1155
1123
  name: "heatmap",
1156
1124
  uniformPropTypes: {
1157
- delta: { value: [0, 1] },
1158
- radiusPixels: { value: 20, min: 0, softMax: 100 },
1159
1125
  colorDomain: { value: [0, 1] },
1160
- color1: { value: [0, 0, 0] },
1161
- color2: { value: [0, 0, 0] },
1162
- color3: { value: [0, 0, 0] },
1163
- color4: { value: [0, 0, 0] },
1164
- color5: { value: [0, 0, 0] },
1165
- color6: { value: [0, 0, 0] },
1126
+ delta: { value: [0, 1] },
1166
1127
  intensity: { value: 1, min: 0.1, max: 10 },
1167
- opacity: { value: 1, min: 0, max: 1 }
1128
+ opacity: { value: 1, min: 0, max: 1 },
1129
+ radiusPixels: { value: 20, min: 0, softMax: 100 }
1168
1130
  },
1169
1131
  uniformTypes: {
1170
- delta: "vec2<f32>",
1171
- radiusPixels: "f32",
1172
1132
  colorDomain: "vec2<f32>",
1173
- color1: "vec3<f32>",
1174
- color2: "vec3<f32>",
1175
- color3: "vec3<f32>",
1176
- color4: "vec3<f32>",
1177
- color5: "vec3<f32>",
1178
- color6: "vec3<f32>",
1133
+ delta: "vec2<f32>",
1179
1134
  intensity: "f32",
1180
- opacity: "f32"
1135
+ opacity: "f32",
1136
+ radiusPixels: "f32"
1181
1137
  },
1182
1138
  getUniforms: (opts) => {
1183
- const { delta = [1, 0], colorRange = defaultColorRange, radiusPixels = 20, colorDomain = [0, 1], intensity = 1, opacity = 1 } = opts;
1184
- const [color1, color2, color3, color4, color5, color6] = colorRange;
1139
+ if (!opts)
1140
+ return {};
1141
+ const { colorDomain = [0, 1], colorTexture, delta = [1, 0], intensity = 1, opacity = 1, radiusPixels = 20 } = opts;
1185
1142
  return {
1186
- delta,
1187
- color1,
1188
- color2,
1189
- color3,
1190
- color4,
1191
- color5,
1192
- color6,
1193
- radiusPixels,
1194
1143
  colorDomain,
1144
+ colorTexture,
1145
+ delta,
1195
1146
  intensity,
1196
- opacity
1147
+ opacity,
1148
+ radiusPixels
1197
1149
  };
1198
1150
  },
1199
1151
  fs,
@@ -1370,16 +1322,15 @@ var QuadbinTileLayer = class extends import_core10.CompositeLayer {
1370
1322
  if (!tileJSON)
1371
1323
  return null;
1372
1324
  const { tiles: data, maxresolution: maxZoom } = tileJSON;
1373
- return [
1374
- new spatial_index_tile_layer_default(this.props, {
1375
- id: `quadbin-tile-layer-${this.props.id}`,
1376
- data,
1377
- TilesetClass: QuadbinTileset2D,
1378
- renderSubLayers: renderSubLayers2,
1379
- maxZoom,
1380
- loadOptions: this.getLoadOptions()
1381
- })
1382
- ];
1325
+ const SubLayerClass = this.getSubLayerClass("spatial-index-tile", spatial_index_tile_layer_default);
1326
+ return new SubLayerClass(this.props, {
1327
+ id: `quadbin-tile-layer-${this.props.id}`,
1328
+ data,
1329
+ TilesetClass: QuadbinTileset2D,
1330
+ renderSubLayers: renderSubLayers2,
1331
+ maxZoom,
1332
+ loadOptions: this.getLoadOptions()
1333
+ });
1383
1334
  }
1384
1335
  };
1385
1336
  QuadbinTileLayer.layerName = "QuadbinTileLayer";
@@ -1387,10 +1338,40 @@ QuadbinTileLayer.defaultProps = defaultProps5;
1387
1338
  var quadbin_tile_layer_default = QuadbinTileLayer;
1388
1339
 
1389
1340
  // dist/layers/heatmap-tile-layer.js
1341
+ var defaultColorRange = [
1342
+ [255, 255, 178],
1343
+ [254, 217, 118],
1344
+ [254, 178, 76],
1345
+ [253, 141, 60],
1346
+ [240, 59, 32],
1347
+ [189, 0, 38]
1348
+ ];
1349
+ var TEXTURE_PROPS2 = {
1350
+ format: "rgba8unorm",
1351
+ mipmaps: false,
1352
+ sampler: {
1353
+ minFilter: "linear",
1354
+ magFilter: "linear",
1355
+ addressModeU: "clamp-to-edge",
1356
+ addressModeV: "clamp-to-edge"
1357
+ }
1358
+ };
1390
1359
  function unitDensityForCell(cell) {
1391
1360
  const cellResolution = Number((0, import_quadbin6.getResolution)(cell));
1392
1361
  return Math.pow(4, cellResolution);
1393
1362
  }
1363
+ function colorRangeToFlatArray(colorRange) {
1364
+ const flatArray = new Uint8Array(colorRange.length * 4);
1365
+ let index = 0;
1366
+ for (let i = 0; i < colorRange.length; i++) {
1367
+ const color = colorRange[i];
1368
+ flatArray[index++] = color[0];
1369
+ flatArray[index++] = color[1];
1370
+ flatArray[index++] = color[2];
1371
+ flatArray[index++] = Number.isFinite(color[3]) ? color[3] : 255;
1372
+ }
1373
+ return flatArray;
1374
+ }
1394
1375
  var RTTSolidPolygonLayer = class extends RTTModifier(import_layers2.SolidPolygonLayer) {
1395
1376
  getShaders(type) {
1396
1377
  const shaders = super.getShaders(type);
@@ -1436,6 +1417,7 @@ var defaultProps6 = {
1436
1417
  getWeight: { type: "accessor", value: 1 },
1437
1418
  onMaxDensityChange: { type: "function", optional: true, value: null },
1438
1419
  colorDomain: { type: "array", value: [0, 1] },
1420
+ colorRange: defaultColorRange,
1439
1421
  intensity: { type: "number", value: 1 },
1440
1422
  radiusPixels: { type: "number", min: 0, max: 100, value: 20 }
1441
1423
  };
@@ -1452,9 +1434,16 @@ var HeatmapTileLayer = class extends import_core11.CompositeLayer {
1452
1434
  this.setState({ viewportChanged });
1453
1435
  return changeFlags.somethingChanged;
1454
1436
  }
1437
+ updateState(opts) {
1438
+ const { props, oldProps } = opts;
1439
+ super.updateState(opts);
1440
+ if (props.colorRange !== oldProps.colorRange) {
1441
+ this._updateColorTexture(opts);
1442
+ }
1443
+ }
1455
1444
  renderLayers() {
1456
1445
  var _a, _b, _c;
1457
- const { data, getWeight, colorDomain, colorRange, intensity, radiusPixels, _subLayerProps, updateTriggers, onMaxDensityChange, onViewportLoad, onTileLoad, onTileUnload, ...tileLayerProps } = this.props;
1446
+ const { data, getWeight, colorDomain, intensity, radiusPixels, _subLayerProps, updateTriggers, onMaxDensityChange, onViewportLoad, onTileLoad, onTileUnload, ...tileLayerProps } = this.props;
1458
1447
  const subLayerProps = {
1459
1448
  ..._subLayerProps,
1460
1449
  cell: {
@@ -1490,11 +1479,11 @@ var HeatmapTileLayer = class extends import_core11.CompositeLayer {
1490
1479
  getElevation: getWeight,
1491
1480
  elevationScale: maxDensity,
1492
1481
  colorDomain,
1493
- colorRange,
1494
1482
  radiusPixels,
1495
1483
  intensity,
1496
1484
  _subLayerProps: subLayerProps,
1497
1485
  refinementStrategy: "no-overlap",
1486
+ colorTexture: this.state.colorTexture,
1498
1487
  extruded: false,
1499
1488
  stroked: false,
1500
1489
  updateTriggers: {
@@ -1530,6 +1519,23 @@ var HeatmapTileLayer = class extends import_core11.CompositeLayer {
1530
1519
  transitions: { elevationScale: { type: "spring", stiffness: 0.3, damping: 0.5 } }
1531
1520
  }));
1532
1521
  }
1522
+ _updateColorTexture(opts) {
1523
+ const { colorRange } = opts.props;
1524
+ let { colorTexture } = this.state;
1525
+ const colors = colorRangeToFlatArray(colorRange);
1526
+ if (colorTexture && (colorTexture == null ? void 0 : colorTexture.width) === colorRange.length) {
1527
+ colorTexture.setSubImageData({ data: colors });
1528
+ } else {
1529
+ colorTexture == null ? void 0 : colorTexture.destroy();
1530
+ colorTexture = this.context.device.createTexture({
1531
+ ...TEXTURE_PROPS2,
1532
+ data: colors,
1533
+ width: colorRange.length,
1534
+ height: 1
1535
+ });
1536
+ }
1537
+ this.setState({ colorTexture });
1538
+ }
1533
1539
  };
1534
1540
  HeatmapTileLayer.layerName = "HeatmapTileLayer";
1535
1541
  HeatmapTileLayer.defaultProps = defaultProps6;
@@ -1702,7 +1708,7 @@ vec2 common_position = offset.xy;
1702
1708
  float scale = offset.z;
1703
1709
  int yIndex = - (gl_InstanceID / BLOCK_WIDTH);
1704
1710
  int xIndex = gl_InstanceID + (yIndex * BLOCK_WIDTH);
1705
- common_position += scale * vec2(float(xIndex), float(yIndex));
1711
+ common_position += scale * vec2(float(xIndex), float(yIndex - 1));
1706
1712
  vec4 color = isStroke ? instanceLineColors : instanceFillColors;
1707
1713
  float shouldRender = float(color.a > 0.0 && instanceElevations >= 0.0);
1708
1714
  float cellWidth = coverage * scale;
@@ -1889,17 +1895,16 @@ var RasterTileLayer = class extends import_core14.CompositeLayer {
1889
1895
  if (!tileJSON)
1890
1896
  return null;
1891
1897
  const { tiles: data, minzoom: minZoom, maxzoom: maxZoom } = tileJSON;
1892
- return [
1893
- new import_geo_layers7.TileLayer(this.props, {
1894
- id: `raster-tile-layer-${this.props.id}`,
1895
- data,
1896
- TilesetClass: QuadbinTileset2D,
1897
- renderSubLayers: renderSubLayers3,
1898
- minZoom,
1899
- maxZoom,
1900
- loadOptions: this.getLoadOptions()
1901
- })
1902
- ];
1898
+ const SubLayerClass = this.getSubLayerClass("tile", import_geo_layers7.TileLayer);
1899
+ return new SubLayerClass(this.props, {
1900
+ id: `raster-tile-layer-${this.props.id}`,
1901
+ data,
1902
+ TilesetClass: QuadbinTileset2D,
1903
+ renderSubLayers: renderSubLayers3,
1904
+ minZoom,
1905
+ maxZoom,
1906
+ loadOptions: this.getLoadOptions()
1907
+ });
1903
1908
  }
1904
1909
  };
1905
1910
  RasterTileLayer.layerName = "RasterTileLayer";
@@ -1947,7 +1952,7 @@ var carto_properties_tile_loader_default = CartoPropertiesTileLoader;
1947
1952
 
1948
1953
  // dist/layers/schema/carto-vector-tile-loader.js
1949
1954
  var import_earcut = __toESM(require("earcut"), 1);
1950
- var VERSION3 = true ? "9.0.34" : "latest";
1955
+ var VERSION3 = true ? "9.0.35" : "latest";
1951
1956
  var id3 = "cartoVectorTile";
1952
1957
  var DEFAULT_OPTIONS3 = {
1953
1958
  cartoVectorTile: {