@deck.gl/aggregation-layers 9.4.0-alpha.1 → 9.4.0-beta.1

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 (210) hide show
  1. package/dist/common/aggregator/gpu-aggregator/webgl-aggregation-transform.d.ts.map +1 -1
  2. package/dist/common/aggregator/gpu-aggregator/webgl-aggregation-transform.js +1 -3
  3. package/dist/common/aggregator/gpu-aggregator/webgl-aggregation-transform.js.map +1 -1
  4. package/dist/common/aggregator/gpu-aggregator/webgl-bin-sorter.js +0 -1
  5. package/dist/common/aggregator/gpu-aggregator/webgl-bin-sorter.js.map +1 -1
  6. package/dist/dist.dev.js +642 -38
  7. package/dist/grid-layer/grid-cell-layer.d.ts.map +1 -1
  8. package/dist/grid-layer/grid-cell-layer.js +3 -2
  9. package/dist/grid-layer/grid-cell-layer.js.map +1 -1
  10. package/dist/grid-layer/grid-cell-layer.wgsl.d.ts +3 -0
  11. package/dist/grid-layer/grid-cell-layer.wgsl.d.ts.map +1 -0
  12. package/dist/grid-layer/grid-cell-layer.wgsl.js +114 -0
  13. package/dist/grid-layer/grid-cell-layer.wgsl.js.map +1 -0
  14. package/dist/grid-layer/grid-layer-uniforms.d.ts +1 -0
  15. package/dist/grid-layer/grid-layer-uniforms.d.ts.map +1 -1
  16. package/dist/grid-layer/grid-layer-uniforms.js +14 -0
  17. package/dist/grid-layer/grid-layer-uniforms.js.map +1 -1
  18. package/dist/heatmap-layer/heatmap-layer-uniforms.d.ts +2 -0
  19. package/dist/heatmap-layer/heatmap-layer-uniforms.d.ts.map +1 -1
  20. package/dist/heatmap-layer/heatmap-layer-uniforms.js +19 -0
  21. package/dist/heatmap-layer/heatmap-layer-uniforms.js.map +1 -1
  22. package/dist/heatmap-layer/heatmap-layer.d.ts.map +1 -1
  23. package/dist/heatmap-layer/heatmap-layer.js +59 -12
  24. package/dist/heatmap-layer/heatmap-layer.js.map +1 -1
  25. package/dist/heatmap-layer/max.wgsl.d.ts +3 -0
  26. package/dist/heatmap-layer/max.wgsl.d.ts.map +1 -0
  27. package/dist/heatmap-layer/max.wgsl.js +48 -0
  28. package/dist/heatmap-layer/max.wgsl.js.map +1 -0
  29. package/dist/heatmap-layer/triangle-layer-uniforms.d.ts +1 -0
  30. package/dist/heatmap-layer/triangle-layer-uniforms.d.ts.map +1 -1
  31. package/dist/heatmap-layer/triangle-layer-uniforms.js +16 -0
  32. package/dist/heatmap-layer/triangle-layer-uniforms.js.map +1 -1
  33. package/dist/heatmap-layer/triangle-layer.d.ts.map +1 -1
  34. package/dist/heatmap-layer/triangle-layer.js +3 -2
  35. package/dist/heatmap-layer/triangle-layer.js.map +1 -1
  36. package/dist/heatmap-layer/triangle-layer.wgsl.d.ts +3 -0
  37. package/dist/heatmap-layer/triangle-layer.wgsl.d.ts.map +1 -0
  38. package/dist/heatmap-layer/triangle-layer.wgsl.js +65 -0
  39. package/dist/heatmap-layer/triangle-layer.wgsl.js.map +1 -0
  40. package/dist/heatmap-layer/weights.wgsl.d.ts +3 -0
  41. package/dist/heatmap-layer/weights.wgsl.d.ts.map +1 -0
  42. package/dist/heatmap-layer/weights.wgsl.js +64 -0
  43. package/dist/heatmap-layer/weights.wgsl.js.map +1 -0
  44. package/dist/hexagon-layer/hexagon-cell-layer.d.ts.map +1 -1
  45. package/dist/hexagon-layer/hexagon-cell-layer.js +2 -2
  46. package/dist/hexagon-layer/hexagon-cell-layer.js.map +1 -1
  47. package/dist/hexagon-layer/hexagon-cell-layer.wgsl.d.ts +3 -0
  48. package/dist/hexagon-layer/hexagon-cell-layer.wgsl.d.ts.map +1 -0
  49. package/dist/hexagon-layer/hexagon-cell-layer.wgsl.js +120 -0
  50. package/dist/hexagon-layer/hexagon-cell-layer.wgsl.js.map +1 -0
  51. package/dist/hexagon-layer/hexagon-layer-uniforms.d.ts +1 -0
  52. package/dist/hexagon-layer/hexagon-layer-uniforms.d.ts.map +1 -1
  53. package/dist/hexagon-layer/hexagon-layer-uniforms.js +13 -0
  54. package/dist/hexagon-layer/hexagon-layer-uniforms.js.map +1 -1
  55. package/dist/index.cjs +13268 -1488
  56. package/dist/index.cjs.map +3 -4
  57. package/dist/screen-grid-layer/screen-grid-cell-layer.d.ts +1 -6
  58. package/dist/screen-grid-layer/screen-grid-cell-layer.d.ts.map +1 -1
  59. package/dist/screen-grid-layer/screen-grid-cell-layer.js +3 -2
  60. package/dist/screen-grid-layer/screen-grid-cell-layer.js.map +1 -1
  61. package/dist/screen-grid-layer/screen-grid-cell-layer.wgsl.d.ts +3 -0
  62. package/dist/screen-grid-layer/screen-grid-cell-layer.wgsl.d.ts.map +1 -0
  63. package/dist/screen-grid-layer/screen-grid-cell-layer.wgsl.js +76 -0
  64. package/dist/screen-grid-layer/screen-grid-cell-layer.wgsl.js.map +1 -0
  65. package/dist/screen-grid-layer/screen-grid-layer-uniforms.d.ts +1 -0
  66. package/dist/screen-grid-layer/screen-grid-layer-uniforms.d.ts.map +1 -1
  67. package/dist/screen-grid-layer/screen-grid-layer-uniforms.js +12 -0
  68. package/dist/screen-grid-layer/screen-grid-layer-uniforms.js.map +1 -1
  69. package/dist.min.js +545 -35
  70. package/dist.webgl-only/common/aggregation-layer.js +68 -0
  71. package/dist.webgl-only/common/aggregation-layer.js.map +1 -0
  72. package/dist.webgl-only/common/aggregator/aggregator.js +5 -0
  73. package/dist.webgl-only/common/aggregator/aggregator.js.map +1 -0
  74. package/dist.webgl-only/common/aggregator/cpu-aggregator/aggregate.js +69 -0
  75. package/dist.webgl-only/common/aggregator/cpu-aggregator/aggregate.js.map +1 -0
  76. package/dist.webgl-only/common/aggregator/cpu-aggregator/cpu-aggregator.js +141 -0
  77. package/dist.webgl-only/common/aggregator/cpu-aggregator/cpu-aggregator.js.map +1 -0
  78. package/dist.webgl-only/common/aggregator/cpu-aggregator/sort-bins.js +44 -0
  79. package/dist.webgl-only/common/aggregator/cpu-aggregator/sort-bins.js.map +1 -0
  80. package/dist.webgl-only/common/aggregator/cpu-aggregator/vertex-accessor.js +56 -0
  81. package/dist.webgl-only/common/aggregator/cpu-aggregator/vertex-accessor.js.map +1 -0
  82. package/dist.webgl-only/common/aggregator/gpu-aggregator/aggregation-transform-uniforms.js +22 -0
  83. package/dist.webgl-only/common/aggregator/gpu-aggregator/aggregation-transform-uniforms.js.map +1 -0
  84. package/dist.webgl-only/common/aggregator/gpu-aggregator/bin-sorter-uniforms.js +18 -0
  85. package/dist.webgl-only/common/aggregator/gpu-aggregator/bin-sorter-uniforms.js.map +1 -0
  86. package/dist.webgl-only/common/aggregator/gpu-aggregator/utils.js +24 -0
  87. package/dist.webgl-only/common/aggregator/gpu-aggregator/utils.js.map +1 -0
  88. package/dist.webgl-only/common/aggregator/gpu-aggregator/webgl-aggregation-transform.js +222 -0
  89. package/dist.webgl-only/common/aggregator/gpu-aggregator/webgl-aggregation-transform.js.map +1 -0
  90. package/dist.webgl-only/common/aggregator/gpu-aggregator/webgl-aggregator.js +203 -0
  91. package/dist.webgl-only/common/aggregator/gpu-aggregator/webgl-aggregator.js.map +1 -0
  92. package/dist.webgl-only/common/aggregator/gpu-aggregator/webgl-bin-sorter.js +225 -0
  93. package/dist.webgl-only/common/aggregator/gpu-aggregator/webgl-bin-sorter.js.map +1 -0
  94. package/dist.webgl-only/common/aggregator/index.js +6 -0
  95. package/dist.webgl-only/common/aggregator/index.js.map +1 -0
  96. package/dist.webgl-only/common/types.js +5 -0
  97. package/dist.webgl-only/common/types.js.map +1 -0
  98. package/dist.webgl-only/common/utils/bounds-utils.js +21 -0
  99. package/dist.webgl-only/common/utils/bounds-utils.js.map +1 -0
  100. package/dist.webgl-only/common/utils/color-utils.js +65 -0
  101. package/dist.webgl-only/common/utils/color-utils.js.map +1 -0
  102. package/dist.webgl-only/common/utils/prop-utils.js +13 -0
  103. package/dist.webgl-only/common/utils/prop-utils.js.map +1 -0
  104. package/dist.webgl-only/common/utils/scale-utils.js +181 -0
  105. package/dist.webgl-only/common/utils/scale-utils.js.map +1 -0
  106. package/dist.webgl-only/contour-layer/bin-options-uniforms.js +18 -0
  107. package/dist.webgl-only/contour-layer/bin-options-uniforms.js.map +1 -0
  108. package/dist.webgl-only/contour-layer/contour-layer.js +282 -0
  109. package/dist.webgl-only/contour-layer/contour-layer.js.map +1 -0
  110. package/dist.webgl-only/contour-layer/contour-utils.js +60 -0
  111. package/dist.webgl-only/contour-layer/contour-utils.js.map +1 -0
  112. package/dist.webgl-only/contour-layer/marching-squares-codes.js +341 -0
  113. package/dist.webgl-only/contour-layer/marching-squares-codes.js.map +1 -0
  114. package/dist.webgl-only/contour-layer/marching-squares.js +151 -0
  115. package/dist.webgl-only/contour-layer/marching-squares.js.map +1 -0
  116. package/dist.webgl-only/contour-layer/value-reader.js +47 -0
  117. package/dist.webgl-only/contour-layer/value-reader.js.map +1 -0
  118. package/dist.webgl-only/grid-layer/bin-options-uniforms.js +18 -0
  119. package/dist.webgl-only/grid-layer/bin-options-uniforms.js.map +1 -0
  120. package/dist.webgl-only/grid-layer/grid-cell-layer-vertex.glsl.js +51 -0
  121. package/dist.webgl-only/grid-layer/grid-cell-layer-vertex.glsl.js.map +1 -0
  122. package/dist.webgl-only/grid-layer/grid-cell-layer.js +95 -0
  123. package/dist.webgl-only/grid-layer/grid-cell-layer.js.map +1 -0
  124. package/dist.webgl-only/grid-layer/grid-cell-layer.wgsl.js +5 -0
  125. package/dist.webgl-only/grid-layer/grid-cell-layer.wgsl.js.map +1 -0
  126. package/dist.webgl-only/grid-layer/grid-layer-uniforms.js +26 -0
  127. package/dist.webgl-only/grid-layer/grid-layer-uniforms.js.map +1 -0
  128. package/dist.webgl-only/grid-layer/grid-layer.js +362 -0
  129. package/dist.webgl-only/grid-layer/grid-layer.js.map +1 -0
  130. package/dist.webgl-only/heatmap-layer/aggregation-layer.js +140 -0
  131. package/dist.webgl-only/heatmap-layer/aggregation-layer.js.map +1 -0
  132. package/dist.webgl-only/heatmap-layer/heatmap-layer-uniforms.js +36 -0
  133. package/dist.webgl-only/heatmap-layer/heatmap-layer-uniforms.js.map +1 -0
  134. package/dist.webgl-only/heatmap-layer/heatmap-layer-utils.js +67 -0
  135. package/dist.webgl-only/heatmap-layer/heatmap-layer-utils.js.map +1 -0
  136. package/dist.webgl-only/heatmap-layer/heatmap-layer.js +513 -0
  137. package/dist.webgl-only/heatmap-layer/heatmap-layer.js.map +1 -0
  138. package/dist.webgl-only/heatmap-layer/max-fs.glsl.js +13 -0
  139. package/dist.webgl-only/heatmap-layer/max-fs.glsl.js.map +1 -0
  140. package/dist.webgl-only/heatmap-layer/max-vs.glsl.js +18 -0
  141. package/dist.webgl-only/heatmap-layer/max-vs.glsl.js.map +1 -0
  142. package/dist.webgl-only/heatmap-layer/max.wgsl.js +5 -0
  143. package/dist.webgl-only/heatmap-layer/max.wgsl.js.map +1 -0
  144. package/dist.webgl-only/heatmap-layer/triangle-layer-fragment.glsl.js +34 -0
  145. package/dist.webgl-only/heatmap-layer/triangle-layer-fragment.glsl.js.map +1 -0
  146. package/dist.webgl-only/heatmap-layer/triangle-layer-uniforms.js +25 -0
  147. package/dist.webgl-only/heatmap-layer/triangle-layer-uniforms.js.map +1 -0
  148. package/dist.webgl-only/heatmap-layer/triangle-layer-vertex.glsl.js +28 -0
  149. package/dist.webgl-only/heatmap-layer/triangle-layer-vertex.glsl.js.map +1 -0
  150. package/dist.webgl-only/heatmap-layer/triangle-layer.js +49 -0
  151. package/dist.webgl-only/heatmap-layer/triangle-layer.js.map +1 -0
  152. package/dist.webgl-only/heatmap-layer/triangle-layer.wgsl.js +5 -0
  153. package/dist.webgl-only/heatmap-layer/triangle-layer.wgsl.js.map +1 -0
  154. package/dist.webgl-only/heatmap-layer/weights-fs.glsl.js +21 -0
  155. package/dist.webgl-only/heatmap-layer/weights-fs.glsl.js.map +1 -0
  156. package/dist.webgl-only/heatmap-layer/weights-vs.glsl.js +21 -0
  157. package/dist.webgl-only/heatmap-layer/weights-vs.glsl.js.map +1 -0
  158. package/dist.webgl-only/heatmap-layer/weights.wgsl.js +5 -0
  159. package/dist.webgl-only/heatmap-layer/weights.wgsl.js.map +1 -0
  160. package/dist.webgl-only/hexagon-layer/bin-options-uniforms.js +18 -0
  161. package/dist.webgl-only/hexagon-layer/bin-options-uniforms.js.map +1 -0
  162. package/dist.webgl-only/hexagon-layer/hexagon-cell-layer-vertex.glsl.js +55 -0
  163. package/dist.webgl-only/hexagon-layer/hexagon-cell-layer-vertex.glsl.js.map +1 -0
  164. package/dist.webgl-only/hexagon-layer/hexagon-cell-layer.js +90 -0
  165. package/dist.webgl-only/hexagon-layer/hexagon-cell-layer.js.map +1 -0
  166. package/dist.webgl-only/hexagon-layer/hexagon-cell-layer.wgsl.js +5 -0
  167. package/dist.webgl-only/hexagon-layer/hexagon-cell-layer.wgsl.js.map +1 -0
  168. package/dist.webgl-only/hexagon-layer/hexagon-layer-uniforms.js +24 -0
  169. package/dist.webgl-only/hexagon-layer/hexagon-layer-uniforms.js.map +1 -0
  170. package/dist.webgl-only/hexagon-layer/hexagon-layer.js +360 -0
  171. package/dist.webgl-only/hexagon-layer/hexagon-layer.js.map +1 -0
  172. package/dist.webgl-only/hexagon-layer/hexbin.js +70 -0
  173. package/dist.webgl-only/hexagon-layer/hexbin.js.map +1 -0
  174. package/dist.webgl-only/index.cjs +15625 -0
  175. package/dist.webgl-only/index.cjs.map +6 -0
  176. package/dist.webgl-only/index.js +11 -0
  177. package/dist.webgl-only/index.js.map +1 -0
  178. package/dist.webgl-only/screen-grid-layer/bin-options-uniforms.js +16 -0
  179. package/dist.webgl-only/screen-grid-layer/bin-options-uniforms.js.map +1 -0
  180. package/dist.webgl-only/screen-grid-layer/screen-grid-cell-layer.js +88 -0
  181. package/dist.webgl-only/screen-grid-layer/screen-grid-cell-layer.js.map +1 -0
  182. package/dist.webgl-only/screen-grid-layer/screen-grid-cell-layer.wgsl.js +5 -0
  183. package/dist.webgl-only/screen-grid-layer/screen-grid-cell-layer.wgsl.js.map +1 -0
  184. package/dist.webgl-only/screen-grid-layer/screen-grid-layer-fragment.glsl.js +16 -0
  185. package/dist.webgl-only/screen-grid-layer/screen-grid-layer-fragment.glsl.js.map +1 -0
  186. package/dist.webgl-only/screen-grid-layer/screen-grid-layer-uniforms.js +22 -0
  187. package/dist.webgl-only/screen-grid-layer/screen-grid-layer-uniforms.js.map +1 -0
  188. package/dist.webgl-only/screen-grid-layer/screen-grid-layer-vertex.glsl.js +31 -0
  189. package/dist.webgl-only/screen-grid-layer/screen-grid-layer-vertex.glsl.js.map +1 -0
  190. package/dist.webgl-only/screen-grid-layer/screen-grid-layer.js +194 -0
  191. package/dist.webgl-only/screen-grid-layer/screen-grid-layer.js.map +1 -0
  192. package/package.json +14 -5
  193. package/src/common/aggregator/gpu-aggregator/webgl-aggregation-transform.ts +1 -3
  194. package/src/common/aggregator/gpu-aggregator/webgl-bin-sorter.ts +0 -1
  195. package/src/grid-layer/grid-cell-layer.ts +3 -2
  196. package/src/grid-layer/grid-cell-layer.wgsl.ts +114 -0
  197. package/src/grid-layer/grid-layer-uniforms.ts +15 -0
  198. package/src/heatmap-layer/heatmap-layer-uniforms.ts +20 -0
  199. package/src/heatmap-layer/heatmap-layer.ts +67 -13
  200. package/src/heatmap-layer/max.wgsl.ts +48 -0
  201. package/src/heatmap-layer/triangle-layer-uniforms.ts +17 -0
  202. package/src/heatmap-layer/triangle-layer.ts +3 -2
  203. package/src/heatmap-layer/triangle-layer.wgsl.ts +65 -0
  204. package/src/heatmap-layer/weights.wgsl.ts +64 -0
  205. package/src/hexagon-layer/hexagon-cell-layer.ts +2 -3
  206. package/src/hexagon-layer/hexagon-cell-layer.wgsl.ts +120 -0
  207. package/src/hexagon-layer/hexagon-layer-uniforms.ts +14 -0
  208. package/src/screen-grid-layer/screen-grid-cell-layer.ts +4 -4
  209. package/src/screen-grid-layer/screen-grid-cell-layer.wgsl.ts +76 -0
  210. package/src/screen-grid-layer/screen-grid-layer-uniforms.ts +13 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webgl-bin-sorter.js","sourceRoot":"","sources":["../../../../src/common/aggregator/gpu-aggregator/webgl-bin-sorter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ export { CPUAggregator } from "./cpu-aggregator/cpu-aggregator.js";
