@kepler.gl/deckgl-layers 3.3.0-alpha.1 → 3.3.0-alpha.10

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 (199) hide show
  1. package/dist/cjs/3d-building-layer/3d-building-layer.js +66 -0
  2. package/dist/cjs/3d-building-layer/3d-building-utils.js +166 -0
  3. package/dist/cjs/3d-building-layer/types.js +6 -0
  4. package/dist/cjs/cluster-layer/cluster-layer.js +292 -0
  5. package/dist/cjs/column-layer/enhanced-column-layer.js +160 -0
  6. package/dist/{deckgl-extensions → cjs/deckgl-extensions}/filter-arrow-layer.js +1 -1
  7. package/dist/cjs/deckgl-extensions/filter-shader-module.js +26 -0
  8. package/dist/cjs/globe/atmosphere-layer.js +341 -0
  9. package/dist/cjs/globe/enhanced-multi-icon-layer.js +63 -0
  10. package/dist/cjs/globe/globe-depth-disk-layer.js +145 -0
  11. package/dist/cjs/globe/globe-layers.js +574 -0
  12. package/dist/cjs/globe/globe-stars-layer.js +99 -0
  13. package/dist/cjs/globe/globe-stars-layer.spec.js +42 -0
  14. package/dist/cjs/globe/globe-view.js +404 -0
  15. package/dist/cjs/globe/index.js +140 -0
  16. package/dist/cjs/globe/mvt-label-layer.js +190 -0
  17. package/dist/cjs/grid-layer/enhanced-cpu-grid-layer.js +116 -0
  18. package/dist/cjs/hexagon-layer/enhanced-hexagon-layer.js +134 -0
  19. package/dist/cjs/index.js +163 -0
  20. package/dist/cjs/layer-utils/aggregation-utils.js +181 -0
  21. package/dist/cjs/layer-utils/cluster-utils.js +95 -0
  22. package/dist/cjs/layer-utils/cpu-aggregator.js +798 -0
  23. package/dist/cjs/layer-utils/globe-cell-utils.js +203 -0
  24. package/dist/cjs/layer-utils/globe-cell-utils.spec.js +118 -0
  25. package/dist/cjs/layer-utils/shader-utils.js +38 -0
  26. package/dist/cjs/line-layer/line-layer.js +95 -0
  27. package/dist/cjs/raster/images.js +271 -0
  28. package/dist/cjs/raster/pipeline-validation-patch.js +101 -0
  29. package/dist/cjs/raster/raster-layer/raster-layer-shaders.js +163 -0
  30. package/dist/cjs/raster/raster-layer/raster-layer-webgl1.fs.js +10 -0
  31. package/dist/cjs/raster/raster-layer/raster-layer-webgl1.vs.js +10 -0
  32. package/dist/cjs/raster/raster-layer/raster-layer-webgl2.fs.js +10 -0
  33. package/dist/cjs/raster/raster-layer/raster-layer-webgl2.vs.js +10 -0
  34. package/dist/cjs/raster/raster-layer/raster-layer.js +287 -0
  35. package/dist/cjs/raster/raster-mesh-layer/raster-mesh-layer-shaders.js +38 -0
  36. package/dist/cjs/raster/raster-mesh-layer/raster-mesh-layer-webgl1.fs.js +10 -0
  37. package/dist/cjs/raster/raster-mesh-layer/raster-mesh-layer-webgl1.vs.js +10 -0
  38. package/dist/cjs/raster/raster-mesh-layer/raster-mesh-layer-webgl2.fs.js +10 -0
  39. package/dist/cjs/raster/raster-mesh-layer/raster-mesh-layer-webgl2.vs.js +10 -0
  40. package/dist/cjs/raster/raster-mesh-layer/raster-mesh-layer.js +321 -0
  41. package/dist/cjs/raster/raster-processing-uniforms.js +124 -0
  42. package/dist/cjs/raster/types.js +6 -0
  43. package/dist/cjs/raster/util.js +139 -0
  44. package/dist/cjs/raster/webgl/color/colormap.js +45 -0
  45. package/dist/cjs/raster/webgl/color/filter.js +58 -0
  46. package/dist/cjs/raster/webgl/color/gamma-contrast.js +68 -0
  47. package/dist/cjs/raster/webgl/color/linear-rescale.js +35 -0
  48. package/dist/cjs/raster/webgl/color/saturation.js +42 -0
  49. package/dist/cjs/raster/webgl/color/sigmoidal-contrast.js +68 -0
  50. package/dist/{raster → cjs/raster}/webgl/index.js +1 -1
  51. package/dist/cjs/raster/webgl/pansharpen/pansharpen-brovey.js +46 -0
  52. package/dist/cjs/raster/webgl/spectral-indices/evi.js +26 -0
  53. package/dist/cjs/raster/webgl/spectral-indices/msavi.js +25 -0
  54. package/dist/cjs/raster/webgl/spectral-indices/normalized-difference.js +19 -0
  55. package/dist/cjs/raster/webgl/spectral-indices/savi.js +21 -0
  56. package/dist/cjs/raster/webgl/texture/combine-bands.js +65 -0
  57. package/dist/cjs/raster/webgl/texture/mask.js +50 -0
  58. package/dist/cjs/raster/webgl/texture/reorder-bands.js +72 -0
  59. package/dist/cjs/raster/webgl/texture/rgba-image.js +34 -0
  60. package/dist/cjs/raster/webgl/types.js +6 -0
  61. package/dist/cjs/svg-icon-layer/scatterplot-icon-layer.js +88 -0
  62. package/dist/cjs/svg-icon-layer/svg-icon-layer.js +104 -0
  63. package/dist/cjs/wms/wms-layer.js +624 -0
  64. package/dist/esm/3d-building-layer/3d-building-layer.js +62 -0
  65. package/dist/esm/3d-building-layer/3d-building-utils.js +157 -0
  66. package/dist/esm/3d-building-layer/types.js +3 -0
  67. package/dist/esm/cluster-layer/cluster-layer.js +286 -0
  68. package/dist/esm/column-layer/enhanced-column-layer.js +156 -0
  69. package/dist/esm/deckgl-extensions/filter-arrow-layer.js +64 -0
  70. package/dist/esm/deckgl-extensions/filter-shader-module.js +20 -0
  71. package/dist/esm/globe/atmosphere-layer.js +335 -0
  72. package/dist/esm/globe/enhanced-multi-icon-layer.js +60 -0
  73. package/dist/esm/globe/globe-depth-disk-layer.js +140 -0
  74. package/dist/esm/globe/globe-layers.js +566 -0
  75. package/dist/esm/globe/globe-stars-layer.js +92 -0
  76. package/dist/esm/globe/globe-stars-layer.spec.js +40 -0
  77. package/dist/esm/globe/globe-view.js +398 -0
  78. package/dist/esm/globe/index.js +26 -0
  79. package/dist/esm/globe/mvt-label-layer.js +187 -0
  80. package/dist/esm/grid-layer/enhanced-cpu-grid-layer.js +112 -0
  81. package/dist/esm/hexagon-layer/enhanced-hexagon-layer.js +130 -0
  82. package/dist/esm/index.js +22 -0
  83. package/dist/esm/layer-utils/aggregation-utils.js +172 -0
  84. package/dist/esm/layer-utils/cluster-utils.js +89 -0
  85. package/dist/esm/layer-utils/cpu-aggregator.js +788 -0
  86. package/dist/esm/layer-utils/globe-cell-utils.js +197 -0
  87. package/dist/esm/layer-utils/globe-cell-utils.spec.js +115 -0
  88. package/dist/esm/layer-utils/shader-utils.js +32 -0
  89. package/dist/esm/line-layer/line-layer.js +91 -0
  90. package/dist/esm/raster/images.js +267 -0
  91. package/dist/esm/raster/pipeline-validation-patch.js +94 -0
  92. package/dist/esm/raster/raster-layer/raster-layer-shaders.js +153 -0
  93. package/dist/esm/raster/raster-layer/raster-layer-webgl1.fs.js +5 -0
  94. package/dist/esm/raster/raster-layer/raster-layer-webgl1.vs.js +5 -0
  95. package/dist/esm/raster/raster-layer/raster-layer-webgl2.fs.js +5 -0
  96. package/dist/esm/raster/raster-layer/raster-layer-webgl2.vs.js +5 -0
  97. package/dist/esm/raster/raster-layer/raster-layer.js +283 -0
  98. package/dist/esm/raster/raster-mesh-layer/raster-mesh-layer-shaders.js +30 -0
  99. package/dist/esm/raster/raster-mesh-layer/raster-mesh-layer-webgl1.fs.js +5 -0
  100. package/dist/esm/raster/raster-mesh-layer/raster-mesh-layer-webgl1.vs.js +5 -0
  101. package/dist/esm/raster/raster-mesh-layer/raster-mesh-layer-webgl2.fs.js +5 -0
  102. package/dist/esm/raster/raster-mesh-layer/raster-mesh-layer-webgl2.vs.js +5 -0
  103. package/dist/esm/raster/raster-mesh-layer/raster-mesh-layer.js +318 -0
  104. package/dist/esm/raster/raster-processing-uniforms.js +118 -0
  105. package/dist/esm/raster/types.js +3 -0
  106. package/dist/esm/raster/util.js +134 -0
  107. package/dist/esm/raster/webgl/color/colormap.js +39 -0
  108. package/dist/esm/raster/webgl/color/filter.js +52 -0
  109. package/dist/esm/raster/webgl/color/gamma-contrast.js +62 -0
  110. package/dist/esm/raster/webgl/color/linear-rescale.js +29 -0
  111. package/dist/esm/raster/webgl/color/saturation.js +36 -0
  112. package/dist/esm/raster/webgl/color/sigmoidal-contrast.js +62 -0
  113. package/dist/esm/raster/webgl/index.js +26 -0
  114. package/dist/esm/raster/webgl/pansharpen/pansharpen-brovey.js +40 -0
  115. package/dist/esm/raster/webgl/spectral-indices/evi.js +20 -0
  116. package/dist/esm/raster/webgl/spectral-indices/msavi.js +19 -0
  117. package/dist/esm/raster/webgl/spectral-indices/normalized-difference.js +13 -0
  118. package/dist/esm/raster/webgl/spectral-indices/savi.js +15 -0
  119. package/dist/esm/raster/webgl/texture/combine-bands.js +58 -0
  120. package/dist/esm/raster/webgl/texture/mask.js +44 -0
  121. package/dist/esm/raster/webgl/texture/reorder-bands.js +65 -0
  122. package/dist/esm/raster/webgl/texture/rgba-image.js +28 -0
  123. package/dist/esm/raster/webgl/types.js +3 -0
  124. package/dist/esm/svg-icon-layer/scatterplot-icon-layer.js +84 -0
  125. package/dist/esm/svg-icon-layer/svg-icon-layer.js +101 -0
  126. package/dist/esm/wms/wms-layer.js +619 -0
  127. package/dist/globe/atmosphere-layer.d.ts +58 -0
  128. package/dist/globe/enhanced-multi-icon-layer.d.ts +6 -0
  129. package/dist/globe/globe-depth-disk-layer.d.ts +19 -0
  130. package/dist/globe/globe-layers.d.ts +108 -0
  131. package/dist/globe/globe-stars-layer.d.ts +10 -0
  132. package/dist/globe/globe-stars-layer.spec.d.ts +1 -0
  133. package/dist/globe/globe-view.d.ts +23 -0
  134. package/dist/globe/index.d.ts +8 -0
  135. package/dist/globe/mvt-label-layer.d.ts +7928 -0
  136. package/dist/grid-layer/enhanced-cpu-grid-layer.d.ts +138 -56
  137. package/dist/hexagon-layer/enhanced-hexagon-layer.d.ts +138 -56
  138. package/dist/index.d.ts +1 -0
  139. package/dist/layer-utils/cluster-utils.d.ts +6 -1
  140. package/dist/layer-utils/globe-cell-utils.d.ts +30 -0
  141. package/dist/layer-utils/globe-cell-utils.spec.d.ts +1 -0
  142. package/dist/raster/images.d.ts +10 -1
  143. package/dist/raster/raster-layer/raster-layer.d.ts +4 -0
  144. package/dist/raster/raster-mesh-layer/raster-mesh-layer.d.ts +4 -0
  145. package/dist/svg-icon-layer/scatterplot-icon-layer.d.ts +4 -1
  146. package/dist/wms/wms-layer.d.ts +27 -0
  147. package/package.json +22 -13
  148. package/dist/3d-building-layer/3d-building-layer.js +0 -66
  149. package/dist/3d-building-layer/3d-building-utils.js +0 -166
  150. package/dist/3d-building-layer/types.js +0 -6
  151. package/dist/cluster-layer/cluster-layer.js +0 -293
  152. package/dist/column-layer/enhanced-column-layer.js +0 -135
  153. package/dist/deckgl-extensions/filter-shader-module.js +0 -26
  154. package/dist/grid-layer/enhanced-cpu-grid-layer.js +0 -90
  155. package/dist/hexagon-layer/enhanced-hexagon-layer.js +0 -108
  156. package/dist/index.js +0 -152
  157. package/dist/layer-utils/aggregation-utils.js +0 -181
  158. package/dist/layer-utils/cluster-utils.js +0 -93
  159. package/dist/layer-utils/cpu-aggregator.js +0 -798
  160. package/dist/layer-utils/shader-utils.js +0 -38
  161. package/dist/line-layer/line-layer.js +0 -95
  162. package/dist/raster/images.js +0 -259
  163. package/dist/raster/pipeline-validation-patch.js +0 -101
  164. package/dist/raster/raster-layer/raster-layer-shaders.js +0 -163
  165. package/dist/raster/raster-layer/raster-layer-webgl1.fs.js +0 -10
  166. package/dist/raster/raster-layer/raster-layer-webgl1.vs.js +0 -10
  167. package/dist/raster/raster-layer/raster-layer-webgl2.fs.js +0 -10
  168. package/dist/raster/raster-layer/raster-layer-webgl2.vs.js +0 -10
  169. package/dist/raster/raster-layer/raster-layer.js +0 -237
  170. package/dist/raster/raster-mesh-layer/matrix.d.ts +0 -4
  171. package/dist/raster/raster-mesh-layer/matrix.js +0 -18
  172. package/dist/raster/raster-mesh-layer/raster-mesh-layer-shaders.js +0 -38
  173. package/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl1.fs.js +0 -10
  174. package/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl1.vs.js +0 -10
  175. package/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl2.fs.js +0 -10
  176. package/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl2.vs.js +0 -10
  177. package/dist/raster/raster-mesh-layer/raster-mesh-layer.js +0 -271
  178. package/dist/raster/raster-processing-uniforms.js +0 -124
  179. package/dist/raster/types.js +0 -6
  180. package/dist/raster/util.js +0 -139
  181. package/dist/raster/webgl/color/colormap.js +0 -45
  182. package/dist/raster/webgl/color/filter.js +0 -58
  183. package/dist/raster/webgl/color/gamma-contrast.js +0 -68
  184. package/dist/raster/webgl/color/linear-rescale.js +0 -35
  185. package/dist/raster/webgl/color/saturation.js +0 -42
  186. package/dist/raster/webgl/color/sigmoidal-contrast.js +0 -68
  187. package/dist/raster/webgl/pansharpen/pansharpen-brovey.js +0 -46
  188. package/dist/raster/webgl/spectral-indices/evi.js +0 -26
  189. package/dist/raster/webgl/spectral-indices/msavi.js +0 -25
  190. package/dist/raster/webgl/spectral-indices/normalized-difference.js +0 -19
  191. package/dist/raster/webgl/spectral-indices/savi.js +0 -21
  192. package/dist/raster/webgl/texture/combine-bands.js +0 -65
  193. package/dist/raster/webgl/texture/mask.js +0 -50
  194. package/dist/raster/webgl/texture/reorder-bands.js +0 -72
  195. package/dist/raster/webgl/texture/rgba-image.js +0 -34
  196. package/dist/raster/webgl/types.js +0 -6
  197. package/dist/svg-icon-layer/scatterplot-icon-layer.js +0 -51
  198. package/dist/svg-icon-layer/svg-icon-layer.js +0 -104
  199. package/dist/wms/wms-layer.js +0 -424
