@deck.gl/aggregation-layers 9.0.0-beta.5 → 9.0.0-beta.6

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 (53) hide show
  1. package/dist/contour-layer/contour-layer.d.ts.map +1 -1
  2. package/dist/contour-layer/contour-layer.js +2 -3
  3. package/dist/cpu-grid-layer/cpu-grid-layer.d.ts.map +1 -1
  4. package/dist/cpu-grid-layer/cpu-grid-layer.js +1 -2
  5. package/dist/dist.dev.js +265 -314
  6. package/dist/gpu-grid-layer/gpu-grid-cell-layer-fragment.glsl.js +2 -6
  7. package/dist/gpu-grid-layer/gpu-grid-cell-layer-vertex.glsl.js +50 -79
  8. package/dist/gpu-grid-layer/gpu-grid-cell-layer.js +4 -4
  9. package/dist/gpu-grid-layer/gpu-grid-layer.d.ts +1 -1
  10. package/dist/gpu-grid-layer/gpu-grid-layer.d.ts.map +1 -1
  11. package/dist/gpu-grid-layer/gpu-grid-layer.js +4 -4
  12. package/dist/grid-aggregation-layer.js +1 -1
  13. package/dist/heatmap-layer/heatmap-layer.d.ts +0 -1
  14. package/dist/heatmap-layer/heatmap-layer.d.ts.map +1 -1
  15. package/dist/heatmap-layer/heatmap-layer.js +4 -20
  16. package/dist/heatmap-layer/max-fs.glsl.js +2 -2
  17. package/dist/heatmap-layer/max-vs.glsl.js +6 -10
  18. package/dist/heatmap-layer/triangle-layer-fragment.glsl.js +15 -25
  19. package/dist/heatmap-layer/triangle-layer-vertex.glsl.js +11 -16
  20. package/dist/heatmap-layer/weights-fs.glsl.js +7 -11
  21. package/dist/heatmap-layer/weights-vs.glsl.js +7 -12
  22. package/dist/hexagon-layer/hexagon-layer.d.ts +1 -1
  23. package/dist/hexagon-layer/hexagon-layer.d.ts.map +1 -1
  24. package/dist/hexagon-layer/hexagon-layer.js +1 -2
  25. package/dist/index.cjs +223 -390
  26. package/dist/index.cjs.map +3 -3
  27. package/dist/screen-grid-layer/screen-grid-cell-layer.d.ts +1 -2
  28. package/dist/screen-grid-layer/screen-grid-cell-layer.d.ts.map +1 -1
  29. package/dist/screen-grid-layer/screen-grid-cell-layer.js +0 -3
  30. package/dist/screen-grid-layer/screen-grid-layer-fragment.glsl.js +5 -10
  31. package/dist/screen-grid-layer/screen-grid-layer-vertex.glsl.js +30 -42
  32. package/dist/screen-grid-layer/screen-grid-layer.d.ts +0 -3
  33. package/dist/screen-grid-layer/screen-grid-layer.d.ts.map +1 -1
  34. package/dist/screen-grid-layer/screen-grid-layer.js +1 -8
  35. package/dist/utils/gpu-grid-aggregation/aggregate-all-fs.glsl.js +6 -9
  36. package/dist/utils/gpu-grid-aggregation/aggregate-all-vs.glsl.js +14 -25
  37. package/dist/utils/gpu-grid-aggregation/aggregate-to-grid-fs.glsl.js +2 -6
  38. package/dist/utils/gpu-grid-aggregation/aggregate-to-grid-vs.glsl.js +25 -42
  39. package/dist/utils/gpu-grid-aggregation/gpu-grid-aggregator-constants.js +8 -8
  40. package/dist/utils/gpu-grid-aggregation/gpu-grid-aggregator.d.ts.map +1 -1
  41. package/dist/utils/gpu-grid-aggregation/gpu-grid-aggregator.js +13 -24
  42. package/dist/utils/gpu-grid-aggregation/transform-mean-vs.glsl.js +4 -9
  43. package/dist.min.js +212 -330
  44. package/package.json +7 -7
  45. package/src/contour-layer/contour-layer.ts +2 -3
  46. package/src/cpu-grid-layer/cpu-grid-layer.ts +1 -2
  47. package/src/gpu-grid-layer/gpu-grid-cell-layer.ts +1 -1
  48. package/src/gpu-grid-layer/gpu-grid-layer.ts +2 -2
  49. package/src/heatmap-layer/heatmap-layer.ts +5 -23
  50. package/src/hexagon-layer/hexagon-layer.ts +2 -3
  51. package/src/screen-grid-layer/screen-grid-cell-layer.ts +0 -4
  52. package/src/screen-grid-layer/screen-grid-layer.ts +1 -11
  53. package/src/utils/gpu-grid-aggregation/gpu-grid-aggregator.ts +4 -15
