@kepler.gl/deckgl-layers 3.3.0-alpha.5 → 3.3.0-alpha.7

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 (189) 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/{globe → cjs/globe}/index.js +19 -1
  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/{index.js → cjs/index.js} +1 -1
  20. package/dist/cjs/layer-utils/aggregation-utils.js +181 -0
  21. package/dist/cjs/layer-utils/cluster-utils.js +93 -0
  22. package/dist/cjs/layer-utils/cpu-aggregator.js +798 -0
  23. package/dist/cjs/layer-utils/globe-cell-utils.js +173 -0
  24. package/dist/cjs/layer-utils/shader-utils.js +38 -0
  25. package/dist/cjs/line-layer/line-layer.js +95 -0
  26. package/dist/cjs/raster/images.js +271 -0
  27. package/dist/cjs/raster/pipeline-validation-patch.js +101 -0
  28. package/dist/cjs/raster/raster-layer/raster-layer-shaders.js +163 -0
  29. package/dist/cjs/raster/raster-layer/raster-layer-webgl1.fs.js +10 -0
  30. package/dist/cjs/raster/raster-layer/raster-layer-webgl1.vs.js +10 -0
  31. package/dist/cjs/raster/raster-layer/raster-layer-webgl2.fs.js +10 -0
  32. package/dist/cjs/raster/raster-layer/raster-layer-webgl2.vs.js +10 -0
  33. package/dist/cjs/raster/raster-layer/raster-layer.js +287 -0
  34. package/dist/cjs/raster/raster-mesh-layer/raster-mesh-layer-shaders.js +38 -0
  35. package/dist/cjs/raster/raster-mesh-layer/raster-mesh-layer-webgl1.fs.js +10 -0
  36. package/dist/cjs/raster/raster-mesh-layer/raster-mesh-layer-webgl1.vs.js +10 -0
  37. package/dist/cjs/raster/raster-mesh-layer/raster-mesh-layer-webgl2.fs.js +10 -0
  38. package/dist/cjs/raster/raster-mesh-layer/raster-mesh-layer-webgl2.vs.js +10 -0
  39. package/dist/cjs/raster/raster-mesh-layer/raster-mesh-layer.js +321 -0
  40. package/dist/cjs/raster/raster-processing-uniforms.js +124 -0
  41. package/dist/cjs/raster/types.js +6 -0
  42. package/dist/cjs/raster/util.js +139 -0
  43. package/dist/cjs/raster/webgl/color/colormap.js +45 -0
  44. package/dist/cjs/raster/webgl/color/filter.js +58 -0
  45. package/dist/cjs/raster/webgl/color/gamma-contrast.js +68 -0
  46. package/dist/cjs/raster/webgl/color/linear-rescale.js +35 -0
  47. package/dist/cjs/raster/webgl/color/saturation.js +42 -0
  48. package/dist/cjs/raster/webgl/color/sigmoidal-contrast.js +68 -0
  49. package/dist/{raster → cjs/raster}/webgl/index.js +1 -1
  50. package/dist/cjs/raster/webgl/pansharpen/pansharpen-brovey.js +46 -0
  51. package/dist/cjs/raster/webgl/spectral-indices/evi.js +26 -0
  52. package/dist/cjs/raster/webgl/spectral-indices/msavi.js +25 -0
  53. package/dist/cjs/raster/webgl/spectral-indices/normalized-difference.js +19 -0
  54. package/dist/cjs/raster/webgl/spectral-indices/savi.js +21 -0
  55. package/dist/cjs/raster/webgl/texture/combine-bands.js +65 -0
  56. package/dist/cjs/raster/webgl/texture/mask.js +50 -0
  57. package/dist/cjs/raster/webgl/texture/reorder-bands.js +72 -0
  58. package/dist/cjs/raster/webgl/texture/rgba-image.js +34 -0
  59. package/dist/cjs/raster/webgl/types.js +6 -0
  60. package/dist/cjs/svg-icon-layer/scatterplot-icon-layer.js +88 -0
  61. package/dist/cjs/svg-icon-layer/svg-icon-layer.js +104 -0
  62. package/dist/cjs/wms/wms-layer.js +624 -0
  63. package/dist/esm/3d-building-layer/3d-building-layer.js +62 -0
  64. package/dist/esm/3d-building-layer/3d-building-utils.js +157 -0
  65. package/dist/esm/3d-building-layer/types.js +3 -0
  66. package/dist/esm/cluster-layer/cluster-layer.js +286 -0
  67. package/dist/esm/column-layer/enhanced-column-layer.js +156 -0
  68. package/dist/esm/deckgl-extensions/filter-arrow-layer.js +64 -0
  69. package/dist/esm/deckgl-extensions/filter-shader-module.js +20 -0
  70. package/dist/esm/globe/atmosphere-layer.js +335 -0
  71. package/dist/esm/globe/enhanced-multi-icon-layer.js +60 -0
  72. package/dist/esm/globe/globe-depth-disk-layer.js +140 -0
  73. package/dist/esm/globe/globe-layers.js +566 -0
  74. package/dist/esm/globe/globe-stars-layer.js +92 -0
  75. package/dist/esm/globe/globe-stars-layer.spec.js +40 -0
  76. package/dist/esm/globe/globe-view.js +398 -0
  77. package/dist/esm/globe/index.js +26 -0
  78. package/dist/esm/globe/mvt-label-layer.js +187 -0
  79. package/dist/esm/grid-layer/enhanced-cpu-grid-layer.js +112 -0
  80. package/dist/esm/hexagon-layer/enhanced-hexagon-layer.js +130 -0
  81. package/dist/esm/index.js +22 -0
  82. package/dist/esm/layer-utils/aggregation-utils.js +172 -0
  83. package/dist/esm/layer-utils/cluster-utils.js +86 -0
  84. package/dist/esm/layer-utils/cpu-aggregator.js +788 -0
  85. package/dist/esm/layer-utils/globe-cell-utils.js +167 -0
  86. package/dist/esm/layer-utils/shader-utils.js +32 -0
  87. package/dist/esm/line-layer/line-layer.js +91 -0
  88. package/dist/esm/raster/images.js +267 -0
  89. package/dist/esm/raster/pipeline-validation-patch.js +94 -0
  90. package/dist/esm/raster/raster-layer/raster-layer-shaders.js +153 -0
  91. package/dist/esm/raster/raster-layer/raster-layer-webgl1.fs.js +5 -0
  92. package/dist/esm/raster/raster-layer/raster-layer-webgl1.vs.js +5 -0
  93. package/dist/esm/raster/raster-layer/raster-layer-webgl2.fs.js +5 -0
  94. package/dist/esm/raster/raster-layer/raster-layer-webgl2.vs.js +5 -0
  95. package/dist/esm/raster/raster-layer/raster-layer.js +283 -0
  96. package/dist/esm/raster/raster-mesh-layer/raster-mesh-layer-shaders.js +30 -0
  97. package/dist/esm/raster/raster-mesh-layer/raster-mesh-layer-webgl1.fs.js +5 -0
  98. package/dist/esm/raster/raster-mesh-layer/raster-mesh-layer-webgl1.vs.js +5 -0
  99. package/dist/esm/raster/raster-mesh-layer/raster-mesh-layer-webgl2.fs.js +5 -0
  100. package/dist/esm/raster/raster-mesh-layer/raster-mesh-layer-webgl2.vs.js +5 -0
  101. package/dist/esm/raster/raster-mesh-layer/raster-mesh-layer.js +318 -0
  102. package/dist/esm/raster/raster-processing-uniforms.js +118 -0
  103. package/dist/esm/raster/types.js +3 -0
  104. package/dist/esm/raster/util.js +134 -0
  105. package/dist/esm/raster/webgl/color/colormap.js +39 -0
  106. package/dist/esm/raster/webgl/color/filter.js +52 -0
  107. package/dist/esm/raster/webgl/color/gamma-contrast.js +62 -0
  108. package/dist/esm/raster/webgl/color/linear-rescale.js +29 -0
  109. package/dist/esm/raster/webgl/color/saturation.js +36 -0
  110. package/dist/esm/raster/webgl/color/sigmoidal-contrast.js +62 -0
  111. package/dist/esm/raster/webgl/index.js +26 -0
  112. package/dist/esm/raster/webgl/pansharpen/pansharpen-brovey.js +40 -0
  113. package/dist/esm/raster/webgl/spectral-indices/evi.js +20 -0
  114. package/dist/esm/raster/webgl/spectral-indices/msavi.js +19 -0
  115. package/dist/esm/raster/webgl/spectral-indices/normalized-difference.js +13 -0
  116. package/dist/esm/raster/webgl/spectral-indices/savi.js +15 -0
  117. package/dist/esm/raster/webgl/texture/combine-bands.js +58 -0
  118. package/dist/esm/raster/webgl/texture/mask.js +44 -0
  119. package/dist/esm/raster/webgl/texture/reorder-bands.js +65 -0
  120. package/dist/esm/raster/webgl/texture/rgba-image.js +28 -0
  121. package/dist/esm/raster/webgl/types.js +3 -0
  122. package/dist/esm/svg-icon-layer/scatterplot-icon-layer.js +84 -0
  123. package/dist/esm/svg-icon-layer/svg-icon-layer.js +101 -0
  124. package/dist/esm/wms/wms-layer.js +619 -0
  125. package/dist/globe/atmosphere-layer.d.ts +22 -1
  126. package/dist/globe/globe-stars-layer.d.ts +5 -0
  127. package/dist/globe/globe-stars-layer.spec.d.ts +1 -0
  128. package/dist/globe/index.d.ts +2 -2
  129. package/dist/wms/wms-layer.d.ts +8 -0
  130. package/package.json +19 -10
  131. package/dist/3d-building-layer/3d-building-layer.js +0 -66
  132. package/dist/3d-building-layer/3d-building-utils.js +0 -166
  133. package/dist/3d-building-layer/types.js +0 -6
  134. package/dist/cluster-layer/cluster-layer.js +0 -292
  135. package/dist/column-layer/enhanced-column-layer.js +0 -160
  136. package/dist/deckgl-extensions/filter-shader-module.js +0 -26
  137. package/dist/globe/atmosphere-layer.js +0 -220
  138. package/dist/globe/enhanced-multi-icon-layer.js +0 -63
  139. package/dist/globe/globe-depth-disk-layer.js +0 -145
  140. package/dist/globe/globe-layers.js +0 -569
  141. package/dist/globe/globe-stars-layer.js +0 -69
  142. package/dist/globe/globe-view.js +0 -404
  143. package/dist/globe/mvt-label-layer.js +0 -190
  144. package/dist/grid-layer/enhanced-cpu-grid-layer.js +0 -116
  145. package/dist/hexagon-layer/enhanced-hexagon-layer.js +0 -134
  146. package/dist/layer-utils/aggregation-utils.js +0 -181
  147. package/dist/layer-utils/cluster-utils.js +0 -93
  148. package/dist/layer-utils/cpu-aggregator.js +0 -798
  149. package/dist/layer-utils/globe-cell-utils.js +0 -173
  150. package/dist/layer-utils/shader-utils.js +0 -38
  151. package/dist/line-layer/line-layer.js +0 -95
  152. package/dist/raster/images.js +0 -271
  153. package/dist/raster/pipeline-validation-patch.js +0 -101
  154. package/dist/raster/raster-layer/raster-layer-shaders.js +0 -163
  155. package/dist/raster/raster-layer/raster-layer-webgl1.fs.js +0 -10
  156. package/dist/raster/raster-layer/raster-layer-webgl1.vs.js +0 -10
  157. package/dist/raster/raster-layer/raster-layer-webgl2.fs.js +0 -10
  158. package/dist/raster/raster-layer/raster-layer-webgl2.vs.js +0 -10
  159. package/dist/raster/raster-layer/raster-layer.js +0 -287
  160. package/dist/raster/raster-mesh-layer/matrix.d.ts +0 -4
  161. package/dist/raster/raster-mesh-layer/matrix.js +0 -18
  162. package/dist/raster/raster-mesh-layer/raster-mesh-layer-shaders.js +0 -38
  163. package/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl1.fs.js +0 -10
  164. package/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl1.vs.js +0 -10
  165. package/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl2.fs.js +0 -10
  166. package/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl2.vs.js +0 -10
  167. package/dist/raster/raster-mesh-layer/raster-mesh-layer.js +0 -321
  168. package/dist/raster/raster-processing-uniforms.js +0 -124
  169. package/dist/raster/types.js +0 -6
  170. package/dist/raster/util.js +0 -139
  171. package/dist/raster/webgl/color/colormap.js +0 -45
  172. package/dist/raster/webgl/color/filter.js +0 -58
  173. package/dist/raster/webgl/color/gamma-contrast.js +0 -68
  174. package/dist/raster/webgl/color/linear-rescale.js +0 -35
  175. package/dist/raster/webgl/color/saturation.js +0 -42
  176. package/dist/raster/webgl/color/sigmoidal-contrast.js +0 -68
  177. package/dist/raster/webgl/pansharpen/pansharpen-brovey.js +0 -46
  178. package/dist/raster/webgl/spectral-indices/evi.js +0 -26
  179. package/dist/raster/webgl/spectral-indices/msavi.js +0 -25
  180. package/dist/raster/webgl/spectral-indices/normalized-difference.js +0 -19
  181. package/dist/raster/webgl/spectral-indices/savi.js +0 -21
  182. package/dist/raster/webgl/texture/combine-bands.js +0 -65
  183. package/dist/raster/webgl/texture/mask.js +0 -50
  184. package/dist/raster/webgl/texture/reorder-bands.js +0 -72
  185. package/dist/raster/webgl/texture/rgba-image.js +0 -34
  186. package/dist/raster/webgl/types.js +0 -6
  187. package/dist/svg-icon-layer/scatterplot-icon-layer.js +0 -88
  188. package/dist/svg-icon-layer/svg-icon-layer.js +0 -104
  189. package/dist/wms/wms-layer.js +0 -594
