@macrostrat/column-views 1.0.3 → 2.0.0

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 (242) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/esm/_shared.f7eec55a.js +9 -0
  3. package/dist/esm/_shared.f7eec55a.js.map +1 -0
  4. package/dist/esm/age-axis.4a8cf5e6.js +98 -0
  5. package/dist/esm/age-axis.4a8cf5e6.js.map +1 -0
  6. package/dist/esm/age-axis.module.03773a80.css +33 -0
  7. package/dist/esm/age-axis.module.03773a80.css.map +1 -0
  8. package/dist/esm/age-axis.module.3cc91335.js +22 -0
  9. package/dist/esm/age-axis.module.3cc91335.js.map +1 -0
  10. package/dist/esm/age-model-overlay.c7226855.js +57 -0
  11. package/dist/esm/age-model-overlay.c7226855.js.map +1 -0
  12. package/dist/esm/age-model-overlay.module.5d9e78fb.css +14 -0
  13. package/dist/esm/age-model-overlay.module.5d9e78fb.css.map +1 -0
  14. package/dist/esm/age-model-overlay.module.cd985dcb.js +16 -0
  15. package/dist/esm/age-model-overlay.module.cd985dcb.js.map +1 -0
  16. package/dist/esm/base.910b80b4.js +288 -0
  17. package/dist/esm/base.910b80b4.js.map +1 -0
  18. package/dist/esm/boxes.8292cff2.js +258 -0
  19. package/dist/esm/boxes.8292cff2.js.map +1 -0
  20. package/dist/esm/boxes.module.2b5fb18e.css +26 -0
  21. package/dist/esm/boxes.module.2b5fb18e.css.map +1 -0
  22. package/dist/esm/boxes.module.4ebc7796.js +19 -0
  23. package/dist/esm/boxes.module.4ebc7796.js.map +1 -0
  24. package/dist/esm/{carbon-isotopes.3b502a9e.js → carbon-isotopes.10db8285.js} +2 -2
  25. package/dist/esm/{carbon-isotopes.3b502a9e.js.map → carbon-isotopes.10db8285.js.map} +1 -1
  26. package/dist/esm/colors.395c6db5.js +40 -0
  27. package/dist/esm/colors.395c6db5.js.map +1 -0
  28. package/dist/esm/column-correlation.c8dcfe98.js +9 -0
  29. package/dist/esm/column-correlation.c8dcfe98.js.map +1 -0
  30. package/dist/esm/column-nav.5414677c.js +55 -0
  31. package/dist/esm/column-nav.5414677c.js.map +1 -0
  32. package/dist/esm/column-navigation.37cd3245.js +9 -0
  33. package/dist/esm/column-navigation.37cd3245.js.map +1 -0
  34. package/dist/esm/column.01d68dd8.js +127 -0
  35. package/dist/esm/column.01d68dd8.js.map +1 -0
  36. package/dist/esm/{column.db058031.js → column.a25f8ebd.js} +4 -4
  37. package/dist/esm/column.a25f8ebd.js.map +1 -0
  38. package/dist/esm/column.module.1b776e15.js +46 -0
  39. package/dist/esm/column.module.1b776e15.js.map +1 -0
  40. package/dist/esm/column.module.a67a6b4c.css +159 -0
  41. package/dist/esm/column.module.a67a6b4c.css.map +1 -0
  42. package/dist/esm/composite-scale.577bf64a.js +222 -0
  43. package/dist/esm/composite-scale.577bf64a.js.map +1 -0
  44. package/dist/esm/composite.039e4798.js +163 -0
  45. package/dist/esm/composite.039e4798.js.map +1 -0
  46. package/dist/esm/{core.4db8e452.js → core.843310d3.js} +11 -12
  47. package/dist/esm/core.843310d3.js.map +1 -0
  48. package/dist/esm/core.91ede078.js +206 -0
  49. package/dist/esm/core.91ede078.js.map +1 -0
  50. package/dist/esm/correlation-chart.abd8b346.js +9 -0
  51. package/dist/esm/correlation-chart.abd8b346.js.map +1 -0
  52. package/dist/esm/data-provider.1506eb64.js.map +1 -1
  53. package/dist/esm/data-provider.f10c6d0b.js +13 -0
  54. package/dist/esm/data-provider.f10c6d0b.js.map +1 -0
  55. package/dist/esm/fetch.99aec438.js +152 -0
  56. package/dist/esm/fetch.99aec438.js.map +1 -0
  57. package/dist/esm/hash-string.285b37fb.js +39 -0
  58. package/dist/esm/hash-string.285b37fb.js.map +1 -0
  59. package/dist/esm/helpers.2f0a0cb7.js +141 -0
  60. package/dist/esm/helpers.2f0a0cb7.js.map +1 -0
  61. package/dist/esm/index.d.ts +797 -130
  62. package/dist/esm/index.d.ts.map +1 -1
  63. package/dist/esm/index.js +13 -9
  64. package/dist/esm/index.js.map +1 -1
  65. package/dist/esm/inset-map.3c18106d.js +66 -0
  66. package/dist/esm/inset-map.3c18106d.js.map +1 -0
  67. package/dist/esm/keyboard-navigation.6713401b.js +48 -0
  68. package/dist/esm/keyboard-navigation.6713401b.js.map +1 -0
  69. package/dist/esm/keyboard-navigation.a9fc80dd.js +112 -0
  70. package/dist/esm/keyboard-navigation.a9fc80dd.js.map +1 -0
  71. package/dist/esm/layers.033d3fb0.js +170 -0
  72. package/dist/esm/layers.033d3fb0.js.map +1 -0
  73. package/dist/esm/main.2e0375a5.js +221 -0
  74. package/dist/esm/main.2e0375a5.js.map +1 -0
  75. package/dist/esm/main.module.3dd9500b.css +134 -0
  76. package/dist/esm/main.module.3dd9500b.css.map +1 -0
  77. package/dist/esm/main.module.c09154b1.js +70 -0
  78. package/dist/esm/main.module.c09154b1.js.map +1 -0
  79. package/dist/esm/mapbox.cac42eed.js +167 -0
  80. package/dist/esm/mapbox.cac42eed.js.map +1 -0
  81. package/dist/esm/maps.bcdea9c1.js +11 -0
  82. package/dist/esm/maps.bcdea9c1.js.map +1 -0
  83. package/dist/esm/{names.f6a4e9a4.js → names.a8f2b452.js} +5 -5
  84. package/dist/esm/names.a8f2b452.js.map +1 -0
  85. package/dist/esm/panel.598f76a5.js +420 -0
  86. package/dist/esm/panel.598f76a5.js.map +1 -0
  87. package/dist/esm/panel.module.386166cc.js +58 -0
  88. package/dist/esm/panel.module.386166cc.js.map +1 -0
  89. package/dist/esm/panel.module.3d2ea3c6.css +111 -0
  90. package/dist/esm/panel.module.3d2ea3c6.css.map +1 -0
  91. package/dist/esm/popover.a810b7bc.js +66 -0
  92. package/dist/esm/popover.a810b7bc.js.map +1 -0
  93. package/dist/esm/popover.module.c4ba4189.js +22 -0
  94. package/dist/esm/popover.module.c4ba4189.js.map +1 -0
  95. package/dist/esm/{selection-popover.module.0a701258.css → popover.module.c4d6bfb0.css} +11 -8
  96. package/dist/esm/popover.module.c4d6bfb0.css.map +1 -0
  97. package/dist/esm/prepare-data.d4284b4a.js +125 -0
  98. package/dist/esm/prepare-data.d4284b4a.js.map +1 -0
  99. package/dist/esm/prepare-units.6c890a96.js +104 -0
  100. package/dist/esm/prepare-units.6c890a96.js.map +1 -0
  101. package/dist/esm/{resolvers.b5c82b78.js → resolvers.36013b49.js} +13 -2
  102. package/dist/esm/resolvers.36013b49.js.map +1 -0
  103. package/dist/esm/section.a34d379a.js +215 -0
  104. package/dist/esm/section.a34d379a.js.map +1 -0
  105. package/dist/esm/selection.f5b0297e.js +143 -0
  106. package/dist/esm/selection.f5b0297e.js.map +1 -0
  107. package/dist/esm/state.178ef364.js +75 -0
  108. package/dist/esm/state.178ef364.js.map +1 -0
  109. package/dist/esm/state.2952cbca.js +118 -0
  110. package/dist/esm/state.2952cbca.js.map +1 -0
  111. package/dist/esm/store.c4d7a8a4.js +52 -0
  112. package/dist/esm/store.c4d7a8a4.js.map +1 -0
  113. package/dist/esm/styles.7bc776d1.js +95 -0
  114. package/dist/esm/styles.7bc776d1.js.map +1 -0
  115. package/dist/esm/svg.4b9a96c1.js +89 -0
  116. package/dist/esm/svg.4b9a96c1.js.map +1 -0
  117. package/dist/esm/types.0f0b57c9.js +3 -0
  118. package/dist/esm/types.0f0b57c9.js.map +1 -0
  119. package/dist/esm/unit-details.071cefed.js +9 -0
  120. package/dist/esm/unit-details.071cefed.js.map +1 -0
  121. package/dist/esm/units.5a4fc058.js +98 -0
  122. package/dist/esm/units.5a4fc058.js.map +1 -0
  123. package/dist/esm/utils.d7a43a2a.js +55 -0
  124. package/dist/esm/utils.d7a43a2a.js.map +1 -0
  125. package/dist/node/index.js.map +1 -1
  126. package/package.json +24 -7
  127. package/src/age-axis.module.sass +27 -0
  128. package/src/age-axis.ts +82 -19
  129. package/src/age-model-overlay.module.sass +11 -0
  130. package/src/age-model-overlay.ts +73 -0
  131. package/src/carbon-isotopes/column.ts +4 -2
  132. package/src/carbon-isotopes/core.ts +9 -6
  133. package/src/carbon-isotopes/data-provider.ts +3 -3
  134. package/src/column.module.sass +58 -49
  135. package/src/column.ts +149 -135
  136. package/src/correlation-chart/hash-string.ts +57 -0
  137. package/src/correlation-chart/index.ts +2 -0
  138. package/src/correlation-chart/main.module.sass +122 -0
  139. package/src/correlation-chart/main.ts +305 -0
  140. package/src/correlation-chart/prepare-data.ts +217 -0
  141. package/src/correlation-chart/stories/correlation-chart.stories.ts +192 -0
  142. package/src/correlation-chart/stories/stories.module.sass +18 -0
  143. package/src/correlation-chart/unconformity-line.module.sass +8 -0
  144. package/src/correlation-chart/unconformity-line.ts +25 -0
  145. package/src/data-provider/base.ts +388 -0
  146. package/src/data-provider/column-nav.ts +53 -0
  147. package/src/data-provider/fetch.ts +231 -0
  148. package/src/data-provider/index.ts +4 -0
  149. package/src/data-provider/store.ts +72 -0
  150. package/src/index.ts +5 -3
  151. package/src/maps/_shared/index.ts +2 -0
  152. package/src/maps/_shared/inset-map.stories.ts +20 -0
  153. package/src/maps/_shared/inset-map.ts +87 -0
  154. package/src/maps/_shared/styles.ts +57 -0
  155. package/src/maps/column-correlation/column-correlation-map.stories.ts +96 -0
  156. package/src/maps/column-correlation/core.ts +225 -0
  157. package/src/maps/column-correlation/index.ts +2 -0
  158. package/src/maps/column-correlation/state.ts +192 -0
  159. package/src/maps/column-navigation/index.ts +2 -0
  160. package/src/maps/column-navigation/mapbox/column-navigation-map.stories.ts +102 -0
  161. package/src/maps/column-navigation/mapbox/index.ts +219 -0
  162. package/src/maps/column-navigation/mapbox/keyboard-navigation.ts +119 -0
  163. package/src/maps/column-navigation/mapbox/state.ts +109 -0
  164. package/src/maps/column-navigation/svg/column-navigation-svg-map.stories.ts +46 -0
  165. package/src/{map → maps/column-navigation/svg}/index.ts +18 -6
  166. package/src/{map → maps/column-navigation/svg}/layers.ts +28 -109
  167. package/src/maps/column-navigation/utils/keyboard-navigation.ts +58 -0
  168. package/src/maps/index.ts +3 -0
  169. package/src/prepare-units/composite-scale.ts +353 -0
  170. package/src/prepare-units/helpers.ts +226 -0
  171. package/src/prepare-units/index.ts +177 -0
  172. package/src/prepare-units/utils.ts +98 -0
  173. package/src/section.ts +264 -84
  174. package/src/unit-details/index.ts +2 -215
  175. package/src/unit-details/{index.module.sass → panel.module.sass} +39 -8
  176. package/src/unit-details/panel.ts +523 -0
  177. package/src/{selection-popover.module.sass → unit-details/popover.module.sass} +4 -2
  178. package/src/unit-details/popover.ts +82 -0
  179. package/src/units/boxes.module.sass +16 -0
  180. package/src/units/boxes.ts +243 -90
  181. package/src/units/colors.ts +64 -0
  182. package/src/units/composite.ts +157 -152
  183. package/src/units/index.ts +76 -9
  184. package/src/units/names.ts +8 -4
  185. package/src/units/resolvers.ts +11 -0
  186. package/src/units/selection.ts +115 -101
  187. package/src/units/types.ts +5 -16
  188. package/dist/esm/age-axis.64c509ee.js +0 -41
  189. package/dist/esm/age-axis.64c509ee.js.map +0 -1
  190. package/dist/esm/boxes.13968b76.js +0 -164
  191. package/dist/esm/boxes.13968b76.js.map +0 -1
  192. package/dist/esm/boxes.module.28873d08.css +0 -4
  193. package/dist/esm/boxes.module.28873d08.css.map +0 -1
  194. package/dist/esm/boxes.module.605bdcd6.js +0 -13
  195. package/dist/esm/boxes.module.605bdcd6.js.map +0 -1
  196. package/dist/esm/column.8dd26e1a.js +0 -149
  197. package/dist/esm/column.8dd26e1a.js.map +0 -1
  198. package/dist/esm/column.db058031.js.map +0 -1
  199. package/dist/esm/column.module.039d872c.css +0 -151
  200. package/dist/esm/column.module.039d872c.css.map +0 -1
  201. package/dist/esm/column.module.e632868a.js +0 -19
  202. package/dist/esm/column.module.e632868a.js.map +0 -1
  203. package/dist/esm/composite.608a4ca2.js +0 -153
  204. package/dist/esm/composite.608a4ca2.js.map +0 -1
  205. package/dist/esm/core.4db8e452.js.map +0 -1
  206. package/dist/esm/helpers.8a03cfc7.js +0 -94
  207. package/dist/esm/helpers.8a03cfc7.js.map +0 -1
  208. package/dist/esm/index.module.0844afd8.css +0 -65
  209. package/dist/esm/index.module.0844afd8.css.map +0 -1
  210. package/dist/esm/index.module.24fe3a2e.js +0 -37
  211. package/dist/esm/index.module.24fe3a2e.js.map +0 -1
  212. package/dist/esm/layers.ad5fd25d.js +0 -231
  213. package/dist/esm/layers.ad5fd25d.js.map +0 -1
  214. package/dist/esm/map.7aa26f17.js +0 -82
  215. package/dist/esm/map.7aa26f17.js.map +0 -1
  216. package/dist/esm/names.f6a4e9a4.js.map +0 -1
  217. package/dist/esm/providers.cd1e652f.js +0 -25
  218. package/dist/esm/providers.cd1e652f.js.map +0 -1
  219. package/dist/esm/resolvers.b5c82b78.js.map +0 -1
  220. package/dist/esm/section.cc1b1100.js +0 -118
  221. package/dist/esm/section.cc1b1100.js.map +0 -1
  222. package/dist/esm/selection-popover.17d1bd55.js +0 -60
  223. package/dist/esm/selection-popover.17d1bd55.js.map +0 -1
  224. package/dist/esm/selection-popover.module.0a701258.css.map +0 -1
  225. package/dist/esm/selection-popover.module.e22f5183.js +0 -22
  226. package/dist/esm/selection-popover.module.e22f5183.js.map +0 -1
  227. package/dist/esm/selection.bbf26d0e.js +0 -117
  228. package/dist/esm/selection.bbf26d0e.js.map +0 -1
  229. package/dist/esm/store.25eaa168.js +0 -18
  230. package/dist/esm/store.25eaa168.js.map +0 -1
  231. package/dist/esm/types.f016e032.js +0 -18
  232. package/dist/esm/types.f016e032.js.map +0 -1
  233. package/dist/esm/unit-details.56ff8b70.js +0 -209
  234. package/dist/esm/unit-details.56ff8b70.js.map +0 -1
  235. package/dist/esm/units.361088d4.js +0 -42
  236. package/dist/esm/units.361088d4.js.map +0 -1
  237. package/src/helpers.ts +0 -133
  238. package/src/providers.ts +0 -34
  239. package/src/selection-popover.ts +0 -71
  240. package/src/store.ts +0 -12
  241. package/src/units/units.scss +0 -16
  242. /package/src/{map → maps/column-navigation/svg}/animated.ts +0 -0
