@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,867 @@
1
+ import { JSONConfiguration, JSONConverter } from "@deck.gl/json/typed";
2
+ import DeckGL from "@deck.gl/react/typed";
3
+ import { OrthographicView, OrbitView, } from "@deck.gl/core/typed";
4
+ import React, { useEffect, useState, useCallback, useRef } from "react";
5
+ import JSON_CONVERTER_CONFIG from "../utils/configuration";
6
+ import InfoCard from "./InfoCard";
7
+ import DistanceScale from "./DistanceScale";
8
+ import StatusIndicator from "./StatusIndicator";
9
+ import fitBounds from "../utils/fit-bounds";
10
+ import { validateColorTables, validateLayers, } from "../inputSchema/schemaValidationUtil";
11
+ import { getLayersByType } from "../layers/utils/layerTools";
12
+ import { getWellLayerByTypeAndSelectedWells } from "../layers/utils/layerTools";
13
+ import { WellsLayer, Axes2DLayer, NorthArrow3DLayer } from "../layers";
14
+ import { isEmpty, isEqual } from "lodash";
15
+ import { cloneDeep } from "lodash";
16
+ import { colorTables } from "@emerson-eps/color-tables";
17
+ import { getModelMatrixScale } from "../layers/utils/layerTools";
18
+ import { OrbitController, OrthographicController } from "@deck.gl/core/typed";
19
+ import IntersectionView from "../views/intersectionView";
20
+ function addBoundingBoxes(b1, b2) {
21
+ const boxDefault = [0, 0, 0, 1, 1, 1];
22
+ if (typeof b1 === "undefined" || typeof b2 === "undefined") {
23
+ return boxDefault;
24
+ }
25
+ if (isEqual(b1, boxDefault)) {
26
+ return b2;
27
+ }
28
+ const xmin = Math.min(b1[0], b2[0]);
29
+ const ymin = Math.min(b1[1], b2[1]);
30
+ const zmin = Math.min(b1[2], b2[2]);
31
+ const xmax = Math.max(b1[3], b2[3]);
32
+ const ymax = Math.max(b1[4], b2[4]);
33
+ const zmax = Math.max(b1[5], b2[5]);
34
+ return [xmin, ymin, zmin, xmax, ymax, zmax];
35
+ }
36
+ function boundingBoxCenter(box) {
37
+ const xmin = box[0];
38
+ const ymin = box[1];
39
+ const zmin = box[2];
40
+ const xmax = box[3];
41
+ const ymax = box[4];
42
+ const zmax = box[5];
43
+ return [
44
+ xmin + 0.5 * (xmax - xmin),
45
+ ymin + 0.5 * (ymax - ymin),
46
+ zmin + 0.5 * (zmax - zmin),
47
+ ];
48
+ }
49
+ export function useHoverInfo() {
50
+ const [hoverInfo, setHoverInfo] = React.useState([]);
51
+ const callback = React.useCallback((pickEvent) => {
52
+ setHoverInfo(pickEvent.infos);
53
+ }, []);
54
+ return [hoverInfo, callback];
55
+ }
56
+ function defaultTooltip(info) {
57
+ var _a, _b, _c;
58
+ if (info === null || info === void 0 ? void 0 : info.logName) {
59
+ return info === null || info === void 0 ? void 0 : info.logName;
60
+ }
61
+ else if (((_a = info.layer) === null || _a === void 0 ? void 0 : _a.id) === "drawing-layer") {
62
+ return (_b = info.propertyValue) === null || _b === void 0 ? void 0 : _b.toFixed(2);
63
+ }
64
+ const feat = info.object;
65
+ return (_c = feat === null || feat === void 0 ? void 0 : feat.properties) === null || _c === void 0 ? void 0 : _c["name"];
66
+ }
67
+ function adjustCameraTarget(viewStates, scale, newScale) {
68
+ const vs = cloneDeep(viewStates);
69
+ for (const key in vs) {
70
+ if (typeof vs[key].target !== "undefined") {
71
+ const t = vs[key].target;
72
+ const z = newScale * (t[2] / scale);
73
+ vs[key].target = [t[0], t[1], z];
74
+ }
75
+ }
76
+ return vs;
77
+ }
78
+ const Map = ({ id, layers, bounds, views, coords, scale, coordinateUnit, colorTables, setEditedData, checkDatafileSchema, onMouseEvent, selection, children, getTooltip = defaultTooltip, cameraPosition, getCameraPosition, triggerHome, triggerResetMultipleWells, }) => {
79
+ var _a, _b, _c, _d, _e;
80
+ const isCameraPositionDefined = typeof cameraPosition !== "undefined" &&
81
+ Object.keys(cameraPosition).length !== 0;
82
+ const deckRef = useRef(null);
83
+ const bboxInitial = [0, 0, 0, 1, 1, 1];
84
+ const boundsInitial = React.useMemo(() => bounds !== null && bounds !== void 0 ? bounds : [0, 0, 1, 1], [bounds]);
85
+ // state for views prop of DeckGL component
86
+ const [viewsProps, setViewsProps] = useState([]);
87
+ const [alteredLayers, setAlteredLayers] = useState([]);
88
+ const [viewPortMargins, setViewPortMargins] = useState({
89
+ left: 0,
90
+ right: 0,
91
+ top: 0,
92
+ bottom: 0,
93
+ });
94
+ const [didUserChangeCamera, setDidUserChangeCamera] = useState(false);
95
+ const [reportedBoundingBox, setReportedBoundingBox] = useState(bboxInitial);
96
+ const [reportedBoundingBoxAcc, setReportedBoundingBoxAcc] = useState(bboxInitial);
97
+ const initialViewState = getViewState(viewPortMargins, boundsInitial, boundingBoxCenter(reportedBoundingBoxAcc), views, 0, (_a = deckRef.current) === null || _a === void 0 ? void 0 : _a.deck);
98
+ // Local help function.
99
+ const calcDefaultViewStates = useCallback((boundingBox, input) => {
100
+ const center = boundingBoxCenter(boundingBox // note this may include axesLayer
101
+ );
102
+ const updatedViewProps = input ? input : viewsProps;
103
+ const isBoundsDefined = typeof bounds !== "undefined";
104
+ const viewStateMap = updatedViewProps.map((item, index) => {
105
+ var _a, _b, _c, _d, _e, _f;
106
+ const is3D = (_c = (_b = (_a = views === null || views === void 0 ? void 0 : views.viewports) === null || _a === void 0 ? void 0 : _a[index]) === null || _b === void 0 ? void 0 : _b.show3D) !== null && _c !== void 0 ? _c : false;
107
+ const viewState = isBoundsDefined
108
+ ? getViewState(viewPortMargins, boundsInitial, center, views, index, (_d = deckRef.current) === null || _d === void 0 ? void 0 : _d.deck)
109
+ : getViewState3D(is3D, boundingBox, (_e = views === null || views === void 0 ? void 0 : views.viewports) === null || _e === void 0 ? void 0 : _e[index].zoom, (_f = deckRef.current) === null || _f === void 0 ? void 0 : _f.deck);
110
+ const minZoom = is3D ? -12 : -12;
111
+ const maxZoom = is3D ? +12 : +4;
112
+ return [item.id, Object.assign(Object.assign({}, viewState), { minZoom, maxZoom })];
113
+ });
114
+ const tempViewStates = Object.fromEntries(viewStateMap);
115
+ setDidUserChangeCamera(false);
116
+ setViewStates(tempViewStates);
117
+ }, [bounds, boundsInitial, views, viewPortMargins, viewsProps]);
118
+ // set initial view state based on supplied bounds and zoom in viewState
119
+ const [viewStates, setViewStates] = useState({
120
+ "main-view_2D": cameraPosition !== null && cameraPosition !== void 0 ? cameraPosition : {},
121
+ });
122
+ const [firstViewStateId, setFirstViewStatesId] = useState("main-view_2D");
123
+ useEffect(() => {
124
+ let tempViewStates = {};
125
+ if (isCameraPositionDefined) {
126
+ tempViewStates = Object.fromEntries(viewsProps.map((item) => [item.id, cameraPosition]));
127
+ }
128
+ else {
129
+ const isBoundsDefined = typeof bounds !== "undefined";
130
+ tempViewStates = Object.fromEntries(viewsProps.map((item, index) => {
131
+ var _a, _b, _c, _d, _e, _f;
132
+ let viewState = viewStates[item.id];
133
+ if (typeof viewState === "undefined") {
134
+ viewState = isBoundsDefined
135
+ ? getViewState(viewPortMargins, boundsInitial, boundingBoxCenter(reportedBoundingBoxAcc), views, index, (_a = deckRef.current) === null || _a === void 0 ? void 0 : _a.deck)
136
+ : getViewState3D((_d = (_c = (_b = views === null || views === void 0 ? void 0 : views.viewports) === null || _b === void 0 ? void 0 : _b[index]) === null || _c === void 0 ? void 0 : _c.show3D) !== null && _d !== void 0 ? _d : false, reportedBoundingBoxAcc, (_e = views === null || views === void 0 ? void 0 : views.viewports) === null || _e === void 0 ? void 0 : _e[index].zoom, (_f = deckRef.current) === null || _f === void 0 ? void 0 : _f.deck);
137
+ }
138
+ return [item.id, viewState];
139
+ }));
140
+ }
141
+ if (viewsProps[0] !== undefined) {
142
+ setFirstViewStatesId(viewsProps[0].id);
143
+ }
144
+ setViewStates(tempViewStates);
145
+ // eslint-disable-next-line react-hooks/exhaustive-deps
146
+ }, [
147
+ boundsInitial,
148
+ cameraPosition,
149
+ isCameraPositionDefined,
150
+ viewPortMargins,
151
+ views === null || views === void 0 ? void 0 : views.viewports,
152
+ viewsProps,
153
+ ]);
154
+ // calculate view state on deckgl context load (based on viewport size)
155
+ const onLoad = useCallback(() => {
156
+ let tempViewStates = {};
157
+ if (isCameraPositionDefined) {
158
+ tempViewStates = Object.fromEntries(viewsProps.map((item) => [item.id, cameraPosition]));
159
+ }
160
+ else {
161
+ tempViewStates = Object.fromEntries(viewsProps.map((item, index) => {
162
+ var _a;
163
+ return [
164
+ item.id,
165
+ getViewState(viewPortMargins, boundsInitial, boundingBoxCenter(reportedBoundingBoxAcc), views, index, (_a = deckRef.current) === null || _a === void 0 ? void 0 : _a.deck),
166
+ ];
167
+ }));
168
+ if (viewsProps[0] !== undefined) {
169
+ setFirstViewStatesId(viewsProps[0].id);
170
+ }
171
+ setViewStates(tempViewStates);
172
+ }
173
+ }, [
174
+ isCameraPositionDefined,
175
+ viewsProps,
176
+ cameraPosition,
177
+ viewPortMargins,
178
+ boundsInitial,
179
+ reportedBoundingBoxAcc,
180
+ views,
181
+ ]);
182
+ useEffect(() => {
183
+ if (typeof triggerHome !== "undefined") {
184
+ calcDefaultViewStates(reportedBoundingBoxAcc);
185
+ }
186
+ // eslint-disable-next-line react-hooks/exhaustive-deps
187
+ }, [triggerHome]);
188
+ useEffect(() => {
189
+ const union_of_reported_bboxes = addBoundingBoxes(reportedBoundingBoxAcc, reportedBoundingBox);
190
+ setReportedBoundingBoxAcc(union_of_reported_bboxes);
191
+ // If "bounds" or "cameraPosition" is not defined "viewState" will be
192
+ // calculated based on the union of the reported bounding boxes from each layer.
193
+ if (!didUserChangeCamera && !isCameraPositionDefined) {
194
+ calcDefaultViewStates(union_of_reported_bboxes);
195
+ }
196
+ // eslint-disable-next-line react-hooks/exhaustive-deps
197
+ }, [reportedBoundingBox]);
198
+ // react on bounds prop change
199
+ useEffect(() => {
200
+ const isBoundsDefined = typeof bounds !== "undefined";
201
+ let tempViewStates = {};
202
+ if (!isCameraPositionDefined) {
203
+ tempViewStates = Object.fromEntries(viewsProps.map((item, index) => {
204
+ var _a, _b, _c, _d, _e, _f;
205
+ return [
206
+ item.id,
207
+ isBoundsDefined
208
+ ? getViewState(viewPortMargins, boundsInitial, boundingBoxCenter(reportedBoundingBoxAcc), views, index, (_a = deckRef.current) === null || _a === void 0 ? void 0 : _a.deck)
209
+ : getViewState3D((_d = (_c = (_b = views === null || views === void 0 ? void 0 : views.viewports) === null || _b === void 0 ? void 0 : _b[index]) === null || _c === void 0 ? void 0 : _c.show3D) !== null && _d !== void 0 ? _d : false, reportedBoundingBoxAcc, (_e = views === null || views === void 0 ? void 0 : views.viewports) === null || _e === void 0 ? void 0 : _e[index].zoom, (_f = deckRef.current) === null || _f === void 0 ? void 0 : _f.deck),
210
+ ];
211
+ }));
212
+ if (viewsProps[0] !== undefined) {
213
+ setFirstViewStatesId(viewsProps[0].id);
214
+ }
215
+ setViewStates(tempViewStates);
216
+ }
217
+ // eslint-disable-next-line react-hooks/exhaustive-deps
218
+ }, [boundsInitial, cameraPosition, views === null || views === void 0 ? void 0 : views.viewports, viewsProps]);
219
+ // react on cameraPosition prop change
220
+ useEffect(() => {
221
+ let tempViewStates = {};
222
+ if (isCameraPositionDefined) {
223
+ tempViewStates = Object.fromEntries(viewsProps.map((item) => [item.id, cameraPosition]));
224
+ setViewStates(tempViewStates);
225
+ if (viewsProps[0] !== undefined) {
226
+ setFirstViewStatesId(viewsProps[0].id);
227
+ }
228
+ }
229
+ if (cameraPosition === null) {
230
+ tempViewStates = Object.fromEntries(viewsProps.map((item) => [item.id, initialViewState]));
231
+ setViewStates(tempViewStates);
232
+ }
233
+ // eslint-disable-next-line react-hooks/exhaustive-deps
234
+ }, [cameraPosition, viewsProps]);
235
+ // Used for scaling in z direction using arrow keys.
236
+ const [scaleZ, setScaleZ] = useState(1);
237
+ const [scaleZUp, setScaleZUp] = useState(1);
238
+ const [scaleZDown, setScaleZDown] = useState(1);
239
+ const scaleUpFunction = () => {
240
+ setScaleZUp(Math.random());
241
+ };
242
+ const scaleDownFunction = () => {
243
+ setScaleZDown(Math.random());
244
+ };
245
+ useEffect(() => {
246
+ const newScaleZ = scaleZ * 1.05;
247
+ setScaleZ(newScaleZ);
248
+ // Make camera target follow the scaling.
249
+ const vs = adjustCameraTarget(viewStates, scaleZ, newScaleZ);
250
+ setViewStates(vs);
251
+ // eslint-disable-next-line react-hooks/exhaustive-deps
252
+ }, [scaleZUp]);
253
+ useEffect(() => {
254
+ const newScaleZ = scaleZ * 0.95;
255
+ setScaleZ(newScaleZ);
256
+ // Make camera target follow the scaling.
257
+ const vs = adjustCameraTarget(viewStates, scaleZ, newScaleZ);
258
+ setViewStates(vs);
259
+ // eslint-disable-next-line react-hooks/exhaustive-deps
260
+ }, [scaleZDown]);
261
+ useEffect(() => {
262
+ const viewProps = getViews(views);
263
+ setViewsProps(viewProps);
264
+ if (!bounds) {
265
+ calcDefaultViewStates(reportedBoundingBoxAcc);
266
+ }
267
+ // eslint-disable-next-line react-hooks/exhaustive-deps
268
+ }, [views]);
269
+ useEffect(() => {
270
+ if (layers == undefined)
271
+ return;
272
+ // Margins on the viewport are extracted from a potenial axes2D layer.
273
+ const axes2DLayer = layers === null || layers === void 0 ? void 0 : layers.find((e) => {
274
+ return (e === null || e === void 0 ? void 0 : e.constructor) === Axes2DLayer;
275
+ });
276
+ const left = axes2DLayer && axes2DLayer.props.isLeftRuler
277
+ ? axes2DLayer.props.marginH
278
+ : 0;
279
+ const right = axes2DLayer && axes2DLayer.props.isRightRuler
280
+ ? axes2DLayer.props.marginH
281
+ : 0;
282
+ const top = axes2DLayer && axes2DLayer.props.isTopRuler
283
+ ? axes2DLayer.props.marginV
284
+ : 0;
285
+ const bottom = axes2DLayer && axes2DLayer.props.isBottomRuler
286
+ ? axes2DLayer.props.marginV
287
+ : 0;
288
+ setViewPortMargins({ left, right, top, bottom });
289
+ const m = getModelMatrixScale(scaleZ);
290
+ const layers_copy = layers.map((item) => {
291
+ if ((item === null || item === void 0 ? void 0 : item.constructor.name) === NorthArrow3DLayer.name)
292
+ return item;
293
+ const layer = item;
294
+ // Set "modelLayer" matrix to reflect correct z scaling.
295
+ const scaledLayer = layer.clone({ modelMatrix: m });
296
+ // Inject "setReportedBoundingBox" function into layer for it to report
297
+ // back its respective bounding box.
298
+ const boundedLayer = scaledLayer.clone({
299
+ setReportedBoundingBox: setReportedBoundingBox,
300
+ });
301
+ return boundedLayer !== null && boundedLayer !== void 0 ? boundedLayer : scaledLayer;
302
+ });
303
+ setAlteredLayers(layers_copy);
304
+ }, [scaleZ, layers /*dispatch*/]);
305
+ const [deckGLLayers, setDeckGLLayers] = useState([]);
306
+ useEffect(() => {
307
+ setDeckGLLayers(alteredLayers);
308
+ }, [alteredLayers]);
309
+ useEffect(() => {
310
+ var _a, _b, _c;
311
+ const layers = (_b = (_a = deckRef.current) === null || _a === void 0 ? void 0 : _a.deck) === null || _b === void 0 ? void 0 : _b.props.layers;
312
+ if (layers) {
313
+ const wellslayer = (_c = getLayersByType(layers, WellsLayer.name)) === null || _c === void 0 ? void 0 : _c[0];
314
+ wellslayer === null || wellslayer === void 0 ? void 0 : wellslayer.setSelection(selection === null || selection === void 0 ? void 0 : selection.well, selection === null || selection === void 0 ? void 0 : selection.selection);
315
+ }
316
+ }, [selection]);
317
+ // multiple well layers
318
+ const [multipleWells, setMultipleWells] = useState([]);
319
+ const [selectedWell, setSelectedWell] = useState("");
320
+ const [shiftHeld, setShiftHeld] = useState(false);
321
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
322
+ function downHandler({ key }) {
323
+ if (key === "Shift") {
324
+ setShiftHeld(true);
325
+ }
326
+ }
327
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
328
+ function upHandler({ key }) {
329
+ if (key === "Shift") {
330
+ setShiftHeld(false);
331
+ }
332
+ }
333
+ useEffect(() => {
334
+ window.addEventListener("keydown", downHandler);
335
+ window.addEventListener("keyup", upHandler);
336
+ return () => {
337
+ window.removeEventListener("keydown", downHandler);
338
+ window.removeEventListener("keyup", upHandler);
339
+ };
340
+ }, []);
341
+ useEffect(() => {
342
+ var _a, _b, _c;
343
+ const layers = (_b = (_a = deckRef.current) === null || _a === void 0 ? void 0 : _a.deck) === null || _b === void 0 ? void 0 : _b.props.layers;
344
+ if (layers) {
345
+ const wellslayer = (_c = getWellLayerByTypeAndSelectedWells(layers, "WellsLayer", selectedWell)) === null || _c === void 0 ? void 0 : _c[0];
346
+ wellslayer === null || wellslayer === void 0 ? void 0 : wellslayer.setMultiSelection(multipleWells);
347
+ }
348
+ }, [multipleWells, selectedWell]);
349
+ useEffect(() => {
350
+ if (typeof triggerResetMultipleWells !== "undefined") {
351
+ setMultipleWells([]);
352
+ }
353
+ }, [triggerResetMultipleWells]);
354
+ const getPickingInfos = useCallback((pickInfo,
355
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
356
+ event) => {
357
+ var _a;
358
+ if ((coords === null || coords === void 0 ? void 0 : coords.multiPicking) && ((_a = pickInfo.layer) === null || _a === void 0 ? void 0 : _a.context.deck)) {
359
+ const pickInfos = pickInfo.layer.context.deck.pickMultipleObjects({
360
+ x: event.offsetCenter.x,
361
+ y: event.offsetCenter.y,
362
+ depth: coords.pickDepth ? coords.pickDepth : undefined,
363
+ });
364
+ pickInfos.forEach((item) => {
365
+ var _a, _b;
366
+ if (item.properties) {
367
+ let unit = (_b = (_a = item.sourceLayer) === null || _a === void 0 ? void 0 : _a.props.data) === null || _b === void 0 ? void 0 : _b.unit;
368
+ if (unit == undefined)
369
+ unit = " ";
370
+ item.properties.forEach((element) => {
371
+ if (element.name.includes("MD") ||
372
+ element.name.includes("TVD")) {
373
+ element.value =
374
+ Number(element.value)
375
+ .toFixed(2)
376
+ .toString() +
377
+ " " +
378
+ unit;
379
+ }
380
+ });
381
+ }
382
+ });
383
+ return pickInfos;
384
+ }
385
+ return [pickInfo];
386
+ }, [coords === null || coords === void 0 ? void 0 : coords.multiPicking, coords === null || coords === void 0 ? void 0 : coords.pickDepth]);
387
+ /**
388
+ * call onMouseEvent callback
389
+ */
390
+ const callOnMouseEvent = useCallback((type, infos, event) => {
391
+ if (!onMouseEvent)
392
+ return;
393
+ const ev = handleMouseEvent(type, infos, event);
394
+ onMouseEvent(ev);
395
+ }, [onMouseEvent]);
396
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
397
+ const [hoverInfo, setHoverInfo] = useState([]);
398
+ const onHover = useCallback((pickInfo, event) => {
399
+ const infos = getPickingInfos(pickInfo, event);
400
+ setHoverInfo(infos); // for InfoCard pickInfos
401
+ callOnMouseEvent === null || callOnMouseEvent === void 0 ? void 0 : callOnMouseEvent("hover", infos, event);
402
+ }, [callOnMouseEvent, getPickingInfos]);
403
+ const onClick = useCallback((pickInfo, event) => {
404
+ const infos = getPickingInfos(pickInfo, event);
405
+ callOnMouseEvent === null || callOnMouseEvent === void 0 ? void 0 : callOnMouseEvent("click", infos, event);
406
+ }, [callOnMouseEvent, getPickingInfos]);
407
+ const [isLoaded, setIsLoaded] = useState(false);
408
+ const onAfterRender = useCallback(() => {
409
+ if (deckGLLayers) {
410
+ const state = deckGLLayers.every((layer) => layer.isLoaded);
411
+ setIsLoaded(state);
412
+ }
413
+ }, [deckGLLayers]);
414
+ // validate layers data
415
+ const [errorText, setErrorText] = useState();
416
+ useEffect(() => {
417
+ var _a, _b;
418
+ const layers = (_b = (_a = deckRef.current) === null || _a === void 0 ? void 0 : _a.deck) === null || _b === void 0 ? void 0 : _b.props.layers;
419
+ // this ensures to validate the schemas only once
420
+ if (checkDatafileSchema && layers && isLoaded) {
421
+ try {
422
+ validateLayers(layers);
423
+ colorTables && validateColorTables(colorTables);
424
+ }
425
+ catch (e) {
426
+ setErrorText(String(e));
427
+ }
428
+ }
429
+ else
430
+ setErrorText(undefined);
431
+ }, [
432
+ checkDatafileSchema,
433
+ colorTables,
434
+ (_c = (_b = deckRef === null || deckRef === void 0 ? void 0 : deckRef.current) === null || _b === void 0 ? void 0 : _b.deck) === null || _c === void 0 ? void 0 : _c.props.layers,
435
+ isLoaded,
436
+ ]);
437
+ const layerFilter = useCallback((args) => {
438
+ // display all the layers if views are not specified correctly
439
+ if (!views || !views.viewports || !views.layout)
440
+ return true;
441
+ const cur_view = views.viewports.find(({ id }) => args.viewport.id && id === args.viewport.id);
442
+ if ((cur_view === null || cur_view === void 0 ? void 0 : cur_view.layerIds) && cur_view.layerIds.length > 0) {
443
+ const layer_ids = cur_view.layerIds;
444
+ return layer_ids.some((layer_id) => {
445
+ const t = layer_id === args.layer.id;
446
+ return t;
447
+ });
448
+ }
449
+ else {
450
+ return true;
451
+ }
452
+ }, [views]);
453
+ const onViewStateChange = useCallback(
454
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
455
+ ({ viewId, viewState }) => {
456
+ var _a;
457
+ const viewports = (views === null || views === void 0 ? void 0 : views.viewports) || [];
458
+ const isSyncIds = viewports
459
+ .filter((item) => item.isSync)
460
+ .map((item) => item.id);
461
+ if (isSyncIds === null || isSyncIds === void 0 ? void 0 : isSyncIds.includes(viewId)) {
462
+ const viewStateTable = views === null || views === void 0 ? void 0 : views.viewports.filter((item) => item.isSync).map((item) => [item.id, viewState]);
463
+ const tempViewStates = Object.fromEntries(viewStateTable !== null && viewStateTable !== void 0 ? viewStateTable : []);
464
+ setViewStates((currentViewStates) => (Object.assign(Object.assign({}, currentViewStates), tempViewStates)));
465
+ }
466
+ else {
467
+ setViewStates((currentViewStates) => (Object.assign(Object.assign({}, currentViewStates), { [viewId]: viewState })));
468
+ }
469
+ if (getCameraPosition) {
470
+ getCameraPosition(viewState);
471
+ }
472
+ setFirstViewStatesId((_a = viewsProps[0]) === null || _a === void 0 ? void 0 : _a.id);
473
+ setDidUserChangeCamera(true);
474
+ }, [getCameraPosition, views === null || views === void 0 ? void 0 : views.viewports, viewsProps]);
475
+ const deckGLViews = React.useMemo(() => {
476
+ var _a;
477
+ return createViews(views, scaleUpFunction, scaleDownFunction, (_a = deckRef.current) === null || _a === void 0 ? void 0 : _a.deck);
478
+ // eslint-disable-next-line react-hooks/exhaustive-deps
479
+ }, [views, views, (_d = deckRef.current) === null || _d === void 0 ? void 0 : _d.deck]);
480
+ if (!deckGLViews || isEmpty(deckGLViews) || isEmpty(deckGLLayers))
481
+ return null;
482
+ return (React.createElement("div", { onContextMenu: (event) => event.preventDefault() },
483
+ React.createElement(DeckGL, { id: id, viewState: viewStates, views: deckGLViews, layerFilter: layerFilter, layers: deckGLLayers,
484
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
485
+ // @ts-expect-error
486
+ userData: {
487
+ setEditedData: (updated_prop) => {
488
+ setSelectedWell(updated_prop["selectedWell"]);
489
+ if (Object.keys(updated_prop).includes("selectedWell")) {
490
+ if (shiftHeld) {
491
+ if (multipleWells.includes(updated_prop["selectedWell"])) {
492
+ const temp = multipleWells.filter((item) => item !==
493
+ updated_prop["selectedWell"]);
494
+ setMultipleWells(temp);
495
+ }
496
+ else {
497
+ const temp = multipleWells.concat(updated_prop["selectedWell"]);
498
+ setMultipleWells(temp);
499
+ }
500
+ }
501
+ else {
502
+ setMultipleWells([]);
503
+ }
504
+ }
505
+ setEditedData === null || setEditedData === void 0 ? void 0 : setEditedData(updated_prop);
506
+ },
507
+ colorTables: colorTables,
508
+ }, getCursor: ({ isDragging }) => isDragging ? "grabbing" : "default", getTooltip: getTooltip, ref: deckRef, onViewStateChange: onViewStateChange, onHover: onHover, onClick: onClick, onLoad: onLoad, onAfterRender: onAfterRender }, children),
509
+ (scale === null || scale === void 0 ? void 0 : scale.visible) ? (React.createElement(DistanceScale, Object.assign({}, scale, { zoom: viewStates[firstViewStateId] === undefined
510
+ ? -5
511
+ : viewStates[firstViewStateId].zoom, scaleUnit: coordinateUnit, style: (_e = scale.cssStyle) !== null && _e !== void 0 ? _e : {} }))) : null,
512
+ React.createElement(StatusIndicator, { layers: deckGLLayers, isLoaded: isLoaded }),
513
+ (coords === null || coords === void 0 ? void 0 : coords.visible) ? React.createElement(InfoCard, { pickInfos: hoverInfo }) : null,
514
+ errorText && (React.createElement("pre", { style: {
515
+ flex: "0, 0",
516
+ color: "rgb(255, 64, 64)",
517
+ backgroundColor: "rgb(255, 255, 192)",
518
+ } }, errorText))));
519
+ };
520
+ Map.defaultProps = {
521
+ coords: {
522
+ visible: true,
523
+ multiPicking: true,
524
+ pickDepth: 10,
525
+ },
526
+ scale: {
527
+ visible: true,
528
+ incrementValue: 100,
529
+ widthPerUnit: 100,
530
+ cssStyle: { top: 10, left: 10 },
531
+ },
532
+ toolbar: {
533
+ visible: false,
534
+ },
535
+ coordinateUnit: "m",
536
+ views: {
537
+ layout: [1, 1],
538
+ showLabel: false,
539
+ viewports: [{ id: "main-view", show3D: false, layerIds: [] }],
540
+ },
541
+ colorTables: colorTables,
542
+ checkDatafileSchema: false,
543
+ };
544
+ export default Map;
545
+ // ------------- Helper functions ---------- //
546
+ // Add the resources as an enum in the Json Configuration and then convert the spec to actual objects.
547
+ // See https://deck.gl/docs/api-reference/json/overview for more details.
548
+ export function jsonToObject(data, enums = undefined) {
549
+ if (!data)
550
+ return [];
551
+ const configuration = new JSONConfiguration(JSON_CONVERTER_CONFIG);
552
+ enums === null || enums === void 0 ? void 0 : enums.forEach((enumeration) => {
553
+ if (enumeration) {
554
+ configuration.merge({
555
+ enumerations: Object.assign({}, enumeration),
556
+ });
557
+ }
558
+ });
559
+ const jsonConverter = new JSONConverter({ configuration });
560
+ // remove empty data/layer object
561
+ const filtered_data = data.filter((value) => Object.keys(value).length !== 0);
562
+ return jsonConverter.convert(filtered_data);
563
+ }
564
+ // return viewstate with computed bounds to fit the data in viewport
565
+ function getViewState(viewPortMargins, bounds_accessor, centerOfData, views, viewPortIndex, deck) {
566
+ var _a, _b, _c, _d, _e;
567
+ let bounds = [0, 0, 1, 1];
568
+ if (typeof bounds_accessor == "function") {
569
+ bounds = bounds_accessor();
570
+ }
571
+ else {
572
+ bounds = bounds_accessor;
573
+ }
574
+ let w = bounds[2] - bounds[0]; // right - left
575
+ let h = bounds[3] - bounds[1]; // top - bottom
576
+ const z = centerOfData[2];
577
+ const fb = fitBounds({ width: w, height: h, bounds });
578
+ let fb_target = [fb.x, fb.y, z];
579
+ let fb_zoom = fb.zoom;
580
+ if (deck) {
581
+ // If there are margins/rulers in the viewport (axes2DLayer) we have to account for that.
582
+ // Camera target should be in the middle of viewport minus the rulers.
583
+ const w_bounds = w;
584
+ const h_bounds = h;
585
+ const ml = viewPortMargins.left;
586
+ const mr = viewPortMargins.right;
587
+ const mb = viewPortMargins.bottom;
588
+ const mt = viewPortMargins.top;
589
+ // Subtract margins.
590
+ const marginH = (ml > 0 ? ml : 0) + (mr > 0 ? mr : 0);
591
+ const marginV = (mb > 0 ? mb : 0) + (mt > 0 ? mt : 0);
592
+ w = deck.width - marginH; // width of the viewport minus margin.
593
+ h = deck.height - marginV;
594
+ // Special case if matrix views.
595
+ // Use width and heigt for a subview instead of full viewport.
596
+ if (typeof (views === null || views === void 0 ? void 0 : views.layout) !== "undefined") {
597
+ const [nY, nX] = views.layout;
598
+ const isMatrixViews = nX !== 1 || nY !== 1;
599
+ if (isMatrixViews) {
600
+ const mPixels = (_a = views === null || views === void 0 ? void 0 : views.marginPixels) !== null && _a !== void 0 ? _a : 0;
601
+ const w_ = 99.5 / nX; // Using 99.5% of viewport to avoid flickering of deckgl canvas
602
+ const h_ = 99.5 / nY;
603
+ const marginHorPercentage = 100 * 100 * (mPixels / (w_ * deck.width)); //percentage of sub view
604
+ const marginVerPercentage = 100 * 100 * (mPixels / (h_ * deck.height));
605
+ const sub_w = (w_ / 100) * deck.width;
606
+ const sub_h = (h_ / 100) * deck.height;
607
+ w = sub_w * (1 - 2 * (marginHorPercentage / 100)) - marginH;
608
+ h = sub_h * (1 - 2 * (marginVerPercentage / 100)) - marginV;
609
+ }
610
+ }
611
+ const port_aspect = h / w;
612
+ const bounds_aspect = h_bounds / w_bounds;
613
+ const m_pr_pixel = bounds_aspect > port_aspect ? h_bounds / h : w_bounds / w;
614
+ let translate_x = 0;
615
+ if (ml > 0 && mr === 0) {
616
+ // left margin and no right margin
617
+ translate_x = 0.5 * ml * m_pr_pixel;
618
+ }
619
+ else if (ml === 0 && mr > 0) {
620
+ // no left margin but right margin
621
+ translate_x = -0.5 * mr * m_pr_pixel;
622
+ }
623
+ let translate_y = 0;
624
+ if (mb > 0 && mt === 0) {
625
+ translate_y = 0.5 * mb * m_pr_pixel;
626
+ }
627
+ else if (mb === 0 && mt > 0) {
628
+ translate_y = -0.5 * mt * m_pr_pixel;
629
+ }
630
+ const fb = fitBounds({ width: w, height: h, bounds });
631
+ fb_target = [fb.x - translate_x, fb.y - translate_y, z];
632
+ fb_zoom = fb.zoom;
633
+ }
634
+ const target = (_c = (_b = views === null || views === void 0 ? void 0 : views.viewports) === null || _b === void 0 ? void 0 : _b[viewPortIndex]) === null || _c === void 0 ? void 0 : _c.target;
635
+ const zoom = (_e = (_d = views === null || views === void 0 ? void 0 : views.viewports) === null || _d === void 0 ? void 0 : _d[viewPortIndex]) === null || _e === void 0 ? void 0 : _e.zoom;
636
+ const target_ = target !== null && target !== void 0 ? target : fb_target;
637
+ const zoom_ = zoom !== null && zoom !== void 0 ? zoom : fb_zoom;
638
+ const view_state = {
639
+ target: target_,
640
+ zoom: zoom_,
641
+ rotationX: 90,
642
+ rotationOrbit: 0,
643
+ };
644
+ return view_state;
645
+ }
646
+ ///////////////////////////////////////////////////////////////////////////////////////////
647
+ // return viewstate with computed bounds to fit the data in viewport
648
+ function getViewState3D(is3D, bounds, zoom, deck) {
649
+ const xMin = bounds[0];
650
+ const yMin = bounds[1];
651
+ const zMin = bounds[2];
652
+ const xMax = bounds[3];
653
+ const yMax = bounds[4];
654
+ const zMax = bounds[5];
655
+ let width = xMax - xMin;
656
+ let height = yMax - yMin;
657
+ if (deck) {
658
+ width = deck.width;
659
+ height = deck.height;
660
+ }
661
+ const target = [
662
+ xMin + (xMax - xMin) / 2,
663
+ yMin + (yMax - yMin) / 2,
664
+ is3D ? zMin + (zMax - zMin) / 2 : 0,
665
+ ];
666
+ const bounds2D = [xMin, yMin, xMax, yMax];
667
+ const fitted_bound = fitBounds({
668
+ width,
669
+ height,
670
+ bounds: bounds2D,
671
+ });
672
+ const view_state = {
673
+ target,
674
+ zoom: zoom !== null && zoom !== void 0 ? zoom : fitted_bound.zoom * 1.2,
675
+ rotationX: 45,
676
+ rotationOrbit: 0,
677
+ };
678
+ return view_state;
679
+ }
680
+ // construct views object for DeckGL component
681
+ function createViews(views, scaleUpFunction, scaleDownFunction, deck) {
682
+ var _a;
683
+ // Use modified controller to handle key events.
684
+ class ZScaleOrbitController extends OrbitController {
685
+ handleEvent(event) {
686
+ if (event.type === "keydown" && event.key === "ArrowUp") {
687
+ scaleUpFunction();
688
+ return true;
689
+ }
690
+ else if (event.type === "keydown" && event.key === "ArrowDown") {
691
+ scaleDownFunction();
692
+ return true;
693
+ }
694
+ return super.handleEvent(event);
695
+ }
696
+ }
697
+ const deckgl_views = [];
698
+ const widthViewPort = deck === null || deck === void 0 ? void 0 : deck.width;
699
+ const heightViewPort = deck === null || deck === void 0 ? void 0 : deck.height;
700
+ const isDeckDefined = typeof widthViewPort !== "undefined" &&
701
+ typeof heightViewPort !== "undefined";
702
+ const mPixels = (_a = views === null || views === void 0 ? void 0 : views.marginPixels) !== null && _a !== void 0 ? _a : 0;
703
+ // if props for multiple viewport are not proper, return 2d view
704
+ if (!views || !views.viewports || !views.layout || !isDeckDefined) {
705
+ deckgl_views.push(new OrthographicView({
706
+ id: "main",
707
+ controller: { doubleClickZoom: false },
708
+ x: "0%",
709
+ y: "0%",
710
+ width: "100%",
711
+ height: "100%",
712
+ flipY: false,
713
+ far: +99999,
714
+ near: -99999,
715
+ }));
716
+ }
717
+ else {
718
+ let yPos = 0;
719
+ const [nY, nX] = views.layout;
720
+ const w = 99.5 / nX; // Using 99.5% of viewport to avoid flickering of deckgl canvas
721
+ const h = 99.5 / nY;
722
+ const singleView = nX === 1 && nY === 1;
723
+ const marginHorPercentage = singleView // percentage of sub view
724
+ ? 0
725
+ : 100 * 100 * (mPixels / (w * widthViewPort));
726
+ const marginVerPercentage = singleView
727
+ ? 0
728
+ : 100 * 100 * (mPixels / (h * heightViewPort));
729
+ for (let y = 1; y <= nY; y++) {
730
+ let xPos = 0;
731
+ for (let x = 1; x <= nX; x++) {
732
+ if (views.viewports == undefined ||
733
+ deckgl_views.length >= views.viewports.length) {
734
+ return deckgl_views;
735
+ }
736
+ const currentViewport = views.viewports[deckgl_views.length];
737
+ const ViewType = currentViewport.show3D
738
+ ? OrbitView
739
+ : currentViewport.id === "intersection_view"
740
+ ? IntersectionView
741
+ : OrthographicView;
742
+ const far = 9999;
743
+ const near = currentViewport.show3D ? 0.1 : -9999;
744
+ const Controller = currentViewport.show3D
745
+ ? ZScaleOrbitController
746
+ : OrthographicController;
747
+ const controller = {
748
+ type: Controller,
749
+ doubleClickZoom: false,
750
+ };
751
+ deckgl_views.push(new ViewType({
752
+ id: currentViewport.id,
753
+ controller: controller,
754
+ x: xPos + marginHorPercentage / nX + "%",
755
+ y: yPos + marginVerPercentage / nY + "%",
756
+ width: w * (1 - 2 * (marginHorPercentage / 100)) + "%",
757
+ height: h * (1 - 2 * (marginVerPercentage / 100)) + "%",
758
+ flipY: false,
759
+ far,
760
+ near,
761
+ }));
762
+ xPos = xPos + w;
763
+ }
764
+ yPos = yPos + h;
765
+ }
766
+ }
767
+ return deckgl_views;
768
+ }
769
+ // construct views object for DeckGL component
770
+ function getViews(views) {
771
+ const deckgl_views = [];
772
+ // if props for multiple viewport are not proper, return 2d view
773
+ if (!views || !views.viewports || !views.layout) {
774
+ deckgl_views.push({
775
+ id: "main",
776
+ });
777
+ }
778
+ else {
779
+ const [nY, nX] = views.layout;
780
+ for (let y = 1; y <= nY; y++) {
781
+ for (let x = 1; x <= nX; x++) {
782
+ if (views.viewports == undefined ||
783
+ deckgl_views.length >= views.viewports.length)
784
+ return deckgl_views;
785
+ const cur_viewport = views.viewports[deckgl_views.length];
786
+ deckgl_views.push({
787
+ id: cur_viewport.id,
788
+ });
789
+ }
790
+ }
791
+ }
792
+ return deckgl_views;
793
+ }
794
+ function handleMouseEvent(type, infos, event) {
795
+ var _a;
796
+ const ev = {
797
+ type: type,
798
+ infos: infos,
799
+ };
800
+ if (ev.type === "click") {
801
+ if (event.rightButton)
802
+ ev.type = "contextmenu";
803
+ }
804
+ for (const info of infos) {
805
+ if (info.coordinate) {
806
+ ev.x = info.coordinate[0];
807
+ ev.y = info.coordinate[1];
808
+ }
809
+ if (info.layer && info.layer.id === "wells-layer") {
810
+ // info.object is Feature or WellLog;
811
+ {
812
+ // try to use Object info (see DeckGL getToolTip callback)
813
+ const feat = info.object;
814
+ const properties = feat === null || feat === void 0 ? void 0 : feat.properties;
815
+ if (properties) {
816
+ ev.wellname = properties["name"];
817
+ ev.wellcolor = properties["color"];
818
+ }
819
+ }
820
+ if (!ev.wellname)
821
+ if (info.object) {
822
+ ev.wellname = (_a = info.object.header) === null || _a === void 0 ? void 0 : _a["well"]; // object is WellLog
823
+ }
824
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
825
+ if (info.properties) {
826
+ for (const property of info.properties) {
827
+ if (!ev.wellcolor)
828
+ ev.wellcolor = property.color;
829
+ let propname = property.name;
830
+ if (propname) {
831
+ const sep = propname.indexOf(" ");
832
+ if (sep >= 0) {
833
+ if (!ev.wellname) {
834
+ ev.wellname = propname.substring(sep + 1);
835
+ }
836
+ propname = propname.substring(0, sep);
837
+ }
838
+ }
839
+ const names_md = [
840
+ "DEPTH",
841
+ "DEPT",
842
+ "MD" /*Measured Depth*/,
843
+ "TDEP" /*"Tool DEPth"*/,
844
+ "MD_RKB" /*Rotary Relly Bushing*/,
845
+ ]; // aliases for MD
846
+ const names_tvd = [
847
+ "TVD" /*True Vertical Depth*/,
848
+ "TVDSS" /*SubSea*/,
849
+ "DVER" /*"VERtical Depth"*/,
850
+ "TVD_MSL" /*below Mean Sea Level*/,
851
+ ]; // aliases for MD
852
+ if (names_md.find((name) => name == propname))
853
+ ev.md = parseFloat(property.value);
854
+ else if (names_tvd.find((name) => name == propname))
855
+ ev.tvd = parseFloat(property.value);
856
+ if (ev.md !== undefined &&
857
+ ev.tvd !== undefined &&
858
+ ev.wellname !== undefined)
859
+ break;
860
+ }
861
+ }
862
+ break;
863
+ }
864
+ }
865
+ return ev;
866
+ }
867
+ //# sourceMappingURL=Map.js.map