@@ -0,0 +1,190 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.MVTLabelLayer = void 0;
8
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
11
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
12
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
13
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
14
+ var _core = require("@deck.gl/core");
15
+ var _layers = require("@deck.gl/layers");
16
+ var _enhancedMultiIconLayer = _interopRequireDefault(require("./enhanced-multi-icon-layer"));
17
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
18
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
19
+ function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
20
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } // SPDX-License-Identifier: MIT
21
+ // Copyright contributors to the kepler.gl project
22
+ // Custom globe basemap label layer.
23
+ //
24
+ // This composite is used as the `renderSubLayers` of the globe basemap MVTLayer.
25
+ // It renders two things per tile:
26
+ // 1. A GeoJsonLayer for admin lines / water fills (same visuals as before).
27
+ // 2. A TextLayer for place labels (country names), gated on `config.labels`.
28
+ //
29
+ // The TextLayer uses a custom `EnhancedMultiIconLayer` as its glyph (characters)
30
+ // sublayer, which culls labels on the far side of the globe so they aren't drawn
31
+ // through the planet.
32
+ var MVTLabelLayer = exports.MVTLabelLayer = /*#__PURE__*/function (_CompositeLayer) {
33
+ function MVTLabelLayer() {
34
+ (0, _classCallCheck2["default"])(this, MVTLabelLayer);
35
+ return _callSuper(this, MVTLabelLayer, arguments);
36
+ }
37
+ (0, _inherits2["default"])(MVTLabelLayer, _CompositeLayer);
38
+ return (0, _createClass2["default"])(MVTLabelLayer, [{
39
+ key: "getLabel",
40
+ value: function getLabel(feature) {
41
+ var properties = feature.properties;
42
+ switch (properties === null || properties === void 0 ? void 0 : properties.layerName) {
43
+ // Mapbox `mapbox-streets-v8` schema.
44
+ case 'place_label':
45
+ switch (properties["class"]) {
46
+ case 'country':
47
+ return properties.name_en || properties.name || '';
48
+ default:
49
+ return '';
50
+ }
51
+ // CARTO / OpenMapTiles schema.
52
+ case 'place':
53
+ switch (properties["class"]) {
54
+ case 'country':
55
+ return properties['name:en'] || properties.name_en || properties.name || '';
56
+ default:
57
+ return '';
58
+ }
59
+ default:
60
+ return '';
61
+ }
62
+ }
63
+ }, {
64
+ key: "getLabelSize",
65
+ value: function getLabelSize() {
66
+ return 10;
67
+ }
68
+ }, {
69
+ key: "getLabelAnchors",
70
+ value: function getLabelAnchors(feature) {
71
+ // @ts-expect-error geometry type is narrowed by the switch below
72
+ var _ref = feature.geometry || {},
73
+ type = _ref.type,
74
+ coordinates = _ref.coordinates;
75
+ switch (type) {
76
+ case 'Point':
77
+ return [coordinates];
78
+ case 'MultiPoint':
79
+ return coordinates;
80
+ default:
81
+ return [];
82
+ }
83
+ }
84
+ }, {
85
+ key: "updateState",
86
+ value: function updateState(_ref2) {
87
+ var _this = this;
88
+ var changeFlags = _ref2.changeFlags;
89
+ var data = this.props.data;
90
+ if (changeFlags.dataChanged && data) {
91
+ var features = data.features || data;
92
+ var labelData = (features || []).flatMap(function (feature, index) {
93
+ var labelAnchors = _this.getLabelAnchors(feature);
94
+ return labelAnchors.map(function (p) {
95
+ return _this.getSubLayerRow({
96
+ position: p
97
+ }, feature, index);
98
+ });
99
+ });
100
+ this.setState({
101
+ labelData: labelData
102
+ });
103
+ }
104
+ }
105
+ }, {
106
+ key: "renderLayers",
107
+ value: function renderLayers() {
108
+ var _this$props = this.props,
109
+ config = _this$props.config,
110
+ labelSizeUnits = _this$props.labelSizeUnits,
111
+ labelBackground = _this$props.labelBackground,
112
+ billboard = _this$props.billboard;
113
+ var layers = [];
114
+
115
+ // admin lines and water
116
+ layers.push(new _layers.GeoJsonLayer(this.props, this.getSubLayerProps({
117
+ id: 'geojson'
118
+ }), {
119
+ data: this.props.data,
120
+ updateTriggers: {
121
+ getFillColor: {
122
+ water: config.water,
123
+ waterColor: config.waterColor
124
+ },
125
+ getLineColor: {
126
+ adminLines: config.adminLines,
127
+ adminLinesColor: config.adminLinesColor
128
+ }
129
+ }
130
+ }));
131
+
132
+ // labels
133
+ if (config.labels) {
134
+ layers.push(new _layers.TextLayer(this.getSubLayerProps({
135
+ id: 'text'
136
+ }), {
137
+ data: this.state.labelData,
138
+ parameters: {
139
+ // Globe mode sets a global `cull: true` (to backface-cull the sphere
140
+ // surface). That also backface-culls the glyph quads, hiding all labels,
141
+ // so explicitly disable culling here. depthTest off keeps labels on top of
142
+ // the globe surface rather than clipping into it.
143
+ cull: false,
144
+ depthTest: false,
145
+ depthMask: false
146
+ },
147
+ billboard: billboard,
148
+ sizeUnits: labelSizeUnits,
149
+ // Build the font atlas from the actual labels so accented / non-ASCII
150
+ // characters (ü, ó, etc. in country names) aren't dropped as "missing".
151
+ characterSet: 'auto',
152
+ fontFamily: 'Monaco, monospace',
153
+ background: Boolean(labelBackground),
154
+ getBackgroundColor: function getBackgroundColor() {
155
+ return labelBackground || [0, 0, 0, 0];
156
+ },
157
+ getPosition: function getPosition(d) {
158
+ return d.position;
159
+ },
160
+ getText: this.getSubLayerAccessor(this.getLabel),
161
+ getSize: this.getSubLayerAccessor(this.getLabelSize),
162
+ getColor: function getColor() {
163
+ return config.labelsColor;
164
+ },
165
+ _subLayerProps: {
166
+ characters: {
167
+ type: _enhancedMultiIconLayer["default"]
168
+ }
169
+ },
170
+ updateTriggers: {
171
+ getColor: config.labelsColor
172
+ }
173
+ }));
174
+ }
175
+ return layers;
176
+ }
177
+ }]);
178
+ }(_core.CompositeLayer);
179
+ (0, _defineProperty2["default"])(MVTLabelLayer, "layerName", 'MVTLabelLayer');
180
+ (0, _defineProperty2["default"])(MVTLabelLayer, "defaultProps", _objectSpread(_objectSpread({}, _layers.GeoJsonLayer.defaultProps), {}, {
181
+ billboard: true,
182
+ labelSizeUnits: 'pixels',
183
+ labelBackground: {
184
+ type: 'color',
185
+ value: null,
186
+ optional: true
187
+ },
188
+ fontFamily: 'Monaco, monospace'
189
+ }));
190
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29yZSIsInJlcXVpcmUiLCJfbGF5ZXJzIiwiX2VuaGFuY2VkTXVsdGlJY29uTGF5ZXIiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0Iiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJfY2FsbFN1cGVyIiwiX2dldFByb3RvdHlwZU9mMiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0IiwiY29uc3RydWN0b3IiLCJCb29sZWFuIiwicHJvdG90eXBlIiwidmFsdWVPZiIsImNhbGwiLCJNVlRMYWJlbExheWVyIiwiZXhwb3J0cyIsIl9Db21wb3NpdGVMYXllciIsIl9jbGFzc0NhbGxDaGVjazIiLCJfaW5oZXJpdHMyIiwiX2NyZWF0ZUNsYXNzMiIsImtleSIsInZhbHVlIiwiZ2V0TGFiZWwiLCJmZWF0dXJlIiwicHJvcGVydGllcyIsImxheWVyTmFtZSIsIm5hbWVfZW4iLCJuYW1lIiwiZ2V0TGFiZWxTaXplIiwiZ2V0TGFiZWxBbmNob3JzIiwiX3JlZiIsImdlb21ldHJ5IiwidHlwZSIsImNvb3JkaW5hdGVzIiwidXBkYXRlU3RhdGUiLCJfcmVmMiIsIl90aGlzIiwiY2hhbmdlRmxhZ3MiLCJkYXRhIiwicHJvcHMiLCJkYXRhQ2hhbmdlZCIsImZlYXR1cmVzIiwibGFiZWxEYXRhIiwiZmxhdE1hcCIsImluZGV4IiwibGFiZWxBbmNob3JzIiwibWFwIiwicCIsImdldFN1YkxheWVyUm93IiwicG9zaXRpb24iLCJzZXRTdGF0ZSIsInJlbmRlckxheWVycyIsIl90aGlzJHByb3BzIiwiY29uZmlnIiwibGFiZWxTaXplVW5pdHMiLCJsYWJlbEJhY2tncm91bmQiLCJiaWxsYm9hcmQiLCJsYXllcnMiLCJHZW9Kc29uTGF5ZXIiLCJnZXRTdWJMYXllclByb3BzIiwiaWQiLCJ1cGRhdGVUcmlnZ2VycyIsImdldEZpbGxDb2xvciIsIndhdGVyIiwid2F0ZXJDb2xvciIsImdldExpbmVDb2xvciIsImFkbWluTGluZXMiLCJhZG1pbkxpbmVzQ29sb3IiLCJsYWJlbHMiLCJUZXh0TGF5ZXIiLCJzdGF0ZSIsInBhcmFtZXRlcnMiLCJjdWxsIiwiZGVwdGhUZXN0IiwiZGVwdGhNYXNrIiwic2l6ZVVuaXRzIiwiY2hhcmFjdGVyU2V0IiwiZm9udEZhbWlseSIsImJhY2tncm91bmQiLCJnZXRCYWNrZ3JvdW5kQ29sb3IiLCJnZXRQb3NpdGlvbiIsImQiLCJnZXRUZXh0IiwiZ2V0U3ViTGF5ZXJBY2Nlc3NvciIsImdldFNpemUiLCJnZXRDb2xvciIsImxhYmVsc0NvbG9yIiwiX3N1YkxheWVyUHJvcHMiLCJjaGFyYWN0ZXJzIiwiRW5oYW5jZWRNdWx0aUljb25MYXllciIsIkNvbXBvc2l0ZUxheWVyIiwiZGVmYXVsdFByb3BzIiwib3B0aW9uYWwiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZ2xvYmUvbXZ0LWxhYmVsLWxheWVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7Q29tcG9zaXRlTGF5ZXIsIENvbG9yLCBMYXllciwgVXBkYXRlUGFyYW1ldGVycywgQWNjZXNzb3JGdW5jdGlvbn0gZnJvbSAnQGRlY2suZ2wvY29yZSc7XG5pbXBvcnQge0dlb0pzb25MYXllciwgVGV4dExheWVyfSBmcm9tICdAZGVjay5nbC9sYXllcnMnO1xuXG5pbXBvcnQgdHlwZSB7R2xvYmV9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB0eXBlIHtGZWF0dXJlfSBmcm9tICdnZW9qc29uJztcblxuaW1wb3J0IEVuaGFuY2VkTXVsdGlJY29uTGF5ZXIgZnJvbSAnLi9lbmhhbmNlZC1tdWx0aS1pY29uLWxheWVyJztcblxuLy8gQ3VzdG9tIGdsb2JlIGJhc2VtYXAgbGFiZWwgbGF5ZXIuXG4vL1xuLy8gVGhpcyBjb21wb3NpdGUgaXMgdXNlZCBhcyB0aGUgYHJlbmRlclN1YkxheWVyc2Agb2YgdGhlIGdsb2JlIGJhc2VtYXAgTVZUTGF5ZXIuXG4vLyBJdCByZW5kZXJzIHR3byB0aGluZ3MgcGVyIHRpbGU6XG4vLyAgIDEuIEEgR2VvSnNvbkxheWVyIGZvciBhZG1pbiBsaW5lcyAvIHdhdGVyIGZpbGxzIChzYW1lIHZpc3VhbHMgYXMgYmVmb3JlKS5cbi8vICAgMi4gQSBUZXh0TGF5ZXIgZm9yIHBsYWNlIGxhYmVscyAoY291bnRyeSBuYW1lcyksIGdhdGVkIG9uIGBjb25maWcubGFiZWxzYC5cbi8vXG4vLyBUaGUgVGV4dExheWVyIHVzZXMgYSBjdXN0b20gYEVuaGFuY2VkTXVsdGlJY29uTGF5ZXJgIGFzIGl0cyBnbHlwaCAoY2hhcmFjdGVycylcbi8vIHN1YmxheWVyLCB3aGljaCBjdWxscyBsYWJlbHMgb24gdGhlIGZhciBzaWRlIG9mIHRoZSBnbG9iZSBzbyB0aGV5IGFyZW4ndCBkcmF3blxuLy8gdGhyb3VnaCB0aGUgcGxhbmV0LlxuXG50eXBlIE1WVExhYmVsTGF5ZXJQcm9wcyA9IHtcbiAgZGF0YToge2ZlYXR1cmVzOiBGZWF0dXJlW119IHwgRmVhdHVyZVtdO1xuICBjb25maWc6IEdsb2JlWydjb25maWcnXTtcbiAgbGFiZWxTaXplVW5pdHM/OiAnbWV0ZXJzJyB8ICdjb21tb24nIHwgJ3BpeGVscyc7XG4gIGxhYmVsQmFja2dyb3VuZD86IENvbG9yO1xuICBiaWxsYm9hcmQ/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IGNsYXNzIE1WVExhYmVsTGF5ZXIgZXh0ZW5kcyBDb21wb3NpdGVMYXllcjxNVlRMYWJlbExheWVyUHJvcHM+IHtcbiAgc3RhdGljIGxheWVyTmFtZSA9ICdNVlRMYWJlbExheWVyJztcbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICAuLi5HZW9Kc29uTGF5ZXIuZGVmYXVsdFByb3BzLFxuICAgIGJpbGxib2FyZDogdHJ1ZSxcbiAgICBsYWJlbFNpemVVbml0czogJ3BpeGVscycsXG4gICAgbGFiZWxCYWNrZ3JvdW5kOiB7dHlwZTogJ2NvbG9yJywgdmFsdWU6IG51bGwsIG9wdGlvbmFsOiB0cnVlfSxcbiAgICBmb250RmFtaWx5OiAnTW9uYWNvLCBtb25vc3BhY2UnXG4gIH07XG5cbiAgZ2V0TGFiZWwoZmVhdHVyZTogRmVhdHVyZSk6IHN0cmluZyB7XG4gICAgY29uc3Qge3Byb3BlcnRpZXN9ID0gZmVhdHVyZTtcblxuICAgIHN3aXRjaCAocHJvcGVydGllcz8ubGF5ZXJOYW1lKSB7XG4gICAgICAvLyBNYXBib3ggYG1hcGJveC1zdHJlZXRzLXY4YCBzY2hlbWEuXG4gICAgICBjYXNlICdwbGFjZV9sYWJlbCc6XG4gICAgICAgIHN3aXRjaCAocHJvcGVydGllcy5jbGFzcykge1xuICAgICAgICAgIGNhc2UgJ2NvdW50cnknOlxuICAgICAgICAgICAgcmV0dXJuIHByb3BlcnRpZXMubmFtZV9lbiB8fCBwcm9wZXJ0aWVzLm5hbWUgfHwgJyc7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuICAgICAgLy8gQ0FSVE8gLyBPcGVuTWFwVGlsZXMgc2NoZW1hLlxuICAgICAgY2FzZSAncGxhY2UnOlxuICAgICAgICBzd2l0Y2ggKHByb3BlcnRpZXMuY2xhc3MpIHtcbiAgICAgICAgICBjYXNlICdjb3VudHJ5JzpcbiAgICAgICAgICAgIHJldHVybiBwcm9wZXJ0aWVzWyduYW1lOmVuJ10gfHwgcHJvcGVydGllcy5uYW1lX2VuIHx8IHByb3BlcnRpZXMubmFtZSB8fCAnJztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG5cbiAgZ2V0TGFiZWxTaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIDEwO1xuICB9XG5cbiAgZ2V0TGFiZWxBbmNob3JzKGZlYXR1cmU6IEZlYXR1cmUpOiBudW1iZXJbXVtdIHtcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGdlb21ldHJ5IHR5cGUgaXMgbmFycm93ZWQgYnkgdGhlIHN3aXRjaCBiZWxvd1xuICAgIGNvbnN0IHt0eXBlLCBjb29yZGluYXRlc30gPSBmZWF0dXJlLmdlb21ldHJ5IHx8IHt9O1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnUG9pbnQnOlxuICAgICAgICByZXR1cm4gW2Nvb3JkaW5hdGVzXTtcbiAgICAgIGNhc2UgJ011bHRpUG9pbnQnOlxuICAgICAgICByZXR1cm4gY29vcmRpbmF0ZXM7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlU3RhdGUoe2NoYW5nZUZsYWdzfTogVXBkYXRlUGFyYW1ldGVyczx0aGlzPik6IHZvaWQge1xuICAgIGNvbnN0IHtkYXRhfSA9IHRoaXMucHJvcHM7XG4gICAgaWYgKGNoYW5nZUZsYWdzLmRhdGFDaGFuZ2VkICYmIGRhdGEpIHtcbiAgICAgIGNvbnN0IGZlYXR1cmVzID0gKGRhdGEgYXMge2ZlYXR1cmVzOiBGZWF0dXJlW119KS5mZWF0dXJlcyB8fCAoZGF0YSBhcyBGZWF0dXJlW10pO1xuICAgICAgY29uc3QgbGFiZWxEYXRhID0gKGZlYXR1cmVzIHx8IFtdKS5mbGF0TWFwKChmZWF0dXJlLCBpbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBsYWJlbEFuY2hvcnMgPSB0aGlzLmdldExhYmVsQW5jaG9ycyhmZWF0dXJlKTtcbiAgICAgICAgcmV0dXJuIGxhYmVsQW5jaG9ycy5tYXAocCA9PiB0aGlzLmdldFN1YkxheWVyUm93KHtwb3NpdGlvbjogcH0sIGZlYXR1cmUsIGluZGV4KSk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5zZXRTdGF0ZSh7bGFiZWxEYXRhfSk7XG4gICAgfVxuICB9XG5cbiAgcmVuZGVyTGF5ZXJzKCk6IExheWVyW10ge1xuICAgIGNvbnN0IHtjb25maWcsIGxhYmVsU2l6ZVVuaXRzLCBsYWJlbEJhY2tncm91bmQsIGJpbGxib2FyZH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IGxheWVyczogTGF5ZXJbXSA9IFtdO1xuXG4gICAgLy8gYWRtaW4gbGluZXMgYW5kIHdhdGVyXG4gICAgbGF5ZXJzLnB1c2goXG4gICAgICBuZXcgR2VvSnNvbkxheWVyKHRoaXMucHJvcHMgYXMgYW55LCB0aGlzLmdldFN1YkxheWVyUHJvcHMoe2lkOiAnZ2VvanNvbid9KSwge1xuICAgICAgICBkYXRhOiB0aGlzLnByb3BzLmRhdGEgYXMgYW55LFxuICAgICAgICB1cGRhdGVUcmlnZ2Vyczoge1xuICAgICAgICAgIGdldEZpbGxDb2xvcjoge1xuICAgICAgICAgICAgd2F0ZXI6IGNvbmZpZy53YXRlcixcbiAgICAgICAgICAgIHdhdGVyQ29sb3I6IGNvbmZpZy53YXRlckNvbG9yXG4gICAgICAgICAgfSxcbiAgICAgICAgICBnZXRMaW5lQ29sb3I6IHtcbiAgICAgICAgICAgIGFkbWluTGluZXM6IGNvbmZpZy5hZG1pbkxpbmVzLFxuICAgICAgICAgICAgYWRtaW5MaW5lc0NvbG9yOiBjb25maWcuYWRtaW5MaW5lc0NvbG9yXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG5cbiAgICAvLyBsYWJlbHNcbiAgICBpZiAoY29uZmlnLmxhYmVscykge1xuICAgICAgbGF5ZXJzLnB1c2goXG4gICAgICAgIG5ldyBUZXh0TGF5ZXIodGhpcy5nZXRTdWJMYXllclByb3BzKHtpZDogJ3RleHQnfSksIHtcbiAgICAgICAgICBkYXRhOiB0aGlzLnN0YXRlLmxhYmVsRGF0YSBhcyBhbnksXG4gICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgLy8gR2xvYmUgbW9kZSBzZXRzIGEgZ2xvYmFsIGBjdWxsOiB0cnVlYCAodG8gYmFja2ZhY2UtY3VsbCB0aGUgc3BoZXJlXG4gICAgICAgICAgICAvLyBzdXJmYWNlKS4gVGhhdCBhbHNvIGJhY2tmYWNlLWN1bGxzIHRoZSBnbHlwaCBxdWFkcywgaGlkaW5nIGFsbCBsYWJlbHMsXG4gICAgICAgICAgICAvLyBzbyBleHBsaWNpdGx5IGRpc2FibGUgY3VsbGluZyBoZXJlLiBkZXB0aFRlc3Qgb2ZmIGtlZXBzIGxhYmVscyBvbiB0b3Agb2ZcbiAgICAgICAgICAgIC8vIHRoZSBnbG9iZSBzdXJmYWNlIHJhdGhlciB0aGFuIGNsaXBwaW5nIGludG8gaXQuXG4gICAgICAgICAgICBjdWxsOiBmYWxzZSxcbiAgICAgICAgICAgIGRlcHRoVGVzdDogZmFsc2UsXG4gICAgICAgICAgICBkZXB0aE1hc2s6IGZhbHNlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBiaWxsYm9hcmQsXG4gICAgICAgICAgc2l6ZVVuaXRzOiBsYWJlbFNpemVVbml0cyxcbiAgICAgICAgICAvLyBCdWlsZCB0aGUgZm9udCBhdGxhcyBmcm9tIHRoZSBhY3R1YWwgbGFiZWxzIHNvIGFjY2VudGVkIC8gbm9uLUFTQ0lJXG4gICAgICAgICAgLy8gY2hhcmFjdGVycyAow7wsIMOzLCBldGMuIGluIGNvdW50cnkgbmFtZXMpIGFyZW4ndCBkcm9wcGVkIGFzIFwibWlzc2luZ1wiLlxuICAgICAgICAgIGNoYXJhY3RlclNldDogJ2F1dG8nLFxuICAgICAgICAgIGZvbnRGYW1pbHk6ICdNb25hY28sIG1vbm9zcGFjZScsXG4gICAgICAgICAgYmFja2dyb3VuZDogQm9vbGVhbihsYWJlbEJhY2tncm91bmQpLFxuICAgICAgICAgIGdldEJhY2tncm91bmRDb2xvcjogKCkgPT4gKGxhYmVsQmFja2dyb3VuZCB8fCBbMCwgMCwgMCwgMF0pIGFzIENvbG9yLFxuICAgICAgICAgIGdldFBvc2l0aW9uOiAoZDogYW55KSA9PiBkLnBvc2l0aW9uLFxuICAgICAgICAgIGdldFRleHQ6IHRoaXMuZ2V0U3ViTGF5ZXJBY2Nlc3Nvcih0aGlzLmdldExhYmVsKSBhcyBBY2Nlc3NvckZ1bmN0aW9uPEZlYXR1cmUsIHN0cmluZz4sXG4gICAgICAgICAgZ2V0U2l6ZTogdGhpcy5nZXRTdWJMYXllckFjY2Vzc29yKHRoaXMuZ2V0TGFiZWxTaXplKSxcbiAgICAgICAgICBnZXRDb2xvcjogKCkgPT4gY29uZmlnLmxhYmVsc0NvbG9yIGFzIENvbG9yLFxuICAgICAgICAgIF9zdWJMYXllclByb3BzOiB7XG4gICAgICAgICAgICBjaGFyYWN0ZXJzOiB7XG4gICAgICAgICAgICAgIHR5cGU6IEVuaGFuY2VkTXVsdGlJY29uTGF5ZXJcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGFzIGFueSxcbiAgICAgICAgICB1cGRhdGVUcmlnZ2Vyczoge1xuICAgICAgICAgICAgZ2V0Q29sb3I6IGNvbmZpZy5sYWJlbHNDb2xvclxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxheWVycztcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsS0FBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBS0EsSUFBQUUsdUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUgsT0FBQTtBQUFpRSxTQUFBSSxRQUFBQyxDQUFBLEVBQUFDLENBQUEsUUFBQUMsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLElBQUEsQ0FBQUosQ0FBQSxPQUFBRyxNQUFBLENBQUFFLHFCQUFBLFFBQUFDLENBQUEsR0FBQUgsTUFBQSxDQUFBRSxxQkFBQSxDQUFBTCxDQUFBLEdBQUFDLENBQUEsS0FBQUssQ0FBQSxHQUFBQSxDQUFBLENBQUFDLE1B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
@@ -0,0 +1,116 @@
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
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
11
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
12
+ var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
13
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
14
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
+ var _aggregationLayers = require("@deck.gl/aggregation-layers");
16
+ var _aggregationUtils = require("../layer-utils/aggregation-utils");
17
+ var _globeCellUtils = require("../layer-utils/globe-cell-utils");
18
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
19
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
20
+ function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
21
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
22
+ function _superPropGet(t, o, e, r) { var p = (0, _get2["default"])((0, _getPrototypeOf2["default"])(1 & r ? t.prototype : t), o, e); return 2 & r && "function" == typeof p ? function (t) { return p.apply(e, t); } : p; } // SPDX-License-Identifier: MIT
23
+ // Copyright contributors to the kepler.gl project
24
+ /**
25
+ * In deck.gl 9, GridLayer natively supports CPU aggregation via gpuAggregation: false,
26
+ * custom getColorValue/getElevationValue accessors, percentile filtering, and scale types.
27
+ * The custom CPUAggregator override from deck.gl 8 is no longer needed.
28
+ *
29
+ * We override getPickingInfo to add `cellOutline` — an array of [lng, lat] coordinates
30
+ * computed in common space so the outline aligns with rendered cells at all latitudes.
31
+ *
32
+ * We also override _onAggregationUpdate to send per-bin aggregated values through
33
+ * onSetColorDomain so the legend can compute proper quantile/custom breaks.
34
+ */
35
+ // @ts-expect-error -- overriding private _onAggregationUpdate to enrich the onSetColorDomain callback
36
+ var ScaleEnhancedGridLayer = exports["default"] = /*#__PURE__*/function (_GridLayer) {
37
+ function ScaleEnhancedGridLayer() {
38
+ (0, _classCallCheck2["default"])(this, ScaleEnhancedGridLayer);
39
+ return _callSuper(this, ScaleEnhancedGridLayer, arguments);
40
+ }
41
+ (0, _inherits2["default"])(ScaleEnhancedGridLayer, _GridLayer);
42
+ return (0, _createClass2["default"])(ScaleEnhancedGridLayer, [{
43
+ key: "_onAggregationUpdate",
44
+ value:
45
+ // HACK: deck.gl 9's _onAggregationUpdate is private and its onSetColorDomain
46
+ // callback only provides [min, max]. That is sufficient for quantize/linear
47
+ // scales but d3.scaleQuantile needs the *full sorted array* of bin values to
48
+ // compute correct break points — without it the legend labels are wrong
49
+ function _onAggregationUpdate(_ref) {
50
+ var channel = _ref.channel;
51
+ (0, _aggregationUtils.enrichedAggregationUpdate)(this, _aggregationLayers.GridLayer, channel);
52
+ }
53
+ }, {
54
+ key: "renderLayers",
55
+ value: function renderLayers() {
56
+ return (0, _aggregationUtils.enrichedRenderLayers)(this, _aggregationLayers.GridLayer);
57
+ }
58
+
59
+ // In globe mode, run deck.gl's bin/common-space setup under a WebMercatorViewport
60
+ // so binning and the cell shader's flat common space are genuine Web Mercator, which
61
+ // the globe cell subclass then remaps onto the sphere surface. No-op in 2D/3D mode.
62
+ }, {
63
+ key: "_updateBinOptions",
64
+ value: function _updateBinOptions() {
65
+ var _this = this;
66
+ (0, _globeCellUtils.runBinOptionsWithMercatorViewport)(this, function () {
67
+ return _aggregationLayers.GridLayer.prototype._updateBinOptions.call(_this);
68
+ });
69
+ }
70
+
71
+ // deck.gl's GridCellLayer positions cells in flat common space, which lands them
72
+ // on the XY plane through the globe center. Swap in a globe-aware subclass that
73
+ // curves cells onto the sphere surface (no-op in 2D/3D mode).
74
+ }, {
75
+ key: "getSubLayerClass",
76
+ value: function getSubLayerClass(subLayerId, DefaultLayerClass) {
77
+ var resolved = _superPropGet(ScaleEnhancedGridLayer, "getSubLayerClass", this, 3)([subLayerId, DefaultLayerClass]);
78
+ if (subLayerId === 'cells') {
79
+ return (0, _globeCellUtils.makeGlobeCellLayerClass)(resolved, 'grid');
80
+ }
81
+ return resolved;
82
+ }
83
+ }, {
84
+ key: "getPickingInfo",
85
+ value: function getPickingInfo(params) {
86
+ var info = _superPropGet(ScaleEnhancedGridLayer, "getPickingInfo", this, 3)([params]);
87
+ if (info.object) {
88
+ var _this$props$coverage;
89
+ var _ref2 = this.state,
90
+ cellOriginCommon = _ref2.cellOriginCommon,
91
+ cellSizeCommon = _ref2.cellSizeCommon,
92
+ aggregatorViewport = _ref2.aggregatorViewport;
93
+ var coverage = (_this$props$coverage = this.props.coverage) !== null && _this$props$coverage !== void 0 ? _this$props$coverage : 1;
94
+ if (!cellOriginCommon || !cellSizeCommon || !aggregatorViewport) {
95
+ console.error('ScaleEnhancedGridLayer: expected internal state properties ' + '(cellOriginCommon, cellSizeCommon, aggregatorViewport) are missing. ' + 'Hover outline will not be shown. This may indicate a deck.gl version change.');
96
+ return info;
97
+ }
98
+ var _ref3 = info.object,
99
+ col = _ref3.col,
100
+ row = _ref3.row;
101
+ if (typeof col !== 'number' || typeof row !== 'number') return info;
102
+ var cx = (col + 0.5) * cellSizeCommon[0] + cellOriginCommon[0];
103
+ var cy = (row + 0.5) * cellSizeCommon[1] + cellOriginCommon[1];
104
+ var hw = 0.5 * coverage * cellSizeCommon[0];
105
+ var hh = 0.5 * coverage * cellSizeCommon[1];
106
+ info.object.cellOutline = [aggregatorViewport.unprojectFlat([cx - hw, cy - hh]), aggregatorViewport.unprojectFlat([cx + hw, cy - hh]), aggregatorViewport.unprojectFlat([cx + hw, cy + hh]), aggregatorViewport.unprojectFlat([cx - hw, cy + hh]), aggregatorViewport.unprojectFlat([cx - hw, cy - hh])];
107
+ }
108
+ return info;
109
+ }
110
+ }]);
111
+ }(_aggregationLayers.GridLayer);
112
+ (0, _defineProperty2["default"])(ScaleEnhancedGridLayer, "defaultProps", _objectSpread(_objectSpread({}, _aggregationLayers.GridLayer.defaultProps), {}, {
113
+ gpuAggregation: false
114
+ }));
115
+ ScaleEnhancedGridLayer.layerName = 'ScaleEnhancedGridLayer';
116
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYWdncmVnYXRpb25MYXllcnMiLCJyZXF1aXJlIiwiX2FnZ3JlZ2F0aW9uVXRpbHMiLCJfZ2xvYmVDZWxsVXRpbHMiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIl9jYWxsU3VwZXIiLCJfZ2V0UHJvdG90eXBlT2YyIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJjb25zdHJ1Y3RvciIsIkJvb2xlYW4iLCJwcm90b3R5cGUiLCJ2YWx1ZU9mIiwiY2FsbCIsIl9zdXBlclByb3BHZXQiLCJwIiwiX2dldDIiLCJTY2FsZUVuaGFuY2VkR3JpZExheWVyIiwiZXhwb3J0cyIsIl9HcmlkTGF5ZXIiLCJfY2xhc3NDYWxsQ2hlY2syIiwiX2luaGVyaXRzMiIsIl9jcmVhdGVDbGFzczIiLCJrZXkiLCJ2YWx1ZSIsIl9vbkFnZ3JlZ2F0aW9uVXBkYXRlIiwiX3JlZiIsImNoYW5uZWwiLCJlbnJpY2hlZEFnZ3JlZ2F0aW9uVXBkYXRlIiwiR3JpZExheWVyIiwicmVuZGVyTGF5ZXJzIiwiZW5yaWNoZWRSZW5kZXJMYXllcnMiLCJfdXBkYXRlQmluT3B0aW9ucyIsIl90aGlzIiwicnVuQmluT3B0aW9uc1dpdGhNZXJjYXRvclZpZXdwb3J0IiwiZ2V0U3ViTGF5ZXJDbGFzcyIsInN1YkxheWVySWQiLCJEZWZhdWx0TGF5ZXJDbGFzcyIsInJlc29sdmVkIiwibWFrZUdsb2JlQ2VsbExheWVyQ2xhc3MiLCJnZXRQaWNraW5nSW5mbyIsInBhcmFtcyIsImluZm8iLCJvYmplY3QiLCJfdGhpcyRwcm9wcyRjb3ZlcmFnZSIsIl9yZWYyIiwic3RhdGUiLCJjZWxsT3JpZ2luQ29tbW9uIiwiY2VsbFNpemVDb21tb24iLCJhZ2dyZWdhdG9yVmlld3BvcnQiLCJjb3ZlcmFnZSIsInByb3BzIiwiY29uc29sZSIsImVycm9yIiwiX3JlZjMiLCJjb2wiLCJyb3ciLCJjeCIsImN5IiwiaHciLCJoaCIsImNlbGxPdXRsaW5lIiwidW5wcm9qZWN0RmxhdCIsImRlZmF1bHRQcm9wcyIsImdwdUFnZ3JlZ2F0aW9uIiwibGF5ZXJOYW1lIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2dyaWQtbGF5ZXIvZW5oYW5jZWQtY3B1LWdyaWQtbGF5ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtHcmlkTGF5ZXIsIEdyaWRMYXllclBpY2tpbmdJbmZvfSBmcm9tICdAZGVjay5nbC9hZ2dyZWdhdGlvbi1sYXllcnMnO1xuaW1wb3J0IHtHZXRQaWNraW5nSW5mb1BhcmFtcywgTGF5ZXIsIFBpY2tpbmdJbmZvLCBWaWV3cG9ydH0gZnJvbSAnQGRlY2suZ2wvY29yZSc7XG5pbXBvcnQge2VucmljaGVkQWdncmVnYXRpb25VcGRhdGUsIGVucmljaGVkUmVuZGVyTGF5ZXJzfSBmcm9tICcuLi9sYXllci11dGlscy9hZ2dyZWdhdGlvbi11dGlscyc7XG5pbXBvcnQge1xuICBtYWtlR2xvYmVDZWxsTGF5ZXJDbGFzcyxcbiAgcnVuQmluT3B0aW9uc1dpdGhNZXJjYXRvclZpZXdwb3J0XG59IGZyb20gJy4uL2xheWVyLXV0aWxzL2dsb2JlLWNlbGwtdXRpbHMnO1xuXG5pbnRlcmZhY2UgR3JpZEludGVybmFsU3RhdGUge1xuICBjZWxsT3JpZ2luQ29tbW9uPzogW251bWJlciwgbnVtYmVyXTtcbiAgY2VsbFNpemVDb21tb24/OiBbbnVtYmVyLCBudW1iZXJdO1xuICBhZ2dyZWdhdG9yVmlld3BvcnQ/OiBWaWV3cG9ydCAmIHt1bnByb2plY3RGbGF0KHh5OiBudW1iZXJbXSk6IG51bWJlcltdfTtcbn1cblxuaW50ZXJmYWNlIEdyaWRQaWNraW5nT2JqZWN0IHtcbiAgY29sOiBudW1iZXI7XG4gIHJvdzogbnVtYmVyO1xuICBjZWxsT3V0bGluZT86IG51bWJlcltdW107XG4gIFtrZXk6IHN0cmluZ106IHVua25vd247XG59XG5cbi8qKlxuICogSW4gZGVjay5nbCA5LCBHcmlkTGF5ZXIgbmF0aXZlbHkgc3VwcG9ydHMgQ1BVIGFnZ3JlZ2F0aW9uIHZpYSBncHVBZ2dyZWdhdGlvbjogZmFsc2UsXG4gKiBjdXN0b20gZ2V0Q29sb3JWYWx1ZS9nZXRFbGV2YXRpb25WYWx1ZSBhY2Nlc3NvcnMsIHBlcmNlbnRpbGUgZmlsdGVyaW5nLCBhbmQgc2NhbGUgdHlwZXMuXG4gKiBUaGUgY3VzdG9tIENQVUFnZ3JlZ2F0b3Igb3ZlcnJpZGUgZnJvbSBkZWNrLmdsIDggaXMgbm8gbG9uZ2VyIG5lZWRlZC5cbiAqXG4gKiBXZSBvdmVycmlkZSBnZXRQaWNraW5nSW5mbyB0byBhZGQgYGNlbGxPdXRsaW5lYCDigJQgYW4gYXJyYXkgb2YgW2xuZywgbGF0XSBjb29yZGluYXRlc1xuICogY29tcHV0ZWQgaW4gY29tbW9uIHNwYWNlIHNvIHRoZSBvdXRsaW5lIGFsaWducyB3aXRoIHJlbmRlcmVkIGNlbGxzIGF0IGFsbCBsYXRpdHVkZXMuXG4gKlxuICogV2UgYWxzbyBvdmVycmlkZSBfb25BZ2dyZWdhdGlvblVwZGF0ZSB0byBzZW5kIHBlci1iaW4gYWdncmVnYXRlZCB2YWx1ZXMgdGhyb3VnaFxuICogb25TZXRDb2xvckRvbWFpbiBzbyB0aGUgbGVnZW5kIGNhbiBjb21wdXRlIHByb3BlciBxdWFudGlsZS9jdXN0b20gYnJlYWtzLlxuICovXG4vLyBAdHMtZXhwZWN0LWVycm9yIC0tIG92ZXJyaWRpbmcgcHJpdmF0ZSBfb25BZ2dyZWdhdGlvblVwZGF0ZSB0byBlbnJpY2ggdGhlIG9uU2V0Q29sb3JEb21haW4gY2FsbGJhY2tcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNjYWxlRW5oYW5jZWRHcmlkTGF5ZXIgZXh0ZW5kcyBHcmlkTGF5ZXI8YW55PiB7XG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgLi4uR3JpZExheWVyLmRlZmF1bHRQcm9wcyxcbiAgICBncHVBZ2dyZWdhdGlvbjogZmFsc2VcbiAgfTtcblxuICAvLyBIQUNLOiBkZWNrLmdsIDkncyBfb25BZ2dyZWdhdGlvblVwZGF0ZSBpcyBwcml2YXRlIGFuZCBpdHMgb25TZXRDb2xvckRvbWFpblxuICAvLyBjYWxsYmFjayBvbmx5IHByb3ZpZGVzIFttaW4sIG1heF0uICBUaGF0IGlzIHN1ZmZpY2llbnQgZm9yIHF1YW50aXplL2xpbmVhclxuICAvLyBzY2FsZXMgYnV0IGQzLnNjYWxlUXVhbnRpbGUgbmVlZHMgdGhlICpmdWxsIHNvcnRlZCBhcnJheSogb2YgYmluIHZhbHVlcyB0b1xuICAvLyBjb21wdXRlIGNvcnJlY3QgYnJlYWsgcG9pbnRzIOKAlCB3aXRob3V0IGl0IHRoZSBsZWdlbmQgbGFiZWxzIGFyZSB3cm9uZ1xuICBfb25BZ2dyZWdhdGlvblVwZGF0ZSh7Y2hhbm5lbH06IHtjaGFubmVsOiBudW1iZXJ9KSB7XG4gICAgZW5yaWNoZWRBZ2dyZWdhdGlvblVwZGF0ZSh0aGlzLCBHcmlkTGF5ZXIsIGNoYW5uZWwpO1xuICB9XG5cbiAgcmVuZGVyTGF5ZXJzKCkge1xuICAgIHJldHVybiBlbnJpY2hlZFJlbmRlckxheWVycyh0aGlzLCBHcmlkTGF5ZXIpO1xuICB9XG5cbiAgLy8gSW4gZ2xvYmUgbW9kZSwgcnVuIGRlY2suZ2wncyBiaW4vY29tbW9uLXNwYWNlIHNldHVwIHVuZGVyIGEgV2ViTWVyY2F0b3JWaWV3cG9ydFxuICAvLyBzbyBiaW5uaW5nIGFuZCB0aGUgY2VsbCBzaGFkZXIncyBmbGF0IGNvbW1vbiBzcGFjZSBhcmUgZ2VudWluZSBXZWIgTWVyY2F0b3IsIHdoaWNoXG4gIC8vIHRoZSBnbG9iZSBjZWxsIHN1YmNsYXNzIHRoZW4gcmVtYXBzIG9udG8gdGhlIHNwaGVyZSBzdXJmYWNlLiBOby1vcCBpbiAyRC8zRCBtb2RlLlxuICBfdXBkYXRlQmluT3B0aW9ucygpIHtcbiAgICBydW5CaW5PcHRpb25zV2l0aE1lcmNhdG9yVmlld3BvcnQodGhpcywgKCkgPT5cbiAgICAgIChHcmlkTGF5ZXIucHJvdG90eXBlIGFzIGFueSkuX3VwZGF0ZUJpbk9wdGlvbnMuY2FsbCh0aGlzKVxuICAgICk7XG4gIH1cblxuICAvLyBkZWNrLmdsJ3MgR3JpZENlbGxMYXllciBwb3NpdGlvbnMgY2VsbHMgaW4gZmxhdCBjb21tb24gc3BhY2UsIHdoaWNoIGxhbmRzIHRoZW1cbiAgLy8gb24gdGhlIFhZIHBsYW5lIHRocm91Z2ggdGhlIGdsb2JlIGNlbnRlci4gU3dhcCBpbiBhIGdsb2JlLWF3YXJlIHN1YmNsYXNzIHRoYXRcbiAgLy8gY3VydmVzIGNlbGxzIG9udG8gdGhlIHNwaGVyZSBzdXJmYWNlIChuby1vcCBpbiAyRC8zRCBtb2RlKS5cbiAgZ2V0U3ViTGF5ZXJDbGFzczxUIGV4dGVuZHMgTGF5ZXI+KHN1YkxheWVySWQ6IHN0cmluZywgRGVmYXVsdExheWVyQ2xhc3M6IHtuZXcgKC4uLmFyZ3M6IGFueVtdKTogVH0pIHtcbiAgICBjb25zdCByZXNvbHZlZCA9IHN1cGVyLmdldFN1YkxheWVyQ2xhc3Moc3ViTGF5ZXJJZCwgRGVmYXVsdExheWVyQ2xhc3MpO1xuICAgIGlmIChzdWJMYXllcklkID09PSAnY2VsbHMnKSB7XG4gICAgICByZXR1cm4gbWFrZUdsb2JlQ2VsbExheWVyQ2xhc3MoXG4gICAgICAgIHJlc29sdmVkIGFzIHVua25vd24gYXMge25ldyAoLi4uYXJnczogYW55W10pOiBUfSxcbiAgICAgICAgJ2dyaWQnXG4gICAgICApIGFzIHVua25vd24gYXMge1xuICAgICAgICBuZXcgKC4uLmFyZ3M6IGFueVtdKTogVDtcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiByZXNvbHZlZDtcbiAgfVxuXG4gIGdldFBpY2tpbmdJbmZvKHBhcmFtczogR2V0UGlja2luZ0luZm9QYXJhbXMpOiBQaWNraW5nSW5mbyB7XG4gICAgY29uc3QgaW5mbyA9IHN1cGVyLmdldFBpY2tpbmdJbmZvKHBhcmFtcykgYXMgR3JpZExheWVyUGlja2luZ0luZm88UmVjb3JkPHN0cmluZywgdW5rbm93bj4+O1xuICAgIGlmIChpbmZvLm9iamVjdCkge1xuICAgICAgY29uc3Qge2NlbGxPcmlnaW5Db21tb24sIGNlbGxTaXplQ29tbW9uLCBhZ2dyZWdhdG9yVmlld3BvcnR9ID0gdGhpc1xuICAgICAgICAuc3RhdGUgYXMgdW5rbm93biBhcyBHcmlkSW50ZXJuYWxTdGF0ZTtcbiAgICAgIGNvbnN0IGNvdmVyYWdlID0gdGhpcy5wcm9wcy5jb3ZlcmFnZSA/PyAxO1xuICAgICAgaWYgKCFjZWxsT3JpZ2luQ29tbW9uIHx8ICFjZWxsU2l6ZUNvbW1vbiB8fCAhYWdncmVnYXRvclZpZXdwb3J0KSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgJ1NjYWxlRW5oYW5jZWRHcmlkTGF5ZXI6IGV4cGVjdGVkIGludGVybmFsIHN0YXRlIHByb3BlcnRpZXMgJyArXG4gICAgICAgICAgICAnKGNlbGxPcmlnaW5Db21tb24sIGNlbGxTaXplQ29tbW9uLCBhZ2dyZWdhdG9yVmlld3BvcnQpIGFyZSBtaXNzaW5nLiAnICtcbiAgICAgICAgICAgICdIb3ZlciBvdXRsaW5lIHdpbGwgbm90IGJlIHNob3duLiBUaGlzIG1heSBpbmRpY2F0ZSBhIGRlY2suZ2wgdmVyc2lvbiBjaGFuZ2UuJ1xuICAgICAgICApO1xuICAgICAgICByZXR1cm4gaW5mbztcbiAgICAgIH1cbiAgICAgIGNvbnN0IHtjb2wsIHJvd30gPSBpbmZvLm9iamVjdCBhcyBHcmlkUGlja2luZ09iamVjdDtcbiAgICAgIGlmICh0eXBlb2YgY29sICE9PSAnbnVtYmVyJyB8fCB0eXBlb2Ygcm93ICE9PSAnbnVtYmVyJykgcmV0dXJuIGluZm87XG4gICAgICBjb25zdCBjeCA9IChjb2wgKyAwLjUpICogY2VsbFNpemVDb21tb25bMF0gKyBjZWxsT3JpZ2luQ29tbW9uWzBdO1xuICAgICAgY29uc3QgY3kgPSAocm93ICsgMC41KSAqIGNlbGxTaXplQ29tbW9uWzFdICsgY2VsbE9yaWdpbkNvbW1vblsxXTtcbiAgICAgIGNvbnN0IGh3ID0gMC41ICogY292ZXJhZ2UgKiBjZWxsU2l6ZUNvbW1vblswXTtcbiAgICAgIGNvbnN0IGhoID0gMC41ICogY292ZXJhZ2UgKiBjZWxsU2l6ZUNvbW1vblsxXTtcblxuICAgICAgKGluZm8ub2JqZWN0IGFzIEdyaWRQaWNraW5nT2JqZWN0KS5jZWxsT3V0bGluZSA9IFtcbiAgICAgICAgYWdncmVnYXRvclZpZXdwb3J0LnVucHJvamVjdEZsYXQoW2N4IC0gaHcsIGN5IC0gaGhdKSxcbiAgICAgICAgYWdncmVnYXRvclZpZXdwb3J0LnVucHJvamVjdEZsYXQoW2N4ICsgaHcsIGN5IC0gaGhdKSxcbiAgICAgICAgYWdncmVnYXRvclZpZXdwb3J0LnVucHJvamVjdEZsYXQoW2N4ICsgaHcsIGN5ICsgaGhdKSxcbiAgICAgICAgYWdncmVnYXRvclZpZXdwb3J0LnVucHJvamVjdEZsYXQoW2N4IC0gaHcsIGN5ICsgaGhdKSxcbiAgICAgICAgYWdncmVnYXRvclZpZXdwb3J0LnVucHJvamVjdEZsYXQoW2N4IC0gaHcsIGN5IC0gaGhdKVxuICAgICAgXTtcbiAgICB9XG4gICAgcmV0dXJuIGluZm87XG4gIH1cbn1cblxuU2NhbGVFbmhhbmNlZEdyaWRMYXllci5sYXllck5hbWUgPSAnU2NhbGVFbmhhbmNlZEdyaWRMYXllcic7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsa0JBQUEsR0FBQUMsT0FBQTtBQUVBLElBQUFDLGlCQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxlQUFBLEdB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
@@ -0,0 +1,134 @@
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
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
11
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
12
+ var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
13
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
14
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
+ var _aggregationLayers = require("@deck.gl/aggregation-layers");
16
+ var _aggregationUtils = require("../layer-utils/aggregation-utils");
17
+ var _globeCellUtils = require("../layer-utils/globe-cell-utils");
18
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
19
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
20
+ function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
21
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
22
+ function _superPropGet(t, o, e, r) { var p = (0, _get2["default"])((0, _getPrototypeOf2["default"])(1 & r ? t.prototype : t), o, e); return 2 & r && "function" == typeof p ? function (t) { return p.apply(e, t); } : p; } // SPDX-License-Identifier: MIT
23
+ // Copyright contributors to the kepler.gl project
24
+ var THIRD_PI = Math.PI / 3;
25
+ var HexbinVertices = Array.from({
26
+ length: 6
27
+ }, function (_, i) {
28
+ var angle = i * THIRD_PI;
29
+ return [Math.sin(angle), -Math.cos(angle)];
30
+ });
31
+ function getHexbinCentroid(id, radius) {
32
+ var DIST_X = 2 * Math.sin(THIRD_PI);
33
+ var DIST_Y = 1.5;
34
+ return [(id[0] + (id[1] & 1) / 2) * radius * DIST_X, id[1] * radius * DIST_Y];
35
+ }
36
+ /**
37
+ * In deck.gl 9, HexagonLayer natively supports CPU aggregation via gpuAggregation: false,
38
+ * custom getColorValue/getElevationValue accessors, percentile filtering, and scale types.
39
+ *
40
+ * We override getPickingInfo to add `cellOutline` — an array of [lng, lat] coordinates
41
+ * computed in common space so the outline aligns with rendered cells at all latitudes.
42
+ *
43
+ * We also override _onAggregationUpdate to send per-bin aggregated values through
44
+ * onSetColorDomain so the legend can compute proper quantile/custom breaks.
45
+ */
46
+ // @ts-expect-error -- overriding private _onAggregationUpdate to enrich the onSetColorDomain callback
47
+ var ScaleEnhancedHexagonLayer = exports["default"] = /*#__PURE__*/function (_HexagonLayer) {
48
+ function ScaleEnhancedHexagonLayer() {
49
+ (0, _classCallCheck2["default"])(this, ScaleEnhancedHexagonLayer);
50
+ return _callSuper(this, ScaleEnhancedHexagonLayer, arguments);
51
+ }
52
+ (0, _inherits2["default"])(ScaleEnhancedHexagonLayer, _HexagonLayer);
53
+ return (0, _createClass2["default"])(ScaleEnhancedHexagonLayer, [{
54
+ key: "_onAggregationUpdate",
55
+ value:
56
+ // HACK: deck.gl 9's _onAggregationUpdate is private and its onSetColorDomain
57
+ // callback only provides [min, max]. That is sufficient for quantize/linear
58
+ // scales but d3.scaleQuantile needs the *full sorted array* of bin values to
59
+ // compute correct break points — without it the legend labels are wrong
60
+ function _onAggregationUpdate(_ref) {
61
+ var channel = _ref.channel;
62
+ (0, _aggregationUtils.enrichedAggregationUpdate)(this, _aggregationLayers.HexagonLayer, channel);
63
+ }
64
+ }, {
65
+ key: "renderLayers",
66
+ value: function renderLayers() {
67
+ return (0, _aggregationUtils.enrichedRenderLayers)(this, _aggregationLayers.HexagonLayer);
68
+ }
69
+
70
+ // In globe mode, run deck.gl's bin/common-space setup under a WebMercatorViewport
71
+ // so binning and the cell shader's flat common space are genuine Web Mercator, which
72
+ // the globe cell subclass then remaps onto the sphere surface. No-op in 2D/3D mode.
73
+ }, {
74
+ key: "_updateBinOptions",
75
+ value: function _updateBinOptions() {
76
+ var _this = this;
77
+ (0, _globeCellUtils.runBinOptionsWithMercatorViewport)(this, function () {
78
+ return _aggregationLayers.HexagonLayer.prototype._updateBinOptions.call(_this);
79
+ });
80
+ }
81
+
82
+ // deck.gl's HexagonCellLayer positions cells in flat common space, which lands
83
+ // them on the XY plane through the globe center. Swap in a globe-aware subclass
84
+ // that curves cells onto the sphere surface (no-op in 2D/3D mode).
85
+ }, {
86
+ key: "getSubLayerClass",
87
+ value: function getSubLayerClass(subLayerId, DefaultLayerClass) {
88
+ var resolved = _superPropGet(ScaleEnhancedHexagonLayer, "getSubLayerClass", this, 3)([subLayerId, DefaultLayerClass]);
89
+ if (subLayerId === 'cells') {
90
+ return (0, _globeCellUtils.makeGlobeCellLayerClass)(resolved, 'hexagon');
91
+ }
92
+ return resolved;
93
+ }
94
+ }, {
95
+ key: "getPickingInfo",
96
+ value: function getPickingInfo(params) {
97
+ var info = _superPropGet(ScaleEnhancedHexagonLayer, "getPickingInfo", this, 3)([params]);
98
+ if (info.object) {
99
+ var _this$props$coverage, _hexOriginCommon$, _hexOriginCommon$2;
100
+ var _ref2 = this.state,
101
+ radiusCommon = _ref2.radiusCommon,
102
+ hexOriginCommon = _ref2.hexOriginCommon,
103
+ aggregatorViewport = _ref2.aggregatorViewport;
104
+ var coverage = (_this$props$coverage = this.props.coverage) !== null && _this$props$coverage !== void 0 ? _this$props$coverage : 1;
105
+ if (!radiusCommon || !aggregatorViewport) {
106
+ console.error('ScaleEnhancedHexagonLayer: expected internal state properties ' + '(radiusCommon, aggregatorViewport) are missing. ' + 'Hover outline will not be shown. This may indicate a deck.gl version change.');
107
+ return info;
108
+ }
109
+ var _ref3 = info.object,
110
+ col = _ref3.col,
111
+ row = _ref3.row;
112
+ if (typeof col !== 'number' || typeof row !== 'number') return info;
113
+ var centroid = getHexbinCentroid([col, row], radiusCommon);
114
+ var ox = (_hexOriginCommon$ = hexOriginCommon === null || hexOriginCommon === void 0 ? void 0 : hexOriginCommon[0]) !== null && _hexOriginCommon$ !== void 0 ? _hexOriginCommon$ : 0;
115
+ var oy = (_hexOriginCommon$2 = hexOriginCommon === null || hexOriginCommon === void 0 ? void 0 : hexOriginCommon[1]) !== null && _hexOriginCommon$2 !== void 0 ? _hexOriginCommon$2 : 0;
116
+ var r = radiusCommon * coverage;
117
+ var outline = [];
118
+ for (var i = 0; i < 6; i++) {
119
+ var vx = centroid[0] + r * HexbinVertices[i][0] + ox;
120
+ var vy = centroid[1] + r * HexbinVertices[i][1] + oy;
121
+ outline.push(aggregatorViewport.unprojectFlat([vx, vy]));
122
+ }
123
+ outline.push(outline[0]);
124
+ info.object.cellOutline = outline;
125
+ }
126
+ return info;
127
+ }
128
+ }]);
129
+ }(_aggregationLayers.HexagonLayer);
130
+ (0, _defineProperty2["default"])(ScaleEnhancedHexagonLayer, "defaultProps", _objectSpread(_objectSpread({}, _aggregationLayers.HexagonLayer.defaultProps), {}, {
131
+ gpuAggregation: false
132
+ }));
133
+ ScaleEnhancedHexagonLayer.layerName = 'ScaleEnhancedHexagonLayer';
134
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYWdncmVnYXRpb25MYXllcnMiLCJyZXF1aXJlIiwiX2FnZ3JlZ2F0aW9uVXRpbHMiLCJfZ2xvYmVDZWxsVXRpbHMiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIl9jYWxsU3VwZXIiLCJfZ2V0UHJvdG90eXBlT2YyIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJjb25zdHJ1Y3RvciIsIkJvb2xlYW4iLCJwcm90b3R5cGUiLCJ2YWx1ZU9mIiwiY2FsbCIsIl9zdXBlclByb3BHZXQiLCJwIiwiX2dldDIiLCJUSElSRF9QSSIsIk1hdGgiLCJQSSIsIkhleGJpblZlcnRpY2VzIiwiQXJyYXkiLCJmcm9tIiwiXyIsImkiLCJhbmdsZSIsInNpbiIsImNvcyIsImdldEhleGJpbkNlbnRyb2lkIiwiaWQiLCJyYWRpdXMiLCJESVNUX1giLCJESVNUX1kiLCJTY2FsZUVuaGFuY2VkSGV4YWdvbkxheWVyIiwiZXhwb3J0cyIsIl9IZXhhZ29uTGF5ZXIiLCJfY2xhc3NDYWxsQ2hlY2syIiwiX2luaGVyaXRzMiIsIl9jcmVhdGVDbGFzczIiLCJrZXkiLCJ2YWx1ZSIsIl9vbkFnZ3JlZ2F0aW9uVXBkYXRlIiwiX3JlZiIsImNoYW5uZWwiLCJlbnJpY2hlZEFnZ3JlZ2F0aW9uVXBkYXRlIiwiSGV4YWdvbkxheWVyIiwicmVuZGVyTGF5ZXJzIiwiZW5yaWNoZWRSZW5kZXJMYXllcnMiLCJfdXBkYXRlQmluT3B0aW9ucyIsIl90aGlzIiwicnVuQmluT3B0aW9uc1dpdGhNZXJjYXRvclZpZXdwb3J0IiwiZ2V0U3ViTGF5ZXJDbGFzcyIsInN1YkxheWVySWQiLCJEZWZhdWx0TGF5ZXJDbGFzcyIsInJlc29sdmVkIiwibWFrZUdsb2JlQ2VsbExheWVyQ2xhc3MiLCJnZXRQaWNraW5nSW5mbyIsInBhcmFtcyIsImluZm8iLCJvYmplY3QiLCJfdGhpcyRwcm9wcyRjb3ZlcmFnZSIsIl9oZXhPcmlnaW5Db21tb24kIiwiX2hleE9yaWdpbkNvbW1vbiQyIiwiX3JlZjIiLCJzdGF0ZSIsInJhZGl1c0NvbW1vbiIsImhleE9yaWdpbkNvbW1vbiIsImFnZ3JlZ2F0b3JWaWV3cG9ydCIsImNvdmVyYWdlIiwicHJvcHMiLCJjb25zb2xlIiwiZXJyb3IiLCJfcmVmMyIsImNvbCIsInJvdyIsImNlbnRyb2lkIiwib3giLCJveSIsIm91dGxpbmUiLCJ2eCIsInZ5IiwidW5wcm9qZWN0RmxhdCIsImNlbGxPdXRsaW5lIiwiZGVmYXVsdFByb3BzIiwiZ3B1QWdncmVnYXRpb24iLCJsYXllck5hbWUiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaGV4YWdvbi1sYXllci9lbmhhbmNlZC1oZXhhZ29uLWxheWVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7SGV4YWdvbkxheWVyLCBIZXhhZ29uTGF5ZXJQaWNraW5nSW5mb30gZnJvbSAnQGRlY2suZ2wvYWdncmVnYXRpb24tbGF5ZXJzJztcbmltcG9ydCB7R2V0UGlja2luZ0luZm9QYXJhbXMsIExheWVyLCBQaWNraW5nSW5mbywgVmlld3BvcnR9IGZyb20gJ0BkZWNrLmdsL2NvcmUnO1xuaW1wb3J0IHtlbnJpY2hlZEFnZ3JlZ2F0aW9uVXBkYXRlLCBlbnJpY2hlZFJlbmRlckxheWVyc30gZnJvbSAnLi4vbGF5ZXItdXRpbHMvYWdncmVnYXRpb24tdXRpbHMnO1xuaW1wb3J0IHtcbiAgbWFrZUdsb2JlQ2VsbExheWVyQ2xhc3MsXG4gIHJ1bkJpbk9wdGlvbnNXaXRoTWVyY2F0b3JWaWV3cG9ydFxufSBmcm9tICcuLi9sYXllci11dGlscy9nbG9iZS1jZWxsLXV0aWxzJztcblxuY29uc3QgVEhJUkRfUEkgPSBNYXRoLlBJIC8gMztcbmNvbnN0IEhleGJpblZlcnRpY2VzID0gQXJyYXkuZnJvbSh7bGVuZ3RoOiA2fSwgKF8sIGkpID0+IHtcbiAgY29uc3QgYW5nbGUgPSBpICogVEhJUkRfUEk7XG4gIHJldHVybiBbTWF0aC5zaW4oYW5nbGUpLCAtTWF0aC5jb3MoYW5nbGUpXTtcbn0pO1xuXG5mdW5jdGlvbiBnZXRIZXhiaW5DZW50cm9pZChpZDogW251bWJlciwgbnVtYmVyXSwgcmFkaXVzOiBudW1iZXIpOiBbbnVtYmVyLCBudW1iZXJdIHtcbiAgY29uc3QgRElTVF9YID0gMiAqIE1hdGguc2luKFRISVJEX1BJKTtcbiAgY29uc3QgRElTVF9ZID0gMS41O1xuICByZXR1cm4gWyhpZFswXSArIChpZFsxXSAmIDEpIC8gMikgKiByYWRpdXMgKiBESVNUX1gsIGlkWzFdICogcmFkaXVzICogRElTVF9ZXTtcbn1cblxuaW50ZXJmYWNlIEhleEludGVybmFsU3RhdGUge1xuICByYWRpdXNDb21tb24/OiBudW1iZXI7XG4gIGhleE9yaWdpbkNvbW1vbj86IFtudW1iZXIsIG51bWJlcl07XG4gIGFnZ3JlZ2F0b3JWaWV3cG9ydD86IFZpZXdwb3J0ICYge3VucHJvamVjdEZsYXQoeHk6IG51bWJlcltdKTogbnVtYmVyW119O1xufVxuXG5pbnRlcmZhY2UgSGV4UGlja2luZ09iamVjdCB7XG4gIGNvbDogbnVtYmVyO1xuICByb3c6IG51bWJlcjtcbiAgY2VsbE91dGxpbmU/OiBudW1iZXJbXVtdO1xuICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xufVxuXG4vKipcbiAqIEluIGRlY2suZ2wgOSwgSGV4YWdvbkxheWVyIG5hdGl2ZWx5IHN1cHBvcnRzIENQVSBhZ2dyZWdhdGlvbiB2aWEgZ3B1QWdncmVnYXRpb246IGZhbHNlLFxuICogY3VzdG9tIGdldENvbG9yVmFsdWUvZ2V0RWxldmF0aW9uVmFsdWUgYWNjZXNzb3JzLCBwZXJjZW50aWxlIGZpbHRlcmluZywgYW5kIHNjYWxlIHR5cGVzLlxuICpcbiAqIFdlIG92ZXJyaWRlIGdldFBpY2tpbmdJbmZvIHRvIGFkZCBgY2VsbE91dGxpbmVgIOKAlCBhbiBhcnJheSBvZiBbbG5nLCBsYXRdIGNvb3JkaW5hdGVzXG4gKiBjb21wdXRlZCBpbiBjb21tb24gc3BhY2Ugc28gdGhlIG91dGxpbmUgYWxpZ25zIHdpdGggcmVuZGVyZWQgY2VsbHMgYXQgYWxsIGxhdGl0dWRlcy5cbiAqXG4gKiBXZSBhbHNvIG92ZXJyaWRlIF9vbkFnZ3JlZ2F0aW9uVXBkYXRlIHRvIHNlbmQgcGVyLWJpbiBhZ2dyZWdhdGVkIHZhbHVlcyB0aHJvdWdoXG4gKiBvblNldENvbG9yRG9tYWluIHNvIHRoZSBsZWdlbmQgY2FuIGNvbXB1dGUgcHJvcGVyIHF1YW50aWxlL2N1c3RvbSBicmVha3MuXG4gKi9cbi8vIEB0cy1leHBlY3QtZXJyb3IgLS0gb3ZlcnJpZGluZyBwcml2YXRlIF9vbkFnZ3JlZ2F0aW9uVXBkYXRlIHRvIGVucmljaCB0aGUgb25TZXRDb2xvckRvbWFpbiBjYWxsYmFja1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2NhbGVFbmhhbmNlZEhleGFnb25MYXllciBleHRlbmRzIEhleGFnb25MYXllcjxhbnk+IHtcbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICAuLi5IZXhhZ29uTGF5ZXIuZGVmYXVsdFByb3BzLFxuICAgIGdwdUFnZ3JlZ2F0aW9uOiBmYWxzZVxuICB9O1xuXG4gIC8vIEhBQ0s6IGRlY2suZ2wgOSdzIF9vbkFnZ3JlZ2F0aW9uVXBkYXRlIGlzIHByaXZhdGUgYW5kIGl0cyBvblNldENvbG9yRG9tYWluXG4gIC8vIGNhbGxiYWNrIG9ubHkgcHJvdmlkZXMgW21pbiwgbWF4XS4gIFRoYXQgaXMgc3VmZmljaWVudCBmb3IgcXVhbnRpemUvbGluZWFyXG4gIC8vIHNjYWxlcyBidXQgZDMuc2NhbGVRdWFudGlsZSBuZWVkcyB0aGUgKmZ1bGwgc29ydGVkIGFycmF5KiBvZiBiaW4gdmFsdWVzIHRvXG4gIC8vIGNvbXB1dGUgY29ycmVjdCBicmVhayBwb2ludHMg4oCUIHdpdGhvdXQgaXQgdGhlIGxlZ2VuZCBsYWJlbHMgYXJlIHdyb25nXG4gIF9vbkFnZ3JlZ2F0aW9uVXBkYXRlKHtjaGFubmVsfToge2NoYW5uZWw6IG51bWJlcn0pIHtcbiAgICBlbnJpY2hlZEFnZ3JlZ2F0aW9uVXBkYXRlKHRoaXMsIEhleGFnb25MYXllciwgY2hhbm5lbCk7XG4gIH1cblxuICByZW5kZXJMYXllcnMoKSB7XG4gICAgcmV0dXJuIGVucmljaGVkUmVuZGVyTGF5ZXJzKHRoaXMsIEhleGFnb25MYXllcik7XG4gIH1cblxuICAvLyBJbiBnbG9iZSBtb2RlLCBydW4gZGVjay5nbCdzIGJpbi9jb21tb24tc3BhY2Ugc2V0dXAgdW5kZXIgYSBXZWJNZXJjYXRvclZpZXdwb3J0XG4gIC8vIHNvIGJpbm5pbmcgYW5kIHRoZSBjZWxsIHNoYWRlcidzIGZsYXQgY29tbW9uIHNwYWNlIGFyZSBnZW51aW5lIFdlYiBNZXJjYXRvciwgd2hpY2hcbiAgLy8gdGhlIGdsb2JlIGNlbGwgc3ViY2xhc3MgdGhlbiByZW1hcHMgb250byB0aGUgc3BoZXJlIHN1cmZhY2UuIE5vLW9wIGluIDJELzNEIG1vZGUuXG4gIF91cGRhdGVCaW5PcHRpb25zKCkge1xuICAgIHJ1bkJpbk9wdGlvbnNXaXRoTWVyY2F0b3JWaWV3cG9ydCh0aGlzLCAoKSA9PlxuICAgICAgKEhleGFnb25MYXllci5wcm90b3R5cGUgYXMgYW55KS5fdXBkYXRlQmluT3B0aW9ucy5jYWxsKHRoaXMpXG4gICAgKTtcbiAgfVxuXG4gIC8vIGRlY2suZ2wncyBIZXhhZ29uQ2VsbExheWVyIHBvc2l0aW9ucyBjZWxscyBpbiBmbGF0IGNvbW1vbiBzcGFjZSwgd2hpY2ggbGFuZHNcbiAgLy8gdGhlbSBvbiB0aGUgWFkgcGxhbmUgdGhyb3VnaCB0aGUgZ2xvYmUgY2VudGVyLiBTd2FwIGluIGEgZ2xvYmUtYXdhcmUgc3ViY2xhc3NcbiAgLy8gdGhhdCBjdXJ2ZXMgY2VsbHMgb250byB0aGUgc3BoZXJlIHN1cmZhY2UgKG5vLW9wIGluIDJELzNEIG1vZGUpLlxuICBnZXRTdWJMYXllckNsYXNzPFQgZXh0ZW5kcyBMYXllcj4oc3ViTGF5ZXJJZDogc3RyaW5nLCBEZWZhdWx0TGF5ZXJDbGFzczoge25ldyAoLi4uYXJnczogYW55W10pOiBUfSkge1xuICAgIGNvbnN0IHJlc29sdmVkID0gc3VwZXIuZ2V0U3ViTGF5ZXJDbGFzcyhzdWJMYXllcklkLCBEZWZhdWx0TGF5ZXJDbGFzcyk7XG4gICAgaWYgKHN1YkxheWVySWQgPT09ICdjZWxscycpIHtcbiAgICAgIHJldHVybiBtYWtlR2xvYmVDZWxsTGF5ZXJDbGFzcyhcbiAgICAgICAgcmVzb2x2ZWQgYXMgdW5rbm93biBhcyB7bmV3ICguLi5hcmdzOiBhbnlbXSk6IFR9LFxuICAgICAgICAnaGV4YWdvbidcbiAgICAgICkgYXMgdW5rbm93biBhcyB7XG4gICAgICAgIG5ldyAoLi4uYXJnczogYW55W10pOiBUO1xuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc29sdmVkO1xuICB9XG5cbiAgZ2V0UGlja2luZ0luZm8ocGFyYW1zOiBHZXRQaWNraW5nSW5mb1BhcmFtcyk6IFBpY2tpbmdJbmZvIHtcbiAgICBjb25zdCBpbmZvID0gc3VwZXIuZ2V0UGlja2luZ0luZm8ocGFyYW1zKSBhcyBIZXhhZ29uTGF5ZXJQaWNraW5nSW5mbzxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG4gICAgaWYgKGluZm8ub2JqZWN0KSB7XG4gICAgICBjb25zdCB7cmFkaXVzQ29tbW9uLCBoZXhPcmlnaW5Db21tb24sIGFnZ3JlZ2F0b3JWaWV3cG9ydH0gPSB0aGlzXG4gICAgICAgIC5zdGF0ZSBhcyB1bmtub3duIGFzIEhleEludGVybmFsU3RhdGU7XG4gICAgICBjb25zdCBjb3ZlcmFnZSA9IHRoaXMucHJvcHMuY292ZXJhZ2UgPz8gMTtcbiAgICAgIGlmICghcmFkaXVzQ29tbW9uIHx8ICFhZ2dyZWdhdG9yVmlld3BvcnQpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAnU2NhbGVFbmhhbmNlZEhleGFnb25MYXllcjogZXhwZWN0ZWQgaW50ZXJuYWwgc3RhdGUgcHJvcGVydGllcyAnICtcbiAgICAgICAgICAgICcocmFkaXVzQ29tbW9uLCBhZ2dyZWdhdG9yVmlld3BvcnQpIGFyZSBtaXNzaW5nLiAnICtcbiAgICAgICAgICAgICdIb3ZlciBvdXRsaW5lIHdpbGwgbm90IGJlIHNob3duLiBUaGlzIG1heSBpbmRpY2F0ZSBhIGRlY2suZ2wgdmVyc2lvbiBjaGFuZ2UuJ1xuICAgICAgICApO1xuICAgICAgICByZXR1cm4gaW5mbztcbiAgICAgIH1cbiAgICAgIGNvbnN0IHtjb2wsIHJvd30gPSBpbmZvLm9iamVjdCBhcyBIZXhQaWNraW5nT2JqZWN0O1xuICAgICAgaWYgKHR5cGVvZiBjb2wgIT09ICdudW1iZXInIHx8IHR5cGVvZiByb3cgIT09ICdudW1iZXInKSByZXR1cm4gaW5mbztcbiAgICAgIGNvbnN0IGNlbnRyb2lkID0gZ2V0SGV4YmluQ2VudHJvaWQoW2NvbCwgcm93XSwgcmFkaXVzQ29tbW9uKTtcbiAgICAgIGNvbnN0IG94ID0gaGV4T3JpZ2luQ29tbW9uPy5bMF0gPz8gMDtcbiAgICAgIGNvbnN0IG95ID0gaGV4T3JpZ2luQ29tbW9uPy5bMV0gPz8gMDtcbiAgICAgIGNvbnN0IHIgPSByYWRpdXNDb21tb24gKiBjb3ZlcmFnZTtcblxuICAgICAgY29uc3Qgb3V0bGluZTogbnVtYmVyW11bXSA9IFtdO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA2OyBpKyspIHtcbiAgICAgICAgY29uc3QgdnggPSBjZW50cm9pZFswXSArIHIgKiBIZXhiaW5WZXJ0aWNlc1tpXVswXSArIG94O1xuICAgICAgICBjb25zdCB2eSA9IGNlbnRyb2lkWzFdICsgciAqIEhleGJpblZlcnRpY2VzW2ldWzFdICsgb3k7XG4gICAgICAgIG91dGxpbmUucHVzaChhZ2dyZWdhdG9yVmlld3BvcnQudW5wcm9qZWN0RmxhdChbdngsIHZ5XSkpO1xuICAgICAgfVxuICAgICAgb3V0bGluZS5wdXNoKG91dGxpbmVbMF0pO1xuICAgICAgKGluZm8ub2JqZWN0IGFzIEhleFBpY2tpbmdPYmplY3QpLmNlbGxPdXRsaW5lID0gb3V0bGluZTtcbiAgICB9XG4gICAgcmV0dXJuIGluZm87XG4gIH1cbn1cblxuU2NhbGVFbmhhbmNlZEhleGFnb25MYXllci5sYXllck5hbWUgPSAnU2NhbGVFbmhhbmNlZEhleGFnb25MYXllcic7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsa0JBQUEsR0FBQUMsT0FBQTtBQUVBLElBQUFDLGlCQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxlQUFBLEdBQUFGLE9BQUE7QUFHeUMsU0FBQUcsUUFBQUMsQ0FBQSxFQUFBQyxDQUFBLFFBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxJQUFBLENBQUFKLENBQUEsT0FBQUcsTUFBQSxDQUFBRSxxQkFBQSxRQUFBQyxDQUFBLEdBQUFILE1BQUEsQ0FBQUUscUJBQUEsQ0FBQUwsQ0FBQSxHQUFBQyxDQUFBLEtBQUFLLENBQUEsR0FBQUEsQ0FBQSxDQUFBQyxNQUFBLFdBQUFOLENBQUEsV0FBQUUsTUFBQSxDQUFBSyx3QkFBQSxDQUFBUixDQUFBLEVBQUFDLENBQUEsRUFBQVEsVUFBQSxPQUFBUCxDQUFBLENBQUFRLElBQUEsQ0FBQUMsS0FBQSxDQUFBVCxDQUFBLEVBQUFJLENBQUEsWUFBQUosQ0FBQTtBQUFBLFNBQUFVLGNBQUFaLENBQUEsYUFBQUMsQ0FBQSxNQUFBQSxDQUFBLEdBQUFZLFNBQUEsQ0FBQUMsTUFBQSxFQUFBYixDQUFBLFVBQUFDLENBQUEsV0FBQVcsU0FB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
@@ -160,4 +160,4 @@ Object.keys(_globe).forEach(function (key) {
160
160
  });