@@ -0,0 +1,167 @@
1
+ import {buildColumnsStyle as $1dbfddc9637b572c$export$d2995719c3a4ae17} from "./styles.7bc776d1.js";
2
+ import {InsetMap as $5593f90ffec284da$export$1e8149fc0d15fed0} from "./inset-map.3c18106d.js";
3
+ import {ColumnNavigationProvider as $09486427d129f589$export$8da3b11f62ebf019, useColumnNavigationStore as $09486427d129f589$export$642c2b57c47ea41} from "./state.178ef364.js";
4
+ import {buildKeyboardNavigationStyle as $ab1043903d5406ef$export$c613fba0aabeee13, ColumnKeyboardNavigation as $ab1043903d5406ef$export$8c41dd563753848} from "./keyboard-navigation.a9fc80dd.js";
5
+ import {useMapStyleOperator as $lRXWn$useMapStyleOperator} from "@macrostrat/mapbox-react";
6
+ import $lRXWn$macrostrathyper from "@macrostrat/hyper";
7
+ import {useMemo as $lRXWn$useMemo, useRef as $lRXWn$useRef} from "react";
8
+ import {setGeoJSON as $lRXWn$setGeoJSON} from "@macrostrat/mapbox-utils";
9
+ import {geoCentroid as $lRXWn$geoCentroid} from "d3-geo";
10
+
11
+
12
+
13
+
14
+
15
+
16
+
17
+
18
+
19
+ function $9d5d216fa2057b5b$export$821baedf611249f3(props) {
20
+ const { columns: columns, onSelectColumn: onSelectColumn, onHoverColumn: onHoverColumn, selectedColumn: selectedColumn, hoveredColumn: hoveredColumn, projectID: projectID, inProcess: inProcess, ...rest } = props;
21
+ return (0, $lRXWn$macrostrathyper)((0, $09486427d129f589$export$8da3b11f62ebf019), {
22
+ columns: columns,
23
+ onSelectColumn: onSelectColumn,
24
+ onHoverColumn: onHoverColumn,
25
+ selectedColumn: selectedColumn,
26
+ hoveredColumn: hoveredColumn,
27
+ projectID: projectID,
28
+ inProcess: inProcess
29
+ }, (0, $lRXWn$macrostrathyper)($9d5d216fa2057b5b$var$_ColumnNavigationMap, rest));
30
+ }
31
+ function $9d5d216fa2057b5b$var$_ColumnNavigationMap(props) {
32
+ const { padding: padding = 50, children: children, columnColor: columnColor, showTriangulation: showTriangulation, triangulationColor: triangulationColor, keyboardNavigation: keyboardNavigation = true, ...rest } = props;
33
+ const overlayStyles = (0, $lRXWn$useMemo)(()=>{
34
+ let styles = [
35
+ (0, $1dbfddc9637b572c$export$d2995719c3a4ae17)(columnColor)
36
+ ];
37
+ if (showTriangulation) styles.push((0, $ab1043903d5406ef$export$c613fba0aabeee13)(triangulationColor));
38
+ return styles;
39
+ }, [
40
+ columnColor,
41
+ showTriangulation,
42
+ triangulationColor
43
+ ]);
44
+ return (0, $lRXWn$macrostrathyper)((0, $5593f90ffec284da$export$1e8149fc0d15fed0), {
45
+ ...rest,
46
+ boxZoom: false,
47
+ dragRotate: false,
48
+ overlayStyles: overlayStyles
49
+ }, [
50
+ (0, $lRXWn$macrostrathyper)($9d5d216fa2057b5b$var$ColumnsLayer),
51
+ (0, $lRXWn$macrostrathyper).if(keyboardNavigation)((0, $ab1043903d5406ef$export$8c41dd563753848), {
52
+ showTriangulation: showTriangulation
53
+ }),
54
+ children
55
+ ]);
56
+ }
57
+ function $9d5d216fa2057b5b$var$ColumnsLayer({ enabled: enabled = true }) {
58
+ const columns = (0, $09486427d129f589$export$642c2b57c47ea41)((state)=>state.columns);
59
+ const selectedColumn = (0, $09486427d129f589$export$642c2b57c47ea41)((state)=>state.selectedColumn);
60
+ const hoveredColumn = (0, $09486427d129f589$export$642c2b57c47ea41)((state)=>state.hoveredColumn);
61
+ const selectColumn = (0, $09486427d129f589$export$642c2b57c47ea41)((state)=>state.selectColumn);
62
+ const setHoveredColumn = (0, $09486427d129f589$export$642c2b57c47ea41)((state)=>state.setHoveredColumn);
63
+ (0, $lRXWn$useMapStyleOperator)((map)=>{
64
+ if (columns == null) return;
65
+ const data = {
66
+ type: "FeatureCollection",
67
+ features: columns
68
+ };
69
+ (0, $lRXWn$setGeoJSON)(map, "columns", data);
70
+ const mouseMove = (event)=>{
71
+ if (event.features.length == 0) return;
72
+ const hoveredFeature = event.features[0];
73
+ setHoveredColumn(hoveredFeature.id);
74
+ map.getCanvas().style.cursor = "pointer";
75
+ };
76
+ const mouseLeave = ()=>{
77
+ setHoveredColumn(null);
78
+ map.getCanvas().style.cursor = "";
79
+ };
80
+ const clickHandler = (event)=>{
81
+ if (event.features.length == 0) return;
82
+ const selectedColumn = event.features[0];
83
+ const id = selectedColumn.id;
84
+ selectColumn(id);
85
+ };
86
+ // Setup hover styles on map
87
+ const layers = [
88
+ "columns-points",
89
+ "columns-fill"
90
+ ];
91
+ map.on("mousemove", layers, mouseMove);
92
+ map.on("mouseleave", layers, mouseLeave);
93
+ map.on("click", layers, clickHandler);
94
+ return ()=>{
95
+ map.off("mouseenter", layers, mouseMove);
96
+ map.off("mouseleave", layers, mouseLeave);
97
+ map.off("click", layers, clickHandler);
98
+ };
99
+ }, [
100
+ columns,
101
+ enabled
102
+ ]);
103
+ const hoveredColumnRef = (0, $lRXWn$useRef)(null);
104
+ (0, $lRXWn$useMapStyleOperator)((map)=>{
105
+ const prevHoveredColumn = hoveredColumnRef.current;
106
+ if (hoveredColumn == prevHoveredColumn) return;
107
+ if (prevHoveredColumn != null) // Deselect previous column
108
+ map.setFeatureState({
109
+ source: "columns",
110
+ id: prevHoveredColumn
111
+ }, {
112
+ hover: false
113
+ });
114
+ hoveredColumnRef.current = hoveredColumn;
115
+ // Select the current column
116
+ map.setFeatureState({
117
+ source: "columns",
118
+ id: hoveredColumn
119
+ }, {
120
+ hover: true
121
+ });
122
+ }, [
123
+ hoveredColumn,
124
+ columns
125
+ ]);
126
+ /** Set feature state for selected columns */ const selectedColumnRef = (0, $lRXWn$useRef)(null);
127
+ const initialRenderRef = (0, $lRXWn$useRef)(true);
128
+ (0, $lRXWn$useMapStyleOperator)((map)=>{
129
+ if (columns == null) return;
130
+ const prevSelectedColumn = selectedColumnRef.current;
131
+ if (selectedColumn == prevSelectedColumn) return;
132
+ if (prevSelectedColumn != null) // Deselect previous column
133
+ map.setFeatureState({
134
+ source: "columns",
135
+ id: prevSelectedColumn
136
+ }, {
137
+ selected: false
138
+ });
139
+ selectedColumnRef.current = selectedColumn;
140
+ // Select the current column
141
+ map.setFeatureState({
142
+ source: "columns",
143
+ id: selectedColumn
144
+ }, {
145
+ selected: true
146
+ });
147
+ // Center the selected column
148
+ const columnGeometry = columns.find((d)=>d.id == selectedColumn)?.geometry;
149
+ if (columnGeometry == null) return;
150
+ const center = (0, $lRXWn$geoCentroid)(columnGeometry);
151
+ const isInitialRender = initialRenderRef.current;
152
+ map.easeTo({
153
+ center: center
154
+ }, {
155
+ duration: isInitialRender ? 0 : 500
156
+ });
157
+ if (isInitialRender) initialRenderRef.current = false;
158
+ }, [
159
+ selectedColumn,
160
+ columns
161
+ ]);
162
+ return null;
163
+ }
164
+
165
+
166
+ export {$9d5d216fa2057b5b$export$821baedf611249f3 as ColumnNavigationMap};
167
+ //# sourceMappingURL=mapbox.cac42eed.js.map
@@ -0,0 +1 @@
1
+ {"mappings":"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","sources":["packages/column-views/src/maps/column-navigation/mapbox/index.ts"],"sourcesContent":["import { useMapStyleOperator } from \"@macrostrat/mapbox-react\";\nimport h from \"@macrostrat/hyper\";\nimport { FeatureCollection } from \"geojson\";\nimport { ReactNode, useMemo, useRef } from \"react\";\nimport { buildColumnsStyle, InsetMapProps } from \"../../_shared\";\nimport { setGeoJSON } from \"@macrostrat/mapbox-utils\";\n\nimport {\n ColumnNavigationProvider,\n NavigationProviderProps,\n useColumnNavigationStore,\n} from \"./state\";\nimport { InsetMap } from \"../../_shared\";\nimport { geoCentroid } from \"d3-geo\";\nimport {\n ColumnKeyboardNavigation,\n buildKeyboardNavigationStyle,\n} from \"./keyboard-navigation\";\n\nexport interface ColumnNavigationMapProps extends InsetMapProps {\n padding?: number;\n children?: ReactNode;\n accessToken?: string;\n selectedColumn?: number;\n hoveredColumn?: number;\n onSelectColumn?: (colID: number | null) => void;\n onHoverColumn?: (colID: number | null) => void;\n showTriangulation?: boolean;\n columnColor?: string;\n triangulationColor?: string;\n keyboardNavigation?: boolean;\n}\n\nexport function ColumnNavigationMap(\n props: ColumnNavigationMapProps & NavigationProviderProps\n) {\n const {\n columns,\n onSelectColumn,\n onHoverColumn,\n selectedColumn,\n hoveredColumn,\n projectID,\n inProcess,\n ...rest\n } = props;\n\n return h(\n ColumnNavigationProvider,\n {\n columns,\n onSelectColumn,\n onHoverColumn,\n selectedColumn,\n hoveredColumn,\n projectID,\n inProcess,\n },\n h(_ColumnNavigationMap, rest)\n );\n}\n\nfunction _ColumnNavigationMap(props: ColumnNavigationMapProps) {\n const {\n padding = 50,\n children,\n columnColor,\n showTriangulation,\n triangulationColor,\n keyboardNavigation = true,\n ...rest\n } = props;\n\n const overlayStyles = useMemo(() => {\n let styles: any[] = [buildColumnsStyle(columnColor)];\n if (showTriangulation) {\n styles.push(buildKeyboardNavigationStyle(triangulationColor));\n }\n return styles;\n }, [columnColor, showTriangulation, triangulationColor]);\n\n return h(\n InsetMap,\n {\n ...rest,\n boxZoom: false,\n dragRotate: false,\n overlayStyles,\n },\n [\n h(ColumnsLayer),\n h.if(keyboardNavigation)(ColumnKeyboardNavigation, { showTriangulation }),\n children,\n ]\n );\n}\n\nfunction ColumnsLayer({ enabled = true }) {\n const columns = useColumnNavigationStore((state) => state.columns);\n const selectedColumn = useColumnNavigationStore(\n (state) => state.selectedColumn\n );\n const hoveredColumn = useColumnNavigationStore(\n (state) => state.hoveredColumn\n );\n const selectColumn = useColumnNavigationStore((state) => state.selectColumn);\n const setHoveredColumn = useColumnNavigationStore(\n (state) => state.setHoveredColumn\n );\n\n useMapStyleOperator(\n (map) => {\n if (columns == null) {\n return;\n }\n const data: FeatureCollection = {\n type: \"FeatureCollection\",\n features: columns,\n };\n\n setGeoJSON(map, \"columns\", data);\n\n const mouseMove = (event) => {\n if (event.features.length == 0) return;\n const hoveredFeature = event.features[0];\n setHoveredColumn(hoveredFeature.id);\n map.getCanvas().style.cursor = \"pointer\";\n };\n const mouseLeave = () => {\n setHoveredColumn(null);\n map.getCanvas().style.cursor = \"\";\n };\n\n const clickHandler = (event) => {\n if (event.features.length == 0) return;\n const selectedColumn = event.features[0];\n const id = selectedColumn.id;\n selectColumn(id);\n };\n\n // Setup hover styles on map\n const layers = [\"columns-points\", \"columns-fill\"];\n map.on(\"mousemove\", layers, mouseMove);\n map.on(\"mouseleave\", layers, mouseLeave);\n map.on(\"click\", layers, clickHandler);\n\n return () => {\n map.off(\"mouseenter\", layers, mouseMove);\n map.off(\"mouseleave\", layers, mouseLeave);\n map.off(\"click\", layers, clickHandler);\n };\n },\n [columns, enabled]\n );\n\n const hoveredColumnRef = useRef(null);\n useMapStyleOperator(\n (map) => {\n const prevHoveredColumn = hoveredColumnRef.current;\n if (hoveredColumn == prevHoveredColumn) return;\n if (prevHoveredColumn != null) {\n // Deselect previous column\n map.setFeatureState(\n { source: \"columns\", id: prevHoveredColumn },\n { hover: false }\n );\n }\n hoveredColumnRef.current = hoveredColumn;\n // Select the current column\n map.setFeatureState(\n { source: \"columns\", id: hoveredColumn },\n { hover: true }\n );\n },\n [hoveredColumn, columns]\n );\n\n /** Set feature state for selected columns */\n const selectedColumnRef = useRef(null);\n const initialRenderRef = useRef(true);\n useMapStyleOperator(\n (map) => {\n if (columns == null) return;\n const prevSelectedColumn = selectedColumnRef.current;\n if (selectedColumn == prevSelectedColumn) return;\n if (prevSelectedColumn != null) {\n // Deselect previous column\n map.setFeatureState(\n { source: \"columns\", id: prevSelectedColumn },\n { selected: false }\n );\n }\n\n selectedColumnRef.current = selectedColumn;\n\n // Select the current column\n map.setFeatureState(\n { source: \"columns\", id: selectedColumn },\n { selected: true }\n );\n\n // Center the selected column\n const columnGeometry = columns.find(\n (d) => d.id == selectedColumn\n )?.geometry;\n if (columnGeometry == null) return;\n const center = geoCentroid(columnGeometry);\n\n const isInitialRender = initialRenderRef.current;\n map.easeTo({ center }, { duration: isInitialRender ? 0 : 500 });\n if (isInitialRender) {\n initialRenderRef.current = false;\n }\n },\n [selectedColumn, columns]\n );\n\n return null;\n}\n"],"names":[],"version":3,"file":"mapbox.cac42eed.js.map"}
@@ -0,0 +1,11 @@
1
+ import {ColumnNavigationMap as $9d5d216fa2057b5b$export$821baedf611249f3, ResizableMapFrame as $e6046e00d2c8a163$export$c4313db718750a5a, ColumnNavigationSVGMap as $e6046e00d2c8a163$export$9595c40c7a4c4f7b, MeasurementsLayer as $93f116a6493b17c3$export$2254347cd20e6080, ColumnFeatures as $93f116a6493b17c3$export$f177ff57c101017a, ColumnKeyboardNavigation as $93f116a6493b17c3$export$8c41dd563753848, Columns as $93f116a6493b17c3$export$f02cc02ad0e0bba3, ColumnCenters as $93f116a6493b17c3$export$4d8f6e6df85d9012, CurrentColumn as $93f116a6493b17c3$export$b9d912252344e099} from "./column-navigation.37cd3245.js";
2
+ import {ColumnCorrelationMap as $dcd183b733f66144$export$8e7d97509e84cc49, ColumnCorrelationProvider as $74e211dc185c20b4$export$72ffe141ebf87ef1, useCorrelationMapStore as $74e211dc185c20b4$export$21398703d3a9bb4d} from "./column-correlation.c8dcfe98.js";
3
+ import {InsetMap as $5593f90ffec284da$export$1e8149fc0d15fed0, buildColumnsStyle as $1dbfddc9637b572c$export$d2995719c3a4ae17} from "./_shared.f7eec55a.js";
4
+
5
+
6
+
7
+
8
+
9
+
10
+ export {$9d5d216fa2057b5b$export$821baedf611249f3 as ColumnNavigationMap, $e6046e00d2c8a163$export$c4313db718750a5a as ResizableMapFrame, $e6046e00d2c8a163$export$9595c40c7a4c4f7b as ColumnNavigationSVGMap, $93f116a6493b17c3$export$2254347cd20e6080 as MeasurementsLayer, $93f116a6493b17c3$export$f177ff57c101017a as ColumnFeatures, $93f116a6493b17c3$export$8c41dd563753848 as ColumnKeyboardNavigation, $93f116a6493b17c3$export$f02cc02ad0e0bba3 as Columns, $93f116a6493b17c3$export$4d8f6e6df85d9012 as ColumnCenters, $93f116a6493b17c3$export$b9d912252344e099 as CurrentColumn, $dcd183b733f66144$export$8e7d97509e84cc49 as ColumnCorrelationMap, $74e211dc185c20b4$export$72ffe141ebf87ef1 as ColumnCorrelationProvider, $74e211dc185c20b4$export$21398703d3a9bb4d as useCorrelationMapStore, $5593f90ffec284da$export$1e8149fc0d15fed0 as InsetMap, $1dbfddc9637b572c$export$d2995719c3a4ae17 as buildColumnsStyle};
11
+ //# sourceMappingURL=maps.bcdea9c1.js.map
@@ -0,0 +1 @@
1
+ {"mappings":"","sources":["packages/column-views/src/maps/index.ts"],"sourcesContent":["export * from \"./column-navigation\";\nexport * from \"./column-correlation\";\nexport * from \"./_shared\";\n"],"names":[],"version":3,"file":"maps.bcdea9c1.js.map"}
@@ -1,4 +1,4 @@
1
- import {transformAxisType as $faf1eba02aecac6a$export$ab2a19f8a72df19b} from "./types.f016e032.js";
1
+ import {getUnitHeightRange as $b6657fba8924a702$export$70e712e2ac0237a} from "./utils.d7a43a2a.js";
2
2
  import $5ZBll$macrostrathyper from "@macrostrat/hyper";
