@deck.gl/carto 9.0.33 → 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 (40) 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 +119 -112
  5. package/dist/index.cjs +114 -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-layer.d.ts.map +1 -1
  25. package/dist/layers/raster-layer.js +4 -0
  26. package/dist/layers/raster-tile-layer.d.ts.map +1 -1
  27. package/dist/layers/raster-tile-layer.js +11 -13
  28. package/dist/layers/schema/carto-raster-tile-loader.js +1 -1
  29. package/dist/layers/schema/carto-spatial-tile-loader.js +1 -1
  30. package/dist/layers/schema/carto-vector-tile-loader.js +1 -1
  31. package/dist.min.js +13 -39
  32. package/package.json +2 -2
  33. package/src/index.ts +21 -0
  34. package/src/layers/h3-tile-layer.ts +13 -15
  35. package/src/layers/heatmap-tile-layer.ts +86 -3
  36. package/src/layers/heatmap.ts +33 -97
  37. package/src/layers/quadbin-tile-layer.ts +11 -13
  38. package/src/layers/raster-layer-vertex.glsl.ts +1 -1
  39. package/src/layers/raster-layer.ts +10 -0
  40. package/src/layers/raster-tile-layer.ts +11 -13
@@ -1008,7 +1008,7 @@
1008
1008
  }
1009
1009
 
1010
1010
  // src/layers/schema/carto-raster-tile-loader.ts
1011
- var VERSION = true ? "9.0.33" : "latest";
1011
+ var VERSION = true ? "9.0.35" : "latest";
1012
1012
  var id = "cartoRasterTile";
