@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
@@ -0,0 +1,939 @@
1
+ import { CompositeLayer, OrbitViewport, } from "@deck.gl/core/typed";
2
+ import { isDrawingEnabled } from "../utils/layerTools";
3
+ import { PathLayer, TextLayer } from "@deck.gl/layers/typed";
4
+ import { PathStyleExtension } from "@deck.gl/extensions/typed";
5
+ import { subtract, distance, dot } from "mathjs";
6
+ import { rgbValues, getColors, } from "@emerson-eps/color-tables/";
7
+ import { createPropertyData, } from "../utils/layerTools";
8
+ import { splineRefine, invertPath, GetBoundingBox } from "./utils/spline";
9
+ import { interpolateNumberArray } from "d3";
10
+ import { getLayersById } from "../../layers/utils/layerTools";
11
+ import UnfoldedGeoJsonLayer from "../intersection/unfoldedGeoJsonLayer";
12
+ import GL from "@luma.gl/constants";
13
+ function onDataLoad(data, context) {
14
+ const bbox = GetBoundingBox(data);
15
+ if (typeof context.layer.props.setReportedBoundingBox !== "undefined") {
16
+ context.layer.props.setReportedBoundingBox(bbox);
17
+ }
18
+ }
19
+ const defaultProps = {
20
+ "@@type": "WellsLayer",
21
+ name: "Wells",
22
+ id: "wells-layer",
23
+ autoHighlight: true,
24
+ opacity: 1,
25
+ lineWidthScale: 1,
26
+ pointRadiusScale: 1,
27
+ lineStyle: { dash: false },
28
+ outline: true,
29
+ logRadius: 10,
30
+ logCurves: true,
31
+ refine: false,
32
+ visible: true,
33
+ wellNameVisible: false,
34
+ wellNameAtTop: false,
35
+ wellNameSize: 14,
36
+ wellNameColor: [0, 0, 0, 255],
37
+ selectedWell: "@@#editedData.selectedWells",
38
+ depthTest: true,
39
+ ZIncreasingDownwards: true,
40
+ };
41
+ function multiply(pair, factor) {
42
+ return [pair[0] * factor, pair[1] * factor];
43
+ }
44
+ const LINE = "line";
45
+ const POINT = "point";
46
+ const DEFAULT_POINT_SIZE = 8;
47
+ const DEFAULT_LINE_WIDTH = 5;
48
+ const DEFAULT_DASH = [5, 5];
49
+ function getDashFactor(accessor, width_accessor, offset = 0) {
50
+ return (object, objectInfo) => {
51
+ let width = DEFAULT_LINE_WIDTH;
52
+ if (typeof width_accessor == "function") {
53
+ width = width_accessor(object);
54
+ }
55
+ else if (width_accessor) {
56
+ width = width_accessor;
57
+ }
58
+ const factor = width / (width + offset);
59
+ let dash = [0, 0];
60
+ if (typeof accessor == "function") {
61
+ dash = accessor(object, objectInfo);
62
+ }
63
+ else if (accessor)
64
+ dash = accessor;
65
+ else if (accessor)
66
+ dash = DEFAULT_DASH;
67
+ if (dash.length == 2) {
68
+ return multiply(dash, factor);
69
+ }
70
+ else {
71
+ return multiply(DEFAULT_DASH, factor);
72
+ }
73
+ };
74
+ }
75
+ function getColor(accessor) {
76
+ if (accessor) {
77
+ return accessor;
78
+ }
79
+ return (object, objectInfo) => {
80
+ var _a;
81
+ if (typeof accessor === "function") {
82
+ const color = accessor(object, objectInfo);
83
+ if (color) {
84
+ return color;
85
+ }
86
+ }
87
+ return (_a = object.properties) === null || _a === void 0 ? void 0 : _a["color"];
88
+ };
89
+ }
90
+ export function getSize(type, accessor, offset = 0) {
91
+ if (typeof accessor == "function") {
92
+ return (object) => {
93
+ return (accessor(object) + offset);
94
+ };
95
+ }
96
+ if (accessor == 0)
97
+ return 0;
98
+ if (accessor > 0)
99
+ return accessor + offset;
100
+ if (type == LINE)
101
+ return DEFAULT_LINE_WIDTH + offset;
102
+ if (type == POINT)
103
+ return DEFAULT_POINT_SIZE + offset;
104
+ return 0;
105
+ }
106
+ export default class WellsLayer extends CompositeLayer {
107
+ // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any
108
+ onClick(info) {
109
+ var _a;
110
+ // Make selection only when drawing is disabled
111
+ if (isDrawingEnabled(this.context.layerManager)) {
112
+ return false;
113
+ }
114
+ else {
115
+ this.context.userData.setEditedData({
116
+ selectedWell: (_a = info.object.properties) === null || _a === void 0 ? void 0 : _a["name"],
117
+ });
118
+ return false; // do not return true to allow DeckGL props.onClick to be called
119
+ }
120
+ }
121
+ setSelection(well, _selection) {
122
+ if (this.internalState) {
123
+ this.setState({
124
+ well: well,
125
+ selection: _selection,
126
+ });
127
+ }
128
+ }
129
+ setMultiSelection(wells) {
130
+ if (this.internalState) {
131
+ this.setState({
132
+ selectedMultiWells: wells,
133
+ });
134
+ }
135
+ }
136
+ shouldUpdateState({ changeFlags }) {
137
+ return (changeFlags.viewportChanged ||
138
+ changeFlags.propsOrDataChanged ||
139
+ typeof changeFlags.updateTriggersChanged === "object");
140
+ }
141
+ getLegendData(value) {
142
+ return getLegendData(value, "", this.props.logName, this.props.logColor);
143
+ }
144
+ setLegend(value) {
145
+ this.setState({
146
+ legend: this.getLegendData(value),
147
+ });
148
+ }
149
+ getLogLayer() {
150
+ var _a;
151
+ const sub_layers = (_a = this.internalState) === null || _a === void 0 ? void 0 : _a.subLayers;
152
+ const log_layer = getLayersById(sub_layers, "wells-layer-log_curve");
153
+ return log_layer === null || log_layer === void 0 ? void 0 : log_layer[0];
154
+ }
155
+ getSelectionLayer() {
156
+ var _a;
157
+ const sub_layers = (_a = this.internalState) === null || _a === void 0 ? void 0 : _a.subLayers;
158
+ const log_layer = getLayersById(sub_layers, "wells-layer-selection");
159
+ return log_layer === null || log_layer === void 0 ? void 0 : log_layer[0];
160
+ }
161
+ getLogCurveData() {
162
+ const log_layer = this.getLogLayer();
163
+ return log_layer === null || log_layer === void 0 ? void 0 : log_layer.props.data;
164
+ }
165
+ setupLegend() {
166
+ const data = this.getLogCurveData();
167
+ if (data)
168
+ this.setLegend(data);
169
+ }
170
+ renderLayers() {
171
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
172
+ if (!this.props.data.features) {
173
+ return [];
174
+ }
175
+ let data = this.props.data;
176
+ if (!this.props.ZIncreasingDownwards) {
177
+ data = invertPath(data);
178
+ }
179
+ const refine = this.props.refine;
180
+ data = refine
181
+ ? splineRefine(data) // smooth well paths.
182
+ : data;
183
+ const is3d = this.context.viewport.constructor === OrbitViewport;
184
+ const positionFormat = "XYZ";
185
+ const isDashed = !!((_a = this.props.lineStyle) === null || _a === void 0 ? void 0 : _a.dash);
186
+ const extensions = [
187
+ new PathStyleExtension({
188
+ dash: isDashed,
189
+ highPrecisionDash: isDashed,
190
+ }),
191
+ ];
192
+ const parameters = {
193
+ [GL.DEPTH_TEST]: this.props.depthTest,
194
+ [GL.POLYGON_OFFSET_FILL]: true,
195
+ };
196
+ const outline = new UnfoldedGeoJsonLayer(this.getSubLayerProps({
197
+ id: "outline",
198
+ data,
199
+ pickable: false,
200
+ stroked: false,
201
+ positionFormat,
202
+ pointRadiusUnits: "pixels",
203
+ lineWidthUnits: "pixels",
204
+ visible: this.props.outline,
205
+ pointRadiusScale: this.props.pointRadiusScale,
206
+ lineWidthScale: this.props.lineWidthScale,
207
+ getLineWidth: getSize(LINE, (_b = this.props.lineStyle) === null || _b === void 0 ? void 0 : _b.width),
208
+ getPointRadius: getSize(POINT, (_c = this.props.wellHeadStyle) === null || _c === void 0 ? void 0 : _c.size),
209
+ extensions: extensions,
210
+ getDashArray: getDashFactor((_d = this.props.lineStyle) === null || _d === void 0 ? void 0 : _d.dash),
211
+ lineBillboard: true,
212
+ pointBillboard: true,
213
+ parameters,
214
+ }));
215
+ const colors = new UnfoldedGeoJsonLayer(this.getSubLayerProps({
216
+ id: "colors",
217
+ data,
218
+ pickable: true,
219
+ stroked: false,
220
+ positionFormat,
221
+ pointRadiusUnits: "pixels",
222
+ lineWidthUnits: "pixels",
223
+ pointRadiusScale: this.props.pointRadiusScale,
224
+ lineWidthScale: this.props.lineWidthScale,
225
+ getLineWidth: getSize(LINE, (_e = this.props.lineStyle) === null || _e === void 0 ? void 0 : _e.width, -1),
226
+ getPointRadius: getSize(POINT, (_f = this.props.wellHeadStyle) === null || _f === void 0 ? void 0 : _f.size, -1),
227
+ getFillColor: getColor((_g = this.props.wellHeadStyle) === null || _g === void 0 ? void 0 : _g.color),
228
+ getLineColor: getColor((_h = this.props.lineStyle) === null || _h === void 0 ? void 0 : _h.color),
229
+ extensions: extensions,
230
+ getDashArray: getDashFactor((_j = this.props.lineStyle) === null || _j === void 0 ? void 0 : _j.dash, getSize(LINE, (_k = this.props.lineStyle) === null || _k === void 0 ? void 0 : _k.width), -1),
231
+ lineBillboard: true,
232
+ pointBillboard: true,
233
+ parameters,
234
+ }));
235
+ // Highlight the selected well.
236
+ const highlight = new UnfoldedGeoJsonLayer(this.getSubLayerProps({
237
+ id: "highlight",
238
+ data: getWellObjectByName(data.features, this.props.selectedWell),
239
+ pickable: false,
240
+ stroked: false,
241
+ positionFormat,
242
+ pointRadiusUnits: "pixels",
243
+ lineWidthUnits: "pixels",
244
+ pointRadiusScale: this.props.pointRadiusScale,
245
+ lineWidthScale: this.props.lineWidthScale,
246
+ getLineWidth: getSize(LINE, (_l = this.props.lineStyle) === null || _l === void 0 ? void 0 : _l.width, 2),
247
+ getPointRadius: getSize(POINT, (_m = this.props.wellHeadStyle) === null || _m === void 0 ? void 0 : _m.size, 2),
248
+ getFillColor: getColor((_o = this.props.wellHeadStyle) === null || _o === void 0 ? void 0 : _o.color),
249
+ getLineColor: getColor((_p = this.props.lineStyle) === null || _p === void 0 ? void 0 : _p.color),
250
+ parameters,
251
+ }));
252
+ // Highlight the multi selected wells.
253
+ const highlightMultiWells = new UnfoldedGeoJsonLayer(this.getSubLayerProps({
254
+ id: "highlight2",
255
+ data: getWellObjectsByName(data.features, this.state["selectedMultiWells"]),
256
+ pickable: false,
257
+ stroked: false,
258
+ positionFormat,
259
+ pointRadiusUnits: "pixels",
260
+ lineWidthUnits: "pixels",
261
+ pointRadiusScale: this.props.pointRadiusScale,
262
+ lineWidthScale: this.props.lineWidthScale,
263
+ getLineWidth: getSize(LINE, (_q = this.props.lineStyle) === null || _q === void 0 ? void 0 : _q.width, -1),
264
+ getPointRadius: getSize(POINT, (_r = this.props.wellHeadStyle) === null || _r === void 0 ? void 0 : _r.size, 2),
265
+ getFillColor: [255, 140, 0],
266
+ getLineColor: [255, 140, 0],
267
+ parameters,
268
+ }));
269
+ const log_layer = new PathLayer(this.getSubLayerProps({
270
+ id: "log_curve",
271
+ data: this.props.logData,
272
+ positionFormat,
273
+ pickable: true,
274
+ widthScale: 10,
275
+ widthMinPixels: 1,
276
+ miterLimit: 100,
277
+ visible: this.props.logCurves,
278
+ getPath: (d) => {
279
+ var _a;
280
+ return getLogPath(data.features, d, this.props.logrunName, (_a = this.props.lineStyle) === null || _a === void 0 ? void 0 : _a.color);
281
+ },
282
+ getColor: (d) => getLogColor(d, this.props.logrunName, this.props.logName, this.props.logColor, this.context.userData
283
+ .colorTables, this.props.colorMappingFunction, this.props.isLog),
284
+ getWidth: (d) => this.props.logRadius ||
285
+ getLogWidth(d, this.props.logrunName, this.props.logName),
286
+ updateTriggers: {
287
+ getColor: [
288
+ this.props.logrunName,
289
+ this.props.logName,
290
+ this.props.logColor,
291
+ this.context.userData
292
+ .colorTables,
293
+ this.props.isLog,
294
+ ],
295
+ getWidth: [
296
+ this.props.logrunName,
297
+ this.props.logName,
298
+ this.props.logRadius,
299
+ ],
300
+ getPath: [positionFormat],
301
+ },
302
+ onDataLoad: (value) => {
303
+ this.setLegend(value);
304
+ },
305
+ parameters,
306
+ }));
307
+ const selection_layer = new PathLayer(this.getSubLayerProps({
308
+ id: "selection",
309
+ data: this.props.logData,
310
+ positionFormat,
311
+ pickable: false,
312
+ widthScale: 10,
313
+ widthMinPixels: 1,
314
+ miterLimit: 100,
315
+ visible: this.props.logCurves,
316
+ getPath: (d) => {
317
+ var _a;
318
+ return getLogPath1(data.features, d, this.state["well"], this.state["selection"], this.props.logrunName, (_a = this.props.lineStyle) === null || _a === void 0 ? void 0 : _a.color);
319
+ },
320
+ getColor: (d) => getLogColor1(data.features, d, this.state["well"], this.state["selection"], this.props.logrunName),
321
+ getWidth: (d) => this.props.logRadius * 1.5 ||
322
+ getLogWidth(d, this.props.logrunName, this.props.logName),
323
+ updateTriggers: {
324
+ getColor: [
325
+ this.props.logrunName,
326
+ this.state["well"],
327
+ this.state["selection"],
328
+ ],
329
+ getWidth: [
330
+ this.props.logrunName,
331
+ this.props.logName,
332
+ this.props.logRadius,
333
+ ],
334
+ getPath: [
335
+ positionFormat,
336
+ this.props.logrunName,
337
+ this.state["well"],
338
+ this.state["selection"],
339
+ ],
340
+ },
341
+ onDataLoad: (value) => {
342
+ this.setLegend(value);
343
+ },
344
+ parameters,
345
+ }));
346
+ // well name
347
+ const names = new TextLayer(this.getSubLayerProps({
348
+ id: "names",
349
+ data: data.features,
350
+ visible: this.props.wellNameVisible,
351
+ getPosition: (d) => {
352
+ var _a;
353
+ return getAnnotationPosition(d, this.props.wellNameAtTop, is3d, (_a = this.props.lineStyle) === null || _a === void 0 ? void 0 : _a.color);
354
+ },
355
+ getText: (d) => { var _a; return (_a = d.properties) === null || _a === void 0 ? void 0 : _a["name"]; },
356
+ getColor: this.props.wellNameColor,
357
+ getAnchor: "start",
358
+ getAlignmentBaseline: "bottom",
359
+ getSize: this.props.wellNameSize,
360
+ parameters,
361
+ }));
362
+ return [
363
+ outline,
364
+ log_layer,
365
+ colors,
366
+ highlight,
367
+ highlightMultiWells,
368
+ selection_layer,
369
+ names,
370
+ ];
371
+ }
372
+ getPickingInfo({ info }) {
373
+ var _a, _b;
374
+ if (!info.object)
375
+ return Object.assign(Object.assign({}, info), { properties: [], logName: "" });
376
+ const coordinate = (info.coordinate || [0, 0, 0]);
377
+ let md_property = getMdProperty(coordinate, info.object, (_a = this.props.lineStyle) === null || _a === void 0 ? void 0 : _a.color, info.featureType);
378
+ if (!md_property) {
379
+ md_property = getLogProperty(coordinate, this.props.data.features, info.object, this.props.logrunName, "MD");
380
+ }
381
+ let tvd_property = getTvdProperty(coordinate, info.object, (_b = this.props.lineStyle) === null || _b === void 0 ? void 0 : _b.color, info.featureType);
382
+ if (!tvd_property) {
383
+ tvd_property = getLogProperty(coordinate, this.props.data.features, info.object, this.props.logrunName, "TVD");
384
+ }
385
+ const log_property = getLogProperty(coordinate, this.props.data.features, info.object, this.props.logrunName, this.props.logName);
386
+ // Patch for inverting tvd readout to fix issue #830,
387
+ // should make proper fix when handling z increase direction - issue #842
388
+ const inverted_tvd_property = tvd_property && Object.assign(Object.assign({}, tvd_property), { value: (tvd_property === null || tvd_property === void 0 ? void 0 : tvd_property.value) * -1 });
389
+ const layer_properties = [];
390
+ if (md_property)
391
+ layer_properties.push(md_property);
392
+ if (inverted_tvd_property)
393
+ layer_properties.push(inverted_tvd_property);
394
+ if (log_property)
395
+ layer_properties.push(log_property);
396
+ return Object.assign(Object.assign({}, info), { properties: layer_properties, logName: (log_property === null || log_property === void 0 ? void 0 : log_property.name) || "" });
397
+ }
398
+ }
399
+ WellsLayer.layerName = "WellsLayer";
400
+ WellsLayer.defaultProps = Object.assign(Object.assign({}, defaultProps), { onDataLoad: (data, context) => onDataLoad(data, context) });
401
+ //================= Local help functions. ==================
402
+ function getColumn(data, col) {
403
+ const column = [];
404
+ for (let i = 0; i < data.length; i++) {
405
+ column.push(data[i][col]);
406
+ }
407
+ return column;
408
+ }
409
+ function getLogMd(d, logrun_name) {
410
+ if (!isSelectedLogRun(d, logrun_name))
411
+ return [];
412
+ const names_md = ["DEPTH", "DEPT", "MD", "TDEP", "MD_RKB"]; // aliases for MD
413
+ const log_id = getLogIndexByNames(d, names_md);
414
+ return log_id >= 0 ? getColumn(d.data, log_id) : [];
415
+ }
416
+ export function getLogValues(d, logrun_name, log_name) {
417
+ if (!isSelectedLogRun(d, logrun_name))
418
+ return [];
419
+ const log_id = getLogIndexByName(d, log_name);
420
+ return log_id >= 0 ? getColumn(d.data, log_id) : [];
421
+ }
422
+ export function getLogInfo(d, logrun_name, log_name) {
423
+ if (!isSelectedLogRun(d, logrun_name))
424
+ return undefined;
425
+ const log_id = getLogIndexByName(d, log_name);
426
+ return d.curves[log_id];
427
+ }
428
+ function getDiscreteLogMetadata(d, log_name) {
429
+ return d === null || d === void 0 ? void 0 : d.metadata_discrete[log_name];
430
+ }
431
+ function isSelectedLogRun(d, logrun_name) {
432
+ return d.header.name.toLowerCase() === logrun_name.toLowerCase();
433
+ }
434
+ // return position for well name and icon
435
+ function getAnnotationPosition(well_data, name_at_top, view_is_3d, color_accessor) {
436
+ if (name_at_top) {
437
+ let top;
438
+ // Read top position from Point geometry, if not present, read it from LineString geometry
439
+ const well_head = getWellHeadPosition(well_data);
440
+ if (well_data)
441
+ top = well_head;
442
+ else {
443
+ const trajectory = getTrajectory(well_data, color_accessor);
444
+ top = trajectory === null || trajectory === void 0 ? void 0 : trajectory.at(0);
445
+ }
446
+ // using z=0 for orthographic view to keep label above other other layers
447
+ if (top)
448
+ return view_is_3d ? top : [top[0], top[1], 0];
449
+ }
450
+ else {
451
+ let bot;
452
+ // if trajectory is not present, return top position from Point geometry
453
+ const trajectory = getTrajectory(well_data, color_accessor);
454
+ if (trajectory)
455
+ bot = trajectory === null || trajectory === void 0 ? void 0 : trajectory.at(-1);
456
+ else
457
+ bot = getWellHeadPosition(well_data);
458
+ // using z=0 for orthographic view to keep label above other other layers
459
+ if (bot)
460
+ return view_is_3d ? bot : [bot[0], bot[1], 0];
461
+ }
462
+ return null;
463
+ }
464
+ function getWellObjectByName(wells_data, name) {
465
+ return wells_data === null || wells_data === void 0 ? void 0 : wells_data.find((item) => { var _a, _b; return ((_b = (_a = item.properties) === null || _a === void 0 ? void 0 : _a["name"]) === null || _b === void 0 ? void 0 : _b.toLowerCase()) === (name === null || name === void 0 ? void 0 : name.toLowerCase()); });
466
+ }
467
+ function getWellObjectsByName(wells_data, name) {
468
+ const res = [];
469
+ for (let i = 0; i < (name === null || name === void 0 ? void 0 : name.length); i++) {
470
+ wells_data === null || wells_data === void 0 ? void 0 : wells_data.find((item) => {
471
+ var _a, _b, _c;
472
+ if (((_b = (_a = item.properties) === null || _a === void 0 ? void 0 : _a["name"]) === null || _b === void 0 ? void 0 : _b.toLowerCase()) ===
473
+ ((_c = name[i]) === null || _c === void 0 ? void 0 : _c.toLowerCase())) {
474
+ res.push(item);
475
+ }
476
+ });
477
+ }
478
+ return res;
479
+ }
480
+ function getPointGeometry(well_object) {
481
+ var _a;
482
+ return (_a = well_object.geometry) === null || _a === void 0 ? void 0 : _a.geometries.find((item) => item.type == "Point");
483
+ }
484
+ function getLineStringGeometry(well_object) {
485
+ var _a;
486
+ return (_a = well_object.geometry) === null || _a === void 0 ? void 0 : _a.geometries.find((item) => item.type == "LineString");
487
+ }
488
+ // Return well head position from Point Geometry
489
+ function getWellHeadPosition(well_object) {
490
+ var _a;
491
+ return (_a = getPointGeometry(well_object)) === null || _a === void 0 ? void 0 : _a.coordinates;
492
+ }
493
+ // return trajectory visibility based on alpha of trajectory color
494
+ function isTrajectoryVisible(well_object, color_accessor) {
495
+ var _a;
496
+ let alpha;
497
+ const accessor = getColor(color_accessor);
498
+ if (typeof accessor === "function") {
499
+ alpha = (_a = accessor(well_object)) === null || _a === void 0 ? void 0 : _a[3];
500
+ }
501
+ else {
502
+ alpha = accessor === null || accessor === void 0 ? void 0 : accessor[3];
503
+ }
504
+ return alpha !== 0;
505
+ }
506
+ // Return Trajectory data from LineString Geometry if it's visible (checking trajectory visiblity based on line color)
507
+ function getTrajectory(well_object, color_accessor) {
508
+ var _a;
509
+ if (isTrajectoryVisible(well_object, color_accessor))
510
+ return (_a = getLineStringGeometry(well_object)) === null || _a === void 0 ? void 0 : _a.coordinates;
511
+ else
512
+ return undefined;
513
+ }
514
+ function getWellMds(well_object) {
515
+ var _a;
516
+ return (_a = well_object.properties) === null || _a === void 0 ? void 0 : _a["md"][0];
517
+ }
518
+ function getNeighboringMdIndices(mds, md) {
519
+ const idx = mds.findIndex((x) => x >= md);
520
+ return idx === 0 ? [idx, idx + 1] : [idx - 1, idx];
521
+ }
522
+ function getPositionByMD(well_xyz, well_mds, md) {
523
+ const [l_idx, h_idx] = getNeighboringMdIndices(well_mds, md);
524
+ const md_low = well_mds[l_idx];
525
+ const md_normalized = (md - md_low) / (well_mds[h_idx] - md_low);
526
+ return interpolateNumberArray(well_xyz[l_idx], well_xyz[h_idx])(md_normalized);
527
+ }
528
+ function getLogPath(wells_data, d, logrun_name, trajectory_line_color) {
529
+ const well_object = getWellObjectByName(wells_data, d.header.well);
530
+ if (!well_object)
531
+ return [];
532
+ const well_xyz = getTrajectory(well_object, trajectory_line_color);
533
+ const well_mds = getWellMds(well_object);
534
+ if (well_xyz == undefined ||
535
+ well_mds == undefined ||
536
+ well_xyz.length == 0 ||
537
+ well_mds.length == 0)
538
+ return [];
539
+ const log_xyz = [];
540
+ const log_mds = getLogMd(d, logrun_name);
541
+ log_mds.forEach((md) => {
542
+ const xyz = getPositionByMD(well_xyz, well_mds, md);
543
+ log_xyz.push(xyz);
544
+ });
545
+ return log_xyz;
546
+ }
547
+ function getLogIndexByName(d, log_name) {
548
+ const name = log_name.toLowerCase();
549
+ return d.curves.findIndex((item) => item.name.toLowerCase() === name);
550
+ }
551
+ function getLogIndexByNames(d, names) {
552
+ for (const name of names) {
553
+ const index = getLogIndexByName(d, name);
554
+ if (index >= 0)
555
+ return index;
556
+ }
557
+ return -1;
558
+ }
559
+ function getLogColor(d, logrun_name, log_name, logColor, colorTables,
560
+ // eslint-disable-next-line
561
+ colorMappingFunction, isLog) {
562
+ var _a;
563
+ const log_data = getLogValues(d, logrun_name, log_name);
564
+ const log_info = getLogInfo(d, logrun_name, log_name);
565
+ if (log_data.length == 0 || log_info == undefined)
566
+ return [];
567
+ const log_color = [];
568
+ if (log_info.description == "continuous") {
569
+ const min = Math.min(...log_data);
570
+ const max = Math.max(...log_data);
571
+ const max_delta = max - min;
572
+ log_data.forEach((value) => {
573
+ const rgb = colorMappingFunction
574
+ ? colorMappingFunction((value - min) / max_delta)
575
+ : rgbValues((value - min) / max_delta, logColor, colorTables);
576
+ rgbValues(value - min / max_delta, logColor, colorTables, isLog);
577
+ if (rgb) {
578
+ if (Array.isArray(rgb)) {
579
+ log_color.push([rgb[0], rgb[1], rgb[2]]);
580
+ }
581
+ else {
582
+ log_color.push([rgb === null || rgb === void 0 ? void 0 : rgb.r, rgb === null || rgb === void 0 ? void 0 : rgb.g, rgb === null || rgb === void 0 ? void 0 : rgb.b]);
583
+ }
584
+ }
585
+ else {
586
+ log_color.push([0, 0, 0, 0]); // push transparent for null/undefined log values
587
+ }
588
+ });
589
+ }
590
+ else {
591
+ // well log data set for ex : H1: Array(2)0: (4) [255, 26, 202, 255] 1: 13
592
+ const log_attributes = (_a = getDiscreteLogMetadata(d, log_name)) === null || _a === void 0 ? void 0 : _a.objects;
593
+ const logLength = Object.keys(log_attributes).length;
594
+ // eslint-disable-next-line
595
+ const attributesObject = {};
596
+ const categorial = true;
597
+ Object.keys(log_attributes).forEach((key) => {
598
+ // get the point from log_attributes
599
+ const point = log_attributes[key][1];
600
+ const categorialMin = 0;
601
+ const categorialMax = logLength - 1;
602
+ let rgb;
603
+ if (colorMappingFunction) {
604
+ rgb = colorMappingFunction(point, categorial, categorialMin, categorialMax);
605
+ }
606
+ else {
607
+ // if colormap function is not defined
608
+ const arrayOfColors = getColors(logColor, colorTables, point);
609
+ if (!arrayOfColors.length)
610
+ console.error("Empty or missed '" + logColor + "' color table");
611
+ rgb = arrayOfColors;
612
+ }
613
+ if (rgb) {
614
+ if (Array.isArray(rgb)) {
615
+ if (rgb.length === 3) {
616
+ attributesObject[key] = [
617
+ [rgb[0], rgb[1], rgb[2]],
618
+ point,
619
+ ];
620
+ }
621
+ else {
622
+ attributesObject[key] = [
623
+ [rgb[1], rgb[2], rgb[3]],
624
+ point,
625
+ ];
626
+ }
627
+ }
628
+ else {
629
+ attributesObject[key] = [[rgb.r, rgb.g, rgb.b], point];
630
+ }
631
+ }
632
+ });
633
+ log_data.forEach((log_value) => {
634
+ var _a;
635
+ const dl_attrs = (_a = Object.entries(attributesObject).find(([, value]) => value[1] == log_value)) === null || _a === void 0 ? void 0 : _a[1];
636
+ dl_attrs
637
+ ? log_color.push(dl_attrs[0])
638
+ : log_color.push([0, 0, 0, 0]); // use transparent for undefined/null log values
639
+ });
640
+ }
641
+ return log_color;
642
+ }
643
+ function getLogPath1(wells_data, d, selectedWell, selection, logrun_name, trajectory_line_color) {
644
+ if (!selection || selectedWell !== d.header.well)
645
+ return [];
646
+ const well_object = getWellObjectByName(wells_data, d.header.well);
647
+ if (!well_object)
648
+ return [];
649
+ const well_xyz = getTrajectory(well_object, trajectory_line_color);
650
+ const well_mds = getWellMds(well_object);
651
+ if (well_xyz == undefined ||
652
+ well_mds == undefined ||
653
+ well_xyz.length == 0 ||
654
+ well_mds.length == 0)
655
+ return [];
656
+ const log_mds = getLogMd(d, logrun_name);
657
+ if (!log_mds)
658
+ return [];
659
+ const log_xyz = [];
660
+ let md0 = selection[0];
661
+ if (md0 !== undefined) {
662
+ let md1 = selection[1];
663
+ if (md1 == md0)
664
+ md1 = undefined;
665
+ const mdFirst = well_mds[0];
666
+ const mdLast = well_mds[well_mds.length - 1];
667
+ if (md1 !== undefined) {
668
+ if (md0 > md1) {
669
+ const tmp = md0;
670
+ md0 = md1;
671
+ md1 = tmp;
672
+ }
673
+ }
674
+ const delta = 2;
675
+ if (md0 - delta > mdFirst) {
676
+ let xyz = getPositionByMD(well_xyz, well_mds, md0 - delta);
677
+ log_xyz.push(xyz);
678
+ xyz = getPositionByMD(well_xyz, well_mds, md0);
679
+ log_xyz.push(xyz);
680
+ }
681
+ if (md1 !== undefined) {
682
+ const _md1 = md1;
683
+ let index = 0;
684
+ well_mds.forEach((md) => {
685
+ if (md0 <= md && md <= _md1) {
686
+ const xyz = well_xyz[index];
687
+ log_xyz.push(xyz);
688
+ }
689
+ index++;
690
+ });
691
+ if (_md1 + delta < mdLast) {
692
+ let xyz = getPositionByMD(well_xyz, well_mds, _md1);
693
+ log_xyz.push(xyz);
694
+ xyz = getPositionByMD(well_xyz, well_mds, _md1 + delta);
695
+ log_xyz.push(xyz);
696
+ }
697
+ }
698
+ }
699
+ return log_xyz;
700
+ }
701
+ function getLogColor1(wells_data, d, selectedWell, selection, logrun_name) {
702
+ if (!selection || selectedWell !== d.header.well)
703
+ return [];
704
+ const well_object = getWellObjectByName(wells_data, d.header.well);
705
+ if (!well_object)
706
+ return [];
707
+ const well_mds = getWellMds(well_object);
708
+ const log_mds = getLogMd(d, logrun_name);
709
+ if (!log_mds || log_mds.length === 0)
710
+ return [];
711
+ const log_color = [];
712
+ let md0 = selection[0];
713
+ if (md0 !== undefined) {
714
+ const mdFirst = well_mds[0];
715
+ const mdLast = well_mds[well_mds.length - 1];
716
+ let md1 = selection[1];
717
+ if (md1 == md0)
718
+ md1 = undefined;
719
+ let swap = false;
720
+ if (md1 !== undefined) {
721
+ if (md0 > md1) {
722
+ const tmp = md0;
723
+ md0 = md1;
724
+ md1 = tmp;
725
+ swap = true;
726
+ }
727
+ }
728
+ const delta = 2;
729
+ if (md0 - delta > mdFirst)
730
+ log_color.push(swap ? [0, 255, 0, 128] : [255, 0, 0, 128]);
731
+ if (md1 !== undefined) {
732
+ const _md1 = md1;
733
+ log_color.push([128, 128, 128, 128]);
734
+ well_mds.forEach((md) => {
735
+ if (md0 <= md && md <= _md1) {
736
+ log_color.push([128, 128, 128, 128]);
737
+ }
738
+ });
739
+ if (_md1 + delta < mdLast)
740
+ log_color.push(swap ? [255, 0, 0, 128] : [0, 255, 0, 128]);
741
+ }
742
+ }
743
+ return log_color;
744
+ }
745
+ function getLogWidth(d, logrun_name, log_name) {
746
+ return getLogValues(d, logrun_name, log_name);
747
+ }
748
+ function squared_distance(a, b) {
749
+ const dx = a[0] - b[0];
750
+ const dy = a[1] - b[1];
751
+ return dx * dx + dy * dy;
752
+ }
753
+ // Return distance between line segment vw and point p
754
+ function distToSegmentSquared(v, w, p) {
755
+ const l2 = squared_distance(v, w);
756
+ if (l2 == 0)
757
+ return squared_distance(p, v);
758
+ let t = ((p[0] - v[0]) * (w[0] - v[0]) + (p[1] - v[1]) * (w[1] - v[1])) / l2;
759
+ t = Math.max(0, Math.min(1, t));
760
+ return squared_distance(p, [
761
+ v[0] + t * (w[0] - v[0]),
762
+ v[1] + t * (w[1] - v[1]),
763
+ ]);
764
+ }
765
+ // Interpolates point closest to the coords on trajectory
766
+ function interpolateDataOnTrajectory(coord, data, trajectory) {
767
+ // if number of data points in less than 1 or
768
+ // length of data and trajectory are different we cannot interpolate.
769
+ if (data.length <= 1 || data.length != trajectory.length)
770
+ return -1;
771
+ // Identify closest well path leg to coord.
772
+ const segment_index = getSegmentIndex(coord, trajectory);
773
+ const index0 = segment_index;
774
+ const index1 = index0 + 1;
775
+ // Get the nearest data.
776
+ const data0 = data[index0];
777
+ const data1 = data[index1];
778
+ // Get the nearest survey points.
779
+ const survey0 = trajectory[index0];
780
+ const survey1 = trajectory[index1];
781
+ const dv = distance(survey0, survey1);
782
+ if (dv === 0) {
783
+ return -1;
784
+ }
785
+ // Calculate the scalar projection onto segment.
786
+ const v0 = subtract(coord, survey0);
787
+ const v1 = subtract(survey1, survey0);
788
+ // scalar_projection in interval [0,1]
789
+ const scalar_projection = dot(v0, v1) / (dv * dv);
790
+ // Interpolate data.
791
+ return data0 * (1.0 - scalar_projection) + data1 * scalar_projection;
792
+ }
793
+ function getMd(coord, feature, accessor) {
794
+ var _a, _b;
795
+ if (!((_b = (_a = feature.properties) === null || _a === void 0 ? void 0 : _a["md"]) === null || _b === void 0 ? void 0 : _b[0]) || !feature.geometry)
796
+ return null;
797
+ const measured_depths = feature.properties["md"][0];
798
+ const trajectory3D = getTrajectory(feature, accessor);
799
+ if (trajectory3D == undefined)
800
+ return null;
801
+ let trajectory;
802
+ // In 2D view coord is of type Position2D and in 3D view it's Position3D,
803
+ // so use apropriate trajectory for interpolation
804
+ if (coord.length == 2) {
805
+ const trajectory2D = trajectory3D.map((v) => {
806
+ return v.slice(0, 2);
807
+ });
808
+ trajectory = trajectory2D;
809
+ }
810
+ else {
811
+ trajectory = trajectory3D;
812
+ }
813
+ return interpolateDataOnTrajectory(coord, measured_depths, trajectory);
814
+ }
815
+ function getMdProperty(coord, feature, accessor, featureType) {
816
+ var _a, _b;
817
+ if (featureType === "points") {
818
+ return null;
819
+ }
820
+ const md = getMd(coord, feature, accessor);
821
+ if (md != null) {
822
+ const prop_name = "MD " + ((_a = feature.properties) === null || _a === void 0 ? void 0 : _a["name"]);
823
+ return createPropertyData(prop_name, md, (_b = feature.properties) === null || _b === void 0 ? void 0 : _b["color"]);
824
+ }
825
+ return null;
826
+ }
827
+ function getTvd(coord, feature, accessor) {
828
+ var _a;
829
+ const trajectory3D = getTrajectory(feature, accessor);
830
+ // if trajectory is not found or if it has a data single point then get tvd from well head
831
+ if (trajectory3D == undefined || (trajectory3D === null || trajectory3D === void 0 ? void 0 : trajectory3D.length) <= 1) {
832
+ const wellhead_xyz = getWellHeadPosition(feature);
833
+ return (_a = wellhead_xyz === null || wellhead_xyz === void 0 ? void 0 : wellhead_xyz[2]) !== null && _a !== void 0 ? _a : null;
834
+ }
835
+ let trajectory;
836
+ // For 2D view coord is Position2D and for 3D view it's Position3D
837
+ if (coord.length == 2) {
838
+ const trajectory2D = trajectory3D === null || trajectory3D === void 0 ? void 0 : trajectory3D.map((v) => {
839
+ return v.slice(0, 2);
840
+ });
841
+ trajectory = trajectory2D;
842
+ }
843
+ else {
844
+ trajectory = trajectory3D;
845
+ }
846
+ const tvds = trajectory3D.map((v) => {
847
+ return v[2];
848
+ });
849
+ return interpolateDataOnTrajectory(coord, tvds, trajectory);
850
+ }
851
+ function getTvdProperty(coord, feature, accessor, featureType) {
852
+ var _a, _b;
853
+ if (featureType === "points") {
854
+ return null;
855
+ }
856
+ const tvd = getTvd(coord, feature, accessor);
857
+ if (tvd != null) {
858
+ const prop_name = "TVD " + ((_a = feature.properties) === null || _a === void 0 ? void 0 : _a["name"]);
859
+ return createPropertyData(prop_name, tvd, (_b = feature.properties) === null || _b === void 0 ? void 0 : _b["color"]);
860
+ }
861
+ return null;
862
+ }
863
+ // Identify closest path leg to coord.
864
+ function getSegmentIndex(coord, path) {
865
+ let min_d = Number.MAX_VALUE;
866
+ let segment_index = 0;
867
+ for (let i = 0; i < (path === null || path === void 0 ? void 0 : path.length) - 1; i++) {
868
+ const d = distToSegmentSquared(path[i], path[i + 1], coord);
869
+ if (d > min_d)
870
+ continue;
871
+ segment_index = i;
872
+ min_d = d;
873
+ }
874
+ return segment_index;
875
+ }
876
+ // Returns segment index of discrete logs
877
+ function getLogSegmentIndex(coord, wells_data, log_data, logrun_name) {
878
+ const trajectory = getLogPath(wells_data, log_data, logrun_name);
879
+ return getSegmentIndex(coord, trajectory);
880
+ }
881
+ function getLogProperty(coord, wells_data, log_data, logrun_name, log_name) {
882
+ var _a, _b, _c;
883
+ if (!log_data.data)
884
+ return null;
885
+ const segment_index = getLogSegmentIndex(coord, wells_data, log_data, logrun_name);
886
+ let log_value = getLogValues(log_data, logrun_name, log_name)[segment_index];
887
+ let dl_attrs = undefined;
888
+ const dl_metadata = (_a = getDiscreteLogMetadata(log_data, log_name)) === null || _a === void 0 ? void 0 : _a.objects;
889
+ if (dl_metadata) {
890
+ dl_attrs = Object.entries(dl_metadata).find(([, value]) => value[1] == log_value);
891
+ }
892
+ const log = (_b = getLogInfo(log_data, logrun_name, log_name)) === null || _b === void 0 ? void 0 : _b.name;
893
+ const prop_name = log + " " + log_data.header.well;
894
+ log_value = dl_attrs ? dl_attrs[0] + " (" + log_value + ")" : log_value;
895
+ if (log_value) {
896
+ const well_object = getWellObjectByName(wells_data, log_data.header.well);
897
+ return createPropertyData(prop_name, log_value, (_c = well_object === null || well_object === void 0 ? void 0 : well_object.properties) === null || _c === void 0 ? void 0 : _c["color"]);
898
+ }
899
+ else
900
+ return null;
901
+ }
902
+ // Return data required to build welllayer legend
903
+ function getLegendData(logs, wellName, logName, logColor) {
904
+ if (!logs)
905
+ return null;
906
+ const log = wellName
907
+ ? logs.find((log) => log.header.well == wellName)
908
+ : logs[0];
909
+ const logInfo = !log
910
+ ? undefined
911
+ : getLogInfo(log, log.header.name, logName);
912
+ const title = "Wells / " + logName;
913
+ if (log && (logInfo === null || logInfo === void 0 ? void 0 : logInfo.description) == "discrete") {
914
+ const meta = log["metadata_discrete"];
915
+ const metadataDiscrete = meta[logName].objects;
916
+ return {
917
+ title: title,
918
+ colorName: logColor,
919
+ discrete: true,
920
+ metadata: metadataDiscrete,
921
+ };
922
+ }
923
+ else {
924
+ const minArray = [];
925
+ const maxArray = [];
926
+ logs.forEach(function (log) {
927
+ const logValues = getLogValues(log, log.header.name, logName);
928
+ minArray.push(Math.min(...logValues));
929
+ maxArray.push(Math.max(...logValues));
930
+ });
931
+ return {
932
+ title: title,
933
+ colorName: logColor,
934
+ discrete: false,
935
+ valueRange: [Math.min(...minArray), Math.max(...maxArray)],
936
+ };
937
+ }
938
+ }
939
+ //# sourceMappingURL=wellsLayer.js.map