3
3
  import $5ZBll$react, {useContext as $5ZBll$useContext, useCallback as $5ZBll$useCallback} from "react";
4
4
  import {ColumnContext as $5ZBll$ColumnContext, NotesColumn as $5ZBll$NotesColumn} from "@macrostrat/column-components";
@@ -9,10 +9,10 @@ import {ColumnContext as $5ZBll$ColumnContext, NotesColumn as $5ZBll$NotesColumn
9
9
 
10
10
  function $bc17276da4abb183$export$2f2e65a797f8fc1e(div, opts) {
11
11
  const { axisType: axisType } = opts;
12
- const key = (0, $faf1eba02aecac6a$export$ab2a19f8a72df19b)(axisType);
12
+ const [height, top_height] = (0, $b6657fba8924a702$export$70e712e2ac0237a)(div, axisType);
13
13
  return {
14
- height: div[`b_${key}`],
15
- top_height: div[`t_${key}`],
14
+ height: height,
15
+ top_height: top_height,
16
16
  data: div,
17
17
  id: div.unit_id
18
18
  };
@@ -62,4 +62,4 @@ function $bc17276da4abb183$export$594d19cdd88f8c16(props) {
62
62
 
63
63
 
64
64
  export {$bc17276da4abb183$export$2f2e65a797f8fc1e as noteForDivision, $bc17276da4abb183$export$c9757aeb43a67df0 as defaultNameFunction, $bc17276da4abb183$export$6316e673796ccb55 as UnitDataColumn, $bc17276da4abb183$export$594d19cdd88f8c16 as UnitNamesColumn};
65
- //# sourceMappingURL=names.f6a4e9a4.js.map
65
+ //# sourceMappingURL=names.a8f2b452.js.map
@@ -0,0 +1 @@
1
+ {"mappings":";;;;;;;;;AA+BA,SAAS,0CACP,GAAU,EACV,IAAkC;IAElC,MAAM,YAAE,QAAQ,EAAE,GAAG;IAErB,MAAM,CAAC,QAAQ,WAAW,GAAG,CAAA,GAAA,wCAAiB,EAAE,KAAK;IAErD,OAAO;gBACL;oBACA;QACA,MAAM;QACN,IAAI,IAAI,OAAO;IACjB;AACF;AAEA,MAAM,4CAAsB,CAAC;IAC3B,OAAO,IAAI,SAAS,CACjB,OAAO,CAAC,OAAO,UACf,OAAO,CAAC,MAAM,aACd,OAAO,CAAC,MAAM;AACnB;AAEA,SAAS,sCAAgB,KAAoB;IAC3C,MAAM,MAAM,CAAA,GAAA,iBAAS,EAAE,CAAA,GAAA,oBAAY;IACnC,MAAM,QACJ,IAAI,iBACJ,aAAa,oBACb,mBAAmB,CAAC,MAA8B,IAAc,qBAChE,gBAAgB,cAChB,YAAY,KAAK,WACjB,GAAG,MACJ,GAAG;IAEJ,MAAM,SAAE,KAAK,EAAE,GAAG;IAElB,MAAM,sBAAsB,CAAA,GAAA,kBAAU,EACpC,CAAC;QACC,IAAI,iBAAiB,GAAG,OAAO;QAC/B,MAAM,KAAK,KAAK,GAAG,CAAC,MAAM,EAAE,UAAU,IAAI,MAAM,EAAE,MAAM;QACxD,OAAO,KAAK;IACd,GACA;QAAC;QAAO;KAAc;IAGxB,IAAI,aAAa,MAAM,OAAO;IAC9B,MAAM,QAAoB,UACvB,MAAM,CAAC,kBACP,GAAG,CAAC,CAAC,IAAa,0CAAgB,GAAG;YAAE,UAAU,IAAI,QAAQ;QAAC,IAC9D,MAAM,CAAC;IAEV,OAAO,CAAA,GAAA,sBAAA,EAAE,CAAA,GAAA,kBAAU,GAAG;QACpB,WAAW,CAAC,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;QACpC,UAAU;uBACV;eACA;QACA,cAAc;YACZ,aAAa;QACf;QACA,GAAG,IAAI;IACT;AACF;AAEA,MAAM,4CAAiB,CAAA,GAAA,YAAI,EAAE,IAAI,CAAC;AAQ3B,SAAS,0CAAgB,KAAqB;IACnD,MAAM,mBACJ,kBAAkB,0DAClB,aAAa,EACb,GAAG,MACJ,GAAG;IAEJ,MAAM,gBAAgB,CAAC;QACrB,MAAM,QAAE,IAAI,EAAE,GAAG;QACjB,OAAO,CAAA,GAAA,sBAAA,EAAE,oBAAoB,gBAAgB,KAAK,IAAI;IACxD;IAEA,OAAO,CAAA,GAAA,sBAAA,EAAE,2CAAgB;QACvB,eAAe,iBAAiB;QAChC,GAAG,IAAI;IACT;AACF","sources":["packages/column-views/src/units/names.ts"],"sourcesContent":["import h from \"@macrostrat/hyper\";\nimport { useContext, useCallback } from \"react\";\nimport {\n ColumnContext,\n ColumnAxisType,\n NotesColumn,\n NotesColumnProps,\n} from \"@macrostrat/column-components\";\nimport type { ColumnDivision } from \"@macrostrat/column-components\";\nimport { IUnit } from \"./types\";\nimport React from \"react\";\nimport { getUnitHeightRange } from \"../prepare-units/utils\";\nimport { CompositeColumnScale } from \"./composite\";\n\ninterface UnitDataProps extends NotesColumnProps {\n left?: number;\n transform?: string;\n noteComponent?: React.ComponentType<any>;\n shouldRenderNote?(div: ColumnDivision | IUnit, index: number): boolean;\n divisions?: IUnit[];\n minimumHeight?: number;\n scale?: CompositeColumnScale;\n}\n\ntype UnitNote = {\n height: number;\n top_height: number;\n data: IUnit;\n id: number;\n};\n\nfunction noteForDivision(\n div: IUnit,\n opts: { axisType: ColumnAxisType }\n): UnitNote {\n const { axisType } = opts;\n\n const [height, top_height] = getUnitHeightRange(div, axisType);\n\n return {\n height,\n top_height,\n data: div,\n id: div.unit_id,\n };\n}\n\nconst defaultNameFunction = (div) => {\n return div.unit_name\n .replace(\"Mbr\", \"Member\")\n .replace(\"Fm\", \"Formation\")\n .replace(\"Gp\", \"Group\");\n};\n\nfunction UnitDataColumn_(props: UnitDataProps) {\n const ctx = useContext(ColumnContext);\n const {\n left,\n noteComponent,\n shouldRenderNote = (note: ColumnDivision | IUnit, i: number) => true,\n minimumHeight = 0,\n divisions = ctx?.divisions,\n ...rest\n } = props;\n\n const { scale } = ctx;\n\n const minimumHeightFilter = useCallback(\n (d) => {\n if (minimumHeight == 0) return true;\n const dy = Math.abs(scale(d.top_height) - scale(d.height));\n return dy > minimumHeight;\n },\n [scale, minimumHeight]\n );\n\n if (divisions == null) return null;\n const notes: UnitNote[] = divisions\n .filter(shouldRenderNote)\n .map((d: IUnit) => noteForDivision(d, { axisType: ctx.axisType }))\n .filter(minimumHeightFilter);\n\n return h(NotesColumn, {\n transform: `translate(${left || 0})`,\n editable: false,\n noteComponent,\n notes,\n forceOptions: {\n nodeSpacing: 1,\n },\n ...rest,\n });\n}\n\nconst UnitDataColumn = React.memo(UnitDataColumn_);\n\ninterface UnitNamesProps extends UnitDataProps {\n nameForDivision?(obj: IUnit): string;\n paddingLeft?: number;\n width: number;\n}\n\nexport function UnitNamesColumn(props: UnitNamesProps) {\n const {\n nameForDivision = defaultNameFunction,\n noteComponent,\n ...rest\n } = props;\n\n const NoteComponent = (props) => {\n const { note } = props;\n return h(\"p.col-note-label\", nameForDivision(note.data));\n };\n\n return h(UnitDataColumn, {\n noteComponent: noteComponent ?? NoteComponent,\n ...rest,\n });\n}\n\nexport type { UnitNamesProps };\nexport { defaultNameFunction, noteForDivision, UnitDataColumn };\n"],"names":[],"version":3,"file":"names.a8f2b452.js.map"}
@@ -0,0 +1,420 @@
1
+ import "./panel.module.3d2ea3c6.css";
2
+ import $01tAX$panelmodule386166ccjs from "./panel.module.386166cc.js";
3
+ import {defaultNameFunction as $bc17276da4abb183$export$c9757aeb43a67df0} from "./names.a8f2b452.js";
4
+ import {useMacrostratData as $774a5efa27d1c77b$export$b9c9fc603d74a555, useMacrostratDefs as $774a5efa27d1c77b$export$89dd4e5ae4a82373} from "./base.910b80b4.js";
5
+ import $01tAX$macrostrathyper from "@macrostrat/hyper";
6
+ import {JSONView as $01tAX$JSONView} from "@macrostrat/ui-components";
7
+ import {Button as $01tAX$Button, ButtonGroup as $01tAX$ButtonGroup} from "@blueprintjs/core";
8
+ import {useState as $01tAX$useState, useMemo as $01tAX$useMemo} from "react";
9
+ import {LithologyTagFeature as $01tAX$LithologyTagFeature, DataField as $01tAX$DataField, Parenthetical as $01tAX$Parenthetical, Value as $01tAX$Value, LithologyList as $01tAX$LithologyList, EnvironmentsList as $01tAX$EnvironmentsList, ItemList as $01tAX$ItemList, IntervalTag as $01tAX$IntervalTag} from "@macrostrat/data-components";
10
+ import $01tAX$classnames from "classnames";
11
+
12
+
13
+ function $parcel$interopDefault(a) {
14
+ return a && a.__esModule ? a.default : a;
15
+ }
16
+
17
+
18
+
19
+
20
+
21
+
22
+
23
+
24
+
25
+ const $448b24baeef3b229$var$h = (0, $01tAX$macrostrathyper).styled((0, ($parcel$interopDefault($01tAX$panelmodule386166ccjs))));
26
+ function $448b24baeef3b229$export$fbd245232df17557({ unit: unit, onClose: onClose, className: className, features: features = new Set([
27
+ "adjacent-units",
28
+ "outcrop-type",
29
+ "json-toggle",
30
+ "depth-range"
31
+ ]), lithologyFeatures: lithologyFeatures, actions: actions, selectUnit: selectUnit, columnUnits: columnUnits }) {
32
+ const [showJSON, setShowJSON] = (0, $01tAX$useState)(false);
33
+ let content = null;
34
+ if (showJSON) content = $448b24baeef3b229$var$h((0, $01tAX$JSONView), {
35
+ data: unit,
36
+ showRoot: false
37
+ });
38
+ else content = $448b24baeef3b229$var$h($448b24baeef3b229$var$UnitDetailsContent, {
39
+ unit: unit,
40
+ features: features,
41
+ lithologyFeatures: lithologyFeatures
42
+ });
43
+ let title = (0, $bc17276da4abb183$export$c9757aeb43a67df0)(unit);
44
+ let hiddenActions = null;
45
+ if (features.has("json-toggle")) hiddenActions = $448b24baeef3b229$var$h((0, $01tAX$Button), {
46
+ icon: "code",
47
+ small: true,
48
+ minimal: true,
49
+ key: "json-view-toggle",
50
+ className: (0, $01tAX$classnames)("json-view-toggle", {
51
+ enabled: setShowJSON
52
+ }),
53
+ onClick (evt) {
54
+ setShowJSON(!showJSON);
55
+ evt.stopPropagation();
56
+ }
57
+ });
58
+ return $448b24baeef3b229$var$h("div.unit-details-panel", {
59
+ className: className
60
+ }, [
61
+ $448b24baeef3b229$var$h($448b24baeef3b229$export$fc503c39cc5cff43, {
62
+ onClose: onClose,
63
+ title: title,
64
+ id: unit.unit_id,
65
+ actions: actions,
66
+ hiddenActions: hiddenActions
67
+ }),
68
+ $448b24baeef3b229$var$h("div.unit-details-content-holder", content)
69
+ ]);
70
+ }
71
+ function $448b24baeef3b229$export$fc503c39cc5cff43({ title: title, id: id, onClose: onClose, actions: actions = null, hiddenActions: hiddenActions }) {
72
+ return $448b24baeef3b229$var$h("header.legend-panel-header", [
73
+ $448b24baeef3b229$var$h("div.title-container", [
74
+ $448b24baeef3b229$var$h.if(title != null)("h3", title),
75
+ $448b24baeef3b229$var$h.if(hiddenActions != null)("div.hidden-actions", hiddenActions)
76
+ ]),
77
+ $448b24baeef3b229$var$h("div.spacer"),
78
+ $448b24baeef3b229$var$h.if(id != null)("code", id),
79
+ $448b24baeef3b229$var$h.if(actions != null)((0, $01tAX$ButtonGroup), {
80
+ minimal: true
81
+ }, actions),
82
+ $448b24baeef3b229$var$h.if(onClose != null)((0, $01tAX$Button), {
83
+ icon: "cross",
84
+ minimal: true,
85
+ small: true,
86
+ onClick () {
87
+ onClose();
88
+ }
89
+ })
90
+ ]);
91
+ }
92
+ var $448b24baeef3b229$export$ec297f6f9a6ccad0 = /*#__PURE__*/ function(UnitDetailsFeature) {
93
+ UnitDetailsFeature["AdjacentUnits"] = "adjacent-units";
94
+ UnitDetailsFeature["Color"] = "color";
95
+ UnitDetailsFeature["OutcropType"] = "outcrop-type";
96
+ UnitDetailsFeature["JSONToggle"] = "json-toggle";
97
+ UnitDetailsFeature["DepthRange"] = "depth-range";
98
+ return UnitDetailsFeature;
99
+ }({});
100
+ function $448b24baeef3b229$var$UnitDetailsContent({ unit: unit, selectUnit: selectUnit, columnUnits: columnUnits, lithologyFeatures: lithologyFeatures = new Set([
101
+ (0, $01tAX$LithologyTagFeature).Proportion,
102
+ (0, $01tAX$LithologyTagFeature).Attributes
103
+ ]), features: features = new Set([
104
+ "adjacent-units",
105
+ "outcrop-type"
106
+ ]) }) {
107
+ const lithMap = (0, $774a5efa27d1c77b$export$89dd4e5ae4a82373)("lithologies");
108
+ const envMap = (0, $774a5efa27d1c77b$export$89dd4e5ae4a82373)("environments");
109
+ const environments = $448b24baeef3b229$var$enhanceEnvironments(unit.environ, envMap);
110
+ const lithologies = $448b24baeef3b229$var$enhanceLithologies(unit.lith ?? [], lithMap);
111
+ // Create a lookup table of units if provided
112
+ const columnUnitsMap = (0, $01tAX$useMemo)(()=>{
113
+ const map = new Map();
114
+ for (const colUnit of columnUnits ?? [])map.set(colUnit.unit_id, colUnit);
115
+ return map;
116
+ }, [
117
+ columnUnits
118
+ ]);
119
+ let outcropField = null;
120
+ if (features.has("outcrop-type")) {
121
+ // Determine outcrop type
122
+ let outcrop = unit.outcrop;
123
+ if (outcrop == "both") outcrop = "surface and subsurface";
124
+ outcropField = $448b24baeef3b229$var$h((0, $01tAX$DataField), {
125
+ label: "Outcrop",
126
+ value: outcrop
127
+ });
128
+ }
129
+ let thicknessOrHeightRange = null;
130
+ const [thickness, thicknessUnit] = $448b24baeef3b229$var$getThickness(unit);
131
+ // Proxy for actual heights in t_pos and b_pos
132
+ if (features.has("depth-range") && unit.t_pos != null && unit.b_pos != null && unit.min_thick == unit.max_thick && // We have an actual fixed height
133
+ unit.min_thick != 0 // Not a zero thickness
134
+ ) {
135
+ const label = unit.t_pos < unit.b_pos ? "Depth" : "Height";
136
+ const u1 = "m";
137
+ thicknessOrHeightRange = $448b24baeef3b229$var$h((0, $01tAX$DataField), {
138
+ unit: u1,
139
+ label: label,
140
+ value: $448b24baeef3b229$var$formatRange(unit.b_pos, unit.t_pos),
141
+ children: $448b24baeef3b229$var$h((0, $01tAX$Parenthetical), $448b24baeef3b229$var$h((0, $01tAX$Value), {
142
+ value: thickness,
143
+ unit: thicknessUnit
144
+ }))
145
+ });
146
+ }
147
+ thicknessOrHeightRange ??= $448b24baeef3b229$var$h((0, $01tAX$DataField), {
148
+ label: "Thickness",
149
+ value: thickness,
150
+ unit: thicknessUnit
151
+ });
152
+ /** We are trying to move away from passing the "color" parameter in the API */ let colorSwatch = null;
153
+ if ("color" in unit) {
154
+ const unit1 = unit;
155
+ colorSwatch = $448b24baeef3b229$var$h("div.color-swatch", {
156
+ style: {
157
+ backgroundColor: unit1.color
158
+ }
159
+ });
160
+ }
161
+ return $448b24baeef3b229$var$h("div.unit-details-content", [
162
+ thicknessOrHeightRange,
163
+ $448b24baeef3b229$var$h((0, $01tAX$LithologyList), {
164
+ label: "Lithology",
165
+ lithologies: lithologies,
166
+ features: lithologyFeatures
167
+ }),
168
+ $448b24baeef3b229$var$h($448b24baeef3b229$var$AgeField, {
169
+ unit: unit
170
+ }, [
171
+ $448b24baeef3b229$var$h((0, $01tAX$Parenthetical), $448b24baeef3b229$var$h($448b24baeef3b229$export$3b11bc38611c5941, {
172
+ value: unit.b_age - unit.t_age
173
+ })),
174
+ $448b24baeef3b229$var$h($448b24baeef3b229$var$IntervalProportions, {
175
+ unit: unit
176
+ })
177
+ ]),
178
+ $448b24baeef3b229$var$h((0, $01tAX$EnvironmentsList), {
179
+ environments: environments
180
+ }),
181
+ $448b24baeef3b229$var$h.if(unit.strat_name_id != null)((0, $01tAX$DataField), {
182
+ label: "Stratigraphic name"
183
+ }, $448b24baeef3b229$var$h("span.strat-name-id", unit.strat_name_id)),
184
+ outcropField,
185
+ $448b24baeef3b229$var$h.if(features.has("adjacent-units"))([
186
+ $448b24baeef3b229$var$h((0, $01tAX$DataField), {
187
+ label: "Above"
188
+ }, $448b24baeef3b229$var$h($448b24baeef3b229$var$UnitIDList, {
189
+ units: unit.units_above,
190
+ selectUnit: selectUnit
191
+ })),
192
+ $448b24baeef3b229$var$h((0, $01tAX$DataField), {
193
+ label: "Below"
194
+ }, $448b24baeef3b229$var$h($448b24baeef3b229$var$UnitIDList, {
195
+ units: unit.units_below,
196
+ selectUnit: selectUnit
197
+ }))
198
+ ]),
199
+ colorSwatch,
200
+ $448b24baeef3b229$var$h((0, $01tAX$DataField), {
201
+ label: "Source",
202
+ inline: true
203
+ }, $448b24baeef3b229$var$h($448b24baeef3b229$var$BibInfo, {
204
+ refs: unit.refs
205
+ }))
206
+ ]);
207
+ }
208
+ function $448b24baeef3b229$var$getThickness(unit) {
209
+ let minThickness = unit.min_thick ?? 0;
210
+ let maxThickness = unit.max_thick ?? unit.min_thick ?? 0;
211
+ let _unit = "m";
212
+ if (minThickness == 0 && maxThickness == 0) return [
213
+ "Unknown",
214
+ null
215
+ ];
216
+ if (minThickness < 0.8 && maxThickness < 1.2) {
217
+ // Convert to cm
218
+ minThickness = minThickness * 100;
219
+ maxThickness = maxThickness * 100;
220
+ _unit = "cm";
221
+ } else if (minThickness > 800 && maxThickness > 1200) {
222
+ // Convert to km
223
+ minThickness = minThickness / 1000;
224
+ maxThickness = maxThickness / 1000;
225
+ _unit = "km";
226
+ }
227
+ if (minThickness == maxThickness) return [
228
+ $448b24baeef3b229$var$formatSignificance(minThickness),
229
+ _unit
230
+ ];
231
+ return [
232
+ $448b24baeef3b229$var$formatRange(minThickness, maxThickness),
233
+ _unit
234
+ ];
235
+ }
236
+ function $448b24baeef3b229$var$ThicknessField({ unit: unit, label: label = "Thickness" }) {
237
+ const [value, thicknessUnit] = $448b24baeef3b229$var$getThickness(unit);
238
+ return $448b24baeef3b229$var$h((0, $01tAX$DataField), {
239
+ label: label,
240
+ value: value,
241
+ unit: thicknessUnit
242
+ });
243
+ }
244
+ function $448b24baeef3b229$var$BibInfo({ refs: refs }) {
245
+ const refData = (0, $774a5efa27d1c77b$export$b9c9fc603d74a555)("refs", refs);
246
+ if (refData == null || refData.length === 0) return null;
247
+ if (refData.length == 1) return $448b24baeef3b229$var$h($448b24baeef3b229$var$Citation, {
248
+ data: refData[0],
249
+ tag: "span"
250
+ });
251
+ return $448b24baeef3b229$var$h("ul.refs", refData.map((data, i)=>$448b24baeef3b229$var$h($448b24baeef3b229$var$Citation, {
252
+ data: data,
253
+ tag: "li",
254
+ key: i
255
+ })));
256
+ }
257
+ function $448b24baeef3b229$var$Citation({ data: data, tag: tag = "p" }) {
258
+ return $448b24baeef3b229$var$h(tag, {
259
+ className: "citation"
260
+ }, [
261
+ $448b24baeef3b229$var$h("span.authors", data.author),
262
+ ", ",
263
+ $448b24baeef3b229$var$h("span.year", data.pub_year),
264
+ ", ",
265
+ $448b24baeef3b229$var$h("span.title", data.ref)
266
+ ]);
267
+ }
268
+ function $448b24baeef3b229$var$AgeField({ unit: unit, children: children }) {
269
+ const [b_age, t_age, _unit] = $448b24baeef3b229$var$getAgeRange(unit);
270
+ return $448b24baeef3b229$var$h((0, $01tAX$DataField), {
271
+ label: "Age",
272
+ value: $448b24baeef3b229$var$formatRange(b_age, t_age),
273
+ unit: _unit
274
+ }, children);
275
+ }
276
+ function $448b24baeef3b229$var$getAgeRange(_unit) {
277
+ let b_age = _unit.b_age;
278
+ let t_age = _unit.t_age;
279
+ let unit = "Ma";
280
+ if (b_age < 0.8 && t_age < 1.2) {
281
+ b_age *= 1000;
282
+ t_age *= 1000;
283
+ unit = "ka";
284
+ } else if (b_age > 800 && t_age > 1200) {
285
+ b_age /= 1000;
286
+ t_age /= 1000;
287
+ unit = "Ga";
288
+ }
289
+ return [
290
+ b_age,
291
+ t_age,
292
+ unit
293
+ ];
294
+ }
295
+ function $448b24baeef3b229$export$3b11bc38611c5941({ value: value, maximumFractionDigits: maximumFractionDigits = 2, minimumFractionDigits: minimumFractionDigits = 0 }) {
296
+ let unit = "Myr";
297
+ if (value < 0.8) {
298
+ unit = "kyr";
299
+ value *= 1000;
300
+ if (value < 5) {
301
+ unit = "yr";
302
+ value *= 1000;
303
+ }
304
+ } else if (value > 1000) {
305
+ unit = "Gyr";
306
+ value /= 1000;
307
+ }
308
+ let _value = value.toLocaleString("en-US", {
309
+ maximumFractionDigits: maximumFractionDigits,
310
+ minimumFractionDigits: minimumFractionDigits
311
+ });
312
+ return $448b24baeef3b229$var$h((0, $01tAX$Value), {
313
+ value: _value,
314
+ unit: unit
315
+ });
316
+ }
317
+ function $448b24baeef3b229$var$enhanceEnvironments(environments, envMap) {
318
+ return environments.map((env)=>{
319
+ return {
320
+ ...envMap?.get(env.environ_id) ?? {},
321
+ ...env
322
+ };
323
+ });
324
+ }
325
+ function $448b24baeef3b229$var$enhanceLithologies(lithologies, lithMap) {
326
+ return lithologies.map((lith)=>{
327
+ return {
328
+ ...lithMap?.get(lith.lith_id) ?? {},
329
+ ...lith
330
+ };
331
+ });
332
+ }
333
+ function $448b24baeef3b229$var$UnitIDList({ units: units, selectUnit: selectUnit }) {
334
+ const u1 = units.filter((d)=>d != 0);
335
+ if (u1.length === 0) return $448b24baeef3b229$var$h("span.no-units", "None");
336
+ let tag = "span";
337
+ if (selectUnit != null) tag = "a";
338
+ return $448b24baeef3b229$var$h((0, $01tAX$ItemList), {
339
+ className: "unit-id-list"
340
+ }, u1.map((unit)=>{
341
+ return $448b24baeef3b229$var$h(tag, {
342
+ className: "unit-id",
343
+ onClick () {
344
+ selectUnit?.(unit.id);
345
+ },
346
+ key: unit.id
347
+ }, unit);
348
+ }));
349
+ }
350
+ function $448b24baeef3b229$var$IntervalProportions({ unit: unit }) {
351
+ const i0 = unit.b_int_id;
352
+ const i1 = unit.t_int_id;
353
+ let b_prop = unit.b_prop ?? 0;
354
+ let t_prop = unit.t_prop ?? 1;
355
+ const intervalMap = (0, $774a5efa27d1c77b$export$89dd4e5ae4a82373)("intervals");
356
+ const int0 = intervalMap?.get(i0) ?? {};
357
+ const interval0 = {
358
+ ...int0,
359
+ id: i0,
360
+ name: unit.b_int_name
361
+ };
362
+ let p0 = null;
363
+ const int1 = intervalMap?.get(i1) ?? {};
364
+ const p1 = $448b24baeef3b229$var$h($448b24baeef3b229$var$Proportion, {
365
+ value: t_prop
366
+ });
367
+ if (i0 !== i1 || b_prop !== 0 || t_prop !== 1) // We have a single interval with undefined proportions
368
+ p0 = $448b24baeef3b229$var$h($448b24baeef3b229$var$Proportion, {
369
+ value: b_prop
370
+ });
371
+ if (i0 === i1 && (b_prop !== 0 || t_prop !== 1)) p0 = $448b24baeef3b229$var$h("span.joint-proportion", [
372
+ p0,
373
+ $448b24baeef3b229$var$h("span.sep", "to"),
374
+ p1
375
+ ]);
376
+ return $448b24baeef3b229$var$h("div.interval-proportions", [
377
+ $448b24baeef3b229$var$h((0, $01tAX$IntervalTag), {
378
+ interval: interval0,
379
+ prefix: p0
380
+ }),
381
+ $448b24baeef3b229$var$h.if(i0 != i1)("span.discourage-break", [
382
+ $448b24baeef3b229$var$h("span.sep", "to"),
383
+ $448b24baeef3b229$var$h((0, $01tAX$IntervalTag), {
384
+ interval: {
385
+ ...int1,
386
+ id: i1,
387
+ name: unit.t_int_name
388
+ },
389
+ prefix: p1
390
+ })
391
+ ])
392
+ ]);
393
+ }
394
+ const $448b24baeef3b229$var$formatProportion = (d)=>{
395
+ if (d == null) return null;
396
+ return d.toFixed(1);
397
+ };
398
+ function $448b24baeef3b229$var$Proportion({ value: value }) {
399
+ let content = null;
400
+ if (value == 0) content = "base";
401
+ else if (value == 1) content = "top";
402
+ else content = $448b24baeef3b229$var$formatProportion(value * 100) + "%";
403
+ return $448b24baeef3b229$var$h("span.proportion", content);
404
+ }
405
+ function $448b24baeef3b229$var$formatRange(min, max, precision = null) {
406
+ if (min == null || max == null) return null;
407
+ if (min === max) return min.toFixed(precision);
408
+ return `${$448b24baeef3b229$var$formatSignificance(min, precision)}\u{2013}${$448b24baeef3b229$var$formatSignificance(max, precision)}`;
409
+ }
410
+ function $448b24baeef3b229$var$formatSignificance(value, precision = null) {
411
+ // Format to preserve a reasonable number of significant figures
412
+ // this could be done with an easier algorithm, probably:
413
+ if (precision == null) return value.toLocaleString();
414
+ if (precision >= 0) return value.toFixed(precision);
415
+ if (precision < 0) return (value / Math.pow(10, -precision)).toFixed(0) + "0".repeat(-precision);
416
+ }
417
+
418
+
419
+ export {$448b24baeef3b229$export$fbd245232df17557 as UnitDetailsPanel, $448b24baeef3b229$export$fc503c39cc5cff43 as LegendPanelHeader, $448b24baeef3b229$export$ec297f6f9a6ccad0 as UnitDetailsFeature, $448b24baeef3b229$export$3b11bc38611c5941 as Duration};
420
+ //# sourceMappingURL=panel.598f76a5.js.map