1013
1013
  var DEFAULT_OPTIONS = {
1014
1014
  cartoRasterTile: {
@@ -1397,7 +1397,7 @@
1397
1397
  }
1398
1398
 
1399
1399
  // src/layers/schema/carto-spatial-tile-loader.ts
1400
- var VERSION = true ? "9.0.33" : "latest";
1400
+ var VERSION = true ? "9.0.35" : "latest";
1401
1401
  var id = "cartoSpatialTile";
1402
1402
  var DEFAULT_OPTIONS = {
1403
1403
  cartoSpatialTile: {
@@ -1625,7 +1625,7 @@
1625
1625
  }
1626
1626
 
1627
1627
  // src/layers/schema/carto-vector-tile-loader.ts
1628
- var VERSION = true ? "9.0.33" : "latest";
1628
+ var VERSION = true ? "9.0.35" : "latest";
1629
1629
  var id = "cartoVectorTile";
1630
1630
  var DEFAULT_OPTIONS = {
1631
1631
  cartoVectorTile: {
package/dist/dist.dev.js CHANGED
@@ -7001,7 +7001,10 @@ var __exports__ = (() => {
7001
7001
  VectorTileLayer: () => VectorTileLayer,
7002
7002
  _GOOGLE_BASEMAPS: () => GOOGLE_BASEMAPS,
7003
7003
  _PointLabelLayer: () => PointLabelLayer,
7004
+ _QuadbinLayer: () => QuadbinLayer,
7005
+ _RasterLayer: () => RasterLayer,
7004
7006
  _STYLE_LAYER_GROUPS: () => STYLE_LAYER_GROUPS,
7007
+ _SpatialIndexTileLayer: () => SpatialIndexTileLayer,
7005
7008
  _applyLayerGroupFilters: () => applyLayerGroupFilters,
7006
7009
  _fetchStyle: () => fetchStyle,
7007
7010
  _getStyleUrl: () => getStyleUrl,
@@ -8268,17 +8271,16 @@ var __exports__ = (() => {
8268
8271
  getHexagonResolution({ zoom: this.props.maxZoom, latitude: 0 }, this.props.tileSize)
8269
8272
  );
8270
8273
  }
8271
- return [
8272
- new SpatialIndexTileLayer(this.props, {
8273
- id: `h3-tile-layer-${this.props.id}`,
8274
- data,
8275
- TilesetClass: H3Tileset2D,
8276
- renderSubLayers,
8277
- minZoom: minresolution,
8278
- maxZoom: maxresolution,
8279
- loadOptions: this.getLoadOptions()
8280
- })
8281
- ];
8274
+ const SubLayerClass = this.getSubLayerClass("spatial-index-tile", SpatialIndexTileLayer);
8275
+ return new SubLayerClass(this.props, {
8276
+ id: `h3-tile-layer-${this.props.id}`,
8277
+ data,
8278
+ TilesetClass: H3Tileset2D,
8279
+ renderSubLayers,
8280
+ minZoom: minresolution,
8281
+ maxZoom: maxresolution,
8282
+ loadOptions: this.getLoadOptions()
8283
+ });
8282
8284
  }
8283
8285
  };
8284
8286
  H3TileLayer.layerName = "H3TileLayer";
@@ -8292,44 +8294,17 @@ var __exports__ = (() => {
8292
8294
  var glsl = (s) => `${s}`;
8293
8295
  var fs = glsl`\
8294
8296
  uniform heatmapUniforms {
8295
- vec2 delta;
8296
- float radiusPixels;
8297
8297
  vec2 colorDomain;
8298
- vec3 color1;
8299
- vec3 color2;
8300
- vec3 color3;
8301
- vec3 color4;
8302
- vec3 color5;
8303
- vec3 color6;
8298
+ vec2 delta;
8304
8299
  float intensity;
8305
8300
  float opacity;
8301
+ float radiusPixels;
8306
8302
  } heatmap;
8307
8303
 
8308
- const vec4 STOPS = vec4(0.2, 0.4, 0.6, 0.8);
8304
+ uniform sampler2D colorTexture;
8309
8305
 
8310
8306
  vec3 colorGradient(float value) {
8311
- vec3 c1;
8312
- vec3 c2;
8313
- vec2 range;
8314
- if (value < STOPS.x) {
8315
- range = vec2(0.0, STOPS.x);
8316
- c1 = heatmap.color1; c2 = heatmap.color2;
8317
- } else if (value < STOPS.y) {
8318
- range = STOPS.xy;
8319
- c1 = heatmap.color2; c2 = heatmap.color3;
8320
- } else if (value < STOPS.z) {
8321
- range = STOPS.yz;
8322
- c1 = heatmap.color3; c2 = heatmap.color4;
8323
- } else if (value < STOPS.w) {
8324
- range = STOPS.zw;
8325
- c1 = heatmap.color4; c2 = heatmap.color5;
8326
- } else {
8327
- range = vec2(STOPS.w, 1.0);
8328
- c1 = heatmap.color5; c2 = heatmap.color6;
8329
- }
8330
-
8331
- float f = (clamp(value, 0.0, 1.0) - range.x) / (range.y - range.x);
8332
- return mix(c1, c2, f) / 255.0;
8307
+ return texture(colorTexture, vec2(value, 0.5)).rgb;
8333
8308
  }
8334
8309
 
8335
8310
  const vec3 SHIFT = vec3(1.0, 256.0, 256.0 * 256.0);
@@ -8395,64 +8370,40 @@ vec4 heatmap_sampleColor(sampler2D source, vec2 texSize, vec2 texCoord) {
8395
8370
  return color;
8396
8371
  }
8397
8372
  `;
8398
- var defaultColorRange = [
8399
- [255, 255, 178],
8400
- [254, 217, 118],
8401
- [254, 178, 76],
8402
- [253, 141, 60],
8403
- [240, 59, 32],
8404
- [189, 0, 38]
8405
- ];
8406
8373
  var heatmap = {
8407
8374
  name: "heatmap",
8408
8375
  uniformPropTypes: {
8409
- delta: { value: [0, 1] },
8410
- radiusPixels: { value: 20, min: 0, softMax: 100 },
8411
8376
  colorDomain: { value: [0, 1] },
8412
- color1: { value: [0, 0, 0] },
8413
- color2: { value: [0, 0, 0] },
8414
- color3: { value: [0, 0, 0] },
8415
- color4: { value: [0, 0, 0] },
8416
- color5: { value: [0, 0, 0] },
8417
- color6: { value: [0, 0, 0] },
8377
+ delta: { value: [0, 1] },
8418
8378
  intensity: { value: 1, min: 0.1, max: 10 },
8419
- opacity: { value: 1, min: 0, max: 1 }
8379
+ opacity: { value: 1, min: 0, max: 1 },
8380
+ radiusPixels: { value: 20, min: 0, softMax: 100 }
8420
8381
  },
8421
8382
  uniformTypes: {
8422
- delta: "vec2<f32>",
8423
- radiusPixels: "f32",
8424
8383
  colorDomain: "vec2<f32>",
8425
- color1: "vec3<f32>",
8426
- color2: "vec3<f32>",
8427
- color3: "vec3<f32>",
8428
- color4: "vec3<f32>",
8429
- color5: "vec3<f32>",
8430
- color6: "vec3<f32>",
8384
+ delta: "vec2<f32>",
8431
8385
  intensity: "f32",
8432
- opacity: "f32"
8386
+ opacity: "f32",
8387
+ radiusPixels: "f32"
8433
8388
  },
8434
8389
  getUniforms: (opts) => {
8390
+ if (!opts)
8391
+ return {};
8435
8392
  const {
8436
- delta = [1, 0],
8437
- colorRange = defaultColorRange,
8438
- radiusPixels = 20,
8439
8393
  colorDomain = [0, 1],
8394
+ colorTexture,
8395
+ delta = [1, 0],
8440
8396
  intensity = 1,
8441
- opacity = 1
8397
+ opacity = 1,
8398
+ radiusPixels = 20
8442
8399
  } = opts;
8443
- const [color1, color2, color3, color4, color5, color6] = colorRange;
8444
8400
  return {
8445
- delta,
8446
- color1,
8447
- color2,
8448
- color3,
8449
- color4,
8450
- color5,
8451
- color6,
8452
- radiusPixels,
8453
8401
  colorDomain,
8402
+ colorTexture,
8403
+ delta,
8454
8404
  intensity,
8455
- opacity
8405
+ opacity,
8406
+ radiusPixels
8456
8407
  };
8457
8408
  },
8458
8409
  fs,
@@ -8627,26 +8578,55 @@ vec4 heatmap_sampleColor(sampler2D source, vec2 texSize, vec2 texCoord) {
8627
8578
  if (!tileJSON)
8628
8579
  return null;
8629
8580
  const { tiles: data, maxresolution: maxZoom } = tileJSON;
8630
- return [
8631
- new SpatialIndexTileLayer(this.props, {
8632
- id: `quadbin-tile-layer-${this.props.id}`,
8633
- data,
8634
- TilesetClass: QuadbinTileset2D,
8635
- renderSubLayers: renderSubLayers2,
8636
- maxZoom,
8637
- loadOptions: this.getLoadOptions()
8638
- })
8639
- ];
8581
+ const SubLayerClass = this.getSubLayerClass("spatial-index-tile", SpatialIndexTileLayer);
8582
+ return new SubLayerClass(this.props, {
8583
+ id: `quadbin-tile-layer-${this.props.id}`,
8584
+ data,
8585
+ TilesetClass: QuadbinTileset2D,
8586
+ renderSubLayers: renderSubLayers2,
8587
+ maxZoom,
8588
+ loadOptions: this.getLoadOptions()
8589
+ });
8640
8590
  }
8641
8591
  };
8642
8592
  QuadbinTileLayer.layerName = "QuadbinTileLayer";
8643
8593
  QuadbinTileLayer.defaultProps = defaultProps5;
8644
8594
 
8645
8595
  // src/layers/heatmap-tile-layer.ts
8596
+ var defaultColorRange = [
8597
+ [255, 255, 178],
8598
+ [254, 217, 118],
8599
+ [254, 178, 76],
8600
+ [253, 141, 60],
8601
+ [240, 59, 32],
8602
+ [189, 0, 38]
8603
+ ];
8604
+ var TEXTURE_PROPS2 = {
8605
+ format: "rgba8unorm",
8606
+ mipmaps: false,
8607
+ sampler: {
8608
+ minFilter: "linear",
8609
+ magFilter: "linear",
8610
+ addressModeU: "clamp-to-edge",
8611
+ addressModeV: "clamp-to-edge"
8612
+ }
8613
+ };
8646
8614
  function unitDensityForCell(cell) {
8647
8615
  const cellResolution = Number(getResolution(cell));
8648
8616
  return Math.pow(4, cellResolution);
8649
8617
  }
8618
+ function colorRangeToFlatArray(colorRange) {
8619
+ const flatArray = new Uint8Array(colorRange.length * 4);
8620
+ let index2 = 0;
8621
+ for (let i = 0; i < colorRange.length; i++) {
8622
+ const color2 = colorRange[i];
8623
+ flatArray[index2++] = color2[0];
8624
+ flatArray[index2++] = color2[1];
8625
+ flatArray[index2++] = color2[2];
8626
+ flatArray[index2++] = Number.isFinite(color2[3]) ? color2[3] : 255;
8627
+ }
8628
+ return flatArray;
8629
+ }
8650
8630
  var RTTSolidPolygonLayer = class extends RTTModifier(import_layers2.SolidPolygonLayer) {
8651
8631
  getShaders(type) {
8652
8632
  const shaders = super.getShaders(type);
@@ -8692,6 +8672,7 @@ uniform float densityFactor;
8692
8672
  getWeight: { type: "accessor", value: 1 },
8693
8673
  onMaxDensityChange: { type: "function", optional: true, value: null },
8694
8674
  colorDomain: { type: "array", value: [0, 1] },
8675
+ colorRange: defaultColorRange,
8695
8676
  intensity: { type: "number", value: 1 },
8696
8677
  radiusPixels: { type: "number", min: 0, max: 100, value: 20 }
8697
8678
  };
@@ -8708,12 +8689,18 @@ uniform float densityFactor;
8708
8689
  this.setState({ viewportChanged });
8709
8690
  return changeFlags.somethingChanged;
8710
8691
  }
8692
+ updateState(opts) {
8693
+ const { props, oldProps } = opts;
8694
+ super.updateState(opts);
8695
+ if (props.colorRange !== oldProps.colorRange) {
8696
+ this._updateColorTexture(opts);
8697
+ }
8698
+ }
8711
8699
  renderLayers() {
8712
8700
  const {
8713
8701
  data,
8714
8702
  getWeight,
8715
8703
  colorDomain,
8716
- colorRange,
8717
8704
  intensity,
8718
8705
  radiusPixels,
8719
8706
  _subLayerProps,
@@ -8761,11 +8748,11 @@ uniform float densityFactor;
8761
8748
  getElevation: getWeight,
8762
8749
  elevationScale: maxDensity,
8763
8750
  colorDomain,
8764
- colorRange,
8765
8751
  radiusPixels,
8766
8752
  intensity,
8767
8753
  _subLayerProps: subLayerProps,
8768
8754
  refinementStrategy: "no-overlap",
8755
+ colorTexture: this.state.colorTexture,
8769
8756
  extruded: false,
8770
8757
  stroked: false,
8771
8758
  updateTriggers: {
@@ -8802,6 +8789,23 @@ uniform float densityFactor;
8802
8789
  })
8803
8790
  );
8804
8791
  }
8792
+ _updateColorTexture(opts) {
8793
+ const { colorRange } = opts.props;
8794
+ let { colorTexture } = this.state;
8795
+ const colors = colorRangeToFlatArray(colorRange);
8796
+ if (colorTexture && colorTexture?.width === colorRange.length) {
8797
+ colorTexture.setSubImageData({ data: colors });
8798
+ } else {
8799
+ colorTexture?.destroy();
8800
+ colorTexture = this.context.device.createTexture({
8801
+ ...TEXTURE_PROPS2,
8802
+ data: colors,
8803
+ width: colorRange.length,
8804
+ height: 1
8805
+ });
8806
+ }
8807
+ this.setState({ colorTexture });
8808
+ }
8805
8809
  };
8806
8810
  HeatmapTileLayer.layerName = "HeatmapTileLayer";
8807
8811
  HeatmapTileLayer.defaultProps = defaultProps6;
@@ -9020,7 +9024,7 @@ void main(void) {
9020
9024
 
9021
9025
  int yIndex = - (gl_InstanceID / BLOCK_WIDTH);
9022
9026
  int xIndex = gl_InstanceID + (yIndex * BLOCK_WIDTH);
9023
- common_position += scale * vec2(float(xIndex), float(yIndex));
9027
+ common_position += scale * vec2(float(xIndex), float(yIndex - 1));
9024
9028
 
9025
9029
  vec4 color = isStroke ? instanceLineColors : instanceFillColors;
9026
9030
 
@@ -9128,6 +9132,9 @@ void main(void) {
9128
9132
  }
9129
9133
  };
9130
9134
  RasterColumnLayer.layerName = "RasterColumnLayer";
9135
+ function wrappedDataComparator(oldData, newData) {
9136
+ return oldData.data === newData.data && oldData.length === newData.length;
9137
+ }
9131
9138
  var RasterLayer = class extends import_core13.CompositeLayer {
9132
9139
  renderLayers() {
9133
9140
  const {
@@ -9161,6 +9168,7 @@ void main(void) {
9161
9168
  data,
9162
9169
  length: blockSize * blockSize
9163
9170
  },
9171
+ dataComparator: wrappedDataComparator,
9164
9172
  offset,
9165
9173
  highlightedObjectIndex,
9166
9174
  highlightColor
@@ -9233,17 +9241,16 @@ void main(void) {
9233
9241
  if (!tileJSON)
9234
9242
  return null;
9235
9243
  const { tiles: data, minzoom: minZoom, maxzoom: maxZoom } = tileJSON;
9236
- return [
9237
- new import_geo_layers7.TileLayer(this.props, {
9238
- id: `raster-tile-layer-${this.props.id}`,
9239
- data,
9240
- TilesetClass: QuadbinTileset2D,
9241
- renderSubLayers: renderSubLayers3,
9242
- minZoom,
9243
- maxZoom,
9244
- loadOptions: this.getLoadOptions()
9245
- })
9246
- ];
9244
+ const SubLayerClass = this.getSubLayerClass("tile", import_geo_layers7.TileLayer);
9245
+ return new SubLayerClass(this.props, {
9246
+ id: `raster-tile-layer-${this.props.id}`,
9247
+ data,
9248
+ TilesetClass: QuadbinTileset2D,
9249
+ renderSubLayers: renderSubLayers3,
9250
+ minZoom,
9251
+ maxZoom,
9252
+ loadOptions: this.getLoadOptions()
9253
+ });
9247
9254
  }
9248
9255
  };
9249
9256
  RasterTileLayer.layerName = "RasterTileLayer";
@@ -10218,7 +10225,7 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
10218
10225
  }
10219
10226
 
10220
10227
  // ../../node_modules/d3-color/src/color.js
10221
- function Color2() {
10228
+ function Color3() {
10222
10229
  }
10223
10230
  var darker = 0.7;
10224
10231
  var brighter = 1 / darker;
@@ -10382,7 +10389,7 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
10382
10389
  yellow: 16776960,
10383
10390
  yellowgreen: 10145074
10384
10391
  };
10385
- define_default(Color2, color, {
10392
+ define_default(Color3, color, {
10386
10393
  copy(channels) {
10387
10394
  return Object.assign(new this.constructor(), this, channels);
10388
10395
  },
@@ -10422,7 +10429,7 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
10422
10429
  return new Rgb(r, g, b, a);
10423
10430
  }
10424
10431
  function rgbConvert(o) {
10425
- if (!(o instanceof Color2))
10432
+ if (!(o instanceof Color3))
10426
10433
  o = color(o);
10427
10434
  if (!o)
10428
10435
  return new Rgb();
@@ -10438,7 +10445,7 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
10438
10445
  this.b = +b;
10439
10446
  this.opacity = +opacity;
10440
10447
  }
10441
- define_default(Rgb, rgb, extend(Color2, {
10448
+ define_default(Rgb, rgb, extend(Color3, {
10442
10449
  brighter(k) {
10443
10450
  k = k == null ? brighter : Math.pow(brighter, k);
10444
10451
  return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);
@@ -10494,7 +10501,7 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
10494
10501
  function hslConvert(o) {
10495
10502
  if (o instanceof Hsl)
10496
10503
  return new Hsl(o.h, o.s, o.l, o.opacity);
10497
- if (!(o instanceof Color2))
10504
+ if (!(o instanceof Color3))
10498
10505
  o = color(o);
10499
10506
  if (!o)
10500
10507
  return new Hsl();
@@ -10525,7 +10532,7 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
10525
10532
  this.l = +l;
10526
10533
  this.opacity = +opacity;
10527
10534
  }
10528
- define_default(Hsl, hsl, extend(Color2, {
10535
+ define_default(Hsl, hsl, extend(Color3, {
10529
10536
  brighter(k) {
10530
10537
  k = k == null ? brighter : Math.pow(brighter, k);
10531
10538
  return new Hsl(this.h, this.s, this.l * k, this.opacity);