@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.
- package/dist/cjs/3d-building-layer/3d-building-layer.js +66 -0
- package/dist/cjs/3d-building-layer/3d-building-utils.js +166 -0
- package/dist/cjs/3d-building-layer/types.js +6 -0
- package/dist/cjs/cluster-layer/cluster-layer.js +292 -0
- package/dist/cjs/column-layer/enhanced-column-layer.js +160 -0
- package/dist/{deckgl-extensions → cjs/deckgl-extensions}/filter-arrow-layer.js +1 -1
- package/dist/cjs/deckgl-extensions/filter-shader-module.js +26 -0
- package/dist/cjs/globe/atmosphere-layer.js +341 -0
- package/dist/cjs/globe/enhanced-multi-icon-layer.js +63 -0
- package/dist/cjs/globe/globe-depth-disk-layer.js +145 -0
- package/dist/cjs/globe/globe-layers.js +574 -0
- package/dist/cjs/globe/globe-stars-layer.js +99 -0
- package/dist/cjs/globe/globe-stars-layer.spec.js +42 -0
- package/dist/cjs/globe/globe-view.js +404 -0
- package/dist/{globe → cjs/globe}/index.js +19 -1
- package/dist/cjs/globe/mvt-label-layer.js +190 -0
- package/dist/cjs/grid-layer/enhanced-cpu-grid-layer.js +116 -0
- package/dist/cjs/hexagon-layer/enhanced-hexagon-layer.js +134 -0
- package/dist/{index.js → cjs/index.js} +1 -1
- package/dist/cjs/layer-utils/aggregation-utils.js +181 -0
- package/dist/cjs/layer-utils/cluster-utils.js +93 -0
- package/dist/cjs/layer-utils/cpu-aggregator.js +798 -0
- package/dist/cjs/layer-utils/globe-cell-utils.js +173 -0
- package/dist/cjs/layer-utils/shader-utils.js +38 -0
- package/dist/cjs/line-layer/line-layer.js +95 -0
- package/dist/cjs/raster/images.js +271 -0
- package/dist/cjs/raster/pipeline-validation-patch.js +101 -0
- package/dist/cjs/raster/raster-layer/raster-layer-shaders.js +163 -0
- package/dist/cjs/raster/raster-layer/raster-layer-webgl1.fs.js +10 -0
- package/dist/cjs/raster/raster-layer/raster-layer-webgl1.vs.js +10 -0
- package/dist/cjs/raster/raster-layer/raster-layer-webgl2.fs.js +10 -0
- package/dist/cjs/raster/raster-layer/raster-layer-webgl2.vs.js +10 -0
- package/dist/cjs/raster/raster-layer/raster-layer.js +287 -0
- package/dist/cjs/raster/raster-mesh-layer/raster-mesh-layer-shaders.js +38 -0
- package/dist/cjs/raster/raster-mesh-layer/raster-mesh-layer-webgl1.fs.js +10 -0
- package/dist/cjs/raster/raster-mesh-layer/raster-mesh-layer-webgl1.vs.js +10 -0
- package/dist/cjs/raster/raster-mesh-layer/raster-mesh-layer-webgl2.fs.js +10 -0
- package/dist/cjs/raster/raster-mesh-layer/raster-mesh-layer-webgl2.vs.js +10 -0
- package/dist/cjs/raster/raster-mesh-layer/raster-mesh-layer.js +321 -0
- package/dist/cjs/raster/raster-processing-uniforms.js +124 -0
- package/dist/cjs/raster/types.js +6 -0
- package/dist/cjs/raster/util.js +139 -0
- package/dist/cjs/raster/webgl/color/colormap.js +45 -0
- package/dist/cjs/raster/webgl/color/filter.js +58 -0
- package/dist/cjs/raster/webgl/color/gamma-contrast.js +68 -0
- package/dist/cjs/raster/webgl/color/linear-rescale.js +35 -0
- package/dist/cjs/raster/webgl/color/saturation.js +42 -0
- package/dist/cjs/raster/webgl/color/sigmoidal-contrast.js +68 -0
- package/dist/{raster → cjs/raster}/webgl/index.js +1 -1
- package/dist/cjs/raster/webgl/pansharpen/pansharpen-brovey.js +46 -0
- package/dist/cjs/raster/webgl/spectral-indices/evi.js +26 -0
- package/dist/cjs/raster/webgl/spectral-indices/msavi.js +25 -0
- package/dist/cjs/raster/webgl/spectral-indices/normalized-difference.js +19 -0
- package/dist/cjs/raster/webgl/spectral-indices/savi.js +21 -0
- package/dist/cjs/raster/webgl/texture/combine-bands.js +65 -0
- package/dist/cjs/raster/webgl/texture/mask.js +50 -0
- package/dist/cjs/raster/webgl/texture/reorder-bands.js +72 -0
- package/dist/cjs/raster/webgl/texture/rgba-image.js +34 -0
- package/dist/cjs/raster/webgl/types.js +6 -0
- package/dist/cjs/svg-icon-layer/scatterplot-icon-layer.js +88 -0
- package/dist/cjs/svg-icon-layer/svg-icon-layer.js +104 -0
- package/dist/cjs/wms/wms-layer.js +624 -0
- package/dist/esm/3d-building-layer/3d-building-layer.js +62 -0
- package/dist/esm/3d-building-layer/3d-building-utils.js +157 -0
- package/dist/esm/3d-building-layer/types.js +3 -0
- package/dist/esm/cluster-layer/cluster-layer.js +286 -0
- package/dist/esm/column-layer/enhanced-column-layer.js +156 -0
- package/dist/esm/deckgl-extensions/filter-arrow-layer.js +64 -0
- package/dist/esm/deckgl-extensions/filter-shader-module.js +20 -0
- package/dist/esm/globe/atmosphere-layer.js +335 -0
- package/dist/esm/globe/enhanced-multi-icon-layer.js +60 -0
- package/dist/esm/globe/globe-depth-disk-layer.js +140 -0
- package/dist/esm/globe/globe-layers.js +566 -0
- package/dist/esm/globe/globe-stars-layer.js +92 -0
- package/dist/esm/globe/globe-stars-layer.spec.js +40 -0
- package/dist/esm/globe/globe-view.js +398 -0
- package/dist/esm/globe/index.js +26 -0
- package/dist/esm/globe/mvt-label-layer.js +187 -0
- package/dist/esm/grid-layer/enhanced-cpu-grid-layer.js +112 -0
- package/dist/esm/hexagon-layer/enhanced-hexagon-layer.js +130 -0
- package/dist/esm/index.js +22 -0
- package/dist/esm/layer-utils/aggregation-utils.js +172 -0
- package/dist/esm/layer-utils/cluster-utils.js +86 -0
- package/dist/esm/layer-utils/cpu-aggregator.js +788 -0
- package/dist/esm/layer-utils/globe-cell-utils.js +167 -0
- package/dist/esm/layer-utils/shader-utils.js +32 -0
- package/dist/esm/line-layer/line-layer.js +91 -0
- package/dist/esm/raster/images.js +267 -0
- package/dist/esm/raster/pipeline-validation-patch.js +94 -0
- package/dist/esm/raster/raster-layer/raster-layer-shaders.js +153 -0
- package/dist/esm/raster/raster-layer/raster-layer-webgl1.fs.js +5 -0
- package/dist/esm/raster/raster-layer/raster-layer-webgl1.vs.js +5 -0
- package/dist/esm/raster/raster-layer/raster-layer-webgl2.fs.js +5 -0
- package/dist/esm/raster/raster-layer/raster-layer-webgl2.vs.js +5 -0
- package/dist/esm/raster/raster-layer/raster-layer.js +283 -0
- package/dist/esm/raster/raster-mesh-layer/raster-mesh-layer-shaders.js +30 -0
- package/dist/esm/raster/raster-mesh-layer/raster-mesh-layer-webgl1.fs.js +5 -0
- package/dist/esm/raster/raster-mesh-layer/raster-mesh-layer-webgl1.vs.js +5 -0
- package/dist/esm/raster/raster-mesh-layer/raster-mesh-layer-webgl2.fs.js +5 -0
- package/dist/esm/raster/raster-mesh-layer/raster-mesh-layer-webgl2.vs.js +5 -0
- package/dist/esm/raster/raster-mesh-layer/raster-mesh-layer.js +318 -0
- package/dist/esm/raster/raster-processing-uniforms.js +118 -0
- package/dist/esm/raster/types.js +3 -0
- package/dist/esm/raster/util.js +134 -0
- package/dist/esm/raster/webgl/color/colormap.js +39 -0
- package/dist/esm/raster/webgl/color/filter.js +52 -0
- package/dist/esm/raster/webgl/color/gamma-contrast.js +62 -0
- package/dist/esm/raster/webgl/color/linear-rescale.js +29 -0
- package/dist/esm/raster/webgl/color/saturation.js +36 -0
- package/dist/esm/raster/webgl/color/sigmoidal-contrast.js +62 -0
- package/dist/esm/raster/webgl/index.js +26 -0
- package/dist/esm/raster/webgl/pansharpen/pansharpen-brovey.js +40 -0
- package/dist/esm/raster/webgl/spectral-indices/evi.js +20 -0
- package/dist/esm/raster/webgl/spectral-indices/msavi.js +19 -0
- package/dist/esm/raster/webgl/spectral-indices/normalized-difference.js +13 -0
- package/dist/esm/raster/webgl/spectral-indices/savi.js +15 -0
- package/dist/esm/raster/webgl/texture/combine-bands.js +58 -0
- package/dist/esm/raster/webgl/texture/mask.js +44 -0
- package/dist/esm/raster/webgl/texture/reorder-bands.js +65 -0
- package/dist/esm/raster/webgl/texture/rgba-image.js +28 -0
- package/dist/esm/raster/webgl/types.js +3 -0
- package/dist/esm/svg-icon-layer/scatterplot-icon-layer.js +84 -0
- package/dist/esm/svg-icon-layer/svg-icon-layer.js +101 -0
- package/dist/esm/wms/wms-layer.js +619 -0
- package/dist/globe/atmosphere-layer.d.ts +22 -1
- package/dist/globe/globe-stars-layer.d.ts +5 -0
- package/dist/globe/globe-stars-layer.spec.d.ts +1 -0
- package/dist/globe/index.d.ts +2 -2
- package/dist/wms/wms-layer.d.ts +8 -0
- package/package.json +19 -10
- package/dist/3d-building-layer/3d-building-layer.js +0 -66
- package/dist/3d-building-layer/3d-building-utils.js +0 -166
- package/dist/3d-building-layer/types.js +0 -6
- package/dist/cluster-layer/cluster-layer.js +0 -292
- package/dist/column-layer/enhanced-column-layer.js +0 -160
- package/dist/deckgl-extensions/filter-shader-module.js +0 -26
- package/dist/globe/atmosphere-layer.js +0 -220
- package/dist/globe/enhanced-multi-icon-layer.js +0 -63
- package/dist/globe/globe-depth-disk-layer.js +0 -145
- package/dist/globe/globe-layers.js +0 -569
- package/dist/globe/globe-stars-layer.js +0 -69
- package/dist/globe/globe-view.js +0 -404
- package/dist/globe/mvt-label-layer.js +0 -190
- package/dist/grid-layer/enhanced-cpu-grid-layer.js +0 -116
- package/dist/hexagon-layer/enhanced-hexagon-layer.js +0 -134
- package/dist/layer-utils/aggregation-utils.js +0 -181
- package/dist/layer-utils/cluster-utils.js +0 -93
- package/dist/layer-utils/cpu-aggregator.js +0 -798
- package/dist/layer-utils/globe-cell-utils.js +0 -173
- package/dist/layer-utils/shader-utils.js +0 -38
- package/dist/line-layer/line-layer.js +0 -95
- package/dist/raster/images.js +0 -271
- package/dist/raster/pipeline-validation-patch.js +0 -101
- package/dist/raster/raster-layer/raster-layer-shaders.js +0 -163
- package/dist/raster/raster-layer/raster-layer-webgl1.fs.js +0 -10
- package/dist/raster/raster-layer/raster-layer-webgl1.vs.js +0 -10
- package/dist/raster/raster-layer/raster-layer-webgl2.fs.js +0 -10
- package/dist/raster/raster-layer/raster-layer-webgl2.vs.js +0 -10
- package/dist/raster/raster-layer/raster-layer.js +0 -287
- package/dist/raster/raster-mesh-layer/matrix.d.ts +0 -4
- package/dist/raster/raster-mesh-layer/matrix.js +0 -18
- package/dist/raster/raster-mesh-layer/raster-mesh-layer-shaders.js +0 -38
- package/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl1.fs.js +0 -10
- package/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl1.vs.js +0 -10
- package/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl2.fs.js +0 -10
- package/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl2.vs.js +0 -10
- package/dist/raster/raster-mesh-layer/raster-mesh-layer.js +0 -321
- package/dist/raster/raster-processing-uniforms.js +0 -124
- package/dist/raster/types.js +0 -6
- package/dist/raster/util.js +0 -139
- package/dist/raster/webgl/color/colormap.js +0 -45
- package/dist/raster/webgl/color/filter.js +0 -58
- package/dist/raster/webgl/color/gamma-contrast.js +0 -68
- package/dist/raster/webgl/color/linear-rescale.js +0 -35
- package/dist/raster/webgl/color/saturation.js +0 -42
- package/dist/raster/webgl/color/sigmoidal-contrast.js +0 -68
- package/dist/raster/webgl/pansharpen/pansharpen-brovey.js +0 -46
- package/dist/raster/webgl/spectral-indices/evi.js +0 -26
- package/dist/raster/webgl/spectral-indices/msavi.js +0 -25
- package/dist/raster/webgl/spectral-indices/normalized-difference.js +0 -19
- package/dist/raster/webgl/spectral-indices/savi.js +0 -21
- package/dist/raster/webgl/texture/combine-bands.js +0 -65
- package/dist/raster/webgl/texture/mask.js +0 -50
- package/dist/raster/webgl/texture/reorder-bands.js +0 -72
- package/dist/raster/webgl/texture/rgba-image.js +0 -34
- package/dist/raster/webgl/types.js +0 -6
- package/dist/svg-icon-layer/scatterplot-icon-layer.js +0 -88
- package/dist/svg-icon-layer/svg-icon-layer.js +0 -104
- package/dist/wms/wms-layer.js +0 -594
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
// Copyright contributors to the kepler.gl project
|
|
3
|
+
|
|
4
|
+
// Calculate modified soil-adjusted vegetation index
|
|
5
|
+
// Expected to be ordered:
|
|
6
|
+
// red: Landsat 8 band 5
|
|
7
|
+
// green: Landsat 8 band 4
|
|
8
|
+
//
|
|
9
|
+
// MSAVI = (2 * Band 5 + 1 – sqrt ((2 * Band 5 + 1)^2 – 8 * (Band 5 – Band 4))) / 2
|
|
10
|
+
// https://www.usgs.gov/land-resources/nli/landsat/landsat-modified-soil-adjusted-vegetation-index
|
|
11
|
+
var fs = "float modified_soil_adjusted_vegetation_index_calc(vec4 image) {\n float band5 = image.r;\n float band4 = image.g;\n\n float to_sqrt = ((2. * band5 + 1.) * (2. * band5 + 1.)) - (8. * (band5 - band4));\n return ((2. * band5) + 1. - sqrt(to_sqrt)) / 2.;\n}\n";
|
|
12
|
+
export var modifiedSoilAdjustedVegetationIndex = {
|
|
13
|
+
name: 'modified_soil_adjusted_vegetation_index',
|
|
14
|
+
fs: fs,
|
|
15
|
+
inject: {
|
|
16
|
+
'fs:DECKGL_MUTATE_COLOR': "\n image = vec4(modified_soil_adjusted_vegetation_index_calc(image), 0., 0., 0.);\n "
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmcyIsIm1vZGlmaWVkU29pbEFkanVzdGVkVmVnZXRhdGlvbkluZGV4IiwibmFtZSIsImluamVjdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9yYXN0ZXIvd2ViZ2wvc3BlY3RyYWwtaW5kaWNlcy9tc2F2aS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge1NoYWRlck1vZHVsZX0gZnJvbSAnLi4vdHlwZXMnO1xuXG4vLyBDYWxjdWxhdGUgbW9kaWZpZWQgc29pbC1hZGp1c3RlZCB2ZWdldGF0aW9uIGluZGV4XG4vLyBFeHBlY3RlZCB0byBiZSBvcmRlcmVkOlxuLy8gcmVkOiBMYW5kc2F0IDggYmFuZCA1XG4vLyBncmVlbjogTGFuZHNhdCA4IGJhbmQgNFxuLy9cbi8vIE1TQVZJID0gKDIgKiBCYW5kIDUgKyAxIOKAkyBzcXJ0ICgoMiAqIEJhbmQgNSArIDEpXjIg4oCTIDggKiAoQmFuZCA1IOKAkyBCYW5kIDQpKSkgLyAyXG4vLyBodHRwczovL3d3dy51c2dzLmdvdi9sYW5kLXJlc291cmNlcy9ubGkvbGFuZHNhdC9sYW5kc2F0LW1vZGlmaWVkLXNvaWwtYWRqdXN0ZWQtdmVnZXRhdGlvbi1pbmRleFxuY29uc3QgZnMgPSBgXFxcbmZsb2F0IG1vZGlmaWVkX3NvaWxfYWRqdXN0ZWRfdmVnZXRhdGlvbl9pbmRleF9jYWxjKHZlYzQgaW1hZ2UpIHtcbiAgZmxvYXQgYmFuZDUgPSBpbWFnZS5yO1xuICBmbG9hdCBiYW5kNCA9IGltYWdlLmc7XG5cbiAgZmxvYXQgdG9fc3FydCA9ICgoMi4gKiBiYW5kNSArIDEuKSAqICgyLiAqIGJhbmQ1ICsgMS4pKSAtICg4LiAqIChiYW5kNSAtIGJhbmQ0KSk7XG4gIHJldHVybiAoKDIuICogYmFuZDUpICsgMS4gLSBzcXJ0KHRvX3NxcnQpKSAvIDIuO1xufVxuYDtcblxuZXhwb3J0IGNvbnN0IG1vZGlmaWVkU29pbEFkanVzdGVkVmVnZXRhdGlvbkluZGV4OiBTaGFkZXJNb2R1bGUgPSB7XG4gIG5hbWU6ICdtb2RpZmllZF9zb2lsX2FkanVzdGVkX3ZlZ2V0YXRpb25faW5kZXgnLFxuICBmcyxcbiAgaW5qZWN0OiB7XG4gICAgJ2ZzOkRFQ0tHTF9NVVRBVEVfQ09MT1InOiBgXG4gICAgaW1hZ2UgPSB2ZWM0KG1vZGlmaWVkX3NvaWxfYWRqdXN0ZWRfdmVnZXRhdGlvbl9pbmRleF9jYWxjKGltYWdlKSwgMC4sIDAuLCAwLik7XG4gICAgYFxuICB9XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBTUEsRUFBRSx5UUFRUDtBQUVELE9BQU8sSUFBTUMsbUNBQWlELEdBQUc7RUFDL0RDLElBQUksRUFBRSx5Q0FBeUM7RUFDL0NGLEVBQUUsRUFBRkEsRUFBRTtFQUNGRyxNQUFNLEVBQUU7SUFDTix3QkFBd0I7RUFHMUI7QUFDRixDQUFDIiwiaWdub3JlTGlzdCI6W119
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
// Copyright contributors to the kepler.gl project
|
|
3
|
+
|
|
4
|
+
// Calculate standard normalized difference
|
|
5
|
+
var fs = "float normalized_difference_calc(vec4 image) {\n return ((image.r - image.g) / (image.r + image.g));\n}\n";
|
|
6
|
+
export var normalizedDifference = {
|
|
7
|
+
name: 'normalized_difference',
|
|
8
|
+
fs: fs,
|
|
9
|
+
inject: {
|
|
10
|
+
'fs:DECKGL_MUTATE_COLOR': "\n image = vec4(normalized_difference_calc(image), 0., 0., 0.);\n "
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmcyIsIm5vcm1hbGl6ZWREaWZmZXJlbmNlIiwibmFtZSIsImluamVjdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9yYXN0ZXIvd2ViZ2wvc3BlY3RyYWwtaW5kaWNlcy9ub3JtYWxpemVkLWRpZmZlcmVuY2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtTaGFkZXJNb2R1bGV9IGZyb20gJy4uL3R5cGVzJztcblxuLy8gQ2FsY3VsYXRlIHN0YW5kYXJkIG5vcm1hbGl6ZWQgZGlmZmVyZW5jZVxuY29uc3QgZnMgPSBgXFxcbmZsb2F0IG5vcm1hbGl6ZWRfZGlmZmVyZW5jZV9jYWxjKHZlYzQgaW1hZ2UpIHtcbiAgcmV0dXJuICgoaW1hZ2UuciAtIGltYWdlLmcpIC8gKGltYWdlLnIgKyBpbWFnZS5nKSk7XG59XG5gO1xuXG5leHBvcnQgY29uc3Qgbm9ybWFsaXplZERpZmZlcmVuY2U6IFNoYWRlck1vZHVsZSA9IHtcbiAgbmFtZTogJ25vcm1hbGl6ZWRfZGlmZmVyZW5jZScsXG4gIGZzLFxuICBpbmplY3Q6IHtcbiAgICAnZnM6REVDS0dMX01VVEFURV9DT0xPUic6IGBcbiAgICBpbWFnZSA9IHZlYzQobm9ybWFsaXplZF9kaWZmZXJlbmNlX2NhbGMoaW1hZ2UpLCAwLiwgMC4sIDAuKTtcbiAgICBgXG4gIH1cbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7O0FBSUE7QUFDQSxJQUFNQSxFQUFFLCtHQUlQO0FBRUQsT0FBTyxJQUFNQyxvQkFBa0MsR0FBRztFQUNoREMsSUFBSSxFQUFFLHVCQUF1QjtFQUM3QkYsRUFBRSxFQUFGQSxFQUFFO0VBQ0ZHLE1BQU0sRUFBRTtJQUNOLHdCQUF3QjtFQUcxQjtBQUNGLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
// Copyright contributors to the kepler.gl project
|
|
3
|
+
|
|
4
|
+
// Calculate soil-adjusted vegetation index
|
|
5
|
+
// SAVI = ((Band 5 – Band 4) / (Band 5 + Band 4 + 0.5)) * (1.5).
|
|
6
|
+
// https://www.usgs.gov/land-resources/nli/landsat/landsat-soil-adjusted-vegetation-index
|
|
7
|
+
var fs = "float soil_adjusted_vegetation_index_calc(vec4 image) {\n float band5 = image.r;\n float band4 = image.g;\n\n float numerator = band5 - band4;\n float denominator = (band5 + band4 + 0.5) * 1.5;\n return numerator / denominator;\n}\n";
|
|
8
|
+
export var soilAdjustedVegetationIndex = {
|
|
9
|
+
name: 'soil_adjusted_vegetation_index',
|
|
10
|
+
fs: fs,
|
|
11
|
+
inject: {
|
|
12
|
+
'fs:DECKGL_MUTATE_COLOR': "\n image = vec4(soil_adjusted_vegetation_index_calc(image), 0., 0., 0.);\n "
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmcyIsInNvaWxBZGp1c3RlZFZlZ2V0YXRpb25JbmRleCIsIm5hbWUiLCJpbmplY3QiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvcmFzdGVyL3dlYmdsL3NwZWN0cmFsLWluZGljZXMvc2F2aS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge1NoYWRlck1vZHVsZX0gZnJvbSAnLi4vdHlwZXMnO1xuXG4vLyBDYWxjdWxhdGUgc29pbC1hZGp1c3RlZCB2ZWdldGF0aW9uIGluZGV4XG4vLyBTQVZJID0gKChCYW5kIDUg4oCTIEJhbmQgNCkgLyAoQmFuZCA1ICsgQmFuZCA0ICsgMC41KSkgKiAoMS41KS5cbi8vIGh0dHBzOi8vd3d3LnVzZ3MuZ292L2xhbmQtcmVzb3VyY2VzL25saS9sYW5kc2F0L2xhbmRzYXQtc29pbC1hZGp1c3RlZC12ZWdldGF0aW9uLWluZGV4XG5jb25zdCBmcyA9IGBcXFxuZmxvYXQgc29pbF9hZGp1c3RlZF92ZWdldGF0aW9uX2luZGV4X2NhbGModmVjNCBpbWFnZSkge1xuICBmbG9hdCBiYW5kNSA9IGltYWdlLnI7XG4gIGZsb2F0IGJhbmQ0ID0gaW1hZ2UuZztcblxuICBmbG9hdCBudW1lcmF0b3IgPSBiYW5kNSAtIGJhbmQ0O1xuICBmbG9hdCBkZW5vbWluYXRvciA9IChiYW5kNSArIGJhbmQ0ICsgMC41KSAqIDEuNTtcbiAgcmV0dXJuIG51bWVyYXRvciAvIGRlbm9taW5hdG9yO1xufVxuYDtcblxuZXhwb3J0IGNvbnN0IHNvaWxBZGp1c3RlZFZlZ2V0YXRpb25JbmRleDogU2hhZGVyTW9kdWxlID0ge1xuICBuYW1lOiAnc29pbF9hZGp1c3RlZF92ZWdldGF0aW9uX2luZGV4JyxcbiAgZnMsXG4gIGluamVjdDoge1xuICAgICdmczpERUNLR0xfTVVUQVRFX0NPTE9SJzogYFxuICAgIGltYWdlID0gdmVjNChzb2lsX2FkanVzdGVkX3ZlZ2V0YXRpb25faW5kZXhfY2FsYyhpbWFnZSksIDAuLCAwLiwgMC4pO1xuICAgIGBcbiAgfVxufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7QUFJQTtBQUNBO0FBQ0E7QUFDQSxJQUFNQSxFQUFFLGtQQVNQO0FBRUQsT0FBTyxJQUFNQywyQkFBeUMsR0FBRztFQUN2REMsSUFBSSxFQUFFLGdDQUFnQztFQUN0Q0YsRUFBRSxFQUFGQSxFQUFFO0VBQ0ZHLE1BQU0sRUFBRTtJQUNOLHdCQUF3QjtFQUcxQjtBQUNGLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
|
+
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
3
|
+
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; }
|
|
4
|
+
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) { _defineProperty(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; }
|
|
5
|
+
// SPDX-License-Identifier: MIT
|
|
6
|
+
// Copyright contributors to the kepler.gl project
|
|
7
|
+
|
|
8
|
+
function getUniforms() {
|
|
9
|
+
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
10
|
+
var imageBands = opts.imageBands;
|
|
11
|
+
if (!imageBands || imageBands.length === 0) {
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
var _imageBands = _slicedToArray(imageBands, 4),
|
|
15
|
+
bitmapTextureR = _imageBands[0],
|
|
16
|
+
bitmapTextureG = _imageBands[1],
|
|
17
|
+
bitmapTextureB = _imageBands[2],
|
|
18
|
+
bitmapTextureA = _imageBands[3];
|
|
19
|
+
|
|
20
|
+
// return default values to prevent deck.gl validation warnings.
|
|
21
|
+
// Note: all bands must be set for the shadow effect to work as expected.
|
|
22
|
+
return {
|
|
23
|
+
bitmapTextureR: bitmapTextureR || bitmapTextureR,
|
|
24
|
+
bitmapTextureG: bitmapTextureG || bitmapTextureR,
|
|
25
|
+
bitmapTextureB: bitmapTextureB || bitmapTextureR,
|
|
26
|
+
bitmapTextureA: bitmapTextureA || bitmapTextureR
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
var fs1 = "uniform sampler2D bitmapTextureR;\nuniform sampler2D bitmapTextureG;\nuniform sampler2D bitmapTextureB;\nuniform sampler2D bitmapTextureA;\n";
|
|
30
|
+
var fs2 = "precision mediump float;\nprecision mediump int;\nprecision mediump usampler2D;\n\n#ifdef SAMPLER_TYPE\n uniform SAMPLER_TYPE bitmapTextureR;\n uniform SAMPLER_TYPE bitmapTextureG;\n uniform SAMPLER_TYPE bitmapTextureB;\n uniform SAMPLER_TYPE bitmapTextureA;\n#else\n uniform sampler2D bitmapTextureR;\n uniform sampler2D bitmapTextureG;\n uniform sampler2D bitmapTextureB;\n uniform sampler2D bitmapTextureA;\n#endif\n";
|
|
31
|
+
var combineBands = {
|
|
32
|
+
name: 'combine-bands',
|
|
33
|
+
fs1: fs1,
|
|
34
|
+
fs2: fs2,
|
|
35
|
+
getUniforms: getUniforms,
|
|
36
|
+
defines: {
|
|
37
|
+
SAMPLER_TYPE: 'sampler2D'
|
|
38
|
+
},
|
|
39
|
+
inject: {
|
|
40
|
+
'fs:DECKGL_CREATE_COLOR': "\n float channel1 = float(texture2D(bitmapTextureR, coord).r);\n float channel2 = float(texture2D(bitmapTextureG, coord).r);\n float channel3 = float(texture2D(bitmapTextureB, coord).r);\n float channel4 = float(texture2D(bitmapTextureA, coord).r);\n\n image = vec4(channel1, channel2, channel3, channel4);\n "
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
export var combineBandsFloat = _objectSpread(_objectSpread({}, combineBands), {}, {
|
|
44
|
+
name: 'combine-bands-float'
|
|
45
|
+
});
|
|
46
|
+
export var combineBandsUint = _objectSpread(_objectSpread({}, combineBands), {}, {
|
|
47
|
+
name: 'combine-bands-uint',
|
|
48
|
+
defines: {
|
|
49
|
+
SAMPLER_TYPE: 'usampler2D'
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
export var combineBandsInt = _objectSpread(_objectSpread({}, combineBands), {}, {
|
|
53
|
+
name: 'combine-bands-int',
|
|
54
|
+
defines: {
|
|
55
|
+
SAMPLER_TYPE: 'isampler2D'
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRVbmlmb3JtcyIsIm9wdHMiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJpbWFnZUJhbmRzIiwiX2ltYWdlQmFuZHMiLCJfc2xpY2VkVG9BcnJheSIsImJpdG1hcFRleHR1cmVSIiwiYml0bWFwVGV4dHVyZUciLCJiaXRtYXBUZXh0dXJlQiIsImJpdG1hcFRleHR1cmVBIiwiZnMxIiwiZnMyIiwiY29tYmluZUJhbmRzIiwibmFtZSIsImRlZmluZXMiLCJTQU1QTEVSX1RZUEUiLCJpbmplY3QiLCJjb21iaW5lQmFuZHNGbG9hdCIsIl9vYmplY3RTcHJlYWQiLCJjb21iaW5lQmFuZHNVaW50IiwiY29tYmluZUJhbmRzSW50Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3Jhc3Rlci93ZWJnbC90ZXh0dXJlL2NvbWJpbmUtYmFuZHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHR5cGUge1RleHR1cmV9IGZyb20gJ0BsdW1hLmdsL2NvcmUnO1xuaW1wb3J0IHtHZXRVbmlmb3Jtc091dHB1dCwgU2hhZGVyTW9kdWxlfSBmcm9tICcuLi90eXBlcyc7XG5cbmZ1bmN0aW9uIGdldFVuaWZvcm1zKG9wdHM6IHtpbWFnZUJhbmRzPzogVGV4dHVyZVtdfSA9IHt9KTogR2V0VW5pZm9ybXNPdXRwdXQge1xuICBjb25zdCB7aW1hZ2VCYW5kc30gPSBvcHRzO1xuXG4gIGlmICghaW1hZ2VCYW5kcyB8fCBpbWFnZUJhbmRzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgW2JpdG1hcFRleHR1cmVSLCBiaXRtYXBUZXh0dXJlRywgYml0bWFwVGV4dHVyZUIsIGJpdG1hcFRleHR1cmVBXSA9IGltYWdlQmFuZHM7XG5cbiAgLy8gcmV0dXJuIGRlZmF1bHQgdmFsdWVzIHRvIHByZXZlbnQgZGVjay5nbCB2YWxpZGF0aW9uIHdhcm5pbmdzLlxuICAvLyBOb3RlOiBhbGwgYmFuZHMgbXVzdCBiZSBzZXQgZm9yIHRoZSBzaGFkb3cgZWZmZWN0IHRvIHdvcmsgYXMgZXhwZWN0ZWQuXG4gIHJldHVybiB7XG4gICAgYml0bWFwVGV4dHVyZVI6IGJpdG1hcFRleHR1cmVSIHx8IGJpdG1hcFRleHR1cmVSLFxuICAgIGJpdG1hcFRleHR1cmVHOiBiaXRtYXBUZXh0dXJlRyB8fCBiaXRtYXBUZXh0dXJlUixcbiAgICBiaXRtYXBUZXh0dXJlQjogYml0bWFwVGV4dHVyZUIgfHwgYml0bWFwVGV4dHVyZVIsXG4gICAgYml0bWFwVGV4dHVyZUE6IGJpdG1hcFRleHR1cmVBIHx8IGJpdG1hcFRleHR1cmVSXG4gIH07XG59XG5cbmNvbnN0IGZzMSA9IGBcXFxudW5pZm9ybSBzYW1wbGVyMkQgYml0bWFwVGV4dHVyZVI7XG51bmlmb3JtIHNhbXBsZXIyRCBiaXRtYXBUZXh0dXJlRztcbnVuaWZvcm0gc2FtcGxlcjJEIGJpdG1hcFRleHR1cmVCO1xudW5pZm9ybSBzYW1wbGVyMkQgYml0bWFwVGV4dHVyZUE7XG5gO1xuXG5jb25zdCBmczIgPSBgXFxcbnByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xucHJlY2lzaW9uIG1lZGl1bXAgaW50O1xucHJlY2lzaW9uIG1lZGl1bXAgdXNhbXBsZXIyRDtcblxuI2lmZGVmIFNBTVBMRVJfVFlQRVxuICB1bmlmb3JtIFNBTVBMRVJfVFlQRSBiaXRtYXBUZXh0dXJlUjtcbiAgdW5pZm9ybSBTQU1QTEVSX1RZUEUgYml0bWFwVGV4dHVyZUc7XG4gIHVuaWZvcm0gU0FNUExFUl9UWVBFIGJpdG1hcFRleHR1cmVCO1xuICB1bmlmb3JtIFNBTVBMRVJfVFlQRSBiaXRtYXBUZXh0dXJlQTtcbiNlbHNlXG4gIHVuaWZvcm0gc2FtcGxlcjJEIGJpdG1hcFRleHR1cmVSO1xuICB1bmlmb3JtIHNhbXBsZXIyRCBiaXRtYXBUZXh0dXJlRztcbiAgdW5pZm9ybSBzYW1wbGVyMkQgYml0bWFwVGV4dHVyZUI7XG4gIHVuaWZvcm0gc2FtcGxlcjJEIGJpdG1hcFRleHR1cmVBO1xuI2VuZGlmXG5gO1xuXG5jb25zdCBjb21iaW5lQmFuZHM6IFNoYWRlck1vZHVsZSA9IHtcbiAgbmFtZTogJ2NvbWJpbmUtYmFuZHMnLFxuICBmczEsXG4gIGZzMixcbiAgZ2V0VW5pZm9ybXMsXG4gIGRlZmluZXM6IHtcbiAgICBTQU1QTEVSX1RZUEU6ICdzYW1wbGVyMkQnXG4gIH0sXG4gIGluamVjdDoge1xuICAgICdmczpERUNLR0xfQ1JFQVRFX0NPTE9SJzogYFxuICAgIGZsb2F0IGNoYW5uZWwxID0gZmxvYXQodGV4dHVyZTJEKGJpdG1hcFRleHR1cmVSLCBjb29yZCkucik7XG4gICAgZmxvYXQgY2hhbm5lbDIgPSBmbG9hdCh0ZXh0dXJlMkQoYml0bWFwVGV4dHVyZUcsIGNvb3JkKS5yKTtcbiAgICBmbG9hdCBjaGFubmVsMyA9IGZsb2F0KHRleHR1cmUyRChiaXRtYXBUZXh0dXJlQiwgY29vcmQpLnIpO1xuICAgIGZsb2F0IGNoYW5uZWw0ID0gZmxvYXQodGV4dHVyZTJEKGJpdG1hcFRleHR1cmVBLCBjb29yZCkucik7XG5cbiAgICBpbWFnZSA9IHZlYzQoY2hhbm5lbDEsIGNoYW5uZWwyLCBjaGFubmVsMywgY2hhbm5lbDQpO1xuICAgIGBcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGNvbWJpbmVCYW5kc0Zsb2F0OiBTaGFkZXJNb2R1bGUgPSB7XG4gIC4uLmNvbWJpbmVCYW5kcyxcbiAgbmFtZTogJ2NvbWJpbmUtYmFuZHMtZmxvYXQnXG59O1xuZXhwb3J0IGNvbnN0IGNvbWJpbmVCYW5kc1VpbnQ6IFNoYWRlck1vZHVsZSA9IHtcbiAgLi4uY29tYmluZUJhbmRzLFxuICBuYW1lOiAnY29tYmluZS1iYW5kcy11aW50JyxcbiAgZGVmaW5lczoge1xuICAgIFNBTVBMRVJfVFlQRTogJ3VzYW1wbGVyMkQnXG4gIH1cbn07XG5leHBvcnQgY29uc3QgY29tYmluZUJhbmRzSW50OiBTaGFkZXJNb2R1bGUgPSB7XG4gIC4uLmNvbWJpbmVCYW5kcyxcbiAgbmFtZTogJ2NvbWJpbmUtYmFuZHMtaW50JyxcbiAgZGVmaW5lczoge1xuICAgIFNBTVBMRVJfVFlQRTogJ2lzYW1wbGVyMkQnXG4gIH1cbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBOztBQUtBLFNBQVNBLFdBQVdBLENBQUEsRUFBeUQ7RUFBQSxJQUF4REMsSUFBOEIsR0FBQUMsU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQUUsU0FBQSxHQUFBRixTQUFBLE1BQUcsQ0FBQyxDQUFDO0VBQ3RELElBQU9HLFVBQVUsR0FBSUosSUFBSSxDQUFsQkksVUFBVTtFQUVqQixJQUFJLENBQUNBLFVBQVUsSUFBSUEsVUFBVSxDQUFDRixNQUFNLEtBQUssQ0FBQyxFQUFFO0lBQzFDLE9BQU8sSUFBSTtFQUNiO0VBRUEsSUFBQUcsV0FBQSxHQUFBQyxjQUFBLENBQXlFRixVQUFVO0lBQTVFRyxjQUFjLEdBQUFGLFdBQUE7SUFBRUcsY0FBYyxHQUFBSCxXQUFBO0lBQUVJLGNBQWMsR0FBQUosV0FBQTtJQUFFSyxjQUFjLEdBQUFMLFdBQUE7O0VBRXJFO0VBQ0E7RUFDQSxPQUFPO0lBQ0xFLGNBQWMsRUFBRUEsY0FBYyxJQUFJQSxjQUFjO0lBQ2hEQyxjQUFjLEVBQUVBLGNBQWMsSUFBSUQsY0FBYztJQUNoREUsY0FBYyxFQUFFQSxjQUFjLElBQUlGLGNBQWM7SUFDaERHLGNBQWMsRUFBRUEsY0FBYyxJQUFJSDtFQUNwQyxDQUFDO0FBQ0g7QUFFQSxJQUFNSSxHQUFHLGlKQUtSO0FBRUQsSUFBTUMsR0FBRyxnYkFnQlI7QUFFRCxJQUFNQyxZQUEwQixHQUFHO0VBQ2pDQyxJQUFJLEVBQUUsZUFBZTtFQUNyQkgsR0FBRyxFQUFIQSxHQUFHO0VBQ0hDLEdBQUcsRUFBSEEsR0FBRztFQUNIYixXQUFXLEVBQVhBLFdBQVc7RUFDWGdCLE9BQU8sRUFBRTtJQUNQQyxZQUFZLEVBQUU7RUFDaEIsQ0FBQztFQUNEQyxNQUFNLEVBQUU7SUFDTix3QkFBd0I7RUFRMUI7QUFDRixDQUFDO0FBRUQsT0FBTyxJQUFNQyxpQkFBK0IsR0FBQUMsYUFBQSxDQUFBQSxhQUFBLEtBQ3ZDTixZQUFZO0VBQ2ZDLElBQUksRUFBRTtBQUFxQixFQUM1QjtBQUNELE9BQU8sSUFBTU0sZ0JBQThCLEdBQUFELGFBQUEsQ0FBQUEsYUFBQSxLQUN0Q04sWUFBWTtFQUNmQyxJQUFJLEVBQUUsb0JBQW9CO0VBQzFCQyxPQUFPLEVBQUU7SUFDUEMsWUFBWSxFQUFFO0VBQ2hCO0FBQUMsRUFDRjtBQUNELE9BQU8sSUFBTUssZUFBNkIsR0FBQUYsYUFBQSxDQUFBQSxhQUFBLEtBQ3JDTixZQUFZO0VBQ2ZDLElBQUksRUFBRSxtQkFBbUI7RUFDekJDLE9BQU8sRUFBRTtJQUNQQyxZQUFZLEVBQUU7RUFDaEI7QUFBQyxFQUNGIiwiaWdub3JlTGlzdCI6W119
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
// Copyright contributors to the kepler.gl project
|
|
3
|
+
|
|
4
|
+
var inf = Math.pow(2, 62);
|
|
5
|
+
function getUniforms() {
|
|
6
|
+
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
7
|
+
var imageMask = opts.imageMask,
|
|
8
|
+
maskKeepMin = opts.maskKeepMin,
|
|
9
|
+
maskKeepMax = opts.maskKeepMax;
|
|
10
|
+
if (!imageMask) {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
return {
|
|
14
|
+
bitmapTextureMask: imageMask,
|
|
15
|
+
keepMin: Number.isFinite(maskKeepMin) ? maskKeepMin : -inf,
|
|
16
|
+
keepMax: Number.isFinite(maskKeepMax) ? maskKeepMax : inf
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
var maskUniformTypes = {
|
|
20
|
+
keepMin: 'f32',
|
|
21
|
+
keepMax: 'f32'
|
|
22
|
+
};
|
|
23
|
+
function makeMaskModule(name, samplerType) {
|
|
24
|
+
var blockDecl = "uniform ".concat(name, "Uniforms {\n float keepMin;\n float keepMax;\n} ").concat(name, ";\n");
|
|
25
|
+
var fs1 = "uniform sampler2D bitmapTextureMask;\n".concat(blockDecl, "\n");
|
|
26
|
+
var fs2 = "precision mediump float;\nprecision mediump int;\nprecision mediump usampler2D;\n\n#ifdef SAMPLER_TYPE\n uniform SAMPLER_TYPE bitmapTextureMask;\n#else\n uniform sampler2D bitmapTextureMask;\n#endif\n\n".concat(blockDecl, "\n");
|
|
27
|
+
return {
|
|
28
|
+
name: name,
|
|
29
|
+
fs1: fs1,
|
|
30
|
+
fs2: fs2,
|
|
31
|
+
uniformTypes: maskUniformTypes,
|
|
32
|
+
getUniforms: getUniforms,
|
|
33
|
+
defines: {
|
|
34
|
+
SAMPLER_TYPE: samplerType
|
|
35
|
+
},
|
|
36
|
+
inject: {
|
|
37
|
+
'fs:DECKGL_CREATE_COLOR': "\n float mask_value = float(texture(bitmapTextureMask, coord).r);\n if (mask_value < ".concat(name, ".keepMin) discard;\n if (mask_value > ").concat(name, ".keepMax) discard;\n ")
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
export var maskFloat = makeMaskModule('mask_image_float', 'sampler2D');
|
|
42
|
+
export var maskUint = makeMaskModule('mask_image_uint', 'usampler2D');
|
|
43
|
+
export var maskInt = makeMaskModule('mask_image_int', 'isampler2D');
|
|
44
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpbmYiLCJNYXRoIiwicG93IiwiZ2V0VW5pZm9ybXMiLCJvcHRzIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiaW1hZ2VNYXNrIiwibWFza0tlZXBNaW4iLCJtYXNrS2VlcE1heCIsImJpdG1hcFRleHR1cmVNYXNrIiwia2VlcE1pbiIsIk51bWJlciIsImlzRmluaXRlIiwia2VlcE1heCIsIm1hc2tVbmlmb3JtVHlwZXMiLCJtYWtlTWFza01vZHVsZSIsIm5hbWUiLCJzYW1wbGVyVHlwZSIsImJsb2NrRGVjbCIsImNvbmNhdCIsImZzMSIsImZzMiIsInVuaWZvcm1UeXBlcyIsImRlZmluZXMiLCJTQU1QTEVSX1RZUEUiLCJpbmplY3QiLCJtYXNrRmxvYXQiLCJtYXNrVWludCIsIm1hc2tJbnQiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvcmFzdGVyL3dlYmdsL3RleHR1cmUvbWFzay50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgdHlwZSB7VGV4dHVyZX0gZnJvbSAnQGx1bWEuZ2wvY29yZSc7XG5pbXBvcnQge0dldFVuaWZvcm1zT3V0cHV0LCBTaGFkZXJNb2R1bGV9IGZyb20gJy4uL3R5cGVzJztcblxuY29uc3QgaW5mID0gTWF0aC5wb3coMiwgNjIpO1xuXG5mdW5jdGlvbiBnZXRVbmlmb3JtcyhcbiAgb3B0czoge2ltYWdlTWFzaz86IFRleHR1cmU7IG1hc2tLZWVwTWluPzogbnVtYmVyOyBtYXNrS2VlcE1heD86IG51bWJlcn0gPSB7fVxuKTogR2V0VW5pZm9ybXNPdXRwdXQge1xuICBjb25zdCB7aW1hZ2VNYXNrLCBtYXNrS2VlcE1pbiwgbWFza0tlZXBNYXh9ID0gb3B0cztcbiAgaWYgKCFpbWFnZU1hc2spIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYml0bWFwVGV4dHVyZU1hc2s6IGltYWdlTWFzayxcbiAgICBrZWVwTWluOiBOdW1iZXIuaXNGaW5pdGUobWFza0tlZXBNaW4pID8gbWFza0tlZXBNaW4gOiAtaW5mLFxuICAgIGtlZXBNYXg6IE51bWJlci5pc0Zpbml0ZShtYXNrS2VlcE1heCkgPyBtYXNrS2VlcE1heCA6IGluZlxuICB9O1xufVxuXG5jb25zdCBtYXNrVW5pZm9ybVR5cGVzID0ge1xuICBrZWVwTWluOiAnZjMyJyxcbiAga2VlcE1heDogJ2YzMidcbn07XG5cbmZ1bmN0aW9uIG1ha2VNYXNrTW9kdWxlKG5hbWU6IHN0cmluZywgc2FtcGxlclR5cGU6IHN0cmluZyk6IFNoYWRlck1vZHVsZSB7XG4gIGNvbnN0IGJsb2NrRGVjbCA9IGBcXFxudW5pZm9ybSAke25hbWV9VW5pZm9ybXMge1xuICBmbG9hdCBrZWVwTWluO1xuICBmbG9hdCBrZWVwTWF4O1xufSAke25hbWV9O1xuYDtcblxuICBjb25zdCBmczEgPSBgXFxcbnVuaWZvcm0gc2FtcGxlcjJEIGJpdG1hcFRleHR1cmVNYXNrO1xuJHtibG9ja0RlY2x9XG5gO1xuXG4gIGNvbnN0IGZzMiA9IGBcXFxucHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG5wcmVjaXNpb24gbWVkaXVtcCBpbnQ7XG5wcmVjaXNpb24gbWVkaXVtcCB1c2FtcGxlcjJEO1xuXG4jaWZkZWYgU0FNUExFUl9UWVBFXG4gIHVuaWZvcm0gU0FNUExFUl9UWVBFIGJpdG1hcFRleHR1cmVNYXNrO1xuI2Vsc2VcbiAgdW5pZm9ybSBzYW1wbGVyMkQgYml0bWFwVGV4dHVyZU1hc2s7XG4jZW5kaWZcblxuJHtibG9ja0RlY2x9XG5gO1xuXG4gIHJldHVybiB7XG4gICAgbmFtZSxcbiAgICBmczEsXG4gICAgZnMyLFxuICAgIHVuaWZvcm1UeXBlczogbWFza1VuaWZvcm1UeXBlcyxcbiAgICBnZXRVbmlmb3JtcyxcbiAgICBkZWZpbmVzOiB7XG4gICAgICBTQU1QTEVSX1RZUEU6IHNhbXBsZXJUeXBlXG4gICAgfSxcbiAgICBpbmplY3Q6IHtcbiAgICAgICdmczpERUNLR0xfQ1JFQVRFX0NPTE9SJzogYFxuICAgIGZsb2F0IG1hc2tfdmFsdWUgPSBmbG9hdCh0ZXh0dXJlKGJpdG1hcFRleHR1cmVNYXNrLCBjb29yZCkucik7XG4gICAgaWYgKG1hc2tfdmFsdWUgPCAke25hbWV9LmtlZXBNaW4pIGRpc2NhcmQ7XG4gICAgaWYgKG1hc2tfdmFsdWUgPiAke25hbWV9LmtlZXBNYXgpIGRpc2NhcmQ7XG4gICAgYFxuICAgIH1cbiAgfTtcbn1cblxuZXhwb3J0IGNvbnN0IG1hc2tGbG9hdDogU2hhZGVyTW9kdWxlID0gbWFrZU1hc2tNb2R1bGUoJ21hc2tfaW1hZ2VfZmxvYXQnLCAnc2FtcGxlcjJEJyk7XG5leHBvcnQgY29uc3QgbWFza1VpbnQ6IFNoYWRlck1vZHVsZSA9IG1ha2VNYXNrTW9kdWxlKCdtYXNrX2ltYWdlX3VpbnQnLCAndXNhbXBsZXIyRCcpO1xuZXhwb3J0IGNvbnN0IG1hc2tJbnQ6IFNoYWRlck1vZHVsZSA9IG1ha2VNYXNrTW9kdWxlKCdtYXNrX2ltYWdlX2ludCcsICdpc2FtcGxlcjJEJyk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7O0FBS0EsSUFBTUEsR0FBRyxHQUFHQyxJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBRTNCLFNBQVNDLFdBQVdBLENBQUEsRUFFQztFQUFBLElBRG5CQyxJQUF1RSxHQUFBQyxTQUFBLENBQUFDLE1BQUEsUUFBQUQsU0FBQSxRQUFBRSxTQUFBLEdBQUFGLFNBQUEsTUFBRyxDQUFDLENBQUM7RUFFNUUsSUFBT0csU0FBUyxHQUE4QkosSUFBSSxDQUEzQ0ksU0FBUztJQUFFQyxXQUFXLEdBQWlCTCxJQUFJLENBQWhDSyxXQUFXO0lBQUVDLFdBQVcsR0FBSU4sSUFBSSxDQUFuQk0sV0FBVztFQUMxQyxJQUFJLENBQUNGLFNBQVMsRUFBRTtJQUNkLE9BQU8sSUFBSTtFQUNiO0VBRUEsT0FBTztJQUNMRyxpQkFBaUIsRUFBRUgsU0FBUztJQUM1QkksT0FBTyxFQUFFQyxNQUFNLENBQUNDLFFBQVEsQ0FBQ0wsV0FBVyxDQUFDLEdBQUdBLFdBQVcsR0FBRyxDQUFDVCxHQUFHO0lBQzFEZSxPQUFPLEVBQUVGLE1BQU0sQ0FBQ0MsUUFBUSxDQUFDSixXQUFXLENBQUMsR0FBR0EsV0FBVyxHQUFHVjtFQUN4RCxDQUFDO0FBQ0g7QUFFQSxJQUFNZ0IsZ0JBQWdCLEdBQUc7RUFDdkJKLE9BQU8sRUFBRSxLQUFLO0VBQ2RHLE9BQU8sRUFBRTtBQUNYLENBQUM7QUFFRCxTQUFTRSxjQUFjQSxDQUFDQyxJQUFZLEVBQUVDLFdBQW1CLEVBQWdCO0VBQ3ZFLElBQU1DLFNBQVMsY0FBQUMsTUFBQSxDQUNQSCxJQUFJLHdEQUFBRyxNQUFBLENBR1ZILElBQUksUUFDUDtFQUVDLElBQU1JLEdBQUcsNENBQUFELE1BQUEsQ0FFVEQsU0FBUyxPQUNWO0VBRUMsSUFBTUcsR0FBRyxrTkFBQUYsTUFBQSxDQVdURCxTQUFTLE9BQ1Y7RUFFQyxPQUFPO0lBQ0xGLElBQUksRUFBSkEsSUFBSTtJQUNKSSxHQUFHLEVBQUhBLEdBQUc7SUFDSEMsR0FBRyxFQUFIQSxHQUFHO0lBQ0hDLFlBQVksRUFBRVIsZ0JBQWdCO0lBQzlCYixXQUFXLEVBQVhBLFdBQVc7SUFDWHNCLE9BQU8sRUFBRTtNQUNQQyxZQUFZLEVBQUVQO0lBQ2hCLENBQUM7SUFDRFEsTUFBTSxFQUFFO01BQ04sd0JBQXdCLGdHQUFBTixNQUFBLENBRVBILElBQUksK0NBQUFHLE1BQUEsQ0FDSkgsSUFBSTtJQUV2QjtFQUNGLENBQUM7QUFDSDtBQUVBLE9BQU8sSUFBTVUsU0FBdUIsR0FBR1gsY0FBYyxDQUFDLGtCQUFrQixFQUFFLFdBQVcsQ0FBQztBQUN0RixPQUFPLElBQU1ZLFFBQXNCLEdBQUdaLGNBQWMsQ0FBQyxpQkFBaUIsRUFBRSxZQUFZLENBQUM7QUFDckYsT0FBTyxJQUFNYSxPQUFxQixHQUFHYixjQUFjLENBQUMsZ0JBQWdCLEVBQUUsWUFBWSxDQUFDIiwiaWdub3JlTGlzdCI6W119
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
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; } } }; }
|
|
2
|
+
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; } }
|
|
3
|
+
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; }
|
|
4
|
+
// SPDX-License-Identifier: MIT
|
|
5
|
+
// Copyright contributors to the kepler.gl project
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Reorder image bands on GPU
|
|
9
|
+
* Uses a permutation matrix to reorder a vec4
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
var fs = "uniform reorder_bandsUniforms {\n mat4 ordering;\n} reorder_bands;\n\nvec4 reorder_image(vec4 image, mat4 ordering) {\n return image.rgba * ordering;\n}\n";
|
|
13
|
+
function getUniforms() {
|
|
14
|
+
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
15
|
+
var ordering = opts.ordering;
|
|
16
|
+
if (!ordering) {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
return {
|
|
20
|
+
ordering: constructPermutationMatrix(ordering)
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Construct permutation matrix from vector
|
|
26
|
+
*
|
|
27
|
+
* @param vector Vector describing how to reorder bands
|
|
28
|
+
*
|
|
29
|
+
* @return a mat4 permutation matrix representing how to reorder bands
|
|
30
|
+
*/
|
|
31
|
+
export function constructPermutationMatrix(vector) {
|
|
32
|
+
var mat4 = Array(16).fill(0);
|
|
33
|
+
var row = 0;
|
|
34
|
+
var _iterator = _createForOfIteratorHelper(vector),
|
|
35
|
+
_step;
|
|
36
|
+
try {
|
|
37
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
38
|
+
var index = _step.value;
|
|
39
|
+
mat4[row * 4 + index] = 1;
|
|
40
|
+
row += 1;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// If input vector wasn't of length 4, add identity in final places
|
|
44
|
+
} catch (err) {
|
|
45
|
+
_iterator.e(err);
|
|
46
|
+
} finally {
|
|
47
|
+
_iterator.f();
|
|
48
|
+
}
|
|
49
|
+
for (var r = row; r < 4; r++) {
|
|
50
|
+
mat4[r * 4 + r] = 1;
|
|
51
|
+
}
|
|
52
|
+
return mat4;
|
|
53
|
+
}
|
|
54
|
+
export var reorderBands = {
|
|
55
|
+
name: 'reorder_bands',
|
|
56
|
+
fs: fs,
|
|
57
|
+
uniformTypes: {
|
|
58
|
+
ordering: 'mat4x4<f32>'
|
|
59
|
+
},
|
|
60
|
+
getUniforms: getUniforms,
|
|
61
|
+
inject: {
|
|
62
|
+
'fs:DECKGL_MUTATE_COLOR': "\n image = reorder_image(image, reorder_bands.ordering);\n "
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmcyIsImdldFVuaWZvcm1zIiwib3B0cyIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsIm9yZGVyaW5nIiwiY29uc3RydWN0UGVybXV0YXRpb25NYXRyaXgiLCJ2ZWN0b3IiLCJtYXQ0IiwiQXJyYXkiLCJmaWxsIiwicm93IiwiX2l0ZXJhdG9yIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJfc3RlcCIsInMiLCJuIiwiZG9uZSIsImluZGV4IiwidmFsdWUiLCJlcnIiLCJlIiwiZiIsInIiLCJyZW9yZGVyQmFuZHMiLCJuYW1lIiwidW5pZm9ybVR5cGVzIiwiaW5qZWN0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3Jhc3Rlci93ZWJnbC90ZXh0dXJlL3Jlb3JkZXItYmFuZHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtTaGFkZXJNb2R1bGUsIEdldFVuaWZvcm1zT3V0cHV0fSBmcm9tICcuLi90eXBlcyc7XG5cbi8qKlxuICogUmVvcmRlciBpbWFnZSBiYW5kcyBvbiBHUFVcbiAqIFVzZXMgYSBwZXJtdXRhdGlvbiBtYXRyaXggdG8gcmVvcmRlciBhIHZlYzRcbiAqL1xuXG5jb25zdCBmcyA9IGBcXFxudW5pZm9ybSByZW9yZGVyX2JhbmRzVW5pZm9ybXMge1xuICBtYXQ0IG9yZGVyaW5nO1xufSByZW9yZGVyX2JhbmRzO1xuXG52ZWM0IHJlb3JkZXJfaW1hZ2UodmVjNCBpbWFnZSwgbWF0NCBvcmRlcmluZykge1xuICByZXR1cm4gaW1hZ2UucmdiYSAqIG9yZGVyaW5nO1xufVxuYDtcblxuZnVuY3Rpb24gZ2V0VW5pZm9ybXMob3B0czoge29yZGVyaW5nPzogbnVtYmVyW119ID0ge30pOiBHZXRVbmlmb3Jtc091dHB1dCB7XG4gIGNvbnN0IHtvcmRlcmluZ30gPSBvcHRzO1xuXG4gIGlmICghb3JkZXJpbmcpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgb3JkZXJpbmc6IGNvbnN0cnVjdFBlcm11dGF0aW9uTWF0cml4KG9yZGVyaW5nKVxuICB9O1xufVxuXG4vKipcbiAqIENvbnN0cnVjdCBwZXJtdXRhdGlvbiBtYXRyaXggZnJvbSB2ZWN0b3JcbiAqXG4gKiBAcGFyYW0gdmVjdG9yICBWZWN0b3IgZGVzY3JpYmluZyBob3cgdG8gcmVvcmRlciBiYW5kc1xuICpcbiAqIEByZXR1cm4gYSBtYXQ0IHBlcm11dGF0aW9uIG1hdHJpeCByZXByZXNlbnRpbmcgaG93IHRvIHJlb3JkZXIgYmFuZHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnN0cnVjdFBlcm11dGF0aW9uTWF0cml4KHZlY3RvcjogbnVtYmVyW10pOiBudW1iZXJbXSB7XG4gIGNvbnN0IG1hdDQgPSBBcnJheSgxNikuZmlsbCgwKTtcbiAgbGV0IHJvdyA9IDA7XG4gIGZvciAoY29uc3QgaW5kZXggb2YgdmVjdG9yKSB7XG4gICAgbWF0NFtyb3cgKiA0ICsgaW5kZXhdID0gMTtcbiAgICByb3cgKz0gMTtcbiAgfVxuXG4gIC8vIElmIGlucHV0IHZlY3RvciB3YXNuJ3Qgb2YgbGVuZ3RoIDQsIGFkZCBpZGVudGl0eSBpbiBmaW5hbCBwbGFjZXNcbiAgZm9yIChsZXQgciA9IHJvdzsgciA8IDQ7IHIrKykge1xuICAgIG1hdDRbciAqIDQgKyByXSA9IDE7XG4gIH1cblxuICByZXR1cm4gbWF0NDtcbn1cblxuZXhwb3J0IGNvbnN0IHJlb3JkZXJCYW5kczogU2hhZGVyTW9kdWxlID0ge1xuICBuYW1lOiAncmVvcmRlcl9iYW5kcycsXG4gIGZzLFxuICB1bmlmb3JtVHlwZXM6IHtcbiAgICBvcmRlcmluZzogJ21hdDR4NDxmMzI+J1xuICB9LFxuICBnZXRVbmlmb3JtcyxcbiAgaW5qZWN0OiB7XG4gICAgJ2ZzOkRFQ0tHTF9NVVRBVEVfQ09MT1InOiBgXG4gICAgaW1hZ2UgPSByZW9yZGVyX2ltYWdlKGltYWdlLCByZW9yZGVyX2JhbmRzLm9yZGVyaW5nKTtcbiAgICBgXG4gIH1cbn07XG4iXSwibWFwcGluZ3MiOiI7OztBQUFBO0FBQ0E7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsSUFBTUEsRUFBRSxpS0FRUDtBQUVELFNBQVNDLFdBQVdBLENBQUEsRUFBc0Q7RUFBQSxJQUFyREMsSUFBMkIsR0FBQUMsU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQUUsU0FBQSxHQUFBRixTQUFBLE1BQUcsQ0FBQyxDQUFDO0VBQ25ELElBQU9HLFFBQVEsR0FBSUosSUFBSSxDQUFoQkksUUFBUTtFQUVmLElBQUksQ0FBQ0EsUUFBUSxFQUFFO0lBQ2IsT0FBTyxJQUFJO0VBQ2I7RUFFQSxPQUFPO0lBQ0xBLFFBQVEsRUFBRUMsMEJBQTBCLENBQUNELFFBQVE7RUFDL0MsQ0FBQztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxTQUFTQywwQkFBMEJBLENBQUNDLE1BQWdCLEVBQVk7RUFDckUsSUFBTUMsSUFBSSxHQUFHQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUNDLElBQUksQ0FBQyxDQUFDLENBQUM7RUFDOUIsSUFBSUMsR0FBRyxHQUFHLENBQUM7RUFBQyxJQUFBQyxTQUFBLEdBQUFDLDBCQUFBLENBQ1FOLE1BQU07SUFBQU8sS0FBQTtFQUFBO0lBQTFCLEtBQUFGLFNBQUEsQ0FBQUcsQ0FBQSxNQUFBRCxLQUFBLEdBQUFGLFNBQUEsQ0FBQUksQ0FBQSxJQUFBQyxJQUFBLEdBQTRCO01BQUEsSUFBakJDLEtBQUssR0FBQUosS0FBQSxDQUFBSyxLQUFBO01BQ2RYLElBQUksQ0FBQ0csR0FBRyxHQUFHLENBQUMsR0FBR08sS0FBSyxDQUFDLEdBQUcsQ0FBQztNQUN6QlAsR0FBRyxJQUFJLENBQUM7SUFDVjs7SUFFQTtFQUFBLFNBQUFTLEdBQUE7SUFBQVIsU0FBQSxDQUFBUyxDQUFBLENBQUFELEdBQUE7RUFBQTtJQUFBUixTQUFBLENBQUFVLENBQUE7RUFBQTtFQUNBLEtBQUssSUFBSUMsQ0FBQyxHQUFHWixHQUFHLEVBQUVZLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsRUFBRSxFQUFFO0lBQzVCZixJQUFJLENBQUNlLENBQUMsR0FBRyxDQUFDLEdBQUdBLENBQUMsQ0FBQyxHQUFHLENBQUM7RUFDckI7RUFFQSxPQUFPZixJQUFJO0FBQ2I7QUFFQSxPQUFPLElBQU1nQixZQUEwQixHQUFHO0VBQ3hDQyxJQUFJLEVBQUUsZUFBZTtFQUNyQjFCLEVBQUUsRUFBRkEsRUFBRTtFQUNGMkIsWUFBWSxFQUFFO0lBQ1pyQixRQUFRLEVBQUU7RUFDWixDQUFDO0VBQ0RMLFdBQVcsRUFBWEEsV0FBVztFQUNYMkIsTUFBTSxFQUFFO0lBQ04sd0JBQXdCO0VBRzFCO0FBQ0YsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
// Copyright contributors to the kepler.gl project
|
|
3
|
+
|
|
4
|
+
function getUniforms() {
|
|
5
|
+
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
6
|
+
var imageRgba = opts.imageRgba;
|
|
7
|
+
if (!imageRgba) {
|
|
8
|
+
return null;
|
|
9
|
+
}
|
|
10
|
+
return {
|
|
11
|
+
bitmapTextureRgba: imageRgba
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
var fs1 = "uniform sampler2D bitmapTextureRgba;\n";
|
|
15
|
+
var fs2 = "precision mediump float;\nprecision mediump int;\nprecision mediump usampler2D;\n\n#ifdef SAMPLER_TYPE\n uniform SAMPLER_TYPE bitmapTextureRgba;\n#else\n uniform sampler2D bitmapTextureRgba;\n#endif\n";
|
|
16
|
+
export var rgbaImage = {
|
|
17
|
+
name: 'rgba-image',
|
|
18
|
+
fs1: fs1,
|
|
19
|
+
fs2: fs2,
|
|
20
|
+
getUniforms: getUniforms,
|
|
21
|
+
defines: {
|
|
22
|
+
SAMPLER_TYPE: 'sampler2D'
|
|
23
|
+
},
|
|
24
|
+
inject: {
|
|
25
|
+
'fs:DECKGL_CREATE_COLOR': "\n image = vec4(texture2D(bitmapTextureRgba, coord));\n if (image.a < 0.5) {\n discard;\n }\n "
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRVbmlmb3JtcyIsIm9wdHMiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJpbWFnZVJnYmEiLCJiaXRtYXBUZXh0dXJlUmdiYSIsImZzMSIsImZzMiIsInJnYmFJbWFnZSIsIm5hbWUiLCJkZWZpbmVzIiwiU0FNUExFUl9UWVBFIiwiaW5qZWN0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3Jhc3Rlci93ZWJnbC90ZXh0dXJlL3JnYmEtaW1hZ2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHR5cGUge1RleHR1cmV9IGZyb20gJ0BsdW1hLmdsL2NvcmUnO1xuaW1wb3J0IHtHZXRVbmlmb3Jtc091dHB1dCwgU2hhZGVyTW9kdWxlfSBmcm9tICcuLi90eXBlcyc7XG5cbmZ1bmN0aW9uIGdldFVuaWZvcm1zKG9wdHM6IHtpbWFnZVJnYmE/OiBUZXh0dXJlfSA9IHt9KTogR2V0VW5pZm9ybXNPdXRwdXQge1xuICBjb25zdCB7aW1hZ2VSZ2JhfSA9IG9wdHM7XG5cbiAgaWYgKCFpbWFnZVJnYmEpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYml0bWFwVGV4dHVyZVJnYmE6IGltYWdlUmdiYVxuICB9O1xufVxuXG5jb25zdCBmczEgPSBgXFxcbnVuaWZvcm0gc2FtcGxlcjJEIGJpdG1hcFRleHR1cmVSZ2JhO1xuYDtcblxuY29uc3QgZnMyID0gYFxcXG5wcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbnByZWNpc2lvbiBtZWRpdW1wIGludDtcbnByZWNpc2lvbiBtZWRpdW1wIHVzYW1wbGVyMkQ7XG5cbiNpZmRlZiBTQU1QTEVSX1RZUEVcbiAgdW5pZm9ybSBTQU1QTEVSX1RZUEUgYml0bWFwVGV4dHVyZVJnYmE7XG4jZWxzZVxuICB1bmlmb3JtIHNhbXBsZXIyRCBiaXRtYXBUZXh0dXJlUmdiYTtcbiNlbmRpZlxuYDtcblxuZXhwb3J0IGNvbnN0IHJnYmFJbWFnZTogU2hhZGVyTW9kdWxlID0ge1xuICBuYW1lOiAncmdiYS1pbWFnZScsXG4gIGZzMSxcbiAgZnMyLFxuICBnZXRVbmlmb3JtcyxcbiAgZGVmaW5lczoge1xuICAgIFNBTVBMRVJfVFlQRTogJ3NhbXBsZXIyRCdcbiAgfSxcbiAgaW5qZWN0OiB7XG4gICAgJ2ZzOkRFQ0tHTF9DUkVBVEVfQ09MT1InOiBgXG4gICAgaW1hZ2UgPSB2ZWM0KHRleHR1cmUyRChiaXRtYXBUZXh0dXJlUmdiYSwgY29vcmQpKTtcbiAgICBpZiAoaW1hZ2UuYSA8IDAuNSkge1xuICAgICAgZGlzY2FyZDtcbiAgICB9XG4gICAgYFxuICB9XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOztBQUtBLFNBQVNBLFdBQVdBLENBQUEsRUFBc0Q7RUFBQSxJQUFyREMsSUFBMkIsR0FBQUMsU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQUUsU0FBQSxHQUFBRixTQUFBLE1BQUcsQ0FBQyxDQUFDO0VBQ25ELElBQU9HLFNBQVMsR0FBSUosSUFBSSxDQUFqQkksU0FBUztFQUVoQixJQUFJLENBQUNBLFNBQVMsRUFBRTtJQUNkLE9BQU8sSUFBSTtFQUNiO0VBRUEsT0FBTztJQUNMQyxpQkFBaUIsRUFBRUQ7RUFDckIsQ0FBQztBQUNIO0FBRUEsSUFBTUUsR0FBRywyQ0FFUjtBQUVELElBQU1DLEdBQUcsK01BVVI7QUFFRCxPQUFPLElBQU1DLFNBQXVCLEdBQUc7RUFDckNDLElBQUksRUFBRSxZQUFZO0VBQ2xCSCxHQUFHLEVBQUhBLEdBQUc7RUFDSEMsR0FBRyxFQUFIQSxHQUFHO0VBQ0hSLFdBQVcsRUFBWEEsV0FBVztFQUNYVyxPQUFPLEVBQUU7SUFDUEMsWUFBWSxFQUFFO0VBQ2hCLENBQUM7RUFDREMsTUFBTSxFQUFFO0lBQ04sd0JBQXdCO0VBTTFCO0FBQ0YsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
export {};
|
|
3
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Jhc3Rlci93ZWJnbC90eXBlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgdHlwZSB7VGV4dHVyZX0gZnJvbSAnQGx1bWEuZ2wvY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2hhZGVyTW9kdWxlIHtcbiAgLyoqIEEgdW5pcXVlIG5hbWUgZm9yIHRoaXMgc2hhZGVyIG1vZHVsZSAqL1xuICBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqIEEgZnJhZ21lbnQgc2hhZGVyIHRvIGJlIHVzZWQgaW4gYm90aCBXZWJHTDEgYW5kIFdlYkdMMiBlbnZpcm9ubWVudHMgKi9cbiAgZnM/OiBzdHJpbmc7XG5cbiAgLyoqIEEgZnJhZ21lbnQgc2hhZGVyIHRvIGJlIHVzZWQgb25seSBpbiBXZWJHTDEgZW52aXJvbm1lbnRzICovXG4gIGZzMT86IHN0cmluZztcblxuICAvKiogQSBmcmFnbWVudCBzaGFkZXIgdG8gYmUgdXNlZCBvbmx5IGluIFdlYkdMMiBlbnZpcm9ubWVudHMgKi9cbiAgZnMyPzogc3RyaW5nO1xuXG4gIC8qKiBBIHZlcnRleCBzaGFkZXIgdG8gaW5qZWN0ICovXG4gIHZzPzogc3RyaW5nO1xuICB1bmlmb3Jtcz86IFJlY29yZDxzdHJpbmcsIFVuaWZvcm1UeXBlPjtcbiAgZ2V0VW5pZm9ybXM/OiAob3B0czogb2JqZWN0KSA9PiBHZXRVbmlmb3Jtc091dHB1dDtcblxuICAvKiogbHVtYS5nbCA5IFVCTyB1bmlmb3JtIHR5cGUgZGVjbGFyYXRpb25zIChlLmcuIHsgb3BhY2l0eTogJ2YzMicgfSkgKi9cbiAgdW5pZm9ybVR5cGVzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuICAvKiogT3B0aW9uYWwgY29uc3RhbnRzIHRvIGRlZmluZSB3aGVuIGluamVjdGluZyAqL1xuICBkZWZpbmVzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgaW5qZWN0PzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgZGVwZW5kZW5jaWVzPzogU2hhZGVyTW9kdWxlW107XG4gIGRlcHJlY2F0aW9ucz86IHt0eXBlOiBzdHJpbmc7IG9sZDogc3RyaW5nOyBuZXc6IHN0cmluZ31bXTtcbn1cblxuZXhwb3J0IHR5cGUgVW5pZm9ybVR5cGUgPSBudW1iZXIgfCBudW1iZXJbXSB8IFRleHR1cmUgfCB1bmRlZmluZWQ7XG5cbmV4cG9ydCB0eXBlIEdldFVuaWZvcm1zT3V0cHV0ID0gUmVjb3JkPHN0cmluZywgVW5pZm9ybVR5cGU+IHwgbnVsbDtcbiJdLCJtYXBwaW5ncyI6IiIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
|
2
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
3
|
+
import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
|
|
4
|
+
import _createClass from "@babel/runtime/helpers/esm/createClass";
|
|
5
|
+
import _possibleConstructorReturn from "@babel/runtime/helpers/esm/possibleConstructorReturn";
|
|
6
|
+
import _getPrototypeOf from "@babel/runtime/helpers/esm/getPrototypeOf";
|
|
7
|
+
import _get from "@babel/runtime/helpers/esm/get";
|
|
8
|
+
import _inherits from "@babel/runtime/helpers/esm/inherits";
|
|
9
|
+
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; }
|
|
10
|
+
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) { _defineProperty(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; }
|
|
11
|
+
function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
|
|
12
|
+
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
13
|
+
function _superPropGet(t, o, e, r) { var p = _get(_getPrototypeOf(1 & r ? t.prototype : t), o, e); return 2 & r && "function" == typeof p ? function (t) { return p.apply(e, t); } : p; }
|
|
14
|
+
// SPDX-License-Identifier: MIT
|
|
15
|
+
// Copyright contributors to the kepler.gl project
|
|
16
|
+
|
|
17
|
+
import { ScatterplotLayer } from '@deck.gl/layers';
|
|
18
|
+
import { Geometry, Model } from '@luma.gl/engine';
|
|
19
|
+
import { TOPOLOGY } from '@kepler.gl/constants';
|
|
20
|
+
var DEFAULT_POS = [-1, -1, 0, -1, 1, 0, 1, 1, 0, 1, -1, 0];
|
|
21
|
+
var globeModeUniforms = {
|
|
22
|
+
name: 'globeMode',
|
|
23
|
+
vs: "uniform globeModeUniforms {\n float globeModeMod;\n} globeModeProps;\n",
|
|
24
|
+
uniformTypes: {
|
|
25
|
+
globeModeMod: 'f32'
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
var iconFragmentShader = /* glsl */"#version 300 es\n#define SHADER_NAME scatterplot-icon-layer-fragment-shader\nprecision highp float;\nin vec4 vFillColor;\nin vec4 vLineColor;\nin vec2 unitPosition;\nin float innerUnitRadius;\nin float outerRadiusPixels;\nout vec4 fragColor;\nvoid main(void) {\n geometry.uv = unitPosition;\n fragColor = vFillColor;\n DECKGL_FILTER_COLOR(fragColor, geometry);\n}\n";
|
|
29
|
+
var ScatterplotIconLayer = /*#__PURE__*/function (_ScatterplotLayer) {
|
|
30
|
+
function ScatterplotIconLayer() {
|
|
31
|
+
_classCallCheck(this, ScatterplotIconLayer);
|
|
32
|
+
return _callSuper(this, ScatterplotIconLayer, arguments);
|
|
33
|
+
}
|
|
34
|
+
_inherits(ScatterplotIconLayer, _ScatterplotLayer);
|
|
35
|
+
return _createClass(ScatterplotIconLayer, [{
|
|
36
|
+
key: "getShaders",
|
|
37
|
+
value: function getShaders() {
|
|
38
|
+
var shaders = _superPropGet(ScatterplotIconLayer, "getShaders", this, 3)([]);
|
|
39
|
+
return _objectSpread(_objectSpread({}, shaders), {}, {
|
|
40
|
+
fs: iconFragmentShader,
|
|
41
|
+
modules: [].concat(_toConsumableArray(shaders.modules || []), [globeModeUniforms]),
|
|
42
|
+
inject: {
|
|
43
|
+
'vs:DECKGL_FILTER_SIZE': "\n size.xy *= globeModeProps.globeModeMod;"
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
}, {
|
|
48
|
+
key: "draw",
|
|
49
|
+
value: function draw(opts) {
|
|
50
|
+
var model = this.state.model;
|
|
51
|
+
if (model) {
|
|
52
|
+
model.shaderInputs.setProps({
|
|
53
|
+
globeMode: {
|
|
54
|
+
globeModeMod: this.context.viewport.resolution ? -0.5 : 1
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
_superPropGet(ScatterplotIconLayer, "draw", this, 3)([opts]);
|
|
59
|
+
}
|
|
60
|
+
}, {
|
|
61
|
+
key: "_getModel",
|
|
62
|
+
value: function _getModel() {
|
|
63
|
+
var iconGeometry = this.props.iconGeometry;
|
|
64
|
+
var positions = iconGeometry ? new Float32Array(iconGeometry) : new Float32Array(DEFAULT_POS);
|
|
65
|
+
return new Model(this.context.device, _objectSpread(_objectSpread({}, this.getShaders()), {}, {
|
|
66
|
+
id: this.props.id,
|
|
67
|
+
bufferLayout: this.getAttributeManager().getBufferLayouts(),
|
|
68
|
+
geometry: new Geometry({
|
|
69
|
+
topology: iconGeometry ? TOPOLOGY.TRIANGLE_LIST : TOPOLOGY.TRIANGLE_STRIP,
|
|
70
|
+
attributes: {
|
|
71
|
+
positions: {
|
|
72
|
+
size: 3,
|
|
73
|
+
value: positions
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}),
|
|
77
|
+
isInstanced: true
|
|
78
|
+
}));
|
|
79
|
+
}
|
|
80
|
+
}]);
|
|
81
|
+
}(ScatterplotLayer);
|
|
82
|
+
export { ScatterplotIconLayer as default };
|
|
83
|
+
ScatterplotIconLayer.layerName = 'ScatterplotIconLayer';
|
|
84
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTY2F0dGVycGxvdExheWVyIiwiR2VvbWV0cnkiLCJNb2RlbCIsIlRPUE9MT0dZIiwiREVGQVVMVF9QT1MiLCJnbG9iZU1vZGVVbmlmb3JtcyIsIm5hbWUiLCJ2cyIsInVuaWZvcm1UeXBlcyIsImdsb2JlTW9kZU1vZCIsImljb25GcmFnbWVudFNoYWRlciIsIlNjYXR0ZXJwbG90SWNvbkxheWVyIiwiX1NjYXR0ZXJwbG90TGF5ZXIiLCJfY2xhc3NDYWxsQ2hlY2siLCJfY2FsbFN1cGVyIiwiYXJndW1lbnRzIiwiX2luaGVyaXRzIiwiX2NyZWF0ZUNsYXNzIiwia2V5IiwidmFsdWUiLCJnZXRTaGFkZXJzIiwic2hhZGVycyIsIl9zdXBlclByb3BHZXQiLCJfb2JqZWN0U3ByZWFkIiwiZnMiLCJtb2R1bGVzIiwiY29uY2F0IiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiaW5qZWN0IiwiZHJhdyIsIm9wdHMiLCJtb2RlbCIsInN0YXRlIiwic2hhZGVySW5wdXRzIiwic2V0UHJvcHMiLCJnbG9iZU1vZGUiLCJjb250ZXh0Iiwidmlld3BvcnQiLCJyZXNvbHV0aW9uIiwiX2dldE1vZGVsIiwiaWNvbkdlb21ldHJ5IiwicHJvcHMiLCJwb3NpdGlvbnMiLCJGbG9hdDMyQXJyYXkiLCJkZXZpY2UiLCJpZCIsImJ1ZmZlckxheW91dCIsImdldEF0dHJpYnV0ZU1hbmFnZXIiLCJnZXRCdWZmZXJMYXlvdXRzIiwiZ2VvbWV0cnkiLCJ0b3BvbG9neSIsIlRSSUFOR0xFX0xJU1QiLCJUUklBTkdMRV9TVFJJUCIsImF0dHJpYnV0ZXMiLCJzaXplIiwiaXNJbnN0YW5jZWQiLCJkZWZhdWx0IiwibGF5ZXJOYW1lIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3N2Zy1pY29uLWxheWVyL3NjYXR0ZXJwbG90LWljb24tbGF5ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtTY2F0dGVycGxvdExheWVyLCBTY2F0dGVycGxvdExheWVyUHJvcHN9IGZyb20gJ0BkZWNrLmdsL2xheWVycyc7XG5pbXBvcnQge0dlb21ldHJ5LCBNb2RlbH0gZnJvbSAnQGx1bWEuZ2wvZW5naW5lJztcbmltcG9ydCB7VE9QT0xPR1l9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcblxuY29uc3QgREVGQVVMVF9QT1MgPSBbLTEsIC0xLCAwLCAtMSwgMSwgMCwgMSwgMSwgMCwgMSwgLTEsIDBdO1xuXG5jb25zdCBnbG9iZU1vZGVVbmlmb3JtcyA9IHtcbiAgbmFtZTogJ2dsb2JlTW9kZScsXG4gIHZzOiBgdW5pZm9ybSBnbG9iZU1vZGVVbmlmb3JtcyB7XG4gIGZsb2F0IGdsb2JlTW9kZU1vZDtcbn0gZ2xvYmVNb2RlUHJvcHM7XG5gLFxuICB1bmlmb3JtVHlwZXM6IHtcbiAgICBnbG9iZU1vZGVNb2Q6ICdmMzInXG4gIH1cbn07XG5cbmNvbnN0IGljb25GcmFnbWVudFNoYWRlciA9IC8qIGdsc2wgKi8gYFxcXG4jdmVyc2lvbiAzMDAgZXNcbiNkZWZpbmUgU0hBREVSX05BTUUgc2NhdHRlcnBsb3QtaWNvbi1sYXllci1mcmFnbWVudC1zaGFkZXJcbnByZWNpc2lvbiBoaWdocCBmbG9hdDtcbmluIHZlYzQgdkZpbGxDb2xvcjtcbmluIHZlYzQgdkxpbmVDb2xvcjtcbmluIHZlYzIgdW5pdFBvc2l0aW9uO1xuaW4gZmxvYXQgaW5uZXJVbml0UmFkaXVzO1xuaW4gZmxvYXQgb3V0ZXJSYWRpdXNQaXhlbHM7XG5vdXQgdmVjNCBmcmFnQ29sb3I7XG52b2lkIG1haW4odm9pZCkge1xuICBnZW9tZXRyeS51diA9IHVuaXRQb3NpdGlvbjtcbiAgZnJhZ0NvbG9yID0gdkZpbGxDb2xvcjtcbiAgREVDS0dMX0ZJTFRFUl9DT0xPUihmcmFnQ29sb3IsIGdlb21ldHJ5KTtcbn1cbmA7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NhdHRlcnBsb3RJY29uTGF5ZXJQcm9wcyBleHRlbmRzIFNjYXR0ZXJwbG90TGF5ZXJQcm9wczxhbnk+IHtcbiAgaWNvbkdlb21ldHJ5OiBudW1iZXJbXTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2NhdHRlcnBsb3RJY29uTGF5ZXIgZXh0ZW5kcyBTY2F0dGVycGxvdExheWVyPGFueSwgU2NhdHRlcnBsb3RJY29uTGF5ZXJQcm9wcz4ge1xuICBnZXRTaGFkZXJzKCkge1xuICAgIGNvbnN0IHNoYWRlcnMgPSBzdXBlci5nZXRTaGFkZXJzKCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnNoYWRlcnMsXG4gICAgICBmczogaWNvbkZyYWdtZW50U2hhZGVyLFxuICAgICAgbW9kdWxlczogWy4uLihzaGFkZXJzLm1vZHVsZXMgfHwgW10pLCBnbG9iZU1vZGVVbmlmb3Jtc10sXG4gICAgICBpbmplY3Q6IHtcbiAgICAgICAgJ3ZzOkRFQ0tHTF9GSUxURVJfU0laRSc6IGBcbiAgICAgICAgICBzaXplLnh5ICo9IGdsb2JlTW9kZVByb3BzLmdsb2JlTW9kZU1vZDtgXG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGRyYXcob3B0cykge1xuICAgIGNvbnN0IG1vZGVsID0gdGhpcy5zdGF0ZS5tb2RlbDtcbiAgICBpZiAobW9kZWwpIHtcbiAgICAgIG1vZGVsLnNoYWRlcklucHV0cy5zZXRQcm9wcyh7XG4gICAgICAgIGdsb2JlTW9kZToge1xuICAgICAgICAgIGdsb2JlTW9kZU1vZDogKHRoaXMuY29udGV4dC52aWV3cG9ydCBhcyBhbnkpLnJlc29sdXRpb24gPyAtMC41IDogMVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgc3VwZXIuZHJhdyhvcHRzKTtcbiAgfVxuXG4gIF9nZXRNb2RlbCgpIHtcbiAgICBjb25zdCB7aWNvbkdlb21ldHJ5fSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgcG9zaXRpb25zID0gaWNvbkdlb21ldHJ5ID8gbmV3IEZsb2F0MzJBcnJheShpY29uR2VvbWV0cnkpIDogbmV3IEZsb2F0MzJBcnJheShERUZBVUxUX1BPUyk7XG5cbiAgICByZXR1cm4gbmV3IE1vZGVsKHRoaXMuY29udGV4dC5kZXZpY2UsIHtcbiAgICAgIC4uLnRoaXMuZ2V0U2hhZGVycygpLFxuICAgICAgaWQ6IHRoaXMucHJvcHMuaWQsXG4gICAgICBidWZmZXJMYXlvdXQ6IHRoaXMuZ2V0QXR0cmlidXRlTWFuYWdlcigpIS5nZXRCdWZmZXJMYXlvdXRzKCksXG4gICAgICBnZW9tZXRyeTogbmV3IEdlb21ldHJ5KHtcbiAgICAgICAgdG9wb2xvZ3k6IGljb25HZW9tZXRyeSA/IFRPUE9MT0dZLlRSSUFOR0xFX0xJU1QgOiBUT1BPTE9HWS5UUklBTkdMRV9TVFJJUCxcbiAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgIHBvc2l0aW9uczoge3NpemU6IDMsIHZhbHVlOiBwb3NpdGlvbnN9XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgaXNJbnN0YW5jZWQ6IHRydWVcbiAgICB9KTtcbiAgfVxufVxuXG5TY2F0dGVycGxvdEljb25MYXllci5sYXllck5hbWUgPSAnU2NhdHRlcnBsb3RJY29uTGF5ZXInO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTs7QUFFQSxTQUFRQSxnQkFBZ0IsUUFBOEIsaUJBQWlCO0FBQ3ZFLFNBQVFDLFFBQVEsRUFBRUMsS0FBSyxRQUFPLGlCQUFpQjtBQUMvQyxTQUFRQyxRQUFRLFFBQU8sc0JBQXNCO0FBRTdDLElBQU1DLFdBQVcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7QUFFNUQsSUFBTUMsaUJBQWlCLEdBQUc7RUFDeEJDLElBQUksRUFBRSxXQUFXO0VBQ2pCQyxFQUFFLDJFQUdIO0VBQ0NDLFlBQVksRUFBRTtJQUNa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
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
|
+
import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
|
|
3
|
+
import _createClass from "@babel/runtime/helpers/esm/createClass";
|
|
4
|
+
import _possibleConstructorReturn from "@babel/runtime/helpers/esm/possibleConstructorReturn";
|
|
5
|
+
import _getPrototypeOf from "@babel/runtime/helpers/esm/getPrototypeOf";
|
|
6
|
+
import _inherits from "@babel/runtime/helpers/esm/inherits";
|
|
7
|
+
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; }
|
|
8
|
+
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) { _defineProperty(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; }
|
|
9
|
+
function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
|
|
10
|
+
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
11
|
+
// SPDX-License-Identifier: MIT
|
|
12
|
+
// Copyright contributors to the kepler.gl project
|
|
13
|
+
|
|
14
|
+
import { CompositeLayer } from '@deck.gl/core';
|
|
15
|
+
import ScatterplotIconLayer from './scatterplot-icon-layer';
|
|
16
|
+
|
|
17
|
+
// default icon geometry is a square
|
|
18
|
+
var DEFAULT_ICON_GEOMETRY = [1, 1, 0, 1, -1, 0, -1, -1, 0, -1, -1, 0, -1, 1, 0, 1, 1, 0];
|
|
19
|
+
var defaultProps = {
|
|
20
|
+
getIconGeometry: function getIconGeometry() {
|
|
21
|
+
return DEFAULT_ICON_GEOMETRY;
|
|
22
|
+
},
|
|
23
|
+
getIcon: function getIcon(d) {
|
|
24
|
+
return d.icon;
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
var SvgIconLayer = /*#__PURE__*/function (_CompositeLayer) {
|
|
28
|
+
function SvgIconLayer() {
|
|
29
|
+
_classCallCheck(this, SvgIconLayer);
|
|
30
|
+
return _callSuper(this, SvgIconLayer, arguments);
|
|
31
|
+
}
|
|
32
|
+
_inherits(SvgIconLayer, _CompositeLayer);
|
|
33
|
+
return _createClass(SvgIconLayer, [{
|
|
34
|
+
key: "initializeState",
|
|
35
|
+
value:
|
|
36
|
+
// Must be defined
|
|
37
|
+
function initializeState() {
|
|
38
|
+
this.state = {
|
|
39
|
+
data: {}
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
}, {
|
|
43
|
+
key: "updateState",
|
|
44
|
+
value: function updateState(_ref) {
|
|
45
|
+
var changeFlags = _ref.changeFlags;
|
|
46
|
+
if (changeFlags.dataChanged) {
|
|
47
|
+
this._extractSublayers();
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}, {
|
|
51
|
+
key: "_extractSublayers",
|
|
52
|
+
value: function _extractSublayers() {
|
|
53
|
+
var _this$props = this.props,
|
|
54
|
+
rawData = _this$props.data,
|
|
55
|
+
getIconGeometry = _this$props.getIconGeometry,
|
|
56
|
+
getIcon = _this$props.getIcon;
|
|
57
|
+
var data = rawData;
|
|
58
|
+
var iconLayers = {};
|
|
59
|
+
for (var i = 0; i < data.length; i++) {
|
|
60
|
+
var iconId = getIcon(data[i]);
|
|
61
|
+
iconLayers[iconId] = iconLayers[iconId] || {
|
|
62
|
+
id: iconId,
|
|
63
|
+
geometry: getIconGeometry(iconId) || DEFAULT_ICON_GEOMETRY,
|
|
64
|
+
data: []
|
|
65
|
+
};
|
|
66
|
+
iconLayers[iconId].data.push(data[i]);
|
|
67
|
+
}
|
|
68
|
+
this.setState({
|
|
69
|
+
data: Object.values(iconLayers)
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
}, {
|
|
73
|
+
key: "_updateAutoHighlight",
|
|
74
|
+
value: function _updateAutoHighlight(info) {
|
|
75
|
+
var _info$sourceLayer;
|
|
76
|
+
info === null || info === void 0 || (_info$sourceLayer = info.sourceLayer) === null || _info$sourceLayer === void 0 || _info$sourceLayer.updateAutoHighlight(info);
|
|
77
|
+
}
|
|
78
|
+
}, {
|
|
79
|
+
key: "renderLayers",
|
|
80
|
+
value: function renderLayers() {
|
|
81
|
+
var _this = this;
|
|
82
|
+
var layerId = this.props.id;
|
|
83
|
+
var data = this.state.data;
|
|
84
|
+
var layers = data && data.length && data.map(function (_ref2) {
|
|
85
|
+
var id = _ref2.id,
|
|
86
|
+
data = _ref2.data,
|
|
87
|
+
geometry = _ref2.geometry;
|
|
88
|
+
return new ScatterplotIconLayer(_objectSpread(_objectSpread({}, _this.props), {}, {
|
|
89
|
+
id: "".concat(layerId, "-").concat(id),
|
|
90
|
+
data: data,
|
|
91
|
+
iconGeometry: geometry
|
|
92
|
+
}));
|
|
93
|
+
});
|
|
94
|
+
return layers && layers.length > 0 ? layers : null;
|
|
95
|
+
}
|
|
96
|
+
}]);
|
|
97
|
+
}(CompositeLayer);
|
|
98
|
+
export { SvgIconLayer as default };
|
|
99
|
+
SvgIconLayer.layerName = 'SvgIconLayer';
|
|
100
|
+
SvgIconLayer.defaultProps = defaultProps;
|
|
101
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDb21wb3NpdGVMYXllciIsIlNjYXR0ZXJwbG90SWNvbkxheWVyIiwiREVGQVVMVF9JQ09OX0dFT01FVFJZIiwiZGVmYXVsdFByb3BzIiwiZ2V0SWNvbkdlb21ldHJ5IiwiZ2V0SWNvbiIsImQiLCJpY29uIiwiU3ZnSWNvbkxheWVyIiwiX0NvbXBvc2l0ZUxheWVyIiwiX2NsYXNzQ2FsbENoZWNrIiwiX2NhbGxTdXBlciIsImFyZ3VtZW50cyIsIl9pbmhlcml0cyIsIl9jcmVhdGVDbGFzcyIsImtleSIsInZhbHVlIiwiaW5pdGlhbGl6ZVN0YXRlIiwic3RhdGUiLCJkYXRhIiwidXBkYXRlU3RhdGUiLCJfcmVmIiwiY2hhbmdlRmxhZ3MiLCJkYXRhQ2hhbmdlZCIsIl9leHRyYWN0U3VibGF5ZXJzIiwiX3RoaXMkcHJvcHMiLCJwcm9wcyIsInJhd0RhdGEiLCJpY29uTGF5ZXJzIiwiaSIsImxlbmd0aCIsImljb25JZCIsImlkIiwiZ2VvbWV0cnkiLCJwdXNoIiwic2V0U3RhdGUiLCJPYmplY3QiLCJ2YWx1ZXMiLCJfdXBkYXRlQXV0b0hpZ2hsaWdodCIsImluZm8iLCJfaW5mbyRzb3VyY2VMYXllciIsInNvdXJjZUxheWVyIiwidXBkYXRlQXV0b0hpZ2hsaWdodCIsInJlbmRlckxheWVycyIsIl90aGlzIiwibGF5ZXJJZCIsImxheWVycyIsIm1hcCIsIl9yZWYyIiwiX29iamVjdFNwcmVhZCIsImNvbmNhdCIsImljb25HZW9tZXRyeSIsImRlZmF1bHQiLCJsYXllck5hbWUiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3ZnLWljb24tbGF5ZXIvc3ZnLWljb24tbGF5ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtDb21wb3NpdGVMYXllciwgQ29tcG9zaXRlTGF5ZXJQcm9wcywgTGF5ZXIsIFBvc2l0aW9ufSBmcm9tICdAZGVjay5nbC9jb3JlJztcblxuaW1wb3J0IHtSR0JDb2xvciwgUkdCQUNvbG9yfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCBTY2F0dGVycGxvdEljb25MYXllciBmcm9tICcuL3NjYXR0ZXJwbG90LWljb24tbGF5ZXInO1xuXG4vLyBkZWZhdWx0IGljb24gZ2VvbWV0cnkgaXMgYSBzcXVhcmVcbmNvbnN0IERFRkFVTFRfSUNPTl9HRU9NRVRSWSA9IFsxLCAxLCAwLCAxLCAtMSwgMCwgLTEsIC0xLCAwLCAtMSwgLTEsIDAsIC0xLCAxLCAwLCAxLCAxLCAwXTtcblxuaW50ZXJmYWNlIFN2Z0ljb25EYXRhIHtcbiAgaWQ6IHN0cmluZztcbiAgZGF0YTogdW5rbm93bltdO1xuICBnZW9tZXRyeTogbnVtYmVyW107XG59XG5cbmNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgZ2V0SWNvbkdlb21ldHJ5OiAoKSA9PiBERUZBVUxUX0lDT05fR0VPTUVUUlksXG4gIGdldEljb246IChkOiB7aWNvbjogc3RyaW5nfSkgPT4gZC5pY29uXG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFN2Z0ljb25MYXllclByb3BzIGV4dGVuZHMgQ29tcG9zaXRlTGF5ZXJQcm9wcyB7XG4gIGdldEljb25HZW9tZXRyeTogKGk6IHN0cmluZykgPT4gbnVtYmVyW107XG4gIGdldEljb246IChkOiB7aWNvbjogc3RyaW5nfSkgPT4gc3RyaW5nO1xuICBnZXRQb3NpdGlvbjogKGQ6IGFueSkgPT4gUG9zaXRpb247XG4gIGdldFJhZGl1czogKChkOiBhbnkpID0+IG51bWJlcikgfCBudW1iZXI7XG4gIGdldEZpbGxDb2xvcjogUkdCQ29sb3IgfCBSR0JBQ29sb3I7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN2Z0ljb25MYXllciBleHRlbmRzIENvbXBvc2l0ZUxheWVyPFN2Z0ljb25MYXllclByb3BzPiB7XG4gIC8vIE11c3QgYmUgZGVmaW5lZFxuICBpbml0aWFsaXplU3RhdGUoKSB7XG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIGRhdGE6IHt9XG4gICAgfTtcbiAgfVxuXG4gIHVwZGF0ZVN0YXRlKHtjaGFuZ2VGbGFnc30pIHtcbiAgICBpZiAoY2hhbmdlRmxhZ3MuZGF0YUNoYW5nZWQpIHtcbiAgICAgIHRoaXMuX2V4dHJhY3RTdWJsYXllcnMoKTtcbiAgICB9XG4gIH1cblxuICBfZXh0cmFjdFN1YmxheWVycygpIHtcbiAgICBjb25zdCB7ZGF0YTogcmF3RGF0YSwgZ2V0SWNvbkdlb21ldHJ5LCBnZXRJY29ufSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgZGF0YSA9IHJhd0RhdGEgYXMge2ljb246IHN0cmluZ31bXTtcblxuICAgIGNvbnN0IGljb25MYXllcnM6IFJlY29yZDxzdHJpbmcsIFN2Z0ljb25EYXRhPiA9IHt9O1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgaWNvbklkID0gZ2V0SWNvbihkYXRhW2ldKTtcbiAgICAgIGljb25MYXllcnNbaWNvbklkXSA9IGljb25MYXllcnNbaWNvbklkXSB8fCB7XG4gICAgICAgIGlkOiBpY29uSWQsXG4gICAgICAgIGdlb21ldHJ5OiBnZXRJY29uR2VvbWV0cnkoaWNvbklkKSB8fCBERUZBVUxUX0lDT05fR0VPTUVUUlksXG4gICAgICAgIGRhdGE6IFtdXG4gICAgICB9O1xuICAgICAgaWNvbkxheWVyc1tpY29uSWRdLmRhdGEucHVzaChkYXRhW2ldKTtcbiAgICB9XG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBkYXRhOiBPYmplY3QudmFsdWVzKGljb25MYXllcnMpXG4gICAgfSk7XG4gIH1cblxuICBfdXBkYXRlQXV0b0hpZ2hsaWdodChpbmZvKSB7XG4gICAgaW5mbz8uc291cmNlTGF5ZXI/LnVwZGF0ZUF1dG9IaWdobGlnaHQoaW5mbyk7XG4gIH1cblxuICByZW5kZXJMYXllcnMoKTogTGF5ZXJbXSB8IG51bGwge1xuICAgIGNvbnN0IGxheWVySWQgPSB0aGlzLnByb3BzLmlkO1xuICAgIGNvbnN0IGRhdGEgPSB0aGlzLnN0YXRlLmRhdGEgYXMgU3ZnSWNvbkRhdGFbXTtcblxuICAgIGNvbnN0IGxheWVycyA9XG4gICAgICBkYXRhICYmXG4gICAgICBkYXRhLmxlbmd0aCAmJlxuICAgICAgZGF0YS5tYXAoXG4gICAgICAgICh7aWQsIGRhdGEsIGdlb21ldHJ5fSkgPT5cbiAgICAgICAgICBuZXcgU2NhdHRlcnBsb3RJY29uTGF5ZXIoe1xuICAgICAgICAgICAgLi4udGhpcy5wcm9wcyxcbiAgICAgICAgICAgIGlkOiBgJHtsYXllcklkfS0ke2lkfWAsXG4gICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgaWNvbkdlb21ldHJ5OiBnZW9tZXRyeVxuICAgICAgICAgIH0pXG4gICAgICApO1xuXG4gICAgcmV0dXJuIGxheWVycyAmJiBsYXllcnMubGVuZ3RoID4gMCA/IGxheWVycyA6IG51bGw7XG4gIH1cbn1cblxuU3ZnSWNvbkxheWVyLmxheWVyTmFtZSA9ICdTdmdJY29uTGF5ZXInO1xuU3ZnSWNvbkxheWVyLmRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQ0E7O0FBRUEsU0FBUUEsY0FBYyxRQUE2QyxlQUFlO0FBR2xGLE9BQU9DLG9CQUFvQixNQUFNLDBCQUEwQjs7QUFFM0Q7QUFDQSxJQUFNQyxxQkFBcUIsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBUTFGLElBQU1DLFlBQVksR0FBRztFQUNuQkMsZUFBZSxFQUFFLFNBQWpCQSxlQUFl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
|