@deck.gl/core 9.3.0-alpha.6 → 9.3.0-beta.2

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 (48) hide show
  1. package/dist/dist.dev.js +125 -56
  2. package/dist/index.cjs +125 -60
  3. package/dist/index.cjs.map +3 -3
  4. package/dist/lib/attribute/attribute.d.ts +2 -0
  5. package/dist/lib/attribute/attribute.d.ts.map +1 -1
  6. package/dist/lib/attribute/attribute.js +57 -27
  7. package/dist/lib/attribute/attribute.js.map +1 -1
  8. package/dist/lib/constants.d.ts +11 -6
  9. package/dist/lib/constants.d.ts.map +1 -1
  10. package/dist/lib/constants.js +8 -9
  11. package/dist/lib/constants.js.map +1 -1
  12. package/dist/lib/init.js +2 -2
  13. package/dist/lib/init.js.map +1 -1
  14. package/dist/lib/layer.d.ts.map +1 -1
  15. package/dist/lib/layer.js +4 -6
  16. package/dist/lib/layer.js.map +1 -1
  17. package/dist/shaderlib/picking/picking.d.ts +1 -2
  18. package/dist/shaderlib/picking/picking.d.ts.map +1 -1
  19. package/dist/shaderlib/picking/picking.js +4 -4
  20. package/dist/shaderlib/picking/picking.js.map +1 -1
  21. package/dist/shaderlib/project/project-functions.d.ts.map +1 -1
  22. package/dist/shaderlib/project/project-functions.js +19 -10
  23. package/dist/shaderlib/project/project-functions.js.map +1 -1
  24. package/dist/shaderlib/project/project.glsl.d.ts.map +1 -1
  25. package/dist/shaderlib/project/project.glsl.js +10 -5
  26. package/dist/shaderlib/project/project.glsl.js.map +1 -1
  27. package/dist/shaderlib/project/project.wgsl.d.ts.map +1 -1
  28. package/dist/shaderlib/project/project.wgsl.js +10 -5
  29. package/dist/shaderlib/project/project.wgsl.js.map +1 -1
  30. package/dist/shaderlib/project/viewport-uniforms.d.ts +1 -0
  31. package/dist/shaderlib/project/viewport-uniforms.d.ts.map +1 -1
  32. package/dist/shaderlib/project/viewport-uniforms.js +28 -17
  33. package/dist/shaderlib/project/viewport-uniforms.js.map +1 -1
  34. package/dist/shaderlib/shadow/shadow.d.ts +1 -1
  35. package/dist/shaderlib/shadow/shadow.d.ts.map +1 -1
  36. package/dist/shaderlib/shadow/shadow.js +3 -2
  37. package/dist/shaderlib/shadow/shadow.js.map +1 -1
  38. package/dist.min.js +84 -84
  39. package/package.json +2 -2
  40. package/src/lib/attribute/attribute.ts +70 -27
  41. package/src/lib/constants.ts +18 -12
  42. package/src/lib/layer.ts +4 -6
  43. package/src/shaderlib/picking/picking.ts +4 -4
  44. package/src/shaderlib/project/project-functions.ts +20 -10
  45. package/src/shaderlib/project/project.glsl.ts +15 -6
  46. package/src/shaderlib/project/project.wgsl.ts +15 -6
  47. package/src/shaderlib/project/viewport-uniforms.ts +30 -21
  48. package/src/shaderlib/shadow/shadow.ts +6 -2
