@webviz/subsurface-viewer 0.0.1-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (501) hide show
  1. package/dist/DashSubsurfaceViewer.d.ts +56 -0
  2. package/dist/DashSubsurfaceViewer.js +160 -0
  3. package/dist/DashSubsurfaceViewer.js.map +1 -0
  4. package/dist/SubsurfaceViewer.d.ts +65 -0
  5. package/dist/SubsurfaceViewer.js +208 -0
  6. package/dist/SubsurfaceViewer.js.map +1 -0
  7. package/dist/assets/glTF/north_arrow/scene.bin +0 -0
  8. package/dist/assets/glTF/north_arrow/scene.gltf +315 -0
  9. package/dist/assets/glTF/north_arrow/textures/Arrow5_baseColor.png +0 -0
  10. package/dist/assets/glTF/north_arrow/textures/Arrow5_metallicRoughness.png +0 -0
  11. package/dist/assets/glTF/north_arrow/textures/Arrow5_normal.png +0 -0
  12. package/dist/components/ColorLegend.d.ts +26 -0
  13. package/dist/components/ColorLegend.js +19 -0
  14. package/dist/components/ColorLegend.js.map +1 -0
  15. package/dist/components/ColorLegends.d.ts +12 -0
  16. package/dist/components/ColorLegends.js +10 -0
  17. package/dist/components/ColorLegends.js.map +1 -0
  18. package/dist/components/DistanceScale.d.ts +12 -0
  19. package/dist/components/DistanceScale.js +45 -0
  20. package/dist/components/DistanceScale.js.map +1 -0
  21. package/dist/components/InfoCard.d.ts +11 -0
  22. package/dist/components/InfoCard.js +149 -0
  23. package/dist/components/InfoCard.js.map +1 -0
  24. package/dist/components/Map.d.ts +158 -0
  25. package/dist/components/Map.js +867 -0
  26. package/dist/components/Map.js.map +1 -0
  27. package/dist/components/StatusIndicator.d.ts +8 -0
  28. package/dist/components/StatusIndicator.js +20 -0
  29. package/dist/components/StatusIndicator.js.map +1 -0
  30. package/dist/components/ViewAnnotation.d.ts +7 -0
  31. package/dist/components/ViewAnnotation.js +13 -0
  32. package/dist/components/ViewAnnotation.js.map +1 -0
  33. package/dist/components/ViewFooter.d.ts +6 -0
  34. package/dist/components/ViewFooter.js +21 -0
  35. package/dist/components/ViewFooter.js.map +1 -0
  36. package/dist/components/settings/DrawModeSelector.d.ts +18 -0
  37. package/dist/components/settings/DrawModeSelector.js +20 -0
  38. package/dist/components/settings/DrawModeSelector.js.map +1 -0
  39. package/dist/components/settings/LayerProperty.d.ts +6 -0
  40. package/dist/components/settings/LayerProperty.js +39 -0
  41. package/dist/components/settings/LayerProperty.js.map +1 -0
  42. package/dist/components/settings/LayerSettingsButton.d.ts +7 -0
  43. package/dist/components/settings/LayerSettingsButton.js +51 -0
  44. package/dist/components/settings/LayerSettingsButton.js.map +1 -0
  45. package/dist/components/settings/LayersButton.d.ts +8 -0
  46. package/dist/components/settings/LayersButton.js +45 -0
  47. package/dist/components/settings/LayersButton.js.map +1 -0
  48. package/dist/components/settings/NumericInput.d.ts +20 -0
  49. package/dist/components/settings/NumericInput.js +25 -0
  50. package/dist/components/settings/NumericInput.js.map +1 -0
  51. package/dist/components/settings/Settings.d.ts +7 -0
  52. package/dist/components/settings/Settings.js +39 -0
  53. package/dist/components/settings/Settings.js.map +1 -0
  54. package/dist/components/settings/SliderInput.d.ts +29 -0
  55. package/dist/components/settings/SliderInput.js +21 -0
  56. package/dist/components/settings/SliderInput.js.map +1 -0
  57. package/dist/components/settings/ToggleButton.d.ts +17 -0
  58. package/dist/components/settings/ToggleButton.js +19 -0
  59. package/dist/components/settings/ToggleButton.js.map +1 -0
  60. package/dist/index.d.ts +2 -0
  61. package/dist/index.js +3 -0
  62. package/dist/index.js.map +1 -0
  63. package/dist/inputSchema/ColorTables.json +51 -0
  64. package/dist/inputSchema/FaultPolygons.json +80 -0
  65. package/dist/inputSchema/Grid.json +39 -0
  66. package/dist/inputSchema/PieChart.json +72 -0
  67. package/dist/inputSchema/WellLog.json +126 -0
  68. package/dist/inputSchema/WellLogTemplate.json +136 -0
  69. package/dist/inputSchema/WellLogs.json +5 -0
  70. package/dist/inputSchema/Wells.json +106 -0
  71. package/dist/inputSchema/schemaValidationUtil.d.ts +5 -0
  72. package/dist/inputSchema/schemaValidationUtil.js +48 -0
  73. package/dist/inputSchema/schemaValidationUtil.js.map +1 -0
  74. package/dist/inputSchema/validator.d.ts +1 -0
  75. package/dist/inputSchema/validator.js +64 -0
  76. package/dist/inputSchema/validator.js.map +1 -0
  77. package/dist/inputSchema/wellCompletions.json +108 -0
  78. package/dist/layers/BoxSelectionLayer/boxSelectionLayer.d.ts +37 -0
  79. package/dist/layers/BoxSelectionLayer/boxSelectionLayer.js +86 -0
  80. package/dist/layers/BoxSelectionLayer/boxSelectionLayer.js.map +1 -0
  81. package/dist/layers/axes/axes-fragment.glsl.d.ts +2 -0
  82. package/dist/layers/axes/axes-fragment.glsl.js +15 -0
  83. package/dist/layers/axes/axes-fragment.glsl.js.map +1 -0
  84. package/dist/layers/axes/axesLayer.d.ts +38 -0
  85. package/dist/layers/axes/axesLayer.js +485 -0
  86. package/dist/layers/axes/axesLayer.js.map +1 -0
  87. package/dist/layers/axes/boxLayer.d.ts +20 -0
  88. package/dist/layers/axes/boxLayer.js +52 -0
  89. package/dist/layers/axes/boxLayer.js.map +1 -0
  90. package/dist/layers/axes/grid-vertex.glsl.d.ts +2 -0
  91. package/dist/layers/axes/grid-vertex.glsl.js +14 -0
  92. package/dist/layers/axes/grid-vertex.glsl.js.map +1 -0
  93. package/dist/layers/axes2d/axes2DLayer.d.ts +58 -0
  94. package/dist/layers/axes2d/axes2DLayer.js +613 -0
  95. package/dist/layers/axes2d/axes2DLayer.js.map +1 -0
  96. package/dist/layers/axes2d/font-atlas.png +0 -0
  97. package/dist/layers/axes2d/label-fragment.glsl.d.ts +2 -0
  98. package/dist/layers/axes2d/label-fragment.glsl.js +38 -0
  99. package/dist/layers/axes2d/label-fragment.glsl.js.map +1 -0
  100. package/dist/layers/axes2d/label-vertex.glsl.d.ts +2 -0
  101. package/dist/layers/axes2d/label-vertex.glsl.js +21 -0
  102. package/dist/layers/axes2d/label-vertex.glsl.js.map +1 -0
  103. package/dist/layers/axes2d/line-fragment.glsl.d.ts +2 -0
  104. package/dist/layers/axes2d/line-fragment.glsl.js +15 -0
  105. package/dist/layers/axes2d/line-fragment.glsl.js.map +1 -0
  106. package/dist/layers/axes2d/line-vertex.glsl.d.ts +2 -0
  107. package/dist/layers/axes2d/line-vertex.glsl.js +14 -0
  108. package/dist/layers/axes2d/line-vertex.glsl.js.map +1 -0
  109. package/dist/layers/colormap/colormap.fs.glsl.d.ts +2 -0
  110. package/dist/layers/colormap/colormap.fs.glsl.js +42 -0
  111. package/dist/layers/colormap/colormap.fs.glsl.js.map +1 -0
  112. package/dist/layers/colormap/colormapLayer.d.ts +24 -0
  113. package/dist/layers/colormap/colormapLayer.js +150 -0
  114. package/dist/layers/colormap/colormapLayer.js.map +1 -0
  115. package/dist/layers/drawing/drawingLayer.d.ts +17 -0
  116. package/dist/layers/drawing/drawingLayer.js +202 -0
  117. package/dist/layers/drawing/drawingLayer.js.map +1 -0
  118. package/dist/layers/fault_polygons/faultPolygonsLayer.d.ts +9 -0
  119. package/dist/layers/fault_polygons/faultPolygonsLayer.js +43 -0
  120. package/dist/layers/fault_polygons/faultPolygonsLayer.js.map +1 -0
  121. package/dist/layers/grid3d/fragment.fs.glsl.d.ts +2 -0
  122. package/dist/layers/grid3d/fragment.fs.glsl.js +109 -0
  123. package/dist/layers/grid3d/fragment.fs.glsl.js.map +1 -0
  124. package/dist/layers/grid3d/fragment_lines.glsl.d.ts +2 -0
  125. package/dist/layers/grid3d/fragment_lines.glsl.js +21 -0
  126. package/dist/layers/grid3d/fragment_lines.glsl.js.map +1 -0
  127. package/dist/layers/grid3d/grid3dLayer.d.ts +73 -0
  128. package/dist/layers/grid3d/grid3dLayer.js +134 -0
  129. package/dist/layers/grid3d/grid3dLayer.js.map +1 -0
  130. package/dist/layers/grid3d/privateLayer.d.ts +73 -0
  131. package/dist/layers/grid3d/privateLayer.js +174 -0
  132. package/dist/layers/grid3d/privateLayer.js.map +1 -0
  133. package/dist/layers/grid3d/vertex.glsl.d.ts +2 -0
  134. package/dist/layers/grid3d/vertex.glsl.js +43 -0
  135. package/dist/layers/grid3d/vertex.glsl.js.map +1 -0
  136. package/dist/layers/grid3d/vertex_lines.glsl.d.ts +2 -0
  137. package/dist/layers/grid3d/vertex_lines.glsl.js +16 -0
  138. package/dist/layers/grid3d/vertex_lines.glsl.js.map +1 -0
  139. package/dist/layers/grid3d/webworker.d.ts +4 -0
  140. package/dist/layers/grid3d/webworker.js +140 -0
  141. package/dist/layers/grid3d/webworker.js.map +1 -0
  142. package/dist/layers/hillshading2d/hillshading2d.fs.glsl.d.ts +2 -0
  143. package/dist/layers/hillshading2d/hillshading2d.fs.glsl.js +62 -0
  144. package/dist/layers/hillshading2d/hillshading2d.fs.glsl.js.map +1 -0
  145. package/dist/layers/hillshading2d/hillshading2dLayer.d.ts +22 -0
  146. package/dist/layers/hillshading2d/hillshading2dLayer.js +101 -0
  147. package/dist/layers/hillshading2d/hillshading2dLayer.js.map +1 -0
  148. package/dist/layers/index.d.ts +34 -0
  149. package/dist/layers/index.js +19 -0
  150. package/dist/layers/index.js.map +1 -0
  151. package/dist/layers/intersection/unfoldedGeoJsonLayer.d.ts +10 -0
  152. package/dist/layers/intersection/unfoldedGeoJsonLayer.js +64 -0
  153. package/dist/layers/intersection/unfoldedGeoJsonLayer.js.map +1 -0
  154. package/dist/layers/map/fragment.fs.glsl.d.ts +2 -0
  155. package/dist/layers/map/fragment.fs.glsl.js +127 -0
  156. package/dist/layers/map/fragment.fs.glsl.js.map +1 -0
  157. package/dist/layers/map/fragment_lines.glsl.d.ts +2 -0
  158. package/dist/layers/map/fragment_lines.glsl.js +21 -0
  159. package/dist/layers/map/fragment_lines.glsl.js.map +1 -0
  160. package/dist/layers/map/mapLayer.d.ts +120 -0
  161. package/dist/layers/map/mapLayer.js +275 -0
  162. package/dist/layers/map/mapLayer.js.map +1 -0
  163. package/dist/layers/map/privateMapLayer.d.ts +76 -0
  164. package/dist/layers/map/privateMapLayer.js +190 -0
  165. package/dist/layers/map/privateMapLayer.js.map +1 -0
  166. package/dist/layers/map/vertex.glsl.d.ts +2 -0
  167. package/dist/layers/map/vertex.glsl.js +45 -0
  168. package/dist/layers/map/vertex.glsl.js.map +1 -0
  169. package/dist/layers/map/vertex_lines.glsl.d.ts +2 -0
  170. package/dist/layers/map/vertex_lines.glsl.js +16 -0
  171. package/dist/layers/map/vertex_lines.glsl.js.map +1 -0
  172. package/dist/layers/map/webworker.d.ts +4 -0
  173. package/dist/layers/map/webworker.js +362 -0
  174. package/dist/layers/map/webworker.js.map +1 -0
  175. package/dist/layers/northarrow/northArrow3DLayer.d.ts +20 -0
  176. package/dist/layers/northarrow/northArrow3DLayer.js +144 -0
  177. package/dist/layers/northarrow/northArrow3DLayer.js.map +1 -0
  178. package/dist/layers/northarrow/northarrow-fragment.glsl.d.ts +2 -0
  179. package/dist/layers/northarrow/northarrow-fragment.glsl.js +15 -0
  180. package/dist/layers/northarrow/northarrow-fragment.glsl.js.map +1 -0
  181. package/dist/layers/northarrow/northarrow-vertex.glsl.d.ts +2 -0
  182. package/dist/layers/northarrow/northarrow-vertex.glsl.js +14 -0
  183. package/dist/layers/northarrow/northarrow-vertex.glsl.js.map +1 -0
  184. package/dist/layers/piechart/fragment.glsl.d.ts +2 -0
  185. package/dist/layers/piechart/fragment.glsl.js +43 -0
  186. package/dist/layers/piechart/fragment.glsl.js.map +1 -0
  187. package/dist/layers/piechart/pieChartLayer.d.ts +40 -0
  188. package/dist/layers/piechart/pieChartLayer.js +174 -0
  189. package/dist/layers/piechart/pieChartLayer.js.map +1 -0
  190. package/dist/layers/piechart/vertex.glsl.d.ts +2 -0
  191. package/dist/layers/piechart/vertex.glsl.js +43 -0
  192. package/dist/layers/piechart/vertex.glsl.js.map +1 -0
  193. package/dist/layers/points/pointsLayer.d.ts +34 -0
  194. package/dist/layers/points/pointsLayer.js +78 -0
  195. package/dist/layers/points/pointsLayer.js.map +1 -0
  196. package/dist/layers/polylines/polylinesLayer.d.ts +50 -0
  197. package/dist/layers/polylines/polylinesLayer.js +157 -0
  198. package/dist/layers/polylines/polylinesLayer.js.map +1 -0
  199. package/dist/layers/selectable_geojson/selectableGeoJsonLayer.d.ts +6 -0
  200. package/dist/layers/selectable_geojson/selectableGeoJsonLayer.js +22 -0
  201. package/dist/layers/selectable_geojson/selectableGeoJsonLayer.js.map +1 -0
  202. package/dist/layers/shader_modules/decoder.d.ts +15 -0
  203. package/dist/layers/shader_modules/decoder.fs.glsl.d.ts +2 -0
  204. package/dist/layers/shader_modules/decoder.fs.glsl.js +40 -0
  205. package/dist/layers/shader_modules/decoder.fs.glsl.js.map +1 -0
  206. package/dist/layers/shader_modules/decoder.js +29 -0
  207. package/dist/layers/shader_modules/decoder.js.map +1 -0
  208. package/dist/layers/shader_modules/index.d.ts +1 -0
  209. package/dist/layers/shader_modules/index.js +2 -0
  210. package/dist/layers/shader_modules/index.js.map +1 -0
  211. package/dist/layers/terrain/map3DLayer.d.ts +42 -0
  212. package/dist/layers/terrain/map3DLayer.js +324 -0
  213. package/dist/layers/terrain/map3DLayer.js.map +1 -0
  214. package/dist/layers/terrain/terrainMapLayer.d.ts +45 -0
  215. package/dist/layers/terrain/terrainMapLayer.js +183 -0
  216. package/dist/layers/terrain/terrainMapLayer.js.map +1 -0
  217. package/dist/layers/terrain/terrainmap.fs.glsl.d.ts +2 -0
  218. package/dist/layers/terrain/terrainmap.fs.glsl.js +134 -0
  219. package/dist/layers/terrain/terrainmap.fs.glsl.js.map +1 -0
  220. package/dist/layers/triangle/fragment.fs.glsl.d.ts +2 -0
  221. package/dist/layers/triangle/fragment.fs.glsl.js +126 -0
  222. package/dist/layers/triangle/fragment.fs.glsl.js.map +1 -0
  223. package/dist/layers/triangle/fragment_lines.glsl.d.ts +2 -0
  224. package/dist/layers/triangle/fragment_lines.glsl.js +21 -0
  225. package/dist/layers/triangle/fragment_lines.glsl.js.map +1 -0
  226. package/dist/layers/triangle/privateTriangleLayer.d.ts +70 -0
  227. package/dist/layers/triangle/privateTriangleLayer.js +108 -0
  228. package/dist/layers/triangle/privateTriangleLayer.js.map +1 -0
  229. package/dist/layers/triangle/test_data/surfacePoints.d.ts +2 -0
  230. package/dist/layers/triangle/test_data/surfacePoints.js +4345 -0
  231. package/dist/layers/triangle/test_data/surfacePoints.js.map +1 -0
  232. package/dist/layers/triangle/test_data/surfaceTriangles.d.ts +2 -0
  233. package/dist/layers/triangle/test_data/surfaceTriangles.js +7393 -0
  234. package/dist/layers/triangle/test_data/surfaceTriangles.js.map +1 -0
  235. package/dist/layers/triangle/triangleLayer.d.ts +60 -0
  236. package/dist/layers/triangle/triangleLayer.js +170 -0
  237. package/dist/layers/triangle/triangleLayer.js.map +1 -0
  238. package/dist/layers/triangle/vertex.glsl.d.ts +2 -0
  239. package/dist/layers/triangle/vertex.glsl.js +35 -0
  240. package/dist/layers/triangle/vertex.glsl.js.map +1 -0
  241. package/dist/layers/triangle/vertex_lines.glsl.d.ts +2 -0
  242. package/dist/layers/triangle/vertex_lines.glsl.js +16 -0
  243. package/dist/layers/triangle/vertex_lines.glsl.js.map +1 -0
  244. package/dist/layers/triangle/webworker.d.ts +4 -0
  245. package/dist/layers/triangle/webworker.js +132 -0
  246. package/dist/layers/triangle/webworker.js.map +1 -0
  247. package/dist/layers/utils/layerTools.d.ts +52 -0
  248. package/dist/layers/utils/layerTools.js +91 -0
  249. package/dist/layers/utils/layerTools.js.map +1 -0
  250. package/dist/layers/utils/propertyMapTools.d.ts +8 -0
  251. package/dist/layers/utils/propertyMapTools.js +21 -0
  252. package/dist/layers/utils/propertyMapTools.js.map +1 -0
  253. package/dist/layers/wells/utils/spline.d.ts +28 -0
  254. package/dist/layers/wells/utils/spline.js +236 -0
  255. package/dist/layers/wells/utils/spline.js.map +1 -0
  256. package/dist/layers/wells/wellsLayer.d.ts +89 -0
  257. package/dist/layers/wells/wellsLayer.js +939 -0
  258. package/dist/layers/wells/wellsLayer.js.map +1 -0
  259. package/dist/package.json +35 -0
  260. package/dist/redux/actions.d.ts +1 -0
  261. package/dist/redux/actions.js +3 -0
  262. package/dist/redux/actions.js.map +1 -0
  263. package/dist/redux/reducer.d.ts +11 -0
  264. package/dist/redux/reducer.js +28 -0
  265. package/dist/redux/reducer.js.map +1 -0
  266. package/dist/redux/store.d.ts +4 -0
  267. package/dist/redux/store.js +10 -0
  268. package/dist/redux/store.js.map +1 -0
  269. package/dist/redux/types.d.ts +43 -0
  270. package/dist/redux/types.js +79 -0
  271. package/dist/redux/types.js.map +1 -0
  272. package/dist/storybook/SubsurfaceViewer.stories.d.ts +455 -0
  273. package/dist/storybook/SubsurfaceViewer.stories.js +537 -0
  274. package/dist/storybook/SubsurfaceViewer.stories.js.map +1 -0
  275. package/dist/storybook/components/InfoCard.stories.d.ts +48 -0
  276. package/dist/storybook/components/InfoCard.stories.js +36 -0
  277. package/dist/storybook/components/InfoCard.stories.js.map +1 -0
  278. package/dist/storybook/components/colorLegends/ContinuousLegend.stories.d.ts +31 -0
  279. package/dist/storybook/components/colorLegends/ContinuousLegend.stories.js +30 -0
  280. package/dist/storybook/components/colorLegends/ContinuousLegend.stories.js.map +1 -0
  281. package/dist/storybook/components/colorLegends/DiscreteLegend.stories.d.ts +31 -0
  282. package/dist/storybook/components/colorLegends/DiscreteLegend.stories.js +30 -0
  283. package/dist/storybook/components/colorLegends/DiscreteLegend.stories.js.map +1 -0
  284. package/dist/storybook/components/colorLegends/IndividualScaleForMap.stories.d.ts +20 -0
  285. package/dist/storybook/components/colorLegends/IndividualScaleForMap.stories.js +66 -0
  286. package/dist/storybook/components/colorLegends/IndividualScaleForMap.stories.js.map +1 -0
  287. package/dist/storybook/components/colorLegends/SingleScaleForMap.stories.d.ts +65 -0
  288. package/dist/storybook/components/colorLegends/SingleScaleForMap.stories.js +94 -0
  289. package/dist/storybook/components/colorLegends/SingleScaleForMap.stories.js.map +1 -0
  290. package/dist/storybook/components/settings/LayerSettingsButton.stories.d.ts +34 -0
  291. package/dist/storybook/components/settings/LayerSettingsButton.stories.js +31 -0
  292. package/dist/storybook/components/settings/LayerSettingsButton.stories.js.map +1 -0
  293. package/dist/storybook/components/settings/NumericInput.stories.d.ts +14 -0
  294. package/dist/storybook/components/settings/NumericInput.stories.js +15 -0
  295. package/dist/storybook/components/settings/NumericInput.stories.js.map +1 -0
  296. package/dist/storybook/components/settings/ToggleButton.stories.d.ts +13 -0
  297. package/dist/storybook/components/settings/ToggleButton.stories.js +14 -0
  298. package/dist/storybook/components/settings/ToggleButton.stories.js.map +1 -0
  299. package/dist/storybook/schemaValidation/sampleData.d.ts +122 -0
  300. package/dist/storybook/schemaValidation/sampleData.js +172 -0
  301. package/dist/storybook/schemaValidation/sampleData.js.map +1 -0
  302. package/dist/storybook/schemaValidation/schemaValidation.stories.d.ts +31 -0
  303. package/dist/storybook/schemaValidation/schemaValidation.stories.js +42 -0
  304. package/dist/storybook/schemaValidation/schemaValidation.stories.js.map +1 -0
  305. package/dist/utils/configuration.d.ts +631 -0
  306. package/dist/utils/configuration.js +36 -0
  307. package/dist/utils/configuration.js.map +1 -0
  308. package/dist/utils/fit-bounds.d.ts +15 -0
  309. package/dist/utils/fit-bounds.js +66 -0
  310. package/dist/utils/fit-bounds.js.map +1 -0
  311. package/dist/utils/measurement.d.ts +6 -0
  312. package/dist/utils/measurement.js +47 -0
  313. package/dist/utils/measurement.js.map +1 -0
  314. package/dist/utils/northArrow.d.ts +113 -0
  315. package/dist/utils/northArrow.js +5 -0
  316. package/dist/utils/northArrow.js.map +1 -0
  317. package/dist/utils/specExtractor.d.ts +3 -0
  318. package/dist/utils/specExtractor.js +24 -0
  319. package/dist/utils/specExtractor.js.map +1 -0
  320. package/dist/viewports/index.d.ts +1 -0
  321. package/dist/viewports/index.js +2 -0
  322. package/dist/viewports/index.js.map +1 -0
  323. package/dist/viewports/intersectionViewport.d.ts +35 -0
  324. package/dist/viewports/intersectionViewport.js +65 -0
  325. package/dist/viewports/intersectionViewport.js.map +1 -0
  326. package/dist/views/index.d.ts +1 -0
  327. package/dist/views/index.js +2 -0
  328. package/dist/views/index.js.map +1 -0
  329. package/dist/views/intersectionView.d.ts +18 -0
  330. package/dist/views/intersectionView.js +17 -0
  331. package/dist/views/intersectionView.js.map +1 -0
  332. package/package.json +35 -0
  333. package/src/DashSubsurfaceViewer.tsx +270 -0
  334. package/src/SubsurfaceViewer.stories.tsx +449 -0
  335. package/src/SubsurfaceViewer.test.tsx +98 -0
  336. package/src/SubsurfaceViewer.tsx +356 -0
  337. package/src/__snapshots__/SubsurfaceViewer.test.tsx.snap +178 -0
  338. package/src/assets/glTF/north_arrow/scene.bin +0 -0
  339. package/src/assets/glTF/north_arrow/scene.gltf +315 -0
  340. package/src/assets/glTF/north_arrow/textures/Arrow5_baseColor.png +0 -0
  341. package/src/assets/glTF/north_arrow/textures/Arrow5_metallicRoughness.png +0 -0
  342. package/src/assets/glTF/north_arrow/textures/Arrow5_normal.png +0 -0
  343. package/src/components/ColorLegend.test.tsx +32 -0
  344. package/src/components/ColorLegend.tsx +80 -0
  345. package/src/components/ColorLegends.test.tsx +97 -0
  346. package/src/components/ColorLegends.tsx +46 -0
  347. package/src/components/DistanceScale.stories.tsx +28 -0
  348. package/src/components/DistanceScale.test.tsx +36 -0
  349. package/src/components/DistanceScale.tsx +84 -0
  350. package/src/components/InfoCard.test.tsx +110 -0
  351. package/src/components/InfoCard.tsx +263 -0
  352. package/src/components/Map.test.tsx +142 -0
  353. package/src/components/Map.tsx +1435 -0
  354. package/src/components/StatusIndicator.test.tsx +14 -0
  355. package/src/components/StatusIndicator.tsx +38 -0
  356. package/src/components/ViewAnnotation.tsx +16 -0
  357. package/src/components/ViewFooter.test.tsx +12 -0
  358. package/src/components/ViewFooter.tsx +30 -0
  359. package/src/components/__snapshots__/ColorLegends.test.tsx.snap +15 -0
  360. package/src/components/__snapshots__/DistanceScale.test.tsx.snap +33 -0
  361. package/src/components/__snapshots__/InfoCard.test.tsx.snap +561 -0
  362. package/src/components/__snapshots__/Map.test.tsx.snap +119 -0
  363. package/src/components/__snapshots__/StatusIndicator.test.tsx.snap +3 -0
  364. package/src/components/__snapshots__/ViewFooter.test.tsx.snap +7 -0
  365. package/src/components/settings/DrawModeSelector.test.tsx +45 -0
  366. package/src/components/settings/DrawModeSelector.tsx +58 -0
  367. package/src/components/settings/DrawModeSelector_performance.test.tsx +35 -0
  368. package/src/components/settings/LayerProperty.test.tsx +35 -0
  369. package/src/components/settings/LayerProperty.tsx +153 -0
  370. package/src/components/settings/LayerProperty_performance.test.tsx +39 -0
  371. package/src/components/settings/LayerSettingsButton.test.tsx +133 -0
  372. package/src/components/settings/LayerSettingsButton.tsx +95 -0
  373. package/src/components/settings/LayersButton.test.tsx +102 -0
  374. package/src/components/settings/LayersButton.tsx +97 -0
  375. package/src/components/settings/NumericInput.test.tsx +25 -0
  376. package/src/components/settings/NumericInput.tsx +67 -0
  377. package/src/components/settings/Settings.tsx +71 -0
  378. package/src/components/settings/SliderInput.test.tsx +28 -0
  379. package/src/components/settings/SliderInput.tsx +71 -0
  380. package/src/components/settings/ToggleButton.test.tsx +25 -0
  381. package/src/components/settings/ToggleButton.tsx +53 -0
  382. package/src/components/settings/__snapshots__/DrawModeSelector.test.tsx.snap +124 -0
  383. package/src/components/settings/__snapshots__/LayerProperty.test.tsx.snap +124 -0
  384. package/src/components/settings/__snapshots__/LayerSettingsButton.test.tsx.snap +36 -0
  385. package/src/components/settings/__snapshots__/LayersButton.test.tsx.snap +83 -0
  386. package/src/components/settings/__snapshots__/NumericInput.test.tsx.snap +123 -0
  387. package/src/components/settings/__snapshots__/SliderInput.test.tsx.snap +244 -0
  388. package/src/components/settings/__snapshots__/ToggleButton.test.tsx.snap +182 -0
  389. package/src/custom.d.ts +9 -0
  390. package/src/index.ts +5 -0
  391. package/src/inputSchema/ColorTables.json +51 -0
  392. package/src/inputSchema/FaultPolygons.json +80 -0
  393. package/src/inputSchema/Grid.json +39 -0
  394. package/src/inputSchema/PieChart.json +72 -0
  395. package/src/inputSchema/WellLog.json +126 -0
  396. package/src/inputSchema/WellLogTemplate.json +136 -0
  397. package/src/inputSchema/WellLogs.json +5 -0
  398. package/src/inputSchema/Wells.json +106 -0
  399. package/src/inputSchema/schemaValidationUtil.tsx +55 -0
  400. package/src/inputSchema/validator.tsx +72 -0
  401. package/src/inputSchema/wellCompletions.json +108 -0
  402. package/src/layers/BoxSelectionLayer/boxSelectionLayer.stories.tsx +172 -0
  403. package/src/layers/BoxSelectionLayer/boxSelectionLayer.tsx +136 -0
  404. package/src/layers/axes/axes-fragment.glsl.ts +15 -0
  405. package/src/layers/axes/axesLayer.stories.tsx +87 -0
  406. package/src/layers/axes/axesLayer.ts +692 -0
  407. package/src/layers/axes/boxLayer.ts +71 -0
  408. package/src/layers/axes/grid-vertex.glsl.ts +14 -0
  409. package/src/layers/axes2d/axes2DLayer.stories.tsx +150 -0
  410. package/src/layers/axes2d/axes2DLayer.ts +841 -0
  411. package/src/layers/axes2d/font-atlas.png +0 -0
  412. package/src/layers/axes2d/label-fragment.glsl.js +37 -0
  413. package/src/layers/axes2d/label-vertex.glsl.js +20 -0
  414. package/src/layers/axes2d/line-fragment.glsl.js +14 -0
  415. package/src/layers/axes2d/line-vertex.glsl.js +13 -0
  416. package/src/layers/colormap/colormap.fs.glsl.ts +42 -0
  417. package/src/layers/colormap/colormapLayer.ts +247 -0
  418. package/src/layers/drawing/drawingLayer.tsx +256 -0
  419. package/src/layers/fault_polygons/faultPolygonsLayer.ts +54 -0
  420. package/src/layers/grid3d/fragment.fs.glsl.ts +109 -0
  421. package/src/layers/grid3d/fragment_lines.glsl.ts +21 -0
  422. package/src/layers/grid3d/grid3dLayer.stories.tsx +172 -0
  423. package/src/layers/grid3d/grid3dLayer.ts +248 -0
  424. package/src/layers/grid3d/privateLayer.ts +292 -0
  425. package/src/layers/grid3d/vertex.glsl.ts +43 -0
  426. package/src/layers/grid3d/vertex_lines.glsl.ts +15 -0
  427. package/src/layers/grid3d/webworker.ts +173 -0
  428. package/src/layers/hillshading2d/hillshading2d.fs.glsl.ts +62 -0
  429. package/src/layers/hillshading2d/hillshading2dLayer.ts +172 -0
  430. package/src/layers/index.ts +35 -0
  431. package/src/layers/intersection/intersectionView.stories.tsx +294 -0
  432. package/src/layers/intersection/unfoldedGeoJsonLayer.ts +92 -0
  433. package/src/layers/map/fragment.fs.glsl.ts +127 -0
  434. package/src/layers/map/fragment_lines.glsl.ts +21 -0
  435. package/src/layers/map/mapLayer.stories.tsx +1369 -0
  436. package/src/layers/map/mapLayer.ts +470 -0
  437. package/src/layers/map/privateMapLayer.ts +317 -0
  438. package/src/layers/map/vertex.glsl.ts +45 -0
  439. package/src/layers/map/vertex_lines.glsl.ts +15 -0
  440. package/src/layers/map/webworker.ts +479 -0
  441. package/src/layers/northarrow/northArrow.stories.tsx +108 -0
  442. package/src/layers/northarrow/northArrow3DLayer.ts +204 -0
  443. package/src/layers/northarrow/northarrow-fragment.glsl.js +14 -0
  444. package/src/layers/northarrow/northarrow-vertex.glsl.js +13 -0
  445. package/src/layers/piechart/fragment.glsl.js +42 -0
  446. package/src/layers/piechart/pieChartLayer.ts +246 -0
  447. package/src/layers/piechart/vertex.glsl.js +42 -0
  448. package/src/layers/points/pointsLayer.stories.tsx +141 -0
  449. package/src/layers/points/pointsLayer.ts +143 -0
  450. package/src/layers/polylines/polylinesLayer.stories.tsx +144 -0
  451. package/src/layers/polylines/polylinesLayer.ts +263 -0
  452. package/src/layers/selectable_geojson/selectableGeoJsonLayer.ts +25 -0
  453. package/src/layers/shader_modules/decoder.fs.glsl.ts +41 -0
  454. package/src/layers/shader_modules/decoder.ts +46 -0
  455. package/src/layers/shader_modules/index.ts +1 -0
  456. package/src/layers/terrain/map3DLayer.stories.tsx +340 -0
  457. package/src/layers/terrain/map3DLayer.ts +556 -0
  458. package/src/layers/terrain/terrainMapLayer.ts +334 -0
  459. package/src/layers/terrain/terrainmap.fs.glsl.ts +134 -0
  460. package/src/layers/triangle/fragment.fs.glsl.ts +126 -0
  461. package/src/layers/triangle/fragment_lines.glsl.ts +21 -0
  462. package/src/layers/triangle/privateTriangleLayer.ts +203 -0
  463. package/src/layers/triangle/test_data/surfacePoints.ts +4344 -0
  464. package/src/layers/triangle/test_data/surfaceTriangles.ts +7392 -0
  465. package/src/layers/triangle/triangleLayer.stories.tsx +191 -0
  466. package/src/layers/triangle/triangleLayer.ts +273 -0
  467. package/src/layers/triangle/vertex.glsl.ts +35 -0
  468. package/src/layers/triangle/vertex_lines.glsl.ts +15 -0
  469. package/src/layers/triangle/webworker.ts +165 -0
  470. package/src/layers/utils/glsl.d.ts +4 -0
  471. package/src/layers/utils/layerTools.ts +182 -0
  472. package/src/layers/utils/propertyMapTools.ts +43 -0
  473. package/src/layers/wells/utils/spline.ts +318 -0
  474. package/src/layers/wells/wellsLayer.stories.tsx +625 -0
  475. package/src/layers/wells/wellsLayer.ts +1377 -0
  476. package/src/redux/actions.ts +8 -0
  477. package/src/redux/reducer.ts +43 -0
  478. package/src/redux/store.ts +15 -0
  479. package/src/redux/types.ts +114 -0
  480. package/src/storybook/SubsurfaceViewer.stories.jsx +644 -0
  481. package/src/storybook/components/InfoCard.stories.jsx +39 -0
  482. package/src/storybook/components/colorLegends/ContinuousLegend.stories.jsx +32 -0
  483. package/src/storybook/components/colorLegends/DiscreteLegend.stories.jsx +33 -0
  484. package/src/storybook/components/colorLegends/IndividualScaleForMap.stories.jsx +99 -0
  485. package/src/storybook/components/colorLegends/SingleScaleForMap.stories.jsx +120 -0
  486. package/src/storybook/components/settings/LayerSettingsButton.stories.jsx +34 -0
  487. package/src/storybook/components/settings/NumericInput.stories.jsx +17 -0
  488. package/src/storybook/components/settings/ToggleButton.stories.jsx +16 -0
  489. package/src/storybook/schemaValidation/sampleData.js +177 -0
  490. package/src/storybook/schemaValidation/schemaValidation.stories.jsx +91 -0
  491. package/src/test/TestWrapper.tsx +13 -0
  492. package/src/utils/configuration.ts +61 -0
  493. package/src/utils/fit-bounds.js +85 -0
  494. package/src/utils/measurement.ts +61 -0
  495. package/src/utils/northArrow.ts +4 -0
  496. package/src/utils/specExtractor.ts +36 -0
  497. package/src/viewports/index.js +1 -0
  498. package/src/viewports/intersectionViewport.ts +137 -0
  499. package/src/views/index.js +1 -0
  500. package/src/views/intersectionView.ts +38 -0
  501. package/tsconfig.json +7 -0
