@kepler.gl/deckgl-layers 3.3.0-alpha.4 → 3.3.0-alpha.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (190) 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 +220 -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 +569 -0
  12. package/dist/cjs/globe/globe-stars-layer.js +69 -0
  13. package/dist/cjs/globe/globe-view.js +407 -0
  14. package/dist/{globe → cjs/globe}/index.js +1 -1
  15. package/dist/cjs/globe/mvt-label-layer.js +190 -0
  16. package/dist/cjs/grid-layer/enhanced-cpu-grid-layer.js +116 -0
  17. package/dist/cjs/hexagon-layer/enhanced-hexagon-layer.js +134 -0
  18. package/dist/{index.js → cjs/index.js} +1 -1
  19. package/dist/cjs/layer-utils/aggregation-utils.js +181 -0
  20. package/dist/cjs/layer-utils/cluster-utils.js +93 -0
  21. package/dist/cjs/layer-utils/cpu-aggregator.js +798 -0
  22. package/dist/cjs/layer-utils/globe-cell-utils.js +173 -0
  23. package/dist/cjs/layer-utils/shader-utils.js +38 -0
  24. package/dist/cjs/line-layer/line-layer.js +95 -0
  25. package/dist/cjs/raster/images.js +271 -0
  26. package/dist/cjs/raster/pipeline-validation-patch.js +101 -0
  27. package/dist/cjs/raster/raster-layer/raster-layer-shaders.js +163 -0
  28. package/dist/cjs/raster/raster-layer/raster-layer-webgl1.fs.js +10 -0
  29. package/dist/cjs/raster/raster-layer/raster-layer-webgl1.vs.js +10 -0
  30. package/dist/cjs/raster/raster-layer/raster-layer-webgl2.fs.js +10 -0
  31. package/dist/cjs/raster/raster-layer/raster-layer-webgl2.vs.js +10 -0
  32. package/dist/cjs/raster/raster-layer/raster-layer.js +287 -0
  33. package/dist/cjs/raster/raster-mesh-layer/matrix.js +18 -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 +214 -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 +561 -0
  74. package/dist/esm/globe/globe-stars-layer.js +63 -0
  75. package/dist/esm/globe/globe-view.js +401 -0
  76. package/dist/esm/globe/index.js +26 -0
  77. package/dist/esm/globe/mvt-label-layer.js +187 -0
  78. package/dist/esm/grid-layer/enhanced-cpu-grid-layer.js +112 -0
  79. package/dist/esm/hexagon-layer/enhanced-hexagon-layer.js +130 -0
  80. package/dist/esm/index.js +22 -0
  81. package/dist/esm/layer-utils/aggregation-utils.js +172 -0
  82. package/dist/esm/layer-utils/cluster-utils.js +86 -0
  83. package/dist/esm/layer-utils/cpu-aggregator.js +788 -0
  84. package/dist/esm/layer-utils/globe-cell-utils.js +167 -0
  85. package/dist/esm/layer-utils/shader-utils.js +32 -0
  86. package/dist/esm/line-layer/line-layer.js +91 -0
  87. package/dist/esm/raster/images.js +267 -0
  88. package/dist/esm/raster/pipeline-validation-patch.js +94 -0
  89. package/dist/esm/raster/raster-layer/raster-layer-shaders.js +153 -0
  90. package/dist/esm/raster/raster-layer/raster-layer-webgl1.fs.js +5 -0
  91. package/dist/esm/raster/raster-layer/raster-layer-webgl1.vs.js +5 -0
  92. package/dist/esm/raster/raster-layer/raster-layer-webgl2.fs.js +5 -0
  93. package/dist/esm/raster/raster-layer/raster-layer-webgl2.vs.js +5 -0
  94. package/dist/esm/raster/raster-layer/raster-layer.js +283 -0
  95. package/dist/esm/raster/raster-mesh-layer/matrix.js +12 -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 +13 -2
  126. package/dist/globe/globe-depth-disk-layer.d.ts +1 -0
  127. package/dist/globe/globe-layers.d.ts +8 -2
  128. package/dist/raster/images.d.ts +10 -1
  129. package/dist/raster/raster-layer/raster-layer.d.ts +4 -0
  130. package/dist/raster/raster-mesh-layer/raster-mesh-layer.d.ts +4 -0
  131. package/dist/wms/wms-layer.d.ts +8 -0
  132. package/package.json +18 -11
  133. package/dist/3d-building-layer/3d-building-layer.js +0 -66
  134. package/dist/3d-building-layer/3d-building-utils.js +0 -166
  135. package/dist/3d-building-layer/types.js +0 -6
  136. package/dist/cluster-layer/cluster-layer.js +0 -292
  137. package/dist/column-layer/enhanced-column-layer.js +0 -160
  138. package/dist/deckgl-extensions/filter-shader-module.js +0 -26
  139. package/dist/globe/atmosphere-layer.js +0 -184
  140. package/dist/globe/enhanced-multi-icon-layer.js +0 -63
  141. package/dist/globe/globe-depth-disk-layer.js +0 -145
  142. package/dist/globe/globe-layers.js +0 -565
  143. package/dist/globe/globe-stars-layer.js +0 -69
  144. package/dist/globe/globe-view.js +0 -316
  145. package/dist/globe/mvt-label-layer.js +0 -190
  146. package/dist/grid-layer/enhanced-cpu-grid-layer.js +0 -116
  147. package/dist/hexagon-layer/enhanced-hexagon-layer.js +0 -134
  148. package/dist/layer-utils/aggregation-utils.js +0 -181
  149. package/dist/layer-utils/cluster-utils.js +0 -93
  150. package/dist/layer-utils/cpu-aggregator.js +0 -798
  151. package/dist/layer-utils/globe-cell-utils.js +0 -173
  152. package/dist/layer-utils/shader-utils.js +0 -38
  153. package/dist/line-layer/line-layer.js +0 -95
  154. package/dist/raster/images.js +0 -259
  155. package/dist/raster/pipeline-validation-patch.js +0 -101
  156. package/dist/raster/raster-layer/raster-layer-shaders.js +0 -163
  157. package/dist/raster/raster-layer/raster-layer-webgl1.fs.js +0 -10
  158. package/dist/raster/raster-layer/raster-layer-webgl1.vs.js +0 -10
  159. package/dist/raster/raster-layer/raster-layer-webgl2.fs.js +0 -10
  160. package/dist/raster/raster-layer/raster-layer-webgl2.vs.js +0 -10
  161. package/dist/raster/raster-layer/raster-layer.js +0 -237
  162. package/dist/raster/raster-mesh-layer/matrix.js +0 -18
  163. package/dist/raster/raster-mesh-layer/raster-mesh-layer-shaders.js +0 -38
  164. package/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl1.fs.js +0 -10
  165. package/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl1.vs.js +0 -10
  166. package/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl2.fs.js +0 -10
  167. package/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl2.vs.js +0 -10
  168. package/dist/raster/raster-mesh-layer/raster-mesh-layer.js +0 -271
  169. package/dist/raster/raster-processing-uniforms.js +0 -124
  170. package/dist/raster/types.js +0 -6
  171. package/dist/raster/util.js +0 -139
  172. package/dist/raster/webgl/color/colormap.js +0 -45
  173. package/dist/raster/webgl/color/filter.js +0 -58
  174. package/dist/raster/webgl/color/gamma-contrast.js +0 -68
  175. package/dist/raster/webgl/color/linear-rescale.js +0 -35
  176. package/dist/raster/webgl/color/saturation.js +0 -42
  177. package/dist/raster/webgl/color/sigmoidal-contrast.js +0 -68
  178. package/dist/raster/webgl/pansharpen/pansharpen-brovey.js +0 -46
  179. package/dist/raster/webgl/spectral-indices/evi.js +0 -26
  180. package/dist/raster/webgl/spectral-indices/msavi.js +0 -25
  181. package/dist/raster/webgl/spectral-indices/normalized-difference.js +0 -19
  182. package/dist/raster/webgl/spectral-indices/savi.js +0 -21
  183. package/dist/raster/webgl/texture/combine-bands.js +0 -65
  184. package/dist/raster/webgl/texture/mask.js +0 -50
  185. package/dist/raster/webgl/texture/reorder-bands.js +0 -72
  186. package/dist/raster/webgl/texture/rgba-image.js +0 -34
  187. package/dist/raster/webgl/types.js +0 -6
  188. package/dist/svg-icon-layer/scatterplot-icon-layer.js +0 -88
  189. package/dist/svg-icon-layer/svg-icon-layer.js +0 -104
  190. 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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