package/dist/index.cjs CHANGED
@@ -230,7 +230,7 @@ var json_loader_default = {
230
230
 
231
231
  // dist/lib/init.js
232
232
  function checkVersion() {
233
- const version = true ? "9.3.0-alpha.6" : globalThis.DECK_VERSION || "untranspiled source";
233
+ const version = true ? "9.3.0-beta.2" : globalThis.DECK_VERSION || "untranspiled source";
234
234
  const existingVersion = globalThis.deck && globalThis.deck.VERSION;
235
235
  if (existingVersion && existingVersion !== version) {
236
236
  throw new Error(`deck.gl - multiple versions detected: ${existingVersion} vs ${version}`);
@@ -399,33 +399,33 @@ var COORDINATE_SYSTEM = {
399
399
  /**
400
400
  * `LNGLAT` if rendering into a geospatial viewport, `CARTESIAN` otherwise
401
401
  */
402
- DEFAULT: -1,
402
+ DEFAULT: "default",
403
403
  /**
404
404
  * Positions are interpreted as [longitude, latitude, elevation]
405
405
  * longitude/latitude are in degrees, elevation is in meters.
406
406
  * Dimensions are in meters.
407
407
  */
408
- LNGLAT: 1,
408
+ LNGLAT: "lnglat",
409
409
  /**
410
410
  * Positions are interpreted as [x, y, z] in meter offsets from the coordinate origin.
411
411
  * Dimensions are in meters.
412
412
  */
413
- METER_OFFSETS: 2,
413
+ METER_OFFSETS: "meter-offsets",
414
414
  /**
415
415
  * Positions are interpreted as [deltaLng, deltaLat, elevation] from the coordinate origin.
416
416
  * deltaLng/deltaLat are in degrees, elevation is in meters.
417
417
  * Dimensions are in meters.
418
418
  */
419
- LNGLAT_OFFSETS: 3,
419
+ LNGLAT_OFFSETS: "lnglat-offsets",
420
420
  /**
421
421
  * Positions and dimensions are in the common units of the viewport.
422
422
  */
423
- CARTESIAN: 0
423
+ CARTESIAN: "cartesian"
424
424
  };
425
425
  Object.defineProperty(COORDINATE_SYSTEM, "IDENTITY", {
426
426
  get: () => {
427
427
  log_default.deprecated("COORDINATE_SYSTEM.IDENTITY", "COORDINATE_SYSTEM.CARTESIAN")();
428
- return 0;
428
+ return COORDINATE_SYSTEM.CARTESIAN;
429
429
  }
430
430
  });
431
431
  var PROJECTION_MODE = {
@@ -511,6 +511,20 @@ var VECTOR_TO_POINT_MATRIX = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0];
511
511
  var IDENTITY_MATRIX = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];
512
512
  var DEFAULT_PIXELS_PER_UNIT2 = [0, 0, 0];
513
513
  var DEFAULT_COORDINATE_ORIGIN = [0, 0, 0];
514
+ var COORDINATE_SYSTEM_NUMBERS = {
515
+ default: -1,
516
+ cartesian: 0,
517
+ lnglat: 1,
518
+ "meter-offsets": 2,
519
+ "lnglat-offsets": 3
520
+ };
521
+ function getShaderCoordinateSystem(coordinateSystem) {
522
+ const shaderCoordinateSystem = COORDINATE_SYSTEM_NUMBERS[coordinateSystem];
523
+ if (shaderCoordinateSystem === void 0) {
524
+ throw new Error(`Invalid coordinateSystem: ${coordinateSystem}`);
525
+ }
526
+ return shaderCoordinateSystem;
527
+ }
514
528
  var getMemoizedViewportUniforms = memoize(calculateViewportUniforms);
515
529
  function getOffsetOrigin(viewport, coordinateSystem, coordinateOrigin = DEFAULT_COORDINATE_ORIGIN) {
516
530
  if (coordinateOrigin.length < 3) {
@@ -519,7 +533,7 @@ function getOffsetOrigin(viewport, coordinateSystem, coordinateOrigin = DEFAULT_
519
533
  let shaderCoordinateOrigin = coordinateOrigin;
520
534
  let geospatialOrigin;
521
535
  let offsetMode = true;
522
- if (coordinateSystem === COORDINATE_SYSTEM.LNGLAT_OFFSETS || coordinateSystem === COORDINATE_SYSTEM.METER_OFFSETS) {
536
+ if (coordinateSystem === "lnglat-offsets" || coordinateSystem === "meter-offsets") {
523
537
  geospatialOrigin = coordinateOrigin;
524
538
  } else {
525
539
  geospatialOrigin = viewport.isGeospatial ? (
@@ -529,15 +543,15 @@ function getOffsetOrigin(viewport, coordinateSystem, coordinateOrigin = DEFAULT_
529
543
  }
530
544
  switch (viewport.projectionMode) {
531
545
  case PROJECTION_MODE.WEB_MERCATOR:
532
- if (coordinateSystem === COORDINATE_SYSTEM.LNGLAT || coordinateSystem === COORDINATE_SYSTEM.CARTESIAN) {
546
+ if (coordinateSystem === "lnglat" || coordinateSystem === "cartesian") {
533
547
  geospatialOrigin = [0, 0, 0];
534
548
  offsetMode = false;
535
549
  }
536
550
  break;
537
551
  case PROJECTION_MODE.WEB_MERCATOR_AUTO_OFFSET:
538
- if (coordinateSystem === COORDINATE_SYSTEM.LNGLAT) {
552
+ if (coordinateSystem === "lnglat") {
539
553
  shaderCoordinateOrigin = geospatialOrigin;
540
- } else if (coordinateSystem === COORDINATE_SYSTEM.CARTESIAN) {
554
+ } else if (coordinateSystem === "cartesian") {
541
555
  shaderCoordinateOrigin = [
542
556
  Math.fround(viewport.center[0]),
543
557
  Math.fround(viewport.center[1]),
@@ -597,12 +611,12 @@ function getUniformsFromViewport({
597
611
  devicePixelRatio = 1,
598
612
  modelMatrix = null,
599
613
  // Match Layer.defaultProps
600
- coordinateSystem = COORDINATE_SYSTEM.DEFAULT,
614
+ coordinateSystem = "default",
601
615
  coordinateOrigin = DEFAULT_COORDINATE_ORIGIN,
602
616
  autoWrapLongitude = false
603
617
  }) {
604
- if (coordinateSystem === COORDINATE_SYSTEM.DEFAULT) {
605
- coordinateSystem = viewport.isGeospatial ? COORDINATE_SYSTEM.LNGLAT : COORDINATE_SYSTEM.CARTESIAN;
618
+ if (coordinateSystem === "default") {
619
+ coordinateSystem = viewport.isGeospatial ? "lnglat" : "cartesian";
606
620
  }
607
621
  const uniforms = getMemoizedViewportUniforms({
608
622
  viewport,
@@ -624,7 +638,7 @@ function calculateViewportUniforms({ viewport, devicePixelRatio, coordinateSyste
624
638
  const focalDistance = import_core2.vec4.transformMat4([], [0, 0, -viewport.focalDistance, 1], viewport.projectionMatrix)[3] || 1;
625
639
  const uniforms = {
626
640
  // Projection mode values
627
- coordinateSystem,
641
+ coordinateSystem: getShaderCoordinateSystem(coordinateSystem),
628
642
  projectionMode: viewport.projectionMode,
629
643
  coordinateOrigin: shaderCoordinateOrigin,
630
644
  commonOrigin: originCommon.slice(0, 3),
@@ -651,19 +665,19 @@ function calculateViewportUniforms({ viewport, devicePixelRatio, coordinateSyste
651
665
  if (geospatialOrigin) {
652
666
  const distanceScalesAtOrigin = viewport.getDistanceScales(geospatialOrigin);
653
667
  switch (coordinateSystem) {
654
- case COORDINATE_SYSTEM.METER_OFFSETS:
668
+ case "meter-offsets":
655
669
  uniforms.commonUnitsPerWorldUnit = distanceScalesAtOrigin.unitsPerMeter;
656
670
  uniforms.commonUnitsPerWorldUnit2 = distanceScalesAtOrigin.unitsPerMeter2;
657
671
  break;
658
- case COORDINATE_SYSTEM.LNGLAT:
659
- case COORDINATE_SYSTEM.LNGLAT_OFFSETS:
672
+ case "lnglat":
673
+ case "lnglat-offsets":
660
674
  if (!viewport._pseudoMeters) {
661
675
  uniforms.commonUnitsPerMeter = distanceScalesAtOrigin.unitsPerMeter;
662
676
  }
663
677
  uniforms.commonUnitsPerWorldUnit = distanceScalesAtOrigin.unitsPerDegree;
664
678
  uniforms.commonUnitsPerWorldUnit2 = distanceScalesAtOrigin.unitsPerDegree2;
665
679
  break;
666
- case COORDINATE_SYSTEM.CARTESIAN:
680
+ case "cartesian":
667
681
  uniforms.commonUnitsPerWorldUnit = [1, 1, distanceScalesAtOrigin.unitsPerMeter[2]];
668
682
  uniforms.commonUnitsPerWorldUnit2 = [0, 0, distanceScalesAtOrigin.unitsPerMeter2[2]];
669
683
  break;
@@ -675,7 +689,14 @@ function calculateViewportUniforms({ viewport, devicePixelRatio, coordinateSyste
675
689
  }
676
690
 
677
691
  // dist/shaderlib/project/project.wgsl.js
678
- var COORDINATE_SYSTEM_WGSL_CONSTANTS = Object.keys(COORDINATE_SYSTEM).map((key) => `const COORDINATE_SYSTEM_${key}: i32 = ${COORDINATE_SYSTEM[key]};`).join("");
692
+ var SHADER_COORDINATE_SYSTEMS = [
693
+ "default",
694
+ "lnglat",
695
+ "meter-offsets",
696
+ "lnglat-offsets",
697
+ "cartesian"
698
+ ];
699
+ var COORDINATE_SYSTEM_WGSL_CONSTANTS = SHADER_COORDINATE_SYSTEMS.map((coordinateSystem) => `const COORDINATE_SYSTEM_${coordinateSystem.toUpperCase().replaceAll("-", "_")}: i32 = ${getShaderCoordinateSystem(coordinateSystem)};`).join("");
679
700
  var PROJECTION_MODE_WGSL_CONSTANTS = Object.keys(PROJECTION_MODE).map((key) => `const PROJECTION_MODE_${key}: i32 = ${PROJECTION_MODE[key]};`).join("");
680
701
  var UNIT_WGSL_CONSTANTS = Object.keys(UNIT).map((key) => `const UNIT_${key.toUpperCase()}: i32 = ${UNIT[key]};`).join("");
681
702
  var projectWGSLHeader = (
@@ -969,7 +990,14 @@ fn project_pixel_size_vec2(pixels: vec2<f32>) -> vec2<f32> {
969
990
  );
970
991
 
971
992
  // dist/shaderlib/project/project.glsl.js
972
- var COORDINATE_SYSTEM_GLSL_CONSTANTS = Object.keys(COORDINATE_SYSTEM).map((key) => `const int COORDINATE_SYSTEM_${key} = ${COORDINATE_SYSTEM[key]};`).join("");
993
+ var SHADER_COORDINATE_SYSTEMS2 = [
994
+ "default",
995
+ "lnglat",
996
+ "meter-offsets",
997
+ "lnglat-offsets",
998
+ "cartesian"
999
+ ];
1000
+ var COORDINATE_SYSTEM_GLSL_CONSTANTS = SHADER_COORDINATE_SYSTEMS2.map((coordinateSystem) => `const int COORDINATE_SYSTEM_${coordinateSystem.toUpperCase().replaceAll("-", "_")} = ${getShaderCoordinateSystem(coordinateSystem)};`).join("");
973
1001
  var PROJECTION_MODE_GLSL_CONSTANTS = Object.keys(PROJECTION_MODE).map((key) => `const int PROJECTION_MODE_${key} = ${PROJECTION_MODE[key]};`).join("");
974
1002
  var UNIT_GLSL_CONSTANTS = Object.keys(UNIT).map((key) => `const int UNIT_${key.toUpperCase()} = ${UNIT[key]};`).join("");
975
1003
  var projectGLSL = (
@@ -1465,7 +1493,7 @@ function createShadowUniforms(opts) {
1465
1493
  for (let i = 0; i < opts.shadowMatrices.length; i++) {
1466
1494
  const viewProjectionMatrix = viewProjectionMatrices[i];
1467
1495
  const viewProjectionMatrixCentered = viewProjectionMatrix.clone().translate(new import_core3.Vector3(projectProps.viewport.center).negate());
1468
- if (projectUniforms.coordinateSystem === COORDINATE_SYSTEM.LNGLAT && projectUniforms.projectionMode === PROJECTION_MODE.WEB_MERCATOR) {
1496
+ if (projectUniforms.coordinateSystem === getShaderCoordinateSystem("lnglat") && projectUniforms.projectionMode === PROJECTION_MODE.WEB_MERCATOR) {
1469
1497
  viewProjectionMatrices[i] = viewProjectionMatrixCentered;
1470
1498
  projectCenters[i] = center;
1471
1499
  } else {
@@ -1526,7 +1554,7 @@ var sourceWGSL = (
1526
1554
  isActive: f32,
1527
1555
  isAttribute: f32,
1528
1556
  isHighlightActive: f32,
1529
- useFloatColors: f32,
1557
+ useByteColors: f32,
1530
1558
  highlightedObjectColor: vec3<f32>,
1531
1559
  highlightColor: vec4<f32>,
1532
1560
  };
@@ -1534,11 +1562,11 @@ var sourceWGSL = (
1534
1562
  @group(0) @binding(auto) var<uniform> picking: pickingUniforms;
1535
1563
 
1536
1564
  fn picking_normalizeColor(color: vec3<f32>) -> vec3<f32> {
1537
- return select(color / 255.0, color, picking.useFloatColors > 0.5);
1565
+ return select(color, color / 255.0, picking.useByteColors > 0.5);
1538
1566
  }
1539
1567
 
1540
1568
  fn picking_normalizeColor4(color: vec4<f32>) -> vec4<f32> {
1541
- return select(color / 255.0, color, picking.useFloatColors > 0.5);
1569
+ return select(color, color / 255.0, picking.useByteColors > 0.5);
1542
1570
  }
1543
1571
 
1544
1572
  fn picking_isColorZero(color: vec3<f32>) -> bool {
@@ -1553,7 +1581,7 @@ fn picking_isColorValid(color: vec3<f32>) -> bool {
1553
1581
  var picking_default = {
1554
1582
  ...import_shadertools2.picking,
1555
1583
  source: sourceWGSL,
1556
- defaultUniforms: { ...import_shadertools2.picking.defaultUniforms, useFloatColors: false },
1584
+ defaultUniforms: { ...import_shadertools2.picking.defaultUniforms, useByteColors: true },
1557
1585
  inject: {
1558
1586
  "vs:DECKGL_FILTER_GL_POSITION": `
1559
1587
  // for picking depth values
@@ -2844,11 +2872,13 @@ function lngLatZToWorldPosition(lngLatZ, viewport, offsetMode = false) {
2844
2872
  function normalizeParameters(opts) {
2845
2873
  const { viewport, modelMatrix, coordinateOrigin } = opts;
2846
2874
  let { coordinateSystem, fromCoordinateSystem, fromCoordinateOrigin } = opts;
2847
- if (coordinateSystem === COORDINATE_SYSTEM.DEFAULT) {
2848
- coordinateSystem = viewport.isGeospatial ? COORDINATE_SYSTEM.LNGLAT : COORDINATE_SYSTEM.CARTESIAN;
2875
+ if (coordinateSystem === "default") {
2876
+ coordinateSystem = viewport.isGeospatial ? "lnglat" : "cartesian";
2849
2877
  }
2850
2878
  if (fromCoordinateSystem === void 0) {
2851
2879
  fromCoordinateSystem = coordinateSystem;
2880
+ } else if (fromCoordinateSystem === "default") {
2881
+ fromCoordinateSystem = viewport.isGeospatial ? "lnglat" : "cartesian";
2852
2882
  }
2853
2883
  if (fromCoordinateOrigin === void 0) {
2854
2884
  fromCoordinateOrigin = coordinateOrigin;
@@ -2868,15 +2898,24 @@ function getWorldPosition(position, { viewport, modelMatrix, coordinateSystem, c
2868
2898
  [x, y, z] = import_core9.vec4.transformMat4([], [x, y, z, 1], modelMatrix);
2869
2899
  }
2870
2900
  switch (coordinateSystem) {
2871
- case COORDINATE_SYSTEM.LNGLAT:
2901
+ case "default":
2902
+ return getWorldPosition(position, {
2903
+ viewport,
2904
+ modelMatrix,
2905
+ coordinateSystem: viewport.isGeospatial ? "lnglat" : "cartesian",
2906
+ coordinateOrigin,
2907
+ offsetMode
2908
+ });
2909
+ case "lnglat":
2872
2910
  return lngLatZToWorldPosition([x, y, z], viewport, offsetMode);
2873
- case COORDINATE_SYSTEM.LNGLAT_OFFSETS:
2911
+ case "lnglat-offsets":
2874
2912
  return lngLatZToWorldPosition([x + coordinateOrigin[0], y + coordinateOrigin[1], z + (coordinateOrigin[2] || 0)], viewport, offsetMode);
2875
- case COORDINATE_SYSTEM.METER_OFFSETS:
2913
+ case "meter-offsets":
2876
2914
  return lngLatZToWorldPosition((0, import_web_mercator4.addMetersToLngLat)(coordinateOrigin, [x, y, z]), viewport, offsetMode);
2877
- case COORDINATE_SYSTEM.CARTESIAN:
2878
- default:
2915
+ case "cartesian":
2879
2916
  return viewport.isGeospatial ? [x + coordinateOrigin[0], y + coordinateOrigin[1], z + coordinateOrigin[2]] : viewport.projectPosition([x, y, z]);
2917
+ default:
2918
+ throw new Error(`Invalid coordinateSystem: ${coordinateSystem}`);
2880
2919
  }
2881
2920
  }
2882
2921
  function projectPosition(position, params) {
@@ -7414,7 +7453,7 @@ TooltipWidget.defaultProps = {
7414
7453
  // dist/lib/deck.js
7415
7454
  var import_core17 = require("@luma.gl/core");
7416
7455
  var import_webgl = require("@luma.gl/webgl");
7417
- var import_constants11 = require("@luma.gl/webgl/constants");
7456
+ var import_constants10 = require("@luma.gl/webgl/constants");
7418
7457
  var import_engine3 = require("@luma.gl/engine");
7419
7458
  var import_engine4 = require("@luma.gl/engine");
7420
7459
  var import_stats2 = require("@probe.gl/stats");
@@ -9027,10 +9066,14 @@ var Attribute = class extends DataColumn {
9027
9066
  }
9028
9067
  if (!this.value) {
9029
9068
  } else if (this.constant || !this.buffer || this.buffer.byteLength < this.value.byteLength + this.byteOffset) {
9030
- this.setData({
9031
- value: this.value,
9032
- constant: this.constant
9033
- });
9069
+ if (this.constant) {
9070
+ this.setConstantValue(context, this.value);
9071
+ } else {
9072
+ this.setData({
9073
+ value: this.value,
9074
+ constant: this.constant
9075
+ });
9076
+ }
9034
9077
  this.constant = false;
9035
9078
  } else {
9036
9079
  for (const [startRow, endRow] of updateRanges) {
@@ -9050,17 +9093,13 @@ var Attribute = class extends DataColumn {
9050
9093
  // Use generic value
9051
9094
  // Returns true if successful
9052
9095
  setConstantValue(context, value) {
9053
- const isWebGPU = this.device.type === "webgpu";
9054
- if (isWebGPU || value === void 0 || typeof value === "function") {
9055
- if (isWebGPU && typeof value !== "function") {
9056
- const normalisedValue = this._normalizeValue(value, [], 0);
9057
- if (!this._areValuesEqual(normalisedValue, this.value)) {
9058
- this.setNeedsUpdate("WebGPU constant updated");
9059
- }
9060
- }
9096
+ if (value === void 0 || typeof value === "function") {
9061
9097
  return false;
9062
9098
  }
9063
9099
  const transformedValue = this.settings.transform && context ? this.settings.transform.call(context, value) : value;
9100
+ if (this.device.type === "webgpu") {
9101
+ return this.setConstantBufferValue(transformedValue, this.numInstances);
9102
+ }
9064
9103
  const hasChanged = this.setData({ constant: true, value: transformedValue });
9065
9104
  if (hasChanged) {
9066
9105
  this.setNeedsRedraw();
@@ -9068,6 +9107,41 @@ var Attribute = class extends DataColumn {
9068
9107
  this.clearNeedsUpdate();
9069
9108
  return true;
9070
9109
  }
9110
+ setConstantBufferValue(value, numInstances) {
9111
+ const ArrayType = this.settings.defaultType;
9112
+ const constantValue = this._normalizeValue(value, new ArrayType(this.size), 0);
9113
+ if (this._hasConstantBufferValue(constantValue, numInstances)) {
9114
+ this.constant = false;
9115
+ this.clearNeedsUpdate();
9116
+ return false;
9117
+ }
9118
+ const repeatedValue = new ArrayType(Math.max(numInstances, 1) * this.size);
9119
+ for (let i = 0; i < repeatedValue.length; i += this.size) {
9120
+ repeatedValue.set(constantValue, i);
9121
+ }
9122
+ const hasChanged = this.setData({ value: repeatedValue });
9123
+ this.constant = false;
9124
+ this.clearNeedsUpdate();
9125
+ if (hasChanged) {
9126
+ this.setNeedsRedraw();
9127
+ }
9128
+ return hasChanged;
9129
+ }
9130
+ _hasConstantBufferValue(value, numInstances) {
9131
+ const currentValue = this.value;
9132
+ const expectedLength = Math.max(numInstances, 1) * this.size;
9133
+ if (!ArrayBuffer.isView(currentValue) || currentValue.length !== expectedLength || currentValue.length % this.size !== 0) {
9134
+ return false;
9135
+ }
9136
+ for (let i = 0; i < currentValue.length; i += this.size) {
9137
+ for (let j = 0; j < this.size; j++) {
9138
+ if (currentValue[i + j] !== value[j]) {
9139
+ return false;
9140
+ }
9141
+ }
9142
+ }
9143
+ return true;
9144
+ }
9071
9145
  // Use external buffer
9072
9146
  // Returns true if successful
9073
9147
  // eslint-disable-next-line max-statements
@@ -9164,18 +9238,10 @@ var Attribute = class extends DataColumn {
9164
9238
  }
9165
9239
  /* eslint-disable max-depth, max-statements */
9166
9240
  _autoUpdater(attribute, { data, startRow, endRow, props, numInstances }) {
9167
- if (attribute.constant) {
9168
- if (this.context.device.type !== "webgpu") {
9169
- return;
9170
- }
9171
- }
9172
9241
  const { settings, state, value, size, startIndices } = attribute;
9173
9242
  const { accessor, transform } = settings;
9174
- let accessorFunc = state.binaryAccessor || // @ts-ignore
9243
+ const accessorFunc = state.binaryAccessor || // @ts-ignore
9175
9244
  (typeof accessor === "function" ? accessor : props[accessor]);
9176
- if (typeof accessorFunc !== "function" && typeof accessor === "string") {
9177
- accessorFunc = () => props[accessor];
9178
- }
9179
9245
  assert(typeof accessorFunc === "function", `accessor "${accessor}" is not a function`);
9180
9246
  let i = attribute.getVertexOffset(startRow);
9181
9247
  const { iterable, objectInfo } = createIterable(data, startRow, endRow);
@@ -9250,7 +9316,7 @@ var Attribute = class extends DataColumn {
9250
9316
  // dist/transitions/gpu-interpolation-transition.js
9251
9317
  var import_engine5 = require("@luma.gl/engine");
9252
9318
  var import_shadertools5 = require("@luma.gl/shadertools");
9253
- var import_constants14 = require("@luma.gl/webgl/constants");
9319
+ var import_constants13 = require("@luma.gl/webgl/constants");
9254
9320
 
9255
9321
  // dist/utils/array-utils.js
9256
9322
  function padArrayChunk(options) {
@@ -9317,7 +9383,7 @@ function padArray({ source: source3, target, size, getData, sourceStartIndices,
9317
9383
  }
9318
9384
 
9319
9385
  // dist/transitions/gpu-transition-utils.js
9320
- var import_constants13 = require("@luma.gl/webgl/constants");
9386
+ var import_constants12 = require("@luma.gl/webgl/constants");
9321
9387
  function cloneAttribute(attribute) {
9322
9388
  const { device, settings, value } = attribute;
9323
9389
  const newAttribute = new Attribute(device, settings);
@@ -11242,7 +11308,7 @@ var defaultProps2 = {
11242
11308
  onDragStart: { type: "function", value: null, optional: true },
11243
11309
  onDrag: { type: "function", value: null, optional: true },
11244
11310
  onDragEnd: { type: "function", value: null, optional: true },
11245
- coordinateSystem: COORDINATE_SYSTEM.DEFAULT,
11311
+ coordinateSystem: "default",
11246
11312
  coordinateOrigin: { type: "array", value: [0, 0, 0], compare: true },
11247
11313
  modelMatrix: { type: "array", value: null, compare: true, optional: true },
11248
11314
  wrapLongitude: false,
@@ -11385,7 +11451,7 @@ var Layer = class extends component_default {
11385
11451
  }
11386
11452
  use64bitPositions() {
11387
11453
  const { coordinateSystem } = this.props;
11388
- return coordinateSystem === COORDINATE_SYSTEM.DEFAULT || coordinateSystem === COORDINATE_SYSTEM.LNGLAT || coordinateSystem === COORDINATE_SYSTEM.CARTESIAN;
11454
+ return coordinateSystem === "default" || coordinateSystem === "lnglat" || coordinateSystem === "cartesian";
11389
11455
  }
11390
11456
  // Event handling
11391
11457
  onHover(info, pickingEvent) {
@@ -11767,7 +11833,6 @@ var Layer = class extends component_default {
11767
11833
  /* (Internal) Called by layer manager when a new layer is found */
11768
11834
  _initialize() {
11769
11835
  assert(!this.internalState);
11770
- assert(Number.isFinite(this.props.coordinateSystem));
11771
11836
  debug(TRACE_INITIALIZE, this);
11772
11837
  const attributeManager = this._getAttributeManager();
11773
11838
  if (attributeManager) {