package/dist/dist.dev.js CHANGED
@@ -86,8 +86,222 @@ var __exports__ = (() => {
86
86
  // src/screen-grid-layer/screen-grid-layer.ts
87
87
  var import_core8 = __toESM(require_core(), 1);
88
88
 
89
- // ../../node_modules/@luma.gl/constants/dist/constants-enum.js
90
- var GLEnum = function(GLEnum2) {
89
+ // src/utils/gpu-grid-aggregation/gpu-grid-aggregator.ts
90
+ var import_engine = __toESM(require_engine(), 1);
91
+
92
+ // ../../node_modules/@luma.gl/shadertools/dist/lib/glsl-utils/highlight.js
93
+ var glsl = (x) => `${x}`;
94
+
95
+ // ../../node_modules/@luma.gl/shadertools/dist/modules-webgl1/math/fp64/fp64-utils.js
96
+ function fp64ify(a, out = [], startIndex = 0) {
97
+ const hiPart = Math.fround(a);
98
+ const loPart = a - hiPart;
99
+ out[startIndex] = hiPart;
100
+ out[startIndex + 1] = loPart;
101
+ return out;
102
+ }
103
+ function fp64LowPart(a) {
104
+ return a - Math.fround(a);
105
+ }
106
+ function fp64ifyMatrix4(matrix) {
107
+ const matrixFP64 = new Float32Array(32);
108
+ for (let i = 0; i < 4; ++i) {
109
+ for (let j = 0; j < 4; ++j) {
110
+ const index = i * 4 + j;
111
+ fp64ify(matrix[j * 4 + i], matrixFP64, index * 2);
112
+ }
113
+ }
114
+ return matrixFP64;
115
+ }
116
+
117
+ // ../../node_modules/@luma.gl/shadertools/dist/modules-webgl1/math/fp64/fp64-arithmetic-glsl.js
118
+ var fp64arithmeticShader = glsl`\
119
+ uniform float ONE;
120
+
121
+ /*
122
+ About LUMA_FP64_CODE_ELIMINATION_WORKAROUND
123
+
124
+ The purpose of this workaround is to prevent shader compilers from
125
+ optimizing away necessary arithmetic operations by swapping their sequences
126
+ or transform the equation to some 'equivalent' form.
127
+
128
+ The method is to multiply an artifical variable, ONE, which will be known to
129
+ the compiler to be 1 only at runtime. The whole expression is then represented
130
+ as a polynomial with respective to ONE. In the coefficients of all terms, only one a
131
+ and one b should appear
132
+
133
+ err = (a + b) * ONE^6 - a * ONE^5 - (a + b) * ONE^4 + a * ONE^3 - b - (a + b) * ONE^2 + a * ONE
134
+ */
135
+
136
+ // Divide float number to high and low floats to extend fraction bits
137
+ vec2 split(float a) {
138
+ const float SPLIT = 4097.0;
139
+ float t = a * SPLIT;
140
+ #if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
141
+ float a_hi = t * ONE - (t - a);
142
+ float a_lo = a * ONE - a_hi;
143
+ #else
144
+ float a_hi = t - (t - a);
145
+ float a_lo = a - a_hi;
146
+ #endif
147
+ return vec2(a_hi, a_lo);
148
+ }
149
+
150
+ // Divide float number again when high float uses too many fraction bits
151
+ vec2 split2(vec2 a) {
152
+ vec2 b = split(a.x);
153
+ b.y += a.y;
154
+ return b;
155
+ }
156
+
157
+ // Special sum operation when a > b
158
+ vec2 quickTwoSum(float a, float b) {
159
+ #if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
160
+ float sum = (a + b) * ONE;
161
+ float err = b - (sum - a) * ONE;
162
+ #else
163
+ float sum = a + b;
164
+ float err = b - (sum - a);
165
+ #endif
166
+ return vec2(sum, err);
167
+ }
168
+
169
+ // General sum operation
170
+ vec2 twoSum(float a, float b) {
171
+ float s = (a + b);
172
+ #if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
173
+ float v = (s * ONE - a) * ONE;
174
+ float err = (a - (s - v) * ONE) * ONE * ONE * ONE + (b - v);
175
+ #else
176
+ float v = s - a;
177
+ float err = (a - (s - v)) + (b - v);
178
+ #endif
179
+ return vec2(s, err);
180
+ }
181
+
182
+ vec2 twoSub(float a, float b) {
183
+ float s = (a - b);
184
+ #if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
185
+ float v = (s * ONE - a) * ONE;
186
+ float err = (a - (s - v) * ONE) * ONE * ONE * ONE - (b + v);
187
+ #else
188
+ float v = s - a;
189
+ float err = (a - (s - v)) - (b + v);
190
+ #endif
191
+ return vec2(s, err);
192
+ }
193
+
194
+ vec2 twoSqr(float a) {
195
+ float prod = a * a;
196
+ vec2 a_fp64 = split(a);
197
+ #if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
198
+ float err = ((a_fp64.x * a_fp64.x - prod) * ONE + 2.0 * a_fp64.x *
199
+ a_fp64.y * ONE * ONE) + a_fp64.y * a_fp64.y * ONE * ONE * ONE;
200
+ #else
201
+ float err = ((a_fp64.x * a_fp64.x - prod) + 2.0 * a_fp64.x * a_fp64.y) + a_fp64.y * a_fp64.y;
202
+ #endif
203
+ return vec2(prod, err);
204
+ }
205
+
206
+ vec2 twoProd(float a, float b) {
207
+ float prod = a * b;
208
+ vec2 a_fp64 = split(a);
209
+ vec2 b_fp64 = split(b);
210
+ float err = ((a_fp64.x * b_fp64.x - prod) + a_fp64.x * b_fp64.y +
211
+ a_fp64.y * b_fp64.x) + a_fp64.y * b_fp64.y;
212
+ return vec2(prod, err);
213
+ }
214
+
215
+ vec2 sum_fp64(vec2 a, vec2 b) {
216
+ vec2 s, t;
217
+ s = twoSum(a.x, b.x);
218
+ t = twoSum(a.y, b.y);
219
+ s.y += t.x;
220
+ s = quickTwoSum(s.x, s.y);
221
+ s.y += t.y;
222
+ s = quickTwoSum(s.x, s.y);
223
+ return s;
224
+ }
225
+
226
+ vec2 sub_fp64(vec2 a, vec2 b) {
227
+ vec2 s, t;
228
+ s = twoSub(a.x, b.x);
229
+ t = twoSub(a.y, b.y);
230
+ s.y += t.x;
231
+ s = quickTwoSum(s.x, s.y);
232
+ s.y += t.y;
233
+ s = quickTwoSum(s.x, s.y);
234
+ return s;
235
+ }
236
+
237
+ vec2 mul_fp64(vec2 a, vec2 b) {
238
+ vec2 prod = twoProd(a.x, b.x);
239
+ // y component is for the error
240
+ prod.y += a.x * b.y;
241
+ #if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)
242
+ prod = split2(prod);
243
+ #endif
244
+ prod = quickTwoSum(prod.x, prod.y);
245
+ prod.y += a.y * b.x;
246
+ #if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)
247
+ prod = split2(prod);
248
+ #endif
249
+ prod = quickTwoSum(prod.x, prod.y);
250
+ return prod;
251
+ }
252
+
253
+ vec2 div_fp64(vec2 a, vec2 b) {
254
+ float xn = 1.0 / b.x;
255
+ #if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)
256
+ vec2 yn = mul_fp64(a, vec2(xn, 0));
257
+ #else
258
+ vec2 yn = a * xn;
259
+ #endif
260
+ float diff = (sub_fp64(a, mul_fp64(b, yn))).x;
261
+ vec2 prod = twoProd(xn, diff);
262
+ return sum_fp64(yn, prod);
263
+ }
264
+
265
+ vec2 sqrt_fp64(vec2 a) {
266
+ if (a.x == 0.0 && a.y == 0.0) return vec2(0.0, 0.0);
267
+ if (a.x < 0.0) return vec2(0.0 / 0.0, 0.0 / 0.0);
268
+
269
+ float x = 1.0 / sqrt(a.x);
270
+ float yn = a.x * x;
271
+ #if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
272
+ vec2 yn_sqr = twoSqr(yn) * ONE;
273
+ #else
274
+ vec2 yn_sqr = twoSqr(yn);
275
+ #endif
276
+ float diff = sub_fp64(a, yn_sqr).x;
277
+ vec2 prod = twoProd(x * 0.5, diff);
278
+ #if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)
279
+ return sum_fp64(split(yn), prod);
280
+ #else
281
+ return sum_fp64(vec2(yn, 0.0), prod);
282
+ #endif
283
+ }
284
+ `;
285
+
286
+ // ../../node_modules/@luma.gl/shadertools/dist/modules-webgl1/math/fp64/fp64.js
287
+ var CONST_UNIFORMS = {
288
+ ONE: 1
289
+ };
290
+ function getUniforms() {
291
+ return CONST_UNIFORMS;
292
+ }
293
+ var fp64arithmetic = {
294
+ name: "fp64-arithmetic",
295
+ vs: fp64arithmeticShader,
296
+ getUniforms,
297
+ fp64ify,
298
+ fp64LowPart,
299
+ fp64ifyMatrix4
300
+ };
301
+
302
+ // ../../node_modules/@luma.gl/constants/dist/webgl-constants.js
303
+ var GLEnum;
304
+ (function(GLEnum2) {
91
305
  GLEnum2[GLEnum2["DEPTH_BUFFER_BIT"] = 256] = "DEPTH_BUFFER_BIT";
92
306
  GLEnum2[GLEnum2["STENCIL_BUFFER_BIT"] = 1024] = "STENCIL_BUFFER_BIT";
93
307
  GLEnum2[GLEnum2["COLOR_BUFFER_BIT"] = 16384] = "COLOR_BUFFER_BIT";
@@ -620,15 +834,10 @@ var __exports__ = (() => {
620
834
  GLEnum2[GLEnum2["INVALID_INDEX"] = 4294967295] = "INVALID_INDEX";
621
835
  GLEnum2[GLEnum2["TIMEOUT_IGNORED"] = -1] = "TIMEOUT_IGNORED";
622
836
  GLEnum2[GLEnum2["MAX_CLIENT_WAIT_TIMEOUT_WEBGL"] = 37447] = "MAX_CLIENT_WAIT_TIMEOUT_WEBGL";
623
- GLEnum2[GLEnum2["VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE"] = 35070] = "VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE";
624
837
  GLEnum2[GLEnum2["UNMASKED_VENDOR_WEBGL"] = 37445] = "UNMASKED_VENDOR_WEBGL";
625
838
  GLEnum2[GLEnum2["UNMASKED_RENDERER_WEBGL"] = 37446] = "UNMASKED_RENDERER_WEBGL";
626
839
  GLEnum2[GLEnum2["MAX_TEXTURE_MAX_ANISOTROPY_EXT"] = 34047] = "MAX_TEXTURE_MAX_ANISOTROPY_EXT";
627
840
  GLEnum2[GLEnum2["TEXTURE_MAX_ANISOTROPY_EXT"] = 34046] = "TEXTURE_MAX_ANISOTROPY_EXT";
628
- GLEnum2[GLEnum2["SRGB_EXT"] = 35904] = "SRGB_EXT";
629
- GLEnum2[GLEnum2["SRGB_ALPHA_EXT"] = 35906] = "SRGB_ALPHA_EXT";
630
- GLEnum2[GLEnum2["SRGB8_ALPHA8_EXT"] = 35907] = "SRGB8_ALPHA8_EXT";
631
- GLEnum2[GLEnum2["FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT"] = 33296] = "FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT";
632
841
  GLEnum2[GLEnum2["R16_EXT"] = 33322] = "R16_EXT";
633
842
  GLEnum2[GLEnum2["RG16_EXT"] = 33324] = "RG16_EXT";
634
843
  GLEnum2[GLEnum2["RGB16_EXT"] = 32852] = "RGB16_EXT";
@@ -699,50 +908,6 @@ var __exports__ = (() => {
699
908
  GLEnum2[GLEnum2["COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR"] = 37851] = "COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR";
700
909
  GLEnum2[GLEnum2["COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR"] = 37852] = "COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR";
701
910
  GLEnum2[GLEnum2["COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR"] = 37853] = "COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR";
702
- GLEnum2[GLEnum2["UNSIGNED_INT_24_8_WEBGL"] = 34042] = "UNSIGNED_INT_24_8_WEBGL";
703
- GLEnum2[GLEnum2["HALF_FLOAT_OES"] = 36193] = "HALF_FLOAT_OES";
704
- GLEnum2[GLEnum2["RGBA32F_EXT"] = 34836] = "RGBA32F_EXT";
705
- GLEnum2[GLEnum2["RGB32F_EXT"] = 34837] = "RGB32F_EXT";
706
- GLEnum2[GLEnum2["FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT"] = 33297] = "FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT";
707
- GLEnum2[GLEnum2["UNSIGNED_NORMALIZED_EXT"] = 35863] = "UNSIGNED_NORMALIZED_EXT";
708
- GLEnum2[GLEnum2["MIN_EXT"] = 32775] = "MIN_EXT";
709
- GLEnum2[GLEnum2["MAX_EXT"] = 32776] = "MAX_EXT";
710
- GLEnum2[GLEnum2["FRAGMENT_SHADER_DERIVATIVE_HINT_OES"] = 35723] = "FRAGMENT_SHADER_DERIVATIVE_HINT_OES";
711
- GLEnum2[GLEnum2["COLOR_ATTACHMENT0_WEBGL"] = 36064] = "COLOR_ATTACHMENT0_WEBGL";
712
- GLEnum2[GLEnum2["COLOR_ATTACHMENT1_WEBGL"] = 36065] = "COLOR_ATTACHMENT1_WEBGL";
713
- GLEnum2[GLEnum2["COLOR_ATTACHMENT2_WEBGL"] = 36066] = "COLOR_ATTACHMENT2_WEBGL";
714
- GLEnum2[GLEnum2["COLOR_ATTACHMENT3_WEBGL"] = 36067] = "COLOR_ATTACHMENT3_WEBGL";
715
- GLEnum2[GLEnum2["COLOR_ATTACHMENT4_WEBGL"] = 36068] = "COLOR_ATTACHMENT4_WEBGL";
716
- GLEnum2[GLEnum2["COLOR_ATTACHMENT5_WEBGL"] = 36069] = "COLOR_ATTACHMENT5_WEBGL";
717
- GLEnum2[GLEnum2["COLOR_ATTACHMENT6_WEBGL"] = 36070] = "COLOR_ATTACHMENT6_WEBGL";
718
- GLEnum2[GLEnum2["COLOR_ATTACHMENT7_WEBGL"] = 36071] = "COLOR_ATTACHMENT7_WEBGL";
719
- GLEnum2[GLEnum2["COLOR_ATTACHMENT8_WEBGL"] = 36072] = "COLOR_ATTACHMENT8_WEBGL";
720
- GLEnum2[GLEnum2["COLOR_ATTACHMENT9_WEBGL"] = 36073] = "COLOR_ATTACHMENT9_WEBGL";
721
- GLEnum2[GLEnum2["COLOR_ATTACHMENT10_WEBGL"] = 36074] = "COLOR_ATTACHMENT10_WEBGL";
722
- GLEnum2[GLEnum2["COLOR_ATTACHMENT11_WEBGL"] = 36075] = "COLOR_ATTACHMENT11_WEBGL";
723
- GLEnum2[GLEnum2["COLOR_ATTACHMENT12_WEBGL"] = 36076] = "COLOR_ATTACHMENT12_WEBGL";
724
- GLEnum2[GLEnum2["COLOR_ATTACHMENT13_WEBGL"] = 36077] = "COLOR_ATTACHMENT13_WEBGL";
725
- GLEnum2[GLEnum2["COLOR_ATTACHMENT14_WEBGL"] = 36078] = "COLOR_ATTACHMENT14_WEBGL";
726
- GLEnum2[GLEnum2["COLOR_ATTACHMENT15_WEBGL"] = 36079] = "COLOR_ATTACHMENT15_WEBGL";
727
- GLEnum2[GLEnum2["DRAW_BUFFER0_WEBGL"] = 34853] = "DRAW_BUFFER0_WEBGL";
728
- GLEnum2[GLEnum2["DRAW_BUFFER1_WEBGL"] = 34854] = "DRAW_BUFFER1_WEBGL";
729
- GLEnum2[GLEnum2["DRAW_BUFFER2_WEBGL"] = 34855] = "DRAW_BUFFER2_WEBGL";
730
- GLEnum2[GLEnum2["DRAW_BUFFER3_WEBGL"] = 34856] = "DRAW_BUFFER3_WEBGL";
731
- GLEnum2[GLEnum2["DRAW_BUFFER4_WEBGL"] = 34857] = "DRAW_BUFFER4_WEBGL";
732
- GLEnum2[GLEnum2["DRAW_BUFFER5_WEBGL"] = 34858] = "DRAW_BUFFER5_WEBGL";
733
- GLEnum2[GLEnum2["DRAW_BUFFER6_WEBGL"] = 34859] = "DRAW_BUFFER6_WEBGL";
734
- GLEnum2[GLEnum2["DRAW_BUFFER7_WEBGL"] = 34860] = "DRAW_BUFFER7_WEBGL";
735
- GLEnum2[GLEnum2["DRAW_BUFFER8_WEBGL"] = 34861] = "DRAW_BUFFER8_WEBGL";
736
- GLEnum2[GLEnum2["DRAW_BUFFER9_WEBGL"] = 34862] = "DRAW_BUFFER9_WEBGL";
737
- GLEnum2[GLEnum2["DRAW_BUFFER10_WEBGL"] = 34863] = "DRAW_BUFFER10_WEBGL";
738
- GLEnum2[GLEnum2["DRAW_BUFFER11_WEBGL"] = 34864] = "DRAW_BUFFER11_WEBGL";
739
- GLEnum2[GLEnum2["DRAW_BUFFER12_WEBGL"] = 34865] = "DRAW_BUFFER12_WEBGL";
740
- GLEnum2[GLEnum2["DRAW_BUFFER13_WEBGL"] = 34866] = "DRAW_BUFFER13_WEBGL";
741
- GLEnum2[GLEnum2["DRAW_BUFFER14_WEBGL"] = 34867] = "DRAW_BUFFER14_WEBGL";
742
- GLEnum2[GLEnum2["DRAW_BUFFER15_WEBGL"] = 34868] = "DRAW_BUFFER15_WEBGL";
743
- GLEnum2[GLEnum2["MAX_COLOR_ATTACHMENTS_WEBGL"] = 36063] = "MAX_COLOR_ATTACHMENTS_WEBGL";
744
- GLEnum2[GLEnum2["MAX_DRAW_BUFFERS_WEBGL"] = 34852] = "MAX_DRAW_BUFFERS_WEBGL";
745
- GLEnum2[GLEnum2["VERTEX_ARRAY_BINDING_OES"] = 34229] = "VERTEX_ARRAY_BINDING_OES";
746
911
  GLEnum2[GLEnum2["QUERY_COUNTER_BITS_EXT"] = 34916] = "QUERY_COUNTER_BITS_EXT";
747
912
  GLEnum2[GLEnum2["CURRENT_QUERY_EXT"] = 34917] = "CURRENT_QUERY_EXT";
748
913
  GLEnum2[GLEnum2["QUERY_RESULT_EXT"] = 34918] = "QUERY_RESULT_EXT";
@@ -750,223 +915,40 @@ var __exports__ = (() => {
750
915
  GLEnum2[GLEnum2["TIME_ELAPSED_EXT"] = 35007] = "TIME_ELAPSED_EXT";
751
916
  GLEnum2[GLEnum2["TIMESTAMP_EXT"] = 36392] = "TIMESTAMP_EXT";
752
917
  GLEnum2[GLEnum2["GPU_DISJOINT_EXT"] = 36795] = "GPU_DISJOINT_EXT";
753
- return GLEnum2;
754
- }(GLEnum || {});
755
-
756
- // src/utils/gpu-grid-aggregation/gpu-grid-aggregator.ts
757
- var import_engine = __toESM(require_engine(), 1);
758
-
759
- // ../../node_modules/@luma.gl/shadertools/dist/lib/glsl-utils/highlight.js
760
- var glsl = (x) => `${x}`;
761
-
762
- // ../../node_modules/@luma.gl/shadertools/dist/modules-webgl1/math/fp64/fp64-utils.js
763
- function fp64ify(a) {
764
- let out = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : [];
765
- let startIndex = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 0;
766
- const hiPart = Math.fround(a);
767
- const loPart = a - hiPart;
768
- out[startIndex] = hiPart;
769
- out[startIndex + 1] = loPart;
770
- return out;
771
- }
772
- function fp64LowPart(a) {
773
- return a - Math.fround(a);
774
- }
775
- function fp64ifyMatrix4(matrix) {
776
- const matrixFP64 = new Float32Array(32);
777
- for (let i = 0; i < 4; ++i) {
778
- for (let j = 0; j < 4; ++j) {
779
- const index = i * 4 + j;
780
- fp64ify(matrix[j * 4 + i], matrixFP64, index * 2);
781
- }
782
- }
783
- return matrixFP64;
784
- }
785
-
786
- // ../../node_modules/@luma.gl/shadertools/dist/modules-webgl1/math/fp64/fp64-arithmetic.glsl.js
787
- var fp64arithmeticShader = glsl`\
788
- uniform float ONE;
789
-
790
- /*
791
- About LUMA_FP64_CODE_ELIMINATION_WORKAROUND
792
-
793
- The purpose of this workaround is to prevent shader compilers from
794
- optimizing away necessary arithmetic operations by swapping their sequences
795
- or transform the equation to some 'equivalent' form.
796
-
797
- The method is to multiply an artifical variable, ONE, which will be known to
798
- the compiler to be 1 only at runtime. The whole expression is then represented
799
- as a polynomial with respective to ONE. In the coefficients of all terms, only one a
800
- and one b should appear
801
-
802
- err = (a + b) * ONE^6 - a * ONE^5 - (a + b) * ONE^4 + a * ONE^3 - b - (a + b) * ONE^2 + a * ONE
803
- */
804
-
805
- // Divide float number to high and low floats to extend fraction bits
806
- vec2 split(float a) {
807
- const float SPLIT = 4097.0;
808
- float t = a * SPLIT;
809
- #if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
810
- float a_hi = t * ONE - (t - a);
811
- float a_lo = a * ONE - a_hi;
812
- #else
813
- float a_hi = t - (t - a);
814
- float a_lo = a - a_hi;
815
- #endif
816
- return vec2(a_hi, a_lo);
817
- }
818
-
819
- // Divide float number again when high float uses too many fraction bits
820
- vec2 split2(vec2 a) {
821
- vec2 b = split(a.x);
822
- b.y += a.y;
823
- return b;
824
- }
825
-
826
- // Special sum operation when a > b
827
- vec2 quickTwoSum(float a, float b) {
828
- #if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
829
- float sum = (a + b) * ONE;
830
- float err = b - (sum - a) * ONE;
831
- #else
832
- float sum = a + b;
833
- float err = b - (sum - a);
834
- #endif
835
- return vec2(sum, err);
836
- }
837
-
838
- // General sum operation
839
- vec2 twoSum(float a, float b) {
840
- float s = (a + b);
841
- #if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
842
- float v = (s * ONE - a) * ONE;
843
- float err = (a - (s - v) * ONE) * ONE * ONE * ONE + (b - v);
844
- #else
845
- float v = s - a;
846
- float err = (a - (s - v)) + (b - v);
847
- #endif
848
- return vec2(s, err);
849
- }
850
-
851
- vec2 twoSub(float a, float b) {
852
- float s = (a - b);
853
- #if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
854
- float v = (s * ONE - a) * ONE;
855
- float err = (a - (s - v) * ONE) * ONE * ONE * ONE - (b + v);
856
- #else
857
- float v = s - a;
858
- float err = (a - (s - v)) - (b + v);
859
- #endif
860
- return vec2(s, err);
861
- }
862
-
863
- vec2 twoSqr(float a) {
864
- float prod = a * a;
865
- vec2 a_fp64 = split(a);
866
- #if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
867
- float err = ((a_fp64.x * a_fp64.x - prod) * ONE + 2.0 * a_fp64.x *
868
- a_fp64.y * ONE * ONE) + a_fp64.y * a_fp64.y * ONE * ONE * ONE;
869
- #else
870
- float err = ((a_fp64.x * a_fp64.x - prod) + 2.0 * a_fp64.x * a_fp64.y) + a_fp64.y * a_fp64.y;
871
- #endif
872
- return vec2(prod, err);
873
- }
874
-
875
- vec2 twoProd(float a, float b) {
876
- float prod = a * b;
877
- vec2 a_fp64 = split(a);
878
- vec2 b_fp64 = split(b);
879
- float err = ((a_fp64.x * b_fp64.x - prod) + a_fp64.x * b_fp64.y +
880
- a_fp64.y * b_fp64.x) + a_fp64.y * b_fp64.y;
881
- return vec2(prod, err);
882
- }
883
-
884
- vec2 sum_fp64(vec2 a, vec2 b) {
885
- vec2 s, t;
886
- s = twoSum(a.x, b.x);
887
- t = twoSum(a.y, b.y);
888
- s.y += t.x;
889
- s = quickTwoSum(s.x, s.y);
890
- s.y += t.y;
891
- s = quickTwoSum(s.x, s.y);
892
- return s;
893
- }
894
-
895
- vec2 sub_fp64(vec2 a, vec2 b) {
896
- vec2 s, t;
897
- s = twoSub(a.x, b.x);
898
- t = twoSub(a.y, b.y);
899
- s.y += t.x;
900
- s = quickTwoSum(s.x, s.y);
901
- s.y += t.y;
902
- s = quickTwoSum(s.x, s.y);
903
- return s;
904
- }
905
-
906
- vec2 mul_fp64(vec2 a, vec2 b) {
907
- vec2 prod = twoProd(a.x, b.x);
908
- // y component is for the error
909
- prod.y += a.x * b.y;
910
- #if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)
911
- prod = split2(prod);
912
- #endif
913
- prod = quickTwoSum(prod.x, prod.y);
914
- prod.y += a.y * b.x;
915
- #if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)
916
- prod = split2(prod);
917
- #endif
918
- prod = quickTwoSum(prod.x, prod.y);
919
- return prod;
920
- }
921
-
922
- vec2 div_fp64(vec2 a, vec2 b) {
923
- float xn = 1.0 / b.x;
924
- #if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)
925
- vec2 yn = mul_fp64(a, vec2(xn, 0));
926
- #else
927
- vec2 yn = a * xn;
928
- #endif
929
- float diff = (sub_fp64(a, mul_fp64(b, yn))).x;
930
- vec2 prod = twoProd(xn, diff);
931
- return sum_fp64(yn, prod);
932
- }
933
-
934
- vec2 sqrt_fp64(vec2 a) {
935
- if (a.x == 0.0 && a.y == 0.0) return vec2(0.0, 0.0);
936
- if (a.x < 0.0) return vec2(0.0 / 0.0, 0.0 / 0.0);
937
-
938
- float x = 1.0 / sqrt(a.x);
939
- float yn = a.x * x;
940
- #if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
941
- vec2 yn_sqr = twoSqr(yn) * ONE;
942
- #else
943
- vec2 yn_sqr = twoSqr(yn);
944
- #endif
945
- float diff = sub_fp64(a, yn_sqr).x;
946
- vec2 prod = twoProd(x * 0.5, diff);
947
- #if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)
948
- return sum_fp64(split(yn), prod);
949
- #else
950
- return sum_fp64(vec2(yn, 0.0), prod);
951
- #endif
952
- }
953
- `;
954
-
955
- // ../../node_modules/@luma.gl/shadertools/dist/modules-webgl1/math/fp64/fp64.js
956
- var CONST_UNIFORMS = {
957
- ONE: 1
958
- };
959
- function getUniforms() {
960
- return CONST_UNIFORMS;
961
- }
962
- var fp64arithmetic = {
963
- name: "fp64-arithmetic",
964
- vs: fp64arithmeticShader,
965
- getUniforms,
966
- fp64ify,
967
- fp64LowPart,
968
- fp64ifyMatrix4
969
- };
918
+ GLEnum2[GLEnum2["COMPLETION_STATUS_KHR"] = 37297] = "COMPLETION_STATUS_KHR";
919
+ GLEnum2[GLEnum2["DEPTH_CLAMP_EXT"] = 34383] = "DEPTH_CLAMP_EXT";
920
+ GLEnum2[GLEnum2["FIRST_VERTEX_CONVENTION_WEBGL"] = 36429] = "FIRST_VERTEX_CONVENTION_WEBGL";
921
+ GLEnum2[GLEnum2["LAST_VERTEX_CONVENTION_WEBGL"] = 36430] = "LAST_VERTEX_CONVENTION_WEBGL";
922
+ GLEnum2[GLEnum2["PROVOKING_VERTEX_WEBL"] = 36431] = "PROVOKING_VERTEX_WEBL";
923
+ GLEnum2[GLEnum2["POLYGON_MODE_WEBGL"] = 2880] = "POLYGON_MODE_WEBGL";
924
+ GLEnum2[GLEnum2["POLYGON_OFFSET_LINE_WEBGL"] = 10754] = "POLYGON_OFFSET_LINE_WEBGL";
925
+ GLEnum2[GLEnum2["LINE_WEBGL"] = 6913] = "LINE_WEBGL";
926
+ GLEnum2[GLEnum2["FILL_WEBGL"] = 6914] = "FILL_WEBGL";
927
+ GLEnum2[GLEnum2["MAX_CLIP_DISTANCES_WEBGL"] = 3378] = "MAX_CLIP_DISTANCES_WEBGL";
928
+ GLEnum2[GLEnum2["MAX_CULL_DISTANCES_WEBGL"] = 33529] = "MAX_CULL_DISTANCES_WEBGL";
929
+ GLEnum2[GLEnum2["MAX_COMBINED_CLIP_AND_CULL_DISTANCES_WEBGL"] = 33530] = "MAX_COMBINED_CLIP_AND_CULL_DISTANCES_WEBGL";
930
+ GLEnum2[GLEnum2["CLIP_DISTANCE0_WEBGL"] = 12288] = "CLIP_DISTANCE0_WEBGL";
931
+ GLEnum2[GLEnum2["CLIP_DISTANCE1_WEBGL"] = 12289] = "CLIP_DISTANCE1_WEBGL";
932
+ GLEnum2[GLEnum2["CLIP_DISTANCE2_WEBGL"] = 12290] = "CLIP_DISTANCE2_WEBGL";
933
+ GLEnum2[GLEnum2["CLIP_DISTANCE3_WEBGL"] = 12291] = "CLIP_DISTANCE3_WEBGL";
934
+ GLEnum2[GLEnum2["CLIP_DISTANCE4_WEBGL"] = 12292] = "CLIP_DISTANCE4_WEBGL";
935
+ GLEnum2[GLEnum2["CLIP_DISTANCE5_WEBGL"] = 12293] = "CLIP_DISTANCE5_WEBGL";
936
+ GLEnum2[GLEnum2["CLIP_DISTANCE6_WEBGL"] = 12294] = "CLIP_DISTANCE6_WEBGL";
937
+ GLEnum2[GLEnum2["CLIP_DISTANCE7_WEBGL"] = 12295] = "CLIP_DISTANCE7_WEBGL";
938
+ GLEnum2[GLEnum2["POLYGON_OFFSET_CLAMP_EXT"] = 36379] = "POLYGON_OFFSET_CLAMP_EXT";
939
+ GLEnum2[GLEnum2["LOWER_LEFT_EXT"] = 36001] = "LOWER_LEFT_EXT";
940
+ GLEnum2[GLEnum2["UPPER_LEFT_EXT"] = 36002] = "UPPER_LEFT_EXT";
941
+ GLEnum2[GLEnum2["NEGATIVE_ONE_TO_ONE_EXT"] = 37726] = "NEGATIVE_ONE_TO_ONE_EXT";
942
+ GLEnum2[GLEnum2["ZERO_TO_ONE_EXT"] = 37727] = "ZERO_TO_ONE_EXT";
943
+ GLEnum2[GLEnum2["CLIP_ORIGIN_EXT"] = 37724] = "CLIP_ORIGIN_EXT";
944
+ GLEnum2[GLEnum2["CLIP_DEPTH_MODE_EXT"] = 37725] = "CLIP_DEPTH_MODE_EXT";
945
+ GLEnum2[GLEnum2["SRC1_COLOR_WEBGL"] = 35065] = "SRC1_COLOR_WEBGL";
946
+ GLEnum2[GLEnum2["SRC1_ALPHA_WEBGL"] = 34185] = "SRC1_ALPHA_WEBGL";
947
+ GLEnum2[GLEnum2["ONE_MINUS_SRC1_COLOR_WEBGL"] = 35066] = "ONE_MINUS_SRC1_COLOR_WEBGL";
948
+ GLEnum2[GLEnum2["ONE_MINUS_SRC1_ALPHA_WEBGL"] = 35067] = "ONE_MINUS_SRC1_ALPHA_WEBGL";
949
+ GLEnum2[GLEnum2["MAX_DUAL_SOURCE_DRAW_BUFFERS_WEBGL"] = 35068] = "MAX_DUAL_SOURCE_DRAW_BUFFERS_WEBGL";
950
+ GLEnum2[GLEnum2["MIRROR_CLAMP_TO_EDGE_EXT"] = 34627] = "MIRROR_CLAMP_TO_EDGE_EXT";
951
+ })(GLEnum || (GLEnum = {}));
970
952
 
971
953
  // src/utils/gpu-grid-aggregation/gpu-grid-aggregator.ts
972
954
  var import_core = __toESM(require_core(), 1);
@@ -1276,11 +1258,8 @@ void main()
1276
1258
  maxMinData: "maxMinBuffer"
1277
1259
  };
1278
1260
  var REQUIRED_FEATURES = [
1279
- "webgl2",
1280
- "blend-minmax-webgl1",
1281
- "texture-renderable-float32-webgl",
1282
- "texture-blend-float-webgl1",
1283
- "texture-formats-float32-webgl1"
1261
+ "float32-renderable-webgl",
1262
+ "texture-blend-float-webgl"
1284
1263
  ];
1285
1264
  var GPUGridAggregator = class {
1286
1265
  constructor(device, props = {}) {
@@ -1301,12 +1280,10 @@ void main()
1301
1280
  };
1302
1281
  this.id = props.id || "gpu-grid-aggregator";
1303
1282
  this.device = device;
1304
- const REQUIRED_FEATURES3 = [
1305
- "blend-minmax-webgl1",
1306
- "texture-renderable-float32-webgl",
1307
- "texture-formats-float32-webgl1"
1283
+ const REQUIRED_FEATURES2 = [
1284
+ "float32-renderable-webgl"
1308
1285
  ];
1309
- this._hasGPUSupport = this.device.info.type === "webgl2" && REQUIRED_FEATURES3.every((feature) => device.features.has(feature));
1286
+ this._hasGPUSupport = REQUIRED_FEATURES2.every((feature) => device.features.has(feature));
1310
1287
  if (this._hasGPUSupport) {
1311
1288
  this._setupModels();
1312
1289
  }
@@ -1381,9 +1358,6 @@ void main()
1381
1358
  run(opts = {}) {
1382
1359
  this.setState({ results: {} });
1383
1360
  const aggregationParams = this._normalizeAggregationParams(opts);
1384
- if (!this._hasGPUSupport) {
1385
- import_core.log.log(1, "GPUGridAggregator: not supported")();
1386
- }
1387
1361
  return this._runAggregation(aggregationParams);
1388
1362
  }
1389
1363
  getData(weightId) {
@@ -1907,9 +1881,6 @@ void main(void) {
1907
1881
  colorRange: defaultColorRange
1908
1882
  };
1909
1883
  var ScreenGridCellLayer = class extends import_core2.Layer {
1910
- static isSupported(device) {
1911
- return device.features.has("texture-formats-float32-webgl1");
1912
- }
1913
1884
  getShaders() {
1914
1885
  return { vs: screen_grid_layer_vertex_glsl_default, fs: screen_grid_layer_fragment_glsl_default, modules: [import_core2.picking] };
1915
1886
  }
@@ -2763,11 +2734,6 @@ void main(void) {
2763
2734
  };
2764
2735
  var ScreenGridLayer = class extends GridAggregationLayer {
2765
2736
  initializeState() {
2766
- if (!ScreenGridCellLayer.isSupported(this.context.device)) {
2767
- this.setState({ supported: false });
2768
- import_core8.log.error(`ScreenGridLayer: ${this.id} is not supported on this browser`)();
2769
- return;
2770
- }
2771
2737
  super.initializeAggregationLayer({
2772
2738
  dimensions: DIMENSIONS,
2773
2739
  getCellSize: (props) => props.cellSizePixels
@@ -2795,7 +2761,7 @@ void main(void) {
2795
2761
  [POSITION_ATTRIBUTE_NAME]: {
2796
2762
  size: 3,
2797
2763
  accessor: "getPosition",
2798
- type: GLEnum.DOUBLE,
2764
+ type: "float64",
2799
2765
  fp64: this.use64bitPositions()
2800
2766
  },
2801
2767
  count: { size: 3, accessor: "getWeight" }
@@ -3329,7 +3295,7 @@ void main(void) {
3329
3295
  };
3330
3296
  const attributeManager = this.getAttributeManager();
3331
3297
  attributeManager.add({
3332
- positions: { size: 3, type: GLEnum.DOUBLE, accessor: "getPosition" }
3298
+ positions: { size: 3, type: "float64", accessor: "getPosition" }
3333
3299
  });
3334
3300
  }
3335
3301
  updateState(opts) {
@@ -3575,7 +3541,7 @@ void main(void) {
3575
3541
  };
3576
3542
  const attributeManager = this.getAttributeManager();
3577
3543
  attributeManager.add({
3578
- positions: { size: 3, type: GLEnum.DOUBLE, accessor: "getPosition" }
3544
+ positions: { size: 3, type: "float64", accessor: "getPosition" }
3579
3545
  });
3580
3546
  }
3581
3547
  updateState(opts) {
@@ -4196,7 +4162,7 @@ void main(void) {
4196
4162
  [POSITION_ATTRIBUTE_NAME2]: {
4197
4163
  size: 3,
4198
4164
  accessor: "getPosition",
4199
- type: GLEnum.DOUBLE,
4165
+ type: "float64",
4200
4166
  fp64: this.use64bitPositions()
4201
4167
  },
4202
4168
  count: { size: 3, accessor: "getWeight" }
@@ -4325,7 +4291,7 @@ void main(void) {
4325
4291
  const { count } = this.state.weights;
4326
4292
  let { aggregationData } = count;
4327
4293
  if (!aggregationData) {
4328
- aggregationData = count.aggregationBuffer.readSyncWebGL2();
4294
+ aggregationData = count.aggregationBuffer.readSyncWebGL();
4329
4295
  count.aggregationData = aggregationData;
4330
4296
  }
4331
4297
  const { cellWeights } = GPUGridAggregator.getCellData({ countsData: aggregationData });
@@ -4694,7 +4660,7 @@ void main(void) {
4694
4660
  [POSITION_ATTRIBUTE_NAME3]: {
4695
4661
  size: 3,
4696
4662
  accessor: "getPosition",
4697
- type: GLEnum.DOUBLE,
4663
+ type: "float64",
4698
4664
  fp64: this.use64bitPositions()
4699
4665
  },
4700
4666
  color: { size: 3, accessor: "getColorWeight" },
@@ -5243,13 +5209,9 @@ void main() {
5243
5209
  weightsTextureSize: { type: "number", min: 128, max: 2048, value: 2048 },
5244
5210
  debounceTimeout: { type: "number", min: 0, max: 1e3, value: 500 }
5245
5211
  };
5246
- var REQUIRED_FEATURES2 = [
5247
- "blend-minmax-webgl1",
5248
- "texture-formats-float32-webgl1"
5249
- ];
5250
5212
  var FLOAT_TARGET_FEATURES = [
5251
- "texture-renderable-float32-webgl",
5252
- "texture-blend-float-webgl1"
5213
+ "float32-renderable-webgl",
5214
+ "texture-blend-float-webgl"
5253
5215
  ];
5254
5216
  var DIMENSIONS4 = {
5255
5217
  data: {
@@ -5258,13 +5220,8 @@ void main() {
5258
5220
  };
5259
5221
  var HeatmapLayer = class extends AggregationLayer {
5260
5222
  initializeState() {
5261
- if (!REQUIRED_FEATURES2.every((feature) => this.context.device.features.has(feature))) {
5262
- this.setState({ supported: false });
5263
- import_core17.log.error(`HeatmapLayer: ${this.id} is not supported on this browser`)();
5264
- return;
5265
- }
5266
5223
  super.initializeAggregationLayer(DIMENSIONS4);
5267
- this.setState({ supported: true, colorDomain: DEFAULT_COLOR_DOMAIN });
5224
+ this.setState({ colorDomain: DEFAULT_COLOR_DOMAIN });
5268
5225
  this._setupTextureParams();
5269
5226
  this._setupAttributes();
5270
5227
  this._setupResources();
@@ -5273,9 +5230,6 @@ void main() {
5273
5230
  return changeFlags.somethingChanged;
5274
5231
  }
5275
5232
  updateState(opts) {
5276
- if (!this.state.supported) {
5277
- return;
5278
- }
5279
5233
  super.updateState(opts);
5280
5234
  this._updateHeatmapState(opts);
5281
5235
  }
@@ -5301,9 +5255,6 @@ void main() {
5301
5255
  this.setState({ zoom: opts.context.viewport.zoom });
5302
5256
  }
5303
5257
  renderLayers() {
5304
- if (!this.state.supported) {
5305
- return [];
5306
- }
5307
5258
  const {
5308
5259
  weightsTexture,
5309
5260
  triPositionBuffer,
@@ -5401,7 +5352,7 @@ void main() {
5401
5352
  _setupAttributes() {
5402
5353
  const attributeManager = this.getAttributeManager();
5403
5354
  attributeManager.add({
5404
- positions: { size: 3, type: GLEnum.DOUBLE, accessor: "getPosition" },
5355
+ positions: { size: 3, type: "float64", accessor: "getPosition" },
5405
5356
  weights: { size: 1, accessor: "getWeight" }
5406
5357
  });
5407
5358
  this.setState({ positionAttributeName: "positions" });