@@ -0,0 +1,163 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ var _exportNames = {
9
+ ThreeDBuildingLayer: true,
10
+ DeckGLClusterLayer: true,
11
+ EnhancedColumnLayer: true,
12
+ EnhancedGridLayer: true,
13
+ EnhancedHexagonLayer: true,
14
+ EnhancedLineLayer: true,
15
+ SvgIconLayer: true,
16
+ FilterArrowExtension: true,
17
+ RasterLayer: true,
18
+ RasterMeshLayer: true,
19
+ RasterWebGL: true,
20
+ WMSLayer: true
21
+ };
22
+ Object.defineProperty(exports, "DeckGLClusterLayer", {
23
+ enumerable: true,
24
+ get: function get() {
25
+ return _clusterLayer["default"];
26
+ }
27
+ });
28
+ Object.defineProperty(exports, "EnhancedColumnLayer", {
29
+ enumerable: true,
30
+ get: function get() {
31
+ return _enhancedColumnLayer["default"];
32
+ }
33
+ });
34
+ Object.defineProperty(exports, "EnhancedGridLayer", {
35
+ enumerable: true,
36
+ get: function get() {
37
+ return _enhancedCpuGridLayer["default"];
38
+ }
39
+ });
40
+ Object.defineProperty(exports, "EnhancedHexagonLayer", {
41
+ enumerable: true,
42
+ get: function get() {
43
+ return _enhancedHexagonLayer["default"];
44
+ }
45
+ });
46
+ Object.defineProperty(exports, "EnhancedLineLayer", {
47
+ enumerable: true,
48
+ get: function get() {
49
+ return _lineLayer["default"];
50
+ }
51
+ });
52
+ Object.defineProperty(exports, "FilterArrowExtension", {
53
+ enumerable: true,
54
+ get: function get() {
55
+ return _filterArrowLayer["default"];
56
+ }
57
+ });
58
+ Object.defineProperty(exports, "RasterLayer", {
59
+ enumerable: true,
60
+ get: function get() {
61
+ return _rasterLayer["default"];
62
+ }
63
+ });
64
+ Object.defineProperty(exports, "RasterMeshLayer", {
65
+ enumerable: true,
66
+ get: function get() {
67
+ return _rasterMeshLayer["default"];
68
+ }
69
+ });
70
+ exports.RasterWebGL = void 0;
71
+ Object.defineProperty(exports, "SvgIconLayer", {
72
+ enumerable: true,
73
+ get: function get() {
74
+ return _svgIconLayer["default"];
75
+ }
76
+ });
77
+ Object.defineProperty(exports, "ThreeDBuildingLayer", {
78
+ enumerable: true,
79
+ get: function get() {
80
+ return _dBuildingLayer["default"];
81
+ }
82
+ });
83
+ Object.defineProperty(exports, "WMSLayer", {
84
+ enumerable: true,
85
+ get: function get() {
86
+ return _wmsLayer["default"];
87
+ }
88
+ });
89
+ var _dBuildingLayer = _interopRequireDefault(require("./3d-building-layer/3d-building-layer"));
90
+ var _clusterLayer = _interopRequireDefault(require("./cluster-layer/cluster-layer"));
91
+ var _enhancedColumnLayer = _interopRequireDefault(require("./column-layer/enhanced-column-layer"));
92
+ var _enhancedCpuGridLayer = _interopRequireDefault(require("./grid-layer/enhanced-cpu-grid-layer"));
93
+ var _enhancedHexagonLayer = _interopRequireDefault(require("./hexagon-layer/enhanced-hexagon-layer"));
94
+ var _lineLayer = _interopRequireDefault(require("./line-layer/line-layer"));
95
+ var _svgIconLayer = _interopRequireDefault(require("./svg-icon-layer/svg-icon-layer"));
96
+ var _filterArrowLayer = _interopRequireDefault(require("./deckgl-extensions/filter-arrow-layer"));
97
+ var _rasterLayer = _interopRequireDefault(require("./raster/raster-layer/raster-layer"));
98
+ var _rasterMeshLayer = _interopRequireDefault(require("./raster/raster-mesh-layer/raster-mesh-layer"));
99
+ var _RasterWebGL = _interopRequireWildcard(require("./raster/webgl"));
100
+ exports.RasterWebGL = _RasterWebGL;
101
+ var _wmsLayer = _interopRequireDefault(require("./wms/wms-layer"));
102
+ var _shaderUtils = require("./layer-utils/shader-utils");
103
+ Object.keys(_shaderUtils).forEach(function (key) {
104
+ if (key === "default" || key === "__esModule") return;
105
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
106
+ if (key in exports && exports[key] === _shaderUtils[key]) return;
107
+ Object.defineProperty(exports, key, {
108
+ enumerable: true,
109
+ get: function get() {
110
+ return _shaderUtils[key];
111
+ }
112
+ });
113
+ });
114
+ var _aggregationUtils = require("./layer-utils/aggregation-utils");
115
+ Object.keys(_aggregationUtils).forEach(function (key) {
116
+ if (key === "default" || key === "__esModule") return;
117
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
118
+ if (key in exports && exports[key] === _aggregationUtils[key]) return;
119
+ Object.defineProperty(exports, key, {
120
+ enumerable: true,
121
+ get: function get() {
122
+ return _aggregationUtils[key];
123
+ }
124
+ });
125
+ });
126
+ var _types = require("./3d-building-layer/types");
127
+ Object.keys(_types).forEach(function (key) {
128
+ if (key === "default" || key === "__esModule") return;
129
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
130
+ if (key in exports && exports[key] === _types[key]) return;
131
+ Object.defineProperty(exports, key, {
132
+ enumerable: true,
133
+ get: function get() {
134
+ return _types[key];
135
+ }
136
+ });
137
+ });
138
+ var _dBuildingUtils = require("./3d-building-layer/3d-building-utils");
139
+ Object.keys(_dBuildingUtils).forEach(function (key) {
140
+ if (key === "default" || key === "__esModule") return;
141
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
142
+ if (key in exports && exports[key] === _dBuildingUtils[key]) return;
143
+ Object.defineProperty(exports, key, {
144
+ enumerable: true,
145
+ get: function get() {
146
+ return _dBuildingUtils[key];
147
+ }
148
+ });
149
+ });
150
+ var _globe = require("./globe");
151
+ Object.keys(_globe).forEach(function (key) {
152
+ if (key === "default" || key === "__esModule") return;
153
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
154
+ if (key in exports && exports[key] === _globe[key]) return;
155
+ Object.defineProperty(exports, key, {
156
+ enumerable: true,
157
+ get: function get() {
158
+ return _globe[key];
159
+ }
160
+ });
161
+ });
162
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
163
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZEJ1aWxkaW5nTGF5ZXIiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9jbHVzdGVyTGF5ZXIiLCJfZW5oYW5jZWRDb2x1bW5MYXllciIsIl9lbmhhbmNlZENwdUdyaWRMYXllciIsIl9lbmhhbmNlZEhleGFnb25MYXllciIsIl9saW5lTGF5ZXIiLCJfc3ZnSWNvbkxheWVyIiwiX2ZpbHRlckFycm93TGF5ZXIiLCJfcmFzdGVyTGF5ZXIiLCJfcmFzdGVyTWVzaExheWVyIiwiX1Jhc3RlcldlYkdMIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJleHBvcnRzIiwiUmFzdGVyV2ViR0wiLCJfd21zTGF5ZXIiLCJfc2hhZGVyVXRpbHMiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIl9leHBvcnROYW1lcyIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImdldCIsIl9hZ2dyZWdhdGlvblV0aWxzIiwiX3R5cGVzIiwiX2RCdWlsZGluZ1V0aWxzIiwiX2dsb2JlIiwiZSIsInQiLCJXZWFrTWFwIiwiciIsIm4iLCJfX2VzTW9kdWxlIiwibyIsImkiLCJmIiwiX19wcm90b19fIiwiX3R5cGVvZiIsImhhcyIsInNldCIsIl90IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmV4cG9ydCB7ZGVmYXVsdCBhcyBUaHJlZURCdWlsZGluZ0xheWVyfSBmcm9tICcuLzNkLWJ1aWxkaW5nLWxheWVyLzNkLWJ1aWxkaW5nLWxheWVyJztcblxuZXhwb3J0IHtkZWZhdWx0IGFzIERlY2tHTENsdXN0ZXJMYXllcn0gZnJvbSAnLi9jbHVzdGVyLWxheWVyL2NsdXN0ZXItbGF5ZXInO1xuXG5leHBvcnQge2RlZmF1bHQgYXMgRW5oYW5jZWRDb2x1bW5MYXllcn0gZnJvbSAnLi9jb2x1bW4tbGF5ZXIvZW5oYW5jZWQtY29sdW1uLWxheWVyJztcblxuZXhwb3J0IHtkZWZhdWx0IGFzIEVuaGFuY2VkR3JpZExheWVyfSBmcm9tICcuL2dyaWQtbGF5ZXIvZW5oYW5jZWQtY3B1LWdyaWQtbGF5ZXInO1xuXG5leHBvcnQge2RlZmF1bHQgYXMgRW5oYW5jZWRIZXhhZ29uTGF5ZXJ9IGZyb20gJy4vaGV4YWdvbi1sYXllci9lbmhhbmNlZC1oZXhhZ29uLWxheWVyJztcbmV4cG9ydCB7ZGVmYXVsdCBhcyBFbmhhbmNlZExpbmVMYXllcn0gZnJvbSAnLi9saW5lLWxheWVyL2xpbmUtbGF5ZXInO1xuZXhwb3J0IHtkZWZhdWx0IGFzIFN2Z0ljb25MYXllcn0gZnJvbSAnLi9zdmctaWNvbi1sYXllci9zdmctaWNvbi1sYXllcic7XG5leHBvcnQge2RlZmF1bHQgYXMgRmlsdGVyQXJyb3dFeHRlbnNpb259IGZyb20gJy4vZGVja2dsLWV4dGVuc2lvbnMvZmlsdGVyLWFycm93LWxheWVyJztcblxuZXhwb3J0IHtkZWZhdWx0IGFzIFJhc3RlckxheWVyfSBmcm9tICcuL3Jhc3Rlci9yYXN0ZXItbGF5ZXIvcmFzdGVyLWxheWVyJztcbmV4cG9ydCB7ZGVmYXVsdCBhcyBSYXN0ZXJNZXNoTGF5ZXJ9IGZyb20gJy4vcmFzdGVyL3Jhc3Rlci1tZXNoLWxheWVyL3Jhc3Rlci1tZXNoLWxheWVyJztcbmV4cG9ydCAqIGFzIFJhc3RlcldlYkdMIGZyb20gJy4vcmFzdGVyL3dlYmdsJztcblxuZXhwb3J0IHtkZWZhdWx0IGFzIFdNU0xheWVyfSBmcm9tICcuL3dtcy93bXMtbGF5ZXInO1xuXG5leHBvcnQgKiBmcm9tICcuL2xheWVyLXV0aWxzL3NoYWRlci11dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL2xheWVyLXV0aWxzL2FnZ3JlZ2F0aW9uLXV0aWxzJztcblxuZXhwb3J0ICogZnJvbSAnLi8zZC1idWlsZGluZy1sYXllci90eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuLzNkLWJ1aWxkaW5nLWxheWVyLzNkLWJ1aWxkaW5nLXV0aWxzJztcblxuZXhwb3J0ICogZnJvbSAnLi9nbG9iZSc7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxlQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxhQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBRSxvQkFBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUcscUJBQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFJLHFCQUFBLEdBQUFMLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSyxVQUFBLEdBQUFOLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTSxhQUFBLEdBQUFQLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTyxpQkFBQSxHQUFBUixzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQVEsWUFBQSxHQUFBVCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVMsZ0JBQUEsR0FBQVYsc0JBQUEsQ0FBQUMsT0FBQTtBQUF3RixJQUFBVSxZQUFBLEdBQUFDLHVCQUFBLENBQUFYLE9BQUE7QUFBQVksT0FBQSxDQUFBQyxXQUFBLEdBQUFILFlBQUE7QUFHeEYsSUFBQUksU0FBQSxHQUFBZixzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQWUsWUFBQSxHQUFBZixPQUFBO0FBQUFnQixNQUFBLENBQUFDLElBQUEsQ0FBQUYsWUFBQSxFQUFBRyxPQUFBLFdBQUFDLEdBQUE7RUFBQSxJQUFBQSxHQUFBLGtCQUFBQSxHQUFBO0VBQUEsSUFBQUgsTUFBQSxDQUFBSSxTQUFBLENBQUFDLGNBQUEsQ0FBQUMsSUFBQSxDQUFBQyxZQUFBLEVBQUFKLEdBQUE7RUFBQSxJQUFBQSxHQUFBLElBQUFQLE9BQUEsSUFBQUEsT0FBQSxDQUFBTyxHQUFBLE1BQUFKLFlBQUEsQ0FBQUksR0FBQTtFQUFBSCxNQUFBLENBQUFRLGNBQUEsQ0FBQVosT0FBQSxFQUFBTyxHQUFBO0lBQUFNLFVBQUE7SUFBQUMsR0FBQSxXQUFBQSxJQUFBO01BQUEsT0FBQVgsWUFBQSxDQUFBSSxHQUFBO0lBQUE7RUFBQTtBQUFBO0FBQ0EsSUFBQVEsaUJBQUEsR0FBQTNCLE9BQUE7QUFBQWdCLE1BQUEsQ0FBQUMsSUFBQSxDQUFBVSxpQkFBQSxFQUFBVCxPQUFBLFdBQUFDLEdBQUE7RUFBQSxJQUFBQSxHQUFBLGtCQUFBQSxHQUFBO0VBQUEsSUFBQUgsTUFBQSxDQUFBSSxTQUFBLENBQUFDLGNBQUEsQ0FBQUMsSUFBQSxDQUFBQyxZQUFBLEVBQUFKLEdBQUE7RUFBQSxJQUFBQSxHQUFBLElBQUFQLE9BQUEsSUFBQUEsT0FBQSxDQUFBTyxHQUFBLE1BQUFRLGlCQUFBLENBQUFSLEdBQUE7RUFBQUgsTUFBQSxDQUFBUSxjQUFBLENBQUFaLE9BQUEsRUFBQU8sR0FBQTtJQUFBTSxVQUFBO0lBQUFDLEdBQUEsV0FBQUEsSUFBQTtNQUFBLE9BQUFDLGlCQUFBLENBQUFSLEdBQUE7SUFBQTtFQUFBO0FBQUE7QUFFQSxJQUFBUyxNQUFBLEdBQUE1QixPQUFBO0FBQUFnQixNQUFBLENBQUFDLElBQUEsQ0FBQVcsTUFBQSxFQUFBVixPQUFBLFdBQUFDLEdBQUE7RUFBQSxJQUFBQSxHQUFBLGtCQUFBQSxHQUFBO0VBQUEsSUFBQUgsTUFBQSxDQUFBSSxTQUFBLENBQUFDLGNBQUEsQ0FBQUMsSUFBQSxDQUFBQyxZQUFBLEVBQUFKLEdBQUE7RUFBQSxJQUFBQSxHQUFBLElBQUFQLE9BQUEsSUFBQUEsT0FBQSxDQUFBTyxHQUFBLE1BQUFTLE1BQUEsQ0FBQVQsR0FBQTtFQUFBSCxNQUFBLENBQUFRLGNBQUEsQ0FBQVosT0FBQSxFQUFBTyxHQUFBO0lBQUFNLFVBQUE7SUFBQUMsR0FBQSxXQUFBQSxJQUFBO01BQUEsT0FBQUUsTUFBQSxDQUFBVCxHQUFBO0lBQUE7RUFBQTtBQUFBO0FBQ0EsSUFBQVUsZUFBQSxHQUFBN0IsT0FBQTtBQUFBZ0IsTUFBQSxDQUFBQyxJQUFBLENBQUFZLGVBQUEsRUFBQVgsT0FBQSxXQUFBQyxHQUFBO0VBQUEsSUFBQUEsR0FBQSxrQkFBQUEsR0FBQTtFQUFBLElBQUFILE1BQUEsQ0FBQUksU0FBQSxDQUFBQyxjQUFBLENBQUFDLElBQUEsQ0FBQUMsWUFBQSxFQUFBSixHQUFBO0VBQUEsSUFBQUEsR0FBQSxJQUFBUCxPQUFBLElBQUFBLE9BQUEsQ0FBQU8sR0FBQSxNQUFBVSxlQUFBLENBQUFWLEdBQUE7RUFBQUgsTUFBQSxDQUFBUSxjQUFBLENBQUFaLE9BQUEsRUFBQU8sR0FBQTtJQUFBTSxVQUFBO0lBQUFDLEdBQUEsV0FBQUEsSUFBQTtNQUFBLE9BQUFHLGVBQUEsQ0FBQVYsR0FBQTtJQUFBO0VBQUE7QUFBQTtBQUVBLElBQUFXLE1BQUEsR0FBQTlCLE9BQUE7QUFBQWdCLE1BQUEsQ0FBQUMsSUFBQSxDQUFBYSxNQUFBLEVBQUFaLE9BQUEsV0FBQUMsR0FBQTtFQUFBLElBQUFBLEdBQUEsa0JBQUFBLEdBQUE7RUFBQSxJQUFBSCxNQUFBLENBQUFJLFNBQUEsQ0FBQUMsY0FBQSxDQUFBQyxJQUFBLENBQUFDLFlBQUEsRUFBQUosR0FBQTtFQUFBLElBQUFBLEdBQUEsSUFBQVAsT0FBQSxJQUFBQSxPQUFBLENBQUFPLEdBQUEsTUFBQVcsTUFBQSxDQUFBWCxHQUFBO0VBQUFILE1BQUEsQ0FBQVEsY0FBQSxDQUFBWixPQUFBLEVBQUFPLEdBQUE7SUFBQU0sVUFBQTtJQUFBQyxHQUFBLFdBQUFBLElBQUE7TUFBQSxPQUFBSSxNQUFBLENBQUFYLEdBQUE7SUFBQTtFQUFBO0FBQUE7QUFBd0IsU0FBQVIsd0JBQUFvQixDQUFBLEVBQUFDLENBQUEsNkJBQUFDLE9BQUEsTUFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBdEIsdUJBQUEsWUFBQUEsd0JBQUFvQixDQUFBLEVBQUFDLENBQUEsU0FBQUEsQ0FBQSxJQUFBRCxDQUFBLElBQUFBLENBQUEsQ0FBQUssVUFBQSxTQUFBTCxDQUFBLE1BQUFNLENBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBLEtBQUFDLFNBQUEsbUJBQUFULENBQUEsaUJBQUFBLENBQUEsZ0JBQUFVLE9BQUEsQ0FBQVYsQ0FBQSwwQkFBQUEsQ0FBQSxTQUFBUSxDQUFBLE1BQUFGLENBQUEsR0FBQUwsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsUUFBQUcsQ0FBQSxDQUFBSyxHQUFBLENBQUFYLENBQUEsVUFBQU0sQ0FBQSxDQUFBWCxHQUFBLENBQUFLLENBQUEsR0FBQU0sQ0FBQSxDQUFBTSxHQUFBLENBQUFaLENBQUEsRUFBQVEsQ0FBQSxjQUFBSyxFQUFBLElBQUFiLENBQUEsZ0JBQUFhLEVBQUEsT0FBQXZCLGNBQUEsQ0FBQUMsSUFBQSxDQUFBUyxDQUFBLEVBQUFhLEVBQUEsT0FBQU4sQ0FBQSxJQUFBRCxDQUFBLEdBQUFyQixNQUFBLENBQUFRLGNBQUEsS0FBQVIsTUFBQSxDQUFBNkIsd0JBQUEsQ0FBQWQsQ0FBQSxFQUFBYSxFQUFBLE9BQUFOLENBQUEsQ0FBQVosR0FBQSxJQUFBWSxDQUFBLENBQUFLLEdBQUEsSUFBQU4sQ0FBQSxDQUFBRSxDQUFBLEVBQUFLLEVBQUEsRUFBQU4sQ0FBQSxJQUFBQyxDQUFBLENBQUFLLEVBQUEsSUFBQWIsQ0FBQSxDQUFBYSxFQUFBLFdBQUFMLENBQUEsS0FBQVIsQ0FBQSxFQUFBQyxDQUFBIiwiaWdub3JlTGlzdCI6W119
@@ -0,0 +1,181 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.buildAggregatedBinMap = buildAggregatedBinMap;
7
+ exports.classifyBinsByCustomBreaks = classifyBinsByCustomBreaks;
8
+ exports.enrichedAggregationUpdate = enrichedAggregationUpdate;
9
+ exports.enrichedRenderLayers = enrichedRenderLayers;
10
+ function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
11
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
12
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
13
+ // SPDX-License-Identifier: MIT
14
+ // Copyright contributors to the kepler.gl project
15
+
16
+ /**
17
+ * Build a Record<index, AggregatedBin> from the raw Float32Array of per-bin
18
+ * aggregated values returned by deck.gl 9's CPUAggregator/WebGLAggregator.
19
+ * The resulting map is compatible with the format kepler.gl expects for
20
+ * histogram rendering and color-scale selector.
21
+ */
22
+ function buildAggregatedBinMap(binValues, binCount, aggregator) {
23
+ var bins = {};
24
+ for (var i = 0; i < binCount; i++) {
25
+ var _aggregator$getBin$co, _aggregator$getBin;
26
+ var val = binValues[i];
27
+ var count = (_aggregator$getBin$co = aggregator === null || aggregator === void 0 || (_aggregator$getBin = aggregator.getBin) === null || _aggregator$getBin === void 0 || (_aggregator$getBin = _aggregator$getBin.call(aggregator, i)) === null || _aggregator$getBin === void 0 ? void 0 : _aggregator$getBin.count) !== null && _aggregator$getBin$co !== void 0 ? _aggregator$getBin$co : 0;
28
+ bins[i] = {
29
+ i: i,
30
+ value: val,
31
+ counts: count
32
+ };
33
+ }
34
+ return bins;
35
+ }
36
+
37
+ /**
38
+ * Classify raw per-bin aggregated values into break indices according to
39
+ * a custom colorMap, and patch the deck.gl internal `state.colors` so the
40
+ * GPU shader renders the correct color for each bin.
41
+ *
42
+ * Custom breaks define thresholds [t0, t1, …, t_{N-2}] for N colors:
43
+ * color 0: value < t0
44
+ * color i: t_{i-1} <= value < t_i
45
+ * color N-1: value >= t_{N-2}
46
+ *
47
+ * We replace the values in `state.colors.attribute` / `state.colors.input`
48
+ * with integer break indices [0 … N-1]. Combined with `colorScaleType: 'quantize'`
49
+ * and `colorDomain: [0, N-1]`, the shader's linear interpolation maps each index
50
+ * to the correct color texture pixel.
51
+ *
52
+ * `rawValues` must be the original aggregated values (not previously classified).
53
+ */
54
+ function classifyBinsByCustomBreaks(stateColors, binCount, colorMap, rawValues) {
55
+ if (!rawValues || binCount === 0) return;
56
+ var thresholds = [];
57
+ var _iterator = _createForOfIteratorHelper(colorMap),
58
+ _step;
59
+ try {
60
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
61
+ var entry = _step.value;
62
+ if (typeof entry[0] === 'number' && Number.isFinite(entry[0])) {
63
+ thresholds.push(entry[0]);
64
+ }
65
+ }
66
+ } catch (err) {
67
+ _iterator.e(err);
68
+ } finally {
69
+ _iterator.f();
70
+ }
71
+ thresholds.sort(function (a, b) {
72
+ return a - b;
73
+ });
74
+ var numColors = colorMap.length;
75
+ var classified = new Float32Array(rawValues.length);
76
+ for (var i = 0; i < binCount; i++) {
77
+ var v = rawValues[i];
78
+ if (!Number.isFinite(v)) {
79
+ classified[i] = NaN;
80
+ continue;
81
+ }
82
+ var idx = numColors - 1;
83
+ for (var t = 0; t < thresholds.length; t++) {
84
+ if (v < thresholds[t]) {
85
+ idx = t;
86
+ break;
87
+ }
88
+ }
89
+ classified[i] = idx;
90
+ }
91
+ for (var _i = binCount; _i < classified.length; _i++) {
92
+ classified[_i] = NaN;
93
+ }
94
+ var classifiedAttr = {
95
+ value: classified,
96
+ type: 'float32',
97
+ size: 1
98
+ };
99
+ stateColors.input = classifiedAttr;
100
+ stateColors.attribute = classifiedAttr;
101
+ }
102
+
103
+ // ---------------------------------------------------------------------------
104
+ // Shared _onAggregationUpdate / renderLayers logic for ScaleEnhanced* layers
105
+ // ---------------------------------------------------------------------------
106
+ //
107
+ // deck.gl 9's _onAggregationUpdate is private and its onSetColorDomain
108
+ // callback only provides [min, max]. That is sufficient for quantize/linear
109
+ // scales but d3.scaleQuantile needs the *full sorted array* of bin values to
110
+ // compute correct break points — without it the legend labels are wrong
111
+ // (see https://github.com/keplergl/kepler.gl/issues/3381).
112
+ //
113
+ // deck.gl does not expose a public hook for post-aggregation data, and props
114
+ // are Object.freeze()'d so we cannot suppress the parent's callback. Instead
115
+ // we let the parent fire its [min, max] call, then immediately fire a second
116
+ // enriched call with per-bin values (aggregatedBins) and, for quantile scale,
117
+ // the full sorted domain. The second call overwrites the first downstream in
118
+ // _onLayerSetDomain.
119
+ //
120
+ // This can be removed once deck.gl exposes a richer post-aggregation callback
121
+ // or makes _onAggregationUpdate / AttributeWithScale part of the public API.
122
+
123
+ /**
124
+ * Enriched _onAggregationUpdate implementation shared by ScaleEnhancedHexagonLayer
125
+ * and ScaleEnhancedGridLayer.
126
+ *
127
+ * @param layer The enhanced layer instance (`this`)
128
+ * @param ParentClass The deck.gl parent class (HexagonLayer or GridLayer)
129
+ * @param channel The aggregation channel index passed by deck.gl
130
+ */
131
+ function enrichedAggregationUpdate(layer, ParentClass, channel) {
132
+ var _props$onSetColorDoma;
133
+ ParentClass.prototype._onAggregationUpdate.call(layer, {
134
+ channel: channel
135
+ });
136
+ if (channel !== 0) return;
137
+ var props = layer.getCurrentLayer().props;
138
+ var aggregator = layer.state.aggregator;
139
+ var result = aggregator.getResult(0);
140
+ var binValues = result === null || result === void 0 ? void 0 : result.value;
141
+ if (!binValues || aggregator.binCount <= 0) return;
142
+ layer.setState({
143
+ rawColorBinValues: Float32Array.from(binValues.subarray(0, aggregator.binCount))
144
+ });
145
+ var domain = aggregator.getResultDomain(0);
146
+ var aggregatedBins = buildAggregatedBinMap(binValues, aggregator.binCount, aggregator);
147
+ if (props.colorMap) {
148
+ classifyBinsByCustomBreaks(layer.state.colors, aggregator.binCount, props.colorMap, binValues);
149
+ }
150
+ var enrichedDomain = domain;
151
+ if (props.colorScaleType === 'quantile') {
152
+ enrichedDomain = Array.from(binValues).slice(0, aggregator.binCount).filter(Number.isFinite).sort(function (a, b) {
153
+ return a - b;
154
+ });
155
+ }
156
+ (_props$onSetColorDoma = props.onSetColorDomain) === null || _props$onSetColorDoma === void 0 || _props$onSetColorDoma.call(props, {
157
+ domain: enrichedDomain,
158
+ aggregatedBins: aggregatedBins
159
+ });
160
+ }
161
+
162
+ /**
163
+ * Shared renderLayers() wrapper that re-classifies bins when custom colorMap
164
+ * changes between renders without triggering a full re-aggregation.
165
+ *
166
+ * @param layer The enhanced layer instance (`this`)
167
+ * @param ParentClass The deck.gl parent class (HexagonLayer or GridLayer)
168
+ * @returns The sublayers returned by the parent's renderLayers()
169
+ */
170
+ function enrichedRenderLayers(layer, ParentClass) {
171
+ var props = layer.getCurrentLayer().props;
172
+ var _layer$state = layer.state,
173
+ colors = _layer$state.colors,
174
+ rawColorBinValues = _layer$state.rawColorBinValues,
175
+ aggregator = _layer$state.aggregator;
176
+ if (props.colorMap && colors && rawColorBinValues && (aggregator === null || aggregator === void 0 ? void 0 : aggregator.binCount) > 0) {
177
+ classifyBinsByCustomBreaks(colors, aggregator.binCount, props.colorMap, rawColorBinValues);
178
+ }
179
+ return ParentClass.prototype.renderLayers.call(layer);
180
+ }
181
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJidWlsZEFnZ3JlZ2F0ZWRCaW5NYXAiLCJiaW5WYWx1ZXMiLCJiaW5Db3VudCIsImFnZ3JlZ2F0b3IiLCJiaW5zIiwiaSIsIl9hZ2dyZWdhdG9yJGdldEJpbiRjbyIsIl9hZ2dyZWdhdG9yJGdldEJpbiIsInZhbCIsImNvdW50IiwiZ2V0QmluIiwiY2FsbCIsInZhbHVlIiwiY291bnRzIiwiY2xhc3NpZnlCaW5zQnlDdXN0b21CcmVha3MiLCJzdGF0ZUNvbG9ycyIsImNvbG9yTWFwIiwicmF3VmFsdWVzIiwidGhyZXNob2xkcyIsIl9pdGVyYXRvciIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiX3N0ZXAiLCJzIiwibiIsImRvbmUiLCJlbnRyeSIsIk51bWJlciIsImlzRmluaXRlIiwicHVzaCIsImVyciIsImUiLCJmIiwic29ydCIsImEiLCJiIiwibnVtQ29sb3JzIiwibGVuZ3RoIiwiY2xhc3NpZmllZCIsIkZsb2F0MzJBcnJheSIsInYiLCJOYU4iLCJpZHgiLCJ0IiwiY2xhc3NpZmllZEF0dHIiLCJ0eXBlIiwic2l6ZSIsImlucHV0IiwiYXR0cmlidXRlIiwiZW5yaWNoZWRBZ2dyZWdhdGlvblVwZGF0ZSIsImxheWVyIiwiUGFyZW50Q2xhc3MiLCJjaGFubmVsIiwiX3Byb3BzJG9uU2V0Q29sb3JEb21hIiwicHJvdG90eXBlIiwiX29uQWdncmVnYXRpb25VcGRhdGUiLCJwcm9wcyIsImdldEN1cnJlbnRMYXllciIsInN0YXRlIiwicmVzdWx0IiwiZ2V0UmVzdWx0Iiwic2V0U3RhdGUiLCJyYXdDb2xvckJpblZhbHVlcyIsImZyb20iLCJzdWJhcnJheSIsImRvbWFpbiIsImdldFJlc3VsdERvbWFpbiIsImFnZ3JlZ2F0ZWRCaW5zIiwiY29sb3JzIiwiZW5yaWNoZWREb21haW4iLCJjb2xvclNjYWxlVHlwZSIsIkFycmF5Iiwic2xpY2UiLCJmaWx0ZXIiLCJvblNldENvbG9yRG9tYWluIiwiZW5yaWNoZWRSZW5kZXJMYXllcnMiLCJfbGF5ZXIkc3RhdGUiLCJyZW5kZXJMYXllcnMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGF5ZXItdXRpbHMvYWdncmVnYXRpb24tdXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHR5cGUge0FnZ3JlZ2F0ZWRCaW4sIENvbG9yTWFwfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcblxuLyoqXG4gKiBCdWlsZCBhIFJlY29yZDxpbmRleCwgQWdncmVnYXRlZEJpbj4gZnJvbSB0aGUgcmF3IEZsb2F0MzJBcnJheSBvZiBwZXItYmluXG4gKiBhZ2dyZWdhdGVkIHZhbHVlcyByZXR1cm5lZCBieSBkZWNrLmdsIDkncyBDUFVBZ2dyZWdhdG9yL1dlYkdMQWdncmVnYXRvci5cbiAqIFRoZSByZXN1bHRpbmcgbWFwIGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgZm9ybWF0IGtlcGxlci5nbCBleHBlY3RzIGZvclxuICogaGlzdG9ncmFtIHJlbmRlcmluZyBhbmQgY29sb3Itc2NhbGUgc2VsZWN0b3IuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEFnZ3JlZ2F0ZWRCaW5NYXAoXG4gIGJpblZhbHVlczogQXJyYXlMaWtlPG51bWJlcj4sXG4gIGJpbkNvdW50OiBudW1iZXIsXG4gIGFnZ3JlZ2F0b3I/OiBhbnlcbik6IFJlY29yZDxudW1iZXIsIEFnZ3JlZ2F0ZWRCaW4+IHtcbiAgY29uc3QgYmluczogUmVjb3JkPG51bWJlciwgQWdncmVnYXRlZEJpbj4gPSB7fTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBiaW5Db3VudDsgaSsrKSB7XG4gICAgY29uc3QgdmFsID0gYmluVmFsdWVzW2ldO1xuICAgIGNvbnN0IGNvdW50ID0gYWdncmVnYXRvcj8uZ2V0QmluPy4oaSk/LmNvdW50ID8/IDA7XG4gICAgYmluc1tpXSA9IHtpLCB2YWx1ZTogdmFsLCBjb3VudHM6IGNvdW50fTtcbiAgfVxuICByZXR1cm4gYmlucztcbn1cblxuLyoqXG4gKiBDbGFzc2lmeSByYXcgcGVyLWJpbiBhZ2dyZWdhdGVkIHZhbHVlcyBpbnRvIGJyZWFrIGluZGljZXMgYWNjb3JkaW5nIHRvXG4gKiBhIGN1c3RvbSBjb2xvck1hcCwgYW5kIHBhdGNoIHRoZSBkZWNrLmdsIGludGVybmFsIGBzdGF0ZS5jb2xvcnNgIHNvIHRoZVxuICogR1BVIHNoYWRlciByZW5kZXJzIHRoZSBjb3JyZWN0IGNvbG9yIGZvciBlYWNoIGJpbi5cbiAqXG4gKiBDdXN0b20gYnJlYWtzIGRlZmluZSB0aHJlc2hvbGRzIFt0MCwgdDEsIOKApiwgdF97Ti0yfV0gZm9yIE4gY29sb3JzOlxuICogICBjb2xvciAwOiB2YWx1ZSA8IHQwXG4gKiAgIGNvbG9yIGk6IHRfe2ktMX0gPD0gdmFsdWUgPCB0X2lcbiAqICAgY29sb3IgTi0xOiB2YWx1ZSA+PSB0X3tOLTJ9XG4gKlxuICogV2UgcmVwbGFjZSB0aGUgdmFsdWVzIGluIGBzdGF0ZS5jb2xvcnMuYXR0cmlidXRlYCAvIGBzdGF0ZS5jb2xvcnMuaW5wdXRgXG4gKiB3aXRoIGludGVnZXIgYnJlYWsgaW5kaWNlcyBbMCDigKYgTi0xXS4gIENvbWJpbmVkIHdpdGggYGNvbG9yU2NhbGVUeXBlOiAncXVhbnRpemUnYFxuICogYW5kIGBjb2xvckRvbWFpbjogWzAsIE4tMV1gLCB0aGUgc2hhZGVyJ3MgbGluZWFyIGludGVycG9sYXRpb24gbWFwcyBlYWNoIGluZGV4XG4gKiB0byB0aGUgY29ycmVjdCBjb2xvciB0ZXh0dXJlIHBpeGVsLlxuICpcbiAqIGByYXdWYWx1ZXNgIG11c3QgYmUgdGhlIG9yaWdpbmFsIGFnZ3JlZ2F0ZWQgdmFsdWVzIChub3QgcHJldmlvdXNseSBjbGFzc2lmaWVkKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsYXNzaWZ5Qmluc0J5Q3VzdG9tQnJlYWtzKFxuICBzdGF0ZUNvbG9yczogYW55LFxuICBiaW5Db3VudDogbnVtYmVyLFxuICBjb2xvck1hcDogQ29sb3JNYXAsXG4gIHJhd1ZhbHVlczogRmxvYXQzMkFycmF5XG4pOiB2b2lkIHtcbiAgaWYgKCFyYXdWYWx1ZXMgfHwgYmluQ291bnQgPT09IDApIHJldHVybjtcblxuICBjb25zdCB0aHJlc2hvbGRzOiBudW1iZXJbXSA9IFtdO1xuICBmb3IgKGNvbnN0IGVudHJ5IG9mIGNvbG9yTWFwKSB7XG4gICAgaWYgKHR5cGVvZiBlbnRyeVswXSA9PT0gJ251bWJlcicgJiYgTnVtYmVyLmlzRmluaXRlKGVudHJ5WzBdKSkge1xuICAgICAgdGhyZXNob2xkcy5wdXNoKGVudHJ5WzBdKTtcbiAgICB9XG4gIH1cbiAgdGhyZXNob2xkcy5zb3J0KChhLCBiKSA9PiBhIC0gYik7XG5cbiAgY29uc3QgbnVtQ29sb3JzID0gY29sb3JNYXAubGVuZ3RoO1xuICBjb25zdCBjbGFzc2lmaWVkID0gbmV3IEZsb2F0MzJBcnJheShyYXdWYWx1ZXMubGVuZ3RoKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBiaW5Db3VudDsgaSsrKSB7XG4gICAgY29uc3QgdiA9IHJhd1ZhbHVlc1tpXTtcbiAgICBpZiAoIU51bWJlci5pc0Zpbml0ZSh2KSkge1xuICAgICAgY2xhc3NpZmllZFtpXSA9IE5hTjtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBsZXQgaWR4ID0gbnVtQ29sb3JzIC0gMTtcbiAgICBmb3IgKGxldCB0ID0gMDsgdCA8IHRocmVzaG9sZHMubGVuZ3RoOyB0KyspIHtcbiAgICAgIGlmICh2IDwgdGhyZXNob2xkc1t0XSkge1xuICAgICAgICBpZHggPSB0O1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgY2xhc3NpZmllZFtpXSA9IGlkeDtcbiAgfVxuICBmb3IgKGxldCBpID0gYmluQ291bnQ7IGkgPCBjbGFzc2lmaWVkLmxlbmd0aDsgaSsrKSB7XG4gICAgY2xhc3NpZmllZFtpXSA9IE5hTjtcbiAgfVxuXG4gIGNvbnN0IGNsYXNzaWZpZWRBdHRyID0ge3ZhbHVlOiBjbGFzc2lmaWVkLCB0eXBlOiAnZmxvYXQzMicsIHNpemU6IDF9O1xuICBzdGF0ZUNvbG9ycy5pbnB1dCA9IGNsYXNzaWZpZWRBdHRyO1xuICBzdGF0ZUNvbG9ycy5hdHRyaWJ1dGUgPSBjbGFzc2lmaWVkQXR0cjtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTaGFyZWQgX29uQWdncmVnYXRpb25VcGRhdGUgLyByZW5kZXJMYXllcnMgbG9naWMgZm9yIFNjYWxlRW5oYW5jZWQqIGxheWVyc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vL1xuLy8gZGVjay5nbCA5J3MgX29uQWdncmVnYXRpb25VcGRhdGUgaXMgcHJpdmF0ZSBhbmQgaXRzIG9uU2V0Q29sb3JEb21haW5cbi8vIGNhbGxiYWNrIG9ubHkgcHJvdmlkZXMgW21pbiwgbWF4XS4gIFRoYXQgaXMgc3VmZmljaWVudCBmb3IgcXVhbnRpemUvbGluZWFyXG4vLyBzY2FsZXMgYnV0IGQzLnNjYWxlUXVhbnRpbGUgbmVlZHMgdGhlICpmdWxsIHNvcnRlZCBhcnJheSogb2YgYmluIHZhbHVlcyB0b1xuLy8gY29tcHV0ZSBjb3JyZWN0IGJyZWFrIHBvaW50cyDigJQgd2l0aG91dCBpdCB0aGUgbGVnZW5kIGxhYmVscyBhcmUgd3Jvbmdcbi8vIChzZWUgaHR0cHM6Ly9naXRodWIuY29tL2tlcGxlcmdsL2tlcGxlci5nbC9pc3N1ZXMvMzM4MSkuXG4vL1xuLy8gZGVjay5nbCBkb2VzIG5vdCBleHBvc2UgYSBwdWJsaWMgaG9vayBmb3IgcG9zdC1hZ2dyZWdhdGlvbiBkYXRhLCBhbmQgcHJvcHNcbi8vIGFyZSBPYmplY3QuZnJlZXplKCknZCBzbyB3ZSBjYW5ub3Qgc3VwcHJlc3MgdGhlIHBhcmVudCdzIGNhbGxiYWNrLiAgSW5zdGVhZFxuLy8gd2UgbGV0IHRoZSBwYXJlbnQgZmlyZSBpdHMgW21pbiwgbWF4XSBjYWxsLCB0aGVuIGltbWVkaWF0ZWx5IGZpcmUgYSBzZWNvbmRcbi8vIGVucmljaGVkIGNhbGwgd2l0aCBwZXItYmluIHZhbHVlcyAoYWdncmVnYXRlZEJpbnMpIGFuZCwgZm9yIHF1YW50aWxlIHNjYWxlLFxuLy8gdGhlIGZ1bGwgc29ydGVkIGRvbWFpbi4gIFRoZSBzZWNvbmQgY2FsbCBvdmVyd3JpdGVzIHRoZSBmaXJzdCBkb3duc3RyZWFtIGluXG4vLyBfb25MYXllclNldERvbWFpbi5cbi8vXG4vLyBUaGlzIGNhbiBiZSByZW1vdmVkIG9uY2UgZGVjay5nbCBleHBvc2VzIGEgcmljaGVyIHBvc3QtYWdncmVnYXRpb24gY2FsbGJhY2tcbi8vIG9yIG1ha2VzIF9vbkFnZ3JlZ2F0aW9uVXBkYXRlIC8gQXR0cmlidXRlV2l0aFNjYWxlIHBhcnQgb2YgdGhlIHB1YmxpYyBBUEkuXG5cbi8qKlxuICogRW5yaWNoZWQgX29uQWdncmVnYXRpb25VcGRhdGUgaW1wbGVtZW50YXRpb24gc2hhcmVkIGJ5IFNjYWxlRW5oYW5jZWRIZXhhZ29uTGF5ZXJcbiAqIGFuZCBTY2FsZUVuaGFuY2VkR3JpZExheWVyLlxuICpcbiAqIEBwYXJhbSBsYXllciAgICAgICBUaGUgZW5oYW5jZWQgbGF5ZXIgaW5zdGFuY2UgKGB0aGlzYClcbiAqIEBwYXJhbSBQYXJlbnRDbGFzcyBUaGUgZGVjay5nbCBwYXJlbnQgY2xhc3MgKEhleGFnb25MYXllciBvciBHcmlkTGF5ZXIpXG4gKiBAcGFyYW0gY2hhbm5lbCAgICAgVGhlIGFnZ3JlZ2F0aW9uIGNoYW5uZWwgaW5kZXggcGFzc2VkIGJ5IGRlY2suZ2xcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVucmljaGVkQWdncmVnYXRpb25VcGRhdGUobGF5ZXI6IGFueSwgUGFyZW50Q2xhc3M6IGFueSwgY2hhbm5lbDogbnVtYmVyKTogdm9pZCB7XG4gIChQYXJlbnRDbGFzcy5wcm90b3R5cGUgYXMgYW55KS5fb25BZ2dyZWdhdGlvblVwZGF0ZS5jYWxsKGxheWVyLCB7Y2hhbm5lbH0pO1xuXG4gIGlmIChjaGFubmVsICE9PSAwKSByZXR1cm47XG5cbiAgY29uc3QgcHJvcHMgPSBsYXllci5nZXRDdXJyZW50TGF5ZXIoKS5wcm9wcztcbiAgY29uc3Qge2FnZ3JlZ2F0b3J9ID0gbGF5ZXIuc3RhdGU7XG4gIGNvbnN0IHJlc3VsdCA9IGFnZ3JlZ2F0b3IuZ2V0UmVzdWx0KDApO1xuICBjb25zdCBiaW5WYWx1ZXMgPSByZXN1bHQ/LnZhbHVlIGFzIEZsb2F0MzJBcnJheSB8IHVuZGVmaW5lZDtcbiAgaWYgKCFiaW5WYWx1ZXMgfHwgYWdncmVnYXRvci5iaW5Db3VudCA8PSAwKSByZXR1cm47XG5cbiAgbGF5ZXIuc2V0U3RhdGUoe1xuICAgIHJhd0NvbG9yQmluVmFsdWVzOiBGbG9hdDMyQXJyYXkuZnJvbShiaW5WYWx1ZXMuc3ViYXJyYXkoMCwgYWdncmVnYXRvci5iaW5Db3VudCkpXG4gIH0pO1xuXG4gIGNvbnN0IGRvbWFpbiA9IGFnZ3JlZ2F0b3IuZ2V0UmVzdWx0RG9tYWluKDApO1xuICBjb25zdCBhZ2dyZWdhdGVkQmlucyA9IGJ1aWxkQWdncmVnYXRlZEJpbk1hcChiaW5WYWx1ZXMsIGFnZ3JlZ2F0b3IuYmluQ291bnQsIGFnZ3JlZ2F0b3IpO1xuXG4gIGlmIChwcm9wcy5jb2xvck1hcCkge1xuICAgIGNsYXNzaWZ5Qmluc0J5Q3VzdG9tQnJlYWtzKGxheWVyLnN0YXRlLmNvbG9ycywgYWdncmVnYXRvci5iaW5Db3VudCwgcHJvcHMuY29sb3JNYXAsIGJpblZhbHVlcyk7XG4gIH1cblxuICBsZXQgZW5yaWNoZWREb21haW4gPSBkb21haW47XG4gIGlmIChwcm9wcy5jb2xvclNjYWxlVHlwZSA9PT0gJ3F1YW50aWxlJykge1xuICAgIGVucmljaGVkRG9tYWluID0gQXJyYXkuZnJvbShiaW5WYWx1ZXMpXG4gICAgICAuc2xpY2UoMCwgYWdncmVnYXRvci5iaW5Db3VudClcbiAgICAgIC5maWx0ZXIoTnVtYmVyLmlzRmluaXRlKVxuICAgICAgLnNvcnQoKGE6IG51bWJlciwgYjogbnVtYmVyKSA9PiBhIC0gYik7XG4gIH1cbiAgcHJvcHMub25TZXRDb2xvckRvbWFpbj8uKHtkb21haW46IGVucmljaGVkRG9tYWluLCBhZ2dyZWdhdGVkQmluc30pO1xufVxuXG4vKipcbiAqIFNoYXJlZCByZW5kZXJMYXllcnMoKSB3cmFwcGVyIHRoYXQgcmUtY2xhc3NpZmllcyBiaW5zIHdoZW4gY3VzdG9tIGNvbG9yTWFwXG4gKiBjaGFuZ2VzIGJldHdlZW4gcmVuZGVycyB3aXRob3V0IHRyaWdnZXJpbmcgYSBmdWxsIHJlLWFnZ3JlZ2F0aW9uLlxuICpcbiAqIEBwYXJhbSBsYXllciAgICAgICBUaGUgZW5oYW5jZWQgbGF5ZXIgaW5zdGFuY2UgKGB0aGlzYClcbiAqIEBwYXJhbSBQYXJlbnRDbGFzcyBUaGUgZGVjay5nbCBwYXJlbnQgY2xhc3MgKEhleGFnb25MYXllciBvciBHcmlkTGF5ZXIpXG4gKiBAcmV0dXJucyBUaGUgc3VibGF5ZXJzIHJldHVybmVkIGJ5IHRoZSBwYXJlbnQncyByZW5kZXJMYXllcnMoKVxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5yaWNoZWRSZW5kZXJMYXllcnMobGF5ZXI6IGFueSwgUGFyZW50Q2xhc3M6IGFueSk6IGFueSB7XG4gIGNvbnN0IHByb3BzID0gbGF5ZXIuZ2V0Q3VycmVudExheWVyKCkucHJvcHM7XG4gIGNvbnN0IHtjb2xvcnMsIHJhd0NvbG9yQmluVmFsdWVzLCBhZ2dyZWdhdG9yfSA9IGxheWVyLnN0YXRlO1xuICBpZiAocHJvcHMuY29sb3JNYXAgJiYgY29sb3JzICYmIHJhd0NvbG9yQmluVmFsdWVzICYmIGFnZ3JlZ2F0b3I/LmJpbkNvdW50ID4gMCkge1xuICAgIGNsYXNzaWZ5Qmluc0J5Q3VzdG9tQnJlYWtzKGNvbG9ycywgYWdncmVnYXRvci5iaW5Db3VudCwgcHJvcHMuY29sb3JNYXAsIHJhd0NvbG9yQmluVmFsdWVzKTtcbiAgfVxuICByZXR1cm4gKFBhcmVudENsYXNzLnBy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
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = void 0;
8
+ exports.getGeoJSON = getGeoJSON;
9
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
10
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
11
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
12
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
13
+ var _supercluster = _interopRequireDefault(require("supercluster"));
14
+ var _memoize = _interopRequireDefault(require("es-toolkit/compat/memoize"));
15
+ // SPDX-License-Identifier: MIT
16
+ // Copyright contributors to the kepler.gl project
17
+
18
+ // es-toolkit/compat memoize does not export lodash's MemoizedFunction type.
19
+
20
+ function getGeoJSON(data, getPosition, filterData) {
21
+ var raw = typeof filterData === 'function' ? data.filter(filterData) : data;
22
+ return raw.map(function (d) {
23
+ return {
24
+ type: 'Point',
25
+ properties: {
26
+ data: d,
27
+ points: [d],
28
+ point_count: 1,
29
+ point_count_abbreviated: '1'
30
+ },
31
+ geometry: {
32
+ coordinates: getPosition(d)
33
+ }
34
+ };
35
+ }).filter(function (d) {
36
+ return d.geometry.coordinates.every(Number.isFinite);
37
+ });
38
+ }
39
+ var clusterResolver = function clusterResolver(_ref) {
40
+ var clusterRadius = _ref.clusterRadius;
41
+ return "".concat(clusterRadius);
42
+ };
43
+ var getClusterer = function getClusterer(_ref2) {
44
+ var clusterRadius = _ref2.clusterRadius,
45
+ geoJSON = _ref2.geoJSON;
46
+ return new _supercluster["default"]({
47
+ maxZoom: 20,
48
+ radius: clusterRadius,
49
+ reduce: function reduce(accumulated, props) {
50
+ accumulated.points = [].concat((0, _toConsumableArray2["default"])(accumulated.points), (0, _toConsumableArray2["default"])(props.points));
51
+ },
52
+ map: function map(props) {
53
+ return {
54
+ points: [props.data]
55
+ };
56
+ }
57
+ }).load(geoJSON);
58
+ };
59
+ var ClusterBuilder = exports["default"] = /*#__PURE__*/function () {
60
+ function ClusterBuilder() {
61
+ (0, _classCallCheck2["default"])(this, ClusterBuilder);
62
+ (0, _defineProperty2["default"])(this, "clusterer", void 0);
63
+ this.clusterer = (0, _memoize["default"])(getClusterer, clusterResolver);
64
+ }
65
+ return (0, _createClass2["default"])(ClusterBuilder, [{
66
+ key: "clustersAtZoom",
67
+ value: function clustersAtZoom(_ref3) {
68
+ var bbox = _ref3.bbox,
69
+ clusterRadius = _ref3.clusterRadius,
70
+ geoJSON = _ref3.geoJSON,
71
+ zoom = _ref3.zoom;
72
+ var clusterer = this.clusterer({
73
+ clusterRadius: clusterRadius,
74
+ geoJSON: geoJSON
75
+ });
76
+
77
+ // map clusters to formatted bins to be passed to deck.gl bin-sorter
78
+ var clusters = clusterer.getClusters(bbox, zoom).map(function (c, i) {
79
+ return {
80
+ points: c.properties.points,
81
+ position: c.geometry.coordinates,
82
+ index: i
83
+ };
84
+ });
85
+ return clusters;
86
+ }
87
+ }, {
88
+ key: "clearClustererCache",
89
+ value: function clearClustererCache() {
90
+ var _this$clusterer$cache, _this$clusterer$cache2;
91
+ (_this$clusterer$cache = (_this$clusterer$cache2 = this.clusterer.cache).clear) === null || _this$clusterer$cache === void 0 || _this$clusterer$cache.call(_this$clusterer$cache2);
92
+ }
93
+ }]);
94
+ }();
95
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfc3VwZXJjbHVzdGVyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfbWVtb2l6ZSIsImdldEdlb0pTT04iLCJkYXRhIiwiZ2V0UG9zaXRpb24iLCJmaWx0ZXJEYXRhIiwicmF3IiwiZmlsdGVyIiwibWFwIiwiZCIsInR5cGUiLCJwcm9wZXJ0aWVzIiwicG9pbnRzIiwicG9pbnRfY291bnQiLCJwb2ludF9jb3VudF9hYmJyZXZpYXRlZCIsImdlb21ldHJ5IiwiY29vcmRpbmF0ZXMiLCJldmVyeSIsIk51bWJlciIsImlzRmluaXRlIiwiY2x1c3RlclJlc29sdmVyIiwiX3JlZiIsImNsdXN0ZXJSYWRpdXMiLCJjb25jYXQiLCJnZXRDbHVzdGVyZXIiLCJfcmVmMiIsImdlb0pTT04iLCJTdXBlcmNsdXN0ZXIiLCJtYXhab29tIiwicmFkaXVzIiwicmVkdWNlIiwiYWNjdW11bGF0ZWQiLCJwcm9wcyIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJsb2FkIiwiQ2x1c3RlckJ1aWxkZXIiLCJleHBvcnRzIiwiX2NsYXNzQ2FsbENoZWNrMiIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJjbHVzdGVyZXIiLCJtZW1vaXplIiwiX2NyZWF0ZUNsYXNzMiIsImtleSIsInZhbHVlIiwiY2x1c3RlcnNBdFpvb20iLCJfcmVmMyIsImJib3giLCJ6b29tIiwiY2x1c3RlcnMiLCJnZXRDbHVzdGVycyIsImMiLCJpIiwicG9zaXRpb24iLCJpbmRleCIsImNsZWFyQ2x1c3RlcmVyQ2FjaGUiLCJfdGhpcyRjbHVzdGVyZXIkY2FjaGUiLCJfdGhpcyRjbHVzdGVyZXIkY2FjaGUyIiwiY2FjaGUiLCJjbGVhciIsImNhbGwiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGF5ZXItdXRpbHMvY2x1c3Rlci11dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgU3VwZXJjbHVzdGVyIGZyb20gJ3N1cGVyY2x1c3Rlcic7XG5pbXBvcnQgbWVtb2l6ZSBmcm9tICdlcy10b29sa2l0L2NvbXBhdC9tZW1vaXplJztcbmltcG9ydCB7QkJveCwgUG9zaXRpb259IGZyb20gJ2dlb2pzb24nO1xuXG4vLyBlcy10b29sa2l0L2NvbXBhdCBtZW1vaXplIGRvZXMgbm90IGV4cG9ydCBsb2Rhc2gncyBNZW1vaXplZEZ1bmN0aW9uIHR5cGUuXG50eXBlIE1lbW9pemVkRnVuY3Rpb24gPSB7XG4gIGNhY2hlOiB7XG4gICAgY2xlYXI/OiAoKSA9PiB2b2lkO1xuICB9O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEdlb0pTT04oZGF0YSwgZ2V0UG9zaXRpb24sIGZpbHRlckRhdGEpIHtcbiAgY29uc3QgcmF3ID0gdHlwZW9mIGZpbHRlckRhdGEgPT09ICdmdW5jdGlvbicgPyBkYXRhLmZpbHRlcihmaWx0ZXJEYXRhKSA6IGRhdGE7XG5cbiAgcmV0dXJuIHJhd1xuICAgIC5tYXAoZCA9PiAoe1xuICAgICAgdHlwZTogJ1BvaW50JyxcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgZGF0YTogZCxcbiAgICAgICAgcG9pbnRzOiBbZF0sXG4gICAgICAgIHBvaW50X2NvdW50OiAxLFxuICAgICAgICBwb2ludF9jb3VudF9hYmJyZXZpYXRlZDogJzEnXG4gICAgICB9LFxuICAgICAgZ2VvbWV0cnk6IHtcbiAgICAgICAgY29vcmRpbmF0ZXM6IGdldFBvc2l0aW9uKGQpXG4gICAgICB9XG4gICAgfSkpXG4gICAgLmZpbHRlcihkID0+IGQuZ2VvbWV0cnkuY29vcmRpbmF0ZXMuZXZlcnkoTnVtYmVyLmlzRmluaXRlKSk7XG59XG5cbmNvbnN0IGNsdXN0ZXJSZXNvbHZlciA9ICh7Y2x1c3RlclJhZGl1c306IHtjbHVzdGVyUmFkaXVzOiBudW1iZXJ9KSA9PiBgJHtjbHVzdGVyUmFkaXVzfWA7XG5cbmNvbnN0IGdldENsdXN0ZXJlciA9ICh7Y2x1c3RlclJhZGl1cywgZ2VvSlNPTn06IHtjbHVzdGVyUmFkaXVzOiBudW1iZXI7IGdlb0pTT059KSA9PlxuICBuZXcgU3VwZXJjbHVzdGVyKHtcbiAgICBtYXhab29tOiAyMCxcbiAgICByYWRpdXM6IGNsdXN0ZXJSYWRpdXMsXG4gICAgcmVkdWNlOiAoYWNjdW11bGF0ZWQsIHByb3BzKSA9PiB7XG4gICAgICBhY2N1bXVsYXRlZC5wb2ludHMgPSBbLi4uYWNjdW11bGF0ZWQucG9pbnRzLCAuLi5wcm9wcy5wb2ludHNdO1xuICAgIH0sXG4gICAgbWFwOiBwcm9wcyA9PiAoe3BvaW50czogW3Byb3BzLmRhdGFdfSlcbiAgfSkubG9hZChnZW9KU09OKTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2x1c3RlckJ1aWxkZXIge1xuICBjbHVzdGVyZXI6ICgoe2NsdXN0ZXJSYWRpdXMsIGdlb0pTT059OiB7Y2x1c3RlclJhZGl1czogbnVtYmVyOyBnZW9KU09OfSkgPT4gU3VwZXJjbHVzdGVyKSAmXG4gICAgTWVtb2l6ZWRGdW5jdGlvbjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmNsdXN0ZXJlciA9IG1lbW9pemUoZ2V0Q2x1c3RlcmVyLCBjbHVzdGVyUmVzb2x2ZXIpO1xuICB9XG5cbiAgY2x1c3RlcnNBdFpvb20oe1xuICAgIGJib3gsXG4gICAgY2x1c3RlclJhZGl1cyxcbiAgICBnZW9KU09OLFxuICAgIHpvb21cbiAgfToge1xuICAgIGJib3g6IEJCb3g7XG4gICAgY2x1c3RlclJhZGl1czogbnVtYmVyO1xuICAgIGdlb0pTT047XG4gICAgem9vbTogbnVtYmVyO1xuICB9KToge1xuICAgIHBvaW50czogYW55O1xuICAgIHBvc2l0aW9uOiBQb3NpdGlvbjtcbiAgICBpbmRleDogbnVtYmVyO1xuICB9W10ge1xuICAgIGNvbnN0IGNsdXN0ZXJlciA9IHRoaXMuY2x1c3RlcmVyKHtjbHVzdGVyUmFkaXVzLCBnZW9KU09OfSk7XG5cbiAgICAvLyBtYXAgY2x1c3RlcnMgdG8gZm9ybWF0dGVkIGJpbnMgdG8gYmUgcGFzc2VkIHRvIGRlY2suZ2wgYmluLXNvcnRlclxuICAgIGNvbnN0IGNsdXN0ZXJzID0gY2x1c3RlcmVyLmdldENsdXN0ZXJzKGJib3gsIHpvb20pLm1hcCgoYywgaSkgPT4gKHtcbiAgICAgIHBvaW50czogYy5wcm9wZXJ0aWVzLnBvaW50cyxcbiAgICAgIHBvc2l0aW9uOiBjLmdlb21ldHJ5LmNvb3JkaW5hdGVzLFxuICAgICAgaW5kZXg6IGlcbiAgICB9KSk7XG5cbiAgICByZXR1cm4gY2x1c3RlcnM7XG4gIH1cblxuICBjbGVhckNsdXN0ZXJlckNhY2hlKCkge1xuICAgIHRoaXMuY2x1c3RlcmVyLmNhY2hlLmNsZWFyPy4oKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxhQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxRQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFKQTtBQUNBOztBQU1BOztBQU9PLFNBQVNFLFVBQVVBLENBQUNDLElBQUksRUFBRUMsV0FBVyxFQUFFQyxVQUFVLEVBQUU7RUFDeEQsSUFBTUMsR0FBRyxHQUFHLE9BQU9ELFVBQVUsS0FBSyxVQUFVLEdBQUdGLElBQUksQ0FBQ0ksTUFBTSxDQUFDRixVQUFVLENBQUMsR0FBR0YsSUFBSTtFQUU3RSxPQUFPRyxHQUFHLENBQ1BFLEdBQUcsQ0FBQyxVQUFBQyxDQUFDO0lBQUEsT0FBSztNQUNUQyxJQUFJLEVBQUUsT0FBTztNQUNiQyxVQUFVLEVBQUU7UUFDVlIsSUFBSSxFQUFFTSxDQUFDO1FBQ1BHLE1BQU0sRUFBRSxDQUFDSCxDQUFDLENBQUM7UUFDWEksV0FBVyxFQUFFLENBQUM7UUFDZEMsdUJBQXVCLEVBQUU7TUFDM0IsQ0FBQztNQUNEQyxRQUFRLEVBQUU7UUFDUkMsV0FBVyxFQUFFWixXQUFXLENBQUNLLENBQUM7TUFDNUI7SUFDRixDQUFDO0VBQUEsQ0FBQyxDQUFDLENBQ0ZGLE1BQU0sQ0FBQyxVQUFBRSxDQUFDO0lB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