5
+ export { WebGLAggregator } from "./gpu-aggregator/webgl-aggregator.js";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/common/aggregator/index.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAEpC,OAAO,EAAC,aAAa,EAAC,2CAAwC;AAC9D,OAAO,EAAC,eAAe,EAAC,6CAA0C"}
@@ -0,0 +1,5 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/common/types.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC"}
@@ -0,0 +1,21 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ /** Utility to estimate binIdRange as expected by AggregatorProps */
5
+ export function getBinIdRange({ dataBounds, getBinId, padding = 0 }) {
6
+ const corners = [
7
+ dataBounds[0],
8
+ dataBounds[1],
9
+ [dataBounds[0][0], dataBounds[1][1]],
10
+ [dataBounds[1][0], dataBounds[0][1]]
11
+ ].map(p => getBinId(p));
12
+ const minX = Math.min(...corners.map(p => p[0])) - padding;
13
+ const minY = Math.min(...corners.map(p => p[1])) - padding;
14
+ const maxX = Math.max(...corners.map(p => p[0])) + padding + 1;
15
+ const maxY = Math.max(...corners.map(p => p[1])) + padding + 1;
16
+ return [
17
+ [minX, maxX],
18
+ [minY, maxY]
19
+ ];
20
+ }
21
+ //# sourceMappingURL=bounds-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bounds-utils.js","sourceRoot":"","sources":["../../../src/common/utils/bounds-utils.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAEpC,oEAAoE;AACpE,MAAM,UAAU,aAAa,CAAC,EAC5B,UAAU,EACV,QAAQ,EACR,OAAO,GAAG,CAAC,EAQZ;IACC,MAAM,OAAO,GAAG;QACd,UAAU,CAAC,CAAC,CAAC;QACb,UAAU,CAAC,CAAC,CAAC;QACb,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACrC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAExB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;IAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;IAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC;IAC/D,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC;IAE/D,OAAO;QACL,CAAC,IAAI,EAAE,IAAI,CAAC;QACZ,CAAC,IAAI,EAAE,IAAI,CAAC;KACb,CAAC;AACJ,CAAC"}
@@ -0,0 +1,65 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ export const defaultColorRange = [
5
+ [255, 255, 178],
6
+ [254, 217, 118],
7
+ [254, 178, 76],
8
+ [253, 141, 60],
9
+ [240, 59, 32],
10
+ [189, 0, 38]
11
+ ];
12
+ // Converts a colorRange array to a flat array with 4 components per color
13
+ export function colorRangeToFlatArray(colorRange, normalize = false, ArrayType = Float32Array) {
14
+ let flatArray;
15
+ if (Number.isFinite(colorRange[0])) {
16
+ // its already a flat array.
17
+ flatArray = new ArrayType(colorRange);
18
+ }
19
+ else {
20
+ // flatten it
21
+ flatArray = new ArrayType(colorRange.length * 4);
22
+ let index = 0;
23
+ for (let i = 0; i < colorRange.length; i++) {
24
+ const color = colorRange[i];
25
+ flatArray[index++] = color[0];
26
+ flatArray[index++] = color[1];
27
+ flatArray[index++] = color[2];
28
+ flatArray[index++] = Number.isFinite(color[3]) ? color[3] : 255;
29
+ }
30
+ }
31
+ if (normalize) {
32
+ for (let i = 0; i < flatArray.length; i++) {
33
+ flatArray[i] /= 255;
34
+ }
35
+ }
36
+ return flatArray;
37
+ }
38
+ export const COLOR_RANGE_FILTER = {
39
+ linear: 'linear',
40
+ quantile: 'nearest',
41
+ quantize: 'nearest',
42
+ ordinal: 'nearest'
43
+ };
44
+ export function updateColorRangeTexture(texture, type) {
45
+ texture.setSampler({
46
+ minFilter: COLOR_RANGE_FILTER[type],
47
+ magFilter: COLOR_RANGE_FILTER[type]
48
+ });
49
+ }
50
+ export function createColorRangeTexture(device, colorRange, type = 'linear') {
51
+ const colors = colorRangeToFlatArray(colorRange, false, Uint8Array);
52
+ return device.createTexture({
53
+ format: 'rgba8unorm',
54
+ sampler: {
55
+ minFilter: COLOR_RANGE_FILTER[type],
56
+ magFilter: COLOR_RANGE_FILTER[type],
57
+ addressModeU: 'clamp-to-edge',
58
+ addressModeV: 'clamp-to-edge'
59
+ },
60
+ data: colors,
61
+ width: colors.length / 4,
62
+ height: 1
63
+ });
64
+ }
65
+ //# sourceMappingURL=color-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"color-utils.js","sourceRoot":"","sources":["../../../src/common/utils/color-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ export function filterProps(props, filterKeys) {
5
+ const filteredProps = {};
6
+ for (const key in props) {
7
+ if (!filterKeys.includes(key)) {
8
+ filteredProps[key] = props[key];
9
+ }
10
+ }
11
+ return filteredProps;
12
+ }
13
+ //# sourceMappingURL=prop-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prop-utils.js","sourceRoot":"","sources":["../../../src/common/utils/prop-utils.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAEpC,MAAM,UAAU,WAAW,CAAC,KAAK,EAAE,UAAU;IAC3C,MAAM,aAAa,GAAG,EAAE,CAAC;IACzB,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,aAAa,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC"}
@@ -0,0 +1,181 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ /** Applies a scale to BinaryAttribute */
5
+ export class AttributeWithScale {
6
+ constructor(input, inputLength) {
7
+ this.props = {
8
+ scaleType: 'linear',
9
+ lowerPercentile: 0,
10
+ upperPercentile: 100
11
+ };
12
+ /** [min, max] of attribute values, or null if unknown */
13
+ this.domain = null;
14
+ /** Valid domain if lower/upper percentile are defined */
15
+ this.cutoff = null;
16
+ this.input = input;
17
+ this.inputLength = inputLength;
18
+ // No processing is needed with the default scale
19
+ this.attribute = input;
20
+ }
21
+ getScalePercentile() {
22
+ if (!this._percentile) {
23
+ const value = getAttributeValue(this.input, this.inputLength);
24
+ this._percentile = applyScaleQuantile(value);
25
+ }
26
+ return this._percentile;
27
+ }
28
+ getScaleOrdinal() {
29
+ if (!this._ordinal) {
30
+ const value = getAttributeValue(this.input, this.inputLength);
31
+ this._ordinal = applyScaleOrdinal(value);
32
+ }
33
+ return this._ordinal;
34
+ }
35
+ /** Returns the [lowerCutoff, upperCutoff] of scaled values, or null if not applicable */
36
+ getCutoff({ scaleType, lowerPercentile, upperPercentile }) {
37
+ if (scaleType === 'quantile') {
38
+ return [lowerPercentile, upperPercentile - 1];
39
+ }
40
+ if (lowerPercentile > 0 || upperPercentile < 100) {
41
+ const { domain: thresholds } = this.getScalePercentile();
42
+ let lowValue = thresholds[Math.floor(lowerPercentile) - 1] ?? -Infinity;
43
+ let highValue = thresholds[Math.floor(upperPercentile) - 1] ?? Infinity;
44
+ if (scaleType === 'ordinal') {
45
+ const { domain: sortedUniqueValues } = this.getScaleOrdinal();
46
+ lowValue = sortedUniqueValues.findIndex(x => x >= lowValue);
47
+ highValue = sortedUniqueValues.findIndex(x => x > highValue) - 1;
48
+ if (highValue === -2) {
49
+ highValue = sortedUniqueValues.length - 1;
50
+ }
51
+ }
52
+ return [lowValue, highValue];
53
+ }
54
+ return null;
55
+ }
56
+ update(props) {
57
+ const oldProps = this.props;
58
+ if (props.scaleType !== oldProps.scaleType) {
59
+ switch (props.scaleType) {
60
+ case 'quantile': {
61
+ const { attribute } = this.getScalePercentile();
62
+ this.attribute = attribute;
63
+ this.domain = [0, 99];
64
+ break;
65
+ }
66
+ case 'ordinal': {
67
+ const { attribute, domain } = this.getScaleOrdinal();
68
+ this.attribute = attribute;
69
+ this.domain = [0, domain.length - 1];
70
+ break;
71
+ }
72
+ default:
73
+ this.attribute = this.input;
74
+ this.domain = null;
75
+ }
76
+ }
77
+ if (props.scaleType !== oldProps.scaleType ||
78
+ props.lowerPercentile !== oldProps.lowerPercentile ||
79
+ props.upperPercentile !== oldProps.upperPercentile) {
80
+ this.cutoff = this.getCutoff(props);
81
+ }
82
+ this.props = props;
83
+ return this;
84
+ }
85
+ }
86
+ /**
87
+ * Transform an array of values to ordinal indices
88
+ */
89
+ export function applyScaleOrdinal(values) {
90
+ const uniqueValues = new Set();
91
+ for (const x of values) {
92
+ if (Number.isFinite(x)) {
93
+ uniqueValues.add(x);
94
+ }
95
+ }
96
+ const sortedUniqueValues = Array.from(uniqueValues).sort();
97
+ const domainMap = new Map();
98
+ for (let i = 0; i < sortedUniqueValues.length; i++) {
99
+ domainMap.set(sortedUniqueValues[i], i);
100
+ }
101
+ return {
102
+ attribute: {
103
+ value: values.map(x => (Number.isFinite(x) ? domainMap.get(x) : NaN)),
104
+ type: 'float32',
105
+ size: 1
106
+ },
107
+ domain: sortedUniqueValues
108
+ };
109
+ }
110
+ /**
111
+ * Transform an array of values to percentiles
112
+ */
113
+ export function applyScaleQuantile(values, rangeLength = 100) {
114
+ const sortedValues = Array.from(values).filter(Number.isFinite).sort(ascending);
115
+ let i = 0;
116
+ const n = Math.max(1, rangeLength);
117
+ const thresholds = new Array(n - 1);
118
+ while (++i < n) {
119
+ thresholds[i - 1] = threshold(sortedValues, i / n);
120
+ }
121
+ return {
122
+ attribute: {
123
+ value: values.map(x => (Number.isFinite(x) ? bisectRight(thresholds, x) : NaN)),
124
+ type: 'float32',
125
+ size: 1
126
+ },
127
+ domain: thresholds
128
+ };
129
+ }
130
+ function getAttributeValue(attribute, length) {
131
+ const elementStride = (attribute.stride ?? 4) / 4;
132
+ const elementOffset = (attribute.offset ?? 0) / 4;
133
+ let value = attribute.value;
134
+ if (!value) {
135
+ const bytes = attribute.buffer?.readSyncWebGL(0, elementStride * 4 * length);
136
+ if (bytes) {
137
+ value = new Float32Array(bytes.buffer);
138
+ attribute.value = value;
139
+ }
140
+ }
141
+ if (elementStride === 1) {
142
+ return value.subarray(0, length);
143
+ }
144
+ const result = new Float32Array(length);
145
+ for (let i = 0; i < length; i++) {
146
+ result[i] = value[i * elementStride + elementOffset];
147
+ }
148
+ return result;
149
+ }
150
+ function ascending(a, b) {
151
+ return a - b;
152
+ }
153
+ function threshold(domain, fraction) {
154
+ const domainLength = domain.length;
155
+ if (fraction <= 0 || domainLength < 2) {
156
+ return domain[0];
157
+ }
158
+ if (fraction >= 1) {
159
+ return domain[domainLength - 1];
160
+ }
161
+ const domainFraction = (domainLength - 1) * fraction;
162
+ const lowIndex = Math.floor(domainFraction);
163
+ const low = domain[lowIndex];
164
+ const high = domain[lowIndex + 1];
165
+ return low + (high - low) * (domainFraction - lowIndex);
166
+ }
167
+ function bisectRight(a, x) {
168
+ let lo = 0;
169
+ let hi = a.length;
170
+ while (lo < hi) {
171
+ const mid = (lo + hi) >>> 1;
172
+ if (a[mid] > x) {
173
+ hi = mid;
174
+ }
175
+ else {
176
+ lo = mid + 1;
177
+ }
178
+ }
179
+ return lo;
180
+ }
181
+ //# sourceMappingURL=scale-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scale-utils.js","sourceRoot":"","sources":["../../../src/common/utils/scale-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ const uniformBlock = /* glsl */ `\
5
+ layout(std140) uniform binOptionsUniforms {
6
+ vec2 cellOriginCommon;
7
+ vec2 cellSizeCommon;
8
+ } binOptions;
9
+ `;
10
+ export const binOptionsUniforms = {
11
+ name: 'binOptions',
12
+ vs: uniformBlock,
13
+ uniformTypes: {
14
+ cellOriginCommon: 'vec2<f32>',
15
+ cellSizeCommon: 'vec2<f32>'
16
+ }
17
+ };
18
+ //# sourceMappingURL=bin-options-uniforms.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bin-options-uniforms.js","sourceRoot":"","sources":["../../src/contour-layer/bin-options-uniforms.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAIpC,MAAM,YAAY,GAAG,UAAU,CAAC;;;;;CAK/B,CAAC;AAOF,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,IAAI,EAAE,YAAY;IAClB,EAAE,EAAE,YAAY;IAChB,YAAY,EAAE;QACZ,gBAAgB,EAAE,WAAW;QAC7B,cAAc,EAAE,WAAW;KAC5B;CAC0C,CAAC"}
@@ -0,0 +1,282 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ import { COORDINATE_SYSTEM, project32, Viewport, _deepEqual } from '@deck.gl/core';
5
+ import { PathLayer, SolidPolygonLayer } from '@deck.gl/layers';
6
+ import { WebGLAggregator, CPUAggregator } from "../common/aggregator/index.js";
7
+ import AggregationLayer from "../common/aggregation-layer.js";
8
+ import { generateContours } from "./contour-utils.js";
9
+ import { getAggregatorValueReader } from "./value-reader.js";
10
+ import { getBinIdRange } from "../common/utils/bounds-utils.js";
11
+ import { Matrix4 } from '@math.gl/core';
12
+ import { binOptionsUniforms } from "./bin-options-uniforms.js";
13
+ const DEFAULT_COLOR = [255, 255, 255, 255];
14
+ const DEFAULT_STROKE_WIDTH = 1;
15
+ const defaultProps = {
16
+ // grid aggregation
17
+ cellSize: { type: 'number', min: 1, value: 1000 },
18
+ gridOrigin: { type: 'array', compare: true, value: [0, 0] },
19
+ getPosition: { type: 'accessor', value: (x) => x.position },
20
+ getWeight: { type: 'accessor', value: 1 },
21
+ gpuAggregation: true,
22
+ aggregation: 'SUM',
23
+ // contour lines
24
+ contours: {
25
+ type: 'object',
26
+ value: [{ threshold: 1 }],
27
+ optional: true,
28
+ compare: 3
29
+ },
30
+ zOffset: 0.005
31
+ };
32
+ /** Aggregate data into a grid-based heatmap. The color and height of a cell are determined based on the objects it contains. */
33
+ class GridLayer extends AggregationLayer {
34
+ getAggregatorType() {
35
+ return this.props.gpuAggregation && WebGLAggregator.isSupported(this.context.device)
36
+ ? 'gpu'
37
+ : 'cpu';
38
+ }
39
+ createAggregator(type) {
40
+ if (type === 'cpu') {
41
+ return new CPUAggregator({
42
+ dimensions: 2,
43
+ getBin: {
44
+ sources: ['positions'],
45
+ getValue: ({ positions }, index, opts) => {
46
+ const viewport = this.state.aggregatorViewport;
47
+ // project to common space
48
+ const p = viewport.projectPosition(positions);
49
+ const { cellSizeCommon, cellOriginCommon } = opts;
50
+ return [
51
+ Math.floor((p[0] - cellOriginCommon[0]) / cellSizeCommon[0]),
52
+ Math.floor((p[1] - cellOriginCommon[1]) / cellSizeCommon[1])
53
+ ];
54
+ }
55
+ },
56
+ getValue: [{ sources: ['counts'], getValue: ({ counts }) => counts }],
57
+ onUpdate: this._onAggregationUpdate.bind(this)
58
+ });
59
+ }
60
+ return new WebGLAggregator(this.context.device, {
61
+ dimensions: 2,
62
+ channelCount: 1,
63
+ bufferLayout: this.getAttributeManager().getBufferLayouts({ isInstanced: false }),
64
+ ...super.getShaders({
65
+ modules: [project32, binOptionsUniforms],
66
+ vs: /* glsl */ `
67
+ in vec3 positions;
68
+ in vec3 positions64Low;
69
+ in float counts;
70
+
71
+ void getBin(out ivec2 binId) {
72
+ vec3 positionCommon = project_position(positions, positions64Low);
73
+ vec2 gridCoords = floor(positionCommon.xy / binOptions.cellSizeCommon);
74
+ binId = ivec2(gridCoords);
75
+ }
76
+ void getValue(out float value) {
77
+ value = counts;
78
+ }
79
+ `
80
+ }),
81
+ onUpdate: this._onAggregationUpdate.bind(this)
82
+ });
83
+ }
84
+ initializeState() {
85
+ super.initializeState();
86
+ const attributeManager = this.getAttributeManager();
87
+ attributeManager.add({
88
+ positions: {
89
+ size: 3,
90
+ accessor: 'getPosition',
91
+ type: 'float64',
92
+ fp64: this.use64bitPositions()
93
+ },
94
+ counts: { size: 1, accessor: 'getWeight' }
95
+ });
96
+ }
97
+ updateState(params) {
98
+ const aggregatorChanged = super.updateState(params);
99
+ const { props, oldProps, changeFlags } = params;
100
+ const { aggregator } = this.state;
101
+ if (aggregatorChanged ||
102
+ changeFlags.dataChanged ||
103
+ props.cellSize !== oldProps.cellSize ||
104
+ !_deepEqual(props.gridOrigin, oldProps.gridOrigin, 1) ||
105
+ props.aggregation !== oldProps.aggregation) {
106
+ this._updateBinOptions();
107
+ const { cellSizeCommon, cellOriginCommon, binIdRange } = this.state;
108
+ aggregator.setProps({
109
+ // @ts-expect-error only used by GPUAggregator
110
+ binIdRange,
111
+ pointCount: this.getNumInstances(),
112
+ operations: [props.aggregation],
113
+ binOptions: {
114
+ cellSizeCommon,
115
+ cellOriginCommon
116
+ }
117
+ });
118
+ }
119
+ if (!_deepEqual(oldProps.contours, props.contours, 2)) {
120
+ // Recalculate contours
121
+ this.setState({ contourData: null });
122
+ }
123
+ return aggregatorChanged;
124
+ }
125
+ _updateBinOptions() {
126
+ const bounds = this.getBounds();
127
+ const cellSizeCommon = [1, 1];
128
+ let cellOriginCommon = [0, 0];
129
+ let binIdRange = [
130
+ [0, 1],
131
+ [0, 1]
132
+ ];
133
+ let viewport = this.context.viewport;
134
+ if (bounds && Number.isFinite(bounds[0][0])) {
135
+ let centroid = [(bounds[0][0] + bounds[1][0]) / 2, (bounds[0][1] + bounds[1][1]) / 2];
136
+ const { cellSize, gridOrigin } = this.props;
137
+ const { unitsPerMeter } = viewport.getDistanceScales(centroid);
138
+ cellSizeCommon[0] = unitsPerMeter[0] * cellSize;
139
+ cellSizeCommon[1] = unitsPerMeter[1] * cellSize;
140
+ // Offset common space to center at the origin of the grid cell where the data center is in
141
+ // This improves precision without affecting the cell positions
142
+ const centroidCommon = viewport.projectFlat(centroid);
143
+ cellOriginCommon = [
144
+ Math.floor((centroidCommon[0] - gridOrigin[0]) / cellSizeCommon[0]) * cellSizeCommon[0] +
145
+ gridOrigin[0],
146
+ Math.floor((centroidCommon[1] - gridOrigin[1]) / cellSizeCommon[1]) * cellSizeCommon[1] +
147
+ gridOrigin[1]
148
+ ];
149
+ centroid = viewport.unprojectFlat(cellOriginCommon);
150
+ const ViewportType = viewport.constructor;
151
+ // We construct a viewport for the GPU aggregator's project module
152
+ // This viewport is determined by data
153
+ // removes arbitrary precision variance that depends on initial view state
154
+ viewport = viewport.isGeospatial
155
+ ? new ViewportType({ longitude: centroid[0], latitude: centroid[1], zoom: 12 })
156
+ : new Viewport({ position: [centroid[0], centroid[1], 0], zoom: 12 });
157
+ // Round to the nearest 32-bit float to match CPU and GPU results
158
+ cellOriginCommon = [Math.fround(viewport.center[0]), Math.fround(viewport.center[1])];
159
+ binIdRange = getBinIdRange({
160
+ dataBounds: bounds,
161
+ getBinId: (p) => {
162
+ const positionCommon = viewport.projectFlat(p);
163
+ return [
164
+ Math.floor((positionCommon[0] - cellOriginCommon[0]) / cellSizeCommon[0]),
165
+ Math.floor((positionCommon[1] - cellOriginCommon[1]) / cellSizeCommon[1])
166
+ ];
167
+ }
168
+ });
169
+ }
170
+ this.setState({ cellSizeCommon, cellOriginCommon, binIdRange, aggregatorViewport: viewport });
171
+ }
172
+ draw(opts) {
173
+ // Replaces render time viewport with our own
174
+ if (opts.shaderModuleProps.project) {
175
+ opts.shaderModuleProps.project.viewport = this.state.aggregatorViewport;
176
+ }
177
+ super.draw(opts);
178
+ }
179
+ _onAggregationUpdate() {
180
+ const { aggregator, binIdRange } = this.state;
181
+ this.setState({
182
+ aggregatedValueReader: getAggregatorValueReader({ aggregator, binIdRange, channel: 0 }),
183
+ contourData: null
184
+ });
185
+ }
186
+ _getContours() {
187
+ const { aggregatedValueReader } = this.state;
188
+ if (!aggregatedValueReader) {
189
+ return null;
190
+ }
191
+ if (!this.state.contourData) {
192
+ const { binIdRange } = this.state;
193
+ const { contours } = this.props;
194
+ const contourData = generateContours({
195
+ contours,
196
+ getValue: aggregatedValueReader,
197
+ xRange: binIdRange[0],
198
+ yRange: binIdRange[1]
199
+ });
200
+ this.state.contourData = contourData;
201
+ }
202
+ return this.state.contourData;
203
+ }
204
+ onAttributeChange(id) {
205
+ const { aggregator } = this.state;
206
+ switch (id) {
207
+ case 'positions':
208
+ aggregator.setNeedsUpdate();
209
+ this._updateBinOptions();
210
+ const { cellSizeCommon, cellOriginCommon, binIdRange } = this.state;
211
+ aggregator.setProps({
212
+ // @ts-expect-error only used by GPUAggregator
213
+ binIdRange,
214
+ binOptions: {
215
+ cellSizeCommon,
216
+ cellOriginCommon
217
+ }
218
+ });
219
+ break;
220
+ case 'counts':
221
+ aggregator.setNeedsUpdate(0);
222
+ break;
223
+ default:
224
+ // This should not happen
225
+ }
226
+ }
227
+ renderLayers() {
228
+ const contourData = this._getContours();
229
+ if (!contourData) {
230
+ return null;
231
+ }
232
+ const { lines, polygons } = contourData;
233
+ const { zOffset } = this.props;
234
+ const { cellOriginCommon, cellSizeCommon } = this.state;
235
+ const LinesSubLayerClass = this.getSubLayerClass('lines', PathLayer);
236
+ const BandsSubLayerClass = this.getSubLayerClass('bands', SolidPolygonLayer);
237
+ const modelMatrix = new Matrix4()
238
+ .translate([cellOriginCommon[0], cellOriginCommon[1], 0])
239
+ .scale([cellSizeCommon[0], cellSizeCommon[1], zOffset]);
240
+ // Contour lines layer
241
+ const lineLayer = lines &&
242
+ lines.length > 0 &&
243
+ new LinesSubLayerClass(this.getSubLayerProps({
244
+ id: 'lines'
245
+ }), {
246
+ data: lines,
247
+ coordinateSystem: COORDINATE_SYSTEM.CARTESIAN,
248
+ modelMatrix,
249
+ getPath: d => d.vertices,
250
+ getColor: d => d.contour.color ?? DEFAULT_COLOR,
251
+ getWidth: d => d.contour.strokeWidth ?? DEFAULT_STROKE_WIDTH,
252
+ widthUnits: 'pixels'
253
+ });
254
+ // Contour bands layer
255
+ const bandsLayer = polygons &&
256
+ polygons.length > 0 &&
257
+ new BandsSubLayerClass(this.getSubLayerProps({
258
+ id: 'bands'
259
+ }), {
260
+ data: polygons,
261
+ coordinateSystem: COORDINATE_SYSTEM.CARTESIAN,
262
+ modelMatrix,
263
+ getPolygon: d => d.vertices,
264
+ getFillColor: d => d.contour.color ?? DEFAULT_COLOR
265
+ });
266
+ return [lineLayer, bandsLayer];
267
+ }
268
+ getPickingInfo(params) {
269
+ const info = params.info;
270
+ const { object } = info;
271
+ if (object) {
272
+ info.object = {
273
+ contour: object.contour
274
+ };
275
+ }
276
+ return info;
277
+ }
278
+ }
279
+ GridLayer.layerName = 'ContourLayer';
280
+ GridLayer.defaultProps = defaultProps;
281
+ export default GridLayer;
282
+ //# sourceMappingURL=contour-layer.js.map