161
161
  });
162
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,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZEJ1aWxkaW5nTGF5ZXIiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9jbHVzdGVyTGF5ZXIiLCJfZW5oYW5jZWRDb2x1bW5MYXllciIsIl9lbmhhbmNlZENwdUdyaWRMYXllciIsIl9lbmhhbmNlZEhleGFnb25MYXllciIsIl9saW5lTGF5ZXIiLCJfc3ZnSWNvbkxheWVyIiwiX2ZpbHRlckFycm93TGF5ZXIiLCJfcmFzdGVyTGF5ZXIiLCJfcmFzdGVyTWVzaExheWVyIiwiX1Jhc3RlcldlYkdMIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJleHBvcnRzIiwiUmFzdGVyV2ViR0wiLCJfd21zTGF5ZXIiLCJfc2hhZGVyVXRpbHMiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIl9leHBvcnROYW1lcyIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImdldCIsIl9hZ2dyZWdhdGlvblV0aWxzIiwiX3R5cGVzIiwiX2RCdWlsZGluZ1V0aWxzIiwiX2dsb2JlIiwiZSIsInQiLCJXZWFrTWFwIiwiciIsIm4iLCJfX2VzTW9kdWxlIiwibyIsImkiLCJmIiwiX19wcm90b19fIiwiX3R5cGVvZiIsImhhcyIsInNldCIsIl90IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIl0sInNvdXJjZXMiOlsiLi4vc3JjL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmV4cG9ydCB7ZGVmYXVsdCBhcyBUaHJlZURCdWlsZGluZ0xheWVyfSBmcm9tICcuLzNkLWJ1aWxkaW5nLWxheWVyLzNkLWJ1aWxkaW5nLWxheWVyJztcblxuZXhwb3J0IHtkZWZhdWx0IGFzIERlY2tHTENsdXN0ZXJMYXllcn0gZnJvbSAnLi9jbHVzdGVyLWxheWVyL2NsdXN0ZXItbGF5ZXInO1xuXG5leHBvcnQge2RlZmF1bHQgYXMgRW5oYW5jZWRDb2x1bW5MYXllcn0gZnJvbSAnLi9jb2x1bW4tbGF5ZXIvZW5oYW5jZWQtY29sdW1uLWxheWVyJztcblxuZXhwb3J0IHtkZWZhdWx0IGFzIEVuaGFuY2VkR3JpZExheWVyfSBmcm9tICcuL2dyaWQtbGF5ZXIvZW5oYW5jZWQtY3B1LWdyaWQtbGF5ZXInO1xuXG5leHBvcnQge2RlZmF1bHQgYXMgRW5oYW5jZWRIZXhhZ29uTGF5ZXJ9IGZyb20gJy4vaGV4YWdvbi1sYXllci9lbmhhbmNlZC1oZXhhZ29uLWxheWVyJztcbmV4cG9ydCB7ZGVmYXVsdCBhcyBFbmhhbmNlZExpbmVMYXllcn0gZnJvbSAnLi9saW5lLWxheWVyL2xpbmUtbGF5ZXInO1xuZXhwb3J0IHtkZWZhdWx0IGFzIFN2Z0ljb25MYXllcn0gZnJvbSAnLi9zdmctaWNvbi1sYXllci9zdmctaWNvbi1sYXllcic7XG5leHBvcnQge2RlZmF1bHQgYXMgRmlsdGVyQXJyb3dFeHRlbnNpb259IGZyb20gJy4vZGVja2dsLWV4dGVuc2lvbnMvZmlsdGVyLWFycm93LWxheWVyJztcblxuZXhwb3J0IHtkZWZhdWx0IGFzIFJhc3RlckxheWVyfSBmcm9tICcuL3Jhc3Rlci9yYXN0ZXItbGF5ZXIvcmFzdGVyLWxheWVyJztcbmV4cG9ydCB7ZGVmYXVsdCBhcyBSYXN0ZXJNZXNoTGF5ZXJ9IGZyb20gJy4vcmFzdGVyL3Jhc3Rlci1tZXNoLWxheWVyL3Jhc3Rlci1tZXNoLWxheWVyJztcbmV4cG9ydCAqIGFzIFJhc3RlcldlYkdMIGZyb20gJy4vcmFzdGVyL3dlYmdsJztcblxuZXhwb3J0IHtkZWZhdWx0IGFzIFdNU0xheWVyfSBmcm9tICcuL3dtcy93bXMtbGF5ZXInO1xuXG5leHBvcnQgKiBmcm9tICcuL2xheWVyLXV0aWxzL3NoYWRlci11dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL2xheWVyLXV0aWxzL2FnZ3JlZ2F0aW9uLXV0aWxzJztcblxuZXhwb3J0ICogZnJvbSAnLi8zZC1idWlsZGluZy1sYXllci90eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuLzNkLWJ1aWxkaW5nLWxheWVyLzNkLWJ1aWxkaW5nLXV0aWxzJztcblxuZXhwb3J0ICogZnJvbSAnLi9nbG9iZSc7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxlQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxhQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBRSxvQkFBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUcscUJBQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFJLHFCQUFBLEdBQUFMLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSyxVQUFBLEdBQUFOLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTSxhQUFBLEdBQUFQLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTyxpQkFBQSxHQUFBUixzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQVEsWUFBQSxHQUFBVCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVMsZ0JBQUEsR0FBQVYsc0JBQUEsQ0FBQUMsT0FBQTtBQUF3RixJQUFBVSxZQUFBLEdBQUFDLHVCQUFBLENBQUFYLE9BQUE7QUFBQVksT0FBQSxDQUFBQyxXQUFBLEdBQUFILFlBQUE7QUFHeEYsSUFBQUksU0FBQSxHQUFBZixzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQWUsWUFBQSxHQUFBZixPQUFBO0FBQUFnQixNQUFBLENBQUFDLElBQUEsQ0FBQUYsWUFBQSxFQUFBRyxPQUFBLFdBQUFDLEdBQUE7RUFBQSxJQUFBQSxHQUFBLGtCQUFBQSxHQUFBO0VBQUEsSUFBQUgsTUFBQSxDQUFBSSxTQUFBLENBQUFDLGNBQUEsQ0FBQUMsSUFBQSxDQUFBQyxZQUFBLEVBQUFKLEdBQUE7RUFBQSxJQUFBQSxHQUFBLElBQUFQLE9BQUEsSUFBQUEsT0FBQSxDQUFBTyxHQUFBLE1BQUFKLFlBQUEsQ0FBQUksR0FBQTtFQUFBSCxNQUFBLENBQUFRLGNBQUEsQ0FBQVosT0FBQSxFQUFBTyxHQUFBO0lBQUFNLFVBQUE7SUFBQUMsR0FBQSxXQUFBQSxJQUFBO01BQUEsT0FBQVgsWUFBQSxDQUFBSSxHQUFBO0lBQUE7RUFBQTtBQUFBO0FBQ0EsSUFBQVEsaUJBQUEsR0FBQTNCLE9BQUE7QUFBQWdCLE1BQUEsQ0FBQUMsSUFBQSxDQUFBVSxpQkFBQSxFQUFBVCxPQUFBLFdBQUFDLEdBQUE7RUFBQSxJQUFBQSxHQUFBLGtCQUFBQSxHQUFBO0VBQUEsSUFBQUgsTUFBQSxDQUFBSSxTQUFBLENBQUFDLGNBQUEsQ0FBQUMsSUFBQSxDQUFBQyxZQUFBLEVBQUFKLEdBQUE7RUFBQSxJQUFBQSxHQUFBLElBQUFQLE9BQUEsSUFBQUEsT0FBQSxDQUFBTyxHQUFBLE1BQUFRLGlCQUFBLENBQUFSLEdBQUE7RUFBQUgsTUFBQSxDQUFBUSxjQUFBLENBQUFaLE9BQUEsRUFBQU8sR0FBQTtJQUFBTSxVQUFBO0lBQUFDLEdBQUEsV0FBQUEsSUFBQTtNQUFBLE9BQUFDLGlCQUFBLENBQUFSLEdBQUE7SUFBQTtFQUFBO0FBQUE7QUFFQSxJQUFBUyxNQUFBLEdBQUE1QixPQUFBO0FBQUFnQixNQUFBLENBQUFDLElBQUEsQ0FBQVcsTUFBQSxFQUFBVixPQUFBLFdBQUFDLEdBQUE7RUFBQSxJQUFBQSxHQUFBLGtCQUFBQSxHQUFBO0VBQUEsSUFBQUgsTUFBQSxDQUFBSSxTQUFBLENBQUFDLGNBQUEsQ0FBQUMsSUFBQSxDQUFBQyxZQUFBLEVBQUFKLEdBQUE7RUFBQSxJQUFBQSxHQUFBLElBQUFQLE9BQUEsSUFBQUEsT0FBQSxDQUFBTyxHQUFBLE1BQUFTLE1BQUEsQ0FBQVQsR0FBQTtFQUFBSCxNQUFBLENBQUFRLGNBQUEsQ0FBQVosT0FBQSxFQUFBTyxHQUFBO0lBQUFNLFVBQUE7SUFBQUMsR0FBQSxXQUFBQSxJQUFBO01BQUEsT0FBQUUsTUFBQSxDQUFBVCxHQUFBO0lBQUE7RUFBQTtBQUFBO0FBQ0EsSUFBQVUsZUFBQSxHQUFBN0IsT0FBQTtBQUFBZ0IsTUFBQSxDQUFBQyxJQUFBLENBQUFZLGVBQUEsRUFBQVgsT0FBQSxXQUFBQyxHQUFBO0VBQUEsSUFBQUEsR0FBQSxrQkFBQUEsR0FBQTtFQUFBLElBQUFILE1BQUEsQ0FBQUksU0FBQSxDQUFBQyxjQUFBLENBQUFDLElBQUEsQ0FBQUMsWUFBQSxFQUFBSixHQUFBO0VBQUEsSUFBQUEsR0FBQSxJQUFBUCxPQUFBLElBQUFBLE9BQUEsQ0FBQU8sR0FBQSxNQUFBVSxlQUFBLENBQUFWLEdBQUE7RUFBQUgsTUFBQSxDQUFBUSxjQUFBLENBQUFaLE9BQUEsRUFBQU8sR0FBQTtJQUFBTSxVQUFBO0lBQUFDLEdBQUEsV0FBQUEsSUFBQTtNQUFBLE9BQUFHLGVBQUEsQ0FBQVYsR0FBQTtJQUFBO0VBQUE7QUFBQTtBQUVBLElBQUFXLE1BQUEsR0FBQTlCLE9BQUE7QUFBQWdCLE1BQUEsQ0FBQUMsSUFBQSxDQUFBYSxNQUFBLEVBQUFaLE9BQUEsV0FBQUMsR0FBQTtFQUFBLElBQUFBLEdBQUEsa0JBQUFBLEdBQUE7RUFBQSxJQUFBSCxNQUFBLENBQUFJLFNBQUEsQ0FBQUMsY0FBQSxDQUFBQyxJQUFBLENBQUFDLFlBQUEsRUFBQUosR0FBQTtFQUFBLElBQUFBLEdBQUEsSUFBQVAsT0FBQSxJQUFBQSxPQUFBLENBQUFPLEdBQUEsTUFBQVcsTUFBQSxDQUFBWCxHQUFBO0VBQUFILE1BQUEsQ0FBQVEsY0FBQSxDQUFBWixPQUFBLEVBQUFPLEdBQUE7SUFBQU0sVUFBQTtJQUFBQyxHQUFBLFdBQUFBLElBQUE7TUFBQSxPQUFBSSxNQUFBLENBQUFYLEdBQUE7SUFBQTtFQUFBO0FBQUE7QUFBd0IsU0FBQVIsd0JBQUFvQixDQUFBLEVBQUFDLENBQUEsNkJBQUFDLE9BQUEsTUFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBdEIsdUJBQUEsWUFBQUEsd0JBQUFvQixDQUFBLEVBQUFDLENBQUEsU0FBQUEsQ0FBQSxJQUFBRCxDQUFBLElBQUFBLENBQUEsQ0FBQUssVUFBQSxTQUFBTCxDQUFBLE1BQUFNLENBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBLEtBQUFDLFNBQUEsbUJBQUFULENBQUEsaUJBQUFBLENBQUEsZ0JBQUFVLE9BQUEsQ0FBQVYsQ0FBQSwwQkFBQUEsQ0FBQSxTQUFBUSxDQUFBLE1BQUFGLENBQUEsR0FBQUwsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsUUFBQUcsQ0FBQSxDQUFBSyxHQUFBLENBQUFYLENBQUEsVUFBQU0sQ0FBQSxDQUFBWCxHQUFBLENBQUFLLENBQUEsR0FBQU0sQ0FBQSxDQUFBTSxHQUFBLENBQUFaLENBQUEsRUFBQVEsQ0FBQSxjQUFBSyxFQUFBLElBQUFiLENBQUEsZ0JBQUFhLEVBQUEsT0FBQXZCLGNBQUEsQ0FBQUMsSUFBQSxDQUFBUyxDQUFBLEVBQUFhLEVBQUEsT0FBQU4sQ0FBQSxJQUFBRCxDQUFBLEdBQUFyQixNQUFBLENBQUFRLGNBQUEsS0FBQVIsTUFBQSxDQUFBNkIsd0JBQUEsQ0FBQWQsQ0FBQSxFQUFBYSxFQUFBLE9BQUFOLENBQUEsQ0FBQVosR0FBQSxJQUFBWSxDQUFBLENBQUFLLEdBQUEsSUFBQU4sQ0FBQSxDQUFBRSxDQUFBLEVBQUFLLEVBQUEsRUFBQU4sQ0FBQSxJQUFBQyxDQUFBLENBQUFLLEVBQUEsSUFBQWIsQ0FBQSxDQUFBYSxFQUFBLFdBQUFMLENBQUEsS0FBQVIsQ0FBQSxFQUFBQyxDQUFBIiwiaWdub3JlTGlzdCI6W119
163
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZEJ1aWxkaW5nTGF5ZXIiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9jbHVzdGVyTGF5ZXIiLCJfZW5oYW5jZWRDb2x1bW5MYXllciIsIl9lbmhhbmNlZENwdUdyaWRMYXllciIsIl9lbmhhbmNlZEhleGFnb25MYXllciIsIl9saW5lTGF5ZXIiLCJfc3ZnSWNvbkxheWVyIiwiX2ZpbHRlckFycm93TGF5ZXIiLCJfcmFzdGVyTGF5ZXIiLCJfcmFzdGVyTWVzaExheWVyIiwiX1Jhc3RlcldlYkdMIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJleHBvcnRzIiwiUmFzdGVyV2ViR0wiLCJfd21zTGF5ZXIiLCJfc2hhZGVyVXRpbHMiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIl9leHBvcnROYW1lcyIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImdldCIsIl9hZ2dyZWdhdGlvblV0aWxzIiwiX3R5cGVzIiwiX2RCdWlsZGluZ1V0aWxzIiwiX2dsb2JlIiwiZSIsInQiLCJXZWFrTWFwIiwiciIsIm4iLCJfX2VzTW9kdWxlIiwibyIsImkiLCJmIiwiX19wcm90b19fIiwiX3R5cGVvZiIsImhhcyIsInNldCIsIl90IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmV4cG9ydCB7ZGVmYXVsdCBhcyBUaHJlZURCdWlsZGluZ0xheWVyfSBmcm9tICcuLzNkLWJ1aWxkaW5nLWxheWVyLzNkLWJ1aWxkaW5nLWxheWVyJztcblxuZXhwb3J0IHtkZWZhdWx0IGFzIERlY2tHTENsdXN0ZXJMYXllcn0gZnJvbSAnLi9jbHVzdGVyLWxheWVyL2NsdXN0ZXItbGF5ZXInO1xuXG5leHBvcnQge2RlZmF1bHQgYXMgRW5oYW5jZWRDb2x1bW5MYXllcn0gZnJvbSAnLi9jb2x1bW4tbGF5ZXIvZW5oYW5jZWQtY29sdW1uLWxheWVyJztcblxuZXhwb3J0IHtkZWZhdWx0IGFzIEVuaGFuY2VkR3JpZExheWVyfSBmcm9tICcuL2dyaWQtbGF5ZXIvZW5oYW5jZWQtY3B1LWdyaWQtbGF5ZXInO1xuXG5leHBvcnQge2RlZmF1bHQgYXMgRW5oYW5jZWRIZXhhZ29uTGF5ZXJ9IGZyb20gJy4vaGV4YWdvbi1sYXllci9lbmhhbmNlZC1oZXhhZ29uLWxheWVyJztcbmV4cG9ydCB7ZGVmYXVsdCBhcyBFbmhhbmNlZExpbmVMYXllcn0gZnJvbSAnLi9saW5lLWxheWVyL2xpbmUtbGF5ZXInO1xuZXhwb3J0IHtkZWZhdWx0IGFzIFN2Z0ljb25MYXllcn0gZnJvbSAnLi9zdmctaWNvbi1sYXllci9zdmctaWNvbi1sYXllcic7XG5leHBvcnQge2RlZmF1bHQgYXMgRmlsdGVyQXJyb3dFeHRlbnNpb259IGZyb20gJy4vZGVja2dsLWV4dGVuc2lvbnMvZmlsdGVyLWFycm93LWxheWVyJztcblxuZXhwb3J0IHtkZWZhdWx0IGFzIFJhc3RlckxheWVyfSBmcm9tICcuL3Jhc3Rlci9yYXN0ZXItbGF5ZXIvcmFzdGVyLWxheWVyJztcbmV4cG9ydCB7ZGVmYXVsdCBhcyBSYXN0ZXJNZXNoTGF5ZXJ9IGZyb20gJy4vcmFzdGVyL3Jhc3Rlci1tZXNoLWxheWVyL3Jhc3Rlci1tZXNoLWxheWVyJztcbmV4cG9ydCAqIGFzIFJhc3RlcldlYkdMIGZyb20gJy4vcmFzdGVyL3dlYmdsJztcblxuZXhwb3J0IHtkZWZhdWx0IGFzIFdNU0xheWVyfSBmcm9tICcuL3dtcy93bXMtbGF5ZXInO1xuXG5leHBvcnQgKiBmcm9tICcuL2xheWVyLXV0aWxzL3NoYWRlci11dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL2xheWVyLXV0aWxzL2FnZ3JlZ2F0aW9uLXV0aWxzJztcblxuZXhwb3J0ICogZnJvbSAnLi8zZC1idWlsZGluZy1sYXllci90eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuLzNkLWJ1aWxkaW5nLWxheWVyLzNkLWJ1aWxkaW5nLXV0aWxzJztcblxuZXhwb3J0ICogZnJvbSAnLi9nbG9iZSc7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxlQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxhQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBRSxvQkFBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUcscUJBQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFJLHFCQUFBLEdBQUFMLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSyxVQUFBLEdBQUFOLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTSxhQUFBLEdBQUFQLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTyxpQkFBQSxHQUFBUixzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQVEsWUFBQSxHQUFBVCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVMsZ0JBQUEsR0FBQVYsc0JBQUEsQ0FBQUMsT0FBQTtBQUF3RixJQUFBVSxZQUFBLEdBQUFDLHVCQUFBLENBQUFYLE9BQUE7QUFBQVksT0FBQSxDQUFBQyxXQUFBLEdBQUFILFlBQUE7QUFHeEYsSUFBQUksU0FBQSxHQUFBZixzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQWUsWUFBQSxHQUFBZixPQUFBO0FBQUFnQixNQUFBLENBQUFDLElBQUEsQ0FBQUYsWUFBQSxFQUFBRyxPQUFBLFdBQUFDLEdBQUE7RUFBQSxJQUFBQSxHQUFBLGtCQUFBQSxHQUFBO0VBQUEsSUFBQUgsTUFBQSxDQUFBSSxTQUFBLENBQUFDLGNBQUEsQ0FBQUMs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