Binary file
@@ -0,0 +1,37 @@
1
+ export default `\
2
+ #version 300 es
3
+ #define SHADER_NAME graph-layer-fragment-shader
4
+
5
+ precision highp float;
6
+
7
+ out vec4 fragColor;
8
+
9
+ uniform sampler2D fontTexture;
10
+
11
+ uniform vec4 uAxisColor;
12
+ uniform vec4 uBackGroundColor;
13
+
14
+ in vec2 _vTexCoord;
15
+
16
+ void main(void) {
17
+ vec4 color = texture(fontTexture, _vTexCoord);
18
+
19
+ float x = 1.0 - (color.r + color.g + color.b) / 3.0; // intensity of text color
20
+ x = smoothstep(0.0, 0.2, x);
21
+
22
+ float text_r = uAxisColor.r;
23
+ float text_g = uAxisColor.g;
24
+ float text_b = uAxisColor.b;
25
+
26
+ float bg_r = uBackGroundColor.r;
27
+ float bg_g = uBackGroundColor.g;
28
+ float bg_b = uBackGroundColor.b;
29
+
30
+ float r = x * text_r + (1.0 - x) * bg_r;
31
+ float g = x * text_g + (1.0 - x) * bg_g;
32
+ float b = x * text_b + (1.0 - x) * bg_b;
33
+
34
+ fragColor = vec4(r, g, b, 1.0);
35
+ return;
36
+ }
37
+ `;
@@ -0,0 +1,20 @@
1
+ export default `\
2
+ #version 300 es
3
+ #define SHADER_NAME graph-layer-axis-vertex-shader
4
+
5
+ precision highp float;
6
+
7
+ in vec3 positions;
8
+
9
+ in vec2 vTexCoord;
10
+ out vec2 _vTexCoord;
11
+
12
+ uniform mat4 projectionMatrix;
13
+
14
+ void main(void) {
15
+ _vTexCoord = vTexCoord;
16
+
17
+ vec3 position_commonspace = positions; // These positions are in view space.
18
+ gl_Position = projectionMatrix * vec4(position_commonspace, 1.0); // From viewspace to clip
19
+ }
20
+ `;
@@ -0,0 +1,14 @@
1
+ export default `\
2
+ #version 300 es
3
+ #define SHADER_NAME axes2d-layer-fragment-shader
4
+
5
+ precision highp float;
6
+
7
+ uniform vec4 uColor;
8
+
9
+ out vec4 fragColor;
10
+
11
+ void main(void) {
12
+ fragColor = uColor;
13
+ }
14
+ `;
@@ -0,0 +1,13 @@
1
+ export default `\
2
+ #version 300 es
3
+ #define SHADER_NAME axes2d-layer-vertex-shader
4
+
5
+ precision highp float;
6
+
7
+ in vec3 positions;
8
+
9
+ void main(void) {
10
+ vec3 position_commonspace = project_position(positions);
11
+ gl_Position = project_common_position_to_clipspace(vec4(position_commonspace, 0.0));
12
+ }
13
+ `;
@@ -0,0 +1,42 @@
1
+ const fsColormap = `#define SHADER_NAME colormap-shader
2
+
3
+ #ifdef GL_ES
4
+ precision highp float;
5
+ #endif
6
+
7
+ varying vec2 vTexCoord;
8
+
9
+ uniform sampler2D bitmapTexture; // Property map
10
+ uniform sampler2D colormap;
11
+
12
+ uniform float opacity;
13
+
14
+ void main(void) {
15
+ vec4 bitmapColor = texture2D(bitmapTexture, vTexCoord);
16
+
17
+ // If it's a picking pass, we just return the raw property map value.
18
+ if (picking_uActive) {
19
+ gl_FragColor = bitmapColor;
20
+ return;
21
+ }
22
+
23
+ // Decode the RGB value into a float. See decoder.fs.glsl for more details.
24
+ float val = decode_rgb2float(bitmapColor.rgb);
25
+ // The resulting val will be in [0, 1] interval, so we can use it directly as a texture coord
26
+ // to sample from the colormap.
27
+ // 0 => Leftmost color in the colormap, 1 => rightmost color, linearly interpolated in between.
28
+ vec4 color = texture2D(colormap, vec2(val, 0.5));
29
+
30
+ // The final pixel opacity is the combination of the user provided image-wide opacity,
31
+ // the colormap opacity at the sampled pixel and the property map opacity of the sampled pixel.
32
+ gl_FragColor = vec4(color.rgb, color.a * bitmapColor.a * opacity);
33
+
34
+ // Support for existing functionality that comes from the BitmapLayer, such as desaturate, tintColor etc.
35
+ // See https://deck.gl/docs/api-reference/layers/bitmap-layer#render-options for more details.
36
+ geometry.uv = vTexCoord;
37
+ DECKGL_FILTER_COLOR(gl_FragColor, geometry);
38
+
39
+ }
40
+ `;
41
+
42
+ export default fsColormap;
@@ -0,0 +1,247 @@
1
+ import { BitmapLayer, BitmapLayerProps } from "@deck.gl/layers/typed";
2
+ import { PickingInfo } from "@deck.gl/core/typed";
3
+ import GL from "@luma.gl/constants";
4
+ import { Texture2D } from "@luma.gl/webgl";
5
+
6
+ import { LayerPickInfo } from "../../layers/utils/layerTools";
7
+ import { decoder } from "../shader_modules";
8
+ import { decodeRGB, ValueDecoder } from "../utils/propertyMapTools";
9
+ import { getModelMatrix, colorMapFunctionType } from "../utils/layerTools";
10
+ import fsColormap from "./colormap.fs.glsl";
11
+ import { DeckGLLayerContext } from "../../components/Map";
12
+ import { colorTablesArray } from "@emerson-eps/color-tables/";
13
+ import { getRgbData } from "@emerson-eps/color-tables";
14
+ import { ContinuousLegendDataType } from "../../components/ColorLegend";
15
+
16
+ const DEFAULT_TEXTURE_PARAMETERS = {
17
+ [GL.TEXTURE_MIN_FILTER]: GL.LINEAR_MIPMAP_LINEAR,
18
+ [GL.TEXTURE_MAG_FILTER]: GL.LINEAR,
19
+ [GL.TEXTURE_WRAP_S]: GL.CLAMP_TO_EDGE,
20
+ [GL.TEXTURE_WRAP_T]: GL.CLAMP_TO_EDGE,
21
+ };
22
+
23
+ function getImageData(
24
+ colorMapName: string,
25
+ colorTables: colorTablesArray,
26
+ colorMapFunction?: colorMapFunctionType
27
+ ) {
28
+ const isColorMapFunctionDefined = typeof colorMapFunction !== "undefined";
29
+
30
+ const data = new Uint8Array(256 * 3);
31
+
32
+ for (let i = 0; i < 256; i++) {
33
+ const value = i / 255.0;
34
+ const rgb = isColorMapFunctionDefined
35
+ ? (colorMapFunction as colorMapFunctionType)(i / 255)
36
+ : getRgbData(value, colorMapName, colorTables);
37
+ let color: number[] = [];
38
+ if (rgb != undefined) {
39
+ if (Array.isArray(rgb)) {
40
+ color = rgb;
41
+ } else {
42
+ color = [rgb.r, rgb.g, rgb.b];
43
+ }
44
+ }
45
+
46
+ data[3 * i + 0] = color[0];
47
+ data[3 * i + 1] = color[1];
48
+ data[3 * i + 2] = color[2];
49
+ }
50
+
51
+ return data;
52
+ }
53
+
54
+ // Most props are inherited from DeckGL's BitmapLayer. For a full list, see
55
+ // https://deck.gl/docs/api-reference/layers/bitmap-layer
56
+ //
57
+ // The property map is encoded in an image and sent in the `image` prop of the BitmapLayer.
58
+ // The same approach is used in DeckGL's TerrainLayer: https://deck.gl/docs/api-reference/geo-layers/terrain-layer
59
+ //
60
+ // The image format is based on Tizen's terrain format and Mapbox's TerrainRGB:
61
+ // https://github.com/tilezen/joerd/blob/master/docs/formats.md
62
+ // https://docs.mapbox.com/help/troubleshooting/access-elevation-data/
63
+ //
64
+ // The main idea is that property values (floats) are encoded in the R G and B channels of an image.
65
+ // We parametrize decoding, so we can support both Tizen and Mapbox terrains by adapting
66
+ // the valueDecoder for each format.
67
+ // We also support and use by default a format that optimizes for precision.
68
+ // By default, the value decoder will map RGB(0, 0, 0) to the minimum value in valueRange
69
+ // and RGB(255, 255, 255) to the maximum value in valueRange, thus giving us the full
70
+ // > 16mil possible values for any property value range.
71
+ // We also support property maps with an alpha channel. See colormap.fs.glsl for more details.
72
+ export interface ColormapLayerProps extends BitmapLayerProps {
73
+ // Name of color map.
74
+ colorMapName: string;
75
+
76
+ // Optional function property.
77
+ // If defined this function will override the color map.
78
+ // Takes a value in the range [0,1] and returns a color.
79
+ colorMapFunction?: colorMapFunctionType;
80
+
81
+ // Min and max property values.
82
+ valueRange: [number, number];
83
+
84
+ // Use color map in this range.
85
+ colorMapRange: [number, number];
86
+
87
+ // See ValueDecoder in propertyMapTools.ts
88
+ valueDecoder: ValueDecoder;
89
+
90
+ // Rotates image around bounds upper left corner counterclockwise in degrees.
91
+ rotDeg: number;
92
+
93
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
94
+ setReportedBoundingBox?: any;
95
+ }
96
+
97
+ const defaultProps = {
98
+ "@@type": "ColormapLayer",
99
+ name: "Property map",
100
+ id: "colormap-layer",
101
+ pickable: true,
102
+ visible: true,
103
+ valueRange: { type: "array", value: [0, 1] },
104
+ colorMapRange: { type: "array" },
105
+ valueDecoder: {
106
+ rgbScaler: [1, 1, 1],
107
+ // By default, scale the [0, 256*256*256-1] decoded values to [0, 1]
108
+ floatScaler: 1.0 / (256.0 * 256.0 * 256.0 - 1.0),
109
+ offset: 0,
110
+ step: 0,
111
+ },
112
+ rotDeg: 0,
113
+ colorMapName: "Rainbow",
114
+ };
115
+
116
+ export default class ColormapLayer extends BitmapLayer<ColormapLayerProps> {
117
+ initializeState(): void {
118
+ this.setState({
119
+ isLoaded: false,
120
+ });
121
+ super.initializeState();
122
+ }
123
+
124
+ // Signature from the base class, eslint doesn't like the any type.
125
+ // eslint-disable-next-line
126
+ draw({ moduleParameters, uniforms, context }: any): void {
127
+ if (!this.state["isLoaded"]) {
128
+ this.setState({
129
+ isLoaded: true,
130
+ });
131
+
132
+ if (typeof this.props.setReportedBoundingBox !== "undefined") {
133
+ const xMin = this.props.bounds[0];
134
+ const yMin = this.props.bounds[1];
135
+ const zMin = 1;
136
+ const xMax = this.props.bounds[2];
137
+ const yMax = this.props.bounds[3];
138
+ const zMax = -1;
139
+ const bbox = [xMin, yMin, zMin, xMax, yMax, zMax];
140
+
141
+ this.props.setReportedBoundingBox(bbox);
142
+ }
143
+ }
144
+
145
+ const mergedModuleParams = {
146
+ ...moduleParameters,
147
+ valueDecoder: {
148
+ // The prop objects are not merged with the defaultProps by default.
149
+ // See https://github.com/facebook/react/issues/2568
150
+ ...defaultProps.valueDecoder,
151
+ ...moduleParameters.valueDecoder,
152
+ },
153
+ modelMatrix: getModelMatrix(
154
+ this.props.rotDeg,
155
+ this.props.bounds[0] as number, // Rotate around upper left corner of bounds
156
+ this.props.bounds[3] as number
157
+ ),
158
+ };
159
+ super.setModuleParameters(mergedModuleParams);
160
+
161
+ const valueRangeMin = this.props.valueRange[0] ?? 0.0;
162
+ const valueRangeMax = this.props.valueRange[1] ?? 1.0;
163
+
164
+ // If specified color map will extend from colorMapRangeMin to colorMapRangeMax.
165
+ // Otherwise it will extend from valueRangeMin to valueRangeMax.
166
+ const colorMapRangeMin = this.props.colorMapRange?.[0] ?? valueRangeMin;
167
+ const colorMapRangeMax = this.props.colorMapRange?.[1] ?? valueRangeMax;
168
+
169
+ super.draw({
170
+ uniforms: {
171
+ ...uniforms,
172
+ // Send the colormap texture to the shader.
173
+ colormap: new Texture2D(context.gl, {
174
+ width: 256,
175
+ height: 1,
176
+ format: GL.RGB,
177
+ data: getImageData(
178
+ this.props.colorMapName,
179
+ (this.context as DeckGLLayerContext).userData
180
+ .colorTables,
181
+ this.props.colorMapFunction
182
+ ),
183
+ parameters: DEFAULT_TEXTURE_PARAMETERS,
184
+ }),
185
+ valueRangeMin,
186
+ valueRangeMax,
187
+ colorMapRangeMin,
188
+ colorMapRangeMax,
189
+ },
190
+ moduleParameters: mergedModuleParams,
191
+ });
192
+ }
193
+
194
+ // Signature from the base class, eslint doesn't like the any type.
195
+ // eslint-disable-next-line
196
+ getShaders(): any {
197
+ const parentShaders = super.getShaders();
198
+ // Overwrite the BitmapLayer's default fragment shader with ours, that does colormapping.
199
+ parentShaders.fs = fsColormap;
200
+ // Add the decoder shader module to our colormap shader, so we can use the decoder function from our shader.
201
+ parentShaders.modules.push(decoder);
202
+ return parentShaders;
203
+ }
204
+
205
+ getPickingInfo({ info }: { info: PickingInfo }): LayerPickInfo {
206
+ if (this.state["pickingDisabled"] || !info.color) {
207
+ return info;
208
+ }
209
+
210
+ const mergedDecoder = {
211
+ ...defaultProps.valueDecoder,
212
+ ...this.props.valueDecoder,
213
+ };
214
+ // The picked color is the one in raw image, not the one after colormapping.
215
+ // We just need to decode that RGB color into a property float value.
216
+ const val = decodeRGB(info.color, mergedDecoder, this.props.valueRange);
217
+
218
+ return {
219
+ ...info,
220
+ // Picking color doesn't represent object index in this layer.
221
+ // For more details, see https://deck.gl/docs/developer-guide/custom-layers/picking
222
+ index: 0,
223
+ propertyValue: val,
224
+ };
225
+ }
226
+
227
+ getLegendData(): ContinuousLegendDataType {
228
+ const valueRangeMin = this.props.valueRange[0] ?? 0.0;
229
+ const valueRangeMax = this.props.valueRange[1] ?? 1.0;
230
+
231
+ // If specified color map will extend from colorMapRangeMin to colorMapRangeMax.
232
+ // Otherwise it will extend from valueRangeMin to valueRangeMax.
233
+ const min = this.props.colorMapRange?.[0] ?? valueRangeMin;
234
+ const max = this.props.colorMapRange?.[1] ?? valueRangeMax;
235
+
236
+ return {
237
+ discrete: false,
238
+ valueRange: [min, max],
239
+ colorName: this.props.colorMapName,
240
+ title: "PropertyMapLayer",
241
+ colorMapFunction: this.props.colorMapFunction,
242
+ };
243
+ }
244
+ }
245
+
246
+ ColormapLayer.layerName = "ColormapLayer";
247
+ ColormapLayer.defaultProps = defaultProps;
@@ -0,0 +1,256 @@
1
+ import {
2
+ COORDINATE_SYSTEM,
3
+ Color,
4
+ CompositeLayer,
5
+ PickingInfo,
6
+ LayerContext,
7
+ LayersList,
8
+ } from "@deck.gl/core/typed";
9
+ import { ExtendedLayerProps, LayerPickInfo } from "../utils/layerTools";
10
+ import {
11
+ DrawLineStringMode,
12
+ DrawPointMode,
13
+ DrawPolygonMode,
14
+ EditAction,
15
+ Feature,
16
+ FeatureCollection,
17
+ GeoJsonEditMode,
18
+ ImmutableFeatureCollection,
19
+ ModeProps,
20
+ ModifyMode,
21
+ TransformMode,
22
+ ViewMode,
23
+ } from "@nebula.gl/edit-modes";
24
+ import { EditableGeoJsonLayer } from "@nebula.gl/layers";
25
+ import { DeckGLLayerContext } from "../../components/Map";
26
+ import { area, length } from "../../utils/measurement";
27
+
28
+ // Custom drawing mode that deletes the selected GeoJson feature when releasing the Delete key.
29
+ class CustomModifyMode extends ModifyMode {
30
+ handleKeyUp(event: KeyboardEvent, props: ModeProps<FeatureCollection>) {
31
+ super.handleKeyUp(event, props);
32
+
33
+ if (event.key === "Delete") {
34
+ const updatedData = new ImmutableFeatureCollection(props.data)
35
+ .deleteFeatures(props.selectedIndexes)
36
+ .getObject();
37
+
38
+ if (updatedData) {
39
+ props.onEdit({
40
+ updatedData,
41
+ editType: "removeFeature",
42
+ editContext: {
43
+ featureIndexes: props.selectedIndexes,
44
+ },
45
+ });
46
+ }
47
+ }
48
+ }
49
+ }
50
+
51
+ function deleteEscapeKeyHandler(
52
+ drawMode: GeoJsonEditMode,
53
+ event: KeyboardEvent,
54
+ props: ModeProps<FeatureCollection>
55
+ ) {
56
+ if (event.key === "Escape") drawMode.getClickSequence().pop();
57
+ else if (event.key === "Delete") drawMode.resetClickSequence();
58
+ else return;
59
+
60
+ // used to set state so layer can be rerendered
61
+ const updatedData = new ImmutableFeatureCollection(props.data).getObject();
62
+ if (updatedData) {
63
+ props.onEdit({
64
+ updatedData,
65
+ editType: "undoDrawing",
66
+ editContext: {
67
+ featureIndexes: props.selectedIndexes,
68
+ },
69
+ });
70
+ }
71
+ }
72
+
73
+ class CustomDrawLineStringMode extends DrawLineStringMode {
74
+ handleKeyUp(event: KeyboardEvent, props: ModeProps<FeatureCollection>) {
75
+ super.handleKeyUp(event, props);
76
+ deleteEscapeKeyHandler(this, event, props);
77
+ }
78
+ }
79
+
80
+ class CustomDrawPolygonMode extends DrawPolygonMode {
81
+ handleKeyUp(event: KeyboardEvent, props: ModeProps<FeatureCollection>) {
82
+ super.handleKeyUp(event, props);
83
+ deleteEscapeKeyHandler(this, event, props);
84
+ }
85
+ }
86
+
87
+ // Mapping of mode name to mode class
88
+ const MODE_MAP = {
89
+ view: ViewMode,
90
+ modify: CustomModifyMode,
91
+ transform: TransformMode,
92
+ drawPoint: DrawPointMode,
93
+ drawLineString: CustomDrawLineStringMode,
94
+ drawPolygon: CustomDrawPolygonMode,
95
+ };
96
+
97
+ const UNSELECTED_LINE_COLOR: Color = [0x50, 0x50, 0x50, 0xcc];
98
+ const SELECTED_LINE_COLOR: Color = [0x0, 0x0, 0x0, 0xff];
99
+
100
+ export interface DrawingLayerProps<D> extends ExtendedLayerProps<D> {
101
+ mode: string; // One of modes in MODE_MAP
102
+ selectedFeatureIndexes: number[];
103
+ }
104
+
105
+ const defaultProps = {
106
+ "@@type": "DrawingLayer",
107
+ name: "Drawing",
108
+ id: "drawing-layer",
109
+ pickable: true,
110
+ visible: true,
111
+ mode: "drawLineString",
112
+
113
+ // Props used to get/set data in the drawing layer.
114
+ selectedFeatureIndexes: [] as number[],
115
+ data: {
116
+ type: "FeatureCollection",
117
+ features: [],
118
+ },
119
+ };
120
+
121
+ // Composite layer that contains an EditableGeoJsonLayer from nebula.gl
122
+ // See https://nebula.gl/docs/api-reference/layers/editable-geojson-layer
123
+ export default class DrawingLayer extends CompositeLayer<
124
+ DrawingLayerProps<FeatureCollection>
125
+ > {
126
+ initializeState(context: LayerContext): void {
127
+ super.initializeState(context);
128
+
129
+ this.setState({
130
+ data: this.props.data,
131
+ selectedFeatureIndexes: this.props.selectedFeatureIndexes,
132
+ });
133
+ }
134
+
135
+ // Select features when clicking on them if in view or modify modes.
136
+ // The selection is used to set current selected drawing, and
137
+ // is sent to the map component parent via setEditedData.
138
+ onClick(info: PickingInfo): boolean {
139
+ if (this.props.mode === "view" || this.props.mode === "modify") {
140
+ this.setState({
141
+ selectedFeatureIndexes: [info.index],
142
+ });
143
+ (this.context as DeckGLLayerContext).userData.setEditedData({
144
+ selectedFeatureIndexes: [info.index],
145
+ });
146
+ return true;
147
+ }
148
+
149
+ return false;
150
+ }
151
+
152
+ // For now, use `any` for the picking types because this function should
153
+ // recieve PickInfo<FeatureCollection>, but it recieves PickInfo<Feature>.
154
+ getPickingInfo({ info }: { info: PickingInfo }): LayerPickInfo {
155
+ if (!info.object) return info;
156
+ const feature = info.object;
157
+ let measurement;
158
+ if (feature.geometry.type === "LineString") {
159
+ measurement = length(feature);
160
+ } else if (feature.geometry.type === "Polygon") {
161
+ measurement = area(feature);
162
+ } else return info;
163
+ return {
164
+ ...info,
165
+ propertyValue: measurement,
166
+ };
167
+ }
168
+
169
+ // Callback for various editing events. Most events will update this component
170
+ // through patches sent to the map parent. See patchLayerPropsin layerTools.ts.
171
+ _onEdit(editAction: EditAction<FeatureCollection>): void {
172
+ switch (editAction.editType) {
173
+ case "addFeature":
174
+ this.setState({
175
+ data: editAction.updatedData,
176
+ selectedFeatureIndexes:
177
+ editAction.editContext.featureIndexes,
178
+ });
179
+ (this.context as DeckGLLayerContext).userData.setEditedData({
180
+ data: editAction.updatedData,
181
+ selectedFeatureIndexes:
182
+ editAction.editContext.featureIndexes,
183
+ });
184
+ break;
185
+ case "removeFeature":
186
+ this.setState({
187
+ data: editAction.updatedData,
188
+ selectedFeatureIndexes: [],
189
+ });
190
+ (this.context as DeckGLLayerContext).userData.setEditedData({
191
+ data: editAction.updatedData,
192
+ selectedFeatureIndexes: [] as number[],
193
+ });
194
+ break;
195
+ case "removePosition":
196
+ case "finishMovePosition":
197
+ this.setState({
198
+ data: editAction.updatedData,
199
+ });
200
+ (this.context as DeckGLLayerContext).userData.setEditedData({
201
+ data: editAction.updatedData,
202
+ });
203
+ break;
204
+ case "movePosition":
205
+ case "undoDrawing":
206
+ // Don't use setEditedData to avoid an expensive roundtrip,
207
+ // since this is done on every mouse move when editing.
208
+ this.setState({ data: editAction.updatedData });
209
+ break;
210
+ }
211
+ }
212
+
213
+ // Return the line color based on the selection status.
214
+ // The same can be done for other features (polygons, points etc).
215
+ _getLineColor(feature: Feature): Color {
216
+ const is_feature_selected = this.state["selectedFeatureIndexes"].some(
217
+ (i: number) => this.state["data"].features[i] === feature
218
+ );
219
+ if (is_feature_selected) {
220
+ return SELECTED_LINE_COLOR;
221
+ } else {
222
+ return UNSELECTED_LINE_COLOR;
223
+ }
224
+ }
225
+
226
+ renderLayers(): LayersList {
227
+ if (this.props.visible == false) {
228
+ return [];
229
+ }
230
+ const sub_layer_props = this.getSubLayerProps({
231
+ data: this.state["data"],
232
+ mode: MODE_MAP[this.props.mode as keyof typeof MODE_MAP],
233
+ modeConfig: {
234
+ viewport: this.context.viewport,
235
+ },
236
+ selectedFeatureIndexes: this.state["selectedFeatureIndexes"],
237
+ coordinateSystem: COORDINATE_SYSTEM.CARTESIAN,
238
+ onEdit: (editAction: EditAction<FeatureCollection>) =>
239
+ this._onEdit(editAction),
240
+ _subLayerProps: {
241
+ geojson: {
242
+ autoHighlight: true,
243
+ getLineColor: (feature: Feature) =>
244
+ this._getLineColor(feature),
245
+ },
246
+ },
247
+ });
248
+
249
+ // @ts-expect-error: EditableGeoJsonLayer from nebula.gl has no typing
250
+ return [new EditableGeoJsonLayer(sub_layer_props)];
251
+ }
252
+ }
253
+
254
+ DrawingLayer.layerName = "DrawingLayer";
255
+ DrawingLayer.defaultProps =
256
+ defaultProps as unknown as DrawingLayerProps<FeatureCollection>;
@@ -0,0 +1,54 @@
1
+ import { COORDINATE_SYSTEM, Color, CompositeLayer } from "@deck.gl/core/typed";
2
+ import { GeoJsonLayer, GeoJsonLayerProps } from "@deck.gl/layers/typed";
3
+ import { Feature } from "geojson";
4
+ import GL from "@luma.gl/constants";
5
+
6
+ const getColor = (d: Feature): Color => {
7
+ const c: Color = d?.properties?.["color"];
8
+ const r = c[0] ?? 0;
9
+ const g = c[1] ?? 0;
10
+ const b = c[2] ?? 0;
11
+ return [r, g, b, 30]; // make fill color transparent
12
+ };
13
+
14
+ export interface FaultPolygonsLayerProps extends GeoJsonLayerProps {
15
+ // Enable/disable depth testing when rendering layer. Default true.
16
+ depthTest: boolean;
17
+ }
18
+
19
+ const defaultProps = {
20
+ "@@type": "FaultPolygonsLayer",
21
+ name: "Fault polygons",
22
+ id: "fault-polygons-layer",
23
+ pickable: true,
24
+ visible: true,
25
+ filled: true,
26
+ lineWidthMinPixels: 2,
27
+ depthTest: true,
28
+ };
29
+
30
+ export default class FaultPolygonsLayer extends CompositeLayer<FaultPolygonsLayerProps> {
31
+ renderLayers(): GeoJsonLayer<Feature>[] {
32
+ const layer = new GeoJsonLayer<Feature>(
33
+ this.getSubLayerProps({
34
+ id: this.props.id,
35
+ data: this.props.data,
36
+ pickable: this.props.pickable,
37
+ visible: this.props.visible,
38
+ filled: this.props.filled,
39
+ lineWidthMinPixels: this.props.lineWidthMinPixels,
40
+ coordinateSystem: COORDINATE_SYSTEM.CARTESIAN,
41
+ getLineColor: (d: Feature) =>
42
+ d?.properties?.["color"] ?? [0, 0, 0, 255],
43
+ getFillColor: getColor,
44
+ parameters: {
45
+ [GL.DEPTH_TEST]: this.props.depthTest,
46
+ },
47
+ })
48
+ );
49
+ return [layer];
50
+ }
51
+ }
52
+
53
+ FaultPolygonsLayer.layerName = "FaultPolygonsLayer";
54
+ FaultPolygonsLayer.defaultProps = defaultProps;